一種可控動態(tài)多線程方法及處理器的制造方法
【專利摘要】本發(fā)明公開了一種可控動態(tài)多線程方法及處理器,所述方法是對一個采用流水線結構的處理器,在其指令結構中新增mark,該mark包含二部分信息:mark對應指令所屬的線程以及mark對應指令的優(yōu)先級信息;處理器根據(jù)mark控制其對應指令,并根據(jù)mark中的線程及優(yōu)先級信息發(fā)射并執(zhí)行該指令。所述處理器至少包括一個含有mark的指令系統(tǒng)、一個能夠識別和跟蹤mark的程序執(zhí)行控制單元(Branch)、一個能夠識別mark并進行解碼的指令解碼電路、一個能夠識別和解碼mark的算術運算單元及相應的內存單元。本發(fā)明能夠動態(tài)的調度一個處理器的所有運算硬件資源從而提高處理器的運算能力,且不需要增加很多復雜的硬件。
【專利說明】
-種可控動態(tài)多線程方法及處理器
技術領域
[0001 ] 本發(fā)明設及處理器領域,尤其設及一種可控動態(tài)多線程方法(Dynamic Multi- t虹eading)及處理器。
【背景技術】
[0002] 為了提高處理器的運算能力,很多并行處理技術被開發(fā)出來,如超標量(Super- scalar),流水線(Pipeline).超長寬指令(VLIW),單指令多執(zhí)行(SIMD),等等??墒牵捎谝?個軟件程序的指令處理是順序執(zhí)行的,其執(zhí)行過程中存在的指令及數(shù)據(jù)的依賴性 (dependencies)造成了處理器經(jīng)常的處于等待狀態(tài)因而限制了運些并行處理技術效率的 發(fā)揮。
[0003] 為了克服指令執(zhí)行中的依賴性,一些提高指令發(fā)射效率的技術,如亂序碼(Out- of-Order) , 控制程序預測 (Branch Prediction) 等被開發(fā)出來 ,但是運些技術都有其局限 性。它們或者是硬件非常復雜,或者是效率提高有限而不適合嵌入式系統(tǒng)的應用。一個嵌入 式系統(tǒng),尤其是移動設備,如移動通信,車載設備,穿戴式設備等,對處理器性能的要求不僅 運算能力要高,更要求功耗要低及實時性要強。
[0004] 多線程并行處理器技術(Multi-化reading),因為它可W在同一個處理器中并行 處理2個或多個完全獨立的運算程序,因而可W比較好的解決指令執(zhí)行過程中的控制及數(shù) 據(jù)依賴性所帶來的運行效率限制,其中同步多線程技術(Simultaneous Multi-threading) 及令牌驅動多線程技術(Token Triggered multi-t虹eading,SMT)在一些處理器產(chǎn)品中得 到 了很好的應用,比如Intel的Hyper-Threading, IBM的POWERS , Sun Microsystems的 叫化aSPARC Τ2及MIPS的MT都是采用了SMT技術。San化ridge的SaiKlblasterDSP核采用的是 令牌驅動多線程技術。
[0005] SMT技術雖然能解決程序執(zhí)行過程中的依賴性問題,SMT技術除了需要給每個線程 都有自己的一套執(zhí)行程序所需的寄存器外還要在每級的流水線加上線程跟蹤邏輯,增加共 享資源的尺寸,如指令Cache,化Bs等。其線程跟蹤邏輯不僅要跟蹤線程的行程還要檢查和 判斷該線程是否已執(zhí)行完成。由于會有大量的線程處于執(zhí)行或半執(zhí)行狀態(tài),因而CPU的 化ches及TLB的尺寸必須足夠大W避免不必要的線程之間的化rashing,其硬件的復雜程度 隨著線程數(shù)的增加而大大的增加因而限制了其很難應用于嵌入式處理器及低功耗處理器 的設計。
[0006] 下表是一個典型的SMT多線程程序執(zhí)行過程:
令牌驅動多線程是一種時分多線程,由于在每個時鐘周期內它只能執(zhí)行同一個線程程 序的指令,因而相比SMT它的硬件復雜要簡化很多,但是效率也跟著下降。其特點是: 1. 每個時鐘周期只有一個線程能發(fā)出指令; 2. 所有線程是順序啟動如圖1所示,因而簡化了線程選擇電路; 3. 每個線程都有相同的執(zhí)行指令的時鐘周期,不需要依賴檢查和繞行硬件; 4. 運算結果能保證在下次的線程執(zhí)行之前就已經(jīng)得到。
[0007] 下表給出了令牌驅動多線程的程序執(zhí)行過程:
'^但是由于令牌驅動多線程處理器在規(guī)定的時鐘周期只能執(zhí)行特定的線程操作,因此如I 果在運個時鐘周期,其指定的線程由于指令或數(shù)據(jù)的缺失(missing)或因為依賴性而不能 發(fā)射指令時,該時鐘周期就被浪費了。為了克服令牌驅動多線程運個運個缺陷,一個機會多 線程技術被開發(fā)出來。
[0008] 機會多線程技術允許一個多線程處理器的一個線程在某一個的時鐘周期內如果 沒有有效指令時不必HOLD運個時鐘周期,而是將該時鐘周期讓給別的有有效指令的線程。 即將原來浪費的時鐘周期作為一個"機會"讓給別的線程使用。
[0009] 采用該方法對一個具有多線程處理器來說,其線程不再受每個線程周期只能發(fā)一 次指令的限制,而是可W利用任何"機會"在每個時鐘周期都可W發(fā)射指令只要該時鐘周期 原始設定的線程在該時鐘周期內沒有有效的指令。
[0010] 1.機會多線程技術和令牌驅動多線程技術一樣,它是一種分時多線程技術,每個 時鐘周期只能執(zhí)行一個程序。其可執(zhí)行的線程數(shù)受限于硬件的線程數(shù)。
[0011] 2.機會多線程需要一個指令預測電路,對于一個采用化IW結構的處理器,它需要 對每一個子指令的依賴性進行預測。因此指令預測電路相當復雜。
[0012] 3.機會多線程技術需要一組2維的線程身份(ID)寄存器W用于跟蹤線程指令在 每級流水線的執(zhí)行情況W保證結果數(shù)據(jù)不會被搞混亂。
[0013] 4.實際應用中,采用機會多線程的處理器的每個運算單元必需為每個線程增加 一組2維的完全獨立于其他線程的數(shù)據(jù)寄存器W防止處于半執(zhí)行狀態(tài)的線程之間的數(shù)據(jù) Thr曰shingo
[0014] 5.為了能在每一個處理器的時鐘周期內發(fā)射指令,線程所屬的指令內存也必須 運行在和處理器時鐘周期相同的時鐘頻率W保證線程能及時的讀取指令。由此,多線程的 一個能降低存儲器功耗的特點將不再存在。
[0015] W上分析可W看出采用機會多程序技術的處理器的硬件復雜度要比令牌驅動多 線程技術增加很多,而且為了使每個線程能在每個時鐘周期都能讀取指令,其指令內存的 時鐘頻率必須是和處理器的主振頻率一樣,運樣處理器的功耗會明顯增加。因而機會多線 程技術并不適合應用于低功耗嵌入式處理器設計。
[0016] 圖2是機會多線程的程序執(zhí)行示意圖。
【發(fā)明內容】
[0017] 本發(fā)明所要解決的技術問題是針對【背景技術】中所設及到的缺陷,提供一種可控動 態(tài)多線程方法及處理器。
[001引本發(fā)明為解決上述技術問題采用W下技術方案: 一種可控動態(tài)多線程方法,對一個采用流水線結構且具有I-cache的處理器,在其指 令結構中新增mark,該mark包含二部分信息:mark對應指令所屬的線程W及mark對應指令 的優(yōu)先級信息,所述優(yōu)先級信息用于指明指令的執(zhí)行順序及與其前后指令的相關性;處理 器根據(jù)mark控制其對應指令,按該指令的優(yōu)先級信息和所屬的線程發(fā)射并執(zhí)行該指令。
[0019] 作為本發(fā)明一種可控動態(tài)多線程方法進一步的優(yōu)化方案,所述處理器根據(jù)mark控 制其對應指令、按該指令的優(yōu)先級信息和所屬的線程發(fā)射并執(zhí)行該指令的具體步驟如下: 步驟1),根據(jù)等待被執(zhí)行指令對應mark中的優(yōu)先級信息讀取指令; 步驟2),指令解碼及分配: 處理器的解碼電路將步驟1)中所讀取的指令解碼為mark和各個子指令,處理器的分配 邏輯根據(jù)各個子指令的功能將其分配給不同的運算單元去執(zhí)行; 步驟3),指令執(zhí)行: 對于各個子指令,處理器按照其所屬指令mark中的線程信息讀取相應的寄存器的數(shù) 據(jù),并將執(zhí)行的結果存入相應線程的寄存器; 步驟4),跳轉至步驟1)。
[0020] 根據(jù)具體的硬件實現(xiàn)方法,有時步驟1和2會需要多個時鐘周期,有時只需要1個時 鐘周期,步驟3)則需要n-1個時鐘周期,η為處理器運算單元的流水線級數(shù)。
[0021] 作為本發(fā)明一種可控動態(tài)多線程方法進一步的優(yōu)化方案,所述步驟1)的詳細步驟 如下: 步驟1.1 ),處理器的指令讀取電路檢查I-化Che是否有指令被等待執(zhí)行,即是否存在處 于化lid狀態(tài)的指令; 步驟1.1.1),如果僅存在1個處于化lid狀態(tài)的指令,則讀取該指令; 步驟1.1.2),如果有2個W上的指令處于化1 id狀態(tài),則根據(jù)指令對應的mark檢查哪一 條指令的優(yōu)先級高; 步驟1.1.2.1),如果存在優(yōu)先級高于其他指令的指令,則讀取該指令, 步驟1.1.2.2),如果不存在優(yōu)先級高于其他指令的指令,則判斷是否存在前一步執(zhí)行 的指令線程; 步驟1.1.2.2.1 ),如果存在前一步執(zhí)行的指令線程,讀取和前一步執(zhí)行的指令線程不 同的指令或根據(jù)線程的順序讀取指令; 步驟1.1.2.2.1 ),如果不存在前一步執(zhí)行的指令線程,根據(jù)線程的順序讀取指令。
[0022] 作為本發(fā)明一種可控動態(tài)多線程方法進一步的優(yōu)化方案,所述mark由軟件寫入或 者編譯器在編譯過程中自動寫入。
[0023] 作為本發(fā)明一種可控動態(tài)多線程方法進一步的優(yōu)化方案,所述處理器為多指令發(fā) 射處理器,其每條指令都獨立帶有自己的mark。
[0024] 作為本發(fā)明一種可控動態(tài)多線程方法進一步的優(yōu)化方案,所述處理器為多指令發(fā) 射處理器,多條指令共用一組mark。
[0025] 作為本發(fā)明一種可控動態(tài)多線程方法進一步的優(yōu)化方案,所述處理器為單指令發(fā) 射處理器,其每條指令對應一個mark。
[00%]本發(fā)明還公開了一種基于該可控動態(tài)多線程方法的處理器,至少包含一個mark的 指令系統(tǒng)、一個能夠識別和跟蹤mark的程序執(zhí)行控制單元、一個能夠識別mark并進行解碼 的指令解碼電路、一個能夠識別和解碼mark的算術運算單元及相應的內存單元。
[0027] 本發(fā)明采用W上技術方案與現(xiàn)有技術相比,具有W下技術效果: 1. 不需要復雜的多線程控制電路及復雜的指令有效預測電路就可W高效的調動處理 器的硬件資源,有效的判斷指令的優(yōu)先級及相關性; 2. 根據(jù)指令的優(yōu)先級順序執(zhí)行指令而不用擔屯、因為某些指令或數(shù)據(jù)的missing而造 成硬件資源的浪費和出現(xiàn)運算結果混亂的現(xiàn)象; 3. 有效的提高處理器的硬件資源的利用率,進而降低功耗。
【附圖說明】
[0028] 圖1是一個四線程的令牌驅動多線程線程流程圖; 圖2是機會多線程程序執(zhí)行示意圖; 圖3是帶mark的單指令結構圖; 圖4是多指令帶單個mark指令結構圖; 圖5是多指令帶多mark指令結構圖; 圖6是一個具有6級流水線的多線程執(zhí)行流程圖; 圖7是一個具有軟件可控動態(tài)多線程功能的處理器框圖。
【具體實施方式】
[0029] 下面結合附圖對本發(fā)明的技術方案做進一步的詳細說明: 本發(fā)明是在一個采用多級流水線結構的處理器的指令系統(tǒng)中增加一組對應指令的線 程身份和其優(yōu)先級信息的符號(mark)。處理器的指令系統(tǒng)在讀取(Fetch)指令的同時獲得 執(zhí)行該指令的線程身份W及其優(yōu)先級的信息的mark。處理器的指令控制運算系統(tǒng)(Branch) 根據(jù)該mark的信息來安排處理器的硬件資源W及執(zhí)行順序。運個mark將一直跟隨著指令 執(zhí)行的每一步w便于跟蹤該指令的執(zhí)行步驟,并根據(jù)優(yōu)先級信息指示該條指令與它前后的 指令/數(shù)據(jù)的依賴性W及優(yōu)先執(zhí)行的順序。
[0030] 本發(fā)明的mark的內容可W是在程序員編程時根據(jù)應用系統(tǒng)的要求而設定執(zhí)行該 程序指令的線程及執(zhí)行優(yōu)先級,也可W是編譯器在編譯過程中自動設定線程并根據(jù)程序的 運算功能在判別該指令與其前后指令和數(shù)據(jù)的相關性來設定其優(yōu)先級。
[0031] 采用軟件設置程序的執(zhí)行線程并提供該程序中每條指令的優(yōu)先級和與其前后執(zhí) 行指令的相關性的信息附著在每一條指令上作為一個識別符(mark)。處理器硬件只需能夠 識別運些mark的信息就可W實現(xiàn)動態(tài)的調動處理器的硬件資源并高效的執(zhí)行多線程的指 令運行。
[0032] 采用軟件設置和管理多線程處理器的程序的執(zhí)行線程還可W使得同時運行的線 程數(shù)不受處理器的發(fā)射指令數(shù)及流水線級數(shù)的限制。也可W避免因程序線程少于流水線而 造成的時鐘周期/硬件資源浪費的現(xiàn)象。
[0033] 為實現(xiàn)軟件可控動態(tài)多線程方法,其處理器的指令系統(tǒng)除了通常執(zhí)行程序的指令 字外還必須附加一組包含有線程號及優(yōu)先級信息的識別符作為一個mark附加在指令字中, 如圖3所示。圖中的mark是一個至少2位的2進制數(shù)字。
[0034] W-個3位數(shù)的mark為例: 假設mark= "000";表示執(zhí)行該指令的線程是0,優(yōu)先級是0(0代表低優(yōu)先級) 假設mark="l〇r;表示執(zhí)行該指令的線程是1,優(yōu)先級是1(代表高優(yōu)先級) Mark的具體數(shù)值可W是程序員在編程時根據(jù)系統(tǒng)的要求設定該段程序的執(zhí)行線程及 優(yōu)先級,也可W是編譯系統(tǒng)在編譯過程中根據(jù)程序的功能來自動給出。
[0035] 本發(fā)明的軟件可控動態(tài)多線程方法不僅可W用于單指令發(fā)射的處理器,也可W用 于多指令發(fā)射的處理器。
[0036] 對于一個多指令發(fā)射的處理器,其多發(fā)射指令可W共用一個mark信息,也可W每 條指令帶有一個自己的mark信息。
[0037] 圖3是一個單mark單指令的指令結構。
[003引圖4是一個單mark多指令的指令結構;其中指令字l,2,,n必須是同一個線程程序 中的不同指令。單mark指令字的結構只能執(zhí)行時分多線程處理。
[0039] 圖5給出的是多mark、多指令字的指令結構,圖中,Μ即代表Mark的意思;由于每個 指令字都有其自己的mark,所W運些指令可W是不同線程的程序的指令。運種多mark的指 令結構可適用于同步多線程處理。
[0040] 本發(fā)明的動態(tài)多線程方法的執(zhí)行步驟如下: 步驟1(或時鐘周期0)讀取指令:處理器的I-化Che讀取控制電路檢查是否有指令等待 執(zhí)行(Valid),如果有2個W上的指令Valid,(-個多線程的處理器的I-化che應該至少有2 個或W上的Bank),則檢查哪一條指令的優(yōu)先級高,如果有就讀取優(yōu)先級高的指令,如果優(yōu) 先級一樣則讀取和前一步執(zhí)行的指令線程不同的指令或根據(jù)線程的順序讀取指令; 步驟2(或時鐘周期1)指令解碼及分配:解碼電路解碼指令1,指令2,指令3,分配邏輯再 根據(jù)解碼指令的功能分配給不同的運算單元去執(zhí)行; 步驟3(或時鐘周期2~n+1)指令執(zhí)行:處理器按照mark中的線程信息讀取相應的寄存 器的數(shù)據(jù),并將執(zhí)行的結果存入相應線程的寄存器;W指令控制電路為例,根據(jù)mark的線程 信息按相應的PC寄存器內容順序執(zhí)行程序指令,并根據(jù)指令讀取相應的線程的其他功能寄 存器(如loop counter, jump, condition等)數(shù)據(jù),并將執(zhí)行指令的結果再存入相應的線 程的運些寄存器; 運里時鐘周期2~n+1中的η數(shù)值決定于處理器運算單元的流水線級數(shù)。如果是一個4級 流水的結構,運個η就等于4,如果是6級流水線結構,η就等于6; 步驟3的時鐘周期n+1執(zhí)行完后就再回到步驟1。
[0041] 由于本發(fā)明中的單mark多指令的動態(tài)多線程結構是一個時分多線程結構,因此當 當前程序運行到步驟2(時鐘周期1)時,處理器的I-化Che讀取控制電路在重復步驟1,即讀 取控制電路在檢查下一步的出現(xiàn)的指令的有效性(Valid)并根據(jù)Valid來決定讀取哪一個 線程的程序指令。
[0042] 當當前的程序執(zhí)行到步驟3時(時鐘周期2),I-Cache讀取控制電路仍然重覆步驟 1,根據(jù)指令的Valid信息讀取第Ξ組指令;而處理器的解碼分配電路則重覆執(zhí)行步驟2,解 碼和分配程序2的指令;如此周而復始。
[0043] 圖6給出了一個具有6級流水線(運算單元)結構的動態(tài)多線程的執(zhí)行流程示意。圖 中: T-線程; Y-線程號,y=〇,1,2,,,n;用于代表第y線程T;比如Τ(2)表示線程2; Υ的值是由指令字中的mark給出; i-相同線程在同一個指令周期內的第i次發(fā)射;在運個例子中一個指令周期等于6個 時鐘周期; J-流水線級數(shù); 比如T(32,4)代表線程3的第2次發(fā)射及其在流水線第4級時的狀態(tài)。
[0044] 運里的流程圖的操作過程相當上面所述的步驟3)。其中η等于6,即處理器已經(jīng)讀 取了指令并將指令解碼和分配給了相應的處理單元。相應的處理單元已經(jīng)得到了線程和優(yōu) 先級的?胃息。
[0045] -個動態(tài)多線程的操作流程是:(假設程序0,1,2,,,5都是獨立的線程) 在時鐘周期零時C0(運里的時鐘周期0相當于前述的指令周期2):處理器的處理單元已 經(jīng)讀取指令并解碼出指令字的mark部分得到當前指令的線程Υ,假設Υ=0,即線程0的程序的 指令,該指令就被授予線程Τ(Οο,ο)并從第零級流水線開始執(zhí)行; 在時鐘周期一時C1:處理器讀取下一條指令并解碼出mark得到Υ=1,說明該指令是線程 1的程序的指令,該指令被授予線程Τ(1〇,〇),并從第一級流水線開始執(zhí)行,而運時前條指令 已經(jīng)流水到第1級流水線,所W狀態(tài)變成T(Oo,i); 在時鐘周期二時C2:正常情況下處理器應該讀取到線程2程序的指令即Υ=2,但是由于 某種原因,線程2的程序的指令missing,而出現(xiàn)線程0的程序的指令已經(jīng)準備好,運時處理 器會讀到指令的mark并解碼得到Υ=0如果解碼還得到優(yōu)先級等于1(即不需要等待線程0的 程序前一條指令的運算結果),運時處理器就開始授權線程Τ(化,0)并開始執(zhí)行該指令,順序 的,前面2條指令的狀態(tài)變成,Τ(Οο,2)和Τ( 1〇, 1); 在時鐘周期Ξ時C3:處理器讀取指令并解碼mark得到Υ=3,即授予該指令線程T(3g,〇)并 開始執(zhí)行。運時前面的指令執(zhí)行狀態(tài)順序變成T(〇G,3),T(U2)及T(0l,l); 在時鐘周期四時C4:處理器讀取指令并解碼mark得到Υ=4,即授予該指令線程Τ(4〇,〇)并 開始執(zhí)行。運時前面的指令執(zhí)行狀態(tài)順序變成了(0(),4),了(1(),3),1'(〇1,2)及1'(3〇,1); 在時鐘周期五時巧:處理器讀取指令并解碼mark得到Υ=5,即授予該指令線程T(5g,〇)并 開始執(zhí)行。運時前面的指令執(zhí)行狀態(tài)順序變成T(0g,5),T(1(),4),T(0i,3),T(3(),2^T(4(),2);S 此,一個指令周期結束,指令Τ(0〇)的運算結果存入相應的寄存器。
[0046] 從W上分析可W看出,采用軟件控制動態(tài)多線程技術,對于處理器來說只需跟蹤 每條指令的T(Yi,j)便能夠有效的調動硬件資源。而多線程的設置完全可W從系統(tǒng)的要求出 發(fā)靈活的調動。
[0047] 圖7是一個化rvard結構的,采用了軟件設置線程的動態(tài)可控的多線程處理器邏輯 框圖。圖中的處理器的指令結構是一個單marks指令字發(fā)射結構。從圖中可W看到處理器 在指令字結構中增加幾個比特的mark位外其他部分和一個典型的處理器結構幾乎完全一 樣。Mark的信息需要傳送給所有的運算單元。指令控制單元根據(jù)mark的線程及優(yōu)先級信息 控制指令的讀取及控制和跟蹤多線程的執(zhí)行狀態(tài),算術運算單元則是利用mark的信息來確 保該指令的運算結果不會被搞混亂。
[004引本技術領域技術人員可W理解的是,除非另外定義,運里使用的所有術語(包括技 術術語和科學術語)具有與本發(fā)明所屬領域中的普通技術人員的一般理解相同的意義。還 應該理解的是,諸如通用字典中定義的那些術語應該被理解為具有與現(xiàn)有技術的上下文中 的意義一致的意義,并且除非像運里一樣定義,不會用理想化或過于正式的含義來解釋。 [0049] W上所述的【具體實施方式】,對本發(fā)明的目的、技術方案和有益效果進行了進一步 詳細說明,所應理解的是,W上所述僅為本發(fā)明的【具體實施方式】而已,并不用于限制本發(fā) 明,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明 的保護范圍之內。
【主權項】
1. 一種可控動態(tài)多線程方法,其特征在于,對一個采用流水線結構且具有I-cache的處 理器,在其指令結構中新增mark,該mark包含二部分信息:mark對應指令所屬的線程以及 mark對應指令的優(yōu)先級信息,所述優(yōu)先級信息用于指明指令的執(zhí)行順序及與其前后指令的 相關性(dependencies);處理器根據(jù)mark控制其對應指令,按該指令的優(yōu)先級信息和所屬 的線程發(fā)射并執(zhí)行該指令。2. 根據(jù)權利要求1所述的可控動態(tài)多線程方法,其特征在于,所述處理器根據(jù)mark控制 其對應指令、按該指令的優(yōu)先級信息和所屬的線程發(fā)射并執(zhí)行該指令的具體步驟如下: 步驟1 ),根據(jù)等待被執(zhí)行指令對應mark中的優(yōu)先級信息讀取指令; 步驟2),指令解碼及分配: 處理器的解碼電路將步驟1)中所讀取的指令解碼為mark和各個子指令,處理器的分配 邏輯根據(jù)各個子指令的功能將其分配給不同的運算單元去執(zhí)行; 步驟3),指令執(zhí)行: 對于各個子指令,處理器按照其所屬指令mark中的線程信息讀取相應的寄存器的數(shù) 據(jù),并將執(zhí)行的結果存入相應線程的寄存器; 步驟4),跳轉至步驟1)。3. 根據(jù)權利要求2所述的可控動態(tài)多線程方法,其特征在于,所述步驟1)的詳細步驟如 下: 步驟1.1),處理器的指令讀取電路檢查I-Cache是否有指令被等待執(zhí)行,即是否存在處 于Valid狀態(tài)的指令; 步驟1.1.1),如果僅存在1個處于Valid狀態(tài)的指令,則讀取該指令; 步驟1.1.2),如果有2個以上的指令處于Valid狀態(tài),則根據(jù)指令對應的mark檢查哪一 條指令的優(yōu)先級高; 步驟1.1.2.1 ),如果存在優(yōu)先級高于其他指令的指令,則讀取該指令, 步驟1.1.2.2),如果不存在優(yōu)先級高于其他指令的指令,則判斷是否存在前一步執(zhí)行 的指令線程; 步驟1.1.2.2.1),如果存在前一步執(zhí)行的指令線程,讀取和前一步執(zhí)行的指令線程不 同的指令或根據(jù)線程的順序讀取指令; 步驟1.1.2.2.1 ),如果不存在前一步執(zhí)行的指令線程,根據(jù)線程的順序讀取指令。4. 根據(jù)權利要求1所述的可控動態(tài)多線程方法,其特征在于,所述mark由軟件寫入或者 編譯器在編譯過程中自動寫入。5. 根據(jù)權利要求1所述的可控動態(tài)多線程方法,其特征在于,所述處理器為多指令發(fā)射 處理器,其每條指令都獨立帶有自己的mark。6. 根據(jù)權利要求1所述的可控動態(tài)多線程方法,其特征在于,所述處理器為多指令發(fā)射 處理器,多條指令共用一組mark。7. 根據(jù)權利要求1所述的可控動態(tài)多線程方法,其特征在于,所述處理器為單指令發(fā)射 處理器,其每條指令對應一個mark。8. 基于權利要求1所述的可控動態(tài)多線程方法的處理器,其特征在于,至少包含一個帶 mar k的指令系統(tǒng)、一個能夠識別和跟蹤mar k的程序執(zhí)行控制單元、一個能夠識別mar k并進 行解碼的指令解碼電路、一個能夠識別和解碼mark的算術運算單元及相應的內存單元。
【文檔編號】G06F9/38GK105824605SQ201610272367
【公開日】2016年8月3日
【申請日】2016年4月28日
【發(fā)明人】王生洪
【申請人】王生洪