标签:task transfer queue descriptor host data 子系统 MMC
【CMDQ】
Command queue是三星和高通在eMMC V5.1上联合提出来的一个提案(joint proposal)。它允许host可以
发出一个队列包含32个data-transfer command。CMDQ可能对random read/write性能提升更明显。
Ex
- host queue task
- 每个task都由cmd44来编码block count,direct,Prio,taksID... CMD45编码address;
- 在收到cmd45之后,device把task存在queue里;
- host询问taskID,避免使用重复的ID。
- QSR
- 32bit register,由taskID对应映射;
- host可以在任何时刻发送cmd13,来查询QSR;
- 每个bit表示对应的task的状态,“0-->pending or no task, "1-->ready for execution"
- 每次host想execute,都需要先查询QSR。
- 如果task ready for execution,使用cmd46/47来执行read /write 。direction需要和CMD44发出一致
- 在data transfer阶段
- host可以发出新task(cmd44/45)
- 发出cmd13在任何时刻。
以上的CMD都是有硬件来发送,软件需要做的是维护两个位于memory的(task/transfer)descriptor list,然后利用doorbell register去trigger task。
Task descriptor主要指示task的具体参数,而transfer descriptor是指示data buffer在memory的位置。DCMD task只能发给slot31。
对于QBR bit set的task,它会等待在它之前的task都完成之后,才会发给device。而在它之后的task则必须等待它完成QBR查询。
标签:task,transfer,queue,descriptor,host,data,子系统,MMC 来源: https://www.cnblogs.com/Big-hu/p/15950915.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。