计算机组成原理 第七章 输入/输出系统
🚥计算机组成原理 系列文章导航🚥
一、I/O 接口
I/O 接口:也称 I/O 控制器、设备控制器,负责协调主机与外部设备之间的数据传输。
1.I/O 接口的功能

-
数据缓冲:通过数据缓冲寄存器(DBR)达到主机和外设工作速度的匹配。
-
错误或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供 CPU 查用。
-
控制和定时:接收从控制总线发来的控制信号、时钟信号。
-
数据格式转换:串->并、并->串等输出格式的转换。
-
与主机和设备通信:实现 “主机 - I/O 接口 - I/O 设备” 之间的的通信。
2.I/O 接口的基本结构和功能
数据缓冲寄存器用来暂存 CPU 或内存之间传送的数据信息;状态寄存器用来记录接口和设备的状态信息;控制寄存器用来保存 CPU 对外设的控制信息。状态寄存器和控制寄存器在传送方向上是相反的,在访问时间上也是错开的,因此可将它们合二为一。
-
数据线:读写数据、状态字、控制字、中断类型号
-
地址线:指明 I/O 端口
-
控制线:读/写 IO 端口的信号、中断请求信号
注意:IO 控制器中的各种寄存器称为 I/O 端口,例如控制器寄存器称为控制端口。要注意端口和接口是两个不同的概念。
![]()
工作流程:
-
发命令:发送命令字(也叫控制字)到控制寄存器,向设备发送命令(需要驱动程序的协助,因为每个设备所能识别的命令码不同)
-
读状态:从状态寄存器读取状态字,获得设备或 I/O 控制器的状态信息
-
读/写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换
3.I/O 接口的类型
从不同的角度看,I/O 接口可以分为不同的类型:
-
按数据传送方式(外设和接口一侧):分为并行接口(一字节或一个字的所有位同时传送)和串行接口(一位一位地有序传送),接口要完成数据格式的转换。
-
按主机访问 I/O 设备的控制方式:分为程序查询接口、中断接口和 DMA 接口等。
-
按功能选择的灵活性:分为可编程接口(通过编程改变接口功能)和不可编程接口。
4.I/O 端口编址
I/O 端口想要能够被 CPU 访问,就必须要对各个端口进行编址,每个端口对应一个端口地址,编址方式有与存储器统一编址和独立编址两种。
统一编制:把 I/O 端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问 I/O 端口,又称为存储器映射方式。
靠不同的地址码区分内存和 I/O 设备,I/O 地址要求相对固定在地址的某些部分。
-
优点:不要需要专门的输入/输出指令,所以访存指令都可直接访问端口,编程设计灵活性高;端口有较大的编址空间;读写控制逻辑电路简单。
-
缺点:端口占用了主存地址空间,使主存地址空间变小;外设寻址时间长(地址位数越多,地址译码速度越慢)。
独立编制:I/O 端口地址与存储器地址无关,独立编制 CPU 需要设置专门的输入/输出指令访问端口,又称 I/O 映射方式。
靠不同的指令区分内存和 I/O 设备。
-
优点:使用专用 I/O 指令,程序编制清晰;I/O 端口地址位数少,地址译码速度快;I/O 端口的地址不占用主存地址空间。
-
缺点:I/O 指令类型少,一般只能对端口进行传送操作,程序设计灵活性差;需要 CPU 提供存储器读/写、I/O 设备读/写两组控制信号,增加了控制逻辑电路的复杂性。
注意:对数据缓存寄存器、状态/控制寄存器的访问操作是通过相应的指令来完成的,通常称这类指令为 I/O 指令,I/O 指令只能在操作系统内核的底层 I/O 软件中使用,它们是一种特权指令。
二、I/O 方式
1.程序查询方式
根据 CPU 查询 I/O 设备状态的方式的不同,程序查询方式又可以分为两种:
-
独占查询:一旦设备被启动,CPU 就一直持续查询接口状态,CPU 花费 100% 的时间用于 I/O 操作,此时外设和 CPU 完全串行工作。
-
定时查询:CPU 周期性地查询接口状态,每次总是等到条件满足才进行一个数据的传送,传送完成后返回到用户程序。定时查询的时间间隔与设备的传输速率有关(需要确保数据不丢失)。
优点:接口设计简单、设备量少。
缺点:CPU 在信息传送过程中要花费很多时间用于查询和等待,而在一段时间内只能和一台外设交换信息,效率大大降低。
2.中断系统
(1)基本概念
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU 暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完成后 CPU 又自动返回到现行程序的断点处,继续执行源程序。
在 PSW 中存在一个 IF 标志位,IF = 1 表示开中断(允许中断),IF = 0 表示关中断(不允许中断)。但存在一些非屏蔽中断在关中断时也会被响应,例如强制关机。
关中断的作用:实现原子操作。
(2)中断请求标记
每个中断源向 CPU 发出中断请求的时间是随机的,为了记录中断时间并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器 INTR。当其状态为 “1” 时,表示中断源有请求。
这些触发器可组成中断请求标记寄存器,该寄存器可集中在 CPU 中,也可分散在各个中断源中。
对于外中断,CPU 是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取 I/O 的中断请求,也就是说,CPU 响应中断的时间是在每条指令执行阶段的结束时刻。
CPU 响应中断需要满足三个条件:
-
中断源有中断请求。
-
CPU 允许中断,即开中断。
-
一条指令执行完毕,且没有更紧迫的任务。
(3)中断判优
当有多个中断信号同时到来,需要进行中断判优。中断判优既可以用硬件实现,也可以用软件实现。
-
硬件实现是通过硬件排队器实现的,它既可以设置在 CPU 中,也可以分散在各个中断源中。
-
软件实现是通过查询程序实现的。

