• 沒有找到結果。

CASE STUDY: Integrity of Buffer

在比較高階的 file system 中,對於儲存裝置會利用 journal 或 log 的方式做保 護,而重要的資料也會緊跟著 flush cache 的命令。但是有些存取儲存裝置的系統 並不會有這一類的保護機制,像是 embedded file system。因此資料若存於儲存 裝置的 buffer cache 中,並寫以 out-of-order 的方式寫入,勢必會有一些安全性上 的疑慮,更有可能導致使用此儲存裝置的系統損壞。這一章要針對 write buffer 對寫入資料安全性的影響做討論。

在 3.3 Gating Buffer 中的方法,有可能會讓比較後面的 request 的部分資料優 先寫入快閃記憶體中,而這樣不同 request 交錯寫入的過程若遇到斷電,有可能 會出現 out-of-order 寫入而造成安全性上的疑慮。在此考慮讓資料以 in-order 的 方式寫入,也就是說不同 request 只能同時寫入,不能提早寫入。

(a) Without Buffer

2

(b) Gating Buffer

2

(c) Integrity of Buffer 圖表 28: Strategy of buffer

圖表 28 為四個通道下不同緩衝區管理方法的比較圖,格子內的數字為 request 的編號,圖表 28 (a)為沒有緩衝區的情況下寫入的狀況,圖表 28 (b)為原 本的 Gating Buffer,而圖表 28 (c)為 integrity 的方法。可以清楚的看到圖表 28 (c) 中因為 request 2 與 request 1 有重複使用到通道 1,造成無法平行寫入,而 request 3 就無法遞補到閒置的通道 3 之中。因此通道數量若為 N,則在寫入 N 個 page 之間,若有重複使用到同一個通道的情況就會讓平行度降低。

以下為獨立通道搭配 Cycle Stealing 並使用 Random trace 在 MLC 的快閃記憶 體下,不同緩衝區大小及不同通道數量的比較。緩衝區的管理將以 page 為單位 搭配簡單的 FIFO 來運作,並考慮 in-order 的寫入。縱軸使用寫入的次數(write cycles)來做比較。

35

0 2000 4000 6000 8000 10000

1ch 2ch 4ch 8ch

Time (s)

Channels

Gating Buffer with Integrity

0K 16K 32K 64K 128K 256K

圖表 29: Gating Buffer with Integrity

圖表 29 為 Integrity 的實驗結果,可以看到在四個通道下,緩衝區在 16KB 的時候有大幅度的改善,這是因為緩衝區的空間剛好足夠平均非配給每一個通道 一個 page size 的空間,而達到收集 request 的效果。而緩衝區大小大於 32KB 之 後就沒有改善的效果,這是因為緩衝區裡面的其他 request 受到 in-order 的限制,

並無法超前寫入,所以加大緩衝區空間雖然可以留住更多 request 但是並不能超 前填補空閒的通道,因此留住更多 request 並無增加平行度的效果。同理,兩個 通道與八個通道也在超過 16KB 與 64KB 之後就沒有改善的效果。

0 1000 2000 3000 4000 5000

0K 16K 32K 64K 128K 256K

Time (s)

Buffer size

Random

Intergrity Out-of-order

圖表 30: Compare with Integrity

36

圖表 30 中的兩條線為四個通道下有無 Integrity 的比較,可以清楚的看到在 16KB 的時候兩種方法都可以表現出收集 request 的效果,而加大緩衝區空間之 後,Integrity 的方法無法有效利用增加的緩衝區來收集後面的 request。這主要是 因為 Integrity 的方法中,相鄰的 request 在通道的使用上會有重疊的情況而無法 同時寫入,此時剩餘空閒的通道也無法由後面的 request 來遞補。

Integrity 的方法讓 request 以 in-order 的方式寫入,優點是增加安全性的考 量,這是一種設計上的選擇。缺點是會犧牲掉一些 Gating Buffer 的效果。

37

相關文件