專(zhuān)利名稱:檢測(cè)單字節(jié)前綴和分支的長(zhǎng)度解碼的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的涉及計(jì)算機(jī)系統(tǒng)領(lǐng)域,更具體來(lái)講,涉及一種用于長(zhǎng)度解碼以檢測(cè)單字節(jié)前綴和分支型宏指令的系統(tǒng)與方法。
背景技術(shù):
處理器(包括,但并不局限于,通用與特殊用途微處理器,微控制器和數(shù)字信號(hào)處理器(DSP))通常包括執(zhí)行一系列稱為微指令的指令的執(zhí)行單元,這些指令來(lái)自于一個(gè)計(jì)算機(jī)程序。許多計(jì)算機(jī)程序采用計(jì)算機(jī)中央處理器(CPU)無(wú)法直接運(yùn)行的高級(jí)語(yǔ)言來(lái)編寫(xiě),因此,此類(lèi)程序的指令必需被解碼成可適于CPU執(zhí)行的指令格式。例如,一個(gè)可由諸如C,C++,或Java的高級(jí)語(yǔ)言編寫(xiě)的程序被編譯成相應(yīng)的宏指令序列,隨后解碼成為用于最終執(zhí)行的微指令。也可以直接用一系列宏指令(即,機(jī)器代碼)來(lái)編寫(xiě)程序。
宏指令通常以連續(xù)的數(shù)據(jù)塊形式存儲(chǔ)于諸如主存儲(chǔ)器(因此,RAM)的內(nèi)存資源中或高速緩沖存儲(chǔ)器中,用于檢索并提供給處理器內(nèi)的解碼單元,解碼成微指令。為了使解碼器單元能夠成功地解碼宏指令,應(yīng)理解必需要識(shí)別構(gòu)筑指令流的被檢索的數(shù)據(jù)塊中的指令邊界,它指明了一個(gè)宏指令的結(jié)束和下一個(gè)宏指令起始的位置。
在精簡(jiǎn)指令集計(jì)算機(jī)(RISC)處理器體系結(jié)構(gòu)和指令集中,宏指令通常具有固定的長(zhǎng)度,在這種情況下,當(dāng)初始邊界被識(shí)別之后,因?yàn)楦髦噶罹哂幸阎拈L(zhǎng)度,指令之間的邊界可相對(duì)容易地確定。對(duì)于一個(gè)可變長(zhǎng)度的指令集,當(dāng)初始邊界被識(shí)別之后,還必需對(duì)每個(gè)宏指令的長(zhǎng)度進(jìn)行判別以識(shí)別隨后的指令邊界。對(duì)于為了支持遺留程序,支持多重?cái)?shù)據(jù)和尋址大小的可變長(zhǎng)度指令集使識(shí)別指令邊界的任務(wù)更加復(fù)雜。
在一種類(lèi)型的精簡(jiǎn)指令集處理器中,指令可以具有一個(gè)或多個(gè)在指令前面的修改指令的操作的前綴字節(jié)。在此種指令集中,單字節(jié)前綴最為常見(jiàn),但是,解碼此種指令會(huì)增加解碼過(guò)程的附加周期。另外,當(dāng)存在分支指令時(shí),指令流可能需要被重定向至正確的路徑。在這方面,分支指令常導(dǎo)致周期延遲。
發(fā)明概述說(shuō)明一種用于對(duì)單字節(jié)指令前綴和分支指令指示符進(jìn)行預(yù)解碼的系統(tǒng)和方法。靜態(tài)線路檢測(cè)器(static line detect)生成多個(gè)指令指示符。此外,前綴和分支解碼單元將該多個(gè)指令指示符中的至少兩個(gè)相組合,并且預(yù)解碼單元對(duì)組合的指令指示符進(jìn)行解碼。
附圖簡(jiǎn)述通過(guò)下面的詳細(xì)介紹,本領(lǐng)域技術(shù)人員將了解此發(fā)明的目的,特征和優(yōu)點(diǎn),其中
圖1為由可按照本發(fā)明進(jìn)行解碼的字節(jié)組成的宏指令的一個(gè)實(shí)施例的方框圖;圖2為示出本發(fā)明可實(shí)現(xiàn)在其中的示范性微處理器體系結(jié)構(gòu)的方框圖;圖3為示出有關(guān)按照本發(fā)明的示范性實(shí)施例的,可將其組合在圖2所示微處理器中的有關(guān)取指令引擎與指令翻譯引擎的體系結(jié)構(gòu)細(xì)節(jié)的方框圖;圖4是一個(gè)8字節(jié)宏指令塊與由圖3的IPD所生成的相關(guān)字節(jié)標(biāo)記矢量的示范性方框圖;圖5是圖3的指令預(yù)解碼器(IPD)體系結(jié)構(gòu)的一個(gè)實(shí)施例的方框圖;圖6是圖5的前綴和分支解碼單元的一個(gè)實(shí)施例的方框圖;圖7是預(yù)解碼單元的一個(gè)實(shí)施例的方框圖,該預(yù)解碼單元用于解碼由圖5的前綴和分支單元產(chǎn)生的不同信號(hào);圖8為預(yù)解碼單字節(jié)指令前綴和指令分支指示符的一個(gè)實(shí)施例的流程圖。
發(fā)明詳述說(shuō)明一種對(duì)單字節(jié)指令前綴和指令分支指示符進(jìn)行預(yù)解碼的系統(tǒng)和方法。靜態(tài)線路檢測(cè)器生成多個(gè)指令指示符。此外,前綴和分支解碼單元將該多個(gè)指令指示符中的至少兩個(gè)相組合,并且預(yù)解碼單元對(duì)組合的指令指示符進(jìn)行解碼。
在下面有關(guān)本發(fā)明的詳細(xì)描述中,提出大量的具體細(xì)節(jié)以提供對(duì)本發(fā)明的深入了解。但是顯而易見(jiàn)的是,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),無(wú)需這些具體細(xì)節(jié)也可實(shí)踐此發(fā)明。在某些例子中,眾所周知的結(jié)構(gòu)與裝置以方框圖的形式而不是詳細(xì)地示出,以避免與本發(fā)明進(jìn)行混淆。
圖1是示范性的宏指令100的圖示性表示,它由可根據(jù)本發(fā)明的理論進(jìn)行解碼的字節(jié)組成。具體的說(shuō),圖1說(shuō)明了一個(gè)形成部分英特爾體系結(jié)構(gòu)(IA)指令集的示范性宏指令的格式,此英特爾體系結(jié)構(gòu)(IA)指令集由位于California,Santa Clara的英特爾公司開(kāi)發(fā)。對(duì)于本說(shuō)明書(shū),術(shù)語(yǔ)“宏指令”與“指令”均用來(lái)指代通常理解的宏指令與非宏指令。
正如英特爾體系結(jié)構(gòu)指令集中所定義的,示范性的宏指令100可包含一到四個(gè)指令前綴102(每一個(gè)指令前綴102的長(zhǎng)度為一個(gè)字節(jié)),一個(gè)操作碼104(長(zhǎng)度為一個(gè)或兩個(gè)字節(jié)),一個(gè)ModR/M操作數(shù)指示符106(長(zhǎng)度為0-1字節(jié)),一個(gè)108的SIB(長(zhǎng)度為0-1字節(jié)),地址位移110(長(zhǎng)度為0,1,2或4個(gè)字節(jié)),以及一個(gè)中間數(shù)據(jù)常量112(長(zhǎng)度為0,1,2或4個(gè)字節(jié))。操作碼104的長(zhǎng)度可或?yàn)橐换驗(yàn)閮蓚€(gè)字節(jié)。對(duì)于二字節(jié)操作碼來(lái)說(shuō),首字節(jié)為OF。
ModR/M,如果存在,長(zhǎng)度為一個(gè)字節(jié)并包含mod域114,reg/opcode域116與R/M域118。mod域114與R/M域118組合形成32個(gè)可能數(shù)值8寄存器和24尋址模式。reg/opcode域116規(guī)定或一個(gè)寄存器編號(hào)或另外三位操作碼信息。原操作碼104的首字節(jié)中規(guī)定了reg/opcode域116的使用。R/M域118可將一個(gè)寄存器規(guī)定為操作數(shù),或可與mod域114組合,編碼尋址模式。ModR/M字節(jié)106的某一編碼需要一個(gè)第二尋址字節(jié),比例變址基址(SIB)字節(jié)108,以完全規(guī)定指令的尋址模式。32位尋址的基址加變址與比例加變址形式需要SIB字節(jié)108。SIB字節(jié)108包含一個(gè)比例域120,它規(guī)定了比例因子,變址域122,它規(guī)定了變址寄存器的寄存器數(shù)目,和規(guī)定了基址寄存器的寄存器數(shù)目的基址域124。
諸如Pentium Pro或Pentium II處理器之類(lèi)的現(xiàn)有處理器可以在或16或32位模式下運(yùn)行。每個(gè)宏指令可以下列形式進(jìn)行解碼并執(zhí)行1.固定的8位數(shù)據(jù)/地址指令;2.固定的16位數(shù)據(jù)/地址指令;或3.可變的16位或32位數(shù)據(jù)/地址指令,由IA處理器內(nèi)的模式操作位(通常稱為D位)確定。
圖2為示出本發(fā)明可實(shí)現(xiàn)在其中的示范性微處理器30的方框圖。微處理器30為流水線式結(jié)構(gòu),并包含有序前端電路32與亂序后端電路34。前端電路32包含取指令引擎36,它從與微處理器30相關(guān)的主存儲(chǔ)器(未示出),或從高速緩存宏指令和數(shù)據(jù)的內(nèi)部統(tǒng)一高速緩沖存儲(chǔ)器48,通過(guò)總線接口單元37獲取可按照?qǐng)D1所示格式的宏指令。在可替換的實(shí)施例中,高速緩沖存儲(chǔ)器48可位于指令翻譯引擎(instruction translate engine)38的下游,并使高速緩沖存儲(chǔ)器解碼由宏指令推出來(lái)的微指令。由取指令引擎36獲取的宏指令隨后傳播給將宏指令翻譯成相應(yīng)的微指令的指令翻譯引擎38。微指令由指令翻譯引擎38發(fā)布給形成后端電路34的一部分的,并包含微編碼序列發(fā)生器(MS)41和微編碼控制只讀存儲(chǔ)器(ROM)43的控制單元40(也稱為微編碼單元)??刂茊卧?0翻譯發(fā)送給它的微指令,并處理異常事件,斷點(diǎn)和中斷。微指令被從控制單元40分派給包含地址生成單元42,整數(shù)執(zhí)行單元44(也稱為運(yùn)算/邏輯單元(ALU))和/或浮點(diǎn)執(zhí)行單元46的流水線。
微處理器30還包括將線性地址翻譯成物理地址的頁(yè)面單元50,并包括至少一個(gè)為此目的的翻譯后援緩沖器(TLB)。
圖3是示出有關(guān)圖2所示示范性微處理器的取指令引擎36與指令翻譯引擎38的進(jìn)一步細(xì)節(jié)的方框圖。圖中所示取指令引擎36包含一個(gè)分支預(yù)測(cè)單元(BPU)52,該單元檢測(cè)從主存儲(chǔ)器47或統(tǒng)一高速緩沖存儲(chǔ)器48接收的宏指令,并根據(jù)例如BPU52所維護(hù)的分支歷史,為在指令流中遇到的分支指令提供推測(cè)性分支預(yù)測(cè)。流緩沖器54先對(duì)宏指令進(jìn)行緩沖,再將其分派給指令翻譯引擎38中的指令預(yù)解碼器(IPD)56。
IPD 56負(fù)責(zé)將指令流從基于字節(jié)的信息轉(zhuǎn)變?yōu)榛谥噶畹男畔?。具體地說(shuō),IPD 56生成一個(gè)字節(jié)標(biāo)記(或邊界標(biāo)記)矢量,該矢量對(duì)包含指令的第一(起始)或最后(結(jié)束)字節(jié)的指令流的字節(jié)進(jìn)行標(biāo)記。在取指令引擎36或從主存儲(chǔ)器47或從統(tǒng)一高速緩沖存儲(chǔ)器48獲取連續(xù)的指令數(shù)據(jù)塊(例如,8,16或32字節(jié))時(shí)需要字節(jié)標(biāo)記矢量,這些字節(jié)隨后以并行的方式通過(guò)微處理器30傳播。微處理器30需要某種機(jī)制來(lái)識(shí)別這些連續(xù)指令數(shù)據(jù)塊中的指令邊界,而字節(jié)標(biāo)記矢量提供這一機(jī)制。圖4所示為由IPD 56生成的一個(gè)示范性的8字節(jié)宏指令塊62,和相關(guān)的字節(jié)標(biāo)記矢量64。字節(jié)標(biāo)記矢量64包含一個(gè)第一(或起始)字節(jié)標(biāo)記矢量66,它包含對(duì)應(yīng)于宏指令塊62中指令首字節(jié)的設(shè)置位,以及一個(gè)最后(或結(jié)束)字節(jié)標(biāo)記矢量68,它包含對(duì)應(yīng)于宏指令塊62中指令尾字節(jié)的設(shè)置位。
宏指令數(shù)據(jù)塊(或大塊)62以及相伴的字節(jié)標(biāo)記矢量64由IPD 56傳播給指令操縱(IS)(Instruction Steering)單元58。IS單元58轉(zhuǎn)向并校準(zhǔn)使用字節(jié)標(biāo)記矢量的宏指令數(shù)據(jù)。被轉(zhuǎn)向及被校準(zhǔn)的宏指令提供給指令長(zhǎng)度解碼器(ILD)310。ILD 310傳播單字節(jié)前綴和分支碼信號(hào),并確定宏指令的長(zhǎng)度。單字節(jié)前綴和分支碼信號(hào)的傳播在長(zhǎng)度解碼之前進(jìn)行。解碼后的宏指令被提供給指令翻譯器(IT)單元60,用于翻譯成相應(yīng)的微指令。生成的微指令隨后由IT單元60發(fā)給后端電路34以供執(zhí)行。
圖4為8字節(jié)宏指令塊62與由IPD 56生成的相關(guān)字節(jié)標(biāo)記矢量64的示范性方框圖。字節(jié)標(biāo)記矢量64包括一個(gè)第一(或起始)字節(jié)標(biāo)記矢量66,它包含對(duì)應(yīng)于宏指令塊中指令首字節(jié)的設(shè)置位,以及一個(gè)最后(或結(jié)束)字節(jié)標(biāo)記矢量68,它包含對(duì)應(yīng)于宏指令塊62中指令尾字節(jié)的設(shè)置位。
宏指令數(shù)據(jù)塊(或大塊)62與相伴的字節(jié)標(biāo)記矢量64為從IPD 56至指令操縱(IS)單元58的傳播形式。IS單元58轉(zhuǎn)向并校準(zhǔn)采用字節(jié)標(biāo)記矢量的微指令數(shù)據(jù),以便宏指令可適當(dāng)?shù)靥峁┙o指令翻譯器(IT)單元60,翻譯成相對(duì)應(yīng)的微指令。生成的宏指令隨后由IT單元60發(fā)給后端電路34以供執(zhí)行。
圖5為指令預(yù)解碼器(IPD)56體系結(jié)構(gòu)的一個(gè)實(shí)施例的方框圖。指令信息被接收到為指令生成所有標(biāo)記位信息的靜態(tài)線路檢測(cè)器(SLD)502中。指令信息被傳輸?shù)接糜诓僮鞔a標(biāo)記的進(jìn)位504并被送至校準(zhǔn)單元550內(nèi)的緩沖器506。指令信息的八字節(jié)(對(duì)本說(shuō)明書(shū),為方便起見(jiàn)可稱為“8字節(jié)塊”)被接收到緩沖器506中。八字節(jié)塊通過(guò)旋轉(zhuǎn)器508與移位器510提供給雙級(jí)校準(zhǔn)碼裝置(two stage aligncode mechanism)。校準(zhǔn)后的數(shù)據(jù)被傳送給解碼器560用于對(duì)指令進(jìn)行解碼。校準(zhǔn)單元550從存儲(chǔ)器或高速緩沖存儲(chǔ)器中獲取一個(gè)或多個(gè)指令并確定下一個(gè)指令的起始與結(jié)束的位置。指令數(shù)據(jù)由高速緩沖存儲(chǔ)器中取出并存儲(chǔ)于緩沖器506中。為了對(duì)數(shù)據(jù)流中的下一指令進(jìn)行校準(zhǔn),ILD 56對(duì)當(dāng)前指令的長(zhǎng)度進(jìn)行確定。指令信息被提供給解碼單元560并提供到翻譯PLA 516,進(jìn)入點(diǎn)PLA518,和補(bǔ)丁PLA 520中。所有三個(gè)PLA(516,518和520)均需要標(biāo)記位以正確地解碼這些指令。在一種實(shí)施例中,這些PLA(516,518,520)使用地址大小,數(shù)據(jù)大小,重復(fù)前綴,鎖定前綴,零F雙字節(jié)操作碼,和分支標(biāo)記位。在一種實(shí)施例中,地址大小,操作數(shù)大小和重復(fù)前綴的出現(xiàn)比單前綴格式更頻繁,并得到早期的解碼機(jī)制的支持。分支地址計(jì)算器(BAC)514盡早需要分支是否存在的指示,以便當(dāng)分支存在時(shí),快速地將數(shù)據(jù)流的流動(dòng)重定向至正確的路徑,并靜態(tài)地預(yù)測(cè)分支是否被采用。在一種實(shí)施例中,有兩種類(lèi)型的分支指示符,單字節(jié)分支與雙字節(jié)分支。長(zhǎng)度解碼邏輯單元檢測(cè)單字節(jié)分支事件并檢查雙字節(jié)分支事件(ERGO,F(xiàn)F/2,F(xiàn)F/3,OF/ATTN等)。
前綴和分支解碼器512多路復(fù)用前綴和分支解碼信息,并將每個(gè)字節(jié)一位(bit-per-byte)傳送給解碼PLA(516,518,520)。在長(zhǎng)度解碼階段期間,前綴和分支解碼信息得到多路復(fù)用。PLA(516,518,520)為解碼邏輯單元提取前綴信息,并從與操作碼字節(jié)相同的位篩選出分支存在指示。提取工作在解碼階段期間進(jìn)行。解碼邏輯單元接收關(guān)于是否存在前綴的位/字節(jié)指示。數(shù)據(jù)大小采用位并篩選出前綴信息和單字節(jié)分支指示。當(dāng)提取FF與OF檢測(cè)并令其覆蓋所有的雙字節(jié)事件后,雙字節(jié)分支事件即被檢測(cè)。OF檢測(cè)還指示存在的是單字節(jié)操作碼還是雙字節(jié)操作碼。在一種實(shí)施例中,無(wú)需額外的周期損失,解碼邏輯單元即可處理所有的單字節(jié)前綴(除不執(zhí)行臨界鎖定前綴之外)指令。另外,在此實(shí)施例中,解碼邏輯單元在解碼時(shí)盡早生成單字節(jié)和雙字節(jié)分支指示,并將分支指示傳輸給分支重定向硬件,并在解碼階段早期生成單字節(jié)操作碼或雙字節(jié)操作碼指示。
圖6為前綴和分支解碼單元512一個(gè)實(shí)施例的方框圖。在單元512中,單字節(jié)分支檢測(cè)單元602檢測(cè)在指令操作碼中是否存在單字節(jié)分支。在一個(gè)實(shí)施例中,單字節(jié)分支由操作碼首字節(jié)中的[?]指示。單元512還包含操作碼/前綴解碼單元604以確定指令塊的數(shù)據(jù)大小(Dsize)612,地址大小(Asize)610,和重復(fù)前綴614。在一個(gè)實(shí)施例中,地址大小610,數(shù)據(jù)大小612,和重復(fù)前綴614為最為常見(jiàn)的單字節(jié)前綴。單元512還包含雙字節(jié)分支檢測(cè)單元606。雙字節(jié)分支檢測(cè)單元606確定指令是否為雙字節(jié)分支(操作碼首字節(jié)中的FF或OF),并生成OF雙字節(jié)分支信號(hào)618和FF雙字節(jié)分支信號(hào)616。在一個(gè)實(shí)施例中,單元512將單字節(jié)分支檢測(cè)信號(hào)603與Asize信號(hào)610相結(jié)合(OR)以產(chǎn)生Asize-OR-Branch信號(hào)620;將Dsize信號(hào)612與FF雙字節(jié)分支信號(hào)616相結(jié)合(OR)產(chǎn)生Dsize-OR-FF信號(hào)622;并將重復(fù)信號(hào)614與OF雙字節(jié)分支檢測(cè)信號(hào)618相結(jié)合(OR)生成Repeat-OR-OF信號(hào)624。
圖7為用于解碼由單元512產(chǎn)生的各種不同信號(hào)的預(yù)解碼單元700的一個(gè)實(shí)施例的方框圖。在一個(gè)實(shí)施例中,解碼發(fā)生在PLA(516,518,520)的進(jìn)入點(diǎn)。Asize-OR-Branch信號(hào)620的高位字節(jié)與操作碼/前綴信號(hào)704和代碼段描述符(CSD)702多路復(fù)用產(chǎn)生地址大小706。另外,Asize-OR-Branch信號(hào)620的低位字節(jié)和操作碼標(biāo)記低位字節(jié)716“與”運(yùn)算。這一信號(hào)與Asize-OR-Branch信號(hào)620高位字節(jié),操作碼前綴信號(hào)714,和分支多重前綴信號(hào)710多路復(fù)用產(chǎn)生單字節(jié)分支信號(hào)712。地址大小706和單字節(jié)分支信號(hào)712在解碼單元中以并行方式生成。因此,在解碼過(guò)程早期階段,解碼單元即接收是存在前綴還是分支被指示的通知。CSD702表示機(jī)器(16位或32位模式)的工作模式。在一個(gè)實(shí)施例中,地址大小前綴與CSD“或”運(yùn)算以提供指令的實(shí)際地址大小。在一個(gè)實(shí)施例中,如果地址大小前綴為0,CSD 0表示16位,而CSD1表示32位。在一個(gè)實(shí)施例中,數(shù)據(jù)大小前綴32位模式表示16位操作數(shù)。
Dsize或FF信號(hào)622和重復(fù)或OF信號(hào)624可以按照與上面所描述相似的方式多路復(fù)用以生成相應(yīng)的類(lèi)似信號(hào)。前綴和分支解碼單元512采用單一標(biāo)記位傳送多路信息。在一個(gè)實(shí)施例中,這降低指令隊(duì)列中所生成的信息量。
圖8為預(yù)解碼單字節(jié)指令前綴與指令分支指示符的一個(gè)實(shí)施例的流程圖。在程序方塊圖初始,多個(gè)指令指示符被創(chuàng)建。在一個(gè)實(shí)施例中,指令指示符由靜態(tài)線路檢測(cè)器502創(chuàng)建。這些指示符包括,例如,地址大小指示符,單字節(jié)分支指示符,數(shù)據(jù)大小指示符,重復(fù)指示符,F(xiàn)F雙字節(jié)分支指示符,和OF雙字節(jié)分支指示符。
在程序方框圖810,一組指令指示符相組合形成新的指示符。在一個(gè)實(shí)施例中,指示符中的至少兩個(gè)結(jié)合成一個(gè)單指示符。在一個(gè)實(shí)施例中,通過(guò)邏輯或,單字節(jié)分支指示符與地址大小(Asize)指示符相結(jié)合生成Asize-OR-Branch指示符;數(shù)據(jù)大小(Dsize)指示符與FF雙字節(jié)分支指示符通過(guò)邏輯或相結(jié)合產(chǎn)生Dsize-OR-FF指示符;重復(fù)指示符與OF雙字節(jié)分支指示符通過(guò)邏輯或相結(jié)合以產(chǎn)生Repeat-OR-OF指示符。
在程序方框圖815,組合的指示符被解碼以檢測(cè)單字節(jié)指令前綴與指令分支指示符。在一個(gè)實(shí)施例中,指示符被多路復(fù)用以在指令解碼前分離出組合的指示符。組合的指示符與操作碼/前綴指示符和代碼段描述符(CSD)指示符相多路復(fù)用產(chǎn)生地址大小,數(shù)據(jù)大小或重復(fù)指示符。另外并與第一多路復(fù)用相并行,組合的指示符與操作碼/前綴指示符和用于多重前綴的分支的指示符相多路復(fù)用產(chǎn)生單字節(jié)分支指示符,F(xiàn)F雙字節(jié)分支指示符,或OF雙字節(jié)分支指示符。
已對(duì)在用于長(zhǎng)度解碼以檢測(cè)宏指令的單字節(jié)前綴和分支的系統(tǒng)和方法的實(shí)現(xiàn)方式中的幾種變形進(jìn)行了說(shuō)明。這里的具體裝置和方法僅對(duì)本發(fā)明的基本原理進(jìn)行了描述。在不偏離本發(fā)明基本精神與范圍的情況下,本領(lǐng)域技術(shù)人員可對(duì)形式和細(xì)節(jié)進(jìn)行眾多改進(jìn)。
雖然本發(fā)明已相對(duì)于特定實(shí)施例得以示出,但不應(yīng)認(rèn)為本發(fā)明受限于此。相反,本發(fā)明僅受到所附權(quán)利要求的限制。
權(quán)利要求
1.一種預(yù)解碼單字節(jié)指令前綴和分支指令指示符的方法,包含生成多個(gè)指令指示符;組合該多個(gè)指令指示符中的至少兩個(gè);并解碼組合的指令指示符。
2.權(quán)利要求1的方法,其中,組合還包括邏輯上將單字節(jié)分支指示符與地址大小指示符相結(jié)合生成地址大小或分支指示符。
3.權(quán)利要求2的方法,其中,單字節(jié)分支指示符和地址大小指示符通過(guò)邏輯或組合。
4.權(quán)利要求2的方法,其中,該解碼還包含a)將地址大小或分支指示符與操作碼/前綴指示符和代碼段描述符指示符多路復(fù)用,產(chǎn)生地址大?。灰约癰)將該地址大小或分支指示符與操作碼/前綴指示符多路復(fù)用,產(chǎn)生單字節(jié)分支指示符。
5.權(quán)利要求4的方法,其中,a和b以并行的方式執(zhí)行。
6.權(quán)利要求1的方法,其中,組合還包括邏輯上將第一雙字節(jié)分支指示符與數(shù)據(jù)大小指示符相結(jié)合產(chǎn)生數(shù)據(jù)大小或第一雙字節(jié)分支指示符。
7.權(quán)利要求6的方法,其中,該第一雙字節(jié)分支指示符與該數(shù)據(jù)大小指示符通過(guò)邏輯或組合。
8.權(quán)利要求6的方法,其中,該解碼還包含a)將數(shù)據(jù)大小或第一個(gè)分支指示符與操作碼/前綴指示符和代碼段描述符指示符多路復(fù)用產(chǎn)生數(shù)據(jù)大?。灰约癰)將該數(shù)據(jù)大小或第二分支指示符與操作碼/前綴指示符多路復(fù)用產(chǎn)生第一雙字節(jié)分支指示符。
9.權(quán)利要求8的方法,其中,a和b以并行的方式執(zhí)行。
10.權(quán)利要求1的方法,其中,組合還包括邏輯上將第二雙字節(jié)分支指示符與重復(fù)指示符相結(jié)合產(chǎn)生重復(fù)或第二雙字節(jié)分支指示符。
11.權(quán)利要求10的方法,其中,該第二雙字節(jié)分支指示符與重復(fù)指示符通過(guò)邏輯或組合。
12.權(quán)利要求10的方法,其中,該解碼還包含a)將該第二雙字節(jié)分支指示符與操作碼/前綴指示符和代碼段描述符指示符多路復(fù)用產(chǎn)生重復(fù)指示符;以及b)將該第二雙字節(jié)分支指示符與操作碼/前綴指示符多路復(fù)用產(chǎn)生第二雙字節(jié)分支指示符。
13.權(quán)利要求12的方法,其中,a和b以并行的方式執(zhí)行。
14.權(quán)利要求1的方法,其中,解碼還包含將組合的指示符與操作碼/前綴指示符和代碼段描述符指示符多路復(fù)用。
15.一種用于預(yù)解碼單字節(jié)指令前綴和分支指令指示符的系統(tǒng),還包含用于生成多個(gè)指令指示符的裝置;用于組合該多個(gè)指令指示符中的至少兩個(gè)的裝置;以及用于解碼組合的指令指示符的裝置。
16.用于預(yù)解碼單字節(jié)指令前綴和分支指令指示符的邏輯電路,包含靜態(tài)線路檢測(cè)器,用于生成多個(gè)指令指示符;前綴和分支解碼單元,用于組合該多個(gè)指令指示符中的至少兩個(gè);以及預(yù)解碼單元,用于解碼組合的指令指示符以檢測(cè)單字節(jié)指令前綴和指令分支指示符。
17.權(quán)利要求16的邏輯電路,其中,該前綴和分支解碼單元邏輯上將單字節(jié)分支指示符與地址大小指示符相組合以產(chǎn)生地址大小或分支指示符。
18.權(quán)利要求17的邏輯電路,其中,該單字節(jié)分支指示符和該地址大小指示符通過(guò)邏輯或組合。
19.權(quán)利要求17的邏輯電路,其中,預(yù)解碼單元還a)將地址大小或分支指示符與操作碼/前綴指示符和解碼段描述符指示符多路復(fù)用,產(chǎn)生地址大??;以及b)將地址大小或分支指示符與操作碼/前綴指示符多路復(fù)用,產(chǎn)生單字節(jié)分支指示符。
20.權(quán)利要求19的邏輯電路,其中,a和b以并行方式執(zhí)行。
全文摘要
說(shuō)明一種對(duì)單字節(jié)指令前綴和分支指令指示符進(jìn)行預(yù)解碼的系統(tǒng)和方法。靜態(tài)線路檢測(cè)器生成多個(gè)指令指示符。此外,前綴和分支解碼單元將該多個(gè)指令指示符中的至少兩個(gè)相組合,并且預(yù)解碼單元對(duì)組合的指令指示符進(jìn)行解碼。
文檔編號(hào)G06F9/30GK1434937SQ00819062
公開(kāi)日2003年8月6日 申請(qǐng)日期2000年10月19日 優(yōu)先權(quán)日1999年12月17日
發(fā)明者F·R·格魯納, B·扎維里 申請(qǐng)人:英特爾公司