[总线仲裁]
总线仲裁是为了解决多个设备争用总线这个问题
\quad
一. 集中仲裁方式
\quad
集中仲裁方式: 就像是霸道总裁来决定谁先获得总线控制权
分布仲裁方式: 商量着谁先获得总线控制权
工作流程:
1.主设备发出请求信号;
2.若多个主设备同时要使用总线,则由总线控制器(一般集成在CPU)的判优、仲裁逻辑按一定的优先等级顺序确定哪个主设备能使用总线;
3.获得总线使用权的主设备开始传送数据。
\quad
1.1 链式查询方式
\quad
首先一个或多个设备接口通过BR向总线控制部件请求使用总线, 这时BG就会传输一个高电平, 设备接口0并不使用总线,接下来就传到设备接口1, 它想要使用总线, 那么设备接口1就会通过BS传递信号表示总线现在被我占用了
而后总线控制部件就撤回BG的高电平
\quad
优点:链式查询方式优先级固定。(可以把重要的设备排在前面)
只需很少几根控制线就能按一定优先次序实现总线控制,结构简单,扩充容易。
\quad
缺点:对硬件电路的故障敏感,并且优先级不能改变。(比如设备0坏了, 设备1之后的就不能获得总线控制权了)
当优先级高的部件频繁请求使用总线时,会使优先级较低的部件长期不能使用总线。
\quad
1.2 计数器查询方式
\quad
设备地址线是多根的, 比如有8个接口就需要3根设备地址线
首先一个或多个设备接口通过BR向总线控制部件请求使用总线, 这时计数器开始计数, 计数器为0的时候,设备地址就去询问接口0要不要使用总线, 接口0不使用总线, 这时计数器变为1, 设备地址询问到接口1, 接口1是要使用总线的
这时接口1就会通过BS向总线控制部件传递总线忙, 而计数器就会中止计数
优点:
1.计数初始值可以改变优先次序
-计数每次从“0”开始,设备的优先级就按顺序排列,固定不变;
-计数从上一次的终点开始,此时设备使用总线的优先级相等;(形成闭环, 就是从0-n, 在从n-0, 所以优先级相等)
-计数器的初值还可以由程序设置
2.对电路的故障没有链式敏感(因为是通过设备地址来访问的)
缺点:
1。增加了控制线数
-若设备有N个,则需
l
o
g
2
N
log_2N
log2?N+2条控制线(这里的2就是BS和BR)
2。控制相对比链式查询相对复杂
\quad
1.3 独立请求方式
\quad
每个设备接口都有独立的总线请求BR和总线允许BG, 比如设备接口1和设备接口n同时向总线控制部件发送总线请求, 这时总线控制里的排队器就会给这两个设备排队, 比如设备接口n排在前面, 那么总线控制部件就会向设备接口n发送总线允许, 接口n也会通过BS发送设备忙
优点:
1.响应速度快,总线允许信号BG直接从控制器发送到有关设备,不必在设备间传递或者查询。
2.对优先次序的控制相当灵活。
缺点:
1.控制线数量多
-若设备有n个,则需要2n+1条控制线。
其中+1为BS线,用于设备向总线控制部件反馈已经是否正在使用总线。
2.总线的控制逻辑更加复杂
\quad
\quad
\quad
二. 分布式仲裁方式
\quad
\quad
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!