欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于推測(cè)度量將資源分配給線程的制作方法

文檔序號(hào):6536444閱讀:220來(lái)源:國(guó)知局
基于推測(cè)度量將資源分配給線程的制作方法
【專利摘要】本文描述了基于推測(cè)度量將資源分配給線程?;谂c每個(gè)線程關(guān)聯(lián)的指令的推測(cè)程度,用于將資源分配給多個(gè)線程的方法、保留站和處理器。所述方法包括在保留站接收每個(gè)線程的推測(cè)度量。每個(gè)推測(cè)度量代表與特定線程關(guān)聯(lián)的指令的推測(cè)程度。指令推測(cè)性越大,該指令就越可能被分支預(yù)測(cè)器不正確地預(yù)測(cè)。保留站然后基于推測(cè)度量將功能單元資源(例如管線)分配給線程,并且基于該分配從一個(gè)或多個(gè)線程選擇若干指令。然后將所選擇的指令發(fā)出到功能單元資源。
【專利說(shuō)明】基于推測(cè)度量將資源分配給線程
【背景技術(shù)】
[0001]存在大量提高中央處理單元(CPU)的吞吐量的技術(shù)。一種是通過(guò)使用超標(biāo)量體系結(jié)構(gòu)提高指令級(jí)別的并行度。這通過(guò)允許在每個(gè)時(shí)鐘周期執(zhí)行來(lái)自指令流中的不止一條指令,增加了單個(gè)線程的性能。另一種是通過(guò)使用可以允許來(lái)自不止一個(gè)線程的指令并行操作的多核或同步多線程體系結(jié)構(gòu)來(lái)提高線程級(jí)別的并行度。
[0002]隨著超標(biāo)量體系結(jié)構(gòu)寬度的增加(例如,每個(gè)時(shí)鐘周期可執(zhí)行的指令的數(shù)量增加),對(duì)應(yīng)地,在管線里在同一時(shí)間有更多的指令可以影響程序流(例如分支)。此外,大量這些分支是有條件的,在先前的指令沿著管線進(jìn)一步進(jìn)展下去之前很難確定地知道這些分支的結(jié)果。因此,為了保持增加的吞吐量,使用稱為“分支預(yù)測(cè)”的推測(cè)技術(shù)來(lái)預(yù)測(cè)分支的結(jié)果。通常,超標(biāo)量處理器越寬,預(yù)測(cè)的推測(cè)性越大。而正確的預(yù)測(cè)能夠顯著提高指令吞吐量,不正確的預(yù)測(cè)指令不僅無(wú)助于指令吞吐量,而且它們還束縛了寶貴的資源。為了良好的預(yù)測(cè)精準(zhǔn)度,分支預(yù)測(cè)硬件的尺寸變大。
[0003]盡管有這些缺點(diǎn),但分支預(yù)測(cè)和其他推測(cè)性技術(shù)對(duì)于超標(biāo)量處理器中良好的單線程吞吐量來(lái)說(shuō)很重要。
[0004]多線程處理器通常每時(shí)鐘周期每線程執(zhí)行較少的指令,但是跨若干線程可以執(zhí)行多個(gè)指令(通常稱為同步多線程)。這些可以保持指令的高的總體吞吐量,同時(shí)具有較低的推測(cè)性的總體級(jí)別,因?yàn)槊總€(gè)線程并不嘗試提前運(yùn)行,即每個(gè)線程在任何一時(shí)刻具有較少的進(jìn)行中的指令。
[0005]下面描述的實(shí)施例不限于解決已知處理器的任何或者所有缺點(diǎn)的實(shí)現(xiàn)。

【發(fā)明內(nèi)容】

[0006]提供這個(gè)
【發(fā)明內(nèi)容】
來(lái)以簡(jiǎn)化的形式介紹概念的選擇,其在下面的【具體實(shí)施方式】中進(jìn)一步描述。該
【發(fā)明內(nèi)容】
并不旨在認(rèn)定所述要求保護(hù)的主題的主要特征或重要特征,也不旨在用來(lái)輔助確定所述要求保護(hù)的主題的范圍。
[0007]這里描述的方法、保留站和處理器用于基于與每個(gè)線程相關(guān)聯(lián)的指令的推測(cè)程度,將資源分配給多個(gè)線程。該方法包括在保留站接收每個(gè)線程的推測(cè)度量。每個(gè)推測(cè)度量代表與特定線程相關(guān)聯(lián)的指令的推測(cè)程度。指令推測(cè)性越大,該指令就越有可能被分支預(yù)測(cè)器不正確地預(yù)測(cè)?;谕茰y(cè)度量,保留站然后將功能單元資源(例如管線)分配給線程;并基于所述分配,從一個(gè)或多個(gè)線程選擇若干指令。然后將選擇的指令發(fā)出到功能單元資源。
[0008]第一方面提供一種在處理器的多個(gè)線程之間分配資源的方法,每個(gè)線程與多條指令相關(guān)聯(lián),該方法包括:在保留站接收多個(gè)推測(cè)度量,每個(gè)推測(cè)度量代表與特定線程相關(guān)聯(lián)的指令的推測(cè)程度;基于推測(cè)度量,在保留站將功能單元資源分配給多個(gè)線程;基于功能單元資源的分配,在保留站選擇與多個(gè)線程相關(guān)聯(lián)的指令;以及在保留站將所選擇的指令發(fā)出給所述功能單元資源。
[0009]第二方面提供了被安排用來(lái)在多個(gè)線程之間分配資源的保留站,該保留站包括:多個(gè)指令隊(duì)列,每個(gè)指令隊(duì)列被配置用來(lái)存儲(chǔ)多個(gè)線程中的一個(gè)的指令;以及與多個(gè)指令隊(duì)列通信的指令調(diào)度器,所述的指令調(diào)度器被配置用來(lái):接收多個(gè)推測(cè)度量,每個(gè)推測(cè)度量代表與特定線程相關(guān)聯(lián)的指令的推測(cè)程度;基于所述推測(cè)度量,將功能單元資源分配給所述多個(gè)線程;基于功能單元資源的所述分配,從所述多個(gè)指令隊(duì)列選擇指令;以及將所選擇的指令發(fā)出給所述功能單元資源以供執(zhí)行。
[0010]第三方面提供了被安排用來(lái)計(jì)算多個(gè)推測(cè)度量的推測(cè)度量計(jì)算器,該度量計(jì)算器包括:輸入模塊,其被被配置用來(lái)接收多條指令的信任值,每個(gè)信任值代表特定指令被正確預(yù)測(cè)的可能性;以及與輸入模塊通信的邏輯單元,該邏輯單元被配置用來(lái)基于信任值生成多個(gè)推測(cè)度量,每個(gè)推測(cè)度量代表與多個(gè)線程中的一個(gè)相關(guān)聯(lián)的指令的推測(cè)程度。
[0011]第四方面提供了被安排用來(lái)在多個(gè)線程之間分配功能單元資源的處理器,包括:第二方面的保留站;以及與保留站通信的第三方面的推測(cè)度量計(jì)算器。
[0012]第五方面提供一種基本上如參考圖1和圖2描述的處理器。
[0013]第六方面提供一種基本上如參考圖4描述的用來(lái)將資源分配給多個(gè)線程的方法。
[0014]這里描述的方法可以由在有形存儲(chǔ)介質(zhì)上的機(jī)器可讀形式的軟件執(zhí)行,例如計(jì)算機(jī)程序形式,其包括計(jì)算機(jī)程序代碼模塊,當(dāng)程序運(yùn)行在計(jì)算機(jī)上時(shí),適于執(zhí)行這里所描述的任何方法的所有步驟,并且其中計(jì)算機(jī)程序可以具體實(shí)現(xiàn)在計(jì)算機(jī)可讀介質(zhì)中。有形的(或非瞬態(tài)的)存儲(chǔ)介質(zhì)的示例包括磁盤、拇指驅(qū)動(dòng)、存儲(chǔ)器卡等,但不包括傳播信號(hào)。軟件可以適合在并行處理器或串行處理器上執(zhí)行,這樣該方法步驟可以以任何合適的順序或同時(shí)執(zhí)行。
[0015]這承認(rèn)了固件和軟件可以是有價(jià)值的、可分別交易的商品。旨在包含其運(yùn)行于“啞”或標(biāo)準(zhǔn)硬件上或控制“啞”或標(biāo)準(zhǔn)硬件的軟件來(lái)執(zhí)行所需的功能。也旨在包含“描述”或定義硬件的配置的軟件來(lái)執(zhí)行所需的功能,所述軟件例如是HDL (硬件描述語(yǔ)言)軟件,其用于設(shè)計(jì)硅芯片,或用于設(shè)置通用可編程芯片。
[0016]對(duì)于技術(shù)人員來(lái)講明顯的是,優(yōu)選的特征可以適當(dāng)?shù)睾喜?,并且可以與本發(fā)明的任何方面相結(jié)合。
【專利附圖】

