專利名稱:使用優(yōu)化的基于閃存的高速緩存存儲器的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明通常涉及存儲器,且更具體地,涉及使用閃存器件作為高速緩存存儲器。
背景技術:
閃存器件是可以在大塊中電擦除和再編程的一類非易失性存儲器件。閃存器件在由浮置柵極晶體管構造的存儲器單元的陣列中存儲信息。單電平單元(SLC)閃存器件在每個單元中存儲一比特信息。多電平單元(MLC)閃存器件可以通過在多級電荷之間選擇來施加到其單元的浮置柵極,使得每單元存儲多于一比特。閃存器件具有有限壽命,因為它們僅可以支持有限次數(shù)的編程-擦除(P/E)循環(huán)。當今商業(yè)可得的閃存器件通常被保證在損耗開始影響存儲的可靠性之前支持指定次數(shù)的P/E循環(huán)。使用閃存器件作為動態(tài)隨機存取存儲器(DRAM)和/或硬盤(HDD)的替換或補充正日益吸引人,因為閃存的成本降低,且閃存的性能增加。從成本角度,閃存當前大約比傳統(tǒng)DRAM便宜十倍。閃存的較低成本允許存儲大得多的數(shù)據(jù)組,而不相應增加存儲器的成本。從性能角度,當今閃存當前具有比傳統(tǒng)機械盤高大約兩倍量級的隨機讀取吞吐量。使用閃存器件用于高速緩存存儲器的一個缺點是閃存器件具有有限壽命,且可能不理想地存儲經(jīng)歷大量更新的數(shù)據(jù)
發(fā)明內(nèi)容
一個實施例是包括節(jié)制對閃存器件的訪問的方法。該閃存器件是包括該閃存器件和第二存儲器器件的存儲系統(tǒng)的部分。所述節(jié)制由閃存器件外部的邏輯進行,且包括響應于閃存器件的估計的剩余壽命來計算節(jié)制因子。確定該節(jié)制因子是否超出閾值。響應于確定該節(jié)制因子不超出該閾值,向閃存器件寫入數(shù)據(jù)。響應于確定該節(jié)制因子超出該閾值,向第二存儲器器件寫入數(shù)據(jù)。 另一實施例是包括存儲器和存儲器控制器的一種系統(tǒng)。該存儲器包括閃存器件和第二存儲器器件。所述存儲器控制器耦合于所述閃存,且被配置以響應于閃存器件的估計的剩余壽命來計算節(jié)制因子。所述存儲器控制器還被配置以確定該節(jié)制因子是否超出閾值。響應于確定該節(jié)制因子不超出該閾值,向閃存器件寫入數(shù)據(jù),且響應于確定該節(jié)制因子超出該閾值,向第二存儲器器件寫入數(shù)據(jù)。另一實施例是一種計算機程序產(chǎn)品,其包括具有其中實現(xiàn)的計算機只讀程序代碼的計算機可讀存儲介質(zhì)。計算機可讀程序代碼包括被配置用于節(jié)制對閃存器件的訪問的計算機可讀程序代碼。該閃存器件是包括該閃存器件和第二存儲器器件的存儲系統(tǒng)的部分。所述介質(zhì)由閃存器件外部的邏輯進行。所述節(jié)制包括響應于閃存器件的估計的剩余壽命,計算節(jié)制因子;確定該節(jié)制因子是否超出閾值。響應于確定該節(jié)制因子不超出該閾值,向閃存器件寫入數(shù)據(jù)。響應于確定該節(jié)制因子超出該閾值,向第二存儲器器件寫入數(shù)據(jù)。另一個實施例是包括節(jié)制對閃存器件的訪問的方法。該閃存器件是包括該閃存器件和第二存儲器器件的存儲系統(tǒng)的部分。所述介質(zhì)由閃存器件外部的邏輯進行。所述節(jié)制包括響應于閃存器件的估計的剩余壽命,計算壽命節(jié)制因子。另外,計算響應于閃存器件的估計的最大吞吐量的吞吐量節(jié)制因子,以及響應于壽命節(jié)制因子和吞吐量節(jié)制因子的最大節(jié)制因子。確定該最大節(jié)制因子是否超出閾值。響應于確定所述最大節(jié)制因子超出所述閾值,進行數(shù)據(jù)大小節(jié)制、預取窗口大小節(jié)制和使用節(jié)制中的至少一個。響應于所述節(jié)制,向所述閃存器件和所述第二存儲器器件中的至少一個寫數(shù)據(jù)。另一實施例是一種計算機程序產(chǎn)品,其包括具有其中實現(xiàn)的計算機只讀程序代碼的計算機可讀存儲介質(zhì)。計算機可讀程序代碼包括被配置用于節(jié)制對閃存器件的訪問的計算機可讀程序代碼。該閃存器件是包括該閃存器件和第二存儲器器件的存儲系統(tǒng)的部分。所述介質(zhì)由閃存器件外部的邏輯進行。所述節(jié)制包括響應于閃存器件的估計的剩余壽命,計算壽命節(jié)制因子。也計算響應于閃存器件的估計的最大吞吐量的吞吐量節(jié)制因子,以及響應于壽命節(jié)制因子和吞吐量節(jié)制因子的最大節(jié)制因子。確定該最大節(jié)制因子是否超出閾值。響應于確定所述最大節(jié)制因子超出所述閾值,進行數(shù)據(jù)大小節(jié)制、預取窗口大小節(jié)制和使用節(jié)制中的至少一個。響應于所述節(jié)制,向所述閃存器件和所述第二存儲器器件中的至少一個寫數(shù)據(jù)。
通過本發(fā)明的技術實現(xiàn)其他特征和優(yōu)點。在此詳細描述本發(fā)明的其他實施例和方面,且將其考慮為要求保護的本發(fā)明的部分。為了便于理解具有優(yōu)點和特征的本發(fā)明,參考說明書和附圖。
具體指出視為本發(fā)明的主題,且在本說明書的結尾的權利要求書中清楚地要求保護。從結合所附附圖進行的以下詳細描述,本發(fā)明的前述和其他特征和優(yōu)點將變得更明顯,其中圖I圖示根據(jù)實施例的用于提供快閃高速緩存存儲器的系統(tǒng)的方框圖;圖2是根據(jù)實施例的用于節(jié)制向快閃高速緩存存儲器寫入數(shù)據(jù)的速率的處理流程;圖3是根據(jù)實施例的用于基于數(shù)據(jù)大小來節(jié)制向快閃高速緩存存儲器寫入數(shù)據(jù)的速率的處理流程;圖4是根據(jù)實施例的用于基于預取窗口大小來節(jié)制向快閃高速緩存存儲器寫入數(shù)據(jù)的速率的處理流程;以及圖5是根據(jù)實施例的用于基于數(shù)據(jù)使用來節(jié)制向快閃高速緩存存儲器寫入數(shù)據(jù)的速率的處理流程。
具體實施例方式一個實施例使用閃存作為在動態(tài)隨機存取存儲器(DRAM)和硬盤(HDD)存儲器之間的第二級高速緩存。控制并由位于存儲器控制器中的邏輯來節(jié)制對快閃高速緩存存儲器的訪問?;谡淮鎯Φ臄?shù)據(jù)的特征(例如,數(shù)據(jù)訪問是否是順序的或隨機的、數(shù)據(jù)的大小)來節(jié)制對快閃高速緩存存儲器的訪問。在一個實施例中,當檢測特定數(shù)據(jù)特征時,完全避開對快閃高速緩存的訪問。通過基于數(shù)據(jù)特征來節(jié)制在存儲器控制器級的數(shù)據(jù),可以使用閃存器件作為第二級高速緩存,同時仍然保證將維持閃存器件的聲稱的壽命。
在一個實施例中,諸如圖I所示的實施例,使用快閃高速緩存存儲器106作為DRAM高速緩存存儲器104和盤108之間的第二級高速緩存。使用位于存儲器控制器中的邏輯來確定在哪里存儲數(shù)據(jù)(例如,到快閃高速緩存存儲器106、DRAM高速緩存存儲器104和/或盤108)且跟蹤先前存儲的數(shù)據(jù)的位置??梢允褂每扉W高速緩存存儲器106作為讀取高速緩存和/或?qū)懭敫咚倬彺?。當用作讀取高速緩存時,在從盤108返回數(shù)據(jù)到DRAM高速緩存存儲器104時和/或在當DRAM高速緩存存儲器104逐出未修改數(shù)據(jù)時的稍后時間,快閃高速緩存存儲器106被裝入數(shù)據(jù)。對于修改的數(shù)據(jù),DRAM高速緩存存儲器104 (例如被用作寫入高速緩存)具有將數(shù)據(jù)降級(de-staging)到快閃高速緩存存儲器106中而不到盤108中的選擇。當以該方式使用時,除了吸收過寫入,快閃高速緩存存儲器106 (例如用作寫入高速緩存)累積大量寫入,其可以稍后以高效方式被歸類并降級到盤108。在圖I所示的系統(tǒng)的實施例中,該數(shù)據(jù)通過DRAM高速緩存存儲器104流動,且快閃高速緩存存儲器106的使用可選。這允許在存儲器控制器102中的邏輯節(jié)制被發(fā)送到快 閃高速緩存存儲器106的數(shù)據(jù)的量和類型。閃存器件是可以通過在此描述的示例實施例實現(xiàn)的受限壽命存儲器器件的一個例子。其他受限壽命存儲器器件,諸如、但不限于還可以由示例實施例來實現(xiàn)相變存儲器(PCM)和其他存儲類存儲器(SCM)?;趥鹘y(tǒng)DRAM的高速緩存算法主要關心最大化高速緩存的擊中率(或最小化失誤率),以便減少對底層盤的引用的數(shù)量。例如,最近最少使用(LRU)算法利用工作負荷中的時間位置來首先取出最老的未引用數(shù)據(jù)塊。LRU算法已經(jīng)被成功使用來減少讀取和寫入兩者的失敗的數(shù)量。類似地,數(shù)據(jù)預取是通過利用工作負荷中的空間位置來改善讀取的擊中率的另一技術。但是,僅關注擊中和失敗,可能對基于閃存的高速緩存來說不是最佳的。具體地,與耐受不是問題的DRAM相反,閃存僅允許在其損耗且變得不可用之前的有限數(shù)量的寫入。因此,盲目關注擊中和失敗度量,可能導致過量和不可控損耗,使得快閃高速緩存的壽命短和不可預測。壽命和不可預測性的該縮短可能對于許多類型的實施方式來說不可接受。例如,多電平單元(MLC)閃存器件當前被標定為大約五千的損耗循環(huán),且如果使用這種器件作為高速緩存,而沒有節(jié)制,則僅將花費數(shù)月來損耗掉這種器件。為了保持服務成本低,將期望任何存儲系統(tǒng)的高速緩存具有數(shù)年的壽命,且理想地保證實現(xiàn)該壽命,而不管工作負荷。解決上述問題的一個方法是在閃存器件到達其壽命末期時使得閃存器件運行得更慢。這擴展閃存器件的壽命,但同時征服其用作高速緩存的主要目的來改善系統(tǒng)的性能。實際,用作高速緩存的慢閃存器件的存在可以降低該系統(tǒng)的整體性能。在此描述的實施例利用避免快閃高速緩存變?yōu)樾阅芷款i、同時保證最小可接受壽命的情況的技術。在此描述的實施例利用節(jié)制技術,其控制對快閃高速緩存存儲器106的輸入/輸出(I/O)的速率,以便維持低于閃存器件和將快閃高速緩存存儲器106連接到DRAM高速緩存存儲器104的網(wǎng)絡的吞吐量容量。這允許閃存器件維持最小保證壽命??梢越?jīng)驗地確定閃存器件和網(wǎng)絡的吞吐量容量。這允許快閃高速緩存存儲器106的快閃控制模塊(FCM)(在一個實施例中,位于存儲器控制器102)來在任何給定的時間計算當前使用的該容量的百分比P。使用該百分比來計算吞吐量節(jié)制因子(TTF),一個實施例使用吞吐量節(jié)制因子(TTF)來防止快閃高速緩存存儲器106變?yōu)樾阅芷款i。可以以各種方式確定閃存器件的剩余壽命。一個選擇是使用一些制造商為其閃存器件提供的內(nèi)置損耗指示器。簡單的損耗指示器是只讀計數(shù)器,其在一到一百的范圍內(nèi)取值,其中,一的值指示完全沒有損耗,且一百的值指示該器件到達了其最大寫入數(shù)量。在沒有這種指示器的情況下,F(xiàn)CM可以通過本身保持向閃存器件的寫入的跟蹤來計算該損耗。在任一情況下,可以計算閃存器件的剩余壽命。計算的剩余壽命c和期望的剩余壽命d之間的不同形成由實施例使用的第二節(jié)制因子、在此稱為壽命節(jié)制因子(LTF)的基礎。使用LTF來保護閃存器件不以比預期更早地達到其壽命末期。為了簡單,在一個實施例中,兩個節(jié)制因子(TTF和LTF)取從-到I的值。對應于兩個因子,負值指示不需要節(jié)制,且該數(shù)據(jù)可以被自由地發(fā)送到快閃高速緩存存儲器106。I的值指示需要完全節(jié)制,且不應該向快閃高速緩存存儲器106發(fā)送數(shù)據(jù)。在O和I之間的值指示某些節(jié)制取決于節(jié)制因子的特定值而需要被應用于快閃高速緩存存儲器106。在一個實施例中,對于TTF,選擇90%的閾值作為吞吐量容量,在該吞吐量容量 以上,將應用節(jié)制。這被定義為如下TTF=(p-90)/(100-90)。類似地,對于LTF,選擇期望剩余壽命以上的10%的閾值,且對于其以下的值,應用閾值節(jié)制。這被定義為如下LTF= (I. ld-c)/I. Id.可以通過一個實施例來實現(xiàn)任何閾值數(shù),且該閾值可基于實施方式特定需求被編程。在另一實施例中,選擇這些閾值為寫入高速緩存比只讀高速緩存更保守,由于在只讀高速緩存中,通過HDD上的副本來保護該數(shù)據(jù),且該實施方式可以更靠近閃存器件的壽命末期地運行,而沒有數(shù)據(jù)丟失的風險。在另一實施例中,其中實現(xiàn)混合、讀取/寫入高速緩存,由于接近更高節(jié)制因子,因此快閃高速緩存存儲器106被動態(tài)地分裂為讀取和寫入部分,且在讀取部分中比寫入部分中允許更快的損耗。該實施例利用讀取部分中的介質(zhì)錯誤(media errors)的事實將預言在寫入部分中的期望行為,且允許該器件的壽命末期的提前通知。圖2是根據(jù)實施例的用于節(jié)制向快閃高速緩存存儲器106寫入數(shù)據(jù)的速率的整體處理。在一個實施例中,通過存儲器控制器102中的邏輯來實現(xiàn)該處理流程。在塊202處,計算TTF、LTF和(TTF, LTF)的最大值。在塊204,確定(TTF,LTF)的最大值是否大于規(guī)定的閾值。如果(TTF,LTF)的最大值不高于規(guī)定的閾值,則該處理循環(huán)回到204,因為不需要節(jié)制。如果在塊204,確定(TTF,LTF)的最大值高于規(guī)定的閾值,則進行塊206。在塊206,進行數(shù)據(jù)大小節(jié)制來基于數(shù)據(jù)的大小和(TTF,LTF)的最大值來限制在快閃高速緩存存儲器106中存儲的數(shù)據(jù)量。圖3中示出數(shù)據(jù)大小節(jié)制處理的實施例。在一個實施例中,進行塊206處的數(shù)據(jù)大小節(jié)制處理達規(guī)定數(shù)量的迭代和/或達規(guī)定的時間量。接下來,進行塊208,重新計算TTF、LTF和(TTF, LTF)的最大值。在塊210,通過比較(TTF,LTF)的最大值和規(guī)定的閾值來確定數(shù)據(jù)大小節(jié)制處理是否提供足夠的節(jié)制。如果(TTF, LTF)的最大值不高于規(guī)定的閾值,則該處理繼續(xù)到塊204。如果在塊210,確定(TTF,LTF)的最大值高于規(guī)定的閾值,則處理繼續(xù)到塊212,其中,進行預取窗口大小節(jié)制。圖4中示出預期窗口大小節(jié)制處理的實施例。在一個實施例中,在塊212處進行預取窗口大小節(jié)制處理達規(guī)定數(shù)量的迭代和/或達規(guī)定的時間量。接下來,進行塊214,重新計算TTF、LTF和(TTF,LTF)的最大值。在塊216,通過比較(TTF,LTF)的最大值和規(guī)定的閾值來確定預取窗口大小節(jié)制處理是否提供足夠的節(jié)制。如果(TTF,LTF)的最大值不高于規(guī)定的閾值,則該處理繼續(xù)到塊204。在一個實施例中,處理繼續(xù)到塊212,該處理在循環(huán)回到塊204之前循環(huán)回到212,達規(guī)定數(shù)量的迭代和/或達規(guī)定的時間量。如果在塊216,確定(TTF,LTF)的最大值高于規(guī)定的閾值,則處理繼續(xù)到塊218,其中,進行預取使用節(jié)制。在圖5中示出該使用節(jié)制處理的實施例。使用節(jié)制處理該情況,在該情況下,TTF或LTF或兩者的值甚至在很好表現(xiàn)的工作負荷之下快速且不成比例地增長。這可以來源于不能預先預期的閃存器件的特定物理特征,且可以導致以下情況,在該情況下,快速高速緩存存儲器106變?yōu)榧磿r的瓶頸和/或比預期快得多地達到其壽命末期。在這種情況下,即使設置快速預取參考大小為O (這意味著,僅原始請求的數(shù)據(jù)被發(fā)送到快速高速緩存存儲器106)可能不足夠。在一個實施例中,進行塊218處的使用節(jié)制處理達規(guī)定數(shù)量的迭代和/或達規(guī)定的時間量。接下來,進行塊220,且重新計算TTF、LTF和(TTF, LTF)的最大值。在塊222,通過比較(TTF,LTF)的最大值和規(guī)定的閾值來確定使用節(jié)制處理是否提供足夠的節(jié)制。如果(TTF, LTF)的最大值不高于規(guī)定的閾值,則該處理繼續(xù)到塊204。在另一個實施例中,處理 繼續(xù)到塊212 (或塊218),且該處理在循環(huán)回到塊204之前循環(huán)回到212 (或塊218),達規(guī)定數(shù)量的迭代和/或達規(guī)定的時間量。如果(TTF,LTF)的最大值高于規(guī)定的閾值,則進行塊224,且停止快閃高速緩存高速緩存器106的使用。該系統(tǒng)繼續(xù)使用DRAM高速緩存存儲器104,且其缺省高速緩存算法僅與盤108通信,且繞開快閃高速緩存存儲器106。在一個實施例中,在指定時間量和/或指定的訪問數(shù)量之后,處理從塊224繼續(xù)到塊202,以看是否可以使用快閃高速緩存存儲器106用于當前工作負荷。在一個實施例中,以不同的順序進行圖2所示的節(jié)制處理。在另一實施例中,最大因子與不同值相比較。在另一實施例中,進行圖2所示的節(jié)制處理的子集。在另一實施例中,進行與圖2所示的節(jié)制處理的另外或不同的節(jié)制處理。例如,可以優(yōu)選地節(jié)制某些工作負荷或量,或可以在決定哪些數(shù)據(jù)是重要的要發(fā)送到閃存以及哪些可以被節(jié)制時使用來自應用的一些暗示。圖3是根據(jù)實施例的用于基于數(shù)據(jù)大小來節(jié)制向快閃高速緩存寫入數(shù)據(jù)的速率的處理流程。在一個實施例中,通過存儲器控制器102中的邏輯來實現(xiàn)該處理流程。圖3所示的處理流程避免污染具有來源于順序讀取或?qū)懭氲拇髩K數(shù)據(jù)的快閃高速緩存存儲器106。在一個實施例中,這些大塊數(shù)據(jù)直接從DRAM高速緩存存儲器104發(fā)送到盤108。不向快閃高速緩存存儲器106寫入順序的工作負荷由于若干原因而是有益的。首先,順序的工作負荷具有很少的位置,因此不利用該高速緩存。另外,傳統(tǒng)的盤的順序的性能可與閃存器件的性能相當,且不可能通過高速緩存來改進,且可能甚至更差。另外,順序的工作負荷可能導致對閃存器件更多的損耗。在圖3所示的實施例中,進行節(jié)制,且設置大小閾值。低于閾值的數(shù)據(jù)大小從DRAM高速緩存存儲器104發(fā)送到快閃高速緩存存儲器106,且高于閾值的數(shù)據(jù)大小直接發(fā)送到盤108。該閾值基于如圖3所示的實施例中的節(jié)制因子可以是靜態(tài)或動態(tài)的。參考圖3,在塊302,TTF和LTF的最大值被分配給變量“maxfactor (最大因子)”。在一個實施例中,從圖2所示的整體處理流程中調(diào)用圖3中的處理流程,其中,計算了 TTF和LTF。在另一實施例中,塊302中的處理的部分包括計算TTF和LTF。在塊304,確定該最大因子是否小于O。如果該最大因子小于0,處理繼續(xù)到塊306,其中,該最大數(shù)據(jù)大小被設置為無限大(即,所有數(shù)據(jù)被發(fā)送到快閃高速緩存存儲器106)。如果在塊304處確定該最大因子不小于O,則處理繼續(xù)到塊308,以確定該最大因子是否小于O. 2。如果該最大因子小于0.2,處理繼續(xù)到塊310,其中,該最大數(shù)據(jù)大小被設置為256千字節(jié)(KB)。因此,尺寸為小于256KB的數(shù)據(jù)僅從DRAM高速緩存存儲器104發(fā)送到快閃高速緩存存儲器106,且尺寸為大于256KB的數(shù)據(jù)從DRAM高速緩存存儲器104發(fā)送到盤108。如果在塊308處確定該最大因子不小于O. 2,則處理繼續(xù)到塊312,以確定該最大因子是否小于O. 4。如果該最大因子小于O. 4,處理繼續(xù)到塊314,以防止對高于128KB的數(shù)據(jù)大小的快閃高速緩存存儲器106的訪問,且如果該最大因子不小于O. 4,則防止對塊316的訪問。在塊316,確定該最大因子是否小于O. 6。如果該最大因子小于O. 6,處理繼續(xù)到塊318,以防止對高于64KB的數(shù)據(jù)大小的快閃高速緩存存儲器106的訪問,且如果該最大因子不小于O. 6,則防止對塊320的訪問。在塊320,確定該最大因子是否小于O. 8。如果該最大因子小 于O. 8,處理繼續(xù)到塊322,以防止對高于16KB的數(shù)據(jù)大小的快閃高速緩存存儲器106的訪問,且如果該最大因子不小于O. 8,則防止對塊324的訪問。在塊324,確定該最大因子是否小于O. 95。如果該最大因子小于O. 95,處理繼續(xù)到塊326,以防止對高于4KB的數(shù)據(jù)大小的快閃高速緩存存儲器106的訪問,且如果該最大因子不小于O. 95,則防止對塊328的訪問。在塊328,防止向快閃高速緩存存儲器寫入所有數(shù)據(jù)。因此,直接從DRAM高速緩存存儲器104直接向盤108寫入所有存儲器。其中基于數(shù)據(jù)大小來節(jié)制對快閃高速緩存存儲器106的訪問的其他實施例具有對應于相同最大因子值的不同最大數(shù)據(jù)大小值、對應于不同最大數(shù)據(jù)大小值的不同最大因子值、更小的最大因子值、或更大的最大因子值。在另一實施例中,圖3所示的處理在塊306、310、314、318、322、326和328之前循環(huán)回到塊302,以重寫計算TTF、LTF和最大因子用于每個數(shù)據(jù)訪問。在另一實施例中,周期性地或響應于檢測到可能具有對因子的影響(例如,對快閃高速緩存存儲器106的特定數(shù)量的訪問)的情況,重新計算TTF、LTF和最大因子。在另一實施例中,最大數(shù)據(jù)大小的最小值大于O。在另一實施例中,為被寫入(修改)的數(shù)據(jù)相比于被讀取(未修改)的數(shù)據(jù)不同地選擇上述節(jié)制閾值(最大因子和最大數(shù)據(jù)大小)。首先或比修改后的數(shù)據(jù)更積極地節(jié)制未修改的數(shù)據(jù)可以是有益的,因為節(jié)制修改后的數(shù)據(jù)具有對整體性能的直接負面影響。圖4是根據(jù)實施例的用于基于預取窗口大小來節(jié)制向快閃高速緩存寫入數(shù)據(jù)的速率的處理流程。在一個實施例中,通過存儲器控制器102中的邏輯來實現(xiàn)該處理流程。圖4所示的處理限制為在隨機讀取時存儲到快閃高速緩存存儲器106的數(shù)據(jù)進行的預取的量。在一個實施例中,預取等待讀取丟失的發(fā)生,且然后,將除了請求的數(shù)據(jù)塊以外的在空間上相鄰于所請求的塊的一個或多個另外的塊預取到高速緩存中。另外的塊的數(shù)量(或另外的塊的大小)在此稱為預取窗。在另一實施例中,使用變化的塊大小(具有等于預取窗大小的大小),且比原始請求的更大的高速緩存塊被預取到高速緩存中。在在此描述的基于閃存的高速緩存的實施例中,首先將數(shù)據(jù)預取到DRAM高速緩存存儲器104,然后將數(shù)據(jù)從DRAM高速緩存存儲器104發(fā)送到快閃高速緩存存儲器106。在圖4所示的處理流程中,節(jié)制被發(fā)送到快閃高速緩存存儲器106的預取的數(shù)據(jù)的量。在圖4所示的實施例中,這通過將DRAM高速緩存存儲器預取窗的大小(或預取塊大小)從快閃高速緩存存儲器預取窗(或預取塊大小)分離(decouple)來進行。參考圖4,在塊402,TTF和LTF的最大值被分配給變量“maxfactor”。在一個實施例中,從圖2所示的整體處理流程中調(diào)用圖4中的處理流程,其中,計算了 TTF和LTF。在另一實施例中,塊402中的處理的部分包括計算TTF和LTF。在塊404,確定該最大因子是否小于O。如果該最大因子小于0,處理繼續(xù)到塊406,其中,該快閃高速緩存存儲器預取窗口大小被設置為DRAM快閃高速緩存存儲器預取窗口大小。因此,不基于預取窗口大小來進行節(jié)制。如果該最大因子不小于0,則處理繼續(xù)到塊408,其中,確定該最大因子是否小于0.95。如果該最大因子小于95,處理繼續(xù)到塊410,其中,該快閃高速緩存存儲器預取窗口大小被設置為O。因此,不預取數(shù)據(jù)用于快閃高速緩存存儲器106。如果該最大因子小于0,處理繼續(xù)到塊412,其中,該快閃高速緩存存儲器預取窗口大小被設置為等于(DRAM高速緩存存儲器預取大小)乘以(O. 95-最大因子)。因此,該預取窗口大小取決于該最大因子的值而變化。在其中基于預取窗口大小來節(jié)制快閃高速緩存存儲器106的其他實施例中,使用 不同最大因子閾值來將預取限制到快閃高速緩存存儲器106。在其他實施例中,在塊412中的計算中使用不同于0.95的百分比。在另一實施例中,圖4所示的處理在塊406、410和412之后循環(huán)回到塊402,以重新計算TTF、LTF和最大因子用于每個數(shù)據(jù)訪問。在另一實施例中,周期性地或響應于檢測到可能具有對因子的影響(例如,對快閃高速緩存存儲器106的特定數(shù)量的訪問)的情況,重新計算TTF、LTF和最大因子。在其他實施例中,為被寫入(修改)的數(shù)據(jù)相比于被讀取(未修改)的數(shù)據(jù)不同地選擇上述節(jié)制閾值(最大因子和閃存預取窗口大小)。圖5是根據(jù)實施例的用于基于數(shù)據(jù)使用來節(jié)制向快閃高速緩存寫入數(shù)據(jù)的速率的處理流程。在一個實施例中,通過隨機選擇駐留在DRAM高速緩存存儲器104中的原始請求的頁的子集、且僅向快閃高速緩存存儲器106發(fā)送原始請求的頁的所選子集來進行使用節(jié)制??梢允褂霉潭ǜ怕?例如,隨機選擇這些頁的50%以發(fā)送到快閃高速緩存存儲器106)或通過使用以下描述的動態(tài)概率來進行該選擇。注意,隨機地丟棄未修改的數(shù)據(jù)不會導致數(shù)據(jù)不一致性,因為數(shù)據(jù)的副本總是存在于硬盤上。對于修改的數(shù),不能簡單地丟棄數(shù)據(jù),但在當節(jié)制邏輯指示該閃存不能接受那些修改的數(shù)據(jù)時的情況下向盤寫入數(shù)據(jù)。另外,其中概率地選擇頁的實施例具有附加的屬性,即被多次訪問的頁最終將進入快閃高速緩存存儲器106中。參考圖5,在塊502,TTF和LTF的最大值被分配給變量“maxfactor”。在一個實施例中,從圖2所示的整體處理流程中調(diào)用圖5中的處理流程,其中,計算了 TTF和LTF。在另一實施例中,塊502中的處理的部分包括計算TTF和LTF。在塊504,由主機讀取的頁的小部分被隨機選擇以被發(fā)送到快閃高速緩存存儲器106。在圖5所示的實施例中,該小部分基于該最大因子的當前值而變化,且等于(I-最大因子)。在其他實施例中,該小部分被設置為不同值、諸如(O. 95-最大因子)的絕對值。在其他實施例中,對被寫入(修改)數(shù)據(jù)選擇一個小部分,且對被寫入(未修改)的數(shù)據(jù)選擇另一小部分。上述實施例使用TTF和LTF的最大孩子(即,最大因子),來確定應用于快閃高速緩存存儲器106的節(jié)制量。在其他實施例中,僅使用TTF,僅使用LTF,或使用另一因子來確定要應用的節(jié)制量。在其他實施例中,使用一個或多個因子和閾值的一組,用于一個節(jié)制處理(例如,數(shù)據(jù)大小節(jié)制),且使用一個或多個因子和閾值的不同組,用于另一節(jié)制處理(例如,使用節(jié)制)。這些組可以重疊或相互不包括。類似地,為讀取的數(shù)據(jù)和寫入的數(shù)據(jù),可以使用因子和閾值的不同組。技術效果和益處包括能夠使用存儲器系統(tǒng)中的高速緩存存儲器的閃存器件,同時支持閃存器件的期望的有用的壽命,而不使得閃存器件變成存儲器系統(tǒng)的瓶頸。這可能導致存儲器系統(tǒng)吞吐量的增加。在此使用的技術是僅用于描述具體實施例的目的,且不意圖限制該發(fā)明。如在此使用的,單數(shù)形式〃 一個",〃 一 〃和〃該〃意圖也包括復數(shù)形式,除非上下文另外清楚地指出。還將理解,術語〃包括〃和/或〃包含〃當在該說明書中使用時指定所陳述的特征、整數(shù)、步驟、操作、元件和/或組件的出現(xiàn),且不排除除了一個或多個其他特征、整數(shù)、步驟、操 作、元件、組件和/或其組的出現(xiàn)或添加。在以下權利要求中的所有部件或步驟加上功能元件的等同物意圖包括用于接合如所具體要求保護的其他元素進行該功能的任何結構、材料或動作。本發(fā)明的描述僅為了圖示和描述的目的,但不意圖窮舉或限制本發(fā)明為所公開的精確的形式。在不脫離本發(fā)明的范圍和精神的情況下,本領域技術人員將知道許多修改和變化。選擇并描述該實施例以便最佳地說明本發(fā)明的原理和其實際的應用,以使得本領域技術人員能夠理解具有適合于所構思的具體用途的各種修改的各種實施例的本發(fā)明。另外,如本領域技術人員將知道的,本發(fā)明的方面可以被實施為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的方面可以采取全部硬件實施例、全部軟件實施例(包括固件、駐留軟件、微代碼等)、或組合通常都可以被稱為〃電路"、〃模塊〃或〃系統(tǒng)〃的軟件和硬件方面的實施例的形式。另外,本發(fā)明的方面可以采取具有其上實現(xiàn)的計算機可讀程序代碼的一個或多個計算機可讀介質(zhì)中實施的計算機程序產(chǎn)品的形式??梢允褂靡粋€或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)可以是例如、但不限于電、磁、光、電磁、紅外或半導體系統(tǒng)、裝置或設備,或前述的任一適當組合。計算機可讀存儲介質(zhì)的更具體例子(非窮舉列表)將包括以下具有一條或多條線的電連接、便攜式計算機磁碟、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式光盤只讀存儲器(CD-ROM)、光存儲設備、磁存儲設備、或前述的任一適當組合。在本文檔的上下文中,計算機可讀存儲介質(zhì)可以是可以包含或存儲由或結合指令執(zhí)行系統(tǒng)、裝置或設備使用的程序的任意有形介質(zhì)。計算機可讀信號介質(zhì)可以包括具有在基帶中或作為載波的一部分的其中實現(xiàn)的計算機可讀程序代碼的傳播的數(shù)據(jù)信號。這種傳播信號可以采用包括、但不限于電磁、光的各種形式的任一或其任意適當?shù)慕M合。計算機可讀信號介質(zhì)可以是不是計算機可讀存儲介質(zhì)且可以通信、傳播或傳輸由或結合指令執(zhí)行系統(tǒng)、裝置或設備使用的程序的任何計算機可讀介質(zhì)??梢允褂萌魏芜m當?shù)慕橘|(zhì)、包括但不限于無線、有線、光纖電纜、RF等或前述的任一適當組合來傳輸計算機可讀介質(zhì)上實現(xiàn)的程序代碼??梢砸砸粋€或多個編程語言的任意組合,包括諸如Java,Smalltalk, C++等的面向?qū)ο蟮木幊陶Z言、以及諸如“C”編程語言或類似編程語言的傳統(tǒng)過程編程語言,來撰寫用于進行本發(fā)明的方面的操作的計算機程序代碼。程序代碼可以全部在用戶的計算機上,部分在用戶的計算機上,作為單獨的軟件包,部分在用戶的計算機上且部分在遠程計算機上,或全部在遠程計算機或服務器上執(zhí)行。在稍后的情形下,遠程計算機可以通過任何類型的網(wǎng)絡、包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)而被連接到用戶的計算機,或可以(例如,使用因特網(wǎng)服務提供商通過因特網(wǎng))對外部計算機進行該連接。以下參考根據(jù)本發(fā)明的實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖例示和/或方框圖來描述本發(fā)明的方面。將理解,流程圖例示和/或方框圖的每個塊和在流程圖例示和/或方框圖中的塊的組合可以由計算機程序指令來實現(xiàn)??梢韵蛲ㄓ糜嬎銠C、專用計算機或其他可編程數(shù)據(jù)處理裝置的處理器提供這些計算機程序指令來產(chǎn)生機器,以便經(jīng)由計算機或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令創(chuàng)建用于實現(xiàn)在流程圖和/或方框圖的一個塊或多個塊中指定的功能/動作的部件。還可以在可以指示計算機、其他可編程數(shù)據(jù)處理裝置或其他設備來以特定方式運作的計算機可讀介質(zhì)中存儲這些計算機程序指令,以便在計算機可讀介質(zhì)中存儲的指令產(chǎn)生包括實現(xiàn)在流程圖和/或方框圖的一個塊或多個塊中指定的功能/動作的指令的制品。 該計算機程序指令還可以被加載到計算機、其他可編程數(shù)據(jù)處理裝置或其他設備上,來使得在計算機、其他可編程裝置或其他設備上進行的一系列可操作步驟產(chǎn)生計算機實現(xiàn)的處理,以便在計算機或其他可編程裝置上執(zhí)行的指令提供用于實現(xiàn)在流程圖和/或方框圖的一個塊或多個塊中指定的功能/動作的處理。在圖中的流程圖和方框示根據(jù)本發(fā)明的各種實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能的實施方式的架構、功能和操作。在這點上,在流程圖或方框圖中的每個塊可以呈現(xiàn)模塊、片段、或代碼的部分,其包括用于實現(xiàn)指定的邏輯功能的一個或多個可執(zhí)行指令。也應該注意,在一些替換的實施方式中,在塊中指示的功能可以以不是在圖中標示的順序來出現(xiàn)。例如,連續(xù)示出的兩個塊可以取決于所涉及的功能而實際上被實質(zhì)上同時執(zhí)行,或這些塊可以有時以相反順序來執(zhí)行。將注意,方框圖和/或流程圖例示的每個塊和在方框圖和/或流程圖例示中的塊的組合可以由進行指定功能或動作的專用基于硬件的系統(tǒng)或?qū)S糜布陀嬎銠C指令的組合來實現(xiàn)。
權利要求
1.一種方法,包括 節(jié)制對閃存器件的訪問,該閃存器件是包括閃存器件和第二存儲器器件的存儲器系統(tǒng)的一部分,所述節(jié)制通過閃存器件外部的邏輯進行,所述節(jié)制包括 響應于閃存器件的估計的剩余壽命,計算節(jié)制因子; 確定該節(jié)制因子是否超出閾值; 響應于確定該節(jié)制因子不超出該閾值,向閃存器件寫入數(shù)據(jù);以及 響應于確定該節(jié)制因子超出該閾值,向第二存儲器器件寫入數(shù)據(jù)。
2.根據(jù)權利要求I的方法,其中,所述計算節(jié)制因子進一步響應于該數(shù)據(jù)的特征。
3.根據(jù)權利要求2的方法,其中,所述特征是該數(shù)據(jù)的大小。
4.根據(jù)權利要求I的方法,其中,所述計算節(jié)制因子進一步響應于所述閃存器件的估計的最大吞吐量。
5.根據(jù)權利要求I的方法,其中,所述閃存器件包括高速緩存存儲器。
6.根據(jù)權利要求I的方法,其中,所述第二存儲器器件是硬盤驅(qū)動器。
7.一種系統(tǒng),包括 存儲器,包括閃存器件和第二存儲器器件;以及 耦合于所述閃存器件的存儲器控制器,所述存儲器控制器被配置以 響應于所述閃存器件的估計的剩余壽命,計算節(jié)制因子; 確定該節(jié)制因子是否超出閾值; 響應于確定該節(jié)制因子不超出該閾值,向閃存器件寫入數(shù)據(jù);以及 響應于確定該節(jié)制因子超出該閾值,向第二存儲器器件寫入數(shù)據(jù)。
8.根據(jù)權利要求7的系統(tǒng),其中,所述計算節(jié)制因子進一步響應于該數(shù)據(jù)的特征。
9.根據(jù)權利要求7的系統(tǒng),其中,所述計算節(jié)制因子進一步響應于所述閃存器件的估計的最大吞吐量。
10.根據(jù)權利要求7的系統(tǒng),其中,所述閃存器件包括高速緩存存儲器。
11.根據(jù)權利要求7的系統(tǒng),其中,所述第二存儲器器件包括硬盤驅(qū)動器。
12.根據(jù)權利要求7的系統(tǒng),其中,所述特征是該數(shù)據(jù)的大小。
13.—種方法,包括 節(jié)制對閃存器件的訪問,該閃存器件是包括閃存器件和第二存儲器器件的存儲器系統(tǒng)的一部分,所述節(jié)制通過閃存器件外部的邏輯進行,所述節(jié)制包括 響應于閃存器件的估計的剩余壽命,計算壽命節(jié)制因子; 響應于閃存器件的估計的最大吞吐量,計算吞吐量節(jié)制因子; 響應于所述壽命節(jié)制因子和所述吞吐量節(jié)制因子來計算最大節(jié)制因子; 確定該最大節(jié)制因子是否超出閾值;以及 響應于確定所述最大節(jié)制因子超出所述閾值,進行數(shù)據(jù)大小節(jié)制、預取窗口大小節(jié)制和使用節(jié)制中的至少一個;以及 響應于所述節(jié)制,向所述閃存器件和所述第二存儲器器件中的至少一個寫數(shù)據(jù)。
14.根據(jù)權利要求13的方法,其中,所述閃存器件包括高速緩存存儲器,且所述第二存儲器器件包括硬盤驅(qū)動器。
15.根據(jù)權利要求13的方法,其中,所述進行數(shù)據(jù)大小節(jié)制響應于最大節(jié)制因子和數(shù)據(jù)的大小,進行數(shù)據(jù)大小節(jié)制在數(shù)據(jù)大小超出所選大小時使得寫數(shù)據(jù)指向第二存儲器器件,其中,所述進行數(shù)據(jù)大小節(jié)制包括響應于最大節(jié)制因子來計算所述所選大小。
16.根據(jù)權利要求13的方法,其中,所述進行預取窗口大小節(jié)制響應于最大節(jié)制因子,且包括當向閃存器件寫數(shù)據(jù)時設置預取窗口的大小。
17.根據(jù)權利要求13的方法,其中,所述進行使用節(jié)制包括進行要寫到閃存器件的接收數(shù)據(jù)的小部分的隨機選擇,所述小部分響應于所述最大節(jié)制因子。
18.—種系統(tǒng),包括 被配置用于節(jié)制對閃存器件訪問的裝置,該閃存器件是包括閃存器件和第二存儲器器件的存儲器系統(tǒng)的一部分,所述節(jié)制通過閃存器件外部的邏輯進行,所述節(jié)制包括 響應于閃存器件的估計的剩余壽命,計算壽命節(jié)制因子; 響應于閃存器件的估計的最大吞吐量,計算吞吐量節(jié)制因子; 響應于所述壽命節(jié)制因子和所述吞吐量節(jié)制因子來計算最大節(jié)制因子; 確定該最大節(jié)制因子是否超出閾值;以及 響應于確定所述最大節(jié)制因子超出所述閾值,進行數(shù)據(jù)大小節(jié)制、預取窗口大小節(jié)制和使用節(jié)制中的至少一個;以及 被配置用于響應于所述節(jié)制,向所述閃存器件和所述第二存儲器器件中的至少一個寫數(shù)據(jù)的裝置。
19.根據(jù)權利要求18的系統(tǒng),其中 所述進行數(shù)據(jù)大小節(jié)制響應于最大節(jié)制因子和數(shù)據(jù)的大小,進行數(shù)據(jù)大小節(jié)制在數(shù)據(jù)大小超出所選大小時使得寫數(shù)據(jù)指向第二存儲器器件,其中,所述進行數(shù)據(jù)大小節(jié)制包括響應于最大節(jié)制因子來計算所述所選大小。
所述進行預取窗口大小節(jié)制響應于最大節(jié)制因子,且包括當向閃存器件寫數(shù)據(jù)時設置預取窗口的大?。灰约? 所述進行使用節(jié)制包括進行要寫到閃存器件的接收數(shù)據(jù)的小部分的隨機選擇,所述小部分響應于所述最大節(jié)制因子。
全文摘要
本發(fā)明的實施例涉及節(jié)制對閃存器件的訪問。該閃存器件是包括該閃存器件和第二存儲器器件的存儲系統(tǒng)的部分。所述節(jié)制由閃存器件外部的邏輯進行,且包括響應于閃存器件的估計的剩余壽命來計算節(jié)制因子。確定該節(jié)制因子是否超出閾值。響應于確定該節(jié)制因子不超出該閾值,向閃存器件寫入數(shù)據(jù)。響應于確定該節(jié)制因子超出該閾值,向第二存儲器器件寫入數(shù)據(jù)。
文檔編號G06F13/16GK102841868SQ201210157368
公開日2012年12月26日 申請日期2012年5月18日 優(yōu)先權日2011年5月20日
發(fā)明者W.A.貝洛米尼, B.S.吉爾, J.L.哈夫納, S.R.赫茲勒, A.尼特贊, E.羅特姆, V.G.納亞, E.施穆里, D.F.史密斯 申請人:國際商業(yè)機器公司