專利名稱:一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù),特別是涉及一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的方 法和裝置。
背景技術(shù):
隨著信息技術(shù)的高速發(fā)展,目前出現(xiàn)了能夠提供數(shù)據(jù)存儲(chǔ)業(yè)務(wù)的數(shù)據(jù)存 儲(chǔ)系統(tǒng)。數(shù)據(jù)存儲(chǔ)系統(tǒng)中主要包括磁盤陣列和主機(jī)處理器,其中,磁盤陣列 用于存儲(chǔ)數(shù)據(jù),主機(jī)處理器用于將外部用戶的數(shù)據(jù)寫入磁盤陣列,或者從磁 盤陣列中讀取用戶所需的數(shù)據(jù)。然而,由于主機(jī)處理器的工作頻率遠(yuǎn)大于磁
盤陣列的工作頻率,因此,主機(jī)處理器對(duì)磁盤陣列發(fā)出一次讀寫命令后,需 要等待較長的時(shí)間才能夠收到磁盤陣列的響應(yīng)來完成數(shù)據(jù)讀寫,這樣,則大 大降低了數(shù)據(jù)讀寫的效率。
為了解決主機(jī)處理器與磁盤陣列的工作頻率相差較大導(dǎo)致數(shù)據(jù)讀寫效
率低下的問題,目前,采用了在主機(jī)處理器與磁盤陣列之間設(shè)置緩存(Cache ) 的做法。圖l是數(shù)據(jù)存儲(chǔ)控制系統(tǒng)的結(jié)構(gòu)示意圖。參見圖1,為了提高數(shù)據(jù) 讀寫的效率,設(shè)置工作頻率介于主機(jī)處理器和磁盤陣列之間的緩存控制器和 緩存。這樣,將外部數(shù)據(jù)寫入磁盤陣列的過程包括主機(jī)處理器將外部發(fā)來 的數(shù)據(jù)寫入指令發(fā)送給緩存控制器;緩存控制器檢查Cache中是否有空閑的 存儲(chǔ)空間,如果有,則直接將數(shù)據(jù)寫入指令中攜帶的數(shù)據(jù)寫入Cache中空閑 的存儲(chǔ)空間,如果沒有,則需要使用預(yù)先配置的替換算法,得到Cache中能 夠替換的存儲(chǔ)空間,將該能夠替換的存儲(chǔ)空間中存儲(chǔ)的數(shù)據(jù)刪除,然后將數(shù) 據(jù)寫入指令中攜帶的數(shù)據(jù)寫入該能夠替換的存儲(chǔ)空間中;磁盤陣列掃描緩存 控制器,確定有新寫入的數(shù)據(jù)后,從Cache中讀取該新寫入的數(shù)據(jù),從而完
成了外部數(shù)據(jù)寫入磁盤陣列的過程。
外部從磁盤陣列中讀取數(shù)據(jù)的過程包括主機(jī)處理器將外部發(fā)來的數(shù)據(jù)
讀取請(qǐng)求發(fā)送給緩存控制器;緩存控制器檢查Cache中是否存儲(chǔ)有外部所請(qǐng) 求的數(shù)據(jù),如果有,則直接將Cache中存儲(chǔ)的對(duì)應(yīng)的數(shù)據(jù)發(fā)送給主機(jī)處理器, 如果沒有,則向磁盤陣列發(fā)送該數(shù)據(jù)讀取請(qǐng)求,并且,為了進(jìn)一步提高數(shù)據(jù) 讀取命中率,緩存控制器還根據(jù)預(yù)先配置的預(yù)取算法,預(yù)測(cè)后續(xù)會(huì)從磁盤陣 列中讀取的數(shù)據(jù),將預(yù)取數(shù)據(jù)的請(qǐng)求也發(fā)送給磁盤陣列;磁盤陣列將當(dāng)前請(qǐng) 求的數(shù)據(jù)和預(yù)取的數(shù)據(jù)均發(fā)送給緩存控制器,緩存控制器將其存儲(chǔ)在Cache 中,主機(jī)處理器從Cache中讀取出當(dāng)前請(qǐng)求的數(shù)據(jù)后發(fā)送到外部。
由以上描述可以看出,替換算法和預(yù)取算法是利用Cache實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ) 過程中的兩個(gè)重要算法。替換算法保證在Cache中沒有空閑存儲(chǔ)空間時(shí),能 夠替換出存儲(chǔ)空間來存儲(chǔ)最新接收到的數(shù)據(jù),而預(yù)取算法則能夠預(yù)測(cè)主機(jī)處 理器后續(xù)會(huì)讀取的數(shù)據(jù)并提前存儲(chǔ)到Cache中,保證主機(jī)處理器在后續(xù)訪問 時(shí)能夠從Cache中一次讀取到數(shù)據(jù),提高讀取數(shù)據(jù)的命中率。
然而,在現(xiàn)有技術(shù)中,緩存控制器使用的替換算法和預(yù)取算法是單一的, 也就是說,無論對(duì)于何種業(yè)務(wù)類型的讀寫數(shù)據(jù),緩存控制器均按照同一種替 換算法替換出Cache中一段存儲(chǔ)空間,并且,緩存控制器均按照同一種預(yù)取 算法預(yù)測(cè)出主機(jī)處理器后續(xù)想要讀取的數(shù)據(jù)?,F(xiàn)有技術(shù)此種使用單一替換算 法和預(yù)取算法的做法,無法適應(yīng)多種業(yè)務(wù)類型的多種使用需求,往往會(huì)導(dǎo)致 主機(jī)處理器從Cache中讀取數(shù)據(jù)的命中率4氐下。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的一個(gè)目的在于提供一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的方 法,本發(fā)明的另一個(gè)目的在于提供一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置,本發(fā) 明的再一個(gè)目的在于提供一種網(wǎng)絡(luò)存儲(chǔ)控制系統(tǒng),以便于提高從Cache中讀 取數(shù)據(jù)的命中率。
為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的
一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的方法,設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替 換算法或預(yù)取算法,該方法包括
根據(jù)用戶發(fā)來的指令確定當(dāng)前的業(yè)務(wù)訪問類型;
選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法;
使用所選擇的替換算法或預(yù)取算法將數(shù)據(jù)存儲(chǔ)到緩存Cache中。
一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置,包括
交互單元,用于接收用戶發(fā)送的指令;
存儲(chǔ)單元,用于存儲(chǔ)每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法; 處理單元,用于根據(jù)交互單元接收到的指令確定當(dāng)前的業(yè)務(wù)訪問類型,
從存儲(chǔ)單元中選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法,將所
選擇的替換算法或預(yù)取算法的信息發(fā)送給緩存執(zhí)行單元;
緩存執(zhí)行單元,用于使用所選擇的替換算法或預(yù)取算法將數(shù)據(jù)存儲(chǔ)到
Cache中。
一種網(wǎng)絡(luò)存儲(chǔ)控制系統(tǒng),包括用戶主機(jī)通道、磁盤陣列通道、位于上述 兩個(gè)通道之間用以提高用戶主機(jī)響應(yīng)速度的緩存,以及用以根據(jù)用戶主機(jī)業(yè) 務(wù)類型動(dòng)態(tài)改變自身算法的緩存控制器,其中該算法至少包括替換算法和預(yù) 取算法兩類算法中的一類。
由此可見,在本發(fā)明中,針對(duì)每一種業(yè)務(wù)的訪問特點(diǎn)來選擇將數(shù)據(jù)存儲(chǔ) 到Cache中的替換算法或預(yù)取算法,保證Cache中存儲(chǔ)的數(shù)據(jù)盡可能的是主 機(jī)處理器后續(xù)訪問所需使用的,因此,提高了主機(jī)處理器從Cache中讀取數(shù) 據(jù)的命中率,從而提高了系統(tǒng)的訪問效率,提高了系統(tǒng)的吞吐量。
圖1是數(shù)據(jù)存儲(chǔ)控制系統(tǒng)的結(jié)構(gòu)示意圖。
圖2是在本發(fā)明實(shí)施例1中一種利用替換算法在緩存中進(jìn)行數(shù)據(jù)存儲(chǔ)的 流程圖。
圖3是在本發(fā)明實(shí)施例1中另一種利用替換算法在緩存中進(jìn)行數(shù)據(jù)存儲(chǔ)
的流程圖。
圖4是在本發(fā)明實(shí)施例2中一種利用預(yù)取算法在緩存中進(jìn)行數(shù)據(jù)存儲(chǔ)的 流程圖。
圖5是在本發(fā)明實(shí)施例2中另一種利用預(yù)取算法在緩存中進(jìn)行數(shù)據(jù)存儲(chǔ) 的流程圖。
圖6是在本發(fā)明一個(gè)實(shí)施例中的利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置的結(jié)構(gòu) 示意圖。
圖7是在本發(fā)明一個(gè)實(shí)施例中利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置設(shè)置在緩 存控制器中的具體結(jié)構(gòu)示意圖。
圖8是在本發(fā)明另一個(gè)實(shí)施例中利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置設(shè)置在 主機(jī)處理器和緩存控制器中的具體結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖及具體實(shí) 施例對(duì)本發(fā)明作進(jìn)一 步地詳細(xì)描述。
在實(shí)際的業(yè)務(wù)實(shí)現(xiàn)中,用戶在進(jìn)行不同類型的業(yè)務(wù)時(shí)對(duì)數(shù)據(jù)的訪問方式 是不同的,這樣,主機(jī)處理器根據(jù)用戶請(qǐng)求從Cache中讀取數(shù)據(jù)的方式則不 同。比如,用戶進(jìn)行的業(yè)務(wù)需要始終訪問連續(xù)性數(shù)據(jù),即連續(xù)性訪問業(yè)務(wù), 如用戶下載一部電影,這樣,主機(jī)處理器則會(huì)從Cache中從前至后的讀取連 續(xù)存儲(chǔ)的數(shù)據(jù)。再如,用戶進(jìn)行的業(yè)務(wù)需要對(duì)部分?jǐn)?shù)據(jù)進(jìn)行反復(fù)使用,即局 部性反復(fù)訪問業(yè)務(wù),如用戶對(duì)數(shù)據(jù)庫中的特定數(shù)據(jù)進(jìn)行反復(fù)訪問,這樣,主 機(jī)處理器則會(huì)從Cache中反復(fù)讀取一部分特定數(shù)據(jù)。又如,用戶進(jìn)行的業(yè)務(wù) 需要對(duì)數(shù)據(jù)進(jìn)行循環(huán)使用,即循環(huán)訪問業(yè)務(wù),這樣,主機(jī)處理器則會(huì)從Cache 中循環(huán)讀取全部數(shù)據(jù)。
在現(xiàn)有技術(shù)中,由于使用單一替換算法,比如為先進(jìn)先出(FIFO)算 法,因此,當(dāng)有新的數(shù)據(jù)到來時(shí),根據(jù)該先進(jìn)先出算法,就會(huì)用新到來的數(shù) 據(jù)替換Cache中最先存儲(chǔ)的數(shù)據(jù),而如果當(dāng)前進(jìn)行的是局部性反復(fù)訪問業(yè)
務(wù),那么,主機(jī)處理器在多次訪問中很可能均需要讀取最先存儲(chǔ)在Cache中 的原始數(shù)據(jù),這樣,用FIFO算法作為替換算法,則會(huì)導(dǎo)致主機(jī)處理器后續(xù) 無法訪問到正確的數(shù)據(jù),降低了讀取數(shù)據(jù)的命中率。另外,由于現(xiàn)有技術(shù)中 使用單一預(yù)取算法,如局部性周邊預(yù)取算法,那么,在從磁盤陣列中預(yù)取數(shù) 據(jù)時(shí),則會(huì)預(yù)取出存儲(chǔ)在當(dāng)前所請(qǐng)求數(shù)據(jù)之前和之后特定位置的數(shù)據(jù)并存儲(chǔ) 在Cache中,然而,如果當(dāng)前進(jìn)行的業(yè)務(wù)是連續(xù)性訪問業(yè)務(wù)時(shí),預(yù)取并存儲(chǔ) 在Cache中的當(dāng)前所請(qǐng)求數(shù)據(jù)之前特定位置的數(shù)據(jù)則并不是所需的,因此, 也降低了讀取數(shù)據(jù)的命中率。
可見,要想保證每一種業(yè)務(wù)的訪問到來時(shí),主機(jī)處理器從Cache中讀取 數(shù)據(jù)的命中率盡可能高,則必須針對(duì)每一種業(yè)務(wù)的訪問特點(diǎn)來選擇將數(shù)據(jù)存 儲(chǔ)到Cache中的替換算法或預(yù)取算法。
因此,本發(fā)明提出了一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的方法。在該方法中, 針對(duì)不同業(yè)務(wù)類型的訪問特點(diǎn),設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或 預(yù)取算法;根據(jù)用戶發(fā)來的指令確定當(dāng)前的業(yè)務(wù)訪問類型;選擇與當(dāng)前的業(yè) 務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法;使用所選擇的替換算法或預(yù)取算法 將數(shù)據(jù)存儲(chǔ)到Cache中。
根據(jù)本發(fā)明方法可知,本發(fā)明具體可以應(yīng)用于以下兩種業(yè)務(wù)場(chǎng)景
業(yè)務(wù)場(chǎng)景一利用替換算法將數(shù)據(jù)存儲(chǔ)到Cache中。
在該業(yè)務(wù)場(chǎng)景一中,本發(fā)明方法中提到的算法為替換算法,此時(shí),本領(lǐng) 域技術(shù)人員可以想到,本發(fā)明方法提及的用戶發(fā)來的指令為用戶發(fā)來的數(shù)據(jù) 寫入指令,并且,存儲(chǔ)到Cache中的數(shù)據(jù)為數(shù)據(jù)寫入指令中攜帶的數(shù)據(jù)。
業(yè)務(wù)場(chǎng)景二利用預(yù)取算法將預(yù)取的數(shù)據(jù)存儲(chǔ)到Cache中。
在該業(yè)務(wù)場(chǎng)景二中,本發(fā)明方法中提到的算法為預(yù)取算法,此時(shí),本領(lǐng) 域技術(shù)人員可以想到,本發(fā)明方法提及的用戶發(fā)來的指令為用戶發(fā)來的數(shù)據(jù) 讀取指令,并且,存儲(chǔ)到Cache中的數(shù)據(jù)為根據(jù)數(shù)據(jù)讀取指令從磁盤陣列中 預(yù)取的數(shù)據(jù)。
下面則針對(duì)本發(fā)明應(yīng)用的上述兩種業(yè)務(wù)場(chǎng)景分別舉具體實(shí)施例,來說明
本發(fā)明的具體實(shí)現(xiàn)流程。 實(shí)施例1:
本實(shí)施例針對(duì)上述業(yè)務(wù)場(chǎng)景一。
圖2是在本發(fā)明實(shí)施例1中一種利用替換算法在緩存中進(jìn)行數(shù)據(jù)存儲(chǔ)的
流程圖。參見圖1和圖2,在本實(shí)施例中,可以采用主機(jī)處理器確定應(yīng)使用 的替換算法并通知緩存控制器的方式,具體實(shí)現(xiàn)過程具體包括以下步驟 步驟201:預(yù)先在主機(jī)處理器上設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法。
在本步驟中,對(duì)于每一種業(yè)務(wù)訪問類型,根據(jù)其訪問數(shù)據(jù)的特點(diǎn),來設(shè) 置能夠提高訪問數(shù)據(jù)命中率的替換算法。
比如,對(duì)于連續(xù)性訪問業(yè)務(wù),由于主機(jī)處理器會(huì)從Cache中按先進(jìn)先讀 的順序來讀取連續(xù)存儲(chǔ)的數(shù)據(jù),這樣,如果需要替換出空間,則應(yīng)該先替換 最先存儲(chǔ)到Cache中的數(shù)據(jù),因此,對(duì)應(yīng)的替換算法可以為FIFO算法。
再如,對(duì)于局部性反復(fù)訪問業(yè)務(wù),由于主機(jī)處理器會(huì)從Cache中反復(fù)讀 取一部分特定數(shù)據(jù),其他位置的數(shù)據(jù)讀取過后則不會(huì)再讀取。這樣,如果需 要替換出空間,則應(yīng)該先替換Cache中最近最少使用的數(shù)據(jù),因此,對(duì)應(yīng)的 替換算法可以為最近最少使用(LRU, Least Recently Used )算法。
步驟202:預(yù)先在主機(jī)處理器和緩存控制器上設(shè)置每一個(gè)替換算法對(duì)應(yīng) 的算法標(biāo)簽(Ari-Tag)。
步驟203:主機(jī)處理器確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系。
本步驟中,確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系,至少包括如下兩
種方式
方式一、根據(jù)用戶的配置確定。
在該方式一中,用戶可以通過圖形化用戶界面(GUI)方式、命令行方 式或配置文件方式向主機(jī)處理器輸入包括業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型對(duì)應(yīng)關(guān) 系的配置信息,主機(jī)處理器根據(jù)該配置信息確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的 對(duì)應(yīng)關(guān)系。
方式二、根據(jù)業(yè)務(wù)統(tǒng)計(jì)結(jié)果確定。
在該方式二中,主機(jī)處理器可以在一個(gè)設(shè)定時(shí)間長度內(nèi)統(tǒng)計(jì)攜帶任意一
個(gè)業(yè)務(wù)標(biāo)識(shí)的訪問請(qǐng)求對(duì)Cache中數(shù)據(jù)的訪問方式,根據(jù)統(tǒng)計(jì)結(jié)果確定該業(yè) 務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系。比如,主機(jī)處理器在30分鐘的時(shí)間長 度內(nèi),統(tǒng)計(jì)出攜帶業(yè)務(wù)標(biāo)識(shí)1的訪問請(qǐng)求對(duì)Cache中數(shù)據(jù)的訪問方式均為連 續(xù)性訪問,那么,則可以確定業(yè)務(wù)標(biāo)識(shí)1與連續(xù)性訪問業(yè)務(wù)的對(duì)應(yīng)關(guān)系。
步驟204:主機(jī)處理器接收外部發(fā)來的攜帶數(shù)據(jù)的數(shù)據(jù)寫入指令。
步驟205:主機(jī)處理器根據(jù)數(shù)據(jù)寫入指令中攜帶的業(yè)務(wù)標(biāo)識(shí),以及已確 定的業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系,確定當(dāng)前的業(yè)務(wù)訪問類型。
步驟206:主機(jī)處理器根據(jù)預(yù)先設(shè)置的每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換 算法,選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法。
步驟207:主機(jī)處理器根據(jù)預(yù)先設(shè)置的每一個(gè)替換算法對(duì)應(yīng)的Ari-Tag, 確定與所選擇的替換算法對(duì)應(yīng)的Ari-Tag。
步驟208:主機(jī)處理器將與所選擇的替換算法對(duì)應(yīng)的Ari-Tag攜帶在數(shù) 據(jù)寫入指令中發(fā)送至緩存控制器。
步驟209:緩存控制器檢查Cache中是否有空閑的存儲(chǔ)空間,如果有, 則執(zhí)行步驟210,否則,執(zhí)行步驟211。
步驟210:緩存控制器直接將數(shù)據(jù)寫入指令中攜帶的數(shù)據(jù)寫入Cache中 空閑的存儲(chǔ)空間,結(jié)束當(dāng)前流程。
步驟211:緩存控制器根據(jù)數(shù)據(jù)寫入指令中攜帶的Ari-Tag,和預(yù)先設(shè) 置的每一個(gè)替換算法對(duì)應(yīng)的Ari-Tag,確定所使用的替換算法。
步驟212:緩存控制器使用所確定的替換算法,得到Cache中能夠替換 的存儲(chǔ)空間。
步驟213:緩存控制器將能夠替換的存儲(chǔ)空間中存儲(chǔ)的數(shù)據(jù)刪除,然后 將數(shù)據(jù)寫入指令中攜帶的數(shù)據(jù)寫入該能夠替換的存儲(chǔ)空間中。
圖3是在本發(fā)明實(shí)施例1中另一種利用替換算法在緩存中進(jìn)行數(shù)據(jù)存儲(chǔ) 的流程圖。參見圖1和圖3,在本實(shí)施例中,還可以采用由緩存控制器確定
應(yīng)使用的替換算法的方式,具體實(shí)現(xiàn)過程具體包括以下步驟
步驟301:預(yù)先在緩存控制器上設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法。
本步驟中設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法的實(shí)現(xiàn)過程與上述
步驟201處所述的設(shè)置過程完全相同。
步驟302:緩存控制器確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系。
本步驟中確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系的過程與上述步驟 203處確定該對(duì)應(yīng)關(guān)系的過程完全相同。
步驟303:主機(jī)處理器接收外部發(fā)來的攜帶數(shù)據(jù)的數(shù)據(jù)寫入指令,將該 數(shù)據(jù)寫入指令發(fā)送至緩存控制器。
步驟304:緩存控制器根據(jù)數(shù)據(jù)寫入指令中攜帶的業(yè)務(wù)標(biāo)識(shí),以及已確 定的業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系,確定當(dāng)前的業(yè)務(wù)訪問類型。
步驟305:緩存控制器根據(jù)預(yù)先設(shè)置的每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換 算法,選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法。
步驟306:緩存控制器檢查Cache中是否有空閑的存儲(chǔ)空間,如果有, 則執(zhí)行步驟307,否則,執(zhí)行步驟308。
步驟307:緩存控制器直接將數(shù)據(jù)寫入指令中攜帶的數(shù)據(jù)寫入Cache中 空閑的存儲(chǔ)空間,結(jié)束當(dāng)前流程。
步驟308:緩存控制器使用所選擇的替換算法,得到Cache中能夠替換 的存儲(chǔ)空間。
步驟309:緩存控制器將能夠替換的存儲(chǔ)空間中存儲(chǔ)的數(shù)據(jù)刪除,然后 將數(shù)據(jù)寫入指令中攜帶的數(shù)據(jù)寫入該能夠替換的存儲(chǔ)空間中。 實(shí)施例2:
本實(shí)施例針對(duì)上述業(yè)務(wù)場(chǎng)景二。
圖4是在本發(fā)明實(shí)施例2中一種利用預(yù)取算法在緩存中進(jìn)行數(shù)據(jù)存儲(chǔ)的 流程圖。參見圖1和圖4,在本實(shí)施例中,可以采用主機(jī)處理器確定應(yīng)使用 的預(yù)取算法并通知緩存控制器的方式,具體實(shí)現(xiàn)過程具體包括以下步驟
步驟401:預(yù)先在主機(jī)處理器上設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的預(yù)取算法。
在本步驟中,對(duì)于每一種業(yè)務(wù)訪問類型,根據(jù)其訪問數(shù)據(jù)的特點(diǎn),來設(shè) 置能夠提高訪問數(shù)據(jù)命中率的預(yù)取算法
比如,對(duì)于連續(xù)性訪問業(yè)務(wù),由于主機(jī)處理器會(huì)從Cache中讀取連續(xù)的 數(shù)據(jù),這樣,預(yù)取的數(shù)據(jù)就應(yīng)該是緊接著當(dāng)前所需讀取數(shù)據(jù)的后續(xù)數(shù)據(jù),因 此,對(duì)應(yīng)的預(yù)取算法可以為順序讀取算法。
再如,對(duì)于局部性周邊訪問業(yè)務(wù),主機(jī)處理器從Cache中讀取一部分?jǐn)?shù) 據(jù)后,下次需讀取的數(shù)據(jù)則是當(dāng)前所讀取數(shù)據(jù)周邊的數(shù)據(jù)。這樣,預(yù)取的數(shù) 據(jù)就應(yīng)該是當(dāng)前所需讀取數(shù)據(jù)之前和之后特定范圍內(nèi)的數(shù)據(jù),因此,對(duì)應(yīng)的 替換算法可以為局部性周邊預(yù)取算法。
步驟402:預(yù)先在主機(jī)處理器和緩存控制器上設(shè)置每一個(gè)預(yù)取算法對(duì)應(yīng) 的Ari-Tag。
步驟403:主機(jī)處理器確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系。
本步驟的實(shí)現(xiàn)過程與上述步驟203的實(shí)現(xiàn)過程完全相同。
步驟404:主機(jī)處理器接收外部發(fā)來的數(shù)據(jù)讀取指令。
步驟405:主機(jī)處理器根據(jù)數(shù)據(jù)讀取指令中攜帶的業(yè)務(wù)標(biāo)識(shí),以及已確
定的業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系,確定當(dāng)前的業(yè)務(wù)訪問類型。
步驟406:主機(jī)處理器根據(jù)預(yù)先設(shè)置的每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的預(yù)取
算法,選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的預(yù)取算法。
步驟407:主機(jī)處理器根據(jù)預(yù)先設(shè)置的每一個(gè)預(yù)取算法對(duì)應(yīng)的Ari-Tag,
確定與所選擇的預(yù)取算法對(duì)應(yīng)的Ari-Tag。
步驟408:主機(jī)處理器將與所選擇的預(yù)取算法對(duì)應(yīng)的Ari-Tag攜帶在數(shù)
據(jù)讀取指令中發(fā)送至緩存控制器。
步驟409:緩存控制器根據(jù)數(shù)振讀取指令中攜帶的Ari-Tag,和預(yù)先設(shè) 置的每一個(gè)預(yù)取算法對(duì)應(yīng)的Ari-Tag,確定所使用的預(yù)取算法。
步驟410:緩存控制器使用所確定的預(yù)取算法,預(yù)測(cè)后續(xù)需讀取的數(shù)據(jù)。
步驟411:緩存控制器將預(yù)取數(shù)據(jù)的請(qǐng)求發(fā)送給磁盤陣列。 步驟412:磁盤陣列根據(jù)接收到的預(yù)取數(shù)據(jù)的請(qǐng)求,將預(yù)取數(shù)據(jù)發(fā)送給 緩存控制器。
步驟413:緩存控制器將預(yù)取數(shù)據(jù)存儲(chǔ)在Cache中。
圖5是在本發(fā)明實(shí)施例2中另 一種利用預(yù)取算法在緩存中進(jìn)行數(shù)據(jù)存儲(chǔ) 的流程圖。參見圖1和圖5,在本實(shí)施例中,還可以采用由緩存控制器確定 應(yīng)使用的預(yù)取算法的方式,具體實(shí)現(xiàn)過程具體包括以下步驟
步驟501:預(yù)先在緩存控制器上設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的預(yù)取算法。
本步驟中設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的預(yù)取算法的實(shí)現(xiàn)過程與上述 步驟401處所述的設(shè)置過程完全相同。
步驟502與步驟302的所有描述均相同。
步驟503:主機(jī)處理器接收外部發(fā)來的數(shù)據(jù)讀取指令,將該數(shù)據(jù)讀取指 令發(fā)送至緩存控制器。
步驟504:緩存控制器根據(jù)數(shù)據(jù)讀取指令中攜帶的業(yè)務(wù)標(biāo)識(shí),以及已確 定的業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系,確定當(dāng)前的業(yè)務(wù)訪問類型。
步驟505:緩存控制器根據(jù)預(yù)先設(shè)置的每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的預(yù)取 算法,選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的預(yù)取算法。
步驟506 ~步驟509與步驟410~步驟413的所有描述均相同。
本發(fā)明還提出了一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置。圖6是在本發(fā)明一 個(gè)實(shí)施例中的利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置的結(jié)構(gòu)示意圖。參見圖6,該裝 置可以包括交互單元、存儲(chǔ)單元、處理單元和緩存執(zhí)行單元,其中,
交互單元,用于接收用戶發(fā)送的指令;
存儲(chǔ)單元,用于存儲(chǔ)每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法; 處理單元,用于根據(jù)交互單元接收到的指令確定當(dāng)前的業(yè)務(wù)訪問類型,
從存儲(chǔ)單元中選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法,將所
選擇的替換算法或預(yù)取算法的信息發(fā)送給緩存執(zhí)行單元;
緩存執(zhí)行單元,用于使用所選擇的替換算法或預(yù)取算法將數(shù)據(jù)存儲(chǔ)到 Cache中。
參見圖6,在本發(fā)明實(shí)施例提出的裝置中,處理單元根據(jù)交互單元接收 到的指令確定當(dāng)前的業(yè)務(wù)訪問類型的具體實(shí)現(xiàn)包括
由所述存儲(chǔ)單元進(jìn)一步存儲(chǔ)業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系;則, 所述處理單元進(jìn)一步根據(jù)所述存儲(chǔ)單元中存儲(chǔ)的業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型 的對(duì)應(yīng)關(guān)系,以及所述交互單元接收到的指令中的業(yè)務(wù)標(biāo)識(shí),確定出當(dāng)前的 業(yè)務(wù)訪問類型。
參見圖6,在本發(fā)明實(shí)施例提出的裝置中,所述存儲(chǔ)單元中存儲(chǔ)的業(yè)務(wù) 標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系可以由所述處理單元根據(jù)用戶配置得出并 保存在所述存儲(chǔ)單元中,具體實(shí)現(xiàn)包括
所述交互單元,進(jìn)一步用于接收用戶通過圖形化用戶界面方式、命令行 方式或配置文件方式輸入的包括業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型對(duì)應(yīng)關(guān)系的配置 信息,將該配置信息發(fā)送至所述處理單元;
所述處理單元,進(jìn)一步用于根據(jù)接收到的配置信息確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù) 訪問類型的對(duì)應(yīng)關(guān)系,將該對(duì)應(yīng)關(guān)系保存到所述存儲(chǔ)單元中。
所述存儲(chǔ)單元中存儲(chǔ)的業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系還可以由 所述處理單元根據(jù)統(tǒng)計(jì)結(jié)杲得出并保存在所述存儲(chǔ)單元中,具體實(shí)現(xiàn)包括
所述處理單元,進(jìn)一步用于在設(shè)定時(shí)間長度內(nèi)統(tǒng)計(jì)攜帶所述業(yè)務(wù)標(biāo)識(shí)的 訪問請(qǐng)求對(duì)Cache中數(shù)據(jù)的訪問方式,根據(jù)統(tǒng)計(jì)結(jié)果確定所述業(yè)務(wù)標(biāo)識(shí)與業(yè) 務(wù)訪問類型的對(duì)應(yīng)關(guān)系,將該對(duì)應(yīng)關(guān)系保存到所述存儲(chǔ)單元中。
在本發(fā)明 一 個(gè)實(shí)施例中,利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置可以設(shè)置在緩存 控制器中,也就是說,由緩存控制器執(zhí)行本發(fā)明裝置的所有處理。此時(shí),本 發(fā)明裝置的結(jié)構(gòu)具體可以參見圖7所示。
在本發(fā)明的另 一 個(gè)實(shí)施例中,利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置可以 一 部分 設(shè)置在主機(jī)處理器中,另一部分設(shè)置在緩存控制器中,也就是說,由主機(jī)處 理器和緩存控制器配合執(zhí)行本發(fā)明裝置的所有處理。此時(shí),本發(fā)明裝置的結(jié)
構(gòu)具體可以參見圖8所示。其中,所述交互單元、所述存儲(chǔ)單元和所述處理 單元設(shè)置在主機(jī)處理器中,所述緩存執(zhí)行單元設(shè)置在緩存控制器中,并且,
所述處理單元,還需進(jìn)一步根據(jù)預(yù)先為每一個(gè)算法設(shè)置的算法標(biāo)簽,將 所選擇的算法對(duì)應(yīng)的算法標(biāo)簽攜帶在所述指令中發(fā)送至所述交互單元;
所述交互單元,還需進(jìn)一步將攜帶算法標(biāo)簽的所述指令發(fā)送至所述緩存
控制器;
所述緩存控制器,還需根據(jù)接收到所述指令中的算法標(biāo)簽及預(yù)先為每一 個(gè)算法設(shè)置的算法標(biāo)簽,確定所使用的所述替換算法或預(yù)取算法。
根據(jù)本發(fā)明實(shí)施例的上述技術(shù)方案,還可以得到本發(fā)明實(shí)施例提供的一 種網(wǎng)絡(luò)存儲(chǔ)控制系統(tǒng)。該網(wǎng)絡(luò)存儲(chǔ)控制系統(tǒng)中包括用戶主機(jī)通道、磁盤陣列 通道、位于上述兩個(gè)通道之間用以提高用戶主才幾響應(yīng)速度的緩存,以及用以 根據(jù)用戶主機(jī)業(yè)務(wù)類型動(dòng)態(tài)改變自身算法的緩存控制器,其中該算法至少包 括替換算法和預(yù)取算法兩類算法中的 一 類。
總之,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的 保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改 進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的方法,其特征在于,設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法,該方法包括根據(jù)用戶發(fā)來的指令確定當(dāng)前的業(yè)務(wù)訪問類型;選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法;使用所選擇的替換算法或預(yù)取算法將數(shù)據(jù)存儲(chǔ)到緩存Cache中。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所設(shè)置及所選擇的為替換算 法,所述指令為數(shù)據(jù)寫入指令,所述數(shù)據(jù)為數(shù)據(jù)寫入指令中攜帶的數(shù)據(jù);或者,所設(shè)置及所選擇的為預(yù)取算法,所述指令為數(shù)據(jù)讀取指令,所述數(shù) 據(jù)為從磁盤陣列中預(yù)取的數(shù)據(jù)。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括確定業(yè) 務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系;所述根據(jù)用戶發(fā)來的指令確定當(dāng)前的業(yè)務(wù)訪問類型的步驟包括從用戶發(fā) 來的指令中獲取業(yè)務(wù)標(biāo)識(shí),根據(jù)所述對(duì)應(yīng)關(guān)系,確定與所獲取的業(yè)務(wù)標(biāo)識(shí)對(duì)應(yīng) 的當(dāng)前的業(yè)務(wù)訪問類型。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪 問類型的對(duì)應(yīng)關(guān)系的步驟包括接收用戶通過圖形化用戶界面方式、命令行方 式或配置文件方式輸入的包括業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型對(duì)應(yīng)關(guān)系的配置信息, 根據(jù)該配置信息確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系。
5、 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪 問類型的對(duì)應(yīng)關(guān)系的步驟包括在設(shè)定時(shí)間長度內(nèi)統(tǒng)計(jì)攜帶所述業(yè)務(wù)標(biāo)識(shí)的訪 問請(qǐng)求對(duì)Cache中數(shù)據(jù)的訪問方式,根據(jù)統(tǒng)計(jì)結(jié)果確定所述業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪 問類型的對(duì)應(yīng)關(guān)系。
6、 根據(jù)權(quán)利要求1至5中任意一項(xiàng)所述的方法,其特征在于,由緩存控制 器執(zhí)行所述確定、選擇、使用和存儲(chǔ)的步驟。
7、 根據(jù)權(quán)利要求1至5中任意一項(xiàng)所述的方法,其特征在于,由主機(jī)處理 器執(zhí)行所述確定和選擇的步驟;在主機(jī)處理器選擇所述算法之后,進(jìn)一步包括主機(jī)處理器根據(jù)預(yù)先為每 一個(gè)算法設(shè)置的算法標(biāo)簽,將所選擇的算法對(duì)應(yīng)的算法標(biāo)簽攜帶在所述指令中 發(fā)送至緩存控制器,緩存控制器根據(jù)所述指令中攜帶的算法標(biāo)簽和預(yù)先為每一 個(gè)算法設(shè)置的算法標(biāo)簽,確定所使用的所述替換算法或預(yù)取算法;則由緩存控制器執(zhí)行所述使用和存儲(chǔ)的步驟。
8、 一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的裝置,其特征在于,包括 交互單元,用于接收用戶發(fā)送的指令;存儲(chǔ)單元,用于存儲(chǔ)每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法; 處理單元,用于根據(jù)交互單元接收到的指令確定當(dāng)前的業(yè)務(wù)訪問類型,從存儲(chǔ)單元中選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法,將所選擇的替換算法或預(yù)取算法的信息發(fā)送給緩存執(zhí)行單元;緩存執(zhí)行單元,用于使用所選擇的替換算法或預(yù)取算法將數(shù)據(jù)存儲(chǔ)到Cache中。
9、 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述存儲(chǔ)單元,進(jìn)一步用于存儲(chǔ)業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系; 所述處理單元,進(jìn)一步用于根據(jù)所述存儲(chǔ)單元中存儲(chǔ)的業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型的對(duì)應(yīng)關(guān)系,以及所述交互單元接收到的指令中的業(yè)務(wù)標(biāo)識(shí),執(zhí)行所述確定當(dāng)前的業(yè)務(wù)訪問類型的處理。
10、 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述交互單元,進(jìn)一步用于接收用戶通過圖形化用戶界面方式、命令行方 式或配置文件方式輸入的包括業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪問類型對(duì)應(yīng)關(guān)系的配置信息, 將該配置信息發(fā)送至所述處理單元;所述處理單元,進(jìn)一步用于根據(jù)接收到的配置信息確定業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪 問類型的對(duì)應(yīng)關(guān)系,將該對(duì)應(yīng)關(guān)系保存到所述存儲(chǔ)單元中。
11、 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述處理單元,進(jìn)一步用于在設(shè)定時(shí)間長度內(nèi)統(tǒng)計(jì)攜帶所述業(yè)務(wù)標(biāo)識(shí)的訪 問請(qǐng)求對(duì)Cache中數(shù)據(jù)的訪問方式,根據(jù)統(tǒng)計(jì)結(jié)果確定所述業(yè)務(wù)標(biāo)識(shí)與業(yè)務(wù)訪 問類型的對(duì)應(yīng)關(guān)系,將該對(duì)應(yīng)關(guān)系保存到所述存儲(chǔ)單元中。
12、 根據(jù)權(quán)利要求8至11中任意一項(xiàng)所述的裝置,其特征在于,該裝置設(shè) 置在緩存控制器中。
13、 根據(jù)權(quán)利要求8至11中任意一項(xiàng)所述的裝置,其特征在于,所述處理 單元,進(jìn)一步根據(jù)預(yù)先為每一個(gè)算法設(shè)置的算法標(biāo)簽,將所選擇的算法對(duì)應(yīng)的 算法標(biāo)簽攜帶在所述指令中發(fā)送至所述交互單元;所述交互單元,進(jìn)一步用于將攜帶算法標(biāo)簽的所述指令發(fā)送至所述緩存控 制器;所述緩存控制器,根據(jù)接收到所述指令中的算法標(biāo)簽及預(yù)先為每一個(gè)算法 設(shè)置的算法標(biāo)簽,確定所使用的所述替換算法或預(yù)取算法;則,所述交互單元、所述存儲(chǔ)單元和所述處理單元設(shè)置在主機(jī)處理器中; 所述緩存執(zhí)行單元設(shè)置在緩存控制器中。
14、 一種網(wǎng)絡(luò)存儲(chǔ)控制系統(tǒng),其特征在于,包括用戶主機(jī)通道、磁盤陣列 通道、位于上述兩個(gè)通道之間用以提高用戶主機(jī)響應(yīng)速度的緩存,以及用以根 據(jù)用戶主機(jī)業(yè)務(wù)類型動(dòng)態(tài)改變自身算法的緩存控制器,其中該算法至少包括替 換算法和預(yù)取算法兩類算法中的一類。
全文摘要
本發(fā)明公開了一種利用緩存實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的方法和裝置。在該方法中,設(shè)置每一種業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法;根據(jù)用戶發(fā)來的指令確定當(dāng)前的業(yè)務(wù)訪問類型;選擇與當(dāng)前的業(yè)務(wù)訪問類型對(duì)應(yīng)的替換算法或預(yù)取算法;使用所選擇的替換算法或預(yù)取算法將數(shù)據(jù)存儲(chǔ)到緩存(Cache)中。本發(fā)明針對(duì)每一種業(yè)務(wù)的訪問特點(diǎn)來選擇替換算法或預(yù)取算法,因此,提高了從Cache中讀取數(shù)據(jù)的命中率,從而提高了系統(tǒng)的訪問效率。
文檔編號(hào)G06F12/08GK101105773SQ20071012048
公開日2008年1月16日 申請(qǐng)日期2007年8月20日 優(yōu)先權(quán)日2007年8月20日
發(fā)明者劉介良, 輝 安, 賴守鋒 申請(qǐng)人:杭州華三通信技術(shù)有限公司