亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

對(duì)集群處理器中的通信并行性折衷的動(dòng)態(tài)管理的制作方法

文檔序號(hào):6656346閱讀:278來(lái)源:國(guó)知局

專利名稱::對(duì)集群處理器中的通信并行性折衷的動(dòng)態(tài)管理的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及用于管理集群處理器的運(yùn)行的方法,具體地,涉及用于動(dòng)態(tài)管理集群處理器中的通信并行性折衷的方法。
背景技術(shù)
:從現(xiàn)代處理器上的公共應(yīng)用程序中提取大量的指令級(jí)并行性(ILP)需要使用許多功能單元和大的片上結(jié)構(gòu)(諸如發(fā)布隊(duì)列、寄存器組、緩存和分支預(yù)測(cè)器)。隨著CMOS工藝技術(shù)持續(xù)縮短,線延遲成了主導(dǎo)控制因素(與邏輯延遲相比)。這與朝著更快時(shí)鐘速度持續(xù)發(fā)展的趨勢(shì)一起增加了存取常規(guī)片上結(jié)構(gòu)(緩存、寄存器組等)的時(shí)間周期。這不僅降低了每周期指令(IPC)的性能,還會(huì)在將該存取分解成多個(gè)管線級(jí)時(shí)出現(xiàn)各種設(shè)計(jì)問(wèn)題。盡管可用于體系結(jié)構(gòu)的晶體管數(shù)量增加了,但越來(lái)越難以在不增加設(shè)計(jì)復(fù)雜度、不危及時(shí)鐘速度以及不限制未來(lái)工藝技術(shù)的可升級(jí)性的情況下設(shè)計(jì)有助于ILP提取的大型單片集成電路結(jié)構(gòu)。一種針對(duì)這些設(shè)計(jì)挑戰(zhàn)的潛在解決方案是集群微體系結(jié)構(gòu),其中將關(guān)鍵的處理器資源分布在多個(gè)集群上,其每一個(gè)包含發(fā)布隊(duì)列、寄存器組和功能單元的一個(gè)子集。在此設(shè)計(jì)中,在進(jìn)行指令重新命名時(shí),每個(gè)指令均被導(dǎo)引到其中的一個(gè)集群中。降低發(fā)布隊(duì)列和寄存器組的大小和帶寬要求的結(jié)果是,大大減少了這些周期時(shí)間苛求結(jié)構(gòu)的存取時(shí)間,由此允許更快的時(shí)鐘。這些結(jié)構(gòu)的簡(jiǎn)化還降低了它們?cè)O(shè)計(jì)的復(fù)雜度。集群微體系結(jié)構(gòu)的有吸引力的特征在于降低了為制造一處理器的連續(xù)數(shù)代產(chǎn)品而耗費(fèi)的設(shè)計(jì)努力。不僅單個(gè)集群的設(shè)計(jì)大大得到了簡(jiǎn)化,而且一旦單個(gè)集群核設(shè)計(jì)完成,可將更多的這些核放入處理器中,用以在晶體管的預(yù)算增加時(shí)獲得較低的設(shè)計(jì)成本(包括增加前端帶寬)。增加更多的集群可能會(huì)潛在地提高IPC性能,因?yàn)槊總€(gè)程序都有更多的資源可與其一起工作。這樣做對(duì)時(shí)鐘速度幾乎沒(méi)有影響,即使有也是很小,因?yàn)槊總€(gè)集群個(gè)體的實(shí)施不改變。此外,即使大型集群處理器中的資源無(wú)法被單個(gè)線程有效使用,在一個(gè)集群處理器上對(duì)多個(gè)線程進(jìn)行調(diào)度也可以極大地增加總的指令吞吐量。相對(duì)較低的設(shè)計(jì)復(fù)雜度和開(kāi)發(fā)線程級(jí)并行性的潛在可能使得高度集群的處理器在十億級(jí)晶體管時(shí)代成為極富吸引力的選擇。集群微體系結(jié)構(gòu)的主要缺點(diǎn)是與具有相同資源的單片集成電路設(shè)計(jì)相比降低了IPC。盡管在單個(gè)集群中的相關(guān)指令可以在連續(xù)的周期內(nèi)發(fā)布,然而額外的集群間迂回延遲卻阻止了位于不同集群內(nèi)的相關(guān)指令在連續(xù)周期內(nèi)發(fā)布。單片集成電路處理器可以使用潛在地慢得多的時(shí)鐘以獲得所有功能單元之間的單周期迂回,而集群處理器則允許更快的時(shí)鐘,由此在一些功能單元之間引入額外的多個(gè)周期的等待時(shí)間。該集群設(shè)計(jì)僅在IPC的降低不會(huì)抵消時(shí)鐘速度的提高時(shí)才是可行的選擇。現(xiàn)代處理器像0.35μ技術(shù)的Alpha21264已經(jīng)采用了有限的集群設(shè)計(jì),其中例如整數(shù)域分為兩個(gè)集群。最近有大量研究探究了將指令導(dǎo)引至集群的啟發(fā)式設(shè)計(jì)。盡管出現(xiàn)了這些進(jìn)步,在不久的將來(lái)由于以下原因這些研究的結(jié)果很可能需要重新考慮。1.由于線延遲逐漸成為主導(dǎo)因素以及時(shí)鐘速度增長(zhǎng)的趨勢(shì),與現(xiàn)有研究中假設(shè)的資源相比,每個(gè)集群核中的資源需要大大降低。2.由于更高的晶體管預(yù)算和開(kāi)發(fā)線程級(jí)并行性的潛在可能,在模具上將會(huì)有比現(xiàn)有研究中假設(shè)的具有更多的集群。3.由于線延遲問(wèn)題,用于在最遠(yuǎn)的兩個(gè)集群之間傳送數(shù)據(jù)的周期數(shù)將會(huì)增加。此外,通信延遲是不一致的,根據(jù)制造商和消費(fèi)者節(jié)點(diǎn)的位置而變化。4.由于互聯(lián)成本的增加和與其它集群資源相適應(yīng)地升級(jí)緩存的期望,與大多數(shù)現(xiàn)有研究假設(shè)的集中式緩存不同,數(shù)據(jù)緩存需要分布在集群中。雖然大量集群的使用可能會(huì)大大推進(jìn)多線程工作量的總吞吐量,其對(duì)單線程程序的性能的影響還不是那么明顯。上述趨勢(shì)的累積效果是集群處理器將受到的通信限制比現(xiàn)有模型中假設(shè)的要多得多。隨著芯片上集群數(shù)量的增加,線程可以使用的資源的數(shù)量也在增加,這支持了較大的未完成指令窗口,并由此允許開(kāi)發(fā)出更遠(yuǎn)的指令級(jí)并行性(ILP)。同時(shí),該程序的各種指令和數(shù)據(jù)得以在更大的片上空間上分布。如果必需在不同集群之間頻繁地傳送數(shù)據(jù),那么由于增長(zhǎng)的通信而導(dǎo)致的性能降低可能抵消從由額外資源利用的并行性而產(chǎn)生的任何益處。在過(guò)去十年中出現(xiàn)了大量基于集群處理器的建議。這些建議的不同之處在于可分配的資源種類、指令導(dǎo)引啟發(fā)和用于集群間通信的語(yǔ)義。緩存是在所有這些模型中的集中式結(jié)構(gòu)。這些研究假設(shè)具有中等的通信成本的總數(shù)少量的集群。許多最近的工作體著眼于具有多重配置選擇和用于在運(yùn)行時(shí)挑選適當(dāng)配置的算法的硬件單元。這些算法中有很多是基于間隔的,因?yàn)樗鼈冊(cè)诠潭ǖ闹噶铋g隔或周期間隔內(nèi)監(jiān)控各種統(tǒng)計(jì),并且基于該信息做出配置決定。在子例程邊界處適配可比使用固定的指令間隔更有效。很多最近的工作已建議運(yùn)行時(shí)算法用以對(duì)硬件進(jìn)行動(dòng)態(tài)的調(diào)整以符合程序階段的要求。大多數(shù)這種技術(shù)使用基于間隔的算法,其中在最后幾個(gè)間隔內(nèi)的測(cè)量指示在隨后間隔內(nèi)的配置選擇,其中間隔即預(yù)定數(shù)量的提交指令。將來(lái)的新生代處理器可能由于線延遲的高成本而遭受更低的IPC。
發(fā)明內(nèi)容本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足。為了實(shí)現(xiàn)上述和其它目的,本發(fā)明針對(duì)一種動(dòng)態(tài)可調(diào)整的集群體系結(jié)構(gòu),其在面對(duì)上述趨勢(shì)的情況下優(yōu)化了通信并行性折衷從而獲得改善的單線程性能。通過(guò)只采用該線程可用的全部集群的一子集來(lái)實(shí)現(xiàn)平衡。我們的結(jié)果顯示基于集群數(shù)量的性能趨勢(shì)根據(jù)集群中存在的遠(yuǎn)ILP的程度對(duì)于不同程序是變化的。因此開(kāi)發(fā)了識(shí)別用于任意程序階段的最佳集群數(shù)量并將硬件與程序要求相匹配的動(dòng)態(tài)算法。我們給出在任意程序點(diǎn)改變工作集群數(shù)量的算法,并示出一查看過(guò)去幾個(gè)間隔中的性能歷史的簡(jiǎn)單算法通常會(huì)產(chǎn)生大部分可得到的性能改善。但是這種算法失去了精細(xì)粒度的重新配置的機(jī)會(huì),我們也給出了投入更多的硬件嘗試針對(duì)這些錯(cuò)過(guò)的機(jī)會(huì)的替換技術(shù)。該簡(jiǎn)單的基于間隔的算法總的來(lái)說(shuō)提供了11%的改善程度,而精細(xì)粒度的技術(shù)可獲得超出最佳靜態(tài)結(jié)構(gòu)15%的改善程度。為了改善單線程性能而針對(duì)給定的程序階段禁止集群的子集具有其它有利含義。整個(gè)集群可以關(guān)閉其供應(yīng)電壓,由此可大大節(jié)省泄漏能量,這是一種在單片集成電路的處理器中不可能達(dá)到的技術(shù)??商鎿Q的,這些集群可(分布在其它線程中)由其它線程使用,由此同時(shí)實(shí)現(xiàn)優(yōu)化單線程和多線程吞吐量的目標(biāo)。我們給出和評(píng)估了縮短工藝技術(shù)和占主導(dǎo)地位的線延遲對(duì)未來(lái)集群處理器設(shè)計(jì)的影響。在增加集群數(shù)量以利用增加的芯片密度改善處理器支持多線程的能力的同時(shí),單線程的性能會(huì)被不利地影響。這是因?yàn)檫@種處理器受到集群間通信成本的制約。隨著處理器被調(diào)整為包括大量的集群,這些成本可能會(huì)成為指令級(jí)并行性的任何增加的提取的主導(dǎo)的控制因素。我們已經(jīng)證明利用基于探測(cè)的方法以規(guī)則間隔動(dòng)態(tài)地選擇集群數(shù)量在優(yōu)化對(duì)于單線程的通信并行性折衷方面是有效的。該方法可用于幾乎每個(gè)程序,并可獲得高于我們的基本體系結(jié)構(gòu)11%的平均性能改善程度。為了以精細(xì)的粒度來(lái)利用階段變化,需要投入額外的硬件,這使得總改善程度達(dá)到15%。由于平均8.3個(gè)集群被重新配置機(jī)制禁止,因此有可能在單線程模式中節(jié)省大量的泄漏能量。多線程工作負(fù)載吞吐量還可以通過(guò)使一組集群動(dòng)態(tài)地專用于每個(gè)線程來(lái)避免線程間的干擾而得到改善。我們已經(jīng)針對(duì)大量感興趣的處理器模型驗(yàn)證了我們結(jié)果的有效性,由此突出了管理通信并行性折衷在未來(lái)處理器中的重要性。我們是第一個(gè)建議識(shí)別可變長(zhǎng)度指令間隔的重要性并將其組合到選擇算法中。我們也是第一個(gè)在分支邊界查看精細(xì)粒度的重新配置,并將其與基于間隔的機(jī)制相比較。我們是第一個(gè)研究將焦點(diǎn)集中在單工藝技術(shù)并研究分析加入更多資源的效果。該集群處理器模型揭示了在通信和并行性之間清楚的折衷,并且很容易使其適宜于低成本的重新配置。下面參考附圖公開(kāi)本發(fā)明的優(yōu)選實(shí)施例及其改型。其中圖1和圖2是示出兩個(gè)其中可實(shí)施優(yōu)選實(shí)施例的集群處理器配置的框圖;圖3是示出固定集群結(jié)構(gòu)的IPC(指令/周期)性能的圖;圖4是示出基本情況的和基于間隔的機(jī)制的IPC性能的圖;圖5是示出基本情況的、具有探測(cè)(exploration)的基于間隔的算法的、和兩個(gè)精細(xì)粒度的探測(cè)機(jī)制的IPC性能的圖;圖6是示出用于具有分布式緩存的處理器模型的動(dòng)態(tài)的基于間隔的機(jī)制的IPC性能的圖;圖7是示出用于具有網(wǎng)格互連的處理器模型的動(dòng)態(tài)的基于間隔的機(jī)制的IPC性能的圖。具體實(shí)施例方式下面參照附圖詳細(xì)描述本發(fā)明的優(yōu)選實(shí)施例及其改型,其中,在說(shuō)明書全文中,相同的附圖標(biāo)記代表相同的元件。首先來(lái)描述已經(jīng)在之前研究中普遍使用的基線集群處理器模型。此模型在圖1中以100示出,具有4個(gè)集群102(各表示為102-1、102-2、102-3、102-4)。這4個(gè)集群102的上游是指令緩存104、分支預(yù)測(cè)器106、指令取出緩存108、導(dǎo)引寄存器重命名單元110和重排序緩沖器112。在每個(gè)集群102內(nèi)都有發(fā)布隊(duì)列114、寄存器組116和功能單元118。集群102的下游是加載/存儲(chǔ)隊(duì)列(LSQ)120和數(shù)據(jù)緩存122。分支預(yù)測(cè)器106和指令緩存104是集中式結(jié)構(gòu),正如在傳統(tǒng)處理器中那樣。在導(dǎo)引寄存器重命名單元110中進(jìn)行寄存器重新命名時(shí),每個(gè)指令被分配給特定的集群。每個(gè)集群102都有其自己的發(fā)布隊(duì)列14、寄存器組116、一組功能單元118和其自己的局部迂回網(wǎng)絡(luò)。在集群內(nèi)對(duì)結(jié)果的迂回不需要花費(fèi)額外的周期(換句話說(shuō),在同一集群內(nèi)相關(guān)指令可以在連續(xù)周期中發(fā)布)。但是如果消費(fèi)指令不在與制造者相同的集群內(nèi),該指令就必須等待額外的周期才能在兩個(gè)集群之間進(jìn)行傳送。傳統(tǒng)的集群處理器只在集群102中分布寄存器組116、發(fā)布隊(duì)列114和功能單元118。數(shù)據(jù)緩存122被集中放置。一種替換的結(jié)構(gòu)是將緩存分布于集群中,由此使設(shè)計(jì)更容易升級(jí),但同時(shí)增加了實(shí)施復(fù)雜度。由于兩種結(jié)構(gòu)都是有吸引力的設(shè)計(jì)選擇,下面對(duì)這兩種結(jié)構(gòu)的動(dòng)態(tài)調(diào)整效果進(jìn)行評(píng)估。在傳統(tǒng)的集群設(shè)計(jì)中,一旦準(zhǔn)備好加載和存儲(chǔ),就將它們插入集中的加載-存儲(chǔ)隊(duì)列(LSQ)120。存儲(chǔ)在提交時(shí)從該隊(duì)列被發(fā)送到集中的L1緩存,而加載在已知不與較早的存儲(chǔ)沖突時(shí)被發(fā)布。LSQ被集中化,因?yàn)樵谌魏渭褐械募虞d可能與來(lái)自任何其它集群的較早存儲(chǔ)相沖突。對(duì)于正在研究的侵入式處理器模型,緩存必須服務(wù)于每個(gè)周期的大量的請(qǐng)求。實(shí)施高帶寬緩存的有效途徑是使其字交叉。對(duì)于4路字交叉的緩存,數(shù)據(jù)陣列被分為4個(gè)存儲(chǔ)體(bank),每個(gè)存儲(chǔ)體每個(gè)周期可服務(wù)于一個(gè)請(qǐng)求。字地址形式為4N的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)體0中,字地址形式為4N+1的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)體1中,等等。這樣一種結(jié)構(gòu)支持最大為4的帶寬,并有助于最小化與存儲(chǔ)體的沖突。在具有集中式緩存的處理器中,加載等待時(shí)間取決于集中式緩存與發(fā)布該加載的集群之間的距離。在我們的研究中,假設(shè)集中式LSQ和緩存與集群102-1同處一地。因此從集群102-1發(fā)布的加載不會(huì)遭遇任何通信成本。從集群102-2發(fā)布的加載用一個(gè)周期來(lái)將該地址發(fā)送到LSQ和緩存,再用另一個(gè)周期來(lái)取回該數(shù)據(jù)(假設(shè)集群之間的每一跳要用一個(gè)周期)。類似的,集群102-3對(duì)于每個(gè)加載要遭遇4個(gè)周期的總通信成本。這是除了執(zhí)行緩存RAM查詢所需要的幾個(gè)周期之外?,F(xiàn)在討論導(dǎo)引啟發(fā)(steeringheuristics)。集群設(shè)計(jì)允許更快的時(shí)鐘,但由于集群間通信和負(fù)載的不平衡引起值得關(guān)注的IPC降低。利用智能指令控制來(lái)最小化這些不利結(jié)果已成為很多最近研究的焦點(diǎn)。我們使用有效的導(dǎo)引啟發(fā),其將指令(及其目標(biāo)寄存器)導(dǎo)引至產(chǎn)生大多數(shù)其操作數(shù)的集群。在持平的情況下或在發(fā)現(xiàn)發(fā)布隊(duì)列占有中的不平衡的情況下,將指令發(fā)送給被最少加載的集群。通過(guò)選擇適當(dāng)?shù)拈撝祦?lái)檢測(cè)加載不平衡,這樣的算法還可以近似于其它建議的導(dǎo)引啟發(fā),如Mod_N和First_Fit。前者通過(guò)將N條指令導(dǎo)引給一個(gè)集群然后又導(dǎo)引給其鄰居來(lái)最小化加載不平衡。而后者通過(guò)在將指令導(dǎo)引給一個(gè)集群的鄰居之前填滿該集群來(lái)最小化通信量。我們通過(guò)實(shí)驗(yàn)確定負(fù)載平衡的最佳閾值。此外,我們的導(dǎo)引啟發(fā)還使用臨界預(yù)測(cè)器對(duì)產(chǎn)生臨界源操作數(shù)的集群給予更高的優(yōu)先級(jí)。因此我們的啟發(fā)代表了在導(dǎo)引機(jī)制中的技術(shù)狀態(tài)。在高度集群的處理器中,集中式緩存可能是主要的瓶頸,因?yàn)槠浔仨氈С指邘挘⑶移涞桨l(fā)出請(qǐng)求的集群之間的平均距離也增加了。因此,分布式的緩存模型代表了有吸引力的設(shè)計(jì)選擇。對(duì)于N-集群的系統(tǒng),假設(shè)L1緩存被分成N個(gè)字交叉的存儲(chǔ)體。每一存儲(chǔ)體都與其自己的集群關(guān)聯(lián)。LSQ也被分開(kāi)處于不同的集群中。圖2的例子示出具有4個(gè)集群的結(jié)構(gòu)。圖2的處理器模型200與圖1的處理器模型100的不同之處在于每個(gè)集群202包括分布式LSQ220和分布式數(shù)據(jù)緩存222。此外,還提供存儲(chǔ)體預(yù)測(cè)器209。由于各存儲(chǔ)體是字交叉的,因此它們緩存相互獨(dú)立的數(shù)據(jù),不需要在它們之間存在任何緩存相關(guān)協(xié)議。該控制機(jī)制的目標(biāo)是將加載或存儲(chǔ)發(fā)送到緩存相應(yīng)存儲(chǔ)器地址的集群。下面討論由于該緩存的分布式特性而引起的附加的控制復(fù)雜性。L2緩存繼續(xù)與集群1(202-1)共處一地,未命中除了與該集群關(guān)聯(lián)的L1緩存存儲(chǔ)體外的任何其他L1緩存存儲(chǔ)體會(huì)引起依賴于跳數(shù)的額外的等待時(shí)間。隨著工藝技術(shù)縮短和集群數(shù)量增加,必須關(guān)注集群之間的通信延遲和互連拓?fù)洹<洪g通信在前端且在集群之間傳送寄存器值時(shí)或在存取緩存時(shí)出現(xiàn)。由于前者出現(xiàn)在每個(gè)周期中,我們假設(shè)一單獨(dú)的網(wǎng)絡(luò)用于此目的,并且對(duì)不統(tǒng)一的分派等待時(shí)間以及將分支誤預(yù)測(cè)傳送回前端的附加等待時(shí)間建模。由于后面兩個(gè)(緩存和寄存器到寄存器通信)涉及至/自寄存器的數(shù)據(jù)傳輸,我們假設(shè)使用相同的(單獨(dú))網(wǎng)絡(luò)。在該優(yōu)選實(shí)施例中,由于環(huán)互連的實(shí)施復(fù)雜度較低,我們將注意力集中在環(huán)互連上。每個(gè)集群直接與另外兩個(gè)集群連接。我們假設(shè)有兩個(gè)單向環(huán),意味著一16-集群的系統(tǒng)具有總共32條鏈路(允許在一個(gè)周期中進(jìn)行總共32次傳輸),其中任何兩個(gè)節(jié)點(diǎn)之間的最大跳數(shù)是8。下面作為我們靈敏度分析的一部分,還示出網(wǎng)格互連的結(jié)果,其具有更大的實(shí)施成本但更高的性能。集群以二維陣列布局。每個(gè)集群直接與多達(dá)4個(gè)其它的集群連接。對(duì)于16個(gè)集群總共存在48條鏈路,其中最大跳數(shù)是6,由此降低了總通信費(fèi)用。我們的仿真器基于針對(duì)AlphaAXP指令集的Simplescalar-3.0。對(duì)該仿真器進(jìn)行了修改,以代表類似Alpha21264的微體系結(jié)構(gòu)。寄存器更新單元(RUU)被分解為發(fā)布隊(duì)列、物理寄存器組和重排序緩沖器(ROB)。發(fā)布隊(duì)列和物理寄存器組進(jìn)一步被分成整數(shù)型(int)和浮點(diǎn)型(fp)。因此在我們研究中的每個(gè)集群本身被分解為整數(shù)型和浮點(diǎn)型集群。還對(duì)存儲(chǔ)器的層次結(jié)構(gòu)進(jìn)行了詳細(xì)建模(包括字交叉存取,總線和端口競(jìng)爭(zhēng)、寫回緩沖器等等)。該基本處理器結(jié)構(gòu)被修改,以對(duì)集群的微體系結(jié)構(gòu)進(jìn)行建模。為代表在將來(lái)技術(shù)中受線延遲約束的處理器,假設(shè)每個(gè)集群核具有每種類型的一個(gè)功能單元,30個(gè)物理寄存器(int和fp,每一個(gè))和15個(gè)發(fā)布隊(duì)列項(xiàng)(int和fp,每一個(gè))。可在一周期內(nèi)發(fā)布如可用功能單元個(gè)數(shù)一樣多的指令。假設(shè)互連上的每跳僅用單個(gè)周期。雖然沒(méi)有對(duì)跟蹤緩存建模,我們假設(shè)一次可以從多至兩個(gè)基本塊中取出指令。重要的仿真參數(shù)總結(jié)在下面的表1中。表1我們研究的焦點(diǎn)集中在將來(lái)受線限制的技術(shù),并且根據(jù)0.035μ的項(xiàng)目選擇等待時(shí)間。我們使用CACTI-3.0來(lái)估計(jì)該緩存結(jié)構(gòu)的存取時(shí)間。利用Simplescalar,我們對(duì)具有不同大小和端口參數(shù)(由此包括不同等待時(shí)間)的緩存結(jié)構(gòu)進(jìn)行仿真以確定最佳的基本情況。這些參數(shù)總結(jié)在下面的表2中。集中式緩存對(duì)于4路字交叉的32kB緩存產(chǎn)生最佳性能。此緩存具有每周期4次存取的帶寬和6個(gè)周期的存取時(shí)間。最佳的分布式緩存結(jié)構(gòu)在每個(gè)集群中具有一單端口4周期16kB的存儲(chǔ)體。表2作為基準(zhǔn)組,使用4個(gè)SPEC2k整數(shù)型程序、3個(gè)SPEC2kFP程序和兩個(gè)來(lái)自UCLAMediabench的程序。這些程序的細(xì)節(jié)在表3中列出。這些程序代表各種程序類型的混合,包括高和低IPC代碼以及由存儲(chǔ)器、分支誤預(yù)測(cè)等限制的那些。這些程序的大多數(shù)都通過(guò)第一二十億個(gè)指令被快速轉(zhuǎn)發(fā)并被詳細(xì)仿真以便在進(jìn)行測(cè)量之前預(yù)熱各種處理器結(jié)構(gòu)。雖然對(duì)侵入式處理器模型仿真,但并非所有我們的基準(zhǔn)程序都具有高的IPC。注意侵入式處理器設(shè)計(jì)受到運(yùn)行高IPC代碼的需要和支持多線程的需要的激勵(lì)。在兩種情況下,快速完成單個(gè)低IPC線程仍然是很重要的,因此需要在基準(zhǔn)組中包含這樣的程序。表3為簡(jiǎn)明起見(jiàn),我們將最初的分析集中于具有集中式緩存和環(huán)形互連的16-集群模型。圖3示出靜態(tài)地使用固定的集群子集用于程序的效果。增加集群的數(shù)量就增加了從集中式緩存加載/存儲(chǔ)指令的平均距離和最差情況下的集群間迂回延遲,由此大大影響了總通信成本。假設(shè)加載和存儲(chǔ)的零集群間通信成本使性能改善31%,同時(shí)假設(shè)寄存器到寄存器通信的零成本使性能改善11%,表明增加了的加載/存儲(chǔ)等待時(shí)間是通信開(kāi)銷的主導(dǎo)因素。該等待時(shí)間可以通過(guò)將加載/存儲(chǔ)引導(dǎo)至最接近緩存的集群來(lái)減少,但這又會(huì)增加負(fù)載的不平衡和寄存器通信。在16集群系統(tǒng)中,集群間寄存器通信的平均等待時(shí)間是4.1個(gè)周期。同時(shí),使用更多的集群還可向程序提供更多功能單元、寄存器和發(fā)布隊(duì)列項(xiàng),由此允許其分派較大的未完成指令窗口。根據(jù)這兩個(gè)沖突力量中哪一方占據(jù)主導(dǎo)地位,隨著集群數(shù)量的增加,性能或者提高或者惡化。具有遠(yuǎn)ILP的程序如djpeg(從Mediabench進(jìn)行JPEG解碼)、swim、mgrid和galgel(來(lái)自SPEC2K的基于循環(huán)的浮點(diǎn)型程序)受益于使用很多資源。另一方面,大多數(shù)分支預(yù)測(cè)精確性很低的整數(shù)型程序無(wú)法使用大的未完成指令窗口。因此僅增加資源會(huì)由于額外的通信成本而降低性能。這是一種迄今還沒(méi)有在集群處理器中觀察到的現(xiàn)象(部分因?yàn)楹苌儆醒芯筷P(guān)注超過(guò)4個(gè)集群,部分因?yàn)樵缙诘难芯考僭O(shè)在存取集中式緩存時(shí)沒(méi)有通信成本)。我們的目標(biāo)是通過(guò)向程序動(dòng)態(tài)分配集群使硬件適應(yīng)程序的要求。這可以通過(guò)修改導(dǎo)引啟發(fā)以禁止向被禁止的集群分派指令來(lái)達(dá)到。換句話說(shuō),禁止等效于不向該集群分配任何新指令。已經(jīng)分配給該被抑制的集群的指令則允許完成,從而得到該集群自然流失的結(jié)果。在每個(gè)程序階段開(kāi)始時(shí),將每個(gè)配置選項(xiàng)運(yùn)行一段間隔并記錄IPC。然后選擇具有最高IPC的配置,并使用該配置直到檢測(cè)到下個(gè)階段變化為止。這樣一種機(jī)制強(qiáng)烈地依賴于程序在多個(gè)間隔期間維持一致性能的能力。我們發(fā)現(xiàn)浮點(diǎn)型程序通常表現(xiàn)出這種特征,而整數(shù)型程序表現(xiàn)出更大的可變性。盡管早期的研究假設(shè)固定的間隔長(zhǎng)度,但我們發(fā)現(xiàn)這可能會(huì)導(dǎo)致多個(gè)程序的性能非常差。因此,選擇適當(dāng)?shù)拈g隔長(zhǎng)度是配置選擇算法成功的基礎(chǔ)(并且除了該數(shù)量的集群之外還可以通用于該處理器的其它方面的配置)。為了研究程序性能在不同間隔期間的可變性,我們運(yùn)行數(shù)十億指令的每個(gè)程序,從而以均勻的10K指令間隔產(chǎn)生不同統(tǒng)計(jì)數(shù)據(jù)的繪圖。我們使用3種度量來(lái)定義程序階段-IPC、分支頻率和存儲(chǔ)器參考頻率。在每個(gè)程序階段開(kāi)始時(shí),在第一間隔期間收集的統(tǒng)計(jì)數(shù)據(jù)用作參考。對(duì)后面的每個(gè)間隔,如果對(duì)于該間隔,這3種度量類似于參考點(diǎn),則該間隔被稱為“穩(wěn)定的”。如果這3種度量中任何一個(gè)顯著不同,則宣稱該間隔是“不穩(wěn)定的”,并且開(kāi)始一個(gè)新的程序階段。該分析是對(duì)很多間隔長(zhǎng)度進(jìn)行的。間隔長(zhǎng)度的不穩(wěn)定系數(shù)是被認(rèn)為“不穩(wěn)定的”間隔所占的百分比,也就是階段變化發(fā)生的頻率。在我們的研究中,發(fā)現(xiàn)僅探查可能的配置的有限子集(2、4、8和16個(gè)集群)就足夠了,因?yàn)樗鼈兏采w了絕大部分感興趣的情況。5%的不穩(wěn)定系數(shù)確保了低于15%的間隔處于次優(yōu)的配置。下面的表4示出向每個(gè)程序提供低于5%的可接受的不穩(wěn)定系數(shù)的最小間隔長(zhǎng)度。如表所示,所出現(xiàn)的作為最佳的間隔長(zhǎng)度在10K和40M之間變化。我們還示出針對(duì)10K指令的固定間隔長(zhǎng)度的不穩(wěn)定系數(shù)。很明顯,該間隔長(zhǎng)度對(duì)大量程序而言都工作欠佳,并導(dǎo)致無(wú)法令人接受的性能。絕大多數(shù)程序通常對(duì)在足夠粗略的間隔長(zhǎng)度的若干間隔內(nèi)表現(xiàn)出一致的特性,這使得基于間隔的機(jī)制非常強(qiáng)壯并且可以通用。即使像parser(語(yǔ)法分析程序)這樣的、其特性基于輸入數(shù)據(jù)顯著變化的程序?qū)τ?0M的大的指令間隔也具有較低的不穩(wěn)定系數(shù)。表4為了在運(yùn)行時(shí)達(dá)到最佳指令間隔長(zhǎng)度,我們使用簡(jiǎn)單的算法。我們從最短指令間隔開(kāi)始。如果不穩(wěn)定系數(shù)太高,則將該間隔的大小加倍,并重復(fù)這一算法直到遇到較低的不穩(wěn)定系數(shù)或者達(dá)到預(yù)先指定的界限(如十億條指令)。如果達(dá)到該界限,則停止采用該選擇算法,并選擇最常選擇的配置。一旦選擇了間隔長(zhǎng)度,我們不需要一直保持在該間隔長(zhǎng)度。該程序可以從一個(gè)大的宏階段移動(dòng)到另一個(gè)可能具有完全不同的最佳指令間隔的宏階段。為了進(jìn)行此處理,我們可以繼續(xù)分層地建立階段檢測(cè)算法。以粗略的粒度(如每千億條指令)檢查統(tǒng)計(jì)數(shù)據(jù)的算法可能觸發(fā)對(duì)新的宏階段的檢測(cè),在該點(diǎn),可能要以10K的間隔長(zhǎng)度重新啟動(dòng)該選擇算法,并重新找到最佳間隔長(zhǎng)度。為了完備性,在下面列出的代碼中,我們描述了在運(yùn)行時(shí)選擇間隔長(zhǎng)度、檢測(cè)階段并選擇最佳配置的算法。在階段開(kāi)始時(shí),在第一間隔中收集的統(tǒng)計(jì)數(shù)據(jù)用作參考點(diǎn),相對(duì)該參考點(diǎn)來(lái)比較將來(lái)的統(tǒng)計(jì)數(shù)據(jù)并檢測(cè)階段變化。分支和存儲(chǔ)器參考頻率是獨(dú)立于微體系結(jié)構(gòu)的參數(shù),即使在探測(cè)過(guò)程中也能用于檢測(cè)階段變化。探測(cè)之后,選擇最佳執(zhí)行的配置,且其IPC也用作參考。如果分支的數(shù)量、存儲(chǔ)器參考的數(shù)量或者IPC與參考點(diǎn)顯著不同,則發(fā)信號(hào)表明階段變化。有時(shí),在一間隔期間,IPC還存在微小的變化(也許是由于分支誤預(yù)測(cè)或者緩存未命中的突然出現(xiàn)而導(dǎo)致的),其后,特性返回到前一階段的特性。為了在這種情況下阻止不需要的探測(cè),我們?nèi)菰SIPC測(cè)量(用numipc變化參數(shù))中的一些噪聲。此外,如果階段變化很頻繁,則增加不穩(wěn)定變量,且最終間隔長(zhǎng)度加倍。用于動(dòng)態(tài)選擇集群數(shù)量的運(yùn)行時(shí)算法初始化和定義;interval_length=10K;(numberofcommittedinstrsbeforeinvokingthealgo)discontinue_algorithm=FALSE;(ifthisisset,nomorereconFigurationsareattempteduntilthenextmacrophase)have_reference_point=FALSE;(thefirstintervalinanewphaseprovideeareferencepointtocomparefutureintervals)significant_change_in_ipc(thisissetiftheIPCinthecurrentintervaldiffersfromthatinthereferencepointbymorethan10%)significant_change_in_memrefs;(thisissetifthememoryreferencesinthecurrentintervaldiffersfromthereferencepointbymorethaninterval_length/100)significant_change_in_branches;(similartosignificant_change_in_memrefs)num_ipc_variations=0;(thisindicatesthenumberoftimestherewasasignificant_change_in_ipc)stable_state=FALSE;(thisissetonlyafterallconfigsareexplored)num_clusters;(thenumberofactiveclusters)instability=0;(numberináicatingphasechangefrequency)THRESH1=THRESH2=5;THRESH3=1billioninstructions;InGpectstatisticsevery100billioninstructions.If(newmacrophase)Initializeallvariables;If(notdiscontinue_algorithm)Executethefollowingaftereveryinterval_lengthinstructions;If(have_reference_point)If(significant_change_in_memrefsorsignificant_change_in_branchesorsignificant_change_in_ipcandnum_ipc_variations>THRESH1))have_reference_point=stable_state=FALSE;num_ipc_variations=0;num_clusters=4;instability=instability+2;if(instability>THRESH2)interval_length=interval_length*2;instability=0;if(interval_length>THRESH3)Pickmostpopularconfiguration;discontinue_algorithm=TRUE;elseif(significant_change_in_ipc)if(stable_state)num_ipc_variations-num_ipc_variations+2;elsenum_ipc_variations=MAXi-2,num_ipc_variations-0.125;instability=instability-0.125;elsehave_reference_point=TRUE;RecordbranchesandmemrefsIf(have_reference_pointandnotstable_state)recordIPC;num_clusters=num_clusters*2;if(num_clusters>16)pickthebestperformingconfiguration;makeitsIPCtheIPC_reference_point;stable_state=TRUE;該運(yùn)行時(shí)重新配置的整個(gè)過(guò)程可以在來(lái)自硬件事件計(jì)數(shù)器的支持下用軟件來(lái)實(shí)施。在決定下個(gè)配置之前檢查各種硬件計(jì)數(shù)器的低開(kāi)銷軟件例程(如用于軟件TLB丟失處理的例程)在每個(gè)間隔中都被調(diào)用。該算法總計(jì)大約100條匯編指令,只有一小部分在每次調(diào)用時(shí)執(zhí)行。即使對(duì)于最低的10K條指令的間隔長(zhǎng)度,這等于遠(yuǎn)少于1%的開(kāi)銷。用軟件實(shí)施選擇算法增加了靈活性,并開(kāi)啟了特定于應(yīng)用的算法的可能性。檢測(cè)宏階段變化的更高級(jí)別的算法具有更低的開(kāi)銷。由于該算法完全以軟件運(yùn)行,絕大多數(shù)特定于程序的狀態(tài)都駐留在存儲(chǔ)器而不是硬件寄存器中。因此除了事件計(jì)數(shù)器之外,無(wú)需在關(guān)聯(lián)切換開(kāi)關(guān)上存儲(chǔ)和恢復(fù)其它狀態(tài)。現(xiàn)在給出結(jié)果。在圖4中,第三欄示出使用在每個(gè)程序階段開(kāi)始時(shí)探測(cè)的基于間隔的選擇機(jī)制的效果。作為參考點(diǎn),前兩欄示出具有4個(gè)和16個(gè)集群的靜態(tài)結(jié)構(gòu)。可以看到在幾乎所有情況下,該動(dòng)態(tài)機(jī)制在與最佳靜態(tài)結(jié)構(gòu)性能的近似性方面都做得非常好。對(duì)于幾乎沒(méi)有不穩(wěn)定性的浮點(diǎn)型程序(galgel、mgrid、swim),該動(dòng)態(tài)機(jī)制容易使硬件與程序的要求相匹配。對(duì)于整數(shù)型程序,在多數(shù)情況下,當(dāng)間隔大小不合適時(shí)存在最開(kāi)始的不穩(wěn)定時(shí)段。與我們?cè)缦鹊姆治鲆恢?,該間隔大小被增加直到其穩(wěn)定在允許低于5%的不穩(wěn)定系數(shù)的間隔大小。在parser中,仿真間隔的長(zhǎng)度不足以允許動(dòng)態(tài)機(jī)制穩(wěn)定在所要求的40M的指令間隔。在djpeg中,需要間隔大小足夠大(1.28M條指令)的多個(gè)間隔,以允許小的不穩(wěn)定系數(shù)。此外,由于該間隔長(zhǎng)度很大,會(huì)錯(cuò)過(guò)很多重新配置的機(jī)會(huì)。在每個(gè)間隔內(nèi)存在其中ILP特性不同的很短的階段。由于這兩個(gè)原因,該動(dòng)態(tài)機(jī)制達(dá)不到用于djpeg的具有16個(gè)集群的固定靜態(tài)結(jié)構(gòu)的性能。在gzip的情況下,存在多個(gè)延長(zhǎng)的階段,一些具有遠(yuǎn)ILP特性,另一些具有低數(shù)量的遠(yuǎn)ILP。由于該動(dòng)態(tài)機(jī)制任何時(shí)刻都選擇最佳的配置,因此其性能甚至好于最佳的靜態(tài)固定結(jié)構(gòu)。平均來(lái)說(shuō),任何時(shí)候在基準(zhǔn)組之間16個(gè)集群中的8.3個(gè)被禁止。在沒(méi)有任何其它工作負(fù)載時(shí),假設(shè)提供給這些未用集群的電壓可以關(guān)閉,則這節(jié)省了大量泄漏能量。類似的,對(duì)于多線程工作負(fù)載,即使在優(yōu)化了單線程性能之后也有超過(guò)8個(gè)集群還保留著以由其它線程使用??偟膩?lái)說(shuō),具有探測(cè)的動(dòng)態(tài)的基于間隔的機(jī)制比最佳的靜態(tài)固定結(jié)構(gòu)的性能高大約11%。該機(jī)制還非常強(qiáng)壯-其應(yīng)用于基準(zhǔn)組中的每一個(gè)程序,因?yàn)橥ǔ4嬖谧銐虼致缘拈g隔長(zhǎng)度,使得這些間隔之間的特性相當(dāng)一致。但是,不利的方面是不能針對(duì)相對(duì)較短的階段。我們用較短的初始間隔長(zhǎng)度進(jìn)行了試驗(yàn),但發(fā)現(xiàn)該動(dòng)態(tài)機(jī)制在這些短的間隔長(zhǎng)度處遭遇了巨大的不穩(wěn)定性,因此像以前一樣將間隔長(zhǎng)度增加到更大的值。這是由以下事實(shí)引起的隨著間隔大小的降低測(cè)量變得噪聲更大,并且更難以在間隔之間檢測(cè)到相同的程序度量,因此更難以識(shí)別任一階段的最佳配置。為了解決這些問(wèn)題,我們嘗試了一種替換的基于間隔的機(jī)制。不是在每個(gè)程序階段開(kāi)始時(shí)探測(cè)不同的配置,而是使用16-集群的配置用于一間隔,并基于可獲得的遠(yuǎn)ILP的程度,我們選擇4集群或16集群配置用于后面的間隔,直到下一個(gè)階段改變?yōu)橹?我們最初的結(jié)果表明這是兩個(gè)最有意義的配置并且覆蓋了大多數(shù)情況)。一條指令如果比ROB中最久的指令年輕至少120條指令,則該指令被標(biāo)記為遠(yuǎn)的(distant)。在發(fā)布時(shí),如果該指令是遠(yuǎn)的則其在其ROB項(xiàng)中設(shè)置一位。在提交時(shí),該位被用于增加“遠(yuǎn)ILP的程度”。由于每個(gè)集群具有30個(gè)物理寄存器,因此4個(gè)集群就足以支持大約120條未完成指令(in-flightinstruction)。如果在一間隔中發(fā)布的遠(yuǎn)的指令數(shù)量超過(guò)某一閾值,則表示將要求16個(gè)集群來(lái)利用可獲得的遠(yuǎn)ILP。在我們的實(shí)驗(yàn)中,對(duì)1000的間隔長(zhǎng)度使用160的閾值。由于沒(méi)有探測(cè)階段,硬件對(duì)程序階段變化反應(yīng)迅速,并且以更精細(xì)的粒度進(jìn)行重新配置也變得有意義。因此我們將焦點(diǎn)放在小的固定指令間隔上,不嘗試在運(yùn)行時(shí)增加間隔長(zhǎng)度。但是,由于該決定是基于程序度量而不是探測(cè),因此會(huì)犧牲一些精度。此外,間隔長(zhǎng)度越小對(duì)階段變化的反應(yīng)就越快,但測(cè)量的噪聲也越大,由此導(dǎo)致一些不正確的決定。圖4也示出這種機(jī)制在3種不同固定間隔長(zhǎng)度的情況下的結(jié)果。1K條指令的間隔長(zhǎng)度在精確度和對(duì)階段變化的快速反應(yīng)之間提供了最佳折衷??偟膩?lái)說(shuō),其比最佳靜態(tài)基本情況表現(xiàn)出了同樣11%的改善。然而,在如djpeg的程序中,由于可以針對(duì)具有不同要求的小階段,其所做的比具有探測(cè)的基于間隔的機(jī)制好得多(21%)。不幸的是,在諸如galgel和gzip的程序中遭到了性能方面的打擊,因?yàn)樾〉拈g隔長(zhǎng)度和有噪聲的測(cè)量導(dǎo)致頻繁的階段變化和做出不精確的決定。造成這種情況的一個(gè)主要原因是在連續(xù)的1000個(gè)指令間隔中執(zhí)行的基本塊不總是相同的這一事實(shí)。由此,發(fā)出信號(hào)表明頻繁的階段變化,且每個(gè)新的階段變化導(dǎo)致具有16個(gè)集群的間隔,以幫助確定該遠(yuǎn)ILP。為了緩解這個(gè)問(wèn)題,我們?cè)诨緣K邊界上檢查精細(xì)粒度的重新配置機(jī)制。為了允許以精細(xì)粒度來(lái)重新配置,我們將每個(gè)分支看作潛在的階段變化。我們需要確定分支后面是否跟隨著高程度的遠(yuǎn)ILP,在這種情況下分派應(yīng)當(dāng)自由地繼續(xù),否則分派就應(yīng)當(dāng)只限于前面4個(gè)集群。探測(cè)各種配置不是可行的選擇,因?yàn)樵诓煌奶綔y(cè)階段可能存在很多相鄰的分支,從而導(dǎo)致對(duì)每個(gè)分支的帶噪聲的測(cè)量。因此在獲得足夠的信息之前,假設(shè)分派到16個(gè)集群,并計(jì)算每個(gè)分支之后的遠(yuǎn)ILP特性。這用于更新重新配置表,從而在稍后才面對(duì)相同的分支時(shí)可以選擇正確的集群數(shù)量。如果我們遇到的分支在該表中沒(méi)有列項(xiàng),則假設(shè)16-集群的結(jié)構(gòu),從而可以確定其遠(yuǎn)ILP的程度。假設(shè)4個(gè)集群可以支持大約120條指令以確定分支后是否跟著遠(yuǎn)ILP,我們需要識(shí)別在分支之后提交的360條指令中有多少在發(fā)布時(shí)是遠(yuǎn)的。因此4個(gè)或16個(gè)集群將是合適的。為了實(shí)現(xiàn)該計(jì)算,我們跟蹤該360條最后提交的指令的遠(yuǎn)ILP特性。可通過(guò)進(jìn)入和離開(kāi)該360條指令的隊(duì)列的指令來(lái)更新單個(gè)計(jì)數(shù)器,從而可以保持遠(yuǎn)ILP的運(yùn)行計(jì)數(shù)。如果一個(gè)分支恰好是該360條指令中最久的,則其遠(yuǎn)ILP程度由計(jì)數(shù)器中的值表示。很可能還有來(lái)自相鄰分支的一些干擾。為了使該機(jī)制更為強(qiáng)壯,我們?cè)跒橐环种г谥匦屡渲帽碇袆?chuàng)建項(xiàng)之前對(duì)該同一分支的大量實(shí)例的行為進(jìn)行采樣。此外,我們可以通過(guò)僅對(duì)特殊的分支嘗試改變來(lái)精細(xì)調(diào)整重新配置的粒度。例如,我們發(fā)現(xiàn)在僅對(duì)每第5個(gè)分支嘗試改變時(shí)獲得最佳性能。我們還展示了只在子例程調(diào)用和返回時(shí)嘗試改變的機(jī)制的結(jié)果。我們使該算法形式化如下針對(duì)每第N個(gè)分支的算法在每第N個(gè)分支,查詢重新配置表。如果找到項(xiàng),則改變?yōu)樗ㄗh的配置。否則使用16個(gè)集群。在從360個(gè)提交的指令的隊(duì)列中除去一個(gè)分支時(shí),如果已經(jīng)看見(jiàn)該分支的M個(gè)樣本,則不更新表。否則,記錄最后一個(gè)樣本。如果這是第M個(gè)樣本,則計(jì)算所建議的配置。否則所建議的配置是16個(gè)集群。上述方法的不利方面是最初的測(cè)量指明了將來(lái)的行為。分支后面的代碼特性可能在該程序的過(guò)程中變化。不可能總是很容易地檢測(cè)到這樣的變化,尤其是當(dāng)只使用4個(gè)集群并且遠(yuǎn)ILP的程度不明顯時(shí)。為了處理這種情況,我們以周期性的間隔刷新該重新配置表。我們發(fā)現(xiàn)每10M條指令重新建立該表造成開(kāi)銷可以忽略不計(jì)。在圖5中,除了基本情況和具有探測(cè)的基于間隔的機(jī)制之外,還示出針對(duì)兩種精細(xì)粒度的重新配置機(jī)制的IPC。第一種機(jī)制嘗試在每第5個(gè)分支重新配置,并在針對(duì)每個(gè)分支收集10個(gè)樣本之后在表中創(chuàng)建一項(xiàng)。為了消除別名的影響,使用大型16K-項(xiàng)的表,盡管在幾乎所有情況中,一小得多的表工作得也同樣好。第二種機(jī)制嘗試在每個(gè)子例程調(diào)用和返回時(shí)改變,并使用3個(gè)樣本。該圖表明對(duì)階段變化快速反應(yīng)的能力導(dǎo)致在諸如djpeg、cjpeg、crafty、parser和vpr的程序中提高了性能。對(duì)于crafty觀察到最大數(shù)量的配置之間的變化(1.5百萬(wàn))。與沒(méi)有探測(cè)的基于間隔的機(jī)制不同,未由噪聲測(cè)量導(dǎo)致不穩(wěn)定性。然而,gzip無(wú)法與由基于間隔的機(jī)制達(dá)到的性能匹配。這是因?yàn)榉种е蟮拇a的特性在該程序過(guò)程中發(fā)生改變。因此使用最初的測(cè)量來(lái)選擇將來(lái)配置的策略不總是精確的。同樣的行為也在galgel中觀察到,只是程度較低。總的來(lái)說(shuō),與基于間隔的機(jī)制所獲得的11%的改善相比,精細(xì)粒度的機(jī)制產(chǎn)生超過(guò)基本情況15%的改善程度。從這些結(jié)果中,得出以下結(jié)論具有探測(cè)的基于間隔的機(jī)制容易實(shí)施、強(qiáng)壯并提供大部分可能的加速。由于該機(jī)制選擇粗略間隔長(zhǎng)度的傾向,因此,錯(cuò)過(guò)了很多重新配置的機(jī)會(huì)。因?yàn)樵谶B續(xù)的小間隔上的有噪聲的測(cè)量,選擇小的間隔長(zhǎng)度不是其解決方案。為了允許精細(xì)粒度的重新配置,我們選擇基本塊邊界作為重新配置點(diǎn),并使用最初的測(cè)量來(lái)預(yù)測(cè)將來(lái)的行為。除gzip之外,此方法不會(huì)犧牲太多精確度,并且硬件可以快速適應(yīng)于該程序的需要。但是為了得到額外的4%的改善,必須投資非小數(shù)目的硬件一跟蹤預(yù)測(cè)的表和保持遠(yuǎn)ILP度量的邏輯電路?,F(xiàn)在描述分布式緩存模型,首先關(guān)于集群的LSQ實(shí)施。在該分布式緩存模型中,如果在對(duì)存儲(chǔ)器指令重新命名時(shí)知道有效地址,則可將該地址指向緩存相應(yīng)數(shù)據(jù)的集群。然而,在重新命名時(shí)通常不知道該有效地址,因此要求我們預(yù)測(cè)該存儲(chǔ)器操作將要存取的存儲(chǔ)體?;谠擃A(yù)測(cè),將該指令發(fā)送給一個(gè)集群。一旦計(jì)算出該有效地址,在誤測(cè)存儲(chǔ)體的情況下就必須采取適當(dāng)?shù)幕謴?fù)操作。如果該操作是加載,則恢復(fù)是簡(jiǎn)單的-將有效地址發(fā)送給正確的集群,其中在LSQ中解決存儲(chǔ)器沖突,從緩存存儲(chǔ)體中取出數(shù)據(jù),并將其返回給提出請(qǐng)求的集群。如果存儲(chǔ)器操作是存儲(chǔ),則誤導(dǎo)向可能導(dǎo)致正確性問(wèn)題。在沒(méi)有意識(shí)到存在被錯(cuò)誤導(dǎo)向同一地址的存儲(chǔ)的情況下,可能已經(jīng)進(jìn)行不同集群中的加載了。為了解決這一問(wèn)題,我們采用了以下策略。在重命名時(shí),有效地址未知的存儲(chǔ)被分配給特定的集群(其中計(jì)算其有效地址),但同時(shí)也在其它集群中創(chuàng)建偽時(shí)隙(dummyslot)。該偽時(shí)隙之后的其它集群中的后續(xù)加載被阻止,因?yàn)榇嬖诰哂锌赡軙?huì)潛在地導(dǎo)致沖突的未解析地址的早期存儲(chǔ)。一旦計(jì)算出有效地址,就向所有集群廣播該信息,并除去除了一個(gè)之外的所有LSQ中的偽時(shí)隙。該廣播增加了寄存器和緩存數(shù)據(jù)互連的通信量(我們對(duì)此建模)。有關(guān)存儲(chǔ)體預(yù)測(cè),早先的工作建議使用類似分支預(yù)測(cè)器的表來(lái)預(yù)測(cè)加載或存儲(chǔ)訪問(wèn)的存儲(chǔ)體。在我們的仿真中,使用兩級(jí)存儲(chǔ)體預(yù)測(cè)器,其中第一級(jí)具有1024條,第二級(jí)具有4096條。有關(guān)導(dǎo)引啟發(fā),在具有分布式緩存的處理器中,對(duì)于每個(gè)加載或存儲(chǔ),導(dǎo)引啟發(fā)必須處理3個(gè)數(shù)據(jù)相關(guān)性-兩個(gè)源操作數(shù)和緩存該數(shù)據(jù)的存儲(chǔ)體。由于緩存數(shù)據(jù)的發(fā)送涉及兩次通信(地址和數(shù)據(jù)),因此在加載或存儲(chǔ)被導(dǎo)引至被預(yù)測(cè)為緩存對(duì)應(yīng)數(shù)據(jù)的集群時(shí)性能被最大化(注意與在集中式緩存模型中不同,這樣做不會(huì)增加加載不平衡,因?yàn)榫彺娌皇窃趩我坏奈恢蒙?。即使這樣,頻繁的存儲(chǔ)體誤預(yù)測(cè)和由于存儲(chǔ)地址廣播而增加的通信量嚴(yán)重影響了性能。忽略這些影響則性能改進(jìn)29%。同時(shí),來(lái)自緩存存儲(chǔ)體對(duì)從屬性的支持導(dǎo)致寄存器通信的增加。假設(shè)免費(fèi)寄存器通信則提高性能27%。因此寄存器和緩存業(yè)務(wù)同等地造成了這種系統(tǒng)中的通信瓶頸。迄今為止,我們的結(jié)果假設(shè)集群處理器具有集中式緩存。因此重新配置只是允許導(dǎo)引啟發(fā)可分派到全部集群的子集的問(wèn)題。使用分布式緩存,每個(gè)集群都具有與該集群關(guān)聯(lián)的緩存存儲(chǔ)體。數(shù)據(jù)以字交叉的方式分配給這些緩存存儲(chǔ)體。在從16個(gè)集群到4個(gè)集群的過(guò)程中,緩存存儲(chǔ)體的數(shù)量以及因此數(shù)據(jù)到物理緩存線的映射會(huì)變化。為了解決這一問(wèn)題,最不復(fù)雜的解決方案是在L1數(shù)據(jù)緩存被刷新到L2的同時(shí)安裝處理器。幸運(yùn)的是,不需要刷新存儲(chǔ)體預(yù)測(cè)器。使用16個(gè)集群,存儲(chǔ)體預(yù)測(cè)器產(chǎn)生4位預(yù)測(cè)。在使用4個(gè)集群時(shí),該預(yù)測(cè)的兩個(gè)較低順序位指示正確的存儲(chǔ)體。由于數(shù)據(jù)到物理緩存位置的索引改變,因此重新配置不像在集中式緩存模型中那樣的無(wú)縫。每次重新配置都需要安裝處理器和緩存刷新。因此沒(méi)有應(yīng)用來(lái)自之前章節(jié)的精細(xì)粒度的重新配置機(jī)制。圖6示出針對(duì)基本情況和基于間隔機(jī)制的IPC。第三欄示出具有探測(cè)和10K條指令的最小間隔長(zhǎng)度的機(jī)制。第4欄和第5欄示出沒(méi)有探測(cè)的基于間隔的機(jī)制和使用遠(yuǎn)ILP度量來(lái)選擇最佳配置。分布式緩存的仿真參數(shù)總結(jié)在表2中。我們發(fā)現(xiàn)該結(jié)果趨勢(shì)類似于早先針對(duì)集中式緩存模型所看到的趨勢(shì)。除了djpeg的情況之外,利用更短的間隔進(jìn)行重新配置不會(huì)帶來(lái)什么好處??偟膩?lái)說(shuō),具有探測(cè)的基于間隔的機(jī)制產(chǎn)生超過(guò)基本情況10%的速度的增加。由于該動(dòng)態(tài)機(jī)制嘗試使重新配置最小化,因此緩存刷新保持到最小程度。由于刷新,Vpr面臨最大數(shù)量的回寫(400K),這導(dǎo)致1%的IPC速度的減慢。總的來(lái)說(shuō),這些刷新導(dǎo)致0.3%的IPC降低。我們的結(jié)果示出,對(duì)于兩個(gè)重要緩存結(jié)構(gòu),隨著集群數(shù)量的增長(zhǎng),通信并行性折衷大大影響不同程序的可升級(jí)性。在這一節(jié),我們確認(rèn)我們的動(dòng)態(tài)重新配置算法可應(yīng)用于其他有意義的基本情況。影響通信程度和遠(yuǎn)ILP程度的一些關(guān)鍵參數(shù)是對(duì)集群之間互連的選擇、跳躍之間的通信等待時(shí)間、每個(gè)集群中的功能單元數(shù)量、和每個(gè)集群可支持的指令數(shù)量(每個(gè)集群中寄存器和發(fā)布隊(duì)列項(xiàng)的數(shù)量)。圖7示出使用具有集中式緩存模型的網(wǎng)格互連的效果。由于更好的連接,通信不再是瓶頸,16集群結(jié)構(gòu)的性能比4集群結(jié)構(gòu)的性能好8%。為簡(jiǎn)明起見(jiàn),我們只展示了具有探測(cè)的基于間隔的機(jī)制的結(jié)果。該趨勢(shì)與以前看到的一樣,但由于通信的不利方面不像宣稱的那樣,因此比最佳基本情況相比總改善程度只有7%。精細(xì)粒度的重新配置技術(shù)在數(shù)量上產(chǎn)生與環(huán)互連類似的結(jié)果。我們還研究了該結(jié)果對(duì)于一集群內(nèi)各種資源的大小的敏感度。我們研究了使用更少資源(每個(gè)集群10個(gè)發(fā)布隊(duì)列項(xiàng)和20個(gè)寄存器)和更多資源(每個(gè)集群20個(gè)發(fā)布隊(duì)列項(xiàng)和40個(gè)寄存器)的效果。如果每個(gè)集群存在很少的資源,則平均來(lái)說(shuō)需要更多的集群,以利用可用的并行性。因此16集群的系統(tǒng)是有利的基本情況,且基于間隔的動(dòng)態(tài)機(jī)制相對(duì)于它的改善程度只有8%。如果每個(gè)集群存在更多的資源,則對(duì)于低ILP階段使用少量集群是非常有利的。因此,相對(duì)于16集群基礎(chǔ)的改善是13%。每次跳躍之間的通信成本的加倍導(dǎo)致受通信高度約束的16集群系統(tǒng)。通過(guò)采用動(dòng)態(tài)機(jī)制和使用更少的集群用于低ILP階段,可獲得23%的性能改善。這些結(jié)果在數(shù)量上類似于在之前的子章節(jié)中基于間隔的機(jī)制獲得的改善,表明可動(dòng)態(tài)調(diào)整的設(shè)計(jì)能有助于在很大的處理器參數(shù)范圍內(nèi)顯著改善性能。因此,通信并行性折衷及其管理在將來(lái)大多數(shù)處理器中很可能是很重要的。雖然上面描述了優(yōu)選實(shí)施例及其改型,本領(lǐng)域的技術(shù)人員通過(guò)查閱本公開(kāi)將容易地理解在本發(fā)明的范圍內(nèi)可以實(shí)現(xiàn)其它實(shí)施例。例如,數(shù)字值只是說(shuō)明性的而非限制性的,算法的說(shuō)明也是如此。因此本發(fā)明應(yīng)當(dāng)被解釋為只通過(guò)所附權(quán)利要求來(lái)限定。權(quán)利要求1.一種用于運(yùn)行包括多個(gè)集群的處理器的方法,該方法包括(a)確定將在所述處理器上運(yùn)行程序的所述集群的最佳個(gè)數(shù);(b)從所述處理器僅向所述最佳個(gè)數(shù)的集群發(fā)送指令。2.根據(jù)權(quán)利要求1所述的方法,其中在運(yùn)行所述程序期間執(zhí)行步驟(a)多次。3.根據(jù)權(quán)利要求2所述的方法,其中在該程序的多個(gè)階段的每個(gè)階段開(kāi)始時(shí)執(zhí)行步驟(a)。4.根據(jù)權(quán)利要求3所述的方法,其中步驟(a)包括(i)在每個(gè)階段中定義多個(gè)間隔;(ii)檢測(cè)來(lái)自該多個(gè)間隔的至少一個(gè)間隔的程序統(tǒng)計(jì)數(shù)據(jù);以及(iii)從該程序統(tǒng)計(jì)數(shù)據(jù)來(lái)確定最佳的集群個(gè)數(shù)。5.根據(jù)權(quán)利要求4所述的方法,其中步驟(a)(i)包括選擇所述間隔的長(zhǎng)度。6.根據(jù)權(quán)利要求5所述的方法,其中所述間隔的長(zhǎng)度是通過(guò)以下步驟選擇的以預(yù)定的初始間隔長(zhǎng)度開(kāi)始然后增加該預(yù)定間隔長(zhǎng)度直到達(dá)到穩(wěn)定的閾值或達(dá)到預(yù)定的最大間隔長(zhǎng)度為止。7.根據(jù)權(quán)利要求3所述的方法,其中步驟(a)包括(i)在每個(gè)階段中定義多個(gè)間隔;(ii)在所述多個(gè)間隔的第一間隔期間檢測(cè)可獲得的遠(yuǎn)指令級(jí)并行性程度;以及(iii)根據(jù)該可獲得的遠(yuǎn)指令級(jí)并行性程度確定最佳的集群個(gè)數(shù)。8.根據(jù)權(quán)利要求7所述的方法,其中步驟(a)在每第N個(gè)分支處執(zhí)行,其中N是整數(shù)。9.根據(jù)權(quán)利要求7所述的方法,其中步驟(a)在每次子例程調(diào)用和返回時(shí)執(zhí)行。全文摘要在具有多個(gè)并行運(yùn)行的集群的處理器中,正在使用的集群數(shù)量可以動(dòng)態(tài)改變。在每個(gè)程序階段開(kāi)始時(shí),運(yùn)行對(duì)于間隔的配置選擇以確定最佳配置,該最佳配置一直被使用直到檢測(cè)到下個(gè)階段變化。通過(guò)以最小間隔開(kāi)始然后加倍直到達(dá)到低穩(wěn)定性系數(shù)來(lái)確定最佳指令間隔。文檔編號(hào)G06F15/76GK101023417SQ200580022150公開(kāi)日2007年8月22日申請(qǐng)日期2005年6月8日優(yōu)先權(quán)日2004年6月8日發(fā)明者拉吉夫·巴拉蘇布拉莫尼安,桑德亞·德瓦卡達(dá)斯,大衛(wèi)·阿爾博內(nèi)西申請(qǐng)人:羅切斯特大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1