I/O系统
阅读原文时间:2023年07月11日阅读:2
  • 外部设备
  • 接口部件
  • 总线
  • 相应的管理软件

I/O软件

  • 将用户编制的程序(或数据)输入主机内

  • 将运算结果输出给用户

  • 实现输入输出系统与主机工作的协调

  • 完成计算机内部二进制信息与外部多种信息形式间的交流

  • 保证CPU能正确选择I/O设备并实现对其控制,传输大量数据,避免数据出错

  • 利用数据缓冲,选择合适的数据传送方式等,实现主机与外设间速度的匹配

异步性

外设的工作速度和CPU相差甚远,外围设备相对于处理机通常是异步工作

实时性

输入输出的操作必须按各设备实际工作速度,控制信息流量和信息交换的时刻

设备无关性

输入输出与具体设备无关,具有独立性

一种为主机和外设之间传送信息而设置的硬件线路。在系统总线和外设之间传输信号,提供缓冲作用,以满足接口两边的时序要求。

主要部件:

  • 数据缓冲寄存器
  • 设备地址识别线路
  • 设备状态字寄存器
  • 主机命令字寄存器
  • 数据格式转换线路
  • 数据地址寄存器
  • 控制逻辑

操作码

命令码

设备码

判别代码

I/O设备的具体操作

设备的地址

I/O指令是机器指令的一类,其指令格式与其他指令既有相似之处,又有所不同。

  • 统一编址方式:把I/O端口当做存储器的单元进行地址分配。

优点

缺点

不需要专门的I/O指令,CPU访问I/O操作更灵活、更方便

端口占用了存储器地址

还可使端口有较大的编址空间

数据I/O操作执行速度较慢

  • 单独编址方式

优点

缺点

I/O指令和存储器指令区别明显,程序编址清晰,便于理解

I/O指令少,一般只能对端口进行传送操作

需要CPU增加 M/IO*信号,增加了控制的复杂性

选择输入设备

CPU把一个地址放在AB

CPU等候输入设备的数据成为有效

CPU从DB读入数据,放入寄存器

选择输出设备

CPU把一个地址放在AB

CPU把数据放在DB

输出设备认为数据有效,取走数据

  • 无条件I/O
  • 程序控制I/O
  • 中断I/O
  • DMA
  • 通道
  • I/O处理机

CPU默认外设始终准备就绪,不检查I/O的状态就进行数据的传输

  • 输入时:必须确保CPU执行I/O指令读取数据时外设已将数据准备好
  • 输出时:必须确保外设的数据锁存器为空(外设已将上次的数据取走,等待接收新的数据,否则会导致数据传输出错)

优点

缺点

硬件接口电路和软件控制程序都比较简单

一般的外设难以满足要求

接口电路

  • 数据缓冲寄存器:匹配主机与外设的速度差异
  • 设备地址识别线路:设备地址的译码器
  • 设备状态字寄存器:用来标志设备的工作状态,以便接口对外设进行监视

流程


CPU通过程序不断查询I/O设备是否做好准备,从而控制I/O设备与主机交换信息

优点

缺点

主机和外设之间能同步,接口设计简单,设备量少

CPU花费大量时间查询和等待,效率低下

CPU启动I/O设备之和,不查询设备是否准备好,继续执行自身程序,当I/O设备准备就绪并向CPU发出中断请求之和才予以响应。

中断的定义:CPU正常运行程序时,出现异常或特殊请求,CPU中断正在运行的程序,转到中断事件服务程序,服务完毕,再回到原程序的过程。

中断作用:

  • 实现CPU与I/O设备并行工作
  • 硬件故障
  • 实现人机联系
  • 实现多道程序和分时操作
  • 实现实时处理
  • 实现应用程序和操作系统的联系
  • 多处理机系统各处理机间的联系

中断的分类:

中断

内部中断

外部中断

自愿中断

指令中断

强迫中断

硬件故障

软件中断

可屏蔽 INTR

不可屏蔽 NMI

  • 中断请求触发器和中断屏蔽触发器
  • 排队器
  • 中断向量地址形成部件(设备编码器)


