输入输出系统


0x00.概述

输入输出系统是计算机系统中结构最多、功能最多的组件。

输入输出系统的发展概况

早期

分散连接

CPU和I/O设备串行工作,即I/O设备进行输入输出的时候,CPU必须运行外部程序或者停止的状态。

接口模块和DMA阶段

总线连接
I/O设备通过接口连接在总线上,一个总线可以连接多个设备,总线另外一端和主机相连。

CPU和I/O设备并行工作:

  1. 中断方式
  2. DMA方式(DMA:Direct Memory Access,直接内存存取)

具有通道结构的阶段

通道有自己的指令系统,通过执行通道程序,可以控制连接在通道上的IO设备和主机之间直接进行IO传输。

具有I/O处理机的阶段

I/O处理机是一个较为独立的处理机专门用来处理I/O信息。

通过上面的示例我们可以看出来:数据的输入输出操作逐渐被从CPU当中分离出来,外部设备的独立性越来越强。

输入输出系统的组成

I/O软件

  • I/O指令:CPU指令的一部分

I/O指令格式:

操作码 命令码 设备码

操作码:标志作用,表示该指令是I/O指令
命令码:相当于CPU指令集中的操作码,指出对I/O设备做怎么的操作
设备码:给出I/O设备的编码(即地址),或者I/O设备中某寄存器的地址(我们叫做I/O设备某端口)

  • 通道指令:通道是一种小型的DMA处理机,能够实现I/O设备和主机之间直接信息传送。
    通道指令传输需要指出要传输的成块数据的首地址或者说数组的首地址(也可以是一个字节)、传送字数、操作命令。

I/O硬件

设备 I/O接口
设备 设备控制器 通道

I/O设备和主机之间的联系方式

I/O设备编制方式

  1. 统一编制
    把I/O设备的地址看成是内存地址的一部分。
    将内存地址的一部分拿出来,作为I/O设备的地址,或是端口的地址(即I/O设备中的寄存器),如果输入输出指令或是访存指令地址码部分的地址落入I/O地址部分,则这次的输入输出操作或是读写操作,实际上是针对I/O设备进行。
    这种情况下,CPU就可以直接利用取数或存数指令对I/O设备进行访问。

  2. 单独编址
    在内存地址空间之外,专门设置一部分地址空间。
    这种情况下,就不能采用计算机系统原有的取数、存数指令,我们对这种编址有专门的I/O指令。

设备选址

用设备选择电路识别是否被选中。这个实现并不难,只要把CPU给出的地址与各个设备中保存的自己的地址进行比较,如果两者相同,则该设备被选中。

传送方式

  1. 串行:数据一位一位的传输,传输速度慢,适合远程传输
  2. 并行:同时多位数据在数据线上传输(数据线的数量一般为8的倍数)

联络方式

  1. 立即响应
    例如LED灯,接收到数据之后会立即通过亮与不亮来响应。

  2. 异步工作采用应答信号

  • 并行工作:
    I/O接口和I/O设备之间有多条数据线,实现并行的数据输入输出。
    双方之间还要采用应答信号,例如输出的情况:I/O端口将数据准备好以后,通过一个Ready信号告诉I/O设备端口中的数据已经准备好了,I/O设备对端口中的设备进行读取,并且给出一个应答信号Strobe。输入的情况:I/O接口当中的数据缓冲器一旦通了,它就会向I/O设备发送Ready告诉I/O设备可以将数据发送过来,然后I/O设备向I/O接口发送数据并且给出应答信号Strobe。
  • 串行工作:
    为了使串行的工作方式能够正确工作,传输的时候要有一个起始位(9.09ms的低电平),这个电平结束之后是若干位的数据位,数据位传输结束以后是两位高电平的终止位(2 *9.09ms),表示这次传输结束

资源路径有问题

  1. 同步工作采用同步时标
    设备和主机之间要实现同步工作,必须有定宽定距的时标,通过该时标来控制某个时间点必须开始/结束某工作

I/O设备和主机之间的连接方式

  1. 辐射式连接
    辐射式连接,也就是分散连接,主机和I/O设备进行分散式的连接,增加一个I/O设备,就需要在主机中增加一套控制电路对主机进行控制。每台设备都配有一套控制线路和一组信号线。

不便于增删设备,不便于设备的移植性。
早期的时候外部设备比较少,所以采用这种方式也是蛮合适的。

  1. 总线连接
    外部设备通过接口和主机进行连接,接口能够向外部设备传送主机的控制命令,可以向主机传送设备的状态信息。
    输入:外部设备的输入输出可以先缓存到接口当中,完成数据的格式转换操作,然后再输入到主机中。
    输出:主机中的数据在接口中缓存,经过格式的变化等处理再传输给外部设别。

