DMA copy和CPU copy

DMA(Direct Memory Access)

  • 直接内存访问,是一种无需CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。DMA方式的数据传输由DMA控制器(DMAC)控制,在传输期间,CPU可以并发的执行其他任务。当DMA结束后,DMAC通过中断通知CPU数据传输已经结束,由CPU执行相应的中断服务程序进行后续处理。

    在这里插入图片描述

与CPU copy的区别

  • 当程序或者操作者对CPU发出指令,这些指令和数据暂存在内存里,在CPU空闲时传送给CPU,CPU处理后把结果输出到输出设备上,输出设备就是显示器,打印机等。在没有显示完之前,这些数据也保存在内存里,如果内存不足,那么系统自动从硬盘上划分一部分空间作为虚拟内存来用。但写入和读取的速度 跟物理内存差的很远很远,所以,在内存不足的时候,会感到机器反应很慢,硬盘一直在响。CPU对数据进行判断以及逻辑处理,本身不能存储数据,这时cpu从内存取数据进行逻辑计算,如果内存没有数据,才会从硬盘读取数据。要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。
  • 但是采用中断传送有它的缺点,对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。DMA在外设与内存间直接进行数据交换,而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度。
  •   通常系统的总线是由CPU管理的。在DMA方式时,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态–高阻状态,而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。DMA控制器必须有以下功能:
      1. 能向CPU发出系统保持(HOLD)信号,提出总线接管请求;
      2. 当CPU发出允许接管信号后,负责对总线的控制,进入DMA方式;
      3. 能对存储器寻址及能修改地址指针,实现对内存的读写操作;
      4. 能决定本次DMA传送的字节数,判断DMA传送是否结束 ;
      5. 发出DMA结束信号,使CPU恢复正常工作状态。

在这里插入图片描述

在这里插入图片描述

中断方式IO:缺点:中断次数取决于缓冲寄存器的大小

  • 用户进程发起数据读取请求
  • 系统调度为该进程分配cpu
  • cpu向io控制器(ide,scsi)发送io请求
  • 用户进程等待io完成,让出cpu
  • 系统调度cpu执行其他任务
  • 数据写入至io控制器的缓冲寄存器
  • 缓冲寄存器满了向cpu发出中断信号
  • cpu读取数据至内存

在这里插入图片描述

DMA方式IO: 优点:减少cpu中断次数,不用cpu拷贝数据

  • 用户进程发起数据读取请求
  • 系统调度为该进程分配cpu
  • cpu向DMA发送io请求
  • 用户进程等待io完成,让出cpu
  • 系统调度cpu执行其他任务
  • 数据写入至io控制器的缓冲寄存器
  • DMA不断获取缓冲寄存器中的数据(需要cpu时钟)
  • 传输至内存(需要cpu时钟)
  • 所需的全部数据获取完毕后向cpu发出中断信号
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值