前言
如果你对这篇文章可感兴趣,可以点击「【访客必读 – 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。
第四章 输入输出系统
4.1 输入输出概述
4.1.1 输入输出系统的组成
输入输出系统由 I/O 软件和 I/O 硬件两部分组成。
I/O 软件
(1)I/O指令
I/O指令属于CPU,由操作码、命令码、设备码三部分组成。
- 操作码: I/O 指令标志
- 操作码为真,则代表为I/O指令
- 命令码: 指令功能,读、写、检测、控制命令
- 设备码: 地址码,指明 I/O 指令要访问的设备地址
(2)通道指令
-
CPU内部的专用处理器,只能进行输入输出操作。通道的级别是处理器的级别,因此有自己的指令集。
-
通道自身的指令,用于执行I/O操作,存放于主存,由通道执行,完成输入输出功能。
-
在具有通道的计算机中,I/O指令不负责数据输入输出,而主要完成启停设备、通道控制,实际数据传输由通道完成。
I/O 硬件
通道 -> 设备控制器 -> 设备,三级硬件结构。
每一个设备控制器只能够连接同种类型的若干设备。
4.1.2 I/O 接口
I/O 接口在系统中位置
接口可以看做两个系统或部件之间的交接部分,它既是两种硬件设备之间的连接电路,也可以看作两个软件之间的共同逻辑边界。
I/O接口的功能
- 设备选择
- 所有接口都会收到主机的请求,接口会判断主机找的是不是自己
- 速度匹配
- 匹配主存与外设的传输速度
- 串并转换
- 串并数据形式转换
- 电平转换
- 设备电平定义与主机不同,需要转换
- 传送控制命令
- 反映设备状态
I/O接口的基本组成
- 数据缓冲寄存器: CPU 会将数据送到该寄存器中
- 设备选择电路: 分析 CPU 发送来的地址,判断 CPU 找的是不是当前接口
- 命令寄存器: 接口通过命令译码器对命令译码,之后由命令线控制外设进行工作
- 设备状态标记: 保存外设状态,供 CPU 读取
4.1.3 I/O 设备编址方式
统一编址
-
I/O 占用存储器地址空间,无须专门的 I/O 指令。
-
采用不同地址来区分访问对象,减少了存储器最大容量。
独立编址
-
I/O 地址与存储器地址分开,采用专门指令来访问 I/O。
-
采用不同指令形式来区分访问对象,不占用主存容量。
4.1.4 I/O 设备与主机的连接方式
辐射式
每台设备都配有一套控制线路和一组信号线。
总线连接方式的 I/O 接口电路
设备选择线、数据线、命令线、状态线
4.2 程序中断方式
4.2.1 中断过程
中断概念
计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,继续执行原程序,这就是中断。
中断方式
中断程序消除了CPU原地踏步的情况,但是,CPU在响应中断请求后,必须暂停现程序,转而去执行中断服务子程序,消耗了CPU资源,并且中断处理过程是有开销的。
4.2.2 中断源
引起中断的各种因素
- 人为设置的中断(定时中断)
- 程序性事故:溢出、操作码不能识别、除法非法
- 硬件故障
- I/O设备
- 外部事件(按键中断)
可屏蔽中断
每一个中断源都对应一个中断屏蔽位,一旦处理器把中断屏蔽位设为 “真”,即屏蔽了这个中断源。这个中断源再发出中断请求,也不会被响应。
不可屏蔽中断
只要外设通过相应的引脚发出了中断请求,CPU一定会响应这个中断。
各中断源如何向 CPU 提出请求?
每个中断源都对应一个中断请求标记触发器,中断源提出了中断请求,就会把这个触发器置为 “真”,这就是中断源提出中断请求的唯一标志。
各中断源同时提出请求,怎么办?
采用中断优先级比较电路或软件方法,来比较中断优先级,选出其中优先级最高的那个中断去响应。
CPU在什么条件下响应中断?
【条件1】程序状态字,一般写作PSW,其中有两类信息,一类信息叫做控制位,另一类信息叫做状态位。
中断允许位,是一个中断的总开关,如果这个位的值是 “1”,就代表 CPU 现在可以接受外部的中断;如果是 “0”,就代表 CPU 根本不接受中断,所以这个位也称作中断总开关。
【条件2】每一个可屏蔽中断,都有一个中断屏蔽位,中断屏蔽位如果是 ”1“,就代表 CPU 要把这个中断源屏蔽掉。只有当这个位是 ”0“,表示没有屏蔽这个中断源时,CPU才可以去响应中断。
CPU在什么时间下响应中断?
CPU 只能在执行完当前指令后,才能去响应中断。CPU 不会在指令执行过程中响应中断。
CPU以什么方式响应中断?
在中断响应中计算机会去做三件事,这三件事没有任何一条指令控制,都是自动去做,因此叫做中断隐指令。
-
硬件关中断
- 进入中断程序之后会有一个非常关键的动作,叫做保护现场,我们希望保护现场的时候中断的总开关是关着的,所以要有一个硬件自动关中断的操作。
-
保护断点
- 中断服务程序的返回地址,当发生中断跳转时,即将要执行到的那条指令的地址,断点必须保存。
-
向中断服务程序的入口跳转
- 硬件方式、软件方式
如何保护现场?
把中断服务程序运行过程中要用到的那些寄存器值送到堆栈里面保护起来,这就是保护现场。
如何恢复现场,如何返回?
恢复现场和保护现场总是成对出现。恢复现场是指在中断服务程序返回之前,按照刚才入栈的逆序把堆栈顶端的若干个信息弹回到相应的寄存器中。
把断点的值送给程序计数器,程序计数器就会指向刚才在主程序中马上要执行而又没有执行到的那条指令的位置,接下来就会取这条指令并执行,完成中断的返回。
处理中断的过程中又出现新的中断怎么办?
中断的嵌套。
4.2.3 中断接口电路
中断请求标记触发器
一个请求源对应一个 INTR 中断请求标记触发器,多个 INTR 组成中断请求标记寄存器。
两种存在方式:
- 分散在各个中断源的接口电路中
- 集中在 CPU 的中断系统内
中断屏蔽触发器
一个请求源对应一个中断屏蔽触发器,多个中断屏蔽触发器组成中断屏蔽寄存器。
下图为中断屏蔽触发器与D触发器一起构成了中断请求触发器中的数值,如果中断屏蔽触发器为 1,则请求触发器中一定为 0。
中断硬件排队器
硬件实现,从左到右依次执行, I N T R i = 1 INTR_i=1 INTRi=1 表示有请求,一旦左边一个设备提出请求,则之后的设备均被屏蔽,优先级依次递减。
中断向量地址形成部件
将排队器输出的数据导入到编码器中,得到向量地址,再将向量地址加入中断向量表中即可找到入口地址。
中断服务程序软件查询
4.2.4 中断工作方式
以打印机为例。
4.2.5 中断处理过程
CPU 响应中断的条件和时间
条件:
- CPU允许中断,即中断允许触发器 EINT=1(开关中断指令即改变EINT)
- 相关中断的掩码(MASK)为0
时间:
- 每条指令执行结束(CPU 发出中断查询信号,将 INTR 置 1)
中断响应的实现
通过中断隐指令完成。
- 保存程序断点。
- 断点存于特定地址(0号地址)内,断点进栈。
- 寻找服务程序入口地址。
- 向量地址 → \rightarrow → PC(硬件向量法)
- 中断识别程序入口地址 M → \rightarrow → PC(软件查询法)
- 硬件关中断。
I/O 中断处理过程
INTR:中断请求标记触发器
MASK:中断屏蔽位
D触发器:完成触发器(Done)
B触发器:设备忙触发器(Busy)
- 地址线发出设备地址。所有设备将地址与自身地址进行比较,查看 CPU 找的是不是自己。如果 CPU 找到是自己,就会令 SEL = 1。
- 设备发出启动命令 1,命令译码输出 0。D触发器被置0,B触发器被置1。B触发器被置1,表示设备正忙,且工作没有完成。同时B触发器会启动设备,此时设备准备数据与CPU继续执行别的程序同时在发生。
- 设备准备好数据,就将数据传给 DBR。
- 设备工作结束,则将 Done 触发器置 1,同时把 Busy 置为 0。Done 触发器向上连接 INTR,此时 MASK = 0,设备不被屏蔽,触发器才能继续工作。
- CPU执行完一条指令,发出中断查询信号,作为时钟脉冲将 1 打入 INTR 中。
- INTR 被置为 1,发出中断请求。同时多个设备同时进入排队器进行排队。
- CPU发出中断响应信号,即编码器的输出允许。
- 设备编码器发出当前中断设备的中断号。CPU根据中断号查询中断向量表得到中断服务程序的入口地址。
中断服务程序流程
CPU查找向量表,找到中断服务程序入口,然后执行中断服务程序。
- 保护现场
- 保存寄存器值:进栈指令。
- 中断服务程序用到的寄存器,都应入栈。
- 中断服务
- 视情形开、关中断
- 恢复现场
- 恢复寄存器的值,出栈指令
- 开中断
- 中断返回
- 中断返回指令。将返回地址赋值给PC。
单重中断与多重中断的区别。
4.2.6 中断屏蔽技术
多重中断的条件
- 执行中断服务程序时,在保护现场之后,设置开中断指令。
- 优先级别高的中断源有权中断优先级低的中断源。
中断屏蔽字
每一个中断源对其它中断源都有对应的屏蔽字。为1表示屏蔽,为0表示不屏蔽。
16个中断源的优先级从上到下依次为 1、2、3…16,按降序排列。
通过中断屏蔽技术改变处理优先级
响应优先级: CPU响应各中断源请求的优先次序。
处理优先级: CPU实际对各中断源请求处理的优先次序。
新屏蔽字的设定(处理优先级的修改):在中断服务程序执行过程的保护现场之后进行。
上图中,响应优先级为 A → \rightarrow → B → \rightarrow → C → \rightarrow → D 降序排列。处理优先级为 A → \rightarrow → D → \rightarrow → C → \rightarrow → B 降序排列。
4.3 DMA 工作方式
4.3.1 DMA 与中断的比较
4.3.2 DMA 接口
HLDA: CPU 发给接口的总线应答信号
HRQ: DMA 接口发给 CPU 的总线使用请求信号
DACK: DMA 控制器发给设备的应答信号
DREQ: 设备发给 DMA 控制器的请求信号
AR: 主存地址寄存器
WC(Word Counter): 计数器
DAR: 设备地址寄存器
BR: 数据缓冲寄存器
4.3.3 DMA 的工作过程
- 预处理:CPU 参与
- 数据传送:CPU 不参与,由 DMA 控制器完成
- 后处理:中断形式,CPU 参与
后处理
由中断服务程序完成,主要目的如下。
- 检验输入主存的数是否正确。
- 决定是否继续使用 DMA,重新初始化 DMA,或者停止设备。
- 测试传送过程是否正确,错则转诊断程序。
4.3.4 DMA 与中断方式的比较
DMA方式在存取周期结束时即可响应,例如如下的存取周期:
- CPU 刚取完指令
- CPU 刚执行完间址阶段
- CPU 刚做完一次乘法操作
4.3.5 DMA 与主存交换数据的三种方式
停止 CPU 访问主存
控制简单,CPU处于不工作状态或保持状态。
未充分发挥 CPU 对主存的利用率,可以在 DMA 接口中增加高速缓存,减少 DMA 传送数据时占用总线的时间。
周期挪用(周期窃取)
DMA 访问主存有三种可能:
- CPU 此时不访存:总线立刻交给 DMA
- CPU 此时正访存:CPU 访存结束后总线立刻交给 DMA
- CPU 与 DMA 同时请求访存:总线交 DMA
第一种方式:只要 DMA 在工作,CPU 就不能控制主存,即使 DMA 并没有控制主存。
第二种方式:只有 DMA 控制主存时,CPU才不能控制主存,即 DMA 在准备数据的过程中,CPU 仍可以控制主存。
DMA 与 CPU交替访问
CPU工作周期分为两部分,C1: 专供 DMA 访存,C2: 专供 CPU 访存。此种方法不需要申请建立和归还总线的使用权。
4.3.6 DMA 接口功能
- 向 CPU 申请 DMA 传送
- 处理总线控制权的转交
- 管理系统总线、控制数据传送
- 确定数据传送的首地址和长度
- 修正传送过程中的数据地址和长度
- DMA 传送结束时,给出操作完成信号
4.3.7 DMA 接口与系统的连接方式
具有公共请求线的 DMA 请求
独立的 DMA 请求
4.3.8 DMA 接口类型
选择型
在物理上连接多个设备,在逻辑上只允许连接一个设备。
多路型
物理上连接多个设备,逻辑上允许连接多个设备同时工作。
4.3.9 磁盘
磁盘驱动器
磁盘盘片基本结构
磁盘机、记录面(surface)、磁道(track)、柱面(cylinder)、扇区(sector)
磁盘地址
磁盘容量计算(格式化容量)
- 扇区容量: S
- 磁道容量: T = 每道扇区数 n * S
- 单面容量: P = 每面磁道数 t * T
- 磁盘容量: V = 总计盘面数 m * P
资料来源
- 计算机组织与结构 – 大连理工大学 – MOOC
今天的文章计算机组成原理完整学习笔记(四):输入输出系统分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84668.html