这种方式便于增删设备。

设备的制作我们会采用一些工业标准或者国际标准,这样就很容易实现外部设备和主存的连接

I/O设备与主机信息传送的控制方式

I/O设备的工作主要分为两个阶段:自身准备、与主机交换信息。
自身准备(准备期):CPU不查询
与主机交换信息(传输期):CPU暂停现行程序

程序查询方式

资源路径有问题
这种方式CPU的效率并不高,因为可能会由于I/O设备的速度较慢而导致阻塞,在设备准备数据的阶段或者设备进行状态准备的阶段,CPU会在原地进行踏步,可以看做CPU和I/O设备串行工作。

CPU参与准备期,也参与传输期

程序中断方式

资源路径有问题

当CPU执行到第K条指令的时候,收到了外部设备已经准备好发来的中断请求信息,CPU执行完K以后,将这个程序断点及相关的程序现场进行保存,然后跳转到中断服务程序,通过执行这个中断服务程序来完成数据的输入输出操作,中断执行程序执行完后,CPU又转回到第K+1条程序,恢复相关寄存器的内容,继续执行原来的程序。

这种方式由外部设备主动地发出中断请求信号,请求CPU协助完成数据的输入输出操作。
没有踏步等待现象,CPU不必等待数据的准备期,直接参与传输期,这种方法是CPU和IO部分的并行工作。

但是这种方法,记录指令断点、恢复指令断点等操作会执行很多条指令,这样假设传输的数据量非常小的话,可能会需要几十条指令来完成现场的保护/恢复工作,也会消耗CPU较大的时间。

CPU不参与准备期,只参与传输期

资源路径有问题

DMA方式

在上面两种方式中都是先将数据读入CPU,然后CPU写给内存或是发给IO设备,即内存和外设中间,要想有数据的传输,必须要有CPU的支持,而DMA方式(Direct Memory Access,直接内存存取),可以更进一步的解放CPU。

DMA方式:在主存和I/O之间有一条直接数据通道

不中断现行程序。
采用周期窃取(周期挪用)。

CPU会让出一个存取周期时间的总线控制权,在这个存取周期中,如果DMA需要完成I/O和内存之间的数据交换,那么这个主存周期就交给DMA使用,同样总线的控制权也交给DMA。

资源路径有问题
CPU正常执行时,遇到I/O请求会启动I/O,然后CPU继续执行自己的任务,而I/O设备在DMA控制器的控制下完成数据准备,然后DMA控制器发出DMA请求,占用一个存取周期的总线使用权,利用这个存储周期进行外部设备和主存的数据交换,在这个“被窃取”的存储周期中,CPU不能使用总线对内存进行访问(这个周期中,CPU虽然不能访存,但是仍可以内部运算),这个周期结束以后,I/O设备继续进行准备,总线的使用权又归还给CPU,CPU继续正常执行。

CPU几乎不参与准备期和传输期

三种方式的CPU工作效率比较

资源路径有问题

IO系统的自治能力越来越强


0x01.外部设备

概述

外部设备,即I/O设备。
外部设备包括了两大部分:设备控制器,机、电、磁、光部分。
主机通过I/O接口来给设备控制器写或读

资源路径有问题

外部设备大致分为三类:

  1. 人机交互设备:键盘、鼠标、打印机、显示器
  2. 计算机信息存储设备:磁盘、磁带、光盘
  3. 机——机通信设备:调制解调器、网卡等

磁盘、磁带、光盘等设备也是需要I/O接口与主机练习

输入设备

键盘

键盘
判断哪个键按下
将此键翻译成ASCII码(编码键盘法)

鼠标

机械式 金属球 电位器
光电式 光电转换器

触摸屏

输出设备

显示器

  1. 字符显示:字符发生器
  2. 图形显示:主观图像(程序绘制的点、线、面构成的图形)
  3. 图像显示:客观图像(照片、视频等)

打印机

  1. 击打式(针式打印机):把字符点阵通过色带和纸打印,点阵式(逐字、逐行)
  2. 非击打式:激光打印机、喷墨打印机

其他

D/A、A/D

A指模拟信号、D指数字信号。
A/D、D/A为 模拟/数字 (数字/模拟) 转换器
计算机内部采用的都是数字信号,如果计算机要对外部设备进行控制或者是把信号进行远程的传输,需要使用D/A设备,将计算机控制的数字信号转换为模拟信号,接收端再利用A/D接收模拟信号转换为数字信号。

