第一指令(404)是基本指令,調(diào)用異常處理代碼。10.一種在解碼單元處對計算機(jī)程序的指令解碼的方法(300),所述方法包括: 在所述解碼單元處接收指令,所述指令包括至少一個修改符比特,所述修改符比特指示所述指令是否是基本指令,基本指令是由一個或多個其它指令進(jìn)行修改的指令(302); 在所述解碼單元處分析所述至少一個修改符比特以確定所接收的指令是否是基本指令(304、310); 響應(yīng)于確定所接收的指令不是基本指令,在所述解碼單元處確定所接收的指令是否是前綴指令,前綴指令是修改隨后的指令的指令(306); 響應(yīng)于確定所接收的指令是前綴指令,存儲所接收的指令(308); 響應(yīng)于確定所接收的指令是基本指令,在所述解碼單元處確定是否存在所述基本指令的預(yù)定數(shù)量的存儲的前綴指令(314);以及 響應(yīng)于確定不存在所述基本指令的所述預(yù)定數(shù)量的存儲的前綴指令,調(diào)用異常處理代碼(320)ο11.如權(quán)利要求10所述的方法(300),還包括,響應(yīng)于確定存在所述基本指令的所述預(yù)定數(shù)量的存儲的前綴指令,在所述解碼單元處使用所述基本指令的所述預(yù)定數(shù)量的存儲的前綴指令來修改所述基本指令(316)。12.如權(quán)利要求11所述的方法(300),還包括,向執(zhí)行單元提供所修改的基本指令用于執(zhí)行(318) ο13.如權(quán)利要求10到12中的任一項(xiàng)所述的方法(300),其中,所述至少一個修改符比特包括至少兩個修改符比特,所述至少兩個修改符比特指示所述預(yù)定數(shù)量;并且,所述方法還包括分析所述至少兩個修改符比特以確定所述預(yù)定數(shù)量。14.如權(quán)利要求10到12中的任一項(xiàng)所述的方法(300),其中,所述至少一個修改符比特包括僅僅一個比特,且所述預(yù)定數(shù)量是一。15.如權(quán)利要求10到12中的任一項(xiàng)所述的方法(300),其中,所述至少一個修改符比特在所接收的指令中的預(yù)定位置處。16.如權(quán)利要求10到12中的任一項(xiàng)所述的方法(300),還包括: 響應(yīng)于確定所接收的指令不是前綴指令且不是基本指令,向執(zhí)行單元提供所接收的指令用于執(zhí)行(312)。17.如權(quán)利要求10到12中的任一項(xiàng)所述的方法(300),其中,調(diào)用異常處理代碼包括更新程序計數(shù)器以指向異常處理代碼。18.—種布置成執(zhí)行計算機(jī)程序的數(shù)據(jù)處理裝置(100),所述數(shù)據(jù)處理裝置包括: 程序存儲器(102),其配置成存儲所述計算機(jī)程序,所述計算機(jī)程序包括多個指令(202、204); 程序計數(shù)器(112),其配置成識別所述程序存儲器(102)中的指令(202、204); 取指單元(104),其配置成從所述程序存儲器(102)取回由所述程序計數(shù)器(112)識別的所述指令(202、204);以及解碼單元(106),其配置成: 從所述取指單元接收所述指令(202、204),所述指令包括至少一個修改符比特(206、208),所述至少一個修改符比特(206、208)指示所述指令是否是基本指令,基本指令是由至少一個其它指令進(jìn)行修改的指令; 分析所述至少一個修改符比特(206、208)以確定所接收的指令(202、204)是否是基本指令; 響應(yīng)于確定所接收的指令(202、204)不是基本指令,確定所接收的指令(202、204)是否是前綴指令(202),前綴指令是修改隨后的指令的指令; 響應(yīng)于確定所接收的指令是前綴指令(202),存儲所接收的指令; 響應(yīng)于確定所接收的指令(202、204)是基本指令(204),確定是否存在所述基本指令(204)的預(yù)定數(shù)量的存儲的前綴指令;以及 響應(yīng)于確定不存在所述基本指令的所述預(yù)定數(shù)量的存儲的前綴指令,調(diào)用異常處理代碼。19.一種在解碼單元處對計算機(jī)程序中的指令解碼的方法(800、1000),所述方法包括: 在所述解碼單元處接收第一指令(802、1002); 在所述解碼單元處確定所述第一指令是否是后綴指令,后綴指令是修改前面的指令的指令; 響應(yīng)于確定所述第一指令是后綴指令,確定所述第一指令是否跟隨分支指令;以及 響應(yīng)于確定所述第一指令跟隨分支指令,調(diào)用異常處理代碼(808、1008)。20.如權(quán)利要求19所述的方法(800、1000),其中,調(diào)用異常處理代碼包括更新程序計數(shù)器以指向異常處理代碼。21.如權(quán)利要求19所述的方法(800、1000),還包括: 響應(yīng)于確定所述第一指令不是后綴指令,從取指單元請求至少一個附加指令,所述至少一個附加指令中的每個附加指令跟隨所述計算機(jī)程序中的第一指令(810、1014); 在所述解碼單元處接收所述至少一個附加指令,所述至少一個附加指令包括第一附加指令(812、1016); 確定所述第一附加指令是否是后綴指令(814、1018); 響應(yīng)于確定所述第一附加指令是后綴指令,在所述解碼器單元處使用所述第一附加指令來修改所述第一指令(816、1020);以及 響應(yīng)于確定所述第一附加指令不是后綴指令,向執(zhí)行單元提供所述第一指令和所述至少一個附加指令用于執(zhí)行(820、1022)。22.如權(quán)利要求21所述的方法(800、1000),其中,僅在確定所述第一指令不是后綴指令時請求所述至少一個附加指令(806、1006)。23.如權(quán)利要求21所述的方法(800、1000),還包括,向執(zhí)行單元提供所修改的第一指令用于執(zhí)行(818、1022)。24.如權(quán)利要求21所述的方法(1000),其中,所述第一指令包括至少一個修改符比特,所述至少一個修改符比特指示所述第一指令是否是基本指令,基本指令是由至少一個其它指令進(jìn)行修改的指令;以及 所述方法還包括分析所述至少一個修改符比特以確定所述第一指令是否是基本指令,且僅在確定所述第一指令是基本指令時請求所述至少一個附加指令(1010)。25.如權(quán)利要求24所述的方法(1000),其中所述至少一個修改符比特包括至少兩個修改符比特,所述至少兩個修改符比特指示所述第一指令的修改指令的數(shù)量;以及 所述方法還包括響應(yīng)于確定所述第一指令是基本指令,分析所述至少兩個修改符比特以確定修改指令的數(shù)量;以及 所請求的附加指令的數(shù)量等于修改指令的數(shù)量。26.如權(quán)利要求19到25中的任一項(xiàng)所述的方法(1000),其中所述計算機(jī)程序被存儲在程序存儲器中,使得基本指令和所述基本指令的每個相應(yīng)的后綴指令一起存儲在程序存儲器邊界的同一側(cè)上。27.一種布置成執(zhí)行計算機(jī)程序的數(shù)據(jù)處理裝置(100),所述數(shù)據(jù)處理裝置包括: 程序存儲器(102),其配置成存儲所述計算機(jī)程序,所述計算機(jī)程序包括多個指令(602、604、702、704、902、904); 程序計數(shù)器(112),其配置成指示所述程序存儲器(102)中的第一指令; 取指單元(104),其配置成從所述程序存儲器(102)取回如由所述程序計數(shù)器(112)識別的所述第一指令;以及 解碼單元(106),其配置成: 從所述取指單元(104)接收所述第一指令出02、704、902); 確定所述第一指令(602、704、902)是否是后綴指令,后綴指令是修改前面的指令的指令; 響應(yīng)于確定所述第一指令(704)是后綴指令,確定所述第一指令(704)是否跟隨分支指令;以及 響應(yīng)于確定所述第一指令(704)跟隨分支指令,調(diào)用異常處理代碼。28.—種在程序存儲器中存儲計算機(jī)程序的方法,所述計算機(jī)程序包括多個指令,所述方法包括: 在編譯器處接收所述多個指令,所述多個指令包括一個或多個基本指令和每個基本指令的至少一個修改指令; 在所述編譯器處分析所述多個指令以識別每個基本指令和每個識別的基本指令的至少一個修改指令;以及 將每個識別的基本指令存儲在與所述識別的基本指令的所述至少一個修改指令所在的所述程序存儲器內(nèi)的邊界的同一側(cè)上。29.如權(quán)利要求28所述的方法,其中,所述程序存儲器內(nèi)的邊界包括緩存器行首、緩存器行尾和存儲器管理單位頁中的一個或多個。30.如權(quán)利要求28或權(quán)利要求29所述的方法,其中每個修改指令是后綴指令。31.如權(quán)利要求28或權(quán)利要求29所述的方法,其中每個修改指令是前綴指令。32.如權(quán)利要求28或權(quán)利要求29所述的方法,其中,將識別的基本指令存儲在與所述基本指令的所述至少一個修改指令所在的所述程序存儲器內(nèi)的邊界的同一側(cè)上,包括,在所述計算機(jī)程序中,在所述識別的基本指令或所述識別的基本指令的所述至少一個修改指令之前插入一個或多個無操作指令,使得所述識別的基本指令和所述識別的基本指令的所述至少一個修改指令存儲在所述程序存儲器內(nèi)的邊界的同一側(cè)上。33.如權(quán)利要求28或權(quán)利要求29所述的方法,其中,將每個識別的基本指令存儲在與所述識別的基本指令的所述至少一個修改指令所在的所述程序存儲器內(nèi)的邊界的同一側(cè)上包括,將所述多個指令重新排序,使得每個識別的基本指令被存儲在與所述識別的基本指令的所述至少一個修改指令所在的所述程序存儲器內(nèi)的邊界的同一側(cè)上。34.如權(quán)利要求28或權(quán)利要求29所述的方法,其中所述多個指令包括基本指令的至少兩個修改指令,并且將每個識別的基本指令存儲在與所述識別的基本指令的所述至少一個修改指令所在的所述程序存儲器內(nèi)的邊界的同一側(cè)上包括,將所述基本指令存儲在與所述基本指令的所述至少兩個修改指令所在的所述程序存儲器的邊界的同一側(cè)上。35.一種存儲計算機(jī)程序的設(shè)備,所述計算機(jī)程序包括多個指令,所述設(shè)備包括: 程序存儲器;以及 處理器,所述處理器配置成: 接收所述多個指令,所述多個指令包括一個或多個基本指令和每個基本指令的至少一個修改指令; 分析所述多個指令以識別每個基本指令和每個識別的基本指令的至少一個修改指令;以及 將每個識別的基本指令存儲在與所述識別的基本指令的所述至少一個修改指令所在的所述程序存儲器內(nèi)的邊界的同一側(cè)上。36.一種布置成執(zhí)行計算機(jī)程序的數(shù)據(jù)處理裝置(100),所述數(shù)據(jù)處理裝置包括: 程序存儲器(102),其配置成存儲所述計算機(jī)程序,所述計算機(jī)程序包括多個指令,所述多個指令包括一個或多個基本指令和每個基本指令的至少一個修改指令,所述多個指令存儲在所述程序存儲器上,使得每個基本指令被存儲在與所述基本指令的所述至少一個修改指令所在的所述程序存儲器內(nèi)的邊界的同一側(cè)上; 程序計數(shù)器(112),其配置成識別所述程序存儲器(102)中的第一指令; 取指單元(104),其配置成取回在所述程序存儲器(102)中的由所述程序計數(shù)器(112)識別的第一指令;以及 解碼單元(106),其配置成: 從所述取指單元接收所述第一指令;以及 從所述取指單元請求附加指令以尋找所述第一指令的修改指令, 所述附加指令是所述程序存儲器中緊靠所述第一指令的前面的指令或 所述程序存儲器中緊靠所述第一指令的后面的指令;以及 其中,所述取指單元(104)還配置成確定所述附加指令與所述第一指令是否在所述程序存儲器的邊界的同一側(cè)上,且響應(yīng)于確定所述附加指令不在所述程序存儲器的所述邊界的同一側(cè)上,避免從所述程序存儲器取回所述附加指令。
【專利摘要】本發(fā)明涉及解碼被一個或多個其它指令修改的指令。用于對計算機(jī)程序中的指令進(jìn)行解碼的方法和裝置,其中,指令包括由一個或多個其它指令進(jìn)行修改的一個或多個基本指令。在例子中,在解碼器處接收第一指令。解碼器確定第一指令是否通過程序計數(shù)器的非遞增變化(即程序中的跳轉(zhuǎn))而得到。如果第一指令通過程序計數(shù)器的非遞增變化而得到,則解碼器對緊靠的前面的指令解碼以確定原始指令是否是基本指令(即由一個或多個其它指令進(jìn)行修改的指令)。如果前面的指令指示原始指令是基本指令,則錯誤出現(xiàn)且異常處理代碼被調(diào)用。
【IPC分類】G06F9/30
【公開號】CN105183429
【申請?zhí)枴緾N201510247606
【發(fā)明人】詹姆斯·羅伯特·惠特克
【申請人】想象技術(shù)有限公司
【公開日】2015年12月23日
【申請日】2015年5月15日
【公告號】DE102015107875A1, US20150347144