典型的 S 总线系统由主板(包含 CPU 和 S 总线接口逻辑)、主板本身上的大量 S 总线设备以及大量 S 总线扩展插槽组成。另外,还可以通过相应的总线网桥将 S 总线连接到其他类型的总线。
S 总线按地理位置进行寻址。每个 S 总线插槽位于系统中固定的物理地址上。S 总线卡具有不同的地址,具体取决于其插入的插槽。将 S 总线设备移动到新插槽会导致系统将此设备视为新设备。
S 总线使用轮询中断。S 总线设备中断时,系统仅知道若干设备中的哪些设备可能发出该中断。系统中断处理程序必须询问每台设备的驱动程序此设备是否负责中断。
下表显示了 Sun UltraSPARC 2 计算机的物理地址空间布局。UltraSPARC 2 模型上的物理地址包含 41 位。该 41 位的物理地址空间会进一步分为多个通过 PA(40:33) 标识的 33 位地址空间。
表 A–1 Ultra 2 中的设备物理空间
PA(40:33) |
33 位空间 |
使用情况 |
---|---|---|
0x0 |
0x000000000 - 0x07FFFFFFF |
2 GB 主内存 |
0x80 – 0xDF |
Reserved on Ultra 2 |
在 Ultra 2 上保留 |
0xE0 |
Processor 0 |
处理器 0 |
0xE1 |
Processor 1 |
处理器 1 |
0xE2 – 0xFD |
Reserved on Ultra 2 |
在 Ultra 2 上保留 |
0xFE |
0x000000000 - 0x1FFFFFFFF |
从属 UPA (FFB) |
0xFF |
0x000000000 - 0x0FFFFFFFF |
系统 I/O 空间 |
|
0x100000000 - 0x10FFFFFFF |
S 总线插槽 0 |
|
0x110000000 - 0x11FFFFFFF |
S 总线插槽 1 |
|
0x120000000 - 0x12FFFFFFF |
S 总线插槽 2 |
|
0x130000000 - 0x13FFFFFFF |
S 总线插槽 3 |
|
0x1D0000000 - 0x1DFFFFFFF |
S 总线插槽 D |
|
0x1E0000000 - 0x1EFFFFFFF |
S 总线插槽 E |
|
0x1F0000000 - 0x1FFFFFFFF |
S 总线插槽 F |
S 总线具有 32 个地址位,如 SBus Specification(S 总线规范)中所述。下表介绍 Ultra 2 如何使用地址位。
表 A–2 Ultra 2 S 总线地址位
位 |
说明 |
---|---|
0 - 27 |
这些位是 S 总线卡用于寻址该卡的内容的 S 总线地址行。 |
28 - 31 |
供 CPU 用于选择其中一个 S 总线插槽。这些位会生成 SlaveSelect 行。 |
此寻址方案将生成表 A–1 中显示的 Ultra 2 地址。其他实现可能会使用不同数量的地址位。
Ultra 2 具有七个 S 总线插槽,其中四个是物理插槽。插槽 0 到 3 可供 S 总线卡使用。插槽 4-12 为保留插槽。插槽的使用情况如下:
插槽 D、E 以及 F 并非实际物理插槽,而是指板载直接内存访问 (direct memory access, DMA) 控制器、SCSI 控制器、以太网控制器以及音频控制器。为方便起见,会将这些设备类视为插入了插槽 D、E 以及 F。
某些 S 总线插槽是仅从属插槽。需要 DMA 功能的驱动程序应使用 ddi_slaveonly(9F) 来确定其设备是否位于具有 DMA 功能的插槽中。有关此函数的示例,请参见attach() 入口点。
通常,S 总线设备不需要硬件配置文件。但是在某些情况下,S 总线设备的驱动程序需要使用硬件配置文件来增加 S 总线卡所提供的信息。有关更多详细信息,请参见 driver.conf(4) 和 sbus(4) 手册页。