总线
早期计算机外部设备少时大多采用分散连接方式,每增加一个外部设备都专门增加线路来连接,不易实现随时增减外部设备。为了更好地解决I/O设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接。
总线是一组能为多个部件分时共享的公共信息传送线路
- 共享:指总线上可以挂接多个部件,各个部件之间互相交换的信息都可以通过这组线路分时共享
- 分时:指同一时刻只允许有一个部件向总线发送信息(同一时刻只能有一个部件发送数据,但是可有多个部件接受数据)
特性:
- 机械特性:尺寸、形状、管脚数、排列顺序
- 电气特性:传输方向和电平有效范围
- 功能特性:每根传输线的功能(地址、数据、控制信号)
- 时间特性:信号的时序关系
物理实现:
总线,使用光刻机刻上去的
分类
按数据传输格式
串行总线
一次传送1bit数据的总线
优点:只需要一条传输线,成本低廉,广泛应用于长距离传输;应用于计算机内部时,可以节省布线空间。
缺点:在数据发送和接收的时候要进行拆卸和装配,要考虑串行-并行转换的问题。
并行总线
一次传送多bit数据的总线
优点:总线的逻辑时序比较简单,电路实现起来比较容易。
缺点:信号线数量多,占用更多的布线空间;远距离传输成本高昂;无法持续提升工作频率(由于并行总线各线之间的距离较近,在频率较高的时候各线之间可能会产生严重干扰,对每条线等长的要求也越高)
工作频率相同时,串行总线传输速度比并行总线慢;并行总线的工作频率无法持续提高,而串行总线可以通过不断提高工作频率来提高传输速度,最终超过并行总线。
按总线功能
片内总线
片内总线是芯片内部的总线,它是CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线
系统总线
系统总线是计算机系统内各功能部件(CPU、主存、I/O接口)之间相互连接的总线,按系统总线传输信息内容的不同,可分为3类:
- 数据总线:用来传输各功能部件之间的数据信息(包括指令、操作数),它是双向传输总线,其位数与机器字长、存储字长有关
- 地址总线:传输地址信息,用来指出数据总线上的源数据或目的数据所在的主存单元或I/O端口的地址,它是单向传输总线,地址总线的位数与主存地址空间的大小及设备数量有关
- 控制总线:传输控制信息(包括CPU送出的控制命令、主存或外设返回CPU的反馈信号),一根控制线传输一个信号
对于控制总线,单根线中的数据传输方向是单向的,但对于整根控制总线来说是双向的。
通信总线
通信总线是用于计算机系统之间或计算机系统与其他系统(如远程通信设备、测试设备)之间传送信息的总线,如网线,通信总线也称为外部总线。
按时序控制
按时序控制可分为
- 同步总线
- 异步总线
总线结构
单总线结构
CPU、主存、I/O设备(通过I/O接口)都连接在一组总线上,允许I/O设备之间、I/O设备和CPU之间或I/O设备与主存之间直接交换信息
优点:结构简单,成本低,易于接入新的设备
缺点:带宽低、负载重,多个部件只能争用唯一的总线,且不支持并行传送操作,即同一时间内只能有一组设备进行通信
由于CPU、主存是快速的,数据的读写是比较快的,而很多外部设备,如键盘、鼠标、打印机等外设,对于数据传输的速率是很慢的,因此在传输慢速数据时,速度相对总线的速度上限来说很慢,因此会造成性能浪费。
双总线结构
双总线结构有两条总线,一条是主存总线,用于CPU、主存和通道之间进行数据传送;另一条是I/0总线,用于多个外部设备与通道之间进行数据传送。
优点:将较低速的I/0设备从单总线上分离出来,实现存储器总线和I/0总线分离
缺点:需要增加通道等硬件设备
主存总线支持突发(猝发)传送,即送出一个地址,收到多个地址连续的数据
通道是具有特殊功能的处理器,能对I/O设备进行统一管理,通道程序放在主存中
三总线结构
三总线结构是在计算机系统各部件之间采用3条各自独立的总线(主存总线、I/O总线和直接内存访问 DMA总线)来构成信息通路
- 主存总线:用于在CPU和内存之间传送地址、数据的控制信息
- I/O 总线:用于在CPU和各类外设之间的通信
- 直接内存访问DMA总线:用于在内存和高速外设之间直接传送数据
优点:提高了I/O设备的性能,使其更快地响应命令,提高系统吞吐量
缺点:系统工作效率较低(在同一时刻,3条总线只能有一条总线进行工作)
四总线结构
现代计算机中更常使用的结构,桥接器用于连接不同的总线,具有数据缓冲、转换和控制功能,北桥芯片和南桥芯片都属于桥接器
注意:
- 靠近CPU的总线速度较快
- 每级总线的设计遵循总线标准
性能指标
总线周期
即总线的传输周期,一次总线操作所需的时间(包括申请阶段、寻址阶段、传输阶段和结束阶段),如利用总线传输一组数据所需要的时间,通常由若干个总线时钟周期构成。
总线周期和总线时钟周期的关系不确定,传输周期和时钟周期之间的关系可以为:一对一、一对多、多对一。多对一的情况有可能是一个周期内的每个上升沿或下降沿都会进行一个数据的传输。
总线时钟周期
即机器的时钟周期。计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制。
现在的计算机中,总线时钟周期也有可能由桥接器提供
总线的工作频率
总线上各种操作的频率,为总线周期的倒数,若总线周期=N个时钟周期,则总线的工作频率=时钟频率/N。实际上指一秒内传送几次数据。
总线的时钟频率
即机器的时钟频率,为时钟周期的倒数,若时钟周期为T,则时钟频率为1/T。实际上指一秒内有多少个时钟周期。
总线宽度
又称为总线位宽,它是总线上同时能够传输的数据位数,通常是指数据总线的根数,如32根称为32位(bit)总线。
总线带宽
可理解为总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节/秒(B/s)表示。
总线带宽 = 总线工作频率 × 总线宽度 ( b i t / s ) = 总线宽度 总线周期 ( b i t / s ) 总线带宽 = 总线工作频率 × 总线宽度(bit/s) = \frac{总线宽度}{总线周期}(bit/s) 总线带宽=总线工作频率×总线宽度(bit/s)=总线周期总线宽度(bit/s)
总线带宽是指总线本身所能达到的最高传输速率。
总线复用
总线复用是指一种信号线在不同的时间传输不同的信息。可以使用较少的线传输更多的信息,从而节省了空间和成本,但总线复用会导致速度降低。
信号线数
地址总线、数据总线和控制总线3种总线数的总和称为信号线数。
总线事务
从请求总线到完成总线使用的操作序列称为总线事务,它是在一个总线周期中发生的一系列活动,总线周期分为四个阶段:
- 申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,并且获得总线控制权(请求阶段);经总线仲裁机构决定将下一传输周期的总线使用权授予某一申请者(仲裁阶段)
- 寻址阶段:获得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块。
- 传输阶段:主模块和从模块进行数据交换,可单向或双向进行数据传送,一般只能传输一个字长的数据。
- 释放阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
突发(猝发)传送方式能够进行连续成组数据的传送,其寻址地址发送的是连续数据单元的首地址,在传输阶段传送多个连续单元的数据,每个时钟周期可以传送一个字长的信息,但是不释放总线,直到一组数据全部传送完毕后,再释放总线。
总线仲裁
同一时刻只能有一个设备控制总线传输操作,可以有一个或多个设备从总线接收数据。
总线设备是指总线上所连接的各类设备, 按其对总线有无控制功能分为:
- 主设备:获得总线控制权的设备
- 从设备:被主设备访问的设备,只能响应从主设备发来的各种总线命令
总线作为一种共享设备,不可避免地会出现同一时刻有多个主设备竞争总线控制权的问题。多个主设备同时竞争主线控制权时,以某种方式选择一个主设备优先获得总线控制权称为总线仲裁。
集中仲裁方式
链式查询方式
主设备发出请求信号;若多个主设备同时请求,则由总线控制器的判优、仲裁逻辑按一定的优先等级顺序(离总线控制器越近的部件,其优先级越高;离总线控制器越远的部件其优先级越低)确定哪个主设备能使用总线;获得总线使用权的主设备开始传送数据
总线控制器可能被集成在CPU或桥接器里,总线时钟信号是由总线控制器发出的
优点:链式查询方式优先级固定,只需很少几根控制线就能按一定优先次序实现总线控制,结构简单,扩充容易。
缺点:对硬件电路的故障敏感,并且优先级不能改变。当优先级高的部件频繁请求使用总线时,会使优先级较低的部件长期不能使用总线,出现饥饿现象。
计数器查询方式
用一个计数器控制总线使用权,相对链式查询方式多了一组设备地址线,少了一根总线响应线BG,但它仍共用一根总线请求线。
优点:
- 计数器的初值可以由程序设置,计数初始值可以改变优先次序
- 计数每次从0开始,设备的优先级就按顺序排列,固定不变;
- 计数从上一次的终点开始,此时设备使用总线的优先级相等;
- 对电路的故障没有链式敏感
缺点:
- 增加了控制线数,若设备有n个,则需 ⌈ l o n g 2 n ⌉ + 2 \left\lceil long_2 n \right\rceil +2 ⌈long2n⌉+2条控制线
- 控制相对比链式查询相对复杂
独立请求方式
每一个设备均有一对总线请求线
B
R
i
BR_i
BRi 和总线允许线
B
G
i
BG_i
BGi
优点:
- 响应速度快,总线允许信号BG直接从控制器发送到有关设备,不必在设备间传递或者查询。
- 对优先次序的控制相当灵活。
缺点:
- 控制线数量多,若设备有n个,则需要2n+1条控制线。其中+1为BS线,用于设备向总线控制部件反馈已经是否正在使用总线。
- 总线的控制逻辑更加复杂
分布式仲裁方式
不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线。
- 当设备有总线请求时,它们就把各自唯一的仲裁号发送到共享的仲裁总线上;
- 每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较;
- 如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号;
- 最后,获胜者的仲裁号保留在仲裁总线上。
总线忙信号的建立者是获得总线控制权的设备
总线定时
总线定时是指总线在双方交换数据的过程中需要时间上配合关系的控制,它实质是一种协议或规则
- 同步通信(同步定时方式):由统一时钟控制数据传送
- 异步通信(异步定时方式):采用应答方式,没有公共时钟标准,分为不互锁、半互锁、全互锁
- 半同步通信:同步、异步结合
- 分离式通信:充分挖掘系统总线每瞬间的潜力
传输阶段
同步定时方式(同步通信)
同步定时方式是指系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。时钟产生相等的时间间隔,每个间隔构成一个总线周期。在一个总线周期中,发送方和接收方可进行一次数据传送。
优点:传送速度快,具有较高的传输速率;总线控制逻辑简单。
缺点:主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差。
同步通信适用于总线长度较短及总线所接部件的存取时间比较接近的系统
假设:CPU作为主设备,某个输入设备作为从设备
- CPU在T1时刻的上升沿给出地址信息
- 在T2的上升沿给出读命令(低电平有效),与地址信息相符合的输入设备按命令进行一系列的内部操作,且必须在T3的上升沿来之前将CPU所需的数据送到数据总线上。
- CPU在T3时钟周期内,将数据线上的信息传送到其内部寄存器中。
- CPU在T4的上升沿撤销读命令,输入设备不再向数据总线上传送数据,撤销它对数据总线的驱动。
异步定时方式(异步通信)
在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方相互制约的握手信号来实现定时控制。
优点:总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合。
缺点:比同步控制方式稍复杂一些,速度比同步定时方式慢。
主设备提出交换信息的请求信号,经接口传送到从设备;从设备接到主设备的请求后,通过接口向主设备发出回答信号。根据请求和回答信号的撤销是否互锁,分为以下3种类型:
- 不互锁方式
- 半互锁方式
- 全互锁方式
不互锁方式
主设备发出请求信号后,不必等到接到从设备的回答信号,而是经过一段时间,便撤销请求信号;而从设备在接到请求信号后,发出回答信号,并经过一段时间,自动撤销回答信号。双方不存在互锁关系,速度最快,但可靠性最差。
半互锁方式
主设备发出请求信号后,必须待接到从设备的回答信号后,才撤销请求信号,有互锁的关系。而从设备在接到请求信号后,发出回答信号,但不必等待获知主设备的请求信号已经撤销,而是隔一段时间后自动撤销回答信号,不存在互锁关系。
全互锁方式
主设备发出请求信号后,必须待从设备回答后,才撤销请求信号;从设备发出回答信号,必须待获知主设备请求信号已撤销后,再撤销其回答信号。双方存在互锁关系,最可靠,但速度最慢。
如:请求是地址信息、读命令,回答是要读出的数据
半同步通信
半同步通信:在统一时钟的基础上,增加一个等待响应信号WAIT,同步(发送方用系统时钟前沿发信号,接收方用系统时钟后沿判断、识别)和异步(允许不同速度的模块和谐工作)思想的结合
分离式通信
同步通信、异步通信、半同步通信的共同点,一个总线传输周期(以输入数据为例)
- 主模块发地址、命令:使用总线
- 从模块准备数据:不使用总线,总线空闲
- 从模块向主模块发数据:使用总线
分离式通信的一个总线传输周期
- 子周期1:主模块申请占用总线,使用完后放弃总线的使用权
- 子周期2:从模块申请占用总线,将各种信息送至总线上
特点:
- 各模块均有权申请占用总线
- 采用同步方式通信,不等对方回答
- 各模块准备数据时,不占用总线
- 总线利用率提高
总线标准
总线标准是国际上公布或推荐的互连各个模块的标准,它是把各种不同的模块组成计算机系统时必须遵守的规范,根据总线在计算机系统中的位置,可分为:
- 系统总线:通常与CPU直接相连,用于连接CPU与北桥芯片、或CPU与主存等
- 局部总线:没有直接与CPU连接,通常是连接高速的北桥芯片,用于连接了很多重要的硬件部件(如显卡、声卡等)
- 设备总线、通信总线:通常由南桥芯片控制,用于连接计算机与计算机,或连接计算机与外部I/O设备
北桥芯片的速度一般会比南桥芯片的速度快,而且一般会与CPU进行连接,固态硬盘也是与北桥芯片进行连接的,而USB总线直接连接南桥芯片
趋势:串行总线替代并行总线
- 并行总线:用m根线每次传送m个比特,用高/低电平表示1/0,通常采用同步定时方式,由于线间信号干扰,因此总线工作频率不能太高。另外,各条线不能有长度差,长距离并行传输时工艺难度大。
- 串行总线:用两根线每次传送一个比特,采用差模信号表示1/0,通常采用异步定时方式,总线工作频率可以很高。
现在的串行总线通常基于包传输,包与包之间有先后关系,可以用多个数据通路分别串行传输多个数据包,某种程度上的并行
附:思维导图