欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

持久性提交處理器、方法、系統(tǒng)和指令與流程

文檔序號(hào):12362712閱讀:291來源:國知局
持久性提交處理器、方法、系統(tǒng)和指令與流程

本文描述的實(shí)施例一般地涉及處理器。特別地,本文描述的實(shí)施例一般地涉及處理器中的存儲(chǔ)操作。



背景技術(shù):

處理器是通常使用的計(jì)算機(jī)系統(tǒng)以及具有用于存儲(chǔ)數(shù)據(jù)的主存儲(chǔ)器的其他電子設(shè)備。處理器可以執(zhí)行指令以訪問主存儲(chǔ)器中的數(shù)據(jù)。例如,處理器可以執(zhí)行加載指令以從主存儲(chǔ)器加載或讀取數(shù)據(jù)和/或執(zhí)行存儲(chǔ)指令以寫入或以其他方式將數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器。

在計(jì)算機(jī)系統(tǒng)和其他電子設(shè)備中的一個(gè)挑戰(zhàn)是電力故障、系統(tǒng)崩潰以及其他錯(cuò)誤可能發(fā)生。通常,這樣的錯(cuò)誤導(dǎo)致與存儲(chǔ)指令相關(guān)聯(lián)的數(shù)據(jù)丟失。

附圖說明

本發(fā)明可以通過參考以下描述和附圖來最佳地理解,附圖用于圖示實(shí)施例。在附圖中:

圖1是具有持久性提交指令的實(shí)施例的指令集的處理器的實(shí)施例的框圖。

圖2是其中可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的系統(tǒng)的實(shí)施例的框圖。

圖3是其中可以使用持久性提交劃界(demarcate)指令和持久性提交阻止(block)指令的實(shí)施例的方法的一個(gè)可能的示例的塊流程圖。

圖4是操作為實(shí)行持久性提交劃界指令的實(shí)施例以及持久性提交阻止指令的實(shí)施例的處理器的實(shí)施例的框圖。

圖5是操作為使用附加到存儲(chǔ)器控制器處的到達(dá)的存儲(chǔ)操作的單調(diào)增加的值以確定劃界值的處理器的示例性實(shí)施例的框圖。

圖6是最大值選擇器的示例性實(shí)施例的框圖。

圖7是操作為用多個(gè)存儲(chǔ)器控制器實(shí)行持久性提交阻止指令的處理器的示例性實(shí)施例的框圖。

圖8是用處理器實(shí)行的方法的一個(gè)可能的示例的塊流程圖,其中,持久性提交檢查指令的實(shí)施例可以與持久性提交劃界指令的實(shí)施例和持久性提交阻止指令的實(shí)施例一起使用。

圖9是具有關(guān)于域特定的持久性提交指令的實(shí)施例的指令集的處理器的實(shí)施例的框圖。

圖10A是圖示有序流水線的實(shí)施例和寄存器重命名亂序發(fā)出/執(zhí)行流水線的實(shí)施例的框圖。

圖10B是包括耦合到執(zhí)行引擎單元的前端單元并且二者都耦合到存儲(chǔ)器單元的處理器核的實(shí)施例的框圖。

圖11A是單個(gè)處理器核連同其到管芯上互連網(wǎng)絡(luò)的連接并且具有其2級(jí)(L2)高速緩存的本地子集的實(shí)施例的框圖。

圖11B是圖11A的處理器核的部分的放大視圖的實(shí)施例的框圖。

圖12是可以具有多于一個(gè)核、可以具有集成存儲(chǔ)器控制器并且可以具有集成圖形的處理器的實(shí)施例的框圖。

圖13是計(jì)算機(jī)架構(gòu)的第一實(shí)施例的框圖。

圖14是計(jì)算機(jī)架構(gòu)的第二實(shí)施例的框圖。

圖15是計(jì)算機(jī)結(jié)構(gòu)的第三實(shí)施例的框圖。

圖16是計(jì)算機(jī)架構(gòu)的第四實(shí)施例的框圖。

圖17是根據(jù)本發(fā)明的實(shí)施例的用于將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的軟件指令轉(zhuǎn)換器的使用的框圖。

具體實(shí)施方式

本文公開了指令、用于執(zhí)行指令的處理器、在處理或執(zhí)行指令時(shí)由處理器實(shí)行的方法以及包含用于處理或執(zhí)行指令的一個(gè)或多個(gè)處理器的系統(tǒng)。在下面的描述中,闡述了許多具體細(xì)節(jié)(例如,具體指令操作、指令的組合、處理器配置、微架構(gòu)細(xì)節(jié)、操作序列等)。然而,實(shí)施例可??以在沒有這些具體細(xì)節(jié)的情況下被實(shí)踐。在其他實(shí)例中,公知的電路、結(jié)構(gòu)和技術(shù)尚未被詳細(xì)示出以避免混淆對(duì)本說明書的理解。

圖1是處理器100的實(shí)施例的框圖。處理器具有指令集102。指令集包括處理器操作為實(shí)行的指令集。與從被解碼的指令集的指令所得到的微指令、微操作或其他解碼的指令相對(duì),指令集的指令表示被提供給處理器以供執(zhí)行的宏指令或機(jī)器級(jí)指令。

如所示,在一些實(shí)施例中,指令集可以包括持久性提交劃界指令104。持久性提交劃界指令可以指示目的地寄存器或其他目的地存儲(chǔ)位置。在一些實(shí)施例中,持久性提交劃界指令如果被實(shí)行可以操作為使得處理器存儲(chǔ)劃界值,該劃界值將在持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但不一定已經(jīng)被持久存儲(chǔ)的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作,與在持久性提交劃界指令被實(shí)行時(shí)還沒有已經(jīng)被至少一個(gè)或多個(gè)處理器實(shí)行或者被接受到存儲(chǔ)器的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作相劃界或區(qū)分。

如所示,在一些實(shí)施例中,指令集可以包括持久性提交阻止指令106。持久性提交阻止指令可以指示用于存儲(chǔ)先前持久性提交劃界指令的劃界值的寄存器或其他源存儲(chǔ)位置。在一些實(shí)施例中,持久性提交阻止指令如果被實(shí)行可以操作為使得處理器確保,在執(zhí)行持久性提交阻止指令之后在至少任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前,由劃界值所劃界的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作(例如,當(dāng)先前對(duì)應(yīng)持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器,但是在先前對(duì)應(yīng)持久性提交劃界指令被實(shí)行時(shí)不一定已經(jīng)被持久存儲(chǔ))已經(jīng)被持久存儲(chǔ)。

如所示,在一些實(shí)施例中,指令集可以可選地包括持久性提交檢查指令108,但是這不是要求的。在一些實(shí)施例中,持久性提交檢查指令可以指示目的地存儲(chǔ)位置。在一些實(shí)施例中,持久性提交檢查指令如果被實(shí)行可以操作為使得處理器將值存儲(chǔ)在目的地存儲(chǔ)位置中。在一些實(shí)施例中,該值可以指示由先前持久性提交劃界指令所劃界的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作(例如,在先前對(duì)應(yīng)持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但是在先前對(duì)應(yīng)持久性提交劃界指令被實(shí)行時(shí)不一定已經(jīng)被持久存儲(chǔ)的存儲(chǔ)到持久性存儲(chǔ)器操作)是否現(xiàn)在已經(jīng)被持久存儲(chǔ)。在一些實(shí)施例中,所存儲(chǔ)的值可以指示持久存儲(chǔ)所有這些劃界的存儲(chǔ)到持久性存儲(chǔ)器操作的進(jìn)展水平。在一些實(shí)施例中,這樣的值或狀態(tài)不需要一定適用于最近的劃界值,而是可以適用于各種在先劃界值。在其他實(shí)施例中,指令可以可選地具有用于提供在目的地中存儲(chǔ)的值或狀態(tài)將適用于的特定劃界值的源寄存器或操作數(shù)。

在其他實(shí)施例中,指令集可以可選地包括所圖示指令的子集(例如,如這些指令中的任何單個(gè)指令那么少)。在又其他實(shí)施例中,指令集可以可選地包括其他指令或完全不同的指令(例如,以下結(jié)合圖9討論的指令)。

圖2是其中可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的系統(tǒng)210的實(shí)施例的框圖。系統(tǒng)包括處理器200和與處理器耦合的系統(tǒng)存儲(chǔ)器226。在各種實(shí)施例中,系統(tǒng)可以表示臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)、平板計(jì)算機(jī)、上網(wǎng)本、智能電話、蜂窩電話、服務(wù)器、網(wǎng)絡(luò)設(shè)備(例如,路由器,交換機(jī)等)、智能電視、上網(wǎng)機(jī)、機(jī)頂盒、視頻游戲控制器、媒體播放器或其他類型的電子設(shè)備。

處理器包括至少一個(gè)邏輯處理器216。為簡單起見,僅示出了單個(gè)邏輯處理器,但是可以理解,處理器可以可選地包括其他邏輯處理器。適當(dāng)邏輯處理器的示例包括但不限于,核、硬件線程、線程單元、線程槽以及其他邏輯處理器。邏輯處理器中的每一個(gè)可以包括用于處理指令(例如,存儲(chǔ)指令、算術(shù)指令、邏輯指令等)的指令執(zhí)行流水線。通過示例的方式,每個(gè)流水線可以包括用于取出指令的指令取出單元、用于解碼指令的指令解碼單元、用于執(zhí)行指令的執(zhí)行單元以及其他流水線組件。本發(fā)明的范圍不限于任何已知類型的流水線。

邏輯處理器與一個(gè)或多個(gè)高速緩存218耦合。在一些實(shí)施例中,一個(gè)或多個(gè)高速緩存可以包括高速緩存層級(jí),高速緩存層級(jí)包括在不同高速緩存級(jí)的高速緩存。不同的高速緩存級(jí)可能在其與邏輯處理器和/或系統(tǒng)存儲(chǔ)器的相對(duì)接近度上是不同的。作為一個(gè)說明性示例,邏輯處理器可以具有專用第一級(jí)或1級(jí)(L1)高速緩存、以及共享的第二級(jí)或2級(jí)(L2)高速緩存。作為另一說明性示例,邏輯處理器可以具有專用L1高速緩存和專用L2高速緩存、以及共享的第三級(jí)或3級(jí)(L3)??高速緩存。本發(fā)明的范圍不限于任何已知類型的高速緩存層級(jí)。此外,在其他實(shí)施例中,處理器可以具有單個(gè)高速緩存級(jí),而不是高速緩存層級(jí)。

一個(gè)或多個(gè)高速緩存218可以用于存儲(chǔ)期望用于特定實(shí)現(xiàn)的指令和/或數(shù)據(jù)。高速緩存可以表示比系統(tǒng)存儲(chǔ)器226相對(duì)更小和更快訪問的儲(chǔ)存器。此外,高速緩存可以比系統(tǒng)存儲(chǔ)器相對(duì)更接近指令流水線。高速緩存可以用于高速緩存或臨時(shí)存儲(chǔ)已經(jīng)從系統(tǒng)存儲(chǔ)器帶入處理器的數(shù)據(jù),以便于提供對(duì)數(shù)據(jù)的更快的后續(xù)訪問。代表性地,對(duì)高速緩存中的數(shù)據(jù)的訪問通常不會(huì)花費(fèi)多于幾個(gè)處理器時(shí)鐘周期,而對(duì)系統(tǒng)存儲(chǔ)器中的數(shù)據(jù)的訪問通常可能花費(fèi)多得多的周期。當(dāng)處理器想要從系統(tǒng)存儲(chǔ)器讀取數(shù)據(jù)時(shí),處理器可以首先檢查以查看數(shù)據(jù)的副本是否已經(jīng)被存儲(chǔ)在高速緩存中。如果在高速緩存中發(fā)現(xiàn)該數(shù)據(jù),則該處理器可以從高速緩存訪問數(shù)據(jù),這通常比如果代替地從系統(tǒng)存儲(chǔ)器訪問數(shù)據(jù)更快。類似地,當(dāng)處理器想要將數(shù)據(jù)寫入系統(tǒng)存儲(chǔ)器時(shí),數(shù)據(jù)可能經(jīng)常首先被存儲(chǔ)在高速緩存中。

處理器可以實(shí)現(xiàn)高速緩存一致性機(jī)制或協(xié)議,以幫助確保存儲(chǔ)在一個(gè)或多個(gè)高速緩存218中的數(shù)據(jù)在適當(dāng)時(shí)被一致地管理和存儲(chǔ)到系統(tǒng)存儲(chǔ)器226,使得系統(tǒng)中的所有相關(guān)實(shí)體一致地查看正確的和當(dāng)前版本的數(shù)據(jù)。適當(dāng)?shù)母咚倬彺嬉恢滦詤f(xié)議的示例包括但不限于,MESI、MOSI、MOESI等。MESI協(xié)議包括由兩個(gè)MESI位指示的四個(gè)狀態(tài),即已修改(M)、獨(dú)占(E)、共享(S)和無效(I)。MOSI協(xié)議利用擁有(O)狀態(tài)來代替獨(dú)占(E)狀態(tài)。MOESI協(xié)議利用獨(dú)占(E)和擁有(O)狀態(tài)二者。這樣的高速緩存一致性協(xié)議沒有考慮數(shù)據(jù)的持久性或耐久性,這將在下面進(jìn)一步討論。

再次參考圖2,處理器具有包括存儲(chǔ)器控制器222的存儲(chǔ)器接口單元220。在一些實(shí)施例中,系統(tǒng)可以僅包括單個(gè)存儲(chǔ)器控??制器。在其他實(shí)施例中,系統(tǒng)可以包括兩個(gè)或更多個(gè)存儲(chǔ)器控制器。為簡單起見,在圖示中僅示出了單個(gè)存儲(chǔ)器控制器。在該實(shí)施例中,存儲(chǔ)器控制器位于處理器上(例如,是管芯上存儲(chǔ)器控制器)。在另一實(shí)施例中,存儲(chǔ)器控制器可以可選地位于處理器外(例如,是在芯片組組件中的管芯外存儲(chǔ)器控制器)。存儲(chǔ)器接口單元和/或存儲(chǔ)器控制器可以操作為與系統(tǒng)存儲(chǔ)器226耦合。例如,該耦合可以通過一個(gè)或多個(gè)總線或其他互連。存儲(chǔ)器控制器具有用于臨時(shí)緩沖被存儲(chǔ)或?qū)懭氲较到y(tǒng)存儲(chǔ)器的數(shù)據(jù)的寫入未決緩沖器。

在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器226可以包括至少一些持久性存儲(chǔ)器228。持久性存儲(chǔ)器可以操作為持久或耐久地存儲(chǔ)數(shù)據(jù)。甚至在電力損失、操作系統(tǒng)故障、系統(tǒng)崩潰、系統(tǒng)重引導(dǎo)等的情況下,持久或耐久地存儲(chǔ)的數(shù)據(jù)也可能不丟失。適當(dāng)形式的持久性存儲(chǔ)器的示例包括但不限于,非易失性存儲(chǔ)器和儲(chǔ)存器、電池支持(或其他電源支持)的易失性存儲(chǔ)器和儲(chǔ)存器等及其組合。通常,當(dāng)在相對(duì)短的時(shí)間段中沒有供應(yīng)電力時(shí),易失性存儲(chǔ)器丟失其存儲(chǔ)的數(shù)據(jù)或內(nèi)容。然而,用電池或其他備用電源支持易失性存儲(chǔ)器可以有助于使易失性存儲(chǔ)器成為持久性存儲(chǔ)器。非易失性存儲(chǔ)器和存儲(chǔ)設(shè)備原生操作為,甚至在沒有供應(yīng)的電力的相對(duì)長的時(shí)段(例如,通常至少一個(gè)星期沒有電力)之后也保持其存儲(chǔ)的數(shù)據(jù)或內(nèi)容。

用于持久性存儲(chǔ)器228的適當(dāng)類型的存儲(chǔ)器和/或儲(chǔ)存器的具體示例包括但不限于,電池支持(或其他電源支持)的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和其他形式的RAM、基于相變存儲(chǔ)器(PCM)的非易失性存儲(chǔ)器或儲(chǔ)存器、憶阻器(例如,與電荷和磁通量鏈相關(guān)的非線性無源二端子電氣組件)、以及自旋轉(zhuǎn)移矩(例如,利用其中可以使用自旋極化電流來修改磁隧道結(jié)或自旋閥中的磁性層的取向的效應(yīng))及其組合,僅舉幾個(gè)示例。作為這些技術(shù)的擴(kuò)展或改進(jìn)或完全不同的技術(shù)的未來開發(fā)的其他技術(shù)也可能是適當(dāng)?shù)?。而且,通常用作在?jì)算機(jī)系統(tǒng)中的輔助支持存儲(chǔ)器的其他形式的非易失性存儲(chǔ)器也可能是適當(dāng)?shù)?。示例包括但不限于,硬盤、磁帶、其他類型的磁存儲(chǔ)設(shè)備、各種類型的只讀存儲(chǔ)器(ROM)、光盤、鐵電RAM(F-RAM)和磁阻RAM。通常,這樣的形式的存儲(chǔ)器具有有利于上述類型的存儲(chǔ)器的速度或其他特性,但是本發(fā)明的范圍不限于該方面。本發(fā)明的范圍不限于任何特定類型的持久性存儲(chǔ)器。

