• 沒有找到結果。

根據前面章節所述,我們演算法要以快閃記憶卡來增進硬碟的效能,我 們必須要將硬碟將來要讀取的資料(硬碟讀取頻率較高的資料),預先搬進 快閃記憶體中。因此我們將會面臨兩個問題,首先我們必須預先知道那些 資料是電腦系統將來會讀取的,其次我們演算法必須決定何時才是將這些 資料搬進快閃記憶體的最好時機,因此我們設計取樣演算法(Sampling algorithm)來解決這兩個問題。在下面將分為兩個部份,存取行為分析 (feature extraction)及取樣頻率調整(sampling-frequency adjustmen) 討論。

3.2.1 存取行為之分析(feature extraction)

要決定哪些資料該預先被搬進快閃記憶體中是非常困難的,因為沒有人 能保證電腦系統在未來將會讀取哪些資料,即使是觀察過去的讀取資料來 預測未來讀取資料,因為電腦系統中含有快取記憶體,所以效果也不好;

另外是當我們預測到未來電腦系統可能會讀哪些資料時,我們該怎麼評估 這些資料時否值得被搬進快閃記憶體呢?,這些都是我們演算法必須先克服 這個困難。

該搬哪些資料進快閃記憶體中呢?我們的想法是,我們以Cylinder為基 本單位 1

1由於系統快取記憶體的影響,同一個 sector 短時間內被讀取的機會並不高,所以我們以 Cylinder

觀察硬碟的讀取行為(圖表 4),我們可以發現在同一個Hot period 當中,常被讀取的Cylinder群以及不常被讀取的Cylinder群會有一定程度 的落差。我們將所有Cylinder分為三類,第一類是常被讀取的Cylinder群 (Area A) , 第 二 類 是 過 渡 Cylinder 群 (Area B) 第 三 類 是 不 常 被 讀 取 的 Cylinder群(Area B);我們的做法是只將Area A部分的資料搬進快閃記憶 體中,Area B由於佔的數量並不太大,而Area C的部分因為被讀取的次數 也較少,我們也不做任何處理。要如何決定哪些Cylinder屬於Area A? 在 我們的演算法是以所有的Cylinders被讀取次數的標準差做為基準,因為標 準差可以代表相當程度的資料分散程度。

說明演算法要 解決的問題

我們的具體作法是,在每一次 Hot period 一開始時每隔一段時間去(間 隔時間如何決定,將在後面章節討論)搬一次資料,在重新取樣時,先統計 同一個 Hot period 開始至目前為止每個 Cylinder 被讀取的次數,然後根 據 被 讀 取 的 次 數 來 求 出 標 準 差 , 然 後 將 被 讀 取 的 次 數 超 過 標 準 差 的 Cylinders,作為我們預定搬進快閃記憶體中的 Cylinders,這些預定搬移 的 Cylinders 必須還要考慮 Threshing 的影響,才能決定我們真正要搬移 的 Cylinders。

理論上,在同一個 Hot period 之間,電腦系統通常做相類似的事情,

因此其對 Cylinders 的讀取行為會相類似,因此我們理論上可以以同一個 Hot period 內前面的讀取行為來代表整個 hot period 的讀取行為。依據我 們的取樣演算法,我們可以相當程度的預測到一個 hot period 內的讀取行 為,從而達到改進硬碟效能的目的,但是這樣作的同時,將會產生副作用 (Threshing),我們將在 3.4 節討論這個議題。

Area A

Cylinder index

Read requests

Area B

Area C

Mean value

standard deviation

圖表 4 Cylinders access status

3.2.2 取樣頻率調整(sampling-frequency adjustment)

作Cylinder搬移的另一個問題是,何時才是將我們預測的資料搬進快閃 記憶體的最佳時機? 由於在Hot period中每個cylinder被讀取的密集程度 並不一樣,因此有可能在不同的時間點會有不同Cylinders migration2

我們的作法是當我們要決定第 N 個 Hot period 時我們先觀察第 N-1、

N-2 個 Hot period,例如當我們在第 N-2 個 Hot period 時將取樣週期縮短,

發現第 N-1 個 Hot period 讀取的全部反應時間變少,我們會將第 N 個 Hot period 取樣週期繼續縮短,反之如果發現第 N-1 個 Hot period 讀取的全部 反應時間變長了,我們會將第 N 個 Hot period 的取樣週期增加,以此類推。

現象 產生,因此我們必需每隔一段時間就去重新統計一次目前狀況,將合適的 Cylinders搬進快閃記憶卡中。如果太早將資料搬進有可能會影響我們預測 資料的命中率,如果太晚將資料搬進快閃記憶體,又會變的不符效益。因 此如何決定時機也是我們取樣演算法的另一項挑戰。

要決定取樣週期並不容易,有兩點因素會影響我們決定取樣週期。第一 個決定的因素是 Cylinders 搬移的次數。當取樣週期越長,Cylinders 搬 移的次數也越少;取樣週期越短,Cylinders 搬移的次數也越多。而 Cylinders 搬移的次數越多也代表著效率越差,反之 Cylinders swap 次數 越少代表著效率越好。第二個因素則是讀取平均反應時間。當取樣週期越 短,偵測到 Cylinders migration 的機會越多,因此預測 Cylinders 越準,

因此讀取命中率也越高,效率也越好。反之效率也越差。因此由上述兩點 可知取樣週期的長短分別會影響平均反應時間以及 cylinder 搬移次數,當 取樣週期越短,會增加 Cylinder 搬移次數但會增加命中率,取樣週期越長 會減少 Cylinder 搬移次數但會減少命中率。如何去取得平衡是我們演算法 的重點。電腦系統每次讀取的全部平均反應時間,是 Cylinders 搬移時間 加上讀取平均反應時間。我們的想法是依據讀取的全部反應時間動態調整 取樣週期。

2 Cylinders migration:由於每個 Cylinder 被讀取的時間點不一樣,因此在同一個 hot period 中不同的時

間點去看 Cylinders 被讀取的排名可能會有所變動,我們稱這種變動現象為 Cylinders migration

另外由於快閃記憶體的 Endurance 問題,我們的須改成依據 Cylinder 的搬 移次數來動態調整取樣週期,調整方法如同上面所述。

理 論 上, 依 照我 們 的演 算 法, 我 們可 以 依據 最 佳效 率來動態決定 Cylinder 搬移到快閃記憶體的最佳時機。因為我們演算法可以在平均反應 時間以及 cylinder 搬移次數當中取得平衡點。但是我們的演算法會產生一 個副作用,因為依照最佳效率來動態決定取樣週期,有可能會為了效率造 成 Cylinder 搬移次數過多,導致快閃記憶體讀寫次數過多,而使的系統使 用期限縮短。如何解這個問題我們將在 3.4 節作討論

相關文件