專利名稱:選擇性地控制條件碼回寫的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微電子的領(lǐng)域,尤指一種能將選擇性的條件碼回寫控制特征納入一既有的微處理器指令集結(jié)構(gòu)的技術(shù)。
隨著過去三十年來使用上的爆炸性成長,在技術(shù)上也歷經(jīng)一相對應(yīng)的提升,其特征在于對下列項目有著日益升高的要求更快的速度、更強的尋址能力、更快的內(nèi)存存取、更大的操作數(shù)、更多種運算(如浮點運算、單一指令多重數(shù)據(jù)(SIMD)、條件移動等)以及附加的特殊運算(如多媒體運算)。如此造就了該領(lǐng)域中驚人的技術(shù)進展,且都已應(yīng)用于微處理器的設(shè)計,像擴充管線化(extensive pipelining)、超規(guī)模結(jié)構(gòu)(super-scalar architecture)、快取結(jié)構(gòu)、亂序處理(out-of-order processing)、爆發(fā)式存取(burstaccess)、分支預(yù)測(branch predication)以及假想執(zhí)行(speculativeexecution)??傊绕?0年前剛出現(xiàn)時,現(xiàn)在的微處理器呈現(xiàn)出驚人的復(fù)雜度,且具備了強大的能力。
但與許多其它產(chǎn)品不同的是,有另一非常重要的因素已限制了、并持續(xù)限制著微處理器結(jié)構(gòu)的演進?,F(xiàn)今微處理器會如此復(fù)雜,一大部分得歸因于這項因素,即舊有軟件的兼容性。在市場考慮下,所多制造商選擇將新的結(jié)構(gòu)特征納入最新的微處理器設(shè)計中,但同時在這些最新的產(chǎn)品中,又保留了所有為確保兼容于較舊的,即所謂“舊有”(legacy)應(yīng)用程序所必需的能力。
這種舊有軟件兼容性的負擔,沒有其它地方會比在x86-兼容的微處理器的發(fā)展史中更加顯而易見。大家都知道,現(xiàn)在的32/16位的虛擬模式(virtual-mode)x86微處理器,仍可執(zhí)行80年代所編寫的8位真實模式(real-mode)的應(yīng)用程序。而熟悉此領(lǐng)域技術(shù)人員也承認,有不少相關(guān)的結(jié)構(gòu)“包袱”堆在x86結(jié)構(gòu)中,只是為了支持與舊有應(yīng)用程序及運作模式的兼容性。雖然在過去,研發(fā)者可將新開發(fā)的結(jié)構(gòu)特征加入既有的指令集結(jié)構(gòu),但如今使用這些特征所憑借的工具,即可編程的指令,卻變得相當稀少。更簡單地說,在某些重要的指令集中,已沒有“多余”的指令,讓設(shè)計者可借用以將更新的特征納入一既有的結(jié)構(gòu)中。
例如,在x86指令集結(jié)構(gòu)中,已經(jīng)沒有任何一未定義的一字節(jié)大小的操作碼狀態(tài)是尚未被使用的。在主要的字節(jié)大小的x86操作碼圖中,全部256個操作碼狀態(tài)都已被既有的指令占用了。結(jié)果是,x86微處理器的設(shè)計者現(xiàn)在必須在提供新特征與放棄舊有軟件兼容性兩者間作抉擇。若要提供新的可編程特征,則必須分派操作碼狀態(tài)給這些特征。若既有的指令集結(jié)構(gòu)沒有多余的操作碼狀態(tài),則某些既存的操作碼狀態(tài)必須重新定義,以提供給新的特征。因此,為了提供新的特征,就得犧牲舊有軟件兼容性了。
一個持續(xù)發(fā)展但在許多指令集結(jié)構(gòu)中仍未解決的領(lǐng)域,即是條件碼回寫(condition codes write back)的選擇性控制。在許多現(xiàn)代的指令集中,有些指令會指示一符合舊有規(guī)則的微處理器中的執(zhí)行邏輯,對所提供的操作數(shù)執(zhí)行運算,如將兩操作數(shù)相加,或?qū)刹僮鲾?shù)執(zhí)行一邏輯“或”(AND)的運算。不論所執(zhí)行運算的類型為何,運算執(zhí)行完后都會產(chǎn)生一結(jié)果(result)。而且情況經(jīng)常是,應(yīng)用程序可能會依據(jù)一最近所產(chǎn)生結(jié)果的特定屬性,而采行不同路徑的程序流程。例如,若結(jié)果是一正數(shù),則流程可能進行至程序中的A點,而若結(jié)果是一負數(shù),則流程將進行至B點。若結(jié)果為零,則流程將進行至C點。
由于應(yīng)用程序的流程經(jīng)常決定于所產(chǎn)生的結(jié)果是否符合特定的邊界條件(如負數(shù)、正數(shù)、零、溢位、奇數(shù)個1、偶數(shù)個1等),設(shè)計者便提出了相關(guān)工具,借以簡易地評估一最近運算結(jié)果的邊界屬性,并依此改變程序的流程。在今日,用來儲存及檢驗結(jié)果條件的工具中,最廣為使用的即是,將一系列的條件碼位連同一些條件分支指令儲存于一特殊緩存器內(nèi),其中這些分支指令可使程序的流程依照該特殊緩存器所存的一個或更多位的狀態(tài)來改變。當執(zhí)行一運算并產(chǎn)生一對應(yīng)結(jié)果,微處理器內(nèi)的條件碼邏輯便依每個邊界條件來評估該對應(yīng)結(jié)果,并設(shè)定該特殊條件碼緩存器中的對應(yīng)位,以供條件分支指令后續(xù)查詢之用。
在許多現(xiàn)代的微處理器中,結(jié)果的評估與條件碼的更新都是自動進行的。每計算出一個新的結(jié)果,條件碼緩存器(也稱為標志緩存器)的狀態(tài)就被更新,以反映該新的結(jié)果的邊界屬性。雖然這項特征在許多情況下相當有用,但仍有些時候是不希望在一結(jié)果產(chǎn)生后,便將條件碼緩存器予以更新。例如,熟悉此領(lǐng)域技術(shù)人員都知道,評估所有邊界條件以及更新每一新產(chǎn)生結(jié)果的對應(yīng)條件碼位,是相當復(fù)雜且花時間的工作,以致于對大部分微處理器而言,每計算出一結(jié)果,就必須將其執(zhí)行管線停頓一個或更多周期,以完成邊界條件的評估與相關(guān)條件碼位的設(shè)定。這個現(xiàn)象已被微處理器設(shè)計者與編譯器設(shè)計者注意到。所以,當一條件分支指令(條件碼使用者)之前緊鄰著一建立分支條件的指令(條件碼制造者)時,在這種情況下,大部分的編譯器與一些微處理器將在指令流中向后找尋一個或更多不影響條件碼的后續(xù)指令,并將這些后續(xù)指令插入制造條件碼的指令與條件分支指令間,以使程序代碼的執(zhí)行工作能安排得更有效率。
但熟悉此領(lǐng)域技術(shù)人員都知道,后續(xù)指令并非總是能順利插入,因此,管線運作的停頓確實常常發(fā)生。這問題在執(zhí)行重復(fù)的程序循環(huán)時,會更加嚴重。而且,若分支條件已經(jīng)建立,此時再將不需要的虛擬操作指令(no-opinstruction)插入程序流程中,對應(yīng)用程序的整體執(zhí)行速度而言,已證明是非常不利的。
因此,我們所需要的是,一種允許將條件碼更新的選擇性控制納入既有微處理器指令集結(jié)構(gòu)的技術(shù),其中該微處理器指令集被已定義的操作碼完全占用,且納入該技術(shù)并不影響一符合舊有規(guī)則的微處理器執(zhí)行舊有應(yīng)用程序的能力。
在另一情況下,程序員可能想要設(shè)定一些條件,以作為后續(xù)運算是否執(zhí)行的判斷依據(jù)。因此,在一系列指令的執(zhí)行過程中,能維持一組條件碼是很必需的,這其中,并不允許該系列指令所產(chǎn)生的結(jié)果去修改先前已設(shè)定的條件碼。
本發(fā)明的一個目的,在于提出一種為既有微處理器指令集增添條件標志的回寫控制特征的延伸機制。該延伸機制具有一延伸指令與一轉(zhuǎn)譯器(translator)。該延伸指令指示一微處理器去阻止一數(shù)個條件標志的子集合的回寫。該些條件標志反映出一結(jié)果的邊界條件,其中該結(jié)果對應(yīng)于一指定運算的執(zhí)行。該延伸指令包括該既有微處理器指令集其中一選取的操作碼,其后則接著一n位的延伸控制前置碼。該選取的操作碼指出該延伸指令,而該n位的延伸控制前置碼則指出該子集合。該轉(zhuǎn)譯器接收該延伸指令,并產(chǎn)生一微指令序列,以指示微處理器執(zhí)行該指定運算,并指示一回寫控制邏輯于產(chǎn)生該結(jié)果后,禁止該子集合的回寫。
本發(fā)明的另一目的,在于提出一種為既有微處理器指令集增添選擇性的條件碼回寫能力的指令集延伸模塊。該指令集延伸模塊具有一逸出標志(escapetag)、一條件碼回寫指定元(codes write back specifier)及一條件碼回寫控制器(condition codes write back controller)。該逸出標志由一轉(zhuǎn)譯邏輯接收,并指出一對應(yīng)指令的附隨部分指定了一微處理器所要執(zhí)行的一延伸運算,其中該逸出標志為該既有微處理器指令集內(nèi)的一第一操作碼項目。該條件碼回寫指定元耦接至該逸出標志,且為該附隨部分其中之一,用以指定數(shù)個關(guān)聯(lián)于該延伸運算結(jié)果的條件碼。該條件碼回寫控制器耦接至該轉(zhuǎn)譯邏輯,用以禁止該些條件碼的回寫,并致能其余條件碼的回寫。
本發(fā)明的再一目的,在于提供一種擴充微處理器指令集的方法,以提供可編程的結(jié)果條件碼回寫能力。該方法包括提供一延伸指令,該延伸指令包括一延伸標志及一條件碼回寫前置碼,其中該延伸標志為該微處理器指令集其中一第一操作碼;通過該條件碼回寫前置碼與該延伸指令的其余部分指定所要執(zhí)行的一運算,其中關(guān)聯(lián)于該運算結(jié)果的選取條件碼的回寫將被禁止;以及執(zhí)行該運算以產(chǎn)生該結(jié)果,并禁止該選取條件碼的回寫。
圖7為圖5微處理器內(nèi)轉(zhuǎn)譯階段邏輯的詳細的方塊圖;圖8為圖5的微處理器內(nèi)延伸執(zhí)行邏輯的方塊圖;以及圖9為描述本發(fā)明對提供條件碼回寫控制的指令進行轉(zhuǎn)譯與執(zhí)行的方法的運作流程圖。
圖號說明100 指令格式 101 前置碼 102 操作碼 103 地址指定元200 8位操作碼圖 201 操作碼值 202 操作碼F1H300 延伸指令格式 301 前置碼 302 操作碼303 地址指定元 304 延伸指令標志 305 伸前置碼400 8位前置碼圖 401 結(jié)構(gòu)特征500 管線化微處理器 501 提取邏輯502 指令高速緩存/外部內(nèi)存 503 指令隊列504 轉(zhuǎn)譯邏輯 505 延伸轉(zhuǎn)譯邏輯506 微指令隊列 507 執(zhí)行邏輯 508 延伸執(zhí)行邏輯600 延伸前置碼 601 備用字段 602 回寫控制字段700 轉(zhuǎn)譯階段邏輯 701 激活狀態(tài)信號 702 機器特定緩存器703 延伸特征字段 704 指令緩沖器 705 轉(zhuǎn)譯邏輯706 轉(zhuǎn)譯控制器 707 禁止信號 708 逸出指令檢測器709 延伸前置碼譯碼器 710 指令譯碼器711 控制只讀存儲器 712 微指令緩沖器 713 操作碼延伸項字段714 微操作碼字段 715 目的字段 716 來源字段717 位移字段800 延伸執(zhí)行邏輯 801 操作數(shù)緩存器802 微指令緩存器 803 操作碼延伸項字段804 其余字段 805 操作數(shù)緩存器806 條件標志緩存器 807 條件碼回寫控制器808 結(jié)果總線 809 算術(shù)邏輯單元810 結(jié)果緩存器900-926 對提供條件碼回寫控制的指令進行轉(zhuǎn)譯與執(zhí)行的方法的運作流程具體實施方式
以下的說明,是在一特定實施例及其必要條件的思路下而提供,可使一般熟悉此項技術(shù)人員能夠利用本發(fā)明。然而,各種對該較佳實施例所作的修改,對熟悉此項技術(shù)人員而言是顯而易見的,并且,在此所討論的一般原理,也可應(yīng)用至其它實施例。因此,本發(fā)明并不限于此處所展示與敘述的特定實施例,而是具有與此處所公開的原理與新穎特征相符的最大范圍。
前文已針對今日的微處理器內(nèi),如何擴充其結(jié)構(gòu)特征,以超越相關(guān)指令集能力的技術(shù)作了背景的討論。有鑒于此,在
圖1與圖2,將討論一相關(guān)技術(shù)的例子。此處的討論強調(diào)了微處理器設(shè)計者所一直面對的兩難情況,即一方面,他們想將最新開發(fā)的結(jié)構(gòu)特征納入微處理器的設(shè)計中,但另一方面,他們又要保留執(zhí)行舊有應(yīng)用程序的能力。在圖1至圖2的例子中,一完全占用的操作碼圖,已把增加新操作碼至該范例結(jié)構(gòu)的可能性排除,因而迫使設(shè)計者要不就選擇將新特征納入,而犧牲某種程度的舊有軟件兼容性,要不就將結(jié)構(gòu)上的最新進展一并放棄,以便維持微處理器與舊有應(yīng)用程序的兼容性。在相關(guān)技術(shù)的討論后,于圖3至圖9,將提供對本發(fā)明的討論。通過利用一既有但未使用的操作碼作為一延伸指令的前置碼標志,本發(fā)明可讓微處理器設(shè)計者克服已完全使用的指令集結(jié)構(gòu)的限制,在允許他們提供條件碼回寫控制能力的同時,也能保留與舊有應(yīng)用程序的兼容性。
請參閱圖1,其為一相關(guān)技術(shù)的微處理器指令格式100的方塊圖。該相關(guān)技術(shù)的指令100具有數(shù)量可變的數(shù)據(jù)項101-103,每一項目都設(shè)定成一特定值,合在一起便組成微處理器的一特定指令100。該特定指令100指示微處理器執(zhí)行一特定運算,例如將兩操作數(shù)相加,或是將一操作數(shù)從內(nèi)存搬移至微處理器內(nèi)的緩存器。一般而言,指令100內(nèi)的操作碼項目102指定了所要執(zhí)行的特定運算,而選用(optional)的地址指定元103位于操作碼102之后,以指定關(guān)于該特定運算的附加信息,像如何執(zhí)行該運算,操作數(shù)位于何處等等。指令格式100并允許程序員在一操作碼102前加上前置碼項目101。在操作碼102所指定的特定運算執(zhí)行時,前置碼101用以指示是否使用特定的結(jié)構(gòu)特征。一般來說,這些結(jié)構(gòu)特征能應(yīng)用于指令集中任何操作碼102所指定運算的大部分。例如,現(xiàn)今前置碼101存在于一些能使用不同大小操作數(shù)(如8位、16位、32位)執(zhí)行運算的微處理器中。而當許多此類處理器被編程為一預(yù)設(shè)的操作數(shù)大小時(比如32位),在其個別指令集中所提供的前置碼101,仍能使程序員依據(jù)各個指令,選擇性地取代(override)該預(yù)設(shè)的操作數(shù)大小(如為了執(zhí)行16位運算)??蛇x擇的操作數(shù)大小僅是結(jié)構(gòu)特征的一例,在許多現(xiàn)代的微處理器中,這些結(jié)構(gòu)特征能應(yīng)用于眾多可由操作碼102加以指定的運算(如加、減、乘、布爾邏輯等)。
圖1所示的指令格式100,有一為業(yè)界所熟知的范例,此即x86指令格式100,其為所有現(xiàn)代的x86-兼容微處理器所采用。更具體地說,x86指令格式100(也稱為x86指令集結(jié)構(gòu)100)使用了8位前置碼101、8位操作碼102以及8位地址指定元103。x86結(jié)構(gòu)100也具有數(shù)個前置碼101,其中兩個取代了x86微處理器所預(yù)設(shè)的地址/數(shù)據(jù)大小(即操作碼狀態(tài)66H與67H),另一個則指示微處理器依據(jù)不同的轉(zhuǎn)譯規(guī)則來解譯其后的操作碼字節(jié)102(即前置碼值0FH,其使得轉(zhuǎn)譯操作是依據(jù)所謂的二字節(jié)操作碼規(guī)則來進行),其它的前置碼101則使特殊運算重復(fù)執(zhí)行,直至重復(fù)條件滿足為止(即REP操作碼F0H、F2H及F3H)。
現(xiàn)請參閱圖2,其顯示一表格200,用以描述一指令集結(jié)構(gòu)的指令201如何對應(yīng)至圖1指令格式內(nèi)一8位操作碼字節(jié)102的位邏輯狀態(tài)。表格200呈現(xiàn)了一示范性的8位操作碼圖200,其將一8位操作碼項目102所具有的最多256個值,關(guān)聯(lián)到對應(yīng)的微處理器操作碼指令201。表格200將操作碼項目102的一特定值,譬如02H,映像至一對應(yīng)的操作碼指令201(即指令I(lǐng)02 201)。在x86操作碼圖的例子中,為此領(lǐng)域中人所熟知的是,操作碼值14H是映像至x86的進位累加(Add With Carry,ADC)指令,此指令將一8位的直接(immediate)操作數(shù)加至結(jié)構(gòu)緩存器AL的內(nèi)含值。熟悉此領(lǐng)域技術(shù)人員也將發(fā)覺,上文提及的x86前置碼101(也即66H、67H、0FH、F0H、F2H及F3H)是實際的操作碼值201,其在不同情況下,指定要將特定的結(jié)構(gòu)延伸項應(yīng)用于隨后的操作碼項目102所指定的運算。例如,在操作碼14H(正常情況下,為前述的ADC操作碼)前加上前置碼0FH,會使得x86處理器執(zhí)行一“解壓縮與插入低壓縮的單精度浮點值”(Unpack and Interleave Low PackedSingle-Precision Floating-Point Values)運算,而非原本的ADC運算。諸如此x86例子所述的特征,在現(xiàn)代的微處理器中部分地致能,此因微處理器內(nèi)的指令轉(zhuǎn)譯/譯碼邏輯是依序解譯一指令100的項目101-103。所以在過去,于指令集結(jié)構(gòu)中使用特定操作碼值作為前置碼101,可允許微處理器設(shè)計者將不少先進的結(jié)構(gòu)特征納入兼容舊有軟件的微處理器的設(shè)計中,而不會對未使用那些特定操作碼狀態(tài)的舊有程序,帶來執(zhí)行上的負面沖擊。例如,一未曾使用x86操作碼0FH的舊有程序,仍可在今日的x86微處理器上執(zhí)行。而一較新的應(yīng)用程序,借著運用x86操作碼0FH作為前置碼101,就能使用許多新進納入的x86結(jié)構(gòu)特征,如單一指令多重數(shù)據(jù)(SIMD)運算,條件移動運算等等。
盡管過去已通過指定可用/多余的操作碼值201作為前置碼101(也稱為結(jié)構(gòu)特征標志/指針101或逸出指令101)來提供結(jié)構(gòu)特征,但許多指令集結(jié)構(gòu)100在提供功能上的強化時,仍會因為一非常直接的理由而碰到阻礙,即所有可用/多余的操作碼值已被用完,也就是,操作碼圖200中的全部操作碼值已被結(jié)構(gòu)化地指定。當所有可用的值被分派為操作碼項目102或前置碼項目101時,就沒有剩余的操作碼值可作為納入新特征之用。這個嚴重的問題存在于現(xiàn)在的許多微處理器結(jié)構(gòu)中,因而迫使設(shè)計者得在增添結(jié)構(gòu)特征與保留舊有程序的兼容性兩者間作抉擇。
值得注意的是,圖2所示的指令201以一般性的方式表示(也即I24、I86),而非具體指涉實際的運算(如進位累加、減、異或)。這是因為,在一些不同的微處理器結(jié)構(gòu)中,完全占用的操作碼圖200在結(jié)構(gòu)上,已將納入較新進展的可能性排除。雖然圖2例子所提到的,是8位的操作碼項目102,熟悉此領(lǐng)域技術(shù)人員仍將發(fā)覺,操作碼102的特定大小,除了作為一特殊情況來討論完全占用的操作碼結(jié)構(gòu)200所造成的問題外,其它方面與問題本身并不相干。因此,一完全占用的6位操作碼圖將有64個可結(jié)構(gòu)化地指定的操作碼/前置碼201,并將無法提供可用/多余的操作碼值作為擴充之用。
另一種做法,則并非將原有指令集廢棄,以一新的格式100與操作碼圖200取代,而是只針對一部份既有的操作碼201,以新的指令方法(newinstruction meanings)取代,如圖2的操作碼40H至4FH。以這種混合的技術(shù),符合舊有規(guī)則的微處理器就可以兼容舊有軟件模式運作,其中操作碼40H-4FH是依舊有規(guī)則來解譯,或者以加強模式(enhanced mode)運作,其中操作碼40H-4FH依加強的結(jié)構(gòu)規(guī)則來解譯。此項技術(shù)確能允許設(shè)計者將新特征納入設(shè)計,然而,當符合舊有規(guī)則的微處理器于加強模式運作時,缺點仍舊存在,因為微處理器不能執(zhí)行任何使用操作碼40H-4FH的應(yīng)用程序。因此,站在保留舊有軟件兼容性的立場,兼容舊有軟件/加強模式的技術(shù),還是無法接受的。
然而,對于操作碼空間已完全占用的指令集200,且該空間涵蓋所有于符合舊有規(guī)則的微處理器上執(zhí)行的應(yīng)用程序的情形,本發(fā)明已注意到其中操作碼201的使用狀況,也觀察出,雖然有些指令202是結(jié)構(gòu)化地指定,但未用于能被微處理器執(zhí)行的應(yīng)用程序中。圖2所述的指令I(lǐng)F1 202即為此現(xiàn)象的一例。事實上,相同的操作碼值202(也即F1H)是映像至未用于x86指令集結(jié)構(gòu)的一有效指令202。雖然該未使用的x86指令202是有效的x86指令202,其指示要在x86微處理器上執(zhí)行一結(jié)構(gòu)化地指定的運算,但它卻未使用于任何能在現(xiàn)代x86微處理器上執(zhí)行的應(yīng)用程序。這個特殊的x86指令202被稱為電路內(nèi)仿真斷點(In Circuit Emulation Breakpoint)(也即ICE BKPT,操作碼值為F1H),之前都是專門使用于一種現(xiàn)在已不存在的微處理器仿真設(shè)備中。ICE BKPT 202從未用于電路內(nèi)仿真器的外的應(yīng)用程序中,并且先前使用ICEBKPT 202的電路內(nèi)仿真設(shè)備已不復(fù)存在。因此,在x86的情形下,本發(fā)明已在一完全占用的指令集結(jié)構(gòu)200內(nèi)發(fā)現(xiàn)一樣工具,利用一有效但未使用的操作碼202,以允許在微處理器的設(shè)計中納入先進的結(jié)構(gòu)特征,而不需犧牲舊有軟件的兼容性。在一完全占用的指令集結(jié)構(gòu)200中,本發(fā)明利用一結(jié)構(gòu)化地指定但未使用的操作碼202,作為一指針標志,以指出其后的一n位前置碼,因此允許微處理器設(shè)計者可將最多2n個最新發(fā)展的結(jié)構(gòu)特征,納入微處理器的設(shè)計中,同時保留與所有舊有軟件完全的兼容性。
本發(fā)明通過提供一n位的條件碼回寫控制指定元前置碼,以使用前置碼標志/延伸前置碼的概念,因而可允許程序員將一常用的供微處理器執(zhí)行的運算(如加、減、布爾運算、操作數(shù)操作(manipulation)等)編程,并在相同指令內(nèi),對于執(zhí)行該常用運算所產(chǎn)生的結(jié)果,致能/禁止其相關(guān)的指定條件碼的回寫(也即更新)。在一具體實施例中,微處理器的條件碼狀態(tài),存于一條件碼(或標志)緩存器中,其依據(jù)該n位延伸前置碼內(nèi)的字段狀態(tài)來更新,而該n位延伸前置碼將關(guān)聯(lián)于該結(jié)果的一條件碼子集合的更新予以禁止。另一實施例則排除(preclude)了關(guān)聯(lián)于該結(jié)果的所有條件碼的回寫。本發(fā)明現(xiàn)將參照圖3至圖9進行討論。
現(xiàn)請參閱圖3,其為本發(fā)明的延伸指令格式300的方塊圖。與圖1所討論的格式100非常近似,該延伸指令格式300具有數(shù)量可變的指令項目301-305,每一項目設(shè)定為一特定值,集合起來便組成微處理器的一特定指令300。該特定指令300指示微處理器執(zhí)行一特定運算,像是將兩操作數(shù)相加,或是將一操作數(shù)從內(nèi)存搬移至微處理器的緩存器內(nèi)。一般而言,指令300的操作碼項目302指定了所要執(zhí)行的特定運算,而選用的地址指定元項目303則位于操作碼302后,以指定該特定運算的相關(guān)附加信息,像是如何執(zhí)行該運算,操作數(shù)位于何處等等。指令格式300也允許程序員在一操作碼302前加上前置碼項目301。在操作碼302所指定的特定運算執(zhí)行時,前置碼項目301用來指示是否要使用既有的結(jié)構(gòu)特征。
然而,本發(fā)明的延伸指令300是前述圖1指令格式100的一超集(superset),其具有兩個附加項目304與305,可被選擇性作為指令延伸項,并置于一格式化延伸指令300中所有其余項目301-303之前。這兩個附加項目304與305用于致能/禁止關(guān)聯(lián)于一指定運算結(jié)果的數(shù)個條件碼的一子集合的回寫,以將選擇性的條件碼回寫特征納入微處理器的設(shè)計中,其中該些特征并無法在一完全占用的指令集結(jié)構(gòu)內(nèi)加以指定。選用項目304與305是一延伸指令標志304與一延伸條件碼回寫控制指定元前置碼305。該延伸指令標志304是一微處理器指令集內(nèi)另一依據(jù)結(jié)構(gòu)所指定的操作碼。在一x86的實施例中,該延伸指令標志304或稱逸出標志304,是用操作碼狀態(tài)F1H,其為早先使用的ICE BKPT指令。逸出標志304向微處理器邏輯指出,該條件碼指定元前置碼305或稱延伸特征指定元305跟隨其后,其中該條件碼指定元305指定了對應(yīng)于一指定運算結(jié)果的條件碼。在一具體實施例中,逸出標志304指出,一對應(yīng)延伸指令300的附隨部分301-303及305指定了微處理器所要執(zhí)行的延伸運算。延伸前置碼305,或稱條件碼回寫指定元305,指定了數(shù)個關(guān)聯(lián)于該延伸運算的結(jié)果的條件碼。于該結(jié)果產(chǎn)生后,微處理器內(nèi)的一條件碼回寫控制器便禁止該些條件碼的回寫,并致能其余條件碼的回寫。
此處將本發(fā)明的條件執(zhí)行延伸技術(shù)作個概述。一指令延伸項是以一既有指令集結(jié)構(gòu)其中一操作碼/指令304與一n位延伸特征前置碼305進行組態(tài)。所選取的操作碼指令作為一指針304,以指出指令300是一延伸特征指令300(也即,其指定了微處理器結(jié)構(gòu)的延伸項),該n位特征前置碼305則指定一關(guān)聯(lián)于一指定運算結(jié)果的數(shù)個條件標志的子集合,其值的更新在該結(jié)果產(chǎn)生后被禁止執(zhí)行。在一具體實施例中,延伸前置碼305具八位的大小,最多可指定256種不同的該些條件碼的子集合。n位前置碼的實施例,則最多可指定2n種不同的條件碼組合。
現(xiàn)請參閱圖4,一表格400顯示依據(jù)本發(fā)明,條件碼更新控制延伸項如何映像至一8位延伸前置碼實施例的位邏輯狀態(tài)。類似于圖2所討論的操作碼圖200,圖4的表格400呈現(xiàn)一8位條件碼指定元的前置碼圖400的范例,其將一8位延伸前置碼項目305的最多256個值,關(guān)聯(lián)到一符合舊有規(guī)則的微處理器的對應(yīng)條件碼狀態(tài)401(如E34、E4D等)。在一x86的具體實施例中,本發(fā)明的8位延伸特征前置碼305提供給指定元401(也即EOO-EFF)使用,該些指定元401乃現(xiàn)行x86指令集結(jié)構(gòu)所未能提供的。
圖4所示的延伸特征401以一般性的方式表示,而非具體指涉實際的特征,此因本發(fā)明的技術(shù)可應(yīng)用于各種不同的結(jié)構(gòu)延伸項401與特定的指令集結(jié)構(gòu)。熟悉此領(lǐng)域技術(shù)人員將發(fā)覺,許多不同的結(jié)構(gòu)特征401,其中一些已于上文提及,可依此處所述的逸出標志304/延伸前置碼305技術(shù)將其納入一既有的指令集。圖4的8位前置碼實施例提供了最多256個不同的特征401,而一n位前置碼實施例則具有最多2n個不同特征401的編程選擇。
在對應(yīng)不同類型的條件碼儲存與表示方式的實施例中,這些類型對許多現(xiàn)代的微處理器而言是很常見的,條件碼的組合可被指定為禁止回寫,這些組合包括一結(jié)果的邊界屬性,如等于零、不等于零、偶校驗(even parity)、奇校驗(odd parity)、帶負號(sign)、不帶負號、溢位(overflow)、未溢位、進位(carry)、未進位等等。在許多此種微處理器中,一條件碼狀態(tài)項目(也即緩存器)以數(shù)個條件碼位(或標志)加以組態(tài),其中每一位代表一最近產(chǎn)生的結(jié)果是否已超過某一結(jié)果邊界條件,像是產(chǎn)生一進位位,或有一符號位顯示該結(jié)果為一負數(shù)。然而,前述的特定條件碼并未將本發(fā)明的范圍限制于一特定的結(jié)果條件碼集合。前述實施例可作為范例,用來解說依本發(fā)明,一條件碼指定元前置碼305如何被編碼,以便在一結(jié)果產(chǎn)生后,排除特定條件碼子集合的更新。熟悉此領(lǐng)域技術(shù)人員將可發(fā)覺,一特殊條件碼指定元前置碼305的組態(tài),是依據(jù)一對應(yīng)微處理器中條件碼如何表示與儲存而定。
現(xiàn)請參閱圖5,其為本發(fā)明用以控制關(guān)聯(lián)于所執(zhí)行運算結(jié)果的條件碼更新的管線化微處理器500的方塊圖。微處理器500具有三個明顯的階段類型提取、轉(zhuǎn)譯及執(zhí)行。提取階段具有提取邏輯501,可從指令高速緩存502或外部內(nèi)存502提取指令。所提取的指令經(jīng)由指令隊列503送至轉(zhuǎn)譯階段。轉(zhuǎn)譯階段具有轉(zhuǎn)譯邏輯504,耦接至一微指令隊列506。轉(zhuǎn)譯邏輯504包括延伸轉(zhuǎn)譯邏輯505。執(zhí)行階段則有執(zhí)行邏輯507,其內(nèi)具有延伸執(zhí)行邏輯508。
依據(jù)本發(fā)明,于運作時,提取邏輯501從指令高速緩存/外部內(nèi)存502提取格式化指令,并將這些指令依其執(zhí)行順序放入指令隊列503中。接著從指令隊列503提取這些指令,送至轉(zhuǎn)譯邏輯504。轉(zhuǎn)譯邏輯504將每一送入的指令轉(zhuǎn)譯/譯碼為一對應(yīng)的微指令序列,以指示微處理器500去執(zhí)行這些指令所指定的運算。依本發(fā)明,延伸轉(zhuǎn)譯邏輯505檢測那些具有延伸前置碼標志的指令,以進行對應(yīng)條件碼回寫指定元前置碼的轉(zhuǎn)譯/譯碼。在一x86的實施例中,延伸轉(zhuǎn)譯邏輯505組態(tài)為檢測其值為F1H的延伸前置碼標志,其為x86的ICEBKPT操作碼。微指令字段則提供于微指令隊列506中,以指定要被排除更新的條件碼。
微指令從微指令隊列506被送至執(zhí)行邏輯507,由延伸執(zhí)行邏輯508檢測具有選擇性條件碼回寫特征的微指令,此處的回寫特征依微指令字段的指示來致能。延伸執(zhí)行邏輯508執(zhí)行微指令所指定的運算,并產(chǎn)生對應(yīng)的結(jié)果。在對應(yīng)結(jié)果產(chǎn)生后,延伸執(zhí)行邏輯508即依微指令字段的指示禁止邊界條件的評估以及條件碼的更新。在一具體實施例中,只有被延伸指令指定為要更新的條件碼,才會被寫回條件碼緩存器。在另一實施例中,只有未被延伸指令指定為不更新的條件碼,才會被寫回條件碼緩存器。
熟悉此領(lǐng)域技術(shù)人員將發(fā)現(xiàn),圖5所示的微處理器500為現(xiàn)代的管線化微處理器50經(jīng)過簡化的結(jié)果。事實上,現(xiàn)代的管線化微處理器500最多可包括有20至30個不同的管線階段。然而,這些階段可概括地歸類為方塊圖所示的三個階段,因此,圖5的方塊圖500可用以點明前述本發(fā)明實施例所需的必要組件。為了簡明起見,微處理器500中無關(guān)的組件并未顯示出來。
現(xiàn)請參閱圖6,其為本發(fā)明用于選擇性地控制條件碼回寫的延伸前置碼的一具體實施例的方塊圖。該延伸條件碼指定元前置碼600為一8位的延伸前置碼600,且具有一包括數(shù)個位(起始于位0)的回寫控制(write back control,WBC)字段602與一包括其余位(結(jié)束于位7)的備用字段601。在一具體實施例中,WBC字段602包括位0,并依本發(fā)明指示延伸執(zhí)行邏輯將所有條件碼的回寫予以禁止。另一具體實施例則使用前置碼600較低的五個位作為WBC字段602,其中每一位分別對應(yīng)至禁止負號條件、進位條件、溢位條件、零值條件以及校驗條件的回寫。
現(xiàn)請參閱圖7,其為圖5的微處理器內(nèi)轉(zhuǎn)譯階段邏輯700的詳細的方塊圖。轉(zhuǎn)譯階段邏輯700具有一指令緩沖器704,依本發(fā)明,其提供延伸指令至轉(zhuǎn)譯邏輯705。轉(zhuǎn)譯邏輯705耦接至一具有一延伸特征字段703的機器特定緩存器(machine specific register)702。轉(zhuǎn)譯邏輯705具有一轉(zhuǎn)譯控制器706,其提供一禁止信號707至一逸出指令檢測器708及一延伸前置碼譯碼器709。逸出指令檢測器708耦接至延伸前置碼譯碼器709及一指令譯碼器710。延伸前置碼譯碼器709與指令譯碼邏輯710存取一控制只讀存儲器(ROM)711,其中儲存了對應(yīng)至某些延伸指令的樣板(template)微指令序列。轉(zhuǎn)譯邏輯705也包括一微指令緩沖器712,其具有一操作碼延伸項字段713、一微操作碼字段714、一目的字段715、一來源字段716以及一位移字段717。
實踐中,在微處理器通電激活期間,機器特定緩存器702內(nèi)的延伸字段703的狀態(tài)通過信號激活狀態(tài)(signal power-up state)701決定,以指出該特定微處理器是否能轉(zhuǎn)譯與執(zhí)行本發(fā)明的延伸條件執(zhí)行指令。在一具體實施例中,信號701從一特征控制緩存器(圖上未顯示)導(dǎo)出,該特征控制緩存器則讀取一于制造時即已組態(tài)的熔合數(shù)組(fuse array)(未顯示)。機器特定緩存器702將延伸特征字段703的狀態(tài)送至轉(zhuǎn)譯控制器706。轉(zhuǎn)譯控制邏輯706則控制從指令緩沖器704所提取的指令,要依照延伸選擇性條件碼回寫控制轉(zhuǎn)譯規(guī)則或既有轉(zhuǎn)譯規(guī)則進行解譯。提供這樣的控制特征,可允許監(jiān)督應(yīng)用程序(如BIOS)致能/禁止微處理器的延伸執(zhí)行特征。若延伸特征被禁止,則具有被選為延伸特征標志的操作碼狀態(tài)的指令,將依既有轉(zhuǎn)譯規(guī)則進行轉(zhuǎn)譯。在一x86的具體實施例中,選取操作碼狀態(tài)F1H作為標志,則在常用的轉(zhuǎn)譯規(guī)則下,遇到F1H將造成不合法的指令異常(exception)。然而,在延伸轉(zhuǎn)譯規(guī)則下,若遇到標志,則會被逸出指令檢測器708檢測出來。逸出指令檢測器708因而于延伸前置碼譯碼器709轉(zhuǎn)譯/譯碼標志之后的延伸條件碼指定元前置碼時,禁止指令譯碼器710的運作,并于轉(zhuǎn)譯/譯碼該延伸指令的剩余部分時,致能指令譯碼器710。某些特定指令將導(dǎo)致對控制ROM 711的存取,以獲取對應(yīng)的微指令序列樣板。微指令緩沖器712的操作碼延伸項字段713由前置碼譯碼器709進行組態(tài),以指定數(shù)個條件碼的一子集合,其中該些條件碼的更新在一對應(yīng)運算的結(jié)果產(chǎn)生后被致能/禁止。其它緩沖器字段714-717則指定該對應(yīng)運算,并由指令譯碼器710進行組態(tài)。經(jīng)過組態(tài)的微指令712被送至一微指令隊列(未顯示于圖中),由處理器進行后續(xù)執(zhí)行。
現(xiàn)請參閱圖8,其為圖5微處理器內(nèi)的延伸執(zhí)行邏輯800的方塊圖。該延伸執(zhí)行邏輯800具有一算術(shù)邏輯單元(arithematic logic unit,ALU)809,其經(jīng)由一結(jié)果總線808耦接至條件碼回寫控制器807。條件碼回寫控制器807則耦接至一條件標志儲存機制806,或稱條件標志緩存器806。兩操作數(shù)OPERAND 1與OPERAND 2,由ALU 809從操作數(shù)緩存器801與805提取出來。一微指令緩存器802提供一微指令給ALU 809與條件碼回寫控制邏輯807。微指令緩存器802具有一操作碼延伸項字段803與一其余字段804。ALU 809并另外耦接至一結(jié)果緩存器810。
實踐中,當一使用選擇性條件碼回寫控制特征的延伸指令,依本發(fā)明被轉(zhuǎn)譯成一微指令序列時,延伸微指令以及緩存器801與805內(nèi)的可用操作數(shù)都經(jīng)由微指令緩存器802,被送至延伸執(zhí)行邏輯800。操作碼延伸項字段803指定了數(shù)個條件碼的一子集合,其中該些條件碼的更新在一對應(yīng)至由其余字段804所指定、使用操作數(shù)801與805的運算的結(jié)果產(chǎn)生后被致能/禁止。ALU 809執(zhí)行所指定的運算,產(chǎn)生該結(jié)果,并將其送至結(jié)果緩存器810與條件碼回寫控制器807。條件碼控制器807組態(tài)為評估全部所產(chǎn)生結(jié)果的邊界條件,并更新標志緩存器806中所有可用的條件標志。為了執(zhí)行延伸指令,回寫控制器807讀取操作碼延伸項字段803,并排除其中所指定條件的條件評估/回寫。在一具體實施例中,操作碼延伸項字段803被用于將控制器807所進行的條件碼評估與回寫完全禁止。
現(xiàn)請參閱圖9,其為描述本發(fā)明對提供條件碼回寫控制的指令進行轉(zhuǎn)譯與執(zhí)行的方法的運作流程圖。流程開始于方塊902,其中一個組態(tài)有可編程條件碼回寫特征的延伸指令的程序,被送至微處理器。流程接著進行至方塊904。
于方塊904中,下一個指令從高速緩存/外部內(nèi)存提取。流程接著進行至判斷方塊906。
于判斷方塊906中,對在方塊904中所提取的下個指令進行檢查,以判斷是否包括一延伸逸出標志/碼。若否,則流程進行至方塊912。若檢測到該延伸逸出碼,則流程進行至方塊908。
于方塊908中,由于在方塊906中已檢測到一延伸逸出標志,轉(zhuǎn)譯/譯碼在一延伸條件碼指定元前置碼上執(zhí)行,以決定數(shù)個條件碼的一子集合,該子集合將于一運算結(jié)果產(chǎn)生后被排除更新。流程接著進行到方塊910。
于方塊910中,一微指令序列的對應(yīng)字段被組態(tài)為指出該延伸前置碼所指定該些條件碼的該子集合。流程接著進行至方塊912。
于方塊912中,該指令的其余部分(如前置碼項目、操作碼、地址指定元)被轉(zhuǎn)譯/譯碼,以判斷所要執(zhí)行的運算及關(guān)聯(lián)操作數(shù)的屬性。流程接著進行至方塊914。
于方塊914中,一微指令序列的其余字段被組態(tài)為指定所指定的運算及其操作數(shù)屬性。流程接著進行至方塊916。
于方塊916中,該微指令序列,其包括方塊910中所組態(tài)的操作碼延伸項字段以及方塊914中所組態(tài)的其余字段,被送至一微指令隊列,由微處理器執(zhí)行。流程接著進行至方塊918。
于方塊918中,該微指令序列由本發(fā)明的延伸條件執(zhí)行邏輯進行提取。流程接著進行至方塊920。
于方塊920中,延伸執(zhí)行邏輯執(zhí)行該指定運算,并產(chǎn)生該結(jié)果。流程接著進行至判斷方塊922。
于判斷方塊922中,條件碼回寫控制邏輯依本發(fā)明排除了該子集合的邊界條件評估與條件碼更新,其中該子集合由微指令延伸項字段于方塊910中所指定。對于被排除的該子集合,流程進行至方塊926。對于未被排除評估/更新的其余條件碼,流程則進行至方塊924。
于方塊924中,評估該結(jié)果,并依據(jù)這些其余的條件碼來更新條件碼緩存器的對應(yīng)位。流程接著進行至方塊926。
于方塊926中,本方法完成。
雖然本發(fā)明及其目的、特征與優(yōu)點已詳細敘述,其它實施例也可包括在本發(fā)明的范圍內(nèi)。例如,本發(fā)明已就如下的技術(shù)加以敘述利用已完全占用的指令集結(jié)構(gòu)內(nèi)單一、未使用的操作碼狀態(tài)作為標志,以指出其后的延伸特征前置碼。但本發(fā)明的范圍就任一方面來看,并不限于已完全占用的指令集結(jié)構(gòu),或未使用的指令,或是單一標志。相反地,本發(fā)明涵蓋了未完全映像的指令集、具已使用操作碼的實施例以及使用一個以上的指令標志的實施例。例如,考慮一沒有未使用操作碼狀態(tài)的指令集結(jié)構(gòu)。本發(fā)明的一具體實施例包括了選取一作為逸出標志的操作碼狀態(tài),其中選取標準依市場因素而決定。另一具體實施例則包括使用操作碼的一特殊組合作為標志,如操作碼狀態(tài)7FH的連續(xù)出現(xiàn)。因此,本發(fā)明的本質(zhì)在于使用一標志序列,其后則為一n位的延伸前置碼,可允許程序員對于一延伸指令的其余部分所指定運算的執(zhí)行結(jié)果,致能/禁止其相關(guān)條件碼的評估與更新。
此外,本發(fā)明已通過一具有一組條件碼或標志的微處理器來作為范例,該組條件碼指出一所產(chǎn)生結(jié)果的邊界條件,包括校驗、溢位、正負號及零。雖然這些類型的條件指針在今日仍廣為使用,但本發(fā)明并不僅限于應(yīng)用在這些類型的條件。例如,本發(fā)明另外的實施例即包括其它的指定條件,像是一特殊緩存器內(nèi)容的狀態(tài)、一通訊端口或其它I/O裝置是否使用中、是否有可用的內(nèi)存或高速緩存空間等等。
再者,雖然上文利用微處理器為例來解說本發(fā)明及其目的、特征和優(yōu)點,熟悉此領(lǐng)域技術(shù)人員仍可察覺,本發(fā)明的范圍并不限于微處理器的結(jié)構(gòu),而可涵蓋所有形式的可編程裝置,如信號處理器、工業(yè)用控制器(industrialcontroller)、陣列處理機及其它同類裝置。
總之,以上所述僅為本發(fā)明的較佳實施例而已,不能限定本發(fā)明所實施的范圍。凡依本發(fā)明權(quán)利要求所作的等效變化與修飾,都應(yīng)仍屬于本發(fā)明專利涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種用以選擇性地控制數(shù)個條件碼回寫的微處理器裝置,包括一轉(zhuǎn)譯邏輯,用以將一延伸指令轉(zhuǎn)譯成對應(yīng)的微指令,其中該延伸指令包括一延伸前置碼,用以將該些條件碼的回寫禁止,該些條件碼對應(yīng)于一指定運算的結(jié)果;以及一延伸前置碼標志,用以指出該延伸前置碼,其中該延伸前置碼標志為一微處理器指令集內(nèi)另一依據(jù)結(jié)構(gòu)所指定的操作碼;以及一延伸執(zhí)行邏輯,耦接至該轉(zhuǎn)譯邏輯,用以接收該對應(yīng)的微指令,產(chǎn)生該結(jié)果,并禁止該些條件碼的回寫。
2.如權(quán)利要求1所述的微處理器裝置,其中該延伸指令還包括該指令集根據(jù)結(jié)構(gòu)所指定的數(shù)個項目。
3.如權(quán)利要求2所述的微處理器裝置,其中該些根據(jù)結(jié)構(gòu)所指定的項目包括一操作碼項目,用以指定該指定運算。
4.如權(quán)利要求1所述的微處理器裝置,其中該對應(yīng)的微指令包括一微操作碼字段與一微操作碼延伸項字段。
5.如權(quán)利要求4所述的微處理器裝置,其中該延伸執(zhí)行邏輯使用該微操作碼延伸項字段,以決定要將回寫禁止的該些條件碼,且其中該延伸執(zhí)行邏輯使用該微操作碼字段以決定所要執(zhí)行的該指定運算,以產(chǎn)生該結(jié)果。
6.如權(quán)利要求5所述的微處理器裝置,其中該延伸執(zhí)行邏輯包括一條件碼回寫控制器,組態(tài)為隨著數(shù)個運算結(jié)果的產(chǎn)生,更新一條件碼緩存器,并組態(tài)為隨著該結(jié)果的產(chǎn)生,排除該些條件碼的回寫。
7.如權(quán)利要求1所述的微處理器裝置,其中該轉(zhuǎn)譯邏輯包括一逸出指令檢測邏輯,用于檢測該延伸前置碼標志;以及一延伸前置碼譯碼邏輯,耦接至該逸出指令檢測邏輯,用以轉(zhuǎn)譯該延伸前置碼,并對該對應(yīng)微指令內(nèi)的一微操作碼延伸項字段進行組態(tài),該微操作碼延伸項字段則指定要將回寫禁止的該些條件碼。
8.如權(quán)利要求7所述的微處理器裝置,其中該轉(zhuǎn)譯邏輯還包括一指令譯碼邏輯,用以組態(tài)該對應(yīng)微指令內(nèi)的其它字段,該其它字段依據(jù)該指令集指定該指定運算。
9.一種為一既有微處理器指令集增添條件標志的回寫控制特征的延伸機制,包括一延伸指令,組態(tài)為指示一微處理器去阻止數(shù)個條件標志的一子集合的回寫,該些條件標志反映出一結(jié)果的邊界條件,該結(jié)果對應(yīng)于一指定運算的執(zhí)行,其中該延伸指令包括該既有微處理器指令集其中一選取的操作碼,其后則接著一n位的延伸控制前置碼,該選取的操作碼指出該延伸指令,而該n位的延伸控制前置碼則指出該子集合;以及一轉(zhuǎn)譯器,組態(tài)為接收該延伸指令,產(chǎn)生一微指令序列,以指示該微處理器執(zhí)行該指定運算,并指示一回寫控制邏輯于產(chǎn)生該結(jié)果后,排除該子集合的回寫。
10.如權(quán)利要求9所述的延伸機制,其中該延伸指令還包括其它延伸指令項目,組態(tài)為指定該指定運算。
11.如權(quán)利要求9所述的延伸機制,其中該轉(zhuǎn)譯器包括一逸出指令檢測器,用以檢測該延伸指令內(nèi)的該選取的操作碼;以及一延伸前置碼譯碼器,耦接至該逸出指令檢測器,用以轉(zhuǎn)譯該n位的延伸控制前置碼,并產(chǎn)生指定該子集合的該微指令序列內(nèi)一微操作碼延伸項字段。
12.一種為一既有微處理器指令集增添選擇性的條件碼回寫能力的指令集延伸模塊,該條件碼回寫指定元耦接至該逸出標志,用以禁止該些條件碼的回寫,并致能其余條件碼的回寫。包括一逸出標志,由一轉(zhuǎn)譯邏輯接收,并指出一對應(yīng)指令的附隨部分指定了一微處理器所要執(zhí)行的一延伸運算,其中該逸出標志為該既有微處理器指令集內(nèi)的一第一操作碼項目;一條件碼回寫指定元,耦接至該逸出標志,且為該附隨部分其中之一,用以指定數(shù)個條件碼中關(guān)聯(lián)于該延伸運算的結(jié)果者;以及一條件碼回寫控制器,耦接至該轉(zhuǎn)譯邏輯,用以禁止關(guān)聯(lián)于該延伸運算結(jié)果的條件碼的回寫,并致能其余該些條件碼的回寫。
13.如權(quán)利要求12所述的指令集延伸模塊,其中該附隨部分的其余部分包括一第二操作碼項目與選用的數(shù)個地址指定元項目。
14.如權(quán)利要求12所述的指令集延伸模塊,其中該條件碼回寫指定元包括一8位的數(shù)據(jù)項。
15.如權(quán)利要求12所述的指令集延伸模塊,其中該既有微處理器指令集為x86微處理器指令集。
16.如權(quán)利要求12所述的指令集延伸模塊,其中該轉(zhuǎn)譯邏輯將該逸出標志與該附隨部分轉(zhuǎn)譯成對應(yīng)的微指令,該對應(yīng)的微指令指示一延伸執(zhí)行邏輯去執(zhí)行該延伸運算。
17.如權(quán)利要求12所述的指令集延伸模塊,其中該轉(zhuǎn)譯邏輯包括一逸出標志檢測邏輯,用以檢測該逸出標志,并指示該附隨部分的轉(zhuǎn)譯操作需依據(jù)延伸轉(zhuǎn)譯規(guī)則(conventions);以及一譯碼邏輯,耦接至該逸出標志檢測邏輯,用以依據(jù)該既有微處理器指令集的規(guī)則,執(zhí)行微處理器指令的轉(zhuǎn)譯操作,并依據(jù)該延伸轉(zhuǎn)譯規(guī)則執(zhí)行該對應(yīng)指令的轉(zhuǎn)譯,以允許該些條件碼的選擇性回寫。
18.一種擴充一微處理器指令集的方法,以提供可編程的結(jié)果條件碼回寫能力,該方法包括提供一延伸指令,該延伸指令包括一延伸標志及一條件碼回寫前置碼,其中該延伸標志為該微處理器指令集其中一第一操作碼;通過該條件碼回寫前置碼與該延伸指令的其余部分指定所要執(zhí)行的一運算,其中關(guān)聯(lián)于該運算結(jié)果的選取條件碼的回寫將被禁止;以及執(zhí)行該運算以產(chǎn)生該結(jié)果,且禁止該選取條件碼的回寫。
19.如權(quán)利要求18所述的方法,其中該指定所要執(zhí)行的運算的操作包括首先指定該運算,該首先指定的操作使用了該微處理器指令集中一第二操作碼。
20.如權(quán)利要求18所述的方法,還包括將該延伸指令轉(zhuǎn)譯成微指令,該微指令在執(zhí)行該運算后,指示一延伸執(zhí)行邏輯去禁止該選取條件碼的回寫。
21.如權(quán)利要求20所述的方法,其中該轉(zhuǎn)譯延伸指令的操作包括于一轉(zhuǎn)譯邏輯內(nèi),檢測該延伸標志;以及依照延伸轉(zhuǎn)譯規(guī)則譯碼該條件指定元前置碼與該延伸指令的其余部分,該延伸轉(zhuǎn)譯規(guī)則為一既有的微處理器結(jié)構(gòu)提供依常用轉(zhuǎn)譯規(guī)則所無法提供的可編程回寫控制能力。
全文摘要
本發(fā)明涉及一種用于選擇性控制條件碼回寫的微處理器裝置及方法。該微處理器裝置具有一轉(zhuǎn)譯邏輯與一延伸執(zhí)行邏輯。該轉(zhuǎn)譯邏輯將一延伸指令轉(zhuǎn)譯為對應(yīng)的微指令。該延伸指令包括一延伸前置碼與一延伸前置碼標志。該延伸前置碼禁止對應(yīng)于一指定運算結(jié)果的條件碼的回寫。該延伸前置碼標志則指出該延伸前置碼是一微處理器指令集內(nèi)另一依據(jù)結(jié)構(gòu)所指定的操作碼。該延伸執(zhí)行邏輯耦接至轉(zhuǎn)譯邏輯,用以接收該對應(yīng)的微指令,產(chǎn)生該結(jié)果,并禁止該條件碼的回寫。
文檔編號G06F9/22GK1414469SQ0215056
公開日2003年4月30日 申請日期2002年11月13日 優(yōu)先權(quán)日2002年5月9日
發(fā)明者G·葛蘭·亨利, 羅德·E·胡克, 泰瑞·派克斯 申請人:智慧第一公司