在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器226可以僅包括持久性存儲(chǔ)器228。在其他實(shí)施例中,系統(tǒng)存儲(chǔ)器可以包括持久性存儲(chǔ)器以及非持久性存儲(chǔ)器(例如,通常用于主或主要存儲(chǔ)器的DRAM或其他類型的存儲(chǔ)器)二者。在一些實(shí)施例中,持久性存儲(chǔ)器可以是處理器可尋址物理地址空間的部分。軟件可能能夠通過實(shí)行加載指令、存儲(chǔ)指令和處理器的指令集的其他指令來訪問持久性存儲(chǔ)器。在一些實(shí)施例中,與僅是頁面/塊尋址的相對(duì),持久性存儲(chǔ)器可以是字節(jié)可尋址的。在一些實(shí)施例中,持久性存儲(chǔ)器可以與處理器存儲(chǔ)器總線直接耦合。在一些實(shí)施例中,對(duì)持久性存儲(chǔ)器的訪問可能經(jīng)歷與傳統(tǒng)主/主要存儲(chǔ)器(例如,DRAM)大致相同的處理器存儲(chǔ)器模型(例如,關(guān)于可高速緩存性、一致性、處理器存儲(chǔ)器排序、存儲(chǔ)器類型等)。

在持久性存儲(chǔ)器228中持久或耐久地存儲(chǔ)數(shù)據(jù)的能力可能對(duì)于某些應(yīng)用和/或?qū)崿F(xiàn)非常有價(jià)值。例如,在特定數(shù)據(jù)庫應(yīng)用和/或數(shù)據(jù)事務(wù)中,不丟失數(shù)據(jù)是非常重要的。然而,確保數(shù)據(jù)被持久或耐久地存儲(chǔ)在持久性存儲(chǔ)器228中可能趨向于對(duì)軟件提出附加挑戰(zhàn)。一方面,處理器可以具有各種中間易失性微架構(gòu)組件和/或儲(chǔ)存器,其中,與存儲(chǔ)或?qū)懭腩愋偷闹噶钕嚓P(guān)聯(lián)的數(shù)據(jù)可以在其過程中被臨時(shí)存儲(chǔ)到持久性存儲(chǔ)器。這樣的易失性組件和/或儲(chǔ)存器的可能的示例包括但不限于,一個(gè)或多個(gè)高速緩存218、存儲(chǔ)器控制器222中的隊(duì)列或緩沖器(例如,寫入未決緩沖器224)、非核和/或互連隊(duì)列或緩沖器、存儲(chǔ)器側(cè)高速緩存等。這樣的易失性組件或儲(chǔ)存器通常無法在電力故障、操作系統(tǒng)故障、系統(tǒng)崩潰、重引導(dǎo)等的情況下保持其數(shù)據(jù)或內(nèi)容。朝向持久性存儲(chǔ)器存儲(chǔ)的數(shù)據(jù)實(shí)際上可能沒有變得持久或耐久,直至其實(shí)際到達(dá)并被存儲(chǔ)在持久性存儲(chǔ)器中(或在中間電力故障保護(hù)的存儲(chǔ)設(shè)備或緩沖器中)。如本文使用的,將數(shù)據(jù)存儲(chǔ)到持久性存儲(chǔ)器包括將數(shù)據(jù)存儲(chǔ)在也是持久或耐久的這樣的中間電力故障保護(hù)的存儲(chǔ)設(shè)備或緩沖器中。結(jié)果,如果在數(shù)據(jù)被存儲(chǔ)在這樣的易失性組件或儲(chǔ)存器中(例如,在存儲(chǔ)器控制器222中的寫入未決緩沖器224中)的同時(shí)發(fā)生電力故障、系統(tǒng)崩潰、操作系統(tǒng)故障或重引導(dǎo),則數(shù)據(jù)通常將丟失,而尚未實(shí)現(xiàn)期望的持久性或耐久性。

如所示,在一些實(shí)施例中,邏輯處理器可以操作為實(shí)行如本文公開的一個(gè)或多個(gè)持久性提交指令204。在一些實(shí)施例中,這些(一個(gè)或多個(gè))持久性提交指令可以用于幫助測(cè)量和控制以其將到持久性存儲(chǔ)器212的存儲(chǔ)(例如,指示與持久性存儲(chǔ)器228相對(duì)應(yīng)的地址范圍的存儲(chǔ)指令)提交到持久性存儲(chǔ)器和/或被持久地存儲(chǔ)的次序。

圖3是用處理器實(shí)行的方法300的一個(gè)可能示例的塊流程圖,其中,可以使用持久性提交劃界指令和持久性提交阻止指令的實(shí)施例。在該圖示中,為了進(jìn)一步說明其中可以使用持久性提交劃界和持久性提交阻止指令的示例性上下文,以虛線示出若干可選塊。這些虛線框的操作是可選的而不是要求的。

在塊331處,可以可選地實(shí)行一個(gè)或多個(gè)在先存儲(chǔ)到持久性存儲(chǔ)器指令。例如,這些指令可以均指示與持久性存儲(chǔ)器(例如,持久性存儲(chǔ)器228)相對(duì)應(yīng)的地址范圍。如前所述,這樣的存儲(chǔ)的數(shù)據(jù)可能不會(huì)立即被存儲(chǔ)在持久性存儲(chǔ)器中或被提交為持久性,而是可以首先被高速緩存在一個(gè)或多個(gè)易失性處理器高速緩存(例如,一個(gè)或多個(gè)高速緩存218)中,并且然后在一些情況下,隨后可以被臨時(shí)存儲(chǔ)在存儲(chǔ)器接口單元中(例如,存儲(chǔ)在存儲(chǔ)器控制器222的寫入未決緩沖器224中)。

在塊332處,存儲(chǔ)可以可選地被防護(hù)(fence)。例如,這可以包括實(shí)行存儲(chǔ)防護(hù)指令,存儲(chǔ)防護(hù)指令操作為使得處理器保證所有舊的存儲(chǔ)(例如,以原始程序次序在存儲(chǔ)防護(hù)指令之前)在所有較新的存儲(chǔ)(如,以原始程序次序在存儲(chǔ)防護(hù)指令之后)之前變得全局可見。

在塊333處,到持久性存儲(chǔ)器的在先存儲(chǔ)(例如,在塊331處實(shí)行的存儲(chǔ))可以被可選地從任何易失性一致性高速緩存(例如,一個(gè)或多個(gè)高速緩存218)被清除(flush)或以其他方式強(qiáng)奪(force)。例如,這可以包括在特定Intel?架構(gòu)兼容的處理器中實(shí)行CLFLUSH或CLFLUSHOPT或CLWB指令。盡管這可以確保從易失性高速緩存強(qiáng)奪數(shù)據(jù),但是這通常沒有確保數(shù)據(jù)實(shí)際上被存儲(chǔ)到持久性存儲(chǔ)器。例如,當(dāng)從高速緩存強(qiáng)奪的數(shù)據(jù)被接受到存儲(chǔ)器,例如推送到或發(fā)布到存儲(chǔ)器接口單元(例如,存儲(chǔ)在存儲(chǔ)器控制器222中的寫入未決緩沖器224)時(shí),CLFLUSH和CLFLUSHOPT或CLWB可以完成。然而,這樣的數(shù)據(jù)并未實(shí)際上變得持久,直至其被存儲(chǔ)在持久性存儲(chǔ)器中(例如,實(shí)際上被存儲(chǔ)在持久性存儲(chǔ)器中,或者被存儲(chǔ)在如本文中使用的被認(rèn)為是持久性存儲(chǔ)器的部分的中間電力故障保護(hù)的緩沖器)。

在塊334處,存儲(chǔ)可能再次可選地被防護(hù)。取決于特定實(shí)現(xiàn)(例如,部分地取決于存儲(chǔ)器排序模型以及指令相對(duì)于彼此如何被排序),可以或可以不需要這樣的防護(hù)。

在塊335處,可以實(shí)行持久性提交劃界指令的實(shí)施例。在一些實(shí)施例中,持久性提交劃界指令在被實(shí)行時(shí)可以操作為使得處理器將劃界值存儲(chǔ)在由持久性提交劃界指令所指示的目的地存儲(chǔ)位置中。在一些實(shí)施例中,劃界值可以將在持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但是不一定已經(jīng)被持久存儲(chǔ)的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作(例如,不一定在至少一個(gè)存儲(chǔ)器控制器處退出)與在持久性提交劃界指令被實(shí)行時(shí)還沒有被接受到存儲(chǔ)器的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作相劃界。例如,在一些實(shí)施例中,劃界值可以將在持久性提交劃界指令被實(shí)行之前的時(shí)間已經(jīng)在一個(gè)或多個(gè)存儲(chǔ)器控制器處接收到的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作(例如,在塊333處從高速緩存中清除的可能在塊331處實(shí)行的存儲(chǔ)中的一些)與在持久性提交劃界指令被實(shí)行之后的時(shí)間要在一個(gè)或多個(gè)存儲(chǔ)器控制器處被接收的至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作(例如,將在塊339處實(shí)行的存儲(chǔ))相劃界。

如下面將進(jìn)一步解釋的,在一些實(shí)施例中,劃界值可以表示單調(diào)增加的值(例如,存儲(chǔ)器控制器的到達(dá)計(jì)數(shù)器的到達(dá)計(jì)數(shù)器值、存儲(chǔ)器控制器的到達(dá)時(shí)鐘或其他計(jì)時(shí)器的到達(dá)時(shí)間值)、或其他定界(delimitation)、輪廓(delineation)、分界線(divining line)或其他指示,其操作以將在持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但是不一定已經(jīng)被持久存儲(chǔ)的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作(例如,其可能仍然處于寫入未決緩沖器224中)與在持久性提交劃界指令被實(shí)行時(shí)還沒有已經(jīng)被接受到存儲(chǔ)器的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作相區(qū)分和/或分離和/或區(qū)別。

在不同實(shí)施例中,存儲(chǔ)到存儲(chǔ)器操作可以以各種不同的方式被接受到存儲(chǔ)器。在一些實(shí)施例中,如果其被存儲(chǔ)在寫入未決緩沖器(例如,寫入未決緩沖器224)中或以其他方式被存儲(chǔ)在存儲(chǔ)器控制器和/或存儲(chǔ)器接口單元中,則存儲(chǔ)操作可被接受到存儲(chǔ)器。在一些實(shí)施例中,如果它們是到回寫存儲(chǔ)器的非臨時(shí)存儲(chǔ)或者是到變得全局可見的不可高速緩存、寫入組合和通寫存儲(chǔ)器的存儲(chǔ),則存儲(chǔ)操作可被接受到存儲(chǔ)器。在一些實(shí)施例中,如果針對(duì)高速緩存行實(shí)行作為到回寫存儲(chǔ)器的先前存儲(chǔ)的高速緩存行清除指令(例如,CLFLUSH、CLFLUSHOPT或CLWB指令)變得全局可見,則先前存儲(chǔ)操作可被接受到存儲(chǔ)器。

在塊335處實(shí)行持久性提交劃界指令之后并且在塊337處實(shí)行持久性提交阻止指令之前,在塊336處可以可選地實(shí)行非相關(guān)(non-dependent)工作。術(shù)語“非相關(guān)”工作是指不包括取決于持久性提交劃界指令和/或劃界值所應(yīng)用于的存儲(chǔ)的指令的可以被實(shí)行的工作、代碼或任何指令集。例如,非相關(guān)工作可以包括僅訪問與在持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器的所有存儲(chǔ)不同的存儲(chǔ)器位置的指令。概念上,軟件可以實(shí)行其知道其可以在不產(chǎn)生狀態(tài)的錯(cuò)誤的或不正確的修改的情況下進(jìn)行的任何工作,包括軟件知道其影響的工作,它可以標(biāo)記為暫時(shí)或推測(cè)的直至稍后通過來自軟件的完成動(dòng)作被確認(rèn)。

在塊337處,可以實(shí)行持久性提交阻止指令的實(shí)施例。在一些實(shí)施例中,持久性提交阻止指令可以指示源存儲(chǔ)位置,其可以具有可能是或至少等于由持久性提交劃界指令所獲得或存儲(chǔ)的劃界值的值。在一些實(shí)施例中,持久性提交阻止指令在被實(shí)行時(shí)可以操作為使得處理器確保在執(zhí)行持久性提交阻止指令之后在至少任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前由劃界值所劃界的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作(例如,其不一定已經(jīng)退出或離開一個(gè)或多個(gè)存儲(chǔ)器控制器的寫入未決緩沖器224)已經(jīng)被持久存儲(chǔ)。例如,持久性提交阻止指令在被實(shí)行時(shí)可以操作為使得處理器確保在執(zhí)行持久性提交阻止指令之后在至少任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前,在先前對(duì)應(yīng)持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但是在先前對(duì)應(yīng)持久性提交劃界指令被實(shí)行時(shí)不一定已經(jīng)被持久存儲(chǔ)(例如,不一定已經(jīng)退出或離開一個(gè)或多個(gè)存儲(chǔ)器控制器)的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)。在一些實(shí)施例中,持久性提交阻止指令在被實(shí)行時(shí)可以操作為使得處理器確保在持久性提交阻止指令退役或以其他方式提交之前至少所有這樣劃界的存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)。

在一些實(shí)施例中,持久性提交阻止指令的確保或保證關(guān)于數(shù)據(jù)的持久性或耐久性。這與進(jìn)行關(guān)于非持久性存儲(chǔ)器(例如,傳統(tǒng)主存儲(chǔ)器)的保證是不同的,其中,在電力故障和/或特定其他事件的情況下,數(shù)據(jù)可能丟失。在一些實(shí)施例中,持久性提交阻止指令在被實(shí)行時(shí)可以不直接或主動(dòng)地使處理器將任何數(shù)據(jù)強(qiáng)奪出處理器(例如,可以不具有“清除”操作)。而是,在一些實(shí)施例中,持久性提交阻止指令在被實(shí)行時(shí)可以操作為使得處理器停止或暫停(suspend)實(shí)行至少一個(gè)類型的附加后續(xù)指令,并且監(jiān)視何時(shí)已經(jīng)實(shí)現(xiàn)確保或保證,并且然后允許處理器恢復(fù)實(shí)行至少一個(gè)類型的附加后續(xù)指令。在一些實(shí)施例中,處理器可以僅停止或暫停實(shí)行存儲(chǔ)到持久性存儲(chǔ)器指令。在其他實(shí)施例中,處理器可以停止或暫停實(shí)行存儲(chǔ)到持久性存儲(chǔ)器指令和存儲(chǔ)到非持久性存儲(chǔ)器指令二者。在另外其他實(shí)施例中,處理器可以停止或暫停實(shí)行存儲(chǔ)到持久性存儲(chǔ)器指令、存儲(chǔ)到非持久性存儲(chǔ)器指令以及其他類型的指令(例如,存儲(chǔ)到寄存器指令、所有指令等)。在一些實(shí)施例中,持久性提交阻止指令可以進(jìn)行關(guān)于到持久性存儲(chǔ)器的字節(jié)粒度或高速緩存行粒度(例如,針對(duì)處理器的高速緩存行的高速緩存行大?。┑拇鎯?chǔ)的確保和保證。

在塊338處,存儲(chǔ)可以再次被防護(hù)。取決于特定實(shí)現(xiàn),可以或可以不需要這樣的防護(hù)。

在塊339處,可以向持久性存儲(chǔ)器實(shí)行一個(gè)或多個(gè)在后存儲(chǔ)。這些“在后”存儲(chǔ)比在塊331處實(shí)行的“在先”存儲(chǔ)晚。此外,在塊331處實(shí)行的在先存儲(chǔ)在塊335處實(shí)行持久性提交劃界指令之前發(fā)生,而在塊339處實(shí)行的在后存儲(chǔ)在實(shí)行持久性提交劃界指令之后發(fā)生。

圖4是操作為實(shí)行持久性提交劃界指令404的實(shí)施例和持久性提交阻止指令406的實(shí)施例的處理器400的實(shí)施例的框圖。在一些實(shí)施例中,處理器400可以實(shí)行圖3的方法330。本文針對(duì)處理器400描述的組件、特征和具體可選細(xì)節(jié)也可選地適用于方法300。替代地,方法330可以可選地由類似或不同的處理器或裝置來實(shí)行和/或在其內(nèi)實(shí)行。此外,處理器400可以可選地實(shí)行與方法330不同的方法。在一些實(shí)施例中,處理器400可以被包括在圖2的系統(tǒng)210中。替代地,處理器400可以被包括在不同的系統(tǒng)中。

在一些實(shí)施例中,處理器400可以是通用處理器(例如,在臺(tái)式計(jì)算機(jī)、筆記本計(jì)算機(jī)或其他計(jì)算機(jī)中使用的類型的通用微處理器或中央處理單元(CPU))。替代地,處理器可以是專用處理器。適當(dāng)?shù)膶S锰幚砥鞯氖纠ǖ幌抻冢W(wǎng)絡(luò)處理器、通信處理器、密碼處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)和控制器(例如,微控制器)。處理器可具有任何各種復(fù)雜指令集計(jì)算(CISC)架構(gòu)、精簡指令集計(jì)算(RISC)架構(gòu)、甚長指令字(VLIW)架構(gòu)、混合架構(gòu)、其他類型的架構(gòu),或者具有不同架構(gòu)的組合(例如,不同的核可以具有不同架構(gòu))。

