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