想聽matika碎碎唸嗎? 你來對地方了!

星期一, 1月 07, 2008

Wear levelling

What is Wear levelling?

From Wikipedia, the free encyclopedia

Wear levelling (also written wear leveling) is a technique for prolonging the service life of some kinds of erasable computer storage media, such as flash
memory. The term has also been used by Western Digital to describe their
hard disk preservation technique, but hard disks are not generally
wear-levelled devices.

http://en.wikipedia.org/wiki/Wear_levelling

對於SSD(Solid State Disk)而言, 不論採用的flash是SLC或是MLC都有一定的

寫入壽命,

在SSD普及的前提下, 採用MLC已是勢在必行的趨勢.

以SLC而言, 大約為1百萬次的寫入次數; MLC則為10萬次.
而MLC的成本大約為SLC的1/3

所以, 對一個以MLC製成的SSD, 我們已知每個block平均寫入次數達10萬次

時, 就有可能造成bad block, 對於存取頻繁的應用, 會是很大的問題.


因此, Wear Leveling開始受到重視, 因為它能盡量平均每個Block的寫入次數,
舉例來說..

如果有一個8G的SSD, 其中4G已寫入資料(System + User data), 其中寫入最

頻繁的區域應該是:系統暫存檔(OS及Browser cache)以及User data, 如果資

料都不移動,

可估計如下-


每分鐘寫入1次
每天使用SSD10小時, 一週工作5天
100,000(1*60*10*5) = 33周

這數字可能有點誇張, 但可大略估計33周後就有可能出現bad block.
問題是, 既然這是無法避免的, 那總有方法可以拉長這段時間吧?

Wear leveling大致有幾種方式-
1. YAFFS Data Structure
(保留部份Block,若部份Block毀損時可使用保留的Block取代)
請參考:http://esslab.tw/wiki/index.php/YAFFS

2. Dynamic/Static wear leveling
簡單的說就是把常用block跟不常用的block互調位置, 藉以平均
寫入次數.

2. RAM disk
(將系統Temp file及Browser cache指向DRAM虛擬的RAM disk)

3. ECC algorithm
BCH, bit addressing
Bose、Ray-Chaudhuri and Hocquenghem

Reed somloman
http://www.4i2i.com/reed_solomon_codes.htm