中断判优的优先级设计:
-
硬件故障中断属于最高级,其次是软件中断。
-
非屏蔽中断优于可屏蔽中断。
-
DMA 请求优于 I/O 设备传送的中断请求。
-
高速设备优于低速设备。
-
输入设备优于输出设备。
-
实时设备优于普通设备。
(4)中断响应过程
中断隐指令:保存源程序的 PC 值,并让 PC 指向中断服务程序的第一条指令。是一系列的任务,而不是某个特殊的指令。
中断隐指令的主要任务:
-
1.关中断:将中断允许标志设置为禁止(即关中断)状态,这时将屏蔽掉所有可屏蔽中断请求。
-
2.保存断点:将 PC 和 PSW 送入栈或特殊寄存器。
-
3.识别中断源并转中断服务程序:通过某种方式,获得优先级最高的中断源所对应的中断服务程序的首地址和初始 PSW,并分别送 PC 和 PSWR。
注意1:x86 机器保存 PC 和 PSW 到内存栈中;MIPS 机器没有 PSW,只保存 PC 到特定寄存器中。
注意2:整个响应过程是不可打断的,中断隐指令结束后,CPU 就从 PC 中取出对应中断服务程序的第一条指令开始执行,直至中断返回,这部分任务是由 CPU 通过执行中断服务程序完成的,整个中断处理过程是由软硬件协同实现的。
确定某一个中断信号所对应的中断服务程序的起始地址可以使用软件查询法和硬件向量法两种方式。
硬件向量法:由硬件产生向量地址,再由向量地址找到入口地址。

注意1:中断向量是函数的指针,向量地址是中断向量的指针,即指针的指针。
注意2:中断类型号是通过数据总线传递给 CPU 的。
中断服务程序的主要任务:
-
1.保护现场:进入中断服务程序后首先要保存现场,现场信息是指用户可见的工作寄存器的内容,它存放程序执行到断点处的现行值。可以使用堆栈、也可使用特定存储单元。
-
2.中断服务(设备服务):中断服务的过程中有可能修改寄存器的值。
-
3.恢复现场:通过出栈指令或取数指令把之前保存的信息送回寄存器中。
-
4.中断返回:通过中断返回指令回到原程序断点处。
(5)多重中断
前面所描述的中断过程为单重中断。
-
单重中断:执行中断服务程序时不响应新的中断请求。
-
多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。

中断屏蔽技术主要用于多重中断,CPU 要具备多重中断的功能,需满足下列条件:
-
在中断服务程序中提前设置开中断指令。
-
优先级别高的中断源有权中断优先级别低的中断源。
每个中断源都有一个屏蔽触发器,1 表示屏蔽该中断源的请求,0 表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
屏蔽字中 1 越多,优先级越高。每个屏蔽字中至少有一个 1(至少要能屏蔽自身的中断)。

