dma&CPU数据一致性

1. 原理

1.1 DMA

DMA是一种无需CPU的参加就可以让外设与系统内存之间进行双向数据传输的硬件机制。

它可以使系统CPU从实际的I/O数据传输过程中摆脱出来,大大提高系统的吞吐率,并且在传输期间,CPU还可以并发执行其他任务。

1.2 DMA与cache的一致性

cache用作CPU针对内存的缓存,避免CPU每一次都要与相对来说慢点的内存交互数据,从而来提高数据的访问速率,而DMA可以用作内存与外设之间传输数据的方式,数据不需要经过CPU周转。

“假设设备驱动程序把一些数据填充到内存缓冲区中,然后立刻命令硬件设备利用DMA传送方式读取该数据。如果DMA访问这些物理RAM内存单元,而相应的硬件高速缓存行的内容还没有写入RAM中,那么硬件设备所读取的至就是内存缓冲区中的旧值。”

1.2.1 保证DMA和cache一致性的方法

现在有两种方法来处理DMA缓冲区:

  1. 一致性DMA映射:

    • 任何对DMA缓冲区的改写都要更新到内存子系统中,也称之为“同步的”或者“一致的”。

  2. 流式DMA映射:

    • 这里的流即输入输出流,需要事先指定DMA缓冲区的方向。

1.3 启动DMA的过程

启动一次流式DMA数据传输分为如下步骤:

  1. 分配DMA缓冲区

  2. 建立流式映射

  3. 释放流式映射

1.3.1 分配DMA缓冲区

在DMA设备不采用S/G(分散/聚集)模式的情况下&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值