两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

多線程處理的線程選擇的制作方法

文檔序號:6367619閱讀:123來源:國知局
專利名稱:多線程處理的線程選擇的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)領(lǐng)域。更具體地,本發(fā)明涉及對在多線程處理系統(tǒng)中執(zhí)行的程序線程的選擇。
背景技術(shù)
提供利用粗粒度多線程和/或細(xì)粒度多線程的處理系統(tǒng)是已知的。在粗粒度多線程中,在不同的時間不同的程序線程可被選擇為活動的。在細(xì)粒度多線程中,來自不同程序線程的程序指令被相互交錯并且作為將要執(zhí)行的程序指令的流被饋送給執(zhí)行機(jī)構(gòu)。在細(xì)粒度多線程的情況下,供執(zhí)行的程序線程將比可被同時交錯的程序線程更多是常見情況。因此,就哪些程序線程在給定時間是活動的做出選擇。簡單的選擇機(jī)構(gòu)可以以粗粒度水平依次選擇不同的程序線程用于執(zhí)行。該方法的 問題在干,當(dāng)來自當(dāng)前活動程序線程的程序指令被交錯時,每個程序線程可能無法在每個周期發(fā)射程序指令以供執(zhí)行。例如,程序線程內(nèi)的程序指令之間的數(shù)據(jù)依賴性可能需要程序指令在可被發(fā)射之前停止以等待更早程序指令的完成。當(dāng)前活動的不同程序線程有可能能夠使用在其期間另ー程序線程被停止的周期。然而,還有可能的是,同時活動的若干程序線程可能這樣它們都經(jīng)受大量停止,數(shù)據(jù)處理系統(tǒng)的資源因而被低效使用,這是因為活動線程無法在每個周期發(fā)射程序指令。

