1、第3章 存储、中断、总线与I/O系统,3.1 存储系统的基本要求和并行主存系统 3.2 中断系统 3.3 总线系统 3.4 输入/输出系统,3.1存储系统的基本要求和并行主存系统,3.1.1存储系统的基本要求对存储系统的基本要求是大容量、高速度和低价格。存储器容量SM=Wlm。W为存储体的字长(单位是位或字节),l为存储体的字数,m为并行工作的存储体数。速度可用访问时间TA、存储周期TM和频宽(也称带宽)Bm描述。TA是存储器从接收访存读申请至信息被读到数据总线上的时间,是处理机启动访存后必须等待的时间,它是确定处理机与存储器时间关系的一个重要参数。TM是连续启动一个存储体所需要的间隔时间,它
2、一般总比TA大。存储器频宽Bm是存储器可提供的数据传送速率,用每秒传送的信息位数或字节数衡量,又有最大频宽(或极限频宽)和实际频宽之分。,最大频宽Bm是存储器连续访问时的频宽。单体的Bm=W/TM。m个存储体并行的最大频宽Bm=Wm/TM。由于存储器不一定能满负荷工作,因此,实际频宽往往低于最大频宽。存储器价格包含了存储体及为该存储器操作所必需的外围电路的价格,可用总价格C和每位价格c来表示。有SM位的存储器每位价格c=C/SM。,计算机系统总希望存储器速度能和CPU匹配,使CPU的高速性能得以发挥,容量上能放下所有系统软件及多个用户软件。同时,存储器的价格又只能占整个计算机系统硬件价格中一个
3、较小而合理的比例。然而,存储器价格、速度和容量的要求是互相冲突的。在存储器件一定的条件下,容量越大,因其延迟增大会使速度越低。容量越大,存储器总价格会越大。存储器速度越高,价格也越高。,为满足系统对存储器性能的要求,人们一直在研究如何改进工艺、提高技术、降低成本,生产出价格低廉而速度更快的存储器件。但即使如此也无法做到仅靠采用单一工艺的存储器而同时满足容量、速度和价格的要求。因此,系统中必须使用由多种不同工艺存储器组成的存储器系统(MemorySystem),使所有信息以各种方式分布于不同的存储器上。例如,至少应有主存和辅存。采取事先将不能全部放入主存的大程序分成有重叠的块,确定好这些块在辅存
4、中的位置并装入辅存。然后,根据算题的需要,把当前要用到的块依次调入主存指定的位置中,覆盖或替换掉那些已在主存而现在已不用的段。称这种主存和辅存之间并不能构成完整的整体的系统为存储器系统。,由于主存速度的改进跟不上CPU速度的提高,从20世纪70年代起,在合理的成本下,足够容量的主存其存储周期已比CPU拍宽大了一个数量级。为了弥补CPU与存储器在速度上的差距,一条途径是在组成上引入并行和重叠技术,构成并行主存系统,在保持每位价格基本不变的情况下,使主存的频宽得到较大的提高。然而,在3.1.2节将着重说明单靠采用这种并行主存的方法来提高频宽是有限的,因此从系统上改进,发展第4章要介绍的存储体系(M
5、emoryHierarchy)就是非常必要的了。,3.1.2并行主存系统图3-1是一个字长为W位的单体主存,一次可访问一个存储器字,所以主存最大频宽Bm=W/TM。假设,此存储器字长W与CPU所要访问的字(数据字或指令字,简称CPU字)的字长W相同,则CPU从主存获得信息的速度就为W/TM。我们称这种主存是单体单字存储器。要想提高主存频宽Bm,使之与CPU速度相匹配,在同样的器件条件(即同样的TM)下,只有设法提高存储器的字长W。例如,改用图3-2的方式组成,这样,主存在一个存储周期内就可读出4个CPU字,相当于CPU从主存中获得信息的最大速率提高为原来的4倍,即Bm=W4/TM。我们称这种主
6、存为单体多字存储器。,图3-1单体单字存储器,图3-2单体多字(m=4)存储器,一个大容量的半导体主存往往是由许多容量较小、字长较短的存储器片子组搭而成的,每个存储片子都有其自己的地址译码、读/写驱动等外围电路。因此,可采用图3-3的多体单字交叉访问存储器。,图3-3多体单字(m=4)交叉存储器,CPU字在主存中可按模m交叉编址,根据应用特点,这种交叉又有低位交叉和高位交叉两种,将在7.1.2节多处理机硬件结构中介绍。现以低位交叉为例。其m在单体多字方式中为一个主存字所包含的CPU字数,在多体单字方式中则为分体体数。以多体单字交叉为例,单体容量为l的m个分体,其Mj体的编址模式为mi+j,其中
7、,i=0,1,2,l-1;j=0,1,2,m-1。表3-1列出了图3-3中各分体的编址序列。,表3-1地址的模4低位交叉编址,图3-4 4个分体分时启动的时间关系,主存采用多分体单字方式组成,其器件和总价格不比用单体多字方式组成的多多少,但其实际频宽却可以比较高。这是因为前者只要m个地址不发生分体冲突(即没有发生两个以上地址同属于一个分体),哪怕地址之间不是顺序的,仍可并行读出;而后者要求可并行读出的m个字必须是地址顺序且处于同一主存单元。当然,还可以将多分体并行存取与单体多字相结合,构成多体多字交叉存储器来进一步提高频宽。我们把以上能并行读出多个CPU字的单体多字和多体单字、多体多字的交叉访
8、问主存系统统称为并行主存系统。,可见,提高模m值,是能提高主存系统的最大频宽的,但主存实际频宽并不是随m值增大而线性提高,也就是说其实际效率并不像所希望的那么高。例如,标量计算机主存采用模32低位交叉的实际频宽不到最大频宽的1/3。原因在于以下两点。一是系统效率的问题。对模m交叉,若都是顺序取指,效率是可提高到m倍的。但实际程序中指令不总是顺序执行的,一旦出现转移,效率就会下降。转移的频度越高,并行主存系统效率的下降就越大。而数据的顺序性比指令的差,实际的频宽还可能要低一些。二是在工程实现上由于模m越高,存储器数据总线越长,总线上并联的负载越重,有时还不得不增加门的级数,这些都会使传输延迟增加
9、。现在,通过一个模型来分析并行主存系统的实际频宽。,对有m个独立分体的主存系统,设处理机发出的是一串地址为A1,A2,Aq的访存申请队。在每一个主存周期到来之前,这个申请队被扫描,并截取从队头起的A1,A2,Ak序列作为申请序列。申请序列是在要求访存申请的k个地址中没有两个或两个以上的地址处在同一分体中的最长序列。就是说,申请序列A1Ak不一定是顺序编址,只要它们之间不出现分体冲突。显然,k是随机变量,最大可以为m,但由于会发生分体冲突,往往小于m。截取的这个长度为k的申请序列可以同时访问k个分体,因此,这个系统的效率取决于k的平均值。k越接近于m,效率就会越高。,设P(k)表示申请序列长度为
10、k的概率,其中k=1,2,m。k的平均值用B表示,则,它实际上就是每个主存周期所能访问到的平均字数,正比于主存实际频宽,只差一个常数比值TM/W。P(k)与程序密切相关。如果访存申请队都是指令的话,那么影响最大的是转移概率,它定义为给定指令的下条指令地址为非顺序地址的概率。,指令在程序中一般是顺序执行的,但遇到成功转移,则申请序列中在转移指令之后的,与它在同一存储周期读出的其他顺序单元内容就没用了。而且,即使转向去址与转移指令不产生分体冲突,也由于处理机响应时间来不及,不可能与转移指令安排在同一个存储周期内访存。因此,申请队中如果第一条就是转移指令且转移成功,与第一条指令并行读出的其它m-1条
11、指令就是没用的,相当于k=1,所以P(1)=(1-)0;k=2的概率自然是第一条指令没有转移(其概率为1-),第二条是转移指令且转移成功的情况,所以, P(2)=(1-P(1)=(1-)1;同理,P(3)=(1-P(1)-P(2)=(1-)2。如此类推,P(k)=(1-)k-1,其中1km。如果前m-1条指令均不转移,则不管第m条指令是否转移,k都等于m,故P(m)=(1-)m-1。,这样,经数学归纳法化简可得,它是一个等比级数,因此,图3-5画出m为4、8、16时B与的关系曲线。不难看出,如果转移概率0.3时,m=4,8,16的B差别不大。即此时模m取值再大,对系统效率也不会带来多大的好处。
12、而在0.1时,m值的大小对B的改进会有显著影响。至于数据,由于其顺序性更差,模m值的增大对主存频宽的提高影响程度就更差一些。若机器主要是运行标量运算的程序,一般取m8,很少采用m=16的。但如果是向量处理机,由于数据的顺序性好,加上向量指令的使用大大减少了循环的次数,也就减少了转移概率,因此其m值可以取大些。,图3-5m个分体并行存取的B=f()曲线,3.2 中 断 系 统,3.2.1中断的分类和分级引起中断的各种事件称为中断源。中断源向中断系统发出请求中断的申请,称中断请求。同时可能有多个中断请求,这时中断系统需按事先确定的中断响应优先次序对优先级高的中断请求予以响应。中断响应就是允许其中断
13、CPU现行程序的运行,转去对该请求进行预处理,包括保存好断点及其现场,调出有关处理该中断的中断服务程序,准备运行。这部分工作在多数机器上都用交换新旧程序状态字PSW来实现。为了某种需要,中断系统也可对中断请求进行屏蔽,使之暂时得不到响应。,为处理一个中断请求,要调出相应的中断处理程序。如果中断源数比较少,通过中断系统硬件就可对每个中断源直接形成相应的中断服务程序入口。但对中、大型多用途机器,中断源数多达数十至数百个。如果为每个中断源单独形成入口,不仅硬件实现难,代价大,就是在中断处理上也没有这种必要。因为不少中断源的性质比较接近,可以将它们归成几类。对每一类给定一个中断服务程序入口,再由软件分
14、支转入相应的中断处理部分,这可以大大简化中断处理程序入口地址形成硬件。IBM370系统就将中断分成机器校验、管理程序调用、程序性、外部、输入/输出和重新启动6类。它们的旧PSW和新PSW所在存储单元地址各不相同。每类的具体中断源可由旧PSW中的中断码进一步指明,或由中断期间放于指定内存单元中的附加信息指明。,机器校验中断是告诉程序发生了设备故障。可用64位机器校验中断码指明故障原因和严重性,更为详细的中断原因和故障位置可由机器校验保存区内容提供。这里包含有电源故障、运算电路的误动作、主存出错、通道动作故障、处理器的各种硬件故障等。访管中断是在用户程序需要操作系统介入时,通过执行“访管”指令时发
15、生的,访管原因由“访管”指令中的8位码指明。,程序性中断是包括指令和数据的格式错、程序执行中出现异常(非法指令、目态下使用管态指令、主存访问方式保护、寻址超过主存容量、各种溢出、除数为0、有效位为0等)以及程序的事件记录、监督程序对事件的检测引起的中断等。外部中断来自机器外部,它包括各种定时器中断、外部信号中断及中断键中断。各种定时器中断用以计时、计费、控制等。外部信号中断主要用于与其他机器和系统的联系。中断键则用于操作员对机器的干预。这些外部中断又可再分成两类:一类是若未被响应,则继续保留;另一类是如不响应,则不再保留。,输入/输出中断是CPU与I/O设备及通道联系的工具,在输入/输出操作完
16、成或I/O通道或设备产生故障时发出。程序性、外部、I/O这3类的中断码均为16位。重新启动中断是为操作员或另一台CPU要启动一个程序所用。CPU不能禁止这种中断。,不少计算机还把中断现行进程的事件进一步细分成中断(Interrupt)和异常(Exception)两类,以便根据其不同的特点给予不同的控制和处理。由执行现行指令引起的暂停事件,如运算结果溢出、页面失效等属于异常,一般不能屏蔽,应予立即响应和处理。中断则专指那些与当前进程运行无关的请求暂停的事件,如机器故障中断请求、外设中断请求、定时器中断请求等。中断可以被屏蔽,未被响应的中断源保留在中断字寄存器中,直至屏蔽解除后仍可得到响应和处理。
17、,由于中断源相互独立而随机地发出中断请求,因此常常会同时发生多个中断请求。同一类中的各中断请求的响应和处理的优先次序,一般不是由中断系统的硬件而是由其软件或通道来管理的。而不同类的中断就要根据中断的性质、紧迫性、重要性以及软件处理的方便性把它们分成不同的级别。中断系统按中断源的级别高低来响应。通常优先级最高的中断定为一级,其次是二级,再次是三级,优先级高、低的划分,不同机器有所差异。通常机器校验为第一级,程序性和管理程序调用为第二级,外部为第三级,输入/输出为第四级,重新启动为最低级。,机器校验列为第一级是因为掉电、地址错、数据错、通路错等必须及时处理,否则系统无法正常工作。但对只影响局部的某
18、些故障,优先级可以低一些,例如可将通道或外设的故障放在输入/输出那一级。IBM370把机器校验分成紧急的、可抑制的两种,分属于不同的优先级。程序性中断和管理程序调用一般列为第二级。因为若程序性中断级别低于外部中断和输入/输出中断,那么在同时出现这三类中断时就会先响应外部中断或输入/输出中断,而如果在处理这些中断的管理程序中又出现新的程序性错误,则产生的程序性中断就可能与原先的程序性中断源混在一起。因此,应优先响应程序性中断,然后再响应外部中断和输入/输出中断。这样,不会导致混乱。,外部中断级别高于输入/输出。因为它涉及多机联系、人机干预等控制操作,而输入/输出中断只是某台外设的请求,属于局部性
19、的,而且还可由各通道管理,中断响应晚些也不致丢失信息和带来太大的影响。重新启动中断级别一般最低,因为重新启动的时间并不紧迫,但当CPU处于停止状态时,重新启动就应具有比挂起的输入/输出、外部或可抑制的机器校验中断都要高的优先级。,访管中断是在现行程序中安排一条“访管”指令自愿进入的中断。之所以放在第二级是因为机器在执行“访管”指令时发生了紧急的机器故障和错误,只有先去处理,之后才能根据“访管”指令功能,进入管理程序。“访管”中断不受中断级屏蔽的控制,使各级中断的管理程序中都可用“访管”指令,以嵌套进入相应的管理程序,为系统程序的编制带来方便。,在有的计算机系统中,还有0级中断。当机器因故障重叠
20、发生或无法排除,完全不能正常工作时,由中断系统硬设备发出机器告急。它或者向操作员报警,请求直接干预,或者向其他机器求援,进行机器间的任务切换。这种告急不是真正的中断级,不参加中断级排队,中断后也无法自行恢复。IBM370中断响应的优先次序为:紧急的机器校验、管理程序调用和程序性、可抑制的机器校验、外部、输入/输出、重新启动。,3.2.2中断的响应次序与处理次序中断的响应次序是在同时发生多个不同中断类的中断请求时,中断响应硬件中的排队器所决定的响应次序。然而,中断的处理要由中断处理程序来完成,而中断处理程序在执行前或执行中是可以被中断的。这样,中断处理完的次序(下面简称中断处理次序)就可以不同于
21、中断的响应次序。一般在处理某级中的某个中断请求时,与它同级的或比它低一级的中断请求是不能中断它的处理的。只有比它高一级的中断请求才能中断其处理,等响应和处理完后再继续处理原先的那个中断请求。,中断响应的次序用排队器硬件实现,次序是由高到低固定的。为了能根据需要,由操作系统灵活改变实际的中断处理次序,很多机器都设置了中断级屏蔽位寄存器,以决定某级中断请求能否进入中断响应排队器。只要能进入的,总是让高级别的优先响应。程序状态字中包含有中断级屏蔽位字段。只要操作系统对每一类中断处理程序的现行程序状态字中的中断级屏蔽位设置成不同状态,就可以实现所希望的中断处理次序。图3-6给出了一个中断响应硬件部分的
22、简单示意图,实现上的具体细节在这里不作介绍,现举例说明。,图3-6中断响应硬件部分原理简图,假设系统有4个中断级,相应地每一级中断处理程序的现行PSW中都有4位中断级屏蔽位。如果中断级屏蔽位为“1”,则表示对该级中断开放,允许其进入中断响应排队器;如果中断级屏蔽位为“0”,则对该级中断屏蔽,不让其进入中断响应排队器。那么,要让各级中断处理次序和各级中断响应次序都一样,都是1234,就只需按表3-2设置好各级中断处理程序现行程序状态字中的中断级屏蔽位即可。,表3-2 中断级屏蔽位设置举例,现假定运行用户程序的过程中先后出现了如图3-7中的那些中断请求。执行用户程序时其现行PSW的中断级屏蔽位(放
23、置于中断级屏蔽位寄存器中)均为“1”。当、级中断请求同时到来时,均进入排队器,中断请求排队微命令到来时,优先响应级中断请求(此时去除相应的级中断请求源),中断用户程序的执行,中断断点地址被压入返回地址堆栈,通过交换PSW实现程序切换。将用户程序所用到的关键寄存器、中断码、断点等现状作为旧PSW保存到内存指定单元,再从内存另一指定单元取出对应级中断处理程序的PSW建立起新现场。,图3-7 中断处理次序为1234的例子,由于级中断处理程序的中断级屏蔽位1000被放置到中断级屏蔽位寄存器,尽管级中断请求还在,但被屏蔽掉不予响应,开始执行级中断处理程序。即使级中断处理程序执行过程中又遇到了级中断请求也
24、不予理睬,直到级中断处理程序执行完后,交换PSW,又返回到原被中断前的用户程序。此时,用户程序状态字的中断级屏蔽位全为“1”,使、级中断请求才又同时进入排队器。在优先响应级中断请求并进行处理后又返回到被中断前的用户程序,再响应并处理级中断请求。待处理完后又返回被中断的用户程序继续执行。后来,又发生了级中断请求,在对其响应和处理中又发生了级中断请求。,表3-3中断级屏蔽位设置举例,图3-8中断处理次序为1432的例子,可以看出,此时各级中断处理完的先后顺序变成了1432。所以,只要操作系统根据需要用软的方法,改变各级中断处理程序的中断级屏蔽位状态,就可以改变实际的中断处理(完)的先后顺序。这就是
25、中断系统采用软、硬件结合的好处。中断响应用排队器硬件实现可以加快响应和断点现场的保存,中断处理采用软的技术可以提供很大的灵活性。,3.2.3中断系统的软、硬件功能分配中断系统的功能包括中断请求的保存和清除、优先级的确定、中断断点及现场的保存、对中断请求的分析和处理以及中断返回等。中断系统的软、硬件功能分配实质是中断处理程序软件和中断响应硬件的功能分配。,最初,为了简化硬件、降低成本,中断系统的大部分功能都是由软件完成的,从而中断响应和中断处理的时间都很长。后来,中断响应及其次序由程序查询软件的方法改为用中断响应排队器硬件实现,中断源的分析也由程序查询改为硬件编码,直接或经中断向量表间接形成各中
26、断处理程序的入口地址,进而发展成对每级中断经中断响应硬件形成该级中断程序状态字地址的入口,再把中断源的状况以中断码的形式经旧程序状态字告知中断处理程序。,中断现场包括软件状态(如作业名称和级别,上、下界值,各种软件状态和标志等)和硬件状态(如现行指令地址,条件码等状态信息,各种控制寄存器及通用寄存器内容)。软件状态因为本来就在主存中,同时其数量随操作系统的发展在扩大,所以宜于经中断处理程序保存。硬件状态随机器日益复杂而越来越多,如果都由中断处理程序保存,会延缓转入真正处理该中断请求的时间;也由于有些硬件状态是机器指令访问不到的,若为各种硬件状态都设置专门指令保存,则指令系统太复杂。所以通常采取
27、把分散于CPU各部分的硬件状态组成程序状态字(有的机器则是处理器状态字或换道区),然后由中断响应硬件通过存程序状态字(处理器状态字、换道区)到主存指定单元或区域的方式来保存。,再把新的程序或进程的程序状态字(处理器状态字、换道区)从主存另一指定单元或区域取来传送到有关寄存器中,建立起运行新程序或进程的环境。但是如果硬件状态很多,要让它们全部经中断响应硬件保存,会降低中断响应速度,因此,硬件状态是全部经中断响应硬件保存,还是部分经中断响应硬件保存、部分经中断处理程序保存,要视具体机器的规模和使用场合做不同的选择。,从发出中断请求到进入中断处理程序的中断响应时间是中断系统的重要性能指标,它主要取决
28、于交换PSW的时间,以IBM370为例,PSW为64位,因此交换PSW只需写、读二次访存即可。然而,要经中断响应硬件保存的硬件状态越多,PSW就越长,所需的访存次数和时间就越长,响应速度就会越低。考虑到并不是所有的中断处理都需要保存全部通用寄存器的内容,如果是整个程序,才需保存全部通用寄存器内容,如果是某道程序调用某个管理程序,可能只需部分保存甚至不需要保存通用寄存器的内容。因此,大多数机器的通用寄存组的内容是由中断处理程序按切换需要来软件保存的。这既提高了中断响应的速度,又使系统具有较大的灵活性。当然,如果主存字宽度很宽,一个主存周期可并行访问多个字时,也可以全部由中断响应硬件来保存。,为减
29、少中断处理程序保存通用寄存器内容所耗费的时间,设置通用寄存器组与主存或堆栈之间的成组传送指令是必要的,至少可以减少大量的取指令时间。如果采用类似前述的RISC的寄存器窗口技术,可以使任务切换时就不必切换和保存通用寄存器的内容。以上都是针对所有任务都在同一个处理机上实现的集中式处理机系统而言的。如果发展如第1章提及的功能分布处理系统,则输入/输出不需要中断中央处理机的用户程序运行,可以从根本上简化任务切换所需要的辅助操作。,3.3 总线系统,3.3.1总线的分类总线按在系统中的位置分芯片级(CPU芯片内的总线)、板级(连接插件板内的各个组件,也称局部总线或内部总线)和系统级(系统间或主机与I/O
30、接口或设备之间的总线)等3级。总线就允许信息传送的方向来说,可以有单向传输和双向传输两种。双向传输又有半双向和全双向的不同。半双向可沿相反方向传送,但同时只能向一个方向传送。全双向允许同时向两个方向传送。全双向的速度快,造价高,结构复杂。总线按用法可分专用和非专用两类。,只连接一对物理部件的总线称专用总线,优点是多个部件可以同时收/发信息,不争用总线,系统流量高;通信时不用指明源和目的,控制简单;任何总线的失效只影响连于该总线的两个部件不能直接通信,但它们仍可通过其他部件间接通信,因而系统可靠。专用总线的缺点是总线数多。如果N个部件用双向专用总线在所有可能路径都互连,则需N(N-1)/2组总线
31、。N较大时,总线数将与部件数N成平方倍关系增加,不仅增多了转接头,难以小型化、集成电路化,而且当总线较长时,成本相当高。此外,专用总线的时间利用率低。专用总线不利于系统模块化,增加一个部件要增加许多新的接口和连线。图3-9中,实线是N=4的情况,虚线表示因增加部件E后需要增设的接口和总线。所以,在一般的I/O系统中,专用总线只适用于实现某个设备(部件)仅与另一个设备(部件)的连接。,图3-9所有部件之间用专用总线互连,非专用总线可以被多种功能或多个部件所分时共享,同一时间只有一对部件可使用总线进行通信。例如,低性能微、小型机中使用的单总线,既是主存总线又是I/O总线;高速中、大型系统为解决I/
32、O设备和CPU、主存间传送速率的差距,使用的主存、I/O分开的双总线或多总线;多个远程终端共享主机的系统使用的远距离通信总线;多处理机系统互连用的纵横交叉开关等,都是非专用总线。,非专用总线的优点是:总线数少,造价低;总线接口标准化、模块性强;可扩充能力强,部件的增加不会使电缆、接口和驱动电路激增;易用多重总线来提高总线的带宽和可靠性,使故障弱化。缺点是系统流量小,经常会出现争用总线的情况,使未获得总线使用权的部件不得不等待而降低效率。如果处理不当,总线有可能成为系统速度性能的瓶颈,对单总线结构尤其如此。其次,共享总线失效会导致系统瘫痪,因此,I/O系统适宜用非专用总线。,3.3.2总线的控制
33、方式非专用总线上所挂多个设备或部件如果同时请求使用总线,就得由总线控制机构按某种优先次序裁决,保证只有一个高优先级的申请者首先取得对总线的使用权。总线控制机构基本集中在一起,不论是在连接到总线的一个部件中,还是在单独的硬件中,都称为集中式控制。而总线控制逻辑分散在连到总线的各个部件时,就称为分布式总线控制。这里只讲集中式总线控制。优先次序的确定可以有串行链接、定时查询和独立请求3种不同的方式,也可以是它们的结合。采用何种方式取决于控制线数目、总线分配速度、灵活性、可靠性等因素的综合权衡。,图3-10为集中式串行链接方式。所有部件都经公共的“总线请求”线向总线控制器发出要求使用总线的申请。只有当
34、“总线忙”信号未建立(即总线空闲)时,“总线请求”才被总线控制器响应,送出“总线可用”信号,它串行地通过每个部件。如果某个部件接收到“总线可用”信号,但未发过“总线请求”时,就将该信号继续送往下一个部件;如果该部件接到“总线可用”信号并发出过“总线请求”时,则停止传送“总线可用”信号。该部件建立“总线忙”,并去除其“总线请求”,意即该部件获得了使用总线的权利,之后即可准备数据的传送。在数据传送期间,“总线忙”维护“总线可用”的建立。完成传送后,部件去除“总线忙”信号,“总线可用”随之去除。其后,当“总线请求”再次建立时,就开始新的总线分配过程。,图3-10集中式串行链接,串行链接的优点是:选择
35、算法简单,用于解决总线控制分配的控制线的线数少,只需要3根,且不取决于部件的数量;部件的增减容易,只需简单地把它连到总线上或从总线上去掉即可,可扩充性好;由于逻辑简单,容易通过重复设置提高可靠性。缺点是对“总线可用”线及其有关电路的失效敏感,如果部件i不能正确传送“总线可用”信号,则i之后的所有部件将得不到总线的使用权。由于优先级是线连固定,不能由程序改变,不灵活,如果高优先级的部件频繁要求使用总线,则离总线控制器远的部件就难以得到使用总线的权力。因“总线可用”信号必须顺序脉动地通过各个部件,所以限制了总线的分配速度。同时因受总线长度的限制,故增减或移动部件也受到限制。,图3-11为集中式定时
36、查询方式。总线上的每个部件通过“总线请求”线发出请求,若总线处于空闲,“总线忙”信号未建立,则总线控制器收到请求后,让计数器开始计数,定时查询各部件以确定是谁发的请求。当查询线上的计数值与发出请求的部件号一致时,该部件就建立“总线忙”,使得计数器停止计数,也即控制器中止查询。同时,去除该部件的“总线请求”,让该部件获得总线使用权,准备传送数据,直至该部件完成传送为止,去除“总线忙”。之后,“总线请求”线上仍有新的请求,就开始下一个总线分配过程。如果每次总线分配前将计数器清“0”,查询从“0”开始,部件优先级的排序就类同串行链接的;如果每次总线分配前,计数器不清“0”,从中止点继续查询,则是一种
37、循环优先级,为所有部件提供相同的使用总线机会;如果总线分配前,将计数器置成某个初值,可以指定某个部件为最高优先级;如果总线分配前,将部件号重新设置一下,则可指定各部件为任意所希望的优先级。,图3-11集中式定时查询,定时查询的优点是因计数器初值、部件号均可由程序置定,优先次序可用程序控制,灵活性强;不会因某个部件失效而影响其他部件对总线的使用,可靠性高。缺点是:控制线的线数较多,需2+log2N根;可以共享总线的部件数受限于定时查询线的线数(编址能力),扩展性稍差;控制较为复杂;总线分配的速度取决于计数信号的频率和部件数,不能很高。,图3-12集中式独立请求,共享总线的每个部件各自都有一对“总
38、线请求”和“总线准许”线。当部件请求使用总线时,送“总线请求”信号到总线控制器。只要总线闲着(“总线已被分配”线无信号),总线控制器就可根据某种算法对同时送来的多个请求进行仲裁,以确定哪个部件可使用总线,并立即通过相应的“总线准许”线送回该部件,去除其请求,建立“总线已被分配”,该部件获得总线使用权,总线分配过程结束。直至数据传送完后,部件去除“总线已被分配”,经总线控制器去除“总线准许”,并开始新的总线分配。,独立请求方式的优点是:总线分配速度快,所有部件的总线请求同时送到总线控制器,不用查询;控制器可以使用程序可控的预定方式、自适应方式、循环方式或它们的混合方式灵活确定下一个使用总线的部件
39、;能方便地隔离失效部件的请求。缺点是:控制线数量过大,为控制N个设备必须有2N+1根控制线,而且总线控制器要复杂得多。,3.3.3总线的通信技术1.同步通信部件间的信息传送由定宽、定距的系统时标同步。信息的传送速率高,受总线长度的影响小,时钟在总线上的时滞可能会造成同步误差,时钟线上的干扰信号易引起误同步。为了提高可靠性,希望目的部件对数据是否正确接收能给予回答。一种解决办法是在正常时目的部件不做回答,出错时目的部件在同步时间片过去之后,发回源部件一个出错信号,这样,就不会降低正常时总线的传送速率。但要求源部件必须设置较大容量的缓冲器保留已传送但未经证实和回答过的所有数据,以备重发之用。,2.
40、异步通信由于I/O总线一般是为有不同速度的许多I/O设备所共享,因此宜于采用异步通信。异步通信又分单向控制和请求/回答双向控制两种。通信过程只由源或目的部件之一控制的称为单向源控式或单向目控式,而由源和目的共同控制的称为请求/回答双向控制。图3-13 (a)为异步单向源控式通信。源部件将数据放在“数据”总线上,延迟t1后再在控制总线上发“数据准备”信号,以给目的部件作为接收数据的选通信号用,延迟t1是为了防止“数据准备”信号可能先于“数据”到达目的部件而出错。t2是源部件输出寄存器再装入新的待发数据或是总线重新分配所需的时间。,图3-13异步单向控制通信 (a)源控式;(b)目控式,单向源控式
41、的优点是简单、高速。缺点是:没有来自目的部件指明传送是否有效的回答;不同速度的部件间通信比较困难,部件内需设置缓冲器以缓冲来不及处理的数据;效率低,高速部件难以发挥其效能;要求“数据准备”干扰要小,否则易误认成有效信号。图3-13 (b)为异步单向目控式通信,可以解决传送有效性校验的问题。由目的部件建立“数据请求”来使源部件把数据放在“数据”线上,目的部件发出“数据请求”,经二次传送延迟,即2td后,数据到达目的部件,由其检验数据的有效性。如果有错,目的部件回送“数据出错”代替下一个“数据请求”。显然,总线传送速率随源、目的之间距离的增加而下降,此外,开始时需有辅助操作时间以及目的部件在接收数
42、据后,需再加上错误检验时间才能发出下一个“数据请求”,这些都使传送速率下降。,单向控制的缺点是:不能保证下一数据传送之前让所有数据线和控制线的电平信号恢复成初始状态,从而可能造成错误,为此可采用异步请求/回答式双向控制。双向控制也有主从关系,下面以源为主来介绍。图3-14(a)为非互锁方式。源将数据放在总线上,经t1延迟后发出“数据准备”,目的部件在t1+td1时刻接收数据后经校验未发现出错就发“数据接受”来响应,并返回到源部件,在t1+td1+td2时刻去除原数据,而后再经过t2时间把新的数据放在数据线上。,如果目的部件发现数据有错,则发出“数据出错”代替“数据接受”。这既提供出错控制,也便
43、于实现不同速度的部件之间的通信。其代价是要降低传送速率,因为要经过二次总线延迟,并增加某些控制逻辑。如果总线传输延迟与通信信号脉宽的比值不合适,就可能出现在下一个“数据准备”到达目的端时,上一个“数据接受”仍处于高电平,这样“数据准备”信号会使“数据接受”线一直维持在高电平上(如图3-14(a)“数据接受”线上的虚线所示),从而出错。若使下一个“数据准备”信号只能在上一个“数据接受”信号结束后才发出,就能防止这种出错。图3-14(b)的互锁方式就能保证这点。,图3-14源控式异步双向控制通信 (a)非互锁方式;(b)互锁方式,异步双向互锁方式虽增加了信号沿总线来回传送的次数,使控制硬件变得复杂
44、,但它能适应各种不同速度的I/O设备,保证数据传送的正确性,且有较高的数据传送速率。因为它总是以所接源和目的部件中相对较低的速率来通信,比同步方式总是以所有部件中最低的速率来通信的效率要高,所以I/O总线中最广泛使用的还是异步双向互锁通信方式。,3.3.4数据宽度与总线线数1.数据宽度数据宽度是I/O设备取得I/O总线后所传送数据的总量。它不同于前面讲过的数据通路宽度。数据通路宽度是数据总线的物理宽度,即一个时钟周期所传送的信息量。二次分配总线期间所传送的数据宽度可能要经多个时钟周期分次传送来完成。采用何种数据宽度与总线上各设备的特点、所用总线控制方式和通信技术有关。数据宽度有单字(单字节)、
45、定长块、可变长块、单字加定长块和单字加可变长块等。,单字(单字节)宽度适合于输入机、打印机等低速设备。因为这些设备在每次传送一个字(字节)后的访问等待时间很长,在这段时间里让总线释放出来为别的设备服务,可大大提高总线利用率和系统效率。单字(单字节)宽度不适合面向成块信息传送的磁盘、磁带等快速设备。因为这些设备虽然访问等待的时间也很长,但一旦开始传送,信息速率却较高,若每传送一个字(字节)后就重新分配总线,会显著增多访问等待和辅助操作的次数与开销,降低了设备的等效访问速度,也不能充分利用总线带宽。采用单字(单字节)宽度不用指明传送信息的长度,有利于减少辅助开销。,采用定长块宽度适合于磁盘等高速设
46、备,可以充分利用总线带宽。定长块也不用指明传送信息的长度,简化了控制。同时可按整个信息块进行校验。但由于块的大小固定,当它比要传送的信息块大小小得多时,仍要多次分配总线,而如果大于要传送的信息块时,又会浪费总线的带宽和缓冲器空间,也使得部件不能及时转入别的操作。采用可变长块宽度适合于高优先级的中高速磁带、磁盘等设备,灵活性好,可按设备的特点动态地改变传送块的大小,使之与部件的物理或逻辑信息块大小一致,以有效地利用总线的带宽,也使通信的部件能全速工作。但为此要增大缓冲器空间和增加指明传送信息块大小的辅助开销和控制。,对于挂有速度较低而优先级较高的设备的总线,可以采用单字加定长块传送。这样,定长块
47、的大小就不必选择得过大,信息块超过定长块的部分可用单字处理,从而减少总线带宽、部件的缓冲器空间及部件的可用能力的浪费。当然,若传送的信息块小于定长块的大小,但字数又不少时,设备或总线的利用率会降低。采用单字加可变长块的传送,是一种灵活有效但却又是复杂、开销大的方法。当要求传送单字时比之于只能成块传送的方法可省下原用于成块传送的不少起始辅助操作;而当要求成块传送时,块的大小又能调整到与部件和应用的要求相适应,从而优化了总线的使用。,2.总线的线数总线要有发送/接收电路、传输导线或电缆、转接插头和电源等,其成本比逻辑线路的高很多,而且转接器占去了系统中相当大的物理空间,是系统中可靠性较低的部分。总
48、线的线数越多,则成本越高,干扰越大,可靠性越低,占用的空间也越大,当然,传送速度和流量也越高。此外,总线的长度越长,则成本越高,干扰越大,波形畸变越严重,可靠性越低。为此,总线越长,线数就应减少。数据总线的宽度有位、字节、字或双字等。在满足性能前提下应尽量减少线数。总线线数可通过用线的组合、编码及并/串-串/并转换来减少,但一般会降低总线的流量。,线的组合能减少只按功能和传送方向所需的线数。如性质相似、方向相反且不同时发生的两根单向线可用一根半双向线代替。线的编码是对少数几根功能线进行编码来取代每种功能都用单线完成的多根单功能线。并/串-串/并转换是在总线两端设并/串、串/并转换器,使用较少的
49、线数,经多次分拆移位传送后再在目的端组装成完整的字。串/并的程度取决于系统成本与性能的权衡。极端的一位串行传送的总线只用于远距离通信。,总线的类型、控制方式、通信技术、数据宽度和总线的线数等确定后,总线的申请、使用方式及相应的规范也就确定了。所谓I/O设备或I/O控制器的“接口”,除了接口线编号外,还包括能满足I/O总线要求的申请、使用规范。因此,I/O总线接口的标准化非常重要。总线标准一般包括机械、功能、电气及过程(同步)等4个方面的标准。如Nubus(Texes)、Fastbus、Nanobus(Eocorn计算机)、VME(IEEEP1296)总线、MC68000(IEEEP1014)、Multibus(Intel)、iPSB并行系统总线等,有些已用于构造多处理机。1991年的Futurebus+标准可作为支持64位地址空间和多RISC或下一代多处理机所要达到的吞吐率的真正开放式总线标准,可用于TTL、BTL、CMOS、ECL、GaAs等任何系列的逻辑实现。又如IBMPC上先后发展有ISA(AT)、EISA(32位)、PCI(外围部件互连)的总线标准。,