• 沒有找到結果。

以快閃記憶卡增加硬碟使用效率方案

N/A
N/A
Protected

Academic year: 2021

Share "以快閃記憶卡增加硬碟使用效率方案"

Copied!
62
0
0

加載中.... (立即查看全文)

全文

(1)

資訊學院 資訊學程

以快閃記憶卡增加硬碟使用效率方案

Performance Enhancement of Hard Drives

Using Flash-Memory Cards

研 究 生:張少農

指導教授:張立平 教授

(2)

快閃記憶卡

增加硬碟使用效率方案

Performance Enhancement of Hard Drives

Using Flash-Memory Cards

研 究 生:張少農 Student:Shao-Nung Chang 指導教授:張立平教授 Advisor:Dr. Li-Ping Chang

國 立 交 通 大 學

資訊學院 資訊學程

碩 士 論 文

A Thesis

Submitted to College of Computer Science National Chiao Tung University

in partial Fulfillment of the Requirements for the Degree of

Master of Science in

Computer Science December 2008

Hsinchu, Taiwan, Republic of China

(3)

以快閃記憶卡增加硬碟使用效率方案

研 究 生:張少農 指導教授:張立平教授 國立交通大學 資訊學院 資訊學程碩士班 摘 要 近年來隨著科技技術的日新月異,筆記型電腦的效能及電池續航力也隨 著提升。以 CPU 為例,1995 至今,CPU 時脈速度已從 100MHz 大幅增加至現在 的 3800MHz,整整快了 40 倍。而其他零組件如快取記憶體、顯示晶片,匯流 排頻寬…等等,也都有驚人的發展。但唯獨硬碟的發展非常緩慢。無論是在 耗電量或者是使用效率方面,從 1995 年代到現在,只成長 2 至 3 倍。 近幾年來,Flash 記憶體技術的成熟,在效率及耗電量,都較硬碟來得 更出色,而以往最令人詬病的價格,也隨技術的成熟大幅下降。另外在使用 壽命上重複讀取次數也有所提升,已經可以到達 100 萬次以上的重覆讀寫。 這些瓶頸被克服之後,Flash 的使用已經成為儲存裝置的明日之星。 因此本篇論文的目的是希望提供一個方法,利用 Flash 先天上的優勢, 與硬碟互相結合。使得硬碟在耗電量或使用效率上能獲得大幅的改善。

(4)

Performance Enhancement of Hard Drives

Using Flash-Memory Cards

Student:Shao-Nung Chang Advisors:Dr. Li-Ping Chang

Degree Program of Computer Science

National Chiao Tung University

ABSTRACT

Recently, notebook computer has great improvement on its efficiency and battery life along with the ever-changing technology. For example, the clock rate of CPU has dramatically increased from 100MHz to 3800MHz since 1995, 40 times faster than ever. In addition, other components of computer, such as Cache, display chip, Bus, Ram, Device interface, and so on also have astonishing improvement. However, only the development of Hard Disk (HD) is behind schedule no matter for the power consumption or using efficiency. Since 1995, it has only developed 2 to 3 times better than before.

During previous years, the technology readiness level of Flash Memory has become better than HD in terms of efficiency and power consumption. Even its controversial prices have substantially dropped with following the increasing level of technology readiness. Moreover, the frequencies of repeated read & write have also improved for its service life which has already reached the mark of over one million frequencies of repeated read & write. Thus, the use of Flash has become an emerging star of storage device after these bottlenecks have been resolved.

Therefore, the target of this thesis tends to offer a solution which is able to use the natural advantage of Flash and to mutually combine it with HD in order to make great improvement in HD’s power consumption and using efficiency.

(5)

誌 謝

在交大求學的這段期間很感謝各位師長的諄諄教誨,和各位同學的相 互切磋研究,讓我可以順利的完成我的學業及相關論文的研究。首先要感 謝張立平教授擔任我的指導教授,對於我的論文研究和專業知識都不辭辛 勞的給予許多的指導和協助,尤其我在資料分析及論文的研究方法上並不 是很成熟,在論文研究的學習過程中,經過教授的指導成長很多。不但得 到了許多專業的知識,並且學習到了研究分析的方法。再來是感謝和我一 起分組作報告的同學們,雖然大家都是以在職生的身份同時忙於工作和課 業,但也因為同學都是來自不同的領域,在學識的增長方面相當有幫助, 並且在分組的過程中,學到如何利用個人不同的技能來完成一個專案,使 每個人都能發揮所長。所以在我們的相互激勵和配合之下,我們的課業方 便都能夠順利完成。另外也要感謝我公司的同事,黃冠誠,周峰義,在我 就學期間,在事業上幫我負擔一些工作,讓我能有更多時間在我的課業上。 最後感謝交大能提供這樣的環境和機會,讓我在出社會之後仍有進修 的機會,不至於停滯不前,只知道目前工作相關的事情。希望今天在交大 所得到的,有一天能回饋到交大。

(6)

Contents

摘 要 ... iii ABSTRACT iv 誌 謝 ... v Contents vi 第 1 章 簡 介 ... 1 第 2 章 動 機 ... 4

2.1 Performance model(Flash memory card vs HD) ... 4

2.2 相關工作 ... 6 2.3 問題與挑戰 ... 7 第 3 章 演算法 ... 9 3.1 演算法概觀 ... 9 3.2 Sampling 演算法 ... 12 3.2.1 存取行為之分析(feature extraction) ... 12 3.2.2 取樣頻率調整(sampling-frequency adjustment) ... 14

3.3 壽命控制演算法(Lifetime control Algorithm) ... 16

3.4 震盪避免演算法演算法(Threshing avoidance algorithm) ... 18

3.5 系統控制流程 ... 20 3.6 演算法實作議題 ... 28 第 4 章 實驗結果 ... 30 4.1 實驗環境 ... 30 4.2 硬碟與快閃記憶體效能模型 ... 32 4.3 效能指標 ... 35 4.4 讀取效能 ... 36 4.5 能源消耗 ... 38 4.6 快閃記憶體 endurance 的影響 ... 40 第 5 章 結論 ... 42 附錄 1 硬碟概觀 ... 46 I. 硬碟簡介 ... 46 II. 硬碟構造 ... 46 III. 硬碟組織 ... 47 IV. 硬碟傳輸介面 ... 48 附錄 2 快閃記憶體概觀 ... 49 I. 快閃記憶體簡介 ... 49 II. 快閃記憶體分類 ... 49 III. 快閃記憶體原理 ... 50

(7)

FIGURE CONTENTS

圖表 1 隨機讀取比較圖(HARD DISK VS FLASH MEMORY) ... 4

圖表 2 PERFORMANCE IMPROVEMENT OF HARD DISK WITH FLASH MEMORY (HIT RATE 100%) ... 7

圖表 3 SYSTEM STRUCTURE OF OUR THESIS ... 11

圖表 4 CYLINDERS ACCESS STATUS ... 13

圖表 5 SYSTEM ARCHITECTURE ... 21

圖表 6 MAIN ROUTINE PROCEDURE ... 22

圖表 7 RANKING PROCEDURE ... 23

圖表 8 SWAP PROCEDURE ... 24

圖表 9 RE-SAMPLING PERIOD ADJUSTMENT PROCEDURE(1) ... 26

圖表 10 RE-SAMPLING PERIOD ADJUSTMENT PROCEDURE (2) ... 26

圖表 11 LIFETIME CONTROL PROCEDURE ... 27

圖表 12 CYLINDER COUNT ARRAY ... 28

圖表 13 READING REQUEST COUNT ARRAY OF FLASH MEMORY ... 29

圖表 14 RESPOND TIME OF SEQ/RANDOM WRITE HD ... 33

圖表 15 RESPOND TIME OF SEQ/RANDOM READ HD ... 33

圖表 16 RESPOND TIME OF SEQ WRITE HD/FLASH ... 33

圖表 17 RESPOND TIME OF SEQ READ HD/FLASH ... 33

圖表 18 RESPOND TIME OF SEQ/RANDOM READ FLASH ... 33

圖表 19 RESPOND TIME OF SEQ/RANDOM WRITE FLASH ... 33

圖表 20 RESPOND TIME OF RANDOM READ HD/FLASH ... 34

圖表 21 RESPOND TIME OF RANDOM WRITE HD/FLASH ... 34

圖表 22 RESPOND TIME OF RANDOM WRITE HD /SEQ WRITE FLASH ... 34

圖表 23 PERFORMANCE OF OUR ALGORIHM(FLASH SIZE : 512 MB) ... 37

圖表 24 PERFORMANCE OF OUR ALGORIHM(FLASH SIZE : 256 MB) ... 37

圖表 25 PERFORMANCE OF OUR ALGORIHM(FLASH SIZE : 1024 MB) ... 37

