3.5 总线控制
由于总线上连接着多个部件,什么时候由哪个部件发送信息,如何给信息传送定时,如何防止信息丢失,如何避免多个部件同时发送,如何规定接收信息的部件等一系列问題都需要由总线控制器统一管理。它主要包括判优控制(或称仲裁逻辑)和通信控制。
3.5.1 总线判优控制
总线上所连接的各类设备,按其对总线有无控制功能可分为 主设备(模块)和从设备(模块) 两种。主设备对总线有控制权,从设备只能响应从主设备发出的总线命令,对总线没有控制权。
总线上信息的传送是由主设备启动的,如某个主设备欲与另ー个设备(从设备)进行通信时,首先由主设备发出总线请求信号,若多个主设备同时要使用总线时,就由总线控制器的判优、仲裁逻辑按一定的优先等级顺序确定哪个主设备能使用总线。只有获得总线使用权的主设备才能开始传送数据。
总线判优控制可分集中式和分布式两种,前者将控制逻集中在一处(如在CPU中),后者将控制逻辑分散在与总线连接的各个部件或设备。
常见的集中控制优先权仲裁方式有以下三种。
(1)链式查询
链式查询方式如图(a)所示。图中控制总线中有3根线用于总线控制(BS总线忙、BR总线请求、BG总线同意),其中总线同意信号BG是串行地从一个I/O接口送到下一个I/O接口。如果BG到达的接口有总线请求,BG信号就不再往下传,意味着该接口获得了总线使用权,并建立总线忙BS信号,表示它占用了总线。可见在链式查询中,离总线控制部件最近的设备具有最高的优先级。
这种方式的特点是:只需很少几根线就能按一定优先次序实现总线控制,并且很容易扩充设备,但对电路故障很敏感,且优先级别低的设备可能很难获得请求。
计数器定时查询方式如图(b)所示。与图(a)相比,多了一组设备地址线,少了根总线同意线BG。总线控制部件接到由BR送来的总线请求信号后,在总线未被使用(BS=0)
的情况下,总线控制部件中的计数器开始计数,并通过设备地址线,向各设备发出一组地址信号。当某个请求占用总线的设备地址与计数值一致时,便获得总线使用权,此时终止计数查询。
这种方式的特点是:计数可以从“0”开始,此时一但设备的优先次序被固定,设备的优先级就按0,1,…,n的顺序升序排列,而且固定不变;计数也可以从上一次计数的终止点开始,即是一种循环方法,此时设备使用总线的优先级相等;计数器的初始值还可由程序设置,故优先次序可以改变。这种方式对电路故障不如链式査询方式敏感,但增加了控制线(设各地址)数,控制也较复杂。
独立请求方式如图©所示。由图中可见,每一台设备均有一对总线请求线BR(i),和总线同意线BG(i)。当设备要求使用总线时,便发出该设备的请求信号。总线控制部件中有一排队电路,可根据优先次序确定响应哪一台设备的请求。
这种方式的特点是:响应速度快,优先次序控制灵活(通过程序改变),但控制线数量多,总线控制更复杂。
链式查询中仅用两根线确定总线使用权属于哪个设备,在计数器查询中大致用log(2)n根线,其中n是允许接纳的最大设备数,而独立请求方式需采用2n根线。
3.5.2 总线通信控制
众多部件共享总线,在争夺总线使用权时,应按各部件的优先等级来解决。
在通信时间上,则应按分时方式来处理,即以获得总线使用权的先后顺序分时占用总线,即哪一个部件获得使用权,此刻就由它传送,下一部件获得使用权,接着下一时刻传送。这样一个接一个轮流交替传送。
通常将完成一次总线操作的时同称为总线周期,可分为以下4个阶段。
1.申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,经总线仲裁机构决定下一传输周期的总线使用权授于某一申请者。
2.寻址阶段:取得了使用权的主模块通过总线发出本次要访问的从模块(或从设备)的地址及有关命令,启动参与本次传输的从模块。
3.传数阶段:主模块和从模块进行数据交换,数据由源模块发出,经数据总线流人目的模块
4.结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
对于仅有一个主模块的简单系统,无须申请、分配和撤除,总线使用权始终归它占有。对于包含中断、DMA控制或多处理的系统,还需要有其他管理机构来参与。
总线通信控制主要解决通信双方如何获知传输开始和传输结東,以及通信双方如何协调如何配合。通常用四种方式:同步通信、异步通信、半同步通信和分离式通信。
1.同步通信
通信双方由统一时标控制数据传送称为同步通信。时标通常由CPU的总线控制部件发出,到总线上的所有部件;也可以由每个部件各自的时序发生器发出,但必须由总线控制部件发出的时钟信号对它们进行同步。
图3.16表示某个输入设备向CPU传输数据的同步通信过程
图中总线传输周期是连接在总线上的两个部件完成一次完整且可靠的信息传输时间,它包含4个时钟周期 T1、T2、T3、T4。
对于读命令,其传输周期如下
T1的上升沿,主模块发地址。
T2的上升沿,主模块发读命令。与地址信号符合的从设备按命令进行一系列内部操作,且必须在T3的上升沿到来之前将CPU所需的数据送到数据总线上。
T3时钟周期内,从模块提供数据。将数据线上的信息送到其主模块内部寄存器中
T4上升沿,主模块撤销读命令,从模块撤销数据。输入设备不再向数据总线上传送数据,撤销它对数据总线的驱动
写命令传输周期的时序如图3.17所示。
对于写命令,其传输周期如下:
T1上升沿,主模块发地址。
T1.5,主模块开始准备提供数据。
T2上升沿,数据已经准备在数据总线上,主模块发出写命令,从模块接收到命令后,必须在规定时间内将数据总线上的数据写到地址总线所指明的单元中。
T4,主模块撤销写命令和数据等信号。
这种通信的优点是规定明确、统一,模块间的配合简单一致。其缺点是主,从模块时间配合属于强制性“同步”,必须在限定时间内完成规定的要求。并且对所有从模块都用同一限时,这就势必造成,对各不相同速度的部件而言,必须按最慢速度的部件来设计公共时钟,严重影响总线的工作效率,也给设计带来了局限性,缺乏灵活性。
同步通信一般用于总线长度较短,各部件存取时比较一致的场合。
2.异步通信:
异步通信克服了同步通信的缺点,允许各模块速度的不一致性,给设计者充分的灵活性和选择余地。它没有公共的时钟标准,不要求所有部件严格的統一操作时间,而是采用应答方式(又称握手方式),即当主模块发出请求( Request)信号时,一直等待从模块反馈回来“响应”(Acknowledge)信号后,才开始通信。当然,这就要求主、从模块之间増加两条应答线(握手交互信号线 Handshaking)
异步通信的应答方式又可分为不互锁、半互锁和全互锁三种类型,如图3.18所示。
1)不互锁方式
主模块发出请求信号后,不必等待接到从模块的回答信号,而是经过一段时间,确认从模块已收到请求信号后,便撤销其请求;例如,CPU向主存写信息,CPU要先后给出地址信号、写命令以及写入数据,即采用此种方式。
(2)半互锁方式
主模块发出请求信号,必须待接到从模块的回答信号后再撤销其请求信号,有互锁关系;而从模块在接到请求信号后发出回答信号,但不必等待获知主模块的请求信号已经撤销,而是隔段时间后自动撤销其回答信号,无互锁关系。由于一方存在互锁关系,一方不存在互锁关系,故称半互锁方式。例如,在多机系统中,某个CPU需访问共享存储器(供所有CPU访问的存储器)时,该CPU发出访存命令后,必须收到存储器未被占用的回答信号,才能真正进行访存操作。
3)全互锁方式
主模块发出请求信号,必须待从模块回答后再撤销其请求信号;从模块发出回答信号,必须待获知主模块请求信号已撤销后,再撤销其回答信号。双方存在互锁关系,故称为全互锁方式。
例如,在网络通信中,通信双方采用的就是全互锁方式。
异步通信可用于并行传送或串行传送。异步并行通信可参见图5.6,图“Ready”和“ Strobe”'就是联络信号
异步串行通信时,没有同步时钟,也不需要在数据传送中传送同步信号。为了确认被传送的字符,约定字符格式为:1个起始位(低电平)、5~8个数据位(如ASCll码为7位)、1个奇偶校验位(作检错用)、或1.5或2个终止位(高电平)。
传送时起始位后面紧跟的是要传送字符的最低位,每个字符的结東是一个高电平的终止位。起始位至终止位构成一帧,两帧之间的间隔可以是任意长度的。图3.19是两种数据传输率的异步串行传送格式,其中图3.19(a)两帧之间有空闲位(高电平),而图3.19(b)两帧之间无空闲位,故数据传输率更高。
异步串行通信的数据传送速率用波特率来衡量。波特率是指单位时间内传送二进制数据的位数,单位用bps(位/秒)表示,记作波特。
3.半同步通信
半同步通信既保留了同步通信的基本特点,如所有的地址、命令,数据信号的发出时间,都严格参照系统时钟的某个前沿开始,而接收方都采用系统时钟后沿时刻来进行判断识别;同时又像异步通信那样,允许不同速度的模块和谐地工作。为此增设了一条“等待”(WAIT)响应信号线,采用插人时钟(等待)周期的措施来协调通信双方的配合问题。
仍以输入为例,在同步通信中,主模块在T1发出地址,在T2发出命令,在T3传输数据,在T4结束传输。倘若从模块工作速度较慢,无法在T3时刻提供数据,则必须在T3到来前通知主模块,给出WAIT(低电平)信号。若主模块在T3到来时刻测得WAIT为低电平,就插入一个等待
周期Tw(其宽度与时钟周期一致),不立即从数据线上取数。若主模块在下一个时钟周期到来时刻又测得WAIT为低,就再插入一个Tw等待,这样一个时钟周期、一个时钟周期地等待,直到主模块测得WAIT为高电平时,主模块即把此刻的下一个时钟周期当作正常周期T3,即时获取数据,T4结束传输。
插入等待周期的半同步通信数据输入过程如图3.22所示。由图中可见,半同步通信时序可为以下形式。
T1 ,主模块发出地址信息。
T2,主模块发出命令。从从模块读出数据的命令。
Tw,当WAIT为低电平时,进入等待,Tw的宽度与T的宽度一致。
…
T3,从模块提供数据。
T4,主模块撤销读命令,从模块撤销数椐。
半同步通信适用于系统工作速度不高但又包含了由许多工作速度差异较大的各类设备组成的简单系统。半同步通信控制方式比异步通信简单,在全系统内各模块又在统一的系统时钟控制下同步工作,可靠性较高,同步结构较方便。其缺点是对系统时钟频率不能要求太高,故从整体上来看,系统工作的速度还不是很高。
4.分离式通信
以上三种通信方式都是从主模块发出地址和读写命令开始,直到数据传输结束。在整个传输周期中,系统总线的使用权完全由占有使用权的主模块和由它选中的从模块占据。进一步分析读命令传输周期,发现除了申请总线这一阶段外,其余时主要花费在如下3个方面。
①主模块通过传输总线向从模块发送地址和命令。
②从模块按照命令进行读数据的必要准备。
③从模块经数据总线向主模块提供数据。
由②可见,对系统总线而言,从模块内部读数据过程并无实质性的信息传输,总线纯属空闲等待。为了克服和利用这种消极等待,尤其在大型计算机系统中,总线的负载已处于饱和状态,充分挖掘系统总线每瞬间的潜力,对提高系统性能起到极大作用。为此人们又提出了“分离式”的通信方式,其基本思想是将一个传输周期(或总线周期)分解为两个子周期。在第一个子周期中,主模块A在获得总线使用权后将命令、地址以及其他有关信息,包括该主模块编号(当有多个主模块时,此编号尤为重要)发到系统总线,经总线传输后,由有关的从模块B接收下来。
主模块A向系统总线发布这些信息只占用总线很短的时间,一旦发送完,立即放弃总线使用权以便其他模块使用。在第二个子周期中,当B模块收到A模块发来的有关命令信号后,经选择译码、读取等一系列内部換作,将A模块所需的数据准备好,便由B模块申请总线使用权,一旦获准,B模块便将A模块的编号、B摸块的地址、A模块所需要的数据等一系列信息送到总线上,供A模块接收。很明显,上述两个传输子周期都只有单方向的信息流,每个模块都变成了主模块。
这种通信方式的特点如下
①各模块欲占用总线使用权都必须提出申请。
②在得到总线使用权后,主模块在限定的时间内向对方传送信息,采用同步方式传送,不再等待对方的回答信号。
③各模块在准备数据的过程中都不占用总线,使总线可接受其他模块的请求。
④总线被占用时都在做有效工作,或者通过它发送命令,或者通过它传送数据,不存在空闲等待时间,充分地利用了总线的有效占用,从而实现了总线在多个主、从模块间进行信息交叉重叠并行式传送,这对大型计算机系统是尤为重要的。
当然,这种方式控制比较复杂,一般在普通微型计算机系统很少采用。