总线是计算机内数据传输的公共路径,用于实现两个或以上部件之间的信息交换。计算机系统中有多种总线,它们在各个层次上提供部件之间的连接和信息交换通路。
- 核内总线:在处理器核内部各元件之间连线的总线称为核内总线,可连接核内各寄存器、ALU、指令部件等
- 系统总线:指连接处理器芯片、存储器芯片和各种I/O模块等主要部件的总线,通常所说的总线是指这类在系统主要模块之间互连的总线。
系统总线
一、组成:通常由一组控制线、一组数据线和一组地址线构成。也有些总线没有单独的地址线,即数据线和地址线复用
- 数据线:用来承载在源部件和目的部件之间传输的信息,可能是CPU和主存之间交换的数据或从主存取出的指令,也可能是CPU向I/O模块发出的控制命令或从I/O模块收集到的状态信息。数据线和地址线复用的话,数据线上也可以传送地址信息
- 地址线:用来给出源数据或目的数据所在的主存单元或I/O模块的地址。地址线是单向的,总是由CPU将地址信息送到地址线,然后传送给CPU要访问的主存储器或I/O模块
- 控制线:用来控制对数据线和地址线的访问和使用。用来传输定时信号和命令信息。除地址线和数据线以外的通信线都称为控制线,如用于传送时钟、复位、总线操作控制、总线请求和总线回答等信号的传输线
二、同步和异步问题(总线定时方式)
同步:
- 同步定时方式:指系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系
- 同步总线:传统的总线大多是同步总线,采用公共的时钟信号进行定时。挂接在总线上的所有设备都从时钟线上获得定时信号。
- 工作方式:若处理器通过总线访问存储器,可规定协议如下:主控设备(即处理器)在第一个时钟周期发送地址和存储器读命令,从设备(即存储器)总是在第五个时钟周期将数据放到总线上作为响应,处理器也是在第五个时钟周期从数据线上取数据
- 优点:传送速度快,具有较高的传输速率,总线控制逻辑简单
- 缺点:
- 总线定时以最慢设备所用时间为标准,因此同步总线适合存取时间相差不大的多个功能部件之间的通信
- 同步总线不能过长,否则会降低总线传输效率。同步总线通常采用并行传输方式,因此使用更快传送速度、更长传输线的总线时,会导致传送到另一端的波形变形
- 主从设备属于强制性同步
- 不能及时进行数据通信的有效性检验,可靠性较差
- 总线周期:若干个时钟产生相等的时间间隔,每个时间间隔构成一个总线周期。在一个总线周期中,发送方和接收方可进行一次数据传送。
异步:
- 异步定时方式:没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方相互制约的“握手”信号来实现定时控制
- 异步总线:现在大多采用异步串行总线。
- 工作方式:主设备提出交换信息的“请求”信号,经接口传送到从设备;从设备接到主设备的请求后,通过接口向主设备发出“回答”信号
- 根据“请求”和“回答”信号的撤销是否互锁,分为三种类型:
- 不互锁方式(速度最快、可靠性最差):主设备发出“请求”信号后,不必等到接到从设备的“回答”信号,而是自己经过一段时间后便撤销“请求”信号;从设备接到“请求”信号后,发出“回答”信号,并经过一段时间自动撤销“回答”信号
- 半互锁方式:主设备发出“请求”信号后,必须接到从设备的“回答”信号,才能撤销“请求”信号;从设备接到“请求”信号后,发出“回答”信号,并经过一段时间自动撤销“回答”信号
- 全互锁方式(速度最慢、最可靠):主设备发出“请求”信号后,必须接到从设备的“回答”信号,才能撤销“请求”信号;从设备接到“请求”信号后,发出“回答”信号,且必须获知主设备“请求”信号已撤销后,才能撤销“回答”信号
- 优点:
- 总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合
- 因为串行,每次在一根信号线上传送数据位,因此传输速率可以比并行总线高得多
- 缺点:比同步控制方式稍复杂一些,速度比同步定时方式慢
半同步
半同步通信是指在统一时钟的基础上,增加一个“等待”相应信号 W A I T ‾ \overline{WAIT} WAIT
- 工作方式:主设备在第一个时钟发出地址信号,在第二个时钟的上升沿发出读命令,在同步定时方式中,第二个时钟后,从设备需要准备好数据,但有的从设备可能跟不上节奏,所以这时它会通过控制线路给总线的控制器进行反馈,让总线控制器等自己几个节拍。所以后面的 T W T_W TW两个节拍其实就是总线控制器在等待从设备准备数据。经过两个等待节拍后,从设备准备好数据,并在 T 3 T_3 T3节拍把准备好的数据通过数据总线发送给主设备。最后在 T 4 T_4 T4节拍,主设备撤销读命令以及地址信息。这样就完成了半同步的总线传输工作
- 评价:同步定时方式,每个总线传输周期都是定长的,都是固定为四个总线的时钟周期;
而半同步的通信方式结合了异步通信方式的一个优点,即增加了一个等待的反馈信号,这样,总线控制器就可以根据这个反馈信号来动态调节传输周期里面应该包含的时钟周期数。而之所以称为半同步通信方式,是因为它也有一个统一的时钟节拍,但是由于可以动态的调整每一个传输周期内包含的时钟节拍数,因此它也能够支持速度差异比较大的主设备和从设备之间进行数据的交互,是同步和异步思想的结合
分离式通信
- 上述三种的共同点是一个总线传输周期有这三个阶段:
- 主模块发地址和命令(使用总线)
- 从模块准备数据(总线空闲,但主从设备依然占着总线的控制权)
- 从模块向主模块发数据(使用总线)
- 分离式通信:
- 思想:把总线周期切分为两个独立的子周期,充分利用从设备准备数据的这段时间,在这段时间把总线的使用权分配给其他的设备来使用,让总线的数据传输效率更高
- 子周期1:主模块申请占用主线,使用完后放弃总线的使用权
- 子周期2:从设备(接收到主设备请求,并准备好数据后)申请占用总线,将各种信息送至总线
- 特点:
- 各模块均有权申请占用总线
- 采用同步方式通信,不等对方回答(即主设备在规定的节拍内发出请求信号,不需要等待从设备的回应)
- 各模块准备数据时,不占用总线
- 总线利用率提高
- 思想:把总线周期切分为两个独立的子周期,充分利用从设备准备数据的这段时间,在这段时间把总线的使用权分配给其他的设备来使用,让总线的数据传输效率更高
三、总线的性能
- 总线宽度:每次能同时传输的信息位数,也即数据线的条数
- 总线带宽:即总线在数据传输时单位时间内最多可传输的数据量,也即总线的最大数据传输率。通常用每秒传送信息的字节数来衡量,单位可用字节/秒表示(B/s)。 总线带宽 = 总线工作频率 × ( 总线宽度 8 ) 总线带宽=总线工作频率\times\left(\dfrac{总线宽度}{8}\right) 总线带宽=总线工作频率×(8总线宽度)
- 总线工作频率:总线上各种操作的频率,为总线周期的倒数。即一秒内传送几次数据。若总线周期=N个时钟周期,则总线的工作频率= 时钟频率 N \dfrac{时钟频率}{N} N时钟频率
- 总线传输周期:指一次总线操作所需的时间,包括申请阶段、寻址阶段、传输阶段和结束阶段。总线传输周期通常由若干总线时钟周期构成
- 总线时钟周期:即机器的时钟周期。计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制
- 总线时钟频率:即机器的时钟频率,它为时钟周期的倒数
- 总线寻址能力:即由地址线位数所确定的可寻址地址空间的大小
- 总线定时方式:
- 同步:通信总线由时钟信号同步
- 异步:前一个信号的结束就是下一个信号的开始,信息的改变是顺序的
- 半同步:前两者的结合
- 总线传送方式:
- 非突发方式:每个传送周期内都是先传送地址,再传送数据
- 突发方式:开始先给出数据块在存储器中的首地址,然后可连续传送数据块中的后续数据,无需在地址线上传送后续数据的地址信息。
- 总线负载能力:指总线上所能挂接的遵循总线电气规范的总线设备的数目。
- 总线的最主要性能指标为总线宽度、总线(工作)频率、总线带宽,总线带宽是指总线本身所能达到的最高传输速率,是衡量总线性能的重要指标。总线带宽=总线宽度 × \times ×总线频率
基于总线的互连结构
早期传统的基于总线互连的计算机结构示意图如下:
图解:
- 北桥芯片和南桥芯片:是两块超大规模集成电路芯片,它们组成一个“芯片组”,是计算机中各个组成部分相互连接和通信的枢纽。主板上所有的存储器控制功能和I/O控制功能几乎都集成在该芯片组内,既实现了总线的功能,又提供了各种I/O接口及相关的控制功能
- 北桥:是一个主存控制器集线器(Memory Controller Hub, MCH)芯片,本质上是一个DMA(direct memory access)控制器。因此可通过MCH芯片,直接访问主存和显卡中的显存
- 南桥:是一个I/O控制器集线器(I/O controller hub, ICH)芯片,其中可以集成USB控制器、磁盘控制器、以太网络控制器等各种外设控制器,也可通过南桥芯片引出若干主板扩展槽,用以接插一些I/O控制卡。
- CPU与主存之间:通过处理器总线(即前端总线、CPU总线)和存储器总线相连。处理器-存储器总线比较短,通常是高速总线。二者通常是分开的,它们之间可通过北桥芯片连接,CPU芯片连在处理器总线上,内存条连在存储器总线上。
- I/O设备与主存、CPU之间:通过相应的设备控制器,连接到I/O总线上,而I/O总线通过芯片组与主存和CPU相连
一、处理器总线
- 功能:用作处理器与北桥芯片进行信息交换,是主板上最快的总线
- 后期:Intel推出Core i7时,北桥芯片的功能(主存控制)被集成到了CPU芯片内,而CPU通过存储器总线和内存条相连。而在CPU芯片内部的核与核之间、CPU芯片与其他CPU芯片之间、CPU芯片与IOH芯片之间,通过QPI(quick path interconnect)总线相连。这种图如下:
二、存储器总线
- 早期:如上图,早期的存储器总线由北桥芯片控制,处理器通过北桥芯片和主存储器、显卡以及南桥芯片进行互连
- 后期:Core i7以后的处理器芯片中集成了主存控制器,因而存储器总线直接连到处理器
三、I/O总线
- 功能:用于为系统中的各种I/O设备提供输入/输出通路
- 是什么:物理上通常是主板上的一些I/O扩展槽
- 后期:将北桥芯片功能集成到CPU芯片后,主板上的芯片组不再是传统的三芯片结构(CPU+北桥+南桥)。根据不同的组合,现在有多种主板芯片组结构,如:
- 双芯片结构(CPU+PCH):PCH(platform controller hub)芯片包含原来南桥(ICH)的I/O控制器集线器功能,以及北桥中的图形显示控制单元、管理引擎单元、NVRAM控制单元
- 三芯片结构(CPU+IOH+ICH)
- I/O接口:
- 功能:在各个外设和主机之间的逻辑部件,用于解决它们之间的同步与协调、工作速度的匹配和数据格式的转换等问题。(因为CPU、内存等计算机主机部件采用高速元器件,使得主机和外设之间在技术特性上有很大差异,它们之间采用异步工作方式)
- 在哪里:外设的I/O接口位于外设和I/O总线之间的部分,又称设备控制器、I/O控制器、I/O控制接口、I/O模块。不同的外设往往对应不同的设备控制器。其独立于外部设备,可集成在主板上或以插卡的形式插接在I/O总线扩展槽上,如下图就是一些外设I/O接口
- 工作方式:外设的I/O接口根据从CPU接收到的控制命令来对相应外设进行控制。它在主机一侧与I/O总线相连(内部接口),进而和CPU、内存相连,在外设一侧提供相应的连接器插座(外部接口),在插座上连上相应的连接外设的电缆,就可以将外设通过相应的I/O接口连接到主机,下图即集中供暖连接外设的连接器插座。通过I/O接口,可以在CPU、主存和外设之间建立一个高效的信息传输“通路”,这个“通路”即:CPU和内存 ---- I/O总线 ---- I/O接口(带连接器插座的设备控制器)---- 电缆 ---- 外设
- 具体职能:
- 数据缓冲:由于主存和CPU寄存器的存取速度非常快,而外设速度较低,所以在I/O接口中引入数据缓冲寄存器,可以实现主机和外设工作速度的匹配
- 错误或状态检测:在I/O接口中提供状态寄存器,以保存各种状态信息,供CPU查用。
- 状态检测:如设备是否完成打印或显示,是否已准备好输入数据以供主机来读取
- 错误检测:如设备电路故障或异常情况,以及数据传输错(通过采用数据校验码来检测)
- 控制和定时:提供控制和定时逻辑,以接收从I/O总线传来的控制命令(命令字)和定时信号。CPU根据程序中的I/O请求,选择相应的设备进行通信,要求一些内部资源(如主存或寄存器、总线等)参与到I/O过程中,这样I/O接口就必须提供定时和控制功能,以协调内部资源与外设之间动作的先后关系,控制数据通信过程
- 数据格式转换:提供数据格式转换部件(如进行串-并转换的移位寄存器),使通过外部接口得到的数据转换为内部接口需要的格式,或在相反的方向进行数据格式转换。
- 看图记I/O接口:
- I/O接口与内部:通过I/O总线与内存、CPU相连
- 数据线:
- 通过数据线,在数据缓冲寄存器与内存或CPU的寄存器之间进行数据传送。
- 同时I/O接口和设备的状态信息记录在状态寄存器中,通过数据线可将状态信息送到CPU,以供查用。
- CPU对外设的控制命令也是通过数据线传送的,一般将其送到I/O接口的控制寄存器。状态寄存器和控制寄存器在传送方向上相反,且CPU对它们的访问在时间上错开,因此有的I/O接口中它们合二为一
- 地址线:用于给出要访问的I/O接口中寄存器的地址,和读写控制信号一起被送到I/O接口的I/O控制逻辑部件中
- 控制线:通过控制线传送读/写控制信号,还有一些仲裁信号和握手信号等
- I/O控制逻辑:
- 通过地址线传送的地址信息,和通过控制线传送来的读/写控制信号一起被送到I/O接口的I/O控制逻辑部件中,其中地址信息用于选择和主机交换数据的寄存器,读/写控制信号也有可能参与地址译码。如利用读/写信号确定是接受寄存器还是发送寄存器。
- 此外,I/O控制逻辑还要能对控制寄存器中的命令字进行译码,并将译码得到的控制信号通过外设界面控制逻辑(带连接器插座)送外设,同时将数据缓冲寄存器的数据发送到外设或从外设接收数据到数据缓冲寄存器。
- 另外,还要有收集外设状态到状态寄存器的功能
- CPU通过地址线指明它要往哪个寄存器里读或写数据,通过控制线发出读还是写的命令,用于指明对这个寄存器是读还是写。此外控制线还会用于给CPU反馈中断请求信号(如I/O设备完成操作,会通过控制线给CPU发送一个中断请求,让它处理后续的操作)。CPU要输入或输出的数据都是通过数据线进行传送,此外数据线也会用于传输状态字和命令字(命令字也称控制字),此外数据线还会用于传输中断类型号(如一个设备工作已完成,需要给CPU发送一个中断,而若设备出现故障,也需要CPU进行不同的中断处理,所以为了让CPU知道当前这个中断请求到底应该怎么处理,需要通过数据线,再结合状态寄存器里的内容给CPU反馈一个具体的中断类型号,让CPU 知道接下来应该怎么处理)
- 关于指明设备号的问题:有两种方式
- 有的系统中,地址线除了指明CPU要读或写的寄存器之外,也会用来指明具体的设备编号。但需要分两次传输
- 有的系统中,每一个外设都有一个与之对应的一组寄存器(数据寄存器+状态/控制寄存器),当CPU要操作不同设备时就往与该设备对应的寄存器组中读写数据即可
- 数据线:
- I/O接口与内部:通过I/O总线与内存、CPU相连
- I/O端口的编址(即I/O接口中寄存器们的编址)
- 独立编址方式:有独立的I/O地址空间,因此指令系统要有专门的I/O指令来访问I/O端口,并在I/O指令的地址码部分给出I/O端口号
- 统一编址方式:I/O地址空间与主存地址空间统一编号,根据地址范围区分访问的是I/O端口还是主存单元,因此无需设置专门的I/O指令,只要一般的访存指令就可存取I/O端口,有非常大的灵活性
I/O数据传送控制方式
主要有三种:程序直接控制、中断控制、DMA控制
一、程序直接控制I/O方式
直接通过查询程序来控制主机和外设之间的数据交换,有无条件传送和条件传送两种:
- 无条件传送方式(同步)
- 工作方式:处理器对外设的I/O接口进行周期性的定时访问,直接对I/O端口进行数据存取。即通过程序来定时,以在规定的时间用相应的I/O指令对接口中的寄存器进行信息的输入或输出
- 评价:对于慢速设备,因为定时访问时间间隔长,所以I/O操作所用的处理器时间占整个处理器时间的比例较少,对处理器效率影响不大;对于快速设备,因为需要频繁I/O访问,所以很多处理器时间被I/O操作占用,因而这种方式不适用于高速设备的I/O
- 条件传送方式(异步)(也称为程序查询方式)
- 工作方式:通过查询程序中安排相应的I/O端口访问指令,由这些指令直接从I/O接口中取得外设和接口的状态(如就绪、忙、完成),根据状态来控制外设和主机的信息交换
- 评价:设备是否适合采用条件传送方式,主要取决于I/O设备本身的特点以及设备是否能够独立启动I/O等。
- 对于用户按下键盘、移动鼠标这种,虽然可独立启动I/O设备,但由于设备的启动是由用户随机进行的,所以有可能用户长时间没有输入而引起查询程序长时间等待,从而降低处理器的使用效率;
- 而对于像磁带、磁盘、光盘存储器等成块传送设备一旦被启动,便可连续不断传送一批数据,处理器无需对每个数据的传送进行启动,且每个数据之间的传输时间很短,若用定时查询方式,则会因为频繁查询而使处理器为I/O操作所花费的时间比例非常大,因此不适合采用程序查询方式
- 对于针式打印机等字符类设备,每个字符之间的传输时间很长,并且每传送一个字符需要启动一次,因而可以使用程序查询方式
- 程序查询I/O方式特点:简单、易控制、外围接口控制逻辑少。但CPU需要从外设接口读取状态,并在外设未就绪时一直处于忙等待。由于外设速度比处理器慢得多,所以在CPU等待外设完成任务的过程中浪费了许多处理器的时间
二、中断控制I/O方式
未完待续…
三、DMA方式
用专门的DMA接口硬件来控制外设与主存间的直接数据交换,数据不通过CPU。
主要用于磁盘等高速设备的数据传送
未完待续…