博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算机组成原理学习笔记——I/O方式
阅读量:3941 次
发布时间:2019-05-23

本文共 4699 字,大约阅读时间需要 15 分钟。

I/O 方式

  • 常用的 I/O 方式有程序查询、程序中断、DMA 和通道等,前两种更依赖于 CPU 中程序指令的执行。

1、程序查询方式

  • 信息交换的控制完全由主机执行程序实现,程序查询方式接口中设置一个数据缓冲寄存器和状态寄存器。主机进行 I/O 操作时,先询问设备状态,更具设备状态决定下一步操作是进行数据传输还是等待。
  • 程序查询方式一般流程如下:
    ① CPU 执行初始化程序,并预置传送参数。	② 向 I/O 接口发出命令字,启动目标设备。	③ 从外设接口读取目标设备的状态信息。	④ CPU 不断查询目标设备状态,知道外设准备就绪。	⑤ 传送一次数据。	⑥ 修改地址和计数器参数。	⑦ 判断传送是否结束,若未结束转第 ③ 步,直到计数器为 0。
  • 此方式下,CPU 一旦启动 I/O 就须停止现行程序的运行并插入一段程序。
  • 特点:CPU 有“踏步”等待现象,CPU 与 I/O 串行工作
  • 优点:接口设计简单、设备量少
  • 缺点:信息传输过程中 CPU 等待的时间较多,一段时间内只能和一台外设交换信息,效率较低
    在这里插入图片描述

2、程序中断方式

2.1、何为中断

  • 计算机执行现行程序过程中,出现某些急需处理的情况或特殊请求,CPU 暂停现行程序转而去处理那些异常情况或特殊请求,处理完毕后 CPU 又自动返回现行程序的断点处继续执行原程序剩下的操作
  • 程序中断作用如下:
    ① 实现 CPU 与 I/O 设备并行工作;	② 处理硬件故障和软件错误;	③ 实现人机交互,用户干预机器需要用到中断系统;	④ 实现多道程序、分时操作,多道程序的切换需借助于中断系统。	⑤ 实时处理需要借助中断系统来实现快速响应。	⑥ 实现应用程序和操作系统的切换,称为“软中断”。	⑦ 多处理器系统各处理器之间的信息交流和任务切换。

2.2、程序中断方式的思想

  • CPU 在程序中安排好在某时刻启动外设,然后 CPU 继续执行原来的程序,一旦外设准备就绪便主动向 CPU 发出中断请求,而 CPU 若可以立即响应则暂时中止正在执行的程序,转而去执行中断服务为外设服务,在中断服务程序中完成一次主机与外设的数据传输,然后返回原来的程序。
    在这里插入图片描述

2.3、工作流程

1)中断请求

  • 指中断源向 CPU 发出中断请求信号。
① 内中断和外中断
  • 外中断一般指来自处理器和内存以外的部件引起的中断,I/O 中断便属于外中断,用户按下 Esc 键发出的信号引起的中断也是属于外中断,各种定时器引起的时钟中断也是外中断;外中断在狭义上一般称为中断。
  • 内中断指处理器和内存内部产生的中断,如程序运算引起的各种错误(地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除零异常、非法指令、用户程序执行特权指令、分时系统中的时间片中断、用户态到内核态的切换)
② 硬件中断和软件中断
  • 硬件中断:通过外部的硬件产生的中断;硬件中断属于外中断
  • 软件中断:通过某条指令产生的中断,通常可以用编程实现;软件中断属于内中断
③ 非屏蔽中断和可屏蔽中断
  • 非屏蔽中断:一种硬件中断,此种中断通过不可屏蔽中断请求 NMI(Non Maskable Interrupt) 控制,不受中断标志位 IF 的影响,即使在 IF=0(关中断)的情况下也会被响应
  • 可屏蔽中断:也是一种硬件中断,通过中断请求标记触发器 INTR 控制,且受中断标志位 IF 的影响,在关中断情况下不接受中断请求

2)中断判优

  • 中断系统在任一瞬间只能响应一个中断请求,而中断源发出的中断请求往往是随机的,因此当多个中断源同时发出中断请求时,就需要中断判优逻辑确定响应哪个中断源的中断请求
  • 中断判优可硬件实现也可软件实现;硬件实现通过硬件排队器实现,可设置在 CPU 中,又可以分散在各个中断源中;软件实现通过查询程序实现。
  • 通常,硬件故障中断属于最高级,其次是软件中断,非屏蔽中断优于可屏蔽中断,DMA 请求优于 I/O 设备传送的中断请求,高速设备优于低速设备,输入设备优于输出设备,实时设备优于普通设备

