这是我见过最好的Flash知识介绍了!
一、Flash Memory簡介
Flash Memory 是一種非易失性的存儲器。在嵌入式系統中通常用于存放系統、應用和數據等。在 PC 系統中,則主要用在固態硬盤以及主板 BIOS 中。
另外,絕大部分的 U 盤、SDCard 等移動存儲設備也都是使用 Flash Memory 作為存儲介質。
二、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 存儲單元的電荷,如果長期沒有使用,會發生電荷泄漏,導致數據錯誤。不過這個時間比較長,一般十年左右。此種異常是非永久性的,重新擦除可以恢復。
三、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。)
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 連接。
鑒于 NOR Flash 擦寫速度慢,成本高等特性,NOR Flash 主要應用于小容量、內容更新少的場景,例如 PC 主板 BIOS、路由器系統存儲等。
2、NAND Flash
NAND Flash 需要通過專門的 NFI(NAND Flash Interface)與 Host 端進行通信,如下圖所示:
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 個比特信息。
NAND Flash 的單個存儲單元存儲的比特位越多,讀寫性能會越差,壽命也越短,但是成本會更低。Table 1 中,給出了特定工藝和技術水平下的成本和壽命數據。
相比于 NOR Flash,NAND Flash 寫入性能好,大容量下成本低。目前,絕大部分手機和平板等移動設備中所使用的 eMMC 內部的 Flash Memory 都屬于 NAND Flash。PC 中的固態硬盤中也是使用 NAND Flash。
四、ROW?flash 和 managed?flash
由于 Flash Memory 存在按塊擦寫、擦寫次數的限制、讀寫干擾、電荷泄露等的局限,為了最大程度的發揮 Flash Memory 的價值,通常需要有一個特殊的軟件層次,實現壞塊管理、擦寫均衡、ECC、垃圾回收等的功能,這一個軟件層次稱為 FTL(Flash Translation Layer)。
在具體實現中,根據 FTL 所在的位置的不同,可以把 Flash Memory 分為 Raw Flash 和 Managed Flash 兩類。
1、Raw Flash
在此類應用中,在 Host 端通常有專門的 FTL 或者 Flash 文件系統來實現壞塊管理、擦寫均衡等的功能。Host 端的軟件復雜度較高,但是整體方案的成本較低,常用于價格敏感的嵌入式產品中。
通常我們所說的 NOR Flash 和 NAND Flash 都屬于這類型。
2、Managed Flash
Managed Flash 在其內部集成了 Flash Controller,用于完成擦寫均衡、壞塊管理、ECC校驗等功能。相比于直接將 Flash 接入到 Host 端,Managed Flash 屏蔽了 Flash 的物理特性,對 Host 提供標準化的接口,可以減少 Host 端軟件的復雜度,讓 Host 端專注于上層業務,省去對 Flash 進行特殊的處理。
END
來源:面包板社區
版權歸原作者所有,如有侵權,請聯系刪除。
IT技術分享社區
個人博客網站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識
總結
以上是生活随笔為你收集整理的这是我见过最好的Flash知识介绍了!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Arduino Uno 实验3——蜂鸣器
- 下一篇: 实现点击按钮复制文本(Clipboard