本文依据UFS3.1 JEDEC协议及个人工作经验整理而成,如有错误请留言。
文章为个人辛苦整理,付费内容,已加入原创维权,禁止私自转载。
文章所在专栏:《黑猫带你学:UFS协议详解》
1 队列深度
每个LU都负责管理自己的任务集。
UFS设备可以实现以下两种队列架构中的一种:
(1)独立于任务集,用于对任务进行排队的资源可以静态分配给每个LU,以便LU能够对新任务进行一定深度的排队
(2)也可以由所有LU共享,以便根据接收到的任务将排队资源动态分配给LU。
host可以读取Device Descriptor和Unit Descriptor来获得ufs设备到底使用的是上述两种队列架构的哪一种。
队列深度表示可以存储在队列中的等待的命令数量。
1.1 Shared Queue
在共享的队列结构中,UFS设备有固定深度的队列,其接收到任务将会被排到该队列中,而不去管这个任务是否指定了LUN。
当COMMAND UPIU被接收,共享队列分配其资源,这个命令会受到队列深度的限制。host希望能够追踪队列深度,而不会发送超过可以存储在队列深度的命令。如果获得不到更多的队列资源,ufs设备一定会在resp中返回TASK SET FULL status。
QUERY REQUEST UPIUs, NOP OUT UPIUs, and