亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于改善連續(xù)的事務(wù)性存儲(chǔ)器區(qū)的吞吐量的系統(tǒng)、方法和裝置與流程

文檔序號(hào):11154591閱讀:267來(lái)源:國(guó)知局
用于改善連續(xù)的事務(wù)性存儲(chǔ)器區(qū)的吞吐量的系統(tǒng)、方法和裝置與制造工藝



背景技術(shù):

事務(wù)性存儲(chǔ)器的自然實(shí)現(xiàn)方案是要求在引退作為較年輕事務(wù)的部分的指令之前,較老的事務(wù)就提交。然而,在無(wú)序處理器中,通常情況是:較年輕事務(wù)中顯著數(shù)量的操作在等待較老的事務(wù)提交的時(shí)候就已經(jīng)完成了執(zhí)行。例如,較老的事務(wù)中的單個(gè)存儲(chǔ)可能需要數(shù)百個(gè)周期以等待存儲(chǔ)器進(jìn)行響應(yīng)。在這期間,無(wú)序機(jī)器可能已經(jīng)執(zhí)行了較年輕事務(wù)中的全部指令。當(dāng)該較老的事務(wù)最終提交時(shí),現(xiàn)在有積壓的指令要從該較年輕的事務(wù)中引退。

附圖說(shuō)明

在所附附圖中以示例方式而非限制方式說(shuō)明本發(fā)明,在附圖中,類似的參考標(biāo)號(hào)指示類似的元件,其中:

圖1示出根據(jù)本發(fā)明的實(shí)施例的處理器核100的多個(gè)部分的框圖。

圖2示出寫入時(shí)復(fù)制(COW)緩沖器的實(shí)施例。

圖3示出允許標(biāo)記存儲(chǔ)器狀態(tài)的數(shù)據(jù)高速緩存的實(shí)施例。

圖4示出示例性ROB。

圖5示出將TM區(qū)指示符用于加載指令的實(shí)施例。

圖6示出將TM區(qū)指示符用于存儲(chǔ)指令的實(shí)施例。

圖7示出將TM區(qū)指示符用于算術(shù)指令的實(shí)施例。

圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)800的框圖。

圖9A是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例性有序流水線和示例性的寄存器重命名的無(wú)序發(fā)布/執(zhí)行流水線的框圖。

圖9B是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例性實(shí)施例和示例性的寄存器重命名的無(wú)序發(fā)布/執(zhí)行架構(gòu)核的框圖。

圖10A-B示出更具體的示例性有序核架構(gòu)的框圖,該核將是芯片中的若干邏輯塊之一(包括相同類型和/或不同類型的其他核)。

圖11是根據(jù)本發(fā)明的多個(gè)實(shí)施例可具有多于一個(gè)的核、可具有集成存儲(chǔ)器控制器、并且可具有集成圖形器件的處理器1100的框圖。

圖12-15是示例性計(jì)算機(jī)架構(gòu)的框圖。

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

具體實(shí)施方式

在以下描述中,陳述了多個(gè)具體細(xì)節(jié)。然而,應(yīng)當(dāng)理解,可不通過(guò)這些具體細(xì)節(jié)來(lái)實(shí)施本發(fā)明的實(shí)施例。在其他實(shí)例中,未詳細(xì)示出公知的電路、結(jié)構(gòu)以及技術(shù),以免使對(duì)本描述的理解模糊。

說(shuō)明書中提到“一個(gè)實(shí)施例”、“實(shí)施例”、“示例實(shí)施例”等指示所描述的實(shí)施例可包括特定特征、結(jié)構(gòu)或特性,但是,每一個(gè)實(shí)施例可以不一定包括該特定特征、結(jié)構(gòu),或特征。此外,此類短語(yǔ)不一定是指同一實(shí)施例。此外,當(dāng)結(jié)合實(shí)施例描述特定的特征、結(jié)構(gòu)或特性時(shí),認(rèn)為結(jié)合無(wú)論是否被明確描述的其他實(shí)施例而影響此類特征、結(jié)構(gòu)或特性是在本領(lǐng)域技術(shù)人員的知識(shí)范圍之內(nèi)的。

示例性處理器核

圖1示出根據(jù)本發(fā)明的實(shí)施例的處理器核100的多個(gè)部分的框圖。在一個(gè)實(shí)施例中,圖1中所示的多個(gè)箭頭示出經(jīng)過(guò)核100的指令流??稍谥T如參考圖1所討論的單個(gè)集成電路芯片(或管芯)上實(shí)現(xiàn)一個(gè)或多個(gè)處理器核(例如,處理器核100)。此外,該芯片可包括一個(gè)或多個(gè)共享的和/或私有的高速緩存(例如,高速緩存)、互連、存儲(chǔ)器控制器或其他組件。在實(shí)施例中,可將圖1中所示的處理器核100用于執(zhí)行包括對(duì)應(yīng)于虛擬化事務(wù)模式、非虛擬化(或受限的)事務(wù)模式和非事務(wù)模式的那些線程的一種或多種類型的線程。

如圖1中所示,處理器核100可包括取出單元102,其用于從指令高速緩存101中取出指令,以便由核100執(zhí)行??蓮腖1指令高速緩存101或諸如存儲(chǔ)器164和/或存儲(chǔ)設(shè)備之類的任何存儲(chǔ)設(shè)備中取出這些指令。核100也可包括用于對(duì)被取出的指令進(jìn)行解碼的解碼單元104。例如,解碼單元104可將被取出的指令解碼為多個(gè)uop(微操作)。此外,核100可包括調(diào)度單元106。該調(diào)度單元106可執(zhí)行與存儲(chǔ)被解碼的指令(例如,從解碼單元104接收到的指令)相關(guān)聯(lián)的各種操作,直到這些指令準(zhǔn)備好分派為止(例如,直到被解碼指令的所有的源值變得可用)。在一個(gè)實(shí)施例中,該調(diào)度單元106可將被解碼的指令調(diào)度和/或發(fā)布(或分派)到執(zhí)行單元108,以便執(zhí)行。該執(zhí)行單元108可在(例如,由解碼單元104)解碼并(例如,由調(diào)度單元106)分派指令之后,執(zhí)行這些被分派的指令。在實(shí)施例中,該執(zhí)行單元108可包括多于一個(gè)的執(zhí)行單元,例如,存儲(chǔ)器執(zhí)行單元、整數(shù)執(zhí)行單元、浮點(diǎn)執(zhí)行單元或其他執(zhí)行單元。此外,該執(zhí)行單元108可無(wú)序地執(zhí)行指令。因此,在一個(gè)實(shí)施例中,該處理器核100可以是無(wú)序處理器核。核100也可包括引退單元110。該引退單元110可以在指令被提交之后引退被執(zhí)行的指令。在實(shí)施例中,引退這些被執(zhí)行的指令會(huì)導(dǎo)致:通過(guò)對(duì)這些指令的執(zhí)行,提交處理器狀態(tài);解除分配由這些指令使用的物理寄存器,等等。

