eMMC 原理 1 :Flash Memory 簡介

eMMC 是 Flash Memory 的一類,在詳細介紹 eMMC 之前,先簡單介紹一下 Flash Memory。

Flash Memory 是一種非易失性的存儲器。在嵌入式系統中通常用於存放系統、應用和數據等。在 PC 系統中,則主要用在固態硬盤以及主板 BIOS 中。另外,絕大部分的 U 盤、SDCard 等移動存儲設備也都是使用 Flash Memory 作爲存儲介質。

  1. Flash Memory 的主要特性

與傳統的硬盤存儲器相比,Flash Memory 具有質量輕、能耗低、體積小、抗震能力強等的優點,但也有不少侷限性,主要如下:

需要先擦除再寫入
Flash Memory 寫入數據時有一定的限制。它只能將當前爲 1 的比特改寫爲 0,而無法將已經爲 0 的比特改寫爲 1,只有在擦除的操作中,才能把整塊的比特改寫爲 1。

塊擦除次數有限
Flash Memory 的每個數據塊都有擦除次數的限制(十萬到百萬次不等),擦寫超過一定次數後,該數據塊將無法可靠存儲數據,成爲壞塊。
爲了最大化的延長 Flash Memory 的壽命,在軟件上需要做擦寫均衡(Wear Leveling),通過分散寫入、動態映射等手段均衡使用各個數據塊。同時,軟件還需要進行壞塊管理(Bad Block Management,BBM),標識壞塊,不讓壞塊參與數據存儲。(注:除了擦寫導致的壞塊外,Flash Memory 在生產過程也會產生壞塊,即固有壞塊。)

讀寫干擾
由於硬件實現上的物理特性,Flash Memory 在進行讀寫操作時,有可能會導致鄰近的其他比特發生位翻轉,導致數據異常。這種異常可以通過重新擦除來恢復。Flash Memory 應用中通常會使用 ECC 等算法進行錯誤檢測和數據修正。

電荷泄漏
存儲在 Flash Memory 存儲單元的電荷,如果長期沒有使用,會發生電荷泄漏,導致數據錯誤。不過這個時間比較長,一般十年左右。此種異常是非永久性的,重新擦除可以恢復。
2. NOR Flash 和 NAND Flash

根據硬件上存儲原理的不同,Flash Memory 主要可以分爲 NOR Flash 和 NAND Flash 兩類。 主要的差異如下所示:

NAND Flash 讀取速度與 NOR Flash 相近,根據接口的不同有所差異;
NAND Flash 的寫入速度比 NOR Flash 快很多;
NAND Flash 的擦除速度比 NOR Flash 快很多;
NAND Flash 最大擦次數比 NOR Flash 多;
NOR Flash 支持片上執行,可以在上面直接運行代碼;
NOR Flash 軟件驅動比 NAND Flash 簡單;
NOR Flash 可以隨機按字節讀取數據,NAND Flash 需要按塊進行讀取。
大容量下 NAND Flash 比 NOR Flash 成本要低很多,體積也更小;
(注:NOR Flash 和 NAND Flash 的擦除都是按塊塊進行的,執行一個擦除或者寫入操作時,NOR Flash 大約需要 5s,而 NAND Flash 通常不超過 4ms。)

2.1 NOR Flash

NOR Flash 根據與 CPU 端接口的不同,可以分爲 Parallel NOR Flash 和 Serial NOR Flash 兩類。
Parallel NOR Flash 可以接入到 Host 的 SRAM/DRAM Controller 上,所存儲的內容可以直接映射到 CPU 地址空間,不需要拷貝到 RAM 中即可被 CPU 訪問,因而支持片上執行。Serial NOR Flash 的成本比 Parallel NOR Flash 低,主要通過 SPI 接口與 Host 連接。

圖片: Parallel NOR Flash 與 Serial NOR Flash

鑑於 NOR Flash 擦寫速度慢,成本高等特性,NOR Flash 主要應用於小容量、內容更新少的場景,例如 PC 主板 BIOS、路由器系統存儲等。

更多 NOR Flash 的相關細節,請參考 NOR Flash 章節。

2.2 NAND Flash

NAND Flash 需要通過專門的 NFI(NAND Flash Interface)與 Host 端進行通信,如下圖所示:

圖片:NAND Flash Interface

