总线的基本概念
为什么要使用总线
冯-诺伊曼机构把计算机分为五大部分,而现在计算机的组成更加复杂,如果把组件两两互连,则需要的线路条数巨大,印刷电路板需要更大的空间,且接口会占
用组件大量的空间。比如几百个组件要和 CPU 互连,则 CPU 需要几百个接口。系统很难扩展。
什么是总线 bus
总线是连接各个部件的信息传输线,是各个部件共享的传输介质。如果所有组件都连接在总线上,则会导致总线非常繁忙,其他组件等待使用总线的时间也会增大。
总线上信息的传输
串行
数据一位一位的放到总线上,被接收设备接收
并行
数据多位同时放到多条线上,接收方同时接收多位信号,需要多条线,如果传输距离长则信号会受到干扰。并行传输距离短可以放到机箱内部,串行可以支持长距离传输。
如果并行传输需要传输更远的距离需要特殊的技术辅佐。
总线的不同结构
单总线结构
总线是信号的公共传输线,在任何一个时刻只能有一个部件使用总线,总线会成为瓶颈。
问题:
- 比如某个 I/O 设备占用了总线,那么 CPU 和 主存就无法利用总线,如果此时 CPU 需要利用总线,则不得不停止,CPU 的利用率会很低
- 如果 I/O 设备很多,则系统总线会很长,效率低
面向 CPU 的双总线结构
问题:如果主存要和外部设备通信,则只能依赖 CPU,此时还是会阻断 CPU 任务的执行。
以存储器为中心的双总线结构
结构不只有这些,还可以继续优化。
总线的分类
片内总线
芯片内部的总线
系统总线 (片外/片间总线)
计算机各部件之间的信息传输线,根据传输信号的不同,系统总线可以分为数据总线、地址总线、控制总线。
数据总线
双向的,与机器字长、存储字长有关,通常小于等于机器字长或者存储字长。比如 CPU 是 64 位的,数据总线是 8 位的,则传输 64 位数据需要进行 8 次。
地址总线
单向的,由 CPU或者由主设备发出,地址总线的条数与与存储地址、I/O 地址有关。地址总线的宽度和 MAR寄存器的宽度 或者 I/O 有关。
控制总线
向系统的各个部件传输控制信号,或者系统的各个部件把自身的状态信号向外进行传输。有出有入,比如存储器读、存储器写、总线允许、中断确认。
通信总线
用于计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信等)之间的通信。
按传输方式可以分为:串行通信总线和并行通信总线。
总线特性及性能指标
总线物理实现
总线印刷在电路板上,这个电路板就是主板或母板。在总线上留出一些接口,计算机系统的其他部件或模块可以通过这些接口连接在主板上。
总线特性
为了各部件能连接到主板上,总线需要有如下特性。
机械特性
要想连接在主板上,需要规定样式、尺寸等特性,才能连接在一起。
- 尺寸
- 形状
- 管脚数
- 排列顺序
电气特性
- 传输方向
- 有效电平范围
功能特性
每根线上传输的是什么信号:地址、数据、控制信号。
时间特性
信号的时序关系。
总线的性能指标
总线宽度
数据线的根数,一次同时能传输多少位。
标准传输率
每秒传输的最大字节数 (MBps)。
时钟同步/异步
同步、不同步。
总线复用
地址线与数据线是否能复用,减少芯片的管脚数。
信号线数
地址线、数据线和控制线的总和。
总线控制方式
突发、自动、仲裁、逻辑、计数。
其他指标
负载能力,能挂载多少设备。
总线标准
计算机是个复杂的系统,有些厂商只生产 CPU,有些只生产内存,不同的厂商需要准守相同的标准,才能互连。
总线结构
单总线结构
如上
多总线结构
双总线结构
三总线结构
多个不同速率的设备都连接在扩展总线上,会影响总线的效率。
四总线结构
高速设备与低速设备分离。
PCI 总线结构
多层 PCI 总线结构
总线控制
总线的判优控制,如何完成通信过程。
总线判优控制
基本概念
- 主设备(模块)对总线有控制权,可以提出/申请总线占用,并能控制从设备
- 从设备(模块)不能对总线进行控制,不能提出总线占用请求,响应从主设备发来的总线命令
计算机中有些设备既可以作为主设备也可以作为从设备,有些总线可以有多个主设备,有些总线只能有一个主设备。
总线判优控制方式
集中式
把总线判优逻辑做在一个部件上,比如放到 CPU 中。
- 链式查询
- 计数器定时查询
- 独立请求
分布式
判优逻辑分布到各个设备或者设备的端口上。
链式查询方式
三条线,BS、BR、BG。
多个 I/O 接口通过 BR 线提出总线请求, 那么 BG 总线授权线会一个一个向下查询,是哪个 I/O 接口提出了总线占用请求,直到碰到第一个提出总线请求的设备,
接口获得了总线控制部件的授权,并通过 BS 线设置总线忙,此时获得总线控制权,接口 n 则得不到总线授权。
各个设备占用总线的优先级如何确定?受到 BG 线查询顺序影响,它的查询顺序就是各个设备占用总线优先级的顺序,也就是说和连接方式/顺序有关,越靠后的设备可能永远得不到授权。
电路故障特别敏感,如果 BG 上某个设备接口出现故障,那么信号永远传不下去,优点是结构简单,优先级简单,增删设备方便。
一般用于微型计算机,或者简单的嵌入式系统。
计数器定时查询方式
数据线用于数据传输,地址线用于给出地址,设备地址线(地址由计数器给出),通过这个地址来查找某个设备是否发出总线占用请求。
I/O 设备或其他主设备通过 BR 线提出总线占用请求,总线控制部件在能能响应(不忙)的情况下,会启动计数器,并通过设备地址线对计数器对应的设备进行查询是否提出了总线占用申请,如果没有,会对计数器操作比如加一,来继续查询。
优先级确定非常友好、灵活,可以自定义每次查询时的计数器值从几开始,也可以从上次成功查询后的计数值开始。
设备地址线的宽度(条数)和设备数有关。需要的线更多了。
独立请求方式
以上两种都是顺序查找哪个设备提出了占用申请,速度比较慢。独立请求方式与之不同。
内部排队器决定优先级。用到的线比较多,如果是 n 个 设备需要 2n 条线,而计数器方式只要 log 以 2 为低的 n 向上取整条线。
总线通信控制
目的:解决通信双方协调配合问题。
总线的传输周期
总线的传输周期是指主设备和从设备之间完成一次完整的和可靠的传输所需要的时间。
- 申请分配阶段 主模块申请,总线仲裁决定
- 寻址阶段 主设备向从设备给出地址和命令
- 传数阶段 主设备和从模块交换数据
- 结束阶段 主模块撤销有关信息
总线通信的四种方式
同步通信
由统一定宽定距时标控制数据传送。
同步式数据输入,需要四个周期,在固定的时间点必须要给出具体的信息。
同步方式,所有从设备使用相同的时标控制,主从设备强制同步,对多个不同速的设备,必须选择速度最慢的设备进行同步。
异步通信
采用应答方式(握手信号),没有公共时钟标准。
异步通信不互锁
主设备发出请求后过一段时间撤销请求信号(维持在一个高电平上),不管从设备是否接收到请求,从设备应答后经过一段延迟后撤销应答信号,不管主设备是否收到应答信号,这种方式通信不可靠。
异步通信半互锁
主设备一直维持请求信号,直到接收到应答信号,从设备发出应答后一段时间撤销应答信号,不管主设备是否收到,有可能导致请求信号一直存在。
异步通信全互锁
主设备收到应答后才撤销请求信号,只有主设备的请求信号撤销后从设备才撤销应答信号,这样完成可靠数据传输。
半同步通信
总线半同步方式既采用时钟信号,又采用握手信号。
同步异步结合,主要解决速度不一致的设备之间的通信,既有同步通信的特征又有异步通信的特征。
同步的特征:发送方用系统时钟前沿发信号,接收方用系统时钟后沿判断、识别。
异步的特征:允许不同速度的设备和谐工作,增加一条等待响应信号(从设备给出)。
以输入数据为例的半同步通信时序:
T1 主设备发地址、T2主设备发命令(读信号)、T3 从设备提供数据、T4从设备撤销数据,主模块撤销命令。
比如主设备是高速的 CPU ,从设备是低速的磁盘,在 T2 CPU 发出请求后,当等待响应信号线是低电平时,等待一个 T,在从设备把数据准备好后,设置响应信号线,进入 T3 周期。
允许不同速设备之间的通信。
上述三种通信的共同点:一个总线传输周期(以输入数据为例)
- 主模块发地址、命令 占用总线
- 从模块准备数据 不占用总线 总线空闲
- 从模块向主模块发数据 占用总线
分离式通信
充分挖掘系统总线每个瞬间的潜力。
一个总线传输周期分为
- 子周期1 主模块申请占用总线,使用完后即释放总线的使用权
- 子周期2 从模块申请占用总线,将各种信息送至总线上,此时从模块变成主模块
分离式通信特点
- 各个模块都有权申请占用总线
- 采用同步方式通信,不等对方回答
- 各模块准备数据时,不占用总线
- 总线被占用时,无空闲