博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于DMA的几个小问题
阅读量:6640 次
发布时间:2019-06-25

本文共 630 字,大约阅读时间需要 2 分钟。

1.DMA传之前是否需要把cache更新到内存。

It depends。大部分X86支持DMA当主存跟Cache不一致时,DMA直接从Cache里面去数据,那就不需要cache flush了。但有些hardware不支持DMA从cache取数据,这时候就有必要在DMA之前flush cache到主存了。不过在windows下,cache flush的操作其实不需要driver来关心,当driver调用OS的API去做DMA的时候,OS已经帮我们做好了cache跟memory之间的coherence了。

2. DMA有哪些类型。

可以分为Packet Based, Common-Buffer, Hybrid三种。Packet Based其实就是Driver配置好DMA的基本参数,主动让Device做DMA。Common-Buffer,就是开一块内存跟Device共享,Device自己定时poll这块Memory,发现Memory的数据变化,Device自己开始DMA,需要Driver维护好这块common buffer。Hybrid的就是,有Common-Buffer,但是存放的不是数据,而是一些Descriptor Entry,Device poll这些Descriptoy entry,来开始DMA。

 

 

 

 

转载于:https://www.cnblogs.com/zzSoftware/archive/2013/02/01/2888899.html

你可能感兴趣的文章
41 表查询
查看>>
项目中常用的MySQL优化方法--壹拾玖条
查看>>
Git分布式版本控制遇到的问题&如何把本地的项目上传到码市上
查看>>
Java jsoup多线程爬虫(爬豆瓣图书封面)
查看>>
访问百度的过程
查看>>
内存对齐.结构体对齐
查看>>
USB子系统gadget analyse
查看>>
selenium webdriver API
查看>>
关于Android开发中Arm、X86和Mips(草稿)
查看>>
Weblogic报错:Unsupported major.minor version 52.0
查看>>
Python_函数_参数
查看>>
排序算法之堆排序及其C语言代码实现
查看>>
Linux Shell基础 Bash常见命令 echo命令
查看>>
公开一个云计算和云存储的源代码.
查看>>
js点击出现二级菜单,点击二级菜单主菜单换成二级菜单
查看>>
Git远程操作详解(clone、remote、fetch、pull、push)
查看>>
win7下的vxworks总结
查看>>
LeapMotion预览——什么是LeapMotion
查看>>
java面试题
查看>>
数石子【并查集】
查看>>