任何一種接口或者協(xié)議,都是由一個完整的協(xié)議棧組成的。UFS也不例外。
UFS定義了一個完整的協(xié)議棧。從上到下,依次為應(yīng)用層、傳輸層、數(shù)據(jù)鏈路層和物理層。UFS使用MIPI(Mobile Industry Processor Interface ,移動產(chǎn)業(yè)處理器接口)聯(lián)盟的UniPro作為數(shù)據(jù)鏈路層和MIPI的M-PHY作為物理層,兩者合起來稱之為互連層(UFS InterConnect Layer)。與之相比,PCIe接口只定義了下三層(如下圖),沒有應(yīng)用層。只有加上上層NVMe,才構(gòu)成一個完整的SSD通訊協(xié)議。
目前UFS沒有定義自己的命令(沒有UFS Native Command Set),使用的命令是簡化的SCSI命令(基于SBC和SPC),由INCITS T10組織定義的。關(guān)于SCSI相關(guān)協(xié)議,大家可以參看相應(yīng)的spec。
四層中,只有傳輸層是JEDEC自己定義的。所以,UFS四層中有三層是別人的,命令層是T10的,數(shù)據(jù)鏈路層和物理層是MIPI的,傳輸層是JEDEC自己的。JEDEC移花接木的水平真是高。不由的想到一個廣告:“我們不生產(chǎn)水,我們只是大自然的搬運(yùn)工!”
UFS至今已經(jīng)有五個版本,每層的版本也不盡相同。
我們依次來看看這幾層。
UFS應(yīng)用層
應(yīng)用層包括UFS命令集、設(shè)備管理器(Device Manager)和任務(wù)管理器(Task Manager)。應(yīng)用層處于整個協(xié)議棧的最高層,所有的命令或者請求都來源于該層。它是最高統(tǒng)帥,所有的戰(zhàn)術(shù)和策略都是它制定的,然后真正去沖鋒陷陣的是將軍和士兵(應(yīng)用層下面的傳輸層和內(nèi)聯(lián)層)。
命令集
如前所述,目前UFS沒有定義自己的命令,使用簡化的SCSI命令。
其中包括一些SPC(SCSI Primary Commands)命令:
和一些SBC(SCSI Block Commands)命令:
UFS除了定義基本的讀寫命令,也有trim命令(UNMAP),還有其它一些命令。我們不打算深入其中。
設(shè)備管理器
顧名思義,設(shè)備管理器用以管理UFS設(shè)備。
設(shè)備管理器有兩個功能:一是處理設(shè)備級操作,二是管理設(shè)備級配置。
前者包括管理設(shè)備功耗、設(shè)置數(shù)據(jù)傳輸相關(guān)參數(shù)、使能/禁止設(shè)備后臺操作(Background Operation)以及其它設(shè)備相關(guān)操作。
后者通過維護(hù)和存儲一系列的描述符(Descriptor,后面有章節(jié)介紹),通過諸如Query請求修改或獲取設(shè)備的配置信息。
從UFS層次架構(gòu)圖來看,設(shè)備管理器既可以通過下層的傳輸層為其服務(wù)(通過UDM_SAP):
設(shè)備管理器也可以繞過傳輸層(通過UIO_SAP),直接管理與控制互聯(lián)層:
設(shè)備管理器可以通過互聯(lián)層提供的接口(UIO_SAP),使用一系列的原語(Primitive)直接控制操作互聯(lián)層(UIC)。這些原語包括重啟設(shè)備、重啟互聯(lián)層、讓物理層進(jìn)入和退出休眠模式(Hibernate)等原語。
總之,設(shè)備管理器既可以走常規(guī)渠道(通過傳輸層,以數(shù)據(jù)包UPIU的形式),也可以走快速通道(發(fā)送UIC能理解的命令,原語的形式)管理和操作設(shè)備。
任務(wù)管理器
任務(wù)管理器用以管理命令隊(duì)列中的命令。比如任務(wù)管理器可以發(fā)Abort命令,終止之前發(fā)下去的命令。它也可以清空命令隊(duì)列中的所有命令。具體如下:
當(dāng)某個命令超時時,系統(tǒng)可能發(fā)Abort命令把這個命令終止掉。
UFS傳輸層
傳輸層為它上面的應(yīng)用層服務(wù)。當(dāng)傳輸層收到應(yīng)用層命令或者請求后,它會產(chǎn)生UPIU(UFS Protocol Information Unit),把命令塊或者請求封裝成固定格式的數(shù)據(jù)結(jié)構(gòu),然后交由下層傳到接收端的傳輸層。和命令相關(guān)的數(shù)據(jù)、狀態(tài),也有相應(yīng)的UPIU數(shù)據(jù)包。UPIU是主機(jī)和設(shè)備進(jìn)行信息交換的基本數(shù)據(jù)單元。
UPIU,和SATA中的FIS,PCIe中的TLP,是同一層次的東西,上層命令或者數(shù)據(jù)都是通過此類數(shù)據(jù)包封裝起來,然后傳輸?shù)浇邮斩恕?/p>
如果說應(yīng)用層是統(tǒng)帥的話,傳輸層可以認(rèn)為是將軍了。
下一章節(jié)為專門介紹UPIU,這里就不細(xì)講。
UFS互聯(lián)層
UFS互聯(lián)層包括MIPI UniPro和M-PHY,分別充當(dāng)UFS數(shù)據(jù)鏈路層和物理層的角色。數(shù)據(jù)鏈路層負(fù)責(zé)主機(jī)和設(shè)備的鏈接,物理層傳輸實(shí)實(shí)在在的物理信號。
UniPro其實(shí)不僅僅只定義了數(shù)據(jù)鏈路層,它本是也是一個比較完整的協(xié)議棧,如下圖所示:
傳輸層(L4)支持多設(shè)備之間的雙向連接,但UFS只支持CPort0;網(wǎng)絡(luò)層(L3)支持通過設(shè)備ID尋址多達(dá)128個設(shè)備,但由于UFS是點(diǎn)到點(diǎn)傳輸,所以無需網(wǎng)絡(luò)層;數(shù)據(jù)鏈路層(L2)支持流控、CRC生成和校驗(yàn)、重傳機(jī)制等,UFS利用了UniPro的數(shù)據(jù)鏈路層為主機(jī)和設(shè)備之間通訊提供可靠的連接。
物理層(M-PHY)使用8/10編碼、差分信號串行數(shù)據(jù)傳輸。數(shù)據(jù)傳輸分高低速模式,每種模式下又有幾種不同的速度檔。
關(guān)于MIPI UniPro和M-PHY,讀者可以看相關(guān)的spec,這里不細(xì)講。
本章對UFS協(xié)議棧做了簡單介紹,下一章將會對傳輸層發(fā)起的UPIU進(jìn)行詳細(xì)的介紹。
-
SSD
+關(guān)注
關(guān)注
21文章
2878瀏覽量
117652 -
協(xié)議棧
+關(guān)注
關(guān)注
2文章
144瀏覽量
33677 -
UFS
+關(guān)注
關(guān)注
6文章
105瀏覽量
24089
原文標(biāo)題:蛋蛋讀UFS之二:UFS協(xié)議棧
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論