Modern Operating System 4th 中译

总线

图1-6的组织方式多年来一般用于微型计算机,也用于原本的IBM PC。然而随着CPU和内存速度的增长,单总线(有时特指IBM PC总线)处理所有的通讯越来越成为系统的瓶颈。必须采取措施改变这一现状。最终增加了新的总线以处理快速的I/O设备和CPU内存之间的通讯。作为最终进化的结果,一个现代x86架构图看起来像是图1-12的样子。

这个系统有多种总线(例如缓存,内存,PCIe,PCI,USB,SATA和DMI),每个总线都有不同的速率和功能。操作系统必须能够全部识别它们,这样才能配置管理。主总线是PCIe(Peripheral Component Interconnect Express)总线。

PCIe总线由Intel发明,作为老旧的PCI总线(原ISA,Industry Standard Architecture总线的继任者)的下一代产品,能够胜任每秒数十Gb的传输速率,远优于前代PCI总线。并且与PCI总线有很多不同。直到2004年PCIe总线产生之前,大多数总线都是并行总线并且由所有设备共享。共享总线意味着多个设备使用同样的线传送数据,因此当多个设备传输数据时需要仲裁器来决定使用者。与此对比的是,PCIe总线是专用总线,点对点连接。传统PCI总线的并行架构意味着传送每个字都要使用多根数据线。在标准的PCI总线中,数据由32条并行数据线传送。与此不同的是PCIe使用串行传输架构并且一次使用单个连接发送报文,传送所有bit,称之为单个通道,就像网络包。这种方式更为简单,因为不需要等待32个bit同时到位。PCIe也可以使用并行,同时使用多个通道传送。比如同时使用32条通道传送32个报文。随着网卡显卡等次要设备速度的提升,PCIe标准也每3~5年升级一次。如PCIe2.0 16通道可以提供64Gb/s的带宽,升级到PCIe3.0后带宽将会*1翻倍,而未来的PCIe4.0将会再次翻倍。

与此同时,我们依然有许多遗留的PCI标准的老旧设备。如图1-12,这些设备被装载在一个独立的集线器上。考虑到未来,有可能所有的PCI设备都会挂载在另一个集线器,集线器再挂载在主集线器上,形成一个树状总线。

在这种配置中,CPU通过快速的DDR3总线直接同内存通讯,通过PCIe同外部图形卡通讯,其余设备通过DMI(Direct Memory Interface)总线连接的集线器通讯。集线器通过USB(Universal Serial Bus)总线连接USB设备,通过SATA总线连接磁盘和DVD驱动器,PCIe总线连接以太网卡。还有我们提到的老旧的PCI设备,通过传统的PCI总线连接。

另外,每个核心都有独立的缓存和更大的共享缓存。这些缓存通过独立的总线连接。

USB发明的主要目的就是连接众多的低速I/O设备,例如键盘和鼠标。然而,称USB3.0总线达5Gbps的速度“慢”也许和第一代IBM PC只有8Mbps的ISA总线相比不太相称。USB使用4根或8根(取决于版本)连线的小型连接器,同时为USB设备提供电源和接地。USB是一种集中式总线,根设备每隔1ms就查询所有的设备是否有数据传输。USB1.0合计带宽为12Mbps,USB2.0将它提升到了480Mbps,USB3.0进一步提升到了5Gbps。任何USB设备在连接到计算机后可以立刻工作而不需要重新启动。相比于USB出现之前的设备,这一点令用户非常欣慰。

SCSI(Small Computer System Interface)总线是为快速磁盘,扫描仪以及其他需要可观带宽的设备制定的高性能总线。这些设备多数出现在服务器和工作站上。它们最高可以运行在640MB/s。

为合理使用图1-12所示的架构,操作系统必须了解所有连接的外围设备并且配置它们。这个需求促使Intel和Microsoft设计了称为即插即用(plug and play)的PC系统,基于首先由Apple Macintosh提出的观念。在即插即用之前,每个I/O卡都有一个指定的中断等级和固定的I/O寄存器地址。例如键盘是中断1,I/O地址从0x60到0x64,软驱控制器使用中断6,I/O地址为0x3F0~0x3F7,打印机使用中断7,I/O地址为0x378到0x37A,等等。

一切看起来很美好,然而当用户买了一块声卡和一块网卡不凑巧地都使用中断号4时,麻烦就来了。他们会互相冲突并且任何一个都不能正常工作。解决方案是在板卡上安装拨码开关或者跳线,要求用户设置一个互不冲突的中断和I/O地址。对于那些致力于研究复杂PC的青少年来说也许不会设置错误,然而其他人的设置可能就会变成一团糟。

即插即用所做的就是系统自动收集所有I/O设备的信息,之后指定各个设备的中断和I/O地址,然后通知各设备。这个机制和计算机启动有密切关系,所以我们应当了解一下,它并不是无关紧要。


*1:本书翻译时PCIe3.0标准已经推出