專利名稱:選擇性地控制結(jié)果回寫的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微電子的領(lǐng)域,尤指一種能將選擇性的結(jié)果回寫控制特征納入一既有的微處理器指令集結(jié)構(gòu)的技術(shù)。
隨著過去三十年來使用上的爆炸性成長,在技術(shù)上也歷經(jīng)一相對(duì)應(yīng)的提升,其特征在于對(duì)下列項(xiàng)目有著日益升高的要求更快的速度、更強(qiáng)的尋址能力、更快的內(nèi)存存取、更大的操作數(shù)、更多種運(yùn)算(如浮點(diǎn)運(yùn)算、單一指令多重?cái)?shù)據(jù)(SIMD)、條件移動(dòng)等)以及附加的特殊運(yùn)算(如多媒體運(yùn)算)。如此造就了該領(lǐng)域中驚人的技術(shù)進(jìn)展,且都已應(yīng)用于微處理器的設(shè)計(jì),像擴(kuò)充管線化(extensive pipelining)、超規(guī)模結(jié)構(gòu)(super-scalar architecture)、快取結(jié)構(gòu)、亂序處理(out-of-order processing)、爆發(fā)式存取(burstaccess)、分支預(yù)測(branch predication)以及假想執(zhí)行(speculativeexecution)??傊?,比起30年前剛出現(xiàn)時(shí),現(xiàn)在的微處理器呈現(xiàn)出驚人的復(fù)雜度,且具備了強(qiáng)大的能力。
但與許多其它產(chǎn)品不同的是,有另一非常重要的因素已限制了、并持續(xù)限制著微處理器結(jié)構(gòu)的演進(jìn)。現(xiàn)今微處理器會(huì)如此復(fù)雜,一大部分得歸因于這項(xiàng)因素,即舊有軟件的兼容性。在市場考慮下,所多制造商選擇將新的結(jié)構(gòu)特征納入最新的微處理器設(shè)計(jì)中,但同時(shí)在這些最新的產(chǎn)品中,又保留了所有為確保兼容于較舊的,即所謂“舊有”(legacy)應(yīng)用程序所必需的能力。
這種舊有軟件兼容性的負(fù)擔(dān),沒有其它地方會(huì)比在x86-兼容的微處理器的發(fā)展史中更加顯而易見。大家都知道,現(xiàn)在的32/16位的虛擬模式(virtual-mode)x86微處理器,仍可執(zhí)行80年代所編寫的8位真實(shí)模式(real-mode)的應(yīng)用程序。而熟悉此領(lǐng)域技術(shù)人員也承認(rèn),有不少相關(guān)的結(jié)構(gòu)“包袱”堆在x86結(jié)構(gòu)中,只是為了支持與舊有應(yīng)用程序及運(yùn)作模式的兼容性。雖然在過去,研發(fā)者可將新開發(fā)的結(jié)構(gòu)特征加入既有的指令集結(jié)構(gòu),但如今使用這些特征所憑借的工具,即可編程指令,卻變得相當(dāng)稀少。更簡單地說,在某些重要的指令集中,已沒有“多余”的指令,讓設(shè)計(jì)者可借以將更新的特征納入一既有的結(jié)構(gòu)中。
例如,在x86指令集結(jié)構(gòu)中,已經(jīng)沒有任何一未定義的一字節(jié)大小的操作碼狀態(tài),是尚未被使用的。在主要的一字節(jié)大小的x86操作碼圖中,全部256個(gè)操作碼狀態(tài)都已被既有的指令占用了。結(jié)果是,x86微處理器的設(shè)計(jì)者現(xiàn)在必須在提供新特征與放棄舊有軟件兼容性兩者間作抉擇。若要提供新的可編程特征,則必須分派操作碼狀態(tài)給這些特征。若既有的指令集結(jié)構(gòu)沒有多余的操作碼狀態(tài),則某些既存的操作碼狀態(tài)必須重新定義,以提供給新的特征。因此,為了提供新的特征,就得犧牲舊有軟件兼容性了。
一個(gè)持續(xù)發(fā)展但在許多指令集結(jié)構(gòu)中仍未解決的領(lǐng)域,即是結(jié)果回寫(results write back)的選擇性控制。許多現(xiàn)代的應(yīng)用程序展現(xiàn)了復(fù)雜的信號(hào)與數(shù)據(jù)處理的算法,其在單一操作數(shù)上執(zhí)行多個(gè)重復(fù)運(yùn)算,以產(chǎn)生有意義的結(jié)果。此外,時(shí)常會(huì)碰到的情形是,該結(jié)果會(huì)呈現(xiàn)特定的邊界特性,或稱角落特性(corner property)。例如,結(jié)果為一正數(shù)、一負(fù)數(shù)、產(chǎn)生一進(jìn)位位或有偶數(shù)個(gè)邏輯1。再者,熟悉此領(lǐng)域技術(shù)人員將會(huì)發(fā)覺,當(dāng)一現(xiàn)代的微處理器內(nèi)的執(zhí)行邏輯產(chǎn)生一結(jié)果時(shí),執(zhí)行邏輯會(huì)同時(shí)更新存于一特殊緩存器(如結(jié)果條件標(biāo)志緩存器)中的一系列條件碼位,這些位顯示了如前述的結(jié)果的角落特性。因此,當(dāng)執(zhí)行一運(yùn)算并產(chǎn)生一對(duì)應(yīng)結(jié)果時(shí),微處理器內(nèi)的條件碼邏輯依每一邊界條件評(píng)估該對(duì)應(yīng)結(jié)果,并設(shè)定條件碼緩存器中的對(duì)應(yīng)位,供條件分支指令進(jìn)行后續(xù)查詢之用。一般而言,應(yīng)用程序的流程常決定于一結(jié)果是否反映了條件碼位狀態(tài)所顯示的特定邊界條件。
但情形常常是,一結(jié)果的條件位是每執(zhí)行一次程序循環(huán)便做檢查,以判斷該結(jié)果是否已跨過一邊界條件(如零、溢位等),或是否仍處在該邊界條件所界定的范圍內(nèi)。然而,當(dāng)一程序循環(huán)內(nèi)一后續(xù)指令檢查條件碼緩存器,以判斷該結(jié)果是否已跨越該邊界進(jìn)入另一范圍時(shí),對(duì)該結(jié)果的不可逆的毀損可能已經(jīng)造成。熟悉該領(lǐng)域技術(shù)人員將發(fā)覺,當(dāng)一運(yùn)算于一操作數(shù)上執(zhí)行時(shí),微處理器內(nèi)的執(zhí)行邏輯產(chǎn)生該結(jié)果,并評(píng)估邊界條件及更新條件碼緩存器,且該結(jié)果會(huì)被寫回至一結(jié)構(gòu)緩存器,其中該結(jié)構(gòu)緩存器為該結(jié)果的一指定目的。至于重復(fù)程序循環(huán)的情形,被寫入目的緩存器的該結(jié)果,通常會(huì)將前次程序循環(huán)執(zhí)行的結(jié)果覆寫過去。當(dāng)此現(xiàn)象發(fā)生后,雖然程序員能察覺到一最近循環(huán)執(zhí)行的結(jié)果已跨越一特定邊界,若該邊界定義出一范圍,使得該最近循環(huán)執(zhí)行的結(jié)果在此范圍中變得不再可用,則所有之前所重復(fù)執(zhí)行的程序循環(huán)就被浪費(fèi)掉了。
因此,我們所需要的是,一種允許程序員能依據(jù)對(duì)應(yīng)一結(jié)果的條件碼狀態(tài),選擇性地控制該結(jié)果回寫的技術(shù),其中該技術(shù)應(yīng)用于一既有的微處理器指令集結(jié)構(gòu)中,而該微處理器指令集被已定義的操作碼完全占用,且納入該技術(shù)并不影響一符合舊有規(guī)則的微處理器執(zhí)行舊有應(yīng)用程序的能力。
本發(fā)明的一個(gè)目的,在于提出一種為既有微處理器指令集增添結(jié)果的回寫控制特征的延伸機(jī)制。該延伸機(jī)制包括一延伸指令與一轉(zhuǎn)譯器(translator)。該延伸指令指示一微處理器禁止一指定運(yùn)算的結(jié)果的回寫,其中該延伸指令包括該既有微處理器指令集其中一選取的操作碼,其后則接著一n位的延伸前置碼,而該選取的操作碼指出該延伸指令,該n位的延伸前置碼則指出回寫會(huì)被禁止的一條件。該轉(zhuǎn)譯器接收該延伸指令,并產(chǎn)生一微指令序列,以指示微處理器執(zhí)行該指定運(yùn)算,并指示一回寫控制邏輯于該條件滿足時(shí),排除該結(jié)果的回寫操作。
本發(fā)明的另一目的,在于提供一種為既有微處理器指令集增添可編程結(jié)果回寫能力的指令集延伸模塊。該指令集延伸模塊具有一逸出標(biāo)志(escapetag)、一回寫指定元(write back specifier)及一回寫控制器(write backcontroller)。該逸出標(biāo)志由一轉(zhuǎn)譯邏輯接收,并指出一對(duì)應(yīng)指令的附隨部分指定了一微處理器所要執(zhí)行的一延伸運(yùn)算,其中該逸出標(biāo)志為該既有微處理器指令集內(nèi)的一第一操作碼項(xiàng)目。該回寫指定元耦接至該逸出標(biāo)志,且為該附隨部分其中之一,用于指定關(guān)聯(lián)于該延伸運(yùn)算結(jié)果的一條件。該回寫控制器耦接至該轉(zhuǎn)譯邏輯,用于評(píng)估該條件,若該條件為真,則禁止該結(jié)果的回寫。
本發(fā)明的再一目的,在于提供一種擴(kuò)充微處理器指令集的方法,以提供一指定運(yùn)算結(jié)果的可編程回寫能力。該方法包括提供一延伸指令,該延伸指令包括一延伸標(biāo)志及一延伸前置碼,其中該延伸標(biāo)志為該微處理器指令集其中一第一操作碼;通過該延伸前置碼與該延伸指令的其余部分指定所要執(zhí)行的一運(yùn)算,其中該結(jié)果另外被回寫至一目的緩存器,且該指定操作指示要禁止該結(jié)果的回寫;以及執(zhí)行該運(yùn)算,產(chǎn)生該結(jié)果,并禁止該結(jié)果被回寫至該目的緩存器。
圖號(hào)說明100 指令格式 101 前置碼102 操作碼 103 地址指定元200 8位操作碼圖 201 操作碼值202 操作碼F1H
300 延伸指令格式 301 前置碼302 操作碼303 地址指定元304 延伸指令標(biāo)志 305 延伸前置碼400 8位前置碼圖 401 結(jié)構(gòu)特征500 管線化微處理器501 提取邏輯502 指令高速緩存/外部內(nèi)存503 指令隊(duì)列 504 轉(zhuǎn)譯邏輯505 延伸轉(zhuǎn)譯邏輯 506 微指令隊(duì)列507 執(zhí)行邏輯 508 延伸執(zhí)行邏輯600 延伸前置碼601 備用字段602 結(jié)果控制字段700 延伸前置碼701 備用字段702 溢位碼字段703 符號(hào)碼字段704 進(jìn)位碼字段705 零值碼字段706 校驗(yàn)碼字段800 延伸前置碼900 表格1000 轉(zhuǎn)譯階段邏輯 1001 激活狀態(tài)信號(hào)1002 機(jī)器特定緩存器1003 延伸特征字段1004 指令緩沖器1005 轉(zhuǎn)譯邏輯1006 轉(zhuǎn)譯控制器1007 禁止信號(hào)1008 逸出指令檢測器1009 延伸前置碼譯碼器1010 指令譯碼器1011 控制只讀存儲(chǔ)器1012 微指令緩沖器 1013 操作碼延伸項(xiàng)字段1014 微操作碼字段元1015 目的字段元1016 來源字段 1017 位移字段1100 延伸執(zhí)行邏輯 1101 操作數(shù)緩存器1102 微指令緩存器 1103 操作碼延伸項(xiàng)字段1104 其余字段 1105 操作數(shù)緩存器1106 條件標(biāo)志緩存器1108 結(jié)果總線
1109 算術(shù)邏輯單元1110 結(jié)果緩存器1111 微指令緩沖器1112 回寫邏輯1113 回寫禁止邏輯1114 總線1200--1226對(duì)提供結(jié)果回寫控制的指令進(jìn)行轉(zhuǎn)譯與執(zhí)行的方法的運(yùn)作流程前文已針對(duì)今日的微處理器內(nèi),如何擴(kuò)充其結(jié)構(gòu)特征,以超越相關(guān)指令集能力的技術(shù),作了背景的討論。有鑒于此,在
圖1與圖2,將討論一相關(guān)技術(shù)的例子。此處的討論強(qiáng)調(diào)了微處理器設(shè)計(jì)者所一直面對(duì)的兩難,即一方面,他們想將最新開發(fā)的結(jié)構(gòu)特征納入微處理器的設(shè)計(jì)中,但另一方面,他們又要保留執(zhí)行舊有應(yīng)用程序的能力。在圖1至圖2的例子中,一完全占用的操作碼圖,已把增加新操作碼至該范例結(jié)構(gòu)的可能性排除,因而迫使設(shè)計(jì)者要不就選擇將新特征納入,而犧牲某種程度的舊有軟件兼容性,要不就將結(jié)構(gòu)上的最新進(jìn)展一并放棄,以便維持微處理器與舊有應(yīng)用程序的兼容性。在相關(guān)技術(shù)的討論后,于圖3至圖12,將提供對(duì)本發(fā)明的討論。通過利用一既有但末使用的操作碼作為一延伸指令的前置碼標(biāo)志,本發(fā)明可讓微處理器設(shè)計(jì)者克服已完全使用的指令集結(jié)構(gòu)的限制,在允許他們提供結(jié)果回寫控制能力的同時(shí),也能保留執(zhí)行舊有應(yīng)用程序所需的全部指令與相關(guān)特征。
請(qǐng)參閱圖1,其為一相關(guān)技術(shù)的微處理器指令格式100的方塊圖。該相關(guān)技術(shù)的指令100具有數(shù)量可變的數(shù)據(jù)項(xiàng)101-103,每一項(xiàng)目都設(shè)定成一特定值,合在一起便組成微處理器的一特定指令100。該特定指令100指示微處理器執(zhí)行一特定運(yùn)算,例如將兩操作數(shù)相加,或是將一操作數(shù)從內(nèi)存搬移至微處理器內(nèi)的緩存器。一般而言,指令100內(nèi)的操作碼項(xiàng)目102指定了所要執(zhí)行的特定運(yùn)算,而選用(optional)的地址指定元項(xiàng)目103位于操作碼102之后,以指定關(guān)于該特定運(yùn)算的附加信息,像是如何執(zhí)行該運(yùn)算,操作數(shù)字于何處等等。指令格式100并允許程序員在一操作碼102前加上前置碼項(xiàng)目101。在操作碼102所指定的特定運(yùn)算執(zhí)行時(shí),前置碼101用于指示是否使用特定的結(jié)構(gòu)特征。一般來說,這些結(jié)構(gòu)特征能應(yīng)用于指令集中任何操作碼102所指定運(yùn)算的大部分。例如,現(xiàn)今前置碼101存在于一些能使用不同大小操作數(shù)(如8位、16位、32位)執(zhí)行運(yùn)算的微處理器中。而當(dāng)此類處理器被編程為一預(yù)設(shè)的操作數(shù)大小時(shí)(比如32位),在其個(gè)別指令集中所提供的前置碼101,仍能使程序員依據(jù)各個(gè)指令,選擇性地取代(override)該預(yù)設(shè)的操作數(shù)大小(如為了執(zhí)行16位運(yùn)算)??蛇x擇的操作數(shù)大小僅是結(jié)構(gòu)特征的一例,在許多現(xiàn)代的微處理器中,這些結(jié)構(gòu)特征能應(yīng)用于眾多可由操作碼102加以指定的運(yùn)算(如加、減、乘、布爾邏輯等)。
圖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ù)個(gè)前置碼101,其中兩個(gè)取代了x86微處理器所預(yù)設(shè)的地址/數(shù)據(jù)大小(即操作碼狀態(tài)66H與67H),另一個(gè)則指示微處理器依據(jù)不同的轉(zhuǎn)譯規(guī)則來解譯其后的操作碼字節(jié)102(即前置碼值0FH,其使得轉(zhuǎn)譯操作是依據(jù)所謂的二字節(jié)操作碼規(guī)則來進(jìn)行),其它的前置碼101則使相關(guān)運(yùn)算重復(fù)執(zhí)行,直至重復(fù)條件滿足為止(即REP操作碼F0H、F2H及F3H)。
現(xiàn)請(qǐng)參閱圖2,其顯示一表格200,用于描述一指令集結(jié)構(gòu)的指令201如何對(duì)應(yīng)至圖1指令格式內(nèi)一8位操作碼字節(jié)102的位邏輯狀態(tài)。表格200呈現(xiàn)了一示范性的8位操作碼圖200,其將一8位操作碼項(xiàng)目102所具有的最多256個(gè)值,關(guān)聯(lián)到對(duì)應(yīng)的微處理器操作碼指令201。表格200將操作碼項(xiàng)目102的一特定值,譬如02H,映像至一對(duì)應(yīng)的操作碼指令201(即指令I(lǐng)02 201)。在x86操作碼圖的例子中,為此領(lǐng)域中人所熟知的是,操作碼值14H為映像至x86的進(jìn)位累加(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)為實(shí)際的操作碼值201,其在不同情況下,指定要將特定的結(jié)構(gòu)延伸項(xiàng)應(yīng)用于隨后的操作碼項(xiàng)目102所指定的運(yùn)算。例如,在操作碼14H(正常情況下,為前述的ADC操作碼)前加上前置碼0FH,會(huì)使得x86處理器執(zhí)行一「解壓縮與插入低壓縮的單精度浮點(diǎn)值」(Unpack and Interleave Low PackedSingle-Precision Floating-Point Values)運(yùn)算,而非原本的ADC運(yùn)算。這是因?yàn)椋?dāng)一x86處理器碰到前置碼0FH時(shí),會(huì)采用另一種轉(zhuǎn)譯規(guī)則。諸如此x86例子所述的特征,在現(xiàn)代的微處理器中為部分地致能,此因微處理器內(nèi)的指令轉(zhuǎn)譯/譯碼邏輯是依序解譯一指令100的項(xiàng)目101-103。所以在過去,于指令集結(jié)構(gòu)中使用特定操作碼值作為前置碼101,可允許微處理器設(shè)計(jì)者將不少先進(jìn)的結(jié)構(gòu)特征納入兼容舊有軟件的微處理器的設(shè)計(jì)中,而不會(huì)對(duì)未使用那些特定操作碼狀態(tài)的舊有程序,帶來執(zhí)行上的負(fù)面沖擊。例如,一未曾使用x86操作碼0FH的舊有程序,仍可在今日的x86微處理器上執(zhí)行。而一較新的應(yīng)用程序,借著運(yùn)用x86操作碼0FH作為前置碼101,就能使用許多新進(jìn)納入的x86結(jié)構(gòu)特征,如單一指令多重?cái)?shù)據(jù)(SIMD)運(yùn)算,條件移動(dòng)運(yùn)算等等。
盡管過去已通過指定可用/多余的操作碼值201作為前置碼101(也稱為結(jié)構(gòu)特征標(biāo)志/指針101或逸出指令101),來提供結(jié)構(gòu)特征,但許多指令集結(jié)構(gòu)100在提供功能上的強(qiáng)化時(shí),仍會(huì)因?yàn)橐环浅V苯拥睦碛?,而碰到阻礙所有可用/多余的操作碼值已被用完,也就是,操作碼圖200中的全部操作碼值已被結(jié)構(gòu)化地指定。當(dāng)所有可用的值被分派為操作碼項(xiàng)目102或前置碼項(xiàng)目101時(shí),就沒有剩余的操作碼值可作為納入新特征之用。這個(gè)嚴(yán)重的問題存在于現(xiàn)在的許多微處理器結(jié)構(gòu)中,因而迫使設(shè)計(jì)者得在增添結(jié)構(gòu)特征與保留舊有程序的兼容性兩者間作抉擇。
圖2所示的指令201以一般性的方式表示(也即I24、I86),而非具體指涉實(shí)際的運(yùn)算(如進(jìn)位累加、減、異或)。這是因?yàn)椋谝恍┎煌奈⑻幚砥鹘Y(jié)構(gòu)中,完全占用的操作碼圖200在結(jié)構(gòu)上,已將納入較新進(jìn)展的可能性排除。雖然圖2例子所提到的,是8位的操作碼項(xiàng)目102,熟悉此領(lǐng)域技術(shù)人員仍將發(fā)覺,操作碼102的特定大小,除了作為一特殊情況來討論完全占用的操作碼結(jié)構(gòu)200所造成的問題外,其它方面與問題本身并不相干。因此,一完全占用的6位操作碼圖將有64個(gè)可結(jié)構(gòu)化地指定的操作碼/前置碼201,并將無法提供可用/多余的操作碼值作為擴(kuò)充之用。
另一種做法,則并非將原有指令集廢棄,以一新的格式100與操作碼圖200取代,而是只針對(duì)一部份既有的操作碼201,以新的指令方法(newinstruction meanings)取代,如圖2的操作碼40H至4FH。以這種混合的技術(shù),符合舊有規(guī)則的微處理器就可以兼容舊有軟件模式運(yùn)作,其中操作碼40H-4FH依舊有規(guī)則來解譯,或者以加強(qiáng)模式(enhanced mode)運(yùn)作,其中操作碼40H-4FH依加強(qiáng)的結(jié)構(gòu)規(guī)則來解譯。此項(xiàng)技術(shù)確能允許設(shè)計(jì)者將新特征納入設(shè)計(jì),然而,當(dāng)符合舊有規(guī)則的微處理器于加強(qiáng)模式運(yùn)作時(shí),缺點(diǎn)仍舊存在,因?yàn)槲⑻幚砥鞑荒軋?zhí)行任何使用操作碼40H-4FH的應(yīng)用程序。因此,站在保留舊有軟件兼容性的立場,兼容舊有軟件/加強(qiáng)模式的技術(shù),還是無法接受的。
然而,對(duì)于操作碼空間已完全占用的指令集200,且該空間涵蓋所有于符合舊有規(guī)則的微處理器上執(zhí)行的應(yīng)用程序的情形,本發(fā)明已注意到其中操作碼201的使用狀況,且他們也觀察出,雖然有些指令202是結(jié)構(gòu)化地指定,但末用于能被微處理器執(zhí)行的應(yīng)用程序中。圖2所述的指令I(lǐng)F1 202即為此現(xiàn)象的一例。事實(shí)上,相同的操作碼值202(也即F1H)為映像至未用于x86指令集結(jié)構(gòu)的一有效指令202。雖然該未使用的x86指令202是有效的x86指令202,其指示要在x86微處理器上執(zhí)行一結(jié)構(gòu)化地指定的運(yùn)算,但它卻未使用于任何能在現(xiàn)代x86微處理器上執(zhí)行的既有應(yīng)用程序。這個(gè)特殊的x86指令202被稱為電路內(nèi)仿真斷點(diǎn)(In Circuit Emulation Breakpoint)(也即ICEBKPT,操作碼值為F1H),之前都是專門使用于一種現(xiàn)在已不存在的微處理器仿真設(shè)備中。ICE BKPT 202從未用于電路內(nèi)仿真器的外的應(yīng)用程序中,并且先前使用ICE BKPT 202的電路內(nèi)仿真設(shè)備已不復(fù)存在。因此,在x86的情形下,本發(fā)明已在一完全占用的指令集結(jié)構(gòu)200內(nèi)發(fā)現(xiàn)一樣工具,借著利用一有效但未使用的操作碼202,以允許在微處理器的設(shè)計(jì)中納入先進(jìn)的結(jié)構(gòu)特征,而不需犧牲舊有軟件的兼容性。在一完全占用的指令集結(jié)構(gòu)200中,本發(fā)明利用一結(jié)構(gòu)化地指定但未使用的操作碼202,作為一指針標(biāo)志,以指出其后的一n位前置碼,因此允許微處理器設(shè)計(jì)者可將最多2n個(gè)最新發(fā)展的結(jié)構(gòu)特征,納入微處理器的設(shè)計(jì)中,同時(shí)保留與所有舊有軟件完全的兼容性。
本發(fā)明藉提供一n位的結(jié)果回寫條件指定元前置碼,以使用前置碼標(biāo)志/延伸前置碼的概念,因而可允許程序員將一常用的供微處理器執(zhí)行的運(yùn)算(如加、減、布爾運(yùn)算、操作數(shù)操作等)編程,并在相同指令內(nèi),對(duì)于執(zhí)行該常用運(yùn)算所產(chǎn)生的結(jié)果,致能/禁止其回寫操作(也即更新)。此處所討論的其它實(shí)施例,則使程序員能在所有條件下都排除該結(jié)果的回寫,或是指定一回寫會(huì)被禁止的條件,例如該結(jié)果導(dǎo)致一進(jìn)位位的產(chǎn)生時(shí)。本發(fā)明現(xiàn)將參照?qǐng)D3至圖12進(jìn)行討論。
現(xiàn)請(qǐng)參閱圖3,其為本發(fā)明的延伸指令格式300的方塊圖。與圖1所討論的格式100非常近似,該延伸指令格式300具有數(shù)量可變的指令項(xiàng)目301-305,每一項(xiàng)目設(shè)定為一特定值,集合起來便組成微處理器的一特定指令300。該特定指令300指示微處理器執(zhí)行一特定運(yùn)算,像是將兩操作數(shù)相加,或是將一操作數(shù)從內(nèi)存搬移至微處理器的緩存器內(nèi)。一般而言,指令300的操作碼項(xiàng)目302指定了所要執(zhí)行的特定運(yùn)算,而選用的地址指定元項(xiàng)目303則位于操作碼302后,以指定該特定運(yùn)算的相關(guān)附加信息,像是如何執(zhí)行該運(yùn)算,操作數(shù)字于何處等等。指令格式300也允許程序員在一操作碼302前加上前置碼項(xiàng)目301。在操作碼302所指定的特定運(yùn)算執(zhí)行時(shí),前置碼項(xiàng)目301用來指示是否要使用既有的結(jié)構(gòu)特征。
然而,本發(fā)明的延伸指令300為前述圖1指令格式100的一超集(superset),其具有兩個(gè)附加項(xiàng)目304與305,可被選擇性作為指令延伸項(xiàng),并置于一格式化延伸指令300中所有其余項(xiàng)目301-303之前。這兩個(gè)附加項(xiàng)目304與305用于致能/禁止在一指定條件下所產(chǎn)生結(jié)果的回寫。該指定條件被指定為關(guān)聯(lián)于一指定運(yùn)算結(jié)果的數(shù)個(gè)條件碼的一子集合。此兩個(gè)附加項(xiàng)目304與305用于將選擇性的結(jié)果回寫特征納入,其中該些特征并無法在一完全占用的指令集結(jié)構(gòu)內(nèi)加以指定。選用項(xiàng)目304與305為一延伸指令標(biāo)志304與一延伸回寫指定元前置碼305。該延伸指令標(biāo)志304為一微處理器指令集內(nèi)另一依據(jù)結(jié)構(gòu)所指定的操作碼。在一x86的實(shí)施例中,該延伸指令標(biāo)志304,或稱逸出標(biāo)志304,為操作碼狀態(tài)F1H,其為早先使用的ICE BKPT指令。逸出標(biāo)志304向微處理器邏輯指出,該回寫指定元前置碼305或稱延伸特征指定元305跟隨其后,其中該回寫指定元305指定了對(duì)應(yīng)于一指定運(yùn)算結(jié)果的一條件,在該條件下該結(jié)果的回寫會(huì)被排除。在一具體實(shí)施例中,逸出標(biāo)志304指出,一對(duì)應(yīng)延伸指令300的附隨部分301-303及305指定了微處理器所要執(zhí)行的延伸運(yùn)算。n位的延伸前置碼305,或稱回寫指定元305,指出了該結(jié)果的回寫會(huì)被禁止的一條件。于該結(jié)果產(chǎn)生后,若該條件滿足,則微處理器中的回寫控制邏輯便禁止該結(jié)果的回寫。
此處將本發(fā)明的條件執(zhí)行延伸技術(shù)作個(gè)概述。一指令延伸項(xiàng)以一既有指令集結(jié)構(gòu)其中一操作碼/指令304與一延伸前置碼305進(jìn)行組態(tài)。所選取的操作碼指令作為一指針304,以指出指令300是一延伸特征指令300(也即,其指定了微處理器結(jié)構(gòu)的延伸項(xiàng)),該延伸前置碼305則指定關(guān)聯(lián)于一指定運(yùn)算結(jié)果的一條件。若該條件為真,則于該結(jié)果產(chǎn)生時(shí),排除該條件的更新。在一具體實(shí)施例中,延伸前置碼305具8位的大小,最多可指定256個(gè)不同的條件碼組合。n位前置碼的實(shí)施例,則最多可指定2n種不同的條件碼組合。
現(xiàn)請(qǐng)參閱圖4,一表格400顯示依據(jù)本發(fā)明,條件碼更新控制延伸項(xiàng)如何映像至一8位延伸前置碼實(shí)施例的位邏輯狀態(tài)。類似于圖2所討論的操作碼圖200,圖4的表格400呈現(xiàn)出一8位回寫指定元的前置碼圖400的范例,其將一8位延伸前置碼項(xiàng)目305的最多256個(gè)值,關(guān)聯(lián)到用于排除一結(jié)果的回寫的對(duì)應(yīng)條件401(如E34、E4D等)。在一x86的具體實(shí)施例中,本發(fā)明的8位延伸特征前置碼305提供給指定元401(也即EOO-EFF)使用,該些指定元乃現(xiàn)行x86指令集結(jié)構(gòu)所未能提供的。
圖4所示的延伸特征401以一般性的方式表示,而非具體指涉實(shí)際的特征,此因本發(fā)明的技術(shù)可應(yīng)用于各種不同的結(jié)構(gòu)延伸項(xiàng)401與特定的指令集結(jié)構(gòu)。熟悉此領(lǐng)域技術(shù)人員將發(fā)覺,許多不同的結(jié)構(gòu)特征401,其中一些已于上文提及,可依此處所述的逸出標(biāo)志304/延伸前置碼305技術(shù)將其納入一既有的指令集。圖4的8位前置碼實(shí)施例提供了最多256個(gè)不同的特征401,而一n位前置碼實(shí)施例則具有最多2n個(gè)不同特征401的編程選擇。
在對(duì)應(yīng)不同類型的條件碼儲(chǔ)存與表示方式的實(shí)施例中,這些類型對(duì)許多現(xiàn)代的微處理器而言是很常見的,條件的組合可被指定用于禁止結(jié)果的回寫,這些組合包括一結(jié)果的邊界屬性,如等于零、不等于零、偶校驗(yàn)(even parity)、奇校驗(yàn)(odd parity)、帶負(fù)號(hào)(sign)、不帶負(fù)號(hào)、溢位(overflow)、未溢位、進(jìn)位(carry)、未進(jìn)位等等。在許多此種微處理器中,一條件碼狀態(tài)項(xiàng)目(也即緩存器)以數(shù)個(gè)條件碼位(或標(biāo)志)加以組態(tài),其中每一位代表一最近產(chǎn)生的結(jié)果是否已超過某一結(jié)果邊界條件,像是產(chǎn)生一進(jìn)位位,或有一符號(hào)位顯示該結(jié)果為一負(fù)數(shù)。然而,前述的特定條件碼并未將本發(fā)明的范圍限制于一特定的結(jié)果條件碼集合。前述實(shí)施例可作為范例,用來解說依本發(fā)明,一條件碼指定元前置碼305如何被編碼,以在特定條件碼狀態(tài)所反映的一條件滿足時(shí),排除一結(jié)果的回寫操作。熟悉此領(lǐng)域技術(shù)人員將可察覺,一特殊的回寫指定元前置碼305的組態(tài),依據(jù)一對(duì)應(yīng)微處理器中條件碼如何表示與儲(chǔ)存而定。
現(xiàn)請(qǐng)參閱圖5,其為解說本發(fā)明用于控制于特定條件下的運(yùn)算結(jié)果的回寫的管線化微處理器500的方塊圖。微處理器500具有三個(gè)明顯的階段類型提取、轉(zhuǎn)譯及執(zhí)行。提取階段具有提取邏輯501,可從指令高速緩存502或外部內(nèi)存502提取指令。所提取的指令經(jīng)由指令隊(duì)列503送至轉(zhuǎn)譯階段。轉(zhuǎn)譯階段具有轉(zhuǎn)譯邏輯504,耦接至一微指令隊(duì)列506。轉(zhuǎn)譯邏輯504包括延伸轉(zhuǎn)譯邏輯505。執(zhí)行階段則有執(zhí)行邏輯507,其內(nèi)具有延伸執(zhí)行邏輯508。
依據(jù)本發(fā)明,于運(yùn)作時(shí),提取邏輯501從指令高速緩存/外部內(nèi)存502提取格式化指令,并將這些指令依其執(zhí)行順序放入指令隊(duì)列503中。接著從指令隊(duì)列503提取這些指令,送至轉(zhuǎn)譯邏輯504。轉(zhuǎn)譯邏輯504將每一送入的指令轉(zhuǎn)譯/譯碼為一對(duì)應(yīng)的微指令序列,以指示微處理器500去執(zhí)行這些指令所指定的運(yùn)算。依本發(fā)明,延伸轉(zhuǎn)譯邏輯505檢測那些具有延伸前置碼標(biāo)志的指令,以進(jìn)行對(duì)應(yīng)回寫指定元前置碼的轉(zhuǎn)譯/譯碼。在一x86的實(shí)施例中,延伸轉(zhuǎn)譯邏輯505組態(tài)為檢測其值為F1H的延伸前置碼標(biāo)志,其為x86的ICE BKPT操作碼。微指令字段元?jiǎng)t提供于微指令隊(duì)列506中,以指定一條件,于該條件下,一關(guān)聯(lián)結(jié)果被排除回寫至其目的緩存器。
微指令從微指令隊(duì)列506被送至執(zhí)行邏輯507,由延伸執(zhí)行邏輯508檢測具有選擇性條件碼回寫特征的微指令,此處的回寫特征依微指令字段元的指示來致能。延伸執(zhí)行邏輯508執(zhí)行微指令所指定的運(yùn)算,并產(chǎn)生對(duì)應(yīng)的結(jié)果。在該對(duì)應(yīng)結(jié)果產(chǎn)生后,延伸執(zhí)行邏輯508評(píng)估該對(duì)應(yīng)結(jié)果的邊界條件,而該對(duì)應(yīng)結(jié)果的回寫依據(jù)微指令字段元所指出的條件是否滿足,來決定是否禁止。在一具體實(shí)施例中,該條件總是被指定為真,以在排除該結(jié)果的回寫前,排除條件碼的檢查操作。
熟悉此領(lǐng)域技術(shù)人員將發(fā)現(xiàn),圖5所示的微處理器500為現(xiàn)代的管線化微處理器50經(jīng)過簡化的結(jié)果。事實(shí)上,現(xiàn)代的管線化微處理器500最多可包括有20至30個(gè)不同的管線階段。然而,這些階段可概括地歸類為方塊圖所示的三個(gè)階段,因此,圖5的方塊圖500可用于點(diǎn)明前述本發(fā)明實(shí)施例所需的必要組件。為了簡明起見,微處理器500中無關(guān)的組件并未顯示出來。
現(xiàn)請(qǐng)參閱圖6,其為本發(fā)明用于選擇性地控制結(jié)果回寫的延伸前置碼600的一具體實(shí)施例的方塊圖。該延伸前置碼600為一8位前置碼600,且具有一包括位0的全域結(jié)果控制(results control,RC)字段602與一包括位[71]的備用字段601。將RC字段602設(shè)為真,會(huì)使一符合舊有規(guī)則的微處理器禁止一相關(guān)結(jié)果的回寫,而不論該結(jié)果的值為何。
圖7為本發(fā)明用于選擇性地控制結(jié)果回寫的延伸前置碼700的另一具體實(shí)施例的方塊圖。該延伸前置碼700具一校驗(yàn)碼(parity code,PC)字段706、一零值碼(zero code,ZC)字段705、一進(jìn)位碼(carry code,CC)字段704、一符號(hào)碼(sign code,SC)字段703、一溢位碼(overflow code,OC)字段702以及一備用字段701。條件碼字段702至706對(duì)應(yīng)于可在許多現(xiàn)代的微處理器中發(fā)現(xiàn)的典型的結(jié)果條件碼標(biāo)志。將這些位702至706的任一個(gè)設(shè)為真,且若微處理器的條件碼緩存器的對(duì)應(yīng)標(biāo)志于一相關(guān)結(jié)果產(chǎn)生后被設(shè)定,則將使一符合舊有規(guī)則的微處理器禁止該相關(guān)結(jié)果的回寫。
圖8為本發(fā)明用于選擇性地控制結(jié)果回寫的延伸前置碼800的再一具體實(shí)施例的方塊圖。該延伸前置碼800具一包括位[70]的條件指定元字段。于該字段中指定了一條件,若該條件為真,則結(jié)果的回寫將被排除。在一具體實(shí)施例中,該指定元字段800指定了條件碼標(biāo)志的一邏輯組合?;蛘撸侄?00指定了該微處理器的另一狀態(tài),例如一結(jié)構(gòu)緩存器的狀態(tài)、中斷狀態(tài)等等。若結(jié)果產(chǎn)生后,該指定條件為真,則該結(jié)果的回寫被阻止。圖9為一表格900,顯示對(duì)應(yīng)于圖8條件指定元字段800四個(gè)較低位的條件范例。依此,一結(jié)果的條件碼狀態(tài)的邏輯組合被編碼成該指定元800的較低四位的狀態(tài)。通過將指定元編碼成圖9所示,不相等的狀態(tài)可被組態(tài)為大于或等于(狀態(tài)1101)及不高于(狀態(tài)0110)。表格900僅描述了條件指定元800的范例,以突顯本發(fā)明的彈性,但并非是對(duì)指定元800的任何狀態(tài)的定義加以限制。
現(xiàn)請(qǐng)參閱圖10,其為圖5的微處理器內(nèi)轉(zhuǎn)譯階段邏輯1000的詳細(xì)的方塊圖。轉(zhuǎn)譯階段邏輯1000具有一指令緩沖器1004,依本發(fā)明,其提供延伸指令至轉(zhuǎn)譯邏輯1005。轉(zhuǎn)譯邏輯1005耦接至一具有一延伸特征字段1003的機(jī)器特定緩存器(machine specific register)1002。轉(zhuǎn)譯邏輯1005具一轉(zhuǎn)譯控制器1006,其提供一禁止信號(hào)1007至一逸出指令檢測器1008及一延伸前置碼譯碼器1009。逸出指令檢測器1008耦接至延伸前置碼譯碼器1009及一指令譯碼器1010。延伸前置碼譯碼器1009與指令譯碼邏輯1010存取一控制只讀存儲(chǔ)器(ROM)1011,其中儲(chǔ)存了對(duì)應(yīng)至某些延伸指令的樣板(template)微指令序列。轉(zhuǎn)譯邏輯1005也包括一微指令緩沖器1012,其具有一操作碼延伸項(xiàng)字段1013、一微操作碼字段元1014、一目的字段元1015、一來源字段1016以及一位移字段1017。
運(yùn)作上,在微處理器通電激活期間,機(jī)器特定緩存器1002內(nèi)的延伸字段1003的狀態(tài)通過信號(hào)激活狀態(tài)(signal power-up state)1001決定,以指出該特定微處理器是否能轉(zhuǎn)譯與執(zhí)行本發(fā)明的延伸指令。在一具體實(shí)施例中,信號(hào)1001從一特征控制緩存器(圖上未顯示)導(dǎo)出,該特征控制緩存器則讀取一于制造時(shí)即已組態(tài)的熔合數(shù)組(fuse array)(未顯示)。機(jī)器特定緩存器1002將延伸特征字段1003的狀態(tài)送至轉(zhuǎn)譯控制器1006。轉(zhuǎn)譯控制邏輯1006則控制從指令緩沖器1004所提取的指令,要依照延伸選擇性結(jié)果回寫控制轉(zhuǎn)譯規(guī)則或既有轉(zhuǎn)譯規(guī)則進(jìn)行解譯。提供這樣的控制特征,可允許監(jiān)督應(yīng)用程序(如BIOS)致能/禁止微處理器的延伸執(zhí)行特征。若延伸特征被禁止,則具有被選為延伸特征標(biāo)志的操作碼狀態(tài)的指令,將依既有轉(zhuǎn)譯規(guī)則進(jìn)行轉(zhuǎn)譯。在一x86的具體實(shí)施例中,選取操作碼狀態(tài)F1H作為標(biāo)志,則在常用的轉(zhuǎn)譯規(guī)則下,遇到F1H將造成不合法的指令異常(exception)。然而,在延伸轉(zhuǎn)譯規(guī)則下,若遇到標(biāo)志,則會(huì)被逸出指令檢測器1008檢測出來。逸出指令檢測器1008因而于延伸前置碼譯碼器1009轉(zhuǎn)譯/譯碼標(biāo)志之后的延伸回寫指定元前置碼時(shí),禁止指令譯碼器1010的運(yùn)作,并于轉(zhuǎn)譯/譯碼該延伸指令的剩余部分時(shí),致能指令譯碼器1010。某些特定指令將導(dǎo)致對(duì)控制ROM 1011的存取,以獲取對(duì)應(yīng)的微指令序列樣板。微指令緩沖器1012的操作碼延伸項(xiàng)字段1013由前置碼譯碼器1009進(jìn)行組態(tài),以指定一條件,于該條件下一對(duì)應(yīng)運(yùn)算的結(jié)果的回寫將被排除。其它緩沖器字段1014-1017則指定該對(duì)應(yīng)運(yùn)算,并由指令譯碼器1010進(jìn)行組態(tài)。經(jīng)過組態(tài)的微指令1012被送至一微指令隊(duì)列(未顯示于圖中),由處理器進(jìn)行后續(xù)執(zhí)行。
現(xiàn)請(qǐng)參閱圖11,其為圖5微處理器內(nèi)的延伸執(zhí)行邏輯1100的方塊圖。該延伸執(zhí)行邏輯1100具一算術(shù)邏輯單元(arithematic logic unit,ALU)1109,其耦接至一條件碼(或標(biāo)志)緩存器1106與一結(jié)果緩沖器1110。兩操作數(shù)0PERAND 1與OPERAND 2,由ALU 1109從操作數(shù)緩存器1101與1105提取出來。一微指令緩存器1102提供一微指令給ALU 1109。微指令緩存器1102具有一操作碼延伸項(xiàng)字段1103與一其余字段1104。微指令緩存器1102也耦接至一微指令緩沖器1111。結(jié)果緩存器1110與微指令緩沖器1111的內(nèi)容被送至回寫邏輯1112?;貙戇壿?112包括延伸回寫禁止邏輯(extended write backsuppression logic)1113,其存取標(biāo)志緩存器1106?;貙戇壿?112并經(jīng)由總線1114將結(jié)果輸出至一緩存器檔案(圖上未顯示)中的緩存器。
運(yùn)作上,當(dāng)一使用選擇性結(jié)果回寫控制特征的延伸指令,依本發(fā)明被轉(zhuǎn)譯成一微指令序列時(shí),延伸微指令以及緩存器1101與1105內(nèi)的可用操作數(shù)都經(jīng)由微指令緩存器1102,被送至延伸執(zhí)行邏輯1100。操作碼延伸項(xiàng)字段1103指定了一條件,于該條件下一結(jié)果的回寫操作被排除,其中該結(jié)果對(duì)應(yīng)于一運(yùn)算,該運(yùn)算由其余字段1104所指定,并使用所提供的操作數(shù)1101、1105。于是,ALU 1109執(zhí)行該指定運(yùn)算,并產(chǎn)生該結(jié)果,該結(jié)果則被送至結(jié)果緩存器1110。ALU 1109也評(píng)估該結(jié)果的邊界條件,并將標(biāo)志緩存器1106中的可用條件標(biāo)志加以更新。結(jié)果緩存器1110與微指令緩沖器1111的內(nèi)容與一管線時(shí)脈信號(hào)(圖中未顯示)同步,經(jīng)由管線送至回寫邏輯1112。微指令緩沖器1111的內(nèi)容指定了該緩存器檔案中一目的緩存器,供回寫該結(jié)果之用?;貙懡惯壿?113存取條件標(biāo)志緩存器1106,以判斷操作碼延伸項(xiàng)字段1103中所指定的條件是否為真。若該條件為真,則結(jié)果緩存器1110內(nèi)容的回寫會(huì)被禁止。若該條件為假,則回寫禁止邏輯1113指示回寫邏輯1112經(jīng)由總線1114將結(jié)果1110回寫至該緩存器檔案中的目的緩存器。
現(xiàn)請(qǐng)參閱圖12,其為描述本發(fā)明對(duì)提供結(jié)果回寫控制的指令進(jìn)行轉(zhuǎn)譯與執(zhí)行的方法的運(yùn)作流程圖1200。流程開始于方塊1202,其中一個(gè)組態(tài)有可編程結(jié)果回寫特征的延伸指令的程序,被送至微處理器。流程接著進(jìn)行至方塊1204。
于方塊1204中,下一個(gè)指令從高速緩存/外部內(nèi)存提取。流程接著進(jìn)行至判斷方塊1206。
于判斷方塊1206中,對(duì)在方塊1204中所提取的下個(gè)指令進(jìn)行檢查,以判斷是否包括一延伸逸出標(biāo)志/碼。若否,則流程進(jìn)行至方塊1212。若檢測到該延伸逸出碼,則流程進(jìn)行至方塊1208。
于方塊1208中,由于在方塊1206中已檢測到一延伸逸出標(biāo)志,轉(zhuǎn)譯/譯碼在一延伸指定元前置碼上執(zhí)行,以決定一條件碼的組合,其若為真,則將排除一所產(chǎn)生的結(jié)果被回寫至目的緩存器。流程接著進(jìn)行到方塊1210。
于方塊1210中,一微指令序列的對(duì)應(yīng)字段被組態(tài)為指出該延伸前置碼所指定該些條件碼的該組合。流程接著進(jìn)行至方塊1212。
于方塊1212中,該指令的其余部分(如前置碼項(xiàng)目、操作碼、地址指定元)被轉(zhuǎn)譯/譯碼,以判斷所要執(zhí)行的運(yùn)算及相關(guān)操作數(shù)的屬性。流程接著進(jìn)行至方塊1214。
于方塊1214中,一微指令序列的其余字段被組態(tài)為指定所指定的運(yùn)算及其操作數(shù)屬性。流程接著進(jìn)行至方塊1216。
于方塊1216中,該微指令序列,其包括方塊1210中所組態(tài)的操作碼延伸項(xiàng)字段以及方塊1214中所組態(tài)的其余字段,被送至一微指令隊(duì)列,由微處理器執(zhí)行。流程接著進(jìn)行至方塊1218。
于方塊1218中,該微指令序列由本發(fā)明的延伸執(zhí)行邏輯進(jìn)行提取。流程接著進(jìn)行至方塊1220。
于方塊1220中,延伸執(zhí)行邏輯執(zhí)行該指定運(yùn)算,并產(chǎn)生該結(jié)果。流程接著進(jìn)行至判斷方塊1222。
于判斷方塊1122中,依據(jù)該微指令序列中所指定的條件碼組合,進(jìn)行一評(píng)估,以判斷該結(jié)果的回寫是否要被禁止。若該條件碼的組合為真,則流程進(jìn)行至方塊1226。若該條件碼組合為假,則流程進(jìn)行至方塊1224。
于方塊1224中,該結(jié)果被回寫至其相關(guān)的目的緩存器。流程接著進(jìn)行至方塊1226。
于方塊1226中,本方法完成。
雖然本發(fā)明及其目的、特征與優(yōu)點(diǎn)已詳細(xì)敘述,其它實(shí)施例也可包括在本發(fā)明的范圍內(nèi)。例如,本發(fā)明已就如下的技術(shù)加以敘述利用已完全占用的指令集結(jié)構(gòu)內(nèi)單一、未使用的操作碼狀態(tài)作為標(biāo)志,以指出其后的延伸特征前置碼。但本發(fā)明的范圍就任一方面來看,并不限于已完全占用的指令集結(jié)構(gòu),或未使用的指令,或是單一標(biāo)志。相反地,本發(fā)明涵蓋了未完全映像的指令集、具已使用操作碼的實(shí)施例以及使用一個(gè)以上的指令標(biāo)志的實(shí)施例。例如,考慮一沒有未使用操作碼狀態(tài)的指令集結(jié)構(gòu)。本發(fā)明的一具體實(shí)施例包括了選取一作為逸出標(biāo)志的操作碼狀態(tài),其中選取標(biāo)準(zhǔn)依市場因素而決定。另一具體實(shí)施例則包括使用操作碼的一特殊組合作為標(biāo)志,如操作碼狀態(tài)7FH的連續(xù)出現(xiàn)。因此,本發(fā)明的本質(zhì)在于使用一標(biāo)志序列,其后則為一n位的延伸前置碼,允許程序員對(duì)于一延伸指令的其余部分所指定的運(yùn)算,排除其執(zhí)行結(jié)果的回寫,其中該結(jié)果的回寫依一指定條件是否滿足而定。
此外,本發(fā)明已通過一具有一組條件碼或標(biāo)志的微處理器來作為范例,該組條件碼指出一所產(chǎn)生結(jié)果的邊界條件,包括校驗(yàn)、溢位、正負(fù)號(hào)及零。雖然這些類型的條件指針在今日仍廣為使用,但本發(fā)明并不僅限于應(yīng)用在這些類型的條件。例如,本發(fā)明另外的實(shí)施例即包括其它的指定條件,像是一特殊緩存器內(nèi)容的狀態(tài)、一通訊端口或其它I/O裝置是否使用中、是否有可用的內(nèi)存或高速緩存空間等等。
再者,雖然上文利用微處理器為例來解說本發(fā)明及其目的、特征和優(yōu)點(diǎn),熟悉此領(lǐng)域技術(shù)人員仍可察覺,本發(fā)明的范圍并不限于微處理器的結(jié)構(gòu),而可涵蓋所有形式的可編程裝置,如信號(hào)處理器、工業(yè)用控制器(industrialcontroller)、陣列處理機(jī)及其它同類裝置。
總之,以上所述僅為本發(fā)明的較佳實(shí)施例而已,不能限定本發(fā)明所實(shí)施的范圍。凡依本發(fā)明權(quán)利要求所作的等效變化與修飾,都應(yīng)仍屬于本發(fā)明專利涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種選擇性控制結(jié)果回寫的微處理器裝置,包括一轉(zhuǎn)譯邏輯,用于將一延伸指令轉(zhuǎn)譯成對(duì)應(yīng)的微指令,其中該延伸指令包括一延伸前置碼,用于禁止該結(jié)果的回寫,該結(jié)果對(duì)應(yīng)于一指定運(yùn)算的執(zhí)行;以及一延伸前置碼標(biāo)志,用于指出該延伸前置碼,其中該延伸前置碼標(biāo)志為一微處理器指令集內(nèi)另一依據(jù)結(jié)構(gòu)所指定的操作碼;以及一延伸執(zhí)行邏輯,耦接至該轉(zhuǎn)譯邏輯,用于接收該對(duì)應(yīng)的微指令,執(zhí)行該指定運(yùn)算以產(chǎn)生該結(jié)果,并排除該結(jié)果的回寫。
2.如權(quán)利要求1所述的微處理器裝置,其中該對(duì)應(yīng)的微指令包括一微操作碼字段與一微操作碼延伸項(xiàng)字段。
3.如權(quán)利要求2所述的微處理器裝置,其中該延伸執(zhí)行邏輯使用該微操作碼延伸項(xiàng)字段,以決定要排除該結(jié)果的回寫的條件,且其中該延伸執(zhí)行邏輯使用該微操作碼字段以決定所要執(zhí)行的該指定運(yùn)算,以產(chǎn)生該結(jié)果。
4.如權(quán)利要求3所述的微處理器裝置,其中該延伸執(zhí)行邏輯包括一回寫禁止邏輯,組態(tài)為于該結(jié)果產(chǎn)生后,評(píng)估該條件,并組態(tài)為若該條件為真,即排除該結(jié)果的回寫。
5.如權(quán)利要求1所述的微處理器裝置,其中該轉(zhuǎn)譯邏輯包括一逸出指令檢測邏輯,用于檢測該延伸前置碼標(biāo)志;以及一延伸前置碼譯碼邏輯,耦接至該逸出指令檢測邏輯,用于轉(zhuǎn)譯該延伸前置碼,并對(duì)該對(duì)應(yīng)微指令內(nèi)的一微操作碼延伸項(xiàng)字段進(jìn)行組態(tài),該微操作碼延伸項(xiàng)字段則指定要排除該結(jié)果的回寫的該條件。
6.如權(quán)利要求5所述的微處理器裝置,其中該轉(zhuǎn)譯邏輯還包括一指令譯碼邏輯,用于組態(tài)該對(duì)應(yīng)微指令內(nèi)的其它字段元,該其它字段元依據(jù)該指令集指定該指定運(yùn)算。
7.一種為一既有微處理器指令集增添結(jié)果回寫控制特征的延伸機(jī)制,包括一延伸指令,組態(tài)為指示一微處理器禁止一指定運(yùn)算的一結(jié)果的回寫,其中該延伸指令包括該既有微處理器指令集其中一選取的操作碼,其后則接著一n位的延伸前置碼,該所選取的操作碼指出該延伸指令,而該n位延伸前置碼則指出回寫會(huì)被禁止的一條件;以及一轉(zhuǎn)譯器,組態(tài)為接收該延伸指令,并產(chǎn)生一微指令序列,以指示該微處理器執(zhí)行該指定運(yùn)算,并指示一回寫控制邏輯于該條件滿足時(shí),排除該結(jié)果的回寫操作。
8.如權(quán)利要求7所述的延伸機(jī)制,其中該延伸指令還包括延伸指令項(xiàng)目,組態(tài)為指定該指定運(yùn)算。
9.如權(quán)利要求8所述的延伸機(jī)制,其中該延伸指令項(xiàng)目依照該既有微處理器指令集進(jìn)行組態(tài)。
10.如權(quán)利要求7所述的延伸機(jī)制,其中該條件經(jīng)由該指定運(yùn)算的執(zhí)行而滿足。
11.如權(quán)利要求7所述的延伸機(jī)制,其中該轉(zhuǎn)譯器包括一逸出指令檢測器,用于檢測該延伸指令內(nèi)的該選取的操作碼;以及一延伸前置碼譯碼器,耦接至該逸出指令檢測器,用于轉(zhuǎn)譯該n位的延伸前置碼,并產(chǎn)生指定該條件的該微指令序列內(nèi)一微操作碼延伸項(xiàng)字段。
12.一種為一既有微處理器指令集增添可編程結(jié)果回寫能力的指令集延伸模塊,包括一逸出標(biāo)志,由一轉(zhuǎn)譯邏輯接收,用于指出一對(duì)應(yīng)指令的附隨部分指定了一微處理器所要執(zhí)行的一延伸運(yùn)算,其中該逸出標(biāo)志為該既有微處理器指令集內(nèi)的一第一操作碼項(xiàng)目;一回寫指定元,耦接至該逸出標(biāo)志,且為該附隨部分其中之一,用于指定一關(guān)聯(lián)于該延伸運(yùn)算的一結(jié)果的條件;以及一回寫控制器,耦接至該轉(zhuǎn)譯邏輯,用于評(píng)估該條件,且若該條件為真,則禁止該結(jié)果的回寫。
13.如權(quán)利要求12所述的指令集延伸模塊,其中該轉(zhuǎn)譯邏輯將該逸出標(biāo)志與該附隨部分轉(zhuǎn)譯成對(duì)應(yīng)的微指令,該對(duì)應(yīng)的微指令指示一延伸執(zhí)行邏輯去執(zhí)行該延伸運(yùn)算。
14.如權(quán)利要求12所述的指令集延伸模塊,其中該轉(zhuǎn)譯邏輯包括一逸出標(biāo)志檢測邏輯,用于檢測該逸出標(biāo)志,并指示該附隨部分的轉(zhuǎn)譯操作需依據(jù)延伸轉(zhuǎn)譯規(guī)則(conventions);以及一譯碼邏輯,耦接至該逸出標(biāo)志檢測邏輯,用于依據(jù)該既有微處理器指令集的規(guī)則,執(zhí)行微處理器指令的轉(zhuǎn)譯操作,并依據(jù)該延伸轉(zhuǎn)譯規(guī)則執(zhí)行該對(duì)應(yīng)指令的轉(zhuǎn)譯,以允許該結(jié)果的可編程回寫。
15.一種擴(kuò)充一微處理器指令集的方法,以提供一指定運(yùn)算的一結(jié)果可編程回寫功能,該方法包括提供一延伸指令,該延伸指令包括一延伸標(biāo)志及一延伸前置碼,其中該延伸標(biāo)志為該微處理器指令集其中一第一操作碼;通過該延伸前置碼與該延伸指令的其余部分指定所要執(zhí)行的一運(yùn)算,其中該結(jié)果另外被回寫至一目的緩存器,且其中該指定操作指示要禁止該結(jié)果的回寫;以及執(zhí)行該運(yùn)算,產(chǎn)生該結(jié)果,并禁止該結(jié)果被回寫至該目的緩存器。
16.如權(quán)利要求15所述的方法,其中該指定所要執(zhí)行的運(yùn)算的操作包括首先指定該運(yùn)算,其中該首先指定的操作包括了使用該微處理器指令集中一第二操作碼。
17.如權(quán)利要求15所述的方法,還包括將該延伸指令轉(zhuǎn)譯成微指令,該微指令在執(zhí)行該運(yùn)算后,指示一延伸執(zhí)行邏輯去禁止該結(jié)果的回寫。
18.如權(quán)利要求17所述的方法,其中該轉(zhuǎn)譯延伸指令的操作包括于一轉(zhuǎn)譯邏輯內(nèi),檢測該延伸標(biāo)志;以及依照延伸轉(zhuǎn)譯規(guī)則譯碼該延伸前置碼與該延伸指令的其余部分,該延伸轉(zhuǎn)譯規(guī)則為一既有的微處理器結(jié)構(gòu)提供依常用轉(zhuǎn)譯規(guī)則所無法提供的可編程結(jié)果回寫能力。
全文摘要
本發(fā)明涉及一種選擇性地控制結(jié)果回寫的裝置及方法。該裝置包括一轉(zhuǎn)譯邏輯與一延伸執(zhí)行邏輯。該轉(zhuǎn)譯邏輯將一延伸指令轉(zhuǎn)譯為對(duì)應(yīng)的微指令。該延伸指令具一延伸前置碼與一延伸前置碼標(biāo)志。該延伸前置碼禁止該結(jié)果的回寫,其中該結(jié)果對(duì)應(yīng)于一指定運(yùn)算的執(zhí)行。該延伸前置碼標(biāo)志指出該延伸前置碼,且為一微處理器指令集內(nèi)另一依據(jù)結(jié)構(gòu)所指定的操作碼。該延伸執(zhí)行邏輯耦接至轉(zhuǎn)譯邏輯,用于接收該對(duì)應(yīng)的微指令,并執(zhí)行該指定運(yùn)算以產(chǎn)生該結(jié)果,并排除該結(jié)果的回寫。
文檔編號(hào)G06F9/22GK1414465SQ0215056
公開日2003年4月30日 申請(qǐng)日期2002年11月13日 優(yōu)先權(quán)日2002年5月9日
發(fā)明者G·葛蘭·亨利, 羅德·E·胡克, 泰瑞·派克斯 申請(qǐng)人:智慧第一公司