計(jì)算系統(tǒng)可以包括能夠與存儲(chǔ)系統(tǒng)通信以向存儲(chǔ)系統(tǒng)寫入數(shù)據(jù)并從存儲(chǔ)系統(tǒng)讀取數(shù)據(jù)的主機(jī)。存儲(chǔ)系統(tǒng)可以包括高速緩存存儲(chǔ)器,其可以用以更快的方式取回對(duì)數(shù)據(jù)的后續(xù)請(qǐng)求的方式存儲(chǔ)所述數(shù)據(jù)。
附圖說明
在后續(xù)詳細(xì)說明中以及參考附圖描述了特定例子,在附圖中:
圖1是根據(jù)本申請(qǐng)的技術(shù)的存儲(chǔ)系統(tǒng)的示例性框圖。
圖2是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理的方法的示例性過程流程圖。
圖3是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理的方法的另一示例性過程流程圖。
圖4是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理的方法的又一示例性過程流程圖。
圖5A-5F是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理的示例性過程流程圖。
圖6A-6E是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理的示例性過程流程圖。
圖7是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理的另一示例性過程流程圖。
圖8是示出根據(jù)本申請(qǐng)的技術(shù)的存儲(chǔ)用于高速緩存管理的指令的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)的示例性框圖。
具體實(shí)施方式
計(jì)算系統(tǒng)可以包括主機(jī)或主機(jī)設(shè)備,其耦合到存儲(chǔ)系統(tǒng)上以向存儲(chǔ)系統(tǒng)的數(shù)據(jù)存儲(chǔ)設(shè)備存儲(chǔ)數(shù)據(jù)并從數(shù)據(jù)存儲(chǔ)設(shè)備中取回?cái)?shù)據(jù)。在一個(gè)例子中,存儲(chǔ)系統(tǒng)可以包括存儲(chǔ)控制器,其耦合到管理數(shù)據(jù)存儲(chǔ)資源的數(shù)據(jù)存儲(chǔ)陣列上。存儲(chǔ)控制器可以處理來自主機(jī)的數(shù)據(jù)操作請(qǐng)求。數(shù)據(jù)操作請(qǐng)求可以包括向存儲(chǔ)陣列寫入數(shù)據(jù)的請(qǐng)求,以及從數(shù)據(jù)存儲(chǔ)陣列讀取數(shù)據(jù)的請(qǐng)求。數(shù)據(jù)存儲(chǔ)陣列可以管理數(shù)據(jù)存儲(chǔ)設(shè)備,例如,磁盤驅(qū)動(dòng)等。存儲(chǔ)控制器可以包括高速緩存存儲(chǔ)器,其可以存儲(chǔ)數(shù)據(jù)的一些部分,從而對(duì)所述數(shù)據(jù)的后續(xù)請(qǐng)求可以以更快的方式取回。存儲(chǔ)控制器可以接收從數(shù)據(jù)存儲(chǔ)設(shè)備讀取數(shù)據(jù)的讀取請(qǐng)求。存儲(chǔ)控制器可以使用高速緩存存儲(chǔ)器來從較慢速度訪問數(shù)據(jù)存儲(chǔ)設(shè)備(例如,磁盤驅(qū)動(dòng))加載數(shù)據(jù)塊到較快速度存儲(chǔ)設(shè)備(例如,可以包括隨機(jī)存取存儲(chǔ)器(RAM)的高速緩存存儲(chǔ)器)。后續(xù)的讀取請(qǐng)求可以直接到較快速度存儲(chǔ)設(shè)備,例如高速緩存存儲(chǔ)器,其可以幫助減少由于較慢速度數(shù)據(jù)存儲(chǔ)設(shè)備(例如,磁盤驅(qū)動(dòng))造成的延遲
期望的是,存儲(chǔ)控制器能夠提供高速緩存管理技術(shù)來以有效的方式管理數(shù)據(jù)操作請(qǐng)求。例如,高速緩存管理技術(shù)可以應(yīng)用一組統(tǒng)一的高速緩存規(guī)則,來基于數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)設(shè)備的位置以及數(shù)據(jù)的相對(duì)優(yōu)先級(jí)管理高速緩存存儲(chǔ)器。然而,這些技術(shù)可能不能區(qū)分經(jīng)常訪問或重要的數(shù)據(jù)與不常訪問或較不重要的數(shù)據(jù)。另外,這些技術(shù)可能不能區(qū)分對(duì)處理重要的高優(yōu)先級(jí)數(shù)據(jù)與低優(yōu)先級(jí)數(shù)據(jù)。此外,高速緩存存儲(chǔ)器是有限的存儲(chǔ)資源,因?yàn)槠渫ǔJ荝AM,相較于以較低速度和較低成本而具有較高容量的磁盤驅(qū)動(dòng)存儲(chǔ)設(shè)備,RAM提供較快的訪問速度但是有較高的成本。因?yàn)楦咚倬彺娲鎯?chǔ)器是有限存儲(chǔ)資源,所以高速緩存管理技術(shù)可以確定關(guān)于從高速緩存存儲(chǔ)器驅(qū)逐或移除哪些數(shù)據(jù),來為來自數(shù)據(jù)存儲(chǔ)設(shè)備的其它數(shù)據(jù)騰出空間。這些技術(shù)可能導(dǎo)致熱點(diǎn)或其它啟發(fā)性行為,使得當(dāng)較高優(yōu)先級(jí)的數(shù)據(jù)應(yīng)當(dāng)保留在高速緩存存儲(chǔ)器中時(shí)可能清除(flush)或驅(qū)逐這種數(shù)據(jù)。一些技術(shù)可以將數(shù)據(jù)保持或“釘住”在高速緩存存儲(chǔ)器中,這表示可以使得數(shù)據(jù)持續(xù)在高速緩存存儲(chǔ)器中,但是這種行為難以被保證。這里,術(shù)語“釘”或“釘住”或“持續(xù)”指的是在高速緩存存儲(chǔ)器中標(biāo)記數(shù)據(jù)以便除非有明確的清除操作否則不被從高速緩存存儲(chǔ)器中驅(qū)逐或移除的概念。在一個(gè)例子中,明確的清除操作可以是明確的清除請(qǐng)求,其包括同步化高速緩存請(qǐng)求,用于從高速緩存存儲(chǔ)器發(fā)送所有數(shù)據(jù)到數(shù)據(jù)存儲(chǔ)設(shè)備,例如存儲(chǔ)介質(zhì)。換句話說,當(dāng)存儲(chǔ)控制器執(zhí)行稍后的對(duì)數(shù)據(jù)的請(qǐng)求或試圖從高速緩存存儲(chǔ)器讀取或上傳數(shù)據(jù)時(shí),其可能不存在于高速緩存存儲(chǔ)器中,或者其可能被要求在數(shù)據(jù)存儲(chǔ)于或加載到高速緩存存儲(chǔ)器之前等待。
本申請(qǐng)可以改善高速緩存管理技術(shù)的性能。這些技術(shù)可以應(yīng)用于具有耦合在主機(jī)和數(shù)據(jù)存儲(chǔ)陣列之間的存儲(chǔ)控制器的存儲(chǔ)系統(tǒng)。例如,這些技術(shù)可以允許存儲(chǔ)控制器從主機(jī)接收數(shù)據(jù)操作請(qǐng)求,例如從數(shù)據(jù)存儲(chǔ)設(shè)備讀取讀取數(shù)據(jù)的請(qǐng)求。在該情況下,讀取請(qǐng)求可以指定來自數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)塊,其保持在高速緩存存儲(chǔ)器中。例如,讀取請(qǐng)求可以包括邏輯塊地址(LBA)或父母邏輯單元(LU)的范圍或與以持續(xù)方式存儲(chǔ)于高速緩存存儲(chǔ)器中的特定請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)。此外,這些技術(shù)可以允許完成更多的數(shù)據(jù)操作(讀取和寫入數(shù)據(jù)操作),這些操作允許高速緩存存儲(chǔ)器更靈活且允許主機(jī)數(shù)據(jù)操作請(qǐng)求用于從存儲(chǔ)設(shè)備讀取數(shù)據(jù)并寫入數(shù)據(jù)到存儲(chǔ)設(shè)備。例如,這可以允許主機(jī)請(qǐng)求加載和指定高速緩存規(guī)則,所述規(guī)則指定以持續(xù)方式處理特定數(shù)據(jù),從而其可以保持在高速緩存存儲(chǔ)器,由此允許主機(jī)或用戶創(chuàng)建存儲(chǔ)設(shè)備的熱點(diǎn)區(qū)域。
本技術(shù)可以改善存儲(chǔ)系統(tǒng)的高速緩存管理性能。例如,這些技術(shù)可以允許以區(qū)域指定請(qǐng)求形式的主機(jī)請(qǐng)求(其指定用于高速緩存存儲(chǔ)器的否則從高速緩存存儲(chǔ)器驅(qū)逐或移除數(shù)據(jù)的高速緩存規(guī)則)現(xiàn)在使得數(shù)據(jù)保留在高速緩存存儲(chǔ)器中,由此覆寫其它高速緩存管理處理或算法。主機(jī)可以向存儲(chǔ)控制器發(fā)送區(qū)域指定請(qǐng)求,其包括指定與不被清除或被寫入存儲(chǔ)設(shè)備(磁盤驅(qū)動(dòng)器或介質(zhì))而仍持續(xù)保留在高速緩存存儲(chǔ)器中的特定LBA區(qū)域相關(guān)聯(lián)的數(shù)據(jù)的高速緩存規(guī)則。在一個(gè)例子中,區(qū)域指定請(qǐng)求可以與數(shù)據(jù)操作請(qǐng)求不同且分離,所述數(shù)據(jù)操作請(qǐng)求可以包括從存儲(chǔ)設(shè)備讀取數(shù)據(jù)或向存儲(chǔ)設(shè)備寫入數(shù)據(jù)的實(shí)際請(qǐng)求。在另一例子中,區(qū)域指定請(qǐng)求可以與數(shù)據(jù)操作請(qǐng)求組合。在另一實(shí)例中,高速緩存規(guī)則可以指定與指定的LBA區(qū)域相關(guān)聯(lián)的特定數(shù)據(jù),所述指定的LBA區(qū)域存儲(chǔ)于數(shù)據(jù)結(jié)構(gòu)中以允許在必要時(shí)或在特定條件下數(shù)據(jù)被從高速緩存存儲(chǔ)器清除到數(shù)據(jù)存儲(chǔ)設(shè)備。
高速緩存規(guī)則可以指定與指定的LBA區(qū)域相關(guān)聯(lián)的特定數(shù)據(jù)在高速緩存存儲(chǔ)器中保持持續(xù)的,并位于與不同集合的高速緩存規(guī)則相關(guān)聯(lián)的高速緩存存儲(chǔ)器中其它數(shù)據(jù)附近。主機(jī)或主機(jī)應(yīng)用可以用不同的高速緩存規(guī)則向存儲(chǔ)控制器傳達(dá)指定多個(gè)LBA區(qū)域或者范圍的高速緩存規(guī)則,以允許不同的行為調(diào)整。主機(jī)可以提供指定在存儲(chǔ)器中創(chuàng)建磁盤驅(qū)動(dòng)類型配置的高速緩存規(guī)則,有時(shí)指的是軟RAM類型磁盤驅(qū)動(dòng)配置,并將來自高速緩存存儲(chǔ)器的數(shù)據(jù)硬備份到正常的磁盤驅(qū)動(dòng)卷。高速緩存規(guī)則可以指定特定的數(shù)據(jù)與其它數(shù)據(jù)相比相對(duì)較不重要,以使得存儲(chǔ)控制器避免將所述數(shù)據(jù)全部存儲(chǔ)或?qū)懭氲礁咚倬彺娲鎯?chǔ)器。在其它例子中,高速緩存規(guī)則可以指定其它行為,例如,要求將所請(qǐng)求的數(shù)據(jù)加載到高速緩存存儲(chǔ)器中并將其保持或保留在高速緩存存儲(chǔ)器中。
本申請(qǐng)的技術(shù)可以允許存儲(chǔ)控制器改善存儲(chǔ)系統(tǒng)的高速緩存管理性能。例如,該技術(shù)可以允許主機(jī)或用戶創(chuàng)建一組高速緩存規(guī)則或暗示,用于指定在目標(biāo)數(shù)據(jù)存儲(chǔ)設(shè)備上如何由高速緩存存儲(chǔ)器處理特定數(shù)據(jù)操作請(qǐng)求(例如,寫入存儲(chǔ)設(shè)備或從存儲(chǔ)設(shè)備讀取)的特定LBA區(qū)域或范圍。在一個(gè)例子中,存儲(chǔ)控制器可以從主機(jī)接收區(qū)域指定請(qǐng)求,其包括LBA區(qū)域的高速緩存規(guī)則,用于指定如何應(yīng)用高速緩存規(guī)則以處理帶有數(shù)據(jù)操作請(qǐng)求的數(shù)據(jù)并確定數(shù)據(jù)存儲(chǔ)設(shè)備處理請(qǐng)求的方式。在一個(gè)實(shí)例中,高速緩存規(guī)則可以指定與LBA區(qū)域相關(guān)聯(lián)的特定數(shù)據(jù)將被以持續(xù)方式釘住或保持(高速緩存釘住情況)。可以通過使高速緩存存儲(chǔ)器(例如,高速緩存存儲(chǔ)器的高速緩存行)中的數(shù)據(jù)被移動(dòng)到指定從不將存儲(chǔ)于該結(jié)構(gòu)中的數(shù)據(jù)清除到數(shù)據(jù)存儲(chǔ)設(shè)備直到發(fā)生特定情況的單獨(dú)的元數(shù)據(jù)結(jié)構(gòu)來響應(yīng)存儲(chǔ)控制器。
在一個(gè)例子中,高速緩存規(guī)則可以指定當(dāng)存儲(chǔ)控制器接收到清除數(shù)據(jù)的主機(jī)請(qǐng)求時(shí)清除特定的數(shù)據(jù)。在另一例子中,高速緩存規(guī)則可以指定當(dāng)存儲(chǔ)控制器已經(jīng)達(dá)到在要求將數(shù)據(jù)清除到數(shù)據(jù)存儲(chǔ)設(shè)備的結(jié)構(gòu)中的數(shù)據(jù)量中的充滿率或閾值時(shí),清除特定的數(shù)據(jù)以允許高速緩存存儲(chǔ)器接受其他數(shù)據(jù)。在另一例子中,所述技術(shù)可以允許通過與持續(xù)(釘住)區(qū)域相關(guān)聯(lián)的元數(shù)據(jù)執(zhí)行數(shù)據(jù)查找功能,而類似于通過非持續(xù)(非釘住)區(qū)域執(zhí)行元數(shù)據(jù)查找功能的方式。
本申請(qǐng)的技術(shù)可以允許主機(jī)向存儲(chǔ)控制器提供包括管理高速緩存存儲(chǔ)器的高速緩存規(guī)則的請(qǐng)求。例如,高速緩存規(guī)則可以指定存儲(chǔ)控制器以從不等待接受新接收到的數(shù)據(jù)的空間或地方的方式管理高速緩存存儲(chǔ)器。在其它例子中,高速緩存規(guī)則可以指定當(dāng)接收到對(duì)與指定的LBA區(qū)域相關(guān)聯(lián)的數(shù)據(jù)的請(qǐng)求時(shí),存儲(chǔ)控制器將管理高速緩存存儲(chǔ)器總是等待高速緩存存儲(chǔ)器中的空間。在另一例子中,高速緩存規(guī)則可以指定當(dāng)接收對(duì)與數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)的指定的LBA區(qū)域相關(guān)聯(lián)的數(shù)據(jù)的請(qǐng)求時(shí),高速緩存存儲(chǔ)器應(yīng)該從不等待高速緩存存儲(chǔ)器中的空間。在一個(gè)例子中,高速緩存規(guī)則可以指定當(dāng)接收對(duì)與數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)的指定的LBA區(qū)域相關(guān)聯(lián)的數(shù)據(jù)的請(qǐng)求時(shí),高速緩存存儲(chǔ)器應(yīng)該總是繞過高速緩存存儲(chǔ)器。在又一例子中,高速緩存規(guī)則可以指定當(dāng)接收讀取與數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)的指定的LBA區(qū)域相關(guān)聯(lián)的數(shù)據(jù)的請(qǐng)求時(shí),高速緩存存儲(chǔ)器應(yīng)該以持續(xù)方式存儲(chǔ)或加載數(shù)據(jù)到高速緩存存儲(chǔ)器中。
本申請(qǐng)的技術(shù)可以改善存儲(chǔ)系統(tǒng)的性能。例如,主機(jī)可以向存儲(chǔ)控制器發(fā)送高速緩存規(guī)則,該規(guī)則指定高速緩存存儲(chǔ)器將以基于數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)的指定的相關(guān)聯(lián)LBA區(qū)域的方式處理接收到的數(shù)據(jù)。結(jié)果,存儲(chǔ)系統(tǒng)可以展示涉及基于指定持續(xù)區(qū)域的高速緩存規(guī)則從數(shù)據(jù)存儲(chǔ)設(shè)備讀取數(shù)據(jù)和向存儲(chǔ)設(shè)備寫入數(shù)據(jù)的改善的性能。存儲(chǔ)系統(tǒng)可以處理管理高速緩存存儲(chǔ)器的高速緩存規(guī)則或暗示,其可以向用戶或應(yīng)用提供對(duì)高速緩存管理的控制。以這種方式,這些技術(shù)可以允許重要的或關(guān)鍵的數(shù)據(jù)保持高優(yōu)先級(jí),并且以持續(xù)方式保持(釘住)在高速緩存存儲(chǔ)器中。這些技術(shù)可以幫助減少到已經(jīng)指定為重要的LBA區(qū)域的寫入操作的數(shù)量,同時(shí)對(duì)沒有必要以持續(xù)方式(釘住)在高速緩存存儲(chǔ)器中存儲(chǔ)數(shù)據(jù)的區(qū)域或領(lǐng)域保留更多數(shù)據(jù)存儲(chǔ)設(shè)備(磁盤驅(qū)動(dòng))性能。這些技術(shù)可以有助于在高速緩存存儲(chǔ)器中創(chuàng)建磁盤驅(qū)動(dòng)狀區(qū)域(軟RAM磁盤區(qū)域),其可以允許創(chuàng)建可以以安全方式持續(xù)存儲(chǔ)于高速緩存存儲(chǔ)器內(nèi)的高性能區(qū)域。這些技術(shù)可以配置存儲(chǔ)控制器加載并持續(xù)存儲(chǔ)數(shù)據(jù),這可以允許用戶指定將以持續(xù)方式預(yù)先加載到高速緩存存儲(chǔ)器的即將的熱數(shù)據(jù),由此幫助改善整個(gè)存儲(chǔ)系統(tǒng)性能。
在一個(gè)例子中,本申請(qǐng)公開了用于高速緩存管理的存儲(chǔ)控制器,其包括高速緩存存儲(chǔ)器和高速緩存管理模塊。高速緩存管理模塊配置為接收來自主機(jī)的區(qū)域指定請(qǐng)求,并作為響應(yīng),從區(qū)域指定請(qǐng)求提取用于管理存儲(chǔ)陣列的數(shù)據(jù)存儲(chǔ)的區(qū)域的高速緩存規(guī)則。高速緩存管理模塊配置為從主機(jī)接收數(shù)據(jù)操作請(qǐng)求,并作為響應(yīng)基于提取出的高速緩存規(guī)則處理數(shù)據(jù)操作請(qǐng)求。
在一些例子中,數(shù)據(jù)操作請(qǐng)求可以包括從存儲(chǔ)設(shè)備讀取數(shù)據(jù)的主機(jī)請(qǐng)求以及向存儲(chǔ)設(shè)備寫入數(shù)據(jù)的主機(jī)請(qǐng)求。區(qū)域指定請(qǐng)求可以指定高速緩存存儲(chǔ)器相對(duì)于與存儲(chǔ)設(shè)備的邏輯塊地址(LBA)相關(guān)聯(lián)的存儲(chǔ)的區(qū)域的行為。區(qū)域指定請(qǐng)求可以包括相對(duì)于存儲(chǔ)設(shè)備的LBA區(qū)域,管理高速緩存存儲(chǔ)器的高速緩存規(guī)則。例如,高速緩存規(guī)則可以指定將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備并繞過高速緩存存儲(chǔ)器。在另一例子中,高速緩存規(guī)則可以指定基于高速緩存存儲(chǔ)器的空間可用性將數(shù)據(jù)存儲(chǔ)于高速緩存存儲(chǔ)器。在另一例子中,高速緩存規(guī)則可以指定以在高速緩存存儲(chǔ)器中非持續(xù)方式將數(shù)據(jù)存儲(chǔ)于高速緩存存儲(chǔ)器中。例如,高速緩存規(guī)則可以指定以在高速緩存存儲(chǔ)器中持續(xù)方式存儲(chǔ)數(shù)據(jù)。高速緩存管理模塊可以配置為從主機(jī)接收數(shù)據(jù)操作請(qǐng)求,其包括向存儲(chǔ)設(shè)備寫入數(shù)據(jù)的寫入請(qǐng)求以及對(duì)待寫入的數(shù)據(jù)存儲(chǔ)設(shè)備的區(qū)域的識(shí)別。在另一例子中,高速緩存管理模塊可以配置為從主機(jī)接收數(shù)據(jù)操作請(qǐng)求,其包括待寫入數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備的區(qū)域的數(shù)據(jù)和識(shí)別。高速緩存管理模塊可以配置為比較來自請(qǐng)求的區(qū)域與從區(qū)域指定請(qǐng)求接收到的區(qū)域列表。
圖1是根據(jù)本申請(qǐng)的技術(shù)的存儲(chǔ)系統(tǒng)100的示例性框圖。
系統(tǒng)100包括配置為用于高速緩存管理的存儲(chǔ)控制器104,其包括高速緩存存儲(chǔ)器112和高速緩存管理模塊108。存儲(chǔ)控制器104示出為耦合在主機(jī)102和數(shù)據(jù)存儲(chǔ)陣列106之間,該陣列包括數(shù)據(jù)存儲(chǔ)114-1到114-n。
高速緩存管理模塊108配置為執(zhí)行高速緩存管理功能,例如,處理如本文所述的來自主機(jī)102的區(qū)域指定請(qǐng)求和數(shù)據(jù)操作請(qǐng)求。在一個(gè)例子中,高速緩存管理模塊108配置為從主機(jī)102接收區(qū)域指定請(qǐng)求,并且作為響應(yīng)從區(qū)域指定請(qǐng)求提取高速緩存規(guī)則110,用于管理高速緩存存儲(chǔ)器112和數(shù)據(jù)存儲(chǔ)陣列106的數(shù)據(jù)存儲(chǔ)設(shè)備114的區(qū)域。高速緩存管理模塊108配置為從主機(jī)接收數(shù)據(jù)操作請(qǐng)求,并且作為響應(yīng),基于提取出的高速緩存規(guī)則110處理數(shù)據(jù)操作請(qǐng)求。
高速緩存管理模塊108配置為管理來自主機(jī)102的數(shù)據(jù)操作請(qǐng)求。數(shù)據(jù)操作請(qǐng)求可以包括從數(shù)據(jù)存儲(chǔ)設(shè)備114讀取數(shù)據(jù)的主機(jī)請(qǐng)求。例如,主機(jī)102可以發(fā)送包括LBA區(qū)域信息的數(shù)據(jù)操作請(qǐng)求,用于識(shí)別將從數(shù)據(jù)存儲(chǔ)設(shè)備114讀取或取回的數(shù)據(jù)的位置。在另一例子中,數(shù)據(jù)操作請(qǐng)求可以包括用于向數(shù)據(jù)存儲(chǔ)設(shè)備114寫入數(shù)據(jù)的主機(jī)請(qǐng)求。例如,主機(jī)102可以發(fā)送包括數(shù)據(jù)和LBA區(qū)域信息的數(shù)據(jù)操作請(qǐng)求,以識(shí)別將數(shù)據(jù)寫入到數(shù)據(jù)存儲(chǔ)設(shè)備114的指定位置的位置。高速緩存管理模塊108配置為處理LBA區(qū)域信息,以確定如何處理數(shù)據(jù)操作請(qǐng)求。例如,高速緩存管理模塊108可以對(duì)與請(qǐng)求一起包含的LBA區(qū)域和從區(qū)域指定請(qǐng)求接收到的LBA區(qū)域的列表(例如,高速緩存規(guī)則110)進(jìn)行比較。高速緩存管理模塊108執(zhí)行該比較,以確定如何處理相對(duì)于高速緩存存儲(chǔ)器112的請(qǐng)求,如下文更詳細(xì)解釋的。
高速緩存管理模塊108可以配置為接收區(qū)域指定請(qǐng)求。在一個(gè)例子中,區(qū)域指定請(qǐng)求可以指定與存儲(chǔ)設(shè)備的邏輯塊地址(LBA)相關(guān)聯(lián)的存儲(chǔ)設(shè)備的區(qū)域。在一個(gè)例子中,區(qū)域指定請(qǐng)求可以包括高速緩存規(guī)則110(有時(shí)稱作高速緩存暗示)以管理高速緩存存儲(chǔ)器112。高速緩存規(guī)則的一些例子包括:繞過規(guī)則:用于LBA的范圍的數(shù)據(jù)將被直接發(fā)送給磁盤;從不等待空間規(guī)則:所述范圍的數(shù)據(jù)如果不能立即放置在數(shù)據(jù)高速緩存中則直接被發(fā)送給磁盤并且數(shù)據(jù)將在需要時(shí)被驅(qū)逐;總是等待空間規(guī)則:所述范圍的數(shù)據(jù)如果不能立即放置在高速緩存存儲(chǔ)器內(nèi)則將排隊(duì)等待稍后處理并且數(shù)據(jù)將在需要時(shí)被驅(qū)逐;釘住規(guī)則:所述范圍的數(shù)據(jù)如果不能立即放置在數(shù)據(jù)高速緩存中則需排隊(duì)等待稍后處理并且數(shù)據(jù)僅在主機(jī)請(qǐng)求時(shí)被驅(qū)逐。在一個(gè)例子中,高速緩存規(guī)則110可以包括高速緩存規(guī)則或暗示,以將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備并繞過指定的LBA區(qū)域的高速緩存存儲(chǔ)器。在其它例子中,高速緩存規(guī)則110可以包括高速緩存規(guī)則或暗示,以基于指定的LBA區(qū)域的高速緩存存儲(chǔ)器的空間可用性而將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器112。
在其它例子中,高速緩存規(guī)則110可以包括高速緩存規(guī)則或暗示,以將數(shù)據(jù)以在指定的LBA區(qū)域的高速緩存存儲(chǔ)器中的非持續(xù)方式存儲(chǔ)到高速緩存存儲(chǔ)器112。在一個(gè)例子中,非持續(xù)可以被定義為如果需要空間則將數(shù)據(jù)從高速緩存存儲(chǔ)器112驅(qū)逐的條件或規(guī)則。另一方面,持續(xù)(釘住)可以被定義為如果除非指定,數(shù)據(jù)不被從高速緩存存儲(chǔ)器112驅(qū)逐的條件或規(guī)則。在其它例子中,高速緩存規(guī)則110可以包括高速緩存規(guī)則或暗示,以在指定的LBA區(qū)域的高速緩存存儲(chǔ)器112中以持續(xù)方式存儲(chǔ)數(shù)據(jù)。應(yīng)該理解的是,其它示例性高速緩存規(guī)則可以應(yīng)用于實(shí)現(xiàn)本申請(qǐng)的技術(shù)。
主機(jī)102可以是任意的電子設(shè)備或計(jì)算設(shè)備,其能夠進(jìn)行數(shù)據(jù)處理和與其它電子設(shè)備交換數(shù)據(jù)。主機(jī)102可以包括計(jì)算系統(tǒng),其代表自己或代表耦合到主機(jī)上的系統(tǒng)使用存儲(chǔ)設(shè)備。例如,主機(jī)102可以是處理大型數(shù)據(jù)庫的超級(jí)計(jì)算機(jī),或維持事務(wù)記錄的事務(wù)處理服務(wù)器。在另一例子中,主機(jī)102可以是局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)上的文件服務(wù)器,其為企業(yè)提供存儲(chǔ)服務(wù)。文件服務(wù)器可以包括磁盤控制器和/或RAID控制器,其配置為管理多個(gè)磁盤驅(qū)動(dòng)。主機(jī)102可以經(jīng)由通信連接(例如,光纖通道(FC)連接)連接存儲(chǔ)控制器104作為存儲(chǔ)網(wǎng)絡(luò)的一部分。主機(jī)102可以是向其它計(jì)算或數(shù)據(jù)處理系統(tǒng)或設(shè)備提供服務(wù)的服務(wù)器。例如,主機(jī)102可以是客戶端計(jì)算機(jī),其可以通過其它主機(jī)訪問存儲(chǔ)控制器104和數(shù)據(jù)存儲(chǔ)陣列106。主機(jī)102可以向客戶端計(jì)算機(jī)提供文件服務(wù),并可以提供其它服務(wù),例如事務(wù)處理服務(wù)、電子郵件服務(wù)等。因此,客戶端計(jì)算機(jī)可以配置為直接使用由主機(jī)102消耗的存儲(chǔ)設(shè)備。存儲(chǔ)控制器104示出為耦合在主機(jī)102和數(shù)據(jù)存儲(chǔ)陣列106之間。存儲(chǔ)控制器104可以是任意電子設(shè)備或計(jì)算設(shè)備,其能夠處理和管理來自主機(jī)的訪問來自數(shù)據(jù)存儲(chǔ)陣列106的數(shù)據(jù)的請(qǐng)求。存儲(chǔ)控制器104可以管理在存儲(chǔ)陣列106之間的數(shù)據(jù)操作和轉(zhuǎn)移。存儲(chǔ)控制器104可以實(shí)現(xiàn)為具有處理器和存儲(chǔ)器的插入卡。存儲(chǔ)控制器104可以包括雙主機(jī)適配器端口(未示出),其提供到主機(jī)102的接口(即,通過通信網(wǎng)絡(luò),例如交換結(jié)構(gòu))。存儲(chǔ)控制器104可以包括通信端口(未示出),以支持在其它存儲(chǔ)控制器之間的通信連接。通信連接可以實(shí)現(xiàn)為FC點(diǎn)對(duì)點(diǎn)連接,或依照任意其它適當(dāng)?shù)耐ㄐ艆f(xié)議。
存儲(chǔ)控制器104可以配置為與數(shù)據(jù)存儲(chǔ)陣列106通信。在一個(gè)例子中,存儲(chǔ)控制器104可以包括多個(gè)光纖通道仲裁回路(FCAL)端口(未示出),其實(shí)現(xiàn)與數(shù)據(jù)存儲(chǔ)陣列106和多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備114的FCAL通信連接。雖然FCAL連接可以用于與存儲(chǔ)陣列106通信,但是應(yīng)該理解的是,可以使用其它通信協(xié)議實(shí)現(xiàn)與存儲(chǔ)陣列的通信連接。例如,不是FCAL配置,可以使用FC交換結(jié)構(gòu)。數(shù)據(jù)存儲(chǔ)陣列106可以管理對(duì)作為存儲(chǔ)網(wǎng)絡(luò)一部分的數(shù)據(jù)存儲(chǔ)設(shè)備114的訪問。數(shù)據(jù)存儲(chǔ)設(shè)備114可以包括具有一些存儲(chǔ)空間的存儲(chǔ)池。在一個(gè)例子中,數(shù)據(jù)存儲(chǔ)設(shè)備可以具有由用于實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)設(shè)備的特定硬件所確定的大小或存儲(chǔ)容量。存儲(chǔ)控制器104可以配置數(shù)據(jù)存儲(chǔ)設(shè)備114作為多個(gè)邏輯磁盤,其可以分配在數(shù)據(jù)存儲(chǔ)設(shè)備或存儲(chǔ)池內(nèi)。每個(gè)邏輯單元或LBA區(qū)域可以包括連續(xù)范圍的邏輯地址,其可以由主機(jī)102尋址,對(duì)來自主機(jī)所使用的協(xié)議的請(qǐng)求進(jìn)行映射,以唯一地識(shí)別邏輯單元。
相比起來,高速緩存存儲(chǔ)器112一般具有較快的訪問時(shí)間,而數(shù)據(jù)存儲(chǔ)設(shè)備114具有較慢的訪問時(shí)間。高速緩存存儲(chǔ)器112可以是任意的非瞬態(tài)的計(jì)算機(jī)可讀介質(zhì),其可以包括一個(gè)或多個(gè)非易失性存儲(chǔ)器、易失性存儲(chǔ)器和/或一個(gè)或多個(gè)存儲(chǔ)設(shè)備。非易失性存儲(chǔ)器的例子包括但不限于:RAM、電可擦除可編程只讀存儲(chǔ)器(EEPROM)和只讀存儲(chǔ)器(ROM)。易失性存儲(chǔ)器的例子包括但不限于:靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)和動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。類似于高速緩存存儲(chǔ)器112,數(shù)據(jù)存儲(chǔ)設(shè)備114可以是任意的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì),其可以包括一個(gè)或多個(gè)非易失性存儲(chǔ)器、易失性存儲(chǔ)器和/或一個(gè)或多個(gè)存儲(chǔ)設(shè)備。在其它例子中,高速緩存存儲(chǔ)器112和數(shù)據(jù)存儲(chǔ)設(shè)備114可以包括但不限于:硬盤驅(qū)動(dòng)、壓縮盤驅(qū)動(dòng)、數(shù)字通用盤驅(qū)動(dòng)、光驅(qū)動(dòng)以及閃存設(shè)備。
系統(tǒng)100可以配置為存儲(chǔ)網(wǎng)絡(luò),其可以用于實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)設(shè)備114形成的存儲(chǔ)池。所述網(wǎng)絡(luò)可以包括利用通信網(wǎng)絡(luò)連接到存儲(chǔ)控制器104的主機(jī)102,所述通信網(wǎng)絡(luò)可以實(shí)現(xiàn)為私有的專用網(wǎng)絡(luò),例如FC交換結(jié)構(gòu)。在其它例子中,可以利用公用通信網(wǎng)絡(luò)依照適當(dāng)?shù)耐ㄐ艆f(xié)議(例如,互聯(lián)網(wǎng)小型計(jì)算機(jī)串行接口(iSCSI)協(xié)議)來實(shí)現(xiàn)通信網(wǎng)絡(luò)的一部分。
圖1的系統(tǒng)100示出為具有存儲(chǔ)控制器104,其耦合在主機(jī)102和數(shù)據(jù)存儲(chǔ)陣列106之間。然而,應(yīng)該理解的是,圖1所示的系統(tǒng)100是出于圖示的目的,并且其它配置可以實(shí)現(xiàn)本申請(qǐng)的技術(shù)。在一個(gè)例子中,本申請(qǐng)的技術(shù)可以實(shí)現(xiàn)于硬件、軟件或其組合中。在另一例子中,主機(jī)102可以包括耦合到存儲(chǔ)控制器104的單個(gè)主機(jī)或多個(gè)主機(jī)。存儲(chǔ)控制器104示出為單個(gè)設(shè)備,但是存儲(chǔ)控制器的功能可以分布在多個(gè)存儲(chǔ)控制器之間。類似地,單個(gè)數(shù)據(jù)存儲(chǔ)陣列106示出為單個(gè)設(shè)備,但是數(shù)據(jù)存儲(chǔ)陣列的功能可以分布在多個(gè)數(shù)據(jù)存儲(chǔ)陣列之間。在其它例子中,系統(tǒng)100的部件可以集成作一個(gè)部件、具有跨多個(gè)部件分布的系統(tǒng)的功能的多個(gè)部件、或其組合。
圖2是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理的方法的示例性過程流程圖200。
處理可以開始于框202,其中存儲(chǔ)控制器104檢查是否已經(jīng)從主機(jī)102處接收到區(qū)域指定請(qǐng)求。例如,如果高速緩存管理模塊108從主機(jī)102處接收到區(qū)域指定請(qǐng)求,則高速緩存管理模塊處理進(jìn)行到框204。在另一方面,如果高速緩存管理模塊108尚未接收到區(qū)域指定請(qǐng)求,則高速緩存管理模塊處理進(jìn)行回框202,其中高速緩存管理模塊可以繼續(xù)檢查區(qū)域指定請(qǐng)求的接收。
在框204處,存儲(chǔ)控制器104從區(qū)域指定請(qǐng)求中提取高速緩存規(guī)則110,以用于管理存儲(chǔ)陣列106的數(shù)據(jù)存儲(chǔ)設(shè)備114的區(qū)域。在一個(gè)例子中,高速緩存管理模塊108可以處理區(qū)域指定請(qǐng)求,該請(qǐng)求指定高速緩存存儲(chǔ)器112相對(duì)于與數(shù)據(jù)存儲(chǔ)設(shè)備的邏輯塊地址(LBA)相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)設(shè)備114的區(qū)域的行為。在另一例子中,區(qū)域指定請(qǐng)求可以包括高速緩存規(guī)則,用于相對(duì)于數(shù)據(jù)存儲(chǔ)設(shè)備的LBA區(qū)域管理高速緩存存儲(chǔ)器112。高速緩存規(guī)則110可以指定高速緩存管理模塊108將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備并繞過高速緩存存儲(chǔ)器,基于高速緩存存儲(chǔ)器的空間可用性而將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器,以在高速緩存存儲(chǔ)器中非持續(xù)方式將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器,以在高速緩存存儲(chǔ)器中持續(xù)方式存儲(chǔ)數(shù)據(jù),等等。在一個(gè)例子中,高速緩存管理模塊108可以將來自區(qū)域指定請(qǐng)求的信息存儲(chǔ)為高速緩存規(guī)則110以供后續(xù)處理。高速緩存管理模塊108處理然后進(jìn)行到框206。
在框206處,存儲(chǔ)控制器104檢查是否已經(jīng)從主機(jī)102處接收到數(shù)據(jù)操作請(qǐng)求。在一個(gè)例子中,如果高速緩存管理模塊108從主機(jī)102處接收到數(shù)據(jù)操作請(qǐng)求,則處理進(jìn)行到框208。在另一方面,如果高速緩存管理模塊108尚未從主機(jī)102處接收到數(shù)據(jù)操作請(qǐng)求,則處理進(jìn)行回框206,以繼續(xù)檢查數(shù)據(jù)操作請(qǐng)求的接收。在另一例子中,如果高速緩存管理模塊108尚未從主機(jī)102處接收到數(shù)據(jù)操作請(qǐng)求,則高速緩存管理模塊處理可以進(jìn)行回框202,以繼續(xù)檢查其它區(qū)域指定請(qǐng)求的接收。
在框208處,響應(yīng)于從主機(jī)設(shè)備接收到數(shù)據(jù)操作請(qǐng)求,存儲(chǔ)控制器104基于提取出的高速緩存規(guī)則處理數(shù)據(jù)操作請(qǐng)求。在一個(gè)例子中,高速緩存管理模塊108可以從主機(jī)102處接收包括寫入請(qǐng)求的數(shù)據(jù)操作請(qǐng)求,所述寫入請(qǐng)求包括寫入到存儲(chǔ)設(shè)備的數(shù)據(jù)和將寫入數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備的區(qū)域的識(shí)別。在另一例子中,高速緩存管理模塊108可以從主機(jī)102處接收包括讀取請(qǐng)求的數(shù)據(jù)操作請(qǐng)求,所述讀取請(qǐng)求包括將讀取數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備114的區(qū)域的識(shí)別。在其它例子中,高速緩存管理模塊108可以配置為比較來自數(shù)據(jù)操作請(qǐng)求的LBA區(qū)域信息與高速緩存規(guī)則110的列表和從先前由主機(jī)102提供的區(qū)域指定請(qǐng)求中提取出的相關(guān)聯(lián)的LBA區(qū)域。在一個(gè)例子中,高速緩存管理模塊108可以基于從區(qū)域指定請(qǐng)求中提取出的高速緩存規(guī)則處理數(shù)據(jù)操作請(qǐng)求。處理可以進(jìn)行回框202,以繼續(xù)檢查其它區(qū)域指定請(qǐng)求的接收。在其它例子中,高速緩存管理模塊108可以繼續(xù)回框206,以繼續(xù)檢查數(shù)據(jù)操作請(qǐng)求的接收。應(yīng)該理解的是,相對(duì)圖2描述的過程是出于圖示的目的,并且可以采用其它例子來實(shí)現(xiàn)本申請(qǐng)的技術(shù)。
圖3是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理的方法的另一示例性過程流程圖300。
處理可以開始于框302,其中存儲(chǔ)控制器104接收未指定額外高速緩存規(guī)則的數(shù)據(jù)操作請(qǐng)求。在一個(gè)例子中,高速緩存管理模塊108接收數(shù)據(jù)操作請(qǐng)求,其可以指定寫入操作以將數(shù)據(jù)寫入數(shù)據(jù)存儲(chǔ)設(shè)備,并包括將寫入的數(shù)據(jù)和將寫入數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備114中的位置的LBA區(qū)域。在另一例子中,數(shù)據(jù)操作請(qǐng)求可以指定讀取操作,以從數(shù)據(jù)存儲(chǔ)設(shè)備讀取數(shù)據(jù),并包括將讀取數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備中的位置的LBA區(qū)域。高速緩存管理模塊108處理然后進(jìn)行到框304。
在框304處,存儲(chǔ)控制器104借助接收到的區(qū)域請(qǐng)求搜索先前指定的區(qū)域規(guī)則集合。為了示出操作,在一個(gè)例子中,可以假設(shè)高速緩存管理模塊108先前從主機(jī)102接收到區(qū)域指定請(qǐng)求,該請(qǐng)求包括與LBA區(qū)域相關(guān)聯(lián)的高速緩存規(guī)則,用于在從主機(jī)接收到后續(xù)數(shù)據(jù)操作請(qǐng)求時(shí)處理高速緩存存儲(chǔ)器112。高速緩存管理模塊108可以從區(qū)域指定請(qǐng)求提取高速緩存規(guī)則,并存儲(chǔ)這些提取出的高速緩存規(guī)則110和相關(guān)聯(lián)的LBA區(qū)域,以供后續(xù)處理來自主機(jī)102的數(shù)據(jù)操作請(qǐng)求。例如,高速緩存管理模塊108可以比較在高速緩存規(guī)則中指定的區(qū)域與在數(shù)據(jù)操作請(qǐng)求中指定的區(qū)域,以確定如何相對(duì)高速緩存存儲(chǔ)器112處理數(shù)據(jù)操作請(qǐng)求。高速緩存管理模塊108處理然后進(jìn)行到框306。
在框306處,存儲(chǔ)控制器104檢查在數(shù)據(jù)操作請(qǐng)求中指定的區(qū)域是否匹配從先前接收到的區(qū)域指定請(qǐng)求指定的區(qū)域。在一個(gè)例子中,高速緩存管理模塊108借助來自數(shù)據(jù)操作請(qǐng)求的區(qū)域信息檢查在高速緩存規(guī)則110中的區(qū)域信息。如果高速緩存管理模塊108確定存在匹配,則處理進(jìn)行到框308。在另一方面,如果高速緩存管理模塊108確定不存在匹配,則高速緩存管理模塊處理進(jìn)行到框310。
在框308處,存儲(chǔ)控制器104為所述區(qū)域應(yīng)用規(guī)則。如上所解釋的,區(qū)域指定請(qǐng)求可以指定高速緩存存儲(chǔ)器112相對(duì)于與存儲(chǔ)設(shè)備的邏輯塊地址(LBA)相關(guān)聯(lián)的存儲(chǔ)設(shè)備的區(qū)域的行為。區(qū)域指定請(qǐng)求可以包括高速緩存規(guī)則110,用于指定如何相對(duì)于存儲(chǔ)設(shè)備的LBA區(qū)域管理高速緩存存儲(chǔ)器112。例如,高速緩存規(guī)則110可以指定將特定數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備并繞過高速緩存存儲(chǔ)器112。在另一例子中,高速緩存規(guī)則110可以指定基于高速緩存存儲(chǔ)器的空間的可用性將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器112。另一高速緩存規(guī)則110可以指定以非持續(xù)方式將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器112。在一個(gè)例子中,高速緩存管理模塊108可以基于LBA區(qū)域來處理數(shù)據(jù)操作請(qǐng)求,所述LBA區(qū)域與匹配先前從區(qū)域指定請(qǐng)求接收到的LBA區(qū)域的數(shù)據(jù)操作請(qǐng)求一起被包括。高速緩存管理模塊108處理進(jìn)行到框312。
在框310處,存儲(chǔ)控制器104正常地或通過指定的默認(rèn)行為處理請(qǐng)求。在一些例子中,當(dāng)高速緩存管理模塊108確定在數(shù)據(jù)操作請(qǐng)求的LBA區(qū)域和先前從區(qū)域指定請(qǐng)求接收到的LBA區(qū)域之間不存在匹配時(shí),那么以正常方式或通過指定的默認(rèn)行為處理數(shù)據(jù)操作請(qǐng)求。處理進(jìn)行到框312。
在框312處,存儲(chǔ)控制器104借助指定的高速緩存規(guī)則110處理數(shù)據(jù)操作請(qǐng)求。在一個(gè)例子中,高速緩存管理模塊108處理可以進(jìn)行回框302,以繼續(xù)接收或監(jiān)視數(shù)據(jù)操作請(qǐng)求的接收。
應(yīng)該理解的是,相對(duì)圖3描述的過程是出于圖示的目的,并且可以采用其它例子來實(shí)現(xiàn)本申請(qǐng)的技術(shù)。
圖4是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理的方法的又一示例性過程流程圖400。
處理可以進(jìn)行到框402,其中存儲(chǔ)控制器104接收或監(jiān)視指定高速緩存規(guī)則110的數(shù)據(jù)操作請(qǐng)求的接收。如上所解釋的,高速緩存管理模塊108可以從主機(jī)102處接收區(qū)域指定請(qǐng)求,其可以指定高速緩存存儲(chǔ)器112相對(duì)于與存儲(chǔ)設(shè)備的邏輯塊地址(LBA)相關(guān)聯(lián)的存儲(chǔ)設(shè)備的區(qū)域的行為。區(qū)域指定請(qǐng)求可以包括高速緩存規(guī)則110,以相對(duì)于存儲(chǔ)設(shè)備的LBA區(qū)域管理高速緩存存儲(chǔ)器112。高速緩存管理模塊108處理進(jìn)行到框404。
在框404處,存儲(chǔ)控制器104應(yīng)用針對(duì)請(qǐng)求的規(guī)則(釘住)。為了示出操作,在一個(gè)例子中,高速緩存管理模塊108已經(jīng)接收到區(qū)域指定請(qǐng)求,其包括高速緩存規(guī)則110或暗示,以將數(shù)據(jù)以在高速緩存存儲(chǔ)器112中持續(xù)的方式(釘住)進(jìn)行存儲(chǔ)。應(yīng)該理解的是,其它示例性高速緩存規(guī)則可以用于實(shí)現(xiàn)本申請(qǐng)的技術(shù)。高速緩存管理模塊108處理進(jìn)行到框406。
在框406處,存儲(chǔ)控制器104借助指定的規(guī)則處理數(shù)據(jù)操作請(qǐng)求。在一個(gè)例子中,假設(shè)繼續(xù)上述例子,高速緩存管理模塊108接收高速緩存規(guī)則110,從而以在高速緩存存儲(chǔ)器112中的持續(xù)方式(釘住)存儲(chǔ)數(shù)據(jù)。在該情況中,可以假設(shè)高速緩存管理模塊108確定在數(shù)據(jù)操作請(qǐng)求的LBA區(qū)域與先前接收到的相關(guān)于釘住的LBA區(qū)域之間不存在匹配,然后可以以正常方式或通過指定的默認(rèn)行為處理數(shù)據(jù)操作請(qǐng)求。在另一方面,如果高速緩存管理模塊108確定在數(shù)據(jù)操作請(qǐng)求的LBA區(qū)域與先前接收到的相關(guān)于釘住的LBA區(qū)域之間存在匹配,則可以通過應(yīng)用相關(guān)于釘住的高速緩存規(guī)則而處理數(shù)據(jù)操作請(qǐng)求。一旦執(zhí)行了框406的處理,高速緩存管理模塊108處理可以進(jìn)行回框402,以繼續(xù)接收或監(jiān)視指定用于管理高速緩存存儲(chǔ)器112的高速緩存規(guī)則110的數(shù)據(jù)操作請(qǐng)求的接收,以及指定從數(shù)據(jù)存儲(chǔ)設(shè)備讀取數(shù)據(jù)的請(qǐng)求、將數(shù)據(jù)寫入到數(shù)據(jù)存儲(chǔ)設(shè)備的請(qǐng)求的數(shù)據(jù)操作請(qǐng)求的接收。
應(yīng)該理解的是,相對(duì)圖4描述的過程是出于圖示的目的,并且可以采用其它例子來實(shí)現(xiàn)本申請(qǐng)的技術(shù)。
圖5A-5F是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖。圖5A-5F的過程流程圖描述了存儲(chǔ)控制器104如何管理高速緩存存儲(chǔ)器112。如上所解釋的,存儲(chǔ)控制器104可以從主機(jī)102接收區(qū)域指定請(qǐng)求,該請(qǐng)求可以指定高速緩存管理模塊108如何管理或控制高速緩存存儲(chǔ)器112相對(duì)于與數(shù)據(jù)存儲(chǔ)設(shè)備114的LBA相關(guān)聯(lián)的存儲(chǔ)設(shè)備的區(qū)域的行為。也就是說,區(qū)域指定請(qǐng)求可以包括高速緩存規(guī)則110,以控制高速緩存管理模塊108如何相對(duì)于數(shù)據(jù)存儲(chǔ)設(shè)備114的LBA區(qū)域管理高速緩存存儲(chǔ)器112。存儲(chǔ)控制器104然后可以從主機(jī)102接收數(shù)據(jù)操作請(qǐng)求,其可以指定寫入操作以將數(shù)據(jù)寫入到數(shù)據(jù)存儲(chǔ)設(shè)備114,并包括將寫入的數(shù)據(jù)和將寫入數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備114中的位置的LBA區(qū)域。在另一例子中,數(shù)據(jù)操作請(qǐng)求可以指定讀取操作,以從數(shù)據(jù)存儲(chǔ)設(shè)備114讀取數(shù)據(jù),并包括將讀取數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備中的位置的LBA區(qū)域。如以下更詳細(xì)解釋的,存儲(chǔ)控制器104可以基于在與數(shù)據(jù)操作請(qǐng)求一起包括的LBA區(qū)域與先前接收到的LBA區(qū)域之間比較的比較結(jié)果和來自存儲(chǔ)作高速緩存規(guī)則110的區(qū)域指定請(qǐng)求的高速緩存規(guī)則來處理數(shù)據(jù)操作請(qǐng)求。
圖5A示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖500。
處理可以開始于框502,其中存儲(chǔ)控制器104經(jīng)由區(qū)域指定請(qǐng)求接收針對(duì)區(qū)域的規(guī)則。如上所解釋的,高速緩存管理模塊108可以從主機(jī)102處接收區(qū)域指定請(qǐng)求,其可以包括高速緩存規(guī)則110,以指定或指示如何相對(duì)于數(shù)據(jù)存儲(chǔ)設(shè)備114的LBA區(qū)域管理高速緩存存儲(chǔ)器112。高速緩存管理模塊108處理然后進(jìn)行到框504。
在框504處,存儲(chǔ)控制器104利用接收到的區(qū)域搜索先前接收到的指定區(qū)域規(guī)則集。在一個(gè)例子中,在框512處,高速緩存管理模塊108可以比較:接收到的包括高速緩存規(guī)則以及區(qū)域的對(duì)應(yīng)的LBA的區(qū)域指定信息,與包括高速緩存規(guī)則110的區(qū)域指定信息的列表。高速緩存管理模塊108處理然后進(jìn)行到框506。
在框506處,存儲(chǔ)控制器104檢查接收到的區(qū)域以確定它們是否是新的區(qū)域或是否存在重疊。例如,如果在框512處高速緩存管理模塊108確定接收到的LBA區(qū)域信息指定新的區(qū)域信息并且高速緩存規(guī)則不存在于當(dāng)前高速緩存規(guī)則110列表中,則高速緩存管理模塊108處理進(jìn)行到框508。例如,在一種情況下,當(dāng)接收到的高速緩存規(guī)則和/或與高速緩存規(guī)則相關(guān)聯(lián)的區(qū)域不存在于高速緩存規(guī)則110內(nèi)時(shí)可能發(fā)生該條件。在另一方面,如果高速緩存管理模塊108確定接收到的LBA區(qū)域信息指定新的區(qū)域信息并且高速緩存規(guī)則與當(dāng)前高速緩存規(guī)則110重疊,則高速緩存管理模塊處理進(jìn)行到框510。例如,在一種情況下,當(dāng)接收到的高速緩存規(guī)則和/或與高速緩存規(guī)則相關(guān)聯(lián)的區(qū)域與高速緩存規(guī)則和/或與在高速緩存規(guī)則110中的高速緩存規(guī)則相關(guān)聯(lián)的區(qū)域重疊時(shí),可以發(fā)生重疊條件。
在框508處,存儲(chǔ)控制器104借助提供的規(guī)則創(chuàng)建新的區(qū)域。例如,可以假設(shè)在框512處高速緩存管理模塊108確定接收到的LBA區(qū)域信息指定新的區(qū)域信息并且高速緩存規(guī)則不存在于當(dāng)前高速緩存規(guī)則110中。在該情況下,在框512處,高速緩存管理模塊108在新的區(qū)域高速緩存規(guī)則110中創(chuàng)建條目,條目值對(duì)應(yīng)于指定LBA區(qū)域和相關(guān)聯(lián)的高速緩存規(guī)則的請(qǐng)求的高速緩存規(guī)則。在一個(gè)例子中,高速緩存管理模塊108處理可以進(jìn)行回框502,以繼續(xù)檢查進(jìn)一步輸入?yún)^(qū)域指定請(qǐng)求。
在框510處,存儲(chǔ)控制器104調(diào)整針對(duì)現(xiàn)有區(qū)域的規(guī)則。在一個(gè)例子中,如上所解釋的,高速緩存管理模塊108從主機(jī)102處接收區(qū)域指定請(qǐng)求,該請(qǐng)求包括與在框512處先前存儲(chǔ)在高速緩存規(guī)則110中的高速緩存規(guī)則重疊的高速緩存規(guī)則。也就是說,在框512處,接收到的LBA區(qū)域信息指定新的區(qū)域信息以及高速緩存規(guī)則,其與當(dāng)前高速緩存規(guī)則110重疊。當(dāng)接收到的高速緩存規(guī)則和/或與高速緩存規(guī)則相關(guān)聯(lián)的區(qū)域與在高速緩存規(guī)則110內(nèi)的高速緩存規(guī)則和/或與高速緩存規(guī)則相關(guān)聯(lián)的區(qū)域重疊時(shí),可以發(fā)生重疊條件。在該情況下,在框512處,高速緩存管理模塊108根據(jù)接收到的高速緩存規(guī)則調(diào)整高速緩存規(guī)則110。在一個(gè)例子中,在框512處,高速緩存管理模塊108可以修正或調(diào)整在高速緩存規(guī)則110中的信息,例如高速緩存規(guī)則本身、與規(guī)則相關(guān)聯(lián)的LBA區(qū)域或其組合。在一個(gè)例子中,高速緩存管理模塊108處理可以進(jìn)行回框502,以繼續(xù)檢查進(jìn)一步的輸入?yún)^(qū)域指定請(qǐng)求。
圖5B示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例過程流程圖520。圖5B示出的過程類似于圖5A,除了圖5B描述了存儲(chǔ)控制器104接收特殊的區(qū)域指定請(qǐng)求,并由此過程跟隨特定路徑。
為了示出操作,還將假設(shè)框512在接收到新接收的區(qū)域指定請(qǐng)求之前提供原始規(guī)則的高速緩存規(guī)則110,并且框514基于來自新接收到的區(qū)域指定請(qǐng)求的高速緩存規(guī)則提供更新后的高速緩存規(guī)則110。例如,可以假設(shè)在框512處高速緩存規(guī)則110包括后續(xù)高速緩存規(guī)則和相關(guān)聯(lián)的LBA區(qū)域。對(duì)于區(qū)域0,條目指定對(duì)于具有LAB區(qū)域0到99的數(shù)據(jù)操作請(qǐng)求,高速緩存規(guī)則指定高速緩存管理模塊108將以在高速緩存存儲(chǔ)器112中的持續(xù)方式存儲(chǔ)數(shù)據(jù)。對(duì)于區(qū)域1,條目指定對(duì)于具有LBA區(qū)域100到199的數(shù)據(jù)操作請(qǐng)求,高速緩存規(guī)則指定高速緩存管理模塊108將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備并繞過高速緩存存儲(chǔ)器112。對(duì)于區(qū)域2,條目指定對(duì)于具有LBA區(qū)域200到299的數(shù)據(jù)操作請(qǐng)求,高速緩存規(guī)則指定高速緩存管理模塊108等待,以基于高速緩存存儲(chǔ)器的空間的可用性而將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器112。默認(rèn)地,也就是說,對(duì)于在上述LBA區(qū)域(區(qū)域0、1和2)的范圍外的請(qǐng)求,條目指定高速緩存管理模塊108將從不等待高速緩存存儲(chǔ)器112中的空間而將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器中。應(yīng)該理解的是,在框512處,高速緩存規(guī)則110的條目是出于圖示的目的,并且可以采用不同數(shù)量和類型的高速緩存規(guī)則和相關(guān)聯(lián)的LBA區(qū)域來實(shí)踐本申請(qǐng)的技術(shù)。例如,在框512處,高速緩存規(guī)則110可以包括不同數(shù)量的條目指定不同的LBA區(qū)域和與區(qū)域相關(guān)聯(lián)的不同高速緩存規(guī)則。
處理可以開始于框502,其中存儲(chǔ)控制器104經(jīng)由區(qū)域指定請(qǐng)求操作接收區(qū)域的規(guī)則。在該例子中,為了說明,可以假設(shè)高速緩存管理模塊108接收指定LBA區(qū)域300-399的區(qū)域指定請(qǐng)求和指定在與LBA區(qū)域300-399相關(guān)聯(lián)或位于LBA區(qū)域300-399處的高速緩存存儲(chǔ)器112中釘住數(shù)據(jù)的相關(guān)聯(lián)的高速緩存規(guī)則。也就是說,在該情況下,高速緩存規(guī)則指定如果與數(shù)據(jù)操作請(qǐng)求相關(guān)聯(lián)的區(qū)域匹配LBA區(qū)域300-399,則高速緩存管理模塊108以在高速緩存存儲(chǔ)器112中持續(xù)的方式(釘住情況)存儲(chǔ)數(shù)據(jù)。高速緩存管理模塊108處理隨后進(jìn)行到框504。
在框504處,存儲(chǔ)控制器104借助接收到的區(qū)域請(qǐng)求搜索先前指定的區(qū)域規(guī)則集。在一個(gè)例子中,在框512處,高速緩存管理模塊108搜索高速緩存規(guī)則110,以確定接收到的區(qū)域是否被列出或者具有在高速緩存規(guī)則中的條目。在該情況下,在框512處,高速緩存管理模塊108確定接收到的區(qū)域請(qǐng)求(LBA區(qū)域300-399以及帶有在高速緩存存儲(chǔ)器中釘住數(shù)據(jù)的相關(guān)聯(lián)的高速緩存規(guī)則)不存在于高速緩存列表中。高速緩存管理模塊108處理進(jìn)行到框506以進(jìn)行進(jìn)一步的分析。
在框506處,存儲(chǔ)控制器104檢查接收到的區(qū)域以確定它們是否是新的區(qū)域或者是否存在重疊。在該情況下,為了示出操作,可以假設(shè)在框512處高速緩存管理模塊108確定接收到的區(qū)域不存在于高速緩存規(guī)則110中,并因此這是個(gè)新的高速緩存規(guī)則和相關(guān)聯(lián)的LBA區(qū)域。在這種情況下,處理進(jìn)行到框508,其中在框514處高速緩存管理模塊108在高速緩存規(guī)則110中借助具有提供的高速緩存規(guī)則的新區(qū)域創(chuàng)建條目。在該情況下,高速緩存管理模塊108在框514處創(chuàng)建具有對(duì)應(yīng)于請(qǐng)求的條目值的條目。也就是說,區(qū)域3用于指定LBA區(qū)域300-399以及帶有在高速緩存112中釘住數(shù)據(jù)的相關(guān)聯(lián)的高速緩存規(guī)則。在一個(gè)例子中,高速緩存管理模塊108處理可以進(jìn)行回框502,以繼續(xù)檢查輸入?yún)^(qū)域指定請(qǐng)求。
圖5C示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖530。圖5C示出的過程類似于圖5A,除了圖5C描述存儲(chǔ)控制器104接收特殊的區(qū)域請(qǐng)求,并由此過程跟隨特定路徑。還將假設(shè)框512提供當(dāng)前或原始高速緩存規(guī)則110的列表,并且框514在接收到區(qū)域指定請(qǐng)求之后提供新的或更新后的高速緩存規(guī)則的列表,如下文所描述的。
處理可以開始于框502,其中存儲(chǔ)控制器104經(jīng)由區(qū)域指定請(qǐng)求操作接收區(qū)域的規(guī)則。在該例子中,為了說明,可以假設(shè)高速緩存管理模塊108接收指定帶有相關(guān)聯(lián)的高速緩存規(guī)則110的LBA區(qū)域100-199的請(qǐng)求,所述相關(guān)聯(lián)的高速緩存規(guī)則110指定或指示高速緩存管理模塊在寫入數(shù)據(jù)到高速緩存存儲(chǔ)器112時(shí)總是等待高速緩存存儲(chǔ)器112中的空間。也就是說,在該情況下,高速緩存規(guī)則110指定或指示高速緩存管理模塊108在將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器中之前等待高速緩存存儲(chǔ)器112中的空間。高速緩存管理模塊108處理進(jìn)行到框504,其中搜索先前指定的具有接收到的輸入?yún)^(qū)域請(qǐng)求的區(qū)域規(guī)則110。在一個(gè)例子中,在框512處,高速緩存管理模塊108搜索高速緩存規(guī)則110,以在框512處確定接收到的區(qū)域和高速緩存規(guī)則是否列在高速緩存規(guī)則110中。在該情況下,在框512處,高速緩存管理模塊108確定接收到的區(qū)域請(qǐng)求(LBA區(qū)域100-199被高速緩存規(guī)則指定總是等待高速緩存存儲(chǔ)器中的空間)出現(xiàn)在高速緩存規(guī)則110中。高速緩存管理模塊108處理進(jìn)行到框506用于進(jìn)一步的分析。
在框506處,存儲(chǔ)控制器104檢查接收到的區(qū)域以確定它們是否是新的區(qū)域或是否存在重疊。在該情況下,在框512處高速緩存管理模塊108確定在接收到的區(qū)域和在高速緩存規(guī)則110中列出的區(qū)域之間存在重疊。在該情況下,處理進(jìn)行到框510,其中高速緩存管理模塊108調(diào)整現(xiàn)有條目的規(guī)則,在該情況下,合并兩個(gè)相鄰區(qū)域?qū)е略诳?14處的條目。也就是說,區(qū)域1現(xiàn)在指定對(duì)于100到299的LBA,高速緩存規(guī)則用于指定在將數(shù)據(jù)寫入高速緩存存儲(chǔ)器之前高速緩存管理模塊108總是等待高速緩存存儲(chǔ)器112中的空間。在一個(gè)例子中,高速緩存管理模塊108處理可以進(jìn)行回框502,以繼續(xù)檢查輸入?yún)^(qū)域指定請(qǐng)求。
圖5D示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖540。圖5D示出的過程類似于圖5A,除了圖5D描述存儲(chǔ)控制器104接收特殊的區(qū)域請(qǐng)求,并由此過程跟隨特定路徑。還將假設(shè)框512提供原始高速緩存規(guī)則110的列表,并且框514提供新的或調(diào)整后的高速緩存規(guī)則的列表,如下文所描述的。
處理可以開始于框502,其中存儲(chǔ)控制器104經(jīng)由區(qū)域指定請(qǐng)求操作接收區(qū)域的規(guī)則。在該例子中,為了說明,可以假設(shè)請(qǐng)求指定具有沒有高速緩存規(guī)則的LBA區(qū)域100-199的區(qū)域。也就是說,在該情況下,高速緩存規(guī)則指定應(yīng)用默認(rèn)規(guī)則,用于當(dāng)稍后接收具有LBA區(qū)域100-199的數(shù)據(jù)操作請(qǐng)求時(shí)如何處理高速緩存存儲(chǔ)器112。高速緩存管理模塊108處理進(jìn)行到框504,其中存儲(chǔ)控制器104借助接收到的區(qū)域請(qǐng)求搜索先前指定的高速緩存規(guī)則110。在一個(gè)例子中,在框512處,高速緩存管理模塊108搜索高速緩存規(guī)則110,以確定接收到的區(qū)域是否在高速緩存規(guī)則中列出。在該情況下,在框512處,高速緩存管理模塊108確定接收到的區(qū)域請(qǐng)求(不具有高速緩存規(guī)則的LBA區(qū)域100-199)出現(xiàn)在高速緩存規(guī)則110中。高速緩存管理模塊108處理進(jìn)行到框506,以進(jìn)行進(jìn)一步的分析。
在框506處,存儲(chǔ)控制器104檢查接收到的區(qū)域以確定它們是否是新的區(qū)域或是否存在重疊。在該情況下,在框512處高速緩存管理模塊108確定在接收到的區(qū)域和在高速緩存規(guī)則110中列出的區(qū)域之間存在重疊。在該情況下,處理進(jìn)行到框510,其中存儲(chǔ)控制器104調(diào)整現(xiàn)有條目的規(guī)則,在該情況下,以移除不具有規(guī)則的區(qū)域。在一個(gè)例子中,高速緩存管理模塊108移除在高速緩存規(guī)則110中與在框514處導(dǎo)致條目的LBA區(qū)域100-199相關(guān)聯(lián)的條目。也就是說,在框512處,區(qū)域1(具有繞過規(guī)則的LBA 100-199)不再如框514所示存在。在一個(gè)例子中,高速緩存管理模塊108處理可以進(jìn)行回框502,以繼續(xù)檢查輸入?yún)^(qū)域指定請(qǐng)求。
圖5E示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖550。圖5E示出的過程類似于圖5A,除了圖5E描述存儲(chǔ)控制器104接收特殊的區(qū)域請(qǐng)求,并由此過程跟隨特定路徑。還將假設(shè)框512提供原始或當(dāng)前高速緩存規(guī)則110的列表,并且框514在處理請(qǐng)求之后提供新的或修正后的高速緩存規(guī)則的列表,如下文所描述的。
處理可以開始于框502,其中存儲(chǔ)控制器104經(jīng)由區(qū)域指定請(qǐng)求操作接收區(qū)域的規(guī)則。在該例子中,為了說明,可以假設(shè)請(qǐng)求指定具有LBA區(qū)域100-199的區(qū)域,所述LBA區(qū)域100-199具有指定總是等待高速緩存存儲(chǔ)器112中的空間的高速緩存規(guī)則。也就是說,在該情況下,高速緩存規(guī)則指定或指示高速緩存管理模塊108在將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器之前等待高速緩存存儲(chǔ)器中的空間。高速緩存管理模塊108處理進(jìn)行到框504,其中存儲(chǔ)控制器104借助接收到的區(qū)域請(qǐng)求搜索先前指定的區(qū)域規(guī)則集。在一個(gè)例子中,在框512處,高速緩存管理模塊108搜索高速緩存列表,以確定接收到的區(qū)域是否在高速緩存列表中列出。在該情況下,在框512處,高速緩存管理模塊108確定接收到的區(qū)域請(qǐng)求(具有指定總是等待高速緩存存儲(chǔ)器中的空間的高速緩存規(guī)則的LBA區(qū)域100-199)出現(xiàn)在列表中。高速緩存管理模塊108處理進(jìn)行到框506,以進(jìn)行進(jìn)一步的分析。
在框506處,存儲(chǔ)控制器104檢查接收到的區(qū)域以確定它們是否是新的區(qū)域或是否存在重疊。在該情況下,在框512處高速緩存管理模塊108確定在接收到的區(qū)域和在高速緩存列表中列出的區(qū)域之間存在重疊。在該情況下,處理進(jìn)行到框510,其中高速緩存管理模塊108調(diào)整現(xiàn)有條目的規(guī)則,在該情況下,合并兩個(gè)相鄰區(qū)域。在一個(gè)例子中,高速緩存管理模塊108調(diào)整在框512中導(dǎo)致框514的條目的區(qū)域列表中的條目。也就是說,現(xiàn)在區(qū)域1用于指定如框514所示的總是等待的高速緩存規(guī)則。在一個(gè)例子中,高速緩存管理模塊108處理可以進(jìn)行回框502,以繼續(xù)檢查輸入?yún)^(qū)域指定請(qǐng)求。
圖5F示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖560。圖5F示出的過程類似于圖5A,除了圖5F描述存儲(chǔ)控制器104接收特殊的區(qū)域請(qǐng)求,并由此過程跟隨特定路徑。還將假設(shè)框512提供原始的規(guī)則的列表,并且框514提供新的規(guī)則的列表,如下文所描述的。
處理可以開始于框502,其中存儲(chǔ)控制器104經(jīng)由區(qū)域指定請(qǐng)求操作接收區(qū)域的規(guī)則。在該例子中,為了說明,可以假設(shè)請(qǐng)求指定默認(rèn)的行為繞過。也就是說,在該情況下,高速緩存規(guī)則指定或指示高速緩存管理模塊108如果在區(qū)域指定請(qǐng)求中指定的區(qū)域沒有出現(xiàn)在高速緩存列表中,則默認(rèn)行為是繞過高速緩存存儲(chǔ)器,并將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)存儲(chǔ)設(shè)備114而不是高速緩存存儲(chǔ)器112。高速緩存管理模塊108處理進(jìn)行到框504,其中存儲(chǔ)控制器104借助接收到的區(qū)域請(qǐng)求搜索先前指定的區(qū)域規(guī)則集。在一個(gè)例子中,在框512處,高速緩存管理模塊108搜索高速緩存列表,以確定接收到的區(qū)域是否在高速緩存規(guī)則中列出。在該情況下,在框512處,高速緩存管理模塊108確定接收到的區(qū)域請(qǐng)求(指定默認(rèn)行為繞過)出現(xiàn)在列表中。高速緩存管理模塊108處理進(jìn)行到框506,以進(jìn)行進(jìn)一步的分析。
在框506處,存儲(chǔ)控制器104檢查接收到的區(qū)域以確定它們是否是新的區(qū)域或是否存在重疊。在該情況下,存儲(chǔ)控制器104確定在接收到的區(qū)域和在區(qū)域列表中列出的區(qū)域之間存在匹配。在該情況下,處理進(jìn)行到框510,其中存儲(chǔ)控制器104調(diào)整現(xiàn)有條目的規(guī)則,在該情況下,高速緩存管理模塊108移除對(duì)應(yīng)于區(qū)域1(具有繞過的高速緩存規(guī)則的LBA 100-199)的條目,因?yàn)楦咚倬彺嬉?guī)則指定繞過匹配接收到的區(qū)域指定請(qǐng)求的高速緩存規(guī)則。在該情況下,高速緩存管理模塊108調(diào)整導(dǎo)致框514處的條目的在框512處的高速緩存規(guī)則中的條目。在一個(gè)例子中,高速緩存管理模塊108處理可以進(jìn)行回框502,以繼續(xù)檢查輸入?yún)^(qū)域指定請(qǐng)求。
應(yīng)該理解的是,結(jié)合圖5A-5F描述的過程是出于圖示的目的,并且可以采用其它例子實(shí)現(xiàn)本申請(qǐng)的技術(shù)。例如,高速緩存規(guī)則列表512的條目是出于圖示的目的,并且可以采用不同數(shù)量和類型的高速緩存規(guī)則和相關(guān)聯(lián)的LBA區(qū)域來實(shí)踐本申請(qǐng)的技術(shù)。
圖6A-6E是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖。圖6A-6E的過程流程圖描述了當(dāng)處理數(shù)據(jù)操作請(qǐng)求時(shí)存儲(chǔ)控制器104如何管理高速緩存存儲(chǔ)器112。如上所解釋的,存儲(chǔ)控制器104可以從主機(jī)102接收區(qū)域指定請(qǐng)求,該請(qǐng)求可以指定高速緩存管理模塊108如何控制高速緩存存儲(chǔ)器112相對(duì)于指定與數(shù)據(jù)存儲(chǔ)設(shè)備114的LBA相關(guān)聯(lián)的存儲(chǔ)設(shè)備的區(qū)域的數(shù)據(jù)操作請(qǐng)求的行為。存儲(chǔ)控制器104然后可以從主機(jī)102接收數(shù)據(jù)操作請(qǐng)求,其可以指定寫入操作以將數(shù)據(jù)寫入到數(shù)據(jù)存儲(chǔ)設(shè)備,并且請(qǐng)求可以包括將寫入的數(shù)據(jù)和將寫入數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備114的位置的LBA區(qū)域。在另一例子中,數(shù)據(jù)操作請(qǐng)求可以指定讀取操作,以從數(shù)據(jù)存儲(chǔ)設(shè)備讀取數(shù)據(jù),并且所述請(qǐng)求包括將讀取數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備的位置的LBA區(qū)域。如以下更詳細(xì)解釋的,與包含先前從來自區(qū)域指定請(qǐng)求的LBA區(qū)域接收到的信息的高速緩存規(guī)則110相比,存儲(chǔ)控制器104可以基于來自數(shù)據(jù)操作請(qǐng)求的LBA區(qū)域的信息來處理數(shù)據(jù)操作請(qǐng)求。
圖6A(圖6A-1和圖6A-2)示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖600。
處理可以開始于框602,其中存儲(chǔ)控制器104接收未指定額外規(guī)則的數(shù)據(jù)操作請(qǐng)求。在一個(gè)例子中,高速緩存管理模塊108可以從主機(jī)102處接收數(shù)據(jù)操作請(qǐng)求,該請(qǐng)求可以指定將數(shù)據(jù)寫入數(shù)據(jù)存儲(chǔ)設(shè)備的寫入操作,并且該請(qǐng)求可以包括將寫入的數(shù)據(jù)和寫入數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備114中的位置的LBA區(qū)域。在另一例子中,高速緩存管理模塊108可以接收數(shù)據(jù)操作請(qǐng)求,該請(qǐng)求可以指定讀取操作,以從數(shù)據(jù)存儲(chǔ)設(shè)備114讀取數(shù)據(jù),并且該請(qǐng)求可以包括讀取數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備中的位置的LBA區(qū)域。高速緩存管理模塊108處理然后進(jìn)行到框604,其中存儲(chǔ)控制器104利用接收到的LBA搜索包含先前指定的LBA區(qū)域規(guī)則集的高速緩存規(guī)則110。
在框608處,在一個(gè)例子中,高速緩存管理模塊108可以搜索高速緩存規(guī)則110,其包括先前接收到的LBA區(qū)域的條目和相關(guān)聯(lián)的高速緩存規(guī)則。高速緩存管理108處理然后進(jìn)行到框606,其中存儲(chǔ)控制器104檢查接收到的請(qǐng)求是否匹配在高速緩存規(guī)則110內(nèi)的條目。如果高速緩存管理108確定存在匹配,則處理進(jìn)行到框610。在另一方面,如果高速緩存管理108確定不存在匹配,則處理進(jìn)行到框608。
在框608處,存儲(chǔ)控制器104檢查是否有區(qū)域剩余。在一個(gè)例子中,高速緩存管理108可以利用線性搜索、二分搜索或任意其它適當(dāng)?shù)乃阉骷夹g(shù)來搜索高速緩存規(guī)則110。如果高速緩存管理108確定在高速緩存規(guī)則110中有剩余區(qū)域待檢查,則處理進(jìn)行回框604,以繼續(xù)搜索在高速緩存規(guī)則中先前指定的區(qū)域規(guī)則。在另一方面,如果高速緩存管理108確定在高速緩存規(guī)則110中沒有區(qū)域剩余待檢查,則處理進(jìn)行到框612。
在框612處,存儲(chǔ)控制器104正常處理請(qǐng)求或通過指定的默認(rèn)行為處理請(qǐng)求。在一個(gè)例子中,該框可以描述查找操作的結(jié)果,例如在圖6B中,查找操作包括在框605處檢查高速緩存規(guī)則。如果在框606處發(fā)現(xiàn)高速緩存規(guī)則,則處理進(jìn)行到框610;但是如果過程沒有發(fā)現(xiàn)匹配輸入請(qǐng)求的高速緩存規(guī)則,則處理進(jìn)行以執(zhí)行默認(rèn)行為。在一個(gè)例子中,存儲(chǔ)控制器104可以指定默認(rèn)行為,如圖6C所示(從不等待空間),或者可以留給存儲(chǔ)控制器來在沒有指定時(shí)選擇默認(rèn)行為。該行為然后可以根據(jù)所選的高速緩存規(guī)則應(yīng)用于請(qǐng)求。高速緩存管理模塊108處理然后進(jìn)行到框614。
在框610處,存儲(chǔ)控制器104為區(qū)域應(yīng)用規(guī)則。在一個(gè)例子中,為了示出操作,高速緩存管理模塊108可以應(yīng)用高速緩存規(guī)則110,其指定以在高速緩存存儲(chǔ)器112中持續(xù)(釘住)的方式處理數(shù)據(jù)。在一個(gè)例子中,在數(shù)據(jù)高速緩存方案中,方案可以包括單獨(dú)的存儲(chǔ)區(qū)域,其可以提供比用于處理請(qǐng)求的存儲(chǔ)介質(zhì)更快的訪問。在該情況下,高速緩存管理模塊108可以使用專用于服務(wù)于請(qǐng)求的存儲(chǔ)器。高速緩存管理模塊108處理然后進(jìn)行到框614。
在框614處,存儲(chǔ)控制器104確定應(yīng)用哪些高速緩存規(guī)則,如以下各自的框616、620、624和630結(jié)合本文描述的例子所描述的。
在框616處,存儲(chǔ)控制器104執(zhí)行高速緩存規(guī)則以使得高速緩存管理模塊108繞過高速緩存存儲(chǔ)器112。在一個(gè)例子中,高速緩存管理模塊108可以繞過高速緩存存儲(chǔ)器112,并替代地將數(shù)據(jù)直接寫入在數(shù)據(jù)存儲(chǔ)設(shè)備114中的對(duì)應(yīng)的LBA。在一個(gè)例子中,數(shù)據(jù)存儲(chǔ)設(shè)備114可以是數(shù)據(jù)存儲(chǔ)介質(zhì),其可以具有比高速緩存存儲(chǔ)器112慢的訪問,但是具有相當(dāng)程度上更大的容量。在該情況下,這可以表示主機(jī)102寫入的所有數(shù)據(jù)的結(jié)束位置。高速緩存管理模塊108處理然后進(jìn)行到框618。
在框618處,存儲(chǔ)控制器104使請(qǐng)求LBA的高速緩存無效,并發(fā)送到可能是磁盤驅(qū)動(dòng)存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)設(shè)備。在一個(gè)例子中,數(shù)據(jù)存儲(chǔ)設(shè)備114可以是數(shù)據(jù)存儲(chǔ)介質(zhì)。在該情況下,不能由高速緩存存儲(chǔ)器112服務(wù)的請(qǐng)求可以由數(shù)據(jù)存儲(chǔ)設(shè)備114服務(wù)。由例子指定的高速緩存規(guī)則描述了繞過操作,這表示該規(guī)則描述了高速緩存存儲(chǔ)器112將不被用于服務(wù)請(qǐng)求,而是將由數(shù)據(jù)存儲(chǔ)陣列106服務(wù)。在一個(gè)例子中,高速緩存管理模塊108發(fā)送請(qǐng)求到數(shù)據(jù)存儲(chǔ)陣列106,以將數(shù)據(jù)寫入到與LBA區(qū)域相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)設(shè)備114。在一個(gè)例子中,高速緩存管理模塊108處理然后可以進(jìn)行回到框602,以處理其它的輸入數(shù)據(jù)操作請(qǐng)求。
在框620處,存儲(chǔ)控制器104基于可用性將數(shù)據(jù)公布或?qū)懭氲礁咚倬彺娲鎯?chǔ)器112。在一個(gè)例子中,高速緩存規(guī)則110可以指定高速緩存管理模塊108不應(yīng)該必須等待高速緩存存儲(chǔ)器112中的空間或地方來將數(shù)據(jù)寫入到高速緩存存儲(chǔ)器112。在一個(gè)例子中,通常高速緩存存儲(chǔ)器112可以比數(shù)據(jù)存儲(chǔ)陣列更快地服務(wù)請(qǐng)求,因此可能在高速緩存存儲(chǔ)器內(nèi)沒有可用空間用于服務(wù)請(qǐng)求。在該情形下,高速緩存管理模塊108將查找從高速緩存存儲(chǔ)器中驅(qū)逐的數(shù)據(jù)。在從不等待空間高速緩存規(guī)則的情況下,如果沒有可用空間,則高速緩存管理模塊108將直接發(fā)送請(qǐng)求到數(shù)據(jù)存儲(chǔ)陣列106。高速緩存管理模塊108處理然后進(jìn)行到框622以供后續(xù)處理。
在框622處,存儲(chǔ)控制器104檢查高速緩存存儲(chǔ)器112,以確定在高速緩存存儲(chǔ)器中是否存在空間或地方。在一個(gè)例子中,在總是等待空間高速緩存規(guī)則情況和在高速緩存中釘住數(shù)據(jù)規(guī)則中,輸入請(qǐng)求可以與指示高速緩存管理模塊108在高速緩存存儲(chǔ)器112中放置數(shù)據(jù)的規(guī)則相關(guān)聯(lián)。在該情形下,將要求完成如上所述的數(shù)據(jù)驅(qū)逐來服務(wù)這些請(qǐng)求。如上所述,數(shù)據(jù)存儲(chǔ)陣列106可以具有比高速緩存存儲(chǔ)器112慢的訪問,并且等待時(shí)間取決于數(shù)據(jù)存儲(chǔ)陣列服務(wù)在數(shù)據(jù)被從高速緩存存儲(chǔ)器驅(qū)逐時(shí)創(chuàng)建的請(qǐng)求所用的時(shí)間。在一個(gè)例子中,如果高速緩存管理模塊108確定有可用空間,則處理進(jìn)行到框626,如下所述。在另一方面,如果高速緩存管理模塊108確定沒有可用空間,則處理進(jìn)行到框618處,如上所述。
在框624處,存儲(chǔ)控制器104確保數(shù)據(jù)被發(fā)布或?qū)懭氲礁咚倬彺娲鎯?chǔ)器112,但是確保數(shù)據(jù)不被釘?shù)礁咚倬彺娲鎯?chǔ)器。在一個(gè)例子中,高速緩存管理模塊108可以通過總是等待高速緩存存儲(chǔ)器112以具有存儲(chǔ)空間或地方來保存數(shù)據(jù),來處理該高速緩存規(guī)則。在一個(gè)例子中,在總是等待空間高速緩存規(guī)則情況和釘住數(shù)據(jù)高速緩存規(guī)則中,輸入請(qǐng)求可以與指示高速緩存管理模塊108將數(shù)據(jù)放置在高速緩存存儲(chǔ)器112中的規(guī)則相關(guān)聯(lián)。在該情形中,將要求完成上述數(shù)據(jù)驅(qū)逐以服務(wù)這些請(qǐng)求。如上所述,數(shù)據(jù)存儲(chǔ)陣列106可以具有比高速緩存存儲(chǔ)器112更低的訪問速度,等待時(shí)間取決于數(shù)據(jù)存儲(chǔ)陣列服務(wù)在從高速緩存存儲(chǔ)器驅(qū)逐數(shù)據(jù)時(shí)創(chuàng)建的請(qǐng)求所用的時(shí)間。高速緩存管理模塊108處理然后進(jìn)行到框628。
在框626處,存儲(chǔ)控制器將請(qǐng)求LBA的數(shù)據(jù)放置在高速緩存中。在一個(gè)例子中,高速緩存管理模塊108可以使用先進(jìn)先出(FIFO)技術(shù)或任意其它相關(guān)技術(shù)來執(zhí)行該功能。在一個(gè)例子中,F(xiàn)IFO技術(shù)可以包括用于從高速緩存存儲(chǔ)器112驅(qū)逐數(shù)據(jù)的方法??梢圆捎闷渌夹g(shù),例如隨機(jī)技術(shù)(在高速緩存存儲(chǔ)器中選擇隨機(jī)數(shù)據(jù)單元并從高速緩存存儲(chǔ)器驅(qū)逐這種數(shù)據(jù))或分類技術(shù)(以LBA順序選擇數(shù)據(jù)并從高速緩存驅(qū)逐所選的數(shù)據(jù))。這些技術(shù)中的每一個(gè)取決于數(shù)據(jù)存儲(chǔ)陣列106中介質(zhì)的類型而具有不同的優(yōu)點(diǎn)和缺點(diǎn)。在一個(gè)例子中,高速緩存管理模塊108處理可以隨后進(jìn)行回框602,以處理其它的輸入數(shù)據(jù)操作請(qǐng)求。
在框628處,存儲(chǔ)控制器104檢查高速緩存存儲(chǔ)器112,以確定在高速緩存存儲(chǔ)器中是否存在空間或地方。如上所述,在一個(gè)例子中,在總是等待空間高速緩存規(guī)則情況和在高速緩存中釘住數(shù)據(jù)規(guī)則中,輸入請(qǐng)求可以與指示高速緩存管理模塊108將數(shù)據(jù)放置在高速緩存存儲(chǔ)器112的規(guī)則相關(guān)聯(lián)。在該情形下,將要求完成上述數(shù)據(jù)驅(qū)逐以服務(wù)這些請(qǐng)求。如上所述,數(shù)據(jù)存儲(chǔ)陣列106具有比高速緩存存儲(chǔ)器112更低的訪問速度,等待時(shí)間取決于數(shù)據(jù)存儲(chǔ)陣列服務(wù)在從高速緩存存儲(chǔ)器驅(qū)逐數(shù)據(jù)時(shí)創(chuàng)建的請(qǐng)求所用的時(shí)間。在一個(gè)例子中,如果高速緩存管理模塊108確定在高速緩存存儲(chǔ)器112中存在空間以寫入數(shù)據(jù),則處理進(jìn)行到框626,如上所述。在另一方面,如果高速緩存管理模塊108確定沒有可用空間,則處理進(jìn)行到框634,如下所述。
在框630處,存儲(chǔ)控制器104將數(shù)據(jù)釘住在高速緩存存儲(chǔ)器112中。在一個(gè)例子中,高速緩存管理模塊108將數(shù)據(jù)以持續(xù)方式寫入到高速緩存存儲(chǔ)器112中。如上所述在一個(gè)例子中,非持續(xù)可以定義為如果需要空間則從高速緩存存儲(chǔ)器驅(qū)逐數(shù)據(jù)的條件或規(guī)則。在另一方面,持續(xù)(釘住)可以定義為除非指定否則不從高速緩存存儲(chǔ)器驅(qū)逐數(shù)據(jù)的條件或規(guī)則。高速緩存管理模塊108處理然后進(jìn)行到框632。
在框632處,存儲(chǔ)控制器104檢查高速緩存存儲(chǔ)器,以確定在高速緩存存儲(chǔ)器中是否存在空間或地方。如上所述,在一個(gè)例子中,在總是等待空間高速緩存規(guī)則和在高速緩存中釘住數(shù)據(jù)規(guī)則中,輸入請(qǐng)求可以與指示高速緩存管理模塊108將數(shù)據(jù)放置在高速緩存存儲(chǔ)器112中的規(guī)則相關(guān)聯(lián)。在該情形下,將要求完成上述數(shù)據(jù)驅(qū)逐以服務(wù)這些請(qǐng)求。如上所述,數(shù)據(jù)存儲(chǔ)陣列106具有比高速緩存存儲(chǔ)器112更低的訪問速度,等待時(shí)間取決于數(shù)據(jù)存儲(chǔ)陣列服務(wù)在從高速緩存存儲(chǔ)器驅(qū)逐數(shù)據(jù)時(shí)創(chuàng)建的請(qǐng)求所用的時(shí)間。在一個(gè)例子中,如果高速緩存管理模塊108確定在高速緩存存儲(chǔ)器112中存在空間,則處理進(jìn)行到框636。在另一方面,如果高速緩存管理模塊108確定沒有可用空間,則處理進(jìn)行到框634。
在框634處,存儲(chǔ)控制器104等待空間變成可用于將請(qǐng)求LBA放置于高速緩存存儲(chǔ)器112中。在一個(gè)例子中,當(dāng)請(qǐng)求指定在空間可用時(shí)總是等待,高速緩存管理模塊108處理可以進(jìn)行到框626。如上所述,在一個(gè)例子中,在總是等待空間高速緩存規(guī)則情況和在高速緩存中釘住數(shù)據(jù)規(guī)則中,輸入請(qǐng)求可以與指示高速緩存管理模塊108將數(shù)據(jù)放置在高速緩存存儲(chǔ)器112中的規(guī)則相關(guān)聯(lián)。在該情形下,要求完成上述數(shù)據(jù)驅(qū)逐過程以服務(wù)這些請(qǐng)求。如上所述,數(shù)據(jù)存儲(chǔ)陣列106具有比高速緩存存儲(chǔ)器112更低的訪問速度,并且等待時(shí)間取決于數(shù)據(jù)存儲(chǔ)陣列服務(wù)在從高速緩存存儲(chǔ)器驅(qū)逐數(shù)據(jù)時(shí)創(chuàng)建的請(qǐng)求所用的時(shí)間。在另一例子中,當(dāng)請(qǐng)求指定以持續(xù)方式(釘住請(qǐng)求)管理數(shù)據(jù)時(shí)以及當(dāng)在高速緩存存儲(chǔ)器中有可用空間時(shí),高速緩存管理模塊108處理進(jìn)行到框636。
在框636處,存儲(chǔ)控制器104將請(qǐng)求LBA的數(shù)據(jù)以持續(xù)方式(釘住)放置到高速緩存存儲(chǔ)器中。在一個(gè)例子中,高速緩存管理模塊108可以配置為不從高速緩存存儲(chǔ)器驅(qū)逐數(shù)據(jù),直到滿足指定閾值。在一個(gè)例子中,高速緩存管理模塊108可以配置為管理釘住區(qū)域的量,從而不超過高速緩存存儲(chǔ)器112的整體大小。如果是這種情況,則存儲(chǔ)控制器104可能不能滿足指定的釘住規(guī)則。所述“閾值”是上述要求的實(shí)現(xiàn)。在一個(gè)例子中,高速緩存管理模塊108處理可以進(jìn)行回框602,以處理其它的輸入數(shù)據(jù)操作請(qǐng)求。
圖6B示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖650。圖6B所示的過程類似于圖6A,除了圖6B描述存儲(chǔ)控制器104接收具有數(shù)據(jù)操作請(qǐng)求的區(qū)域信息,并由此過程跟隨特定路徑,如下文更詳細(xì)描述的。
為了示出操作,還將假設(shè)框606表示提供指定高速緩存管理模塊108如何相對(duì)特定LBA區(qū)域處理高速緩存存儲(chǔ)器112的高速緩存規(guī)則110。例如,可以假設(shè)在框605處高速緩存規(guī)則包括以下高速緩存規(guī)則的列表和相關(guān)聯(lián)的LBA區(qū)域。對(duì)于區(qū)域0,條目指定對(duì)于具有LBA區(qū)域0到99的數(shù)據(jù)操作請(qǐng)求,高速緩存規(guī)則110指定高速緩存管理模塊108以在高速緩存存儲(chǔ)器112中持續(xù)的方式(釘住)來存儲(chǔ)數(shù)據(jù)。對(duì)于區(qū)域1,條目指定對(duì)于具有LBA區(qū)域100到199的數(shù)據(jù)操作請(qǐng)求,高速緩存規(guī)則110指定高速緩存管理模塊108將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備并繞過高速緩存存儲(chǔ)器112。對(duì)于區(qū)域2,條目指定對(duì)于具有LBA區(qū)域200到299的數(shù)據(jù)操作請(qǐng)求,高速緩存規(guī)則110指定高速緩存管理模塊108等待以基于高速緩存存儲(chǔ)器的空間的可用性而將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器112。默認(rèn)地,也就是說,對(duì)于在上述LBA區(qū)域(區(qū)域0、1和2)的范圍外的請(qǐng)求,條目指定高速緩存管理模塊108將不等待高速緩存存儲(chǔ)器112中的空間而將數(shù)據(jù)存儲(chǔ)到高速緩存存儲(chǔ)器中。應(yīng)該理解的是,在框605處,高速緩存規(guī)則110的條目是出于圖示的目的,并且可以采用不同數(shù)量和類型的高速緩存規(guī)則和相關(guān)聯(lián)的LBA區(qū)域來實(shí)踐本申請(qǐng)的技術(shù)。例如,在框605處,高速緩存規(guī)則110可以包括不同數(shù)量的條目,其指定不同的LBA區(qū)域和與區(qū)域相關(guān)聯(lián)的不同高速緩存規(guī)則。
處理可以開始于框602,其中存儲(chǔ)控制器104接收提供指定LBA 150的區(qū)域的數(shù)據(jù)操作的數(shù)據(jù)操作請(qǐng)求。高速緩存管理模塊108處理進(jìn)行到框604,存儲(chǔ)控制器104借助接收到的請(qǐng)求LBA搜索先前指定的LBA區(qū)域和在框605處的相關(guān)聯(lián)的高速緩存規(guī)則110。在一個(gè)例子中,為了示出操作,處理進(jìn)行到框604,其中存儲(chǔ)控制器104確定應(yīng)用高速緩存規(guī)則110屬于框616。在框616處,存儲(chǔ)控制器104執(zhí)行高速緩存規(guī)則110,以繞過高速緩存存儲(chǔ)器112。高速緩存管理模塊108處理進(jìn)行到框618,其中存儲(chǔ)控制器104使得請(qǐng)求LBA的高速緩存存儲(chǔ)器112無效,并發(fā)送到可能是磁盤驅(qū)動(dòng)存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)設(shè)備。在一個(gè)例子中,高速緩存管理模塊108處理進(jìn)行回框602,以處理其它輸入數(shù)據(jù)操作請(qǐng)求。
圖6C示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖660。圖6C所示的過程類似于圖6A,除了圖6C描述存儲(chǔ)控制器104接收具有數(shù)據(jù)操作請(qǐng)求的區(qū)域信息,并由此過程跟隨特定路徑,如下文更詳細(xì)描述的。
處理可以開始于框602,其中存儲(chǔ)控制器104接收提供指定LBA 300的區(qū)域的數(shù)據(jù)操作的數(shù)據(jù)操作請(qǐng)求。高速緩存管理模塊108處理進(jìn)行到框604,其中存儲(chǔ)控制器104借助接收到的請(qǐng)求LBA搜索先前指定的LBA區(qū)域和在框605處的高速緩存規(guī)則110。在一個(gè)例子中,為了示出操作,高速緩存管理模塊108處理進(jìn)行到框604,其中存儲(chǔ)控制器104確定應(yīng)用高速緩存規(guī)則110屬于框620。在框620處,存儲(chǔ)控制器104以類似于上述方式基于可用性將數(shù)據(jù)發(fā)布或?qū)懭氲礁咚倬彺娲鎯?chǔ)器112中。
圖6D示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖670。圖6D所示的過程類似于圖6A,除了圖6D描述存儲(chǔ)控制器104接收具有數(shù)據(jù)操作請(qǐng)求的區(qū)域信息,并由此過程跟隨特定路徑,如下文更詳細(xì)描述的。
處理可以開始于框602,其中存儲(chǔ)控制器104接收提供指定LBA 250的區(qū)域的數(shù)據(jù)操作的數(shù)據(jù)操作請(qǐng)求。高速緩存管理模塊108處理進(jìn)行到框604,在其中借助接收到的請(qǐng)求LBA搜索先前指定的LBA區(qū)域和在框605處的高速緩存規(guī)則110。在一個(gè)例子中,為了示出操作,高速緩存管理模塊108處理進(jìn)行到框614,其中確定應(yīng)用高速緩存規(guī)則110屬于框624。在框624處,存儲(chǔ)控制器104以類似上述方式確保數(shù)據(jù)被發(fā)布或?qū)懭氲礁咚倬彺娲鎯?chǔ)器112并且確保數(shù)據(jù)不被釘住到高速緩存存儲(chǔ)器(例如,總是等待空間或地方)。
圖6E示出了根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的示例性過程流程圖680。圖6E所示的過程類似于圖6A,除了圖6E描述存儲(chǔ)控制器104接收具有數(shù)據(jù)操作請(qǐng)求的區(qū)域信息,并由此過程跟隨特定路徑,如下文更詳細(xì)描述的。
處理可以開始于框602,其中存儲(chǔ)控制器104接收提供指定LBA“0”的區(qū)域的數(shù)據(jù)操作的數(shù)據(jù)操作請(qǐng)求。高速緩存管理模塊108處理進(jìn)行到框604,其中存儲(chǔ)控制器104借助接收到的請(qǐng)求LBA搜索先前指定的LBA區(qū)域和在框605處的高速緩存規(guī)則110。在一個(gè)例子中,為了示出操作,處理進(jìn)行到框614,其中存儲(chǔ)控制器104確定應(yīng)用高速緩存規(guī)則110屬于框630。在框630處,存儲(chǔ)控制器104以類似上述方式將數(shù)據(jù)釘住在高速緩存存儲(chǔ)器112中。
應(yīng)該理解的是,結(jié)合圖6A-6E描述的過程是出于圖示的目的,并且可以采用其它例子來實(shí)現(xiàn)本申請(qǐng)的技術(shù)。例如,框605處的高速緩存規(guī)則110的條目是出于圖示的目的,并且可以采用不同數(shù)量和類型的高速緩存規(guī)則和相關(guān)聯(lián)的LBA區(qū)域來實(shí)踐本申請(qǐng)的技術(shù)。
圖7是根據(jù)本申請(qǐng)的技術(shù)的高速緩存管理技術(shù)的另一示例性過程流程圖700。
處理可以開始于框702,其中存儲(chǔ)控制器104從主機(jī)102接收請(qǐng)求。在一些例子中,高速緩存管理模塊108可以接收請(qǐng)求,所述請(qǐng)求可以是從數(shù)據(jù)存儲(chǔ)設(shè)備讀取數(shù)據(jù)的數(shù)據(jù)操作請(qǐng)求以及將數(shù)據(jù)寫入到數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)操作請(qǐng)求。高速緩存管理模塊108處理進(jìn)行到框704。
在框704處,存儲(chǔ)控制器104檢查請(qǐng)求是從數(shù)據(jù)存儲(chǔ)設(shè)備讀取數(shù)據(jù)的數(shù)據(jù)操作請(qǐng)求還是將數(shù)據(jù)寫入到數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)操作請(qǐng)求。例如,如果高速緩存管理模塊108確定請(qǐng)求是從數(shù)據(jù)存儲(chǔ)設(shè)備讀取數(shù)據(jù)的數(shù)據(jù)操作請(qǐng)求,則處理進(jìn)行到框706,以供讀取數(shù)據(jù)操作的后續(xù)處理。在另一方面,如果高速緩存管理模塊108確定請(qǐng)求是將數(shù)據(jù)寫入到數(shù)據(jù)存儲(chǔ)設(shè)備的數(shù)據(jù)操作請(qǐng)求,則處理進(jìn)行到框710,以供寫入數(shù)據(jù)操作的后續(xù)處理。
在框706處,存儲(chǔ)控制器104檢查來自讀取數(shù)據(jù)操作的與LBA區(qū)域信息相關(guān)聯(lián)的數(shù)據(jù)是否存儲(chǔ)于高速緩存存儲(chǔ)器中。在一個(gè)例子中,如果高速緩存管理模塊108確定所述數(shù)據(jù)存儲(chǔ)于高速緩存存儲(chǔ)器112中,則處理進(jìn)行到框708。在另一方面,如果高速緩存管理模塊108確定所述數(shù)據(jù)不存儲(chǔ)于高速緩存存儲(chǔ)器112中,則處理進(jìn)行到框712。
在框708處,存儲(chǔ)控制器104將數(shù)據(jù)從高速緩存存儲(chǔ)器返回。在一個(gè)例子中,高速緩存管理模塊108從高速緩存存儲(chǔ)器112取回讀取數(shù)據(jù)操作的與LBA區(qū)域信息相關(guān)聯(lián)的數(shù)據(jù)。在一些例子中,高速緩存管理模塊108處理可以進(jìn)行回框702,以檢查從主機(jī)102的其它數(shù)據(jù)操作請(qǐng)求的接收。
在框710處,存儲(chǔ)控制器104通過發(fā)現(xiàn)并應(yīng)用適當(dāng)?shù)母咚倬彺嬉?guī)則而處理數(shù)據(jù)操作請(qǐng)求。例如,如果高速緩存管理模塊108發(fā)現(xiàn)適當(dāng)?shù)母咚倬彺嬉?guī)則110,則處理進(jìn)行到各自的處理框712、714、716或718,如下所述。
在框712處,存儲(chǔ)控制器104將請(qǐng)求發(fā)送到數(shù)據(jù)存儲(chǔ)設(shè)備。在一個(gè)例子中,高速緩存管理模塊108基于在操作中指定的LBA區(qū)域通過發(fā)送所請(qǐng)求的數(shù)據(jù)到數(shù)據(jù)存儲(chǔ)設(shè)備114,來處理數(shù)據(jù)操作請(qǐng)求。高速緩存管理模塊108處理進(jìn)行到框720。
在框714處,存儲(chǔ)控制器104等待高速緩存存儲(chǔ)器中的空間。在一個(gè)例子中,在進(jìn)行將數(shù)據(jù)寫入到高速緩存存儲(chǔ)器之前,高速緩存管理模塊108等待高速緩存存儲(chǔ)器112中的存儲(chǔ)空間或地方。在一些例子中,高速緩存管理模塊108處理可以進(jìn)行回框702,以檢查從主機(jī)102接收其它數(shù)據(jù)操作請(qǐng)求。
在框716處,存儲(chǔ)控制器104將數(shù)據(jù)釘住到高速緩存存儲(chǔ)器。在一個(gè)例子中,高速緩存管理模塊108進(jìn)行用持續(xù)模式將數(shù)據(jù)寫入到高速緩存存儲(chǔ)器112。在一些例子中,高速緩存管理模塊108處理可以進(jìn)行回框702,以檢查從主機(jī)102接收其它數(shù)據(jù)操作請(qǐng)求。
在框718處,存儲(chǔ)控制器104將數(shù)據(jù)放置到高速緩存存儲(chǔ)器中。在一個(gè)例子中,高速緩存管理模塊108進(jìn)行將數(shù)據(jù)寫入到高速緩存存儲(chǔ)器112。在一些例子中,高速緩存管理模塊108處理可以進(jìn)行回框702,以檢查從主機(jī)102接收其它數(shù)據(jù)操作請(qǐng)求。
在框720處,存儲(chǔ)控制器104確認(rèn)LBA不存在于高速緩存中或繞過操作。在一個(gè)例子中,高速緩存管理模塊108進(jìn)行通知相關(guān)主機(jī)具有相關(guān)聯(lián)的LBA的數(shù)據(jù)不存在于高速緩存存儲(chǔ)器112中,或者繞過操作。在一些例子中,高速緩存管理模塊108處理可以進(jìn)行回框702,以檢查從主機(jī)102接收其它數(shù)據(jù)操作請(qǐng)求。
應(yīng)該理解的是,結(jié)合圖7描述的過程是出于圖示的目的,并且可以采用其它例子來實(shí)現(xiàn)本申請(qǐng)的技術(shù)。
圖8是示出根據(jù)本申請(qǐng)的技術(shù)的存儲(chǔ)用于高速緩存管理的指令的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)的示例性框圖。非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)通常由附圖標(biāo)記800表示,并且可以包含于系統(tǒng)100的設(shè)備中,如本文所述。非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)800可以對(duì)應(yīng)于任意典型的存儲(chǔ)設(shè)備,其存儲(chǔ)計(jì)算機(jī)實(shí)現(xiàn)的指令,例如編程代碼等。例如,非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)800可以包括一個(gè)或多個(gè)非易失性存儲(chǔ)器、易失性存儲(chǔ)器、和/或一個(gè)或多個(gè)存儲(chǔ)設(shè)備。非易失性存儲(chǔ)器的例子包括但不限于:電可擦除可編程只讀存儲(chǔ)器(EEPROM)和只讀存儲(chǔ)器(ROM)。易失性存儲(chǔ)器的例子包括但不限于:靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)和動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。存儲(chǔ)設(shè)備的例子包括但不限于:硬盤驅(qū)動(dòng)、壓縮盤驅(qū)動(dòng)、數(shù)字通用盤驅(qū)動(dòng)、光驅(qū)動(dòng)和閃存設(shè)備。
處理器802一般取回和執(zhí)行在非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)800中存儲(chǔ)的指令,以操作根據(jù)例子的系統(tǒng)100的設(shè)備。在例子中,有形的機(jī)器可讀介質(zhì)800可以由處理器802通過總線804訪問。非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)800的第一區(qū)域806可以包括如本文所述的高速緩存管理模塊功能。非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)800的第二區(qū)域808可以包括如本文所描述的高速緩存規(guī)則數(shù)據(jù)。非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)800的第三區(qū)域810可以包括如本文所描述的高速緩存存儲(chǔ)器。
雖然示出為連續(xù)框,但軟件部件可以以任何順序或配置存儲(chǔ)。例如,如果非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)800是硬驅(qū)動(dòng),則軟件部件可以存儲(chǔ)于不連續(xù)的或者甚至重疊的扇區(qū)內(nèi)。