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

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