3.程序中断方式
从宏观上看,程序中断方式克服了程序查询方式中 CPU 的等待现象,提高了 CPU 的利用率。 但从微观操作分析,CPU 在处理中断时,仍需暂停原程序的运行,尤其是当高速设备频繁地与主存交换信息时,需要不断打断 CPU 执行现行程序而去执行中断服务程序。
4.DMA 方式
(1)DMA 方式的特点
DMA 方式是一种完全由硬件进行成组信息传送的控制方式,在外设与内存之间开辟了一条直接数据通路,信息传送不再经过 CPU,降低了 CPU 在传送数据时的开销,因此称为直接存储器存取方式。
在 DMA 方式中,中断的作用仅限于故障和正常传送结束时的处理。
DMA 方式具有以下特点:
-
它使主存与 CPU 的固定联系脱钩,主存既可被 CPU 访问,又可被外设访问。
-
在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
-
主存中要开辟专用缓冲区,以及时提供和接收外设的数据。
-
DMA 传送速度快,CPU 和外设并行工作,提高了系统效率。
-
DMA 在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
(2)DMA 控制器的组成
DMA 方式中,对数据传送过程中进行控制的硬件称为 DMA 控制器(DMA 接口),主要功能如下:
-
接受外设发出的 DMA 请求,并向 CPU发出总线请求。
-
CPU 响应并发出总线响应信号,DMA 接管总线控制权,进入 DMA 操作周期。
-
确定传送数据的主存起始地址及长度,并自动修改主存地址计数和传送长度计数。
-
规定数据在主存和外设间的传送方向,发出读/写等控制信号,执行数据传送操作。
-
向 CPU 报告 DMA 操作结束。
注意:在 DMA 传送过程中,DMA 控制器将接管 CPU 的地址总线、数据总线和控制总线,CPU 的主存控制信号被禁止使用。而当 DMA 传送结束后,将恢复 CPU 的一切权利并开始执行其操作。
(3)DMA 传送过程
(4)DMA 传送方式
主存和 DMA 控制器之间有一条数据通路(三总线结构),当 I/O 设备和 CPU 同时访问主存时,可能发生冲突,为了有效地使用主存,DMA 控制器与 CPU 通常采用以下三种方式使用主存。
1.停止 CPU 访问主存
当 I/O 设备有 DMA 请求时,由 DMA 接口向 CPU 发送一个停止信号,使 CPU 放弃总线控制权,停止访问主存,直到 DMA 传送一块数据结束。结束后,DMA 通知 CPU 可以使用主存,并把总线控制权交回给 CPU。

-
优点:控制简单,适用于数据传输速率很高的 I/O 设备实现成组数据的传送。
-
缺点:DMA 在访问主存时,CPU 基本上处于不工作状态。
2.DMA 与 CPU 交替换访存
将 CPU 的工作周期分成两个时间片,一个给 CPU 访存,另一个给 DMA 访存,这样在每个 CPU 周期内,CPU 和 DMA 就都可以轮流访存。
这种方式适用于 CPU 的工作周期比主存存取周期长的情况。且该方式不需要申请、建立和归还总线使用权,总线使用权是通过两个时间片分时控制的。

-
优点:不需要总线控制权的申请、建立和归还过程,具有很高的传送速率。
-
缺点:相应的硬件逻辑变得更复杂。
3.周期挪用(周期窃取)
周期挪用的周期指存取周期。由于 I/O 访存的优先级高于 CPU 访存(I/O 不立即访存酒可能丢失数据),因此由 I/O 设备挪用一个存取周期,传送完一个数据字后立即释放总线,是一种单字传送方式。
当 I/O 设备有 DMA 请求时,会遇到三种情况:
-
此时 CPU 不在访存,因此 I/O 的访存请求与 CPU 未发生冲突。
-
CPU 正在访存,此时必须待存取周期结束后,CPU 再将总线占有权让出。
-
I/O 和 CPU 同时请求访存,出现访存冲突,此时 CPU 要暂时放弃总线占有权。

-
优点:既实现了 I/O 传送,又较好地发挥了主存与 CPU 的效率。
-
缺点:每挪用一个主存周期,DMA 接口都要申请、建立和归还总线控制权。
5.DMA 方式和中断方式的区别
中断 | DMA | |
---|---|---|
数据传送 | 程序控制:程序的切换 -> 保存和恢复现场 | 硬件控制(CPU 只需进行预处理和后处理) |
中断请求 | 传送数据 | 后处理 |
响应 | 指令执行周期结束后响应中断 | 每个机器周期结束均可,总线空闲时即可响应 DMA 请求 |
场景 | CPU 控制,低速设备 | DMA 控制器控制,高速设备 |
优先级 | 优先级低于 DMA | 优先级高于中断 |
异常处理 | 能处理异常事件 | 仅传送数据 |