專利名稱:指令轉(zhuǎn)回處理器系統(tǒng)、指令轉(zhuǎn)回方法和指令轉(zhuǎn)回程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及作流水線處理的計(jì)算機(jī),尤其涉及成本低且性能高的指令轉(zhuǎn)回處理器系統(tǒng)、指令轉(zhuǎn)回方法和指令轉(zhuǎn)回程序。
背景技術(shù):
中央運(yùn)算處理裝置(CPU)在流水線級數(shù)增多的同時(shí),能使并行處理的速度加快,因而強(qiáng)烈傾向于增加流水線的級數(shù)。另一方面,流水線級數(shù)增多時(shí),流水線的再啟動需要時(shí)間。因此,存在反而處理速度變慢的缺點(diǎn)。失常的CPU中不能調(diào)度時(shí),或正常的CPU中執(zhí)行的指令不能結(jié)束時(shí),用裝載指令在高速緩存故障時(shí)重裝數(shù)據(jù)后,需要進(jìn)行再發(fā)布。是否能使有再發(fā)布可能性的指令結(jié)束,成為問題,但已有技術(shù)例中還進(jìn)行在指令窗緩存器存儲有再發(fā)布可能性的指令的運(yùn)作。此運(yùn)作是轉(zhuǎn)回控制的一部分。裝載指令及其后續(xù)指令中,與表目的深度有關(guān),但需要使指令保持并保留一定的時(shí)間。
已有的微處理器系統(tǒng)的結(jié)構(gòu)例如圖12所示,具有取指令單元1、指令窗緩存器(IWB)2、第1指令譯碼器(A)6、第2指令譯碼器(B)7、流水線寄存器(PLG)3、4和5、以及控制單元8。
從取指令單元1將指令COM供給IWB2,并保持在其中。如果解決數(shù)據(jù)故障、資源故障,IWB2就發(fā)布指令I(lǐng)NS。將指令I(lǐng)NS供給控制單元8、PLG3、PLG4、PLG5、第1指令譯碼器(A)6、第2指令譯碼器(B)7,流過執(zhí)行流水線,使指令I(lǐng)NS執(zhí)行下去。控制單元8接收來自第1指令譯碼器(A)6的裝載指令LCOM、來自第2指令譯碼器(B)7的信號和來自IWB2的指令I(lǐng)NS。由已知的通用寄存器文件、功能單元、數(shù)據(jù)高速緩存單元、旁路網(wǎng)絡(luò)、旁路控制塊和流水線寄存器等組成控制單元8。這里,例如裝載指令LCOM在控制單元8內(nèi)訪問數(shù)據(jù)高速緩存單元,以獲取數(shù)據(jù),但發(fā)生高速緩存故障時(shí),得不到數(shù)據(jù)。這時(shí)取消裝載指令LCOM及其后續(xù)指令的執(zhí)行。然后,訪問2級(L2)高速緩存等,獲取數(shù)據(jù),如果得到數(shù)據(jù),就從IWB2再發(fā)布裝載指令LCOM及其后續(xù)指令,重新執(zhí)行。這次高速緩存命中,因而能繼續(xù)執(zhí)行后續(xù)指令。
這時(shí),為了再發(fā)布裝載指令LCOM及其后續(xù)指令,需要在IWB2保存這些指令。在指令發(fā)布后的幾個(gè)周期后,才判明裝載失誤,因而該期間在IWB2仍舊保持指令。在該幾個(gè)周期的期間,即使在高速緩存命中的情況下,也不知道高速緩存命中的事實(shí),因而需要常在IWB2連續(xù)保持發(fā)行的指令。
如圖13所示,已有的微處理器系統(tǒng)的運(yùn)作可表示為(a)步驟S1中,從取指令單元1對IWB2供給指令COM的狀態(tài)開始運(yùn)作。
(b)接著,進(jìn)至步驟S2,從IWB2發(fā)布指令I(lǐng)NS。
(c)接著,進(jìn)至步驟S3,執(zhí)行指令I(lǐng)NS。
(d)接著,進(jìn)至步驟S4,執(zhí)行裝載指令LCOM,并判斷是否發(fā)生高速緩存故障。
(e)不發(fā)生高速緩存故障,則進(jìn)至步驟S5,使執(zhí)行結(jié)束。
(f)如果發(fā)生高速緩存故障,進(jìn)至步驟S6,觸發(fā)高速緩存重裝。
(g)接著,進(jìn)至步驟S7,從流水線刪除自指令(裝載指令)和執(zhí)行的中途的后續(xù)指令。
(h)接著,進(jìn)至步驟S8,對無效指令,使IWB返回發(fā)布前的狀態(tài)。(i)接著,進(jìn)至步驟S9,判斷高速緩存重裝是否完成。
(j)“否”,則重復(fù)進(jìn)行步驟S9。
(k)如果“是”,進(jìn)至步驟S10,使已發(fā)布指令在循環(huán)中轉(zhuǎn)回。
(l)接著,進(jìn)行步驟S2、S3、S4,在步驟S4中重復(fù)進(jìn)行一系列運(yùn)作,直至裝載指令LCOM中不發(fā)生高速緩存故障。
IWB2保持用于發(fā)布指令I(lǐng)NS的復(fù)雜發(fā)布邏輯組成部分,已發(fā)布的指令I(lǐng)NS占用費(fèi)用高的IWB,因而IWB2的邏輯的利用率變差。
非專利文獻(xiàn)1梯 沙特等人著“指令再發(fā)布機(jī)構(gòu)的綜合評價(jià)(Comprehensive Evaluation ofInstruction Reissue Mechanism)”,并行體系結(jié)構(gòu)、算法和網(wǎng)絡(luò)國際討論會會議錄(Proceedings of International Symposium on Parallel Architectures,Algorithmsand Networks)2000年,P.78-85。
非專利文獻(xiàn)2格林 興通等人著“奔騰(注冊商標(biāo))4處理器的微體系結(jié)構(gòu)(TheMicroarchitecture of Pentium 4 Processor)”,http//developer.intel.com,2001已有的微處理器系統(tǒng)中,有時(shí)在指令發(fā)布后,因數(shù)據(jù)高速緩存故障而需要再執(zhí)行指令。為此,以往IWB2在指令發(fā)布后還留有指令,并且在判明需要再執(zhí)行時(shí),從IWB2對運(yùn)算器再發(fā)布指令。因此,需要在IWB2將指令保持一定的時(shí)間,存在浪費(fèi)面積成本大的IWB2的貴重表目的問題。
本發(fā)明的目的提供一種成本低且性能高的指令轉(zhuǎn)回處理器系統(tǒng)、指令轉(zhuǎn)回方法和指令轉(zhuǎn)回程序,其具有的功能將PLG連接成環(huán)狀,以保持再執(zhí)行用的指令,并且轉(zhuǎn)回運(yùn)作時(shí),在環(huán)狀PLG內(nèi)保持再執(zhí)行用的指令,指令再發(fā)布運(yùn)作時(shí),從PLG再發(fā)布指令等。
發(fā)明內(nèi)容
為了達(dá)到上述目的,本發(fā)明的第1特征,其要點(diǎn)為一種指令轉(zhuǎn)回處理器系統(tǒng),其中具有(甲)發(fā)布按一定順序排列的多條執(zhí)行前指令的指令窗緩存器、(乙)在一個(gè)輸入端輸入指令窗緩存器的輸出的多路變換器、以及(丙)連接在多路變換器的輸出端與多路變換器的另一輸入端之間的轉(zhuǎn)回單元。
本發(fā)明的第2特征,其要點(diǎn)為一種指令轉(zhuǎn)回方法,其中具有(甲)發(fā)生高速緩存故障時(shí)轉(zhuǎn)回單元在循環(huán)中回轉(zhuǎn)并保持未完成的指令的轉(zhuǎn)回步驟、(乙)在高速緩存故障未解除且轉(zhuǎn)回未正常結(jié)束時(shí)重復(fù)進(jìn)行轉(zhuǎn)回步驟的步驟、以及(丙)轉(zhuǎn)回正常結(jié)束時(shí)對多路變換器發(fā)布轉(zhuǎn)回控制信號并且從指令窗緩存器發(fā)布未發(fā)布的指令的再發(fā)布步驟。
本發(fā)明的第3特征,其要點(diǎn)為一種指令轉(zhuǎn)回方法,(甲)用于指令轉(zhuǎn)回處理器系統(tǒng)中,該系統(tǒng)具有存放按一定順序排列多條執(zhí)行前指令的指令窗緩存器、將指令窗緩存器的輸出作為一個(gè)輸入的多路變換器、以及連接多路變換器的轉(zhuǎn)回單元,并且多路變換器的另一輸入端連接轉(zhuǎn)回單元的輸出端,(乙)對未完成的指令進(jìn)行轉(zhuǎn)回時(shí)選擇轉(zhuǎn)回單元方的輸入的轉(zhuǎn)回步驟、以及(丙)發(fā)布未發(fā)布的指令時(shí)選擇來自指令窗緩存器的輸入的指令再發(fā)布步驟。
本發(fā)明的第4特征,其要點(diǎn)為一種指令轉(zhuǎn)回方法,具有以下的步驟(甲)執(zhí)行指令窗緩存器發(fā)布的執(zhí)行前指令;(乙)發(fā)生高速緩存故障時(shí)驅(qū)動高速緩存重裝電路,并且流水線寄存器中的裝載指令和后續(xù)指令為非激活,使指令窗緩存器凍結(jié)在發(fā)生所述高速緩存故障時(shí)的狀態(tài);(丙)如果高速緩存重裝電路完成而且裝載指令處于所述高速緩存故障發(fā)生前的位置,則返回執(zhí)行裝載指令及其后續(xù)指令的步驟;(丁)如果高速緩存重裝電路未完成,則循環(huán)回轉(zhuǎn)并保持指令窗緩存器發(fā)布的已發(fā)布指令;(戊)如果高速緩存重裝電路完成而且裝載指令不處于高速緩存故障發(fā)生前的位置,則循環(huán)回轉(zhuǎn)已發(fā)布指令。
本發(fā)明的第5特征,其要點(diǎn)為一種指令轉(zhuǎn)回程序,使指令轉(zhuǎn)回處理器系統(tǒng)執(zhí)行的算法包含以下的步驟(甲)執(zhí)行指令窗緩存器發(fā)布的執(zhí)行前指令;(乙)發(fā)生高速緩存故障時(shí)驅(qū)動高速緩存重裝電路,并且流水線寄存器中的裝載指令和后續(xù)指令為非激活,使指令窗緩存器凍結(jié)在發(fā)生高速緩存故障時(shí)的狀態(tài);(丙)如果高速緩存重裝電路完成而且循環(huán)回轉(zhuǎn)指令處于高速緩存故障發(fā)生前的位置,則返回執(zhí)行裝載指令和后續(xù)指令的步驟;(丁)如果高速緩存重裝電路未完成,則循環(huán)回轉(zhuǎn)并保持指令窗緩存器發(fā)布的已發(fā)布指令;(戊)如果高速緩存重裝電路完成而且所述循環(huán)指令不處于高速緩存故障發(fā)生前的位置,則循環(huán)回轉(zhuǎn)已發(fā)布指令。
圖1是本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的圖解總體框圖。
圖2是本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的控制單元的圖解組成框圖。
圖3是本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的轉(zhuǎn)回控制單元的圖解組成框圖。
圖4是說明本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的轉(zhuǎn)回運(yùn)作用的內(nèi)部狀態(tài)轉(zhuǎn)移圖。
圖5是說明本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的運(yùn)作用的流程圖。
圖6是本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的運(yùn)作圖解說明框圖,說明發(fā)生數(shù)據(jù)高速緩存故障的狀態(tài)。
圖7是本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的運(yùn)作圖解說明框圖,說明轉(zhuǎn)回運(yùn)作的狀態(tài)。
圖8是本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的運(yùn)作圖解說明框圖,說明轉(zhuǎn)回結(jié)束的狀態(tài)。
圖9是本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的圖解組成框圖,是流水線寄存器的級數(shù)為n級的例子中的組成圖。
圖10是構(gòu)成用于本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)的高速緩存器的數(shù)據(jù)高速緩存單元的圖解組成圖。
圖11是本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)中進(jìn)行流水線處理的CPU的組成圖。
圖12是已有的微處理器系統(tǒng)的圖解組成圖。
圖13是說明已有的微處理器系統(tǒng)的運(yùn)作的流程圖。
附圖中,1是取指令單元,2是指令窗緩存器(IWB),3、4、5、13、14、15、16是流水線寄存器(PLG),6是第1指令譯碼器A,7是第2指令譯碼器B,8是控制單元,9是轉(zhuǎn)回單元,10是轉(zhuǎn)回控制單元,11、49是多路變換器(MUX),12是譯碼器單元,171、172、173、174、28是存放指令的第1源寄存器值Rs的數(shù)據(jù)存放部,181、182、183、184、29是存放指令的第2源寄存器值Rt的數(shù)據(jù)存放部,191、192、193、194是存放指令的目的處編號Rd的數(shù)據(jù)存放部,201、202、203、204是存放指令的操作碼的數(shù)據(jù)存放部,21是通用寄存器(GPR),22是高速緩存重裝電路,23是TLB,24是數(shù)據(jù)高速緩存單元,25是轉(zhuǎn)回控制電路,26是轉(zhuǎn)回判斷電路,27是裝載指令存放寄存器,30是加法器,31是高速緩存命中寄存器,32是TLB命中寄存器,33是裝載數(shù)據(jù)寄存器,34、35、36、37是首部指針(HP)用PLG,38、39、40、41是啟用信號(EN)用PLG,42、43、44、45是有效信號(VL)用PLG,46、47、48、53是與門,50是有效緩存器,51是虛擬地址存放部,52是一致性比較器,54是物理地址存儲部,55是高速緩存器部,60是轉(zhuǎn)回線,70是外存儲器,100是CPU,101是指令高速緩存(ICACHE),102是LD/ST管段,103是分支管段,106a是整數(shù)管段0,106b是整數(shù)管段1,107是COP1管段,108是COP2管段,109是虛擬地址計(jì)算部,110是數(shù)據(jù)TLB(DTLBData TLB),111是數(shù)據(jù)高速緩存(DCACHEData Cache),112是響應(yīng)緩存器,113是總線接口單元,S1、S2、S3、…、S12…是步驟,ST0是初始狀態(tài)至“常規(guī)運(yùn)作”的狀態(tài)轉(zhuǎn)移,ST1是“常規(guī)運(yùn)作”至“轉(zhuǎn)回運(yùn)作”的狀態(tài)轉(zhuǎn)移,ST2是“轉(zhuǎn)回運(yùn)作”至“始端指令對準(zhǔn)運(yùn)作”的狀態(tài)轉(zhuǎn)移,ST3是“始端指令對準(zhǔn)運(yùn)作”至“指令再發(fā)布運(yùn)作”的狀態(tài)轉(zhuǎn)移,ST4是“指令再發(fā)布運(yùn)作”至“常規(guī)運(yùn)作”的狀態(tài)轉(zhuǎn)移,C1是“常規(guī)運(yùn)作”的內(nèi)部狀態(tài)轉(zhuǎn)移,C2是“轉(zhuǎn)回運(yùn)作”的內(nèi)部狀態(tài)轉(zhuǎn)移,C3是“始端指令對準(zhǔn)運(yùn)作”的內(nèi)部狀態(tài)轉(zhuǎn)移,C4是“指令再發(fā)布運(yùn)作”的內(nèi)部狀態(tài)轉(zhuǎn)移,PLG1、PLG2、PLG3、PLG4、…、PLGn…是流水線寄存器,LCOM是裝載指令,COM是指令,INS是指令,F(xiàn)LA是標(biāo)記信號,ENA是啟用信號,VAL是有效信號,RFC是重裝完成信號,RBS是轉(zhuǎn)回開始信號,RBC是轉(zhuǎn)回控制信號,HMC是高速緩存命中寄存器內(nèi)存放的命中失誤信號,HMT是TLB命中寄存器內(nèi)存放的命中失誤信號。
具體實(shí)施例方式
下面參照
本發(fā)明的實(shí)施例。下面的附圖中,相同或類似的部分帶有相同或類似的符號。以下所示的實(shí)施例是示出使本發(fā)明的技術(shù)思想具體化用的裝置和方法的例子,本發(fā)明的技術(shù)思想不將其組成部件、配置等規(guī)定為以下所記載的。本發(fā)明的技術(shù)思想在權(quán)利要求書的范圍內(nèi)可添加各種變換。
本發(fā)明中,“指令轉(zhuǎn)回處理器系統(tǒng)”是指具有指令轉(zhuǎn)回功能或指令轉(zhuǎn)回裝置的處理器系統(tǒng)。“指令轉(zhuǎn)回處理器系統(tǒng)”是利用指令轉(zhuǎn)回方法和指令轉(zhuǎn)回程序進(jìn)行運(yùn)作的處理器系統(tǒng)。本發(fā)明中,“指令轉(zhuǎn)回”是指環(huán)狀級聯(lián)的PLG群內(nèi),使已發(fā)布指令在循環(huán)中回轉(zhuǎn)的運(yùn)作。
如圖1所示,本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)具有存放按一定順序排列的多條指令的指令窗緩存器(IWB)2、在一個(gè)輸入端輸入指令窗緩存器2的輸出的多路變換器(MUX)11、以及連接在MUX11的輸出端與MUX11的另一輸入端之間轉(zhuǎn)回單元9。從取指令單元1對IWB2供給指令COM。MUX11的輸出端連接具有PLG13、14、15、16的轉(zhuǎn)回單元9。轉(zhuǎn)回單元9連接具有第1指令譯碼器(A)6和第2譯碼器(B)7的譯碼器單元12。譯碼器單元12連接控制單元8。控制單元8與MUX11之間連接轉(zhuǎn)回控制單元10。PLG13、14、15、16的內(nèi)部分別包含存放指令的第1源寄存器值Rs的數(shù)據(jù)存放部171、172、173和174、存放指令的第2源寄存器值Rt的數(shù)據(jù)存放部181、182、183和184、存放指令的目的處編號Rd的數(shù)據(jù)存放部191、192、193和194、存放指令的操作碼Op的數(shù)據(jù)存放部201、202、203和204。存放這些指令的第1源寄存器值Rs的數(shù)據(jù)存放部171、172、173和174、存放指令的第2源寄存器值Rt的數(shù)據(jù)存放部181、182、183和184、存放指令的目的處編號Rd的數(shù)據(jù)存放部191、192、193和194、存放指令的操作碼Op的數(shù)據(jù)存放部201、202、203和204構(gòu)成在PLG內(nèi)劃分并存放指令用的數(shù)據(jù)存放部。后面詳細(xì)說明其運(yùn)作。
將圖1所示的PLG13至PLG16的各存放指令的第1源寄存器值Rs的數(shù)據(jù)存放部171、172、173和174、存放指令的第2源寄存器值Rt的數(shù)據(jù)存放部181、182、183和184、存放指令的目的處編號Rd的數(shù)據(jù)存放部191、192、193和194、存放指令的操作碼Op的數(shù)據(jù)存放部201、202、203和204表示為數(shù)據(jù)存放部。
存放指令的第1源寄存器值Rs的數(shù)據(jù)存放部171、172、173和174是存放指令的源寄存器值Rs的數(shù)據(jù)存放部。
存放指令的第2源寄存器值Rt的數(shù)據(jù)存放部181、182、183和184是存放指令的源寄存器值Rt的數(shù)據(jù)存放部。
存放指令的目的處編號Rd的數(shù)據(jù)存放部191、192、193和194是存放指令的目的處寄存器編號Rd的數(shù)據(jù)存放部。
存放指令的操作碼的數(shù)據(jù)存放部201、202、203和204是存放指令的操作碼Op的數(shù)據(jù)存放部。將指令的操作碼Op譯碼,就能判斷指令的類型。
與圖12所示的已有技術(shù)例的不同點(diǎn)為在IWB2的輸出端與PLG群之間配置MUX11,由轉(zhuǎn)回控制單元10控制多路變換器11,末級PLG16的輸出通過轉(zhuǎn)回線60返回指令發(fā)布級側(cè),作為多路變換器11的一個(gè)輸入,多路變換器11的另一輸入端連接IWB2的輸出端。需要用于控制多路變換器11的轉(zhuǎn)回控制單元10。圖1所示的PLG群示出4級的例子,未必限于4級。如圖6至圖8所示,可用3級構(gòu)成。或者,如圖9所示,可用任意的級數(shù)n構(gòu)成。
構(gòu)成圖1所示指令轉(zhuǎn)回處理器系統(tǒng)的控制單元8如圖2所示,其組成部分為通用寄存器文件(GPR)21、高速緩存重裝電路22、TLB(Translation Look-aside Buffer變換監(jiān)視緩存器)23、數(shù)據(jù)高速緩存單元24。裝載指令存放寄存器27、加法器30、高速緩存命中寄存器31、TLB命中寄存器32裝載數(shù)據(jù)寄存器33、存放指令的第1源寄存器值Rs的數(shù)據(jù)存放部28和存放指令的第2源寄存器值Rt的數(shù)據(jù)存放部29。裝載指令存放寄存器27接收來自第1譯碼器(A)6的裝載指令LCOM,將其送到加法器30。加法器30計(jì)算裝載指令存放寄存器27的虛擬地址。一般使源寄存器的內(nèi)容加上別的寄存器的內(nèi)容或已知值,從而算出裝載-存儲指令應(yīng)訪問的虛擬地址。這里不記載已知值的加法,僅記載以源寄存器與源寄存器的相加算出虛擬地址的途徑。因此,加法器30接收來自裝載指令存放寄存器27、存放指令的第1源寄存器值Rs的數(shù)據(jù)存放部28和存放指令的第2源寄存器值Rt的數(shù)據(jù)存放部29的數(shù)據(jù),進(jìn)行相加后,將其送到數(shù)據(jù)高速緩存單元24和TLB23。數(shù)據(jù)高速緩存單元24接收來自TLB23和加法器30的數(shù)據(jù),與高速緩存重裝電路22之間進(jìn)行數(shù)據(jù)收發(fā),同時(shí)對裝載數(shù)據(jù)寄存器33和高速緩存命中寄存器31進(jìn)行發(fā)送。裝載數(shù)據(jù)寄存器33接收來自數(shù)據(jù)高速緩存單元24的數(shù)據(jù),將其送到GPR21。GPR21接收來自裝載數(shù)據(jù)寄存器33、第1指令譯碼器(A)6、PLG13內(nèi)存放指令的第1源寄存器值Rs的數(shù)據(jù)存放部171和存放指令的第2源寄存器值Rt的數(shù)據(jù)存放部181的數(shù)據(jù),將其分別發(fā)送到存放指令的第1源寄存器值Rs的數(shù)據(jù)存放部28和存放指令的第2源寄存器值Rt的數(shù)據(jù)存放部29。另一方面,TLB23接收來自加法器30的虛擬地址,與高速緩存重裝電路22之間進(jìn)行數(shù)據(jù)收發(fā),而且對數(shù)據(jù)高速緩存單元24和TLB命中寄存器32發(fā)送數(shù)據(jù)。TLB命中寄存器32接收來自TLB23的TLB命中信息,將數(shù)據(jù)發(fā)送到高速緩存重裝電路22,同時(shí)也對轉(zhuǎn)回控制單元10內(nèi)的轉(zhuǎn)回判斷電路26發(fā)送TLB命中信息。同樣,高速緩存重裝電路22從高速緩存命中寄存器31和TLB命中寄存器32接收數(shù)據(jù),一面與TLB23和數(shù)據(jù)高速緩存單元24之間進(jìn)行數(shù)據(jù)收發(fā),一面對轉(zhuǎn)回控制單元10內(nèi)的轉(zhuǎn)回控制電路25發(fā)送數(shù)據(jù)。此外,如圖2中所示,在數(shù)據(jù)高速緩存單元24與高速緩存重裝電路22之間也進(jìn)行數(shù)據(jù)的收發(fā)。
圖1所示的譯碼器單元12內(nèi)示出第1指令譯碼器(A)6和第2指令譯碼器(B)7等2個(gè)指令譯碼器,但也可僅使第1指令譯碼器(A)6起作用。即,例如,如圖2所示,該運(yùn)作可為用第1譯碼器(A)6把包含裝載指令LCOM在內(nèi)的全部指令的控制譯碼,并且在控制單元8保持此已譯碼的信息,以供給GRP21或TLB23、加法器30等。
如圖3所示,構(gòu)成圖1所示的指令轉(zhuǎn)回處理器系統(tǒng)的轉(zhuǎn)回控制單元10。其組成部分為轉(zhuǎn)回控制電路25、轉(zhuǎn)回判斷電路26、首部指針(HP)用的PLG 34、35、36和37、啟用信號(EN)用的PLG38、39、40和41、有效信號(VL)用的PLG42、43、44和45、與門電路46、47和48、MUX49、以及有效緩存器(Valid Buffer)50。
轉(zhuǎn)回控制單元25從控制單元8中的高速緩存重裝電路26接收重裝完成信號RFC,或從轉(zhuǎn)回判斷電路26接收轉(zhuǎn)回開始信號RBS,或接收來自首部指針(HP)用的PLG37信號。轉(zhuǎn)回控制電路25還對首部指針(HP)用的PLG34和啟用信號(EN)用的PLG38發(fā)送信號,同時(shí)也對MUX11和MUX49發(fā)送轉(zhuǎn)回控制信號RBC。另一方面,轉(zhuǎn)回判斷電路26接收控制單元8中TLB命中寄存器32內(nèi)存放的命中失誤信號HMT、高速緩存命中寄存器31內(nèi)存放的命中失誤信號HMC。此外,還接收來自指令譯碼器(B)7的標(biāo)記信號FLA。轉(zhuǎn)回控制單元10中,接收來自與門48的輸出信號,并且對轉(zhuǎn)回控制電路25發(fā)送轉(zhuǎn)回開始信號RBS。MUX49接收來自有效緩存器50的信號和來自有效信號(VL)用的PLG45的信號,并且對有效信號(VL)用的PLG42發(fā)送數(shù)據(jù)。這里從有效信號(VL)用的PLG42到有效信號(VL)用的PLG43、44和45的數(shù)據(jù)移位對應(yīng)于從首部指針(HP)用的PLG34到首部指針(HP)用的PLG35、36和37的數(shù)據(jù)移位、從啟用信號(EN)用的PLG38到啟用信號(EN)用的PLG39、40和41的數(shù)據(jù)移位。這種數(shù)據(jù)移位的定時(shí)對應(yīng)于圖1中從PLG13到PLG14、15和16的數(shù)據(jù)移位。PLG13至PLG14之間對應(yīng)于PLG 42至PLG43之間,PLG14至PLG15之間對應(yīng)于PLG 43至PLG44之間,PLG44至PLG45之間對應(yīng)于PLG15至PLG16之間。這些級分別定義為“ID級”、“EX級”和“WB級”。從有效緩存器50通過MUX49到PLG42的級對應(yīng)于從IWB2通過MUX11到PLG13的級,定義為“IS級”。數(shù)據(jù)從取指令單元1輸入到IWB2定義為“IF級”。
現(xiàn)參照圖1至圖3說明本實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)中的轉(zhuǎn)回控制運(yùn)作。
首先說明詞語。以下的說明中標(biāo)記(FlagFLA)信號、有效(VAL)信號、命中信號、譯碼輸出均為正邏輯,意味著“0”時(shí)“無效”,“1”時(shí)“有效”?!皵喽ā笔侵冈撔盘枮椤坝行А睜顟B(tài),即輸出“1”,“否定”則指該信號為“無效”狀態(tài),即輸出“0”。有效信號VAL構(gòu)成環(huán)路狀,存在于各級。為了每一級進(jìn)行區(qū)別,表現(xiàn)為例如“ID級的有效信號”、“EX級的有效信號”、“WB級的有效信號”。
“有效信號(VAL)”存在于各級,級中存在有效指令時(shí)為“1”。指令存在時(shí)為“1”,與是否正在轉(zhuǎn)回?zé)o關(guān)?!皢⒂眯盘?ENA)”存在于每一PLG級,表示是否可執(zhí)行該級的指令。在“啟用信號”為“1”,而且“有效信號”為“1”的級執(zhí)行指令?!笆撞恐羔?HP)信號”在常規(guī)運(yùn)作時(shí),所有的級為“0”。在轉(zhuǎn)回中,僅對應(yīng)啟動轉(zhuǎn)回的始端指令設(shè)定為“1”。對非始端的指令設(shè)定“0”。
“IF級”從取指令單元(指令高速緩存器)1讀出指令,并寫入IWB2。寫入指令時(shí),在有效緩存器50寫入“1”,作為有效信號VAL。有效緩存器50具有與IWB2的各表目對應(yīng)的表目,IWB2存放有效指令時(shí)寫入“1”,不存放該指令時(shí)寫入“0”。
“IS級”以指令陳舊程度的順序發(fā)布“1”,即“有效”的指令。檢測IWB2中存在的指令的斷定,調(diào)查是否可發(fā)布指令。如果可發(fā)布指令,就執(zhí)行指令。指令正在轉(zhuǎn)回時(shí),不是從指令緩存器發(fā)布,而是發(fā)布正在轉(zhuǎn)回的PLG的指令。
“ID級”對指令進(jìn)行譯碼。從GPR21讀出源寄存器。進(jìn)行數(shù)據(jù)旁路。
“EX級”執(zhí)行指令。在裝載指令的情況下,根據(jù)源寄存器值計(jì)算存儲器地址。該地址中,參照TLB23,從虛擬地址變換到物理地址。TLB23命中時(shí),獲得正確的物理地址。TLB23命中失誤時(shí),得不到正確的物理地址。用TLB23輸出的TLB命中信號判斷是命中還是命中失誤。在TLB命中寄存器32存放TLB命中信號。
用變換所得的物理地址參照數(shù)據(jù)高速緩存單元24。數(shù)據(jù)高速緩存單元24命中時(shí),數(shù)據(jù)高速緩存單元24“斷定”命中信號。將命中信號存放到高速緩存命中寄存器31。命中時(shí),數(shù)據(jù)高速緩存器輸出數(shù)據(jù)。在裝載數(shù)據(jù)寄存器33存放該數(shù)據(jù)。也在此級執(zhí)行加法運(yùn)算等算術(shù)運(yùn)算指令。
“WB級”在有效信號VAL為“1”,而且啟用信號ENA為“1”時(shí),將運(yùn)算結(jié)果、裝載數(shù)據(jù)寫入到GPR21(Write Back)。在TLB命中寄存器32、高速緩存命中寄存器31均為“1”時(shí),即TLB命中而且高速緩存也命中時(shí),數(shù)據(jù)能正常裝載,因而將PLG(數(shù)據(jù)寄存器)33的值寫入GPR21。
在TLB命中寄存器32、高速緩存命中寄存器31哪一方的值為“0”時(shí),即命中失誤時(shí),不能正常裝載,因而進(jìn)行轉(zhuǎn)回運(yùn)作。指令譯碼器(B)對指令的存放指令操作碼的數(shù)據(jù)存放部20進(jìn)行譯碼,并輸出表示執(zhí)行中的指令是否裝載指令的標(biāo)記信號FLA。轉(zhuǎn)回判斷電路26將該標(biāo)記信號FLA、TLB寄存器32中存放的信號、高速緩存命中寄存器31存放的信號、啟用信號ENA和有效信號VAL作為輸入,進(jìn)行下面的運(yùn)作。即,在TLB命中為“1”而且高速緩存命中為“0”而且啟用信號為“1”而且有效信號為“1”時(shí),斷定轉(zhuǎn)回開始信號RBS。
這時(shí),高速緩存重裝電路22開始高速緩存重裝運(yùn)作。即,開始從外存儲器70讀入數(shù)據(jù),并將讀入的數(shù)據(jù)寫入數(shù)據(jù)高速緩存單元24和TLB23。對數(shù)據(jù)高速緩存單元24和TLB23的寫入結(jié)束時(shí),斷定重裝完成信號RFC。
在各級之間環(huán)狀連接有效信號VAL、首部指針信號HP。隨著指令沿流水線級移動,把內(nèi)容不斷傳到下一級。
轉(zhuǎn)回運(yùn)作如圖4所示,本發(fā)明實(shí)施例的轉(zhuǎn)回處理器系統(tǒng)一面使其內(nèi)部狀態(tài)轉(zhuǎn)移,一面執(zhí)行轉(zhuǎn)回運(yùn)作。圖4中,ST0、ST1、ST2、ST3、ST4分別表示狀態(tài)轉(zhuǎn)移?!俺R?guī)運(yùn)作”、“轉(zhuǎn)回運(yùn)作”、“始端指令對準(zhǔn)運(yùn)作”和“指令再發(fā)布運(yùn)作”表示各運(yùn)作狀態(tài),C1、C2、C3、C4表示各運(yùn)作狀態(tài)內(nèi)部的狀態(tài)轉(zhuǎn)移。即,ST0表示初始化,表示從初始狀態(tài)到“常規(guī)運(yùn)作”的狀態(tài)轉(zhuǎn)移。ST1表示從“常規(guī)運(yùn)作”到“轉(zhuǎn)回運(yùn)作”的狀態(tài)轉(zhuǎn)移,轉(zhuǎn)回開始信號RBS斷定,而且“首部指針”為“1”。
ST2表示從“轉(zhuǎn)回運(yùn)作”到“始端指令對準(zhǔn)運(yùn)作”的狀態(tài)轉(zhuǎn)移,重裝完成信號RFC斷定。ST3表示從“始端指令對準(zhǔn)運(yùn)作”到“指令再發(fā)布運(yùn)作”的狀態(tài)轉(zhuǎn)移。ST4表示從“指令再發(fā)布運(yùn)作”到“常規(guī)運(yùn)作”的狀態(tài)轉(zhuǎn)移,首部指針為“0”。C1表示“常規(guī)運(yùn)作”的內(nèi)部狀態(tài)轉(zhuǎn)移,C2表示“轉(zhuǎn)回運(yùn)作”的內(nèi)部狀態(tài)轉(zhuǎn)移,C3表示“始端指令對準(zhǔn)運(yùn)作”的內(nèi)部狀態(tài)轉(zhuǎn)移,C4表示“指令再發(fā)布運(yùn)作”的內(nèi)部狀態(tài)轉(zhuǎn)移。
下面說明轉(zhuǎn)回運(yùn)作。
(1)WB級中斷定轉(zhuǎn)回開始信號RBS時(shí),轉(zhuǎn)回控制電路25開始運(yùn)作。
(i)轉(zhuǎn)回控制電路25在轉(zhuǎn)回開始信號RBS為“1”時(shí),使內(nèi)部狀態(tài)轉(zhuǎn)移到“轉(zhuǎn)回運(yùn)作”的運(yùn)作狀態(tài)。
(ii)作為IS級的首部指針(HP)用的PLG34中存放的信號,輸出“1”。據(jù)此,將轉(zhuǎn)回的始端指令對應(yīng)的首部指針(HP)設(shè)定為“1”。但從其下一周期開始,進(jìn)行的運(yùn)作接收環(huán)路側(cè)(WB級)的值,并進(jìn)行輸出,使其原樣直通。
(iii)進(jìn)行控制,使IWB2、有效緩存器50的輸出連接的MUX11、49對環(huán)路側(cè)輸出。2個(gè)MUX11、49分別都輸入來自IS級的信號和來自環(huán)路側(cè)(WB級)的信號。非轉(zhuǎn)回運(yùn)作(常規(guī)運(yùn)作)中,進(jìn)行運(yùn)作,以選擇IS級側(cè),并對其輸出。轉(zhuǎn)回運(yùn)作時(shí),按照選擇環(huán)路側(cè)的要求進(jìn)行運(yùn)作,使指令和有效信號循環(huán)運(yùn)作。
(iv)輸出“0”,作為IS級的啟用信號。據(jù)此,各級的啟用信號依次為“0”。開始轉(zhuǎn)回運(yùn)作時(shí),保持上述狀態(tài),同時(shí)使指令等循環(huán)。
(2)高速緩存重裝電路22從外存儲器讀數(shù)據(jù),并且完成對高速緩存單元24和TLB23的重裝時(shí),斷定重裝完成信號RFC。轉(zhuǎn)回控制電路25如果斷定重裝完成信號RFC,就進(jìn)行以下的運(yùn)作。
(i)使內(nèi)部狀態(tài)轉(zhuǎn)移到“始端指令對準(zhǔn)運(yùn)作”。
(ii)首部指針(HP)用的PLG34、35、36、37直通輸出WB級的值。
(iii)繼續(xù)輸出“0”,作為IS級的啟用信號,并且仍使各級的運(yùn)作保持停止。
(iv)對MUX11、49進(jìn)行控制,使其選擇環(huán)路側(cè)。
(v)監(jiān)視WB級(環(huán)路側(cè))的首部指針(HP)信號,使其保持“1”以前的狀態(tài)。
(3)WB級(環(huán)路側(cè))的首部指針(HP)信號為“1”,則執(zhí)行以下的運(yùn)作。
(i)使內(nèi)部狀態(tài)轉(zhuǎn)移到“指令再發(fā)布運(yùn)作”。
(ii)首部指針(HP)用的PLG34、35、36、37直通輸出WB級的值。
(iii)輸出“1”,作為IS級的啟用信號,依次使各級運(yùn)作。
(iv)對MUX11、49進(jìn)行控制,使其選擇環(huán)路側(cè)。
再執(zhí)行的指令循環(huán)一周后,繼續(xù)再次執(zhí)行,直到WB級的首部指針(HP)用的PLG34、35、36、37中存放的信息再次為“1”。
(4)WB級的首部指針(HP)再次為“1”,則進(jìn)行以下的運(yùn)作,以返回常規(guī)模式。
(i)使內(nèi)部狀態(tài)轉(zhuǎn)移到“常規(guī)運(yùn)作”狀態(tài)。
(ii)輸出“0”,作為首部指針(HP)信號。
(iii)輸出“1”,作為IS級的啟用信號。
(iv)對MUX11、49進(jìn)行控制,使其選擇級側(cè),即選擇IWB2側(cè)。
如圖5所示,用步驟S1至步驟S12表示本發(fā)明實(shí)施形態(tài)的轉(zhuǎn)回處理器系統(tǒng)的運(yùn)作的流程。
(a)步驟S1中,從取指令單元1對IWB2供給指令COM的狀態(tài)開始。
(b)接著,步驟S2中從IWB2發(fā)布執(zhí)行前指令I(lǐng)NS。
(c)接著,在步驟S3執(zhí)行該執(zhí)行前指令。
(d)接著,步驟S4中,在執(zhí)行前指令I(lǐng)NS是裝載指令LCOM時(shí),判斷是否發(fā)生高速緩存故障。
(e)如果因裝載指令LCOM而不發(fā)生高速緩存故障,進(jìn)至步驟S5,完成指令。
(f)如果因裝載指令LCOM而發(fā)生高速緩存故障,進(jìn)至步驟S6,利用觸發(fā)信號HMC驅(qū)動高速緩存重裝電路22。
(g)接著,進(jìn)至步驟S7,使流水線寄存器群中的裝載指令和后續(xù)指令為非激活(保持信息)。
(h)接著,進(jìn)至步驟S8,將IWB2凍結(jié)為發(fā)生高速緩存故障時(shí)的狀態(tài)。
(i)接著,進(jìn)至步驟S9,判斷是否使高速緩存重裝電路22完成。
(j)如果不能使高速緩存重裝電路22完成,進(jìn)至步驟S10,使已發(fā)布指令在循環(huán)中回轉(zhuǎn)并保持。
(k)接著,返回步驟S9,重復(fù)判斷是否使高速緩存重裝電路22完成。
(l)能使高速緩存重裝電路22完成,則進(jìn)至步驟S11,判斷循環(huán)中回轉(zhuǎn)的裝載指令是否處在高速緩存故障發(fā)生前的位置。
(m)步驟S11中,在循環(huán)中回轉(zhuǎn)的指令處在高速緩存故障發(fā)生前的位置,則返回步驟S3,執(zhí)行指令I(lǐng)NS 。
(n)步驟S11中,在循環(huán)中回轉(zhuǎn)的指令不處在高速緩存故障發(fā)生前的位置,則進(jìn)至步驟S12,使已發(fā)布指令在循環(huán)中回轉(zhuǎn)。
(o)接著,返回步驟S11,判斷循環(huán)中回轉(zhuǎn)的已發(fā)布指令是否處在高速緩存故障發(fā)生前的位置。
(p)步驟S11中,在循環(huán)中回轉(zhuǎn)的指令處在高速緩存故障發(fā)生前的位置,則返回步驟S3,執(zhí)行指令I(lǐng)NS;步驟S4中,因裝載指令LCOM而不發(fā)生高速緩存故障,則進(jìn)至步驟S5,使指令完成。
以往,與指令的流水線執(zhí)行同步地在PLG之間移動指令、使用的資源的類型、操作數(shù)控制信息等的數(shù)據(jù),并將其保持在PLG。本發(fā)明的指令轉(zhuǎn)回處理器系統(tǒng),其特征為著眼于該保持的信息是再執(zhí)行指令所充分需要的信息,使其在需要再執(zhí)行時(shí)返回構(gòu)成指令發(fā)布部的多路變換器11,加以再利用。依次,控制單元8中,在高速緩存命中寄存器31保持?jǐn)?shù)據(jù)高速緩存單元24的命中失誤信號,在TLB命中寄存器32保持TLB23的命中失誤信號,并且在轉(zhuǎn)回控制單元10輸入成為轉(zhuǎn)回原因的這些觸發(fā)信號,與指令的執(zhí)行同步地對觸發(fā)信號取樣,判斷是否需要轉(zhuǎn)回。這里,觸發(fā)信號相當(dāng)于高速緩存命中寄存器中存放的命中失誤信息HMC和TLB命中寄存器中存放的命中失誤信號HMT,如圖2和圖3所示。高速緩存命中寄存器中存放的命中失誤信號HMC從高速緩存命中寄存器31輸入到高速緩存重裝電路22和轉(zhuǎn)回判斷電路26。TLB命中寄存器中存放的命中失誤信號HMT從TLB命中寄存器32輸入到相同的高速緩存重裝電路22和轉(zhuǎn)回判斷電路26。
下面,使用圖6至圖8說明本發(fā)明的指令轉(zhuǎn)回處理器系統(tǒng)的運(yùn)作。圖6示出發(fā)生數(shù)據(jù)高速緩存故障的狀態(tài),圖7示出轉(zhuǎn)回運(yùn)作狀態(tài),圖8示出轉(zhuǎn)回結(jié)束狀態(tài)。圖6至圖8所示的指令轉(zhuǎn)回處理器系統(tǒng)的組成基本上對應(yīng)于圖1的組成中,PLG為3級的情況。圖6至圖8中也照樣記載譯碼器單元12和控制單元8。圖6至圖8和后面說明的圖9中所示的指令在圖1和圖2所示的譯碼器單元12和控制單元8受到流水線處理。
在發(fā)生數(shù)據(jù)高速緩存故障的狀態(tài)下,如圖6所示,IWB2內(nèi)依次存放“指令4”、“指令5”、“指令6”,并且配置在MUX11的3級PLG1、PLG2、PLG3中分別存放“指令3”、“指令2”、“指令1”。在MUX11輸入IWB2的輸出。PLG3的輸出環(huán)狀返回MUX11的輸入端。MUX11連接轉(zhuǎn)回控制單元10。這里,假設(shè)“指令1”是裝載指令,“指令2”、“指令3”是其后續(xù)指令。圖6示出PLG3中“指令1”發(fā)生數(shù)據(jù)高速緩存故障,并且啟動轉(zhuǎn)回運(yùn)作的瞬間。因此,其后轉(zhuǎn)移到在MUX11選擇“指令1”的模式。
需要轉(zhuǎn)回的情況下,如圖7和圖8所示,其指令到達(dá)末級PLG3時(shí),作為轉(zhuǎn)回的始端的“指令1”到達(dá)末級PLG3,這時(shí)轉(zhuǎn)回控制單元10設(shè)定控制信號,使MUX11選擇末級PLG3的輸出端,并對其輸出。于是,PLG3、PLG2、PLG1保持的“指令1”、“指令2”、“指令3”依次通過MUX11再次返回PLG群構(gòu)成的流水線寄存器,再次保持在PLG中。轉(zhuǎn)回的初始指令和該時(shí)刻已在PLG中的指令(“指令1”~“指令3”)按在環(huán)路循環(huán)的方式,一個(gè)接一個(gè)轉(zhuǎn)回(圖7)。接著,繼續(xù)進(jìn)行轉(zhuǎn)回,直到高速緩存重裝電路22對轉(zhuǎn)回控制電路25通知高速緩存的重裝結(jié)束時(shí),“指令1”再次返回PLG3的位置。
然后,判明啟動轉(zhuǎn)回的“指令1”再次到達(dá)末級PLG3,從而轉(zhuǎn)回正常結(jié)束時(shí),如圖8所示,控制MUX11,使其選擇來自IWB2的新指令(即“指令4”)后,按常規(guī)發(fā)布指令。
這時(shí),在高速緩存故障沒有得到恢復(fù),從而需要再次進(jìn)行轉(zhuǎn)回的情況下,MUX11的控制信號進(jìn)行控制,以繼續(xù)選擇PLG端,使轉(zhuǎn)回運(yùn)作又能繼續(xù)進(jìn)行。然后,重復(fù)執(zhí)行“指令1”~“指令3”,直到轉(zhuǎn)回成功。
圖6至圖8中,假設(shè)PLG1、PLG2、PLG3都填滿指令,但也存在流水線故障不能每一周期發(fā)布指令的情況。該情況下,PLG1、PLG2、PLG3部分為“泡(空)”。在進(jìn)行定時(shí)控制,以解除流水線故障方面,需要該“泡”。因此,即使在進(jìn)行轉(zhuǎn)回運(yùn)作時(shí),也會發(fā)生幾乎相同的故障(有時(shí)部分不是這樣),從而與“常規(guī)執(zhí)行”相同,也需要“泡”。本發(fā)明的實(shí)施形態(tài)的指令轉(zhuǎn)回處理器系統(tǒng)中,采用指令轉(zhuǎn)回方法時(shí),由于已經(jīng)插入該“泡”,不需要新添解除故障用的控制。因此,僅用依次再發(fā)布單純保持在PLG中的指令,就能簡便地實(shí)現(xiàn)轉(zhuǎn)回。
MUX11連接的PLG的級數(shù)不限于3級。存在n級(n為自然數(shù))時(shí),如圖9所示那樣組成,指令按PLG1、PLG2、PLG3、……、PLGn移位。末級PLGn的輸出返回MUX11。利用轉(zhuǎn)回控制單元10的控制,選擇轉(zhuǎn)回運(yùn)作或從IWB2發(fā)布新指令的指令再發(fā)布運(yùn)作。PLG的級數(shù)n增多時(shí),并行處理的速度提高,因而CPU的處理能力提高。另一方面,由于各PLG中使指令保持一定時(shí)間,PLG的級數(shù)n增多,表目的深度加大時(shí),流水線的再啟動需要時(shí)間。從而,指令的執(zhí)行處理速度變慢。因此,作為實(shí)際使用的級數(shù)n,選擇諸如16級、32級左右。
如圖10所示,用于本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)中構(gòu)成高速緩存器的數(shù)據(jù)高速緩存單元24的組成部分包含連接加法器30的虛擬地址存放部51、TLB23、物理地址存放部54和高速緩存部55。加法器30的輸出連接到虛擬地址存放部51,虛擬地址存放部51的輸出輸入到TLB23。TLB23將該虛擬地址存放部51存放的虛擬地址變換成物理地址如下。TLB23中有多個(gè)表目,分別具有有效(valid)段、頁面重寫標(biāo)志(dirty)段、標(biāo)記(TAG)段、物理頁號(Physical Page Number)段。TLB23把虛擬地址存放部51的虛擬頁號(VPNVirtual Page Number)當(dāng)作關(guān)鍵字,對TLB23進(jìn)行檢索從多個(gè)表目中取出一個(gè)。用一致性比較器52比較取出的表目的標(biāo)記段(TAG)值與虛擬地址存放部51內(nèi)存放的虛擬頁號。如果兩者一致,一致比較器52輸出“1”。其表目中,有效(valid)段為“1”(有效)時(shí),與門53的輸出為“1”,TLB23命中,在TLB23中發(fā)現(xiàn)需要的表目。不一致時(shí),TLB23的命中為“0”,在TLB23中找不到需要的表目,因而從存儲器讀出需要的表目,并寫入到TLB23。此運(yùn)作稱為TLB重裝。此后,如果再對TLB23進(jìn)行檢索,就會發(fā)現(xiàn)需要的表目,因而TLB23命中,接著進(jìn)行數(shù)據(jù)高速緩存器的檢索。
命中的TLB23的表目中具有物理頁號段,該段成為裝載指令LCOM的物理地址的高端位。連接該段和成為物理地址的低端位的、虛擬地址存放部51內(nèi)的頁偏移(Page Offset),從而生成物理地址54。
高速緩存器部55由多個(gè)表目組成。各表目具有有效(valid)段、標(biāo)記(TAG)段、數(shù)據(jù)(Data)段。把物理地址的低端位作為索引(INDEX)關(guān)鍵字,對高速緩存器進(jìn)行檢索。比較檢索到的高速緩存器的表目標(biāo)記(TAG)段的值與作為物理地址的高端位的標(biāo)記(TAG)部。在一致性比較器52的輸出為“1”(表示一致)而且有效(valid)段為“1”(有效)的情況下,與門53的輸出為“1”。高速緩存器命中。
表目不一致時(shí),高速緩存器命中為“0”,成為高速緩存故障,高速緩存重裝電路22從存儲器讀出數(shù)據(jù),并寫入到高速緩存器的表目。此后,如果再訪問高速緩存器,就命中,能輸出數(shù)據(jù)。
如圖10所示,在本發(fā)明實(shí)施例的指令轉(zhuǎn)回處理器系統(tǒng)中,進(jìn)行流水線處理的CPU,其組成部分包含指令高速緩存器(ICHACHE)101、連接指令高速緩存器101的IWB2、GPR21、由LD/ST管段102、分支管段103、整數(shù)管段0、整數(shù)管段1、COP1管段107和COP2管段108組成的執(zhí)行流水線、虛擬地址計(jì)算部109、DTLB(Data TLB)110、DCACHE(Data Cache)111、響應(yīng)緩存器112、總線接口單元(BIUBus Interface Unit)113。從指令高速緩存器(ICACHE)101讀取應(yīng)執(zhí)行的指令。將讀取的指令寫入IWB2。接著,從GPR21讀出指令所指定的源寄存器值Rs和Rt。接著,將讀出的源寄存器值送到執(zhí)行部(執(zhí)行流水線)。執(zhí)行流水線有多條。這里,有執(zhí)行裝載/存儲指令的LD/ST管段102、執(zhí)行分支指令的分支管段103、執(zhí)行整數(shù)運(yùn)算指令的整數(shù)管段0和整數(shù)管段1、執(zhí)行協(xié)處理器1的指令的COP1管段107、執(zhí)行協(xié)處理器2的指令的COP2管段108。所執(zhí)行的指令按照其指令的類型,與源寄存器值一起發(fā)送到某一適當(dāng)?shù)膱?zhí)行流水線。LD/ST管段102與虛擬地址計(jì)算部109、DTLB110、DCACHE(Data Cache)111協(xié)同運(yùn)作。即,把GPR21供給的源寄存器值輸入到虛擬地址計(jì)算部109,生成數(shù)據(jù)的虛擬地址51。接著,在DTLB110把虛擬地址51變換成物理地址54,并訪問DCACHE111,以執(zhí)行裝載貯存指令。在高速緩存故障的情況下,把裝載指令LCOM的物理地址傳送到響應(yīng)緩存器112,進(jìn)而使BIU(Bus Interface Unit)113進(jìn)行對外存儲器的數(shù)據(jù)裝載。把BIU113從外存儲器讀出的數(shù)據(jù)寫入響應(yīng)緩存器112,接著又寫入DCACHE111。此運(yùn)作稱為高速緩存重裝運(yùn)作,寫入后,再執(zhí)行高速緩存故障的指令。
接著,各執(zhí)行流水線在結(jié)果總線114輸出指令的結(jié)果,即運(yùn)算結(jié)果和裝載數(shù)據(jù),并將其寫回到GPR21,從而結(jié)束指令的執(zhí)行。
本發(fā)明的轉(zhuǎn)回方式有以下的優(yōu)點(diǎn)。
利用已有的PLG,因而添加的硬件是MUX11及其控制邏輯,能以低成本實(shí)現(xiàn)整個(gè)系統(tǒng)。
不需要為轉(zhuǎn)回運(yùn)作而占用IBS2的若干表目,能將IWB表目用于原本的指令發(fā)布。而且,能先讀的指令數(shù)增多,因而能有效利用指令級并行性(InstructionLevel Parallelism),使性能提高。
進(jìn)行轉(zhuǎn)回運(yùn)作時(shí),不需要檢測流水線故障(數(shù)據(jù)故障、資源故障、控制故障),因而控制簡單,能用低成本實(shí)現(xiàn)。
其它實(shí)施例如上文所述,本發(fā)明有實(shí)施例記載,但不應(yīng)構(gòu)成此揭示的一部分的論述和附圖理解為限定本發(fā)明。此揭示會使本領(lǐng)域的工作人員明白各種替換實(shí)施方式、實(shí)施例和運(yùn)用技術(shù)。因此,本發(fā)明的技術(shù)范圍僅由根據(jù)上述說明妥當(dāng)?shù)臋?quán)利要求書范圍所涉及的發(fā)明特定事項(xiàng)決定。
根據(jù)本發(fā)明,能實(shí)現(xiàn)一種利用已有的流水線寄存器,可將IWB用于指令發(fā)布,可有效利用指令級并行性,并且控制簡單、成本低、性能高的指令轉(zhuǎn)回處理器系統(tǒng)、指令轉(zhuǎn)回方法和指令轉(zhuǎn)回程序。
權(quán)利要求
1.一種指令轉(zhuǎn)回處理器系統(tǒng),其特征在于,具有存放按一定順序排列的多條執(zhí)行前指令的指令窗緩存器、在一個(gè)輸入端輸入所述指令窗緩存器的輸出的多路變換器、以及連接在所述多路變換器的輸出端與所述多路變換器的另一輸入端之間的轉(zhuǎn)回單元。
2.如權(quán)利要求1中所述的指令轉(zhuǎn)回處理器系統(tǒng),其特征在于,所述轉(zhuǎn)回單元具有保持執(zhí)行段流水線長度份額的所述多路變換器的輸出的流水線寄存器。
3.如權(quán)利要求1中所述的指令轉(zhuǎn)回處理器系統(tǒng),其特征在于,所述轉(zhuǎn)回單元具有環(huán)狀級聯(lián)的多級流水線寄存器。
4.如權(quán)利要求2或3中所述的指令轉(zhuǎn)回處理器系統(tǒng),其特征在于,所述流水線寄存器具有存放指令的第1源寄存器值的數(shù)據(jù)存放部、存放指令的第2源寄存器值的數(shù)據(jù)存放部、存放指令的目的處編號的數(shù)據(jù)存放部、以及存放指令的操作碼的數(shù)據(jù)存放部。
5.如權(quán)利要求1中所述的指令轉(zhuǎn)回處理器系統(tǒng),其特征在于,還具有連接所述轉(zhuǎn)回單元的譯碼器單元。
6.如權(quán)利要求5中所述的指令轉(zhuǎn)回處理器系統(tǒng),其特征在于,還具有連接所述譯碼器單元的控制單元。
7.如權(quán)利要求5中所述的指令轉(zhuǎn)回處理器系統(tǒng),其特征在于,所述譯碼器單元具有對所述多級流水線寄存器內(nèi)的第1級流水線寄存器送來的指令進(jìn)行譯碼的第1指令譯碼器。
8.如權(quán)利要求6中所述的指令轉(zhuǎn)回處理器系統(tǒng),其特征在于,還具有連接所述控制單元并且對所述多路變換器發(fā)布轉(zhuǎn)回控制信號的轉(zhuǎn)回控制單元。
9.一種指令轉(zhuǎn)回方法,其特征在于,具有發(fā)生高速緩存故障時(shí)在轉(zhuǎn)回單元中使未完成的指令在循環(huán)中回轉(zhuǎn)并保持的轉(zhuǎn)回步驟、在高速緩存故障未解除且轉(zhuǎn)回未正常結(jié)束時(shí)重復(fù)進(jìn)行轉(zhuǎn)回步驟的步驟、以及轉(zhuǎn)回正常結(jié)束時(shí)對多路變換器發(fā)布轉(zhuǎn)回控制信號并且從指令窗緩存器發(fā)布未發(fā)布的指令的再發(fā)布步驟。
10.一種指令轉(zhuǎn)回方法,其特征在于,用于指令轉(zhuǎn)回處理器系統(tǒng)中,該系統(tǒng)具有按一定順序排列多條執(zhí)行前指令的指令窗緩存器、將所述指令窗緩存器的輸出作為一個(gè)輸入的多路變換器、以及連接所述多路變換器的轉(zhuǎn)回單元,并且所述多路變換器的另一輸入端連接所述轉(zhuǎn)回單元的輸出端,所述指令轉(zhuǎn)回方法具有對未完成的指令進(jìn)行轉(zhuǎn)回時(shí)選擇所述轉(zhuǎn)回單元方的輸入的轉(zhuǎn)回步驟、以及發(fā)布未發(fā)布的指令時(shí)選擇來自所述指令窗緩存器的輸入的指令再發(fā)布步驟。
11.一種指令轉(zhuǎn)回方法,其特征在于,具有以下的步驟執(zhí)行指令窗緩存器發(fā)布的執(zhí)行前指令的步驟;發(fā)生高速緩存故障時(shí)驅(qū)動高速緩存重裝電路,并且流水線寄存器中的裝載指令和后續(xù)指令為非激活,使所述指令窗緩存器凍結(jié)在發(fā)生所述高速緩存故障時(shí)的狀態(tài)的步驟;返回步驟,如果所述高速緩存重裝電路完成而且裝載指令處于所述高速緩存故障發(fā)生前的位置,則返回執(zhí)行所述裝載指令和后續(xù)指令的步驟;如果所述高速緩存重裝電路未完成,則使所述指令窗緩存器發(fā)布的已發(fā)布指令循環(huán)回轉(zhuǎn)并保持;如果所述高速緩存重裝電路完成而且所述裝載指令不處于所述高速緩存故障發(fā)生前的位置,則循環(huán)回轉(zhuǎn)所述已發(fā)布指令。
12.一種指令轉(zhuǎn)回程序,其特征在于,使指令轉(zhuǎn)回處理器系統(tǒng)執(zhí)行的算法包含以下的步驟執(zhí)行指令窗緩存器發(fā)布的執(zhí)行指令;發(fā)生高速緩存故障時(shí)驅(qū)動高速緩存重裝電路,并且流水線寄存器中的裝載指令和后續(xù)指令為非激活,使所述指令窗緩存器凍結(jié)在發(fā)生所述高速緩存故障時(shí)的狀態(tài);如果所述高速緩存重裝電路完成而且裝載指令處于所述高速緩存故障發(fā)生前的位置,則返回執(zhí)行所述裝載指令和后續(xù)指令的步驟的返回步驟;以及如果所述高速緩存重裝電路未完成,則循環(huán)回轉(zhuǎn)并保持所述指令窗緩存器發(fā)布的已發(fā)布指令;如果所述高速緩存重裝電路完成而且所述裝載指令不處于所述高速緩存故障發(fā)生前的位置,則循環(huán)回轉(zhuǎn)所述已發(fā)布指令。
全文摘要
提供一種指令轉(zhuǎn)回處理器系統(tǒng),具有轉(zhuǎn)回運(yùn)作時(shí)在環(huán)形流水線寄存器PLG群內(nèi)保持再執(zhí)行用的指令、指令再發(fā)布運(yùn)作時(shí)從指令窗緩存器IWB再發(fā)布指令等功能,并且成本低,性能高。該指令轉(zhuǎn)回處理器系統(tǒng)的特征為具有保持應(yīng)發(fā)布的指令并且在可發(fā)布的定時(shí)發(fā)布指令的IWB(2)、連接IWB(2)的多路變換器MUX(11)、連接MUX(11)并且由多級PLG(13~16)組成的轉(zhuǎn)回單元(9)、連接轉(zhuǎn)回單元(9)的譯碼器單元(12)、連接譯碼器單元(12)的控制單元(8)、以及連接控制單元(8)并且對MUX(11)發(fā)布轉(zhuǎn)回控制信號的轉(zhuǎn)回控制單元(10),在MUX(11)的另一輸入端連接轉(zhuǎn)回控制單元(9)的輸出。
文檔編號G06F9/30GK1525309SQ20041000762
公開日2004年9月1日 申請日期2004年2月25日 優(yōu)先權(quán)日2003年2月26日
發(fā)明者照山龍生 申請人:株式會社東芝