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