基本概念
- 外部设备:必须通过输入/输出接口访问的外存储设备
- 接口:协调各个外设和主机之间的数据传输部件
- 输入设备:用于向计算机输入命令和文本、数据等信息的部件
- 输出设备:用于将计算机系统中的信息输出到计算机外部进行显示、交换的部件
- 外存设备:除内存和CPU以外的存储器
IO控制方式
- 程序查询方式:由CPU通过程序不断查询I/O设备是否已做好准备,从而控制I/O设备与主机交换信息。
- 程序中断方式:只在I/O设备准备就绪并向CPU发出中断请求的时候才予以响应。
- DMA方式:主存和I/O设备之间有一条直接的数据通路,当主存和I/O设备交换信息时,无需调用中断服务程序。
- 通道方式:在系统中设有通道控制部件,每个通道都挂接若干外设,主机在执行I/O命令时,只需启动有关通道,通道将执行通道程序,从而完成I/O操作
- 无条件传送:CPU始终认为外设处于就绪状态,直接通过数据口输入/输出数据
IO接口
IO接口的主要目的是实现主机和外设之间的信息交换。
IO接口的功能
- 对设备进行地址译码和设备的选择
- 实现主机和外设的通信控制,统一时序
- 实现数据缓冲,避免因速度不一致丢失数据
- 信号格式转换
- 传送控制命令和状态信息:类似计网中的ACK和NAK,用于控制工作
IO接口的结构
其中,数据缓冲寄存器用于暂存通信数据信息,状态寄存器用于记录接口和设备的状态信息(例如使用中,或者过载之类的),控制寄存器用于保存CPU对外设的控制信息。
数据线传送的是读/写数据、状态信息、控制信息和中断类型号
地址线传输的是IO接口中要访问的那个寄存器的地址
控制线传输的是读写控制信号和中断请求、响应信号、仲裁信号以及握手信号等控制信号
IO接口的类型
- 按数据传送方式分:可以分为并行接口和串行接口
- 按IO控制方式分:可以分为程序查询接口,中断接口和DMA接口
- 按功能选择的灵活性:可以分为可编程接口和不可编程接口
IO端口及其编址
IO端口指的是可以被CPU直接访问的寄存器,包括数据端口,状态端口和控制端口。
为了访问这些寄存器,我们必须对每个寄存器进行编址。
独立编址
对所有的IO端口单独进行编址,和主存地址无关。
但是需要专门的IO指令来表明访问的是IO地址空间
统一编址
把主存地址空间中拿出一部分分给IO端口进行编址,这样无需专门设置相关的IO指令,直接用统一的访存指令就可以了。
IO方式
程序查询方式
信息交换被CPU所执行的程序直接控制。根据数据缓冲寄存器中的数据和一个设备状态寄存器中存储的设备状态决定下一步的操作(相当于一个自动机)
-
独占查询:外设和CPU串行工作,CPU一致持续地查询外设的状态,不干其他的
-
定时查询:CPU周期性查询外设状态,每次总是等到满足条件,才进行一个数据的传输,传送完成后返回用户程序。定时查询的时间间隔与设备的数据传输速率有关。
程序中断方式
中断的基本概念
程序中断是指在计算机执行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理。处理完毕后再返回到原程序的断点处,继续执行原程序。早期的中断技术是为了处理数据传送。
中断的主要功能
中断的核心思想
如果需要启用外设,那么可以暂停当前程序,启动外设,然后转而让CPU执行其他的程序,记录断点,等待外设准备好之后,CPU返回断点处,继续执行剩下的程序。
即,最大可能的利用CPU运算资源。
中断的工作流程
中断请求
中断请求由中断源向CPU发出,中断源可以有很多个,包括打印机等外设。每个中断源向CPU发出中断请求的时间是随机的。中断系统需对每个中断源设置中断请求标记触发器。当其状态为“1”时,表示该中断源有请求。
中断响应判优
对于许多中断源同时提出请求时,需要通过中断判优逻辑来确定响应哪个中断源的请求。判优逻辑通常通过硬件排队器/中断查询程序实现。
判断CPU是否响应中断
CPU要响应中断,一定要满足以下三个条件。
中断响应过程
执行中断服务程序(硬件实现):操作如下
1) 关闭中断,防止再来新的中断
2) 保存断点和寄存器等信息
3)
进入中断服务程序。将中断源的对应的服务程序的入口送入PC。有两种方法识别中断源:硬件向量法和软件查询法。
中断向量
每个中断源都有一个唯一的类型号,每个中断类型号对应一个中断服务程序,每个中断服务程序都有一个入口地址,即中断向量。把系统中的全部中断向量集中存放到存储器的某个区域内,这个存放中断向量的存储区就称为中断向量表。
总流程
其中,1到3由硬件完成,4到9由中断服务程序完成
多重中断
在CPU执行中断服务程序的过程中,若又出现了新的优先级更高的中断请求,而CPU对新的中断请求不子响应,则称这种中断为单重中断,如图所示。
若CPU暂停现行的中断服务程序,转去处理新的中断请求,则称这种中断为多重中斯,也称中断嵌套。
中断屏蔽
中断屏蔽是为了动态调整多重中断中的优先级,即动态调整处理顺序。
它通过在中断系统中设置中断屏蔽寄存器来实现。每个中断源对应中断屏蔽字寄存器中的某一位,1表示屏蔽该中断源的请求,0表示可以正常请求。中断屏蔽字寄存器的内容称为中断屏藏字。(这里可以理解为一个掩码,用于屏蔽掉不想要接受的相关中断)
如图所示,中断信号会和中断屏蔽字进行按位与的操作,如果被屏蔽,那么就无法到达判优电路,从而使得其不能被执行。
DMA方式
DMA方式是一种完全由硬件进行成组信息传送的控制方式,它同样具有程序中断方式的优点,即CPU和外设可以并行工作。
同时又避免了程序中断方式中保护、恢复CPU工作状态的处理,DMA在外设和内存之间开辟了一条直接的数据通路,信息传送基本无视CPU。
DMA控制器
如图,是DMA控制器的组成。DMA控制器的主要功能是:当设备需要进行数据传送时,向CPU提出DMA传送请求,让CPU让出系统总线,以供DMA传输数据
其主要功能如下:
DMA控制器中的主要组成部分如下
DMA的传送方式
由于DMA和CPU都需要访问主存,为了避免访问冲突,总共有以下几种方法。
1)
停止CPU访存:有DMA请求时,直接不让CPU访问主存,CPU放弃总线控制权。
2) 周期挪用:如图所示,DMA控制器周期性的发出DMA控制信号,传送完一个对应的数据字之后立刻释放总线。只要IO的访存请求和CPU冲突,那么CPU都要停止总线控制权让路
3)
DMA与CPU交替访存:将CPU的工作周期分为两个部分,一个部分给CPU访存用,一个部分专门给DMA用。不过这种方式需要主存的存取周期小于CPU的工作周期。
DMA传送流程
- 预处理:由CPU完成一些必要的准备工作
- 数据传送:完全由DMA控制器控制
- 后处理:DMA发出请求,由CPU做DMA结束处理
DMA方式和中断方式的区别
- 中断方式需要保护和恢复当前程序的现场,而DMA方式不用
- 对中断请求的响应只能发生在每条指令结束时,(因为要保存现场),而对DMA请求的响应可以在任意一个机器周期的结束时刻
- 中断方式的传输过程需要CPU的干预,而DMA传送过程不需要CPU的干预,传输速率快。
- DMA请求的优先级高于中断请求
- 中断方式可以处理异常,DMA仅限于数据传送
- 数据传送上,中断方式依靠中断服务程序进行数据传送,而DMA依靠硬件传送。
通道方式
通道的概念和功能
通道可以理解为是一个比较简易的由硬件实现的IO控制器,它能够执行有限的IO指令集。
IO过程开始时,CPU发送命令给通道控制器并启动通道,通道控制器执行内存中的通道程序进行IO数据操作。
执行完最后一道指令之后,通道向设备发出结束命令,向CPU发出中断请求信号,并将通道状态写入主存
CPU收到中断信号后,执行IO中断服务程序,对通道做结束处理。
可以理解为是一个专门用来IO的处理器。
DMA方式VS通道方式
通道控制器 | DMA控制器 | |
---|---|---|
硬件实现 | 复杂 | 复杂 |
I/O操作执行方式 | 通过执行通道程序完成 | 由硬件直接完成 |
初始化方式 | 通过执行通道程序完成 | 依靠CPU进行初始化 |
可连接外部设备 | 支持更多设备 | 支持相对较少设备 |
通道的类型
| 选择通道(高速通道) | 字节多路通道 | 数组多路通道 |
---|---|---|---|
用途 | 高速设备(如磁盘) | 大量低速设备(如键盘、打印机) | 中高速设备(如磁带) |
传输单位 | 数据块 | 单字节 | 数据块 |
子通道数量 | 1个子通道 | 多个子通道 | 多个子通道 |
执行方式 | 独占通道,执行完一台设备程序再切换 | 分时片轮询,短时间内交替执行多设备程序 | 分时轮转,结合数据块传输和并行操作 |
连接设备逻辑 | 逻辑上单设备 | 逻辑上多设备 | 逻辑上多设备 |
优点 | 高传输速率 | 支持设备并行操作,减少空闲时间 | 兼具高传输速率与设备并行操作能力 |
缺点 | 设备利用率低(需等待通道释放) | 单次传输效率低(仅1字节) | 实现复杂度较高 |
如果您喜欢我的文章,可以考虑打赏以支持我继续创作.