1. 总线的基本概念
1.1. 为什么要用总线
1.2. 什么是总线
总线:连接各个部件的信息传输线,是各个部件共享的传输介质。
总线只能允许一对设备传输信息,只有当这对设备的信息传输释放后,才能开始下一对设备的信息传输。
1.3. 总线上信息的传送的方式——串行和并行
并行 | 串行 |
---|---|
多条数据线传输 | 单条数据线传输 |
传输距离短。这是因为: 1. 数据线是平行的,线和线之间会产生干扰,所以传输距离长时,传输数据就会发生变形,如果传输数据故障,就需要重新对齐数据再传输。 2. 由于是多个数据同时传输,需要考虑数据的协同性,这就导致了并行传输的频率不能做的很高。 比如可以集中在计算机机箱的内部 | 传输距离长。这是因为: 1. 如果一个数据出错了,只需要重新传一次就好了。 2. 串行总线只有一条链路,就可以把频率做的很高,提高传输速度,速度提高了就能够弥补一次只能传输一个数据的缺陷。 比如可以在机器和机器之间传输。 |
一次可以传n位信号 | 一次可以传1位信号 |
—————— | —————— —————— —————— —————— |
1.4. 总线结构的计算机举例
1.4.1. 单总线结构框图
缺点:
-
总线是信号的公共传输线,在任何时刻只能有一对设备使用。总线就会成为整个系统的瓶颈。
比如:当I/O接口和主存在传输数据时,CPU和主存之间就不能进行数据传输,CPU执行程序的过程就会停止,严重影响CPU的运行效率
-
当总线延伸过长时(比如当I/O设备过),信息传输的时间延迟会加长
1.4.2. 面向CPU的双总线结构框图
缺点:
- 主存与I/O设备之间进行信息传输时,只能以CPU作为连接进行信息传输,这时候一旦发生二者之间的信息传输,CPU的计算任务还是会被打断
1.4.3. 以存储器为中心的双总线结构框图
遗憾的是,当前的技术仍然不能实现:存储总线和系统总线同时进行工作,目前的技术还是分时做的,看将来能不能同时工作,进一步提高系统效率
2. 总线的分类
2.1. 片内总线
芯片内部的总线
2.2. 系统总线
计算机各部件之间的信息传输线
2.3. 通信总线
用于计算机系统之间或计算机系统与其他系统(入控制仪表、移动通信等)之间的通信
3. 总线特性及性能指标
3.1. 总线物理实现
- 总线是印刷到主板上的
- 计算机系统上的其他模块或部件可以通过总线上的接口,连接在主板上
如下图所示:
3.2. 总线特性
-
机械特性:尺寸、形状、管脚数及排列顺序
-
电气特性:信号的传输方向和有效的电平范围
-
功能特性:
-
时间特性:信号的时序关系
3.3. 总线的性能指标
- 总线宽度:数据线的根数
- 标准传输率:每秒传输的最大字节数(MBps)
- 时钟同步/异步:同步、不同步
- 总线复用:地址线与数据线复用
- 目的:减少芯片的管脚数
- 信号线数:地址线、数据线和控制线的总和
- 总线控制方式:突发、自动、仲裁、逻辑、计数
- 其他指标:负载能力
3.4. 总线标准
总线标准:系统与各模块、模块与模块之间的一个互连的标准界面。
只要是按照该标准生产的部件,就可以集成在一起。
如下图所示:
下面的内容了解就行啦:
4. 总线结构
4.1. 单总线结构
4.2. 多总线结构
4.2.1. 双总线结构
4.2.2. 三总线结构
DMA:直接存储器访问(Direct Memory Access)。用于高速外设与主存高速进行信息交换
4.2.3. 三总线结构的又一形式
4.2.4. 四总线结构
高速设备和低速设备进行分类组织:
高速设备接在高速总线上,低速设备接在扩展总线上
4.3. 总线结构举例
4.3.1. 传统微型机总线结构
把系统总线和I/O总线进行了分离
4.3.2. VL-BUS局部总线结构
Vl-BUS是高速总线,连高速设备
高速总线上扩展出来的ISA、EISA是低速总线,连低速设备
4.3.3. PCI总线结构
PCI是高速总线,连高速设备
高速总线上扩展出来的ISA、EISA是低速总线,连低速设备
4.3.4. 多层PCI总线结构
通过桥来扩展出更多的PCI,实现多层PCI结构
5. 总线控制
5.1. 总线判优控制
5.1.1. 基本概念
-
主设备(主模块):对总线有控制权
-
从设备(从模块):响应从主设备发来的总线命令
5.1.2. 链式查询方式
5.1.2.1. 部件解释
部件 | 解释或作用 |
---|---|
总线控制部件 | 集中在一起 |
数据线 | 用于信息交换过程中数据的传输 |
地址线 | 用于从设备的查找。主设备要通过地址线找到从设备 |
BR | 总线请求 |
BS | 总线忙 |
BG | 总线同意 |
5.1.2.2. 总线的判优过程(上图中的蓝线)
- I/O接口通过BR,向总线控制部件提出总线请求(在上图中提出总线请求的是
I/O接口1
和I/O接口n)
- 总线控制部件接收总线请求以后,在可以让出总线使用权的情况下,通过BG逐个向下查询
- 如果
I/O接口0
提出了总线请求,总线控制权交给I/O接口0
- 如果没有提出总线请求,则继续向下查询,直到碰到第一个提出总线请求的接口
- 显然,第一个碰到的是
I/O接口1
- 如果
I/O接口1
通过BS设置“总线忙”,获得总线使用权
注解:
在上面的步骤2中,为什么不直接定位发送总线请求的I/O接口,而要逐个查询呢?
因为所有的设备通过同一条线BR提出的总线请求,所以总线控制部件不知道哪个设备优先权更高,也就不知道该把总线控制权交给哪个设备了
5.1.2.3. 优先级的确定
- 优先权和BG线的查询顺序有直接关系,各个I/O设备占用总线的优先权的先后顺序就是BG线的查询顺序
- 因为这种优先级由连接方式事先确定,所以说,如果有一个I/O设备的优先级很靠后,那么有可能它提出的总线请求一直都不会得到应答
5.1.2.4. 优点和缺点
优点:
-
结构非常简单
-
增删设备非常容易
-
优先级算法非常简单
-
进行可靠性设计比较容易:比如将BS/BG总线这一条线换成两条线,避免一条线断了以后电路无法使用,
缺点:
-
对电路故障非常敏感
-
速度比较慢
这种方式常用于微型计算机、简单的嵌入式系统
5.1.3. 计数器定时查询方式
5.1.3.1. 部件解释
部件 | 解释或作用 |
---|---|
总线控制部件 | 集中在一起 |
数据线 | 用于信息交换过程中数据的传输 |
地址线 | 用于从设备的查找。主设备要通过地址线找到从设备 |
设备地址 | 用来查找某个设备是否发生了总线的占用请求 |
BR | 总线请求 |
BS | 总线忙 |
计数器 | 初值可以为0,计数器的值通过设备地址线向外进行传输 |
5.1.3.2. 总线的判优过程(上图中的蓝线)
- I/O接口通过BR,向总线控制部件提出总线请求(在上图中提出总线请求的是
I/O接口1
和I/O接口n)
- 总线控制部件接收总线请求以后,在可以让出总线使用权的情况下,启动计数器
- 计数器的值通过设备地址线向外传输,比如说,若计数器的值是0,那么就对
I/O接口0
设备进行查询- 如果
I/O接口0
提出了总线请求,I/O接口0
就会响应,通过BS进行应答,总线控制权交给I/O接口0
- 如果它没有提出总线请求,那么计数器就会加1,对下一个设备进行查询
- 如果
5.1.3.3. 优点和优先级的确定
-
优先级确定非常灵活:
计数器的计数 I/O接口的查询次序 每次从0开始到n 从 I/O接口0
到I/O接口n
每次从上一次停止计数的数开始 循环优先级 通过软件设定初值k I/O接口k
的优先级变成了最高,从I/O接口k到
I/O接口n`通过软件对总线控制部件进行设置 更灵活地改变了查询次序
5.1.3.4. 设备地址线的宽度
设备地址线的宽度与设备数有关。
比如有n个设备,用二进制编码,至少有 ⌈ l o g 2 n ⌉ \lceil log_{2}n \rceil ⌈log2n⌉位二进制码,设备地址宽度也就是 ⌈ l o g 2 n ⌉ \lceil log_{2}n \rceil ⌈log2n⌉(上取整)
5.1.4. 独立请求方式
排队器:实现优先级的排队,位于总线控制部件内部。
5.2. 总线通信控制
5.2.1. 目的
解决通信双方协调配合问题
5.2.2. 总线传输周期
概念:指主设备和从设备之间完成一次完整的且可靠的通讯需要的时间
包括下面四个阶段:
5.2.3. 总线通信的四种方式
5.2.3.1. 同步通信
同步式通信的特点:
- 有定宽定距的时钟控制整个数据传输的过程
- 主从模块强制同步,当有速度不同的模块时,选择速度最慢的模块作为统一时标进行设计。
适用范围:
- 总线长度比较短
- 各个模块存取时间比较一致
5.2.3.1.1. 同步式数据输入
这个图在数电中叫做:时序图。
识图的方法就是:简单来说,通过时钟脉冲的高低电平来控制各个功能的开始和结束点
上升沿和下降沿:
- 上升沿就是触发的那一瞬间,就是开关闭合的那一瞬间有效,由零变为一的那一下叫上升沿。
- 反之由一变为零的那一瞬间叫下降沿,正常接通以后没有电平变化不起作用。下降沿是按键松开的那一瞬间才控制输出,如果按下按键一直不松开那就一没有动作。
步骤分析:
-
T1的上升沿,主设备给出地址信号,T1时钟周期内,地址由PC到MAR,读命令由MDR到IR
-
T2的上升沿,IR给出读命令信号,T2时钟周期内,主设备告诉从设备,主设备要从从设备读取数据
-
T3的上升沿,从设备通过数据总线给出数据信号,T3时钟周期内,从从设备读取数据
-
T4的上升沿,数据信号和控制信号撤销
-
T5的下降沿,地址信号撤销
5.2.3.1.2. 同步式数据输出
步骤分析自己进行分析,要亲自动手哦!
5.2.3.2. 异步通信
异步通信和同步通信相比,没有定宽定距的时钟,但是增加了两条线,一条叫请求线:用于主设备发出请求信号,另一条叫应答线:用于从设备对主设备发出的请求进行应答,如下图所示:
异步通信的三种方式一共有三种方式:不互锁、半互锁、全互锁。
5.2.3.2.1. 不互锁
不互锁:主从设备在发送信号无需等待对方确认,当自己认为对方收到信号后便开始发送下一次信号。
发送接收流程如下图:
这个过程中,主设备不论从设备是否接受到了请求信号,都会撤销请求信号,从设备不论主设备是否接受到了应答信号,都会撤销应答信号。
5.2.3.2.2. 半互锁
半互锁:主设备发送请求信号后必须收到从从设备的应答才可以撤销请求信号,存在互锁关系。而从设备发出应答信号后无需等待主设备确认即刻撤销其回答信号,不存在互锁关系。
发送接收流程如下图:
一个有趣的弹幕:
“半互锁不是双向奔赴,容易让主设备一方产生怀疑,让他失去继续发展的动力”
当年这位老哥退出文坛,我是极力反对的
5.2.3.2.3. 全互锁
全互锁:当主设备发送请求信号后必须等待从设备发送应答信号后才能撤销信号,存在互锁关系。当从设备发送应答信号后必须等待主设备确认,当收到确认信号后才能撤销信号,也存在互锁关系。双方都存在互锁关系,故称为全互锁关系。
5.2.3.3. 半同步通信(同步、异步相结合)
既有同步的特征,又有异步的特征
同步的特征:
- 有一个定宽定距的时钟来管理整个通信过程
- 发送方用系统时钟前沿发信号
- 接收方用系统时钟后沿判断、识别
异步的特征:
- 允许不同速度的设备和谐工作
- 增加一条“等待”响应信号:
(WAIT信号由从设备给出)
以输入数据为例的半同步通信时序:
T 1 T_1 T1 主设备发地址
T 2 T_2 T2 主设备发命令
T w T_w Tw 主设备检查WAIT信号,当WAIT为低电平时,等待一个时钟周期 T T T
T w T_w Tw 主设备检查WAIT信号,当WAIT为低电平时,等待一个时钟周期 T T T
。
。
。
(直到WAIT信号变成高电平,说明从设备可以发送数据了,那么进入 T 3 T_3 T3周期,由从设备提供设备)
T 3 T_3 T3 从设备提供数据
T 4 T_4 T4 从设备撤销数据,主设备撤销命令
时序图如下:
上述三种通信的共同点
研究一个总线传输周期(以输入数据为例):
- 主设备发地址、命令 占用总线
- 从设备准备数据 不占用总线 总线空闲
- 从设备向主设备发数据 占用总线
由于第二部分,“从设备准备数据”时,总线是空闲的,我们考虑能不能把这段总线传输的空闲期利用起来,从而提高总线利用率
分离式通信
分离式通信:充分挖掘系统总线每个瞬间的潜力
分离式通信将一个总线的传输周期划分成两个子周期:
上述两个传输子周期只有单方向的信息流,每个设备都成了主设备。
分离式通信的特点:
- 各设备有权申请占用总线
- 采用同步方式通信(定宽定距的时钟来管理信号),不等对方回答
- 各模块准备数据时,不占用总线
- 总线被占用时,无空闲