计算机组成原理学习笔记(6)——输入输出设备

Posted by 皮皮潘 on 03-30,2022

输入输出设备组成

为了简化CPU与输入输出设备通信的方式,输入输出设备划分成了IO接口以及设备本身两大块。

在IO接口中存在输入寄存器、输出寄存器、状态寄存器、控制寄存器以及中断控制逻辑,通过IO接口,CPU只需要和IO接口上的寄存器打交道了,从而简化了通信方式,其基本结构如下图所示:
1734_1.png
一般计算机上都会有多个IO接口以用来连接外部输入输出设备,目前大部分的IO接口都内置在南桥中,而北桥往往用来连接CPU、内存、显卡以及南桥,另外随着对于CPU和内存以及显卡通信速度要求的提高,内存和显卡的通信路线也主键内置在CPU的线路中,而北桥也逐渐地被替代直至消失。

另外为了统一CPU对于IO设备的访问方式,目前主流的输入输出接口的编址方式主要有两种:

  1. PMIO:IO设备中IO接口寄存器的地址与内存地址编址方式分离,具体地址可能重叠冲突但是通过额外的信号与命令(IN OUT)区分地址是IO设备地址还是内存地址
  2. MMIO:IO设备中IO接口寄存器的地址与内存地址编址方式相同,但是互不重叠冲突

输入输出的控制方式

CPU控制IO设备进行数据输入输出的方式主要有一下三种:1. 程序控制方式 2. 中断控制方式 3. DMA方式,详细介绍如下:

程序控制方式

通过程序编码的方式(判断+Jmp),CPU不断轮询设备状态位从而决定是否读取或者写入数据,在状态位为1时,通过读取或写入设备接口寄存器的方式实现输入输出,此时CPU不能执行其他指令

中断控制方式

将IO接口的中断逻辑电路直接与CPU中断引脚相连,从而使得IO接口可以将中断发送给CPU

在读数据时,中断通知CPU何时数据准备好了,然后CPU通过中断程序去读取对应的数据,然后执行其他指令并等待下次中断

在写数据时,中断通知CPU何时可以写数据了,然后CPU通过中断程序去写对应的数据,然后执行其他命令并等待设备执行完成写入并可以下次写入数据

此时CPU可以执行其他指令,并及时地响应数据的可读可写状态,但是CPU仍然需要负责数据的传输

DMA方式

通过委托DMAC进行数据的传输功能,CPU只需要在DMAC中指定传输目的地、地址增减方式、传输来源、地址增减方式以及传输数据大小,DMA就会自发地与执行数据的传输,而CPU就可以继续去执行其他指令并且等待DMA传输结束的中断即可,从而解决了在中断控制方式下CPU需要运输数据的问题,DMA整体流程如下:

这里1738_1.png

需要注意的一点是:模块接口往往分为Master接口与Slave接口,只有Master接口可以主动地去向Slave接口发送数据或者读取数据,也即主动发起总线传输,而Slave接口则不能主动地向Master接口发送或读取数据,CPU是Master模块接口,DMAC既有Master模块接口又有Slave模块接口,内存与IO接口则只有从模块接口,因此内存与IO设备无法主动拉取数据,而只能发起拉取数据请求,由CPU或者DMAC等主设备去主动拉取数据

参考

  1. 《深入浅出计算机组成原理》
  2. 《编码:隐匿在计算机软硬件背后的语言》
  3. Coursera-北京大学-《计算机组成》