IO补充.
文章目录
- 零、写在前面
- 一、基本概念
- 1.1 I/O
- 1.2 I/O 接口
- 1.3 I/O 控制方式
- 1.4 I/O 系统的基本组成
- 二、外部设备
- 2.1 输入设备
- 2.2 输出设备
- 2.2.1 显示器
- 2.2.2 打印机
- 2.3 外存设备
- 三、I/O 接口
- 3.1 I/O 接口的作用
- 3.2 I/O 接口
- 3.3 工作原理
- 3.4 I/O接口的类型
- 四、I/O 控制方式
- 4.1 **程序查询方式**
- 4.2 中断的作用和原理
- 4.2.1 中断的基本概念
- 4.2.2 中断判优
- 4.2.3 中断处理过程
- 4.2.4 中断服务程序
- 4.3 多重中断
- 4.3.1 中断屏蔽技术
- 4.3.2 实例
- 4.4 **程序中断方式**
- 4.5 **DMA 方式**
零、写在前面
根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于CPU部分的补充。
大黑书这部分完全没有涉及。
一、基本概念
1.1 I/O
I/O 就是“输入/输出”(input/Output)。
- I/O 设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备。
常见 I/O 设备
所有这些 I/O 设备可以统称为 :“外部设备”
1.2 I/O 接口
主机如何与 I/O 设备进行交互?
I/O接口:又称I/O控制器(I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输。
I/O控制器多种多样,也会制定相应的标准,如:用于控制USB设备的IO接口、用于控制SATA3.0硬盘的IO接口等(I/O控制器就是一块芯片,常被集成在主板上)
- 现在的I/O接口(芯片)也会被集成在南桥芯片内部。
1.3 I/O 控制方式
#include <stdio.h>
int main() {char i;scanf("%c", &i);printf("i = %c\n", i);return 0;
}
CPU如何控制键盘I/O的完成?
-
程序查询方式:CPU不断轮询检查I/O控制器中的“状态寄存器”,检测到状态为“已完成”之后,再从数据寄存器取出输入数据
-
程序中断方式:等待键盘I/O时CPU可以先去执行其他程序,键盘I/O完成后I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据
思考:对于快速I/O设备,如“磁盘”,每准备好一个字就给CPU发送一次中断请求,会导致什么问题?
答:CPU需要花大量的时间来处理中断服务程序,CPU利用率严重下降。
-
DMA 控制方式
DMA控制方式:主存与高速I/O设备之间有一条直接数据通路(DMA总线)。CPU向DMA接口发出“读/写”命令,并指明主存地址、磁盘地址、读写数据量等参数。
DMA控制器自动控制磁盘与主存的数据读写,每完成一整块数据读写(如1KB为一整块),才向CPU发出一次中断请求。
-
通道控制方式
通道是具有特殊功能的处理器,能对I/O设备进行统一管理。
有的商用中型机、大型机可能会接上超多的I/O设备,如果都让CPU来管理,那么CPU就太累了……
通道:可以理解为是**“弱鸡版的CPU”**。通道可以识别并执行一系列通道指令,通道指令种类、功能通常比较单一
注意,通道程序位于内存中。
1.4 I/O 系统的基本组成
一般来说,I/O系统由I/O软件和I/O硬件两部分构成。
-
I/O硬件 包括外部设备、I/O接口、IO总线等
-
I/O软件 包括驱动程序、用户程序、管理程序、升级补丁等。
-
通常采用I/O指令和通道指令实现主机和I/O设备的信息交换。
-
-
值得注意的是:I/O指令与普通指令格式略有不同,操作码指明了CPU要对I/O接口做什么,命令码指明了I/O接口要对设备做什么
-
二、外部设备
外部设备也称外围设备,是除了主机以外的、能直接或间接与计算机交换信息的装置。
2.1 输入设备
用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。
-
键盘
-
鼠标
2.2 输出设备
用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。
2.2.1 显示器
- 显示器
- 按显示设备所用的显示器件分类:
- 阴极射线管(CRT)显示器
- 液晶显示器(LCD)LED显示器
- 按所显示的信息内容分类:
- 字符显示器
- 图形显示器
- 图像显示器
- 按显示设备所用的显示器件分类:
阴极射线管(CRT)显示器
CRT显示器主要由电子枪、偏转线圈、荫罩、高压石墨电极和荧光粉涂层及玻璃外壳5部分组成。具有可视角度大、无坏点、色彩还原度高、色度均匀、可调节的多分辨率模式、响应时间极短等优点。
液晶显示器(LCD)
原理:利用液晶的电光效应,由图像信号电压直接控制薄膜晶体管,再间接控制液晶分子的光学特性来实现图像的显示。
特点:体积小、重量轻、省电、无辐射、绿色环保、画面柔、不伤眼等。
LED(发光二极管)显示器
原理:通过控制半导体发光二极管进行显示,用来显示文字、图形、图像等各种信息。
LCD与LED是两种不同的显示技术,LCD是由液态晶体组成的显示屏,而LED则是由发光二极管组成的显示屏。与LCD相比,LED显示器在亮度、功耗、可视角度和刷新速率等方面都更具优势。
按显示信息内容不同可分为:
字符显示器:
- 显示字符的方法以点阵为基础。点阵是指由m x n个点组成的阵列。点阵的多少取决于显示字符的质量和字符窗口的大小。字符窗口是指每个字符在屏幕上所占的点数,它包括字符显示点阵和字符间隔。
- 将点阵存入由ROM构成的字符发生器中,在CRT进行光栅扫描的过程中,从字符发生器中依次读出某个字符的点阵,按照点阵中0和1代码不同控制扫描电子束的开或关,从而在屏幕上显示出字符。对应于每个字符窗口,所需显示字符的ASCII代码被存放在视频存储器VRAM中,以备刷新。
图形显示器:
- 将所显示图形的一组坐标点和绘图命令组成显示文件存放在缓冲存储器中,缓存中的显示文件传送给天量(线段)产生器2产生相应的模拟电压,直接控制电子束在屏幕上的移动。为了在屏幕上保留持久稳定的图像,需要按定的频率对屏幕进行反复刷新。
- 这种显示器的优点是分辨率高且显示的曲线平滑。目前高质量的图形显示器采用这种随机扫描方式。缺点是当显示复杂图形时,会有闪烁感。
- 按扫描方式不同可分为:
- 光栅扫描显示器
- 随机扫描显丞器
图像显示器
2.2.2 打印机
打印机是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上。
按印字原理不同可分为:
击打动打印机:利用机械动作使印字机构与色带和纸相撞而打印字符
- 优:设备成本低,印字质量好
- 缺:噪声大,速度慢
非击打式打印机:采用电、磁、光、喷墨等物理、化学方法来印刷字符
- 优:速度快,噪声小
- 缺:成本高
按工作方式可分为:
- 针式打印机
- 喷墨式打印机
- 激光打印机
2.3 外存设备
是指除计算机内存及CPU缓存等以外的存储器。硬磁盘、光盘等是最基本的外存设备
三、I/O 接口
I/O接口:又称I/O控制器(I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输。
3.1 I/O 接口的作用
- 数据缓冲:通过**数据缓冲寄存器(DBR)**达到主机和外设工作速度的匹配
- 错误或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用
- 控制和定时:接收从控制总线发来的控制信号、时钟信号
- 数据格式转换:串——并、并——串等格式转换
- 与主机和设备通信:实现主机——I/O接口——I/O设备之间的通信
3.2 I/O 接口
主机侧为内部接口:内部接口与系统总线相连,实质上是与内存、CPU相连。数据的传输方式只能是并行传输**(事实上,现在很多系统中主机测也可能是串行传输)**。
设备侧为外部接口:外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此I/0接口需具有串/并转换功能。
3.3 工作原理
控制寄存器、状态寄存器在使用时间上是错开的,因此有的I/O接口中可将二者合二为一
I/O控制器中的各种寄存器称为I/O端口
- 发命令:发送命令字到I/O控制寄存器,向设备发送命令(需要驱动程序的协助)
- 读状态:从状态寄存器读取状态字,获得设备或I/O控制器的状态信息
- 读/写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换
接口与端口
- 接口Interface
- 端口Port(IO端口是指接口电路中可以被CPU直接访问的寄存器)
- 数据端口 读&写
- 控制端口
- 状态端口
- 控制逻辑
- 端口Port(IO端口是指接口电路中可以被CPU直接访问的寄存器)
统一编址 v.s.独立编址
1.统一编址
把 I/O 端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问I/0端口,又称存储器映射方式。
靠不同的地址码区分内存和I/O设备,I/O地址要求相对固定在地址的某部分。
如系统总线中地址线共 10 根,则可以访问的存储单元个数为2^10=1024个,假设要给10个 I/O 端口编址:
- 09表示I/0地址,101023为主存单元地址
- 01013表示主存单元地址,10141023为IO地址
- 1019表示I/O地址,09、20~1023为主存单元地址7-
优点:
- 不需要专门的输入/输出指令,所有访存指令都可直接访问端口,程序设计灵活性高
- 端口有较大的编址空间
- 读写控制逻辑电路简单
缺点:
- 端口占用了主存地址空间,使主存地址空间变小
- 外设寻址时间长(地址位数多,地址译码速度慢)
2.独立编址
I/O端口地址与存储器地址无关,独立编址CPU需要设置专门的输入/输出指令访问端口,又称I/O映射方式。
靠不同的指令区分内存和I/O设备。
优点:
- 使用专用I/O指令,程序编制清晰
- I/O端口地址位数少,地址译码速度快
- I/O端口的地址不占用主存地址空间
缺点:
- I/O指令类型少,一般只能对端口进行传送操作
- 程序设计灵活性差
- 需要CPU提供存储器读/写、I/O设备读/写两组控制
- 信号,增加了控制逻辑电路的复杂性
3.4 I/O接口的类型
按数据传送方式可分为
- 并行接口:一个字节或一个字所有位同时传送
- 串行接口:一位一位地传送。
- 注:这里所说的数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,数据总是并行传送的。接口要完成数据格式转换。
按主机访问I/O设备的控制方式可分为
- 程序查询接口
- 中断接口
- DMA接口
按功能选择的灵活性可分为
- 可编程接口
- 不可编程接口
四、I/O 控制方式
4.1 程序查询方式
- x86中的I/O指令实例
- IN Rd, RS:把IO端口 Rs 的数据输入到 CPU 寄存器 Rd
- OUT Rd, RS:把CPU寄存器 Rs 的数据输出到 IO 端口 Rd
练习
在程序查询方式的输入/输出系统中,假设不考虑处理时间,每一个查询操作需要100个时钟周期,CPU的时钟频率为50MHz。现有鼠标和硬盘两个设备,而且CPU必须每秒对鼠标进行30次查询,硬盘以32位字长为单位传输数据,即每32位被CPU查询一次,传输率为2 × 2^{20}B/s。求CPU对这两个设备查询所花费的时间比率,由此可得出什么结论?
每秒查询鼠标耗时:30 × 2000ns = 60000ns
比率:60000ns / 1s = 0.006%
对鼠标的查询基本不影响CPU的性能
每秒查询硬盘耗时:2 × 2^{20}B / 4B × 2000ns = 1.05 × 10^9 ns
比率:(1.05 × 10^9 ns) / 1s = 105%
CPU将全部时间都用于对硬盘的查询也不能满足磁盘传输的要求。
4.2 中断的作用和原理
4.2.1 中断的基本概念
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
工作流程:
- 中断请求
- 中断源向CPU发送中断请求信号。
- 中断响应
- 响应中断的条件。
- 中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源。
- 中断处理
- 中断隐指令。
- 中断服务程序。
中断请求的分类:
- 关中断的作用:实现原子操作
- IF=1表示开中断(允许中断)
- IF=0表示关电断(不允许中断)
中断请求标记
每个中断源向CPU发出中断请求的时间是随机的。
为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,当其状态为“1”时,表示中断源有请求。
这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。
对于外中断,CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取I/O的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻。
CPU响应中断必须满足以下3个条件:
- 中断源有中断请求。
- CPU允许中断即开中断。
- 一条指令执行完毕,且没有更紧迫的任务。
4.2.2 中断判优
中断判优既可以用硬件实现,也可用软件实现。
硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;
软件实现是通过查询程序实现的。
中断判优的优先级设置:
- 硬件故障中断属于最高级,其次是软件中断
- 非屏蔽中断优于可屏蔽中断
- DMA请求优于I/O设备传送的中断请求
- 高速设备优于低速设备
- 输入设备优于输出设备
- 实时设备优于普通设备
4.2.3 中断处理过程
中断隐指令的主要任务:
- 关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。
- 保存断点。为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来可以存入堆栈,也可以存入指定单元。
- 引出中断服务程序。引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器(PC)。
中断处理过程的实现方法:
- 软件查询法
- 硬件向量法
硬件向量法:
4.2.4 中断服务程序
中断服务程序的主要任务:
- 保护现场
- 保存通用寄存器和状态寄存器的内容(eg:保存ACC寄存器的值),以便返回原程序后可以恢复CPU环境。可使用堆栈,也可以使用特定存储单元。
- 中断服务(设备服务)
- 主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中(eg:中断服务的过程中有可能修改ACC寄存器的值)
- 恢复现场
- 通过出栈指令或取数指令把之前保存的信息送回寄存器中(eg:把原程序算到一般的ACC值恢复原样)
- 中断返回
- 通过中断返回指令回到原程序断点处
上面这种中断我们称为单重中断:执行中断服务程序时不响应新的中断请求。
4.3 多重中断
多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。
多重中断在保存现场的时候还执行了,屏蔽字,其全称为中断屏蔽字。
4.3.1 中断屏蔽技术
中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件:
- 在中断服务程序中提前设置开中断指令。
- 优先级别高的中断源有权中断优先级别低的中断源。
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
例
4.3.2 实例
IF(Interrupt Flag)开/关中断标志。当IF=1时,表示开中断,当IF=0时表示关中断
INTR:可屏蔽中断请求(interrupt request)信号,输入,用来申请一个硬件中断。
当IF=1时,若 INTR 保持高电平,则在当前指令执行完毕后就进入中断响应周期
NMI:非屏蔽中断(non-maskable interrupt)输入信号。与INTR信号类似,但 NMI 中断不必检查 IF 标志位是否为1。常用于处理电源掉电紧急情况。
INTA:中断响应(interrupt acknowledge)信号,输出。响应INTR输入。该引脚常用来选通中断向量码以响应中断请求。
- CPU 收到中断请求信号(通过控制总线传输)
- 中断类型号 通过 数据总线 传递给CPU
4.4 程序中断方式
程序中断是指在计算机执行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,处理完毕后再返回到原程序的断点处,继续执行原程序。早期的中断技术是为了处理数据传送。
4.5 DMA 方式
CPU 向 DMA控制器指明要输入还是输出;要传送多少个数据;数据在主存、外设中的地址。
传送前:
- 接受外设发出的DMA请求(外设传送一个字的请求),并向CPU发出总线请求。
- CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期。
传送时:
- 确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。
- 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
最后向CPU报告CMA操作的结束
DMA传送过程
- DMA请求 vs DMA 中断请求
- DMA 请求:要和主存传送一个字的数据
- DMA 中断请求:传送已经完成
DMA 方式的特点
主存和DMA接口之间有一条直接数据通路。
由于DMA方式传送数据不需要经过CPU,因此不必中断现行程序,I/O与主机并行工作,程序和传送并行工作。
DMA方式具有下列特点:
- 它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。
- 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
- 主存中要开辟专用缓冲区,及时供给和接收外设的数据。
- DMA传送速度快,CPU和外设并行工作,提高了系统效率。
- DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
于是又引出一个问题,DMA 和 CPU 都能访问主存,那么二者同时访问时,应该如果处理访问冲突?
DMA 传送方式
主存和DMA控制器之间有一条数据通路,因此主存和I/O设备之间交换信息时,不通过CPU。但当I/O设备和CPU同时访问主存时,可能发生冲突,为了有效地使用主存,DMA控制器与CPU通常采用以下3种方法使用主存:
- 停止CPU访问主存
-
-
控制简单
-
CPU 处于不工作状态或保持状态
-
未充分发挥 CPU 对主存的利用率
-
- DMA与CPU交替访存
-
-
不需要总线使用权的申请、建立和归还过程
-
硬件逻辑更为复杂
-
- 周期挪用(周期窃取)
-
这里的周期指的是存取周期
-
-
DMA 访问主存有三种可能:
- CPU 此时不访存(不冲突)
- CPU正在访存(存取周期结束让出总线)
- CPU与 DMA 同时请求访存**(I/O访存优先)**
-
DMA 方式与中断方式
- 中断方式每传送一次数据就会有一次中断请求,DMA 方式整块数据处理完成后,才会有一次中断请求