计算机总线仲裁详解

2023-11-16


总线仲裁


一、关于总线仲裁

总线仲裁来由: 我们按照对总线有无控制功能将总线上所连接的各类设备分为主设备和从设备。

主设备:具有获得总线控制能力的设备。
从设备:被主设备访问的设备,只能响应总线上的各种数据请求,而本身不具备控制总线的能力的设备。

随着技术的发展,多个主设备同时访问总线的情况越来越多,这个时候多个设备就会去争抢总线的使用权,由此引出了总线仲裁。

二、总线仲裁的分类

总线仲裁可以分为两大类:集中仲裁方式和分布仲裁方式。

1.集中仲裁方式

首先来了解一下总线仲裁的流程,方便后面的理解。

总线总裁可以分为三步:

  1. 主设备发出请求信号。
  2. 若同时有多个主设备请求,由总线控制器按照一定的优先级确定哪个设备能够访问总线。
  3. 获得总线控制权的设备开始传输数据

了解了总线仲裁的流程,下面来详细介绍一下集中仲裁的三种方式:

1.链式查询方式

图例:
在这里插入图片描述
这里对图中的三种数据线做一下介绍,后面与此相同:

BG:总线允许,由总线控制设备指定一个主设备获得总线控制权
BR:总线请求,主设备向总线控制器发出控制总线的请求
BS:总线忙,如果此时有一个主设备已经获得了总线的控制权,由该主设备发出总线忙信号告诉总线控制设备我已经获得了总线控制权
	不要再将控制权分给别人。

这里介绍一下具体的工作流程:

  1. 主设备通过BR总线请求线向总线控制设备发出控制总线的请求。
  2. 总线控制设备通过BG线,从距离总线控制设备最近的那个主设备出发,判断是哪个主设备发出了总线控制请求,最后将总线的使用控制权交给给主设备。
  3. 主设备获取到总线控制权后,会通过BS线告知我已经获取了总线的控制权并仍在使用。
  4. 主设备对总线的使用完毕后,会通过BS线发出使用完毕的信号,同时释放总线的控制权,再由总线控制设备赋予其他发出总线控制请求的设备控制权。

链式查询的特点:从图中可以看出,总线控制设备会从设备1依次向后遍历,来确认该设备是否发出了总线控制请求。所以距离总线控制设备越近的设备优先级就会越高。

链式查询方式的优点:只需要很少的几根线就能按照一定的优先级次序实现总线控制,结构简单。

同样的缺点也很明显:对硬件故障反应很敏感,如果某个时刻BG线发生故障,会导致故障点以后的主设备无法在获得总线的控制权。还有,如果优先级较高的设备频繁的使用总线的时候,此时优先级较低的设备就长时间无法使用总线。

2.计数器定时查询方式

在这里插入图片描述
如图:计数器定时查询方式省去了BG线,增加了一组设备地址线,要注意,这里的设备地址线是一组,不是一根。具体数目的多少要根据有多少个设备来决定。

如果有n个设备,就是log2n条(以2为底n的对数),再加上BS、BR。

具体的工作流程与链式查询类似,这里不再赘述。值得注意的是:在总线控制设备内部,有一个计数器的一个装置。是用来计数操作的,总线控制设备每访问一个设备,计数器的数值都会加1。

这样做的好处就是避免了链式查询方式的缺点:计数器的初始可以改变优先级的顺序。如果每次计数都重新从0开始计数,则优先级是固定的,距离总线控制设备越近,优先级就越高;如果每次计数从上次计数的终点开始,那么每个主设备都只能获得一次的总线控制权,优先级相同。同时,由于设备地址线是一组线,对硬件故障反应就没有那么敏感。

3.独立请求方式

在这里插入图片描述
从图中可以看出,每一个设备都有一套自己的设备线。在总线控制设备内部,存在一个排队器,当多个设备请求控制总线时,会由排队器决定他们的优先级顺序。

具体的工作流程还是参照上面两种方式。

从独立请求方式的结构图可以看出,设备可以与总线控制设备直接交互,所以响应速度是很快的,同时对优先级的控制也相对更加灵活。
但是相对的需要的控制线众多,总线的控制逻辑也相对复杂

如果有n个设备,就需要2n条控制线,一根BS线

2.分布仲裁方式

