專利名稱:用于插入緩存塊的方法和系統(tǒng)的制作方法
用于插入緩存塊的方法和系統(tǒng)
背景技術(shù):
隨著計算機處理能力的增強,技術(shù)用戶和應(yīng)用的需求也增強。對于許多行業(yè),這會導致資源優(yōu)先級排序的快速的移動。例如,在許多關(guān)系數(shù)據(jù)庫應(yīng)用中,非易失性存儲器容量的相對重要性和成本急速地降低。對于系統(tǒng)管理員,關(guān)于存儲容量的關(guān)心已經(jīng)轉(zhuǎn)移到對性能和可靠性的關(guān)心,因為存儲技術(shù)的事務(wù)延遲限制了更快的并且更加強大微處理器的潛在的好處。在半導體工業(yè)內(nèi),存在類似的現(xiàn)象。遵循摩爾定律的處理能力和計算速度的理論增益大大地受到諸如存儲器訪問速度之類的非CPU瓶頸的限制。隨著研究人員探索下一范式轉(zhuǎn)移存儲技術(shù),諸如改善的緩存方法之類的中間技術(shù)幫助彌合該縫隙。通過跨一系列不同的應(yīng)用利用多種類型的緩存存儲設(shè)備,對于某些應(yīng)用,可以降低訪問延遲的瓶頸。對緩存設(shè)計和緩存算法的研究導致緩存和緩存管理設(shè)備的復雜性的增大。對于從CPU緩存到磁盤緩存和數(shù)據(jù)庫緩存的一切,緩存系統(tǒng)在總體系統(tǒng)性能方面和跨每一層的計算譜變得越來越重要。緩存算法主要處理緩存數(shù)據(jù)項的插入、刪除,以及修改。被緩存的數(shù)據(jù)的相關(guān)性和優(yōu)先級排序優(yōu)于緩存的有效的操作。通過將頻繁地使用的數(shù)據(jù)項保持在緩存中,并清除在未來很少會使用的那些,傳統(tǒng)的緩存算法旨在提高緩存命中率和性能。
發(fā)明內(nèi)容
一般而言,一方面,本發(fā)明涉及將緩存塊插入到緩存隊列中的方法。該方法包括檢測緩存隊列的第一緩存未中,識別響應(yīng)于所述緩存未中接收訪問的存儲塊,計算包括所述存儲塊的第一存儲容器的第一估計的緩存未中成本,基于所述第一估計的緩存未中成本的數(shù)學公式來計算所述第一存儲容器的插入概率,從均勻分布中隨機地選擇插入概率數(shù),以及,響應(yīng)于所述插入概率超過所述插入概率數(shù),將對應(yīng)于所述存儲塊的新緩存塊插入到所述緩存隊列中。一般而言,一方面,本發(fā)明涉及將緩存塊插入到緩存隊列中的方法。該方法包括計算緩存隊列內(nèi)的緩存塊的估計的緩存未中成本,從所述緩存隊列清除所述緩存塊,以及,將對應(yīng)于所述緩存塊的存儲塊的條目插入到對應(yīng)于所述緩存隊列的遮蔽列表中。該方法還包括檢測弓I用存儲塊的緩存隊列的緩存未中,響應(yīng)于所述緩存未中,訪問所述遮蔽列表內(nèi)的條目,基于從所述緩存隊列清除的緩存塊的多個估計的舊緩存未中成本的數(shù)學公式計算估計的緩存未中成本閾值,以及,響應(yīng)于所述估計的緩存未中成本超過所述估計的緩存未中成本閾值,將對應(yīng)于所述存儲塊的新緩存塊插入到所述緩存隊列中。一般而言,一方面,本發(fā)明涉及存儲用于將緩存塊插入到緩存隊列中的指令的計算機可讀存儲介質(zhì)。指令包括檢測緩存隊列的第一緩存未中,識別響應(yīng)于所述緩存未中接收訪問的存儲塊,計算包括所述存儲塊的第一存儲容器的第一估計的緩存未中成本,基于所述第一估計的緩存未中成本的數(shù)學公式計算第一存儲容器的插入概率,以及,從均勻分布中隨機地選擇插入概率數(shù)的功能。進一步地,指令還包括響應(yīng)于所述插入概率超過所述概率數(shù),將對應(yīng)于所述存儲塊的新緩存塊插入到緩存隊列中的功能。
—般而言,一方面,本發(fā)明涉及用于插入緩存塊的系統(tǒng)。該系統(tǒng)包括在緩存隊列的末尾處包括試用段的緩存隊列,與所述試用段相鄰的保護段。該系統(tǒng)還包括在處理器上執(zhí)行并被配置成檢測緩存隊列的緩存未中、識別響應(yīng)于所述緩存未中接收訪問的存儲塊,計算包括所述存儲塊的存儲容器的估計的緩存未中成本,基于所述估計的緩存未中成本的數(shù)學公式計算所述存儲容器的插入概率,從均勻分布中隨機地選擇概率數(shù),以及,響應(yīng)于所述插入概率超過所述概率數(shù),將對應(yīng)于所述存儲塊的新緩存塊插入到緩存隊列中的試用段的開始處的緩存管理器。通過下面的描述和所附權(quán)利要求書,本發(fā)明的其他方面將變得顯而易見。
圖1A和IB描繪了根據(jù)本發(fā)明的一個或多個實施例的系統(tǒng)的示意框圖。圖2、3、4A、4B、6、7、9,以及10描繪了根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖5A、5B,以及5C描繪了根據(jù)本發(fā)明的一個或多個實施例的緩存隊列的示例。圖8A和SB描繪了根據(jù)本發(fā)明的一個或多個實施例的系統(tǒng)的示意框圖。圖11描繪了根據(jù)本發(fā)明的一個或多個實施例的計算機系統(tǒng)。
具體實施例方式現(xiàn)在將參考附圖詳細描述本發(fā)明的具體實施例。為確保一致性,各附圖中的相同元件通過相同附圖標記來表示。在下面的對本發(fā)明的各實施例的詳細描述中,闡明了眾多具體細節(jié)以提供對本發(fā)明的各實施例的更加全面的理解。然而,對本領(lǐng)域的技術(shù)人員顯而易見的是,本發(fā)明也可以在沒有這些具體細節(jié)的情況下實施。在其他情況下,沒有對已知的特征進行詳細描述,以避免不必要地使描述復雜化。一般而言,本發(fā)明的各實施例提供了用于管理緩存的方法和系統(tǒng)。具體而言,本發(fā)明的各實施例向存儲容器分配估計的緩存未中成本。估計的緩存未中成本是對存儲容器內(nèi)的存儲塊的緩存未中的成本的估計。估計的緩存未中成本可以被用來概率地將對應(yīng)于存儲塊的新緩存塊插入到緩存隊列中。出于說明的目的,緩存操作可以是指任何對緩存的訪問和/或修改。緩存操作的示例可以包括但不僅限于:讀取操作、寫入操作、回寫操作、任何類型的緩存命中、任何類型的緩存未中,和/或任意數(shù)量的其他緩存操作。在本發(fā)明的一個或多個實施例中,緩存操作可以是指導致緩存隊列中的一個或多個緩存塊被回收利用的任何緩存請求?;厥绽每梢允侵妇彺骊犃袃?nèi)的一個或多個緩存塊的任何反向移動。對存儲容器的緩存操作和/或訪問可以是指對存儲容器內(nèi)的存儲塊的訪問。出于說明的目的,緩存未中可以是指請求對緩存(和/或相關(guān)聯(lián)的緩存隊列,如果適用的話)中不存在的存儲塊的讀取或?qū)懭氲木彺娌僮?。因此,在本發(fā)明的一個或多個實施例中,存儲塊被直接從相應(yīng)的存儲設(shè)備讀取,隨后被插入到緩存中。在本發(fā)明的一個或多個實施例中,緩存未中可以是指寫入未中、讀取未中,和/或需要對當前不存儲在緩存內(nèi)的存儲塊的訪問的寫入和讀取請求的某種組合。出于說明的目的,緩存命中可以是指訪問當前存儲在緩存(以及相關(guān)聯(lián)的緩存隊列,如果適用的話)中的存儲塊的緩存操作。根據(jù)本發(fā)明的各實施例,緩存命中可以包括對相應(yīng)于該緩存的緩存隊列的修改?!白x取”緩存命中可以是指讀取緩存內(nèi)的存儲單元的內(nèi)容的請求?!皩懭搿本彺婷锌梢允侵笇⒅祻木彺嬷械拇鎯卧獙懭氲酱鎯υO(shè)備中的相應(yīng)的存儲塊的請求。在本發(fā)明的一個或多個實施例中,寫入操作可以通過將所述值寫入到存儲單元而不修改存儲塊(例如,在回寫緩存中)來執(zhí)行。然后,在某個預定時間或在事件觸發(fā)之后,該值可以被回寫到存儲塊。出于說明的目的,舊緩存塊是自從被插入到緩存隊列中以來接收到至少一個緩存命中的緩存塊。新緩存塊是指自從被插入到緩存隊列中以來沒有接收到緩存命中的緩存塊。圖1A示出了根據(jù)本發(fā)明的一個實施例的系統(tǒng)(199)。如圖1A所示,系統(tǒng)(199)具有多個組件,包括緩存(100)、存儲設(shè)備(110)、一組存儲容器(例如,存儲容器I (120)、存儲容器Z (130))、一組存儲塊(例如,存儲塊A (122)、存儲塊B (124)、存儲塊C (126)、存儲塊D (128)、存儲塊E (132)、存儲塊F (134)、存儲塊G (136)、存儲塊H (138))、緩存管理器(140)、緩存隊列(142),以及管理模塊(144)。系統(tǒng)(199)的組件可以位于同一個設(shè)備上(例如,服務(wù)器、大型機、臺式個人計算機(PC)、膝上型計算機、個人數(shù)字助理(PDA)、電話、移動電話、自助服務(wù)終端、電纜盒,以及任何其他設(shè)備)或可以位于通過網(wǎng)絡(luò)(例如,因特網(wǎng))利用有線和/或無線段連接的分離的設(shè)備上。本領(lǐng)域技術(shù)人員將認識到,可以有多于一個的每一個單獨的組件在設(shè)備上運行,以及在本發(fā)明的給定實施例內(nèi)可以有這些組件的任意組
口 o在本發(fā)明的一個或多個實施例中,緩存(100)是具有一個或多個存儲單元的存儲器模塊。緩存(100)內(nèi)的每一個存儲單元(未示出)可以將被引用的存儲塊(例如,存儲塊A
(122)、存儲塊B (124)、存儲塊C (126)、存儲塊D (128)、存儲塊E (132)、存儲塊F (134)、存儲塊G (136)、存儲塊H (138))的一個或多個值存儲在存儲設(shè)備(110)中。如果存儲單元的值不同于被引用的存儲塊的值,則它稱為“臟的”。因此,存儲塊(例如,存儲塊A(122)、存儲塊B (124)、存儲塊C (126)、存儲塊D (128)、存儲塊E (132)、存儲塊F (134)、存儲塊G (136)、存儲塊H (138))稱為“被緩存”和/或“被存儲”在緩存(100)內(nèi),如果它被緩存(100)中的存儲單元引用和/或如果引用存儲塊的緩存塊被存儲在對應(yīng)的緩存隊列內(nèi)的話。緩存(100)可以包括具有用于每一個存儲單元的一個或多個緩存地址的緩存地址空間。因此,在本發(fā)明的一個或多個實施例中,每一個存儲單元都可以具有緩存地址、存儲存儲塊的地址的引用字段,和/或存儲存儲塊的值的值字段。緩存(100)可以是存儲器設(shè)備和/或一個或多個存儲器設(shè)備的一部分。在本發(fā)明的一個或多個實施例中,緩存可以被實現(xiàn)為存儲設(shè)備和一個或多個應(yīng)用和/或設(shè)備(下面稱為“請求者”)之間的抽象的中間層。以此方式,從存儲設(shè)備請求的值可以作為中間物被存儲在緩存(100)內(nèi),并提供給請求者。由請求者對存儲塊中的值的以后的訪問可以在不訪問存儲設(shè)備的情況下執(zhí)行。繼續(xù)圖1A,緩存(100)可以構(gòu)成一個或多個硬盤驅(qū)動器上的存儲器的一部分和/或任何其他形式的易失性和/或非易失性存儲器。存儲在易失性存儲器中的緩存的一個示例是計算機系統(tǒng)內(nèi)的隨機存取存儲器(RAM)的指定的部分或指定的量。指定的RAM存儲器可以被用來存儲來自硬盤驅(qū)動器或其他存儲設(shè)備的一個或多個值,以便進行更快的訪問。在本發(fā)明的一個或多個實施例中,緩存(100)是跨通過網(wǎng)絡(luò)連接的一個或多個物理存儲設(shè)備散布的分布式緩存。存儲器設(shè)備可以被動態(tài)地修改,以便緩存的大小隨著一個或多個存儲單元的添加和/或刪除而增長或收縮。在本發(fā)明的一個或多個實施例中,緩存(100)比一個或多個對應(yīng)的存儲設(shè)備具有更低的訪問延遲(例如,讀和/寫延遲)。緩存中的存儲單元的數(shù)量也可以小于存儲設(shè)備中的存儲塊的數(shù)量。因此,在本發(fā)明的一個或多個實施例中,緩存中的存儲單元根據(jù)一個或多個緩存算法被刪除、插入,和/或修改。緩存算法可以包括涉及緩存的任何操作的同步和/或異步步驟。同步操作可以與一個或多個周期性的事件和/或指令(例如,與系統(tǒng)時鐘關(guān)聯(lián))重合,而異步操作可以是指按需執(zhí)行的操作和/或在同步時間窗口之外執(zhí)行的操作。緩存(100)的示例可以包括但不僅限于:CPU緩存、磁盤緩存、數(shù)據(jù)庫緩存、受害者緩存、Web緩存、回寫緩存、無寫入緩存、數(shù)據(jù)庫緩沖池、DRAM緩存、閃存緩存、存儲器緩存
(例如,作為甲骨文公司的EXADATA 存儲器服務(wù)器產(chǎn)品線的一部分)、操作系統(tǒng)緩沖
池,和/或?qū)?yīng)于中間層緩存的對象緩存。EXADATA’是位于加利福尼亞州雷德伍德城的甲骨文公司的注冊商標。在一個示例中,緩存(100)駐留在硬盤驅(qū)動器上,并被虛擬存儲器管理模塊用來存儲具有對應(yīng)于一個或多個其他存儲設(shè)備(例如,RAM)上的物理地址的虛擬地址的頁面表。在此示例中,存儲單元是存儲了來自實際(即,物理)存儲器的一個或多個存儲塊的虛擬地址。在另一個示例中,緩存(100)是駐留在存儲設(shè)備內(nèi)的數(shù)據(jù)結(jié)構(gòu)。因此,緩存(100)本身可以是被設(shè)計用于基于一個或多個緩存算法存儲來自物理或虛擬存儲器設(shè)備的內(nèi)容的虛擬緩存。在另一個示例中,CPU緩存是安裝在主板(S卩,印刷電路板)上并通過總線操作地連接到中央處理單元(CPU)的存儲器設(shè)備。在此示例中,緩存是使用存儲器芯片上的靜態(tài)隨機存取存儲器(SRAM)來實現(xiàn)的。在另一個示例中,使用公司數(shù)據(jù)庫的企業(yè)資源計劃(ERP)系統(tǒng)是使用三層體系結(jié)構(gòu)來實現(xiàn)的。公司數(shù)據(jù)庫在單獨的主機(即,數(shù)據(jù)層)上從ERP應(yīng)用來實現(xiàn)。為了通過減少網(wǎng)絡(luò)流量來提高數(shù)據(jù)庫性能,輕便的數(shù)據(jù)庫安裝在應(yīng)用層主機上,并被配置成緩存公司數(shù)據(jù)庫的數(shù)據(jù)。因此,緩存在存儲了輕便的數(shù)據(jù)庫的應(yīng)用層主機上在一組本地硬盤驅(qū)動器上實現(xiàn)。在此示例中,存儲單元可以對應(yīng)于數(shù)據(jù)庫表、行或字段。在本發(fā)明的一個或多個實施例中,存儲設(shè)備(110)是存儲器設(shè)備。存儲設(shè)備的示例可以包括但不僅限于:硬盤驅(qū)動器、隨機存取存儲器(RAM)、閃存模塊、磁帶驅(qū)動器、光驅(qū)動器,和/或存儲設(shè)備的任何組合。在本發(fā)明的一個或多個實施例中,存儲設(shè)備(110)包括存儲塊(例如,存儲塊A (122)、存儲塊B (124)、存儲塊C (126)、存儲塊D (128)、存儲塊E
(132)、存儲塊 F (134)、存儲塊 G (136)、存儲塊 H (138))。繼續(xù)圖1A,在本發(fā)明的一個或多個實施例中,存儲塊可以是存儲設(shè)備內(nèi)的存儲器的任何邏輯和/或物理段。每一個存儲塊都可以是可尋址的,意思是說,它可以基于某個預定義的尋址方法或機制而被訪問。存儲塊的示例可以包括但不僅限于:比特、存儲器字節(jié)、存儲器字、寄存器、slab、數(shù)據(jù)庫記錄、數(shù)據(jù)庫字段、超文本標記語言(HTML)頁面、數(shù)據(jù)庫引用、文件,和/或存儲設(shè)備內(nèi)的數(shù)據(jù)的任何可尋址的段。根據(jù)本發(fā)明的各實施例,存儲設(shè)備內(nèi)的存儲塊的大小可以是固定的(即,對所有存儲塊一致)或可變的(例如,取決于存儲塊的內(nèi)容的大小)。在本發(fā)明的一個或多個實施例中,存儲塊(例如,存儲塊A (122)、存儲塊B (124)、存儲塊C (126)、存儲塊D (128)、存儲塊E (132)、存儲塊F (134)、存儲塊G (136)、存儲塊H (138))可以被分組到存儲容器(例如,存儲容器I (120)、存儲容器Z (130))中。在本發(fā)明的一個或多個實施例中,存儲容器可以是指存儲設(shè)備內(nèi)的存儲塊的邏輯和/或物理組。存儲容器的示例可以包括但不僅限于:文件、數(shù)據(jù)庫記錄、數(shù)據(jù)庫字段、HTML頁面、數(shù)據(jù)庫引用、存儲器字節(jié)、存儲器字、寄存器、slab、和/或存儲設(shè)備內(nèi)的一個或多個存儲塊的任何分組。在一個示例中,存儲容器是駐留在硬盤驅(qū)動器上的文件,而存儲塊是所述硬盤驅(qū)動器上的存儲器字節(jié)。在另一個示例中,存儲容器是數(shù)據(jù)庫行,而其對應(yīng)的存儲塊是數(shù)據(jù)庫行內(nèi)的數(shù)據(jù)庫字段。如示例所示,存儲容器可以只是特定硬件設(shè)備上的一組僅有且所有的存儲塊、特定表或特定數(shù)據(jù)庫上的一組僅有且所有的存儲塊,或任何其他邏輯或物理組。根據(jù)本發(fā)明的各實施例,存儲設(shè)備內(nèi)的存儲容器的大小可以是固定的(S卩,對所有存儲容器一致)或可變的(例如,取決于存儲容器的內(nèi)容的大小)。進一步地,存儲容器中的存儲塊的數(shù)量可以是固定的或可變的。在本發(fā)明的一個或多個實施例中,存儲容器是可尋址的。數(shù)據(jù)可以基于任何存儲機制和/或算法,跨一個或多個存儲容器被存儲在一個或多個存儲塊內(nèi)。因此,存儲容器內(nèi)的存儲塊可以對應(yīng)于相同邏輯單元,和/或根據(jù)它們在軟件程序內(nèi)的用途相關(guān)聯(lián)。存儲設(shè)備(110)的內(nèi)容可以被能夠讀取所述存儲設(shè)備(110)的任何類型的計算機和/或設(shè)備使用,并可以被分段,或以任何邏輯次序存儲。在本發(fā)明的一個或多個實施例中,緩存管理器(140)包括管理緩存(100)和緩存隊列(142)的功能。緩存管理器(140)可以控制緩存塊在緩存隊列(142)內(nèi)的插入、刪除,和/或修改。緩存管理器(140)也可以對緩存(100)內(nèi)的存儲單元執(zhí)行諸如插入、刪除,和/或修改之類的操作和/或請求所述操作由另一實體(例如,緩存控制器)執(zhí)行。在本發(fā)明的一個或多個實施例中,緩存管理器(140)可以實現(xiàn)諸如此處所公開的方法中的一個或多個的緩存算法。緩存算法的示例可以包括但不僅限于:最近最少使用(LRU)、最近使用(MRU)和/或描述對緩存和/或緩存隊列(142)的插入、刪除,和/或修改的步驟的一種或多種方法的任何組合。繼續(xù)圖1A,在本發(fā)明的一個或多個實施例中,緩存管理器(140)可以對應(yīng)于硬件、軟件,或其組合。例如,緩存管理器(140)可以被實現(xiàn)為管理DRAM和閃存緩存的數(shù)據(jù)庫緩沖池管理器(例如,數(shù)據(jù)庫內(nèi)核)的一部分、作為操作地連接到硬件緩存的存儲器管理單元、作為管理存儲器緩存的存儲器服務(wù)器的一部分(例如,作為甲骨文公司的EXADATA存儲器服務(wù)器產(chǎn)品線的一部分)、作為管理DRAM和閃存緩存(readzilla)兩者的ZFS儀器緩存管理器的一部分、作為管理操作系統(tǒng)緩沖池的操作系統(tǒng)的一部分,和/或作為管理哪些對象將被維護在中間層緩存中的對象緩存的一部分。如前所述的組件只是其中可以實現(xiàn)緩存管理器(140)的組件的示例。在不偏離本發(fā)明的范圍的情況下,可以使用其他硬件或軟件組件。在本發(fā)明的一個或多個實施例中,緩存管理器(140)控制緩存操作與一個或多個周期性的事件(例如,系統(tǒng)時鐘)的同步。緩存管理器(140)也可以基于一個或多個周期性的事件和/或觸發(fā)器(例如,惰性寫入),來控制諸如回寫到存儲設(shè)備(110)之類的周期性的和/或異步操作。緩存管理器(140)可以是存儲設(shè)備(110)和發(fā)出請求的實體之間的中介。發(fā)出請求的實體的示例包括但不僅限于:軟件程序、CPU,和/或能夠從存儲設(shè)備(110)請求數(shù)據(jù)和/或向存儲設(shè)備(110)寫入數(shù)據(jù)的任何實體。因此,緩存管理器(140)可以接收來自發(fā)出請求的實體的指令(例如,讀和/或?qū)懼噶?,并可以從緩存(100)、緩存隊列(142)和/或存儲設(shè)備中檢索數(shù)據(jù)和/或向它們中寫入數(shù)據(jù)。圖1B示出了根據(jù)本發(fā)明的一個實施例的緩存隊列(142)。如圖1B所示,系統(tǒng)具有多個組件,包括多個緩存塊(例如,緩存塊I (156)、緩存塊i (158)、緩存塊i+1 (160)、緩存塊j (162)、緩存塊j+k (164))、保護段(152)、試用段(154),以及受害者段(170)。系統(tǒng)的組件可以位于同一個設(shè)備上(例如,硬盤驅(qū)動器、RAM、存儲設(shè)備、存儲器管理單元(MMU)Jg務(wù)器、大型機、臺式個人計算機(PC)、膝上型計算機、個人數(shù)字助理(PDA)、電話、移動電話、自助服務(wù)終端、電纜盒,以及任何其他設(shè)備)或可以位于通過網(wǎng)絡(luò)(例如,因特網(wǎng))利用有線和/或無線段連接的分離的設(shè)備上。本領(lǐng)域技術(shù)人員將認識到,可以有多于一個的每一個單獨的組件在設(shè)備上運行,在本發(fā)明的給定實施例內(nèi)可以有這些組件的任何組合。在本發(fā)明的一個或多個實施例中,緩存隊列(142)是緩存塊(例如,緩存塊I(156)、緩存塊i (158)、緩存塊i+1 (160)、緩存塊j (162)、緩存塊j+k (164))的隊列。緩存隊列(142)中的每一個緩存塊(例如,緩存塊I (156)、緩存塊i (158)、緩存塊i+1 (160)、緩存塊j (162)、緩存塊j+k (164))可以引用緩存內(nèi)的一個或多個存儲單元。緩存隊列(142)可以是虛擬結(jié)構(gòu)(例如,存儲器中的數(shù)據(jù)結(jié)構(gòu))、在存儲設(shè)備(例如,靜態(tài)隨機存取存儲器設(shè)備)上實現(xiàn)的物理結(jié)構(gòu),和/或其任何組合。在本發(fā)明的一個或多個實施例中,緩存塊的值引用緩存中的對應(yīng)的存儲單元的位置。因此,緩存塊可以是引用存儲了存儲塊的值的物理存儲單元的邏輯實體。引用可以呈現(xiàn)位于存儲單元的存儲位置中、存儲物理存儲單元的存儲位置,或使用用于識別被引用的存儲單元的另一種直接或間接技術(shù)的形式。根據(jù)本發(fā)明的一個或多個實施例,將緩存塊插入到緩存隊列中與將存儲塊的值插入到緩存中的存儲單元重合,以便緩存塊引用存儲單元。在本發(fā)明的一個或多個實施例中,當一個或多個緩存塊被重新定位在緩存隊列(142)內(nèi)時,它們的對應(yīng)的存儲單元不在緩存內(nèi)移動。因此,緩存塊在緩存隊列(142)內(nèi)的順序可以不反映存儲單元在緩存內(nèi)的順序。在本發(fā)明的一個或多個實施例中,當選擇用于插入到緩存中的存儲塊時,從緩存中清除對應(yīng)于不同的存儲塊的值。在本發(fā)明的一個或多個實施例中,對于動態(tài)地調(diào)整大小的緩存,緩存隊列(142)的大小與緩存成比例地增長。繼續(xù)圖1B,在本發(fā)明的一個或多個實施例中,緩存隊列(142)包括位于緩存隊列(142)末端的受害者段(170)。受害者段(170)是構(gòu)成緩存隊列(142)的子集的緩存塊的相鄰組。受害者段(170)內(nèi)的緩存塊可以是用于從緩存隊列(142)清除的候選者。在本發(fā)明的一個或多個實施例中,不在受害者段(170)中的緩存塊不是用于從緩存隊列(142)清除的候選者。因此,在本發(fā)明的一個或多個實施例中,在插入到緩存中之前,當緩存隊列中的空間不足以用于新緩存塊時,緩存隊列(142)從受害者段(170)中清除緩存塊。在本發(fā)明的一個或多個實施例中,緩存隊列(142)包括位于緩存隊列(142)末端的試用段(154)。試用段(154)是構(gòu)成緩存隊列(150)的子集的緩存塊的相鄰組。在本發(fā)明的一個或多個實施例中,試用段(154)包括受害者段(170),以便受害者段(170)是試用段(154)的子集。試用段(154)可以包括一個或多個新緩存塊和/或一個或多個舊緩存塊。在本發(fā)明的一個或多個實施例中,新緩存塊被插入到緩存隊列(142)中的試用段(154)的開始。
在本發(fā)明的一個或多個實施例中,緩存隊列(142)包括位于緩存隊列(142)開始處的保護段(152)。保護段(152)是構(gòu)成緩存隊列(142)的子集的緩存塊的相鄰組。在本發(fā)明的一個或多個實施例中,保護段(152)與試用段(154)相鄰。繼續(xù)圖1B,在本發(fā)明的一個或多個實施例中,緩存塊在進入緩存隊列(142)的受害者段(170)時完成了對緩存隊列(142)的通過。因此,緩存塊可以穿過整個緩存隊列(142)或僅僅穿過緩存隊列的試用段(154),以便完成通過。具體而言,對緩存塊的通過的開始處于保護段(例如,緩存塊I (156))的開始處,或者試用段(例如,緩存塊i+1 (160))的開始處。隨著緩存塊被從緩存隊列(142)中清除和/或在緩存隊列(142)內(nèi)回收利用,任何剩余緩存塊都可以重復緩存隊列中的一個或多個點(例如,向圖1B所示出的圖中的右側(cè)移動)。例如,如果緩存塊j+k (164)被回收利用到試用段(154)的開始處(S卩,到位置i+1
(160))并且緩存塊j+k-1 (未示出)被清除,那么,試用段(154)中的剩余緩存塊中每一個都在圖1B的圖中向右移動兩個空格。作為另一個示例,如果緩存塊j+k (164)被回收利用到保護段(152)的開始處(S卩,到位置I (156))并且緩存塊j+k-1 (未示出)被清除,那么,緩存隊列(142)中的剩余緩存塊每一個都向圖1B中的圖中的右側(cè)移動。當緩存塊進入受害者段(170)時,對緩存隊列的通過完成。在本發(fā)明的一個或多個實施例中,如果緩存塊已經(jīng)被回收利用了 N-1次,則可以說該緩存塊對于任何正整數(shù)N,在緩存隊列(142)的第N次通過內(nèi)。因此,在緩存隊列(142)的第一次通過內(nèi)的緩存塊是從來沒有被回收利用的任何緩存塊,并且在緩存隊列的第三次通過內(nèi)的緩存塊是已經(jīng)被回收利用2次的緩存塊。容器統(tǒng)計回頭參考圖1A,在本發(fā)明的一個或多個實施例中,緩存管理器(140)存儲一組容器統(tǒng)計對象(未示出)。每一個容器統(tǒng)計對象都存儲存儲設(shè)備中的存儲容器的數(shù)據(jù)。在本發(fā)明的一個或多個實施例中,為對應(yīng)于緩存隊列(142)中的一個或多個緩存塊的每一個存儲容器創(chuàng)建容器統(tǒng)計對象。容器統(tǒng)計對象可以在將該存儲容器的第一緩存塊插入到緩存隊列(142)的基礎(chǔ)上創(chuàng)建。在本發(fā)明的一個或多個實施例中,當容器統(tǒng)計對象的對應(yīng)的存儲容器在緩存隊列(142)中沒有剩余緩存塊時,刪除容器統(tǒng)計對象。因此,當存儲容器的最后一個緩存塊從緩存隊列(142)中清除時,可以刪除容器統(tǒng)計對象。在本發(fā)明的一個或多個實施例中,容器統(tǒng)計對象在對應(yīng)于存儲容器的緩存隊列內(nèi)包括若干個舊緩存塊和若干個新緩存塊。存儲容器的舊緩存塊的數(shù)量是存儲容器中的作為舊緩存塊存儲在緩存隊列(142)中的存儲塊的計數(shù)。存儲容器的新緩存塊的數(shù)量是存儲容器中的作為新緩存塊存儲在緩存隊列(142)中的存儲塊的計數(shù)。作為緩存塊“存儲”的存儲塊是指在緩存隊列(142)內(nèi)具有對應(yīng)的緩存塊的存儲塊。緩存塊引用存儲了存儲塊的值(即,臟或非臟值)的緩存(100)內(nèi)的存儲單元。繼續(xù)圖1A,在本發(fā)明的一個或多個實施例中,在啟動緩存之后,緩存管理器(140)與分段的最近最少使用的(SLRU)緩存隊列類似地(S卩,沒有概率性的插入和/或刪除)操作緩存隊列。因此,在本發(fā)明的一個或多個實施例中,緩存管理器(140)被配置成在預定義的預熱期(被定義為若干個預熱事務(wù)和/或時間段)之后激活概率性的插入和/或概率性的刪除。在本發(fā)明的一個或多個實施例中,緩存管理器(140)被配置成延遲概率性的插入和/或概率性的刪除,直到緩存在指定數(shù)量的事務(wù)(T)上收集了容器統(tǒng)計對象的數(shù)據(jù)。在此時間段過程中和/或在此時間段之后,緩存管理器(140)可以收集每一個容器統(tǒng)計對象的下列容器統(tǒng)計中的一個或多個:a.第一遍緩存塊的數(shù)量(“num_first_pass_blocks”)。在本發(fā)明的一個或多個實施例中,第一遍緩存塊是完成了對試用段的第一次通過的那些(即,插入在試用段的開始處(即,頂部)的隨后回收利用到試用段或保護段的開始處(即,頂部)的那些)。b.第一遍命中的數(shù)量(“num_first_pass_hits”)。在本發(fā)明的一個或多個實施例中,這是完成了對試用段的第一次通過的那些緩存塊的緩存命中的總數(shù)的計數(shù)。c.第二機會塊的數(shù)量(“num_second_chance_blocks”)。在本發(fā)明的一個或多個實施例中,這是完成了在沒有接收到緩存命中的情況下完成對試用段的第一次通過并被回收利用到試用段的開始處的緩存塊的數(shù)量。d.第二遍命中塊的數(shù)量(“num_second_pass_hit_blocks”)。在本發(fā)明的一個或多個實施例中,這是在對試用段的第二次通過過程中被命中的緩存塊的數(shù)量。e.在接收到第一命中之前緩存訪問的平均數(shù)(“avg_cache_accesses_before_first_hit”)。在本發(fā)明的一個或多個實施例中,這是在將緩存塊插入到緩存隊列中和對試用段的第二次通過中接收到緩存命中之間的緩存訪問的平均數(shù)。f.“活動”狀態(tài)標志跟蹤概率性的刪除是否對于對應(yīng)的存儲容器激活?;顒訝顟B(tài)標記最初被設(shè)置為假(FALSE )。g.自從最后一次訪問以來的事務(wù)的數(shù)量(“transactions_since_last_access”)。在本發(fā)明的一個或多個實施例中,這保持跟蹤自從對緩存塊的最后一次訪問(即,緩存命中)以來執(zhí)行的(即,由緩存服務(wù)的)事務(wù)的數(shù)量。如果此值超過預定義的閾值數(shù)字,則在被考慮從緩存中清除之后以概率I刪除對應(yīng)于此存儲容器的緩存塊??梢詮木彺婀芾砥?140)的圖形用戶界面和/或從任何被授權(quán)的用戶或?qū)嶓w接收到預定義的閾值數(shù)字。在指定數(shù)量的事務(wù)(T)完成之后,緩存管理器(140)可以繼續(xù)收集這些容器統(tǒng)計。在本發(fā)明的一個或多個實施例中,基于所述容器統(tǒng)計每T個事務(wù)更新一次容器統(tǒng)計對象。因此,緩存管理器(140)可以實現(xiàn)計數(shù)器以周期性地更新容器統(tǒng)計對象,以便每T個事務(wù)表示數(shù)據(jù)收集周期。在本發(fā)明的一個或多個實施例中,在每個事務(wù)之后更新容器統(tǒng)計對象。因此,可以使用事務(wù)的移動窗口來計算每一個容器統(tǒng)計對象的容器統(tǒng)計。緩存管理器(140)可以接收預熱時間段和/或使用指定數(shù)量的事務(wù)來與本發(fā)明的各實施例的元素和/或步驟中的任何一個相結(jié)合地延遲概率性的插入和/或刪除。繼續(xù)圖1A,根據(jù)本發(fā)明的一個或多個實施例,緩存管理器(140)包括圖形用戶界面(GUI)和/或應(yīng)用編程接口(API)。GUI和/或API包括從用戶和/或軟件應(yīng)用接收移動窗口的大小、指定數(shù)量的事務(wù)、預熱時間段,在緩存管理器(140)內(nèi)使用的任何屬性或性質(zhì)。GUI可以在軟件應(yīng)用(例如,Web應(yīng)用、桌面應(yīng)用、移動應(yīng)用等等)內(nèi)向軟件應(yīng)用的用戶顯示,以便接收輸入并提供反饋??梢允褂肎UI來提供自定義、報告性能統(tǒng)計,和/或修改系統(tǒng)性質(zhì)。GUI的用戶可以是計算機系統(tǒng)的最終用戶、數(shù)據(jù)庫管理員、系統(tǒng)管理員、硬件設(shè)計師、和/或符合一個或多個預先頒發(fā)的安全憑據(jù)的任何實體或個人。作為替代地或附加地,緩存管理器(140)可以被預先配置或設(shè)計有預先指定的大小的移動窗口、指定數(shù)量的事務(wù)、預熱時間段,和/或在緩存管理器(140)內(nèi)使用的任何屬性或性質(zhì)。
在本發(fā)明的一個或多個實施例中,緩存管理器(140)使用在指定數(shù)量的事務(wù)過程中收集的數(shù)據(jù)來填充和/或修改容器統(tǒng)計對象。這可以在每T個事務(wù)之后基于為該T個事務(wù)收集的數(shù)據(jù),在每個事務(wù)之后(基于過去的事務(wù)的移動窗口),和/或基于對過去的事務(wù)數(shù)據(jù)的任何采樣來進行。在本發(fā)明的一個或多個實施例中,下列操作中的一個或多個可以基于收集的數(shù)據(jù)來執(zhí)行:a.對于具有num_f irst_pass_hits>l的所有容器統(tǒng)計對象,作為容器延遲*num_first_pass_hits/num_first_pass_blocks,來計算存儲容器的估計的新塊成本(“estimated_new_block_cost”)(遵循公式Ctlj=E[N」]禮」,其中,E[Nj]是在對緩存隊列的第一次通過過程中對來自存儲容器j的新緩存塊的緩存命中的期望數(shù),如下面所討論的)。對于這樣的容器統(tǒng)計對象,活動狀態(tài)標記可以被設(shè)置為真(TRUE),并且num_first_pass_blocks 和 num_first_pass_hits 可以被設(shè)置為 O。b.那些沒有num_first_pass_hits>l的容器統(tǒng)計對象繼續(xù)使用estimated_new_block_cost 的舊值,并持續(xù)增大 num_first_pass_blocks 和 num_first_pass_hits,直到下
一容器統(tǒng)計更新。c.在本發(fā)明的一個或多個實施例中,對于具有num_second_pass_hit_blocks>l的所有容器統(tǒng)計對象,作為 latency* (num_second_pass_hit_blocks/num_second_chance_blocks)/avg_cache_accesses_before_first_hit來計算估計的零命中緩存未中成本(“estimated_Ohit_miss_cost”)(遵循公式 Cj=LjRj=LjP(A|B」)/Tj,如下面所討論的)。在本發(fā)明的一個或多個實施例中,對于這些容器統(tǒng)計對象,num_second_chance_blocks、num_second_pass_hit_blocks,以及 avg_cache_accesses_before_first_hit 可以被復位為零。d.在本發(fā)明的一個或多個實施例中,那些沒有num_second_pass_hit_blocks>l的容器統(tǒng)計對象可以繼續(xù)使用現(xiàn)有的estimated_Ohit_miss_cost,和/或繼續(xù)增大num_second_chance_blocks> num_second_pass_hit_blocks 和 / 或 avg_cache_accesses_before_first_hit0在本發(fā)明的一個或多個實施例中,在預熱期之后和/或執(zhí)行指定數(shù)量的事務(wù)之后,對于活動狀態(tài)標記被設(shè)置為FALSE的容器統(tǒng)計對象,緩存管理器(140)以概率I將對應(yīng)于存儲容器的新緩存塊插入在試用段的開始處(即,頂部)。另外,緩存管理器(140)還以概率0.5刪除對應(yīng)于存儲容器的緩存塊,如果它們在對試用段的第一次通過過程中接收到零個緩存命中(此時被認為從緩存中清除)的話。在本發(fā)明的一個或多個實施例中,這增強了這樣的緩存塊的回收利用,以便提高估計的容器統(tǒng)計數(shù)據(jù)的精確度。分析緩存刪除繼續(xù)圖1A,根據(jù)本發(fā)明的一個或多個實施例,緩存管理器(140)以概率的方式從緩存隊列(142)的受害者段刪除一個或多個新緩存塊。因此,可以給受害者段中的一個或多個新緩存塊指派刪除概率。刪除概率是:如果檢查相應(yīng)的緩存塊,則該緩存塊將被從緩存中清除的概率。例如,刪除概率可以是零和一(含)之間的數(shù)字。當新緩存塊被考慮從緩存隊列中清除時,緩存管理器(140)可以隨機地選擇概率數(shù)。在本發(fā)明的一個或多個實施例中,概率數(shù)可以從均勻分布中選擇和/或在匹配刪除概率的潛在值的范圍的潛在值的范圍內(nèi)選擇。隨后,將概率數(shù)與刪除概率進行比較,并且對是否要清除緩存塊作出判斷。繼續(xù)上述示例,如果刪除概率大于或等于概率數(shù),則從緩存隊列中清除緩存塊(對應(yīng)的存儲單元被釋放)。在本發(fā)明的一個或多個實施例中,緩存管理器(140)響應(yīng)于被請求的緩存操作,識別緩存命中和/或緩存未中。在本發(fā)明的一個或多個實施例中,緩存管理器(140)跟蹤在對緩存隊列(142)的每一次通過過程中由緩存塊接收到的緩存命中的數(shù)量(對每一個緩存塊b表示為nb)。對緩存隊列(142)的通過可以包括對緩存隊列的在其之后緩存塊被清除或回收利用的任何段(例如,試用段和/或保護段)的通過。在本發(fā)明的一個或多個實施例中,如果對于正在被考慮清除的緩存塊,nb等于零,則從緩存隊列中刪除緩存塊。如果nb>0,那么,緩存塊被回收利用到緩存隊列(142)的保護段的開始處(S卩,頂部)。在插入到緩存隊列(142)時,nb可以被初始化為任何值。在本發(fā)明的一個或多個實施例中,當緩存塊被回收利用時,nb被復位到零。在本發(fā)明的一個或多個實施例中,每當需要將新緩存塊插入到緩存隊列(140)中時(例如,當緩存未中發(fā)生時),緩存管理器(140)順序地考慮緩存隊列(142)的受害者段中的緩存塊,以從緩存隊列(142)末端開始清除。在本發(fā)明的一個或多個實施例中,緩存管理器(140)作為rb=nb/tb來計算緩存中舊緩存塊的估計的訪問速率,其中,tb是自從舊緩存塊b被插入到緩存隊列(142)中以來消逝的時間。繼續(xù)圖1A,在本發(fā)明的一個或多個實施例中,緩存管理器(140)將預定義的比率的帶有nb等于零的新緩存塊回收利用到緩存隊列(142)的試用段的開始處(即,頂部)。然后,緩存管理器(140)可以對于每一個存儲容器觀察在對試用段的第二次通過過程中被命中的那些緩存塊的一部分。在一個實施例中,預定義的部分可以由連接到緩存管理器(140)的任何被授權(quán)的用戶和/或 實體設(shè)置和/或修改。在本發(fā)明的一個或多個實施例中,可以在緩存的操作過程中動態(tài)地調(diào)整預定義的部分,以便改進緩存的性能。
在本發(fā)明的一個或多個實施例中,緩存管理器(140)計算在對試用段的第一次通過之后帶有nb=0的新緩存塊將在對試用段的第二次通過過程中接收到緩存命中的條件概率為P (A| Bj) =P (A n BjVP(Bj)c在此公式中,Bj是屬于在其對試用段的第一次通過過程中沒有接收到緩存命中的存儲容器j的新塊的事件,A是該新塊在其對試用段的第二次通過過程中接收到緩存命中的事件。對于每一個存儲容器j,此條件概率可以被估計為滿足事件Bj并在被回收利用到緩存隊列的試用段的開始處(即,頂部)之后接收到緩存命中的緩存塊的一部分。在本發(fā)明的一個或多個實施例中,緩存管理器(140)作為Rj=P (A| Bj)/Tj來計算來自存儲容器j的新緩存塊的估計的訪問速率,其中,Tj是在在對試用段的第二次通過過程中接收到緩存命中之前由來自存儲容器j的新緩存塊花費在緩存中的平均時間。在本發(fā)明的一個或多個實施例中,可以使用其中1^是1的遞減函數(shù)的任何公式來計算估計的訪問速率(包括所示出的公式的任何線性和/或指數(shù)變體)。繼續(xù)圖1A,在本發(fā)明的一個或多個實施例中,緩存管理器(140)作為Cj=LfRj來計算在受害者緩存中具有一個或多個新緩存塊的存儲容器的估計的緩存未中成本,其中Lj是存儲容器j的延遲。緩存管理器(140)可以計算刪除這樣的緩存塊的概率Pj,以便對于在受害者段中有新緩存塊的任何兩個存儲容器j和k,相對刪除概率與相對緩存未中成本成反比:Pj/Pk=Ck/Cj。在本發(fā)明的一個或多個實施例中,可以使用其中存儲容器的刪除概率與其估計的緩存未中成本逆相關(guān)的任何公式或給定公式的變體(包括所示出的公式的任何線性和/或指數(shù)變體)。在本發(fā)明的一個或多個實施例中,緩存管理器(140)可以使用此公式和/或此公式的變體來隔離在緩存隊列中具有緩存塊的任何存儲容器的刪除概率(PP。首先,緩存管理器(140)可以識別在受害者段中具有一個或多個新緩存塊的存儲容器之中的最低
估計的緩存未中成本(Cf )。然后,緩存管理器(140)可以作
權(quán)利要求
1.一種將緩存塊插入到緩存隊列中的方法,包括: 由處理器檢測所述緩存隊列的第一緩存未中; 由所述處理器識別響應(yīng)于所述緩存未中接收訪問的存儲塊; 由所述處理器計算包括所述存儲塊的第一存儲容器的第一估計的緩存未中成本;由所述處理器基于所述第一估計的緩存未中成本的數(shù)學公式來計算所述第一存儲容器的插入概率; 從均勻分布中隨機地選擇插入概率數(shù),其中,所述插入概率超過所述插入概率數(shù);以及響應(yīng)于所述插入概率超過所述插入概率數(shù),將對應(yīng)于所述存儲塊的新緩存塊插入到所述緩存隊列中。
2.如權(quán)利要求1所述的方法,其中,計算所述第一估計的緩存未中成本包括: 計算由對應(yīng)于第一存儲容器的多個緩存塊在對所述緩存隊列的試用段的第一次通過中接收到的緩存命中的平均數(shù); 識別所述第一存儲容器的延遲;以及 基于緩存命中的所述平均數(shù)和所述延遲,計算所述第一估計的緩存未中成本。
3.如權(quán)利要求1所述的方法,還包括: 計算具有所述緩存隊列中的緩存塊的多個存儲容器的多個估計的緩存未中成本,其中,所述多個估計的緩存未中成本包括所述第一估計的緩存未中成本,并且所述多個存儲容器包括所述第一存儲容器;以及 識別對應(yīng)于所述多個存儲容器中的第二存儲容器的所述多個估計的緩存未中成本的最大估計的緩存未中成本,其中,所述插入概率進一步基于所述最大估計的緩存未中成本。
4.如權(quán)利要求3所述的方法,還包括: 識別所述第一存儲容器的多個新緩存塊的第一到達速率,其中,所述插入概率進一步基于所述第一到達到達速率;以及 識別對應(yīng)于所述第二存儲容器的多個新緩存塊的第二到達速率,其中,所述第一到達速率超過所述第二到達速率。
5.如權(quán)利要求4所述的方法,其中,所述新緩存塊被插入在所述緩存隊列的試用段的開始處,并且其中,所述試用段包括所述緩存隊列的末尾處的緩存塊的相鄰組。
6.如權(quán)利要求1所述的方法,還包括: 在檢測到所述第一緩存未中之后并基于舊存儲容器的訪問速率,檢測所述舊存儲容器的工作負荷變化; 在所述緩存隊列的受害者段內(nèi),識別對應(yīng)于具有所述工作負荷變化之前最新訪問時間的所述舊存儲容器的舊緩存塊;以及 在插入所述新緩存塊之前并基于所述工作負荷變化,從所述緩存隊列中清除所述舊緩存塊。
7.如權(quán)利要求1所述的方法,還包括: 在所述緩存隊列內(nèi),識別存儲在先存儲塊的值的在先新緩存塊; 由所述處理器計算包括所述在先存儲塊的第二存儲容器的第二估計的緩存未中成本; 基于所述第二估計的緩存未中成本的數(shù)學公式,計算所述第二存儲容器的刪除概率;從所述均勻分布中隨機地選擇刪除概率數(shù),其中,所述刪除概率超過所述刪除概率數(shù);以及 響應(yīng)于所述刪除概率超過所述刪除概率數(shù),并在將所述新緩存塊插入到所述緩存隊列中之前,從所述緩存隊列清除所述在先新緩存塊。
8.如權(quán)利要求1所述的方法,其中,所述數(shù)學公式將所述插入概率表示為所述第一估計的緩存未中成本的遞增函數(shù)。
9.一種將緩存塊插入到緩存隊列中的方法,包括: 計算所述緩存隊列內(nèi)的緩存塊的估計的緩存未中成本; 從所述緩存隊列中清除所述緩存塊; 將對應(yīng)于所述緩存塊的存儲塊的條目插入到對應(yīng)于所述緩存隊列的遮蔽列表中; 由處理器檢測引用所述存儲塊的所述緩存隊列的緩存未中; 響應(yīng)于所述緩存未中,訪問所述遮蔽列表內(nèi)的所述條目; 基于從所述緩存隊列中清除的緩存塊的多個估計的舊緩存未中成本的數(shù)學公式,計算估計的緩存未中成本閾值;以及 響應(yīng)于所述估計的緩存未中成本超過所述估計的緩存未中成本閾值,將對應(yīng)于所述存儲塊的新緩存塊插入到所述緩存隊列中。
10.如權(quán)利要求9所述的方法,其中,計算所述估計的緩存未中成本閾值包括: 計算所述多個估計的舊緩存未中成本; 識別所述多個估計的舊緩存未中成本中的最大估計的舊緩存未中成本; 計算所述多個估計的舊緩存未中成本的標準偏差;以及 基于所述最大估計的舊緩存未中成本和所述標準偏差,來計算所述估計的緩存未中成本閾值。
11.如權(quán)利要求9所述的方法,其中,計算所述緩存塊的所述估計的緩存未中成本包括: 對于所述緩存塊,基于自從插入到所述緩存隊列中以來接收到的緩存命中的數(shù)量除以自從插入到所述緩存隊列中以來消逝的時間,來計算估計的訪問速率;以及 基于所述緩存塊的延遲乘以所述估計的訪問速率,來計算所述估計的緩存未中成本。
12.—種存儲了用于將緩存塊插入到緩存隊列中的多個指令的計算機可讀存儲介質(zhì),所述多個指令包括下列功能: 檢測所述緩存隊列的緩存未中; 識別響應(yīng)于所述緩存未中接收訪問的存儲塊; 計算包括所述存儲塊的第一存儲容器的第一估計的緩存未中成本; 基于所述第一估計的緩存未中成本的數(shù)學公式,來計算所述第一存儲容器的插入概率; 從均勻分布中隨機地選擇插入概率數(shù),其中,所述插入概率超過所述插入概率數(shù);以及響應(yīng)于所述插入概率超過所述插入概率數(shù),將對應(yīng)于所述存儲塊的新緩存塊插入到所述緩存隊列中。
13.如權(quán)利要求12所述的計算機可讀存儲介質(zhì),其中,計算所述第一估計的緩存未中成本包括:對于所述第一存儲容器,計算由對應(yīng)于所述第一存儲容器的多個緩存塊在對所述緩存隊列的試用段的第一次通過中接收到的緩存命中的平均數(shù); 識別所述第一存儲容器的延遲;以及 基于緩存命中的所述平均數(shù)和所述延遲,計算所述第一估計的緩存未中成本。
14.如權(quán)利要求12所述的計算機可讀存儲介質(zhì),其中,所述多個指令還包括下列功能: 計算具有所述緩存隊列中的緩存塊的多個存儲容器的多個估計的緩存未中成本,其中,所述多個估計的緩存未中成本包括所述第一估計的緩存未中成本,并且所述多個存儲容器包括所述第一存儲容器;以及 識別所述多個估計的緩存未中成本的最大估計的緩存未中成本,其中,所述插入概率進一步基于所述最大估計的緩存未中成本。
15.如權(quán)利要求12所述的計算機可讀存儲介質(zhì),其中,所述多個指令還包括下列功能: 在所述緩存隊列內(nèi),識別存儲在先存儲塊的值的在先新緩存塊; 計算包括所述在先存儲塊的第二存儲容器的第二估計的緩存未中成本; 基于所述第二估計的緩存未中成本的數(shù)學公式,計算所述第二存儲容器的刪除概率; 從所述均勻分布中隨機地選擇刪除概率數(shù),其中,所述刪除概率超過所述刪除概率數(shù);以及 響應(yīng)于所述刪除概率超過所述刪除概率數(shù),并在將所述新緩存塊插入到所述緩存隊列中之前,從所述緩存隊列清除所述在先新緩存塊。
16.如權(quán)利要求12所述的計算機可讀存儲介質(zhì),其中,所述多個指令還包括下列功能: 計算所述第一存儲容器的新緩存塊的估計的到達速率,其中,所述插入概率進一步基于所述估計的到達速率。
17.一種用于插入緩存塊的系統(tǒng),包括: 一種緩存隊列,包括: 所述緩存隊列的末尾處的試用段,以及 與所述試用段相鄰的保護段;以及 在處理器上執(zhí)行的并被配置成執(zhí)行下列操作的緩存管理器: 檢測所述緩存隊列的緩存未中; 識別響應(yīng)于所述緩存未中接收訪問的存儲塊; 計算包括所述存儲塊的存儲容器的估計的緩存未中成本; 基于所述估計的緩存未中成本的數(shù)學公式,計算所述存儲容器的插入概率; 從均勻分布中隨機地選擇概率數(shù),其中,所述插入概率超過所述概率數(shù);以及響應(yīng)于所述插入概率超過所述概率數(shù),將對應(yīng)于所述存儲塊的新緩存塊插入到所述緩存隊列中的所述試用段的開始處。
18.如權(quán)利要求17所述的系統(tǒng),進一步包括: 對應(yīng)于所述緩存隊列的遮蔽列表,包括: 用于清除的緩存塊的多個條目; 其中,所述緩存管理器進一步被配置成: 在插入所述新緩存塊之前,從所述緩存隊列清除受害者緩存塊;以及 將所述受害者緩存塊的條目插入到所述遮蔽列表中。
19.如權(quán)利要求17所述的系統(tǒng),進一步包括: 包括所述存儲容器的存儲設(shè)備,其中,所述存儲容器包括多個存儲塊,并且其中,所述多個存儲塊包括所述存儲塊。
20.如權(quán)利要求17所述的系統(tǒng),其中,計算所述估計的緩存未中成本包括: 計算由對應(yīng)于第一存儲容器的多個緩存塊在對所述緩存隊列的試用段的第一次通過中接收到的緩存命中的平均數(shù); 識別所述第一存儲容器的延遲;以及 基于緩存命中的所述平均 數(shù)和所述延遲,計算所述第一估計的緩存未中成本。
全文摘要
一種將緩存塊插入到緩存隊列中的方法包括檢測緩存隊列的第一緩存未中,識別響應(yīng)于所述緩存未中接收訪問的存儲塊,計算包括所述存儲塊的第一存儲容器的第一估計的緩存未中成本,基于第一估計的緩存未中成本的數(shù)學公式來計算第一存儲容器的插入概率,從均勻分布中隨機地選擇插入概率數(shù),以及,響應(yīng)于所述插入概率超過所述插入概率數(shù),將對應(yīng)于所述存儲塊的新緩存塊插入到緩存隊列中。
文檔編號G06F12/12GK103154912SQ201180049886
公開日2013年6月12日 申請日期2011年8月31日 優(yōu)先權(quán)日2010年8月31日
發(fā)明者G·F·斯沃特, D·溫格沃弗 申請人:甲骨文國際公司