计算机组成原理学习笔记(5):I/O
第五章 I/O
5.1 概述
5.1.1 输入输出系统的发展概况
外部设备的独立性越来越强
5.1.2 输入输出系统的组成
I/O软件部分分为I/O指令和通道指令
I/O指令
属于CPU指令
操作码相当于一个标志,指明I/O设备
命令码相当于普通指令的操作码,指出对I/O做出什么操作
设备码给出某一个I/O设备的编码或者具体某个I/O寄存器的位置(这些寄存器也就是I/O的端口)
通道指令
通道是一种小型的DMA处理器,能够实现小型的I/O设备和主机之间直接进行信息传送。通道有自己的处理器,有的通道也有自己的存储器,通道能执行通道自身的指令。
通道指令就是通道自身的指令。
一般情况下,编程人员在应用程序当中为了调用外部设备使得外部设备能够工作,应用程序需要增加广义I/O指令(包含所使用的I/O设备,数据传输主存的首地址,传输数据长度,传输数据方向),操作系统根据广义I/O指令和设置的参数,编写对应的通道程序,有了通道程序之后就可以控制通道完成I/O操作
I/O硬件
5.1.3 I/O设备与主机的联系方式
I/O设备编址方式
统一编址 直接和内存进行统一编址,可以直接使用取数、存数的操作进行I/O的操作。评价:CPU的指令集会比较简单。如果内存空间的编址空间比较大的话我们就可以采用统一编址。
不统一编址(单独编址)独立于内存编址之外,位数等不一样,输入输出不能采用CPU原有的取数存数指令,使用专用的I/O指令
设备选址
用设备选择电路识别是否被选中(比较CPU给出的设备地址和设备中自己保存的设备地址)
传送方式
串行:适合远程传输,传输速度较慢
并行:同时传输的数据比较多
联络方式
立即响应
异步工作采用应答信号
同步工作采用同步时标
连接方式
辐射式连接
总线连接(便于增删设备)
I/O设备与主机信息传送的控制方式
程序查询方式
原地检查原地踏步状态较多,对CPU的浪费较大,CPU还需要连接内存和I/O更加增大了时间浪费
程序中断方式
内存和外设之间想要通信还是需要CPU的参与
当传输数据量非常小的时候保护现场进入中断的程序可能都有十几条这个情况下,进入中断就显得得不偿失
可以做到I/O与cpu并行工作
DMA方式
程序查询方式、中断方式的终端还是需要CPU链接内存和I/O进行信息传输,通过执行程序的方式完成数据传输
DMA控制器建立了主存和I/O之间的直接数据通道
不中断现行程序(只需要在数据存取的时候申请一次数据和地址总线占用一个存取周期就可以了)
周期挪用(周期窃取)
三种方式的比较
5.2 I_O设备
5.2.1 概述
5.2.2 输入设备
5.2.3 输出设备
5.2.4 其它
5.2.5 多媒体设备
5.3 I_O接口
5.3.1 概述
为什么要设置接口?(接口的功能)
实现设备的选择
实现数据缓冲达到速度匹配(接口之间的速度不一样)
实现数据串一并格式转换(有的外部设备是通过串行传输的需要在接口中完成转换,在进行传输)
实现电平转换
传送控制命令
反映设备的状态(“忙”、“就绪”、“中断请求”)
总线连接方式的I/O接口电路
5.3.2 接口的功能和组成
五部分电路
5.3.3 接口类型
5.4 程序查询方式
5.4.1 程序流程
进行I/O通信时可能需要使用到CPU中的某个寄存器,需要对这个寄存器进行预先的处理(将它保存到内存中或者压入到堆栈中或者保存到cpu其他空闲的寄存器中)
设置计数器是用来控制通信数据的大小,每传输完一个数据,计数值迭代一次
5.4.2 程序接口电路
以输入为例
初始化状态(设备工作结束后)
设备工作结束后,更改状态
5.5 程序中断方式
5.5.1 中断的概念
CPU在执行程序的过程中,如果发生意外事件或者特殊事件,CPU要中断当前程序的处理,(通过中断服务或程序的方式)转而处理特殊事件或者意外事件,处理结束后,要返回到被中断的程序断点
5.5.2 I/0中断的产生
5.5.3 程序中断方式的接口电路
配置中断请求触发器和中断屏蔽触发器
排队器
中断向量地址形成部件
中断向量:程序状态字,中断服务程序的入口地址
向量地址:中断向量保存的内存地址
根据排队器的输出(只有一个1其他全是0)作为输入进行转换生成向量地址(指出中断服务的入口地址,或者是跳转到中断服务的那条跳转指令)
程序中断方式接口电路的基本组成
5.5.4 I/O中断处理过程
5.5.5 中断服务程序流程
中断服务程序的流程
保护现场
程序断点的保护:中断隐指令完成
寄存器内容的保护:进栈指令
中断服务:对不同的I/O设备具有不同内容的设备服务
恢复现场:出栈指令
中断返回:中断返回指令
单重中断和多重中断
单重中断:不允许中断现行的中断服务
多重中断:允许级别更高的中断源中断现行的中断服务程序
主程序和服务程序抢占CPU示意图
5.6 DMA方式
5.6.1 DMA和程序中断两种方式的数据通路
5.6.2 DMA与主存交换数据的三种方式
停止CPU访问主存
周期挪用(或周期窃取)
DMA与CPU交替访问
使用权决定于时序
5.6.3 DMA接口的功能和组成
接口组成是由接口功能确定的
DMA的接口功能
向CPU申请DMA传送
处理总线控制权的转交
管理系统总线、控制数据传送
确定数据传送的首地址和长度
修正传送过程中的数据地址和长度
DMA传送结束时,给出操作完成信号
接口组成
BR基址寄存器
DREQ设备请求
DACK控制信号
HRQ总线请求信号
HLDA总线应答信号
WC计数器(标记传输的个数)
DMA的工作过程
DMA传送过程
预处理
- 通过几条输入输出指令预置如下信息
- 通知DMA控制逻辑传送方向(入/出)
- 设备地址—DMA的DAR
- 主存地址—DMA的AR
- 传送字数—DMA的WC
数据传送
执行主程序
完成数据传输
以数据输入为例
- 以数据输出为例
后处理
- 执行中断服务
- 做DMA的结束处理
- 校验送入主存的数是否正确
- 是否继续用DMA测试传送过程是否正确,错则转诊断程序
- 由中断服务程序完成
DMA接口与系统的连接方式
- 具有公共请求线的DMA请求
- 独立的DMA请求
DMA方式与程序中断方式的比较
中断方式 | DMA方式 | |
---|---|---|
数据传送 | 通过程序实现 | 通过硬件实现 |
响应时间 | 中断发生时候当前指令执行结束进行中断响应 | CPU本次存取周期结束进行DMA的响应 |
在程序执行过程中能否用于处理异常情况 | 可以 | 不可以 |
在过程中都有使用到中断请求,其中中断请求的作用 | 用于传送数据 | 用于后处理 |
优先级 | 低 | 高 |
5.6.4 DMA接口类型
选择型
多路型
因为有子通道,每次使用一个子通道的时候单独设置所需要地址、控制等参数,多个设备可以并行着准备数据,准备好后通过子通道向通道提出数据传输请求
多路型工作原理
同时发生请求时,速度越高的设备优先级越高