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