终端

由键盘和显示器构成。
完成显示控制与存储、键盘管理及通信控制。

汉字处理

汉字输入、汉字存储、汉字输出

多媒体技术

语音识别、图像识别、图片识别、另类的输入方式等等


0x02.I/O接口

概述

为什么要设置接口?

  1. 实现设备的选择
  2. 实现数据缓冲达到速度匹配
  3. 实现数据串——并格式转换
  4. 实现电平转换
  5. 传送控制命令
  6. 反映设备的状态(“忙”,“就绪”,“中断请求”)

接口的功能和组成

总线连接方式的I/O接口电路

资源路径有问题

  • 设备选择线:传输参与本次参与信息交换的设备的设备码或者端口号(就是地址),传输个I/O接口,在I/O接口中进行匹配,单向。
  • 数据线:数据的输入或输出,条数和接口类型有关系,双向。
  • 命令线:来自主机的命令,通过命令线输入到I/O接口中,经过缓冲和译码以后和控制设备进行相应的输入和输出操作。
  • 状态线:I/O接口送到总线给主机,由主机来了解I/O设备的状态,单向

接口的功能和组成

资源路径有问题

如果屏蔽触发器等于1,尽管设备已经完成了工作,依然不能向主机发出中断请求,因为主机所处理的工作的重要性大于输入输出工作的重要性

I/O接口的基本组成

资源路径有问题

接口类型

按数据传送方式分类

  • 串行接口
  • 并行接口

按功能选择的灵活性分类

  • 可编程接口
  • 不可编程接口

按通用性分类

  • 通用接口
  • 专用接口

按数据传送的控制方式分类

  • 程序查询方式(不需要接口)
  • 中断方式
  • DMA方式

0x03.程序查询方式

程序查询流程

资源路径有问题

程序流程

资源路径有问题


0x04.程序中断方式

中断的概念

中断是指CPU在执行程序的过程当中,如果发生意外事件,CPU要中断当前程序的处理或执行,转而处理中断的事件,处理结束后,要返回到中断的程序断点。

资源路径有问题

I/O中断的产生

中断源:主机的外部、主机的内部、CPU的外部、CPU的内部,能够引发CPU中断的事物,都是中断源。

资源路径有问题
当打印机的缓冲区空了之后,会再次发起中断请求以继续打印。

CPU和打印机是部分并行进行工作。

宏观上CPU和I/O并行工作
微观上CPU中断现行程序为I/O服务

程序中断方式的接口电路

  1. 配置中断请求触发器和中断屏蔽触发器
  2. 排队器
  3. 中断向量地址形成部件
    资源路径有问题
  4. 程序中断方式接口电路的基本组成
    资源路径有问题

I/O中断处理过程

CPU响应中断的条件和时间

  • 条件
    允许中断触发器 EINT=1
    用 开中断 指令将 EINT 置 “1”
    用 关中断 指令将 EINT 置 “0” 或硬件 自动复位
  • 时间
    当 D=1(随机)且 MASK=0 时
    在每条指令执行阶段的结束前,CPU发中断查询信号(将INTR置“1”)

中断服务程序流程

中断服务程序的流程

  1. 保护现场
    程序断点的保护——中断隐指令完成
    寄存器内容的保护——进栈指令
  2. 中断服务
    对不同的I/O设备具有不同内容的设备服务。
  3. 恢复现场
    前面我们使用进栈指令进行保护(实际上保护中不一定必须使用进程指令,例如你可以保存在内存的指定位置也是可以的),恢复现场的时候我们就可以使用出栈指令(如果是保存在内存单元,我们还需要使用取数指令)。
  4. 中断返回
    中断返回指令。

单重中断和多重中断

  • 单重中断:不允许中断 现行的 中断服务程序
  • 多重中断:允许级别更高 的中断源中断 现行的 中断服务程序
    资源路径有问题
    多重中断的“设备服务”中,又可以被其他的中断打断,从而再执行别的中断。

0x05.DMA方式

DMA与主存交换数据的三种方式

停止CPU访问主存

即CPU某时段不执行程序,DMA进行工作与主存交互。

控制简单
CPU处于不工作状态或保持状态
未充分发挥CPU对主存的利用率

周期挪用(周期窃取)

周期是指访存周期。
DMA得到总线控制权,占用n个访存周期进行访存。

DMA访问主存有三种可能:

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

资源路径有问题

DMA与CPU交替访问