3)CPU 响应中断的条件

  • CPU 响应中断必须满足以下三个条件:
    ① 中断源有中断请求;	② CPU 允许中断及开中断	③ 一条指令执行完毕,且没有更紧迫的任务。I/O 设备就绪时间是随机的,而 CPU 在统一时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取 I/O 的中断请求,也即是,CPU 响应外中断的时间是每条指令执行阶段的结束时刻。

4)中断隐指令

  • CPU 响应中断到执行中断服务程序,期间好需要经过一些由硬件直接实现的操作,这些操作就被叫做中断隐指令;中断隐指令并不是真正的系统指令,没有操作码,是一种不允许也不可能为用户使用的特殊指令,完成的操作如下:
    ① 关中断:在中断服务程序中,为保护中断现场,为保证期间不会被新的中断打断,为保证中断之后能够返回继续正确的执行原来的程序,必须关中断。	② 保存断点:指将程序计数器的内容保存起来,从而能够在中断服务程序执行完毕后正确的返回原来的程序。	③ 引出中断服务程序:指取出中断服务程序的入口地址并传送给程序计数器。

5)中断向量

  • 不同设备对应不不同的中断服务程序,每个程序都一个入口地址,中断服务程序也不能例外,中断服务程序的入口地址又称为中断向量。通常系统会将所有的中断向量集中存储到存储器的某个区域,该区域因此称为中断向量表
  • 在 CPU 响应中断后,中断硬件自动将中断向量地址传送到 CPU,由 CPU 实现进程切换,此方法称为中断向量法,采用中断向量法的中断称为向量中断

6)中断处理过程

在这里插入图片描述

2.4、多重中断和中断屏蔽字

  • CPU 在执行某个中断服务程序时,出现新的更高优先级的中断请求,此时若 CPU 对新的中断请求不予响应,此种中断称为单重中断;若 CPU 暂停现行中断服务程序,去处理新的中断请求,则称为多重中断,也即嵌套中断
  • 中断屏蔽技术主要用于多重中断,CPU 必须满足下面的条件才能具有多重中断的能力:
    ① 在中断服务程序中提前设置开中断指令。② 优先级别高的中断源有权中断优先级别低的中断源。
  • 每个中断源都有一个屏蔽触发器,1 表示屏蔽该中断源的请求,0 表示可以正常申请,所有屏蔽触发器组合起来构成一个屏蔽字寄存器,其内容称为屏蔽字

3、DMA 方式

3.1、基本概念

  • 该方式是一种完全由硬件进行成组信息传送的控制方式,具有程序中断方式的优点——数据准备阶段 CPU 与外设并行工作。该方式在外设与内存之间开辟一条“直接数据通道”,从而信息传送无需经过 CPU,大大降低了 CPU 开销(没有保护、恢复 CPU 现场等操作),该方式下的数据传输称为直接存储器存取方式。
  • DMA 方式适用于磁盘机、磁带机等高速设备大批量数据的传送,它的硬件开销比较大,此时中断的作用仅限于故障和正常传送结束时的处理。

3.2、特点

  • DMA方式的特点如下:
    ① 使主存与 CPU 的固定关系脱钩,主存可被 CPU 和外设访问。② 在数据块传送时,主存地址的确定、传送数据的计数等由硬件电路直接实现。③ 主存中开辟专门的缓冲区,及时供给和接收外设的数据。④ CPU 和外设并行工作。⑤ 在传送开始前需要通过程序进行预处理,结束后要通过中断方式进行后处理。

3.3、DMA 控制器的组成

  • DMA 方式下对数据传送过程中进行控制的硬件称为 DMA 控制器,I/O 设备需要传输数据时,DMA 控制器向 CPU 提出 DMA 传送请求,CPU 响应后让出系统总线,DMA控制器接管总线并进行数据传输。
  • DMA 控制器的主要功能如下:
    ① 接受外设发出的 DMA 请求,并向 CPU 发出总线请求。② 发出总线响应信号,接管总线控制权。③ 确定传送数据的主存单元及长度,并自动修改主存地址计数和传送长度计数。④ 规定数据在主存和外设间的传送方向,发出读写控制信号,执行数据传送操作。⑤ 向 CPU 报告 DMA 操作的结束。
    在这里插入图片描述
  • 主存地址计数器:存放要交换数据的主存地址
  • 传送长度计数器:记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号
  • 数据缓冲寄存器:暂存每次传送的数据
  • DMA 请求触发器:每当 I/O 设备准备好数据后,给出一个控制信号,使 DMA 请求触发器置位
  • “控制/状态”逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对 DMA 请求信号和 CPU 响应信号进行协调和同步
  • 中断机构:当一个数据块传送完毕后触发中断机构,向 CPU 提出中断请求。
  • 注意:DMA 传送过程中由于 DMA 接管总线控制权,CPU 的主存控制信号被禁止使用,当 DMA 传送结束后,CPU 恢复一切权力

