总线仲裁器(bus arbiter),也可以叫总线控制器,它是通过判别主设备使用总线的优先级(bus priority)来完成的,即首先把总线分配给优先级最高的主设备使用,以确保在任何时刻只会有一个总线主设备使用总线传输数据。根据总线仲裁器不同的设置位置,可以把总线仲裁区分为集中控制方式和分散控制方式,当总线仲裁器基本集中在一个部件上(例如CPU),这是集中控制方式;当总线仲裁器分散在多个总线部件之上时,是分散控制方式。

  比较常用的仲裁办法是查询方式,例如串行链式查询方式,如图5.13所示。


图5.13 串行链式查询  

  从图上可见,所有设备只使用3条公用的控制线完成总线申请和响应,每个设备都可以向总线控制器经自己的接口向总线控制器送出申请使用总线的请求信号(可能有多个设备同时申请),当总线控制器检测到有总线请求,总线又正处于空闲状态(总线忙信号为低)时,总线控制器会响应总线请求并送出总线可用的回答信号。总线可用的回答信号将依此串行地穿过各设备接口,首先接收到这一回答信号的设备若正在申请总线,它就取得了总线的使用权,首先停止总线可用回答信号的继续传送,并发出总线忙信号,撤除自己的总线申请,并开始数据传输。总线忙信号将维持总线可用信号,直到在总线上这次数据传输完成,由设备撤消总线忙信号,总线可用信号也随之消失。当首先接收到这一回答信号的设备没有申请总线,它就把这一信号传递给下一个设备,直到遇到一个正在申请总线的设备。

  这一方案的特点是使用的控制线数目少(3条),使用总线的优先级由设备的位置决定,距离总线控制器越近的设备优先级越高,结构简单,易于扩展接通设备的数目,在很多系列的计算机中得到广泛应用。它的缺点是优先级固定,难于改变,查询是建立在链式线路之上,该链路故障将严重损害系统运行质量。

  其他可用的还有计数器定时查询方式,独立申请方式,有较好配置优先级的灵活性和更好的响应速度,但他们的结构要复杂些,要使用更多的控制线。