一、前言
存儲器件作為系統中存儲數據的物理單元,承擔著非常重要的責任,它的運行狀態時刻影響著整個系統的運行效率,存儲容量和數據安全。所以整個產業針對存儲器件的壽命,穩定性,容量,性能以及價格等方面進行著長期持續的探索與改進,進而衍生出了多種多樣的存儲器件應用于不同階段和不同場景需求的系統。
而手機系統場景尤其復雜,對存儲性能(包括IO的帶寬,延遲和穩定性)的要求更加嚴苛。那么應對如此高要求的手機系統,存儲器件在手機系統中是如何應用和發展呢?下面我們一探究竟。
二.UFS與NVMe全面對比
首先,我們可以知道,目前手機系統主流的存儲器件有兩種,一種是安卓手機使用的UFS,另外一種是蘋果用的NVMe。我們依次介紹:
2.1UFS簡介
UFS,Universal Flash Storage,通用閃存存儲。為什么現在主流使用UFS呢?很簡單,就是快。我們看下主流2lan的UFS,其順序讀的數據傳輸速率可以達到4.2GB/s:
UFS為什么這么快呢,對比手機以前使用的eMMC,有如下優勢:
UFS采用差分串行傳輸,而eMMC采用并行數據傳輸。并行最大的問題是速度上不去,因為一旦時鐘頻率提升,干擾就變大,信號完整性無法保證。隨著時鐘頻率越來越高,高速串行傳輸的優勢就很明顯了。
支持多通道數據傳輸(目前是兩通道),多通道可以讓UFS在成本,功耗和性能之間做取舍。
UFS是全雙工工作模式,意味著讀寫可以并行。而eMMC是半雙工,讀寫是不能同時進行的。
UFS支持命令隊列,可以異步處理命令,而eMMC無命令隊列,只能進行同步處理。
綜合串行,多通道,全雙工和異步的巨大優勢,UFS流行也是大勢所趨。
UFS(全雙工+串行)vs eMMC(半雙工+并行)
2.2 NVMe簡介
NVMe是專門為高速閃存芯片設計的協議,主要是為企業級和數據中心的PCIe SSD設計的接口標準,來充分發揮閃存的性能。NVMe通訊協議+PCIe總線協議是實現高速SSD性能的基礎,為什么這種組合可以充分發揮SSD的性能呢?
在NVMe之前,除了自成體系的SCSI協議(SAS SSD),其它SSD基本用的是AHCI+SATA協議。其實AHCI和SATA是為HDD服務的,而且SATA是由PATA進化而來,也是使用到了我們前面提到的高速串行的全雙工傳輸。奈何SSD具有更低的延遲和更高的性能,SATA已經嚴重制約了SSD的速度,此時就需要PCIe了。
相比SATA/SAS,我們先看下PCIe到底有多快:
常見的4 lan的PCIe4.0 SSD,傳輸速度就可達7GB/s
那么,如果把SATA換成PCIe是不是就可以了,有NVMe什么事情呢?這就需要看SATA的難兄難弟AHCI了,如果不用NVMe,老舊的AHCI同樣會嚴重制約SSD性能。下面的對比圖可以看到AHCI與NVMe的差距了:
講到這里,這些協議錯綜復雜,大家是不是已經云里霧里了。不著急,我們用下面這張圖幫助大家理解他們的關系:
參照SAS SSD的協議棧,我們可以簡單明了的看到,SATA和PCIe是物理接口和協議,AHCI和NVMe則是上層軟件協議
2.3 UFS與NVMe比較
從上面的介紹可以看到,UFS擁有很好的性能,尤其是到了UFS4.0時代,2lan的順序讀可以達到4GB/s。但是,同時我們也可以看到,NVMe作為專為SSD所設計的協議,確實也有著無以倫比的性能,尤其是PCIe6.0,單lan就可以達到恐怖的8GB/s。
那么蘋果為什么會采用NVMe而安卓還在繼續使用UFS呢?孰優孰劣?
接下來我們針對UFS和NVMe從以下幾個維度進行全面詳細的剖析:
2.3.1底層器件材料:
器件使用的材料可以說對性能起著決定性的影響,目前來看各個廠家的UFS和NVMe SSD都采用的NAND顆粒,在這塊來說,UFS和NVMe是旗鼓相當的,可以造成差距的就是UFS因為尺寸原因,無法做更多的堆疊而導致通道數不夠,導致器件并行度有限從而影響性能。
2.3.2總線傳輸協議:
我們前面介紹過,NVMe是基于PCIe總線進行數據傳輸的,那么UFS用的什么傳輸協議呢?
先看下UFS的架構圖,
最下層的互連層(UIC):由MIPI(Mobile Industry Processor Interface ,移動產業處理器接口)聯盟的M-PHY作為物理層和MIPI的UniPro作為數據鏈路層組合而成。
中間的傳輸層(UTP):是JEDEC(固態技術協會)自己定義的。
最上層的應用層(UCS):使用的簡化的SCSI子集組成UCS,由T10組織定義的。
我們可以看到UFS整個協議棧是借用了M-PHY,UniPro和SCSI組合而成,需要互相配合,數據傳輸的效率可能會有所折扣。那么再看看NVMe就顯得很簡潔,底層全部使用PCIe,傳輸效率也會相應的快很多。
2.3.3 上層軟件層次:
底層協議UFS和PCIe的速率我們前面比較過,PCIe確實強。
那么,上層協議SCSI和NVMe相比的話,孰優孰劣?
既然UFS使用古老的SAS SSD的SCSI子集,那么作為新興的協議,NVMe與SCSI相比,是否有優勢呢?我們看看它們的協議棧對比:
NVMe是簡潔的高速協議,從上圖我們也可以看到NVMe傳輸只需要一層,而SCSI則需要多層傳遞,比較臃腫,UFS子系統隸屬于SCSI低層。而且UFS自身也分了三層,簡單介紹一下:
UFS平臺層:獲取平臺相關的屬性,通過ufshcd_pltfrm_probe調用公共層ufshcd_init。獲取底層UFS host驅動并傳遞到公共層。
UFS公共層:提供UFS公共行為,策略,錯誤處理等。實現ufshcd_init等。
UFS host物理層:實現scsi控制器驅動。
UFS和NVMe協議有一些顯而易見的差異也會導致性能差距,尤其是IO隊列個數和隊列深度:
2.3.4驅動代碼差異:
上面我們了解了UFS SCSI和NVMe協議棧的差異,NVMe簡潔高效而SCSI略顯臃腫,那么體現到驅動代碼層面,IO到底需要經歷多少波折呢?通過下圖的函數調用,我們簡單看下IO提交的請求在兩種驅動中是如何進行處理的,然后最終發送成功,器件進行處理。
request從block層下來,通過queue_rq可以調到scsi或者NVMe驅動。
NVMe處理request相對簡單,block層調用nvme_queue_rq,只需要經過準備命令之后,就可以放到提交隊列里了,緊接著再去寫doorbell,設備就可以去接著去處理命令了。
UFS需要處理的過程就比較復雜了,block層調用scsi_queue_rq之后,經過scsi中層準備命令,然后發送到scsi低層ufs的隊列中,然后ufs驅動再進行組合處理去發送,最后通過寫寄存器完成命令的發送,設備才可以進行處理。
2.3.5 特性差異:
通過前面的比較,我們可以看到UFS在性能方面確實不如NVMe,但是畢竟NVMe SSD主要運用在企業和數據中心服務器中,而UFS是用在手機等終端設備中,使用場景有著相當大的差異,他們所需要的特性也是不盡相同。站在存儲行業的角度來看,服務器存儲(軟件+硬件)發展的早而且應用廣泛,所以對終端存儲的很多特性有著極具價值的參考意義。譬如UFS的LU的概念就與NVMe的namespace相似。
我們以最新的UFS4.0和NVMe2.0來做對比,探下究竟。
UFS4.0的新feature主要集中在傳輸速率和性能提升方面,還有一些安全和可用性的提升。尤其是MCQ的提出,完全可以與NVMe的多隊列媲美。
2.NVMe2.0新增的feature也不少,因為NVMe SSD主要應用于企業和數據中心,所以這些feature主要集中在數據管理和可靠性方面,最為重要的幾個是NVMe Set和ZNS的提出,為數據管理提供了更多的方式和應用場景。尤其值得一提的是,NVMe支持KV存儲這種新型的存儲形式,將對存儲的性能和效率有極大的提升。
下面列一些已有feature的增強,我們從已有的feature可以看到NVMe的特性是相當的豐富。
安全方面:PI,TLS,in-band驗證等
和可靠性方面:log記錄(CEL,PEL),Non-MDT,預測機制Telemetry,擦除期間防中斷,OOB讀引導分區等
性能方面:TTR
易用性方面:SGL,ZNS status notification等
?
綜合起來看,NVMe特性要比UFS豐富很多,后面UFS可以參考NVMe增加更多的feature,使UFS為終端場景提供更高的性能,更好的安全性,可靠性和易用性。
三.UFS和NVMe如何取舍
前面比較了這么多,我想大家心里都有個數了,這么看蘋果使用NVMe那是相當明智了,到這里很多同學應該會問,NVMe這么好,那么為何安卓廠家都還在使用UFS呢?這個問題我們可以從下面兩個角度思考:
3.1 從蘋果的角度來講
首先可以肯定的是,蘋果無法將普通的NVMe SSD直接放在手機里,一個是尺寸不允許,二來現有SSD的功耗也是手機無法承受的,所以可以肯定的是,蘋果憑借其強大的整合能力和話語權,特殊定制了適用于手機的NVMe SSD。
其次可以思考的是,服務器上的PCIe總線在手機上是用不了,蘋果需要采用新的總線來進行傳輸。真實的情況是什么呢?
蘋果采用了一種移動版的PCIe,叫M-PCIe。但是呢,總歸是服務器總線協議,所以PCIe標準下,phy層的功耗較高,而低功耗情況下,狀態遷移延遲太大。如下圖,M-PCIe就把標準的PCIe物理層換成了M-PHY,看到這個大家是不是很眼熟,對的,M-PHY就是UFS用的物理層。
做好了這些,只需要上層搭配NVMe協議和驅動,蘋果就可以使用NVMe的先進特性了,尤其是多隊列。
我們要知道,蘋果用nvme的時候還是在2015年的iphone6s上,那個時候大部分安卓廠商還在emmc階段,nvme可以說是天下無敵。我們看下當時AnandTech的測試,iPhone 6s的順序讀寫速率那是一騎絕塵。
?
?
?
3.2 從安卓各個廠家的角度來講,為什么不采用NVMe呢?
最關鍵的一點就是現在UFS的性能已經不比NVMe差了,根據下圖,我們以iPhone 14 pro max上的NVMe速率來看,連續讀取也只有1500M/s,已經比現在的UFS4.0速度差了很多,這也是安卓廠家能夠繼續使用UFS的最大驅動力。
所以順序讀寫性能:UFS4.0 > NVMe = UFS 3.0 > UFS 2.1 > eMMC 5.1
當然,在2015年的時候,安卓廠家不用NVMe,可能還有以下的原因:
原因1:整合成本問題,蘋果整合能力強是毋庸置疑的,安卓廠商成本,精力和話語權有限。
原因2:軟硬件生態問題,蘋果系統和芯片都自己掌握,機型也少,軟硬件生態打造相對容易。安卓廠商則相反,芯片需要高通和mtk,系統需要安卓,而且安卓的機型也是多種多樣,很難去打造自己的生態。
原因3:UFS與NVMe本質速度差不多,安卓使用NVMe不見得快。
原因4:競爭差異化,安卓廠商需要有自己的特點,如果跟隨蘋果,那么市場上也很難站穩腳跟。
原因5:前面介紹過的,NVMe本質是軟件接口協議,所以根本是硬件顆粒差異,NVMe搬移到手機上肯定有很大的性能損失,電腦可以通過多閃存顆粒形成多通道,提高傳輸帶寬,手機空間則沒有辦法。
原因6:能使用 NVMe閃存,跟蘋果A9 芯片開始用 PCIE 接口有關,后續蘋果家的 WiFi、基帶都使用 PCIE 接口,自己家的芯片接口自己定義,其他廠商真的學不來。
四.未來終端器件的發展
經過上面的介紹和分析,我們可以了解到,UFS和NVMe各有特點,而且會長期共存并且性能也會越來越好。
那么我們只需要UFS和NVMe就夠了嗎?顯然不會的,隨著科技的發展,新的存儲器件也會孕育而生。我們提到的UFS和NVMe的物理介質其實本質上都是NAND半導體顆粒。其實存儲行業中已經有一些新型的介質已經開始嶄露頭角,未來應用到手機終端存儲也是很有可能的,我們找幾個火熱的一起來盤一盤:
4.1 PCM(Phase Change Material):
相變材料,是指在物質發生相變時,可吸收或釋放大量能量的一類材料。由于相變材料是利用潛熱儲能,儲熱密度大,蓄熱裝置結構緊湊,并且在相變過程中本身溫度基本不變,易于管理,現在成為新型存儲的一個主要方向。
PCM相變存儲對比原來NAND FLASH有更快的讀寫速度,幾乎永久的使用壽命,存儲密度極高,當然價格目前來說也是比較可觀的。
而且PCM有另外的名字,那就是Intel的3D Xpoint技術,我們熟知的Optane就是用到這個技術。
4.2 MRAM(Magnetic Random Access Memory):
磁性隨機存取存儲器,其核心原理是自旋電子學,利用電子自旋特性,自旋磁性方向會出現不同的電阻特性,電阻狀態可以表示0和1。
MRAM具有非易失性、讀寫速度快、能耗低、集成密度高、耐久力強、天然抗輻射和隨工藝節點等比微縮等優點,等于兼具Flash的非易失性、媲美DRAM的高速讀寫特性、媲美FeRAM的極高擦寫次數
4.3 FeRAM:鐵電存儲器,
優點:斷電能保存數據,同時速度比NAND快很多,功耗低,讀寫速度快,具有抗輻照能力
缺點:工藝困難,價格貴
4.4 ReRAM:阻變存儲器,是以非導性材料的電阻在外加電場作用下,在高阻態和低阻態之間實現可逆轉換為基礎的非易失性存儲器。具備一般小于100ns的高速度、耐久性強、多位存儲能力的特點。
五.結語
天下大勢,分久必合,合久必分。雖然目前手機終端主流存儲器件是UFS和NVMe,并且隨著需求變化,都會增加新的特性去不斷完善,但是未來是否會合二為一也說不準。同時伴隨著時代的發展,物聯網,人工智能,云計算等對數據存儲的需求快速增長,不斷有新型存儲出現和發展,憑借它們超強的性能,超長壽命,超高可靠性,或者超低價格(所有企業都敏感),隨時可能有顛覆性的改變,讓我們一起期待和關注,到時再聊聊。
編輯:黃飛
?
評論
查看更多