專利名稱:壓縮指令格式的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及微處理器和微處理器系統(tǒng)。具體來(lái)說(shuō),本發(fā)明的至少一個(gè)實(shí)施例涉及產(chǎn)生壓縮指令格式的指令編碼技術(shù)。
背景技術(shù):
微處理器技術(shù)這些年來(lái)得到迅速發(fā)展。計(jì)算機(jī)架構(gòu)和半導(dǎo)體技術(shù)的進(jìn)步創(chuàng)造了設(shè)計(jì)新處理器的許多機(jī)會(huì)。通常存在設(shè)計(jì)新處理器的兩種選項(xiàng):(I)定義全新的架構(gòu),以及
(2)擴(kuò)展當(dāng)前架構(gòu)以容納新特征。新處理器包含硬件和軟件兩個(gè)方面的新特征?;诂F(xiàn)有設(shè)計(jì)的新處理器通常具有能利用新硬件設(shè)計(jì)的附加的指令集。但是,由于指令的編碼和存儲(chǔ)指令操作碼映射方面的限制,通過(guò)添加新的指令集來(lái)擴(kuò)展指令集是一個(gè)難題。因此,本行業(yè)需要提供用于擴(kuò)展指令集而無(wú)需增加硬件復(fù)雜度以及無(wú)需明顯擴(kuò)大操作碼映射的數(shù)量和大小的有效方法。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的實(shí)施例,提供了一種裝置,包括:
解碼單元,能夠解碼現(xiàn)有指令集的指令以及擴(kuò)展指令集的指令,所述解碼單元包括第一解碼邏輯電路及與第一指令解碼邏輯電路耦合的第二解碼邏輯電路,所述第一解碼邏輯電路用來(lái)接收指令并用來(lái)檢測(cè)包括用作所述現(xiàn)有指令集的部分的一個(gè)或多個(gè)預(yù)定義前綴、逃逸碼或操作碼的多個(gè)字段的存在,并向第二解碼邏輯電路指明所述指令中的所述多個(gè)字段的每個(gè)的功能,其中所述第二指令解碼邏輯將使用由所述第一指令解碼邏輯指明的所述多個(gè)字段的每個(gè)的功能而將所述指令從現(xiàn)有指令集的第一格式轉(zhuǎn)換為所述擴(kuò)展指令集的第二格式中的所述指令的表示,其中所述第二格式包括具有操作碼映射字段、REX字段、第三源寄存器字段、向量大小字段和前綴字段的屬性字段,并且第二格式與所述現(xiàn)有指令集中未實(shí)現(xiàn)的指令后向兼容。
根據(jù)本發(fā)明的實(shí)施例,提供了一種方法,包括:
在第一解碼邏輯電路中接收具有現(xiàn)有指令集的第一指令格式的指令;
在第一指令格式中檢測(cè)包括用作所述現(xiàn)有指令集的部分的一個(gè)或多個(gè)預(yù)定義前綴、逃逸碼或操作碼的第一多個(gè)字段的存在;
向第二解碼邏輯電路指明所述指令中的所述第一多個(gè)字段的每個(gè)的功能;
在所述第二解碼邏輯電路中使用所述第一多個(gè)字段的每個(gè)的所指明的功能而將所述第一指令格式轉(zhuǎn)換成擴(kuò)展指令集的第二指令格式中的所述指令的表示,所述第二指令格式具有包括屬性字段的第二多個(gè)字段,所述屬性字段具有操作碼映射字段、REX字段、第三源寄存器字段、向量大小字段和前綴字段,其中所述第二格式與所述現(xiàn)有指令集中未實(shí)現(xiàn)的指令后向兼容。
本發(fā)明提供一種裝置,包括:第一指令解碼邏輯,向第二指令解碼邏輯指明指令中的多個(gè)字段的每個(gè)的功能,其中所述第二指令解碼邏輯將使用由所述第一指令解碼邏輯所指明的所述多個(gè)字段的每個(gè)的功能將所述指令從第一格式轉(zhuǎn)換成第二格式,其中所述第二格式將采用比所述指令的所述第一格式更少的位來(lái)表示所述多個(gè)字段的至少一個(gè)。
本發(fā)明還提供一種已經(jīng)在其上存儲(chǔ)了指令的機(jī)器可讀介質(zhì),所述指令在由機(jī)器解碼時(shí)使所述機(jī)器生成結(jié)果,包括:具有與所述指令不同的格式的所述指令的表示,其中所述指令的表示包括具有操作碼映射字段、REX字段、第三源寄存器字段、向量大小字段和前綴字段的屬性字段。
本發(fā)明還提供一種系統(tǒng),包括:存儲(chǔ)器,存儲(chǔ)具有第一指令格式的指令;處理器,包括向第二指令解碼邏輯指明指令中的多個(gè)字段的每個(gè)的功能的第一指令解碼器邏輯,其中所述第二指令解碼邏輯將使用由所述第一指令解碼邏輯所指明的所述多個(gè)字段的每個(gè)的功能將所述指令從第一格式轉(zhuǎn)換成第二格式,其中所述第二格式將采用比所述指令的所述第一格式更少的位來(lái)表示所述多個(gè)字段的至少一個(gè)。
本發(fā)明還提供一種方法,包括:將具有第一多個(gè)字段的第一指令格式轉(zhuǎn)換成具有第二多個(gè)字段的第二指令格式,其中所述第二指令格式使用更少位來(lái)保留所述第一指令格式中包含的所有信息,其中所述第一指令格式包括八位的前綴字段、八位的REX字段和八位的逃逸碼字段。
通過(guò)以下對(duì)本發(fā)明的詳細(xì)描述,本發(fā)明的特征和優(yōu)點(diǎn)將變得非常明顯,其中:圖1是示出其中可使用至少一個(gè)實(shí)施例的處理系統(tǒng)的框圖。圖2是示出可包括一個(gè)實(shí)施例所表示的字段的指令格式的框圖。
圖2a是“不包含“逃逸2”的操作碼的示意圖。
圖2b是可選地包含“逃逸2”的操作碼的示意圖。圖3是示出根據(jù)至少一個(gè)實(shí)施例、對(duì)指令進(jìn)行解碼的邏輯的框圖。圖4是示出根據(jù)一個(gè)實(shí)施例的第一階段解碼器的簡(jiǎn)圖。圖5是示出根據(jù)一個(gè)實(shí)施例的第二階段解碼器的簡(jiǎn)圖。圖6是示出執(zhí)行一個(gè)實(shí)施例的操作的流程圖。
具體實(shí)施例方式關(guān)于使用唯一指令屬性編碼的實(shí)施例來(lái)擴(kuò)展指令集的至少一種方法、裝置和系統(tǒng)。所公開的實(shí)施例還使指令集架構(gòu)能夠擴(kuò)大,同時(shí)保存用于存儲(chǔ)與指令集架構(gòu)關(guān)聯(lián)的操作碼映射的存儲(chǔ)區(qū)。在至少一個(gè)實(shí)施例中,一組現(xiàn)有指令字段被映射、壓縮或者由指令屬性字段取代,所述指令屬性字段可保持與現(xiàn)有技術(shù)指令字段關(guān)聯(lián)的信息,但是可產(chǎn)生更緊湊的指令從而用于存儲(chǔ)指令和指令操作碼映射需要的存儲(chǔ)區(qū)更少。在一個(gè)實(shí)施例中,指令屬性編碼可實(shí)現(xiàn)進(jìn)一步的指令和微架構(gòu)特征,包括將由一些指令使用的額外源操作數(shù)以及用于例如向量指令(例如單指令多數(shù)據(jù)(SIMD)指令)的指令的增加的數(shù)據(jù)大小。為了便于說(shuō)明,以下描述中提出例如處理器類型、指令格式、邏輯門類型和逃逸操作碼值等的大量具體細(xì)節(jié),以便透徹地了解本發(fā)明的實(shí)施例。但是,本領(lǐng)域的技術(shù)人員將清楚地知道,為了實(shí)施本發(fā)明,不一定需要這些具體細(xì)節(jié)。在其它情況下,眾所周知的電氣結(jié)構(gòu)和電路以框圖形式示出,以免影響使本發(fā)明不明確。在以下描述中,符號(hào)‘Ox’表示其后的數(shù)值是十六進(jìn)制格式。參照?qǐng)D1,示出其中可使用本發(fā)明的至少一個(gè)實(shí)施例的處理系統(tǒng)100。例如,系統(tǒng)100可用于對(duì)指令集118中的新指令類型118b或者現(xiàn)有指令118a進(jìn)行解碼或運(yùn)行。在一個(gè)實(shí)施例中,處理系統(tǒng)包括具有例如數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)或者微處理器的處理器110的任何系統(tǒng)。處理器110可具有任何類型的架構(gòu),例如復(fù)雜指令集計(jì)算機(jī)(CISC)、精簡(jiǎn)指令集計(jì)算機(jī)(RISC)、超長(zhǎng)指令字(VLIW)、多線程或混合架構(gòu)。處理系統(tǒng)可包括個(gè)人計(jì)算機(jī)(PC)、工程工作站、個(gè)人數(shù)字助理和其它手持設(shè)備、機(jī)頂盒等。圖1示出處理器110,它包括解碼單元116、寄存器組114、至少一個(gè)執(zhí)行單元112的至少一個(gè)內(nèi)部總線111以用于運(yùn)行指令。當(dāng)然,處理器110包含其它電路,這些電路對(duì)于理解本發(fā)明并不是必要的。解碼單元116、寄存器114和執(zhí)行單元112通過(guò)一個(gè)或多個(gè)內(nèi)部總線111耦合在一起。解碼單元116用于將處理器110所接收的指令解碼成控制信號(hào)和/或微碼入口點(diǎn)??赏ㄟ^(guò)指令緩沖器(例如圖3中的310)向解碼單元116發(fā)出指令。響應(yīng)這些控制信號(hào)和/或微碼入口點(diǎn),執(zhí)行單元112執(zhí)行適當(dāng)?shù)牟僮?。解碼單元116可使用任何數(shù)量的不同機(jī)制(例如查詢表、硬件實(shí)現(xiàn)、可編程邏輯陣列(“PLA”)等)來(lái)實(shí)現(xiàn)。解碼單元116示為能夠?qū)χ噶?06進(jìn)行解碼,指令106遵循由擴(kuò)展指令集118所定義的格式。指令集118包括現(xiàn)有指令集118a以及可表示可引入架構(gòu)的任何新指令的新指令集118b。指令集118包括用于對(duì)標(biāo)量和打包(packed)(或向量)數(shù)據(jù)執(zhí)行操作的指令。這些操作的格式能夠是任何便利的格式,包括單精度、雙精度和擴(kuò)展浮點(diǎn)數(shù)、有符號(hào)和無(wú)符號(hào)整數(shù)以及非數(shù)值數(shù)據(jù)。對(duì)于至少一個(gè)實(shí)施例,指令集118中定義的指令的長(zhǎng)度彼此有所不同。遵循由指令集118所提出的格式的指令106可存儲(chǔ)在存儲(chǔ)器系統(tǒng)102中。存儲(chǔ)器系統(tǒng)102計(jì)劃作為存儲(chǔ)器或存儲(chǔ)器分級(jí)結(jié)構(gòu)的一般表示,并且可包括存儲(chǔ)器的各種形式,例如硬盤驅(qū)動(dòng)器、CD-ROM、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SRAM)、閃速存儲(chǔ)器及相關(guān)電路。存儲(chǔ)器系統(tǒng)102除了存儲(chǔ)指令106之外還可存儲(chǔ)可由處理器110運(yùn)行的、數(shù)據(jù)信號(hào)所表示的數(shù)據(jù)104。
指令格式圖2是示出可包括本發(fā)明的一個(gè)實(shí)施例所表示的字段的指令200的格式的圖。指令格式200包括前綴字段210、操作碼字段220和操作數(shù)說(shuō)明符字段(例如modR/M、比例-變址-基址、位移、立即數(shù)等)。操作數(shù)說(shuō)明符字段可以是可選的,并且包括modR/M字段230、SIB字段240、位移字段250和立即數(shù)字段260。在一個(gè)實(shí)施例中,術(shù)語(yǔ)“逃逸操作碼”指的是二字節(jié)值,它向解碼器邏輯指明指令所對(duì)應(yīng)的操作碼可具有各種屬性,例如三字節(jié)操作碼,其中兩個(gè)字節(jié)對(duì)應(yīng)于逃逸操作碼,而第三字節(jié)對(duì)應(yīng)于指明該指令的功能的操作碼。例如,在一個(gè)實(shí)施例中,三字節(jié)逃逸字段中的二字節(jié)值可以是下列值之一:0x0F38、0x0F39、0x0F3A或0x0F3B。modR/M字段230的內(nèi)容指明尋址形式。modR/M字段可指定寄存器和尋址模式。modR/M字段230中的信息的某些編碼可指明尋址信息的第二字節(jié)存在于SIB (比例/變址/基址)字段240中,以便全面指定指令碼的尋址形式。例如,基址加變址尋址形式和比例加變址尋址形式均可將例如比例因子、變址的寄存器號(hào)和/或基址寄存器的寄存器號(hào)的信息包含在SIB字段240中。本領(lǐng)域的技術(shù)人員會(huì)知道,圖2闡明的格式200是說(shuō)明性的,并且指令碼中的其它的數(shù)據(jù)組織可與所公開實(shí)施例配合使用。例如,字段210、220、230、240、250、260無(wú)需以所示順序來(lái)組織,而是可重新組織成相對(duì)彼此的其它位置并且無(wú)需是鄰接的。同樣,本文所述的字段長(zhǎng)度不應(yīng)當(dāng)看作是限制。在備選實(shí)施例中,描述為字節(jié)的特定成員的字段可實(shí)現(xiàn)為更大或更小的字段。同樣,術(shù)語(yǔ)“字節(jié)”在本文用于指八位分組,在其它實(shí)施例中可實(shí)現(xiàn)為包括4位、16位和32位的任何其它大小的分組。當(dāng)在本文使用時(shí),“指令”(例如圖1所示的指令106之一)在圖2所示指令格式200的字段中包含特定的值。這種指令有時(shí)稱作“實(shí)際指令”。實(shí)際指令的位值有時(shí)在本文統(tǒng)稱為“指令碼”。在指令集118 (圖1)中指定用于實(shí)際指令的可接受字節(jié)值。指令格式200的每個(gè)字段的可接受字節(jié)值是例如指令長(zhǎng)度解碼器306 (圖3)和解碼單元116 (圖1)的解碼邏輯識(shí)別并對(duì)其進(jìn)行操作以生成解碼的指令碼的那些值。對(duì)于各指令碼,對(duì)應(yīng)解碼的指令碼唯一地表示將由執(zhí)行單元112 (圖1)響應(yīng)指令碼而執(zhí)行的操作。解碼的指令碼可包括一個(gè)或多個(gè)微操作。圖2所示的前綴字段210可包括多個(gè)前綴。在一個(gè)實(shí)施例中,前綴字段210包括總共四個(gè)前綴,其中各前綴為一個(gè)字節(jié)。在例如關(guān)于擴(kuò)展指令集的一些應(yīng)用中,前綴字段可用于擴(kuò)展操作碼指令空間。此外,在至少一個(gè)實(shí)施例中,可對(duì)前綴進(jìn)行編碼以提供與現(xiàn)有技術(shù)中同樣多或者更多的有關(guān)指令的信息,但是需要的存儲(chǔ)區(qū)比使用一些現(xiàn)有技術(shù)前綴編碼的指令少。操作碼字段220的內(nèi)容指定將由運(yùn)行該指令的處理器來(lái)執(zhí)行的一個(gè)或多個(gè)操作。對(duì)于至少一個(gè)實(shí)施例,操作碼字段可包括三個(gè)字節(jié)。在其它實(shí)施例中,操作碼可包括一個(gè)、兩個(gè)或三個(gè)以上字節(jié)。對(duì)于一些指令,操作碼字段220的二字節(jié)字段118c中的三字節(jié)逃逸操作碼值與操作碼字段220的第三字節(jié)225的內(nèi)容相結(jié)合,以指定操作。這個(gè)第三字節(jié)225在本文指的是指令特定操作碼。對(duì)于一些指令,操作碼字段220的二字節(jié)字段118c中的三字節(jié)逃逸操作碼值與前綴字段210的內(nèi)容以及操作碼字段220的指令特定操作碼字段225的內(nèi)容相結(jié)合,以指定操作。一般來(lái)說(shuō),前綴字段210和操作碼字段220的組合創(chuàng)建多個(gè)不同類型的指令。為了便于說(shuō)明,圖2僅示出七種類型的指令:常規(guī)一字節(jié)指令212、帶有作為限定符的前綴的常規(guī)指令214、常規(guī)逃逸指令216、第一擴(kuò)展指令類型222、第二擴(kuò)展指令類型224、第一新指令類型226和第二新指令類型228。如本領(lǐng)域的技術(shù)人員已知,能類似地定義其它類型的指令。在一種擴(kuò)展指令類型226中,包含REX字段以指明將與指令配合使用的寄存器。例如,REX所指明的一種指令類型啟用64位模式的附加寄存器。常規(guī)一字節(jié)指令212包括在操作碼字段220中帶有一字節(jié)指令特定操作碼的常規(guī)指令。帶有作為限定符的前綴的常規(guī)指令214包括使用前綴作為操作碼的限定符的常規(guī)指令。例如,字符串指令可使用REPEAT前綴值將該字符串指令重復(fù)計(jì)數(shù)寄存器中指定的次數(shù)或者直至滿足某個(gè)條件為止。指令214中使用的前綴值沒有向操作碼字段220中跟隨的操作碼值增加全新的含義。相反,前綴值只是用作以附加條件來(lái)限定操作碼的限定符。指令214中的前綴的使用對(duì)于不同指令類型可以是不同的。在一個(gè)實(shí)施例中,常規(guī)逃逸指令216是常規(guī)指令,它利用操作碼字段220的第一字段215中的逃逸操作碼向解碼器硬件指明,操作碼字段220的第二字段217中的指令特定操作碼用于定義該指令。例如,在一個(gè)實(shí)施例中,操作碼字段220的第一字節(jié)215中的浮點(diǎn)協(xié)處理器逃逸·操作碼值OxDS至OxDF指明,操作碼字段220的第二字節(jié)217中隨后的操作碼值應(yīng)當(dāng)解釋為協(xié)處理器指令,并且應(yīng)當(dāng)送往協(xié)處理器硬件以便運(yùn)行。第一擴(kuò)展指令類型222是特定類型的逃逸指令,它被定義成在操作碼字段220的第一字段221中包含預(yù)定義逃逸操作碼值OxOF。逃逸操作碼OxOF向解碼器硬件指明,操作碼字段220的第二字段223中的指令特定操作碼值用于定義指令。根據(jù)第二操作碼字節(jié)的值(以及在一些情況下的modR/M字段230的三位的值),第一擴(kuò)展指令類型222的指令可具有可變長(zhǎng)度。例如,擴(kuò)展指令類型222的兩個(gè)指令(打包左移邏輯(Packed Shift LeftLogical))可分別包括下列指令字段值:PSLLW(寄存器中的移位值):0F:F1:1b" llxxxyyy",其中xxx定義第一寄存器,而yyy定義第二寄存器PSLLW(用立即數(shù)的值移位):0F:71:lb" llllOxxx":立即數(shù)數(shù)據(jù)(8位),其中XXX定義寄存器在所述PSSLW指令的每個(gè)中,操作碼字段220的第一個(gè)字包括逃逸值OxOF。第一指令為三字節(jié)長(zhǎng),但第二指令為四字節(jié),因?yàn)樗ㄒ粋€(gè)字節(jié)的立即數(shù)數(shù)據(jù)。因此,對(duì)于擴(kuò)展指令類型222,解碼器硬件(例如圖3的指令長(zhǎng)度解碼器306)利用操作碼字段220的第一字段221中的逃逸操作碼值OxOF以及二字節(jié)操作碼字段220的第二字節(jié)223中的值和modR/M字段230的值,對(duì)指令的長(zhǎng)度進(jìn)行解碼。
指令前綴和逃逸操作碼的示例最初開發(fā)指令前綴是用于增強(qiáng)指令集。例如,開發(fā)!■印eat前綴以重復(fù)字符串指令。r印eat前綴碼為0xF3(REP,REPE)和0xF2 (REPNE)。這樣使用的前綴沒有定義隨后的操作碼的新含義。它只定義操作碼的附加操作條件。逃逸操作碼提供指令集的擴(kuò)展。例如,逃逸操作碼OxDS至OxDF用于指明第二操作碼字節(jié)217包含定義用于浮點(diǎn)單元的指令的值。解碼器將操作碼傳遞給浮點(diǎn)解碼器。對(duì)于至少一個(gè)指令集,3字節(jié)逃逸操作碼是具有值0x0F3y的二字節(jié)實(shí)體,其中y為0x8、0x9、OxA或OxB。3字節(jié)逃逸碼字段118c中的3字節(jié)逃逸操作碼值向解碼器指明,操作碼字段200的第三字節(jié)225中的指令特定操作碼值指明新指令集中的指令。新指令集可以是添加到架構(gòu)中的任何新指令集。與2字節(jié)逃逸操作碼對(duì)比,3字節(jié)逃逸操作碼字段118c中的值向解碼器指明用于確定指令長(zhǎng)度的方法。也就是說(shuō),3字節(jié)逃逸操作碼的各值與用于確定與特定3字節(jié)逃逸碼對(duì)應(yīng)的映射中的每一個(gè)指令的指令長(zhǎng)度的特定方法關(guān)聯(lián)。例如,3字節(jié)逃逸操作碼字段118c中的值0x0F38與相關(guān)操作碼映射關(guān)聯(lián)??墒褂糜糜诖_定0x0F38操作碼映射中的其它指令的長(zhǎng)度的相同的長(zhǎng)度確定方法來(lái)計(jì)算0x0F38操作碼映射中的各指令的長(zhǎng)度。類似地,可采用用于確定與其余3字節(jié)逃逸操作碼值(0x0F39、0x0F3A、0x0F3B)關(guān)聯(lián)的相應(yīng)操作碼映射中的其它指令的長(zhǎng)度的相同的長(zhǎng)度確定邏輯來(lái)計(jì)算相應(yīng)操作碼映射的各指令的長(zhǎng)度。因?yàn)樵u(píng)估輸入項(xiàng)的相同集合以確定操作碼映射中的各指令的長(zhǎng)度,用于確定新操作碼映射之一中的各指令的指令長(zhǎng)度的長(zhǎng)度確定邏輯得以簡(jiǎn)化。這種長(zhǎng)度確定邏輯在本文稱作“固定輸入”邏輯或方法。也就是說(shuō),經(jīng)評(píng)估以確定映射中的一個(gè)指令的長(zhǎng)度的各輸入項(xiàng)也與映射中的每一個(gè)其它指令的長(zhǎng)度的確定相關(guān)。待評(píng)估的項(xiàng)的固定集合可以逐個(gè)操作碼映射有所不同。雖然待評(píng)估的輸入集合可在操作碼映射之間有所不同,但是,經(jīng)評(píng)估以確定指令長(zhǎng)度的輸入對(duì)于給定3字節(jié)操作碼映射中的所有指令都是相同的。前綴和逃逸操作碼的組合提供處理器的操作碼表的顯著擴(kuò)大,從而允許附加的新指令集。除了逃逸操作碼所創(chuàng)建的指令集之外,這種組合還使用現(xiàn)有前綴碼來(lái)定義新的指令集。通過(guò)使用現(xiàn)有前綴碼,現(xiàn)有指令集的解碼電路可保持為相對(duì)不變以支持新指令118c (圖1)的解碼。部分或全部新指令的指令特定操作碼值(在操作碼字段220的第三字節(jié)225中)可以與現(xiàn)有指令的操作碼相同。通過(guò)使用具有前綴和逃逸操作碼的相同操作碼來(lái)定義新的指令集,解碼電路可以比為新指令集使用全新的操作碼集合具有更少的復(fù)雜性。在一個(gè)實(shí)施例中,前綴值用于定義新指令。此外,前綴仍然能用于在某種操作條件下限定操作碼或增強(qiáng)操作碼的傳統(tǒng)作用。下表I說(shuō)明使用前綴和三字節(jié)逃逸操作碼的指令集的一些現(xiàn)有技術(shù)示例。
表I
權(quán)利要求
1.一種裝置,包括: 解碼單元,能夠解碼現(xiàn)有指令集的指令以及擴(kuò)展指令集的指令,所述解碼單元包括第一解碼邏輯電路及與第一指令解碼邏輯電路耦合的第二解碼邏輯電路,所述第一解碼邏輯電路用來(lái)接收指令并用來(lái)檢測(cè)包括用作所述現(xiàn)有指令集的部分的一個(gè)或多個(gè)預(yù)定義前綴、逃逸碼或操作碼的多個(gè)字段的存在,并向第二解碼邏輯電路指明所述指令中的所述多個(gè)字段的每個(gè)的功能,其中所述第二指令解碼邏輯將使用由所述第一指令解碼邏輯指明的所述多個(gè)字段的每個(gè)的功能而將所述指令從現(xiàn)有指令集的第一格式轉(zhuǎn)換為所述擴(kuò)展指令集的第二格式中的所述指令的表示,其中所述第二格式包括具有操作碼映射字段、REX字段、第三源寄存器字段、向量大小字段和前綴字段的屬性字段,并且第二格式與所述現(xiàn)有指令集中未實(shí)現(xiàn)的指令后向兼容。
2.如權(quán)利要求1所述的裝置,其中,所述操作碼映射字段的長(zhǎng)度為一字節(jié),所述REX字段的長(zhǎng)度為一位,所述第三源寄存器字段的長(zhǎng)度為四位,所述向量大小字段的長(zhǎng)度為一位,以及所述前綴字段的長(zhǎng)度為兩位。
3.如權(quán)利要求1或權(quán)利要求2所述的裝置,其中所述操作碼映射字段包括值0xC5。
4.如權(quán)利要求1所述的裝置,其中所述操作碼映射字段的長(zhǎng)度為一字節(jié),所述REX字段的長(zhǎng)度為四位,所述第三源寄存器字段的長(zhǎng)度為四位,所述向量大小字段的長(zhǎng)度為一位,以及所述前綴字段的長(zhǎng)度為兩位。
5.如權(quán)利要求1或權(quán)利要求4所述的裝置,其中所述操作碼映射字段包括值0xC4。
6.如權(quán)利要求4或權(quán)利要求5所述的裝置,所述第二格式還包括長(zhǎng)度為五位的前綴字段。
7.如權(quán)利要求4 至6中任一項(xiàng)所述的裝置,其中,所述指令的表示的位長(zhǎng)度與所述指令的位長(zhǎng)度是同樣大小。
8.如權(quán)利要求1至6中任一項(xiàng)所述的裝置,其中,所述指令的表示的位長(zhǎng)度小于所述指令的位長(zhǎng)度。
9.如權(quán)利要求1至8中任一項(xiàng)所述的裝置,所述解碼單元進(jìn)一步包括操作碼解碼器,該操作碼解碼器能夠?qū)λ鰯U(kuò)展指令集的第二格式中的所述指令的轉(zhuǎn)換表示進(jìn)行解碼。
10.一種方法,包括: 在第一解碼邏輯電路中接收具有現(xiàn)有指令集的第一指令格式的指令; 在第一指令格式中檢測(cè)包括用作所述現(xiàn)有指令集的部分的一個(gè)或多個(gè)預(yù)定義前綴、逃逸碼或操作碼的第一多個(gè)字段的存在; 向第二解碼邏輯電路指明所述指令中的所述第一多個(gè)字段的每個(gè)的功能; 在所述第二解碼邏輯電路中使用所述第一多個(gè)字段的每個(gè)的所指明的功能而將所述第一指令格式轉(zhuǎn)換成擴(kuò)展指令集的第二指令格式中的所述指令的表示,所述第二指令格式具有包括屬性字段的第二多個(gè)字段,所述屬性字段具有操作碼映射字段、REX字段、第三源寄存器字段、向量大小字段和前綴字段,其中所述第二格式與所述現(xiàn)有指令集中未實(shí)現(xiàn)的指令后向兼容。
11.如權(quán)利要求10所述的方法,其中,所述操作碼映射字段的長(zhǎng)度為一字節(jié),所述REX字段的長(zhǎng)度為一位,所述第三源寄存器字段的長(zhǎng)度為四位,所述向量大小字段的長(zhǎng)度為一位,以及所述前綴字段的長(zhǎng)度為兩位。
12.如權(quán)利要求10或權(quán)利要求11所述的方法,其中所述操作碼映射字段包括值0xC5。
13.如權(quán)利要求10所述的方法,其中所述操作碼映射字段的長(zhǎng)度為一字節(jié),所述REX字段的長(zhǎng)度為四位,所述第三源寄存器字段的長(zhǎng)度為四位,所述向量大小字段的長(zhǎng)度為一位,以及所述前綴字段的長(zhǎng)度為兩位。
14.如權(quán)利要求10或權(quán)利要求13所述的方法,其中所述操作碼映射字段包括值0xC4。
15.如權(quán)利要求13或權(quán)利要求14所述的方法,所述第二格式還包括長(zhǎng)度為五位的前綴字段。
16.如權(quán)利要求13至15中任一項(xiàng)所述的方法,其中,所述指令的表示的位長(zhǎng)度與所述指令的位長(zhǎng)度是同樣大小。
17.如權(quán)利要求10至15中任一項(xiàng)所述的方法,其中所述指令的表示的位長(zhǎng)度小于所述指令的位長(zhǎng)度。
18.如權(quán)利要求10至17中任一項(xiàng)所述的方法,所述解碼單元進(jìn)一步包括操作碼解碼器,該操作碼解碼 器能夠?qū)λ鰯U(kuò)展指令集的第二格式中的所述指令的轉(zhuǎn)換表示進(jìn)行解碼。
全文摘要
本發(fā)明的名稱是“壓縮指令格式”。一種用于對(duì)可變長(zhǎng)度指令集中的指令進(jìn)行解碼的技術(shù)。在一個(gè)實(shí)施例中,描述了指令編碼,其中支持傳統(tǒng)、當(dāng)前和將來(lái)的指令集擴(kuò)展,并且提供了增加的功能性,而無(wú)需擴(kuò)大代碼大小,并且在一些情況下減小代碼大小。
文檔編號(hào)G06F9/30GK103150140SQ201210328169
公開日2013年6月12日 申請(qǐng)日期2008年12月26日 優(yōu)先權(quán)日2007年12月27日
發(fā)明者R.瓦倫丁, D.奧倫斯蒂恩, B.L.托爾 申請(qǐng)人:英特爾公司