多線程處理器的線程取指調(diào)度方法、系統(tǒng)和多線程處理器的制造方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例涉及處理器【技術(shù)領(lǐng)域】,公開(kāi)了一種多線程處理器的線程取指調(diào)度方法、系統(tǒng)和多線程處理器。其中,該方法包括:為第一線程進(jìn)行取指;判斷當(dāng)前取到的指令是否包括第一類(lèi)指令,如果是,暫停為所述第一線程在所述第一類(lèi)指令之后的取指;所述第一類(lèi)指令為能改變指令流且無(wú)法預(yù)知目標(biāo)地址的指令。實(shí)施本發(fā)明實(shí)施例,可以節(jié)省處理器功耗,提高取指單元為其它線程取指的機(jī)會(huì)。
【專(zhuān)利說(shuō)明】多線程處理器的線程取指調(diào)度方法、系統(tǒng)和多線程處理器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及處理器【技術(shù)領(lǐng)域】,具體涉及一種多線程處理器的線程取指調(diào)度方法、系統(tǒng)和多線程處理器。
【背景技術(shù)】
[0002]多線程處理器可以讓同一個(gè)處理器上的多個(gè)線程同步執(zhí)行并共享處理器上的運(yùn)算和訪存資源,可最大限度的實(shí)現(xiàn)多發(fā)射、亂序的處理,提高處理器運(yùn)算資源的利用率,緩和由于同個(gè)線程內(nèi)指令的數(shù)據(jù)依賴(lài)或訪存缺失帶來(lái)的延時(shí)。
[0003]由于有多個(gè)線程需要執(zhí)行,因此,多線程處理器前端需要選擇合適的調(diào)度策略選擇如何輪流為線程取指,如:某個(gè)處理器有16個(gè)硬件線程,每個(gè)時(shí)鐘周期取指單元只能選擇為其中的I個(gè)線程為其取指。為某個(gè)線程取指令指的是把該線程的指令從1-Cache(Instruct1n Cache,指令緩存)中取出來(lái),放入該線程對(duì)應(yīng)的指令緩沖隊(duì)列(Instruct1nBuffer, IB)中。
[0004]目前線程取指調(diào)度策略通常有:輪詢或固定優(yōu)先級(jí)的線程取指調(diào)度策略。
[0005]輪詢是指:每個(gè)周期固定的給某個(gè)線程取指,所有線程輪流被選中,例如對(duì)于有16個(gè)線程的處理器(線程編號(hào)為O?15),我們可以輪流的選擇線程O(píng) — I — 2 — 3……15 — 0……。如果某個(gè)時(shí)鐘內(nèi)被選擇的線程的IB滿了,則暫停為該線程取指,取指單元(Instruct1n Fetch Unit, IFU)在該周期為空操作。作為優(yōu)化,現(xiàn)有很多的多線程處理器會(huì)檢測(cè)每個(gè)線程的狀態(tài),每次都從能夠?yàn)槠淙≈傅木€程中進(jìn)行輪詢,這樣選出來(lái)的線程IB就不是滿的,取指單元可以為其進(jìn)行取指。
[0006]固定優(yōu)先級(jí)指:不同線程具有不同的優(yōu)先級(jí)權(quán)重,若多個(gè)線程同時(shí)準(zhǔn)備好,則只選擇其中優(yōu)先級(jí)最高的線程為其服務(wù)。該優(yōu)先級(jí)權(quán)重的衡量方法有很多,如:線程IB中指令越少優(yōu)先級(jí)越高、線程被停頓越久優(yōu)先級(jí)越高等。
[0007]現(xiàn)有技術(shù)中,每個(gè)硬件線程都有獨(dú)立的IB,取指單元通過(guò)檢測(cè)不同線程的狀態(tài),采用輪詢或固定優(yōu)先級(jí)的方法挑選出一個(gè)已準(zhǔn)備好的線程(即該線程IB可以填入新的指令,且該線程無(wú)ITLB miss(指令旁路轉(zhuǎn)換緩沖缺失,Instruct1n Translat1n Lookup Buffermiss)或1-Cache miss (指令緩存缺失)等)并為該線程取指,從1-Cache取出指令后放入該線程的IB中。
[0008]在大多數(shù)指令集中,有這么一類(lèi)指令很特殊,它們?cè)趫?zhí)行時(shí),需要其后面所有的指令都停頓住,直到該指令執(zhí)行完成,該線程后面的指令才能發(fā)射執(zhí)行,我們就稱(chēng)這類(lèi)指令帶Barrier (攔截)語(yǔ)義。這類(lèi)指令中有很大一部分指令在執(zhí)行時(shí)會(huì)改變指令流(即下一條指令的PC地址)而無(wú)法對(duì)該指令流向進(jìn)行預(yù)測(cè),因此,該指令執(zhí)行完后需要把其后面的指令清除,重新從正確的PC處開(kāi)始取指,該線程才能繼續(xù)執(zhí)行。
[0009]多線程處理器執(zhí)行到某個(gè)線程中的會(huì)改變指令流而無(wú)法對(duì)該指令流向進(jìn)行預(yù)測(cè)的指令(例如ARM(Advanced RISC Machines,先進(jìn)精簡(jiǎn)指令集機(jī)器)中的ISB(Instruct1nSynchronizat1n Barrier,指令同步壁魚(yú))、HVC (Hypervisor Call,超級(jí)管理程序調(diào)用)、SVC (Supervisor Call,操作系統(tǒng)調(diào)用)、SMC (Secure Monitor Call,安全監(jiān)控程序調(diào)用)等指令)時(shí),該指令從IB中發(fā)射出去后,剩余的指令會(huì)被阻塞在IB中,直到執(zhí)行該指令的模塊標(biāo)識(shí)該指令執(zhí)行完畢。然后將發(fā)起清空該線程IB的請(qǐng)求,前端線程取指單元重新為該線程取指。
[0010]現(xiàn)有技術(shù)中的上述調(diào)度取指方法存在以下缺點(diǎn):該方法為線程調(diào)度取指的方式較單一,且某個(gè)線程在取到這類(lèi)會(huì)改變指令流而無(wú)法對(duì)該指令流向進(jìn)行預(yù)測(cè)的指令后,如果它的優(yōu)先級(jí)較高且它的IB仍然能填入新的指令,則取指單元將繼續(xù)為該線程進(jìn)行取指,但由于該類(lèi)指令的特性,該線程繼續(xù)取到的指令最終將會(huì)被清除掉,屬于無(wú)效的取指,這樣既浪費(fèi)了功耗,也降低了取指單元為其它線程取指的機(jī)會(huì)。
【發(fā)明內(nèi)容】
[0011]本發(fā)明實(shí)施例所要解決的技術(shù)問(wèn)題是提供一種多線程處理器的線程取指調(diào)度方法、系統(tǒng)和多線程處理器,用于克服現(xiàn)有技術(shù)中存在的無(wú)效取指問(wèn)題。
[0012]本發(fā)明實(shí)施例提供一種多線程處理器的線程取指調(diào)度方法,包括:
[0013]為第一線程進(jìn)行取指;
[0014]判斷當(dāng)前取到的指令是否包括第一類(lèi)指令,如果是,暫停為所述第一線程在所述第一類(lèi)指令之后的取指;所述第一類(lèi)指令為能改變指令流且無(wú)法預(yù)知目標(biāo)地址的指令。
[0015]相應(yīng)的,本發(fā)明實(shí)施例還提供一種多線程處理器的線程取指調(diào)度系統(tǒng),包括:
[0016]取指單元,用于為第一線程進(jìn)行取指;
[0017]第一判斷單元,用于判斷當(dāng)前取到的指令是否包括第一類(lèi)指令;所述第一類(lèi)指令為能改變指令流且無(wú)法預(yù)知目標(biāo)地址的指令;
[0018]所述取指單元,還用于當(dāng)所述第一判斷單元的判斷結(jié)果為否時(shí),暫停為所述第一線程在所述第一類(lèi)指令之后的取指。
[0019]相應(yīng)的,本發(fā)明實(shí)施例還提供一種多線程處理器,所述多線程處理器包括如上所述的多線程處理器的線程取指調(diào)度系統(tǒng)。
[0020]本發(fā)明實(shí)施例中提供的多線程處理器的線程取指調(diào)度方法、系統(tǒng)和多線程處理器可以在為一個(gè)線程取到第一類(lèi)指令之后,暫停對(duì)該線程的取指,這樣可以克服現(xiàn)有技術(shù)中存在的無(wú)效取指的缺點(diǎn),節(jié)省處理器功耗,同時(shí)由于暫停為第一線程取指,也提高了取指單元為其它線程取指的機(jī)會(huì),進(jìn)而提升多線程處理器的處理效率。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0021]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0022]圖1是本發(fā)明實(shí)施例提供的一種提供的多線程處理器的線程取指調(diào)度方法的流程第一示意圖;
[0023]圖2是本發(fā)明實(shí)施例提供的一種提供的多線程處理器的線程取指調(diào)度方法的流程第二示意圖;
[0024]圖3是本發(fā)明實(shí)施例提供的一種提供的多線程處理器的線程取指調(diào)度系統(tǒng)的結(jié)構(gòu)第一不意圖;
[0025]圖4是本發(fā)明實(shí)施例提供的一種提供的多線程處理器的線程取指調(diào)度系統(tǒng)的結(jié)構(gòu)第二示意圖。
【具體實(shí)施方式】
[0026]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0027]本發(fā)明實(shí)施例中提供了一種多線程處理器的線程取指調(diào)度方法、系統(tǒng)和多線程處理器,其核心思想是在為某個(gè)線程取到第一類(lèi)指令時(shí),暫停為該線程的取指,這樣可以克服現(xiàn)有技術(shù)中的無(wú)效取指問(wèn)題。以下分別進(jìn)行詳細(xì)說(shuō)明。
[0028]本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等(如果存在)是用于區(qū)別類(lèi)似的對(duì)象,而不必用于描述特定的對(duì)象、順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例例如能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0029]請(qǐng)參見(jiàn)圖1,圖1是本發(fā)明實(shí)施例提供的多線程處理器的線程取指調(diào)度方法的流程示意圖。如圖1所示,本發(fā)明實(shí)施例提供的多線程處理器的線程取指調(diào)度方法可以包括以下內(nèi)容:
[0030]101、為第一線程進(jìn)行取指。
[0031]該實(shí)施例中,第一線程并不特指某一個(gè)特別的線程,可以指代任意一個(gè)線程。
[0032]該實(shí)施例中,取指單元可以采用預(yù)先設(shè)定的策略(例如輪詢或固定優(yōu)先級(jí)的策略)為當(dāng)前的線程進(jìn)行取指,將取到的指令放入該線程的IB中,每次根據(jù)終端指向Cache Line(緩存線)位置的不同取回來(lái)的指令數(shù)目可能有所差異,通常是O?4條。
[0033]102、判斷當(dāng)前取到的指令是否包括第一類(lèi)指令,如果是,執(zhí)行步驟103,否則返回步驟101。
[0034]其中,第一類(lèi)指令為能改變指令流且無(wú)法預(yù)知目標(biāo)地址的指令。
[0035]103、暫停為上述第一線程在上述第一類(lèi)指令之后的取指。
[0036]優(yōu)選地,如果取指單元一次取回多個(gè)指令,其中包括第一類(lèi)指令,則在將第一類(lèi)指令放入該第一線程的IB之后,可不將第一類(lèi)指令之后的其它指令放入該第一線程的IB,第一類(lèi)指令之后的指令可被丟棄處理。
[0037]上述實(shí)施例提供的多線程處理器的線程取指調(diào)度方法可以在為一個(gè)線程取到第一類(lèi)指令之后,暫停對(duì)該線程的取指,這樣可以克服現(xiàn)有技術(shù)中存在的無(wú)效取指的缺點(diǎn),節(jié)省處理器功耗,同時(shí)由于暫停為第一線程取指,也提高了取指單元為其它線程取指的機(jī)會(huì),進(jìn)而提升多線程處理器的處理效率。
[0038]在本發(fā)明的一些實(shí)施例中,如圖2所示,在上述的101之前,該方法還可以包括:
[0039]201、在指令進(jìn)入指令緩存區(qū)(1-Cache)之前,對(duì)指令進(jìn)行預(yù)譯碼,將其中的第一類(lèi)指令打上標(biāo)記。
[0040]需要說(shuō)明的是,具體的,至于在第一類(lèi)指令上打上何種標(biāo)記,可以預(yù)先設(shè)定,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際情況進(jìn)行合適的設(shè)定,在此不予具體的限制。
[0041]這樣,如圖2所示,上述步驟102可具體包括:判斷當(dāng)前取到的指令是否包括帶標(biāo)記的指令,如果是執(zhí)行步驟103,否則返回步驟101。
[0042]在本發(fā)明的一些實(shí)施例中,上述步驟103可以包括:
[0043]將上述第一線程的ready (準(zhǔn)備好)標(biāo)識(shí)置為無(wú)效;和/或
[0044]降低上述第一線程的取指調(diào)度優(yōu)先級(jí)。
[0045]對(duì)于取指單元采用輪詢的策略為各線程取指的情況,將第一線程的ready標(biāo)識(shí)置為無(wú)效之后,則取指單元不會(huì)再為第一線程取指;
[0046]對(duì)于取指單元采用固定優(yōu)先級(jí)的策略為各線程取指的情況,在將第一線程的優(yōu)先級(jí)降低之后,則取指單元?jiǎng)t會(huì)先為其它優(yōu)先級(jí)高的線程進(jìn)行取指,優(yōu)選地,可將第一線程的優(yōu)先級(jí)降至最低級(jí)。
[0047]在本發(fā)明的一些實(shí)施例中,在上述103之后,該方法還可包括:
[0048]202、判斷上述第一類(lèi)指令是否執(zhí)行完畢,如果是,執(zhí)行步驟203,否則返回步驟202。
[0049]203、將第一線程的ready標(biāo)識(shí)置為有效和/或?qū)⑻岣呱鲜龅谝痪€程的取指調(diào)度優(yōu)先級(jí)。
[0050]對(duì)于取指單元采用輪詢的策略為各線程取指的情況,將第一線程的ready標(biāo)識(shí)置為有效之后,則取指單元可以再為第一線程取指;
[0051]對(duì)于取指單元采用固定優(yōu)先級(jí)的策略為各線程取指的情況,在將第一線程的優(yōu)先級(jí)提高之后,則取指單元?jiǎng)t可優(yōu)先為優(yōu)先級(jí)高的第一線程進(jìn)行取指,優(yōu)選地,可將第一線程的優(yōu)先級(jí)恢復(fù)至降低之前的優(yōu)先級(jí),或者將第一線程的優(yōu)先級(jí)提高至最高級(jí)。
[0052]下面通過(guò)具體的實(shí)例來(lái)描述本發(fā)明提供的多線程處理器的線程取指調(diào)度方法:
[0053]ARM中的ISB指令就是本發(fā)明中所述的能改變指令流且無(wú)法預(yù)知目標(biāo)地址的指令,本發(fā)明對(duì)ISB指令調(diào)度的方法如下:
[0054]步驟一:預(yù)譯碼(pre-decode)模塊檢測(cè)到ISB指令,把該指令的標(biāo)識(shí)位(ISB bit)置I (打上標(biāo)記);
[0055]步驟二:取指單元(IFU)中含有兩個(gè)組(group),上面組優(yōu)先級(jí)高,下面的組優(yōu)先級(jí)低,每個(gè)組內(nèi)采用輪詢的方法選取準(zhǔn)備好的線程。在該時(shí)鐘周期選擇了準(zhǔn)備好的線程I ;
[0056]步驟三:在為線程I取指時(shí),發(fā)現(xiàn)了一條ISB指令;
[0057]步驟四:IFU把ISB指令放入該線程I的IB后,該周期不會(huì)再將ISB后續(xù)的指令放入該線程I的IB,并將線程I的ready標(biāo)識(shí)清除(即將ready標(biāo)識(shí)置為無(wú)效),即認(rèn)為該線程I沒(méi)準(zhǔn)備好;
[0058]步驟五:執(zhí)行ISB的模塊(1-Cache維護(hù)模塊)在執(zhí)行完ISB指令后,通知IFU,讓其恢復(fù)線程I的ready標(biāo)識(shí)(即是將線程I的ready標(biāo)識(shí)置為有效);
[0059]步驟六:IFU置位線程I的ready位,且此時(shí)線程I的IB為空,滿足高優(yōu)先級(jí)的條件,進(jìn)入高優(yōu)先級(jí)的組等待IFU為其取指。
[0060]請(qǐng)參考圖3,圖3是本發(fā)明提供的多線程處理器的線程取指調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖。如圖3所示,本發(fā)明提供的多線程處理器的線程取指調(diào)度系統(tǒng)包括:
[0061]取指單元301,用于為第一線程進(jìn)行取指;
[0062]第一判斷單元302,用于判斷當(dāng)前取到的指令是否包括第一類(lèi)指令;其中,第一類(lèi)指令為能改變指令流且無(wú)法預(yù)知目標(biāo)地址的指令;
[0063]取指單元301,還用于當(dāng)?shù)谝慌袛鄦卧?02的判斷結(jié)果為否時(shí),暫停為上述第一線程在上述第一類(lèi)指令之后的取指。
[0064]需要說(shuō)明的是,該實(shí)施例中,第一線程并不特指某一個(gè)特別的線程,可以指代任意一個(gè)線程。
[0065]該實(shí)施例中,取指單元可以采用預(yù)先設(shè)定的策略(例如輪詢或固定優(yōu)先級(jí)的策略)為當(dāng)前的線程進(jìn)行取指,將取到的指令放入該線程的IB中,每次根據(jù)終端指向Cache Line(緩存線)位置的不同取回來(lái)的指令數(shù)目可能有所差異,通常是O?4條。
[0066]優(yōu)選地,如果取指單元一次取回多個(gè)指令,其中包括第一類(lèi)指令,則在將第一類(lèi)指令放入該第一線程的IB之后,可不將第一類(lèi)指令之后的其它指令放入該第一線程的IB,第一類(lèi)指令之后的其它指令可被丟棄處理。
[0067]上述實(shí)施例提供的多線程處理器的線程取指調(diào)度方法可以在為一個(gè)線程取到第一類(lèi)指令之后,暫停對(duì)該線程的取指,這樣可以克服現(xiàn)有技術(shù)中存在的無(wú)效取指的缺點(diǎn),節(jié)省處理器功耗,同時(shí)也提高了取指單元為其它線程取指的機(jī)會(huì)。
[0068]在本發(fā)明的一些實(shí)施例中,如圖4所示,該系統(tǒng)還可包括:
[0069]預(yù)譯碼單元303,用于在指令進(jìn)入指令緩存之前,對(duì)指令進(jìn)行預(yù)譯碼,將其中的第一類(lèi)指令打上標(biāo)記。
[0070]需要說(shuō)明的是,具體的,至于在第一類(lèi)指令上打上何種標(biāo)記,可以預(yù)先設(shè)定,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際情況進(jìn)行合適的設(shè)定,在此不予具體的限制。
[0071]在本發(fā)明的一些實(shí)施例中,第一判斷單元302可具體用于通過(guò)判斷當(dāng)前取到的指令是否包括帶標(biāo)記的指令來(lái)進(jìn)行當(dāng)前取到的指令是否包括第一類(lèi)指令的判斷。
[0072]在本發(fā)明的一些實(shí)施例中,取指單元301可具體采用如下的方法來(lái)實(shí)現(xiàn)暫停對(duì)上述第一線程在上述第一類(lèi)指令之后的取指:
[0073]取指單元301將上述第一線程的準(zhǔn)備好ready標(biāo)識(shí)置為無(wú)效;和/或
[0074]取指單元301降低上述第一線程的取指調(diào)度優(yōu)先級(jí)。
[0075]對(duì)于取指單元采用輪詢的策略為各線程取指的情況,將第一線程的ready標(biāo)識(shí)置為無(wú)效之后,則取指單元不會(huì)再為第一線程取指;
[0076]對(duì)于取指單元采用固定優(yōu)先級(jí)的策略為各線程取指的情況,在將第一線程的優(yōu)先級(jí)降低之后,則取指單元?jiǎng)t會(huì)先為其它優(yōu)先級(jí)高的線程進(jìn)行取指,優(yōu)選地,可將第一線程的優(yōu)先級(jí)降至最低級(jí)。
[0077]在本發(fā)明的一些實(shí)施例中,如圖4所示,該系統(tǒng)還可包括:
[0078]第二判斷單元304,用于判斷上述第一類(lèi)指令是否執(zhí)行完畢;
[0079]取指單元301還可用于當(dāng)?shù)诙袛鄦卧?04的判斷結(jié)果為是時(shí),將上述第一線程的ready標(biāo)識(shí)置為有效和/或提高上述第一線程的取指調(diào)度優(yōu)先級(jí)。
[0080]對(duì)于取指單元采用輪詢的策略為各線程取指的情況,將第一線程的ready標(biāo)識(shí)置為有效之后,則取指單元可以再為第一線程取指;
[0081]對(duì)于取指單元采用固定優(yōu)先級(jí)的策略為各線程取指的情況,在將第一線程的優(yōu)先級(jí)提高之后,則取指單元?jiǎng)t可為優(yōu)先級(jí)高的第一線程進(jìn)行取指,優(yōu)選地,可將第一線程的優(yōu)先級(jí)恢復(fù)至降低之前的優(yōu)先級(jí),或者將第一線程的優(yōu)先級(jí)提高至最高級(jí)。
[0082]本發(fā)明還提供一種多線程處理器,該處理器包括上述實(shí)施例描述的多線程處理器的線程取指調(diào)度系統(tǒng),具體內(nèi)容可參考上述實(shí)施例的描述,在此不予贅述。
[0083]本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:閃存盤(pán)、只讀存儲(chǔ)器(Read-Only Memory,ROM)、隨機(jī)存取器(Random AccessMemory, RAM)、磁盤(pán)或光盤(pán)等。
[0084]以上對(duì)本發(fā)明實(shí)施例所提供的多線程處理器的線程取指調(diào)度方法、系統(tǒng)和多線程處理器進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【權(quán)利要求】
1.一種多線程處理器的線程取指調(diào)度方法,其特征在于,包括: 為第一線程進(jìn)行取指; 判斷當(dāng)前取到的指令是否包括第一類(lèi)指令,如果是,暫停為所述第一線程在所述第一類(lèi)指令之后的取指;所述第一類(lèi)指令為能改變指令流且無(wú)法預(yù)知目標(biāo)地址的指令。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述采用預(yù)先設(shè)置的策略為第一線程進(jìn)行取指之前,所述方法還包括: 在指令進(jìn)入指令緩存之前,對(duì)指令進(jìn)行預(yù)譯碼,將其中的第一類(lèi)指令打上標(biāo)記。
3.根據(jù)權(quán)利要求2所述的方法,所述判斷當(dāng)前取到的指令是否包括第一類(lèi)指令包括: 判斷所述當(dāng)前取到的指令是否包括帶有標(biāo)記的指令。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,所述暫停對(duì)所述第一線程在所述第一類(lèi)指令之后的取指包括:將所述第一線程的準(zhǔn)備好ready標(biāo)識(shí)置為無(wú)效和/或?qū)⒔档退龅谝痪€程的取指調(diào)度優(yōu)先級(jí)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括: 判斷所述第一類(lèi)指令是否執(zhí)行完畢,如果是,將所述第一線程的準(zhǔn)備好ready標(biāo)識(shí)置為有效和/或?qū)⑻岣咚龅谝痪€程的取指調(diào)度優(yōu)先級(jí)。
6.一種多線程處理器的線程取指調(diào)度系統(tǒng),其特征在于,包括: 取指單元,用于為第一線程進(jìn)行取指; 第一判斷單元,用于判斷當(dāng)前取到的指令是否包括第一類(lèi)指令;所述第一類(lèi)指令為能改變指令流且無(wú)法預(yù)知目標(biāo)地址的指令; 所述取指單元,還用于當(dāng)所述第一判斷單元的判斷結(jié)果為否時(shí),暫停為所述第一線程在所述第一類(lèi)指令之后的取指。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 預(yù)譯碼單元,用于在指令進(jìn)入指令緩存之前,對(duì)指令進(jìn)行預(yù)譯碼,將第一類(lèi)指令打上標(biāo)記。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述第一判斷單元具體用于判斷所述當(dāng)前取到的指令是否包括帶有標(biāo)記的指令。
9.根據(jù)權(quán)利要求6至8任一項(xiàng)所述的系統(tǒng),其特征在于,所述取指單元具體用于當(dāng)所述第一判斷單元的判斷結(jié)果為否時(shí),將所述第一線程的準(zhǔn)備好ready標(biāo)識(shí)置為無(wú)效和/或降低所述第一線程的取指調(diào)度優(yōu)先級(jí)。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 第二判斷單元,用于判斷所述第一類(lèi)指令是否執(zhí)行完畢; 所述取指單元還用于當(dāng)所述第二判斷單元的判斷結(jié)果為是,將所述第一線程的準(zhǔn)備好ready標(biāo)識(shí)置為有效和/或提高所述第一線程的取指調(diào)度優(yōu)先級(jí)。
11.一種多線程處理器,其特征在于,所述多線程處理器包括如權(quán)利要求6-10任一項(xiàng)所述的多線程處理器的線程取指調(diào)度系統(tǒng)。
【文檔編號(hào)】G06F9/48GK104298552SQ201310295546
【公開(kāi)日】2015年1月21日 申請(qǐng)日期:2013年7月15日 優(yōu)先權(quán)日:2013年7月15日
【發(fā)明者】李曄, 侯銳, 馮煜晶, 王曦爽 申請(qǐng)人:華為技術(shù)有限公司, 中國(guó)科學(xué)院計(jì)算技術(shù)研究所