计算机组成原理——第六章总线

news2024/11/16 22:36:33

误逐世间乐,颇穷理乱情

文章目录

  • 前言
  • 6.1.1 总线概述
  • 6.1.2 总线的性能指标
  • 6.2 总线仲裁(408不考)
  • 6.3 总线操作和定时


前言

本章在概述部分我们会首先介绍一下总线的基本概念,介绍一下总线的分类以及经典结构,介绍一些性能指标来评价总线的性能如何,第二个部分我们介绍一下仲裁的问题,用来解决多个设备争用总线的问题,当设备之间进行数据交换的时候占用总线的一对设备如何进行数据传输,第四部分我们来介绍一下目前流行的总线标准

6.1.1 总线概述

之前我们提到过数据总线,地址总线,控制总线,一个总线内部可能其中包括多个信号线,所有的硬件部件都可以通过这根总线传递数据,可以并行的发送多个数据,同一时刻只能一个部件发送数据,但可有多个部件接受数据
请添加图片描述
总线的特征
这里传输方向的意思是比如这里CPU通过地址总线指明此次主存要读或者要写的内容,而主存并不给CPU地址,而数据总线确实双向的
有效电平范围:比如我们规定高电平4.8~ 5.0 低电平0~0.5,我们认为只有高低电平落到这样一个范围的时候才是有效的
请添加图片描述
总线的分类
我们可以从多个不同的维度对总线进行分类
按数据传输格式分
串行:每次只能传一位(USB)且抗干扰能力强,也就意味着在长距离传输中数据不容易发生跳变,并且因为只需要一个线,也会节省电路板上的布线空间,虽然我们是串行的发送的 但是我们依然需要转变成并行在发给CPU
并行: 每次可以传多位,当我们把多个信号线并在一起的时候,这些信号线在传递的过程中有可能会造成信息的干扰,导致二进制信息位的跳变,这也就限制了频率不能太高,所有有可能信息传输的速率并没有串行总线来的快
请添加图片描述
按总线功能(连接的部件)进行分类
数据总线:若是数据总线的位数或者说根数若是与机器字长相等的话,CPU可以通过一次的数据读入,就可以直接处理的那么多的数据,若是数据总线和存储字长相等的话,也就意味着每一次的主存读或者写操作 只需要主存进行一次的读或者写就可以
地址总线:当我们的I/O设备与主存选择统一编址的时候,I/O设备也会影响地址总线的数量
控制总线:有的控制心线是CPU 发向其他设备的,有些则是其他的硬件信号发送给CPU 的,所以对于单根的信号线来说信号的传递方向是单向的,对于整个控制总线来说传输方向是双向的
通信总线:网线就是一种
请添加图片描述

系统总线的结构
系统总线的结构分为单总线结构,双总线结构,和三总线结构
单总线结构
第六章主要讲的就是这个细分之后的系统总线的结构
这里所说的系统总线就是包括了数据总线,地址总线,控制总线的一组总线
这里的并发指的是同一时刻只能有两个部件之间进行数据的发送,不可能是多组部件通过总线进行数据的传递
请添加图片描述
双总线结构
通道:我们可以把通道理解为阉割版的CPU,但是这个功能部件是专门来管理各个I/O 设备的,因为通道的处理速度也很快,所以我们将CPU与通道通过快速的主存总线进行相连接,这样可以保证主存总线的性能发挥出来,I/O总线因为下方的I/O设备输入的较慢,这里也可以设计较慢,引入通道是为了缓和CPU与各种I/O设备的速度问题
突发(猝发):CPU指明一个地址之后,如果能从主存之中连续的读出多个数据能提高系统效率
请添加图片描述
三总线结构
DMA总线:磁盘是高速外设,而打印机 键盘就是低速的外设,我们对磁盘的读写是以块为单位的,我们将磁盘与主存之间的数据交换就是通过DMA总线进行,这样的好处是CPU与磁盘机不需要通过慢速的I/O总线进行数据的交互,这样也是为了缓和磁盘与CPU之间的速度关系,I/O总线的速度就慢一些,CPU就可以通过I/O总线与一些慢速的外设进行数据的交互
请添加图片描述
四总线结构
现代计算机更常使用的一种结构
请添加图片描述
本节回顾
请添加图片描述

