基于通用單元的高性能處理器系統(tǒng)和方法【專(zhuān)利摘要】本發(fā)明提供了一種基于通用單元的高性能處理器系統(tǒng)和方法,可以根據(jù)需要被同時(shí)配置為多種不同的處理器結(jié)構(gòu);能在處理器核執(zhí)行指令前,將所述指令填充到所述處理器核能直接訪(fǎng)問(wèn)的指令讀緩沖中,并由指令讀緩沖主動(dòng)向處理器核輸出指令供執(zhí)行,達(dá)到極高的緩存命中率?!緦?zhuān)利說(shuō)明】基于通用單元的高性能處理器系統(tǒng)和方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及計(jì)算機(jī),通訊及集成電路領(lǐng)域?!?br>背景技術(shù):
】[0002]傳統(tǒng)通用處理器(CPU)和數(shù)字信號(hào)處理器(DSP)在功能上具有很高的靈活性,只需要通過(guò)更新相應(yīng)的應(yīng)用程序就可以面向不同的應(yīng)用,滿(mǎn)足用戶(hù)的需求??墒怯捎谕ㄓ锰幚砥鬟\(yùn)算資源有限,對(duì)流數(shù)據(jù)的處理能力不足,吞吐率不高,限制了它的應(yīng)用。即使采用多核結(jié)構(gòu),其運(yùn)算資源仍舊是個(gè)限制,同時(shí)其并行度受到應(yīng)用程序的限制,運(yùn)算資源的分配也受到限制,吞吐率仍不理想。傳統(tǒng)多核處理器集成了多個(gè)并行執(zhí)行程序的處理器核以提高芯片性能。對(duì)于傳統(tǒng)多核處理器,需要有并行編程的思想才有可能充分利用資源。然而操作系統(tǒng)對(duì)資源的分配和管理并沒(méi)有本質(zhì)的改變,多是以對(duì)稱(chēng)的方式進(jìn)行平均分配。同通用處理器相比,數(shù)字信號(hào)處理器在運(yùn)算資源上有所優(yōu)化,增加了部分運(yùn)算單元,可是運(yùn)算資源仍然有限。因此,如何進(jìn)一步提高處理器的并行度,特別是根據(jù)程序執(zhí)行情況動(dòng)態(tài)調(diào)整處理器運(yùn)算資源的使用情況,使之更合理地分配,是提高處理器性能的關(guān)鍵問(wèn)題之一。[0003]現(xiàn)有的處理器體系結(jié)構(gòu)普遍采用緩存將更低級(jí)存儲(chǔ)器中的部分內(nèi)容復(fù)制在其中,使這些內(nèi)容能被更高級(jí)存儲(chǔ)器或處理器核快速存取,以保證流水線(xiàn)的持續(xù)運(yùn)行?;镜木彺娼Y(jié)構(gòu)通常在緩存缺失之后,才將低級(jí)存儲(chǔ)媒介中的內(nèi)容填充到緩存中,使得流水線(xiàn)不得不暫停以等待缺失部分被填充到緩存中。一些新的緩存結(jié)構(gòu),如:犧牲緩存、跟蹤緩存以及預(yù)取等都是基于上述基本緩存結(jié)構(gòu)并改善上述結(jié)構(gòu)。然而,隨著日漸擴(kuò)大的處理器/存儲(chǔ)器速度鴻溝,現(xiàn)行體系結(jié)構(gòu),特別是多種緩存缺失,已成為是制約現(xiàn)代處理器性能提升的最嚴(yán)重瓶頸。[0004]現(xiàn)有的處理器體系結(jié)構(gòu)在執(zhí)行操作時(shí),通常先用專(zhuān)門(mén)的數(shù)據(jù)讀取指令將操作數(shù)從存儲(chǔ)器中讀?。╨oad)到寄存器中,再送到運(yùn)算單元執(zhí)行相應(yīng)操作;執(zhí)行完畢后,先將執(zhí)行結(jié)果保存在寄存器中,再用專(zhuān)門(mén)的數(shù)據(jù)存儲(chǔ)指令將寄存器中的數(shù)據(jù)存儲(chǔ)(store)到存儲(chǔ)器中。根據(jù)統(tǒng)計(jì),在傳統(tǒng)處理器的程序中,數(shù)據(jù)讀取指令和數(shù)據(jù)存儲(chǔ)指令占程序中指令總數(shù)30%左右。由于數(shù)據(jù)讀取指令和數(shù)據(jù)存儲(chǔ)指令本身并不涉及算術(shù)邏輯運(yùn)算,因此這類(lèi)指令的比重越大,處理器運(yùn)算單元的利用率越低,處理器的運(yùn)算能力越無(wú)法得到充分的發(fā)揮。此夕卜,分支指令本身也不涉及算術(shù)邏輯運(yùn)算,且這類(lèi)指令占程序中指令總數(shù)16%左右。如果能夠隱藏?cái)?shù)據(jù)數(shù)據(jù)讀取指令、數(shù)據(jù)存儲(chǔ)指令和分支指令,使之不占據(jù)單獨(dú)的指令周期,就能提高處理器的指令執(zhí)行效率。[0005]現(xiàn)有的圖像處理器(GPU)有多個(gè)車(chē)道(lane),每個(gè)車(chē)道能針對(duì)相同或不同的數(shù)據(jù)執(zhí)行相同的指令,但由于無(wú)法同時(shí)執(zhí)行不同的指令,限制了GPU的效率;而多核處理器中的各個(gè)處理器核雖然能同時(shí)執(zhí)行不同的指令,但處理器核的數(shù)目有限,且難以擴(kuò)展。[0006]本發(fā)明公開(kāi)了全新的處理器系統(tǒng)的體系結(jié)構(gòu),從根本上解決上述所有問(wèn)題?!?br/>發(fā)明內(nèi)容】[0007]本發(fā)明提出了一種基于通用單元的高性能處理器系統(tǒng),其特征在于,包括指令存儲(chǔ)器和多個(gè)車(chē)道;其中,所述指令存儲(chǔ)器用以存儲(chǔ)指令;和每個(gè)所述車(chē)道進(jìn)一步包括:執(zhí)行單元,所述執(zhí)行單元用以執(zhí)行指令;寄存器堆,所述寄存器堆用以存儲(chǔ)操作數(shù);指令讀緩沖,所述指令讀緩沖主動(dòng)向處理器輸出指令供執(zhí)行。[0008]可選的,多個(gè)所述指令讀緩沖同時(shí)向?qū)?yīng)的執(zhí)行單元輸出多條指令;或一個(gè)所述指令讀緩沖同時(shí)向?qū)?yīng)的執(zhí)行單元輸出多條指令;或所述指令讀緩沖和指令存儲(chǔ)器同時(shí)向所述指令讀緩沖對(duì)應(yīng)的執(zhí)行單元輸出多條指令。[0009]可選的,所述高性能處理器系統(tǒng)還包括:至少一個(gè)循跡器;每個(gè)所述循跡器前行到至少一個(gè)執(zhí)行單元當(dāng)前正在執(zhí)行的指令之后的第一個(gè)分支指令,并輸出這條或這些分支指令的下一指令的地址和目標(biāo)指令的地址;并當(dāng)所述下一指令或目標(biāo)指令尚未存儲(chǔ)在指令讀緩沖中時(shí),控制指令存儲(chǔ)器向指令讀緩沖填充所述下一指令或目標(biāo)指令。[0010]可選的,每個(gè)指令讀緩沖中的每一條指令對(duì)應(yīng)一個(gè)令牌傳遞器,所述令牌傳遞器用于傳遞令牌;所述指令讀緩沖主動(dòng)向執(zhí)行單元輸出令牌所在的令牌傳遞器對(duì)應(yīng)的指令供處理器核執(zhí)行。[0011]可選的,所述高性能處理器系統(tǒng)還包括:預(yù)處理器,所述預(yù)處理器對(duì)尚未送往執(zhí)行單元的指令進(jìn)行預(yù)處理;和所述指令讀緩沖主動(dòng)向預(yù)處理器輸出令牌所在的令牌傳遞器對(duì)應(yīng)的指令之后的至少一條指令。[0012]可選的,通過(guò)將所述高性能處理器系統(tǒng)配置為列相關(guān),使得不同的指令讀緩沖根據(jù)各自相應(yīng)的執(zhí)行單元執(zhí)行指令的結(jié)果輸出相應(yīng)的指令。[0013]可選的,通過(guò)將所述高性能處理器系統(tǒng)配置為行相關(guān)或?qū)窍嚓P(guān),使得部分或全部指令讀緩沖根據(jù)某個(gè)指令讀緩沖中的令牌位置輸出相應(yīng)的指令。[0014]可選的,對(duì)于不同的指令讀緩沖,令牌傳遞器同步傳遞令牌。[0015]可選的,所述高性能處理器系統(tǒng)還包括:可配置的車(chē)道間總線(xiàn),所述車(chē)道間總線(xiàn)用以根據(jù)配置在不同車(chē)道間傳輸數(shù)據(jù)或執(zhí)行結(jié)果。[0016]可選的,通過(guò)對(duì)至少一個(gè)車(chē)道進(jìn)行配置,實(shí)現(xiàn)單指令流單數(shù)據(jù)流模式、單指令流多數(shù)據(jù)流模式、超級(jí)單指令流多數(shù)據(jù)流模式、多指令流單數(shù)據(jù)流操作模式、多指令流多數(shù)據(jù)流模式、指令級(jí)并行模式、軟連線(xiàn)邏輯模式、循環(huán)指令模式、單車(chē)道多線(xiàn)程操作模式、多車(chē)道多線(xiàn)程操作模式和同時(shí)多線(xiàn)程模式中的至少一種。[0017]可選的,所述指令級(jí)并行模式中的單周期最大指令發(fā)射數(shù)可以通過(guò)配置改變,實(shí)現(xiàn)自適應(yīng)的發(fā)射數(shù)目配置。[0018]可選的,所述高性能處理器系統(tǒng)還包括:可配置的相關(guān)性檢測(cè)模塊;所述相關(guān)性檢測(cè)模塊用以確定一次發(fā)射的指令中能同時(shí)執(zhí)行的指令的位置和數(shù)目,并確定令牌傳遞的距離。[0019]可選的,通過(guò)對(duì)相關(guān)性檢測(cè)模塊的配置,實(shí)現(xiàn)對(duì)車(chē)道的隔離。[0020]可選的,通過(guò)配置,同時(shí)對(duì)多個(gè)寄存器堆寫(xiě)入同樣的操作數(shù)。[0021]可選的,所述高性能處理器系統(tǒng)還包括:片上調(diào)度模塊;所述片上調(diào)度模塊根據(jù)通過(guò)配置,實(shí)時(shí)改變程序所需車(chē)道的數(shù)目和模式。[0022]可選的,所述高性能處理器系統(tǒng)還包括:轉(zhuǎn)換器,所述轉(zhuǎn)換器將不同指令集的指令轉(zhuǎn)換為一種指令集的指令。[0023]本發(fā)明還提出了一種基于通用單元的高性能處理器方法,其特征在于,每個(gè)執(zhí)行單元都有相應(yīng)的指令讀緩沖;且由多個(gè)指令讀緩沖同時(shí)向?qū)?yīng)的執(zhí)行單元輸出多條指令;或由一個(gè)指令讀緩沖同時(shí)向?qū)?yīng)的執(zhí)行單元輸出多條指令;或由指令讀緩沖和指令存儲(chǔ)器同時(shí)向所述指令讀緩沖對(duì)應(yīng)的執(zhí)行單元輸出多條指令。[0024]可選的,所述高性能處理器方法還包括:在執(zhí)行單元執(zhí)行到分支指令之前,提前將所述分支指令的下一指令和目標(biāo)指令填充到指令讀緩沖中。[0025]可選的,指令讀緩沖根據(jù)處理器核對(duì)指令的執(zhí)行結(jié)果傳遞令牌,并向處理器核輸出所述令牌對(duì)應(yīng)的指令供執(zhí)行。[0026]可選的,對(duì)令牌所在的令牌傳遞器對(duì)應(yīng)的指令之后的至少一條指令進(jìn)行預(yù)處理。[0027]可選的,通過(guò)將所述高性能處理器系統(tǒng)配置為列相關(guān),使得不同的指令讀緩沖根據(jù)各自相應(yīng)的執(zhí)行單元執(zhí)行指令的結(jié)果輸出相應(yīng)的指令;或通過(guò)將所述高性能處理器系統(tǒng)配置為行相關(guān)或?qū)窍嚓P(guān),使得部分或全部指令讀緩沖根據(jù)某個(gè)指令讀緩沖中的令牌位置輸出相應(yīng)的指令。[0028]可選的,通過(guò)對(duì)至少一個(gè)車(chē)道進(jìn)行配置,實(shí)現(xiàn)單指令流單數(shù)據(jù)流模式、單指令流多數(shù)據(jù)流模式、超級(jí)單指令流多數(shù)據(jù)流模式、多指令流單數(shù)據(jù)流操作模式、多指令流多數(shù)據(jù)流模式、指令級(jí)并行模式、軟連線(xiàn)邏輯模式、循環(huán)指令模式、單車(chē)道多線(xiàn)程操作模式、多車(chē)道多線(xiàn)程操作模式和同時(shí)多線(xiàn)程模式中的至少一種。[0029]可選的,所述指令級(jí)并行模式中的單周期最大指令發(fā)射數(shù)可以通過(guò)配置改變,實(shí)現(xiàn)自適應(yīng)的發(fā)射數(shù)目配置。[0030]可選的,通過(guò)相關(guān)性檢測(cè),確定一次發(fā)射的指令中能同時(shí)執(zhí)行的指令的位置和數(shù)目,并確定令牌傳遞的距離;和通過(guò)對(duì)相關(guān)性檢測(cè)模塊的配置,實(shí)現(xiàn)對(duì)車(chē)道的隔離。[0031]可選的,按需要為可開(kāi)行執(zhí)行的循環(huán)指令段分配多條車(chē)道將循環(huán)展開(kāi),并行執(zhí)行以減少循環(huán)次數(shù)。[0032]可選的,在不同的車(chē)道之間或同一車(chē)道的不同線(xiàn)程之間被配置成不同的模式運(yùn)行;根據(jù)事先設(shè)定的程序優(yōu)先權(quán)及程序?qū)Y源的需求,對(duì)車(chē)道與線(xiàn)程資源進(jìn)行實(shí)時(shí)動(dòng)態(tài)調(diào)度。[0033]可選的,根據(jù)線(xiàn)程資源分配表與程序當(dāng)時(shí)對(duì)資源的需求及程序的準(zhǔn)備狀態(tài),動(dòng)態(tài)分配線(xiàn)程資源給不同程序。[0034]可選的,將不同指令集的指令轉(zhuǎn)換為車(chē)道中執(zhí)行單元能夠執(zhí)行的一種指令集的指令之后,再由執(zhí)行單元執(zhí)行。[0035]可選的,在超級(jí)單指令多數(shù)據(jù)流模式中,多條車(chē)道執(zhí)行同一個(gè)程序,每一條車(chē)道都有自己獨(dú)立的分支判斷機(jī)制與指令尋址機(jī)制,可以獨(dú)立執(zhí)行同一程序中的不同段或不同分支。[0036]可選的,所述系統(tǒng)進(jìn)一步包括:復(fù)數(shù)個(gè)車(chē)道對(duì)應(yīng)一個(gè)循跡器;所述復(fù)數(shù)個(gè)車(chē)道中有一個(gè)車(chē)道為主動(dòng)車(chē)道,其余車(chē)道為從動(dòng)車(chē)道;所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖中的內(nèi)容相同;所述循跡器的讀指針前行到至少所述復(fù)數(shù)個(gè)車(chē)道中的一個(gè)的執(zhí)行單元當(dāng)前正在執(zhí)行的指令之后第一條指令,并輸出從所述第一條指令開(kāi)始的復(fù)數(shù)條指令中的分支指令的目標(biāo)指令的地址;當(dāng)所述第一條指令或所述目標(biāo)指令尚未存儲(chǔ)在所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖中時(shí),控制指令存儲(chǔ)器向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖同時(shí)填充所述所述第一條指令或所述目標(biāo)指令;控制所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖分別輸出從所述第一條指令開(kāi)始的復(fù)數(shù)條指令。[0037]可選的,在所述系統(tǒng)中,由所述復(fù)數(shù)個(gè)車(chē)道之間的相關(guān)性檢測(cè)模塊對(duì)所述復(fù)數(shù)條指令進(jìn)行相關(guān)性檢測(cè),并根據(jù)相關(guān)性檢測(cè)結(jié)果確定所述循跡器讀指針的增量以更新讀指針,以及根據(jù)相關(guān)性檢測(cè)結(jié)果由處理器核執(zhí)行所述復(fù)數(shù)條指令中的部分或全部。[0038]可選的,在所述系統(tǒng)中,由所述循跡器向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖輸出所述第一條指令地址及其下塊指令地址,以控制所述復(fù)數(shù)個(gè)車(chē)道中的相應(yīng)車(chē)道的指令讀緩沖輸出從所述第一條指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令到相應(yīng)車(chē)道執(zhí)行;所述循跡器還向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖輸出從所述第一條指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令中所有分支指令的目標(biāo)指令地址及其下塊指令地址,分別控制所述復(fù)數(shù)個(gè)車(chē)道中的相應(yīng)車(chē)道的指令讀緩沖輸出從每個(gè)目標(biāo)指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令到相應(yīng)車(chē)道執(zhí)行。[0039]可選的,在所述系統(tǒng)中,所述主動(dòng)車(chē)道的指令讀緩沖根據(jù)接收到所述第一條指令地址,將相應(yīng)的鋸齒字線(xiàn)設(shè)為有效,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以輸出所述第一條指令開(kāi)始直到第一條分支指令,并在所述鋸齒字線(xiàn)上的有效信號(hào)到達(dá)所述第一條分支指令時(shí),被發(fā)射到目標(biāo)總線(xiàn)上,并所述從動(dòng)車(chē)道上由根據(jù)目標(biāo)指令地址確定的指令塊上的鋸齒總線(xiàn)接收,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以繼續(xù)輸出相應(yīng)指令;在上述過(guò)程中,當(dāng)所述鋸齒字線(xiàn)上的有效信號(hào)到達(dá)指令塊邊界時(shí),被發(fā)射到總線(xiàn)上,并由根據(jù)下塊指令地址確定的指令塊上的鋸齒總線(xiàn)接收,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以繼續(xù)輸出相應(yīng)指令。[0040]可選的,在所述系統(tǒng)中,執(zhí)行同一分支路徑的車(chē)道構(gòu)成一路(way),各路車(chē)道中執(zhí)行對(duì)應(yīng)指令的車(chē)道構(gòu)成一槽(slot);由相關(guān)性檢測(cè)模塊對(duì)從所述第一條指令開(kāi)始的各路車(chē)道分別進(jìn)行相關(guān)性檢測(cè),并根據(jù)各路相關(guān)性檢測(cè)結(jié)果產(chǎn)生各路相應(yīng)的讀指針增量,以及根據(jù)各路相關(guān)性檢測(cè)結(jié)果由相應(yīng)路的執(zhí)行單元執(zhí)行相應(yīng)復(fù)數(shù)條指令中的部分或全部;根據(jù)各路中分支指令的執(zhí)行結(jié)果選擇這些路中一路的執(zhí)行單元繼續(xù)執(zhí)行,并終止其余路的執(zhí)行單元的執(zhí)行;根據(jù)各路中分支指令的執(zhí)行結(jié)果選擇這些路中一路對(duì)應(yīng)的指令地址及讀指針增量更新循跡器讀指針。[0041]可選的,在所述系統(tǒng)中,可以通過(guò)對(duì)相關(guān)性檢測(cè)模塊配置改變最大發(fā)射數(shù)。[0042]可選的,所述系統(tǒng)中的每個(gè)車(chē)道還包括數(shù)據(jù)讀緩沖和數(shù)據(jù)引擎;所述數(shù)據(jù)引擎將指令讀緩沖中數(shù)據(jù)讀取指令可能用到的數(shù)據(jù)事先填充到數(shù)據(jù)讀緩沖中。[0043]可選的,在所述系統(tǒng)中,所述數(shù)據(jù)讀緩沖的表項(xiàng)與指令讀緩沖中的表項(xiàng)一一對(duì)應(yīng),可以直接由數(shù)據(jù)讀取指令在指令讀緩沖中的位置信息直接在數(shù)據(jù)讀緩沖中找到該數(shù)據(jù)讀取指令對(duì)應(yīng)的數(shù)據(jù);或所述數(shù)據(jù)讀緩沖的表項(xiàng)數(shù)目少于指令讀緩沖的表項(xiàng)數(shù)目,且指令讀緩沖的每個(gè)表項(xiàng)包含一個(gè)指針;可以數(shù)據(jù)讀取指令所在的指令讀緩沖表項(xiàng)中的所述指針經(jīng)譯碼器譯碼后確定對(duì)應(yīng)數(shù)據(jù)在數(shù)據(jù)讀緩沖中的位置,以找到對(duì)應(yīng)數(shù)據(jù)。[0044]可選的,所述方法進(jìn)一步包括:復(fù)數(shù)個(gè)車(chē)道對(duì)應(yīng)一個(gè)循跡指針;所述復(fù)數(shù)個(gè)車(chē)道中有一個(gè)車(chē)道為主動(dòng)車(chē)道,其余車(chē)道為從動(dòng)車(chē)道;所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖中的內(nèi)容相同;所述循跡指針前行到至少所述復(fù)數(shù)個(gè)車(chē)道中的一個(gè)的執(zhí)行單元當(dāng)前正在執(zhí)行的指令之后第一條指令,并輸出從所述第一條指令開(kāi)始的復(fù)數(shù)條指令中的分支指令的目標(biāo)指令的地址;當(dāng)所述第一條指令或所述目標(biāo)指令尚未存儲(chǔ)在所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖中時(shí),控制指令存儲(chǔ)器向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖同時(shí)填充所述所述第一條指令或所述目標(biāo)指令;控制所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖分別輸出從所述第一條指令開(kāi)始的復(fù)數(shù)條指令。[0045]可選的,在所述方法中,對(duì)所述復(fù)數(shù)個(gè)車(chē)道的復(fù)數(shù)條指令進(jìn)行相關(guān)性檢測(cè),并根據(jù)相關(guān)性檢測(cè)結(jié)果確定所述循跡指針的增量以更新循跡指針,以及根據(jù)相關(guān)性檢測(cè)結(jié)果由處理器核執(zhí)行所述復(fù)數(shù)條指令中的部分或全部。[0046]可選的,在所述方法中,根據(jù)所述循跡指針向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖輸出所述第一條指令地址及其下塊指令地址,以控制所述復(fù)數(shù)個(gè)車(chē)道中的相應(yīng)車(chē)道的指令讀緩沖輸出從所述第一條指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令到相應(yīng)車(chē)道執(zhí)行;根據(jù)所述循跡指針向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖輸出從所述第一條指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令中所有分支指令的目標(biāo)指令地址及其下塊指令地址,分別控制所述復(fù)數(shù)個(gè)車(chē)道中的相應(yīng)車(chē)道的指令讀緩沖輸出從每個(gè)目標(biāo)指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令到相應(yīng)車(chē)道執(zhí)行。[0047]可選的,在所述方法中,所述主動(dòng)車(chē)道的指令讀緩沖根據(jù)接收到所述第一條指令地址,將相應(yīng)的鋸齒字線(xiàn)設(shè)為有效,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以輸出所述第一條指令開(kāi)始直到第一條分支指令,并在所述鋸齒字線(xiàn)上的有效信號(hào)到達(dá)所述第一條分支指令時(shí),被發(fā)射到目標(biāo)總線(xiàn)上,并所述從動(dòng)車(chē)道上由根據(jù)目標(biāo)指令地址確定的指令塊上的鋸齒總線(xiàn)接收,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以繼續(xù)輸出相應(yīng)指令;在上述過(guò)程中,當(dāng)所述鋸齒字線(xiàn)上的有效信號(hào)到達(dá)指令塊邊界時(shí),被發(fā)射到總線(xiàn)上,并由根據(jù)下塊指令地址確定的指令塊上的鋸齒總線(xiàn)接收,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以繼續(xù)輸出相應(yīng)指令。[0048]可選的,在所述方法中,執(zhí)行同一分支路徑的車(chē)道構(gòu)成一路(way),各路車(chē)道中執(zhí)行對(duì)應(yīng)指令的車(chē)道構(gòu)成一槽(slot);對(duì)從所述第一條指令開(kāi)始的各路車(chē)道分別進(jìn)行相關(guān)性檢測(cè),并根據(jù)各路相關(guān)性檢測(cè)結(jié)果產(chǎn)生各路相應(yīng)的讀指針增量,以及根據(jù)各路相關(guān)性檢測(cè)結(jié)果由相應(yīng)路的執(zhí)行單元執(zhí)行相應(yīng)復(fù)數(shù)條指令中的部分或全部;根據(jù)各路中分支指令的執(zhí)行結(jié)果選擇這些路中一路的執(zhí)行單元繼續(xù)執(zhí)行,并終止其余路的執(zhí)行單元的執(zhí)行;根據(jù)各路中分支指令的執(zhí)行結(jié)果選擇這些路中一路對(duì)應(yīng)的指令地址及讀指針增量更新循跡器讀指針。[0049]可選的,在所述方法中,可以通過(guò)對(duì)相關(guān)性檢測(cè)進(jìn)行配置改變最大發(fā)射數(shù)。[0050]可選的,在所述方法中,將指令讀緩沖中數(shù)據(jù)讀取指令可能用到的數(shù)據(jù)事先填充到數(shù)據(jù)讀緩沖中。[0051]可選的,在所述方法中,所述數(shù)據(jù)讀緩沖的表項(xiàng)與指令讀緩沖中的表項(xiàng)--對(duì)應(yīng),可以直接由數(shù)據(jù)讀取指令在指令讀緩沖中的位置信息直接在數(shù)據(jù)讀緩沖中找到該數(shù)據(jù)讀取指令對(duì)應(yīng)的數(shù)據(jù);或所述數(shù)據(jù)讀緩沖的表項(xiàng)數(shù)目少于指令讀緩沖的表項(xiàng)數(shù)目,且指令讀緩沖的每個(gè)表項(xiàng)包含一個(gè)指針;可以數(shù)據(jù)讀取指令所在的指令讀緩沖表項(xiàng)中的所述指針經(jīng)譯碼器譯碼后確定對(duì)應(yīng)數(shù)據(jù)在數(shù)據(jù)讀緩沖中的位置,以找到對(duì)應(yīng)數(shù)據(jù)。[0052]對(duì)于本領(lǐng)域?qū)I(yè)人士,還可以在本發(fā)明的說(shuō)明、權(quán)利要求和附圖的啟發(fā)下,理解、領(lǐng)會(huì)本發(fā)明所包含其他方面內(nèi)容。[0053]有益效果[0054]本發(fā)明所述處理器系統(tǒng)由通用單元構(gòu)成,可以根據(jù)需要,由部分或全部通用單元構(gòu)成單指令單數(shù)據(jù)流處理器、單指令多數(shù)據(jù)流處理器、多指令單數(shù)據(jù)流處理器、多指令多數(shù)據(jù)流處理器、指令級(jí)并行處理器、向量處理器和多線(xiàn)程處理器等各種現(xiàn)有的處理器結(jié)構(gòu)。本發(fā)明所述處理器系統(tǒng)中的不同部分可以同時(shí)被配置為上述處理器結(jié)構(gòu)的一種或多種,具有很強(qiáng)的靈活性。此外,本發(fā)明所述處理器系統(tǒng)還可以根據(jù)事先設(shè)定的配置信息或程序的執(zhí)行情況,對(duì)運(yùn)算資源進(jìn)行動(dòng)態(tài)分配,大大提高了資源的利用率,可以有效的提高處理器性能。[0055]本發(fā)明所述處理器系統(tǒng)中的緩存系統(tǒng)與傳統(tǒng)緩存系統(tǒng)僅在緩存缺失后才填充的機(jī)制不同,而是在處理器執(zhí)行一條指令之前就對(duì)指令緩存系統(tǒng)中的指令讀緩沖進(jìn)行填充,可以消除或充分掩蓋隱藏因緩存缺失造成的運(yùn)算單元等待時(shí)間。此外,本發(fā)明所述處理器系統(tǒng)中的的緩存系統(tǒng)能由指令讀緩沖主動(dòng)向處理器核輸出指令供執(zhí)行,避免了在讀取緩存的時(shí)延關(guān)鍵路徑上的標(biāo)簽匹配,所以能運(yùn)行在較高的時(shí)鐘頻率,且功耗也比傳統(tǒng)緩存系統(tǒng)顯著降低。[0056]根據(jù)統(tǒng)計(jì),在傳統(tǒng)處理器的程序中,數(shù)據(jù)讀取指令、數(shù)據(jù)存儲(chǔ)指令及分支指令占程序中指令總數(shù)46%左右,由于本發(fā)明所述處理器系統(tǒng)在執(zhí)行其他指令的同時(shí)完成對(duì)這類(lèi)指令的處理,相當(dāng)于在執(zhí)行指令的過(guò)程中隱藏了這類(lèi)指令,使之不再占據(jù)單獨(dú)的指令周期,因此能提商程序運(yùn)行效率。[0057]對(duì)于本領(lǐng)域?qū)I(yè)人士而言,本發(fā)明的其他優(yōu)點(diǎn)和應(yīng)用是顯見(jiàn)的?!緦?zhuān)利附圖】【附圖說(shuō)明】[0058]圖1是包含本發(fā)明所述指令緩存系統(tǒng)的一個(gè)處理器系統(tǒng);[0059]圖2A是本發(fā)明所述軌跡點(diǎn)格式的實(shí)施例;[0060]圖2B是本發(fā)明所述建立新軌道的一個(gè)實(shí)施例;[0061]圖3是本發(fā)明所述循跡器讀指針移動(dòng)的實(shí)施例;[0062]圖4是本發(fā)明所述填充指令讀緩沖及由指令讀緩沖直接向處理器核提供指令以供執(zhí)行的實(shí)施例;[0063]圖5是本發(fā)明所述控制單元進(jìn)行匹配的一個(gè)實(shí)施例;[0064]圖6是本發(fā)明所述指令讀緩沖中令牌傳遞器的一個(gè)實(shí)施例;[0065]圖7是本發(fā)明所述傳遞令牌信號(hào)的一個(gè)實(shí)施例;[0066]圖8A是本發(fā)明所述車(chē)道間總線(xiàn)的一個(gè)示意圖;[0067]圖8B是本發(fā)明所述車(chē)道間總線(xiàn)的另一個(gè)示意圖;[0068]圖8C是本發(fā)明所述為不同車(chē)道的執(zhí)行單元提供同一或不同的操作數(shù)的示意圖;[0069]圖9A是本發(fā)明所述多指令多數(shù)據(jù)流操作的一個(gè)實(shí)施例;[0070]圖9B是本發(fā)明所述用四個(gè)包含相同內(nèi)容的軌道表實(shí)現(xiàn)多指令多數(shù)據(jù)流操作軌道表循跡的實(shí)施例;[0071]圖9C是本發(fā)明所述軌道表時(shí)分復(fù)用的實(shí)施例;[0072]圖9D是本發(fā)明所述分支預(yù)測(cè)的一個(gè)實(shí)施例;[0073]圖9E是本發(fā)明所述具有臨時(shí)軌道行的實(shí)施例;[0074]圖9F是本發(fā)明所述具有微型軌道表的實(shí)施例;[0075]圖10A是本發(fā)明所述令牌傳遞器陣列的實(shí)施例;[0076]圖10B是本發(fā)明所述令牌傳遞器陣列中每個(gè)基本傳遞器的結(jié)構(gòu);[0077]圖11是本發(fā)明所述包含令牌傳遞器陣列的可配置的多車(chē)道處理器系統(tǒng)的實(shí)施例;[0078]圖12是本發(fā)明所述判斷模塊內(nèi)部結(jié)構(gòu)的一個(gè)示意圖;[0079]圖13A是本發(fā)明所述處理器系統(tǒng)的實(shí)施例;[0080]圖13B是本發(fā)明所述單指令單數(shù)據(jù)流處理器的一個(gè)實(shí)施例;[0081]圖13C是本發(fā)明所述單指令多數(shù)據(jù)流處理器的一個(gè)實(shí)施例;[0082]圖13D是本發(fā)明所述超級(jí)單指令多數(shù)據(jù)流處理器的一個(gè)實(shí)施例;[0083]圖13E是本發(fā)明所述多指令單數(shù)據(jù)流處理器的一個(gè)實(shí)施例;[0084]圖13F是本發(fā)明所述多指令多數(shù)據(jù)流處理器的一個(gè)實(shí)施例;[0085]圖13G是本發(fā)明所述指令級(jí)并行處理器的一個(gè)實(shí)施例;[0086]圖13H是本發(fā)明所述多線(xiàn)程處理器的一個(gè)實(shí)施例;[0087]圖131是本發(fā)明所述軟連線(xiàn)邏輯的一個(gè)實(shí)施例;[0088]圖14A是本發(fā)明所述并行處理循環(huán)指令的一個(gè)實(shí)施例;[0089]圖14B是本發(fā)明所述并行處理循環(huán)指令的另一個(gè)實(shí)施例;[0090]圖14C是本發(fā)明所述并行處理循環(huán)指令的另一個(gè)實(shí)施例;[0091]圖15A是本發(fā)明所述處理器系統(tǒng)中動(dòng)態(tài)配置車(chē)道的一個(gè)實(shí)施例;[0092]圖15B是調(diào)度單元的線(xiàn)程資源分配表在各個(gè)車(chē)道上分配程序的一個(gè)實(shí)施例;[0093]圖15C是本發(fā)明所述處理器系統(tǒng)動(dòng)態(tài)調(diào)度車(chē)道的一個(gè)實(shí)施例;[0094]圖16是采用本發(fā)明所述結(jié)構(gòu)實(shí)現(xiàn)的處理器中保持指令同步的一個(gè)實(shí)施例;[0095]圖17是支持多種指令集的多車(chē)道處理器的一個(gè)實(shí)施例;[0096]圖18A是本發(fā)明所述包含數(shù)據(jù)讀緩沖的車(chē)道的一個(gè)實(shí)施例;[0097]圖18B是本發(fā)明所述包含數(shù)據(jù)讀緩沖的車(chē)道的另一個(gè)實(shí)施例;[0098]圖19A是用于本發(fā)明所述處理器系統(tǒng)的指令序列的一個(gè)實(shí)施例;[0099]圖19B是以指令地址為軸線(xiàn)顯示的指令序列的一個(gè)實(shí)施例;[0100]圖20是支持同一時(shí)間內(nèi)發(fā)射復(fù)數(shù)條可能指令的指令讀緩沖器的一個(gè)實(shí)施例;[0101]圖21是本發(fā)明所述車(chē)道處理器的一個(gè)實(shí)施例;[0102]圖22是本發(fā)明所述車(chē)道處理器中指令讀緩沖通用結(jié)構(gòu)的一個(gè)實(shí)施例;[0103]圖23是本發(fā)明所述車(chē)道處理器系統(tǒng)完整結(jié)構(gòu)的一個(gè)實(shí)施例。【具體實(shí)施方式】[0104]以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明提出的高性能緩存系統(tǒng)和方法作進(jìn)一步詳細(xì)說(shuō)明。根據(jù)下面說(shuō)明和權(quán)利要求書(shū),本發(fā)明的優(yōu)點(diǎn)和特征將更清楚。需說(shuō)明的是,附圖均采用非常簡(jiǎn)化的形式且均使用非精準(zhǔn)的比例,僅用以方便、明晰地輔助說(shuō)明本發(fā)明實(shí)施例的目的。[0105]需說(shuō)明的是,為了清楚地說(shuō)明本發(fā)明的內(nèi)容,本發(fā)明特舉多個(gè)實(shí)施例以進(jìn)一步闡釋本發(fā)明的不同實(shí)現(xiàn)方式,其中,該多個(gè)實(shí)施例是列舉式并非窮舉式。此外,為了說(shuō)明的簡(jiǎn)潔,前實(shí)施例中已提及的內(nèi)容往往在后實(shí)施例中予以省略,因此,后實(shí)施例中未提及的內(nèi)容可相應(yīng)參考前實(shí)施例。[0106]雖然該發(fā)明可以以多種形式的修改和替換來(lái)擴(kuò)展,說(shuō)明書(shū)中也列出了一些具體的實(shí)施圖例并進(jìn)行詳細(xì)闡述。應(yīng)當(dāng)理解的是,【發(fā)明者】的出發(fā)點(diǎn)不是將該發(fā)明限于所闡述的特定實(shí)施例,正相反,【發(fā)明者】的出發(fā)點(diǎn)在于保護(hù)所有基于由本權(quán)利聲明定義的精神或范圍內(nèi)進(jìn)行的改進(jìn)、等效轉(zhuǎn)換和修改。同樣的元器件號(hào)碼可能被用于所有附圖以代表相同的或類(lèi)似的部分。[0107]此外,在本說(shuō)明書(shū)中以包含處理器核的緩存系統(tǒng)為例進(jìn)行說(shuō)明,但本發(fā)明技術(shù)方案也可以被應(yīng)用于包含任何合適的處理器(Processor)的緩存系統(tǒng)。例如,所述處理器可以是通用處理器(GeneralProcessor)、中央處理器(CPU)、微控制器(MCU)、數(shù)字信號(hào)處理器(DSP)、圖象處理器(GPU)、片上系統(tǒng)(S0C)、專(zhuān)用集成電路(ASIC)等。[0108]本發(fā)明所述的指令地址(InstructionAddress)指的是指令在主存儲(chǔ)器中的存儲(chǔ)地址,即可以根據(jù)該地址在主存儲(chǔ)器中找到這條指令;而數(shù)據(jù)地址(DataAddress)指的是數(shù)據(jù)在主存儲(chǔ)器中的存儲(chǔ)地址,即可以根據(jù)該地址在主存儲(chǔ)器中找到這個(gè)數(shù)據(jù)。在此為簡(jiǎn)單明了起見(jiàn),均假設(shè)虛擬地址等于物理地址,對(duì)于需要進(jìn)行地址映射的情況,本發(fā)明所述方法也可適用。在本發(fā)明中,當(dāng)前指令可以指當(dāng)前正在被處理器核執(zhí)行或獲取的指令;當(dāng)前指令塊可以指含有當(dāng)前正被處理器執(zhí)行的指令的指令塊[0109]如圖1所不,處理器環(huán)境包含一個(gè)填充器202、一個(gè)主動(dòng)表(Activelist)204、一個(gè)掃描器208、一個(gè)軌道表(Tracktable)210、一個(gè)循跡器(Tracker)214、一個(gè)指令存儲(chǔ)器206、一個(gè)指令讀緩沖107和一個(gè)處理器核111。應(yīng)當(dāng)理解的是,這里列出各種部件的目的是為了便于描述,還可以包含其他部件,而某些部件可以被省略。這里的各種部件可以分布在多個(gè)系統(tǒng)中,可以是物理上存在的或是虛擬的,可以是硬件實(shí)現(xiàn)(如:集成電路)、軟件實(shí)現(xiàn)或由硬件和軟件組合實(shí)現(xiàn)。[0110]當(dāng)處理器核(CPUCore)111執(zhí)行一條指令時(shí),處理器核111首先需要從更低層次的存儲(chǔ)器中讀入指令。在這里,存儲(chǔ)器的層次指的是存儲(chǔ)器與處理器核111之間的接近程度。越接近處理器核111的層次越高。此外,一個(gè)高層次的存儲(chǔ)器通常比低層次的存儲(chǔ)器速度快但容量小。[0111]在本實(shí)施例中,指令讀緩沖107的容量比指令存儲(chǔ)器206小,訪(fǎng)問(wèn)時(shí)延也更短。指令存儲(chǔ)器103和指令讀緩沖107可以包含任何合適的存儲(chǔ)設(shè)備,如:寄存器(register)或寄存器堆(registerfile)、靜態(tài)存儲(chǔ)器(SRAM)、動(dòng)態(tài)存儲(chǔ)器(DRAM)、閃存存儲(chǔ)器(flashmemory)、硬盤(pán)、固態(tài)磁盤(pán)(SolidStateDisk)以及任何一種合適的存儲(chǔ)器件或未來(lái)的新形態(tài)存儲(chǔ)器。指令存儲(chǔ)器103可以作為系統(tǒng)的一個(gè)緩存工作,或當(dāng)有其他緩存存在時(shí)作為一級(jí)緩存工作;且可以被分割成復(fù)數(shù)個(gè)被稱(chēng)為存儲(chǔ)塊(MemoryBlock)的存儲(chǔ)片段的用于存儲(chǔ)處理器核111要訪(fǎng)問(wèn)的數(shù)據(jù),如在指令塊(InstructionBlock)中的指令。[0112]填充器202根據(jù)主動(dòng)表204提供的地址從更低層次的存儲(chǔ)器獲取指令或指令塊并填充到指令存儲(chǔ)器206中。之后,根據(jù)具體執(zhí)行情況,相應(yīng)指令塊被從指令存儲(chǔ)器206填充指令讀緩沖107中,以備處理器核111讀取。在這里,術(shù)語(yǔ)"填充(Fill)"表示將指令從較低層次的存儲(chǔ)器移動(dòng)到較高層次的存儲(chǔ)器中,術(shù)語(yǔ)"存儲(chǔ)器訪(fǎng)問(wèn)"(MemoryAccess)表示處理器核111從存儲(chǔ)器(指令讀緩沖107)中讀取指令。[0113]主動(dòng)表204中的表項(xiàng)與指令存儲(chǔ)器206中的存儲(chǔ)塊(MemoryBlock)--對(duì)應(yīng)。主動(dòng)表204中的每個(gè)表項(xiàng)存儲(chǔ)了一個(gè)指令塊地址(InstructionBlockAddress),所述指令塊地址與該表項(xiàng)對(duì)應(yīng)的塊號(hào)(BNX)形成一個(gè)匹配對(duì),指明了該指令塊地址對(duì)應(yīng)的指令塊存儲(chǔ)在指令存儲(chǔ)器206中的哪個(gè)存儲(chǔ)塊中。本發(fā)明所述的塊號(hào)指的就是存儲(chǔ)塊在指令存儲(chǔ)器206中的位置??梢酝ㄟ^(guò)將掃描器208審查、計(jì)算得到的分支目標(biāo)指令地址與主動(dòng)表204中存儲(chǔ)的指令塊地址匹配確定該分支目標(biāo)指令是否已經(jīng)存儲(chǔ)在指令存儲(chǔ)器206中。如果分支目標(biāo)信息所在的指令塊尚未被填充到指令存儲(chǔ)器206中,那么在將該指令塊填充到指令存儲(chǔ)器206中的同時(shí),在主動(dòng)表204中建立相應(yīng)的指令塊地址與塊號(hào)碼的匹配對(duì)。本發(fā)明所述的匹配(Match),指的是對(duì)兩個(gè)值進(jìn)行比較,當(dāng)兩者相同或相等時(shí)為'匹配成功(Match)',否則為'匹配不成功(NotMatch)'。[0114]掃描器208可以對(duì)從更低層次的存儲(chǔ)器填充到指令存儲(chǔ)器206的每一條指令進(jìn)行審查,并提取出某些信息,如:指令類(lèi)型、指令源地址和分支指令的分支增量(BranchOffset),并基于這些信息計(jì)算出分支目標(biāo)地址。在本發(fā)明中,分支指令(BranchInstrutrion)或分支點(diǎn)(BranchPoint)指的是任何適當(dāng)?shù)哪軐?dǎo)致處理器核116改變執(zhí)行流(ExecutionFlow)(如:非按順序執(zhí)行一條指令)的指令形式。分支指令或分支源(BranchSource)指一條進(jìn)行分支操作的指令,分支源地址(BranchSouceAddress)可以是分支指令本身的指令地址;分支目標(biāo)(BranchTarget)指的是分支指令造成的分支轉(zhuǎn)移所轉(zhuǎn)向的目標(biāo)指令,分支目標(biāo)地址(BranchTargetAddress)可以指當(dāng)分支指令的分支轉(zhuǎn)移成功發(fā)生時(shí)轉(zhuǎn)移進(jìn)入的地址,也就是分支目標(biāo)指令的指令地址。例如,指令類(lèi)型可以包括條件分支指令、無(wú)條件分支指令和其他指令等。指令類(lèi)別還可以包括條件分支指令的子類(lèi)另IJ,如相等時(shí)分支轉(zhuǎn)移、大于時(shí)分支轉(zhuǎn)移等。在某些情況下,可以認(rèn)為無(wú)條件分支指令是條件分支指令的一種特例,即條件總是成立。此外,還可以包括其他信息。掃描器208也將上述信息及地址送到其他模塊,如主動(dòng)表204和軌道表210。[0115]指令讀緩沖107中至少存儲(chǔ)了包含當(dāng)前指令塊在內(nèi)一個(gè)指令塊。需要說(shuō)明的是,指令讀緩沖107中的每一行與指令存儲(chǔ)器206的指令塊可以含有相同數(shù)目或較少數(shù)目條指令。如果指令讀緩沖107中的每行含有與存儲(chǔ)器指令塊同樣數(shù)目的指令,即一個(gè)行等于一個(gè)指令塊,則該行可以用對(duì)應(yīng)的指令塊塊號(hào)表示。如果指令讀緩沖107中的每行含有含有比存儲(chǔ)器指令塊少的指令,即多個(gè)行等于一個(gè)指令塊,則指令讀緩沖107中的每一行可以用相應(yīng)的指令塊的塊號(hào)BNX的最低位(Lsb)再低一位的位置處(lesssignificant)加上至少一個(gè)地址位;此地址位指出該行在一個(gè)指令塊中的位置,也即同一指令塊中的行偏移地址。例如一個(gè)塊號(hào)BNX為'111'的指令行含有指令讀緩沖107中的兩個(gè)行,則其中占據(jù)低位地址的行對(duì)應(yīng)的號(hào)碼為'1110';占據(jù)高位地址的行對(duì)應(yīng)的號(hào)碼為'1111'。[0116]為了便于說(shuō)明,在之后的描述中以指令讀緩沖107中的每一行與指令存儲(chǔ)器206的指令塊可以含有相同數(shù)目的指令為例進(jìn)行說(shuō)明。[0117]在本發(fā)明中,指令讀緩沖107可以根據(jù)當(dāng)前處理器核111執(zhí)行指令的執(zhí)行情況,主動(dòng)提供指令給處理器核111執(zhí)行。[0118]軌道表210含有復(fù)數(shù)個(gè)軌跡點(diǎn)(TrackPoint)。一個(gè)軌跡點(diǎn)是軌道表中的一個(gè)表項(xiàng),可含有至少一條指令的信息,比如指令類(lèi)別信息、分支目標(biāo)地址等。在本發(fā)明中軌跡點(diǎn)本身的軌跡表地址與該軌跡點(diǎn)所代表指令的指令地址相關(guān)(Correspond);而分支指令軌跡點(diǎn)中含有分支目標(biāo)的軌跡表地址,且該軌跡表地址與分支目標(biāo)指令地址相關(guān)。與指令存儲(chǔ)器206中一系列連續(xù)指令所構(gòu)成的一個(gè)指令塊相對(duì)應(yīng)的復(fù)數(shù)個(gè)連續(xù)的軌跡點(diǎn)稱(chēng)為一條軌道。該指令塊與相應(yīng)的軌道由同一個(gè)塊號(hào)指示。軌道表含有至少一條軌道。一條軌道中的總的軌跡點(diǎn)數(shù)可以等于軌道表210中一行中的表項(xiàng)總數(shù)。軌道表210也可以有其它的組織形式。[0119]可以用第一地址(BNX)和第二地址(BNY)來(lái)表示軌跡點(diǎn)(指令)在軌道表中的位置信息;其中第一地址表示該軌跡點(diǎn)對(duì)應(yīng)指令的塊號(hào)(指向軌道表中一條軌道及指令緩沖器中相應(yīng)的一個(gè)指令塊),第二地址表示該軌跡點(diǎn)(及對(duì)應(yīng)指令)在該軌道(存儲(chǔ)塊)中的相對(duì)位置(偏移量,AdressOffset)。一套第一地址及第二地址對(duì)應(yīng)軌道表中的一個(gè)軌跡點(diǎn),即可以根據(jù)一套第一地址及第二地址從軌道表中找到對(duì)應(yīng)的軌跡點(diǎn)。如果該軌跡點(diǎn)的類(lèi)型代表一條分支指令,可以根據(jù)內(nèi)容中含的第一地址(目標(biāo)塊號(hào))確定分支目標(biāo)的軌道,并根據(jù)第二地址(偏移量)確定目標(biāo)軌道中的一個(gè)特定的軌跡點(diǎn)(表項(xiàng))。這樣,軌道表就成為一個(gè)以軌道表項(xiàng)地址對(duì)應(yīng)分支源地址、表項(xiàng)內(nèi)容對(duì)應(yīng)分支目標(biāo)地址來(lái)代表一條分支指令的表。[0120]相應(yīng)地,掃描器208將提取出存儲(chǔ)到指令存儲(chǔ)器206中指令的指令信息,并將這些信息存儲(chǔ)到軌道表210由這些指令對(duì)應(yīng)的第一地址指出的軌道中由第二地址指出的表項(xiàng)。如果該指令是分支指令時(shí)則計(jì)算其中分支指令的分支目標(biāo)指令地址送到主動(dòng)表204匹配以得到分支目標(biāo)指令所在存儲(chǔ)行的塊號(hào)(BNX)。如果分支目標(biāo)地址未與存在主動(dòng)表204中的任何地址匹配,則該分支目標(biāo)地址被送到填充器202從低層存儲(chǔ)器讀出指令行。同時(shí)主動(dòng)表中的存儲(chǔ)塊替換邏輯分配一個(gè)存儲(chǔ)塊號(hào)(BNX)給該指令行;該指令地址高位被存進(jìn)主動(dòng)表204中該塊號(hào)指示的表項(xiàng),填充器202取得的指令塊被填充到該塊號(hào)指示的存儲(chǔ)塊,并將該塊號(hào)產(chǎn)生的第一地址及從指令地址抽取的第二地址寫(xiě)進(jìn)軌道表。[0121]軌道表210中的軌道和指令存儲(chǔ)器206中的存儲(chǔ)塊一一對(duì)應(yīng),且都由同一指針指向。處理器核111將要執(zhí)行的任何指令,都可以在執(zhí)行前被填充到指令存儲(chǔ)器206及指令讀緩沖107中。為了在一條軌道中建立與下一條軌道的聯(lián)系,在每條軌道代表最后一條指令的軌跡點(diǎn)后再設(shè)一個(gè)結(jié)束軌跡點(diǎn),其中存放順序執(zhí)行下一條軌道(指令塊)的第一地址。如果指令存儲(chǔ)器206中可以存儲(chǔ)多個(gè)指令塊,在當(dāng)前指令塊被執(zhí)行時(shí),把順序執(zhí)行下一個(gè)指令塊也取到指令存儲(chǔ)器206中及指令讀緩沖107中,以備提供給處理器核206執(zhí)行。下一指令塊的指令地址可以用當(dāng)前指令塊的指令地址加上一個(gè)指令塊的地址長(zhǎng)度來(lái)求得。該地址如前述被送到主動(dòng)表204匹配,獲得的指令塊被填進(jìn)指令存儲(chǔ)器206由存儲(chǔ)塊替換邏輯所指示的指令塊;且該指令塊及相應(yīng)的軌道由匹配獲得的BNX標(biāo)示。同時(shí)該BNX被存進(jìn)當(dāng)前軌道的結(jié)束軌跡點(diǎn)。新存進(jìn)指令存儲(chǔ)器206的下一指令塊中的指令也被掃描器208掃描,提取信息填充由該BNX指出的軌道如前所述。[0122]循跡器214的讀指針指向軌道表210中當(dāng)前指令所在軌道中位于當(dāng)前指令之后的第一個(gè)分支指令軌跡點(diǎn);或在該軌道上當(dāng)前指令后沒(méi)有分支軌跡點(diǎn)的情況下指向該軌道的結(jié)束軌跡點(diǎn)。循跡器214的讀指針由第一地址指針和第二地址指針組成,其中第一地址指針的值為當(dāng)前指令所在指令塊的塊號(hào),第二指針指向該軌道上當(dāng)前指令后的第一個(gè)分支指令軌跡點(diǎn)或結(jié)束軌跡點(diǎn)。由該讀指針指示的軌跡點(diǎn)內(nèi)容中的分支目標(biāo)第一地址被用于對(duì)指令存儲(chǔ)器206尋址,可以讀出包含該分支目標(biāo)指令在內(nèi)的指令塊。該指令塊可以被填充到指令讀緩沖107中,以備分支轉(zhuǎn)移發(fā)生后提供相應(yīng)分支目標(biāo)指令給處理器核111執(zhí)行。[0123]若循跡器214指向的分支指令沒(méi)有發(fā)生分支轉(zhuǎn)移,則循跡器214的讀指針指向該分支指令后的第一個(gè)分支指令軌跡點(diǎn),或在該分支指令后的軌跡點(diǎn)中沒(méi)有分支指令軌跡點(diǎn)的情況下指向該軌道的結(jié)束軌跡點(diǎn)。指令讀緩沖107提供該分支指令之后的順序指令給處理器核111執(zhí)行。[0124]若循跡器214指向的分支指令成功發(fā)生分支轉(zhuǎn)移,上述分支目標(biāo)第一地址和第二地址成為新的循跡器地址指針,指向軌道表中的分支目標(biāo)對(duì)應(yīng)的軌跡點(diǎn)。該新循跡器地址指針也指向新填充的分支指令塊,使其成為新的當(dāng)前指令塊。指令讀緩沖107提供該分支指令的分支目標(biāo)指令及其之后的順序指令給處理器核111執(zhí)行。此后循跡器214移動(dòng)讀指針指向新的當(dāng)前指令塊對(duì)應(yīng)軌道中該分支目標(biāo)指令之后的第一個(gè)分支指令軌跡點(diǎn),或在該分支目標(biāo)指令后的軌跡點(diǎn)中沒(méi)有分支指令軌跡點(diǎn)的情況下指向該軌道的結(jié)束軌跡點(diǎn)。[0125]若循跡器214指向的是軌道中的結(jié)束軌跡點(diǎn),循跡器214的讀指針更新為該最后軌跡點(diǎn)中的位置內(nèi)容值,即指向下一軌道的第一個(gè)軌跡點(diǎn),從而指向新的當(dāng)前指令塊。之后循跡器214移動(dòng)讀指針指向新的當(dāng)前指令塊對(duì)應(yīng)軌道中的第一個(gè)分支指令軌跡點(diǎn),或在該軌道沒(méi)有分支指令軌跡點(diǎn)的情況下指向該軌道的結(jié)束軌跡點(diǎn)。依次重復(fù)上述過(guò)程,即可在處理器核111執(zhí)行指令前將該指令填充到指令存儲(chǔ)器206及指令讀緩沖107中,使得處理器核111在對(duì)該指令的取指時(shí)延最短,從而提高處理器性能。[0126]根據(jù)本發(fā)明技術(shù)方案,當(dāng)從掃描器208送來(lái)的地址在主動(dòng)表204中匹配不成功時(shí),該地址被送到填充器202等待從更低層次存儲(chǔ)器取得該地址對(duì)應(yīng)的指令塊,同時(shí)在主動(dòng)表204中分配一個(gè)表項(xiàng)存儲(chǔ)該指令塊對(duì)應(yīng)的塊地址,從而形成一個(gè)塊號(hào)/塊地址對(duì)。本發(fā)明所述的指令塊的塊地址指的是該指令塊起始指令的地址。本發(fā)明所述的指令存儲(chǔ)器在邏輯上被分為復(fù)數(shù)個(gè)存儲(chǔ)塊,每個(gè)存儲(chǔ)塊對(duì)應(yīng)主動(dòng)表中的一個(gè)表項(xiàng),存儲(chǔ)了該表項(xiàng)中行地址對(duì)應(yīng)的指令塊。當(dāng)該塊地址對(duì)應(yīng)的指令塊被取來(lái)后,填充器202將其送到指令存儲(chǔ)器206寫(xiě)入以該塊地址對(duì)應(yīng)的塊號(hào)索引的存儲(chǔ)塊中。[0127]掃描器208可以對(duì)從低層存儲(chǔ)器送來(lái)的每一條指令進(jìn)行審查,提取出指令類(lèi)型并輸出到軌道表210,同時(shí)計(jì)算出分支指令的分支目標(biāo)地址。所述目標(biāo)地址可以由包含該分支指令的指令塊起始地址加上該分支指令的塊內(nèi)偏移量,并再加上分支轉(zhuǎn)移到目標(biāo)指令的距離(即分支增量)得到。該目標(biāo)地址的高位部分被用于與主動(dòng)表204中的內(nèi)容匹配以獲得該分支目標(biāo)指令對(duì)應(yīng)軌跡點(diǎn)的行號(hào),并通過(guò)拼接指令塊地址的最低位形成第一地址或塊號(hào),低位部分就是該分支目標(biāo)指令對(duì)應(yīng)軌跡點(diǎn)的第二地址,即該分支目標(biāo)指令在其行中的偏移量。[0128]對(duì)于結(jié)束軌跡點(diǎn),則只需要將指令塊地址加上指令塊長(zhǎng)度,就可以得到下一指令塊的指令塊地址,之后可以將該下一指令塊地址視為目標(biāo)地址按同樣方法進(jìn)行匹配。[0129]如果該目標(biāo)地址的高位部分在主動(dòng)表204中匹配成功,那么主動(dòng)表204輸出該高位地址對(duì)應(yīng)的塊號(hào)到軌道表210;如果該目標(biāo)地址的高位部分在主動(dòng)表204中匹配不成功,那么主動(dòng)表204就把這個(gè)值通過(guò)總線(xiàn)244送到填充器202以實(shí)現(xiàn)填充操作,同時(shí)分配一個(gè)塊號(hào)給該高位地址,并輸出到軌道表210。[0130]當(dāng)新軌道被建立時(shí),可以將新建軌道放置在軌道表210中的一個(gè)可被替換的行中。如果所述新軌道包含一個(gè)分支軌跡點(diǎn)(對(duì)應(yīng)一條分支源指令),那么在所述行中的一個(gè)表項(xiàng)內(nèi)建立一個(gè)分支軌跡點(diǎn)??梢愿鶕?jù)分支源地址確定所述分支點(diǎn)在軌道表210中的行及表項(xiàng)的位置。舉例而言,可以根據(jù)分支源地址的高位地址確定行,并根據(jù)分支源地址的偏移量確定該行中的一個(gè)表項(xiàng)。[0131]此外,軌道表行中的每個(gè)表項(xiàng)或軌跡點(diǎn)可以包含一種內(nèi)容格式,所述格式包括類(lèi)型區(qū)域、第一地址(XADDR)區(qū)域和第二地址(YADDR)區(qū)域。此外還可以包含其他區(qū)域。類(lèi)型區(qū)域可以表示軌跡點(diǎn)對(duì)應(yīng)的指令的類(lèi)型。如之前所述,指令類(lèi)型可以包括條件分支指令、無(wú)條件分支指令和其他指令。XADDR區(qū)域也被稱(chēng)為第一維地址或簡(jiǎn)稱(chēng)為第一地址。YADDR區(qū)域也被稱(chēng)為第二維地址或簡(jiǎn)稱(chēng)為第二地址。[0132]此外,新軌跡點(diǎn)的內(nèi)容可以對(duì)應(yīng)分支目標(biāo)指令。換句話(huà)說(shuō),分支軌跡點(diǎn)的內(nèi)容存儲(chǔ)了分支目標(biāo)地址信息。舉例而言,軌道表210中的對(duì)應(yīng)與一條分支目標(biāo)指令的特定的行的相應(yīng)塊號(hào)被作為第一地址存儲(chǔ)到所述分支軌跡點(diǎn)的內(nèi)容中。此外,所述分支目標(biāo)的在其所在的指令塊中的偏移量被作為第二地址存儲(chǔ)到所述分支軌跡點(diǎn)的內(nèi)容中。所述偏移量可以根據(jù)分支源指令地址和分支增量計(jì)算得到。[0133]軌道表中所有軌道的結(jié)束軌跡點(diǎn)都被標(biāo)記為一個(gè)特殊的軌跡點(diǎn),其內(nèi)容包含了一個(gè)必定分支轉(zhuǎn)移的類(lèi)別信息,以及按順序執(zhí)行指令時(shí)的下一指令所在的下一軌道的位置信息。由于該下一指令對(duì)應(yīng)于下一軌道的第一個(gè)軌跡點(diǎn),因此該特殊軌跡點(diǎn)的內(nèi)容可以只包含類(lèi)型區(qū)域和第一地址(XADDR)信息,或除了包含類(lèi)型區(qū)域和第一地址(XADDR)信息,還包含一個(gè)常數(shù)(如:'0')。[0134]請(qǐng)參考圖2A,其為本發(fā)明所述軌跡點(diǎn)格式的實(shí)施例。在本實(shí)施例中,對(duì)于非結(jié)束軌跡點(diǎn),其軌跡點(diǎn)格式可以包括指令類(lèi)型332、第一地址334和第二地址336,其中一條軌道的至少兩個(gè)軌跡點(diǎn)的指令類(lèi)型能被同時(shí)讀出。因此,在實(shí)際存儲(chǔ)時(shí),可以將軌道中所有非結(jié)束軌跡點(diǎn)的指令類(lèi)型存儲(chǔ)在一起,而將這些非結(jié)束軌跡點(diǎn)的第一地址和第二地址存儲(chǔ)在一起。對(duì)于結(jié)束軌跡點(diǎn),其軌跡點(diǎn)格式可以包括指令類(lèi)型332、第一地址334和值為'0'的常數(shù)338。同樣地,結(jié)束軌跡點(diǎn)的指令類(lèi)型332也可以和非結(jié)束軌跡點(diǎn)的指令類(lèi)型存儲(chǔ)在一起,而第一地址334和常數(shù)338則可以存儲(chǔ)在該軌道所有非結(jié)束軌跡點(diǎn)的第一地址、第二地址之后。此外,由于結(jié)束軌跡點(diǎn)的第二地址就是常數(shù)338的值'0',因此可以不存儲(chǔ)該常數(shù),當(dāng)循跡器214指向結(jié)束軌跡點(diǎn)時(shí)直接產(chǎn)生第二地址'0'。[0135]圖2B是根據(jù)本發(fā)明技術(shù)方案使用軌道表建立新軌道的方法的一個(gè)實(shí)施例。如圖2B所示,一個(gè)已建立的軌道340(用BNX0表示)可以包含三條分支指令或分支點(diǎn)342、344和346。當(dāng)審查分支點(diǎn)342時(shí),一條新軌道348(用BNX1表示的下一個(gè)可用行)被建立起來(lái)用于存儲(chǔ)分支點(diǎn)342的目標(biāo)指令,且軌道表210中的所述軌道的號(hào)碼或所述行號(hào)(即BNX1)被記錄在分支點(diǎn)342中作為第一地址。類(lèi)似地,當(dāng)審查分支點(diǎn)344時(shí),在軌道表210中另一條新軌道350(用BNX2)表示被建立起來(lái),且軌道號(hào)碼被記錄在分支點(diǎn)344中;當(dāng)審查分支點(diǎn)346時(shí),在軌道表210中另一條新軌道352(用BNX3)表示被建立起來(lái),且軌道號(hào)碼被記錄在分支點(diǎn)346中。這樣,單條軌道中對(duì)應(yīng)全部分支點(diǎn)的新軌道可以被建立起來(lái)。[0136]根據(jù)本發(fā)明技術(shù)方案,每條分支指令的軌跡點(diǎn)中存儲(chǔ)的第二地址就是該分支指令的分支目標(biāo)指令在該分支目標(biāo)指令所在指令塊中的偏移量。[0137]上述各個(gè)實(shí)施例采用直接尋址的方式計(jì)算分支目標(biāo)地址并實(shí)現(xiàn)指令預(yù)取。然而,也可以使用間接尋址的方式。當(dāng)采用間接尋址方式時(shí),需要首先確定寄存器值(如:基地址寄存器值),從而計(jì)算分支目標(biāo)地址。由于寄存器的值是因指令執(zhí)行的結(jié)果而改變的,因此對(duì)于一條間接尋址分支指令來(lái)說(shuō),在最后更新其基地址寄存器值的指令已計(jì)算得到新值、但尚未將該值寫(xiě)入基地址寄存器時(shí)可以根據(jù)需要通過(guò)旁路(bypass)路徑取得該新值進(jìn)行目標(biāo)地址的計(jì)算及后續(xù)操作。[0138]圖3是本發(fā)明所述循跡器讀指針移動(dòng)的實(shí)施例。在本實(shí)施例中,循跡器讀指針越過(guò)軌道表中的非分支指令,移動(dòng)到軌道表中下一分支點(diǎn)并等待處理器核111分支判斷結(jié)果。為便于說(shuō)明,圖3中省略了與本實(shí)施例說(shuō)明內(nèi)容無(wú)關(guān)的部分或部件。在本實(shí)施例中,假設(shè)軌道表210中存儲(chǔ)的指令類(lèi)型等指令信息均按指令地址從小到大從左到右排列,即當(dāng)按順序執(zhí)行這些指令時(shí),各個(gè)指令信息及相應(yīng)指令類(lèi)型的訪(fǎng)問(wèn)順序?yàn)閺淖笙蛴?。另假設(shè)軌道表210中指令類(lèi)型為'0'代表相應(yīng)的指令為非分支指令,指令類(lèi)型為'1'代表相應(yīng)的指令為分支指令。[0139]在本實(shí)施例中,任一時(shí)刻可以讀出軌道表210中由第一地址394(塊號(hào),BNX)指出的一條軌道中由第二地址396(塊內(nèi)地址偏移量,BNY)指出的代表指令的表項(xiàng),也可以讀出軌道表210中由第一地址394指出的一條軌道中代表指令類(lèi)型的復(fù)數(shù)個(gè)表項(xiàng)甚至所有表項(xiàng)。[0140]在軌道表210中每一行中指令地址最大的一條指令的表項(xiàng)的右方再增設(shè)一個(gè)結(jié)束表項(xiàng)以存放順序執(zhí)行下一條指令的地址。結(jié)束表項(xiàng)的指令類(lèi)型總是被設(shè)定為'1'。結(jié)束表項(xiàng)中指令信息的第一地址是下一條指令的指令塊號(hào),第二地址(BNY)恒定為零,指向該指令軌道的第一項(xiàng)。結(jié)束表項(xiàng)被定義為等同于一個(gè)無(wú)條件分支指令。當(dāng)循跡器指向一個(gè)結(jié)束表項(xiàng)時(shí)總會(huì)產(chǎn)生一個(gè)內(nèi)部控制信號(hào)使選擇器388選擇軌道表210的輸出380;也會(huì)產(chǎn)生一個(gè)內(nèi)部控制信號(hào)使寄存器390更新。該內(nèi)部信號(hào)可以由軌道表210中結(jié)束表項(xiàng)中含有的特殊位觸發(fā);也可以由第二地址396指向結(jié)束表項(xiàng)來(lái)觸發(fā)。[0141]在圖3中,循跡器214中主要包括了移位器382、前導(dǎo)零計(jì)數(shù)器384、加法器386、選擇器388和寄存器390。其中移位器382將從軌道表210讀出的代表復(fù)數(shù)條指令的復(fù)數(shù)個(gè)指令類(lèi)型398向左移位,其移動(dòng)位數(shù)由寄存器390輸出的第二地址指針396決定。移位器382輸出的移位后指令類(lèi)型399的最左邊一位是步進(jìn)位(STEPBit)。該步進(jìn)位的信號(hào)與從處理器核來(lái)的BRANCH信號(hào)共同決定寄存器390的更新。選擇器388由控制信號(hào)TAKEN控制,其輸出391為下一地址(NextAddress),其中含有第一地址部分及第二地址部分。當(dāng)TAKEN為'1'(分支成功)時(shí),選擇器388選擇軌道表210的輸出380(含有分支目標(biāo)的第一地址及第二地址)做為輸出391。當(dāng)TAKEN為'0'(分支不成功)時(shí),選擇器388選擇現(xiàn)第一地址394作為輸出391第一地址部分,加法器輸出397做為輸出391第二地址部分。指令類(lèi)型399被送到前導(dǎo)零計(jì)數(shù)器384以計(jì)算下一個(gè)'1'指令類(lèi)型(代表相應(yīng)指令為分支指令)前有多少個(gè)'〇'指令類(lèi)型(代表相應(yīng)指令為非分支指令),其中不管步進(jìn)位是'〇'或'1'都被計(jì)算為一位'〇'。得出的前導(dǎo)'〇'的數(shù)目395(步進(jìn)數(shù)STEPNumber)則被送到加法器386與寄存器390輸出的第二地址396相加以得出下一分支源地址(NextBranchAddress)397。請(qǐng)注意此下一分支源地址就是當(dāng)前指令下一條分支指令的第二地址,而在此之前的非分支指令則會(huì)被循跡器214跳(Skip)過(guò)。[0142]當(dāng)?shù)诙刂分赶虼硪粭l指令的表項(xiàng)時(shí),受第二地址控制的移位器也將軌道表210輸出的復(fù)數(shù)條指令類(lèi)型統(tǒng)一向左移位。此時(shí)代表軌道表210所讀出指令的指令類(lèi)型被移位到指令類(lèi)型399中的最左面的步進(jìn)位。移位指令類(lèi)型399被送入前導(dǎo)零計(jì)數(shù)器計(jì)算下一條分支指令之前指令的條數(shù)。此時(shí)前導(dǎo)零計(jì)數(shù)器384的輸出395即是循跡器應(yīng)該前進(jìn)的步長(zhǎng)。此步長(zhǎng)與第二地址396由加法器386相加后即得出下一分支指令地址397。[0143]當(dāng)移位后指令類(lèi)型399中的步進(jìn)位信號(hào)為'0'時(shí),這表示第二地址396所指向的軌道表210中的表項(xiàng)為非分支指令,此時(shí)該步進(jìn)位信號(hào)控制寄存器390更新,而選擇器388在為'0'的TAKEN信號(hào)392控制下選擇下一分支源地址397成為第二地址396,第一地址394保持不變。此時(shí)新的第一第二地址指向同一軌道中的下一條分支指令,此分支指令前的非分支指令均被越過(guò)。新的第二地址控制移位器396將指令類(lèi)型398移位,使代表此分支指令的指令類(lèi)型位落到399的步進(jìn)位上供下一步操作。[0144]當(dāng)移位后指令類(lèi)型399中的步進(jìn)位信號(hào)為'1'時(shí),這表示第二地址所指向的軌道表210中的表項(xiàng)代表分支指令。此時(shí)該步進(jìn)位信號(hào)不影響寄存器390更新,寄存器390由處理器核來(lái)的BRANCH信號(hào)393控制更新。此時(shí)加法器輸出397是當(dāng)前分支指令同一軌道上的下一條分支指令的地址,同時(shí)存儲(chǔ)器輸出380是當(dāng)前分支指令的目標(biāo)地址。[0145]當(dāng)BRANCH信號(hào)為'1'時(shí),選擇器388的輸出391更新寄存器390。如果此時(shí)處理器核來(lái)的TAKEN信號(hào)392為'0'時(shí),代表處理器核決定在這個(gè)分支點(diǎn)選擇順序執(zhí)行,此時(shí)選擇器388選擇下一分支源地址397。此時(shí)寄存器390輸出的第一地址394不變,下一分支源地址397成為新的第二地址396。此時(shí)新的第一第二地址指向同一軌道中的下一條分支指令。新的第二地址控制移位器396將指令類(lèi)型398移位,使代表此分支指令的指令類(lèi)型位落到399的步進(jìn)位上供下一步操作。[0146]如果此時(shí)處理器核來(lái)的TAKEN信號(hào)392為'1'時(shí),代表處理器核決定在這個(gè)分支點(diǎn)選擇程序跳轉(zhuǎn)到分支目標(biāo),此時(shí)選擇器選擇從軌道表210中讀出的分支目標(biāo)地址380成為由寄存器390輸出的第一地址394及未來(lái)第二地址395。此時(shí)BRANCH信號(hào)393控制寄存器390鎖存上述第一第二地址成為新的第一第二地址。該新的第一第二地址指向可能不在同一軌道上的分支目標(biāo)地址。新的第二地址控制移位器396將指令類(lèi)型398移位,使代表此分支指令的指令類(lèi)型位落到399的步進(jìn)位上供下一步操作。[0147]當(dāng)?shù)诙刂分赶蜍壽E表結(jié)束表項(xiàng)(下一行表項(xiàng))時(shí),如前所述內(nèi)部控制信號(hào)控制選擇器388選擇軌道表210的輸出380,并更新寄存器390。此時(shí)新的第一地址394為軌道表210的結(jié)束表項(xiàng)中記載的下一軌道的第一地址,第二地址為零。此時(shí)第二地址控制控制移位器396將指令類(lèi)型398移零位,開(kāi)始下一步操作。如此周而復(fù)始,循跡器214與軌道表210配合,會(huì)跳過(guò)軌道表中的非分支指令而總是指向分支指令。[0148]根據(jù)本發(fā)明所述技術(shù)方案,當(dāng)主動(dòng)表104表項(xiàng)已滿(mǎn)且需要建立新的行地址/行號(hào)匹配對(duì)時(shí),需要對(duì)主動(dòng)表104進(jìn)行替換,即從主動(dòng)表104中移除一個(gè)已有的行地址/行號(hào)匹配對(duì),代以新的行地址/行號(hào)匹配對(duì);從指令存儲(chǔ)器106中移除相應(yīng)的指令塊,代以新的指令塊。軌道表110中每個(gè)分支軌跡點(diǎn)的內(nèi)容包含了其分支目標(biāo)軌跡點(diǎn)的塊號(hào)(即第一地址)和塊內(nèi)偏移量(即第二地址)。如果尚在軌道表110中存儲(chǔ)的分支目標(biāo)軌跡點(diǎn)的塊號(hào)對(duì)應(yīng)的主動(dòng)表104中匹配對(duì)及相應(yīng)的指令緩存塊被替換,則會(huì)產(chǎn)生塊號(hào)未變、但塊號(hào)所代表的存儲(chǔ)內(nèi)容已改變的情況,導(dǎo)致該軌跡點(diǎn)將指向錯(cuò)誤的指令塊??梢栽黾右粋€(gè)相關(guān)表(correlationtable),記錄主動(dòng)表104中每個(gè)匹配對(duì)是否在軌道表中作為軌跡點(diǎn)中分支目標(biāo)的相關(guān)信息。主動(dòng)表(或指令存儲(chǔ)器)根據(jù)相關(guān)表中記錄的信息,只替換沒(méi)有作為分支目標(biāo)的軌道為新的軌道。[0149]請(qǐng)參考圖4,其為本發(fā)明所述填充指令讀緩沖107及由指令讀緩沖107直接向處理器核111提供指令以供執(zhí)行的實(shí)施例。為便于說(shuō)明,在圖4中只顯示了軌道表210、循跡器214、指令存儲(chǔ)器206、指令讀緩沖107、指令讀緩沖相應(yīng)的控制單元401和處理器核111,省略了其他部分。[0150]在圖4中,循跡器214的讀指針231沿軌道表210中當(dāng)前指令塊對(duì)應(yīng)的軌道移動(dòng)并停止在當(dāng)前指令對(duì)應(yīng)軌跡點(diǎn)之后的第一個(gè)分支點(diǎn)處,并讀出該軌跡點(diǎn)的內(nèi)容(即分支目標(biāo)軌跡點(diǎn)的BN233,包含BNX和BNY)送往控制單元401。此外,從當(dāng)前軌道讀出的結(jié)束軌跡點(diǎn)的內(nèi)容(即下一指令塊對(duì)應(yīng)軌道的第一個(gè)軌跡點(diǎn)的BN235)也被送到控制單元401。[0151]控制單元401中存儲(chǔ)了指令讀緩沖107中各行存儲(chǔ)的指令對(duì)應(yīng)的塊地址。在本實(shí)施例中,以指令讀緩沖中的每一行存儲(chǔ)了指令存儲(chǔ)器206中一個(gè)指令塊為例進(jìn)行說(shuō)明。控制單元401對(duì)接收到的分支源BN、分支目標(biāo)BN和下一軌道第一個(gè)軌跡點(diǎn)的BN中的第一地址部分(BNX)分別進(jìn)行匹配。若對(duì)分支目標(biāo)BNX和/或下一軌道BNX的匹配成功,則說(shuō)明對(duì)應(yīng)的指令塊已經(jīng)存儲(chǔ)在指令讀緩沖107中;否則需要將相應(yīng)BNX送往指令存儲(chǔ)器206讀出對(duì)應(yīng)指令塊并填充到指令讀緩沖107的可用行中。指令讀緩沖107可用行的確定方法可以采用如主動(dòng)表204替換時(shí)采用的可用行確定方法,在此不再贅述。[0152]進(jìn)一步地,可以根據(jù)所述分支源BN和分支目標(biāo)BN中的第二地址部分(BNY)在指令讀緩沖107中找到對(duì)應(yīng)的分支指令和分支目標(biāo)指令。請(qǐng)參考圖5,其為本發(fā)明所述控制單元進(jìn)行匹配的一個(gè)實(shí)施例。在本實(shí)施例中,假設(shè)指令存儲(chǔ)器206已經(jīng)包含了所有需要的指令塊。若指令存儲(chǔ)器206中也沒(méi)有存儲(chǔ)該下一指令塊,則可按之前實(shí)施例所述方法,由主動(dòng)表204通過(guò)填充器202向更低層次的存儲(chǔ)器輸出相應(yīng)指令地址并取回對(duì)應(yīng)指令塊,該過(guò)程在此不再贅述。[0153]此外,為了便于說(shuō)明,圖5中顯示了指令讀緩沖107中的一個(gè)指令塊501,及與該行對(duì)應(yīng)的控制單元子邏輯503。在本實(shí)施例中,指令塊501由8條指令構(gòu)成,按指令地址遞增順序從上向下分別對(duì)應(yīng)指令塊501中的每一項(xiàng)??刂茊卧舆壿?03包括第一地址存儲(chǔ)器505、下一指令塊比較器507和分支目標(biāo)比較器511,以及目標(biāo)譯碼器515。其中,第一地址存儲(chǔ)器505中存儲(chǔ)了指令塊501對(duì)應(yīng)的塊號(hào)(BNX)。比較器507將從總線(xiàn)517接收到的下一指令塊BNX與第一地址存儲(chǔ)器505中的BNX進(jìn)行匹配,若匹配成功,則比較器507輸出的匹配成功信號(hào)指向指令塊501的第一條指令(即圖5中最上一條指令),表示指令塊501就是當(dāng)前指令塊的下一指令塊,且其指向的指令就是當(dāng)前指令塊執(zhí)行完畢后處理器核111所需的下一指令;若匹配不成功,則比較器507輸出的信號(hào)無(wú)效,表示指令塊501不是當(dāng)前指令塊的下一指令塊。[0154]比較器511將從總線(xiàn)233接收到的分支目標(biāo)指令BNX與第一地址存儲(chǔ)器505中的BNX進(jìn)行匹配,若匹配成功,表示指令塊501就是所述分支目標(biāo)指令所在的指令塊,將比較器511輸出的匹配成功信號(hào)作為使能信號(hào)送往目標(biāo)譯碼器515,控制目標(biāo)譯碼器515對(duì)經(jīng)總線(xiàn)233接收到的分支目標(biāo)指令BNY進(jìn)行譯碼,并根據(jù)譯碼結(jié)果525指向指令塊501中的一條指令,該指令就是所述分支目標(biāo)指令。所匹配不成功,則表示指令塊501不是所述分支目標(biāo)指令所在的指令塊,因此不向目標(biāo)譯碼器515輸出使能信號(hào),從而阻止目標(biāo)譯碼器515的譯碼。[0155]回到圖4,當(dāng)循跡器214的讀指針231指向一個(gè)新的軌道時(shí),先讀出該軌道的結(jié)束軌跡點(diǎn)內(nèi)容235并送往控制單元401中的下一指令塊匹配器507與該塊中存儲(chǔ)的第一地址505進(jìn)行匹配。若匹配不成功,則說(shuō)明在指令讀緩沖107中尚未存儲(chǔ)該軌道對(duì)應(yīng)的下一指令塊,則控制單元401將該下一指令塊BNX送往指令存儲(chǔ)器206讀出對(duì)應(yīng)指令塊并填充到指令讀緩沖107中。同時(shí)可以確定所述下一指令塊在指令讀緩沖107中的位置。若匹配成功,則說(shuō)明在指令讀緩沖107中已經(jīng)存儲(chǔ)了該軌道對(duì)應(yīng)的下一指令塊,可以直接確定所述下一指令塊在指令讀緩沖107中的位置。[0156]循跡器214的讀指針231則按之前實(shí)施例所述方法提前移動(dòng)并停止在當(dāng)前指令對(duì)應(yīng)的軌跡點(diǎn)之后的第一個(gè)分支點(diǎn),并從軌道表210中讀出分支目標(biāo)軌跡點(diǎn)的BN。此時(shí),分支點(diǎn)和分支目標(biāo)軌跡點(diǎn)的BN被送往控制單元401并按圖5實(shí)施例所述方法進(jìn)行匹配。其中,分支點(diǎn)所在的指令塊必定已經(jīng)存儲(chǔ)在指令讀緩沖107中,因此可以確定分支源指令在的指令讀緩沖107中的位置。對(duì)于分支目標(biāo)軌跡點(diǎn)的匹配而言,若匹配不成功,則說(shuō)明在指令讀緩沖107中尚未存儲(chǔ)該分支目標(biāo)指令所在的指令塊,則控制單元401將分支目標(biāo)軌跡點(diǎn)的BNX(即其所在指令塊的BNX)送往指令存儲(chǔ)器206讀出對(duì)應(yīng)指令塊并填充到指令讀緩沖107中,并確定所述分支目標(biāo)指令在指令讀緩沖107中的位置。若匹配成功,則說(shuō)明在指令讀緩沖107中已經(jīng)存儲(chǔ)了該分支目標(biāo)指令所在的指令塊,因此可以確定所述分支目標(biāo)指令在指令讀緩沖107中的位置。[0157]這樣,通過(guò)控制單元401中的匹配,可以在指令讀緩沖107中找到分支源指令、分支目標(biāo)指令和下一指令塊的第一條指令。[0158]根據(jù)本發(fā)明技術(shù)方案,控制單元401接收的時(shí)鐘由系統(tǒng)時(shí)鐘與處理器核111的流水線(xiàn)執(zhí)行情況組合形成。即在任意一個(gè)系統(tǒng)始終周期內(nèi),若處理器核111需要讀取一條指令,則控制單元401接收到一個(gè)有效的時(shí)鐘信號(hào);若處理器核111因流水線(xiàn)暫停等原因,暫時(shí)不需要讀取新的指令,則控制單元401不會(huì)接收到時(shí)鐘信號(hào)。這樣,所述時(shí)鐘信號(hào)表明了處理器核111當(dāng)前是否需要獲取指令,因此控制單元401可以根據(jù)該時(shí)鐘信號(hào),在每個(gè)有效的時(shí)鐘周期向處理器核111提供一條指令。具體地,控制單元401中包含對(duì)應(yīng)每條指令的令牌傳遞器。所述令牌傳遞器由于傳遞令牌(Token)信號(hào),且所述令牌信號(hào)對(duì)應(yīng)的指令就是處理器核111所需的當(dāng)前指令。對(duì)于控制單元401而言,在每個(gè)有效時(shí)鐘周期均對(duì)所述令牌傳遞器進(jìn)行更新,從而將令牌信號(hào)傳遞到下一次處理器核111所需指令對(duì)應(yīng)的令牌傳遞器中。這樣,控制單元401可以根據(jù)令牌信號(hào)的值控制指令讀緩沖107,主動(dòng)向處理器核111輸出正確的指令。[0159]需要注意的時(shí),本實(shí)施例給出的僅是控制單元401向處理器核111主動(dòng)按需提供指令的一個(gè)例子。從本發(fā)明的方案出發(fā),可以采用其他各種合適的握手信號(hào)或通訊協(xié)議來(lái)保證控制單元401向處理器核111主動(dòng)按需提供指令,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),這些都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。[0160]請(qǐng)參考圖6,其為指令讀緩沖中每一條指令對(duì)應(yīng)的令牌傳遞器的一個(gè)實(shí)施例。圖6所示的令牌傳遞器包含令牌信號(hào)寄存器601和或邏輯607。根據(jù)本發(fā)明所述技術(shù)方案,對(duì)于指令讀緩沖107中的每個(gè)指令塊均對(duì)應(yīng)一個(gè)如圖6所示的令牌傳遞器,且所述令牌傳遞器按對(duì)應(yīng)指令的指令地址順序首尾相連,即前一級(jí)令牌傳遞器的輸出621與后一級(jí)令牌傳遞器的輸入623相連,實(shí)現(xiàn)無(wú)分支轉(zhuǎn)移時(shí)按順序執(zhí)行指令時(shí)依次傳遞令牌的功能。此外,令牌信號(hào)寄存器601是具有復(fù)位(reset)端的寄存器。[0161]若當(dāng)前沒(méi)有發(fā)生分支轉(zhuǎn)移,則送到所有令牌信號(hào)寄存器601復(fù)位端的表示分支轉(zhuǎn)移是否發(fā)生的TAKEN信號(hào)為無(wú)效('0'),在控制邏輯401的時(shí)鐘信號(hào)控制下,每個(gè)令牌傳遞器從總線(xiàn)623接收前一級(jí)令牌傳遞器輸出的令牌信號(hào),實(shí)現(xiàn)令牌信號(hào)的逐級(jí)傳遞。若當(dāng)前發(fā)生分支轉(zhuǎn)移,則送到所有令牌信號(hào)寄存器601復(fù)位端的TAKEN信號(hào)為有效('1'),使得所有令牌信號(hào)寄存器601的值均被復(fù)位為'0',從而阻止令牌信號(hào)的繼續(xù)傳遞。再由目標(biāo)譯碼器產(chǎn)生的信號(hào)作為令牌信號(hào)通過(guò)總線(xiàn)625送到或邏輯607并寫(xiě)入令牌信號(hào)寄存器601,從而將令牌信號(hào)直接注入到分支目標(biāo)指令對(duì)應(yīng)的令牌傳遞器。[0162]請(qǐng)參考圖7,其為本發(fā)明所述傳遞令牌信號(hào)的一個(gè)實(shí)施例。為便于說(shuō)明,圖7只顯示了軌道表1010、指令存儲(chǔ)器206、循跡器214、控制單元1001和包含了令牌傳遞器的指令讀緩沖107,其中令牌傳遞器1011、1013、1015和1017分別對(duì)應(yīng)指令701、703、705和707。指令存儲(chǔ)器206和循跡器214均與圖4實(shí)施例中的相同。令牌傳遞器中的令牌信號(hào)寄存器具有復(fù)位(reset)端,所有令牌信號(hào)寄存器可以被同時(shí)清零;控制單元1001包含了目標(biāo)譯碼器(如目標(biāo)譯碼器1021和1023),以及用于存儲(chǔ)對(duì)應(yīng)指令塊BNX的寄存器(如寄存器1025和1027)用于匹配分支目標(biāo)指令塊BNX的目標(biāo)BNX比較器(如比較器1029和1031)和用于匹配下一指令塊BNX的下一BNX比較器(如比較器1033和1035)。其中,目標(biāo)BNX比較器的功能與圖5實(shí)施例中的比較器511相同,下一BNX比較器的功能與圖5實(shí)施例中的比較器507相同。[0163]循跡器214的分支源指針231指向軌道表1010,從中讀出分支目標(biāo)地址233,其中BNX部分1043被送往控制單元1001中各個(gè)指令塊的分支目標(biāo)匹配器,如比較器1029、1031,與各個(gè)指令塊的BNX地址,如寄存器1025、1027中的BNX匹配。匹配成功則使能(enable)相應(yīng)的分支目標(biāo)譯碼器1021或1023。被使能的譯碼器接收分支目標(biāo)地址233的BNY部分1044產(chǎn)生令牌注入與分支目標(biāo)相應(yīng)的令牌傳遞器。在控制單元1001中,一旦分支轉(zhuǎn)移發(fā)生,則全部令牌傳遞器被置'〇',清除對(duì)應(yīng)于分支源指令塊的令牌信號(hào),并由目標(biāo)譯碼器產(chǎn)生令牌信號(hào)直接注入到分支目標(biāo)指令對(duì)應(yīng)的令牌傳遞器。本實(shí)施例中,每個(gè)指令塊對(duì)應(yīng)的第一個(gè)令牌傳遞器中的令牌信號(hào)寄存器的輸入均來(lái)源與一個(gè)與門(mén),該與門(mén)的一個(gè)輸入來(lái)源于全局總線(xiàn)1024,另一個(gè)輸入來(lái)源于該指令塊對(duì)應(yīng)的下一指令塊BNX比較器的輸出。[0164]循跡器214也通過(guò)分支源指針231從軌道表1010中讀出下一指令塊地址235,送往控制單元1001中各個(gè)指令塊的下一指令塊匹配器,如比較器1033、1035,與各個(gè)指令塊的BNX地址,如寄存器1025、1027中的BNX匹配。匹配的結(jié)果被送進(jìn)相應(yīng)指令塊第一個(gè)令牌傳遞器的與門(mén),如與門(mén)1019。本實(shí)施例中,所有指令塊的最后一個(gè)令牌傳遞器上的令牌狀態(tài)都接至或門(mén)1007的一個(gè)輸入,以產(chǎn)生全局總線(xiàn)1024。所以,當(dāng)令牌到達(dá)任意一個(gè)指令塊的最后一個(gè)令牌傳遞器時(shí),或門(mén)1007的輸出令牌總線(xiàn)1024均為'1'。令牌總線(xiàn)1024連接至所有指令塊的第一個(gè)令牌傳遞器上與門(mén)(如與門(mén)1019)的一個(gè)輸入端。這些與門(mén)的另外一個(gè)輸入端是連接于相應(yīng)指令塊的下一指令塊匹配器。此時(shí),與下一指令塊地址235所匹配的指令塊中的下一指令塊匹配器(如比較器1035)的輸出也為'1',與總線(xiàn)1024上的狀態(tài)共同作用使相應(yīng)指令塊中相應(yīng)的與門(mén)(如與門(mén)1019)輸出為'1',將令牌傳入相應(yīng)指令塊的第一個(gè)令牌傳遞器。[0165]進(jìn)一步地,或邏輯1007的輸出被送到每個(gè)指令塊對(duì)應(yīng)與門(mén)(如與門(mén)1019)。所述與門(mén)的另一個(gè)輸入則來(lái)源于該指令塊對(duì)應(yīng)的用于確定下一指令塊的比較器(如比較器1033和1035),其輸出被送到指令讀緩沖107中每個(gè)指令塊對(duì)應(yīng)第一個(gè)令牌傳遞器,如令牌傳遞器1015。從軌道表1010中當(dāng)前軌道的結(jié)束軌跡點(diǎn)中讀出的下一指令塊的BNX被經(jīng)由總線(xiàn)235送到控制單元1001中的所有下一BNX比較器與相應(yīng)的指令塊的BNX進(jìn)行匹配。由于指令705,707所在的指令塊對(duì)應(yīng)所述下一指令塊,因此控制單元1001的所有所有下一BNX比較器中只有下一BNX比較器1035輸出匹配成功的結(jié)果(即'1'),其他的下一BNX比較器均輸出匹配不成功的結(jié)果(即'0')。這樣,令牌傳遞器1015之前的與門(mén)1019輸出'1'并寫(xiě)入令牌信號(hào)寄存器1009中,而其他所有令牌傳遞器中的令牌信號(hào)寄存器的值均為'0',從而將令牌信號(hào)正確地傳遞到軌道表結(jié)束軌跡點(diǎn)指向的下一指令塊第一條指令對(duì)應(yīng)的令牌傳遞器中,以繼續(xù)向處理器核輸出正確的指令供執(zhí)行。如此令牌就從當(dāng)前指令塊傳遞到下一指令塊。[0166]另一方面,當(dāng)分支轉(zhuǎn)移發(fā)生、需要將令牌信號(hào)從當(dāng)前指令對(duì)應(yīng)的令牌傳遞器傳遞到分支目標(biāo)指令對(duì)應(yīng)的令牌傳遞器時(shí),假設(shè)圖7中的令牌傳遞器1017是分支轉(zhuǎn)移發(fā)生時(shí)令牌信號(hào)所在的令牌傳遞器,而指令701是所述分支轉(zhuǎn)移對(duì)應(yīng)的分支目標(biāo)指令。在本實(shí)施例中,當(dāng)處理器核111產(chǎn)生表示分支轉(zhuǎn)移發(fā)生的TAKEN信號(hào)1037時(shí),該信號(hào)也被送到所有令牌信號(hào)寄存器的復(fù)位端,從而清除令牌信號(hào)。同時(shí)從軌道表1010中讀出的分支目標(biāo)軌跡點(diǎn)BNX也被送到所有目標(biāo)BNX比較器進(jìn)行匹配。在本實(shí)施例中,由于指令701是所述分支轉(zhuǎn)移對(duì)應(yīng)的分支目標(biāo)指令,因此只有該指令塊對(duì)應(yīng)的目標(biāo)BNX比較器1029的比較結(jié)果為'1',從而控制目標(biāo)譯碼器1021對(duì)分支目標(biāo)軌跡點(diǎn)BNY進(jìn)行譯碼。根據(jù)譯碼結(jié)果,目標(biāo)譯碼器1021的輸出字線(xiàn)1039為'1',通過(guò)或門(mén)1042產(chǎn)生令牌信號(hào)控制存儲(chǔ)器701經(jīng)由總線(xiàn)1003向處理器核111輸出分支目標(biāo)指令701。下一個(gè)時(shí)鐘周期令牌信號(hào)被傳進(jìn)令牌傳遞器1013控制輸出指令703。[0167]根據(jù)本發(fā)明技術(shù)方案,還可以將處理器核中的按分支指令的TAKEN信號(hào)1037產(chǎn)生的時(shí)間點(diǎn)為界限將流水線(xiàn)分為前端流水線(xiàn)和后端流水線(xiàn),并在處理器核中增加一條前端流水線(xiàn)。這樣當(dāng)指令讀緩沖向處理器核輸出分支源指令后,可以同時(shí)向處理器核輸出所述分支源指令之后的指令,以及分支目標(biāo)指令和其后的指令。處理器核中的兩組前端流水線(xiàn)分別執(zhí)行所述分支源指令之后的指令,和分支目標(biāo)指令及其后指令。當(dāng)所述分支指令的TAKEN信號(hào)1037產(chǎn)生時(shí),根據(jù)TAKEN信號(hào)1037的值選擇正確指令所在的前端流水線(xiàn)的執(zhí)行結(jié)果送往后端流水線(xiàn)執(zhí)行,從而無(wú)論分支指令的分支轉(zhuǎn)移是否發(fā)生,都能保證處理器核中的流水線(xiàn)效率不因分支而導(dǎo)致?lián)p失。[0168]回到圖7,每條指令另外還對(duì)應(yīng)一條提前兩周讀出將指令送往預(yù)處理器1069的總線(xiàn)1094。這樣,令牌傳遞器能同時(shí)提供令牌信號(hào)對(duì)應(yīng)的指令及其后第二條指令,分別用于正常執(zhí)行及提前兩周處理數(shù)據(jù)讀取指令。其中,令牌信號(hào)對(duì)應(yīng)的指令被送到處理器核111供執(zhí)行,其后二條指令被送到預(yù)處理器1069以便提前進(jìn)行相應(yīng)的數(shù)據(jù)讀取操作。[0169]在本實(shí)施例中,同時(shí)輸出的位于同一指令塊中的當(dāng)前指令及其后第二條指令位于不同指令塊中時(shí)(即當(dāng)前指令位于當(dāng)前指令塊,而其后第二條指令位于下一指令塊中時(shí)),則通過(guò)全局總線(xiàn)傳遞令牌信號(hào)。具體地,指令塊對(duì)應(yīng)的最后兩個(gè)令牌傳遞器均能輸出令牌信號(hào)寄存器的值,并分別通過(guò)總線(xiàn)1053和1005送往或邏輯1057和1007。這樣,當(dāng)令牌信號(hào)位于當(dāng)前指令塊的倒數(shù)第二個(gè)令牌傳遞器、指令讀緩沖輸出對(duì)應(yīng)指令時(shí),令牌信號(hào)被同時(shí)通過(guò)總線(xiàn)1053傳遞到或邏輯1057,并經(jīng)全局總線(xiàn)1061傳遞到與門(mén)1065(在此假設(shè)與門(mén)1065所在的令牌傳遞器對(duì)應(yīng)下一指令塊),則由于與門(mén)1065的另一個(gè)來(lái)源于下一BNX比較器的輸入也為'1',則與門(mén)1065的輸出為'1',這樣所述下一指令塊的第一條指令就能與所述當(dāng)前指令塊的倒數(shù)第二條指令同時(shí)輸出。另一方面,當(dāng)令牌信號(hào)位于當(dāng)前指令塊的最后一個(gè)令牌傳遞器、指令讀緩沖輸出對(duì)應(yīng)指令時(shí),令牌信號(hào)被同時(shí)通過(guò)總線(xiàn)1005傳遞到或邏輯1007,并經(jīng)全局總線(xiàn)1024傳遞到與門(mén)1019,則由于與門(mén)1019的另一個(gè)來(lái)源于下一BNX比較器的輸入也為'1',則與門(mén)1019的輸出為'1',這樣,所述下一指令塊的第二條指令就能與所述當(dāng)前指令塊的最后一條指令同時(shí)輸出。[0170]根據(jù)本發(fā)明技術(shù)方案,處理器系統(tǒng)可以包含多條車(chē)道(lane),每條車(chē)道都包括獨(dú)立的指令讀緩沖、寄存器及執(zhí)行單元和讀取/存儲(chǔ)單元,可以將一條車(chē)道中的數(shù)據(jù)經(jīng)過(guò)車(chē)道間總線(xiàn)送到其他車(chē)道以便在車(chē)道間交換數(shù)據(jù)。請(qǐng)參考圖8A,其為本發(fā)明所述車(chē)道間總線(xiàn)的示意圖。其中車(chē)道801的輸出驅(qū)動(dòng)器810驅(qū)動(dòng)總線(xiàn)820將數(shù)據(jù)送至車(chē)道802。例如,可以將車(chē)道801中執(zhí)行單元的輸出通過(guò)驅(qū)動(dòng)器810經(jīng)總線(xiàn)820送到車(chē)道802中的寄存器堆或執(zhí)行單元。進(jìn)一步,請(qǐng)參考圖8B。其中車(chē)道801輸出的傳輸門(mén)811、812可在配置信息控制下分別以車(chē)道801的輸出驅(qū)動(dòng)車(chē)道間總線(xiàn)830及840;車(chē)道802輸出的傳輸門(mén)821、822可在配置信息控制下分別以車(chē)道802的輸出驅(qū)動(dòng)車(chē)道間總線(xiàn)830及840。車(chē)道801的輸入選擇器815選擇總線(xiàn)830或840作為車(chē)道801的輸入。車(chē)道802的輸入選擇器825選擇總線(xiàn)830或840作為車(chē)道802的輸入。其中輸入選擇器可以是配置信息,也可以是寄存器號(hào)碼匹配的結(jié)果。例如,車(chē)道801執(zhí)行的指令其目標(biāo)寄存器為R1,而車(chē)道802執(zhí)行的指令其一個(gè)操作數(shù)的寄存器號(hào)也為R1,則匹配結(jié)果使得存儲(chǔ)器825將選擇總線(xiàn)840,將車(chē)道801放在總線(xiàn)上的結(jié)果讀入車(chē)道802。車(chē)道間總線(xiàn)還可以根據(jù)配置斷開(kāi)以定義車(chē)道間總線(xiàn)工作的區(qū)間。如在本實(shí)施例中,根據(jù)配置,總線(xiàn)830在開(kāi)關(guān)831的控制下斷開(kāi),總線(xiàn)840在開(kāi)關(guān)841的控制下導(dǎo)通。[0171]根據(jù)本發(fā)明技術(shù)方案,在某些模式下不同車(chē)道的執(zhí)行單元需要同樣的操作數(shù)作為輸入,而在另外一些模式下需要各車(chē)道的執(zhí)行單元各有獨(dú)立的操作數(shù)作為輸入。請(qǐng)參考圖8C,其為本發(fā)明所述為不同車(chē)道的執(zhí)行單元提供同一或不同的操作數(shù)的示意圖。其中,執(zhí)行單元850、851、852、853各是不同車(chē)道的執(zhí)行單元,寄存器堆860、861、862、863是上述執(zhí)行單元相應(yīng)的寄存器堆。當(dāng)各車(chē)道需要獨(dú)立的操作數(shù)時(shí),則執(zhí)行單元850的執(zhí)行結(jié)果存儲(chǔ)進(jìn)其同一車(chē)道的寄存器堆860,而當(dāng)執(zhí)行單元需要操作數(shù)時(shí),相應(yīng)地從寄存器堆860讀取。其他三個(gè)車(chē)道也按同樣方式操作。[0172]當(dāng)各車(chē)道在某些模式需要協(xié)同執(zhí)行同一程序時(shí),可經(jīng)由車(chē)道間總線(xiàn)870將一個(gè)車(chē)道的執(zhí)行單元輸出送到多個(gè)車(chē)道的寄存器堆去,將執(zhí)行結(jié)果存進(jìn)參與協(xié)作的多個(gè)車(chē)道的相應(yīng)寄存器堆。如此,每個(gè)車(chē)道的執(zhí)行單元讀操作數(shù)時(shí)都可以讀到同樣的操作數(shù)。[0173]根據(jù)本發(fā)明技術(shù)方案,可以用多個(gè)循跡器實(shí)現(xiàn)多指令多數(shù)據(jù)流(MMD)等操作。在一個(gè)典型的多指令多數(shù)據(jù)流系統(tǒng)中,多條指令被同時(shí)在相應(yīng)的多條車(chē)道上執(zhí)行,此多指令多數(shù)據(jù)流操作中的所有車(chē)道共享同一個(gè)指令緩存和同一個(gè)數(shù)據(jù)緩存。[0174]請(qǐng)參考圖9A,其為本發(fā)明所述多指令多數(shù)據(jù)流操作的一個(gè)實(shí)施例。圖9A所示的結(jié)構(gòu)包含了指令緩存1101、軌道表1103、數(shù)據(jù)緩存1105、四個(gè)執(zhí)行單元1111、1113、1115、1117,以及分別與這四個(gè)執(zhí)行單元對(duì)應(yīng)的四個(gè)循跡器1121、1123、1125、1127和四個(gè)指令讀緩沖1131、1133、1135、1137。其中,每個(gè)執(zhí)行單元包含寄存器堆、算術(shù)邏輯單元(ALU)和譯碼器,能夠獨(dú)立地執(zhí)行從相應(yīng)的指令讀緩沖送來(lái)的指令。[0175]在本實(shí)施例中,軌道表1103有4個(gè)讀口,同時(shí)支持四個(gè)循跡器的4個(gè)讀指針循跡,分別輸出對(duì)應(yīng)的軌跡點(diǎn)的內(nèi)容。每個(gè)循跡器的功能與運(yùn)行過(guò)程與之前實(shí)施例所述相同,即提前移動(dòng)并停留在軌道表中其對(duì)應(yīng)的車(chē)道正在執(zhí)行的當(dāng)前指令之后的第一個(gè)分支點(diǎn)。指令緩存1101根據(jù)所有指令讀緩沖中的匹配結(jié)果,同時(shí)向四個(gè)指令讀緩沖提供各個(gè)當(dāng)前指令塊的下一指令塊及目標(biāo)指令塊。各個(gè)指令讀緩沖在對(duì)應(yīng)令牌傳遞器的控制下,向相應(yīng)的車(chē)道輸出指令供譯碼和執(zhí)行。[0176]在具體實(shí)現(xiàn)中,可以用四個(gè)包含相同內(nèi)容,但各自只支持一個(gè)循跡器循跡的軌道表代替圖9A中的軌道表1101。請(qǐng)參考圖9B,其為本發(fā)明所述用四個(gè)包含相同內(nèi)容的軌道表實(shí)現(xiàn)多指令多數(shù)據(jù)流操作軌道表循跡的實(shí)施例。其中軌道表1151、1153、1155和1157包含同樣的內(nèi)容,并分別根據(jù)循跡器1161、1163、1165和1167的讀指針的指向輸出對(duì)應(yīng)的軌跡點(diǎn)內(nèi)容。當(dāng)需要對(duì)四個(gè)軌道表中的任意一個(gè)進(jìn)行軌道的新建或替換時(shí),也同時(shí)對(duì)另外三個(gè)軌道表進(jìn)行同樣的操作,從而始終保持四個(gè)軌道表內(nèi)容的一致。這樣,實(shí)現(xiàn)了與圖9A中軌道表循跡相同的功能。[0177]此外,還可以采用時(shí)分復(fù)用的方式由一個(gè)只有一個(gè)讀口的軌道表依次根據(jù)不同的循跡器讀指針向相應(yīng)的循跡器輸出軌跡點(diǎn)內(nèi)容。請(qǐng)參考圖9C,其為本發(fā)明所述軌道表時(shí)分復(fù)用的實(shí)施例。在本實(shí)施例中,四個(gè)循跡器1171、1173、1175和1177輸出的讀指針被送到選擇器1179,經(jīng)選擇器1179選擇后輸出一個(gè)讀指針值用于對(duì)軌道表1169循跡。軌道表1169則將軌道表內(nèi)容輸出到相應(yīng)的循跡器,此時(shí),其余三個(gè)循跡器不接收該軌跡點(diǎn)內(nèi)容。由于并非每個(gè)循跡器每周期都要訪(fǎng)問(wèn)軌道表,因此這四個(gè)循跡器可以采用此時(shí)分復(fù)用的方式訪(fǎng)問(wèn)軌道表。進(jìn)一步地,也可以根據(jù)四個(gè)循跡器對(duì)應(yīng)的車(chē)道中正在執(zhí)行的程序的優(yōu)先級(jí),對(duì)選擇器1079的選擇信號(hào)進(jìn)行控制,使得在同樣的時(shí)間內(nèi),提供給各個(gè)車(chē)道執(zhí)行的指令的數(shù)目是可調(diào)節(jié)的。還可以通過(guò)向軌道表1169及循跡器1171、1173、1175、1177提供更高頻率的時(shí)鐘信號(hào)(如該時(shí)鐘的頻率為車(chē)道執(zhí)行指令所用的系統(tǒng)時(shí)鐘頻率的四倍),使得在一個(gè)系統(tǒng)時(shí)鐘周期內(nèi),軌道表能依次向所有循跡器輸出軌跡點(diǎn)內(nèi)容。這樣,各個(gè)指令讀緩存就可以不間斷地向?qū)?yīng)的車(chē)道提供指令。[0178]根據(jù)本發(fā)明所述技術(shù)方案,還可以根據(jù)軌道表中存儲(chǔ)的分支點(diǎn)內(nèi)容,確定從分支點(diǎn)開(kāi)始的若干個(gè)分支點(diǎn)的后續(xù)軌道信息。所述后續(xù)指令塊(軌道)包括下一軌道和分支目標(biāo)軌道。這樣,當(dāng)循跡器的讀指針指向一個(gè)分支點(diǎn)并讀出所述信息后,就可以根據(jù)各個(gè)車(chē)道當(dāng)前的執(zhí)行情況相應(yīng)提供不同的待執(zhí)行軌道信息。請(qǐng)參考圖9D,其為本發(fā)明所述向多車(chē)道提供待執(zhí)行軌道信息的一個(gè)實(shí)施例。[0179]以根據(jù)之前兩層分支歷史信息進(jìn)行預(yù)測(cè)為例,在圖9D中,軌道表1201根據(jù)循跡器讀指針1203的指向,輸出當(dāng)前分支指令對(duì)應(yīng)的四種軌道信息1211、1213、1215和1217。所述四種軌道信息與從當(dāng)前分支點(diǎn)開(kāi)始的兩個(gè)分支點(diǎn)的分支轉(zhuǎn)移執(zhí)行情況的對(duì)應(yīng)關(guān)系為:軌道信息1211對(duì)應(yīng)第一個(gè)分支轉(zhuǎn)移和第二個(gè)分支轉(zhuǎn)移均未發(fā)生時(shí)執(zhí)行的軌道;軌道信息1213對(duì)應(yīng)第一個(gè)分支轉(zhuǎn)移未發(fā)生而第二個(gè)分支轉(zhuǎn)移發(fā)生時(shí)執(zhí)行的軌道;軌道信息1215對(duì)應(yīng)第一個(gè)分支轉(zhuǎn)移發(fā)生而第二個(gè)分支轉(zhuǎn)移未發(fā)生時(shí)執(zhí)行的軌道;軌道信息1217對(duì)應(yīng)第一個(gè)分支轉(zhuǎn)移和第二個(gè)分支轉(zhuǎn)移均發(fā)生時(shí)執(zhí)行的軌道。[0180]例如,對(duì)于從某個(gè)分支點(diǎn)開(kāi)始的兩個(gè)分支點(diǎn)后對(duì)應(yīng)的四條軌道,每條車(chē)道執(zhí)行其中一條,,即圖9D中的寄存器1221、1223、1225、1227、1228和1229分別對(duì)應(yīng)六條車(chē)道且,當(dāng)執(zhí)行到所述分支點(diǎn)時(shí),所述六個(gè)寄存器的值分別為'01'、'10'、'10'、'11'、'00'和'11',則表示可以用軌道信息1211作為車(chē)道五在兩個(gè)分支后對(duì)應(yīng)的軌道信息,用軌道信息1213作為車(chē)道一在兩個(gè)分支后對(duì)應(yīng)的軌道信息,用軌道信息1215作為車(chē)道二和車(chē)道三在兩個(gè)分支后對(duì)應(yīng)的軌道信息,并用軌道信息1217作為車(chē)道四和車(chē)道六在兩個(gè)分支后對(duì)應(yīng)的軌道信息。這樣,使用同一個(gè)循跡器即可同時(shí)給出六個(gè)車(chē)道在兩個(gè)分支后各自對(duì)應(yīng)的軌道,使得這六個(gè)車(chē)道能同時(shí)執(zhí)行相應(yīng)的程序,從而用很小的硬件代價(jià)實(shí)現(xiàn)并行的多路分支并行執(zhí)行。[0181]此外,在多個(gè)循跡器共同訪(fǎng)問(wèn)于同一個(gè)軌道表的情況下,可以為每個(gè)循跡器增加一行獨(dú)立的臨時(shí)軌道,以減輕對(duì)軌道表同時(shí)讀取造成的訪(fǎng)問(wèn)瓶頸問(wèn)題。請(qǐng)參考圖9E,其為本發(fā)明所述具有臨時(shí)軌道行的實(shí)施例。[0182]在本實(shí)施例中,以?xún)蓚€(gè)循跡器1303和1305同時(shí)訪(fǎng)問(wèn)軌道表1301為例。當(dāng)循跡器1303的讀指針1307指向一條新的軌道時(shí),選擇器1311選擇讀指針1307的值并通過(guò)總線(xiàn)1313輸出對(duì)軌道表1301尋址,讀出對(duì)應(yīng)的整行軌道的內(nèi)容并存儲(chǔ)在臨時(shí)軌道行1315中。此后,只有循跡器1303的讀指針依然指向同一條軌道,則可以直接從臨時(shí)軌道行1315中讀出相應(yīng)軌跡點(diǎn)的內(nèi)容,而不需要訪(fǎng)問(wèn)軌道表1301。類(lèi)似地,當(dāng)循跡器1305的讀指針1309指向一條新的軌道時(shí),選擇器1311選擇讀指針1309的值并通過(guò)總線(xiàn)1313輸出對(duì)軌道表1301尋址,讀出對(duì)應(yīng)的整行軌道的內(nèi)容并存儲(chǔ)在臨時(shí)軌道行1317中。此后,只有循跡器1305的讀指針依然指向同一條軌道,則可以直接從臨時(shí)軌道行1317中讀出相應(yīng)軌跡點(diǎn)的內(nèi)容,而不需要訪(fǎng)問(wèn)軌道表1301。這樣,不但可以避免兩個(gè)循跡器同時(shí)對(duì)軌道表1301進(jìn)行訪(fǎng)問(wèn)所造成的沖突,還能減少對(duì)軌道表1301的訪(fǎng)問(wèn)次數(shù),從而降低功耗。[0183]進(jìn)一步地,可以增大臨時(shí)軌道的規(guī)模,以更好地配合循跡器工作。請(qǐng)參考圖9F,其為本發(fā)明所述具有微型軌道表的實(shí)施例。[0184]在本實(shí)施例中,軌道表1301、循跡器1303和1305與圖9E是相應(yīng)部件相同。不同之處在于,用微型軌道表1355和1357代替了圖9E中的臨時(shí)軌道行1315和1317。在圖9E中,一旦循跡器的讀指針指向一條新的軌道,則對(duì)應(yīng)的臨時(shí)軌道行中的內(nèi)容就會(huì)被相應(yīng)替換。而在本實(shí)施例中,當(dāng)循跡器的讀指針指向一條新的軌道時(shí),所述新軌道的內(nèi)容會(huì)被寫(xiě)入相應(yīng)的微型軌道表中(采用傳統(tǒng)存儲(chǔ)器替換策略)可以被替換的行,使得微型軌道表中能保留一定數(shù)量的軌道。相應(yīng)地,微型軌道表中的每條軌道還具有相應(yīng)的寄存器用于存儲(chǔ)該軌道對(duì)應(yīng)的BNX??梢酝ㄟ^(guò)將循跡器讀指針中的BNX值與微型軌道表中存儲(chǔ)的BNX進(jìn)行匹配,以確定循跡器讀指針指向的軌道是否已經(jīng)存儲(chǔ)在微型軌道表中,以及當(dāng)該軌道已經(jīng)存儲(chǔ)在微型軌道表中時(shí),其在微型軌道表中的位置。這樣,一旦循跡器的讀指針又指向該軌道,則可以直接從微型軌道表中找到相應(yīng)軌跡點(diǎn)并讀出軌跡點(diǎn)內(nèi)容,而不需要再次從軌道表1301中讀取,進(jìn)一步避免了兩個(gè)循跡器同時(shí)對(duì)軌道表1301進(jìn)行訪(fǎng)問(wèn)所造成的沖突,并降低功耗。[0185]此外,微型軌道表的行數(shù)可以與對(duì)應(yīng)的指令讀緩沖的指令塊數(shù)相同或不相同。當(dāng)微型軌道表的行數(shù)與指令讀緩沖的指令塊的塊數(shù)相同時(shí),兩者可以一一對(duì)應(yīng)或不一一對(duì)應(yīng)。若兩者一一對(duì)應(yīng)時(shí),兩者可以共用BNX匹配器,而不需要各自有自己的匹配器。[0186]本發(fā)明所述的指令緩存中可以同時(shí)存有多個(gè)不同的程序,因?yàn)橄鄳?yīng)的軌道表中不同的程序產(chǎn)生的軌道是正交的(orthogonal),每一個(gè)循跡器都是在其相應(yīng)的程序的軌道上運(yùn)行。除非是程序間共用的子程序,否則循跡器不會(huì)從一個(gè)程序的軌道上跳到另一個(gè)程序的軌道上。即使執(zhí)行共同的子程序,執(zhí)行完畢后來(lái)自不同軌道的調(diào)用也會(huì)返回其各自的軌道。[0187]根據(jù)本發(fā)明技術(shù)方案,在多車(chē)道處理器環(huán)境下,可以構(gòu)建一種通用的令牌傳遞器單元,使得令牌傳遞器不僅能控制本車(chē)道的指令執(zhí)行,并且根據(jù)需要可被配置為車(chē)道之間的令牌傳遞器相互相關(guān),實(shí)現(xiàn)對(duì)多車(chē)道的協(xié)同操作,如指令集并行,單指令流多數(shù)據(jù)流等??蓪⑺龆鄠€(gè)車(chē)道之間的令牌傳遞器按陣列方式排列,并根據(jù)需要對(duì)若干令牌傳遞器進(jìn)行相應(yīng)配置,即可實(shí)現(xiàn)不同的功能。[0188]請(qǐng)參考圖10A,其為本發(fā)明所述令牌傳遞器陣列的實(shí)施例。在本實(shí)施例中顯示了由12個(gè)令牌傳遞器構(gòu)成的陣列。如之前實(shí)施例所述,每列令牌傳遞器與一個(gè)指令讀緩沖對(duì)應(yīng),屬于同一個(gè)車(chē)道,在此共顯示3個(gè)車(chē)道中的部分令牌傳遞器。其中,每個(gè)令牌傳遞器對(duì)應(yīng)指令讀緩沖中的一條指令。每個(gè)令牌傳遞器由基本傳遞器(如1611)與一個(gè)三輸入門(mén)(如1631)組成。請(qǐng)參考圖10B,其為本發(fā)明所述令牌傳遞器陣列中每個(gè)基本傳遞器的結(jié)構(gòu)。[0189]在圖10B中,每個(gè)基本傳遞器至少由一個(gè)令牌信號(hào)寄存器1651、一個(gè)或門(mén)1653和一個(gè)選擇器1655構(gòu)成。當(dāng)然,如之前實(shí)施例所述,令牌傳遞器也可以有更為復(fù)雜的結(jié)構(gòu)以實(shí)現(xiàn)更多的功能。在本實(shí)施例中,或門(mén)1653位于令牌信號(hào)寄存器1651之后,其一個(gè)輸入來(lái)源于目標(biāo)譯碼器,另一個(gè)輸入來(lái)源于令牌信號(hào)寄存器1651的輸出。此外,選擇器1655的輸出直接寫(xiě)入令牌信號(hào)寄存器1651。此外,令牌傳遞器還可以有其他各種合適的實(shí)現(xiàn)方式,在此不再一一列舉?;氐綀D10A,除最左面一列,其他各列都有一個(gè)三輸入選擇器1631、1633、1635、1641、1643與1645。這些選擇器可被配置以確定列之間的協(xié)同關(guān)系。最左面一列也可以有一個(gè)三輸入選擇器,但被固定接為只接收輸入A的輸入,即只接收本列的令牌傳遞。[0190]回到圖10A,根據(jù)配置,當(dāng)每列的令牌傳遞器與其他列沒(méi)有聯(lián)系時(shí),每個(gè)車(chē)道各自獨(dú)立執(zhí)行存儲(chǔ)在本車(chē)道指令讀緩沖的指令(即各車(chē)道執(zhí)行不同的程序)。此時(shí),圖10A中的選擇器1631、1633、1635、1641、1643和1645均選擇來(lái)源于其本列的令牌傳遞器的輸出(即選擇器的輸入A)。這樣,令牌傳遞器1601、1603、1605和1607構(gòu)成第一列獨(dú)立的能依次傳遞令牌信號(hào)的令牌傳遞器;令牌傳遞器1611、1613、1615和1617構(gòu)成第二列獨(dú)立的能依次傳遞令牌信號(hào)的令牌傳遞器;令牌傳遞器1621、1623、1625和1627構(gòu)成第三列獨(dú)立的能依次傳遞令牌信號(hào)的令牌傳遞器。之后,按前述實(shí)施例所述方法,三組令牌傳遞器可以各自向?qū)?yīng)的車(chē)道提供相應(yīng)的指令讀緩沖中的指令以供執(zhí)行,從而實(shí)現(xiàn)類(lèi)似多指令多數(shù)據(jù)流(MMD)處理器的功能。此時(shí),由圖9實(shí)施例中的復(fù)數(shù)個(gè)循跡器為每組令牌傳遞器提供分支目標(biāo)指令地址和下一指令塊地址。這種令牌傳遞器中的相關(guān)方式稱(chēng)為列相關(guān)。[0191]當(dāng)這些列對(duì)應(yīng)的指令讀緩沖中存儲(chǔ)的是相同的指令(即這些指令讀緩沖中的內(nèi)容完全一致)時(shí),每個(gè)車(chē)道同時(shí)執(zhí)行相同的指令(例如GPU的操作)。此時(shí),可以將最左面的一列設(shè)為主動(dòng)列,以一個(gè)循跡器指揮此列指令讀緩沖的操作;其右面各列設(shè)為從動(dòng)列,跟隨主動(dòng)列,與主動(dòng)列同步操作。[0192]根據(jù)本發(fā)明技術(shù)方案,可以通過(guò)對(duì)主動(dòng)列和從動(dòng)列的配置,構(gòu)成一種行相關(guān)的令牌傳遞器的相關(guān)關(guān)系。具體地,圖10A中的選擇器1631、1633、1635、1641、1643和1645均選擇來(lái)源于其左側(cè)令牌傳遞器的輸出(即選擇器的輸入C)。即,基本傳遞器1611和1621均不工作,選擇器1631與1641傳遞基本傳遞器1601中的令牌信號(hào)值;基本傳遞器1613和1623均不工作,選擇器1633與1643傳遞基本傳遞器1603中的令牌信號(hào)值;基本傳遞器1615和1625均不工作,選擇器1635和1645傳遞基本傳遞器1605中的令牌信號(hào)值。這樣,當(dāng)令牌信號(hào)位于基本傳遞器1601時(shí),基本傳遞器1601中的令牌信號(hào)值除了控制對(duì)應(yīng)指令向基本傳遞器1601所在列對(duì)應(yīng)的車(chē)道輸出外,還被傳遞到選擇器1631及選擇器1641,從而控制基本傳遞器1611對(duì)應(yīng)的指令向其所在列對(duì)應(yīng)車(chē)道輸出,以及控制基本傳遞器1621對(duì)應(yīng)的指令向其所在列對(duì)應(yīng)車(chē)道輸出。[0193]同樣地,當(dāng)令牌信號(hào)被傳遞到基本傳遞器1603時(shí),控制基本傳遞器1603對(duì)應(yīng)的指令、基本傳遞器1611對(duì)應(yīng)的指令以及基本傳遞器1621對(duì)應(yīng)的指令分別向其各自所在列對(duì)應(yīng)的車(chē)道輸出。在這種情況下,所述主動(dòng)令牌傳遞器驅(qū)動(dòng)所述從動(dòng)令牌傳遞器輸出同樣的指令,從而實(shí)現(xiàn)類(lèi)似單指令多數(shù)據(jù)流(SMD)處理器或GPU的功能。[0194]根據(jù)本發(fā)明技術(shù)方案,可以通過(guò)對(duì)主動(dòng)列和從動(dòng)列的配置,構(gòu)成一種對(duì)角相關(guān)的令牌傳遞器的相關(guān)關(guān)系。具體地,圖10A中的選擇器1631、1633、1635、1641、1643和1645均選擇來(lái)源于其左上方令牌傳遞器的輸出(即選擇器的輸入B)。即,令牌傳遞器1613和1625均輸出令牌傳遞器1601中的令牌信號(hào)值,令牌傳遞器1615和1627均輸出令牌傳遞器1603中的令牌信號(hào)值。這樣,當(dāng)令牌信號(hào)位于令牌傳遞器1601時(shí),令牌傳遞器1601中的令牌信號(hào)值除了控制對(duì)應(yīng)指令向令牌傳遞器1601所在列對(duì)應(yīng)的車(chē)道輸出外,還被傳遞到選擇器1633及選擇器1645,從而控制令牌傳遞器1613對(duì)應(yīng)的指令向其所在列對(duì)應(yīng)車(chē)道輸出,以及控制令牌傳遞器1625對(duì)應(yīng)的指令向其所在列對(duì)應(yīng)車(chē)道輸出。[0195]同樣地,當(dāng)令牌信號(hào)被傳遞到令牌傳遞器1603時(shí),控制令牌傳遞器1603對(duì)應(yīng)的指令、令牌傳遞器1615對(duì)應(yīng)的指令以及令牌傳遞器1627對(duì)應(yīng)的指令分別向其各自所在列對(duì)應(yīng)的車(chē)道輸出。此時(shí),在主動(dòng)令牌傳遞器的驅(qū)動(dòng)下,主動(dòng)令牌傳遞器和從動(dòng)令牌傳遞器同時(shí)輸出連續(xù)的多條指令,即同時(shí)將連續(xù)多條指令送往相應(yīng)數(shù)目的車(chē)道執(zhí)行,從而實(shí)現(xiàn)類(lèi)似指令級(jí)并行(ILP)處理器的功能。[0196]本發(fā)明所述的可配置處理器系統(tǒng)可以根據(jù)配置實(shí)現(xiàn)多種處理器的功能。當(dāng)所述處理器系統(tǒng)被配置為指令級(jí)并行處理器時(shí),由不同的車(chē)道相應(yīng)執(zhí)行連續(xù)指令中的各條指令。此時(shí),需要檢查由指令讀緩沖同時(shí)送出的各條指令之間的相關(guān)性;并檢測(cè)指令讀緩沖在相鄰若干個(gè)周期內(nèi)送出的指令之間的相關(guān)性,將已由執(zhí)行單元執(zhí)行完畢但尚未寫(xiě)回寄存器堆的執(zhí)行結(jié)果通過(guò)旁路提前送到執(zhí)行相關(guān)后續(xù)指令的執(zhí)行單元,以提高處理器執(zhí)行指令的效率。[0197]根據(jù)本發(fā)明技術(shù)方案,還可以將多個(gè)車(chē)道配置為指令級(jí)并行執(zhí)行模式。請(qǐng)參考圖11,其為包含令牌傳遞器陣列的可配置的包含多個(gè)車(chē)道處理器系統(tǒng)的實(shí)施例。在本實(shí)施例中,以配置為最高4發(fā)射的指令級(jí)并行處理器為例進(jìn)行說(shuō)明。在圖11中,模塊1701包含了令牌傳遞器陣列及相應(yīng)的指令讀緩沖(在本實(shí)施例中對(duì)應(yīng)4個(gè)車(chē)道)。根據(jù)配置,主動(dòng)令牌傳遞器用于傳遞令牌信號(hào),而從動(dòng)令牌傳遞器則接受從其左上方令牌傳遞器送來(lái)的令牌信號(hào),即配置對(duì)角相關(guān)。為了簡(jiǎn)化起見(jiàn),模塊1701中省略了無(wú)關(guān)邏輯,只顯示了包含配置后實(shí)際有效的部件的示意圖。如之前實(shí)施例所述,模塊1701可以在每個(gè)周期輸出從令牌信號(hào)對(duì)應(yīng)的指令開(kāi)始的連續(xù)4條指令。[0198]模塊1703用于檢測(cè)指令間相關(guān)性,可以根據(jù)配置檢測(cè)連續(xù)若干指令間的相關(guān)性。以檢測(cè)連續(xù)4條指令間的相關(guān)性為例,所述連續(xù)4條指令分別由模塊1701的4個(gè)車(chē)道1411、1413、1415和1417經(jīng)總線(xiàn)1461、1463、1465和1467輸出;所述連續(xù)4條指令中前3條指令的目標(biāo)寄存器號(hào)被送到總線(xiàn)1711、1713和1715,所述連續(xù)4條指令中的8個(gè)源寄存器號(hào)被送到總線(xiàn)1721、1723、1725、1727、1731、1733、1735和1737。如圖11所示,總線(xiàn)171U1713及1715分別與總線(xiàn)1725、1727、1731、1733、1735及1737之間的相交處均有可配置的比較器,通過(guò)對(duì)這些比較器的配置(即配置為進(jìn)行比較或不進(jìn)行比較),可以決定哪些指令對(duì)應(yīng)的源寄存器號(hào)與哪些指令對(duì)應(yīng)的目標(biāo)寄存器號(hào)進(jìn)行比較,從而進(jìn)行指令間的相關(guān)性檢測(cè)。[0199]在本實(shí)施例中,用空心圓圈表示了配置為進(jìn)行比較的比較器,而比較器的比較結(jié)果按參與比較的源寄存器號(hào)對(duì)應(yīng)的指令進(jìn)行或操作。S卩,總線(xiàn)1725及1727與總線(xiàn)1711相交處的2個(gè)比較器被分別配置為第2條指令的兩個(gè)源寄存器號(hào)和第1條指令的目標(biāo)寄存器號(hào)進(jìn)行比較,得到的2個(gè)比較結(jié)果被送到或邏輯1743進(jìn)行或操作;總線(xiàn)1731及1733與總線(xiàn)1711及1713相交處的4個(gè)比較器被分別配置為第3條指令的兩個(gè)源寄存器號(hào)和第1、2條指令的目標(biāo)寄存器號(hào)進(jìn)行比較,得到的4個(gè)比較結(jié)果被送到或邏輯1745進(jìn)行或操作;總線(xiàn)1735及1737與總線(xiàn)1711、1713及1715相交處的6個(gè)比較器被分別配置為第4條指令的兩個(gè)源寄存器號(hào)和第1、2、3條指令的目標(biāo)寄存器號(hào)進(jìn)行比較;得到的6個(gè)比較結(jié)果被送到或邏輯1747進(jìn)行或操作。在本實(shí)施例中,根據(jù)相關(guān)性判斷的要求,不需要將第1條指令的兩個(gè)源寄存器號(hào)和其他指令的目標(biāo)寄存器號(hào)進(jìn)行比較,因此總線(xiàn)1721及1723與總線(xiàn)1711、1713、1715及1717的相交處的比較器均沒(méi)有被配置成進(jìn)行比較,因此或邏輯1741的輸出為'〇'。[0200]之后,或邏輯1741、1743、1745和1747的輸出被分別送到所述4個(gè)車(chē)道1411、1413U415和1417對(duì)應(yīng)的判斷模塊1751、1753、1755和1757。在圖11中,每個(gè)判斷模塊均接受來(lái)源于對(duì)應(yīng)或邏輯的輸出。此外,各個(gè)判斷模塊依次級(jí)連,右側(cè)判斷邏輯的輸出下移一位接到左側(cè)判斷邏輯的對(duì)應(yīng)輸入,而所述右側(cè)判斷邏輯對(duì)應(yīng)的或邏輯的輸出接到所述左側(cè)判斷邏輯剩余的那個(gè)輸入上。例如,判斷邏輯1755除了接收或邏輯1745的輸出外,其右側(cè)從上向下的第1個(gè)輸入端接收或邏輯1747的輸出,第2、3、4個(gè)輸入端分別接收判斷邏輯1757左側(cè)從上向下的第1、2、3個(gè)輸出端的輸出。[0201]為支持本實(shí)施例中的最大4條指令并行執(zhí)行,對(duì)應(yīng)的4個(gè)判斷邏輯共同構(gòu)成一組相關(guān)性檢測(cè)模塊。所述的一組相關(guān)性檢測(cè)模塊中,最后一級(jí)判斷邏輯(即最左邊的一個(gè)判斷邏輯)的輸入合并組成選擇信號(hào)1739控制各個(gè)令牌傳遞器中的選擇器,用于將令牌信號(hào)傳遞到正確的令牌傳遞器。[0202]在本實(shí)施例中,每個(gè)判斷邏輯的內(nèi)容結(jié)構(gòu)相同。請(qǐng)參考圖12,其為判斷模塊內(nèi)部結(jié)構(gòu)示意圖。根據(jù)本發(fā)明所述技術(shù)方案,不需要檢測(cè)寄存器的"讀后寫(xiě)(WriteafterRead,WAR)相關(guān)"和"讀后讀(ReadafterRead,RAR)相關(guān)",只需要檢測(cè)"寫(xiě)后讀(ReadafterWrite,RAW)相關(guān)"和"寫(xiě)后寫(xiě)(WriteafterWrite,WAW)"相關(guān),即當(dāng)一條指令的目標(biāo)寄存器與其之后某條指令的源寄存器號(hào)相同時(shí)會(huì)產(chǎn)生寫(xiě)后讀相關(guān),這兩條指令不能并行執(zhí)行,以及當(dāng)兩條指令均寫(xiě)同一個(gè)目標(biāo)寄存器時(shí),應(yīng)丟棄前一條指令對(duì)應(yīng)的值,而將后一條指令對(duì)應(yīng)的值寫(xiě)入寄存器堆。[0203]在本實(shí)施例中,以每條指令最多用到兩個(gè)源寄存器和一個(gè)目標(biāo)寄存器為例進(jìn)行說(shuō)明,其他情況也可以此類(lèi)推。在"寫(xiě)后讀相關(guān)"檢測(cè)過(guò)程中,從前三條指令中提取出的目標(biāo)寄存器號(hào)1711U713和1715與后三條指令中提取出的源寄存器號(hào)1725、1727、1731、1733、1735和1737相應(yīng)比較。具體地,目標(biāo)寄存器號(hào)1711分別與源寄存器號(hào)1725、1727、1731、1733U735和1737進(jìn)行比較;目標(biāo)寄存器號(hào)1713分別與源寄存器號(hào)1731、1733、1735和1737進(jìn)行比較;目標(biāo)寄存器號(hào)1715分別與源寄存器號(hào)1735和1737進(jìn)行比較。所述比較結(jié)果被分別送到所在的車(chē)道中的判斷邏輯。[0204]在本實(shí)施例中,每組判斷邏輯的最后一級(jí)(即最左邊的一個(gè),因每組判斷邏輯的相關(guān)判斷是從右到左)中的或邏輯輸出強(qiáng)制為'1'。其余判斷邏輯對(duì)本車(chē)道比較結(jié)果及前一級(jí)車(chē)道中判斷模塊送來(lái)的判斷結(jié)果進(jìn)行處理,并由最后一級(jí)的判斷邏輯輸出的判斷結(jié)果作為選擇信號(hào)1739用于控制圖11中各個(gè)令牌傳遞器中的選擇器。[0205]假設(shè)當(dāng)前令牌信號(hào)位于令牌傳遞器1431,則令牌傳遞器1431、1433、1435和1437對(duì)應(yīng)的四條指令分別經(jīng)總線(xiàn)1461、1463、1465和1467被同時(shí)送往相關(guān)性檢測(cè)單元及執(zhí)行單元。執(zhí)行單元根據(jù)相關(guān)性檢測(cè)單元的檢測(cè)結(jié)果決定這四條指令中的哪幾條可以被并行執(zhí)行。同時(shí),相關(guān)性檢測(cè)單元輸出的選擇信號(hào)1739被送到各個(gè)令牌傳遞器用于傳遞令牌信號(hào)。[0206]下面結(jié)合圖11和圖12,對(duì)相關(guān)性檢測(cè)過(guò)程進(jìn)行說(shuō)明。假設(shè)令牌在1431令牌傳遞器,且車(chē)道1411、1413、1415和1417分別通過(guò)總線(xiàn)1461、1463、1465和1467發(fā)射指令。如果發(fā)射的四條指令之間沒(méi)有相關(guān)性,或邏輯1741的輸出強(qiáng)制為'1',以阻斷本組判斷邏輯對(duì)相鄰組的影響?;蜻壿?743U745和1747的輸出均為'0'。而或邏輯1749屬于另一組判斷邏輯中的最后一級(jí),因此其輸出也強(qiáng)制為'1',以阻斷該組判斷邏輯對(duì)本組的影響。此時(shí),判斷邏輯1759送往判斷邏輯1757的四個(gè)輸出送上到下分別為'1'、'0'、'0'和'0'。在判斷邏輯1757中,由于或邏輯1747的輸出為'0',因此,判斷邏輯1757送往判斷邏輯1755的四個(gè)輸出送上到下分別為'〇'、'1'、'〇'和'0'。類(lèi)似地,判斷邏輯1755送往判斷邏輯1753的四個(gè)輸出送上到下分別為'0'、'0'、'1'和'0';而判斷邏輯1753的四個(gè)輸出送上到下分別為和'1'。S卩,移位阻斷邏輯1753,1755與1757均不阻斷信號(hào)的傳遞,1471,1472與1473上的信號(hào)為經(jīng)移位傳遞的第二指令相關(guān)位1491,第三指令相關(guān)位1492與第四指令相關(guān)位1493上的'0'(第二,第三,第四條指令未檢測(cè)到相關(guān)),而固定接成'1'的1494信號(hào)經(jīng)三級(jí)移位傳遞到達(dá)信號(hào)1474,使得控制令牌傳遞器中所有四路選擇器的控制信號(hào)為0001,選擇所有四路選擇器上第4個(gè)輸入。各個(gè)四路選擇器的第4輸入都為'〇',除了令牌傳遞器1439中的四路選擇器,該選擇器的第4輸入接到為'1'的控制線(xiàn)1447。因此,令牌信號(hào)越過(guò)令牌信號(hào)傳遞器1433、1435和1437被傳進(jìn)令牌傳遞器1439。因?yàn)閺牧钆菩盘?hào)傳遞器1431對(duì)應(yīng)的指令開(kāi)始的4條指令之間沒(méi)有相關(guān)性,這四條指令并行發(fā)射成功,這四條指令均可由執(zhí)行單元執(zhí)行。下一時(shí)鐘周期,指令緩沖器輸出從令牌信號(hào)傳遞器1439對(duì)應(yīng)的指令開(kāi)始的4條指令供處理器核執(zhí)行也供相關(guān)性檢測(cè)單元檢測(cè)。[0207]再回到從令牌信號(hào)傳遞器1431對(duì)應(yīng)的指令起的四條指令一起發(fā)射。如果僅有第四條指令(令牌信號(hào)傳遞器1437對(duì)應(yīng)的指令)有相關(guān)時(shí)(即第四條指令與前三條指令中的任意一條相關(guān)),則第四條指令的相關(guān)位1493為'1',使移位阻斷邏輯1757中的三個(gè)與門(mén)的輸出都為'〇',阻斷了信號(hào)1494的傳遞,信號(hào)1493經(jīng)二級(jí)移位到達(dá)信號(hào)1473。使得控制令牌傳遞器中所有四路選擇器的控制信號(hào)為'〇〇1〇',選擇所有四路選擇器上第3個(gè)輸入。各個(gè)四路選擇器的第3輸入都為'0',除了令牌傳遞器1437中的四路選擇器,該選擇器的第3輸入接到為'1'的控制線(xiàn)1447。這樣,令牌被傳進(jìn)令牌傳遞器1437。這是因?yàn)榱钆苽鬟f器1437對(duì)應(yīng)的指令與之前三條指令有相關(guān),不能與這三條指令一同發(fā)射,必須在新的一個(gè)周期內(nèi)重新發(fā)射。此外,只有所述前三條指令可以由執(zhí)行單元執(zhí)行。下一時(shí)鐘周期,指令緩沖器輸出從令牌信號(hào)傳遞器1437對(duì)應(yīng)的指令開(kāi)始的4條指令供處理器核執(zhí)行也供相關(guān)性檢測(cè)單元檢測(cè)。令牌傳遞器1437對(duì)應(yīng)的指令這次從第一車(chē)道1411的總線(xiàn)1461輸出(上一周從第4車(chē)道1417的總線(xiàn)1467輸出)。[0208]再回到從令牌傳遞器1431對(duì)應(yīng)的指令起的四條指令一起發(fā)射。如第二(令牌傳遞器1433對(duì)應(yīng)的)、第四(令牌傳遞器1437對(duì)應(yīng)的)條指令均與之前指令有相關(guān)時(shí),則第四條指令的相關(guān)位信號(hào)1493為'1',使移位阻斷邏輯1757中的三個(gè)與門(mén)的輸出都為'0',阻斷了信號(hào)1494的傳遞,信號(hào)1493移位往左傳遞。但此時(shí)第二條指令的相關(guān)位信號(hào)1491為'1',使移位阻斷邏輯1753中的三個(gè)與門(mén)的輸出都為'0',阻斷了信號(hào)1493的傳遞,1491本身到達(dá)信號(hào)1471,使得控制令牌傳遞器中所有四路選擇器的控制信號(hào)為'1000',選擇所有四路選擇器上第1個(gè)輸入。各四路選擇器的第1輸入都為'〇',除了令牌傳遞器1433中的四路選擇器,該選擇器的第1輸入接到為'1'的控制線(xiàn)1447。因此,令牌信號(hào)被傳進(jìn)令牌傳遞器1433。此外,只有所述第一條指令可以由執(zhí)行單元執(zhí)行。下一時(shí)鐘周期,指令緩沖器輸出從令牌傳遞器1433對(duì)應(yīng)的指令開(kāi)始的4條指令供處理器核執(zhí)行也供相關(guān)性檢測(cè)單元1449檢測(cè)。令牌傳遞器1433對(duì)應(yīng)的指令這次從第一車(chē)道1411的1461總線(xiàn)輸出(上一周從第2車(chē)道1413的1463總線(xiàn)輸出)。[0209]在本實(shí)施例中,由于令牌傳遞器中的選擇器是四輸入選擇器,而相關(guān)性檢測(cè)模塊是可以配置的,因此可以支持最多4發(fā)射。若要進(jìn)行更少數(shù)目的發(fā)射,則可以對(duì)相關(guān)性檢測(cè)模塊進(jìn)行相應(yīng)配置,阻斷相關(guān)位信號(hào)的傳遞。例如,在圖12中,若要進(jìn)行3發(fā)射,則可以將相關(guān)位信號(hào)1493配置為'1',阻斷判斷模塊1757中的與門(mén),使得控制信號(hào)1739中的信號(hào)1471、1472和1473中有且僅有一個(gè)為'1',而信號(hào)1474為'0',即根據(jù)前三條指令(即總線(xiàn)1461U462和1463上的指令)的相關(guān)性檢測(cè)結(jié)果,令牌信號(hào)被相應(yīng)傳遞到當(dāng)前令牌信號(hào)傳遞器之后的第一個(gè)、第二個(gè)或第三個(gè)令牌信號(hào)傳遞器,從而實(shí)現(xiàn)3發(fā)射的指令級(jí)并行。對(duì)于其他任何合適的最大指令發(fā)射數(shù)目,也可以用類(lèi)似的方式進(jìn)行配置。[0210]根據(jù)本發(fā)明技術(shù)方案,可以通過(guò)配置為較小的發(fā)射率并關(guān)斷不被使用的車(chē)道的電源輸入以達(dá)到省電的目的;也可以通過(guò)配置為較小的發(fā)射率,使得其他車(chē)道能用于別的用途。[0211]在一些指令集體系結(jié)構(gòu)中,通過(guò)對(duì)寄存器中的值進(jìn)行比較確定分支轉(zhuǎn)移是否發(fā)生。對(duì)于這種情況,利用上述相關(guān)性檢測(cè)方法即可保證分支指令執(zhí)行的正確性。[0212]而在另一些指令集體系結(jié)構(gòu)中,通過(guò)對(duì)某些標(biāo)志位進(jìn)行判斷以確定分支轉(zhuǎn)移是否發(fā)生,而所述標(biāo)志位通常是分支指令之前的某條指令的執(zhí)行結(jié)果。對(duì)于這種情況,可以增加相應(yīng)邏輯以進(jìn)行標(biāo)志位的相關(guān)性檢測(cè)。例如,在圖12中,總線(xiàn)1451U452和1453上的值分別表示對(duì)應(yīng)的第1、2、3條指令是否為設(shè)置分支標(biāo)志位的指令,而總線(xiàn)1454、1455和1456上的值分別表示對(duì)應(yīng)的第2、3、4條指令是否為用到所述分支標(biāo)志位的分支指令。這樣,采用與上述寄存器相關(guān)性檢測(cè)相同的方法,即可確定所述連續(xù)4條指令中是否存在具有相關(guān)性的設(shè)置分支標(biāo)志位的指令及分支指令,從而保證分支指令執(zhí)行的正確性。[0213]回到圖11,模塊1705包含了所述4個(gè)車(chē)道1411、1413、1415和1417對(duì)應(yīng)的執(zhí)行單元,模塊1709包含了對(duì)應(yīng)各個(gè)車(chē)道的寄存器堆。其中,每個(gè)寄存器堆均有2個(gè)讀端口(讀端口A和讀端口B),以及4個(gè)寫(xiě)端口。所述讀端口A和讀端口B可以支持同時(shí)讀出兩個(gè)源操作數(shù)。本實(shí)施例中,為支持多個(gè)車(chē)道協(xié)同執(zhí)行同一程序的順序不同指令,所述4個(gè)寫(xiě)端口支持同時(shí)將(對(duì)應(yīng)4個(gè)車(chē)道的)4條指令的執(zhí)行結(jié)果寫(xiě)回寄存器堆。這樣,4個(gè)車(chē)道對(duì)應(yīng)的寄存器堆同時(shí)被寫(xiě)入相同的值,可以保證這4個(gè)寄存器堆中的寄存器值始終一致。如此,當(dāng)每個(gè)車(chē)道中的執(zhí)行單元從本車(chē)道的寄存器堆讀取數(shù)據(jù)時(shí),讀到的是同樣的數(shù)據(jù)。此外,在本實(shí)施例中,對(duì)于4個(gè)車(chē)道中有多條指令的目標(biāo)寄存器相同的情況,需要進(jìn)行"寫(xiě)后寫(xiě)相關(guān)"檢測(cè)。為了簡(jiǎn)化起見(jiàn),圖12中省略了相關(guān)邏輯。對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),應(yīng)能采用與"寫(xiě)后讀相關(guān)"檢測(cè)類(lèi)似的方法進(jìn)行"寫(xiě)后寫(xiě)相關(guān)"檢測(cè),從而僅將這些指令中最后一條的執(zhí)行結(jié)果寫(xiě)入目標(biāo)寄存器。[0214]車(chē)道之間有可配置的車(chē)道間數(shù)據(jù)總線(xiàn),將數(shù)據(jù)從一個(gè)車(chē)道送到其他多個(gè)車(chē)道。請(qǐng)見(jiàn)圖11,其實(shí)現(xiàn)方式是每個(gè)車(chē)道中的執(zhí)行單元都各有配置寄存器控制下的傳輸門(mén),可以將各個(gè)執(zhí)行單元的執(zhí)行結(jié)果按配置驅(qū)動(dòng)各條車(chē)道間總線(xiàn)。各車(chē)道中執(zhí)行單元的輸入都有旁路邏輯控制下的選擇器,可以接收從另一車(chē)道中經(jīng)過(guò)車(chē)道間總線(xiàn)傳遞的數(shù)據(jù)。[0215]模塊1707則包含了旁路邏輯。在本實(shí)施例中,前一個(gè)周期的各條指令的目標(biāo)寄存器號(hào)經(jīng)延時(shí)后與當(dāng)前周期的各條指令的源寄存器號(hào)進(jìn)行比較,以確定能否將已由執(zhí)行單元產(chǎn)生但尚未寫(xiě)回寄存器堆的執(zhí)行結(jié)果旁路作為相應(yīng)指令的源操作數(shù)。模塊1707中的空心圓圈表示比較器。所述連續(xù)4條指令的目標(biāo)寄存器號(hào)1711、1713、1715和1717各自經(jīng)對(duì)應(yīng)的寄存器1771、1773、1775和1777延時(shí)后,分別被送到總線(xiàn)1781、1783、1785和1787上。[0216]為了便于說(shuō)明,假設(shè)前一周期的4條指令之間沒(méi)有相關(guān)性,即當(dāng)前周期的所有指令的源寄存器號(hào)均需要與前一周期的4個(gè)目標(biāo)寄存器號(hào)進(jìn)行比較。對(duì)于前一周期的4條指令之間有相關(guān)性的情況,也可以采用類(lèi)似方法處理,不同之處在于當(dāng)前周期的所有指令的源寄存器號(hào)只需要與前一周期的能并行執(zhí)行的指令的目標(biāo)寄存器號(hào)(在此情況下為至少1個(gè)、最多4個(gè))進(jìn)行比較。[0217]模塊1707中的第1行比較器(共8個(gè))分別前一周期第1條指令的目標(biāo)寄存器號(hào)(即總線(xiàn)1781上的值)與當(dāng)前周期4條指令的8個(gè)源寄存器號(hào)(即總線(xiàn)1721、1723、1725、1727、1731、1733、1735和1737上的值)進(jìn)行比較;類(lèi)似地,第2行比較器,分別對(duì)前一周期第2條指令的目標(biāo)寄存器號(hào)與所述4條指令的8個(gè)源寄存器號(hào)進(jìn)行比較;第3行比較器,分別對(duì)前一周期第3條指令的目標(biāo)寄存器號(hào)與所述4條指令的8個(gè)源寄存器號(hào)進(jìn)行比較;第4行比較器,分別對(duì)前一周期第4條指令的目標(biāo)寄存器號(hào)與所述4條指令的8個(gè)源寄存器號(hào)進(jìn)行比較。對(duì)于當(dāng)前周期的指令而言,可以根據(jù)相應(yīng)的比較結(jié)果決定從旁路獲取源操作數(shù)或從寄存器堆獲取源操作數(shù)。此外,在本實(shí)施例中,對(duì)于4個(gè)車(chē)道中前一周期有多條指令的目標(biāo)寄存器號(hào)均與本周期某個(gè)源寄存器號(hào)相同的情況,需要根據(jù)上一周期進(jìn)行的"寫(xiě)后寫(xiě)相關(guān)"檢測(cè)結(jié)果,將上一周期所述多條指令中最后一條的執(zhí)行結(jié)果作為源操作數(shù)進(jìn)行數(shù)據(jù)旁路。[0218]例如,對(duì)于當(dāng)前周期的第1條指令,其源寄存器號(hào)1721分別與前一周期的4個(gè)目標(biāo)寄存器號(hào)1781、1783、1785和1788比較,比較結(jié)果1795被送到選擇器1791的控制端。選擇器1791有5個(gè)輸入,分別對(duì)應(yīng)前一周期的4條指令的執(zhí)行結(jié)果及寄存器堆的讀端口A。這樣,當(dāng)源寄存器號(hào)1721與目標(biāo)寄存器號(hào)1781相同時(shí),選擇器1791選擇來(lái)源于前一周期的第1條指令的執(zhí)行結(jié)果。類(lèi)似地,若源寄存器號(hào)1721與目標(biāo)寄存器號(hào)1783或1785或1787相同時(shí),選擇器1791分別選擇來(lái)源于前一周期的第2條或第3條或第4條指令的執(zhí)行結(jié)果。如果都不匹配,,則選擇器1791選擇來(lái)源于寄存器堆的讀端口A的操作數(shù)。其他情況也可以以此類(lèi)推。[0219]這樣,本發(fā)明所述的處理器系統(tǒng)的主體部分可以由若干個(gè)結(jié)構(gòu)相同的車(chē)道組成的陣列構(gòu)成,其中每個(gè)車(chē)道包含指令讀緩沖、執(zhí)行單元、寄存器堆、數(shù)據(jù)讀緩沖、讀取/存儲(chǔ)單元,并共享指令緩存、數(shù)據(jù)緩存。進(jìn)一步地,可以通過(guò)配置利用本發(fā)明所述處理器系統(tǒng)實(shí)現(xiàn)各種不同功能的處理器,例如:?jiǎn)沃噶顔螖?shù)據(jù)流(SISD)處理器、單指令多數(shù)據(jù)流處理器、多指令單數(shù)據(jù)流(MISD)處理器、多指令多數(shù)據(jù)流處理器、指令級(jí)并行處理器、或向量(VECTOR)處理器。增加線(xiàn)程資源,還可以實(shí)現(xiàn)多線(xiàn)程(TLP)處理器。線(xiàn)程資源是指存儲(chǔ)指令數(shù)據(jù)以及狀態(tài)等的指令讀緩存、寄存器堆、數(shù)據(jù)讀緩存、狀態(tài)寄存器和流水線(xiàn)段間寄存器等。以下將以由4個(gè)車(chē)道組成的處理器系統(tǒng)為例進(jìn)行說(shuō)明。[0220]請(qǐng)參考圖13A,其為本發(fā)明所述處理器系統(tǒng)的實(shí)施例。所述處理器系統(tǒng)包括四條車(chē)道1811、1813、1815和1817。,所述車(chē)道與圖11實(shí)施例中的相似,不同之處在于每條車(chē)道除了包含一個(gè)執(zhí)行單元外,還包含一個(gè)讀取/存儲(chǔ)單元,兩套指令讀緩沖和兩組寄存器堆。其中,指令讀緩沖1801、指令讀緩沖1861、執(zhí)行單元1813、寄存器堆1821、寄存器堆1831、讀取/存儲(chǔ)單元1841與車(chē)道1811對(duì)應(yīng);指令讀緩沖1803、指令讀緩沖1863、執(zhí)行單元1813、寄存器堆1823、寄存器堆1833、讀取/存儲(chǔ)單元1843與車(chē)道1813對(duì)應(yīng);指令讀緩沖1805、指令讀緩沖1865、執(zhí)行單元1815、寄存器堆1825、寄存器堆1835、讀取/存儲(chǔ)單元1845與車(chē)道1815對(duì)應(yīng);指令讀緩沖1807、指令讀緩沖1867、執(zhí)行單元1817、寄存器堆1827、寄存器堆1837、讀取/存儲(chǔ)單元1847與車(chē)道1817對(duì)應(yīng)。而指令讀緩沖1801、1803、1805、1807及寄存器堆1821、1823、1825、1827對(duì)應(yīng)于Q線(xiàn)程,指令讀緩沖1861、1863、1865、1867及寄存器堆1831、1833、1835、1837對(duì)應(yīng)于R線(xiàn)程。如此,4條車(chē)道與2條線(xiàn)程共形成8個(gè)虛擬機(jī),其中每個(gè)虛擬機(jī)都可以獨(dú)立運(yùn)行,也可以多個(gè)虛擬機(jī)協(xié)同運(yùn)行。另有車(chē)道間總線(xiàn)供不同車(chē)道之間交換數(shù)據(jù)及數(shù)據(jù)相關(guān)性檢測(cè)單元以檢測(cè)不同車(chē)道間協(xié)同運(yùn)算時(shí)的數(shù)據(jù)相關(guān)性。在本實(shí)施例中省略的其他部分的功能與結(jié)構(gòu)與之前實(shí)施例所述相同,在此不再贅述。[0221]在由對(duì)應(yīng)的車(chē)道、指令讀緩沖、寄存器堆和讀取/存儲(chǔ)單元組成的結(jié)構(gòu)中,指令讀緩沖根據(jù)循跡器提供的循跡地址匹配結(jié)果從指令緩存讀取可能被車(chē)道執(zhí)行的指令塊,并主動(dòng)向執(zhí)行單元及讀取/存儲(chǔ)單元輸出指令以供執(zhí)行;執(zhí)行單元根據(jù)對(duì)指令的譯碼從相應(yīng)寄存器堆中的相應(yīng)寄存器獲取操作數(shù)并向寄存器存儲(chǔ)執(zhí)行結(jié)果;讀取/存儲(chǔ)單元?jiǎng)t根據(jù)需要讀取數(shù)據(jù)并存儲(chǔ)到寄存器堆中,或?qū)⒓拇嫫鞫阎械臄?shù)據(jù)存儲(chǔ)到數(shù)據(jù)緩存。[0222]請(qǐng)參考圖13B,其為本發(fā)明所述單指令單數(shù)據(jù)流處理器的一個(gè)實(shí)施例。在本實(shí)施例中,各個(gè)模塊的結(jié)構(gòu)及功能與圖13A中的相應(yīng)模塊相同。當(dāng)進(jìn)行單指令單數(shù)據(jù)流處理時(shí),四個(gè)車(chē)道中只需要有一個(gè)工作即可,也只需要一套線(xiàn)程資源,即構(gòu)成列相關(guān)。如圖13B所示,指令讀緩沖1801主動(dòng)向車(chē)道1811輸出指令以供執(zhí)行,車(chē)道1811如圖13A實(shí)施例所述在寄存器堆1821、1831及讀取/存儲(chǔ)單元1841的配合下完成指令執(zhí)行。同時(shí),其他三個(gè)車(chē)道及相應(yīng)的指令讀緩沖、寄存器堆和讀取/存儲(chǔ)單元?jiǎng)t處于關(guān)閉狀態(tài)。例如,可以通過(guò)關(guān)閉向所述三個(gè)車(chē)道及相應(yīng)的指令讀緩沖、寄存器堆和讀取/存儲(chǔ)單元的時(shí)鐘信號(hào)或電源實(shí)現(xiàn)關(guān)閉。也不需要使用車(chē)道間的總線(xiàn)與數(shù)據(jù)相關(guān)檢測(cè)。車(chē)道1811通過(guò)其自身的讀取/存儲(chǔ)單元獲取單一數(shù)據(jù)。此時(shí),圖13B所示的處理器系統(tǒng)能實(shí)現(xiàn)與現(xiàn)有的單指令單數(shù)據(jù)流處理器,即普通單發(fā)射微處理器相同的功能。[0223]請(qǐng)參考圖13C,其為本發(fā)明所述單指令多數(shù)據(jù)流處理器的一個(gè)實(shí)施例。在本實(shí)施例中,各個(gè)模塊的結(jié)構(gòu)及功能與圖13A中的相應(yīng)模塊相同。當(dāng)進(jìn)行單指令多數(shù)據(jù)流處理時(shí),使用一個(gè)線(xiàn)程的資源;四個(gè)指令讀緩沖中存儲(chǔ)了相同的指令塊,并在一個(gè)循跡器的控制下以行相關(guān)的方式向四個(gè)車(chē)道提供相同的指令。而各個(gè)車(chē)道對(duì)應(yīng)的寄存器堆中則可以存儲(chǔ)不同的數(shù)據(jù),且各個(gè)車(chē)道對(duì)應(yīng)的讀取/存儲(chǔ)單元可以分別對(duì)不同的數(shù)據(jù)地址進(jìn)行讀/寫(xiě)操作。這樣,四個(gè)車(chē)道執(zhí)行同樣的程序,但每個(gè)車(chē)道執(zhí)行程序時(shí)用到的數(shù)據(jù)可以不同,從而實(shí)現(xiàn)與現(xiàn)有的單指令多數(shù)據(jù)流處理器相同的功能。本實(shí)施例中不使用道間總線(xiàn),也不執(zhí)行相關(guān)性檢測(cè)。此時(shí),圖13C所示的處理器系統(tǒng)能實(shí)現(xiàn)與現(xiàn)有的單指令多數(shù)據(jù)流處理器,比如向量處理器相同的功能。[0224]本發(fā)明還能以超級(jí)單指令多數(shù)據(jù)流模式工作。通常的單指令多數(shù)據(jù)流是多條車(chē)道在一個(gè)時(shí)刻執(zhí)行同一條指令。當(dāng)程序出現(xiàn)分支時(shí),現(xiàn)有的單指令多數(shù)據(jù)流模式是由各條車(chē)道各自對(duì)分支狀況作出判斷,產(chǎn)生一個(gè)各條車(chē)道的掩蓋值(Mask)然后各條車(chē)道在掩蓋值的控制下分步執(zhí)行。首先是以掩蓋值為〇(判斷為不分支)的若干條車(chē)道執(zhí)行不分支的指令(即分支指令后的順序指令),其時(shí)掩蓋值為1的車(chē)道停下等待。然后掩蓋值為〇這些車(chē)道停下來(lái)等待,而掩蓋值為1(判斷為分支)的其余車(chē)道執(zhí)行分支目標(biāo)指令及其后續(xù)指令。如果有幾重分支(比如三層分支,程序有可能要分8次執(zhí)行,效率可能只有12.5%),這樣就會(huì)使得多車(chē)道處理器的效率大打折扣,使得現(xiàn)有的單指令多數(shù)據(jù)流處理器只能用于一些沒(méi)有分支的特殊程序。本發(fā)明的超級(jí)單指令多數(shù)據(jù)流模式與現(xiàn)有的單指令多數(shù)據(jù)流模式不同,多條車(chē)道執(zhí)行同一個(gè)程序,每一條車(chē)道都有自己獨(dú)立的分支判斷機(jī)制與指令尋址機(jī)制,可以獨(dú)立執(zhí)行同一程序中的不同段或不同分支,所以在執(zhí)行有多重分支時(shí)的效率仍然能保持100%的效率。[0225]請(qǐng)參考圖13D,其為本發(fā)明所述超級(jí)單指令多數(shù)據(jù)流處理器的一個(gè)實(shí)施例。在本實(shí)施例中,各個(gè)模塊的結(jié)構(gòu)及功能與圖13A中的相應(yīng)模塊相同。當(dāng)進(jìn)行單指令多數(shù)據(jù)流處理時(shí),使用一個(gè)線(xiàn)程的資源;四個(gè)指令讀緩沖中存儲(chǔ)了相同的指令塊,并在四個(gè)循跡器的控制下以列相關(guān)的方式向四個(gè)車(chē)道提供同一程序中的相同或不同指令。而各個(gè)車(chē)道對(duì)應(yīng)的寄存器堆中則可以存儲(chǔ)不同的數(shù)據(jù),且各個(gè)車(chē)道對(duì)應(yīng)的讀取/存儲(chǔ)單元可以分別對(duì)不同的數(shù)據(jù)地址進(jìn)行讀/寫(xiě)操作。因?yàn)槊總€(gè)車(chē)道執(zhí)行程序時(shí)用到的數(shù)據(jù)可以不同,即使執(zhí)行同樣的指令,每條車(chē)道各自的分支判斷也會(huì)不一樣,導(dǎo)致四個(gè)車(chē)道在分支點(diǎn)開(kāi)始執(zhí)行程序的不同分支。因?yàn)樵诖四J街校總€(gè)車(chē)道在各自的循跡器與令牌傳遞器控制下以列相關(guān)的方式并行、獨(dú)立執(zhí)行程序,從而在有分支的條件下效率遠(yuǎn)勝于現(xiàn)有的使用遮罩寄存器分次處理分支的單指令多數(shù)據(jù)流處理器。本實(shí)施例中不使用車(chē)道間總線(xiàn),也不執(zhí)行相關(guān)性檢測(cè)。此時(shí),圖13D所示的處理器系統(tǒng)能非常高效地實(shí)現(xiàn)與現(xiàn)有的單指令多數(shù)據(jù)流處理器相同的功能。[0226]請(qǐng)參考圖13E,其為本發(fā)明所述多指令單數(shù)據(jù)流處理器的一個(gè)實(shí)施例。在本實(shí)施例中,各個(gè)模塊的結(jié)構(gòu)及功能與圖13A中的相應(yīng)模塊相同。當(dāng)進(jìn)行多指令單數(shù)據(jù)流處理時(shí),同一線(xiàn)程的四個(gè)指令讀緩沖中存儲(chǔ)了不同的指令塊,并在四個(gè)獨(dú)立的循跡器控制下向四個(gè)車(chē)道按列相關(guān)提供不同的指令。四個(gè)車(chē)道對(duì)應(yīng)的讀取/存儲(chǔ)單元中只有一個(gè)(如圖13E中的讀取/存儲(chǔ)單元1841)處于工作狀態(tài),另外三個(gè)關(guān)閉。相應(yīng)地,四個(gè)車(chē)道對(duì)應(yīng)的寄存器堆均通過(guò)讀取/存儲(chǔ)單元1841從數(shù)據(jù)緩存讀取數(shù)據(jù),讀取到的數(shù)據(jù)通過(guò)車(chē)道間總線(xiàn)從1841所在車(chē)道傳遞到另外3個(gè)車(chē)道的寄存器堆,另外3個(gè)車(chē)道產(chǎn)生的運(yùn)算結(jié)果也可以經(jīng)車(chē)道間總線(xiàn)傳遞回讀取/存儲(chǔ)單元1841,將數(shù)據(jù)寫(xiě)回?cái)?shù)據(jù)緩存。此模式下不進(jìn)行數(shù)據(jù)相關(guān)檢測(cè)。這樣,四個(gè)車(chē)道可以基于同樣的數(shù)據(jù)來(lái)源,同時(shí)執(zhí)行不同的程序,從而實(shí)現(xiàn)多指令單數(shù)據(jù)流處理器的功能。[0227]請(qǐng)參考圖13F,其為本發(fā)明所述多指令多數(shù)據(jù)流處理器的一個(gè)實(shí)施例。在本實(shí)施例中,各個(gè)模塊的結(jié)構(gòu)及功能與圖13A中的相應(yīng)模塊相同。當(dāng)進(jìn)行多指令多數(shù)據(jù)流處理時(shí),使用一個(gè)線(xiàn)程(或兩個(gè)線(xiàn)程)的資源,四個(gè)指令讀緩沖中存儲(chǔ)了不同的程序,在四個(gè)獨(dú)立的循跡器控制下以列相關(guān)的方式向四個(gè)車(chē)道提供不同的指令。相應(yīng)地,四個(gè)車(chē)道對(duì)應(yīng)的寄存器堆通過(guò)各自對(duì)應(yīng)的讀取/存儲(chǔ)單元從數(shù)據(jù)緩存讀取不同數(shù)據(jù)或?qū)?shù)據(jù)寫(xiě)回?cái)?shù)據(jù)緩存。此模式下不使用車(chē)道間總線(xiàn)與數(shù)據(jù)相關(guān)檢測(cè)器。這樣,四個(gè)車(chē)道可以分別基于不同的數(shù)據(jù)來(lái)源,同時(shí)執(zhí)行不同的程序,即各個(gè)車(chē)道之間執(zhí)行的程序與數(shù)據(jù)都互不相關(guān),從而實(shí)現(xiàn)多指令多數(shù)據(jù)流處理器的功能。[0228]請(qǐng)參考圖13G,其為本發(fā)明所述指令級(jí)并行處理器的一個(gè)實(shí)施例。在本實(shí)施例中,各個(gè)模塊的結(jié)構(gòu)及功能與圖13A中的相應(yīng)模塊相同。當(dāng)進(jìn)行指令級(jí)并行處理時(shí),四個(gè)指令讀緩沖中共同存儲(chǔ)了同一個(gè)程序的相同指令塊,并在一個(gè)循跡器的控制下以對(duì)角相關(guān)的方式分別向四個(gè)車(chē)道提供所述同一程序的連續(xù)指令。例如,在本實(shí)施例中,如果連續(xù)四條指令之間的不存相關(guān)性,那么可以分別由指令讀緩沖1801、1803、1805和1807輸出這四條指令中的第一條、第二條、第三條和第四條,從而實(shí)現(xiàn)四發(fā)射。如果指令之間存在相關(guān)性,則有相關(guān)性的指令中的后一條要在下一個(gè)時(shí)鐘周期重新發(fā)射,為此要使用相關(guān)性檢測(cè)器。又,四個(gè)車(chē)道中的執(zhí)行單元都各自從本車(chē)道的寄存器堆取操作數(shù),因此每個(gè)車(chē)道的執(zhí)行單元產(chǎn)生的運(yùn)算結(jié)果都要通過(guò)車(chē)道間總線(xiàn)傳遞及存儲(chǔ)進(jìn)所有四個(gè)車(chē)道的寄存器堆。如此,各執(zhí)行單元取得的操作數(shù)就像從一個(gè)共用的寄存器堆取得的操作數(shù)一樣。在此實(shí)施例中,每個(gè)車(chē)道的讀取/存儲(chǔ)單元都可并行從數(shù)據(jù)緩存中讀取/存儲(chǔ)不同地址的數(shù)據(jù)。在本模式下多車(chē)道處理器可以實(shí)現(xiàn)與現(xiàn)有的多發(fā)射指令級(jí)并行處理器類(lèi)似的功能。[0229]請(qǐng)參考圖13H,其為本發(fā)明所述多線(xiàn)程處理器的一個(gè)實(shí)施例。在本實(shí)施例中,使用Q、R兩套線(xiàn)程資源,即四個(gè)車(chē)道總共可以對(duì)應(yīng)八個(gè)虛擬機(jī)。在運(yùn)行時(shí),指令讀緩沖根據(jù)各個(gè)線(xiàn)程的等待/執(zhí)行情況主動(dòng)向?qū)?yīng)車(chē)道輸出指令,而線(xiàn)程在執(zhí)行指令過(guò)程中,在相應(yīng)寄存器堆中對(duì)應(yīng)該線(xiàn)程的寄存器中讀取或存儲(chǔ)數(shù)據(jù)。例如,當(dāng)車(chē)道1811在執(zhí)行某個(gè)線(xiàn)程的指令時(shí)需要等待讀取/存儲(chǔ)單元1841從數(shù)據(jù)緩存讀數(shù)并存儲(chǔ)到寄存器堆1821中,則可以由指令讀緩沖1801將對(duì)應(yīng)車(chē)道1811的另一個(gè)線(xiàn)程中的指令提供給車(chē)道1811執(zhí)行。此時(shí),由于車(chē)道1811執(zhí)行前一線(xiàn)程的中間結(jié)果尚保存在寄存器堆1821中,而在執(zhí)行新線(xiàn)程的指令時(shí)使用的是寄存器堆1831,因此當(dāng)車(chē)道1811重新執(zhí)行前一線(xiàn)程時(shí),能夠正確地繼續(xù)執(zhí)行該線(xiàn)程中的指令。這樣,就實(shí)現(xiàn)與現(xiàn)有的多線(xiàn)程處理器,如GPU相同的功能。[0230]多線(xiàn)程其實(shí)與上述的各種模式可以同時(shí)存在,如多線(xiàn)程的單指令流多數(shù)據(jù)流處理器;又或一個(gè)線(xiàn)程是指令級(jí)并行處理器,另外一個(gè)線(xiàn)程是單指令流多數(shù)據(jù)流處理器。因?yàn)榫€(xiàn)程之間不共享存儲(chǔ)器件,所以相互之間沒(méi)有影響。本實(shí)施例的多車(chē)道處理器可以實(shí)現(xiàn)多線(xiàn)程的超級(jí)單指令流多數(shù)據(jù)流處理器。因?yàn)樵诔?jí)單指令流多數(shù)據(jù)流處理器中每個(gè)車(chē)道都有獨(dú)立的指令流控制,不需要像GPU-樣用遮罩來(lái)分次執(zhí)行分支。因此在程序有分支時(shí)效率遠(yuǎn)勝GPU。[0231]請(qǐng)參考圖131,其為本發(fā)明所述軟連線(xiàn)邏輯的一個(gè)實(shí)施例。在本實(shí)施例中,使用一個(gè)線(xiàn)程,各車(chē)道的指令讀緩沖中放置不同但相互協(xié)同的指令,指令讀緩沖的相關(guān)方式為行相關(guān),指令相關(guān)檢測(cè)設(shè)置為關(guān)閉,車(chē)道間總線(xiàn)為連通?;蛘?,使用一個(gè)線(xiàn)程,各車(chē)道的指令讀緩沖中放置相同的指令,指令讀緩沖的相關(guān)方式為對(duì)角相關(guān),指令相關(guān)檢測(cè)設(shè)置為關(guān)閉,車(chē)道間總線(xiàn)為連通。特殊的是,程序的編程都是寫(xiě)后讀形式,每條指令的至少一個(gè)操作數(shù)寄存器是上一條指令的目的寄存器。例如:[0232]【權(quán)利要求】1.一種基于通用單元的高性能處理器系統(tǒng),其特征在于,包括指令存儲(chǔ)器和多個(gè)車(chē)道;其中,所述指令存儲(chǔ)器用以存儲(chǔ)指令;和每個(gè)所述車(chē)道進(jìn)一步包括:執(zhí)行單元,所述執(zhí)行單元用以執(zhí)行指令;寄存器堆,所述寄存器堆用以存儲(chǔ)操作數(shù);指令讀緩沖,所述指令讀緩沖主動(dòng)向處理器輸出指令供執(zhí)行。2.如權(quán)利要求1所述的高性能處理器系統(tǒng),其特征在于,多個(gè)所述指令讀緩沖同時(shí)向?qū)?yīng)的執(zhí)行單元輸出多條指令;或一個(gè)所述指令讀緩沖同時(shí)向?qū)?yīng)的執(zhí)行單元輸出多條指令;或所述指令讀緩沖和指令存儲(chǔ)器同時(shí)向所述指令讀緩沖對(duì)應(yīng)的執(zhí)行單元輸出多條指令。3.如權(quán)利要求2所述的高性能處理器系統(tǒng),其特征在于,還包括:至少一個(gè)循跡器;每個(gè)所述循跡器前行到至少一個(gè)執(zhí)行單元當(dāng)前正在執(zhí)行的指令之后的第一個(gè)分支指令,并輸出這條或這些分支指令的下一指令的地址和目標(biāo)指令的地址;并當(dāng)所述下一指令或目標(biāo)指令尚未存儲(chǔ)在指令讀緩沖中時(shí),控制指令存儲(chǔ)器向指令讀緩沖填充所述下一指令或目標(biāo)指令。4.如權(quán)利要求3所述的高性能處理器系統(tǒng),其特征在于,每個(gè)指令讀緩沖中的每一條指令對(duì)應(yīng)一個(gè)令牌傳遞器,所述令牌傳遞器用于傳遞令牌;所述指令讀緩沖主動(dòng)向執(zhí)行單元輸出令牌所在的令牌傳遞器對(duì)應(yīng)的指令供處理器核執(zhí)行。5.如權(quán)利要求4所述的高性能處理器系統(tǒng),其特征在于,還包括:預(yù)處理器,所述預(yù)處理器對(duì)尚未送往執(zhí)行單元的指令進(jìn)行預(yù)處理;和所述指令讀緩沖主動(dòng)向預(yù)處理器輸出令牌所在的令牌傳遞器對(duì)應(yīng)的指令之后的至少一條指令。6.如權(quán)利要求5所述的高性能處理器系統(tǒng),其特征在于,通過(guò)將所述高性能處理器系統(tǒng)配置為列相關(guān),使得不同的指令讀緩沖根據(jù)各自相應(yīng)的執(zhí)行單元執(zhí)行指令的結(jié)果輸出相應(yīng)的指令。7.如權(quán)利要求5所述的高性能處理器系統(tǒng),其特征在于,通過(guò)將所述高性能處理器系統(tǒng)配置為行相關(guān)或?qū)窍嚓P(guān),使得部分或全部指令讀緩沖根據(jù)某個(gè)指令讀緩沖中的令牌位置輸出相應(yīng)的指令。8.如權(quán)利要求6、7所述的高性能處理器系統(tǒng),其特征在于,對(duì)于不同的指令讀緩沖,令牌傳遞器同步傳遞令牌。9.如權(quán)利要求5所述的高性能處理器系統(tǒng),其特征在于,還包括:可配置的車(chē)道間總線(xiàn),所述車(chē)道間總線(xiàn)用以根據(jù)配置在不同車(chē)道間傳輸數(shù)據(jù)或執(zhí)行結(jié)果。10.如權(quán)利要求5所述的高性能處理器系統(tǒng),其特征在于,通過(guò)對(duì)至少一個(gè)車(chē)道進(jìn)行配置,實(shí)現(xiàn)單指令流單數(shù)據(jù)流模式、單指令流多數(shù)據(jù)流模式、超級(jí)單指令流多數(shù)據(jù)流模式、多指令流單數(shù)據(jù)流操作模式、多指令流多數(shù)據(jù)流模式、指令級(jí)并行模式、軟連線(xiàn)邏輯模式、循環(huán)指令模式、單車(chē)道多線(xiàn)程操作模式、多車(chē)道多線(xiàn)程操作模式和同時(shí)多線(xiàn)程模式中的至少一種。11.如權(quán)利要求10所述的高性能處理器系統(tǒng),其特征在于,所述指令級(jí)并行模式中的單周期最大指令發(fā)射數(shù)可以通過(guò)配置改變,實(shí)現(xiàn)自適應(yīng)的發(fā)射數(shù)目配置。12.如權(quán)利要求10所述的高性能處理器系統(tǒng),其特征在于,還包括:可配置的相關(guān)性檢測(cè)模塊;所述相關(guān)性檢測(cè)模塊用以確定一次發(fā)射的指令中能同時(shí)執(zhí)行的指令的位置和數(shù)目,并確定令牌傳遞的距離。13.如權(quán)利要求12所述的高性能處理器系統(tǒng),其特征在于,通過(guò)對(duì)相關(guān)性檢測(cè)模塊的配置,實(shí)現(xiàn)對(duì)車(chē)道的隔離。14.如權(quán)利要求10所述的高性能處理器系統(tǒng),其特征在于,通過(guò)配置,同時(shí)對(duì)多個(gè)寄存器堆寫(xiě)入同樣的操作數(shù)。15.如權(quán)利要求10所述的高性能處理器系統(tǒng),其特征在于,還包括:片上調(diào)度模塊;所述片上調(diào)度模塊根據(jù)通過(guò)配置,實(shí)時(shí)改變程序所需車(chē)道的數(shù)目和模式。16.如權(quán)利要求15所述的高性能處理器系統(tǒng),其特征在于,還包括:轉(zhuǎn)換器,所述轉(zhuǎn)換器將不同指令集的指令轉(zhuǎn)換為一種指令集的指令。17.-種基于通用單元的高性能處理器方法,其特征在于,每個(gè)執(zhí)行單元都有相應(yīng)的指令讀緩沖;且由多個(gè)指令讀緩沖同時(shí)向?qū)?yīng)的執(zhí)行單元輸出多條指令;或由一個(gè)指令讀緩沖同時(shí)向?qū)?yīng)的執(zhí)行單元輸出多條指令;或由指令讀緩沖和指令存儲(chǔ)器同時(shí)向所述指令讀緩沖對(duì)應(yīng)的執(zhí)行單元輸出多條指令。18.如權(quán)利要求17所述的高性能處理器方法,其特征在于,還包括:在執(zhí)行單元執(zhí)行到分支指令之前,提前將所述分支指令的下一指令和目標(biāo)指令填充到指令讀緩沖中。19.如權(quán)利要求18所述的高性能處理器方法,其特征在于,指令讀緩沖根據(jù)處理器核對(duì)指令的執(zhí)行結(jié)果傳遞令牌,并向處理器核輸出所述令牌對(duì)應(yīng)的指令供執(zhí)行。20.如權(quán)利要求19所述的高性能處理器方法,其特征在于,對(duì)令牌所在的令牌傳遞器對(duì)應(yīng)的指令之后的至少一條指令進(jìn)行預(yù)處理。21.如權(quán)利要求19所述的高性能處理器方法,其特征在于,通過(guò)將所述高性能處理器系統(tǒng)配置為列相關(guān),使得不同的指令讀緩沖根據(jù)各自相應(yīng)的執(zhí)行單元執(zhí)行指令的結(jié)果輸出相應(yīng)的指令;或通過(guò)將所述高性能處理器系統(tǒng)配置為行相關(guān)或?qū)窍嚓P(guān),使得部分或全部指令讀緩沖根據(jù)某個(gè)指令讀緩沖中的令牌位置輸出相應(yīng)的指令。22.如權(quán)利要求19所述的高性能處理器方法,其特征在于,通過(guò)對(duì)至少一個(gè)車(chē)道進(jìn)行配置,實(shí)現(xiàn)單指令流單數(shù)據(jù)流模式、單指令流多數(shù)據(jù)流模式、超級(jí)單指令流多數(shù)據(jù)流模式、多指令流單數(shù)據(jù)流操作模式、多指令流多數(shù)據(jù)流模式、指令級(jí)并行模式、軟連線(xiàn)邏輯模式、循環(huán)指令模式、單車(chē)道多線(xiàn)程操作模式、多車(chē)道多線(xiàn)程操作模式和同時(shí)多線(xiàn)程模式中的至少一種。23.如權(quán)利要求22所述的高性能處理器方法,其特征在于,所述指令級(jí)并行模式中的單周期最大指令發(fā)射數(shù)可以通過(guò)配置改變,實(shí)現(xiàn)自適應(yīng)的發(fā)射數(shù)目配置。24.如權(quán)利要求23所述的高性能處理器方法,其特征在于,通過(guò)相關(guān)性檢測(cè),確定一次發(fā)射的指令中能同時(shí)執(zhí)行的指令的位置和數(shù)目,并確定令牌傳遞的距離;和通過(guò)對(duì)相關(guān)性檢測(cè)模塊的配置,實(shí)現(xiàn)對(duì)車(chē)道的隔離。25.如權(quán)利要求19所述的高性能處理器方法,其特征在于,按需要為可并行執(zhí)行的循環(huán)指令段分配多條車(chē)道將循環(huán)展開(kāi),并行執(zhí)行以減少循環(huán)次數(shù)。26.如權(quán)利要求22所述的高性能處理器方法,其特征在于,在不同的車(chē)道之間或同一車(chē)道的不同線(xiàn)程之間被配置成不同的模式運(yùn)行;根據(jù)事先設(shè)定的程序優(yōu)先權(quán)及程序?qū)Y源的需求,對(duì)車(chē)道與線(xiàn)程資源進(jìn)行實(shí)時(shí)動(dòng)態(tài)調(diào)度。27.如權(quán)利要求26所述的高性能處理器方法,其特征在于,根據(jù)線(xiàn)程資源分配表與程序當(dāng)時(shí)對(duì)資源的需求及程序的準(zhǔn)備狀態(tài),動(dòng)態(tài)分配線(xiàn)程資源給不同程序。28.如權(quán)利要求19所述的高性能處理器方法,其特征在于,將不同指令集的指令轉(zhuǎn)換為車(chē)道中執(zhí)行單元能夠執(zhí)行的一種指令集的指令之后,再由執(zhí)行單元執(zhí)行。29.如權(quán)利要求22所述的高性能處理器方法,其特征在于,在超級(jí)單指令多數(shù)據(jù)流模式中,多條車(chē)道執(zhí)行同一個(gè)程序,每一條車(chē)道都有自己獨(dú)立的分支判斷機(jī)制與指令尋址機(jī)制,可以獨(dú)立執(zhí)行同一程序中的不同段或不同分支。30.如權(quán)利要求2所述的高性能處理器系統(tǒng),其特征在于,進(jìn)一步包括:復(fù)數(shù)個(gè)車(chē)道對(duì)應(yīng)一個(gè)循跡器;所述復(fù)數(shù)個(gè)車(chē)道中有一個(gè)車(chē)道為主動(dòng)車(chē)道,其余車(chē)道為從動(dòng)車(chē)道;所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖中的內(nèi)容相同;所述循跡器的讀指針前行到至少所述復(fù)數(shù)個(gè)車(chē)道中的一個(gè)的執(zhí)行單元當(dāng)前正在執(zhí)行的指令之后第一條指令,并輸出從所述第一條指令開(kāi)始的復(fù)數(shù)條指令中的分支指令的目標(biāo)指令的地址;當(dāng)所述第一條指令或所述目標(biāo)指令尚未存儲(chǔ)在所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖中時(shí),控制指令存儲(chǔ)器向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖同時(shí)填充所述所述第一條指令或所述目標(biāo)指令;和控制所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖分別輸出從所述第一條指令開(kāi)始的復(fù)數(shù)條指令。31.如權(quán)利要求30所述的高性能處理器系統(tǒng),其特征在于,由所述復(fù)數(shù)個(gè)車(chē)道之間的相關(guān)性檢測(cè)模塊對(duì)所述復(fù)數(shù)條指令進(jìn)行相關(guān)性檢測(cè),并根據(jù)相關(guān)性檢測(cè)結(jié)果確定所述循跡器讀指針的增量以更新讀指針,以及根據(jù)相關(guān)性檢測(cè)結(jié)果由處理器核執(zhí)行所述復(fù)數(shù)條指令中的部分或全部。32.如權(quán)利要求30所述的高性能處理器系統(tǒng),其特征在于,由所述循跡器向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖輸出所述第一條指令地址及其下塊指令地址,以控制所述復(fù)數(shù)個(gè)車(chē)道中的相應(yīng)車(chē)道的指令讀緩沖輸出從所述第一條指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令到相應(yīng)車(chē)道執(zhí)行;所述循跡器還向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖輸出從所述第一條指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令中所有分支指令的目標(biāo)指令地址及其下塊指令地址,分別控制所述復(fù)數(shù)個(gè)車(chē)道中的相應(yīng)車(chē)道的指令讀緩沖輸出從每個(gè)目標(biāo)指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令到相應(yīng)車(chē)道執(zhí)行。33.如權(quán)利要求32所述的高性能處理器系統(tǒng),其特征在于,所述主動(dòng)車(chē)道的指令讀緩沖根據(jù)接收到所述第一條指令地址,將相應(yīng)的鋸齒字線(xiàn)設(shè)為有效,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以輸出所述第一條指令開(kāi)始直到第一條分支指令,并在所述鋸齒字線(xiàn)上的有效信號(hào)到達(dá)所述第一條分支指令時(shí),被發(fā)射到目標(biāo)總線(xiàn)上,并所述從動(dòng)車(chē)道上由根據(jù)目標(biāo)指令地址確定的指令塊上的鋸齒總線(xiàn)接收,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以繼續(xù)輸出相應(yīng)指令;和在上述過(guò)程中,當(dāng)所述鋸齒字線(xiàn)上的有效信號(hào)到達(dá)指令塊邊界時(shí),被發(fā)射到總線(xiàn)上,并由根據(jù)下塊指令地址確定的指令塊上的鋸齒總線(xiàn)接收,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以繼續(xù)輸出相應(yīng)指令。34.如權(quán)利要求33所述的高性能處理器系統(tǒng),其特征在于,執(zhí)行同一分支路徑的車(chē)道構(gòu)成一路(way),各路車(chē)道中執(zhí)行對(duì)應(yīng)指令的車(chē)道構(gòu)成一槽(slot);由相關(guān)性檢測(cè)模塊對(duì)從所述第一條指令開(kāi)始的各路車(chē)道分別進(jìn)行相關(guān)性檢測(cè),并根據(jù)各路相關(guān)性檢測(cè)結(jié)果產(chǎn)生各路相應(yīng)的讀指針增量,以及根據(jù)各路相關(guān)性檢測(cè)結(jié)果由相應(yīng)路的執(zhí)行單元執(zhí)行相應(yīng)復(fù)數(shù)條指令中的部分或全部;根據(jù)各路中分支指令的執(zhí)行結(jié)果選擇這些路中一路的執(zhí)行單元繼續(xù)執(zhí)行,一并終止其余路的執(zhí)行單元的執(zhí)行;和根據(jù)各路中分支指令的執(zhí)行結(jié)果選擇這些路中一路對(duì)應(yīng)的指令地址及讀指針增量更新循跡器讀指針。35.如權(quán)利要求33所述的高性能處理器系統(tǒng),其特征在于,可以通過(guò)對(duì)相關(guān)性檢測(cè)模塊配置改變最大發(fā)射數(shù)。36.如權(quán)利要求30所述的高性能處理器系統(tǒng),其特征在于,所述系統(tǒng)中的每個(gè)車(chē)道還包括數(shù)據(jù)讀緩沖和數(shù)據(jù)引擎;所述數(shù)據(jù)引擎將指令讀緩沖中數(shù)據(jù)讀取指令可能用到的數(shù)據(jù)事先填充到數(shù)據(jù)讀緩沖中。37.如權(quán)利要求36所述的高性能處理器系統(tǒng),其特征在于,所述數(shù)據(jù)讀緩沖的表項(xiàng)與指令讀緩沖中的表項(xiàng)一一對(duì)應(yīng),可以直接由數(shù)據(jù)讀取指令在指令讀緩沖中的位置信息直接在數(shù)據(jù)讀緩沖中找到該數(shù)據(jù)讀取指令對(duì)應(yīng)的數(shù)據(jù);或所述數(shù)據(jù)讀緩沖的表項(xiàng)數(shù)目少于指令讀緩沖的表項(xiàng)數(shù)目,且指令讀緩沖的每個(gè)表項(xiàng)包含一個(gè)指針;可以數(shù)據(jù)讀取指令所在的指令讀緩沖表項(xiàng)中的所述指針經(jīng)譯碼器譯碼后確定對(duì)應(yīng)數(shù)據(jù)在數(shù)據(jù)讀緩沖中的位置,以找到對(duì)應(yīng)數(shù)據(jù)。38.如權(quán)利要求18所述的高性能處理器方法,其特征在于,進(jìn)一步包括:復(fù)數(shù)個(gè)車(chē)道對(duì)應(yīng)一個(gè)循跡指針;所述復(fù)數(shù)個(gè)車(chē)道中有一個(gè)車(chē)道為主動(dòng)車(chē)道,其余車(chē)道為從動(dòng)車(chē)道;所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖中的內(nèi)容相同;所述循跡指針前行到至少所述復(fù)數(shù)個(gè)車(chē)道中的一個(gè)的執(zhí)行單元當(dāng)前正在執(zhí)行的指令之后第一條指令,并輸出從所述第一條指令開(kāi)始的復(fù)數(shù)條指令中的分支指令的目標(biāo)指令的地址;當(dāng)所述第一條指令或所述目標(biāo)指令尚未存儲(chǔ)在所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖中時(shí),控制指令存儲(chǔ)器向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖同時(shí)填充所述所述第一條指令或所述目標(biāo)指令;和控制所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖分別輸出從所述第一條指令開(kāi)始的復(fù)數(shù)條指令。39.如權(quán)利要求38所述的高性能處理器方法,其特征在于,對(duì)所述復(fù)數(shù)個(gè)車(chē)道的復(fù)數(shù)條指令進(jìn)行相關(guān)性檢測(cè),并根據(jù)相關(guān)性檢測(cè)結(jié)果確定所述循跡指針的增量以更新循跡指針,以及根據(jù)相關(guān)性檢測(cè)結(jié)果由處理器核執(zhí)行所述復(fù)數(shù)條指令中的部分或全部。40.如權(quán)利要求38所述的高性能處理器方法,其特征在于,根據(jù)所述循跡指針向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖輸出所述第一條指令地址及其下塊指令地址,以控制所述復(fù)數(shù)個(gè)車(chē)道中的相應(yīng)車(chē)道的指令讀緩沖輸出從所述第一條指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令到相應(yīng)車(chē)道執(zhí)行;根據(jù)所述循跡指針向所述復(fù)數(shù)個(gè)車(chē)道的指令讀緩沖輸出從所述第一條指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令中所有分支指令的目標(biāo)指令地址及其下塊指令地址,分別控制所述復(fù)數(shù)個(gè)車(chē)道中的相應(yīng)車(chē)道的指令讀緩沖輸出從每個(gè)目標(biāo)指令開(kāi)始的連續(xù)地址復(fù)數(shù)條指令到相應(yīng)車(chē)道執(zhí)行。41.如權(quán)利要求40所述的高性能處理器方法,其特征在于,所述主動(dòng)車(chē)道的指令讀緩沖根據(jù)接收到所述第一條指令地址,將相應(yīng)的鋸齒字線(xiàn)設(shè)為有效,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以輸出所述第一條指令開(kāi)始直到第一條分支指令,并在所述鋸齒字線(xiàn)上的有效信號(hào)到達(dá)所述第一條分支指令時(shí),被發(fā)射到目標(biāo)總線(xiàn)上,并所述從動(dòng)車(chē)道上由根據(jù)目標(biāo)指令地址確定的指令塊上的鋸齒總線(xiàn)接收,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以繼續(xù)輸出相應(yīng)指令;和在上述過(guò)程中,當(dāng)所述鋸齒字線(xiàn)上的有效信號(hào)到達(dá)指令塊邊界時(shí),被發(fā)射到總線(xiàn)上,并由根據(jù)下塊指令地址確定的指令塊上的鋸齒總線(xiàn)接收,使能其經(jīng)過(guò)的所述從動(dòng)車(chē)道中指令讀緩沖的讀口以繼續(xù)輸出相應(yīng)指令。42.如權(quán)利要求41所述的高性能處理器方法,其特征在于,執(zhí)行同一分支路徑的車(chē)道構(gòu)成一路(way),各路車(chē)道中執(zhí)行對(duì)應(yīng)指令的車(chē)道構(gòu)成一槽(slot);對(duì)從所述第一條指令開(kāi)始的各路車(chē)道分別進(jìn)行相關(guān)性檢測(cè),并根據(jù)各路相關(guān)性檢測(cè)結(jié)果產(chǎn)生各路相應(yīng)的讀指針增量,以及根據(jù)各路相關(guān)性檢測(cè)結(jié)果由相應(yīng)路的執(zhí)行單元執(zhí)行相應(yīng)復(fù)數(shù)條指令中的部分或全部;根據(jù)各路中分支指令的執(zhí)行結(jié)果選擇這些路中一路的執(zhí)行單元繼續(xù)執(zhí)行,并終止其余路的執(zhí)行單元的執(zhí)行;和根據(jù)各路中分支指令的執(zhí)行結(jié)果選擇這些路中一路對(duì)應(yīng)的指令地址及讀指針增量更新循跡器讀指針。43.如權(quán)利要求41所述的高性能處理器方法,其特征在于,可以通過(guò)對(duì)相關(guān)性檢測(cè)進(jìn)行配置改變最大發(fā)射數(shù)。44.如權(quán)利要求38所述的高性能處理器方法,其特征在于,將指令讀緩沖中數(shù)據(jù)讀取指令可能用到的數(shù)據(jù)事先填充到數(shù)據(jù)讀緩沖中。45.如權(quán)利要求36所述的高性能處理器方法,其特征在于,所述數(shù)據(jù)讀緩沖的表項(xiàng)與指令讀緩沖中的表項(xiàng)一一對(duì)應(yīng),可以直接由數(shù)據(jù)讀取指令在指令讀緩沖中的位置信息直接在數(shù)據(jù)讀緩沖中找到該數(shù)據(jù)讀取指令對(duì)應(yīng)的數(shù)據(jù);或所述數(shù)據(jù)讀緩沖的表項(xiàng)數(shù)目少于指令讀緩沖的表項(xiàng)數(shù)目,且指令讀緩沖的每個(gè)表項(xiàng)包含一個(gè)指針;可以數(shù)據(jù)讀取指令所在的指令讀緩沖表項(xiàng)中的所述指針經(jīng)譯碼器譯碼后確定對(duì)應(yīng)數(shù)據(jù)在數(shù)據(jù)讀緩沖中的位置,以找到對(duì)應(yīng)數(shù)據(jù)?!疚臋n編號(hào)】G06F9/30GK104424158SQ201410406555【公開(kāi)日】2015年3月18日申請(qǐng)日期:2014年8月18日優(yōu)先權(quán)日:2013年8月19日【發(fā)明者】林正浩申請(qǐng)人:上海芯豪微電子有限公司