如圖1中所示,核100可附加地包括追蹤高速緩存或微代碼只讀存儲(chǔ)器(uROM)111,其用于存儲(chǔ)微代碼和/或追蹤已被取出(例如,由取出單元102取出)的指令。可將存儲(chǔ)在該uROM 111中的微代碼用于配置核100的各種硬件組件。在實(shí)施例中,可通過(guò)與該處理器核100通信的另一組件(例如,所討論的計(jì)算機(jī)可讀介質(zhì)或其他存儲(chǔ)設(shè)備)來(lái)加載被存儲(chǔ)在該uROM 111中的微代碼。核100也可包括重排序緩沖器(ROB)112,其用于存儲(chǔ)關(guān)于用于由處理器核100的各種組件訪問(wèn)的進(jìn)行中指令(或uop)的信息。核100可進(jìn)一步包括RAT(寄存器別名表)114,其用于保持邏輯(或架構(gòu))寄存器(例如,由軟件指令的操作數(shù)所標(biāo)識(shí)的那些寄存器)到對(duì)應(yīng)的物理寄存器的映射。在一個(gè)實(shí)施例中,該RAT 114中的每一個(gè)字段可包括被分配到每一個(gè)物理寄存器的ROB標(biāo)識(shí)符。此外,加載緩沖器116和存儲(chǔ)緩沖器118(可在本文中將它們統(tǒng)稱為存儲(chǔ)器順序緩沖器(MOB))可分別存儲(chǔ)還未被加載或未被寫回到主存儲(chǔ)器(例如,在該處理器核100外部的、諸如存儲(chǔ)器164之類的存儲(chǔ)器)中的待處理(pending)的存儲(chǔ)器操作。MOB邏輯119可執(zhí)行與本文所討論的緩沖器116和118有關(guān)的各種操作。此外,處理器核100可包括總線單元120,其用于允許經(jīng)由一個(gè)或多個(gè)總線的、在處理器核100的多個(gè)組件和其他組件之間的通信。一個(gè)或多個(gè)填充緩沖器122可在將接收到的數(shù)據(jù)存儲(chǔ)到高速緩存162中之前,臨時(shí)地存儲(chǔ)(例如,在總線上)從存儲(chǔ)器164接收到的數(shù)據(jù)。

在一個(gè)實(shí)施例中,可將一個(gè)或多個(gè)事務(wù)狀態(tài)寄存器160包括在核100中。每一個(gè)事務(wù)狀態(tài)寄存器160可對(duì)應(yīng)于正在核100上執(zhí)行的事務(wù)。第一事務(wù)可在第二事務(wù)的事務(wù)狀態(tài)寄存器160中存儲(chǔ)值,以指示該第二事務(wù)將中止(例如,由于向該第一事務(wù)分配了比該第二事務(wù)更高的優(yōu)先級(jí)以例如避免沖突)。在實(shí)施例中,每一個(gè)事務(wù)可監(jiān)測(cè)其各自的狀態(tài)寄存器160以確定其是否應(yīng)當(dāng)中止。例如,可將狀態(tài)寄存器160用于即使在可能將事務(wù)掛起的情形下(例如,臨時(shí)將該事務(wù)切換到核(100)之外)也中止該事務(wù)。這可允許其他事務(wù)不必等待明確的中止而繼續(xù)進(jìn)行。同樣,可在存儲(chǔ)器中(例如,高速緩存162和/或存儲(chǔ)器164中)而不是硬件寄存器中實(shí)現(xiàn)該狀態(tài)寄存器160。

下列討論伴隨用于使用TM區(qū)標(biāo)識(shí)符(或顏色)來(lái)改善TM吞吐量的技術(shù)的詳細(xì)實(shí)施例。最初的討論將在高層級(jí)上討論對(duì)TM區(qū)標(biāo)識(shí)符和通常用于改善吞吐量的各種組件的使用。隨后,詳述處理事務(wù)的加載和存儲(chǔ)的更具體的示例。

區(qū)指示

來(lái)自相同線程的多個(gè)事務(wù)性存儲(chǔ)器例程可在給定的時(shí)刻在處理器上運(yùn)行,并且可被逐一排序。貫穿本說(shuō)明書的通篇,將這些例程稱為“區(qū)”(“region”)。在實(shí)施例中,通過(guò)開(kāi)始和結(jié)束指令(例如,XBEGIN和XEND)來(lái)描繪事務(wù)。如本文中所詳述的那樣,可將TM區(qū)指示符用于將來(lái)自一個(gè)TM區(qū)的指令與來(lái)自另一TM區(qū)的那些指令區(qū)分開(kāi)來(lái)??稍诹魉€中的許多不同點(diǎn)處動(dòng)態(tài)地或在運(yùn)行時(shí)(runtime)之前靜態(tài)地將該指示符分配到指令(宏指令或微操作)中。流水線的分配級(jí)是無(wú)序執(zhí)行之前的一個(gè)點(diǎn)(在此處,指令仍被視為是有序的),因此,該分配級(jí)可提供用該分配級(jí)的TM區(qū)指示符來(lái)標(biāo)記指令的機(jī)會(huì)時(shí)間。在本級(jí)期間,作出關(guān)于如下的決定:要使用什么存儲(chǔ)位置(例如,MOB的加載或存儲(chǔ)緩沖器中的位置);對(duì)由指令使用的物理寄存器的分配(這可包括寄存器重命名);以及要使用哪個(gè)功能單元(如果有必要)。然而,也可利用諸如取出級(jí)、解碼級(jí)等的其他級(jí)。無(wú)論將哪個(gè)級(jí)用于TM區(qū)指示符的標(biāo)記操作,都將TM區(qū)指示符信息置于重排序緩沖器(ROB)112中。

本文詳述了指示將“n”用作連續(xù)的事務(wù)性存儲(chǔ)器區(qū)(允許指令從這些區(qū)中引退)的數(shù)量的TM區(qū)的示例。例如,當(dāng)n=3時(shí),向來(lái)自第一TM區(qū)的指令分配顏色0;向下一區(qū)的指令分配顏色1;向下一區(qū)的指令分配顏色2;并且向下一區(qū)的指令分配顏色0,以此類推。由此,該TM區(qū)指示分配級(jí)(例如,分配)不阻止指令或TM,而僅僅以輪循(round-robin)方式分配TM區(qū)顏色。由于時(shí)序的原因,實(shí)現(xiàn)方案可選擇復(fù)制流水線中別處的顏色信息。例如,如將在稍后討論的那樣,可以用它們的顏色來(lái)標(biāo)記加載緩沖器條目以便于在數(shù)據(jù)高速緩存(D-高速緩存)中設(shè)置正確的(相關(guān)聯(lián)的)讀取位(R-位),等等。

用于回滾的檢查點(diǎn)操作

TM需要用于對(duì)寄存器進(jìn)行檢查點(diǎn)操作(checkpointing)的方法,使得可在中止事務(wù)的情況下恢復(fù)寄存器狀態(tài)。在處理器(在其中,將架構(gòu)寄存器重命名為物理寄存器)中,這可以通過(guò)在該處理器的物理寄存器中保留該架構(gòu)寄存器的事務(wù)前(pre-transactional)值并且向TM區(qū)中的、覆寫該處理器的指令分配新的物理寄存器來(lái)實(shí)現(xiàn)。通常,事務(wù)不能夠釋放物理寄存器以由包括其他事務(wù)中的那些指令的其他指令使用。將保持從經(jīng)檢查點(diǎn)操作的架構(gòu)寄存器到物理寄存器的映射的結(jié)構(gòu)稱為寫入時(shí)復(fù)制(COW)緩沖器。在一些實(shí)施例中,該COW是引退單元110的部分。

