當隱性板友很久,在此板受益良多,碰巧對這個東西有點熟,
來獻醜一下,在盡量避免涉及專業術語的前提下,說明為啥讀取速度會不穩定...

對於大部分的使用者來說,Flash Disk是種有點像是硬碟的東西。

不像硬碟,有穩定的讀取和寫入速度,
但卻不怕震動,也不需要任何的機械結構,
和硬碟相同的是,它們都可以在失去電源時保存資料。

然而,Flash Disk和硬碟在存取行為上,
有著一個很大很大的差別...
今天,你開啟了一份文件,做了修改,然後再回存。
對於硬碟來說,就是從某個地方讀了筆資料,在修改之後,存回硬碟同樣的地方。
但對於Flash Disk來說,卻是從某個A區域讀出資料,在修改後,
把A區域標為"Invalid"(可以想是:標記A區域"死"了),
然後將修改後的資料寫到另一個B區域。
也就是說,並非"回存"於同樣的地方。

這主要是因為,Flash的"寫入",
只能把某個bit由0變1,或是只能把某個bit由1變0。
以某個只能把bit由0變1的Flash為例,
當Flash要寫入資料時,
需要找到一塊全部都是0的區域,

再依照要寫入的資料內容,
把某些bits"寫"成1。

不過如同大家所知的,
Flash不是可以重複寫入嗎?
那些Invalid,"死"掉的區域怎麼辦?
直接把那塊區域清空,在寫回去,不是很簡單嗎?

這部分則牽涉到了Flash Disk的結構...

一塊Flash Memory,可以切分成數百個Blocks,
每個Block包含一定數量的Pages。
每個Page可以單獨被直行"寫入"的動作,
並可被標記成"Blank"(空白)、"Valid"或"Invalid"。
"Blank"代表可以被執行"寫入"的Page,
"Valid"代表存有有用資料的Page,
"Invalid"代表因為資料修改或刪除,已經沒用的Page。

一個新的隨身碟,所有的Page都是"Blank",
可以快速的不斷寫入。
但隨著長時間的使用,"Blank"的pages會愈來愈少,
"Invalid"的pages愈來愈多,

到最後根本沒有"Blank"的pages可用。

此時,便需要做Erase的動作。
Erase會把一個Block內所有的pages都做清乾淨,
讓這些pages都變回"Blank"的pages。
但是,要被Erase的Block,
裡面可能包含部分Pages是"Valid"的,
存有有用的資料,如果被清掉就沒了。
所以,一個要被Erase的Block,
必須先把所有包含的"Valid" pages寫到其他地方去,
才能做Erase。

想想看寫入時可能會發生的情形吧~
也許運氣很好,有很多"Blank"的Pages可寫,則可快速寫入...
也許所剩的"Blank" pages不夠,要做Block Erase,
如果恰巧有個Block包含的pages全部都是"Invalid"的,
那也很簡單,把該Block直接Erase,
然後得到一整個Block的"Blank" pages,來作寫入用;
不過如果運氣不太好,
要被Erase的Block有不少"Valid" pages,
則還要做pages搬移,也就是一連串的寫入動作,
才能開始Erase,Erase完成在正式執行要做的"寫入"...


從上面可發現...
Flash Disk的寫入時間,是非常非常不穩定的!
當然,要寫入哪個page,Erase時要選哪個Block,
都有一些演算法的技巧可以去加強,不過一般來說還是有很大的不穩定性。

至於為啥一次一定要Erase一個Block,
而不能只Erase一個page,
這和Flash Memory的整個結構以及控制訊號有關,
便不多作介紹了。

另外...
Flash的先天限制,不論是多麼新多麼好的技術,
都是適合讀取(有穩定速度)而不適合寫入。

如果你的資料是要不斷更新的,
像是寫程式,不斷的修改、存檔,
請在硬碟上執行吧~

每一次的Erase都是在減少Flash的壽命。
現在的存取壽命,都是以能"正確存取"作為評估。
但在仍能正確存取資料時,

漏電流,每次寫入所需要的電壓和打電壓的次數都會增高,
而和全新的Flash Disk有些效能和耗電量的差異...
(相信有人有些經驗... MP3用久了以後,續航力愈來愈差,
 原以為是電池老化,但換了新電池卻沒有太大改善,這就是Flash Gate的"老化")

而組電腦只用SSD也是種極端且不是很正確的做法。
SSD拿來作系統碟,大部分時間在讀取,對效能有正面效果沒錯。
但若因為某些應用程式(Ex: PhotoShop)或是用途,常有大量寫入的動作,
以Flash的特性實在不太合適。
當然,如果因環境因素,有時SSD也是不得已的唯一選擇...
或者... 某日SSD實在太過便宜,可以讓大家豪不皺眉頭的抽換,
那基於SSD的高效能,也是個合理的作法。

不過... 我會更期待M-RAM...

from ptt

創作者介紹

seekemlab

seekemlab 發表在 痞客邦 PIXNET 留言(8) 人氣()


留言列表 (8)

發表留言
  • 勝仔
  • Good

    我現在是將Ubuntu作業系統環境整個載入到usb隨身碟上,帶著到處跑。
    我只有開機、上網,寫寫部落格、郵件而已,這樣的作業模式,會影響到usb的壽命嗎?
    還有M-RAM是何種產品?
    謝謝!
  • 這...
  • usb目前你正常使用的狀況下,可能你用到死都不會壞(用詞有點誇張,不過真的很難壞),M-RAM這個東西目前來說並不主流(<-意思是1.買不到。2.銀彈要夠多)所以你不用考慮...
  • 阿丹
  • flash check

    寫的很詳細介紹flash 與硬碟的差別!! 那請教你,如果我是一次裝兩顆flash 或是像 ssd 產品,裝了16顆flash,我要如果要維修,要如何判定是那一顆flash NG , 前提是廠商沒提供測試用的TOOLS?
  • for flash check
  • 有點抱歉,這我就不清楚了,這篇文章是從ptt轉載來的,你可以前去問一下,或許會比較快
  • 阿丹
  • channel 與 nand flash 關係

    dear 大大 ,

    看到你如此精彩的解說,讓我著實了解了flash 的一些架構問題, 不過我還是有些不清楚的, 常 聽到所謂 的channel 數,是代表什麼用意呢,我看了flash (samsung)spec ,也沒有敘述??
    針對 channel 數,有什麼特別用意嗎?還請大大提供寶貴資料 感恩 !!
  • Monson
  • 不錯的解說

    這篇寫的很詳盡~不過應該也要把原作者的ID給PO上來會更好一點,不然容易引起誤會
  • necos
  • 板大,內容請借我轉載(我有附出處),如果有不妥,煩請告知,感謝!
  • 感謝 說真的我轉載的這篇文章出處也不知道要去哪裡找了

    seekemlab 於 2010/09/30 20:31 回覆

  • 阿豬
  • 感謝知識分享~很不錯喔!
找更多相關文章與討論