分布式仲裁不需要中央仲裁器,每个潜在的主方功能模块都有自己的仲裁号和仲裁器。当它们有总线请求时,把它们唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。显然,分布式仲裁是以优先级仲裁策略为基础。这里不做详细介绍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机总线仲裁详解 的相关文章

  • do{...} while(0) 用意

    linux内核和其他一些开源的代码中 经常会遇到这样的代码 do while 0 这样的代码一看就不是一个循环 do while表面上在这里一点意义都没有 那么为什么要这么用呢 实际上 do while 0 的作用远大于美化你的代码 查了些
  • 什么事LLVM和Clang?Clang与GCC有什么区别?Clang如何使用?

    这个问题主要讲Xcode编译器的认知 在学习iOS之前有必要学习一下Objective C的编译环境 在了解LLVM和Clang之前 先得了解一下什么是编译器 编译器是一种计算机程序 它将某种编程语言 高级编程语言 写成的源代码转换成另一种
  • java8日期时间相关

    java8时间相关api 一 java8时间相关api出现的原因 二 LocalDate LocalTime LocalDateTime的使用 1 解释 2 学习点 3 代码示例 三 Instant 1 解释 2 学习点 3 代码示例 四
  • 前端基础自查

    目录 h5和css3的认知 data v 03da18b4 http部分 前端HTTP优化 网页有哪些部分 服务器渲染 跨域 栅格式布局 阻止冒泡的方法 jq的认知 移动端的适配 不同尺寸屏幕 适配不同浏览器 大屏适配 设计稿 数组重复去重
  • Unity获取鼠标滚轮信息

    Unity获取鼠标滚轮信息 UGUI获取滚轮信息 Input获取滚轮信息 UGUI获取滚轮信息 UGUI关于鼠标滚轮信息的获取有一个专门的接口IScrollHandler用于接收滚轮事件 继承该事件之后便需要实现函数OnScroll 如下
  • 浏览器的默认样式及去除

    目录 前言 一 reset 二 normalize 总结 前言 通常情况 浏览器都会为元素设置一些默认样式 默认样式的存在会影响到页面的布局 通常情况下编写网页时必须要去除浏览器的默认样式 PC端的页面 一 reset reset css
  • 线程通信基础示例(synchronized 与 Lock + Condition实现线程通信)

    目录 一 synchronized 实现线程通讯 代码示例 二 Lock Condition 实现线程通讯 代码示例 Lock Condition 实现线程通讯的优点 一 synchronized 实现线程通讯 什么是线程通讯 可以将线程分
  • Java基础-学习笔记(一)

    1 IT业务的发展变化 1 大型机 一代 IBM 2 PC Mac 二代 微软 苹果 3 互联网 三代 Google Baidu 4 移动互联网 谷歌 微软 苹果 所谓 移动互联网 移动通信 互联网 马云所属 IT到DT的变化 注 推荐本书
  • SQL Server基础Sql语句复习

    基础至极 1 创建表 create table Course Cno char 4 primary key not null 创建主键 非空 Cname char 40 not null Cpno char 4 Ccredit smalli
  • Python安装教程步骤2:Windows中创建虚拟环境安装Pytorch并在PyCharm中配置虚拟环境

    python安装教程步骤2 windows中Anaconda创建虚拟环境安装pytorch并在pycharm中使用虚拟环境 作者介绍 windows中Anaconda创建虚拟环境安装pytorch 1 添加镜像源 2 创建虚拟环境 3 进入
  • 解决Port 8080 is already in use

    前言 在运行项目的时候报错显示端口号已被占用 如下图 解决方法 第一步 win R打开 输入cmd进入命令窗口 第二步 输入netstat ano回车 找到对应的进程PID为14472 第三步 输入命令tasklist回车 找到对应的进程名
  • Unity Mecanim动画系统 之 解决模型有些动画播放后发生的位置、方向偏转 (根骨骼动画)的问题

    Unity Mecanim动画系统 之 解决模型有些动画播放后发生的位置 方向偏转 根骨骼动画 的问题 目录 Unity Mecanim动画系统 之 解决模型有些动画播放后发生的位置 方向偏转 的问题 一 简单介绍 二 实现原理 三 效果预
  • Python安装教程步骤2:Windows中创建虚拟环境安装Pytorch并在PyCharm中配置虚拟环境

    python安装教程步骤2 windows中Anaconda创建虚拟环境安装pytorch并在pycharm中使用虚拟环境 作者介绍 windows中Anaconda创建虚拟环境安装pytorch 1 添加镜像源 2 创建虚拟环境 3 进入
  • 【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(五)

    整理不易 希望对各位学习软件测试能带来帮助 第四章 自动化测试模型 一个自动化测试框架就是一个集成体系 在这一体系中包含测试功能的函数库 测试数据源 测试对象识别标准 以及种可重用的模块 自动化测试框架在发展的过程中经历了几个阶段 模块驱动
  • 分支算法应用2--快速排序

    快速排序 快速排序就是将一个需要排序的数组A a0 a n 1 顺序排列输出 首先从数组中随便找到一个元素x 然后将小于这个元素x的所有元素放到这个元素左边 将大于这个元素x的所有元素放到这个元素的右边 最后运用递归再对x左边和右边的元素进
  • mysql重命名一个表

    使用rename table rename table table1 altered to table 这里的sql语句会将table1 altered 重命名为table rename语句还可以将表移到另一个数据库中 rename tab
  • Acwing算法基础课知识点

    知识点基础算法 代码模板链接 常用代码模板1 基础算法 排序 二分 高精度 前缀和与差分 双指针算法 位运算 离散化 区间合并 数据结构 代码模板链接 常用代码模板2 数据结构 链表与邻接表 树与图的存储 栈与队列 单调队列 单调栈 kmp
  • JAVA--位运算

    java的位运算 什么是位运算 位运算符就是在二进制的情况下对bit位的运算 在计算机当中 数字都是由二进制构成 由一串0或1构成 一个字节是由八位0或1构成 所以一般情况下都是由八位构成 但是最高位都是符号位0为正数1为负数 比如 8 0
  • 1.1关于数据挖掘

    一 数据挖掘是什么 从技术层面讲 数据挖掘指从大量数据中提取潜在有用的信息和知识的过程 从商业层面讲 数据挖掘是一种对大量业务数据进行抽取 转换 分析和建模处理 并从中提取辅助商业决策的关键数据的商业信息处理技术 二 数据挖掘与传统传统数据
  • 集合框架之Connection(马士兵教育视频教程总结笔记)

    when to use 当不知道程序运行时会需要多少对象 或者需要以更复杂的形式来储存对象时 可以使用java集合框架 e g 假定学员数 接口 4个 Collection List Set Map 1 Collection单值 List

