系列文章目录
一、输入输出系统
(一)发展阶段
1.早期查询阶段
CPU和外设分散连接、串行工作、耦合性强,机器速度慢、价格高
(1)工作方式
CPU 通过程序不断地查询外设的状态,如设备是否准备好接收数据或发送数据。在查询过程中,CPU 会反复读取外设的状态寄存器,直到发现外设处于就绪状态,才进行数据传输操作。
(2)优缺点
①优点
实现简单,硬件成本较低。对于一些简单的外设或对实时性要求不高的设备,查询方式可以有效地控制数据传输。
②缺点
CPU 需要不断地查询外设状态,这会占用大量的 CPU 时间,导致 CPU 效率低下。而且,当外设数量较多时,CPU 需要轮流查询每个外设,数据传输的实时性难以保证。
2.中断接口模块和DMA阶段
具有总线模式,主机通过各种接口连接外设,具有中断或 DMA功能
接口功能:设备寻址、速度匹配、格式转换、电平转换
缺点是多个DMA控制器同时访问主存可能冲突;CPU管理众多DMA控制器,任务繁重。
DMA 即直接存储器访问(Direct Memory Access),是一种在计算机中用于在外部设备和主存储器之间直接传输数据的技术,而不需要 CPU 的频繁干预
当外设需要与主存进行数据传输时,DMA 控制器会向 CPU 发出请求,在获得 CPU 允许后,DMA 控制器接管总线控制权,直接在内存和外设之间建立数据传输通道,数据可以快速地在两者之间进行传输,传输完成后再把总线控制权交还给 CPU。
3.通道阶段
通道是用来负责管理I/O设备以及实现主存与I/O设备之间 交换信息的部件,可视为从属于CPU的专用处理器。
通道具有专门指令,能独立执行由通道指令编写的输入输出程序。
局限是通道并不能完全把CPU解放出来, CPU还要进行诸如码制转换之类的工作
4.I/O处理机阶段
外围处理机又称为I/O处理机,独立于主机工作,除了具备通道功能之外,还具备码制转换、格式处理、数据校验等功能。
(二)输入输出系统组成
1.I/O软件
(1)I/O指令
①指令属性
属于 CPU 指令,用于控制 I/O 设备的操作
②指令构成
操作码:作为 I/O 指令的标志,用于表明这是一条 I/O 指令,让 CPU 识别并按照 I/O 指令的规则进行处理。
命令码:明确指令的具体功能,如读取设备数据、向设备写入数据、检测设备状态、对设备进行控制等操作。
设备码:也称为地址码,用于指定指令要操作的具体 I/O 设备,通过这个编码,CPU 可以找到对应的设备并进行操作。
(2)通道指令
①指令定义
是通道自身的指令,用于执行 I/O 操作。这些指令存储在主存储器中,由通道来执行,以完成数据的输入输出功能。
②指令作用
在具有通道的计算机系统中,I/O 指令的功能发生了变化,不再直接负责数据的输入输出,主要用于启停设备、对通道进行控制等操作。而实际的数据传输工作则由通道指令来完成,通道可以独立于 CPU 进行数据传输,减轻了 CPU 的负担,提高了系统的并行处理能力和整体性能。
2.I/O硬件
(1)硬件层次结构
I/O 硬件主要由通道、设备控制器和设备三个层次构成。通道是一种特殊的处理器,用于控制和管理 I/O 操作;设备控制器负责接收通道指令,控制具体设备的工作;设备即各种外部设备,如磁盘、其他外设等。这种层次结构使得 I/O 操作的管理和控制更加高效和有序。
(2)通道类型及连接
通道分为选择通道、数组多路通道和字节多路通道。选择通道主要用于连接高速设备,如磁盘,在某一时刻只能为一个高速设备服务;数组多路通道可以在一段时间内交替为多个高速设备服务;字节多路通道则用于连接多个低速设备,以字节为单位交叉传输数据。每种通道通过数据线路连接到对应的设备控制器,设备控制器再连接到具体的设备。
(3)数据传输路径
CPU 可以通过储存总线与主存、存控进行交互。在 I/O 操作中,数据可以在 CPU、主存和各种设备之间传输。例如,CPU 可以通过通道向设备控制器发送指令,设备控制器控制设备进行数据的读写操作,数据通过通道在设备和主存之间传输 。
(三)I/O接口在系统中的位置
1.I/O 接口的定义
I/O 接口是两个系统或部件之间的交接部分。从硬件角度,它是连接主机与外部设备硬件的电路;从软件角度,它是两个软件之间的逻辑边界,能够协调不同软件模块对设备的操作。
2.系统连接关系
主机通过 I/O 接口与设备控制器相连,设备控制器再连接到外部设备的机械、电磁、光等部分。这种连接方式使得主机与外部设备之间能够进行有效的通信和数据传输
3.I/O 接口的作用
①设备选择
主机可通过接口选择要操作的具体设备。
②速度匹配
由于主机和外部设备的工作速度可能不同,接口能起到缓冲和协调作用,保证数据传输的顺畅。
③串并转换
实现数据在串行传输和并行传输之间的转换,以适应不同设备的传输要求。
④电平转换
匹配主机和外部设备之间不同的电平标准,确保信号的正确传输。
⑤传送控制命令
将主机的控制命令传送给设备控制器,以控制外部设备的工作。
⑥反映设备状态
把外部设备的工作状态信息反馈给主机,让主机了解设备的运行情况 。
(四)I/O接口的基本组成
1.接口组成部分
(1)数据缓冲寄存器(DBR)
用于暂存 CPU 与外部设备之间传输的数据。由于 CPU 和外部设备的数据传输速度可能不同,DBR 起到缓冲作用,避免数据丢失或传输错误。
(2)设备选择电路
根据 CPU 发出的地址信号,选择对应的外部设备,确保 CPU 能与指定设备进行通信。
(3)控制逻辑电路
协调 I/O 接口各部分的工作,处理 CPU 的控制信号,并向外部设备发送合适的控制命令。
(4)设备状态标记
记录外部设备的工作状态,如设备是否忙、是否准备好数据传输等,方便 CPU 查询设备状态。
(5)命令寄存器和命令译码器
命令寄存器接收 CPU 发送的控制命令,命令译码器则对这些命令进行解析,将其转换为外部设备能够理解的操作指令。
2.与外部组件的连接
(1)与 CPU 的连接
通过数据线传输数据,地址线用于指定要操作的设备或接口内部的寄存器,控制线传递 CPU 的控制信号,如读、写命令等。
(2)与外部设备的连接
数据线传输设备与接口之间的数据,命令线发送控制命令到外部设备,状态线则将设备的状态信息反馈给接口。
(五)I/O设备编址方式
1.统一编址
(1)编址原理
I/O 设备占用存储器的地址空间,即把 I/O 设备的寄存器视为存储器的单元,对 I/O 设备的访问如同对存储器的访问一样,无需专门的 I/O 指令,使用数据传送指令(如 MOV)即可。
(2)影响与特点
这种编址方式会减少存储器的最大容量,因为一部分地址空间被 I/O 设备占用。通过不同的地址来区分访问的是存储器还是 I/O 设备
2.独立编址
(1)编址原理
I/O 地址与存储器地址相互分开,各自有独立的地址空间。访问 I/O 设备需要使用专门的 I/O 指令,如 INPUT 和 OUTPUT 指令 ,而访问存储器则使用 MOV 等数据传送指令。
(2)影响与特点
I/O 设备的编址不占用主存容量,使得主存的地址空间可以独立规划。通过不同的指令形式来区分访问对象,当 CPU 执行 INPUT 或 OUTPUT 指令时,就是在访问 I/O 设备;执行 MOV 等指令时,则是访问存储器。
统一编址的优点是指令系统简单,对 I/O 设备的操作灵活;缺点是占用存储器地址空间,且地址译码电路相对复杂。独立编址的优点是不占用主存空间,地址译码简单,I/O 操作和存储器操作界限清晰;缺点是需要专门的 I/O 指令,指令系统相对复杂 。
(六)I/O设备与主机的连接方式
1.辐射式连接
每台 I/O 设备都单独配有一套控制线路和一组信号线,直接与主机相连。这种连接方式下,主机与各个外设之间的通信线路是独立的,就像从主机向各个外设辐射出线路一样。其优点是设备之间的通信相对独立,互不干扰;缺点是随着外设数量增加,会导致主机的接口数量增多,线路复杂,成本上升,且布线困难。
2.总线连接方式
I/O 设备通过 I/O 接口电路连接到总线上,总线包括设备选择线、数据线、命令线和状态线。设备选择线用于主机选择要通信的设备;数据线负责传输数据;命令线传递主机对设备的控制命令;状态线则用于设备向主机反馈自身状态。这种连接方式的优点是可以减少主机的接口数量,多个设备共享总线,节省线路资源,便于设备的扩展和维护;缺点是在同一时刻,总线上只能进行一组设备与主机之间的通信,可能会出现总线竞争的情况。
(七)接口类型
1.按数据传送方式分类:并行接口、串行接口
2.按功能选择的灵活性分类:可编程接口、不可编程接口
3.按通用性分类:通用接口、专用接口
4.按数据传送的控制方式分类:中断接口、DMA 接口
(八)程序查询方式
1.基本特点与查询方式
(1)工作模式
CPU 和 I/O 设备串行工作。在 I/O 设备工作期间,CPU 处于 “原地踏步” 状态,无法并行处理其他任务,即 CPU 需要不断查询 I/O 设备的状态,直到设备准备就绪。
(2)局限性
这种方式严重限制了 CPU 的使用效率,因为 CPU 大部分时间处于等待状态,不能充分发挥其运算能力。
2.程序查询流程
(1)单个设备
CPU 先通过测试指令检查设备的状态标记,判断设备是否准备就绪。若未准备好,CPU 继续查询;若准备就绪,则使用传送指令进行数据交换。
(2)多个设备
采用轮询的方式,依次检查每个设备的状态标记。只有当某个设备准备就绪时,CPU 才对其进行处理,处理完一个设备后,接着查询下一个设备。
3.传送数据块
首先设置计数值和主存缓冲区首址,启动外设。然后不断查询设备是否准备好,若准备好则传送一个数据,接着修改主存地址和计数值,继续判断数据是否传送完毕,若未完成则重复上述步骤,直到数据块传送完成。
4.接口电路
在 CPU 端,接口电路包含数据缓冲寄存器(DBR)、设备选择电路等。CPU 通过地址线选择设备,发送启动命令启动设备。设备准备好数据后,通过 “准备就绪” 信号通知 CPU,CPU 再从 DBR 读取数据。在设备准备数据期间,CPU 持续检查相关状态(如 D 的值),期间无法执行其他任务
二、程序中断方式
(一)概述
1.概念
计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处 ,继续执行原程序,这就是中断
2.特点
中断程序消除了CPU原地踏步的情况,但是,CPU在响应中断请求后,必须暂停现程序,转而去执行中断服务子程序,消耗了 CPU资源,并且,中断处理过程是有开销的。
3.中断源
(1)定义
引起中断的各种因素
(2)因素
人为设置的中断、程序性事故、硬件故障、I/O设备、外部事件
(二)中断接口电路
1.中断请求标记触发器INTR
(1)概念
一个请求源对应一个INTR中断请求标记触发器,多个 INTR组成中断请求标记寄存器。比如掉电、过热、主存读写校验错、阶上溢、非法除法、键盘输入、打印机输出等不同的中断请求源,每个源都有对应的 INTR。
(2)分布位置
INTR 可以分散在各个中断源的接口电路中。这样做的好处是能够快速响应各自对应的中断源请求,及时处理相关的硬件事件。同时,INTR 也可以集中在 CPU 的中断系统内,便于 CPU 统一管理和调度中断请求,根据优先级等因素决定先处理哪个中断 。
2.中断屏蔽触发器MASK
(1)概念
一个请求源对应一个中断屏蔽触发器,多个中断屏蔽触发器组成中断屏蔽寄存器
(2)作用
对中断请求进行控制,决定是否让某个中断请求被 CPU 处理
(3)原理
来自 CPU 的中断查询信号与中断请求触发器(INTR)以及中断屏蔽触发器(MASK)相互作用。当 INTR = 1 时,表示有中断请求;而当 MASK = 1 时,该中断请求会被屏蔽,即不会被 CPU 响应。只有当 INTR = 1 且 MASK = 0 时,中断请求才有可能被 CPU 检测到并处理。
3.中断排队INTP
(1)中断硬件排队器
通过硬件电路实现中断优先级的判断,能够快速准确地确定响应中断的顺序,相比软件排队方式,硬件排队的速度更快,实时性更强
优先级顺序从高到低为设备 1#、设备 2#、设备 3#、设备 4# :
从电路的连接方式来看,设备 1# 对应的 INTR1 信号最先接入由非门和与门组成的逻辑电路,设备 2#、3#、4# 依次往后连接。这种连接顺序就代表了优先级的高低,排在越前面的设备优先级越高。非门和与门的组合确保了高优先级设备的中断请求优先被处理。当设备 1# 有中断请求(INTR̅1 = 0 即 INTR1 = 1)时,后续设备(2#、3#、4#)的中断请求信号即使为 1,经过与门运算后也会被屏蔽,无法传递到后续电路,只有当设备 1# 没有中断请求(INTR̅1 = 1)时,设备 2# 的中断请求才有可能被处理,依此类推。所以设备 1# 的优先级最高,设备 4# 的优先级最低。
(2)中断软件判优逻辑
中断排队不仅可以通过硬件实现,还能借助软件,以程序轮询的方式达成。程序轮询是指 CPU 按顺序依次检查各个中断源是否有请求。优点是灵活性高,通过修改程序就能方便地调整中断源的优先级和数量,无需改动硬件电路。但缺点也比较明显,由于是顺序轮询,当有多个中断源且优先级低的中断源先被检查时,可能会导致高优先级中断的响应延迟,尤其在中断源较多的情况下,这种延迟可能会影响系统的实时性。因此,软件判优逻辑适用于对实时性要求不太高,且中断源数量较少或优先级调整较为频繁的系统 。
4.向中断服务程序跳转
(1)中断向量地址形成部件
通过硬件产生向量地址,进而找到对应的中断服务程序入口地址。当有中断发生时,排队器先对中断请求进行优先级判断和处理,其输出信号会传输到中断向量地址形成部件
(2)软件查询法
借助软件,以程序轮询的方式达成
(三)中断处理过程
1.CPU响应中断的条件和时间
(1)条件
①CPU允许中断
通过中断允许触发器 EINT 来控制,当 EINT = 1 时,CPU 处于开中断状态,允许响应中断请求;反之,当 EINT = 0 时,为关中断状态,不响应中断。
②相关中断掩码MASK=0
中断屏蔽触发器用于控制中断是否被屏蔽,MASK = 0 表示该中断未被屏蔽,允许被 CPU 检测和响应;若 MASK = 1,则该中断被屏蔽,即使有中断请求,CPU 也不会处理
(2)时间
每条指令执行结束。CPU 在每条指令执行结束时,会发出中断查询信号,此时会检查是否有中断请求,即查看中断请求标记触发器 INTR 是否被置为 1。若有中断请求且满足上述响应条件,CPU 就会暂停当前程序的执行,转而去处理中断事件。
2.中断响应的实现
中断响应的实现过程,通过中断隐指令来完成,具体步骤如下
(1)保护程序断点
程序断点指的是在中断发生时,当前正在执行的程序的下一条指令的地址。保护程序断点是为了在中断处理完成后,能够回到原来的程序继续执行。这里有两种方式,一种是将断点存于特定地址(如 0 号地址)内 ;另一种是将断点进栈,也就是把断点地址存储到堆栈中,利用堆栈 “先进后出” 的特性,方便后续恢复。
(2)寻找服务程序入口地址
这一步是为了确定处理中断的服务程序的起始位置。有两种方法,硬件向量法是通过向量地址直接将其送入程序计数器(PC),PC 用于存储下一条要执行的指令的地址,这样 CPU 就能直接跳转到对应的中断服务程序;软件查询法是先找到中断识别程序入口地址 M,再将其送入 PC,通过软件程序的查询和判断来确定具体的中断服务程序入口。
(3)硬件关中断
在进入中断服务程序之前,通过硬件将中断关闭,防止在处理当前中断的过程中又被其他中断请求打断,保证中断处理过程的完整性和准确性。待当前中断处理完成后,再根据需要决定是否重新开启中断。
3.I/O中断处理过程
①启动设备
CPU 发送启动命令,经命令译码后,启动相应的 I/O 设备。
②中断查询
CPU 发出中断查询信号,检查是否有设备发出中断请求。
③数据输入
设备开始工作,将数据输入到数据缓冲寄存器(DBR)。
④设备工作结束
设备完成数据输入工作后,触发相关信号。
⑤中断判断
结合来自 CPU 的中断查询信号、中断屏蔽触发器(MASK)和中断请求触发器(INTR)的状态,判断是否产生有效的中断请求。只有当 INTR 有效且 MASK 未屏蔽该中断时,才会继续后续流程。
⑥中断请求发出
若满足中断条件,设备通过排队器发出中断请求信号。
⑦中断响应
CPU 接收到中断请求后,发出中断响应信号 INTA。
⑧获取向量地址
设备编码器根据相关信息产生向量地址,用于找到对应的中断服务程序。
4.中断服务程序流程
中断服务程序流程确保了计算机系统在处理中断时的准确性和稳定性。保护现场和恢复现场的操作保证了原程序的完整性和连续性;合理的开中断、关中断操作以及中断返回机制,使得系统既能高效地处理各类中断事件,又能协调好不同程序之间的执行顺序,从而提升整个计算机系统的运行效率和可靠性
①查找入口并执行
当 CPU 接收到中断请求并响应后,会通过查找向量表找到对应的中断服务程序入口地址,然后跳转至该地址开始执行中断服务程序。
②保护现场
使用进栈指令将当前程序中各寄存器的值保存起来。因为在执行中断服务程序时可能会使用这些寄存器,保存它们的值可以确保原程序在中断处理完成后能恢复到原来的状态继续执行。
③中断服务
根据具体的中断需求进行相应的处理,在这个过程中,可能会根据实际情况选择开启或关闭中断。例如,为了防止更高级别的中断打断当前重要的中断处理,可以先关中断;而处理一些允许被打断的任务时,可以开中断。
④恢复现场
使用出栈指令,按照与保存时相反的顺序恢复寄存器的值,让原程序的运行环境得以还原。
⑤开中断
重新允许 CPU 响应其他中断请求,以便及时处理新的中断事件。
⑥中断返回
通过中断返回指令,将之前保存的返回地址赋值给程序计数器 PC,使 CPU 回到原来被中断的程序处继续执行。