--- title: 『计算机组成原理』总线 tags: [计算机组成原理] mathjax: false date: 2018-06-18 20:57:27 categories: - 计算机基础 keywords: description: "总线的结构, 控制, 周期, 标准, 通信方式等" top: --- **总线** - [历史](#历史) - [分类](#分类) - [特性](#特性) - [性能指标](#性能指标) - [总线结构](#总线结构) - [总线控制](#总线控制) - [总线周期](#总线周期) - [总线标准](#总线标准) - [PCI](#pci) - [USB](#usb) - [通信方式](#通信方式) - [同步](#同步) - [异步](#异步) - [半同步](#半同步) - [分离式](#分离式) - [引入](#引入) - [原理](#原理) - [特点](#特点) ## 历史 * 以 ALU 为中心 * 以 MEM 为中心 * 总线 ## 分类 * 根据数据传送方式: 串, 并 * 根据宽度: 8,16,32,64 * 根据使用范围: 计算机外设总线, 测控总线, 总线 * 根据连接部件 * 片内总线(芯片内) * 系统总线: CPU, MEM, IO之间信息传输 根据传递的信息功能分类 * 数据总线 * 地址总线 * 控制总线 ## 特性 * 机械特性: 规定几何尺寸,形状,引脚等 * 电器特性: 信号方向, 电平范围等 * 功能特性: 多跟线不同的功能 * 时间特性: 时序 ## 性能指标 ![bus-1](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/bus-1.png) 总线宽度:通常指数据总线的根数; 总线带宽:总线的数据传输率,指单位时间内总线上传输数据的位数; 总线复用:指同一条信号线可以分时传输不同的信号。 总线的主设备(主模块):指一次总线传输期间,拥有总线控制权的设备(模块); 总线的从设备(从模块):指一次总线传输期间,配合主设备完成数据传输的设备(模块),它只能被动接受主设备发来的命令; 总线的传输周期:指总线完成一次完整而可靠的传输所需时间; 总线的通信控制:指总线传送过程中双方的时间配合方式。 ## 总线结构 * 单总线 * 双总线(引入通道) ![bus-2](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/bus-2.png) * 三总线1 IO总线, DMA 总线, 主存总线 ![bus-3](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/bus-3.png) * 三总线2 局部总线, 系统总线, 扩展总线 ![bus-4](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/bus-4.png) * 四总线 局部总线, 系统总线, 扩展总线, 高速总线 ( 适用高速 I/O 设备) ![四总线](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/四总线.png) ## 总线控制 * 判优 * 仲裁逻辑 * 链式查询 ![bus-5](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/bus-5.png) * 计数器定时查询 ![bus-6](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/bus-6.png) * 独立请求 ![bus-7](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/bus-7.png) 比较 方式 |每个设备用的总线数 |实现| 特点|原理 -|-|-|-|- 链式查询|2|简单| 近的优先,对电路故障最敏感|BS总线忙,BR总线请求,BG总线同意.
BG信号串行地从近到远传递到下一个IO接口, 如果此接口有总线请求, 总 BG 不再向下传,此接口得到总线使用权 计数器定时查询| ~log2n| 稍复杂| 平等,对故障不敏感|多了一组设备地址先,少了BG. 总线未被使用时,BS=0. 总线控制部件的计数器开始计数,然后通过设备地址先,向各设备发出一组地址信号. 到设备地址值与计数器值相同时,就获得总线使用权 独立请求| 2n|很复杂|响应速度快,优先次序灵活(通过程序改变)|设备发出对应的请求信号,总线控制部件中有一个排队电路, 可根据优先次序确定响应设备. * 通信 ## 总线周期 申请分配 -> 寻址 -> 传输/通信 -> 结束 -> 申请分配... ## 总线标准 ### PCI * 高性能 * 不依附于 CPU * 良好的兼容性 * 即插即用(Plug and Play) 每个 PCI 设备配有此设备的 reg, 供 BIOS 自动获取, 无需手动设置 ### USB * 即插即用 * 通过 HUB 扩展连接 * 速度快 * 标准统一 * 有4根线, 两根信号, 两根电源 ## 通信方式 ### 同步 通信双方由统一时标控制数据传送 ![bus-8](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/bus-8.png) ![bus-9](https://raw.githubusercontent.com/mbinary/mbinary.github.io/hexo/source/images/bus-9.png) ### 异步 允许各模块速度不一致,更加灵活. 没有公共的时钟标准,不一颗球所有部件严格统一操作时间, 而是应用`应答方式`(又称 `握手方式`) * 不互锁 * 半互锁 * 全互锁 ### 半同步 半同步通信既能像同步通信那样由统一时钟控制,又能像异步通信那样允许传输时间不一致,因此工作效率介于两者之间。 ### 分离式 #### 引入 以上三种通信方式都是从主模块发出地址和读写命令开始,直到数据传输结输周期中,系统总线的使用权完全由占有使用权的主模块和由它选中的从模块占据。 进一步分析读命令传输周期, * 主模块通过传输总线向从模块发送地址和命令。 * 从模块按照命令进行读数据的必要准备。 * 从模块经数据总线向主模块提供数据。. 由第二点可见,对系统总线而言,从模块内部读数据过程并无实质性的信息传输,总线空闲。为了克服和利用这种消极等待,尤其在大型刘算机系统中,总线的负载已处于饱和状态, 充分挖掘系统总线每瞬间的潜力,对提高系统性能起到极大作用。 提出了“分离式”的通信方式 #### 原理 其基本思想是将一个传输周期(或总线周期)分解为两个子周期。在第一个子周期中,主模块A在得到总线使用权后将命令、地址以及其他有关信息,包括该主模块编号(当有多个主模块时,此号尤为重要)发到系统总线上,经总线传输后,由有关的从模块B接收下来。 主模块A向系统总线发布这些信息只占用总线很短的时间,一旦发送完,立即放弃总线使用权, 以便其他模块使用。在第二个子周期中,当B模块收到A模块发来的有关命令信号后,经选择、 译码、读取等一系列内部作,将A模块所需的数据准备好,使由B模块中请总线使用权,一旦 获准,B模块便将A模块的号、B模块的地址、A模块所需的数据等一系列信息送到总线上,供 A模块接收。很明显,上述两个传输子周期都只单方向的信息流,每个模块都变成了主模块。 #### 特点 * 各模块欲占用总线使用权都必须提出串请。 * 在得到总线使用权后,主模块在限定的间内向对力传送信息,采用同步方式传送,不再 等待对方的回答信号。 * 各模块在准备数据的过程中都不占用总线,使总线可接受其他模块的请求。 * 总线被占用,或者通过它发送命令,或通过它传送数据,不存在空闲等待时间,充分地利用了总线的有效占用,从而实现了总线在多个主、从模块间进行信息交叉重叠并行式传送. 这种方式控制比较复杂,一般用于大型计算机系统