在傳統使用 NOR Flash 的系統中,工程師通常習慣“隨寫隨存”:寫入數據粒度小,可以隨機寫入,不需要復雜的緩存或寫入管理機制。不過隨著使用場景發生轉變,NOR Flash容量小,單位容量成本高,寫入速度慢等成為瓶頸,很多工程師開始轉向使用CS SD NAND這種NAND Flash產品. 在使用NAND過程中時如果仍然沿用 NOR 的寫法,就容易遇到兩個問題:
1?? 壽命容易折損
2?? 寫入性能不穩定,出現延遲變慢
這些問題背后的根本原因就是:NAND Flash 不同于 NOR Flash,必須配合緩存(Cache/Buffer)來優化寫入策略。
一、根本區別:寫入粒度與擦除粒度完全不同
| 項目 | NOR Flash | NAND Flash(SD NAND) |
| 寫入最小粒度 | Byte/Word 級 | Page(頁)級,通常 2KB~16KB |
| 擦除粒度 | Sector(扇區,約4KB) | Block(塊),通常包含 64~128 個 Page |
| 壞塊管理 | 一般不需要 | 芯片內部已自帶 |
| 寫入策略 | 可隨機寫入 | 建議先緩存,再合并寫入 |
| 是否需要管理算法 | 通常不需要 | 芯片內部已有FTL(Flash Translation Layer) |
→ 重點:NAND 的最小寫入單位是 Page(NOR是Byte),而擦除單位是 Block,這決定了它必須配合緩存使用。
二、不用緩存的后果:寫入放大(Write Amplification)
假設主機只寫入 200 字節數據(Bytes),這小于 Page 大小,例如SD NAND內部存儲單元的物理 page 為 4K。那么 SD NAND 必須執行:
1.把原始 Page 內容讀取到 RAM 中
2.在 RAM 中修改那 200 字節
3.將整個 Page(4KB)重新寫回
4.如果要寫回的Block 已寫滿,還需要觸發 Block 搬移與擦除(擦除一個新的Block,
然后將本次修改后的page數據和舊Block中有效page一個一個的寫入新Block中!)(即 Block Copy / Block Merge)
于是就出現了“寫入放大(Write Amplification)”:
主機寫 200 Bytes 數據,NAND Flash 實際卻寫了 4KB 甚至更多。
WA(寫放大倍數)越高 → Flash 壽命消耗越快 → 性能越不穩定。
緩存機制的意義,就是把零碎數據先暫存,再“合并寫入”,減少寫入放大。
而NOR Flash由于寫入最小顆粒度是Byte,直接寫入200字節的數據就好,寫入放大的問題比較輕微。只是寫入耗時 相比 做了緩存的NAND會多很多。
三、寫入放大的影響
1?? 壽命加速折損(P/E Cycle 快速消耗)
NAND Flash 的壽命主要取決于擦寫次數(P/E Cycle)。例如 SLC NAND 一般是 50K~100K 次,如果寫入放大嚴重,實際擦寫次數會遠高于用戶真實寫入次數:
示例:
主機實際寫入 1GB 數據,但 WA=4,
Flash 實際寫入 4GB 數據,相當于壽命減少到 原來的 1/4。
我們在客戶端碰到過一個極端例子,客戶做數據記錄設備,寫入頻次非常高也不做緩存,每次只往SD NAND寫入幾個字節,幾個月以后發現產品壽命出現折損。客戶按照自己的理論值推算,總寫入量只有20~30GB,遠沒有達到產品的總寫入量,我們預估這種場景下的WA至少是100~上千,因此壽命折損相當厲害
2?? 響應延遲和寫入速度變慢
當寫入放大導致頻繁的后臺操作(GC 垃圾回收、Block Merge、Wear-Leveling 磨損均衡),會導致:
寫入性能不穩定
存在明顯的延遲(幾百毫秒甚至更長)
有時主機以為“Flash 卡住了”
這些現象并不是 Flash 性能差,而是沒有緩存 + 沒有合理寫入策略導致的。
具體在使用時會碰到:剛用的時候好好的,用一段時間感覺產品變卡了,響應變慢了也是這個原因。剛開始使用時flash里面都是空白,不太會觸發以上操作,但滿盤寫入幾次之后就開始觸發頻繁的后臺操作,響應明顯變慢。
四、加入緩存的好處:可控、可預測、可優化
| 是否使用緩存 | 寫入性能 | 壽命 | 響應速度 | 是否便于調試 |
| 未使用 | 不穩定 | 快速下降 | 波動大 | 難定位問題 |
| 使用緩存 | 穩定 | 可評估 | 可預測 | 可持續優化 |
? 緩存不僅提升速度,更重要的是讓系統行為變得“可控”和“可維護”。
? 對產品化非常重要。
五、SD NAND 的角色:不僅是 NAND,更是“簡化控制器方案”

創世CS的 SD NAND已經內置了基礎的 FTL、壞塊管理與控制器邏輯,相比裸 NAND 更容易使用。但即便如此仍然建議:建立寫入緩存(例如 4KB/8KB)
簡言之:SD NAND 已經幫工程師做了一層管理,但它仍然不是 NOR,不建議 “隨寫隨存”。
特別是針對數據記錄和采集設備,醫療記錄設備。都存在ms級別的數據采集,單次數據采集量都非常小(幾個~幾百字節)這種場景,一定要先做緩存再寫入!
六、總結
從 NOR 轉向 NAND(包含所有使用NAND Flash的產品,比如SD NAND, eMMC, SSD等) 時,為什么必須使用緩存?
? NAND 的寫入必須以 Page 為單位、擦除必須以 Block 為單位
? 如果不做緩存,就會出現寫入放大(Write Amplification)
? 寫入放大會導致:
壽命快速折損
寫入性能/響應速度不穩定
系統行為不可預測
采用緩存機制后,既能發揮NAND Flash容量大,價格便宜,寫入速度快的優勢,又得到一個可預測、可調優、可維護,使用壽命長的系統。
親愛的卡友們,歡迎光臨雷龍官網,如果看完文章之后還是有疑惑或不懂的地方,
審核編輯 黃宇
-
SD NAND
+關注
關注
0文章
112瀏覽量
1826
發布評論請先 登錄
SD NAND 為何不能存啟動代碼,SPI NAND 與 NOR Flash 卻可以 —— 接口、傳輸、啟動機制全對比
CS創世 SD NAND測試報告
從NOR Flash到NAND Flash和SD NAND,從底層結構到應用差異
解鎖SD NAND、TF卡、SD卡的應用密碼
一文秒懂XTX SD NAND
解鎖存儲密碼:SD NAND、TF卡、SD卡的應用全景
CS創世SD NAND在北京君正平臺和瑞芯微RK平臺的應用
CS創世SD NAND在北京君正平臺和瑞芯微RK平臺的應用
CS SD NAND 在AI領域的應用和注意事項
【嵌入式開發】SD卡—雷龍 SD NAND
什么是Flash閃存以及STM32使用NAND Flash
高性能緩存設計:如何解決緩存偽共享問題
MCU緩存設計
從NOR轉向使用CS SD NAND:為什么必須加入緩存(Cache)機制?
評論