圖表 26 PERFORMANCE OF OUR ALGORIHM(FLASH SIZE : 128 MB) ... 37

圖表 27 POWER CONSUMPTION OF OUR ALGORITHM(4) ... 39

圖表 28 POWER CONSUMPTION OF OUR ALGORITHM(1) ... 39

圖表 29 POWER CONSUMPTION OF OUR ALGORITHM(2) ... 39

圖表 30 POWER CONSUMPTION OF OUR ALGORITHM(3) ... 39

圖表 31 POWER SAVING RATIO ... 39

圖表 32 INFLUENCE OF FLASH ENDURANCE(4) ... 41

圖表 33 INFLUENCE OF FLASH ENDURANCE(3) ... 41

圖表 34 INFLUENCE OF FLASH ... 41

(8)

圖表 38 FLASH MEMORY ERASE示意圖 ... 51

(9)

第1章 簡 介

電腦在現代人生活中佔了很重要的角色,有很多工作幾乎沒有電腦,便 無法運作,而電腦系統中除了 CPU 以外最重要的就是硬碟機。硬碟的功用 是用來儲存大量資料。 一旦硬碟損壞,電腦就無法使用任何資料,所以硬 碟可以說是最重要的元件之一。但是硬碟在物理技術上,已經到了一定的 極致水準,鮮少再有革命性的突破,唯一稱的上意義性突破的當屬「垂直 記錄技術」。垂直記錄技術的出現,使硬碟在磁碟密度的表現上再次獲得 大幅推升的空間。但是跟硬碟效能相關的物理技術,舉凡磁頭感應技術、 讀寫臂換軌技術、主軸轉速等等技術,再進步的可能性卻很小。影響硬碟 性能因素非常多,其中又以平均搜尋時間(seek time),以及主軸轉速影響最 大。平均搜尋時間指的是硬碟臂從一個磁軌移動到目的磁軌所花的時間(關 於硬碟介紹請參閱附錄 I),搜尋時間長短取決於硬碟臂的移動速度。另一 項影響硬碟效率的主要因素是硬碟馬達轉速,硬碟馬達轉速會決定硬碟 spin up/down 的時間以及從碟片存取資料的時間。目前無論是硬碟臂的移 動速度或者是馬達轉速方面都已經到了極致,難有突破性的發展。因此除 非更改硬碟的架構,否則只有在硬碟存取方式做改進。 快閃記憶體(NOR型或NAND型)是1984年於東芝公司於半導體學術會議上 首次發表的 (更多關於快閃記憶體資料請參閱附錄II)。相較於傳統硬碟, 快閃記憶卡具有體積小、重量輕、可靠性及耐用性好,抗衝擊、抗震動能 力強,消耗功率低等優點,最重要的是在某些狀態下對於資料的存取,快 閃記憶卡勝過傳統硬碟許多。在快閃記憶卡的架構設計上,並不需要加入 馬達。而馬達這個硬碟原件雖然在傳統硬碟設計上扮演重大角色,但有其 致命的弱點。第一是抗震性差,其次是消耗功率大,而快閃記憶體因為不 需要馬達,所以比起傳統硬碟,快閃記憶體較能抗衝擊、抗震動、可靠程 度也更高。另外在消耗功率方面,由於沒有馬達,因此快閃記憶體在消耗 功率方面的表現較傳統硬碟來得亮麗許多。另外在存取資料速率方面,快 閃記憶體在隨機讀取資料時,勝過傳統硬碟許多。但快閃記憶體並非沒有 缺陷,它最令人詬病的就是讀寫次數的限制以及儲存資料儲存年限,因此 快閃記憶體使用年限問題在系統使用上會是個極需克服的重點。

(10)

從兩種儲存記憶體的優缺點看起來,傳統硬碟有快閃記憶體不可取代的 要素,但快閃記憶體又有硬碟所比不上的性能以及優點,所以結合兩種儲 存裝置看起來是可行的做法。如果我們能在傳統硬碟較弱的部分以快閃記 憶體的優點來取代,比如以快閃記體較快的隨機讀取效率來取代硬碟較差 的隨機讀取效率,又或者以及存取資料時,花費耗電量較少的快閃記憶體 來取代存取資料需花費較多耗電的傳統硬碟,那麼我們是不是可以發展出 新的資料存取模式,而這種資料存取模式同時具有快閃記憶體以及硬碟的 優點,有較佳的存取資料速度、較少的耗電量,較佳的穩定性…等等。同 時又避免兩者的缺點,比如穩定性差、讀寫次數限制以及資料保存期限短、 耗電量大…等等。因此本篇論文將朝結合兩種記憶體的方向來思考,構思 一種新的儲存系統架構。由於快閃記憶體價格遠比硬碟來得貴,因此為了 較佳的價格容量比,我們思考中的系統將包含一個較小的快閃記憶卡,以 及一個容量較大的傳統硬碟。然後以一個驅動程式來控制這兩種硬體。如 此,既不用更改現有硬體架構,又可以達到增進效率以及漸少硬碟耗電量 的效果。 一旦要結合兩種記憶體勢必會遇到一些困難,首先我們面臨的困難是, 在我們的整個系統架構中,必須決定何時要使用快閃記憶體?何時要使用傳 統硬碟?因為要使系統有較好的效率以及較少的耗電量,我們必須讓我們系 統使用快閃記憶的頻率較高。所以必須讓系統未來要讀取的資料盡量在事 先就將資料由硬碟搬入快閃記憶體中,但是要知道系統未來將讀取哪些資 料卻是非常困難的一件事,這是我們首先必需解決的問題。另外我們該在 何時將這些資料由硬碟搬入快閃記憶體中,才能獲得最大的改善效果,又 是另一個需要思考的問題。另一方面,快閃記憶體由於先天物理上的因素, 存在著資料保存期限,以及讀寫次數受限的問題。以目前作業系統以及軟 體的設計來看,會有許多無法避免的隨機讀寫狀況,如果是應用在商業伺 服器的話,情況更是明顯,一旦我們使用快閃記憶體來取代硬碟,資料在 快閃記憶體與硬碟之間的搬移,無可避免的會使快閃記憶體的讀寫次數增 加,減短系統使用壽命。系統在面臨最嚴苛的持續讀寫狀況下,壽命可能 不到幾個月便告終結,因此我們演算法必須克服這個問題。

(11)

由於經過實驗測試,快閃記憶體的隨機存取效率要勝過傳統硬碟,因此 我們系統將會將會將所有的存取型式分為兩種,隨機存取以及循序存取。 當隨機存取時以快閃記憶體作為儲存裝置,當循序存取以傳統硬碟作為儲 存裝置。可是如果要做到這種存取方式,我們必須知道哪些資料必須放在 快閃記憶體,哪些資料必須放在傳統硬碟,這是一個很大的挑戰,我們將 以”以小觀大”的概念來做為我們的解決方法,所謂以小觀大,即是觀察 一小段時間的讀取資料,來預測往後一段時間,哪些資料可能被讀取的方 式來決定哪些資料該被放進快閃記憶體中,詳細的統計方法以及統計時機 將在後面章節做討論。另一個我們系統必須解決的問題是,快閃記憶體有 讀寫次數的限制,如果為了讀取效率的關係,增加讀寫次數將會使系統的 使用年限縮短,為了使系統的使用年限不會過短,因此我們必須限制快閃 記憶體的寫入次數,在後面章節我們也會針對這個問題做討論,嘗試以讀 寫次數配額的觀念來解決這個問題。提升效率以及延長使用年限的做法似 乎會有所衝突,因此我們必須以演算法來取得最佳平衡點。 本文組織將分文四章節,在第一章我們將會針對本篇論文的概念及組織 做些基本介紹。第二章則會分為三個部份,第一部分會介紹本篇論文為什 麼會想要這樣做,第二部分會介紹之前的一些其他人的相關做法,第三部 分會介紹我們系統這個作將朝遇到哪些問題,一旦解決這些問題將得到甚 麼好處。第三章會分四個部分介紹,分別介紹我們演算法的原理、系統架 構、演算法詳細作法、我們演算法的優點。第四章則會介紹我們的實驗。 我們的實驗將會以模擬的方式來進行,實驗參數會以市面上常見的硬碟以 及快閃記憶體來設定。而實驗的讀寫資料方面將會以一個普通 PC 長時間的 的存取資料作為我們的輸入資料。針對我們演算法在系統效率,耗電以及 快閃記憶體的寫入次數來做討論。另外在附錄部分會簡單介紹硬碟的原理 構造,以及快閃記憶體的原理構造以及其技術瓶頸。

(12)

第2章 動 機

2.1 Performance model(Flash memory card vs HD)

