本公開關(guān)于處理邏輯、微處理器和關(guān)聯(lián)指令集架構(gòu)的領(lǐng)域,該指令集架構(gòu)在由處理器或其他處理邏輯執(zhí)行時執(zhí)行邏輯、數(shù)學(xué)或其他功能操作。本公開進一步關(guān)于處理自修改代碼和與虛擬存儲器的交互的領(lǐng)域。
背景技術(shù):
::多處理器系統(tǒng)變得越來越普遍。多處理器系統(tǒng)的應(yīng)用的范圍從最高性能系統(tǒng)直到嵌入式低功率計算機。多處理器系統(tǒng)的應(yīng)用包括動態(tài)域分區(qū)一直到桌面計算。為了利用多處理器系統(tǒng),待執(zhí)行的代碼可分成多個線程以供各種處理實體執(zhí)行。每個線程可以彼此并行執(zhí)行。此外,為了提高處理實體的效用,可能采用亂序執(zhí)行。亂序執(zhí)行可能在對這樣的指令的所需輸入變得可用時執(zhí)行指令。從而,在代碼序列中較晚出現(xiàn)的指令可在代碼序列中較早出現(xiàn)的指令之前執(zhí)行。這些一起與虛擬存儲器和系統(tǒng)的存儲器模型交互。附圖說明實施例通過示例并且沒有限制地在附圖的圖中圖示。圖1a是根據(jù)本公開的實施例用處理器形成的示范性計算機系統(tǒng)的框圖,該處理器可以包括執(zhí)行單元用于執(zhí)行指令。圖1b圖示根據(jù)本公開的實施例的數(shù)據(jù)處理系統(tǒng)。圖1c圖示用于執(zhí)行文本串比較操作的數(shù)據(jù)處理系統(tǒng)的其他實施例。圖2是根據(jù)本公開的實施例對于處理器的微架構(gòu)的框圖,該處理器可以包括邏輯電路用于執(zhí)行指令。圖3a圖示根據(jù)本公開的實施例的多媒體寄存器中的各種封裝數(shù)據(jù)類型(packeddatatype)表示。圖3b圖示根據(jù)本公開的實施例的可能寄存器中數(shù)據(jù)存儲格式。圖3c圖示根據(jù)本公開的實施例的多媒體寄存器中的各種有符號和無符號封裝數(shù)據(jù)類型表示。圖3d圖示操作編碼格式的實施例。圖3e圖示根據(jù)本公開的實施例的另一個可能操作編碼格式,其具有四十個或以上的位。圖3f圖示根據(jù)本公開的實施例的再另一個可能操作編碼格式。圖4a是圖示根據(jù)本公開的實施例的有序流水線和寄存器重命名段、亂序發(fā)出/執(zhí)行流水線的框圖。圖4b是圖示根據(jù)本公開的實施例要包括在處理器中的有序架構(gòu)代碼和寄存器重命名邏輯、亂序發(fā)出/執(zhí)行邏輯的框圖。圖5a是根據(jù)本公開的實施例的處理器的框圖。圖5b是根據(jù)本公開的實施例的核的示例實現(xiàn)的框圖。圖6是根據(jù)本公開的實施例的系統(tǒng)的框圖。圖7是根據(jù)本公開的實施例的第二系統(tǒng)的框圖。圖8是根據(jù)本公開的實施例的第三系統(tǒng)的框圖。圖9是根據(jù)本公開的實施例的芯片上系統(tǒng)的框圖。圖10圖示根據(jù)本公開的實施例的處理器,其包含可以執(zhí)行至少一個指令的中央處理單元和圖形處理單元。圖11是圖示根據(jù)本公開的實施例ip核的開發(fā)的框圖。圖12圖示根據(jù)本公開的實施例、不同類型的處理器如何可以仿真第一類型的指令。圖13圖示根據(jù)本公開的實施例對比用于將源指令集中的二進制指令轉(zhuǎn)換成目標(biāo)指令集中的二進制指令的軟件指令轉(zhuǎn)換器的使用的框圖。圖14是根據(jù)本公開的實施例的處理器的指令集架構(gòu)的框圖。圖15是根據(jù)本公開的實施例的處理器的指令集架構(gòu)的更詳細(xì)框圖。圖16是根據(jù)本公開的實施例的處理器的執(zhí)行流水線的框圖。圖17是根據(jù)本公開的實施例用于使用處理器的電子設(shè)備的框圖。圖18圖示根據(jù)本公開的實施例用于在使用二進制翻譯時設(shè)置改變位的示例系統(tǒng)。圖19圖示根據(jù)本公開的實施例用于在使用二進制翻譯時設(shè)置改變位的系統(tǒng)的示例操作。圖20圖示用于在使用二進制翻譯時設(shè)置改變位的方法的示例實施例。具體實施方式下列描述描述了對于與可以結(jié)合處理器、虛擬處理器、封裝、計算機系統(tǒng)或其他處理裝置內(nèi)的二進制翻譯或與之關(guān)聯(lián)出現(xiàn)的頁表游走(pagetablewalk)關(guān)聯(lián)的改變位的指令和處理邏輯。這樣的位可以包括指示指定頁表是否被訪問過或者是臟的(即,被修改)的位。這樣的處理裝置可以包括亂序處理器。二進制翻譯可以包括例如自修改代碼、交叉修改代碼或直接存儲器訪問(dma)修改的代碼。在下列描述中,闡述許多特定細(xì)節(jié),例如處理邏輯、處理器類型、微架構(gòu)條件、事件、使能機構(gòu)及類似物,以便提供對本公開的實施例的更全面理解。然而,本領(lǐng)域內(nèi)技術(shù)人員將意識到實施例可以在沒有這樣的特定細(xì)節(jié)的情況下實踐。另外,未詳細(xì)示出一些眾所周知的結(jié)構(gòu)、電路及類似物以避免不必要地混淆本公開的實施例。盡管下列實施例參考處理器描述,其他實施例能適用于其他類型的集成電路和邏輯設(shè)備。本公開的實施例的相似技術(shù)和教導(dǎo)可以適用于其他類型的電路或半導(dǎo)體器件,其可以從更高流水線吞吐量和提高的性能中獲益。本公開的實施例的教導(dǎo)能適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機器。然而,實施例不限于執(zhí)行512位、256位、128位、64位、32位、16位或8位數(shù)據(jù)操作的處理器或機器并且可以應(yīng)用于其中可以執(zhí)行數(shù)據(jù)操縱或管理的任何處理器和機器。另外,下列描述提供示例,并且附圖為了說明目的示出各種示例。然而,因為這些示例僅預(yù)計提供本公開的實施例的示例而不提供本公開的實施例的所有可能實現(xiàn)的窮舉列表,不應(yīng)在限制性意義上解釋這些示例。盡管下面的示例在執(zhí)行單元和邏輯電路的上下文中描述指令處理和分發(fā),本公開的其他實施例可以通過存儲在機器可讀、有形介質(zhì)上的數(shù)據(jù)或指令來完成,這些數(shù)據(jù)或指令在由機器執(zhí)行時促使該機器執(zhí)行與本公開的至少一個實施例一致的功能。在一個實施例中,與本公開的實施例關(guān)聯(lián)的功能在機器可執(zhí)行指令中體現(xiàn)。指令可以用于促使可以用指令編程的通用或?qū)S锰幚砥鲌?zhí)行本公開的步驟。本公開的實施例可以作為計算機程序產(chǎn)品或軟件提供,其可以包括具有存儲在其上的指令的機器或計算機可讀介質(zhì),這些指令可以用于對計算機(或其他電子設(shè)備)編程來執(zhí)行根據(jù)本公開的實施例的一個或多個操作。此外,本公開的實施例的步驟可以由特定硬件部件(其包含用于執(zhí)行步驟的固定功能邏輯)或由編程計算機部件和固定功能硬件部件的任何組合執(zhí)行。用于對邏輯編程來執(zhí)行本公開的實施例的指令可以存儲在系統(tǒng)中的存儲器內(nèi),例如dram、高速緩存、閃速存儲器或其他存儲。此外,這些指令可以經(jīng)由網(wǎng)絡(luò)或通過其他計算機可讀介質(zhì)而分發(fā)。從而機器可讀介質(zhì)可以包括用于采用由機器(例如,計算機)可讀的形式存儲或傳送信息的任何機構(gòu),但不限于軟盤、光盤、壓縮盤只讀存儲器(cd-rom)和磁光盤、只讀存儲器(rom)、隨機存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、電可擦除可編程只讀存儲器(eeprom)、磁或光卡、閃速存儲器或有形的機器可讀存儲,其在經(jīng)由電、光、聲或其他形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等)在互聯(lián)網(wǎng)上傳送信息中使用。因此,計算機可讀介質(zhì)可以包括任何類型的有形機器可讀介質(zhì),其適合于采用由機器(例如,計算機)可讀的形式存儲或傳送電子指令或信息。設(shè)計可以歷經(jīng)各種階段,從創(chuàng)建到模擬到制造。代表設(shè)計的數(shù)據(jù)可以采用許多方式代表設(shè)計。首先,如可在模擬中有用的,硬件可使用硬件描述語言或另一個功能描述語言來表示。另外,具有邏輯和/或晶體管門的電路級模型可以在設(shè)計過程的某些階段產(chǎn)生。此外,設(shè)計在某一階段可以達到代表硬件模型中各種設(shè)備的物理布局的數(shù)據(jù)的級別。在使用一些半導(dǎo)體制造技術(shù)的情況下,代表硬件模型的數(shù)據(jù)可以是規(guī)定對于用于產(chǎn)生集成電路的掩模的不同掩模層上各種特征的存在或缺乏的數(shù)據(jù)。在設(shè)計的任何表示中,數(shù)據(jù)可采用機器可讀介質(zhì)的任何形式存儲。存儲器或磁或光存儲(例如盤)可以是用于存儲經(jīng)由光或電波傳送的信息的機器可讀介質(zhì),調(diào)制或用別的方式產(chǎn)生該光或電波來傳送這樣的信息。當(dāng)傳送指示或承載代碼或設(shè)計的電載波時,就執(zhí)行電信號的復(fù)制、緩沖或重傳來說,做出新的復(fù)制。從而,通信提供商或網(wǎng)絡(luò)提供商可以將例如編碼到載波內(nèi)的信息等體現(xiàn)本公開的實施例的技術(shù)的物品至少暫時存儲在有形的機器可讀介質(zhì)上。在現(xiàn)代處理器中,許多不同的執(zhí)行單元可以用于處理并且執(zhí)行多種代碼和指令。一些指令可以較快完成,而其他可花費許多時鐘周期來完成。指令的吞吐量越快,處理器的總性能越好。從而,盡可能快地執(zhí)行盡可能多的指令,這將是有利的。然而,存在某些指令(例如浮點指令、加載/存儲操作、數(shù)據(jù)移動等),其具有較大復(fù)雜性并且從執(zhí)行時間和處理器資源方面需要更多。隨著更多的計算機系統(tǒng)在互聯(lián)網(wǎng)、文本和多媒體應(yīng)用中使用,隨時間已引入額外處理器支持。在一個實施例中,指令集可以與一個或多個計算機架構(gòu)關(guān)聯(lián),包括數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲器架構(gòu)、中斷和異常處理以及外部輸入和輸出(i/o)。在一個實施例中,指令集架構(gòu)(isa)可以由一個或多個微架構(gòu)實現(xiàn),其可以包括用于實現(xiàn)一個或多個指令集的處理器邏輯和電路。因此,具有不同微架構(gòu)的處理器可以共享共同指令集的至少一部分。例如,intel?pentium4處理器、intel?core?處理器和來自加利福尼亞州sunnyvale的advancedmicrodevices,inc.的處理器實現(xiàn)x86指令集的幾乎相同版本(具有已增加有較新版本的一些擴展),但具有不同的內(nèi)部設(shè)計。相似地,由其他處理器開發(fā)公司(例如armholdings,ltd.、mips,或它們的被許可方或采納者)設(shè)計的處理器可以共享共同指令集的至少一部分,但可以包括不同的處理器設(shè)計。例如,isa的相同寄存器架構(gòu)可以采用不同方式在不同微架構(gòu)中使用新的或眾所周知的技術(shù)實現(xiàn),其包括專用物理寄存器、一個或多個動態(tài)分配物理寄存器(使用寄存器重命名機制(例如,使用寄存器別名表(rat))、重排序緩沖器(rob)和引退寄存器堆。在一個實施例中,寄存器可以包括一個或多個寄存器、寄存器架構(gòu)、寄存器堆或軟件編程方可以能夠或可以不能尋址的其他寄存器集。指令可以包括一個或多個指令格式。在一個實施例中,指令格式可以指示各種字段(位的數(shù)量、位的位點,等),以除其他外還規(guī)定待執(zhí)行的操作和將執(zhí)行操作所針對的操作數(shù)。在另外的實施例中,一些指令格式可以由指令模板(或子格式)進一步定義。例如,指定指令格式的指令模板可以定義成具有指令格式字段的不同子集和/或定義成具有不同解釋的指定字段。在一個實施例中,指令可以使用指令格式(并且,如果被定義的話,在該指令格式的指令模板中的一個模板中)來表達并且規(guī)定或指示操作以及操作將在其上操作的操作數(shù)??茖W(xué)、金融、自動向量化通用rms(識別、采掘和合成)以及視覺和多媒體應(yīng)用(例如,2d/3d圖形、圖像處理、視頻壓縮/解壓、視頻識別算法和音頻操縱)可以需要對大量數(shù)據(jù)項執(zhí)行相同操作。在一個實施例中,單指令多數(shù)據(jù)(simd)指的是促使處理器對多個數(shù)據(jù)元素執(zhí)行操作的指令類型。simd技術(shù)可以在可以將寄存器中的位邏輯劃分成許多大小固定或大小可變的數(shù)據(jù)元素(其中的每個代表獨立值)的處理器中使用。例如,在一個實施例中,64位寄存器中的位可以組織為源操作數(shù),其包含四個獨立16位數(shù)據(jù)元素,其中的每個代表獨立16位值。該類型的數(shù)據(jù)可以稱為‘封裝’數(shù)據(jù)類型或‘向量’數(shù)據(jù)類型,并且具有該數(shù)據(jù)類型的操作數(shù)稱為封裝數(shù)據(jù)操作數(shù)或向量操作數(shù)。在一個實施例中,封裝數(shù)據(jù)項或向量可以是存儲在單個寄存器內(nèi)的封裝數(shù)據(jù)元素序列,并且封裝數(shù)據(jù)操作數(shù)或向量操作數(shù)可以是simd指令(或‘封裝數(shù)據(jù)指令’或‘向量指令’)的源或目的地操作數(shù)。在一個實施例中,simd指令規(guī)定單向量運算,其要對兩個源向量操作數(shù)執(zhí)行來生成具有相同或不同大小、相同或不同數(shù)量的數(shù)據(jù)元素并且處于相同或不同數(shù)據(jù)元素順序的目的地向量操作數(shù)(也稱為結(jié)果向量操作數(shù))。例如由具有指令集(其包括x86、mmx?、流播simd擴展(sse)、sse2、sse3、sse4.1和sse4.2指令)的intel?core?處理器、arm處理器(例如armcortex?系列處理器,其具有包括向量浮點(vfp)和/或neon指令的指令集)和mips處理器(例如由中國科學(xué)院計算技術(shù)研究所(ict)開發(fā)的loongson系列處理器)采用的等等的simd技術(shù)實現(xiàn)應(yīng)用性能的顯著提高(core?和mmx?是加利福尼亞州santaclara的intelcorporation的注冊商標(biāo)或商標(biāo))。在一個實施例中,目的地和源寄存器/數(shù)據(jù)可以是代表對應(yīng)數(shù)據(jù)或操作的源和目的地的通稱。在一些實施例中,它們可以由寄存器、存儲器或具有除描述的那些以外的名稱或功能的其他存儲區(qū)實現(xiàn)。例如,在一個實施例中,“dest1”可以是暫時存儲寄存器或其他存儲區(qū),而“src1”和“src2”可以是第一和第二源存儲寄存器或其他存儲區(qū),等等。在其他實施例中,src和dest存儲區(qū)中的兩個或以上可以對應(yīng)于相同存儲區(qū)(例如,simd寄存器)內(nèi)的不同數(shù)據(jù)存儲元素。在一個實施例中,源寄存器中的一個還可以通過例如將對第一和第二源數(shù)據(jù)執(zhí)行的操作的結(jié)果寫回充當(dāng)目的地寄存器的兩個源寄存器中的一個而充當(dāng)目的地寄存器。圖1a是根據(jù)本公開的實施例用可以包括執(zhí)行單元來執(zhí)行指令的處理器形成的示范性計算機系統(tǒng)的框圖。系統(tǒng)100可以包括例如處理器102等部件,用于采用執(zhí)行單元(其包括邏輯)以根據(jù)本公開(例如在本文描述的實施例中)執(zhí)行對于過程數(shù)據(jù)的算法。系統(tǒng)100可以代表基于pentium?iii、pentium?4、xeon?、itanium?、xscale?和/或strongarm?微處理器(從加利福尼亞州santaclara的intelcorporation可獲得)的處理系統(tǒng),但還可以使用其他系統(tǒng)(其包括具有其他微處理器、工程化工作站、機頂盒及類似物的pc)。在一個實施例中,樣本系統(tǒng)100可以執(zhí)行從華盛頓州redmond的microsoftcorporation可獲得的windows?操作系統(tǒng)的版本,但還可以使用其他操作系統(tǒng)(例如unix和linux)、嵌入式軟件和/或圖形用戶界面。從而,本公開的實施例不限于硬件電路和軟件的任何特定組合。實施例不限于計算機系統(tǒng)。本公開的備選實施例可以在例如手持設(shè)備和嵌入式應(yīng)用等其他設(shè)備中使用。手持設(shè)備的一些示例包括蜂窩電話、互聯(lián)網(wǎng)協(xié)議設(shè)備、數(shù)字拍攝裝置、個人數(shù)字助理(pda)和手持pc。嵌入式應(yīng)用可以包括微控制器、數(shù)字信號處理器(dsp)、芯片上系統(tǒng)、網(wǎng)絡(luò)計算機(netpc)、機頂盒、網(wǎng)絡(luò)集線器(networkhub)、廣域網(wǎng)(wan)交換機或可以執(zhí)行根據(jù)至少一個實施例的一個或多個指令的任何其他系統(tǒng)。計算機系統(tǒng)100可以包括處理器102,其可以包括一個或多個執(zhí)行單元108用于執(zhí)行算法來執(zhí)行根據(jù)本公開的一個實施例的至少一個指令。一個實施例可以在單處理器桌面或服務(wù)器系統(tǒng)的上下文中使用,但在多處理器系統(tǒng)中可以包括其他實施例。系統(tǒng)100可以是‘集線器(hub)’系統(tǒng)架構(gòu)的示例。系統(tǒng)100可以包括處理器102,用于處理數(shù)據(jù)信號。處理器102可以包括復(fù)雜指令集計算機(cisc)微處理器、精簡指令集計算(risc)微處理器、超長指令字(vliw)微處理器、實現(xiàn)指令集組合的處理器,或任何其他處理器設(shè)備,例如數(shù)字信號處理器。在一個實施例中,處理器102可以耦合于處理器總線110,其可以在處理器102與系統(tǒng)100中的其他部件之間傳送數(shù)據(jù)信號。系統(tǒng)100的元件可以執(zhí)行熟悉本領(lǐng)域的人員眾所周知的常規(guī)功能。在一個實施例中,處理器102包括1級(l1)內(nèi)部高速緩存存儲器104。根據(jù)架構(gòu),處理器102可以具有單個內(nèi)部高速緩存或多級內(nèi)部高速緩存。在另一個實施例中,高速緩存存儲器可以駐存在處理器102外部。其他實施例還可以包括內(nèi)部和外部高速緩存的組合,這取決于特定實現(xiàn)和需要。寄存器堆106可以將不同類型的數(shù)據(jù)存儲在各種寄存器中,其包括整數(shù)寄存器、浮點寄存器、狀態(tài)寄存器和指令指針寄存器。執(zhí)行單元108(其包括用于執(zhí)行整數(shù)和浮點操作的邏輯)也駐存在處理器102中。處理器102還可以包括微代碼(u碼)rom,其存儲對于某些宏指令的微代碼。在一個實施例中,執(zhí)行單元108可以包括用于處理封裝指令集109的邏輯。通過在通用處理器102的指令集中包括封裝指令集109,連同關(guān)聯(lián)電路來執(zhí)行指令,由許多多媒體應(yīng)用使用的操作可以使用通用處理器102中的封裝數(shù)據(jù)執(zhí)行。從而,許多多媒體應(yīng)用可以通過使用全寬處理器數(shù)據(jù)總線而加速并且更高效執(zhí)行以用于對封裝數(shù)據(jù)執(zhí)行操作。這可以消除跨處理器數(shù)據(jù)總線來傳輸較小數(shù)據(jù)單位以每次對一個數(shù)據(jù)元素執(zhí)行一個或多個操作的需要。執(zhí)行單元108的實施例也可以在微控制器、嵌入式處理器、圖形設(shè)備、dsp和其他類型的邏輯電路中使用。系統(tǒng)100可以包括存儲器120。存儲器120可以實現(xiàn)為動態(tài)隨機存取存儲器(dram)設(shè)備、靜態(tài)隨機存取存儲器(sram)設(shè)備、閃速存儲器設(shè)備或其他存儲器設(shè)備。存儲器120可以存儲由可以被處理器102執(zhí)行的數(shù)據(jù)信號所代表的指令和/或數(shù)據(jù)。系統(tǒng)邏輯芯片116可以耦合于處理器總線110和存儲器120。系統(tǒng)邏輯芯片116可以包括存儲器控制器集線器(memorycontrollerhub)(mch)。處理器102可以經(jīng)由處理器總線110與mch116通信。mch116為了指令和數(shù)據(jù)的存儲并且為了圖形命令、數(shù)據(jù)和紋理的存儲而提供到處理器120的高帶寬存儲器路徑118。mch116可以引導(dǎo)在處理器102、存儲器120與系統(tǒng)100中的其他部件之間的數(shù)據(jù)信號并且還在處理器總線110、存儲器120與系統(tǒng)i/o122之間橋接數(shù)據(jù)信號。在一些實施例中,系統(tǒng)邏輯芯片116可以提供圖形端口用于耦合于圖形控制器112。mch116可以通過存儲器接口118耦合于存儲器120。圖形卡112可以通過加速圖形端口(agp)互連114耦合于mch116。系統(tǒng)100可以使用專用集線器接口總線122以使mch116耦合于i/o控制器集線器(ich)130。在一個實施例中,ich130可以提供經(jīng)由本地i/o總線到一些i/o設(shè)備的直接連接。本地i/o總線可以包括高速i/o總線,用于使外設(shè)連接到存儲器120、芯片集和處理器102。示例可以包括音頻控制器、固件集線器(閃速bios)128、無線收發(fā)器126、數(shù)據(jù)存儲124、遺留i/o控制器(其包含用戶輸入和鍵盤接口)、串行擴展端口(例如通用串行總線(usb))和網(wǎng)絡(luò)控制器134。數(shù)據(jù)存儲設(shè)備124可以包括硬盤驅(qū)動器、軟盤驅(qū)動器、cd-rom設(shè)備、閃速存儲器設(shè)備或其他大容量存儲設(shè)備。對于系統(tǒng)的另一個實施例,根據(jù)一個實施例,指令可以與芯片上系統(tǒng)一起使用。芯片上系統(tǒng)的一個實施例包括處理器和存儲器。對于一個這樣的系統(tǒng)的存儲器可以包括閃速存儲器。該閃速存儲器可以位于與處理器和其他系統(tǒng)部件相同的晶片(die)上。另外,例如存儲器控制器或圖形控制器等其他邏輯塊也可以位于芯片上系統(tǒng)上。圖1b圖示數(shù)據(jù)處理系統(tǒng)140,其實現(xiàn)本公開的實施例的原理。本領(lǐng)域內(nèi)技術(shù)人員將容易意識到本文描述的實施例可以與備選處理系統(tǒng)一起操作而不偏離本公開的實施例的范圍。[根據(jù)一個實施例,計算機系統(tǒng)140包括用于執(zhí)行至少一個指令的處理核159。在一個實施例中,處理核159代表任何類型的架構(gòu)的處理單元,其包括但不限于cisc、risc或vliw型架構(gòu)。處理核159還可以適合于在一個或多個工藝技術(shù)中制造,并且通過足夠詳細(xì)地在機器可讀介質(zhì)上表示而可以適合于促進所述制造。處理核159包括執(zhí)行單元142、寄存器堆145的集和解碼器144。處理核159還可以包括額外電路(未示出),其對于理解本公開的實施例可以不是必需的。執(zhí)行單元142可以執(zhí)行由處理核159接收的指令。除執(zhí)行典型處理器指令外,執(zhí)行單元142可以執(zhí)行封裝指令集143中的指令用于對封裝數(shù)據(jù)格式執(zhí)行操作。封裝指令集143可以包括用于執(zhí)行本公開的實施例的指令和其他封裝指令。執(zhí)行單元142可以通過內(nèi)部總線耦合于寄存器堆145。寄存器堆145可以代表處理核159上的存儲區(qū)用于存儲信息,其包括數(shù)據(jù)。如之前提到的,理解可以存儲封裝數(shù)據(jù)的存儲區(qū)可能不是關(guān)鍵的。執(zhí)行單元142可以耦合于解碼器144。解碼器144可以將由處理核159接收的指令解碼成控制信號和/或微代碼入口點。響應(yīng)于這些控制信號和/或微代碼入口點,執(zhí)行單元142執(zhí)行合適的操作。在一個實施例中,解碼器可以解釋指令的操作碼,其將指示對在指令內(nèi)指示的對應(yīng)數(shù)據(jù)應(yīng)執(zhí)行什么操作。處理核159可以與總線141耦合用于與各種其他系統(tǒng)設(shè)備通信,這些系統(tǒng)設(shè)備可以包括但不限于例如同步動態(tài)隨機存取存儲器(sdram)控制146、靜態(tài)隨機存取存儲器(sram)控制147、突發(fā)閃速存儲器接口148、個人計算機存儲卡國際協(xié)會(pcmcia)/快閃(cf)卡控制149、液晶顯示器(lcd)控制150、直接存儲器訪問(dma)控制器151和備選總線主機接口152。在一個實施例中,數(shù)據(jù)處理系統(tǒng)140還可以包括i/o橋154,用于經(jīng)由i/o總線153與各種i/o設(shè)備通信。這樣的i/o設(shè)備可以包括但不限于例如通用異步接收器/傳送器(uart)155、通用串行總線(usb)156、藍牙無線uart157和i/o擴展接口158。數(shù)據(jù)處理系統(tǒng)140的一個實施例提供移動、網(wǎng)絡(luò)和/或無線通信和可以執(zhí)行simd操作(其包括文本串比較操作)的處理核159。處理核159可用以下來編程:各種音頻、視頻、成像和通信算法,其包括離散變換,例如沃爾什-哈達瑪變換(walsh-hadamardtransform)、快速傅里葉變換(fft)、離散余弦變換(dct)和它們相應(yīng)的逆變換;壓縮/解壓技術(shù),例如彩色空間變換、視頻編碼運動估計或視頻解碼運動補償;和調(diào)制/解調(diào)(modem)功能,例如脈沖編碼調(diào)制(pcm)。圖1c圖示執(zhí)行simd文本串比較操作的數(shù)據(jù)處理系統(tǒng)的其他實施例。在一個實施例中,數(shù)據(jù)處理系統(tǒng)160可以包括主處理器166、simd協(xié)處理器161、高速緩存存儲器167和輸入/輸出系統(tǒng)168。輸入/輸出系統(tǒng)168可以可選地耦合于無線接口169。simd協(xié)處理器161可以執(zhí)行操作,其包括根據(jù)一個實施例的指令。在一個實施例中,處理核170可以適合于在一個或多個工藝技術(shù)中制造,并且通過足夠詳細(xì)地在機器可讀介質(zhì)上表示而可以適合于促進數(shù)據(jù)處理系統(tǒng)160(其包括處理核170)中的全部或部分的制造。在一個實施例中,simd協(xié)處理器161包括執(zhí)行單元162和寄存器堆164的集。主處理器165的一個實施例包括解碼器165,用于識別指令集163的指令(其包括根據(jù)一個實施例的指令)以供執(zhí)行單元162執(zhí)行。在其他實施例中,simd協(xié)處理器161還包括解碼器165的至少部分,用于對指令集163的指令解碼。處理核170還可以包括額外電路(未示出),其對于理解本公開的實施例可以不是必需的。在操作中,主處理器166執(zhí)行數(shù)據(jù)處理指令流,其控制通用型數(shù)據(jù)處理操作,這些操作包括與高速緩存存儲器167和輸入/輸出系統(tǒng)168的交互。simd協(xié)處理器指令可以嵌入數(shù)據(jù)處理指令流內(nèi)。主處理器166的解碼器165將這些simd協(xié)處理器識別為是應(yīng)由附連simd協(xié)處理器161執(zhí)行的類型。因此,主處理器166在協(xié)處理器總線166上發(fā)出這些simd協(xié)處理器指令(或代表simd協(xié)處理器指令的控制信號)。這些指令可以由任何附連simd協(xié)處理器從該協(xié)處理器總線166接收。在該情況下,simd協(xié)處理器161可以接受并且執(zhí)行針對它的任何接收simd協(xié)處理器指令。數(shù)據(jù)可以經(jīng)由無線接口169接收以供simd協(xié)處理器指令處理。對于一個示例,語音通信可以采用數(shù)字信號的形式接收,該數(shù)字信號可以由simd協(xié)處理器指令處理來重新生成代表語音通信的數(shù)字音頻樣本。對于另一個示例,壓縮音頻和/或視頻可以采用數(shù)字位流的形式接收,該數(shù)字位流可以由simd協(xié)處理器指令處理來重新生成數(shù)字音頻樣本和/或運動視頻幀。在處理核170的一個實施例中,主處理器166和simd協(xié)處理器161可以集成到單個處理核170內(nèi),該單個處理核170包括執(zhí)行單元162、寄存器堆164的集和解碼器165,用于識別指令集163的指令,其包括根據(jù)一個實施例的指令。圖2是根據(jù)本公開的實施例可以包括邏輯電路用于執(zhí)行指令的處理器200的微架構(gòu)的框圖。在一些實施例中,根據(jù)一個實施例的指令可以實現(xiàn)為對具有字節(jié)、字、雙字、四字等大小以及數(shù)據(jù)類型(例如單和雙精度整數(shù)和浮點數(shù)據(jù)類型)的數(shù)據(jù)元素操作。在一個實施例中,有序前端201可以實現(xiàn)處理器200的一部分,其可以提取待執(zhí)行的指令并且使這些指令準(zhǔn)備稍后在處理器流水線中使用。前端201可以包括若干單元。在一個實施例中,指令預(yù)提取器(prefetcher)226從存儲器提取指令并且將這些指令饋送到指令解碼器228,其進而對這些指令解碼或解釋它們。例如,在一個實施例中,解碼器將接收的指令解碼為機器可以執(zhí)行的一個或多個操作,叫作“微指令”或“微操作”(也叫作微op或uop)。在其他實施例中,解碼器將指令解析成操作碼和對應(yīng)數(shù)據(jù)和控制字段,其可以由微架構(gòu)使用來執(zhí)行根據(jù)一個實施例的操作。在一個實施例中,跟蹤高速緩存(tracecache)230可以將解碼的uop組裝到uop隊列234中的程序排序序列或蹤跡(trace)以供執(zhí)行。當(dāng)跟蹤高速緩存230遇到復(fù)雜指令時,微代碼rom232提供完成操作所需要的uop。一些指令可以轉(zhuǎn)換成單個微op,而其他需要若干微op來完成全操作。在一個實施例中,如果需要超過四個微op來完成指令,解碼器228可以訪問微代碼rom232來執(zhí)行指令。在一個實施例中,指令可以解碼成少量微op用于在指令解碼器228處理。在另一個實施例中,如果需要許多微op來完成操作,指令可以存儲在微代碼rom232內(nèi)。跟蹤高速緩存230指的是入口點可編程邏輯陣列(pla),用于確定用于從微代碼rom232讀取微代碼序列來完成根據(jù)一個實施例的一個或多個指令的正確微指令指針。在微代碼rom232完成對于指令的定序微op之后,機器的前端201可以恢復(fù)從跟蹤高速緩存230提取微op。亂序執(zhí)行引擎203可以準(zhǔn)備指令以供執(zhí)行。亂序執(zhí)行邏輯具有許多緩沖器以在指令流沿流水線向下進行并且被調(diào)度以供執(zhí)行時平滑它們并且對其重新排序來優(yōu)化性能。分配器邏輯分配每個uop所需要以供執(zhí)行的機器緩沖器和資源。寄存器重命名邏輯在寄存器堆中的條目上對邏輯寄存器重命名。分配器還對兩個uop隊列(一個針對存儲器操作并且一個針對非存儲器操作)中的一個中的每個uop分配條目,這在以下的指令調(diào)度器前面:存儲器調(diào)度器、快速調(diào)度器202、慢/一般浮點調(diào)度器204和簡單浮點調(diào)度器206。uop調(diào)度器202、204、206基于它們的相關(guān)輸入寄存器操作數(shù)源的準(zhǔn)備就緒和uop完成它們的操作所需要的執(zhí)行資源的可用性來確定uop是否準(zhǔn)備執(zhí)行。一個實施例的快速調(diào)度器202可以在每半個主時鐘周期上調(diào)度而其他調(diào)度器每主處理器時鐘周期僅可以調(diào)度一次。調(diào)度器仲裁調(diào)派端口來調(diào)度uop以供執(zhí)行。寄存器堆208、210可以設(shè)置在調(diào)度器202、204、206與執(zhí)行塊211中的執(zhí)行單元212、214、216、218、220、222、224之間。寄存器堆208、210中的每個分別執(zhí)行整數(shù)和浮點操作。每個寄存器堆208、210可以包括旁路網(wǎng)絡(luò),其可以將剛剛完成的還未寫入寄存器堆的結(jié)果旁路或轉(zhuǎn)發(fā)到新的相關(guān)uop。整數(shù)寄存器堆208和浮點寄存器堆210可以與另一個傳達數(shù)據(jù)。在一個實施例中,整數(shù)寄存器堆208可以分成兩個獨立寄存器堆,一個寄存器堆針對低階三十二位數(shù)據(jù)并且第二寄存器堆針對高階三十二位數(shù)據(jù)。因為浮點指令典型地具有在寬度上從64至128個位的操作數(shù),浮點寄存器堆210可以包括128位寬的條目。執(zhí)行塊211可以包含執(zhí)行單元212、214、216、218、220、222、224。執(zhí)行單元212、214、216、218、220、222、224可以執(zhí)行指令。執(zhí)行塊211可以包括寄存器堆208、210,其存儲微指令執(zhí)行所需要的整數(shù)和浮點數(shù)據(jù)操作數(shù)值。在一個實施例中,處理器200可以包括許多執(zhí)行單元:地址生成單元(agu)212、agu214、快速alu216、快速alu218、慢alu220、浮點alu222、浮點移動單元224。在另一個實施例中,浮點執(zhí)行塊222、224可以執(zhí)行浮點、mmx、simd和sse或其他操作。在再另一個實施例中,浮點alu222可以包括64位x64位浮點除法器,用于執(zhí)行除法、平方根和余數(shù)(remainder)微op。在各種實施例中,牽涉浮點值的指令可以用浮點硬件來處理。在一個實施例中,alu操作可以傳遞到高速alu執(zhí)行單元216、218。在一個實施例中,高速alu216、218可以以半個時鐘周期的高效延遲來執(zhí)行快速操作。在一個實施例中,大部分復(fù)雜整數(shù)操作轉(zhuǎn)到慢alu220,因為慢alu220可以包括對于長延遲型操作(例如乘數(shù)、移位、標(biāo)志邏輯和分支處理)的整數(shù)執(zhí)行硬件。存儲器加載/存儲操作由agu212、214執(zhí)行。在一個實施例中,整數(shù)alu216、218、220可以對64位數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作。在其他實施例中,可以實現(xiàn)alu216、218、220來支持多種數(shù)據(jù)位大小,其包括十六、三十二、128、256等。相似地,可以實現(xiàn)浮點單元222、224來支持具有各種寬度的位的一系列操作數(shù)。在一個實施例中,浮點單元222、224可以結(jié)合simd和多媒體指令對128位寬的封裝數(shù)據(jù)操作數(shù)操作。在一個實施例中,uop調(diào)度器202、204、206在父類加載完成執(zhí)行之前調(diào)派相關(guān)操作。因為在處理器200中可以推測性地調(diào)度和執(zhí)行uop,處理器200還可以包括用于處理存儲器未命中的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,在流水線中可以存在運行中的相關(guān)操作,其對調(diào)度器留下暫時不正確的數(shù)據(jù)?;胤艡C構(gòu)跟蹤并且重新執(zhí)行使用不正確數(shù)據(jù)的指令。僅相關(guān)操作可需要被回放并且可以允許完成獨立操作。處理器的一個實施例的調(diào)度器和回放機構(gòu)還可以設(shè)計成捕捉對于文本串比較操作的指令序列。術(shù)語“寄存器”可以指的是板載處理器存儲位點,其可以用作用于識別操作數(shù)的指令的部分。就是說,寄存器可以是可能來自處理器外部的可用的那些(從編程方的角度來看)。然而,在一些實施例中,寄存器可不限于特定類型的電路。相反,寄存器可以存儲數(shù)據(jù)、提供數(shù)據(jù),并且執(zhí)行本文描述的功能。本文描述的寄存器可以由處理器內(nèi)的電路使用任何數(shù)量的不同技術(shù)實現(xiàn),例如專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用和動態(tài)分配物理寄存器的組合,等。在一個實施例中,整數(shù)寄存器存儲32位整數(shù)數(shù)據(jù)。一個實施例的寄存器堆還包含對于封裝數(shù)據(jù)的八個多媒體simd寄存器。對于下文的論述,寄存器可以理解為設(shè)計成持有封裝數(shù)據(jù)的數(shù)據(jù)寄存器,例如用來自加利福尼亞州santaclara的intelcorporation的mmx技術(shù)實現(xiàn)的微處理器中的64位寬mmx?寄存器(在一些實例中也稱為‘mm’寄存器)。這些mmx寄存器(采用整數(shù)和浮點形式都可用)可以用伴隨simd和sse指令的封裝數(shù)據(jù)元素來操作。相似地,涉及sse2、sse3、sse4或以后(一般稱為“ssex”)技術(shù)的128位寬xmm寄存器可以持有這樣的封裝數(shù)據(jù)操作數(shù)。在一個實施例中,在存儲封裝數(shù)據(jù)和整數(shù)數(shù)據(jù)中,寄存器不必區(qū)分這兩個數(shù)據(jù)類型。在一個實施例中,整數(shù)和浮點可以包含在相同寄存器堆或不同寄存器堆中。此外,在一個實施例中,浮點和整數(shù)數(shù)據(jù)可以存儲在不同寄存器或相同寄存器中。在下列圖的示例中,可以描述許多數(shù)據(jù)操作數(shù)。圖3a圖示根據(jù)本公開的實施例在多媒體寄存器中的各種封裝數(shù)據(jù)類型表示。圖3a圖示對于128位寬操作數(shù)的封裝字節(jié)310、封裝字320和封裝雙字(dword)330的數(shù)據(jù)類型。該示例的封裝字節(jié)格式310可以是128位長并且包含十六個封裝字節(jié)數(shù)據(jù)元素。字節(jié)例如可以定義為八位數(shù)據(jù)。對于每個字節(jié)數(shù)據(jù)元素的信息可以存儲在位7至位0(對于字節(jié)0)、位15至位8(對于字節(jié)1)、位23至位16(對于字節(jié)2)和最后位120至位127(對于字節(jié)15)中。從而,在寄存器中可以使用所有可用位。該存儲設(shè)置使處理器的存儲效率增加。隨著訪問十六個數(shù)據(jù)元素,現(xiàn)在也可以并行對十六個數(shù)據(jù)元素執(zhí)行一個操作。一般,數(shù)據(jù)元素可以包括存儲在單個寄存器或存儲器位點(具有相同長度的其他數(shù)據(jù)元素)中的個體數(shù)據(jù)片段(piece)。在涉及ssex技術(shù)的封裝數(shù)據(jù)序列中,存儲在xmm寄存器中的數(shù)據(jù)元素的數(shù)量是128位除以個體數(shù)據(jù)元素的位的長度。相似地,在涉及mmx和sse技術(shù)的封裝數(shù)據(jù)序列中,存儲在mmx寄存器中的數(shù)據(jù)元素的數(shù)量可以是64位除以個體數(shù)據(jù)元素的位的長度。盡管在圖3a中圖示的數(shù)據(jù)類型可以是128位長,本公開的實施例還可以用64位寬或其他大小的操作數(shù)來操作。該示例的封裝字格式320可以是128位長并且包含八個封裝字?jǐn)?shù)據(jù)元素。每個封裝字包含十六位的信息。圖3a的封裝雙字格式330可以是128位長并且包含四個封裝雙字?jǐn)?shù)據(jù)元素。每個封裝雙字?jǐn)?shù)據(jù)元素包含三十二位的信息。封裝四字是128位長并且包含兩個封裝四字?jǐn)?shù)據(jù)元素。圖3b圖示根據(jù)本公開的實施例的可能寄存器中數(shù)據(jù)存儲格式。每個封裝數(shù)據(jù)可以包括超過一個獨立數(shù)據(jù)元素。圖示三個封裝數(shù)據(jù)格式:封裝半個341、封裝單個342和封裝雙343。封裝半個341、封裝單個342和封裝雙343的一個實施例包含固定點數(shù)據(jù)元素。對于另一個實施例,封裝半個341、封裝單個342和封裝雙343中的一個或多個可以包含浮點數(shù)據(jù)元素。封裝半個341的一個實施例可以是128位長,其包含八個16位數(shù)據(jù)元素。封裝單個342的一個實施例是128位長并且包含四個32位數(shù)據(jù)元素。封裝雙343的一個實施例是128位長并且包含兩個64位數(shù)據(jù)元素。將意識到這樣的封裝數(shù)據(jù)格式可以進一步擴展到其他寄存器長度,例如到96位、160位、192位、224位、256位或更多。圖3c圖示根據(jù)本公開的實施例在多媒體寄存器中的各種有符號和無符號封裝數(shù)據(jù)類型表示。無符號封裝字節(jié)表示344圖示simd寄存器中無符號封裝字節(jié)的存儲。對于每個字節(jié)數(shù)據(jù)元素的信息可以存儲在位7至位0(對于字節(jié)0)、位15至位8(對于字節(jié)1)、位23至位16(對于字節(jié)2)等,并且最后位120至位127(對于字節(jié)15)。從而,所有可用位可以在寄存器中使用。該存儲設(shè)置可以使處理器的存儲效率增加。隨著訪問十六個數(shù)據(jù)元素,現(xiàn)在也可以采用并行方式對十六個數(shù)據(jù)元素執(zhí)行一個操作。有符號封裝字節(jié)表示345圖示有符號封裝字節(jié)的存儲。注意每個字節(jié)數(shù)據(jù)元素的第八個位可以是符號指示符。無符號封裝字表示346圖示字七至字零可以如何存儲在simd寄存器中。有符號封裝字表示347可以與寄存器中無符號封裝字表示346相似。注意每個字?jǐn)?shù)據(jù)元素的第十六個位可以是符號指示符。無符號封裝雙字表示348示出如何存儲雙字?jǐn)?shù)據(jù)元素。有符號封裝雙字表示349可以與寄存器中無符號封裝雙字表示348相似。注意必需的符號位可以是每個雙字?jǐn)?shù)據(jù)元素的第三十二個位。圖3d圖示操作編碼(操作碼)的實施例。此外,格式360可以包括寄存器/存儲器操作數(shù)尋址模式,其與在“ia-32intelarchitecturesoftwaredeveloper’smanualvolume2:instructionsetreference(從加利福尼亞州santaclara的intelcorporation在萬維網(wǎng)(www)intel.com/design/litcentr上可獲得)中描述的操作碼格式類型相對應(yīng)。在一個實施例中,指令可以由字段361和362中的一個或多個編碼??梢宰R別每指令多至兩個操作數(shù)位點,其包括多至兩個源操作數(shù)標(biāo)識符364和365。在一個實施例中,目的地操作數(shù)標(biāo)識符366可以與源操作數(shù)標(biāo)識符364相同,而在其他實施例中它們可以不同。在另一個實施例,目的地操作數(shù)標(biāo)識符366可以與源操作數(shù)標(biāo)識符365相同,而在其他實施例中它們可以不同。在一個實施例中,由源操作數(shù)標(biāo)識符364和365識別的源操作數(shù)中的一個被文本串比較操作的結(jié)果蓋寫,而在其他實施例中標(biāo)識符364對應(yīng)于源寄存器元素并且標(biāo)識符365對應(yīng)于目的地寄存器元素。在一個實施例中,操作數(shù)標(biāo)識符364和365可以識別32位或64位源和目的地操作數(shù)。圖3e圖示根據(jù)本公開的實施例的另一個可能操作編碼(操作碼)格式370,其具有四十個或以上的位。操作碼格式370與操作碼格式360相對應(yīng)并且包括可選的前綴字節(jié)378。根據(jù)一個實施例的指令可以由字段378、371和372中的一個或多個編碼。每指令多至兩個操作數(shù)位點可以由源操作數(shù)標(biāo)識符374和375并且由前綴字節(jié)378識別。在一個實施例中,前綴字節(jié)378可以用于識別32位或64位源和目的地操作數(shù)。在一個實施例中,目的地操作數(shù)標(biāo)識符376可以與源操作數(shù)標(biāo)識符374相同,而在其他實施例中它們可以不同。對于另一個實施例,目的地操作數(shù)標(biāo)識符376可以與源操作數(shù)標(biāo)識符375相同,而在其他實施例中它們可以不同。在一個實施例中,指令對由操作數(shù)標(biāo)識符374和375識別的操作數(shù)中的一個或多個操作并且由操作數(shù)標(biāo)識符374和375識別的一個或多個操作數(shù)可以被指令的結(jié)果蓋寫,而在其他實施例中,由標(biāo)識符374和375識別的操作數(shù)可以寫入另一個寄存器中的另一個數(shù)據(jù)元素。操作碼格式360和370允許寄存器到寄存器、存儲器到寄存器、由存儲器對寄存器、由寄存器對寄存器、通過立即值(immediate)對寄存器、寄存器到存儲器的尋址,其部分由mod字段363和373并且由可選的標(biāo)度-索引-基址(scale-index-base)和位移字節(jié)規(guī)定。圖3f圖示根據(jù)本公開的實施例的再另一個可能操作編碼(操作碼)格式。64位單指令多數(shù)據(jù)(simd)架構(gòu)操作可以通過協(xié)處理器數(shù)據(jù)處理(cdp)指令來執(zhí)行。操作編碼(操作碼)格式380描繪一個這樣的cdp指令,其具有cdp操作碼字段382-389。對于另一個實施例,該類cdp指令操作可以由字段383、384、387和388中的一個或多個編碼。可以識別每指令多至三個操作數(shù)位點,其包括多至兩個源操作數(shù)標(biāo)識符385和390和一個目的地操作數(shù)標(biāo)識符386。協(xié)處理器的一個實施例可以對八、十六、三十二和64位值操作。在一個實施例中,可以對整數(shù)數(shù)據(jù)元素執(zhí)行指令。在一些實施例中,指令可以使用條件字段381有條件地執(zhí)行。對于一些實施例,源數(shù)據(jù)大小可以由字段383編碼。在一些實施例中,零(z)、負(fù)(n)、進位(c)和溢出(v)檢測可以在simd字段上進行。對于一些指令,飽和類型可以由字段384編碼。圖4a是圖示根據(jù)本公開的實施例的有序流水線和寄存器重命名段、亂序發(fā)出/執(zhí)行流水線的框圖。圖4b是圖示根據(jù)本公開的實施例要包括在處理器中的有序架構(gòu)核和寄存器重命名邏輯、亂序發(fā)出/執(zhí)行邏輯的框圖。圖4a中的實線框圖示有序流水線,而虛線框圖示寄存器重命名、亂序發(fā)出/執(zhí)行流水線。相似地,圖4b中的實線框圖示有序架構(gòu)邏輯,而虛線框圖示寄存器重命名邏輯和亂序發(fā)出/執(zhí)行邏輯。在圖4a中,處理器流水線400可以包括提取段402、長度解碼段404、解碼段406、分配段408、重命名段410、調(diào)度(也稱為調(diào)派或發(fā)出)段412、寄存器讀取/存儲器讀取段414、執(zhí)行段416、寫回/存儲器寫段418、異常處理段422和提交段424。在圖4b中,箭頭指示兩個或以上單元之間的耦合并且箭頭方向指示那些單元之間的數(shù)據(jù)流的方向。圖4b示出處理器核490,其包括耦合于執(zhí)行引擎單元450的前端單元430,并且兩者都可以耦合于存儲器單元470。核490可以是精簡指令集計算(risc)核、復(fù)雜指令集計算(cisc)核、超長指令字(vliw)核或混合或備選核類型。在一個實施例中,核490可以是專用核,例如網(wǎng)絡(luò)或通信核、壓縮引擎、圖形核或類似物。前端單元430可以包括分支預(yù)測單元432,其耦合于指令高速緩存單元434。指令高速緩存單元434可以耦合于指令翻譯后備緩沖器(tlb)436。tlb436可以耦合于指令提取單元438,其耦合于解碼單元440。解碼單元440可以對指令解碼,并且生成一個或多個微操作、微代碼入口點、微指令、其他指令或其他控制信號作為輸出,它們從原始指令解碼或用別的方式反映原始指令或可以從原始指令得到。解碼器可以使用各種不同的機構(gòu)實現(xiàn)。適合機構(gòu)的示例包括但不限于,查找表、硬件實現(xiàn)、可編程邏輯陣列(pla)、微代碼只讀存儲器(rom)等。在一個實施例中,指令高速緩存單元434可以進一步耦合于存儲器單元470中的2級(l2)高速緩存單元476。解碼單元440可以耦合于執(zhí)行引擎單元450中的重命名/分配器單元452。執(zhí)行引擎單元450可以包括重命名/分配器單元452,其耦合于引退單元454和一個或多個調(diào)度器單元456的集。調(diào)度器單元456代表任何數(shù)量的不同調(diào)度器,其包括預(yù)留站、中央指令窗口等。調(diào)度器單元456可以耦合于物理寄存器堆單元458。物理寄存器堆單元458中的每個代表一個或多個物理寄存器堆,其中不同的物理寄存器堆存儲一個或多個不同數(shù)據(jù)類型,例如標(biāo)量整數(shù)、標(biāo)量浮點、封裝整數(shù)、封裝浮點、向量整數(shù)、向量浮點等、狀態(tài)(例如,是待執(zhí)行的下一個指令的地址的指令指針)等。物理寄存器堆單元458可以與引退單元454重疊來說明可以實現(xiàn)寄存器重命名和亂序執(zhí)行所采用的多種方式(例如,使用一個或多個重排序緩沖器以及一個或多個引退寄存器堆、使用一個或多個未來文件、一個或多個歷史緩沖器以及一個或多個引退寄存器堆;使用寄存器映射和寄存器池;等)。一般,架構(gòu)寄存器可以從處理器外部或從編程方的角度可見。寄存器可能不限于任何已知特定類型的電路。各種不同類型的寄存器可以是適合的,只要它們存儲并且提供如本文描述的數(shù)據(jù)即可。適合寄存器的示例包括但不限于,專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用和動態(tài)分配物理寄存器的組合,等。引退單元454和物理寄存器堆單元458可以耦合于執(zhí)行集群460。執(zhí)行集群460可以包括一個或多個執(zhí)行單元462的集和一個或多個存儲器訪問單元464的集。執(zhí)行單元462可以對各種類型的數(shù)據(jù)(例如,標(biāo)量浮點、封裝整數(shù)、封裝浮點、向量整數(shù)、向量浮點)執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實施例可以包括專用于特定功能或功能集的許多執(zhí)行單元,其他實施例可以僅包括一個執(zhí)行單元或多個執(zhí)行單元,其全部執(zhí)行所有功能。調(diào)度器單元456、物理寄存器堆單元458和執(zhí)行集群460示出為可能是復(fù)數(shù),因為某些實施例對某些類型的數(shù)據(jù)/操作(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點/封裝整數(shù)/封裝浮點/向量整數(shù)/向量浮點流水線,和/或存儲器訪問流水線,每個具有它們自己的調(diào)度器單元、物理寄存器堆單元和/或執(zhí)行集群-并且在獨立存儲器訪問流水線的情況下,可以實現(xiàn)某些實施例,其中僅該流水線的執(zhí)行集群具有存儲器訪問單元464)創(chuàng)建獨立流水線。還應(yīng)理解在使用獨立流水線的情況下,這些流水線中的一個或多個可以是亂序發(fā)出/執(zhí)行并且余下的是有序的。存儲器訪問單元464集可以耦合于存儲器單元470,其可以包括耦合于數(shù)據(jù)高速緩存單元474的數(shù)據(jù)tlb單元472,該數(shù)據(jù)高速緩存單元474耦合于2級(l2)高速緩存單元476。在一個示范性實施例中,存儲器訪問單元464可以包括加載單元、存儲地址單元和存儲數(shù)據(jù)單元,其中的每個可以耦合于存儲器單元470中的數(shù)據(jù)tlb單元472。l2高速緩存單元476可以耦合于一個或多個其他級高速緩存并且最終耦合于主存儲器。通過示例,示范性寄存器重命名、亂序發(fā)出/執(zhí)行核架構(gòu)可以如下實現(xiàn)流水線400:1)指令提取438可以執(zhí)行提取和長度解碼段402和404;2)解碼單元440可以執(zhí)行解碼段406;3)重命名/分配器單元452可以執(zhí)行分配段408和重命名段410;4)調(diào)度器單元456可以執(zhí)行調(diào)度段412;5)物理寄存器堆單元458和存儲器單元470可以執(zhí)行寄存器讀取/存儲器讀取段414;執(zhí)行集群460可以執(zhí)行執(zhí)行段416;6)存儲器單元470和物理寄存器堆單元458可以執(zhí)行寫回/存儲器寫段418;7)在異常處理段422的執(zhí)行中可以牽涉各種單元;以及8)引退單元454和物理寄存器堆單元458可以執(zhí)行提交段424。核490可以支持一個或多個指令集(例如,x86指令集(具有添加有較新版本的一些擴展));加利福尼亞州sunnyvale的mipstechnologies的mips指令集;加利福尼亞州sunnyvale的armholdings的arm指令集(具有可選的額外擴展,例如neon)。應(yīng)理解核可以采用多種方式支持多線程化(執(zhí)行兩個或以上并行操作或線程集)。多線程化支持可以例如通過包括時間分片多線程化、同時多線程化(其中單個物理核對物理核正同時多線程化的線程中的每個提供邏輯核)或其組合來執(zhí)行。這樣的組合可以包括例如時間分片提取和解碼以及之后的同時多線程化,例如在intel?hyperthreading技術(shù)中。盡管寄存器重命名可以在亂序執(zhí)行的上下文中描述,應(yīng)理解寄存器重命名可以在有序架構(gòu)中使用。盡管處理器的圖示實施例還可以包括獨立指令和數(shù)據(jù)高速緩存單元434/474和共享l2高速緩存單元476,其他實施例可以具有對于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,例如1級(l1)內(nèi)部高速緩存,或多級內(nèi)部高速緩存。在一些實施例中,系統(tǒng)可以包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合。在其他實施例中,高速緩存中的全部可以在核和/或處理器外部。圖5a是根據(jù)本公開的實施例的處理器500的框圖。在一個實施例中,處理器500可以包括多核處理器。處理器500可以包括系統(tǒng)代理510,其通信耦合于一個或多個核502。此外,核502和系統(tǒng)代理510可以通信耦合于一個或多個高速緩存506。核520、系統(tǒng)代理510和高速緩存506可以經(jīng)由一個或多個存儲器控制單元552而通信耦合。此外,核502、系統(tǒng)代理510和高速緩存506可以經(jīng)由存儲器控制單元552通信耦合于圖形模塊560。處理器500可以包括用于互連核502、系統(tǒng)代理510和高速緩存506以及圖形模塊560的任何適合的機構(gòu)。在一個實施例中,處理器500可以包括基于環(huán)的互連單元508,用于互連核502、系統(tǒng)代理510和高速緩存506以及圖形模塊560。在其他實施例中,處理器500可以包括用于互連這樣的單元的任何數(shù)量的眾所周知的技術(shù)?;诃h(huán)的互連單元508可以使用存儲器控制單元552來促進互連。處理器500可以包括存儲器層級,其包括核內(nèi)的一級或多級高速緩存、一個或多個共享高速緩存單元(例如高速緩存506)或耦合于集成存儲器控制器單元552的集的外部存儲器(未示出)。高速緩存506可以包括任何適合的高速緩存。在一個實施例中,高速緩存506可以包括一個或多個中間級高速緩存(例如2級(l2)、3級(l3)、4級(l4))或其他級高速緩存)、最后級高速緩存(llc)和/或其組合。在各種實施例中,核502中的一個或多個可以執(zhí)行多線程化。系統(tǒng)代理510可以包括用于協(xié)調(diào)并且操作核502的部件。系統(tǒng)代理單元510可以包括例如功率控制單元(pcu)。pcu可以是或包括用于調(diào)節(jié)核502的功率狀態(tài)所需要的邏輯和部件。系統(tǒng)代理510可以包括顯示引擎512,用于驅(qū)動一個或多個外部連接的顯示器或圖形模塊560。系統(tǒng)代理510可以包括對于圖形的通信總線的接口1214。在一個實施例中,接口1214可以由pciexpress(pcie)實現(xiàn)。在另外的實施例中,接口1214可以由pciexpressgraphics(peg)實現(xiàn)。系統(tǒng)代理510可以包括直接媒體接口(dmi)516。dmi516可以在計算機系統(tǒng)的主板或其他部分上的不同橋之間提供鏈路。系統(tǒng)代理510可以包括pcie橋1218,用于提供到計算系統(tǒng)的其他元件的pcie鏈路。pcie鏈路1218可以使用存儲器控制器1220和一致性邏輯1222實現(xiàn)。核520可以采用任何適合的方式實現(xiàn)。核502從架構(gòu)和/或指令集方面可以是同構(gòu)或異構(gòu)的。在一個實施例中,核502中的一些可以是有序的,而其他可以是亂序的。在另一個實施例中,核502中的兩個或以上可以執(zhí)行相同指令集,而其他可以僅執(zhí)行該指令集的子集或不同的指令集。處理器500可以包括通用處理器,例如core?i3、i5、i7、2duo和quad、xeon?、itanium?、xscale?或strongarm?處理器,其可以從加利福尼亞州santaclara的intelcorporation可獲得。處理器500可以由另一個公司提供,例如armholdings,ltd、mips等。處理器500可以是專用處理器,例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、協(xié)處理器、嵌入式處理器或類似物。處理器500可以在一個或多個芯片上實現(xiàn)。處理器500可以是一個或多個襯底的一部分和/或可以使用工藝技術(shù)(例如,bicmos、cmos或nmos)中的任一個在一個或多個襯底上實現(xiàn)。在一個實施例中,高速緩存506中的指定一個可以被多個核520共享。在另一個實施例中,高速緩存506中的指定一個可以專用于一個核502。對核503指派高速緩存506可以由高速緩存控制器或其他機構(gòu)處理。高速緩存506中的指定一個可以由兩個或以上的核502通過實現(xiàn)指定高速緩存506的時間切片而共享。圖形模塊560可以實現(xiàn)集成圖形處理子系統(tǒng)。在一個實施例中,圖形模塊560可以包括圖形處理器。此外,圖形模塊560可以包括媒體引擎565。媒體引擎565可以提供媒體編碼和視頻解碼。圖5b是根據(jù)本公開的實施例的核502的示例實現(xiàn)的框圖。核502可以包括前端570,其通信耦合于亂序引擎580。核502可以通過高速緩存層級503而通信耦合于處理器500的其他部分。前端570可以采用任何適合的方式實現(xiàn),例如完全或部分由如上文描述的前端201實現(xiàn)。在一個實施例中,前端570可以通過高速緩存層級503與處理器500的其他部分通信。在另外的實施例中,前端570可以從處理器500的部分提取指令并且在將這些指令傳遞到亂序執(zhí)行引擎580時使它們準(zhǔn)備稍后在處理器流水線中使用。亂序執(zhí)行引擎580可以采用任何適合的方式實現(xiàn),例如完全或部分由如上文描述的亂序執(zhí)行引擎203實現(xiàn)。亂序執(zhí)行引擎580可以使從前端570接收的指令準(zhǔn)備供執(zhí)行。亂序執(zhí)行引擎580可以包括分配模塊1282。在一個實施例中,分配模塊1282可以分配處理器500的資源或其他資源(例如寄存器或緩沖器)來執(zhí)行指定指令。分配模塊1282可以在調(diào)度器(例如存儲器調(diào)度器、快速調(diào)度器或浮點調(diào)度器)中進行分配。這樣的調(diào)度器在圖5b中可以由資源調(diào)度器584表示。分配模塊1282可以完全或部分由結(jié)合圖2描述的分配邏輯實現(xiàn)。資源調(diào)度器584可以基于指定資源的源準(zhǔn)備就緒以及執(zhí)行指令所需要的執(zhí)行資源的可用性來確定指令何時準(zhǔn)備執(zhí)行。資源調(diào)度器584可以由例如如上文描述的調(diào)度器202、204、206實現(xiàn)。資源調(diào)度器584可以對一個或多個資源調(diào)度指令的執(zhí)行。在一個實施例中,這樣的資源可以在核502內(nèi)部,并且可以例如圖示為資源586。在另一個實施例中,這樣的資源可以在核502外部并且可以被例如高速緩存層級503可訪問。資源可以包括例如存儲器、高速緩存、寄存器堆或寄存器。核502內(nèi)部的資源可以由圖5b中的資源586表示。在必要時,寫入資源586或從資源586讀取的值可以通過例如高速緩存層級503與處理器500的其他部分協(xié)調(diào)。因為指令是指派的資源,可以將它們放入重排序緩沖器588。重排序緩沖器588可以在執(zhí)行指令時跟蹤它們并且可以基于處理器500的任何適合的準(zhǔn)則來選擇性地對它們的指令重排序。在一個實施例中,重排序緩沖器588可以識別可以獨立執(zhí)行的指令或一系列指令。這樣的指令或指令系列可以與其他這樣的指令并行執(zhí)行。核502中的并行執(zhí)行可以由任何適合數(shù)量的獨立執(zhí)行塊或虛擬處理器執(zhí)行。在一個實施例中,共享資源-例如存儲器、寄存器和高速緩存-可以對于指定核502內(nèi)的多個虛擬處理器可訪問。在其他實施例中,共享資源可以對于處理器500內(nèi)的多個處理實體可訪問。高速緩存層級503可以采用任何適合的方式實現(xiàn)。例如,高速緩存層級503可以包括一個或多個較低或中間級高速緩存,例如高速緩存572、574。在一個實施例中,高速緩存層級503可以包括llc595,其通信耦合于高速緩存572、574。在另一個實施例中,llc595可以在對于處理器500的所有處理實體可訪問的模塊590中實現(xiàn)。在另外的實施例中,模塊590可以在來自intel,inc.的處理器的非核模塊中實現(xiàn)。模塊590可以包括對于核502執(zhí)行所必需但可不在核502內(nèi)實現(xiàn)的處理器500的部分或子系統(tǒng)。除llc595外,模塊590可以包括例如硬件接口、存儲器一致性協(xié)調(diào)器、處理器間互連、指令流水線或存儲器控制器。對于處理器500可用的ram599的訪問可以通過模塊590并且更特定地通過llc595進行。此外,核502的其他實例可以相似地訪問模塊590。核502的實例的協(xié)調(diào)可以部分通過模塊590而得以促進。圖6-8可以圖示適合于包括處理器500的示范性系統(tǒng),而圖9可以圖示示范性芯片上系統(tǒng)(soc),其可以包括核502中的一個或多個。本領(lǐng)域內(nèi)已知的對于膝上型電腦、臺式機、手持pc、個人數(shù)字助理、工程化工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機、嵌入式處理器、數(shù)字信號處理器(dsp)、圖形設(shè)備、視頻游戲設(shè)備、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備和各種其他電子設(shè)備的其他系統(tǒng)設(shè)計和實現(xiàn)也可以是適合的。一般,包含如本文公開的處理器和/或其他執(zhí)行邏輯的很多種系統(tǒng)或電子設(shè)備一般可以是適合的。圖6示出根據(jù)本公開的實施例的系統(tǒng)600的框圖。系統(tǒng)600可以包括一個或多個處理器610、615,其可以耦合于圖形存儲器控制器集線器(gmch)620。額外處理器615的可選性質(zhì)在圖6中用虛線指示。每個處理器610、615可以是處理器500的某一版本。然而,應(yīng)注意集成圖形邏輯和集成存儲器控制單元可不在處理器610、615中存在。圖6圖示gmch620可以耦合于存儲器640,其可以是例如動態(tài)隨機存取存儲器(dram)。dram對于至少一個實施例可以與非易失性高速緩存關(guān)聯(lián)。gmch620可以是芯片集或芯片集的一部分。gmch620可以與處理器610、615通信并且控制處理器610、615與存儲器640之間的交互。gmch620還可以充當(dāng)處理器610、615與系統(tǒng)600的其他元件之間的加速總線接口。在一個實施例中,gmch620經(jīng)由多點總線(例如前端總線(fsb)695)而與處理器610、615通信。此外,gmch620可以耦合于顯示器645(例如平板顯示器)。在一個實施例中,gmch620可以包括集成圖形加速器。gmch620可以進一步耦合于輸入/輸出(i/o)控制器集線器(ich)650,其可以用于使各種外圍設(shè)備耦合于系統(tǒng)600。外部圖形設(shè)備660可以包括連同另一個外圍設(shè)備670一起耦合于ich650的分立圖形設(shè)備。在其他實施例中,在系統(tǒng)600中還可以存在額外或不同的處理器。例如,額外處理器610、615可以包括可以與處理器610相同的額外處理器、可以與處理器610異構(gòu)或不對稱的額外處理器、加速器(例如圖形加速器或數(shù)字信號處理(dsp)單元)、現(xiàn)場可編程門陣列或任何其他處理器。從品質(zhì)(包括架構(gòu)、微架構(gòu)、熱、功耗特性及類似物)的度量譜方面來看,在物理資源610、615之間可以存在多種差異。這些差異可以使它們自身有效地表現(xiàn)為處理器610、615之中的不對稱和異構(gòu)性。對于至少一個實施例,各種處理器610、615可以駐存在相同的晶片封裝(diepackage)中。圖7示出根據(jù)本公開的實施例的第二系統(tǒng)700的框圖。如在圖7中示出的,多處理器系統(tǒng)700可以包括點到點互連系統(tǒng),并且可以包括經(jīng)由點到點互連750而耦合的第一處理器770和第二處理器780。處理器770和780中的每個可以是處理器500的某一版本(作為處理器610、615中的一個或多個)。盡管圖7可以圖示兩個處理器770、780,要理解本公開的范圍不受此限制。在其他實施例中,在指定處理器中可以存在一個或多個額外處理器。示出處理器770和780,其分別包括集成存儲器控制器單元772和782。處理器770還可以包括點到點(p-p)接口776和778作為它的總線控制器單元的部分;相似地,第二處理器780可以包括p-p接口786和788。處理器770、780可以使用p-p接口電路778、788經(jīng)由點到點(p-p)接口750來交換信息。如在圖7中示出的,imc772和782可以使處理器耦合于相應(yīng)存儲器,即存儲器732和存儲器734,其在一個實施例中可以是本地附連到相應(yīng)處理器的主存儲器的部分。處理器770、780每個可以使用點到點接口電路776、794、786、798經(jīng)由個體p-p接口752、754而與芯片集790交換信息。在一個實施例中,芯片集790還可以經(jīng)由高性能圖形接口739而與高性能圖形電路738交換信息。共享高速緩存(未示出)可以包括在任一處理器中或在兩個處理器外部,然而經(jīng)由p-p互連與處理器連接,使得如果處理器被放置到低功率模式則任一或兩個處理器的本地高速緩存信息可以存儲在共享高速緩存中。芯片集790可以經(jīng)由接口796耦合于第一總線716。在一個實施例中,第一總線716可以是外圍部件互連(pci)總線,或例如pciexpress總線或另一個第三代i/o互連總線等總線,但本公開的范圍不受此限制。如在圖7中示出的,各種i/o設(shè)備714連同總線橋718可以耦合于第一總線716,該總線橋718使第一總線716耦合于第二總線720。在一個實施例中,第二總線720可以是低引腳計數(shù)(lpc)總線。各種設(shè)備可以耦合第二總線720,其包括例如鍵盤和/或鼠標(biāo)722、通信設(shè)備727和存儲單元728,例如盤驅(qū)動器或其他大容量存儲設(shè)備,其在一個實施例中可以包括指令/代碼和數(shù)據(jù)730。此外,音頻i/o724可以耦合于第二總線720。注意其他架構(gòu)可以是可能的。例如,代替圖7的點到點架構(gòu),系統(tǒng)可以實現(xiàn)多點總線或其他這樣的架構(gòu)。圖8示出根據(jù)本公開的實施例的第三系統(tǒng)800的框圖。圖7和圖8中的類似元件具有類似的標(biāo)號,并且圖7的某些方面已經(jīng)從圖8省略以避免混淆圖8的其他方面。圖8圖示處理器870、880可以分別包括集成存儲器和i/o控制邏輯(“cl”)872和882。對于至少一個實施例,cl872、882可以包括集成存儲器控制器單元,例如在上文連同圖5和7描述的。另外,cl872、882還可以包括i/o控制邏輯。圖8圖示不僅存儲器832、834可以耦合于cl872、882,而且i/o設(shè)備814也可以耦合于控制邏輯872、882。遺留i/o設(shè)備815可以耦合于芯片集890。圖9示出根據(jù)本公開的實施例的soc900的框圖。圖5中的相似元件具有類似的標(biāo)號。虛線框也可表示更先進soc上的可選特征。互連單元902可以耦合于:應(yīng)用處理器910,其可以包括一個或多個核902a-n的集和共享高速緩存單元906;系統(tǒng)代理單元910;總線控制器單元916;集成存儲器控制器單元914;一個或多個媒體處理器920的集,其可以包括集成圖形邏輯908、用于提供靜物和/或視頻拍攝裝置功能性的圖像處理器924、用于提供硬件音頻加速的音頻處理器926和用于提供視頻編碼/解碼加速的視頻處理器928;靜態(tài)隨機存取存儲器(sram)單元930;直接存儲器訪問(dma)單元932;和顯示單元940,用于耦合于一個或多個外部顯示器。圖10圖示根據(jù)本公開的實施例的處理器,其包含可以執(zhí)行至少一個指令的中央處理單元(cpu)和圖形處理單元(gpu)。在一個實施例中,執(zhí)行根據(jù)至少一個實施例的操作的指令可以由cpu執(zhí)行。在另一個實施例中,指令可以由gpu執(zhí)行。在再另一個實施例中,指令可以通過由gpu和cpu執(zhí)行的操作的組合來執(zhí)行。例如,在一個實施例中,根據(jù)一個實施例的指令可被接收和解碼以供在gpu上執(zhí)行。然而,解碼指令內(nèi)的一個或多個操作可以由cpu執(zhí)行并且結(jié)果返回gpu以用于指令的最后引退。相反,在一些實施例中,cpu可以充當(dāng)主處理器并且gpu充當(dāng)協(xié)處理器。在一些實施例中,從高度并行吞吐量處理器獲益的指令可可以由gpu執(zhí)行,而從處理器(其從深度流水化架構(gòu)獲益)的性能獲益的指令可以由cpu執(zhí)行。例如,圖形、科學(xué)應(yīng)用、金融應(yīng)用和其他并行工作負(fù)荷可以從gpu的性能獲益并且相應(yīng)地被執(zhí)行,而更多的有序應(yīng)用(例如操作系統(tǒng)內(nèi)核或應(yīng)用代碼)可以更適合cpu。在圖10中,處理器1000包括cpu1005、gpu1010、圖像處理器1015、視頻處理器1020、usb控制器1025、uart控制器1030、spi/sdio控制器1035、顯示設(shè)備1040、存儲器接口控制器1045、mipi控制器1050、閃速存儲器控制器1055、雙數(shù)據(jù)速率(ddr)控制器1060、安全引擎1065和i2s/i2c控制器1070。其他邏輯和電路可以包括在圖10的處理器中,其包括更多cpu或gpu和其他外圍接口控制器。至少一個實施例的一個或多個方面可以由存儲在機器可讀介質(zhì)上的代表性數(shù)據(jù)實現(xiàn),該代表性數(shù)據(jù)代表處理器內(nèi)的各種邏輯,其在被機器讀取時促使該機器裝配邏輯來執(zhí)行本文描述的技術(shù)。這樣的表示(稱為“ip核”)可以存儲在有形的機器可讀介質(zhì)(“帶”)上并且供應(yīng)給各種客戶或裝配設(shè)施來裝入實際上制作邏輯或處理器的裝配機器。例如,ip核(例如由armholdings,ltd.開發(fā)的cortex?系列處理器和中國科學(xué)院計算技術(shù)研究所(ict)開發(fā)的loongsonip核)可授權(quán)或出售給各種客戶或被許可方(例如texasinstruments、qualcomm,、apple或samsung)并且在由這些客戶或被許可方生產(chǎn)的處理器中實現(xiàn)。圖11圖示框圖,其圖示根據(jù)本公開的實施例的ip核的開發(fā)。存儲1130可以包括模擬軟件1120和/或硬件或軟件模型1110。在一個實施例中,代表ip核設(shè)計的數(shù)據(jù)可以經(jīng)由存儲器1140(例如,硬盤)、有線連接(例如,互聯(lián)網(wǎng))1150或無線連接1160提供給存儲1130。由模擬工具和模型生成的ip核信息然后可以傳送到裝配設(shè)施,在這里它可以由第三方裝配用于執(zhí)行根據(jù)至少一個實施例的至少一個指令。在一些實施例中,一個或多個指令可以對應(yīng)于第一類型或架構(gòu)(例如,x86)并且在具有不同類型或架構(gòu)(例如,arm)的處理器上翻譯或仿真。根據(jù)一個實施例的指令因此可以在任何處理器或處理器類型上執(zhí)行,其包括arm、x86、mips、gpu或其他處理器類型或架構(gòu)。圖12圖示根據(jù)本公開的實施例、不同類型的處理器如何可以仿真第一類型的指令。在圖12中,程序1205包含可以執(zhí)行與根據(jù)一個實施例的指令相同或大致相同功能的一些指令。然而,程序1205的指令可以具有與處理器1215不同或不兼容的類型和/或格式,這意指程序1205中該類型的指令可能不能由處理器1215本機執(zhí)行。然而,借助于仿真邏輯1210,程序1205的指令可以翻譯成可以被處理器1215本機執(zhí)行的指令。在一個實施例中,仿真邏輯可以在硬件中體現(xiàn)。在另一個實施例中,仿真邏輯可以在有形的機器可讀介質(zhì)中體現(xiàn),該有形的機器可讀介質(zhì)包含用于將程序1205中該類型的指令翻譯成由處理器1215本機可執(zhí)行的類型的軟件。在其他實施例中,仿真邏輯可以是固定功能(fixedfunction)或可編程硬件和存儲在有形的機器可讀介質(zhì)上的程序的組合。在一個實施例中,處理器包含仿真邏輯,而在其他實施例中,仿真邏輯在處理器外部存在并且可以由第三方提供。在一個實施例中,處理器可以通過執(zhí)行處理器中包含或與處理器關(guān)聯(lián)的微代碼或固件而加載有形的機器可讀介質(zhì)(其包含軟件)中體現(xiàn)的仿真邏輯。圖13圖示根據(jù)本公開的實施例對比用于將源指令集中的二進制指令轉(zhuǎn)換成目標(biāo)指令集中的二進制指令的軟件指令轉(zhuǎn)換器的使用的框圖。在圖示的實施例中,指令轉(zhuǎn)換器可以是軟件指令轉(zhuǎn)換器,但指令轉(zhuǎn)換器可以在軟件、固件、硬件或其各種組合中實現(xiàn)。圖13示出采用高級語言1302的程序可以使用x86編譯器1304編譯來生成x86二進制代碼1306,其可以由具有至少一個x86指令集核1316的處理器本機執(zhí)行。具有至少一個x86指令集核1316的處理器代表任何處理器,其可以通過以下而執(zhí)行與具有至少一個x86指令集核的intel處理器大致相同的功能以便實現(xiàn)與具有至少一個x86指令集核的intel處理器大致相同的結(jié)果:兼容地執(zhí)行或用別的方式處理(1)intelx86指令集核的指令集的相當(dāng)大一部分或(2)以在具有至少一個x86指令集核的intel處理器上運行為目標(biāo)的應(yīng)用或其他軟件的目標(biāo)代碼版本。x86編譯器1304代表可以可操作成生成x86二進制代碼1306(例如,目標(biāo)代碼)的編譯器,這些x86二進制代碼1306可以在具有或沒有額外鏈接處理的情況下在具有至少一個x86指令集核1316的處理器上執(zhí)行。相似地,圖13示出采用高級語言1302的程序可以使用備選指令集編譯器1308編譯來生成備選指令集二進制代碼1310,其可以由沒有至少一個x86指令集核1314的處理器(例如,具有執(zhí)行加利福尼亞州sunnyvale的mipstechnologies的mips指令集和/或執(zhí)行加利福尼亞州sunnyvale的armholdings的arm指令集的核的處理器)本機執(zhí)行。指令轉(zhuǎn)換器1312可以用于將x86二進制代碼1306轉(zhuǎn)換成可以由沒有x86指令集核1314的處理器本機執(zhí)行的代碼。該轉(zhuǎn)換代碼可不與備選指令集二進制代碼1310相同;然而,轉(zhuǎn)換代碼將完成一般操作并且由來自備選指令集的指令構(gòu)成。從而,指令轉(zhuǎn)換器1312代表軟件、固件、硬件或其組合,其通過仿真、模擬或任何其他過程而允許不具有x86指令集處理器或核的處理器或其他電子設(shè)備執(zhí)行x86二進制代碼1306。圖14是根據(jù)本公開的實施例的處理器的指令集架構(gòu)1400的框圖。指令集架構(gòu)1400可以包括任何適合數(shù)量或種類的部件。例如,指令集架構(gòu)1400可以包括處理實體,例如一個或多個核1406、1407和圖形處理單元1415。核1406、1407可以通過任何適合的機構(gòu)(例如通過總線或高速緩存)通信耦合于指令集架構(gòu)1400的余下部分。在一個實施例中,核1406、1407可以通過l2高速緩存控制1408(其可以包括總線接口單元1409和l2高速緩存1410)而通信耦合。核1406、1407和圖形處理單元1415可以通過互連1410而通信耦合于彼此以及指令集架構(gòu)1400的剩余部分。在一個實施例中,圖形處理單元1415可以使用視頻代碼1420,其限定將對特定視頻信號編碼和解碼以供輸出所采用的方式。指令集架構(gòu)1400還可以包括用于與電子設(shè)備或系統(tǒng)的其他部分接口或通信的任何數(shù)量或種類的接口、控制器或其他機構(gòu)。這樣的機構(gòu)可以促進與例如外設(shè)、通信設(shè)備、其他處理器或存儲器的交互。在圖14的示例中,指令集架構(gòu)1400可以包括液晶顯示器(lcd)視頻接口1425、訂戶接口模塊(sim)接口1430、引導(dǎo)rom接口1435、同步動態(tài)隨機存取存儲器(sdram)控制器1440、閃速控制器1445和串行外圍接口(spi)主單元1450。lcd視頻接口1425可以提供視頻信號從例如gpu1415的輸出并且通過例如移動工業(yè)處理器接口(mipi)1490或高清晰度多媒體接口(hdmi)1495來將其提供到顯示器。這樣的顯示器可以包括例如lcd。sim接口1430可以提供對或從sim卡或設(shè)備的訪問。sdram控制器1440可以提供對或從例如sdram芯片或模塊等存儲器的訪問。閃速控制器1445可以提供對或從例如閃速存儲器或ram的其他實例等存儲器的訪問。spi主單元1450可以提供對或從通信模塊(例如藍牙模塊1470、高速3g調(diào)制解調(diào)器1475、全球定位系統(tǒng)模塊1480或?qū)崿F(xiàn)例如802.11等通信標(biāo)準(zhǔn)的無線模塊1485)的訪問。圖15是根據(jù)本公開的實施例實現(xiàn)指令集架構(gòu)的處理器的指令架構(gòu)1500的更詳細(xì)框圖。指令架構(gòu)1500可以是微架構(gòu)。指令架構(gòu)1500可以實現(xiàn)指令集架構(gòu)1400的一個或多個方面。此外,指令架構(gòu)1500可以圖示用于在處理器內(nèi)執(zhí)行指令的模塊和機構(gòu)。指令架構(gòu)1500可以包括存儲器系統(tǒng)1540,其通信耦合于一個或多個執(zhí)行實體1565。此外,指令架構(gòu)1500可以包括高速緩存和總線接口單元,例如通信耦合于執(zhí)行實體1565和存儲器系統(tǒng)1540的單元1510。在一個實施例中,指令到執(zhí)行實體1565內(nèi)的加載可以由一個或多個執(zhí)行段執(zhí)行。這樣的段可以包括例如指令預(yù)提取段1530、雙指令解碼段1550、寄存器重命名段1555、發(fā)出段1560和寫回段1570。在一個實施例中,存儲器系統(tǒng)1540可以包括執(zhí)行指令指針1580。執(zhí)行指令指針1580可以存儲識別由多個線束(strand)表示的線程內(nèi)亂序發(fā)出段1560中的一批指令內(nèi)的最舊的未調(diào)派指令的值。執(zhí)行指令指針1580可以在發(fā)出段1560中計算并且傳播到加載單元。指令可以存儲在一批指令內(nèi)。該批指令可以在由多個線束表示的線程內(nèi)。最舊指令可以對應(yīng)于最低程序順序(po)值。po可以包括指令的唯一數(shù)字。po可以在對指令排序中使用來確保代碼的正確執(zhí)行語義。po可以通過例如評估指令中編碼的po的增量而不是絕對值等的機制來重建。這樣的重建po可以稱為rpo。盡管在本文可以引用po,這樣的po可以與rpo能互換地使用。線束可以包括指令的序列,它們是彼此依賴的數(shù)據(jù)。線束可以由二進制翻譯器在編譯時設(shè)置。執(zhí)行線束的硬件可以根據(jù)各種指令的po按順序執(zhí)行指定線束的指令。線程可以包括多個線束使得不同線束的指令可以彼此依賴。指定線束的po可以是線束中還未調(diào)派以從發(fā)出段執(zhí)行的最舊指令的po。因此,考慮到具有多個線束的線程,每個線束包括通過po排序的指令,執(zhí)行指令指針1580可以存儲亂序發(fā)出段1560中的線程的線束之中的最舊-由最低數(shù)字圖示-po。在另一個實施例中,存儲器系統(tǒng)1540可以包括引退指針1582。引退指針1582可以存儲識別最后的引退指令的po的值。引退指針1582可以由例如引退單元454設(shè)置。如果沒有指令已經(jīng)被引退,引退指針1582可以包括空值。執(zhí)行實體1565可以包括任何適合數(shù)量和種類的機構(gòu),處理器可以通過這些機構(gòu)執(zhí)行指令。在圖15的示例中,執(zhí)行實體1565可以包括alu/乘法單元(mul)1566、alu1567和浮點單元(fpu)1568。在一個實施例中,這樣的實體可以使用指定地址1569內(nèi)包含的信息。執(zhí)行實體1565結(jié)合段1530、1550、1555、1560、1570可以共同形成執(zhí)行單元。單元1510可以采用任何適合的方式實現(xiàn)。在一個實施例中,單元1510可以執(zhí)行高速緩存控制。在這樣的實施例中,單元1510從而可以包括高速緩存1525。高速緩存1525在另外的實施例中可以實現(xiàn)為具有任何適合大小(例如零、128k、256k、512k、1m或2m字節(jié)存儲器)的l2統(tǒng)一高速緩存。在另一個另外的實施例中,高速緩存1525可以在糾錯碼存儲器中實現(xiàn)。在另一個實施例中,單元1510可以執(zhí)行到處理器或電子設(shè)備的其他部分的總線接口。在這樣的實施例中,單元1510從而可以包括總線接口單元1520,用于通過互連、處理器內(nèi)總線、處理器間總線或其他通信總線、端口或線路來通信。總線接口單元1520可以提供接口以便執(zhí)行例如存儲器和輸入/輸出地址的生成以用于在執(zhí)行實體1565與指令架構(gòu)1500外部的系統(tǒng)的部分之間傳輸數(shù)據(jù)。為了進一步促進該功能,總線接口單元1520可以包括中斷控制和分配單元1511,用于對處理器或電子設(shè)備的其他部分生成中斷和其他通信。在一個實施例中,總線接口單元1520可以包括窺探控制單元1512,其處理對于多個處理器核的高速緩存訪問和一致性。在另外的實施例中,為了提供這樣的功能性,窺探控制單元1512可以包括高速緩存到高速緩存?zhèn)鬏攩卧?,其處理不同高速緩存之間的信息交換。在另一個另外的實施例中,窺探控制單元1512可以包括一個或多個窺探過濾器1514,其監(jiān)測其他高速緩存(未示出)的一致性使得高速緩存控制器(例如單元1510)不必直接執(zhí)行這樣的監(jiān)測。單元1510可以包括任何適合數(shù)量的計時器1515,用于使指令架構(gòu)1500的動作同步。單元1510還可以包括ac端口1516。存儲器系統(tǒng)1540可以包括用于為指令架構(gòu)1500的處理需要存儲信息的任何適合數(shù)量和種類的機構(gòu)。在一個實施例中,存儲器系統(tǒng)1540可以包括加載存儲單元1530,用于存儲與寫入存儲器或寄存器或從它們讀回的指令有關(guān)的信息。在另一個實施例中,存儲器系統(tǒng)1540可以包括翻譯后備緩沖器(tlb)1545,其提供物理與虛擬地址之間的地址值的查找。在再另一個實施例中,總線接口單元1520可以包括存儲器管理單元(mmu)1544,用于促進對虛擬存儲器的訪問。在再另一個實施例中,存儲器系統(tǒng)1540可以包括預(yù)提取器1543,用于在實際上需要要執(zhí)行這樣的指令之前從存儲器請求指令以便減少延遲。執(zhí)行指令的指令架構(gòu)1500的操作可以通過不同段來執(zhí)行。例如,使用單元1510,指令預(yù)提取段1530可以通過預(yù)提取器1543訪問指令。檢索的指令可以存儲在指令高速緩存1532中。預(yù)提取段1530可以啟用快循環(huán)模式的選項1531,其中執(zhí)行形成小到足以適配于指定高速緩存內(nèi)的循環(huán)的一系列指令。在一個實施例中,這樣的執(zhí)行可以在不需要訪問來自例如指令高速緩存1532的額外指令的情況下執(zhí)行。預(yù)提取什么指令的確定可以通過例如分支預(yù)測單元1535做出,該分支預(yù)測單元1535可以訪問全局歷史1536中的執(zhí)行的指示、目標(biāo)地址1537的指示或返回棧1538的內(nèi)容來確定接著將執(zhí)行代碼的分支1557中的哪個。這樣的分支因此可能被預(yù)提取。分支1557可以通過如下文描述的其他段的操作而產(chǎn)生。指令預(yù)提取段1530可以向雙指令解碼段提供指令以及關(guān)于未來指令的任何預(yù)測。雙指令解碼段1550可以將接收的指令翻譯成可以執(zhí)行的基于微代碼的指令。雙指令解碼段1550可以每時鐘周期同時對兩個指令解碼。此外,雙指令解碼段1550可以將它的結(jié)果傳遞給寄存器重命名段1555。另外,雙指令解碼段1550可以從它的微代碼的解碼和最終執(zhí)行來確定任何所得的分支。這樣的結(jié)果可以輸入分支1557。寄存器重命名段1555可以將對虛擬寄存器或其他資源的引用翻譯成對物理寄存器或資源的引用。寄存器重命名段1555可以包括寄存器池1556中這樣的映射的指示。寄存器重命名段1555可以在接收時更改指令并且將結(jié)果發(fā)送到發(fā)出段1560。發(fā)出段1560可以向執(zhí)行實體1565發(fā)出或調(diào)派命令。這樣的發(fā)出可以采用亂序方式執(zhí)行。在一個實施例中,多個指令在執(zhí)行之前可以保持在發(fā)出段1560。發(fā)出段1560可以包括指令隊列1561,用于保持這樣的多個命令。指令可以由發(fā)出段1560基于任何可接受準(zhǔn)則(例如用于指定指令執(zhí)行的資源的可用性或適用性)對特定處理實體1565發(fā)出。在一個實施例中,發(fā)出段1560可以對指令隊列1561內(nèi)的指令重排序使得接收的第一指令可能不是執(zhí)行的第一指令?;谥噶铌犃?561的排序,可以向分支1557提供額外分支信息。發(fā)出段1560可以將指令傳遞到執(zhí)行實體1565以供執(zhí)行。在執(zhí)行時,寫回段1570可以將數(shù)據(jù)寫入寄存器、隊列或指令架構(gòu)1500的其他結(jié)構(gòu)來傳達指定命令的完成。根據(jù)在發(fā)出段1560中設(shè)置的指令的順序,寫回段1570的操作可以能夠執(zhí)行額外指令。指令架構(gòu)1500的性能可以由跟蹤單元1575監(jiān)測或調(diào)試。圖16是根據(jù)本公開的實施例對于處理器的執(zhí)行流水線1600的框圖。執(zhí)行流水線1600可以圖示例如圖15的指令架構(gòu)1500的操作。執(zhí)行流水線1600可以包括步驟或操作的任何適合的組合。在1605,可以進行接下來待執(zhí)行的分支的預(yù)測。在一個實施例中,這樣的預(yù)測可以基于指令之前的執(zhí)行及其結(jié)果。在1610,對應(yīng)于預(yù)測的執(zhí)行分支的指令可以加載到指令高速緩存內(nèi)。在1615,指令高速緩存中一個或多個這樣的指令可以被提取以供執(zhí)行。在1620,已被提取的指令可以解碼為微代碼或更特定的機器語言。在一個實施例中,可以對多個指令同時解碼。在1625,對解碼指令內(nèi)的寄存器或其他資源的引用可以被重新指派。例如,對虛擬寄存器的引用可以用對對應(yīng)物理寄存器的引用代替。在1630,可以向隊列調(diào)派指令以供執(zhí)行。在1640,可以執(zhí)行指令。這樣的執(zhí)行可以采用任何適合的方式執(zhí)行。在1650,可以向適合的執(zhí)行實體發(fā)出指令。執(zhí)行指令所采用的方式可以取決于執(zhí)行指令的特定實體。例如,在1655,alu可以執(zhí)行算術(shù)函數(shù)。alu可以對它的操作使用單個時鐘周期,以及兩個移位器。在一個實施例中,可以采用兩個alu,并且從在1655可以執(zhí)行兩個指令。在1660,可以做出所得的分支的確定。程序計數(shù)器可以用于指定分支將走向的目的地。1660可以在單個時鐘周期內(nèi)執(zhí)行。在1665,可以由一個或多個fpu執(zhí)行浮點算法。浮點運算可需要多個時鐘周期來執(zhí)行,例如兩至十個周期。在1670,可以執(zhí)行乘法和除法運算。這樣的運算可以在多個時鐘周期(例如四個時鐘周期)執(zhí)行。在1675,可以執(zhí)行對寄存器或流水線1600的其他部分的加載和存儲操作。這些操作可以包括加載和存儲地址。這樣的操作可以在四個時鐘周期執(zhí)行。在1680,可以執(zhí)行寫回操作,如1655-1675的所得操作所需要的。圖17是根據(jù)本公開的實施例用于使用處理器1710的電子設(shè)備1700的框圖。電子設(shè)備1700可以包括例如筆記本、超級本、計算機、塔式服務(wù)器、機架式服務(wù)器、刀片式服務(wù)器、膝上型電腦、臺式機、平板、移動設(shè)備、電話、嵌入式計算機或任何其他適合的電子設(shè)備。電子設(shè)備1700可以包括處理器1710,其通信耦合于任何適合數(shù)量或種類的部件、外設(shè)、模塊或設(shè)備。這樣的耦合可以由任何適合種類的總線或接口完成,例如i2c總線、系統(tǒng)管理總線(smbus)、低引腳計數(shù)(lpc)總線、spi、高清晰度音頻(hda)總線、串行高級技術(shù)附件(sata)總線、usb總線(版本1、2、3)或通用異步接收器/傳送器(uart)總線。這樣的部件可以包括例如顯示器1724、觸屏1725、觸控板1730、近場通信(nfc)單元1745、傳感器集線器1740、熱傳感器1746、高速芯片集(ec)1735、可信平臺模塊(tpm)1738、bios/固件/閃速存儲器1722、數(shù)字信號處理器1760、驅(qū)動器1720(例如固態(tài)驅(qū)動器(ssd)或硬盤驅(qū)動器(hdd))、無線局域網(wǎng)(wlan)單元1750、藍牙單元1752、無線廣域網(wǎng)(wwan)單元1756、全球定位系統(tǒng)(gps)、拍攝裝置1754(例如usb3.0拍攝裝置)或低功率雙數(shù)據(jù)速率(lpddr)存儲器單元1715(采用例如lpddr3標(biāo)準(zhǔn)實現(xiàn))。這些部件每個可以采用任何適合的方式實現(xiàn)。此外,在各種實施例中,其他部件可以通過上文論述的部件通信耦合于處理器1710。例如,加速器1741、環(huán)境光傳感器(als)1742、羅盤1743和陀螺儀1744可以通信耦合于傳感器集線器1740。熱傳感器1739、風(fēng)扇1737、鍵盤1746和觸控板1730可以通信耦合于ec1735。揚聲器1763、耳機1746和麥克風(fēng)1765可以通信耦合于音頻單元1764,其進而可以通信耦合于dsp1760。音頻單元1764可以包括例如音頻編解碼器和d類放大器。sim卡1757可以通信耦合于wwan單元1756。例如wlan單元1750和藍牙單元1752以及wwan單元1756等部件可以采用下一代形狀因子(ngff)實現(xiàn)。本公開的實施例牽涉對于與頁表游走關(guān)聯(lián)的二進制翻譯的翻譯中位設(shè)置的指令和邏輯。位設(shè)置可以具有已被訪問(.a)或變臟(.d)(或被寫入)的頁表的指定。圖18是根據(jù)本公開的實施例對于二進制翻譯的翻譯中位設(shè)置的系統(tǒng)1800的圖示。系統(tǒng)1800可以包括處理器1802,其在來自指令流1804的指令的二進制翻譯期間執(zhí)行位設(shè)置。盡管某些元件在圖18中可以示出為執(zhí)行描述的動作,系統(tǒng)1800或處理器1802的任何適合部分可以實現(xiàn)功能性或執(zhí)行本文描述的動作。系統(tǒng)1800可以包括在一個或多個處理器(例如處理器1802)內(nèi)部或與之通信耦合的存儲器1812。存儲器1812可以在物理存儲器地址中組織,但從邏輯或虛擬存儲器方面可以在處理器1802中引用或由處理器1802的元件引用。為了在邏輯與物理存儲器之間映射,系統(tǒng)1800可以包括頁表1816。在進行對虛擬存儲器的訪問時,可以在適合的頁表1816中查找對應(yīng)的物理地址。頁表1816可以在系統(tǒng)1800中采用任何適合的方式或在任何適合的地方實現(xiàn)。例如,頁表1816可以實現(xiàn)為存儲器1812中的數(shù)據(jù)結(jié)構(gòu)。為了加速查找操作,處理器1802可以對來自頁表1816的一個或多個條目高速緩存。處理器1802可以采用任何適合的方式或在任何適合的位點對頁表高速緩存。例如,處理器1802可以將頁表高速緩存在翻譯后備緩沖器(tlb)1830中。tlb1830可以在內(nèi)容可尋址存儲器中實現(xiàn)。從而,tlb1830可以包括高速緩存的頁表(cpt)1832。盡管cpt1832描述為‘頁表’,它們可以實現(xiàn)頁表的信息的任何適合子集,例如邏輯與物理存儲器之間的映射。頁表的高速緩存可以由例如存儲器管理單元(mmu)1828控制。在虛擬地址需要翻譯成物理地址來滿足例如來自指令流1804的指令的執(zhí)行時,可以對于待執(zhí)行的翻譯的對應(yīng)cpt1832來搜索tlb1830。如果在tlb1830中對于對應(yīng)cpt1832存在命中,則可以返回物理地址并且執(zhí)行繼續(xù)。然而,如果在tlb1830中對于對應(yīng)cpt1832存在未命中,則mmu1828可以促使pmh1834執(zhí)行頁表游走來找到合適的頁表1816以通過例如訪問其他級高速緩存或頁表1816的實際版本來執(zhí)行映射。頁表游走可以由例如頁面未命中處理部件(pmh)1834執(zhí)行。此外,新的映射可以由于未命中而高速緩存到tlb1830。頁表還可以包括位來指示是否已經(jīng)經(jīng)由頁表映射來訪問頁面。這樣的位可以稱為‘.a’位。頁表還可以包括位來指示是否已經(jīng)經(jīng)由頁表映射來修改頁內(nèi)容。這樣的位可以稱為‘.d’位。在頁表游走期間,pmh1834可以設(shè)置它遇到的干凈(clear)的.a位。此外,在頁表游走期間,如果促成頁表游走的指令是存儲操作或指令,pmh1834可以設(shè)置它遇到的.d位。另外,如果tlb1830中的命中產(chǎn)生具有清零的.d位的條目,則可以觸發(fā)頁表游走以便在必要時設(shè)置.d位。這可以經(jīng)受上文提到的相同約束:僅在tlb中的命中是存儲操作或指令時設(shè)置.d。二進制翻譯可以包括在指令運行時間期間修改代碼??梢詧?zhí)行二進制翻譯來增加指令級并行性,其中代碼區(qū)可以亂序執(zhí)行。二進制翻譯可以通過將‘訪客’或非本機指令的序列翻譯成‘主機’或本機硬件指令的序列來執(zhí)行‘訪客’指令集。結(jié)果可以包括‘翻譯’。本地主機然后可以執(zhí)行翻譯來模擬原始訪客代碼。在各種實施例中,二進制翻譯可以牽涉重排序訪客加載和存儲來更好地增加指令級并行性。然而,重排序加載和存儲還可以對更新頁表的.a和.d位的隱式存儲重排序。二進制翻譯可以包括代碼修改。設(shè)備可以寫它隨后執(zhí)行的指令,其可以稱為“自修改代碼”。此外,設(shè)備可以寫另一個設(shè)備隨后執(zhí)行的指令,其可以稱為“交叉修改代碼”。另外,外部代理可寫內(nèi)部代理隨后執(zhí)行的指令,其可以包括由“dma修改代碼”促成的修改,但除dma以外的機構(gòu)可以用于改變代碼。二進制翻譯可以由二進制翻譯器1810執(zhí)行。二進制翻譯器可以在處理器1802內(nèi)或系統(tǒng)1800內(nèi)但在處理器1802外部實現(xiàn)。二進制翻譯器1810可以采用任何適合的方式實現(xiàn)。在一個實施例中,二進制翻譯器1810可以由硬件設(shè)備實現(xiàn),該硬件設(shè)備包括在處理器1802中實現(xiàn)的有限狀態(tài)機和邏輯。在另一個實施例中,二進制翻譯器1810可以由軟件中的指令實現(xiàn)。在各種實施例中,二進制翻譯器1810可以由硬件和軟件的組合實現(xiàn)。二進制翻譯器1810可以將它的結(jié)果寫入任何適合位點,例如存儲器。二進制翻譯器1810的使用可丟失在某些頁表訪問上的執(zhí)行。首先,二進制翻譯器1810可以如上文描述的那樣對存儲器操作重排序。然而,例如更新.a和.d位(其指示頁表被訪問過或變臟)的隱式存儲等存儲器訪問可能不能重排序。這是因為.a和.d存儲可需要根據(jù)存儲器模型排序并且重排序可違背模型。調(diào)和二進制翻譯與設(shè)置的.a和.d位的一個方法是完全有序執(zhí)行指令區(qū)。然而,該方法可能是緩慢的。如果忽略沖突,對一些存儲器操作重排序可違背存儲器排序并且導(dǎo)致錯誤。在一個實施例中,系統(tǒng)1800可以評估存儲器重排序是否可見,并且根據(jù)它是否不可見而在二進制翻譯期間執(zhí)行位設(shè)置。在這樣的實施例中,如果重排序操作可見,系統(tǒng)1800可以確定對設(shè)置的.a和.d位重排序可存在問題。如果存儲器操作在代碼的數(shù)據(jù)獨立區(qū)中,它們可能不可見。如果設(shè)置的.a和.d位在代碼的數(shù)據(jù)依賴區(qū)中,可仍存在存儲器排序問題。因此,在一個實施例中,系統(tǒng)1800可以確定在翻譯中對設(shè)置的.a和.d位重排序是否正確或可允許,并且如果是這樣的話,允許從翻譯內(nèi)執(zhí)行訪問它們的操作。否則,可以使用例如強制有序執(zhí)行等方法。二進制翻譯中的排序可以包括在硬件原子區(qū)上構(gòu)建翻譯,其可以叫做‘事務(wù)’。在一個實施例中,系統(tǒng)1800可以確定對具有設(shè)置的.a或.d位的頁面的寫是否觸及不可高速緩存存儲器類型。如果是這樣的話,存儲器操作的重排序可成問題并且相反可以使用強制有序操作。在另一個實施例中,系統(tǒng)1800可以確定對具有設(shè)置的.a或.d位的頁面的寫是否與也被相同事務(wù)中的顯式加載或存儲所觸及的位點重疊。如果是這樣的話,存儲器操作的重排序可成問題并且相反可以使用強制有序執(zhí)行。許多設(shè)置的.a和.d位產(chǎn)生于用戶空間代碼,其沒有讀或?qū)戫摫淼奶貦?quán)。此外,操作系統(tǒng)代碼可以隔離頁表訪問,因為另外可能出現(xiàn)競爭條件。然而,如果對具有設(shè)置的.a或.d位的頁面的寫在與顯式加載或存儲相同的事務(wù)內(nèi),則重排序可成問題。在再另一個實施例中,一旦完成事務(wù),因為設(shè)置的.a和.d位的問題可未波及其他事務(wù),重排序可能并不成問題。在大部分情形下,沖突可以使.a或.d可見,這可能是罕見的。從而,在一些系統(tǒng)中,更常見情況可能被懲罰,因為.a和.d可以視為它們可能可見(這可以使執(zhí)行變慢)。因為沖突可能是罕見的,使用翻譯中的.a或.d位可能多半是正確的,這可以更快。從而,檢測實際上不常見的情況的機構(gòu)可以允許在大部分情形中更好地使用翻譯中的.a和.d位。為了在與設(shè)置的.a或.d位關(guān)聯(lián)的二進制翻譯期間監(jiān)測有問題的存儲器操作,系統(tǒng)1800可以包括任何適合的機構(gòu),其包括上文論述的那些。在一個實施例中,系統(tǒng)1800可以包括監(jiān)視器單元1834,但如本文描述的監(jiān)視器單元1834的功能性可以在系統(tǒng)1800的任何適合部分中實現(xiàn)。監(jiān)視器單元1834可以包括監(jiān)測單元、過濾器或用于執(zhí)行本文描述的功能性的其他邏輯。在另一個實施例中,監(jiān)視器單元1834可以監(jiān)測存儲器事務(wù),并且如果其中的加載或存儲與監(jiān)視器單元1834所跟蹤的地址匹配,可以中止事務(wù)并且事務(wù)例如有序地重新執(zhí)行。所跟蹤的地址可以包括具有設(shè)置的它們的.a或.d位的那些。在再另一個實施例中,在設(shè)置.a或.d位的tlb1830未命中時,在頁表游走中使用的新地址可以插入監(jiān)視器單元1800用于進一步監(jiān)視。另外,事務(wù)可以在頁表游走后中止以及重新執(zhí)行。在一個實施例中,與監(jiān)視器單元1834所識別的監(jiān)視位點重疊的加載或存儲可以導(dǎo)致事務(wù)執(zhí)行被終止并且以例如有序執(zhí)行而重新開始??梢詫τ诿總€新的事務(wù)清除監(jiān)視器單元1834。在另一個實施例中,如果事務(wù)遇到太多.a或.d位,監(jiān)視器單元1834可能溢出,從而導(dǎo)致事務(wù)執(zhí)行被終止并且以例如有序執(zhí)行而重新開始。在再另一個實施例中,如果直到事務(wù)結(jié)束沒有中止,可以允許完成事務(wù)。處理器1802可以采用任何適合的方式實現(xiàn)來并行且亂序執(zhí)行多個指令。在一個實施例中,處理器1802可以執(zhí)行指令使得指令被提取、發(fā)出和未按程序順序執(zhí)行。除存儲器和可中斷指令以外的所有指令可未按程序順序被提交或引退。然而,在一個實施例中,存儲器和可中斷指令可能有序被提交或引退(相對或整體)。這樣的有序提交和引退可以是誤預(yù)測或可能的數(shù)據(jù)依賴過錯或錯誤的結(jié)果。有序執(zhí)行可以包括根據(jù)相繼po值的執(zhí)行。亂序執(zhí)行可以包括不一定遵循相繼po值的執(zhí)行。系統(tǒng)1800可以圖示處理器1802的元件,其也可以包括任何部件、處理器核、邏輯處理器、處理器或其他處理實體或元件,例如圖1-17中圖示的那些。二進制翻譯器1810可以采用任何適合的方式實現(xiàn)。在一個實施例中,二進制翻譯器1810可以由硬件設(shè)備實現(xiàn),該硬件設(shè)備包括在處理器1802中實現(xiàn)的有限狀態(tài)機和邏輯。在另一個實施例中,二進制翻譯器1810可以由軟件中的指令實現(xiàn)。在各種實施例中,二進制翻譯器1810可以由硬件和軟件的組合實現(xiàn)。二進制翻譯器1810可以將它的結(jié)果寫入任何適合位點,例如存儲器。這樣的存儲器可以包括例如專用存儲器或到一般可訪問存儲器的一部分。在一個實施例中,由系統(tǒng)1800待處理的代碼可以包括主機代碼和訪客代碼。主機代碼可以包括由處理器(例如處理器1802)待執(zhí)行的代碼。訪客代碼可以包括由例如二進制翻譯器1810翻譯的代碼。因此,包括主機代碼的存儲器可以稱為主機存儲器并且包括訪客代碼的存儲器可以稱為訪客存儲器。二進制翻譯器1810可以讀取訪客代碼序列并且生成主機代碼序列作為翻譯的結(jié)果。在執(zhí)行時,主機代碼應(yīng)具有如同直接執(zhí)行訪客代碼一樣相同效果。因此,系統(tǒng)1800可以保留被翻譯代碼和原始代碼的等同功能性。訪客代碼(翻譯的輸入)可以采用任何適合的格式實現(xiàn)。訪客代碼通常可以包括對于處理器格式的指令,例如對于x86處理器的指令。此外,訪客代碼通常還可以包括對于假設(shè)、通用或虛擬處理器的指令。這樣的指令可以包括例如采用處理器獨立形式的java字節(jié)碼。從翻譯產(chǎn)生的主機代碼可以采用任何適合的格式實現(xiàn)。主機代碼通常可以包括采用處理器格式的代碼,并且還可以包括采用對于虛擬處理器的格式的指令。如在系統(tǒng)1800內(nèi)使用的主機代碼和訪客代碼格式可以不同,但在一些實施例中可以相同。例如,二進制翻譯器1810可以讀取x86格式化的指令并且產(chǎn)生x86格式化的指令。得到的指令在執(zhí)行時既可以實現(xiàn)輸入指令的原始功能性也保存執(zhí)行跟蹤(performance-tracing)信息。訪客代碼在翻譯前可以經(jīng)受代碼修改。在修改訪客代碼時,修改的效果應(yīng)如同訪客代碼被適合的硬件處理器執(zhí)行一樣等同。二進制翻譯器1810從而可以運行修改的訪客代碼,如同它被硬件處理器運行一樣。二進制翻譯器1810可以讀取訪客代碼中的指令并且生成主機指令。如上文論述的,這些生成的主機指令可以稱為翻譯并且翻譯代碼的原子區(qū)可以稱為事務(wù)。由例如處理器1802或解釋器的翻譯執(zhí)行可以包括如同執(zhí)行原始訪客指令一樣相同的效果。處理器1802可以包括前端1806,用于從存儲器或指令流1804提取指令。指令流1804的內(nèi)容可以由二進制翻譯器1810翻譯或可以由二進制翻譯器1810產(chǎn)生。指令可以由解碼器1808解碼。執(zhí)行單元1820中的每個可以在由調(diào)度器/分配器1810分配、調(diào)度和調(diào)派指令時執(zhí)行它們。另外,核或處理器1802可以包括引退單元1822連同高級存儲緩沖器(ssb)1826和引退排序緩沖器(rob)1824以用于處理指令的引退和提交。處理器1802的一個或多個部分可以組織為一個或多個核或非核區(qū)。可以標(biāo)記由處理器1802待執(zhí)行的各種操作以在引退時執(zhí)行。這樣的標(biāo)記可以比其他執(zhí)行更慢但可以確保排序性質(zhì)。此外,一些操作可以使ssb1826停止和釋放。在存儲操作的執(zhí)行和引退后,可以請求高級存儲緩沖器的釋放。這樣的高級存儲可以包括已被執(zhí)行、引退但還未提交給數(shù)據(jù)高速緩存或處理器1802的其他方面的存儲操作??梢詮募虞d和存儲方面描述系統(tǒng)1800的操作。然而,系統(tǒng)1800可以相似地處理其他指令,其包括加載或存儲到存儲器的若干存儲器操作數(shù)。此外,系統(tǒng)1800可以處理可能每操作數(shù)觸及多個tlb條目的操作。在操作中,一系列指令可以由二進制翻譯器1810翻譯以供執(zhí)行單元1820執(zhí)行。該系列指令可以包括指令的原子區(qū)中的那些。所得的事務(wù)可以對一個或多個執(zhí)行單元的亂序執(zhí)行而設(shè)置。在事務(wù)中的指令包括存儲器訪問(例如加載、存儲或使用這些中的一個的指令)時,執(zhí)行單元1820可以請求與加載源或目的地或存儲目的地關(guān)聯(lián)的地址。該地址請求可以由存儲器子系統(tǒng)做出,該存儲器子系統(tǒng)可以包括高速緩存層級(未示出)。請求可以由mmu1828處理。mmu1828可以首先確定在本地tlb1832和頁表的高速緩存版本(cpt1832)中是否存在如由指令請求的邏輯地址到如駐存在存儲器1812內(nèi)的物理地址的映射。如果是這樣的話,mmu1812可以翻譯地址并且做出存儲器子系統(tǒng)的部分的請求。如果否的話,可已經(jīng)出現(xiàn)tlb未命中并且mmu1828可以請求由pmh1834處理未命中。pmh可以通過各種級高速緩存和存儲器1812執(zhí)行頁表游走來獲得對于請求的關(guān)聯(lián)頁表1816的內(nèi)容。頁表游走所觸及或修改的每個頁表地址可以通過根據(jù)情況設(shè)置.a或.d位來標(biāo)記。頁表映射可以返回mmu1828。新的頁表可以提供給tlb1830。事務(wù)可以重新開始。在一個實施例中,pmh1834可以采用在頁表游走期間被修改或訪問且其.a或.d位被設(shè)置的頁表的指示填充監(jiān)視器單元1836。在另一個實施例中,在后續(xù)存儲器指令執(zhí)行期間,mmu1828可以檢查監(jiān)視器單元1836來確定指定地址是否與在pmh1834的頁表游走期間使它的頁表的.a或.d位設(shè)置所關(guān)聯(lián)。如果是這樣的話,監(jiān)視器單元1836可以返回存在所請求的地址這一指示,并且從而關(guān)聯(lián)的頁表的.a或.d位不干凈。在一個實施例中,mmu1828或監(jiān)視器單元1836可以基于該確定終止事務(wù)的執(zhí)行。事務(wù)可以使用有序執(zhí)行而不是亂序執(zhí)行來重新執(zhí)行。如果指定地址沒有在pmh1834的頁表游走期間設(shè)置它的頁表的.a或.d位,則這樣的位可以是干凈的,并且地址可能不在監(jiān)視器單元1836中。在另一個實施例中,mmu1828或監(jiān)視器單元1836可以基于該確定允許進一步執(zhí)行事務(wù)。在一個實施例中,在pmh1834試圖在推測性頁表游走(對于已翻譯的事務(wù))期間設(shè)置.a或.d位,可以標(biāo)記關(guān)聯(lián)的指令以在引退時執(zhí)行。此外,如果持有.a或.d位的存儲器類型是不可高速緩存的,可以中止事務(wù)并且相反使用有序執(zhí)行。系統(tǒng)1800可以使用多級頁表,在該情況下在頁表游走期間可以讀取若干頁表來對tlb1830構(gòu)建最后的條目。改變頁表的存儲可以改變頁表游走的操作。從而,對于不同游走的.a和.d位和關(guān)聯(lián)的映射可以根據(jù)何時出現(xiàn)存儲而相對變化。因此,在一個實施例中,在頁表游走中讀取的所有位點可以添加到監(jiān)視器單元1836,即使對指定位點未設(shè)置.a或.d位也如此。這可以防止任何重排序存儲更新頁表以及改變游走。單個事務(wù)可以產(chǎn)生若干頁表游走,其中設(shè)置.a或.d位。通過設(shè)置這些位,可以出現(xiàn)相同結(jié)果而不管游走出現(xiàn)(并且從而設(shè)置位)的順序。此外,事務(wù)內(nèi)的執(zhí)行和產(chǎn)生事務(wù)的區(qū)的原子性質(zhì)可以確保存儲器1802中沒有其他核可以觀察其中重排序的操作。另外,監(jiān)視器單元1836可以確保事務(wù)內(nèi)的存儲沒有改變影響實際使用哪些頁表位點的位點。如上文論述的,在頁表游走后將新的條目插入監(jiān)視器單元1836時,事務(wù)被中止并且重新開始。事務(wù)可以重新開始來保證監(jiān)視器單元1836將所監(jiān)視的位點與事務(wù)觸及的所有地址(其包括對于在促成.a和.d位的設(shè)置的操作之前在事務(wù)中出現(xiàn)的加載和存儲的地址)相比較。系統(tǒng)1800從而可以將設(shè)置的.a和.d位與“較早的”加載或存儲相比較。這些較早的加載和存儲可已經(jīng)被二進制翻譯器1810重排序但實際上在原始代碼指令是“較晚”的。在一個實施例中,中止或終止事務(wù)也可以丟棄.a和.d更新。從而,在再遇設(shè)置這些位的操作時,監(jiān)視器單元1836可以證實設(shè)置的每個.a和.d位已經(jīng)在監(jiān)視器單元1836中存在。如果它們已經(jīng)存在,則可以允許設(shè)置繼續(xù)進行??晌刺砑有碌谋O(jiān)視器單元1836。在遇到“新的”地址(例如另一個.a或.d位設(shè)置未命中,或頁表自設(shè)置監(jiān)視器單元1836以來已改變)時。地址可以添加到監(jiān)視器單元1836并且事務(wù)重新開始。在一個實施例中,終止和重新開始操作可受到限制,而不是允許其永遠(yuǎn)循環(huán)。在向監(jiān)視器單元1836添加條目時可需要終止和重新開始,但這樣的操作也消耗監(jiān)視器單元1836中的空間。從而,事務(wù)可以完成或它將耗盡監(jiān)視器單元1836中的空間,從而中止事務(wù)以使用不同方法。因此,保證執(zhí)行中的正向進程,其中事務(wù)具有設(shè)置.a和.d位的若干存儲器操作,以及其中在事務(wù)中,其中頁表在事務(wù)重試之間改變。tlb1830中的條目可以是推測性的。如果完成事務(wù),其中的推測性條目是有效的,但如果事務(wù)中止(其包括與監(jiān)視器無關(guān)的中止)則可以是無效的。從而,如果tlb1830支持推測性條目(在事務(wù)中止時丟棄),在一個實施例中,條目可以加載到tlb1830內(nèi),標(biāo)記為推測性的。如果tlb1830不支持推測性條目,條目應(yīng)由存儲器操作形成和消耗,但可能不輸入tlb1830。在相同事務(wù)中的若干操作使用相同映射時,每次可能重建映射。相同事務(wù)的后來使用未設(shè)置新的位,并且從而未導(dǎo)致事務(wù)中止和重新開始。從頁表游走的重新游走離開可以通過pmh1834的特定設(shè)計而加速。事務(wù)提交可以提交推測性.a和.d位更新。在事務(wù)提交時,ssb1826可能被釋放來確保排序。例如,假設(shè)訪客順序是并且ldz隱式設(shè)置.a位。二進制翻譯器1810可以將這些重排序成如果ssb1826未被釋放,則.a位的設(shè)置可以在y之前達到全局順序(go)。使ssb1826釋放可以確保在事務(wù)提交之前所有存儲是go并且因此原子地表現(xiàn)為代碼的其他部分。重排序從而可以不可見??梢圆扇∵@些步驟以遵循.a和.d位排序規(guī)則的特定集。其他處理器和系統(tǒng)可以包括不同的排序規(guī)則,其可以允許優(yōu)化或施加可以考慮另外的限制。例如,容忍更富積極性的tlb1830條目預(yù)提取的排序規(guī)則還可以減少監(jiān)視器中所需要的條目的數(shù)量。此外,這些步驟可以假設(shè)事務(wù)中的主機操作未提供關(guān)于原始訪客順序的信息。向例如mmu1828、pmh1834和監(jiān)視器單元1836等部件提供訪客排序信息,這可以由于其他原因而是有利的。如果這樣的數(shù)據(jù)在.a和.d位的設(shè)置期間可用,數(shù)據(jù)可以用于跳過對一些指令的監(jiān)視。在一個實施例中,在跨.a或.d位設(shè)置未對負(fù)載或加載重排序時可以跳過監(jiān)視,即使在事務(wù)中的其他加載和存儲關(guān)于彼此重排序時也如此。另外,步驟描述為單個事務(wù)范圍內(nèi)的示例。二進制翻譯器1810可以跨事務(wù)進行存儲器操作推測。例如,加載較早在循環(huán)中并且從而在較早的事務(wù)中可以被“升起”一個或多個迭代。訪客存儲器模型可能阻止推測性地設(shè)置.a和.d位,如果它們設(shè)置.a或.d位,這進而阻止執(zhí)行這樣的“升起”加載。系統(tǒng)1800可以允許.a和.d位的翻譯中設(shè)置。此外,系統(tǒng)1800可以包括用于指示何時跨事務(wù)推測存儲器操作并且從而將需要中止的機構(gòu)。在一個實施例中,二進制翻譯器1810可以將特定存儲器操作標(biāo)記為“推測的”。如果推測的操作試圖設(shè)置.a或.d位,mmu1828(或系統(tǒng)1800的另一個適合的部分)可以中止它們。在另一個實施例中,二進制翻譯器1810可以對事務(wù)標(biāo)記跨事務(wù)已經(jīng)推測至少一個存儲器操作。如果存儲器操作試圖設(shè)置.a或.d位,mmu1828(或另一個適合的機構(gòu))可以中止這樣的存儲器操作。無論是否跨事務(wù)推測特定操作,可以進行這樣的終止。如上文論述的,鑒于設(shè)置的.a或.d位評估存儲器指令的各種步驟可以由系統(tǒng)1800的任何適合的部分實現(xiàn)。例如,這些可以由pmu1434、二進制翻譯器1810、mmu1828或監(jiān)視器單元1838設(shè)置。這些的功能性可以在必要時組合。此外,這些可以在硬件或硬件和內(nèi)置軟件的組合中實現(xiàn)。圖19是根據(jù)本公開的實施例的監(jiān)視器單元1836和它的操作的更詳細(xì)圖示。如上文論述的,頁表的訪問可以通過首先查看頁表是否高速緩存在tlb1830中而進行。如果存在未命中,則該未命中可以由pmh1834處理,該pmh1834可以執(zhí)行頁表游走來獲得正確映射。在頁表游走期間可以注意設(shè)置的每個.a和.d位,以及其中使用的所有地址。這些可以插入監(jiān)視器單元1836。監(jiān)視器單元1836可以采用任何適合的方式實現(xiàn),例如用內(nèi)容可尋址存儲器。監(jiān)視器單元1836可以是名義上關(guān)聯(lián)的。此外,監(jiān)視器單元1836可以由任何適合的數(shù)據(jù)結(jié)構(gòu)(例如哈希表或布隆過濾器(bloomfilter))實現(xiàn),假定該結(jié)構(gòu)實現(xiàn)監(jiān)視器所需要的基本操作。監(jiān)視器單元1836可以需要它從不對新的地址報告“已經(jīng)看到”或“存在”。監(jiān)視器單元1836可以包括地址或地址標(biāo)簽的索引。此外,它對于每個條目可以包括指示地址是否“存在”的位,這意指地址由pmh1834填充,如與頁表游走關(guān)聯(lián)。監(jiān)視器單元1836的所有值初始可以設(shè)置成無效。在由pmh1834或另一個元件輸入游走地址時,這些地址可以標(biāo)記為有效。在例如存儲或加載等后續(xù)存儲器操作時,可以訪問監(jiān)視器單元1836來查看在頁表游走期間是否遇到和標(biāo)記該地址。如果地址與監(jiān)視器單元1836中的條目匹配,它可以返回“存在”來指示找到地址。事務(wù)從而可以被中止并且采用有序執(zhí)行方式重新開始。如果地址與監(jiān)視器單元1836中的任何有效條目不匹配,它可以返回“不存在”來指示未找到地址。可以允許指令執(zhí)行。圖20圖示根據(jù)本公開的實施例對于二進制翻譯的翻譯中位設(shè)置的方法2000的示例實施例。在一個實施例中,方法2000可以用系統(tǒng)1800執(zhí)行。方法2000可以由例如pmh1834、監(jiān)視器單元1836、二進制翻譯器1819或mmu1828等元件執(zhí)行。方法2000可以在任何適合的點開始并且可以按照任何適合的順序執(zhí)行。在一個實施例中,方法2000可以在2005開始。在2005,可以接收待執(zhí)行的指令的原子區(qū)。指令區(qū)可以由二進制翻譯器翻譯。此外,指令可以重排序??梢赃M入翻譯的執(zhí)行。在一個實施例中,監(jiān)視器可以被清除。在2010,可以確定在由翻譯的原子區(qū)產(chǎn)生的事務(wù)中是否有待執(zhí)行的額外指令或剩余工作。如果是這樣的話,方法2000可以前進到2015。否則,方法2000可以前進到2065。在2015,可以選擇加載或存儲指令或操作(其包括或暗指這樣的指令或它的等同物)以供執(zhí)行。在一個實施例中,可以確定對于指令的目的地地址是否包括在監(jiān)視器單元中,如之前識別為與頁表游走關(guān)聯(lián)的。如果是這樣的話,方法2000可以前進到2060。否則,方法2000可以前進到2020。在2020,可以確定對于地址的映射(或單獨接收的另一個指令的地址的映射)在tlb中的頁表中是否可用。如果存在tlb未命中,方法2000可以前進到2025。否則,方法2000可以前進到2030。在2025,可以執(zhí)行指令。執(zhí)行可以推進到下一個指令。方法2000可以前進到2010。在2030,可以執(zhí)行頁表游走來獲得正確頁表。在一個實施例中,可以確定頁表游走是否完全在可高速緩存存儲器內(nèi)進行,或是否牽涉不可高速緩存存儲器。如果頁表游走完全在可高速緩存存儲器內(nèi)進行,方法2000可以前進到2035。否則,方法2000可以前進到2060。在2035,在一個實施例中,可以確定在頁表游走期間是否設(shè)置任何.a或.d位。如果否的話,方法2000可以前進到2040。否則,方法2000可以前進到2045。在2045,在一個實施例中,可以確定是否需要向監(jiān)視器單元添加任何新的地址。這些新的地址可以包括設(shè)置的.a或.d位的那些的地址。此外,新的地址可以包括在頁表游走時遇到的地址。如果任何地址不在監(jiān)視器單元內(nèi),方法2000可以前進到2050。否則,方法2000可以前進到2040。在2040,tlb可以加載有新近找到的頁表??梢灾匦麻_始指令的執(zhí)行。方法2000可以前進到2010。在2050,在一個實施例中,可以確定監(jiān)視器單元是否滿或溢出。如果是這樣的話,方法2000可以前進到2060。否則,方法2000可以前進到2055。在2055,在一個實施例中,可以確定翻譯中位設(shè)置將對目前的事務(wù)正確運作。在另一個實施例中,另外不在監(jiān)視器單元內(nèi)的新的地址可以添加到監(jiān)視器單元并且設(shè)置為有效。tlb可以加載有新近找到的頁表。事務(wù)的執(zhí)行可以被中止并且事務(wù)執(zhí)行重新開始。方法2000可以前進到2010。在2060,在一個實施例中,可以確定翻譯中位設(shè)置將未對目前的事務(wù)正確運作。如需要的話,tlb可以加載有新近找到的頁表。事務(wù)的執(zhí)行可以被中止。事務(wù)可以例如有序執(zhí)行。在2065因為對于事務(wù)不需要執(zhí)行額外工作,可以確定在事務(wù)執(zhí)行期間是否設(shè)置任何.a或.d位。如果是這樣的話,關(guān)聯(lián)指令可能已經(jīng)設(shè)置成在引退時執(zhí)行,并且因此在2070處可以使ssb釋放。在2075,可以提交事務(wù)。方法2000可以終止或可選地重復(fù)。盡管上文描述的方法圖示特定元件的操作,方法可以由任何適合組合或類型的元件執(zhí)行。例如,上文的方法可以由圖1-19中圖示的元件或可操作成實現(xiàn)方法的任何其他系統(tǒng)實現(xiàn)。如此,對于方法的優(yōu)選初始化點和構(gòu)成方法的要素的順序可以取決于選擇的實現(xiàn)。在一些實施例中,一些要素可以可選地被省略、重組、重復(fù)或組合。此外,方法中的一些或全部可以完全或部分彼此并行執(zhí)行。本文公開的機構(gòu)的實施例可以在硬件、軟件、固件或這樣的實現(xiàn)方式的組合中實現(xiàn)。本公開的實施例可實現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計算機程序或程序代碼,這些可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(其包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備和至少一個輸出設(shè)備。程序代碼可應(yīng)用于輸入指令來執(zhí)行本文描述的功能并且生成輸出信息。該輸出信息可采用已知方式應(yīng)用于一個或多個輸出設(shè)備。為了該申請,處理系統(tǒng)包括具有處理器的任何系統(tǒng);例如,數(shù)字信號處理器(dsp)、微控制器、專用集成電路(asic)或微處理器。程序代碼可以采用高級程序式或面向?qū)ο蟮木幊陶Z言實現(xiàn)來與處理系統(tǒng)通信。根據(jù)期望,程序代碼還可以采用匯編或機器語言實現(xiàn)。實際上,本文描述的機構(gòu)在范圍上不限于任何特定編程語言。在任何情況下,語言可以是編譯或解釋的語言。至少一個實施例的一個或多個方面可以由存儲在機器可讀介質(zhì)上的代表性指令來實現(xiàn),該代表性指令代表處理器內(nèi)的各種邏輯,其在被機器讀取時促使該機器裝配邏輯來執(zhí)行本文描述的技術(shù)。這樣的表示(稱為“ip核”)可以存儲在有形的機器可讀介質(zhì)上并且供應(yīng)給各種客戶或制造設(shè)施來裝入實際上制作邏輯或處理器的裝配機器。這樣的機器可讀存儲介質(zhì)可以無限制地包括由機器或設(shè)備制造或形成的物品的非暫時性有形設(shè)置,其包括存儲介質(zhì),例如硬盤、任何其他類型的盤,包括軟盤、光盤、壓縮盤只讀存儲器(cd-rom)、壓縮盤可重寫(cd-rw)和磁光盤;半導(dǎo)體器件,例如只讀存儲器(rom)、隨機存取存儲器(ram)(例如動態(tài)隨機存取存儲器(dram)、靜態(tài)隨機存取存儲器(sram))、可擦除可編程只讀存儲器(eprom)、閃速存儲器、電可擦除可編程只讀存儲器(eeprom)、磁或光卡,或適合于存儲電子指令的任何其他類型的介質(zhì)。因此,本公開的實施例還可以包括非暫時性有形機器可讀介質(zhì),其包含指令或包含設(shè)計數(shù)據(jù),例如硬件描述語言(hdl),其限定本文描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征。這樣的實施例還可以稱作程序產(chǎn)品。在一些情況下,指令轉(zhuǎn)換器可用于將來自源指令集的指令轉(zhuǎn)換成目標(biāo)指令集。例如,指令轉(zhuǎn)換器可將指令翻譯(例如,使用靜態(tài)二進制翻譯、動態(tài)二進制翻譯,其包括動態(tài)編譯)、變型、仿真或用別的方式轉(zhuǎn)換成要由核處理的一個或多個其他指令。指令轉(zhuǎn)換器可以在軟件、硬件、固件或其組合中實現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、離開處理器或部分在處理器上并且部分離開處理器。從而,公開根據(jù)至少一個實施例的用于執(zhí)行一個或多個指令的技術(shù)。盡管某些示范性實施例已經(jīng)在附圖中描述和示出,要理解這樣的實施例僅僅說明而不限制其他實施例,并且這樣的實施例不限于示出和描述的特定構(gòu)造和設(shè)置,因為在本領(lǐng)域內(nèi)技術(shù)人員研究該公開時可想到各種其他修改。在例如這樣的
技術(shù)領(lǐng)域:
:中,增長是快速的并且不容易預(yù)見進一步發(fā)展,公開的實施例可以從設(shè)置和細(xì)節(jié)方面能容易修改,如通過實現(xiàn)技術(shù)發(fā)展而促進的,這不偏離本公開的原理或附上的權(quán)利要求的范圍。當(dāng)前第1頁12當(dāng)前第1頁12