国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      增加微處理器的緩存器數(shù)量的機(jī)制的制作方法

      文檔序號(hào):6599704閱讀:357來(lái)源:國(guó)知局
      專利名稱:增加微處理器的緩存器數(shù)量的機(jī)制的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及微電子的領(lǐng)域,尤指一種能將附加的可尋址(addressable)緩存器納入一既有微處理器指令集結(jié)構(gòu)的技術(shù)。
      隨著過去三十年來(lái)使用上的爆炸性成長(zhǎng),在技術(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)算(如數(shù)字信號(hào)處理功能與其它多媒體運(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ā)式存取(burst access)機(jī)制、分支預(yù)測(cè)(branch predication)以及假想執(zhí)行(speculative execution)??傊?,比起30年前剛出現(xiàn)時(shí),現(xiàn)在的微處理器呈現(xiàn)出驚人的復(fù)雜度,且具備了強(qiáng)大的能力。
      但與許多其它產(chǎn)品不同的是,有另一非常重要的因素已限制了、并持續(xù)限制著微處理器結(jié)構(gòu)的演進(jìn)?,F(xiàn)今微處理器會(huì)如此復(fù)雜,一大部分得歸因于這項(xiàng)因素,即舊有軟件的兼容性。在市場(chǎ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ā)展但仍困擾著微處理器設(shè)計(jì)者的領(lǐng)域,即是微處理器內(nèi)可尋址緩存器的數(shù)量與使用。早期的微處理器設(shè)計(jì)提供了一或兩個(gè)一般用途的8位緩存器。之后,隨著應(yīng)用程序內(nèi)的演算日趨復(fù)雜,一般用途緩存器的數(shù)量及大小都增加了。以應(yīng)用于桌上型/膝上型計(jì)算機(jī)軟件的微處理器而言,目前的技術(shù)程度所能提供的32位一般用途緩存器不到十個(gè)。所以到現(xiàn)在,仍有應(yīng)用程序的領(lǐng)域因?yàn)槲⑻幚砥鞑⑽刺峁└嗫蓪ぶ返囊话阌猛揪彺嫫?,而受到不利的影響?br> 因此,我們所需要的是,一種可將附加的一般用途緩存器納入一既有微處理器指令集結(jié)構(gòu)的裝置及方法,其中該既有指令集為被已定義的操作碼完全占用,且此項(xiàng)技術(shù)也可讓一符合舊有規(guī)則的微處理器保留執(zhí)行舊有應(yīng)用程序的能力。
      本發(fā)明的一個(gè)目的,為提出一種擴(kuò)充一既有微處理器指令集以提供附加的操作數(shù)緩存器的機(jī)制。該機(jī)制包括一延伸指令與一轉(zhuǎn)譯器。該延伸指令指定了對(duì)應(yīng)一指定運(yùn)算的附加操作數(shù)緩存器,且該延伸指令包括該既有微處理器指令集其中一選取的操作碼,其后則接著一n位的延伸前置碼。該選取的操作碼指出該延伸指令,該n位的延伸前置碼則指出該附加操作數(shù)緩存器,其中該附加操作數(shù)緩存器無(wú)法依該既有微處理器指令集另行指定。該轉(zhuǎn)譯器接收該延伸指令,并產(chǎn)生一微指令序列,以指示微處理器于該指定運(yùn)算執(zhí)行時(shí),存取該附加操作數(shù)緩存器。
      本發(fā)明的另一目的,在于提出一種為一既有指令集增添延伸緩存器的尋址能力的指令集延伸模塊。該指令集延伸模塊具一逸出標(biāo)志(escape tag)、一延伸緩存器指定元(extended registers specifier)及一延伸緩存器邏輯(extended register logic)。該逸出標(biāo)志由一轉(zhuǎn)譯邏輯接收,并指出一對(duì)應(yīng)指令的附隨部分為指定了一微處理器所要執(zhí)行的一延伸運(yùn)算,其中該逸出標(biāo)志為該既有指令集內(nèi)的一第一操作碼項(xiàng)目。該延伸緩存器指定元耦接至該逸出標(biāo)志,且為該附隨部分其中之一。該延伸緩存器指定元指定了數(shù)個(gè)對(duì)應(yīng)至延伸緩存器的地址延伸項(xiàng),該延伸緩存器則為該延伸運(yùn)算的所需。該延伸緩存器邏輯耦接至該轉(zhuǎn)譯邏輯,于該指定運(yùn)算執(zhí)行時(shí),存取該延伸緩存器,其中該既有指令集僅提供尋址既有緩存器的能力,且該延伸緩存器指定元致能尋址該延伸緩存器的能力。
      本發(fā)明的再一目的,在于提供一種擴(kuò)充一既有指令集結(jié)構(gòu)的方法,以提供一微處理器內(nèi)延伸緩存器的可編程尋址能力。該方法包括提供一延伸指令,該延伸指令包括一延伸標(biāo)志及一延伸前置碼,其中該延伸標(biāo)志為該既有指令集結(jié)構(gòu)其中一第一操作碼項(xiàng)目;通過該延伸前置碼與該延伸指令的其余部分指定該延伸緩存器,其中該延伸緩存器為于一指定運(yùn)算執(zhí)行時(shí)被存取,且該既有指令集結(jié)構(gòu)僅依據(jù)該指令集結(jié)構(gòu)提供可尋址既有緩存器的指令;以及于該指定運(yùn)算執(zhí)行時(shí),存取該延伸緩存器。
      圖5為解說本發(fā)明用以存取延伸緩存器的一管線化微處理器的方塊圖;圖6為本發(fā)明用于尋址微處理器的附加緩存器的延伸前置碼的一具體實(shí)施例方塊圖;圖7為圖5微處理器內(nèi)轉(zhuǎn)譯階段邏輯的詳細(xì)的方塊圖;圖8為圖5的微處理器內(nèi)延伸緩存器階段邏輯的方塊圖;以及圖9為描述本發(fā)明對(duì)尋址微處理器的延伸緩存器的指令進(jìn)行轉(zhuǎn)譯與執(zhí)行的方法的運(yùn)作流程圖。
      圖號(hào)說明100 指令格式 101 前置碼102 操作碼 103 地址指定元200 8位操作碼圖201 操作碼值202 操作碼F1H300 延伸指令格式 301 前置碼302 操作碼 303 地址指定元304 延伸指令標(biāo)志 305 延伸前置碼400 8位前置碼圖401 結(jié)構(gòu)特征500 管線化微處理器 501 提取邏輯502 指令高速緩存/外部?jī)?nèi)存503 指令隊(duì)列 504 轉(zhuǎn)譯邏輯505 延伸轉(zhuǎn)譯邏輯 506 微指令隊(duì)列507 執(zhí)行邏輯 508 延伸執(zhí)行邏輯600 延伸前置碼601 來(lái)源地址延伸項(xiàng)字段(S3)602 目的地址延伸項(xiàng)字段(D3)603 備用字段604 操作碼與地址指定元項(xiàng)目605 操作碼與地址指定元項(xiàng)目700 轉(zhuǎn)譯階段邏輯 701 激活狀態(tài)信號(hào)702 機(jī)器特定緩存器 703 延伸特征字段704 指令緩沖器 705 轉(zhuǎn)譯邏輯
      706 轉(zhuǎn)譯控制器 707 禁止信號(hào)708 逸出指令檢測(cè)器 709 延伸前置碼譯碼器710 指令譯碼器 711 控制只讀存儲(chǔ)器712 微指令緩沖器714 微操作碼字段715 目的字段716 來(lái)源字段717 位移字段800 延伸緩存器階段邏輯 801 微指令緩沖器802 緩存器邏輯 803 伸緩存器檔案804 來(lái)源地址字段805 來(lái)源地址字段806 延伸讀取邏輯807 延伸回寫邏輯808 微指令緩沖器809 操作數(shù)緩沖器810 操作數(shù)緩沖器811 微指令緩沖器812 結(jié)果緩沖器 813 結(jié)果緩沖器900--926 對(duì)尋址微處理器的延伸緩存器的指令進(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至圖9,將提供對(duì)本發(fā)明的討論。通過利用一既有但未使用的操作碼作為一延伸指令的前置碼標(biāo)志,本發(fā)明可讓微處理器設(shè)計(jì)者克服已完全使用的指令集結(jié)構(gòu)的限制,在允許他們?cè)谔峁└郊拥囊话阌猛揪彺嫫鞴┏绦騿T使用的同時(shí),也能保留與舊有應(yīng)用程序的兼容性。
      請(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)特征。一般來(lái)說,這些結(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ī)則來(lái)解譯其后的操作碼字節(jié)102(即前置碼值0FH,其使得轉(zhuǎn)譯操作是依據(jù)所謂的二字節(jié)操作碼規(guī)則來(lái)進(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的位值。表格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)的舊有程序,帶來(lá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),來(lái)提供結(jié)構(gòu)特征,但許多指令集結(jié)構(gòu)100在提供功能上的強(qiáng)化時(shí),仍會(huì)因?yàn)橐环浅V苯拥睦碛桑龅阶璧K所有可用/多余的操作碼值已被用完,也就是,操作碼圖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的特定大小,除了作為一特殊情況來(lái)討論完全占用的操作碼結(jié)構(gòu)200所造成的問題外,其它方面與問題本身并不相干。因此,一完全占用的6位操作碼圖將有64個(gè)可結(jié)構(gòu)化地指定的操作碼/前置碼201,并將無(wú)法提供可用/多余的操作碼值作為擴(kuò)充之用。
      另一種替代做法,則并非將原有指令集完全廢棄,以一新的格式100與操作碼圖200取代,而是只針對(duì)一部份既有的操作碼201,以新的指令方法(new instruction meanings)取代,如圖2的操作碼40H至4FH。以這種混合的技術(shù),微處理器就可以單獨(dú)地以下列兩種模式的一運(yùn)作其中舊有模式利用操作碼40H-4FH,為依舊有規(guī)則來(lái)解譯,或者以另一種改良模式(enhanced mode)運(yùn)作,此時(shí)操作碼40H-4FH則依加強(qiáng)的結(jié)構(gòu)規(guī)則來(lái)解譯。此項(xiàng)技術(shù)確能允許設(shè)計(jì)者將新特征納入設(shè)計(jì),然而,當(dāng)符合舊有規(guī)則的微處理器于加強(qiáng)模式運(yùn)作時(shí),缺點(diǎn)仍舊存在,因?yàn)槲⑻幚砥鞑荒軋?zhí)行任何使用操作碼40H-4FH的應(yīng)用程序。因此,站在保留舊有軟件兼容性的立場(chǎng),兼容舊有軟件/加強(qiáng)模式的技術(shù),還是無(wú)法接受的。
      然而,對(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位的延伸緩存器指定元前置碼,以使用前置碼標(biāo)志/延伸前置碼的概念,因而可允許程序員在一既有微處理器指令集結(jié)構(gòu)所提供的一般用途緩存器外,還能指定微處理器中已提供的附加一般用途緩存器的地址。本發(fā)明現(xiàn)將參照?qǐng)D3至圖9來(lái)進(jìn)一步討論?,F(xiàn)請(qǐng)參閱圖3,其為本發(fā)明的延伸指令格式300的方塊圖。與圖1所討論的格式100非常近似,該延伸指令格式300具有數(shù)量可變的指令項(xiàng)目301-305,每一項(xiàng)目設(shè)定為一特定值,集合起來(lái)便組成微處理器的一特定指令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為用來(lái)指示是否要使用既有的結(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讓程序員能在一符合舊有規(guī)則的微處理器內(nèi)指定附加或延伸的一般用途緩存器的地址,以便在其內(nèi)的操作數(shù)上執(zhí)行運(yùn)算,其中該延伸地址是無(wú)法通過該符合舊有規(guī)則微處理器的既有指令集加以編程的。選用項(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指定了微處理器內(nèi)緩存器的延伸地址,其對(duì)應(yīng)至執(zhí)行一指定運(yùn)算所需要/產(chǎn)生的操作數(shù)/結(jié)果。在一具體實(shí)施例中,逸出標(biāo)志304指出,一對(duì)應(yīng)指令300的附隨部分301-303及305指定了微處理器所要執(zhí)行的延伸運(yùn)算。延伸緩存器指定元305,或稱延伸前置碼305,指定了對(duì)應(yīng)至該延伸運(yùn)算所需的延伸緩存器的數(shù)個(gè)地址延伸項(xiàng)。微處理器中的延伸緩存器邏輯則于該延伸運(yùn)算執(zhí)行時(shí),存取該延伸緩存器。
      此處將本發(fā)明所用的延伸技術(shù)作個(gè)概述。一延伸指令被組態(tài)為指定一既有微處理器指令集中的附加操作數(shù)緩存器,其中該附加操作數(shù)緩存器為無(wú)法依該既有微處理器指令集另行指定。該延伸指令包括該既有指令集的操作碼/指令304其中之一,以及一n位的延伸特征前置碼305。所選取的操作碼/指令作為一指針304,以指出指令300是一延伸特征指令300(也即,其指定了微處理器結(jié)構(gòu)的延伸項(xiàng)),該n位特征前置碼305則指出該附加操作數(shù)緩存器。在另一具體實(shí)施例中,延伸前置碼305具八位的大小,最多可指定256個(gè)不同的值,其可組態(tài)為指定一相關(guān)延伸運(yùn)算所需的延伸緩存器所對(duì)應(yīng)的數(shù)個(gè)緩存器地址延伸項(xiàng)。n位前置碼的實(shí)施例,則最多可指定2n種不同的地址延伸項(xiàng)。
      現(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)到一符合舊有規(guī)則的微處理器的對(duì)應(yīng)緩存器地址延伸項(xiàng)401(如E34、E4D等)。在一x86的具體實(shí)施例中,本發(fā)明的8位延伸特征前置碼305為提供給前述的緩存器指定元401(也即E00-EFF)使用,該些指定元401乃現(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的編程選擇。
      不同的實(shí)施例,可依據(jù)一特殊的既有微處理器指令集對(duì)其既有緩存器進(jìn)行尋址的方式來(lái)加以組態(tài)。例如,一實(shí)施例于延伸前置碼305內(nèi)提供數(shù)個(gè)來(lái)源緩存器與目的緩存器指定元字段,其可完全取代延伸指令300的其余部分301-303內(nèi)的既有緩存器指定字段。一個(gè)擴(kuò)充字段的實(shí)施例則包括數(shù)個(gè)來(lái)源緩存器與目的緩存器地址延伸字段,其內(nèi)容可作為延伸指令300的其余部分301-303中,既有緩存器指定字段內(nèi)所指定的對(duì)應(yīng)來(lái)源/目的緩存器地址的延伸項(xiàng)。此實(shí)施例的其中一種形式,為利用該地址延伸項(xiàng)作為數(shù)個(gè)較高的緩存器地址位,這些位與其余部分301-303中的對(duì)應(yīng)較低的緩存器地址位結(jié)合,以指定該延伸緩存器。另一不同的實(shí)施例則不用分開的字段來(lái)指定操作數(shù)緩存器,而是用n位延伸前置碼305的一特定編碼值,來(lái)指定要運(yùn)用至該指定運(yùn)算的一組對(duì)應(yīng)的來(lái)源/目的操作數(shù)緩存器。依本發(fā)明,可用一些不同的方式來(lái)編碼n位延伸前置碼305中延伸緩存器的地址。然而,熟悉此領(lǐng)域技術(shù)人員將發(fā)現(xiàn),用以指定n位延伸前置碼305中的緩存器延伸項(xiàng)的特定編碼形式,為依本發(fā)明所要應(yīng)用的特定微處理器結(jié)構(gòu)與指令集而定。因?yàn)橛龅揭凰x取的逸出指令304,即表示隨后有一n位的延伸前置碼305,其大小可以最佳化方式?jīng)Q定,以配合各種延伸緩存器的指定方式。
      現(xiàn)請(qǐng)參閱圖5,其為解說本發(fā)明用以存取延伸緩存器的管線化微處理器500的方塊圖。微處理器500具有三個(gè)明顯的階段類型提取、轉(zhuǎn)譯及執(zhí)行。提取階段具有提取邏輯501,可從指令高速緩存502或外部?jī)?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從指令高速緩存/外部?jī)?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檢測(cè)那些具有延伸前置碼標(biāo)志的指令,并提供作為對(duì)應(yīng)的延伸緩存器指定元前置碼轉(zhuǎn)譯/譯碼之用。在一x86的實(shí)施例中,延伸轉(zhuǎn)譯邏輯505組態(tài)為檢測(cè)其值為F1H的延伸前置碼標(biāo)志,其為x86的ICE BKPT操作碼。延伸微指令字段則提供于微指令隊(duì)列506中,以允許指定微處理器500內(nèi)附加的內(nèi)部緩存器。
      微指令從微指令隊(duì)列506被送至執(zhí)行邏輯507,其中延伸執(zhí)行邏輯508被組態(tài)為依照延伸微指令字段所指定的,存取微處理器內(nèi)部的緩存器。被指定要用于一特定運(yùn)算的執(zhí)行的數(shù)個(gè)來(lái)源操作數(shù),則取自來(lái)源操作數(shù)延伸緩存器。延伸執(zhí)行邏輯508執(zhí)行微指令所指定的運(yùn)算,并產(chǎn)生相對(duì)應(yīng)的結(jié)果。在對(duì)應(yīng)結(jié)果產(chǎn)生后,延伸執(zhí)行邏輯508將該對(duì)應(yīng)結(jié)果回寫至該延伸微指令字段所指定的目的操作數(shù)延伸緩存器中。
      熟悉此領(lǐng)域技術(shù)人員將發(fā)現(xiàn),圖5所示的微處理器500為現(xiàn)代的管線化微處理器50經(jīng)過簡(jiǎn)化的結(jié)果。事實(shí)上,現(xiàn)代的管線化微處理器500最多可包括有20至30個(gè)不同的管線階段。然而,這些階段可概括地歸類為方塊圖所示的三個(gè)階段,因此,圖5的方塊圖500可用以點(diǎn)明前述本發(fā)明實(shí)施例所需的必要組件。為了簡(jiǎn)明起見,微處理器500中無(wú)關(guān)的組件并未顯示出來(lái)。
      現(xiàn)請(qǐng)參閱圖6,其為本發(fā)明用于尋址微處理器的附加緩存器的延伸前置碼600的一具體實(shí)施例方塊圖。該延伸緩存器指定元前置碼600為一8位的延伸前置碼600,且包括一來(lái)源地址延伸項(xiàng)字段601(S3)、一目的地址延伸項(xiàng)字段602(D3)以及一備用字段603。依本發(fā)明,S3字段601包括前置碼600的位0,并由延伸緩存器邏輯使用,作為一四位的第一延伸來(lái)源緩存器地址的位3。該四位的第一延伸來(lái)源緩存器地址的其余三個(gè)位[20]則由其余的操作碼與地址指定元項(xiàng)目604來(lái)指定,后者為依該既有微處理器指令集結(jié)構(gòu)的緩存器指定規(guī)則(register specification conventions)而提供。依本發(fā)明,D3字段602包括前置碼600的位1,并由延伸緩存器邏輯使用,作為一四位的第二延伸來(lái)源緩存器地址的位3。該四位的第二延伸來(lái)源緩存器地址的其余三個(gè)位[20]則由其余的操作碼與地址指定元項(xiàng)目605來(lái)指定,后者為依該既有微處理器指令集結(jié)構(gòu)的緩存器指定規(guī)則而提供。該第二延伸來(lái)源緩存器地址也被使用作為一所執(zhí)行運(yùn)算的結(jié)果的目的緩存器地址。
      圖6的本發(fā)明延伸前置碼600的范例反映出,一個(gè)適用于x86指令集結(jié)構(gòu)的緩存器延伸項(xiàng)實(shí)施例?,F(xiàn)在的x86結(jié)構(gòu)提供了八個(gè)一般用途緩存器,其為依照一操作碼字節(jié)與地址指定元字節(jié)(稱為x86指令的ModR/M與SIB字節(jié))內(nèi)的現(xiàn)有編碼格式,指定于既有的x86指令中。通過使用如圖所示的延伸前置碼600的S3 601與D3 602字段,一x86微處理器中的可尋址緩存器數(shù)量可從八個(gè)增加到十六個(gè)。熟悉此領(lǐng)域技術(shù)人員將發(fā)覺,在延伸前置碼中提供二位的來(lái)源與目的字段601、602,將使一既有結(jié)構(gòu)下可尋址緩存器的數(shù)量增加至原來(lái)的四倍。
      現(xiàn)請(qǐng)參閱圖7,其為圖5的微處理器內(nèi)轉(zhuǎn)譯階段邏輯700的詳細(xì)的方塊圖。轉(zhuǎn)譯階段邏輯700具有一指令緩沖器704,其提供延伸指令至轉(zhuǎn)譯邏輯705。轉(zhuǎn)譯邏輯705為耦接至一具有一延伸特征字段703的機(jī)器特定緩存器702。轉(zhuǎn)譯邏輯705具一轉(zhuǎn)譯控制器706,其提供一禁止信號(hào)707至一逸出指令檢測(cè)器708及一延伸譯碼器709。該逸出指令檢測(cè)器708耦接至該延伸譯碼器709及一指令譯碼器710。延伸譯碼邏輯709與指令譯碼邏輯710存取一控制只讀存儲(chǔ)器(ROM)711,其中儲(chǔ)存了對(duì)應(yīng)至某些延伸指令的樣板(template)微指令序列。轉(zhuǎn)譯邏輯705也包括一微指令緩沖器712,其具有一微操作碼字段714、一目的字段715、一來(lái)源字段716以及一位移字段717。
      運(yùn)作上,在微處理器通電激活期間,機(jī)器特定緩存器702內(nèi)的延伸字段703的狀態(tài)為通過信號(hào)激活狀態(tài)(signal power-up state)701決定,以指出該特定微處理器是否能轉(zhuǎn)譯與執(zhí)行本發(fā)明的延伸指令,以尋址該微處理器的附加緩存器。在一具體實(shí)施例中,信號(hào)701為從一特征控制緩存器(圖上未顯示)導(dǎo)出,該特征控制緩存器則讀取一于制造時(shí)即已組態(tài)的熔合數(shù)組(fusearray)(未顯示)。機(jī)器特定緩存器702將延伸特征字段703的狀態(tài)送至轉(zhuǎn)譯控制器706。轉(zhuǎn)譯控制邏輯706則控制從指令緩沖器704所提取的指令,要依照延伸轉(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)譯禁止,指令譯碼器710將轉(zhuǎn)譯/譯碼全部所提供的指令,并對(duì)微指令712的所有字段714-717進(jìn)行組態(tài)。然而,在延伸轉(zhuǎn)譯規(guī)則下,若遇到標(biāo)志,則會(huì)被逸出指令檢測(cè)器708檢測(cè)出來(lái)。逸出指令檢測(cè)器708因而允許指令譯碼器709對(duì)該延伸指令的其余部分進(jìn)行轉(zhuǎn)譯/譯碼,并對(duì)微指令712的微操作碼字段714與位移字段717加以組態(tài),而延伸譯碼器709則將譯碼/轉(zhuǎn)譯該延伸指令的延伸前置碼與其它可用的部分,以組態(tài)微指令712的來(lái)源與目的字段716、715。某些特定指令將導(dǎo)致對(duì)控制ROM 711的存取,以獲取對(duì)應(yīng)的微指令序列樣板。經(jīng)過組態(tài)的微指令712被送至一微指令隊(duì)列(未顯示于圖中),由處理器進(jìn)行后續(xù)執(zhí)行。
      現(xiàn)請(qǐng)參閱圖8,其為圖5的微處理器內(nèi)延伸緩存器階段邏輯800的方塊圖。該延伸緩存器階段邏輯800具一緩存器邏輯802,其依本發(fā)明從一微指令緩沖器801或微指令隊(duì)列801提取延伸微指令。緩存器邏輯802具一包括既有結(jié)構(gòu)緩存器與附加緩存器的延伸緩存器檔案803。在一x86實(shí)施例中,緩存器R0-R7為八個(gè)既有的結(jié)構(gòu)緩存器,而緩存器R8-R15則為八個(gè)附加的緩存器。緩存器R0-R15由延伸讀取邏輯806讀取以獲得來(lái)源操作數(shù),并由延伸回寫邏輯807寫入以儲(chǔ)存結(jié)果操作數(shù)。延伸讀取邏輯806將來(lái)源操作數(shù)OP1、OP2輸出至兩個(gè)操作數(shù)緩沖器809、810。結(jié)果操作數(shù)RS1、RS2則經(jīng)由兩個(gè)結(jié)果緩沖器812、813送至延伸回寫邏輯807。
      運(yùn)作上,延伸微指令與一管線時(shí)脈(未顯示)同步,從微指令隊(duì)列801送至緩存器邏輯802。在一時(shí)脈周期中,延伸讀取邏輯802譯碼該延伸微指令的來(lái)源地址字段804、805,以判斷緩存器R0-R15中,哪些緩存器存有一指定運(yùn)算所使用的來(lái)源操作數(shù)。來(lái)源操作數(shù)OP1、OP2則從中被取出,并送至來(lái)源操作數(shù)緩存器809、810。此外,該延伸微指令經(jīng)由管線送至緩沖器808,以供微處理器的后續(xù)管線階段(未顯示)使用。在同一時(shí)脈周期中,一最近所執(zhí)行運(yùn)算的結(jié)果RS1、RS2被回寫至由微指令緩沖器811中目的緩存器字段(未顯示)所指定的目的緩存器中。對(duì)應(yīng)的結(jié)果操作數(shù)RS1、RS2則被送至緩沖器812、813。
      圖8所示的緩存器階段邏輯800提供在單一時(shí)脈周期內(nèi),一致地存取兩個(gè)來(lái)源緩存器與兩個(gè)結(jié)果緩存器的能力。另一具體實(shí)施例則提供兩個(gè)來(lái)源操作數(shù)與單一的目的操作數(shù)。為確保緩存器R0-R15的一致性,延伸緩存器邏輯802在執(zhí)行結(jié)果RS1、RS2的回寫前,存取來(lái)源操作數(shù)OP1、OP2。
      現(xiàn)請(qǐng)參閱圖9,其為描述本發(fā)明對(duì)尋址微處理器的延伸緩存器的指令進(jìn)行轉(zhuǎn)譯與執(zhí)行的方法的運(yùn)作流程圖900。流程開始于方塊902,其中一個(gè)組態(tài)有延伸緩存器尋址指令的程序,被送至微處理器。流程接著進(jìn)行至方塊904。
      于方塊904中,下一個(gè)指令從高速緩存/外部?jī)?nèi)存提取。流程接著進(jìn)行至方塊906。
      于方塊906中,依常用轉(zhuǎn)譯規(guī)則譯碼/轉(zhuǎn)譯該下個(gè)指令,其中該常用轉(zhuǎn)譯規(guī)則只應(yīng)用于一既有指令集結(jié)構(gòu)中的既有結(jié)構(gòu)緩存器。流程接著進(jìn)行至方塊908。
      于方塊908中,運(yùn)用該指令的操作碼與地址指定元字段,以決定對(duì)應(yīng)于一指定運(yùn)算的操作數(shù)的緩存器地址。流程接著進(jìn)行到方塊910。
      于方塊910中,一微指令序列被組態(tài)為指定該指定運(yùn)算及其對(duì)應(yīng)操作數(shù)的緩存器地址。流程接著進(jìn)行至判斷方塊912。
      于判斷方塊912中,對(duì)在方塊904中所提取的下個(gè)指令進(jìn)行檢查,以判斷是否包括一延伸逸出標(biāo)志/碼。若否,則流程進(jìn)行至方塊918。若檢測(cè)到該延伸逸出碼,則流程進(jìn)行至方塊914。
      于方塊914中,由于在方塊912中已檢測(cè)到一延伸逸出標(biāo)志,轉(zhuǎn)譯/譯碼在一延伸緩存器指定元前置碼上執(zhí)行,以決定對(duì)應(yīng)至該指定運(yùn)算的延伸緩存器地址。在一具體實(shí)施例中,該延伸緩存器指定元前置碼提供了所有決定該延伸緩存器地址所需的地址位。流程接著進(jìn)行至方塊916。
      于方塊916中,對(duì)方塊910中所組態(tài)的該微指令序列的操作數(shù)地址字段進(jìn)行修改,以顯示方塊914中所決定的延伸操作數(shù)緩存器地址。流程接著進(jìn)行至方塊918。
      于方塊918中,該微指令序列被送至一微指令隊(duì)列,由微處理器執(zhí)行。流程接著進(jìn)行至方塊920。
      于方塊920中,該微指令序列由本發(fā)明的延伸緩存器邏輯進(jìn)行提取。該延伸緩存器邏輯從指定的延伸緩存器提取對(duì)應(yīng)該指定運(yùn)算的操作數(shù)。流程接著進(jìn)行至方塊922。
      于方塊922中,延伸執(zhí)行邏輯使用方塊920中所提取的操作數(shù),執(zhí)行該指定運(yùn)算,并產(chǎn)生結(jié)果操作數(shù)。流程接著進(jìn)行至方塊924。
      于方塊924中,該結(jié)果操作數(shù)被送至延伸緩存器邏輯,并被回寫至該微指令序列所指定的延伸緩存器。流程接著進(jìn)行至方塊926。
      于方塊926中,本方法完成。
      方法900的另一實(shí)施例,則于轉(zhuǎn)譯運(yùn)算(方塊906與914)前,即開始檢測(cè)該延伸逸出碼(判斷方塊912),而微指令序列則在單一步驟中進(jìn)行組態(tài),而不需進(jìn)行置換的步驟916。
      雖然本發(fā)明及其目的、特征與優(yōu)點(diǎn)已詳細(xì)敘述,其它實(shí)施例也可包括在本發(fā)明的范圍內(nèi)。例如,本發(fā)明已就如下的技術(shù)加以敘述利用已完全占用的指令集結(jié)構(gòu)內(nèi)單一、未使用的操作碼狀態(tài)作為標(biāo)志,以指出其后的延伸特征前置碼。但本發(fā)明的范圍就任一方面來(lái)看,并不限于已完全占用的指令集結(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)依市場(chǎng)因素而決定。另一具體實(shí)施例則包括使用操作碼的一特殊組合作為標(biāo)志,如操作碼狀態(tài)7FH的連續(xù)出現(xiàn)。因此,本發(fā)明的本質(zhì)在于使用一標(biāo)志序列,其后則為一n位的延伸前置碼,可允許程序員在一延伸指令中指定附加的操作數(shù)緩存器,其并無(wú)法另由一微處理器指令集的既有指令來(lái)提供。
      再者,雖然上文利用微處理器為例來(lá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.一種用以存取一微處理器內(nèi)的延伸緩存器的裝置,包括一轉(zhuǎn)譯邏輯,用以將一延伸指令轉(zhuǎn)譯成對(duì)應(yīng)的微指令,由該微處理器執(zhí)行,其中該延伸指令包括一延伸前置碼,用以指定緩存器地址延伸項(xiàng),該緩存器地址延伸項(xiàng)指出該延伸緩存器,其中該延伸緩存器并不能由一既有指令集加以指定;以及一延伸前置碼標(biāo)志,用以指出該延伸前置碼,其中該延伸前置碼標(biāo)志為原本該既有指令集內(nèi)另一依據(jù)結(jié)構(gòu)所指定的操作碼;以及一延伸緩存器邏輯,耦接至該轉(zhuǎn)譯邏輯,用以接收該對(duì)應(yīng)的微指令,并存取該延伸緩存器。
      2.如權(quán)利要求1所述的裝置,其中該延伸指令還包括依據(jù)該既有指令集所具有的數(shù)個(gè)指令項(xiàng)目。
      3.如權(quán)利要求2所述的裝置,其中該些指令項(xiàng)目指定該微處理器所要執(zhí)行的一運(yùn)算,且其中對(duì)應(yīng)該運(yùn)算的操作數(shù)提取自/儲(chǔ)存至該延伸緩存器。
      4.如權(quán)利要求3所述的裝置,其中該些指令項(xiàng)目更指定了數(shù)個(gè)結(jié)構(gòu)緩存器地址。
      5.如權(quán)利要求4所述的裝置,其中該轉(zhuǎn)譯邏輯使用該些緩存器地址延伸項(xiàng)來(lái)決定該延伸緩存器。
      6.如權(quán)利要求4所述的裝置,其中該轉(zhuǎn)譯邏輯將該些緩存器地址延伸項(xiàng)與該些結(jié)構(gòu)緩存器地址結(jié)合,以決定該延伸緩存器。
      7.如權(quán)利要求1所述的裝置,其中該延伸前置碼包括8個(gè)位。
      8.如權(quán)利要求1所述的裝置,其中該延伸前置碼包括一來(lái)源緩存器地址延伸項(xiàng),用以指定一包括一第一來(lái)源操作數(shù)的第一延伸緩存器;以及一目的緩存器地址延伸項(xiàng),耦接至該來(lái)源緩存器地址延伸項(xiàng),用以指定一包括一第二來(lái)源操作數(shù)的第二延伸緩存器,并指定該第二延伸緩存器用于儲(chǔ)存一結(jié)果操作數(shù)。
      9.如權(quán)利要求1所述的裝置,其中該轉(zhuǎn)譯邏輯包括一逸出指令檢測(cè)邏輯,用于檢測(cè)該延伸前置碼標(biāo)志;一指令譯碼邏輯,依據(jù)該既有指令集,決定一所要執(zhí)行的運(yùn)算及所用的結(jié)構(gòu)緩存器;以及一延伸譯碼邏輯,耦接至該逸出指令檢測(cè)邏輯與該指令譯碼邏輯,用以決定該延伸緩存器,并于該對(duì)應(yīng)微指令內(nèi)指定該延伸緩存器。
      10.一種擴(kuò)充一既有微處理器指令集以提供附加的操作數(shù)緩存器的機(jī)制,包括一延伸指令,組態(tài)為指定對(duì)應(yīng)一指定運(yùn)算的該附加操作數(shù)緩存器,其中該延伸指令包括該既有微處理器指令集其中一選取的操作碼,其后則接著一n位的延伸前置碼,該選取的操作碼指出該延伸指令,而該n位的延伸前置碼則指出該附加操作數(shù)緩存器,其中該附加操作數(shù)緩存器無(wú)法依該既有微處理器指令集另行指定;以及一轉(zhuǎn)譯器,組態(tài)為接收該延伸指令,并產(chǎn)生一微指令序列,以指示該微處理器于該指定運(yùn)算執(zhí)行時(shí),存取該附加操作數(shù)緩存器。
      11.如權(quán)利要求10所述的機(jī)制,其中該延伸指令還包括其余指令項(xiàng)目,組態(tài)為指定該指定運(yùn)算,其中該指定運(yùn)算由該微處理器執(zhí)行,且其中對(duì)應(yīng)該指定運(yùn)算的操作數(shù)提供自/至該附加操作數(shù)緩存器。
      12.如權(quán)利要求11所述的機(jī)制,其中該n位的前置碼包括緩存器延伸項(xiàng)字段,每一該字段是組態(tài)為對(duì)于每一該附加操作數(shù)緩存器的一地址,指定其較高的地址位。
      13.如權(quán)利要求12所述的機(jī)制,其中該地址較低的地址位由該延伸指令內(nèi)的該其余指令項(xiàng)目所提供。
      14.如權(quán)利要求11所述的延伸機(jī)制,其中該轉(zhuǎn)譯器包括一逸出指令檢測(cè)器,用以檢測(cè)該延伸指令內(nèi)的該選取的操作碼;一指令譯碼器,用以譯碼該延伸指令的其余部分,以決定該指定運(yùn)算;以及一延伸前置碼譯碼器,耦接至該逸出指令檢測(cè)器與該指令譯碼器,用以譯碼該n位的延伸前置碼,并于該微指令序列內(nèi)指定該附加操作數(shù)緩存器。
      15.一種為一既有指令集增添延伸緩存器的尋址能力的指令集延伸模塊,包括一逸出標(biāo)志,由一轉(zhuǎn)譯邏輯接收,并指出一對(duì)應(yīng)指令的附隨部分指定了一微處理器所要執(zhí)行的一延伸運(yùn)算,其中該逸出標(biāo)志該既有指令集內(nèi)的一第一操作碼;一延伸緩存器指定元,耦接至該逸出標(biāo)志,且為該附隨部分其中之一,該延伸緩存器指定元指定了數(shù)個(gè)對(duì)應(yīng)至延伸緩存器的地址延伸項(xiàng),其中該延伸緩存器該延伸運(yùn)算之所需;以及一延伸緩存器邏輯,耦接至該轉(zhuǎn)譯邏輯,用以于該指定運(yùn)算執(zhí)行時(shí),存取該延伸緩存器,其中該既有指令集僅提供尋址既有緩存器的能力,且其中該延伸緩存器指定元致能尋址該延伸緩存器的能力。
      16.如權(quán)利要求15所述的指令集延伸模塊,其中該附隨部分的其余部分包括一第二操作碼與選用的數(shù)個(gè)地址指定元,用以指定該延伸運(yùn)算與數(shù)個(gè)地址,其中該些地址延伸項(xiàng)與該些地址組合,以產(chǎn)生該延伸緩存器的延伸地址。
      17.如權(quán)利要求15所述的指令集延伸模塊,其中該轉(zhuǎn)譯邏輯將該逸出標(biāo)志與該附隨部分轉(zhuǎn)譯成對(duì)應(yīng)的微指令,該對(duì)應(yīng)的微指令指示該延伸緩存器邏輯于該延伸運(yùn)算執(zhí)行時(shí),去存取該延伸緩存器,以提取/儲(chǔ)存操作數(shù)。
      18.如權(quán)利要求15所述的指令集延伸模塊,其中該轉(zhuǎn)譯邏輯包括一逸出標(biāo)志檢測(cè)邏輯,用以檢測(cè)該逸出標(biāo)志,并指示該附隨部分的轉(zhuǎn)譯操作需依據(jù)延伸轉(zhuǎn)譯規(guī)則(conventions);以及一譯碼邏輯,耦接至該逸出標(biāo)志檢測(cè)邏輯,用以依據(jù)該既有指令集的規(guī)則,執(zhí)行指令的轉(zhuǎn)譯操作,并依據(jù)該延伸轉(zhuǎn)譯規(guī)則執(zhí)行該對(duì)應(yīng)指令的轉(zhuǎn)譯,以致能尋址該延伸緩存器的能力。
      19.一種擴(kuò)充一既有指令集結(jié)構(gòu)的方法,以提供一微處理器內(nèi)延伸緩存器的可編程尋址能力,該方法包括提供一延伸指令,該延伸指令包括一延伸標(biāo)志及一延伸前置碼,其中該延伸標(biāo)志為該既有指令集結(jié)構(gòu)中一第一操作碼項(xiàng)目;通過該延伸前置碼與該延伸指令的其余部分,指定該延伸緩存器,其中該延伸緩存器于一指定運(yùn)算執(zhí)行時(shí)被存取,且其中該既有指令集結(jié)構(gòu)僅依據(jù)該指令集結(jié)構(gòu)提供可尋址既有緩存器的指令;以及于該指定運(yùn)算執(zhí)行時(shí),存取該延伸緩存器。
      20.如權(quán)利要求19所述的方法,其中該指定延伸緩存器的操作包括首先指定該指定運(yùn)算,其中該首先指定的操作使用了該既有指令集結(jié)構(gòu)中一第二操作碼項(xiàng)目。
      21.如權(quán)利要求19所述的方法,還包括將該延伸指令轉(zhuǎn)譯成微指令,該微指令指示一延伸執(zhí)行邏輯去存取該延伸緩存器。
      22.如權(quán)利要求21所述的方法,其中該轉(zhuǎn)譯延伸指令的操作包括于一轉(zhuǎn)譯邏輯內(nèi),檢測(cè)該延伸標(biāo)志;以及依照延伸轉(zhuǎn)譯規(guī)則譯碼該延伸前置碼與該其余部分,以確認(rèn)該轉(zhuǎn)譯操作所需的該延伸緩存器。
      全文摘要
      本發(fā)明涉及一種用于存取微處理器內(nèi)的延伸緩存器的裝置及方法。該裝置包括一轉(zhuǎn)譯邏輯與一延伸緩存器邏輯。該轉(zhuǎn)譯邏輯將一延伸指令轉(zhuǎn)譯為對(duì)應(yīng)的微指令。該延伸指令具一延伸前置碼與一延伸前置碼標(biāo)志。該延伸前置碼指定緩存器地址延伸項(xiàng),以指出該延伸緩存器,其中該延伸緩存器不能藉一既有指令集來(lái)指定。該延伸前置碼標(biāo)志指出該延伸前置碼,且為該既有指令集內(nèi)另一依據(jù)結(jié)構(gòu)所指定的操作碼。該延伸緩存器邏輯耦接至該轉(zhuǎn)譯邏輯,用以接收該對(duì)應(yīng)的微指令,并存取該延伸緩存器。
      文檔編號(hào)G06F9/30GK1414464SQ02150560
      公開日2003年4月30日 申請(qǐng)日期2002年11月13日 優(yōu)先權(quán)日2002年5月9日
      發(fā)明者G·葛蘭·亨利, 羅德·E·胡克, 泰瑞·派克斯 申請(qǐng)人:智慧第一公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1