I/O接口、I/O控制方式
2. I/O接口
文章目录
详见:操作系统 - 5.输入输出(I/O)管理 - 2. I/O 控制器
I/O接口:又称I/O控制器(I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输。
2.1 I/O接口的作用
数据缓冲:通过数据缓冲寄存器(DBR)达到主机和外设工作速度的匹配;
错误或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用;
控制和定时:接收从控制总线发来的控制信号、时钟信号;
数据格式转换:串-并、并-串等格式转换;
与主机和设备通信:实现主机一I/o接口一I/o设备之间的通信。
2.2 结构
主机测:内部接口:内部接口与系统总线相连,实质上是与内存、CPU相连。
设备测:外部接口:外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此I/O接口需具有串/并转换功能。
2.3 工作原理
- 如何确定要操作的设备?
每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备。
2.4 I/O端口
I/O端口是指接口电路中可以被CPU直接访问的寄存器。
-
接口interface
- 端口port
- 数据端口、数据寄存器:读写
- 控制端口、控制寄存器:只能写
- 状态端口、状态寄存器:只能读
- 控制逻辑
- 端口port
-
如何访问I/O端?
2种方式:统一编制、独立编址。
- 统一编制:
把l/O端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问I/O端口,又称存储器映射方式。靠不同的地址码区分内存和l/O设备,I/O地址要求相对固定在地址的某部分。
优点:
- 不需要专门的输入/输出指令,所有访存指令都可直接访问端口,程序设计灵活性高;
- 端口有较大的编址空间;
- 读写控制逻辑电路简单。
缺点:端口占用了主存地址空间,使主存地址空间变小外设寻址时间长(地址位数多,地址译码速度慢)。
- 独立编址:
I/O端口地址与存储器地址无关,独立编址CPU需要设置专门的输入/输出指令访问端口,又称I/O映射方式。靠不同的指令区分内存和I/O设备。
优点:使用专用I/O指令,程序编制清晰I/O端口地址位数少,地址译码速度快I/O端口的地址不占用主存地址空间。
缺点:
- I/O指令类型少,一般只能对端口进行传送操作,程序设计灵活性差;
- 需要CPU提供存储器读/写、I/O设备读/写两组控制信号,增加了控制逻辑电路的复杂性。
有个图找不到了
2.5 分类
按数据传送方式可分为
- 并行接口:一个字节或一个字所有位同时传送
- 串行接口:一位一位地传送。
注:这里所说的数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,接口要完成数据格式转换。
按主机访问I/O设备的控制方式可分为
- 程序查询接口
- 中断接口
- DMA接口
按功能选择的灵活性可分为
- 可编程接口
- 不可编程接口
3. I/O控制方式
详见:操作系统 - 5.输入输出(I/O)管理 - 3. I/O 控制方式
CPU如何控制键盘I/O的完成?
3.1程序查询方式
程序查询方式:CPU不断轮询检查l/O控制器中的“状态寄存器”,检测到状态为“已完成”之后,再从“数据寄存器”取出输入数据。
这个阶段CPU需要一直检查,进行忙等,CPU与I/O串行工作,而无法去做其他的事情,效率很低。
- 优点:接口设计简单、设备量少。
- 缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且如果采用独占查询,则在一段时间内只能和一台外设交换信息,效率大大降低。
分类:
- 独占查询:CPU 100%的时间都在查询l/O状态,完全串行。
- 定时查询:在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态。查询的间隔内CPU可以执行其他程序。
程序查询流程图:
列题
3.2程序中断方式
3.2.1中断系统
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
中断分类:
3.2.2工作流程
工作流程:
-
中断请求
-
中断源向CPU发送中断请求信号。
-
中断请求标记触发器INTR
对于外中断:CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取I/O的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻。
-
-
中断响应
- 响应中断的条件:
- 中断源有中断请求;
- CPU允许中断即开中断。(“关中断”则不响应中断);
- 一条指令执行完毕,且没有更紧迫的任务。
- 中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源
- 中断判优既可以用硬件实现,也可用软件实现:
- 硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;
- 软件实现是通过查询程序实现的。
- 中断判优-优先级:
- 硬件故障中断属于最高级,其次是软件中断;
- 非屏蔽中断优于可屏蔽中断;
- DMA请求优于I/O设备传送的中断请求;
- 高速设备优于低速设备;
- 输入设备优于输出设备;
- 实时设备优于普通设备。
- 中断判优既可以用硬件实现,也可用软件实现:
- 响应中断的条件:
-
中断处理
- 中断隐指令:
- 关中断:原子操作,需要关中断;
- 保存断点:保存原程序的PC值;
- 引出中断服务程序:PC指向中断服务程序的第一条指令。
- 中断服务程序:
- 保护现场:保存通用寄存器和状态寄存器的内容,以便返回原程序后可以恢复CPU环境;
- 中断服务(设备服务、中断要做的主体);
- 恢复现场:通过出栈指令或取数指令把之前保存的信息送回寄存器。
- 中断隐指令:
中断处理流程图:
在关中断、开中断这中间的一段原子操作不能再进入新的中断。所以只允许一个中断服务程序的就是单重中断。
3.2.3多重中断与中断屏蔽技术
单重中断:执行中断服务程序时不响应新的中断请求。
多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。
中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件:
- 在中断服务程序中提前设置开中断指令;
- 优先级别高的中断源有权中断优先级别低的中断源。
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
中断屏蔽字设置的规律:
- 一般用**'1’表示屏蔽(高优先级)**,'0’表示正常申请;
- 每个中断源对应一个屏蔽字(在处理该中断
源的中断服务程序时,屏蔽寄存器中的内容
为该中断源对应的屏蔽字); - 屏蔽字中’1’越多,优先级越高。每个屏蔽
字中至少有一个’1’(至少要能屏蔽自身的中断)。
例题:
3.2.4程序中断方式
程序中断方式:等待键盘I/O时CPU可以先去执行其他程序,键盘I/O完成后I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据。
详细:
- PC值:中断隐指令自动保存(硬件完成);
- 通用寄存器、中断屏蔽字:操作系统保存;
- 块表(TLB)和Cache:硬件机构保存。
例题:
3.3DMA控制方式
而对于快速I/O设备,如“磁盘”,每准备好一个字就给CPU发送一次中断请求,会导致CPU需要花大量的时间来处理中断服务程序,CPU利用率严重下降。
DMA接口,即DMA控制器,也是一种特殊的I/O接(I/O控制器)。
DMA控制方式:主存与高速I/O设备之间有一条直接数据通路(DMA总线)。CPU同DMA接口发出“读/写”命令,并指明主存地址、磁盘地址、读写数据量等参数。
(三总线方式)
DMA控制器自动控制磁盘与主存的数据读写(每传送1个字);每完成一整块数据读写(如1KB为一整块),才向CPU发出一次中断请求。
3.3.1工作流程
(单总线方式)
DMA详细传送过程:
3.3.2传送方式
用于解DMA和CPU的访存冲突
DMA方式vs中断方式
3.4通道控制方式
有的商用中型机、大型机可能会接上超多的I/O设备,如果都让CPU来管理,那么CPU就太累了…
通道:可以理解为是“弱鸡版的CPU”。通道是一种特殊的处理器,可以识别并执行一系列通道指令,通道指令种类、功能通常比较单一。