输入输出系统
大家好呀!我是小笙,本章我主要分享计算机组成原理的输入输出系统知识,主要讲解 I/O 设备与主机传送的三种控制方式(程序查询、中断、DMA方式),希望内容对你有所帮助!
概述
发展概况
-
早期阶段:I/O 设备与主存交换信息都必须通过CPU
-
接口模块和DMA阶段:I/O 设备通过接口模块与主机连接,计算机系统采用了总线结构
-
具有通道结构的阶段:依赖通道管理的I/O设备在与主机交换信息时,CPU不直接参与管理,故提高了CPU的资源利用率
-
具有I/O处理机的阶段:它基本独立于主机工作,既可完成I/O通道要完成的I/O控制,又可完成码制变换、格式处理、数据块检错、纠错等操作,具有I/O处理机的输入输出系统与CPU工作的并行
输入输出系统的组成
I/O软件
-
I/O指令(机器指令的一种)
- 操作码字段可作为I/O指令与其他指令(如访存指令、算逻指令、控制指令等)的判别代码
- 命令码体现I/O设备的具体操作
- I/O指令的设备码相当于设备的地址
-
通道指令(通道自身的指令)
对具有通道的I/O系统专门设置的指令,这类指令一般指出数据组的首地址、传送字数、操作命令
-
上述两者的区别
- 通道指令是通道自身的指令,用来执行I/O操作,如读、写、磁带走带及磁盘找道等
- 而I/O指令是CPU指令系统的一部分,是CPU用来控制输入输出操作的指令,由CPU译码后执行
I/O硬件(了解)
计算机系统中用于与外部设备进行数据传输的物理设备。这些硬件组件使得计算机能够与用户、存储设备、网络以及其他计算机进行交互
I/O 设备和主机的联系方式
I/O 设备编址方式
-
统一编制(用取数、存数指令)
统一编址就是将 I/O 地址看做是存储器地址的一部分
-
不统一编址(有专门的 I/O 指令)
指 I/O 地址和存储器地址是分开的,所有对 I/O设备的访问必须有专用的 I/O 指令
显然统一编址占用了存储空间,减少了主存容量,但无须专用的 I/O 指令。不统一编址由于不占用主存空间,故不影响主存容量,但需设 I/O 专用指令
设备寻址
用设备选择电路识别是否被选中
传送方式
- 串行:若在同一瞬间只传送一位信息,在不同时刻连续逐位传送一串信息
- 并行:在同一瞬间,n 位信息同时从CPU输出至 I/O 设备
联络方式
-
立即响应:主要事对于一些工作速度十分缓慢的 I/O 设备,当他们与 CPU 发生联系的时候,通过都已经处于等待的状态,只要 CPU 的 I/O 指令一到就会立即响应
-
异步工作采用应答信号
主要应对一些 I/O 设备与主机工作速度不匹配的时候,通常采用异步工作方式
-
同步工作采用同步时标联络:同步工作要求 I/O 设备与 CPU 的工作速度完全同步
I/O设备与主机的连接方式
辐射式连接
采用辐射式连接方式时,要求每台 I/O 设备都有一套控制线路和一组信号线,因此所用的器件和连线较多,对 I/O 设备的增删都比较困难(计算机发展的初级阶段)
总线连接
通过一组总线(包括地址线、数据线、控制线等),将所有的 I/O 设备与主机连接(现代大多数计算机系统所采用的方式)
I/O设备与主机信息传送的控制方式
I/O 设备与主机交换信息时,共有5种控制方式:程序查询方式、程序中断方式、直接存储器存取方式(DMA)、I/O 通道方式、I/O 处理机方式
程序查询方式
程序查询方式是由CPU通过程序不断查询 I/O 设备是否已做好雅备,从而控制 I/O 设备与主机交换信息
缺少:CPU 和 I/O 处于串行传输,CPU 的工作效率不高
程序中断方式
徜若CPU在启动I/O设备后,不查询设备是否已准备就绪,继续执行自身程序,只是当I/O设备准备就绪并向CPU发出中断请求后才予以响应,这将大大提高CPU的工作效率
DMA方式
在DMA方式中,主存与 I/O 设备之间有一条数据通路,主存与 I/O 设备交换信息时,无须调用中断服务程序。若出现 DMA 和 CPU 同时访问主存,CPU 总是将总线占有权让给 DMA,通常把 DMA 的这种占有称为窃取或挪用。窃取的时间一般为一个存取周期,故又把DMA占用的存取周期窃取周期或挪用周期
而且,在DMA窃取存取周期时,CPU尚能继续作内部操作(如乘法运算)。可见,与程序查询和程序中断方式相比,DMA方式进一步提高了CPU的资源利用率
三种方式区别示意图
I/O设备
概述
中央处理器和主存构成了主机,除主机外的大部分硬件设备都可称为 I/O 设备或外部设备,或外围设备,简称外设
I/O设备的结构框图
外部设备大致分三类
- 人机交互设备:能将人体五官可识别的信息和机器可识别的信息相互转换的(如键盘、鼠标、扫描仪、摄像机、语音识别器等)
- 计算机信息存储设备:系统软件和各种计算机的有用信息,其信息量极大,需存储保留起来(如磁盘、光盘、磁带等等)
- 机-机通信设备:用来实现一台计算机与其他计算机或与其他系统之间完成通信任务的设备(如调制解调器等等)
输入设备(了解)
- 键盘:用于输入文本和命令
- 鼠标:用于导航和选择屏幕上的项目
- 触摸屏:允许用户通过直接触摸屏幕来与计算机交互
- 扫描仪:用于将物理文档转换成数字格式
- 摄像头:捕捉图像和视频
- 条形码阅读器:读取条形码并将其转换成数字信息
- 数码化仪:如图形板,用于绘制和输入图形
输出设备(了解)
- 显示器:显示计算机生成的图像和文本
- 打印机:将计算机生成的文档打印成纸质形式
- 音响设备:播放计算机产生的声音
- 投影仪:将计算机屏幕上的内容投射到其他平面上
其他 I/O 设备(了解)
计算机的I/O设备中有一类既是输入设备,又是输出设备
- 磁盘驱动器:包括硬盘驱动器和固态驱动器,用于存储和检索数据
- USB闪存驱动器:便携式存储设备,用于数据传输
- 网络接口卡:用于连接到计算机网络,实现数据的发送和接收
- 读卡器:读取各种类型的存储卡,如SD卡、CF卡等
I/O接口
概述
I/O 接口通常是指主机与 I/O 设备之间设置的一个硬件电路及其相应的软件控制
为啥要设置接口?
- 实现设备的选择
- 实现数据缓冲达到速度匹配
- 实现数据串-并格式转换
- 实现电平转换
- 传送控制命令
- 反映设备的状态(忙、等待、中断请求)
接口的功能和组成
总线连接方式的 I/O 接口电路
每一台 I/O 设备都是通过 I/O 接口挂到系统总线上的
补充:I/O 总线包括数据线、设备选择线、命令线以及状态线
- 数据线:数据线是 I/O 设备与主机之间数据代码的传送线,其根数一般等于存储字长的位数或字符的位数,它通常是双向的,也可以是单向的
- 设备选择线:设备选择线是用来传送设备码的,它的根数取决于 I/O 指令中设备码的位数。如果把设备码看做是地址号,那么设备选择线又可称为地址线
- 命令线:命令线主要用以传输 CPU 向设备发出的各种命令信号,如启动、清除、屏蔽、读、写等
- 状态线:状态线是将 I/O 设备的状态向主机报告的信号线,例如,设备是否准备就绪等等
接口的功能和组成
**功能 ** 组成
-
选址功能 设备选择电路
-
传送命令的功能 命令寄存器、命令译码器
-
传送数据的功能 数据缓冲寄存器
-
反映设备状态的功能 设备状态标记(完成触发器 D 工作触发器 B 中断请求触发器 INTR 屏蔽触发器 MASK)
接口类型
I/O接口的基本组成
- 按数据传送方式分类,有并行接口和串行接口
- 并行接口是将一个字节(或一个字)的所有位同时传送(如Intel8255)
- 串行接口是在设备与接口间一位一位传送(如Intel8251)
- 按功能选择的灵活性分类,有可编程接口和不可编程接口
- 可编程接口的功能及操作方式可用程序来改变或选择(如Intel8255、Intel8251)
- 不可编程接口不能由程序来改变其功能,但可通过硬连线逻辑来实现不同的功能(如Intel8212)
- 按通用性分类有通用接口和专用接口
- 通用接口可供多种I/O设备使用(如Intel8255、 Intel8212)
- 专用接口是为某类外设或某种用途专门设计的(如Intel8279、Intel8275)
- 按数据传送的控制方式分类,有程序型接口和DMA型接口
- 程序型接口用于连接速度较慢的 I/O 设备,如显示终端、键盘、打印机等(如Intel8259)
- DMA型接口用于连接高速 I/O 设备,如磁盘、磁带等(如Intel8257)
程序查询方式
程序查询流程
在程序查询方式中,CPU会通过查询程序不断地检查各个I/O设备是否准备好进行数据传输
- CPU初始化时,会在寄存器中设置好主存缓冲区的首地址和计数值
- CPU发出启动指令,启动所有需要的I/O设备
- CPU循环执行查询操作,从第一个设备开始,逐一检查每个设备是否准备就绪
- 如果某个设备准备好,CPU就发出传送指令,并与该设备进行数据传输
- 数据传输完成后,CPU可以返回到查询循环,继续检查下一个设备
单/多个 I/O 设备的查询流程
缺点:
- CPU在等待I/O设备准备就绪的过程中,会持续执行查询操作,这会导致CPU利用率低
- 如果多个设备同时准备好,程序查询方式无法有效地处理并行操作
程序查询方式的接口电路
- 当 CPU 通过 I/O 指令启动输入设备时,指令的设备码字段通过地址线送至设备选择电路
- 若该接口的设备码与地址线上的代码吻合,其输出 SEL 有效
- I/O 指令的启动命令经过“与非”门将工作触发器B置“1”,将完成触发器D置“0”
- 由 B 触发器启动设备工作
- 输入设备将数据送至数据缓冲寄存器
- 由设备发设备工作结束信号,将 D 置“1”,B 置“0”,表示外设推备就绪
- D 触发器以“准备就绪”状态通知CPU,表示“数据缓冲满”
- CPU 执行输入指令,将数据缓冲寄存器中的数据送至 CPU 的通用寄存器,再存入主存相关单元
程序中断方式
中断的概念
程序中断方式是基于程序查询方式的改进,它允许I/O设备在准备好后主动中断CPU,而不是让CPU不断地查询
- CPU 初始化所有 I/O 设备,并允许它们通过中断请求线(IRQ)发起中断
- CPU 开始执行其他任务,不需要持续查询 I/O 设备状态
- 当某个 I/O 设备准备好数据传输时,它会通过中断请求线发送中断信号给 CPU
- CPU 响应中断,暂停当前任务,处理中断(即与请求的 I/O 设备进行数据传输)
- 数据传输完成后,CPU 恢复被中断的任务
I/O 中断案例
当打印机在准备数据以及打印前准备阶段,CPU 都会继续执行主程序,只有当打印机准备好之后才会发中断请求给 CPU ,然后 CPU 响应该中断
优点:
- CPU的利用率提高,因为它不需要不断地执行查询循环,可以在等待 I/O 操作的同时执行其他任务
- 支持并行操作,多个设备可以独立地中断 CPU,不需要等待其他设备的处理
程序中断方式的接口电路
-
中断请求触发器和中断屏蔽触发器
接口电路中的完成触发器 D、中断请求触发器 INTR、中断屏蔽触发器 MASK 和中断查询信号的关系如下图所示。可见,仅当设备准备就绪(D = 1),且该设备未被屏蔽(MASK = 0)时,CPU的中断查询信号可将中断请求触发器置“1” ( ‘ INTR = 1)
-
排队器
当多个中断源同时向CPU提出请求时,CPU只能按中断源的不同性质对其排队,给予不同等级的优先权,并按优先等级的高低予以响应
硬件排队器(优先级:从左到右依次降低,是用INTRn的非来控制右侧INTR(n+1)的输出)
-
中断向量地址形成部件(设备编码器)
由硬件产生向量地址,再由向量地址找到入口地址
中断向量地址形成部件的原理
-
程序中断方式接口电路的基本组成
- 中断请求线(IRQ):设备使用中断请求线向 CPU 发送中断信号,表明它需要 CPU 的处理或者有数据准备好
- 中断控制器:当有多个设备时,中断控制器负责管理多个中断请求,确定优先级,并将中断请求转发给 CPU
- 设备选择电路:用于识别哪个设备请求中断,通常通过比较设备地址和 CPU 发出的地址来实现
- 设备忙/就绪状态触发器:这些触发器用来指示设备是否忙(正在处理数据)或者就绪(数据准备好)
- 数据缓冲寄存器(DBR):当设备准备好数据后,数据被暂存到数据缓冲寄存器中,等待CPU读取
- 中断屏蔽寄存器(MASK):控制哪些中断请求被允许通过,哪些被屏蔽
- 中断处理程序:CPU接收到中断请求后,执行的中断处理程序代码,用于响应设备请求
- 排队器:当有多个中断请求同时发生时,排队器负责决定哪个请求优先被处理
- 设备编码器:生成中断向量,这个向量指向特定的中断服务程序
- 中断向量地址形成部件:用于生成中断向量的地址,这样CPU可以找到并执行正确的中断处理程序
I/O中断处理过程
CPU响应中断的条件和时间
- 条件: 允许中断触发器 EINT = 1
- 时间: 当 D = 1 且 MASK = 0 、 在每条指令执行阶段的结束前、 INTR 置 1
中断服务程序的流程
- 保护现场
- 程序断点的保护(中断隐指令完成)
- 寄存器内容的保护 (出栈指令)
- 中断服务:对不同的 I/O 设备具有不同内容的设备服务
- 恢复现场(取数指令或者出栈指令)
- 中断返回(中断返回指令)
单重中断和多重中断
- 单重中断:不允许中断现行的中断服务程序
- 多重中断:允许级别更高的中断源来中断现行的中断服务程序
DMA 方式
概述
DMA 和程序中断方式的数据通路的区别?
由于主存和DA接口之间有一条数据通路,因此主存和设备交换信息时,不通过CPU,也不需要CPU暂停现行程序为设备服务,省去了保护现场和恢复现场,因此工作速度比程序中断方式的工作速度高
DMA 方式和程序中断的比较
中断方式 | DMA方式 | |
---|---|---|
数据传送 | 程序 | 硬件 |
响应时间 | 指令执行结束 | 存储周期结束 |
处理异常情况 | 能 | 不能 |
中断请求 | 传送数据 | 后处理 |
优先级 | 低 | 高 |
DMA 方式的功能和组成
功能
- 向 CPU 申请 DMA 传送
- 处理总线的控制权的转交
- 管理系统总线、控制数据传送
- 确定数据传送的首地址和长度以及修正传送过程数据地址和长度
- DMA 传送结束时,给出操作完成信号
组成
- 主存地址寄存器(AR):AR用于存放主存中需要交换数据的地址。在DMA传送数据前,必须通过程序将数据在主存中的首地址送到主存地址寄存器
- 字计数器(WC): WC用于记录传送数据的总字数,通常以交换字数的补码值预置。在DMA传送过程中,每传送一个字,字计数器如1,直到计数器为0,即最高位产生进位时,表示该批数据传送完毕
- 数据缓冲寄存器(BR) :BR用于暂存每次传送的数据
- DMA控制逻辑 :DMA控制逻辑负责管理DMA的传送过程,由控制电路、时序电路及命令状态控制寄存器等组成
- 中断机构:当字计数器溢出(全“0”)时,表示一批数据交换完毕,由“溢出信号”通过中断机构向CPU提出中断请求,请求CPU作 DMA操作的后处理
- 设备地址寄存器(DAR) :DAR存放I/O设备的设备码或表示设备信息存储区的寻址信息(如磁盘数据所在的区号、盘面号和柱面号)
DMA 与主存交换数据的三种方式
-
停止 CPU 访问主存
控制建档,但是 CPU 处于半工作或保持状态,未充分发挥 CPU 对主存的利用率
-
周期挪用(周期窃取)
每当 I/O 设备发出 DMA 请求时,I/O 设备便挪用或窃取总线占用权一个或几个主存周期,而 DMA 不请求时,CPU 仍继续访问主存,
CPU 和 DMA 同时请求访存(此时将总线控制权让给DMA)
-
DMA 与 CPU 交替访问
CPU 工作周期分为 C1、C2,C1主要供DMA访存,C2主要供CPU访存
不需要申请建立和归还总线的使用权
DMA 的工作过程
DMA 传送过程分:预处理、数据传送、后处理
预处理
- 给DMA控制逻辑指明数据传送方向
- 向DMA设备地址寄存器送人设备号,并启动设备
- 向DMA主存地址寄存器送入交换数据的主存起始地址
- 对字计数器赋予交换数据的个数
数据传送
DMA方式是以数据块为单位传送的,以周期挪用的DMA方式为例
后处理
当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断服务程序,做一些 DMA的结束工作
- 校验传送主存的数据是否正确
- 决定是否继续用 DMA 传送其他数据块,若继续传送,则又要对 DMA 接口进行初始化,若不需要传送,则停止外设
- 测试在传送过程中是否发生错误,若出错,则转错误诊断及处理错误程序
DMA 接口与系统的连接方式
-
具有公共请求线的DMA请求
-
独立的 DMA 请求
DMA 接口的类型
-
选择型的 DMA 接口
在物理上连接多个设备;在逻辑上只允许连接一个设备
-
多路型的 DMA 接口
在物理上连接多个设备;在逻辑上允许连接多个设备同时工作
多路型 DMA 接口的工作原理
磁盘、磁带、打印机分别每隔30us、45us、150us向DMA接口发DMA请求,磁盘的优先级高于磁带,磁带的优先级高于打印机