為了支持保持多個(gè)寄存器檢查點(diǎn)的能力,可外加標(biāo)記TM區(qū)之間的分隔的中間指針來(lái)使用該COW結(jié)構(gòu)。在圖2中示出示例性COW。如圖所示,COW存儲(chǔ)用于已經(jīng)(按時(shí)間順序)引退但還未被提交的指令的寄存器。

使用先前n=3的示例,在所示出的COW中,存在三個(gè)TM區(qū)。在圖中示出多個(gè)指針,并且這些指針描繪TM區(qū)。第一指針E0標(biāo)識(shí)COW中最后被提交的指令的位置。注意,存在一些已經(jīng)被提交但還未被解除分配以供處理器使用的寄存器??稍谌魏螘r(shí)候收回這些寄存器。

第二指針E1標(biāo)識(shí)最老的TM區(qū)和下一個(gè)較老的TM區(qū)之間的邊界。第一和第二指針之間的是針對(duì)最老的TM區(qū)的、已經(jīng)引退但還未被提交的指令。

第三指針E2標(biāo)識(shí)最年輕的區(qū)和當(dāng)前正在引退的位置之間的邊界。第三和第二指針之間的是針對(duì)中間TM區(qū)的、已經(jīng)引退但還未被提交的指令。已經(jīng)引退但還未到達(dá)指針E2的指令來(lái)自最年輕的TM區(qū)??蓪⑸鲜龆鄠€(gè)指針中的每一個(gè)存儲(chǔ)在COW自身中,或存儲(chǔ)在一個(gè)或多個(gè)專用寄存器中。

當(dāng)前正在引退的指針具有其自身的指針——引退指針。當(dāng)最老的區(qū)提交(或者被視為不可提交)時(shí),將E0更新為指向E1位置,將E1更新為指向E2位置,并且將E2指針更新為指向引退指針。隨后,引退指針可進(jìn)入下一個(gè)TM區(qū),等等。

數(shù)據(jù)高速緩存

TM需要用于標(biāo)記已被推測(cè)性地讀取的寄存器狀態(tài)的方法,使得可檢測(cè)由其他執(zhí)行線程導(dǎo)致的狀態(tài)的改變。由其他線程導(dǎo)致的這些改變會(huì)違反事務(wù)的原子性,因此,如果這些改變發(fā)生,則有必要中止該事務(wù)。

圖3示出允許標(biāo)記存儲(chǔ)器狀態(tài)的數(shù)據(jù)高速緩存(例如,數(shù)據(jù)高速緩存162)的實(shí)施例。在該實(shí)施例中,通過(guò)對(duì)每一高速緩存行添加被稱為讀取位(R-位)的單個(gè)位來(lái)實(shí)現(xiàn)該標(biāo)記操作。可將該R-位存儲(chǔ)在高速緩存自身中,或?qū)⑵浯鎯?chǔ)為單獨(dú)的數(shù)據(jù)結(jié)構(gòu)。當(dāng)推測(cè)性地從該高速緩存行中讀取數(shù)據(jù)時(shí),為該高速緩存行設(shè)置R-位。當(dāng)(通過(guò)提交或通過(guò)中止)完成該事務(wù)時(shí),清除R-位。

為了支持保持多個(gè)讀取集合(每一個(gè)讀取集合是高速緩存行(在該高速緩存行中進(jìn)行讀取)的集合)的能力,為允許從其引退的每一個(gè)連續(xù)的區(qū)提供R-位。完成此使得來(lái)自不同的TM區(qū)的加載兩者都可設(shè)置其對(duì)應(yīng)的讀取位而不必停止到更老的TM區(qū)進(jìn)行提交為止。

例如,在n=3的示例中,存在3個(gè)R-位,一個(gè)位與一種顏色關(guān)聯(lián)。當(dāng)加載引退時(shí),在數(shù)據(jù)高速緩存中標(biāo)記與該加載顏色相關(guān)聯(lián)的R-位。當(dāng)給定顏色的事務(wù)提交時(shí),清除針對(duì)那種顏色的R位。當(dāng)給定顏色的事務(wù)中止時(shí),清除針對(duì)該事務(wù)顏色的R-位以及針對(duì)任何更年輕事務(wù)的顏色的R-位。這是因?yàn)楸恢兄沟氖聞?wù)暗示了必須也中止所有更年輕的事務(wù)。

TM也需要用于對(duì)存儲(chǔ)器狀態(tài)進(jìn)行檢查點(diǎn)操作的方法,使得可在中止事務(wù)的情況下恢復(fù)事務(wù)前存儲(chǔ)器值。實(shí)現(xiàn)此的方法涉及將推測(cè)性數(shù)據(jù)寫入第一級(jí)(L1)數(shù)據(jù)高速緩存(例如,數(shù)據(jù)高速緩存162)中,并且防止其他執(zhí)行線程看到該推測(cè)性數(shù)據(jù)。在事務(wù)提交之后,使該推測(cè)性數(shù)據(jù)變得在全局上可見(jiàn)。另一方面,如果該事務(wù)中止,則丟棄該推測(cè)性數(shù)據(jù),因?yàn)樵诩軜?gòu)上被提交的事務(wù)前存儲(chǔ)器值位于高速緩存層次結(jié)構(gòu)的較低層級(jí)中。為了區(qū)分包含推測(cè)性數(shù)據(jù)的高速緩存行,向每一個(gè)數(shù)據(jù)高速緩存行添加一個(gè)位(寫入位(W-位))以指示該行包含被推測(cè)性寫入的數(shù)據(jù)。僅當(dāng)引退了存儲(chǔ)指令(這些被認(rèn)為是高級(jí)存儲(chǔ))之后,才將推測(cè)性數(shù)據(jù)寫入到高速緩存中。在存儲(chǔ)被寫入數(shù)據(jù)高速緩沖中之前,將該存儲(chǔ)的數(shù)據(jù)保持在存儲(chǔ)緩沖器中(例如,在MOB中)。由于數(shù)據(jù)按程序順序被保持在該存儲(chǔ)緩沖器中,因此不必向該數(shù)據(jù)高速緩存添加附加的W-位。相反,可使用高級(jí)存儲(chǔ)處理(從存儲(chǔ)緩沖器中讀取針對(duì)最老的被引退的存儲(chǔ)的數(shù)據(jù),將該數(shù)據(jù)寫入數(shù)據(jù)高速緩存中并設(shè)置W-位,并且從該存儲(chǔ)緩沖器中清除該條目),使得其僅針對(duì)最老的TM區(qū)繼續(xù)進(jìn)行。當(dāng)處理最老的TM區(qū)的最后一個(gè)存儲(chǔ)時(shí),停止高級(jí)存儲(chǔ)處理,直到最老的TM區(qū)提交為止。當(dāng)該區(qū)提交時(shí),這些推測(cè)性的存儲(chǔ)不再是推測(cè)性的,并因此變得在全局上可見(jiàn)。清除這些W位,并且來(lái)自下一個(gè)TM區(qū)(現(xiàn)在其是最老的TM區(qū))的高級(jí)存儲(chǔ)可開(kāi)始處理。

從ROB引退

