计算机总线被设计成由多个部件或设备共享,为了正确实现这些设备或部件之间的通信,就必须有一个总线控制机构来进行总线使用权的分配与管理,这就是总线仲裁技术。在总线控制机构中,设置有总线判优和仲裁控制逻辑,也就是说按照一定的优先次序来决定部件的总线使用权,只有获得总线使用权的部件才能传输数据。总线判优有集中式和分布式控制两种。
一、集中仲裁方式进一步被划分链式查询、计数器定时查询,以及独立请求三种。
1、链式查询方式。在链式查询方式中,总线控制器使用3根控制线与所有部件和设备相连,每根控制线传输一个控制信号。这三个控制信号分别是:总线请求(BR),当该线有效时,表示至少一个部件或设备要求使用总线;总线忙(BS):当该线有效时,表示总线正在被某部件或设备使用;最后一个是总线批准(BG):该线有效时,表示总线控制器响应总线请求。在计算机系统中,链式查询的执行过程是这样的:首先,需要发送数据的部件通过BR线发出总线请求,仅当BS线空闲时,BR才能够被总线控制器响应,并送出BG回答信号;BG信号依次经过每个部件,如果部件没有发出请求,则将该信号传给下一个部件,如果部件发出了请求,则获得了总线使用权,并停止传送BG信号;随后BS信号被置为有效,表示总线被占用,同时撤销BR信号,然后进行数据传送。完成数据传输后,BS和BG信号将先后被撤销。
2、计数器定时查询方式。在这种方式中,BR线由部件共享,总线上每个部件通过公共的BR线发出请求,总线控制器收到请求后,检查BS信号。当BS=0时,此时表明总线空闲,计数器开始计数,定时查询各部件以确定发出请求的部件;当查询线上的计数值与部件号一致时,该部件就将BS置为1,从而获得了总线使用权,同时终止计数查询过程。当部件完成数据传送后,将撤销BS信号。注意,计数器定时查询方式的计数可以从0开始,也可以从中止点开始;如果从0开始,部件的优先次序和链式查询方式相同;如果从中止点开始,则为循环优先级,各部件使用总线的机会是均等的。
3、独立请求方式。它指的是每个共享总线的部件都有一对控制线:总线请求BR和总线批准BG。每个部件都可以独立发出自己的总线请求信号,然后由总线控制机构根据部件的优先级来决定使用总线的次序。这种方式的优点是响应时间快,但是增加了控制线数和硬件电路复杂性。
二、分布式仲裁方式:
分布式仲裁指的是总线控制逻辑分散在连接于总线上的部件或设备中。主设备可以启动一个总线周期,从设备只能响应主设备的请求。每次总线操作,只可能有一个主设备,但是可以有多个从设备。但是,我们也会遇到多个主设备同时提出占用总线请求的情况,这时候一般采用优先级、冲突检测或公平策略等方法进行仲裁。冲突检测的方法一般用在网络通信总线仲裁上,它的基本原理是“谈前先听,冲突重发”。
通过上面的学习,我们了解到总线仲裁主要用于管理总线使用情况,但是当主机与外设进行信息交换时,必然存在时间上的配合和动作协调的问题,因此,需要对总线实施定时控制,总线的定时控制方式一般分为同步方式和异步方式。同步定时方式指的是系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。在这种方式中,时钟产生相等的时间间隔,每个间隔构成一个总线周期,一个总线周期内可进行一次数据传送。不过由于时钟频率必须要适应总线上具有最长延迟和最慢接口发送数据的需要,容易产生短板效应,因此,同步的方式效率较低。
由于同步方式的效率低下的问题,计算机系统又设计了异步定时方式。异步定时方式,又称为应答方式。在这种方式下,不需要公用的时钟,也没有固定的时间间隔,数据传输的定时控制由数据传送双方的“握手”信号实现。异步定时方式的工作流程是这样的:首先主设备,也就是需要发送信息的设备,提出“请求”信号,该信号经接口传送到从设备;从设备收到申请后,通过接口发出“回答”信号,握手过程就在一问一答过程中完成。值得指出的是,请求和回答的时间由问答过程中的实际执行时间决定,这个时间与 CPU的节拍无关。因而这种定时方式提供了很强的灵活性,能够提高计算机系统的工作效率。虽然异步定时方式能够保证两个工作速度相差很大的部件或设备能够可靠地进行信息交换,但是需要复杂的控制电路配合,成本较高。
在异步定时方式中,请求和回答信号都具有一定的时间宽度,根据请求和回答信号是否互锁的关系,异步方式又分为三种情况。不互锁的情况,指的是请求和回答信号的结束不互锁,也就是说两个信号的结束时间是没有关联的;半互锁情况:在这种情况下,“请求”信号的撤销取决于“回答”信号,就是说,收到回答信号后才撤销请求信号,而“回答”信号由从设备自行决定何时撤销;最后一种是全互锁情况,指的是请求信号在收到回答信号后才会撤销,而回答信号在请求信号撤销后才能够撤销。
总线标准:
总线标准分为正式标准和事实标准。正式标准由国际标准化组织颁布。而事实标准是由行业内具有影响力的企业、公司、制造商提出,并被业界广泛接受的标准。在系统总线标准方面,常见的有ISA总线、PCI局部总线,AGP(图形加速端口)、PCI-E等等总线形式。在外部总线方面,常见的有串口、并口、USB接口、IEEE 1394接口、eSATA接口等等形式。关于总线标准更加详细的信息,请课后自行参阅相关资料与书籍。