第三章 系统总线
3.1 总线的基本概念
一、为什么要用总线连接
计算机系统的五大部件之间的互连方式有两种,一种是各部件之间使用单独的连线,称为分散连接;另一种是将各部件连到一组公共信息传输线上,称为总线连接。
分散连接有两种常见情况,分别是第一章中提到的以运算器为中心和以存储器为中心。前者的缺点是太占用运算器资源,后者的缺点是I/O设备和主机之间连接不灵活。因此做出改变,使用总线连接。
二、什么是总线
总线是连接多个部件的信息传输线,是各部件共享的传输介质。
三、总线上信息的传送
总线实际上是由一条或多条传输线或通路组成,每条线可一位一位地传输二进制代码,一串二进制代码可在一段时间内逐一传输完成。
总线上信息的传送分为串行和并行两种。串行即只有一条数据线(通路),数据只能一位一位排好队传输,而并行则是有一排传输线(通路),可以同时发送一组数据,例如,16条传输线组成的总线可同时传输16位二进制代码。
四、总线结构的计算机举例
1. 单总线结构框图
优点:设计简单、成本低;当I/O设备与主存交换信息时,原则上不影响CPU 的工作,CPU仍可继续处理不访问主存或I/O设备的操作,这就使CPU工作效率有所提高。
缺点:所有设备都使用一条总线,慢速设备会限制快速设备的速度,从而影响总速度;如此一来,会使总线变得拥挤、混乱,使总线变成系统运行速度的瓶颈。
2. 面向 CPU 的双总线结构框图
优点:缓解了单总线的压力。
缺点:CPU成为搬运工,主存和I/O传输信息需要通过CPU,使CPU成为了系统运行速度的瓶颈。
3. 以存储器为中心的双总线结构框图
区别在于主存和I/O之间可以直接进行数据交互。
优点:即提高了传输效率,又减轻了系统总线的负担。
缺点:CPU和I/O同时访存时,需要一些规则来避免冲突。
3.2 总线的分类
一、片内总线
片内总线是指芯片内部的总线,如在CPU芯片内部,寄存器与寄存器之间、寄存器与算逻单元 ALU 之间都由片内总线连接。
二、系统总线
系统总线是指CPU、主存、I/O设备(通过I/O接口)各大部件之间的信息传输线。
按系统总线传输信息的不同,又可分为三类:数据总线、地址总线和控制总线。
1. 数据总线
数据总线用来传输各功能部件之间的数据信息,
数据总线可以在各部件之间双向传输。
数据总线与机器字长、存储字长有关。
数据总线的位数称为数据总线宽度,它是衡量系统性能的一个重要参数。如果数据总线的宽度为8位,指令字长为16位,那么, CPU 在取指阶段必须两次访问主存。
2. 地址总线
地址总线主要用来指出欲访问的存储单元或I/O设备的地址。
地址总线是单向传输,由CPU输出。
地址总线与存储地址、 I/O地址有关。
3. 控制总线
由于数据总线地址单线都是被挂在总线上的所有部件共享的的,如何使各部件能在不同时刻占有总线使用权,需依靠控制总线来完成,因此控制总线是用来发出各种控制信号的传输线。
控制总线也可以双向传输:从其他部件向CPU发出中断请求、总线请求等控制信号;CPU向其他部件发出存储器读、存储器写、总线允许、中断确认等控制信号。
常见的控制信号如下。
时钟:用来同步各种操作。
复位:初始化所有部件。
总线请求:表示某部件需获得总线使用权。
总线允许:表示需要获得总线使用权的部件已获得了控制权。
中断请求:表示某部件提出中断请求。
中断响应:表示中断请求已被接收。
存储器写:将数据总线上的数据写至存储器的指定地址单元内。
存储器读:将指定存储单元中的数据读到数据总线上。
I/O读:从指定的I/O端口将数据读到数据总线上。
I/O写:将数据总线上的数据输出到指定的I/O端口内。
传输响应:表示数据已被接收,或已将数据送至数据总线上。
三、通信总线
用于 计算机系统之间 或 计算机系统与其他系统(如控制仪表、移动通信等)之间的通信。
传输方式有串行传输和并行传输。
3.3 总线特性及性能指标
一、总线物理实现
二、总线特性
1. 机械特性
机械特性是指总线在机械连接方式上的一些性能,如插头与插座使用的标准,它们的几何尺寸、形状、引脚的个数以及排列的顺序,接头处的可靠接触等。
2. 电气特性
电气特性是指总线的每一根传输线上信号的传递方向和有效的电平范围。
3. 功能特性
功能特性是指每根传输线的功能,例如地址总线、数据总线、控制总线。
4. 时间特性
时间特性是指总线中的任一根线在什么时间内有效,每条总线上的各种信号互相存在一种有效时序的关系,因此,时间特性一般可用信号时序图来描述。
三、总线性能指标
1. 总线宽度
通常是指数据总线的根数,用bit(位)表示,如8位、16 位、32位、64位(即8根、16根、32根、64根)。
2. 标准传输率
亦称总线带宽,可理解为总线的数据传输速率,即单位时间内总线上传输数据的位数,通常用每秒传输信息的字节数来衡量,单位可用MBps(兆字节每秒)表示。例如,总线工作频率为33MHz,总线宽度为32位(4B),则总线带宽为33×(32÷8)=132MBps。
3. 时钟同步/异步
总线上的数据与时钟同步工作的总线称为同步总线,与时钟不同步工作的总线称为异步总线。
4. 总线复用
地址线与数据线复用,即地址总线和数据总线共用一组物理线路,地址与数据分时传输。
5. 信号线数
地址总线、数据总线和控制总线三种总线数的总和。
6. 总线控制方式
包括突发工作、自动配置、仲裁方式、逻辑方式、计数方式等。
7. 其他指标
如负载能力、电源电压(是采用5V还是3.3 V)、总线宽度能否扩展等。
8. 总线工作频率
早期的总线通常一个时钟周期传送一次数据,此时,工作频率等于总线时钟频率;现在有些总线一个时钟周期可以传送2次或4次数据,因此,工作频率是时钟频率的2倍或4倍。
9. 总线传送方式
非突发传送:每个总线事务都传送地址,一个地址对应一次数据传送。
突发传送:即为成块数据传送。突发传送总线事务中,先传送一个地址,后传送多次数据,后续数据的地址默认为前面地址自动增量。
四、总线标准
计算机系统中各类模块(特别是IO设备所带的各类接口模块)品种极其繁杂,往往一种模块要配一种总线,很难在总线上更换、组合各类模块或设备。20世纪70年代末,为了使系统设计简化,模块生产批量化,确保其性能稳定、质量可靠,实现可移化,便于维护等,人们开始研究如何使总线建立标准,在总线的统一标准下,完成系统设计,模块制作。这样,系统、模块、设备与总线之间不适应、不通用及不匹配的问题就迎刃而解了。
下图为几种流行微机总线性能:
以第一行为例,如何计算带宽:(16位=2B)2B×8M/s=16MBps
3.4 总线结构
一、单总线结构
单总线结构简单,也便于扩充,但所有的传送都通过这组共享总线,因此极易形成计算机系统的瓶颈。它也不允许两个以上的部件在同一时刻向总线传输信息,这就必然会影响系统工作效率的提高。这类总线多数被小型计算机或微型计算机所采用。
二、多总线结构
1. 双总线结构
双总线结构的特点是将速度较低的I/O设备从单总线上分离出来,形成主存总线与I/O总线分开的结构。图中通道是一个具有特殊功能的处理器,将一部分功能下放给通道,使其对I/O设备具有统一管理的功能,以完成外部设备与主存储器之间的数据传送,可以直接处理IO和主存之间的数据交互,这样就不用CPU来参与,其系统的吞吐能力相当大。这种结构大多用于大、中型计算机系统。
如果将速率不同的I/0设备进行分类,然后将它们连接在不同的通道上,那么计算机系统的工作效率将会更高,由此发展成多总线结构。
2. 三总线结构
下图中主存总线用于CPU与主存之间的传输;I/O总线供CPU与各类I/O设备之间传递信息;DMA总线用于高速I/O设备(磁盘、磁带等)与主存之间直接交换信息。在三总线结构中,任一时刻只能使用一种总线。主存总线与DMA总线不能同时对主存进行存取,I/O总线只有在CPU执行I/O指令时才能用到。
下图是三总线结构的又一形式,由图可见,处理器与Cache之间有一条局部总线,它将CPU与Cache或与更多的局部设备连接。Cache的控制机构不仅将Cache连到局部总线上,而且还直接连到系统总线上,这样Cache就可通过系统总线与主存传输信息,把数据提前存在Cache中,以此来提高CPU的速度,而且I/O设备与主存之间的传输也不必通过CPU。还有一条扩展总线,它将局域网、小型计算机接口(SCSI)、调制解调器(Modem)以及串行接口等都连接起来,并且通过这些接口又可与各类I/O设备相连,因此它可支持相当多的I/O设备。与此同时,扩展总线又通过扩展总线接口与系统总线相连,由此便可实现这两种总线之间的信息传递,可见其系统的工作效率明显提高。
为了进一步提高I/O设备的性能,使其更快地响应命令,又出现了四总线结构,如下图。在这里又增加了一条与计算机系统紧密相连的高速总线。在高速总线上挂接了一些I/O设备,如高速局域网、图形工作站、多媒体、SCSI等。它们通过Cache控制机构中的高速总线桥或高速缓冲器与系统总线和局部总线相连,使得这些高速设备与CPU更密切。而一些低速的设备如图文传真FAX、调制解调器及串行接口仍然挂在设备总线上,并由扩展总线接口与高速总线相连。
这种结构对高速设备而言,其自身的工作可以很少依赖CPU,同时它们又比扩展总线上的设备更贴近CPU,可见对于高性能设备与CPU来说,各自的效率将获得更大的提高。在这种结构中,CPU、高速总线的速度以及各自信号线的定义完全可以不同,以至各自改变其结构也不会影响高速总线的正常工作,反之亦然。
三、总线结构举例
1. 传统微型机总线结构
由图可见,不论高速局域网、高性能图形还是低速的FAX、Modem都挂接在ISA或EISA总线上,并通过ISA或EISA总线控制器与系统总线相连,这样势必出现总线数据传输的瓶颈。只有将高速、高性能的外设,如高速局域网卡、高性能图形卡等尽量靠近CPU本身的总线,并与CPU同步或准同步,才可能消除瓶颈问题。这就要求改变总线结构来提高数据传送速率,为此,出现了下图的 VL-BUS局部总线结构。
2. VL-BUS局部总线结构
由图可见,将原先挂在ISA总线上的高速局域网卡、多媒体卡、高性能图形卡等从ISA总线卸下来,挂到局部总线VL-BUS上,再与系统总线相连。而将打印机、FAX、Modem 等低速设备仍挂在ISA总线上。局部总线VL-BUS就相当于在CPU与高速I/О设备之间架上了高速通道,使CPU与高性能外设得到充分发挥,满足了图形界面软件的要求。
由于VL-BUS是从CPU总线演化而来的,与CPU 的关系太紧密(实际上这种总线与486配合最佳),以致很难支持功能更强的CPU ,因此出现了PCI总线。
3. PCI 总线结构
由图可见,PCI总线是通过PCl桥路(包括PCI控制器和PCI加速器)与CPU总线相连。这种结构使CPU总线与PCI总线互相隔离,具有更高的灵活性,可以支持更多的高速运行设备,而且具有即插即用的特性。当然,挂在PCI总线上的设备都要求数据传输速率高的设备,如多媒体卡、高速局域网适配器、高性能图形卡等,与高速CPU总线是相匹配的。至于低速的FAX、Modem 、打印机仍然挂在ISA、EISA 总线上。
当 PCI总线驱动能力不足时,可采用多层结构,如下图所示。
3.5 总线控制
由于总线上连接着多个部件,什么时候由哪个部件发送信息,如何给信息传送定时,如何防止信息丢失,如何避免多个部件同时发送,如何规定接收信息的部件等一系列问题都需要由总线控制器统一管理。它主要包括判优控制(或称仲裁逻辑)和通信控制。
一、总线判优控制
1. 基本概念
总线上所连接的各类设备,按其对总线有无控制功能可分为主设备(模块)和从设备(模块)两种。主设备对总线有控制权,从设备只能响应从主设备发来的总线命令,对总线没有控制权。总线上信息的传送是由主设备启动的,如某个主设备欲与另一个设备(从设备)进行通信时,首先由主设备发出总线请求信号,若多个主设备同时要使用总线时,就由总线控制器的判优、仲裁逻辑按一定的优先等级顺序确定哪个主设备能使用总线。只有获得总线使用权的主设备才能开始传送数据。
总线判优控制可分集中式和分布式两种,前者将控制逻辑集中在一处(如在CPU 中),后者将控制逻辑分散在与总线连接的各个部件或设备上。
常见的集中控制优先权仲裁方式有以下三种。
2. 链式查询方式
链式查询方式如下图所示。图中控制总线中有3根线用于总线控制(BS总线忙、BR总线请求、BG总线同意),其中总线同意信号BG是串行地从一个I/O接口送到下一个I/O接口。如果BG到达的接口有总线请求,BG信号就不再往下传,意味着该接口获得了总线使用权,并建立总线忙BS信号,表示它占用了总线。可见在链式查询中,离总线控制部件最近的设备具有最高的优先级。这种方式的特点是:只需很少几根线就能按一定优先次序实现总线控制,并且很容易扩充设备,但对电路故障很敏感,且优先级别低的设备可能很难获得请求。
3. 计数器定时查询方式
计数器定时查询方式如下图所示。与链式查询方式相比,多了一组设备地址线,少了一根总线同意线BG。总线控制部件接到由BR送来的总线请求信号后,在总线未被使用(BS=0)的情况下,总线控制部件中的计数器开始计数,并通过设备地址线,向各设备发出一组地址信号。当某个请求占用总线的设备地址与计数值一致时,便获得总线使用权,此时终止计数查询。这种方式的特点是:计数可以从“0”开始,此时一旦设备的优先次序被固定,设备的优先级就按0,1 ,…,,n的顺序降序排列,而且固定不变;计数也可以从上一次计数的终止点开始,即是一种循环方法,此时设备使用总线的优先级相等;计数器的初始值还可由程序设置,故优先次序可以改变。这种方式对电路故障不如链式查询方式敏感,但增加了控制线(设备地址)数,控制也较复杂。
4. 独立请求方式
独立请求方式如下图所示。由图中可见,每一台设备均有一对总线请求线BR和总线同意线BG。当设备要求使用总线时,便发出该设备的请求信号。总线控制部件中有一排队电路,可根据优先次序确定响应哪一台设备的请求。这种方式的特点是:响应速度快,优先次序控制灵活(通过程序改变),但控制线数量多,总线控制更复杂。链式查询中仅用两根线确定总线使用权属于哪个设备,在计数器查询中大致用
l
o
g
2
n
log_{2}n
log2n根线,其中n是允许接纳的最大设备数,而独立请求方式需采用2n根线。
5. 分布式控制
将总线控制逻辑分布在连接到总线的各个部件中。
二、总线通信控制
1. 目的
众多部件共享总线,在争夺总线使用权时,应按各部件的优先等级来解决。在通信时间上,则应按分时方式来处理,即以获得总线使用权的先后顺序分时占用总线,即以获得总线使用权的先后顺序时分占用总线,即哪一个部件获得使用权,此刻就由它传送,下一部件获得使用权,接着下一时刻传送。这样一个接一个轮流得使用权,。
2. 总线传输周期
通常将完成一次总线操作的时间称为总线周期,可分为以下4个阶段。
1. 申请分配阶段:主模块申请,总线仲裁决定。
2. 寻址阶段:主模块从总线发出要访问的模块的地址和有关命令。
3. 传数阶段:主模块和从模块交换数据。
4. 结束阶段:主模块撤消有关信息,让出总线使用权。
3. 总线通信的四种方式
1. 同步通信:由统一时标控制数据传送。
2. 异步通信:采用应答方式,没有公共时钟标准。
3. 半同步通信:同步、异步结合。
4. 分离式通信:充分挖掘系统总线每个瞬间的潜力。
(1) 同步式数据输入
图中总线传输周期是连接在总线上的两个部件完成一次完整且可靠的信息传输时间,它包含4个时钟周期
T
1
T_{1}
T1、
T
2
T_{2}
T2、
T
3
T_{3}
T3、
T
4
T_{4}
T4。
CPU在
T
1
T_{1}
T1上升沿发出地址信息;在
T
2
T_{2}
T2的上升沿发出读命令;与地址信号相符合的输入设备按命令进行一系列内部操作,且必须在
T
3
T_{3}
T3的上升沿到来之前将CPU所需的数据送到数据总线上;CPU在
T
3
T_{3}
T3时钟周期内,将数据线上的信息送到其内部寄存器中;CPU 在
T
4
T_{4}
T4的上升沿撤销读命令,输人设备不再向数据总线上传送数据,撤销它对数据总线的驱动。
同步通信在系统总线设计时,对
T
1
T_{1}
T1、
T
2
T_{2}
T2、
T
3
T_{3}
T3、
T
4
T_{4}
T4都有明确、唯一的规定。对于读命令,其传输周期如下:
T
1
T_{1}
T1:主模块发地址。
T
2
T_{2}
T2:主模块发读命令。
T
3
T_{3}
T3:从模块提供数据。
T
4
T_{4}
T4:主模块撤销读命令,从模块撤销数据。
(2) 同步式数据输出
对于写命令,其传输周期如下:
T
1
T_{1}
T1:主模块发地址。
T
1.5
T_{1.5}
T1.5:主模块提供地址。
T
2
T_{2}
T2:主模块发出写命令,从模块接收到命令后,必须在规定时间内将数据总线上的数据写到地址总线所指明的单元中。
T
4
T_{4}
T4:主模块撤销写命令和数据等信号。
这种通信的优点是规定明确、统一,模块间的配合简单一致。其缺点是主、从模块时间配合属于强制性“同步”,必须在限定时间内完成规定的要求。并且对所有从模块都用同一限时,这就势必造成,对各不相同速度的部件而言,必须按最慢速度的部件来设计公共时钟,严重影响总线的工作效率,也给设计带来了局限性,缺乏灵活性。
同步通信一般用于总线长度较短、各部件存取时间比较一致的场合。
在同步通信的总线系统中,总线传输周期越短,数据线的位数越多,直接影响总线的数据传输率。
(3) 异步通信
异步通信克服了同步通信的缺点,允许各模块速度的不一致性,给设计者充分的灵活性和选择余地。它没有公共的时钟标准,不要求所有部件严格的统一操作时间,而是采用应答方式(又称握手方式),即当主模块发出请求(Request)信号时,一直等待从模块反馈回来“响应”(Ac-knowledge)信号后才开始通信。当然,这就要求主、从模块之间增加两条应答线(握手交互信号线Handshaking)。
异步通信的应答方式又可分为不互锁、半互锁和全互锁三种类型。
(4) 半同步通信(同步、异步结合)
同步在于:发送方用系统时钟前沿发信号,接收方用系统时钟后沿判断、识别。
异步在于:允许不同速度的模块和谐工作,增加一条“等待”响应信号
W
A
I
T
‾
\overline{WAIT}
WAIT。
以输入数据为例的半同步通信时序:
T
1
T_{1}
T1:主模块发地址。
T
2
T_{2}
T2:主模块发命令。
T
W
T_{W}
TW:当
W
A
I
T
‾
\overline{WAIT}
WAIT为低电平时,等待一个T。
T
W
T_{W}
TW:当
W
A
I
T
‾
\overline{WAIT}
WAIT为低电平时,等待一个T。
⋮
\vdots
⋮
T
3
T_{3}
T3:从模块提供数据。
T
4
T_{4}
T4:从模块撤销数据,主模块撤销命令。
上述三种通信的共同点,一个总线传输周期(以输入数据为例):
· 主模块发地址 、命令 占用总线
· 从模块准备数据 不占用总线 总线空闲
· 从模块向主模块发数据 占用总线
(5) 分离式通信
充分挖掘系统总线每个瞬间的潜力。
一个总线传输周期分为两个子周期:
子周期1:主模块申请占用总线,使用完后即放弃总线的使用权.
子周期2:从模块准备好数据后,申请占用总线,将各种信息送至总线上。
分离式通信特点:
① 各模块有权申请占用总线。
② 采用同步方式通信,不等对方回答。
③ 各模块准备数据时,不占用总线。
④ 总线被占用时,无空闲。
充分提高了总线的有效占用。