计组第三章 总线的基本概念
第三章 总线的基本概念
3.1 总线的基本概念
3.1.1. 为什么要用总线
- 根据计算机的结构,可以看出,计算机硬件有很多组件,每种组件的数目不止一个,要将这些组件连接起来
- 分散连接:可以将需要通讯的组件两两连接起来
- 成本高,设计难度大
- 每个组件的接口要很多
- 难以扩展
- 因此要用总的线
3.1.2. 什么是总线
- 总线是连接各个部件的公共信息传输线,是各个部件共享的传输介质
- 总线很繁忙,同时只能有一组设备使用,成为瓶颈
- 但是设计简单,可扩展性高
3.1.3. 总线上信息的传送
- 串行
一根线:数据是一位一位的传输
支持距离比较长,一次只能传一位信号
-
并行:
多条线(一个总线由平行的多条线),一个数据的多为同时放在多条总线上
传输距离如果比较长,线与线之间就会产生干扰
一般并行传输的举例比较短
一次可以传多位信号,图中一列为一个信号
问:现在的告诉信息传输采用那种传输方式
3.1.4. 总线的结构举例(简单介绍)
(1) 单总线结构框图
- 当主存要输出或者输入信息的时候,CPU就无法运算,严重影响CPU的性能
- 当外设多的时候,总线的长度会变长,延迟增加
(2) 面向CPU的双总线结构框图
CPU需要的数据和指令都在主存中,所以专门添加一条M总线
问题
- 主存无法与外部设备直接连接,还是要通过CPU,增加了CPU的负担
(3) 以存储器为中心的双总线结构框图
目前无法实现主存同时向系统总线与存储总线传输
3.2 总线的分类
3.2.1. 按位置分
3.3 总线的特性及性能指标
3.3.1. 总线物理实现
3.3.2. 总线特性
特性 | 说明 |
---|---|
机械特性 | 尺寸、形状、管脚数 及 排列顺序 |
电气特性 | 传输方向 和有效的 电平 范围 |
功能特性 | 每根传输线的 功能(地址,数据,控制) |
时间特性 | 信号的 时序 关系 |
3.3.3. 总线的性能指标
性能 | 说明 |
---|---|
总线宽度 | 数据线 的根数 |
标准传输率 | 每秒传输的最大字节数(MBps) |
时钟同步/异步 | 同步、不同步(这里不是异步,有区别的) |
总线复用 | 地址线 与 数据线 复用(复用可以减少芯片的管脚数) |
信号线数 | 地址线、数据线和控制线的 总和 |
总线控制方式 | 突发、自动、仲裁、逻辑、计数 |
其他指标 | 负载能力 |
3.3.4. 总线标准
这些总线不是一台电脑只用一个,而是不同地方用不同的总线,当然有的已经淘汰了
3.4 总线结构
之前也讲解了一些总线
3.4.1 单总线结构
3.4.2. 双总线结构
这个通道是操作系统写的,不是人工写的
3.4.3. 三总线结构
DMA是direct memory access,意思是直接访问主存,告诉外设不止有一个
下面是又一种实现的方法,记住这些总线的名字
-
CPU的速度提升的很快,每年52%,但是内存的提升速度很慢,大概10年换一代
因此内存的性能成为了瓶颈
-
在内存与CPU的中间有一个Cache,内存的指令和数据都存在Cache中
-
下部有扩展总线,便于IO的扩展,但是不同速度的设备都连在了一条总线上,低速设备影响告诉设备的效率
3.4.4. 四总线结构
- 告诉的连接在告诉总线上,低俗的连接在扩展总线上
总线结构举例
(1) 传统微型机总线结构
ISA、EISA是扩展总线
(2) VL-BUS局部总线结构
VL-BUS是告诉总线
(3) PCI 总线结构
(4) 多层 PCI 总线结构
如果PCI总线上的设备过多的话,驱动可能不够
通过多个桥进行扩展
3.5 总线控制(重点)
总线控制主要是两个
- 总线判优控制:总线同时只能支持一堆设备使用,到底哪对设备使用
- 总线通信控制:解决通信双方协调配合问题
3.5.1. 总线判优控制
根据是否能够发出总线命令,设备分成两类
- 主设备:对总线有 控制权,能够发出总线命令,并能够控制与另外一个设备的通信
- 从设备:响应 从主设备发来的总线命令
有的设备既可以当主设备,又可以当从设备
有的主线只能连一个主设备,有的可以连多个
下面我们探讨集中式的总线控制
(1) 链式查询方式
链式的核心就在于BG
执行流程:
- 接口1与接口n都要请求占用总线,通过BR想总线控制部件发出请求
- 总线控制部件不忙,认为可以交出使用权,但是不知道是哪一个设备要请求的,因此通过BG来逐个判断哪个接口要用呢
- 当BG遇到第一个发出请求的接口后,停止,这里是接口1,接口1 通过BS设置总线忙,即总线控制部件此时不能转让总线使用权,这时接口1就能使用总线了
特征:
- 缺点:
- 各个设备的优先级是通过BG的查询顺序决定的,由连接方式决定的,如果某个设备连的比较后,可能永远不会占用
- 一直向下查询,速度可能比较慢
- 对电路故障比较敏感,一旦BG中间断了,就无法传输到后面
- 优点:
- 易于扩展
- 设计简单
- 进行可靠性设计的时候,容易实现
- 比如将BG或者BS换成两条,很容易实现
一般用于微型计算机或者简单的嵌入式系统
(2) 计数器定时查询
- 总线控制部件内部有个计数器
- 没有了BG,但是多了一个设备地址
执行流程:
- 接口1和n同时通过BR向控制部件发出请求
- 控制部件同意之后,通过设备地址向接口发出信号,问是否发出请求
- 到达接口1,接口1通过BS发出响应,计数器+1,1被选中
特点:
-
优先级设计灵活
计数器的初值可以设计,可以从0开始,可以从上一次使用的设备开始
设置为k,那么k设备的优先级最高
-
线的数目
尤其是设备地址的数目,与接口数目有关 log2n向上取证
加上两根BR BS线
(3) 独立请求方式
前两种方式都是按顺序询问哪个接口发出的请求
总线控制部件的内部有一个排队器,排队方式由其控制
每一个接口都加了一个BRi BGi,可以独立发出请求
3.5.2. 总线通信控制
-
目的:解决通信双方 协调配合 问题
-
总线传输周期
- 申请分配阶段:主模块申请,总线仲裁决定
- 寻址阶段:主模块向从模块 给出地址 和 命令
- 传数阶段:主模块和从模块 交换数据
- 结束阶段:主模块 撤消有关信息
-
总线通信的四种方式
(1) 同步通信
① 同步式数据输入
总共有四个信号
-
时钟信号:一个总线传输周期有四个时钟周期
时钟周期都是上升沿有效,所以每个时钟周期干什么事情是看上升沿做什么事情
-
地址信号
-
读命令信号
-
数据信号
周期(上升沿的时候) | 说明 |
---|---|
T1 | 地址信号要给出地址(设备的地址) |
T2 | 读信号要给出命令(包括操作以及数据的地址) |
T3 | 数据信号要给出数据 |
T4 | 读命令和数据要撤销,周期结束后,地址信号也要撤销 |
② 同步式数据输出
假设是CPU将某一个数据输出到某个模块
周期(上升沿的时候) | 说明 |
---|---|
T1 | 上升沿地址信号要给出地址(设备的地址) 下降沿,CPU要给出数据 |
T2 | 写信号要给出命令(包括操作以及数据的地址) |
T3 | 做操作 |
T4 | 写命令和数据要撤销,周期结束后,地址信号也要撤销 |
地址信号在第四个周期结束后撤销,因为地址信号控制着使用哪个外部设备,有信号就表示使用这个设备
通信方式 | 特点 | 适用 |
---|---|---|
同步 | 快速和慢速的设备使用等长的时钟周期,慢速的影响快速的设备 | 总线比较短,设备速度比价一致的情况 |
(2) 异步通信
多了两根线:
- 主设备发出请求的线
- 从设备发出应答的线
分类 | 示意图 | 说明 |
---|---|---|
不互锁 | ![]() |
1. 主设备不管从设备是否接收到请求信号,过一段时间都会撤销请求 2. 从设备不管主设备是否接收到应答信号,过一段时间都会撤销应答 可靠性较低 |
半互锁 | ![]() |
1. 主设备发出请求,从设备接收后发出应答,主设备在接受到请求之后才撤销请求,否则会保持请求 2. 从设备不论是否主设备接受到应答,过一段时间后都会撤销应答 有可能造成请求信号一直有效 |
全互锁 | ![]() |
1. 主设备接受到应答信号才会撤销 2. 从设备在请求信号撤销后才会撤销应答 |
(3) 半同步通信(同步+异步)
这是同步和异步的结合
- 同步:发送方 用系统 时钟前沿 发信号,接收方 用系统 时钟后沿 判断、识别
- 异步:允许不同速度的模块和谐工作,增加一条 “等待”响应信号
来调整不同设备的速度差异
以输入数据为例的半同步通信时序
周期 | 说明 |
---|---|
T1 | 主模块发(外设模块)地址 |
T2 | 主模块发命令 |
Tw | 假设主从模块是CPU和慢速模块,速度差距很大 如果模块无法向CPU发出数据,就会通过WAIT线发出信号,主模块检测这个信号有效 此时进入Tw周期,这个时候主模块会等待一个周期 |
Tw | 如果从模块还不能发送数据,继续发出WAIT信号 |
…… | |
T3 | 从模块提供数据 |
T4 | 从模块撤销数据,主模块撤销命令 |
上述三种通信的共同点
一个总线传输周期(以输入数据为例)
- 主模块发地址 、命令 —— 占用总线
- 从模块准备数据 —— 不占用总线 总线空闲
- 从模块向主模块发数据 —— 占用总线
第二步总线空闲,只是一种资源浪费,总线成为瓶颈
(4) 分离式通信
充分挖掘系统总线每个瞬间的潜力
一个总线传输周期
- 子周期1:主模块 申请 占用总线,使用完后即 放弃总线 的使用权
- 子周期2:从模块 申请 占用总线,将各种信息送至总线上
特点:
-
各模块有权申请占用总线
-
采用同步方式通信,不等对方回答
-
各模块准备数据时,不占用总线
-
总线被占用时,无空闲,一定是在执行命令,有活干
充分提高了总线的有效占用