随机推荐

  • unity04 解决导入fbx文件黑模问题

    左上角window gt rendering gt lighting gt new lighting settings gt 勾选auto generating
  • TensorFlow在MNIST中的应用-卷积神经网络CNN

    参考 TensorFlow技术解析与实战 用TensorFlow搭建一个卷积神经网络CNN模型 并用来训练MNIST数据集 coding utf 8 20171115 HelloZEX 卷积神经网络
  • 【软件测试】----自动化测试详解

    自动化测试指软件测试的自动化 在预设状态下运行应用程序或者系统 预设条件包括正常和异常 最后评估运行 结果 将人为驱动的测试行为转化为机器执行的过程 常见的自动化测试工具 QTP selenium Rational Robot jmeter
  • QtDesigner设计中关于PyQt5与pyside2的报错坑

    关注公众号可获取资料分享 0 前言 Qt Designer是使用Qt部件设计和构建图形用户界面 gui 的Qt工具 您可以以 what you see is what you get WYSIWYG 的方式组合和自定义窗口或对话框 并使用不
  • JSON取值(key是中文或者数字)方式详解

    先准备一个json对象用于演示 var json name zhangsan 年龄 23 404 你可能迷路了 使用JS中with关键字 with json console log name 输出 zhangsan console log
  • 基于STM32的智能电子药盒设计

    1 前言 据报告显示中国有2 3亿的60岁以上老人 占全国总人口的六分之一 在老年人中 有65 以上的老年人都是慢性病患者 其中失能和半失能老人将近四千万 并且人口还在以加速度增长 老年人的身体健康成为社会密切关注的问题 大部分的老年人都患
  • JavaScript基本包装类型

    基本包装类型 为了便于操作基本类型值 ECMAScript还提供了3个特殊的引用类型 Boolean Number和String 这些类型与其它引用类型相似 但同时也具有与各自的基本类型相应的特殊行为 实际上 每当读取一个基本类型值的时候
  • ElasticSearch-全文检索-简单使用

    简介 https www elastic co cn what is elasticsearch 全文搜索属于最常见的需求 开源的 Elasticsearch 是目前全文搜索引擎的首选 它可以快速地储存 搜索和分析海量数据 维基百科 Sta
  • 类和对象

    一 类 类描述了一组具有相同属性和行为特征的对象 对象是类的实例 类是一种数据类型 而对象是该类型的变量 在c 语言中 一个类的定义包含数据成员和成员函数两部分内容 数据成员定义该类对象的属性 不同对象的属性值可以不同 成员函数定义了该类对
  • 回归分析及实际案例:预测鲍鱼年龄

    上一篇文章 线性回归 Linear regression 算法 引入 1 线性回归 算法的优点 结果易于理解 计算不复杂 缺点 对非线性数据拟合不好 目标 平方误差和最小 求解 对参数w求导等于0 的回归系数 模型预测 函数说明 标准回归
  • 开发者必备的网站。javascript手册,css手册

    参考手册大全 更多更好的网址请到http www loveboygirl com 在 电脑技术 参考手册 下面 网站开发人员一定喜欢 很多好工具哦 希望大家多多支持 桌面版手册 开源中国 开源中国工具 msdn技术资源库 technet M
  • leptonica依赖的相关库的生成

    leptonica依赖的相关库的生成 写在前面 笔者观摩大量大佬的教程完成的本篇文章 反正我是成功了 电脑Win10 64位 VS2017版本 用到的源码由于试过太多来源 部分已经忘记哪儿来的了 有空我也传份上来 哈哈 至于为此学习过的文章
  • startActivity流程学习

    文章目录 应用完全没有启动过 应用完全没有启动过 launcher从sm 管理java层的ServiceManager 的服务列表里面找到AMS的代理对象AMSProxy 调用AMS向Zygote发出socket请求 从Zygote进程fo
  • vi的复制粘贴命令

    vi编辑器有3种模式 命令模式 输入模式 末行模式 掌握这三种模式十分重要 命令模式 vi启动后默认进入的是命令模式 从这个模式使用命令可以切换到另外两种模式 同时无论在任何模式下只要按一下 Esc 键都可以返回命令模式 在命令模式中输入字
  • SpringBoot多数据源导致mybatis驼峰映射配置失效

    SpringBoot多数据源导致mybatis驼峰映射配置失效 1 正常情况下 直接配置即可生效 比如 开启驼峰映射 开启示例 properties文件中配置 mybatis configuration map underscore to
  • 踩了大坑 : go json.Marshal时,结构体字段需要大写

    go中根据首字母的大小写来确定可以访问的权限 如果首字母大写 作用域则可以被其他的包访问 如果首字母小写 作用域则只能在本包中使用 包括接口 类型 函数和变量等 可以简单的理解成 首字母大写是公有的 首字母小写是私有的 出现问题 需要将js
  • 数据结构——图的两种遍历方法

    遍历定义 从已给的图中某一顶点出发 沿着一些边 访遍图中所有的顶点 且使每个顶点仅被访问一次 就叫做图的遍历 遍历实质 找每个顶点的邻接点的过程 图的特点 图中可能存在回路 且图的任一顶点都可能与其它顶点相通 在访问完某个顶点之后可能会沿着
  • gzip text html,Vue gzip压缩导致js无法解析 Content-Type: text/html(JS内容)(压缩完成是xxx.js.gz)...

    压缩配置 Vue config js 插件compression webpack plugin gzip压缩config plugin compressionPlugin use 代码混淆 new CompressionWebpackPlu
  • 识别操作系统的常用方式

    识别操作系统的方式 一 windows系统对大小写区分不是很明显 判断修改路径大小写后正常windows 报错linux 1 eg 大小写修改之后页面回显正常说明网站系统为windows 2 eg 可以判断该服务器系统为linux 二 通过
  • 计算机总线仲裁详解

    文章目录 总线仲裁 一 关于总线仲裁 二 总线仲裁的分类 1 集中仲裁方式 1 链式查询方式 2 计数器定时查询方式 3 独立请求方式 2 分布仲裁方式 总线仲裁 一 关于总线仲裁 总线仲裁来由 我们按照对总线有无控制功能将总线上所连接的各