对ADMA3和CMD Queue的理解

来源:互联网 发布:java开发网站建设 编辑:程序博客网 时间:2024/06/05 04:24

ADMA3是由host端发起的,与之前ADMA2每次只能发送一个CMD(command)不同,ADMA3一次可以发送多个CMD。
CMD Queue是SD6.0卡为了提高读写速度而使用的一种机制,这种机制最早在eMMC中使用。CMD Queue和软件中的队列概念有点类似,简单来说,就是通过硬件手段使SD卡可以存储多条CMD(Read、write),有SD卡决定执行哪个CMD命令。
这个CMD Queue机制与磁盘的预读机制类似,根据局部性原理:
当一个数据被用到时,其附近的数据也通常会马上被使用。程序运行期所需的数据通常比较集中。CMD Queue的队列深度为0到32。
SD卡对是否使用CMD Queue有一个判断条件,要求随机写的速度最小为2000 IOPS,随机读的速度最小为4000 IOPS(IOPS即每秒进行以4KB尺寸为单位的IO操作的次数),顺序写的速度最小为10MB/s并且支持Cache 特性。
一般CMD Queue的设置步骤如下:
1、CMD49 设置CQ_Enable和Cache_Enable
2、CMD48读回相应信息
3、CMD44、CMD45注册CMDQ信息,创建task
4、CMD13 检测task是否准备好读写
5、CMD46和CMD47为读写

原创粉丝点击