專利名稱:以自動指令模式轉換來對齊字組的處理器及方法
技術領域:
本發(fā)明是關于處理器的技術領域,尤指一種在多模指令中以自動指令模式轉換來對齊字組的處理器及方法。
背景技術:
一般多模指令處理器具有32位元及16位元的指令模式,并可在此兩種模式切換執(zhí)行,以節(jié)省程序碼儲存所需的空間,于美國第USP5,758,115號專利公告中,是以程序計數(shù)器(Program Counter,PC)中的T位元以決定該處理器具位于32位元或16位元指令模式,并利用分枝(Branch)指令來切換程序計數(shù)器中T位元的值,其指令模式切換如圖1所示,當執(zhí)行分枝(Branch)指令220時,分枝至(Branch to)16位元指令儲存的起始位址Badd(1)并執(zhí)行16位元指令,該+1是用以切換該T位元以指示該處理器位于16位元指令模式,當執(zhí)行分枝(Branch)指令240時,分枝至(Branch to)32位元指令儲存的位址Badd(2)并執(zhí)行32位元指令,該+0系用以將該T位元改變?yōu)椤?′,以指示該處理器位于32位元指令模式,采取此種切換方法有ARM及MIPS系列的處理器,然而采取此種切換方法的32位元指令及16位元指令需分別儲存在不同的區(qū)塊,32位元指令及16位元指令無法夾雜存放在同一區(qū)塊,因此程序碼儲存空間無法獲得最佳化,故此種切換方法不僅程序碼儲存空間無法獲得最佳化,同時再進行切換時,亦增加所需的儲存空間。
針對32位元指令及16位元指令無法夾雜儲存在同一區(qū)塊的問題,于美國第USP6,209,079B1號專利公告中,是以指令碼中的最高位元(MostSignificant Bit,MSB)來決定該處理器具位于32位元或16位元指令模式,以解決32位元指令及16位元指令無法夾雜儲存在同一區(qū)塊的問題,如圖2所示,若于32位元邊界的MSB若為‘1’,則該32位元代表一32位元指令,若于32位元邊界的MSB若為‘0’,則該32位元代表兩個16位元指令,若16位元指令B的MSB若為‘0’,則表示為兩個循序執(zhí)行的16位元指令,若16位元指令B的MSB若為‘1’,則表示為兩個平行執(zhí)行的16位元指今,采取此種切換方法有M32R系列的處理器,采取此種切換方法的32位元指令及16位元指令無需分別儲存在不同的區(qū)塊,可達到提高程序碼密度(Code Density)的目的,然而采取此種切換方法時,執(zhí)行分枝(branch)或跳躍(jump)指令時需小心處理,以免跳躍至一32位元指令的后半部份,由于該32位元指令的后半部份并非一可執(zhí)行的指令,會產(chǎn)生不可預期的錯誤,因此跳躍位址需限制在字組邊界(wordboundary)或32位元邊界(32-bit boundary),對于分枝-鏈結(branch-and-link)及跳躍-鏈結(jump-and-link)指令的返回位址(return address)亦需限制在字組邊界(word boundary)或32位元邊界(32-bit boundary),此種限制會增加使用上的不方便性,因此,公知多模指令處理器的設計仍有諸多缺失而有予以改進的必要。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種以自動指令模式轉換來對齊字組的處理器及方法,以避免公知技術因需將跳躍位址限制在字組邊界或32位無邊界所引起的復雜問題,同時,提高處理器的執(zhí)行速度。
依據(jù)本發(fā)明的一特色,提出一種以自動指令模式轉換來對齊字組的處理器,其所執(zhí)行的指令來自L位元長度的指令邊界,此L位元指令邊界中可容納一個M位元指令或復數(shù)個N位元指令,其中L、M、N為正整數(shù),L≥M>N,至少一N位元指令對應有一M位元指令,該處理器包含一指令輸入裝置,其包含一寬度為L位元的儲存空間以供儲存復數(shù)個代表指令的L位元字組;一指令擷取裝置,用以擷取該指令碼輸入裝置的一L位元字組;以及一指令模式轉換裝置,當該指令擷取裝置所擷取的L位元字組為一M位元指令、且前一L位元字組僅為一N位元指令時,若該N位元指令有相對應的M位元指令,則將該N位元指令轉換為相對應的M位元指令,若該N位元指令沒有相對應的M位元指令,則插入至少一N位元的NOP指令于該N位元指令之后。
所述的處理器,其中還包含一指令解碼裝置,用以對該指令模式轉換裝置所輸出的指令進行解碼;以及一指令執(zhí)行裝置,用以執(zhí)行該指令解碼裝置所輸出的解碼后指令。
所述的處理器,其中,L為32,M為32,N為16。
依據(jù)本發(fā)明的另一特色,提出一種以自動指令模式轉換來對齊字組的方法,該處理器所執(zhí)行的指令來自具有L位元長度的指令邊界,此L位元指令邊界中可容納一個M位元指令或復數(shù)個N位元指令,其中L、M、N為正整數(shù),L≥M>N,至少一N位元指令對應有一M位元指令,該方法包括步驟(A)提供復數(shù)個代表指令的L位元字組;(B)擷取一L位元字組,其中,當所擷取的L位元字組為一M位元指令、且前一L位元字組僅為一N位元指令時,若該N位元指令有相對應的M位元指令,則將該N位元指令轉換為相對應的M位元指令,若該N位元指令沒有相對應的M位元指令,則插入至少一N位元的NOP指令于該N位元指令之后;(C)對所擷取的L位元字組進行解碼;以及(D)執(zhí)行該解碼后的N位元指令或M位元指令。
所述的方法,其特征在于,其中,L為32,M為32,N為16。
本發(fā)明轉換程序指令來對齊字組的方法,該程序的指令具有L位元長度的指令邊界,此L位元指令邊界中可容納一個M位元指令或復數(shù)個N位元指令,其中L、M、N為正整數(shù),L≥M>N,至少一N位元指令對應有一M位元指令,該方法是擷取一L位元字組,其中,當所擷取的L位元字組為一M位元指令、且前一L位元字組僅為一N位元指令時,若該N位元指令有相對應的M位元指令,則將該N位元指令轉換為相對應的M位元指令,若該N位元指令沒有相對應的M位元指令,則插入至少一N位元的NOP指令于該N位元指令之后。
圖1為公知指令模式切換的示意圖。
圖2為另一公知指令模式切換的指令結構示意圖。
圖3為本發(fā)明的以自動指令模式轉換來對齊字組的處理器的架構圖。
圖4為本發(fā)明的以自動指令模式轉換來對齊字組的方法的流程圖。
圖5為依據(jù)本發(fā)明以自動指令模式轉換來對齊字組的一實例。
圖6為依據(jù)本發(fā)明的一應用范例。
具體實施例方式
為能進一步了解本發(fā)明的結構、特征及其目的,以較佳具體實施例并結合附圖作詳細說明。
有關本發(fā)明的于多模指令中以自動指令模式轉換來對齊字組的處理器及方法,請先參照圖3所示的處理器架構圖,其包括有一指令輸入裝置310、一指令擷取裝置320、一指令模式轉換裝置330、一指令解碼裝置340及一指令執(zhí)行裝置350。前述多模指令處理器具有M位元指令集及N位元指令集(M、N為正整數(shù),M>N),其中,于N位元指令集中,至少有一N位元指令在M位元指令集中具有一相對應的M位元指令,而前述指令輸入裝置310是提供一具有L位元長度的指令邊界的儲存空間(L為正整數(shù),L≥M),以供儲存所要執(zhí)行的指令,該L位元指令邊界中的字組(Word)可為一個M位元指令或復數(shù)個N位元指令,于本實施例中,L值為32,M值為32,N值為16。
前述指令擷取裝置320用以擷取該指令輸入裝置的一L位元字組,該指令模式轉換裝置330用以根據(jù)該指令擷取裝置所擷取的L位元字組的內(nèi)容,來判斷定否將所包含的指令的模式予以轉換。該指令解碼裝置340用以對該指令模式轉換裝置330所輸出的指令進行解碼,該指令執(zhí)行裝置350用以執(zhí)行該指令解碼裝置340所輸出的解碼后指令。
圖4進一步顯示本發(fā)明的以自動指令模式轉換來對齊字組的處理器的控制流程,首先,該指令輸入裝置310輸入有復數(shù)個代表指令的L位元字組(步驟S401),該指令擷取裝置320擷取一L位元字組(步驟S402),于步驟S403中,該指令模式轉換裝置330判斷是否所擷取的L位元字組(假設為第n個L位元字組)為一M位元指令、且其上一L位元字組(第n-1個L位元字組)僅為一N位元指令,如否,無須進行指令轉換,如是,則表示該第n-1個L位元字組可能造成字組對齊問題,而必需予以轉換,因此,步驟S404進一步判斷該第n-1個L位元字組的N位元指令在M位元指令集中是否有相對應的M位元指令,若有,則將該L位元字組中的N位元指令轉換為相對應的M位元指令(步驟S405),如此而可避免字組對齊的問題,再繼續(xù)擷取指令(步驟S402)。
若于步驟S404中判定該第n-1個L位元字組的N位元指令在M位元指令集中沒有相對應的M位元指令,則于該N位元指令的后插入至少一N位元的NOP指令(步驟S405),以補滿L位元的指令邊界,以免除字組對齊的問題,于此實施例中,L=M=32且N=16,因此,只需插入一個N位元的NOP指令。
圖5顯示本發(fā)明的以自動指令模式轉換來對齊字組的處理器及方法的實例,如圖所示,在待執(zhí)行的指令中,指令(7)為一16位元指令而指令(8)為一32位元指令,此將造成字組對齊問題,因此,若該16位元的指令(7)有相對應的32位元的指令(7′),則本發(fā)明將該16位元的指令(7)轉換為其相對應的32位元的指令(7′)。指令(17)為一16位元指令而指令(18)為一32位元指令,若該16位元的指令(17)沒有相對應的32位元的指令(17),則本發(fā)明于該16位元的指令(17)之后、指令(18)之前插入一16位元的NOP指令,而解決字組對齊問題。
由上述可知,于本發(fā)明中,由于16位元的指令(7)已轉換為其相對應的32位元的指令(7′),如此該處理器執(zhí)行完該32位元的指令(7′)后即可立即執(zhí)行指令(8),而無需于執(zhí)行一沒有作用的16位元NOP指令后,才能執(zhí)行指令(8),此可增加該處理器執(zhí)行執(zhí)行速度,可克服公知技術32位元指令及16位元指令無法夾雜存放在同一區(qū)塊的問題。
圖6顯示本發(fā)明技術的一應用范例,其中一具有復數(shù)個32位元字組的程序610,其可包含復數(shù)個16位元及32位元指令。該程序610可先經(jīng)由本發(fā)明的指令模式轉換裝置330或技術,先行將該程序610中具有如圖5所示會造成字組對齊問題的指令(7)及指令(8)予以轉換而為程序620,該程序620再儲存于一儲存器630中。此種轉換過程,亦可使用一軟件進行離線(off-line)處理。
而一般的處理器640在執(zhí)行該程序620時,其將由該儲存器630中揭取程序620,由于該程序620已無字組對齊問題,該處理器640可避免執(zhí)行進行相關字組對齊問題的硬件線路,此不僅可減低處理器640設計的復雜度,同時,亦可加速其執(zhí)行速度。
應注意的是,上述諸多實施例僅為了便于說明而舉例而已,本發(fā)明所主張的權利范圍自應以申請專利范圍所述為準,而非僅限于上述實施例。
權利要求
1.一種以自動指令模式轉換來對齊字組的處理器,其所執(zhí)行的指令來自L位元長度的指令邊界,此L位元指令邊界中可容納一個M位元指令或復數(shù)個N位元指令,其中L、M、N為正整數(shù),L≥M>N,至少一N位元指令對應有一M位元指令,該處理器包含一指令輸入裝置,其包含一寬度為L位元的儲存空間以供儲存復數(shù)個代表指令的L位元字組;一指令擷取裝置,用以擷取該指令碼輸入裝置的一L位元字組;以及一指令模式轉換裝置,當該指令擷取裝置所擷取的L位元字組為一M位元指令、且前一L位元字組僅為一N位元指令時,若該N位元指令有相對應的M位元指令,則將該N位元指令轉換為相對應的M位元指令,若該N位元指令沒有相對應的M位元指令,則插入至少一N位元的NOP指令于該N位元指令之后。
2.如權利要求1所述的處理器,其特征在于,其中還包含一指令解碼裝置,用以對該指令模式轉換裝置所輸出的指令進行解碼;以及一指令執(zhí)行裝置,用以執(zhí)行該指令解碼裝置所輸出的解碼后指令。
3.如權利要求1所述的處理器,其特征在于,其中,L為32,M為32,N為16。
4.一種以自動指令模式轉換來對齊字組的方法,該處理器所執(zhí)行的指令來自具有L位元長度的指令邊界,此L位元指令邊界中可容納一個M位元指令或復數(shù)個N位元指令,其中L、M、N為正整數(shù),L≥M>N,至少一N位元指令對應有一M位元指令,該方法包括步驟(A)提供復數(shù)個代表指令的L位元字組;(B)擷取一L位元字組,其中,當所擷取的L位元字組為一M位元指令、且前一L位元字組僅為一N位元指令時,若該N位元指令有相對應的M位元指令,則將該N位元指令轉換為相對應的M位元指令,若該N位元指令沒有相對應的M位元指令,則插入至少一N位元的NOP指令于該N位元指令之后;(C)對所擷取的L位元字組進行解碼;以及(D)執(zhí)行該解碼后的N位元指令或M位元指令。
5.如權利要求4所述的方法,其特征在于,其中,L為32,M為32,N為16。
6.一種以自動指令模式轉換來對齊字組的方法,該程序的指令具有L位元長度的指令邊界,此L位元指令邊界中可容納一個M位元指令或復數(shù)個N位元指令,其中L、M、N為正整數(shù),L≥M>N,至少一N位元指令對應有一M位元指令,該方法是擷取一L位元字組,其中,當所擷取的L位元字組為一M位元指令、且前一L位元字組僅為一N位元指令時,若該N位元指令有相對應的M位元指令,則將該N位元指令轉換為相對應的M位元指令,若該N位元指令沒有相對應的M位元指令,則插入至少一N位元的NOP指令于該N位元指令之后。
7.如權利要求6所述的方法,其特征在于,其中,L為32,M為32,N為16。
全文摘要
一種以自動指令模式轉換來對齊字組的處理器及方法,該處理器所執(zhí)行的指令來自L位元長度的指令邊界,此L位元指令邊界中可容納一個M位元指令或復數(shù)個N位元指令,當所擷取的L位元字組為一M位元指令且前一個L位元字組為一N位元指令時,若該N位元指令有相對應的M位元指令,則將該N位元指令轉換為相對應的M位元指令,若該N位元指令沒有相對應的M位元指令,則插入至少一N位元的NOP指令于該N位元指令之后。
文檔編號G06F9/32GK1570852SQ0313308
公開日2005年1月26日 申請日期2003年7月23日 優(yōu)先權日2003年7月23日
發(fā)明者吳政諭 申請人:凌陽科技股份有限公司