6.1.2 总线的性能指标

一次总线操作所需的时间(包括申请阶段(这个阶段要做的就是总线仲裁),寻址阶段(主设备通过地址总线把要读或者要写的地址单元送到从设备) 传输阶段,结束阶段(释放总线的使用权))
时钟周期也就是节拍信号,
总线时钟周期和总线周期有可能是一对一,一对多,多对一的关系(如检测到电平信号从高电平变成低电平可以进行一次的总线传输,检测到电信号从低电平到高电平又会传输一次数据,这样一个时钟周期内上升沿和下降沿都进行了一次总线的传输,那也就意味着一个时钟周期内包含了两个总线周期)
最高传输速率:其中可以包含一些校验位,开头标准,结尾标志什么的,并不是都是有效信息
请添加图片描述
请添加图片描述
总线复用的时间成本会更高
请添加图片描述

列题
请添加图片描述
本节回顾
请添加图片描述

6.2 总线仲裁(408不考)

由于总线是一种贡献的设备,同一时间只能提供给一个设备,那么如何解决多个设备争用总线的问题,设备首先会通过控制总线中的某个线路向总线的控制器发出一个请求,请求总线的使用权,当总线的使用权分配给这个设备的时候,这个设备就是主设备,然后使用数据总线和地址总线进行数据的传输,选择与那个设备进行数据传输这是由当前的已经获得总线控制权的设备决定的,集中仲裁方式又可分三种方式:链表查询方式,计数器查询方式,独立请求方式
请添加图片描述
链式仲裁方式
这个总线控制器一般被集成与CPU内部 或者集成与桥接器里面,然后安装一定的优先级顺序,设备通过BR这个信号线上发送要给高电平信号,总线控制部件发出总线允许的信号,当设备收到这个信号的时候就会对总线进行控制,并截断这个BG控制信号向后传,同时往BS总线忙这个信号线上输入一个高电平信号,表示这总线已经被占了,当总线控制部件检测到BS这个信号的时候,就会撤销BG这个信号。会产生饥饿现象,也就是设备优先级高的若是一直请求使用,则低的一直使用不到,并且其中若是有一个设备损坏,信信号可能就无法向后传
用一个故事就是游戏机器的使用就是大儿子玩完才能给二儿子玩,然后是三儿子
请添加图片描述
计数器查询方式
首先这里控制部件里面会加一个计数器,当总线控制部件检测到有部件要使用设备的时候也就是有BR信号的时候,这个计数器会进行计数,会从0开始计数,然后这个设备地址(是有多组线)中传过来的数据就是0,表示它正在询问0号这个设备是不是你要使用
加的这两个控制线就是BS与BR这两个控制线
请添加图片描述
独立请求方式
每个设备与总线控制单元部件间不止有BR还有BG,当接收到多个设备的时候,排队器会决定将控制部件给那个设备,并且所有的信号线都会与总线忙这个信号线进行连接,当设备获得总线控制部件的控制权之后,就会发出一个BS信号,当总线控制部件检测到BS信号就知道已经成功分配,控制部件就会撤销BG这个信号,每一个设备都需要BG,与BR 所以是2n,同时所有的都连接到一个BS线上 ,所以是2n+1条控制线
请添加图片描述
集中仲裁方式小结
请添加图片描述
分布仲裁方式
当有多个设备请求申请总线的时候,每一个设备都将自己的仲裁号发送到一个地方,进行优先级比较,
请添加图片描述

6.3 总线操作和定时

如何使得占用总线的一对设备进行数据传输
请添加图片描述
同步定时方式
相当于有一个马仔一直喊1234 1234 来搞节奏, 对于同步通信来说,我们不会留有时间让主从双方进行检验,所有可靠性较差

请添加图片描述
请添加图片描述

