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





