第3章 系统总线
3.1 总线的基本概念
一、为什么要用总线?
如果采用分散连接的方式,那么当设备很多的时候,每两个设备都得两两相连,这个时候就会需要2^n的线,这就导致成本高,结构复杂,管理困难,并且每两个设备间都需要设计一个接口,不利于扩展
二、什么是总线?
总线(bus)是连接各个部件的信息传输线,是各个部件共享的传输介质。
注意:同一个时间,只能有一对设备使用总线
三、总线上信息的传送
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
- 串行:串行就是一次只传输一个字节
- 并行:并行就是一次有多个字节同时传输(并行多条数据总线,会产生干扰,故传输距离较短)
四、总线结构的计算机举例
1.单总线结构框图
就是将每个设备简单粗暴地接到总线上,这样就可以很简单的两两相连,但同样也产生了一个问题!!!
由于同一个时间,只能有一对设备使用总线,所以同时只能接入一对设备,故效率低
2.面向 CPU 的双总线结构框图
由于CPU与主存之间信息交互非常频繁,故单独设置一条M总线用于CPU与主存数据传输服务
同样产生了一个问题:假如主存要与外部设备进行数据交互,就必须通过CPU降低了CPU的效率
3. 以存储器为中心的双总线结构框图
此时中心由CPU转向了存储器,存储器可以直接与I/O设备进行数据传输也能直接与CPU进行数据传输,CPU也能直接与IO设备进行数据传输
但此时主存有两个端口,目前技术不支持两个端口同时工作,故不能同时进行数据传输
3.2 总线的分类
1.片内总线
芯片内部的总线
2.系统总线
计算机各部件之间的信息传输线
- 数据总线:传输数据信号 双向
- 地址总线:传输地址总线,单向,由CPU/主设备发出与地址单元个数相关,与MAR宽度相同
- 控制总线:传输控制信号/状态信号
- 出:存储器读、存储器写、总线允许、中断确认
- 入:中断请求、总线请求
3.通信总线
用于计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信等)之间的通信
传输方式分为串行传输和并行传输
3.3 总线特性及性能指标
一、总线物理实现
就是说总线是焊在主板上的,然后总线再提供一些接口给需要使用的设备入CPU、主存等
二、总线特性
- 机械特性:尺寸、形状、管脚数及排列顺序
- 电气特性:传输方向和有效的电平范围
- 功能特性:每根传输线的功能
- 时间特性:信号的时序关系
三、总线的性能指标
- 总线宽度:数据线的根数
- 标准传输率:每秒传输的最大字节数(MBps)
- 时钟同步/异步:同步、不同步
- 总线复用:地址线与数据线复用
- 信号线数:地址线、数据线和控制线的总和
- 总线控制方式:突发、自动、仲裁、逻辑、计数
- 其他指标:负载能力
3.4 总线结构
一、单总线结构
就是将每个设备简单粗暴地接到总线上,这样就可以很简单的两两相连,但同样也产生了一个问题!!!
由于同一个时间,只能有一对设备使用总线,所以同时只能接入一对设备,故效率低
二、多总线结构
1. 双总线结构
添加一条I/O总线和通道这样就可以统一对I/O设备进行管理
2. 三总线结构
此时中心由CPU转向了存储器,存储器可以直接与I/O设备进行数据传输也能直接与CPU进行数据传输,CPU也能直接与IO设备进行数据传输
但此时主存有两个端口,目前技术不支持两个端口同时工作,故不能同时进行数据传输
3. 三总线结构的又一形式
问题:当有多种不同运行速度的外部设备都连接到扩展总线,这个时候就会导致快的设备要等慢的设备,导致效率低下,其中Cache作为CPU与主存之间的缓存,因为主存的读写速率是远低于CPU的所以添加一个缓存提高速率有点类似于Reids缓存与MySql之间的关系。扩展总线接口是用来统一管理各个外界设备的有点类似于设计模式中的外观设计模式
4. 四总线结构
在三总线的基础上添加了一条高速总线,运行速度快的接到告诉总线上,运行速度慢的接到扩展总线上,这样就可以实现速度的分层,提高效率
3.5 总线控制(重要!!!)
一、总线判优控制
因为同一个时间只能由一对设备使用总线所以需要对总线进行优先级的控制
1. 基本概念
- 主设备(模块) 对总线有 控制权
- 从设备(模块) 响应 从主设备发来的总线命令
2. 链式查询方式
- 数据线:用于数据传输
- 地址线:用于设备的查找
- BS:总线忙,就是正在工作的总线
- BR:总线申请,就是用来申请使用总线
- BG:总线授权:用来总线给设备授权
- 步骤:(我们以第二个IO设备发出请求为例)
- 当有多个设备发出总线请求时,这是将发起总线请求信号通过BR总线告诉总线控制部件,说我现在要申请总线,快给我使用权!!!
- 然后总线收到信号后通过BG总线进行链式查找(有点像链表)一个一个往下递归遍历直到找到发出请求的那个设备,然后给这个设备权限
- 第二个IO设备获取权限后发出BS请求占用总线
- 优点:简单粗暴
- 缺点:链式查找速度慢,并且对设备敏感,一旦某个设备坏了后面的设备全部不能用了
3. 计数器定时查询方式
- 数据线:用于数据传输
- 地址线:用于设备的查找
- 设备地址线:通过计数器和设备地址线能之间定位到目标IO设备类似于数组与下表之间的关系
- BS:总线忙,就是正在工作的总线
- BR:总线申请,就是用来申请使用总线
- 步骤:(我们还是以第二个IO设备发出请求为例)
- 当有多个设备发出总线请求时,这是将发起总线请求信号通过BR总线告诉总线控制部件,说我现在要申请总线,快给我使用权!!!
- 通过计数和设备地址总线之间定位到某个IO设备,如果不是目标设备则计数值++
- 找到IO设备时,给这个设备授权,然后这个设备发出BS请求占用总线
- 优点:可以预先设定一个初始值,可以自定义起点
- 按序查找,速度较慢
4. 独立请求方式
这个就没啥难理解的了,就是给每一个IO设备都提供一个BR和BG然后优先级由排队器提供
- 优点:IO设备的优先级可以自定义,比如写个二分查找的算法(bushi)
- 缺点线太多,外接设备一多就会导致线爆炸
二、总线通信控制
1. 目的
解决通信双方协调配合问题,也就是解决两个设备占用总线时,如何保证通信的正确性和准确性
2. 总线的传输周期
- 申请分配阶段:由总线判优控制模块负责
- 寻址阶段:主模块找到从模块的过程,发出地址与命令
- 数据传输阶段:主模块与从模块的数据交互
- 结束阶段:主模块撤销相关信息
3. 总线通信的四种方式
- 同步通信:由统一时标控制数据传送
- 异步通信:采用应答方式,没有公共时钟标准
- 半同步通信:同步、异步结合
- 结束阶段:充分挖掘系统总线每个瞬间的潜力
(1) 同步式数据输入
既然是同步式数据输入那么就肯定需要一个时钟输入,一个总线传输周期为4个时钟周期
- 在第一个时钟的上升沿前应当完成地址信号的传输
- 在第二个时钟的上升沿应当完成读命令的操作
- 在第三个时钟上升沿应当完成数据的传输
- 在第三个时钟结束时应该结束数据传输操作以及读命令
- 第四个时钟结束前应该结束地址信息传输操作的结束
(2) 同步式数据输出
和上面的同步式数据输入十分相似只不过顺序变成了地址 -> 数据 -> 写命令
由于是同步操作故速度快的设备会等速度慢的设备先完成,故最终速度以慢的设备为准,故同步一般用于总线较短,各个速度差不多的情况
(3) 异步通信
异步通信分为三种
- 不互锁
- 主设备发出请求不关心从设备是否接到信号过段时间会自动撤销,从设备发出反馈信号也不关心主设备是否接受
- 不互锁方式是极其不安全的,但效率自然也是最高的
- 半互锁
- 主设备发出请求后只有当从设备接受后才会撤销
- 半互锁比不互锁安全了一点但存在一个问题就是假如从设备一直接受不到请求那么请求信号就会一直处于高电平
- 全互锁
- 主设备发出请求并且收到从设备的反馈信号后才会撤销
- 全互锁方式是安全的,一般采用这种方式
(4) 半同步通信(同步、异步 结合)
- 同步
- 发送方用系统时钟前沿发信号
- 接收方用系统时钟后沿判断、识别
- 异步
- 允许不同速度的模块和谐工作
- 增加一条 “等待”响应信号WAIT’
以输入数据为例的半同步通信时序
上述三种通信的共同点
一个总线传输周期(以输入数据为例)
? 主模块发地址 、命令 占用总线 ? 从模块准备数据 不占用总线(总线空闲、资源浪费) ? 从模块向主模块发数据 占用总线
(5) 分离式通信
充分挖掘系统总线每个瞬间的潜力
分离式通信就是将总线的传输周期分成两个子周期
- 子周期1 主模块申请占用总线,使用完后即放弃总线的使用权
- 子周期2 从模块申请占用总线,将各种信息送至总线上(此时从模块变为了主模块)
分离式通信特点:
- 各模块有权申请占用
- 采用同步方式通信,不等对方回答
- 各模块准备数据时,不占用总线
- 总线被占用时,无空闲
- 充分提高了总线的有效占用
|