作者:codingbelief
eMMC 是 Flash Memory 的一類,在詳細介紹 eMMC 之前,先簡單介紹一下 Flash Memory。
Flash Memory 是一種非易失性的存儲器。在嵌入式系統(tǒng)中通常用于存放系統(tǒng)、應(yīng)用和數(shù)據(jù)等。在 PC 系統(tǒng)中,則主要用在固態(tài)硬盤以及主板 BIOS 中。另外,絕大部分的 U 盤、SDCard 等移動存儲設(shè)備也都是使用 Flash Memory 作為存儲介質(zhì)。
1. Flash Memory 的主要特性
與傳統(tǒng)的硬盤存儲器相比,F(xiàn)lash Memory 具有質(zhì)量輕、能耗低、體積小、抗震能力強等的優(yōu)點,但也有不少局限性,主要如下:
需要先擦除再寫入
Flash Memory 寫入數(shù)據(jù)時有一定的限制。它只能將當(dāng)前為 1 的比特改寫為 0,而無法將已經(jīng)為 0 的比特改寫為 1,只有在擦除的操作中,才能把整塊的比特改寫為 1。
塊擦除次數(shù)有限
Flash Memory 的每個數(shù)據(jù)塊都有擦除次數(shù)的限制(十萬到百萬次不等),擦寫超過一定次數(shù)后,該數(shù)據(jù)塊將無法可靠存儲數(shù)據(jù),成為壞塊。
為了最大化的延長 Flash Memory 的壽命,在軟件上需要做擦寫均衡(Wear Leveling),通過分散寫入、動態(tài)映射等手段均衡使用各個數(shù)據(jù)塊。同時,軟件還需要進行壞塊管理(Bad Block Management,BBM),標(biāo)識壞塊,不讓壞塊參與數(shù)據(jù)存儲。(注:除了擦寫導(dǎo)致的壞塊外,F(xiàn)lash Memory 在生產(chǎn)過程也會產(chǎn)生壞塊,即固有壞塊。)
讀寫干擾
由于硬件實現(xiàn)上的物理特性,F(xiàn)lash Memory 在進行讀寫操作時,有可能會導(dǎo)致鄰近的其他比特發(fā)生位翻轉(zhuǎn),導(dǎo)致數(shù)據(jù)異常。這種異??梢酝ㄟ^重新擦除來恢復(fù)。Flash Memory 應(yīng)用中通常會使用 ECC 等算法進行錯誤檢測和數(shù)據(jù)修正。
電荷泄漏
存儲在 Flash Memory 存儲單元的電荷,如果長期沒有使用,會發(fā)生電荷泄漏,導(dǎo)致數(shù)據(jù)錯誤。不過這個時間比較長,一般十年左右。此種異常是非永久性的,重新擦除可以恢復(fù)。
2. NOR Flash 和 NAND Flash
根據(jù)硬件上存儲原理的不同,F(xiàn)lash Memory 主要可以分為 NOR Flash 和 NAND Flash 兩類。 主要的差異如下所示:
NAND Flash 讀取速度與 NOR Flash 相近,根據(jù)接口的不同有所差異;
NAND Flash 的寫入速度比 NOR Flash 快很多;
NAND Flash 的擦除速度比 NOR Flash 快很多;
NAND Flash 最大擦次數(shù)比 NOR Flash 多;
NOR Flash 支持片上執(zhí)行,可以在上面直接運行代碼;
NOR Flash 軟件驅(qū)動比 NAND Flash 簡單;
NOR Flash 可以隨機按字節(jié)讀取數(shù)據(jù),NAND Flash 需要按塊進行讀取。
大容量下 NAND Flash 比 NOR Flash 成本要低很多,體積也更?。?br>
(注:NOR Flash 和 NAND Flash 的擦除都是按塊塊進行的,執(zhí)行一個擦除或者寫入操作時,NOR Flash 大約需要 5s,而 NAND Flash 通常不超過 4ms。)
2.1 NOR Flash
NOR Flash 根據(jù)與 CPU 端接口的不同,可以分為 Parallel NOR Flash 和 Serial NOR Flash 兩類。
Parallel NOR Flash 可以接入到 Host 的 SRAM/DRAM Controller 上,所存儲的內(nèi)容可以直接映射到 CPU 地址空間,不需要拷貝到 RAM 中即可被 CPU 訪問,因而支持片上執(zhí)行。Serial NOR Flash 的成本比 Parallel NOR Flash 低,主要通過 SPI 接口與 Host 連接。
鑒于 NOR Flash 擦寫速度慢,成本高等特性,NOR Flash 主要應(yīng)用于小容量、內(nèi)容更新少的場景,例如 PC 主板 BIOS、路由器系統(tǒng)存儲等。
更多 NOR Flash 的相關(guān)細節(jié),請參考 NOR Flash 章節(jié)。
2.2 NAND Flash
NAND Flash 需要通過專門的 NFI(NAND Flash Interface)與 Host 端進行通信,如下圖所示:
NAND Flash 根據(jù)每個存儲單元內(nèi)存儲比特個數(shù)的不同,可以分為 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三類。其中,在一個存儲單元中,SLC 可以存儲 1 個比特,MLC 可以存儲 2 個比特,TLC 則可以存儲 3 個比特。
NAND Flash 的一個存儲單元內(nèi)部,是通過不同的電壓等級,來表示其所存儲的信息的。在 SLC 中,存儲單元的電壓被分為兩個等級,分別表示 0 和 1 兩個狀態(tài),即 1 個比特。在 MLC 中,存儲單元的電壓則被分為 4 個等級,分別表示 00 01 10 11 四個狀態(tài),即 2 個比特位。同理,在 TLC 中,存儲單元的電壓被分為 8 個等級,存儲 3 個比特信息。
圖片: SLC、MLC 與 TLC
NAND Flash 的單個存儲單元存儲的比特位越多,讀寫性能會越差,壽命也越短,但是成本會更低。Table 1 中,給出了特定工藝和技術(shù)水平下的成本和壽命數(shù)據(jù)。
Table 1
SLC |
MLC |
TLC |
制造成本 |
30-35 美元 / 32GB |
17 美元 / 32GB |
9-12 美元 / 32GB |
擦寫次數(shù) |
10萬次或更高 |
1萬次或更高 |
5000次甚至更高 |
存儲單元 |
1 bit / cell |
2 bits / cell |
3 bits / cell |
(注:以上數(shù)據(jù)來源于互聯(lián)網(wǎng),僅供參考)
相比于 NOR Flash,NAND Flash 寫入性能好,大容量下成本低。目前,絕大部分手機和平板等移動設(shè)備中所使用的 eMMC 內(nèi)部的 Flash Memory 都屬于 NAND Flash。PC 中的固態(tài)硬盤中也是使用 NAND Flash。
更多 NAND Flash 的相關(guān)細節(jié),請參考 NAND Flash 章節(jié)。
3. Raw Flash 和 Managed Flash
由于 Flash Memory 存在按塊擦寫、擦寫次數(shù)的限制、讀寫干擾、電荷泄露等的局限,為了最大程度的發(fā)揮 Flash Memory 的價值,通常需要有一個特殊的軟件層次,實現(xiàn)壞塊管理、擦寫均衡、ECC、垃圾回收等的功能,這一個軟件層次稱為 FTL(Flash Translation Layer)。
在具體實現(xiàn)中,根據(jù) FTL 所在的位置的不同,可以把 Flash Memory 分為 Raw Flash 和 Managed Flash 兩類。
圖片: Raw Flash 和 Managed Flash
Raw Flash
在此類應(yīng)用中,在 Host 端通常有專門的 FTL 或者 Flash 文件系統(tǒng)來實現(xiàn)壞塊管理、擦寫均衡等的功能。Host 端的軟件復(fù)雜度較高,但是整體方案的成本較低,常用于價格敏感的嵌入式產(chǎn)品中。
通常我們所說的 NOR Flash 和 NAND Flash 都屬于這類型。
Managed Flash
Managed Flash 在其內(nèi)部集成了 Flash Controller,用于完成擦寫均衡、壞塊管理、ECC校驗等功能。相比于直接將 Flash 接入到 Host 端,Managed Flash 屏蔽了 Flash 的物理特性,對 Host 提供標(biāo)準(zhǔn)化的接口,可以減少 Host 端軟件的復(fù)雜度,讓 Host 端專注于上層業(yè)務(wù),省去對 Flash 進行特殊的處理。
eMMC、SD Card、UFS、U 盤等產(chǎn)品是屬于 Managed Flash 這一類。
4. 參考資料
- NOR NAND Flash Guide: Selecting a Flash Storage Solution [PDF]
- Wiki: Common Flash Memory Interface [Web]
- Quick Guide to Common Flash Interface [PDF]
- MICRON NOR Flash Technology [Web]
- MICRON NAND Flash Technology [Web]
- Wiki:閃存 [Web]
- Wiki:Flash File System [Web]
- Wear Leveling in Micron? NAND Flash Memory [PDF]
- Understanding Flash: The Flash Translation Layer [Web]
- 談NAND Flash的底層結(jié)構(gòu)和解析 [Web]
- 閃存基礎(chǔ) [Web]
- Open NAND Flash Interface (ONFI) [Web]
|