在操作期間,處理器可以接收持久性提交劃界指令404。隨后,處理器可以接收持久性提交阻止指令406。例如,這些指令可以通過總線或其他互連來從存儲(chǔ)器接收。處理器包括解碼單元或解碼器442。解碼單元可以接收和解碼持久性提交劃界指令404和持久性提交阻止指令406中的每一個(gè)。解碼單元可以輸出一個(gè)或多個(gè)相對(duì)較低級(jí)的指令或控制信號(hào)(例如,一個(gè)或多個(gè)微指令、微操作、微代碼入口點(diǎn)、經(jīng)解碼的指令或控制信號(hào)等),其反映、表示所接收到的相對(duì)較高級(jí)的指令和/或從所接收到的相對(duì)較高級(jí)的指令得到。在一些實(shí)施例中,解碼單元可以包括用于接收指令的一個(gè)或多??個(gè)輸入結(jié)構(gòu)(例如,(一個(gè)或多個(gè))端口、(一個(gè)或多個(gè))互連、接口)、與之耦合用于識(shí)別和解碼指令的指令識(shí)別和解碼邏輯、以及與之耦合以輸出(一個(gè)或多個(gè))較低級(jí)指令或(一個(gè)或多個(gè))控制信號(hào)的一個(gè)或多個(gè)輸出結(jié)構(gòu)(例如,(一個(gè)或多個(gè))端口、(一個(gè)或多個(gè))互連、接口)。解碼單元可以使用各種不同的機(jī)制來實(shí)現(xiàn),包括但不限于,微代碼只讀存儲(chǔ)器(ROM)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、以及適合于實(shí)現(xiàn)解碼單元的其他機(jī)制。

處理器還包括寄存器452的集合。在一些實(shí)施例中,寄存器可以是通用寄存器。寄存器中的每一個(gè)可以表示操作為存儲(chǔ)數(shù)據(jù)的管芯上存儲(chǔ)位置。寄存器可以表示架構(gòu)可見或架構(gòu)寄存器,其對(duì)軟件和/或編程器可見和/或是由處理器的指令集的指令指示以標(biāo)識(shí)操作數(shù)的寄存器。將這些架構(gòu)寄存器與給定微架構(gòu)中的其他非架構(gòu)寄存器進(jìn)行對(duì)比(例如,臨時(shí)寄存器、重排序緩沖器、退役寄存器等)。寄存器可以以不同方式在不同的微架構(gòu)中實(shí)現(xiàn),并且不限于任何特定類型的設(shè)計(jì)。適當(dāng)類型的寄存器的示例包括但不限于,專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配的物理寄存器及其組合。

在一些實(shí)施例中,持久性提交劃界指令404可以明確地指定(例如,通過一個(gè)或多個(gè)字段或位集合)或以其他方式指示(例如,隱含地指示)劃界值要被存儲(chǔ)的目的地寄存器或其他存儲(chǔ)位置。在一些實(shí)施例中,持久性提交阻止指令406可以明確地指定(例如,通過一個(gè)或多個(gè)字段或位集合)或以其他方式指示(例如,隱含地指示)值要被存儲(chǔ)的源寄存器或其他存儲(chǔ)位置(例如,先前持久性提交劃界指令的劃界值)。作為一個(gè)示例,這些指令中的每一個(gè)可以可選地具有存儲(chǔ)位置規(guī)定字段,用于指定寄存器(例如,寄存器452中的一個(gè))、存儲(chǔ)器位置或其他儲(chǔ)存器。替代地,存儲(chǔ)位置可以可選地對(duì)指令是隱含的(例如,對(duì)其操作碼是隱含的)。在一個(gè)具體實(shí)施例中,持久性提交劃界指令可以可選地隱含地指示(但不明確指定)用于劃界值被存儲(chǔ)的目的地存儲(chǔ)位置的特定固定通用寄存器,但是本發(fā)明的范圍不限于此。在一個(gè)具體實(shí)施例中,持久性提交阻止指令可以可選地隱含指示(但不明確指定)用于劃界值要被取回(retrieve)的其源存儲(chǔ)位置的相同特定固定通用寄存器,但是本發(fā)明的范圍不限于此。

再次參考圖4,執(zhí)行單元444與解碼單元442、寄存器452和一個(gè)或多個(gè)存儲(chǔ)器控制器422耦合。(一個(gè)或多個(gè))存儲(chǔ)器控制器是可選的,因?yàn)樵谝恍?shí)施例中其可以是處理器的部分(例如,管芯上),而在其他實(shí)施例中其可以在處理器外(例如,在芯片組組件上)。執(zhí)行單元進(jìn)而可以接收一個(gè)或多個(gè)經(jīng)解碼或以其他方式轉(zhuǎn)換的指令或控制信號(hào),該指令或控制信號(hào)表示持久性提交劃界和持久性提交阻止指令和/或從持久性提交劃界和持久性提交阻止指令得到。執(zhí)行單元可以響應(yīng)于持久性提交劃界和持久性提交阻止指令操作和/或作為其結(jié)果操作(例如,響應(yīng)于從相應(yīng)指令解碼的一個(gè)或多個(gè)指令或控制信號(hào)),以實(shí)行用于實(shí)現(xiàn)相應(yīng)指令的操作。

在一些實(shí)施例中,執(zhí)行單元444可以響應(yīng)于持久性提交劃界指令和/或作為其結(jié)果來操作為將劃界值454存儲(chǔ)458在指定的或以其他方式指示的目的地存儲(chǔ)位置(例如,寄存器452中的一個(gè))中。在一些實(shí)施例中,劃界值454可以將在持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但是不一定已經(jīng)被持久存儲(chǔ)的至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作與在持久性提交劃界指令被實(shí)行時(shí)還沒有已經(jīng)被接受到存儲(chǔ)器的至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作相劃界。

在一些實(shí)施例中,執(zhí)行單元可以從一個(gè)或多個(gè)存儲(chǔ)器控制器422接收456劃界值。在一些實(shí)施例中,(一個(gè)或多個(gè))存儲(chǔ)器控制器中的一個(gè)可以具有寫入未決緩沖器424,用于緩沖或存儲(chǔ)已經(jīng)被接受到存儲(chǔ)器但是實(shí)際上還沒有被存儲(chǔ)到存儲(chǔ)器(例如,沒有被存儲(chǔ)到持久性存儲(chǔ)器428)的未決寫入。當(dāng)在系統(tǒng)中采用時(shí),處理器和持久性存儲(chǔ)器428可以被耦合(例如,通過總線或其他互連)。如在圖示的示例中所示,存儲(chǔ)操作S1至S5可以被存儲(chǔ)在緩沖器中。通過示例的方式,存儲(chǔ)操作S1可能已經(jīng)被首先存儲(chǔ)在緩沖器中,并且存儲(chǔ)操作S5可能已經(jīng)最后被存儲(chǔ)在緩沖器中。在先入先出(FIFO)緩沖器的情況下,這不是要求的,S1可以首先離開緩沖器,接下來是S2,接下來是S3等。通過示例的方式,如果僅存儲(chǔ)操作S1至S4在持久性提交劃界指令被實(shí)行時(shí)被存儲(chǔ)在緩沖器中,并且此后將新的存儲(chǔ)操作S5被存儲(chǔ)在存儲(chǔ)緩沖器中,則劃界454可以包括足以將在先存儲(chǔ)操作S1-S4與在后存儲(chǔ)操作S5劃界、指示或相區(qū)分的信息。各種不同類型的劃界是可能的,諸如,例如,時(shí)間戳、計(jì)數(shù)器標(biāo)簽、標(biāo)志、令牌等。如所示,執(zhí)行單元可以包括用于獲得和存儲(chǔ)劃界值的劃界單元446。

在一些實(shí)施例中,執(zhí)行單元444響應(yīng)于持久性提交阻止指令和/或作為其結(jié)果,可以操作為從指定的或以其他方式指示的源存儲(chǔ)位置(例如,寄存器452中的一個(gè))接收460值。在一些實(shí)施例中,值可以是對(duì)應(yīng)的先前持久性提交劃界指令404的劃界值454。通過示例的方式,兩個(gè)指令可以指示相同的寄存器,持久性提交劃界指令可以首先被實(shí)行以將劃界值存儲(chǔ)在寄存器中,并且然后持久性提交阻止指令可以被實(shí)行以從寄存器讀取劃界值。

在一些實(shí)施例中,執(zhí)行單元還可以操作為,響應(yīng)于持久性提交阻止指令和/或作為其結(jié)果,來確保在實(shí)行持久性提交阻止指令之后在至少任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前,在對(duì)應(yīng)持久性提交劃界指令404被實(shí)行之前由劃界值所劃界的和/或到達(dá)一個(gè)或多個(gè)存儲(chǔ)器控制器422處的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)(例如,在持久性存儲(chǔ)器428中)。在一些實(shí)施例中,劃界值可以對(duì)在先前對(duì)應(yīng)持久性提交劃界指令404被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但是當(dāng)先前對(duì)應(yīng)持久性提交劃界指令被實(shí)行時(shí)不一定已經(jīng)被持久存儲(chǔ)(例如,可能仍然處于寫入未決緩沖器424中)的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作進(jìn)行劃界。

如所示,執(zhí)行單元可以包括阻止和檢查單元450。在一些實(shí)施例中,阻止和檢查單元可以操作為用至少一個(gè)存儲(chǔ)器控制器(或者在其他實(shí)施例中可能是其他存儲(chǔ)器系統(tǒng)單元)來重復(fù)地檢查462當(dāng)前狀態(tài),所述當(dāng)前狀態(tài)反映是否所有劃界的存儲(chǔ)到持久性存儲(chǔ)器操作(例如,在在先持久性提交劃界指令404被實(shí)行之前到達(dá)存儲(chǔ)器控制器)已經(jīng)被持久存儲(chǔ)(例如,被存儲(chǔ)在持久性存儲(chǔ)器428中)。在一些實(shí)施例中,阻止和檢查單元和/或執(zhí)行單元可以操作為向其他流水線邏輯467提供阻止信號(hào)464(例如,取決于特定實(shí)現(xiàn),其可以具有各種不同的類型),以阻止或停止或暫停在執(zhí)行持久性提交阻止指令之后要被執(zhí)行的一個(gè)或多個(gè)類型的其他指令(例如,僅存儲(chǔ)到持久性存儲(chǔ)器指令,或存儲(chǔ)到持久性存儲(chǔ)器指令和存儲(chǔ)到非持久性存儲(chǔ)器指令二者或所有指令)的執(zhí)行,直至檢查指示了所有劃界的存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)為止。在一些實(shí)施例中,阻止信號(hào)可以防止附加存儲(chǔ)操作進(jìn)入存儲(chǔ)器控制器422并且可能變成被持久存儲(chǔ)。在一些實(shí)施例中,這可以僅僅針對(duì)存儲(chǔ)到持久性存儲(chǔ)器操作來進(jìn)行。在其他實(shí)施例中,這可以針對(duì)存儲(chǔ)到持久性存儲(chǔ)器操作和存儲(chǔ)到非持久性存儲(chǔ)器操作二者來進(jìn)行。以該方式阻止指令的實(shí)行可以有效地允許處理器停止并等待其想要發(fā)生的事情(例如,劃界的存儲(chǔ)成為持久)實(shí)際發(fā)生,并且然后在其發(fā)生之后恢復(fù)實(shí)行指令。響應(yīng)于持久性提交阻止指令而實(shí)行的成功檢查(例如,指示劃界的存儲(chǔ)已經(jīng)成為持久)可以用作處理器所等待的已經(jīng)發(fā)生并且處理器可以響應(yīng)地恢復(fù)的指示。

執(zhí)行單元和/或處理器可以包括具體或特定邏輯(例如,晶體管、集成電路或可能與固件組合的其他硬件(例如,被存儲(chǔ)在非易失性存儲(chǔ)器中的指令)和/或軟件),其操作為實(shí)行持久性提交劃界和持久性提交阻止指令。在所示的實(shí)施例中,為簡單起見,相同的執(zhí)行單元被示出和描述為處理持久性提交劃界和阻止指令二者,但是在其他實(shí)施例中,可以可選地使用不同的執(zhí)行單元。

為了避免混淆本描述,已經(jīng)示出和描述了相對(duì)簡單的處理器。然而,處理器可以可選地包括其他處理器組件。例如,各種不同的實(shí)施例可以包括針對(duì)圖10-12中的任何一個(gè)示出和描述的組件的各種不同的組合和配置。處理器的所有組件可以被耦合在一起以允許其按意圖進(jìn)行操作。

有利地,軟件可以使用持久性提交劃界和持久性提交阻止指令來獲得以下保證:當(dāng)持久性提交阻止指令被提交時(shí),在先前持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被存儲(chǔ)器系統(tǒng)接受的對(duì)持久狀態(tài)的任何控制改變?cè)谌Q于對(duì)持久狀態(tài)的這些在先控制改變的在持久性提交阻止指令之后的后續(xù)存儲(chǔ)已經(jīng)使其進(jìn)入電力故障安全域之前已經(jīng)被持久或耐久地存儲(chǔ)。這些指令可以用于對(duì)到持久性存儲(chǔ)器的存儲(chǔ)進(jìn)行排序,使得無紀(jì)律和/或不適當(dāng)排序的到持久性存儲(chǔ)器的存儲(chǔ)不會(huì)發(fā)生,并且引起持久狀態(tài)的損壞(corruption)。在沒有作出這樣的保證的能力的情況下,在電力故障時(shí),該軟件可能沒有保證在先存儲(chǔ)(例如,在圖3中的塊331處的在先存儲(chǔ))已經(jīng)被持久存儲(chǔ),這可能導(dǎo)致數(shù)據(jù)的永久丟失、損壞的持久性存儲(chǔ)器狀態(tài)等。而且,通過防止相關(guān)存儲(chǔ)或其他操作前進(jìn)直至被接受到存儲(chǔ)器但是在劃界時(shí)尚未被持久存儲(chǔ)的劃界的存儲(chǔ)為止,軟件可以有自由來在持久性劃界指令和持久性阻止指令之間的間隔期間實(shí)行獨(dú)立操作。

取決于特定實(shí)現(xiàn),持久性提交阻止指令可能趨向于具有相對(duì)長的完成時(shí)間和/或完成時(shí)間可能趨向于是相對(duì)可變的。通過示例的方式,在一個(gè)實(shí)現(xiàn)中,估計(jì)到完成時(shí)間通??赡軓募s一百到幾百個(gè)時(shí)鐘周期(例如,可能幾百納秒),其中約幾千個(gè)時(shí)鐘周期(例如,可能約一微秒)的偶然更長的持續(xù)時(shí)間發(fā)生。對(duì)于這樣的相對(duì)長和/或相對(duì)可變的完成時(shí)間的一個(gè)貢獻(xiàn)原因是,到持久性存儲(chǔ)器的存儲(chǔ)可以部分地取決于以下因素:諸如在持久性提交劃界指令被實(shí)行時(shí)被接受到存儲(chǔ)器的存儲(chǔ)的數(shù)目、對(duì)持久性存儲(chǔ)器的典型訪問等待時(shí)間、到持久性存儲(chǔ)器的存儲(chǔ)的時(shí)間分布和/或空間分布(例如,持久性存儲(chǔ)器范圍重疊)、持久性存儲(chǔ)器模塊中的電力安全隊(duì)列的深度(如果使用)、寫入放大、在持久性存儲(chǔ)器中修改的特定行是否是覆寫或讀取的主體和其他因素。此外,針對(duì)這樣的相對(duì)長和/或相對(duì)可變的完成時(shí)間的另一貢獻(xiàn)原因是,在一些實(shí)施例中,當(dāng)持久性提交劃界指令被實(shí)行時(shí),這些指令可以用于實(shí)現(xiàn)全局持久性保證,其因此可以部分地取決于從不僅一個(gè)存儲(chǔ)器控制器而且可能多個(gè)不同的存儲(chǔ)器控制器到持久性存儲(chǔ)器的存儲(chǔ)。

在一些實(shí)施例中,持久性提交劃界和持久性提交阻止指令可以表示可以被一起實(shí)行以提交向持久性存儲(chǔ)器的存儲(chǔ)的兩個(gè)不同的指令。在一些實(shí)施例中,兩個(gè)指令可以被一起實(shí)行,以實(shí)現(xiàn)與處理器的硬件(例如,存儲(chǔ)器接口單元和/或存儲(chǔ)器控制器)的分裂握手,以便于提交向持久性存儲(chǔ)器的存儲(chǔ)并且實(shí)現(xiàn)意圖的保證。分裂握手可以包括實(shí)行持久性提交劃界指令以與硬件交互以獲得劃界值。然而,持久性提交劃界指令可能不會(huì)使得處理器停止實(shí)行任何類型的指令,以便于防止存儲(chǔ)操作成為持久的。然后,分裂握手的第二部分可以包括實(shí)行持久性提交阻止指令,以與硬件交互以阻止一個(gè)或多個(gè)不同類型的在其之后的指令(例如,存儲(chǔ)到持久性存儲(chǔ)器指令、或存儲(chǔ)到持久性存儲(chǔ)器指令和存儲(chǔ)到非持久性存儲(chǔ)器指令二者、或所有指令)的實(shí)行,以確保在執(zhí)行持久性提交阻止指令之后,在至少任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前,劃界的指令已經(jīng)被持久存儲(chǔ)(例如,因?yàn)榉駝t,其可能以相反次序被持久存儲(chǔ))。

