專利名稱:具有緊湊指令集架構(gòu)的微處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例通常涉及微處理器。更具體地,本發(fā)明的實(shí)施例涉及微處理器的指令集架構(gòu)。
背景技術(shù):
存在對(duì)經(jīng)濟(jì)的、高性能的微處理器的擴(kuò)大的需要,特別是對(duì)于諸如微控制器應(yīng)用的深嵌入式應(yīng)用。結(jié)果,微處理器的客戶需要能夠快速地和有效地集成到產(chǎn)品中的高效的解決方案。此外,設(shè)計(jì)人員和微處理器的客戶持續(xù)要求更低的功耗,并且近來關(guān)注于環(huán)境友好的微處理器支持的裝置。一種用于實(shí)現(xiàn)這些要求的方法是將現(xiàn)有的指令集(在這里也稱為指令集架構(gòu) (ISA))修改為具有較小的“代碼足印”(code footprint)的新指令集。較小的代碼足印通常轉(zhuǎn)換為每個(gè)執(zhí)行的任務(wù)的較低的功耗。較小的指令大小(也稱作“代碼壓縮”)還可以導(dǎo)致更高的性能。關(guān)于該提高的效率的一個(gè)原因在于用于取出較小的指令的需要較低數(shù)量的存儲(chǔ)器訪問。通過使新ISA基于從現(xiàn)有的具有較大位寬的ISA得到的較小位寬的指令和較大位寬的指令的組合,可以得到另外的益處。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例涉及對(duì)將與微處理器一同使用的指令集架構(gòu)重新編碼,以及由此得到的新指令。根據(jù)一實(shí)施例,較大位寬的指令集被重新編碼為較小位寬的指令集或者具有較小位寬的指令和較大位寬的指令的組合的指令集。在實(shí)施例中,較小位寬的指令集保持與從中得到該較小位寬的指令集的較大位寬的指令集的匯編級(jí)兼容性,并且添加具有不同類型的指令。此外,新的較小位寬的指令集或者組合的較小和較大位寬的指令集較之從其重新編碼得到該較小位寬的指令集的較大位寬的指令集,可以是更高效的并且具有更高的性能。在一個(gè)實(shí)施例中,多個(gè)新的較小位寬指令被加入到新的指令集中,包括緊湊跳轉(zhuǎn)寄存器(JRC);跳轉(zhuǎn)寄存器,調(diào)整棧指針(16比特)(JRADDIUSP);加立即數(shù)無符號(hào)字5比特寄存器選擇(16比特)(ADDIUSQ ;移動(dòng)寄存器對(duì)(MOVEP);以及跳轉(zhuǎn)和鏈接寄存器,短延遲時(shí)隙(16 比特)(JALRS16)。在另一個(gè)實(shí)施例中,多個(gè)新的指令被加入到新的指令集中,其具有與原始指令集
7相同的大小,包括緊湊的等于零情況下的分支(BEQZC);緊湊的不等于零情況下的分支 (BNEZC);跳轉(zhuǎn)和鏈接交換(JALX);加載字對(duì)(LWP);加載多個(gè)字(LWM);存儲(chǔ)字對(duì)(SWP)和存儲(chǔ)多個(gè)字(SWM);加立即數(shù)無符號(hào)字(PC相關(guān))(ADDIUPC);大于或等于0情況下的分支以及鏈接,短延遲時(shí)隙(BGEZALS);小于0情況下的分支以及鏈接,短延遲時(shí)隙(BLTZALS); 跳轉(zhuǎn)和鏈接寄存器,短延遲時(shí)隙(JALRS);利用風(fēng)險(xiǎn)屏障的跳轉(zhuǎn)和鏈接寄存器,短延遲時(shí)隙 (JALRS.HB);以及跳轉(zhuǎn)和鏈接,短延遲時(shí)隙(JALS)。
參照附圖描述本發(fā)明的實(shí)施例。在附圖中,相同的附圖標(biāo)記可以表示相同的或者功能相似的元件。其中元件首次出現(xiàn)的附圖通常由相應(yīng)的附圖標(biāo)記中的最左側(cè)的數(shù)位表示。圖1是根據(jù)本發(fā)明的實(shí)施例的ISA的32位指令的格式的示意圖。圖2是根據(jù)本發(fā)明的實(shí)施例的ISA的16位指令的格式的示意圖。圖3A是圖示根據(jù)本發(fā)明的實(shí)施例的緊湊的等于零情況下的分支(BEQZC)指令的格式的示意圖。圖;3B是圖示根據(jù)本發(fā)明的實(shí)施例的微處理器中的BEQZC指令的操作的流程圖。圖3C是圖示根據(jù)本發(fā)明的實(shí)施例的緊湊的不等于零情況下的分支(BNEZC)指令的格式的示意圖。圖3D是圖示根據(jù)本發(fā)明的實(shí)施例的微處理器中的BNEZC指令的操作的流程圖。圖3E是示出根據(jù)本發(fā)明的實(shí)施例的跳轉(zhuǎn)和鏈接交換(JALX)指令的格式的示意圖。圖3F是圖示根據(jù)本發(fā)明的實(shí)施例的微處理器中的JALX指令的操作的流程圖。圖3G是示出JALX指令的第二實(shí)施例的格式的示意圖。圖;3H是圖示根據(jù)第二實(shí)施例的JALX指令的第二實(shí)施例的操作的流程圖。圖31是示出根據(jù)本發(fā)明的實(shí)施例的緊湊的跳轉(zhuǎn)寄存器(JRC)指令的格式的示意圖。圖3J是圖示根據(jù)一實(shí)施例的微處理器中的JRC指令的操作的流程圖。圖3K是示出根據(jù)本發(fā)明的實(shí)施例的加載字對(duì)(LWP)指令的格式的示意圖。圖3L是圖示根據(jù)實(shí)施例的LWP指令的操作的流程圖。圖3M是示出根據(jù)本發(fā)明的實(shí)施例的加載多個(gè)字(LWM)指令的格式的示意圖。圖3N是圖示根據(jù)實(shí)施例的微處理器中的LWM指令的操作的流程圖。圖30是示出根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)字對(duì)(SWP)指令的格式的示意圖。圖3P是圖示根據(jù)一實(shí)施例的SWP指令的操作的流程圖。圖3Q是示出根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)多個(gè)字(SWM)指令的格式的示意圖。圖3R是圖示根據(jù)一實(shí)施例的SWM指令的操作的流程圖。圖4A為示出根據(jù)本發(fā)明實(shí)施例的跳轉(zhuǎn)寄存器、調(diào)整棧指針(16位)(JRADDIUSP) 指令的格式的示意圖。圖4B為示出根據(jù)本發(fā)明實(shí)施例的微處理器中JRADDIUSP指令的操作的流程圖。圖4C為示出根據(jù)本發(fā)明實(shí)施例的加立即數(shù)無符號(hào)字5比特寄存器選擇(16比特)(ADDIUS5)指令的格式的示意圖。圖4D為示出根據(jù)本發(fā)明實(shí)施例的微處理器中ADDIUS5指令的操作的流程圖。圖4E為示出根據(jù)本發(fā)明實(shí)施例的加立即數(shù)無符號(hào)字(PC相關(guān))(ADDIUPC)指令的格式的示意圖。圖4F為示出根據(jù)一個(gè)實(shí)施例的微處理器中ADDIUPC指令的操作的流程圖。圖4G為示出根據(jù)本發(fā)明實(shí)施例的移動(dòng)寄存器對(duì)(MOVEP)指令的格式的示意圖。圖4H為示出根據(jù)本發(fā)明實(shí)施例的MOVEP指令的操作的流程圖。圖5A為示出根據(jù)本發(fā)明實(shí)施例的“大于或等于0情況下的分支以及鏈接,短延遲時(shí)隙”(BGEZALS)指令的格式的示意圖。圖5B為示出根據(jù)本發(fā)明實(shí)施例的微處理器中BGEZALS指令的操作的流程圖。圖5C為示出根據(jù)本發(fā)明實(shí)施例的“小于0情況下的分支以及鏈接,短延遲時(shí)隙”(BLTZALS)指令的格式的示意圖。圖5D為示出根據(jù)本發(fā)明實(shí)施例的微處理器中BLTZALS指令的操作的流程圖。圖5E為示出根據(jù)本發(fā)明實(shí)施例的“跳轉(zhuǎn)和鏈接寄存器,短延遲時(shí)隙”(16比特) (JALRS16)指令格式的示意圖。圖5F為示出根據(jù)一個(gè)實(shí)施例的微處理器中JALRS16指令操作的流程圖。圖5G為示出根據(jù)本發(fā)明實(shí)施例的“跳轉(zhuǎn)和鏈接寄存器,短延遲時(shí)隙”(JALRS)指令的格式的示意圖。圖5H為示出根據(jù)第二實(shí)施例示出JALRS指令的操作的流程圖。圖51為示出根據(jù)本發(fā)明實(shí)施例的“利用風(fēng)險(xiǎn)屏障的跳轉(zhuǎn)和鏈接寄存器,短延遲時(shí)隙”(JALRS.HB)格式的示意圖。圖5J為示出根據(jù)一個(gè)實(shí)施例的微處理器中JALRS. HB指令的操作的流程圖。圖漲為示出根據(jù)本發(fā)明實(shí)施例的“跳轉(zhuǎn)和鏈接,短延遲時(shí)隙”(JALS)指令的格式的示意圖。圖5L為示出根據(jù)一個(gè)實(shí)施例的JALS指令的操作的流程圖。圖6為根據(jù)本發(fā)明實(shí)施例的微處理器核的示意圖。
具體實(shí)施例方式盡管這里參照關(guān)于特定應(yīng)用的說明性實(shí)施例描述了本發(fā)明,但是應(yīng)當(dāng)理解,本發(fā)明不限于此。本領(lǐng)域技術(shù)人員根據(jù)這里提供的教導(dǎo)將認(rèn)識(shí)到本發(fā)明的范圍中的另外的修改、應(yīng)用和實(shí)施例以及其中本發(fā)明將具有顯著效用的另外的領(lǐng)域。以下章節(jié)描述了根據(jù)本發(fā)明的實(shí)施例的指令集架構(gòu)。I.概述II.重新編碼的架構(gòu)a.匯編級(jí)兼容性b.特殊事件ISA模式選擇III.新類型的指令a.重新編碼的分支和跳轉(zhuǎn)指令b.基于統(tǒng)計(jì)分析的編碼的字段
c.指令自變量的優(yōu)化編碼d.延遲時(shí)隙e.具有精簡(jiǎn)的目標(biāo)寄存器的指令f.現(xiàn)存指令效果的組合IV.指令格式a.原理(principle)操作碼組織b.主操作碼V.新的ISA指令VI.示例性處理器核VII.軟件實(shí)施例VIII.結(jié)論I.概覽這里描述的實(shí)施例涉及包括要執(zhí)行的指令的ISA,能夠在其上執(zhí)行ISA的指令的微處理器,以及重新編碼現(xiàn)有ISA的方法。這里描述的一些實(shí)施例涉及通過重新編碼現(xiàn)有 ISA而得到的新的ISA。這里描述的一些實(shí)施例涉及從將現(xiàn)有的較大位寬的ISA重新編碼為組合的較小和較大位寬的ISA得到的ISA。在一個(gè)實(shí)施例中,現(xiàn)有的較大位寬的ISA是可獲得自Sunnyvale, California的MIPS,INC.的MIPS32,新的重新編碼的較小位寬的ISA 是也可獲得自MIPS,INC.的MicroMIPS 16位指令集,并且新的重新編碼的較大位寬的ISA 是也可獲得自MIPS, INC.的MicroMIPS 32位指令集。在另一實(shí)施例中,較大位寬的架構(gòu)可以被重新編碼為具有相同位寬的改進(jìn)的架構(gòu)或者相同位寬的指令和較小位寬的指令的組合。在一個(gè)實(shí)施例中,重新編碼的較大位寬的指令集按如下方式被編碼為相同大小位寬的ISA 與具有這里討論的類型的重新編碼的較小位寬的指令集兼容和互補(bǔ)。重新編碼的較大位寬的指令集的實(shí)施例可以被稱為“增強(qiáng)的”,并且可以包含下文所討論的允許新指令集以并行模式實(shí)現(xiàn)的各種特征,其中在處理器上均可以利用這兩個(gè)指令集。這里描述的重新編碼的指令集還以獨(dú)立模式工作,其中每次僅有一個(gè)指令集是有效的。II.重新編碼的架構(gòu)a.匯編級(jí)兼容性這里描述的某些實(shí)施例在從較大位寬的ISA重新編碼到較小位寬的ISA或者組合位寬的ISA之后保持匯編級(jí)兼容性。為了實(shí)現(xiàn)此,在一個(gè)實(shí)施例中,重新編碼后的匯編語言指令集易記碼(mnemonics)與其所得自的指令相同。維持匯編級(jí)兼容性允許通過使用較小位寬的ISA的匯編源代碼對(duì)使用較大位寬的ISA的指令集匯編源代碼進(jìn)行編譯。換言之, 以本發(fā)明的新ISA實(shí)施例為目標(biāo)的匯編器也能夠?qū)钠涞玫奖景l(fā)明的實(shí)施例的傳統(tǒng)ISA進(jìn)行匯編。在一實(shí)施例中,匯編器確定使用哪種指令大小處理特定的指令。例如,為了區(qū)分不同位寬的ISA的指令,在一實(shí)施例中,利用對(duì)應(yīng)于不同大小的后綴對(duì)操作碼易記碼進(jìn)行擴(kuò)展。例如,在一個(gè)實(shí)施例中,將后綴“16”或“32”置于指令的末端處在第一個(gè)“.”(如果存在一個(gè)的話)之前,以區(qū)別16位和32位的編碼的指令。例如,在一個(gè)實(shí)施例中,“ADD16”指的是ADD指令的16位版本,而“ADD32”指的是ADD指令的32位版本。如本領(lǐng)域的技術(shù)人
10員將知曉的,可以使用其他后綴。其他實(shí)施例不使用指令大小的后綴指定。在這些實(shí)施例中,可以省略位寬后綴。在一實(shí)施例中,匯編器將查看命令的寄存器和立即數(shù)字段中的值,并且判定較大還是較小位寬的命令是適當(dāng)?shù)摹HQ于匯編器的設(shè)置,在處理特定指令時(shí)匯編器可以自動(dòng)地選擇最小的可用指令大小。b.特殊事件ISA模式選擇在另一實(shí)施例中,在如下事件之一中發(fā)生ISA選擇異常、中斷和通電事件。在該實(shí)施例中,正在處置特殊事件的處置器指定ISA。例如,對(duì)于通電,通電處置器可以指定 ISA。同樣地,在一個(gè)實(shí)施例中,中斷或異常處置器可以指定ISA。在另一實(shí)施例中,針對(duì)每個(gè)事件類型,用戶都可以通過控制位選擇使用哪個(gè)ISA。III.新類型的指令下面描述具有新ISA指令的實(shí)施例,以及具有重新編碼的指令的實(shí)施例。使用了若干個(gè)一般原理來開發(fā)這些指令,并且下面對(duì)這些進(jìn)行了解釋。a.重新編碼的分支和跳轉(zhuǎn)指令在一個(gè)實(shí)施例中,重新編碼的較小位寬的ISA支持較小的分支目標(biāo)地址,提供了增強(qiáng)的靈活性。例如,在一個(gè)實(shí)施例中,被重新編碼為16位分支指令的32位分支指令支持 16位對(duì)齊的分支目標(biāo)地址。在另一示例中,由于32位的重新編碼的分支指令的偏移字段大小保持與傳統(tǒng)的 32位的重新編碼的指令相同,因此分支范圍可以較小。在另外的實(shí)施例中,跳轉(zhuǎn)指令J、JAL 和JALX通過支持32位對(duì)齊的目標(biāo)地址來支持整個(gè)跳轉(zhuǎn)范圍。b.基于ISA使用情況的分析的編碼的字段如這里使用的術(shù)語“立即數(shù)字段”在本領(lǐng)域中是公知的。在實(shí)施例中,立即數(shù)字段可以包括分支的地址偏移字段、加載/存儲(chǔ)指令、和目標(biāo)字段。在實(shí)施例中,指令編碼中的立即數(shù)字段寬度和位置取決于指令。在一實(shí)施例中,指令的立即數(shù)字段被分為若干個(gè)字段, 其不需要是相鄰的。在另一實(shí)施例中,指令格式可具有單個(gè)的、連續(xù)的立即數(shù)字段。在一實(shí)施例中,針對(duì)ISA指令和宏使用特定的寄存器和立即數(shù)值可以傳達(dá)比其他值更高級(jí)別的可用性。這里描述的多個(gè)實(shí)施例使用該原理來增強(qiáng)指令的可用性。例如,為了實(shí)現(xiàn)該可用性,在一個(gè)實(shí)施例中,執(zhí)行ISA的使用時(shí)段上的寄存器和立即數(shù)字段中使用的值的統(tǒng)計(jì)頻率的分析。在另一實(shí)施例中,統(tǒng)計(jì)分析可以分析指令所使用的自變量,例如目標(biāo)寄存器和立即數(shù)值。可以在ISA中操作的同時(shí)針對(duì)指令進(jìn)行自變量使用情況的分析,從而確定各種不同的有用統(tǒng)計(jì),例如,自變量值總的使用頻率、針對(duì)特定指令或指令類別的自變量值的使用頻率、針對(duì)特定類別的計(jì)算機(jī)程序或用戶應(yīng)用的自變量值的使用頻率。在該統(tǒng)計(jì)分析及其應(yīng)用的一個(gè)示例中,第一 ISA具有接受5比特的目標(biāo)及5比特的立即數(shù)值的特定指令。此處描述的實(shí)施例,在準(zhǔn)備該指令的重新編碼的過程中,收集關(guān)于該特定指令使用情況的數(shù)據(jù),特別是,對(duì)于目標(biāo)寄存器和立即數(shù)值隨時(shí)間變化地使用哪些值。在另一實(shí)施例中,可以總地針對(duì)第一 ISA中的所有指令收集使用情況數(shù)據(jù)。收集時(shí)間的示例可根據(jù)樣本需求而變化。繼續(xù)上述實(shí)施例的例子,就第一 ISA總地收集的以及特別地就特定指令收集的數(shù)
11據(jù)可用于重新編碼該特定指令,或是用于相同的ISA或新的第二個(gè)ISA。如此處所描述的那樣,對(duì)指令重新編碼的一個(gè)原因是增加代碼壓縮。基于上面描述的收集的數(shù)據(jù),特定指令的重新編碼的版本可具有需要較少比特長(zhǎng)度(bit-length)的自變量。在一實(shí)施例中,這種大小上的減小可通過選擇自變量,例如如前面所述的目標(biāo)寄存器和立即數(shù)值,的總的可能值的子集來實(shí)現(xiàn)。例如,在可被5比特的自變量引用的32個(gè)可能值當(dāng)中,基于以上所描述類型的統(tǒng)計(jì)分析,可以選擇前8名最頻繁用的自變量值。在實(shí)施例中,這些前幾名的值可被稱為對(duì)于特定指令、ISA、計(jì)算機(jī)程序、計(jì)算機(jī)程序類型、應(yīng)用、應(yīng)用類型或其他相似的分組來說最“有用”的值。 前面所述的前8名的示例值可被“編碼”到下面所示類型的表結(jié)構(gòu)中,例如表9中。 以此方式,示例指令的重新編碼的版本可能不能在利用5比特編碼的32個(gè)可能值的全集上操作,但是在其格式上確實(shí)具有專用于該特定自變量的較小位數(shù)。如此處所描述的,為了輔助ISA重新編碼,上述編碼方法也可以允許減小寄存器和立即數(shù)字段的所需大小,這是因?yàn)榭梢允÷詫?duì)某種較不常用的值的編碼。例如,編碼后的寄存器和立即數(shù)值可被編碼為比原始值短的位寬,例如,“1001”可被編碼為“10”。當(dāng)將較大位寬指令集重新編碼為較小位寬ISA時(shí),可以將較不頻繁使用的值從新的列表中省略。在實(shí)施例中,此處描述的指令可以是新創(chuàng)建的、或從現(xiàn)有指令重新編碼的,從而對(duì)這些組具有增加的有用性。進(jìn)一步考慮這個(gè)示例,重新編碼的指令中的自變量需要較小的空間,可以使得具有較長(zhǎng)長(zhǎng)度(例如,32比特)的指令能夠被重新編碼為該指令的較小版本(例如,16比特)。 在此處描述的實(shí)施例中,這種舊的、較大指令和較小的、重新編碼的指令兩者可以都在新的 ISA的實(shí)施例中。如本領(lǐng)域技術(shù)人員根據(jù)此處描述的說明所知曉的,可以就指令的不同組成部分收集不同的統(tǒng)計(jì),從而允許對(duì)指令的不同的重新編碼。此外,基于該分析,此處描述的其他實(shí)施例,不使用未修改的寄存器或立即數(shù)值,而是對(duì)值進(jìn)行編碼以將最有用的寄存器和立即數(shù)值鏈接到最常用的值,如上面的統(tǒng)計(jì)分析所確定的那樣。c.指令自變量的優(yōu)化編碼在一個(gè)實(shí)施例中,關(guān)于將具有最高有用性的寄存器和立即數(shù)值鏈接到最常用的值的映射,某些鏈接可以傳遞比其它鏈接更高級(jí)別的有用性。此處描述的實(shí)施例使用該原理來采用編碼的增強(qiáng)指令的有用性。例如,表IA描述了移動(dòng)寄存器對(duì)(MOVEP)指令的立即數(shù)字段的編碼和解碼值,在下文中將對(duì)其進(jìn)行說明并在圖4G和4H中進(jìn)行描述。應(yīng)當(dāng)注意到,在表IA中,rt (或,rs) 的編碼值(十進(jìn)制)和解碼值(十進(jìn)制)之間并非為1對(duì)1 (1-to-l)的值。在一個(gè)實(shí)施例中,以下所描述的將1的編碼值映射到17的解碼值的映射值是基于其上將執(zhí)行指令的處理器的特征而選擇的。本領(lǐng)域技術(shù)人員將理解,某些硬件可以使用較少計(jì)算能力將一個(gè)值鏈接到另一個(gè)值。表IA =MOVEP編碼和解碼值示例
權(quán)利要求
1.一種RISC處理器,用于執(zhí)行屬于指令集架構(gòu)的指令,該指令集架構(gòu)具有至少兩種不同的大小,該處理器包括指令取出單元,被配置用于每個(gè)周期取出至少一條指令;指令解碼單元,被配置用于確定每條所取出的指令的大小,并根據(jù)其所確定的大小將每條所取出的指令解碼;以及執(zhí)行單元,被配置用于執(zhí)行所解碼的指令,其中,所述指令集架構(gòu)中的指令后向兼容與傳統(tǒng)處理器一起使用的編譯器。
2.如權(quán)利要求1的RISC處理器,其中基于對(duì)指令使用情況的統(tǒng)計(jì)分析確定指令集架構(gòu)中特定指令的指令大小。
3.如權(quán)利要求2的RISC處理器,其中大小較小的指令被提供用于較常用的指令。
4.如權(quán)利要求1的RISC處理器,其中所述指令集架構(gòu)包括僅具有3種大小的指令。
5.如權(quán)利要求3的RISC處理器,其中所述指令集架構(gòu)包括 具有16比特的第一組指令;以及具有32比特的第二組指令。
6.一種通過對(duì)現(xiàn)有處理器指令集架構(gòu)ISA進(jìn)行編碼以創(chuàng)建新的處理器ISA的方法,包括利用計(jì)算機(jī)收集數(shù)據(jù),該數(shù)據(jù)與來自現(xiàn)有ISA的現(xiàn)有指令在一段使用時(shí)間上的執(zhí)行值對(duì)應(yīng);利用給定的計(jì)算機(jī)分析所收集的數(shù)據(jù);以及從現(xiàn)有指令和所述分析重新編碼新的ISA的新的指令。
7.如權(quán)利要求6的方法,其中所述新的指令具有與現(xiàn)有指令相比較小的比特長(zhǎng)度。
8.如權(quán)利要求6的方法,其中所述分析包括使用統(tǒng)計(jì)分析進(jìn)行分析。
9.如權(quán)利要求6的方法,其中所述執(zhí)行值包括目標(biāo)寄存器,并且所述新的指令利用編碼來引用精簡(jiǎn)的目標(biāo)寄存器集。
10.如權(quán)利要求6的方法,其中所述執(zhí)行值包括立即數(shù)值,并且所述新的指令利用編碼值來接收精簡(jiǎn)的可能的立即數(shù)值集合。
11.如權(quán)利要求10的方法,其中至少一個(gè)編碼后的值是基于在其上所述新的ISA被編碼以被執(zhí)行的計(jì)算機(jī)的特定特征的。
12.—種有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其包括以軟件實(shí)現(xiàn)的處理器,該處理器包括 指令取出單元,被配置用于取出第一指令,該第一指令與第一指令集架構(gòu)ISA相關(guān)聯(lián); 指令解碼單元,被配置用于確定所述第一指令的大小,并根據(jù)其所確定的大小將所述第一指令解碼;以及執(zhí)行單元,被配置用于執(zhí)行所解碼的第一指令,其中所述第一指令的自變量的大小是基于第二指令的統(tǒng)計(jì)分析而確定的。
13.如權(quán)利要求12的有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述第二指令與第二ISA相關(guān)聯(lián)。
14.如權(quán)利要求12的有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述統(tǒng)計(jì)分析包括對(duì)所述第二指令在一段時(shí)間上的使用情況進(jìn)行分析,以及確定所使用的自變量值的頻率。
15.如權(quán)利要求12的有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述統(tǒng)計(jì)分析包括所述對(duì)第二指令和其他指令在一段時(shí)間上的使用情況進(jìn)行分析,以及確定所述第二指令相比所述其他指令的使用頻率。
16.如權(quán)利要求12的有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述執(zhí)行單元被配置用于執(zhí)行所解碼的第一指令,其中基于所述統(tǒng)計(jì)分析從所述第二指令重新編碼得到所述第一指令。
17.如權(quán)利要求12的有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述第一指令被配置用于接收編碼后的自變量值。
18.如權(quán)利要求17的有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述編碼后的自變量值是基于處理器的特征確定的。
19.如權(quán)利要求17的有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述編碼后的自變量值為立即數(shù)值。
20.如權(quán)利要求17的有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述編碼后的自變量為目標(biāo)寄存器值。
21.一種處理器,包括指令取出單元,被配置用于取出第一指令,該第一指令與第一指令集架構(gòu)ISA相關(guān)聯(lián); 指令解碼單元,被配置用于確定所述第一指令的大小,并根據(jù)其所確定的大小對(duì)所述第一指令解碼;以及執(zhí)行單元,被配置用于執(zhí)行所解碼的第一指令,其中所述第一指令是第二和第三指令的組合,并且其中所述第一指令接受編碼后的自變量值,所述編碼后的自變量值與來自所述第二指令和所述第三指令中的一個(gè)的未編碼的自變量對(duì)應(yīng)。
22.如權(quán)利要求21的處理器,其中所述第二指令和第三指令與第二ISA相關(guān)聯(lián)。
23.如權(quán)利要求21的處理器,其中所述編碼后的自變量值通過如下的處理過程產(chǎn)生, 該處理過程包括對(duì)所述未編碼的自變量在一段時(shí)間上的使用情況進(jìn)行分析;以及對(duì)所述第一指令所使用的多個(gè)自變量進(jìn)行選擇和編碼。
24.如權(quán)利要求23的處理器,其中所選擇的所述多個(gè)自變量對(duì)應(yīng)于通過所述分析而確定作為所述第二指令最頻繁使用的那些自變量的自變量。
25.一種用于在處理器上執(zhí)行緊湊的等于零情況下的分支指令的方法,該方法包括 在所述處理器處接收與指令對(duì)應(yīng)的比特序列;使用解碼器對(duì)所述指令的操作碼部分進(jìn)行解碼,所述操作碼指示所述指令為緊湊的等于零情況下的分支指令;利用所述解碼器對(duì)來自所述指令的rs值和偏移值進(jìn)行解碼; 將所述偏移值移位預(yù)定的位數(shù); 擴(kuò)展所述偏移值的符號(hào);通過將所述偏移值加到所述指令的存儲(chǔ)器地址來形成目標(biāo)地址; 確定GPR地址的內(nèi)容是否等于0,所述GPR地址與所述rs值相應(yīng);以及如果所檢查的GPR內(nèi)容等于0,則分支至所述目標(biāo)地址。
26.如權(quán)利要求25所述的方法,其中所述指令的比特長(zhǎng)度為32比特;所述指令的所述操作碼部分包括主操作碼和次操作碼;所述指令的所述主操作碼部分的比特長(zhǎng)度為6比特; 所述指令的所述次操作碼部分的比特長(zhǎng)度為5比特; 所述偏移部分的比特長(zhǎng)度為16比特;以及所述指令的所述rs部分的比特長(zhǎng)度為5比特。
27.一種用于在處理器上執(zhí)行加載多個(gè)字指令的方法,該方法包括 在所述處理器處接收與指令對(duì)應(yīng)的比特序列;使用解碼器對(duì)所述指令的操作碼部分進(jìn)行解碼,該操作碼指示所述指令是加載多個(gè)字指令;使用所述解碼器對(duì)所述指令的寄存器列表、偏移值和基址操作數(shù)部分進(jìn)行解碼; 擴(kuò)展所述偏移值的符號(hào);通過符號(hào)擴(kuò)展了的偏移值和GI^R地址的內(nèi)容的無符號(hào)加,形成有效地址,所述GI^R地址對(duì)應(yīng)于所述基址操作數(shù)值;針對(duì)寄存器列表中所列的每個(gè)寄存器執(zhí)行以下步驟在有效地址處從存儲(chǔ)器取出存儲(chǔ)器字;擴(kuò)展所取出的存儲(chǔ)器字的符號(hào)至Gra寄存器的長(zhǎng)度;在GI^R地址中存儲(chǔ)所取出的存儲(chǔ)器字,該GI^R地址對(duì)應(yīng)于所述寄存器列表中存儲(chǔ)的值;以及使所述有效地址增加到下一個(gè)存儲(chǔ)器字。
28.如權(quán)利要求27的方法,其中所述指令的比特長(zhǎng)度為32比特;所述指令的所述操作碼部分包括主操作碼和次操作碼; 所述指令的所述主操作碼部分的比特長(zhǎng)度為6比特; 所述執(zhí)行令的所述次操作碼部分的比特長(zhǎng)度為4比特; 所述指令的所述寄存器列表部分的比特長(zhǎng)度為5比特; 所述基址操作數(shù)部分的比特長(zhǎng)度為5比特;以及所述指令的所述偏移部分的比特長(zhǎng)度為12比特。
29.一種用于在處理器上執(zhí)行跳轉(zhuǎn)寄存器調(diào)整棧指針指令的方法,該方法包括 在所述處理器處接收與指令對(duì)應(yīng)的比特序列;利用解碼器對(duì)所述指令的操作碼部分進(jìn)行解碼,所述操作碼指示該指令為跳轉(zhuǎn)寄存器調(diào)整棧指針指令;利用所述解碼器對(duì)所述指令的增量值部分進(jìn)行解碼; 取出存儲(chǔ)在第一通用寄存器和第二通用寄存器中的值; 將所述增量值左移位預(yù)定的位數(shù);將左移位后的立即數(shù)值加到存儲(chǔ)在第二寄存器的值,并將結(jié)果放置于所述第一寄存器中;將有效目標(biāo)地址設(shè)置為第一寄存器中所存儲(chǔ)的值; 清除所述有效目標(biāo)地址中的0位;將指令集架構(gòu)模式位設(shè)置為所述第二寄存器的位0中所存儲(chǔ)的值;以及跳轉(zhuǎn)至所述有效目標(biāo)地址。
30.如權(quán)利要求四的方法,其中 所述指令的比特長(zhǎng)度為16比特;所述指令的所述操作碼部分包括主操作碼和次操作碼; 所述指令的所述主操作碼部分的比特長(zhǎng)度為6比特; 所述指令的所述次操作碼部分的比特長(zhǎng)度為5比特;以及所述指令的立即數(shù)增量部分的比特長(zhǎng)度為5比特。
31.一種用于在處理器上執(zhí)行加立即數(shù)無符號(hào)字寄存器選擇指令的方法,該方法包括在所述處理器處接收與指令對(duì)應(yīng)的比特序列;使用解碼器對(duì)該指令的操作碼部分進(jìn)行解碼,該操作碼指示該指令是加立即數(shù)無符號(hào)字寄存器選擇指令;利用所述解碼器對(duì)所述指令的與指令立即數(shù)值和寄存器索引值對(duì)應(yīng)的部分進(jìn)行解碼;擴(kuò)展所述指令立即數(shù)值的符號(hào);將GI^R地址中所存儲(chǔ)的值加到符號(hào)擴(kuò)展了的指令立即數(shù)值,所述GI^R地址對(duì)應(yīng)于所述寄存器索引值;將加的結(jié)果置于所述GI^R地址中,其中,所述指令比特長(zhǎng)度為16比特;所述指令的操作碼部分包括主操作碼和次操作碼;所述指令的主操作碼部分的比特長(zhǎng)度為6比特;所述指令的次操作碼部分的比特長(zhǎng)度為1比特;所述指令的寄存器索引部分的比特長(zhǎng)度為5比特;以及所述指令的指令立即數(shù)部分的比特長(zhǎng)度為4比特。
32.一種用于在處理器上執(zhí)行移動(dòng)寄存器對(duì)指令的方法,該方法包括 在所述處理器處接收與指令對(duì)應(yīng)的比特序列;利用解碼器對(duì)所述指令的操作碼部分進(jìn)行解碼,該操作碼指示該指令是移動(dòng)寄存器對(duì)指令;利用所述解碼器對(duì)所述指令的與第一編碼的寄存器地址值、第二編碼的寄存器地址值和編碼的目的地地址值對(duì)應(yīng)的部分進(jìn)行解碼;將所述第一編碼的寄存器地址值轉(zhuǎn)換為第一解碼的寄存器地址值; 將所述第二編碼的寄存器地址值轉(zhuǎn)換為第二解碼的寄存器地址值; 從所述編碼的目的地地址值確定第三解碼的寄存器地址值和第四解碼的寄存器地址值;將第一寄存器的內(nèi)容拷貝至第三寄存器,第一寄存器地址對(duì)應(yīng)于所述第一解碼的寄存器地址值,并且第三寄存器地址對(duì)應(yīng)于所述第三解碼的寄存器地址值;以及將第二寄存器的內(nèi)容拷貝至第四寄存器,第二寄存器地址對(duì)應(yīng)于所述第三解碼的寄存器地址值,并且第四寄存器地址對(duì)應(yīng)于所述第四解碼的寄存器地址值。
33.如權(quán)利要求32的方法,其中 所述指令的比特長(zhǎng)度為16比特;所述指令的所述操作碼部分包括主操作碼和次操作碼;所述指令的所述主操作碼部分的比特長(zhǎng)度為6比特;所述指令的所述次操作碼部分的比特長(zhǎng)度為1比特;所述指令的以下部分的比特長(zhǎng)度為3比特所述第一編碼的寄存器值,所述第二編碼的寄存器值,以及所述編碼的目的地值;以及以下部分的比特長(zhǎng)度為5比特所述第一解碼的寄存器值,所述第二解碼的寄存器值,所述第三解碼的寄存器值,以及所述第四解碼的寄存器值。
34.一種用于在處理器上執(zhí)行利用延遲時(shí)隙的跳轉(zhuǎn)和鏈接指令的方法,該方法包括 在所述處理器處接收與指令對(duì)應(yīng)的比特序列;利用解碼器對(duì)所述指令的操作碼部分進(jìn)行解碼,所述操作碼指示該指令是利用延遲時(shí)隙的跳轉(zhuǎn)和鏈接指令;利用所述解碼器對(duì)所述指令的與指令索引對(duì)應(yīng)的部分進(jìn)行解碼; 將所述指令索引左移位預(yù)定的移位量;通過將來自延遲時(shí)隙地址的特定數(shù)量的比特與左移位的指令索引連接而形成有效目標(biāo)地址;通過將一值加到所述指令的地址來形成返回地址,其中,在其中執(zhí)行所述指令的ISA 具有可變的比特長(zhǎng)度,并且所加的值取決于所述延遲時(shí)隙指令的大??; 將所述返回地址置于GPR中;在所述處理器處接收與延遲時(shí)隙地址對(duì)應(yīng)的比特序列; 利用解碼器對(duì)位于所述延遲時(shí)隙地址處的指令進(jìn)行解碼; 執(zhí)行所述延遲時(shí)隙指令;以及跳轉(zhuǎn)至所形成的有效目標(biāo)地址。
35.如權(quán)利要求34的方法,其中 所述指令的比特長(zhǎng)度為32比特;所述指令的操作碼部分的比特長(zhǎng)度為6比特; 所述指令索引的比特長(zhǎng)度為26比特;以及所加的值為2或者4。
全文摘要
一種重新編碼指令集架構(gòu)(ISA),其提供了較小位寬指令或較小或較大位寬指令的組合,以提高指令執(zhí)行效率并減少代碼足印。該ISA可重新編碼自一個(gè)具有較大位寬指令的傳統(tǒng)ISA,并且該重新編碼的ISA能夠維持與其來自的ISA在匯編級(jí)別的兼容性。此外,該重新編碼的ISA可具有新的和不同的附加指令類型,包括具有由統(tǒng)計(jì)分析確定的編碼自變量的指令以及具有指令組合效果的指令。
文檔編號(hào)G06F9/30GK102200905SQ201110128200
公開日2011年9月28日 申請(qǐng)日期2011年3月25日 優(yōu)先權(quán)日2010年3月26日
發(fā)明者D·Y-M·拉尤, E·K·諾登, J·H·羅賓森 申請(qǐng)人:Mips技術(shù)公司