第6.5章:IO控制方式1
Part1:IO控制器
1、IO控制器模型
2、IO控制器中寄存器的编制
假设IO 寄存器中有n个地址,而主存(MM)中有N个地址
- 统一编制:无需专门的IO指令,但是需要占用内存空间
-
独立编制:不占用内存空间,但是需要专门的IO指令
Part2:四种IO控制方式2
1、程序查询(直接控制)
CPU不断轮询检查State Register,检测到输入完成之后,从Data State中取走数据,每次取走一个字。程序和IO设备串行执行
2、程序中断
Data Register中数据输入完成之后,IO Controller 向CPU出发中断请求,CPU响应并且取走数据(每次一个字)程序和IO设备并行执行
3、DMA控制(Direct Memory Access)
在程序中断方式中,如果设备的IO速度非常快,那么其效率和程序查询方式无异。故我们对于高速IO设备,直接在设别和主存(MM)之间开辟一条通路,其传输数据不通过CPU,以降低CPU开销。
由于和传统的IO不同,我们需要重新设计IO Controller,称呼为DMA Controller,每次传输以块为单位的数据3
3.1 DMA Controller Model
-
对于部件的说明
- Control/State 逻辑:用于指定传输方向等参数
- DMA Request Trigger:当设备(device)准备好数据之后,修改该触发器的值(1bit)说明其准备好传送数据
- Address Register:用于存放交换数据的主存地址
- Word Count Register:记录已经发送的数据长度,当其溢出时,数据传送完毕
- 中断机构:当数据传送完毕时发出中断信号
- Data Cache Register:用于暂存数据
-
单总线结构DMA传送过程
-
传送前
- 接受Device的DMA传送请求,并且向CPU发出HRQ(Hold Request)请求,要求占用总线
- CPU响应HLDA(Hold Acknowledge)
-
传送时
- 确定传送地址和长度
- 确定传送方向并且传送
-
传送后:向CPU报告结果(一个中断信号)
-
-
对于总线的说明
- 上图为单总线结构的DMA,在传送数据时DMAC会接管CPU的AB,DB,CB,CPU的主存控制信号被禁用,知道DMA传输过程结束后恢复
- 更一般的DMA传送方式工作在三总线方式下,即DMA和MM之间存在一条专门的通路,这样子CPU就无需让权给DMAC了,但是这样子带来一个问题,当CPU和DMAC都想访存时,给谁访存——DMA传送方式
-
DMA传送方式
- 停止CPU访存:当DMAC访存时,不让CPU访存
- 交替访存:将存取周期划分为两个时间段,一个给CPU访存,一个给DMAC访存
- 周期(存取周期)挪用
- 如果CPU正在访存,那么当其访存结束之后,DMAC访存
- 如果CPU和DMAC同时发出访存请求,那么有限给DMAC访存
4、通道控制
在DMA控制方式中,CPU每次发出一个指令只能读写一个或者多个连续的数据块,如果需要读写离散的数据块那么则需要多条指令。为了解决这个问题,出现了通道控制方式,我们引入一个通道(相当于是一个小型CPU)执行一系列通道指令,以实现数据块的读写
- 通道读写过程
- CPU向通道指明通道程序在内存中的首地址和需要读写的设备,即可执行其他的程序
- 通道执行通道程序4
- 执行完毕向CPU报告(一个中断信号)