以該方式使用這兩個(gè)不同的指令來提交到持久性存儲(chǔ)器的存儲(chǔ)可以可選地允許所述阻止在一段時(shí)間內(nèi)被推遲或延遲。在推遲阻止或等待操作的同時(shí),可以可選地異步地實(shí)行其他非相關(guān)工作(例如,在圖3的塊336處實(shí)行的非相關(guān)工作)。這樣的非相關(guān)工作不需要同步地等待,直至持久性提交劃界指令的劃界的存儲(chǔ)操作??已經(jīng)被持久存儲(chǔ)(即,不需要鎖步操作),而是可以在這些存儲(chǔ)前進(jìn)到變得被持久存儲(chǔ)的同時(shí)異步地并且同時(shí)實(shí)行非相關(guān)工作。因?yàn)榕c持久性提交阻止指令相關(guān)聯(lián)的阻止或等待操作引起性能懲罰(例如,在一些實(shí)施例中,可以暫停至少存儲(chǔ)到持久性存儲(chǔ)器指令的執(zhí)行),使其延期,同時(shí)允許這樣不相關(guān)的或至少非相關(guān)工作被實(shí)行,可以有助于減少實(shí)行這些指令所需要的總體性能懲罰。通過示例的方式,這可以可選地允許軟件使從在代碼的相同區(qū)域內(nèi)對(duì)持久性存儲(chǔ)器的多個(gè)不同的寫入流重疊,并且確保在持久性存儲(chǔ)器提交當(dāng)中的必要的部分排序,而不是不必要的總排序。此外,當(dāng)最終實(shí)行阻止或等待操作時(shí)(例如,當(dāng)實(shí)行持久性提交阻止指令時(shí)),阻止或等待時(shí)間通常將用于較短的時(shí)間(平均上),因?yàn)閯澖绲某志眯蕴峤恢械囊恍┠軌蛟趯?shí)行持久性提交劃界和阻止指令時(shí)的時(shí)間之間發(fā)生。

這些指令可以以用于推遲阻止同步等待的能力來向軟件給予用于提交向持久性存儲(chǔ)器的存儲(chǔ)的輕量架構(gòu)機(jī)制,并且允許處理器在兩個(gè)指令被實(shí)行的時(shí)間之間異步地實(shí)行非相關(guān)工作。這可能潛在地和可選地有助于實(shí)現(xiàn)用于持久性存儲(chǔ)器的軟件流水線化,其中,循環(huán)的一個(gè)迭代中的計(jì)算產(chǎn)生要在前向迭代中提交的值,并且每個(gè)迭代中的計(jì)算獲得先前迭代異步持久性存儲(chǔ)器提交,以繼續(xù)將較新的相關(guān)值流動(dòng)到持久性存儲(chǔ)器。這可能潛在地和可選地有助于利用Intel?事務(wù)性同步擴(kuò)展(Intel?TSX)。例如,Intel?TSX可以在持久性提交劃界之后自由地產(chǎn)生相關(guān)未來值,但是保持其免于朝著持久性存儲(chǔ)器流動(dòng),直至在對(duì)應(yīng)持久性提交阻止被實(shí)行之后。

為了進(jìn)一步說明某些概念,考慮下面的示例代碼。

行1 mov memX, 4 //將4寫入持久性存儲(chǔ)器中的存儲(chǔ)器位置X

行2 mov memY, 9 //將9寫入持久性存儲(chǔ)器中的存儲(chǔ)器位置Y

行3 sfence //防護(hù)存儲(chǔ)

行4 clwb memX //從高速緩存強(qiáng)奪X

行5 clwb memY //從高速緩存強(qiáng)奪Y

行6 sfence //防護(hù)存儲(chǔ)

行7 pc_demarcate R //持久性提交劃界指令

行8 add reg2, 12 //將12添加到寄存器2

行9 mov memZ, 18 //將18寫入持久性存儲(chǔ)器中的存儲(chǔ)器位置Z

行10 add memW, 28 //將28添加到非持久性存儲(chǔ)器中的存儲(chǔ)器位置W

行11 pc_block R //持久性提交阻止指令

行12 add reg2, 17 //將12添加到寄存器2

行13 mov memW, 14 //將18寫入非持久性存儲(chǔ)器中的存儲(chǔ)器位置W

行14 mov memX, 16 //將16寫入持久性存儲(chǔ)器中的存儲(chǔ)器位置X

在該代碼中,pc_demarcate是持久性提交劃界指令的實(shí)施例,并且pc_block是持久性提交阻止指令的實(shí)施例。在一些實(shí)施例中,pc_demarcate或pc_block都不阻止或防止行8-10的指令的實(shí)行。在一些實(shí)施例中,行8-10的指令的指令可以被實(shí)行,并且行9的指令甚至可以存儲(chǔ)為持久性,甚至在行1-2的指令的存儲(chǔ)已經(jīng)變得持久的任何保證之前。

在實(shí)行行11的pc_block指令之后,在一些實(shí)施例中,行11的指令之后的一個(gè)或多個(gè)類型的指令的實(shí)行以及將從其得到的到持久性存儲(chǔ)器的任何存儲(chǔ)可以被停止。在不同的實(shí)施例中,可以防止不同類型的指令被實(shí)行。在一些實(shí)施例中,到持久性存儲(chǔ)器的存儲(chǔ)的實(shí)行可以被停止(例如,行14的指令可以被停止)。在其他實(shí)施例中,到持久性存儲(chǔ)器的存儲(chǔ)的實(shí)行可以被停止(例如,行14的指令可以被停止),并且還可以可選地停止到非持久性存儲(chǔ)器的存儲(chǔ)的實(shí)行(例如,行13的指??令也可以被停止)。通過示例的方式,處理器的流水線邏輯可以檢查到持久性存儲(chǔ)器的存儲(chǔ)以及到非持久性存儲(chǔ)器的存儲(chǔ)的地址范圍(例如,如通過處理器的范圍寄存器配置的),并且相應(yīng)地選擇性地實(shí)行或不實(shí)行指令。在又其他實(shí)施例中,到持久性存儲(chǔ)器的存儲(chǔ)的實(shí)行可以被停止(例如,行14的指令可以被停止),并且到非持久性存儲(chǔ)器的存儲(chǔ)的實(shí)行可以可選地被停止(例如,行13的指??令也可以被停止),并且到處理器架構(gòu)寄存器的存儲(chǔ)的實(shí)行可以可選地被停止(例如,行12的指令也可以被停止),或者大多數(shù)(如果不是所有)類型的指令可以可選地被停止。這些指令的實(shí)行的這樣的停止可以在響應(yīng)于行11的pc_block指令確定了在pc_demarcate指令之前的所有存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被提交為持久時(shí)結(jié)束(例如,行1-2的指令的存儲(chǔ)已經(jīng)被持久存儲(chǔ))。

圖5是操作為使用附加到存儲(chǔ)器控制器522處的到達(dá)的存儲(chǔ)操作568(例如,S152、S2、S3、S4)以確定劃界值554的單調(diào)增加的值(V1、V2、V3、V4)的處理器500的示例性實(shí)施例的框圖。存儲(chǔ)器控制器可以接收到達(dá)的存儲(chǔ)操作568。到達(dá)的存儲(chǔ)操作可以包括至少一些存儲(chǔ)到持久性存儲(chǔ)器操作。如所示,到達(dá)的存儲(chǔ)操作可以包括存儲(chǔ)操作S1、S2、S3和S4。

存儲(chǔ)器控制器具有到達(dá)存儲(chǔ)值附加單元570。到達(dá)存儲(chǔ)值附加單元與單調(diào)增加值生成器572耦合。單調(diào)增加值生成器可以或可以不是存儲(chǔ)器控制器的一部分。單調(diào)增加值生成器操作為生成隨時(shí)間單調(diào)增加的值。適當(dāng)?shù)膯握{(diào)增加值生成器的一個(gè)示例是存儲(chǔ)操作到達(dá)計(jì)數(shù)器,其操作為對(duì)到達(dá)的存儲(chǔ)操作進(jìn)行計(jì)數(shù)(例如,每當(dāng)新的存儲(chǔ)操作到達(dá)時(shí)遞增計(jì)數(shù)器)。例如,如果三個(gè)存儲(chǔ)操作按順序到達(dá),則第一可以被給予計(jì)數(shù)X,下一個(gè)被給予計(jì)數(shù)(X+1),并且下一個(gè)被給予計(jì)數(shù)(X+2)。適當(dāng)?shù)膯握{(diào)增加值生成器的另一示例是操作為保持增加的時(shí)間值的自由運(yùn)行時(shí)鐘或其他計(jì)時(shí)器。每個(gè)到達(dá)的存儲(chǔ)操作可以用指示該存儲(chǔ)操作何時(shí)到達(dá)的時(shí)間戳值來標(biāo)記。還預(yù)計(jì)到單調(diào)增加值生成器的其他示例。

到達(dá)存儲(chǔ)值附加單元570可以操作為標(biāo)記或以其他方式將當(dāng)前值從單調(diào)增加值生成器附加到每個(gè)到達(dá)的存儲(chǔ)操作。例如,第一值(V1)可以被附加到第一到達(dá)的存儲(chǔ)操作(S1),第二增加的值(V2)可以被附加到后續(xù)到達(dá)的存儲(chǔ)操作(S2)等。具有附加值的到達(dá)的存儲(chǔ)操作可以被存儲(chǔ)在寫入未決緩沖器524中。附加值可以在其移動(dòng)通過寫入未決緩沖器524時(shí)與存儲(chǔ)操作在一起。

存儲(chǔ)器控制器包括離開存儲(chǔ)操作值提取器單元574,其可以操作為在存儲(chǔ)操作作為離開的存儲(chǔ)操作而離開存儲(chǔ)器控制器之前提取附加值(例如,在總線上傳送到持久性存儲(chǔ)器)。如所示,存儲(chǔ)操作S1、S2、S3和S4可以在沒有值V1、V2、V3和V4的情況下離開。當(dāng)每個(gè)存儲(chǔ)操作按次序離開存儲(chǔ)器控制器時(shí),提取器單元可以將對(duì)應(yīng)的所提取的值保存在最后提取的值儲(chǔ)存器580(例如,暫存器、臨時(shí)寄存器等)中。通過示例的方式,在值是指示當(dāng)對(duì)應(yīng)存儲(chǔ)操作到達(dá)存儲(chǔ)器控制器時(shí)的相對(duì)時(shí)間的時(shí)間戳的特定情況下,在FIFO隊(duì)列中,可以保存所提取的最后的時(shí)間戳(指示當(dāng)對(duì)應(yīng)存儲(chǔ)操作到達(dá)時(shí)的時(shí)間)。存儲(chǔ)器控制器還可以可選地具有空指示器576,其操作為指示寫入未決緩沖器何時(shí)變空。

劃界單元546與存儲(chǔ)器控制器522和/或單調(diào)增加值生成器572耦合。劃界單元響應(yīng)于持久性提交劃界指令504(例如,來自其的一個(gè)或多個(gè)經(jīng)解碼的控制信號(hào))和/或作為其結(jié)果而可操作為從單調(diào)增加值生成器接收556當(dāng)前值,并且將接收到的值作為劃界值存儲(chǔ)558在寄存器552中。通過示例的方式,如果在存儲(chǔ)操作S3是到達(dá)存儲(chǔ)器控制器處的最近的存儲(chǔ)操作時(shí)持久性提交劃界指令被實(shí)行,則到達(dá)值V3(例如,到達(dá)計(jì)數(shù)器值、到達(dá)時(shí)間戳值等)可以從單調(diào)增加值生成器接收并且被存儲(chǔ)為劃界值。

阻止和檢查單元550與寄存器552和存儲(chǔ)器控制器522耦合。在各種實(shí)施例中,阻止和檢查單元可以是存儲(chǔ)器控制器的部分,或者可以與存儲(chǔ)器控制器分離但與之耦合(例如,可以在單獨(dú)的執(zhí)行單元中)。劃界單元響應(yīng)于持久性提交阻止指令506(例如,來自其的一個(gè)或多個(gè)經(jīng)解碼的控制信號(hào))和/或作為其結(jié)果,可以操作為從寄存器接收560劃界值。阻止和檢查單元可以操作為重復(fù)地檢查562最后提取的值儲(chǔ)存器562,以確定從已經(jīng)離開執(zhí)行單元的離開的存儲(chǔ)操作中提取的最后或最大值。阻止和檢查單元可以操作為確定來自最后提取的值儲(chǔ)存器的最后或最大值是否大于(或在另一實(shí)施例中大于或等于)劃界值,或者空指示器是否指示寫入待決緩沖器是空的。如果這些中的任一被確定為真,則該阻止和檢查單元可以提供停止阻止信號(hào)565。在一些實(shí)施例中,停止阻止信號(hào)可以使得恢復(fù)實(shí)行一個(gè)或多個(gè)類型的指令,其實(shí)行在最后或最大值小于劃界值的同時(shí)響應(yīng)于持久性提交阻止指令而被停止。停止阻止信號(hào)可以指示處理器等待發(fā)生的某事已經(jīng)發(fā)生并且現(xiàn)在處理器可以恢復(fù)實(shí)行其先前停止實(shí)行的一個(gè)或多個(gè)類型的指令。通過示例的方式,如果最后提取值儲(chǔ)存器具有到達(dá)計(jì)數(shù)器值V4(例如,數(shù)57456),并且劃界值具有值V3(例如,57455),則阻止和檢查單元可以確定停止阻止(例如,因?yàn)橛糜赩4的單調(diào)增加的值將大于用于V3的單調(diào)增加的值)。否則,阻止和檢查單元可以操作為繼續(xù)提供阻止信號(hào)564,以停止使得一個(gè)或多個(gè)類型的指令的執(zhí)行或?qū)嵭性谧詈蠡蜃畲笾敌∮趧澖缰档耐瑫r(shí)被停止。

在一些實(shí)施例中,劃界值可以關(guān)于時(shí)間次序(例如,在(一個(gè)或多個(gè))存儲(chǔ)器控制器處的存儲(chǔ)操作的到達(dá)的時(shí)間次序),而持久性提交阻止指令可以實(shí)行關(guān)于程序次序的阻止。當(dāng)在系統(tǒng)中存在一個(gè)或多個(gè)高速緩存時(shí),在存儲(chǔ)器次序(例如,存儲(chǔ)器控制器處的存儲(chǔ)操作的到達(dá)的時(shí)間次序)和程序次序之間可能不存在直接關(guān)聯(lián)。高速緩存可以改變穿過高速緩存的存儲(chǔ)到達(dá)(一個(gè)或多個(gè))存儲(chǔ)器控制器的次序。例如,這可以取決于以下因素:諸如存儲(chǔ)是回寫、通寫、還是組合存儲(chǔ)類型的寫入、高速緩存逐出(eviction)的定時(shí)等。

圖6是最大值選擇器682的示例性實(shí)施例的框圖。最大值選擇器與單調(diào)增加時(shí)鐘或計(jì)時(shí)器672(例如,自由運(yùn)行時(shí)鐘或計(jì)時(shí)器)耦合。時(shí)鐘或計(jì)時(shí)器可以用于將值提供到到達(dá)存儲(chǔ)值附加單元570。這些值可以被輸入到最大值選擇器的AND(與)邏輯684??罩甘酒?76還可以被輸入到AND邏輯。AND邏輯可操作為,當(dāng)空指示器指示寫入待決緩沖器隊(duì)列是空的時(shí)從時(shí)鐘或計(jì)時(shí)器輸出值。AND邏輯的輸出和來自最后提取值儲(chǔ)存器580的最后提取的值被輸入到最大值儲(chǔ)存器686。除非空指示器指示寫入未決緩沖器隊(duì)列是空的,最大值儲(chǔ)存器可操作為存儲(chǔ)最后提取的值580。然而,當(dāng)空指示器指示寫入未決緩沖器隊(duì)列是空的時(shí),最大值儲(chǔ)存器存儲(chǔ)最大值,其通常將是來自時(shí)鐘或計(jì)時(shí)器值672的值(例如,通常繼續(xù)增加)。這可以有助于避免需要必須明確地檢查空指示器,因?yàn)樽畲笾祪?chǔ)存器的輸出可以自動(dòng)地反映這一點(diǎn)。最大值儲(chǔ)存器的輸出被提供給阻止和檢查單元550。

為了簡化描述,圖5中的方法的以上討論在單個(gè)存儲(chǔ)器控制器的上下文中進(jìn)行描述。然而,當(dāng)存在多個(gè)存儲(chǔ)器控制器時(shí),該方法也起作用。

圖7是具有多個(gè)存儲(chǔ)器控制器722的處理器700的示例性實(shí)施例的框圖。在圖示的實(shí)施例中,為簡單起見,僅示出了第一存儲(chǔ)器控制器722-1和第二存儲(chǔ)器控制器722-2,但是處理器可以可選地具有以類似方式使用的其他數(shù)目的存儲(chǔ)器控制器。存儲(chǔ)器控制器中的每一個(gè)可以接收到達(dá)的存儲(chǔ)操作768-1、768-2。存儲(chǔ)器控制器中的每一個(gè)具有到達(dá)存儲(chǔ)值附加單元770-1、770-2,用于將對(duì)于確定劃界值有用的單調(diào)增加的值附加到到達(dá)的存儲(chǔ)操作,如前結(jié)合圖5所述。

如所示,在一些實(shí)施例中,存儲(chǔ)器控制器中的每一個(gè)可以共享公共時(shí)鐘、計(jì)時(shí)器或計(jì)數(shù)器772。單個(gè)共享公共時(shí)鐘、計(jì)時(shí)器或計(jì)數(shù)器可以操作為生成單調(diào)增加的值。在替代實(shí)施例中,代替具有單個(gè)共享時(shí)鐘、計(jì)時(shí)器或計(jì)數(shù)器,存儲(chǔ)器控制器中的每一個(gè)可以可選地具有不同的對(duì)應(yīng)時(shí)鐘、計(jì)時(shí)器或計(jì)數(shù)器,并且這些不同的時(shí)鐘、計(jì)時(shí)器或計(jì)數(shù)器可以被同步或以其他方式作出,以產(chǎn)生相互一致的值。例如,如果存儲(chǔ)操作同時(shí)到達(dá)兩個(gè)不同的存儲(chǔ)器控??制器,則同步或相互一致的時(shí)鐘或計(jì)時(shí)器將生成相同的時(shí)間戳值。用于同步時(shí)鐘、計(jì)時(shí)器或計(jì)數(shù)器的已知方法是適當(dāng)?shù)?。作為一種可能示例,時(shí)鐘或計(jì)時(shí)器可以可選地使用基于Intel?QuickPath互連的時(shí)鐘交換和同步方法來同步。

