專利名稱:由多個指令集使用的寄存器間映射的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)領(lǐng)域。具體地,本發(fā)明涉及支持多個指令集的數(shù)據(jù)處理系統(tǒng)以及可提供由該多個指令集使用的寄存器的方式。
背景技術(shù):
提供支持多個指令集的數(shù)據(jù)處理系統(tǒng)是已知的。這種數(shù)據(jù)處理系統(tǒng)的一些實例為設(shè)立于英國Cambridge的ARM有限公司所制造的處理器設(shè)計,所述處理器設(shè)計支持ARM指令集(ARM instruction set)及 Thumb 指令集(Thumb instruction set)。ARM 指令系以32位編碼,并且,指定對保存于32位寄存器內(nèi)的數(shù)據(jù)值所執(zhí)行的32位數(shù)據(jù)處理操作(例如,ADD、SUB、LDR、STR等)。Thumb指令以16位編碼,并且,指定對存儲于32位寄存器內(nèi)的32位數(shù)據(jù)值所執(zhí)行的32位數(shù)據(jù)處理操作。由ARM有限公司所設(shè)計的Neon及VFP延伸架構(gòu),分別提供對存儲于具有在程控下所指定的大小的寄存器內(nèi)的數(shù)據(jù)值操作的單一指令多重數(shù)據(jù)(single instructionmultiple data; SIMD)及浮點指令。希望在提供處理器時減少所需要的電路資源量。對形成寄存器的電路組件的提供表不一種這樣的電路資源。
發(fā)明內(nèi)容
從本發(fā)明的一個方面來看,其提供一種用于處理數(shù)據(jù)的裝置,其包括:多個寄存器,其被配置為存儲待處理的數(shù)據(jù)值;處理電路,其耦合至所述多個寄存器,并且,被配置為對存儲于所述多個寄存器中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作;指令譯碼器,其耦合至所述處理電路,并且,響應(yīng)于程序指令流來控制所述處理電路,以執(zhí)行所述數(shù)據(jù)處理操作;其中,所述指令譯碼器響應(yīng)于第一指令集的程序指令來控制所述處理電路,以使用由所述多個寄存器所提供的N位架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作,其中,N為正整數(shù)值;所述指令譯碼器響應(yīng)于第二指令集的程序指令來控制所述處理電路,以使用由所述多個寄存器所提供的M位架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作,其中,M為正整數(shù)值,并且,所述多個寄存器中的至少一些寄存器被所述第一指令集的程序指令及所述第二指令集的程序指令共享;所述指令譯碼器被配置為當判定要訪問所述多個寄存器中的哪一個寄存器,以作為呈現(xiàn)給所述第一指令集的程序指令以使用的第一組N位架構(gòu)寄存器的部分時,譯碼在所述第一指令集的程序指令內(nèi)的寄存器指定字段;所述指令譯碼器被配置為當判定要訪問所述多個寄存器中的哪一個寄存器,以作為呈現(xiàn)給所述第二指令集的程序指令使用的第二組M位架構(gòu)寄存器的部分時,譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段;并且,所述指令譯碼器被配置為提供在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器之間的第一映射,以及在所述第二指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器之間的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一組的每個寄存器具有到所述第二組的寄存器的預(yù)定一對一映射,并且,與所述第二組的所述寄存器共享在所述多個寄存器內(nèi)的共用寄存器的共享部分,所述共用寄存器的非共享部分系無法使用所述第一指令集的指令訪問;以及存儲可使用所述第二組的寄存器訪問的值。本發(fā)明技術(shù)認知到,即使不同指令集對不同寬度的架構(gòu)寄存器操作,對于不同指令集而言,共享多個寄存器的資源也是可能的。此外,通過在由兩個指令集所使用的寄存器指定符之間安排預(yù)定一對一映射,對于所述指令集中的至少一者而言,訪問由另一指令集存儲于寄存器內(nèi)的所有值為可能的。此舉有益于以兩個指令集撰寫的程序的可互操作性,例如,在使用兩個指令集中的不同者所撰寫的程序之間共享數(shù)據(jù)值。將理解,指令通??珊幸粋€以上的寄存器指定字段。一些指令亦可由隱含方式來指定特定寄存器的使用,例如,PUSH指令及POP指令以隱含方式指定了堆棧指針寄存器的使用。雖然如呈現(xiàn)給第一指令集的第一組寄存器與如呈現(xiàn)給第二指令集的第二組寄存器在數(shù)量上可能不同,但是至少在優(yōu)選實施例中,第一組及第二組包括相同數(shù)量的寄存器。此有助于達成所提供的寄存器資源的高水平的再利用性,并且促進兩個指令集之間有效率的互操作。M位架構(gòu)寄存器可為2N位架構(gòu)寄存器。多個寄存器可為2N位寄存器,以促進通過第二指令集來操縱2N位數(shù)據(jù)值。在此狀況下,第一指令集可經(jīng)安排以訪問2N位寄存器的最低有效N位。寄存器大小及數(shù)據(jù)寬度可變化,但是在至少一些優(yōu)選實施例中,N=32??赏ㄟ^在程序指令內(nèi)的寄存器指定字段來完全指定待訪問的寄存器?;蛘撸郊訝顟B(tài)(諸如,當前異常狀態(tài))可與寄存器指定字段的值相結(jié)合,以判定要訪問哪一個架構(gòu)寄存器。在本發(fā)明的至少一些優(yōu)選實施例中,第一指令集以此方式操作。當異常狀態(tài)在指定對于寄存器指定字段的給定值將使用哪一個架構(gòu)寄存器中提供額外自由度時,將具有寄存器指定字段的共同值及不同異常狀態(tài)的所訪問的架構(gòu)寄存器的群稱為寄存器的成組群。此安排可有助于輔助快速異常處理。將理解,在使用寄存器重新命名(例如)來促進亂序(out-of-order)處理的實施例中,映射到架構(gòu)寄存器的物理寄存器將改變,并且,在處理中任何給定點處,可能存在對應(yīng)于相同架構(gòu)寄存器的多個物理寄存器,但在程序順序的不同點處。為簡化指令譯碼及識別待使用的正確架構(gòu)寄存器,由指令譯碼器使用的映射可使得在寄存器的成組群內(nèi),第一指令集的程序指令內(nèi)的寄存器指定字段的最低有效位的值,其指定這些成組寄存器中的一者,被安排為與第二指令集的程序指令的寄存器指定字段的最低有效位共用的值,其映射到相同的架構(gòu)寄存器。此舉簡化了譯碼。利用上述關(guān)于成組寄存器的安排的一些實施例的特征在于,指令譯碼器系被配置為提供映射,使得對于第二組寄存器中與在第二組的程序指令內(nèi)的寄存器指定字段的遞增值序列相對應(yīng)的部分而言,在第一指令集的程序指令內(nèi)的寄存器指定字段的對應(yīng)值在兩個值之間交替。當用所述第二指令集的程序指令來訪問時,本發(fā)明所提供的所述多個寄存器包括空值寄存器,所述空值寄存器存儲預(yù)定空值,并且所述第一指令集并不具有映射至所述空值寄存器的寄存器。當讀此空值寄存器時,其可傳回空值,并且,將空值寄存器指定為待寫入的寄存器的指令被解釋為丟棄結(jié)果。在一些實施例中,所述空值為零。在一些實施例中,當執(zhí)行所述第一指令集的程序指令時,程序計數(shù)器寄存器存儲值,所述值指示正執(zhí)行的程序指令的存儲器地址,并且,所述程序計數(shù)器寄存器在映射到所述第二組寄存器的所述第一組之外。因此,由如以上所論述的指令譯碼器所提供的一對一映射并未包括所述程序計數(shù)器寄存器。從本發(fā)明的另一方面來看,其提供一種用于處理數(shù)據(jù)的裝置,其包括:多個寄存器部件,用于存儲待處理的數(shù)據(jù)值;處理部件,用于對存儲于所述多個寄存器部件中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作;指令譯碼部件,用于響應(yīng)于程序指令流而控制所述處理電路,以執(zhí)行所述數(shù)據(jù)處理操作;其中,所述指令譯碼部件響應(yīng)于第一指令集的程序指令來控制所述處理部件,以使用由所述多個寄存器部件所提供的N位架構(gòu)寄存器部件來執(zhí)行所述數(shù)據(jù)處理操作,其中,N為正整數(shù)值;所述指令譯碼部件響應(yīng)于第二指令集的程序指令來控制所述處理部件,以使用由所述多個寄存器部件所提供的M位架構(gòu)寄存器部件來執(zhí)行所述數(shù)據(jù)處理操作,其中,M為正整數(shù)值,并且,所述多個寄存器部件中的至少一些寄存器由所述第一指令集的程序指令及所述第二指令集的程序指令共享;所述指令譯碼器部件被配置為當判定要訪問所述多個寄存器部件中的哪一個寄存器,以作為呈現(xiàn)給所述第一指令集的程序指令使用的第一組N位架構(gòu)寄存器部件的部分時,譯碼在所述第一指令集的程序指令內(nèi)的寄存器指定字段;所述指令譯碼器部件被配置為當判定要訪問所述多個寄存器部件中的哪一個寄存器,以作為呈現(xiàn)給所述第二指令集的程序指令使用的第二組M位架構(gòu)寄存器部件的部分時,譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段;并且,所述指令譯碼部件系被配置為提供在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器部件之間的第一映射,以及在所述第二指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器部件之間的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一組的每個寄存器部件具有到所述第二組的寄存器部件的預(yù)定一對一映射,并且,與所述第二組的所述寄存器部件共享在所述多個寄存器部件內(nèi)的共用寄存器部件的共享部分,以及無法使用所述第一指令集的指令訪問的所述共用寄存器部件的非共享部分,并存儲可使用所述第二組的寄存器部件訪問的值。從本發(fā)明的另一方面來看,提供一種處理數(shù)據(jù)的方法,其包括以下步驟:在多個寄存器中存儲待處理的數(shù)據(jù)值;對存儲于所述多個寄存器中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作;譯碼程序指令流來控制所述執(zhí)行;其中,所述譯碼響應(yīng)于第一指令集的程序指令來控制所述數(shù)據(jù)處理操作的所述執(zhí)行,所述數(shù)據(jù)處理操作的所述執(zhí)行使用由所述多個寄存器所提供的N位架構(gòu)寄存器,其中,N為一正整數(shù)值;所述譯碼響應(yīng)于第二指令集的程序指令來控制所述數(shù)據(jù)處理的所述執(zhí)行,所述數(shù)據(jù)處理的所述執(zhí)行使用由所述多個寄存器所提供的M位架構(gòu)寄存器,其中,M為正整數(shù)值,并且,所述多個寄存器中的至少一些寄存器被所述第一指令集的程序指令及所述第二指令集的程序指令共享;當判定要訪問所述多個寄存器中的哪一個寄存器,以作為呈現(xiàn)給所述第一指令集的程序指令使用的第一組N位架構(gòu)寄存器的部分時,所述譯碼對在所述第一指令集的程序指令內(nèi)的寄存器指定字段進行譯碼;當判定要訪問所述多個寄存器中的哪一個寄存器以作為呈現(xiàn)給所述第二指令集的程序指令使用的第二組M位架構(gòu)寄存器的部分時,所述譯碼步驟譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段;并且所述譯碼提供在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器之間的第一映射,以及在所述第二指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器之間的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一組的每個寄存器具有至所述第二組的寄存器的預(yù)定一對一映射,并且,與所述第二組的所述寄存器共享在所述多個寄存器內(nèi)的共用寄存器的共享部分,所述共用寄存器的非共享部分無法使用所述第一指令集的指令訪問,并且,存儲可使用所述第二組的寄存器訪問的值。從本發(fā)明的另一方面來看,其提供一種用于處理數(shù)據(jù)的裝置,其包括:多個寄存器,其被配置為存儲待處理的數(shù)據(jù)值;處理電路,其耦合至所述多個寄存器,且被配置為對存儲于所述多個寄存器中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作;指令譯碼器,其耦合至所述處理電路,并且,響應(yīng)于程序指令流以控制所述處理電路,以執(zhí)行所述數(shù)據(jù)處理操作;其中,所述指令譯碼器響應(yīng)于第一指令集的程序指令來控制所述處理電路,以使用由所述多個寄存器所提供的第一組架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作;當執(zhí)行所述第一指令集的程序指令時,所述裝置被配置為在多個異常狀態(tài)中操作,并且,所述指令譯碼器被配置為當判定要使用哪一個架構(gòu)寄存器時,將在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段及所述多個異常狀態(tài)的當前異常狀態(tài)一起譯碼;所述指令譯碼器響應(yīng)于第二指令集的程序指令來控制所述處理電路,以使用第二組架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作,所述第二組架構(gòu)寄存器被所述多個寄存器提供且與所述第一指令集的程序指令共享;并且所述指令譯碼器被配置為當判定要使用哪一個架構(gòu)寄存器時,在不依賴異常狀態(tài)的情況下譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段。從本發(fā)明的另一方面來看,其提供一種用于處理數(shù)據(jù)的裝置,其包括:多個寄存器部件,用于存儲待處理的數(shù)據(jù)值;處理部件,用于對存儲于所述多個寄存器部件中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作;指令譯碼部件,用于響應(yīng)于程序指令流而控制所述處理電路,以執(zhí)行所述數(shù)據(jù)處理操作;其中,所述指令譯碼器部件響應(yīng)于第一指令集的程序指令來控制所述處理部件,以使用由所述多個寄存器部件所提供的第一組架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作;當執(zhí)行所述第一指令集的程序指令時,所述裝置被配置為在多個異常狀態(tài)中操作,并且,所述指令譯碼器被配置為當判定要使用哪一個架構(gòu)寄存器時,將在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段及所述多個異常狀態(tài)的當前異常狀態(tài)一起譯碼;所述指令譯碼器部件響應(yīng)于第二指令集的程序指令來控制所述處理部件,以使用第二組架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作,所述第二組架構(gòu)寄存器由所述多個寄存器部件提供且與所述第一指令集的程序指令共享;并且所述指令譯碼器部件被配置為當判定要使用哪一個架構(gòu)寄存器時,在不依賴異常狀態(tài)的情況下譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段。從本發(fā)明的另一方面來看,其提供一種處理數(shù)據(jù)的方法,其包括以下步驟:在多個寄存器中存儲待處理的數(shù)據(jù)值;對存儲于所述多個寄存器中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作;譯碼程序指令流,以控制所述數(shù)據(jù)處理操作的所述執(zhí)行;其中,所述譯碼響應(yīng)于第一指令集的程序指令來控制所述數(shù)據(jù)處理操作的所述執(zhí)行,所述數(shù)據(jù)處理操作的所述執(zhí)行使用由所述多個寄存器所提供的第一組架構(gòu)寄存器;當執(zhí)行所述第一指令集的程序指令時,在多個異常狀態(tài)中的一者中操作,并且,將在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段及所述多個異常狀態(tài)的當前異常狀態(tài)一起譯碼,以判定要使用哪一個架構(gòu)寄存器;所述譯碼響應(yīng)于第二指令集的程序指令來控制所述數(shù)據(jù)處理操作的所述執(zhí)行,所述數(shù)據(jù)處理操作的所述執(zhí)行使用第二組架構(gòu)寄存器,所述第二組架構(gòu)寄存器由所述多個寄存器提供且與所述第一指令集的程序指令共享;并且當判定要使用哪一個架構(gòu)寄存器時,所述譯碼在不依賴異常狀態(tài)的情況下譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段。現(xiàn)將參照附圖僅以示例的方式來描述發(fā)明的實施例。
圖1示意地圖示支持對32位數(shù)據(jù)值操作的第一指令集及對64位數(shù)據(jù)值操作的第二指令集的數(shù)據(jù)處理系統(tǒng);圖2示意地圖示圖1的數(shù)據(jù)處理系統(tǒng)的64位通用寄存器;圖3示意地圖示使用圖2的通用寄存器對32位數(shù)據(jù)處理值操作的數(shù)據(jù)處理指令的動作;圖4示意地圖示使用圖2的通用寄存器對64位數(shù)據(jù)處理值操作的數(shù)據(jù)處理指令的動作;圖5示意地圖示對32位數(shù)據(jù)處理值操作且包括寄存器指定字段的指令的實例;圖6示意地圖示對64位數(shù)據(jù)處理值操作且包括寄存器指定字段的指令的實例;圖7示意地圖示呈現(xiàn)至對32位數(shù)據(jù)處理值操作的第一指令集程序指令的寄存器;
圖8示意地圖示呈現(xiàn)至對64位數(shù)據(jù)處理值操作的第二指令集的寄存器;圖9示意地圖示圖7與圖8之間的映射;圖10為示意地圖示指令的譯碼的流程圖;圖11示意地圖示來自不同指令集的程序指令的寄存器指定字段的譯碼;以及圖12示意地圖示虛擬機實現(xiàn)。
具體實施例方式圖1示意地圖示包括耦合至存儲器6的處理器4的數(shù)據(jù)處理系統(tǒng)2。處理器4包括多個寄存器8,其被形成為31*64位通用寄存器,加上總是傳回零值的空寄存器。這種由并未使用寄存器重新命名的實施例中的處理器4的硬件所提供的寄存器。在使用寄存器重新命名的實施例中,架構(gòu)寄存器(例如,如由指令指定的及如在程序設(shè)計師的模型中考慮的寄存器)可映射至不同物理寄存器,且多個物理寄存器可同時保存在程序命令不同時間處對應(yīng)于相同架構(gòu)寄存器的值。寄存器8的使用系經(jīng)由呈現(xiàn)給第一指令集的第一組寄存器(一組32位架構(gòu)寄存器),且系經(jīng)由呈現(xiàn)給第二指令集的第二組寄存器(一組64位架構(gòu)寄存器),所述第一指令集包括以32位編碼且對32位數(shù)據(jù)值(32位指令)操作的指令,所述第二指令集包括以32位編碼且對64位數(shù)據(jù)值(64位指令)操作的指令。這種指令集內(nèi)的指令系依照使用32位來編碼,但是由這種指令集所作用的數(shù)據(jù)值的寬度卻不同。處理電路10系耦合至多個寄存器8,且為包括乘法器12、移位器14及加法器16的數(shù)據(jù)路徑的形式。指令譯碼器18 (其包括寄存器映射電路)響應(yīng)由指令譯碼器18所譯碼的程序指令而產(chǎn)生控制信號20。這種控制信號20控制且配置處理電路10,且控制對多個通用寄存器8內(nèi)的寄存器的訪問。將理解到,處理電路10系以簡化形式來展示以提高明確性,且實際上將可具有更多電路組件。數(shù)據(jù)處理系統(tǒng)2使用狀態(tài)數(shù)據(jù)(其可能為或可能不為使用者可讀式),來控制是將程序指令譯碼為第一指令集的程序指令還是第二指令集的程序指令,例如,可將模式位或模式狀態(tài)設(shè)定為指示哪一個指令集為在使用中。在不同指令集內(nèi)的指令的編碼可為非正交(non-orthogonal),因為相同指令位型樣可發(fā)生于兩個指令集中且對應(yīng)于這些指令集內(nèi)的不同指令。待譯碼的程序指令從存儲第一指令集的程序24及第二指令集的程序26的存儲器6,被提取至指令管線22中。當程序指令在指令管線22內(nèi)到達譯碼階段時,則將其傳遞至指令譯碼器18以譯碼,而產(chǎn)生控制信號20。指令譯碼器18亦響應(yīng)來自指令集選擇電路28的信號,以指示哪一個指令集當前為在使用中,且相應(yīng)地由指令管線22所呈現(xiàn)以譯碼的程序指令是應(yīng)譯碼為第一指令集的32位指令還是第二指令集的64位指令。當指令譯碼器18正譯碼來自第一指令集的指令(32位指令)時,則指令譯碼器亦響應(yīng)來自32位異常模式電路30的指示處理器4當前為在哪一模式中操作的信號。如以下將描述的,當執(zhí)行第一指令集的程序指令時需要當前異常模式,以指定呈現(xiàn)至第一指令集的第一組寄存器中的哪一個寄存器將被使用。圖2圖示來自圖1的多個通用寄存器8中的一者。此通用寄存器為64位寄存器。當執(zhí)行第一指令集的程序指令(32位指令)時,訪問并操縱圖2的寄存器的最低有效位部分。在優(yōu)選實施例中,盡管最高有效位部分可調(diào)至零或設(shè)為一些未定義的值,但是在這種操縱期間其仍保持不變。當圖2的寄存器由第二指令集的程序指令來訪問時,利用寄存器的全部64個位。因此,即使兩個指令集對不同數(shù)據(jù)寬度操作,其仍可共享提供于圖1的多個寄存器8中的物理寄存器。寄存器的最聞有效32位為兩個指令集之間非共孚的寄存器的一部分。圖3示意地圖示使用寄存器以執(zhí)行來自第一指令集的加法運算中。如將可見的,利用每個寄存器的較低部分來為所執(zhí)行的處理操作提供輸入操作數(shù)或目的地。忽略寄存器的較高部分,并且,在優(yōu)選實施例中所述較高部分保持不變。在圖4中,以類似方式來圖示第二指令集的加法運算(64位指令)。自圖4將可見,在此狀況下,所有輸入操作數(shù)及目的地利用圖2的寄存器的全部寬度。圖5示意地圖示包括三個寄存器指定字段的第一指令集的指令(32位指令)。這種寄存器指定字段為4位字段,所述4位字段允許由每個寄存器指定字段指定16個不同值。圖示兩個源寄存器指定字段,即,Rm及! 。圖示一個目的地寄存器指定字段,即,Rd。圖5中示意地圖示的指令的剩余者,為用以指示將執(zhí)行哪一個數(shù)據(jù)處理操縱的操作碼(opcode)。寄存器指定字段也可與自寄存器指定符的其他位分離的寄存器指定符的一些位不相連。圖6類似于圖5,只是在此情況下圖示來自第二指令集的指令(64位指令)。在此情況下,寄存器指定字段為5位字段,所述5位字段允許指示每個寄存器指定字段的達32個不同值。源寄存器指定字段為Xm及Xn,并且目的地寄存器指定字段為Xd。圖7圖示呈現(xiàn)至第一指令集的第一組架構(gòu)寄存器。此為呈現(xiàn)至由英國Cambridge的ARM有限公司所設(shè)計的處理器中的ARM指令集的架構(gòu)寄存器的組。寄存器指定字段為4位字段,所述4位字段允許指定介于O與15之間的值。寄存器R15系保留以用作程序計數(shù)器。如以下所討論的,將R15用作程序計數(shù)器為專用使用,且程序計數(shù)器并不形成呈現(xiàn)至ARM指令集(第一指令集)的第一組架構(gòu)寄存器中的一者,所述ARM指令集系映射至呈現(xiàn)至64位指令集的第二組架構(gòu)寄存 器。如圖7中所圖示,用戶及系統(tǒng)模式具備十五個通用寄存器RO至R14。在如圖5中所圖示的指令內(nèi)的寄存器指定字段,系用以指定這種寄存器中的哪一個將被訪問為正執(zhí)行的數(shù)據(jù)處理操作的部分。將理解到,許多數(shù)據(jù)處理操作指定待訪問的多個寄存器。實際上,寄存器R13被保留以用作堆棧指針,而寄存器R14被用作返回地址寄存器,例如,用于存儲關(guān)于函數(shù)調(diào)用的返回地址。圖7圖示當處理器4正在異常模式(如由32位異常模式電路30對指令譯碼器18指示者)中的一者中操作時,不同架構(gòu)寄存器在使用特定寄存器指定值時提供至第一指令集。因此,如一個實例,當寄存器指定值為「13」時,存在可使用(在任何寄存器重新命名前)的七個不同架構(gòu)寄存器。這種架構(gòu)寄存器中的第一個系用于用戶或系統(tǒng)模式中。視當前異常模式或處理器是否正在超管理器模式中執(zhí)行而定,選擇這種架構(gòu)寄存器中的剩余六個,所述架構(gòu)寄存器是有效替代用于用戶或系統(tǒng)模式中的架構(gòu)寄存器。如圖1中所圖示,若處理器4正在超管理器模式中執(zhí)行,則此狀況由輸入至指令譯碼器18的信號來指示。可替代用戶或系統(tǒng)模式的R13寄存器的六個架構(gòu)寄存器,其作為稱為成組異常寄存器的群。將可見,不同架構(gòu)寄存器具有不同數(shù)目的成組等同物,且并非所有架構(gòu)寄存器具有成組等同物。在一些情況下,提供這種成組寄存器可促進更快的異常處理。
圖8示意地圖示當呈現(xiàn)至第二指令集時的第二組架構(gòu)寄存器。與圖示于圖7中的第一組架構(gòu)寄存器相比,此第二組架構(gòu)寄存器具有簡化結(jié)構(gòu)。第二組架構(gòu)寄存器包括每一個皆為64位寄存器的三十一個通用寄存器。這種被表示為XO至X30。使用圖示于圖6中的五位寄存器指定字段來指定將訪問這種架構(gòu)寄存器中的哪一個。圖示于圖8中的架構(gòu)寄存器被作為64位寄存器訪問,并且所有64個位均由指定的數(shù)據(jù)處理操作來操縱。與此相反,即使基本物理寄存器為如圖示于圖2中的64位寄存器,圖7的架構(gòu)寄存器仍訪問為32位寄存器。亦圖示于圖8中的為存儲空值(例如,O )的空寄存器X31。每當讀此空寄存器時,則傳回空值。每當寫入此寄存器時,則空值仍然存儲于空寄存器內(nèi),而不顧嘗試的寫入。如在圖7中所圖示,在呈現(xiàn)至第一指令集的架構(gòu)寄存器中不存在圖8的空寄存器的等同物。因此,空寄存器并未包括在從屬于第一組與第二組的寄存器之間的一對一映射的第二組架構(gòu)寄存器內(nèi)。圖9圖示第一組的寄存器與第二組的寄存器之間的映射。如圖所示,寄存器XO至X7與寄存器RO至R7分別訪問相同64位寄存器。對于更多的寄存器,延續(xù)如圖示的映射。應(yīng)注意的特征在于,對于寄存器R13及R14而言,使用于第一指令集中的寄存器指定符的最低有效位對應(yīng)于用于第二指令集中的對應(yīng)寄存器的寄存器指定符的最低有效位。此簡化了用以選擇物理寄存器的寄存器指定符及異常模式的譯碼。此映射的另一特征在于,用于寄存器X16至X23的寄存器指定符的遞增序列,對應(yīng)于R14及R13的第一指令集中的值,兩寄存器的值交替。自圖9可見,在呈現(xiàn)至第一指令集的第一組寄存器與呈現(xiàn)至第二指令集的第二組寄存器之間存在一對一映射。第一組的所有寄存器可被第二指令集的程序指令訪問。此促進指令集之間的互操作。因此,當執(zhí)行第一指令集的指令時,保存在成組寄存器內(nèi)的一些值可能并不為程序指令可用,因為當前異常模式并未將這些成組寄存器映射至使用中。然而,切換至執(zhí)行第二指令集的指令將第一組的所有寄存器均映射至第二組的寄存器,使得其全部可在任何當前模式中訪問。圖10為示意地圖示指令譯碼器18的操作的流程圖。在步驟32處,處理程序等待,直至收到指令為止。在步驟34處,執(zhí)行關(guān)于指令是否來自第二指令集(亦即,指令為64位指令)的判定。若指令為64位指令,則步驟36譯碼所述64位指令。步驟38將待使用的寄存器映射至5位字段的寄存器指定字段。接著,步驟40訪問由5位寄存器指定字段指定的寄存器。步驟42執(zhí)行指令。若在步驟34處判定指令并非為64位指令,則步驟44將所述指令譯碼為32位指令。如先前所論述的,步驟46使用4位寄存器指定字段及當前異常模式(及超管理器狀態(tài))來映射待使用的寄存器。接著,步驟40及步驟42訪問已識別的寄存器,且執(zhí)行指令。圖11示意地圖示當由部分指令譯碼器18來執(zhí)行時,來自不同指令集的程序指令的譯碼。這種指令集為編碼為操縱32位數(shù)據(jù)值的32位指令的ARM指令集、編碼為操縱32位數(shù)據(jù)值的16位指令的Thumb指令集及編碼為操縱64位數(shù)據(jù)值的32位指令的64位指令集。ARM指令包括長度為y位(例如,允許指定16個不同架構(gòu)寄存器的4個位)的寄存器字段。Thumb指令使用X個位的寄存器指定字段,其由一 H位擴充以用于一些指令,例如,3個位允許正常尋址8個架構(gòu)寄存器,且由H位擴充以對一些指令允許尋址16個架構(gòu)寄存器。64位指令使用z位寄存器指定字段,例如,允許尋址32個架構(gòu)寄存器的5位寄存器指定字段。在處理器4內(nèi)的狀態(tài)控制哪一個指令集當前為在使用中。在一些實施例中,此狀態(tài)可為程序設(shè)計師可見??赏ㄟ^使用指令集選擇指令來選擇當前在使用中的指令集,所述指令集選擇指令有時可與分支操作(例如,用指令集的切換來分支)相關(guān)聯(lián)。不同指令集的指令編碼為非正交的,結(jié)果,指定ARM指令的相同32位型樣可對應(yīng)于在64位指令集內(nèi)的不同指令。此32位型樣的正確譯碼可結(jié)合識別哪一個指令集當前為在使用中的狀態(tài)來執(zhí)行。通過使用轉(zhuǎn)換電路50首先將X個位及H位轉(zhuǎn)換為y位字段,來執(zhí)行Thumb指令的寄存器指定字段的譯碼。此y位字段對應(yīng)于ARM指令中的7位字段。接著,視ARM指令集或Thumb指令集中的哪一個當前為在使用中而定,多任務(wù)器52選擇將來自轉(zhuǎn)換電路50的Y位寄存器指定字段或?qū)⒆x自ARM指令的y位指定字段傳遞至成組寄存器映射電路54。如先前結(jié)合圖7所描述的,ARM指令集(及Thumb指令集)提供成組寄存器。為訪問特定架構(gòu)寄存器,需要通過成組寄存器映射電路54來譯碼y位寄存器指定字段及當前異常模式,以產(chǎn)生z位架構(gòu)平坦寄存器編號(architecturally flat register number;AFRN)。舉例而言,自ARM指令或Thumb指令產(chǎn)生的給定y位寄存器指定字段可指定寄存器R13。然而,如圖7中所示,存在每個皆對應(yīng)于此y位字段的七個架構(gòu)寄存器,并且,使用當前異常模式在此七個不同架構(gòu)寄存器之間選擇,以產(chǎn)生相應(yīng)架構(gòu)平坦寄存器編號。64位指令集并不使用成組寄存器。因此,可將z位寄存器指定字段直接用作架構(gòu)平坦寄存器編號,以指定待訪問的架構(gòu)寄存器。多任務(wù)器56在讀自64位指令的架構(gòu)平坦寄存器編號或由成組寄存器映射電路54所產(chǎn)生的架構(gòu)平坦寄存器編號之間選擇,以提供向前傳遞至寄存器重新命名電路58的架構(gòu)平坦寄存器編號。寄存器重新命名電路可根據(jù)已知亂序處理技術(shù)執(zhí)行寄存器重新命名操作,以產(chǎn)生寄存器指定符z’,所述寄存器指定符z’被用以在多個寄存器60內(nèi)尋址物理寄存器。圖11的安排允許在不同指令集之間共享寄存器重新命名電路58,以及多個寄存器60的共享。架構(gòu)平坦寄存器編號的共同產(chǎn)生簡化了譯碼及多個寄存器60的共享。不必在所有實施例中均提供寄存器重新命名電路58。圖12圖示可使用的虛擬機實現(xiàn)。雖然先前所描述的實施例自用于操作支持有關(guān)技術(shù)的特定處理硬件的裝置及方法的角度來實施本發(fā)明,但是提供所謂的硬設(shè)備的虛擬機實現(xiàn)也是可能的。這種虛擬機實現(xiàn)在主機處理器530上執(zhí)行,主機處理器530執(zhí)行支持虛擬機程序510的主機操作系統(tǒng)520。通常,需要大型強大處理器來提供以合理速度執(zhí)行的虛擬機實現(xiàn),但是在一些情況下(諸如,當出于兼容性或再利用性的原因而希望將本機編碼執(zhí)行至另一處理器時)可調(diào)整此方法。虛擬機程序510向應(yīng)用程序500提供應(yīng)用程序編程接口,該應(yīng)用程序編程接口與將由真實硬件來提供的應(yīng)用程序編程接口相同,該真實硬件為正由虛擬機程序510模型化的裝置。因此,可使用虛擬機程序510在應(yīng)用程序500內(nèi)執(zhí)行程序指令(包括以上所描述的存儲器訪問的控制),以模型化其與虛擬機硬件的交互。
權(quán)利要求
1.一種用于處理數(shù)據(jù)的裝置,所述裝置包括: 多個寄存器,該多個寄存器被配置為存儲待處理的數(shù)據(jù)值; 處理電路,該處理電路耦合至所述多個寄存器,并且,被配置為對存儲于所述多個寄存器中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作; 指令譯碼器,該指令譯碼器耦合至所述處理電路,并且,響應(yīng)于程序指令流來控制所述處理電路,以執(zhí)行所述數(shù)據(jù)處理操作;其中, 所述指令譯碼器響應(yīng)于第一指令集的程序指令來控制所述處理電路,以使用由所述多個寄存器所提供的N位架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作,其中,N為正整數(shù)值; 所述指令譯碼器響應(yīng)于第二指令集的程序指令來控制所述處理電路,以使用由所述多個寄存器所提供的M位架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作,其中,M為正整數(shù)值,并且,所述多個寄存器中的至少一些寄存器由所述第一指令集的程序指令及所述第二指令集的程序指令共孚; 所述指令譯碼器被配置為當判定要訪問所述多個寄存器中的哪一寄存器,以作為呈現(xiàn)給所述第一指令集的程序指令使用的第一組N位架構(gòu)寄存器的部分時,譯碼在所述第一指令集的程序指令內(nèi)的寄存器指定字段; 所述指令譯碼器被配置為當判定要訪問所述多個寄存器中的哪一寄存器,以作為呈現(xiàn)給所述第二指令集的程序指令使用的第二組M位架構(gòu)寄存器的部分時,譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段;并且 所述指令譯碼器被配置為提供在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器之間的第一映射,以及在所述第二指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器之間的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及 所述第二映射使得所述第一組的每個寄存器具有到所述第二組的寄存器的預(yù)定一對一映射,并且,與所述第二組的所述寄存器共享在所述多個寄存器內(nèi)的共用寄存器的共享部分,所述共用寄存器的非共享部分是無法使用所述第一指令集的指令來訪問的,并且,存儲可使用所述第二組的寄存器訪問的值。
2.按權(quán)利要求1所述的裝置,其中,M=2N。
3.按權(quán)利要求1和2中的任一項所述的裝置,其中,所述第一組及所述第二組包括相同數(shù)量的寄存器。
4.按權(quán)利要求1、2和3中的任一項所述的裝置,其中,所述多個寄存器包括多個M位寄存器,并且,所述第一指令集的程序指令訪問所述M位寄存器的最低有效N位。
5.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中,N=32。
6.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中,當執(zhí)行所述第一指令集的程序指令時,所述裝置被配置為在多個異常狀態(tài)中操作,并且,所述指令譯碼器被配置為當判定要訪問所述多個寄存器中的哪一寄存器時,將在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段及所述多個異常狀態(tài)的當前異常狀態(tài)一起譯碼,并且,一群在所述第一組內(nèi)的寄存器為成組寄存器群,該群寄存器對應(yīng)于在所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的共用值和不同的異常狀態(tài)。
7.按權(quán)利要求6所述的裝置,其中,在所述成組寄存器群內(nèi),所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的最低有效位的值與所述第二指令集的所述程序指令內(nèi)的所述寄存器指定字段的最低有效位的值共用。
8.按權(quán)利要求7所述的裝置,其中,所述指令譯碼器被配置為提供所述映射,使得對于所述第二組的所述寄存器中與在所述第二指令集的所述程序指令內(nèi)的所述寄存器指定字段的遞增值序列相對應(yīng)的部分而言,在所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的對應(yīng)值在兩個值之間交替。
9.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中,當用所述第二指令集的程序指令來訪問時,所述多個寄存器包括空值寄存器,所述空值寄存器存儲預(yù)定空值。
10.按權(quán)利要求9所述的裝置,其中,所述第一組寄存器不具有映射到所述空值寄存器的架構(gòu)寄存器。
11.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中,當執(zhí)行所述第一指令集的程序指令時,程序計數(shù)器寄存器存儲值,所述值指示正執(zhí)行的程序指令的存儲器地址,并且,所述程序計數(shù)器寄存器在映射到所述第二組寄存器的所述第一組之外。
12.根據(jù)前述權(quán)利要求中的任一項所述的裝置,其中,當所述共用寄存器被所述第一指令集的程序指令訪問時,所述非共享部分為調(diào)至零、不變及設(shè)定為未定義值中的一者。
13.一種用于處理數(shù)據(jù)的裝置,所述裝置包括: 多個寄存器部件,用于存儲待處理的數(shù)據(jù)值; 處理部件,用于對存儲于所述多個寄存器部件中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作; 指令譯碼部件,用于響應(yīng)于程序指令流而控制所述處理電路,以執(zhí)行所述數(shù)據(jù)處理操作;其中, 所述指令譯碼部件響應(yīng)于第一指令集的程序指令來控制所述處理部件,以使用由所述多個寄存器部件所提供的N位架構(gòu)寄存器部件來執(zhí)行所述數(shù)據(jù)處理操作,其中,N為正整數(shù)值; 所述指令譯碼部件響應(yīng)于第二指令集的程序指令來控制所述處理部件,以使用由所述多個寄存器部件所提供的M位架構(gòu)寄存器部件來執(zhí)行所述數(shù)據(jù)處理操作,其中,M為正整數(shù)值,并且,所述多個寄存器部件中的至少一些寄存器由所述第一指令集的程序指令及所述第二指令集的程序指令共享; 所述指令譯碼器部件被配置為當判定要訪問所述多個寄存器部件中的哪一寄存器,以作為呈現(xiàn)給所述第一指令集的程序指令使用的第一組N位架構(gòu)寄存器部件的部分時,譯碼在所述第一指令集的程序指令內(nèi)的寄存器指定字段; 所述指令譯碼器部件被配置為當判定要訪問所述多個寄存器部件中的哪一寄存器,以作為呈現(xiàn)給所述第二指令集的程序指令使用的第二組M位架構(gòu)寄存器部件的部分時,譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段;并且 所述指令譯碼部件被配置為提供在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器部件之間的第一映射,以及在所述第二指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器部件之間的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一組的每個寄存器部件具有至所述第二組的寄存器部件的預(yù)定一對一映射,并且,與所述第二組的所述寄存器部件共享在所述多個寄存器部件內(nèi)的共用寄存器部件的共享部分,無法使用所述第一指令集的指令訪問的所述共用寄存器部件的非共享部分,以及存儲可使用所述第二組的寄存器部件可訪問的值。
14.一種處理數(shù)據(jù)的方法,所述方法包括以下步驟: 在多個寄存器中存儲待處理的數(shù)據(jù)值; 對存儲于所述多個寄存器中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作; 譯碼程序指令流,以控制所述數(shù)據(jù)處理操作的所述執(zhí)行;其中, 所述譯碼響應(yīng)于第一指令集的程序指令來控制所述數(shù)據(jù)處理操作的所述執(zhí)行,該執(zhí)行使用由所述多個寄存器所提供的N位架構(gòu)寄存器,其中,N為正整數(shù)值; 所述譯碼響應(yīng)于第二指令集的程序指令來控制所述數(shù)據(jù)處理操作的所述執(zhí)行,所述執(zhí)行使用由所述多個寄存器所提供的M位架構(gòu)寄存器,其中,M為正整數(shù)值,并且,所述多個寄存器中的至少一些寄存器由所述第一指令集的程序指令及所述第二指令集的程序指令共 當判定要訪問所述多個寄存器中的哪一寄存器,以作為呈現(xiàn)給所述第一指令集的程序指令使用的第一組N位架構(gòu)寄存器的部分時,所述譯碼對在所述第一指令集的程序指令內(nèi)的寄存器指定字段進行譯碼; 當判定要訪問所述多個寄存器中的哪一寄存器,以作為呈現(xiàn)給所述第二指令集的程序指令使用的第二組M位架構(gòu)寄存器的部分時,所述譯碼對在所述第二指令集的程序指令內(nèi)的寄存器指定字段進行譯碼;并且 所述譯碼提供在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器之間的第一映射,以及在所述第二指令集的程序指令內(nèi)的所述寄存器指定字段的值與所述多個寄存器之間的第二映射,所述第一映射不同于所述第二映射,并且,所述第一映射及所述第二映射使得所述第一組的每個寄存器具有到所述第二組的寄存器的預(yù)定一對一映射,并且,與 所述第二組的所述寄存器共享在所述多個寄存器內(nèi)的共用寄存器的共享部分,所述共用寄存器的非共享部分無法使用所述第一指令集的指令訪問,以及存儲可使用所述第二組的寄存器訪問的值。
15.按權(quán)利要求14所述的方法,其中,M=2N。
16.按權(quán)利要求14和15中的任一項所述的方法,其中,所述第一組及所述第二組包括相同數(shù)量的寄存器。
17.按權(quán)利要求14、15和16中的任一項所述的方法,其中,所述多個寄存器包括多個M位寄存器,并且,所述第一指令集的程序指令訪問所述M位寄存器的最低有效N位。
18.按權(quán)利要求14至17中的任一項所述的方法,其中,N=32。
19.按權(quán)利要求14至18中的任一項所述的方法,其中,當執(zhí)行所述第一指令集的程序指令時,在多個異常狀態(tài)中的一者中操作,并且,當判定要訪問所述多個寄存器中的哪一寄存器時,所述譯碼步驟將在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段及所述多個異常狀態(tài)的當前異常狀態(tài)一起譯碼,并且,一群在所述第一組內(nèi)的寄存器為成組寄存器群,該群寄存器對應(yīng)于在所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的共用值和不同的異常狀態(tài)。
20.按權(quán)利要求19所述的方法,其中,在所述成組寄存器群內(nèi),所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的最低有效位的值與所述第二指令集的所述程序指令內(nèi)的所述寄存器指定字段的最低有效位的值共用。
21.按權(quán)利要求20所述的方法,其中,所述譯碼提供所述映射,使得對于所述第二組的所述寄存器與在所述第二指令集的所述程序指令內(nèi)的所述寄存器指定字段的遞增值序列相對應(yīng)的部分而言,在所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的對應(yīng)值在兩個值之間交替。
22.按權(quán)利要求14至21中的任一項所述的方法,其中,當用所述第二指令集的程序指令訪問時,所述多個寄存器包括空值寄存器,所述空值寄存器存儲預(yù)定空值。
23.按權(quán)利要求22所述的方法,其中,所述第一組寄存器不具有映射到所述空值寄存器的架構(gòu)寄存器。
24.按權(quán)利要求14至23中的任一項所述的方法,其中,當執(zhí)行所述第一指令集的程序指令時,程序計數(shù)器寄存器存儲值,所述值指示正執(zhí)行的程序指令的存儲器地址,并且,所述程序計數(shù)器寄存器在映射至所述第二組寄存器的所述第一組寄存器之外。
25.按權(quán)利要求14至24中的任一項所述的方法,其中,當所述共享寄存器被所述第一指令集的程序指令訪問時,所述非共享部分為調(diào)至零、不變及設(shè)定為未定義值中的一者。
26.一種虛擬機,該虛擬機由在數(shù)據(jù)處理裝置上執(zhí)行的計算機程序提供,所述虛擬機提供對應(yīng)于如權(quán)利要求1至12中的任一項所述的裝置的指令執(zhí)行環(huán)境。
27.一種用于處理數(shù)據(jù)的裝置,所述裝置包括: 多個寄存器,該多個寄存器被配置為存儲待處理的數(shù)據(jù)值; 處理電路,該處理電路耦合至 所述多個寄存器,并且,被配置為對存儲于所述多個寄存器中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作; 指令譯碼器,該指令譯碼器耦合至所述處理電路,并且,響應(yīng)于程序指令流來控制所述處理電路,以執(zhí)行所述數(shù)據(jù)處理操作;其中, 所述指令譯碼器響應(yīng)于第一指令集的程序指令,以控制所述處理電路,以使用由所述多個寄存器所提供的一第一組架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作; 當執(zhí)行所述第一指令集的程序指令時,所述裝置被配置為在多個異常狀態(tài)中操作,并且,所述指令譯碼器被配置為當判定要使用哪一架構(gòu)寄存器時,將在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段及所述多個異常狀態(tài)的當前異常狀態(tài)一起譯碼; 所述指令譯碼器響應(yīng)于第二指令集的程序指令來控制所述處理電路,以使用第二組架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作,所述第二組架構(gòu)寄存器由所述多個寄存器提供且與所述第一指令集的程序指令共享;并且 所述指令譯碼器被配置為當判定要使用哪一架構(gòu)寄存器時,在不依賴異常狀態(tài)的情況下譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段。
28.按權(quán)利要求27所述的裝置,其中,所述第一組及所述第二組包括相同數(shù)量的寄存器。
29.按權(quán)利要求27和28中的任一項所述的裝置,其中,所述多個寄存器包括多個2N位寄存器,并且,所述第一指令集的程序指令訪問所述2N位寄存器的最低有效N位。
30.按權(quán)利要求29所述的裝置,其中,N=32。
31.按權(quán)利要求27至30中的任一項所述的裝置,其中,一群在所述第一組內(nèi)的寄存器為成組寄存器群,該群寄存器對應(yīng)于在所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的共用值和不同的異常狀態(tài)。
32.按權(quán)利要求31所述的裝置,其中,在所述成組寄存器群內(nèi),所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的最低有效位的值與所述第二指令集的所述程序指令內(nèi)的所述寄存器指定字段的最低有效位的值共用。
33.按權(quán)利要求32所述的裝置,其中,所述指令譯碼器被配置,以使得對于所述第二組的所述寄存器中與在所述第二指令集的所述程序指令內(nèi)的所述寄存器指定字段的遞增值序列相對應(yīng)的部分而言,在所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的對應(yīng)值在兩個值之間交替。
34.按權(quán)利要求27至33中的任一項所述的裝置,其中,當用所述第二指令集的程序指令來訪問時,所述多個寄存器包括空值寄存器,所述空值寄存器存儲預(yù)定空值,所述第一組不具有對應(yīng)于所述空值寄存器的寄存器。
35.按權(quán)利要求34所述的裝置,其中,所述第一組不具有對應(yīng)于所述空值寄存器的架構(gòu)寄存器。
36.按權(quán)利要求27至35中的任一項所述的裝置,其中,當執(zhí)行所述第一指令集的程序指令時,程序計數(shù)器寄存器存儲值,所述值指示正執(zhí)行的程序指令的存儲器地址,并且,所述程序計數(shù)器寄存器在對應(yīng)于所述第二組寄存器的所述第一組之外。
37.一種用于處理數(shù)據(jù)的裝置,所述裝置包括: 多個寄存器部件,用于存儲待處理的數(shù)據(jù)值; 處理部件,用于對存儲于所述多個寄存器部件中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作; 指令譯碼部件,用于響應(yīng)于程序 指令流而控制所述處理電路,以執(zhí)行所述數(shù)據(jù)處理操作;其中。
所述指令譯碼器部件響應(yīng)于第一指令集的程序指令來控制所述處理部件,以使用由所述多個寄存器部件所提供的第一組架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作; 當執(zhí)行所述第一指令集的程序指令時,所述裝置被配置為在多個異常狀態(tài)中操作,并且,所述指令譯碼器被配置為當判定要使用哪一架構(gòu)寄存器時,譯碼在所述第一指令集的程序指令內(nèi)的所述寄存器指定字段及所述多個異常狀態(tài)的當前異常狀態(tài); 所述指令譯碼器部件響應(yīng)于第二指令集的程序指令來控制所述處理部件,以使用第二組架構(gòu)寄存器來執(zhí)行所述數(shù)據(jù)處理操作,所述第二組架構(gòu)寄存器由所述多個寄存器部件提供且與所述第一指令集的程序指令共享;并且 所述指令譯碼器部件被配置為當判定要使用哪一架構(gòu)寄存器時,在不依賴異常狀態(tài)的情況下譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段。
38.一種處理數(shù)據(jù)的方法,所述方法包括以下步驟: 在多個寄存器中存儲待處理的數(shù)據(jù)值; 對存儲于所述多個寄存器中的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作; 譯碼程序指令流,以控制所述數(shù)據(jù)處理操作的所述執(zhí)行;其中, 所述譯碼響應(yīng)于第一指令集的程序指令來控制所述數(shù)據(jù)處理操作的所述執(zhí)行,所述執(zhí)行使用由所述多個寄存器所提供的第一組架構(gòu)寄存器; 當執(zhí)行所述第一指令集的程序指令時,在多個異常狀態(tài)中的一者中操作,并且,當判定要使用哪一架構(gòu)寄存器時,將在所述第一指令集的程序指令內(nèi)的寄存器指定字段及所述多個異常狀態(tài)的當前異常狀態(tài)一起譯碼;所述譯碼響應(yīng)于第二指令集的程序指令來控制所述數(shù)據(jù)處理操作的所述執(zhí)行,所述執(zhí)行使用第二組架構(gòu)寄存器,所述第二組架構(gòu)寄存器由所述多個寄存器提供并與所述第一指令集的程序指令共享;并且 當判定要使用哪一架構(gòu)寄存器時,所述譯碼在不依賴異常狀態(tài)的情況下譯碼在所述第二指令集的程序指令內(nèi)的寄存器指定字段。
39.按權(quán)利要求38所述的方法,其中,所述第一組及所述第二組包括相同數(shù)量的寄存器。
40.按權(quán)利要求38和39中的任一項所述的方法,其中,所述多個寄存器包括多個2N位寄存器,并且,所述第一指令集的程序指令訪問所述2N位寄存器的最低有效N位。
41.按權(quán)利要求40所述的方法,其中,N=32。
42.按權(quán)利要求38至41中的任一項所述的方法,其中,一群在所述第一組內(nèi)的寄存器為成組寄存器群,該群寄存器對應(yīng)于在所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的共用值和不同的異常狀態(tài)。
43.按權(quán)利要求42所述的方法,其中,在所述成組寄存器群內(nèi),所述第一指令集的所述程序指令內(nèi)的所述寄存器指定字段的最低有效位的值與所述第二指令集的所述程序指令內(nèi)的所述寄存器指定字段的最低有效位的值共用。
44.按權(quán)利要求43所述的方法,其中,所述譯碼步驟使得對于所述第二組的所述寄存器中與在所述第二指令集的所述程序指令內(nèi)的所述寄存器指定字段的遞增值序列相對應(yīng)的部分而言,在所述第一指令 集的所述程序指令內(nèi)的所述寄存器指定字段的對應(yīng)值在兩個值之間交替。
45.按權(quán)利要求38至44中的任一項所述的方法,其中,當用所述第二指令集的程序指令來訪問時,所述多個寄存器包括空值寄存器,所述空值寄存器存儲預(yù)定空值,所述第一組不具有對應(yīng)于所述空值寄存器的寄存器。
46.按權(quán)利要求45所述的方法,其中,所述第一組不具有對應(yīng)于所述空值寄存器的架構(gòu)寄存器。
47.按權(quán)利要求38至46中的任一項所述的方法,其中,當執(zhí)行所述第一指令集的程序指令時,程序計數(shù)器寄存器存儲值,所述值指示正執(zhí)行的程序指令的存儲器地址,并且,所述程序計數(shù)器寄存器在對應(yīng)于所述第二組寄存器的所述第一組之外。
48.一種由在數(shù)據(jù)處理裝置上執(zhí)行的計算機程序提供的虛擬機,所述虛擬機提供對應(yīng)于如權(quán)利要求27至36中的任一項的裝置的指令執(zhí)行環(huán)境。
全文摘要
本發(fā)明提供一種處理器(4),其支持指定32位架構(gòu)寄存器的第一指令集及指定64位架構(gòu)寄存器的第二指令集。對這種指令集中的每一者呈現(xiàn)其自身架構(gòu)寄存器組以供其使用。呈現(xiàn)給所述第一指令集的所述第一組寄存器與呈現(xiàn)給此第二指令集的所述第二組寄存器之間具有一對一映射關(guān)系。提供于硬件中的所述寄存器為64位寄存器。在一些實施例中,當執(zhí)行所述第一指令集的程序指令時,僅訪問且操縱這種64位寄存器的最低有效部分,并且所述寄存器的剩余最高有效部分保持不變。將在所述第一指令集的指令內(nèi)的寄存器指定字段與當前異常模式一起譯碼,以判定將使用哪一個架構(gòu)寄存器,而所述第二指令集在不依賴異常模式的情況下使用寄存器指定字段來判定將使用哪一個架構(gòu)寄存器。
文檔編號G06F9/318GK103098020SQ201180014383
公開日2013年5月8日 申請日期2011年2月16日 優(yōu)先權(quán)日2010年3月15日
發(fā)明者理查德·羅伊·格里森思懷特, 戴維·詹姆斯·西爾 申請人:Arm 有限公司