專利名稱:延伸微處理器數(shù)據(jù)模式的裝置及方法
技術(shù)領(lǐng)域:
(0003)本發(fā)明是有關(guān)微電子的領(lǐng)域,尤指一種能將延伸地址模式控制納入一既有的微處理器指令集架構(gòu)的技術(shù)。
(0005)隨著使用上的爆炸性成長(zhǎng),在技術(shù)上也歷經(jīng)一相對(duì)應(yīng)的提升,其特征在于對(duì)下列項(xiàng)目有著日益升高的要求更快的速度、更強(qiáng)的尋址能力、更快的存儲(chǔ)器存取、更大的操作數(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)、超純量架構(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)大的能力。
(0006)但與許多其它產(chǎn)品不同的是,有另一非常重要的因素已限制了,并持續(xù)限制著微處理器架構(gòu)的演進(jìn)?,F(xiàn)今微處理器會(huì)如此復(fù)雜,一大部分得歸因于這項(xiàng)因素,即舊有軟件的兼容性。在市場(chǎng)考量下,所多制造商選擇將新的架構(gòu)特征納入最新的微處理器設(shè)計(jì)中,但同時(shí)在這些最新的產(chǎn)品中,又保留了所有為確保兼容于較舊的、即所謂“舊有”(legacy)應(yīng)用程序所必需的能力。
(0007)這種舊有軟件兼容性的負(fù)擔(dān),沒(méi)有其它地方,會(huì)比在x86-兼容的微處理器的發(fā)展史中更加顯而易見(jiàn)。大家都知道,現(xiàn)在的32/16位的虛擬模式(virtual-mode)x86微處理器,仍可執(zhí)行1980年代所撰寫的8位真實(shí)模式(real-mode)的應(yīng)用程序。而本領(lǐng)域的技術(shù)人員也承認(rèn),有不少相關(guān)的架構(gòu)“包袱”堆在x86架構(gòu)中,只為了支持與舊有應(yīng)用程序及運(yùn)作模式的兼容性。雖然在過(guò)去,研發(fā)者可將新開發(fā)的架構(gòu)特征加入既有的指令集架構(gòu),但如今使用這些特征所憑借的工具,即可程序化的指令,卻變得相當(dāng)稀少。更簡(jiǎn)單他說(shuō),在某些重要的指令集中,已沒(méi)有“多余”的指令,讓設(shè)計(jì)者可藉以將更新的特征納入一既有的架構(gòu)中。
(0008)例如,在x86指令集架構(gòu)中,已經(jīng)沒(méi)有任何一未定義的一字節(jié)大小的運(yùn)算碼狀態(tài),是尚未被使用的。在主要的一字節(jié)大小的x86運(yùn)算碼圖中,全部256個(gè)運(yùn)算碼狀態(tài)都已被既有的指令占用了。結(jié)果是,x86微處理器的設(shè)計(jì)者現(xiàn)在必須在提供新特征與保留舊有軟件兼容性兩者間作抉擇。若要提供新的可程序化特征,則必須分派運(yùn)算碼狀態(tài)給這些特征。若既有的指令集架構(gòu)沒(méi)有多余的運(yùn)算碼狀態(tài),則某些既存的運(yùn)算碼狀態(tài)必須重新定義,以提供給新的特征。因此,為了提供新的特征,就得犧牲舊有軟件兼容性了。
(0009)一個(gè)持續(xù)惡化且困擾微處理器設(shè)計(jì)者的問(wèn)題,即是操作數(shù)的大小。早期的微處理器設(shè)計(jì)提供了使用8位操作數(shù)的8位運(yùn)算。隨著應(yīng)用程序使用的計(jì)算日漸復(fù)雜,操作數(shù)的大小與相關(guān)的運(yùn)算也增加至16位?,F(xiàn)在用于桌上型/膝上型應(yīng)用程序的微處理器,已能提供32位的操作數(shù)/運(yùn)算。微處理器的操作數(shù)/運(yùn)算的大小,通常稱為數(shù)據(jù)模式(data mode)。因此,為了保留與舊有應(yīng)用程序的兼容性,現(xiàn)代的桌上型/膝上型計(jì)算機(jī)的微處理器皆能以32位、16位甚至是8位的數(shù)據(jù)模式運(yùn)作。
(0010)但即使到現(xiàn)在,由于微處理器不能支持延伸數(shù)據(jù)模式,如64位與128位的數(shù)據(jù)模式,仍有些應(yīng)用程序的領(lǐng)域會(huì)遭受不利的影響。不過(guò),為了要在已無(wú)剩余運(yùn)算碼值的架構(gòu)內(nèi)支持這些延伸數(shù)據(jù)模式,必須將既有運(yùn)算碼重新定義,如此將會(huì)導(dǎo)致無(wú)法支持舊有的應(yīng)用程序。
(0011)因此,我們所需要的是,一種可將延伸數(shù)據(jù)模式納入既有微處理器指令集架構(gòu)的裝置及方法,其中該指令集架構(gòu)是被已定義的運(yùn)算碼完全占用,且納入該延伸數(shù)據(jù)模式還能讓一符合舊有規(guī)格的微處理器保留執(zhí)行舊有應(yīng)用程序的能力。
(0013)本發(fā)明的一個(gè)目的在于提出一種擴(kuò)充既有微處理器指令集以提供延伸數(shù)據(jù)模式的機(jī)制。該機(jī)制包括一延伸指令與一轉(zhuǎn)譯器(translator)。該延伸指令指定一操作數(shù)的延伸操作數(shù)大小。該操作數(shù)是對(duì)應(yīng)一指定運(yùn)算,而該延伸指令包括該既有微處理器指令集其中一選取的運(yùn)算碼,其后則接著一n位的延伸前置碼。該選取的運(yùn)算碼指出該延伸指令,而該n位的延伸前置碼則指出該延伸操作數(shù)大小。該延伸操作數(shù)大小不能另依該既有微處理器指令集加以指定。該轉(zhuǎn)譯器組態(tài)為接收該延伸指令,并產(chǎn)生一微指令序列,以指示微處理器依照該延伸操作數(shù)大小,于該操作數(shù)上執(zhí)行該指定運(yùn)算。
(0014)本發(fā)明的另一目的在于提出一種為既有指令集增添延伸數(shù)據(jù)模式能力的指令集延伸模塊。該指令集延伸模塊具有一逸出標(biāo)記(escape tag)、一延伸操作數(shù)大小指定元(extended operand size specifier)及一延伸執(zhí)行邏輯。該逸出標(biāo)記由一轉(zhuǎn)譯邏輯接收,并指出一對(duì)應(yīng)指令的附隨部分是指定了微處理器所要執(zhí)行的一延伸運(yùn)算,其中該逸出標(biāo)記為該既有指令集內(nèi)的一第一運(yùn)算碼。該延伸操作數(shù)大小指定元耦接至該逸出標(biāo)記,且為該附隨部分其中之一,用以指定對(duì)應(yīng)該延伸運(yùn)算的數(shù)個(gè)數(shù)據(jù)模式其中之一。該延伸執(zhí)行邏輯耦接至該轉(zhuǎn)譯邏輯,利用所指定的數(shù)據(jù)模式執(zhí)行該延伸運(yùn)算,其中該既有指令集僅提供既有的數(shù)據(jù)模式,而未能提供所指定的數(shù)據(jù)模式。
(0015)本發(fā)明的再一目的在于提供一種擴(kuò)充既有指令集架構(gòu)的方法,可在微處理器內(nèi)程序化地指定一延伸數(shù)據(jù)模式。該方法包括提供一延伸指令,該延伸指令包括一延伸標(biāo)記及一延伸前置碼,其中該延伸標(biāo)記是該既有指令集架構(gòu)其中一第一運(yùn)算碼項(xiàng)目;通過(guò)該延伸前置碼與該延伸指令的其余部分指定該延伸數(shù)據(jù)模式與一指定運(yùn)算,其中該既有指令集架構(gòu)僅提供指定既有數(shù)據(jù)模式而非該延伸數(shù)據(jù)模式的指令;以及依據(jù)該延伸數(shù)據(jù)模式執(zhí)行該指定運(yùn)算。
500流水線化微處理器 501提取邏輯502指令高速緩存/外部存儲(chǔ)器503指令隊(duì)列 504轉(zhuǎn)譯邏輯505延伸轉(zhuǎn)譯邏輯 506微指令隊(duì)列507執(zhí)行邏輯 508延伸執(zhí)行邏輯600延伸前置碼 601地址模式字段602備用字段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微指令緩沖器 713運(yùn)算碼延伸項(xiàng)字段714微運(yùn)算碼字段 715目的字段716來(lái)源字段 717位移字段800延伸執(zhí)行階段邏輯 801微指令緩沖器802操作數(shù)輸入緩沖器 803操作數(shù)輸入緩沖器804延伸地址邏輯 805偏移緩沖器806延伸線性地址產(chǎn)生器 807節(jié)區(qū)選取元緩沖器808節(jié)區(qū)描述元表 809節(jié)區(qū)描述元810緩沖器 811緩沖器812較低線性地址緩沖器 813較高線性地址緩沖器814操作數(shù)字段 815操作數(shù)延伸項(xiàng)字段816延伸緩存器900~924對(duì)指定微處理器的延伸數(shù)據(jù)模式運(yùn)算的指令,進(jìn)行轉(zhuǎn)譯與執(zhí)行的方法的運(yùn)作流程100指令格式 101前置碼102運(yùn)算碼 103地址指定元200 8位運(yùn)算碼圖 201運(yùn)算碼值
202運(yùn)算碼F1H300延伸指令格式301前置碼302運(yùn)算碼 303地址指定元304延伸指令標(biāo)記305延伸前置碼400 8位前置碼圖401架構(gòu)特征500流水線化微處理器501提取邏輯502指令高速緩存/外部存儲(chǔ)器503指令隊(duì)列504轉(zhuǎn)譯邏輯505延伸轉(zhuǎn)譯邏輯506微指令隊(duì)列507執(zhí)行邏輯508延伸執(zhí)行邏輯600延伸前置碼 601地址模式字段602備用字段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微指令緩沖器713運(yùn)算碼延伸項(xiàng)字段714微運(yùn)算碼字段715目的字段716來(lái)源字段717位移字段800延伸執(zhí)行階段邏輯801微指令緩沖器802操作數(shù)輸入緩沖器803操作數(shù)輸入緩沖器804延伸地址邏輯805偏移緩沖器806延伸線性地址產(chǎn)生器 807節(jié)區(qū)選取元緩沖器808節(jié)區(qū)描述元表809節(jié)區(qū)描述元810緩沖器 811緩沖器812較低線性地址緩沖器 813較高線性地址緩沖器814操作數(shù)字段 815操作數(shù)延伸項(xiàng)字段816延伸緩存器
900~924對(duì)指定微處理器的延伸數(shù)據(jù)模式運(yùn)算的指令,進(jìn)行轉(zhuǎn)譯與執(zhí)行的方法的運(yùn)作流程
(0027)前文已針對(duì)今日的微處理器內(nèi),如何擴(kuò)充其架構(gòu)特征,以超越相關(guān)指令集能力的技術(shù),作了背景的討論。有鑒于此,在
圖1與圖2,將討論一相關(guān)技術(shù)的例子。此處的討論強(qiáng)調(diào)了微處理器設(shè)計(jì)者所一直面對(duì)的兩雄,即一方面,他們想將最新開發(fā)的架構(gòu)特征納入微處理器的設(shè)計(jì)中,但另一方而,他們又要保留執(zhí)行舊有應(yīng)用程序的能力。在圖1至2的例子中,一完全占用的運(yùn)算碼圖,已把增加新運(yùn)算碼至該范例架構(gòu)的可能性排除,因而迫使設(shè)計(jì)者要不就選擇將新特征納入,而犧牲某種程度的舊有軟件兼容性,要不就將架構(gòu)上的最新進(jìn)展一并放棄,以使維持微處理器與舊有應(yīng)用程序的兼容性。在相關(guān)技術(shù)的討論后,于圖3至9,將提供對(duì)本發(fā)明的討論。藉由利用一既有但未使用的運(yùn)算碼作為一延伸指令的前置碼標(biāo)記,本發(fā)明可讓微處理器設(shè)計(jì)者克服已完全使用的指令集架構(gòu)的限制,除了提供程序員使用比現(xiàn)有還長(zhǎng)的操作數(shù)執(zhí)行運(yùn)算的能力,同時(shí)也能保留執(zhí)行舊有應(yīng)用程序所需的所有特征。
(0028)請(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ù)從存儲(chǔ)器搬移至一內(nèi)部緩存器,或從該內(nèi)部緩存器搬移至存儲(chǔ)器。一般而言,指令100內(nèi)的運(yùn)算碼項(xiàng)目102指定了所要執(zhí)行的特定運(yùn)算,而選用(optional)的地址指定元項(xiàng)目103位于運(yùn)算碼102之后,以指定關(guān)于該特定運(yùn)算的附加信息,像是如何執(zhí)行該運(yùn)算,操作數(shù)位于何處等等。指令格式100并允許程序員在一運(yùn)算碼102前加上前置碼項(xiàng)目101。在運(yùn)算碼102所指定的特定運(yùn)算執(zhí)行時(shí),前置碼101用以指示是否使用特定的架構(gòu)特征。一般來(lái)說(shuō),這些架構(gòu)特征能應(yīng)用于指令集中任何運(yùn)算碼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)算)。可選擇的操作數(shù)大小僅是架構(gòu)特征的一例,在許多現(xiàn)代的微處理器中,這些架構(gòu)特征能應(yīng)用于眾多可由運(yùn)算碼102加以指定的運(yùn)算(如加,減、乘、布爾邏輯等)。
(0029)圖1所示的指令格式100,有一為業(yè)界所熟知的范例,此即x86指令格式100,其為所有現(xiàn)代的x86-兼容微處理器所采用。更具體他說(shuō),x86指令格式100(也稱為x86指令集架構(gòu)100)使用了8位前置碼101、8位運(yùn)算碼102以及8位地址指定元103。x86架構(gòu)100亦具有數(shù)個(gè)前置碼101,其中兩個(gè)取代了x86微處理器所預(yù)設(shè)的地址/數(shù)據(jù)大小(即運(yùn)算碼狀態(tài)66H與67H),另一個(gè)則指示微處理器依據(jù)不同的轉(zhuǎn)譯規(guī)則來(lái)解譯其后的運(yùn)算碼字節(jié)102(即前置碼值0FH,其使得轉(zhuǎn)譯動(dòng)作是依據(jù)所謂的二字節(jié)運(yùn)算碼規(guī)則來(lái)進(jìn)行),其它的前置碼101則使特殊運(yùn)算重復(fù)執(zhí)行,直至重復(fù)條件滿足為止(即REP運(yùn)算碼F0H、F2H及F3H)。
(0030)現(xiàn)請(qǐng)參閱圖2,其顯示一表格200,用以描述一指令集架構(gòu)的指令201如何對(duì)應(yīng)至圖1指令格式內(nèi)一8位運(yùn)算碼字節(jié)102的位值。表格200呈現(xiàn)了一8位運(yùn)算碼圖200的范例,其將一8位運(yùn)算碼項(xiàng)目102所具有的最多256個(gè)值,關(guān)聯(lián)到對(duì)應(yīng)的微處理器運(yùn)算碼指令201。表格200將運(yùn)算碼項(xiàng)目102的一特定值,譬如02H,映像至一對(duì)應(yīng)的運(yùn)算碼指令201(即指令I(lǐng)02 201)。在x86運(yùn)算碼圖的例子中,為此領(lǐng)域中人所熟知的是,運(yùn)算碼值14H是映像全x86的進(jìn)位累加(Add with Carry,ADC)指令,此指令將一8位的直接(immediate)操作數(shù)加至架構(gòu)緩存器AL的內(nèi)含值。本領(lǐng)域的技術(shù)人員也將發(fā)覺(jué),上文提及的x86前置碼101(亦即66H、67H、0FH、F0H、F2H及F3H)是實(shí)際的運(yùn)算碼值201,其在不同脈絡(luò)下,指定要將特定的架構(gòu)延伸項(xiàng)應(yīng)用于隨后的運(yùn)算碼項(xiàng)目102所指定的運(yùn)算。例如,在運(yùn)算碼14H(正常情況下,是前述的ADC運(yùn)算碼)前加上前置碼0FH,會(huì)使得x86處理器執(zhí)行一“解壓縮與插入低壓縮的單精度浮點(diǎn)值”(Unpack and Interleave Low PackedSingle-Precision Floating-Point Values)運(yùn)算,而非原本的ADC運(yùn)算。諸如此x86例子所述的特征,在現(xiàn)代的微處理器中是部分地致能,此因微處理器內(nèi)的指令轉(zhuǎn)譯解碼邏輯是依序解譯一指令100的項(xiàng)目101-103。所以在過(guò)去,于指令集架構(gòu)中使用特定運(yùn)算碼值作為前置碼101,可允許微處理器設(shè)計(jì)者將不少先進(jìn)的架構(gòu)特征納入兼容舊有軟件的微處理器的設(shè)計(jì)中,而不會(huì)對(duì)未使用那些特定運(yùn)算碼狀態(tài)的舊有程序,帶來(lái)執(zhí)行上的負(fù)面沖擊。例如,一未曾使用x86運(yùn)算碼0FH的舊有程序,仍可在今日的x86微處理器上執(zhí)行。而一較新的應(yīng)用程序,借著運(yùn)用x86運(yùn)算碼0FH作為前置碼101,就能使用許多新進(jìn)納入的x86架構(gòu)特征,如單一指令多重?cái)?shù)據(jù)(SIMD)運(yùn)算,條件移動(dòng)運(yùn)算等等。
(0031)盡管過(guò)去已藉由指定可用/多余的運(yùn)算碼值201作為前置碼10i(也稱為架構(gòu)特征標(biāo)記/指針101或逸出指令10i),來(lái)提供架構(gòu)特征,但許多指令集架構(gòu)100在提供功能上的強(qiáng)化時(shí),仍會(huì)因?yàn)橐环浅V苯拥睦碛?,而磁到阻礙所有可用/多余的運(yùn)算碼值已被用完,也就是,運(yùn)算碼圖200中的全部運(yùn)算碼值已被架構(gòu)化地指定。當(dāng)所有可用的值被分派為運(yùn)算碼項(xiàng)目102或前置碼項(xiàng)目101時(shí),就沒(méi)有剩余的運(yùn)算碼值可作為納入新特征之用。這個(gè)嚴(yán)重的問(wèn)題存在于現(xiàn)在的許多微處理器架構(gòu)中,因而迫使設(shè)計(jì)者得在增添架構(gòu)特征與保留舊有程序的兼容性兩者間作抉擇。
(0032)值得注意的是,圖2所示的指令201是以一般性的方式表示(亦即124、186),而非具體指涉實(shí)際的運(yùn)算(如進(jìn)位累加、減、異或)。這是因?yàn)?,在一些不同的微處理器架?gòu)中,完全占用的運(yùn)算碼圖200在架構(gòu)上,已將納入較新進(jìn)展的可能性排除。雖然圖2例子所提到的,是8位的運(yùn)算碼項(xiàng)目102,本領(lǐng)域的技術(shù)人員仍將發(fā)覺(jué),運(yùn)算碼102的特定大小,除了作為一特殊情況來(lái)討論完全占用的運(yùn)算碼結(jié)構(gòu)200所造成的問(wèn)題外,其它方面與問(wèn)題本身并不相干。因此,一完全占用的6位運(yùn)算碼圖將有64個(gè)可架構(gòu)化地指定的運(yùn)算碼/前置碼201,并將無(wú)法提供可用/多余的運(yùn)算碼值作為擴(kuò)充之用。
(0033)另一種替代做法,則并非將原有指令集完全廢棄,以一新的格式100與運(yùn)算碼圖200取代,而是只針對(duì)一部份既有的運(yùn)算碼201,以新的指令意含取代,如圖2的運(yùn)算碼40H至4FH。以這種混合的技術(shù),微處理器就可以單獨(dú)地以下列兩種模式的一運(yùn)作其中舊有模式利用運(yùn)算碼40H-4FH,是依舊有規(guī)則來(lái)解譯,或者以另一種改良模式(enhanced mode)運(yùn)作,此時(shí)運(yùn)算碼40H-4FH則依加強(qiáng)的架構(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í)行任何使用運(yùn)算碼40H—4FH的應(yīng)用程序。因此,站在保留舊有軟件兼容性的立場(chǎng),兼容舊有軟件/加強(qiáng)模式的技術(shù),還足無(wú)法接受的。
(0034)然而,對(duì)于運(yùn)算碼空間已完全占用的指令集200,且該空間涵蓋所有于符合舊有規(guī)格的微處理器上執(zhí)行的應(yīng)用程序的情形,本案發(fā)明人已注意到其中運(yùn)算碼201的使用狀況,且他們亦觀察出,雖然有些指令202是架構(gòu)化地指定,但未用于能被微處理器執(zhí)行的應(yīng)用程序中。圖2所述的指令I(lǐng)F1 202即為此現(xiàn)象的一例。事實(shí)上,相同的運(yùn)算碼值202(亦即F1H)是映像至未用于x86指令集架構(gòu)的一有效指令202。雖然該未使用的x86指令202是有效的x86指令202,其指示要在x86微處理器上執(zhí)行一架構(gòu)化地指定的運(yùn)算,但它卻未使用于任何能在現(xiàn)代x86微處理器上執(zhí)行的應(yīng)用程序。這個(gè)特殊的x86指令202被稱為電路內(nèi)模擬斷點(diǎn)(In Circuit Emulation Breakpoint)(亦即ICEBKPT,運(yùn)算碼值為F1H),之前都是專門使用于一種現(xiàn)在已不存在的微處理器模擬設(shè)備中。ICE BKPT 202從未用于電路內(nèi)模擬器之外的應(yīng)用程序中,并且先前使用ICE BKPT 202的電路內(nèi)模擬設(shè)備已不復(fù)存在。因此,在x86的情形下,本案發(fā)明人已在一完全占用的指令集架構(gòu)200內(nèi)發(fā)現(xiàn)一樣工具,借著利用一有效但未使用的運(yùn)算碼202,以允許在微處理器的設(shè)計(jì)中納入先進(jìn)的架構(gòu)特征,而不需犧牲舊有軟件的兼容性。在一完全占用的指令集架構(gòu)200中,本發(fā)明利用一架構(gòu)化地指定但未使用的運(yùn)算碼202,作為一指針標(biāo)記,以指出其后的一n位前置碼,因此允許微處理器設(shè)計(jì)者可將最多2n個(gè)最新發(fā)展的架構(gòu)特征,納入微處理器的設(shè)計(jì)中,同時(shí)保留與所有舊有軟件完全的兼容性。
(0035)本發(fā)明藉提供一n位的延伸操作數(shù)大小指定元前置碼,以使用前置碼標(biāo)記/延伸前置碼的概念,因而可允許程序員在一微處理器中,依據(jù)每個(gè)指令指定一延伸數(shù)據(jù)模式予一對(duì)應(yīng)的運(yùn)算。該延伸數(shù)據(jù)模式是用以取代該微處理器的既有指令集架構(gòu)所支持的既有數(shù)據(jù)模式。本發(fā)明現(xiàn)將參照?qǐng)D3至9進(jìn)行討論。
(0036)現(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ù)從存儲(chǔ)器搬移至微處理器的緩存器內(nèi)。一般而言,指令300的運(yùn)算碼項(xiàng)目302指定了所要執(zhí)行的特定運(yùn)算,而選用的地址指定元項(xiàng)目303則位于運(yùn)算碼302后,以指定該特定運(yùn)算的相關(guān)附加信息,像是如何執(zhí)行該運(yùn)算,操作數(shù)位于何處等等。指令格式300亦允許程序員在一運(yùn)算碼。302前加上前置碼項(xiàng)目301。在運(yùn)算碼302所指定的特定運(yùn)算執(zhí)行時(shí),前置碼項(xiàng)目301是用來(lái)指示是否要使用既有的架構(gòu)特征。
(0037)然而,本發(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),指定一延伸數(shù)據(jù)模式,以依據(jù)該延伸數(shù)據(jù)模式執(zhí)行一運(yùn)算,其中該延伸數(shù)據(jù)模式是無(wú)法另由該符合舊有規(guī)格微處理器的既有指令集來(lái)加以程序化。這兩個(gè)附加項(xiàng)目304與305可將較大的操作數(shù)/運(yùn)算納入一具有已完全占用的指令集架構(gòu)的微處理器設(shè)計(jì)中,選用項(xiàng)日304與305是一延伸指令標(biāo)記304與一延伸操作數(shù)大小指定元前置碼305。該延伸指令標(biāo)記304是一微處理器指令集內(nèi)另一依據(jù)架構(gòu)所指定的運(yùn)算碼。在一x86的實(shí)施例中,該延伸指令標(biāo)記304,或稱逸出標(biāo)記304,是用運(yùn)算碼狀態(tài)F1H,其為早先使用的ICE BKPT指令。逸出標(biāo)記304向微處理器邏輯指出,該延伸前置碼305,或稱延伸特征指定元305,是跟隨在后,其中該延伸前置碼305指定了對(duì)應(yīng)于一指定運(yùn)算的一操作數(shù)/運(yùn)算大小或數(shù)據(jù)模式。在一具體實(shí)施例中,逸出標(biāo)記304指出,一對(duì)應(yīng)延伸指令300的附隨部分301-303及305指定了微處理器所要執(zhí)行的一延伸運(yùn)算。延伸操作數(shù)大小指定元305,或稱延伸前置碼305,指定了對(duì)應(yīng)于一相關(guān)運(yùn)算的數(shù)個(gè)操作數(shù)大小其中之一。微處理器內(nèi)的延伸執(zhí)行邏輯于執(zhí)行該延伸運(yùn)算時(shí),存取延伸大小的緩存器中的操作數(shù),并使用與該指定的操作數(shù)大小或數(shù)據(jù)模式相一致的處理規(guī)則,來(lái)處理所存取的操作數(shù)。
(0038)此處將本發(fā)明的延伸數(shù)據(jù)模式的技術(shù)作個(gè)概述。一延伸指令是組態(tài)為于一既有微處理器指令集中指定一延伸數(shù)據(jù)模式,其中該延伸數(shù)據(jù)模式無(wú)法另依該既有微處理器指令集來(lái)加以指定。該延伸指令包括該既有指令集的運(yùn)算碼/指令304其中之一以及一n位的延伸特征前置碼305。所選取的運(yùn)算碼對(duì)旨令作為一指針304,以指出指令300是一延伸特征指令300(亦即,其指定了微處理器架構(gòu)的延伸項(xiàng)),該n位的特征前置碼305則指出該延伸數(shù)據(jù)模式。在一具體實(shí)施例中,延伸前置碼305具有八位,最多可指定256種不同的數(shù)據(jù)模式。n位前置碼的實(shí)施例,則最多可指定2n種不同的數(shù)據(jù)模式。在另一實(shí)施例中,提供64位的數(shù)據(jù)模式,以取代符合舊有規(guī)格微處理器中預(yù)設(shè)的數(shù)據(jù)模式(如32位或16位)。因此,在對(duì)應(yīng)的運(yùn)算執(zhí)行時(shí),執(zhí)行邏輯即于64位的操作數(shù)上執(zhí)行64位的運(yùn)算(如加、減、邏輯運(yùn)算等)。在另一實(shí)施例中,則更允許程序員指定64位或128位的數(shù)據(jù)模式。
(0039)現(xiàn)請(qǐng)參閱圖4,一表格400顯示依據(jù)本發(fā)明,緩存器延伸項(xiàng)如何映像至一8位延伸前置碼實(shí)施例的位邏輯狀態(tài)。類似于圖2所討論的運(yùn)算碼圖200,圖4的表格400呈現(xiàn)一8位的延伸數(shù)據(jù)模式前置碼圖400的范例,其將一8位延伸前置碼項(xiàng)日305的最多256個(gè)值,關(guān)聯(lián)到一符合舊有規(guī)格的微處理器的對(duì)應(yīng)延伸數(shù)據(jù)模式401(如E34、E40等)。在一x86的具體實(shí)施例中,本發(fā)明的8位延伸特征前置碼305是提供給數(shù)據(jù)模式401(亦即E00-RFF)之用,該些數(shù)據(jù)模式401乃現(xiàn)行x86指令集架構(gòu)所未能提供的。
(0040)圖4所示的延伸特征401是以一般性的方式表示,而非具體指涉實(shí)際的特征,此因本發(fā)明的技術(shù)可應(yīng)用于各種不同的架構(gòu)延伸項(xiàng)401與特定的指令集架構(gòu)。本領(lǐng)域的技術(shù)人員將發(fā)覺(jué),許多不同的架構(gòu)特征401,其中一些已于上文提及,可依此處所述的逸出標(biāo)記304/延伸前置碼305技術(shù)將其納入一既有的指令集。圖4的8位前置碼實(shí)施例提供了最多256個(gè)不同的特征401,而一n位前置碼實(shí)施例則具有最多2n個(gè)不同特征401的程序化選擇。
(0041)現(xiàn)請(qǐng)參閱圖5,其為解說(shuō)本發(fā)明用以執(zhí)行延伸數(shù)據(jù)模式運(yùn)算的流水線化微處理器500的方塊圖。微處理器500具有三個(gè)明顯的階段類型提取。轉(zhuǎn)譯及執(zhí)行。提取階段具有提取邏輯501,可從指令高速緩存502或外部存儲(chǔ)器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。
(0042)依據(jù)本發(fā)明,于運(yùn)作時(shí),提取邏輯501從指令高速緩存/外部存儲(chǔ)器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)記的指令,以進(jìn)行對(duì)應(yīng)延伸數(shù)據(jù)模式指定元前置碼的轉(zhuǎn)譯/譯碼。在一x86的實(shí)施例中,延伸轉(zhuǎn)譯邏輯505組態(tài)為檢測(cè)其值為FIH的延伸前置碼標(biāo)記,其是x86的ICE BKPT運(yùn)算碼。延伸微指令字段則提供于微指令隊(duì)列506中,以允許在微處理器500內(nèi)指定延伸數(shù)據(jù)模式。
(0043)微指令從微指令隊(duì)列506被送至執(zhí)行邏輯507,其中延伸執(zhí)行邏輯508組態(tài)為依照該延伸微指令字段所指定,存取內(nèi)部的微處理器緩存器。數(shù)個(gè)被指定要用于執(zhí)行一指定運(yùn)算的來(lái)源操作數(shù),則從來(lái)源操作數(shù)延伸緩存器中提取。延伸執(zhí)行邏輯508執(zhí)行微指令所指定的運(yùn)算,并產(chǎn)生對(duì)應(yīng)的結(jié)果。隨著結(jié)果的產(chǎn)生,延伸執(zhí)行邏輯508將該對(duì)應(yīng)結(jié)果回寫至該。延伸微指令字段所指定的目的操作數(shù)延伸緩存器。
(0044)本領(lǐng)域的技術(shù)人員將發(fā)現(xiàn),圖5所示的微處理器500是現(xiàn)代的流水線化微處理器50經(jīng)過(guò)簡(jiǎn)化的結(jié)果。事實(shí)上,現(xiàn)代的流水線化微處理器500最多可包括有20至30個(gè)不同的流水線階段。然而,這些階段可概括地歸類為方塊圖所示的三個(gè)階段,因此,圖5的方塊圖500可用以點(diǎn)明前述本發(fā)明實(shí)施例所需的必要組件。為了簡(jiǎn)明起見(jiàn),微處理器500中無(wú)關(guān)的組件并未顯示出來(lái)。
(0045)現(xiàn)請(qǐng)參閱圖6,其為本發(fā)明用于指定一微處理器延伸操作數(shù)/運(yùn)算的延伸前置碼600的一具體實(shí)施例的方塊圖。延伸操作數(shù)/運(yùn)算指定元前置碼600具8位大小。在一具體實(shí)施例中,8位前置碼600的值指定一對(duì)應(yīng)運(yùn)算的一延伸數(shù)據(jù)模式,其中該對(duì)應(yīng)運(yùn)算是由本發(fā)明的延伸指令的其余部分所指定,如此處所述。在一x86的實(shí)施例中,該延伸數(shù)據(jù)模式(如64位的操作數(shù)/運(yùn)算)被指定,以取代一預(yù)設(shè)的數(shù)據(jù)模式(如32位的操作數(shù)/運(yùn)算)。
(0046)在圖6的本發(fā)明延伸前置碼600的實(shí)施范例中,整個(gè)前置碼600是用于指定一延伸數(shù)據(jù)模式。然而,本領(lǐng)域技術(shù)人員將察覺(jué),指定數(shù)個(gè)延伸數(shù)據(jù)模式其中之一所需的位數(shù),是依該些延伸數(shù)據(jù)模式的數(shù)量而定。因此,一個(gè)能夠指定64位或128位數(shù)據(jù)模式的實(shí)施例,僅需前置碼600的一個(gè)位就足以區(qū)分該兩種模式。所以,前置碼600的其余位便可用于指定一既有指令集架構(gòu)所無(wú)法提供的其它延伸特征。
(0047)現(xiàn)請(qǐng)參閱圖7,其為圖5的微處理器內(nèi)轉(zhuǎn)譯階段邏輯700的具體的方塊圖。轉(zhuǎn)譯階段邏輯700具有一指令緩沖器704,依本發(fā)明,其提供延伸指令至轉(zhuǎn)譯邏輯705。轉(zhuǎn)譯邏輯705是耦接至一具有一延伸特征字段703的機(jī)器特定緩存器(machine specific register)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,其具有一運(yùn)算碼延伸項(xiàng)字段713、一微運(yùn)算碼字段714、一目的字段715、一來(lái)源字段716以及一位移字段717。
(0048)運(yùn)作上,在微處理器通電激活期間,機(jī)器特定緩存器702內(nèi)的延伸字段703的狀態(tài)是藉由信號(hào)激活狀態(tài)(signal power-up state)701決定,以指出該特定微處理器是否能轉(zhuǎn)詳與執(zhí)行本發(fā)明之用以提供微處理器的延伸數(shù)據(jù)模式的延伸指令。在一具體實(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)記的運(yùn)算碼狀態(tài)的指令,將依常用轉(zhuǎn)譯規(guī)則進(jìn)行轉(zhuǎn)譯。在一x86的具體實(shí)施例中,選取運(yùn)算碼狀態(tài)FlH作為標(biāo)記,則在常用的轉(zhuǎn)譯規(guī)則下,遇到F1H將造成不合法的指令異常(exception)。若延伸轉(zhuǎn)譯被除能,指令譯碼器710將轉(zhuǎn)譯/譯碼所有送入的指令,并對(duì)微指令712的所有字段713至717進(jìn)行組態(tài)。然而,在延伸轉(zhuǎn)譯規(guī)則下,若遇到標(biāo)記,則會(huì)被逸出指令檢測(cè)器708檢測(cè)出來(lái)。逸出指令檢測(cè)器708因而使指令譯碼器710轉(zhuǎn)譯/譯碼該延伸指令的其余部分,并對(duì)微指令712的微運(yùn)算碼字段714與位移字段717進(jìn)行組態(tài),而延伸譯碼器709則譯碼/轉(zhuǎn)譯該延伸前置碼,以對(duì)微指令712的微運(yùn)算碼延伸項(xiàng)字段713進(jìn)行組態(tài)。某些特定指令將導(dǎo)致對(duì)控制ROM711的存取,以獲取對(duì)應(yīng)的微指令序列樣板。經(jīng)過(guò)組態(tài)的微指令712被送至一微指令隊(duì)列(未顯示于圖中),由處理器進(jìn)行后續(xù)執(zhí)行。
(0049)現(xiàn)請(qǐng)參閱圖8,其為圖5微處理器內(nèi)的延伸緩存器階段邏輯800的方塊圖。該延伸緩存器階段邏輯800具一緩存器邏輯(register logic)802,其從一微指令緩沖器801或微指令隊(duì)列801提取本發(fā)明的延伸微指令。緩存器邏輯802具一包括數(shù)個(gè)延伸緩存器816的延伸緩存器檔案803。每一延伸緩存器816具一預(yù)設(shè)的操作數(shù)字段814與一操作數(shù)延伸項(xiàng)字段815。在一x86實(shí)施例中,該預(yù)設(shè)的操作數(shù)字段814為32位寬,以支持既有x86的32位操作數(shù)的儲(chǔ)存與提取。在一64位的實(shí)施例中,操作數(shù)延伸項(xiàng)字段815是32位寬,以允許操作數(shù)擴(kuò)充至64位。一128位的實(shí)施例則提供96位的操作數(shù)延伸項(xiàng)字段815。緩存器816由延伸讀取邏輯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。
(0050)運(yùn)作上,延伸微指令與一流水線時(shí)鐘(未顯示)同步,從微指令隊(duì)列801被送至緩存器邏輯802。在一時(shí)鐘周期內(nèi),延伸讀取邏輯802譯碼延伸微指令的來(lái)源操作數(shù)地址字段804、805,以判斷哪些緩存器816包括要用于一指定運(yùn)算的來(lái)源操作數(shù)。延伸微指令801的運(yùn)算碼延伸項(xiàng)字段(未顯示)的值決定了讀取邏輯806于存取緩存器檔案803時(shí)所用的數(shù)據(jù)模式。對(duì)預(yù)設(shè)的數(shù)據(jù)模式而言,只有被尋址的緩存器816內(nèi)的預(yù)設(shè)操作數(shù)字段814被存取。對(duì)延伸數(shù)據(jù)模式而言,會(huì)對(duì)預(yù)設(shè)字段814與操作數(shù)延伸項(xiàng)字段815的一等長(zhǎng)部分進(jìn)行存取,以提取來(lái)源操作數(shù)。因此,來(lái)源操作數(shù)OP1、OP2從緩存器檔案803被提取,并送至來(lái)源操作數(shù)緩存器809、810。而且,延伸微指令被送入流水線至緩沖器808,以供微處理器的后續(xù)流水線階段(未顯示)執(zhí)行。在同一時(shí)鐘周期內(nèi),一最近執(zhí)行運(yùn)算的結(jié)果RS1、RS2被回寫至由完整(completed)微指令緩沖器811中的目的緩存器字段(未顯示)所指定的目的緩存器816中。完整微指令緩沖器811中的運(yùn)算碼延伸項(xiàng)字段(未顯示)的值判斷結(jié)果是否回寫至目的緩存器816的操作數(shù)延伸項(xiàng)字段,以及是延伸項(xiàng)字段815的哪一部份被回寫。對(duì)應(yīng)的結(jié)果操作數(shù)RS1、RS2則被送入緩沖器812、813。
(0051)圖8所示的緩存器階段邏輯800,提供了于單一時(shí)鐘周期內(nèi),一致地存取兩個(gè)來(lái)源緩存器與兩個(gè)結(jié)果緩存器的能力。另一實(shí)施例則提供兩個(gè)來(lái)源操作數(shù)與單一的目的操作數(shù)。為確保緩存器816的一致性,延伸緩存器邏輯802于執(zhí)行結(jié)果RS1、RS2的回寫前,便存取來(lái)源操作數(shù)OP1、OP2。
(0052)現(xiàn)請(qǐng)參閱圖9,其為描述本發(fā)明對(duì)可讓程序員指定微處理器的延伸數(shù)據(jù)模式的指令,進(jìn)行轉(zhuǎn)譯與執(zhí)行的方法的運(yùn)作流程圖。流程開始于方塊902,其中一個(gè)組態(tài)有延伸特征指令的程序,被送至微處理器。流程接著進(jìn)行至方塊904。
(0053)于方塊904中,下一個(gè)指令是從高速緩存/外部存儲(chǔ)器提取。流程接著進(jìn)行至判斷方塊906。
(0054)于判斷方塊906中,對(duì)在方塊904中所提取的下個(gè)指令進(jìn)行檢查,以判斷是否包括一本發(fā)明的延伸逸出碼。在一x86的實(shí)施例中,該檢查是用以檢測(cè)運(yùn)算碼值F1(ICE BKPT)。若檢測(cè)到該延伸逸出碼,則流程進(jìn)行至方塊908。若未檢測(cè)到該延伸逸出碼,則流程進(jìn)行至方塊912。
(0055)于方塊908中,譯碼/轉(zhuǎn)譯該延伸指令的延伸前置碼部分,以決定被指定用以執(zhí)行現(xiàn)行運(yùn)算的一延伸數(shù)據(jù)模式。流程接著進(jìn)行到方塊910。
(0056)于方塊910中,現(xiàn)行運(yùn)算所用的該延伸數(shù)據(jù)模式被指定于一對(duì)應(yīng)微指令序列的延伸項(xiàng)字段。流程接著進(jìn)行至方塊912。
(0057)于方塊912中,該指令的所有其余部分被譯碼/轉(zhuǎn)譯,以決定該指定運(yùn)算,該運(yùn)算的操作數(shù)的地址以及依據(jù)該既有微處理器指令集架構(gòu),由前置碼所指定的既有架構(gòu)特征的使用。流程接著進(jìn)行至方塊914。
(0058)于方塊914中,一微指令序列被組態(tài)為指定該指定運(yùn)算及其對(duì)應(yīng)的運(yùn)算碼延伸項(xiàng)。流程接著進(jìn)行至方塊916。
(0059)于方塊916中,該微指令序列被送至一微指令隊(duì)列,由微處理器執(zhí)行。流程接著進(jìn)行至方塊918。
(0060)于方塊918中,該微指令序列由本發(fā)明的一延伸緩存器邏輯進(jìn)行提取。該延伸緩存器邏輯從指定緩存器中提取對(duì)應(yīng)于該指定運(yùn)算的操作數(shù)。操作數(shù)是依該微指令序列內(nèi)指定的數(shù)據(jù)模式(即預(yù)設(shè)或延伸)定其大小。流程接著進(jìn)行至方塊920。
(0061)于方塊920中,延伸執(zhí)行邏輯運(yùn)用該指定的數(shù)據(jù)模式,使用于方塊918中所存取的操作數(shù)執(zhí)行該指定運(yùn)算,以產(chǎn)生結(jié)果操作數(shù)。流程接著進(jìn)行至方塊922。
(0062)于方塊922中,該結(jié)果操作數(shù)被送至該延伸緩存器邏輯,并以該微指令序列所指定的數(shù)據(jù)模式被回寫至延伸緩存器中。流程接著進(jìn)行至方塊924。
(0063)于方塊924中,本方法完成。
(0064)雖然本發(fā)明及其目的、特征與優(yōu)點(diǎn)已詳細(xì)敘述,其它實(shí)施例亦可包括在本發(fā)明的范圍內(nèi)。例如,本發(fā)明已就如下的技術(shù)加以敘述,利用已完全占用的指令集架構(gòu)內(nèi)一單一、未使用的運(yùn)算碼狀態(tài)作為標(biāo)記,以指出其后的延伸特征前置碼。但本發(fā)明的范圍就任一方面來(lái)看,并不限于已完全占用的指令集架構(gòu),或未使用的指令,或是單一標(biāo)記。相反地,本發(fā)明涵蓋了未完全映像的指令集、具已使用運(yùn)算碼的實(shí)施例以及使用一個(gè)以上的指令標(biāo)記的實(shí)施例。例如,考慮一沒(méi)有未使用運(yùn)算碼狀態(tài)的指令集架構(gòu)。本發(fā)明的一具體實(shí)施例包括了選取一作為逸出標(biāo)記的運(yùn)算碼狀態(tài),其中選取標(biāo)準(zhǔn)是依市場(chǎng)因素而決定。另一具體實(shí)施例則包括使用運(yùn)算碼的一特殊組合作為標(biāo)記,如運(yùn)算碼狀態(tài)7FH的連續(xù)出現(xiàn)。因此,本發(fā)明的本質(zhì)是在于使用一標(biāo)記序列,其后則為一n位的延伸前置碼,可允許程序員于一延伸指令中指定延伸數(shù)據(jù)模式,而該些模式是無(wú)法另由微處理器指令集的既有指令來(lái)提供。
(0065)此外,本發(fā)明主要是以64位與128位的延伸數(shù)據(jù)模式來(lái)進(jìn)行描述。然而,這些模式僅僅是用來(lái)在現(xiàn)代桌上型/膝上型計(jì)算機(jī)微處理器所展現(xiàn)的數(shù)據(jù)模式的脈絡(luò)下,說(shuō)明本發(fā)明的各個(gè)方面。所以本領(lǐng)域技術(shù)人員將知道,本發(fā)明的范圍可以延伸至需要非常大或小的操作數(shù)/運(yùn)算的應(yīng)用程序,或者具有大小可變的操作數(shù)/運(yùn)算的應(yīng)用程序,其中一特定操作數(shù)/運(yùn)算的大小是依據(jù)每個(gè)指令來(lái)指定。
(0066)再者,雖然上文是利用微處理器為例來(lái)解說(shuō)本發(fā)明及其目的、特征和優(yōu)點(diǎn),本領(lǐng)域的技術(shù)人員仍可察覺(jué),本發(fā)明的范圍并不限于微處理器的架構(gòu),而可涵蓋所有形式的可程序化裝置,如信號(hào)處理器。工業(yè)用控制器(industrial controller)、陣列處理機(jī)及其它同類裝置。
總之,以上所述者,僅為本發(fā)明的較佳實(shí)施例而已,當(dāng)不能以的限定本發(fā)明所實(shí)施的范圍。大凡依本發(fā)明權(quán)利要求所作的等效變化與修飾,皆應(yīng)仍屬于本發(fā)明專利涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種用以延伸一微處理器的數(shù)據(jù)模式的裝置,其特征在于,它包括一轉(zhuǎn)譯邏輯,用以將一延伸指令轉(zhuǎn)譯成對(duì)應(yīng)的微指令,由微處理器執(zhí)行,其中該延伸指令包括一延伸前置碼,用以指定對(duì)應(yīng)一指定運(yùn)算的一操作數(shù)的延伸操作數(shù)大小,其中該延伸操作數(shù)大小不能由一既有指令集加以指定;以及一延伸前置碼標(biāo)記,用以指出該延伸前置碼,其中該延伸前置碼標(biāo)記是原本該既有指令集內(nèi)另一依據(jù)架構(gòu)所指定的運(yùn)算碼;以及一延伸執(zhí)行邏輯,耦接至該轉(zhuǎn)譯邏輯,用以接收該對(duì)應(yīng)的微指令,并使用該操作數(shù)來(lái)執(zhí)行該指定運(yùn)算。
2.如權(quán)利要求1所述的裝置,其特征在于所述的延伸指令還包括該既有指令集的指令項(xiàng)目。
3.如權(quán)利要求2所述的裝置,其特征在于所述的指令項(xiàng)目指定該微處理器所要執(zhí)行的該運(yùn)算,且其中對(duì)應(yīng)該運(yùn)算的該操作數(shù)是提取自/儲(chǔ)存至一緩存器,其中該緩存器依據(jù)數(shù)個(gè)操作數(shù)大小支持操作數(shù)的提取/儲(chǔ)存。
4.如權(quán)利要求1所述的裝置,其特征在于所述的延伸前置碼指示該微處理器于執(zhí)行該指定運(yùn)算時(shí),取代該操作數(shù)的一預(yù)設(shè)的操作數(shù)大小。
5.如權(quán)利要求1所述的裝置,其特征在于所述的延伸前置碼包括一延伸操作數(shù)大小字段,用以指定該操作數(shù)的該延伸操作數(shù)大小,其中該延伸操作數(shù)大小是該些操作數(shù)大小之一。
6.如權(quán)利要求1所述的裝置,其特征在于所述的轉(zhuǎn)譯邏輯包括一逸出指令檢測(cè)邏輯,用于檢測(cè)該延伸前置碼標(biāo)記;一指令譯碼邏輯,用以決定該操作數(shù)及所要執(zhí)行的該運(yùn)算;以及一延伸譯碼邏輯,耦接至該逸出指令檢測(cè)邏輯與該指令譯碼邏輯,用以決定該延伸操作數(shù)大小,并于該對(duì)應(yīng)微指令內(nèi)指定該延伸操作數(shù)大小。
7.一種擴(kuò)充一既有微處理器指令集以提供延伸數(shù)據(jù)模式的機(jī)制,其特征在于,它包括一延伸指令,組態(tài)為指定一操作數(shù)的延伸操作數(shù)大小,該操作數(shù)對(duì)應(yīng)一指定運(yùn)算,而該延伸指令包括該既有微處理器指令集其中一選取的運(yùn)算碼,其后則接著一n位的延伸前置碼,該選取的運(yùn)算碼指出該延伸指令,而該n位的延伸前置碼則指出該延伸操作數(shù)大小,其中該延伸操作數(shù)大小不能另依該既有微處理器指令集加以指定;以及一轉(zhuǎn)譯器,組態(tài)為接收該延伸指令,并產(chǎn)生一微指令序列,以指示一微處理器依照該延伸操作數(shù)大小,于該操作數(shù)上執(zhí)行該指定運(yùn)算。
8.如權(quán)利要求7所述的機(jī)制,其特征在于所述的延伸指令還包括其余指令項(xiàng)目,組態(tài)為指定該操作數(shù)與該指定運(yùn)算,其中該指定運(yùn)算的該操作數(shù)是提供自/至一延伸操作數(shù)緩存器。
9.如權(quán)利要求7所述的機(jī)制,其特征在于所述的n位的前置碼包括一數(shù)據(jù)模式取代字段,組態(tài)為指定該延伸操作數(shù)大小予該操作數(shù),其中該延伸操作數(shù)大小包括數(shù)個(gè)操作數(shù)大小其中之 。
10.如權(quán)利要求7所述的機(jī)制,其特征在于所述的轉(zhuǎn)譯器包括一逸出指令檢測(cè)器,用以檢測(cè)該延伸指令內(nèi)的該選取的運(yùn)算碼;一指令譯碼器,用以譯碼該延伸指令的其余部分,以決定該指定運(yùn)算;以及一延伸前置碼譯碼器,耦接至該逸出指令檢測(cè)器及該指令譯碼器,用以譯碼該n位的延伸前置碼,并于該微指令序列內(nèi)指定該延伸操作數(shù)大小。
11.一種為一既有指令集增添延伸數(shù)據(jù)模式能力的指令集延伸模塊,其特征在于,它包括一逸出標(biāo)記,由一轉(zhuǎn)譯邏輯接收,并指出一對(duì)應(yīng)指令的附隨部分加以指定的一微處理器所要執(zhí)行一延伸運(yùn)算,其中該逸出標(biāo)記為該既有指令集內(nèi)的一第一運(yùn)算碼;一延伸操作數(shù)大小指定元,耦接至該逸出標(biāo)記,且為該附隨部分其中之一,用以指定對(duì)應(yīng)該延伸運(yùn)算的數(shù)個(gè)數(shù)據(jù)模式其中之一;以及一延伸執(zhí)行邏輯,耦接至該轉(zhuǎn)譯邏輯,利用所指定的數(shù)據(jù)模式執(zhí)行該延伸運(yùn)算,其中該既有指令集僅提供既有的數(shù)據(jù)模式,而未能提供所指定的數(shù)據(jù)模式。
12.如權(quán)利要求11所述的指令集延伸模塊,其特征在于所述的附隨部分的其余部分包括一第二運(yùn)算碼與選用的數(shù)個(gè)地址指定元,用以指定該延伸運(yùn)算與數(shù)個(gè)操作數(shù),其中該些操作數(shù)是依所指定的數(shù)據(jù)模式加以執(zhí)行。
13.如權(quán)利要求11所述的指令集延伸模塊,其特征在于所述的轉(zhuǎn)譯邏輯將該逸出標(biāo)記與該附隨部分轉(zhuǎn)譯成對(duì)應(yīng)的微指令,該對(duì)應(yīng)的微指令是指示該延伸緩存器邏輯依據(jù)所指定的數(shù)據(jù)模式,于該延伸運(yùn)算執(zhí)行時(shí),存取一延伸緩存器,以提取/儲(chǔ)存一延伸操作數(shù)。
14.如權(quán)利要求11所述的指令集延伸模塊,其特征在于所述的轉(zhuǎn)譯邏輯包括一逸出標(biāo)記檢測(cè)邏輯,用以檢測(cè)該逸出標(biāo)記,并指示該附隨部分的轉(zhuǎn)譯動(dòng)作需依據(jù)延伸轉(zhuǎn)譯常規(guī);以及一譯碼邏輯,耦接至該逸出標(biāo)記檢測(cè)邏輯,用以依據(jù)該既有指令集的常規(guī),執(zhí)行指令的轉(zhuǎn)譯動(dòng)作,并依據(jù)該延伸轉(zhuǎn)譯常規(guī)執(zhí)行該對(duì)應(yīng)指令的轉(zhuǎn)譯,以依據(jù)所指定的數(shù)據(jù)模式,致能該延伸運(yùn)算的執(zhí)行。
15.一種擴(kuò)充一既有指令集架構(gòu)的方法,可在一微處理器內(nèi)程序化地指定一延伸數(shù)據(jù)模式,該方法包括提供一延伸指令,該延伸指令包括一延伸標(biāo)記及一延伸前置碼,其中該延伸標(biāo)記是該既有指令集架構(gòu)其中一第一運(yùn)算碼項(xiàng)目;通過(guò)該延伸前置碼與該延伸指令的其余部分指定該延伸數(shù)據(jù)模式與一指定運(yùn)算,其中該既有指令集架構(gòu)僅提供指定既有數(shù)據(jù)模式而非該延伸數(shù)據(jù)模式的指令;以及依據(jù)該延伸數(shù)據(jù)模式執(zhí)行該指定運(yùn)算。
16.如權(quán)利要求15所述的方法,其特征在于所述的指定延伸數(shù)據(jù)模式的動(dòng)作包括首先指定該指定運(yùn)算,其中該首先指定的動(dòng)作包括使用該既有指令集架構(gòu)中一第二運(yùn)算碼項(xiàng)目。
17.如權(quán)利要求15所述的方法,其特征在于,還包括將該延伸指令轉(zhuǎn)譯成微指令,該微指令是指示一延伸執(zhí)行邏輯依據(jù)該延伸數(shù)據(jù)模式執(zhí)行該延伸運(yùn)算。
18.如權(quán)利要求17所述的方法,其特征在于所述的轉(zhuǎn)譯延伸指令的動(dòng)作包括于一轉(zhuǎn)譯邏輯內(nèi),檢測(cè)該延伸標(biāo)記;以及依照延伸轉(zhuǎn)譯規(guī)則譯碼該延伸前置碼與該延伸指令的其余部分,以取代該延伸運(yùn)算的一預(yù)設(shè)數(shù)據(jù)模式。
全文摘要
本發(fā)明涉及一種裝置及方法,用于擴(kuò)充一微處理器指令集,以提供可由該微處理器指令集的可程序化指令予以指定的延伸大小操作數(shù)。該裝置包括一轉(zhuǎn)譯邏輯與一延伸執(zhí)行邏輯。該轉(zhuǎn)譯邏輯將一延伸指令轉(zhuǎn)譯成對(duì)應(yīng)的微指令,由該微處理器執(zhí)行。該延伸指令具有一延伸前置碼與一延伸前置碼標(biāo)記。該延伸前置碼指定對(duì)應(yīng)一指定運(yùn)算的一操作數(shù)的延伸操作數(shù)大小,其中該延伸操作數(shù)大小是無(wú)法由一即有指令集進(jìn)行指定。該延伸前置碼標(biāo)記則指出該延伸前置碼,且是原本該即有指令集內(nèi)另一依據(jù)架構(gòu)所指定的運(yùn)算碼。該延伸執(zhí)行邏輯耦接至轉(zhuǎn)譯邏輯,用以接收該對(duì)應(yīng)的微指令,并使用該操作數(shù)以執(zhí)行該指定運(yùn)算。
文檔編號(hào)G06F9/22GK1431584SQ03103038
公開日2003年7月23日 申請(qǐng)日期2003年1月28日 優(yōu)先權(quán)日2002年8月22日
發(fā)明者G·葛蘭·亨利, 羅德·E·胡克, 泰瑞·派克斯 申請(qǐng)人:智慧第一公司