這樣的單調(diào)增加的并且同步或以其他方式相互一致的值可以跨所有存儲(chǔ)器控制器具有全局相關(guān)性。換言之,如果任何第一值小于任何第二值,則意味著不論其到達(dá)哪個(gè)存儲(chǔ)器控制器,對(duì)應(yīng)于第一值的存儲(chǔ)操作在對(duì)應(yīng)于第二值的存儲(chǔ)操作之前到達(dá)。這可以有助于允許單個(gè)劃界值被確定并且用于跨所有存儲(chǔ)器控制器對(duì)在劃界指令之后的持久性提交進(jìn)行排序。

再次參考圖7,存儲(chǔ)器控制器中的每一個(gè)具有離開存儲(chǔ)值提取器單元774-1、774-2,用于提取和輸出所提取的值780。存儲(chǔ)器控制器中的每一個(gè)具有最大值選擇器782-1、782-2。在一些實(shí)施例中,最大值選擇器可以與圖6的最大值選擇器682相同或類似。如所示,每個(gè)存儲(chǔ)器控制器還具有空指示器776-1、776-2,以指示對(duì)應(yīng)的存儲(chǔ)待決緩沖器或隊(duì)列何時(shí)為空??罩甘究梢员惶峁┙o相應(yīng)最大值選擇器。單調(diào)增加且相互一致的值(例如,來自公共時(shí)鐘、計(jì)時(shí)器或計(jì)數(shù)器772或來自同步或以其他方式相互一致的時(shí)鐘、計(jì)時(shí)器或計(jì)數(shù)器的其他)還可以被提供給最大值選擇器。最大值選擇器可以操作為選擇所提取的值或在空指示器指示緩沖器或隊(duì)列為空時(shí)單調(diào)增加且相互一致的值(例如,如前圖6所述)中的最大值。最小值儲(chǔ)存器788與最大值選擇器中的每一個(gè)的輸出耦合。最小值儲(chǔ)存器可以存儲(chǔ)所有最大值選擇器的輸出中的最小值。該最小存儲(chǔ)的值可以被提供給阻止和檢查單元550。在所有不同存儲(chǔ)器控制器上的最小值確保由持久性提交劃界指令所獲得的劃界值與離開的最小值的存儲(chǔ)操作作比較。使用跨所有不同存儲(chǔ)器控制器的這樣的最小值可以有助于允許持久性提交阻止指令阻止,直至最小值大于或等于劃界值,所述劃界值指示由劃界值所區(qū)分的對(duì)持久性的所有需要的先前持久性提交已經(jīng)完成到跨所有不同的存儲(chǔ)器控制器的持久性。

在出自存儲(chǔ)器控制器的非FIFO持久性提交的情況下,在一些實(shí)施例中,可以可選地使用滑動(dòng)位圖窗口?;瑒?dòng)位圖窗口可以范圍從還沒有被提交為持久性的最小值和已經(jīng)在存儲(chǔ)器控制器或在存儲(chǔ)器控制器中的任何一個(gè)處發(fā)出的最大值。使值R表示位圖中的最小值,這可以表示位圖窗口的右邊緣。然后,如果任何值R大于劃界值,或?qū)τ谖粓D窗口,在劃界值和值R之間的差等于零,則等待的存儲(chǔ)操作已經(jīng)被提交為持久性。

回想一下,如圖1所示,在一些實(shí)施例中,指令集還可以可選地包括持久性提交檢查指令108,雖然這不是所要求的。持久性提交檢查指令可以類似于本文所公開的其他指令那樣被解碼(例如,由解碼單元442)和執(zhí)行(例如,由執(zhí)行單元444或不同的執(zhí)行單元)。

在一些實(shí)施例中,持久性提交檢查指令可以明確指定(例如,通過一個(gè)或多個(gè)字段或位集合)或以其他方式指示(例如,隱含地指示)當(dāng)前狀態(tài)或值要被存儲(chǔ)的目的地存儲(chǔ)位置。作為一個(gè)示例,持久性提交檢查指令可以可選地具有存儲(chǔ)位置指定字段,用于指定寄存器(例如,寄存器452中的一個(gè))、存儲(chǔ)器位置或其他目的地存儲(chǔ)位置。替代地,目的地存儲(chǔ)位置可以可選地對(duì)指令是隱含的(例如,對(duì)其操作碼是隱含的)。在一個(gè)具體實(shí)施例中,持久性提交檢查指令可以可選地隱含地指示(但不明確指定)用于目的地存儲(chǔ)位置的特定固定通用寄存器,其是與由持久性提交劃界指令的實(shí)施例和/或持久性提交阻止指令的實(shí)施例所隱含指示的通用寄存器不同的通用寄存器。這樣的不同寄存器的隱含使用可以有助于避免需要對(duì)可以被持久性提交劃界和阻止指令中的每一個(gè)使用的劃界值進(jìn)行覆寫。

在一些實(shí)施例中,持久性提交檢查指令如果被執(zhí)行可以操作為使得關(guān)聯(lián)的執(zhí)行單元和/或處理器將值存儲(chǔ)在所指示的目的地存儲(chǔ)位置中。在一些實(shí)施例中,該值可以指示由先前對(duì)應(yīng)持久性提交劃界指令所劃界的至少所有存儲(chǔ)到持久性存儲(chǔ)器操作(例如,在所指示的先前對(duì)應(yīng)持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但是在先前對(duì)應(yīng)持久性提交劃界指令被實(shí)行時(shí)不一定已經(jīng)被持久存儲(chǔ)的存儲(chǔ)到持久性存儲(chǔ)器操作)現(xiàn)在是否已經(jīng)被持久存儲(chǔ)。該值不需要一定應(yīng)用于任何一個(gè)特定劃界值,而是可以應(yīng)用于各種劃界值(例如,反映離開的存儲(chǔ)操作的當(dāng)前狀態(tài)的單調(diào)增加的值可以應(yīng)用于表示劃界值的先前這樣的單調(diào)增加的值)。

在一些實(shí)施例中,所存儲(chǔ)的值可能不僅指示所劃界的存儲(chǔ)到持久性存儲(chǔ)器操作現(xiàn)在是否已經(jīng)被持久存儲(chǔ),而且還可以指示所劃界的存儲(chǔ)操作的完成的當(dāng)前水平或狀態(tài)或度量。完成的不同度量適用于不同的實(shí)施例。完成的適當(dāng)度量的示例包括但不限于,完成劃界的持久性存儲(chǔ)所需要的估計(jì)時(shí)間、已經(jīng)被持久存儲(chǔ)的劃界的持久性存儲(chǔ)的估計(jì)百分比、在劃界值和反映到持久性存儲(chǔ)器的最近離開的存儲(chǔ)操作的值之間的差異等。通過示例的方式,在各種實(shí)施例中,持久性提交檢查指令在被實(shí)行時(shí)可以操作為使得關(guān)聯(lián)的執(zhí)行單元和/或處理器讀取圖5中的最后提取的值儲(chǔ)存器580、圖6中的最大值儲(chǔ)存器686、圖7的最小值儲(chǔ)存器788等中的一個(gè)。在一些實(shí)施例中,與前述持久性提交阻止指令相比,持久性提交檢查指令在被實(shí)行時(shí)可能不會(huì)阻止或停止或暫停任何類型的指令的執(zhí)行。

持久性提交檢查指令的一個(gè)具體示例性實(shí)施例可以指示具有劃界值的源寄存器以及要被用于存儲(chǔ)完成值水平的目的地寄存器。如果由劃界值所區(qū)分的所有劃界的存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ),則指示完全完成的值(例如,0值)可以被存儲(chǔ)在目的地中。否則,指示進(jìn)展或狀態(tài)的當(dāng)前水平的值可以被存儲(chǔ)。該狀態(tài)或進(jìn)展的水平可以用作軟件可以使用以估計(jì)直到劃界的存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)完成為止的時(shí)間量(軟件可以在不限制的情況下以各種方式進(jìn)行)的提示(hint)。這僅僅是適當(dāng)?shù)某志眯蕴峤粰z查指令的一個(gè)說明性示例。

在一些實(shí)施例中,持久性提交檢查指令可以連同持久性提交劃界指令和持久性提交阻止指令一起使用。例如,在一些實(shí)施例中,可以在持久性提交劃界指令之后可選地使用持久性提交檢查指令的一個(gè)或多個(gè)實(shí)例以允許軟件測(cè)量或確定朝著完成在持久性提交劃界指令之前并且通過劃界值劃界的存儲(chǔ)操作的持久性存儲(chǔ)的進(jìn)展或狀態(tài)的當(dāng)前水平,使得軟件可以確定是否繼續(xù)以推遲實(shí)行后續(xù)持久性提交阻止指令。如上所述,持久性提交阻止指令可以實(shí)行阻止操作,并且因此可以具有關(guān)聯(lián)的性能懲罰。此外,要提交為持久性的所有先前存儲(chǔ)所需要的時(shí)間可以可能是較長和/或可能是可變的。因此,持久性提交檢查指令的可能的優(yōu)點(diǎn)是有助于允許軟件來測(cè)量和適應(yīng)于這樣的可能長的和/或可能可變的時(shí)間,并且可選地推遲實(shí)行持久性提交阻止指令,直至適當(dāng)?shù)暮涂蛇x地最大推遲的時(shí)間為止。

圖8是用處理器實(shí)行的方法890的一個(gè)可能示例的塊流程圖,其中,持久性提交檢查指令的實(shí)施例可以與持久性提交劃界指令的實(shí)施例和持久性提交阻止指令的實(shí)施例一起使用。該方法包括在塊891處實(shí)行持久性提交劃界指令。這可以如在本文中其他位置所述來進(jìn)行。該方法可選地包括在塊892處實(shí)行非相關(guān)工作。如本文其他位置所述,這可以表示不取決于由與持久性提交劃界指令相關(guān)聯(lián)的劃界值所劃界的到持久性存儲(chǔ)器的存儲(chǔ)的工作。

在塊893處,可以實(shí)行持久性提交檢查指令。在一些實(shí)施例中,這可以包括讀取或以其他方式確定和存儲(chǔ)指示是否所有劃界的存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)完成的值。在一些實(shí)施例中,值可以指示朝著持久存儲(chǔ)這些劃界的存儲(chǔ)操作的當(dāng)前狀態(tài)或水平,而不阻止或防止任何指令的執(zhí)行。通過示例的方式,在各種實(shí)施例中,這可以包括在寄存器中讀取和存儲(chǔ)圖5中的最后提取的值儲(chǔ)存器580、圖6中的最大值儲(chǔ)存器686、圖7的最小值儲(chǔ)存器788等中的一個(gè),而不阻止或防止任何持久性存儲(chǔ)操作。

在塊894處,可以進(jìn)行是否存在進(jìn)行更多非相關(guān)工作的時(shí)間的確定。例如,軟件可以訪問由持久性提交檢查指令所讀取和存儲(chǔ)的值,并且將其與由持久性提交劃界指令所存儲(chǔ)的劃界值作比較。如果該差異足夠大,例如如果該差異超過可配置閾值,則所述確定可以是存在足夠的時(shí)間來進(jìn)行更多非相關(guān)工作(即,“是”可以是確定)。在這樣的情況下,軟件可以可選地決定重新拜訪塊892,其中可以可選地實(shí)行更多非相關(guān)工作。相反,如果差異未被軟件認(rèn)為足夠大,例如,如果差異沒有超過可配置閾值,則所述確定可以是不存在足夠的時(shí)間來進(jìn)行更多的非相關(guān)工作(即,“否”可以是確定)。在這樣的情況下,該方法可以前進(jìn)到塊895。通過示例的方式,這可以可選地以語言級(jí)協(xié)例程來實(shí)行。該構(gòu)造可以可選地允許軟件流水線化事務(wù)的更容易的構(gòu)造,其中,影響?yīng)毩⒆兞康氖聞?wù)組可以來回通過控制以覆蓋具有實(shí)現(xiàn)耐久提交的間隔的處理器使用。

在塊895處,可以實(shí)行持久性提交阻止指令。如前所述,持久性提交阻止指令在被實(shí)行時(shí)可以操作為阻止或停止在一個(gè)或多個(gè)類型的持久性提交阻止指令之后的后續(xù)指令的實(shí)行(例如,存儲(chǔ)到持久性存儲(chǔ)器指令、存儲(chǔ)到持久性存儲(chǔ)器和存儲(chǔ)到非持久性存儲(chǔ)器指令二者、所有指令等),直至由先前持久性提交劃界指令所劃界的所有存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)為止。這可能導(dǎo)致性能懲罰。然而,通過在與持久性提交劃界指令分離的指令中具有阻止操作有助于減少該性能懲罰。此外,通過具有非阻止持久性提交檢查指令軟件可以測(cè)量進(jìn)展,并且智能地確定持久性提交阻止指令可以被推遲多長,由此進(jìn)一步有助于減少性能懲罰。軟件可以使用在不同時(shí)間順序地實(shí)行的持久性提交檢查指令的多個(gè)實(shí)例,以實(shí)現(xiàn)輪詢完成操作,其中持久性提交阻止指令可以基于持久性提交檢查指令的測(cè)量而被一再推遲(例如,甚至是最大延遲),并且然后在需要之前被實(shí)行。替代地,軟件可以使用持久性提交檢查指令,以確保其完全不需要實(shí)行持久性提交阻止指令。有利地,這樣的指令可以有助于允許軟件高效地處理對(duì)被接受到存儲(chǔ)器但是尚未離開一個(gè)或多個(gè)存儲(chǔ)器控制器的存儲(chǔ)進(jìn)行持久排序所需的可能較長和/或可能可變的時(shí)間。

圖9是處理器900的實(shí)施例的框圖。處理器具有指令集902。如所示,在一些實(shí)施例中,指令集可以包括單個(gè)域持久性提交劃界指令904、單個(gè)域持久性提交阻止指令906、以及可選的單個(gè)域持久性提交檢查指令,不過這不是要求的。替代地,在其他實(shí)施例中,指令集可以可選地包括所圖示指令的子集(例如,與這些指令中的任何單個(gè)一樣少)。

在一些實(shí)施例中,這些指令中的每一個(gè)可以類似于上述公開的對(duì)應(yīng)命名的指令,除了其可以適用于單個(gè)存儲(chǔ)器控??制器域而不是多個(gè)存儲(chǔ)器控制器域之外。在一些實(shí)施例中,指令可以指定或以其他方式指示該域(例如,指示邏輯處理器標(biāo)識(shí)符)。在一些實(shí)施例中,這些指令中的每一個(gè)可以獨(dú)立地針對(duì)多個(gè)存儲(chǔ)器控制器中的每一個(gè)進(jìn)行操作。軟件可以進(jìn)而針對(duì)存儲(chǔ)器控制器中的全部或一些來使用這些指令,以確保在每個(gè)存儲(chǔ)器控制器處并行地滿足其相關(guān)性。例如,軟件可以用單獨(dú)的每存儲(chǔ)器控制器握手(例如,每個(gè)存儲(chǔ)器控制器域中的單獨(dú)的劃界值)合成多存儲(chǔ)器控制器持久性握手。這允許軟件高效地工作,特別是當(dāng)其所有操作通過設(shè)計(jì)被限制到單個(gè)非統(tǒng)一存儲(chǔ)器訪問(NUMA)域。在這樣的情況下,軟件可以僅需要在單個(gè)NUMA域中實(shí)行排序。

這些單個(gè)域指令的一個(gè)可能的優(yōu)點(diǎn)是靈活性,以及來自不必停轉(zhuǎn)僅需要與存儲(chǔ)器控制器的子集的握手的持久性提交阻止指令(例如,當(dāng)用于特定事務(wù)的所有高速緩存行已知在相同的NUMA域中時(shí))的可能的性能益處。盡管該方案使用更多的指令,但是其不一定具有對(duì)應(yīng)更高數(shù)目的停轉(zhuǎn),因?yàn)樵谝粋€(gè)存儲(chǔ)器控制器處的等待還可以覆蓋對(duì)于其他存儲(chǔ)器控制器而言耗盡(drain)所花費(fèi)的時(shí)間。

圖7和圖9示出了適用于多個(gè)存儲(chǔ)器控制器的兩個(gè)不同的實(shí)施例。這些不同的實(shí)施例不是相互排斥的,而是可以可選地一起使用。這樣的單調(diào)增加的值的使用是其中可以實(shí)現(xiàn)實(shí)施例的一個(gè)可能的方式。然而,還預(yù)計(jì)到其他方式。例如,一種可能的方法是強(qiáng)制所有的存儲(chǔ)器控制器完全耗盡,并且在不允許任何新的值進(jìn)入劃界和阻止指令之間的情況下變空。又其他方式將對(duì)本領(lǐng)域并且受益于本公開的技術(shù)人員來說將是顯而易見的。

示例性核架構(gòu)、處理器和計(jì)算機(jī)架構(gòu)

