SPI FLASH儲存設計一

2021-07-07 09:41:13 字數 1481 閱讀 9922

spi flash的優點就是相對

eeprom

的儲存容量更大,相對於大容量的

sd卡和

u盤,**有優勢,但其缺點是每次寫入的資料空間都要是沒有寫過的,否則可能都要去擦除一次扇區,在去寫入資料,在擦除扇區之前還要對這個扇區之前的資料進行儲存,擦除完成後,再將老資料和新資料一起寫入。好的器件擦個十幾萬次可能都沒問題,不好的器件可能幾萬次都扛不住。

如何解決這樣的缺點?針對不同的系統可能有不同的方案。因為最近在做spi flash

的資料儲存和查詢,所以想到了一些方案,寫出來供以後再深究。

1.根據該系統能提供的最長歷史記錄的時間來設計。

假設我的系統最長能提供3

個月的歷史記錄查詢,那麼我只要估計出每個月我的系統,最大的歷史記錄條數是多少?一條歷史記錄的位元組數是多少?這裡假設每個月我的系統最大的歷史記錄條數是

1000

條,一條歷史記錄的位元組數是

40個位元組,那麼乙個扇區

4096/40

,這樣乙個月的記錄大概需要十個扇區,這樣

3個月的記錄加上乙個輪詢的緩衝就需要

40個扇區來完成這樣的系統設計。

40*4094/1024=160kbyte,

這樣的容量的

spifalsh

是很小的,所以你可以提供半年的歷史記錄查詢都可以。優點:每個扇區的擦除次數可能

3個月才有一次,查詢資料快,不需要考慮資料的

copy

工作。但是這樣設計系統有自己的限制:

1)受制於系統的rtc

,倘若系統沒有

rtc,或者

rtc故障,會直接影響資料的可靠和實時性。

2)每個月我的系統,最大的歷史記錄條數是多少?這個問題可能不是由我確定的,而是使用者確定的,你不能限制使用者。

3)如果最長要提供一年的歷史記錄,或者一條歷史記錄就有100byte,

你會發現這樣的設計也很吃

flah

的。2.根據該系統最多能提供多少條歷史記錄來設計。

假設我能提供10000

條記錄,每條的記錄資訊佔

80個位元組,則我大約需要

197個扇區。首先看優點:不受限於

rtc,不受限於使用者每個月的操作的次數。缺點:查詢資料的範圍變大,響應可能變慢,

10000

條資料一旦寫完,回頭再寫時,每個扇區的老資料是儲存還是不儲存?不儲存可能會引起使用者不滿,儲存,勢必要不斷的擦除扇區,在寫入資料。這裡一定要注意扇區的擦除次數是有限的,要是產保3年,

flash

能不能扛的了,是要關注的首要問題。

處理上面的問題,方法可能有很多?最長見的可能是不對舊資料儲存,乙個扇區一旦再被寫,直接先扇區擦除(如果資料很久遠也到無所謂)。第二種:劃出2

個197

個扇區,或者更多,在第乙個

197個扇區寫滿

8萬次的時候(這裡自己設計到底寫完多少次?)啟用第二個

197個扇區去儲存資料,這樣對資料的查詢變得更為複雜......

EventStore檔案儲存設計

enode是乙個cqrs event sourcing架構的開發框架,event sourcing需要持久化事件,事件可以持久化在db,但是db由於面向的是crud場景,是針對資料會不斷修改或刪除的場景,所以內部實現會比較複雜,效能也相對比較低。而event store實際上對資料只有新增和查詢的需...

雲儲存設計需求

在網上看到乙個pdf,題目叫 cloud storage solution technical requirement 講述了雲儲存的設計需求,個人覺得寫的還不錯,於是為了鍛鍊自己的e文,同時又方便其他童鞋,將它翻譯了下。翻譯不當之處還請見諒。由於我所在的公司也做雲儲存 順便推廣下哈 我將它的需求和...

單機儲存原理與設計

1 單機儲存引擎 儲存引擎是儲存系統的發動機,決定了儲存系統能夠提供的功能和效能。儲存系統提供功能 create update read delete curd 儲存引擎型別有 雜湊儲存引擎 b樹儲存引擎 lsm儲存引擎 2 雜湊儲存引擎 基於雜湊表結構的鍵值儲存系統,陣列 鍊錶的方式實現,支援持c...