本申請要求2016年4月18日提交的標題為“DYNAMIC POWERING OF CACHE MEMORY BY WAYS WITHIN MULTIPLE SET GROUPS BASED ON UTILIZATION TRENDS”的第62/323,859號美國臨時申請的優(yōu)先權,其全部內容通過引用包含于此。
背景技術:
處理器是執(zhí)行計算機程序所指定的指令的數(shù)字裝置。典型的計算機系統(tǒng)包括連接至系統(tǒng)存儲器的處理器,其中該系統(tǒng)存儲器存儲程序指令和這些程序指令要處理的數(shù)據(jù)。這種系統(tǒng)的性能受到以下事實的妨礙:將數(shù)據(jù)從系統(tǒng)存儲器讀取到處理器中或者將數(shù)據(jù)從處理器寫入系統(tǒng)存儲器所需的時間通常比處理器執(zhí)行用于處理該數(shù)據(jù)的指令所需的時間大得多。該時間差經(jīng)常介于1~2個數(shù)量級。因而,處理器在等待對存儲器進行讀取或寫入時,可能處于閑置而不進行任何操作。
然而,處理器設計人員很久以前就意識到,程序趨于對相對較小比例的數(shù)據(jù)進行相對較大比例的時間的訪問,諸如頻繁訪問的程序變量等。具有該特征的程序被認為表現(xiàn)出良好的時間局部性,并且該特征的傾向被稱為參考原則的局部性。為了利用該原則,現(xiàn)代處理器通常包括一個或多個高速緩沖存儲器。高速緩沖存儲器或高速緩存器相對于系統(tǒng)存儲器大小是小型存儲器,并且電氣上接近處理器內核,其中該高速緩沖存儲器或高速緩存器暫時存儲通常駐留在計算機系統(tǒng)的更大且更遠的存儲器(諸如系統(tǒng)存儲器等)中的數(shù)據(jù)的子集。對數(shù)據(jù)進行高速緩存是將數(shù)據(jù)存儲在高速緩沖存儲器的存儲元件中,使得隨后與從系統(tǒng)的更遠存儲器提供數(shù)據(jù)相比,可以從高速緩沖存儲器更快地提供數(shù)據(jù)。
當處理器執(zhí)行存儲器讀取指令(諸如加載或彈出指令等)時,處理器首先檢查所請求的數(shù)據(jù)是否存在于高速緩存器中、即存儲器讀取地址在高速緩存器中是否命中(hit)。如果所請求的數(shù)據(jù)不存在于高速緩存器中、即如果存儲器讀取地址在高速緩沖器中未命中(miss),則處理器通常除將數(shù)據(jù)加載到處理器的指定寄存器中外,還將該數(shù)據(jù)取指到高速緩存器中。現(xiàn)在由于數(shù)據(jù)存在于高速緩存器中,因此下次遇到請求相同數(shù)據(jù)的存儲器讀取指令時,可以將該數(shù)據(jù)從高速緩存器(而不是系統(tǒng)存儲器)取指(fetch)到寄存器中以供處理。由于數(shù)據(jù)已存在于高速緩存器中,因此基本上可以立即執(zhí)行存儲器讀取指令。
高速緩存器按高速緩存行(cache lines)或高速緩存塊(cache blocks)存儲數(shù)據(jù)。高速緩存行是在高速緩存器和系統(tǒng)存儲器之間可以傳送的數(shù)據(jù)的最小單位。高速緩存行大小的示例是64字節(jié)的數(shù)據(jù)。當存儲器讀取指令導致高速緩存未命中時,不是僅對該存儲器讀取指令所請求的數(shù)據(jù)進行取指,而是將該未命中地址所關聯(lián)(implicated)的整個高速緩存行取指到高速緩存器中。結果,由于可以從高速緩存器供給數(shù)據(jù)、而不必訪問系統(tǒng)存儲器,因此可以快速地執(zhí)行用于請求相同高速緩存行中的數(shù)據(jù)的后續(xù)存儲器讀取指令。
另外,當執(zhí)行存儲器寫入指令(諸如存儲或推入(push)指令等)時,如果存儲器寫入地址在高速緩存器中命中,則可以將數(shù)據(jù)立即寫入高速緩存器的高速緩存行,由此使得推遲向系統(tǒng)存儲器的數(shù)據(jù)寫入。隨后,通常為了為較新的高速緩存行騰出空間,高速緩存器將該高速緩存行寫入系統(tǒng)存儲器。該操作通常被稱為寫回操作。此外,當存儲器寫入地址在高速緩存器中未命中時,一些高速緩存器還分配該高速緩存器中的條目(entry)。即,高速緩存器進行該高速緩存器的條目中的舊高速緩存行的寫回操作,并且將寫入地址所關聯(lián)的新高速緩存行從系統(tǒng)存儲器讀取到以前被舊高速緩存行占用的高速緩存條目中。該操作通常被稱為寫入分配操作。
可以觀察到,高效地起作用的高速緩存器可以大大提高處理器的性能。另外,在許多情況下,特別是在高速緩沖存儲器大(諸如處理器的高速緩沖存儲器層級中的末級高速緩存器)時,高速緩沖存儲器占據(jù)了處理器的電力消耗的很大比例。還期望降低高速緩沖存儲器所消耗的電量,這通常是與提高處理器的性能的目標進行競爭的目標。
技術實現(xiàn)要素:
本發(fā)明提供一種集關聯(lián)式高速緩沖存儲器,包括:排列為M個集×N個通路的存儲條目的M×N的存儲器陣列,其中M和N兩者都是大于1的整數(shù);在所述M個集的互斥的P個組中的各組內,所述N個通路能夠單獨被供電;以及控制器,用于針對所述P個組中的各組,監(jiān)視該組的利用趨勢,并且在不同的時間實例期間基于所述利用趨勢來動態(tài)地使得向該組的所述N個通路中的不同數(shù)量的通路提供電力。
本發(fā)明還提供一種使集關聯(lián)式高速緩沖存儲器進行工作的方法,所述高速緩沖存儲器具有排列為M個集×N個通路的存儲條目的M×N的存儲器陣列,其中M和N兩者都是大于1的整數(shù),在所述M個集的互斥的P個組中的各組內,所述N個通路能夠單獨供電,所述方法包括以下步驟:針對所述P個組中各個組,監(jiān)視所述組的利用趨勢;以及在不同的時間實例期間,基于所述利用趨勢來動態(tài)地使得向所述組的N個通路中的不同數(shù)量的通路提供電力。
本發(fā)明還提供一種處理器,包括:多個處理核;高速緩沖存儲器,其耦接至所述多個處理核,所述高速緩沖存儲器包括:排列為M個集×N個通路的存儲條目的M×N的存儲器陣列,其中M和N兩者都是大于1的整數(shù);在所述M個集的互斥的P個組中的各組內,所述N個通路能夠單獨供電;以及控制器,用于針對所述P個組中的各組,監(jiān)視該組的利用趨勢,并且在不同的時間實例期間基于所述利用趨勢來向該組的所述N個通路中的不同數(shù)量的通路動態(tài)地提供電力。
附圖說明
圖1是示出處理器的框圖。
圖2是更詳細地示出圖1的高速緩沖存儲器的框圖。
圖3是示出圖2的高速緩沖存儲器的用以進行集(set)的組(group)的通路(way)的選擇性供電的操作的流程圖。
圖4是示出圖2的高速緩沖存儲器的用以根據(jù)圖3的流程圖來進行集的組的通路的選擇性供電的操作的示例的框圖。
圖5~8是示出根據(jù)不同實施例的、圖2的高速緩沖存儲器的用以進行集的組的通路的選擇性供電的操作的流程圖。
具體實施方式
在本公開中描述將集分組成多個集組(set group)的集關聯(lián)(set-associate)式高速緩沖存儲器的實施例,其中在集關聯(lián)式高速緩沖存儲器的各集組內,可以在高速緩沖存儲器的工作期間動態(tài)地改變所通電或斷電的通路的數(shù)量,從而提供高速緩沖存儲器的性能和電力消耗之間的期望平衡。也就是說,高速緩沖存儲器有時從集組的通路中的一些通路中去除電力且有時向集組的通路中的一些通路提供電力,并且動態(tài)地確定高速緩沖存儲器去除/提供電力所針對的通路的數(shù)量。高速緩沖存儲器包括控制器,其中該控制器監(jiān)視高速緩沖存儲器的不同集組的利用趨勢(utilization trends),以作出與何時增加或減少所通電的各集組的通路的數(shù)量有關的決定。利用趨勢包括但不限于命中率、平均犧牲者高速緩存行年齡、預取但未使用的高速緩存行的數(shù)量和/或訪問頻率中的一個或其組合。
在本公開中從高速緩沖存儲器的一組集的通路中去除電力意味著完全去除電力、或者至少去除電力使得該組的通路中的存儲單元的狀態(tài)丟失或至少不可靠。這與如下的其它省電技術形成對比:減少提供至存儲單元的電力,這或許導致性能下降,但提供了足以保持存儲單元的狀態(tài)的電力。相反,在本公開中向高速緩沖存儲器的一組集的通路提供電力意味著提供足以保持存儲單元的當前狀態(tài)的電力。
現(xiàn)在參考圖1,示出例示處理器100的框圖。處理器100包括全部耦接至高速緩沖存儲器132并且共用高速緩沖器132的多個處理核102。優(yōu)選地,各核102還包括其自身的較低級的高速緩沖存儲器(例如,1級(L1)指令高速緩沖存儲器和L1數(shù)據(jù)高速緩沖存儲器),并且高速緩沖存儲器132是處理器100的末級高速緩存器(LLC)。另外,處理器100可以包括中間級高速緩沖存儲器(例如,2級(L2)高速緩存器),其中該中間級高速緩沖存儲器相對于核102可以是本地的,或者可以由兩個或更多核102共用。已考慮到如下的實施例:被配置為基于利用趨勢來動態(tài)地向集組內的所述數(shù)量的通路供電的高速緩沖存儲器是較低/中間級高速緩沖存儲器而不是LLC。此外,盡管針對圖1來說明處理器的與多個核共用高速緩沖存儲器的多核處理器有關的實施例,但已考慮到如下的其它實施例:多個核不共用被配置為基于利用趨勢來動態(tài)地向集組內的多個通路供電的高速緩沖存儲器,而是該高速緩沖存儲器專用于可作為處理器100中的單個核102的核102。
現(xiàn)在參考圖2,示出更詳細地例示圖1的高速緩沖存儲器132的框圖。高速緩沖存儲器132包括存儲條目的存儲器陣列206和包含利用計數(shù)器204的控制器202。存儲器陣列206排列為M個集×N個通路。在圖2的示例實施例中,存在16個通路和128個集,并且這128個集排列成各組具有互斥(mutually exclusive)的16個集的8個集組。應當理解,被配置為基于利用趨勢來動態(tài)地向集組內的多個通路供電的高速緩沖存儲器132可以包括更多或更少的通路、集以及各集組內的集。
利用控制器202可單獨地向各集組內的通路供電。在一個實施例中,控制器202包括針對各集組的各個通路啟用寄存器(未示出)。各通路啟用寄存器針對各個組保持用于指定該通路是通電還是斷電的、與N個通路相關聯(lián)的N個位。如以下所述,控制器202設置/清除組的通路啟用寄存器的位,以相對于該組的通路提供/去除電力,從而減少/增加針對該組所通電的通路的數(shù)量。在替代實施例中,控制器202包括全局通路啟用寄存器和Q個本地通路啟用寄存器,其中Q小于N。各本地通路啟用寄存器具有表示集組中的哪個集組與該本地通路啟用寄存器相關聯(lián)的關聯(lián)指示符。各有效本地通路啟用寄存器控制關聯(lián)指示符所指定的組的通路的供電,并且利用全局通路指示符來控制本地通路指示符沒有指定的組的通路的供電。可選地,與各本地通路啟用寄存器相關聯(lián)的指示符指定開始和結束組,使得由關聯(lián)的本地通路啟用寄存器來控制開始和結束規(guī)格中所包括的所有組。特別是在大量組使其通路的全部或僅一個通電的情形中,這些實施例可以在提供足夠的電力控制的同時,在大小和電力消耗方面更高效。在一個實施例中,可由控制器202單獨對一組集內的通路以成對方式供電。即,控制器202一次向組內的兩個通路提供/去除電力。
存儲器陣列206的存儲條目存儲高速緩存行的數(shù)據(jù)和這些高速緩存行的關聯(lián)狀況信息(例如,MESI(Modified Exclusive Shared or Invalid)狀態(tài))。在一個實施例中,單獨的存儲器陣列存儲該數(shù)據(jù)和狀況。另外,陣列206包括每一集的用于保持替換信息的存儲元件,其中該替換信息用于確定將分配集中的哪個通路。該替換信息還可以保持在與數(shù)據(jù)和/或狀況陣列分開的存儲器陣列中。
控制器202監(jiān)視高速緩沖存儲器132的利用,以嘗試利用處理器100正執(zhí)行的程序來確定利用隨時間經(jīng)過的趨勢。如上所述,利用趨勢包括但不限于命中率、平均犧牲者高速緩存行年齡、預取但未使用的高速緩存行的數(shù)量和/或訪問頻率中的一個或其組合。因而,計數(shù)器204可用于針對各集組存儲向該集組的高速緩存命中的數(shù)量、向該集組的訪問的次數(shù)和該集組中的高速緩存行的年齡。計數(shù)器204還可以包括諸如位圖或移位寄存器等的存儲器,其中該存儲器用于存儲其它信息(諸如用于指示是否預取了集組的高速緩存行以及是否在預取之后驅逐(evicted)之前使用了集組的高速緩存行的指示等)。如以下更詳細地所述,控制器202還保持用于將計數(shù)器204中所存儲的值與之進行比較的各種閾值??刂破?02還包括用于進行監(jiān)視集組的利用并作出與利用趨勢有關的決定所需的計算的邏輯。在一個實施例中,不是具有針對各集組的一組計數(shù)器204,而是控制器202包括較少集合的計數(shù)器204,其中通過監(jiān)視不同集組的利用趨勢以時分復用方式共用該較少集合的計數(shù)器204。
現(xiàn)在參考圖3,示出例示圖2的高速緩沖存儲器132的用以進行集的組的通路的選擇性供電的操作的流程圖。流程從塊301開始。
在塊301中,控制器202將索引初始化為0。該索引在這里被稱為J。流程進入塊302。
在塊302中,控制器202最初向高速緩沖存儲器132的所有集組的所有通路提供電力。流程進入塊304。
在塊304中,控制器202監(jiān)視當前集組(組[J])的一個或多個利用趨勢。圖5~8描述以下方式的各種實施例:控制器202監(jiān)視集組的利用趨勢;以及控制器202(例如,在決定塊306和316中)判斷減少或增加集組的通電通路的數(shù)量是否有益。流程進入決定塊306。
在決定塊306中,控制器202判斷在塊304中所監(jiān)視的集組的利用趨勢是否表示減少集組中的通電通路的數(shù)量(例如,減少電力消耗以換取可接受的性能損失)將是有益的。如果為“是”,則流程進入塊308;否則,流程進入決定塊316。
在塊308中,控制器202減少集組的通電通路的數(shù)量。即,控制器202使集組中的當前通電通路中的一個或多個通路(被稱為目標通路)斷電。在圖4中示出如下示例:例如,集組4的通路15在時刻1處通電,但隨后在時刻2處由控制器202斷電。另外,在使該組的目標通路斷電之前,控制器202驅逐這些目標通路中具有有效數(shù)據(jù)的所有高速緩存行,使得有效數(shù)據(jù)不會丟失。流程進入塊322。
在決定塊316中,控制器202判斷塊304中所監(jiān)視的集組的利用趨勢是否表示增加集組中的通電通路的數(shù)量(例如,提升性能以換取可接受的電力消耗增加)將是有益的。如果為“是”,則流程進入塊318;否則,流程進入塊322。
在塊318中,控制器202增加集組的通電通路的數(shù)量。即,控制器202使集組的當前通電通路中的一個或多個通路(被稱為目標通路)通電。在圖4中示出如下示例:例如,集組5的通路5和6在時刻1處斷電,但隨后在時刻2處由控制器202通電。另外,在使該組的目標通路通電之后,控制器202使目標通路無效。流程進入塊322。
在塊322中,控制器202更新索引J以指定下一集組,其中該操作優(yōu)選包括使J遞增、并且在J達到集組的數(shù)量的情況下繞回到0。流程返回至塊304以監(jiān)視該索引所指定的下一集組的利用。
盡管圖3(以及圖5~8)描述了以時分復用方式監(jiān)視單個組并且動態(tài)地調整該單個組的大小的實施例,但在其它實施例中,根據(jù)用以進行監(jiān)視的資源(例如,計數(shù)器204)的可用性,可以以時分復用方式監(jiān)視一個以上的組并且動態(tài)地調整這些組的大小。此外,在其它實施例中,控制器202包括足以同時進行針對所有組的監(jiān)視和動態(tài)調整大小的資源(例如,計數(shù)器204),使得不必進行時分復用。例如,在圖7的實施例中(在該實施例中預取但未使用的高速緩存行的數(shù)量為被監(jiān)視的利用趨勢),所需的資源量可能相對較小,使得包括針對所有組的監(jiān)視和調整大小的硬件將是大小和電力消耗方面的有利折衷。
優(yōu)選地,在早于對調整集組的大小進行評價的時間點的時間滾動窗口內測量針對圖5~8所述的命中率、預取但未使用就被驅逐的高速緩存行的數(shù)量、平均犧牲者高速緩存行年齡和訪問頻率。
優(yōu)選地,閾值是不同的,從而提供滯后影響(hysteresis affect),以避免不必要地、過于頻繁地改變集組的大小。這是特別有益的,因為盡管與增大組的大小相關聯(lián)的性能成本可能很少(可能沒有)(盡管可能存在電力消耗成本),但由于必須首先驅逐斷電的目標通路中的有效高速緩存行,因而可能存在與減小組的大小相關聯(lián)的顯著的性能成本。
現(xiàn)在參考圖4,示出例示圖2的高速緩沖存儲器132的用以根據(jù)圖3的流程圖進行集的組的通路的選擇性供電的操作的示例的框圖。
可以觀察到,圖4示出高速緩沖存儲器132的各個集組(在該示例中為8個)的各個通路是通電(灰色)還是斷電(白色)。圖4示出在兩個不同的時間點(表示為時刻1和時刻2)處各集組的哪些通路通電/斷電,其中時刻2在時刻1之后。
在圖4的示例中,在時刻1處:集組0的通路3~12通電,并且其通路0~2和13~15斷電;集組1的通路0~13通電,并且其通路14~15斷電;集組2的通路0~11和15通電,并且其通路12~14斷電;集組3的通路1~11和14~15通電,并且其通路0和12~13斷電;集組4的通路0~15通電,并且沒有通路斷電;集組5的通路0~4通電,并且其通路5~15斷電;集組6的通路0~15通電,并且沒有通路斷電;集組7的通路2~15通電,并且其通路0~1斷電。
在圖4的示例中,在時刻2處:集組0的通路0和3~12通電并且其通路1~2和13~15斷電,即利用控制器202使通路0通電,由此使所通電的通路的數(shù)量增加1;集組1的通路0~14通電并且其通路15斷電,即利用控制器202使通路14通電,由此使所通電的通路的數(shù)量增加1;集組2的通路1~11和15通電并且其通路0和12~14斷電,即利用控制器202使通路0斷電,由此使所通電的通路的數(shù)量減少1;集組3的通路1~11和14~15通電并且其通路0和12~13斷電,即控制器202沒有改變所通電的通路的數(shù)量;集組4的通路0~14通電并且其通路15斷電,即利用控制器202使通路15斷電,由此使所通電的通路的數(shù)量減少1;集組5的通路0~6通電并且其通路7~15斷電,即利用控制器202使通路5~6通電,由此使所通電的通路的數(shù)量增加2;集組6的通路0~15通電并且沒有通路斷電,即控制器202沒有改變所通電的通路的數(shù)量;集組7的通路3~15通電并且其通路0~2斷電,即利用控制器202使通路2斷電,由此使所通電的通路的數(shù)量減少1。
盡管圖4示出了集組內的集呈現(xiàn)為彼此連續(xù)(即,集的索引是順次的)的實施例,但已考慮到集組內的集的索引為非順次的其它實施例。例如,在集組內的集的索引可以是該索引以組的數(shù)量為模的值相等的集,例如,假定8個組,則集3、11、19等在同一組中。
在一個實施例中,如作為2014年12月14日提交的PCT申請PCT/IB2014/003261(代理人案號VAS.2723-PCT)的美國國家階段申請的、2015年11月12日提交的美國專利申請14/890,895(代理人案號VAS.2723-PCT-US)所述,高速緩沖存儲器132針對集內的不同組的通路采用不同的替換策略,其中各個申請的全部內容通過引用而包含于此以用于所有目的。用以分別向高速緩沖存儲器132的集組內的通路動態(tài)地提供電力的能力可以是特別有用的,并且與這種高速緩沖存儲器132產生協(xié)作增效。
現(xiàn)在參考圖5,示出例示圖2的高速緩沖存儲器132的用以進行集的組的通路的選擇性供電的操作的流程圖。圖5的實施例采用集組內的平均犧牲者高速緩存行年齡,作為用于判斷減少或增加針對各集組所通電的通路的數(shù)量是否可能是有益的利用趨勢。高速緩存行的犧牲者年齡是從針對高速緩存行分配高速緩沖存儲器132中的條目時起直到從高速緩沖存儲器132驅逐該高速緩存行時為止的時間的度量。犧牲者年齡可以從高速緩沖存儲器132的時鐘周期、向高速緩沖存儲器132的訪問、向集組的訪問或其它適當時間單位方面進行測量。在一個實施例中,圖2的利用計數(shù)器204記錄當前集組中的高速緩存行的犧牲者年齡,并且控制器202(例如,在塊504中)在諸如以下等的適當事件時計算高速緩存行犧牲者年齡的平均值:預定時間段結束時、(例如,在圖5的流程圖的各循環(huán)處)監(jiān)視新的集組時、從集組所驅逐的高速緩存行的數(shù)量達到閾值時、或者其它適當事件。
一般而言,如果針對集組的平均犧牲者年齡高,則這可能被視為如下的指示:該組可能大于當前數(shù)據(jù)集的映射到該組的一部分所需的量,并且如果使該組減少為數(shù)量更少的通路以省電,則該較小的組可能仍足夠大以成為針對數(shù)據(jù)集的該部分高效的命中率。相反,如果針對集組的平均犧牲者年齡低,則這可被視為如下的指示:該組對于當前數(shù)據(jù)集的映射到該組的一部分而言過小,并且需要使該組增大。然而,如果針對集組的平均犧牲者年齡低、但該組已處于其最大大小(即,所有的通路已通電),則這可能是如下的指示:數(shù)據(jù)集的該部分對于該組而言僅僅是過大,以及/或者向該組的訪問的性質為較小大小的組與完整大小的組在命中率方面效率將是幾乎一樣、因此可以通過顯著地縮小組的大小來節(jié)省電力。例如,假定程序正在大的數(shù)據(jù)集內進行流傳輸,使得來自該組的高速緩存行的各新的分配最終導致將僅使用了一次的高速緩存行從該組驅逐,這將利用小的平均犧牲者高速緩存行年齡來表示。在這種情況下,具有少量通路的組與具有最大數(shù)量的通路的組在命中率方面將是幾乎一樣的效率;因而,可以通過使組的通路斷電以來顯著地減少通路的數(shù)量,以節(jié)省電力。在一個實施例中,在圖5的塊517和519中捕獲到該特征。流程從塊501開始。
在塊501中,控制器202將索引初始化為0。該索引在這里被稱為J。流程進入塊502。
在塊502中,控制器202最初向高速緩沖存儲器132的所有集組的所有通路提供電力。流程進入塊504。
在塊504中,控制器202監(jiān)視當前集組(組[J])的平均犧牲者高速緩存行年齡。流程進入決定塊506。
在決定塊506中,控制器202判斷塊504中所監(jiān)視的集組的平均犧牲者高速緩存行年齡是否大于上限閾值,在一個實施例中,該上限閾值是預定值。如果為“是”,則流程進入塊508;否則,流程進入決定塊515。
在塊508中,控制器202減少集組的通電通路的數(shù)量。另外,在使該組的目標通路斷電之前,控制器202驅逐目標通路中的具有有效數(shù)據(jù)的所有高速緩存行,使得有效數(shù)據(jù)不會丟失。流程進入塊522。
在決定塊515中,控制器202判斷塊504中所監(jiān)視的集組的平均犧牲者高速緩存行年齡是否小于下限閾值,在一個實施例中,該下限閾值是預定值。如果為“是”,則流程進入決定塊517;否則,流程進入塊518。
在決定塊517中,控制器202判斷集組的所有通路當前是否均通電。如果為“是”,則流程進入塊519;否則,流程進入塊518。
在塊518中,控制器202增加集組的通電通路的數(shù)量。另外,在使該組的目標通路通電之后,控制器202使目標通路無效。流程進入塊522。
在塊519中,控制器202使集組的通電通路的數(shù)量減少為一個通路。在替代實施例中,控制器202使集組的通電通路的數(shù)量減少為少量通路(例如,兩個、三個或四個)、而不是一個通路。另外,在使組的目標通路斷電之前,控制器202驅逐目標通路中的具有有效數(shù)據(jù)的所有高速緩存行,使得有效數(shù)據(jù)不會丟失。此外,控制器202確保其在基于集組的平均犧牲者高速緩存行年齡進行集組的通電通路的數(shù)量的任何大小調整之前,等待至少預定時間量。在不存在此一延遲的情況下,下次監(jiān)視該集組時(例如,針對該集組下次循環(huán)時),以下是極有可能的:平均犧牲者高速緩存行年齡將小于上限閾值(即,在決定塊506中為“否”),平均犧牲者高速緩存行年齡將小于下限閾值(即,在決定塊515中為“是”),并且并非所有的通路均通電(即,在決定塊517中為“否”),使得控制器202將增加通電通路的數(shù)量。然而,只要存在如上所述的條件(即,數(shù)據(jù)集的一部分對于組而言過大以及/或者向該組的訪問的性質為較小大小的組與完整大小的組在命中率方面將是幾乎一樣的效率),就期望將所通電的通路的數(shù)量保持為小。即,只要存在該條件,則增加通路的數(shù)量就沒有幫助。此一延遲可以為該條件的消退(例如,流傳輸?shù)耐瓿?提供機會。在不存在此一延遲的情況下,盡管該條件持續(xù)存在,但控制器202可能在通電所有通路和通電單個通路之間連續(xù)振蕩,即每次通過圖5的循環(huán)時,(經(jīng)由塊518)快速地增加通電通路的數(shù)量直到該數(shù)量達到所有通電通路、然后(經(jīng)由塊519)下降至小的數(shù)量,這是不理想的。在一個實施例中,控制器202針對各集組包括標志,其中在設置該標志的情況下表示延遲針對集組的動態(tài)大小調整,在至少預定時間量之后,控制器202清除該標志。流程進入塊522。
在塊522中,控制器202更新索引J以指定下一集組,其中該操作優(yōu)選包括使J遞增、并且在J達到集組的數(shù)量時繞回至0。流程返回至塊504,以監(jiān)視該索引所指定的下一集組的平均犧牲者高速緩存行年齡。
現(xiàn)在參考圖6,示出例示圖2的高速緩沖存儲器132的用以進行集的組的通路的選擇性供電的操作的流程圖。圖6的實施例采用集組的命中率作為用于判斷減少或增加針對各集組所通電的通路的數(shù)量是否可能有益的利用趨勢。集組的命中率是該集組中的命中次數(shù)相對于向該集組的訪問次數(shù)的比率。在一個實施例中,圖2的利用計數(shù)器204記錄當前集組中的命中次數(shù)和向當前集組的訪問次數(shù),并且控制器202(例如,在塊604中)在諸如以下等的適當事件時計算命中率:預定時間段結束時、(例如,在圖6的流程圖的各循環(huán)處)監(jiān)視新的集組時、或者其它適當事件。
一般而言,如果針對集組的命中率相對較低,則這可被視為如下的指示:該組對于當前數(shù)據(jù)集的映射到該組的一部分而言可能過小,并且如果使該組增加為較大數(shù)量的通路,則該較大的組可以提高針對數(shù)據(jù)集的該部分的命中率。然而,如果針對集組的命中率非常低并且該組已處于其最大大小(即,所有的通路均通電),則這可能是如下的指示:數(shù)據(jù)集的一部分對于該組而言僅僅是過大,以及/或者向該組的訪問的性質是較小大小的組在命中率方面將是與完整大小的組幾乎一樣的效率、因此可以通過顯著地減小組的大小來節(jié)省電力。如以上所論述的,具有少量通路的組可以是與具有最大數(shù)量的通路的組幾乎一樣高效的命中率;因而,可以通過使組的通路斷電來顯著地減少通路的數(shù)量,以節(jié)省電力。在一個實施例中,在圖6的塊617、619和621中捕獲到該特征。流程從塊601開始。
在塊601中,控制器202將索引初始化為0。該索引在這里被稱為J。流程進入塊602。
在塊602中,控制器202最初向高速緩沖存儲器132的所有集組的所有通路提供電力。流程進入塊604。
在塊604中,控制器202監(jiān)視當前集組(組[J])的命中率。流程進入決定塊615。
在決定塊615中,控制器202判斷在塊604中所監(jiān)視的集組的命中率是否小于第一閾值(其中,在一個實施例中,該第一閾值是預定值)。如果為“是”,則流程進入決定塊617;否則,流程進入塊622。
在決定塊617中,控制器202判斷集組的所有通路當前是否通電。如果為“是”,則流程進入決定塊619;否則,流程進入塊618。
在塊618中,控制器202增加集組的通電通路的數(shù)量。另外,在使組的目標通路通電之后,控制器202使目標通路無效。流程進入塊622。
在決定塊619中,控制器202判斷在塊604中所監(jiān)視的集組的命中率是否小于比塊615的第一閾值小的第二閾值,在一個實施例中,該第二閾值也是預定值。如果為“是”,則流程進入塊621;否則,流程進入塊622。
在塊621中,控制器202使集組的通電通路的數(shù)量減少為一個通路。另外,在使該組的目標通路斷電之前,控制器202驅逐這些目標通路中的具有有效數(shù)據(jù)的所有高速緩存行,使得有效數(shù)據(jù)不會丟失。此外,如上所述,控制器202確保其在基于集組的命中率進行集組的通電通路的數(shù)量的任何大小調整之前,等待至少預定時間量。流程進入塊622。
在塊622中,控制器202更新索引J以指定下一集組,其中該操作優(yōu)選包括使J遞增、并且在J達到集組的數(shù)量時繞回至0。流程返回至塊604,以監(jiān)視該索引所指定的下一集組的命中率。
現(xiàn)在參考圖7,示出例示圖2的高速緩沖存儲器132的用以進行集的組的通路的選擇性供電的操作的流程圖。圖7的實施例采用集組的預取但未使用高速緩存行的數(shù)量(在圖7中稱為NUM_PBNU)作為用于判斷減少或增加針對各集組所通電的通路的數(shù)量是否可能有益的利用趨勢。集組的NUM_PBNU是集組內的向集組內預取所分配、但隨后從未使用的高速緩存行的數(shù)量。在一個實施例中,各個核102包括數(shù)據(jù)預取器,其中該數(shù)據(jù)預取器基于在核102上執(zhí)行程序所產生的存儲器訪問的模式以及/或者該程序中所包括的指示核102預取高速緩存行的預取指令,來將高速緩存行預取到高速緩沖存儲器132中。
在一個實施例中,控制器202針對各集組包括計數(shù)器204和位。各位與該組的各個存儲條目相對應。在通過(例如,通過處理器100的數(shù)據(jù)或指令預取器所分配的)預取來分配條目時,設置該位,并且在利用加載/存儲需求來使用條目時,清除該位。在從條目驅逐高速緩存行時,如果設置了位,則這表示:由于從未使用所預取的高速緩存行,因此所預取的高速緩存行的分配是浪費的;因而控制器202使利用計數(shù)器204遞增。如果計數(shù)器204達到預定閾值,則這可以是表示應當減少通路的數(shù)量以節(jié)省電力的利用趨勢。在一個實施例中,將位保持在高速緩沖存儲器132的標簽陣列中。在一個實施例中,控制器202針對組的各集包括計數(shù)器204,并且控制器202僅在(例如,在決定塊706中)判斷為針對組的所有集的計數(shù)器204超過閾值的情況下,才(例如,在決定塊708中)減少所通電的通路的數(shù)量。在一個實施例中,圖2的利用計數(shù)器204記錄當前集組的NUM_PBNU,并且控制器202(例如,在塊704中)在諸如以下等的適當事件時檢查NUM_PBNU:預定時間段結束時、(例如,在圖7的流程圖的各循環(huán)處)監(jiān)視新的集組時、或者其它適當事件。
在塊701中,控制器202將索引初始化為0。該索引在這里被稱為J。流程進入塊702。
在塊702中,控制器202最初向高速緩沖存儲器132的所有集組的所有通路提供電力。流程進入塊704。
在塊704中,控制器202監(jiān)視當前集組(組[J])的NUM_PBNU。流程進入決定塊706。
在決定塊706中,控制器202判斷塊704中所監(jiān)視的集組的NUM_PBNU是否大于上限閾值,在一個實施例中,該上限閾值是預定值。如果為“是”,流程進入塊708;否則,流程進入決定塊716。
在塊708中,控制器202減少集組的通電通路的數(shù)量。另外,在使該組的目標通路斷電之前,控制器202驅逐目標通路中的具有有效數(shù)據(jù)的所有高速緩存行,使得有效數(shù)據(jù)不會丟失。流程進入塊722。
在決定塊716中,控制器202判斷塊704中所監(jiān)視的集組的NUM_PBNU是否小于下限閾值,在一個實施例中,該下限閾值是比上限閾值小以提供滯后的預定值。如果為“是”,流程進入塊718;否則,流程進入塊722。
在塊718中,控制器202增加集組的通電通路的數(shù)量。另外,在使組的目標通路通電之后,控制器202使目標通路無效。流程進入塊722。
在塊722中,控制器202更新索引J以指定下一集組,其中該操作優(yōu)選包括使J遞增、并且在J達到集組的數(shù)量時繞回至0。流程返回至塊704,以監(jiān)視該索引所指定的下一集組的NUM_PBNU。
現(xiàn)在參考圖8,示出例示圖2的高速緩沖存儲器132的用以進行集的組的通路的選擇性供電的操作的流程圖。如圖6的實施例那樣,圖8的實施例也采用集組的命中率作為用于判斷減少或增加針對各集組所通電的通路的數(shù)量是否可能有益的利用趨勢。然而,圖8的實施例還采用向集組的訪問頻率以及命中率作為利用趨勢。集組的訪問頻率是向集組的訪問率的度量。在一個實施例中,控制器202使用向當前集組的訪問次數(shù),以(例如,在塊804中)在諸如以下等的適當事件時不僅計算命中率而且還計算訪問頻率:預定時間段結束時、(例如,在圖8的流程圖的各循環(huán)處)監(jiān)視新的集組時、或者其它適當事件。
一般而言,如上所述,如果針對集組的命中率相對較低,則(除非同樣如以上所論述的所有的通路都已通電,否則)這通常將表示用以增加集組的通電通路的數(shù)量的需求。然而,如果集組的訪問頻率非常低,則可能不值得這樣做,因為:訪問很少發(fā)生,使得較小集組的省電可能比潛在增加的高速緩存命中率這一相對較小的性能益處有價值。此外,如果訪問頻率非常低并且命中率高(這暗示著相對較大的集組),則減少集組的通電通路的數(shù)量可能是有益的,因為較小集組的省電可能比高的高速緩存命中率這一相對較小的性能益處有價值。流程從塊801開始。
在塊801中,控制器202將索引初始化為0。該索引在這里被稱為J。流程進入塊802。
在塊802中,控制器202最初向高速緩沖存儲器132的所有集組的所有通路提供電力。流程進入塊804。
在塊804中,控制器202監(jiān)視當前集組(組[J])的命中率和訪問頻率。流程進入決定塊806。
在決定塊806中,控制器202判斷在塊804中所監(jiān)視的集組的命中率是否大于上限命中率閾值,在一個實施例中,該上限命中率閾值是預定值。如果為“是”,則流程進入決定塊807;否則,流程進入決定塊816。
在決定塊807中,控制器202判斷在塊804中所監(jiān)視的集組的訪問頻率是否小于下限訪問頻率閾值,在一個實施例中,該下限訪問頻率閾值是預定值。如果為“是”,則流程進入塊808;否則,流程進入決定塊822。
在塊808中,控制器202減少集組的通電通路的數(shù)量。另外,在使該組的目標通路斷電之前,控制器202驅逐這些目標通路中的具有有效數(shù)據(jù)的所有高速緩存行,使得有效數(shù)據(jù)不會丟失。流程進入塊822。
在決定塊816中,控制器202判斷在塊804中所監(jiān)視的集組的命中率是否小于下限命中率閾值,在一個實施例中,該下限命中率閾值是預定值。如果為“是”,則流程進入決定塊817;否則,流程進入塊822。
在決定塊817中,控制器202判斷在塊804中所監(jiān)視的集組的訪問頻率是否大于上限訪問頻率閾值,在一個實施例中,該上限訪問頻率閾值是預定值。如果為“是”,則流程進入決定塊819;否則,流程進入塊822。
在決定塊819中,控制器202判斷集組的所有通路當前是否均通電。如果為“是”,則流程進入塊821;否則,流程進入塊820。
在塊820中,控制器202增加集組的通電通路的數(shù)量。另外,在使該組的目標通路通電之后,控制器202使目標通路無效。流程進入塊822。
在塊821中,控制器202使集組的通電通路的數(shù)量減少為一個通路。另外,在使該組的目標通路斷電之后,控制器202驅逐目標通路中的具有有效數(shù)據(jù)的所有高速緩存行,使得有效數(shù)據(jù)不會丟失。此外,如上所述,控制器202確保其在基于集組的命中率以及訪問頻率來進行集組的通電通路的數(shù)量的任何大小調整之前,等待至少預定時間量。流程進入塊822。
在塊822中,控制器202更新索引J以指定下一集組,其中該操作優(yōu)選包括使J遞增、并且在J達到集組的數(shù)量時繞回至0。流程返回至塊804,以監(jiān)視該索引所指定的下一集組的NUM_PBNU。
已考慮到集組的粒度改變的各種實施例。例如,在圖2的實施例中,將集分組成八個互斥的組(各集組具有16個通路),由此允許多達128個可單獨供電的集組通路。然而,已考慮到具有不同數(shù)量的互斥的組以允許有更多或更少的單獨可供電通路的其它實施例。在一個實施例中,各集可以是其自身的互斥的組,使得L2高速緩存器124中的各條目可以是集組通路。注意,組的數(shù)量越大,可以對L2高速緩存器124進行預算的粒度越精細,以使該L2高速緩存器12適合所分析的程序的需求,而組的數(shù)量越少,描述集組通路特征所需的控制位越少。在一個實施例中,盡管組中的集的數(shù)量是32,但已考慮到組中的集的數(shù)量更多或更少的其它實施例。
盡管說明了選擇性地向集的組內的通路供電的高速緩沖存儲器是多個處理器內核共用的高速緩沖存儲器的實施例,但已考慮到高速緩沖存儲器專用于單個內核、或者由比處理器的所有內核少的內核共用的其它實施例。此外,盡管說明了選擇性地向集的組內的通路供電的高速緩沖存儲器是處理器的高速緩沖存儲器層級的特定級(例如,3級)處的高速緩沖存儲器,但已考慮到高速緩沖存儲器處于不同級(例如,1級、2級)的其它實施例。另外,說明了采用預定閾值的各種實施例。在一個實施例中,例如利用操作系統(tǒng)或其它系統(tǒng)軟件,預定閾值中的一個或多個是用戶可編程的。在一個實施例中,例如采用以下形式將預定閾值中的一個或多個制造到控制器202中:硬接線邏輯、可熔斷(即,可更新)的熔斷器、以及/或者可打補丁的處理器100的微代碼。
盡管這里已經(jīng)說明了本發(fā)明的各種實施例,但應當理解,這些實施例是以示例而非限制性的方式呈現(xiàn)的。相關計算機領域的技術人員將明白,可以在沒有背離本發(fā)明的范圍的情況下對這些實施例進行形式和細節(jié)方面的各種改變。例如,軟件可以實現(xiàn)這里所述的設備和方法的例如功能、制造、建模、模擬、描述和/或測試。這可以通過使用通用編程語言(例如,C、C++)、包括Verilog HDL、VHDL等的硬件描述語言(HDL)、或者其它可用程序的來實現(xiàn)。這種軟件可以配置在諸如磁帶、半導體、磁盤或光盤(例如,CD-ROM、DVD-ROM等)等的任何已知的計算機可用介質、網(wǎng)絡、有線、無線或其它通信介質中。這里所述的設備和方法的實施例可以包括在諸如(例如,以HDL所實現(xiàn)或指定的)處理器內核等的半導體知識產權內核中,并且在集成電路的制造中變換成硬件。另外,這里所述的設備和方法可以作為硬件和軟件的組合來實現(xiàn)。因而,本發(fā)明不應局限于這里所述任何典型實施例,而應僅根據(jù)所附權利要求書及其等同物來定義。具體地,可以在可用于通用計算機的處理器裝置內實現(xiàn)本發(fā)明。最后,本領域技術人員應當理解,在沒有背離如所附權利要求書所定義的本發(fā)明的范圍的情況下,這些技術人員可以容易地使用所公開的概念和特定實施例作為用于設計或修改用于執(zhí)行本發(fā)明的相同目的的其它結構。