處理器核出于不同的目的以不同的方式并且在不同的處理器中實(shí)現(xiàn)。例如,這樣的核的實(shí)現(xiàn)可以包括:1)意圖用于通用計(jì)算的通用有序核;2)意圖用于通用計(jì)算的高性能通用亂序核;3)主要意圖用于圖形和/或科學(xué)(吞吐量)計(jì)算的專用核。不同處理器的實(shí)現(xiàn)可以包括:1)包括意圖用于通用計(jì)算的一個(gè)或多??個(gè)通用有序核和/或意圖用于通用計(jì)算的一個(gè)或多個(gè)通用亂序核的CPU;以及2)包括主要意圖用于圖形和/或科學(xué)(吞吐量)的一個(gè)或多個(gè)專用核的協(xié)處理器。這樣的不同處理器導(dǎo)致不同的計(jì)算機(jī)系統(tǒng)架構(gòu),其可以包括:1)來自CPU的單獨(dú)的芯片上的協(xié)處理器;2)與CPU在相同封裝中的單獨(dú)管芯上的協(xié)處理器;3)與CPU在相同管芯上的協(xié)處理器(在該情況下,這樣的協(xié)處理器有時(shí)被稱為專用邏輯,諸如集成圖形和/或科學(xué)(吞吐量)邏輯或者作為專用核);以及4)可以在相同管芯上包括所描述的CPU的片上系統(tǒng)(有時(shí)被稱為(一個(gè)或多個(gè))應(yīng)用核或(一個(gè)或多個(gè))應(yīng)用處理器),上述協(xié)處理器以及附加功能。接下來描述示例性核架構(gòu),之后是示例性處理器和計(jì)算機(jī)架構(gòu)的描述。

示例性核架構(gòu)

有序和亂序核框圖

圖10A是圖示根據(jù)本發(fā)明的實(shí)施例的示例性有序流水線和示例性寄存器重命名、亂序發(fā)出/執(zhí)行流水線二者的框圖。圖10B是圖示根據(jù)本發(fā)明的實(shí)施例的要被包括在處理器中的有序架構(gòu)核的示例性實(shí)施例和示例性寄存器重命名、亂序發(fā)出/執(zhí)行架構(gòu)核二者的框圖。圖10A-B中的實(shí)線框圖示了有序流水線和有序核,而虛線框的可選附加圖示了寄存器重命名、亂序發(fā)出/執(zhí)行流水線和核。考慮到有序方面是亂序方面的子集,將描述亂序方面。

在圖10A中,處理器流水線1000包括取出級(jí)1002、長度解碼級(jí)1004、解碼級(jí)1006、分配級(jí)1008、重命名級(jí)1010、調(diào)度(也已知為分派或發(fā)出)級(jí)1012、寄存器讀取/存儲(chǔ)器讀取級(jí)1014、執(zhí)行級(jí)1016、回寫/存儲(chǔ)器寫入級(jí)1018、異常處理級(jí)1022和提交級(jí)1024。

圖10B示出了處理器核1090,其包括耦合到執(zhí)行引擎單元1050的前端單元1030,并且二者都耦合到存儲(chǔ)器單元1070。核1090可以是精簡指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、甚長指令字(VLIW)核或混合或替代的核類型。作為又一選項(xiàng),核1090可以是專用核,諸如例如,網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理單元(GPGPU)核、圖形核等。

前端單元1030包括耦合到指令高速緩存單元1034的分支預(yù)測(cè)單元1032,所述指令高速緩存單元1034耦合到指令轉(zhuǎn)換后備緩沖器(TLB)1036,所述指令轉(zhuǎn)換后備緩沖器1036耦合到指令取出單元1038,所述指令取出單元1038耦合到解碼單元1040。解碼單元1040(或解碼器)可以解碼指令,并且作為輸出生成一個(gè)或多個(gè)微操作、微代碼入口點(diǎn)、微指令、其他指令或其他控制信號(hào),其從原始指令解碼或者以其他方式反映原始指令或者從原始指令得到。解碼單元1040可以使用各種不同的機(jī)制來實(shí)現(xiàn)。適當(dāng)?shù)臋C(jī)制的示例包括但不限于,查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核1090包括微代碼ROM或其他介質(zhì),其存儲(chǔ)用于特定微指令的微代碼(例如,在解碼單元單元1040或以其他方式在前端單元1030中)。解碼單元1040被耦合到執(zhí)行引擎單元1050中的重命名/分配器單元1052。

執(zhí)行引擎單元1050包括耦合到退役單元1054和一個(gè)或多個(gè)調(diào)度單元1056的集合的重命名/分配器單元1052。(一個(gè)或多個(gè))調(diào)度器單元1056表示任何數(shù)目的不同調(diào)度器,包括保留站、中央指令窗口等。(一個(gè)或多個(gè))調(diào)度器單元1056被耦合到(一個(gè)或多個(gè))物理寄存器文件單元1058。(一個(gè)或多個(gè))物理寄存器文件單元1058中的每一個(gè)表示一個(gè)或多個(gè)物理寄存器文件,其中的不同的物理寄存器文件存儲(chǔ)一個(gè)或多個(gè)不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、封裝整數(shù)、封裝浮點(diǎn)、矢量整數(shù)、矢量浮點(diǎn)等、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,(一個(gè)或多個(gè))物理寄存器文件單元1058包括矢量寄存器單元、寫入掩蔽寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)矢量寄存器、矢量掩蔽寄存器和通用寄存器。(一個(gè)或多個(gè))物理寄存器文件單元1058由退役單元1054重疊,以說明其中寄存器重命名和亂序執(zhí)行可以被實(shí)現(xiàn)的各種方式(例如,使用(一個(gè)或多個(gè))重排序緩沖器以及(一個(gè)或多個(gè))退役寄存器文件;使用(一個(gè)或多個(gè))未來文件、(一個(gè)或多個(gè))歷史緩沖器、以及(一個(gè)或多個(gè))退役寄存器文件;使用寄存器映射和寄存器池等)。退役單元1054和(一個(gè)或多個(gè))物理寄存器文件單元1058耦合到(一個(gè)或多個(gè))執(zhí)行群集1060。(一個(gè)或多個(gè))執(zhí)行群集1060包括一個(gè)或多個(gè)執(zhí)行單元1062的集合以及一個(gè)或多個(gè)存儲(chǔ)器訪問單元1064的集合。執(zhí)行單元1062可以實(shí)行各種操作(例如,移位、加法、減法、乘法)并且在各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、封裝整數(shù)、封裝浮點(diǎn)、矢量整數(shù)、矢量浮點(diǎn))上實(shí)行操作。盡管一些實(shí)施例可以包括專用于特定功能或功能集合的多個(gè)執(zhí)行單元,但是其他實(shí)施例可以僅包括一個(gè)執(zhí)行單元或所有實(shí)行所有功能的多個(gè)執(zhí)行單元。(一個(gè)或多個(gè))調(diào)度器單元1056、(一個(gè)或多個(gè))物理寄存器文件單元1058和(一個(gè)或多個(gè))執(zhí)行群集1060被示出為可能復(fù)數(shù)的,因?yàn)樘囟▽?shí)施例創(chuàng)建用于特定類型的數(shù)據(jù)/操作的特定流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/封裝整數(shù)/封裝浮點(diǎn)/矢量整數(shù)/矢量浮點(diǎn)流水線和/或存儲(chǔ)器訪問流水線,每個(gè)都具有其自己的調(diào)度器單元、(一個(gè)或多個(gè))物理寄存器文件單元和/或執(zhí)行群集——并且在單獨(dú)的存儲(chǔ)器訪問流水線的情況下,實(shí)現(xiàn)特定實(shí)施例,其中僅該流水線的執(zhí)行群集具有(一個(gè)或多個(gè))存儲(chǔ)器訪問單元1064)。還應(yīng)當(dāng)理解,在使用單獨(dú)流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以是亂序發(fā)出/執(zhí)行并且其余是有序的。

存儲(chǔ)器訪問單元1064的集合可以耦合到存儲(chǔ)器單元1070,其包括耦合到數(shù)據(jù)高速緩存單元1074的數(shù)據(jù)TLB單元1072,所述數(shù)據(jù)高速緩存單元1074耦合到2級(jí)(L2)高速緩存單元1076。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問單元1064可以包括加載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其中的每一個(gè)可以耦合到存儲(chǔ)器單元1070中的數(shù)據(jù)TLB單元1072。指令高速緩存單元1034進(jìn)一步被耦合到存儲(chǔ)器單元1070中的2級(jí)(L2)高速緩存單元1076。L2高速緩存單元1076被耦合到一個(gè)或多個(gè)其他級(jí)的高速緩存并且最終耦合到主存儲(chǔ)器。

通過示例的方式,示例性寄存器重命名、亂序發(fā)出/執(zhí)行核架構(gòu)可以如下實(shí)現(xiàn)流水線1000:1)指令取出1038實(shí)行取出和長度解碼級(jí)1002和1004;2)解碼單元1040實(shí)行解碼級(jí)1006;3)重命名/分配器單元1052實(shí)行分配級(jí)1008和重命名級(jí)1010;4)(一個(gè)或多個(gè))調(diào)度器單元1056實(shí)行調(diào)度級(jí)1012;5)(一個(gè)或多個(gè))物理寄存器文件單元1058和存儲(chǔ)器單元1070實(shí)行寄存器讀取/存儲(chǔ)器讀取級(jí)1014;執(zhí)行群集1060實(shí)行執(zhí)行級(jí)1016;6)存儲(chǔ)器單元1070和(一個(gè)或多個(gè))物理寄存器文件單元1058實(shí)行回寫/存儲(chǔ)器寫入級(jí)1018;7)各種單元可以在異常處理級(jí)1022中被涉及;并且8)退役單元1054和(一個(gè)或多個(gè))物理寄存器文件單元1058實(shí)行提交級(jí)1024。

核1090可以支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有已經(jīng)添加有較新版本的一些擴(kuò)展);加利福尼亞州桑尼維爾的MIPS科技的MIPS指令集;ARM指令集(具有加利福尼亞州桑尼維爾的ARM控股公司的可選附加擴(kuò)展,諸如NEON),包括本文中描述的(一個(gè)或多個(gè))指令。在一個(gè)實(shí)施例中,核1090包括用于支持封裝數(shù)據(jù)指令集擴(kuò)展(例如,AVX1、AVX2)的邏輯,從而允許被許多多媒體應(yīng)用使用的操作使用封裝數(shù)據(jù)來實(shí)行。

應(yīng)當(dāng)理解,核可以支持多線程(執(zhí)行操作或線程的兩個(gè)或更多個(gè)并行集合),并且可以以各種方式來這樣做,包括時(shí)間分段多線程、同時(shí)多線程(其中單個(gè)物理核提供用于物理核同時(shí)多線程化的線程中的每一個(gè)的邏輯核)或其組合(例如,時(shí)間分段取出和解碼以及此后的同時(shí)多線程,諸如在Intel?超線程技術(shù)中)。

雖然寄存器重命名在亂序執(zhí)行的上下文中進(jìn)行描述,但是應(yīng)當(dāng)理解,寄存器重命名可以在有序架構(gòu)中使用。盡管所示的處理器的實(shí)施例還可以包括單獨(dú)的指令和數(shù)據(jù)高速緩存單元1034/1074和共享L2高速緩存單元1076,但是替代實(shí)施例可以具有用于指令和數(shù)據(jù)二者的單個(gè)內(nèi)部高速緩存,諸如例如1級(jí)(L1)內(nèi)部高速緩存或多級(jí)內(nèi)部高速緩存。在一些實(shí)施例中,系統(tǒng)可以包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合。替代地,所有高速緩存可以在核和/或處理器外部。

具體示例性有序核架構(gòu)

圖11A-B圖示了更具體的示例性有序核架構(gòu)的框圖,其核可以是芯片中的若干邏輯塊(包括相同類型和/或不同類型的其他核)中的一個(gè)。取決于應(yīng)用,邏輯塊通過高帶寬互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))與一些固定功能邏輯、存儲(chǔ)器I/O接口和其他必要的I/O邏輯進(jìn)行通信。

圖11A是根據(jù)本發(fā)明的實(shí)施例的單個(gè)處理器核連同其到管芯上互連網(wǎng)絡(luò)1102以及與其2級(jí)(L2)高速緩存1104的本地子集的連接的框圖。在一個(gè)實(shí)施例中,指令解碼器1100支持具有封裝數(shù)據(jù)指令集擴(kuò)展的x86指令集。L1高速緩存1106允許到標(biāo)量和矢量單元中的高速緩存存儲(chǔ)器的低等待時(shí)間訪問。盡管在一個(gè)實(shí)施例(為了簡化設(shè)計(jì))中,標(biāo)量單元1108和矢量單元1110使用單獨(dú)的寄存器組(分別是標(biāo)量寄存器11112和矢量寄存器1114),并且在其之間傳輸?shù)臄?shù)據(jù)被寫入到存儲(chǔ)器并且然后從1級(jí)(L1)高速緩存1106被讀回,但是本發(fā)明的替代實(shí)施例可以使用不同的方法(例如,使用單個(gè)寄存器集合或包括允許數(shù)據(jù)在兩個(gè)寄存器文件之間被傳輸而不被寫入和讀回的通信路徑) 。

L2高速緩存1104的本地子集是全局L2高速緩存的一部分,其被劃分成單獨(dú)立的本地子集,每個(gè)處理器核一個(gè)。每個(gè)處理器核具有對(duì)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)與彼此進(jìn)行通信。每個(gè)環(huán)形數(shù)據(jù)路徑每個(gè)方向是1012位寬。

圖11B是根據(jù)本發(fā)明的實(shí)施例的圖11A中的處理器核的部分的放大視圖。圖11B包括L1高速緩存1104的L1數(shù)據(jù)高速緩存1106A部分以及關(guān)于矢量單元1110和矢量寄存器1114的更多細(xì)節(jié)。具體地,矢量單元1110是16寬矢量處理單元(VPU)(見16寬ALU 1128),其執(zhí)行整數(shù)、單精度浮點(diǎn)和雙精度浮點(diǎn)指令中的一個(gè)或多個(gè)。VPU用拌和(swizzle)單元1120支持對(duì)寄存器輸入進(jìn)行拌和、用數(shù)值轉(zhuǎn)換單元1122A-B支持?jǐn)?shù)值轉(zhuǎn)換、以及在存儲(chǔ)器輸入上用復(fù)制單元1124支持復(fù)制。寫入掩蔽寄存器1126允許預(yù)測(cè)所得到的矢量寫入。

具有集成存儲(chǔ)器控制器和圖形的處理器

圖12是根據(jù)本發(fā)明的實(shí)施例的處理器1200的框圖,所述處理器1200可以具有多于一個(gè)核、可以具有集成存儲(chǔ)器控制器并且可以具有集成圖形的。圖12中的實(shí)線框圖示了具有單個(gè)核1202A、系統(tǒng)代理1210、一個(gè)或多個(gè)總線控制器單元1216集合的處理器1200,而虛線框的可選添加圖示了具有多個(gè)核1202A-N、系統(tǒng)代理單元1210中的一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元1214的集合以及專用邏輯1208的替代處理器。

因此,處理器1200的不同實(shí)現(xiàn)可以包括:1)具有作為集成圖形和/或科學(xué)(吞吐量)邏輯的專用邏輯1208(其可以包括一個(gè)或多??個(gè)核)以及作為一個(gè)或多個(gè)通用核(例如,通用有序核、通用亂序核、二者的組合)的核1202A-N的CPU;2)具有作為主要意圖用于圖形和/或科學(xué)(吞吐量)的大量專用核的核 1202A-N的協(xié)處理器;以及3)具有作為大量通用有序核的核1202A-N的協(xié)處理器。因此,處理器1200可以是通用處理器、協(xié)處理器或?qū)S锰幚砥?,諸如例如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐量多集成核(MIC)協(xié)處理器(包括30個(gè)或更多個(gè)核)、嵌入式處理器等。處理器可以在一個(gè)或多個(gè)芯片上實(shí)現(xiàn)。處理器1200可以是使用諸如例如BiCMOS、CMOS或NMOS之類的任何數(shù)目的處理技術(shù)的一個(gè)或多個(gè)襯底的部分和/或可以在所述一個(gè)或多個(gè)襯底上實(shí)現(xiàn)。

存儲(chǔ)器層級(jí)包括核內(nèi)的一個(gè)或多個(gè)級(jí)的高速緩存、一個(gè)或多個(gè)共享的高速緩存單元1206的集合、以及耦合到集成存儲(chǔ)器控制器單元1214的集合的外部存儲(chǔ)器(未示出)。共享高速緩存單元1206的集合可以包括一個(gè)或多??個(gè)中間級(jí)高速緩存,諸如2級(jí)(L2)、3級(jí)(L3)、4級(jí)(L4)或其他級(jí)的高速緩存、最后一級(jí)高速緩存(LLC)和/或其組合。盡管在一個(gè)實(shí)施例中,基于環(huán)的互連單元1212互連集成圖形邏輯1208、共享高速緩存單元1206的集合以及系統(tǒng)代理單元1210 /(一個(gè)或多個(gè))集成存儲(chǔ)器控制器單元1214,但是替代實(shí)施例可以使用用于互連這樣的單元的任何數(shù)目的公知的技術(shù)。在一個(gè)實(shí)施例中,在一個(gè)或多個(gè)高速緩存單元1206與核1202-A-N之間保持一致性。

在一些實(shí)施例中,核1202A-N中的一個(gè)或多個(gè)有多線程能力。系統(tǒng)代理1210包括協(xié)調(diào)和操作核1202A-N的那些組件。系統(tǒng)代理單元1210可以包括例如功率控制單元(PCU)和顯示單元。PCU可以是或包括調(diào)節(jié)核1202A-N和集成圖形邏輯1208的功率狀態(tài)所需要的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。

核1202A-N可以在架構(gòu)和/或指令集方面是同構(gòu)或異構(gòu)的;即,核1202A-N中的兩個(gè)或更多個(gè)可以能夠執(zhí)行相同的指令集,而其他可能能夠僅執(zhí)行該指令集的子集或不同的指令集。