既可用硬件排队,也可用软件排队

多个中断源提出请求,处理器在一个时刻只能响应一个请求,按优先级予以响应

一般速度较快的I/O设备优先级较高

程序查询法:

当有中断请求时,CPU转向固定的中断查询程序入口,按照优先级依次检查所有设备。适用于低速和中速设备。

优点

缺点

程序可以任意改变设备优先级

速度慢

硬件向量法:

中断号:系统分配给每个中断源的代号,便于识别和处理。

编码电路根据排队器的输出信号产生一个预定的地址码,称为中断号。中断号0~255。每项4个字节。构成了中断向量表。中断向量表在主存中00000H-003FFH共1KB的空间,存放了中断处理子程序的入口地址信息。

00000H

子程序所在段的段偏移

00001H

子程序所在段的段偏移

00002H

子程序所在段的段首址

00003H

子程序所在段的段首址

高地址内容送入CS,低地址内容送入IP

  1. 中断允许触发器EINT为“1”

开中断

关中断

EINT置1

EINT置0

  1. 中断请求触发器为“1”,保持中断请求信号
  2. 中断屏蔽触发器为“0”
  3. CPU在现行指令结束的最后一个状态周期
  4. 无DMA请求

处理某个中断时又来了新的中断请求,中断当前服务程序的执行,转去执行新的中断处理。一般等级高的中断打断等级低的中断,等级相同或低的不能打断等级高的中断。

INTR可以进行中断嵌套,NMI不能进行中断嵌套

单级中断:执行中断服务程序时对新的中断不予理睬

Created with Raphaël 2.2.0

单级中断

关中断

识别中断源

设置新的屏蔽字

中断服务

恢复现场和屏蔽字

开中断

中断返回 恢复断点

关中断

EINT置0,CPU专心保存或恢复现场,即使有更高级中断请求也不响应

保护现场

1. 保存程序断点 2. 除了PC和PSW,如果中断服务程序要动用哪些寄存器,就把这些寄存器原来的内容压入堆栈

设置新屏蔽字

封锁优先级相同或比较低的请求,让CPU不用去判断是否响应

恢复现场和屏蔽字

将保存在堆栈中的信息送回原来的寄存器中

中断返回

回到原程序的断点处

多级中断:在保护现场后开中断,可以执行中断嵌套

Created with Raphaël 2.2.0

多级中断

关中断

识别中断源

设置新的屏蔽字

开中断

中断服务

关中断

恢复现场和屏蔽字

开中断

中断返回 恢复断点

  • 程序控制I/O是CPU查询外设,中断I/O是外设主动通知CPU
  • 程序控制I/O方式中,CPU和外设不能并行工作,中断I/O可以并行工作。
  • 程序控制I/O无法处理异常
  • 程序控制I/O硬件结构比较简单,缺点是CPU效率低且只能进行数据传输
  • 中断I/O硬件结构比较复杂

DMA Direct Memory Access

DMA控制器获得总线的控制权,数据交换不经过CPU,而直接在内存和设备之间进行。适用于高速大批量数据传送的系统中,比如磁盘和主存之间。

DMA控制器的工作状态

被动态

未去掉总线控制权,受CPU的控制

主动态

接管并取得总线控制权,取代CPU而成为系统的主控者

Address Register

存放主存中需要交换的数据的地址

Word Counter

用于记录传送数据的总字数,当WC溢出(全0),表示一批数据交换完毕

Buffer Register

用于暂存每次传送的数据

DMA控制逻辑

负责管理DMA的传送过程,由控制电路、时序电路及命令状态控制寄存器组成

中断机构

WC溢出时,溢出信号通过中断机构向CPU提出中断请求,请求CPU作DMA操作后处理

Device Address Register

存放I/O设备的设备码或表示设备信息存储区的寻址信息

Created with Raphaël 2.2.0

预处理

提出占用总线请求

CPU按优先级响应请求

数据传输

后处理

