第二章 系统总线

2.1 总线的基本概念

计算机系统的五大部件之间的互连方式有两种,一种是各部件之间通过单独的连线,叫儆分散连接;另一种是将各部件连到一组公共信息传输线上,叫做总线连接。

2.1.1、为什么要用总线?

早期的计算机大多数用分散连接方式,。它是以运算器为中心的结构,其内部连线十分复杂,尤其是当I/O与存储器交换信息时,都需经过运算器,致使运算器停止运算,严重影响了CPU的工作效率。后来,虽然改进为以存储器为中心的分散连接结构,I/O与主存交换信息可以不经过运算器,又采用了中断、DMA等技术,使CPU工作效率得到很大的提高,但是仍无法解决I/O设备与主机之间连接的灵活性。随着计算机应用领域的不断扩大,IO设备的种类和数量也越来越多,人们希望随时增添或减撤设备,用分散连接方式简直是一愁莫展,由此出现了总线连接方式。

以运算器为中心

以存储器为中心

2.1.2、什么是总线

总线是连接多个部件的信息传输线,是各部件共享的传输介质。当多个部件与总线相连时,如果出现两个或两个以上部件同时向总线发送信息,势必导致信号冲突,传输无效。因此,在某一时刻,只允许有一个部件向总线发送信息,而多个部件可以同时从总线上接收相同的信息。

总线实际上是由许多传输线或通路组成,每条线可传输一位二进制代码,一串二进制代码可在一段时间内逐一传输完成。若干条传输线可以同时传输若干位二进制代码,如16条传输线组成的总线,可同时传输16位二进制代码。

2.1.3、总线上信息的传输

  • 串行传输
    把要传输的信息一位一位放到总线上传输,接收方一位一位的接收。传输距离较长,适合于机器与机器之间

  • 并行传输
    要传输的数据多为同时放在总线上进行传输,接收方同时接收多位数据。需要多条数据线,若传输距离较长,数据线之间会产生干扰,传输的信号会变形,若要远距离传输需采用一定手段。一般用于计算机内部。

串行总线频率比并行总线高得多,且不易出错。而串行还可采用低压差分信号提高抗干扰性,所以可以实现更高的传输速率。虽然并行总线可一次传多个数据位,但是时钟远远低于串行,所以串行传输是目前高速传输的首选。

总线上信息的传输

2.1.4、总线结构

  • 单总线结构

单总线结构

当I/O与主存交换信息时,原则上不影响CPU的工作,CPU仍可继续处理不访问主存或I/O的操作,这就使CPU工作效率有所提高。但是,因为只有一组总线,当某一时刻各部件都要占用时,就会出现争夺现象。为此,总线内部必须设判优机构,让各部件按优先级高低占用总线,这会影响整机工作速度。

  • 面向CPU的双总线结构

CPU为中心双总线结构

其中一组总线连接CPU和主存,叫存储总线M总线),另一组用来建立CPU和各I/O之间交换信息的通道,叫输入输出总线(I/O总线),各种I/O设备通过I/O接口挂到I/O总线上。这种结构在I/O设备与主存交换信息时仍然要占用CPU,因此还会影响CPU的工作效率。

  • 面向存储器的双总线结构

以存储器为中心的双总线结构

它是在单总线基础上,又单独开辟一条CPU与主存之间的通路,叫存储总线。这组总线速度高,只供主存与CPU之间传输信息。这样既提高了传输效率,又减轻了系统总线的负担,还保留了I/O与存储器交换信息时不经过CPU的特点。

2.2 总线的分类

  • 片内总线:芯片内部的总线,如在CPU芯片内部,寄存器与寄存器之间、寄存器与算逻单元ALU之间都有总线连接。
  • 系统总线:计算机各部件之间的信息传输线,如CPU、主存、IO(通过MO接口)各大部件之间的信息传输线。按传输信息可分为三类:
    • 数据总线:数据总线用来传输各功能部件之间的数据信息,它是双向传输总线。
    • 地址总线:地址总线主要用来指出数据总线上的源数据或目的数据在主存单元的地址,是单向传输的。
    • 控制总线:控制总线是用来发出各种控制信号的传输线,控制信号既有出(存储器读、存储器写、总线使用权许可、中断确认),又有入(中断请求、总线请求),出、入是相对于CPU而言的。
  • 通信总线:用于 计算机系统之间 或 计算机系统 与其他系统(如控制仪表、移动通信等) 之间的通信。

