IO控制方式简介
假设有这么一段代码:
#include <stdio.h>
int main(){
char i;
scanf("%c", &i);
printf("%c",i);
return 0;
}
当上方代码执行到scanf("%c", &i);
此时需要I/O设备来输入内容使程序继续进行下去。
此时CPU有两种解决方案:
- 程序查询方式:CPU不断轮询检查I/O控制器的状态寄存器,检测到状态为”已完成“后,再从数据寄存器取出输入数据。
- 程序中断方式:等待键盘I/O时可以先让CPU执行其他程序,键盘I/O完成后I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据。
用上述方法都需要用CPU做中转站来让主存和IO设备相互联系。
若对磁盘等高速外设就不适合使用上诉方法,因此就可以用DMA(Direct Memory Access)控制方式。
DMA控制方式:主存和高速io设备之间建立一条直接数据通路。每完成一整块数据读写后才向CPU发出一次中断请求。
通道控制方式
有的商用机可能会接上大量的IO设备,因此全让CPU管理就效率太过低下,因此引入了通道控制方式。
通道使具有特殊功能的处理器,能对IO设备进行统一管理。
通道可以识别并执行一系列通道指令,通道指令种类、功能通常比较单一。
I/O系统指令
I/O指令是CPU指令的一部分,通常由操作码、命令码和设备码组成。
操作码指明CPU要对IO接口做什么,命令码指明IO接口要对设备做什么。
显示存储器(VRAM)
也称刷新存储器,为了不断提高刷新图形的信号,必须把一帧图像信息存储在刷新存储器中。其存储容量由图像分辨率和灰度级决定,分辨率越高,灰度级越多,刷新存储器容量越大。
VARM容量= 分辨率 × 灰度级位数。
VARM带宽= 分辨率 × 灰度级位数 × 帧频。
I/O接口的作用
I/O接口中大体上包含了数据寄存器、控制寄存器与状态寄存器,分别能实现以下的主要功能:
- 数据缓冲:通过数据缓冲寄存器(DBR)达到主机和外设工作速度的匹配。
- 错误或状态检测:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用。
- 控制和定时:接受从控制总线发来的控制信号、时钟信号。
- 与主机的设备通信:实现 主机——IO设备—IO设备之间的通信
I/O端口及其编址
I/O端口可分为数据端口(读或写)、控制端口(写)和状态端口(读),端口若想被CPU访问,就必须对各个端口进行编号。
统一编址
又称存储器映射方式,把IO端口和内存一起分配,靠不同的地址码区分内存和IO设备。CPU不需要设置专门的IO指令,用统一的访存指令就可以访问IO端口。RISC机器常用,因为这种机器只有LOAD、STORE两个取指指令。
优点:
不需要专门的输入/输出指令,所有访存指令都可直接访问端口,程序设计灵活性高
端口有较大的编址空间。
读写控制逻辑电路简单。
缺点:
端口占用了主存地址空间,使主存地址空间变小外设寻址时间长。
独立编址
靠不同的指令区分内存的IO设备。只能用专门的IO指令访问IO端口。
Intel处理器常用IN、OUT就是IO指令。
优点:
使用专用IO指令,程序编制清晰,IO端口地址位数少,地址译码速度快,IO端口的地址不占用主存地址空间。
缺点:
IO指令类型少,一般只能对端口进行传送操作,程序设计灵活性差。
需要CPU提供存储器读/写、IO设备读/写两组控制信号,增加了控制逻辑电路的复杂性。
程序中断
CPU响应中断必须满足以下3个条件:
- 中断源有中断请求。
- CPU允许中断即开中断。
- 一条指令执行完毕,且没有更紧迫的任务。
程序中断判优
中断判优既可以用硬件实现,也可以用软件实现。
硬件实现是通过硬件排队器实现,它既可以设置在CPU中,也可以分散在各个中断源中;
软件实现是通过查询程序实现。
中断隐指令的主要任务
- 关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所大端,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能正确继续执行下去。
- 保存断点。为了保证在中断服务程序执行完后能正确返回到原先程序,必须保存PC的内容。
- 引出中断服务程序。引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器(PC)。
单重中断:执行中断服务程序时不响应新的中断请求。
多重中断:又称中断嵌套,执行中断服务程序可响应新的中断请求。
中断屏蔽技术
中断屏蔽技术会用屏蔽字来作为是否要中断屏蔽的依准,一般用“1”表示屏蔽,“0”表示正常申请。
例:设某机有4个中断源A、B、C、D,其硬件排队优先次序为A>B>C>D,现要求中断次序改为D>A>C>B。
1.写出每个中断源对应的屏蔽字。
A只可以被D中断,所以D的中断信号为0。B可被除自己以外的信号中断,所以除自身以外都为0。C可由A和D屏蔽,所以A和D为0。D优先级最低,所以屏蔽字全为1。
2.按下图所示的时间轴给出4个中断源的请求时刻,画出CPU执行程序的轨迹。设每个中断服务程序执行时间均为20us。
由上方描述可得下图:
开始B先执行,由于B的次序最低,到执行到D会打断B的执行,然后D完成后继续执行B,再当B执行到10us时执行A(A的次序高于B),A执行完成后再执行B,B执行到15u秒又被C打断执行,执行完C后最后再完成B。
DMA方式的特点
主存和DMA接口之间有一条直接数据通路。
由于DMA方式传送数据不需要经过CPU,因此不必中断现行程序,IO与主机并行工作,程序和传送并行工作。
DMA方式具有下列特点:
- 它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。
- 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
- 主存中要开辟专用缓冲区,及时供给和接受外设的数据
- DMA传送速度快,CPU和外设并行工作,提高了系统效率。
- DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
DMA方式和中断方式的区别和特点