DMA
DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。
DMA控制器 : DMAC ( Direct Memory Access Controller )
DMA的传输过程
DMA和中断的比较
- 中断和DMA的响应时间------指令周期结束后响应中断, CPU周期结束后响应DMA
DMA的工作机制
1. 周期挪用 ( 窃取 ) 方式 --- 现代计算机
DMA 控制器对主存储器存取数据常采用周期挪用方式, 即是在中央处理器执行程序期间, DMA控制器为存取数据, 强行插入使用主存储器若干周期;
两种情况 :
- 隐藏周期DMA : 窃取总线
- 暂停CPU方式 : 抢总线
特点 :
- 当主存工作速度都高于外设较多时, 可提高主存的利用率, 且对CPU的影响较小
2. 存储器分时方式 --- Motorala 6800系列
- 原来的一个存取周期分割成两个时间片, 一片分给CPU, 一片分给DMAC
- 无需申请和归还总线
- 需要主存的工作速度提高一倍
- Motorola 6800系列8位CPU
3. 停止CPU方式 --- 早期计算机
- DMAC : 申请总线 --> 独占总线 --> 释放总线
- 控制简单 ; 主存利用率不高
4. 扩展时钟周期方式
两道例题
例题1
例题2
两次传输 ( 中断 ) 的间隔时间 :
\[ {1}
\frac{4B}{0.5MB/s} = 8 \mu s \tag{1}
\]
每次传输中断服务时间 :
\[ {2}
(20+5) \times 2 \times \frac{1}{500\times10^6} = 0.1 \mu s \tag{2}
\]
因此, CPU用于该外设I/O时间占整个CPU时间的百分比为 :
\[\frac{0.1 \mu s}{8 \mu s} = 1.25\% \tag{3}
\]
两次DMA传输的间隔时间 :
\[\frac{5000B}{5MB/s} = 1000 \mu s \tag{1}
\]
每次DMA预处理时间 :
\[250 \times \frac{1}{500 \times 10^6} = 0.5 \mu s \tag{2}
\]
百分比 :
\[\frac {0.5 \mu s}{1000 \mu s} = 0.05\% \tag{3}
\]