專利名稱:用于降低存儲設備功耗的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及存儲設備,并且更具體但不排他地涉及用于降低存儲設備功耗的方法和系統(tǒng)。
背景技術:
諸如高速緩沖存儲器的存儲設備允許處理器通過將主存儲器的最近使用的副本存儲在高速緩沖存儲器的高速緩存行中來更塊地執(zhí)行指令。如果程序需要的指令或數(shù)據(jù)存儲在高速緩沖存儲器的高速緩存行中,那么可以降低程序的訪問延遲。當高速緩沖存儲器未命中事件發(fā)生時,在亂序(out-of-order)微架構中使用非阻塞高速緩沖存儲器來避免處理器的停頓。即使存在高速緩沖存儲器未命中事件,諸如填充緩沖器的專用硬件允許服務后面的加載和存儲請求。填充緩沖器可以包含任意狀態(tài)的高速緩存行的副本,并且在加載或存儲請求的執(zhí)行期間,每當數(shù)據(jù)高速緩存被訪問時,都會對該填充緩沖器進行訪問。主存儲器的存儲器行可以位于填充緩沖器中或數(shù)據(jù)高速緩存中, 但不會同時位于二者中。1級高速緩沖存儲器被處理器頻繁地訪問并且其大小和組相聯(lián) (set-associative)配置可以影響處理器的性能。例如,1級高速緩沖存儲器可以具有32 千字節(jié)的大小、8路組相聯(lián)配置并且可以每高速緩沖存儲器行包含64字節(jié)。要針對加載請求訪問1級高速緩沖存儲器,必須讀取高速緩沖存儲器組的所有8個路以確定從哪個路得到所需要數(shù)據(jù)。
根據(jù)主題的以下詳細描述,本發(fā)明的實施例的特征和優(yōu)點將會變得顯而易見,其中圖1說明了根據(jù)本發(fā)明的一個實施例的處理單元的框圖;圖2說明了根據(jù)本發(fā)明的一個實施例的存儲器執(zhí)行單元和1級數(shù)據(jù)高速緩沖存儲器的框圖;圖3說明了根據(jù)本發(fā)明的一個實施例的從虛擬地址到物理地址的映射;圖4說明了根據(jù)本發(fā)明的一個實施例的處理混淆(aliasing)事件的流程圖;圖5說明了根據(jù)本發(fā)明的一個實施例的降低高速緩沖存儲器的功耗的流程圖;以及圖6說明了根據(jù)本發(fā)明的一個實施例的用于實現(xiàn)本文公開的方法的系統(tǒng)。
具體實施例方式在附圖中以示例的方式而非限制的方式說明了本文描述的發(fā)明的實施例。為了說明的簡單和清楚,附圖中說明的元件未必按照比例繪制。例如,為了清楚,可以相對其他元件放大一些元件的尺寸。此外,當認為合適時,在附圖之間重復使用參考標號以指示對應或類似的元件。說明書中對于本發(fā)明的“一個實施例”或“實施例”的引用意味著結合該實施例描述的特定特征、結構或特性包括在本發(fā)明的至少一個實施例中。因此,整個說明書中各個位置出現(xiàn)的短語“在一個實施例中”不是必然都指同一實施例。本發(fā)明的實施例提供了用于降低存儲設備的功耗的方法和系統(tǒng)。在本發(fā)明的一個實施例中,存儲設備是N路組相聯(lián)1級(Li)高速緩沖存儲器,其中N是整數(shù)并且具有大于 1的值。存在與數(shù)據(jù)高速緩沖存儲器耦合的邏輯,以響應于加載指令或存儲指令促成僅對N 路組相聯(lián)Ll高速緩沖存儲器的N路的部分進行訪問。在本發(fā)明的一個實施例中,通過減少針對每個加載或存儲請求的訪問N路組相聯(lián)Ll高速緩沖存儲器的路的數(shù)量,降低了 N路組相聯(lián)Ll高速緩沖存儲器的功率要求。例如,在本發(fā)明的一個實施例中,存儲設備是8路組相聯(lián)Ll高速緩沖存儲器并且它被劃分為兩組陣列,其中每組陣列具有4路訪問。當接收到加載或存儲指令時,僅選擇兩組陣列中的一組,即僅訪問8路組相聯(lián)Ll高速緩沖存儲器的8路中的4路。在本發(fā)明的一個實施例中,兩組陣列之間的選擇是基于8路組相聯(lián)Ll高速緩沖存儲器的虛擬地址的地址位的。在本發(fā)明的一個實施例中,N路組相聯(lián)Ll高速緩沖存儲器具有一個或多個填充緩沖器以允許在處理器上執(zhí)行亂序指令,即N路組相聯(lián)Ll高速緩沖存儲器是非阻塞高速緩沖存儲器。在本發(fā)明的一個實施例中,當作出對高速緩沖存儲器的訪問僅需要N路組相聯(lián)Ll 高速緩沖存儲器的數(shù)據(jù)陣列的預測時停用或禁用對于填充緩沖器的訪問。在本發(fā)明的一個實施例中,由于與填充緩沖器相關聯(lián)的邏輯被停用,所以降低了 N路組相聯(lián)Ll高速緩沖存儲器的功耗。存儲設備包括但不限于高速緩沖存儲器、高速緩存數(shù)據(jù)陣列、高速緩存標簽陣列等。圖1說明了根據(jù)本發(fā)明的一個實施例的處理單元105的框圖100。在本發(fā)明的一個實施例中,處理單元105具有指令提取和發(fā)布單元110、總線控制器120、執(zhí)行單元130以及Ll數(shù)據(jù)高速緩沖存儲器140。處理單元105的總線控制器120與系統(tǒng)接口 150耦合以連接到其他部件,該其他部件包括但不限于主存儲器、2級高速緩沖存儲器、芯片組等。指令提取和發(fā)布單元110通過總線控制器120經由系統(tǒng)接口 150或任何其他外部總線從外部存儲器或主存儲器提取指令。所提取的指令被存儲在指令高速緩沖存儲器115中。在本發(fā)明的一個實施例中,總線控制器120管理處理單元105中的高速緩存一致性轉移。執(zhí)行單元130接收和執(zhí)行來自指令提取和發(fā)布單元110的所提取的指令,并且執(zhí)行算術和邏輯運算,該算術和邏輯運算包括但不限于加、減、邏輯AND、整數(shù)乘、存儲器操作等。在本發(fā)明的一個實施例中,執(zhí)行單元130具有存儲器執(zhí)行單元135以在處理單元105 中執(zhí)行存儲器訪問操作,該存儲器訪問操作包括但不限于加載和存儲操作。存儲器執(zhí)行單元135接收來自調度器的加載和存儲操作并且執(zhí)行它們以完成存儲器訪問操作。在本發(fā)明的一個實施例中,存儲器執(zhí)行單元135與Ll數(shù)據(jù)高速緩沖存儲器140相耦合,其中所述Ll數(shù)據(jù)高速緩沖存儲器140具有Ll數(shù)據(jù)陣列142、L1標簽陣列144和填充緩沖器146。Ll數(shù)據(jù)高速緩沖存儲器140具有其他部件,例如為了說明的清楚而沒有在圖 1中示出的轉換后援緩沖器(TLB)。在本發(fā)明的一個實施例中,Ll數(shù)據(jù)高速緩沖存儲器140 具有邏輯來控制填充緩沖器146的訪問并且將存儲器訪問操作限制到Ll數(shù)據(jù)陣列142和Ll標簽陣列144的高速緩存路的僅僅一部分。圖2說明了根據(jù)本發(fā)明的一個實施例的存儲器執(zhí)行單元135和Ll數(shù)據(jù)高速緩沖存儲器140的框圖200。為了說明的清楚,參考圖1來討論圖2。在本發(fā)明的一個實施例中,Ll數(shù)據(jù)高速緩沖存儲器140是8路組相聯(lián)Ll高速緩沖存儲器。在本發(fā)明的一個實施例中,Ll數(shù)據(jù)高速緩沖存儲器140中的Ll數(shù)據(jù)陣列142和Ll標簽陣列144被劃分為兩個部分或兩個組。Ll數(shù)據(jù)陣列142被劃分為4路Ll數(shù)據(jù)陣列[3-0] 220和4路Ll數(shù)據(jù)陣列 [7-4]225οLl路3-0讀取啟用信號202和Ll路7_4讀取啟用信號204分別控制4路Ll數(shù)據(jù)陣列[3-0]220和4路Ll數(shù)據(jù)陣列[7-4]225的訪問或激活。例如,在本發(fā)明的一個實施例中,如果只允許或需要訪問4路Ll數(shù)據(jù)陣列[3-0]220,那么斷言(assert) Ll路3-0讀取啟用信號202以啟用4路Ll數(shù)據(jù)陣列[3-0] 220以及解除斷言(de-assert) Ll路7_4啟用信號204以禁用4路Ll數(shù)據(jù)陣列[7-4] 225。組選擇(set_select)信號206耦合到4路Ll數(shù)據(jù)陣列[3-0] 220和4路Ll數(shù)據(jù)陣列[7-4]225以選擇要訪問的期望或需要的組。例如,在本發(fā)明的一個實施例中,Ll數(shù)據(jù)高速緩沖存儲器140是具有32千字節(jié)、64組并且每組具有8路高速緩存訪問的高速緩沖存儲器。為了執(zhí)行加載或存儲指令,使用組選擇信號206來選擇期望的組并且8路復用器 (mux) 260選擇該期望的組的哪一路來作為讀取的數(shù)據(jù)沈2。由路命中矢量[7_0]270生成8路復用器沈0的控制信號。在本發(fā)明的一個實施例中,路命中矢量[7-0]270具有8位來表示Ll數(shù)據(jù)高速緩沖存儲器140的8路中的哪一路被選擇作為讀取的數(shù)據(jù)262。在本發(fā)明的一個實施例中,根據(jù)Ll標簽陣列144、Ll標簽比較器240和AND門塊250生成路命中矢量[7_0]270。Ll標簽陣列144被劃分為4路Ll 標簽陣列[3-0] 230和4路Ll標簽陣列[7-4] 235。組選擇信號206耦合到4路Ll標簽陣列[3_0] 230和4路Ll標簽陣列[7_4] 235 以選擇要訪問的期望或需要的組。4路Ll標簽陣列[3-0]230和4路Ll標簽陣列[7_4]235 分別耦合到Ll標簽比較器MO中的4路Ll標簽比較器[3-0]242和4路Ll標簽比較器 [7-4] 244。Ll標簽比較器240將4路Ll標簽陣列[3-0] 230和4路Ll標簽陣列[7-4] 235 中的所選擇的組的路中的標簽地址與加載或存儲指令的物理地址246進行比較。如果發(fā)現(xiàn)匹配,那么Ll標簽比較器240中各自的標簽比較器針對AND門塊250生成邏輯1信號。如果沒有發(fā)現(xiàn)匹配,那么Ll標簽比較器240中各自的標簽比較器針對AND門塊250生成邏輯 0信號。4路Ll標簽比較器[3-0] 242針對每個路3_0生成信號并且每個信號耦合到AND 門塊250中的各自的AND門。類似地,4路Ll標簽比較器[7_4] 244針對每個路7_4生成信號并且每個信號耦合到AND門塊250中的各自的AND門。與4路Ll標簽比較器[3_0] 242 耦合的每個AND門與OR門210的輸出相耦合。由填充緩沖器阻塞信號208和Ll路3-0讀取啟用信號202驅動OR門210的輸出。類似地,與4路Ll標簽比較器[7_4] 244耦合的每個AND門與OR門212的輸出相耦合。由填充緩沖器阻塞信號208和Ll路7_4讀取啟用信號204驅動OR門212的輸出。填充緩沖器阻塞信號208選擇是否由Ll路3_0讀取啟用信號202和Ll路7_4讀取啟用信號204確定Ll標簽陣列144的控制。OR門210和212的輸出分別與4路Ll標簽陣列[3-0]230和4路Ll標簽陣列[7-4]235相耦合以啟用或禁用它們的操作。例如,在本發(fā)明的一個實施例中,當填充緩沖器阻塞信號208被斷言或被設置為邏輯1時,OR門210和 212的輸出被斷言為邏輯1以啟用4路Ll標簽陣列[3-0] 230和4路Ll標簽陣列[7_4]235
■~ 者 ο當填充緩沖器阻塞信號208被設置為邏輯1時,由于填充緩沖器阻塞信號208將 OR門210和212的輸出設置為邏輯1,所以Ll路3-0讀取啟用信號202和Ll路7_4讀取啟用信號204不影響4路Ll標簽陣列[3-0]230和4路Ll標簽陣列[7_4]235的操作。類似地,當填充緩沖器阻塞信號208被設置為邏輯1時,AND門塊250中的AND門不受Ll路 3-0讀取啟用信號202和Ll路7-4讀取啟用信號204的影響。當填充緩沖器阻塞信號208被解除斷言或被設置為邏輯0時,分別由Ll路3_0讀取啟用信號202和Ll路7-4讀取啟用信號204確定4路Ll標簽陣列[3_0] 230和4路Ll 標簽陣列[7-4]235的控制。這是因為當填充緩沖器阻塞信號208被設置為邏輯0時,OR門 210和212的輸出僅取決于4路Ll標簽陣列[3_0]230和4路Ll標簽陣列[7_4]235的狀態(tài)。例如,在本發(fā)明的一個實施例中,當要啟用路3-0并且要禁用路7-4時,Ll路3_0 讀取啟用信號202和Ll路7-4讀取啟用信號204分別被設置為邏輯1和0。由Ll路3-0 讀取啟用信號202激活4路Ll數(shù)據(jù)陣列[3-0]220。Ll路3-0讀取啟用信號202將OR門 210的輸出設置為邏輯1并且啟用4路Ll標簽陣列[3-0] 230。由于OR門210的輸出被設置為邏輯1,所以啟用耦合到4路Ll標簽比較器[3-0]242的AND門。由于Ll路7-4讀取啟用信號204被設置為邏輯0,所以4路Ll數(shù)據(jù)陣列[7_4] 225 被禁用。由于Ll路7-4讀取啟用信號204和填充緩沖器阻塞信號208 二者都被設置為邏輯0,所以OR門212的輸出被設置為邏輯0。由于OR門212的輸出被設置為邏輯0,所以4 路Ll標簽陣列[7-4]235被禁用,并且耦合到4路Ll標簽比較器[7_4]244的AND門被禁用。路命中矢量[7-0]270 耦合到 OR 門[3-0] 280 和 OR 門[7-4] 282。OR 門[3-0] 280 的四個輸入耦合到路命中矢量[7-0]270的路3-0。類似地,OR門[7_4]282的四個輸入耦合到路命中矢量[7-0] 270的路7-4。AND門290耦合到OR門[3-0] 280的輸出和Ll路3-0 讀取啟用信號202。AND門292耦合到OR門[7_4]282的輸出和Ll路7_4讀取啟用信號 204。AND門290和四2的輸出都耦合到OR門四4以生成Ll高速緩存命中/未命中信號 2960 Ll高速緩存命中/未命中信號296指示是否存在Ll數(shù)據(jù)高速緩沖存儲器140的高速緩沖存儲器命中或未命中。在本發(fā)明的一個實施例中,Ll數(shù)據(jù)高速緩沖存儲器140中的Ll數(shù)據(jù)陣列142和 Ll標簽陣列144維持處理單元105的性能,同時由于減少了高速緩存訪問的路的數(shù)量,從而降低了功耗。圖2中的Ll數(shù)據(jù)高速緩沖存儲器140的說明不意味著是限制性的。在本發(fā)明的其他實施例中,可以在不影響本發(fā)明的運行的情況下,使用數(shù)據(jù)和標簽陣列的不同結構和配置。例如,在本發(fā)明的另一實施例中,數(shù)據(jù)和標簽陣列中的每一個被劃分為多于兩個部分并且能夠生成分離的控制信號來選擇數(shù)據(jù)和標簽陣列的哪一部分或組要被選擇用于加載或存儲操作。相關領域中的普通技術人員將會容易地意識到如何修改邏輯以支持Ll數(shù)據(jù)高速緩沖存儲器140的不同配置,本文中將不對此進行描述。圖3說明了根據(jù)本發(fā)明的一個實施例的從虛擬地址310到物理地址330的映射 300。在本發(fā)明的一個實施例中,虛擬或線性地址310具有頁偏移312和虛擬頁碼314。頁偏移312由虛擬地址310的前12個地址位[11:0]構成,并且在虛擬地址310被轉換為物理地址330時不對頁偏移312進行轉換。在本發(fā)明的一個實施例中,虛擬地址310的6個地址位[11 6]被用作組地址。使用6個地址位可以選擇64個組。在本發(fā)明的一個實施例中,基于虛擬地址310的地址位 [11:6]生成組選擇信號206。在本發(fā)明的一個實施例中,經由轉換邏輯320來轉換虛擬頁碼 314以獲取物理頁碼334。轉換邏輯320包括但不限于TLB中的查找表。在本發(fā)明的一個實施例中,基于虛擬地址310的地址位[12]生成Ll路3-0讀取啟用信號202和Ll路7_4 讀取啟用信號204。例如,在本發(fā)明的一個實施例中,當斷言了地址位[12]時,Ll路3-0讀取啟用信號202和Ll路7-4讀取啟用信號204分別被斷言和解除斷言。當?shù)刂肺籟12]被解除斷言時,Ll路3-0讀取啟用信號202和Ll路7_4讀取啟用信號204分別被解除斷言和斷言。在任何高速緩沖存儲器訪問之前設置地址位[12]以確定要訪問Ll數(shù)據(jù)高速緩沖存儲器140的哪4路。相關領域的普通技術人員將會意識到,在不影響本發(fā)明的運行的情況下,可以使用生成Ll路3-0讀取啟用信號202和Ll路7_4讀取啟用信號204的其他方式,本文中將不對這些其他方式進行描述。在本發(fā)明的一個實施例中,可以使用虛擬地址 310的另一位或另外多個位來生成Ll路3-0讀取啟用信號202和Ll路7_4讀取啟用信號 204。在本發(fā)明的另一實施例中,可以使用另一寄存器的另一位或另外多個位來生成Ll路 3-0讀取啟用信號202和Ll路7-4讀取啟用信號204。在本發(fā)明的另一實施例中,虛擬地址310和物理地址330可以具有不止32位。圖4說明了根據(jù)本發(fā)明的一個實施例的處理混淆事件的流程圖400。在虛擬索引的高速緩沖存儲器中,用來定位特定高速緩沖存儲器行的位的數(shù)量大于頁的大小,并且可能混淆一個或多個位。例如,在本發(fā)明的一個實施例中,基于混淆的位的值,相同的物理頁可以在高速緩沖存儲器中的兩個不同單元被引用。如此,Ll數(shù)據(jù)高速緩沖存儲器140中的兩個不同的高速緩沖存儲器行可以保持有相同物理存儲器的不同版本。流程400說明了根據(jù)本發(fā)明的一個實施例的用于處理混淆事件的方法。在步驟 410,流程接收存儲或加載請求。在步驟420,流程檢查在Ll數(shù)據(jù)高速緩沖存儲器140中是否存在所述存儲或加載請求的真命中(true hit)事件。在本發(fā)明的一個實施例中,當在Ll 數(shù)據(jù)高速緩沖存儲器140的所選擇的4路的一路中對所述存儲或加載請求的存儲單元進行高速緩存時,發(fā)生真命中事件。例如,在本發(fā)明的一個實施例中,處理單元105接收針對虛擬地址X的存儲請求。 存儲器執(zhí)行單元135檢查虛擬地址X的地址位[12]以確定要訪問Ll數(shù)據(jù)高速緩沖存儲器 140的路3-0還是路7-4。假設地址位[12]選擇了路3_0,那么當4路Ll標簽陣列[3_0] 242 中的標簽陣列中的一個與虛擬地址X相匹配時,Ll標簽比較器[3-0] 242生成Ll命中信號, 即真命中。如果在步驟420中存在真命中事件,那么流程400結束。如果在步驟420中不存在真命中事件,那么流程400進行到步驟430以檢查在Ll數(shù)據(jù)高速緩沖存儲器140中是否存在所述存儲或加載請求的真未命中(true miss)事件。在本發(fā)明的一個實施例中,當在 Ll數(shù)據(jù)高速緩沖存儲器140的所有8路中沒有對所述存儲或加載請求的存儲單元進行高速緩存時,發(fā)生真未命中事件。例如,在本發(fā)明的一個實施例中,處理單元105接收針對虛擬地址Y的加載請求。 存儲器執(zhí)行單元135檢查虛擬地址Y的地址位[12]以確定要訪問Ll數(shù)據(jù)高速緩沖存儲器 140的路3-0還是路7-4。當在4路Ll標簽陣列[3_0] 242或4路Ll標簽陣列[7_4] 244 中的標簽陣列沒有與虛擬地址Y相匹配時,Ll標簽比較器240生成Ll未命中信號,即真未命中。如果在步驟430中存在真未命中事件,那么流程400結束。如果在步驟430中不存在真未命中事件,那么流程400進行到步驟440以檢查在Ll數(shù)據(jù)高速緩沖存儲器140中是否存在所述存儲或加載請求的假命中(false hit)事件。在本發(fā)明的一個實施例中,當Ll 標簽比較器240生成命中但地址位[12]選擇數(shù)據(jù)陣列的不正確的組時,發(fā)生假命中事件。例如,在本發(fā)明的一個實施例中,處理單元105接收針對虛擬地址Z的加載請求。 存儲器執(zhí)行單元135檢查虛擬地址Z的地址位[12]以確定要訪問Ll數(shù)據(jù)高速緩沖存儲器 140的路3-0還是路7-4。假設地址位[12]選擇了路3_0,則4路Ll數(shù)據(jù)陣列[3-0] 220被選擇。然而,由于混淆,當Ll標簽比較器MO比較所述加載請求的物理地址時,由4路Ll 標簽比較器[7-4] 244而非4路Ll標簽比較器[3_0]242生成命中信號,即假命中。如果在步驟440中不存在假命中事件,那么流程400結束。如果在步驟400中存在假命中事件,那么流程400進行到步驟450以重復所述存儲或加載請求并且啟用或激活 Ll數(shù)據(jù)陣列142的所有的路,然后流程結束。圖5說明了根據(jù)本發(fā)明的一個實施例的用于降低高速緩沖存儲器的功耗的流程圖500。為了說明的清楚,參考圖2來討論圖5。在步驟510,流程500確定Ll數(shù)據(jù)高速緩沖存儲器140的連續(xù)的高速緩沖存儲器命中的數(shù)量。在本發(fā)明的一個實施例中,處理單元105包括邏輯以預測連續(xù)的高速緩沖存儲器命中的數(shù)量。在本發(fā)明的另一實施例中,步驟510確定Ll數(shù)據(jù)高速緩沖存儲器140的高速緩沖存儲器命中的連續(xù)的時鐘的數(shù)量。在步驟520,流程500檢查命中的數(shù)量或命中的時鐘周期的數(shù)量是否超過閾值。在本發(fā)明的一個實施例中,該閾值被設置為Ll數(shù)據(jù)高速緩沖存儲器140中的高速緩存命中的 1 個時鐘。如果沒有超過,那么流程500返回步驟510。如果超過,那么在本發(fā)明的一個實施例中流程500進行到步驟530以停用與填充緩沖器146相關聯(lián)的邏輯。在本發(fā)明的另一個實施例中,步驟530限制對填充緩沖器146的訪問。在本發(fā)明的一個實施例中,當與填充緩沖器146相關聯(lián)的邏輯被停用時,與填充緩沖器146相關聯(lián)的邏輯的輸入時鐘被停止或禁用。在本發(fā)明的一個實施例中,填充緩沖器146和Ll數(shù)據(jù)高速緩沖存儲器140不同時保存或存儲相同的高速緩存行,即針對一個加載或存儲操作,或者填充緩沖器146被訪問, 或者Ll數(shù)據(jù)高速緩沖存儲器140被訪問。當處理單元105中的邏輯預測存在在Ll數(shù)據(jù)高速緩沖存儲器140中命中或找到所有的加載和存儲操作的時間段時,由于需要的高速緩存行在Ll數(shù)據(jù)高速緩沖存儲器140中,所以不需要填充緩沖器查找。步驟530檢測填充器緩沖器146的不活躍性并且停用與填充緩沖器相關聯(lián)的邏輯。當停用了與填充緩沖器146相關聯(lián)的邏輯時,處理單元105在每次存儲器訪問時消耗低的或最少的功率。在步驟M0,流程500減少Ll標簽陣列144的訪問路的數(shù)量。例如,在本發(fā)明的一個實施例中,在加載或存儲操作期間,僅訪問Ll標簽陣列144的8路中的4路。在本發(fā)明的一個實施例中,步驟540解除斷言填充緩沖器阻塞信號208以允許Ll路3-0讀取啟用信號202和Ll路7-4讀取啟用信號204來控制Ll標簽陣列144的激活。在步驟550,流程 500檢查是否存在任何高速緩存未命中。如果不存在,那么流程500返回步驟550。如果存在,那么流程500進行到步驟560以激活與填充緩沖器146相關聯(lián)的邏輯。 步驟560在停用與填充緩沖器146相關聯(lián)的邏輯之后檢測Ll數(shù)據(jù)高速緩沖存儲器140的第一個高速緩沖存儲器未命中。盡管第一個未命中會導致激活與填充緩沖器146相關聯(lián)的邏輯的損失,但是由于在Ll數(shù)據(jù)高速緩沖存儲器140中的一長串高速緩存命中之后填充緩沖器被阻塞,所以對處理單元105的性能的影響是極小的。在步驟M0,針對訪問啟用Ll標簽陣列144的所有的路,然后流程結束。在本發(fā)明的一個實施例中,斷言填充緩沖器阻塞信號208以阻止Ll路3-0讀取啟用信號202和Ll路7_4讀取啟用信號204控制Ll標簽陣列144的激活并且在每次加載或存儲操作時檢查Ll標簽陣列144的所有的路。圖6說明了根據(jù)本發(fā)明的一個實施例的用于實現(xiàn)本文中所公開的方法的系統(tǒng) 600。系統(tǒng)600包括但不限于臺式計算機、膝上型計算機、上網(wǎng)本、筆記本計算機、個人數(shù)字助理(PDA)、服務器、工作站、蜂窩電話、移動計算設備、互聯(lián)網(wǎng)設備或任何其他類型的計算設備。在另一實施例中,用于實現(xiàn)本文所公開的方法的系統(tǒng)600可以是片上系統(tǒng)(SOC)系統(tǒng)。處理器610具有用于執(zhí)行系統(tǒng)600的指令的處理核心612。處理核心612包括但不限于用于提取指令的預取邏輯、用于解碼指令的解碼邏輯、用于執(zhí)行指令的執(zhí)行邏輯等。 處理器610具有用于對系統(tǒng)600的指令和/或數(shù)據(jù)進行高速緩存的高速緩沖存儲器616。 在本發(fā)明的另一實施例中,高速緩沖存儲器616包括但不限于1級、2級和3級、高速緩沖存儲器或處理器610中的任何其他配置的高速緩沖存儲器。存儲器控制中心(MCH)614執(zhí)行使得處理器610能夠訪問存儲器630和與存儲器 630進行通信的功能,所述存儲器630包括易失性存儲器632和/或非易失性存儲器634。 易失性存儲器632包括但不限于同步動態(tài)隨機存取存儲器(SDRAM)、動態(tài)隨機存取存儲器 (DRAM)、RAMBUS動態(tài)隨機存取存儲器(RDRAM)和/或任何其他類型的隨機存取存儲設備。非易失性存儲器634包括但不限于NAND閃速存儲器、相變存儲器(PCM)、只讀存儲器(ROM)、 電可擦可編程只讀存儲器(EEPROM)或任何其他類型的非易失性存儲設備。存儲器630存儲要由處理器610執(zhí)行的信息和指令。當處理器610在執(zhí)行指令時,存儲器630還可以存儲臨時變量或其他中間信息。芯片組620經由點到點(PtP)接口 617和622與處理器610連接。芯片組620使得處理器610能夠連接到系統(tǒng)600中的其他模塊。在本發(fā)明的一個實施例中,接口 617和622依照PtP通信協(xié)議(諸如Intel 快速路徑互聯(lián)(QPI)等)進行操作。芯片組620連接到顯示設備640,所述顯示設備640包括但不限于液晶顯示器(LCD)、陰極射線管(CRT)顯示器或任何其他形式的視覺顯示設備。此外,芯片組620連接到一個或多個總線650和655,所述總線650和655互連各個模塊674、660、662、664和666。如果在總線速度或通信協(xié)議方面存在不匹配,那么總線 650和655可以經由總線橋672互連起來。芯片組620與非易失性存儲器660、大容量存儲設備662、鍵盤/鼠標664和網(wǎng)絡接口 666相耦合(但并不限于這些設備)。大容量存儲設備662包括但不限于固態(tài)驅動器、硬盤驅動器、通用串行總線閃速存儲設備或任何其他形式的計算機數(shù)據(jù)存儲介質。使用任何類型的公知的網(wǎng)絡接口標準來實現(xiàn)網(wǎng)絡接口 666,該網(wǎng)絡接口標準包括但不限于以太網(wǎng)接口、通用串行總線(USB)接口、外圍部件互連(PCI)快速接口、無線接口和/或任何其他合適類型的接口。該無線接口根據(jù)IEEE 802. 11標準和其相關的協(xié)議族、家庭插電AV (HPAV)、超寬帶(UWB)、藍牙、WiMax或任何形式的無線通信協(xié)議(但并不限于這些協(xié)議)進行操作。盡管圖6中示出的模塊被描述為系統(tǒng)600中的分離的塊,但是由這些塊中的一些執(zhí)行的功能可以集成在單個半導體電路中或可以使用兩個或更多個分離的集成電路來實現(xiàn)。例如,盡管高速緩沖存儲器616被描述為處理器610中的分離的塊,但是高速緩沖存儲器616可以分別地包括在處理器核心612中。在本發(fā)明的另一實施例中,系統(tǒng)600可以包括不止一個處理器/處理核心??梢杂糜布④浖?、固件或它們的任何其他組合來實現(xiàn)本文公開的方法。盡管描述了所公開主題的實施例的示例,但是相關領域中的普通技術人員將容易意識到,可以替換地使用實現(xiàn)所公開主題的許多其他方法。在前面的描述中,已經描述了所公開主題的各個方面。為了解釋的目的,闡述了具體的數(shù)字、系統(tǒng)和配置以便提供對本主題的透徹理解。然而,對受益于本公開的相關領域的技術人員顯而易見的是,可以在沒有這些具體細節(jié)的情況下實現(xiàn)本主題。在其他實例中,省略、簡化、合并或拆分了公知的特征、部件或模塊,以免模糊所公開的主題。本文中所使用的術語“是可操作的”意味著當設備或系統(tǒng)處于斷電狀態(tài)時,設備、 系統(tǒng)、協(xié)議等能夠針對其期望的功能進行操作或適于進行操作??梢杂糜布?、固件、軟件或它們的組合來實現(xiàn)所公開主題的各個實施例,并且可以參考或結合程序代碼對其進行描述,其中,所述程序代碼(諸如指令、函數(shù)、過程、數(shù)據(jù)結構、邏輯、應用程序、用于設計的模擬、仿真和制作的設計表示或格式)當由機器訪問時,使得該機器執(zhí)行任務、定義抽象數(shù)據(jù)類型或低層硬件環(huán)境或產生結果??梢杂迷谝粋€或多個計算設備上存儲和執(zhí)行的代碼和數(shù)據(jù)來實現(xiàn)附圖中示出的技術,其中所述計算設備諸如通用計算機或計算設備。這些計算設備使用機器可讀介質來存儲和(內部地以及通過網(wǎng)絡與其他計算設備)傳輸代碼和數(shù)據(jù),其中,所述機器可讀介質諸如機器可讀存儲介質(例如,磁盤、光盤、隨機存取存儲器、只讀存儲器、閃速存儲設備、 相變存儲器)和機器可讀通信介質(例如,電、光、聲或其他形式的傳播信號一諸如載波、紅外線信號、數(shù)字信號等)。盡管已經參考說明性的實施例描述了所公開的主題,但是本描述不意圖以限制的意思進行解釋。說明性的實施例的各種修改以及本主題的其他實施例被認為是落在所公開的主題的范圍內,上述說明性的實施例的各種修改以及本主題的其他實施例對所公開主題所屬的領域中的技術人員而言是顯而易見的。
權利要求
1.一種裝置,包括具有多個路的數(shù)據(jù)高速緩沖存儲器;以及與所述數(shù)據(jù)高速緩沖存儲器耦合的邏輯,其用于響應于加載指令或存儲指令促成僅對所述數(shù)據(jù)高速緩沖存儲器的所述多個路的部分進行訪問。
2.根據(jù)權利要求1所述的裝置,其中,用于促成僅對所述數(shù)據(jù)高速緩沖存儲器的所述多個路的部分進行訪問的所述邏輯至少部分地基于所述數(shù)據(jù)高速緩沖存儲器的虛擬地址的地址位來促成僅對所述數(shù)據(jù)高速緩沖存儲器的所述多個路的部分進行訪問。
3.根據(jù)權利要求1所述的裝置,其中,所述數(shù)據(jù)高速緩沖存儲器包括數(shù)據(jù)陣列,并且其中,所述邏輯還用于確定所述數(shù)據(jù)陣列的連續(xù)高速緩沖存儲器命中的數(shù)量是否超過閾值。
4.根據(jù)權利要求3所述的裝置,其中,所述數(shù)據(jù)高速緩沖存儲器包括具有所述多個路的標簽陣列,并且其中,所述邏輯還用于響應于確定所述數(shù)據(jù)陣列的連續(xù)高速緩沖存儲器命中的數(shù)量已經超過所述閾值,促成僅對所述標簽陣列的所述多個路的部分進行訪問。
5.根據(jù)權利要求3所述的裝置,還包括一個或多個填充緩沖器,并且其中,所述邏輯還用于響應于確定所述數(shù)據(jù)陣列的連續(xù)高速緩沖存儲器命中的數(shù)量已經超過所述閾值,禁用與所述一個或多個填充緩沖器相關聯(lián)的邏輯。
6.根據(jù)權利要求5所述的裝置,其中,所述邏輯還用于確定是否存在所述數(shù)據(jù)陣列的高速緩沖存儲器未命中;以及響應于確定存在所述數(shù)據(jù)陣列的高速緩沖存儲器未命中,啟用與所述一個或多個填充緩沖器相關聯(lián)的所述邏輯。
7.根據(jù)權利要求4所述的裝置,其中,所述邏輯還用于確定與所述加載指令或所述存儲指令相關聯(lián)的虛擬地址是否索引到映射到另一虛擬地址的物理地址;以及響應于確定與所述加載指令或所述存儲指令相關聯(lián)的所述虛擬地址索引到映射到另一虛擬地址的物理地址,促成對所述數(shù)據(jù)高速緩沖存儲器的所述多個路的所有的路進行訪問。
8.一種裝置,包括1級(Li)非阻塞高速緩沖存儲器;以及耦合到所述Ll非阻塞高速緩沖存儲器的邏輯,用于確定所述Ll非阻塞高速緩沖存儲器的高速緩沖存儲器命中的連續(xù)時鐘的數(shù)量是否超過閾值;以及響應于確定所述Ll非阻塞高速緩沖存儲器的高速緩沖存儲器命中的連續(xù)時鐘的數(shù)量已經超過所述閾值,停用對多個填充緩沖器的訪問。
9.根據(jù)權利要求8所述的裝置,其中,所述邏輯還用于確定是否存在所述Ll非阻塞高速緩沖存儲器的高速緩沖存儲器未命中;以及響應于確定存在所述Ll非阻塞高速緩沖存儲器的高速緩沖存儲器未命中,激活對所述多個填充緩沖器的所述訪問。
10.根據(jù)權利要求8所述的裝置,其中,所述Ll非阻塞高速緩沖存儲器是具有N路數(shù)據(jù)陣列的N路組相聯(lián)高速緩沖存儲器,并且其中,所述N路數(shù)據(jù)陣列被劃分為兩個或更多個組,并且其中,所述邏輯還用于接收訪問所述N路組相聯(lián)高速緩沖存儲器的加載請求或存儲請求;以及響應于所接收的加載請求或存儲請求,允許僅對所述N路數(shù)據(jù)陣列的所述兩個或更多個組中的一個組進行訪問。
11.根據(jù)權利要求10所述的裝置,其中,用于允許僅對所述N路數(shù)據(jù)陣列的所述兩個或更多個組中的一個組進行訪問的所述邏輯至少部分地基于所述Ll非阻塞高速緩沖存儲器的虛擬地址的地址位來允許僅對所述N路數(shù)據(jù)陣列的所述兩個或更多個組中的一個組進行訪問。
12.根據(jù)權利要求10所述的裝置,其中,所述N路數(shù)據(jù)陣列的每個組具有啟用信號,并且其中,用于允許僅對所述N路數(shù)據(jù)陣列的所述兩個或更多個組中的一個組進行訪問的所述邏輯至少部分地基于所述N路數(shù)據(jù)陣列的每個組的每個啟用信號來允許僅對所述N路數(shù)據(jù)陣列的所述兩個或更多個組中的一個組進行訪問。
13.根據(jù)權利要求10所述的裝置,其中,所述N路組相聯(lián)高速緩沖存儲器還包括N路標簽陣列,并且其中,所述N路標簽陣列被劃分為所述兩個或更多個組,并且其中,所述邏輯還用于響應于確定所述Ll非阻塞高速緩沖存儲器的高速緩沖存儲器命中的連續(xù)時鐘的數(shù)量已經超過所述閾值,允許響應于所接收的加載請求或存儲請求僅對所述N路標簽陣列的所述兩個或更多個組中的一個組進行訪問。
14.根據(jù)權利要求8所述的裝置,其中,所述裝置是亂序處理器。
15.一種方法,包括接收訪問具有多個路的組相聯(lián)高速緩沖存儲器的加載指令或存儲指令;以及響應于所接收的加載指令或存儲指令促成僅對所述組相聯(lián)高速緩沖存儲器的所述多個路的部分進行訪問。
16.根據(jù)權利要求15所述的方法,還包括確定所述組相聯(lián)高速緩沖存儲器的高速緩沖存儲器命中的連續(xù)時鐘的數(shù)量是否超過閾值。
17.根據(jù)權利要求16所述的方法,還包括響應于確定所述組相聯(lián)高速緩沖存儲器的高速緩沖存儲器命中的連續(xù)時鐘的數(shù)量已經超過所述閾值,停用對多個填充緩沖器的訪問。
18.根據(jù)權利要求17所述的方法,還包括確定是否存在所述組相聯(lián)高速緩沖存儲器的高速緩沖存儲器未命中;以及響應于確定存在所述組相聯(lián)高速緩沖存儲器的高速緩沖存儲器未命中,激活對所述多個填充緩沖器的所述訪問。
19.根據(jù)權利要求15所述的方法,其中,所述組相聯(lián)高速緩沖存儲器包括具有所述多個路的數(shù)據(jù)陣列,并且其中,所述數(shù)據(jù)陣列被劃分為兩個或更多個的組,并且其中,促成僅對所述組相聯(lián)高速緩沖存儲器的所述多個路的部分進行訪問包括允許僅對所述數(shù)據(jù)陣列的所述兩個或更多個組中的一個組進行訪問。
20.根據(jù)權利要求15所述的方法,其中,促成僅對所述組相聯(lián)高速緩沖存儲器的所述多個路的部分進行訪問包括至少部分地基于所述組相聯(lián)高速緩沖存儲器的虛擬地址的地址位促成僅對所述組相聯(lián)高速緩沖存儲器的所述多個路的部分進行訪問。
全文摘要
一種用于降低存儲設備功耗的方法和系統(tǒng)。在本發(fā)明的一個實施例中,存儲設備是N路組相聯(lián)1級(L1)高速緩沖存儲器并且存在與該數(shù)據(jù)高速緩沖存儲器耦合的邏輯來響應于加載指令或存儲指令促成僅對N路組相聯(lián)L1高速緩沖存儲器的N路的部分進行訪問。在本發(fā)明的一個實施例中,通過減少針對每個加載或存儲請求的訪問N路組相聯(lián)L1高速緩沖存儲器的路的數(shù)量,降低了N路組相聯(lián)L1高速緩沖存儲器的功率要求。在本發(fā)明的一個實施例中,當作出對高速緩沖存儲器的訪問僅需要N路組相聯(lián)L1高速緩沖存儲器的數(shù)據(jù)陣列的預測時,停用或禁用對填充緩沖器的訪問。
文檔編號G06F12/02GK102298554SQ20111017431
公開日2011年12月28日 申請日期2011年6月24日 優(yōu)先權日2010年6月24日
發(fā)明者E·科亨, O·馬古利斯, R·薩德, S·施瓦茲曼 申請人:英特爾公司