最佳留言者將獲得《深入淺出SSD》電子書一本
UPIU是命令、數(shù)據(jù)和狀態(tài)信息傳輸?shù)妮d體,是UFS協(xié)議棧的靈魂。UPIU是有固定格式的數(shù)據(jù)包,我們分析數(shù)據(jù)包格式,有助于我們更深的理解UPIU以及整個(gè)UFS協(xié)議。這一章我們看看UPIU數(shù)據(jù)包的格式。
每個(gè)UPIU都有一個(gè)12字節(jié)的Header,再加上跟每個(gè)UPIU相關(guān)的域。一個(gè)UPIU(包括Header)最小為32字節(jié),最大為65600字節(jié)。

我們看通用的Header,具體如下:

我們看看其中的一些域。
1. Transaction Type:就是指定該UPIU是前面12個(gè)UPIU中的哪一個(gè),具體如下:

2. Flags:只對(duì)命令和其響應(yīng)的UPIU有用,指定命令的屬性。

R: 如果該比特置起來(lái),說(shuō)明該命令是讀命令;
W: 如果該比特置起來(lái),說(shuō)明該命令是寫命令;
ATTR: 命令屬性域。UFS命令有simple ,ordered 和Head of Queue命令。

那么,這些命令有什么不一樣呢。
Simple command:就是一般的命令,設(shè)備收到這樣的命令無(wú)需特別處理,一般誰(shuí)先到誰(shuí)先執(zhí)行。
Ordered command:設(shè)備收到這樣的命令,應(yīng)該把該命令之前的命令都處理完,才能處理該命令。(明星出場(chǎng),先清個(gè)場(chǎng)。)
Head of Queue command:設(shè)備收到該命令后,放到命令隊(duì)列的頭部,立刻執(zhí)行。(又見(jiàn)插隊(duì),這個(gè)沒(méi)有上過(guò)幼兒園吧,連基本的排隊(duì)意識(shí)都沒(méi)有。)
CP: 表示命令的優(yōu)先級(jí)。1為高優(yōu)先級(jí),0為低優(yōu)先級(jí)。注意,該比特只適合簡(jiǎn)單命令(simple command)。
3. LUN: Logical Unit Number。UFS上層協(xié)議來(lái)自SCSI,它繼承了LU的概念,即把存儲(chǔ)物理空間劃分成若干個(gè)邏輯空間,每個(gè)邏輯空間都是從LBA 0開(kāi)始,用LUN標(biāo)識(shí)。主機(jī)在發(fā)命令或者請(qǐng)求時(shí),應(yīng)該在命令中指定該命令是發(fā)給哪個(gè)LU。LUN用以尋址。UFS的LU和NVMe中的Namespace一個(gè)概念。
4. Task Tag:UFS支持命令隊(duì)列,主機(jī)可以同時(shí)發(fā)送很多個(gè)命令給設(shè)備。為區(qū)分這些命令或者請(qǐng)求,主機(jī)需要為每個(gè)命令貼上標(biāo)簽Tag。然后跟這個(gè)命令或者請(qǐng)求相關(guān)的數(shù)據(jù)UPIU和狀態(tài)UPIU,都具有跟這個(gè)命令UPIU一樣的Tag。
舉例:

對(duì)這個(gè)讀命令來(lái)說(shuō),COMMAND UPIU、所有的DATA IN UPIU和RESPONSE UPIU都具有同一個(gè)task tag。
5. Command Type:命令類型。UFS預(yù)期有三類命令:一是簡(jiǎn)化的SCSI命令,二是UFS自己原生的命令,三就是用戶自定義命令。目前UFS的命令都是從別人家(SCSI)借來(lái)的,自己一個(gè)命令也沒(méi)有制定。如用戶無(wú)自定義命令,該域就是0(SCSI命令)。
6. Initiator ID: 主機(jī)的ID,手機(jī)系統(tǒng)中一般一個(gè)主機(jī)連接一個(gè)UFS設(shè)備,所以主機(jī)ID一般為0。
7. Response:設(shè)備告知主機(jī)命令或請(qǐng)求執(zhí)行是否成功。
8. Status:設(shè)備返回命令執(zhí)行狀態(tài)。對(duì)SCSI命令的狀態(tài)信息,UFS有如下?tīng)顟B(tài):

9. Query Function, Task Manag. Function:指定具體Query和Task Management功能。
任務(wù)管理器有如下功能(Function):

設(shè)備管理器有如下功能:

總的來(lái)說(shuō),就是讀寫設(shè)備屬性(Attributes)、標(biāo)識(shí)(flags)和描述符(descriptors)。

關(guān)于設(shè)備屬性、標(biāo)識(shí)和描述符,后面有專門章節(jié)講述。
10. Device Information:設(shè)備信息。該域往往跟該命令或者請(qǐng)求無(wú)關(guān),屬于設(shè)備夾帶私貨。因?yàn)閁FS主機(jī)和設(shè)備是主從關(guān)系,如果UFS主機(jī)沒(méi)有向設(shè)備發(fā)命令或者請(qǐng)求,UFS設(shè)備是不能主動(dòng)向主機(jī)報(bào)告設(shè)備狀況的。如果UFS設(shè)備有特殊事件發(fā)生,它可以趁返回RESPONSE UPIU的時(shí)候把事件順帶告訴主機(jī)。所以該域只對(duì)RESPONSE UPIU有效。
以上是UPIU頭的基本信息,這個(gè)是所有UPIU都具有的。除此之外,每個(gè)UPIU有它獨(dú)有的其它信息,UFS spec上都有介紹,讀者可以自行閱讀。
-
數(shù)據(jù)包
+關(guān)注
關(guān)注
0文章
270瀏覽量
25657 -
UFS
+關(guān)注
關(guān)注
6文章
118瀏覽量
26451
原文標(biāo)題:蛋蛋讀UFS之四:UPIU數(shù)據(jù)包格式
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
MIMXRT1189奇數(shù)長(zhǎng)度UDP數(shù)據(jù)包的最后一個(gè)字節(jié)出現(xiàn)問(wèn)題,為什么?如何解決?
PI7C9X2G304EV:PCI Express Gen 2 數(shù)據(jù)包交換機(jī)的深度解析
CW32R030可以兼容BLE及XN297L數(shù)據(jù)包,請(qǐng)問(wèn)這個(gè)XN297L數(shù)據(jù)包是什么?
bk3633 usb 設(shè)備如何讀取主機(jī)向端點(diǎn)0 發(fā)送數(shù)據(jù)包
使用nrf54L15的NORDIC藍(lán)牙芯片,通過(guò)串口發(fā)送一幀數(shù)據(jù)包時(shí),會(huì)出現(xiàn)分包發(fā)送分析
串行通信接口的結(jié)構(gòu)和功能
更深的理解UPIU數(shù)據(jù)包的格式
評(píng)論