現(xiàn)在,引退可以是寬松的,使得在必須等到最老的TM區(qū)被提交之前就可引退來(lái)自“n”個(gè)TM區(qū)的指令。如圖4中所看到的,在ROB中可同時(shí)存在多于n個(gè)TM區(qū)。如上文所詳述的那樣,已將來(lái)自這些區(qū)中的指令分配到n種顏色中的一種之中。引退操作可引退該示例中最老的15條指令(5條指令來(lái)自三個(gè)區(qū)中的每一個(gè)區(qū)),而不必逐區(qū)地等待。在引退最老的TM區(qū)的第一條指令(該指令直到最老的TM區(qū)已提交時(shí)才位于來(lái)自該TM區(qū)的首個(gè)分組中)之前,引退操作停止。在該示例中,已經(jīng)向第16條指令分配了與正等待提交并且將被阻止引退的TM區(qū)相同的顏色。

用于事務(wù)的加載指令處理的示例性方法

圖5示出將TM區(qū)指示符用于加載指令的實(shí)施例。在501處,將事務(wù)存儲(chǔ)器區(qū)指示符分配給該事務(wù)的加載指令。如前所述,這可以在通過(guò)分配或分配/重命名邏輯進(jìn)行的流水線的分配級(jí)期間發(fā)生。此外,如前所述,事務(wù)通常開(kāi)始于預(yù)先確定的指令(例如,XBEGIN),并且結(jié)束于預(yù)先確定的指令(例如,XEND)。此描述是從單個(gè)加載指令的角度而言的,然而,應(yīng)當(dāng)理解,事務(wù)的每條指令將具有被分配到其的區(qū)指示符。

在503處,將與已被寫入的指令相關(guān)聯(lián)的前一個(gè)物理寄存器復(fù)制到COW中。例如,對(duì)于指令LOAD RAX,(存儲(chǔ)器位置)(其中,RAX先前已被映射至物理寄存器17),將物理寄存器17存儲(chǔ)在COW中,并且將(上文所述的)分配指針置于指針存儲(chǔ)位置中。注意,將RAX(物理寄存器17)的前一個(gè)映射保存在COW中,因?yàn)樵撚成浒谠揟M區(qū)之前已被寫入的RAX的架構(gòu)值。因此,如果TM區(qū)要中止,則可適當(dāng)?shù)鼗謴?fù)RAX的值。如果同一個(gè)TM區(qū)中的多條指令全部寫入到RAX中,則僅這些指令中的第一條需要將前一個(gè)映射保存在COW中。

在505處,執(zhí)行該指令。當(dāng)然,由于這是無(wú)序機(jī)器,因此其他事務(wù)可遵循該相同的動(dòng)作過(guò)程。

在507處,(例如,從ROB)引退該加載指令。如上所述,引退操作不必等到最老的TM區(qū)被提交就可發(fā)生。

在509處,為已被引退到對(duì)應(yīng)的數(shù)據(jù)高速緩存條目中的加載設(shè)置讀取位。該讀取位對(duì)應(yīng)于在501處被分配的顏色或區(qū)指示符。

在稍后某時(shí)刻,在511處,作出是否提交該事務(wù)的決定。通常,當(dāng)接收并處理XEND指令,并且沒(méi)有什么已導(dǎo)致該事務(wù)的中止時(shí),完成該決定。如果允許該事務(wù)提交,則在515處,清除與該事務(wù)相關(guān)聯(lián)的R-位,并且允許從COW中釋放與該事務(wù)相關(guān)聯(lián)的物理寄存器,以便由處理器使用,并因此相應(yīng)地移動(dòng)該COW的指針。如果將中止該事務(wù),則在513處,通過(guò)使用COW中被存儲(chǔ)的寄存器,將該狀態(tài)回滾到該事務(wù)之前的狀態(tài)??衫缬删哂幸驯煌茰y(cè)性地加載的經(jīng)修改數(shù)據(jù)的另一線程導(dǎo)致中止。這些寄存器也是可由處理器自由地使用的。也清除這些讀取位,以便為可能的將來(lái)事務(wù)做準(zhǔn)備。

用于事務(wù)的存儲(chǔ)指令處理的示例性方法

圖6示出將TM區(qū)指示符用于存儲(chǔ)指令的實(shí)施例。在601處,將事務(wù)存儲(chǔ)器區(qū)指示符分配給該事務(wù)的存儲(chǔ)指令。如前所述,這可以在通過(guò)分配或分配/重命名邏輯進(jìn)行的流水線的分配級(jí)期間發(fā)生。此外,如前所述,事務(wù)通常開(kāi)始于預(yù)先確定的指令(例如,XBEGIN),并且結(jié)束于預(yù)先確定的指令(例如,XEND)。此描述是從單個(gè)存儲(chǔ)指令的角度而言的,然而,應(yīng)當(dāng)理解,事務(wù)的每條指令將具有被分配到其的區(qū)指示符。

在605處,執(zhí)行事務(wù)的存儲(chǔ)指令。當(dāng)然,由于這是無(wú)序機(jī)器,因此其他事務(wù)可遵循該相同的動(dòng)作過(guò)程。在此階段,如果在處理器中使用此類機(jī)制,則也將這些指令置入MOB的存儲(chǔ)緩沖器中。

在607處,引退針對(duì)最舊的TM區(qū)的(例如,來(lái)自ROB的)存儲(chǔ)指令。如上所述,可通過(guò)從存儲(chǔ)緩沖器中讀取針對(duì)最舊的被引退的存儲(chǔ)的數(shù)據(jù),將數(shù)據(jù)寫入到數(shù)據(jù)高速緩存中并設(shè)置W-位,并且從存儲(chǔ)緩沖器中去除條目以將高級(jí)存儲(chǔ)處理用于對(duì)最舊的TM區(qū)的引退操作。

在609處,寫入針對(duì)已被引退到對(duì)應(yīng)的數(shù)據(jù)高速緩存條目中的該存儲(chǔ)的寫入位。

在稍后某時(shí)刻,在611處,作出是否提交該事務(wù)的決定。通常,當(dāng)接收并處理XEND指令,并且沒(méi)有什么已導(dǎo)致該事務(wù)的中止時(shí),完成該決定。如果允許該事務(wù)提交,則清除與該事務(wù)相關(guān)聯(lián)的W-位,并且現(xiàn)在由此提交與該事務(wù)相關(guān)聯(lián)的、已經(jīng)被推測(cè)性地寫入數(shù)據(jù)高速緩存中的存儲(chǔ),并因此使這些存儲(chǔ)變得在全局上可見(jiàn)。一旦最老的TM區(qū)提交了,則第二老的區(qū)可根據(jù)高級(jí)存儲(chǔ)處理進(jìn)行引退。如果將中止該事務(wù),則將該狀態(tài)回滾到該事務(wù)開(kāi)始之前的狀態(tài)。這可通過(guò)使數(shù)據(jù)高速緩存中的、已經(jīng)(按已針對(duì)該高速緩存行而被設(shè)置的寫入位的指示)被推測(cè)性地寫入的所有條目都無(wú)效來(lái)完成。也清除這些寫入位,以便為可能的將來(lái)事務(wù)做準(zhǔn)備。如果中止該事務(wù),則也中止所有正在進(jìn)行的更年輕的事務(wù)。

雖然已將上述方法描述為單獨(dú)的加載處理和存儲(chǔ)處理,但是事務(wù)實(shí)際上將總是具有加載和存儲(chǔ)。由此,可將流程圖的多個(gè)方面混合在一起。