2.3 总线性能及性能指标

2.3.1、总线特性

从物理角度来看,总线就是一组电导线,许多导线直接印制在电路板上,延伸到各个部件。为了保证机械上的可靠连接,必须规定其机械特性;为了确保电气上正确连接,必须规定其电气特性;为保证正确地连接不同部件,还需规定其功能特性和时间特性。

  • 机械特性:机械特性是指总线在机械连接方式上的一些性能,如插头与插座使用的标准,它们的几何尺寸、形状、引脚的个数以及排列的顺序,接头处的可靠接触等等。
  • 电气特性:电气特性是指总线的每一根传输线上信号的传递方向和有效的电平范围。
  • 功能特性:功能特性是指总线中每根传输线的功能,如地址总线用来指出地址号;数据总线传递数据;控制总线发出控制信号。
  • 时间特性:时间特性是指总线中的任一根线在什么时间内有效。每条总线上的各种信号,互相存在着一种有效时序的关系,因此,时间特性一般可用信号时序图来描述。

2.3.2、总线的性能指标

  1. 总线宽度:它是指数据总线的根数,用bit(位)表示。如8位(即8根)。
  2. 标准传输率:即在总线上每秒能传输的最大字节量,用MB(每秒多少兆字节)表示。如总线工作频率为33MHz,总线宽度为32位,则它最大的传输率为132MB/s。
  3. 时钟同步/异步:总线上的数据与时钟同步工作的总线称同步总线,与时钟不同步工作的总线称异步总线
  4. 总线复用:为了提高总线的利用率,优化设计,特将地址总线和数据总线共用一组物理线路,只是某一时刻该总线传输地址信号,另一时刻传输数据信号或命令信号。这叫做总线的多路复用
  5. 信号线数:即地址总线、数据总线和控制总线三种总线数的总和。
  6. 总线控制方式:包括并发工作、自动配置、仲裁方式、逻辑方式、计数方式等。
  7. 其他指标:如负载能力问题。由于不同的电路对总线的负载是不同的,即使同一电路板在不同的工作频率下,总线的负载也是不同的,因此,总线负载能力的指标不是太严格的。通常用可连接扩增电路板数来反映总线的负载能力。

2.4 总线控制

由于总线上连接着许许多多个部件,什么时候由哪个部件发送信息;如何给信息传送定时;如何防止信息丢失:如何避免多个部件同时发送;如何规定接受信息的部件等等一系列问题,都需要由总线控制器统一管理。它主要包括判优控制(或称仲裁逻辑)和通信控制。

2.4.1、总线判优控制

  1. 链式查询

图中控制总线中有三根线用于总线控制(BS总线忙、BR总线请求、BG总线同意),其中总线同意信号BG是串行地从一个I/O接口送到下一个I/O接口。如果BG到达的接口有总线请求BG信号就不再往下传,意味着该接口获得了总线使用权,并建立总线忙BS信号,表示它占用了总线。可见在查询链中,离总线控制部件最近的设备具有最高的优先级。这种方式的特点是:只需很少几根线就能按一定优先次序实现总线控制,并且很容易扩充设备,但对电路故障很敏感。

链式查询

  1. 计数器定时查询

