计组_Ⅲ 系统总线①
总线的基本概念#
1. 为什么要用总线#
早期计算机外部设备少时多采用分散连接方式,不易实现随时增减外部设备。为了更好的解决I/O设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接
2. 什么是总线(BUS)#
- 总线是连接各部件的信息传输线
- 是各个部件共享的传输介质
- 总线是信号的公共传输线
3. 总线上的信息传输#
串行:数据在单条1位宽的传输线上,一位一位地按顺序分时传送。#
【发送方一位一位的将信息放在总线上,接收方一位一位的从总线上接收数据】
并行:数据在多条并行1位宽的传输线上,同时由源传送到目的地。#
【传输距离比较长会导致线与线之间产生干扰干扰,使信号变形,故长距离传输还是使用串行通信方式】
【在高速状态下,并行口的几根数据线之间存在串扰,而并行口需要信号同时发送同时接收,任何一根数据线的延迟都会引起问题。而串行只有一根数据线,不存在信号线之间的串扰,而且串行还可以采用低压差分信号,可以大大提高它的抗干扰性,所以可以实现更高的传输速率,尽管并行可以一次传多个数据位,但是时钟远远低于串行,所以目前串行传输是高速传输的首选。】
4. 总线基本结构#
单总线结构:#
【会发生总线的争用,当某个设备使用总线的时候会导致CPU停止工作】
面向CPU的双总线结构:#
【I/O总线连接各个外部设备,M总线(专用总线)连接主存,但是主存和外部设备无法直接通信,当外部设备需要和主存通信时,还是会占用中央处理器资源】
以存储器为中心的双总线结构:#
【仍是以分时操作为基础,较上面两类已有进步】
总线的分类#
【根据总线所在位置进行分类】
1. 片内总线:#
芯片内部的总线
2. 系统总线:#
计算机各部件之间的信息传输线
- 数据总线-双向-与机器字长、存储字长有关【通常情况下是小于等于机器字长的】
- 地址总线-单向-与存储地址、I/O地址有关
- 控制总线-有出(中断请求、总线请求)、有入(存储器读/写、总线允许、中断确认)
3. 通信总线:#
用于计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信)之间的通信。
总线传输方式:串行、并行。
总线特性及性能指标#
1. 总线的物理实现#
2. 总线特性#
机械特性#
尺寸、性状、管脚数、排列顺序等
电气特性#
传输方向和有效的电平范围
功能特性#
每根传输线的功能不同(地址、数据、控制...)
时间特性#
信号的时序关系
3.总线性能指标#
指标 | 内容 |
---|---|
总线宽度 | 数据线的根数 |
标准传输率 | 每秒传输的最大字节数(MBps) |
时钟同步/异步 | 同步、不同步 |
总线复用 | 地址线与数据线复用 |
信号线数 | 地址线、数据线和控制线的总和 |
总线控制方式 | 突发、自动、仲裁、逻辑、计数 |
其他指标 | 负载能力 |
4.总线标准#
【以ISA为例,数据线宽度是16位,时钟信号是8MHz,意思是每秒可以传输8M次,每次传输16个信息,带宽就是16Mbps】
【总线带宽计算公式:总线带宽 = (总线位宽/8) * 总线频率,其中,由于总线速度是以bit为单位的,但是总线带宽为字节单位的(1 Byte = 8 bit),因此需要除于8 】
总线结构#
单总线结构#
【总线成为系统的瓶颈】
多总线结构#
1. 双总线结构#
【通道的程序通常情况下是操作系统编写的,并不是人工编写_?】
2. 三总线结构#
【DMA-直接存储器访问】
【可以连接多个高速外设,都是可以连接在DMA总线上】
3. 三总线结构的另一形式#
【内存具有储存延迟,内存的存储速度是一个瓶颈,为了解决这个问题,在CPU和主存之间增加了一个高速的小容量的cache,对主存数据进行缓存,CPU运行的时候需要的指令和数据主要是从cache中进行获取】
【较好的布线方式,但扩展总线上的设备数量也会影响外部设备的工作速度的】
4. 四总线结构#
【高速设备连接到高速总线上,低速设备连接到扩展总线上,通过分类使数据传输的效率更高】
总线结构举例#
1. 传统微型机总线结构#
2. VL-BUS局部总线结构#
3. PCI总线结构#
4. 多层PCI总线结构#
总线控制#
总线判优控制#
【总线在同一时刻只能有一对设备进行使用】
【这对设备使用总线的时候如何完成通信过程、保证通信的正确性?——总线的通信控制】
1. 基本概念#
(根据是否能提出总线请求)
- 主设备(模块):对总线有控制权【可以控制通信过程】
- 从设备(模块):响应主设备发来的总线命令
- 总线判优控制:
集中式:
链式查询
计数器定时查询
独立请求方式
分布式
2. 链式查询方式#
【数据线用于数据的传输,地址线用于从设备的查询】
【BR-总线请求,BS-总线忙信号线,BG-总线授权线】
【通过BG这条线逐个向下进行查询,直到碰到第一个提出总线占用请求的接口1,接口1就获得了总线的使用权,然后通过BS这条线设置总线忙的状态】
【特征:结构简单,增删设备简单,各个设备的优先级和连接方式有关,离得越近优先级越高。对电路故障敏感,特别是BG线,如果BG在某一节点故障,那么后面的设备就无法再使用总线了,可以通过增加BG线的方式增加可靠性】
3. 计数器定时查询方式#
【在总线控制部件接收到总线占用请求后,如果处于允许占用状态,则计数器开始工作】
【设备地址线:这条线上的地址是由计数器给出的,通过这个地址来查询某个设备是否发出总线占用请求】
【优点:优先级次序确定很灵活(从0~n或者从上一次停止的地方开始)】
4. 独立请求方式#
【任何一个IO 接口都有BR和BG线,排队器使优先级次序更加灵活】
总线通信控制#
【主设备和从设备之间的信息交换】
目的#
解决通信双方协调配合问题
总线传输周期#
【主设备和从设备之间完成一次完整且可靠的通信需要的时间】
- 申请和分配阶段:主模块申请,总线仲裁决定
- 寻址阶段:主模块向从模块给出地址和命令
- 传数阶段:主模块和从模块交换数据
- 结束阶段:主模块撤销有关信息
总线通信的四种方式#
- 同步通信
- 异步通信
- 半同步通信
- 分离式通信
同步通信:由统一时标控制数据传送
【在固定的时间点上要给出固定的操作】
【所有的从模块都用同一个时标进行控制,要在同一个时标下完成相应操作,主从模块是强制同步的,对多个速度不同的模块,必须要选择速度最慢的那一个模块作为统一的时标】
【同步通信通常应用在通信长度比较短,并且各个模块存取时间比较一致的情况下,这是因为,同步方式对任何两个设备之间的通信都给予同样的时间安排。就总线长度来讲,必须按距离最长的两个设备的传输延迟来设计公共时钟。但是总线长了势必降低传输频率。】
同步式数据输入:
同步式数据输出:
异步通信:采用应答方式,没有公共时钟标准
【不互锁】 【半互锁】 【全互锁】
半同步通信:同步、异步结合
同步
发送方用系统时钟前沿发信号
接收方用系统时钟后沿判断、识别异步
允许不同速度的模块和谐工作
增加一条等待响应信号 \(\overline{WAIT}\)
以输入数据位例的半同步通信时序
\({T}_1\) 主模块发地址
\({T}_2\) 主模块发命令
\({T}_w\) 当\(\overline{WAIT}\)为低电平时,等待一个 \(T\)
...
\({T}_3\) 从模块提供数据
\({T}_4\) 从模块撤销数据,主模块撤销命令
上述三种通信的共同点
一个总线传输周期(以输入数据为例)
- 主模块发地址、命令 —— 占用总线
- 从模块准备数据 —— 不占用总线 总线空闲
- 从模块向主模块发数据 —— 占用总线
分离式通信:充分挖掘系统总线每个瞬间的潜力
一个总线的传输周期
子周期1
:
主模块申请占用总线(发送地址和命令),使用完后即放弃总线的使用权
子周期2
:
从模块申请占用总线(发数据),将各种信息送至总线上
分离式通信的特点(充分提高了总线的有效占用)
- 各模块有权申请占用总线
- 采用同步方式通信,不等对方回答
- 各模块准备数据时,不占用总线
- 总线被占用时,无空闲
作者:tranErmu
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!