用于事務(wù)的算術(shù)指令處理的示例性方法

圖7示出將TM區(qū)指示符用于算術(shù)指令的實(shí)施例。在701處,將事務(wù)存儲(chǔ)器區(qū)指示符分配給該事務(wù)的算術(shù)指令。如前所述,這可以在通過(guò)分配或分配/重命名邏輯進(jìn)行的流水線的分配級(jí)期間發(fā)生。此外,如前所述,事務(wù)通常開(kāi)始于預(yù)先確定的指令(例如,XBEGIN),并且結(jié)束于預(yù)先確定的指令(例如,XEND)。此描述是從單個(gè)加載指令的角度而言的,然而,應(yīng)當(dāng)理解,事務(wù)的每條指令將具有被分配到其的區(qū)指示符。

在703處,將與已被寫入的指令相關(guān)聯(lián)的前一個(gè)物理寄存器復(fù)制到COW中。例如,對(duì)于指令LOAD RAX,RAX(其中,RAX先前已被映射至物理寄存器17),將物理寄存器17存儲(chǔ)在COW中,并且將(上文所述的)分配指針置于指針存儲(chǔ)位置中。注意,將RAX(物理寄存器17)的前一個(gè)映射保存在COW中,因?yàn)樵撚成浒谠揟M區(qū)之前已被寫入的RAX的架構(gòu)值。因此,如果TM區(qū)要中止,則可適當(dāng)?shù)鼗謴?fù)RAX的值。如果同一個(gè)TM區(qū)中的多條指令全部寫入到RAX中,則僅這些指令中的第一條需要將前一個(gè)映射保存在COW中。

在705處,執(zhí)行該指令。

在707處,(例如,從ROB)引退該算術(shù)指令。如上所述,引退操作不必等到最老的TM區(qū)被提交就可發(fā)生。

在稍后某時(shí)刻,在711處,作出是否提交該事務(wù)的決定。通常,當(dāng)接收并處理XEND指令,并且沒(méi)有什么已導(dǎo)致該事務(wù)的中止時(shí),完成該決定。如果允許該事務(wù)提交,則在715處,允許從COW中釋放與該事務(wù)相關(guān)聯(lián)的物理寄存器,以便由處理器使用,并因此相應(yīng)地移動(dòng)該COW的指針。如果將中止該事務(wù),則在713處,將通過(guò)使用COW中被存儲(chǔ)的寄存器,將該狀態(tài)回滾到該事務(wù)之前的狀態(tài)??衫缬删哂幸驯煌茰y(cè)性地加載的、經(jīng)修改數(shù)據(jù)的另一線程導(dǎo)致中止。這些寄存器也是可由處理器自由地使用的。

示例性寄存器架構(gòu)

圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)800的框圖。在所示出的實(shí)施例中,有32個(gè)512位寬的向量寄存器810;這些寄存器被引用為zmm0到zmm31。較低的16zmm寄存器的較低階256個(gè)位覆蓋在寄存器ymm0-16上。較低的16zmm寄存器的較低階128個(gè)位(ymm寄存器的較低階128個(gè)位)覆蓋在寄存器xmm0-15上。將寫掩碼寄存器引用為k0-7。

通用寄存器825——在所示出的實(shí)施例中,有十六個(gè)64位通用寄存器,這些寄存器與現(xiàn)有的x86尋址模式一起使用以對(duì)存儲(chǔ)器操作數(shù)進(jìn)行尋址。這些寄存器通過(guò)名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15來(lái)引用。

標(biāo)量浮點(diǎn)堆棧寄存器組(x87堆棧)845,在其上面重疊了MMX緊縮整數(shù)平坦寄存器組850——在所示出的實(shí)施例中,x87堆棧是用于使用x87指令集擴(kuò)展來(lái)對(duì)32/64/80位浮點(diǎn)數(shù)據(jù)執(zhí)行標(biāo)量浮點(diǎn)運(yùn)算的八元素堆棧;而使用MMX寄存器來(lái)對(duì)64位緊縮整數(shù)數(shù)據(jù)執(zhí)行操作,以及為在MMX和XMM寄存器之間執(zhí)行的一些操作保存操作數(shù)。

本發(fā)明的替代實(shí)施例可以使用更寬的或更窄的寄存器。另外,本發(fā)明的替代實(shí)施例可以使用更多、更少或不同的寄存器組和寄存器。

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

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

示例性核架構(gòu)

有序和無(wú)序核框圖

圖9A是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例性有序流水線和示例性的寄存器重命名的無(wú)序發(fā)布/執(zhí)行流水線的框圖。圖9B是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例性實(shí)施例和示例性的寄存器重命名的無(wú)序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖9A-B中的實(shí)線框示出有序流水線和有序核,而可選增加的虛線框示出了寄存器重命名的、無(wú)序發(fā)布/執(zhí)行流水線和核??紤]到有序方面是無(wú)序方面的子集,將描述無(wú)序方面。

在圖9A中,處理器流水線900包括取出級(jí)902、長(zhǎng)度解碼級(jí)904、解碼級(jí)906、分配級(jí)908、重命名級(jí)910、調(diào)度(也稱為分派或發(fā)布)級(jí)912、寄存器讀取/存儲(chǔ)器讀取級(jí)914、執(zhí)行級(jí)916、寫回/存儲(chǔ)器寫入級(jí)918、異常處理級(jí)922和提交級(jí)924。

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

前端單元930包括耦合到指令高速緩存單元934的分支預(yù)測(cè)單元932,該指令高速緩存單元耦合到指令轉(zhuǎn)換后備緩沖器(TLB)936,該指令轉(zhuǎn)換后備緩沖器耦合到指令取出單元938,指令取出單元耦合到解碼單元940。解碼單元940(或解碼器)可解碼指令,并生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或其他控制信號(hào)作為輸出。解碼單元940可使用各種不同的機(jī)制來(lái)實(shí)現(xiàn)。合適機(jī)制的示例包括但不限于,查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核990包括微代碼ROM或存儲(chǔ)用于某些宏指令的微代碼的其他介質(zhì)(例如,在解碼單元940中或以其他方式在前端單元930內(nèi))。解碼單元940耦合至執(zhí)行引擎單元950中的重命名/分配器單元952。