与链式查询相比,多了组设备地址(设备地址由计数器给出)线(地址线数与设备数有关,要对设备二进制编号,一般为⌈log(I/O设备数)⌉),少了一根总线同意线BG。总线控制部件接到由BR送来的总线请求信号后,在总线未被使用(BS=0)的情况下,由计数器开始计数,向各设备发出一组地址信号。当某个有总线请求的设备地址与计数值一致时,便获得总线使用权,此时终止计数查询。这种方式的特点是:计数可以从“0”开始,此时设备的优先次序是固定的;计数也可以从终止点开始,即是一种循环方法,此时设备使用总线的优先级相等;计数器的初始值还可由程序设置,故优先次序可以改变。此外,对电路故障不如链式查询方式敏感,但增加了主控制线(设备地址)数,控制也较复杂。

计数器定时查询

  1. 独立请求方式

由图可见,每一设备均有一对总线请求线$BR_{i}$和总线同意线$BG_{i}$。当设备要求使用总线时,便发出该设备的请求信号。总线控制部件中有一排队电路,可根据优先次序确定响应哪一设备的请求。这种方式的特点是:响应速度快,优先次序控制灵活(通过程序改变),但控制线数量多,总线控制更复杂。链式查询中仅用两根线确定总线使用权属于哪个设备,在计数查询中大致用log2n根线,其中n是允许接纳的最大设备数而独立请求方式需采用2n根线。

独立请求方式

2.4.2、总线通信控制

众多部件共享总线,在争夺总线使用权时,只能按各部件的优先等级来解决。而在传送通信时间上,只能按分时方式来解决,即哪一个部件获得使用,此刻就由它传送,下部件获得使用,接着下一时刻传送。这样一个接一个轮流交替传输。

总线在完成一次传输周期时,可分为四个阶段:

  • 申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,经总线仲裁机构决定下一传输周期的总线使用权授于某一申请者
  • 寻址阶段:取得了使用权的主模块,通过总线发出本次打算访问的从模块(或从设备)的存储地址或设备地址及有关命令,启动参与本次传输的从模块
  • 传数阶段:主模块和从模块进行数据交换,数据由源模块发出经数据总线流入目的模块
  • 结束阶段:主模块的有关信息均从系统总线上撒除,让出总线使用权

总线通信控制主要解决通信双方如何获知传输开始和传输结束,以及通信双方如何协调如何配合。

一般常用四种方式:

  • 同步通信

通信双方由统一时标控制数据传送称为同步通信。时标通常由CPU的总线控制部件发出,送到总线上的所有部件;也可以由每个部件各自的时序发生器发出,但必须由总线控制部件发出的时钟信号对它们进行同步。

同步传输
图中总线传输周期是总线上两个部件完成一次完整而可靠的传输时间,它包含4个时钟周期$T_{1}$、$T_{2}$、$T_{3}$、$T_{4}$。

主模块在$T_{1}$时刻发岀地址信息;$T_{2}$时刻发出读命令;从模块按照所指定的地址和命令进行一系列内部动作,必须在$T_{3}$时刻前找到CPU所需的数据,并送到数据总线上;CPU在$T_{3}$时刻开始,一直维持到$T_{4}$时刻,可以从数据线上获取信息并送到其内部寄存器中;$T_{4}$时刻开始输入设备不再向数据总线上传送数据,撤消它对数据总线的驱动。

对于读命令,其传输周期为:$T_{1}$主模块发地址;$T_{2}$主模块发读命令$T_{3}$从模块提供数据;$T_{4}$主模块撤消读命令。

对于写命令,其传输周期为:$T_{1}$主模块发地址;$T_{1.5}$主模块提供数据;$T_{2}$主模块发出写命令,从模块接收到命令后,必须在规定时间内将数据总线上的数据写到地址总线所指明的单元中;$T_{4}$主模块撤消写命令和数据等信号。

这种通信的优点是规定明确、统一,模块间的配合简单一致。其缺点是主从模块时间配合属强制性“同步”,必须在限定时间内完成规定的要求。并且对所有从模块都用同一限时,这就势必造成对各不相同速度的部件而言,必须按最慢速度部件来设计公共时钟,严重影响总线的工作效率,也给设计带来了局限性,缺乏灵活性。

  • 异步通信

