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