计组_Ⅲ 系统总线①

计算机组成原理(哈工大刘宏伟)

总线的基本概念#

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
从模块申请占用总线(发数据),将各种信息送至总线上

分离式通信的特点(充分提高了总线的有效占用)
  1. 各模块有权申请占用总线
  2. 采用同步方式通信,不等对方回答
  3. 各模块准备数据时,不占用总线
  4. 总线被占用时,无空闲

作者:tranErmu

出处:https://www.cnblogs.com/tranErmu/p/jz_031.html

posted @   白水二木  阅读(145)  评论(0编辑  收藏  举报
编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu