三种控制方式:程序查询程序中断DMA方式
回顾一下 之前的中断控制方式,如果是输入命令,先启动命令,通过地址总线选择相应的接口,通过地址译码之后的到选择电路,这个接口准备开始工作。
- 启动外部设备,跟设备的选择信号结合在一起,置D触发器为0,B触发器为1
- B触发器为0,通过接口电路发出启动设备的命令。
- 启动命令之后外部设备就可以把数据通过接口电路送到数据寄存器DBR中,此时外部设备的工作已经完成了。
- 完成后的外部设备会发出一个结束的信号,会置D触发器为1,
- D触发器产生1的信号配合着屏蔽触发器产生0的信号
- 两种信号通过INTR触发器产生中断请求的信号
- 但是产生信号的影响还有受排队器的控制
- 中断的请求排的级别高就可以为之服务了。
- 排队器经过设备编码之后产生了向量的地址。
DMA
DMA 和程序中断两种方式的数据通路
程序中断过程是CPU先执行当前的程序,直到IO发出请求,通过接口送入CPU,但是中间可能有请求信号的延迟,DMA方式采用了DMA接口,直接可以让主存和IO设备进行数据的交换,但是每次交换时,都需要向CPU发出总线请求,否则容易出现总线占用的情况。
- 访问主存的地址由DMA接口电路来提供
- DMA传送完数据之后还要告诉CPU数据传送完成,需要把控制权交给CPU
DMA 与主存交换数据的三种方式
DMA占用总线的时候CPU不能访问主存,这就类似于程序查询方式,CPU此时什么也不能干,不能发挥主存对CPU的利用率。
周期窃取
可以引入一个缓冲器,但是如果缓冲器做的容量比较小的话需要不断地从主存中取数据,这样也会减少CPU访问地时间,所以应该选取大容量地缓冲器
周期挪用,选取一个或者多个周期留给数据传输,这些节拍是对齐的,如果数据传输完了,剩下就给CPU。
DMA接口的功能和组成
功能(简答):
- 向CPU申请DMA的传送
- 处理总线控制权的移交
- 控制和管理数据的传送
- 给出数据的首地址和长度
- 修正数据的地址和位数
- 程序结束后向CPU发出完成移信号
DMA 的工作过程
预处理、数据传送、后处理
预处理:确定数据传输的方向:是读还是写 给出主存的地址(DMA.AR)、给出设备的地址(DMA.DAR)、传送字的大小(DMA.WC)
dma工作过程举例
- INPUT --- 设备到主存
- 设备通过BR数据寄存器把要传送给主存的数据传送过去
- 同时设备要向DMA接口发出一个请求的信号,经过DMA控制逻辑,将请求信号发送给CPU
- CPU接受到之后CPU反馈应答信号,将控制权交给DMA
- 通过AR寄存器送出主存的地址(预处理完成),通过地址线给CPU
- 通过DMA给设备发一个反馈信号
- 送完之后AR WC的值发生改变,为下一个地址做一个传送。
- 直到发出溢出信号,传输结束。
笔者和同学交流理解是:1200B是吞吐量,计算出来的数据传输速度远大于吞吐量,所以吞吐出来的数据先存放在数据缓冲寄存器中,由于是字符型设备所以每存取 一个字符需要花费一个存取周期。
体现DMA的工作效率很高。
DMA接口与主存的连接
类似于总线的链式结构
DMA方式和中断方式的比较