程序查询方式的流程
程序查询方式的接口电路
1. 程序查询方式
程序查询方式,需要通过cpu中的寄存器,完成数据从io设备到内存之间的传输。
1.1 程序查询方式流程
-
保存寄存器的内容: 如果寄存器中的数据是有用的,需要对寄存器中的数据进行保存。
将其压入到堆栈当中,或者放到cpu中其余的闲置寄存器中。 -
设置计数值:用于控制当前批次总共传输的数据量。
1.2 程序查询方式接口电路
DBR, 数据缓冲寄存器
2. 程序中断方式
2.1 中断的概念
中断: cpu 在执行程序的过程中,
- 如果发生意外事件或者特殊事件,cpu需要停止当前程序的执行。
- 转而去处理中断事件,或者是特殊事件。通过中断服务程序去处理中断。
- 处理结束后, 返回被中断的程序断点,继续执行原始的程序。
中断过程中,
- 需要将程序的断点保存起来,
- 保存中断现场, 中断时,寄存器中的值。
2.2 io中断的产生
能够引发cpu发生中断的因素:
2.3 程序中断方式的接口电路
- 配置中断请求触发器和中断屏蔽触发器
一次中断处理过程大致分为:中断请求,中断判优,中断响应,中断服务和中断返回等五个阶段
- 排队器,用于分配各个设备的优先级。
硬件排队器,对中断请求源进行排队以后,
在从1-n 这些intp中, 只有一个值是1,
在所有有中断请求的中断源当中,优先级最高的中断源。
- 中断向量地址形成部件。
找到中断服务程序的入口地址,
入口地址可以通过软件产生, 或者硬件向量法。
-
中断号:中断的编号, 如在8086中, 支持256种中断,则此时这256种中断,被编号成 0- 255.
-
中断向量:中断服务程序的入口地址,在x86系列中,可以理解成
段地址
+偏移量
构成的中断向量。
有时候,可以代指程序状态字:cpu发生中断时候, 一些非体系结构寄存器或者表示程序状态的寄存器,这些寄存器中的指令无法读取,在计算机内部集成为一个字,这个字称为程序状态字。
此时,中断向量便是包括了 和中断服务程序相关的入口地址,包括段地址,偏移量, 也包括了执行中断服务程序的时候,需要的一些状态信息。
- 向量地址: 是指中断向量保存的内存单元的地址,
中断向量地址形成设备编码器,
设备编码器的输出通过数据总线输入到cpu当中,
产生中断服务程序的入口地址,
或者是入口地址保存的内存中存储单元的地址,
或者是跳转指定保存存储单元对应的入口地址
- 程序中断方式接口电路的基本组成。
DBR: 数据缓冲寄存器。
设备选择电路: 选择哪个设备
命令译码:确认本次的操作。
2.4 io中断的处理过程
cpu 响应中断的条件和时间
-
允许
允许中断触发器 EINT =1
用开中断 指令将EINT 置 1,
用关中断 指令将EINT 置0 或者硬件自动复位 -
时间
当D =1, 随机, 且mask = 0 时,
在每条指令执行阶段的结束前,
cpu 发中断查询信号, 将 INTR 置1,
2.5 中断服务程序流程
中断隐指令,是指在取指令和执行指令完成之后,由硬件完成的一系列操作。
中断隐指令,是硬件自动执行的一系列操作。
-
保护现场
程序断点的保护,中断隐指令完成
寄存内容的保护, 进栈指令 -
中断服务
对不同的io设备,具有不同内容的设备服务。 -
恢复现场
出栈指令 -
中断返回
中断返回指令
2.6 单中断与多重中断
- 单中断: 不允许中断现有的中断服务程序;
- 多重中断: 允许级别更高的中断源, 中断现行的中断服务程序。
单重中断与多重中断的主要区别是多重中断的服务程序中要提前开中断,
而单重中断的服务程序中在最后中断返回之前才能开中断。
3. DMA 方式
3.1dma 方式的特点
下图给出程序中断方式和DMA 方式, 两种不同的数据通路。
传输间隔过程中,cpu 交出了对总线和主存的控制权,交给了dma 来控制,
在传输间隔的这段时间中,dma 接口虽然没有直接访问主存,但依然占用主存的访问权,此时.cpu 没有充分利用这段时间。
dma 与主存交换数据的三种方式:
- 停止cpu 访问主存:
控制简单, cpu此时处于不工作状态或保持状态,
但未充分发挥cpu 对主存的利用率;
- 周期挪用(周期窃取)
DMA访问主存的三种可能:
cpu 此时不访存,
cpu正在访存;
cpu与dma 同时请求访存;
此时cpu将总线控制权让给dma;
- dma 与cpu交替访问
cpu 工作周期, c1 专供dma访存;
c2专供cpu 访存;
3.2 DMA接口的功能和组成
dma接口功能:
-
向cpu申请dma 传送;
-
处理总线控制权的转交
-
管理系统总线, 控制数据传送;
-
确定数据传送的首地址和长度,
修正传送过程中的数据地址和长度; -
dma传送结束时, 给出操作完成信号;
AR: 地址寄存器,用于控制选择哪个设备进行传输,以及传送到主存中的地址;
wc: 数据计数器, 用于统计数据传输是否完成,采用补码方式表示,每传送完成一次,+1, 直到0;
DAR: 数据地址寄存器:
BR: 缓冲寄存器;
HLDA, HRQ:
DACK, DREQ: