Flash 的核心技術差異集中在 NOR 與 NAND 兩大類型上,兩者的存儲單元結(jié)構、讀寫擦機制、性能指標截然不同,決定了它們在嵌入式系統(tǒng)中的 “分工”——NOR 是 “程序存儲器”,NAND 是 “數(shù)據(jù)存儲器”。理解兩者的技術細節(jié),是嵌入式系統(tǒng)存儲選型的關鍵。
(一)NOR Flash:為 “程序執(zhí)行” 而生的架構
NOR Flash 由英特爾在 1988 年推出,其名稱源于存儲單元的 “或非”(NOR)邏輯結(jié)構。從存儲單元來看,NOR Flash 的每個浮柵 MOS 管直接連接到位線與字線,形成 “并行訪問” 結(jié)構 —— 每個存儲單元可獨立被選中,支持 “隨機讀取”(直接讀取任意地址的指令),這與 MCU 執(zhí)行程序的需求高度契合:MCU 運行時,需要從存儲器中隨機讀取分散的指令(如跳轉(zhuǎn)指令、分支指令),NOR Flash 的隨機讀取速度可達幾十納秒(與 SRAM 接近),能夠滿足程序?qū)崟r執(zhí)行的需求。
在讀寫擦機制上,NOR Flash 的特點是 “讀快、寫慢、擦除慢”:讀取時,通過字線施加電壓,檢測位線電流(浮柵有電子則電流小,代表 1;無電子則電流大,代表 0),速度快且無需額外處理;寫入時,需先將目標單元擦除為 1(通過高電壓釋放浮柵電子),再寫入 0(注入電子),且寫入必須按 “頁”(通常 256B-4KB)進行,單頁寫入時間約 10-100 微秒;擦除則按 “塊”(通常 64KB-512KB)進行,單塊擦除時間約 1-10 毫秒。這種 “先擦后寫” 的機制源于浮柵管的特性 —— 無法直接將 1 改為 0,必須先擦除(恢復 1)再寫入(變?yōu)?span> 0)。
NOR Flash 的核心優(yōu)勢是隨機讀取性能優(yōu)異、可靠性高、支持 XIP(Execute In Place,片上執(zhí)行):由于隨機讀取速度快,MCU 可直接在 NOR Flash 中執(zhí)行程序,無需將程序加載到 RAM 中,大幅節(jié)省了 RAM 資源(尤其適合 RAM 容量有限的低端 MCU)。此外,NOR Flash 的位翻轉(zhuǎn)率極低(數(shù)據(jù)錯誤率約 10^-15),無需復雜的糾錯機制,可靠性高,適合工業(yè)控制、汽車電子等對穩(wěn)定性要求嚴苛的場景。但其局限性也很明顯:存儲密度低于 NAND Flash(相同芯片面積下,容量僅為 NAND 的 1/3-1/5),成本更高,且順序?qū)懭胨俣嚷?,不適合大容量數(shù)據(jù)存儲。
(二)NAND Flash:為 “大容量數(shù)據(jù)” 優(yōu)化的設計
NAND Flash 由東芝在 1989 年推出,其名稱源于存儲單元的 “與非”(NAND)邏輯結(jié)構。與 NOR Flash 的 “并行訪問” 不同,NAND Flash 的存儲單元采用 “串聯(lián)結(jié)構”—— 多個浮柵 MOS 管串聯(lián)在字線與位線之間,形成 “頁”(通常 4KB-16KB),多個頁組成 “塊”(通常 128KB-2MB),多個塊組成 “平面”,甚至多個平面組成 “芯片”。這種串聯(lián)結(jié)構大幅減少了位線與字線的數(shù)量,單個存儲單元占用面積僅為 NOR Flash 的 1/5-1/10,存儲密度極高,成本僅為 NOR Flash 的 1/3 左右。
NAND Flash 的讀寫擦機制圍繞 “順序操作” 優(yōu)化,特點是 “順序讀寫快、隨機讀取慢、擦除快”:讀取時,需先激活目標塊與頁,通過 “頁緩沖器” 讀取數(shù)據(jù),順序讀取速度可達 100MB/s 以上(遠超 NOR Flash),但隨機讀取速度慢(需幾百納秒到幾微秒),因為每次隨機讀取都需重新激活塊與頁,無法像 NOR 那樣直接訪問任意地址;寫入時,按 “頁” 進行,單頁寫入時間約 1-10 微秒(快于 NOR Flash),且支持 “連續(xù)頁寫入”,順序?qū)懭胨俣瓤蛇_ 50MB/s 以上;擦除按 “塊” 進行,單塊擦除時間約 1-5 毫秒(與 NOR Flash 相當,但塊容量更大,單位容量擦除效率更高)。
NAND Flash 的核心優(yōu)勢是存儲密度高、成本低、順序讀寫性能優(yōu)異,適合存儲大容量數(shù)據(jù),如物聯(lián)網(wǎng)傳感器的歷史監(jiān)測數(shù)據(jù)、汽車的駕駛?cè)罩?、消費電子的多媒體文件(圖片、音頻)。但它也存在兩個關鍵局限:一是不支持 XIP,由于隨機讀取速度慢,無法直接在 NAND 中執(zhí)行程序,必須先將程序加載到 RAM 中,因此僅能作為 “數(shù)據(jù)存儲器”;二是可靠性較低,由于存儲單元密度高,氧化層更薄,容易出現(xiàn)位翻轉(zhuǎn)(數(shù)據(jù)錯誤率約 10^-6),必須配合 ECC(Error Correction Code,糾錯碼)技術(如 BCH、LDPC 碼)進行數(shù)據(jù)糾錯,同時需要 “壞塊管理” 機制 ——NAND Flash 出廠時可能存在 “壞塊”(無法正常擦寫的塊),使用過程中也會因磨損產(chǎn)生新壞塊,需通過軟件標記壞塊并跳過,避免數(shù)據(jù)寫入錯誤。
(三)嵌入式 Flash:MCU 集成的 “微型存儲”
除了獨立的 NOR/NAND Flash 芯片,嵌入式系統(tǒng)中還廣泛使用 “集成式 Flash”—— 將 Flash 存儲器與 MCU 核心、外設集成在同一芯片上,形成 “單芯片解決方案”,即我們常說的 “帶 Flash 的 MCU”(如 STM32 系列、PIC 系列)。這類嵌入式 Flash 本質(zhì)上是 “簡化版 NOR Flash”,因為 MCU 需要直接在 Flash 中執(zhí)行程序(支持 XIP),且程序容量通常不大(從幾 KB 到幾 MB),無需 NAND 的大容量特性。
嵌入式 Flash 的技術優(yōu)化聚焦于 “低功耗” 與 “小體積”:針對 MCU 的電池供電場景(如智能手環(huán)、無線傳感器),嵌入式 Flash 支持 “深度休眠模式”,休眠時僅保留數(shù)據(jù),不消耗功耗;同時,采用 “單電壓供電”(如 3.3V),無需額外的高壓擦寫電路,簡化了 MCU 的電源設計。此外,嵌入式 Flash 的擦寫單元更小(塊容量通常為 1KB-64KB),適配 MCU 的小容量程序修改需求(如固件升級時僅擦寫修改的代碼塊),擦寫壽命通常為 1 萬 - 10 萬次,數(shù)據(jù)保持力可達 10-20 年,完全滿足嵌入式系統(tǒng)的程序存儲需求。