執(zhí)行引擎單元950包括重命名/分配器單元952,該重命名/分配器單元耦合至引退單元954和一個(gè)或多個(gè)調(diào)度器單元956的集合。調(diào)度器單元956表示任何數(shù)目的不同調(diào)度器,包括預(yù)留站、中央指令窗等。調(diào)度器單元956耦合到物理寄存器組單元958。物理寄存器組單元958中的每一個(gè)表示一個(gè)或多個(gè)物理寄存器組,其中不同的物理寄存器組存儲(chǔ)一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作為要被執(zhí)行的下一條指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄存器組單元958包括向量寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組單元958被引退單元954重疊以示出可以用來(lái)實(shí)現(xiàn)寄存器重命名和無(wú)序執(zhí)行的各種方式(例如,使用重新排序緩沖器和引退寄存器組;使用將來(lái)的文件、歷史緩沖器和引退寄存器組;使用寄存器映射和寄存器池等)。引退單元954和物理寄存器組單元958耦合到執(zhí)行群集960。執(zhí)行群集960包括一個(gè)或多個(gè)執(zhí)行單元962的集合和一個(gè)或多個(gè)存儲(chǔ)器訪問(wèn)單元964的集合。執(zhí)行單元962可以對(duì)各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整型、向量浮點(diǎn))執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實(shí)施例可以包括專用于特定功能或功能集合的多個(gè)執(zhí)行單元,但其他實(shí)施例可包括全部執(zhí)行所有功能的僅一個(gè)執(zhí)行單元或多個(gè)執(zhí)行單元。調(diào)度器單元956、物理寄存器組單元958、執(zhí)行群集960被示出為可能是復(fù)數(shù)個(gè),因?yàn)槟承?shí)施例為某些數(shù)據(jù)/操作類型創(chuàng)建了多個(gè)單獨(dú)的流水線(例如,均具有各自調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集的標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/緊縮整數(shù)/緊縮浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線和/或存儲(chǔ)器訪問(wèn)流水線,并且在單獨(dú)的存儲(chǔ)器訪問(wèn)流水線的情況下,將特定實(shí)施例實(shí)現(xiàn)為僅僅該流水線的執(zhí)行群集具有存儲(chǔ)器訪問(wèn)單元964)。還應(yīng)當(dāng)理解,在使用分開(kāi)的流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以是無(wú)序發(fā)布/執(zhí)行,并且其余流水線可以是有序發(fā)布/執(zhí)行。

存儲(chǔ)器訪問(wèn)單元964的集合耦合到存儲(chǔ)器單元970,該存儲(chǔ)器單元包括耦合到數(shù)據(jù)高速緩存單元974的數(shù)據(jù)TLB單元972,其中數(shù)據(jù)高速緩存單元耦合到第二級(jí)(L2)高速緩存單元976。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問(wèn)單元964可包括加載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其中的每一個(gè)均耦合至存儲(chǔ)器單元970中的數(shù)據(jù)TLB單元972。指令高速緩存單元934還耦合到存儲(chǔ)器單元970中的第二級(jí)(L2)高速緩存單元976。L2高速緩存單元976耦合到一個(gè)或多個(gè)其他層級(jí)的高速緩存,并最終耦合到主存儲(chǔ)器。

作為示例,示例性寄存器重命名的、無(wú)序發(fā)布/執(zhí)行核架構(gòu)可按如下方式實(shí)現(xiàn)流水線900:1)指令取出938執(zhí)行取出和長(zhǎng)度解碼級(jí)902和904;2)解碼單元940執(zhí)行解碼級(jí)906;3)重命名/分配器單元952執(zhí)行分配級(jí)908和重命名級(jí)910;4)調(diào)度器單元956執(zhí)行調(diào)度級(jí)912;5)物理寄存器組單元958和存儲(chǔ)器單元970執(zhí)行寄存器讀取/存儲(chǔ)器讀取級(jí)914;執(zhí)行群集960執(zhí)行執(zhí)行級(jí)916;6)存儲(chǔ)器單元970和物理寄存器組單元958執(zhí)行寫回/存儲(chǔ)器寫入級(jí)918;7)各單元可牽涉到異常處理級(jí)922;以及8)引退單元954和物理寄存器組單元958執(zhí)行提交級(jí)924。

核990可支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有伴隨較新版本而添加的一些擴(kuò)展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集;加利福尼州桑尼維爾市的ARM控股公司的ARM指令集(具有諸如NEON之類的可選的附加擴(kuò)展)),其中包括本文中描述的多個(gè)指令。在一個(gè)實(shí)施例中,核990包括用于支持緊縮數(shù)據(jù)指令集擴(kuò)展(例如,AVX1、AVX2和/或先前描述的一些形式的通用向量友好指令格式(U=0和/或U=1))的邏輯,從而允許由許多多媒體應(yīng)用使用的操作能夠使用緊縮數(shù)據(jù)來(lái)執(zhí)行。

應(yīng)當(dāng)理解,核可支持多線程化操作(執(zhí)行兩個(gè)或更多個(gè)并行的操作或線程的集合),并且可以按各種方式來(lái)完成該多線程化操作,各種方式包括時(shí)分多線程化、同步多線程化(其中,單個(gè)物理核為物理核正在同步地進(jìn)行多線程化操作的多個(gè)線程中的每一個(gè)線程提供邏輯核)、或其組合(例如,時(shí)分取出和解碼以及此后諸如用超線程化技術(shù)來(lái)進(jìn)行的同步多線程化操作)。

盡管在無(wú)序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)當(dāng)理解,可以在有序架構(gòu)中使用寄存器重命名。盡管所示出的處理器的實(shí)施例還包括分開(kāi)的指令和數(shù)據(jù)高速緩存單元934/974以及共享L2高速緩存單元976,但替代實(shí)施例可具有用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,諸如例如,第一級(jí)(L1)內(nèi)部高速緩存或多個(gè)層級(jí)的內(nèi)部高速緩存。在一些實(shí)施例中,該系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合?;蛘?,所有高速緩存都可以在核和/或處理器的外部。

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

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

圖10A是根據(jù)本發(fā)明的多個(gè)實(shí)施例的單個(gè)處理器核以及它與管芯上互連網(wǎng)絡(luò)1002的連接及其第二級(jí)(L2)高速緩存的本地子集1004的框圖。在一個(gè)實(shí)施例中,指令解碼器1000支持具有緊縮數(shù)據(jù)指令集擴(kuò)展的x86指令集。L1高速緩存1006允許對(duì)進(jìn)入標(biāo)量和向量單元中的高速緩存存儲(chǔ)器的低等待時(shí)間訪問(wèn)。盡管在一個(gè)實(shí)施例中(為了簡(jiǎn)化設(shè)計(jì)),標(biāo)量單元1008和向量單元1010使用分開(kāi)的寄存器集合(分別為標(biāo)量寄存器1012和向量寄存器1014),并且在這些寄存器之間傳遞的數(shù)據(jù)被寫入到存儲(chǔ)器中并隨后從第一級(jí)(L1)高速緩存1006讀回,但是本發(fā)明的替代實(shí)施例可以使用不同的方法(例如,使用單個(gè)寄存器集合或包括允許數(shù)據(jù)在這兩個(gè)寄存器組之間傳遞而無(wú)需被寫入和讀回的通信路徑)。

L2高速緩存的本地子集1004是全局L2高速緩存的部分,該全局L2高速緩存被劃分成多個(gè)分開(kāi)的本地子集,針對(duì)每個(gè)處理器核有一個(gè)本地子集。每個(gè)處理器核具有去往其自身的L2高速緩存的本地子集1004的直接訪問(wèn)路徑。將由處理器核讀取的數(shù)據(jù)存儲(chǔ)在其L2高速緩存子集1004中,并且可并行于其他處理器核訪問(wèn)那些處理器核自身的本地L2高速緩存子集,快速訪問(wèn)該數(shù)據(jù)。將由處理器核寫入的數(shù)據(jù)存儲(chǔ)在其自身的L2高速緩存子集1004中,并在必要的情況下從其他子集中清除該數(shù)據(jù)。環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的一致性。環(huán)形網(wǎng)絡(luò)是雙向的,以允許諸如處理器核、L2高速緩存和其他邏輯塊之類的代理在芯片內(nèi)彼此通信。每個(gè)環(huán)形數(shù)據(jù)路徑針對(duì)每個(gè)方向?yàn)?012位寬。

