一種指令處理系統(tǒng)及方法【專(zhuān)利摘要】本發(fā)明提供了一種指令處理系統(tǒng)及方法。使用本發(fā)明提供方法或應(yīng)用本發(fā)明提供的系統(tǒng),通過(guò)對(duì)軌道表的循跡,可以在處理器執(zhí)行指令前,將所述指令填充到所述處理器能直接訪問(wèn)的高速存儲(chǔ)器中,幾乎使所述處理器每次都能在所述高速存儲(chǔ)器中獲取到需要的指令,消除或掩蓋緩存缺失造成的等待時(shí)間,從而提高指令處理系統(tǒng)的性能?!緦?zhuān)利說(shuō)明】一種指令處理系統(tǒng)及方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及計(jì)算機(jī)架構(gòu)【
技術(shù)領(lǐng)域:
】,特別涉及一種指令處理系統(tǒng)?!?br>背景技術(shù):
】[0002]在當(dāng)今的計(jì)算機(jī)架構(gòu)中,處理器是其核心設(shè)備,所述處理器包括通用處理器(GeneralProcessor)、中央處理器(CPU)、微控制器(MCU)、數(shù)字信號(hào)處理器(DSP)、圖像處理器(GPU)、片上系統(tǒng)(SOC)、專(zhuān)用集成電路(ASIC)等。通過(guò)所述處理器的運(yùn)行,能夠解決各類(lèi)計(jì)算工作。通常的,處理器在運(yùn)行的過(guò)程中需要讀取并執(zhí)行大量的指令,由此,便需要一存儲(chǔ)器對(duì)這些指令予以存儲(chǔ)。[0003]現(xiàn)有的指令處理系統(tǒng)通常包括一處理器及多級(jí)存儲(chǔ)器系統(tǒng),所述多級(jí)存儲(chǔ)器系統(tǒng)通常包括多個(gè)存取速度不同的存儲(chǔ)器。以一二級(jí)存儲(chǔ)器系統(tǒng)為例,其包括第一存儲(chǔ)器及第二存儲(chǔ)器,其中,所述第一存儲(chǔ)器的速度比第二存儲(chǔ)器的速度快,但是,所述第一存儲(chǔ)器的存儲(chǔ)空間/面積/容量將比所述第二存儲(chǔ)器的存儲(chǔ)空間/面積/容量小。[0004]對(duì)于上述的指令處理系統(tǒng)而言,當(dāng)處理器需要指令時(shí),其會(huì)首先向第一存儲(chǔ)器請(qǐng)求獲取該指令,因?yàn)榈谝淮鎯?chǔ)器的存取速度更快,能夠更好地與所述處理器匹配。但是,由于第一存儲(chǔ)器的存儲(chǔ)空間有限,其有可能沒(méi)有存儲(chǔ)所述處理器需要的指令,則此時(shí),所述第一存儲(chǔ)器就會(huì)向第二存儲(chǔ)器請(qǐng)求獲取該指令。對(duì)于一個(gè)二級(jí)存儲(chǔ)器系統(tǒng)而言,所需的指令必然會(huì)存儲(chǔ)在所述第二存儲(chǔ)器中,但是,由于所述第二存儲(chǔ)器的存取速度相對(duì)較慢,這樣的一個(gè)指令獲取過(guò)程往往導(dǎo)致處理器的運(yùn)行速度減慢。[0005]通常的,指令分為分支指令與非分支指令,對(duì)于非分支指令而言,根據(jù)其前后指令的時(shí)間/空間相關(guān)性,往往能夠預(yù)先存儲(chǔ)在第一存儲(chǔ)器中;但是,對(duì)于分支指令,由于其將發(fā)生一個(gè)無(wú)序的轉(zhuǎn)移/跳轉(zhuǎn)過(guò)程,因此難以預(yù)先存儲(chǔ)在第一存儲(chǔ)器中。[0006]由此,對(duì)于現(xiàn)有的指令處理系統(tǒng)而言,往往將出現(xiàn)第一存儲(chǔ)器無(wú)法及時(shí)地向處理器提供所需指令的情況,特別的,當(dāng)涉及到分支指令相關(guān)的指令(通常指,發(fā)生分支轉(zhuǎn)移時(shí),分支指令的目標(biāo)指令;未發(fā)生分支轉(zhuǎn)移時(shí),分支指令的下一指令)時(shí),這一問(wèn)題將變得十分突出?!?br/>發(fā)明內(nèi)容】[0007]本發(fā)明的目的在于提供一種指令處理系統(tǒng)及方法,以解決現(xiàn)有技術(shù)中第一存儲(chǔ)器/存取速度最快的存儲(chǔ)器無(wú)法及時(shí)地向處理器提供所需指令的問(wèn)題。[0008]為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種指令處理系統(tǒng),所述指令處理系統(tǒng)包括:m個(gè)存取速度不同的存儲(chǔ)器,所述m個(gè)存取速度不同的存儲(chǔ)器均用以存儲(chǔ)指令;指令控制器,所述指令控制器包括軌道表,所述軌道表存儲(chǔ)速度最高存儲(chǔ)器中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,所述分支指令的目標(biāo)指令存儲(chǔ)在所述m個(gè)存取速度不同的存儲(chǔ)器中的至少一個(gè)存儲(chǔ)器中;所述指令控制器用以根據(jù)所述軌道表中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供指令;其中,所述m為大于等于2的自然數(shù)。[0009]可選的,在所述的指令處理系統(tǒng)中,還包括主動(dòng)表,所述主動(dòng)表存儲(chǔ)速度最低存儲(chǔ)器中存儲(chǔ)的指令的塊地址,及所述速度最低存儲(chǔ)器中存儲(chǔ)的指令在另外m-Ι個(gè)存儲(chǔ)器中存儲(chǔ)有時(shí),在該另外m-Ι個(gè)存儲(chǔ)器中的循跡地址。[0010]可選的,在所述的指令處理系統(tǒng)中,所述分支指令的目標(biāo)指令的循跡地址包括行號(hào)和列號(hào);所述分支指令的目標(biāo)指令的塊地址經(jīng)主動(dòng)表匹配后,得到所述循跡地址中的行號(hào);所述分支指令的目標(biāo)指令在指令塊中的偏移量為循跡地址中的列號(hào)。[0011]可選的,在所述的指令處理系統(tǒng)中,所述指令控制器還包括循跡器,所述循跡器根據(jù)軌道表中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,提前移動(dòng)并指向第一層分支指令,并從軌道表中讀出該第一層分支指令的目標(biāo)指令的循跡地址;當(dāng)所述循跡器發(fā)現(xiàn)該目標(biāo)指令的循跡地址對(duì)應(yīng)速度最高的存儲(chǔ)器時(shí),則從所述速度最高的存儲(chǔ)器向處理器提供指令;當(dāng)所述循跡器發(fā)現(xiàn)該目標(biāo)指令的循跡地址對(duì)應(yīng)速度最高的存儲(chǔ)器以外的m-Ι個(gè)存儲(chǔ)器時(shí),所述m-Ι個(gè)存儲(chǔ)器提前向處理器和/或所述速度最高的存儲(chǔ)器提供指令。[0012]可選的,在所述的指令處理系統(tǒng)中,所述循跡器包括一個(gè)寄存器、一個(gè)增量器及一個(gè)選擇器,其中,所述寄存器中存儲(chǔ)了第一層分支指令的循跡地址,該循跡地址被用于在軌道表中尋址以讀出對(duì)應(yīng)的目標(biāo)指令的循跡地址;所述增量器用以得到第一層分支指令段的下一個(gè)分支指令的循跡地址;所述選擇器用以選出第一層分支指令的目標(biāo)指令的循跡地址及第一層分支指令段的下一個(gè)分支指令的循跡地址中的一個(gè),并將選出的循跡地址存儲(chǔ)到所述寄存器中。[0013]可選的,在所述的指令處理系統(tǒng)中,所述指令控制器還包括預(yù)測(cè)器,所述預(yù)測(cè)器用以獲取所述循跡器指向的分支指令段之后的分支指令段。[0014]可選的,在所述的指令處理系統(tǒng)中,所述預(yù)測(cè)器用以獲取第一層分支指令段之后的第η層分支指令段,并控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供尚未存儲(chǔ)在所述存儲(chǔ)速度高的存儲(chǔ)器中的第η層分支指令段,其中,η為自然數(shù)。[0015]可選的,在所述的指令處理系統(tǒng)中,所述預(yù)測(cè)器包括2"個(gè)寄存器、一個(gè)增量器及一個(gè)選擇器,其中,所述增量器用以得到所述第η層分支指令段中分支指令的循跡地址,所述2η個(gè)寄存器分別用以存儲(chǔ)第η層分支指令段中分支指令的循跡地址,所述選擇器用以選出向所述軌道表尋址的分支指令的循跡地址,以得到所述分支指令的目標(biāo)指令的循跡地址。[0016]可選的,在所述的指令處理系統(tǒng)中,只使用所述預(yù)測(cè)器中部分寄存器,從而記錄少于η層的若干層分支指令的循跡地址,以調(diào)整預(yù)測(cè)的深度;或者不使用任何寄存器,從而在功能上關(guān)閉預(yù)測(cè)器。[0017]可選的,在所述的指令處理系統(tǒng)中,所述指令控制器包括預(yù)測(cè)循跡器,所述預(yù)測(cè)循跡器用以獲取第一層分支指令段之后的第η層分支指令段,并控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供尚未存儲(chǔ)在所述存儲(chǔ)速度高的存儲(chǔ)器中的第η層分支指令段,其中,η為自然數(shù)。[0018]可選的,在所述的指令處理系統(tǒng)中,所述預(yù)測(cè)循跡器包括2η+1_2個(gè)寄存器、一個(gè)增量器及η+1層選擇器,其中,所述增量器用以得到所述第η層分支指令段中分支指令的循跡地址,所述2η+1-2個(gè)寄存器分別用以存儲(chǔ)從第I層到第η層分支指令段中分支指令的循跡地址,所述η+1層選擇器用于根據(jù)分支指令的分支轉(zhuǎn)移是否發(fā)生的信息依次裁剪不會(huì)被執(zhí)行的分支指令段對(duì)應(yīng)的循跡地址。[0019]可選的,在所述的指令處理系統(tǒng)中,經(jīng)所述裁剪后輸出的循跡地址指向第一層分支指令;根據(jù)所述循跡地址能夠從軌道表中讀出該第一層分支指令的目標(biāo)指令的循跡地址;根據(jù)該目標(biāo)指令的循跡地址,能夠從所述速度最高的存儲(chǔ)器向處理器提供指令。[0020]可選的,在所述的指令處理系統(tǒng)中,只使用所述預(yù)測(cè)循跡器中部分寄存器,從而記錄少于η層的若干層分支指令的循跡地址,以調(diào)整預(yù)測(cè)的深度;或者不使用其中2η+1-4個(gè)寄存器,從而只實(shí)現(xiàn)提前移動(dòng)并指向第一層分支指令的功能。[0021]可選的,在所述的指令處理系統(tǒng)中,還包括掃描器,所述掃描器用以計(jì)算存儲(chǔ)器提供的指令中的分支指令的目標(biāo)指令的塊地址,并將所述分支指令的目標(biāo)指令的塊地址送到主動(dòng)表進(jìn)行匹配,以得到對(duì)應(yīng)的循跡地址。[0022]可選的,在所述的指令處理系統(tǒng)中,當(dāng)匹配結(jié)果顯示所述分支指令的目標(biāo)指令在速度高的存儲(chǔ)器中未存儲(chǔ)有時(shí),主動(dòng)表控制速度低的存儲(chǔ)器提供該分支指令的目標(biāo)指令。[0023]可選的,在所述的指令處理系統(tǒng)中,還包括第一緩沖存儲(chǔ)器,所述第一緩沖存儲(chǔ)器用以暫存速度低的存儲(chǔ)器向速度最高的存儲(chǔ)器提供的指令。[0024]可選的,在所述的指令處理系統(tǒng)中,所述第一緩沖存儲(chǔ)器包括2η+1_3個(gè)寄存器及2η-2個(gè)選擇器,其中,2η+1-3個(gè)寄存器用以存儲(chǔ)從第I層到第η-l層的分支指令段,2η_2個(gè)選擇器用以選出向速度最高的存儲(chǔ)器輸出的分支指令段。[0025]可選的,在所述的指令處理系統(tǒng)中,還包括第二緩沖存儲(chǔ)器,所述第二緩沖存儲(chǔ)器用以暫存未被選出向速度最高的存儲(chǔ)器輸出的分支指令段;所述循跡器通過(guò)循跡地址匹配的方式在所述第二緩沖存儲(chǔ)器中查找速度最高的存儲(chǔ)器及第一緩沖存儲(chǔ)器中未包含的指令。[0026]本發(fā)明還提供了一種指令處理方法,其中,所使用的軌道表及存儲(chǔ)速度最高的存儲(chǔ)器行行一一對(duì)應(yīng),所述指令處理方法包括:步驟10、根據(jù)軌道表中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供指令。[0027]可選的,在所述的指令處理方法中,在步驟10之前還包括:步驟9、通過(guò)對(duì)分支指令的目標(biāo)指令的塊地址的匹配,得到所述目標(biāo)指令對(duì)應(yīng)的循跡地址中的行號(hào);所述目標(biāo)指令在指令塊中的偏移量為所述目標(biāo)指令對(duì)應(yīng)的循跡地址中的列號(hào)。[0028]可選的,在所述的指令處理方法中,所述步驟10包括:步驟10Α、根據(jù)軌道表中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,提前找到第一層分支指令,并從軌道表中讀出該第一層分支指令的目標(biāo)指令的循跡地址;當(dāng)該目標(biāo)指令的循跡地址對(duì)應(yīng)速度最高的存儲(chǔ)器時(shí),則從所述速度最高的存儲(chǔ)器向處理器提供指令;當(dāng)該目標(biāo)指令的循跡地址對(duì)應(yīng)速度最高的存儲(chǔ)器以外的m-Ι個(gè)存儲(chǔ)器時(shí),所述m-Ι個(gè)存儲(chǔ)器提前向處理器和/或所述速度最高的存儲(chǔ)器提供指令。[0029]可選的,在所述的指令處理方法中,所述步驟10還包括:步驟10B、獲取第一層分支指令段之后的第η層分支指令段,并控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供尚未存儲(chǔ)在所述存儲(chǔ)速度高的存儲(chǔ)器中的第η層分支指令段。[0030]可選的,在所述的指令處理方法中,所述步驟10包括:步驟10Α、獲取第一層分支指令段之后的第η層分支指令段,并控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供尚未存儲(chǔ)在所述存儲(chǔ)速度高的存儲(chǔ)器中的第η層分支指令段。[0031]可選的,在所述的指令處理方法中,所述步驟10還包括:步驟10B、根據(jù)分支指令的分支轉(zhuǎn)移是否發(fā)生的信息依次裁剪不會(huì)被執(zhí)行的分支指令段對(duì)應(yīng)的循跡地址。[0032]可選的,在所述的指令處理方法中,所述步驟10還包括:步驟10C、經(jīng)所述裁剪后輸出的循跡地址指向第一層分支指令;根據(jù)所述循跡地址能夠從軌道表中讀出該第一層分支指令的目標(biāo)指令的循跡地址;根據(jù)該目標(biāo)指令的循跡地址,能夠從所述速度最高的存儲(chǔ)器向處理器提供指令。[0033]可選的,在所述的指令處理方法中,所述步驟9包括:步驟9A、計(jì)算存儲(chǔ)器提供的指令中的分支指令的目標(biāo)指令的塊地址,并通過(guò)對(duì)所述分支指令的目標(biāo)指令的塊地址的匹配,得到所述目標(biāo)指令對(duì)應(yīng)的循跡地址中的行號(hào);所述目標(biāo)指令在指令塊中的偏移量為所述目標(biāo)指令對(duì)應(yīng)的循跡地址中的列號(hào)。[0034]可選的,在所述的指令處理方法中,所述步驟9還包括:步驟9B、當(dāng)匹配結(jié)果顯示所述分支指令的目標(biāo)指令在速度高的存儲(chǔ)器中未存儲(chǔ)有時(shí),主動(dòng)表控制速度低的存儲(chǔ)器提供該分支指令的目標(biāo)指令。[0035]可選的,在所述的指令處理系統(tǒng)中,指令控制器還包括循跡器,所述循跡器以該讀指針值作為循跡地址對(duì)軌道表和速度最高的存儲(chǔ)器尋址,讀出軌跡點(diǎn)內(nèi)容并據(jù)此更新讀指針值,同時(shí)讀出指令供處理器執(zhí)行。[0036]可選的,在所述的指令處理系統(tǒng)中,當(dāng)指令控制器從所述軌道表的軌跡點(diǎn)中讀出的指令類(lèi)型顯示為間接分支指令時(shí),由處理器執(zhí)行該指令并產(chǎn)生分支目標(biāo)地址后,再轉(zhuǎn)換為循跡地址。[0037]可選的,在所述的指令處理系統(tǒng)中,處理器產(chǎn)生的所述間接分支目標(biāo)地址被主動(dòng)表轉(zhuǎn)換為循跡地址并存儲(chǔ)在軌道表的相應(yīng)軌跡點(diǎn)中;當(dāng)循跡器讀指針再次指向該軌跡點(diǎn)時(shí),當(dāng)作直接分支點(diǎn)猜測(cè)執(zhí)行,并將處理器此時(shí)產(chǎn)生的分支目標(biāo)地址與該軌跡點(diǎn)中循跡地址對(duì)應(yīng)的指令地址進(jìn)行比較;若兩者相等,則該猜測(cè)是正確的,可以繼續(xù)后續(xù)操作;若兩者不等,則該猜測(cè)是錯(cuò)誤的,用所述處理器產(chǎn)生的分支目標(biāo)地址轉(zhuǎn)換為循跡地址,再進(jìn)行后續(xù)操作。[0038]可選的,在所述的指令處理系統(tǒng)中,根據(jù)分支目標(biāo)指令或數(shù)據(jù)位于存儲(chǔ)器層次的不同,軌道表的軌跡點(diǎn)中存儲(chǔ)了不同格式的循跡地址;不同格式的循跡地址對(duì)應(yīng)不同層次的存儲(chǔ)器;根據(jù)主動(dòng)表中存儲(chǔ)的信息,可以對(duì)不同層次緩存的循跡地址進(jìn)行轉(zhuǎn)換。[0039]可選的,在所述的指令處理系統(tǒng)中,所述指令處理系統(tǒng)中使用的地址格式包括指令地址、數(shù)據(jù)地址和循跡地址。[0040]可選的,在所述的指令處理系統(tǒng)中,數(shù)據(jù)訪問(wèn)指令對(duì)應(yīng)的軌跡點(diǎn)中存儲(chǔ)了循跡地址和數(shù)據(jù)步長(zhǎng)(stride)。[0041]可選的,在所述的指令處理系統(tǒng)中,當(dāng)指令控制器從所述軌道表的軌跡點(diǎn)中讀出的是對(duì)應(yīng)速度較低的存儲(chǔ)器的循跡地址時(shí),該循跡地址被送到主動(dòng)表轉(zhuǎn)換為對(duì)應(yīng)速度較高的存儲(chǔ)器的循跡地址并填回軌道表的該的軌跡點(diǎn)中,同時(shí)將對(duì)應(yīng)的指令塊或數(shù)據(jù)塊從速度較低的存儲(chǔ)器存儲(chǔ)到速度較高的存儲(chǔ)器中。[0042]可選的,在所述的指令處理系統(tǒng)中,當(dāng)速度最低存儲(chǔ)器中一個(gè)存儲(chǔ)塊對(duì)應(yīng)的順序地址的前一存儲(chǔ)塊或后一存儲(chǔ)塊已經(jīng)存儲(chǔ)在所述速度最低存儲(chǔ)器中時(shí),主動(dòng)表中還存儲(chǔ)了該存儲(chǔ)塊對(duì)應(yīng)的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊在所述速度最低存儲(chǔ)器中的存儲(chǔ)位置信息。[0043]可選的,在所述的指令處理系統(tǒng)中,當(dāng)指令或數(shù)據(jù)地址位于速度最低存儲(chǔ)器中當(dāng)前存儲(chǔ)塊的前一存儲(chǔ)塊或后一存儲(chǔ)塊中時(shí),可以根據(jù)存儲(chǔ)在主動(dòng)表中的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息,直接在速度最低存儲(chǔ)器中找到該指令或數(shù)據(jù)。[0044]可選的,在所述的指令處理系統(tǒng)中,當(dāng)一個(gè)存儲(chǔ)塊被替換或填充時(shí),若可以確定該存儲(chǔ)塊的前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置,則將所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息存儲(chǔ)在主動(dòng)表中該存儲(chǔ)塊對(duì)應(yīng)的前一存儲(chǔ)塊位置或后一存儲(chǔ)塊位置中,并相應(yīng)地將該存儲(chǔ)塊的位置信息存儲(chǔ)在主動(dòng)表中所述前一存儲(chǔ)塊對(duì)應(yīng)的后一存儲(chǔ)塊位置中,或?qū)⒃摯鎯?chǔ)塊的位置信息存儲(chǔ)在主動(dòng)表中所述后一存儲(chǔ)塊對(duì)應(yīng)的前一存儲(chǔ)塊位置中。[0045]可選的,在所述的指令處理系統(tǒng)中,當(dāng)一個(gè)存儲(chǔ)塊被替換或填充時(shí),根據(jù)主動(dòng)表中該存儲(chǔ)塊對(duì)應(yīng)的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息,將所述前一存儲(chǔ)塊對(duì)應(yīng)的后一存儲(chǔ)塊的位置信息清除,以及將所述后一存儲(chǔ)塊對(duì)應(yīng)前一存儲(chǔ)塊的位置信息清除。[0046]可選的,在所述的指令處理系統(tǒng)中,在所述掃描器中對(duì)分支目標(biāo)指令地址進(jìn)行邊界判斷;根據(jù)所述判斷結(jié)果,對(duì)位于不同位置的分支目標(biāo)指令給予不同格式的地址;或所述指令處理系統(tǒng)還包含一個(gè)數(shù)據(jù)引擎,在所述數(shù)據(jù)引擎中對(duì)數(shù)據(jù)訪問(wèn)指令的下次數(shù)據(jù)地址進(jìn)行邊界判斷;根據(jù)所述判斷結(jié)果,對(duì)位于不同位置的下次數(shù)據(jù)給予不同格式的地址。[0047]可選的,在所述的指令處理系統(tǒng)中,若分支目標(biāo)指令地址位于分支源指令在至少一個(gè)層次存儲(chǔ)器的同一存儲(chǔ)塊中,則以該分支目標(biāo)指令在這些層次的存儲(chǔ)器中的較高層次存儲(chǔ)器循跡地址作為該分支目標(biāo)指令的循跡地址,且以該分支源指令循跡地址中的BNX作為該分支目標(biāo)指令循跡地址中的BNX,以該分支目標(biāo)指令地址中對(duì)應(yīng)所述層次存儲(chǔ)器的BNY部分作為該分支目標(biāo)指令循跡地址中的BNY。[0048]可選的,在所述的指令處理系統(tǒng)中,在所述掃描器中:若分支目標(biāo)指令地址位于分支源指令在某一層次存儲(chǔ)器中所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊中,則以該分支目標(biāo)指令在該層次存儲(chǔ)器循跡地址作為該分支目標(biāo)指令的循跡地址,且以該分支源指令所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊的BNX作為該分支目標(biāo)指令循跡地址中的BNX,以該分支目標(biāo)指令地址中對(duì)應(yīng)所述層次存儲(chǔ)器的BNY部分作為該分支目標(biāo)指令循跡地址中的BNY。[0049]可選的,在所述的指令處理系統(tǒng)中,在所述掃描器中還包含一個(gè)加法器,用于對(duì)分支源指令本身在某一層次存儲(chǔ)器對(duì)應(yīng)的塊內(nèi)偏移量與分支轉(zhuǎn)移距離中對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量的部分相加,產(chǎn)生進(jìn)位輸出;當(dāng)所述分支轉(zhuǎn)移距離為正數(shù)或零時(shí),若所述分支轉(zhuǎn)移距離對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量以外部分為全‘0’,且所述進(jìn)位輸出為‘0’,則所述分支目標(biāo)位于該層次存儲(chǔ)器中所述分支源指令所在的指令塊中;當(dāng)所述分支轉(zhuǎn)移距離為負(fù)數(shù)時(shí),若所述分支轉(zhuǎn)移距離對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量以外部分為全‘I’,且所述進(jìn)位輸出為‘I’,則所述分支目標(biāo)位于所述分支源指令所在的指令塊中。[0050]可選的,在所述的指令處理系統(tǒng)中,所述加法器還進(jìn)一步對(duì)分支源指令本身在某一層次存儲(chǔ)器對(duì)應(yīng)的塊內(nèi)偏移量以外部分中的低位與分支轉(zhuǎn)移距離中的相應(yīng)位相加,判斷所述分支目標(biāo)是否位于該層次存儲(chǔ)器中所述分支源指令所在的指令塊順序地址的前一個(gè)或后Iv指令塊中。[0051]可選的,在所述的指令處理系統(tǒng)中,若下次數(shù)據(jù)地址位于本次數(shù)據(jù)在至少一個(gè)層次存儲(chǔ)器的同一存儲(chǔ)塊中,則以該下次數(shù)據(jù)在這些層次的存儲(chǔ)器中的較高層次存儲(chǔ)器循跡地址作為該下次數(shù)據(jù)的循跡地址,且以該本次數(shù)據(jù)的循跡地址中的DBNX作為該下次數(shù)據(jù)的循跡地址中的DBNX,以該下次數(shù)據(jù)中對(duì)應(yīng)所述層次存儲(chǔ)器的DBNY部分作為該下次數(shù)據(jù)的循跡地址中的DBNY。[0052]可選的,在所述的指令處理系統(tǒng)中,在所述數(shù)據(jù)引擎中:若下次數(shù)據(jù)地址位于本次數(shù)據(jù)在某一層次存儲(chǔ)器中所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊中,則以該下次數(shù)據(jù)在該層次存儲(chǔ)器循跡地址作為該下次數(shù)據(jù)的循跡地址,且以該本次數(shù)據(jù)所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊的DBNX作為該下次數(shù)據(jù)的循跡地址中的DBNX,以該下次數(shù)據(jù)中對(duì)應(yīng)所述層次存儲(chǔ)器的DBNY部分作為該下次數(shù)據(jù)的循跡地址中的DBNY。[0053]可選的,在所述的指令處理系統(tǒng)中,在所述數(shù)據(jù)引擎中還包含一個(gè)加法器,用于對(duì)本次數(shù)據(jù)本身在某一層次存儲(chǔ)器對(duì)應(yīng)的塊內(nèi)偏移量與數(shù)據(jù)步長(zhǎng)中對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量的部分相加,產(chǎn)生進(jìn)位輸出;當(dāng)所述數(shù)據(jù)步長(zhǎng)為正數(shù)或零時(shí),若所述數(shù)據(jù)步長(zhǎng)對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量以外部分為全‘0’,且所述進(jìn)位輸出為‘0’,則所述下次數(shù)據(jù)位于該層次存儲(chǔ)器中所述本次數(shù)據(jù)所在的數(shù)據(jù)塊中;當(dāng)所述數(shù)據(jù)步長(zhǎng)為負(fù)數(shù)時(shí),若所述數(shù)據(jù)步長(zhǎng)對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量以外部分為全‘1’,且所述進(jìn)位輸出為‘1’,則所述下次數(shù)據(jù)位于所述本次數(shù)據(jù)所在的數(shù)據(jù)塊中。[0054]可選的,在所述的指令處理系統(tǒng)中,所述加法器還進(jìn)一步對(duì)本次數(shù)據(jù)本身在某一層次存儲(chǔ)器對(duì)應(yīng)的塊內(nèi)偏移量以外部分中的低位與數(shù)據(jù)步長(zhǎng)中的相應(yīng)位相加,判斷所述下次數(shù)據(jù)是否位于該層次存儲(chǔ)器中所述本次數(shù)據(jù)所在的數(shù)據(jù)塊順序地址的前一個(gè)或后一個(gè)數(shù)據(jù)塊中。[0055]可選的,在所述的指令處理系統(tǒng)中,每個(gè)層次的數(shù)據(jù)存儲(chǔ)器還對(duì)應(yīng)一個(gè)數(shù)據(jù)循跡地址轉(zhuǎn)換模塊;所述數(shù)據(jù)循跡地址轉(zhuǎn)換模塊的行與該層次數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)塊一一對(duì)應(yīng),其中每行存儲(chǔ)了對(duì)應(yīng)該層次數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)塊所在的更低層次存儲(chǔ)器中的數(shù)據(jù)塊號(hào)及相應(yīng)的子塊號(hào),從而可以將所述層次數(shù)據(jù)循跡地址中的塊號(hào)轉(zhuǎn)換為所述更低層次數(shù)據(jù)循跡地址中的塊號(hào),并將該子塊號(hào)與所述層次的數(shù)據(jù)循跡地址中的塊內(nèi)偏移量合并構(gòu)成所述更低層次的數(shù)據(jù)循跡地址中的塊內(nèi)偏移量。[0056]可選的,在所述的指令處理系統(tǒng)中,指令和數(shù)據(jù)共享速度較低的存儲(chǔ)器,且在主動(dòng)表中存儲(chǔ)了速度最低的存儲(chǔ)器中的指令塊和數(shù)據(jù)塊的塊地址。[0057]可選的,在所述的指令處理系統(tǒng)中,虛實(shí)地址轉(zhuǎn)換模塊(TLB)位于主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器以外的層次中,使得所述主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)虛擬地址尋址,而更低層次存儲(chǔ)器均根據(jù)物理地址尋址;當(dāng)分支源指令的目標(biāo)指令尚未存儲(chǔ)在主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中時(shí),該目標(biāo)指令的地址經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往更低層次存儲(chǔ)器獲取相應(yīng)指令;或當(dāng)下次數(shù)據(jù)尚未存儲(chǔ)在主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中時(shí),該下次數(shù)據(jù)的地址經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往更低層次存儲(chǔ)器獲取相應(yīng)數(shù)據(jù)。[0058]可選的,在所述的指令處理系統(tǒng)中,所述主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)物理地址尋址;虛實(shí)地址轉(zhuǎn)換模塊位于處理器、掃描器或數(shù)據(jù)引擎與主動(dòng)表之間的路徑上。[0059]可選的,在所述的指令處理系統(tǒng)中,對(duì)于由掃描器或數(shù)據(jù)引擎產(chǎn)生的虛擬地址,經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往主動(dòng)表轉(zhuǎn)換為循跡地址;對(duì)于由處理器產(chǎn)生的間接分支目標(biāo)指令地址或數(shù)據(jù)地址,經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往主動(dòng)表轉(zhuǎn)換為循跡地址從存儲(chǔ)器中獲取相應(yīng)指令或數(shù)據(jù)提供給處理器使用,并填充到最高層次存儲(chǔ)器中。[0060]可選的,在所述的指令處理系統(tǒng)中,在所述虛實(shí)地址轉(zhuǎn)換模塊中的每項(xiàng)還存儲(chǔ)了連續(xù)虛擬地址的前一或后一頁(yè)面的物理頁(yè)面地址在虛實(shí)地址轉(zhuǎn)換模塊中的位置信息;若根據(jù)物理地址直接計(jì)算得到的分支目標(biāo)指令地址或下次數(shù)據(jù)地址位于分支源指令或本次數(shù)據(jù)所在頁(yè)面的前一或后一頁(yè)面,則根據(jù)所述前一或后一頁(yè)面的位置信息從虛實(shí)地址轉(zhuǎn)換模塊中找到相應(yīng)物理頁(yè)面地址構(gòu)成該分支目標(biāo)指令或下次數(shù)據(jù)的物理地址,再送主動(dòng)表轉(zhuǎn)換為循跡地址。[0061]可選的,在所述的指令處理系統(tǒng)中,掃描器根據(jù)被審查指令的物理地址計(jì)算其后續(xù)指令的地址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于相同頁(yè)面但不在同一存儲(chǔ)塊中時(shí),根據(jù)所述被審查指令的物理地址,在主動(dòng)表中將所述后續(xù)指令的地址轉(zhuǎn)換為循跡地址直接對(duì)存儲(chǔ)器尋址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于不同頁(yè)面時(shí),將所述被審查指令標(biāo)記為間接分支指令(直標(biāo)間指令類(lèi)型),等到處理器執(zhí)行到該指令時(shí)并產(chǎn)生后續(xù)指令地址時(shí),將該后續(xù)指令地址送到虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換為物理地址后,再送到主動(dòng)表轉(zhuǎn)換為循跡地址對(duì)存儲(chǔ)器尋址。[0062]可選的,在所述的指令處理系統(tǒng)中,所述主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)物理地址尋址;所述主動(dòng)表除主體部分外,還包含一個(gè)抗混疊表;所述抗混疊表中的每行存儲(chǔ)一個(gè)虛頁(yè)號(hào)及該虛頁(yè)號(hào)對(duì)應(yīng)的物理地址頁(yè)號(hào)在主動(dòng)表主體部分中所在的一個(gè)塊號(hào);當(dāng)主動(dòng)表中某個(gè)指令塊或數(shù)據(jù)塊的物理地址對(duì)應(yīng)的虛擬地址多于一個(gè)時(shí),所述主動(dòng)表的主體部分中存儲(chǔ)了該指令塊或數(shù)據(jù)塊的物理地址及其對(duì)應(yīng)的一個(gè)虛擬地址,而其他虛擬地址中的虛頁(yè)號(hào)及對(duì)應(yīng)的塊號(hào)則存儲(chǔ)在抗混疊表中。[0063]可選的,在所述的指令處理系統(tǒng)中,處理器、掃描器或數(shù)據(jù)引擎輸出的虛擬地址在主動(dòng)表中與主體部分及抗混疊表中的虛擬地址匹配時(shí),輸出虛擬地址及虛頁(yè)號(hào)匹配結(jié)果;所述匹配結(jié)果包括:虛擬地址匹配成功,或虛擬地址匹配不成功且虛頁(yè)號(hào)匹配成功,或虛頁(yè)號(hào)匹配不成功;處理器、掃描器或數(shù)據(jù)引擎輸出的物理地址在主動(dòng)表中與主體部分中的物理地址匹配時(shí),輸出物理地址及物理地址頁(yè)號(hào)匹配結(jié)果;所述匹配結(jié)果包括:物理地址匹配成功,或物理地址匹配不成功且物理地址頁(yè)號(hào)匹配成功,或物理地址頁(yè)號(hào)匹配不成功。[0064]可選的,在所述的指令處理系統(tǒng)中,主動(dòng)表輸出掃描器中被審查指令對(duì)應(yīng)的虛擬地址到掃描器;掃描器根據(jù)被審查指令的物理地址計(jì)算其后續(xù)指令的地址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于相同頁(yè)面時(shí),掃描器將計(jì)算得到的所述地址送主動(dòng)表轉(zhuǎn)換為循跡地址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于不同頁(yè)面時(shí),掃描器根據(jù)接收到的虛擬地址計(jì)算后續(xù)指令的虛擬地址,并送到主動(dòng)表匹配得到相應(yīng)物理地址,再轉(zhuǎn)換為循跡地址。[0065]可選的,在所述的指令處理系統(tǒng)中,主動(dòng)表輸出數(shù)據(jù)引擎中本次數(shù)據(jù)循跡地址對(duì)應(yīng)的虛擬地址到數(shù)據(jù)引擎;對(duì)于數(shù)據(jù)訪問(wèn)指令,數(shù)據(jù)引擎根據(jù)本次數(shù)據(jù)地址和數(shù)據(jù)步長(zhǎng)計(jì)算下次數(shù)據(jù)地址;當(dāng)所述下次數(shù)據(jù)的地址與所述本次數(shù)據(jù)的地址位于相同頁(yè)面時(shí),數(shù)據(jù)引擎將計(jì)算得到的所述地址送主動(dòng)表轉(zhuǎn)換為循跡地址;當(dāng)所述下次數(shù)據(jù)的地址與所述本次數(shù)據(jù)的地址位于不同頁(yè)面時(shí),數(shù)據(jù)弓I擎根據(jù)接收到的虛擬地址計(jì)算下次數(shù)據(jù)的虛擬地址,并送到主動(dòng)表匹配得到相應(yīng)物理地址,再轉(zhuǎn)換為循跡地址。[0066]可選的,在所述的指令處理方法中,根據(jù)循跡地址對(duì)軌道表和速度最高的存儲(chǔ)器尋址,讀出軌跡點(diǎn)內(nèi)容并據(jù)此更新讀指針值,同時(shí)讀出指令供處理器執(zhí)行。[0067]可選的,在所述的指令處理方法中,軌道表中控制流(controlflow)信息以二叉樹(shù)形式存在,其中每個(gè)分支點(diǎn)對(duì)應(yīng)一條分支指令。[0068]可選的,在所述的指令處理方法中,所述二叉樹(shù)是完整的二叉樹(shù),包含了相鄰分支點(diǎn)之間的路徑信息,從而可以由一令分支點(diǎn)出發(fā)到達(dá)其兩個(gè)分叉上各一個(gè)相鄰的后續(xù)分支點(diǎn)。[0069]可選的,在所述的指令處理方法中,對(duì)于間接分支指令,由處理器執(zhí)行該指令并產(chǎn)生分支目標(biāo)地址后,再轉(zhuǎn)換為循跡地址。[0070]可選的,在所述的指令處理方法中,對(duì)于無(wú)條件分支指令,以其分支目標(biāo)循跡地址作為后續(xù)指令循跡地址;對(duì)于條件分支指令,根據(jù)處理器核執(zhí)行該條件分支指令產(chǎn)生的分支轉(zhuǎn)移是否發(fā)生的信息選擇其下一指令循跡地址或分支目標(biāo)循跡地址中的一個(gè)作為后續(xù)指令循跡地址。[0071]可選的,在所述的指令處理方法中,處理器產(chǎn)生的所述間接分支目標(biāo)地址被轉(zhuǎn)換為循跡地址并存儲(chǔ)在軌道表的相應(yīng)軌跡點(diǎn)中;當(dāng)再次指向該軌跡點(diǎn)時(shí),當(dāng)作直接分支點(diǎn)猜測(cè)執(zhí)行,并將處理器此時(shí)產(chǎn)生的分支目標(biāo)地址與該軌跡點(diǎn)中循跡地址對(duì)應(yīng)的指令地址進(jìn)行比較;若兩者相等,則該猜測(cè)是正確的,可以繼續(xù)后續(xù)操作;若兩者不等,則該猜測(cè)是錯(cuò)誤的,用所述處理器產(chǎn)生的分支目標(biāo)地址轉(zhuǎn)換為循跡地址,再進(jìn)行后續(xù)操作。[0072]可選的,在所述的指令處理方法中,根據(jù)分支目標(biāo)指令或數(shù)據(jù)位于存儲(chǔ)器層次的不同,軌道表的軌跡點(diǎn)中存儲(chǔ)了不同格式的循跡地址;不同格式的循跡地址對(duì)應(yīng)不同層次的存儲(chǔ)器;可以對(duì)不同層次緩存的循跡地址進(jìn)行轉(zhuǎn)換。[0073]可選的,在所述的指令處理方法中,使用的地址格式包括指令地址、數(shù)據(jù)地址和循跡地址。[0074]可選的,在所述的指令處理方法中,數(shù)據(jù)訪問(wèn)指令對(duì)應(yīng)的軌跡點(diǎn)中存儲(chǔ)了循跡地址和數(shù)據(jù)步長(zhǎng)。[0075]可選的,在所述的指令處理方法中,當(dāng)從所述軌道表的軌跡點(diǎn)中讀出的是對(duì)應(yīng)速度較低的存儲(chǔ)器的循跡地址時(shí),該循跡地址被轉(zhuǎn)換為對(duì)應(yīng)速度較高的存儲(chǔ)器的循跡地址并填回軌道表的該的軌跡點(diǎn)中,同時(shí)將對(duì)應(yīng)的指令塊或數(shù)據(jù)塊從速度較低的存儲(chǔ)器存儲(chǔ)到速度較高的存儲(chǔ)器中。[0076]可選的,在所述的指令處理方法中,當(dāng)速度最低存儲(chǔ)器中一個(gè)存儲(chǔ)塊對(duì)應(yīng)的順序地址的前一存儲(chǔ)塊或后一存儲(chǔ)塊已經(jīng)存儲(chǔ)在所述速度最低存儲(chǔ)器中時(shí),主動(dòng)表中存儲(chǔ)了該存儲(chǔ)塊對(duì)應(yīng)的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊在所述速度最低存儲(chǔ)器中的存儲(chǔ)位置信息。[0077]可選的,在所述的指令處理方法中,當(dāng)指令或數(shù)據(jù)地址位于速度最低存儲(chǔ)器中當(dāng)前存儲(chǔ)塊的前一存儲(chǔ)塊或后一存儲(chǔ)塊中時(shí),可以根據(jù)存儲(chǔ)在主動(dòng)表中的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息,直接在速度最低存儲(chǔ)器中找到該指令或數(shù)據(jù)。[0078]可選的,在所述的指令處理方法中,當(dāng)一個(gè)存儲(chǔ)塊被替換或填充時(shí),若可以確定該存儲(chǔ)塊的前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置,則將所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息存儲(chǔ)在主動(dòng)表中該存儲(chǔ)塊對(duì)應(yīng)的前一存儲(chǔ)塊位置或后一存儲(chǔ)塊位置中,并相應(yīng)地將該存儲(chǔ)塊的位置信息存儲(chǔ)在主動(dòng)表中所述前一存儲(chǔ)塊對(duì)應(yīng)的后一存儲(chǔ)塊位置中,或?qū)⒃摯鎯?chǔ)塊的位置信息存儲(chǔ)在主動(dòng)表中所述后一存儲(chǔ)塊對(duì)應(yīng)的前一存儲(chǔ)塊位置中。[0079]可選的,在所述的指令處理方法中,當(dāng)一個(gè)存儲(chǔ)塊被替換或填充時(shí),根據(jù)主動(dòng)表中該存儲(chǔ)塊對(duì)應(yīng)的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息,將所述前一存儲(chǔ)塊對(duì)應(yīng)的后一存儲(chǔ)塊的位置信息清除,以及將所述后一存儲(chǔ)塊對(duì)應(yīng)前一存儲(chǔ)塊的位置信息清除。[0080]可選的,在所述的指令處理方法中,對(duì)分支目標(biāo)指令地址進(jìn)行邊界判斷;根據(jù)所述判斷結(jié)果,對(duì)位于不同位置的分支目標(biāo)指令給予不同格式的地址;或?qū)?shù)據(jù)訪問(wèn)指令的下次數(shù)據(jù)地址進(jìn)行邊界判斷;根據(jù)所述判斷結(jié)果,對(duì)位于不同位置的下次數(shù)據(jù)給予不同格式的地址。[0081]可選的,在所述的指令處理方法中,若分支目標(biāo)指令地址位于分支源指令在至少一個(gè)層次存儲(chǔ)器的同一存儲(chǔ)塊中,則以該分支目標(biāo)指令在這些層次的存儲(chǔ)器中的較高層次存儲(chǔ)器循跡地址作為該分支目標(biāo)指令的循跡地址,且以該分支源指令循跡地址中的BNX作為該分支目標(biāo)指令循跡地址中的BNX,以該分支目標(biāo)指令地址中對(duì)應(yīng)所述層次存儲(chǔ)器的BNY部分作為該分支目標(biāo)指令循跡地址中的BNY。[0082]可選的,在所述的指令處理方法中,若分支目標(biāo)指令地址位于分支源指令在某一層次存儲(chǔ)器中所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊中,則以該分支目標(biāo)指令在該層次存儲(chǔ)器循跡地址作為該分支目標(biāo)指令的循跡地址,且以該分支源指令所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊的BNX作為該分支目標(biāo)指令循跡地址中的BNX,以該分支目標(biāo)指令地址中對(duì)應(yīng)所述層次存儲(chǔ)器的BNY部分作為該分支目標(biāo)指令循跡地址中的BNY。[0083]可選的,在所述的指令處理方法中,若下次數(shù)據(jù)地址位于本次數(shù)據(jù)在至少一個(gè)層次存儲(chǔ)器的同一存儲(chǔ)塊中,則以該下次數(shù)據(jù)在這些層次的存儲(chǔ)器中的較高層次存儲(chǔ)器循跡地址作為該下次數(shù)據(jù)的循跡地址,且該下次數(shù)據(jù)的循跡地址中的DBNX等于該本次數(shù)據(jù)的循跡地址中的DBNX,該下次數(shù)據(jù)的循跡地址中的DBNY等于該下次數(shù)據(jù)中對(duì)應(yīng)所述層次存儲(chǔ)器的DBNY部分。[0084]可選的,在所述的指令處理方法中,若下次數(shù)據(jù)地址位于本次數(shù)據(jù)在某一層次存儲(chǔ)器中所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊中,則以該下次數(shù)據(jù)在該層次存儲(chǔ)器循跡地址作為該下次數(shù)據(jù)的循跡地址,且該下次數(shù)據(jù)的循跡地址中的DBNX等于該本次數(shù)據(jù)所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊的DBNX,該下次數(shù)據(jù)的循跡地址中的DBNY等于該下次數(shù)據(jù)中對(duì)應(yīng)所述層次存儲(chǔ)器的DBNY部分。[0085]可選的,在所述的指令處理方法中,還記錄了較高層次存儲(chǔ)器中每個(gè)數(shù)據(jù)塊在較低層次存儲(chǔ)器中所在的存儲(chǔ)塊信息;根據(jù)所述信息,可以將對(duì)應(yīng)較高層次存儲(chǔ)器的數(shù)據(jù)循跡地址轉(zhuǎn)換為對(duì)應(yīng)較低層次存儲(chǔ)器的數(shù)據(jù)循跡地址。[0086]可選的,在所述的指令處理方法中,指令和數(shù)據(jù)共享速度較低的存儲(chǔ)器,且在主動(dòng)表中存儲(chǔ)了速度最低的存儲(chǔ)器中的指令塊和數(shù)據(jù)塊的塊地址。[0087]可選的,在所述的指令處理方法中,主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)虛擬地址尋址,而更低層次存儲(chǔ)器均根據(jù)物理地址尋址;當(dāng)分支源指令的目標(biāo)指令尚未存儲(chǔ)在主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中時(shí),該目標(biāo)指令的虛擬地址經(jīng)虛實(shí)地址轉(zhuǎn)換為物理地址后被送往更低層次存儲(chǔ)器獲取相應(yīng)指令;或當(dāng)下次數(shù)據(jù)尚未存儲(chǔ)在主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中時(shí),該下次數(shù)據(jù)的虛擬地址轉(zhuǎn)換為物理地址后被送往更低層次存儲(chǔ)器獲取相應(yīng)數(shù)據(jù)。[0088]可選的,在所述的指令處理方法中,主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)物理地址尋址;對(duì)于由掃描器或數(shù)據(jù)引擎產(chǎn)生的虛擬地址,經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往主動(dòng)表轉(zhuǎn)換為循跡地址;對(duì)于由處理器產(chǎn)生的間接分支目標(biāo)指令地址或數(shù)據(jù)地址,經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往主動(dòng)表轉(zhuǎn)換為循跡地址從存儲(chǔ)器中獲取相應(yīng)指令或數(shù)據(jù)提供給處理器使用,并填充到最高層次存儲(chǔ)器中。[0089]可選的,在所述的指令處理方法中,還記錄了連續(xù)虛擬地址的前一或后一頁(yè)面的物理頁(yè)面地址的位置信息;若根據(jù)物理地址直接計(jì)算得到的分支目標(biāo)指令地址或下次數(shù)據(jù)地址位于分支源指令或本次數(shù)據(jù)所在頁(yè)面的前一或后一頁(yè)面,則根據(jù)所述前一或后一頁(yè)面的位置信息中找到相應(yīng)物理頁(yè)面地址構(gòu)成該分支目標(biāo)指令或下次數(shù)據(jù)的物理地址,再送主動(dòng)表轉(zhuǎn)換為循跡地址。[0090]可選的,在所述的指令處理方法中,根據(jù)被審查指令的物理地址計(jì)算其后續(xù)指令的地址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于相同頁(yè)面但不在同一存儲(chǔ)塊中時(shí),根據(jù)所述被審查指令的物理地址,在主動(dòng)表中將所述后續(xù)指令的地址轉(zhuǎn)換為循跡地址直接對(duì)存儲(chǔ)器尋址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于不同頁(yè)面時(shí),將所述被審查指令標(biāo)記為間接分支指令(直標(biāo)間指令類(lèi)型),等到處理器執(zhí)行到該指令時(shí)并產(chǎn)生后續(xù)指令地址時(shí),將該后續(xù)指令地址轉(zhuǎn)換為物理地址后,再送到主動(dòng)表轉(zhuǎn)換為循跡地址對(duì)存儲(chǔ)器尋址。[0091]可選的,在所述的指令處理方法中,所述主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)物理地址尋址;所述主動(dòng)表除主體部分外,還包含一個(gè)抗混疊表;所述抗混疊表中的每行存儲(chǔ)一個(gè)虛頁(yè)號(hào)及該虛頁(yè)號(hào)對(duì)應(yīng)的物理地址頁(yè)號(hào)在主動(dòng)表主體部分中所在的一個(gè)塊號(hào);當(dāng)主動(dòng)表中某個(gè)指令塊或數(shù)據(jù)塊的物理地址對(duì)應(yīng)的虛擬地址多于一個(gè)時(shí),所述主動(dòng)表的主體部分中存儲(chǔ)了該指令塊或數(shù)據(jù)塊的物理地址及其對(duì)應(yīng)的一個(gè)虛擬地址,而其他虛擬地址中的虛頁(yè)號(hào)及對(duì)應(yīng)的塊號(hào)則存儲(chǔ)在抗混疊表中。[0092]可選的,在所述的指令處理方法中,處理器、掃描器或數(shù)據(jù)引擎輸出的虛擬地址在主動(dòng)表中與主體部分及抗混疊表中的虛擬地址匹配時(shí),輸出虛擬地址及虛頁(yè)號(hào)匹配結(jié)果;所述匹配結(jié)果包括:虛擬地址匹配成功,或虛擬地址匹配不成功且虛頁(yè)號(hào)匹配成功,或虛頁(yè)號(hào)匹配不成功;處理器、掃描器或數(shù)據(jù)引擎輸出的物理地址在主動(dòng)表中與主體部分中的物理地址匹配時(shí),輸出物理地址及物理地址頁(yè)號(hào)匹配結(jié)果;所述匹配結(jié)果包括:物理地址匹配成功,或物理地址匹配不成功且物理地址頁(yè)號(hào)匹配成功,或物理地址頁(yè)號(hào)匹配不成功。[0093]可選的,在所述的指令處理方法中,在掃描器中,若所述目標(biāo)指令物理地址與分支源指令物理地址位于同一指令塊,則直接輸出分支源指令對(duì)應(yīng)的塊號(hào);若所述目標(biāo)指令物理地址與分支源指令物理地址位于同一頁(yè)面中的不同指令塊,則所述目標(biāo)指令物理地址被送到主動(dòng)表的主體部分中與物理地址匹配;若物理地址匹配成功,則輸出匹配成功項(xiàng)的塊號(hào);若物理地址匹配不成功,則根據(jù)該物理地址從更低層次存儲(chǔ)器中獲取相應(yīng)指令塊,填充到主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中按替換算法分配的存儲(chǔ)塊中,并將所述虛擬地址及物理地址填充到主動(dòng)表的主體部分中該存儲(chǔ)塊對(duì)應(yīng)的行中,同時(shí)輸出該存儲(chǔ)塊對(duì)應(yīng)的塊號(hào);在數(shù)據(jù)引擎中,若所述下次數(shù)據(jù)物理地址與本次數(shù)據(jù)物理地址位于同一數(shù)據(jù)塊,則直接輸出本次數(shù)據(jù)對(duì)應(yīng)的塊號(hào);若所述下次數(shù)據(jù)物理地址與本次數(shù)據(jù)物理地址位于同一頁(yè)面中的不同數(shù)據(jù)塊,則所述下次數(shù)據(jù)物理地址被送到主動(dòng)表的主體部分中與物理地址匹配;若物理地址匹配成功,則輸出匹配成功項(xiàng)的塊號(hào);若物理地址匹配不成功,則根據(jù)該物理地址從更低層次存儲(chǔ)器中獲取相應(yīng)數(shù)據(jù)塊,填充到主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中按替換算法分配的存儲(chǔ)塊中,并將所述虛擬地址及物理地址填充到主動(dòng)表的主體部分中該存儲(chǔ)塊對(duì)應(yīng)的行中,同時(shí)輸出該存儲(chǔ)塊對(duì)應(yīng)的塊號(hào)。[0094]可選的,在所述的指令處理方法中,對(duì)于處理器、掃描器或數(shù)據(jù)引擎輸出的虛擬地址:若在主動(dòng)表的主體部分中與虛擬地址匹配成功,則輸出匹配成功項(xiàng)對(duì)應(yīng)的塊號(hào);若在主動(dòng)表的主體部分中與虛擬地址匹配不成功但與虛頁(yè)號(hào)匹配成功,則讀出匹配成功項(xiàng)中的物理地址頁(yè)號(hào),與所述虛擬地址中的標(biāo)簽低位合并構(gòu)成物理地址,再送到主動(dòng)表的主體部分中與物理地址匹配;若物理地址匹配成功,則輸出匹配成功項(xiàng)的塊號(hào);若物理地址匹配不成功,則根據(jù)該物理地址從更低層次存儲(chǔ)器中獲取相應(yīng)指令塊或數(shù)據(jù)塊,填充到主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中按替換算法分配的存儲(chǔ)塊中,并將所述虛擬地址及物理地址填充到主動(dòng)表的主體部分中該存儲(chǔ)塊對(duì)應(yīng)的行中,同時(shí)輸出該存儲(chǔ)塊對(duì)應(yīng)的塊號(hào);若在主動(dòng)表的主體部分中與虛頁(yè)號(hào)匹配不成功,則由操作系統(tǒng)提供該虛頁(yè)號(hào)對(duì)應(yīng)的物理地址頁(yè)號(hào);所述物理地址頁(yè)號(hào)與所述虛擬地址中的標(biāo)簽低位合并構(gòu)成物理地址,再送到主動(dòng)表的主體部分中與物理地址匹配;若物理地址匹配成功,則將所述虛頁(yè)號(hào)及匹配成功項(xiàng)的塊號(hào)填充到抗混疊表的可用行中,并輸出該塊號(hào);若物理地址匹配不成功,則該物理地址從更低層次存儲(chǔ)器中獲取相應(yīng)指令塊或數(shù)據(jù)塊,填充到主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中按替換算法分配的存儲(chǔ)塊中,并將所述虛擬地址及物理地址填充到主動(dòng)表的主體部分中該存儲(chǔ)塊對(duì)應(yīng)的行中,同時(shí)輸出該存儲(chǔ)塊對(duì)應(yīng)的塊號(hào)。[0095]可選的,在所述的指令處理方法中,根據(jù)被審查指令的物理地址計(jì)算其后續(xù)指令的地址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于相同頁(yè)面時(shí),將計(jì)算得到的所述地址送主動(dòng)表轉(zhuǎn)換為循跡地址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于不同頁(yè)面時(shí),根據(jù)被審查指令的虛擬地址計(jì)算后續(xù)指令的虛擬地址,并送到主動(dòng)表匹配得到相應(yīng)物理地址,再轉(zhuǎn)換為循跡地址。[0096]可選的,在所述的指令處理方法中,對(duì)于數(shù)據(jù)訪問(wèn)指令,根據(jù)本次數(shù)據(jù)地址和數(shù)據(jù)步長(zhǎng)計(jì)算下次數(shù)據(jù)地址;當(dāng)所述下次數(shù)據(jù)的地址與所述本次數(shù)據(jù)的地址位于相同頁(yè)面時(shí),將計(jì)算得到的所述地址送主動(dòng)表轉(zhuǎn)換為循跡地址;當(dāng)所述下次數(shù)據(jù)的地址與所述本次數(shù)據(jù)的地址位于不同頁(yè)面時(shí),根據(jù)本次數(shù)據(jù)的虛擬地址計(jì)算下次數(shù)據(jù)的虛擬地址,并送到主動(dòng)表匹配得到相應(yīng)物理地址,再轉(zhuǎn)換為循跡地址。[0097]在本發(fā)明提供的指令處理系統(tǒng)及方法中,通過(guò)指令控制器根據(jù)軌道表中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供指令,即能夠根據(jù)分支指令的目標(biāo)指令的循跡地址,預(yù)先/盡早向存儲(chǔ)速度高的存儲(chǔ)器提供指令,從而當(dāng)處理器需要這些指令時(shí),存儲(chǔ)速度高的存儲(chǔ)器及時(shí)地向處理器提供所需的指令,進(jìn)而保證了處理器的運(yùn)行速度?!緦?zhuān)利附圖】【附圖說(shuō)明】[0098]圖1是本發(fā)明實(shí)施例的指令處理系統(tǒng)的一框結(jié)構(gòu)示意圖;[0099]圖2是本發(fā)明實(shí)施例的指令處理系統(tǒng)的另一框結(jié)構(gòu)示意圖;[0100]圖3是本發(fā)明實(shí)施例的預(yù)測(cè)器的一框結(jié)構(gòu)示意圖;[0101]圖4A?4D是本發(fā)明實(shí)施例的分支指令與分支指令段的樹(shù)型關(guān)系示意圖;[0102]圖4E是本發(fā)明實(shí)施例的預(yù)測(cè)器中四個(gè)寄存器值的變化情況示意圖;[0103]圖5是本發(fā)明實(shí)施例的預(yù)測(cè)循跡器的一框結(jié)構(gòu)示意圖;[0104]圖6是本發(fā)明實(shí)施例的緩沖的一框結(jié)構(gòu)示意圖;[0105]圖7是本發(fā)明實(shí)施例的帶暫存的另一緩沖的一框結(jié)構(gòu)示意圖;[0106]圖8是本發(fā)明實(shí)施例的指令處理系統(tǒng)的另一框結(jié)構(gòu)示意圖;[0107]圖9是本發(fā)明所述的計(jì)算和查找分支目標(biāo)指令的結(jié)構(gòu)圖;[0108]圖1OA是本發(fā)明所述主動(dòng)表中一個(gè)表項(xiàng)的結(jié)構(gòu)不意圖;[0109]圖1OB是本發(fā)明所述軌道表中一個(gè)表項(xiàng)的內(nèi)容不意圖;[0110]圖11是本發(fā)明實(shí)施例的分支指令地址和分支目標(biāo)指令地址示意圖,[0111]圖12是掃描器計(jì)算分支目標(biāo)地址的結(jié)構(gòu)圖;[0112]圖13是本發(fā)明所述為數(shù)據(jù)訪問(wèn)指令預(yù)先準(zhǔn)備數(shù)據(jù)的一個(gè)實(shí)施例[0113]圖14是TLB在處理器和主動(dòng)表之間的結(jié)構(gòu)圖;[0114]圖15是本發(fā)明所述虛實(shí)地址轉(zhuǎn)換的另一實(shí)現(xiàn)方式結(jié)構(gòu)圖;[0115]圖16是本發(fā)明所述虛實(shí)地址轉(zhuǎn)換的另一結(jié)構(gòu)圖;[0116]圖17是本發(fā)明所述計(jì)算分支目標(biāo)地址的另一結(jié)構(gòu)圖;[0117]圖18是本發(fā)明所述虛實(shí)地址轉(zhuǎn)換的另一結(jié)構(gòu)圖;[0118]圖19是本發(fā)明所述指令格式示意圖;[0119]圖20,其為本發(fā)明所述完整系統(tǒng)的一個(gè)實(shí)施例。【具體實(shí)施方式】[0120]以下結(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í)施例的目的。[0121]請(qǐng)參考圖1,其為本發(fā)明實(shí)施例的指令處理系統(tǒng)的一框結(jié)構(gòu)示意圖。如圖1所示,所述指令處理系統(tǒng)包含一個(gè)處理器10、一個(gè)主動(dòng)表11、一個(gè)掃描器12、一個(gè)軌道表13、一個(gè)相關(guān)表14、一個(gè)循跡器15、一個(gè)一級(jí)緩存16(即第一存儲(chǔ)器、也即存儲(chǔ)速度最高的存儲(chǔ)器)和一個(gè)二級(jí)緩存17(即第二存儲(chǔ)器、也即存儲(chǔ)速度次高的存儲(chǔ)器、在此也即存儲(chǔ)速度最低的存儲(chǔ)器)。應(yīng)當(dāng)理解的是,這里列出各種部件的目的是為了便于描述,還可以包含其他部件,而某些部件可以被省略。這里的各種部件可以分布在多個(gè)系統(tǒng)中,可以是物理上存在的或是虛擬的,可以是硬件實(shí)現(xiàn)(如:集成電路)、軟件實(shí)現(xiàn)或由硬件和軟件組合實(shí)現(xiàn)。[0122]在這里,存儲(chǔ)器的層次指的是存儲(chǔ)器與處理器10之間的接近程度。越接近處理器10的層次越高。此外,一個(gè)高層次的存儲(chǔ)器(如一級(jí)緩存16)通常比低層次的存儲(chǔ)器(如二級(jí)緩存17)速度快但容量小?!白罱咏幚砥鞯拇鎯?chǔ)器”指的是在存儲(chǔ)層次中離處理器最近、通常也是速度最快的存儲(chǔ)器,如本實(shí)施例中的一級(jí)緩存16。此外,本發(fā)明中的各個(gè)層次的存儲(chǔ)器具有包含關(guān)系,即層次較低的存儲(chǔ)器含有層次較高的存儲(chǔ)器中的全部存儲(chǔ)內(nèi)容。[0123]在本發(fā)明中,分支指令指的是任何適當(dāng)?shù)哪軐?dǎo)致處理器10改變執(zhí)行流(如:非按順序執(zhí)行一條指令)的指令形式。分支源指一條進(jìn)行分支操作的指令(即:分支指令),分支源地址可以是分支指令本身的指令地址;分支目標(biāo)指的是分支指令造成的分支轉(zhuǎn)移所轉(zhuǎn)向的目標(biāo)指令,分支目標(biāo)地址可以指當(dāng)分支指令的分支轉(zhuǎn)移成功發(fā)生時(shí)轉(zhuǎn)移進(jìn)入的地址,也就是分支目標(biāo)指令的指令地址;當(dāng)前指令可以指當(dāng)前正在被處理器核執(zhí)行或獲取的指令;當(dāng)前指令塊可以指含有當(dāng)前正被處理器執(zhí)行的指令的指令塊。[0124]在本發(fā)明中,軌道表13中的行與一級(jí)緩存16中的存儲(chǔ)塊對(duì)應(yīng)。軌道表13含有復(fù)數(shù)個(gè)軌跡點(diǎn)。一個(gè)軌跡點(diǎn)是軌道表中的一個(gè)表項(xiàng),可含有至少一條指令的信息,比如指令類(lèi)型信息、分支目標(biāo)地址等。軌跡點(diǎn)的循跡地址就是該軌跡點(diǎn)本身的軌道表地址,且所述循跡地址由一個(gè)行號(hào)和一個(gè)列號(hào)構(gòu)成。軌跡點(diǎn)的循跡地址與該軌跡點(diǎn)所代表指令的指令地址相對(duì)應(yīng);而分支指令軌跡點(diǎn)(即:分支點(diǎn))中含有該分支指令的分支目標(biāo)指令在軌道表中的循跡地址,且該循跡地址與該分支目標(biāo)指令的指令地址相對(duì)應(yīng)。[0125]為便于表不,可以用BN表不循跡地址,用BNX表不循跡地址中的行號(hào),并用BNY表示循跡地址中的列號(hào)。這樣,BNX就對(duì)應(yīng)指令所在存儲(chǔ)塊的位置(存儲(chǔ)塊的行號(hào)),而B(niǎo)NY就對(duì)應(yīng)指令在其所在存儲(chǔ)塊中的位置(偏移量)。相應(yīng)地,每個(gè)BN(包含BNX及BNY)也對(duì)應(yīng)軌道表13中的一個(gè)軌跡點(diǎn),即可以根據(jù)一個(gè)BN從軌道表13中找到對(duì)應(yīng)的軌跡點(diǎn)。進(jìn)一步地,為了便于描述,用BNl表示對(duì)應(yīng)一級(jí)緩存的循跡地址,用BN2表示對(duì)應(yīng)二級(jí)緩存的循跡地址。[0126]當(dāng)一個(gè)軌跡點(diǎn)對(duì)應(yīng)的指令是分支指令(即該軌跡點(diǎn)中的指令類(lèi)型信息表示對(duì)應(yīng)的指令為分支指令)時(shí),該軌跡點(diǎn)中還存儲(chǔ)了以循跡地址形式表示的該分支指令的分支目標(biāo)指令在存儲(chǔ)器(一級(jí)緩存16或二級(jí)緩存17)中的位置信息。根據(jù)該循跡地址,也可以在軌道表13中找到該分支目標(biāo)指令對(duì)應(yīng)的軌跡點(diǎn)的位置。即對(duì)于軌道表13的分支點(diǎn)而言,其軌道表地址就是其分支源地址對(duì)應(yīng)的循跡地址,其軌道表內(nèi)容中包含了其分支目標(biāo)地址對(duì)應(yīng)的循跡地址。[0127]在本實(shí)施例中,主動(dòng)表11中的表項(xiàng)與二級(jí)緩存17中的存儲(chǔ)塊一一對(duì)應(yīng),每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)BN2X,指明了該主動(dòng)表行對(duì)應(yīng)的二級(jí)緩存存儲(chǔ)塊存儲(chǔ)在二級(jí)緩存17中的位置,并形成了BN2X與二級(jí)緩存存儲(chǔ)塊的對(duì)應(yīng)關(guān)系。主動(dòng)表11中的每個(gè)表項(xiàng)存儲(chǔ)了一個(gè)二級(jí)緩存存儲(chǔ)塊的塊地址。此外,主動(dòng)表11中的每個(gè)表項(xiàng)還包含了該二級(jí)緩存存儲(chǔ)塊是否全部或部分存儲(chǔ)在一級(jí)緩存16中的信息。當(dāng)一個(gè)二級(jí)緩存存儲(chǔ)塊全部或部分存儲(chǔ)在一級(jí)緩存16中時(shí),該二級(jí)緩存指令塊對(duì)應(yīng)的主動(dòng)表11表項(xiàng)中存儲(chǔ)了對(duì)應(yīng)一級(jí)緩存存儲(chǔ)塊的塊號(hào)(即BNl中的BN1X)。這樣,當(dāng)用一個(gè)指令地址在主動(dòng)表11中進(jìn)行匹配時(shí),可以得到匹配成功項(xiàng)中存儲(chǔ)的BN1X,或得到匹配成功項(xiàng)對(duì)應(yīng)的BN2X,或得到匹配不成功的結(jié)果。[0128]掃描器12對(duì)從二級(jí)緩存17送往一級(jí)緩存16的指令進(jìn)行審查,一旦發(fā)現(xiàn)某條指令是分支指令,即計(jì)算該分支指令的分支目標(biāo)地址。例如,將分支指令所在指令塊的塊地址、該分支指令在指令塊中的偏移量和分支轉(zhuǎn)移距離三者相加得到分支目標(biāo)地址。[0129]可以將掃描器12計(jì)算得到的分支目標(biāo)指令地址與主動(dòng)表11中存儲(chǔ)的存儲(chǔ)塊行地址匹配。若匹配成功,且對(duì)應(yīng)的BNlX存在,則表示該分支目標(biāo)指令已經(jīng)存儲(chǔ)在一級(jí)緩存16中,則主動(dòng)表11輸出該BNlX送往軌道表13。若匹配成功,但對(duì)應(yīng)的BNlX不存在,則表示該分支目標(biāo)指令已經(jīng)存儲(chǔ)在二級(jí)緩存17中,但尚未存儲(chǔ)在一級(jí)緩存16中,則主動(dòng)表11輸出該BN2X送往軌道表13。若匹配不成功,則表示該分支目標(biāo)指令尚未存儲(chǔ)在一級(jí)緩存16及二級(jí)緩存17中,此時(shí),將該分支目標(biāo)指令地址通過(guò)總線18送往外部存儲(chǔ)器,同時(shí)在主動(dòng)表11中分配一個(gè)表項(xiàng)存儲(chǔ)對(duì)應(yīng)塊地址,輸出該BN2X送往軌道表13,并將外部存儲(chǔ)器送來(lái)的對(duì)應(yīng)指令塊填充到二級(jí)緩存17中與該BN2X對(duì)應(yīng)存儲(chǔ)塊中。[0130]當(dāng)一個(gè)指令塊從二級(jí)緩存17輸出寫(xiě)入一級(jí)緩存16的一個(gè)存儲(chǔ)塊中的同時(shí),在軌道表13中相應(yīng)行中建立對(duì)應(yīng)的軌道。對(duì)于該指令塊中的分支指令,其分支目標(biāo)指令地址經(jīng)主動(dòng)表11匹配輸出一個(gè)BNlX或BN2X,而該分支目標(biāo)指令在其指令塊中的位置(即該分支目標(biāo)指令地址的偏移量部分)就是對(duì)應(yīng)的BNlY或BN2Y。這樣,就得到了對(duì)應(yīng)該分支目標(biāo)指令的循跡地址(BNl或BN2),并將該循跡地址作為軌跡點(diǎn)內(nèi)容存儲(chǔ)到所述分支指令對(duì)應(yīng)的軌跡點(diǎn)中。如此可以建立對(duì)應(yīng)整個(gè)指令塊的一條軌道。這樣,在本實(shí)施例中,軌道表13的軌跡點(diǎn)內(nèi)容中的循跡地址可以是BNl,也可以是BN2,分別對(duì)應(yīng)指令塊已存儲(chǔ)在一級(jí)緩存16和二級(jí)緩存17中的情況。[0131]在本發(fā)明中,循跡器15由一個(gè)寄存器21、一個(gè)增量器22和一個(gè)選擇器23構(gòu)成。寄存器21中存儲(chǔ)的是循跡地址,其輸出為循跡器15的讀指針19,該讀指針19指向軌道表13中的一個(gè)軌跡點(diǎn)。當(dāng)根據(jù)讀指針19從軌道表13中讀出的指令類(lèi)型為非分支指令類(lèi)型時(shí),保持寄存器21中循跡地址的BNX部分不變,而B(niǎo)NY部分則通過(guò)增量器22增一后送往選擇器23。由于此時(shí)表示分支轉(zhuǎn)移是否發(fā)生的TAKEN信號(hào)20無(wú)效,因此選擇器23選擇缺省輸入,即該增一后的BNY寫(xiě)回寄存器21,使得讀指針19移動(dòng)并指向下一個(gè)軌跡點(diǎn)。[0132]如此移動(dòng)讀指針19直到指向一個(gè)分支指令,即讀指針19的值為分支源指令的循跡地址,并從軌道表13讀出該分支源指令的分支目標(biāo)指令循跡地址送往選擇器23,而選擇器23的另一個(gè)輸入依然是讀指針19輸出經(jīng)增一后的循跡地址(即指向該分支點(diǎn)之后的軌跡點(diǎn)的循跡地址)。[0133]這樣,循跡器15的讀指針19從處理器10當(dāng)前執(zhí)行的指令對(duì)應(yīng)的軌跡點(diǎn)開(kāi)始,提前移動(dòng)到該軌跡點(diǎn)之后的第一個(gè)分支點(diǎn)。由于軌道表13的軌跡點(diǎn)內(nèi)容中包含的循跡地址根據(jù)對(duì)應(yīng)目標(biāo)指令所在存儲(chǔ)器位置的不同可以是BNl或BN2,因此根據(jù)該目標(biāo)指令循跡地址可以在存儲(chǔ)器(一級(jí)緩存16或二級(jí)緩存17)中找到該目標(biāo)指令。[0134]當(dāng)讀出循跡器15的讀指針19指向的軌跡點(diǎn)內(nèi)容為BN2時(shí),該BN2經(jīng)總線30被送到二級(jí)緩存17以找到對(duì)應(yīng)指令塊,按之前所述方法將該指令塊填充到一級(jí)緩存16中,同時(shí)在軌道表11中建立對(duì)應(yīng)該指令塊的軌道,并將軌道表中讀指針19指向的軌跡點(diǎn)內(nèi)容由原來(lái)的BN2替換為對(duì)應(yīng)的BNl。[0135]當(dāng)處理器10執(zhí)行到該分支指令時(shí)產(chǎn)生TAKEN信號(hào)20。若TAKEN信號(hào)20表示該分支轉(zhuǎn)移沒(méi)有發(fā)生,則選擇器23選擇讀指針19增一后的循跡地址寫(xiě)回寄存器21,繼續(xù)移動(dòng)讀指針19沿當(dāng)前軌道繼續(xù)移動(dòng)到下一個(gè)分支點(diǎn),而處理器10輸出指令地址偏移量從讀指針19指向的一級(jí)緩存16的存儲(chǔ)塊中讀取相應(yīng)的后續(xù)指令。[0136]若TAKEN信號(hào)20表不該分支轉(zhuǎn)移發(fā)生,則選擇器23選擇軌道表13輸出的分支目標(biāo)指令循跡地址寫(xiě)入寄存器21,使得讀指針19同時(shí)指向軌道表13中該分支目標(biāo)指令對(duì)應(yīng)的軌跡點(diǎn)及一級(jí)緩存16中該分支目標(biāo)指令。此時(shí),可以根據(jù)讀指針19輸出的循跡地址BNl直接在一級(jí)緩存16找到該分支目標(biāo)指令;從而輸出該分支目標(biāo)指令供處理器10執(zhí)行。此后,讀指針19按之前所述方法沿該新的當(dāng)前軌道繼續(xù)移動(dòng)到下一個(gè)分支點(diǎn),而處理器10輸出指令地址偏移量從讀指針19指向的一級(jí)緩存16的存儲(chǔ)塊中讀取相應(yīng)的后續(xù)指令。[0137]這樣,當(dāng)處理器10需要讀取指令時(shí),對(duì)應(yīng)指令已經(jīng)存儲(chǔ)在一級(jí)緩存16中或正在往一級(jí)緩存16填充,從而掩蓋緩存缺失造成的全部或部分等待時(shí)間,提高指令處理系統(tǒng)的性倉(cāng)泛。[0138]需要說(shuō)明的是,可以在軌道表13中每條軌道的最后一個(gè)軌跡點(diǎn)之后增加一個(gè)結(jié)束軌跡點(diǎn),該結(jié)束軌跡點(diǎn)的類(lèi)型為必定發(fā)生的分支轉(zhuǎn)移,該結(jié)束軌跡點(diǎn)內(nèi)容中的BNX就是該軌道對(duì)應(yīng)的指令塊的下一個(gè)指令塊在軌道表13中的行號(hào)(BNX),該結(jié)束軌跡點(diǎn)中的BNY為‘O’。這樣,一旦循跡器15從該軌道的最后一個(gè)分支點(diǎn)開(kāi)始移動(dòng),則會(huì)指向結(jié)束軌跡點(diǎn),從而轉(zhuǎn)移至下一指令塊。[0139]在本發(fā)明中,相關(guān)表14記錄了軌道表13中軌道之間的相互關(guān)系,如記錄了對(duì)于軌道表13中的一條軌道,以該軌道為分支目標(biāo)的分支源所在軌道的信息。這樣,可以選擇軌道表13中沒(méi)有分支目標(biāo)的軌道進(jìn)行替換,或?qū)τ谀硹l軌道被替換時(shí),可以更改相應(yīng)分支源中的內(nèi)容(即分支目標(biāo)循跡地址),防止所述相應(yīng)分支源軌跡點(diǎn)中的內(nèi)容指向錯(cuò)誤的分支目標(biāo)軌跡點(diǎn)。[0140]此外,還可以將本實(shí)施例所述結(jié)構(gòu)擴(kuò)展到具有m層存儲(chǔ)器(緩存)的指令處理系統(tǒng)中,其中m為大于等于2的自然數(shù)。對(duì)于圖1實(shí)施例而言,m等于2。[0141]在圖1實(shí)施例中,若二級(jí)緩存17向一級(jí)緩存16填充指令塊的時(shí)延很長(zhǎng),可以通過(guò)提前找到更多層分支指令的目標(biāo)指令循跡地址,更早地將對(duì)應(yīng)的目標(biāo)指令從二級(jí)緩存17填充到一級(jí)緩存16中,使得處理器10需要讀取相應(yīng)指令時(shí),這些指令已經(jīng)存儲(chǔ)在一級(jí)緩存16中,從而更好地掩蓋緩存缺失造成的等待時(shí)間。[0142]在本發(fā)明所述的指令處理系統(tǒng)中,還可以包括一個(gè)預(yù)測(cè)器。所述預(yù)測(cè)器用以獲取循跡器指向的分支指令段之后的分支指令段,即所述預(yù)測(cè)器用以獲取第一層分支指令段之后的第η層分支指令段,并控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供尚未存儲(chǔ)在所述存儲(chǔ)速度高的存儲(chǔ)器中的第η層分支指令段,其中,η為自然數(shù)。[0143]請(qǐng)參考圖2,其為本發(fā)明實(shí)施例的指令處理系統(tǒng)的另一框結(jié)構(gòu)示意圖。如圖2所示,所述指令處理系統(tǒng)除了包含一個(gè)處理器10、一個(gè)主動(dòng)表11、一個(gè)掃描器12、一個(gè)軌道表13、一個(gè)相關(guān)表14、一個(gè)循跡器15、一個(gè)一級(jí)緩存16和一個(gè)二級(jí)緩存17以外,還包含了一個(gè)預(yù)測(cè)器24和一個(gè)緩沖25。[0144]在本實(shí)施例中,軌道表13可以同時(shí)根據(jù)兩個(gè)循跡地址輸出對(duì)應(yīng)的兩個(gè)軌跡點(diǎn)的內(nèi)容。其中一個(gè)循跡地址來(lái)源于循跡器15的讀指針19,另一個(gè)循跡地址來(lái)源于預(yù)測(cè)器24輸出的總線26。[0145]預(yù)測(cè)器24獲取第一層分支指令段之后的第η層分支指令段,并通過(guò)總線26向軌道表13輸出所述第一層分支指令段之后的第η層分支指令段的循跡地址。若所述循跡地址是ΒΝ2,則可以根據(jù)該ΒΝ2提前從二級(jí)緩存17中讀出對(duì)應(yīng)指令塊并暫存到緩沖25中;若所述循跡地址是BNl,則不需要額外操作。此外,緩沖25中還保存了每個(gè)存儲(chǔ)在緩沖25中的指令段對(duì)應(yīng)的BN值。在此,每個(gè)指令段有且僅有一個(gè)分支指令,具體的,將每個(gè)分支指令及其之前的直到前一個(gè)分支指令為止的指令(不包含所述前一個(gè)分支指令)歸為一個(gè)指令段。由于循跡器或預(yù)測(cè)器的輸出指針都停止在分支指令,因此為便于說(shuō)明,在下文中,“指令段的循跡地址”等同于“指令段中分支指令的循跡地址”,且下文中的“分支指令段”、“下一指令段”和“目標(biāo)指令段”均屬于這里定義的“指令段”。[0146]這樣,使用預(yù)測(cè)器24,可以提前將循跡器15讀指針19指向的分支指令之后的η層分支指令的分支目標(biāo)指令塊存儲(chǔ)在一級(jí)緩存16或緩沖25中,并根據(jù)處理器10執(zhí)行讀指針19指向的分支指令的執(zhí)行結(jié)果將緩沖25中的一些指令塊填充到一級(jí)緩沖16中。[0147]具體地,請(qǐng)參考圖3,其為本發(fā)明實(shí)施例的預(yù)測(cè)器的一框結(jié)構(gòu)示意圖。在本實(shí)施例中,預(yù)測(cè)器24獲取第一層分支指令段之后的第二層分支指令段的循跡地址,即η等于2。[0148]在本實(shí)施例中,預(yù)測(cè)器24包含一個(gè)增量器27,一個(gè)選擇器28,一個(gè)控制邏輯29和四個(gè)寄存器。其中,控制邏輯29接收處理器10送來(lái)的TAKEN信號(hào)20及當(dāng)前處理器正在執(zhí)行的指令是否為分支指令的BRANCH信號(hào)40(S卩,BRANCH信號(hào)40表示了TAKEN信號(hào)20是否有效),產(chǎn)生控制信號(hào)分別用于控制寄存器的寫(xiě)入及選擇器28。寄存器101和寄存器102的輸入來(lái)源于增量器27,寄存器103和寄存器104的輸入來(lái)源于軌道表13,這四令寄存器的輸出都被送到選擇器28。選擇器28的輸出通過(guò)總線26向軌道表13輸出所述第一層分支指令段之后的第一層分支指令段的循跡地址。[0149]具體地,寄存器101和寄存器102用于存放當(dāng)前分支指令的下一指令段的下一指令段地址及當(dāng)前分支指令的目標(biāo)指令段的下一指令段地址、寄存器103和寄存器104用于存放當(dāng)前分支指令的下一指令段的目標(biāo)指令段地址及當(dāng)前分支指令的目標(biāo)指令段的目標(biāo)指令段地址。[0150]以下結(jié)合圖4A?4E對(duì)預(yù)測(cè)器的工作過(guò)程進(jìn)行說(shuō)明。圖4A?圖4D為本發(fā)明實(shí)施例分支指令與分支指令段的樹(shù)型關(guān)系示意圖。其中,節(jié)點(diǎn)‘A’是一個(gè)指令段,‘A’的左子節(jié)點(diǎn)‘B’為‘A’的下一指令段、右子節(jié)點(diǎn)‘C’為‘A’的目標(biāo)指令段。同樣地,‘B’的左子節(jié)點(diǎn)‘D’為‘B’的下一指令段、右子節(jié)點(diǎn)?’為‘B’的目標(biāo)指令段;‘C’的左子節(jié)點(diǎn)‘F’為‘C’的下一指令段、右子節(jié)點(diǎn)‘G’為‘C’的目標(biāo)指令段;‘D’的左子節(jié)點(diǎn)‘H’為‘D’的下一指令段、右子節(jié)點(diǎn)‘I’為‘D’的目標(biāo)指令段;?’的左子節(jié)點(diǎn)‘J’為?’的下一指令段、右子節(jié)點(diǎn)‘K’為?’的目標(biāo)指令段;‘J’的左子節(jié)點(diǎn)‘Q’為‘J’的下一指令段、右子節(jié)點(diǎn)‘R’為‘J’的目標(biāo)指令段;T的左子節(jié)點(diǎn)‘S’為T(mén)的下一指令段、右子節(jié)點(diǎn)‘T’為T(mén)的目標(biāo)指令段。[0151]此外,圖4A?4D中的三角標(biāo)記對(duì)應(yīng)預(yù)測(cè)器24中的相應(yīng)寄存器,表示該寄存器中存儲(chǔ)的是哪個(gè)指令段對(duì)應(yīng)的循跡地址。圖4E為本發(fā)明實(shí)施例的預(yù)測(cè)器中四個(gè)寄存器值的變化情況示意圖。其中,每一列對(duì)應(yīng)預(yù)測(cè)器24中的一個(gè)寄存器,即第I列對(duì)應(yīng)寄存器101、第2列對(duì)應(yīng)寄存器102、第3列對(duì)應(yīng)寄存器103、第4列對(duì)應(yīng)寄存器104;每一行對(duì)應(yīng)了圖4A?圖4D中一次更新。[0152]首先,以當(dāng)前指令段為‘A’為例開(kāi)始運(yùn)行,此時(shí),‘A’的循跡地址被存儲(chǔ)到寄存器101中。如圖4E第一行所示。[0153]之后,可以根據(jù)存儲(chǔ)在寄存器101中的‘A’的循跡地址從軌道表13中讀出‘A’的目標(biāo)指令段‘C’的循跡地址,并存儲(chǔ)在寄存器103中,同時(shí)使用增量器27對(duì)‘A’的循跡地址累加,以得到‘A’的下一指令段‘B’的循跡地址,并存儲(chǔ)在寄存器101中。如圖4A及圖4E第二行所示。[0154]之后,可以根據(jù)存儲(chǔ)在寄存器103中的‘C’的循跡地址從軌道表13中讀出‘C’的目標(biāo)指令段‘G’的循跡地址,并存儲(chǔ)在寄存器104中,同時(shí)使用增量器27對(duì)‘C’的循跡地址累加,以得到‘C’的下一指令段‘F’的循跡地址,并存儲(chǔ)在寄存器102中。還可以根據(jù)存儲(chǔ)在寄存器101中的‘B’的循跡地址從軌道表13中讀出‘B’的目標(biāo)指令段?’的循跡地址,并存儲(chǔ)在寄存器103中,同時(shí)使用增量器27對(duì)‘B’的循跡地址累加,以得到‘B’的下一指令段‘D’的循跡地址,并存儲(chǔ)在寄存器101中。如圖4B及圖4E第三行所示。這樣,就完成了預(yù)測(cè)器24中四個(gè)寄存器值的產(chǎn)生,這四個(gè)寄存器的值分別對(duì)應(yīng)了A’中分支指令之后第二層分支指令段的循跡地址。[0155]回到圖3,當(dāng)處理器10執(zhí)行‘A’中的分支指令產(chǎn)生TAKEN信號(hào)20時(shí),控制邏輯29根據(jù)TAKEN信號(hào)20的值產(chǎn)生相應(yīng)的控制信號(hào)對(duì)這四個(gè)寄存器值進(jìn)行更新。以TAKEN信號(hào)20表示該分支轉(zhuǎn)移沒(méi)有發(fā)生為例,控制邏輯29控制選擇器28選擇寄存器101和寄存器103中的循跡地址為輸出,以產(chǎn)生后續(xù)指令段的循跡地址,并丟棄存儲(chǔ)在寄存器102和寄存器104中的‘F’、‘G’對(duì)應(yīng)的循跡地址。[0156]具體地,可以根據(jù)存儲(chǔ)在寄存器103中的‘E’的循跡地址從軌道表13中讀出‘E’的目標(biāo)指令段T的循跡地址,并存儲(chǔ)在寄存器104中,同時(shí)使用增量器27對(duì)?’的循跡地址累加,以得到‘E’的下一指令段‘J’的循跡地址,并存儲(chǔ)在寄存器102中。還可以根據(jù)存儲(chǔ)在寄存器101中的‘D’的循跡地址從軌道表13中讀出‘D’的目標(biāo)指令段‘I’的循跡地址,并存儲(chǔ)在寄存器103中,同時(shí)使用增量器27對(duì)‘D’的循跡地址累加,以得到‘D’的下一指令段‘H,的循跡地址,并存儲(chǔ)在寄存器101中。如圖4C及圖4E第四行所示。這樣,就根據(jù)‘A’中分支指令執(zhí)行結(jié)果完成了預(yù)測(cè)器24中四個(gè)寄存器值的更新,即這四個(gè)寄存器的值分別對(duì)應(yīng)了‘B’中分支指令之后第二層分支指令段的循跡地址。[0157]之后,再以處理器10執(zhí)行‘B’中分支指令產(chǎn)生TAKEN信號(hào)20表示該分支轉(zhuǎn)移發(fā)生為例,控制邏輯29控制選擇器28選擇寄存器102和寄存器104中的循跡地址為輸出,以產(chǎn)生后續(xù)指令段的循跡地址,并丟棄存儲(chǔ)在寄存器101和寄存器103中的‘H’、‘I’對(duì)應(yīng)的循跡地址。[0158]具體地,可以根據(jù)存儲(chǔ)在寄存器102中的‘J’的循跡地址從軌道表13中讀出‘J’的目標(biāo)指令段‘R’的循跡地址,并存儲(chǔ)在寄存器103中,同時(shí)使用增量器27對(duì)‘J’的循跡地址累加,以得到‘J’的下一指令段‘Q’的循跡地址,并存儲(chǔ)在寄存器101中。還可以根據(jù)存儲(chǔ)在寄存器104中的‘K’的循跡地址從軌道表13中讀出‘K’的目標(biāo)指令段‘T’的循跡地址,并存儲(chǔ)在寄存器104中,同時(shí)使用增量器27對(duì)‘K’的循跡地址累加,以得到‘K’的下一指令段‘S’的循跡地址,并存儲(chǔ)在寄存器102中。如圖4D及圖4E第五行所示。這樣,就根據(jù)‘B’中分支指令執(zhí)行結(jié)果完成了預(yù)測(cè)器24中四個(gè)寄存器值的更新,即這四個(gè)寄存器的值分別對(duì)應(yīng)了‘E’中分支指令之后第二層分支指令段的循跡地址。[0159]在上述運(yùn)行過(guò)程中,預(yù)測(cè)器24比循跡器15提前指向兩層以后的指令段,一旦發(fā)現(xiàn)所述指令段的循跡地址是BN2,就通過(guò)總線30從二級(jí)緩存17中讀出對(duì)應(yīng)指令塊存儲(chǔ)到緩沖25中。緩沖25則根據(jù)TAKEN信號(hào)20選擇指令塊填充到一級(jí)緩存16中,同時(shí)將軌道表13中相應(yīng)分支點(diǎn)內(nèi)容中的BN2替換為BN1,使得循跡器15的讀指針指向該分支點(diǎn)時(shí),讀出的目標(biāo)指令循跡地址是BNl。這樣,如果所述指令段從二級(jí)緩存17填充到緩沖25及從緩沖25填充到一級(jí)緩存16的時(shí)間不超過(guò)所述填充開(kāi)始直至處理器執(zhí)行到該指令段之間的時(shí)間差,則處理器所需的指令段(下一指令段和目標(biāo)指令段)都已存儲(chǔ)在一級(jí)緩存16中,無(wú)論處理器10執(zhí)行該分支點(diǎn)對(duì)應(yīng)的分支指令是否發(fā)生分支轉(zhuǎn)移,都可以從一級(jí)緩存16中讀取下一條指令,避免了緩存缺失。否則,處理器所需的指令段雖然尚未存儲(chǔ)在一級(jí)緩存16,但已經(jīng)在填充過(guò)程中,依然能掩蓋部分因緩存缺失造成的等待時(shí)間。[0160]在本發(fā)明中,也可以采用一個(gè)預(yù)測(cè)循跡器實(shí)現(xiàn)循跡器15及預(yù)測(cè)器24的功能。請(qǐng)參考圖5,其為本發(fā)明實(shí)施例的預(yù)測(cè)循跡器的一框結(jié)構(gòu)示意圖。其中,預(yù)測(cè)循跡器31由預(yù)測(cè)部分32和裁剪部分33構(gòu)成,軌道表13只需要根據(jù)一個(gè)循跡地址輸出對(duì)應(yīng)軌跡點(diǎn)內(nèi)容,即只需要一個(gè)讀端口。裁剪部分33輸出讀指針19以實(shí)現(xiàn)循跡器15的功能。預(yù)測(cè)部分32獲取第一層分支指令段之后的第二層分支指令段的循跡地址(即η等于2)以實(shí)現(xiàn)預(yù)測(cè)器24的功能。預(yù)測(cè)部分32的結(jié)構(gòu)及工作過(guò)程與前述實(shí)施例中的預(yù)測(cè)器24相同,在此不再贅述。[0161]裁剪部分33包含寄存器105、寄存器106、選擇器34、選擇器35、選擇器36和選擇器37。其中選擇器34和選擇器35分別接收預(yù)測(cè)部分32中四個(gè)寄存器存儲(chǔ)的第一層分支指令段之后的第二層分支指令段的循跡地址,并根據(jù)TAKEN信號(hào)20對(duì)這些循跡地址做減半裁剪,并將裁剪后的保留的循跡地址分別存儲(chǔ)到寄存器105和寄存器106中。由于分支指令段的下一指令段與該分支指令段循跡地址中的BNX相同且都是BN1X,因此只需要將目標(biāo)指令段循跡地址中可能出現(xiàn)的BN2X替換為BNlX即可。當(dāng)緩沖25將存儲(chǔ)在其中的指令段(對(duì)應(yīng)BN2)填充到一級(jí)緩存16時(shí),可以按一定的替換策略分配一個(gè)BNl以供存儲(chǔ)該指令段。因此,當(dāng)選擇器35輸出的循跡地址是BN2時(shí),則選擇器37選擇來(lái)源于總線44的所述新分配的BNl作為其輸出;當(dāng)選擇器35輸出的循跡地址是BNl時(shí),則該循跡地址經(jīng)寄存器106暫存經(jīng)選擇器37選擇作為其輸出。選擇器36則根據(jù)TAKEN信號(hào)20從寄存器105中存儲(chǔ)的循跡地址及選擇器37輸出的循跡地址中選擇一個(gè)作為讀指針19送往一級(jí)緩存16以找到對(duì)應(yīng)指令塊供處理器10讀取。[0162]同樣以圖4A?圖4E所述情況為例,按之前所述方法完成預(yù)測(cè)部分32中四個(gè)寄存器值的產(chǎn)生,如圖4B及圖4E第三行所示。此時(shí)裁剪部分33從左往右的四個(gè)輸入分別為‘D’、‘F’、?’及‘G’的循跡地址。此時(shí),裁剪部分33中的寄存器105保存了‘B,的循跡地址,寄存器106保存了‘C’的循跡地址,而讀指針19的值為‘A’的循跡地址。[0163]當(dāng)處理器10執(zhí)行‘A’中分支指令產(chǎn)生TAKEN信號(hào)20表示分支轉(zhuǎn)移沒(méi)有發(fā)生時(shí),選擇器36選擇來(lái)源于寄存器105的輸入‘B’并作為讀指針19的值輸出送往一級(jí)緩存16以找到對(duì)應(yīng)指令塊供處理器10讀取,裁剪丟棄了‘C’的循跡地址。同時(shí),裁剪部分33中的選擇器34選擇來(lái)源于寄存器101的輸入‘D’并寫(xiě)入寄存器105,選擇器35選擇來(lái)源于寄存器103的輸入?’并寫(xiě)入寄存器106。這樣,保留了‘B’的后續(xù)指令段的循跡地址,裁剪丟棄了‘C’的后續(xù)指令段的循跡地址。而預(yù)測(cè)部分32按之前所述方法完成四個(gè)寄存器值的更新,如圖4C及圖4E第四行所示。此時(shí)裁剪部分33從左往右的四個(gè)輸入分別為‘H’、‘J’、‘I’及‘K,的循跡地址。[0164]當(dāng)處理器10執(zhí)行‘B’中分支指令產(chǎn)生TAKEN信號(hào)20表示分支轉(zhuǎn)移發(fā)生時(shí),裁剪部分33中的選擇器34選擇來(lái)源于寄存器102的輸入‘J’并寫(xiě)入寄存器105,選擇器35選擇來(lái)源于寄存器104的輸入‘K’并寫(xiě)入寄存器106。這樣,保留了?’的后續(xù)指令段的循跡地址,裁剪丟棄了‘D’的后續(xù)指令段的循跡地址。同時(shí),選擇器36選擇來(lái)源于寄存器106的輸入‘E’并作為讀指針19的值輸出送往一級(jí)緩存16以找到對(duì)應(yīng)指令塊供處理器10讀取,裁剪丟棄了‘D’的循跡地址。而預(yù)測(cè)部分32按之前所述方法完成四個(gè)寄存器值的更新,如圖4D及圖4E第五行所示。[0165]這樣,預(yù)測(cè)循跡器31同時(shí)實(shí)現(xiàn)了循跡器15和預(yù)測(cè)器24的功能。[0166]在本發(fā)明中,緩沖25具有與預(yù)測(cè)循跡器31近似的結(jié)構(gòu)。請(qǐng)參考圖6,其為本本發(fā)明實(shí)施例的緩沖的一框結(jié)構(gòu)示意圖。為了清晰起見(jiàn),圖6中省略了部分模塊。在本實(shí)施例中,緩沖25包含用于存儲(chǔ)指令塊的寄存器202、寄存器203、寄存器204、寄存器205和寄存器206,以及選擇器38和選擇器39。其中,寄存器202存儲(chǔ)了預(yù)測(cè)部分32中寄存器102對(duì)應(yīng)的指令段所在的指令塊,寄存器203存儲(chǔ)了預(yù)測(cè)部分32中寄存器103對(duì)應(yīng)的指令段所在的指令塊,寄存器204存儲(chǔ)了預(yù)測(cè)部分32中寄存器104對(duì)應(yīng)的指令段所在的指令塊,寄存器205存儲(chǔ)了裁剪部分33中寄存器105對(duì)應(yīng)的指令段所在的指令塊,寄存器206存儲(chǔ)了裁剪部分33中寄存器106對(duì)應(yīng)的指令段所在的指令塊。由于預(yù)測(cè)部分32中寄存器101循跡地址對(duì)應(yīng)的指令段就是處理器10正在執(zhí)行的指令段,而該指令必定已經(jīng)存儲(chǔ)在一級(jí)緩存16中,因此在緩沖25中不需要有存儲(chǔ)對(duì)應(yīng)寄存器101循跡地址的指令段的寄存器。同理,只要處理器10產(chǎn)生TAKEN信號(hào)20,無(wú)論分支轉(zhuǎn)移是否發(fā)生,寄存器202中的指令塊都被寫(xiě)入寄存器205中。[0167]選擇器38的功能與裁剪部分33中的選擇器35類(lèi)似,同樣受TAKEN信號(hào)20控制。當(dāng)選擇器35選擇來(lái)源于寄存器103的循跡地址時(shí),選擇器38相應(yīng)選擇來(lái)源于寄存器203的指令塊;當(dāng)選擇器35選擇來(lái)源于寄存器104的循跡地址時(shí),選擇器38相應(yīng)選擇來(lái)源于寄存器204的指令塊。選擇器39的功能與裁剪部分33中的選擇器36類(lèi)似,同樣受TAKEN信號(hào)20控制。當(dāng)選擇器36選擇來(lái)源于寄存器105的循跡地址時(shí),選擇器39相應(yīng)選擇來(lái)源于寄存器205的指令塊;當(dāng)選擇器36選擇來(lái)源于寄存器106的循跡地址時(shí),選擇器39相應(yīng)選擇來(lái)源于寄存器206的指令塊。[0168]這樣,緩沖25中存儲(chǔ)的指令塊就可以隨處理器10執(zhí)行各個(gè)分支指令的結(jié)果依次被裁剪,最后裁剪剩余的指令塊是必定會(huì)被處理器10執(zhí)行的指令塊,而該指令塊則被填充到一級(jí)緩存16中。[0169]需要說(shuō)明的是,在本發(fā)明中,緩沖25并不是必須的。當(dāng)指令處理系統(tǒng)中不包含緩沖25時(shí),根據(jù)預(yù)測(cè)器通過(guò)總線30輸出的BN2直接將二級(jí)緩存17中對(duì)應(yīng)指令塊填充到一級(jí)緩存16中,并將軌道表13中相應(yīng)分支點(diǎn)內(nèi)容由BN2替換為BNl。當(dāng)指令處理系統(tǒng)中包含緩沖25時(shí),雖然依然需要從二級(jí)緩存17中讀出同樣數(shù)量的指令塊,但只有確定會(huì)被執(zhí)行的指令塊才會(huì)從緩沖25填充到一級(jí)緩存16中,因此減少了一級(jí)緩存16的替換,由此減少了數(shù)據(jù)污染(即無(wú)用指令塊占用一級(jí)緩存存儲(chǔ)塊),相應(yīng)地提高了指令處理系統(tǒng)的性能。[0170]此外,還可以將緩沖25中被裁剪丟棄的指令塊暫存在另一個(gè)緩沖中,以便在下次可能需要時(shí)能較快地被獲取。請(qǐng)參考圖7,其為本發(fā)明實(shí)施例的帶暫存的另一緩沖的一框結(jié)構(gòu)示意圖。在本實(shí)施例中,緩沖25的結(jié)構(gòu)與功能與圖6實(shí)施例中的相同,在此不再贅述。然而,在本實(shí)施例中,緩沖25中被裁剪丟棄的指令塊被送往另一個(gè)緩沖41暫存。由于緩沖41容量較小,且與緩沖25距離接近,因此,一旦再次需要將被裁剪丟棄的指令塊填充到緩沖25時(shí),可以先在緩沖41中進(jìn)行查找匹配,若匹配成功,則可以直接將該指令塊讀出并通過(guò)總線42送往緩沖25,避免了從二級(jí)緩存17讀取指令塊的較長(zhǎng)時(shí)延,也減少了對(duì)二級(jí)緩存的訪問(wèn)次數(shù)。緩沖41的具體組織結(jié)構(gòu)可以是任何合適的結(jié)構(gòu),如先入先出緩沖、全相聯(lián)結(jié)構(gòu)、組相聯(lián)結(jié)構(gòu)等。[0171]根據(jù)本發(fā)明所述技術(shù)方案,可以將上述實(shí)施例所述的結(jié)構(gòu)擴(kuò)展到具有更多層存儲(chǔ)器(緩存)的指令處理系統(tǒng)中。請(qǐng)參考圖8,其為本發(fā)明實(shí)施例的指令處理系統(tǒng)的另一框結(jié)構(gòu)示意圖。本實(shí)施例中的m等于3,對(duì)于其他數(shù)值m的情況,也可以以此類(lèi)推。[0172]在本實(shí)施例中,所述指令處理系統(tǒng)除了包含一個(gè)處理器10、一個(gè)主動(dòng)表11、一個(gè)掃描器12、一個(gè)軌道表13、一個(gè)相關(guān)表14、一個(gè)預(yù)測(cè)循跡器31、一個(gè)一級(jí)緩存16和一個(gè)二級(jí)緩存17,還包含一個(gè)三級(jí)緩存45、一個(gè)第二掃描器46。其中,預(yù)測(cè)循跡器31也可以被如圖2實(shí)施例中的預(yù)測(cè)器24及循跡器15代替。一級(jí)緩存16、二級(jí)緩存17及三級(jí)緩存45共同構(gòu)成了具有包含關(guān)系的三級(jí)存儲(chǔ)系統(tǒng)(即,m等于3)。[0173]主動(dòng)表11對(duì)應(yīng)于最外層的緩存(三級(jí)緩存45),即主動(dòng)表11中的表項(xiàng)與三級(jí)緩存45中的存儲(chǔ)塊一一對(duì)應(yīng),每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)BN3X,指明了該主動(dòng)表行對(duì)應(yīng)的三級(jí)緩存存儲(chǔ)塊存儲(chǔ)在三級(jí)緩存45中的位置,并形成了BN3X與三級(jí)緩存存儲(chǔ)塊的對(duì)應(yīng)關(guān)系。主動(dòng)表11中的每個(gè)表項(xiàng)存儲(chǔ)了一個(gè)三級(jí)緩存存儲(chǔ)塊的塊地址。此外,主動(dòng)表11中的每個(gè)表項(xiàng)還包含了該三級(jí)緩存存儲(chǔ)塊是否全部或部分存儲(chǔ)在一級(jí)緩存16及二級(jí)緩存17中的信息。當(dāng)一個(gè)三級(jí)緩存存儲(chǔ)塊全部或部分存儲(chǔ)在一級(jí)緩存16中時(shí),該三級(jí)緩存指令塊對(duì)應(yīng)的主動(dòng)表11表項(xiàng)中存儲(chǔ)了對(duì)應(yīng)一級(jí)緩存存儲(chǔ)塊的塊號(hào)(即BNl中的BN1X)。同樣地,當(dāng)一個(gè)三級(jí)緩存存儲(chǔ)塊全部或部分存儲(chǔ)在二級(jí)緩存17中時(shí),該三級(jí)緩存指令塊對(duì)應(yīng)的主動(dòng)表11表項(xiàng)中存儲(chǔ)了對(duì)應(yīng)二級(jí)緩存存儲(chǔ)塊的塊號(hào)(即BN2中的BN2X)。這樣,當(dāng)用一個(gè)指令地址在主動(dòng)表11中進(jìn)行匹配時(shí),可以得到匹配成功項(xiàng)中存儲(chǔ)的BNlX或BN2X,或得到匹配成功項(xiàng)對(duì)應(yīng)的BN3X,或得到匹配不成功的結(jié)果。[0174]掃描器46對(duì)從三級(jí)緩存45送往二級(jí)緩存17的指令進(jìn)行審查,一旦發(fā)現(xiàn)某條指令是分支指令,即計(jì)算該分支指令的分支目標(biāo)地址,并將該分支目標(biāo)地址與主動(dòng)表11中存儲(chǔ)的存儲(chǔ)塊行地址匹配。若匹配成功,且對(duì)應(yīng)的BN2X存在,則表示該分支目標(biāo)指令已經(jīng)存儲(chǔ)在二級(jí)緩存17中,不需要進(jìn)行額外操作。若匹配成功,但對(duì)應(yīng)的BN2X不存在,則表示該分支目標(biāo)指令已經(jīng)存儲(chǔ)在三級(jí)緩存45中,但尚未存儲(chǔ)在二級(jí)緩存17中,則主動(dòng)表11通過(guò)總線47輸出該BN3X送往三級(jí)緩存45以將包含該分支目標(biāo)指令的指令塊從三級(jí)緩存45填充到二級(jí)緩存17中。若匹配不成功,則表示該分支目標(biāo)指令尚未存儲(chǔ)在二級(jí)緩存17及三級(jí)緩存45中,此時(shí),將該分支目標(biāo)指令地址通過(guò)總線18送往外部存儲(chǔ)器,同時(shí)在主動(dòng)表11中分配一個(gè)表項(xiàng)存儲(chǔ)對(duì)應(yīng)塊地址,并將外部存儲(chǔ)器送來(lái)的對(duì)應(yīng)指令塊填充到三級(jí)緩存45中與該BN3X對(duì)應(yīng)存儲(chǔ)塊中,同時(shí)將該指令塊填充到二級(jí)緩存17中。這樣,無(wú)論匹配結(jié)果如何,所有從三級(jí)緩存45填充到二級(jí)緩存17的指令塊中分支指令的分支目標(biāo)指令所在的指令塊都被填充到二級(jí)緩存17中。[0175]掃描器12則如之前實(shí)施例所述對(duì)從二級(jí)緩存17送往一級(jí)緩存16的指令進(jìn)行審查,一旦發(fā)現(xiàn)某條指令是分支指令,即計(jì)算該分支指令的分支目標(biāo)地址,并將該分支目標(biāo)地址與主動(dòng)表11中存儲(chǔ)的存儲(chǔ)塊行地址匹配。由于二級(jí)緩存17的指令塊中分支指令的分支目標(biāo)指令所在的指令塊都已經(jīng)被填充到二級(jí)緩存17中,因此該匹配必定成功。此時(shí),若匹配存在對(duì)應(yīng)的BN1X,則表示該分支目標(biāo)指令已經(jīng)存儲(chǔ)在一級(jí)緩存16中,主動(dòng)表11輸出該BNlX送往軌道表13作為對(duì)應(yīng)分支點(diǎn)內(nèi)容中的行號(hào),該分支目標(biāo)指令在其所在指令塊中的偏移量就是對(duì)應(yīng)分支點(diǎn)內(nèi)容中的列號(hào)。若不存在對(duì)應(yīng)的BN1X,則表示該分支目標(biāo)指令已經(jīng)存儲(chǔ)在二級(jí)緩存17中,但尚未存儲(chǔ)在一級(jí)緩存16中,則主動(dòng)表11輸出該BN2X送往軌道表13作為對(duì)應(yīng)分支點(diǎn)內(nèi)容中的行號(hào),該分支目標(biāo)指令在其所在指令塊中的偏移量就是對(duì)應(yīng)分支點(diǎn)內(nèi)容中的列號(hào)。由此可以按之前實(shí)施例所述方法建立正在被填充的指令塊對(duì)應(yīng)的軌道。[0176]這樣,在本實(shí)施例中,軌道表13的軌跡點(diǎn)內(nèi)容中的循跡地址可以是BN1,也可以是BN2,分別對(duì)應(yīng)指令塊存儲(chǔ)在一級(jí)緩存16和二級(jí)緩存17中的情況。預(yù)測(cè)循跡器31根據(jù)從軌道表13中讀出的內(nèi)容控制緩存系統(tǒng)向處理器10提供指令的過(guò)程與之前實(shí)施例所述相同,在此不再贅述。[0177]與之前實(shí)施例相比,本實(shí)施例的掃描器46能更早地發(fā)現(xiàn)從三級(jí)緩存45填充到二級(jí)緩存17的指令塊中的分支指令,并將對(duì)應(yīng)的分支目標(biāo)指令填充到二級(jí)緩存17中,從而掩蓋了三級(jí)緩存45向二級(jí)緩存17提供指令塊的時(shí)延。采用相同的方法,還可以擴(kuò)展到具有更多層緩存的指令處理系統(tǒng)中,進(jìn)一步掩蓋更外層存儲(chǔ)器(緩存)向內(nèi)層存儲(chǔ)器(緩存)提供指令塊的時(shí)延,從而更好地提高指令處理系統(tǒng)的性能。[0178]在本發(fā)明中,還可以根據(jù)地址變化的范圍,選擇不同的緩存(存儲(chǔ)器)尋址方式及虛實(shí)地址轉(zhuǎn)換方式。例如,兩條地址連續(xù)的指令之間的地址變化范圍等于‘I’個(gè)字,而分支指令(以下為清晰起見(jiàn),稱(chēng)為“分支源指令”)與其分支目標(biāo)指令之間的地址變化范圍等于分支轉(zhuǎn)移距離。以一級(jí)緩存為例,同一個(gè)一級(jí)指令塊中的指令對(duì)應(yīng)的指令塊地址相同,緩存循跡地址中的BNlX也相同,因此在前一指令循跡地址BNl已知的情況下,不必進(jìn)行主動(dòng)表匹配,直接得到后一指令的BNlX;對(duì)于其他情況,則可能需要進(jìn)行主動(dòng)表匹配。類(lèi)似地,同一個(gè)頁(yè)面中的指令對(duì)應(yīng)的虛擬地址相同,物理地址也相同,因此在前一指令的物理地址已知的情況下,不必進(jìn)行虛實(shí)地址轉(zhuǎn)換模塊或快表(TLB)匹配,直接得到后一指令的物理地址;對(duì)于其他情況,則可能需要進(jìn)行TLB匹配。[0179]為了便于描述,在之后的實(shí)施例中均以兩層緩存(一級(jí)緩存和二級(jí)緩存)為例進(jìn)行說(shuō)明。本發(fā)明技術(shù)方案也可以應(yīng)用在更多緩存層次中,具體方法可以參考圖8實(shí)施例,在本說(shuō)明書(shū)中不再贅述。[0180]請(qǐng)參考圖9,其為本發(fā)明所述的計(jì)算和查找分支目標(biāo)指令的結(jié)構(gòu)圖。根據(jù)本發(fā)明技術(shù)方案,可以用掃描器12計(jì)算得到目標(biāo)指令地址并判斷目標(biāo)指令地址所在位置,然后將相關(guān)信息寫(xiě)入軌道表中,以便處理器執(zhí)行到該指令時(shí)使用。[0181]在本實(shí)施例中,用于虛地址(virtualaddress)和實(shí)地址(physicaladdress)轉(zhuǎn)換的快表(TLB)位于二級(jí)緩存17與更低層次存儲(chǔ)器(如:三級(jí)緩存45)之間,所以本例中的所有地址都是虛地址。[0182]在本實(shí)施例中,所述結(jié)構(gòu)圖除了包含一個(gè)處理器10,一個(gè)主動(dòng)表91、一個(gè)掃描器12、一個(gè)軌道表13、一個(gè)相關(guān)表14、一個(gè)循跡器15、一個(gè)一級(jí)緩存16和一個(gè)二級(jí)緩存17,還包含一個(gè)第一多選器911、第二多選器912和一個(gè)存儲(chǔ)器902。其中,循跡器15也可以被如圖2實(shí)施例中的預(yù)測(cè)器24代替。在此,為了便于說(shuō)明,將存儲(chǔ)器902作為一個(gè)獨(dú)立模塊,使其可以用主動(dòng)表匹配以外的其他方式尋址。此時(shí)存儲(chǔ)器902和主動(dòng)表91共同實(shí)現(xiàn)前述實(shí)施例中的主動(dòng)表(如圖1中的主動(dòng)表11)的功能。在之后的實(shí)施例中,存儲(chǔ)器902也被作為一個(gè)獨(dú)立的模塊。[0183]主動(dòng)表91中的表項(xiàng)及存儲(chǔ)器902的表項(xiàng)與二級(jí)緩存17中的存儲(chǔ)塊均一一對(duì)應(yīng),每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)BN2X,指明了該主動(dòng)表行對(duì)應(yīng)的二級(jí)緩存存儲(chǔ)塊存儲(chǔ)在二級(jí)緩存17中的位置,并形成了BN2X與二級(jí)緩存存儲(chǔ)塊的對(duì)應(yīng)關(guān)系。具體地,請(qǐng)參考圖10A,其為本發(fā)明所述主動(dòng)表中一個(gè)表項(xiàng)的結(jié)構(gòu)示意圖。主動(dòng)表91中的每個(gè)表項(xiàng)存儲(chǔ)了一個(gè)二級(jí)緩存存儲(chǔ)塊的塊地址77及其有效位。由于不同程序可以有相同的虛地址,所以主動(dòng)表中的每個(gè)表項(xiàng)還可以包含該虛擬地址對(duì)應(yīng)的線程號(hào)(TID)。[0184]存儲(chǔ)器902的每個(gè)表項(xiàng)中包含了該二級(jí)存儲(chǔ)塊是否全部或部分存儲(chǔ)在一級(jí)緩存16中的信息。在本實(shí)施例中,二級(jí)緩存17的一行中的二級(jí)指令塊對(duì)應(yīng)4個(gè)一級(jí)指令緩存中的一級(jí)指令塊,所以主動(dòng)表91的每個(gè)表項(xiàng)還要包含存儲(chǔ)一級(jí)塊號(hào)BNlX的存儲(chǔ)域(如存儲(chǔ)域60、61、62和63),每個(gè)存儲(chǔ)域包含一個(gè)有效位(validbit),用于表明存儲(chǔ)在該存儲(chǔ)塊中的一級(jí)塊號(hào)BNlX是否有效。除此之外,每個(gè)表項(xiàng)中的存儲(chǔ)域64存儲(chǔ)了當(dāng)前二級(jí)指令塊的前一個(gè)二級(jí)指令塊(previousline)的BN2X信息,每個(gè)表項(xiàng)中的存儲(chǔ)域65存儲(chǔ)了當(dāng)前二級(jí)指令塊的下一個(gè)二級(jí)指令塊(nextline)的BN2X信息,這兩個(gè)存儲(chǔ)塊都各有一個(gè)有效位用于表明存儲(chǔ)在該存儲(chǔ)域中的二級(jí)塊號(hào)BN2X是否有效。[0185]再回到圖9,循跡器15則由寄存器21、增量器22和選擇器23組成,其讀指針19(即寄存器21的輸出)指向軌道表13中處理器10當(dāng)前執(zhí)行的指令之后的第一個(gè)分支點(diǎn),并讀出軌跡點(diǎn)內(nèi)容。請(qǐng)參考圖10B,其為本發(fā)明所述軌道表中一個(gè)表項(xiàng)的內(nèi)容示意圖。軌道表13的表項(xiàng)格式為686或688。686由三部分構(gòu)成:格式(TYPE),二級(jí)塊號(hào)(BN2X)及二級(jí)塊內(nèi)偏移(BN2Y)。其中格式中含指令類(lèi)型地址,包括非分支指令、直接分支指令、間接分支指令。格式中還包含地址類(lèi)型,其在686格式中是二級(jí)緩存地址BN2。688的格式也由三部分構(gòu)成:格式(TYPE),一級(jí)塊號(hào)(BNlX)及一級(jí)塊內(nèi)偏移(BNlY)。688格式中指令類(lèi)型與686的相同,但是地址類(lèi)型在688中固定為一級(jí)緩存地址BNl。[0186]在本發(fā)明中,循跡器15讀指針19上的BNl被用于對(duì)軌道表13尋址以讀出軌跡點(diǎn)內(nèi)容,該BNl還被用于對(duì)一級(jí)緩存16尋址以讀出相應(yīng)指令供處理器10執(zhí)行。具體地,循跡器15讀指針19指向的軌跡點(diǎn)內(nèi)容被讀出經(jīng)總線30送往選擇器23。若所述軌跡點(diǎn)內(nèi)容中的指令類(lèi)型顯示該指令不是分支指令,則增量器22的對(duì)寄存器21輸出的BNlY值增一,選擇器23受TAKEN信號(hào)20(此時(shí)值為‘0’)控制選擇來(lái)源于寄存器21的BNlX值和來(lái)源于增量器22的增一后的BNlY作為新的BNl輸出送回寄存器21。此時(shí)無(wú)論BRANCH信號(hào)40為何值,寄存器21均更新,使得下一周期寄存器21的值增一,即讀指針19指向下一個(gè)軌跡點(diǎn)。如此重復(fù),直至讀指針19指向一個(gè)分支點(diǎn)。也可以是寄存器21的更新受處理器10的狀態(tài)控制,如當(dāng)處理器10內(nèi)停流水線時(shí)不更新。[0187]若所述軌跡點(diǎn)內(nèi)容中的指令類(lèi)型顯示該指令為條件分支指令,則選擇器23根據(jù)處理器10執(zhí)行該分支源指令時(shí)產(chǎn)生的表示分支轉(zhuǎn)移是否發(fā)生的TAKEN信號(hào)20進(jìn)行選擇。寄存器21等待BRANCH信號(hào)40值為‘I’(即處理器10執(zhí)行到該分支源指令,此時(shí)的TAKEN信號(hào)20是有效的)時(shí)再更新。此時(shí),若TAKEN信號(hào)20的值為‘I’,表示分支轉(zhuǎn)移發(fā)生,選擇器23選擇軌道表13輸出的BNl更新寄存器21,即讀指針19指向分支目標(biāo)指令對(duì)應(yīng)的軌跡點(diǎn)。若TAKEN信號(hào)20的值為‘0’,表示分支轉(zhuǎn)移沒(méi)有發(fā)生,則選擇來(lái)源于寄存器21的BNlX值和來(lái)源于增量器22增一后的BNlY作為新的BNl更新寄存器21,即讀指針19指向下一個(gè)軌跡點(diǎn)。[0188]當(dāng)循跡器15的讀指針指向軌道表13中的一個(gè)表項(xiàng)時(shí),先判斷該分支源指令是直接分支指令(directbranch)還是間接分支指令(indirectbranch)。在此先以直接分支指令為例進(jìn)行說(shuō)明。[0189]在本實(shí)施例中,一個(gè)二級(jí)指令塊包含4個(gè)一級(jí)指令塊,那么BN2Y的高兩位為子塊號(hào)。每個(gè)二級(jí)指令塊的一個(gè)子塊相當(dāng)于一個(gè)一級(jí)指令塊。那么,可以根據(jù)子塊號(hào)來(lái)對(duì)二級(jí)指令塊中的一級(jí)指令塊。例如,子塊號(hào)“00”對(duì)應(yīng)存儲(chǔ)域60,子塊號(hào)“01”對(duì)應(yīng)存儲(chǔ)域61,其余依此類(lèi)推。[0190]當(dāng)循跡器15的讀指針19指向軌道表13中的一個(gè)表項(xiàng)時(shí),通過(guò)總線30讀出存儲(chǔ)在該表項(xiàng)中的值,若發(fā)現(xiàn)存儲(chǔ)在該表項(xiàng)中的值為一個(gè)二級(jí)緩存循跡地址(BN2X和BN2Y),則將BN2X作為行地址,BN2Y作為列地址經(jīng)總線30和多選器901查找存儲(chǔ)器902中對(duì)應(yīng)表項(xiàng),檢查存儲(chǔ)在該表項(xiàng)中的一級(jí)塊號(hào)BNlX是否有效,以備計(jì)算該分支源指令的分支目標(biāo)指地址時(shí)使用。若存儲(chǔ)在存儲(chǔ)器902對(duì)應(yīng)表項(xiàng)中的一級(jí)塊號(hào)BNlX有效,則表明對(duì)應(yīng)的分支目標(biāo)指令已經(jīng)存儲(chǔ)在一級(jí)緩存16中,將存儲(chǔ)在存儲(chǔ)器902對(duì)應(yīng)表項(xiàng)中的一級(jí)塊號(hào)BNlX經(jīng)總線910和多選器911寫(xiě)進(jìn)軌道表13由循跡器15的讀指針19指向的表項(xiàng)中,同時(shí)將存儲(chǔ)在軌道表13對(duì)應(yīng)表項(xiàng)中的BN2Y值更新為去掉子塊號(hào)得到的BNlY值。因此,當(dāng)處理器10執(zhí)行到該分支源指令時(shí),可以根據(jù)存儲(chǔ)在軌道表13對(duì)應(yīng)表項(xiàng)中的一級(jí)循跡地址BNl直接從一級(jí)緩存16中讀取指令,供處理器10使用。若存儲(chǔ)在存儲(chǔ)器902對(duì)應(yīng)表項(xiàng)中的一級(jí)塊號(hào)BNlX無(wú)效,表明對(duì)應(yīng)的分支目標(biāo)指令沒(méi)有存儲(chǔ)在一級(jí)緩存16中,則根據(jù)總線30中的二級(jí)緩存循跡地址BN2X和BN2Y將包含分支目標(biāo)指令的二級(jí)指令子塊從二級(jí)緩存17中填充進(jìn)由置換邏輯提供的BNlX確定的一級(jí)緩存16中,等處理器10執(zhí)行到該條指令時(shí),可以從一級(jí)緩存16中直接讀取指令供處理器10使用。同時(shí),將由替換邏輯產(chǎn)生的BNlX和總線30中的BN2Y去掉子塊號(hào)后的BNlY—起寫(xiě)進(jìn)軌道表13由循跡器15的讀指針19指向的表項(xiàng)中,并將存儲(chǔ)器902中對(duì)應(yīng)表項(xiàng)的BNlX值置為有效。與此同時(shí),還要根據(jù)總線30中的二級(jí)塊號(hào)BN2X將存儲(chǔ)在主動(dòng)表91中對(duì)應(yīng)的標(biāo)簽讀出,送到掃描器12的寄存器中,以備計(jì)算該分支源指令的分支目標(biāo)指令地址時(shí)使用,并且將由置換邏輯確定的BNlX存儲(chǔ)在掃描器12的寄存器中,以備把計(jì)算得到的該二級(jí)指令子塊中的分支目標(biāo)地址寫(xiě)入軌道表時(shí),將其作為分支源地址指向軌道表13的某一行中。[0191]當(dāng)循跡器15的讀指針19指向軌道表13中的一個(gè)表項(xiàng)時(shí),通過(guò)總線30讀出存儲(chǔ)在該表項(xiàng)中的值,發(fā)現(xiàn)該分支源指令是一條間接分支指令,此時(shí)由處理器10計(jì)算分支目標(biāo)指令地址,然后經(jīng)總線908和多選器912送到主動(dòng)表91中進(jìn)行匹配。若匹配成功,表明分支目標(biāo)指令存儲(chǔ)在二級(jí)緩存17中,此時(shí)將匹配成功的BN2X經(jīng)總線903和多選器901送到存儲(chǔ)器902中查找到對(duì)應(yīng)行,將計(jì)算得到的分支目標(biāo)指令的BN2Y經(jīng)總線905和多選器901送到存儲(chǔ)器902中查找到對(duì)應(yīng)列。若存儲(chǔ)在該表項(xiàng)中的BNlX值有效,則操作與前述相似。不同點(diǎn)是需要立即由該BNlX值和計(jì)算得到的分支目標(biāo)指令的BNlY值將存儲(chǔ)在一級(jí)緩存16中的指令取出送給處理器10使用。若存儲(chǔ)在存儲(chǔ)器902中對(duì)應(yīng)表項(xiàng)的值無(wú)效,則操作與前述相似。不同點(diǎn)時(shí)需要立即由該BN2值將二級(jí)緩存17中包含該分支目標(biāo)指令的二級(jí)指令子塊填充到替換策略確定的一級(jí)緩存16中,同時(shí)也將該一級(jí)塊號(hào)BNlX及計(jì)算得到的分支目標(biāo)指令的BNlY寫(xiě)入軌道表13該間接分支指令對(duì)應(yīng)的表項(xiàng)中,同時(shí)還要將該分支目標(biāo)指令送到處理器10中,供處理器10使用。[0192]若匹配不成功,表明分支目標(biāo)指令不在二級(jí)緩存17中,根據(jù)計(jì)算得到的分支目標(biāo)地址從更低層次的存儲(chǔ)器中取出,填充到由替換策略確定的二級(jí)緩存塊中,后續(xù)操作與前述一致。[0193]為了便于描述,在之后的實(shí)施例中,若無(wú)特別說(shuō)明,“分支源指令”均為直接分支指令。[0194]當(dāng)二級(jí)緩存17中的一個(gè)二級(jí)指令子塊填充進(jìn)一級(jí)緩存16中時(shí),掃描器12對(duì)從二級(jí)緩存17送往一級(jí)緩存16的二級(jí)指令子塊進(jìn)行審查,當(dāng)發(fā)現(xiàn)該二級(jí)指令子塊中的某條指令是分支指令,即計(jì)算該分支源指令的分支目標(biāo)地址。[0195]為了降低功耗即減少主動(dòng)表91的訪問(wèn)次數(shù),在此采用判斷分支目標(biāo)指令所在位置是否超出一級(jí)指令塊邊界、二級(jí)指令塊邊界及二級(jí)指令塊的下一二級(jí)指令塊邊界的方法來(lái)降低訪問(wèn)主動(dòng)表91的頻率。[0196]當(dāng)掃描器12計(jì)算分支目標(biāo)指令地址時(shí),分支目標(biāo)所在位置有如下幾種情況。[0197]情況1,當(dāng)分支目標(biāo)地址和分支源地址在同一個(gè)一級(jí)指令塊中時(shí),即分支目標(biāo)指令和分支源指令有相同的BN1X。此時(shí),將存儲(chǔ)在掃描器中的BNlX和計(jì)算得到的BNlY合并為BNl經(jīng)總線907和多選器911寫(xiě)進(jìn)由掃描器12中暫存的BNlX和掃描器12中分支源指令本身的BNlY經(jīng)總線922指向的軌道表13的表項(xiàng)中,待執(zhí)行到該分支源指令時(shí),處理器10可以直接從一級(jí)緩存16中直接讀取指令供處理器10使用。[0198]情況2,當(dāng)分支目標(biāo)地址和分支源地址在同一個(gè)二級(jí)指令塊中時(shí),即分支目標(biāo)指令和分支源指令有相同的BN2X。此時(shí),將存儲(chǔ)在掃描器中的BN2X和計(jì)算得到的BN2Y(即分支目標(biāo)地址中的低位部分)合并為BN2經(jīng)總線905和多選器901查找存儲(chǔ)器902中的對(duì)應(yīng)表項(xiàng)。若存儲(chǔ)器902中對(duì)應(yīng)表項(xiàng)中的BNlX值有效,則將該BNlX值和計(jì)算得到的BN2Y值去掉子塊號(hào)后得到的BNlY合并成BNl經(jīng)總線910和多選器911寫(xiě)進(jìn)由掃描器12中暫存的BNlX和掃描器12中分支源指令本身的BNlY經(jīng)總線922指向的軌道表13的表項(xiàng)中。若存儲(chǔ)器902中對(duì)應(yīng)表項(xiàng)中的BNlX值無(wú)效,則將該BN2經(jīng)總線910和多選器911寫(xiě)進(jìn)由掃描器12中暫存的BNlX和掃描器12中分支源指令本身的BNlY經(jīng)總線922指向的軌道表13的表項(xiàng)中。后續(xù)操作與前述一致。[0199]情況3,當(dāng)分支目標(biāo)地址在分支源地址的前一個(gè)二級(jí)指令塊或后一個(gè)二級(jí)指令塊中時(shí),將BN2經(jīng)總線905和多選器901送到存儲(chǔ)器902中查找對(duì)應(yīng)表項(xiàng)的前一個(gè)或者后一個(gè)二級(jí)指令塊的BN2X,然后將該BN2X經(jīng)總線910讀出和計(jì)算得到的分支目標(biāo)指令的BN2Y一起再指向存儲(chǔ)器902的另一個(gè)表項(xiàng)中。若該表項(xiàng)中的BNlX值有效,則將該BNlX值和計(jì)算得到的BN2Y值去掉子塊號(hào)后得到的BNlY合并成BNl經(jīng)總線910和多選器911寫(xiě)進(jìn)由掃描器12中暫存的BNlX和掃描器12中分支源指令本身的BNlY經(jīng)總線922指向的軌道表13的表項(xiàng)中。若存儲(chǔ)器902中對(duì)應(yīng)表項(xiàng)中的BNlX值無(wú)效,則將該表項(xiàng)對(duì)應(yīng)的BN2X和計(jì)算得到的分支目標(biāo)指令BN2Y拼接成BN2經(jīng)總線910和多選器911寫(xiě)進(jìn)由掃描器12中暫存的BNlX和掃描器12中分支源指令本身的BNlY經(jīng)總線922指向的軌道表13的表項(xiàng)中。后續(xù)操作與前述一致。[0200]情況4,當(dāng)分支目標(biāo)地址在分支源地址的前一個(gè)二級(jí)指令塊或后一個(gè)二級(jí)指令塊之外時(shí),將計(jì)算得到的分支目標(biāo)指令地址經(jīng)總線907和多選器912送到主動(dòng)表91中匹配。若匹配成功,后續(xù)操作與前述一致。若匹配不成功,根據(jù)計(jì)算得到的分支目標(biāo)地址從更低層次的存儲(chǔ)器中取出相應(yīng)指令塊填充到由替換策略確定的二級(jí)緩存塊中,后續(xù)操作與前述一致。[0201]為了便于說(shuō)明,在本實(shí)施例中,將指令地址分成四部分。具體地,請(qǐng)參考圖11,其為本發(fā)明實(shí)施例的指令地址和分支轉(zhuǎn)移距離示意圖。指令地址的低位表示該指令在一級(jí)指令塊中的位置(即該指令地址的偏移量部分50),就是對(duì)應(yīng)的BNlY;指令地址的中間段用于表明一級(jí)指令塊在二級(jí)指令塊中的位置(即該指令地址的子塊號(hào)51),所以子塊號(hào)51和偏移量50就構(gòu)成了BN2Y54。子塊號(hào)51的高一位52用于判斷分支目標(biāo)地址是否超出了分支源地址的下一二級(jí)指令塊所在位置。指令地址的高位53用于與主動(dòng)表91中對(duì)應(yīng)的標(biāo)簽進(jìn)行匹配,得到匹配信息。在指令地址的4個(gè)部分銜接處產(chǎn)生三個(gè)邊界。相應(yīng)地,將分支目標(biāo)地址也分成三部分,低位55對(duì)應(yīng)BN1Y,中間部分56對(duì)應(yīng)子塊號(hào),高位部分57對(duì)應(yīng)指令地址高位53。[0202]在本實(shí)施例中,將分支源指令地址與分支轉(zhuǎn)移距離相加可以得到分支目標(biāo)地址。在相加的過(guò)程中,加法器中與上述邊界對(duì)應(yīng)處有三個(gè)進(jìn)位信號(hào)。如果分支轉(zhuǎn)移距離在任意一個(gè)邊界的以上部分都是“O”且該邊界處的加法器進(jìn)位為“0”,表明分支目標(biāo)地址在對(duì)應(yīng)的邊界內(nèi),否則就超出了該邊界。如果分支轉(zhuǎn)移距離在任意一個(gè)邊界的以上部分都是“I”且該邊界處的加法器進(jìn)位為“I”,表明分支目標(biāo)地址在對(duì)應(yīng)的邊界內(nèi),否則就超出了該邊界。[0203]具體地,請(qǐng)參考圖12,其為本發(fā)明所述掃描器計(jì)算分支目標(biāo)地址的結(jié)構(gòu)圖。在本實(shí)施例中,所述結(jié)構(gòu)圖包含第一寄存器1201、第二寄存器1202、第三寄存器1203、第四寄存器1204、第五寄存器1205、增量器1206、多進(jìn)位輸出加法器1207。[0204]在本實(shí)施例中,總線907用于將分支目標(biāo)地址傳送到緩存系統(tǒng)的其他模塊??偩€907中還包含用于判別地址格式的控制信號(hào)。[0205]將分支源地址(1201,1202,1203)與分支轉(zhuǎn)移距離(57,56,55)相加,從加法器中從三個(gè)邊界上提取進(jìn)位信號(hào),根據(jù)上述方法分別求得表示三個(gè)分支目標(biāo)在邊界內(nèi)的’界內(nèi)’信號(hào),該三個(gè)信號(hào)用優(yōu)先權(quán)邏輯使得有效的代表最小數(shù)據(jù)塊的’界內(nèi)’信號(hào)會(huì)使得代表更大的數(shù)據(jù)塊的界內(nèi)信號(hào)無(wú)效。該最小界內(nèi)信號(hào)被放上總線907以表明地址格式。[0206]若根據(jù)上述方法判斷出分支目標(biāo)地址在分支源指令所在一級(jí)指令塊中時(shí),,將存儲(chǔ)在掃描器12中的BNlX經(jīng)總線1214和計(jì)算得到的BNlY經(jīng)總線1212拼接成BNl經(jīng)總線907寫(xiě)進(jìn)由掃描器12中暫存的BNlX和掃描器12中被掃描的分支源指令本身的BNlY經(jīng)總線922指向的軌道表13的表項(xiàng)中,待執(zhí)行到該分支源指令時(shí),處理器10可以直接從一級(jí)緩存16中直接讀取指令供處理器10使用。[0207]若判斷出分支目標(biāo)指令在當(dāng)前分支源指令所在的二級(jí)指令塊內(nèi),則將總線1213,總線1211和總線1212的值拼接成一個(gè)BN2地址經(jīng)總線907送到存儲(chǔ)器902中,后續(xù)操作與前述圖9例一致。[0208]若判斷出分支目標(biāo)指令在當(dāng)前分支源指令所在的二級(jí)指令塊的下一個(gè)二級(jí)指令塊內(nèi),則將總線1213,總線1211,總線1212拼接成BN2地址經(jīng)總線907送到存儲(chǔ)器902中,查找下一二級(jí)指令塊相關(guān)信息,后續(xù)操作與前述圖9例一致。[0209]若判斷出分支目標(biāo)指令在前分支源指令所在的二級(jí)指令塊的下一個(gè)二級(jí)指令塊夕卜,將總線1210,總線1211和總線1212拼接成分支目標(biāo)地址(PC),經(jīng)總線907送到主動(dòng)表91中,后續(xù)操作與前述圖9例一致??梢愿鶕?jù)分支轉(zhuǎn)移距離的符號(hào)位判斷分支目標(biāo)地址是在當(dāng)前分支源地址之前還是之后。[0210]在本發(fā)明中,上述技術(shù)方案也可以被應(yīng)用在數(shù)據(jù)緩存中。請(qǐng)參考圖13,其為本發(fā)明所述為數(shù)據(jù)訪問(wèn)指令預(yù)先準(zhǔn)備數(shù)據(jù)的一個(gè)實(shí)施例。在本實(shí)施例中只顯示了與數(shù)據(jù)相關(guān)的部分,省略了圖9中與指令相關(guān)的部分。其中,處理器10,主動(dòng)表91、相關(guān)表14、循跡器15、第二多選器912和存儲(chǔ)器902均與圖9實(shí)施例相同。而本實(shí)施例中的兩層緩存均是數(shù)據(jù)緩存:一級(jí)數(shù)據(jù)緩存116和二級(jí)數(shù)據(jù)緩存117。此外,數(shù)據(jù)引擎112對(duì)于數(shù)據(jù)緩存的作用則相當(dāng)于掃描器12對(duì)于指令緩存的作用,且用一個(gè)三輸入多選器1101代替了四輸入的第一多選器901。[0211]在本實(shí)施例中,一級(jí)數(shù)據(jù)緩存116中的存儲(chǔ)塊(即一級(jí)數(shù)據(jù)塊)由DBNlX指向;而二級(jí)數(shù)據(jù)緩存117中的存儲(chǔ)塊(即二級(jí)數(shù)據(jù)塊)與主動(dòng)表91中的表項(xiàng)一一對(duì)應(yīng),由同一個(gè)DBN2X指向。與圖9實(shí)施例類(lèi)似,二級(jí)數(shù)據(jù)緩存117中包含了一級(jí)數(shù)據(jù)緩存116中的所有數(shù)據(jù),而一個(gè)二級(jí)數(shù)據(jù)塊可以對(duì)應(yīng)若干個(gè)一級(jí)數(shù)據(jù)塊。特別地,在本實(shí)施例中以一個(gè)二級(jí)數(shù)據(jù)塊可以對(duì)應(yīng)四個(gè)一級(jí)數(shù)據(jù)塊。與圖9實(shí)施例類(lèi)似,所述一級(jí)數(shù)據(jù)塊的DBNlX和二級(jí)數(shù)據(jù)塊的DBN2X的對(duì)應(yīng)關(guān)系也被存儲(chǔ)在存儲(chǔ)器902中。這樣,可以根據(jù)DBN2Y在存儲(chǔ)器902中由DBN2X指向的行中找到對(duì)應(yīng)的DBN1X,該DBNlX和DBN2Y的低位部分(即DBN1Y)共同構(gòu)成DBNl,從而將DBN2轉(zhuǎn)換為DBNl。此外,在本實(shí)施例中還包含一個(gè)存儲(chǔ)器1102。存儲(chǔ)器1102的行與一級(jí)數(shù)據(jù)緩存116的一級(jí)數(shù)據(jù)塊一一對(duì)應(yīng),其中每行存儲(chǔ)了對(duì)應(yīng)一級(jí)數(shù)據(jù)塊所在的二級(jí)數(shù)據(jù)塊號(hào)及該BNlX在該BN2X中對(duì)應(yīng)的子塊號(hào),從而可以將DBNlX轉(zhuǎn)換為DBN2X,并將該子塊號(hào)與總線30送來(lái)的DBNlY合并構(gòu)成DBN2Y。[0212]在本實(shí)施例中,軌道表13的軌跡點(diǎn)中的指令類(lèi)型除了分支指令(對(duì)應(yīng)分支點(diǎn))之夕卜,還包括數(shù)據(jù)訪問(wèn)指令(對(duì)應(yīng)數(shù)據(jù)點(diǎn))。與分支點(diǎn)類(lèi)似,數(shù)據(jù)點(diǎn)格式1188由四部分構(gòu)成:格式(TYPE),一級(jí)數(shù)據(jù)塊號(hào)(DBNlX)、一級(jí)塊內(nèi)偏移(DBNlY)和數(shù)據(jù)步長(zhǎng)(stride)。其中格式中的數(shù)據(jù)訪問(wèn)指令類(lèi)型還可以被進(jìn)一步分為數(shù)據(jù)讀取指令和數(shù)據(jù)存儲(chǔ)指令。所述數(shù)據(jù)步長(zhǎng)就是處理器10前后兩次執(zhí)行同一數(shù)據(jù)訪問(wèn)指令時(shí)對(duì)應(yīng)的數(shù)據(jù)地址的差值。[0213]數(shù)據(jù)引擎112中包含數(shù)據(jù)步長(zhǎng)計(jì)算模塊,用于對(duì)處理器10前后兩次執(zhí)行同一數(shù)據(jù)訪問(wèn)指令時(shí)對(duì)應(yīng)的數(shù)據(jù)地址相減,得到的差值就是數(shù)據(jù)步長(zhǎng)。根據(jù)該數(shù)據(jù)步長(zhǎng)可以預(yù)測(cè)處理器10以后再次執(zhí)行該數(shù)據(jù)訪問(wèn)指令時(shí)可能的預(yù)測(cè)數(shù)據(jù)地址。在本實(shí)施例中,所述預(yù)測(cè)數(shù)據(jù)地址所在的一級(jí)數(shù)據(jù)塊均被事先填充到一級(jí)數(shù)據(jù)緩存116中。對(duì)于數(shù)據(jù)讀取指令,還可以進(jìn)一步地讀出所述預(yù)測(cè)數(shù)據(jù)地址對(duì)應(yīng)的數(shù)據(jù)放上總線125,這樣當(dāng)處理器10執(zhí)行到該數(shù)據(jù)讀取指令時(shí)可以不必訪問(wèn)一級(jí)數(shù)據(jù)緩存116,直接從總線125上得到該數(shù)據(jù)。對(duì)于數(shù)據(jù)存儲(chǔ)指令,則可以將處理器10執(zhí)行該指令時(shí)輸出的數(shù)據(jù)暫存到一個(gè)寫(xiě)緩沖(圖13中沒(méi)有顯示)中,等待一級(jí)數(shù)據(jù)緩存116空閑時(shí)再寫(xiě)入相應(yīng)位置。下面以數(shù)據(jù)讀取指令為例進(jìn)行說(shuō)明。[0214]當(dāng)循跡器15的讀指針19指向該數(shù)據(jù)點(diǎn)時(shí),根據(jù)總線30上讀出的數(shù)據(jù)點(diǎn)內(nèi)容中的DBNl(即DBNlX和DBN1Y),可以直接對(duì)一級(jí)數(shù)據(jù)緩存116尋址讀出相應(yīng)數(shù)據(jù)放上總線125準(zhǔn)備好供處理器10使用。同時(shí)總線30上的DBNl及數(shù)據(jù)步長(zhǎng)也被送到數(shù)據(jù)引擎112。在數(shù)據(jù)引擎112中可以采用與之前實(shí)施例中判斷分支目標(biāo)指令是否位于同一個(gè)一級(jí)/二級(jí)指令塊類(lèi)似的方法判斷預(yù)測(cè)數(shù)據(jù)地址與本次數(shù)據(jù)地址的位置關(guān)系。具體地,可以將本次數(shù)據(jù)地址對(duì)應(yīng)的BNlY與數(shù)據(jù)步長(zhǎng)相加,并根據(jù)是否有進(jìn)位輸出進(jìn)行判斷。下面以數(shù)據(jù)步長(zhǎng)為正數(shù)為例進(jìn)行說(shuō)明,對(duì)于其他情況,可以參考圖9實(shí)施例中操作,在此不再贅述。[0215]與圖12實(shí)施例類(lèi)似,數(shù)據(jù)引擎112還包含一個(gè)加法器用于計(jì)算DBNlY或DBN2Y與數(shù)據(jù)步長(zhǎng)的相應(yīng)部分之和,并判斷數(shù)據(jù)步長(zhǎng)相應(yīng)的高位部分是否為‘0’,以及加法器的結(jié)果是否超出邊界。具體地,若數(shù)據(jù)步長(zhǎng)中超出DBNlY的高位部分為全‘0’,且對(duì)應(yīng)DBNlY的加法沒(méi)有進(jìn)位輸出,則表示該預(yù)測(cè)數(shù)據(jù)地址與本次數(shù)據(jù)地址位于同一個(gè)一級(jí)數(shù)據(jù)塊中,此時(shí),可以用本次數(shù)據(jù)地址對(duì)應(yīng)的DBNlX與加法器計(jì)算得到的DBNlY共同構(gòu)成DBNl經(jīng)總線1107、第一多選器911填回軌道表13的該數(shù)據(jù)點(diǎn)中(該數(shù)據(jù)點(diǎn)由原讀出時(shí)的循跡器指針19經(jīng)延遲后指向),以替換原來(lái)的內(nèi)容。[0216]若對(duì)應(yīng)DBNlY的加法有進(jìn)位輸出,則表示該預(yù)測(cè)數(shù)據(jù)地址與本次數(shù)據(jù)地址位于不同的一級(jí)數(shù)據(jù)塊中。數(shù)據(jù)引擎112通過(guò)總線1121將本次數(shù)據(jù)地址的DBNlX送到存儲(chǔ)器1102讀出相應(yīng)的DBN2X和子塊號(hào)并通過(guò)總線1123送回?cái)?shù)據(jù)引擎112。所述子塊號(hào)與總線30送來(lái)的DBNlY合并構(gòu)成DBN2Y與數(shù)據(jù)步長(zhǎng)相加。若數(shù)據(jù)步長(zhǎng)中超出DBN2Y的高位部分為全‘0’,且對(duì)應(yīng)DBN2Y的加法沒(méi)有進(jìn)位輸出,則表示該預(yù)測(cè)數(shù)據(jù)地址與本次數(shù)據(jù)地址位于同一個(gè)二級(jí)數(shù)據(jù)塊中,此時(shí),數(shù)據(jù)引擎112將總線1123送來(lái)的本次數(shù)據(jù)地址對(duì)應(yīng)的DBN2X和加法器計(jì)算得到的DBN2Y共同構(gòu)成DBN2放上總線1107并經(jīng)多選器1101送到存儲(chǔ)器902中按前例方法轉(zhuǎn)換為DBNl經(jīng)總線910、第一多選器911填回軌道表13的該數(shù)據(jù)點(diǎn)中,以替換原來(lái)的內(nèi)容。[0217]若數(shù)據(jù)步長(zhǎng)中超出DBNlY的高位部分為全‘0’,且對(duì)應(yīng)DBN2Y的加法有進(jìn)位輸出,但在更高位上沒(méi)有進(jìn)位輸出,表示該預(yù)測(cè)數(shù)據(jù)地址位于本次數(shù)據(jù)地址對(duì)應(yīng)的二級(jí)數(shù)據(jù)塊的下一二級(jí)數(shù)據(jù)塊中,此時(shí),數(shù)據(jù)引擎112將總線1123送來(lái)的DBN2X放上總線1107并經(jīng)多選器1101送到存儲(chǔ)器902中按前例方法讀出下一二級(jí)數(shù)據(jù)塊的DBN2并經(jīng)總線906、第一多選器911送回存儲(chǔ)器902轉(zhuǎn)換為DBNl經(jīng)總線910、第一多選器911填回軌道表13的該數(shù)據(jù)點(diǎn)中,以替換原來(lái)的內(nèi)容。[0218]若對(duì)應(yīng)DBN2Y的加法在更高位上也有進(jìn)位輸出,則表示該預(yù)測(cè)數(shù)據(jù)地址位于本次數(shù)據(jù)地址對(duì)應(yīng)的二級(jí)數(shù)據(jù)塊的下一二級(jí)數(shù)據(jù)塊以外的位置。此時(shí),數(shù)據(jù)引擎112將總線1123送來(lái)的本次數(shù)據(jù)地址對(duì)應(yīng)的DBN2X經(jīng)總線1107送到主動(dòng)表91讀出對(duì)應(yīng)的二級(jí)數(shù)據(jù)塊地址,再經(jīng)總線920送回?cái)?shù)據(jù)引擎112,與總線1123送來(lái)的子塊號(hào)及總線30送來(lái)的DBNlY合并得到的DBN2Y共同構(gòu)成為本次數(shù)據(jù)地址。之后,將本次數(shù)據(jù)地址加上數(shù)據(jù)步長(zhǎng)得到預(yù)測(cè)數(shù)據(jù)地址,并通過(guò)總線1107、第二多選器912送到主動(dòng)表91匹配。若匹配成功,則得到匹配成功項(xiàng)對(duì)應(yīng)的DBN2X,后續(xù)操作如前所述,最終將DBNl填回軌道表13的該數(shù)據(jù)點(diǎn)中,以替換原來(lái)的內(nèi)容。若匹配不成功,則通過(guò)總線18向更低層次存儲(chǔ)器輸出該預(yù)測(cè)數(shù)據(jù)地址以獲取相應(yīng)數(shù)據(jù)塊,后續(xù)操作如前所述,最終將DBNl填回軌道表13的該數(shù)據(jù)點(diǎn)中,以替換原來(lái)的內(nèi)容。[0219]這樣,當(dāng)循跡器15的讀指針19再次指向該數(shù)據(jù)點(diǎn)時(shí),從總線30上讀出的數(shù)據(jù)點(diǎn)內(nèi)容包含的已經(jīng)是DBNl,根據(jù)該DBNl直接對(duì)一級(jí)數(shù)據(jù)緩存116尋址讀出相應(yīng)數(shù)據(jù)放上總線125準(zhǔn)備好供處理器10使用。當(dāng)處理器10執(zhí)行到該數(shù)據(jù)訪問(wèn)指令并產(chǎn)生數(shù)據(jù)地址時(shí),該數(shù)據(jù)地址經(jīng)總線908被送到數(shù)據(jù)引擎112中與所述預(yù)測(cè)數(shù)據(jù)地址進(jìn)行比較,若比較結(jié)果相等,則處理器10直接讀取所述已經(jīng)準(zhǔn)備好的數(shù)據(jù)。若比較結(jié)果不相等,則表示該預(yù)測(cè)數(shù)據(jù)地址是錯(cuò)誤的。此時(shí),該數(shù)據(jù)地址經(jīng)總線908被送到主動(dòng)表91中匹配,后續(xù)操作如前所述,從而將正確數(shù)據(jù)提供給處理器10使用。[0220]如此重復(fù)上述過(guò)程,可以使得處理器10執(zhí)行數(shù)據(jù)訪問(wèn)指令之前,進(jìn)行數(shù)據(jù)地址預(yù)測(cè),并將相應(yīng)數(shù)據(jù)預(yù)先填充到一級(jí)數(shù)據(jù)緩存116中,從而減少數(shù)據(jù)緩存缺失。由于在處理器10再次執(zhí)行到該數(shù)據(jù)訪問(wèn)指令時(shí),相應(yīng)數(shù)據(jù)已經(jīng)被放上總線125準(zhǔn)備好,因此進(jìn)一步減少了數(shù)據(jù)緩存命中時(shí)的訪問(wèn)時(shí)間。[0221]以下考慮在二級(jí)緩存內(nèi)進(jìn)行虛擬地址向物理地址映射的實(shí)施例。請(qǐng)參考圖14,其為虛實(shí)轉(zhuǎn)換塊表TLB放置在處理器和主動(dòng)表之間的結(jié)構(gòu)圖。在本實(shí)施例中,所述結(jié)構(gòu)圖除了包含一個(gè)處理器10,一個(gè)主動(dòng)表91、一個(gè)掃描器12、一個(gè)軌道表13、一個(gè)相關(guān)表14、一個(gè)循跡器15、一個(gè)一級(jí)緩存16和一個(gè)二級(jí)緩存17,一個(gè)多選器911和一個(gè)存儲(chǔ)器902外,還包含一個(gè)TLB1301。[0222]在本實(shí)施例中,由于TLB位于處理器10和主動(dòng)表91之間,所以,主動(dòng)表91中存儲(chǔ)的二級(jí)指令塊地址是實(shí)地址,二級(jí)緩存17和一級(jí)緩存16的尋址地址也都是實(shí)地址,處理器10計(jì)算的地址為虛地址,在TLB1301中完成虛實(shí)地址轉(zhuǎn)換。[0223]當(dāng)循跡器15的讀指針19指向軌道表13中的一個(gè)表項(xiàng)時(shí),表項(xiàng)內(nèi)容被從總線30讀出,如該指令為間接分支指令且指令格式為BN2時(shí),循跡器15停留在該表項(xiàng),等待處理器10計(jì)算分支目標(biāo)地址。處理器核送出BRANCH信號(hào)20以通知系統(tǒng)總線908上地址為有效的虛擬分支目標(biāo)地址。該地址被送往TLB1301映射為相應(yīng)的物理地址后送往主動(dòng)表18。主動(dòng)表將其映射為相應(yīng)的BN2后經(jīng)總線903,多選器901送往存儲(chǔ)器902匹配為相應(yīng)的BNl。如該BNl無(wú)效,則如前例以該BN2中的塊地址BN2X部分在二級(jí)緩存17中尋址讀取相應(yīng)二級(jí)緩存子存儲(chǔ)塊填入一級(jí)緩存,所填入的一級(jí)緩存塊的塊號(hào)BNl被相應(yīng)填入存儲(chǔ)器902。如上述物理地址在主動(dòng)表18中未獲得匹配,則以該物理地址向低層存儲(chǔ)器讀取指令塊填充由二級(jí)替換邏輯指向的二級(jí)緩存塊,及填充由一級(jí)替換邏輯指向的一級(jí)緩存塊。同時(shí)將該一級(jí)緩存塊的塊號(hào)BNl填入存儲(chǔ)器902中由該二級(jí)緩存塊號(hào)BN2X指向的表項(xiàng)中由二級(jí)緩存子塊號(hào)(即物理地址中相當(dāng)于BN2Y高位的部分)指向的一級(jí)塊號(hào)域。若上述虛擬地址在TLB1301中未匹配,則產(chǎn)生TLB未命中(miss)信號(hào)請(qǐng)求操作系統(tǒng)處理。[0224]存儲(chǔ)器902中由上述BN2指向的BNlX與物理地址中的低位BNlY拼接成BNl存入軌道表13中仍由讀指針19指向的,原來(lái)存放間接分支目標(biāo)BN2地址的表項(xiàng)。該表項(xiàng)經(jīng)總線30讀出,經(jīng)判別其格式為BN1,若其分支類(lèi)型為無(wú)條件分支或分支類(lèi)型為有條件分支且處理器10輸出的分支判斷信號(hào)40為‘進(jìn)行分支’,則此BNl被存入寄存器21,出現(xiàn)在總線19上,控制一級(jí)緩存16讀出相應(yīng)分支目標(biāo)指令供處理器10執(zhí)行。若其分支類(lèi)型為有條件分支但處理器10輸出的分支判斷信號(hào)40為‘不分支’,則增量器22的輸出被存入寄存器21,出現(xiàn)在總線19上,控制一級(jí)緩存16讀出上述分支源指令的順序下一指令供處理器10執(zhí)行。[0225]下一次執(zhí)行到同一間接分支指令時(shí),總線30上的指令類(lèi)型為間接分支指令但地址格式為BNl,此時(shí)若根據(jù)分支類(lèi)型或處理器10的分支判斷進(jìn)行分支,則可選擇將該BNl放上總線19,控制一級(jí)緩存16讀出相應(yīng)分支目標(biāo)指令供處理器10猜測(cè)執(zhí)行,其后并根據(jù)該分支目標(biāo)指令的類(lèi)型繼續(xù)猜測(cè)執(zhí)行。由處理器10產(chǎn)生的分支目標(biāo)虛擬地址經(jīng)上述映射過(guò)程產(chǎn)生的準(zhǔn)確BNl被與從軌道表中讀出的猜測(cè)BNl比較,若相同則繼續(xù)執(zhí)行;若不同則將猜測(cè)執(zhí)行的指令及中間結(jié)果清除,并將映射所得的準(zhǔn)確BNl存入分支源表項(xiàng),循跡器由此開(kāi)始執(zhí)行。[0226]當(dāng)循跡器15的讀指針19指向軌道表13中的一個(gè)表項(xiàng)時(shí),表項(xiàng)內(nèi)容被從總線30讀出,如該指令為直接分支指令時(shí),該分支目標(biāo)地址BN2或BNl已經(jīng)是正確的地址,可依前例處理。[0227]當(dāng)二級(jí)緩存子塊向一級(jí)緩存器填充的過(guò)程中,其中的指令被掃描器12審查以提取信息填充軌道表13中與一級(jí)緩存塊相應(yīng)的軌道。其中分支指令的分支目標(biāo)由掃描器12負(fù)責(zé)計(jì)算。由于從主動(dòng)表91中讀出的塊地址是實(shí)地址,所以在掃描器12中計(jì)算分支目標(biāo)地址時(shí)需要判斷該地址是否超出了TLB的頁(yè)面(分支目標(biāo)與分支源不在同一頁(yè)面)??梢詫⒌刂芬理?yè)面大小分成高位的頁(yè)面外部分和低位的頁(yè)面內(nèi)部分。計(jì)算分支目標(biāo)指令時(shí),可以如前以分支偏移量在頁(yè)面外部分是否為全‘0’或全‘I’以及在頁(yè)面邊界上的加法器進(jìn)位判斷分支目標(biāo)是否超出了頁(yè)面。其中分支目標(biāo)與分支源同處同一頁(yè)面內(nèi)的處理與圖9例中相同,在此不再贅述。如果分支目標(biāo)地址超出了頁(yè)面,則掃描器12經(jīng)總線907送出的PC地址有可能是錯(cuò)誤的,因?yàn)閷?shí)地址頁(yè)號(hào)不一定連續(xù)。所以在分支目標(biāo)超出頁(yè)面的情況下要有機(jī)制防止錯(cuò)誤。以下的數(shù)種方式都可以防止上述錯(cuò)誤。[0228]第一種方式可以在圖14的實(shí)施例中直接實(shí)施。其方式是當(dāng)掃描器12在計(jì)算一條直接分支指令的分支目標(biāo),發(fā)現(xiàn)其分支目標(biāo)超出頁(yè)面時(shí),將該分支指令的類(lèi)型轉(zhuǎn)為間接分支,地址格式定為BN2,直接將其寫(xiě)入軌道表13中該直接分支指令的相應(yīng)表項(xiàng),而不需查找存儲(chǔ)器902以將地址換算成BNl。當(dāng)該表項(xiàng)被從總線30讀出時(shí),被作為一條間接分支指令處理,由處理器10負(fù)責(zé)計(jì)算其分支地址。計(jì)算所得的虛地址如前例在TLB1301中映射成實(shí)地址,最后在存儲(chǔ)器902中映射成BNl存回軌道表中該表項(xiàng)。此后操作與前例相同,即以該表項(xiàng)中BNl地址猜測(cè)執(zhí)行并由處理器10產(chǎn)生的準(zhǔn)確分支目標(biāo)地址驗(yàn)證。[0229]可以進(jìn)一步優(yōu)化這種方式,即定義一種新的指令類(lèi)型以代表上述直接分支指令在軌道表中的相應(yīng)表項(xiàng)被標(biāo)記為間接分支的情況,在此稱(chēng)為直標(biāo)間類(lèi)型(Direct-Marked-As-1ndirect,DMAI)。當(dāng)直標(biāo)間BN2-類(lèi)型從總線30讀出時(shí),其猜測(cè)執(zhí)行及地址驗(yàn)證過(guò)程與上例同。其后當(dāng)其分支目標(biāo)地址被轉(zhuǎn)換為BNl類(lèi)型后,直標(biāo)間BNl類(lèi)型從總線30讀出時(shí),系統(tǒng)不對(duì)其進(jìn)行地址驗(yàn)證,而是將該表項(xiàng)視為直接分支類(lèi)型執(zhí)行。[0230]第二種方式是在圖14的基礎(chǔ)上將主動(dòng)表18中的每個(gè)表項(xiàng)中除原有的實(shí)地址外增添與實(shí)地址相應(yīng)的虛地址及線程號(hào)(TID),請(qǐng)見(jiàn)圖15。[0231]請(qǐng)參考圖15,其為本發(fā)明所述虛實(shí)地址轉(zhuǎn)換的另一實(shí)現(xiàn)方式結(jié)構(gòu)圖。在本實(shí)施例中,主動(dòng)表91包含存儲(chǔ)物理地址(PA)的存儲(chǔ)塊1501,存儲(chǔ)虛擬地址(VA)的存儲(chǔ)塊1502,存儲(chǔ)線程號(hào)(TID)的存儲(chǔ)塊1503。TLB1301除了存儲(chǔ)現(xiàn)有技術(shù)存儲(chǔ)的物理地址(PA)和虛擬地址(VA)外,還包含存儲(chǔ)物理地址前一頁(yè)面號(hào)在TLB中的索引地址的存儲(chǔ)塊1510和存儲(chǔ)下一頁(yè)面號(hào)在TLB中的索引地址的存儲(chǔ)塊1511。其他需要的結(jié)構(gòu)如圖14中所示。此外,在本實(shí)施例中采用與前述類(lèi)似的方法判斷分支目標(biāo)地址是否在當(dāng)前頁(yè)面內(nèi)。[0232]當(dāng)由總線30上的BN2X對(duì)主動(dòng)表91尋址時(shí),存儲(chǔ)在存儲(chǔ)器1501和存儲(chǔ)器1502中對(duì)應(yīng)的物理地址和虛擬地址被讀出,分別經(jīng)總線1505和總線1504送到掃描器12中。這樣,掃描器除了可以按前例方法直接計(jì)算分支目標(biāo)物理地址以外,還可以根據(jù)該虛擬地址計(jì)算分支目標(biāo)虛擬地址。[0233]若掃描器12中計(jì)算出的分支目標(biāo)地址在當(dāng)前頁(yè)面內(nèi),則將計(jì)算得到的分支目標(biāo)地址經(jīng)總線1506、多選器1508和總線1509送到主動(dòng)表91的存儲(chǔ)器1501中匹配,后續(xù)操作與前述一致。[0234]若掃描器12中計(jì)算出的分支目標(biāo)地址在當(dāng)前頁(yè)面的相鄰頁(yè)面內(nèi),則將計(jì)算得到的分支目標(biāo)地址經(jīng)總線1506、多選器1508和總線1509送到主動(dòng)表91的存儲(chǔ)器1501中匹配,并將地址類(lèi)型按圖12例同樣方式標(biāo)出是在下一個(gè)或者上一個(gè)頁(yè)面內(nèi),讀出匹配的該表項(xiàng)中的1510或1511,然后根據(jù)1510或1511的值查找TLB1301中的對(duì)應(yīng)行,后續(xù)操作與前述一致。[0235]若掃描器12中計(jì)算出的分支目標(biāo)地址不在當(dāng)前頁(yè)面內(nèi),則將計(jì)算得到的分支目標(biāo)虛地址經(jīng)總線1512送到TLB1301中匹配。若匹配成功,將對(duì)應(yīng)的分支目標(biāo)物理地址經(jīng)總線1507、多選器1508和總線1509送到主動(dòng)表91中匹配,后續(xù)操作與前述一致。若TLB1301匹配不成功或者存儲(chǔ)器1501匹配不成功,后續(xù)操作與前述一致。[0236]第三種方式請(qǐng)參考圖16,其為本發(fā)明所述虛實(shí)地址轉(zhuǎn)換的另一結(jié)構(gòu)圖。主動(dòng)表91除了包含存儲(chǔ)物理地址的存儲(chǔ)塊1601外,還包含存儲(chǔ)指向TLB對(duì)應(yīng)行的指針(PT)的存儲(chǔ)塊1602,且沒(méi)有包含存儲(chǔ)虛擬地址的存儲(chǔ)塊,其他結(jié)構(gòu)與圖15所述結(jié)構(gòu)相同。[0237]當(dāng)由總線30上的BN2X對(duì)主動(dòng)表91尋址時(shí),存儲(chǔ)在存儲(chǔ)器1601中的對(duì)應(yīng)物理地址經(jīng)總線1505被送到掃描器12中。當(dāng)計(jì)算得到的分支目標(biāo)地址在當(dāng)前頁(yè)面內(nèi),操作與前述一致。當(dāng)計(jì)算得到的分支目標(biāo)地址超出了當(dāng)前頁(yè)面,那么根據(jù)總線BN2X的值讀出存儲(chǔ)在存儲(chǔ)器1602中的指針經(jīng)總線1605指向TLB1301中的相應(yīng)行,將存儲(chǔ)在TLB1301該行中的虛擬地址讀出,經(jīng)總線1604送到掃描器12中計(jì)算分支目標(biāo)地址,然后將計(jì)算出的分支目標(biāo)虛地址經(jīng)總線1512送到TLB1301中,后續(xù)操作與前述一致。[0238]第四種方式請(qǐng)參考圖17,其為本發(fā)明所述計(jì)算分支目標(biāo)地址的另一結(jié)構(gòu)圖。在本實(shí)施例中,主動(dòng)表91包含一個(gè)存儲(chǔ)虛擬地址的存儲(chǔ)塊1701和一個(gè)存儲(chǔ)虛擬地址的存儲(chǔ)塊1702。存儲(chǔ)塊1701中存儲(chǔ)了虛擬地址及其對(duì)應(yīng)的線程號(hào)(TID)。存儲(chǔ)塊1702的組織形式可以是直接映射、組相聯(lián)或全相聯(lián)中的任意一種。在本結(jié)構(gòu)圖中不再需要TLB,而是在主動(dòng)表91中完成虛實(shí)地址轉(zhuǎn)換。[0239]當(dāng)由總線30上的BN2X對(duì)主動(dòng)表91尋址時(shí),存儲(chǔ)在存儲(chǔ)器1701和存儲(chǔ)器1702中虛擬地址和物理地址被讀出分別經(jīng)總線1705和1703送到掃描器12中計(jì)算分支目標(biāo)虛擬地址和分支目標(biāo)物理地址。若分支目標(biāo)物理地址沒(méi)有超出當(dāng)前頁(yè)面,則將計(jì)算得到的分支目標(biāo)物理地址經(jīng)總線1708送到存儲(chǔ)器1702中匹配,后續(xù)操作與前述一致。若分支目標(biāo)物理地址超出了當(dāng)前頁(yè)面,則將分支目標(biāo)虛擬地址經(jīng)總線1506、多選器1508和總線1509送到存儲(chǔ)器1701中匹配,若存儲(chǔ)器1701或存儲(chǔ)器1702中匹配不成功,則按前例處理。這樣就可以得到相應(yīng)分支目標(biāo)BN2,后續(xù)操作與前述一致。[0240]第五種方式請(qǐng)參考圖18,其為本發(fā)明所述虛實(shí)地址轉(zhuǎn)換的另一結(jié)構(gòu)圖。在本實(shí)施例中,所述結(jié)構(gòu)圖與圖9類(lèi)似。不同點(diǎn)在于主動(dòng)表91中每個(gè)表項(xiàng)存儲(chǔ)有與二級(jí)指令緩存17中對(duì)應(yīng)二級(jí)指令塊相應(yīng)的虛地址及實(shí)地址的標(biāo)簽部分,每個(gè)表項(xiàng)都有一個(gè)有效位。存儲(chǔ)的虛擬地址中還包含線程號(hào)(TID)。主動(dòng)表的組織方式可以是直接映射也可以是組相聯(lián)也可以是全相聯(lián)的方式。此外,以總線1801將主動(dòng)表91中的實(shí)頁(yè)號(hào)送到掃描器12供分支目標(biāo)地址計(jì)算;以總線1803將主動(dòng)表91中的虛頁(yè)號(hào)及標(biāo)簽低位送到掃描器12供分支目標(biāo)地址計(jì)算。主動(dòng)表91匹配所用的實(shí)頁(yè)號(hào)由掃描器12經(jīng)總線907直接送入,所用的虛地址由總線1807送入??偩€1807有兩個(gè)來(lái)源分別是來(lái)自于掃描器12的總線907和來(lái)自于處理器10的總線908。[0241]主動(dòng)表91在本實(shí)施例中起到的是與傳統(tǒng)緩存系統(tǒng)中標(biāo)簽(TAG)單元以及塊表(TLB)相同的作用。圖19顯示了主動(dòng)表91中的具體結(jié)構(gòu)與對(duì)該主動(dòng)表尋址的地址格式1900。此例中以直接映射組織方式為例說(shuō)明,路組方式與全相連方式與此類(lèi)似。地址格式1900從高位到低位(從左到右)被分為數(shù)段,其中1988為線程號(hào),1987為頁(yè)號(hào)(可以是虛地址頁(yè)號(hào),也可以是實(shí)地址頁(yè)號(hào)),1986為標(biāo)簽低位,1987與1986拼接為地址標(biāo)簽,1985為索引位,1984為二級(jí)緩存子塊號(hào)(即BN2Y高位),1983為一級(jí)緩存塊內(nèi)偏移BN1Y。其中,標(biāo)簽低位1986,索引位1985,二級(jí)緩存子塊號(hào)1984及一級(jí)緩存塊內(nèi)偏移BNlY無(wú)論是虛地址還是實(shí)地址都是一樣的,所以可以共用。以虛地址尋址時(shí)還要使用線程號(hào)1988以區(qū)別不同線程的相同虛地址。[0242]主動(dòng)表91中含有主動(dòng)表存儲(chǔ)器1960,由復(fù)數(shù)個(gè)表項(xiàng)構(gòu)成,其表項(xiàng)與二級(jí)緩存塊中的存儲(chǔ)塊一一對(duì)應(yīng)。表項(xiàng)的讀取由總線1939(BN2X格式)尋址,表項(xiàng)的寫(xiě)入由二級(jí)緩存置換邏輯按置換算法(如LRU)提供地址。每個(gè)表項(xiàng)中的1908域?yàn)樘摰刂返木€程號(hào),1906域?yàn)樘摰刂讽?yè)號(hào),1902域?yàn)槲锢淼刂讽?yè)號(hào),1904域?yàn)闃?biāo)簽中低位,為虛、實(shí)標(biāo)簽共用部分。即1908、1906與1904拼接構(gòu)成虛地址標(biāo)簽,1902與1904拼接構(gòu)成實(shí)地址標(biāo)簽。要與主動(dòng)表91中內(nèi)容進(jìn)行比較的虛地址被放上總線1807,要進(jìn)行比較的實(shí)頁(yè)號(hào)被放上總線907。總線1807上的地址包含線程號(hào)1988,虛頁(yè)號(hào)1987,標(biāo)簽低位1986及索引位1985,其中索引位用于直接映射或組相連組織形式的主動(dòng)表的表項(xiàng)尋址,在全相連組織形式中該索引位也被用于與存儲(chǔ)器I960的內(nèi)容比較。因?yàn)榭偩€1807上內(nèi)容來(lái)自總線907,所以總線907上有地址的所有域,包括虛頁(yè)號(hào)與實(shí)頁(yè)號(hào),以及二級(jí)緩存子塊號(hào)1984及BN1Y1983。[0243]此外,主動(dòng)表91中還有一個(gè)抗混疊表(ant1-aliasingtable)1950,由復(fù)數(shù)個(gè)表項(xiàng)組成。其每個(gè)表項(xiàng)中含有存儲(chǔ)線程號(hào)與虛頁(yè)號(hào)的域1910及含有一個(gè)BNX2值的域1912。該BNX2是二級(jí)緩存器17中存儲(chǔ)的該虛頁(yè)面內(nèi)的一個(gè)二級(jí)緩存塊的塊號(hào)。混疊表1950的讀取地址由總線1939提供,其寫(xiě)地址由一個(gè)混疊表專(zhuān)用的置換邏輯按置換算法(如LRU)提供。抗混疊表與傳統(tǒng)的TLB作用有所不同,其中僅保存混疊時(shí)對(duì)應(yīng)同一個(gè)物理頁(yè)號(hào)在運(yùn)行時(shí)第二個(gè)出現(xiàn)的虛頁(yè)號(hào)及其后的虛頁(yè)號(hào)。此外,還有比較器1922、1924、1926及1928;寄存器1918,1919;以及多選器1932、1934、1936、1938及1940。其中,多選器1932選擇比較器1924的輸出及該輸出經(jīng)寄存器1919存儲(chǔ)后的輸出。多選器1934選擇主動(dòng)表1960中實(shí)頁(yè)號(hào)1902域與總線1909的輸出。多選器1936選擇寄存器1918的輸出與總線907的輸入。多選器1938選擇來(lái)自于總線1807上索引位1985及來(lái)自于抗混疊表中1912域所存儲(chǔ)的索引位產(chǎn)生總線1939。多選器1940選擇寄存器1918的輸出或總線1909的輸入放上總線18。[0244]以總線1807上的索引位1985尋址軌道表91的存儲(chǔ)器1960中讀出與索引位地址相應(yīng)的一個(gè)表項(xiàng),其中1908,1906,1904,及1902域,分別被送到比較器1922、1924與1926與總線1807上的其他域及總線907上的實(shí)頁(yè)號(hào)比較。比較器1922負(fù)責(zé)將從1908及1906域中讀出的線程號(hào)及虛地址頁(yè)號(hào)與從總線1807送來(lái)的線程號(hào)1988及虛地址頁(yè)號(hào)1987進(jìn)行比較,其比較結(jié)果以信號(hào)1901送出;如比較相同,其意義為T(mén)LB虛地址命中。比較器1924負(fù)責(zé)將從1904域中讀出的標(biāo)簽低位部分與從總線1807送來(lái)的虛地址中標(biāo)簽低位部分1986進(jìn)行比較,其比較結(jié)果與1911進(jìn)行‘與’操作后,從信號(hào)1903送出;如結(jié)果為‘1’,其意義為緩存虛地址命中。同理,比較器1926負(fù)責(zé)將多選器1934選擇的從1902域中讀出的實(shí)地址頁(yè)號(hào)與經(jīng)多選器1936選擇的從總線907送來(lái)的實(shí)地址頁(yè)號(hào)部分1987進(jìn)行比較,其比較結(jié)果從信號(hào)1907送出;如比較相同,其意義為T(mén)LB實(shí)地址命中。因?yàn)樘摰刂窐?biāo)簽與實(shí)地址標(biāo)簽的低位1986是相同的,所以比較器1924的比較結(jié)果經(jīng)多選器1932選擇與信號(hào)1907進(jìn)行‘與,操作后,從信號(hào)1905送出,如結(jié)果為‘I’,其意義為緩存實(shí)地址命中。[0245]現(xiàn)結(jié)合圖18、圖19解釋本實(shí)施例的操作。當(dāng)一個(gè)二級(jí)緩存子塊被填進(jìn)一級(jí)緩存時(shí),該塊中的指令被掃描器12審查。被審查的指令的類(lèi)型如前例被填充進(jìn)軌道表13中與指令相應(yīng)的表項(xiàng)。如被審查的指令為分支指令,掃描器12計(jì)算其分支目標(biāo)地址。若分支目標(biāo)指令與分支源指令在相鄰的二級(jí)緩存塊內(nèi),其分支目標(biāo)地址依前例處理。若分支目標(biāo)超出了上述邊界,則掃描器12將實(shí)地址或虛地址經(jīng)總線907送往主動(dòng)表91匹配以產(chǎn)生相應(yīng)的BN2地址,供送往存儲(chǔ)器902匹配為BNl存儲(chǔ)到軌道表13中。此外,主動(dòng)表91也依其內(nèi)部?jī)?chǔ)存狀態(tài)及來(lái)自總線907與總線1807的輸入決定對(duì)二級(jí)緩存及主動(dòng)表本身的操作。其中掃描器12輸出的總線907能同時(shí)提供用以比較的完整虛地址與實(shí)地址頁(yè)號(hào)。其中的實(shí)地址頁(yè)號(hào)被直接送往軌道表91與其中的實(shí)地址頁(yè)號(hào)匹配,其中的虛地址部分由多選器1806選擇后經(jīng)總線1807送往軌道表與其中的虛地址匹配。多選器1806的另一個(gè)輸入來(lái)自處理器10經(jīng)總線908送來(lái)的分支目標(biāo)虛地址。[0246]首先,由掃描器12判斷是否超出了頁(yè)面,判斷方法如前例所述。如果沒(méi)有超出頁(yè)面,則掃描器12將實(shí)地址塊號(hào)1987,標(biāo)簽低位1986,索引位1985放上總線907送往主動(dòng)表91匹配。此外,二級(jí)緩存子塊號(hào)1984及一級(jí)緩存塊內(nèi)偏移1983也被放上總線907經(jīng)多選器1806放上總線1807備用。索引位1985(BNX2)被多選器1938選擇放上總線1939。以總線1939上的BN2X為地址從存儲(chǔ)器1960中讀出一個(gè)表項(xiàng)與總線907及總線1807上的地址匹配。其中,總線907上的實(shí)頁(yè)號(hào)1987經(jīng)多選器1936選擇與經(jīng)多選器1934選擇的表項(xiàng)中1902域中的實(shí)頁(yè)號(hào)在比較器1926中比較,其結(jié)果為1907;總線1807上的標(biāo)簽低位1986被多選器1806選擇后放上總線1807與表項(xiàng)中1904域中的標(biāo)簽低位經(jīng)比較器1924比較后,其結(jié)果經(jīng)多選器1932選擇與結(jié)果1907進(jìn)行‘與’操作。當(dāng)該‘與’操作的結(jié)果1905為‘I,時(shí),表明該分支目標(biāo)指令已存儲(chǔ)在二級(jí)緩存17中,此時(shí)將總線1939上的索引位(即BN2X)以及總線1807上的二級(jí)緩存子塊號(hào)1984拼接經(jīng)總線903,多選器901送往存儲(chǔ)器902以映射相應(yīng)的BN1X,并將映射所得的BNlX結(jié)合總線907上的BN1Y1983如前例寫(xiě)入軌道表13中與該分支源指令相應(yīng)的表項(xiàng)。如存儲(chǔ)器902中無(wú)相應(yīng)的BN1X,則如前例將該BN2X與總線1807上的BN2Y(1984、1983)拼接成BN2寫(xiě)入軌道表13中與該分支源相應(yīng)的表項(xiàng)。該軌道表13的表項(xiàng)由暫存在掃描器12中的一級(jí)緩存中正被寫(xiě)入的一級(jí)緩存塊號(hào)BNlX和該分支源對(duì)應(yīng)的BNlY經(jīng)總線922共同指向。此情形稱(chēng)為情形I。[0247]當(dāng)匹配結(jié)果1905為‘0’,而匹配結(jié)果1907為‘I’時(shí),表明該分支目標(biāo)指令尚未存儲(chǔ)在二級(jí)緩存17中,但是TLB的實(shí)頁(yè)號(hào)命中,即實(shí)頁(yè)號(hào)已知。此時(shí)將總線907上的實(shí)頁(yè)號(hào)經(jīng)多選器1936,1940選擇與總線1807上的標(biāo)簽低位1986及索引位1985拼接形成實(shí)地址,送往低層存儲(chǔ)器讀取相應(yīng)指令塊后存入二級(jí)緩存17中由二級(jí)緩存替換邏輯指定的二級(jí)緩存塊。并以該二級(jí)緩存塊的塊號(hào)BN2X如前例產(chǎn)生BN2寫(xiě)入軌道表13中與該分支源指令相應(yīng)的表項(xiàng)。此時(shí)并以總線907,及總線1807上的地址寫(xiě)入該BN2X指向的主動(dòng)表存儲(chǔ)器160中的相應(yīng)域。此情形稱(chēng)為情形2。[0248]如果掃描器12判斷分支目標(biāo)地址超出頁(yè)面,則掃描器12將線程號(hào)1988,虛地址塊號(hào)1987,標(biāo)簽低位1986,索引位1985放上總線907經(jīng)多選器1806選擇經(jīng)總線1807送往主動(dòng)表91匹配。此外,二級(jí)緩存子塊號(hào)1984及一級(jí)緩存塊內(nèi)偏移1983也被放上總線907經(jīng)多選器1806選擇放上總線1807備用。當(dāng)匹配結(jié)果1903為‘I’時(shí),表明該分支目標(biāo)指令已存儲(chǔ)在二級(jí)緩存17中,此時(shí)如前例以總線1939上的BN2X以及總線1807上的二級(jí)緩存子塊號(hào)1984在存儲(chǔ)器902映射相應(yīng)的BN1X。亦如前例將BNl,或映射無(wú)效時(shí)將BN2存入軌道表13中的表項(xiàng)。此情形稱(chēng)為情形3。[0249]當(dāng)匹配結(jié)果1903為‘0’,而匹配結(jié)果1901為‘I’時(shí),表明該分支目標(biāo)指令尚未存儲(chǔ)在二級(jí)緩存17中,但是TLB的虛頁(yè)面號(hào)命中,即虛頁(yè)面號(hào)已知。因?yàn)樵撁械谋眄?xiàng)中的實(shí)頁(yè)號(hào)域1902即存有正確的實(shí)頁(yè)號(hào)。此時(shí)將該命中表項(xiàng)的實(shí)頁(yè)面號(hào)經(jīng)多選器1934,1940選擇與總線1807上的標(biāo)簽低位1986及索引位1985拼接形成實(shí)地址經(jīng)總線18送往低層存儲(chǔ)器讀取相應(yīng)指令塊后,存入二級(jí)緩存17中由二級(jí)緩存替換邏輯指定的二級(jí)緩存塊。并以該二級(jí)緩存塊的塊號(hào)BN2X如前例寫(xiě)入軌道表13中與該分支源指令相應(yīng)的表項(xiàng)。并以該二級(jí)緩存塊的塊號(hào)BN2X如前例產(chǎn)生BN2寫(xiě)入軌道表13中與該分支源指令相應(yīng)的表項(xiàng)。此時(shí)并以總線907,及總線1807上的地址寫(xiě)入該BN2X指向的主動(dòng)表存儲(chǔ)器160中的相應(yīng)域。此情形稱(chēng)為情形4。[0250]當(dāng)匹配結(jié)果1903為‘0’,匹配結(jié)果1901也為‘0’時(shí),表明該分支目標(biāo)指令尚未存儲(chǔ)在二級(jí)緩存17中,且軌道表存儲(chǔ)器1960中無(wú)相應(yīng)虛頁(yè)號(hào)。此時(shí),將比較器1924的比較結(jié)果(標(biāo)簽低位的比較)暫存于寄存器1919,也將總線18上讀出的表項(xiàng)中實(shí)頁(yè)號(hào)暫存入寄存器1918備用。仍以總線1939尋址在抗混疊表1950中讀出相應(yīng)表項(xiàng)。表項(xiàng)中的線程號(hào)及虛頁(yè)號(hào)域1910與總線1807上的線程號(hào)1988及虛頁(yè)號(hào)1987在比較器1928中此較。如該比較結(jié)果為命中,則表項(xiàng)中的二級(jí)緩存塊號(hào)(BN2X)域1912經(jīng)總線1911被送往多選器1938選擇為新的索引值1939指向主動(dòng)表存儲(chǔ)器1960。在此新的索引值尋址下,從主動(dòng)表存儲(chǔ)器1960中一個(gè)表項(xiàng)中讀出其中的實(shí)頁(yè)號(hào)域1902經(jīng)多選器1934選擇,與經(jīng)多選器1936選擇的先前暫存于寄存器1918中的實(shí)頁(yè)號(hào)比較。并將該比較結(jié)果1907與經(jīng)多選器1932選擇的先前暫存于寄存器1919的比較結(jié)果相‘與’,如該結(jié)果1905為‘I’,則表示從抗混疊表1950中讀出的虛頁(yè)號(hào)已有對(duì)應(yīng)的實(shí)頁(yè)號(hào)存于主動(dòng)表存儲(chǔ)器I960中,且由于該實(shí)頁(yè)號(hào)同一表項(xiàng)中的標(biāo)簽低位域1904與待匹配地址中的標(biāo)簽低位1986相同,表示該指令塊已在二級(jí)緩存中。此時(shí),只要經(jīng)總線將總線1939上的BN2X如前經(jīng)總線903送往存儲(chǔ)器902匹配BN1X,然后送到軌道表13中存儲(chǔ)即可。這種情形稱(chēng)之為情形5。這樣操作避免了混疊(aliasing)與緩存污染(cachepollution)。[0251]如果上述比較結(jié)果1905為‘0’,表示含有從總線1807送進(jìn)的分支目標(biāo)虛地址對(duì)應(yīng)指令的指令塊尚未存儲(chǔ)在二級(jí)緩存17中。此情形為緩存缺失,稱(chēng)為情形6。此時(shí)將經(jīng)多選器1936,1940選擇的暫存于寄存器1918中的物理頁(yè)號(hào),與總線1807上的標(biāo)簽低位1986及索引位1985拼接為實(shí)地址經(jīng)總線18送往低層存儲(chǔ)器讀取相應(yīng)指令塊,填入由二級(jí)緩存置換邏輯指定的二級(jí)存儲(chǔ)塊。同時(shí),總線1807上的線程號(hào)1988、虛頁(yè)號(hào)1987,標(biāo)簽低位1986以及經(jīng)多選器1934、1940選擇的暫存在寄存器1918中的實(shí)頁(yè)號(hào)分別被寫(xiě)入主動(dòng)表存儲(chǔ)器1960中與該二級(jí)存儲(chǔ)塊對(duì)應(yīng)表項(xiàng)中的相應(yīng)域1908,1906,1904及1902。同時(shí),該二級(jí)存儲(chǔ)塊的地址BN2X被放上總線903送往存儲(chǔ)器902匹配BN1X,并將其結(jié)果(BNl或BN2)送入軌道表13儲(chǔ)存。[0252]又或者上述抗混疊表內(nèi)容與總線1807上虛頁(yè)號(hào)在比較器1928中比較的結(jié)果為不命中。則表示沒(méi)有任何與總線1807上虛頁(yè)號(hào)相應(yīng)的實(shí)頁(yè)號(hào)存儲(chǔ)在主動(dòng)表存儲(chǔ)器1960中。此情形等效于傳統(tǒng)緩存系統(tǒng)中的TLB缺失,在此稱(chēng)為情形7。此時(shí),處理器產(chǎn)生TLB缺失異常,操作系統(tǒng)按現(xiàn)有技術(shù)處理該異常,尋找與總線1807上的虛地址相應(yīng)的實(shí)頁(yè)號(hào),作TLB填寫(xiě)操作。該實(shí)頁(yè)號(hào)從總線1909進(jìn)入主動(dòng)表91經(jīng)多選器1934選擇與經(jīng)多選器1936選擇的暫存于寄存器1918的實(shí)頁(yè)號(hào)比較。比較結(jié)果1907與經(jīng)多選器1932選擇的暫存于寄存器1919的標(biāo)簽低位比較結(jié)果作‘與’操作,產(chǎn)生比較結(jié)果1905。如該結(jié)果為‘1’,表示有復(fù)數(shù)個(gè)線程號(hào)、虛頁(yè)號(hào)映射到同一個(gè)實(shí)頁(yè)號(hào),即混疊情形,在此稱(chēng)為情形7。此時(shí),將總線1807上的線程號(hào)1988與虛頁(yè)號(hào)1987寫(xiě)入抗混疊表1950中由其置換邏輯指定的表項(xiàng)中的1910域。也由多選器1938選擇總線1807上的索引域BNX2經(jīng)總線1939寫(xiě)入抗混疊表1950中的1912域。同時(shí),將總線1939上的索引域1985(BNX2)與總線1807上的二級(jí)緩存子塊號(hào)1984拼接經(jīng)總線903送往存儲(chǔ)器902,如前例匹配BNlX并將結(jié)果寫(xiě)入軌道表13。[0253]如上述比較結(jié)果1905為‘0’,即表示沒(méi)有混疊,但含有從總線1807送進(jìn)的分支目標(biāo)虛地址對(duì)應(yīng)指令的指令塊尚未存儲(chǔ)在二級(jí)緩存17中。此情形也是類(lèi)似緩存缺失,稱(chēng)為情形8。此時(shí)將經(jīng)多選器1934,1940選擇的來(lái)自總線1909的物理頁(yè)號(hào)與總線1807上的標(biāo)簽低位1986及索引位1985拼接為實(shí)地址經(jīng)總線18送往低層存儲(chǔ)讀取相應(yīng)指令塊,填入由二級(jí)緩存置換邏輯指定的二級(jí)存儲(chǔ)塊。同時(shí),總線1807上的線程號(hào)1988、虛頁(yè)號(hào)1987,標(biāo)簽低位1986以及經(jīng)多選器1934、1940選擇的總線1919上的實(shí)頁(yè)號(hào)分別被寫(xiě)入主動(dòng)表存儲(chǔ)器1960中與該二級(jí)存儲(chǔ)塊對(duì)應(yīng)表項(xiàng)中的相應(yīng)域1908,1906,1904及1902。同時(shí),該二級(jí)存儲(chǔ)塊的地址BN2X與總線1807上的二級(jí)緩存子塊號(hào)1984拼接后,被放上總線903送往存儲(chǔ)器902匹配BN1X,并將其結(jié)果送入軌道表13儲(chǔ)存。以上8種情形為本實(shí)施例在掃描器12對(duì)填充至一級(jí)緩存的指令掃描產(chǎn)生分支目標(biāo)地址,當(dāng)該分支目標(biāo)地址與分支源不在相鄰的二級(jí)緩存塊中時(shí)可能發(fā)生的情況。其中,I一2為實(shí)地址匹配;3—8為虛地址匹配。[0254]循跡器15的讀指針19控制從軌道表13的讀端口總線30上讀出一個(gè)表項(xiàng)內(nèi)容。當(dāng)該表項(xiàng)為間接分支類(lèi)型時(shí),讀指針19停留在該表項(xiàng)等待。此時(shí),由處理器10產(chǎn)生的分支目標(biāo)虛地址,經(jīng)總線908,多選器1806選擇放上總線1807送往主動(dòng)表中匹配,其匹配過(guò)程與上述情形3—8相同。不同點(diǎn)在于此時(shí)其相應(yīng)的分支目標(biāo)指令即將被執(zhí)行。由主動(dòng)表91匹配所得的BN2,如果未能在存儲(chǔ)器902中匹配到有效的BNlX分支目標(biāo)(即分支目標(biāo)指令尚未存儲(chǔ)在一級(jí)緩存中),該分支目標(biāo)所在的二級(jí)子緩存塊要立刻被填充進(jìn)一級(jí)緩存,其相應(yīng)的一級(jí)緩存塊地址被填入軌道表13中以便供處理器10執(zhí)行。該BNlX也要被存儲(chǔ)進(jìn)902中由該BN2指向的表項(xiàng)以供后續(xù)匹配使用。該二級(jí)緩存的子緩存塊填充一級(jí)緩存器時(shí)處理方式如上,其中需要用到的該二級(jí)子緩存塊的對(duì)應(yīng)虛頁(yè)號(hào),標(biāo)簽低位及實(shí)頁(yè)號(hào)由該BN2指向的主動(dòng)表I960中表項(xiàng)經(jīng)總線1803及總線1801提供給掃描器12。其他如索引位等可由總線908直接向掃描器12提供,其在圖18中為清晰易讀并未畫(huà)出。[0255]當(dāng)由軌道表輸出總線30讀出直接分支類(lèi)型,其地址格式為BN2時(shí),其相應(yīng)的指令已經(jīng)至少在二級(jí)緩存中,所以不經(jīng)由主動(dòng)表91處理,直接將該BN2經(jīng)總線30,多選器901送往存儲(chǔ)器902如前例匹配BNl即可。如果未能在存儲(chǔ)器902中匹配到有效的BNlX分支目標(biāo)(即分支目標(biāo)指令尚未存儲(chǔ)在一級(jí)緩存中),其所在的二級(jí)子緩存塊都要立刻被填充進(jìn)一級(jí)緩存,其填充時(shí)處理方式如上,其中需要用到的該二級(jí)子緩存塊的對(duì)應(yīng)虛頁(yè)號(hào),標(biāo)簽低位及實(shí)頁(yè)號(hào)由BN2指向的主動(dòng)表1960中表項(xiàng)經(jīng)總線1803及總線1801提供給掃描器12。其他索引位等可由總線30直接向掃描器12提供。[0256]圖18、19以指令緩存為例。數(shù)據(jù)緩存也可以使用同樣的方法和主動(dòng)表91。與指令緩存的主要不同,是數(shù)據(jù)緩存由數(shù)據(jù)引擎代替掃描器12。當(dāng)從軌道表中讀出數(shù)據(jù)緩存地址DBNl時(shí),即以該地址控制一級(jí)數(shù)據(jù)緩存向處理器10提供數(shù)據(jù),并將該DBNl送往數(shù)據(jù)引擎與讀出的表項(xiàng)中含有的步長(zhǎng)相加以獲得猜測(cè)性地址。數(shù)據(jù)引擎在猜測(cè)性讀地址(Loadaddress)或?qū)懙刂?Storeaddress)超出邊界時(shí),將相應(yīng)的實(shí)地址或/與虛地址送往主動(dòng)表91匹配,在主動(dòng)表中作與圖18、19例中相同的操作后產(chǎn)生DBN2送往存儲(chǔ)器902匹配DBN1。然后將DBNl或DBN2送往軌道表中存儲(chǔ)進(jìn)原讀出的表項(xiàng)。過(guò)程相似,在此不再贅述。[0257]請(qǐng)參考圖20,其為本發(fā)明所述完整系統(tǒng)的一個(gè)實(shí)施例。在本實(shí)施例中的處理器10,主動(dòng)表91、掃描器12、相關(guān)表14、循跡器15、存儲(chǔ)器902、一級(jí)指令緩存16、一級(jí)數(shù)據(jù)緩存116以及數(shù)據(jù)引擎112均與圖13和圖18實(shí)施例相同。不同之處在于,本實(shí)施例中的二級(jí)緩存217是指令和數(shù)據(jù)共享的二級(jí)緩存,其中的二級(jí)存儲(chǔ)塊可以存儲(chǔ)指令或數(shù)據(jù)。相應(yīng)地,主動(dòng)表91中存儲(chǔ)了二級(jí)緩存217中二級(jí)存儲(chǔ)塊對(duì)應(yīng)的塊地址,其表項(xiàng)與二級(jí)緩存217中的存儲(chǔ)塊一一對(duì)應(yīng),用同一個(gè)BN2X指向。由于掃描器12輸出的目標(biāo)指令地址和數(shù)據(jù)引擎112輸出的預(yù)測(cè)數(shù)據(jù)地址都可能被送到主動(dòng)表91匹配,因此用一個(gè)三輸入的多選器1112代替了第二多選器912。又由于掃描器12輸出的BN和數(shù)據(jù)引擎112輸出的DBN都可能被送到存儲(chǔ)器902或軌道表13,因此用一個(gè)五輸入的多選器1105代替了四輸入的多選器901,用一個(gè)三輸入的多選器1111代替了二輸入的第一多選器911。[0258]在本實(shí)施例中,主動(dòng)表91如圖18和圖19實(shí)施例所述,內(nèi)部包含了TLB的功能,可以實(shí)現(xiàn)虛實(shí)地址轉(zhuǎn)換。需要說(shuō)明的是,雖然在本實(shí)施例采用了圖18和圖19實(shí)施例的TLB實(shí)現(xiàn)方式。然而,也可以使用前述其他任何一種TLB實(shí)現(xiàn)方式,并參考前例對(duì)所述結(jié)構(gòu)進(jìn)行相應(yīng)改動(dòng)。此外,為了便于顯示,在圖20中用總線1120代表了圖18實(shí)施例中的總線1801和1803。[0259]在本實(shí)施例中,當(dāng)處理器10執(zhí)行到間接分支指令時(shí)和執(zhí)行數(shù)據(jù)訪問(wèn)指令且發(fā)現(xiàn)預(yù)測(cè)數(shù)據(jù)地址不正確時(shí)均通過(guò)總線908、多選器1112將分支目標(biāo)地址或數(shù)據(jù)地址送往主動(dòng)表91匹配,后續(xù)操作如前例所述。而主動(dòng)表91則根據(jù)掃描器12通過(guò)907送來(lái)的BN2X或數(shù)據(jù)引擎112通過(guò)總線1107送來(lái)的DBN2X輸出相應(yīng)的二級(jí)指令塊地址或二級(jí)數(shù)據(jù)塊地址經(jīng)總線1120送到掃描器12或數(shù)據(jù)引擎112。除此以外,所有與指令相關(guān)的操作過(guò)程均與圖18和圖19中的相同,所有與數(shù)據(jù)相關(guān)的操作過(guò)程均與圖13、圖18或圖19中的相同。特別地,在數(shù)據(jù)引擎112中包含了是否超出頁(yè)面的判斷邏輯。當(dāng)預(yù)測(cè)數(shù)據(jù)地址位于本次數(shù)據(jù)地址同一個(gè)二級(jí)數(shù)據(jù)塊或該二級(jí)數(shù)據(jù)塊的前一個(gè)或后一個(gè)數(shù)據(jù)塊時(shí),操作過(guò)程如圖13所述。當(dāng)預(yù)測(cè)數(shù)據(jù)地址超出該范圍時(shí),數(shù)據(jù)引擎112輸出本次數(shù)據(jù)地址對(duì)應(yīng)DBN2X經(jīng)總線1107送到主動(dòng)表91讀出對(duì)應(yīng)的虛擬地址/物理地址后再經(jīng)總線1120送回?cái)?shù)據(jù)引擎按圖19實(shí)施例所述方法進(jìn)行后續(xù)操作。其余操作過(guò)程均可參考前例進(jìn)行,在此不再贅述。[0260]此外,在本說(shuō)明書(shū)中軌道表13中的數(shù)據(jù)點(diǎn)包含的均是DBN1。然而,也可以對(duì)所述結(jié)構(gòu)進(jìn)行修改,使得軌道表13中的數(shù)據(jù)點(diǎn)可以包含DBNl或DBN2。例如,當(dāng)預(yù)測(cè)數(shù)據(jù)地址對(duì)應(yīng)的數(shù)據(jù)已經(jīng)存儲(chǔ)在二級(jí)數(shù)據(jù)緩存中,但尚未存儲(chǔ)在一級(jí)數(shù)據(jù)緩存中時(shí),可以將相應(yīng)的DBN2作為軌跡點(diǎn)內(nèi)容寫(xiě)入該數(shù)據(jù)點(diǎn)中,等到循跡器15讀指針19指向該數(shù)據(jù)點(diǎn)時(shí),從二級(jí)數(shù)據(jù)緩存讀出相應(yīng)數(shù)據(jù)塊填充到一級(jí)數(shù)據(jù)緩存中,并將相應(yīng)數(shù)據(jù)旁路送給處理器10使用。具體操作過(guò)程可以參考前述實(shí)施例,在此不再贅述。[0261]在本發(fā)明所述的邊界判斷中,可以有多種方法對(duì)分支目標(biāo)指令地址(或下次數(shù)據(jù)地址)是否位于分支源指令(或本次數(shù)據(jù))所在存儲(chǔ)塊中進(jìn)行判斷?;镜?,可以如圖12所示,一將分支轉(zhuǎn)移距離中對(duì)應(yīng)BN2Y的部分與分支源指令的BN2Y相加得到的結(jié)果中對(duì)應(yīng)BN2Y的部分與其他部分的邊界稱(chēng)為CH1。以分支轉(zhuǎn)移距離是正數(shù)為例,若分支轉(zhuǎn)移距離在對(duì)應(yīng)BN2Y以外部分為全‘O’,且所述加法在CHl處的進(jìn)位輸出為‘1’,則此時(shí)分支目標(biāo)指令必定位于分支源指令所在二級(jí)指令塊的后一個(gè)二級(jí)指令塊中。[0262]然而,若分支轉(zhuǎn)移距離在對(duì)應(yīng)BN2Y以外部分中最低位為‘I’時(shí),分支目標(biāo)指令也有可能位于分支源指令所在二級(jí)指令塊的后一個(gè)二級(jí)指令塊中。例如,當(dāng)分支轉(zhuǎn)移距離中,除了對(duì)應(yīng)BN2Y以外部分中最低位為‘1’,其他所有位均為全‘0’時(shí),在CHl處沒(méi)有進(jìn)位輸出,此時(shí)分支目標(biāo)指令也是位于分支源指令所在二級(jí)指令塊的后一個(gè)二級(jí)指令塊中。因此,可以將所述CHl處的進(jìn)位輸出和分支轉(zhuǎn)移距離在BN2Y以外部分中最低位共同作為判斷分支目標(biāo)指令是否位于分支源指令所在二級(jí)指令塊的后一個(gè)二級(jí)指令塊的依據(jù)。所述方法也可以被應(yīng)用到分支轉(zhuǎn)移距離為負(fù)數(shù)的情況中。[0263]進(jìn)一步地,擴(kuò)展到更多層次緩存的情況中,可以對(duì)分支源指令本身在某一層次緩存對(duì)應(yīng)的塊內(nèi)偏移量(如BN1Y、BN2Y……)以外部分中的低位與分支轉(zhuǎn)移距離中的相應(yīng)位相加,判斷所述分支目標(biāo)是否位于該層次緩存中所述分支源指令所在的指令塊的前一或后一個(gè)指令塊中。類(lèi)似地,還可以對(duì)本次數(shù)據(jù)本身在某一層次緩存對(duì)應(yīng)的塊內(nèi)偏移量(如DBN1Y.DBN2Y……)以外部分中的低位與數(shù)據(jù)步長(zhǎng)中的相應(yīng)位相加,判斷所述下次數(shù)據(jù)是否位于該層次緩存中所述本次數(shù)據(jù)所在的數(shù)據(jù)塊順序地址的前一個(gè)或后一個(gè)數(shù)據(jù)塊中。[0264]在本發(fā)明中,掃描器對(duì)被填充到高層次緩存中的指令提取出指令類(lèi)型,并對(duì)分支指令計(jì)算分支目標(biāo)地址,其實(shí)質(zhì)是提取存在于程序中的控制流(controlflow)信息。所述提取的控制流信息至少包括指令類(lèi)型。對(duì)于分支指令,其提取的對(duì)應(yīng)控制流信息中還包含了分支目標(biāo)指令地址,該指令地址在主動(dòng)表中被映射為循跡地址(即緩存器地址)。所述控制流信息以類(lèi)型與循跡地址的方式被存儲(chǔ)在軌道表中。軌道表的分支點(diǎn)本身對(duì)應(yīng)分支源指令的循跡地址,其中存儲(chǔ)了分支目標(biāo)指令的循跡地址,且分支源指令的順序下一條指令所在的位置已經(jīng)隱含在軌道表的組織形式中,因此構(gòu)成了分支源指令的后續(xù)指令的兩個(gè)可能的分叉。根據(jù)本發(fā)明技術(shù)方案,當(dāng)循跡器讀指針指向的軌跡點(diǎn)中的指令類(lèi)型為非分支指令時(shí),讀指針移向順序下一個(gè)軌跡點(diǎn);當(dāng)循跡器讀指針指向的軌跡點(diǎn)中的指令類(lèi)型為無(wú)條件分支指令時(shí),讀指針移向分支目標(biāo)軌跡點(diǎn);當(dāng)循跡器讀指針指向的軌跡點(diǎn)中的指令類(lèi)型為條件分支指令時(shí),根據(jù)處理器產(chǎn)生的TAKEN信號(hào),讀指針移向順序下一個(gè)軌跡點(diǎn)或分支目標(biāo)軌跡點(diǎn)。循跡器讀指針可以從任何一個(gè)分支點(diǎn)出發(fā),根據(jù)軌跡點(diǎn)類(lèi)型和/或處理器對(duì)分支點(diǎn)的執(zhí)行情況,到達(dá)其順序地址后續(xù)指令中的第一個(gè)分支點(diǎn)或其分支目標(biāo)指令及其后指令中的第一個(gè)分支點(diǎn)。因此,在軌道表中的控制流信息以二叉樹(shù)形式存在,其中每個(gè)分支點(diǎn)對(duì)應(yīng)一條分支指令。所述二叉樹(shù)是完整的二叉樹(shù),包含了相鄰分支點(diǎn)之間的路徑信息,從而可以由一個(gè)分支點(diǎn)出發(fā)到達(dá)其兩個(gè)分叉上各一個(gè)相鄰的后續(xù)分支點(diǎn)。[0265]此外,圖13實(shí)施例中的存儲(chǔ)器902與圖9實(shí)施例中存儲(chǔ)器902類(lèi)似,其中每行除了包含一級(jí)數(shù)據(jù)塊的DBNlX和二級(jí)數(shù)據(jù)塊的DBN2X的對(duì)應(yīng)關(guān)系外,還包含了每個(gè)DBN2X的前一個(gè)二級(jí)數(shù)據(jù)塊或后一個(gè)二級(jí)數(shù)據(jù)塊在主動(dòng)表91中的位置信息。這樣,可以如圖9實(shí)施例那樣,當(dāng)下次數(shù)據(jù)地址位于本次數(shù)據(jù)地址所在二級(jí)數(shù)據(jù)塊的前一個(gè)或后一個(gè)數(shù)據(jù)塊時(shí),由所述本次數(shù)據(jù)地址所在二級(jí)數(shù)據(jù)塊的塊號(hào)作為尋址地址對(duì)存儲(chǔ)器902尋址,讀出存儲(chǔ)在其中的前一個(gè)或后一個(gè)數(shù)據(jù)塊號(hào),從而減少主動(dòng)表匹配次數(shù)。[0266]進(jìn)一步地,根據(jù)本發(fā)明技術(shù)方案,當(dāng)主動(dòng)表中存儲(chǔ)連續(xù)地址的前一存儲(chǔ)塊(指令塊或數(shù)據(jù)塊)和后一存儲(chǔ)塊的位置信息時(shí),不但可以根據(jù)該信息找到分支源指令或本次數(shù)據(jù)所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊中的分支目標(biāo)指令或下次數(shù)據(jù),還可以重復(fù)相同方法若干次,以找到位于更遠(yuǎn)位置的存儲(chǔ)塊中的分支目標(biāo)指令或下次數(shù)據(jù),減少主動(dòng)表匹配次數(shù)。例如,如圖9實(shí)施例中,若掃描器根據(jù)其中加法器的計(jì)算結(jié)果(即進(jìn)位輸出情況),發(fā)現(xiàn)分支目標(biāo)指令位于分支源指令所在指令塊之后連續(xù)地址的第二個(gè)指令塊,則掃描器輸出所述分支源指令對(duì)應(yīng)的BN2X對(duì)主動(dòng)表尋址,讀出對(duì)應(yīng)的后一指令塊的BN2X,再根據(jù)該后一指令塊的BN2X對(duì)主動(dòng)表尋址,讀出該后一指令塊的后一指令塊的BN2X,即分支源指令所在指令塊之后連續(xù)地址的第二個(gè)指令塊,從而用兩次尋址的方式避免了主動(dòng)表中的匹配。對(duì)于分支目標(biāo)指令離分支源指令更遠(yuǎn)的情況,只要兩者之間所有指令塊的所述前一或后一指令塊位置信息均存在且有效,即可通過(guò)多次尋址的方式,最終從主動(dòng)表中讀出分支目標(biāo)指令對(duì)應(yīng)的BN2X。對(duì)于更多層緩存的情況,以及對(duì)于數(shù)據(jù)緩存,也可以用類(lèi)似方法操作,在此不再贅述。此外,在本發(fā)明所述的虛實(shí)地址轉(zhuǎn)換模塊,或包含虛實(shí)地址轉(zhuǎn)換關(guān)系的主動(dòng)表中,也可以用同樣方法找到更遠(yuǎn)的頁(yè)面(如前一頁(yè)面的前一頁(yè)面,或后一頁(yè)面的后一頁(yè)面),具體操作在此不再贅述。[0267]在本發(fā)明中,對(duì)于間接分支指令,可以等待處理器執(zhí)行到該指令時(shí)產(chǎn)生分支目標(biāo)指令地址,再將該地址送往主動(dòng)表轉(zhuǎn)換為循跡地址,或?qū)⒃摰刂方?jīng)TLB轉(zhuǎn)換后送往主動(dòng)表轉(zhuǎn)換為循跡地址。由于在本發(fā)明中,不同格式的循跡地址對(duì)應(yīng)不同層次的緩存,其中的BNX對(duì)應(yīng)相應(yīng)層次緩存中的一個(gè)存儲(chǔ)塊,BNY對(duì)應(yīng)該存儲(chǔ)塊中的一個(gè)存儲(chǔ)單元,因此,循跡地址就是緩存地址。即,可以根據(jù)循跡地址直接在相應(yīng)層次的緩存中找到對(duì)應(yīng)的指令,從而避免了標(biāo)簽匹配。然而,也可以增加一個(gè)額外的專(zhuān)用模塊,由該專(zhuān)用模塊生成間接分支目標(biāo)指令地址。例如,若間接分支目標(biāo)地址是由寄存器值加上立即數(shù)產(chǎn)生,則可以由該專(zhuān)用模塊從處理器獲取寄存器堆中相應(yīng)寄存器值,并由掃描器將提取到的間接分支指令中的立即數(shù)送到該專(zhuān)用模塊,由該專(zhuān)用模塊對(duì)兩者相加,從而得到間接分支目標(biāo)地址?;蛘?,可以在該專(zhuān)用模塊中包含寄存器堆的副本,當(dāng)處理器中的寄存器堆有寄存器更新時(shí),同時(shí)更新該副本中的相應(yīng)寄存器,因此,只需要將掃描器提取到的間接分支指令中的立即數(shù)送到該專(zhuān)用模塊,即可計(jì)算間接分支目標(biāo)地址。由此,所有分支指令的分支目標(biāo)地址均不由處理器產(chǎn)生。[0268]在本發(fā)明中,根據(jù)分支目標(biāo)指令或下次數(shù)據(jù)位于緩存層次的不同,軌道表中的軌跡點(diǎn)內(nèi)容包含的循跡地址也不同。以分支點(diǎn)為例,當(dāng)其分支目標(biāo)指令位于一級(jí)緩存中時(shí),則該分支點(diǎn)中包含的循跡地址為BNl;當(dāng)其分支目標(biāo)指令位于二級(jí)緩存中時(shí),則該分支點(diǎn)中包含的循跡地址為BN2;當(dāng)其分支目標(biāo)指令位于其他層次緩存時(shí),也可以此類(lèi)推。數(shù)據(jù)點(diǎn)中循跡地址的情況也類(lèi)似。此外,由于本發(fā)明提前將分支目標(biāo)指令或下次數(shù)據(jù)至少填充到最低層次的緩存中,因此軌跡點(diǎn)中只包含能直接對(duì)各層次緩存尋址的循跡地址(BN或DBN),而不會(huì)包含主存儲(chǔ)器地址(如指令地址PC或數(shù)據(jù)地址)。掃描器輸出的地址則可以是循跡地址或指令地址,而數(shù)據(jù)引擎輸出的地址也可以是循跡地址或數(shù)據(jù)地址。以圖9實(shí)施例中的掃描器12為例,其通過(guò)總線907輸出的可以是BN1、BN2或分支目標(biāo)指令地址。具體地,當(dāng)分支目標(biāo)指令位于分支源指令同一個(gè)一級(jí)指令塊中時(shí),掃描器12通過(guò)總線907直接輸出分支目標(biāo)指令對(duì)應(yīng)的BN1,用于寫(xiě)入軌道表13;當(dāng)分支目標(biāo)指令位于分支源指令同一個(gè)二級(jí)指令塊中的不同一級(jí)指令塊時(shí),掃描器12通過(guò)總線907輸出BN2,用于到存儲(chǔ)器902中轉(zhuǎn)換為分支目標(biāo)指令對(duì)應(yīng)的BNl后再寫(xiě)入軌道表13;當(dāng)分支目標(biāo)指令位于分支源指令所在二級(jí)指令塊的前一或后一個(gè)二級(jí)指令塊時(shí),掃描器12通過(guò)總線907輸出BN2,用于到主動(dòng)表91中讀出所述前一或后一個(gè)二級(jí)指令塊的BN2X再如前例得到分支目標(biāo)指令對(duì)應(yīng)的BNl后再寫(xiě)入軌道表13;對(duì)于其他情況,掃描器12則通過(guò)總線907輸出計(jì)算得到的分支目標(biāo)指令地址到主動(dòng)表91匹配,并如前例得到對(duì)應(yīng)的BNl后再寫(xiě)入軌道表13。因此,掃描器12在完成對(duì)分支目標(biāo)指令所在位置判斷后,可以產(chǎn)生一個(gè)地址類(lèi)型號(hào),所述地址類(lèi)型號(hào)用于表示總線907上的是哪一類(lèi)地址,從而控制相應(yīng)模塊進(jìn)行后續(xù)操作。例如,在本實(shí)施例中,可以用一個(gè)2位的地址類(lèi)型號(hào)表示上述4種情況??偩€907在輸出所述循跡地址或分支目標(biāo)地址的同時(shí),也輸出該地址類(lèi)型號(hào)到主動(dòng)表91、存儲(chǔ)器902、軌道表13等相關(guān)模塊。這樣,即可用同一總線907傳送不同類(lèi)型的地址,以減少總線的數(shù)目。[0269]對(duì)于本發(fā)明中其他實(shí)施例,則可以用更多位數(shù)的地址類(lèi)型號(hào)代表更多種情況。例如,對(duì)于圖17實(shí)施例,總線1506上的地址格式除了BNl和BN2(包含同一個(gè)二級(jí)指令塊和前一或后一個(gè)二級(jí)指令塊三種情況)外,還可以是虛擬地址或物理地址,因此共6種情況,可以用3位的地址類(lèi)型號(hào)表示。對(duì)于更多層次緩存(即有更多種循跡地址)的情況,以及數(shù)據(jù)引擎輸出的地址情況,均可按此類(lèi)推,在此不再贅述。[0270]此外,根據(jù)本發(fā)明技術(shù)方案,當(dāng)分支目標(biāo)指令地址或下次數(shù)據(jù)地址位于分支源指令地址或本次數(shù)據(jù)地址同一頁(yè)面中時(shí),還可以有更靈活的方法實(shí)現(xiàn)TLB轉(zhuǎn)換。下面依然以圖15實(shí)施例為例進(jìn)行說(shuō)明,對(duì)于數(shù)據(jù)也可以此類(lèi)推。在圖15實(shí)施例中,主動(dòng)表91分別通過(guò)總線1505和1504輸出分支源指令的物理地址和虛擬地址到掃描器12,供掃描器12計(jì)算分支目標(biāo)指令的物理地址和虛擬地址時(shí)使用。[0271]當(dāng)掃描器12中如前例計(jì)算分支目標(biāo)指令物理地址時(shí),若發(fā)現(xiàn)分支目標(biāo)指令地址位于分支源地址同一頁(yè)面中,則掃描器12通過(guò)總線1506輸出分支目標(biāo)指令物理地址經(jīng)選擇器1508、總線1509到主動(dòng)表91與存儲(chǔ)在其中的物理地址匹配,后續(xù)操作與前述一致。[0272]若發(fā)現(xiàn)分支目標(biāo)指令地址位于分支源地址所在頁(yè)面的上一個(gè)或于一個(gè)頁(yè)面中,則掃描器12通過(guò)總線1512輸出主動(dòng)表91送來(lái)的分支源指令物理地址中的物理地址頁(yè)號(hào)經(jīng)選擇后到TLB1301與存儲(chǔ)在其中的物理地址頁(yè)號(hào)匹配。若物理地址頁(yè)號(hào)匹配成功,則以匹配成功項(xiàng)中存儲(chǔ)塊1510或1511中存儲(chǔ)的上一個(gè)或下一個(gè)頁(yè)面所在行號(hào)為尋址地址,對(duì)TLB1301尋址找到所述上一個(gè)或下一個(gè)頁(yè)面所在的行,并從中讀出物理地址頁(yè)號(hào)經(jīng)總線1507送出并被選擇器1508選擇后,與掃描器12通過(guò)總線1506輸出的標(biāo)簽低位合并構(gòu)成物理地址,經(jīng)總線1509到主動(dòng)表91與存儲(chǔ)在其中的物理地址匹配,后續(xù)操作與前述一致。若物理地址頁(yè)號(hào)匹配不成功,則填充TLB等后續(xù)操作與前述一致,[0273]若發(fā)現(xiàn)分支目標(biāo)指令地址不在分支源地址所在頁(yè)面及其上一個(gè)或下一個(gè)頁(yè)面中,則掃描器12通過(guò)總線1512輸出計(jì)算得到的分支目標(biāo)指令虛擬地址中的虛頁(yè)號(hào)經(jīng)選擇后到TLB1301與存儲(chǔ)在其中的虛頁(yè)號(hào)匹配,后續(xù)操作與前述一致。[0274]在圖19實(shí)施例中,抗混疊表1950的域1910中存儲(chǔ)了虛頁(yè)號(hào),該虛頁(yè)號(hào)與域1912中的BN2X指向的主動(dòng)表行中的物理地址頁(yè)號(hào)構(gòu)成一對(duì)虛實(shí)地址對(duì)(該主動(dòng)表行中的虛頁(yè)號(hào)和物理地址頁(yè)號(hào)本身也構(gòu)成一對(duì)虛實(shí)地址對(duì),因此多個(gè)虛頁(yè)面對(duì)應(yīng)一個(gè)物理地址頁(yè)面),使得包含抗混疊表1950的主動(dòng)表91能夠?qū)崿F(xiàn)TLB的功能。進(jìn)一步地,在域1910中還可以存儲(chǔ)相應(yīng)的標(biāo)簽低位(對(duì)應(yīng)域1904中的標(biāo)簽低位),構(gòu)成二級(jí)存儲(chǔ)塊虛擬地址,使得一旦在抗混疊表1950中匹配成功,即可直接找到對(duì)應(yīng)的二級(jí)指令塊,而不需要如圖19實(shí)施例那樣讀出物理地址頁(yè)號(hào)、構(gòu)成二級(jí)指令塊物理地址后再匹配。[0275]在本發(fā)明中,如圖20所示,指令和數(shù)據(jù)可以共享二級(jí)緩存217,并各自有獨(dú)立的一級(jí)緩存(如一級(jí)指令緩存16和一級(jí)數(shù)據(jù)緩存116)。此時(shí),在主動(dòng)表91中存儲(chǔ)了二級(jí)緩存中各個(gè)存儲(chǔ)塊包含的指令塊或數(shù)據(jù)塊的塊地址,且在二級(jí)緩存217中,無(wú)論指令還是數(shù)據(jù)均采用BN2格式的循跡地址。由于在存儲(chǔ)器902中存儲(chǔ)了從BN2轉(zhuǎn)換為一級(jí)緩存循跡地址(BNl或DBN1)的對(duì)應(yīng)關(guān)系,因此軌道表13中的軌跡點(diǎn)包含的循跡地址可以是BN1、DBN1或BN2,且所述BN2可以按前例所述方法被轉(zhuǎn)換BNl或DBNl。對(duì)于更多層次緩存的情況,無(wú)論有多少層次的低層次緩存是指令和數(shù)據(jù)共享的緩存,均可以采用同樣方法確定循跡地址,并將低層次緩存對(duì)應(yīng)的循跡地址轉(zhuǎn)換為高層次緩存對(duì)應(yīng)的循跡地址。[0276]根據(jù)本發(fā)明技術(shù)方案和構(gòu)思,還可以有其他任何合適的改動(dòng)。對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),所有這些替換、調(diào)整和改進(jìn)都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。【權(quán)利要求】1.一種指令處理系統(tǒng),其特征在于,包括:m個(gè)存取速度不同的存儲(chǔ)器,所述m個(gè)存取速度不同的存儲(chǔ)器均用以存儲(chǔ)指令;指令控制器,所述指令控制器包括軌道表,所述軌道表存儲(chǔ)速度最高存儲(chǔ)器中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,所述分支指令的目標(biāo)指令存儲(chǔ)在所述m個(gè)存取速度不同的存儲(chǔ)器中的至少一個(gè)存儲(chǔ)器中;所述指令控制器用以根據(jù)所述軌道表中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供指令;其中,所述m為大于等于2的自然數(shù)。2.如權(quán)利要求1所述的指令處理系統(tǒng),其特征在于,還包括主動(dòng)表,所述主動(dòng)表存儲(chǔ)速度最低存儲(chǔ)器中存儲(chǔ)的指令的塊地址,及所述速度最低存儲(chǔ)器中存儲(chǔ)的指令在另外m-Ι個(gè)存儲(chǔ)器中存儲(chǔ)有時(shí),在該另外m-Ι個(gè)存儲(chǔ)器中的循跡地址。3.如權(quán)利要求2所述的指令處理系統(tǒng),其特征在于,所述分支指令的目標(biāo)指令的循跡地址包括行號(hào)和列號(hào);所述分支指令的目標(biāo)指令的塊地址經(jīng)主動(dòng)表匹配后,得到所述循跡地址中的行號(hào);所述分支指令的目標(biāo)指令在指令塊中的偏移量為循跡地址中的列號(hào)。4.如權(quán)利要求3所述的指令處理系統(tǒng),其特征在于,所述指令控制器還包括循跡器,所述循跡器根據(jù)軌道表中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,提前移動(dòng)并指向第一層分支指令,并從軌道表中讀出該第一層分支指令的目標(biāo)指令的循跡地址;當(dāng)所述循跡器發(fā)現(xiàn)該目標(biāo)指令的循跡地址對(duì)應(yīng)速度最高的存儲(chǔ)器時(shí),則從所述速度最高的存儲(chǔ)器向處理器提供指令;當(dāng)所述循跡器發(fā)現(xiàn)該目標(biāo)指令的循跡地址對(duì)應(yīng)速度最高的存儲(chǔ)器以外的m-Ι個(gè)存儲(chǔ)器時(shí),所述m-Ι個(gè)存儲(chǔ)器提前向處理器和/或所述速度最高的存儲(chǔ)器提供指令。5.如權(quán)利要求4所述的指令處理系統(tǒng),其特征在于,所述循跡器包括一個(gè)寄存器、一個(gè)增量器及一個(gè)選擇器,其中,所述寄存器中存儲(chǔ)了第一層分支指令的循跡地址,該循跡地址被用于在軌道表中尋址以讀出對(duì)應(yīng)的目標(biāo)指令的循跡地址;所述增量器用以得到第一層分支指令段的下一個(gè)分支指令的循跡地址;所述選擇器用以選出第一層分支指令的目標(biāo)指令的循跡地址及第一層分支指令段的下一個(gè)分支指令的循跡地址中的一個(gè),并將選出的循跡地址存儲(chǔ)到所述寄存器中。6.如權(quán)利要求4所述的指令處理系統(tǒng),其特征在于,所述指令控制器還包括預(yù)測(cè)器,所述預(yù)測(cè)器用以獲取所述循跡器指向的分支指令段之后的分支指令段。7.如權(quán)利要求6所述的指令處理系統(tǒng),其特征在于,所述預(yù)測(cè)器用以獲取第一層分支指令段之后的第η層分支指令段,并控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供尚未存儲(chǔ)在所述存儲(chǔ)速度高的存儲(chǔ)器中的第η層分支指令段,其中,η為自然數(shù)。8.如權(quán)利要求7所述的指令處理系統(tǒng),其特征在于,所述預(yù)測(cè)器包括2η個(gè)寄存器、一個(gè)增量器及一個(gè)選擇器,其中,所述增量器用以得到所述第η層分支指令段中分支指令的循跡地址,所述2η個(gè)寄存器分別用以存儲(chǔ)第η層分支指令段中分支指令的循跡地址,所述選擇器用以選出向所述軌道表尋址的分支指令的循跡地址,以得到所述分支指令的目標(biāo)指令的循跡地址。9.如權(quán)利要求8所述的指令處理系統(tǒng),其特征在于,在所述預(yù)測(cè)器中,只使用部分寄存器,從而記錄少于η層的若干層分支指令的循跡地址,以調(diào)整預(yù)測(cè)的深度;或者不使用任何寄存器,從而在功能上關(guān)閉預(yù)測(cè)器。10.如權(quán)利要求2所述的指令處理系統(tǒng),其特征在于,所述指令控制器包括預(yù)測(cè)循跡器,所述預(yù)測(cè)循跡器用以獲取第一層分支指令段之后的第η層分支指令段,并控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供尚未存儲(chǔ)在所述存儲(chǔ)速度高的存儲(chǔ)器中的第η層分支指令段,其中,η為自然數(shù)。11.如權(quán)利要求10所述的指令處理系統(tǒng),其特征在于,所述預(yù)測(cè)循跡器包括2η+1-2個(gè)寄存器、一個(gè)增量器及η+1層選擇器,其中,所述增量器用以得到所述第η層分支指令段中分支指令的循跡地址,所述2η+1-2個(gè)寄存器分別用以存儲(chǔ)從第I層到第η層分支指令段中分支指令的循跡地址,所述η+1層選擇器用于根據(jù)分支指令的分支轉(zhuǎn)移是否發(fā)生的信息依次裁剪不會(huì)被執(zhí)行的分支指令段對(duì)應(yīng)的循跡地址。12.如權(quán)利要求11所述的指令處理系統(tǒng),其特征在于,經(jīng)所述裁剪后輸出的循跡地址指向第一層分支指令;根據(jù)所述循跡地址能夠從軌道表中讀出該第一層分支指令的目標(biāo)指令的循跡地址;根據(jù)該目標(biāo)指令的循跡地址,能夠從所述速度最高的存儲(chǔ)器向處理器提供指令。13.如權(quán)利要求11所述的指令處理系統(tǒng),其特征在于,在所述預(yù)測(cè)循跡器中,只使用部分寄存器,從而記錄少于η層的若干層分支指令的循跡地址,以調(diào)整預(yù)測(cè)的深度;或者不使用其中2η+1-4個(gè)寄存器,從而只實(shí)現(xiàn)提前移動(dòng)并指向第一層分支指令的功能。14.如權(quán)利要求3所述的指令處理系統(tǒng),其特征在于,還包括掃描器,所述掃描器用以計(jì)算存儲(chǔ)器提供的指令中的分支指令的目標(biāo)指令的塊地址,并將所述分支指令的目標(biāo)指令的塊地址送到主動(dòng)表進(jìn)行匹配,以得到對(duì)應(yīng)的循跡地址。15.如權(quán)利要求14所述的指令處理系統(tǒng),其特征在于,當(dāng)匹配結(jié)果顯示所述分支指令的目標(biāo)指令在速度高的存儲(chǔ)器中未存儲(chǔ)有時(shí),主動(dòng)表控制速度低的存儲(chǔ)器提供該分支指令的目標(biāo)指令。16.如權(quán)利要求1所述的指令處理系統(tǒng),其特征在于,還包括第一緩沖存儲(chǔ)器,所述第一緩沖存儲(chǔ)器用以暫存速度低的存儲(chǔ)器向速度最高的存儲(chǔ)器提供的指令。17.如權(quán)利要求16所述的指令處理系統(tǒng),其特征在于,所述第一緩沖存儲(chǔ)器包括2η+1-3個(gè)寄存器及2η-2個(gè)選擇器,其中,2η+1-3個(gè)寄存器用以存儲(chǔ)從第I層到第η-l層的分支指令段,2η-2個(gè)選擇器用以選出向速度最高的存儲(chǔ)器輸出的分支指令段。18.如權(quán)利要求17所述的指令處理系統(tǒng),其特征在于,還包括第二緩沖存儲(chǔ)器,所述第二緩沖存儲(chǔ)器用以暫存未被選出向速度最高的存儲(chǔ)器輸出的分支指令段;所述循跡器通過(guò)循跡地址匹配的方式在所述第二緩沖存儲(chǔ)器中查找速度最高的存儲(chǔ)器及第一緩沖存儲(chǔ)器中未包含的指令。19.一種指令處理方法,其特征在于,所使用的軌道表及存儲(chǔ)速度最高的存儲(chǔ)器行行對(duì)應(yīng),所述方法包括:步驟10、根據(jù)軌道表中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供指令。20.如權(quán)利要求19所述的指令處理方法,其特征在于,在步驟10之前還包括:步驟9、通過(guò)對(duì)分支指令的目標(biāo)指令的塊地址的匹配,得到所述目標(biāo)指令對(duì)應(yīng)的循跡地址中的行號(hào);所述目標(biāo)指令在指令塊中的偏移量為所述目標(biāo)指令對(duì)應(yīng)的循跡地址中的列號(hào)。21.如權(quán)利要求20所述的指令處理方法,其特征在于,所述步驟10包括:步驟10Α、根據(jù)軌道表中存儲(chǔ)的分支指令的目標(biāo)指令的循跡地址,提前找到第一層分支指令,并從軌道表中讀出該第一層分支指令的目標(biāo)指令的循跡地址;當(dāng)該目標(biāo)指令的循跡地址對(duì)應(yīng)速度最高的存儲(chǔ)器時(shí),則從所述速度最高的存儲(chǔ)器向處理器提供指令;當(dāng)該目標(biāo)指令的循跡地址對(duì)應(yīng)速度最高的存儲(chǔ)器以外的m-Ι個(gè)存儲(chǔ)器時(shí),所述m-Ι個(gè)存儲(chǔ)器提前向處理器和/或所述速度最高的存儲(chǔ)器提供指令。22.如權(quán)利要求21所述的指令處理方法,其特征在于,所述步驟10還包括:步驟10B、獲取第一層分支指令段之后的第η層分支指令段,并控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供尚未存儲(chǔ)在所述存儲(chǔ)速度高的存儲(chǔ)器中的第η層分支指令段。23.如權(quán)利要求20所述的指令處理方法,其特征在于,所述步驟10包括:步驟10Α、獲取第一層分支指令段之后的第η層分支指令段,并控制存儲(chǔ)速度低的存儲(chǔ)器向存儲(chǔ)速度高的存儲(chǔ)器提供尚未存儲(chǔ)在所述存儲(chǔ)速度高的存儲(chǔ)器中的第η層分支指令段。24.如權(quán)利要求23所述的指令處理方法,其特征在于,所述步驟10還包括:步驟10Β、根據(jù)分支指令的分支轉(zhuǎn)移是否發(fā)生的信息依次裁剪不會(huì)被執(zhí)行的分支指令段對(duì)應(yīng)的循跡地址。25.如權(quán)利要求24所述的指令處理方法,其特征在于,所述步驟10還包括:步驟10C、經(jīng)所述裁剪后輸出的循跡地址指向第一層分支指令;根據(jù)所述循跡地址能夠從軌道表中讀出該第一層分支指令的目標(biāo)指令的循跡地址;根據(jù)該目標(biāo)指令的循跡地址,能夠從所述速度最高的存儲(chǔ)器向處理器提供指令。26.如權(quán)利要求20所述的指令處理方法,其特征在于,所述步驟9包括:步驟9Α、計(jì)算存儲(chǔ)器提供的指令中的分支指令的目標(biāo)指令的塊地址,并通過(guò)對(duì)所述分支指令的目標(biāo)指令的塊地址的匹配,得到所述目標(biāo)指令對(duì)應(yīng)的循跡地址中的行號(hào);所述目標(biāo)指令在指令塊中的偏移量為所述目標(biāo)指令對(duì)應(yīng)的循跡地址中的列號(hào)。27.如權(quán)利要求26所述的指令處理方法,其特征在于,所述步驟9還包括:步驟9Β、當(dāng)匹配結(jié)果顯示所述分支指令的目標(biāo)指令在速度高的存儲(chǔ)器中未存儲(chǔ)有時(shí),主動(dòng)表控制速度低的存儲(chǔ)器提供該分支指令的目標(biāo)指令。28.如權(quán)利要求3所述的指令處理系統(tǒng),其特征在于,指令控制器還包括循跡器,所述循跡器以該讀指針值作為循跡地址對(duì)軌道表和速度最高的存儲(chǔ)器尋址,讀出軌跡點(diǎn)內(nèi)容并據(jù)此更新讀指針值,同時(shí)讀出指令供處理器執(zhí)行。29.如權(quán)利要求1所述的指令處理系統(tǒng),其特征在于,當(dāng)指令控制器從所述軌道表的軌跡點(diǎn)中讀出的指令類(lèi)型顯示為間接分支指令時(shí),由處理器執(zhí)行該指令并產(chǎn)生分支目標(biāo)地址后,再轉(zhuǎn)換為循跡地址。30.如權(quán)利要求29所述的指令處理系統(tǒng),其特征在于,處理器產(chǎn)生的所述間接分支目標(biāo)地址被主動(dòng)表轉(zhuǎn)換為循跡地址并存儲(chǔ)在軌道表的相應(yīng)軌跡點(diǎn)中;當(dāng)循跡器讀指針再次指向該軌跡點(diǎn)時(shí),當(dāng)作直接分支點(diǎn)猜測(cè)執(zhí)行,并將處理器此時(shí)產(chǎn)生的分支目標(biāo)地址與該軌跡點(diǎn)中循跡地址對(duì)應(yīng)的指令地址進(jìn)行比較;若兩者相等,則該猜測(cè)是正確的,可以繼續(xù)后續(xù)操作;若兩者不等,則該猜測(cè)是錯(cuò)誤的,用所述處理器產(chǎn)生的分支目標(biāo)地址轉(zhuǎn)換為循跡地址,再進(jìn)行后續(xù)操作。31.如權(quán)利要求2所述的指令處理系統(tǒng),其特征在于,根據(jù)分支目標(biāo)指令或數(shù)據(jù)位于存儲(chǔ)器層次的不同,軌道表的軌跡點(diǎn)中存儲(chǔ)了不同格式的循跡地址;不同格式的循跡地址對(duì)應(yīng)不同層次的存儲(chǔ)器;根據(jù)主動(dòng)表中存儲(chǔ)的信息,可以對(duì)不同層次緩存的循跡地址進(jìn)行轉(zhuǎn)換。32.如權(quán)利要求31所述的指令處理系統(tǒng),其特征在于,當(dāng)指令控制器從所述軌道表的軌跡點(diǎn)中讀出的是對(duì)應(yīng)速度較低的存儲(chǔ)器的循跡地址時(shí),該循跡地址被送到主動(dòng)表轉(zhuǎn)換為對(duì)應(yīng)速度較高的存儲(chǔ)器的循跡地址并填回軌道表的該的軌跡點(diǎn)中,同時(shí)將對(duì)應(yīng)的指令塊或數(shù)據(jù)塊從速度較低的存儲(chǔ)器存儲(chǔ)到速度較高的存儲(chǔ)器中。33.如權(quán)利要求2所述的指令處理系統(tǒng),其特征在于,當(dāng)速度最低存儲(chǔ)器中一個(gè)存儲(chǔ)塊對(duì)應(yīng)的順序地址的前一存儲(chǔ)塊或后一存儲(chǔ)塊已經(jīng)存儲(chǔ)在所述速度最低存儲(chǔ)器中時(shí),主動(dòng)表中還存儲(chǔ)了該存儲(chǔ)塊對(duì)應(yīng)的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊在所述速度最低存儲(chǔ)器中的存儲(chǔ)位置信息。34.如權(quán)利要求33所述的指令處理系統(tǒng),其特征在于,當(dāng)指令或數(shù)據(jù)地址位于速度最低存儲(chǔ)器中當(dāng)前存儲(chǔ)塊的前一存儲(chǔ)塊或后一存儲(chǔ)塊中時(shí),可以根據(jù)存儲(chǔ)在主動(dòng)表中的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息,直接在速度最低存儲(chǔ)器中找到該指令或數(shù)據(jù)。35.如權(quán)利要求14所述的指令處理系統(tǒng),其特征在于,在所述掃描器中對(duì)分支目標(biāo)指令地址進(jìn)行邊界判斷;根據(jù)所述判斷結(jié)果,對(duì)位于不同位置的分支目標(biāo)指令給予不同格式的地址;或所述指令處理系統(tǒng)還包含一個(gè)數(shù)據(jù)引擎,在所述數(shù)據(jù)引擎中對(duì)數(shù)據(jù)訪問(wèn)指令的下次數(shù)據(jù)地址進(jìn)行邊界判斷;根據(jù)所述判斷結(jié)果,對(duì)位于不同位置的下次數(shù)據(jù)給予不同格式的地址。36.如權(quán)利要求35所述的指令處理系統(tǒng),其特征在于,若分支目標(biāo)指令地址位于分支源指令在至少一個(gè)層次存儲(chǔ)器的同一存儲(chǔ)塊中,則以該分支目標(biāo)指令在這些層次的存儲(chǔ)器中的較高層次存儲(chǔ)器循跡地址作為該分支目標(biāo)指令的循跡地址,且以該分支源指令循跡地址中的BNX作為該分支目標(biāo)指令循跡地址中的BNX,以該分支目標(biāo)指令地址中對(duì)應(yīng)所述層次存儲(chǔ)器的BNY部分作為該分支目標(biāo)指令循跡地址中的BNY。37.如權(quán)利要求36所述的指令處理系統(tǒng),其特征在于,在所述掃描器中若分支目標(biāo)指令地址位于分支源指令在某一層次存儲(chǔ)器中所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊中,則以該分支目標(biāo)指令在該層次存儲(chǔ)器循跡地址作為該分支目標(biāo)指令的循跡地址,且以該分支源指令所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊的BNX作為該分支目標(biāo)指令循跡地址中的BNX,以該分支目標(biāo)指令地址中對(duì)應(yīng)所述層次存儲(chǔ)器的BNY部分作為該分支目標(biāo)指令循跡地址中的BNY。38.如權(quán)利要求36所述的指令處理系統(tǒng),其特征在于:在所述掃描器中還包含一個(gè)加法器,用于對(duì)分支源指令本身在某一層次存儲(chǔ)器對(duì)應(yīng)的塊內(nèi)偏移量與分支轉(zhuǎn)移距離中對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量的部分相加,產(chǎn)生進(jìn)位輸出;當(dāng)所述分支轉(zhuǎn)移距離為正數(shù)或零時(shí),若所述分支轉(zhuǎn)移距離對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量以外部分為全‘O’,且所述進(jìn)位輸出為‘O’,則所述分支目標(biāo)位于該層次存儲(chǔ)器中所述分支源指令所在的指令塊中;當(dāng)所述分支轉(zhuǎn)移距離為負(fù)數(shù)時(shí),若所述分支轉(zhuǎn)移距離對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量以外部分為全‘I’,且所述進(jìn)位輸出為‘I’,則所述分支目標(biāo)位于所述分支源指令所在的指令塊中。39.如權(quán)利要求38所述的指令處理系統(tǒng),其特征在于,所述加法器還進(jìn)一步對(duì)分支源指令本身在某一層次存儲(chǔ)器對(duì)應(yīng)的塊內(nèi)偏移量以外部分中的低位與分支轉(zhuǎn)移距離中的相應(yīng)位相加,判斷所述分支目標(biāo)是否位于該層次存儲(chǔ)器中所述分支源指令所在的指令塊順序地址的前一個(gè)或后一個(gè)指令塊中。40.如權(quán)利要求36所述的指令處理系統(tǒng),其特征在于,若下次數(shù)據(jù)地址位于本次數(shù)據(jù)在至少一個(gè)層次存儲(chǔ)器的同一存儲(chǔ)塊中,則以該下次數(shù)據(jù)在這些層次的存儲(chǔ)器中的較高層次存儲(chǔ)器循跡地址作為該下次數(shù)據(jù)的循跡地址,且以該本次數(shù)據(jù)的循跡地址中的DBNX作為該下次數(shù)據(jù)的循跡地址中的DBNX,以該下次數(shù)據(jù)中對(duì)應(yīng)所述層次存儲(chǔ)器的DBNY部分作為該下次數(shù)據(jù)的循跡地址中的DBNY。41.如權(quán)利要求40所述的指令處理系統(tǒng),其特征在于,在所述數(shù)據(jù)引擎中:若下次數(shù)據(jù)地址位于本次數(shù)據(jù)在某一層次存儲(chǔ)器中所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊中,則以該下次數(shù)據(jù)在該層次存儲(chǔ)器循跡地址作為該下次數(shù)據(jù)的循跡地址,且以該本次數(shù)據(jù)所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊的DBNX作為該下次數(shù)據(jù)的循跡地址中的DBNX,以該下次數(shù)據(jù)中對(duì)應(yīng)所述層次存儲(chǔ)器的DBNY部分作為該下次數(shù)據(jù)的循跡地址中的DBNY。42.如權(quán)利要求40所述的指令處理系統(tǒng),其特征在于:在所述數(shù)據(jù)引擎中還包含一個(gè)加法器,用于對(duì)本次數(shù)據(jù)本身在某一層次存儲(chǔ)器對(duì)應(yīng)的塊內(nèi)偏移量與數(shù)據(jù)步長(zhǎng)中對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量的部分相加,產(chǎn)生進(jìn)位輸出;當(dāng)所述數(shù)據(jù)步長(zhǎng)為正數(shù)或零時(shí),若所述數(shù)據(jù)步長(zhǎng)對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量以外部分為全‘0’,且所述進(jìn)位輸出為‘0’,則所述下次數(shù)據(jù)位于該層次存儲(chǔ)器中所述本次數(shù)據(jù)所在的數(shù)據(jù)塊中;當(dāng)所述數(shù)據(jù)步長(zhǎng)為負(fù)數(shù)時(shí),若所述數(shù)據(jù)步長(zhǎng)對(duì)應(yīng)所述層次存儲(chǔ)器塊內(nèi)偏移量以外部分為全‘1’,且所述進(jìn)位輸出為‘I’,則所述下次數(shù)據(jù)位于所述本次數(shù)據(jù)所在的數(shù)據(jù)塊中。43.如權(quán)利要求42所述的指令處理系統(tǒng),其特征在于,所述加法器還進(jìn)一步對(duì)本次數(shù)據(jù)本身在某一層次存儲(chǔ)器對(duì)應(yīng)的塊內(nèi)偏移量以外部分中的低位與數(shù)據(jù)步長(zhǎng)中的相應(yīng)位相加,判斷所述下次數(shù)據(jù)是否位于該層次存儲(chǔ)器中所述本次數(shù)據(jù)所在的數(shù)據(jù)塊順序地址的前一個(gè)或后一個(gè)數(shù)據(jù)塊中。44.如權(quán)利要求3所述的指令處理系統(tǒng),其特征在于,每個(gè)層次的數(shù)據(jù)存儲(chǔ)器還對(duì)應(yīng)一個(gè)數(shù)據(jù)循跡地址轉(zhuǎn)換模塊;所述數(shù)據(jù)循跡地址轉(zhuǎn)換模塊的行與該層次數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)塊一一對(duì)應(yīng),其中每行存儲(chǔ)了對(duì)應(yīng)該層次數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)塊所在的更低層次存儲(chǔ)器中的數(shù)據(jù)塊號(hào)及相應(yīng)的子塊號(hào),從而可以將所述層次數(shù)據(jù)循跡地址中的塊號(hào)轉(zhuǎn)換為所述更低層次數(shù)據(jù)循跡地址中的塊號(hào),并將該子塊號(hào)與所述層次的數(shù)據(jù)循跡地址中的塊內(nèi)偏移量合并構(gòu)成所述更低層次的數(shù)據(jù)循跡地址中的塊內(nèi)偏移量。45.如權(quán)利要求3所述的指令處理系統(tǒng),其特征在于,指令和數(shù)據(jù)共享速度較低的存儲(chǔ)器,且在主動(dòng)表中存儲(chǔ)了速度最低的存儲(chǔ)器中的指令塊和數(shù)據(jù)塊的塊地址。46.如權(quán)利要求2所述的指令處理系統(tǒng),其特征在于,所述主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)物理地址尋址;虛實(shí)地址轉(zhuǎn)換模塊位于處理器、掃描器或數(shù)據(jù)引擎與主動(dòng)表之間的路徑上。47.如權(quán)利要求46所述的指令處理系統(tǒng),其特征在于:對(duì)于由掃描器或數(shù)據(jù)引擎產(chǎn)生的虛擬地址,經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往主動(dòng)表轉(zhuǎn)換為循跡地址;對(duì)于由處理器產(chǎn)生的間接分支目標(biāo)指令地址或數(shù)據(jù)地址,經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往主動(dòng)表轉(zhuǎn)換為循跡地址從存儲(chǔ)器中獲取相應(yīng)指令或數(shù)據(jù)提供給處理器使用,并填充到最高層次存儲(chǔ)器中。48.如權(quán)利要求2所述的指令處理系統(tǒng),其特征在于,在所述虛實(shí)地址轉(zhuǎn)換模塊中的每項(xiàng)還存儲(chǔ)了連續(xù)虛擬地址的前一或后一頁(yè)面的物理頁(yè)面地址在虛實(shí)地址轉(zhuǎn)換模塊中的位置信息;若根據(jù)物理地址直接計(jì)算得到的分支目標(biāo)指令地址或下次數(shù)據(jù)地址位于分支源指令或本次數(shù)據(jù)所在頁(yè)面的前一或后一頁(yè)面,則根據(jù)所述前一或后一頁(yè)面的位置信息從虛實(shí)地址轉(zhuǎn)換模塊中找到相應(yīng)物理頁(yè)面地址構(gòu)成該分支目標(biāo)指令或下次數(shù)據(jù)的物理地址,再送主動(dòng)表轉(zhuǎn)換為循跡地址。49.如權(quán)利要求35所述的指令處理系統(tǒng),其特征在于,所述主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)物理地址尋址;所述主動(dòng)表除主體部分外,還包含一個(gè)抗混疊表;所述抗混疊表中的每行存儲(chǔ)一個(gè)虛頁(yè)號(hào)及該虛頁(yè)號(hào)對(duì)應(yīng)的物理地址頁(yè)號(hào)在主動(dòng)表主體部分中所在的一個(gè)塊號(hào);當(dāng)主動(dòng)表中某個(gè)指令塊或數(shù)據(jù)塊的物理地址對(duì)應(yīng)的虛擬地址多于一個(gè)時(shí),所述主動(dòng)表的主體部分中存儲(chǔ)了該指令塊或數(shù)據(jù)塊的物理地址及其對(duì)應(yīng)的一個(gè)虛擬地址,而其他虛擬地址中的虛頁(yè)號(hào)及對(duì)應(yīng)的塊號(hào)則存儲(chǔ)在抗混疊表中。50.如權(quán)利要求49所述的指令處理系統(tǒng),其特征在于,處理器、掃描器或數(shù)據(jù)引擎輸出的虛擬地址在主動(dòng)表中與主體部分及抗混疊表中的虛擬地址匹配時(shí),輸出虛擬地址及虛頁(yè)號(hào)匹配結(jié)果;所述匹配結(jié)果包括:虛擬地址匹配成功,或虛擬地址匹配不成功且虛頁(yè)號(hào)匹配成功,或虛頁(yè)號(hào)匹配不成功;處理器、掃描器或數(shù)據(jù)引擎輸出的物理地址在主動(dòng)表中與主體部分中的物理地址匹配時(shí),輸出物理地址及物理地址頁(yè)號(hào)匹配結(jié)果;所述匹配結(jié)果包括:物理地址匹配成功,或物理地址匹配不成功且物理地址頁(yè)號(hào)匹配成功,或物理地址頁(yè)號(hào)匹配不成功。51.如權(quán)利要求20所述的指令處理方法,其特征在于,根據(jù)循跡地址對(duì)軌道表和速度最高的存儲(chǔ)器尋址,讀出軌跡點(diǎn)內(nèi)容并據(jù)此更新讀指針值,同時(shí)讀出指令供處理器執(zhí)行。52.如權(quán)利要求19所述的指令處理方法,其特征在于,軌道表中控制流(controlflow)信息以二叉樹(shù)形式存在,其中每個(gè)分支點(diǎn)對(duì)應(yīng)一條分支指令。53.如權(quán)利要求52所述的指令處理方法,其特征在于,所述二叉樹(shù)是完整的二叉樹(shù),包含了相鄰分支點(diǎn)之間的路徑信息,從而可以由一個(gè)分支點(diǎn)出發(fā)到達(dá)其兩個(gè)分叉上各一個(gè)相鄰的后續(xù)分支點(diǎn)。54.如權(quán)利要求19所述的指令處理方法,其特征在于,對(duì)于間接分支指令,由處理器執(zhí)行該指令并產(chǎn)生分支目標(biāo)地址后,再轉(zhuǎn)換為循跡地址。55.如權(quán)利要求19所述的指令處理方法,其特征在于,對(duì)于無(wú)條件分支指令,以其分支目標(biāo)循跡地址作為后續(xù)指令循跡地址;對(duì)于條件分支指令,根據(jù)處理器核執(zhí)行該條件分支指令產(chǎn)生的分支轉(zhuǎn)移是否發(fā)生的信息選擇其下一指令循跡地址或分支目標(biāo)循跡地址中的一個(gè)作為后續(xù)指令循跡地址。56.如權(quán)利要求55所述的指令處理方法,其特征在于,處理器產(chǎn)生的所述間接分支目標(biāo)地址被轉(zhuǎn)換為循跡地址并存儲(chǔ)在軌道表的相應(yīng)軌跡點(diǎn)中;當(dāng)再次指向該軌跡點(diǎn)時(shí),當(dāng)作直接分支點(diǎn)猜測(cè)執(zhí)行,并將處理器此時(shí)產(chǎn)生的分支目標(biāo)地址與該軌跡點(diǎn)中循跡地址對(duì)應(yīng)的指令地址進(jìn)行比較;若兩者相等,則該猜測(cè)是正確的,可以繼續(xù)后續(xù)操作;若兩者不等,則該猜測(cè)是錯(cuò)誤的,用所述處理器產(chǎn)生的分支目標(biāo)地址轉(zhuǎn)換為循跡地址,再進(jìn)行后續(xù)操作。57.如權(quán)利要求19所述的指令處理方法,其特征在于,根據(jù)分支目標(biāo)指令或數(shù)據(jù)位于存儲(chǔ)器層次的不同,軌道表的軌跡點(diǎn)中存儲(chǔ)了不同格式的循跡地址;不同格式的循跡地址對(duì)應(yīng)不同層次的存儲(chǔ)器;可以對(duì)不同層次緩存的循跡地址進(jìn)行轉(zhuǎn)換。58.如權(quán)利要求57所述的指令處理方法,其特征在于,使用的地址格式包括指令地址、數(shù)據(jù)地址和循跡地址。59.如權(quán)利要求57所述的指令處理方法,其特征在于,數(shù)據(jù)訪問(wèn)指令對(duì)應(yīng)的軌跡點(diǎn)中存儲(chǔ)了循跡地址和數(shù)據(jù)步長(zhǎng)。60.如權(quán)利要求57所述的指令處理方法,其特征在于,當(dāng)從所述軌道表的軌跡點(diǎn)中讀出的是對(duì)應(yīng)速度較低的存儲(chǔ)器的循跡地址時(shí),該循跡地址被轉(zhuǎn)換為對(duì)應(yīng)速度較高的存儲(chǔ)器的循跡地址并填回軌道表的該的軌跡點(diǎn)中,同時(shí)將對(duì)應(yīng)的指令塊或數(shù)據(jù)塊從速度較低的存儲(chǔ)器存儲(chǔ)到速度較高的存儲(chǔ)器中。61.如權(quán)利要求19所述的指令處理方法,其特征在于,當(dāng)速度最低存儲(chǔ)器中一個(gè)存儲(chǔ)塊對(duì)應(yīng)的順序地址的前一存儲(chǔ)塊或后一存儲(chǔ)塊已經(jīng)存儲(chǔ)在所述速度最低存儲(chǔ)器中時(shí),主動(dòng)表中存儲(chǔ)了該存儲(chǔ)塊對(duì)應(yīng)的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊在所述速度最低存儲(chǔ)器中的存儲(chǔ)位置信息。62.如權(quán)利要求61所述的指令處理方法,其特征在于,當(dāng)指令或數(shù)據(jù)地址位于速度最低存儲(chǔ)器中當(dāng)前存儲(chǔ)塊的前一存儲(chǔ)塊或后一存儲(chǔ)塊中時(shí),可以根據(jù)存儲(chǔ)在主動(dòng)表中的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息,直接在速度最低存儲(chǔ)器中找到該指令或數(shù)據(jù)。63.如權(quán)利要求61所述的指令處理方法,其特征在于,當(dāng)一個(gè)存儲(chǔ)塊被替換或填充時(shí),若可以確定該存儲(chǔ)塊的前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置,則將所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息存儲(chǔ)在主動(dòng)表中該存儲(chǔ)塊對(duì)應(yīng)的前一存儲(chǔ)塊位置或后一存儲(chǔ)塊位置中,并相應(yīng)地將該存儲(chǔ)塊的位置信息存儲(chǔ)在主動(dòng)表中所述前一存儲(chǔ)塊對(duì)應(yīng)的后一存儲(chǔ)塊位置中,或?qū)⒃摯鎯?chǔ)塊的位置信息存儲(chǔ)在主動(dòng)表中所述后一存儲(chǔ)塊對(duì)應(yīng)的前一存儲(chǔ)塊位置中。64.如權(quán)利要求61所述的指令處理方法,其特征在于,當(dāng)一個(gè)存儲(chǔ)塊被替換或填充時(shí),根據(jù)主動(dòng)表中該存儲(chǔ)塊對(duì)應(yīng)的所述前一存儲(chǔ)塊或后一存儲(chǔ)塊的位置信息,將所述前一存儲(chǔ)塊對(duì)應(yīng)的后一存儲(chǔ)塊的位置信息清除,以及將所述后一存儲(chǔ)塊對(duì)應(yīng)前一存儲(chǔ)塊的位置信息清除。65.如權(quán)利要求19所述的指令處理方法,其特征在于,對(duì)分支目標(biāo)指令地址進(jìn)行邊界判斷;根據(jù)所述判斷結(jié)果,對(duì)位于不同位置的分支目標(biāo)指令給予不同格式的地址;或?qū)?shù)據(jù)訪問(wèn)指令的下次數(shù)據(jù)地址進(jìn)行邊界判斷;根據(jù)所述判斷結(jié)果,對(duì)位于不同位置的下次數(shù)據(jù)給予不同格式的地址。66.如權(quán)利要求65所述的指令處理方法,其特征在于,若分支目標(biāo)指令地址位于分支源指令在至少一個(gè)層次存儲(chǔ)器的同一存儲(chǔ)塊中,則以該分支目標(biāo)指令在這些層次的存儲(chǔ)器中的較高層次存儲(chǔ)器循跡地址作為該分支目標(biāo)指令的循跡地址,且以該分支源指令循跡地址中的BNX作為該分支目標(biāo)指令循跡地址中的BNX,以該分支目標(biāo)指令地址中對(duì)應(yīng)所述層次存儲(chǔ)器的BNY部分作為該分支目標(biāo)指令循跡地址中的BNY。67.如權(quán)利要求66所述的指令處理方法,其特征在于:若分支目標(biāo)指令地址位于分支源指令在某一層次存儲(chǔ)器中所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊中,則以該分支目標(biāo)指令在該層次存儲(chǔ)器循跡地址作為該分支目標(biāo)指令的循跡地址,且以該分支源指令所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊的BNX作為該分支目標(biāo)指令循跡地址中的BNX,以該分支目標(biāo)指令地址中對(duì)應(yīng)所述層次存儲(chǔ)器的BNY部分作為該分支目標(biāo)指令循跡地址中的BNY。68.如權(quán)利要求65所述的指令處理方法,其特征在于,若下次數(shù)據(jù)地址位于本次數(shù)據(jù)在至少一個(gè)層次存儲(chǔ)器的同一存儲(chǔ)塊中,則以該下次數(shù)據(jù)在這些層次的存儲(chǔ)器中的較高層次存儲(chǔ)器循跡地址作為該下次數(shù)據(jù)的循跡地址,且該下次數(shù)據(jù)的循跡地址中的DBNX等于該本次數(shù)據(jù)的循跡地址中的DBNX,該下次數(shù)據(jù)的循跡地址中的DBNY等于該下次數(shù)據(jù)中對(duì)應(yīng)所述層次存儲(chǔ)器的DBNY部分。69.如權(quán)利要求68所述的指令處理方法,其特征在于:若下次數(shù)據(jù)地址位于本次數(shù)據(jù)在某一層次存儲(chǔ)器中所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊中,則以該下次數(shù)據(jù)在該層次存儲(chǔ)器循跡地址作為該下次數(shù)據(jù)的循跡地址,且該下次數(shù)據(jù)的循跡地址中的DBNX等于該本次數(shù)據(jù)所在存儲(chǔ)塊的前一或后一存儲(chǔ)塊的DBNX,該下次數(shù)據(jù)的循跡地址中的DBNY等于該下次數(shù)據(jù)中對(duì)應(yīng)所述層次存儲(chǔ)器的DBNY部分。70.如權(quán)利要求65所述的指令處理方法,其特征在于,還記錄了較高層次存儲(chǔ)器中每個(gè)數(shù)據(jù)塊在較低層次存儲(chǔ)器中所在的存儲(chǔ)塊信息;根據(jù)所述信息,可以將對(duì)應(yīng)較高層次存儲(chǔ)器的數(shù)據(jù)循跡地址轉(zhuǎn)換為對(duì)應(yīng)較低層次存儲(chǔ)器的數(shù)據(jù)循跡地址。71.如權(quán)利要求19所述的指令處理方法,其特征在于,指令和數(shù)據(jù)共享速度較低的存儲(chǔ)器,且在主動(dòng)表中存儲(chǔ)了速度最低的存儲(chǔ)器中的指令塊和數(shù)據(jù)塊的塊地址。72.如權(quán)利要求19所述的指令處理方法,其特征在于,主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)虛擬地址尋址,而更低層次存儲(chǔ)器均根據(jù)物理地址尋址;當(dāng)分支源指令的目標(biāo)指令尚未存儲(chǔ)在主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中時(shí),該目標(biāo)指令的虛擬地址經(jīng)虛實(shí)地址轉(zhuǎn)換為物理地址后被送往更低層次存儲(chǔ)器獲取相應(yīng)指令;或當(dāng)下次數(shù)據(jù)尚未存儲(chǔ)在主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中時(shí),該下次數(shù)據(jù)的虛擬地址轉(zhuǎn)換為物理地址后被送往更低層次存儲(chǔ)器獲取相應(yīng)數(shù)據(jù)。73.如權(quán)利要求19所述的指令處理方法,其特征在于,主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)物理地址尋址;對(duì)于由掃描器或數(shù)據(jù)引擎產(chǎn)生的虛擬地址,經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往主動(dòng)表轉(zhuǎn)換為循跡地址;對(duì)于由處理器產(chǎn)生的間接分支目標(biāo)指令地址或數(shù)據(jù)地址,經(jīng)虛實(shí)地址轉(zhuǎn)換模塊轉(zhuǎn)換得到物理地址后被送往主動(dòng)表轉(zhuǎn)換為循跡地址從存儲(chǔ)器中獲取相應(yīng)指令或數(shù)據(jù)提供給處理器使用,并填充到最高層次存儲(chǔ)器中。74.如權(quán)利要求65所述的指令處理方法,其特征在于,還記錄了連續(xù)虛擬地址的前一或后一頁(yè)面的物理頁(yè)面地址的位置信息;若根據(jù)物理地址直接計(jì)算得到的分支目標(biāo)指令地址或下次數(shù)據(jù)地址位于分支源指令或本次數(shù)據(jù)所在頁(yè)面的前一或后一頁(yè)面,則根據(jù)所述前一或后一頁(yè)面的位置信息中找到相應(yīng)物理頁(yè)面地址構(gòu)成該分支目標(biāo)指令或下次數(shù)據(jù)的物理地址,再送主動(dòng)表轉(zhuǎn)換為循跡地址。75.如權(quán)利要求73所述的指令處理方法,其特征在于:根據(jù)被審查指令的物理地址計(jì)算其后續(xù)指令的地址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于相同頁(yè)面但不在同一存儲(chǔ)塊中時(shí),根據(jù)所述被審查指令的物理地址,在主動(dòng)表中將所述后續(xù)指令的地址轉(zhuǎn)換為循跡地址直接對(duì)存儲(chǔ)器尋址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于不同頁(yè)面時(shí),將所述被審查指令標(biāo)記為間接分支指令(直標(biāo)間指令類(lèi)型),等到處理器執(zhí)行到該指令時(shí)并產(chǎn)生后續(xù)指令地址時(shí),將該后續(xù)指令地址轉(zhuǎn)換為物理地址后,再送到主動(dòng)表轉(zhuǎn)換為循跡地址對(duì)存儲(chǔ)器尋址。76.如權(quán)利要求65所述的指令處理方法,其特征在于,所述主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器及更高層次存儲(chǔ)器均根據(jù)物理地址尋址;所述主動(dòng)表除主體部分外,還包含一個(gè)抗混疊表;所述抗混疊表中的每行存儲(chǔ)一個(gè)虛頁(yè)號(hào)及該虛頁(yè)號(hào)對(duì)應(yīng)的物理地址頁(yè)號(hào)在主動(dòng)表主體部分中所在的一個(gè)塊號(hào);當(dāng)主動(dòng)表中某個(gè)指令塊或數(shù)據(jù)塊的物理地址對(duì)應(yīng)的虛擬地址多于一個(gè)時(shí),所述主動(dòng)表的主體部分中存儲(chǔ)了該指令塊或數(shù)據(jù)塊的物理地址及其對(duì)應(yīng)的一個(gè)虛擬地址,而其他虛擬地址中的虛頁(yè)號(hào)及對(duì)應(yīng)的塊號(hào)則存儲(chǔ)在抗混疊表中。77.如權(quán)利要求76所述的指令處理方法,其特征在于,處理器、掃描器或數(shù)據(jù)引擎輸出的虛擬地址在主動(dòng)表中與主體部分及抗混疊表中的虛擬地址匹配時(shí),輸出虛擬地址及虛頁(yè)號(hào)匹配結(jié)果;所述匹配結(jié)果包括:虛擬地址匹配成功,或虛擬地址匹配不成功且虛頁(yè)號(hào)匹配成功,或虛頁(yè)號(hào)匹配不成功;處理器、掃描器或數(shù)據(jù)引擎輸出的物理地址在主動(dòng)表中與主體部分中的物理地址匹配時(shí),輸出物理地址及物理地址頁(yè)號(hào)匹配結(jié)果;所述匹配結(jié)果包括:物理地址匹配成功,或物理地址匹配不成功且物理地址頁(yè)號(hào)匹配成功,或物理地址頁(yè)號(hào)匹配不成功。78.如權(quán)利要求77所述的指令處理方法,其特征在于,在掃描器中,若所述目標(biāo)指令物理地址與分支源指令物理地址位于同一指令塊,則直接輸出分支源指令對(duì)應(yīng)的塊號(hào);若所述目標(biāo)指令物理地址與分支源指令物理地址位于同一頁(yè)面中的不同指令塊,則所述目標(biāo)指令物理地址被送到主動(dòng)表的主體部分中與物理地址匹配;若物理地址匹配成功,則輸出匹配成功項(xiàng)的塊號(hào);若物理地址匹配不成功,則根據(jù)該物理地址從更低層次存儲(chǔ)器中獲取相應(yīng)指令塊,填充到主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中按替換算法分配的存儲(chǔ)塊中,并將所述虛擬地址及物理地址填充到主動(dòng)表的主體部分中該存儲(chǔ)塊對(duì)應(yīng)的行中,同時(shí)輸出該存儲(chǔ)塊對(duì)應(yīng)的塊號(hào);在數(shù)據(jù)引擎中,若所述下次數(shù)據(jù)物理地址與本次數(shù)據(jù)物理地址位于同一數(shù)據(jù)塊,則直接輸出本次數(shù)據(jù)對(duì)應(yīng)的塊號(hào);若所述下次數(shù)據(jù)物理地址與本次數(shù)據(jù)物理地址位于同一頁(yè)面中的不同數(shù)據(jù)塊,則所述下次數(shù)據(jù)物理地址被送到主動(dòng)表的主體部分中與物理地址匹配;若物理地址匹配成功,則輸出匹配成功項(xiàng)的塊號(hào);若物理地址匹配不成功,則根據(jù)該物理地址從更低層次存儲(chǔ)器中獲取相應(yīng)數(shù)據(jù)塊,填充到主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中按替換算法分配的存儲(chǔ)塊中,并將所述虛擬地址及物理地址填充到主動(dòng)表的主體部分中該存儲(chǔ)塊對(duì)應(yīng)的行中,同時(shí)輸出該存儲(chǔ)塊對(duì)應(yīng)的塊號(hào)。79.如權(quán)利要求77所述的指令處理方法,其特征在于,對(duì)于處理器、掃描器或數(shù)據(jù)引擎輸出的虛擬地址:若在主動(dòng)表的主體部分中與虛擬地址匹配成功,則輸出匹配成功項(xiàng)對(duì)應(yīng)的塊號(hào);若在主動(dòng)表的主體部分中與虛擬地址匹配不成功但與虛頁(yè)號(hào)匹配成功,則讀出匹配成功項(xiàng)中的物理地址頁(yè)號(hào),與所述虛擬地址中的標(biāo)簽低位合并構(gòu)成物理地址,再送到主動(dòng)表的主體部分中與物理地址匹配;若物理地址匹配成功,則輸出匹配成功項(xiàng)的塊號(hào);若物理地址匹配不成功,則根據(jù)該物理地址從更低層次存儲(chǔ)器中獲取相應(yīng)指令塊或數(shù)據(jù)塊,填充到主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中按替換算法分配的存儲(chǔ)塊中,并將所述虛擬地址及物理地址填充到主動(dòng)表的主體部分中該存儲(chǔ)塊對(duì)應(yīng)的行中,同時(shí)輸出該存儲(chǔ)塊對(duì)應(yīng)的塊號(hào);若在主動(dòng)表的主體部分中與虛頁(yè)號(hào)匹配不成功,則由操作系統(tǒng)提供該虛頁(yè)號(hào)對(duì)應(yīng)的物理地址頁(yè)號(hào);所述物理地址頁(yè)號(hào)與所述虛擬地址中的標(biāo)簽低位合并構(gòu)成物理地址,再送到主動(dòng)表的主體部分中與物理地址匹配;若物理地址匹配成功,則將所述虛頁(yè)號(hào)及匹配成功項(xiàng)的塊號(hào)填充到抗混疊表的可用行中,并輸出該塊號(hào);若物理地址匹配不成功,則該物理地址從更低層次存儲(chǔ)器中獲取相應(yīng)指令塊或數(shù)據(jù)塊,填充到主動(dòng)表對(duì)應(yīng)的存儲(chǔ)器中按替換算法分配的存儲(chǔ)塊中,并將所述虛擬地址及物理地址填充到主動(dòng)表的主體部分中該存儲(chǔ)塊對(duì)應(yīng)的行中,同時(shí)輸出該存儲(chǔ)塊對(duì)應(yīng)的塊號(hào)。80.如權(quán)利要求76所述的指令處理方法,其特征在于:根據(jù)被審查指令的物理地址計(jì)算其后續(xù)指令的地址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于相同頁(yè)面時(shí),將計(jì)算得到的所述地址送主動(dòng)表轉(zhuǎn)換為循跡地址;當(dāng)所述后續(xù)指令的地址與所述被審查指令地址位于不同頁(yè)面時(shí),根據(jù)被審查指令的虛擬地址計(jì)算后續(xù)指令的虛擬地址,并送到主動(dòng)表匹配得到相應(yīng)物理地址,再轉(zhuǎn)換為循跡地址。81.如權(quán)利要求76所述的指令處理方法,其特征在于:對(duì)于數(shù)據(jù)訪問(wèn)指令,根據(jù)本次數(shù)據(jù)地址和數(shù)據(jù)步長(zhǎng)計(jì)算下次數(shù)據(jù)地址;當(dāng)所述下次數(shù)據(jù)的地址與所述本次數(shù)據(jù)的地址位于相同頁(yè)面時(shí),將計(jì)算得到的所述地址送主動(dòng)表轉(zhuǎn)換為循跡地址;當(dāng)所述下次數(shù)據(jù)的地址與所述本次數(shù)據(jù)的地址位于不同頁(yè)面時(shí),根據(jù)本次數(shù)據(jù)的虛擬地址計(jì)算下次數(shù)據(jù)的虛擬地址,并送到主動(dòng)表匹配得到相應(yīng)物理地址,再轉(zhuǎn)換為循跡地址?!疚臋n編號(hào)】G06F9/38GK103984526SQ201410022576【公開(kāi)日】2014年8月13日申請(qǐng)日期:2014年1月14日優(yōu)先權(quán)日:2013年2月7日【發(fā)明者】林正浩申請(qǐng)人:上海芯豪微電子有限公司