發(fā)明內(nèi)容
從ー個方面看,本發(fā)明提供了ー種用于處理數(shù)據(jù)的裝置,包括執(zhí)行電路,該執(zhí)行電路被配置為執(zhí)行程序指令;發(fā)射控制電路,該發(fā)射控制電路被耦合到所述執(zhí)行電路并且被配置為從多個程序線程中選擇程序指令以組成要發(fā)射到所述執(zhí)行電路的程序指令的序列,所述發(fā)射控制電路被配置為選擇所述程序指令以使得來自所述多個程序線程中的不同程序線程的程序指令被交錯在所述序列內(nèi);以及線程性能監(jiān)視電路,該線程性能監(jiān)視電路被耦合到發(fā)射控制電路并且被配置為測量多個性能值,所述多個性能值中的每ー個性能值指示所述多個程序線程中的ー個程序線程的性能參數(shù);其中所述發(fā)射控制電路被配置為根據(jù)所述多個性能值來選擇程序指令將被從所述多個程序線程中的哪些程序線程發(fā)射到所述執(zhí)行電路。本技術(shù)認(rèn)識到以上問題并且提供了用于測量多個性能值的線程性能監(jiān)視電路,這些性能值中的每ー個性能值指示所述多個程序線程中的一個程序線程的性能參數(shù)。用于選擇哪些程序線程活動的發(fā)射控制電路然后可以使用這些性能值來以可以提高執(zhí)行電路利用效率的方式選擇哪些程序線程將會活動。將會認(rèn)識到,性能監(jiān)視電路值可以監(jiān)視各種性能參數(shù)。然而,在一些實施例中,性能值為程序線程中的每ー個指示該線程的程序指令已經(jīng)可用于發(fā)射的周期的比例。很少遭受停止的程序線程將具有指示如下周期的高比例的性能值,這些周期是在其中來自該程序線程的程序指令曾可用于發(fā)射的周期。相反地,遭受大量數(shù)據(jù)依賴冒險和/或分支未命中預(yù)測的程序線程將具有指示該程序線程能夠發(fā)射程序指令的周期的比例相對低的性能值。在這種性能值的上下文中,發(fā)射控制電路可以選擇將從中發(fā)射程序指令的下一程序線程以使得該程序線程將補充將與之同時活動的ー個或多個程序線程。具體而言,如果活動程序線程一起組合使得其性能值指示在它們當(dāng)中它們將能夠在其中發(fā)射程序指令的周期的比例接近一,則是高效的。因此,具有指示高比例周期上的程序指令可用性的性能值的程序線程可被與具有指示程序指令在低比例周期上可用的性能值的程序線程相匹配,使得程序指令可用于發(fā)射的周期的比例總共大體是ー(即,它們一起能夠大體在每個周期發(fā)射程序指令)。使程序線程的測量性能特性相匹配使得可以避免其中程序線程被組合因而低效利用執(zhí)行資源的情形以及其中程序線程被組合因而相互低效競爭執(zhí)行資源的情形??杀粦?yīng)用的另ー選擇標(biāo)準(zhǔn)是預(yù)計得到使用的發(fā)射周期的組合比例將不小于一。
程序線程之所以無法在任何給定周期發(fā)射程序指令可能有各種原因。具體的這種情形包括指令之間的操作數(shù)依賴以及例如由于分支未命中預(yù)測而尚未從存儲器中提取將在線程中發(fā)射的下一指令。特定程序線程之所以無法在給定周期發(fā)射其下一指令可能有其他原因。線程性能監(jiān)視電路可包括與每個活動程序線程相關(guān)聯(lián)的計數(shù)器,其中該計數(shù)器被配置為根據(jù)相應(yīng)線程在每個周期是否具有可用于發(fā)射的程序指令來累積計數(shù)值。所累積的計數(shù)值可以對指令可在其中用于發(fā)射的周期進(jìn)行計數(shù),或者相反地對指令在其中不可用于發(fā)射的周期進(jìn)行計數(shù)。這兩種計數(shù)都可被用于指示該程序線程曾能夠利用的可用周期的比例。該所測得性能被用于預(yù)測該程序線程當(dāng)接下來被選擇時的行為,并且因此可被發(fā)射控制電路用于選擇與具有互補處理要求的程序線程組合執(zhí)行的程序線程。計數(shù)器可被配置為在預(yù)定累積時段內(nèi)累積計數(shù)值,此后計數(shù)值被重置并且累積被重新啟動。這有效地形成了活動程序線程的性能值被確定的測量時段。該預(yù)定累積時段可被制成用戶可配置參數(shù),使得性能監(jiān)視電路可被針對正被執(zhí)行的程序線程的類型來調(diào)諧。為了避免其中特定程序線程由于其性能特性與其他程序線程不兼容而從未被選擇用于執(zhí)行的情形,在一些實施例中,發(fā)射控制電路可被配置為獨立于性能值來選擇來自如下程序線程的程序指令用于發(fā)射在長于由發(fā)射控制電路做出的預(yù)定次數(shù)的線程選擇的時間內(nèi)尚未選擇來自該程序線程的程序指令。因此,在已經(jīng)不活動太久的程序線程的情況下可以不考慮(override)對性能值的使用。本技術(shù)對按次序執(zhí)行環(huán)境特別有用,因為這些環(huán)境通常更有程序線程停止傾向,這是因為它們?nèi)狈δ軌騺y序選擇程序指令以供執(zhí)行的靈活性?;顒映绦蚓€程的程序指令可被方便地保存在指令隊列中以形成準(zhǔn)備好運行的指令的池。發(fā)射控制電路可以在線程切換事件發(fā)生時執(zhí)行其對將會活動的下一程序線程的選擇(以及從執(zhí)行中沖掉當(dāng)前活動線程)。線程切換事件可包括如下中的ー種或多種高速緩存存儲器內(nèi)的未命中、定時器觸發(fā)的事件、轉(zhuǎn)換后備緩沖器內(nèi)的未命中、ー個或多個外部中斷或者執(zhí)行指示其應(yīng)當(dāng)將執(zhí)行交給另ー線程的指令的線程本身。
發(fā)射控制電路可被用在支持單發(fā)射或多發(fā)射操作的執(zhí)行環(huán)境中。發(fā)射控制電路可以使大量程序線程交錯,但是當(dāng)發(fā)射控制電路使兩個程序線程交錯時可以實現(xiàn)具有較小額外開銷并且仍具有顯著提高執(zhí)行資源利用的能力的細(xì)粒度交錯。將會認(rèn)識到上面已經(jīng)描述了優(yōu)選實施例,其中性能值指示程序線程能夠在其中提供供發(fā)射的程序指令的周期的比例。性能監(jiān)視電路所測量的性能值可以采用不同形式。在支持不同類型的多個執(zhí)行流水線(例如算木流水線、向量處理流水線、加載/存儲流水線等)的處理環(huán)境中,那么所測量的性能值可以指示給定程序線程內(nèi)利用這些不同流水線的程序指令的比例。這樣,當(dāng)程序線程具有互補的流水線使用模式時,它們可被選擇為一起使用,例如大量使用算木流水線的程序線程被選擇為與大量使用加載/存儲流水線的程序線程同時活動以使得這兩個線程將不會競爭使用執(zhí)行機(jī)構(gòu)內(nèi)的相同流水線。性能值的另外示例也是可能的。從另一方面看,本發(fā)明提供了ー種用于處理數(shù)據(jù)的裝置,包括
執(zhí)行裝置,用于執(zhí)行程序指令;發(fā)射控制裝置,該發(fā)射控制裝置被耦合到所述執(zhí)行裝置并且用于從多個程序線程中選擇程序指令以組成要發(fā)射到所述執(zhí)行裝置的程序指令的序列,所述發(fā)射控制裝置選擇所述程序指令以使得來自所述多個程序線程中的不同程序線程的程序指令被交錯在所述序列內(nèi);以及線程性能監(jiān)視裝置,該線程性能監(jiān)視裝置被耦合到發(fā)射控制裝置并且用于測量多個性能值,所述多個性能值中的每ー個性能值指示所述多個程序線程中的一個程序線程的性能參數(shù);其中所述發(fā)射控制裝置根據(jù)所述多個性能值來選擇程序指令將被從所述多個程序線程中的哪些程序線程發(fā)射到所述執(zhí)行裝置。從另一方面看,本發(fā)明提供了ー種處理數(shù)據(jù)的方法,包括以下步驟從多個程序線程中選擇程序指令以組成要發(fā)射的程序指令的序列,所述選擇步驟操作來選擇所述程序指令以使得來自所述多個程序線程中的不同程序線程的程序指令被交錯在所述序列內(nèi);執(zhí)行被發(fā)射的所述程序指令;以及測量多個性能值,所述多個性能值中的每ー個性能值指示所述多個程序線程中的一個程序線程的性能參數(shù);其中所述選擇步驟根據(jù)所述多個性能值來選擇程序指令將被從所述多個程序線程中的哪些程序線程發(fā)射到所述執(zhí)行裝置。根據(jù)將結(jié)合附圖閱讀的以下對示例性實施例的詳細(xì)描述,本發(fā)明的以上和其他目的、特征和優(yōu)點將會顯而易見。


