專(zhuān)利名稱(chēng):用于在多線程微處理器中調(diào)度指令的發(fā)布的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于動(dòng)態(tài)地優(yōu)化在多線程微處理器指令的發(fā)布的方法和設(shè)備。特別地,本發(fā)明涉及在多線程微處理器的推測(cè)式(speculative)指令的發(fā)布,該多線程微處理器能夠在每個(gè)時(shí)鐘周期從多于一個(gè)的線程發(fā)布指令。
背景技術(shù):
像任何其它處理器一樣,多線程處理器是具有執(zhí)行單元、緩存和存儲(chǔ)器等的微處理器,但是附加合并了多個(gè)執(zhí)行的線程的概念。執(zhí)行的線程由依照微處理器的資源動(dòng)作的指令流組成,其中的一些指令是特定的線程私有的,一些指令可以在線程之間共享。資源包括寄存器、帶寬以及緩存或存儲(chǔ)器的空間。圖1是現(xiàn)有技術(shù)中的多線程微處理器內(nèi)核的示意圖。在如圖1所示的多線程微處理器內(nèi)核中,若干線程2能夠并行操作,根據(jù)它們的能力經(jīng)由線程指令調(diào)度器1發(fā)布指令。線程可以被給于優(yōu)先級(jí)順序以允許調(diào)度器確定先發(fā)布哪些指令。處理器能夠?qū)⒃谙嗤臅r(shí)鐘周期來(lái)自多個(gè)線程的指令發(fā)布,假設(shè)它們不能使用相同的資源,比如相同的數(shù)據(jù)緩存3。調(diào)度器必須被配置成確定在每個(gè)時(shí)鐘周期可以將哪些指令一起發(fā)布。推測(cè)式指令是特殊類(lèi)型的指令。在微處理器領(lǐng)域很容易理解推測(cè)式指令的提取和發(fā)布的概念。推測(cè)式指令以這樣的形式來(lái)提取和發(fā)布做出較早的程序指令結(jié)果的預(yù)測(cè) (prediction)然后在知道該預(yù)測(cè)是否被正確做出之前依據(jù)該預(yù)測(cè)提取和發(fā)布指令。預(yù)測(cè)結(jié)果動(dòng)作的最普通的例子是程序具有分支,在該程序中基于條件測(cè)試做出關(guān)于采取什么代碼路徑的選擇。如果后來(lái)確定預(yù)測(cè)正確,則處理器繼續(xù)工作。如果確定預(yù)測(cè)不正確,那么有必要?jiǎng)h除預(yù)測(cè)的指令和它們的影響,并從新確定的指令提取地址重新開(kāi)始指令提取和發(fā)布。使用術(shù)語(yǔ)預(yù)測(cè)是因?yàn)樘幚砥餍枰谥廊魏巫罱l(fā)布的指令的結(jié)果之前動(dòng)作。例如,在比較或條件測(cè)試指令之后,分支可以立即很好地跟進(jìn)。在流水線處理器中流水線可以是很多階長(zhǎng)度,并且典型地條件測(cè)試的結(jié)果在流水線下面很長(zhǎng)的距離產(chǎn)生結(jié)果。然而,分支直接影響指令提取,并將因此在流水線的開(kāi)始有影響權(quán)利。因?yàn)榉种П仨毜却阎罈l件測(cè)試結(jié)果,導(dǎo)致氣泡或拖延。可替代這種等待的選擇是猜測(cè)哪個(gè)分支有可能被選取,并且把該猜測(cè)作為路線跟隨直到知道該猜測(cè)是對(duì)或錯(cuò)。在猜測(cè)和知道那個(gè)猜測(cè)的正確性之間提取和/或發(fā)布的指令不必要正確而且可以必須是松散的——因此用術(shù)語(yǔ)推測(cè)。猜測(cè)或者是基于簡(jiǎn)單的規(guī)則(例如,選取后向分支,不選取前向分支)或者是表明代碼的給出部分以前最常做什么的歷史數(shù)據(jù)。像此處用到的,術(shù)語(yǔ)“推測(cè)式指令”意思是提取和/或發(fā)布的指令可以不是必須的,因?yàn)檫€不知道較早的程序指令的結(jié)果。本發(fā)明應(yīng)對(duì)如何在能夠在相同時(shí)鐘周期的從多個(gè)線程發(fā)布指令的處理器調(diào)度推測(cè)式指令的發(fā)布的問(wèn)題。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一個(gè)方面,提供了一種用于在能夠在每個(gè)時(shí)鐘周期發(fā)布多個(gè)指令的多線程處理器,從多個(gè)可用指令中動(dòng)態(tài)地確定在每個(gè)時(shí)鐘周期中發(fā)布哪些指令的方法, 該方法包括步驟從多個(gè)可用指令中確定最高優(yōu)先級(jí)指令;確定最高優(yōu)先級(jí)指令與每個(gè)可用指令的兼容性,其中如果指令不需要相同的資源,則他們是互相兼容的;以及在相同調(diào)度時(shí)鐘周期,將最高優(yōu)先級(jí)指令和既與最高優(yōu)先級(jí)指令兼容又互相兼容的其他指令一起發(fā)布;其中,最高優(yōu)先級(jí)指令不能是推測(cè)式指令。其的效果是推測(cè)式指令永遠(yuǎn)僅與至少一個(gè)非推測(cè)式指令一起被發(fā)布。根據(jù)本發(fā)明的第二個(gè)方面,提供了一種用于在能夠在每個(gè)時(shí)鐘周期發(fā)布多個(gè)指令的多線程處理器發(fā)布指令的系統(tǒng),該系統(tǒng)包括用于從多個(gè)可用的指令中確定最高優(yōu)先級(jí)指令的裝置;用于確定最高優(yōu)先級(jí)指令與每個(gè)剩余可用指令的兼容性的裝置,其中如果指令不需要相同的資源,則他們是互相兼容的;以及用于在相同的調(diào)度時(shí)鐘周期中,將最高優(yōu)先級(jí)指令和既與最高優(yōu)先級(jí)指令兼容又互相兼容的其他指令一起發(fā)布的裝置;其中,最高優(yōu)先級(jí)指令不能是推測(cè)式指令。本發(fā)明優(yōu)選實(shí)施方式解決了在能夠從每個(gè)時(shí)鐘周期上多個(gè)線程中發(fā)布指令的多線程微處理器推測(cè)式指令的高效調(diào)度的問(wèn)題。本發(fā)明這個(gè)和其他方面將定義在附帶的權(quán)利要求中,現(xiàn)將參考附帶的權(quán)利要求。
以下的是參考附圖以舉例的方式提供的對(duì)本發(fā)明優(yōu)選實(shí)施方式的詳細(xì)描述,附圖中圖1示出了多線程微處理器內(nèi)核;圖2示出了適合于使用在根據(jù)本發(fā)明的系統(tǒng)的指令提取子系統(tǒng);圖3示出了用于推測(cè)式指令提取的系統(tǒng);圖4示出了根據(jù)本發(fā)明的用于推測(cè)式指令提取和執(zhí)行的系統(tǒng);以及圖5示出了根據(jù)本發(fā)明一個(gè)方面的調(diào)度指令的發(fā)布所采取的過(guò)程步驟。
具體實(shí)施例方式圖1是多線程微處理器的示意圖。該微處理器支持并行操作的多個(gè)線程,根據(jù)它們的能力經(jīng)由指令調(diào)度器1發(fā)布指令。在這個(gè)系統(tǒng)中,不同的可以同時(shí)發(fā)布線程,假設(shè)它們不試圖同時(shí)使用相同的資源。線程指令使用的資源包括運(yùn)算器4和5、包括指令緩存和數(shù)據(jù)緩存的緩存子系統(tǒng)3以及協(xié)處理器。另外,該系統(tǒng)可以包括小數(shù)量的能被存取的片上隨機(jī)存取存儲(chǔ)器(RAM)而不是基于簡(jiǎn)單地址映射的緩存子系統(tǒng)。系統(tǒng)可以合并指令RAM也可以合并數(shù)據(jù)RAM。
5
該微處理器包括若干流水線或并行操作的執(zhí)行單元。如果一個(gè)線程正在向一個(gè)流水線發(fā)布指令,可能允許其他線程在相同的時(shí)鐘周期上向其他流水線發(fā)布指令。為了這樣做,在每個(gè)時(shí)鐘周期從多個(gè)流水線來(lái)的指令必須可用于調(diào)度器,而且該調(diào)度器必須能阻止任何有沖突的資源需求。圖2示出了包含在提取指令中的元素以便在每個(gè)時(shí)鐘周期從多個(gè)線程來(lái)的指令可用于調(diào)度器。這個(gè)子系統(tǒng)在共同未決的申請(qǐng)GB0802314.5中被描述。在圖2示出的實(shí)施方式中,存在指令數(shù)據(jù)的兩個(gè)主要來(lái)源——指令緩存20和片上RAM 22。為了優(yōu)化性能,兩個(gè)來(lái)源都可以在同時(shí)存取(雖然每個(gè)線程將只存取一個(gè)或另一個(gè),不能兩個(gè)都存取)。擁有兩個(gè)指令數(shù)據(jù)來(lái)源使在每個(gè)周期將獲得兩個(gè)不同的線程的多達(dá)兩個(gè)指令。為了確定哪個(gè)線程將從指令緩存20或片上RAM 22存取指令,每個(gè)指令來(lái)源具有優(yōu)先級(jí)仲裁器M,將該優(yōu)先級(jí)仲裁器M聯(lián)接在指令來(lái)源和每個(gè)線程的指令緩存單元25之間。將每個(gè)優(yōu)先級(jí)仲裁器聯(lián)接到每個(gè)線程(線程0到線程η)的指令提取單元25。經(jīng)由此連接,優(yōu)先級(jí)仲裁器能夠接收具有關(guān)聯(lián)的優(yōu)先數(shù)據(jù)的指令的請(qǐng)求并且能向指令提取單元25提供提取的指令。每個(gè)指令提取單元25包括指令緩沖器,該指令緩沖器能夠容納多達(dá)八個(gè)在預(yù)備狀態(tài)的指令以在向指令調(diào)度器觀發(fā)布指令之前進(jìn)給(feed to)到指令解碼器和資源互鎖單元沈,所述指令解碼器和資源互鎖單元沈?qū)⒁来蝹鬟f每個(gè)指令到處理器執(zhí)行。獲得針對(duì)多個(gè)線程指令的指令調(diào)度器觀,可以然后在一個(gè)位置在相同的周期將針對(duì)多個(gè)線程的指令發(fā)布。為了使指令調(diào)度器觀能在相同的時(shí)鐘周期發(fā)布來(lái)自多個(gè)線程的指令,需要比對(duì)其他指令需要的資源測(cè)試每個(gè)線程的指令所需的資源。這能夠保證相沖突的指令不能同時(shí)發(fā)布。這能夠由指令解碼單元沈來(lái)完成,該指令解碼單元當(dāng)指令從相對(duì)應(yīng)的指令提取單元 25結(jié)果時(shí)執(zhí)行對(duì)每個(gè)指令的預(yù)解碼,然后比對(duì)針對(duì)在裝置中活躍的其他線程并行確定的資源來(lái)針對(duì)本指令設(shè)定的資源進(jìn)行“求與”??梢詼y(cè)試這些資源需求縮小的組。選取一個(gè)簡(jiǎn)單的例子,線程可打算使用執(zhí)行單元發(fā)送數(shù)據(jù)存儲(chǔ)器提取請(qǐng)求以下載或儲(chǔ)存一些數(shù)據(jù)。如果另一個(gè)線程也打算使用相同的執(zhí)行單元或者打算使用該數(shù)據(jù)存儲(chǔ)器提取的數(shù)據(jù)存儲(chǔ)器端口,那么該線程將和第一個(gè)線程的執(zhí)行不兼容,以使二者不能被同時(shí)發(fā)布。然而,如果另一個(gè)線程打算執(zhí)行一組不同的指令, 比如不需要那些資源的程序分支,它將被認(rèn)為是兼容的并且按照被用于請(qǐng)求數(shù)據(jù)存儲(chǔ)器提取線程同時(shí)被發(fā)布用于執(zhí)行。為了做正確的確定,所有現(xiàn)有的線程并行相互比對(duì)來(lái)測(cè)試它們?cè)O(shè)定所有的資源需求。這個(gè)過(guò)程是對(duì)稱(chēng)的,因?yàn)槿绻€程A與線程B兼容,那么,由定義,線程B也與線程A兼容。因此,在每對(duì)線程之間這種測(cè)試只需做一次。作為這種兼容性測(cè)試的結(jié)果,在每個(gè)配對(duì)的線程生成標(biāo)志,并且這個(gè)標(biāo)志的狀態(tài)確定線程是否兼容。因此,比對(duì)所有其他線程測(cè)試每個(gè)線程的結(jié)果是生成針對(duì)每對(duì)線程的兼容性標(biāo)志,兼容性標(biāo)志的狀態(tài)確定線程是否對(duì)于執(zhí)行是兼容的。例如,是否只有兩個(gè)線程同時(shí)重疊資源需求。為了確定然后發(fā)布哪個(gè)指令,給予每個(gè)線程優(yōu)先級(jí)等級(jí)。該優(yōu)先級(jí)等級(jí)基于任意合適的度量標(biāo)準(zhǔn),比如EP1639554中描述的自動(dòng)MIPS分配(AMA)度量標(biāo)準(zhǔn)。然后,具有最高優(yōu)先級(jí)等級(jí)的線程由于寄存器或資源互鎖而不被阻止發(fā)布指令,然后被選擇作為線程發(fā)布。被發(fā)現(xiàn)不需要同樣資源的任何其他線程可以與來(lái)自最高優(yōu)先級(jí)線程的自由發(fā)布的指令 (叫作引導(dǎo)指令)成組為一個(gè)指令組以在該時(shí)鐘周期發(fā)布。根據(jù)與已經(jīng)包括在組中的指令的兼容性,可以按照優(yōu)先級(jí)順序?qū)⒅噶罴拥浇M中。每個(gè)指令所需的資源的確定通過(guò)在指令解碼單元沈的指令預(yù)解碼操作來(lái)實(shí)現(xiàn)。 解碼單元沈產(chǎn)生每個(gè)指令需求資源的簡(jiǎn)短概要。然后,指令調(diào)度器比對(duì)其他線程的針對(duì)線程間兼容性測(cè)試資源需求以及比對(duì)機(jī)器狀態(tài)針對(duì)資源測(cè)試資源需求以及測(cè)試寄存器的可用性。調(diào)度器把這些測(cè)試的結(jié)果和優(yōu)先級(jí)等級(jí)相結(jié)合以提供在任意給定周期調(diào)度的最終的指令集合?!巴茰y(cè)”是本技術(shù)領(lǐng)域內(nèi)熟知的概念,其采取這樣的形式做出預(yù)測(cè),然后在知道該預(yù)測(cè)是否正確做出之前依據(jù)該預(yù)測(cè)發(fā)布指令。推測(cè)式指令結(jié)果的最普通的例子是分支,分支中給予條件測(cè)試做出關(guān)于采取什么代碼路徑的選擇。推測(cè)僅應(yīng)用于在短時(shí)期,之后,知道了指令的結(jié)果并且能夠恢復(fù)正常的調(diào)度。根據(jù)本發(fā)明的一個(gè)方面,被推測(cè)地執(zhí)行的指令不使用上述的正常的線程指令優(yōu)先級(jí)規(guī)則。被推測(cè)地執(zhí)行的指令不應(yīng)該使用這些規(guī)則,是因?yàn)樵诎l(fā)布點(diǎn)不知道所述推測(cè)是否正確。使用普通優(yōu)先級(jí)規(guī)則的替代方法是給這些線程最小的優(yōu)先級(jí)。然而,這導(dǎo)致了許多設(shè)計(jì)上的挑戰(zhàn)。因此,優(yōu)選的安排是,除非和另一個(gè)線程配對(duì)時(shí),被推測(cè)地執(zhí)行的指令應(yīng)該沒(méi)有機(jī)會(huì)發(fā)布。本發(fā)明優(yōu)選的例子包括具有兩個(gè)或更多線程(特別是2,3或4個(gè)線程)的多線程微處理器。微處理器中的每個(gè)線程有它自己的程序計(jì)數(shù)器(PC),該程序計(jì)數(shù)器被輪流使用來(lái)控制針對(duì)該線程的指令提取,以使每個(gè)線程擁有一塊硬件以從指令存儲(chǔ)器或指令緩存提取指令。每個(gè)線程也可以擁有它自己的指令存儲(chǔ)器或指令緩存。然而,這需要每個(gè)線程與其需要的資源一起建立,而不管系統(tǒng)中的線程是否比相同的系統(tǒng)中其他線程需要更少的存儲(chǔ)器。不希望這樣。更好的策略是在所有線程之間共享指令存儲(chǔ)器和指令緩存,以及在這些線程之間仲裁存取該存儲(chǔ)器或緩存的權(quán)利。因?yàn)槊總€(gè)線程擁有一定數(shù)量的針對(duì)它自己指令提取的硬件,所以有可能增加那些硬件來(lái)做關(guān)于指令流的預(yù)測(cè)。例如,在第一個(gè)例子中,預(yù)測(cè)硬件等待被發(fā)送的指令流中的分支指令,以發(fā)布并預(yù)測(cè)是否選取該分支。此后,指令提取依據(jù)預(yù)測(cè)情況(例如,選取或不選取分支)來(lái)改變提取模式。在這個(gè)階段,系統(tǒng)可能被這樣設(shè)置,指令提取等待直到分支它自己(在發(fā)布)的結(jié)果能夠被確定,然后進(jìn)一步進(jìn)給指令或在改正的位置重新開(kāi)始提取。圖 3中示出了預(yù)測(cè)的指令提取的這種性質(zhì)。從圖3能夠看出,針對(duì)每個(gè)線程的指令提取系統(tǒng)由生成新的請(qǐng)求(“地址進(jìn)給”) 的狀態(tài)機(jī)30和進(jìn)給指令到線程和其指令調(diào)度器(“數(shù)據(jù)進(jìn)給”)的狀態(tài)機(jī)32組成。狀態(tài)機(jī) 32包括圖2中指令預(yù)解碼和資源互鎖測(cè)試沈的功能。同樣的,圖3所示的是從返回提取數(shù)據(jù)中挑出分支指令的分支過(guò)濾器和預(yù)測(cè)單元34,該分支過(guò)濾器和預(yù)測(cè)單元34能夠依據(jù)那些分支將去哪的預(yù)測(cè)更新關(guān)于將在哪讀指令的地址進(jìn)給。在非多線程微處理器,如果指令的消耗少于最大請(qǐng)求率,指令提取流水線可能被拖延。然而,在非多線程系統(tǒng),其中,指令提取在線程之間共享,這種拖延通常不可能,因?yàn)闀?huì)在線程之間引入依賴(lài)性,以至于已經(jīng)請(qǐng)求若干指令但沒(méi)有使用這些指令的線程接下來(lái)可能拖延系統(tǒng)中所有其他線程。因此,每個(gè)線程指令提取單元合并能夠針對(duì)固定數(shù)目的指令請(qǐng)求保持返回?cái)?shù)據(jù)的指令緩沖器。有多少可以被傳送的指令請(qǐng)求,都可以在指令緩沖器有可以被儲(chǔ)存的位置。指令緩存器如塊36所示。從指令緩沖器,指令經(jīng)過(guò)指令數(shù)據(jù)進(jìn)給單元 32到指令調(diào)度器。在這個(gè)系統(tǒng),預(yù)測(cè)能夠依據(jù)簡(jiǎn)單的規(guī)則,比如分支的方向(向前或向后)或者使用關(guān)于過(guò)去這個(gè)分支選取哪條路線的一些省略的歷史的形式。在發(fā)布寄存器38處的對(duì)分支指令的實(shí)際發(fā)布被阻擋直到獲知結(jié)果為止(即,諸如條件測(cè)試的預(yù)測(cè)能被確定)。一旦結(jié)果能夠被確定,分支就能被發(fā)布,然后指令流能夠拾起預(yù)測(cè)的提取數(shù)據(jù)或促使指令提取用正確的指令地址重新開(kāi)始。這樣的系統(tǒng)對(duì)于隱藏一些卷入采取分支的時(shí)延是有用的。然而,這樣的系統(tǒng)具有嚴(yán)重的限制,當(dāng)?shù)却_定分支條件測(cè)試結(jié)果時(shí),總是存在被引入的拖延。對(duì)這個(gè)系統(tǒng)的改進(jìn)是在分支結(jié)果以前發(fā)布預(yù)測(cè)的指令,因此,分支預(yù)測(cè)的正確性已被確定。這種情況下,分支之后立即發(fā)布的指令被推測(cè)地執(zhí)行(因?yàn)樵诎l(fā)布點(diǎn)不知道分支預(yù)測(cè)是否正確)。因?yàn)榉种ЫY(jié)果在處理器流水線中被計(jì)算,預(yù)測(cè)是否正確地作出將最終變得明顯。當(dāng)預(yù)測(cè)被正確地做出時(shí),指令的發(fā)布停止推測(cè),并且線程正常進(jìn)行。當(dāng)預(yù)測(cè)被發(fā)現(xiàn)被錯(cuò)誤地預(yù)測(cè),那么有必要?jiǎng)h除分支后發(fā)布的指令和它們的影響,并從新確定的提取地址重新開(kāi)始指令提取。圖4示出了這種推測(cè)式指令提取和發(fā)布。圖4示出了和圖3的提取系統(tǒng)相同的特點(diǎn),但是有推測(cè)式指令被發(fā)布的區(qū)別。圖 4示出了隨這指令調(diào)度器的三階段的執(zhí)行流水線40,以及額外地返回到分支預(yù)測(cè)單元34的分支預(yù)測(cè)驗(yàn)證數(shù)據(jù)路徑42。從圖4能夠看出,分支指令的評(píng)估能夠花費(fèi)數(shù)個(gè)周期。為了避免這些周期的拖延,線程需要能夠從分支繼續(xù)發(fā)布隨后的指令??梢栽O(shè)置這些指令的動(dòng)作是松散的。從圖4能夠看出,討論中的指令數(shù)目典型地相當(dāng)短——正如示出的至多是三或四個(gè)指令。在多線程微處理器中可以適當(dāng)有幾個(gè)在任何給定周期擁有可用的將被發(fā)布的指令的線程。因此,較好的是從不存在指令被發(fā)布的正確性問(wèn)題的其它線程(在這些指令是否應(yīng)該被發(fā)布方面)發(fā)布非推測(cè)式指令。然而,如果推測(cè)式指令從未被發(fā)布,那么在線程的指令流中(正如其中只有提取被預(yù)測(cè)的安排)總是存在拖延。推測(cè)地發(fā)布指令的優(yōu)點(diǎn)是如果能夠做出良好的預(yù)測(cè),那么對(duì)于如果/然后(if/then)判斷,在指令流中能夠以更少的拖延完成更有用的工作。像這樣能夠在可能的地方推測(cè)地執(zhí)行指令是有好處的,前提是發(fā)布不影響具有有其他指令準(zhǔn)備運(yùn)行的其他線程。這樣做的一種方法是給出推測(cè)地執(zhí)行最低優(yōu)先級(jí)的線程。 然而,這在具有在當(dāng)前指令發(fā)布和將來(lái)優(yōu)先級(jí)等級(jí)之間的反饋循環(huán)的系統(tǒng)很難實(shí)現(xiàn)。能被更容易實(shí)現(xiàn)的可選擇方式是標(biāo)志推測(cè)地執(zhí)行指令為不適合第一或重要或最重要的發(fā)布者。 這可以通過(guò)不將推測(cè)地執(zhí)行的指令作為可用的指令呈現(xiàn)給主要的指令調(diào)節(jié)器——代替線程在這個(gè)階段標(biāo)志他們自己為互鎖的或不可用的。與對(duì)帶有準(zhǔn)備運(yùn)行的指令的最高優(yōu)先級(jí)線程的選擇并行的,必須做出關(guān)于其他什么線程可能被允許與該線程同時(shí)發(fā)布的決定。由于與計(jì)算一整套負(fù)載平衡度量相比較所包括的門(mén)(gate)更少,因此能夠在每一個(gè)周期針對(duì)所有線程進(jìn)行計(jì)算。所需的門(mén)對(duì)照系統(tǒng)中的所有其他線程來(lái)測(cè)試某個(gè)線程的設(shè)定資源,給出與該線程的指令兼容的其他線程的列表。該信息接著能夠與預(yù)先準(zhǔn)備的線程優(yōu)先級(jí)排序相結(jié)合成為一個(gè)完全的列表,在這個(gè)完全的列表中如果所述線程獲得了初始調(diào)度決定,則這個(gè)完全的列表中的線程將隨所述線程發(fā)布。圖5示出了根據(jù)本發(fā)明一個(gè)方面,在確定使用哪個(gè)指令時(shí)采取的步驟。在步驟 500,對(duì)于每個(gè)擁有可用指令的線程,確定優(yōu)先級(jí)等級(jí)。在這個(gè)階段,不考慮由于資源或寄存器互鎖而阻止發(fā)布指令的線程。擁有推測(cè)式指令的線程也標(biāo)志它們自己為在這個(gè)階段沒(méi)有資格被考慮。在步驟510,選擇能夠發(fā)布指令的最高優(yōu)先級(jí)的線程。從這個(gè)線程發(fā)布的指令被稱(chēng)為引導(dǎo)指令。如所述,這個(gè)引導(dǎo)指令不能是推測(cè)式指令。在步驟520,針對(duì)具有可用的指令的每個(gè)線程,編譯兼容的線程的列表。在步驟530,從這個(gè)列表和優(yōu)先級(jí)等級(jí),用引導(dǎo)指令確定一組用于發(fā)布的指令。在步驟M0,通過(guò)指令調(diào)度器發(fā)布該指令組。因此,本發(fā)明提供了一種簡(jiǎn)單裝置,當(dāng)推測(cè)地執(zhí)行指令時(shí),線程能夠通過(guò)該裝置把它自己從常規(guī)的指令調(diào)度規(guī)則中取出,當(dāng)它等待確定分支的結(jié)果時(shí),調(diào)度器不得不拖延,然而由于能夠先前地發(fā)布指令,仍然保持增加的吞吐量的可能性。這個(gè)方法用少量附加的門(mén), 并且作為結(jié)果,能夠達(dá)到對(duì)于給定多線程微處理器設(shè)計(jì)不具有對(duì)時(shí)鐘速度的負(fù)面影響。
權(quán)利要求
1.一種在能夠在每個(gè)時(shí)鐘周期發(fā)布多個(gè)指令的多線程處理器中從多個(gè)可用指令中動(dòng)態(tài)地確定在每個(gè)時(shí)鐘周期發(fā)布哪些指令的方法,該方法包括下列步驟從所述多個(gè)可用指令中確定最高優(yōu)先級(jí)指令;確定所述最高優(yōu)先級(jí)指令與每個(gè)可用指令的兼容性,其中如果指令不需要相同的資源,則所述指令是互相兼容的;以及在相同的時(shí)鐘周期,將所述最高優(yōu)先級(jí)指令和既與所述最高優(yōu)先級(jí)指令兼容又互相兼容的其他指令一起發(fā)布;其中,所述最高優(yōu)先級(jí)指令不能是推測(cè)式指令。
2.根據(jù)權(quán)利要求1所述的方法,其中確定所述最高優(yōu)先級(jí)指令的步驟包括確定能夠發(fā)布指令的最高優(yōu)先級(jí)線程以及從該線程中選擇所述指令作為所述最高優(yōu)先級(jí)指令。
3.根據(jù)權(quán)利要求1所述的方法,當(dāng)確定所述最高優(yōu)先級(jí)指令的步驟不可用時(shí),該方法還包括以下步驟標(biāo)記推測(cè)式指令或具有推測(cè)式指令的線程。
4.根據(jù)權(quán)利要求1、2或3中任一項(xiàng)權(quán)利要求所述的方法,該方法還包括以下步驟為所述多個(gè)可用指令確定優(yōu)先級(jí)等級(jí),其中,按照優(yōu)先級(jí)等級(jí)的順序?qū)⒓嫒莸闹噶铍S所述最高優(yōu)先級(jí)指令發(fā)布。
5.根據(jù)權(quán)利要求4所述的方法,其中,推測(cè)式指令被給予比非推測(cè)式指令更低的優(yōu)先級(jí)等級(jí)。
6.根據(jù)權(quán)利要求4或5所述的方法,其中,為所述多個(gè)可用指令確定優(yōu)先級(jí)等級(jí)的步驟包括為每個(gè)具有可用指令的線程確定優(yōu)先級(jí)等級(jí)。
7.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,該方法還包括以下步驟為每個(gè)所述可用指令確定兼容或不兼容指令的列表。
8.一種用于在能夠在每個(gè)時(shí)鐘周期發(fā)布多個(gè)指令的多線程處理器中發(fā)布指令的系統(tǒng), 該系統(tǒng)包括用于從所述多個(gè)可用的指令中確定最高優(yōu)先級(jí)指令的裝置;用于確定所述最高優(yōu)先級(jí)指令與每個(gè)剩余可用指令的兼容性的裝置,其中如果指令不需要相同的資源,則所述指令是互相兼容的;以及用于在相同的時(shí)鐘周期將所述最高優(yōu)先級(jí)指令和既與所述最高優(yōu)先級(jí)指令兼容又互相兼容的其他指令一起發(fā)布的裝置;其中,所述最高優(yōu)先級(jí)指令不能是推測(cè)式指令。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,用于確定所述最高優(yōu)先級(jí)指令的裝置包括用于確定能夠發(fā)布指令的最高優(yōu)先級(jí)線程以及從該線程中選擇所述指令作為所述最高優(yōu)先級(jí)指令的裝置。
10.根據(jù)權(quán)利要求8或9所述的系統(tǒng),該系統(tǒng)還包括當(dāng)所述最高優(yōu)先級(jí)指令被認(rèn)為不可用時(shí)用于標(biāo)記推測(cè)式指令或具有推測(cè)式指令的線程的裝置。
11.根據(jù)權(quán)利要求8、9或10中任一項(xiàng)權(quán)利要求所述的系統(tǒng),該系統(tǒng)還包括用于為所述多個(gè)可用指令確定優(yōu)先級(jí)等級(jí)的裝置,其中,所述用于發(fā)布的裝置被配置成按照優(yōu)先級(jí)等級(jí)的順序?qū)⒓嫒莸闹噶铍S所述最高優(yōu)先級(jí)指令發(fā)布。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述用于為所述多個(gè)可用指令確定優(yōu)先級(jí)等級(jí)的裝置包括用于為每個(gè)具有可用指令的線程確定優(yōu)先級(jí)等級(jí)的裝置。
13.根據(jù)權(quán)利要求8至12中任一項(xiàng)權(quán)利要求所述的系統(tǒng),該系統(tǒng)還包括用于為每個(gè)所述可用指令確定兼容或不兼容指令的列表的裝置。
14.一種實(shí)質(zhì)上參考附圖在此描述的、在能夠在每個(gè)時(shí)鐘周期發(fā)布多個(gè)指令的多線程處理器中從多個(gè)可用指令中動(dòng)態(tài)地確定在每個(gè)時(shí)鐘周期發(fā)布哪些指令的方法。
15.一種實(shí)質(zhì)上參考附圖在此描述的、用于在能夠在每個(gè)時(shí)鐘周期發(fā)布多個(gè)指令的多線程處理器中發(fā)布指令的系統(tǒng)。
全文摘要
提供了一種在能夠在每個(gè)時(shí)鐘周期發(fā)布多個(gè)指令的多線程處理器中從多個(gè)可用指令中動(dòng)態(tài)地確定在每個(gè)時(shí)鐘周期發(fā)布哪些指令的方法,該方法包括下列步驟從多個(gè)可用指令中確定最高優(yōu)先級(jí)指令;確定最高優(yōu)先級(jí)指令與每個(gè)剩余可用指令的兼容性;和在相同時(shí)鐘周期,將最高優(yōu)先級(jí)指令和與該最高優(yōu)先級(jí)指令兼容的其他指令一起發(fā)布;其中,最高優(yōu)先級(jí)指令不能是推測(cè)式指令。其效果是推測(cè)式指令永遠(yuǎn)僅與至少一個(gè)非推測(cè)式指令一起被發(fā)布。
文檔編號(hào)G06F9/38GK102414659SQ201080018675
公開(kāi)日2012年4月11日 申請(qǐng)日期2010年4月27日 優(yōu)先權(quán)日2009年4月28日
發(fā)明者A·D·韋伯 申請(qǐng)人:想象技術(shù)有限公司