從傳統硬碟以及快閃記憶體的 performance mode(圖表 1)可以看出硬碟 在隨機讀取方面表現得非常差,這是因為硬碟在作隨機讀取時,需要不時 的移動硬碟臂的關係,因此硬碟的搜尋時間將會影響整體效率,因此硬碟 在隨機讀取的能力非常不好,但是當讀取資料是循序資料時,由於硬碟臂 移動的次數以及距離非常小,因此其搜尋時間將會非常小,整體讀取時間 也會較快閃記憶體快。而快閃記憶體就沒這方面的困擾,因為快閃記憶體 在做隨機讀取時並不需要做機械方面的移動,因此快閃記憶體的搜尋時間 非常快,遠勝過硬碟的循序存取時間。所以快閃記憶體讀取隨機資料取速 度遠勝於傳統硬碟。當讀取循序資料時,由於硬碟的硬碟臂移動次數及距 離小,搜尋時間相對較快,因此在讀取循序資料方面,快閃記憶體要較傳 統硬碟來得慢。 我們定義硬碟由靜止啟動到達可以讀取資料的動作稱之為 spin up,硬 碟由可以讀取資料到達完全靜止的動作 spin down。當硬碟 spin up 開始到 完成,由於硬碟馬達的特性關係,當馬達由靜止到達讀取資料所需的速度 時,需要由低轉速慢慢加速到高轉速,因此需要較多的時間來完成加速, 同時所耗費的電能也較多。當硬碟 spin down 時,也需要同樣的時間來慢 慢減速到完全停止,因此假如系統讀取資料導致硬碟 spin up/down 次數過 於頻繁,將會耗費大量的電能以及時間。而快閃記憶體由於沒有馬達的關 係,因此有較佳的耗電量、也不需要 spin up/down 的時間。 HD : Maxtor STM380815AS 8MB 7200RPM

Flash :Transcend SHDC class6, 4GB

圖表 1 隨機讀取比較圖(Hard disk vs flash memory)

0 2000 4000 6000 8000 10000 12000 0 50 100 150 ac ces s ti m e( us )

block size(k bytes)

random read Hd/flash

random_read_Hd

(13)

綜觀上面的因素,我們可以歸納出一些結果。並且可以針對這些結果 推論出一些方向來解決硬碟的效率及耗電問題。第一個方向是減少硬碟的 搜尋時間(seek time)。但是要如何減少硬碟的搜尋時間呢?由於硬碟的搜 尋時間與硬碟臂的來回次數與距離相關,因此要減短搜尋時間,就要減少 資料存取時硬碟臂搜尋的次數以及硬碟臂全部的搜尋距離。這樣做的同時, 還可以減少耗電量。另一個增加硬碟效率與減少耗電量的方向是減少硬碟 spin up/down 的次數,由於硬碟 spin up/down 所耗費的時間以及電能是最 大的,因此假如我們能藉由減少硬碟 spin up/down 的次數,來達到增加硬 碟效率與減少耗電量的目的。 要達到減少硬碟 spin up/down 的目的以及減少硬碟平均的搜尋時間有 兩種做法。第一種有效方法是將寫入資料的次序重新排序。由於硬碟在存 取資料時,硬碟臂將會隨著資料的所在來回移動,因此如果能將讀寫資料 的次序重新排列,讓硬碟臂盡量在移動一次完成時,就將讀寫資料處理完 畢,如此便能減少硬碟搜尋時間以及 spin up/down 的次數,很不幸的是這 種方法只能用在寫入資料時,因為讀此資料有即時性,並不適用。另一種 做法則是以較快的記憶體來當 Cache。在硬碟讀寫資料時,如果可以到較快 的記憶體作讀寫,等到有需要時再到硬碟做讀寫,便能減少硬碟搜尋時間, 同時也能減少硬碟 spin up/down 的次數。 本篇論文的方向將採取以快閃記憶體來當作 Cache 的方式來做為解決 硬碟問題的方案。在這幾年來,也有很多相關的研究採取類似的做法,但 都是針對硬碟的寫入需求來提出解決方法,但由於對硬碟讀取預測有相當 的困難性,因此針對硬碟讀取的解決方案較少人提出,其做法通常是採取 將被讀取資料的附近資料也一起搬進快閃記憶體的做法。但這種做法雖然 有效,但是效果有限。而本篇論文雖然也採取以快閃記憶體來當作 Cache 的方式來做為解決硬碟問題的方案,但我們將採取預測硬碟的讀取資料的 方式來作為硬碟解決方案。這是本篇論文與其他論文最大的不同。

(14)

2.2 相關工作

關於這如何增加硬碟效率以及減少耗能的作法及研究非常多,大概可以 歸類為三種概念。第一種做法,以管理硬碟 Spin-Up,Spin-Down 的觀念來 減少耗電,硬碟因為省電的關係,在一段時間沒有對硬碟作存取動作時, 在一段時間後,硬碟將會 Spin-Down,等到需要存取硬碟時,硬碟才會 Spin-Up。而硬碟的 Spin-Up、Spin-Down 是最浪費電能及時間的,一旦頻 繁的 Spin-Up、 Spin-Down 將耗費大量的時間及電能。” Adaptive Disk Spin-down Policies for Mobile Computer”[7],這篇論文中提出一個方 法將硬碟 Spin-Up,Spin-Down 的時機做一個的管理。

另外一種做法,以重新排列的方式存取順序增加硬碟效率,在"A buffer Cache management scheme exploiting both temporal and spatial localities"[2]中提出一種做法。因為存取 Hard Disk 最浪費時間的就是 硬碟臂來回的移動,以及磁片的旋轉。因此作者認為假如能夠將隨機 Access request 變成循序的 Access request。就可以達到增加效率,減低耗電。 “Reducing Hybrid Disk Write Latency with Flash-Backed I/O Requests”[6] 、 ”Flushing Policies for NVCache Enabled Hard Disks”[9],雖然做法不盡相同,但是原理是一樣的。

第三種作法,以高效能低電能記憶體來當硬碟快取,減少耗電,增加效 能。" SmartSaver: turning flash drive into a disk energy saver for mobile computers"[4]。作者分別對讀寫方面來進行,他將快閃記憶體分 成三個部份 1.Cache area:使用這個區域來管理 Cache 資料,並且發展了一 套評估方法來評估哪些 Sectors 該被留在 Cache 中。2.Prefetching area: 當某一個 sector 被搬進 Cache 中時,因為 space locality 的關係,有可 能附近的 sector 也有可能會馬上被讀到。因此作者提出一個簡單的方式評 估該搬多少資料進入這塊 buffer。3.Write back area :當要寫資料時先將 資料寫進這塊區域中,等到硬碟 spin-up 時,再將所有資料一起寫入。最 後 再 依 據 目 前 狀 態 去 動 態 調 整 這 三 塊 區 域 的 大 小 。 另 外 在 "Energy-Efficient and Performance-Enhanced Disks Using Flash-Memory Cache"[1],也提出另一種做法,他使用一個 Flash 管理機制去管理 Flash 的使用。

(15)

2.3 問題與挑戰

由於我們的系統將採取讀取隨機資料時,以快閃記憶體來取代傳統硬碟 的做法,那麼我們將會遇到很多挑戰。首先就是如何將讀取資料在讀取之 前先放到快閃記憶體中,其次就是快閃記憶體的讀寫限制問題,另外就是 我們演算法所產生的邊際效應。 要達到我們系統所設定以快閃記憶體來取代硬碟的隨機讀取,首先要面 臨的挑戰是我們必須預測系統在接下來將會讀取哪些資料。另外由於未來 得不可確定性,我們很難去知道未來系統將會讀取何種資料,而將這些資 料預先搬進快閃記憶體中。由於我們演算法系統裡快閃記憶體相當類似 PC 系統體的 Cache 所扮演的角色,因此我們可以一般管理 Cache memory 的演 算法來做資料的預測嗎?答案是否定的。因為 PC 系統 Cache memory 的關係, 同一地區(sector)在短時間內在被讀取的機率非常低,因此如果將以一般 的 Cache 演算法作為被讀過的資料搬進快閃記憶卡及將資料搬出快閃記憶 體的依據,將會使得我們快閃記憶體的命中率非常低,所以我們不能以一 般的 Cache 演算法來作資料的 swap in/out。我們必須發展我們自己的預測 演算法來解決這個問題。圖表 2 是以假設命中率 100%的狀態下,我們以快 閃記憶體來取代傳統硬碟隨機讀取的方式(紅線),與完全以傳統硬碟來做 讀取資料(藍線),所做的比較,我們可以發現,假如我們資料 pre-fetch 演算法命中率不錯的話我們將在硬碟效能上,獲得不小的提昇。 0 2000 4000 6000 8000 10000 12000 0 1000000 2000000 tot al a ver ag e t ime reading request flash size 1024 MB 1024_Future Normal