CPU工作周期:

  1. C1专供DMA访存
  2. C2专供CPU访存

过程中不需要申请、建立、归还总线的使用权,利用时序直接确定总线和内存的使用权。

DMA接口的功能和组成

DMA接口功能

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

DMA接口组成

资源路径有问题

  • 主存地址寄存器(AR)
    AR用于存放主存中需要交换数据的地址。在DMA传送数据前,必须通过程序将数据在主存中的首地址送到主存地址寄存器。在DMA传送过程中,每交换一种数据,将地址寄存器内容加1,直到一批数据传送完毕为止。
  • 字计数器(WC)
    WC用于记录传送数据的总字数,通常以交换字数的补码值预置。在DMA传送过程中,每传送一个字,字计数器加1,直到计数器为0,即最高位产生进位时,代表该批数据传送完毕(若交换字数以原码值预置,则每传送一个字,字计数器减1,直到计数器为0时,表示该批数据传送结束),于是DMA接口向CPU发中断请求信号。
  • 数据缓冲寄存器(BR)——缓冲区
    BR用于暂存每次传送的数据。通常DMA接口与主存之间采用字传送,而DMA与设备之间可能是字节或位传送。因此DMA接口中还可能包括有装配或拆卸字信息的硬件逻辑,如数据移位缓冲寄存器、字节计数器等。
  • DMA控制逻辑
    DMA控制逻辑负责管理DMA的传送过程,由控制电路、时序电路及命令状态控制寄存器等组成。每当设备准备好一个数据字(或一个字传送结束),就向DMA接口提出申请(DREQ),DMA控制逻辑便向CPU请求DMA服务,发出总线使用权的请求信号(HRQ)。待收到CPU发出的响应信号HLDA后,DMA控制逻辑便开始负责管理DMA传送的全过程,包括对主存地址寄存器和字计数器的修改、识别总线地址、指定传送类型(输入或输出)以及通知设备已经被授予一个DMA周期(DACK)等。
  • 中断机构
    当字计数器溢出(全“0”)时,表示一批数据交换完毕,由“溢出信号”通过中断机构向CPU提出中断请求,请求CPU作DMA操作的后处理。必须注意,这里的中断与前面说的I/O的程序中断方式的中断的技术相同,但中断的目的不同,前面是为了数据的输入或输出,而这里是为了报告一批数据传送结束。他们是I/O系统中不同的中断事件。
  • 设备地址寄存器(DAR)
    DAR存放I/O设备的设备码或表示设备信息存储区的寻址信息,如磁盘数据所在的区号、盘面号、柱面号。具体的内容取决于设备的数据格式和地址的编址方式。

DMA的工作过程

DMA传送过程

预处理、数据传送、后处理

  • 预处理:通过几条输入输出指令预置一些信息
    • 通知DMA控制逻辑传送方向(入/出)
    • 设备地址–>DMA的DAR
    • 主存地址–>DMA的AR
    • 传送字数–>DMA的WC

资源路径有问题

后处理的工作(由中断服务程序完成):

  1. 校验送入主存的数是否正确
  2. 是否继续用DMA
  3. 测试传送过程是否正确,错则转诊断程序

DMA接口与系统的连接方式

  1. 具有公共请线的DMA请求

资源路径有问题
所有的DMA接口共享一条请求线,进行DMA响应的时候,各个DMA接口,也是存在优先排序的,CPU通过一条查询线,一个一个接口的进行查询,越靠近CPU的优先级越高。

这种方式近似于总线判优控制的“集中式的链式查询方式”,都是通过一条查询线来判断优先级

  1. 独立的DMA请求

资源路径有问题
每一个接口都有独立的DMA请求信号和响应信号,排队的工作是在CPU的内部完成的

这种方式近似于总线判优控制的“集中式的独立请求方式”

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

资源路径有问题

DMA接口的类型

选择型

在物理上连接多个设备,在逻辑上只允许连接一个设备。

资源路径有问题

CPU执行输入输出指令,CPU会对某设备进行设置,设置成某一个设备和主存交换所需要的值,那么其他设备就不能交换了,该设备就占用DMA接口。

多路型

在物理上连接多个设备,在逻辑上允许连接多个设备同时工作,但是真正的数据传输的时候,也只能有一个设备和内存进行数据传输,不过,在数据准备阶段的时候,可以有多个设备同时进行数据准备。

资源路径有问题

资源路径有问题

欢迎请我喝奶茶(*゜ェ゜*)
---这篇文章到头了---感谢您的阅读-------------