圖10B是根據(jù)本發(fā)明的多個(gè)實(shí)施例的圖10A中的處理器核的部分的展開(kāi)圖。圖10B包括L1高速緩存1004的L1數(shù)據(jù)高速緩存1006A部分,以及關(guān)于向量單元1010和向量寄存器1014的更多細(xì)節(jié)。具體地說(shuō),向量單元1010是16寬向量處理單元(VPU)(見(jiàn)16寬ALU 1028),該單元執(zhí)行整數(shù)、單精度浮點(diǎn)以及雙精度浮點(diǎn)指令中的一個(gè)或多個(gè)。該VPU支持利用混合單元1020對(duì)寄存器輸入進(jìn)行混合、利用數(shù)值轉(zhuǎn)換單元1022A-B進(jìn)行數(shù)值轉(zhuǎn)換,并且利用復(fù)制單元1024進(jìn)行對(duì)存儲(chǔ)器輸入的復(fù)制。

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

圖11是根據(jù)本發(fā)明的多個(gè)實(shí)施例的、可能具有多于一個(gè)的核、可能具有集成存儲(chǔ)器控制器、以及可能具有集成圖形器件的處理器1100的框圖。圖11中的實(shí)線框示出具有單個(gè)核1102A、系統(tǒng)代理1110、一個(gè)或多個(gè)總線控制器單元1116的集合的處理器1100,而虛線框的可選附加示出具有多個(gè)核1102A-N、系統(tǒng)代理單元1110中的一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元1114的集合以及專用邏輯1108的替代處理器1100。

因此,處理器1100的不同實(shí)現(xiàn)可包括:1)CPU,其中專用邏輯1108是集成圖形和/或科學(xué)(吞吐量)邏輯(其可包括一個(gè)或多個(gè)核),并且核1102A-N是一個(gè)或多個(gè)通用核(例如,通用有序核、通用無(wú)序核、這兩者的組合);2)協(xié)處理器,其中核1102A-N是旨在主要用于圖形和/或科學(xué)(吞吐量)的大量專用核;以及3)協(xié)處理器,其中核1102A-N是大量通用有序或無(wú)序核。因此,處理器1100可以是通用處理器、協(xié)處理器或?qū)S锰幚砥鳎T如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐量的集成眾核(MIC)協(xié)處理器(包括30個(gè)或更多核)、嵌入式處理器等。該處理器可以被實(shí)現(xiàn)在一個(gè)或多個(gè)芯片上。處理器1100可以是一個(gè)或多個(gè)基板的一部分,并且/或者可使用多種工藝技術(shù)(諸如,BiCMOS、CMOS或NMOS)中的任意技術(shù)被實(shí)現(xiàn)在一個(gè)或多個(gè)基板上。

存儲(chǔ)器層次結(jié)構(gòu)包括核內(nèi)的一個(gè)或多個(gè)層級(jí)的高速緩存、一個(gè)或多個(gè)共享高速緩存單元1106的集合、以及耦合至該組集成存儲(chǔ)器控制器單元1114的外部存儲(chǔ)器(未示出)。共享高速緩存單元1106的集合可包括一個(gè)或多個(gè)中級(jí)高速緩存(諸如,第二級(jí)(L2)、第三級(jí)(L3)、第四級(jí)(L4)或其他層級(jí)的高速緩存)末級(jí)高速緩存(LLC)和/或以上的組合。盡管在一個(gè)實(shí)施例中,基于環(huán)的互連單元1112將集成圖形邏輯1108、共享高速緩存單元1106的集合以及系統(tǒng)代理單元1110/集成存儲(chǔ)器控制器單元1114互連,但替代實(shí)施例可使用任何數(shù)量的公知技術(shù)來(lái)將這些單元互連。在一個(gè)實(shí)施例中,可以維持一個(gè)或多個(gè)高速緩存單元1106和核1102A-N之間的一致性(coherency)。

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

核1102A-N在架構(gòu)指令集方面可以是同構(gòu)的或異構(gòu)的;也就是說(shuō),這些核1102A-N中的兩個(gè)或更多個(gè)核可能能夠執(zhí)行相同的指令集,而其他核可能能夠執(zhí)行該指令集的僅僅子集或不同的指令集。

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

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

現(xiàn)在參考圖12,所示出的是根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)1200的框圖。系統(tǒng)1200可包括一個(gè)或多個(gè)處理器1210、1215,這些處理器耦合到控制器中樞1220。在一個(gè)實(shí)施例中,控制器中樞1220包括圖形存儲(chǔ)器控制器中樞(GMCH)1290和輸入/輸出中樞(IOH)1250(其可以位于分開(kāi)的芯片上);GMCH 1290包括存儲(chǔ)器和圖形控制器,存儲(chǔ)器1240和協(xié)處理器1245耦合到該存儲(chǔ)器和圖形控制器;IOH 1250將輸入/輸出(I/O)設(shè)備1260耦合到GMCH 1290。或者,存儲(chǔ)器和圖形控制器中的一個(gè)或兩者可以被集成在處理器內(nèi)(如本文中所描述的),存儲(chǔ)器1240和協(xié)處理器1245直接耦合到處理器1210以及與IOH 1250一起處于單個(gè)芯片中的控制器中樞1220。

附加的處理器1215的可選性質(zhì)在圖12中通過(guò)虛線來(lái)表示。每一個(gè)處理器1210、1215可包括本文中描述的處理核中的一個(gè)或多個(gè),并且可以是處理器1100的某一版本。

存儲(chǔ)器1240可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)或這兩者的組合。對(duì)于至少一個(gè)實(shí)施例,控制器中樞1220經(jīng)由諸如前端總線(FSB)之類的多分支總線、諸如快速通道互連(QPI)之類的點(diǎn)對(duì)點(diǎn)接口、或者類似的連接1295與處理器1210、1215進(jìn)行通信。

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

在物理資源1210、1215之間可以存在包括架構(gòu)、微架構(gòu)、熱和功耗特性等的一系列品質(zhì)度量方面的各種差異。

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

現(xiàn)在參考圖13,所示為根據(jù)本發(fā)明的實(shí)施例的更具體的第一示例性系統(tǒng)1300的框圖。如圖13所示,多處理器系統(tǒng)1300是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),且包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連1350耦合的第一處理器1370和第二處理器1380。處理器1370和1380中的每一個(gè)都可以是處理器1100的某一版本。在本發(fā)明的一個(gè)實(shí)施例中,處理器1370和1380分別是處理器1210和1215,而協(xié)處理器1338是協(xié)處理器1245。在另一實(shí)施例中,處理器1370和1380分別是處理器1210和協(xié)處理器1245。

處理器1370和1380被示出為分別包括集成存儲(chǔ)器控制器(IMC)單元1372和1382。處理器1370還包括作為其總線控制器單元的部分的點(diǎn)對(duì)點(diǎn)(P-P)接口1376和1378;類似地,第二處理器1380包括P-P接口1386和1388。處理器1370、1380可以經(jīng)由使用點(diǎn)對(duì)點(diǎn)(P-P)接口電路1378、1388的P-P接口1350來(lái)交換信息。如圖13所示,IMC 1372和1382將處理器耦合到各自的存儲(chǔ)器,即可以是本地附連到各自處理器的主存儲(chǔ)器的多個(gè)部分的存儲(chǔ)器1332和存儲(chǔ)器1334。

