在 嵌入式系統開(kāi)發(fā)領(lǐng)域,存儲器作為信息交互的核心載體,其技術(shù)特性直接影響著(zhù)系統性能與穩定性。然而,有些人在面對 Linux、安卓等復雜操作系統環(huán)境時(shí),理解其存儲機制尚存局限,為突破這些技術(shù)瓶頸,飛凌嵌入式希望通過(guò)對存儲相關(guān)知識的分享,助力大家構建完整的存儲知識體系框架。 首先,嵌入式場(chǎng)景中常用來(lái)存儲數據的介質(zhì)分為兩類(lèi): Managed NAND,以eMMC(embedded Multi-Media Card)TF卡、SD卡為主內部帶有存儲管理控制器。 Raw NAND,以NAND為主的未帶有存儲管理功能,只包含簡(jiǎn)單IO邏輯控制。
微信圖片_2025-04-25_094200_602.jpg
上圖描述了NAND存儲和eMMC存儲的關(guān)系,NAND Controller代指核心板的CPU,NAND指實(shí)際參與存儲的區域,由此看出實(shí)際上eMMC和NAND的區別在于存儲管理控制是在eMMC內部還是核心板的 CPU。存儲管理主要包括功能:壞塊管理、ECC校驗、磨損均衡、數據保持和地址管理及映射等。
01存儲的相關(guān)概念存儲類(lèi)型分為SLC、MLC、TLC、QLC。嵌入式常用類(lèi)型低存儲容量一般為SLC和MLC,高存儲容量一般是TLC。
SLC (Single-Level Cell) 速度快,壽命長(cháng),價(jià)格貴,理論擦寫(xiě)次數在10萬(wàn)次左右。
MLC (Multi-Level Cell) 速度較快,壽命較長(cháng)、價(jià)格較貴,理論擦寫(xiě)次數在3000-5000次。
TLC (Trinary-Level Cell) 速度較慢,壽命較短、價(jià)格最便宜,理論擦寫(xiě)次數在1000-3000次。
QLC (Quad-Level Cell) 容量可以做的更大,成本上更低,劣勢就是P/E壽命更短。
pSLC (pseudo SLC) 以 MLC的FLASH為基礎,但在每個(gè)Cell中只存1 bit而不是2 bit數據。由于在同一個(gè)Cell中跟SLC一樣只存儲一個(gè)bit,但又不是真的 SLC,所以稱(chēng)之pSLC。依上述原理,若將MLC用做pSLC,存儲空間將減半,壽命通?梢蕴嵘3萬(wàn)次左右。
P/E (Program/Erase Count) :擦寫(xiě)壽命。耐用性?xún)蓚(gè)指標之一。
TBW (Total Bytes Written) :總寫(xiě)入量。是廠(chǎng)商用以界定質(zhì)保期的數值,即超過(guò)了這個(gè)數值的寫(xiě)入量之后,廠(chǎng)商就不再給予質(zhì)保服務(wù)。耐用性?xún)蓚(gè)指標之一。
FW (Firmware) :由于eMMC內部控制器屬于軟件編程控制器,會(huì )需要固件,eMMC在存儲廠(chǎng)家出廠(chǎng)前已經(jīng)燒錄對應固件。
WA (Write amplification) :寫(xiě)放大。表示實(shí)際寫(xiě)入的物理數據量是寫(xiě)入數據量的多少倍,即:閃存寫(xiě)入的數據量÷主控寫(xiě)入的數據量 = 寫(xiě)放大。
GC(Garbage Collection) :垃圾回收。NAND介質(zhì)的存儲寫(xiě)入是按照頁(yè)(Page)寫(xiě)入,是按照塊(Block)擦除。
02eMMC和NAND的差異(1)eMMC與NAND對比
-
微信圖片_2025-04-25_094212_274.png
(2) eMMC的相關(guān)特點(diǎn)
(3)NAND的相關(guān)特點(diǎn)系統的驅動(dòng)主要是由 SoC廠(chǎng)家及系統上游邏輯決定,針對不同的NAND存儲介質(zhì)無(wú)法發(fā)揮出最大優(yōu)勢,或者存在驅動(dòng)邏輯兼容性問(wèn)題。
NAND容易出現位翻轉、壞塊等情況,相比eMMC內部管理,CPU管理需要占用較大系統開(kāi)銷(xiāo)用來(lái)維護存儲內容。
接口標準采用ONFI接口協(xié)議,但是不同廠(chǎng)家的NAND的頁(yè)、OOB區及塊大小等配置存在差異,如果物料停產(chǎn)需要換型會(huì )存在鏡像不兼容風(fēng)險。
NAND的布局控制是由CPU管理,對應的分區管理和邏輯定制會(huì )有很大的靈活性,根據實(shí)際應用場(chǎng)景制定不同的管理策略。
NAND單位存儲壽命較長(cháng)。
綜上,產(chǎn)品存儲選型建議使用帶有管理功能的eMMC。
03存儲使用建議[color=rgba(0, 0, 0, 0.9)]eMMC:建議預留25%空間,避免頻繁觸發(fā)GC。
由于存儲的最小寫(xiě)入單元是Page,最小的擦除單元是Block。以16K page舉例,如果單次寫(xiě)入小于 一個(gè)Page的數據,會(huì )造成寫(xiě)放大。如果單次寫(xiě)入數據遠遠小于Page的大小,寫(xiě)放大會(huì )很?chē)乐。最終會(huì )導致壽命大大縮短。建議對小數據先通過(guò)DDR內存進(jìn)行緩沖,緩沖一定數據再組合寫(xiě)入。
使用中如果出現異常斷電,定期需要對文件系統使用工具掃描修復,避免由于異常斷電數據未及時(shí) 保存導致文件系統異常。如果是頻繁異常掉電場(chǎng)景,可以增加硬件加掉電保護措施,用來(lái)保證系統穩定性。
產(chǎn)品設計初期,需要結合實(shí)際應用場(chǎng)景存儲數據的頻率,為保證產(chǎn)品壽命要求,評估選擇合適的存儲類(lèi)型和容量。
04飛凌嵌入式賦能(1)針對eMMC,根據對壽命及健康信息讀取分析,讓?xiě)谜莆崭娴拇鎯π畔,并作出合理的調整。
(2)針對NAND,根據增加手段統計實(shí)際NAND的擦寫(xiě)、搬移、標記等信息,給出應用IO操作改善建議。
(3)針對所有類(lèi)型存儲,根據對終端設備不同使用場(chǎng)景特點(diǎn)采集分析,評估出更適合場(chǎng)景的應用編寫(xiě)參考。
- 終端實(shí)際應用場(chǎng)景主要集中在:日志循環(huán)存儲、應用關(guān)鍵數據參數存儲及緩沖數據。
- 日志循環(huán)存儲特點(diǎn):循環(huán)擦寫(xiě),寫(xiě)入頻繁,讀取不頻繁。和文件系統同時(shí)存在,會(huì )出現寫(xiě)頻繁 和只讀混放數據,會(huì )影響整體的穩定性。舉例:大部分eMMC的損耗平衡特性是全盤(pán)范圍,軟件上的文件系統分區未實(shí)現想要的數據隔離效果,這個(gè)其實(shí)可以在初期評估階段解決。
- 關(guān)鍵數據特點(diǎn):小數據量狀態(tài)信息,比較重要,信息量不大。
- 緩沖數據特點(diǎn):順序寫(xiě)入,整體擦除。
實(shí)際軟件開(kāi)發(fā)過(guò)程中,根據如上數據特點(diǎn),為保證產(chǎn)品穩定性在如下3個(gè)階段給出優(yōu)化方案:
產(chǎn)品開(kāi)發(fā)完成前做實(shí)際存儲的優(yōu)化。產(chǎn)品的樣機測試階段需要對系統實(shí)際讀寫(xiě)頻次、大小做接 口數據統計分析,對存儲做數據穩定性分析(例:NAND存儲變位及壞塊分析)。通過(guò)分析給 出讀寫(xiě)數據單元大小優(yōu)化建議、連續/隨機讀寫(xiě)優(yōu)化建議。
產(chǎn)品部署前做最終的預估壽命評估。結合最終優(yōu)化效果給出實(shí)際應用中的一個(gè)壽命預估。
除上述優(yōu)化策略外,不同eMMC、NAND廠(chǎng)家在滿(mǎn)足接口協(xié)議標準前提下提供了不同的優(yōu)化特性,部分優(yōu)化特性需要結合操作系統修改才能發(fā)揮出更好的效果。
05總 結存儲穩定性直接關(guān)乎到最終產(chǎn)品的穩定性,本文圍繞eMMC和NAND的特性做了對比介紹,目的是幫助研發(fā)工程師在實(shí)際開(kāi)發(fā)產(chǎn)品過(guò)程中更簡(jiǎn)單、更高效。
|