最新動態

聯繫我們

地址:深圳市南山區高新中區麻雀嶺工業區M-7棟中鋼塔樓西三樓

電話:0755-26971006

手機:13751075276

郵箱:sales@acroview.com

淺談 SSD,eMMC,UFS

時間:2020-11-21   訪問量:1603

這個時候發這篇文章難免有蹭熱點的嫌疑。但作為一個計算機體系結構的研究生,在這些名詞滿天飛的時候,我的好奇心是抑制不住的,想一探這幾樣技術的究竟。本文不對某一特定事件進行點評,僅從技術角度分析對比一下這三種技術。就算是當做自己的技術儲備+科普了。


首先,這三種技術都是屬於閃存(Flash Memory)的不同種類,區別主要在於控制器,接口標準以及更底層的 Flash 芯片標準。它們在電腦/手機等系統中的主要作用是作為存儲設備(storage)/文件系統。 (注意它們雖然也叫memory,但和運存的 memory是完全兩回事兒)


以前電腦系統中的主要的存儲設備是機械式磁盤,訪問速度慢,體積龐大,功耗高,而且對震動非常敏感,因此很難用於小型化的移動設備裡。 Flash Memory 出現後,由於沒有移動部件,幾乎完美解決了以上機械硬盤的各種問題,因此很快在各種移動設備中獲得廣泛應用。 (當然,Flash的寫操作和壽命的問題也比較複雜,但這不是本文的討論重點) 而且基於Flash 的 SSD 硬盤性能普遍好於傳統機械硬盤,因此也成為了PC/服務器的主流存儲設備。


那麼既然 SSD,eMMC,UFS 都是 Flash,它們的區別在哪呢?


想要了解它們的區別,首先要了解他們解決的問題。


SSD 主要作用是取代 PC/服務器 上的 HDD 硬盤,它需要:


超大容量(百GB~TB級別)


極高的並行性以提高性能


對功耗,體積等要求並不敏感


兼容已有接口技術 (SATA,PCI等)


而 eMMC 和 UFS主要都是針對移動設備發明的,它們需要:


適當的容量


適當的性能


對功耗 ,體積的要求極其敏感


僅需遵循一定的接口標準 (稍後解釋)


為了直觀感受一下區別,我剛才特意找來了一個 PCIe 的 SSD,如下圖,上面黑色的芯片就是Flash:


我又拆了一個手機,它裡面的 Flash 芯片是這樣的(中間那個最大的黑色芯片):


1.jpg

看到區別了嗎? (之前寫的文章各種被人盜轉,只好給圖打碼了,見諒)


一個SSD,為了達到高並行高性能的要求,有多個Flash 芯片,這樣就可以在每個芯片上進行相互獨立的讀寫操作,以並行性來提高硬盤吞吐量,還可以增加冗餘備份。而手機中為了節省空間和功耗,通常只有一片密度較高的 Flash 芯片。


管理一個 Flash 芯片,和管理多個 Flash 芯片,策略肯定是不一樣的,因此它們的控制器 (controller)就完全不同了。而且 PC 上需要兼容 SATA 或 PCIe 或 m2 接口,這樣你電腦硬盤壞了的時候,可以拔下來換上另一塊同樣接口的硬盤能照樣用。而手機上的 Flash 芯片大多是直接焊在主板上的,基本上不需要考慮更換的問題,所以只要遵從一個特定標準,能和CPU正常通訊就好了。因此接口的不同也是 SSD 和 eMMC,UFS 的重要區別之一。


好了,SSD 和 (eMMC, UFS)的區別說完了,下面說一下可能很多人會關心的 eMMC 和 UFS 的區別了。


eMMC 和 UFS 都是面向移動端 Flash 的標準,區別在於,二者的接口技術大相徑庭。


eMMC 是一個起源較早的技術,全稱叫 embedded MultiMedia Card,為什麼單單e是小寫呢?因為先有的MMC啊。所謂MMC,大家可能沒聽過但可能見過,相機中用得較多,和SD卡長得很像(之前的圖片就搞錯了,感謝評論中各位的提醒)。

2.jpg

MMC前面加了個embedded,主要就是為了突出現在這個設備是embedded 在電路板上。 eMMC 和 MMC一樣,沿用了 8 bit 的並行接口。在傳輸速率不高的時代,這個接口夠用了。但隨著設備對接口的帶寬要求越來越高,想把並行接口速率提高也越來越難。 eMMC 的最新 5.1標準理論最高值最高可以達到400 MB/s,再往上提高頻率也不是不行,但就未必划算了。


好在這幾年接口串行化大潮轟轟烈烈。所謂接口串行化,簡單來說就是工程師們發現:與其用一個比較寬的並行接口以較低的速率傳輸,用一個串行接口用非常高的速率傳輸似乎更划算一些(帶寬,功率,成本各方面綜合考慮)。所以這個時候 UFS 應運而生,用高速串行接口取代了並行接口,而且還是全雙工的,也就是可以讀寫同時進行。所以相比 eMMC, UFS的理論性能提高不少,甚至可以達到一些SSD的水準。可以在下圖直觀感受一下,藍色的是UFS,紅色的是eMMC,當然是越高越好:


3.png

(圖片引自[1] Micron 的文檔)


最後,大家可能比較關心的一個問題:我設計好了一個使用UFS的系統,然後悲傷地發現沒有UFS可以用了,那能不能直接換成eMMC呢?


答案是不行的,因為 UFS 和 eMMC 接口完全不兼容,控制器也不可通用。下面兩個示意圖分別是eMMC和UFS的接口(圖片引自[2][3] JEDEC標準)。


4.png5.png

即使是示意圖,也能看出兩者的明顯差別。 eMMC有兩條總線,分別傳輸指令數據輸入和輸出,而且因為是並行總線還要有額外的data strobe。而UFS則是有兩條差分的數據lane,指令和數據都是以packet的形式發送的。就更不要提二者的信號線的電氣特性也有很大差別了。這些將直接導致控制側(CPU那邊)SoC 的控制器和電路設計會有很大不同。


所以一個系統的SoC以及電路板一定要經過重新設計,才能把 UFS 替換成 eMMC,這不是在生產線上換個 Flash 芯片那麼簡單的事兒,還得經過比較長時間的設計和測試才行。否則想要快速拿出替代方案的話,恐怕從一開始就要設計兼容兩套方案了,嗯。


-------------------------------------------------- --


[1] UFS is here, and it’s very fast!


[2] JEDEC-JESD84-B51


[3] JEDEC-JESD220C




備註:轉自知乎


手機雲網站

親,掃一掃添加微信為好友