【附圖說(shuō)明】
[0017]本發(fā)明的實(shí)施例將會(huì)參照以下附圖通過(guò)示例的方式進(jìn)行描述,其中:
[0018]圖1是示例多線程超標(biāo)量處理器的示意圖;
[0019]圖2是圖1的不例保留站和相關(guān)聯(lián)的功能單兀的不意圖;
[0020]圖3是用于計(jì)算線程的推測(cè)度量的示例方法的流程圖;
[0021]圖4是用于基于推測(cè)度量在線程之間分配資源的示例方法的流程圖;和
[0022]圖5是用于發(fā)出指令到功能單元的示例方法的流程圖。
[0023]貫穿各圖,相同的參考數(shù)字用于指示相似的特征。
【具體實(shí)施方式】
[0024]本發(fā)明的實(shí)施例在下面僅通過(guò)示例的方式進(jìn)行描述。這些例子代表了 申請(qǐng)人:目前所知將本發(fā)明付諸實(shí)踐的最佳方法,但是它們并不是可以實(shí)現(xiàn)這點(diǎn)的唯一方法。該描述闡明了示例的功能和用于構(gòu)建和運(yùn)行示例的步驟的順序。然而,相同或同等的功能和順序可由不同的示例來(lái)完成。
[0025]這里描述的實(shí)施例結(jié)合了上面描述的超標(biāo)量和多線程技術(shù)以改善處理器中的并行處理。特別地,這里描述的處理器和方法實(shí)現(xiàn)分支預(yù)測(cè)和多線程,其中資源被基于推測(cè)度量指定給線程。每個(gè)推測(cè)度量代表與特定的線程關(guān)聯(lián)的指令的推測(cè)程度。指令推測(cè)性越大,該指令就越可能曾被不正確地預(yù)測(cè)。通過(guò)將資源分配給具有較少推測(cè)性指令的線程,并且對(duì)應(yīng)地從具有較多推測(cè)性指令的線程釋放(de-allocate)資源,處理器的吞吐量可以增加。具體而言,減緩從具有多個(gè)推測(cè)性指令的線程發(fā)出指令可以減少在管線中被不正確預(yù)測(cè)的指令的數(shù)量,所述指令有可能再次繞回(re-wind),因此不是資源的有效使用。
[0026]現(xiàn)在參考圖1,其示出了具有兩個(gè)線程102和104的多線程超標(biāo)量處理器100,其中基于每個(gè)線程的推測(cè)度量將資源動(dòng)態(tài)指定或分配給線程102或104。雖然圖1的示例顯示了具有兩個(gè)線程102和104的多線程超標(biāo)量處理器,但對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō)明顯的是,這里描述的方法和原理可以同樣應(yīng)用于具有多于兩個(gè)線程的處理器。
[0027]每個(gè)線程102和104包括:提取階段106或108,其被配置為如程序計(jì)數(shù)器(PC)所指出的從程序取指令(以程序次序);以及解碼和重命名階段110或112,其被安排用來(lái)解釋指令和執(zhí)行寄存器重命名。如本領(lǐng)域技術(shù)人員所知,通過(guò)消除某些依賴性,例如先讀后寫(WAR)依賴關(guān)系,寄存器重命名能夠使更多的指令無(wú)序執(zhí)行。
[0028]在指令經(jīng)過(guò)重命名階段110或112后,所述指令(a)被提供給多個(gè)無(wú)序管線118以供執(zhí)行jP(b)被插入到重排序緩沖區(qū)114或116 (ROB)0重排序緩沖區(qū)114或116是使指令能夠無(wú)序執(zhí)行但順序提交的緩沖區(qū)。重排序緩沖區(qū)114或116以程序次序保有插入它的指令,但在ROBl 14或116內(nèi)的指令可以通過(guò)無(wú)序管線118不按順序執(zhí)行。指令在它們被無(wú)序管線118執(zhí)行之后,從重排序緩沖區(qū)114或116以程序次序輸出到提交階段120或122。提交階段120或122然后提交指令的結(jié)果到寄存器/存儲(chǔ)器。
[0029]在一些例子中,重排序緩沖區(qū)114或116可以形成為這樣的循環(huán)緩沖區(qū):頭指向在R0B114或116中的最舊的指令,尾指向在R0B114或116中最新的指令。在這些例子中,當(dāng)指令已經(jīng)被無(wú)序管線118執(zhí)行時(shí),將所述指令從R0B114或116的頭輸出,并且該頭遞增到ROB中下一個(gè)指令。
[0030]每個(gè)線程102和104還包括分支預(yù)測(cè)器124或125,其被設(shè)置用來(lái)在已知指令(例如分支指令)會(huì)造成可能的流變化的情況下預(yù)測(cè)程序流將會(huì)采用哪個(gè)方向。分支預(yù)測(cè)是有用的,因?yàn)樗怪噶钤谝阎种е噶畹慕Y(jié)果之前能夠由處理器100推測(cè)性地執(zhí)行。每個(gè)分支預(yù)測(cè)器124或125可與對(duì)應(yīng)的提取階段106或108、解碼和重命名階段110或112和/或無(wú)序管線118通信。例如,提取階段106和108可以使用來(lái)自對(duì)應(yīng)的分支預(yù)測(cè)器124或125的信息來(lái)確定下一個(gè)提取哪個(gè)指令;解碼和重命名階段110和112可以提供信息到分支預(yù)測(cè)器124或125,指示哪些指令是分支指令(在其他情況下,指令可以在提取階段106或108被解碼);以及無(wú)序管線118可以為分支預(yù)測(cè)器124和125提供指示更新程序計(jì)數(shù)器的信息。
[0031]在一些情況下,除了預(yù)測(cè)程序?qū)⒉捎玫姆较?,分支預(yù)測(cè)器124或125也可以生成每個(gè)預(yù)測(cè)的信任值。該信任值指示了預(yù)測(cè)是正確的可能性。在一些情況下,信任值越高,預(yù)測(cè)是正確的可能性越大;而信任值越低,預(yù)測(cè)是不正確的可能性越大。信任值可以是任何合適的形式。例如,信任值可以是以一位或多位實(shí)現(xiàn)的整數(shù)或百分比。當(dāng)僅有一位用于每個(gè)信任值時(shí),“O”可以指示不信任或0%信任,“I”可以指示信任或100%信任。所使用的位越多,可以指定的信任值越不同。
[0032]可以使用任何合適的方法或技術(shù)來(lái)確定信任值。例如,在一些情況下,對(duì)于特定的分支預(yù)測(cè)的信任值是使用二位飽和計(jì)數(shù)器計(jì)算的。每一次分支被采用,相關(guān)聯(lián)的計(jì)數(shù)器會(huì)遞增。同樣,當(dāng)分支沒(méi)有被采用時(shí),計(jì)數(shù)器則遞減。如果在任何時(shí)間計(jì)數(shù)器具有低值(例如O或I ),則分支很可能不被采用,并且如果計(jì)數(shù)器具有高值(例如2或3),則分支很可能被采用。在這種技術(shù)中,當(dāng)分支多次以相同方式行進(jìn)(例如采用或不采用)時(shí),預(yù)測(cè)的信任增加。因此,極值(例如O和3)可以指示高信任,中值(例如I或2)可以指示低信任。其他可用于生成信任值的技術(shù)描述于Grunwald等人發(fā)表于ISCA’ 98Proceedings of the25th annualinternational symposium on Computer architecture 的論文“Confidence Estimationby Speculation Control ”,122-131 頁(yè)。
[0033]處理器100還包括推測(cè)度量計(jì)算器126,其被配置為基于與線程關(guān)聯(lián)的分支預(yù)測(cè)的信任值生成每個(gè)線程的推測(cè)度量。推測(cè)度量代表與線程關(guān)聯(lián)的指令的推測(cè)程度。指令推測(cè)性越大,越可能曾對(duì)指令進(jìn)行過(guò)不正確的預(yù)測(cè)。相反,指令推測(cè)性越小,越有可能對(duì)指令進(jìn)行了正確的預(yù)測(cè)。
[0034]在一些情況下,推測(cè)度量計(jì)算器126可以被配置為:通過(guò)求和或者合并與那個(gè)線程關(guān)聯(lián)的預(yù)定數(shù)量的指令的信任值,為特定的線程計(jì)算推測(cè)度量。
[0035]在其他情況下,推測(cè)度量計(jì)算器126可以被設(shè)置用來(lái)跟蹤當(dāng)分支通過(guò)處理器100時(shí)所述分支的信任值。當(dāng)分支被預(yù)測(cè)時(shí),推測(cè)度量計(jì)算器126可以添加相關(guān)聯(lián)的信任值到適當(dāng)線程的推測(cè)度量。一旦分支方向是已知的(即它已被執(zhí)行),推測(cè)度量計(jì)算器126就可以從推測(cè)度量減去相關(guān)聯(lián)的信任值。這可以產(chǎn)生比求信任值的和更準(zhǔn)確的推測(cè)度量,但從實(shí)現(xiàn)所需的硬件上講可能成本更高。
[0036]然后,由推測(cè)度量計(jì)算器126計(jì)算出的推測(cè)度量被提供給無(wú)序管線118,在那里它們被用來(lái)給線程分配資源。例如,在一些情況下,相比與較少推測(cè)性指令相關(guān)聯(lián)的線程,給與較多推測(cè)性指令相關(guān)聯(lián)的線程分配較少的資源。這可以通過(guò)減少管線中的錯(cuò)誤路徑(或不正確預(yù)測(cè)的)指令的數(shù)量來(lái)改善處理器的整體吞吐量。具體而言,減緩從具有多個(gè)推測(cè)性指令的線程指令可以減少管線中錯(cuò)誤路徑(或不正確預(yù)測(cè)的)指令的數(shù)量,所述指令有可能再次繞回,因此不是資源的有效使用。
[0037]在一些情況下,推測(cè)度量計(jì)算器126可以包括:輸入模塊132,用于從分支預(yù)測(cè)器124和125接收信任值;和邏輯單元134,用于基于接收到的信任值計(jì)算推測(cè)度量。輸入模塊132和/或邏輯單元134可以在硬件邏輯中實(shí)現(xiàn)。
[0038]如圖1所示,無(wú)序管線118可以包括多個(gè)保留站128a、128b和128c,每個(gè)保留站與功能單元130a、130b或130c相關(guān)聯(lián)。每個(gè)功能單元130a、130b和130c負(fù)責(zé)執(zhí)行指令并可以包括一個(gè)或多個(gè)功能單元管線。功能單元130a、130b和130c可以被設(shè)置用來(lái)執(zhí)行特定類型的指令。例如,一個(gè)或多個(gè)功能單元130a、130b和130c可以是加載/存儲(chǔ)單元、整數(shù)單元、浮點(diǎn)單元(FPU)、數(shù)字信號(hào)處理(DSP)/單指令多數(shù)據(jù)(SMD)單元、或者乘法累加(MAC)單元。加載/存儲(chǔ)單元執(zhí)行加載和存儲(chǔ)存儲(chǔ)器指令,整數(shù)單元執(zhí)行整數(shù)指令,F(xiàn)PU執(zhí)行浮點(diǎn)指令,DSP/SIMD單元具有多個(gè)處理元件同時(shí)在多個(gè)數(shù)據(jù)點(diǎn)執(zhí)行相同的操作,以及MAC單元計(jì)算兩個(gè)數(shù)的乘積并把那個(gè)乘積加到累加器。功能單元和其中的管線可能有不同的長(zhǎng)度和/或復(fù)雜性。例如,F(xiàn)PU管線通常比整數(shù)執(zhí)行管線更長(zhǎng),這是因?yàn)樗ǔ?zhí)行更加復(fù)雜的操作。
[0039]保留站128a、128b和128c從線程102和104接收指令,并且基于由推測(cè)度量計(jì)算器126計(jì)算出的推測(cè)度量將功能單元資源(例如管線)分配給線程102和104。盡管圖1顯示了保留站128a、128b和128c與功能單元130a、130b和130c之間一對(duì)一的關(guān)系,但在其他情況下,可能有保留站128a、128b和128c與功能單元130a、130b和130c之間一對(duì)多的關(guān)系。例如,在一些情況下,保留站128a、128b和128c中至少一個(gè)可以被配置用來(lái)向多個(gè)功能單元130a、130b和/或130c提供指令。在其他情況下,可能只有單一的保留站128a、128b或128c被配置用來(lái)向所有的功能單元130a、130b和130c提供指令。將參考圖2更詳細(xì)的描述示例保留站128和相關(guān)聯(lián)的功能單元130。
[0040]現(xiàn)在參考圖2,其示出了圖1的示例保留站128和相關(guān)聯(lián)的功能單元130。如上所述,保留站128: (a)基于由推測(cè)度量計(jì)算器126計(jì)算出的推測(cè)度量,將功能單元130資源(例如管線)分配或指定給線程102和104 ;然后(b)基于所述分配,從線程發(fā)出指令到功能單元130資源(例如管線)。
[0041]圖2的示例性保留站128包括用于處理器100中每個(gè)線程的指令隊(duì)列202和204。在圖1的處理器100中,有兩個(gè)線程102和104,因此示例性保留站128具有兩個(gè)指令隊(duì)列202和204。然而,對(duì)于本領(lǐng)域的技術(shù)人員而言明顯的是,保留站128可以根據(jù)處理器中的線程數(shù)量而具有更多或更少的指令隊(duì)列。
[0042]每個(gè)指令隊(duì)列202和204從對(duì)應(yīng)的線程102或104的解碼和重命名階段110或112接收指令,并且將每個(gè)指令存儲(chǔ)在可用的條目或槽中。指令在隊(duì)列中等待,直到它的輸入操作數(shù)的值可用。具體來(lái)說(shuō),保留站128可以監(jiān)控功能單元130的輸出,以發(fā)現(xiàn)在指令隊(duì)列中每個(gè)指令的缺失操作數(shù)(就緒位設(shè)置為O的操作數(shù))的匹配。一旦保留站128發(fā)現(xiàn)缺失操作數(shù)的匹配,它就為所述操作數(shù)將就緒位設(shè)置為I。在一些情況下,保留站128也從功能單元130輸出拷貝操作數(shù)到指令隊(duì)列。在其他情況下,在指令已經(jīng)被發(fā)出給功能單元130后,從適當(dāng)?shù)募拇嫫魑募x出操作數(shù)的值。例如,管線208、210、212或214的第一階段可以被配置用來(lái)從適當(dāng)?shù)募拇嫫魑募凶x取操作數(shù)的值。這可以減少在從功能單元130輸出復(fù)制操作數(shù)的值的情況下功能單元130和保留站128之間的連接數(shù)量。
[0043]一旦指令的所有操作數(shù)的值是可用的,則宣稱指令為執(zhí)行做好了準(zhǔn)備,并且可以為那個(gè)指令設(shè)置就緒位來(lái)指示:指令準(zhǔn)備好被發(fā)出到功能單元130。指令的操作數(shù)的值可以在更早、更晚的指令之前可用,使它可以在那些更早、更晚的指令之前離開隊(duì)列。
[0044]圖2的示例性保留站128還包括指令調(diào)度器206,其被配置用來(lái)從指令隊(duì)列202和204發(fā)出指令到功能單元130以供執(zhí)行。
[0045]功能單元130包括一個(gè)或多個(gè)相似管線208、210、212和214用以執(zhí)行指令。圖2的示例性功能單元130包括四個(gè)管線208、210、212和214 ;然而,對(duì)于本領(lǐng)域的技術(shù)人員明顯的是,功能單元130可以包括更多或更少的管線。
[0046]每個(gè)時(shí)鐘周期里,指令調(diào)度器206嘗試為每個(gè)管線208、210、212和214提供來(lái)自指令隊(duì)列202和204中的一個(gè)的指令。在傳統(tǒng)的超標(biāo)量、多線程處理器中,基于簡(jiǎn)單度量(例如,每個(gè)線程可以被分配相等數(shù)量的管線;或者基于線程性能而將管線分配給線程)將資源分配給線程。例如,如果有兩個(gè)線程和四個(gè)管線(例如圖2所示的例子),則每個(gè)線程可以自動(dòng)分配兩個(gè)管線。這意味著,指令調(diào)度器206嘗試從第一指令隊(duì)列202中選擇兩個(gè)就緒指令,從第二指令隊(duì)列204中選擇兩個(gè)就緒指令,然后將選擇的指令發(fā)出到管線208、210、212和 214。
[0047]然而,如果在特定的指令隊(duì)列202或204中沒(méi)有兩個(gè)就緒指令,則指令調(diào)度器206可以從其他隊(duì)列選擇就緒指令,這樣向每個(gè)管線發(fā)出指令。如上所述,當(dāng)指令的所有操作數(shù)的值可用時(shí),宣稱指令就緒。
[0048]就緒的指令可以優(yōu)先。例如,它們可以在程序次序上或者在保留站中的時(shí)間長(zhǎng)度上優(yōu)先。通常最高優(yōu)先級(jí)的指令被選擇首先發(fā)出。
[0049]在圖1和2顯示的示例中,不是簡(jiǎn)單地在線程102和104之間同等地分配功能單元資源,而是指令調(diào)度器206使用由推測(cè)度量計(jì)算器126計(jì)算出的推測(cè)度量,來(lái)將功能單元130資源(例如管線208、210、212和214)分配給不同的線程102和104。
[0050]在一些情況下,指令調(diào)度器206被配置用來(lái)基于推測(cè)度量的比較來(lái)分配功能單元130資源(例如管線208、210、212和214)。例如,指令調(diào)度器206可以被配置用來(lái):將附加功能單元130資源(例如管線208、210、212和214)分配給線程,其中該線程的推測(cè)度量指示線程與較少推測(cè)性指令相關(guān)聯(lián);以及用來(lái)從線程對(duì)應(yīng)地釋放資源,其中該線程的推測(cè)度量指示線程與較多推測(cè)性指令相關(guān)聯(lián)。
[0051]當(dāng)較高的推測(cè)度量指示線程與較少推測(cè)性指令相關(guān)聯(lián),并且較低的推測(cè)度量指示線程與較多推測(cè)性指令相關(guān)聯(lián)時(shí),指令調(diào)度器206可以將更多的功能單元130資源(例如管線208、210、212和214)分配給具有較高的推測(cè)度量的線程。例如,指令調(diào)度器206可以將三個(gè)管線(例如管線208、210和212)分配給具有較高的推測(cè)度量的線程(例如線程0),而僅將一個(gè)管線(例如管線214)分配給具有較低的推測(cè)度量的線程(例如線程I)。在這個(gè)示例中,在適當(dāng)?shù)臅r(shí)鐘周期,從與具有較高推測(cè)度量的線程(例如線程O)相關(guān)聯(lián)的指令隊(duì)列(例如指令隊(duì)列202)選擇三個(gè)就緒指令,而從與具有較低推測(cè)度量的線程(例如線程I)相關(guān)聯(lián)的指令隊(duì)列(例如指令隊(duì)列204)僅選擇一個(gè)就緒指令。
[0052]在一些情況下,如果推測(cè)度量和至少一個(gè)其他推測(cè)度量之間的差超過(guò)預(yù)定閾值,指令調(diào)度器206可以被配置為僅將額外的資源分配給具有較少推測(cè)性指令的線程。這是為了確保當(dāng)推測(cè)度量指示相似級(jí)別的風(fēng)險(xiǎn)或推測(cè)時(shí),系統(tǒng)不從一個(gè)線程帶走資源并把它們給另一個(gè)線程。
[0053]在一些情況下,如果兩個(gè)推測(cè)度量之間的差超過(guò)第一預(yù)定閾值,那么指令調(diào)度器206可以被配置用來(lái):從與較低推測(cè)度量相關(guān)聯(lián)的線程釋放功能單元130資源(例如管線208、210、212或214)之一,并將那個(gè)功能單元130資源(例如管線208、210、212或214)重新分配給與較高推測(cè)度量相關(guān)聯(lián)的線程。在一些情況下,如果兩個(gè)推測(cè)度量之間的差超過(guò)第二預(yù)定閾值,則指令調(diào)度器206可以被配置用來(lái):釋放所有被分配給具有較低推測(cè)度量的線程的功能單元130資源(例如管線208、210、212或214),并且將那些功能單元130資源(例如管線208、210、212或214)重新分配給具有較高推測(cè)度量的線程。
[0054]在一些情況下,在確定是否從一個(gè)線程重新分配資源到另一個(gè)線程時(shí),指令調(diào)度器206可以進(jìn)一步被配置為考慮實(shí)際的推測(cè)度量。例如,如果第一線程的推測(cè)度量為0,第二線程的推測(cè)度量為2,即使差大于預(yù)定的閾值(例如1),指令調(diào)度器206也可以不在兩個(gè)線程之間重新分配資源,因?yàn)閮蓚€(gè)線程的推測(cè)度量指示與其相關(guān)聯(lián)的指令是高推測(cè)性的。相反,如果第一線程的推測(cè)度量為6,第二線程的推測(cè)為8,則指令調(diào)度器206可以在兩個(gè)線程之間重新分配資源,因?yàn)椴畲笥陬A(yù)定的閾值(例如I),并且推測(cè)度量為8指示與第二線程相關(guān)聯(lián)的指令不是非常有風(fēng)險(xiǎn)的或推測(cè)性的。
[0055]在一些情況下,在每個(gè)時(shí)鐘周期,指令調(diào)度器206可以被配置用來(lái)執(zhí)行以推測(cè)度量為基礎(chǔ)的分配。然而,在每個(gè)時(shí)鐘周期執(zhí)行分配需要大量的電力。因此,為了節(jié)約電力,在一些情況下,指令調(diào)度器206可以被配置為周期性地(例如每4、8或16個(gè)時(shí)鐘周期)執(zhí)行以推測(cè)度量為基礎(chǔ)的分配。因?yàn)樵诿總€(gè)周期指令仍發(fā)出到管線208、210、212和214,所以在不執(zhí)行分配的周期,指令調(diào)度器206可以被配置為使用最近計(jì)算出的分配來(lái)發(fā)出指令。然而,與在另一線程不能使用所有分配給它的資源(例如管線)的情況下的分配中所規(guī)定的相t匕,使用最近計(jì)算出的分配不會(huì)阻止指令調(diào)度器206發(fā)出來(lái)自特定線程更多的指令。具體地說(shuō),如果線程沒(méi)有足夠的就緒指令來(lái)使用所有分配給它的資源(例如管線),那么指令調(diào)度器206可以從另一線程選擇額外的就緒指令來(lái)使用資源(例如管線)。
[0056]在一些情況下,軟件程序員可以有能力為每個(gè)線程選擇可接受的風(fēng)險(xiǎn)級(jí)別。特別是軟件程序員可以有能力為每個(gè)線程設(shè)置可以接受的推測(cè)度量。這在特定程序看起來(lái)有風(fēng)險(xiǎn)(例如高推測(cè)性的)但是對(duì)于該特定程序的預(yù)測(cè)往往是正確的時(shí)是有用的。在這些情況下,僅當(dāng)線程的推測(cè)度量指示風(fēng)險(xiǎn)高于可接受的風(fēng)險(xiǎn)時(shí),資源將被重新分配給另一線程,否則資源將根據(jù)默認(rèn)分配而被劃分。默認(rèn)分配可以通過(guò)軟件程序員或硬編碼配置。在一些情況下,默認(rèn)分配設(shè)置為每個(gè)線程被分配相等數(shù)量的資源。例如,當(dāng)較低的推測(cè)度量指示較高風(fēng)險(xiǎn)或推測(cè)性的線程,且較高的推測(cè)度量指示較低風(fēng)險(xiǎn)或推測(cè)性的線程時(shí),如果那個(gè)線程的推測(cè)度量低于由程序員設(shè)置的可接受的推測(cè)度量,則指令調(diào)度器206可以被配置用來(lái)從線程釋放資源。
[0057]因?yàn)槊總€(gè)管線208、210、212和214能夠以來(lái)自不止一個(gè)線程的指令結(jié)束,當(dāng)指令調(diào)度器206發(fā)出指令到管線208、210、212和214時(shí),它也可以向管線208、210、212和214提供指令與哪個(gè)線程相關(guān)聯(lián)的指示。然后,如果不正確預(yù)測(cè)的指令發(fā)生在管線208、210、212和214,要求管線208、210、212和214繞回,則管線208、210、212和214可以僅僅繞回或清除那些與具有不正確預(yù)測(cè)的指令的線程相關(guān)聯(lián)的指令,而不是繞回所有指令。在一些情況下,不正確預(yù)測(cè)的指令可以被允許在管線208、210、212或214中繼續(xù),直到所有的指令等到不正確預(yù)測(cè)的指令已被執(zhí)行。在那時(shí),來(lái)自特定線程的、在管線208、210、212和214和保留站128中的所有指令已經(jīng)發(fā)生在不正確預(yù)測(cè)的指令之后,并且需要繞回或清除。
[0058]在一些情況下,指令調(diào)度器206可以被配置用來(lái)對(duì)具有管線中不正確預(yù)測(cè)的指令的任意線程去除優(yōu)先級(jí)。一旦知道線程具有管線中不正確預(yù)測(cè)的指令,則可以保證存在與這個(gè)線程相關(guān)聯(lián)的指令將被從管線中清除。具體而言,在不正確預(yù)測(cè)的指令之后的那個(gè)線程的管線中的任何指令均將必須被清除。因此,對(duì)任何具有不正確預(yù)測(cè)的指令的線程去除優(yōu)先級(jí),減少了在管線中將會(huì)被不得不清除的指令的數(shù)量。
[0059]一旦線程已被識(shí)別為具有管線中不正確預(yù)測(cè)的指令,線程可以被分配沒(méi)有或預(yù)定的最小數(shù)量的資源(例如一個(gè)管線)。當(dāng)線程不被分配任何資源時(shí),來(lái)自那個(gè)線程的指令僅當(dāng)從其他線程沒(méi)有足夠的指令來(lái)滿足分配時(shí),才可以被發(fā)出到管線。
[0060]在一些情況下,在預(yù)定的時(shí)間段之后、在線程的性能降低到預(yù)定閾值以下之后、或者在管線已經(jīng)為那個(gè)線程被清除了之后,可以以正常方式(例如基于推測(cè)度量)分配資源給具有不正確預(yù)測(cè)的指令的線程。[0061]現(xiàn)在參考圖3,其示出了方法300,該方法可以由圖1的推測(cè)度量計(jì)算器126執(zhí)行,用來(lái)確定特定線程的推測(cè)度量。在步驟302中,推測(cè)度量計(jì)算器126從分支預(yù)測(cè)器124接收針對(duì)特定線程(例如線程O)的特定分支預(yù)測(cè)的信任值。如上所述,信任值代表預(yù)測(cè)是正確的可能性。在一些情況下,信任值越高則預(yù)測(cè)就越有可能是正確的,信任值越低則預(yù)測(cè)就越有可能是不正確的。一旦已接收到信任值,方法300進(jìn)行到步驟304。
[0062]在步驟304中,推測(cè)度量計(jì)算器126把接收到的信任值加到特定線程(例如線程O)的推測(cè)度量。一旦信任值被加到特定線程的推測(cè)度量,方法300進(jìn)行到步驟306。
[0063]在步驟306中,推測(cè)度量計(jì)算器126確定是否已達(dá)到預(yù)定數(shù)量的周期(例如八個(gè)周期)。特別地,在一些情況下,特定線程的推測(cè)度量是在預(yù)定數(shù)量的周期數(shù)上通過(guò)求和或組合信任值而計(jì)算出的。預(yù)定數(shù)量的周期選擇為足夠大,使得系統(tǒng)不會(huì)太快地分配或釋放資源(例如,如線程具有一個(gè)高推測(cè)性的指令那么快),但是足夠小,使得它會(huì)響應(yīng)與線程相關(guān)聯(lián)的指令的推測(cè)性質(zhì)中的通常變化。預(yù)定數(shù)量的周期可以基于實(shí)驗(yàn)進(jìn)行調(diào)整。如果預(yù)定數(shù)量的周期已達(dá)到,則方法300行進(jìn)到步驟308。然而,如果預(yù)定數(shù)量的周期沒(méi)有達(dá)到,那么方法300回到步驟302。
[0064]在步驟308中,推測(cè)度量計(jì)算器126為保留站128提供推測(cè)度量。在步驟310中,重新設(shè)置推測(cè)度量。一旦推測(cè)度量已被重新設(shè)置,方法300回到步驟302。
[0065]可以為處理器中的每個(gè)線程并行運(yùn)行方法300的實(shí)例。
[0066]雖然方法300描述了在預(yù)定數(shù)量的周期數(shù)上通過(guò)對(duì)信任值求和來(lái)計(jì)算推測(cè)度量,但是在其他實(shí)施例中,取代在預(yù)定數(shù)量的周期之后重新設(shè)置推測(cè)度量,推測(cè)度量計(jì)算器126可以監(jiān)控任何通過(guò)處理器的分支,并且一旦被執(zhí)行,則從推測(cè)度量減去與特定分支相關(guān)聯(lián)的信任值。在這些情況下,推測(cè)度量可周期性采樣,并提供給保留站以執(zhí)行分配。
[0067]此外,方法300描述了在預(yù)定數(shù)量的周期上通過(guò)對(duì)信任值求和來(lái)計(jì)算推測(cè)度量,但是在其他實(shí)施例中,可以在預(yù)定數(shù)量的指令上通過(guò)對(duì)信任值求和來(lái)計(jì)算推測(cè)度量。在這些實(shí)施例中,推測(cè)度量計(jì)算器126可以被配置用來(lái)接收來(lái)自另一階段或部件的輸入,例如提取階段106或108,其指示已處理的指令數(shù)量。
[0068]現(xiàn)在參考圖4,其示出了方法400,該方法可以由圖2的指令調(diào)度器206執(zhí)行,用于基于與線程相關(guān)聯(lián)的推測(cè)度量在多個(gè)線程之間分配資源。在步驟402中,指令調(diào)度器206確定自上次分配后是否發(fā)生了預(yù)定數(shù)量的周期。如果發(fā)生了預(yù)定數(shù)量的周期,則方法行進(jìn)到步驟404。然而,如果預(yù)定數(shù)量的周期尚未發(fā)生,那么方法回到步驟402。
[0069]預(yù)定數(shù)量的周期確定多久進(jìn)行一次分配。例如,如果預(yù)定數(shù)量的周期被設(shè)置為1,那么每個(gè)時(shí)鐘周期可以執(zhí)行分配。然而,如果預(yù)定數(shù)量的周期大于I (例如4、8或16),那么僅可以周期性地進(jìn)行分配。
[0070]在一些情況中,方法400中使用的周期的預(yù)定數(shù)量與方法300中使用的周期的預(yù)定數(shù)量相同。這保證了時(shí)間和資源沒(méi)有被推測(cè)度量計(jì)算器126和/或指令調(diào)度器206浪費(fèi)。例如,如果方法300中使用的周期的預(yù)定數(shù)量少于方法400中使用的周期的預(yù)定數(shù)量,那么推測(cè)度量計(jì)算器126可能正在浪費(fèi)時(shí)間和資源來(lái)計(jì)算不會(huì)被指令調(diào)度器206使用的推測(cè)度量。相似地,如果方法300中使用的周期的預(yù)定數(shù)量大于方法400中使用的周期的預(yù)定數(shù)量,那么指令調(diào)度器206可能正在浪費(fèi)時(shí)間和資源來(lái)基于自上次分配后沒(méi)有變化的推測(cè)度量來(lái)分配功能單元資源。[0071]在方法400中使用的周期的預(yù)定數(shù)量與方法300中使用的周期的預(yù)定數(shù)量相同的情況下,可以存在單一的計(jì)數(shù)單元用來(lái)對(duì)周期數(shù)進(jìn)行計(jì)數(shù)。在一些情況下,當(dāng)已達(dá)到預(yù)定數(shù)量的周期時(shí),單一的計(jì)數(shù)單元可以將指示提供給推測(cè)度量計(jì)算器126和指令調(diào)度器206。在其他情況下,計(jì)數(shù)單元可以將指示提供給推測(cè)度量計(jì)算器126,推測(cè)度量計(jì)算器126作為響應(yīng)將推測(cè)度量提供給指令調(diào)度器206。在這些情況下,當(dāng)指令調(diào)度器206從推測(cè)度量計(jì)算器126接收到推測(cè)度量時(shí),指令調(diào)度器206可以確定已達(dá)到預(yù)定數(shù)量的周期。在另一些情況下,計(jì)數(shù)單元可以將指示提供給指令調(diào)度器206,指令調(diào)度器206作為響應(yīng)從推測(cè)度量計(jì)算器126請(qǐng)求推測(cè)度量。在這些情況下,當(dāng)推測(cè)度量計(jì)算器126接收到來(lái)自指令調(diào)度器206的請(qǐng)求時(shí),推測(cè)度量計(jì)算器126可以確定已達(dá)到預(yù)定數(shù)量的周期。
[0072]在步驟404中,指令調(diào)度器206接收和存儲(chǔ)來(lái)自推測(cè)度量計(jì)算器126的每個(gè)線程(例如線程102和104)的推測(cè)度量。如上所述,在一些情況下,一旦已達(dá)到預(yù)定數(shù)量的周期,指令調(diào)度器206就從推測(cè)度量計(jì)算器126拉取(pull)推測(cè)度量。在其他情況下,一旦已達(dá)到預(yù)定數(shù)量的周期,推測(cè)度量計(jì)算器126就將推測(cè)度量提供給指令調(diào)度器206。一旦指令調(diào)度器206已接收到推測(cè)度量,方法400進(jìn)行到步驟406。
[0073]在步驟406中,指令調(diào)度器206基于接收到的推測(cè)度量將功能單元130資源(例如管線208、210、212和214)分配給線程(例如線程102和104)。在一些情況下,將功能單元130資源(例如管線208、210、212和214)分配給線程包括比較不同線程的推測(cè)度量。例如,指令調(diào)度器206可以被配置用來(lái):將額外的資源分配給推測(cè)度量指示較少推測(cè)性的指令集的線程,并且對(duì)應(yīng)地釋放已分配給推測(cè)度量指示較多推測(cè)性的指令集的線程的資源。在較高推測(cè)度量指示較低風(fēng)險(xiǎn)或推測(cè)性的指令集而較低推測(cè)度量指示較高風(fēng)險(xiǎn)或推測(cè)性的指令集的情況下,指令調(diào)度器206可以被配置用來(lái)將額外的資源分配給與較高推測(cè)度量相關(guān)聯(lián)的線程,并且對(duì)應(yīng)地釋放已分配給具有較低推測(cè)度量的線程的資源。
[0074]例如,如圖2所示有四個(gè)管線(例如管線208、210、212和214)和兩個(gè)線程(例如線程O和線程1),每個(gè)線程初始可以被分配兩個(gè)管線。在接收到線程的推測(cè)度量之后,指令調(diào)度器可以增加分配給具有較高推測(cè)度量的線程(如線程O)的資源,這樣它分配了三個(gè)管線,并且對(duì)應(yīng)地減少分配給具有較低推測(cè)度量的線程(例如線程I)的資源,這樣它僅分配了一個(gè)管線。
[0075]在其他情況下,如果推測(cè)度量和至少一個(gè)其它推測(cè)度量之間的差超過(guò)預(yù)定閾值,則將資源僅分配給推測(cè)度量指示較少推測(cè)性的指令集的線程。
[0076]在另外的情況下,將功能單元130資源(例如管線208、210、212和214)分配給線程包括:比較線程的推測(cè)度量和程序員設(shè)置的可接受的推測(cè)度量。如上所述,程序員可能有能力為每個(gè)線程設(shè)置可接受的推測(cè)度量級(jí)別。
[0077]在這些情況下,如果特定線程的推測(cè)度量降低到為那個(gè)線程規(guī)定的可接受的推測(cè)度量以下,則資源(例如管線208、210、212和214)被從那個(gè)線程釋放,并重新分配給另一線程。例如,如圖2所示如果有兩個(gè)線程(例如線程O和線程I)和四個(gè)管線(例如管線208、210、212和214),并且每個(gè)線程初始分配了兩個(gè)管線,如果一個(gè)線程(例如線程I)的推測(cè)度量低于為那個(gè)線程規(guī)定的可接受的推測(cè)度量,那么為那個(gè)線程(例如線程I)分配的資源可以下降,這樣線程僅分配一個(gè)管線,并且對(duì)應(yīng)地分配給另一線程(例如線程O)的資源可以增力口,這樣它配置了三個(gè)管線。[0078]在一些情況下,當(dāng)每個(gè)線程的推測(cè)度量低于其相關(guān)聯(lián)的可接受的推測(cè)度量時(shí),那么可以基于默認(rèn)分配而對(duì)線程分配資源。在一些情況下,默認(rèn)分配可以指定資源將在線程之間相等地分配。
[0079]現(xiàn)參考圖5,其示出了方法500,該方法可由圖2的指令調(diào)度器206執(zhí)行,用于從多個(gè)線程102和104發(fā)出指令到功能單元130。
[0080]在步驟502中,指令調(diào)度器206基于分配給線程的資源數(shù)量,從將被發(fā)出給功能單元130的線程選擇指令。例如,可以根據(jù)方法400完成分配。在一些情況下,從每個(gè)線程選擇的指令的數(shù)量基于分配給每個(gè)線程的管線數(shù)量。例如,如果一個(gè)線程分配了三個(gè)管線,而另一線程分配了一個(gè)管線,那么指令調(diào)度器206可以嘗試從分配了三個(gè)管線的線程選擇三條指令,且從分配了一個(gè)管線的線程選擇一條指令。正如上面提到的,僅當(dāng)指令準(zhǔn)備好執(zhí)行時(shí),它才可以被選擇用于執(zhí)行(即,它的操作數(shù)的值是可用的)。因此,有可能指令調(diào)度器206無(wú)法按照分配給線程的資源來(lái)選擇足夠的就緒指令以填充管線。因此,在指令調(diào)度器206基于資源分配已經(jīng)選擇了將發(fā)出到功能單元的指令之后,方法500進(jìn)行到步驟504。
[0081]在步驟504中,指令調(diào)度器206確定指令調(diào)度器206是否能夠在步驟502中選擇足夠的就緒指令來(lái)填充對(duì)應(yīng)的功能單元130中的管線。如果確定在步驟502中選擇了足夠的就緒指令來(lái)填充對(duì)應(yīng)的功能單元130中的管線(例如每個(gè)管線一條指令),那么方法500直接進(jìn)行到步驟508。然而,如果確定在步驟502中沒(méi)有選擇足夠的就緒指令來(lái)填充對(duì)應(yīng)的功能單元130中的管線(例如每個(gè)管線小于一條指令),那么方法進(jìn)行到步驟506。
[0082]在步驟506中,指令調(diào)度器206嘗試從任何線程選擇額外的就緒指令來(lái)填充管線。例如,如果有四個(gè)管線,且指令調(diào)度器206僅能夠根據(jù)分配在步驟502中選擇三條就緒指令,那么指令調(diào)度器206可以嘗試從任何線程選擇一條額外的就緒指令來(lái)填充管線。然而,有可能從任何線程都沒(méi)有更多的就緒指令。因此,一旦選擇完成或者確定沒(méi)有額外的就緒指令,方法500進(jìn)行到步驟508。
[0083]在步驟508中,通過(guò)在管線的開始寫入指令代碼和操作數(shù)的值,指令調(diào)度器206嘗試發(fā)出一條選擇的指令到每個(gè)管線208、210、212和214。例如,如果有四個(gè)管線并且從步驟502和步驟506選擇了四條指令,那么一條選擇的指令發(fā)出到每個(gè)管線。然而,如果有四個(gè)管線并且從步驟502和步驟506僅選擇了三條指令,那么一條選擇的指令發(fā)出到三個(gè)管線中的每個(gè)。
[0084]哪條指令被發(fā)出到哪個(gè)管線一般不重要。然而,在一些情況下,來(lái)自特定線程的指令可能會(huì)以預(yù)定的順序發(fā)出到管線。例如,如圖2所示,如果有四個(gè)管線編號(hào)O至3,從第一線程(例如線程O)選擇的任何指令可以以升序首先發(fā)出到第一管線(例如管線O)然后到后續(xù)管線(例如管線I);從第二線程(例如線程I)選擇的任何指令可以以降序首先發(fā)出到最后的管線(例如管線3)然后到后續(xù)管線(例如管線2)。一旦選擇的指令被發(fā)出到管線以供執(zhí)行,方法500結(jié)束。
[0085]在一些情況下,方法500在每個(gè)時(shí)鐘周期執(zhí)行一次。
[0086]這里給出的任何范圍或設(shè)備值均可以被擴(kuò)展或改變而不喪失所追求的效果,這對(duì)于技術(shù)人員來(lái)說(shuō)是明顯的。
[0087]應(yīng)當(dāng)理解,上述好處和優(yōu)點(diǎn)可以與一個(gè)實(shí)施例有關(guān),或者與幾個(gè)實(shí)施例有關(guān)。實(shí)施例不限于那些解決任何或所有所述問(wèn)題的實(shí)施例,或者那些有任何或所有所述好處和優(yōu)點(diǎn)的實(shí)施例。
[0088]任何關(guān)于“一”項(xiàng)目的引用是指一個(gè)或多個(gè)那些項(xiàng)目。本文所使用的術(shù)語(yǔ)“包括”意思是包括識(shí)別出的那些方法塊或元件,但那樣的塊或元件不包括排他性的列表,并且方法或裝置可以包含額外的塊或元件。
[0089]這里所描述的方法的步驟可以以任何合適的順序進(jìn)行,或者在適當(dāng)?shù)牡胤酵瑫r(shí)進(jìn)行。此外,個(gè)別的塊可以從任何的方法刪除而不偏離這里描述的主題的精神和范圍。任何上述示例的方面可以結(jié)合描述的任何其他示例的方面來(lái)形成進(jìn)一步的示例,而不喪失所追求的效果。附圖的元件顯示為通過(guò)箭頭連接,應(yīng)當(dāng)領(lǐng)會(huì),這些箭頭僅僅顯示了元件之間的一個(gè)示例通信流(包括數(shù)據(jù)和控制消息)。元件之間的流可以是任何方向或雙方向的。
[0090]應(yīng)當(dāng)理解,以上對(duì)優(yōu)選實(shí)施例的描述僅是通過(guò)示例的方式給出的,并可以由本領(lǐng)域的技術(shù)人員做出各種修改。盡管上面描述的各種實(shí)施例具有一定程度的特定性,或參考了一個(gè)或多個(gè)個(gè)別實(shí)施例,但本領(lǐng)域技術(shù)人員可以對(duì)公開的實(shí)施例做出許多修改而不脫離本發(fā)明的精神或范圍。
【權(quán)利要求】
1.一種在處理器的多個(gè)線程之間分配資源的方法,每個(gè)線程與多條指令相關(guān)聯(lián),所述方法包括: 在保留站接收多個(gè)線程中每個(gè)線程的推測(cè)度量,每個(gè)推測(cè)度量代表與所述線程相關(guān)聯(lián)的指令的推測(cè)程度; 基于所述推測(cè)度量,在所述保留站將功能單元資源分配給所述多個(gè)線程,包括: 比較所述推測(cè)度量以識(shí)別具有較少推測(cè)性指令的線程; 確定具有較少推測(cè)性指令的線程的推測(cè)度量和另一線程的推測(cè)度量之間的差;以及響應(yīng)于確定所述差超過(guò)閾值,將額外的功能單元資源分配給具有較少推測(cè)性指令的線程(406);基于功能單元資源的分配,在所述保留站選擇與多個(gè)線程相關(guān)聯(lián)的指令(502);以及 在所述保留站將所選擇的指令發(fā)出到所述功能單元資源(508)。
2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 在推測(cè)度量計(jì)算器處接收所述多條指令的信任值(302),每個(gè)信任值代表特定指令已被正確預(yù)測(cè)的可能性; 基于所述信任值,在所述推測(cè)度量計(jì)算器處生成所述推測(cè)度量(304、306、310);以及 從所述推測(cè)度量計(jì)算器將所述推測(cè)度量提供給所述保留站(308 )。
3.根據(jù)權(quán)利要求2所述的方法,其中生成特定線程的推測(cè)度量包括:對(duì)在預(yù)定數(shù)量的周期上與所述線程相關(guān)聯(lián)的指令的信任值求和(304、306、308、310 )。
4.根據(jù)權(quán)利要求2所述的方法,其中生成特定線程的推測(cè)度量包括:將與關(guān)聯(lián)所述特定線程的特定指令相關(guān)聯(lián)的生成的信任值加到所述線程的推測(cè)度量,并且一旦相關(guān)聯(lián)的指令已被執(zhí)行,就從所述線程的所述推測(cè)度量減去所述信任值。
5.根據(jù)前述任一權(quán)利要求所述的方法,其中功能單元資源的分配是在每時(shí)鐘周期執(zhí)行一次。
6.根據(jù)權(quán)利要求1至4中任何一項(xiàng)所述的方法,其中功能單元資源的分配是周期性地執(zhí)行的。
7.根據(jù)權(quán)利要求1至4中任何一項(xiàng)所述的方法,其中所述功能單元資源包括多個(gè)管線,并且將功能單元資源分配給線程包括:不分配、分配一個(gè)或者多個(gè)管線給每個(gè)線程。
8.根據(jù)權(quán)利要求7所述的方法,其中基于分配選擇與多個(gè)線程相關(guān)聯(lián)的指令包括:從特定線程選擇若干就緒指令,其中就緒指令的數(shù)量等于分配給所述特定線程的管線的數(shù)量。
9.根據(jù)權(quán)利要求8所述的方法,其中如果基于分配選擇的指令的數(shù)量少于管線的數(shù)量(504),則從任何線程選擇就緒指令以使得選擇的指令的數(shù)量等于管線的數(shù)量(506)。
10.一種包括被安排用來(lái)在多個(gè)線程(102、104)之間分配資源的保留站(128)的處理器(100),所述保留站(128)包括: 多個(gè)指令隊(duì)列(202、204),每個(gè)指令隊(duì)列被配置用來(lái)存儲(chǔ)多個(gè)線程中的一個(gè)的指令;以及 與所述多個(gè)指令隊(duì)列通信的指令調(diào)度器(206),所述指令調(diào)度器被配置用來(lái): 接收每個(gè)線程的推測(cè)度量,每個(gè)推測(cè)度量代表與所述線程(102、104)相關(guān)聯(lián)的指令的推測(cè)程度;基于所述推測(cè)度量,將功能單元(130)資源(208、210、212、214)分配給所述多個(gè)線程(102、104),包括: 比較所述推測(cè)度量以識(shí)別具有較少推測(cè)性指令的線程(102、104); 確定具有較少推測(cè)性指令的線程(102、104)的推測(cè)度量和另一線程(102、104)的推測(cè)度量之間的差;以及 響應(yīng)于確定所述差超過(guò)預(yù)定閾值,將額外的功能單元(130)資源(208、210、212、214)分配給具有較少推測(cè)性指令的線程(102、104); 基于功能單元(130)資源(208、210、212、214)的分配,從所述多個(gè)指令隊(duì)列(202、204)選擇指令;以及 將所選擇的指令發(fā)出 到所述功能單元(130)資源(208、210、212、214)以供執(zhí)行。
【文檔編號(hào)】G06F9/50GK103942033SQ201410028442
【公開日】2014年7月23日 申請(qǐng)日期:2014年1月21日 優(yōu)先權(quán)日:2013年1月21日
【發(fā)明者】H·杰克遜, P·羅蘭 申請(qǐng)人:想象力科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
新龙县| 大埔区| 谷城县| 龙岩市| 遵义县| 伊春市| 大化| 桐乡市| 南溪县| 桦甸市| 万年县| 旬邑县| 改则县| 渝中区| 黔西县| 北海市| 宝丰县| 中阳县| 兴义市| 襄垣县| 通海县| 淮安市| 安平县| 彭泽县| 罗定市| 襄垣县| 淅川县| 彭山县| 澄城县| 桂平市| 荆州市| 舞钢市| 游戏| 岚皋县| 蓬莱市| 鄂托克旗| 西藏| 泰安市| 扶绥县| 镇平县| 于都县|