本發(fā)明涉及數(shù)據(jù)儲存系統(tǒng)的效能管理,尤其涉及一種用來于一儲存系統(tǒng)中進行高速緩存管理的方法與相關(guān)裝置。
背景技術(shù):
依據(jù)相關(guān)技術(shù),一傳統(tǒng)的儲存系統(tǒng)可采用某些傳統(tǒng)的高速緩存(或稱快取(Cache))運作機制,以提升讀寫效能。然而,所述傳統(tǒng)的高速緩存運作機制有些問題。例如:一傳統(tǒng)的高速緩存運作機制所采用的高速緩存區(qū)塊的大小等于所述傳統(tǒng)的儲存系統(tǒng)中的塊設(shè)備(Block Device)的存取單位。為了記錄每個高速緩存區(qū)塊對應(yīng)到的塊設(shè)備位置,所述傳統(tǒng)的高速緩存運作機制需要大量的存儲器資源。以EXT4文件系統(tǒng)為例,其存取請求是以4096字節(jié)(4Kilobyte,以下簡稱為「4KB」)為最小單位。在所述傳統(tǒng)的高速緩存運作機制采用4KB作為每個高速緩存區(qū)塊的大小、且所述塊設(shè)備的儲存容量通常遠大于4KB的狀況下,用來記錄每個高速緩存區(qū)塊對應(yīng)到的塊設(shè)備位置的存儲器的總量相當(dāng)可觀。
相關(guān)技術(shù)中提出一些傳統(tǒng)的方案,其通過加大高速緩存區(qū)塊大小以試圖減少存儲器的使用量,卻帶來其它問題諸如一些副作用。例如:另一傳統(tǒng)的高速緩存運作機制在處理小于高速緩存區(qū)塊大小的存取請求時,常常繞過(Bypass)高速緩存、且直接存取硬式磁盤驅(qū)動器,這會導(dǎo)致多數(shù)的存取都沒辦法被高速緩存住,使所述另一傳統(tǒng)的高速緩存運作機制無法發(fā)揮效果。于是,高速緩存效能降低。又一傳統(tǒng)的高速緩存運作機制在處理小于高速緩存區(qū)塊大小的存取請求時,復(fù)制所述存取請求的數(shù)據(jù)至高速緩存區(qū)塊,并使用一結(jié)構(gòu)來記錄所述數(shù)據(jù)位于所述高速緩存區(qū)塊的位置。然而,所述傳統(tǒng)的高速緩存區(qū)塊中典型地(Typically)存在高速緩存空洞,這導(dǎo)致讀取和寫入運作都會受到影響。以EXT4文件系統(tǒng)為例,經(jīng)過一段時間的隨機存取后,由于數(shù)據(jù)不連續(xù),會造成高速緩存區(qū)塊中存在大量的高速緩存空洞,而高速緩存中的有效數(shù)據(jù)少,將導(dǎo)致大部分的存取請求都需從所述塊設(shè)備讀取,使效能下降。舉例來說,假設(shè)此傳統(tǒng)的高速緩存運作機制要讀取所述塊設(shè)備上某一區(qū)塊中的數(shù)據(jù)。雖然所述區(qū)塊已對應(yīng)到高速緩存中的某一高速緩存區(qū)塊,但由于所要讀取的數(shù)據(jù)不在高速緩存上,此傳統(tǒng)的高速緩存運作機制還是要從所述塊設(shè)備讀取,這造成高速緩存空間的浪費與效能的下降。
由以上可知,相關(guān)技術(shù)無法在不造成額外的問題(諸如上述的副作用)的狀況下,妥善地解決既有的問題。因此,需要一種新穎的方法及相關(guān)的架構(gòu),以在較少副作用、或不造成副作用的狀況下,妥善地解決既有的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的之一在于公開一種用來于一儲存系統(tǒng)中進行高速緩存管理的方法與相關(guān)裝置,以解決上述問題。
本發(fā)明的另一目的在于公開一種用來于一儲存系統(tǒng)中進行高速緩存管理的方法與相關(guān)裝置,以提升數(shù)據(jù)存取(Access)的效能。
本發(fā)明的至少一較佳實施例中公開一種用來于一儲存系統(tǒng)中進行高速緩存管理的方法,其中所述儲存系統(tǒng)包括多個儲存裝置。所述方法包括:利用所述多個儲存裝置中的一儲存裝置作為所述多個儲存裝置中的另一儲存裝置的一高速緩存(Cache),其中所述儲存裝置的訪問速度大于所述另一儲存裝置的訪問速度,且所述高速緩存包括多個高速緩存區(qū)塊;以及當(dāng)發(fā)生所述高速緩存的一讀取失敗(Read Miss)時,自所述另一儲存裝置讀取對應(yīng)于至少一高速緩存區(qū)塊的數(shù)據(jù),以將所述數(shù)據(jù)儲存于所述高速緩存中,其中對應(yīng)于所述讀取失敗的數(shù)據(jù)量小于所述多個高速緩存區(qū)塊中的每一高速緩存區(qū)塊的數(shù)據(jù)量。
本發(fā)明在公開上述方法的同時,也對應(yīng)地公開一種用來于一儲存系統(tǒng)中進行高速緩存管理的裝置,其中所述裝置可包括所述儲存系統(tǒng)的至少一部分(例如:一部分或全部),而所述儲存系統(tǒng)包括多個儲存裝置。所述裝置可包括:所述多個儲存裝置中的一儲存裝置,其中所述儲存裝置是用來儲存信息;以及一控制電路,設(shè)置于所述儲存系統(tǒng)中、且耦接至所述儲存裝置。例如:所述儲存裝置的訪問速度大于所述多個儲存裝置中的另一儲存裝置的訪問速度。另外,所述控制電路是用來控制所述儲存系統(tǒng)的運作、且利用所述儲存裝置作為所述另一儲存裝置的一高速緩存,其中所述高速緩存包括多個高速緩存區(qū)塊。此外,當(dāng)發(fā)生所述高速緩存的一讀取失敗時,所述控制電路自所述另一儲存裝置讀取對應(yīng)于至少一高速緩存區(qū)塊的數(shù)據(jù),以將所述數(shù)據(jù)儲存于所述高速緩存中,其中對應(yīng)于所述讀取失敗的數(shù)據(jù)量小于所述多個高速緩存區(qū)塊中的每一高速緩存區(qū)塊的數(shù)據(jù)量。
本發(fā)明的有益效果之一是,本發(fā)明的方法與相關(guān)裝置可在較少副作用、或不造成副作用的狀況下,妥善地解決既有的問題。另外,本發(fā)明的方法與相關(guān)裝置可有效提高高速緩存效能,并且不會有浪費高速緩存空間的問題。
附圖說明
圖1為依據(jù)本發(fā)明一實施例的一種儲存系統(tǒng)的示意圖。
圖2繪示圖1所示的儲存系統(tǒng)于一實施例中所涉及的實施細節(jié)。
圖3為依據(jù)本發(fā)明一實施例的一種用來于一儲存系統(tǒng)中進行高速緩存管理的方法的流程圖。
圖4繪示圖3所示的方法于一實施例中所涉及的目標(biāo)讀取數(shù)據(jù)。
圖5繪示圖3所示的方法于圖4所示實施例中所涉及的一控制方案。
圖6繪示圖3所示的方法于一實施例中所涉及的工作流程。
圖7繪示圖3所示的方法于一實施例中所涉及的工作流程。
圖8繪示圖3所示的方法于一實施例中所涉及的目標(biāo)寫入數(shù)據(jù)。
圖9繪示圖3所示的方法于圖8所示實施例中所涉及的一控制方案。
其中,附圖標(biāo)記說明如下:
100,200 儲存系統(tǒng)
110 控制電路
120-1,120-2,…,120-N, 儲存裝置
220
122,222 高速緩存
221 塊設(shè)備
300 方法
310,320,510~560 步驟
610~630
411,412,413,414,711, 存儲索引
712,713,714
421,422,423,424,721, 高速緩存區(qū)塊
722,723,724
431,432,433,434,731, 區(qū)塊群組
732,733,734
605 同步程序
具體實施方式
圖1為依據(jù)本發(fā)明一實施例的一種儲存系統(tǒng)100的示意圖。儲存系統(tǒng)100可包括一控制電路110,且可包括多個儲存裝置,諸如N個儲存裝置{120-1,120-2,…,120-N},其中控制電路110耦接至所述多個儲存裝置。符號「N」可代表大于1的正整數(shù)。例如:當(dāng)N=2時,所述多個儲存裝置可包括兩個儲存裝置120-1與120-2。又例如:當(dāng)N>2時,所述多個儲存裝置可包括三個或三個以上的儲存裝置,諸如儲存裝置120-1、120-2、…、120-N。所述N個儲存裝置{120-1,120-2,…,120-N}中的任一儲存裝置120-n(符號「n」可代表落入?yún)^(qū)間[1,N]的范圍的任一正整數(shù))的例子可包括(但不限于):固態(tài)硬盤(Solid State Drive,SSD)、硬式磁盤驅(qū)動器(Hard Disk Drive,HDD)。
依據(jù)本實施例,控制電路110是用來控制儲存系統(tǒng)100的運作,而所述N個儲存裝置{120-1,120-2,…,120-N}中的每一儲存裝置可用來儲存信息。另外,控制電路110可利用所述N個儲存裝置{120-1,120-2,…,120-N}中的某一儲存裝置的至少一部分(例如:一部分或全部)作為其它儲存裝置的一高速緩存(Cache)。例如:控制電路110可利用儲存裝置120-1來實施高速緩存122。
在實施例中,所述N個儲存裝置{120-1,120-2,…,120-N}中的任一儲存裝置120-n可代表一個實體儲存裝置、或由多個實體儲存裝置所組成的一個邏輯儲存裝置。尤其是,在所述N個儲存裝置{120-1,120-2,…,120-N}中的任一儲存裝置120-n代表由多個實體儲存裝置所組成的一個邏輯儲存裝置的狀況下,所述N個儲存裝置{120-1,120-2,…,120-N}中的每一儲存裝置可為容錯式磁盤陣列(Redundant Array of Independent Disks,以下簡稱為「RAID」)。例如:儲存裝置120-1可為由多個固態(tài)硬盤所組成的RAID,以供實施高速緩存122。又例如:其它儲存裝置{120-2,…,120-N}中的某一儲存裝置可為多個硬式磁盤驅(qū)動器所組成的RAID,以供儲存數(shù)據(jù),諸如文件系統(tǒng)中的數(shù)據(jù)或檔案、或用戶數(shù)據(jù)。另外,控制電路110可實施成執(zhí)行一程序模塊的一處理電路。例如:所述程序模塊可包括韌體碼(Firmware Code)。這只是為了說明的目的而已,并非對本發(fā)明的限制。例如:所述程序模塊可包括軟件碼(Software Code)。
在某些實施例中,用來于儲存系統(tǒng)100中進行高速緩存管理的裝置可包括儲存系統(tǒng)100的至少一部分(例如:一部分或全部)。例如:此裝置可包括儲存系統(tǒng)100的一部分,諸如控制電路110。又例如:此裝置可包括儲存系統(tǒng)100的一部分,諸如控制電路110以及所述N個儲存裝置{120-1,120-2,…,120-N}中的至少一儲存裝置(例如:一個或多個儲存裝置)。又例如:此裝置可包括儲存系統(tǒng)100的一部分,諸如控制電路110、以及設(shè)置于儲存裝置120-1中的高速緩存122。又例如:此裝置可包括儲存系統(tǒng)100的整體。所述儲存系統(tǒng)100的例子可包括(但不限于):服務(wù)器、網(wǎng)絡(luò)附加儲存(Network Attached Storage,NAS)。
圖2繪示圖1所示的儲存系統(tǒng)100于一實施例中所涉及的實施細節(jié)。于本實施例中,上述高速緩存122的大小可擴展至整個儲存裝置120-1,而儲存裝置120-1的訪問速度可大于所述N個儲存裝置{120-1,120-2,…,120-N}中的任一其它儲存裝置的訪問速度。例如:儲存裝置120-1可為固態(tài)硬盤,而所述其它儲存裝置可為塊設(shè)備(Block Device)221,諸如硬式磁盤驅(qū)動器。因應(yīng)在架構(gòu)上的這些限制條件,高速緩存122、儲存系統(tǒng)100于本實施例中分別改稱為高速緩存222、儲存系統(tǒng)200。
依據(jù)本實施例,塊設(shè)備221可用來儲存用戶數(shù)據(jù),而高速緩存222可用于儲存一部分塊設(shè)備數(shù)據(jù)(例如:所述用戶數(shù)據(jù)的一部分)的副本。高速緩存222上所述儲存哪些數(shù)據(jù)的副本,可依高速緩存222的類別而予以變化。例如:在控制電路110的控制下,高速緩存222可為一只讀高速緩存(Read-Only Cache)。又例如:在控制電路110的控制下,高速緩存222可為一讀寫高速緩存(Read-Write Cache)。不論高速緩存222為只讀高速緩存或讀寫高速緩存,高速緩存222的數(shù)據(jù)管理單位可稱為高速緩存區(qū)塊(Cache Block)。在實施例中,高速緩存222中的每個高速緩存區(qū)塊可對應(yīng)到塊設(shè)備221上的一段連續(xù)數(shù)據(jù),其中不同高速緩存區(qū)塊之間的關(guān)系則不必是連續(xù)數(shù)據(jù)??刂齐娐?10可配置一段存儲器來記錄高速緩存區(qū)塊以及塊設(shè)備221中的區(qū)塊群組之間的對應(yīng)關(guān)系,以供進行高速緩存管理運作。
例如:在高速緩存222為只讀高速緩存的狀況下,高速緩存222中儲存的內(nèi)容可為最近讀取的數(shù)據(jù)。當(dāng)收到讀取指令或讀取請求(Request)時,控制電路110會先至高速緩存222中查看欲讀取的數(shù)據(jù)是否存在。若高速緩存命中(Cache Hit),則控制電路110直接從高速緩存222中取出并回傳數(shù)據(jù);否則,控制電路110從塊設(shè)備221讀取、并儲存一份副本(Copy)于高速緩存222中,以供后續(xù)讀取之用。另外,在高速緩存222為讀寫高速緩存的狀況下,高速緩存222中儲存的內(nèi)容可為最近讀寫過的數(shù)據(jù)。除了讀取的運作方式與只讀高速緩存相同之外,還有寫入控制機制。當(dāng)有新的寫入指令或?qū)懭胝埱髸r,控制電路110會先寫入高速緩存222中,待達到某些條件(例如:儲存系統(tǒng)200閑暇、或高速緩存222已滿)再將高速緩存222中的數(shù)據(jù)寫入塊設(shè)備221中。
圖3為依據(jù)本發(fā)明一實施例的一種用來于一儲存系統(tǒng)中進行高速緩存管理的方法300的流程圖。所述方法可應(yīng)用于圖1所示的儲存系統(tǒng)100與圖2所示的儲存系統(tǒng)200中的任一者,尤其是上述的控制電路110。所述方法說明如下。
于步驟310中,控制電路110利用所述多個儲存裝置中的一儲存裝置作為所述多個儲存裝置中的另一儲存裝置的一高速緩存,其中所述儲存裝置的訪問速度大于所述另一儲存裝置的訪問速度,且所述高速緩存包括多個高速緩存區(qū)塊。為了便于理解,以儲存系統(tǒng)200為例來說明。例如:控制電路110利用儲存裝置120-1作為塊設(shè)備221的高速緩存222。這只是為了說明的目的而已,并非對本發(fā)明的限制。例如:所述儲存裝置可代表儲存裝置120-1,而所述另一儲存裝置可代表所述N個儲存裝置{120-1,120-2,…,120-N}中的任一其它儲存裝置,且高速緩存122可作為步驟310中所述的高速緩存的一例。
于步驟320中,當(dāng)發(fā)生所述高速緩存(也就是說,步驟310中所述的高速緩存,以下同)的一讀取失敗(Read Miss)時,控制電路110自所述另一儲存裝置讀取對應(yīng)于至少一高速緩存區(qū)塊的數(shù)據(jù),以將此數(shù)據(jù)儲存于所述高速緩存中,其中對應(yīng)于所述讀取失敗的數(shù)據(jù)量小于所述多個高速緩存區(qū)塊中的每一高速緩存區(qū)塊的數(shù)據(jù)量。例如:當(dāng)發(fā)生高速緩存222的所述讀取失敗時,控制電路110自塊設(shè)備221讀取對應(yīng)于上述至少一高速緩存區(qū)塊的所述數(shù)據(jù),以將此數(shù)據(jù)儲存于高速緩存222中。
依據(jù)本實施例,當(dāng)發(fā)生所述讀取失敗時,控制電路110可自所述另一儲存裝置(諸如塊設(shè)備221)讀取對應(yīng)于所述讀取失敗的一組目標(biāo)讀取數(shù)據(jù)、且自所述另一儲存裝置預(yù)先讀取至少一組額外數(shù)據(jù)(諸如一或多組額外數(shù)據(jù)),并且利用所述組目標(biāo)讀取數(shù)據(jù)與上述的至少一組額外數(shù)據(jù)作為對應(yīng)于上述至少一高速緩存區(qū)塊的所述數(shù)據(jù)。例如:當(dāng)發(fā)生所述讀取失敗時,控制電路110可自所述另一儲存裝置預(yù)先讀取上述的至少一組額外數(shù)據(jù),以供后續(xù)讀取、并且避免在所述高速緩存(諸如高速緩存222)中的上述至少一高速緩存區(qū)塊中產(chǎn)生任何高速緩存空洞,其中對應(yīng)于所述讀取失敗的所述數(shù)據(jù)量可等于所述組目標(biāo)讀取數(shù)據(jù)的數(shù)據(jù)量。另外,在所述另一儲存裝置中,對應(yīng)于上述至少一高速緩存區(qū)塊的所述數(shù)據(jù)可為連續(xù)數(shù)據(jù)??刂齐娐?10可檢查對應(yīng)于所述讀取失敗的一讀取數(shù)據(jù)范圍是否符合一預(yù)定高速緩存規(guī)則,其中(步驟320)自所述另一儲存裝置讀取對應(yīng)于上述至少一高速緩存區(qū)塊的所述數(shù)據(jù)以將所述數(shù)據(jù)儲存于所述高速緩存中的運作是在所述讀取數(shù)據(jù)范圍不符合所述預(yù)定高速緩存規(guī)則的狀況下進行,以避免在所述高速緩存(諸如高速緩存222)中的上述至少一高速緩存區(qū)塊中產(chǎn)生任何高速緩存空洞。例如:所述預(yù)定高速緩存規(guī)則可代表「所述讀取數(shù)據(jù)范圍對齊一個或多個高速緩存區(qū)塊」。于是,當(dāng)所述讀取數(shù)據(jù)范圍對齊一個或多個高速緩存區(qū)塊時,控制電路110可判斷所述讀取數(shù)據(jù)范圍符合所述預(yù)定高速緩存規(guī)則;否則,控制電路110可判斷所述讀取數(shù)據(jù)范圍不符合所述預(yù)定高速緩存規(guī)則。
請注意,針對不同的狀況,控制電路110的高速緩存管理運作可予以改變。依據(jù)一實施例,當(dāng)發(fā)生所述高速緩存的另一讀取失敗時,控制電路110可自所述另一儲存裝置(諸如塊設(shè)備221)讀取對應(yīng)于一個或多個高速緩存區(qū)塊的其它數(shù)據(jù),以將所述其它數(shù)據(jù)儲存于所述高速緩存(諸如高速緩存222)中,其中對應(yīng)于所述另一讀取失敗的數(shù)據(jù)量等于所述其它數(shù)據(jù)的數(shù)據(jù)量。例如:(此實施例中所述)自所述另一儲存裝置讀取所述其它數(shù)據(jù)以將所述其它數(shù)據(jù)儲存于所述高速緩存中的運作是在對應(yīng)于所述另一讀取失敗的一讀取數(shù)據(jù)范圍符合所述預(yù)定高速緩存規(guī)則的狀況下進行。由于本實施例的所述另一讀取失敗所對應(yīng)的所述讀取數(shù)據(jù)范圍本來就符合所述預(yù)定高速緩存規(guī)則(尤其是,對齊一個或多個高速緩存區(qū)塊),故所述另一讀取失敗所對應(yīng)的讀取指令根本就不可能導(dǎo)致在所述高速緩存(諸如高速緩存222)中產(chǎn)生任何高速緩存空洞。
依據(jù)某些實施例,步驟320中所述的高速緩存(諸如高速緩存222)是讀寫高速緩存。控制電路110可觸發(fā)一同步程序(Synchronization Procedure),其中所述同步程序是用來將所述高速緩存中的一組新寫入數(shù)據(jù)同步(Synchronize)至所述另一儲存裝置(諸如塊設(shè)備221)。于所述同步程序中,在將所述高速緩存中的所述組新寫入數(shù)據(jù)同步至所述另一儲存裝置之前,控制電路110可檢查所述高速緩存中用來儲存所述組新寫入數(shù)據(jù)的一個或多個高速緩存區(qū)塊是否存在至少一高速緩存空洞,以選擇性地填滿上述至少一高速緩存空洞。例如:于所述同步程序中,當(dāng)偵測到所述高速緩存中用來儲存所述組新寫入數(shù)據(jù)的所述一個或多個高速緩存區(qū)塊存在上述至少一高速緩存空洞時,控制電路110可先自所述另一儲存裝置讀取對應(yīng)于上述至少一高速緩存空洞的數(shù)據(jù)以填滿上述至少一高速緩存空洞,然后將所述高速緩存的所述一個或多個高速緩存區(qū)塊中的全部數(shù)據(jù)同步至所述另一儲存裝置。又例如:于所述同步程序中,當(dāng)偵測到所述高速緩存中用來儲存所述組新寫入數(shù)據(jù)的所述一個或多個高速緩存區(qū)塊不存在任何高速緩存空洞時,控制電路110可直接將所述高速緩存的所述一個或多個高速緩存區(qū)塊中的全部數(shù)據(jù)同步至所述另一儲存裝置。
圖4繪示圖3所示的方法300于一實施例中所涉及的目標(biāo)讀取數(shù)據(jù),諸如塊設(shè)備221中的所述區(qū)塊群組431、432、433與434中的任一區(qū)塊群組內(nèi)以陰影表示的小方塊。例如:塊設(shè)備221中的最小存取單位(也就是說,塊設(shè)備221中的區(qū)塊)的大小為4096字節(jié)(4Kilobyte,以下簡稱為「4KB」),此即塊設(shè)備221的區(qū)塊大小。另外,高速緩存222中的每一高速緩存區(qū)塊的大小可為65536字節(jié)(64Kilobyte,以下簡稱為「64KB」)。相似地,塊設(shè)備221中的每一區(qū)塊群組(諸如區(qū)塊群組431、432、433與434)的大小可為64KB,以便于進行高速緩存管理。尤其是,控制電路110可于儲存系統(tǒng)200的存儲器中存儲索引411、412、413與414,諸如數(shù)值2、5、7與4,以分別指出所述高速緩存區(qū)塊421、422、423與424以及所述區(qū)塊群組431、432、433與434之間的映射(Mapping)關(guān)系。
圖5繪示圖3所示的方法300于圖4所示實施例中所涉及的一控制方案。依據(jù)此控制方案,控制電路110可自所述另一儲存裝置預(yù)先讀取上述的至少一組額外數(shù)據(jù)。此狀況下,所述高速緩存區(qū)塊421、422、423與424內(nèi)的陰影可代表所述區(qū)塊群組431、432、433與434中的全部數(shù)據(jù)(其于所述區(qū)塊群組431、432、433與434中以陰影表示)的副本。
圖6繪示圖3所示的方法300于一實施例中所涉及的工作流程。
于步驟510中,控制電路110接收讀取請求。
于步驟520中,控制電路110檢查欲讀取的數(shù)據(jù)是否在高速緩存222中。當(dāng)所述數(shù)據(jù)在高速緩存222中,進入步驟550;否則,進入步驟530。
于步驟530中,控制電路110檢查讀取數(shù)據(jù)范圍是否對齊高速緩存區(qū)塊。例如:控制電路110可進行計算以判斷所述讀取數(shù)據(jù)范圍(也就是說,欲讀取的數(shù)據(jù)的地址范圍)是否對齊高速緩存222中的高速緩存區(qū)塊。當(dāng)所述讀取數(shù)據(jù)范圍對齊高速緩存區(qū)塊,進入步驟560;否則,進入步驟540。
于步驟540中,控制電路110將讀取數(shù)據(jù)范圍擴大至與一個或多個高速緩存區(qū)塊對齊。于是,最新的讀取數(shù)據(jù)范圍變成步驟540當(dāng)中擴大后的讀取范圍。
于步驟550中,控制電路110從高速緩存222讀取數(shù)據(jù)。
于步驟560中,依據(jù)最新的讀取數(shù)據(jù)范圍,控制電路110從塊設(shè)備221讀取數(shù)據(jù)、并將讀取的數(shù)據(jù)寫入高速緩存222。
例如:若于步驟530中已判斷對齊,則控制電路110直接于步驟560中從塊設(shè)備221讀??;否則,控制電路110于步驟540中將讀取范圍擴大至與所述一個或多個高速緩存區(qū)塊對齊,再于步驟560中從塊設(shè)備221預(yù)先讀取出對齊高速緩存區(qū)塊的數(shù)據(jù),并將讀取的數(shù)據(jù)寫入高速緩存222中。如此可以確保每次發(fā)生高速緩存讀取失敗后,新寫入的高速緩存區(qū)塊是沒有空洞的。
依據(jù)某些實施例,預(yù)先讀取的范圍并不限制在一個高速緩存區(qū)塊。例如:控制電路110可依儲存系統(tǒng)上所執(zhí)行的應(yīng)用的存取特性,將對應(yīng)于相鄰的高速緩存區(qū)塊的數(shù)據(jù)都預(yù)先讀取至高速緩存222中,以進一步提升高速緩存命中率。又例如:控制電路110可檢查塊設(shè)備221當(dāng)中某一區(qū)塊群組中的一區(qū)塊以及另一區(qū)塊群組中的一區(qū)塊是否為連續(xù)數(shù)據(jù)。當(dāng)偵測到這兩個區(qū)塊群組各自的這兩個區(qū)塊所述連續(xù)數(shù)據(jù)時,控制電路110可于步驟540中將讀取數(shù)據(jù)范圍擴大至包括這兩個區(qū)塊群組。于是,控制電路110可將塊設(shè)備221中的讀取數(shù)據(jù)范圍(諸如欲讀取的數(shù)據(jù)的區(qū)塊的范圍)擴大到整段連續(xù)數(shù)據(jù)所對應(yīng)的區(qū)塊的范圍。
以EXT4文件系統(tǒng),其最小的讀寫單位為4KB,高速緩存區(qū)塊大小為64KB,當(dāng)發(fā)生高速緩存讀取失敗時,若讀取請求有未滿64KB的部份,則一律讀滿64KB,再寫回高速緩存222中。通過此預(yù)先讀取機制,能減少高速緩存中的空洞。若短時間內(nèi)又存取到同一高速緩存區(qū)塊中的其它數(shù)據(jù)時,由于數(shù)據(jù)已預(yù)先讀取并儲存于高速緩存222中,故高速緩存命中的機率便可增加。因此,控制電路110可常常直接從高速緩存讀取,并讀取塊設(shè)備221的次數(shù)可減少,進而提升儲存系統(tǒng)200的整體效能。
圖7繪示圖3所示的方法300于一實施例中所涉及的工作流程,其中同步程序605可作為上述所述同步程序的一例。此工作流程說明如下。
于步驟610中,控制電路110檢查某(些)高速緩存區(qū)塊上的數(shù)據(jù)是否完整。例如:上述的某(些)高速緩存區(qū)塊可代表一個或多個高速緩存區(qū)塊。當(dāng)新數(shù)據(jù)占滿所述(些)高速緩存區(qū)塊(這可表示所述(些)高速緩存區(qū)塊上的數(shù)據(jù)完整),進入步驟630;否則(這可表示,所述(些)高速緩存區(qū)塊上有缺數(shù)據(jù)之處,也就是說,高速緩存空洞),進入步驟620。
于步驟620中,控制電路110從塊設(shè)備221讀取對應(yīng)的數(shù)據(jù)(諸如對應(yīng)于所述(些)高速緩存區(qū)塊的塊設(shè)備區(qū)塊當(dāng)中,所述(些)高速緩存區(qū)塊所缺的數(shù)據(jù)),并將所述對應(yīng)的數(shù)據(jù)和高速緩存222上的新數(shù)據(jù)合并。于是,所述(些)高速緩存區(qū)塊不存在任何高速緩存空洞。
于步驟630中,控制電路110將整個高速緩存區(qū)塊的數(shù)據(jù)寫入塊設(shè)備221。
在實施例中,不需要針對寫入請求(或?qū)懭胫噶?套用預(yù)讀機制。于寫入時,若還要耗費額外的硬盤讀取時間,會影響當(dāng)下的寫入效能。因此,儲存了寫入數(shù)據(jù)的高速緩存區(qū)塊中,可能會有高速緩存空洞,其中這個部分的高速緩存空洞可于同步程序605中被填滿。
圖8繪示圖3所示的方法300于一實施例中所涉及的目標(biāo)寫入數(shù)據(jù),諸如高速緩存222中的所述高速緩存區(qū)塊721、722、723與724中的任一高速緩存區(qū)塊內(nèi)以陰影表示的小方塊。例如:塊設(shè)備221中的最小存取單位(也就是說,塊設(shè)備221中的區(qū)塊)的大小為4KB,此即塊設(shè)備221的區(qū)塊大小。另外,高速緩存222中的每一高速緩存區(qū)塊的大小可為64KB。相似地,塊設(shè)備221中的每一區(qū)塊群組(諸如區(qū)塊群組731、732、733與734)的大小可為64KB,以便于進行高速緩存管理。尤其是,控制電路110可于儲存系統(tǒng)200的存儲器中存儲索引711、712、713與714,諸如數(shù)值2、5、7與4,以分別指出所述高速緩存區(qū)塊721、722、723與724以及所述區(qū)塊群組731、732、733與734之間的映射關(guān)系。
為了便于理解,于一實施例中,假設(shè):控制電路110的一部分高速緩存管理運作可被暫時地禁能、或被暫時地擱置,以致控制電路110尚未執(zhí)行步驟620的運作。此狀況下,所述高速緩存區(qū)塊721、722、723與724內(nèi)沒有陰影的區(qū)域可代表高速緩存空洞。這只是為了說明的目的而已,并非對本發(fā)明的限制。
圖9繪示圖3所示的方法300于圖8所示實施例中所涉及的一控制方案。依據(jù)此控制方案,控制電路110可執(zhí)行步驟620的運作。此狀況下,所述高速緩存區(qū)塊721、722、723與724內(nèi)的陰影可代表控制電路110于步驟620中所備妥的合并數(shù)據(jù),以供進一步寫入。例如:于步驟630中,控制電路110可將所述合并數(shù)據(jù)寫入所述區(qū)塊群組731、732、733與734,其中所述區(qū)塊群組731、732、733與734內(nèi)的陰影可代表被寫入的數(shù)據(jù)。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。