前言
在个人计算机的诸多应用领域中,如商务、计算、通信等,不断出现更新的、更高的、或者说苛刻的应用需求,即市场对更高性能计算机的追求是无止境的,其中更高的速度、更大的容量是首要追求的目标。具体到计算机系统的硬件体系结构上,则是要求有更高的数据传输率和更短的响应时间。
计算机系统硬件结构的基础是系统总线,用系统总线将处理器、主存储器和外围设备连接起来,传输数据、控制和状态信息。系统总线包括处理器总线和IO总线。处理器总线因处理器而异,随着处理器的变化和发展而更新。IO总线是通用总线,用于硬件平台中外围设备的互连和外围设备与主存储器的通信。处理器也经过IO总线对外围设备进行访问。IO总线是PC计算机平台的骨架,它的协议直接决定了计算机的硬件架构与配置,它的性能与指标直接影响着计算机IO子系统的数据传输和处理能力。所以,本书中把总线与计算机硬件架构联系在一起进行论述和讨论,使读者更易理解和掌握。
IO总线的发展历程粗略地可划分为三代。第一代IO总线包括ISA、EISA、MC和VESA。ISA总线的数据宽度为16位,数据传输率约为5MBps,1984年随IBM PC/AT结构微机一起推出,故也称为AT总线,当时系统存储器(主存)和系统外围都挂在此总线上,还没有冠以“IO总线”的称谓。EISA总线名为增强的ISA总线,1989年在ISA总线的基础上推出,仍沿袭PC/AT结构,数据总线宽度和地址总线宽度均扩展为32位,数据传输率约为33MBps。MC总线是随IBM PS/2系列微机推出的MCA——微通道结构总线,总线性能与EISA相当。VESA总线1992年由视频电子标准协会推出,数据和地址总线宽度为32位,总线时钟频率达33MHz,数据传输率可达132MBps。VESA总线是PC微机的第一个局部总线,连到处理器子系统的局部总线上,在基于VESA总线的机器中也可以存在ISA或EISA这样的传统总线,它们的位置在VESA之后,是VESA总线再经IO总线控制器转换后得到的,称为IO扩展总线。第一代IO总线有一个共同的特点,其信号的功能和时序与处理器引脚关系密切,几乎是处理器信号的延伸和扩展,有些信号还与主板上的硬件资源有关系。
第二代IO总线包括PCI、AGP和PCIX。PCI总线是一个标准的、与处理器无关的局部外围总线,不受制于系统所使用的处理器的种类,通用性更强。PCI将多级总线结构引入个人计算机,不同总线之间通过相应的桥芯片来转接。PCI总线的数据和地址线宽32位,数据线可扩展为64位,1992年和1993年推出的PCI 1.0和PCI 2.0为33.3MHz,数据传输率为133MBps(64位数据线加倍为266MBps),1995年推出的PCI 2.1总线时钟频率达66.6MHz,数据传输率达266MBps(533MBps)。在基于PCI的计算机中,主存储器设备挂在主桥上,PCI总线专用于外围设备的互连,开始称之为IO总线。AGP名为加速的图形端口,是主桥上独用于挂接显示设备的总线,将PCI总线从图形数据传输中解放出来,使得图形显卡和PCI总线上的设备都能获得充足的传输带宽。当市场上出现了要求更高带宽的IO设备时,如Gbps以太网、光纤通道、Ultra3 SCSI和多端口网络接口控制器(NICs),传统的PCI总线无论从总线时钟频率还是总线使用率都显得低了,于是1999年出现了PCIX总线。PCIX总线在PCI总线的基础上,进一步提高时钟频率,改进数据传输协议使之更加合理。PCIX 1.0和PCIX 2.0(2002年)的总线时钟频率分别为66/133MHz、266/533MHz。
以上第一代和第二代IO总线都是并行总线,有多条地址线、数据线和控制线,挂连多个设备,称为多下挂式总线(MultiDrop),总线带宽由多个设备共享。显然,在并行总线上挂接多个高速设备,比如Gbps以太网、实时性极强的视频、音频流数据处理设备等,必须进一步提高时钟频率。但是,以提高总线频率来提高带宽并不是无限制的,频率越高总线上能够挂连的电气负载的个数越少。实际上,频率为266MHz以上的PCIX总线只能带一个扩展槽。也就是说,对于一种给定的总线结构,存在其频率上限,超过该上限,就必然会提出定义新总线结构的要求。
PCI Express是第三代高性能IO总线,在总线结构上采取了根本性的变革,主要体现在两个方面:一是由并行总线变为串行总线;二是采用点到点的互连。
将原并行总线结构中桥下面挂连设备的一条总线变成了一条链路,一条链路可包含一条或多条通路,每条通路由两对差分信号线组成双单工的串行传输通道,没有专用的数据、地址、控制和时钟线,总线上各种事务组织成信息包来传送。PCI Express 1.0支持每条通路在每个方向上的数据传输率达2.5Gbps,每字节10位编码,这样两个方向的带宽可达0.5GBps,整个链路的总带宽等于0.5GBps乘以所含的通路数。每条链路的通路数可根据具体设备所需的带宽裁剪,有效通路数有7种可选,这样最高传输率可达16GBps,大大高于目前任何一种总线,可满足当前及将来一段时期的高速设备带宽需求。由于总线变为链路,引脚数大大减少(传统PCI总线为127个引脚),每引脚的平均带宽大幅提升,有助于PCI Express成本的降低。
PCI Express突破传统总线的另一个特点是采用点到点的互连方法,每个设备都由独立的链路连接,独享带宽,这是提高传输率的有效解决方案。
PCI Express总线结构将一条链路视为一条总线,从而从地址空间、配置机制及软件上均保持与传统PCI总线的兼容。一个PCI Express设备占一条总线(链路),所以在基于PCI Express的计算机里,桥和总线的数目很多。传统PCI设备亦可在PCI Express平台上运行,通过PCI Express到PCI(或PCIX)的桥,可引出PCI(或PCIX)总线,传统PCI设备挂在这样的总线上便可融入PCI Express结构。
为了反映总线结构的新技术,凭借对传统PCI总线结构的深入了解,在汲取大量最新资料的基础上编写了本书,全书共有17章和4个附录。第1章是对PCI和PCIX总线结构的综述,全面、简要地勾画出PCI及PCIX总线架构,也为后文突显PCI Express优势及讲述与PCI的兼容问题打下基础。第2章是PCI Express架构概览,从整体上对PCI Express架构进行描述,涉及到后面各章节要详述的主要技术问题,使读者建立起一个较完整的PCI Express概念。第3章描述事务层包和事务路由,给出所有类型PCI Express事务包的格式、内容及路由方式。第4章列出各类数据链路层包的格式、内容,并讲述由ACK/NAK两种数据链路层包参与的、保证链路传输正确性的链路传输协议。第5章讲述事务的传输类别、事务传输所经由的虚通道以及事务的仲裁。第6章讲述的流控制协议,是在每一虚通道上实施的、基于信用量的流控制机制,它也是PCI Express提高带宽的措施之一。第7章讲述事务排序的要求与规则,在一定的条件下允许对事务的传送顺序进行修正,以改善系统性能。第8章讲述兼容PCI和PCIX的中断机制。第9章详述PCI Express设备的物理层,包括逻辑物理层和电气物理层。第10章讲述系统复位。第11章描述由物理层硬件自动执行的链路训练和初始化过程,链路训练使链路能自适应链路上设备端口的要求,能自动从链路错误中恢复。第12章讲述电源管理,管理6种设备电源状态和6种链路电源状态,包括基于硬件的链路节电机制及软件触发的链路电源管理。第13章讲述PCI Express设备和插槽对热插拔的支持。第14章是错误检测和处理,描述PCI Express的一套错误检测和报告能力。第15、16、17章均是与PCI Express配置有关的内容,第15章是PCI Express配置机制及系统枚举,讲述PCI Express实施配置的方法;第16章是PCI兼容的配置寄存器;第17章是PCI Express专用的配置寄存器。
本书的第1、2、9~11、14~16章由马鸣锦编写,第3、4、5章由何红旗和马鸣锦编写,第6、7、8章由杜威和马鸣锦编写,第12、13、17章由朱剑冰和马鸣锦编写。全书由马鸣锦教授定稿并撰写了前言。何红旗、王炜、生拥宏、刘丹、陈烨、刘海雷、张琳等老师和同学参与了本书的校对、文字录入、图表制作等工作,另外,在本书编写过程中得到了解放军信息工程大学信息工程学院计算机科学与技术系的大力支持,在此一并表示感谢。
PCI Express总线及体系结构问世不久,还处在完善、充实和实现的过程之中,书中内容难免有错误和不当之处,作者诚恳希望与同行们对有关问题进行讨论和切磋。我们的通信地址是: 郑州市1001信箱715号,邮编450002。
作者
2006年10月