异步定时方式
请添加图片描述
请添加图片描述
请添加图片描述
半同步通信
比起同步方式,半同步方式会加一个WAIT的信号线,首先主设备在T1这个发出一个 地址信号,T2的前沿又会发出一个读命令,若是按照同步定时方式再T2这个节拍再往后的一个节拍,是不是意味着从设备需要准备数据,但是有的从设备速度跟不上这个节奏,此时就会通过这个控制线路给这个总线的控制器一个反馈,让总线的控制器等自己几个节拍,也就是后面的这两个Tw从设备准备数据,到了T3这个时候从设备就把数据发送给主设备,T4这个时候会撤销这个读命令和地址信息,之前所说的同步方式,每一个总线传输周期都是定时的,都是4个总线的时钟周期,但是这种半同步通信,就是增加了一个等待信号,这样就可以动态的调节总线的传输周期中包含的时钟周期数
请添加图片描述

分离式通信
这如下图三个阶段中,第二个阶段是可以优化的,当慢速的从设备在 准备数据的时候,这个时候是不需要使用总线的,但是这个时候主从设备依然占据着使用权,
请添加图片描述
本节回顾
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

部分面试题记录

Spring相关: 1. spring框架中的单例bean是线程安全的嘛? 1.1 bean单例多例配置: bean可以手动设置单例或者多例: Service Scope("singleton") public class UserServicelmpl implements UserService { }singleton:b…

QT学习笔记4

一.UI的使用 ui代码输入: ui->setupUi(this);ui->statusbar->showMessage("作者",3000); 在ui类中调用 二.对话框QDialong 模态对话框:就是会阻塞同一应用程序中其它窗口的输入 非模态对话框:不会堵塞同一应用程序中其…

Python反序列化漏洞及魔术方法详细全解(链构造、自动审计工具bandit)

目录 一、Python序列化反序列化相关函数 二、Python魔术方法 三、魔术方法实例详解 <__reduce__> <__setstate__> <__getstate__> 四、反序列化安全漏洞的产生 五、真题实例 六、CTF-CISCN华北-JWT&反序列化 七、代码审计自动化工具——bandit …

理解unsafe-assume-no-moving-gc包

1. 背景 在之前的《Go与神经网络&#xff1a;张量计算》[1]一文中&#xff0c;不知道大家是否发现了&#xff0c;所有例子代码执行时&#xff0c;前面都加了一个环境变量ASSUME_NO_MOVING_GC_UNSAFE_RISK_IT_WITH&#xff0c;就像下面这样&#xff1a; $ASSUME_NO_MOVING_GC_UN…

单片机--第六章中断系统例子学习

单片机--第六章中断系统例子学习 例6-2 P0口连上8个LED&#xff0c; 13引脚&#xff08;INT0&#xff09;上接了一个按钮&#xff0c;要求每次按钮均能改变LED的亮灭 代码&#xff1a; #include<reg51.h> #define LED P0sbit KEYP3^3; bit flag0;//延时函数 void dela…

Linux学习笔记——网络基础

文章目录 计算机网络发展过程独立模式网络互联局域网LAN广域网WAN 计算机网络协议的概念网络协议协议分层OSI七层模型TCP/IP五层(或四层)模型网络传输基本流程数据包封装和分用各层间通信IP地址MAC地址端口 计算机网络发展过程 独立模式 计算机之间相互独立; 网络互联 多台计…

Docker笔记3 | 在Ubuntu下安装Docker

3 | 在Ubuntu下安装Docker 1 支持环境2 卸载旧的docker3 安装Docker3.1 添加HTTPS 传输的软件包以及 CA 证书3.2 添加软件源的 GPG 密钥3.3 添加 Docker 软件源3.4 安装Docker3.5 自动安装 4 Docker启动和验证是否安装ok4.1 启动Docker4.2 docker 用户组建立4.3 验证docker 1 支…

Shell在日常工作中的应用实践