异步允许各模块速度的不一致性,它没有公共的时钟标准,不要求所有部件严格的统动作时间,而是采用应答方式(又称握手方式),即当主模块发出请求( Request)信号时,一直等待从模块反馈回来“响应”( Acknowledge)信号后,才开始通信。当然,这就要求主从模块之间增加两条应答线(即握手交互信号线 Handshaking)

异步传输

异步通信方式可分为不互锁、半互锁和全互锁三种类型。

不互锁方式:主模块发出请求信号后,从模块接收到请求后进行应答。之后主模块撤销请求信号,从模块撤销应答信号。在这个过程中主模块和从模块无论是否接收到相应的信号,经过一段延时后都会撤销请求信号(主模块撤销)和应答信号(从模块撤销)。

半互锁方式:主模块发出请求信号后,从模块接收到请求后进行应答。主模块接收到应答信号后撤销请求信号,否则保持请求信号。从模块无论主模块是否接收到应答信号,经过一段延时后都会撤销应答信号。半互锁有可能使请求信号一直保持高电平。

全互锁方式:主模块发出请求信号后,从模块接收到请求后进行应答。主模块接收到应答信号后撤销请求信号,否则保持请求信号。只有主设备撤销请求信号后从设备才会撤销应答信号。

  • 半同步通信

半同步通信集同步与异步通信之优点,既保留了同步通信的基本特点,如所有的地址、命令、数据信号的发出时间,都严格参照系统时钟的某个前沿开始,而接收方都采用系统时钟后沿时刻来进行判断识别。同时又像异步通信那样,允许不同速度的模块和诸地工作。为此增设了一条“等待”(WAIT)响应信号线。

半同步通信

主模块在$T_{1}$时刻发岀地址信息;$T_{2}$时刻发出读命令;如果主模块比从模块工作速度快$T_{3}$时刻到来前从模块无法向主模块提供数据,从模块发出WAIT信号(低电平有效),主模块检测WAIt信号,如果WAIT是低电平,主模块会在$T_{2}$和$T_{3}$之间插入一个$T_{WAIT}$,直到WAIT为高电平;CPU在$T_{3}$时刻开始,一直维持到$T_{4}$时刻,可以从数据线上获取信息并送到其内部寄存器中;$T_{4}$时刻开始输入设备不再向数据总线上传送数据,撤消它对数据总线的驱动。

  • 分离式通信

以上三种通信方式都是从主模块发出地址和读写命令开始,直到数据传输结束。在整个传输周期中,系统总线的使用权,完全由占有使用权的主模块和由它选中的从模块占据。但是从模块内部读出数据过程并无实质性的信息传输,纯属空闲等待,造成总线使用浪费。为此提出分离式通信方式。

基本思想是将一个传输周期(或总线周期)分解为两个子周期。在第一个子周期中,主模块A在获得总线使用权后将命令、地址以及其他的有关信息,包括该主模块编号(当有多个主模块时,此编号尤为重要)发到系统总线上,经总线传输后,由有关的从模块B接收下来。主模块A向系统总线发布这些信息只占用总线很短的时间,一旦发送完,立即放弃总线使用权,以便其他模块使用。在第二个子周期中,当B模块收到A模块发来的有关命令信号后,经选择、译码、读取等一系列内部操作,将A模块所需的数据准备好,便由B模块申请总线使用权,一旦获准,B模块便将A模块的编号、B模块的地址,A模块所需的数据等一系列信息送到总线上,供A模块接收。

分离式通信方式的特点:

  1. 各模块欲占用总线使用权都必须提出申请
  2. 在得到总线使用权后,主模块在限定的时间内向对方传送信息,采用同步方式传送,不再等待对方的回答信号
  3. 各模块在准备数据传送的过程中都不占用总线,使总线可接受其他模块的请求
  4. 总线被占用时都在作有效工作,或者通过它发命令,或者通过它传送数据,不存在空闲等待时间,最充分地发挥了总线的有效占用。从而实现了总线为多个主从模块间进行信息交叉重叠并行式传送,这对大型计算机系统是极为重要的。当然,这种方式控制比较复杂,般在普通微机系统很少采用。