预处理:

  • 给DMA控制逻辑指明当前数据传送使输入(WR)还是输出(RD)
  • 给DAR送设备号
  • 给AR送主存中目标数据的地址
  • WC赋交换数据的个数

数据输入:

  • BR读入I/O设备的一个字,I/O设备向DMAC发请求(DREQ)
  • DMAC向CPU申请总线控制权(HRQ)
  • CPU发回HLDA信号,允许DMAC控制总线
  • DMAC的AR向AB发送地址,命令存储器写
  • 通知设备已被授予一个DMA周期(DACK),为下一个字的传输做准备
  • DMAC的BR向DB发送数据
  • 主存写入
  • AR和BR的内容修改
  • 判断是否传送结束。若WC溢出,向CPU申请中断

数据输出:

  • DMAC的BR空
  • 设备向DMAC发送DREQ
  • DMAC向CPU发HRQ
  • CPU发回HLDA
  • DMAC的AR送AB,命令存储器读
  • 通知设备,为下一个字传输做准备
  • DMAC的BR读入DB上的数据
  • AR和BR内容修改
  • 判断是否结束

后处理:CPU进入中断,为DMA收尾。

  • 校验主存写入数据是否正确
  • 决定是否继续用DMA传送其他数据块,若继续则初始化DMAC;不继续则停止外设
  • 测试传送过程是否发生错误,出错则转入诊断和处理错误程序

  • 停止CPU访问内存:在DMA传送过程中,CPU基本处于挂起状态。

优点

缺点

适用于数据传输速率很高的设备进行成组传送(磁盘)

DMAC访存过程中,内存的效能够没有充分发挥

停止CPU访存方式下,相当一部分内存工作周期是空闲的。因为传送两个数据之间的间隔一般总是大于内存存储周期,即使高速I/O设备也是如此。

  • 周期挪用:当I/O设备有DMA请求时,I/O设备挪用一个或几个内存周期。若CPU也同时要访存,此时I/O设备访存优先。

优点

缺点

既实现了I/O传送,又较好地发挥了内存和CPU的效率

每次周期挪用都要申请,建立,归还总线控制权

周期挪用方式适用于I/O设备读写周期大于内存存储周期的情况。

  • DMA与CPU交替访存:将CPU工作周期一分为二,一半由DMA使用,一半为CPU使用。CPU既不停止主程序的运行,也不进入等待状态。

优点

缺点

不需要频繁重复总线使用权申请,建立,归还的过程。

CPU的系统周期比存储周期长得多,相应硬件逻辑更复杂

  • 中断的数据传送靠程序,DMA靠硬件
  • DMA优先级高于中断
  • CPU在指令执行结束时响应中断请求,DMA在指令周期任一存取周期结束时响应。
  • DMA不能处理异常
  • DMA不用保护现场

通道是一个特殊功能的处理器,有自己的指令和程序专门负责数据输入输出的传输控制

CPU将“传输控制”的功能下放给通道。通道与CPU分时使用内存,实现了CPU内部运算和I/O设备的并行工作。

工作流程

Created with Raphaël 2.2.0

按下一个键

查出按下的是哪个键

把该键翻译成ASCII码

发送给主机

硬件编码键盘



未按键时:扫描随计数器的循环计数而反复进行

按下某键时:键盘通过单稳电路产生一个脉冲信号。

  • 计数器停止计数,终止扫描,此刻计数器的值和按键的位置相对应。计数器的值作为ROM的输入地址,这个地址指向按键的ASCII码
  • 脉冲经中断请求触发器向CPU发送中断请求,CPU响应请求后转入中断服务程序。CPU读入ROM里指定的ASCII码。

RD信号用途:

  • 可以用来作为读出ROM的片选信号
  • 经过一段延迟后,可以用来清除中断请求触发器,并重新启动计数器

消抖电路:按键时出现的机械抖动容易造成误动

采用奇偶校验来提高传输的可靠性

非编码键盘

由简单的硬件和专用软件识别按键的位置,提供位置码,然后由CPU执行查表程序,将位置码转换成ASCII码

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器