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 ag{1}
]
每次传输中断服务时间 :
[ {2}
(20+5) imes 2 imes frac{1}{500 imes10^6} = 0.1 mu s ag{2}
]
因此, CPU用于该外设I/O时间占整个CPU时间的百分比为 :
[frac{0.1 mu s}{8 mu s} = 1.25\% ag{3}
]
两次DMA传输的间隔时间 :
[frac{5000B}{5MB/s} = 1000 mu s ag{1}
]
每次DMA预处理时间 :
[250 imes frac{1}{500 imes 10^6} = 0.5 mu s ag{2}
]
百分比 :
[frac {0.5 mu s}{1000 mu s} = 0.05\% ag{3}
]