用于改善連續(xù)的事務(wù)性存儲(chǔ)器區(qū)的吞吐量的系統(tǒng)、方法和裝置的制造方法
【專利說明】用于改善連續(xù)的事務(wù)性存儲(chǔ)器區(qū)的吞吐量的系統(tǒng)、方法和 裝置
【背景技術(shù)】
[0001] 事務(wù)性存儲(chǔ)器的自然實(shí)現(xiàn)方案是要求在引退作為較年輕事務(wù)的部分的指令之前, 較老的事務(wù)就提交。然而,在無序處理器中,通常情況是:較年輕事務(wù)中顯著數(shù)量的操作在 等待較老的事務(wù)提交的時(shí)候就已經(jīng)完成了執(zhí)行。例如,較老的事務(wù)中的單個(gè)存儲(chǔ)可能需要 數(shù)百個(gè)周期以等待存儲(chǔ)器進(jìn)行響應(yīng)。在這期間,無序機(jī)器可能已經(jīng)執(zhí)行了較年輕事務(wù)中的 全部指令。當(dāng)該較老的事務(wù)最終提交時(shí),現(xiàn)在有積壓的指令要從該較年輕的事務(wù)中引退。
【附圖說明】
[0002] 在所附附圖中以示例方式而非限制方式說明本發(fā)明,在附圖中,類似的參考標(biāo)號(hào) 指示類似的元件,其中:
[0003] 圖1示出根據(jù)本發(fā)明的實(shí)施例的處理器核100的多個(gè)部分的框圖。
[0004] 圖2示出寫入時(shí)復(fù)制(COW)緩沖器的實(shí)施例。
[0005] 圖3示出允許標(biāo)記存儲(chǔ)器狀態(tài)的數(shù)據(jù)高速緩存的實(shí)施例。
[0006] 圖4示出示例性ROB。
[0007] 圖5示出將TM區(qū)指示符用于加載指令的實(shí)施例。
[0008] 圖6示出將TM區(qū)指示符用于存儲(chǔ)指令的實(shí)施例。
[0009] 圖7示出將TM區(qū)指示符用于算術(shù)指令的實(shí)施例。
[0010] 圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)800的框圖。
[0011] 圖9A是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例性有序流水線和示例性的寄存器重 命名的無序發(fā)布/執(zhí)行流水線的框圖。
[0012] 圖9B是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例 性實(shí)施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖。
[0013] 圖10A-B示出更具體的示例性有序核架構(gòu)的框圖,該核將是芯片中的若干邏輯塊 之一(包括相同類型和/或不同類型的其他核)。
[0014] 圖11是根據(jù)本發(fā)明的多個(gè)實(shí)施例可具有多于一個(gè)的核、可具有集成存儲(chǔ)器控制 器、并且可具有集成圖形器件的處理器1100的框圖。
[0015] 圖12-15是示例性計(jì)算機(jī)架構(gòu)的框圖。
[0016] 圖16是根據(jù)本發(fā)明的各實(shí)施例的對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn) 制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。
【具體實(shí)施方式】
[0017] 在以下描述中,陳述了多個(gè)具體細(xì)節(jié)。然而,應(yīng)當(dāng)理解,可不通過這些具體細(xì)節(jié)來 實(shí)施本發(fā)明的實(shí)施例。在其他實(shí)例中,未詳細(xì)示出公知的電路、結(jié)構(gòu)以及技術(shù),以免使對(duì)本 描述的理解模糊。
[0018] 說明書中提到" 一個(gè)實(shí)施例"、"實(shí)施例"、"示例實(shí)施例"等指示所描述的實(shí)施例可 包括特定特征、結(jié)構(gòu)或特性,但是,每一個(gè)實(shí)施例可以不一定包括該特定特征、結(jié)構(gòu),或特 征。此外,此類短語不一定是指同一實(shí)施例。此外,當(dāng)結(jié)合實(shí)施例描述特定的特征、結(jié)構(gòu)或 特性時(shí),認(rèn)為結(jié)合無論是否被明確描述的其他實(shí)施例而影響此類特征、結(jié)構(gòu)或特性是在本 領(lǐng)域技術(shù)人員的知識(shí)范圍之內(nèi)的。
[0019] 示例件處理器核
[0020] 圖1示出根據(jù)本發(fā)明的實(shí)施例的處理器核100的多個(gè)部分的框圖。在一個(gè)實(shí)施例 中,圖1中所示的多個(gè)箭頭示出經(jīng)過核100的指令流??稍谥T如參考圖1所討論的單個(gè)集 成電路芯片(或管芯)上實(shí)現(xiàn)一個(gè)或多個(gè)處理器核(例如,處理器核100)。此外,該芯片可 包括一個(gè)或多個(gè)共享的和/或私有的高速緩存(例如,高速緩存)、互連、存儲(chǔ)器控制器或其 他組件。在實(shí)施例中,可將圖1中所示的處理器核100用于執(zhí)行包括對(duì)應(yīng)于虛擬化事務(wù)模 式、非虛擬化(或受限的)事務(wù)模式和非事務(wù)模式的那些線程的一種或多種類型的線程。
[0021] 如圖1中所示,處理器核100可包括取出單元102,其用于從指令高速緩存101中 取出指令,以便由核100執(zhí)行??蓮腖l指令高速緩存101或諸如存儲(chǔ)器164和/或存儲(chǔ)設(shè) 備之類的任何存儲(chǔ)設(shè)備中取出這些指令。核100也可包括用于對(duì)被取出的指令進(jìn)行解碼的 解碼單元104。例如,解碼單元104可將被取出的指令解碼為多個(gè) U0p(微操作)。此外,核 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可無序地執(zhí)行指令。因此,在一個(gè)實(shí)施 例中,該處理器核100可以是無序處理器核。核100也可包括引退單元110。該引退單元 110可以在指令被提交之后引退被執(zhí)行的指令。在實(shí)施例中,引退這些被執(zhí)行的指令會(huì)導(dǎo) 致:通過對(duì)這些指令的執(zhí)行,提交處理器狀態(tài);解除分配由這些指令使用的物理寄存器,等 等。
[0022] 如圖1中所示,核100可附加地包括追蹤高速緩存或微代碼只讀存儲(chǔ)器 (uROM) 111,其用于存儲(chǔ)微代碼和/或追蹤已被取出(例如,由取出單元102取出)的指令。 可將存儲(chǔ)在該uROM 111中的微代碼用于配置核100的各種硬件組件。在實(shí)施例中,可通過 與該處理器核100通信的另一組件(例如,所討論的計(jì)算機(jī)可讀介質(zhì)或其他存儲(chǔ)設(shè)備)來 加載被存儲(chǔ)在該uROM 111中的微代碼。核100也可包括重排序緩沖器(ROB) 112,其用于存 儲(chǔ)關(guān)于用于由處理器核100的各種組件訪問的進(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ù)。
[0023] 在一個(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。
[0024] 下列討論伴隨用于使用TM區(qū)標(biāo)識(shí)符(或顏色)來改善TM吞吐量的技術(shù)的詳細(xì)實(shí) 施例。最初的討論將在高層級(jí)上討論對(duì)TM區(qū)標(biāo)識(shí)符和通常用于改善吞吐量的各種組件的 使用。隨后,詳述處理事務(wù)的加載和存儲(chǔ)的更具體的示例。
[0025] 岡指示
[0026] 來自相同線程的多個(gè)事務(wù)性存儲(chǔ)器例程可在給定的時(shí)刻在處理器上運(yùn)行,并且可 被逐一排序。貫穿本說明書的通篇,將這些例程稱為"區(qū)"("region")。在實(shí)施例中,通 過開始和結(jié)束指令(例如,XBEGIN和XEND)來描繪事務(wù)。如本文中所詳述的那樣,可將TM 區(qū)指示符用于將來自一個(gè)TM區(qū)的指令與來自另一 TM區(qū)的那些指令區(qū)分開來??稍诹魉€ 中的許多不同點(diǎn)處動(dòng)態(tài)地或在運(yùn)行時(shí)(runtime)之前靜態(tài)地將該指示符分配到指令(宏指 令或微操作)中。流水線的分配級(jí)是無序執(zhí)行之前的一個(gè)點(diǎn)(在此處,指令仍被視為是有 序的),因此,該分配級(jí)可提供用該分配級(jí)的TM區(qū)指示符來標(biāo)記指令的機(jī)會(huì)時(shí)間。在本級(jí) 期間,作出關(guān)于如下的決定:要使用什么存儲(chǔ)位置(例如,MOB的加載或存儲(chǔ)緩沖器中的位 置);對(duì)由指令使用的物理寄存器的分配(這可包括寄存器重命名);以及要使用哪個(gè)功能 單元(如果有必要)。然而,也可利用諸如取出級(jí)、解碼級(jí)等的其他級(jí)。無論將哪個(gè)級(jí)用于 TM區(qū)指示符的標(biāo)記操作,都將TM區(qū)指示符信息置于重排序緩沖器(ROB) 112中。
[0027] 本文詳述了指示將"η"用作連續(xù)的事務(wù)性存儲(chǔ)器區(qū)(允許指令從這些區(qū)中引退) 的數(shù)量的TM區(qū)的示例。例如,當(dāng)η = 3時(shí),向來自第一 TM區(qū)的指令分配顏色0 ;向下一區(qū)的 指令分配顏色1 ;向下一區(qū)的指令分配顏色2 ;并且向下一區(qū)的指令分配顏色0,以此類推。 由此,該TM區(qū)指示分配級(jí)(例如,分配)不阻止指令或TM,而僅僅以輪循(round-robin)方 式分配TM區(qū)顏色。由于時(shí)序的原因,實(shí)現(xiàn)方案可選擇復(fù)制流水線中別處的顏色信息。例如, 如將在稍后討論的那樣,可以用它們的顏色來標(biāo)記加載緩沖器條目以便于在數(shù)據(jù)高速緩存 (D-高速緩存)中設(shè)置正確的(相關(guān)聯(lián)的)讀取位(R-位),等等。
[0028] 用于回滾的檢杳點(diǎn)橾作
[0029] TM需要用于對(duì)寄存器進(jìn)行檢查點(diǎn)操作(checkpointing)的方法,使得可在中止事 務(wù)的情況下恢復(fù)寄存器狀態(tài)。在處理器(在其中,將架構(gòu)寄存器重命名為物理寄存器)中, 這可以通過在該處理器的物理寄存器中保留該架構(gòu)寄存器的事務(wù)前(pre-transactional) 值并且向TM區(qū)中的、覆寫該處理器的指令分配新的物理寄存器來實(shí)現(xiàn)。通常,事務(wù)不能夠 釋放物理寄存器以由包括其他事務(wù)中的那些指令的其他指令使用。將保持從經(jīng)檢查點(diǎn)操作 的架構(gòu)寄存器到物理寄存器的映射的結(jié)構(gòu)稱為寫入時(shí)復(fù)制(cow)緩沖器。在一些實(shí)施例 中,該COW是引退單元110的部分。
[0030] 為了支持保持多個(gè)寄存器檢查點(diǎn)的能力,可外加標(biāo)記TM區(qū)之間的分隔的中間指 針來使用該COW結(jié)構(gòu)。在圖2中示出示例性C0W。如圖所示,COW存儲(chǔ)用于已經(jīng)(按時(shí)間順 序)引退但還未被提交的指令的寄存器。
[0031] 使用先前η = 3的示例,在所示出的COW中,存在三個(gè)TM區(qū)。在圖中示出多個(gè)指 針,并且這些指針描繪TM區(qū)。第一指針EO標(biāo)識(shí)COW中最后被提交的指令的位置。注意,存 在一些已經(jīng)被提交但還未被解除分配以供處理器使用的寄存器??稍谌魏螘r(shí)候收回這些寄 存器。
[0032] 第二指針El