为什么要进行总线仲裁?集中式总线仲裁有哪几种仲裁方法?请说明每一种仲裁方法是怎样进行仲裁的,并比较它们的优缺点。
为了解决多个主设备同时竞争总线控制权,必须具有总线仲裁部件,以某种方式选择其中一个主设备作为总线的下一次主方。对多个主设备提出的占用总线请求,一般采用优先级或公平策略进行仲裁。 按照总线仲裁电路的位置不同,仲裁方式分为集中式仲裁和分布式仲裁两类。
1. 集中式仲裁
集中式仲裁中每个功能模块有两条线连到***仲裁器:一条是送往仲裁器的总线请求信号线 BR ,一条是仲裁器送出的总线授权信号线 BG 。
(1) 链式查询方式
链式查询方式的主要特点:总线授权信号 BG 串行地从一个 I/O 接口传送到下一个 I/O 接口。假如 BG 到达的接口无总线请求,则继续往下查询;假如 BG 到达的接口有总线请求, BG 信号便不再往下查询,该 I/O 接口获得了总线控制权。离***仲裁器最近的设备具有最高优先级,通过接口的优先级排队电路来实现。
链式查询方式的优点 : 只用很少几根线就能按一定优先次序实现总线仲裁,很容易扩充设备。
链式查询方式的缺点 : 对询问链的电路故障很敏感,如果第 i 个设备的接口中有关链的电路有故障,那么第 i 个以后的设备都不能进行工作。查询链的优先级是固定的,如果优先级高的设备出现频繁的请求时,优先级较低的设备可能长期不能使用总线。
(2) 计数器定时查询方式
总线上的任一设备要求使用总线时,通过 BR 线发出总线请求。***仲裁器接到请求信号以后,在 BS 线为“ 0 ”的情况下让计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址相一致时,该设备 置“ 1 ” BS 线,获得了总线使用权,此时中止计数查询。
每次计数可以从“ 0 ”开始,也可以从中止点开始。如果从“ 0 ”开始,各设备的优先次序与链式查询法相同,优先级的顺序是固定的。如果从中止点开始,则每个设备使用总线的优先级相等。
计数器的初值也可用程序来设置,这可以方便地改变优先次序,但这种灵活性是以增加线数为代价的。
(3) 独立请求方式
每一个共享总线的设备均有一对总线请求线 BRi 和总线授权线 BGi 。当设备要求使用总线时,便发出该设备的请求信号。***仲裁器中的排队电路决定首先响应哪个设备的请求,给设备以授权信号 BGi 。
独立请求方式的优点:响应时间快,确定优先响应的设备所花费的时间少,用不着一个设备接一个设备地查询。其次,对优先次序的控制相当灵活,可以预先固定也可以通过程序来改变优先次序;还可以用屏蔽 ( 禁止 ) 某个请求的办法,不响应来自无效设备的请求。