总线是一组能为多个部件分时共享的公共信息传送线路,主要有分时和共享两个特点。其中,分时指的是同一时刻只允许有一个部件向总线发送信息,共享是指总线上可以挂接多个部件,多个部件之间交换的信息可以通过这组线路分时共享,即某一时刻只能有一个部件向总线发送信息,但是可以有多个部件同时接收信息。简单来说,总线就像是一条单车道,同时只能有一辆车在路上开,如果有好多辆车都想上路就需要进行优先级的排序,一辆车开过去,路边停着的车都可以看见车上的人,即一个部件发消息,其余部件都可以接收消息。
总线上连接的设备,根据对总线是否有控制功能,可以分为主设备和从设备。获得总线控制权的设备称为主设备,被主设备访问的设备称为从设备,从设备只能被动相应来自主设备的各种总线命令。
总线具有四个方面的特性:机械特性、电气特性、功能特性和时间特性。
这部分知识有时会用到总线的促发传输方式,指的是在一个总线周期内传送存储地址连续的多个数据字的总线传输方式。
计算机系统内的总线,按照功能分为三类:
①片内总线:
即芯片内部的总线,比如CPU内部寄存器与寄存器之间、寄存器与ALU之间。
②系统总线:
指的是计算机系统各功能部件之间互相连接的总线。按照传送信息的内容,又分为三类
数据总线:传送各功能部件之间的数据信息,属于双向传输总线,位数与机器字长、存储字长有关
地址总线:用来支出源数据或者目的数据所在的位置,属于单向传输总线,位数与主存地址的空间大小有关
控制总线:传递控制信息,包括CPU送出的控制命令和主存返回CPU的反馈信号
注意区分数据通路和数据总线:各个功能部件通过数据总线连接形成的数据传输路径称为数据通路。数据通路表示的是数据流经的路径,而数据总线是承载的媒介。
③通信总线:
指的是在计算机系统之间或者计算机系统与其他系统之间传送信息的总线。
除了按照功能分类,也可以按照时序控制方式将总线划分为同步总线和异步总线,或者根据数据传输格式划分为并行总线和串行总线。
研究的重点放在系统总线上,系统总线通常分位三类:
①单总线结构
所有的设备都挂在一条总线上,允许IO设备之间或者IO设备与主存直接交换信息,而无需其他中间设备的干扰,单总线并不是只有一根信号线,这里单总线依然可以划分出前面提到的数据、地址和控制总线。
单总线结构是总线中最简单的一种,好处是结构足够简单,成本低而且易于接入新的设备,但是缺点也很明显,总线负载大而且带宽低,多个部件之间争用一条总线,并且不支持并发传送操作。
②双总线结构
双总线结构在单总线结构的基础上,将速度较慢的IO设备拿了出来,单独搞了一条IO总线,通过通道接入主存总线,而速度较快的CPU、主存就可以单独连在主存总线上了,这样做的目的就是为了不让速度慢的IO影响其他需要总线资源的设备。
这样做实现了存储器总线和IO总线的分离,一定程度上提高了速度,但是需要增加通道等新的硬件设备。
③三总线结构
三总线结构则是在双总线结构的基础上再做改进,采用三条独立的总线,增加了直接内存访问总线。主存总线主要是用于CPU和主存之间传递信息,IO总线用于在CPU和各类外设之间通信,直接内存访问总线则用于高速外设和内存之间的信息传送。
这样做的好处是提高了IO的性能,使其能够更快地响应,但是系统的工作效率较低。
衡量总线的性能主要有以下指标,指标之间的关系也是这一节的重点:
①总线的传输周期:指的是进行一次总线操作所需要的时间,总线传输周期一般由多个总线时钟周期组成。
②总线时钟周期:即机器的时钟周期,是计算机内部计时的基本单位,计算机内部完成的操作至少也需要一个时钟周期。
③总线的工作频率:总线上各种操作的频率,实际上指1秒内传送几次数据,根据含义,不难得出总线的工作频率等于总线周期的倒数,总线周期指的是一次操作需要的时间,用1秒除以一次需要的时间,不就是一秒完成的次数,也就是工作频率。由于总线周期一定是整数倍的时钟周期,所以如果一个传输周期包含N个时钟周期,那么工作频率还可以写成时钟频率除以N,其中时钟频率是时钟周期的倒数。
④总线的时钟频率:频率这个量,就是周期的倒数,表示的是单位数间发生的次数,所以时钟频率即时钟周期的倒数,意义上可以理解为一秒内有多少个时钟周期。
⑤总线带宽:又称总线位宽,指的是总线上可以同时传输的数据的位数,一般指数据总线的根数。
⑥总线复用:指一种信号线在不同的时间传输不同的信息,从而使用较少的线传送更多的信息。
⑦信号线数:三种系统总线的根数称为信号线数。
⑧总线带宽:可以理解为总线的数据传输率,即单位时间上总线可以传输数据的位数,一般用每秒传送的信息的字节数来表示。从定义下手,每秒传送的数据数目,结合前面的内容,不难得出总线带宽等于总线的工作频率(每秒传送数据的次数)×总线宽度(每次传送的位数)/8,这样得到的单位为字节每秒,如果是位数每秒的话不需要除以8。
这8种性能指标中,最重要的是总线宽度、总线工作频率和总线宽度,其中总线带宽描述了最高的数据传输率,是衡量总线性能的最重要指标。
总线仲裁主要是为了解决多个主设备争用总线控制权的问题,通过仲裁,选择一个设备获得总线控制权,让其开始传送数据。根据仲裁控制机构设置的位置,可以分为集中仲裁方式和分布仲裁方式。
集中仲裁方式指的是总线控制逻辑基本集中于一个设备中,所有的总线请求集中起来,由这个集中的设备进行统一的管理,集中仲裁方式分为三种:
①链式查询方式:
所有部件共用一根总线请求线,有部件需要使用总线时,就利用这根线发送信号到总线控制器,由总线控制器检查总线忙不忙,不忙的情况下发送总线响应信号,这个信号穿行地从一个部件传到下一个部件,依次向后,如果经过的部件没有需求,就继续向下传递,如果有需求,则将这个信号截胡,自己获得总线的使用权。
不难看出,这种仲裁方式是很不公平的,显然靠近总线控制器的部件优先级更高,更容易获得总线的控制权,离得远的部件在需要控制权时,很容易被前面的部件截胡。所以链式查询方式优先级固定,只需要很少的几根控制线就可以按照一定的优先级实现总线控制,但是对于电路故障很敏感,中间断掉后面的全部完蛋,而且优先级不能改变。
②计数器定时查询方式:
采用一个计数器控制总线使用权,相对于链式查询方式多了一组设备地址线,少了一根总线响应线。其原理是当总线控制器收到请求信号时,如果总线空闲,就将自己的计数器开始计数,将计数器的值向各个地址发送信号,各个地址收到信号后如果收到的数和自己的编号一致,就获得总线控制权,同时计数器中止计数。采用这种方式,实际上是动态化了优先级,计数如果每次都从0开始,那么设备的优先级就是固定的,和链式查询方式相同,如果计数从上一次的终点开始,即采用一种循环方式,那么每个设备获得总线控制权的几率相等,即没有优先一说,还可以由程序来设置,那么优先级是随时可以改变的,程序完全可以根据需求来设置优先级。
这种方式的有点在于优先级的灵活性,而且由于去掉了总线响应线,所以对电路的敏感度也下降了,缺点是增加了控制线的数目,大致需要log2n+2条,而且控制也相对复杂了许多。
③独立请求方式:
最暴力的方法,每个设备都有一对总线请求线和总线允许线,各自的线直接连接到总线控制部件上,当有多个设备争用总线控制权时,在总线控制器中排队,由总线控制器根据一定的次序决定将总线控制权给哪个部件。
这种方式优点是响应速度快,信号直接传达到各设备而不需要在设备之间传递,对优先级的控制也十分灵活,但是缺点是需要很多条的控制线,如果有n个设备,就需要2n+1条线,同时总线的控制逻辑也更加复杂。
分布仲裁方式就简单很多了,每个潜在的主模块都有自己的仲裁号和仲裁器,冲突时会互相比较仲裁号,仲裁号高的维持不变,仲裁号低的自动撤销信号认怂。
总线定时指的是在操作过程中时间配合关系上的控制。
首先,一个总线周期分为四个阶段:
①申请分配阶段:
主模块提出申请,由总线仲裁机构决定将总线使用权给哪一个设备。
②寻址阶段:
获得使用权的主模块通过总线发出本次要到达的从模块的位置。
③传输阶段:
主从模块之间进行信息传递。
④结束阶段:
主模块有关的信息从系统总线上撤除,从而让出总线。
总线定时,主要分为同步和异步两种。
同步定时方式是系统统一采用一个时钟信号来协调收发双方的传送定时关系,时钟产生相等的时间间隔,每个间隔构成一个总线周期,一个周期内进行一次数据传送。由于时钟统一,所以每个部件或者设备收发信息都在固定的传送周期内。这种方式好处是速度快而且控制逻辑简单,缺点是主从设备属于强制性同步,不能及时进行有效校验。因此适合于总线长度较短以及总线连接的设备存取时间差不多的情况。
异步定时方式没有统一的时钟,完全依靠握手信号来实现定时控制。这里完全可以参考计算机网络里面的三次握手。这里根据握手信号的撤销是否互锁,将异步定时方式细分为三种:
这里其实不需要这么复杂,等待确认信号再撤销信号就是锁,根据双方是否有锁,对应出这三种方式。这种异步定时方式,由于总线周期长度可变,所以更加灵活,可以使得工作速度相差很大的设备进行交换,但是控制方式比较复杂,且速度比同步定时方式要慢。
这部分最典型的就是这类计算题,计算的关键在于理解好总线的性能指标中各个定义的真实含义。一个总线周期中并行传送四字节信息,而一个总线周期是两个时钟周期,相当于每个时钟周期传送2字节信息,而时钟频率为10MHZ,相当于每秒执行10M次数据传送,所以每秒传送的数据位10M×2,即带宽为20MB/S。对于赫兹这个单位,直接写成次每秒即可,二者一个意思而且后者更易理解。
根据题意,执行一次主存写,至少要一次传输地址,传输128位,而总线宽度为32位,所以至少要四次数据传送,所以是五次传送,时钟频率为100MHZ,即100M次每秒,所以每次需要10ns,采用突发传输方式,连续传送五次,所以是50ns。
总线的时钟频率为66MHZ,即66M次每秒,一个时钟周期传两次数据,每次是32位,所以每次传送64位,即8字节的数据,所以每秒传送的数据位8字节×66M次,即带宽为528MB/S。上面的三道题不难发现,理解好各个名词的概念,这种计算题就变成了很简单的算术。
单周期处理器每个指令的指令周期都是一个时钟周期,所以CPI为1,D正确。由于CPI为1,所以时钟周期需要考虑执行时间较长的指令,即时钟周期较大,取倒数的时钟频率较小,B正确。控制信号即PC的值,在加载指令的过程中,PC会自动加一来寻找下一条指令的地址,执行时则保持不变,C正确。单周期的CPU会在一个时钟周期内完成所有的工作,既从指令取出,到得到结果,全部在一个时钟之内完成。而单总线结构一个时钟周期内只能传送一类数据,不能并发执行,两个工作模式是矛盾的,所以A错误。
总线宽度为64位,即8B,采用3通道存储器总线,相当于宽度扩大三倍,工作频率为1333MHZ,即1333M次每秒,所以带宽为8×3×1333M≈32GB/S。