指令仿真處理器、方法和系統(tǒng)的制作方法
【專利摘要】本申請(qǐng)涉及指令仿真處理器、方法和系統(tǒng)。根據(jù)本發(fā)明一方面的處理器包括用于接收第一指令和用于確定第一指令將被仿真的解碼邏輯。該處理器還包括與解碼邏輯耦合的仿真模式知曉解碼后指令處理器邏輯。仿真模式知曉解碼后指令處理器邏輯用于處理從指令解碼出的一個(gè)或多個(gè)控制信號(hào)。該指令是用于仿真第一指令的一個(gè)或多個(gè)指令的集合中的一個(gè)。仿真模式知曉解碼后指令處理器邏輯用于在處于仿真模式時(shí)與不處于仿真模式時(shí)不同地處理所述一個(gè)或多個(gè)控制信號(hào)。還公開了其它裝置以及方法和系統(tǒng)。
【專利說明】指令仿真處理器、方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本文中所描述的實(shí)施例一般涉及處理器。具體地,本文所述的各實(shí)施例一般涉及處理器中的指令仿真。
【背景技術(shù)】
[0002]處理器通常具有指令集架構(gòu)(ISA)。ISA 一般表示處理器的架構(gòu)中涉及編程的那部分。ISA通常包括處理器的原生指令、架構(gòu)寄存器、數(shù)據(jù)類型、尋址模式等。ISA的一部分是指令集。該指令集一般包括提供給處理器以供執(zhí)行的宏指令或ISA級(jí)指令。包括執(zhí)行邏輯和其他流水線邏輯以處理該指令集中的指令。通常,這樣的執(zhí)行邏輯和其他流水線邏輯的數(shù)量可能相當(dāng)大。通常,指令集中的指令越多,并且該指令集中的指令越復(fù)雜和/或越專門化,這樣的邏輯的數(shù)量越大。這樣的硬件趨于增加處理器的制造成本、大小和/或功耗。
【專利附圖】
【附圖說明】
[0003]通過參考用來說明本發(fā)明的實(shí)施例的以下描述和附圖,可最好地理解本發(fā)明。在附圖中:
[0004]圖1是計(jì)算機(jī)系統(tǒng)的實(shí)施例的框圖;
[0005]圖2是在處理器中仿真指令的方法的實(shí)施例的流程框圖。
[0006]圖3是示出用一個(gè)或多個(gè)指令的集合來仿真指令的邏輯的實(shí)施例的框圖。
[0007]圖4是示出用于允許處理器在處于仿真模式時(shí)以與不處于仿真模式時(shí)不同的方式處理異常情況的邏輯的實(shí)施例的框圖。
[0008]圖5是示出用于允許處理器在處于仿真模式時(shí)與不處于仿真模式時(shí)不同地訪問資源和/或信息的邏輯的實(shí)施例的框圖。
[0009]圖6是由處理器和/或在處理器中執(zhí)行的方法的實(shí)施例的流程框圖。
[0010]圖7是示出允許給定操作碼具有不同含義的邏輯的實(shí)施例的框圖。
[0011]圖8是可由操作系統(tǒng)模塊執(zhí)行的方法的實(shí)施例的流程框圖。
[0012]圖9是程序加載器模塊的實(shí)施例的框圖,該程序加載器模塊包括用于選擇軟件庫(kù)中具有對(duì)于將使用它們的軟件而言合適的給定操作碼含義的一個(gè)或多個(gè)功能、子例程、或其他部分的集合的選擇模塊。
[0013]圖1OA是示出了根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線和示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線的框圖。
[0014]圖1OB是示出了根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序架構(gòu)核和示例性寄存器重命名,無序發(fā)布/執(zhí)行架構(gòu)核的示例性實(shí)施例的框圖。
[0015]圖1lA是根據(jù)本發(fā)明的實(shí)施例的單處理器核以及其到管芯上(on-die)互聯(lián)網(wǎng)絡(luò)的連接以及二級(jí)(L2)高速緩存的其本地子集的框圖。
[0016]圖1lB是根據(jù)本發(fā)明的各實(shí)施例的圖1lA中的處理器核的一部分的展開圖。
[0017]圖12是根據(jù)本發(fā)明的實(shí)施例的可具有一個(gè)以上核、可具有集成存儲(chǔ)器控制器、并且可具有集成圖形器件的處理器的框圖。
[0018]圖13示出根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。
[0019]圖14示出根據(jù)本發(fā)明的實(shí)施例的第一更具體的示例性系統(tǒng)的框圖。
[0020]圖15示出根據(jù)本發(fā)明的實(shí)施例的第二更具體的示例性系統(tǒng)的框圖。
[0021]圖16示出根據(jù)本發(fā)明的實(shí)施例的片上系統(tǒng)(SoC)的框圖。
[0022]圖17是根據(jù)本發(fā)明的各實(shí)施例的對(duì)比使用軟件指令轉(zhuǎn)換器來將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖。
【具體實(shí)施方式】
[0023]本文公開了指令仿真處理器、方法和系統(tǒng)。在以下描述中,闡述了許多具體細(xì)節(jié)(例如,具體的仿真模式知曉邏輯、用于處理異常情況的方法、特權(quán)級(jí)資源和信息的類型、邏輯實(shí)現(xiàn)、宏架構(gòu)細(xì)節(jié)、操作序列、邏輯劃分/集成細(xì)節(jié)、硬件/軟件劃分細(xì)節(jié)、處理器配置、系統(tǒng)組件的類型和相互關(guān)系等)。然而,應(yīng)該理解,本發(fā)明的各實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)施。在其他情況下,沒有詳細(xì)示出已知的電路、結(jié)構(gòu),以及技術(shù),以便不至于使本描述變得模糊。
[0024]圖1是計(jì)算機(jī)系統(tǒng)100的實(shí)施例的框圖。在各個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)可以表示臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本電腦、平板計(jì)算機(jī)、上網(wǎng)本、智能電話、個(gè)人數(shù)字助理、蜂窩電話、服務(wù)器、網(wǎng)絡(luò)設(shè)備(例如,路由器或交換機(jī))、移動(dòng)因特網(wǎng)設(shè)備(MID)、媒體播放器、智能電視、機(jī)頂盒、視頻游戲控制器、或其他類型的電子設(shè)備。
[0025]計(jì)算機(jī)系統(tǒng)包括處理器101的實(shí)施例。在某些實(shí)施例中,處理器可以是通用處理器。例如,處理器可以是通常用作中央處理單元(CPU)的類型的通用處理器。在其他實(shí)施例中,處理器可以是專用處理器。合適的專用處理器的示例包括但不限于,協(xié)處理器、圖形處理器、通信處理器、網(wǎng)絡(luò)處理器、加密處理器、嵌入式處理器、以及數(shù)字信號(hào)處理器(DSP),這里僅給出幾個(gè)示例。處理器可以是各種復(fù)雜指令集計(jì)算(CISC)處理器、各種精簡(jiǎn)指令集計(jì)算(RISC)處理器、各種超長(zhǎng)指令字(VLIW)處理器、其各種混合型、或完全其他類型的處理器中的任何一種。
[0026]計(jì)算機(jī)系統(tǒng)還包括通過耦合機(jī)構(gòu)109與處理器101耦合的存儲(chǔ)器110的實(shí)施例。本領(lǐng)域公知的用于耦合處理器和存儲(chǔ)器的任何常規(guī)耦合機(jī)構(gòu)均是合適的。這樣的機(jī)構(gòu)的示例包括但不限于互連、總線、中樞、存儲(chǔ)器控制器、芯片組、芯片組組件等,及其組合。存儲(chǔ)器可包括相同類型或不同類型的一個(gè)或多個(gè)存儲(chǔ)器設(shè)備。適合于各實(shí)施例的一個(gè)常用類型的存儲(chǔ)器是動(dòng)態(tài)的隨機(jī)存取存儲(chǔ)器(DRAM),但是可另選地使用其他類型的存儲(chǔ)器(例如,閃存)。
[0027]存儲(chǔ)器110可以具有存儲(chǔ)在其中的軟件111。軟件可以包括例如一個(gè)或多個(gè)操作系統(tǒng)(OS)以及一個(gè)或多個(gè)應(yīng)用。在操作期間,軟件的部分可以被加載到處理器上,并在處理器上運(yùn)行。如圖所示,處理器可以接收處理器的指令集中的ISA指令102。例如,指令提取單元可以提取ISA指令。ISA指令可以表示提供給處理器以被解碼和執(zhí)行的宏指令、匯編語言指令、機(jī)器級(jí)指令或其他指令。如圖所示,在某些實(shí)施例中,ISA指令可以包括非仿真指令103和一個(gè)或多個(gè)類型的被仿真指令104 二者。
[0028]處理器包括解碼邏輯105。解碼邏輯也可以被稱為解碼單元或解碼器。解碼邏輯可以接收ISA指令102。在非仿真指令103的情況下,解碼邏輯可以解碼相對(duì)較高級(jí)的指令并輸出一個(gè)或多個(gè)相對(duì)較低級(jí)的微指令、微操作、微代碼接入點(diǎn)、或從ISA指令導(dǎo)出的其他相對(duì)較低級(jí)的指令或控制信號(hào)。在本說明中,這些被示為經(jīng)解碼指令106。從解碼器輸出的這些經(jīng)解碼指令可以反映、表示輸入到該解碼器的較高級(jí)的ISA指令和/或從其導(dǎo)出,并且可以通過一個(gè)或多個(gè)較低級(jí)(例如,電路級(jí)或硬件級(jí))操作來實(shí)現(xiàn)這些ISA指令??墒褂酶鞣N不同的機(jī)制來實(shí)現(xiàn)解碼器,這些機(jī)制包括但不限于,微代碼只讀存儲(chǔ)器(ROM)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、以及在本領(lǐng)域中已知的用于實(shí)現(xiàn)解碼器的其他機(jī)制。
[0029]解碼后指令處理器邏輯107與解碼邏輯耦合。解碼后指令處理器邏輯可以表示處理處理器流水線的指令的解碼后部分。解碼后指令處理器邏輯可以接收并處理經(jīng)解碼指令106。通常,解碼后指令處理器邏輯可以包括寄存器讀和/或存儲(chǔ)器讀邏輯、執(zhí)行邏輯、寄存器和/或存儲(chǔ)器寫回邏輯、和異常處理程序邏輯,但是該邏輯可以隨架構(gòu)不同而改變,并且本發(fā)明的范圍不限于這樣的邏輯。在某些實(shí)施例中,例如,在無序處理器流水線的情況下,解碼后指令處理器邏輯可以任選地包括其他邏輯,諸如,作為示例的分配邏輯、重命名邏輯、調(diào)度邏輯、引退或提交邏輯等。
[0030]處理器還包括架構(gòu)可見的寄存器或架構(gòu)寄存器108的一個(gè)或多個(gè)集合。架構(gòu)可見的寄存器表示軟件和/或編程員可見的寄存器,和/或由ISA指令102指定來標(biāo)識(shí)操作數(shù)的寄存器。這些架構(gòu)寄存器與給定微架構(gòu)中的其他非架構(gòu)的或非架構(gòu)可見的寄存器(例如,指令所使用的臨時(shí)寄存器,重新排序緩沖器,引退寄存器等等)不同。這些架構(gòu)寄存器一般表示用于存儲(chǔ)數(shù)據(jù)的管芯上處理器存儲(chǔ)位置。這些架構(gòu)寄存器在本文中通常被簡(jiǎn)稱為寄存器。作為示例,這些架構(gòu)寄存器可以包括一組通用寄存器、一組打包數(shù)據(jù)寄存器、一組浮點(diǎn)寄存器、一組整數(shù)寄存器或其某種組合。架構(gòu)寄存器可使用公知技術(shù)在不同的微架構(gòu)中以不同的方式實(shí)現(xiàn),并且不限于任何特定類型的電路。合適類型的架構(gòu)寄存器的示例包括但不限于,專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配的物理寄存器、以及其組合。
[0031]解碼后指令處理器邏輯107與寄存器108耦合。解碼后指令處理器邏輯可以從寄存器接收數(shù)據(jù),并將數(shù)據(jù)寫入或存儲(chǔ)到寄存器中。例如,寄存器讀邏輯可以從寄存器讀取被指示為指令的源操作數(shù)的數(shù)據(jù),和/或?qū)懟剡壿嬁梢詫⒈恢甘緸橹噶畹哪康牡夭僮鲾?shù)的結(jié)果寫入或存儲(chǔ)到寄存器中。解碼后指令處理器邏輯也與存儲(chǔ)器110耦合,并且可以從該存儲(chǔ)器接收數(shù)據(jù)并將數(shù)據(jù)存儲(chǔ)到該存儲(chǔ)器中。例如,存儲(chǔ)器讀取邏輯可以從各存儲(chǔ)器位置讀出各指令所指示的數(shù)據(jù),和/或存儲(chǔ)器寫回邏輯可以將各指令所指示的數(shù)據(jù)寫入各存儲(chǔ)器位置。
[0032]再次參考圖1,被仿真指令104也可以被提供給解碼邏輯105。與非仿真指令103相反,被仿真指令104可能無法完全由解碼邏輯解碼并作為相應(yīng)的經(jīng)解碼指令106被提供給解碼后指令處理器邏輯107。相反,在某些實(shí)施例中,可以提供仿真邏輯115來仿真被仿真指令104。在本領(lǐng)域,可以將各種不同的術(shù)語給予這樣的仿真,諸如,作為示例的指令轉(zhuǎn)換、二進(jìn)制轉(zhuǎn)換、代碼變形、指令解譯等。術(shù)語“仿真”在本文中被廣泛用于涵蓋該業(yè)內(nèi)使用的這些各種不同的術(shù)語。
[0033]如圖所示,在某些實(shí)施例中,仿真邏輯115可以劃分成部分是管芯上的仿真邏輯117而部分是管芯外的仿真邏輯113,但是這不是必須的。在其他實(shí)施例中,全部仿真邏輯115可以任選地為在管芯上,或者大部分仿真邏輯可以任選地為在管芯外,但是通常將存在至少某個(gè)管芯上仿真邏輯(例如,仿真模式118、在流水線中的某個(gè)仿真模式知曉指令處理器邏輯120等)。該管芯上仿真邏輯與處理器一起被固定、駐留、或保持在管芯上的。通常,即使在處理器已斷電時(shí)、在引導(dǎo)之前和/或在制造完成時(shí),該管芯上仿真邏輯也與處理器一起存在于管芯上。合適的管芯上仿真邏輯的示例包括但不限于硬件(例如,集成電路、晶體管等)、固件(例如,管芯上ROM、EPROM、閃存、或其他持久或非易失性存儲(chǔ)器和存儲(chǔ)在其中的非易失性指令)、或其組合。
[0034]管芯外仿真邏輯113可以被包括在存儲(chǔ)器110中。管芯外仿真邏輯可以與管芯上仿真邏輯耦合或以其他方式與管芯上仿真邏輯通信。在某些實(shí)施例中,管芯外仿真邏輯可以被包括在存儲(chǔ)器的受保護(hù)區(qū)域或部分112中。在某些實(shí)施例中,可保留受保護(hù)部分以供處理器的管芯上硬件和/或固件邏輯單獨(dú)使用,但不供該處理器上執(zhí)行的軟件111使用。例如,在某些實(shí)施例中,管芯上仿真邏輯117、仿真模式知曉指令處理器邏輯120和/或潛在的其他管芯上處理器邏輯可以能夠訪問并使用管芯外仿真邏輯113,但在該處理器上運(yùn)行的軟件111 (例如,操作系統(tǒng)或應(yīng)用)可能無法訪問或使用管芯外仿真邏輯113。在某些實(shí)施例中,可保護(hù)管芯外仿真邏輯免于被應(yīng)用、操作系統(tǒng)、虛擬機(jī)管理器(如果存在的話)和/或I/O設(shè)備訪問和修改,或者免于對(duì)應(yīng)用、操作系統(tǒng)、虛擬機(jī)管理器(如果存在的話)和/或I/O設(shè)備可見。這可能有助于促進(jìn)安全性。
[0035]解碼邏輯包括用于檢測(cè)或識(shí)別被仿真指令104的邏輯119。例如,解碼器可以基于操作碼來檢測(cè)被仿真指令。在某些實(shí)施例中,在檢測(cè)到被仿真指令后,解碼器可以將仿真模式信號(hào)116 (例如,仿真捕獲(trap)信號(hào))提供給仿真邏輯115。如圖所示,仿真邏輯可以具有仿真模式118。作為示例,仿真模式可以包括處理器的控制或配置寄存器中的一個(gè)或多個(gè)比特或控制,以指示該處理器(例如,邏輯105、107等)是否處于仿真模式中。在某些實(shí)施例中,可以在從解碼器接收到指示被仿真指令104將被仿真的仿真模式信號(hào)116后進(jìn)入仿真模式118。
[0036]在某些實(shí)施例中,解碼邏輯105還可以將與正被仿真的指令相關(guān)聯(lián)的其他信息提供給仿真邏輯115。這樣的信息的示例潛在地包括但不限于操作數(shù)標(biāo)識(shí)符(例如,源寄存器地址或目的寄存器地址或存儲(chǔ)器位置)、存儲(chǔ)器尋址模式、即時(shí)數(shù)、加速執(zhí)行的常數(shù)、和/或來自被仿真指令104和/或與被仿真指令104相關(guān)聯(lián)的其他信息。作為示例,可以潛在地提供來自被仿真指令和/或與被仿真指令相關(guān)聯(lián)的、對(duì)仿真系統(tǒng)有用的允許該仿真系統(tǒng)對(duì)被仿真指令104進(jìn)行仿真的任何信息。
[0037]在某些實(shí)施例中,仿真邏輯115可以包括一個(gè)或多個(gè)指令114的不同集合以對(duì)每一種不同類型的被仿真指令104進(jìn)行仿真。例如,可以提供一個(gè)或多個(gè)指令114的第一集合以對(duì)具有第一操作碼的第一指令104進(jìn)行仿真,并且可以提供一個(gè)或多個(gè)指令114的第二不同集合以對(duì)具有第二不同操作碼的第二不同指令104進(jìn)行仿真。在某些實(shí)施例中,每一集合可以包括至少三個(gè)指令。在所示的實(shí)施例中,一個(gè)或多個(gè)指令114的集合被包括在管芯外仿真邏輯113中,但這不是必須的。在其他實(shí)施例中,指令114可以被提供在管芯上(例如,在管芯上仿真邏輯117的持久或非易失性存儲(chǔ)器中)。在又一些實(shí)施例中,指令114的部分可以被提供在管芯上(例如,在管芯上仿真邏輯中),而部分可以被提供在管芯外(例如,在管芯外仿真邏輯中)。
[0038]在某些實(shí)施例中,可以從仿真邏輯115中提取(fetch)或者以其他方式檢取(retrieve)用于對(duì)被仿真指令104進(jìn)行仿真的一個(gè)或多個(gè)指令114的集合中的每個(gè)指令,并將其提供給解碼邏輯105。在某些實(shí)施例中,用于仿真被仿真指令104的一個(gè)或多個(gè)指令114的集合中的每個(gè)指令可以是與經(jīng)仿真指令104相同的指令集合。解碼邏輯105可以用于將一個(gè)或多個(gè)指令114的集合中的每一個(gè)指令解碼成相應(yīng)的經(jīng)解碼指令106。經(jīng)解碼指令可以被提供給解碼后指令處理器邏輯107。
[0039]解碼后指令處理器邏輯包括仿真模式知曉指令處理器邏輯120的實(shí)施例。如圖所示,仿真模式知曉指令處理器邏輯可以與仿真模式118耦合,或者以其他方式知曉仿真模式118。在某些實(shí)施例中,仿真模式知曉指令處理器邏輯可用于在處理器處于仿真模式時(shí)在至少某些方面與該處理器不處于仿真模式時(shí)不同地處理指令114的經(jīng)解碼版本中的至少一些。處理過程可在各種不同方面存在差異。在某些實(shí)施例中,當(dāng)處于仿真模式時(shí),可以與在不處于仿真模式時(shí)不同地執(zhí)行故障處理或錯(cuò)誤處理。在其他實(shí)施例中,當(dāng)處于仿真模式時(shí)可與不處于仿真模式時(shí)不同地處理對(duì)于特定類型的資源和/或信息(例如,舉例來說,安全、特權(quán)級(jí)或以其他方式控制訪問的資源和/或信息)的訪問。例如,當(dāng)處于仿真模式時(shí)可允許對(duì)于資源和/或信息的訪問,但當(dāng)不處于仿真模式時(shí)則不允許。
[0040]當(dāng)處于仿真模式時(shí),解碼后指令處理器邏輯可訪問存儲(chǔ)位置121。在所示實(shí)施例中,存儲(chǔ)位置121是管芯上仿真邏輯117的一部分??商鎿Q地,存儲(chǔ)位置可包括在管芯外仿真邏輯中,或者部分包括于管芯上仿真邏輯內(nèi)且部分包括于管芯外仿真邏輯內(nèi)。存儲(chǔ)位置可用于存儲(chǔ)臨時(shí)變量、中間結(jié)果和/或與指令集114的執(zhí)行相關(guān)聯(lián)的執(zhí)行狀態(tài)。這可有助于避免保存具有已仿真指令104的原始程序的執(zhí)行狀態(tài)的需要,和/或可有助于保護(hù)這樣的執(zhí)行狀態(tài)(例如,架構(gòu)寄存器108的內(nèi)容)免于被指令集114的處理所破壞。在某些實(shí)施例中,存儲(chǔ)位置121可仿真架構(gòu)寄存器,但這不是必需的。在一些實(shí)施例中,存儲(chǔ)位置121的內(nèi)容可獨(dú)立于、隔離于、和/或受保護(hù)以免于應(yīng)用程序、操作系統(tǒng)、虛擬機(jī)管理器、I/O設(shè)備、中斷等等的訪問。一旦完成指令集114,處理器的架構(gòu)狀態(tài)可被更新(例如,結(jié)果可從存儲(chǔ)位置121被存儲(chǔ)到寄存器108)。這可通過低等待時(shí)間訪問來完成。通常,這可用于近似、模仿、類似或以其他方式仿真可能已產(chǎn)生的架構(gòu)狀態(tài)的變化和/或當(dāng)被仿真指令104實(shí)際已經(jīng)被直接執(zhí)行時(shí)可能已發(fā)生的處理器行為。
[0041]為了避免混淆描述,已示出和描述了相對(duì)簡(jiǎn)單的處理器101。在其他實(shí)施例中,處理器可任選地包括其他公知的元件。實(shí)際上,處理器中的組件有大量不同的組合和配置,并且實(shí)施例不限于任何特定的組合或配置。處理器可代表集成電路,或是一個(gè)或多個(gè)半導(dǎo)體管芯或芯片(例如,單個(gè)管芯或芯片,或是包括兩個(gè)或多個(gè)管芯或芯片的封裝)的集合。在某些實(shí)施例中,處理器可代表片上系統(tǒng)(SoC)和/或芯片多處理器(CMP)。
[0042]某些處理器使用相對(duì)復(fù)雜的操作。例如,替代僅有單個(gè)存儲(chǔ)器訪問,某些指令執(zhí)行多個(gè)存儲(chǔ)器訪問。一個(gè)示例是用于從存儲(chǔ)器收集數(shù)據(jù)元素的向量的向量收集指令。作為另一個(gè)示例,代替比較對(duì)數(shù)據(jù)元素的或比較在兩個(gè)打包數(shù)據(jù)中的數(shù)對(duì)相應(yīng)數(shù)據(jù)元素,特定指令可執(zhí)行很多數(shù)據(jù)元素比較。示例是向量沖突指令和字符串處理指令。一種方法是完全地以硬件實(shí)現(xiàn)這種復(fù)雜的操作。然而,所需的硬件量常常會(huì)趨于相當(dāng)可觀,這往往會(huì)增加制造成本、管芯大小、和功耗。另一種方法是至少部分地以微代碼來實(shí)現(xiàn)這種復(fù)雜的操作。使用微代碼可有助減少實(shí)現(xiàn)這種復(fù)雜的操作所需的硬件量,并且/或者可有助于允許特定的已有硬件被重復(fù)使用。然而,某些處理器不使用微代碼(例如,不使用微代碼來實(shí)現(xiàn)指令集的任何指令)。
[0043]在某些實(shí)施例中,相對(duì)更為復(fù)雜的指令可用一個(gè)或多個(gè)相對(duì)更為簡(jiǎn)單的指令的集合來仿真。術(shù)語“更復(fù)雜”和“更簡(jiǎn)單”是相對(duì)性用語,不是絕對(duì)性用語,它們是彼此相對(duì)而言的。因此,這可潛在地有助于減少實(shí)現(xiàn)更復(fù)雜指令所需的硬件量,并且/或者可有助于被用于仿真更復(fù)雜指令的一個(gè)或多個(gè)指令所使用的現(xiàn)有硬件的重復(fù)使用。在一些實(shí)施例中,采用一個(gè)或多個(gè)更簡(jiǎn)單指令對(duì)更復(fù)雜指令的仿真可用于提供更復(fù)雜指令的類-微代碼的實(shí)現(xiàn),即便處理器在某些實(shí)施例中可能沒有被配置成使用微代碼和/或沒有被配置成使用微代碼來實(shí)現(xiàn)該更復(fù)雜指令。
[0044]圖2是在處理器中仿真指令的方法230的實(shí)施例的流程框圖。在一些實(shí)施例中,圖2的操作和/或方法可由圖1的處理器執(zhí)行,和/或在圖1的處理器內(nèi)執(zhí)行。本文中針對(duì)圖1的處理器描述的組件、特征和具體的任選細(xì)節(jié)也可任選地適用于圖2的操作和/或方法。替代地,圖2的操作和/或方法可由類似的或完全不同的處理器執(zhí)行,和/或在類似的或完全不同的處理器內(nèi)執(zhí)行。此外,圖1的處理器可執(zhí)行類似于或不同于圖2的操作和/或方法的操作和/或方法。
[0045]該方法包括在框231接收第一指令。在某些實(shí)施例中,第一指令可以在解碼器處被接收。該方法包括在框232確定要仿真第一指令。在某些實(shí)施例中,解碼器可通過確定第一指令的操作碼是在要進(jìn)行仿真的指令的一個(gè)或多個(gè)操作碼的集合之中,來確定要仿真第一指令。該方法包括在框233接收要用來仿真第一指令的一個(gè)或多個(gè)指令的集合。在某些實(shí)施例中,可在解碼器處從管芯上仿真邏輯、管芯外仿真邏輯或其組合接收該指令集。在某些實(shí)施例中,該集合的每個(gè)指令可以和第一指令是相同指令集的。該方法包括,在框234,在處于仿真模式時(shí)與在不處于仿真模式時(shí)不同地處理從該集合的指令導(dǎo)出的一個(gè)或多個(gè)控制信號(hào)。
[0046]在不同的實(shí)施例中,這可以按不同的方式來完成。在某些實(shí)施方式中,在對(duì)集合中指令的處理期間遭遇的異常情況可被不同地處理。在某些實(shí)施方式中,對(duì)集合中指令的處理可允許訪問在不處于仿真模式中時(shí)對(duì)相同指令(即,具有相同操作碼的指令)不可用的信息和/或資源。
[0047]圖3是示出用一個(gè)或多個(gè)指令(例如,更簡(jiǎn)單指令)的集合來仿真指令(例如,復(fù)雜指令)304的邏輯301的實(shí)施例的框圖。在某些實(shí)施例中,圖3的邏輯可以被包括在圖1的處理器和/或計(jì)算機(jī)系統(tǒng)中?;蛘?,圖3的邏輯可以被包括在相似的或不同的處理器或計(jì)算機(jī)系統(tǒng)中。此外,圖1的處理器和/或計(jì)算機(jī)系統(tǒng)可包括和圖3的邏輯類似或不同的邏輯。
[0048]要被仿真的指令(例如,復(fù)雜指令)304可被提供給解碼邏輯305。解碼邏輯可包括邏輯319,用于檢測(cè)指令304,例如,用于檢測(cè)指令304的操作碼在要被仿真的指令的操作碼集合中。如所示,在某些實(shí)施例中,處理器可不具有操作碼330。解碼邏輯可提供仿真模式信號(hào)316給仿真邏輯315。在各種實(shí)施例中,仿真邏輯315可包括管芯上邏輯、管芯外邏輯,或包括管芯上邏輯和管芯外邏輯二者。仿真邏輯可響應(yīng)于仿真模式信號(hào)而進(jìn)入仿真模式 318。
[0049]仿真邏輯還包括可用于仿真(例如,更復(fù)雜的)指令304的一個(gè)或多個(gè)(例如,更簡(jiǎn)單的)指令314的集合。在某些實(shí)施例中,一個(gè)或多個(gè)指令314可以和指令304是相同指令集的。在某些實(shí)施例中,一個(gè)或多個(gè)指令314可以和當(dāng)不處于仿真模式中時(shí)被解碼和執(zhí)行的其他指令相同。為了仿真(例如,更復(fù)雜的)指令304,一個(gè)或多個(gè)(例如,更簡(jiǎn)單的)指令314可被提供給解碼邏輯。解碼邏輯可將指令314的每一個(gè)解碼為一個(gè)或多個(gè)經(jīng)解碼指令306。
[0050]解碼后指令處理器邏輯307可接收對(duì)應(yīng)于指令314的經(jīng)解碼指令306。解碼后指令處理器邏輯可包括仿真模式知曉邏輯320的實(shí)施例。如圖所示,在某些實(shí)施例中,仿真模式知曉邏輯可以與仿真模式318耦合,或者以其他方式知曉仿真模式318。在某些實(shí)施例中,仿真模式知曉邏輯可用于當(dāng)處理器處于仿真模式318時(shí)與當(dāng)處理器不處于該仿真模式時(shí)不同地處理對(duì)應(yīng)于指令314的經(jīng)解碼指令306。在某些實(shí)施例中,當(dāng)處于仿真模式時(shí),可以與不處于仿真模式時(shí)不同地執(zhí)行故障處理或錯(cuò)誤處理。例如,邏輯320可使用下文針對(duì)圖4所討論的可任選方面。在其他實(shí)施例中,當(dāng)處于仿真模式時(shí),可選擇性地提供對(duì)于特定資源和/或信息的訪問,但當(dāng)處理器不處于仿真模式時(shí)則不提供。例如,邏輯320可使用下文針對(duì)圖5所討論的可任選方面。
[0051]有利地,在某些實(shí)施例中,更復(fù)雜指令可采用更簡(jiǎn)單指令/操作的集合來實(shí)現(xiàn)。有利地,這可潛在地有助于減少實(shí)現(xiàn)更復(fù)雜指令所需的硬件量,并且/或者可有助于允許被用于仿真該更復(fù)雜指令的一個(gè)或多個(gè)指令所使用的現(xiàn)有硬件的重復(fù)使用。在一些實(shí)施例中,采用一個(gè)或多個(gè)更簡(jiǎn)單指令對(duì)更復(fù)雜指令的仿真可用于提供更復(fù)雜指令的類-微代碼的實(shí)現(xiàn),即便處理器在某些實(shí)施例中可能沒有被配置成使用微代碼和/或沒有被配置成使用微代碼來實(shí)現(xiàn)更為復(fù)雜的指令。在某些實(shí)施例中,更簡(jiǎn)單指令/操作甚至可與更復(fù)雜指令是相同指令集的。
[0052]使用更簡(jiǎn)單指令對(duì)更復(fù)雜指令的這種仿真僅僅是要仿真指令的可能原因的一個(gè)示例。在其他實(shí)施例中,被仿真指令可以是相對(duì)低頻使用的指令(即,不頻繁使用),且可使用相對(duì)高頻使用一個(gè)或多個(gè)指令來仿真。有利地,這可潛在地有助于減少實(shí)現(xiàn)低頻使用指令所需的硬件量,并且/或者可有助于允許被用于仿真該低頻使用指令的一個(gè)或多個(gè)指令所使用的現(xiàn)有硬件的重復(fù)使用。在其他實(shí)施例中,被仿真指令可以是較老和/或過期的指令,并且/或者可以是處在被棄用(deprecated)過程中的指令,且可由一個(gè)或多個(gè)其他指令來仿真。有利地,該仿真可有助于允許正被棄用的指令仍得以執(zhí)行,并藉此向軟件提供向后兼容性,同時(shí)還潛在地有助于減少實(shí)現(xiàn)該被棄用的指令所需的硬件量,并且/或者有助于允許被用于仿真該被棄用指令的一個(gè)或多個(gè)指令所使用的現(xiàn)有硬件的重復(fù)使用。本領(lǐng)域技術(shù)人員將明顯得知本申請(qǐng)所公開的仿真的其他使用并得到本公開的益處。
[0053]圖4是示出用于允許處理器在處于仿真模式時(shí)與不處于仿真模式時(shí)不同地處理異常情況的邏輯401的實(shí)施例的框圖。在某些實(shí)施例中,圖4中的邏輯可以被包括在圖1的處理器和/或計(jì)算機(jī)系統(tǒng)中,和/或圖3的邏輯中。或者,圖4的邏輯可以被包括在相似的或不同的處理器或計(jì)算機(jī)系統(tǒng)中。此外,圖1的處理器和/或計(jì)算機(jī)系統(tǒng)和/或圖3的邏輯可以包括與圖4的邏輯相似或不同的邏輯。
[0054]在處理器不處于仿真模式418時(shí),將給定指令(例如,具有給定操作碼的指令)的第一實(shí)例403-1提供給解碼邏輯405。在處理器正在仿真模式418中操作時(shí),將相同給定指令的第二實(shí)例403-2 (例如,具有相同給定操作碼的另一指令)提供給該解碼邏輯。可以響應(yīng)于解碼器接收到被仿真指令而從用于仿真該被仿真指令的一個(gè)或多個(gè)指令414的集合中提供給定指令的第二實(shí)例403-2。該指令集合可以被包括在可在管芯上、在管芯外、或部分在管芯上且部分在管芯外的仿真邏輯415中。仿真邏輯515可以具有本文中別處提到的仿真邏輯的任選特征中的任何一個(gè)特征。解碼邏輯可為給定指令的第一實(shí)例403-1和第二實(shí)例403-2中的每一個(gè)提供一個(gè)或多個(gè)經(jīng)解碼指令的集合(例如相同的集合)。
[0055]解碼后指令處理邏輯407可接收經(jīng)解碼指令406。解碼后指令處理邏輯包括仿真模式知曉異常情況處理程序邏輯420。仿真模式知曉異常情況處理程序邏輯用于以仿真模式知曉的方式來處置/處理異常情況。本文中所使用的術(shù)語“異常情況”寬泛地指代當(dāng)處理指令時(shí)可發(fā)生的各種不同類型的異常情況。這種異常情況的示例包括但不限于:異常、中斷、故障、捕獲(trap)等等。術(shù)語“異?!?、“中斷”、“故障”和“捕獲”在本領(lǐng)域中通常被以不同方式使用。術(shù)語“異常”可能更為常用于指代響應(yīng)于權(quán)限沖突、權(quán)限異常、頁(yè)故障、存儲(chǔ)器保護(hù)故障、除以零、嘗試執(zhí)行非法操作碼或其他此類異常情況而自動(dòng)發(fā)生的向處理程序例程的控制轉(zhuǎn)移。
[0056]在某些實(shí)施例中,當(dāng)處理器沒有在仿真模式418中操作時(shí),當(dāng)給定指令的第一實(shí)例403-1被處理時(shí),如果發(fā)生了權(quán)限沖突、頁(yè)故障、存儲(chǔ)器保護(hù)故障、除以零、嘗試執(zhí)行非法操作碼或其它異常情況,則處理器可執(zhí)行基本上常規(guī)的異常情況處理。例如,在某些實(shí)施例中,異常情況可被直接處理440,其中控制被轉(zhuǎn)移給異常情況處理程序例程441。通常,異常情況處理程序例程可為操作系統(tǒng)、虛擬機(jī)監(jiān)視器、或其他特權(quán)級(jí)軟件的一部分。這種處理程序的示例包括但不限于:頁(yè)故障處理程序、錯(cuò)誤處理程序、中斷處理程序等等。
[0057]相反,在某些實(shí)施例中,當(dāng)處理器在仿真模式418中操作時(shí),當(dāng)給定指令的第二實(shí)例403-2被處理時(shí),如果發(fā)生了權(quán)限沖突、頁(yè)故障、存儲(chǔ)器保護(hù)故障、除以零、嘗試執(zhí)行非法操作碼或其它異常情況,則處理器可執(zhí)行基本上非常規(guī)的異常情況處理。例如,在一些實(shí)施例中,異常情況可不被直接處理。在某些實(shí)施例中,邏輯420可包括用于阻止向異常情況處理程序例程的自動(dòng)控制轉(zhuǎn)移的機(jī)制,倘若無此機(jī)制,異常情況會(huì)引起這種自動(dòng)控制轉(zhuǎn)移??刂瓶刹槐粡姆抡娉绦蛑苯愚D(zhuǎn)移給異常情況處理程序例程441。相反,在某些實(shí)施例中,仿真模式知曉異常情況處理程序邏輯420可臨時(shí)地阻止向異常情況處理程序441的控制轉(zhuǎn)換,并間接地報(bào)告442該異常情況。在某些實(shí)施例中,仿真模式知曉異常情況處理程序邏輯420可通過一個(gè)或多個(gè)仿真通信寄存器443來報(bào)告異常情況。該一個(gè)或多個(gè)通信寄存器可被用于在仿真邏輯和具有正被仿真的原始指令的程序之間傳送信息。
[0058]在某些實(shí)施例中,響應(yīng)于當(dāng)處于仿真模式418時(shí)發(fā)生異常情況,仿真模式知曉異常情況處理程序邏輯420可在異常情況或錯(cuò)誤狀態(tài)標(biāo)記、字段、或寄存器444中存儲(chǔ)該異常情況的指示。例如,單個(gè)比特或標(biāo)記可具有用于指示異常情況已發(fā)生的第一值(例如,設(shè)為二進(jìn)制1),或可具有用于指示無異常情況發(fā)生的第二值(例如,被清除為二進(jìn)制零)。在某些實(shí)施例中,響應(yīng)于當(dāng)處于仿真模式418時(shí)發(fā)生異常情況,仿真模式知曉異常情況處理程序邏輯420可在錯(cuò)誤代碼字段或寄存器445中存儲(chǔ)用于該異常情況的錯(cuò)誤代碼。該錯(cuò)誤代碼可提供關(guān)于錯(cuò)誤的附加信息,諸如,舉例來說,錯(cuò)誤的類型以及可任選的附加細(xì)節(jié)來幫助通知該異常情況的性質(zhì)??商娲兀皇鞘褂猛ㄐ偶拇嫫?,信息可以其他方式被通知或被提供(例如,存儲(chǔ)在存儲(chǔ)器中,通過電信號(hào)來報(bào)告,等等)。
[0059]在某些實(shí)施例中,仿真模式知曉異常情況處理程序邏輯420還可以提供對(duì)正被仿真的指令(即,使得第二實(shí)例403-2被發(fā)送到解碼邏輯405的那個(gè)指令)的地址(例如,指令指針)的指示。例如,在某些實(shí)施例中,正被仿真的指令的地址446可以被存儲(chǔ)在堆棧447頂部。將正被仿真的給定指令(而非正被用來仿真該給定指令的各指令之一)的地址存儲(chǔ)在該堆棧上可致使來自異常處理程序的返回被返回給被仿真指令,而非返回給正被用來仿真該被仿真指令的諸指令之一。如果相反,來自異常處理程序的返回將前往正被用來仿真該指令的諸指令之一,這可以潛在地引起問題。例如,軟件(例如,應(yīng)用、操作系統(tǒng)等)可能不知道正被用來仿真給定指令的諸指令,并且可能沒識(shí)別出相關(guān)聯(lián)的地址。操作系統(tǒng)可能感知到控制流正被傳送到未知的、非法的、有風(fēng)險(xiǎn)的或者不被允許的地址,并且可能潛在的嘗試阻止該傳輸。
[0060]在某些實(shí)施例中,指令集414可以監(jiān)視錯(cuò)誤狀態(tài)444和/或錯(cuò)誤代碼445。例如,在某些實(shí)施例中,指令414可以從仿真通信寄存器443讀取錯(cuò)誤狀態(tài)444和錯(cuò)誤代碼445以獲悉異常情況并了解該異常情況。在某些實(shí)施例中,當(dāng)錯(cuò)誤狀態(tài)444指示異常情況時(shí),指令集414可以處理該異常情況449。例如,指令414中的一個(gè)或多個(gè)指令可以被執(zhí)行以檢查錯(cuò)誤狀態(tài),并在指示有錯(cuò)誤的情況下,將控制轉(zhuǎn)移給異常情況處理程序。在某些實(shí)施例中,這可包括指令集414將控制轉(zhuǎn)移給異常情況處理程序441。在某些實(shí)施例中,可以將關(guān)于異常情況的信息(例如,錯(cuò)誤代碼445)提供給異常情況處理程序441。在某些實(shí)施例中,被仿真指令地址446也可以被提供給異常情況處理程序441和/或可以至少被保留在堆棧的頂部。被仿真指令地址446,在從對(duì)該異常情況的處理中返回后,可以被異常情況處理程序441使用。有利地,通過將正被仿真的指令的地址存儲(chǔ)在堆棧上,操作系統(tǒng)或其他錯(cuò)誤處理程序例程可認(rèn)為是被仿真的指令導(dǎo)致了該錯(cuò)誤。
[0061]在某些實(shí)施例中,該仿真邏輯可以包括用于測(cè)試并報(bào)告該指令中的存儲(chǔ)器訪問是否將正確地工作或可導(dǎo)致的異常情況的類型的邏輯。例如,可以包括特殊的指令,用于采取被仿真訪問權(quán)限來測(cè)試存儲(chǔ)器地址,以查看該存儲(chǔ)器地址(例如,在頁(yè)存在的情況下)是否有效以及程序是否具有足夠的訪問權(quán)限來讀取和/或修改那個(gè)存儲(chǔ)器位置。如果任何測(cè)試失敗,則仿真邏輯可以用返回地址將控制傳遞給合適的中斷處理程序,就好像正被仿真的指令已直接將控制傳遞給異常處理程序一樣。作為另一示例,狀態(tài)機(jī)可以執(zhí)行指示存儲(chǔ)器操作是否有效的條件存儲(chǔ)器事務(wù)(transaction)。假設(shè)沒有異常將發(fā)生的情況下,這可用于確定何時(shí)可執(zhí)行存儲(chǔ)器操作。這還可用于確定指令流或指令信息串的多少字節(jié)可被安全地讀取,而沒有異常。例如,這可用于測(cè)試并確定是否指令長(zhǎng)度可被讀取,或者是否該指令長(zhǎng)度的部分將導(dǎo)致頁(yè)錯(cuò)誤。該仿真邏輯可以包括用于處理跨越多頁(yè)的指令和/或在頁(yè)不在存儲(chǔ)器中時(shí)處理指令的邏輯。
[0062]在某些實(shí)施例中,仿真邏輯可以包括用于提供中間執(zhí)行中斷狀態(tài)使得對(duì)該仿真的執(zhí)行可以停止并稍后在該中間點(diǎn)處繼續(xù)的邏輯。這在仿真涉及長(zhǎng)持續(xù)時(shí)間或者執(zhí)行時(shí)間的指令時(shí)尤其有利。在某些實(shí)施例中,用于仿真特定類型的指令(例如,移動(dòng)字符串指令、收集指令、以及具有長(zhǎng)操作的其他指令)的指令集可以更新具有正被仿真的指令的軟件的執(zhí)行狀態(tài),以反映當(dāng)前的進(jìn)展水平。例如,該操作可能在中間點(diǎn)處被中斷,并且用于仿真的指令集可以在異常情況處理程序所保存的機(jī)器狀態(tài)中(例如,在處理器狀態(tài)寄存器中)設(shè)置標(biāo)記或狀態(tài)位,使得在返回后,仿真代碼可能夠測(cè)試該標(biāo)記或狀態(tài)位以確定它是否正從中間狀態(tài)恢復(fù)執(zhí)行。該標(biāo)記或狀態(tài)位可以指示被中斷的執(zhí)行。通過這種方式,在異常情況已被處理之后,當(dāng)從異常情況處理程序返回時(shí),該程序可以在它所離開的中間進(jìn)程水平處恢復(fù)執(zhí)行。在某些情況下,指令(例如,移動(dòng)字符串指令)可以修改寄存器以反映該操作的中間狀態(tài),使得在中斷后,執(zhí)行還可以從該中間狀態(tài)恢復(fù)。
[0063]圖5是示出用于允許處理器在處于仿真模式時(shí)與在不處于仿真模式時(shí)不同地訪問資源和/或信息的邏輯501的實(shí)施例的框圖。在某些實(shí)施例中,圖5中的邏輯可以被包括在圖1的處理器和/或計(jì)算機(jī)系統(tǒng)中,和/或圖3的邏輯中。或者,圖5的邏輯可以被包括在相似的或不同的處理器或計(jì)算機(jī)系統(tǒng)中。此外,圖1的處理器和/或計(jì)算機(jī)系統(tǒng)和/或圖3的邏輯可以包括與圖5的邏輯相似或不同的邏輯。
[0064]在處理器不處于仿真模式518時(shí),將給定指令(例如,具有給定操作碼的指令)的第一實(shí)例503-1提供給解碼邏輯505。在處理器正在仿真模式518中操作時(shí),將相同給定指令的第二實(shí)例503-2 (例如,具有相同給定操作碼的另一指令)提供給該解碼邏輯??梢皂憫?yīng)于解碼器接收到被仿真指令而從用于仿真該被仿真指令的一個(gè)或多個(gè)指令的集合514中提供給定指令的第二實(shí)例503-2。該指令集可以被包括在可能在管芯上、在管芯外、或部分在管芯上且部分在管芯外的仿真邏輯515中。仿真邏輯515可以具有本文中別處提到的仿真邏輯的任選特征中的任何一個(gè)特征。
[0065]解碼后指令處理器邏輯507可以接收與第二實(shí)例503-2相對(duì)應(yīng)的經(jīng)解碼指令506。解碼后指令處理器邏輯包括仿真模式知曉訪問控制邏輯520。該仿真模式知曉訪問控制邏輯用于以仿真模式知曉的方式來控制對(duì)一個(gè)或多個(gè)資源和/或信息550的訪問。在某些實(shí)施例中,當(dāng)處理器不在仿真模式中操作時(shí),解碼后指令處理器邏輯507可以通過對(duì)資源和/或信息550的基本上常規(guī)的訪問來處理給定指令的第一實(shí)例503-1。如圖所示,在某些實(shí)施例中,當(dāng)不處于仿真模式時(shí),在處理給定指令的第一實(shí)例503-1時(shí),可以阻止551對(duì)資源和/或信息550的訪問。出于諸如例如保護(hù)信息和/或資源的安全性等各種可能的理由中的任何一個(gè)理由,在不處于仿真模式時(shí)阻止對(duì)資源和/或信息的訪問可能是合適的,因?yàn)榻o定指令一般不需要訪問那些資源和/或信息,且用戶希望僅僅按需要或出于其他理由來提供這些資源和/或信息。
[0066]相反,在某些實(shí)施例中,當(dāng)在仿真模式518中操作時(shí),在處理給定指令的第二實(shí)例503-2時(shí),解碼后指令處理器邏輯可(例如,按與在處于非仿真模式時(shí)不同的方式)使用對(duì)資源和/或信息550的基本上非常規(guī)的訪問。例如,如圖所示,在所示實(shí)施例中,當(dāng)在處于仿真模式518時(shí),在處理給定指令的第二實(shí)例503-2時(shí),可以允許552對(duì)資源和/或信息550的訪問。作為示例,仿真模式518可以允許邏輯507和/或邏輯520具有在處于仿真模式時(shí)允許為該給定指令選擇性地訪問信息和/或資源的特殊硬件狀態(tài)。例如,在處于仿真模式時(shí)可以提供并配置一個(gè)或多個(gè)訪問特權(quán)位,以允許狀態(tài)機(jī)選擇性地訪問該信息。
[0067]構(gòu)想了各種不同類型的信息和/或資源550。合適的資源和/或信息的示例包括但不限于:與安全性有關(guān)的資源和/或信息(例如,安全性邏輯)、與加密和/或解密有關(guān)的資源和/或信息(例如,加密邏輯和/或解密邏輯)、隨機(jī)數(shù)生成器資源和/或信息(例如,隨機(jī)數(shù)生成器邏輯)、以及為與操作系統(tǒng)和/或虛擬機(jī)監(jiān)視器相對(duì)應(yīng)的特權(quán)或環(huán)級(jí)別所保留的資源和/或信息,等等。
[0068]合適的資源和/或信息的另一示例包括但不限于:處于與具有解碼后指令處理器邏輯507的物理處理器或邏輯處理器不同的物理處理器或邏輯處理器(例如,核、硬件線程、線程上下文等)中的資源和/或信息。不同的物理或邏輯處理器可以在相同的插座(socket)或不同的插座中。作為示例,當(dāng)處于仿真模式時(shí),仿真模式知曉控制邏輯520可能夠訪問處于另一插座(的另一核的信息和/或資源例如,查詢?cè)摵说臓顟B(tài)),而該些信息和/或資源在不處于仿真模式時(shí)對(duì)解碼后指令處理器邏輯507將不可用。
[0069]有利地,在處于仿真模式時(shí),仿真模式知曉訪問控制邏輯520可有助于允許指令514中的至少一些指令選擇性地具有對(duì)特定資源和/或信息的訪問,但這些資源和/或信息在不處于仿真模式時(shí)通常對(duì)該指令集合中的相同指令不可用。由于仿真邏輯可在管芯上和/或在存儲(chǔ)器的受保護(hù)部分中,因此安全性仍可以被維持。
[0070]在某些實(shí)施例中,可以禁止某些執(zhí)行級(jí)別(例如,安全性執(zhí)行狀態(tài))使用這樣的仿真來訪問這些資源和/或信息。例如,不是所有執(zhí)行狀態(tài)都可被允許使用被仿真操作碼。如果允許這樣的中斷或較低級(jí)別的執(zhí)行,特殊的安全性執(zhí)行狀態(tài)可能不是可證明地安全。相反,如果這樣的執(zhí)行級(jí)別或安全性執(zhí)行狀態(tài)需要類似的訪問,則它們可以改為通過使用可用于仿真軟件的硬件原語來實(shí)現(xiàn)該訪問。
[0071]在某些實(shí)施例中,指令仿真可用于幫助為指令的給定操作碼提供不同的含義。宏指令、機(jī)器語言指令和指令集中的其他指令通常包括操作代碼或操作碼。操作碼一般表示用于指定特定指令的指令的一部分和/或要響應(yīng)于該指令而執(zhí)行的操作。例如,打包的乘法指令的操作碼可以與打包的加法指令的操作碼不同。一般來說,操作碼包括在一個(gè)或多個(gè)字段中的若干位,這些位即使沒有被物理地分組在一起也是在邏輯上分組在一起的。通常,期望嘗試將操作碼保持得相對(duì)短或盡可能短,同時(shí)允許期望數(shù)目的指令/操作。相對(duì)長(zhǎng)的操作碼趨于增加解碼器的尺寸和/或復(fù)雜性,并且還一般趨于使得這些指令更長(zhǎng)。對(duì)于操作碼中固定數(shù)目的位,一般僅固定數(shù)目的不同指令/操作可被標(biāo)識(shí)出。存在本領(lǐng)域公知的各種訣竅來充分利用操作碼,例如,通過使用轉(zhuǎn)義代碼等來獲得。然而,可以用操作碼來唯一地標(biāo)識(shí)的指令的數(shù)目一般比通常所需的更為有限。一般來說,新的指令無法被持續(xù)添加到處理器的操作碼空間中,而不會(huì)最終某時(shí)用完可用的操作碼。
[0072]工作負(fù)載隨時(shí)間改變。類似地,所需的指令和所需的指令功能隨時(shí)間改變。新的指令功能通常不斷發(fā)展地被添加到處理器中。類似地,某些指令/操作隨時(shí)間變得相對(duì)無用和/或相對(duì)不頻繁使用和/或相對(duì)不重要。在某些情況下,當(dāng)指令/操作具有足夠有限的有用性或重要性時(shí),它們可被棄用。棄用(deprecation)是本領(lǐng)域中常用術(shù)語,其指示適用于組件、特性、特征或?qū)嵺`的一種狀態(tài),表示通常由于它處于被放棄或阻止的進(jìn)程中和/或它在將來可能是不可用的或不受支持的而一般應(yīng)該被回避。
[0073]通常,這樣的指令/操作可能被棄用而非被立即移除,以便有助于提供臨時(shí)的向后兼容性(例如,以允許現(xiàn)有的或舊式代碼繼續(xù)運(yùn)行)。這可允許使代碼有時(shí)間變得與取代指令/操作兼容,和/或可允許使現(xiàn)有代碼或舊式代碼有時(shí)間逐步淘汰。通常,從指令集棄用各指令/操作會(huì)花費(fèi)較長(zhǎng)時(shí)間(例如,許多年,甚至幾十年),以允許有時(shí)間充分淘汰老程序。常規(guī)上,在這樣的長(zhǎng)時(shí)間段過去之前,被棄用的指令/操作的操作碼的值一般不會(huì)被取回和重新用于不同的指令/操作。否則,如果舊式軟件被運(yùn)行,則具有操作碼值的指令可能促使處理器執(zhí)行取代操作,而非預(yù)期的被棄用操作,這可導(dǎo)致錯(cuò)誤的結(jié)果。
[0074]在某些實(shí)施例中,指令仿真可用于幫助為指令的給定操作碼提供不同的含義。在某些實(shí)施例中,指令的給定操作碼可以用不同的含義來解釋。在某些實(shí)施例中,可以為給定操作碼支持多個(gè)操作碼定義。例如,給定操作碼可以用軟件程序具有指令意圖的含義來解釋。作為示例,在某些實(shí)施例中,較老的或舊式軟件程序可以指示具有該給定操作碼的指令將具有較老的、舊式的或被棄用的含義,而較新的軟件程序可指示具有該給定操作碼的指令將具有較新的含義。在某些實(shí)施例中,較老的或被棄用的含義可以被仿真,而較新的含義可以被解碼成控制信號(hào),并在處理器流水線上直接執(zhí)行。有利地,在某些實(shí)施例中,這可有助于允許較早地取回和重新使用被棄用的操作碼,同時(shí)仍提供允許較老的程序仍以被棄用的操作碼運(yùn)行而允許被棄用的操作碼還以不同的含義被用于較新的程序的向后兼容性,以幫助改進(jìn)性能。
[0075]圖6是由處理器執(zhí)行的和/或在處理器中執(zhí)行的方法660的實(shí)施例的流程框圖。在某些實(shí)施例中,圖6的操作和//或方法可以由圖1的處理器和/或圖3或圖7的邏輯來執(zhí)行,和/或在圖1的處理器和/或圖3或圖7的邏輯中執(zhí)行。本文中針對(duì)處理器和邏輯描述的組件、特征和具體的任選細(xì)節(jié)還可選地適用于圖6的操作和方法。替換地,圖6的操作和/或方法可由類似的或完全不同的處理器或裝置執(zhí)行,和/或在類似的或完全不同的處理器或裝置內(nèi)執(zhí)行。此外,圖1的處理器和/或圖3或圖7的邏輯可以執(zhí)行與圖6的那些操作和/或方法類似的或不同的操作和/或方法。
[0076]該方法包括在框661接收具有給定操作碼的第一指令。在某些實(shí)施例中,第一指令可以在解碼器處被接收。在框662可作出給定操作碼具有第一含義還是第二含義的判定。在某些實(shí)施例中,第一含義可以是第一操作碼定義,且第二含義可以是不同的第二操作碼定義。如以下將進(jìn)一步解釋的,在某些實(shí)施例中,這可涉及解碼器讀取或檢查例如在標(biāo)記、狀態(tài)寄存器或其他管芯上存儲(chǔ)位置中的對(duì)給定操作碼具有第一含義還是第二含義的指示。如以下將進(jìn)一步解釋的,在某些實(shí)施例中,軟件(例如,操作系統(tǒng)模塊的程序加載器模塊)可以在加載軟件以供處理器運(yùn)行時(shí)將該指示存儲(chǔ)在標(biāo)記、狀態(tài)寄存器或其他管芯上存儲(chǔ)位置中。作為示例,該軟件可以包括指示該軟件預(yù)期或指定給定操作碼具有第一含義還是第二含義的元數(shù)據(jù)(例如,對(duì)象模塊格式)。
[0077]再次參考圖6,如果框662處的判定是給定操作碼具有第一含義,則該方法可前進(jìn)到框663。在框663處,第一指令可以被解碼成一個(gè)或多個(gè)微指令、微操作或其他較低級(jí)別的指令或控制信號(hào)。在某些實(shí)施例中,解碼器可以將這些指令或控制信號(hào)輸出到解碼后指令處理器邏輯(例如,執(zhí)行單元等)。該解碼后指令處理器邏輯可以處理這些指令,通常處理得比改用仿真的情況快得多。在某些實(shí)施例中,第一含義可以用于未被棄用的操作碼含義、相對(duì)較新的操作碼含義、相對(duì)被較頻繁地使用的操作碼含義、或更強(qiáng)烈地影響性能的操作碼含義等。
[0078]相反,如果框662處的判定是給定操作碼具有第二含義,則該方法可前進(jìn)到框664。在框664,可以引入對(duì)第一指令的仿真。例如,解碼器可以向仿真邏輯提供仿真捕獲或以其他方式將仿真模式告知仿真邏輯。隨后,用來以具有第二含義的操作碼來仿真第一指令的仿真邏輯的一個(gè)或多個(gè)指令的集合可被提供給解碼器或以仿真模式來處理。這可基本上如本文中別處描述的那樣完成。在某些實(shí)施例中,該第二含義可以用于棄用的操作碼含義、在被棄用的或?qū)⒁粭売玫倪M(jìn)程中的操作碼含義、相對(duì)較老的操作碼含義、相對(duì)較不頻繁使用的操作碼含義、或較不強(qiáng)烈地影響性能的操作碼含義等。
[0079]圖7是示出允許給定操作碼具有不同含義的邏輯701的實(shí)施例的框圖。在某些實(shí)施例中,圖7中的邏輯可以被包括在圖1的處理器和/或計(jì)算機(jī)系統(tǒng)中,和/或圖3的邏輯中?;蛘?,圖7的邏輯可以被包括在相似的或不同的處理器或計(jì)算機(jī)系統(tǒng)中。此外,圖1的處理器和/或計(jì)算機(jī)系統(tǒng)和/或圖3的邏輯可以包括與圖7的邏輯相似或不同的邏輯。
[0080]存儲(chǔ)器710包括第一軟件模塊711-1、第二軟件模塊711_2、和具有程序加載器模塊770的操作系統(tǒng)模塊797。在某些實(shí)施例中,第一軟件模塊包括使用給定操作碼第一含義的指示772,且第二軟件模塊包括使用給定操作碼的不同的第二含義的指示773。作為示例,第一和第二軟件模塊可各自包括對(duì)象模塊格式、其他元數(shù)據(jù)、或包括這些指示772、773的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。程序加載器模塊可用于加載第一軟件模塊和第二軟件模塊以供在處理器上執(zhí)行。如圖所示,在某些實(shí)施例中,程序加載器模塊可包括模塊771,其用于將特定軟件模塊所指示的給定操作碼的含義加載到處理器上作為處理器狀態(tài)。在某些實(shí)施例中,模塊771可用于在加載第一軟件模塊時(shí)將指示772或在加載第二軟件模塊時(shí)將指示773加載到管芯上存儲(chǔ)位置774中作為要使用給定操作碼的第一含義還是第二含義的指示775。管芯上存儲(chǔ)位置與解碼器705耦合,或可被解碼器705以其他方式訪問。
[0081]在某些實(shí)施例中,例如在老軟件程序模塊的情況下,軟件模塊可能不具有使用給定操作碼的給定含義的明確指示。例如,軟件可能在較新的含義存在之前已經(jīng)被寫好。在某些實(shí)施例中,模塊771和/或程序加載器770可用于推斷該軟件模塊需要使用給定操作碼的第一含義還是第二含義。例如,這可以從被嵌入在程序的特征列表、程序的格式、程序的年齡或程序被創(chuàng)建的年份、或在元數(shù)據(jù)中和/或在軟件模塊中的其他這樣的信息中推斷出。例如,如果第二軟件模塊711-2是在介紹/定義給定操作碼的第一含義之前被創(chuàng)建的老軟件,則程序加載器模塊和/或操作系統(tǒng)模塊可用于推斷出該第二軟件模塊需要使用給定操作碼的第二含義而非第一含義。模塊771可用于在切換或交換軟件時(shí)切換或交換出存儲(chǔ)區(qū)域中的指示775。
[0082]為了進(jìn)一步說明,考慮具有給定操作碼的指令的第一實(shí)例703-1被從第一軟件模塊711 -1提供到解碼器705。第一軟件模塊包括模塊711可保留在存儲(chǔ)位置774處的使用給定操作碼的第一含義的指示722。解碼器包括與存儲(chǔ)位置774耦合的用于檢查對(duì)使用給定操作碼的第一含義還是第二含義的指示775的檢查邏輯776。該檢查邏輯可以訪問或讀取該存儲(chǔ)位置,并確定在處理來自第一軟件模塊的指令的第一實(shí)例時(shí)將使用給定操作碼的第一含義。在某些實(shí)施例中,存儲(chǔ)位置774可包括用于存儲(chǔ)多個(gè)指示(每個(gè)指示對(duì)應(yīng)于不同的操作碼)的多個(gè)不同的存儲(chǔ)位置。作為響應(yīng),假設(shè)給定操作碼的第一含義的情況下,解碼器的解碼邏輯777可以解碼該指令??梢詫⒁粋€(gè)或多個(gè)經(jīng)解碼指令706或一個(gè)或多個(gè)其他控制信號(hào)從解碼器提供到可處理它們的解碼后指令處理邏輯707。
[0083]可以將具有相同給定操作碼的指令的第二實(shí)例703-2從第二軟件模塊711-2提供到解碼器705。第二軟件模塊包括模塊711可保留在存儲(chǔ)位置774處的使用給定操作碼的第二含義的指示773。該檢查邏輯776可以檢查指示775,并確定在處理來自第二軟件模塊的指令的第二實(shí)例時(shí)將使用給定操作碼的第二含義。作為響應(yīng),仿真引發(fā)邏輯778可以引發(fā)對(duì)指令的第二實(shí)例703-2的仿真。例如,仿真引發(fā)邏輯可以執(zhí)行仿真捕獲或以其他方式用信號(hào)通知仿真模式718。可以將用于仿真具有含第二含義的給定操作碼的指令的第二實(shí)例的一個(gè)或多個(gè)指令714的集合從仿真邏輯715提供到解碼器。仿真邏輯可以在管芯上、管芯外、或部分在管芯上且部分在管芯外。仿真邏輯715可以具有本文中別處描述的仿真邏輯的可選特征中的任何一個(gè)特征。
[0084]在某些實(shí)施例中,指令714可以與具有給定操作碼的指令是相同指令集的。在某些實(shí)施例中,解碼器可以解碼這些指令中的每一指令,并將它們作為經(jīng)解碼指令706或其他控制信號(hào)提供給解碼后指令處理邏輯。在某些實(shí)施例中,解碼后指令處理邏輯可包括仿真模式知曉指令處理器邏輯720,該邏輯可以與本文中別處描述的仿真模式知曉指令處理器邏輯(例如,圖1或圖3-5中的任何一個(gè)邏輯中的仿真模式知曉指令處理器邏輯)類似或相同。如圖所示,在某些實(shí)施例中,仿真模式知曉指令處理邏輯可以與仿真模式718耦合,或者以其他方式知曉仿真模式718。此外,仿真模式知曉指令處理邏輯可以與該仿真邏輯的存儲(chǔ)位置721耦合,并且可以從該存儲(chǔ)位置721讀取數(shù)據(jù)和將數(shù)據(jù)寫入該存儲(chǔ)位置721。
[0085]在某些實(shí)施例中,可以包括用于基于存儲(chǔ)位置774中的指示775來更新處理器特性標(biāo)識(shí)寄存器795的邏輯796。合適的處理器特性標(biāo)識(shí)寄存器的示例是用于CPU標(biāo)識(shí)(CPUID)的寄存器。邏輯796可以與存儲(chǔ)器位置774耦合,并與處理器特性標(biāo)識(shí)寄存器795耦合。處理器特性標(biāo)識(shí)寄存器可以是處理器的指令集中的處理器特性標(biāo)識(shí)指令(例如,CPUID指令)可讀的。軟件可以通過執(zhí)行該處理器特性標(biāo)識(shí)指令來從處理器特性標(biāo)識(shí)寄存器中讀取對(duì)操作碼的含義的指示。
[0086]在某些實(shí)施例中,特權(quán)級(jí)別和/或環(huán)形級(jí)別邏輯794可以與解碼器705耦合,并且可以迫使或以其他方式使解碼器基于該特權(quán)級(jí)別和/或環(huán)形級(jí)別來使用操作碼的給定含義。例如,在各實(shí)施例中,在第一含義是較新的含義,而第二含義是被棄用的含義的情況下,這可以是有用的。操作系統(tǒng)通常以與用戶應(yīng)用不同的特定特權(quán)級(jí)別和/或環(huán)級(jí)別操作。此夕卜,操作系統(tǒng)通常使用給定操作碼的較新含義而非給定操作碼的較老含義,因?yàn)樗鼈円话惚活l繁地更新。在這樣的情況下,特權(quán)級(jí)別和/或環(huán)級(jí)別邏輯794可以導(dǎo)致解碼器在處于與操作系統(tǒng)的特權(quán)或環(huán)形級(jí)別相對(duì)應(yīng)的特權(quán)或環(huán)形級(jí)別時(shí)使用給定操作碼的較新含義。
[0087]為了描述的簡(jiǎn)單,本文中代表性地描述了操作碼的兩個(gè)不同的含義。然而,將理解,其他實(shí)施例可使用給定操作碼的三個(gè)或更多個(gè)不同的含義。作為示例,存儲(chǔ)位置774可以包括兩個(gè)或更多個(gè)比特,以指示應(yīng)該為給定操作碼使用多個(gè)這樣的不同含義中的哪個(gè)。同樣,處理器特性標(biāo)識(shí)寄存器可以反映出給定操作碼的多個(gè)這樣的含義。
[0088]圖8是可由操作系統(tǒng)模塊執(zhí)行的方法880的實(shí)施例的流程框圖。在某些實(shí)施例中,該方法可以由程序加載器模塊執(zhí)行。
[0089]該方法包括在框881確定具有給定操作碼的第一指令在由軟件程序被處理器執(zhí)行時(shí)將具有第二含義而非第一含義。在不同的實(shí)施例中,這可以按不同的方式來完成。在某些實(shí)施例中,該軟件程序可明確指定使用給定操作碼的給定含義的指示。例如,操作系統(tǒng)模塊可檢查該軟件程序的元數(shù)據(jù)。例如,在對(duì)象模塊格式中可存在指示要使用哪個(gè)含義的標(biāo)記。在其他實(shí)施例中,例如在舊式軟件的情況下,軟件程序可以不明確地指定要使用哪個(gè)含義的指示。在某些實(shí)施例中,操作系統(tǒng)模塊可包括用于推斷要使用哪個(gè)含義的邏輯。這可以用多種不同的方式來完成。在某些實(shí)施例中,這可以包括檢查該軟件程序的特性列表。在某些情況下,該特性列表可以指定哪個(gè)版本的指令是所期望的。在某些實(shí)施例中,這可以包括檢查該軟件程序的創(chuàng)建日。老于某一日期(例如,較新的取代含義的指令日期)的創(chuàng)建日期可以被推斷為該軟件程序使用較老的含義或被棄用的含義的指示。在某些實(shí)施例中,這可以包括檢查該軟件程序的格式。例如,在某一級(jí)別之前的某些修訂版程序格式可被用來推斷較老的或被棄用的含義。在某些實(shí)施例中,這可包括檢查已知要使用某些含義的軟件程序的顯式列表(例如,排除列表)。作為示例,該列表可以基于歷史信息來更新(例如,如果某錯(cuò)誤由一個(gè)含義導(dǎo)致,則其他含義可以被添加到該列表中)。這僅僅是一個(gè)示例。也可以構(gòu)想推斷該含義的其他方式。
[0090]該方法還包括在框882將具有給定操作碼的第一指令將具有第二含義而非第一含義的指示存儲(chǔ)在處理器的狀態(tài)中。例如,操作系統(tǒng)模塊可以修改存儲(chǔ)位置中與解碼器耦合的位,如本文中別處描述的。
[0091]圖9是程序加載器模塊970的實(shí)施例的框圖,該程序加載器模塊包括用于選擇軟件庫(kù)983中一個(gè)或多個(gè)功能、子例程、或其他部分的集合的選擇模塊985,所述集合具有對(duì)將使用該集合的軟件而言合適的給定操作碼的含義。軟件庫(kù)一般表示各種軟件模塊可使用的軟件集合,并可包括以子例程、功能、類、進(jìn)程、腳本、配置數(shù)據(jù)等形式存在的預(yù)先存在的軟件。軟件模塊可使用庫(kù)的這些各種部分來包括各種功能。作為示例,軟件模塊可以并入具有各種數(shù)學(xué)函數(shù)或子例程的數(shù)學(xué)軟件庫(kù)或其部分。
[0092]如圖所示,在某些實(shí)施例中,該庫(kù)可包括使用給定操作碼的第一含義的庫(kù)函數(shù)、子例程、或其他部分的第一集合。該庫(kù)還可包括使用給定操作碼的不同的第二含義的庫(kù)函數(shù)、子例程、或其他部分的第二集合??扇芜x地,如果存在操作碼的兩個(gè)以上含義,則同樣該庫(kù)可存在針對(duì)這三個(gè)或更多個(gè)不同含義中的每一個(gè)含義的不同部分。在某些情況下,使用不同含義的各部分可以是不同的代碼段。在其他情況下,這些部分可以是相同代碼的不同部分,并且分支或其他有條件移動(dòng)可以被用來適當(dāng)?shù)匾苿?dòng)到使用第一含義或第二含義的部分。
[0093]再次參考該圖解,程序加載器模塊970可以為使用給定操作碼的第一含義的第一軟件模塊911-1以及使用給定操作碼的第二含義的第二軟件模塊911-2兩者加載庫(kù)的部分。程序加載器模塊包括用于選擇軟件庫(kù)中一個(gè)或多個(gè)功能、子例程、或其他部分的集合的選擇模塊985,所述集合具有對(duì)將使用該集合的軟件而言合適的給定操作碼的含義。例如,該選擇模塊可以選擇庫(kù)的數(shù)個(gè)部分,所述部分具有和將使用其的軟件相同的給定操作碼的含義。例如,如該圖解中所示出的,該選擇模塊可以為第一軟件模塊911 一 I選擇第一集合984 — 1,因?yàn)樵摷鲜褂昧私o定操作碼的第一含義。同樣,由于第二集合984-2使用給定操作碼的第二含義,因此該選擇模塊可以為第二軟件模塊911-2選擇第二集合984-2。在一個(gè)特定實(shí)施例中,在第一軟件911 -1是較老軟件并且給定操作碼的第一含義是被棄用的含義的情況下,選擇模塊可用于選擇庫(kù)部分984中也使用該給定操作碼的該被棄用含義的第一集合。因此,選擇模塊可以選擇庫(kù)的數(shù)個(gè)部分,該部分使用與將使用該庫(kù)的相應(yīng)部分的軟件一致或相同的給定操作碼的含義。
[0094]示例性核架構(gòu)、處理器以及計(jì)算機(jī)架構(gòu)
[0095]處理器核可以,針對(duì)不同的目的,以不同的方式,以及在不同的處理器中實(shí)現(xiàn)。例如,這樣的核的實(shí)現(xiàn)可以包括:1)旨在用于通用計(jì)算的通用有序核;2)旨在用于通用計(jì)算的高性能通用無序核;3)旨在主要用于圖形和/或科學(xué)(吞吐量)計(jì)算的專用核。不同的處理器的實(shí)現(xiàn)可以包括:1)包括旨在用于通用計(jì)算的一個(gè)或多個(gè)通用有序核和/或旨在用于通用計(jì)算的一個(gè)或多個(gè)通用無序核的CPU ;以及2)包括旨在主要用于圖形和/或科學(xué)(吞吐量)的一個(gè)或多個(gè)專用核的協(xié)處理器。這樣的不同的處理器導(dǎo)致不同的計(jì)算機(jī)系統(tǒng)架構(gòu),這些計(jì)算機(jī)系統(tǒng)架構(gòu)可以包括:1)與CPU分開的單獨(dú)芯片上的協(xié)處理器;2)在與CPU相同的封裝中的單獨(dú)管芯上的協(xié)處理器;3)在與CPU相同的管芯上的協(xié)處理器(在此情況下,這種協(xié)處理器有時(shí)被稱為專用邏輯,諸如集成圖形器件和/或科學(xué)(吞吐量)邏輯、或者專用核);以及4)片上系統(tǒng),其可在相同管芯上包括所述的CPU (有時(shí)被稱為應(yīng)用核或應(yīng)用處理器)、上述協(xié)處理器、以及附加功能。下面描述了示例性核架構(gòu),接下來是對(duì)于示例性處理器以及計(jì)算機(jī)架構(gòu)的描述。
[0096]示例性核架構(gòu)
[0097]有序和無序核框圖
[0098]圖1OA是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線和示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線的框圖。圖1OB是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序架構(gòu)核的實(shí)施例以及示例性寄存器重命名、無序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖10A-B中的實(shí)線框示出了有序流水線和有序核,而任選添加的虛線框示出寄存器重命名、無序發(fā)布/執(zhí)行流水線和核。假定有序方面是無序方面的子集,將描述無序方面。
[0099]在圖1OA中,處理器流水線1000包括取指級(jí)1002、長(zhǎng)度解碼級(jí)1004、解碼級(jí)1006、分配級(jí)1008、重命名級(jí)1010、調(diào)度(也稱為分派或發(fā)布)級(jí)1012、寄存器讀取/存儲(chǔ)器讀取級(jí)1014、執(zhí)行級(jí)1016、回寫/存儲(chǔ)器寫入級(jí)1018、異常處理級(jí)1022、以及提交級(jí)1024。
[0100]圖1OB示出處理器核1090,該核包括耦合到執(zhí)行引擎單元1050的前端單元1030,并且兩者都耦合到存儲(chǔ)器單元1070。核1090可以是精簡(jiǎn)指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長(zhǎng)指令字(VLIW)核、或者混合或替代核類型。作為另一選項(xiàng),核1090可以是專用核,諸如舉例而言,網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理單元(GPGPU)核、圖形核等。
[0101]前端單元1030包括耦合到指令高速緩存單元1034的分支預(yù)測(cè)單元1032,該指令高速緩存單元1034耦合到指令翻譯后備緩沖器(TLB) 1036,該指令TLB1036耦合到指令提取單元1038,該指令提取單元1038耦合到解碼單元1040。解碼單元1040 (或解碼器)可對(duì)指令進(jìn)行解碼,并且生成一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或者從原始指令解碼、或以其他方式反映原始指令、或從原始指令派生的其他控制信號(hào)作為輸出。解碼單元1040可使用各種不同的機(jī)制來實(shí)現(xiàn)。合適機(jī)制的示例包括但不限于查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核1090包括微代碼ROM或?yàn)樘囟ê曛噶畲鎯?chǔ)微代碼(例如在解碼單元1040中或在前端單元1030內(nèi))的其它介質(zhì)。解碼單元1040耦合至執(zhí)行引擎單元1050中的重命名/分配器單元1052。
[0102]執(zhí)行引擎單元1050包括耦合到引退單元1054的重命名/分配器單元1052、以及一組一個(gè)或多個(gè)調(diào)度器單元1056。調(diào)度器單元1056表示任何數(shù)量的不同調(diào)度器,包括:預(yù)約站、中央指令窗口等等。調(diào)度器單元1056耦合至物理寄存器文件單元1058。每個(gè)物理寄存器文件單元1058表示一個(gè)或多個(gè)物理寄存器文件,其中不同的物理寄存器文件存儲(chǔ)一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄存器文件單元1058包括向量寄存器單元、寫掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器以及通用寄存器。物理寄存器文件單元1058由引退單元1054重疊,以示出其中可實(shí)現(xiàn)寄存器重命名和無序執(zhí)行(例如,使用重排序緩沖器和引退寄存器文件;使用未來文件、歷史緩沖器、以及引退寄存器文件;使用寄存器映射和寄存器池等)的各種方式。引退單元1054和物理寄存器文件單元1058耦合到執(zhí)行集群1060。執(zhí)行集群1060包括一組一個(gè)或多個(gè)執(zhí)行單元1062以及一組一個(gè)或多個(gè)存儲(chǔ)器訪問單元1064。執(zhí)行單元1062可執(zhí)行各種操作(例如,位移、加法、減法、乘法),并且對(duì)各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))執(zhí)行。盡管一些實(shí)施例可以包括專用于特定功能或功能集的若干個(gè)執(zhí)行單元,但是,其他實(shí)施例可包括全部都執(zhí)行所有功能的僅一個(gè)執(zhí)行單元或多個(gè)執(zhí)行單元。調(diào)度器單元1056、物理寄存器文件單元1058、以及執(zhí)行集群1060被示為可能是多個(gè),因?yàn)樘囟▽?shí)施例為特定類型的數(shù)據(jù)/操作創(chuàng)建分離的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/打包整數(shù)/打包浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線、和/或各自具有其自己的調(diào)度器單元、物理寄存器文件單元和/或執(zhí)行集群的存儲(chǔ)器訪問流水線;并且在分離的寄存器訪問流水線的情況下,實(shí)現(xiàn)其中僅該流水線的執(zhí)行集群具有存儲(chǔ)器訪問單元1064的特定實(shí)施例)。還應(yīng)當(dāng)理解,在使用分離的流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以是無序發(fā)布/執(zhí)行,而其他流水線可以是有序發(fā)布/執(zhí)行。
[0103]一組存儲(chǔ)器訪問單元1064耦合到存儲(chǔ)器單元1070,該存儲(chǔ)器單元1070包括耦合到數(shù)據(jù)高速緩存單元1074的數(shù)據(jù)TLB單元1072,該數(shù)據(jù)高速緩存單元1074耦合到二級(jí)(L2)高速緩存單元1076。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器存取單元1064可包括加載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其中的每一個(gè)均耦合至存儲(chǔ)器單元1070中的數(shù)據(jù)TLB單元1072。指令高速緩存單元1034還耦合到存儲(chǔ)器單元1070中的第二級(jí)(L2)高速緩存單元1076。L2高速緩存單元1076耦合到一個(gè)或多個(gè)其他級(jí)的高速緩存,并且最終耦合到主存儲(chǔ)器。
[0104]作為示例,示例性寄存器命名、無序發(fā)布/執(zhí)行核架構(gòu)可如下地實(shí)現(xiàn)流水線1000:I)指令提取1038執(zhí)行提取和長(zhǎng)度解碼級(jí)1002和1004 ;2)解碼單元1040執(zhí)行解碼級(jí)1006 ;3)重命名/分配器單元1052執(zhí)行分配級(jí)1008和重命名級(jí)1010 ;4)調(diào)度器單元1056執(zhí)行調(diào)度級(jí)1012 ;5)物理寄存器文件單元1058和存儲(chǔ)器單元1070執(zhí)行寄存器讀取/存儲(chǔ)器讀取級(jí)1014 ;執(zhí)行集群1060執(zhí)行執(zhí)行級(jí)1016 ;6)存儲(chǔ)器單元1070和物理寄存器文件單元1058執(zhí)行回寫/存儲(chǔ)器寫入級(jí)1018 ;7)各個(gè)單元可涉及異常處理級(jí)1022;以及8)引退單元1054和物理寄存器文件單元1058執(zhí)行提交級(jí)1024。
[0105]核1090可支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有已經(jīng)使用較新版本增加的一些擴(kuò)展)、加利福尼亞州森尼維爾市MIPS技術(shù)公司的MIPS指令集、加利福尼亞州森尼維爾市的ARM控股公司的ARM指令集(具有諸如NEON之類的任選的附加擴(kuò)展)),包括本文中所描述的指令。在一個(gè)實(shí)施例中,核1090包括邏輯以支持打包數(shù)據(jù)指令集擴(kuò)展(例如,AVX1、AVX2),由此允許許多多媒體應(yīng)用所使用的操作使用打包數(shù)據(jù)來執(zhí)行。
[0106]應(yīng)當(dāng)理解,該核可支持多線程(執(zhí)行并行的兩組或兩組以上的操作或線程),并且可以包括分時(shí)多線程、同時(shí)多線程(其中單個(gè)物理核為每一線程提供物理核是同時(shí)多線程的邏輯核)、或者其組合(例如,分時(shí)提取和解碼以及此后諸如在InteHyperthreading技術(shù)中的同時(shí)多線程)的各種方式這樣做。
[0107]盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但是應(yīng)當(dāng)理解寄存器重命名可在有序架構(gòu)中使用。盡管處理器的所示實(shí)施例還包括單獨(dú)的指令和數(shù)據(jù)高速緩存單元1034/1074以及共享的L2高速緩存單元1076,但是替換實(shí)施例可具有用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,諸如舉例而言,一級(jí)(LI)內(nèi)部高速緩存、或多級(jí)內(nèi)部高速緩存。在一些實(shí)施例中,該系統(tǒng)可包括內(nèi)部高速緩存和外部高速緩存的組合,該外部高速緩存在核和/或處理器外部。替代地,所有高速緩存可在核和/或處理器外部。
[0108]具體示例性有序核架構(gòu)
[0109]圖1lA-B示出更具體的示例性有序核架構(gòu)的框圖,該核可以是芯片中的若干邏輯塊(包括相同類型和/或不同類型的其他核)中的一個(gè)。依據(jù)應(yīng)用,邏輯塊通過高帶寬互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))與某種固定功能邏輯、存儲(chǔ)器I/O接口及其他所需的I/O邏輯進(jìn)行通?目。
[0110]圖1lA是根據(jù)本發(fā)明的各實(shí)施例的單個(gè)處理器核、連同該處理器核到管芯上互聯(lián)網(wǎng)絡(luò)1102的連接以及該處理器核的二級(jí)(L2)高速緩存本地子集1104的框圖。在一個(gè)實(shí)施例中,指令解碼器1100支持具有打包的數(shù)據(jù)指令集擴(kuò)展的χ86指令集。LI高速緩存1106允許對(duì)高速緩存存儲(chǔ)器進(jìn)行低等待時(shí)間存取而進(jìn)入標(biāo)量和向量單元。盡管在一個(gè)實(shí)施例中(為了簡(jiǎn)化設(shè)計(jì))標(biāo)量單元1108和向量單元1110使用分離的寄存器集合(分別是標(biāo)量寄存器1112和向量寄存器1114)并且在兩者之間傳輸?shù)臄?shù)據(jù)被寫入存儲(chǔ)器且隨后從一級(jí)(LI)高速緩存1106讀回,但是替代實(shí)施例可使用不同的方法(例如,使用單個(gè)寄存器集合或者包括允許數(shù)據(jù)在不寫入和讀回的情況下在兩個(gè)寄存器文件之間傳輸?shù)耐ㄐ磐ǖ?。
[0111]L2高速緩存的本地子集1104是被分成分離的本地子集(每個(gè)處理器核一個(gè)本地子集)的全局L2高速緩存的一部分。每一處理器核都具有到L2高速緩存的其自己的本地子集1104的直接存取路徑。由處理器核讀取的數(shù)據(jù)被存儲(chǔ)在其L2高速緩存子集1104中,并且可與存取其自己的本地L2高速緩存子集的其他處理器核并行地快速存取。由處理器核寫入的數(shù)據(jù)被存儲(chǔ)在其自己的L2高速緩存子集1104中,并且如果必要?jiǎng)t從其他子集清除(flush)。環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的一致性。環(huán)形網(wǎng)絡(luò)是雙向的以允許在芯片內(nèi)諸如處理器核、L2高速緩存、以及其他邏輯塊之類的代理相互通信。每一環(huán)形數(shù)據(jù)路徑都是每個(gè)方向1012比特寬。
[0112]圖1lB是根據(jù)本發(fā)明的各實(shí)施例的圖1lA中的處理器核的一部分的展開圖。圖1IB包括LI高速緩存1104的LI數(shù)據(jù)高速緩存1106A部分,以及關(guān)于向量單元1110和向量寄存器1114的更多細(xì)節(jié)。具體而言,向量單元1110是16寬向量處理單元(VPU)(參見16寬ALU1128),其執(zhí)行整數(shù)、單精度浮動(dòng)以及雙精度浮動(dòng)指令中的一個(gè)或多個(gè)。VPU支持利用拌和單元1120來拌和寄存器輸入,利用數(shù)字轉(zhuǎn)換單元1122A-B進(jìn)行數(shù)字轉(zhuǎn)換,以及利用復(fù)制單元1124在存儲(chǔ)器輸入上進(jìn)行復(fù)制。寫掩碼寄存器1126允許預(yù)測(cè)所得向量寫入。
[0113]具有集成存儲(chǔ)器控制器和圖形器件的處理器
[0114]圖12是根據(jù)本發(fā)明的各實(shí)施例的處理器1200的框圖,該處理器1200可具有一個(gè)以上的核,可以具有集成的存儲(chǔ)器控制器,并可以具有集成的圖形器件。圖12的實(shí)線框示出了處理器1200,處理器1200具有單個(gè)核1202A、系統(tǒng)代理1216、一組一個(gè)或多個(gè)總線控制器單元1216,而可選附加的虛線框示出了替代的處理器1200,其具有多個(gè)核1202A-N、系統(tǒng)代理單元1210中的一組一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元1214以及專用邏輯1208。
[0115]如此,處理器1200的不同的實(shí)現(xiàn)可以包括:1)具有作為集成圖形和/或科學(xué)(吞吐量)邏輯(該邏輯可包括一個(gè)或多個(gè)核)的專用邏輯1208、以及作為一個(gè)或多個(gè)通用核(例如,通用有序核、通用無序核、兩者的組合)的核1202A-N的CPU ;2)具有作為期望主要用于圖形和/或科學(xué)(吞吐量)的大量專用核的核1202A-N的協(xié)處理器;以及3)具有作為大量通用有序核的核1202A-N的協(xié)處理器。如此,處理器1200可以是通用處理器、協(xié)處理器或?qū)S玫奶幚砥鳎T如,例如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU (通用圖形處理單元)、高吞吐量許多集成核(MIC)協(xié)處理器(包括30個(gè)或更多個(gè)核),嵌入式處理器、等等。處理器可以在一個(gè)或多個(gè)芯片上實(shí)現(xiàn)。處理器1200可以是一個(gè)或多個(gè)襯底的一部分,和/或可以使用若干種處理技術(shù)中的任何一種,諸如,例如,BiCMOS、CMOS,或NMOS,在一個(gè)或多個(gè)襯底上實(shí)現(xiàn)。
[0116]存儲(chǔ)器等級(jí)(hierarchy)包括核內(nèi)的一級(jí)或多級(jí)高速緩存、一組或者一個(gè)或多個(gè)共享高速緩存單元1206、以及耦合到一組集成存儲(chǔ)器控制器單元1214的外部存儲(chǔ)器(未示出)。一組共享高速緩存單元1206可包括一個(gè)或多個(gè)中級(jí)高速緩存(諸如二級(jí)(L2)、三級(jí)(L3)、四級(jí)(L4))或其他級(jí)高速緩存、最后一級(jí)高速緩存(LLC)、和/或其組合。盡管在一個(gè)實(shí)施例中,基于環(huán)形的互連單元1212使集成圖形邏輯1208、一組共享高速緩存單元1206、以及系統(tǒng)代理單元1210/集成存儲(chǔ)器控制器單元1214互連,但是替代實(shí)施例可使用任意數(shù)量的公知技術(shù)來互連這些單元。在一個(gè)實(shí)施例中,在一個(gè)或多個(gè)緩存單元1206和核1202-A-N之間維護(hù)了一致性。
[0117]在某些實(shí)施例中,核1202A-N中的一個(gè)或多個(gè)能夠多線程處理。系統(tǒng)代理1210包括協(xié)調(diào)和操作核1202A-N的那些組件。系統(tǒng)代理單元1210可包括例如功率控制單元(P⑶)和顯示單元。P⑶可以是或包括管理核1202A-N和集成的圖形邏輯1208的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。
[0118]核1202A-N在架構(gòu)指令集方面可以是同質(zhì)的或者異質(zhì)的,即核1202A-N中的兩個(gè)或兩個(gè)以上核可能夠執(zhí)行相同的指令集,而其他核可能夠只執(zhí)行該指令集的子集或者不同的指令集。
[0119]示例性計(jì)算機(jī)架構(gòu)
[0120]圖13-16是示例性計(jì)算機(jī)架構(gòu)的框圖。在本領(lǐng)域中已知的用于膝上型個(gè)人計(jì)算機(jī)、臺(tái)式個(gè)人計(jì)算機(jī)、手持個(gè)人計(jì)算機(jī)(PC)、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)中樞、交換機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備、以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計(jì)和配置也是合適的。一般而言,如此處所公開的能夠包括處理器和/或其他執(zhí)行邏輯的各種系統(tǒng)或電子設(shè)備一般是合適的。
[0121]現(xiàn)在參考圖13,所示出的是根據(jù)本發(fā)明實(shí)施例的系統(tǒng)1300的框圖。系統(tǒng)1300可以包括耦合到控制器中樞1320的一個(gè)或多個(gè)處理器1310、1315。在一個(gè)實(shí)施例中,控制器中樞1320包括圖形存儲(chǔ)器控制器中樞(GMCH) 1390和輸入/輸出中樞(IOH) 1350 (它們可在分離的芯片上),GMCH1390包括耦合到存儲(chǔ)器1340和協(xié)處理器1345的存儲(chǔ)器和圖形控制器,10H1350使輸入/輸出(I/O)設(shè)備1360耦合到GMCH1390。替換地,存儲(chǔ)器和圖形控制器中的一個(gè)或兩個(gè)集成在處理器內(nèi)(如本文中所描述的),存儲(chǔ)器1340和協(xié)處理器1345直接耦合到處理器1310和在單個(gè)芯片中具有10H1350的控制器中樞1320。
[0122]在圖13中利用虛線表示附加的處理器1315的可任選特性。每一處理器1310、1315可包括此處所描述的處理核中的一個(gè)或多個(gè),并可以是處理器1200的某種版本。
[0123]存儲(chǔ)器1340可以是,例如,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)或兩者的組合。對(duì)于至少一個(gè)實(shí)施例,控制器中樞1320通過諸如前端總線(FSB)之類的多點(diǎn)分支總線(mult1-drop bus)、諸如快速通道互連(QPI)之類的點(diǎn)對(duì)點(diǎn)接口、或類似的連接1395與處理器1310、1315進(jìn)行通信。
[0124]在一個(gè)實(shí)施例中,協(xié)處理器1345是專用的處理器,諸如,例如,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。在一個(gè)實(shí)施例中,控制器中樞1320可包括集成圖形加速器。
[0125]按照包括架構(gòu)、微架構(gòu)、熱、功耗特征等等優(yōu)點(diǎn)的度量譜,物理資源1310、1315之間存在各種差別。
[0126]在一個(gè)實(shí)施例中,處理器1310執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可以嵌入這些指令內(nèi)。處理器1310識(shí)別如具有應(yīng)當(dāng)由附連的協(xié)處理器1345執(zhí)行的類型的這些協(xié)處理器指令。因此,處理器1310在協(xié)處理器總線或者其他互連上將這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號(hào))發(fā)出到協(xié)處理器1345。協(xié)處理器1345接受并執(zhí)行接收到的協(xié)處理器指令。
[0127]現(xiàn)在參考圖14,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的第一更具體的示例性系統(tǒng)1400的方框圖。如圖14所示,多處理器系統(tǒng)1400是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并包括通過點(diǎn)對(duì)點(diǎn)互連1450耦合的第一處理器1470和第二處理器1480。處理器1470和1480中的每一個(gè)都可以是某個(gè)版本的處理器1200。在本發(fā)明的一個(gè)實(shí)施例中,處理器1470和1480分別是處理器1310和1315,而協(xié)處理器1438是協(xié)處理器1345。在另一實(shí)施例中,處理器1470和1480分別是處理器1310和協(xié)處理器1345。
[0128]處理器1470和1480被示為分別包括集成的存儲(chǔ)器控制器(MO單元1472和1482。處理器1470還包括作為其總線控制器單元一部分的點(diǎn)對(duì)點(diǎn)(P-P)接口 1476和1478 ;類似地,第二處理器1480包括P-P接口 1486和1488。處理器1470,1480可以使用P-P接口電路1478,1488經(jīng)由點(diǎn)對(duì)點(diǎn)(P-P)接口 1450來交換信息。如圖14所示,IMC1472和1482將處理器耦合到相應(yīng)的存儲(chǔ)器,即,存儲(chǔ)器1432和存儲(chǔ)器1434,這些存儲(chǔ)器可以是本地連接到相應(yīng)的處理器的主存儲(chǔ)器的部分。
[0129]處理器1470,1480可各自使用點(diǎn)對(duì)點(diǎn)接口電路1476,1494,1486,1498經(jīng)由各個(gè)P-P接口 1452,1454與芯片組1490交換信息。芯片組1490可任選地經(jīng)由高性能接口 1439與協(xié)處理器1438交換信息。在一個(gè)實(shí)施例中,協(xié)處理器1438是專用的處理器,諸如,例如,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等坐寸ο
[0130]共享高速緩存(未示出)可被包括在任一處理器中或者在兩個(gè)處理器外部,但是經(jīng)由P-P互連與處理器連接,由此如果處理器置于低功率模式中,則任一或兩個(gè)處理器的本地高速緩存信息可被存儲(chǔ)在共享高速緩存中。
[0131]芯片組1490可以通過接口 1496耦合到第一總線1416。在一個(gè)實(shí)施例中,第一總線1416可以是外圍組件互連(PCI)總線,或諸如PCI Express總線之類或另一第三代I/O互連總線的總線,雖然本發(fā)明的范圍不僅限于此。
[0132]如圖14所示,各種I/O設(shè)備1414可連同總線橋1418—起耦合到第一總線1416,總線橋1418將第一總線1416耦合到第二總線1420。在一個(gè)實(shí)施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的加速器(諸如舉例而言,圖形加速器或數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場(chǎng)可編程門陣列、或者其他處理器之類的一個(gè)或多個(gè)附加處理器1415耦合到第一總線1416。在一個(gè)實(shí)施例中,第二總線1420可以是低引腳數(shù)(LPC)總線。在一個(gè)實(shí)施例中,多個(gè)設(shè)備可以耦合到第二總線1420,包括例如鍵盤和/或鼠標(biāo)1422、通信設(shè)備1427以及可以包括指令/代碼和數(shù)據(jù)1430的存儲(chǔ)單元1428 (諸如盤驅(qū)動(dòng)器或其它海量存儲(chǔ)設(shè)備)。此夕卜,音頻1/01424可以耦合到第二總線1420。注意,其他架構(gòu)也是可以的。例如,代替圖14的點(diǎn)對(duì)點(diǎn)架構(gòu),系統(tǒng)可以實(shí)現(xiàn)多點(diǎn)分支總線或其他這樣的架構(gòu)。
[0133]現(xiàn)在參考圖15,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的第二更具體的示例性系統(tǒng)1500的方框圖。圖14和15中的類似元件使用類似附圖標(biāo)記,且在圖15中省略了圖14的某些方面以避免混淆圖15的其它方面。
[0134]圖15示出處理器1470、1480可分別包括集成存儲(chǔ)器和I/O控制邏輯(“CL”)1172和1482。因此,CL1472U482包括集成的存儲(chǔ)器控制器單元并包括I/O控制邏輯。圖15示出:不僅存儲(chǔ)器1432、1434耦合到CL1472、1482,而且I/O設(shè)備1514也耦合到控制邏輯1472、1482。舊式I/O設(shè)備1515耦合到芯片集1490。
[0135]現(xiàn)在參考圖16,示出了根據(jù)本發(fā)明的實(shí)施例的SoC1600的框圖。圖12中的類似元件具有相似的參考編號(hào)。而且,虛線框是更高級(jí)SoC上的任選的特征。在圖16中,互連單元1602耦合到:應(yīng)用程序處理器1610,包括一組一個(gè)或多個(gè)核202A-N和共享緩存單元1206 ;系統(tǒng)代理單元1210 ;總線控制器單元1216 ;集成存儲(chǔ)器控制器單元1214 組或一個(gè)或多個(gè)協(xié)處理器1620,可以包括集成圖形邏輯、圖像處理器、音頻處理器,以及視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元1630 ;直接存儲(chǔ)器訪問(DMA)單元1632 ;以及顯示單兀1640,用于稱合到一個(gè)或多個(gè)外部顯不器。在一個(gè)實(shí)施例中,協(xié)處理器1620包括專用處理器,諸如,舉例而言,網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、嵌入式處理器,等等。
[0136]本文中所公開的機(jī)制的各實(shí)施例可以以硬件、軟件、固件,或這樣的實(shí)現(xiàn)方法的組合來實(shí)現(xiàn)。本發(fā)明的各實(shí)施例可以被實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,這些可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備,以及至少一個(gè)輸出設(shè)備。
[0137]可以將諸如圖14中所示出的代碼1430之類的程序代碼應(yīng)用于輸入指令,以執(zhí)行此處所描述的功能并生成輸出信息??梢砸砸阎姆绞较蛞粋€(gè)或多個(gè)輸出設(shè)備應(yīng)用輸出信息。出于本申請(qǐng)的目的,處理系統(tǒng)包括具有處理器(諸如,舉例而言,數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC),或微處理器)的任何系統(tǒng)。
[0138]程序代碼可以以高級(jí)過程化編程語言或面向?qū)ο缶幊陶Z言來實(shí)現(xiàn),以與處理系統(tǒng)進(jìn)行通信。如果需要的話,程序代碼還可以以匯編或機(jī)器語言來實(shí)現(xiàn)。事實(shí)上,此處所描述的機(jī)制不限于任何特定編程語言。在任何情況下,語言可以是編譯的或解釋的語言。
[0139]至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以通過存儲(chǔ)在機(jī)器可讀介質(zhì)上的代表性的指令來實(shí)現(xiàn),指令表示處理器內(nèi)的各種邏輯,這些指令在由機(jī)器讀取時(shí)使得該機(jī)器制備邏輯以執(zhí)行本文中所描述的技術(shù)。稱為“IP核”的這些表示可被存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上且供應(yīng)給各種客戶或制造設(shè)施以加載到實(shí)際上制作邏輯或處理器的制備機(jī)器。
[0140]這種機(jī)器可讀存儲(chǔ)介質(zhì)可包括但不限于,由機(jī)器或設(shè)備制造或形成的制品的非瞬態(tài)有形排列,包括:諸如硬盤,包括軟盤、光盤、壓縮盤只讀存儲(chǔ)器(CD-ROM)、壓縮盤可重寫(CD-RW)存儲(chǔ)器、以及磁電-光盤的任何其他類型的盤之類的存儲(chǔ)介質(zhì);諸如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)(諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM))、可擦除可編程只讀存儲(chǔ)器(EPR0M)、閃存、電可擦除可編程只讀存儲(chǔ)器(EEPROM),相變存儲(chǔ)器(PCM)之類的半導(dǎo)體器件;磁或光卡;或者適于存儲(chǔ)電子指令的任何其他類型的介質(zhì)。
[0141]因此,本發(fā)明的各實(shí)施例還包括包含指令或者包含設(shè)計(jì)數(shù)據(jù)(諸如硬件描述語言(HDL))的非瞬態(tài)有形機(jī)器可讀介質(zhì),該設(shè)計(jì)數(shù)據(jù)定義本文中所描述的結(jié)構(gòu)、電路、裝置、處理器、和/或系統(tǒng)特征。這樣的實(shí)施例還可以被稱為程序產(chǎn)品。
[0142]仿真(包括二進(jìn)制轉(zhuǎn)換,代碼變形,等等)
[0143]在某些情況下,可以使用指令轉(zhuǎn)換器來將指令從源指令集轉(zhuǎn)換為目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以轉(zhuǎn)換(例如,使用靜態(tài)二進(jìn)制轉(zhuǎn)換、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換)、變形、仿真,或以別的方式將指令轉(zhuǎn)換為要由核處理的一個(gè)或多個(gè)其他指令。指令轉(zhuǎn)換器可以以軟件、硬件、固件,或其組合來實(shí)現(xiàn)。指令轉(zhuǎn)換器可以是在處理器上、在處理器外,或部分在處理器上且部分在處理器外。
[0144]圖17是根據(jù)本發(fā)明的各實(shí)施例的比較使用軟件指令轉(zhuǎn)換器來將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示出的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,雖然可替換地指令轉(zhuǎn)換器可以以軟件、固件、硬件,或其不同組合來實(shí)現(xiàn)。圖17示出了可以使用x86編譯器1704來編譯高級(jí)語言1702的程序,以生成x86 二進(jìn)制代碼1706,該x86 二進(jìn)制代碼1706可以原生地由帶有至少一個(gè)x86指令集核的處理器1716來執(zhí)行。帶有至少一個(gè)x86指令集核的處理器1716表示任何處理器,該處理器可以通過兼容地執(zhí)行或以別的方式處理(I) Intel x86指令集核的指令集的相當(dāng)大的部分或(2)用于在帶有至少一個(gè)x86指令集核的Intel處理器上運(yùn)行的應(yīng)用程序或其他軟件的目標(biāo)代碼版本,來與帶有至少一個(gè)x86指令集核的Intel處理器執(zhí)行基本上相同功能,以便與帶有至少一個(gè)x86指令集核的Intel處理器實(shí)現(xiàn)基本上相同結(jié)果。x86編譯器1704表示可操作以生成x86 二進(jìn)制代碼1706 (例如,目標(biāo)代碼)的編譯器,x86 二進(jìn)制代碼1706可以,伴有或者沒有額外的鏈接處理,在帶有至少一個(gè)x86指令集核的處理器1416上執(zhí)行。類似地,圖17示出了可以使用替代指令集編譯器1708來編譯高級(jí)語言1702的程序,以生成替代的指令集二進(jìn)制代碼1710,該替代指令集二進(jìn)制代碼1710可以原生地由沒有至少一個(gè)x86指令集核的處理器1714 (例如,帶有執(zhí)行位于加利福尼亞(CA)的桑尼維爾(Sunnyvale)的MIPS技術(shù)公司的MIPS指令集和/或執(zhí)行位于加利福尼亞(CA)的桑尼維爾(Sunnyvale)的ARM控股公司的ARM指令集的核的處理器)來執(zhí)行。使用指令轉(zhuǎn)換器1712來將x86 二進(jìn)制代碼1706轉(zhuǎn)換為可以原生地由沒有x86指令集核的處理器1714來執(zhí)行的代碼。該經(jīng)轉(zhuǎn)換的代碼不太可能與替代的指令集二進(jìn)制代碼1710 —樣,因?yàn)殡y以制造能完成此舉的指令轉(zhuǎn)換器;然而,經(jīng)轉(zhuǎn)換的代碼將完成通用操作,并由替代的指令集的指令所構(gòu)成。如此,指令轉(zhuǎn)換器1712表示通過仿真、模擬(simulation)或任何其他過程,使沒有x86指令集處理器或核的處理器或其他電子器件執(zhí)行x86 二進(jìn)制代碼1706的軟件、固件、硬件,或其組合。
[0145]在其他實(shí)施例中,庫(kù)本身可包括邏輯來選擇適用于軟件模塊的庫(kù)部分的集合。例如,庫(kù)可讀取處理器特性狀態(tài)寄存器以確定軟件模塊針對(duì)給定操作碼具有什么含義,且隨后可選擇并提供該部分。
[0146]針對(duì)圖1、4和5中任一個(gè)所描述的元件、特征和細(xì)節(jié)也可任選地被用于圖2和3中任一個(gè)。此外,本文中針對(duì)任一裝置所描述的組件、特征以及細(xì)節(jié)還可任選地用于本文中所描述的在實(shí)施例中可由這種裝置和/或使用這種裝置執(zhí)行的任一方法中。
[0147]示例實(shí)施例
[0148]以下示例涉及進(jìn)一步的實(shí)施例。這些示例中的特性可用于一個(gè)或多個(gè)實(shí)施例中的任何地方。
[0149]實(shí)例I是一種處理器,其包括用于接收第一指令和用于確定第一指令將被仿真的解碼邏輯。該處理器還包括與解碼邏輯耦合的仿真模式知曉解碼后指令處理器邏輯。該仿真模式知曉解碼后指令處理器邏輯用于在處于仿真模式時(shí),與不處于仿真模式時(shí)不同地處理從用于仿真第一指令的一個(gè)或多個(gè)指令的集合中的指令解碼而得的一個(gè)或多個(gè)控制信號(hào)。
[0150]示例2包括任何在前示例的處理器,且可任選的,所述第一指令比所述集合中的每一個(gè)指令都更復(fù)雜,因?yàn)樗龅谝恢噶钌婕罢粓?zhí)行的更多操作。
[0151]示例3包括任何在前示例的處理器,且可任選地,其中所述處理器不使用微代碼來實(shí)現(xiàn)指令集合中的任何指令。
[0152]示例4包括任何前述示例的處理器,且可任選地,其中一個(gè)或多個(gè)指令的所述集合中的每一指令與所述第一指令屬于相同指令集合。
[0153]示例5包括任何在前示例的處理器,且可任選地,其中所述仿真模式知曉解碼后指令處理程序邏輯包括仿真模式知曉異常情況處理程序邏輯,用于將在處理所述一個(gè)或多個(gè)控制信號(hào)時(shí)發(fā)生的異常情況報(bào)告給仿真邏輯。
[0154]示例6包括任何在前示例的處理器,且可任選地,其中所述仿真模式知曉異常情況處理程序邏輯用于把所述第一指令的地址存儲(chǔ)在堆棧中。
[0155]示例7包括任何在前示例的處理器,且可任選地,其中所述仿真模式知曉異常情況處理程序邏輯用于把對(duì)該所述異常情況的指示以及所述異常情況的錯(cuò)誤代碼存儲(chǔ)在與所述模擬邏輯耦合的一個(gè)或多個(gè)寄存器中。
[0156]示例8包括任何在前示例的處理器,且可任選地,其中所述仿真模式知曉異常情況處理程序邏輯用于響應(yīng)于所述異常情況而避免將控制直接轉(zhuǎn)移到異常情況處理程序,并且其中所述仿真邏輯的一個(gè)或多個(gè)指令用于將控制轉(zhuǎn)移到所述異常情況處理程序。
[0157]示例9包括任何在前示例的處理器,且可任選地,其中所述仿真模式知曉解碼后指令處理器邏輯包括仿真模式知曉訪問控制邏輯,用于在處于所述仿真模式時(shí)與在不處于所述仿真模式時(shí)不同地控制由所述一個(gè)或多個(gè)控制信號(hào)對(duì)資源和信息中的至少一個(gè)的訪問。
[0158]示例10包括任何在前示例的處理器,且可任選地,其中所述仿真模式知曉訪問控制邏輯用于在處于所述仿真模式時(shí)允許對(duì)所述資源和所述信息中的所述至少一個(gè)的訪問,并且在不處于所述仿真模式時(shí)將阻止對(duì)所述資源和所述信息中的所述至少一個(gè)的訪問。
[0159]示例11包括任何在前示例的處理器,且可任選地,其中所述資源和所述信息中的所述至少一個(gè)包括安全邏輯、安全信息、加密邏輯、解密邏輯、隨機(jī)數(shù)生成器邏輯、保留以供操作系統(tǒng)訪問的邏輯、保留以供操作系統(tǒng)訪問的存儲(chǔ)器部分、以及保留以供操作系統(tǒng)訪問的信息中的至少一個(gè)。
[0160]示例12包括任何在前示例的處理器,且可任選地,其中所述資源和所述信息中的所述至少一個(gè)包括:在另一邏輯處理器和另一物理處理器之一中的資源和信息中的至少一個(gè)。
[0161]示例13包括任何在前示例的處理器,且可任選地,其中一個(gè)或多個(gè)指令的所述集合包括至少三個(gè)指令。
[0162]示例14是處理器中的方法,包括接收第一指令,并確定對(duì)該第一指令進(jìn)行仿真。該方法還包括接收要用來仿真所述第一指令的一個(gè)或多個(gè)指令的集合。該方法還包括:在處于仿真模式時(shí)與在不處于所述仿真模式時(shí)不同地處理從所述集合中的指令導(dǎo)出的一個(gè)或多個(gè)控制信號(hào)。
[0163]示例15包括任何在前示例的方法,且可任選地,其中接收第一指令包括接收比一個(gè)或多個(gè)指令的所述集合中的每一指令更復(fù)雜的所述第一指令。
[0164]示例16包括任何在前示例的方法,且可任選地,其中接收一個(gè)或多個(gè)指令的所述集合包括接收各自與所述第一指令屬于相同指令集合的一個(gè)或多個(gè)指令。
[0165]示例17包括任何在前示例的方法,且可任選地,其中處理包括:將在處理所述一個(gè)或多個(gè)控制信號(hào)時(shí)發(fā)生的異常情況報(bào)告給仿真邏輯。還可任選地,執(zhí)行所述仿真邏輯的一個(gè)或多個(gè)指令以將控制轉(zhuǎn)移給異常情況處理程序。
[0166]示例18包括任何在前示例的方法,且可任選地,其中報(bào)告包括:將所述異常情況的指示存儲(chǔ)在一個(gè)或多個(gè)寄存器中。還可任選地,將所述第一指令的地址存儲(chǔ)在堆棧中。
[0167]示例19包括任何在前示例的方法,且可任選地,其中處理包括:在處于所述仿真模式時(shí)與不處于所述仿真模式時(shí)不同地控制由所述一個(gè)或多個(gè)控制信號(hào)對(duì)資源和信息中的至少一個(gè)的訪問。
[0168]示例20包括任何在前示例的方法,且可任選地,其中不同地控制訪問包括:當(dāng)處于所述仿真模式中時(shí),允許對(duì)所述資源和所述信息中所述至少一個(gè)的訪問。還可任選地,在不處于所述仿真模式時(shí)阻止對(duì)所述資源和所述信息中的所述至少一個(gè)的訪問。
[0169]示例21是用于處理指令的系統(tǒng),其包括互連和與該互連耦合的處理器。所述處理器包括解碼邏輯,用于接收第一指令和用于確定所述第一指令將被仿真。所述處理器還包括與所述解碼邏輯耦合的仿真模式知曉解碼后指令處理器邏輯。所述仿真模式知曉解碼后指令處理器邏輯用于當(dāng)處于仿真模式時(shí),與不處于仿真模式時(shí)不同地處理從用于仿真所述第一指令的一個(gè)或多個(gè)指令的集合中的指令解碼而得的一個(gè)或多個(gè)控制信號(hào)。所述系統(tǒng)還包括與所述互連耦合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
[0170]示例22包括示例21的系統(tǒng),且可任選地,其中所述仿真模式知曉解碼后指令處理程序邏輯包括仿真模式知曉異常情況處理程序邏輯,用于將在處理所述一個(gè)或多個(gè)控制信號(hào)時(shí)發(fā)生的異常情況報(bào)告給仿真邏輯。
[0171]示例I是處理器,其包括用于接收具有給定操作碼的第一指令的解碼器。所述解碼器包括檢查邏輯,用于檢查所述給定操作碼是具有第一含義還是具有第二含義。所述處理器還包括解碼邏輯,用于在所述給定操作碼具有第一含義時(shí),解碼所述第一指令并輸出一個(gè)或多個(gè)相應(yīng)的控制信號(hào)。所述解碼器還包括仿真引發(fā)邏輯,用于在所述給定操作碼具有第二含義時(shí)引發(fā)對(duì)所述第一指令的仿真。
[0172]示例2包括任何在前示例的處理器,且可任選地,其中所述第二含義要老于所述第一含義。
[0173]示例3包括任何在前示例的處理器,且可任選地,所述第二含義包括處于變?yōu)楸粭売眠^程中的操作碼定義。
[0174]示例4包括任何在前示例的處理器,且可任選地,還包括與所述解碼器耦合的存儲(chǔ)位置,用于存儲(chǔ)所述給定操作碼是具有第一含義還是第二含義的指示,并且其中所述檢查邏輯用于檢查所述存儲(chǔ)位置以確定所述指示。
[0175]示例5包括任何在前示例的處理器,且可任選地,其中所述存儲(chǔ)位置是程序加載器模塊可訪問的,以允許所述程序加載器模塊將所述指示存儲(chǔ)在所述存儲(chǔ)位置中。
[0176]示例6包括任何在前示例的處理器,且可任選地,還包括與所述存儲(chǔ)位置耦合的邏輯,用于將來自所述存儲(chǔ)位置的所述指示存儲(chǔ)到處理器特性寄存器中,其中所述處理器特性寄存器可由所述第一指令的指令集合中的處理器特性標(biāo)識(shí)指令所讀取。
[0177]示例7包括任何在前示例的處理器,且可任選地,還包括與所述解碼器相耦合的多個(gè)存儲(chǔ)位置,用于存儲(chǔ)多個(gè)指示,所述指示中的每一個(gè)對(duì)應(yīng)于多個(gè)操作碼中的不同操作碼,所述指示中的每一個(gè)用于指示每個(gè)對(duì)應(yīng)操作碼是具有第一含義還是第二含義。
[0178]示例8包括任何在前示例的處理器,且可任選地,其中用于引發(fā)仿真的所述邏輯包括用于設(shè)定仿真模式的邏輯。
[0179]示例9包括任何在前示例的處理器,且可任選地,還包括與所述解碼器耦合的仿真邏輯,所述仿真邏輯用于當(dāng)所述給定操作碼具有所述第二含義時(shí),響應(yīng)于所述仿真引發(fā)邏輯引發(fā)了仿真,向所述解碼器提供一個(gè)或多個(gè)指令的集合以仿真所述第一指令。
[0180]示例10包括任何前述示例的處理器,且可任選地,其中所述集合中的每一指令與所述第一指令屬于相同指令集合。
[0181]示例11包括任何在前示例的處理器,且可任選地,其中所述處理器不使用微代碼來實(shí)現(xiàn)指令集合中的任何指令。
[0182]示例12包括任何在前示例的處理器,且可任選地,還包括邏輯,用于當(dāng)特權(quán)級(jí)別邏輯和環(huán)級(jí)別邏輯中的一個(gè)指示操作系統(tǒng)模式時(shí),強(qiáng)制所述解碼器為所述給定操作碼使用更新(newer)的含義而非被棄用的含義。
[0183]示例13是處理器中的方法,其包括接收具有給定操作碼的第一指令,并確定所述給定操作碼具有第二含義而非第一含義。所述方法還包括:響應(yīng)于確定所述給定操作碼具有所述第二含義,確定對(duì)所述第一指令進(jìn)行仿真。
[0184]示例14包括任何在前示例的方法,且可任選地,其中確定包括:確定所述給定操作碼具有比第一含義更老的第二含義,且其中所述第二含義處于被棄用的過程中。
[0185]示例15包括任何在前示例的方法,且可任選地,其中確定包括:從存儲(chǔ)位置讀取所述給定操作碼具有所述第二含義的指示。
[0186]示例16包括任何在前示例的方法,且可任選地,還包括將所述給定操作碼具有所述第二含義的所述指示存儲(chǔ)在處理器特性寄存器中,該處理器特性寄存器可由所述處理器的指令集合中的處理器特性標(biāo)識(shí)指令來讀取。
[0187]示例17包括任何在前示例的方法,且可任選地,還包括,仿真所述第一指令包括當(dāng)所述給定操作碼具有所述第二含義時(shí),解碼被用于仿真所述第一指令的一個(gè)或多個(gè)指令的集合。
[0188]示例18包括任何在前示例的方法,且可任選地,其中解碼指令的所述集合包括解碼與所述第一指令屬于相同指令集合的一個(gè)或多個(gè)指令。
[0189]示例19包括任何在前示例的方法,且可任選地,在不使用微代碼來實(shí)現(xiàn)指令集合中的任何指令的處理器中執(zhí)行。
[0190]示例20是一種制品,其包括存儲(chǔ)指令的非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì),所述指令當(dāng)被機(jī)器執(zhí)行時(shí),將致使所述機(jī)器執(zhí)行操作。所述操作包括:通過檢查軟件模塊的元數(shù)據(jù),確定具有給定操作碼的第一指令在由所述軟件模塊被處理器執(zhí)行時(shí)將具有第二含義而非第一含義。所述操作還包括:將具有所述給定操作碼的所述第一指令要具有所述第二含義的指示存儲(chǔ)在處理器的狀態(tài)中。
[0191]示例21包括任何在前示例的制品,且可任選地,其中所述機(jī)器可讀存儲(chǔ)介質(zhì)還包括如果被所述機(jī)器執(zhí)行時(shí)致使所述機(jī)器執(zhí)行操作的指令,所述操作包括:選擇使用所述給定操作碼的所述第二含義的軟件庫(kù)部分而非使用所述給定操作碼的所述第一含義的另一軟件庫(kù)部分,并將所選擇的軟件庫(kù)部分提供給所述軟件模塊,其中所述第二含義是被棄用含義。
[0192]示例22包括任何在前示例的制品,且可任選地,其中所述機(jī)器可讀存儲(chǔ)介質(zhì)還包括如果被所述機(jī)器執(zhí)行時(shí)致使所述機(jī)器執(zhí)行操作的指令,所述操作包括:基于所述軟件模塊的年齡(age)來確定所述給定操作碼具有所述第二含義。
[0193]示例23包括任何在前示例的制品,且可任選地,其中所述機(jī)器可讀存儲(chǔ)介質(zhì)還包括如果被所述機(jī)器執(zhí)行時(shí)致使所述機(jī)器執(zhí)行操作的指令,所述操作包括:檢查對(duì)象模塊格式的標(biāo)記并將所述指示存儲(chǔ)在所述處理器的寄存器中的標(biāo)記中。
[0194]示例24是用于處理指令的系統(tǒng),其包括互連和與該互連耦合的處理器。所述處理器用于接收具有給定操作碼的第一指令。所述處理器包括檢查邏輯,用于檢查所述給定操作碼是具有第一含義還是具有第二含義。所述處理器包括解碼邏輯,用于在所述給定操作碼具有所述第一含義時(shí),解碼第一指令并輸出一個(gè)或多個(gè)相應(yīng)的控制信號(hào)。所述處理器包括仿真引發(fā)邏輯,用于在所述給定操作碼具有所述第二含義時(shí)引發(fā)對(duì)所述第一指令的仿真。所述系統(tǒng)還包括與所述互連耦合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
[0195]示例25包括示例24的主題,并可選地,還包括仿真邏輯,用于在所述給定操作碼具有所述第二含義時(shí),將與所述第一指令屬于相同指令集合的一個(gè)或多個(gè)指令的集合提供給所述解碼器以仿真所述第一指令。
[0196]示例26包括用于執(zhí)行示例13-19中的任何一個(gè)示例的方法的裝置。
[0197]示例27包括一種設(shè)備,其含用于執(zhí)行示例13-19中的任何一個(gè)示例的方法的裝置。
[0198]示例28包括用于執(zhí)行基本上如本文中所述的方法的設(shè)備。
[0199]示例29包括裝置,其含用于執(zhí)行如本文中所述的方法的設(shè)備。
[0200]在說明書和權(quán)利要求書中,可能使用了術(shù)語“耦合”和“連接”及其衍生詞。應(yīng)當(dāng)理解,這些術(shù)語不旨在作為彼此的同義詞。相反,在特定實(shí)施例中,可使用“連接”來指示兩個(gè)或更多元件彼此直接物理或電氣接觸?!榜詈稀笨杀硎緝蓚€(gè)或兩個(gè)以上元件直接物理或電接觸。然而,“耦合”還可表示兩個(gè)或兩個(gè)以上元件彼此不直接接觸,但是仍然彼此協(xié)同操作或交互。例如,第一組件和第二組件可以通過居間組件彼此耦合。在附圖中,雙向箭頭用于示出雙向連接和耦合。
[0201]在該描述和權(quán)利要求中,可能使用了術(shù)語“邏輯”。如本文中所使用的,邏輯可包括硬件、固件、軟件或者其各種組合。邏輯的示例包括集成電路、專用集成電路、模擬電路、數(shù)字電路、編程邏輯設(shè)備、包括指令的存儲(chǔ)器設(shè)備等。在某些實(shí)施例中,硬件邏輯可包括晶體管和/或邏輯門,并潛在地伴有其他電路組件。
[0202]可能使用了術(shù)語“和/或”。如所使用的,術(shù)語“和/或”表示其中之一、或另一個(gè)、或兩者(例如“A和/或B”表示A、或B、或A、B兩者)。
[0203]在以上描述中,為解釋起見,陳述了眾多具體細(xì)節(jié)以提供對(duì)本發(fā)明的實(shí)施例的透徹理解。然而,將對(duì)本領(lǐng)域技術(shù)人員明顯的是,在沒有這些具體細(xì)節(jié)中的一些的情況下,也可實(shí)踐一個(gè)或多個(gè)其他實(shí)施例。提供所描述的具體實(shí)施例不是為了限制本發(fā)明而是為了通過示例實(shí)施例對(duì)其進(jìn)行說明。本發(fā)明的范圍不是由具體示例確定,而是僅由權(quán)利要求確定。在其他實(shí)例中,以框圖的形式或者在沒有細(xì)節(jié)的情況下,示出了公知電路、結(jié)構(gòu)、設(shè)備、以及操作,以避免混淆對(duì)該描述的理解。
[0204]在認(rèn)為適宜之處,附圖標(biāo)記或附圖標(biāo)記的結(jié)尾部分在諸附圖當(dāng)中被重復(fù),以指示可任選地具有相似或相同特性的對(duì)應(yīng)或相似的要素,除非另行明確指出或顯而易見。在描述了多個(gè)組件的情況下,一般將它們并入單個(gè)組件中。在描述了單個(gè)組件的其它情形中,它可以被劃分成多個(gè)組件。
[0205]描述了各種操作和方法。在流程圖中以相對(duì)基礎(chǔ)的形式描述了這些方法中的一些方法,但是操作可被任選地增加到這些方法和/或從這些方法移除。另外,盡管流程圖示出根據(jù)示例實(shí)施例的操作的特定次序,但是特定次序是示例性的。替換實(shí)施例可任選地以不同的次序執(zhí)行操作,組合特定操作,重疊特定操作等。
[0206]一些實(shí)施例包括制品(例如,計(jì)算機(jī)程序產(chǎn)品),該制品包括機(jī)器可讀介質(zhì)。該介質(zhì)可包括以可由機(jī)器讀取的形式提供(例如,存儲(chǔ))信息的機(jī)制。機(jī)器可讀介質(zhì)可提供指令或指令順序或者在其上存儲(chǔ)了指令或者令順序,該指令如果由機(jī)器執(zhí)行和/或在由機(jī)器執(zhí)行時(shí)可操作用于使機(jī)器執(zhí)行和/或?qū)е聶C(jī)器執(zhí)行本文中所公開的一種或多種操作、方法、或技術(shù)。合適的機(jī)器的示例包括但不限于處理器、指令處理裝置、數(shù)字邏輯電路、和集成電路等。合適的機(jī)器的其他示例包括以及結(jié)合這些處理器、指令處理裝置、數(shù)字邏輯電路、或集成電路的計(jì)算設(shè)備和其他電子設(shè)備。這些計(jì)算設(shè)備和電子設(shè)備的示例包括但不限于,臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)、平板計(jì)算機(jī)、上網(wǎng)本、智能電話、蜂窩電話、服務(wù)器、網(wǎng)絡(luò)設(shè)備(例如,路由器和交換機(jī))、移動(dòng)因特網(wǎng)設(shè)備(MID)、媒體播放器、智能電視、上網(wǎng)機(jī)、機(jī)頂盒、以及視頻游戲控制器。
[0207]在一些實(shí)施例中,機(jī)器可讀介質(zhì)可包括有形和/或非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)。例如,有形和/或非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)可包括軟盤、光學(xué)存儲(chǔ)介質(zhì)、光盤、光學(xué)數(shù)據(jù)存儲(chǔ)設(shè)備、CD-ROM、磁盤、磁電-光盤、只讀存儲(chǔ)器(ROM)、可編程ROM (PR0M)、可擦除和可編程ROM (EPROM)、電可擦除和可編程ROM (EEPROM)、隨機(jī)存取存儲(chǔ)器(RAM)、靜態(tài)RAM (SRAM)、動(dòng)態(tài)RAM (DRAM)、閃存、相變存儲(chǔ)器、相變數(shù)據(jù)存儲(chǔ)設(shè)備、非易失性存儲(chǔ)器、非易失性數(shù)據(jù)存儲(chǔ)設(shè)備、非瞬態(tài)存儲(chǔ)器、非瞬態(tài)數(shù)據(jù)存儲(chǔ)設(shè)備等。非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)不由瞬態(tài)傳播信號(hào)組成。
[0208]還應(yīng)理解,貫穿本說明書對(duì)例如“一個(gè)實(shí)施例”、“一實(shí)施例”或“一個(gè)或多個(gè)實(shí)施例”的引述意味著特定特征可包括在本發(fā)明的實(shí)踐中。類似地應(yīng)當(dāng)理解,在本說明書中,各個(gè)特征有時(shí)被一起編組在單個(gè)實(shí)施例、附圖或其描述中,以使本公開變得順暢并幫助理解各個(gè)創(chuàng)新性方面。然而,本公開的該方法不應(yīng)被解釋為反映出本發(fā)明需要多于在每一權(quán)利要求中明確敘述的特征的意圖。相反,如下面權(quán)利要求反映的,各創(chuàng)新性方面可體現(xiàn)于比單個(gè)公開的實(shí)施例的全部特征更少的特征。因此,該詳細(xì)描述之后的權(quán)利要求由此被明確地結(jié)合到該詳細(xì)描述中,其中,每一權(quán)利要求本身代表本發(fā)明的單獨(dú)實(shí)施例。
【權(quán)利要求】
1.一種處理器,包括: 用于接收具有給定操作碼的第一指令的解碼器,所述解碼器包括: 檢查邏輯,用于檢查所述給定操作碼是具有第一含義還是具有第二含義; 解碼邏輯,用于在所述給定操作碼具有所述第一含義時(shí)解碼所述第一指令并輸出一個(gè)或多個(gè)相應(yīng)的控制信號(hào);以及 仿真引發(fā)邏輯,用于在所述給定操作碼具有所述第二含義時(shí)引發(fā)對(duì)所述第一指令的仿真。
2.如權(quán)利要求1所述的處理器,其特征在于,所述第二含義比所述第一含義老。
3.如權(quán)利要求2所述的處理器,其特征在于,所述第二含義包括處于變?yōu)楸粭売眠^程中的操作碼定義。
4.如權(quán)利要求1所述的處理器,還包括與所述解碼器耦合的存儲(chǔ)位置,用于存儲(chǔ)所述給定操作碼是具有第一含義還是第二含義的指示,并且其中所述檢查邏輯用于檢查所述存儲(chǔ)位置以確定所述指示。
5.如權(quán)利要求4所述的處理器,其特征在于,所述存儲(chǔ)位置是程序加載器模塊可訪問的,以允許所述程序加載器模塊將所述指示存儲(chǔ)在所述存儲(chǔ)位置中。
6.如權(quán)利要求4所述的處理器,其特征在于,還包括與所述存儲(chǔ)位置耦合的邏輯,用于將來自所述存儲(chǔ)位置的所述指示存儲(chǔ)到處理器特性寄存器中,其中所述處理器特性寄存器可由所述第一指令的指令集合中的處理器特性標(biāo)識(shí)指令所讀取。
7.如權(quán)利要求4所述的處理器,其特征在于,還包括與所述解碼器相耦合的多個(gè)存儲(chǔ)位置,用于存儲(chǔ)多個(gè)指示,所述指示中的每一個(gè)對(duì)應(yīng)于多個(gè)操作碼中的不同操作碼,所述指示中的每一個(gè)用于指示每個(gè)對(duì)應(yīng)操作碼是具有第一含義還是第二含義。
8.如權(quán)利要求1所述的處理器,其特征在于,所述引發(fā)仿真的邏輯包括用于設(shè)定仿真模式的邏輯。
9.如權(quán)利要求1所述的處理器,其特征在于,還包括與所述解碼器耦合的仿真邏輯,所述仿真邏輯用于當(dāng)所述給定操作碼具有所述第二含義時(shí),響應(yīng)于所述仿真引發(fā)邏輯引發(fā)了仿真,向所述解碼器提供一個(gè)或多個(gè)指令的集合以仿真所述第一指令。
10.如權(quán)利要求9所述的處理器,其特征在于,所述集合中的每一指令與所述第一指令屬于相同指令集合。
11.如權(quán)利要求1所述的處理器,其特征在于,所述處理器不使用微代碼來實(shí)現(xiàn)指令集中的任何指令。
12.如權(quán)利要求1所述的處理器,其特征在于,還包括邏輯,用于當(dāng)特權(quán)級(jí)別邏輯和環(huán)級(jí)別邏輯中的一個(gè)指示操作系統(tǒng)模式時(shí),強(qiáng)制所述解碼器為所述給定操作碼使用更新的含義而非被棄用的含義。
13.—種在處理器中的方法,包括: 接收具有給定操作碼的第一指令; 確定所述給定操作碼具有第二含義而非第一含義;以及 響應(yīng)于確定所述給定操作碼具有所述第二含義,確定對(duì)所述第一指令進(jìn)行仿真。
14.如權(quán)利要求13所述的方法,其特征在于,所述確定包括:確定所述給定操作碼具有比第一含義更老的第二含義,且其中所述第二含義處于被棄用的過程中。
15.如權(quán)利要求13所述的方法,其特征在于,確定包括:從存儲(chǔ)位置讀取所述給定操作碼具有所述第二含義的指示。
16.如權(quán)利要求15所述的方法,其特征在于,還包括將所述給定操作碼具有所述第二含義的所述指示存儲(chǔ)在處理器特性寄存器中,所述處理器特性寄存器可由所述處理器的指令集合中的處理器特性標(biāo)識(shí)指令來讀取。
17.如權(quán)利要求13所述的方法,其特征在于,還包括,仿真所述第一指令包括當(dāng)所述給定操作碼具有所述第二含義時(shí),解碼被用于仿真所述第一指令的一個(gè)或多個(gè)指令的集合。
18.如權(quán)利要求17所述的方法,其特征在于,解碼指令的所述集合包括解碼與所述第一指令屬于相同指令集的一個(gè)或多個(gè)指令。
19.如權(quán)利要求13所述的方法,其特征在于,在不使用微代碼來實(shí)現(xiàn)指令集中的任何指令的處理器中執(zhí)行所述方法。
20.一種制品,包括存儲(chǔ)有指令的非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì),所述指令當(dāng)被機(jī)器執(zhí)行時(shí),將致使所述機(jī)器執(zhí)行操作,所述操作包括: 通過檢查軟件模塊的元數(shù)據(jù),確定具有給定操作碼的第一指令在由所述軟件模塊被處理器執(zhí)行時(shí)將具有第二含義而非第一含義;以及 將具有所述給定操作碼的所述第一指令要具有所述第二含義的指示存儲(chǔ)在所述處理器的狀態(tài)中。
21.如權(quán)利要求20所 述的制品,其特征在于,所述機(jī)器可讀存儲(chǔ)介質(zhì)還存儲(chǔ)有如果被所述機(jī)器執(zhí)行將致使所述機(jī)器執(zhí)行操作的指令,所述操作包括: 選擇使用所述給定操作碼的所述第二含義的軟件庫(kù)部分而非使用所述給定操作碼的所述第一含義的另一軟件庫(kù)部分,并將所選擇的軟件庫(kù)部分提供給所述軟件模塊,其中所述第二含義是被棄用含義。
22.如權(quán)利要求20所述的制品,其特征在于,所述機(jī)器可讀存儲(chǔ)介質(zhì)還存儲(chǔ)有如果被所述機(jī)器執(zhí)行將致使所述機(jī)器執(zhí)行操作的指令,所述操作包括: 基于所述軟件模塊的年齡來確定所述給定操作碼具有第二含義。
23.如權(quán)利要求20所述的制品,其特征在于,所述機(jī)器可讀存儲(chǔ)介質(zhì)還存儲(chǔ)有如果被所述機(jī)器執(zhí)行將致使所述機(jī)器執(zhí)行操作的指令,所述操作包括: 檢查對(duì)象模塊格式的標(biāo)記并將所述指示存儲(chǔ)在所述處理器的寄存器中的標(biāo)記中。
24.—種處理指令的系統(tǒng),包括: 互連; 與所述互連相耦合的處理器,所述處理器用于接收具有給定操作碼的第一指令,所述處理器包括: 檢查邏輯,用于檢查所述給定操作碼是具有第一含義還是具有第二含義; 解碼邏輯,用于在所述給定操作碼具有所述第一含義時(shí),解碼所述第一指令并輸出一個(gè)或多個(gè)相應(yīng)的控制信號(hào);以及 仿真引發(fā)邏輯,用于在所述給定操作碼具有所述第二含義時(shí)引發(fā)對(duì)所述第一指令的仿真;以及 與所述互連耦合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
25.如權(quán)利要求24所述的系統(tǒng),其特征在于,還包括仿真邏輯,用于在所述給定操作碼具有所述第二含義時(shí),將與所述第一指令屬于相同指令集合的一個(gè)或多個(gè)指令的集合提供給所述解碼器以仿 真所述第一指令。
【文檔編號(hào)】G06F9/455GK104049948SQ201410098131
【公開日】2014年9月17日 申請(qǐng)日期:2014年3月17日 優(yōu)先權(quán)日:2013年3月16日
【發(fā)明者】W·C·拉什, M·G·迪克森, Y·A·圣地亞哥 申請(qǐng)人:英特爾公司