作者&#xff1a;京东物流 李光新 1 Shell可以帮我们做什么 作为一名测试开发工程师&#xff0c;在与linux服务器交互过程中&#xff0c;大都遇到过以下这些问题&#xff1a; •一次申请多台服务器&#xff0c;多台服务器需要安装相同软件&#xff0c;配置相同的环境&#x…

Redis复制详解

Redis复制&#xff08;replica&#xff09; 前言 redis复制是什么&#xff1f; 就是主从复制&#xff0c;master以写为主&#xff0c;slave以读为主&#xff0c;当master数据发生变化时&#xff0c;自动将新的数据异步同步到其他slave数据库。 redis复制能做什么&#xff1f…

算法篇——字符串大集合(js版)

344.反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 链接&#xff1a;https://leetcode.cn/problems/r…

SWCF QA集锦待查收 (车联网与V2X、自动驾驶、5G毫米波、射频测试、频谱监测与规划等)

感谢大家的观看与支持&#xff01;我们为大家整理了本次发布会中的演讲资料&#xff0c;汇总了直播过程中的热点问题并请讲师进行了详细解答&#xff0c;在此整理分享给大家&#xff01; 演讲Q&A Q&#xff1a;目前5G天线支持最大的MIMO是多少&#xff1f; A&#xff1a;…

为什么会是植物神经紊乱 如何辨别

很多人都认为&#xff0c;疾病一定能通过仪器检查出来&#xff0c;很多时候去医院检查的时候&#xff0c;大多都需要进行各种的仪器检查&#xff0c;但是当仪器都检查不出来的时候&#xff0c;大家就认为没有生病。其实&#xff0c;当出现浑身不适的时候&#xff0c;检查检查不…

LeNet网络简介

1. 背景 主要介绍LeNet网络预测在CIFAR-10图像数据集上的训练及预测。 2. CIFAR-10图像数据集简介 CIFAR-10是一个包含了6W张32*32像素的三通道彩色图像数据集&#xff0c;图像划分为10大类&#xff0c;每个类别包含了6K张图像。其中训练集5W张&#xff0c;测试集1W张。 数…

window环境rabbitMq安装

RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写&#xff0c;即需要先安装部署Erlang环境再安装RabbitMQ环境*需加注意的是&#xff0c;可根据两者版本号的对应表&#xff0c;安装相应版本的Erlang和RabbitMQ。 一、安装准备工具 版本查看地址&#xff1a;Rabbi…

mysql的启动关闭原理和实战、及常见的错误排查

前言 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关系…

日本政府官宣:投资42亿日元,量子计算要上“云”

引《日经新闻》报道&#xff0c;日本政府宣布将投资4.2亿日元&#xff08;约合2.18亿人民币&#xff09;来支持量子计算领域的发展。这笔资金将被用于扩大云计算平台上的共享量子计算能力&#xff0c;为企业提供更加高效的量子计算服务。该计划将由东京大学领导&#xff0c;支持…

【LeetCode: 1187. 使数组严格递增 | 暴力递归=>记忆化搜索=>动态规划 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

STL——list、stack与queue

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c&#xff0b;&#xff0b;阶段>——目标Windows&#xff0c;MySQL&#xff0c;Qt&#xff0c;数据结构与算法&#xff0c;Linux&#xff0c;多线程&…

Springboot 整合 Mybatis

创建SpringBoot项目 首先在IDEA中创建一个SpringBoot项目&#xff0c;注意Java Version 然后Packaging为Jar包形式&#xff0c;Type改为Maven形式。 在上图的下一步中可以选择相关依赖&#xff0c;也可以在项目里面的pom文件中自己添加相关依赖&#xff0c;然后进行import也可…

在外包搞了7年,废了.....

我以自身的经验告诫大家&#xff0c;不要去外包&#xff0c;原因&#xff1a; 无法深入理解项目&#xff1a;由于外包公司通常只负责项目的某一个部分或某一个阶段&#xff0c;软件测试人员无法对整个项目进行深入了解&#xff0c;可能会影响到测试的全面性和准确性。 对测试要…