圖I示意性地圖示出利用粗粒度和細(xì)粒度多線程來處理數(shù)據(jù)的裝置;圖2示意性地圖示出發(fā)射控制電路、性能監(jiān)視電路以及用于控制線程選擇的發(fā)射隊列;圖3是示意性地圖示出性能值收集的流程圖;并且
圖4是示意性地圖示出線程選擇的流程圖。
具體實施例方式圖I示意性地圖示出用于處理數(shù)據(jù)的裝置,包括與存儲器6相耦合的處理器核心4。存儲器6存儲將要操縱的操作數(shù)數(shù)據(jù)8以及組成多個程序線程的程序指令10。這些程序線程中的每ー個包含程序指令的序列。其中將要執(zhí)行的程序指令10可被劃分為多個程序線程的這類布置對本領(lǐng)域技術(shù)人員而言將是熟悉的。本技術(shù)的多線程可被用于使得處理器4能夠從編程者視角看起來是各自單獨執(zhí)行相應(yīng)程序線程的多個處理器。當(dāng)程序線程不再活動時,其數(shù)據(jù)(例如,寄存器內(nèi)容、程序計數(shù)器值、指針以及其他狀態(tài)數(shù)據(jù))可被從處理器4沖掉(flush),并且當(dāng)有關(guān)程序線程將被重新啟動時,該狀態(tài)數(shù)據(jù)被恢復(fù)到處理器4,并且以從編程者視角看好像執(zhí)行是連續(xù)的并且程序線程具有對處理器4的獨占使用的方式來繼續(xù)執(zhí)行。處理器4包括執(zhí)行電路12,執(zhí)行電路12在該示例中包括諸如算木數(shù)據(jù)路徑14、流水線電路16和指令譯碼器18之類的元件。將會明白,電路12的該表示是程式化的,并且在實踐中執(zhí)行電路12可以采用各種不同形式,例如包括各自被調(diào)整為適應(yīng)特定形式程序指令的多個執(zhí)行流水線,例如算木流水線、加載/存儲流水線、單指令多數(shù)據(jù)流水線等。處理器核心4包括其中可存儲有來自存儲器6的數(shù)據(jù)值的高速緩存存儲器20。程序線程切換事件可能出現(xiàn)的ー個原因是由于該高速緩存存儲器20內(nèi)的高速緩存未命中。這種高速緩存未命中將通常需要對于存儲器的高等待時間存儲器提取,因而當(dāng)該高速緩存未命中被解決并且所需要的數(shù)據(jù)被提取到高速緩存20中時切換到不同程序線程的執(zhí)行將會更高效。處理器4包括用于從存儲器6預(yù)取程序指令并將這些程序指令提供給發(fā)射隊列(IQ) 24的預(yù)取電路22,這些程序指令在發(fā)射隊列24處組成準(zhǔn)備好發(fā)射的程序指令的池。預(yù)取電路22可以利用2個分別指向兩個不同程序線程的程序指令的程序計數(shù)器值,所述兩個不同程序線程是活動的并且應(yīng)當(dāng)為這兩個不同程序線程提取程序指令。分支預(yù)測電路26可被用于根據(jù)已知技術(shù)預(yù)測所提取指令內(nèi)的條件分支。不保證這種分支預(yù)測是正確的,分支未命中預(yù)測因而是當(dāng)執(zhí)行電路12能夠接受程序指令以供執(zhí)行時來自當(dāng)前活動程序線程的程序指令之所以可能無法在每個處理周期可用于從發(fā)射隊列24發(fā)射的ー個原因。圖I中還圖示出發(fā)射控制電路28和線程性能監(jiān)視電路30。發(fā)射控制電路28控制來自發(fā)射隊列24的哪些程序指令在每個程序周期被發(fā)射到執(zhí)行電路12。發(fā)射控制電路28因而可以通過在當(dāng)前活動的程序線程之間交錯被發(fā)射到執(zhí)行電路的程序指令來執(zhí)行細(xì)粒度多線程。在任何時間有多個程序線程(通常是兩個程序線程)活動。發(fā)射控制電路28還負(fù)責(zé)選擇哪些程序線程將在給定時間活動。不活動的程序線程當(dāng)不在使用中時使其上下文數(shù)據(jù)(例如,寄存器內(nèi)容、指針等)被保存到處理器4內(nèi)的專用存儲器。當(dāng)程序線程被發(fā)射控制電路28選擇以變?yōu)榛顒訒r,該狀態(tài)數(shù)據(jù)可被迅速恢復(fù)。發(fā)射控制電路28在確定哪些程序線程應(yīng)當(dāng)被選擇為在任何給定時間活動時響應(yīng)于由線程性能監(jiān)視電路30測量到的性能值。觸發(fā)發(fā)射控制電路28沖掉當(dāng)前活動線程(使之退休)并選擇將會活動的新程序線程的線程切換事件可以采取各種形式。如先前討論的,這些形式之一可以是高速緩存20內(nèi)的高速緩存未命中。線程切換事件的另一形式可以是定時器觸發(fā)的事件,例如從看門狗定時器得到的觸發(fā)器。線程切換事件的另一形式可以、是程序指令在程序線程內(nèi)的執(zhí)行,該程序指令規(guī)定程序線程本身應(yīng)當(dāng)被退休,即由另ー線程事件接替。另外的線程切換事件包括轉(zhuǎn)換后備緩沖器(translation lookaside buffer)內(nèi)的未命中以及ー個或多個外部中斷。線程性能監(jiān)視電路30監(jiān)視當(dāng)前活動程序線程的ー個或多個性能參數(shù)。所測量的這些性能參數(shù)可被用來預(yù)測哪些程序線程在被選擇為一起活動的情況下將相互補充。發(fā)射控制電路28因而被配置為根據(jù)指示有關(guān)程序線程上次被執(zhí)行時的性能參數(shù)的這些所測量性能值來選擇將活動的下一程序線程??杀粶y量的性能參數(shù)的ー種形式是指示在其中給定程序線程能夠提供可用來發(fā)射的程序指令的周期的比例的性能參數(shù),例如,程序線程遭受防止程序指令在每個周期可用于發(fā)射的數(shù)據(jù)互鎖、分支誤預(yù)測的可能性。性能值和性能參數(shù)的其他形式也是可能的。這些性能值和性能參數(shù)與単獨程序線程和該程序線程的特性有夫。發(fā)射控制電路28利用這些已經(jīng)在程序線程的實際執(zhí)行期間實時測量到的特性來確定被選擇為活動的下一程序線程,以更高效地利用執(zhí)行電路12。圖2示意性地圖示出發(fā)射隊列24、發(fā)射控制電路28以及線程性能監(jiān)視電路30。發(fā) 射隊列24從預(yù)取単元22接收程序指令并且將程序指令提供給執(zhí)行電路12。將指令提供給執(zhí)行電路12是程序指令的發(fā)射。在該示例中,發(fā)射隊列24可以使來自兩個當(dāng)前活動線程TA、TB的程序指令的發(fā)射交錯,以實現(xiàn)細(xì)粒度多線程(FGMT)。指示在當(dāng)前活動線程TA、TB中的任一個中出現(xiàn)的數(shù)據(jù)互鎖的信號被提供給發(fā)射隊列24,使得個體程序線程在該程序線程中出現(xiàn)數(shù)據(jù)冒險時可被停止。未停止的程序線程優(yōu)選應(yīng)當(dāng)能夠利用其他程序線程被停止的周期來繼續(xù)發(fā)射程序指令并因而高效利用執(zhí)行電路12。在發(fā)射隊列24可向執(zhí)行電路12發(fā)射程序指令的每個周期,信號TAAV和TB AV被生成并被提供給性能監(jiān)視電路30內(nèi)的相應(yīng)計數(shù)器32、34,以分別指示線程A在該周期內(nèi)是否有指令可用于發(fā)射以及線程B在該處理周期內(nèi)是否有指令可用于發(fā)射。這些計數(shù)器32、34內(nèi)在預(yù)定累積時段內(nèi)的累積值因而將提供指示在其中有關(guān)程序線程能夠提供可用于發(fā)射的程序指令的周期的比例的性能參數(shù)。性能監(jiān)視電路中還存在周期計數(shù)器36和累積(Acc)時段寄存器38。累積時段寄存器38存儲用于定義計數(shù)器32、34累積其值的時間窗ロ并相應(yīng)定義性能參數(shù)被測量的時間窗ロ的用戶可編程累積時段值。比較器40將累積時段寄存器38的內(nèi)容與周期計數(shù)器36相比較,并且當(dāng)這些相等時,發(fā)射用于重置計數(shù)器32、34以使這些歸零的重置信號以及用于將所累積計數(shù)值的一部分從計數(shù)器32、34復(fù)制到相應(yīng)部件或者性能值(PV)寄存器42的復(fù)制信號。雖然充分累積的計數(shù)可能可被存儲為性能值,但是在實踐中這提供了過高的分辨率水平并且存儲該數(shù)據(jù)的開銷不合理。因此,通過將累積值的最高有效位部分存儲為性能值,可以獲得關(guān)于有關(guān)線程的性能參數(shù)的足夠信息。最高有效位部分可以具有根據(jù)累積時段寄存器38內(nèi)存儲的當(dāng)前編程的累積時段值而選擇的寬度。如果累積時段較短,那么為了保證關(guān)于不同程序線程的性能的可區(qū)分性能參數(shù)信息被捕捉到,更大的最高有效位部分需要被采樣。復(fù)用器44用于將來自計數(shù)器32、34的值引導(dǎo)到適當(dāng)?shù)男阅苤导拇嫫?2。在該示例中,八個程序線程被支持。在任何給定時間點TA、TB處活動的程序線程可以是這八個程序線程中的任何程序線程。因此,當(dāng)復(fù)制信號被比較器40生成時,性能值被復(fù)用器44引導(dǎo)以被存儲在性能值寄存器42中的適當(dāng)性能值寄存器中。性能值寄存器42中存儲的性能值因而表示由性能監(jiān)視電路30在有關(guān)程序線程上次活動時所測得的性能值。發(fā)射控制電路28包括下ー線程選擇電路46,下ー線程選擇電路46接收來自性能值寄存器42的性能值以及指示如先前討論的線程切換事件的信號。不活動線程寄存器48按照當(dāng)前不活動線程的最近活動時間的順序來存儲它們的線程標(biāo)識符(ID)。當(dāng)前活動線程使其線程標(biāo)識符被存儲在活動線程寄存器50、52中。不活動線程寄存器48還可以存儲指示相關(guān)不活動線程的狀態(tài)數(shù)據(jù)位于處理器4的專用片上存儲器內(nèi)何處的指針值。當(dāng)當(dāng)前活動線程被沖掉并被致使不活動時,其被添加到不活動線程寄存器48內(nèi)的不活動線程列表的末尾。下一線程選擇電路46此時檢查保持活動的程序線程的性能值并且確定如其性能值所指示的、未被該活動程序線程使用的程序發(fā)射周期的可用比例。因此,如果保持活動的程序線程具有指示0. 75的比例的性能值,那么該活動程序線程將與具有指示0. 25的比例的性能值的程序線程同時被良好匹配為活動者,這是因為這些在一起將組合指示一的使用比例。下一線程選擇電路46被配置為依次捜索與在不活動線程寄存 器48中標(biāo)識出的線程相關(guān)聯(lián)的性能值,以確定這些中的哪ー個具有指示其與保持活動的程序線程同時適合于活動者的性能值。該適合性可被判斷為指示所使用的發(fā)射周期的比例的性能值的組合是超過一的最小值(或者替代地不少于ー的值)。如果兩個當(dāng)前不活動程序線程的性能值與保持活動的程序線程的性能值同等良好匹配,那么已經(jīng)不活動最久的不活動程序線程可被選擇為下一程序線程。發(fā)射控制電路28在選擇哪些程序線程將在任何給定時間時活動的動作將執(zhí)行粗粒度多線程(CGMT)。下一線程選擇電路46另外包括保證給定程序線程不永久保持不活動的機(jī)構(gòu)。因此,如果程序線程在大于發(fā)射控制電路28做出預(yù)定次數(shù)線程選擇的時間內(nèi)尚未被選擇,那么發(fā)射控制電路28獨立于性能值寄存器42內(nèi)的性能值將該程序線程選擇為將會活動的下ー線程。這有效地保證了程序線程無論與其他程序線程多不兼容都將至少獲得ー些執(zhí)行時間。指令隊列24在該示例實施例中從每個程序線程中執(zhí)行按次序的指令發(fā)射。如果適當(dāng)支持額外的復(fù)雜度,那么執(zhí)行亂序指令發(fā)射的其他實施例也是可能的。發(fā)射隊列24可以每個周期發(fā)射單個程序指令,或者在其他實施例中在每個周期發(fā)射多個指令。圖3是示意性地圖示出性能監(jiān)視電路30在收集性能值時的操作的流程圖。在步驟54處,處理在每個處理周期開始之前等待。步驟56然后確定當(dāng)前累積時段是否已經(jīng)結(jié)束。如果當(dāng)前累積時段已經(jīng)結(jié)束,那么步驟58將累積值的最高有效位(MSB)部分從計數(shù)器32,34復(fù)制到性能值寄存器42中的適當(dāng)性能值寄存器。步驟60然后重置計數(shù)器32、34并且處理返回到步驟54。如果步驟56處的判定是累積時段尚未結(jié)束,那么處理繼續(xù)進(jìn)行到步驟62,在步驟62處當(dāng)前活動線程TA、TB中的每ー個線程的累積值被増加,如果該程序線程在該周期期間有可用于發(fā)射的指令的話。由于例如數(shù)據(jù)冒險或者分支誤預(yù)測已經(jīng)發(fā)生使得程序線程的程序指令仍然正被從存儲器6中提取并且仍未到達(dá)指令隊列24之類的原因,該程序線程可能沒有可用于發(fā)射的程序指令。圖4是示意性地圖示出發(fā)射控制電路28響應(yīng)于線程切換事件而執(zhí)行的線程選擇的流程圖。在步驟64處,處理在線程切換事件發(fā)生之前等待。步驟66然后沖掉退休線程和其相關(guān)狀態(tài)數(shù)據(jù)。步驟68確定任何當(dāng)前不活動線程是否在多于最大允許數(shù)目的線程選擇指令的時間內(nèi)尚未被選擇。如果識別到這種線程,那么步驟70強迫將該線程選擇為將被執(zhí)行的下一線程并且處理返回到步驟64。如果步驟68處的判定是不存在在多于最大允許數(shù)目的線程選擇的時間內(nèi)尚未被選擇的當(dāng)前不活動程序線程,那么處理繼續(xù)進(jìn)行到步驟72,在步驟72處將保持不活動的一個或多個線程的性能值之和被讀取。當(dāng)只有ー個將保持活動的線程時(即,使兩個程序線程交錯的系統(tǒng)),那么該步驟72可以只是對將保持活動的程序線程的性能值的讀取。然而,如果多于兩個程序線程被支持為在任何給定時間活動,并且多個程序線程因而將保持活動,那么步驟72然后可以對其性能值求和。鑒于將保持活動的程序線程的要求,步驟74然后計算將可用于下ー個被選擇線程的發(fā)射槽的可用部分。步驟76然后識別出新線程,該新線程根據(jù)其性能值而具有估計出的所需發(fā)射槽比例,其產(chǎn)生超過ー的所需最小發(fā)射槽總比例。這兩個線程如果按預(yù)測執(zhí)行 則將大體充分利用執(zhí)行電路12,但是將不會為了執(zhí)行資源而過度彼此競爭。步驟78然后選擇識別出的線程并且處理返回到步驟64。
權(quán)利要求
1.一種用于處理數(shù)據(jù)的裝置,包括 執(zhí)行電路,該執(zhí)行電路被配置為執(zhí)行程序指令; 發(fā)射控制電路,該發(fā)射控制電路被耦合到所述執(zhí)行電路并且被配置為從多個程序線程中選擇程序指令以組成要發(fā)射到所述執(zhí)行電路的程序指令的序列,所述發(fā)射控制電路被配置為選擇所述程序指令以使得來自所述多個程序線程中的不同程序線程的程序指令被交錯在所述序列內(nèi);以及 線程性能監(jiān)視電路,該線程性能監(jiān)視電路被耦合到發(fā)射控制電路并且被配置為測量多個性能值,所述多個性能值中的每一個性能值指示所述多個程序線程中的一個程序線程的性能參數(shù);其中 所述發(fā)射控制電路被配置為根據(jù)所述多個性能值來選擇程序指令將被從所述多個程序線程中的哪些程序線程發(fā)射到所述執(zhí)行電路。
2.如權(quán)利要求I所述的裝置,其中,所述發(fā)射控制電路選擇供在發(fā)射周期序列中的每個發(fā)射周期處發(fā)射的程序指令,并且所述多個性能值為所述多個程序線程中的每一個程序線程指示在所述發(fā)射周期序列內(nèi)所述多個程序線程中的所述一個程序線程的程序指令可用于發(fā)射的發(fā)射周期的比例。
3.如權(quán)利要求2所述的裝置,其中,所述發(fā)射控制電路選擇從中發(fā)射程序指令的下一程序線程,使得在與當(dāng)前被選擇的那些程序線程相結(jié)合的情況下,被所述性能值預(yù)測為將在其中發(fā)射程序指令的發(fā)射周期的比例是超過一的最小值。
4.如權(quán)利要求2所述的裝置,其中,所述發(fā)射控制電路選擇從中發(fā)射程序指令的下一程序線程,使得在與當(dāng)前被選擇的那些程序線程相結(jié)合的情況下,將在其中發(fā)射程序指令的發(fā)射周期的比例不小于一。
5.如權(quán)利要求2所述的裝置,其中,所述發(fā)射控制電路被配置為在如下情況中的任一種情況下確定所述多個程序線程中的所述一個程序線程的程序指令在發(fā)射周期內(nèi)不可用于發(fā)射 (i)將從所述多個程序線程中的所述一個程序線程中發(fā)射的下一指令對尚不可用的操作數(shù)值具有數(shù)據(jù)依賴;以及 ( )將從所述多個程序線程中的所述一個程序線程中發(fā)射的下一指令尚有待于競爭被從存儲該下一指令的存儲器中提取。
6.如權(quán)利要求2所述的裝置,其中,所述線程性能監(jiān)視電路包括針對被選擇來發(fā)射程序指令的每個程序線程的計數(shù)器,并且所述計數(shù)器被配置為根據(jù)所述多個程序線程中的相應(yīng)程序線程是否具有可用于發(fā)射的程序指令來累積計數(shù)值。
7.如權(quán)利要求6所述的裝置,其中,所述計數(shù)器被配置為在預(yù)定累積時段內(nèi)累積所述計數(shù)值,此后所述計數(shù)值被重置并且累積被重新啟動。
8.如權(quán)利要求7所述的裝置,其中,所述預(yù)定累積時段是用戶可配置參數(shù)。
9.如權(quán)利要求I所述的裝置,其中,所述發(fā)射控制電路被配置為獨立于所述多個性能值來從如下程序線程選擇程序指令用于發(fā)射在長于由所述發(fā)射控制電路做出的預(yù)定次數(shù)的線程選擇的時間內(nèi)尚未選擇來自該程序線程的程序指令。
10.如權(quán)利要求I所述的裝置,其中,所述發(fā)射控制電路被配置為在所述多個程序線程中的每一個中執(zhí)行按次序的程序指令發(fā)射。
11.如權(quán)利要求I所述的裝置,包括發(fā)射隊列電路,該發(fā)射隊列電路被配置為存儲所述多個程序線程中的每一個程序線程的程序指令以形成準(zhǔn)備好運行的指令的池。
12.如權(quán)利要求I所述的裝置,其中,所述發(fā)射控制電路被配置為在線程切換事件發(fā)生之前繼續(xù)從所述多個程序線程中的給定程序線程中選擇要發(fā)射的程序指令,當(dāng)線程切換事件發(fā)生時,所述發(fā)射控制電路根據(jù)所述多個性能值來選擇程序指令將從所述多個程序線程中的哪些程序線程發(fā)射到所述執(zhí)行電路。
13.如權(quán)利要求12所述的裝置,其中,所述線程切換事件是如下事件中的至少一種 (i)高速緩存存儲器內(nèi)的未命中; ( )定時器觸發(fā)的事件; (iii)由另一線程事件接替; (iv)轉(zhuǎn)換后備緩沖器內(nèi)的未命中;以及 (V)外部中斷請求。
14.如權(quán)利要求I所述的裝置,其中,所述發(fā)射控制電路被配置為一次向所述執(zhí)行電路發(fā)射一個或多個程序指令。
15.如權(quán)利要求I所述的裝置,其中,所述發(fā)射控制電路被配置為使來自兩個程序線程的程序指令交錯。
16.一種用于處理數(shù)據(jù)的裝置,包括 執(zhí)行裝置,用于執(zhí)行程序指令; 發(fā)射控制裝置,該發(fā)射控制裝置被耦合到所述執(zhí)行裝置并且用于從多個程序線程中選擇程序指令以組成要發(fā)射到所述執(zhí)行裝置的程序指令的序列,所述發(fā)射控制裝置選擇所述程序指令以使得來自所述多個程序線程中的不同程序線程的程序指令被交錯在所述序列內(nèi);以及 線程性能監(jiān)視裝置,該線程性能監(jiān)視裝置被耦合到發(fā)射控制裝置并且用于測量多個性能值,所述多個性能值中的每一個性能值指示所述多個程序線程中的一個程序線程的性能參數(shù);其中 所述發(fā)射控制裝置根據(jù)所述多個性能值來選擇程序指令將被從所述多個程序線程中的哪些程序線程發(fā)射到所述執(zhí)行裝置。
17.—種處理數(shù)據(jù)的方法,包括以下步驟 從多個程序線程中選擇程序指令以組成要發(fā)射的程序指令的序列,所述選擇步驟操作來選擇所述程序指令以使得來自所述多個程序線程中的不同程序線程的程序指令被交錯在所述序列內(nèi); 執(zhí)行被發(fā)射的所述程序指令;以及 測量多個性能值,所述多個性能值中的每一個性能值指示所述多個程序線程中的一個程序線程的性能參數(shù);其中 所述選擇步驟根據(jù)所述多個性能值來選擇程序指令將被從所述多個程序線程中的哪些程序線程發(fā)射到所述執(zhí)行裝置。
18.如權(quán)利要求16所述的方法,其中,所述選擇步驟選擇供在發(fā)射周期序列中的每個發(fā)射周期處發(fā)射的程序指令,并且所述多個性能值為所述多個程序線程中的每一個程序線程指示在所述發(fā)射周期序列內(nèi)所述多個程序線程中的所述一個程序線程的程序指令可用于發(fā)射的發(fā)射周期的比例。
19.如權(quán)利要求18所述的方法,其中,所述選擇步驟選擇從中發(fā)射程序指令的下一程序線程,使得在與當(dāng)前被選擇的那些程序線程相結(jié)合的情況下,被所述性能值預(yù)測為將在其中發(fā)射程序指令的發(fā)射周期的比例是超過一的最小值。
20.如權(quán)利要求18所述的方法,其中,所述選擇步驟選擇從中發(fā)射程序指令的下一程序線程,使得在與當(dāng)前被選擇的那些程序線程相結(jié)合的情況下,將在其中發(fā)射程序指令的發(fā)射周期的比例不小于一。
全文摘要
本發(fā)明提供了多線程處理的線程選擇。多線程處理器(4)使來自不同程序線程的程序指令交錯以執(zhí)行細(xì)粒度多線程。線程性能監(jiān)視電路(30)監(jiān)視個體程序線程的性能參數(shù)以生成性能值。發(fā)射控制電路(28)當(dāng)線程切換事件發(fā)生時讀取這些性能值以確定哪個程序線程接下來被選擇為活動。所測量的性能參數(shù)可包括程序線程能夠在其中提供供處理器(4)內(nèi)的執(zhí)行電路(12)執(zhí)行的程序指令的周期的比例。
文檔編號G06F9/38GK102736897SQ20121009765
公開日2012年10月17日 申請日期2012年3月30日 優(yōu)先權(quán)日2011年4月5日
發(fā)明者安東尼·約翰·彭頓, 安德魯·克里斯多佛·羅斯, 弗拉基米爾·瓦斯金, 艾倫·約翰·斯基爾曼 申請人:Arm有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
兴山县| 潜山县| 家居| 陆河县| 昌乐县| 义马市| 武隆县| 丰镇市| 五大连池市| 韩城市| 武胜县| 永德县| 潞西市| 井陉县| 安图县| 东阳市| 东源县| 安化县| 陵川县| 德安县| 凤城市| 东辽县| 长治市| 肃北| 左权县| 太湖县| 松滋市| 沂水县| 达尔| 南投县| 建德市| 耿马| 灌云县| 伊宁县| 宁陕县| 临夏县| 昌乐县| 五原县| 临颍县| 清远市| 哈密市|