Alex_McAvoy

想要成为渔夫的猎手

总线仲裁

【总线仲裁】

为解决多个主设备同时竞争总线控制权的问题,应当采用总线仲裁部件,以某种方式选择一个主设备优先获得总线控制权。只有获得了总线控制权的设备,才能开始数据传送

总线仲裁方式按其仲裁控制机构的设置可分为以下两种:

  • 集中仲裁方式:总线控制逻辑基本上集中于一个设备(如 CPU)中,将所有的总线请求集中起来,利用一个特定的裁决算法进行裁决
  • 分布仲裁方式:无中央仲裁器,每个潜在的主模块都有自己的仲裁号和仲裁器,当有总线请求时,通过仲裁号的优先级比较进行仲裁

【集中仲裁方式】

链式查询方式

总线上所有的部件共用一根总线请求线,当有部件请求使用总线时,需经此线发总线请求信号到总线控制器

由总线控制器检查总线是否忙,若总线不忙,则立即发总线响应信号,经总线响应线 $BG$ 串行地从一个部件传送到下一个部件,依次查询

若响应信号到达的部件无总线请求,则该信号立即传送到下一个部件,若响应信号到达的部件有总线请求,则信号被截住,不再传下去

在链式查询中离总线控制器越近的部件,其优先级越高;离总线控制器越远的部件,其优先级越低

链式查询方式优先级固定,此外,只需很少几根控制线就能按一定优先次序实现总线控制,结构简单,扩充容易,但对硬件电路的故障敏感,并且优先级不能改变,当优先级高的部件频繁请求使用总线时,会使优先级较低的部件长期不能使用总线

计数器定时查询方式

计数器定时查询方式采用一个计数器控制总线使用权,相对链式查询方式多了一组设备地址线,少了一根总线响应线 $BG$,但仍共用一根总线请求线

当总线控制器收到总线请求信号,判断总线空闲时,计数器开始计数,计数值通过设备地址线发向各个部件。当地址线上的计数值与请求使用总线设备的地址一致时,该设备获得总线控制权,同时,中止计数器的计数及查询

需要注意的是,计数可以从 $0$ 开始,此时一旦设备的优先次序被固定,设备的优先级就按 $0,1,…,n$ 的顺序降序排列,而且固定不变;计数也可以从上一次的终点开始,即是一种循环方法,此时设备使用总线的优先级相等;计数器的初值还可以由程序设置,故优先次序可以改变

该方式对电路的故障没有链式查询方式敏感,但增加了控制线数,控制也比相对链式查询相对复杂

独立请求方式

每一个设备均有一对总线请求线 $BR_i$ 和总线允许线 $BG_i$,当总线上的部件需要使用总线时,经各自的总线请求线发送总线请求信号,在总线控制器中排队,当总线控制器按一定的优先次序决定批准某个部件的请求时,则给该部件发送总线响应信号,该部件接到此信号就获得了总线使用权,开始传送数据

该方式响应速度快,总线允许信号 $BG$ 直接从控制器发送到有关设备,不必在设备间传递或者查询,而且对优先次序的控制相当灵活,但控制线数量多,总线控制逻辑更复杂

【分布仲裁方式】

分布仲裁方式不需要中央仲裁器,每个潜在的主模块都有自己的仲裁号和仲裁器

当它们有总线请求时,把它们各自唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较

如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号

最后,获胜者的仲裁号保留在仲裁总线上

感谢您对我的支持,让我继续努力分享有用的技术与知识点!