專利名稱:一種應(yīng)用于同時(shí)多線程處理器的取指控制裝置及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)體系結(jié)構(gòu)和通用微處理器設(shè)計(jì)領(lǐng)域,尤其涉及一種用于同時(shí)多線程處理器的取指控制裝置及其方法。
背景技術(shù):
首先介紹說明書中發(fā)明內(nèi)容所應(yīng)用到環(huán)境,即,同時(shí)多線程微處理器系統(tǒng)結(jié)構(gòu)。
一個(gè)同時(shí)多線程處理器的系統(tǒng)結(jié)構(gòu)如圖1所示。為了同時(shí)運(yùn)行多個(gè)線程,處理器需要為每個(gè)線程設(shè)置一套獨(dú)立的用于保存其運(yùn)行狀態(tài)的硬件機(jī)構(gòu),包括程序計(jì)數(shù)器、定點(diǎn)和浮點(diǎn)寄存器組,以及在存儲(chǔ)部件包括Cache、TLB和指令隊(duì)列中設(shè)置的線程標(biāo)識(shí)符。在此,指令隊(duì)列是指包含同時(shí)多線程處理器內(nèi)取指隊(duì)列、譯碼隊(duì)列、重命名隊(duì)列和定點(diǎn)/浮點(diǎn)發(fā)射隊(duì)列在內(nèi)全部隊(duì)列的統(tǒng)稱;在每個(gè)時(shí)鐘周期,取指部件根據(jù)分支預(yù)測(cè)器的結(jié)果從指令Cache中讀取多個(gè)線程的指令送到取指隊(duì)列,取指隊(duì)列中的指令按“先進(jìn)先出”的次序每周期將數(shù)量等于譯碼帶寬的指令送到譯碼部件進(jìn)行譯碼,指令經(jīng)譯碼和重命名后進(jìn)入到定點(diǎn)或浮點(diǎn)發(fā)射隊(duì)列等待發(fā)射,當(dāng)條件滿足,即,操作數(shù)準(zhǔn)備好且部件空閑時(shí)被發(fā)射到相應(yīng)的功能部件亂序執(zhí)行,執(zhí)行結(jié)束后再經(jīng)過指令重排序部件依次寫回到寄存器中。
如圖2所示,同時(shí)多線程處理器與傳統(tǒng)的基于分支預(yù)測(cè)和亂序執(zhí)行的超標(biāo)量處理器的不同之處在于,前者允許在每個(gè)時(shí)鐘周期從多個(gè)線程讀取指令執(zhí)行,因此在一個(gè)時(shí)鐘周期內(nèi),同時(shí)多線程處理器能夠同時(shí)利用程序的線程級(jí)并行性和指令級(jí)并行性來消除水平浪費(fèi),另外,當(dāng)由于長(zhǎng)延遲操作或者資源沖突導(dǎo)致只有一個(gè)活動(dòng)線程時(shí),該線程能夠使用所有可獲得的發(fā)射槽,這使得可以通過使用其他線程的未阻塞指令來消除垂直浪費(fèi),兩方面的改進(jìn)極大地提高了指令的吞吐率和系統(tǒng)的總體性能。而后者由于兩類指令槽浪費(fèi)現(xiàn)象的存在,導(dǎo)致性能低于同時(shí)多線程處理器的性能。從圖中可以看到,同時(shí)多線程處理器在每個(gè)時(shí)鐘周期可以從多個(gè)線程讀取指令送到取指隊(duì)列以供執(zhí)行部件執(zhí)行,因此,更加充分地利用了處理器發(fā)射槽的帶寬,提高了處理器的指令吞吐率。
同時(shí)多線程處理器在提高指令吞吐率和指令槽資源利用率的同時(shí)也增加了線程間對(duì)共享硬件資源的競(jìng)爭(zhēng)。合理分配硬件資源,在提高多線程總體性能的同時(shí)不影響單個(gè)程序負(fù)載的性能,其關(guān)鍵的因素在于取指方法。另外,由于允許在每個(gè)時(shí)鐘周期從多個(gè)線程讀取指令執(zhí)行,取指部件和訪存部件成為制約同時(shí)多線程處理器性能的瓶頸。合理取指,減少不必要的提前或無效取指操作,提高取指效率和取指質(zhì)量,其關(guān)鍵的因素也在取指方法。
其次,我們簡(jiǎn)單介紹一些現(xiàn)有的同時(shí)多線程處理器的取指方法。
最簡(jiǎn)單的取指方法為“隨機(jī)法”,即取指部件隨機(jī)地從備選線程取指令執(zhí)行。另外一種簡(jiǎn)單的取指方法稱為“round-robin”方式,即,輪詢法,取指部件根據(jù)取指帶寬輪流從全部或部分活動(dòng)線程中讀取固定或可變數(shù)目的指令到取指隊(duì)列中供執(zhí)行。輪詢法的一種改進(jìn)方法稱為“round-robin by 1”,該方法為了提高上次選中取指的線程在運(yùn)行時(shí)調(diào)入Cache的數(shù)據(jù)的使用效率,在下次調(diào)度時(shí)僅調(diào)度1個(gè)新的線程并淘汰1個(gè)舊的線程,從而使大部分線程可以在這個(gè)周期繼續(xù)被取指,提高了Cache數(shù)據(jù)的利用率,減少了因線程頻繁切換導(dǎo)致Cache數(shù)據(jù)被輪流替換掉的情況。輪詢法實(shí)現(xiàn)簡(jiǎn)單,不考慮線程的推進(jìn)速度和優(yōu)先級(jí)等因素,有可能出現(xiàn)某些線程的指令因延遲執(zhí)行而長(zhǎng)期占據(jù)指令隊(duì)列項(xiàng)導(dǎo)致其他線程無法繼續(xù)取指和推進(jìn)的現(xiàn)象,從而降低了系統(tǒng)整體的指令吞吐率。在這三種取指方法中,隨機(jī)法和輪詢法的性能接近,而“round-robin by 1”的方法略優(yōu)于輪詢法。
在已有的取指方法中,ICOUNT方法的取指效率和取指質(zhì)量最高,依據(jù)該方法進(jìn)行取指的程序性能也最好。在ICOUNT取指方法中,取指部件優(yōu)先選擇占據(jù)指令隊(duì)列項(xiàng)數(shù)最少的幾個(gè)線程進(jìn)行取指,因此,若某線程運(yùn)行速度快,則其指令在隊(duì)列中的延遲時(shí)間短,可以被很快發(fā)射到功能部件執(zhí)行,表現(xiàn)在指令隊(duì)列上即占據(jù)較少的隊(duì)列項(xiàng),從而在下次取指時(shí)可以獲得較高的優(yōu)先權(quán);而運(yùn)行速度慢的線程,由于其指令延遲執(zhí)行而長(zhǎng)期占據(jù)隊(duì)列項(xiàng),形成指令堆積,因而在下次取指時(shí)將具有較低的優(yōu)先權(quán)。在此,ICOUNT方法傾向于使運(yùn)行速度快的線程優(yōu)先運(yùn)行,同時(shí)又能保證一定的取指公平性。ICOUNT方法有多種取指參數(shù)組合,其中,ICOUNT.2.8的性能最優(yōu),其具體步驟為每次選兩個(gè)線程取指,共取8條指令;首先優(yōu)先為占據(jù)指令隊(duì)列項(xiàng)最少的線程取指,當(dāng)其發(fā)生指令Cache失效或下一條指令需要跨越指令Cache行時(shí)即停止取指,然后,將剩余的取指帶寬分配給第二個(gè)選中的線程。
ICOUNT方法盡量為所選的第一個(gè)線程取指,直到停止取指的條件發(fā)生或達(dá)到最大的取指帶寬時(shí)為止,在取指帶寬有剩余時(shí)才為第二個(gè)線程取剩余數(shù)量的指令,這樣會(huì)出現(xiàn)第一個(gè)線程被取了過多的指令而第二個(gè)線程沒有足夠的指令被取到的現(xiàn)象發(fā)生,造成取指帶寬利用不均衡,每時(shí)鐘周期內(nèi)線程占用的指令隊(duì)列項(xiàng)數(shù)相差較大,指令隊(duì)列沖突率偏高,同時(shí)使得高速緩沖存儲(chǔ)器和TLB的命中率受到限制,進(jìn)而影響處理器性能的進(jìn)一步提高。
在ICOUNT取指方法下,其取指裝置僅包含一個(gè)線程的選擇器、若干個(gè)記錄線程占用指令隊(duì)列項(xiàng)的計(jì)數(shù)器。在每個(gè)時(shí)鐘周期,選擇器從所有計(jì)數(shù)器中選擇兩個(gè)最小的值,其所對(duì)應(yīng)的計(jì)數(shù)器編號(hào)即為將要從中進(jìn)行取指的線程號(hào),隨后,取指部件從選定的第一個(gè)線程(其計(jì)數(shù)器值最小)中盡可能多地取指令,直到達(dá)到最大的取指帶寬或遇到Cache行的邊界或出現(xiàn)Cache不命中時(shí)才停止;如果此時(shí)仍有剩余的取指帶寬,則取指部件從第二個(gè)線程(其計(jì)數(shù)器值次小)中盡可能多地取指令,直到遇到相同的終止條件才停止取指。在該裝置中,選擇器在取指時(shí)比較全部計(jì)數(shù)器值的相對(duì)大小后,這些計(jì)數(shù)器的值即不再被利用,由此,造成取指帶寬利用不均衡,ICOUNT取指裝置效率較低,性能較差。
在ICOUNT基礎(chǔ)上,結(jié)合線程優(yōu)先級(jí)的因素還有PICOUNT和PICOUNT2兩種取指方法。前者在取指時(shí)計(jì)算備選線程的優(yōu)先級(jí)和占用指令隊(duì)列項(xiàng)數(shù)兩個(gè)參數(shù)的加權(quán)和,其值最小的幾個(gè)線程獲得取指的優(yōu)先權(quán);后者則在計(jì)算加權(quán)和時(shí)偏重于線程優(yōu)先級(jí)所占的權(quán)值。在此,考慮優(yōu)先級(jí)的取指方法可以保證高優(yōu)先級(jí)線程的取指和執(zhí)行,但卻可能導(dǎo)致低優(yōu)先級(jí)線程長(zhǎng)期得不到運(yùn)行或性能發(fā)生下降。
針對(duì)不同的性能指標(biāo),也有一些其他的取指方法。如一些貪心算法在取指時(shí)可以選擇具有最小Cache或TLB失效率的線程進(jìn)行取指;或選擇具有最小平均訪存時(shí)間的線程進(jìn)行取指;也可以選擇具有最高每周期指令數(shù),即IPG,的值的線程進(jìn)行取指;另外,也可以根據(jù)各線程對(duì)硬件資源的使用互補(bǔ)情況進(jìn)行取指選擇,如側(cè)重于使各線程總的數(shù)據(jù)Cache失效率最小,或側(cè)重于使總的平均訪存時(shí)間最小,或側(cè)重于使總的IPC值最大等。也有些從提高指令發(fā)射隊(duì)列使用效率,盡量減少指令在隊(duì)列中等待時(shí)間的角度提出了幾種門控取指方法,如當(dāng)線程的延遲執(zhí)行指令數(shù)達(dá)到某個(gè)限額時(shí)即停止從該線程取指,或在線程實(shí)際或預(yù)測(cè)的數(shù)據(jù)Cache失效率達(dá)到某個(gè)限額時(shí)即停止取指等。這些方法雖然在一定程度上滿足了某項(xiàng)性能指標(biāo)的要求,但由于其不是從處理器最終的性能指標(biāo)出發(fā)進(jìn)行取指選擇,因而其處理器的總體性能都低于基于ICOUNT方法的處理器性能。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中取指帶寬利用不均衡的問題;以及為了大幅度減少同時(shí)多線程處理器的平均占用指令隊(duì)列項(xiàng)數(shù),顯著降低指令隊(duì)列沖突率,同時(shí)明顯提高高速緩沖存儲(chǔ)器和TLB的命中率,最終提高處理器性能;從而提供一種應(yīng)用于同時(shí)多線程處理器的取指控制裝置及其方法。
為了解決上述技術(shù)問題,本發(fā)明提供一種應(yīng)用于同時(shí)多線程處理器的取指方法,包括以下步驟a)對(duì)同時(shí)運(yùn)行的多個(gè)線程所占用的指令隊(duì)列項(xiàng)的項(xiàng)數(shù)進(jìn)行統(tǒng)計(jì);b)將統(tǒng)計(jì)后得到的數(shù)值進(jìn)行排序;c)從排序后的序列中選擇兩個(gè)最小的值,將這兩個(gè)值所對(duì)應(yīng)的線程作為本時(shí)鐘周期中選定取指的線程,其他線程在本時(shí)鐘周期內(nèi)不進(jìn)行取指;d)對(duì)步驟c)中兩個(gè)最小的值分別進(jìn)行邏輯“反”操作并對(duì)16進(jìn)行取模操作,得到對(duì)應(yīng)的兩個(gè)新值,分別計(jì)算兩個(gè)最小值的取指令條數(shù)上限;e)根據(jù)取指令條數(shù)上限進(jìn)行取指。
在上述方案中,步驟c)中,所述最小值的較小值的取指令條數(shù)上限為取指帶寬,與所述最小值的較小值邏輯反操作后的值模16運(yùn)算后的值,兩者中最小的值。
在上述方案中,步驟c)中,所述最小值的較大值的取指令條數(shù)上限為取指帶寬與小于所述最小值的較小值的取指令條數(shù)上限的所取實(shí)際指令條數(shù)的差值,與所述最小值的較大值邏輯反操作后的值模16運(yùn)算后的值,兩者中最小的值。
在上述方案中,所述取指令條數(shù)上限是指當(dāng)從該線程取指時(shí),若發(fā)生高速緩沖存儲(chǔ)器不命中、指令跨越高速緩沖存儲(chǔ)器邊界、線程分支誤預(yù)測(cè)等情況,則停止從該線程繼續(xù)取指。
本發(fā)明提供一種應(yīng)用于同時(shí)多線程處理器的取指裝置,包括用于記錄每線程占用指令隊(duì)列的項(xiàng)數(shù)的計(jì)數(shù)器、T選二多路選擇器、第一按位取反器、第二按位取反器、第一模16運(yùn)算器、第二模16運(yùn)算器、第一二選一選擇器、第二二選一選擇器及減法器;其中,在每個(gè)時(shí)鐘周期,T選二的多路選擇器從計(jì)數(shù)器輸出的數(shù)據(jù)值中選擇兩個(gè)最小的值輸出,計(jì)數(shù)器編號(hào)輸出至取指部件,最小值通過第一按位取反器和第一模16運(yùn)算器后送到第一二選一選擇器;次小值通過第二按位取反器和第二模16運(yùn)算器后送到第二二選一選擇器;第一二選一選擇器的另一個(gè)輸入為取指帶寬,第二二選一選擇器的另一個(gè)輸入為減法器的輸出;所述減法器的輸入為取指帶寬和第一二選一選擇器的輸出;第一二選一選擇器和第二二選一選擇器從輸入的值中選擇其中較小的值輸出到同時(shí)多線程處理器的取指部件,取指部件根據(jù)第一二選一選擇器和第二二選一選擇器的輸出值,從對(duì)應(yīng)的線程取指令,并根據(jù)該時(shí)鐘周期實(shí)際取指令的情況更新每個(gè)線程在所述取指裝置中所對(duì)應(yīng)的計(jì)數(shù)器的值。
在上述方案中,所述T選二的多路選擇器中,T為線程數(shù)。
在上述方案中,所述計(jì)數(shù)器包括X個(gè)計(jì)數(shù)器,X為線程的個(gè)數(shù)。
在上述方案中,所述指令隊(duì)列包括同時(shí)多線程處理器內(nèi)取指隊(duì)列、譯碼隊(duì)列、重命名隊(duì)列和定點(diǎn)/浮點(diǎn)發(fā)射隊(duì)列在內(nèi)全部隊(duì)列。
由上可知,本發(fā)明為每個(gè)線程計(jì)算了一個(gè)取指數(shù)量的上界,從而更加均衡地利用了取指帶寬,使得同時(shí)多線程處理器的平均占用指令隊(duì)列項(xiàng)數(shù)大幅度減少,指令隊(duì)列沖突率顯著降低,同時(shí)Cache和TLB(快表)的命中率也明顯提高,最終使得處理器的性能得到很大的提高。
圖1是現(xiàn)有技術(shù)中同時(shí)多線程處理器的系統(tǒng)結(jié)構(gòu);圖2a是現(xiàn)有技術(shù)中超標(biāo)量處理器指令發(fā)射槽的示意圖;圖2b是現(xiàn)有技術(shù)中同時(shí)多線程處理器指令發(fā)射槽的示意圖;圖3是本發(fā)明應(yīng)用于同時(shí)多線程處理器的取指方法流程圖;圖4是本發(fā)明應(yīng)用于同時(shí)多線程處理器的取指控制裝置結(jié)構(gòu)圖。
具體實(shí)施例方式
在本發(fā)明中,處理器在每個(gè)時(shí)鐘周期內(nèi),取指部件根據(jù)本發(fā)明的取指控制裝置的輸入值從兩個(gè)線程取指令。本發(fā)明的基本思想是選擇當(dāng)前運(yùn)行線程中占據(jù)指令隊(duì)列項(xiàng)最少的兩個(gè)線程進(jìn)行取指,并通過對(duì)其占用指令隊(duì)列項(xiàng)數(shù)取邏輯“反”并對(duì)一個(gè)常數(shù)16取模操作后得到的數(shù)值和同時(shí)多線程處理器的取指帶寬來共同限定一個(gè)選定線程每次讀取的指令條數(shù);按照這種取指令條數(shù)的限定方法,取指部件先為占據(jù)指令隊(duì)列項(xiàng)最少的線程進(jìn)行取指,然后將剩余的取指帶寬用來為第二個(gè)選定的線程取指令。
參見圖3,一種應(yīng)用于同時(shí)多線程處理器的取指方法包括以下步驟步驟100,對(duì)同時(shí)運(yùn)行的多個(gè)線程所占用的指令隊(duì)列項(xiàng)的項(xiàng)數(shù)進(jìn)行統(tǒng)計(jì);步驟110,將統(tǒng)計(jì)后得到的數(shù)值進(jìn)行排序;步驟120,從排序后的序列中選擇兩個(gè)最小的值,在此記為MIN1和MIN2,且設(shè)MIN1≤MIN2,將這兩個(gè)值所對(duì)應(yīng)的線程作為本時(shí)鐘周期中選定取指的線程,分別記為T1和T2,其他線程在本時(shí)鐘周期內(nèi)不進(jìn)行取指;步驟130,對(duì)步驟120中兩個(gè)最小的值分別進(jìn)行邏輯“反”操作,得到對(duì)應(yīng)的兩個(gè)新值,記為 和 假設(shè)同時(shí)多線程處理器的取指帶寬為N,則線程T1在本時(shí)鐘周期內(nèi)的取指令條數(shù)的上限為I1=MIN(MIN1‾mod16,N)---(1)]]>其中,MIN操作的含義為兩者中取其中較小的值。上限是指當(dāng)從該線程取指時(shí),若發(fā)生高速緩沖存儲(chǔ)器不命中、指令跨越高速緩沖存儲(chǔ)器邊界、線程分支誤預(yù)測(cè)等情況,則停止從該線程繼續(xù)取指。
當(dāng)線程T1的所取指令條數(shù)確定后,線程T2的取指令條數(shù)的上限為I2=MIN(MIN2‾mod16,N-I1′)---(2)]]>其中,I1`為線程T1在公式1的限定下所取的實(shí)際指令數(shù)。同樣,上限是指當(dāng)從該線程取指時(shí),若發(fā)生高速緩沖存儲(chǔ)器不命中、指令跨越高速緩沖存儲(chǔ)器邊界、線程分支誤預(yù)測(cè)等情況,則停止從該線程繼續(xù)取指。
步驟140,根據(jù)取指令條數(shù)上限進(jìn)行取指。
本發(fā)明與目前同時(shí)多線程處理器中性能最優(yōu)的ICOUNT.2.8取指方法的不同之處在于兩者為所選線程所取的指令數(shù)量上。ICOUNT方法盡量為所選的第一個(gè)線程取指,直到停止取指的條件發(fā)生或達(dá)到最大的取指帶寬時(shí)為止,在取指帶寬有剩余時(shí)才為第二個(gè)線程取剩余數(shù)量的指令;而本發(fā)明則在與ICOUNT相同的條件下為每個(gè)線程計(jì)算了一個(gè)取指數(shù)量的上界,而不是像ICOUNT方法那樣將其設(shè)置為取指帶寬,從而更加均衡地利用了取指帶寬,避免出現(xiàn)第一個(gè)線程被取了過多的指令而第二個(gè)線程沒有足夠的指令被取到的現(xiàn)象發(fā)生,從而使線程的總體性能在ICOUNT上得到了進(jìn)一步的提高。
參見圖4,虛線框內(nèi)的部分為本發(fā)明所涉及的部分。在圖4中,本發(fā)明包含一套連接到同時(shí)多線程處理器取指部件的基于反饋機(jī)制的電路,即應(yīng)用于同時(shí)多線程處理器的取指控制裝置。該裝置包括計(jì)數(shù)器1、T選二多路選擇器2、第一按位取反器3、第二按位取反器4、第一模16運(yùn)算器5、第二模16運(yùn)算器6、第一二選一選擇器7、第二二選一選擇器8及減法器9。其中,計(jì)數(shù)器1用于記錄每線程占用指令隊(duì)列的項(xiàng)數(shù);T選二的多路選擇器2中,T為線程數(shù)。
在同時(shí)多線程處理器工作過程中,在每個(gè)時(shí)鐘周期,計(jì)數(shù)器1的值送到T選二的多路選擇器2,T選二的多路選擇器2從輸入的數(shù)據(jù)值中選擇兩個(gè)最小的值輸出,其中,最小的值通過“所選的線程1”端口輸出,次小的值從“所選的線程2”端口輸出,并將相應(yīng)的線程號(hào)(即計(jì)數(shù)器的編號(hào))送到取指部件,該線程號(hào)表示在本時(shí)鐘周期從其中讀取指令的線程;T選二的多路選擇器2的一個(gè)輸出值通過第一按位取反器3和第一模16運(yùn)算器5后送到第一二選一選擇器7;T選二的多路選擇器2的另一個(gè)輸出值通過第二按位取反器4和第二模16運(yùn)算器6后送到第二二選一選擇器8;對(duì)應(yīng)于所選的線程1(即最初所選的兩個(gè)值中較小值所對(duì)應(yīng)的線程),第一二選一選擇器7的另一個(gè)輸入為N(同時(shí)多線程處理器的取指帶寬);對(duì)應(yīng)于所選線程2(即另一個(gè)選定的線程),第二二選一選擇器8的另一個(gè)輸入為減法器9的輸出,該減法器的輸入為N和線程1所對(duì)應(yīng)的第一二選一選擇器7的輸出;第一二選一選擇器7和第二二選一選擇器8從輸入的值中選擇其中較小的值輸出到同時(shí)多線程處理器的取指部件,取指部件根據(jù)第一二選一選擇器7和第二二選一選擇器8的輸出值,從對(duì)應(yīng)的線程取指令,并根據(jù)該時(shí)鐘周期實(shí)際取指令的情況更新每個(gè)線程在所述取指裝置中所對(duì)應(yīng)的計(jì)數(shù)器1的值,從而形成一個(gè)反饋電路。
所述取指裝置所應(yīng)用在的處理器具有一個(gè)獨(dú)立且共享的取指隊(duì)列;在每個(gè)時(shí)鐘周期內(nèi),取指部件可以從多個(gè)同時(shí)運(yùn)行的活動(dòng)線程取指令,并送到共享的取指隊(duì)列中;取指隊(duì)列中有屬于多個(gè)不同線程的指令可供處理器的執(zhí)行部件執(zhí)行,不同線程的指令執(zhí)行時(shí)不需要進(jìn)行線程切換;多個(gè)線程共享處理器的高速緩沖存儲(chǔ)器和主機(jī)系統(tǒng)的主存儲(chǔ)器。處理器的取指部件在取指令時(shí),同時(shí)多線程處理器根據(jù)選定線程的程序計(jì)數(shù)器的值從共享的高速緩沖存儲(chǔ)器或主存儲(chǔ)器中讀取一定數(shù)目的指令,送到共享的取指隊(duì)列中。
圖4中寄存器重命名部件后所連接的部分與圖1中對(duì)應(yīng)部分完全相同,在圖中用虛線省略表示。
本發(fā)明的取指裝置實(shí)現(xiàn)復(fù)雜度很低,用較少的硬件即可實(shí)現(xiàn),其時(shí)間復(fù)雜度為常量。
下面,我們以一個(gè)實(shí)例來說明本發(fā)明的實(shí)施過程。為簡(jiǎn)單起見,假設(shè)同時(shí)多線程處理器同時(shí)運(yùn)行2個(gè)線程,保留站隊(duì)列共32項(xiàng),用于存放經(jīng)重命名后的定點(diǎn)和浮點(diǎn)指令,取指、譯碼、重命名隊(duì)列(或窗口)分別為4項(xiàng),處理器為4發(fā)射,每拍最多取4條指令。
在上面的假設(shè)下,隊(duì)列項(xiàng)總數(shù)為32+4*3=44。
需要說明的是,當(dāng)處理器為4發(fā)射時(shí),發(fā)明中“取?!钡臄?shù)為8。
對(duì)當(dāng)前兩線程擁有所有指令條數(shù)分布的情況列表如下。為減少篇幅,僅考慮線程1(T1)的指令數(shù)少于線程2(T2)的情況,反之相同。在表中,4’表示其取指上限為4條指令,但必須在線程1取指后的剩余取指帶寬中進(jìn)行取指。
表1本發(fā)明的技術(shù)與ICOUNT技術(shù)在每時(shí)鐘周期內(nèi)取指令條數(shù)的區(qū)別。
從表1中可以看到,本發(fā)明可以有效地限制一個(gè)線程取指令的上限,從而更加有效地分配取指帶寬,達(dá)到提高同時(shí)多線程處理器性能的目的。
最后所應(yīng)說明的是以上實(shí)施例僅用以說明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對(duì)本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種應(yīng)用于同時(shí)多線程處理器的取指方法,包括以下步驟a)對(duì)同時(shí)運(yùn)行的多個(gè)線程所占用的指令隊(duì)列項(xiàng)的項(xiàng)數(shù)進(jìn)行統(tǒng)計(jì);b)將統(tǒng)計(jì)后得到的數(shù)值進(jìn)行排序;c)從排序后的序列中選擇兩個(gè)最小的值,將這兩個(gè)值所對(duì)應(yīng)的線程作為本時(shí)鐘周期中選定取指的線程,其他線程在本時(shí)鐘周期內(nèi)不進(jìn)行取指;d)對(duì)步驟c)中兩個(gè)最小的值分別進(jìn)行邏輯“反”操作并對(duì)16進(jìn)行取模操作,得到對(duì)應(yīng)的兩個(gè)新值,分別計(jì)算兩個(gè)最小值的取指令條數(shù)上限;e)根據(jù)取指令條數(shù)上限進(jìn)行取指。
2.如權(quán)利要求1所述的方法,其特征在于步驟c)中,所述最小值的較小值的取指令條數(shù)上限為取指帶寬,與所述最小值的較小值邏輯反操作后的值模16運(yùn)算后的值,兩者中最小的值。
3.如權(quán)利要求1所述的方法,其特征在于步驟c)中,所述最小值的較大值的取指令條數(shù)上限為取指帶寬與小于所述最小值的較小值的取指令條數(shù)上限的所取實(shí)際指令條數(shù)的差值,與所述最小值的較大值邏輯反操作后的值模16運(yùn)算后的值,兩者中最小的值。
4.如權(quán)利要求1所述的方法,其特征在于所述取指令條數(shù)上限是指當(dāng)從該線程取指時(shí),若發(fā)生高速緩沖存儲(chǔ)器不命中、指令跨越高速緩沖存儲(chǔ)器邊界、線程分支誤預(yù)測(cè)等情況,則停止從該線程繼續(xù)取指。
5.一種應(yīng)用于同時(shí)多線程處理器的取指裝置包括用于記錄每線程占用指令隊(duì)列的項(xiàng)數(shù)的計(jì)數(shù)器、T選二多路選擇器、第一按位取反器、第二按位取反器、第一模16運(yùn)算器、第二模16運(yùn)算器、第一二選一選擇器、第二二選一選擇器及減法器;其中,在每個(gè)時(shí)鐘周期,T選二的多路選擇器從計(jì)數(shù)器輸出的數(shù)據(jù)值中選擇兩個(gè)最小的值輸出,計(jì)數(shù)器編號(hào)輸出至取指部件,最小值通過第一按位取反器和第一模16運(yùn)算器后送到第一二選一選擇器;次小值通過第二按位取反器和第二模16運(yùn)算器后送到第二二選一選擇器;第一二選一選擇器的另一個(gè)輸入為取指帶寬,第二二選一選擇器的另一個(gè)輸入為減法器的輸出;所述減法器的輸入為取指帶寬和第一二選選擇器的輸出;第一二選一選擇器和第二二選一選擇器從輸入的值中選擇其中較小的值輸出到同時(shí)多線程處理器的取指部件,取指部件根據(jù)第一二選一選擇器和第二二選一選擇器的輸出值,從對(duì)應(yīng)的線程取指令,并根據(jù)該時(shí)鐘周期實(shí)際取指令的情況更新每個(gè)線程在所述取指裝置中所對(duì)應(yīng)的計(jì)數(shù)器的值。
6.如權(quán)利要求5所述的取指裝置,其特征在于,所述T選二的多路選擇器中,T為線程數(shù)。
7.如權(quán)利要求5所述的取指裝置,其特征在于,所述計(jì)數(shù)器包括X個(gè)計(jì)數(shù)器,X為線程的個(gè)數(shù)。
8.如權(quán)利要求5所述的取指裝置,其特征在于,所述指令隊(duì)列包括同時(shí)多線程處理器內(nèi)取指隊(duì)列、譯碼隊(duì)列、重命名隊(duì)列和定點(diǎn)/浮點(diǎn)發(fā)射隊(duì)列在內(nèi)全部隊(duì)列。
全文摘要
本發(fā)明公開了一種應(yīng)用于同時(shí)多線程處理器的取指控制裝置及其方法,該裝置包括用于記錄每線程占用指令隊(duì)列的項(xiàng)數(shù)的計(jì)數(shù)器、T選二多路選擇器、第一按位取反器、第二按位取反器、第一模16運(yùn)算器、第二模16運(yùn)算器、第一二選一選擇器、第二二選一選擇器及減法器。本發(fā)明為每個(gè)線程計(jì)算了一個(gè)取指數(shù)量的上界,從而更加均衡地利用了取指帶寬,使得同時(shí)多線程處理器的平均占用指令隊(duì)列項(xiàng)數(shù)大幅度減少,指令隊(duì)列沖突率顯著降低,同時(shí)Cache(高速緩沖存儲(chǔ)器)和TLB(快表)的命中率也明顯提高,最終使得處理器的性能得到很大的提高。
文檔編號(hào)G06F9/38GK1716183SQ200410009288
公開日2006年1月4日 申請(qǐng)日期2004年6月30日 優(yōu)先權(quán)日2004年6月30日
發(fā)明者何立強(qiáng), 劉志勇, 胡偉武 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所