圖表 2 performance improvement of Hard disk with flash memory (hit rate 100%)

Hard disk Hard disk with flash

(16)

目前主流快閃記憶體技術目前仍為 NAND 與 NOR 技術,兩者都各有其適 用對象與特性,但是兩者都有其物理特性的限制,NAND 最高只有 10 萬次(近 年來已有企業開發出可以讀寫 100 萬次的快閃記憶體,但是價格非常貴)左 右的讀寫壽命,NOR 甚至更低。在我們系統中,由於須將資料預先搬進快閃 記憶體中,因此假如我們做資料 swap in/out 的次數過多的話,也代表我 們必須重複寫入快閃記憶體的次數增加,而一旦我們的寫入次數在短時間 內快速增加到超過快閃記憶體的重複寫入次數的話,我們系統的使用年限 將會受到限制,因此我們必須對我們系統寫入快閃記憶體的次數做出限制, 以面避免使用年限的過短,但是一旦我們限制 swap in/out 次數的話,又 會面臨整個演算法對於系統效率提升的程度不佳。因此我們的系統須有一 個機制來處理這個問題,既讓我們的系統的使用年限可以令人接受,同時 整體系統的效能也可以獲得不錯的提升。 當我們設計演算法解決上面這兩個問題時,同時也可能會產生一些邊際 效應。例如 swap in/out 衍生的 threshing 問題(我們定義:thresing 現象 是當我們演算法判定需將某些資料搬進快閃記憶體時,但是這些資料對於 往後的讀取命中率並無幫助) , 我們可能因為這些 threshing 現象發生頻 率過高,反而使得我整體系統效能犯而降低。因此我們必須有些演算法機 制來避免這個問題。如果我們能成功避免這個問題的話,我們將可以減少 系統 swap in/out 的次數。這樣做可以有兩個好處,首先,減少不必要的 swap in/out 的次數,可以減少我們 swap in/out 所需付出的話費,使整體 系統效能有所提升。另外減少 swap in/out 還可以減少快閃記憶體的寫入 次數,進而延長快閃記憶體的使用年限,使得我們系統可以使用的更長久。

(17)

第3章 演算法

經過前面幾章的敘述,讀者應該對這篇論文想要解決的問題,以及這些 問題發生的原因,以及之前其他學者相關的作法,有相當的了解。接下來 我們將在這章介紹我們的系統架構,相關演算法以及原理。 在我們的演算 法中將針對硬碟讀取的預測所將遇到的問題一一提出解決方法。因此在本 章節將針對以下幾個方向做出討論。演算法概觀、資料 Sampling、快閃記 憶體 endurance 限制、Threshing 、演算法實作。

3.1 演算法概觀

我們的演算法系統會是一個虛擬硬碟,當系統讀寫硬碟時,我們系統會 攔截系統 I/O 資料,由我們的系統(block driver)取代原本的硬碟驅動程 式。我們的系統架構如圖表 3 所示,硬體部分包含一個快閃記憶體,以及 一個硬碟。軟體部分(稱為 Block Driver)包含 3 個部份,分別為一個控制 快閃記憶體以及硬碟的 Driver,以及我們的演算法本身。 我們的硬體包含兩個部份,一個傳統硬碟以及一個快閃記憶體。傳統硬 碟在我們系統中扮演的角色為儲存裝置,儲存系統裡所有的讀寫資料,當 系統在快閃記憶體中找不到所需的資料時,才會到硬碟中讀取資料,如果 在快閃記憶體中可以讀取到所需資料時,硬碟會一直維持在 spin down 狀 態,硬碟維持啟動的時間長短將會跟我的演算法命中率相關。而快閃記憶 體在我們的系統中扮演的角色較類似 PC 系統裡的快取記憶體。在快閃記憶 體中,將會存放我們演算法所預測的資料,也就是我們預測硬碟中將來會 被系統讀取的資料,根據我們演算法會在適當時機點開始對未來系統的讀 取資料做出預測,然後會將這些演算法所預測的資料搬進快閃記憶體中, 當系統在未來讀取資料時,將會先到快閃記憶體中讀取,當系統所需的資 料不在快閃記憶體中時,才會到傳統硬碟中讀取資料。

(18)

我們演算法軟體的部份是一個 Block driver,用來取代系統原本的硬 碟驅動程式,攔截系統對虛擬硬碟的 I/O 動作,分為 3 個部份,其中包含 兩個需由系統提供的部份,分別為硬碟的驅動程式,以及快閃記憶卡的驅 動程式。硬碟的驅動程式用來控制我們系統中的硬碟資料讀寫;快閃記憶 卡驅動程式則用來控制快閃記憶卡的資料讀寫。第三部份則是我們演算法 部份。我們的演算法在 Block driver 中有三種作用,分別是仲裁、統計系 統讀取行為、預測系統未來讀取資料的角色,當系統 I/O 進來時,我們演 算法會判斷要到快閃記憶體或是硬碟中讀取資料;另一個功能是針對系統 讀取行為資料的統計,以做為預測將來資料的依據;另外演算法會根據統 計資料,預測將來系統將會讀取哪些資料。我們演算法會根據快閃記憶體 的 endurance 限制以及系統效率,決定何時開始針對讀取資料做出預測, 並將演算法預測出的資料搬進快閃記憶體中。 因此我們的演算法系統會分為兩個部份。第一部份處理正常的讀取動作 (圖表 3 紅色部份),我們演算法會將系統 I/O 過濾,一般的 I/O 讀寫將會 被直接到硬碟當中讀寫資料。當判斷系統讀取資料為隨機讀取時,我們的 演算將會啟動機制,先判斷系統所讀取的資料是否在快閃記憶體中,若資 料已在快閃記憶體中,則到快閃記憶體中讀取資料;若資料不在快閃記憶 體中,則到硬碟中讀取資料,完成系統讀寫資料的程序,同時將資料被讀 取的頻率記錄下來,做為系統預測的憑據。演算法第二部份(圖表 3 綠色部 份),當系統須做資料預測時機來到,系統會針對目前資料被讀取頻率的統 計資料,預測出未來將被讀取的 Cylinder 是那些,並根據演算法評估這些 Cylinders 是否值得被搬進快閃記憶體中,若 Cylinders 值得被搬進快閃記 憶體中,我們演算法才將這些 Cylinders 搬進快閃記憶體中。在這同時若 本次預測時機是在硬碟 Hot period 開始時,我們演算法還必須依據系統讀 取效能以及快閃記憶體 endurance 限制,設定下次系統須在次做預測的時 機,在系統讀取效能以及快閃記憶體 endurance 限制之間取得最佳的平衡 點。

(19)
(20)

3.2 Sampling 演算法

