專利名稱:具有電力恢復(fù)后重新加載能力的高速緩存的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)高速緩沖存儲器,具體涉及用于在將電力從高速緩沖存儲器中移除并且接著對高速緩沖存儲器恢復(fù)電力后重新加載高速緩沖存儲器的方法和裝置。
背景技術(shù):
在計算機(jī)中,高速緩存是與保存近期訪問的數(shù)據(jù)的處理器的主存儲器分開的小型快速存儲器。使用高速緩存加快了對相同數(shù)據(jù)的后續(xù)請求的訪問時間。當(dāng)在正被搜索的高速緩存中找到請求數(shù)據(jù)或存儲器位置時,發(fā)生“高速緩存命中”。當(dāng)未找到請求數(shù)據(jù)或存儲器位置時,應(yīng)當(dāng)認(rèn)為“高速緩存缺失”,并且在高速緩存中該數(shù)據(jù)可能被分配新條目。如果高速緩存已滿,那么許多策略之一可以用于排除現(xiàn)有條目。高速緩存可以包括一個或多個標(biāo)簽存儲器和一個或多個數(shù)據(jù)存儲器。標(biāo)簽存儲器包括標(biāo)簽。一般地,標(biāo)簽可以用于唯一地識別經(jīng)高速緩存的數(shù)據(jù)片并且判定經(jīng)高速緩存的數(shù)據(jù)是否可用來滿足進(jìn)入的請求。在一種實施方式中,標(biāo)簽可以包括經(jīng)高速緩存的數(shù)據(jù)的主存儲器位置的索引。在另一種實施方式中,在轉(zhuǎn)譯后援緩沖器(TLB)型高速緩存中,標(biāo)簽可能不會直接為主存儲器位置編索引,但是可能由虛擬地址和與特定的主存儲器地址沒有直接關(guān)系的其它基于請求的信息組成。數(shù)據(jù)存儲器包括來自主存儲器的數(shù)據(jù)的副本。數(shù)據(jù)存儲器還可以包括由處理器生成且尚未寫出到主存儲器(例如,具有回寫高速緩存)的數(shù)據(jù)。這類數(shù)據(jù)必須在可將電力從高速緩存中移除前寫出到存儲器。為了減小計算機(jī)中的電力消耗,組件(包括內(nèi)部集成組件)可以在閑置周期期間置于低電力狀態(tài)或完全斷電。對內(nèi)置有易失性存儲元件的高速緩沖存儲器斷電會引起狀態(tài)喪失。一旦電力恢復(fù),正常的聞速緩存訪問將無法命中,因為聞速緩存是空的,從而需要從較高延時(和可能較低帶寬)的永久后備存儲器提取數(shù)據(jù),從而導(dǎo)致較低性能。這些訪問逐漸重新填入高速緩存,且如果后續(xù)訪問開始命中這些重新填入的條目,那么性能逐漸恢復(fù)到其名義水平。某些現(xiàn)有技術(shù)允許高速緩存對其內(nèi)容的一小部分(例如,標(biāo)簽存儲器和數(shù)據(jù)存儲器兩者)同時斷電。在一項技術(shù)中,可通過將電力提供給高速緩存的僅一部分而減小電力消耗,同時維持狀態(tài)。該特定解決方案在維持某些標(biāo)簽存儲器和對應(yīng)數(shù)據(jù)存儲器的狀態(tài)時消耗電力。其它技術(shù)減小高速緩存的時鐘頻率以降低動態(tài)電力消耗。靜態(tài)電力消耗可以通過對高速緩存的晶體管的操作參數(shù)的對應(yīng)調(diào)整(電壓減小、偏壓變化等)而減小?,F(xiàn)有技術(shù)導(dǎo)致在電力恢復(fù)后犧牲性能以減小電力消耗和犧牲最佳電力消耗以將電力保留在數(shù)據(jù)存儲器的子集中以避免電力恢復(fù)后性能下降之間的選擇。因此,存在對高速緩存大部分或全部斷電而不會在高速緩存通電后犧牲性能的需要。
發(fā)明內(nèi)容
一種用于重新填充高速緩存的方法開始于將所述高速緩存的內(nèi)容的至少一部分存儲在與所述高速緩存分開的位置中。將電力從所述高速緩存中移除并且一段時間之后電力恢復(fù)。在已對所述高速緩存恢復(fù)電力后,用與所述高速緩存分開存儲的所述高速緩存的所述內(nèi)容的所述部分重新填充所述高速緩存。一種用于重新填充高速緩存的方法開始于將電力從所述高速緩存中移除并且一段時間之后對所述高速緩存恢復(fù)電力。用信號通知高速緩存客戶端已對所述高速緩存恢復(fù)電力并且所述高速緩存已喪失狀態(tài)。所述客戶端將預(yù)取命令發(fā)放到所述高速緩存,所述高速緩存使用所述預(yù)取命令將數(shù)據(jù)加載到所述高速緩存中。一種用于重新填充高速緩存的裝置包括高速緩存、存儲器和存儲器控制器。所述高速緩存被配置來存儲數(shù)據(jù)和與所述數(shù)據(jù)相關(guān)的標(biāo)簽。所述存儲器與所述高速緩存分開定位并且被配置來在將電力從所述高速緩存中移除時存儲來自所述高速緩存的標(biāo)簽。所述存儲器控制器被配置來在對所述高速緩存恢復(fù)電力時將標(biāo)簽從所述高速緩存寫入到所述存儲器。一種計算機(jī)可讀存儲介質(zhì)存儲供通用計算機(jī)執(zhí)行以重新填充高速緩存的指令集,所述指令集包括存儲代碼段、移除代碼段、恢復(fù)代碼段和重新填充代碼段。所述存儲代碼段用于將所述高速緩存的內(nèi)容的至少一部分存儲在與所述高速緩存分開的位置中。所述移除代碼段用于將電力從所述高速緩存中移除。所述恢復(fù)代碼段用于對所述高速緩存恢復(fù)電力。所述重新填充代碼段用于用與所述高速緩存分開存儲的所述高速緩存的所述內(nèi)容的所述部分重新填充所述高速緩存。
可以從舉例所給定的下文描述中認(rèn)知到并且結(jié)合附圖對本發(fā)明有一個更詳細(xì)的了解。圖I是用于在電力恢復(fù)后重新加載高速緩存的存儲器系統(tǒng)的第一實施方案的方框圖; 圖2是用于在電力恢復(fù)后重新加載高速緩存的第一種方法的流程圖;圖3是用于在電力恢復(fù)后重新加載高速緩存的存儲器系統(tǒng)的第二實施方案的方框圖;圖4是用于在電力恢復(fù)后重新加載高速緩存的第二種方法的流程圖;圖5是用于在電力恢復(fù)后重新加載高速緩存的存儲器系統(tǒng)的第三實施方案的方框圖;圖6是用于在電力恢復(fù)后重新加載高速緩存的第三種方法的流程圖;圖7是用于在電力恢復(fù)后重新加載高速緩存的存儲器系統(tǒng)的第四實施方案的方框圖;圖8是用于在電力恢復(fù)后重新加載高速緩存的第四種方法的流程圖;圖9是用于在電力恢復(fù)后重新加載高速緩存的存儲器系統(tǒng)的第五實施方案的方框圖10是用于在電力恢復(fù)后重新加載高速緩存的第五種方法的流程圖;圖11是用于在電力恢復(fù)后重 新加載高速緩存的存儲器系統(tǒng)的第六實施方案的方框圖;圖12是用于在電力恢復(fù)后重新加載高速緩存的第六種方法的流程圖;圖13是用于在電力恢復(fù)后重新加載高速緩存的存儲器系統(tǒng)的第七實施方案的方框圖;圖14是用于在電力恢復(fù)后重新加載高速緩存的第七種方法的流程圖;圖15是用于在電力恢復(fù)后重新加載高速緩存的存儲器系統(tǒng)的第八實施方案的方框圖;和圖16是用于在電力恢復(fù)后重新加載高速緩存的第八種方法的流程圖。
具體實施例方式下文描述對普通高速緩存的增強(qiáng)。通常,當(dāng)高速緩存斷電時,所述高速緩存需要花特定量的時間來重新填入數(shù)據(jù),且因此初始高速緩存訪問慢于在所述高速緩存斷電前。在電力恢復(fù)后,空的高速緩存可能隨著進(jìn)入的請求錯過所述高速緩存而逐漸被重新填入,其導(dǎo)致新數(shù)據(jù)填入所述高速緩存。重新填入過程可能受所述進(jìn)入的請求的速率限制,所述速率可能由于高速緩存缺失導(dǎo)致的較舊請求處理緩慢而較慢。數(shù)據(jù)可以存儲在會斷電的高速緩存外面,以便在電力恢復(fù)后并且在用戶再次從所述高速緩存請求該數(shù)據(jù)前可以對所述高速緩存恢復(fù)相同數(shù)據(jù)。因此,在對高速緩存通電后,性能退化減輕,因為可以在用戶對所述高速緩存請求數(shù)據(jù)片前恢復(fù)所述數(shù)據(jù)。重新填入過程可以與正常處理器請求重疊并且不必阻止所述正常處理器請求直到所述重新填入過程完成為止。電源門控可以用來減小電力消耗并且低性能周期可以通過在電力恢復(fù)后不久將內(nèi)容加載到高速緩存中而最小化。高速緩存還可以是完全電源門控的,從而消除所有動態(tài)電力并且減小通過電源門泄露的靜態(tài)電力。在其它實施方案中,所有數(shù)據(jù)存儲器可以斷電,從而進(jìn)一步最小化電力消耗。一種機(jī)制可以添加到高速緩存以生成,然后保存、留存或存儲“恢復(fù)標(biāo)簽”。恢復(fù)標(biāo)簽包含足夠信息以在電力恢復(fù)事件后定位和加載來自高速緩存的后備存儲存儲器的數(shù)據(jù)?;謴?fù)標(biāo)簽本質(zhì)上與預(yù)取請求相似之處在于預(yù)期高速緩存在不久的將來會需要數(shù)據(jù)來服務(wù)一個或多個請求而預(yù)取所述數(shù)據(jù)。在對高速緩存部分或全部斷電以節(jié)省電力前,將恢復(fù)標(biāo)簽置于永久存儲位置中。當(dāng)電力恢復(fù)時,恢復(fù)標(biāo)簽用來將數(shù)據(jù)從高速緩存的后備存儲器加載到所述高速緩存中。該數(shù)據(jù)加載與由正常高速緩存請求所觸發(fā)的任何加載分開,且通常發(fā)生在所述任何加載前。高速緩存條目的部分或全部可以以這種方式加載。加載的數(shù)據(jù)可以是在斷電前曾在高速緩存中的相同數(shù)據(jù)或可以是預(yù)測在電力恢復(fù)后有用的任何數(shù)據(jù)。在高速緩存斷電前,可以使用存儲在所述高速緩存中的信息來構(gòu)造恢復(fù)標(biāo)簽。這是基于在斷電周期后將需要現(xiàn)有高速緩存數(shù)據(jù)的假設(shè)?;謴?fù)標(biāo)簽可以用來重新加載曾存儲在高速緩存中的準(zhǔn)確數(shù)據(jù),用來加載與獲得曾存儲在所述高速緩存中的數(shù)據(jù)相關(guān)的有用的中間信息,或用來加載預(yù)期在恢復(fù)電力后有用的其它數(shù)據(jù)。在這種情況下,可以根據(jù)高速緩存條目的標(biāo)簽內(nèi)容(通常是地址的一部分,但是可能具有額外屬性)構(gòu)造所述條目的恢復(fù)標(biāo)簽。還可能需要額外信息來構(gòu)造恢復(fù)標(biāo)簽,例如高速緩存內(nèi)的高速緩存條目的邏輯地址。還可以由知道或預(yù)期在高速緩存重新通電后不久將發(fā)生的訪問類型的軟件構(gòu)造恢復(fù)標(biāo)簽。假設(shè)高速緩存具有保存所述高速緩存的數(shù)據(jù)內(nèi)容的副本的后備存儲存儲器。如果高速緩存存儲的“臟的”寫入數(shù)據(jù)比后備存儲器中的數(shù)據(jù)更新,那么所述臟數(shù)據(jù)在將電力從所述高速緩存移除前被寫出到所述后備存儲存儲器。本文所描述的實施方案適用于許多類型的硬件高速緩存,包括但不限于指令高速緩存、數(shù)據(jù)高速緩存、轉(zhuǎn)譯后援緩沖器(TLB)、I/0TLB、紋理和頂點的圖形數(shù)據(jù)高速緩存等。可以使用多種機(jī)制來生成、保存或留存然后加載高速緩存的標(biāo)簽。若干實施方案包括一種用于在斷電事件前或在電力已恢復(fù)后生成恢復(fù)標(biāo)簽的機(jī)制。此外,若干實施方案具有一種在電力恢復(fù)后接受恢復(fù)標(biāo)簽并且使用所述恢復(fù)標(biāo)簽將數(shù)據(jù)從高速緩存的后備存儲器加載到所述高速緩存中的通電重新加載引擎。通電重新加載引擎可以與現(xiàn)有邏輯(例 如,預(yù)取或加載引擎)組合或共享。設(shè)計變化下文例示性實施方案用于指示和說明目的。所屬領(lǐng)域技術(shù)人員將認(rèn)識到這些實施方案的變化是可能的。每個實施方案均具有自身優(yōu)點以及不同的電力、性能和復(fù)雜性權(quán)衡。第一實施方案在第一實施方案中,如圖I和圖2所示,高速緩存可以將標(biāo)簽信息和數(shù)據(jù)信息存儲在單獨存儲器中。高速緩存可以為標(biāo)簽存儲器的子集保留電力,但允許數(shù)據(jù)存儲器和剩余標(biāo)簽存儲器斷電。在本實施方案中,在電力恢復(fù)后通過使用留存的高速緩存標(biāo)簽來生成恢復(fù)標(biāo)簽?;謴?fù)標(biāo)簽用來將數(shù)據(jù)內(nèi)容從高速緩存的后備存儲器加載到所述高速緩存中。圖I示出了存儲器系統(tǒng)100的一部分,其包括高速緩存102、高速緩存控制器104、存儲器106和存儲器控制器108。高速緩存102包括第一標(biāo)簽存儲池(標(biāo)簽存儲池I) 110、第二標(biāo)簽存儲池(標(biāo)簽存儲池2) 112、第一數(shù)據(jù)存儲池(數(shù)據(jù)存儲池I) 114和第二數(shù)據(jù)存儲池(數(shù)據(jù)存儲池2) 116。高速緩存控制器104包括通電重新加載引擎118。在對高速緩存斷電前不需要特殊準(zhǔn)備。標(biāo)簽存儲池I 110保持其狀態(tài)并且可以保持通電。標(biāo)簽存儲池2 112、數(shù)據(jù)存儲池I 114和數(shù)據(jù)存儲池2 116斷電(如圖I中陰影部分所示)。在電力恢復(fù)后,高速緩存控制器104中的通電重新加載引擎118從標(biāo)簽存儲池I110讀取標(biāo)簽并且將所述標(biāo)簽用作恢復(fù)標(biāo)簽?;謴?fù)標(biāo)簽用來從存儲器106提取數(shù)據(jù),并且所述提取的數(shù)據(jù)被寫入到數(shù)據(jù)存儲池I 114。圖2示出了用于保留標(biāo)簽存儲器的子集中的電力同時允許數(shù)據(jù)存儲器和其它標(biāo)簽存儲器斷電的方法200的流程圖。方法200涉及創(chuàng)建恢復(fù)標(biāo)簽并將所述恢復(fù)標(biāo)簽存儲在保持通電的高速緩存的一部分中,這通過保持標(biāo)簽存儲器的子集中的狀態(tài)(步驟202)來完成。剩余標(biāo)簽存儲器連同所有數(shù)據(jù)存儲器可以斷電(步驟204)。標(biāo)簽存儲器和數(shù)據(jù)存儲器將保持?jǐn)嚯娭钡浇邮盏酵娛录橹?。?dāng)接收到通電事件時,任何斷電高速緩存可以通電(步驟206)。在通電后,讀取恢復(fù)標(biāo)簽(步驟208)。可以使用恢復(fù)標(biāo)簽從存儲器提取數(shù)據(jù)(步驟210)并且所述提取的數(shù)據(jù)可以寫回到數(shù)據(jù)存儲器中(步驟212)。在通電后使用恢復(fù)標(biāo)簽以在用戶從高速緩存請求相似數(shù)據(jù)前將數(shù)據(jù)加載回到所述高速緩存中。
第一實施方案涉及電力、性能與復(fù)雜性之間的權(quán)衡。節(jié)省與高速緩存存儲器相關(guān)的絕大部分電力,但是仍需要少量電力來保持一個或多個標(biāo)簽存儲器的狀態(tài)。得到的性能取決于保持通電的存儲器的有用性。如果存儲近期使用的標(biāo)簽以及近期較少使用的標(biāo)簽的集合,那么性能可能較低。在包括將近期使用的標(biāo)簽優(yōu)先分配給保持通電的標(biāo)簽存儲器的一種實施方式中,性能可能較高。在另一種實施方式中,可以在移除電力前執(zhí)行高速緩存線路交換,使得將最近使用的標(biāo)簽轉(zhuǎn)移到保持通電的標(biāo)簽存儲器中。本實施方案的復(fù)雜程度相對低。除非實施上文所述的高速緩存線路交換邏輯,否則不需要在移除電力前將數(shù)據(jù)保存到替代位置。第二實施方案在第二實施方案中,如圖3和圖4所示,高速緩存可以根據(jù)所述高速緩存的標(biāo)簽生·成恢復(fù)標(biāo)簽信息。高速緩存可以在電力移除前將恢復(fù)標(biāo)簽寫入到(芯片上或芯片外的)永久存儲器的池中。該永久存儲器可能處于全面操作狀態(tài)或有保留的較低電力狀態(tài),例如保留了在高速緩存斷電時自我刷新的能力。在典型的個人計算機(jī)(PC)中,這可能是系統(tǒng)存儲器或單獨的專用永久存儲器的池。恢復(fù)標(biāo)簽或恢復(fù)標(biāo)簽組可以以其正常編碼存儲,或可以在寫入到永久存儲器前被壓縮以減小存儲器大小和電力需求。當(dāng)對高速緩存恢復(fù)電力時,恢復(fù)標(biāo)簽被讀回到所述高速緩存中并且用來將數(shù)據(jù)內(nèi)容從所述高速緩存的后備存儲器加載到所述高速緩存中。圖3示出了存儲器系統(tǒng)300的一部分,其包括高速緩存302、系統(tǒng)存儲器304、存儲器控制器306、內(nèi)部永久存儲存儲器308和處理引擎310。高速緩存302包含標(biāo)簽轉(zhuǎn)移引擎312、高速緩存存儲陣列314和通電重新加載引擎316。系統(tǒng)存儲器304包含高速緩存標(biāo)簽存儲器318。在斷電準(zhǔn)備中,由標(biāo)簽轉(zhuǎn)移引擎312從高速緩存存儲陣列314讀取標(biāo)簽以生成恢復(fù)標(biāo)簽。標(biāo)簽轉(zhuǎn)移引擎312將恢復(fù)標(biāo)簽寫入到高速緩存標(biāo)簽存儲器318 (通過存儲器控制器306)或內(nèi)部永久存儲存儲器308??蛇x地,標(biāo)簽轉(zhuǎn)移引擎312可以壓縮恢復(fù)標(biāo)簽。先前步驟可以可選地重疊,并且可在仍寫出先前生成的恢復(fù)標(biāo)簽時讀取高速緩存標(biāo)簽。在電力恢復(fù)后,通電重新加載弓丨擎316從高速緩存標(biāo)簽存儲器318或內(nèi)部永久存儲存儲器308讀取恢復(fù)標(biāo)簽。通電重新加載引擎316使用恢復(fù)標(biāo)簽(通常是地址)來請求高速緩存從系統(tǒng)存儲器304提取數(shù)據(jù)。高速緩存302提取所請求的數(shù)據(jù)并將其存儲在高速緩存存儲陣列314中。先前的三個步驟可以重疊,這意味著一旦讀取了恢復(fù)標(biāo)簽,即可在讀取其它恢復(fù)標(biāo)簽前或在讀取其它恢復(fù)標(biāo)簽時從系統(tǒng)存儲器304請求與該恢復(fù)標(biāo)簽相關(guān)的數(shù)據(jù)并將所述數(shù)據(jù)存儲在高速緩存存儲陣列314中。圖4示出了用于在對高速緩存斷電前將恢復(fù)標(biāo)簽寫入到永久存儲器的池的方法400的流程圖。在對高速緩存斷電的準(zhǔn)備中,從所述高速緩存讀取標(biāo)簽以生成恢復(fù)標(biāo)簽(步驟402)。然后,可以將恢復(fù)標(biāo)簽寫入到永久存儲器(步驟404)。步驟402和步驟404可以重疊,使得在將先前生成的恢復(fù)標(biāo)簽寫入到永久存儲器(步驟404)時可以讀取高速緩存標(biāo)簽(步驟402)??蛇x地,可以在將恢復(fù)標(biāo)簽寫入到永久存儲器(步驟404)前壓縮所述恢復(fù)標(biāo)簽(步驟406)。然后,高速緩存可以斷電(步驟408)。所述高速緩存將保持?jǐn)嚯娭钡浇邮盏酵娛录橹埂.?dāng)接收到通電事件時,高速緩存通電(步驟410)并且可以從永久存儲器讀取恢復(fù)標(biāo)簽(步驟412)??梢允褂盟龌謴?fù)標(biāo)簽從后備存儲器請求數(shù)據(jù)(步驟414),并且可以提取所述請求的數(shù)據(jù)并將其存儲在高速緩存中(步驟416)。步驟412、414和416可以重疊,使得一旦讀取了恢復(fù)標(biāo)簽,即可在讀取其它恢復(fù)標(biāo)簽前或在讀取其它恢復(fù)標(biāo)簽時從后備存儲器請求與所述恢復(fù)標(biāo)簽相 關(guān)的數(shù)據(jù)并將所述數(shù)據(jù)存儲在所述高速緩存中。第二實施方案還表明電力、性能和復(fù)雜性權(quán)衡。如果恢復(fù)標(biāo)簽存儲在系統(tǒng)存儲器中,那么留存最大電力,因為所述系統(tǒng)存儲器已需要電力來保持其狀態(tài)。如果恢復(fù)標(biāo)簽存儲在單獨的芯片上的存儲器中,那么消耗相對少量的額外電力。第二實施方案的性能是高的,因為該實施方式可以優(yōu)先選擇存儲所有標(biāo)簽或可能是標(biāo)簽的子集,該子集包括最近使用的標(biāo)簽。復(fù)雜程度是適中的,因為需要在系統(tǒng)內(nèi)生成和移動恢復(fù)標(biāo)簽。第三實施方案在第三實施方案中,如圖5和圖6所示,高速緩存可以生成恢復(fù)標(biāo)簽。所述恢復(fù)標(biāo)簽可以在高速緩存斷電前被寫入到在系統(tǒng)內(nèi)某處的非易失性存儲器。當(dāng)所述高速緩存斷電時,該非易失性存儲器可以保持通電或斷電?;謴?fù)標(biāo)簽或恢復(fù)標(biāo)簽組可以以其正常編碼存儲,或可以在寫入到非易失性存儲器前被壓縮。壓縮恢復(fù)標(biāo)簽可以減小存儲器和電力需求。當(dāng)高速緩存通電時,包含恢復(fù)標(biāo)簽的非易失性存儲器通電。非易失性存儲器的內(nèi)容被讀回到高速緩存中并且用來將數(shù)據(jù)內(nèi)容從所述高速緩存的后備存儲器加載到所述高速緩存中。圖5示出了存儲器系統(tǒng)500的一部分,其包括高速緩存502、非易失性存儲器504、系統(tǒng)存儲器506、存儲器控制器508和處理引擎510。高速緩存502包含標(biāo)簽轉(zhuǎn)移引擎512、高速緩存存儲陣列514和通電重新加載引擎516。在斷電準(zhǔn)備中,標(biāo)簽轉(zhuǎn)移引擎512從高速緩存存儲陣列514讀取標(biāo)簽。標(biāo)簽轉(zhuǎn)移引擎512生成恢復(fù)標(biāo)簽并將其寫入到非易失性存儲器504??蛇x地,標(biāo)簽轉(zhuǎn)移引擎512可以壓縮恢復(fù)標(biāo)簽。先前的步驟可以可選地重疊,使得可在仍寫出先前生成的恢復(fù)標(biāo)簽時讀取高速緩存標(biāo)簽。在存儲所需標(biāo)簽后,高速緩存502可以斷電??蛇x地,非易失性存儲器504可以斷電以節(jié)省額外電力。在電力恢復(fù)后,如果需要,那么高速緩存502和非易失性存儲器504可以通電。通電重新加載引擎516從非易失性存儲器504讀取恢復(fù)標(biāo)簽。通電重新加載引擎516使用恢復(fù)標(biāo)簽(通常是地址)來從系統(tǒng)存儲器506請求高速緩存數(shù)據(jù)。高速緩存502提取所請求的數(shù)據(jù)并將其存儲在高速緩存存儲陣列514中。先前的三個步驟可以重疊,使得一旦讀取了恢復(fù)標(biāo)簽,即可在讀取其它恢復(fù)標(biāo)簽前或在讀取其它恢復(fù)標(biāo)簽時從系統(tǒng)存儲器506請求與該恢復(fù)標(biāo)簽相關(guān)的數(shù)據(jù)并將所述數(shù)據(jù)存儲在高速緩存存儲陣列514中。圖6示出了用于在對高速緩存斷電前將恢復(fù)標(biāo)簽寫入到非易失性存儲器的方法600的流程圖。在斷電準(zhǔn)備中,可以從所述高速緩存讀取標(biāo)簽以生成恢復(fù)標(biāo)簽(步驟602)。然后,可以將所述恢復(fù)標(biāo)簽寫入到非易失性存儲器(步驟604)。步驟602和步驟604可以重疊,使得在將先前生成的恢復(fù)標(biāo)簽寫入到非易失性存儲器(步驟604)時可以讀取高速緩存標(biāo)簽(步驟602)??蛇x地,可以在將恢復(fù)標(biāo)簽寫入到非易失性存儲器(步驟604)前壓縮所述恢復(fù)標(biāo)簽(步驟606)。高速緩存和非易失性存儲器可以斷電(步驟608)。所述高速緩存將保持?jǐn)嚯娭钡浇邮盏酵娛录橹?。?dāng)接收到通電事件時,所述高速緩存和非易失性存儲器(如果斷電)可以通電(步驟610)。在通電后,可以從非易失性存儲器讀取恢復(fù)標(biāo)簽(步驟612)??梢允褂盟鎏崛〉幕謴?fù)標(biāo)簽從后備存儲器請求數(shù)據(jù)(步驟614),并且可以提取所述請求的數(shù)據(jù)并將其存儲在高速緩存存儲陣列中(步驟616)。步驟612、614和616可以重疊,使得一旦從非易失性存儲器讀取了恢復(fù)標(biāo)簽,即可在讀取其它恢復(fù)標(biāo)簽前或在讀取其它恢復(fù)標(biāo)簽時從后備存儲器請求與所述恢復(fù)標(biāo)簽相 ''' 關(guān)的數(shù)據(jù)并將所述數(shù)據(jù)存儲在高速緩存中。第三實施方案表明電力、性能和復(fù)雜性權(quán)衡。第三實施方案的非易失性存儲器節(jié)省的電力稍微少于第二實施方案的系統(tǒng)存儲器實施所節(jié)省的電力。但是,當(dāng)?shù)诙嵤┓桨笇为毜氖冀K接通的存儲器用于恢復(fù)標(biāo)簽時,第三實施方案可以節(jié)省的電力多于第二實施方案可以節(jié)省的電力。如果高速緩存斷電持續(xù)相對較長的時間,那么這就特別明顯。第三實施方案的性能是高的,因為所述實施方式可以優(yōu)先選擇存儲所有標(biāo)簽或可能是包括最近使用的標(biāo)簽的子集。最后,復(fù)雜程度是高的,因為第三實施方案需要集成非易失性存儲器。第四實施方案在第四實施方案中,如圖7和圖8所示,使用多級高速緩存設(shè)計。多級高速緩存用 來應(yīng)對高速緩存延時與命中率之間的權(quán)衡。小型高速緩存通常具有較短延時但具有較低命中率,而較大高速緩存通常具有較高命中率但具有較長延時。多級高速緩存通常會首先檢查較小的高速緩存,然后只有當(dāng)數(shù)據(jù)不是位于較小的高速緩存中時才繼續(xù)檢查較大的高速緩存。逐步地檢查更高級的高速緩存,直到檢查完所有高速緩存為止,然后檢查外部存儲器。在完全包容性的設(shè)計中,較小高速緩存中的所有數(shù)據(jù)也在較大高速緩存中。在排他性設(shè)計中,所有數(shù)據(jù)最多在高速緩存之一中。在半包容性設(shè)計中,來自較小的、較低級的高速緩存的某些數(shù)據(jù)也可以在較大的、較高級的高速緩存中。在第四實施方案中,較低高速緩存級別可以(例如,使用包容性或半包容性設(shè)計)復(fù)制較高高速緩存級別的內(nèi)容。本實施方案可以允許較高級高速緩存斷電同時較低級高速緩存保持通電。當(dāng)較高級高速緩存重新通電時,來自較低級高速緩存的內(nèi)容可以直接轉(zhuǎn)移回到所述較高級高速緩存中。這可能對性能有好處,因為較高級高速緩存通常較大并且由于容量問題而排除那些條目的可能性更低。圖7示出了存儲器系統(tǒng)700的一部分,其包括電源門控式較高級高速緩存(N級高速緩存)702、多個較低級高速緩存(N-M級高速緩存)704^701、存儲器706和存儲器控制器 708。在對N級高速緩存702斷電前不需要特殊準(zhǔn)備。N級高速緩存702斷電,同時N-M級高速緩存704-701的所有或子集保持通電。在電力恢復(fù)后,每個N-M級高速緩存704(70^生成標(biāo)簽和數(shù)據(jù)信息并將所述標(biāo)簽和數(shù)據(jù)信息發(fā)回到N級高速緩存702。N級高速緩存702將所述標(biāo)簽和數(shù)據(jù)信息寫入到其本地存儲存儲器中。圖8示出了用于使用多級高速緩存設(shè)計將數(shù)據(jù)從較低級高速緩存恢復(fù)到較高級高速緩存的方法800的流程圖。較高級高速緩存可以斷電(步驟802)。較低級高速緩存的子集可以保持通電(步驟804)。較高級高速緩存保持?jǐn)嚯娭钡浇邮盏酵娛录橹埂.?dāng)接收到通電事件時,較高級高速緩存通電(步驟806)。較低級高速緩存生成標(biāo)簽和數(shù)據(jù)信息并將所述標(biāo)簽和數(shù)據(jù)信息發(fā)回到較高級高速緩存(步驟808)。較高級高速緩存將標(biāo)簽信息和數(shù)據(jù)信息寫入到其本地存儲存儲器中(步驟810)。第四實施方案表明電力、性能和復(fù)雜性之間的權(quán)衡。第四實施方案提供高電力節(jié)省,因為整個較高級高速緩存可以斷電。但是,可預(yù)見到性能會相對較差,因為僅包含在較低級高速緩存中的數(shù)據(jù)被轉(zhuǎn)移到較高級高速緩存并且所述數(shù)據(jù)已存在于所述較低級高速緩存。當(dāng)來自較低級高速緩存的高速緩存線路由于容量問題而被排除并且再次需要先前轉(zhuǎn)移到較高級高速緩存的較舊線路時,預(yù)期有性能好處。預(yù)期復(fù)雜性適中。在包容性或半包容性高速緩存設(shè)計中,高速緩存線路通常不會從較低級高速緩存向上轉(zhuǎn)移到較高級高速緩存,因為所述高速緩存線路在排他性高速緩存設(shè)計中。因此,涉及包容性或半包容性設(shè)計的本實施方案可能需要添加新數(shù)據(jù)路徑,以便將高速緩存線路從較低級高速緩存移動到較高級高速緩存。第五實施方案在第五實施方案中,如圖9和圖10所示,使用多級高速緩存設(shè)計。較低高速緩存級別可以(例如,使用包容性或半包容性設(shè)計)復(fù)制較高高速緩存級別的內(nèi)容。本實施方案可以允許較高級高速緩存斷電同時較低級高速緩存保持通電。當(dāng)較高級高速緩存通電時,可以根據(jù)較低級高速緩存的內(nèi)容生成恢復(fù)標(biāo)簽。所述恢復(fù)標(biāo)簽可以用來將數(shù)據(jù)從后備存儲器加載到較高級高速緩存中。這在轉(zhuǎn)譯后援緩沖器(TLB)設(shè)計中特別有利,所述TLB是用于地址轉(zhuǎn)譯的高速緩存。在這種設(shè)計中,來自較低級高速緩存中的轉(zhuǎn)譯條目的恢復(fù)標(biāo)簽可·以允許較高級高速緩存除加載實際轉(zhuǎn)譯條目外還加載分層目錄信息。圖9示出了存儲器系統(tǒng)900的一部分,其包括電源門控式較高級高速緩存(N級高速緩存)902、多個較低級高速緩存(N-M級高速緩存)904^901、存儲器906和存儲器控制器908。N級高速緩存902包括通電重新加載引擎910。在對N級高速緩存902斷電前不需要特殊準(zhǔn)備。N級高速緩存902斷電,同時N-M級高速緩存904^901的所有或子集保持通電。在恢復(fù)電力后,每個N-M級高速緩存904^90^根據(jù)其本地高速緩存標(biāo)簽信息生成恢復(fù)標(biāo)簽。然后,N-M級高速緩存904^901根據(jù)所述生成的恢復(fù)標(biāo)簽將重新加載命令發(fā)放到N級高速緩存902。N級高速緩存902中的通電重新加載引擎910使用來自N-M級高速緩存904^901的重新加載命令從存儲器906請求數(shù)據(jù)。N級高速緩存902將重新加載的數(shù)據(jù)存儲在其高速緩存存儲存儲器中。在這最后兩個步驟中,如果N級高速緩存902必須遍歷多級分層數(shù)據(jù),那么其可以針對每個重新加載請求來請求、提取和存儲來自存儲器906的多個數(shù)據(jù)片。這種情況的實例是如果高速緩存是TLB并且必須在到達(dá)最后轉(zhuǎn)譯條目前遍歷多個目錄級別。以這種方式所提取的所有分層信息和目錄條目還可以連同最后轉(zhuǎn)譯存儲在N級高速緩存902中。這可以等效于保留為達(dá)到結(jié)果而所采取的步驟。圖10示出了用于使用多級高速緩存設(shè)計以根據(jù)較低級高速緩存的內(nèi)容生成恢復(fù)標(biāo)簽的方法1000的流程圖。較高級高速緩存可以斷電(步驟1002)。較低級高速緩存的子集可以保持通電(步驟1004)。較高級高速緩存保持?jǐn)嚯娭钡浇邮盏酵娛录橹?。?dāng)接收到通電事件時,較高級高速緩存通電(步驟1006)并且較低級高速緩存根據(jù)本地高速緩存標(biāo)簽信息生成恢復(fù)標(biāo)簽(步驟1008)。較低級高速緩存根據(jù)恢復(fù)標(biāo)簽將重新加載命令發(fā)放到較高級高速緩存(步驟1010)。較高級高速緩存使用重新加載命令從其后備存儲器請求數(shù)據(jù)(步驟1012)并將重新加載的數(shù)據(jù)存儲在其存儲存儲器中(步驟1014)??蛇x地,較高級高速緩存可以保留分層目錄信息(步驟1016)并將該信息寫入到其存儲存儲器。第五實施方案表明電力、性能與復(fù)雜性之間的權(quán)衡。第五實施方案提供高電力節(jié)省,因為整個較高級高速緩存可以斷電。預(yù)期性能適中,因為加載到較高級高速緩存中的信息多于第四實施方案。但是,性能可能會低于前三個實施方案,因為僅保留來自較小的、較低級高速緩存的信息。預(yù)期復(fù)雜程度低。在本實施方案中,從較低級高速緩存之一到較高級高速緩存的請求可能與較低級高速緩存中的高速緩存缺失相似,后者需要來自較高級高速緩存的服務(wù)。 第六實施方案在第六實施方案中,如圖11和圖12所示,可以由軟件將恢復(fù)標(biāo)簽清單編程到永久存儲位置(例如系統(tǒng)存儲器或內(nèi)部存儲器)中。高速緩存可以被永久編程或隱約知道將恢復(fù)標(biāo)簽定位在何處。每當(dāng)高速緩存通電時,恢復(fù)標(biāo)簽清單可以被訪問并且用來將數(shù)據(jù)內(nèi)容從所述高速緩存的后備存儲器加載到所述高速緩存中。圖11示出了存儲器系統(tǒng)1100的一部分,其包括高速緩存1102、內(nèi)部永久存儲存儲器1104、系統(tǒng)存儲器1106、存儲器控制器1108和處理引擎1110。高速緩存1102包括通電重新加載引擎1112和高速緩存存儲陣列1114。處理引擎1110包括軟件1116。在高速緩存斷電前或在高速緩存斷電期間,軟件1116將恢復(fù)標(biāo)簽信息寫入到永久存儲器。該永久存儲器可以是(例如)內(nèi)部永久存儲存儲器1104或系統(tǒng)存儲器1106。然后,高速緩存1102可以斷電。高速緩存1102保持?jǐn)嚯娭钡浇邮盏酵娛录橹埂.?dāng)接收到通電事件時,高速緩存1102通電并且通電重新加載引擎1112從系統(tǒng)存儲器1106或內(nèi)部永久存儲存儲器1104讀取恢復(fù)標(biāo)簽。通電重新加載弓I擎1112使用恢復(fù)標(biāo)簽(通常是地址)請求高速緩存從系統(tǒng)存儲器1106提取數(shù)據(jù)。高速緩存提取所述請求的數(shù)據(jù)并將其存儲在高速緩存存儲陣列1114中。先前的三個步驟可以重疊,使得一旦讀取了恢復(fù)標(biāo)簽,即可在讀取其它恢復(fù)標(biāo)簽前或在讀取其它恢復(fù)標(biāo)簽時從系統(tǒng)存儲器1106讀取與該恢復(fù)標(biāo)簽相關(guān)的數(shù)據(jù)并將所述數(shù)據(jù)存儲在高速緩存存儲陣列1114中。圖12示出了用于創(chuàng)建由軟件所編程的恢復(fù)標(biāo)簽的清單并將所述恢復(fù)標(biāo)簽存儲在永久存儲位置中的方法1200的流程圖。軟件將恢復(fù)標(biāo)簽信息寫入到永久存儲器(步驟1202)。高速緩存可以在任何時間斷電(步驟1204)。高速緩存保持?jǐn)嚯娭钡浇邮盏酵娛录橹?。?dāng)接收到通電事件時,高速緩存通電(步驟1206)并且從永久存儲器讀取恢復(fù)標(biāo)簽(步驟1208)。使用所述恢復(fù)標(biāo)簽從后備存儲器請求數(shù)據(jù)(步驟1210),并且提取所述請求的數(shù)據(jù)并將其存儲在高速緩存中(步驟1212)。步驟1208、1210和1212可以重疊,使得一旦讀取了恢復(fù)標(biāo)簽,即可在讀取和處理其它恢復(fù)標(biāo)簽前或在讀取和處理其它恢復(fù)標(biāo)簽時從后備存儲器請求與該恢復(fù)標(biāo)簽相關(guān)的數(shù)據(jù)并將所述數(shù)據(jù)存儲在所述高速緩存中。如果恢復(fù)標(biāo)簽存儲在系統(tǒng)存儲器中,那么第六實施方案節(jié)省最大電力,因為所述系統(tǒng)存儲器已需要電力來保持狀態(tài)。如果恢復(fù)標(biāo)簽存儲在單獨的芯片上的存儲器中,那么消耗少量的額外電力。與前三個實施方案相比,預(yù)期本實施方案的性能較低,因為軟件可能無法以與硬件相同的更新頻率來維持恢復(fù)標(biāo)簽清單。硬件復(fù)雜性低于其它實施方案,因為不需要硬件來保存恢復(fù)標(biāo)簽。然而,預(yù)期軟件復(fù)雜性適中,因為軟件需要維持活動的恢復(fù)標(biāo)簽清單。第七實施方案在第七實施方案中,如圖13和圖14所示,根據(jù)正常高速緩存訪問生成和更新恢復(fù)標(biāo)簽清單。例如,可以保存并持續(xù)更新最近的全部N個請求或來自多個源中每個的最近的N個請求的清單。該清單可以被篩選來移除重復(fù)的、相似的或重疊的條目?;謴?fù)標(biāo)簽清單可以存儲在高速緩存斷電時維持狀態(tài)的永久存儲位置中。恢復(fù)標(biāo)簽清單還可以存儲在非永久位置中。如果存儲在非永久位置中,那么恢復(fù)標(biāo)簽清單可以在對高速緩存和非永久存儲器斷電的準(zhǔn)備中轉(zhuǎn)移到永久存儲位置。在高速緩存通電后,恢復(fù)標(biāo)簽用來將數(shù)據(jù)內(nèi)容從所述高速緩存的后備存儲器加載到所述高速緩存中。圖13示出了存儲器系統(tǒng)1300的一部分,其包括高速緩存1302、處理引擎1304、內(nèi)部永久存儲存儲器1306、系統(tǒng)存儲器1308和存儲器控制器1310。處理引擎1304包括軟件1312。高速緩存1302包括恢復(fù)標(biāo)簽清單1314、通電重新加載引擎1316和高速緩存存儲陣列 1318。在正常操作期間,從客戶端(在這種情況下是處理引擎1304)到高速緩存1302的訪問用來生成存儲在永久存儲位置或非永久位置中的恢復(fù)標(biāo)簽。軟件1312將恢復(fù)標(biāo)簽信息寫入到例如永久存儲器,即內(nèi)部永久存儲存儲器1306或系統(tǒng)存儲器1308。如果恢復(fù)標(biāo) 簽清單1314將在高速緩存1302斷電時喪失狀態(tài),那么恢復(fù)標(biāo)簽清單1314必須在對高速緩存1302斷電前轉(zhuǎn)移到永久存儲位置。然后,高速緩存1302斷電并且保持?jǐn)嚯娭钡浇邮盏酵娛录橹?。?dāng)接收到通電事件時,高速緩存通電并且通電重新加載引擎1316讀取恢復(fù)標(biāo)簽。通電重新加載引擎1316使用恢復(fù)標(biāo)簽(通常是地址)從系統(tǒng)存儲器1308請求高速緩存數(shù)據(jù)。高速緩存1302提取所述請求的數(shù)據(jù)并將其存儲在高速緩存存儲陣列1318中。先前的三個步驟可以重疊,使得一旦讀取了恢復(fù)標(biāo)簽,即可在讀取其它恢復(fù)標(biāo)簽前或在讀取其它恢復(fù)標(biāo)簽時從系統(tǒng)存儲器1308請求與該恢復(fù)標(biāo)簽相關(guān)的數(shù)據(jù)并將所述數(shù)據(jù)存儲在高速緩存存儲陣列1318中。圖14示出了用于根據(jù)正常高速緩存訪問生成和更新恢復(fù)標(biāo)簽清單的方法1400的流程圖。使用客戶端對高速緩存的訪問來生成恢復(fù)標(biāo)簽(步驟1402)??蛇x地,恢復(fù)標(biāo)簽可以被篩選來移除重復(fù)的、相似的或重疊的條目(步驟1404)。將恢復(fù)標(biāo)簽存儲在永久存儲位置或非永久存儲位置中(步驟1406)。如果將恢復(fù)標(biāo)簽清單存儲在非永久存儲位置中,那么可以將所述恢復(fù)標(biāo)簽清單轉(zhuǎn)移到永久存儲位置(步驟1408 )。然后,高速緩存可以斷電(步驟1410)。高速緩存保持?jǐn)嚯娭钡浇邮盏酵娛录橹?。?dāng)接收到通電事件時,高速緩存通電(步驟1412)并且讀取恢復(fù)標(biāo)簽(步驟1414)。使用恢復(fù)標(biāo)簽從后備存儲器請求數(shù)據(jù)(步驟1416),并且提取所述請求的數(shù)據(jù)并將其存儲在高速緩存中(步驟1418)。步驟1414、1416和1418可以重疊,使得一旦讀取了恢復(fù)標(biāo)簽,SP可在讀取和處理其它恢復(fù)標(biāo)簽前或在讀取和處理其它恢復(fù)標(biāo)簽時從后備存儲器請求與該恢復(fù)標(biāo)簽相關(guān)的數(shù)據(jù)并將所述數(shù)據(jù)存儲在所述高速緩存中。如果恢復(fù)標(biāo)簽存儲在系統(tǒng)存儲器中,那么第七實施方案節(jié)省最大電力,因為所述系統(tǒng)存儲器已需要電力來保持狀態(tài)。如果恢復(fù)標(biāo)簽存儲在單獨的芯片上的存儲器中,那么消耗少量的額外電力。預(yù)期性能是高的,因為所述實施方式可以優(yōu)先選擇存儲所有標(biāo)簽或可能是標(biāo)簽的子集,該子集包括最近使用的標(biāo)簽。復(fù)雜程度是適中的,因為需要在系統(tǒng)內(nèi)生成和移動恢復(fù)標(biāo)簽。在此實施方式中,需要更多邏輯和存儲器來保存恢復(fù)標(biāo)簽的單獨清單。然而,不需要用于掃描全部高速緩存標(biāo)簽以確定將哪些高速緩存標(biāo)簽保存為恢復(fù)標(biāo)簽的邏輯。
第八實施方案在第八實施方案中,如圖15和圖16所示,向高速緩存發(fā)出請求的高速緩存客戶端可能知道所述高速緩存的電力狀態(tài)。如果客戶端引發(fā)高速緩存通電或檢測到高速緩存通電事件,那么所述客戶端可以生成特殊的預(yù)取命令流并將該命令流發(fā)送到高速緩存。這些預(yù)取命令與恢復(fù)標(biāo)簽作用相似并且引發(fā)高速緩存從其后備存儲器加載信息??蛻舳丝梢陨深A(yù)取命令,以觸發(fā)所述客戶端認(rèn)為其在不久的將來需要的數(shù)據(jù)的加載。這與到高速緩存的預(yù)取命令的正常生成不同,因為其與高速緩存通電事件相關(guān)。此外,客戶端可以發(fā)放其在高速緩存斷電前曾經(jīng)發(fā)放到高速緩存的預(yù)取命令。圖15示出了存儲器系統(tǒng)1500的一部分,其包括高速緩存1502、系統(tǒng)存儲器1504和存儲器控制器1506。高速緩存1502包括高速緩存存儲陣列1508??蛻舳?510可以訪問高速緩存1502和系統(tǒng)存儲器1504。雖然在圖15中示出了一個客戶端,但是應(yīng)當(dāng)注意任 何數(shù)量的客戶端均可以與高速緩存1502和系統(tǒng)存儲器1504進(jìn)行通信。高速緩存1502斷電。在電力恢復(fù)后,高速緩存1502用信號通知客戶端1510其剛通電并且已喪失狀態(tài)??蛻舳?510將一系列預(yù)取命令發(fā)放到高速緩存1502。這些預(yù)取命令可能已在斷電事件前曾經(jīng)發(fā)放到高速緩存1502。高速緩存1502使用預(yù)取命令以在來自客戶端1510的實際訪問和請求前將數(shù)據(jù)從系統(tǒng)存儲器1506加載到高速緩存1502。圖16示出了用于在通電后使用預(yù)取命令引發(fā)高速緩存從其后備存儲器加載信息的方法1600的流程圖。高速緩存可以在任何時間斷電(步驟1602)。在高速緩存通電(步驟1604)后,所述高速緩存用信號通知客戶端已發(fā)生通電并且已喪失狀態(tài)(步驟1606)??蛻舳藢㈩A(yù)取命令發(fā)放到高速緩存(步驟1608)??蛻舳丝梢园l(fā)放曾經(jīng)在斷電前發(fā)放過的預(yù)取命令(步驟1610)。高速緩存使用預(yù)取命令將數(shù)據(jù)加載到所述高速緩存中(步驟1612)。第八實施方案節(jié)省最大電力,因為從預(yù)取命令所收集的信息位于系統(tǒng)存儲器中,所述系統(tǒng)存儲器已必需保持其狀態(tài)。本實施方案的性能取決于預(yù)取的準(zhǔn)確度。預(yù)測越準(zhǔn)確、預(yù)取可發(fā)生得越早,則性能越佳。某些應(yīng)用在本實施方案下可以更好地運(yùn)行,而其它應(yīng)用可能更多受益于其它實施方案,這取決于客戶端的高速緩存訪問模式。對于本實施方案的高速緩存部分來說,復(fù)雜程度是低的;預(yù)期會給處理器增加復(fù)雜性,因為所述處理器需要動態(tài)地控制響應(yīng)于高速緩存電力狀態(tài)而發(fā)生的預(yù)取的程度。雖然上文以特定組合描述特征和元件,但是可在不具有其它特征和元件的情況下單獨使用每個特征或元件,或者可在具有或不具有其它特征和元件的情況下以各種組合使用每個特征或元件。本文所提供的方法或流程圖可以在并入計算機(jī)可讀存儲介質(zhì)中的供通用計算機(jī)或處理器執(zhí)行的計算機(jī)程序、軟件或固件中實施。計算機(jī)可讀存儲介質(zhì)的實例包括只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、寄存器、高速緩沖存儲器、半導(dǎo)體存儲器裝置、磁介質(zhì)(例如內(nèi)部硬盤和可抽換式盤)、磁光介質(zhì)和光介質(zhì)(例如⑶-ROM盤和數(shù)字多功能盤(DVD))。合適的處理器包括(舉例來說)通用處理器、特殊用途處理器、常規(guī)處理器、數(shù)字信號處理器(DSP)、多個微處理器、與DSP內(nèi)核相關(guān)的一個或多個微處理器、控制器、微控制器、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)電路、任何其它類型的集成電路(IC)和/或狀態(tài)機(jī)。這些處理器可以通過配置使用經(jīng)過處理的硬件描述語言(HDL)指令(這些指令可存儲在計算機(jī)可讀介質(zhì)上)的結(jié)果的制造過程來制造。這些處理的結(jié)果可能是隨后在半導(dǎo)體制造過程中用來制造實施本發(fā)明的各個方面的處理 器的掩膜作品。
權(quán)利要求
1.一種用于重新填充高速緩存的方法,其包括 將所述高速緩存的內(nèi)容的至少一部分存儲在與所述高速緩存分開的位置中; 將電力從所述高速緩存中移除; 對所述高速緩存恢復(fù)電力;和 用與所述高速緩存分開存儲的所述高速緩存的所述內(nèi)容的所述部分重新填充所述高速緩存。
2.根據(jù)權(quán)利要求I所述的方法,其中所述存儲包括 創(chuàng)建恢復(fù)標(biāo)簽,每個恢復(fù)標(biāo)簽包括來自所述高速緩存的某些內(nèi)容;和 將所述恢復(fù)標(biāo)簽存儲在與所述高速緩存分開的所述位置中。
3.根據(jù)權(quán)利要求2所述的方法,其中所述重新填充包括 讀取所述恢復(fù)標(biāo)簽;和 使用所述恢復(fù)標(biāo)簽將數(shù)據(jù)加載到所述高速緩存中。
4.根據(jù)權(quán)利要求2所述的方法,其中所述創(chuàng)建包括使用先前高速緩存訪問的歷史清單生成恢復(fù)標(biāo)簽。
5.根據(jù)權(quán)利要求4所述的方法,其中所述創(chuàng)建包括移除先前高速緩存訪問的所述歷史清單中的重復(fù)的、相似的或重疊的條目。
6.根據(jù)權(quán)利要求I所述的方法,其中 所述高速緩存包括一個或多個標(biāo)簽存儲器和一個或多個數(shù)據(jù)存儲器; 所述移除包括讓所述標(biāo)簽存儲器中至少之一通電并且對所述剩余標(biāo)簽存儲器和所有所述數(shù)據(jù)存儲器斷電;且所述重新填充包括 從所述至少一個通電標(biāo)簽存儲器讀取所述標(biāo)簽;和 使用所述經(jīng)讀取的標(biāo)簽將數(shù)據(jù)加載到所述高速緩存中。
7.根據(jù)權(quán)利要求6所述的方法,其中 所述讀取包括從所述至少一個通電標(biāo)簽存儲器讀取地址;且 所述使用包括 從所述地址提取數(shù)據(jù);和 將所述提取的數(shù)據(jù)寫入到所述高速緩存。
8.根據(jù)權(quán)利要求I所述的方法,其中 所述存儲包括 從所述高速緩存讀取標(biāo)簽以生成恢復(fù)標(biāo)簽;和 將所述恢復(fù)標(biāo)簽存儲在與所述高速緩存分開的所述位置中; 所述重新填充包括 讀取所述恢復(fù)標(biāo)簽;和 使用所述恢復(fù)標(biāo)簽將數(shù)據(jù)加載到所述高速緩存中。
9.根據(jù)權(quán)利要求8所述的方法,其中所述存儲還包括 在將所述恢復(fù)標(biāo)簽存儲在與所述高速緩存分開的所述位置中前壓縮所述恢復(fù)標(biāo)簽。
10.根據(jù)權(quán)利要求I所述的方法,其中 所述高速緩存是包括較高級高速緩存和多個較低級高速緩存的多級高速緩存;且所述移除包括對所述較高級高速緩存斷電并且保留所述較低級高速緩存的至少之一中的電力。
11.根據(jù)權(quán)利要求10所述的方法,其中所述重新填充包括 在保留電力的所述至少一個較低級高速緩存中生 成標(biāo)簽和數(shù)據(jù)信息; 將所述標(biāo)簽和數(shù)據(jù)信息發(fā)送到所述較高級高速緩存;和 將所述標(biāo)簽和數(shù)據(jù)信息寫入到所述較高級高速緩存。
12.根據(jù)權(quán)利要求10所述的方法,其中所述重新填充包括 在保留電力的所述至少一個較低級高速緩存中生成恢復(fù)標(biāo)簽,每個恢復(fù)標(biāo)簽包括來自所述較低級高速緩存的某些內(nèi)容; 根據(jù)所述恢復(fù)標(biāo)簽而將重新加載命令發(fā)放到所述較高級高速緩存; 由所述較高級高速緩存使用所述重新加載命令請求數(shù)據(jù);和 將所述請求的數(shù)據(jù)寫入到所述較高級高速緩存。
13.根據(jù)權(quán)利要求11所述的方法,其中所述寫入包括 將分層目錄信息寫入到所述較高級高速緩存。
14.一種用于重新填充高速緩存的方法,其包括 將電力從所述高速緩存中移除; 對所述高速緩存恢復(fù)電力; 用信號通知高速緩存客戶端已對所述高速緩存恢復(fù)電力并且所述高速緩存已喪失狀態(tài); 將預(yù)取命令從所述高速緩存客戶端發(fā)放到所述高速緩存;和 由所述高速緩存使用所述預(yù)取命令將數(shù)據(jù)加載到所述高速緩存中。
15.根據(jù)權(quán)利要求14所述的方法,其中所述發(fā)放包括 發(fā)放在將電力從所述高速緩存中移除時已待定的預(yù)取命令。
16.一種用于重新填充高速緩存的裝置,其包括 高速緩存,其被配置來存儲數(shù)據(jù)和與所述數(shù)據(jù)相關(guān)的標(biāo)簽; 存儲器,其與所述高速緩存分開定位,所述存儲器被配置來在將電力從所述高速緩存中移除時存儲來自所述高速緩存的標(biāo)簽;和 存儲器控制器,其被配置來在對所述高速緩存恢復(fù)電力時將標(biāo)簽從所述高速緩存寫入到所述存儲器。
17.根據(jù)權(quán)利要求16所述的裝置,其還包括 通電重新加載引擎,其被配置來 從所述存儲器讀取所述標(biāo)簽; 根據(jù)所述標(biāo)簽創(chuàng)建恢復(fù)標(biāo)簽;和 使用所述恢復(fù)標(biāo)簽將數(shù)據(jù)加載到所述高速緩存中。
18.根據(jù)權(quán)利要求17所述的裝置,其中 所述高速緩存包括一個或多個標(biāo)簽存儲器和一個或多個數(shù)據(jù)存儲器,至少一個標(biāo)簽存儲器保留電力同時剩余標(biāo)簽存儲器和所述數(shù)據(jù)存儲器斷電;且 所述通電重新加載引擎還被配置來從保留電力的所述至少一個標(biāo)簽存儲器讀取所述標(biāo)簽。
19.根據(jù)權(quán)利要求16所述的裝置,其還包括 標(biāo)簽轉(zhuǎn)移引擎,其被配置來 根據(jù)所述標(biāo)簽生成恢復(fù)標(biāo)簽;和 將所述恢復(fù)標(biāo)簽寫入到所述存儲器;和 通電重新加載引擎,其被配置來 從所述存儲器讀取所述恢復(fù)標(biāo)簽;和 使用所述恢復(fù)標(biāo)簽將數(shù)據(jù)加載到所述高速緩存中。
20.根據(jù)權(quán)利要求19所述的裝置,其中所述標(biāo)簽轉(zhuǎn)移引擎還被配置來壓縮所述恢復(fù)標(biāo)簽。
21.根據(jù)權(quán)利要求16所述的裝置,其中 所述高速緩存包括較高級高速緩存和多個較低級高速緩存; 所述較低級高速緩存中至少之一保留電力并且所述較高級高速緩存和剩余較低級高速緩存斷電;且 保留電力的所述至少一個較低級高速緩存被配置來將數(shù)據(jù)和標(biāo)簽發(fā)送到所述較高級高速緩存。
22.根據(jù)權(quán)利要求21所述的裝置,其中保留電力的所述至少一個較低級高速緩存還被配置來 根據(jù)其標(biāo)簽信息生成恢復(fù)標(biāo)簽;和 根據(jù)所述恢復(fù)標(biāo)簽將重新加載命令發(fā)放到所述較高級高速緩存。
23.根據(jù)權(quán)利要求22所述的裝置,其還包括 通電重新加載引擎,其被配置來使用所述重新加載命令請求數(shù)據(jù)。
24.根據(jù)權(quán)利要求16所述的裝置,其中所述存儲器包括恢復(fù)標(biāo)簽清單并且所述裝置還包括 通電重新加載引擎,其被配置來 從所述存儲器讀取所述恢復(fù)標(biāo)簽;和 使用所述恢復(fù)標(biāo)簽將數(shù)據(jù)加載到所述高速緩存中。
25.根據(jù)權(quán)利要求16所述的裝置,其還包括 高速緩存客戶端,其被配置來 生成預(yù)取命令,所述預(yù)取命令包括用于加載數(shù)據(jù)的指令;和 將所述預(yù)取命令發(fā)送到所述高速緩存。
26.一種存儲供通用計算機(jī)執(zhí)行以重新填充高速緩存的指令集的計算機(jī)可讀存儲介質(zhì),所述指令集包括 存儲代碼段,其用于將所述高速緩存的內(nèi)容的至少一部分存儲在與所述高速緩存分開的位置中; 移除代碼段,其用于將電力從所述高速緩存中移除; 恢復(fù)代碼段,其用于對所述高速緩存恢復(fù)電力;和 重新填充代碼段,其用于用與所述高速緩存分開存儲的所述高速緩存的所述內(nèi)容的所述部分重新填充所述高速緩存。
27.根據(jù)權(quán)利要求26所述的計算機(jī)可讀存儲介質(zhì),其中所述指令集是用于制造裝置的硬件描述語言(HDL)指 令。
全文摘要
本發(fā)明公開了一種用于重新填充高速緩存的方法和裝置。所述高速緩存的內(nèi)容的至少一部分存儲在與所述高速緩存分開的位置中。將電力從所述高速緩存中移除并且一段時間之后恢復(fù)電力。在已對所述高速緩存恢復(fù)電力后,用與所述高速緩存分開存儲的所述高速緩存的所述內(nèi)容的所述部分重新填充所述高速緩存。
文檔編號G06F12/02GK102971716SQ201180017541
公開日2013年3月13日 申請日期2011年2月28日 優(yōu)先權(quán)日2010年3月3日
發(fā)明者菲利普·Ng, 吉姆謝德·B·米爾扎, 安東尼·阿薩羅 申請人:Ati科技無限責(zé)任公司