NAND Flash 根據每個存儲單元內存儲比特個數的不同,可以分爲 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三類。其中,在一個存儲單元中,SLC 可以存儲 1 個比特,MLC 可以存儲 2 個比特,TLC 則可以存儲 3 個比特。

NAND Flash 的一個存儲單元內部,是通過不同的電壓等級,來表示其所存儲的信息的。在 SLC 中,存儲單元的電壓被分爲兩個等級,分別表示 0 和 1 兩個狀態,即 1 個比特。在 MLC 中,存儲單元的電壓則被分爲 4 個等級,分別表示 00 01 10 11 四個狀態,即 2 個比特位。同理,在 TLC 中,存儲單元的電壓被分爲 8 個等級,存儲 3 個比特信息。

圖片: SLC、MLC 與 TLC

NAND Flash 的單個存儲單元存儲的比特位越多,讀寫性能會越差,壽命也越短,但是成本會更低。Table 1 中,給出了特定工藝和技術水平下的成本和壽命數據。

Table 1

SLC	MLC	TLC

製造成本 30-35 美元 / 32GB 17 美元 / 32GB 9-12 美元 / 32GB
擦寫次數 10萬次或更高 1萬次或更高 5000次甚至更高
存儲單元 1 bit / cell 2 bits / cell 3 bits / cell
(注:以上數據來源於互聯網,僅供參考)

相比於 NOR Flash,NAND Flash 寫入性能好,大容量下成本低。目前,絕大部分手機和平板等移動設備中所使用的 eMMC 內部的 Flash Memory 都屬於 NAND Flash。PC 中的固態硬盤中也是使用 NAND Flash。

更多 NAND Flash 的相關細節,請參考 NAND Flash 章節。

  1. Raw Flash 和 Managed Flash

由於 Flash Memory 存在按塊擦寫、擦寫次數的限制、讀寫干擾、電荷泄露等的侷限,爲了最大程度的發揮 Flash Memory 的價值,通常需要有一個特殊的軟件層次,實現壞塊管理、擦寫均衡、ECC、垃圾回收等的功能,這一個軟件層次稱爲 FTL(Flash Translation Layer)。

在具體實現中,根據 FTL 所在的位置的不同,可以把 Flash Memory 分爲 Raw Flash 和 Managed Flash 兩類。

圖片: Raw Flash 和 Managed Flash

Raw Flash
在此類應用中,在 Host 端通常有專門的 FTL 或者 Flash 文件系統來實現壞塊管理、擦寫均衡等的功能。Host 端的軟件複雜度較高,但是整體方案的成本較低,常用於價格敏感的嵌入式產品中。
通常我們所說的 NOR Flash 和 NAND Flash 都屬於這類型。

Managed Flash
Managed Flash 在其內部集成了 Flash Controller,用於完成擦寫均衡、壞塊管理、ECC校驗等功能。相比於直接將 Flash 接入到 Host 端,Managed Flash 屏蔽了 Flash 的物理特性,對 Host 提供標準化的接口,可以減少 Host 端軟件的複雜度,讓 Host 端專注於上層業務,省去對 Flash 進行特殊的處理。
eMMC、SD Card、UFS、U 盤等產品是屬於 Managed Flash 這一類。

DDR3內存條和eMMC存儲器區別:

  1. 存儲性質不同;
  2. 存儲容量不同;
  3. 運行速度不同;
  4. 用途不同。

具體區別如下:

1、存儲性質不同:eMMC是非易失性存儲器,不論在通電或斷電狀態下,數據都是可以存儲的,而DDR3內存是易失性存儲器,斷電同時,數據即丟失。

2、存儲容量不同:eMMC的存儲容量要比DDR3內存大3-4倍,常見有32G,而DDR3內存容量相對較小,常見有2-8G。
3、運行速度不同:DDR3內存運行速度要比eMMC快得多。

4、用途不同:eMMC主要用於數據存儲,而DDR3內存主要用於數據運算。eMMC 主要是針對手機或平板電腦等產品的內嵌式存儲器標準規格。用來提供標準接口並管理閃存。在手機或平板電腦中,DDR3內存可稱之爲運行內存,而eMMC可稱之爲存儲內存。
5. eMMC內部可以很好對MLC/TLC進行管理,有ECC除錯機制,區塊管理,平均默寫存儲區塊技術,低功耗管理等。
6. eMMC = NAND flash + 控制器 + 標準封裝接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章