广义上,总线泛指计算机系统中用于连接模块并在模块之间传递数据与控制信号的链路。除了用于传递信号的链路实体之外,用于规范信号如何传递和控制的总线标准也是总线的重要组成部分。
在早期的计算机系统中,每个厂家生产的计算机系统具有各自不同的体系结构和模块组成,其模块不可互相替代。而且在这些计算机系统之中,各模块之间一般通过一些专用的链路所连接,这些链路一般遵循一些私有的专用协议,其互联关系是固定的。直到20世纪70年代,超大规模集成电路(VLSI)技术的发展带来了一系列高性能芯片,从而使得在一块很小的印制电路板上就可以实现很强大的逻辑功能,为微机系统设计的模块化铺平了道路。与此同时,市场的激烈竞争也迫使微机系统设计开始向低成本和高效率的模块化方向发展,由于模块之间必须能够互相替代和任意组合,所以模块之间数据传输与控制就必须符合一些公开的标准。
模块化的设计理念和总线标准给微型计算机带来了一系列的好处,其中首要的一点就是系统的结构由封闭走向了开放。总线标准使得系统中的不同功能模块可以由不同的厂家来提供,这样不同的厂家可以根据其自身实力专注于设计和制造计算机系统中的某一个模块,比如显卡、硬盘等,最终再由一些专业的整机厂商将这些部件组装为完整的微型计算机系统。这种更加细致的专业化分工带来的是成本上的降低、设计周期的缩短和产品竞争力的提高,伴随而来的是在各个层面和领域更加专业化和更加激烈的竞争,进一步推动微型计算机产业的发展。
1.总线标准
由于商业上的原因,总线标准的产生一般都伴随着激烈的竞争。厂商总是希望自己提出的总线标准能够得到业界的支持和国际权威机构的承认,从而成为真正意义上的国际标准。在历史上,总线标准一般有两种不同的来源。一种来源是某个厂家所提出的总线标准,通过市场竞争占据了市场的统治地位,由于其在业界被广泛采用而自然而然地作为一种总线标准被各种标准化组织所接受(如ISA)。另一种是业界厂家在国际标准化组织的框架之内通过协商和妥协共同制定一种都能接受的总线标准(如PCI和PCI Express)。
为了指导和规范来自不同厂家的设备的组装和协同工作,总线标准必须非常的严谨、详细和完备,它们的篇幅通常会长达几百页、几十万字,并伴有大量的图表。一般来讲,一个总线标准必须针对总线的以下几个侧面进行规范说明。
1)机械结构:确定总线中各种模块的机械形状和尺寸,规定总线插头、边沿连接器插座等规格和位置等机械结构特性,从而保证符合总线标准的设备都能够成功地互相连接并组装在一起。
2)电气特性:对总线上各信号的电气特性进行规定,包括规定每根线上信号工作的有效电平、动态转换时间、负载能力以及各电气特性的额定值和最大值,从而保证总线上各设备之间电气信号的一致性和可驱动性。
3)功能描述:确定总线使用何种方式来完成数据交换,包括规定每根信号线上传输的信号的名称与功能以及如何使用这些信号实现数据交换的协议,包括信号的时序关系等。
一般来讲,总线标准会针对总线的一系列关键指标给出其规定,这些规定就确定了总线所能达到的性能。常见的用来描述总线能力的指标如下。
1)总线宽度:总线的宽度指的是总线上一次操作可以传输的数据位数。很明显,总线宽度越大,一次传输的数据位数越多,相应能够传输的数据量也就越大。一般来讲,系统总线的宽度不会超过系统中处理器的外部数据总线的宽度。比较特别的是,如果总线的宽度只有1位,也就是说一次只传输1 bit的数据,该总线就被称作“串行总线”(例如PCI Express和USB)与此相反,一次传输多个比特(一般是8的倍数)的总线则被称作“并行总线”(例如ISA和PCI)。
2)时钟频率:当前微型计算机系统中所使用的总线通常会有一个基本时钟,用来为其他信号提供基准定时控制。总线时钟的频率对于总线的性能具有决定性的影响,时钟频率越高,单位时间内能够传输的数据量也就越大,总线的性能也更好。
3)数据传输周期数:总线标准必然要规定总线上的数据传输方式,而不同的数据传输方式会导致传输数据所需的时钟周期数不同,所以数据传输同期数也是表征总线能力的一个重要指标。有的总线传输一个数据需要几个周期,而更快的总线传输一个数据所需要的周期数可以是1个周期甚至不到1个周期。
4)最大传输率:即总线在理论上能够达到的最高传输速率,实际上可以通过上面的三个指标计算得到:总线的最大传输率(B/s)=总线宽度(B)×总线频率(Hz)×每周期传输数据量。
除此之外,总线的仲裁方式、传输定时方法、容错能力等也是总线的重要指标,对总线实际性能具有很大的影响。
2.总线的构成与分类
为了实现在不同模块之间传输数据的目的,总线一般包括三种不同用途的信号连接,分别称为地址总线、数据总线和控制总线,它们都是总线的有机组成部分。数据总线提供模块间传送数据的路径,多为2n根线(如8、16、32或64)。数据总线的宽度是决定系统总体性能的关键因素。地址总线用于指出数据的来源和去向。如果CPU要读/写存储器中的某个数据,必须将该数据的存储器地址送到地址总线上才能进行读/写,显然地址总线的宽度决定了可寻址地址范围的最大值。控制总线用来控制数据、地址总线的操作及使用,还用来在系统模块之间发送命令和定时信息。其中命令信息指定了总线主设备(如CPU)要执行的操作,例如读或写。定时信息指定了放在数据和地址总线上的信号何时有效。典型的控制总线包含有时钟(CLK)、地址锁存(ALE)、准备就绪(RDY)等信息。除此之外,用于为各总线模块供电的电源和地线也是总线的组成部分。
●系统总线(System Bus,见图7-1)
(www.xing528.com)
图7-1 微型计算机中的系统总线
早期的总线实质上就是微处理器内部总线在主板上的延伸,负责为微处理器提供与外界交换信息的通路。由于微处理器芯片本身的驱动能力比较有限,一般只能驱动一个标准TTL电路,所以将大量的模块直接连接到微处理器芯片总线上是不可行的。通过在微处理器芯片总线上加装总线驱动器,提高微处理器芯片总线的负载能力,从而形成系统总线,使得各种模块,包括存储器和I/O设备可以连接在系统总线之上。
随着微型计算机系统的不断发展,总线不断分化,系统总线这个概念逐渐被用于泛指微型计算机主板上用于连接不同种类模块并在其间传输数据的所有总线。从微处理器直接引出的总线不再被称作系统总线,取而代之的是前端总线(Front Side Bus,FSB)的概念。在这里,前端总线指的是微型计算机中直接连接到微处理器的总线,其运行频率一般与微处理器的外频相同,数据传输速率也非常高。由于Intel和AMD的南北桥结构中的“前端总线”的名气实在太大,“前端总线”这个词汇也变成特指在南北桥结构中连接微处理器和北桥之间的高速总线。随着当前南北桥架构被诸如QPI和HyperTransport这样的新型快速点对点互联结构所替代,前端总线这个词也逐渐被用来指代微处理器与I/O主芯片之间(比如Intel QPI体系中的IOH芯片)的连接总线。
目前,我们经常谈论到的“系统总线”一般用来泛指在主板上用来连接微机不同类型组件的总线,用以和连接特定种类设备的设备总线以及连接微处理器的前端总线相区分。ISA、PCI、PCI Express等都被视为系统总线。
●扩充总线(Expansion Bus,见图7-2)
图7-2 微型计算机中的扩充总线
随着微型计算机技术的发展,系统总线上连接的设备越来越多。而在总线上连接的设备达到一定数量时,总线的控制频繁地从一个设备到另一个设备进行转移,伴随着越来越严重的总线争用现象,总线的平均传输延迟明显加大,从而降低了系统效率。为了解决这种总线上连接过多设备带来的种种问题,扩充总线应运而生。
扩充总线是系统总线的扩展,用来与微型计算机中更多的外围设备实现互联。外围设备连接到扩充总线上,扩充总线再通过扩充总线接口与系统总线相连,从而改善过多设备带来的系统总线效率下降问题。同时,扩充总线接口可以被用来实现系统总线与扩充总线之间数据传输的缓冲,从而实现扩充总线和系统总线之间的通信隔离,提高系统总线的效率。
现代微型计算机系统中典型的扩充总线就是主板上的ISA总线。在当前的微机系统中,作为系统主要总线的PCI或PCI Express总线的速度比较高,而微机中大量低速设备如键盘、鼠标、串口、并口、声卡等都需要一种低速总线来连接。于是ISA总线被通过总线桥接芯片与PCI或PCI Express总线实现桥接,为微机系统提供低速设备的连接服务。
除此之外,目前微机系统中的扩充总线经常以设备总线的形式出现。与传统的扩充总线不同,设备总线一般被用来连接一些具有相同或类似特性的设备。典型的设备总线有IDE和SCSI,它们都是用来连接海量存储设备的设备总线。比较特别的是,相对通用的USB和IEEE 1394通常也被视为设备总线——显然这是因为这两种总线通常被用于连接外围设备而不是在主板上的缘故。
●局部总线(Local Bus,图7-3)
在现代的微型计算机中,由于外围设备的种类和传输速度差别越来越大,单一的扩充总线逐渐无法满足所有设备的数据传输需求。诸如图形/视频控制器、网络控制器这样的高速外围设备对传输速度的需求不断提高,扩充总线的带宽逐渐成为影响系统整体性能的瓶颈。为了解决这个问题,在这些高速外设和CPU之间建立一条高速的直通链路,成了必然的选择,这条直通链路就是局部总线。局部总线一般通过一个高速的控制器直接连接到CPU,从而为高速外设提供比扩充总线更高的传输带宽。所以局部总线有时称作高速设备总线或者高速总线。
图7-3 全局总线与局部总线
随着局部总线的引入,局部总线和扩充总线形成了一种层次式的结构,高速的设备连接到高速的局部总线上,而低速的设备总线则用来为低速设备服务,两种不同的总线通过总线桥连接在一起,从而满足不同种类设备对数据传输速度的不同需求。曾经借着3D显卡的东风而红极一时的AGP总线就是局部总线的一个最好例子,类似的例子还有VESA——一种80486时代用于连接显卡的局部总线。
在多处理器系统中,局部总线还有另外一层含义。多处理器系统中多个微处理器一般会共享一组存储器和I/O系统,这组存储器和I/O系统被称作全局存储器和I/O系统。同时,每个处理器还具有各自独享的存储器和I/O部件,被称为本地或局部存储器和I/O部件。在这种系统中,总线根据其物理位置与作用分为全局总线和局部总线两种。其中全局总线是各处理器模块共用的公共总线,连接多个微处理器,并实现在多个处理器模块和它们的共享模块的数据交换和控制。而局部总线正相反,负责连接微处理器与其本地存储器、I/O模块,是每个微处理器模块具有的本地总线,与其他微处理器无关。
需要说明的是,目前在总线的分类和命名上,不同的标准化组织、不同的厂商有着不同的命名规范和习惯,本节中所介绍的各种命名只是其中使用得比较广泛的一部分,并不能涵盖所有分类和命名。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。