示例性計(jì)算機(jī)架構(gòu)

圖13-21是示例性計(jì)算機(jī)架構(gòu)的框圖。本領(lǐng)域中已知的用于膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、手持PC、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)中心(hub)、交換機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備和各種其他電子設(shè)備的其他系統(tǒng)設(shè)計(jì)和配置也是適當(dāng)?shù)?。通常,如本文公開的能夠包含處理器和/或其他執(zhí)行邏輯的大量系統(tǒng)或電子設(shè)備通常是適當(dāng)?shù)摹?/p>

現(xiàn)在參考圖13,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)1300的框圖。系統(tǒng)1300可以包括耦合到控制器中心1320的一個(gè)或多??個(gè)處理器1310、1315。在一個(gè)實(shí)施例中,控制器中心1320包括圖形存儲(chǔ)器控制器中心(GMCH)1390和輸入/輸出中心(IOH)1350(其可能在分離的芯片上);GMCH 1390包括存儲(chǔ)器1340和協(xié)處理器1345所耦合到的存儲(chǔ)器和圖形控制器;IOH 1350將輸入/輸出(I/O)設(shè)備1360耦合到GMCH 1390。替代地,存儲(chǔ)器和圖形控制器中的一個(gè)或二者被集成在處理器內(nèi)(如本文所述),存儲(chǔ)器1340和協(xié)處理器1345被直接耦合到處理器1310,以及在具有IOH 1350的單個(gè)芯片中的控制器中心1320。

在圖13中用虛線表示附加處理器1315的可選性質(zhì)。每個(gè)處理器1310、1315可以包括本文描述的處理核中的一個(gè)或多個(gè),并且可以是某個(gè)版本的處理器1200。

存儲(chǔ)器1340可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)或者二者組合。對(duì)于至少一個(gè)實(shí)施例,控制器中心1320經(jīng)由多點(diǎn)總線與(一個(gè)或多個(gè))處理器1310、1315進(jìn)行通信,諸如前側(cè)總線(FSB)、諸如QuickPath互連(QPI)之類的點(diǎn)對(duì)點(diǎn)接口或類似的連接1395。

在一個(gè)實(shí)施例中,協(xié)處理器1345是專用處理器,諸如例如,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。在一個(gè)實(shí)施例中,控制器中心1320可以包括集成圖形加速器。

在物理資源1310、1315之間在指標(biāo)的一系列度量方面可能存在各種差異,包括架構(gòu)、微架構(gòu)、熱、功耗特性等。

在一個(gè)實(shí)施例中,處理器1310執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可以嵌入指令內(nèi)。處理器1310將這些協(xié)處理器指令識(shí)別為應(yīng)當(dāng)由附連的協(xié)處理器1345執(zhí)行的類型。因此,處理器1310在協(xié)處理器總線或其他互連上向協(xié)處理器1345發(fā)出這些協(xié)處理器指令(或表示協(xié)處理器指令的控制信號(hào))。(一個(gè)或多個(gè))協(xié)處理器1345接受并且執(zhí)行接收到的協(xié)處理器指令。

現(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è)可以是某個(gè)版本的處理器1200。在本發(fā)明的一個(gè)實(shí)施例中,處理器1470和1480分別是處理器1310和1315,而協(xié)處理器1438是協(xié)處理器1345。在另一實(shí)施例中,處理器1470和1480分別是處理器1310協(xié)處理器1345。

處理器1470和1480被示出分別包括集成存儲(chǔ)器控制器(IMC)單元1472和1482。作為其總線控制器單元的部分,處理器1470還包括點(diǎn)對(duì)點(diǎn)(P-P)接口1476和1478;類似地,第二處理器1480包括P-P接口1486和1488。處理器1470、1480可以使用P-P接口電路1478、1488經(jīng)由點(diǎn)對(duì)點(diǎn)(P-P)接口1450來交換信息。如圖14所示,IMC 1472和1482將處理器耦合到相應(yīng)存儲(chǔ)器,即存儲(chǔ)器1432和存儲(chǔ)器1434,其可以是本地附連到相應(yīng)處理器的主存儲(chǔ)器的部分。

處理器1470、1480可以均經(jīng)由單獨(dú)的P-P接口1452、1454使用點(diǎn)對(duì)點(diǎn)接口電路1476、1494、1486、1498來與芯片組1490交換信息。芯片組1490可以可選地經(jīng)由高性能接口1439來與協(xié)處理器1438交換信息。在一個(gè)實(shí)施例中,協(xié)處理器1438是專用處理器,諸如例如,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。

共享高速緩存(未示出)可以被包括在兩個(gè)處理器中的任何一個(gè)處理器中或在其外部,而經(jīng)由P-P互連與處理器連接,使得如果處理器被置于低功率模式中,則任何一個(gè)或兩個(gè)處理器的本地高速緩存信息可以被存儲(chǔ)在共享高速緩存中。

芯片組1490可以經(jīng)由接口1496耦合到第一總線1416。在一個(gè)實(shí)施例中,第一總線1416可以是外圍組件互連(PCI)總線,或諸如快速PCI總線之類的總線或另一第三代I/O互連總線,但是本發(fā)明的范圍并不限于此。

如圖14中所示,各種I/O設(shè)備1414可以耦合到第一總線1416,連同總線橋1418,所述總線橋1418將第一總線1416耦合到第二總線1420。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)附加處理器1415(諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU、加速器(諸如例如,圖形加速器或數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場(chǎng)可編程門陣列或任何其他處理器)被耦合到第一總線1416。在一個(gè)實(shí)施例中,第二總線1420可以是低引腳計(jì)數(shù)(LPC)總線。在一個(gè)實(shí)施例中,各種設(shè)備可以被耦合到第二總線1420,包括例如鍵盤和/或鼠標(biāo)1422、通信設(shè)備1427和可以包括指令/代碼和數(shù)據(jù)1430的存儲(chǔ)單元1428,諸如盤驅(qū)動(dòng)器或其他大容量存儲(chǔ)設(shè)備。此外,音頻I/O 1424可以被耦合到第二總線1420。注意,其他架構(gòu)可以是可能的。例如,代替圖14的點(diǎn)對(duì)點(diǎn)架構(gòu),系統(tǒng)可以實(shí)現(xiàn)多點(diǎn)總線或其他這樣的架構(gòu)。

現(xiàn)在參考圖15,示出了根據(jù)本發(fā)明的實(shí)施例的第二更具體的示例性系統(tǒng)1500的框圖。如在圖14和圖15中的元件承載類似的附圖標(biāo)記,并且圖14的特定方面已經(jīng)從圖15中省略,以避免混淆圖15的其他方面。

圖15圖示了處理器1470、1480可以分別包括集成存儲(chǔ)器和I/O控制邏輯(“CL”)1472和1482。因此,CL 1472、1482包括集成存儲(chǔ)器控制器單元并且包括I/O控制邏輯。圖15圖示了不僅存儲(chǔ)器1432、1434耦合到1472、1482而且I/O設(shè)備1514也耦合到控制邏輯1472、1482。傳統(tǒng)(legacy)I/O設(shè)備1515耦合到芯片組1490。

現(xiàn)在參考圖16,示出了根據(jù)本發(fā)明的實(shí)施例的SoC 1600的框圖。圖12中的類似元件承載類似的附圖標(biāo)記。而且,虛線框是更高級(jí)的SoC上的可選特征。在圖16中,(一個(gè)或多個(gè))互連單元1602被耦合到:應(yīng)用處理器1610,其包括一個(gè)或多個(gè)核152A-N的集合和(一個(gè)或多個(gè))共享高速緩存單元1206;系統(tǒng)代理單元1210;(一個(gè)或多個(gè))總線控制器單元1216;(一個(gè)或多個(gè))集成存儲(chǔ)器控制器單元1214;一組或一個(gè)或多個(gè)協(xié)處理器1620,其可以包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元1630;直接存儲(chǔ)器訪問(DMA)單元1632;以及用于耦合到一個(gè)或多個(gè)外部顯示器的顯示單元1640。在一個(gè)實(shí)施例中,(一個(gè)或多個(gè))協(xié)處理器1620包括專用處理器,諸如例如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、嵌入式處理器等。

本文公開的機(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è)備。

諸如圖14中圖示的代碼1430的程序代碼可以應(yīng)用于輸入指令以實(shí)行本文描述的功能并且生成輸出信息。輸出信息可以以已知的方式應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。對(duì)于本申請(qǐng)的目的,處理系統(tǒng)包括具有處理器的任何系統(tǒng),諸如,例如;數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器。

程序代碼可以以高級(jí)的面向過程或面向?qū)ο蟮木幊陶Z言來實(shí)現(xiàn)以與處理系統(tǒng)進(jìn)行通信。程序代碼還可以以匯編或機(jī)器語言來實(shí)現(xiàn),如果需要的話。事實(shí)上,本文描述的機(jī)制在范圍上不限于任何特定編程語言。在任何情況下,語言可以是編譯或解釋語言。

至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以通過存儲(chǔ)在機(jī)器可讀介質(zhì)上的表示處理器內(nèi)的各種邏輯的代表性指令來實(shí)現(xiàn),其當(dāng)由機(jī)器讀取時(shí),使得機(jī)器制造用于實(shí)行本文描述的技術(shù)的邏輯。稱為“IP核”的這樣的表示可以被存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上并且被供應(yīng)到各種客戶或制造設(shè)施,以加載到實(shí)際上作出邏輯或處理器的制造機(jī)器中。

這樣的機(jī)器可讀存儲(chǔ)介質(zhì)可以包括但不限于,由機(jī)器或設(shè)備制造或形成的物品的非臨時(shí)有形布置,包括諸如硬盤之類的存儲(chǔ)介質(zhì)、任何其他類型的盤(包括軟盤、光盤、壓縮盤只讀存儲(chǔ)器(CD-ROM)、可重寫壓縮盤(CD-RW)和磁光盤)、半導(dǎo)體設(shè)備(諸如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)(諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM))、可擦除可編程只讀存儲(chǔ)器(EPROM)、閃速存儲(chǔ)器、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、相變存儲(chǔ)器(PCM))、磁卡或光卡或者適用于存儲(chǔ)電子指令的任何其他類型的介質(zhì)。

因此,本發(fā)明的實(shí)施例還包括非臨時(shí)有形機(jī)器可讀介質(zhì),包含指令或包含設(shè)計(jì)數(shù)據(jù),諸如硬件描述語言(HDL),其定義本文描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征。這樣的實(shí)施例還可以被稱為程序產(chǎn)品。

仿真(包括二進(jìn)制翻譯、代碼變形等)

在一些情況下,指令轉(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)換可能在處理器上、處理器外或部分在處理器上且部分在處理器外。

圖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的處理器原生執(zhí)行的x86二進(jìn)制代碼1706。具有至少一個(gè)x86指令集核1716的處理器表示可以通過兼容地執(zhí)行或以其他方式處理下述來實(shí)行與具有至少一個(gè)x86指令集核的英特爾處理器大體上相同功能的任何處理器:(1)英特爾x86指令集核的指令集的大部分或(2)目的在于在具有至少一個(gè)x86指令集核的英特爾處理器上運(yùn)行的應(yīng)用或其他軟件的對(duì)象代碼版本,以便于與具有至少一個(gè)x86指令集核的英特爾處理器實(shí)現(xiàn)大體上相同結(jié)果。x86編譯器1704表示操作為生成x86二進(jìn)制代碼1706(例如,對(duì)象代碼)的編譯器,其可以具有或不具有附加鏈接處理的情況下在具有至少一個(gè)x86指令集核1716的處理器上被執(zhí)行。類似地,圖17示出了以高級(jí)語言1702的程序可以使用替代指令集編譯器1708來編譯,以生成替代指令集二進(jìn)制代碼1710,其可以由不具有至少一個(gè)x86指令集核1714的處理器來原生地執(zhí)行(例如,具有執(zhí)行加利福尼亞州桑尼維爾的MIPS科技的MIPS指令集和/或執(zhí)行加利福尼亞州桑尼維爾的ARM控股公司的ARM指令集的核的處理器)。指令轉(zhuǎn)換器1712用于將x86二進(jìn)制碼1706轉(zhuǎn)換成可以由不具有x86指令集核1714的處理器原生地執(zhí)行的代碼。該轉(zhuǎn)換的代碼不太可能與替代指令集二進(jìn)制代碼1710相同,因?yàn)槟軌蜻@樣的指令轉(zhuǎn)換器難以制作;然而,轉(zhuǎn)換的代碼將完成一般操作,并且在由來自替代指令集的指令組成。因此,指令轉(zhuǎn)換器1712表示軟件、固件、硬件或其組合,其通過仿真、模擬或任何其他處理來允許不具有x86指令集處理器或核的處理器或其他電子設(shè)備執(zhí)行x86二進(jìn)制代碼1706。

針對(duì)圖2和圖5-7中任一個(gè)描述的組件、特征和細(xì)節(jié)還可以可選地適用于圖4中的任何一個(gè)。此外,針對(duì)裝置中的任何一個(gè)描述的組件、功能和細(xì)節(jié)還可以可選地適用于在實(shí)施例中可以有由和/或用這樣的裝置實(shí)行的方法中的任何一個(gè)。本文所述的處理器中的任何一個(gè)可以被包括在本文公開的計(jì)算機(jī)系統(tǒng)中的任何一個(gè)中(例如,圖13-16)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)可以包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。替代地,計(jì)算機(jī)系統(tǒng)可以包括不需要被刷新的易失性存儲(chǔ)器或閃速存儲(chǔ)器的類型。本文公開的指令可以用本文示出的處理器中的任何一個(gè)來實(shí)行,所述處理器具有在本文示出的系統(tǒng)中的任何一個(gè)上的本文示出的微架構(gòu)中的任何一個(gè)。

在說明書和權(quán)利要求中,術(shù)語“耦合”和/或“連接”連同其派生可能已經(jīng)被使用。這些術(shù)語不旨在作為彼此的同義詞。而是,在實(shí)施例中,“連接”可以用于指示兩個(gè)或更多個(gè)元件彼此直接物理和/或電接觸。“耦合”可以意指兩個(gè)或更多元件彼此直接物理和/或電接觸。然而,“耦合”還可以意指兩個(gè)或更多個(gè)元件并非彼此直接接觸,但是仍彼此協(xié)作或交互。例如,執(zhí)行單元可以通過一個(gè)或多個(gè)介入組件來與寄存器和/或解碼單元耦合。在附圖中,箭頭用于示出連接和耦合。

術(shù)語“和/或”可能已經(jīng)被使用。如本文中所使用的,術(shù)語“和/或”意指一個(gè)或另一個(gè)或二者(例如,A和/或B意指A或B或者A和B二者)。

在以上描述中,已經(jīng)闡述了具體細(xì)節(jié),以便于提供對(duì)實(shí)施例的透徹理解。然而,其他實(shí)施例可以在沒有這些具體細(xì)節(jié)中的一些的情況下實(shí)踐。本發(fā)明的范圍不由以上提供的具體示例來確定,而是僅由以下權(quán)利要求來確定。在其他實(shí)例中,公知的電路、結(jié)構(gòu)、設(shè)備和操作已經(jīng)以框圖形式和/或沒有細(xì)節(jié)的情況下被示出,以便于避免混淆對(duì)本說明書的理解。在認(rèn)為適當(dāng)?shù)那闆r下,附圖標(biāo)記或附圖標(biāo)記的終端部分已經(jīng)在附圖之中重復(fù),以指示對(duì)應(yīng)或類似的元件,其可以可選地具有類似或相同的特性,除非另有指定或以其他方式是清楚顯然的。

特定操作可以由硬件組件來實(shí)行,或者可以以機(jī)器可執(zhí)行或電路可執(zhí)行指令來體現(xiàn),其可以用于產(chǎn)生和/或?qū)е掠脤?shí)行操作的指令編程的機(jī)器、電路或硬件組件(例如,處理器、處理器的部分、電路等)。操作還可以可選地由硬件和軟件的組合來實(shí)行。處理器、機(jī)器、電路或硬件可以包括具體或特定電路,或者其他邏輯(例如,可能與固件和/或軟件組合的硬件)可操作為來執(zhí)行和/或處理指令并且存儲(chǔ)響應(yīng)于指令的結(jié)果。

一些實(shí)施例包括制造品(例如,計(jì)算機(jī)程序產(chǎn)品),其包括機(jī)器可讀介質(zhì)。介質(zhì)可以包括提供例如存儲(chǔ)以機(jī)器可讀形式的信息的機(jī)制。機(jī)器可讀介質(zhì)可以提供或已經(jīng)在其上存儲(chǔ)了指令或指令序列,如果和/或在由機(jī)器執(zhí)行時(shí)可操作為使得機(jī)器實(shí)行和/或?qū)е聶C(jī)器實(shí)行本文公開的一個(gè)或多個(gè)操作、方法或技術(shù)的機(jī)器。

