DMA

DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。

DMA控制器 : DMAC ( Direct Memory Access Controller )

DMA的传输过程

1591499923991

DMA和中断的比较

  1. 中断和DMA的响应时间------指令周期结束后响应中断, CPU周期结束后响应DMA

1591499999901

  1. 1591500090472

DMA的工作机制

1. 周期挪用 ( 窃取 ) 方式 --- 现代计算机

DMA 控制器对主存储器存取数据常采用周期挪用方式, 即是在中央处理器执行程序期间, DMA控制器为存取数据, 强行插入使用主存储器若干周期;

两种情况 :

  • 隐藏周期DMA : 窃取总线
  • 暂停CPU方式 : 抢总线

特点 :

  • 当主存工作速度都高于外设较多时, 可提高主存的利用率, 且对CPU的影响较小

2. 存储器分时方式 --- Motorala 6800系列

  • 原来的一个存取周期分割成两个时间片, 一片分给CPU, 一片分给DMAC
  • 无需申请和归还总线
  • 需要主存的工作速度提高一倍
  • Motorola 6800系列8位CPU

3. 停止CPU方式 --- 早期计算机

  • DMAC : 申请总线 --> 独占总线 --> 释放总线
  • 控制简单 ; 主存利用率不高

4. 扩展时钟周期方式

两道例题

例题1

1591512712815

例题2

1591513406478

两次传输 ( 中断 ) 的间隔时间 :

\[ {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} \]

posted @ 2020-06-07 15:37  roccoshi  阅读(562)  评论(0编辑  收藏  举报