根據前面章節所述,我們演算法要以快閃記憶卡來增進硬碟的效能,我 們必須要將硬碟將來要讀取的資料(硬碟讀取頻率較高的資料),預先搬進 快閃記憶體中。因此我們將會面臨兩個問題,首先我們必須預先知道那些 資料是電腦系統將來會讀取的,其次我們演算法必須決定何時才是將這些 資料搬進快閃記憶體的最好時機,因此我們設計取樣演算法(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被讀取次數的標準差做為基準,因為標 準差可以代表相當程度的資料分散程度。 說明演算法要 解決的問題

(21)

我們的具體作法是,在每一次 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 R ead reque st s Area B Area C Mean value standard deviation

(22)

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

(23)

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

(24)

3.3 壽命控制演算法(Lifetime control Algorithm)

由於快閃記憶體先天上架構上的限制,在寫入快閃記憶體上會有次數限 制,因此假設我們 Sampling 演算法寫入快閃記憶體太多次將會限制系統的 使用壽命。所以我們的演算法必須有種機制(throttling algorithm)避免 上述問題。要從根本徹底解決快閃記憶體的寫入次數限制是不可能的(原因 請參閱附錄二)。所以我們演算法將在讀寫次數上做限制。 在我們取樣演算法中為了取的效能的改進,需要對快閃記憶體作寫入動 作,但寫入過多會造成系統使用期限縮短,因此我們必須限制我們的 Cylinder 搬移次數。我們的想法是要在快閃記憶體的最大讀寫次數限制下 取得最佳的讀取效能,所以使用 quota 的觀念設計我們的壽命控制演算法。 我們的想法是,我們必須判斷目前的可寫入額度,舉例來說:我們假設我們 系統硬碟使用年限為 n 年,快閃記憶體可被讀寫次數為 K 次,快閃記憶體 容量為 C 個 Cylinders,因此AccessTimesOne Day = K/(365 ∗ n),假設系統已經 被使用 d 天總共搬移次數為 K_d 次(單位為 cylinder/每次),理論上到第 d 天可以搬移次數Quuota_d = AccessTimesOne Day ∗ d(天) ∗ C(cylinder 個數), 所以理論上我們第 d 天 可以使用的配額 quota=Quuota_d − K_d,將每天 Quota 以時間為比例來算出目前可用 quota。譬如當我這個 hot period access 時間為第 d 天,時間為 t 小時。我就可以算出目前可用的 swap 次數 quota_now=quota

24 ∗ t。

我們的做法是,在我們每一次重新取樣時,必須先依照上面理論,求出 當下可以搬移的次數額度,當求出理論上的搬移次數額度時(quota_now), 假設系統目前已經搬移的次數為 K_now,將 K_now 與可搬移次數 quota_now 做比較,若 K_now 小於 quota_now,因為還沒達到可使用的搬移次數額度。 因此演算法以效率來動態改變 resample period 以求達到最佳效率。若 K_now 大於 quota_now,因為已經超過搬移次數額度,演算法以搬移次數來 動態改變取樣週期。

(25)

理論上來說,當取樣週期越長,Cylinder 搬移次數會越少,反之當取 樣週期越短,Cylinder 搬移次數會越多,因此我們可以有效控制 Cylinder 搬移次數,避免超過快閃記憶體使用年限。而且依照我們演算法的理論, 我們可以調整取樣週期,達到在快閃記憶體的讀寫限制下的最佳效率。但 是我們的壽命控制演算法的執行次數將會對我們效率造成影響。我們以目 前的快閃記憶體製造技術來看,通常可以允許重複寫入快閃記憶體約 100000 次,甚至更新的技術可以達到 1000000 次之多。以我們的模擬實驗 (4.6 節)來看,要達 到 10 年的使用年限且快閃記憶體的讀寫限制(約 100000 次)是非常不容易的。因此我們的演算法可以忽略快閃記憶體 Endurance 對 我們效率上的影響。

(26)

3.4 震盪避免演算法演算法(Threshing avoidance

algorithm)

經過上面的演算法,理論上可以有效增加效率,但過程中將會產生一些 不必要的搬移動作。原因是在同一個 hot period 時間內所有的 cylinders 被讀取的頻率可能差不多,在此時做 swap 的動作部沒有多大意義。在下面 兩種情形可能會發生,第一種情形,當求出的標準差過小,其物理意義代 表 cylinders 被讀取頻率差不多。第二種情形,當從硬碟搬移到快閃記憶 卡的 cylinders 被讀取次數與要被從快閃記憶體被移除的 cylinders 相差 不大時。此時將 Cylinders 資料做交換,對效率的影響並不大,但是反而 會多浪費時間在處理資料交換,反而減低效率。 我們的想法是,我們需要一個 filter 值來做為我們判斷到底該不該搬 資料的基準。但是這個值到底該如何決定呢?在這裡我們以每次 Swap 的時 間相當於被命中幾次作為我們的 filter 值;也就是當兩個 Cylinder 的次 數相差超過這個值,我們才將這兩個 Cylinder 作交換。推論公式如下: 已知參數:

T_read_hd: time of read hard disk / once

T_read_flash: time of read flash memory card / once T_swap: time of swap / once

N: number of read times:

推論公式:

Total read time (hd , flash) < Total read time(hd)……….…(1)  Treadhd × 1 + T_swap + Treadflash × (N − 1) < Treadhd × 𝑁𝑁…..(2) T_swap + Treadflash × (N − 1) < Treadhd × (𝑁𝑁 − 1)

 T_swap < Treadhd × (𝑁𝑁 − 1) − Treadflash × (N − 1)  T_swap < (Treadhd − Treadflash) × (N − 1)

 T_swap ÷ (Treadhd − Treadflash) < (N − 1)

N > (T_swap ÷ (Treadhd − Treadflash )) + 1……….(3)

(27)

須小於只純粹讀取硬碟的時間。公式(2)代表有快閃記憶體讀取 N 次的時間 為讀取一次硬碟的時間加上將 Cylinder 搬進快閃記憶體的時間再加上讀取 N-1 次快閃記憶體的時間。公式(3)經過化簡過後,代表理論 N 必須大於 (T_swap ÷ (Treadhd − Treadflash )) + 1次,作 swap 才有效用,因此我們以這

個值作為 filter。

我們的具體做法是每一次 hot period 開始時,我們會求出 filter 值。 而參數的如下 T_read_hd 、 T_read_flash 可由快閃記憶體的規格估計得 出,或由演算法執行過程中統計得到;T_swap 由演算法執行過程中統計取 得。當系統在同一個 hot period 內重新取樣時,在系統決定將 Cylinder 搬進快閃記憶體時,若 Cylinder 被讀取次數小於 filter,或搬進記憶體之 Cylinder 與搬出記憶體之 Cylinder 被讀取次數相差小於 filter,則放棄 將 Cylinder 搬進快閃記憶體中。

以我們的理論來看,應該可以減低演算法過程中產生的不必要搬移次數, 但是能無法完全避免,這是因為目前被讀取頻率較高的 Cylinders,只能說 往後被讀取的機率很高,但不能保證一定會被讀取。而我們震盪避免演算 法可以減低大部份的不必要的搬移次數。

(28)

3.5 系統控制流程

由於我們的演算法並不複雜,因此在程式實作方面其實也很簡單。並不 需要複雜的運算、也不需要複雜的流程。我們演算法的實作可以分為幾個 部分,分別為 Ranking procedure、Swap procedure、Threshing-avoidance procedure、Re-sampling period adjustment procedure、Lifetime-control procedure、main routine,以及兩個簡單的資料結構。在實作上,我們的 系統並不複雜,整個系統只需要兩個簡單的資料結構以及六個簡單的子程 式,另外需要外部提供兩個 driver,讓我們演算法可以控制系統的硬碟以 及快閃記憶卡。圖表 5 為整個系統的架構圖,箭頭所指方向為 Procedure 會被哪些 Procedure 所使用,如 Lifetime-control procedure 會被 Main routine procedure 所呼叫。

整個系統會分作三個時機分別有不同的流程。首先是一般的讀取資料時, 一開始時會進入 main routine 中,main routine 會決定要到硬碟或快閃記 憶體中取的資料,並且呼叫 Ranking procedure 記錄所有 Cylinder 被讀取 的次數。第二個時機點是當系統判斷 hot period 開始時,main routine 會 呼叫 Lifetime-control procedure 判斷本次 hot period 應該是用 Cylinder 搬 移 次 數 或 是 整 體 效 率 來 調 整 取 樣 週 期 。 當 決 定 調 整 方 式 後 呼 叫 Re-sampling period adjustment procedure 來調整我們的取樣週期。調整 取樣週期後,呼叫 Threshing-avoidance procedure 來取得 filter 值。第 三個時機點是重新取樣,當系統判斷重新取樣時機時,main routine 會呼 叫 Swap procedure 並依據 Hot period 一開始求得的 filter 來搬移預測資 料到快閃記憶體中,在 Swap procedure 會實作取樣演算法以及依據 filter 來決定要搬哪些資料到快閃記憶體。

(29)

Block Driver

Main routine Re-sampling period adjustment procedure Lifetime-control procedure Ranking procedure Threshing-avoidance procedure Swap procedure Flash memory card driver Hard disk driver Cylinder counter array Reading request count array of flash memory 圖表 5 System architecture

(30)

Main routine 是我們演算法的主要流程。整個功能分為三部份。當一 般讀取時會判斷從快閃記憶體或是硬碟中拿資料。當 Main routine 判斷 Hot period 開始時,Main routine procedure 會根據 Lifetime-control procedure 來 決 定 要 以 swap 次 數 或 者 以 整 體 效 率 為 考 量 來 啟 動 Re-sampling period adjustment procedure。詳細流程如圖表 6 所示。若 判斷為重新取樣時機時則呼叫 Swap procedure。

(31)

在 Ranking procedure 需實做兩個部份,第一部份,當平常 reading request 發生時,我們採用 Cylinder 的被讀取次數作為我們的依據值。當 每 Cylinder i 被讀取時,若 Cylinder i 在硬碟中,將 Rd_Hd_count[i]的 Access Count+1,若 Cylinder i 在快閃記憶體中,則將 Rd_flash_count 中 Hd Cylinder=i 的 Read Count+1。第二部份,在每次 resample 時我們必 須統計目前每個 Cylinder 被 Access 的次數,以求出 Cylinders 標準差。 在求出標準差後,我們須判斷標準差是否大於 filter 值(由 filter 演算 法求出)。若大於 filter 時,找出所有 Cylinders 被讀取次數大於標準差 的 Cylinders,並記錄在 CM_Array 中,演算法流程如圖表 7 所示。

CM_array: Cylinder index array that need to be move to flash Input: Rd_Hd_count Calculate SD(stander deviation of CC_array); i=0; Element=0; Output: CM_ array While((CC_array[i]>SD)&&(i<sizeof(CC_array)) Rd_Hd_count : Cylinder Counter array CM_array[elemet]=CC_array[i]; Elemet++; i++; Fals e Tr ue Reading request of cylinder i income Rd_Hd_count[i][1]++; Output: Rd_Hd_count 圖表 7 ranking procedure

(32)

Swap procedure 的功能是決定要搬哪些資料到外閃記憶體中,這個 procedure 將在系統 resample 時被 main routine 呼叫,它的 Input 是 ranking algorithm 所 產 生 的 CM_Array 以 及 Rd_flash_count 。 這 個 procedure 主 要 是 處 理 硬 碟 與 快 閃 記 憶 體 的 Swap 。 Procedure 會 由 Threshing avoidance 演算法取得 filter 值,並根據這個值判斷是否要 將 CM_Array 中的 Cylinders 搬進快閃記憶體中。當要將 Cylinder i 搬到 快 閃 記 憶 體 時 會 將 , 將 Rd_Hd_count[i] 的 Access Count 值 寫 到 Rd_flash_count 中 Hd Cylinder=i 相對應的 Read count 中,當系統將 Cylinder i 從快閃記憶體移除時,將 Rd_flash_count 中 Hd Cylinder=i 的 Read Count 值寫到 Rd_Hd_count[i]相對應的 Access count 中。流程圖 如圖表 8。 圖表 8 Swap procedure Input: CM_array; Rd_flash_count Threshing

procedure Get Filter

Filter : filter from Threshing procedure

While(i<sizeof(CM_array)

Find the element K from Rd_flash_counT with minimum read count;

Cy=Hd Cylinder of emement k rd_count=Read count of emement k

True

False If

((Rd_Hd_count[i][0]-rd_count)>Filter)

Rd_Hd_count[i][0]=rd_count; Read count of emement k=Rd_Hd_count[i][0]; Hd Cylinder of emement k=I; Move Cylinder I data to flash; Rd_Hd_count[i][0]: Access Count Of cylinder i True i++; False end i++;

(33)

我 們 演 算 法 的 第 三 部 份 是 Threshing avoidance procedure , 這 個 procedure 主要的作用在求出 filter 值,在 hot period 一開始時被 main routine 所呼叫,傳入參數為搬入一個 Cylinder 到快閃記憶體的時間,平 均讀取硬碟的時間,平均讀取快閃記憶體的時間。目前這些參數我們參考 硬碟以及快閃記憶體的規格來求出理論值。

我們演算法的第四部份為 Re-sampling period adjustment procedure。 這個 procedure 用來決定下次 hot period 的 resample period 長短。在 hot period 一開始時被 main routine 所呼叫。有兩個部份需要實作,分別 是根據整體效率(圖表 9) 或根據 swap 次數(圖表 10)來動態調整取樣週期 長短。

當我們以整體效率(圖表9)來動態調整resample period長短時,main routine 會傳入參數為前兩次的讀取平均反應時間(Time_respond(T_now), Time_respond( T_previous ))、目前取樣週期 (Period(resample)) 、最 大的取樣週期(Period(Max))、最小取樣週期(Period(Min))、調整值(K:程 式中設為2,會將取樣週期以2倍或1/2倍的方式調整)。程式會依據演算法 來求得最佳效率的取樣週期。

當我們以整體效率(圖表 10)來動態調整 resample period 長短時,main routine 會傳入參數為前兩次的 Cylinder 搬移次數(SwapCount(T_now), (SwapCount ( T_previous ))、目前取樣週期 (Period(resample)) 、最 大的取樣週期(Period(Max))、最小取樣週期(Period(Min))、調整值(K:程 式中設為 2,會將取樣週期以 2 倍或 1/2 倍的方式調整)。程式會依據演算 法來求得最符合快閃記憶體寫入限制的取樣週期。

(34)

Input: Time_respond(T_now) Time_respond(T_previous) Period(Resample) K=2 Period(Max) Period(Min) Time_respond(T_now) : average responds time of read requests at now Time_respond(T_previous) : Average responds time of read requests at pervious hot period. Period(Resample) : current re-sampling period K: parameter of adjusting Period(Resample) , in our algorithm we let k=2. Period(Max) : the maximum resampling period

Period(Min) :the minimum resampling period Time_respond(T_previous)<Time_respond(T_now) True If(k>1) { K=1/2 } Else { K=2} Period(Resample)=Period(Resample)*K If(Period(Resample)>Period(Max)) {Period(Resample)=Period(Max)} If(Period(Resample)<Period(Min)) {Period(Resample)=Period(Min)} False End Input: SwapCount(T_now) SwapCount(T_previous) Period(Resample) K=2 Period(Max) Period(Min) SwapCount(T_now) : swap count from first read request to current read request today SwapCount(T_previous) : Swap count from first read request to current read request of the day before today Period(Resample) : current re-sampling period K: parameter of adjusting Period(Resample) , in our algorithm we let k=2. Period(Max) : the maximum resampling period

Period(Min) :the minimum resampling period Period(Resample)=Period(Resample)*K If(Period(Resample)>Period(Max)) {Period(Resample)=Period(Max)} If(Period(Resample)<Period(Min)) {Period(Resample)=Period(Min)} End

圖表 10 Re-sampling period adjustment procedure (2) 圖表 9 Re-sampling period adjustment procedure(1)

(35)

我們演算法的第五部份是 Lifetime-control procedure(throttling algorithm) 。 這 個 procedure 會 實 作 Lifetime-control algorithm 。 Lifetime-control procedure 中是由 main routine 呼叫,main routine 會 將 系 統 參 數 系 統 使 用 年 限 (Life_time) 、 快 閃 記 憶 體 寫 入 次 數 (Endurance)、快閃記憶體可容納的 Cylinder 數(F_capacity)、今天開始 到目前已經寫入的次數,本次 Hot period 開始的時間(ReadTime(today), ReadTime(Hour)),然後重新計算。流程如圖表 11

(36)

3.6 演算法實作議題

依照我們演算法,我們將會需要兩個資料結構。分別用來記錄讀取過程 中的每個 Cylinder 被讀取頻率。第一種資料結構是 Reading request count array( 以 Rd_Hd_count 表 示 ) , 它 在 我 們 演 算 法 中 的 目 的 是 用 來 記 錄 Cylinder 在每次 hot period 的被讀取次數,如圖表 12。這個資料結構將 包含兩個參數,第一個參數是 Cylinder index: 表示 Cylinder 在硬碟中 的索引。第二個參數是 Access Count,被用來 記錄目前硬碟中每個 Cylinder 被讀取的次數。當系統在每次讀取 Cylinder i 時,我們演算法會將 Rd_Hd_count[i]的 Access Count 值加 1。當每次 hot period 結束時,演算 法會將 Rd_Hd_count 中 Access Count 值重設為 0。當系統將 Cylinder i 從 硬碟 swap 到快閃記憶體時,會將 Rd_Hd_count[i]的 Access Count 值寫到 Rd_flash_count 中 Hd Cylinder=i 相對應的 Read count 中,當系統將 Cylinder i 從快閃記憶體 swap 到硬碟時,會將 Rd_flash_count 中 Hd Cylinder=i 的 Read Count 值寫到 Rd_Hd_count[i]相對應的 Access count 中。

(37)

我們演算法第二種資料結構使用於記錄快閃記憶體中 Cylinders 在 hot period 被讀取的頻率(以 Rd_flash_count 表示)。如圖表 13。這個資料結 構將包含三個參數,第一個參數是 flash cylinder index,用於表示在快 閃記憶體中的 Cylinder 索引。第二個參數是 Hd Cylinder,被用來記錄儲 存於快閃記憶體中的 Cylinder 是屬於硬碟中的哪個 Cylinder。第三個參 數表示每個儲存於快閃記憶體中 Cylinder 被讀取次數。當系統在每次讀 取快閃記憶體中 Cylinder i 時,我們演算法會將 Rd_flash_count 中 Hd Cylinder=i 的 read Count 值加 1。當每次 hot period 結束時,演算法會 將 Rd_flash_count 中 read Count 值重設為 0。當系統將 Cylinder i 從硬 碟 swap 到快閃記憶體時,會將 Rd_Hd_count[i]的 Access Count 值寫到 Rd_flash_count 中 Hd Cylinder=i 相對應的 Read count 中,當系統將 Cylinder i 從快閃記憶體 swap 到硬碟時,會將 Rd_flash_count 中 Hd Cylinder=i 的 Read Count 值寫到 Rd_Hd_count[i]相對應的 Access count 中。

圖表 13 Reading request count array of flash memory

(38)

第4章 實驗結果

根據我們演算法,在理論上對效率以及耗電量方面,應該會有不錯的效 果。但不知在實際上的效果怎麼樣?在這章我們將用實驗來佐證我們的演算 法。我們將以軟體模擬的方式,來測量實際的數據,並根據這些數據結果 來分析我們的演算法的效果以及造成的影響。

4.1 實驗環境

由於我們將以軟體模擬的方式來驗證我們的演算法。所以我們將在這節 介紹我們的所有實驗環境。首先,在硬體環境部份,我們使用的 CPU 為 intel 的 T7500,具有 2.2GHZ 的 CPU 頻率,這顆 CPU 還具有 4MB 的 L2 快取。在 RAM 的部分則是使用 4GB 的 DRAM;另外模擬程式我們則使用Microsoft Visual

Studio 2008 來發展我們的模擬程式;另外作業系統我們選擇微軟的 Vista 作為我們的模擬環境;另外我們將會記錄一顆 20GB 的硬碟長時間的讀寫動 作(約 26 天)來做為我們的模擬程式的讀寫資料。 另外在我們硬碟模擬的部份,我們以一般市面上常見的 3.5 吋硬碟規格 作為我們的模擬硬碟規格。在硬碟轉速方面我們選擇一般常見的規格 7200 轉;在硬碟Header及Cylinder部份,由於一般市面上硬碟head為 16 到 255, cylinder為 1024 到 16384 由於資料分析的方便,我們將硬碟參數定義 header 為 255,Cylinder為 2609;硬碟資料傳輸方面,我們選擇SATA2 的 理論傳輸速度 300MB/sec;硬碟Seek time的部分參考reference[12]論文裡 所建立的硬碟seek time model3

在快閃記憶體模擬的部份,我們選用 Transcend 快閃記憶卡,記憶晶 片規格是 SHDC class6,容量為 4GB。以程式來測試記憶卡的平均讀寫數據。 我 們 測 試 程 式 使 用 的 API 為 CreateFile(……) 、 WriteFile(……) 、 ReadFile(……)來讀寫資料。選用這些 API 主要是因為讀寫資料可以不經

;由於我們的測試資料為一個 20GB硬碟的 長期讀取記錄(約 26 天),因此我們的硬碟容量也設定為 20GB。

3關於 seek time 的模擬方法我們將以 reference[12]中建立的硬碟 Model 來求得。 d<616,3.45 + 0.59√d

(39)

block-device buffer Cache,所以可以避免其他因素影響讀寫時間,另外 讀寫動作的前後分別以 intel CPU 的 RDTSC 指令來讀取 CPU Time Stamp, 所以可以精確的測量出讀寫動作所花的 CPU 指令週期,再根據 CPU 執行頻 率換算出精確的讀寫時間。求得數據如下,隨機讀取資料時間為 30us、循 序讀取資料時間為 29us、隨機寫入資料時間為 699us、循序讀取資料時間 為 43us。我們以這些數據做為我們程式模擬時,快閃記憶體的讀寫數據。

(40)

4.2 硬碟與快閃記憶體效能模型

在這節我們將測試市面上常見的硬碟與快閃記憶卡,建立其效能模型, 並且分析硬碟與快閃記憶體的效能模型,從中得出我們論文的方向與演算 法基礎。我們選擇的硬碟型號為 Maxtor STM380815AS、內建 8MB 的 Buffer 、硬碟轉速為 7200RPM、傳輸規格為 SATA、平均 seek time 為 9ms。 快閃記憶體方面我們選擇 Transcend 快閃記憶卡,記憶晶片規格是 SHDC class6,容量為 4GB。以程式將測試資料分別對硬碟以及快閃記憶卡作讀 寫動作,並測量其平均時間。讀寫的方法分為循序寫入資料、循序讀取資 料、隨機寫入資料以及隨機讀取資料。寫入的資料大小分別為 4k、 16k、 32k、64k、128k。 經過測試後我們得出結果如圖表 14、圖表 15、圖表 16、圖表 17、圖表 18、圖表 19、圖表 20、圖表 21、圖表 22。從這些數據可以得到一些結論。 第一個結論,我們可以所有圖表看出無論是硬碟或記憶體,無論讀取資料 或寫入資料,以循序的方式都會比隨機的方式來得快,但是由圖表 18 我們 可以知道快閃記憶體的隨機讀取資料跟循序讀取資料是一樣快的。第二個 結論,由圖表 19、圖表 21 可以發現隨機寫入快閃記憶體是最花時間的,第 三點,由圖表 17 我們可以看出循序讀取資料時,從硬碟讀取資料要比從快 閃記憶體讀取快,而且相差的程度非常明顯,但是若是在隨機讀取狀態下 可以可明顯的看出,快閃記憶體比硬碟快非常多(圖表 20)。第四點,在寫 入小量的資料下循續寫入快閃記憶體比隨機寫入硬碟要快很多(圖表 22)。 從第三點的結論,我們可以發現隨機讀取快閃記憶體資料比隨機讀取硬 碟資料快,而在循序讀取下結果卻相反。因為單以讀取速率來講硬碟要比 快閃記憶體快,因此在循序讀取資料時硬碟要較快閃記憶體快。但是在隨 機讀取的狀態下,硬碟的讀取速度需額外考慮一項因素,硬碟的 seek time。 由於隨機資料可能散布在硬碟的每個 Cylinder 中,因此隨著讀取資料的不 同,硬碟必須來回移動以取得正確的資料,因此 seek time 的平均時間會 加長,所以在隨機讀取狀態下,快閃記憶體要較硬碟快得多。由於在隨機 讀取狀態下,快閃記憶體較硬碟快非常多,而一般 PC 系統隨機讀取的機會 其實非常多,因此假如我們在隨機讀取資料的情況下,能以讀取快閃記憶 體的來取代讀取取硬碟,那麼我們有機會能改善我們的讀取效能。我們論 文的方向將朝這個方向進行。

(41)

0 2000 4000 6000 8000 10000 0 50 100 150 ac ces s ti m e( us )

block size(k bytes)

seq/random read flash

random_read_flash seq_read_flash

圖表 17 respond time of seq read Hd/flash 0 50000 100000 150000 200000 0 100 200 ac ces s ti m e( us )

block size(k bytes)

seq/random write flash

random_write_flash seq_write_flash

圖表 16 respond time of seq write Hd/flash 0 2000 4000 6000 8000 10000 12000 0 100 200 ac ces s ti m e( us )

block size(k bytes)

seq/random read Hd

random_read_Hd seq_read_Hd

圖表 14 respond time of seq/random write Hd 0 1000 2000 3000 4000 5000 0 100 200 ac ces s ti m e( us )

block size(k bytes)

seq/random write Hd

random_write_Hd seq_write_Hd

圖表 15 respond time of seq/random read Hd 0 2000 4000 6000 8000 0 100 200 ac ces s ti m e( us )

block size(k bytes)

seq read Hd/flash

seq_read_Hd seq_read_flash 0 2000 4000 6000 8000 10000 12000 0 100 200 ac ces s ti m e( us )

block size(k bytes)

seq write Hd/flash

seq_write_Hd seq_write_flash 圖表 19 respond time of seq/random

write flash

圖表 18 respond time of seq/random read flash

(42)

0 2000 4000 6000 8000 10000 12000 0 100 200 ac ces s ti m e( us )

block size(k bytes)

random read Hd/flash

random_read_Hd random_read_flas h 0 50000 100000 150000 200000 0 100 200 ac ces s ti m e( us )

block size(K byte) random write Hd/flash

random_write _Hd random_write _flash

圖表 21 respond time of random write Hd/flash

圖表 22 respond time of random write Hd /seq write flash

0 2000 4000 6000 8000 10000 12000 0 100 200 acce ss ti me

block size(k bytes)

random write Hd/seq write flash

random_writed _Hd

seq_write_flash

圖表 20 respond time of random read Hd/flash

(43)

4.3

效能指標

經過理論的推演,在理論上將對系統有所改善,但是應用在實際上到底 效果如何?因此我們設計了 3 個實驗,以軟體模擬的方式分別針對幾個因素 來觀察,藉以了解我們演算法對系統的效應如何。我們實驗要觀察的因素 分別是效能、耗電量、讀取命中率、快閃記憶體 endurance 的影響。 首先是關於演算法對於系統效能的影響。在理論上,我們演算法對於效 能有不錯的改善效果。因此我們首先要觀察的是效能的實際影響。我們將 以讀取資料的平均反應時間(average responds time4

)作為我們的評判標準, 當讀取資料的平均反應時間越短,代表演算法改進硬碟效能的效果越好, 反之若讀取資料的平均反應時間越長,代表演算法改進硬碟效能的效果越 不好。另外會以四種不同的演算法作為我們的對照組。我們將在 4.4 節做 說明。 第二步我們要觀察的指標是演算法對系統耗電量的影響。理論上由時演 算法會減少硬碟的讀取,改成由耗電量較少的快閃記憶體讀取資料,因此 會減少整個系統的耗電量。因此我們設計實驗,以觀察讀取動作的累積耗 電量來判斷演算法對系統耗電量的影響。如果累積耗電量越多代表效果越 不好,若累積耗電量越少則表示我們演算法對減少耗電量的效果越好。另 外我們將以喘統硬碟的耗電量來做為我們的對照組。 第三步我們要觀察的指標是快閃記憶體 endurance 對於我們演算法效率 以及對使用年限的影響。如之前章節所述快閃記憶體有讀寫次數的限制, 而我們為了做讀取預測須對快閃記憶體作讀寫,因此我們將會影響系統的 使用年限。因此我們必須觀察快閃記憶體 endurance 限制的影響。我們會針 對不同容量的快閃記憶體觀察(128MB、256MB、512MB、1024MB),觀察快閃 記憶體 endurance 的影響。另外我們會觀察快閃記憶體 endurance 次數對系 統效能的影響。如何能夠在不影響使用年限又能達到不錯的效率。

(44)

4.4 讀取效能

在這個實驗我們要觀察的是演算法對效能改善的效果。我們有三個對照 組。分別是 Future 演算法(xxx_Future)、History(xxx_History)演算法、 一般傳統硬碟(Nomal_Hd)。Future 演算 法,我們 以每個 hot period 為單位, 預先去統計目前這個 Hot period 被讀取最多的 cylinders 並將這些 Cylinders 在每個 hot period 一開始就搬進快閃記憶體。History 演算法 則是以每個 hot period 為單位,統計前一個 Hot period 被讀取最多的 cylinders,將這些 Cylinders 在每次 hot period 開始時就搬進快閃記憶 體。而第三個對照組則是一般傳統硬碟,並沒有快閃記憶體作為 Cache。 首先我們由實驗結果(圖表 23,圖表 24,圖表 25,圖表 26)可以發現效 率最好的是 Future 的演算法,但是這種演算法在現實世界中是無法實作的, 原因是我們無法預窺未來,因此無法預先將準確資料搬進快閃記憶體中。 而以看 history 的方式以及我們的演算法是現實中比較可能的方式,搬進 快閃記憶體中的資料是有可能會在未來被讀取的資料。由實驗結果可以看 出,我們的演算法效率又比 history 演算法好。而且當快閃記憶體容量越 大時,我們演算法的預測效果越好。這可能是因為快閃記憶體容量越大, 則可以儲存在快閃記憶體裡的資料越多,所以整體命中率也可能越高。 還有由上面資料也可以看出,快閃記憶體 容量越大,我們演算法跟 Future 的演算法差異越來越大,Future 的演算法我們可以視為最好的讀取 命中率,當容量越大時,可以搬進快閃記憶體的資料越多,而這些資料中 會包含一些被讀取次數排名較後面的資料。這部分的資料因為被讀取次數 差異並不明顯,因此我們的演算法在預測這種資料方面表現較差,因此會 與最佳演算法 Future 差異越大。但是當容量越小時,可以搬進快閃記憶體 的資料越少,但這些資料都是屬於被讀取次數排名較前面的資料,我們演 算法對這種資料的命中率越好,因此我們的演算法會與 Future 演算法差異 越小。所以我們可以知道對被讀取次數越多的資料,我們的演算法預測命 中率會越好,但是對被讀取次數越少的資料,演算法命中率會越差。

(45)

根據我們目前的實驗結果,當快閃記憶體容量為 128MB 時可以增加的效 能為 12.45%、容量為 256MB 時可以增加的效能為 17.182%、容量為 512MB 時可以增加的效能為 23.468%、容量 為 1024MB 時可以增加的效能為 33.175%。 以效能來看,當快閃記憶體容量為 1024MB 時效果最好。 0 2000 4000 6000 8000 10000 12000 0 1000000 2000000 tot al a ver ag e t ime reading request flase size 128 128_History 128_Future 128_prediction Nomal_Hd 0 2000 4000 6000 8000 10000 12000 0 1000000 2000000 tot al a ver ag e t ime reading request flase size 256 256_History 256_Future 256_prediction Nomal_Hd 0 2000 4000 6000 8000 10000 12000 0 1000000 2000000 tot al a ver ag e t ime reading request flash size 512 MB 512_History 512_Future 512_predictio n Normal_Hd 0 2000 4000 6000 8000 10000 12000 0 1000000 2000000 tot al a ver ag e t ime reading request flash size 1024 MB 1024_History 1024_Future 1024_prediction Normal 圖表 25 performance of our algorihm(Flash size : 1024 MB) 圖表 24 performance of our algorihm(Flash size : 256 MB) 圖表 26 performance of our algorihm(Flash size : 128 MB) 圖表 23 performance of our algorihm(Flash size : 512 MB)

(46)

4.5 能源消耗

理論上我們的演算法有不錯的命中率,因此部份的讀取動作,我們可以 以耗電量較少的快閃記憶體來取代耗電量較大的硬碟,因此理論上會整體 耗電量有所貢獻。因此在這個實驗我們要觀察的是演算法實際上對減少系 統耗電量的效果。我們以一般傳統硬碟(Normal_Hd)讀取動作做為我們的對 照組,比較以我們演算法作讀取動作所累積耗電量,以及一般傳統硬碟對 相同的讀取動作的累積耗電量。看看我們的演算法減少耗電量的程度如何。, 由於快閃記憶體的寫入方式限制(請參考附錄 2),一般快閃記憶卡中都有 garbage collection 的設計,因此也會花費一些能源。在我們的模擬中只 統計讀寫次數所花費的耗電,並沒有直接對快閃記憶卡中內部的 garbage collection 活動作能耗的估計。 由實驗結果(圖表 27、圖表 28、圖表 29、圖表 30)可看出,當快閃記憶 體容量越大則我們演算法對減少系統耗電量的效果越好,當快閃記憶體容 量越小,則我們演算法在對減少系統耗電量的效果越差。這是因為快閃記 憶體容量越大,則儲存在快閃記憶體裡的資料越多,因此命中率也相對越 高。命中率越高會有兩個影響,第一命中率越高表示讀取快閃記憶卡的次 數也越多,因此硬碟 spin up/down 次數比起一般傳統硬碟可以有效減少, 因此我們可以減少系統花費在硬碟 spin up/down 的耗電。另外,由於讀取 快閃記憶卡的次數越多,表示讀取硬碟次數也越少,因此硬碟在做 seek 動 作次數也會相對減少,由於 seek 動作是由硬碟臂的來回移動來完成,因此 我們演算法可以有效減少 seek 動作耗電量的花費。另外,讀取硬碟次數的 減少,我們可以減少硬碟碟片的轉動,因此我們可以減少讀取動作所花費 的耗電量。 由實驗的數據顯示(圖表 27、圖表 28、圖表 29、圖表 30),我們的演算 法在快閃記憶體容量為 128MB 時,我們演算法可以節省約 7%的的耗電;快 閃記憶體容量為 128MB 時,可以 節省 約 11%的耗電;快閃記憶體容量為 512MB 時,可以節省約 14%的耗電;當快閃記憶體容量為 1024MB 時,我們的演算 法甚至可以節省約略達到 19%的耗電量(圖表 31)。我們演算法可以在節省 耗電量方面有不錯的表現。

參考文獻

相關文件

Receiver operating characteristic (ROC) curves are a popular measure to assess performance of binary classification procedure and have extended to ROC surfaces for ternary or

In this paper, we evaluate whether adaptive penalty selection procedure proposed in Shen and Ye (2002) leads to a consistent model selector or just reduce the overfitting of

One way to select a procedure to accelerate convergence is to choose a method whose associated matrix has minimal spectral radius....

One way to select a procedure to accelerate convergence is to choose a method whose associated matrix has minimal spectral

原因: 技術進步,加上對可攜帶音樂設備的需求增加(黑膠唱片 &gt; 錄音帶 &gt; CD- ROM &gt; 迷你光碟 &gt; SD咭 &gt;

下列關於 CPU 的敘述,何者正確?(A)暫存器是 CPU 內部的記憶體(B)CPU 內部快取記憶體使 用 Flash Memory(C)具有 32 條控制匯流排排線的 CPU,最大定址空間為

• An algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output.. • An algorithm is

電腦內部是使⽤用位元 (Bit) 這個基本單位來表⽰示資料 並儲存於記憶單元 (記憶體) 或輔助記憶單元 (硬碟) 中。.. 每個位元只可以表⽰示