在一些實(shí)施例中,機(jī)器可讀介質(zhì)可以包括非臨時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。例如,非臨時(shí)機(jī)器可讀存儲(chǔ)介質(zhì)可以包括軟盤、光存儲(chǔ)介質(zhì)、光盤、光數(shù)據(jù)存儲(chǔ)設(shè)備、CD-ROM、磁盤、磁光盤、只讀存儲(chǔ)器(ROM)、可編程ROM(PROM)、可擦除和可編程ROM(EPROM)、電可擦除和可編程ROM(EEPROM)、隨機(jī)存取存儲(chǔ)器(RAM)、靜態(tài)RAM(SRAM)、動(dòng)態(tài)RAM(DRAM)、閃速存儲(chǔ)器、相變存儲(chǔ)器、相變數(shù)據(jù)存儲(chǔ)材料、非易失性存儲(chǔ)器、非易失性數(shù)據(jù)存儲(chǔ)設(shè)備、非臨時(shí)存儲(chǔ)器、非臨時(shí)數(shù)據(jù)存儲(chǔ)設(shè)備等。非臨時(shí)機(jī)器可讀存儲(chǔ)介質(zhì)不包括臨時(shí)傳播信號(hào)。在一些實(shí)施例中,存儲(chǔ)介質(zhì)可以包括包含固體物質(zhì)的有形介質(zhì)。

適當(dāng)機(jī)器的示例包括但不限于,通用處理器、專用處理器、數(shù)字邏輯電路、集成電路等。適當(dāng)機(jī)器的又其他示例包括計(jì)算機(jī)系統(tǒng)或包括處理器、數(shù)字邏輯電路或集成電路的其他電子設(shè)備。這樣的計(jì)算機(jī)系統(tǒng)或電子設(shè)備的示例包括但不限于,臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)、平板計(jì)算機(jī)、上網(wǎng)本、智能電話、蜂窩電話、服務(wù)器、網(wǎng)絡(luò)設(shè)備(例如,路由器和交換機(jī))、移動(dòng)互聯(lián)網(wǎng)設(shè)備(MID)、媒體播放器、智能電視、上網(wǎng)機(jī)、機(jī)頂盒和視頻游戲控制器。

貫穿本說明書對(duì)例如“一個(gè)實(shí)施例”、“實(shí)施例”、“一個(gè)或多個(gè)實(shí)施例”、“一些實(shí)施例”的引用指示特定特征可以被包括在本發(fā)明的實(shí)踐中,但不一定被要求如此。類似地,在本說明書、附圖及其描述中,在單個(gè)實(shí)施例中,各種特征有時(shí)被分組在一起,以用于使本公開流線化的目的并且有助于理解各種發(fā)明方面。然而,本公開的方法不應(yīng)當(dāng)被解釋為反映本發(fā)明要求比在每個(gè)權(quán)利要求中明確闡述的更多特征的意圖。而是,如以下權(quán)利要求反映的,本發(fā)明的方面在于少于單個(gè)公開實(shí)施例的所有特征。因此,在具體實(shí)施方式之后的權(quán)利要求由此被明確地包含到本具體實(shí)施方式中,其中每個(gè)權(quán)利要求獨(dú)立地作為本發(fā)明的單獨(dú)實(shí)施例。

示例性實(shí)施例

以下示例關(guān)于另外的實(shí)施例。在示例中的細(xì)節(jié)可以在一個(gè)或多個(gè)其他實(shí)施例中的任何位置處使用。

示例1是一種處理器,其包括至少一個(gè)存儲(chǔ)器控制器和用于解碼持久性提交劃界指令的解碼單元。持久性提交劃界指令指示目的地存儲(chǔ)位置。處理器還包括與解碼單元和至少一個(gè)存儲(chǔ)器控制器耦合的執(zhí)行單元。執(zhí)行單元響應(yīng)于持久性提交劃界指令來將劃界值存儲(chǔ)在目的地存儲(chǔ)位置中。劃界值將在持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但不一定已經(jīng)被持久存儲(chǔ)的至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作,與在持久性提交劃界指令被實(shí)行時(shí)還沒有已經(jīng)被接受到存儲(chǔ)器的至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作相劃界。

示例2包括示例1的處理器,其中所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作中的至少一個(gè)以字節(jié)粒度和對(duì)應(yīng)于處理器的高速緩存行的高速緩存行粒度中的一個(gè)尋址到持久性存儲(chǔ)器。

示例3包括示例1的處理器,進(jìn)一步包括多個(gè)通用寄存器,并且其中,持久性提交劃界指令指示在通用寄存器之一中的目的地存儲(chǔ)位置。

示例4包括示例1的處理器,其中,處理器響應(yīng)于持久性提交劃界指令而不防止所述至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作在所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作被持久存儲(chǔ)之前被持久存儲(chǔ)。

示例5包括示例1的處理器,其中,執(zhí)行單元響應(yīng)于持久性提交劃界指令來存儲(chǔ)劃界值,所述劃界值將在持久性提交劃界指令被實(shí)行之前的時(shí)間已經(jīng)在至少一個(gè)存儲(chǔ)器控制器處被接收的所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作與在持久性提交劃界指令被實(shí)行之后的時(shí)間在至少一個(gè)存儲(chǔ)器控制器處被接收的所述至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作相劃界。

示例6包括示例1的處理器,進(jìn)一步包括單調(diào)增加值生成器,用于在存儲(chǔ)到存儲(chǔ)器操作到達(dá)至少一個(gè)存儲(chǔ)器控制器的第一存儲(chǔ)器控制器處時(shí)生成用于存儲(chǔ)到存儲(chǔ)器操作的單調(diào)增加的值。所述執(zhí)行單元響應(yīng)于持久性提交劃界指令來存儲(chǔ)單調(diào)增加的值,其已經(jīng)被生成用于在持久性提交劃界被實(shí)行之前最近已經(jīng)到達(dá)第一存儲(chǔ)器控制器的存儲(chǔ)到存儲(chǔ)器操作。

示例7包括示例6的處理器,其中,所述單調(diào)增加值生成器包括到達(dá)計(jì)數(shù)器。

示例8包括示例6的處理器,其中,所述單調(diào)增加值生成器包括計(jì)時(shí)器和時(shí)鐘中的一個(gè)。

示例9包括示例1的處理器,其中,至少一個(gè)存儲(chǔ)器控制器包括多個(gè)存儲(chǔ)器控制器。處理器還可選地包括至少一個(gè)單調(diào)增加值生成器,其用于生成在存儲(chǔ)到存儲(chǔ)器操作到達(dá)多個(gè)存儲(chǔ)器控制器中的每一個(gè)時(shí)用于存儲(chǔ)到存儲(chǔ)器操作的單調(diào)增加且相互一致的值。

示例10包括示例1的處理器,其中,至少一個(gè)存儲(chǔ)器控制器包括多個(gè)存儲(chǔ)器控制器。執(zhí)行單元響應(yīng)于持久性提交劃界指令來可選地存儲(chǔ)劃界值,所述劃界值將要在多個(gè)存儲(chǔ)器控制器的域內(nèi)的所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作與也要在多個(gè)存儲(chǔ)器控制器的域內(nèi)的所述至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作相劃界。

示例11包括示例1的處理器,其中,執(zhí)行單元響應(yīng)于持久性提交劃界指令來存儲(chǔ)劃界值,所述劃界值將要僅在單個(gè)存儲(chǔ)器控制器的域內(nèi)的所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作與也要僅在單個(gè)存儲(chǔ)器控制器的域內(nèi)的所述至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作相劃界。

示例12包括示例1至11中的任一項(xiàng)的處理器,其中,解碼單元解碼持久性提交阻止指令。持久性提交阻止指令指示存儲(chǔ)劃界值的源存儲(chǔ)位置。所述處理器響應(yīng)于持久性提交阻止指令來確保在執(zhí)行持久性提交阻止指令之后在至少任何存儲(chǔ)到持久性存儲(chǔ)器指令已經(jīng)被執(zhí)行之前,所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)。

示例13包括示例12的處理器,進(jìn)一步包括多個(gè)寄存器。所述持久性提交劃界指令隱含地指示多個(gè)寄存器中的給定寄存器作為目的地存儲(chǔ)位置。所述持久性提交阻止指令可選地隱含地指示給定寄存器作為源存儲(chǔ)位置。

示例14包括示例12的處理器,其中,所述處理器響應(yīng)于持久性提交阻止指令來暫停對(duì)要在執(zhí)行持久性提交阻止指令之后執(zhí)行的所述至少任何存儲(chǔ)到持久性存儲(chǔ)器指令的執(zhí)行,直至所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)為止。

示例15包括示例12的處理器,其中,所述處理器響應(yīng)于持久性提交阻止指令來確保,在執(zhí)行持久性提交阻止指令之后在所述任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前,但是不一定在執(zhí)行持久性提交阻止指令之后在任何存儲(chǔ)到非持久性存儲(chǔ)器指令被執(zhí)行之前,所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)。

示例16包括示例12的處理器,其中,所述處理器響應(yīng)于持久性提交阻止指令來確保,在執(zhí)行持久性提交阻止指令之后在所述任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前,并且在執(zhí)行持久性提交阻止指令之后在任何存儲(chǔ)到非持久性存儲(chǔ)器指令被執(zhí)行之前,所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)。

示例17包括示例12的處理器,其中,所述處理器響應(yīng)于持久性提交阻止指令來將劃界值與在其從至少一個(gè)存儲(chǔ)器控制器離開時(shí)從離開的存儲(chǔ)到存儲(chǔ)器操作獲得的值相比較。

示例18包括示例1至11中的任一項(xiàng)的處理器,其中,解碼單元用于解碼持久性提交檢查指令。持久性提交檢查指令指示目的地存儲(chǔ)位置。所述處理器響應(yīng)于持久性提交檢查指令來將值存儲(chǔ)在由持久性提交檢查指令所指示的目的地存儲(chǔ)位置中,其用于指示所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作是否已經(jīng)被持久存儲(chǔ)。

示例19包括示例18的處理器,其中,持久性提交檢查指令指示具有劃界值的源存儲(chǔ)位置。

示例20包括示例18的處理器,其中,所述處理器響應(yīng)于持久性提交檢查指令來將值存儲(chǔ)在由持久性提交檢查指令所指示的目的地存儲(chǔ)位置中,其用于指示持久存儲(chǔ)所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作的進(jìn)展水平。

示例21是一種處理器中的方法,其包括接收持久性提交劃界指令。持久性提交劃界指令指示目的地存儲(chǔ)位置。該方法還包括響應(yīng)于持久性提交劃界指令來將劃界值存儲(chǔ)在目的地存儲(chǔ)位置中。劃界值將在持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但不一定已經(jīng)被持久存儲(chǔ)的至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作,與在持久性提交劃界指令被實(shí)行時(shí)還沒有已經(jīng)被接受到存儲(chǔ)器的至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作相劃界。

示例22包括示例21的方法,進(jìn)一步包括:接收持久性提交阻止指令。所述持久性提交阻止指令指示存儲(chǔ)劃界值的源存儲(chǔ)位置。該方法還包括響應(yīng)于持久性提交阻止指令來確保在執(zhí)行持久性提交阻止指令之后在至少任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前,所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)。

示例23包括示例21的方法,進(jìn)一步包括:接收持久性提交檢查指令。所述持久性提交檢查指令指示目的地存儲(chǔ)位置。所述方法還包括響應(yīng)于持久性提交檢查指令來將值存儲(chǔ)在由持久性提交檢查指令所指示的目的地存儲(chǔ)位置中。要響應(yīng)于持久性提交檢查指令而被存儲(chǔ)的值指示所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作是否已經(jīng)被持久存儲(chǔ)。

示例24是一種用于處理指令的系統(tǒng),其包括互連以及與互聯(lián)耦合的處理器。所述處理器用于接收??持久性提交劃界指令。所述持久性提交劃界指令指示目的地存儲(chǔ)位置。所述處理器響應(yīng)于持久性提交劃界指令來將劃界值存儲(chǔ)在目的地存儲(chǔ)位置中。劃界值將在持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但不一定已經(jīng)被持久存儲(chǔ)的至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作,與在持久性提交劃界指令被實(shí)行時(shí)還沒有已經(jīng)被接受到存儲(chǔ)器的至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作相劃界。該系統(tǒng)還包括與互連耦合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。DRAM存儲(chǔ)指令集,該指令集在由處理器執(zhí)行時(shí)使得處理器實(shí)行操作,包括:(1)確定要實(shí)行的非相關(guān)工作,其不依賴于所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作;以及(2)在實(shí)行持久性提交劃界指令之后實(shí)行工作。

示例25包括示例24的系統(tǒng),其中,處理器用于接收持久性提交阻止指令。持久性提交阻止指令用于指示存儲(chǔ)劃界值的源存儲(chǔ)位置。該處理器響應(yīng)于持久性提交阻止指令來確保在執(zhí)行持久性提交阻止指令之后在至少任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前,所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)。

示例26是一種制品,其包括非臨時(shí)機(jī)器可讀存儲(chǔ)介質(zhì)。非臨時(shí)機(jī)器可讀存儲(chǔ)介質(zhì)存儲(chǔ)持久性提交劃界指令。所述持久性提交劃界指令指示目的地存儲(chǔ)位置。所述持久性提交劃界指令如果被機(jī)器執(zhí)行使機(jī)器實(shí)行包括將劃界值存儲(chǔ)在目的地存儲(chǔ)位置中的操作。劃界值用于將在持久性提交劃界指令被實(shí)行時(shí)已經(jīng)被接受到存儲(chǔ)器但不一定已經(jīng)被持久存儲(chǔ)的至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作,與在持久性提交劃界指令被實(shí)行時(shí)還沒有已經(jīng)被接受到存儲(chǔ)器的至少所有第二存儲(chǔ)到持久性存儲(chǔ)器操作相劃界。

示例27包括示例26的制品,其中,非臨時(shí)機(jī)器可讀存儲(chǔ)介質(zhì)還存儲(chǔ)持久性提交阻止指令。持久性提交阻止指令用于指示存儲(chǔ)劃界值的源存儲(chǔ)位置。持久性提交阻止指令如果被機(jī)器執(zhí)行使得機(jī)器實(shí)行操作,包括確保在執(zhí)行持久性提交阻止指令之后在至少任何存儲(chǔ)到持久性存儲(chǔ)器指令被執(zhí)行之前,所述至少所有第一存儲(chǔ)到持久性存儲(chǔ)器操作已經(jīng)被持久存儲(chǔ)。

示例28包括示例1至20中的任一項(xiàng)的處理器,進(jìn)一步包括用于預(yù)測(cè)分支的可選分支預(yù)測(cè)單元以及與分支預(yù)測(cè)單元耦合的可選的指令預(yù)取單元,指令預(yù)取單元用于預(yù)取包括該指令的指令。處理器還可以可選地包括與指令預(yù)取單元耦合的可選的1級(jí)(L1)指令高速緩存,L1指令高速緩存用于存儲(chǔ)指令;用于存儲(chǔ)數(shù)據(jù)的可選的L1數(shù)據(jù)高速緩存、以及用于存儲(chǔ)數(shù)據(jù)和指令的可選的2級(jí)(L2)高速緩存。處理器還可以可選地包括與解碼單元、L1指令高速緩存以及L2高速緩存耦合的指令取出單元,用于在一些情況下從L1指令高速緩存和L2高速緩存中的一個(gè)中取出指令并且將指令提供到解碼單元。處理器還可以可選地包括用于對(duì)寄存器進(jìn)行重命名的寄存器重命名單元、用于調(diào)度已經(jīng)從指令解碼以用于執(zhí)行的一個(gè)或多個(gè)操作的可選調(diào)度器、以及用于提交指令的執(zhí)行結(jié)果的可選提交單元。

示例29是用于實(shí)行或操作為實(shí)行示例21至23中的任何一個(gè)的方法的處理器或其他裝置。

示例30是包括用于實(shí)行示例21至23中的任何一個(gè)的方法的部件的處理器或其他裝置。

示例31是一種制品,其包括可選非臨時(shí)機(jī)器可讀介質(zhì),其可選地存儲(chǔ)或以其他方式提供指令,所述指令如果被處理器、計(jì)算機(jī)系統(tǒng)、電子設(shè)備或其他機(jī)器執(zhí)行和/或當(dāng)由處理器、計(jì)算機(jī)系統(tǒng)、電子設(shè)備或其他機(jī)器執(zhí)行時(shí),操作為使得機(jī)器實(shí)行示例21至23中的任何一個(gè)的方法。

示例32是大體上如上所述的處理器或其他裝置。

示例33是操作為實(shí)行大體上如本文描述的任何方法的處理器或其他裝置。

示例34是用于實(shí)行(例如,具有用于實(shí)行或操作為實(shí)行以下的組件)大體上如本文所述的任何指令的處理器或其他裝置。

示例35是一種計(jì)算機(jī)系統(tǒng)或其他電子設(shè)備,其包括具有用于解碼第一指令集的指令的解碼單元的處理器。所述處理器還具有一個(gè)或多個(gè)執(zhí)行單元。電子設(shè)備還包括與處理器耦合的存儲(chǔ)設(shè)備。存儲(chǔ)設(shè)備用于存儲(chǔ)第一指令,其可以是大體上如本文公開的指令中的任何一個(gè),并且是第二指令集的。存儲(chǔ)設(shè)備還存儲(chǔ)用于將第一指令轉(zhuǎn)換成第一指令集中的一個(gè)或多個(gè)指令的指令。第一指令集中的一個(gè)或多個(gè)指令在由處理器實(shí)行時(shí)使得處理器仿真第一指令。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
依安县| 遂昌县| 舟山市| 积石山| 遂平县| 焦作市| 鹤壁市| 辛集市| 喀喇| 鸡西市| 孟连| 海安县| 石屏县| 平湖市| 牡丹江市| 山阳县| 万山特区| 东兴市| 舟山市| 桂东县| 灵台县| 宝兴县| 安图县| 日照市| 巴林左旗| 宾川县| 青铜峡市| 芜湖市| 双桥区| 江川县| 获嘉县| 华容县| 连山| 察哈| 龙川县| 桂平市| 丹凤县| 武胜县| 元阳县| 肇源县| 霍邱县|