总线是计算机内数据传输的公共路径,用于实现两个或以上部件之间的信息交换。计算机系统中有多种总线,它们在各个层次上提供部件之间的连接和信息交换通路。
- 核内总线:在处理器核内部各元件之间连线的总线称为核内总线,可连接核内各寄存器、ALU、指令部件等
- 系统总线:指连接处理器芯片、存储器芯片和各种I/O模块等主要部件的总线,通常所说的总线是指这类在系统主要模块之间互连的总线。
系统总线
一、组成:通常由一组控制线、一组数据线和一组地址线构成。也有些总线没有单独的地址线,即数据线和地址线复用
- 数据线:用来承载在源部件和目的部件之间传输的信息,可能是CPU和主存之间交换的数据或从主存取出的指令,也可能是CPU向I/O模块发出的控制命令或从I/O模块收集到的状态信息。数据线和地址线复用的话,数据线上也可以传送地址信息
- 地址线:用来给出源数据或目的数据所在的主存单元或I/O模块的地址。地址线是单向的,总是由CPU将地址信息送到地址线,然后传送给CPU要访问的主存储器或I/O模块
- 控制线:用来控制对数据线和地址线的访问和使用。用来传输定时信号和命令信息。除地址线和数据线以外的通信线都称为控制线,如用于传送时钟、复位、总线操作控制、总线请求和总线回答等信号的传输线
二、同步和异步问题
- 同步总线:传统的总线大多是同步总线,采用公共的时钟信号进行定时。挂接在总线上的所有设备都从时钟线上获得定时信号。
- 工作方式:若处理器通过总线访问存储器,可规定协议如下:主控设备(即处理器)在第一个时钟周期发送地址和存储器读命令,从设备(即存储器)总是在第五个时钟周期将数据放到总线上作为响应,处理器也是在第五个时钟周期从数据线上取数据
- 缺点:
- 总线定时以最慢设备所用时间为标准,因此同步总线适合存取时间相差不大的多个功能部件之间的通信
- 同步总线不能过长,否则会降低总线传输效率。同步总线通常采用并行传输方式,因此使用更快传送速度、更长传输线的总线时,会导致传送到另一端的波形变形
- 异步总线:现在大多采用异步串行总线。
- 优点:因为串行,每次在一根信号线上传送数据位,因此传输速率可以比并行总线高得多。
三、总线的性能
- 总线宽度:每次能同时传输的信息位数,也即数据线的条数
- 总线工作频率
- 总线带宽:即总线在数据传输时单位时间内最多可传输的数据量,也即总线的最大数据传输率
- 总线寻址能力:即由地址线位数所确定的可寻址地址空间的大小
- 总线定时方式:
- 同步:通信总线由时钟信号同步
- 异步:前一个信号的结束就是下一个信号的开始,信息的改变是顺序的
- 半同步:前两者的结合
- 总线传送方式:
- 非突发方式:每个传送周期内都是先传送地址,再传送数据
- 突发方式:开始先给出数据块在存储器中的首地址,然后可连续传送数据块中的后续数据,无需在地址线上传送后续数据的地址信息。
- 总线负载能力:指总线上所能挂接的遵循总线电气规范的总线设备的数目。
基于总线的互连结构
早期传统的基于总线互连的计算机结构示意图如下:
图解:
- 北桥芯片和南桥芯片:是两块超大规模集成电路芯片,它们组成一个“芯片组”,是计算机中各个组成部分相互连接和通信的枢纽。主板上所有的存储器控制功能和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。
主要用于磁盘等高速设备的数据传送
未完待续…