Bonky
Neither believe nor reject anything, because any other person has rejected or believed it. Heaven has given you a mind for judging truth and error, Use it.
By Thomas Jefferson

计算机组成 – 输入输出系统

概述

发展

  • 早期阶段(程序查询方式,即完全通过 CPU)
  • 接口模块和 DMA 阶段(中断方式和 DMA 方式)
  • 具有通道结构的阶段
  • 具有 I/O 处理器的阶段

组成

  • 软件:I/O 指令,通道指令(通道指令存放在主存里面,属于通道不属于 CPU)

image-20191204204509923

  • 硬件:I/O 接口,设备控制器,通道

联络方式

编制方式:统一编址(和内存的指令共用),不统一编址(有专门的I/O指令)

传送方式:串行,并行

联络方式:立即响应,异步工作采用应答信号(注意串行的时候需要标记起始位和终止位),同步工作采用同步时标

连接方式

  • 辐射式连接:每台设备都配有一套控制线路和一组信号线,不便于增删设备(单独设计电路,如果想要删除就必须重新设计电路)

image-20191204205203397

  • 总线连接:便于增删设备(USB 就是总线连接)

控制方式

程序查询方式

在进行 I/O 的时候,CPU 也需要停下来等待。CPU会不断检查 I/O 的状态,造成效率非常的低。

image-20191204205606476

程序中断方式

当 I/O 自己在准备的时候,CPU 不会检查输入输出设备的状态。只有在开始信息交换的时候,那么输入输出设备就会请求中断,CPU 执行中断后,执行 I/O 操作。

image-20191204210040321

DMA 方式

主存和 I/O 之间可以直接进行数据的交换,无需 CPU 的参与。DMA 会窃取一个或若干个存取周期,进行主存和 I/O 的数据传输。但是这个时候,CPU 不能使用主线,但好在 CPU 有缓存,我们仍然可以利用缓存中指令和数据继续执行程序。

image-20191204210524193

I/O 设备

image-20191204213035350

I/O 接口

功能和组成

image-20191204213408478

  • 设备选择线:选择所用到的设备
  • 数据线:传送数据
  • 命令线:判断是读还是写
  • 状态线:判断是否在忙
功能 组成
选址功能 设备选择电路
传送命令的功能 命令寄存器、命令译码器
传送数据的功能 数据缓冲寄存器
反映设备状态的功能 设备状态标记(完成触发器,工作触发器,中断请求触发器,屏蔽触发器)

image-20191204214147421

接口类型

image-20191204214456885

程序查询方式

屏幕快照 2019-12-04 下午9.50.48

接口电路

其中工作寄存器是 B, 完成寄存器是 D。在 (1) 的时候,D=1,B=0表示设备在工作,但是数据仍然没有准备好。当设备工作完成后,执行 (4) ,使得 D=1,B=0,说明数据准备好了。在此期间,CPU 会一直检查 D,一但 D 为1,CPU 就把 DBR 中的数据取出。

image-20191204215555630

程序中断方式

I/O 中断的例子

image-20191204220529660

接口电路

  1. 配置中断请求触发器和中断屏蔽触发器(可能有优先级高的中断,所以需要屏蔽)。如下图,中断请求触发器的值取决于完成触发器和屏蔽触发器的值。
    image-20191204221043924
  2. 排队器(对于高速设备,肯定是要优先级高一些的,因为不及时处理就会丢失数据),下图链式排队器,越靠左优先级越高。
    image-20191204221245541
  3. 中断向量地址形成部件:由硬件产生向量地址,再由向量地址找到中断服务程序入口地址。
    image-20191204221544057
  4. 程序中断方式接口电路的基本组成:其实就是在原来程序查询方式的接口电路基础上,加上了 INTR 和 MASK,以及排队器和中断向量的编码器。设备编码器是将排队器输出转换为中断向量。

image-20191204221744910

中断服务程序流程

保护现场需要保护程序的断点,也需要保护一些通用的寄存器(进栈)。

单重中断和多重中断:

  • 单重中断:不允许中断现行的中断服务程序
  • 多重中断:允许级别更高的中断源中断现行的中断服务程序

DMA 方式

image-20191204223325692

DMA 与主存交换数据的方式

停止 CPU 访问主存

在DMA工作的过程中,如果缓存里面没有执行的程序,CPU 则会停下来。

image-20191204223602331

周期挪用

DMA 访问主存有三种可能

  • CPU 此时不访存
  • CPU 正在访存
  • CPU 与 DMA 同时请求访存:此时 CPU 将总线控制权让给 DMA

image-20191204223825122

DMA 与 CPU 交替访问

不需要申请建立和归还总线的使用权,但实际上没什么实用价值(因为有些时候 DMA 不需要这么多时间)

image-20191204223856810

功能和组成

DMA 需要的功能如下:

  1. 向 CPU 申请 DMA 传送
  2. 处理总线控制权的转交
  3. 管理系统总线、控制数据传送
  4. 确定数据传送的首地址和长度,修正传送过程中的数据地址和长度
  5. DMA 传送结束时,给出操作完成信号

DMA 接口组成:

image-20191204224248009

AR 是地址寄存器,WC 是传输的数据数量, DAR 是设备地址寄存器,BR 是数据缓冲器(Buffer)。

DREQ,DACK 是设备的请求和确认信号,HRQ 是接管总线的请求信号,HLDA 是允许接管总线的应答信号。

DMA 的工作过程

右图是数据传送的一个过程。

image-20191204225933207

首先设备向 DMA 发出请求 DREQ,然后 DMA 请求占用总线 HRQ,如果可以的话,CPU 会给出应答信号 HLDA,然后设置AR为要访问的内存单元起始地址,然后执行 DACK 表示设备已经准备好数据传输了,然后进行数据的传输。直到 WC 不断加到溢出后(一开始 WC 为负数,溢出为000…),然后执行中断。然后中断程序执行后处理:

  • 校验送入主存的数是否正确
  • 是否继续用 DMA
  • 测试传送过程是否正确,错则转诊断程序
  • 由中断服务程序完成

image-20191204230039512

DMA 接口与系统的连接方式

具有公共请求线的 DMA 请求(同链式访问,越近优先级越大)

image-20191204230721682

独立的 DMA 请求:(同总线的独立请求方式)

image-20191204230840037

DMA 方式与程序中断方式的比较

中断方式 DMA 方式
数据传送 程序 硬件
响应时间 指令执行结束 存取周期结束
处理异常情况 不能
中断请求目的 传送数据 后处理
优先级 高(直接交换,一般都是高速设备)

类型

选择型

image-20191204231958996

多路型

image-20191204232019607

Share

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注