基于里昂学长的计算机组成原理课程。
笔记目录
第一章-计算机系统概述
第二章-数据的表示和运算
第三章-存储系统
第四章-指令系统
第五章-中央处理器
第六章-总线
第七章-输入输出系统
第六章 总线
6.1 总线基本概念
6.1.1 基本概念
早期计算机各部件之间是通过单独的连线互连的,这种方式称为分散连接
。随着I/O设备的种类和数量越来越多,计算机的结构从分散发展为总线连接
。
总线的定义
总线
是一组能为多个部件分时和共享的公共信息传送线路。
分时
是指同一个时刻只允许有一个部件向总线发送信息。
共享
是指总线上各个部件可以互相交换的信息,多个部件可同时从总线上接收相同的信息。
总线设备
总线上连接的设备,按对总线有无控制功能可分为:
- 主设备:发出总线请求且获得总线控制权的设备。
- 从设备:被主设备访问的设备,只能响应主设备发来的各种总线命令。
总线特性
总线特性指机械特性
、电气特性
、功能特性
和时间特性
。
- 机械特性
规定总线的尺寸、形状、线数,总线的插头等。
- 电气特性
定义总线信号的传递方向以及有效电平范围等。
- 功能特性
约定总线中每一根线的功能。
- 时序特性
明确每根线在什么时间有效。
6.1.2 总线的分类
按功能层次分类
- 片内总线
芯片内部的总线,用于CPU内部各寄存器之间以及寄存器与ALU的相连。
- 系统总线
计算机系统内各功能部件之间相互连接的总线。
按总线传输信息内容的不同,又可分为数据总线
、地址总线
和控制总线
。
数据总线:用来在各部件之间传输数据、指令、中断类型号等,它是双向传输总线,数据总线的位数反映一次能传送的数据的位数。
地址总线:用来指出数据总线上源数据或目的数据所在的主存单元或IO端口的地址,它是单向传输总线,地址总线的位数反映最大的寻址空间。
控制总线:用来传输各种命令、反馈和定时信号,例如时钟、复位、总线请求等等。(注意指令和命令的区别)
- I/O总线
主要用于连接中低速的I/O设备,通过I/O接口与系统总线相连接,目的是将低速设备与高速总线分离,以提升总线的系统性能,如USB总线。
- 通信总线
计算机系统之间或计算机系统与其他系统之间传送信息的总线,也称为外部总线
。
按时序控制方式分类
- 同步总线
总线上连接的部件或设备通过统一的时钟进行同步,在规定的时钟节拍内进行规定的总线操作,来完成部件或设备之间的信息传输。
- 异步总线
总线上连接的部件或设备没有统一的时钟,而以信号握手的方式来协调各部件或设备之间的信息传输,总线操作时序不固定。
按数据传输方式分类
- 串行总线
只有一条双向传输或两条单向传输的数据线,数据按比特位串行顺序传输,其效率低于并行总线。串行传输对数据线的要求不高,适合长距离通信。
- 并行总线
有多条双向传输的数据线,可以实现多比特位的同时传输,其执行效率比串行总线更高。
缺点是各条数据线的传输特点可能存在一些差异,并且数据线之间互相干扰,还会造成传输错误,因此适合近距离通信
。
并行总线并不一定比串行总线快,它们适用于不同的场景;并且并行总线是多个比特位同时传输,需要考虑数据的协同性,以及线路之间的干扰,导致工作频率无法持续提高。而串行总线可通过不断提高工作频率来提高传输速度,使其速度最终超越并行总线的速度。
6.1.3 总线结构
单总线结构
单总线结构将CPU、主存、I/O设备都挂载一组总线上,允许I/O设备之间、I/O设备与主存之间直接交换信息。
CPU和主存、CPU与外设之间都可以通过总线直接进行信息交换,而无需经过中间设备的干预。
优点:结构简单,成本低,易于接入新的设备。
缺点:带宽低、负载重,多个部件只能争用唯一的总线,且不支持并发传送操作。
双总线结构
双总线结构有两条主线:主存总线
用于在CPU、主存和通道之间传送数据;I/O总线
用于在多个外部设备与通道之间传送数据。
优点:将低速I/O设备从原单总线上分离出来,实现了存储器总线和I/O总线分离。
缺点:需要增加通道等硬件设备。
三总线结构
三总线结构是在计算机各部件之间采用3条各自独立的总线来构成信息通路。
主存总线
用于在CPU和内存之间传送地址、数据和控制信息。
I/O
总线用于在CPU和各类外设之间通信。
DMA
总线用于在内存和高速外设之间直接传输数据。
优点:提高了I/O设备的性能,使其更快地响应命令,提高系统吞吐量。
缺点:任意时刻只能使用一种总线,系统工作效率较低。
6.1.4 总线的性能指标
- 总线时钟周期
早期的总线时钟周期和机器周期一致,后来CPU发展太快,总线时钟开始独立于CPU时钟。
- 总线时钟频率
总线时钟周期的倒数。
- 总线传输周期
指一次总线操作所需的时间,包括申请阶段、寻址阶段、传输阶段和结束阶段。
- 总线工作频率
总线上各种操作的频率,为总线周期的倒数,指1秒内传送几次数据。
若总线周期=N个时钟周期,则总线的工作频率=时钟频率/N。
若一个时钟周期可以传送K次数据,则总线工作频率是总线时钟频率的K倍。
- 总线宽度
总线宽度也称总线位宽
,是总线上能够同时传输的数据位数,通常指数据总线的根数。
- 总线带宽
单位时间内总线上最多可传输数据的位数,通常用每秒传送信息的字节数来衡量,单位可用B/s
来表示。
总线带宽=总线工作频率$\times$(总线宽度/8)。
- 总线复用
总线复用是指一种信号线在不同的时间传送不同的信息。
例如,有些总线没有单独的地址线,地址信息通过数据线来传送,这种情况称为地址/数据线复用
,因此可以使用较少的线传送更多的信息,从而节省空间和成本。
- 信号线数
地址总线、数据总线和控制总线3种总线数的总和称为信号线数。
总线最重要的性能指标为
总线宽度
、总线工作频率
和总线带宽
。总线带宽是指总线的最大数据传输速率,三者的关系:总线带宽=总线宽度$\times$总线工作频率。
6.2 总线事务和定时
6.2.1 总线事务
总线事务的几个阶段
从请求总线到完成总线使用的操作序列称为总线事务,它是在一个总线周期中发生的一系列活动。
典型的总线事务包括请求操作
、仲裁操作
、地址传输
、数据传输
和总线释放
。
- 请求阶段
主设备(CPU或DMAC)发出总线传输请求
,请求获得总线控制权。
- 仲裁阶段
总线仲裁部件决定将下一个传输周期的总线使用权授予某个申请者。
- 寻址阶段
主设备通过总线给出要访问的从设备地址有关命令,启动从模块。
- 传输阶段
主模块和从模块进行数据交换。
- 释放阶段
主模块的有关信息均从系统总线上撤出,让出总线使用权。
数据传输方式
总线上的数据传送方式分为非突发方式
和突发方式
。
- 非突发方式
每个传送周期内都先传送地址,再传送数据,每次只能传送一个数据。
- 突发传送方式
能够进行连续数据的传送,其寻址阶段发送的是连续数据单元的首地址,在传输阶段传送多个连续单元的数据,但是不释放总线,直到所有数据传送完毕后,再释放总线。
6.2.2 总线定时
主设备获得总线使用权后,就可以开始和总线与从设备传送信息,实现具体的总线事务。
具体总线事务的每一个步骤、总线上的每一个信号、何时开始、何时结束就是总线的定时问题
。
常见的总线通信定时方式有同步方式
、异步方式
、半同步方式
和分离事务通信方式
4种。
同步定时方式
同步定时方式
下,通信双方均在统一时间总线时钟控制下进行信息传输,总线事务中的每一个操作都与总线时钟信号相关,所有操作都是按照相关协议事先安排好且时间固定的。
寻址阶段
- 主设备在第一个时钟周期内将目标从设备(存储器)的地址送入地址总线,同时设置相关状态线,表明当前地址有效;
- 通过控制总线给出读请求命令之后开始等待,等待时间是固定的。
传输阶段
- 从设备通过状态线发现地址总线有效且地址总线上的地址与自己的地址区间相匹配,根据读命令开始准备数据,延迟固定的节拍(一个存储周期)后,将读出的数据送入数据总线。
- 主设备在等待了固定节拍后默认数据总线上的数据有效,自动取走总线上的数据。当然这种默认机制会带来可靠性问题。
结束阶段
- 主设备撤销相关地址、命令和状态信号,从设备撤销数据总线的数据输出,至此主从设备完成一次同步的读数据操作。
优点:传输速度快,具有较高传输速率;总线控制逻辑简单。
缺点:主从设备属于强制性同步,不能及时进行数据通信的有效性检验,可靠性较差。
同步通信适用于总线长度较短及总线所接部件的存取时间比较接近的系统。
异步定时方式
在异步定时方式
中,没有统一的时钟,也没有固定的时间间隔,完全依靠双方相互制约的握手
信号来实现定时控制。
通常,主设备提出交换信息的请求信号,传送到从设备;从设备收到请求后,向主设备发出回答信号。根据请求和回答信号的撤销是否互锁,分为3种类型。
- 不互锁方式
主设备发出请求信号后,不必等到从设备的回答信号,而是经过一段时间便撤销请求信号。从设备接到请求信号后,发出回答信号,并在一段时间后自动撤销回答信号。双方不存在互锁关系。
- 半互锁方式
主设备发出请求信号后,必须在接到从设备回答信号后,才撤销请求信号,有互锁的关系。
从设备接到请求信号后,发出回答信号,但不必等待获知主设备的请求信号已经撤销,而是隔一段时间之后自动撤销回答信号,不存在互锁关系。
- 全互锁方式
主设备发出请求信号后,必须在从设备回答后才撤销请求信号。
从设备发出回答信号后,必须在获知主设备请求信号已撤销后,再撤销其回答信号,双方存在互锁关系。
三种异步方式中,全互锁协议最慢,可靠性最高;非互锁协议最快,可靠性最差。
比起同步方式,异步方式特点如下:
优点:总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合。
缺点:比同步控制方式稍复杂一点,速度比同步定时方式慢。
半同步定时方式
异步应答方式对噪声非常敏感,为解决这个问题,可以在异步总线中引入时钟信号,这种方式就是半同步定时方式
。
在同步存储器读时序的基础上引入了一个等待信号Wait
,表示存储器还没有准备好数据。
- 存储器在接收到主设备的读请求后,如果还没有准备好数据,则将Wait信号置位,插入等待周期,让主设备等待。
- 当数据准备好并发送到数据总线时,存储器撤销Wait信号,主设备检测到Wait信号消失时取走数据总线上的数据。
这种方式中,主设备的等待时间并不是固定的,而是设备根据自己情况决定的。
半同步定时同时具有同步和异步定时的优势,既保留了所有信号都由公共时钟定时的特点,又保留了异步通信允许不同速率的设备协同工作的特点,可以有效解决异步传输中的噪声敏感问题。
优点:控制方式比异步定时简单,可靠性较高。
缺点:系统时钟频率不能要求太高,从整体上看,系统工作的速度不是很高。
以上三种定时方式都从主设备发出地址和读/写命令开始,直到数据传输结束,总线的使用权完全由主设备及其选中的从设备占据。
分离式定时方式
存储器准备数据的过程中总线并不能进行任何操作,浪费时钟周期。
分离事务通信协议交互过程如下:
- 主设备向从设备发出读请求信号,给出地址和请求命令。
- 当从设备进行应答后,主设备立即释放总线控制权。
- 从设备准备数据,此时总线用于处理其他总线事务。
- 从设备准备好数据后,将作为主设备重新申请使用总线,并将数据放置在数据总线上。
- 原主设备通过总线接收数据。
这种方式大大提高了总线利用率,但是控制方式更加复杂。
6.3 同步/异步串行通信方式
6.3.1 同步串行通信方式
同步串行通信方式
是发送方时钟直接控制接收方时钟,使双方完全同步的一种逐位传输的通信方式,该方式下,除数据传输线
外还应包括时钟线
。
同步串行通信方式是将多个字节数据组成一个信息帧
进行传输,信息帧大小为几十到几千个字节不等,每帧的开始用一个或两个特殊的同步字符
来指示传送开始,结尾也有相同的结束字符
来指示传送结束。
接收方检测到同步字符就开始接受数据,直到检测到结束字符。
使用同步串行通信时,由于收发双方的时钟严格一致,因此仅在数据块的头尾添加了开始和结束标记,传输效率较高,但是实现的硬件也更复杂,所以较少采用。
6.3.2 异步串行通信方式
异步串行通信
传输双方各自都有独立的时钟,但传输双方应该按约定的速率发送和接收数据,传输时利用信息帧中的起、停信号来进行数据同步。
异步串行通信是按字符传输的,一个信息帧传输一个字符,信息帧长度固定,从前往后依次是起始位
、5-7位有效数据
,奇偶校验位
、1-2个停止位
。
重新开始新的信息帧传输之前,停止位一直保持高电平,这样可以保证重新开始的时候起始位处一定有一个下降沿,标志新的传输开始。
不同速度的设备之间传送数据,既可以采用同步也可以采用异步方式,但若速度相差过大,最好采用异步方式。因为同步方式下,主从设备必须按照统一的时钟进行同步,速度差距较大的时候会产生时钟偏移问题,双方无法形成统一的时钟。