處理器1370、1380可各自經(jīng)由使用點(diǎn)對(duì)點(diǎn)接口電路1376、1394、1386、1398的各個(gè)P-P接口1352、1354與芯片組1390交換信息。芯片組1390可以可選地經(jīng)由高性能接口1339與協(xié)處理器1338交換信息。在一個(gè)實(shí)施例中,協(xié)處理器1338是專用處理器,諸如例如,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等。

可將共享高速緩存(未示出)包括在任一處理器之內(nèi),或包括在兩個(gè)處理器外部但仍經(jīng)由P-P互連與這些處理器連接,使得如果將處理器置于低功率模式時(shí),可將任一處理器或兩個(gè)處理器的本地高速緩存信息存儲(chǔ)在該共享高速緩存中。

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

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

現(xiàn)在參考圖14,所示為根據(jù)本發(fā)明的實(shí)施例的更具體的第二示例性系統(tǒng)1400的框圖。圖13和圖14中的相同部件用相同附圖標(biāo)記表示,并從圖14中省去了圖13中的某些方面,以避免使圖14的其他方面變得模糊。

圖14示出處理器1370、1380可分別包括集成存儲(chǔ)器和I/O控制邏輯(”CL”)1372和1382。因此,CL 1372、1382包括集成存儲(chǔ)器控制器單元并包括I/O控制邏輯。圖14示出不僅存儲(chǔ)器1332、1334耦合至CL 1372、1382,而且I/O設(shè)備1414也耦合至控制邏輯1372、1382。傳統(tǒng)I/O設(shè)備1415被耦合至芯片組1390。

現(xiàn)在參照?qǐng)D15,所示出的是根據(jù)本發(fā)明的實(shí)施例的SoC 1500的框圖。圖11中的相似部件具有同樣的附圖標(biāo)記。另外,虛線框是更先進(jìn)的SoC上的可選特征。在圖15中,互連單元1502被耦合至:應(yīng)用處理器1510,其包括一個(gè)或多個(gè)核202A-N的集合以及共享高速緩存單元1106;系統(tǒng)代理單元1110;總線控制器單元1116;集成存儲(chǔ)器控制器單元1114;一組或一個(gè)或多個(gè)協(xié)處理器1520,其可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元1530;直接存儲(chǔ)器存取(DMA)單元1532;以及顯示單元,其用于耦合至一個(gè)或多個(gè)外部顯示器。在一個(gè)實(shí)施例中,協(xié)處理器1520包括專用處理器,諸如例如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、或嵌入式處理器等。

可在硬件、軟件、固件或此類實(shí)現(xiàn)的組合中實(shí)現(xiàn)本文中所公開(kāi)的機(jī)制的多個(gè)實(shí)施例。可將本發(fā)明的多個(gè)實(shí)施例實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,該可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備。

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

程序代碼可以用高級(jí)程序化語(yǔ)言或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以便與處理系統(tǒng)通信。在需要時(shí),也可用匯編語(yǔ)言或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)程序代碼。事實(shí)上,本文中描述的機(jī)制不限于任何特定編程語(yǔ)言的范圍。在任一情形下,該語(yǔ)言可以是編譯語(yǔ)言或解釋語(yǔ)言。

至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以由存儲(chǔ)在標(biāo)識(shí)處理器內(nèi)的各種邏輯的機(jī)器可讀介質(zhì)上的表示性指令來(lái)實(shí)現(xiàn),當(dāng)由機(jī)器讀取該表示性指令時(shí),該指令使該機(jī)器制作用于執(zhí)行本文所述的技術(shù)的邏輯??蓪⒈环Q為“IP核”的此類表示存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上,并將其提供給各種客戶或生產(chǎn)設(shè)施以加載到實(shí)際制造該邏輯或處理器的制造機(jī)器中。

此類機(jī)器可讀存儲(chǔ)介質(zhì)可包括但不限于通過(guò)機(jī)器或設(shè)備制造或形成的制品的非瞬態(tài)的有形安排,其包括存儲(chǔ)介質(zhì),諸如,硬盤;任何其他類型的盤,包括軟盤、光盤、緊致盤只讀存儲(chǔ)器(CD-ROM)、緊致盤可重寫(CD-RW)以及磁光盤;半導(dǎo)體器件,例如,只讀存儲(chǔ)器(ROM)、諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)之類的隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、閃存、電可擦除可編程只讀存儲(chǔ)器(EEPROM);相變存儲(chǔ)器(PCM);磁卡或光卡;或適于存儲(chǔ)電子指令的任何其他類型的介質(zhì)。

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

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

在一些情況下,指令轉(zhuǎn)換器可用來(lái)將指令從源指令集轉(zhuǎn)換至目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以將指令變換(例如,使用靜態(tài)二進(jìn)制變換和包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制變換)、變形、仿真或以其他方式轉(zhuǎn)換成一個(gè)或多個(gè)其他指令,以便由核進(jìn)行處理??稍谲浖⒂布?、固件、或它們的組合中實(shí)現(xiàn)該指令轉(zhuǎn)換器。該指令轉(zhuǎn)換器可以在處理器上,在處理器外,或者部分在處理器上且部分在處理器外。

圖16是根據(jù)本發(fā)明的各實(shí)施例的、對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但作為替代,可在軟件、固件、硬件或其各種組合中實(shí)現(xiàn)該指令轉(zhuǎn)換器。圖16示出可使用x86編譯器1604來(lái)編譯利用高級(jí)語(yǔ)言1602的程序,以生成可由具有至少一個(gè)x86指令集核的處理器1616原生地執(zhí)行的x86二進(jìn)制代碼1606。具有至少一個(gè)x86指令集核的處理器1616表示能通過(guò)兼容地執(zhí)行或以其他方式處理下列各項(xiàng)來(lái)執(zhí)行與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的功能的任何處理器:1)英特爾x86指令集核的指令集的本質(zhì)部分,或2)目標(biāo)為在具有至少一個(gè)x86指令集核的英特爾處理器上運(yùn)行以取得與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的結(jié)果的應(yīng)用或其他軟件的目標(biāo)代碼版本。x86編譯器1604表示用于生成x86二進(jìn)制代碼1806(例如,目標(biāo)代碼)的編譯器,該二進(jìn)制代碼可通過(guò)或不通過(guò)附加的鏈接處理而被執(zhí)行在具有至少一個(gè)x86指令集核的處理器1616上。類似地,圖16示出可以使用替代的指令集編譯器1608來(lái)編譯利用高級(jí)語(yǔ)言1602的程序,以生成可由不具有至少一個(gè)x86指令集核的處理器1614(例如,具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集、和/或執(zhí)行加利福尼亞州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)原生地執(zhí)行的替代指令集二進(jìn)制代碼1610。指令轉(zhuǎn)換器1612被用來(lái)將x86二進(jìn)制代碼1606轉(zhuǎn)換成可由不具有x86指令集核的處理器1614原生地執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替代性指令集二進(jìn)制代碼1610相同,因?yàn)槟軌蜻@樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并由來(lái)自替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器1612通過(guò)仿真、模擬或任何其他過(guò)程來(lái)表示允許不具有x86指令集處理器或核的處理器或其他電子設(shè)備執(zhí)行x86二進(jìn)制代碼1606的軟件、固件、硬件或它們的組合。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1