3.4、DMA 访存方式

  • 为了避免当 I/O 设备和 CPU 同时访问主存时,产生冲突,DMA 控制器和 CPU 通常采用以下三种方式访存:

1)停止 CPU 访存

  • 当进行 DMA 传送时,要求 CPU 放弃地址线、数据线和有关控制线的使用权,当 DMA 传送结束后,CPU 才恢复原有权力;此方式下,当 DMA 传送数据时,CPU 基本处于不工作状态或保持原始状态

2)DMA 与 CPU 交替访存

  • 此方式适用于 CPU 的工作周期比主存存取周期长的情况。通常将一个 CPU 周期划分为两个子周期,一个供 DMA 访存,一个供 CPU 访存。此方式下不需要总线使用权的申请、建立和归还过程,总线使用权通过分时控制。

3)周期挪用

  • 或叫做周期窃取,是前两种方式的折中。I/O 设备有 DMA 请求时通常会遇到三种情况:CPU 没有正在访存、CPU 正在访存和 CPU 与 I/O 同时请求访存;前两种情况都不会访存冲突,只有第三种情况会,此时采取的策略是 CPU 让权,即 CPU 暂时放弃总线占有权,由 I/O 设备挪用一个或几个周期

3.5、传送过程

  • DMA 数据传送过程分为预处理、数据传送和后处理三个阶段。

1)预处理

  • 主要是 CPU 完成一些必备工作:CPU 执行几条 I/O 指令测试 I/O 设备状态,向 DMA 有关寄存器置初值、设置传送方向、启动 I/O 设备等;CPU 继续执行原来程序,直到 I/O 设备就绪,I/O 设备向 DMA 控制器发送 DMA 请求,DMA 控制器向 CPU 发送总线请求

2)数据传送

  • DMA 以字节或字、数据块为基本单位。对于一数据块为单位传送的,DMA 占用总线后的数据输入和数据输出操作,都是由 DMA 控制器通过循环来实现

3)后处理

  • DMA 控制器向 CPU 发出中断请求,CPU 执行中断服务程序做 DMA 结束处理,如校验送入主存的数据是否正确、测试传送过程中是否出错、决定是否继续使用 DMA 传送其他数据块等
    在这里插入图片描述

3.6、DMA 方式和中断方式的区别

  • 主要区别如下:
    ① 中断方式是程序的切换,需要保护和恢复现场;DMA 除了预处理和后处理,不需要占用 CPU 的任何资源。② 对中断请求的响应只能发生在每条指令执行完毕时;而对 DMA 请求的响应可以发生在每个机器周期结束时,只要 CPU 不占用总线就能被响应。③ 中断传送过程需要 CPU 的干预;DMA 不需要,因此数据传输速率非常高,适合用于高速外设的成组数据传送。④ DMA 请求优于中断请求。⑤ 中断方式具有对异常事件的处理能力,DMA 仅限于传送数据块的 I/O 操作。⑥ 中断方式靠程序传送,DMA 靠硬件传送。

转载地址:http://amqgn.baihongyu.com/

你可能感兴趣的文章
Java传统IO / NIO基础知识
查看>>
Netty3- 入门示例
查看>>
Netty3 - 多连接的客户端示例
查看>>
Netty3 -会话状态监听
查看>>
Netty3 - 对象的序列化与反序列化ProtoBuf
查看>>
Netty3 - 对象的序列化与反序列化 java
查看>>
Netty3 - 自定义序列化协议(1)
查看>>
Netty3 - 自定义序列化协议(2)
查看>>
数据缓存一致性方案
查看>>
分布式锁原理 --及常见实现方式的优劣势分析
查看>>
一:Lua 数据类型及表达示
查看>>
二:Lua 基本语法
查看>>
Ubuntu 18.04 界面美化之windows任务栏
查看>>
QT 5.9.0 移植
查看>>
objdump 反汇编 vmlinux详解
查看>>
sudo命令无法读取环境变量的解决方法
查看>>
Qt中configure参数配置说明
查看>>
Ubuntu 添加右键打开终端
查看>>
Linux 内核开机logo制作
查看>>
WIN10 + Ubuntu 16.04 双系统安装教程
查看>>