亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

分支預(yù)測(cè)單元和1級(jí)指令高速緩存中的帶寬增加的制作方法

文檔序號(hào):10663545閱讀:397來源:國(guó)知局
分支預(yù)測(cè)單元和1級(jí)指令高速緩存中的帶寬增加的制作方法
【專利摘要】本發(fā)明呈現(xiàn)用于在處理器中執(zhí)行分支預(yù)測(cè)的一種處理器、一種設(shè)備和一種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)。所述處理器包括前端單元。所述前端單元包括1級(jí)分支目標(biāo)緩沖器(BTB)、BTB索引預(yù)測(cè)器(BIP)和1級(jí)散列感知器(HP)。所述BTB被配置來預(yù)測(cè)目標(biāo)地址。所述BIP被配置來基于程序計(jì)數(shù)器和全局歷史產(chǎn)生預(yù)測(cè),其中所述預(yù)測(cè)包括推測(cè)性部分目標(biāo)地址、全局歷史值、全局歷史移位值和路徑預(yù)測(cè)。所述HP被配置來預(yù)測(cè)分支指令是取用還是不取用。
【專利說明】分支預(yù)測(cè)單元和1級(jí)指令高速緩存中的帶寬増加
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)要求2013年10月25日申請(qǐng)的美國(guó)臨時(shí)申請(qǐng)第61/895,624號(hào)的權(quán)益,所述申請(qǐng)如同在本文中完全提出般以引用的方式并入。
技術(shù)領(lǐng)域
[0003]公開的實(shí)施方案一般針對(duì)一種處理器,且特定來說,涉及一種處理器中的分支預(yù)測(cè)單元和I級(jí)指令高速緩存。
[0004]發(fā)明背景
[0005]在多種應(yīng)用中利用包括中央處理單元(CPU)和圖形處理單元(GPU)的處理器。標(biāo)準(zhǔn)配置將處理器與存儲(chǔ)單元(諸如高速緩存、系統(tǒng)存儲(chǔ)器等等)耦接。處理器可以執(zhí)行提取操作以根據(jù)需要從存儲(chǔ)單元提取指令。處理器管線包括用于處理指令的若干級(jí)。在一個(gè)實(shí)施中,四級(jí)管線可被使用且包括提取級(jí)、解碼級(jí)、執(zhí)行級(jí)和回寫級(jí)。指令按順序前進(jìn)通過管線級(jí)。
[0006]為了加快處理器的操作,期望具有全管線。填充管線的一種方法將為在正處理先前指令之同時(shí),提取隨后指令。為了能夠提取先行若干指令,可以使用分支預(yù)測(cè)器。分支預(yù)測(cè)器在分支指令到達(dá)管線中的執(zhí)行階段之前預(yù)測(cè)分支指令的方向(即,取用或不取用)和分支目標(biāo)地址。
[0007]這稱作“預(yù)取”指令和“推測(cè)性執(zhí)行”指令。因?yàn)樵诜种е噶畹竭_(dá)執(zhí)行階段以前不知道預(yù)測(cè)是否正確,所以推測(cè)性執(zhí)行指令。雖然在不知道分支指令的實(shí)際方向下預(yù)取和推測(cè)性執(zhí)行指令可導(dǎo)致加快指令處理,但是如果誤預(yù)測(cè)分支方向,那么可具有相反效果且可導(dǎo)致使管線暫停。如果發(fā)生分支誤預(yù)測(cè),那么管線需要被清除且執(zhí)行來自正確分支方向的指令。此可嚴(yán)重影響系統(tǒng)的性能。
[0008]已使用若干不同類型的分支預(yù)測(cè)器。雙模態(tài)預(yù)測(cè)器基于特定分支執(zhí)行的最近歷史作出預(yù)測(cè)且提供取用或不取用的預(yù)測(cè)。全局預(yù)測(cè)器基于所有分支的執(zhí)行,而非僅僅所關(guān)注的特定分支的最近歷史作出預(yù)測(cè)。還可以使用具有全局共享歷史緩沖器、模式歷史表和額外局部飽和計(jì)數(shù)器的兩級(jí)自適應(yīng)預(yù)測(cè)器,使得局部預(yù)測(cè)器和全局預(yù)測(cè)器的輸出彼此進(jìn)行異或以提供最終預(yù)測(cè)??梢酝瑫r(shí)使用多于一個(gè)預(yù)測(cè)機(jī)構(gòu),且基于記住哪個(gè)預(yù)測(cè)器已在過去作出最佳預(yù)測(cè)的元預(yù)測(cè)器或基于奇數(shù)數(shù)量的不同預(yù)測(cè)器的多數(shù)投票函數(shù)作出最終預(yù)測(cè)。
[0009]圖1是現(xiàn)有I級(jí)分支預(yù)測(cè)器100的框圖。分支預(yù)測(cè)器100包括第一預(yù)測(cè)器(Pl)102、第二預(yù)測(cè)器(P2)104、多路復(fù)用器(mux)106和選擇器108。程序計(jì)數(shù)器110(正被預(yù)測(cè)的分支的地址)和其它輸入112由第一預(yù)測(cè)器102和第二預(yù)測(cè)器104兩者評(píng)估且各者作出其自身預(yù)測(cè)。
[0010]程序計(jì)數(shù)器110還可以作為輸入供應(yīng)至選擇器108的輸入,所述選擇器108使用程序計(jì)數(shù)器110以確定哪個(gè)預(yù)測(cè)器(第一預(yù)測(cè)器102或第二預(yù)測(cè)器104)更準(zhǔn)確。選擇器108作出預(yù)測(cè)選擇114,其作為選擇者供應(yīng)至多路復(fù)用器106。所選預(yù)測(cè)器的輸出用作分支預(yù)測(cè)器100的預(yù)測(cè)116。
[0011]圖2是另一現(xiàn)有I級(jí)分支預(yù)測(cè)器200的框圖。在一個(gè)實(shí)施中,I級(jí)預(yù)測(cè)器200可以是McFarling混合預(yù)測(cè)器。分支預(yù)測(cè)器200在構(gòu)造上類似于分支預(yù)測(cè)器100,但是對(duì)于一些組件具有不同實(shí)施。分支預(yù)測(cè)器200包括第一預(yù)測(cè)器202(實(shí)施為雙模態(tài)計(jì)數(shù)器陣列)、第二預(yù)測(cè)器204(實(shí)施為雙模態(tài)計(jì)數(shù)器陣列)、多路復(fù)用器(muX)206和雙模態(tài)選擇器208。各個(gè)預(yù)測(cè)器202、204作出其自身預(yù)測(cè)。第二預(yù)測(cè)器204包括XOR單元210和雙模態(tài)計(jì)數(shù)器陣列212。
[0012]程序計(jì)數(shù)器220 (分支地址)作為輸入供應(yīng)至第一預(yù)測(cè)器202、第二預(yù)測(cè)器204和選擇器208。第一預(yù)測(cè)器202使其預(yù)測(cè)基于由程序計(jì)數(shù)器220的低階地址位索引的飽和雙模態(tài)兩位計(jì)數(shù)器。
[0013]全局歷史222保持由最近N個(gè)分支取用的方向(由分支地址索引)的歷史且作為輸入供應(yīng)至第二預(yù)測(cè)器204 JOR單元210對(duì)程序計(jì)數(shù)器220和全局歷史222執(zhí)行異或操作,其將用作索引的散列產(chǎn)生至陣列212中。
[0014]選擇器208使用程序計(jì)數(shù)器220以在表中查找哪個(gè)預(yù)測(cè)器(第一預(yù)測(cè)器202或第二預(yù)測(cè)器204)更準(zhǔn)確。選擇器208作出預(yù)測(cè)選擇224,其作為選擇者供應(yīng)至多路復(fù)用器206。所選預(yù)測(cè)器用作分支預(yù)測(cè)器200的I級(jí)預(yù)測(cè)226。
[0015]圖3是稱作散列化感知器300的現(xiàn)有2級(jí)分支預(yù)測(cè)器的框圖。散列化感知器300包括偏置權(quán)重陣列302、多個(gè)權(quán)重陣列304^3042^,3044^加法器306。程序計(jì)數(shù)器310作為輸入供應(yīng)至偏置權(quán)重陣列302和權(quán)重陣列30^-304。
[0016]偏置權(quán)重陣列302是權(quán)重陣列,其中各個(gè)權(quán)重是位數(shù)量(例如,四個(gè)或八個(gè))。偏置權(quán)重陣列302被索引至使用程序計(jì)數(shù)器310或程序計(jì)數(shù)器310的散列中以獲得供應(yīng)至加法器306的權(quán)重值。
[0017]各個(gè)權(quán)重陣列304-304由程序計(jì)數(shù)器310的散列和全局歷史312的不同位索引以獲得權(quán)重值。各個(gè)權(quán)重陣列304-304包括XOR單元314,其通過對(duì)程序計(jì)數(shù)器310和全局歷史312的部分執(zhí)行異或操作來產(chǎn)生散列。全局歷史是所有分支的過去結(jié)果的列表(無論分支被取用還是未被取用),但并不包括當(dāng)前分支。全局歷史的最低有效位包含關(guān)于遇到的最近分支的信息,而全局歷史的最高有效位包含關(guān)于遇到的較舊分支的信息。
[0018]加法器306將從偏置權(quán)重陣列302和權(quán)重陣列30^-304的各者獲得的權(quán)重相加以獲得和值且和值的最高有效位(MSB)是預(yù)測(cè)316。例如,如果和值的MSB是“I”,那么預(yù)測(cè)是“不取用”且如果和值的MSB是“O”,那么預(yù)測(cè)是“取用”。
[0019]應(yīng)注意,在散列化感知器300的一個(gè)實(shí)施中,所有權(quán)重值在加法之前被符號(hào)擴(kuò)展以防止加法器306的溢出,溢出可能導(dǎo)致不正確預(yù)測(cè)。因?yàn)槌绦蛴?jì)數(shù)器310和全局歷史312兩者可以各包含較大數(shù)量的位,所以使用散列函數(shù)以產(chǎn)生至偏置權(quán)重陣列302中的索引且權(quán)重陣列304-304的各者產(chǎn)生小索引(就組成索引的位數(shù)量而言)。
[0020]分支預(yù)測(cè)器為通常較大和復(fù)雜的結(jié)構(gòu)。結(jié)果,其消耗大量功率且對(duì)于預(yù)測(cè)分支引發(fā)延時(shí)懲罰。因?yàn)楦玫姆种ьA(yù)測(cè)對(duì)處理器的性能和功率效率具有影響,所以期望具有更好的分支預(yù)測(cè)。
發(fā)明概要
[0021]—些實(shí)施方案提供一種包括前端單元的處理器。前端單元包括I級(jí)分支目標(biāo)緩沖器(BTB)、BTB索引預(yù)測(cè)器(BIP)和I級(jí)散列感知器(HP) ATB被配置來預(yù)測(cè)目標(biāo)地址。BIP被配置來基于程序計(jì)數(shù)器和全局歷史產(chǎn)生預(yù)測(cè),其中預(yù)測(cè)包括推測(cè)性部分目標(biāo)地址、全局歷史值、全局歷史移位值和路徑預(yù)測(cè)。HP被配置來預(yù)測(cè)分支指令是取用還是不取用。
[0022]一些實(shí)施方案提供一種用于在處理器中執(zhí)行分支預(yù)測(cè)的方法,所述處理器包括I級(jí)分支目標(biāo)緩沖器(BTB)和BTB索引預(yù)測(cè)器(BIP)。產(chǎn)生索引以用來查找至BTB和BIP中。使用索引在BTB中執(zhí)行查找以預(yù)測(cè)目標(biāo)地址。使用索引在BIP中執(zhí)行查找以預(yù)測(cè)推測(cè)性部分目標(biāo)地址。使用來自BTB的目標(biāo)地址和來自BIP的推測(cè)性部分目標(biāo)地址以產(chǎn)生用于下一個(gè)流的索引。
[0023]—些實(shí)施方案提供一種非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其存儲(chǔ)用于由通用計(jì)算機(jī)執(zhí)行以在處理器中執(zhí)行分支預(yù)測(cè)的指令集,所述處理器包括I級(jí)目標(biāo)緩沖器(BTB)和BTB索引預(yù)測(cè)器(BIP)。指令集包括產(chǎn)生代碼段、第一執(zhí)行代碼段、第二執(zhí)行代碼段和使用代碼段。產(chǎn)生代碼段產(chǎn)生索引以用來查找至BTB和BIP中。第一執(zhí)行代碼段使用索引在BTB中執(zhí)行查找以預(yù)測(cè)目標(biāo)地址。第二執(zhí)行代碼段使用索引在BIP中執(zhí)行查找以預(yù)測(cè)推測(cè)性部分目標(biāo)地址。使用代碼段使用來自BTB的目標(biāo)地址和來自BIP的推測(cè)性部分目標(biāo)地址以產(chǎn)生用于下一個(gè)流的索引。
[0024]附圖簡(jiǎn)述
[0025]可從通過實(shí)例結(jié)合附圖給出的以下描述獲得更詳細(xì)理解,其中:
[0026]圖1是現(xiàn)有I級(jí)分支預(yù)測(cè)器的框圖;
[0027]圖2是另一現(xiàn)有I級(jí)分支預(yù)測(cè)器的框圖;
[0028]圖3是現(xiàn)有2級(jí)分支預(yù)測(cè)器(散列化感知器)的框圖;
[0029]圖4是其中可以實(shí)施一個(gè)或多個(gè)公開的實(shí)施方案的實(shí)例設(shè)備的框圖;
[0030]圖5是BTB索引預(yù)測(cè)器(BIP)和BTB路徑預(yù)測(cè)器的框圖;
[0031]圖6是BIP中的單個(gè)條目的圖;
[0032]圖7是使用BIP以產(chǎn)生BP匹配信號(hào)的方法的流程圖;和
[0033]圖8是指令標(biāo)簽(IT)和指令高速緩存(IC)管線的框圖。
【具體實(shí)施方式】
[0034]圖4是其中可以實(shí)施一個(gè)或多個(gè)公開的實(shí)施方案的實(shí)例設(shè)備400的框圖。設(shè)備400可以包括(例如)計(jì)算機(jī)、游戲設(shè)備、手持設(shè)備、機(jī)頂盒、電視機(jī)、移動(dòng)電話或平板計(jì)算機(jī)。設(shè)備400包括處理器402、存儲(chǔ)器404、存儲(chǔ)裝置406、一個(gè)或多個(gè)輸入設(shè)備408和一個(gè)或多個(gè)輸出設(shè)備410。設(shè)備400還可以視情況包括輸入驅(qū)動(dòng)器412和輸出驅(qū)動(dòng)器414。應(yīng)理解,設(shè)備400可以包括未在圖4中示出的額外組件。
[0035]處理器402可以包括中央處理單元(CPU)、圖形處理器單元(GPU)、位于相同晶粒上的CPU和GPU或一個(gè)或多個(gè)處理器核心,其中各個(gè)處理器核心可以是CPU或GPU。存儲(chǔ)器404可以位于與處理器402相同的晶粒上或可以位于與處理器402分開處。存儲(chǔ)器404可以包括易失性或非易失性存儲(chǔ)器,例如,隨機(jī)存取存儲(chǔ)器(RAM)、動(dòng)態(tài)RAM或高速緩存。
[0036]存儲(chǔ)裝置406可以包括固定或可卸除式存儲(chǔ)裝置,例如,硬盤驅(qū)動(dòng)器、固態(tài)驅(qū)動(dòng)器、光盤或閃存驅(qū)動(dòng)器。輸入設(shè)備408可以包括鍵盤、小鍵盤、觸摸屏、觸摸墊、檢測(cè)器、麥克風(fēng)、加速計(jì)、陀螺儀、生物特征掃描儀或網(wǎng)絡(luò)連接(例如,用于無線IEEE 802信號(hào)的傳輸和/或接收的無線局域網(wǎng)卡)。輸出設(shè)備410可以包括顯示器、揚(yáng)聲器、打印機(jī)、觸覺反饋設(shè)備、一個(gè)或多個(gè)燈、天線或網(wǎng)絡(luò)連接(例如,用于無線IEEE 802信號(hào)的傳輸和/或接收的無線局域網(wǎng)卡)O
[0037]輸入驅(qū)動(dòng)器412與處理器402和輸入設(shè)備408通信且允許處理器402從輸入設(shè)備408接收輸入。輸出驅(qū)動(dòng)器414與處理器402和輸出設(shè)備410通信且允許處理器402將輸出發(fā)送至輸出設(shè)備410。應(yīng)注意,輸入驅(qū)動(dòng)器412和輸出驅(qū)動(dòng)器414是可選組件,且如果輸入驅(qū)動(dòng)器412和輸出驅(qū)動(dòng)器414不存在,那么設(shè)備400將以相同方式操作。
[0038]處理器中的前端單元(FE)負(fù)責(zé)提取指令且將指令發(fā)送至解碼單元(DE)AE包括兩個(gè)子單元:分支預(yù)測(cè)(BP)和指令高速緩存(IC)13BP子單元預(yù)測(cè)提取地址序列和在各個(gè)地址處提取的特定字節(jié)。IC子單元執(zhí)行頁(yè)轉(zhuǎn)譯且從高速緩存階層提取特定字節(jié)。應(yīng)注意,F(xiàn)E包括其它子單元和功能性,但是這樣的功能性與本公開內(nèi)容無關(guān)且不在本文中進(jìn)一步描述。
[0039]在FE中存在三個(gè)主要管線:BP管線、指令標(biāo)簽(IT)管線和IC管線。在BP管線與IT/IC管線之間存在使BP管線與指令提取(IT/IC)管線解耦的預(yù)測(cè)隊(duì)列(PRQ) AP管線產(chǎn)生預(yù)測(cè)地址且PRQ保持地址直至IT/IC管線可以處理預(yù)測(cè)地址。PRQ是提取地址的有序隊(duì)列。其由IT/IC管線讀取和更新。
[0040]在各個(gè)周期,預(yù)測(cè)虛擬提取地址(程序計(jì)數(shù)器PC)和呈現(xiàn)最近分支行為的矢量(全局歷史GHist)沿著BP管線向下流動(dòng)。各個(gè)流可以發(fā)現(xiàn)待提取的至多接下來64個(gè)字節(jié)。PC用于查找分支目標(biāo)緩沖器(BTB)中的條目ATB條目識(shí)別分支且預(yù)測(cè)其目標(biāo)。PC和GHist用于訪問散列感知器(HP)表。HP表用于預(yù)測(cè)條件分支的方向(S卩,取用或不取用)。
[0041]返回和可變目標(biāo)分支具有用于幫助其預(yù)測(cè)的額外結(jié)構(gòu)。如果BTB指示取用分支是一個(gè)調(diào)用,那么調(diào)用之后的指令的地址推送至堆棧上。關(guān)聯(lián)返回指令將從堆棧彈出這個(gè)地址,而非使用來自BTB的預(yù)測(cè)目標(biāo)。如果BTB指示分支具有可變目標(biāo),那么提取地址和全局歷史用于在間接目標(biāo)陣列(ITA)中查找地址。
[0042]BTB和HP結(jié)構(gòu)兩者實(shí)施為兩級(jí)結(jié)構(gòu)。從I級(jí)(Ll)BTB和LI HP預(yù)測(cè)的提取方向上的改變(重新導(dǎo)向)將一個(gè)氣泡(例如,“不操作”)插入至BP管線中。如果分支是在LI BTB中,但是具有可變目標(biāo),那么其在L2 BTB中發(fā)現(xiàn)或如果L2 HP重寫來自LI預(yù)測(cè)器的方向預(yù)測(cè),那么三個(gè)氣泡插入至BP管線中。最終,具有可變目標(biāo)的L2 BTB中的分支將四個(gè)氣泡插入至BP管線中。
[0043]除了三個(gè)主要預(yù)測(cè)器之外,存在被設(shè)計(jì)來改善FE的效率的兩個(gè)結(jié)構(gòu)。如上文提及,在典型情況下,取用或不取用分支將氣泡引入至BP管線中。與訪問BTB和HP并行,PC和GHist用于從BTB索引預(yù)測(cè)器(BIP)讀取條目。這個(gè)條目用于預(yù)測(cè)BTB和HP陣列索引且用于在后一個(gè)周期中訪問這些結(jié)構(gòu)。當(dāng)BIP正確地預(yù)測(cè)下一個(gè)指令的索引時(shí),氣泡被擠破。存在恒定地掃描預(yù)測(cè)地址串流以嘗試發(fā)現(xiàn)重復(fù)循環(huán)的循環(huán)預(yù)測(cè)器。當(dāng)循環(huán)預(yù)測(cè)器鎖定至循環(huán)上時(shí),可以切斷較大預(yù)測(cè)陣列且預(yù)測(cè)可以在每個(gè)周期以至多一個(gè)取用分支的速率由這個(gè)較小結(jié)構(gòu)作出。
[0044]在地址被預(yù)測(cè)時(shí),其寫入至三個(gè)不同結(jié)構(gòu)。各個(gè)地址連同分支和歷史信息寫入至分支狀態(tài)寄存器(BSR)。這用于在分支被發(fā)現(xiàn)、誤預(yù)測(cè)和退出時(shí)訓(xùn)練預(yù)測(cè)結(jié)構(gòu)。各個(gè)地址寫入至PRQ,使得IC管線可以提取關(guān)聯(lián)數(shù)據(jù)。最終,各個(gè)地址寫入至DE單元中的提取地址先進(jìn)先出(FIFO)隊(duì)列(FaFifo)。
[0045]在各個(gè)周期中,來自PRQ的預(yù)測(cè)虛擬提取地址(VA)沿著IT管線向下流動(dòng)。其訪問兩級(jí)指令轉(zhuǎn)譯后備緩沖器(ITLB)的第一級(jí)以嘗試將其轉(zhuǎn)換為物理地址(PA)。如果成功,那么IT管線接下來取用這個(gè)物理地址且使用其來訪問1C。與ITLB查找并行,開始對(duì)IC微標(biāo)簽(uTag)的訪問。當(dāng)從ITLB獲得PA時(shí),完成這個(gè)查找。微標(biāo)簽預(yù)測(cè)應(yīng)訪問IC數(shù)據(jù)陣列中的哪個(gè)路徑(高速緩存線應(yīng)定位于何處)。與數(shù)據(jù)訪問并行,執(zhí)行全部標(biāo)簽查找以限定微標(biāo)簽命中信號(hào)。這個(gè)流的結(jié)果(ITLB命中、部分PA、IC命中、IC路徑)回寫至PRQ。
[0046]如果存在LI ITLB錯(cuò)失,分配轉(zhuǎn)譯后備緩沖器(TLB)錯(cuò)失地址緩沖器(MAB)且嘗試L2 ITLB中的查找。如果L2 ITLB中還存在錯(cuò)失,那么起始對(duì)加載/存儲(chǔ)單元(LS)的頁(yè)行走請(qǐng)求。L2 ITLB命中條目或頁(yè)行走請(qǐng)求的結(jié)果安裝于LI ITLB中。如果指令高速緩存中存在錯(cuò)失,那么分配IC存儲(chǔ)器地址緩沖器(MAB)且發(fā)送對(duì)用于錯(cuò)失線的L2 ITLB的填充請(qǐng)求。如果特定PA可緩存(如由頁(yè)行走的屬性指示),那么在數(shù)據(jù)返回時(shí),其寫入至IC中。如果特定PA不可緩存,那么過程等待地址為PRQ中的最舊者,且接著將所得提取數(shù)據(jù)直接前送至DE。
[0047]當(dāng)存在錯(cuò)失時(shí),繼續(xù)處理PRQ中的較新條目。嘗試預(yù)取用于比錯(cuò)失的較舊提取新的提取的高速緩存線。
[0048]IC管線是可以每個(gè)周期提取32個(gè)字節(jié)指令數(shù)據(jù)的三階段管線。PRQ中的各個(gè)地址取決于64字節(jié)預(yù)測(cè)窗內(nèi)的預(yù)測(cè)開始和結(jié)束位置而需要沿著IC管線向下的一個(gè)或兩個(gè)流以將所有數(shù)據(jù)前送至DE。最舊PRQ條目等待的返回L2高速緩存錯(cuò)失可以為那個(gè)條目喚醒IC管線且在正更新數(shù)據(jù)陣列時(shí),L2填充數(shù)據(jù)可以直接旁通至DE。
[0049]所有預(yù)測(cè)、標(biāo)簽和高速緩存管線通過基于線程優(yōu)先化算法使來自兩個(gè)線程的訪問交錯(cuò)來處理同時(shí)多線程(SMT)。一般來說,使用輪詢技術(shù)在BP、IT和IC管線內(nèi)獨(dú)立地執(zhí)行線程調(diào)度。在給定周期中,如果線程中的一個(gè)被阻塞且另一線程可用于挑選,那么將在那個(gè)周期中挑選另一線程。
[0050]圖5是BTB索引預(yù)測(cè)器和BTB路徑預(yù)測(cè)器的框圖。圖5只示出了實(shí)施BTB索引預(yù)測(cè)器和BTB路徑預(yù)測(cè)器的處理器500的一部分;為了清楚的目的,存在未在圖5中示出的處理器500的其它元件。圖5底部處的標(biāo)記一 BP0、BP1和BP2—指示不同組件操作于BP管線的哪個(gè)周期中。
[0051 ]程序計(jì)數(shù)器(PC)502和全局歷史(GHist)504提供為輸入。第一多路復(fù)用器510接收PC 502和目標(biāo)PC(Target_BP2)512且選擇信號(hào)514選擇PC 502或目標(biāo)PC 512來作為所選PC(PC_BP0)516。選擇信號(hào)514基于來自執(zhí)行(EX)單元或解碼(DE)單元的重新導(dǎo)向或基于來自稍后BP管線中的較高優(yōu)先級(jí)預(yù)測(cè)。應(yīng)注意,雖然選擇信號(hào)514來源于處理器500的另一部分,但是為了清楚的目的,未示出至選擇信號(hào)514的電勢(shì)源的連接線。
[0052]所選PC 516和預(yù)測(cè)目標(biāo)PC(Pred Target_BPl)518作為輸入供應(yīng)至第二多路復(fù)用器520且選擇信號(hào)522選擇所選PC 516或預(yù)測(cè)目標(biāo)PC 518來作為預(yù)測(cè)PC(Pred PC_BP0)524。選擇信號(hào)522基于來自EX單元或DE單元的重新導(dǎo)向或基于來自稍后BP管線中的較高優(yōu)先級(jí)預(yù)測(cè)或BP2周期中是否存在具有BIP誤預(yù)測(cè)的有效操作(指示預(yù)測(cè)目標(biāo)PC 518無用,此意味著所選PC 516被選擇)。應(yīng)注意,雖然選擇信號(hào)522來源于處理器500的另一部分,但是為了清楚的目的,未示出至選擇信號(hào)522的電勢(shì)源的連接線。
[0053]預(yù)測(cè)PC 524作為輸入(索引)供應(yīng)至LI BTB 526,其產(chǎn)生可能地址集528。可能地址集528作為輸入供應(yīng)至第三多路復(fù)用器530,且選擇信號(hào)532(將在下文描述的取用/不取用信號(hào))選擇可能地址集528中的一個(gè)作為目標(biāo)PC 512,其反饋至第一多路復(fù)用器510且向前饋送至第一比較器534。
[0054]LI BTB 526是組關(guān)聯(lián)結(jié)構(gòu),使得執(zhí)行查找。地址的一些位用于讀取結(jié)構(gòu)且地址的一些散列位用于與標(biāo)簽比較以確定是否存在與地址的匹配。標(biāo)簽比較和若干“路徑”(若干不同可能結(jié)果)之間的選擇在正常兩周期查找中花費(fèi)大量時(shí)間。
[0055]在每個(gè)周期,讀取LIBTB 526以預(yù)測(cè)目標(biāo)PC 512。接著在下一個(gè)流中使用目標(biāo)PC512以產(chǎn)生再次讀取LI BTB的索引來預(yù)測(cè)下一個(gè)目標(biāo)PC。這可以在相同高速緩存線或跟隨取用分支的任何非循序高速緩存線中。因?yàn)閺牡谝涣鳟a(chǎn)生目標(biāo)PC花費(fèi)時(shí)間,所以對(duì)于下一個(gè)流,LI BTB的讀取延遲。為了擠破這個(gè)氣泡,如下文描述使用BTB索引預(yù)測(cè)器(BIP)。
[0056]典型預(yù)測(cè)可每?jī)蓚€(gè)周期預(yù)測(cè)一個(gè)取用分支。各個(gè)分支通過LI BTB 526。在下一個(gè)周期(BP2)中,目標(biāo)PC 512需要被確定且回流兩個(gè)周期(至ΒΡ0)至LI BTB 526的前端處的多路復(fù)用器510、520。簡(jiǎn)要而言,可能地址528從LI BTB 526獲得,可能地址中的一個(gè)被挑選(作為目標(biāo)PC 512)且挑選地址回流。
[0057]預(yù)測(cè)PC 524的一些位和GHist的一些位的組合供應(yīng)至BTB索引預(yù)測(cè)器(BIP)536。在一個(gè)實(shí)施中,這個(gè)組合是預(yù)測(cè)PC 524位和GHist位的異或。BIP 536產(chǎn)生:預(yù)測(cè)目標(biāo)地址(Pred Target BP_1)518,其反饋至第二多路復(fù)用器520且向前饋送至第一比較器534;和預(yù)測(cè)全局歷史移位值(Pred GHist shift_BPl)538,其供應(yīng)至第一GHist移位器540和第二比較器542。
[0058]并行訪問BIP 536與LI BTB 5260L1 BTB 526預(yù)測(cè)當(dāng)前流的分支目標(biāo)(其還可以用于構(gòu)建下一個(gè)流的BTB/散列感知器(HP)索引),同時(shí)BIP 536預(yù)測(cè)推測(cè)性部分目標(biāo)地址(依據(jù)VA[19:1]和GHist兩者),其用于產(chǎn)生執(zhí)行至LI BTB 526和LI HP 560中的查找的索引。BIP 536直接映射且由虛擬地址的散列和全局歷史索引,此允許在緊接后一個(gè)周期中利用預(yù)測(cè)索引讀取LI BTB 526和LI HP 560。當(dāng)BIP預(yù)測(cè)正確時(shí),這壓碎取用和不取用分支氣泡。
[0059]LI BTB 526實(shí)施(大小和放置WPLl BTB讀取加上重新導(dǎo)向時(shí)序約束允許只每隔一個(gè)周期基于最后一個(gè)LI BTB重新導(dǎo)向產(chǎn)生和讀取LI BTB預(yù)測(cè)。對(duì)于每個(gè)LI BTB重新導(dǎo)向,這在連續(xù)LI BTB讀取之間產(chǎn)生氣泡周期。在兩個(gè)線程于每個(gè)交替周期運(yùn)行且在連續(xù)周期中占據(jù)LI BTB的理想情形下,將不會(huì)發(fā)生這個(gè)問題。在只存在一個(gè)活動(dòng)線程或連續(xù)相同線程分配的情況下,每第二周期將存在一個(gè)氣泡,此損害性能。
[0060]在一個(gè)實(shí)施中,BIP 536是直接映射256條目結(jié)構(gòu)且條目完全共享。給BIP 536呈現(xiàn)索引輸入,從BIP獲得值且假設(shè)這個(gè)值是正確的。在那個(gè)時(shí)刻不要求進(jìn)一步比較或限定。在下一個(gè)周期,BIP 536的結(jié)果被使用且接著將知道其是否為在那種背景中使用的正確結(jié)果(其在知道是否為正確之前使用)。在處理器的物理布局的一個(gè)實(shí)施中,BIP 536位于LI BTB526和LI HP 560附近。
[0061 ]圖6示出了BIP 536中的單個(gè)條目600的內(nèi)容。條目600包括推測(cè)性索引602、全局歷史的最低有效位(LSB)604、全局歷史移位值606和路徑預(yù)測(cè)608。
[0062]推測(cè)性索引602可以是19個(gè)位長(zhǎng)且包括較低VA位19: UBIP 536,LI BTB 526和LIHP 560需要這些位來產(chǎn)生用于下一個(gè)周期流的其讀取索引。
[0063]全局歷史的LSB 604可以是兩個(gè)位長(zhǎng)且用于預(yù)測(cè)下一個(gè)周期推測(cè)性全局歷史值,BIP 536,LI BTB 526和LI HP 560需要其來產(chǎn)生讀取索引。
[0064]全局歷史移位值606可以是兩個(gè)位長(zhǎng)且?guī)椭⑷謿v史表且指示使全局歷史的LSB移位O、I或2個(gè)位。如果全局歷史移位值606大于零,那么供應(yīng)移位量和將移位的值。各個(gè)條件分支取決于分支取用還是不取用而移入O或I至全局歷史表中。例如,如果存在一個(gè)未取用分支,那么O移入;如果存在一個(gè)取用分支,那么I移入等等。
[0065]路徑預(yù)測(cè)608可以是四個(gè)位長(zhǎng)且用于預(yù)測(cè)將最有可能存儲(chǔ)為下一個(gè)流所需要的信息(VA、GHist、路徑)的LI BTB路徑(獨(dú)熱)。如果設(shè)置路徑預(yù)測(cè)608的所有四個(gè)位,那么讀取LI BTB和L2 BTB的所有路徑以確認(rèn)BTB錯(cuò)失。
[0066]往回參考圖5,使用BIP索引預(yù)測(cè),每個(gè)周期預(yù)測(cè)一個(gè)取用分支。BIP536得到索引且以與查找LI BTB 526相同的方式查找。查找的結(jié)果(預(yù)測(cè)目標(biāo)PC 518)立即多路復(fù)用回至輸入(經(jīng)由多路復(fù)用器520)且在下一個(gè)周期中實(shí)現(xiàn)LI BTB 526的另一查找。預(yù)測(cè)目標(biāo)PC518在準(zhǔn)確度上比從LI BTB 526出來的目標(biāo)PC 512差,但是當(dāng)預(yù)測(cè)目標(biāo)PC 518正確時(shí),可每個(gè)周期作出一個(gè)預(yù)測(cè)。在下一個(gè)周期,對(duì)于各個(gè)預(yù)測(cè),檢查從BIP 536出來的“快速”預(yù)測(cè)以確定其是否正確。如果其正確,那么無必要將其丟棄。如果其不正確,那么將其丟棄(通過不選擇從多路復(fù)用器520出來的預(yù)測(cè))且回到每?jī)蓚€(gè)周期預(yù)測(cè)一個(gè)分支的先前行為。
[0067]循序預(yù)測(cè)(例如,在不具有分支的一段代碼中)的潛在“問題”為即使不需要預(yù)測(cè)分支,但是處理仍受到BIP的嘗試性預(yù)測(cè),此可能因花費(fèi)兩個(gè)周期而減慢處理。但是總體上,存在凈性能增益。
[0068]利用正提取的地址的散列化版本的位對(duì)LIBTB 526加以索引。利用正提取的地址和被預(yù)測(cè)的最后若干分支的歷史的組合散列化LI HP 560。由于利用地址位和歷史位的組合散列化BIP 536,所以BIP 536就此事更像散列感知器。使用的歷史位的最佳數(shù)量為少數(shù);例如,如上文所述,在一個(gè)實(shí)施中使用兩個(gè)歷史位。將歷史位散列化至結(jié)果中幫助獲得比通過使用僅僅地址位可作出的更好的預(yù)測(cè)。
[0069]從BIP 536出來的預(yù)測(cè)目標(biāo)PC 518是立即反饋至BIP 536和LI BTB 526中來用于下一個(gè)訪問的索引(而非僅僅為地址)。從BIP 536讀出預(yù)測(cè)索引且從LI BTB 526讀出可能地址528。兩個(gè)信息片段饋送至下一個(gè)周期且作出比較(在第一比較器534處)以確定目標(biāo)地址(目標(biāo)PC 512)和所得索引是否與預(yù)測(cè)索引(預(yù)測(cè)目標(biāo)PC 518)匹配。
[0070]在預(yù)測(cè)管線中完成BIP536的一般訓(xùn)練。當(dāng)獲得預(yù)測(cè)目標(biāo)PC 518時(shí),索引從其計(jì)算出且預(yù)測(cè)目標(biāo)PC 518回寫至那個(gè)索引下的BIP 536。當(dāng)執(zhí)行流返回至代碼中的相同點(diǎn)(例如,基于相同最近歷史),從BIP 536讀取的內(nèi)容反映(最后一次代碼在這個(gè)點(diǎn)的)那個(gè)時(shí)刻的認(rèn)知。從分支由BIP 536預(yù)測(cè)時(shí)至其寫入至BIP來用于訓(xùn)練時(shí),存在相當(dāng)快速的周轉(zhuǎn)。因?yàn)榇藶橥茰y(cè)性結(jié)構(gòu)且可被立即確認(rèn)是否準(zhǔn)確,所以快速訓(xùn)練的缺點(diǎn)并不大。
[0071]GHist 504和目標(biāo)移位GHist(Target GHist_BP2)544供應(yīng)至第四多路復(fù)用器546,且選擇信號(hào)548用于選擇GHist 504或目標(biāo)移位GHist 544來作為全局歷史預(yù)測(cè)(GHist_BPO) 550。選擇信號(hào)548基于來自EX單元或DE單元的重新導(dǎo)向或基于來自稍后BP管線中的較高優(yōu)先級(jí)預(yù)測(cè)。應(yīng)注意,雖然選擇信號(hào)548來源于處理器500的另一部分,但是為了清楚的目的,未示出至選擇信號(hào)548的電勢(shì)源的連接線。
[0072]第一 GHist移位器540施加預(yù)測(cè)GHist移位538以使全局歷史移位且產(chǎn)生預(yù)測(cè)目標(biāo)全局歷史(Pred Target GHist_BPl)552AHist預(yù)測(cè)550和預(yù)測(cè)目標(biāo)GHist 552供應(yīng)至第五多路復(fù)用器554且選擇信號(hào)556用于選擇GHist預(yù)測(cè)550或預(yù)測(cè)目標(biāo)GHist 552來作為預(yù)測(cè)全局歷史(Pred GHist_BP0)558。選擇信號(hào)556基于來自EX單元或DE單元的重新導(dǎo)向,基于來自稍后BP管線中的較高優(yōu)先級(jí)預(yù)測(cè)或BP2周期中是否存在具有BIP誤預(yù)測(cè)的有效操作。應(yīng)注意,雖然選擇信號(hào)556來源于處理器500的另一部分,但是為了清楚的目的,未示出至選擇信號(hào)556的電勢(shì)源的連接線。
[0073]預(yù)測(cè)GHist 558供應(yīng)至LI散列感知器(HP)560,其產(chǎn)生取用/不取用信號(hào)532。取用/不取用信號(hào)532提供至取用/不取用GHist移位器562,其將取用/不取用信號(hào)532前送至第三多路復(fù)用器530且產(chǎn)生至第二比較器542和至第二 GHist移位器566的全局歷史移位值(GHist shift_BP2)564。第二GHist移位器566使用GHist移位值564以產(chǎn)生目標(biāo)GHist 544且將目標(biāo)GHist 544前送至第四多路復(fù)用器546。
[0074]第一比較器534將目標(biāo)PC 512與預(yù)測(cè)目標(biāo)PC 518相比較以確定其是否匹配且將匹配值568輸出至與門570。第二比較器542將預(yù)測(cè)GHist移位值538與GHist移位值564相比較以確定其是否匹配且將匹配信號(hào)572輸出至與門570。與門570輸出BIP匹配信號(hào)574。
[0075]如果兩個(gè)比較器534、542指示匹配,那么BIP匹配信號(hào)574指示正匹配(BIP 536作出正確預(yù)測(cè))且沒有東西需要從管線清除。如果兩個(gè)比較器534、542并不指示匹配,那么BIP匹配信號(hào)574指示BIP預(yù)測(cè)不正確,且接著從管線清除出流且將目標(biāo)地址512從BP2周期反饋回至BPO多路復(fù)用器510。
[0076]這在吞吐量方面是明顯改善。在無BIP536下,管線中將存在氣泡。如果分支預(yù)測(cè)器的前端限制機(jī)器的吞吐量,那么每個(gè)周期將存在氣泡。使用BIP 536塞住孔,所以存在連續(xù)指令串流且存在較少前端氣泡。因?yàn)閲L試通過幫助保持機(jī)器占滿而在每個(gè)周期處理更多指令,所以使用BIP的值隨著機(jī)器變更寬而增加。
[0077]圖7是使用BIP以產(chǎn)生BP匹配信號(hào)的方法700的流程圖。產(chǎn)生用于在BTB、BIP和HP中執(zhí)行查找的索引(步驟702)。應(yīng)注意,下面步驟(704、710和712)可以并行執(zhí)行,但是為了解釋的目的,分開描述。
[0078]索引用于在BTB中執(zhí)行查找以產(chǎn)生可能地址集(步驟704)。目標(biāo)PC選自可能地址集(步驟706)。目標(biāo)PC用于產(chǎn)生將在下一個(gè)流中使用的索引(步驟708),且方法700的這個(gè)部分返回至步驟702以產(chǎn)生用于下一個(gè)流的索引。
[0079]索引還用于在BIP中執(zhí)行查找以產(chǎn)生預(yù)測(cè)目標(biāo)PC和全局歷史(GHist)移位(步驟710)。索引和GHist用于在HP中執(zhí)行查找以產(chǎn)生取用/不取用信號(hào)(步驟712)。基于取用/不取用信號(hào)更新GHist(步驟714)且在HP的隨后查找中使用更新的GHist。取用/不取用信號(hào)還用于產(chǎn)生GHist移位(步驟716)。
[0080]來自BTB的目標(biāo)PC和來自BIP的預(yù)測(cè)目標(biāo)PC被比較以產(chǎn)生第一匹配信號(hào)(步驟718)。來自BIP的GHist移位和來自HP的GHist移位被比較以產(chǎn)生第二匹配信號(hào)(步驟720)。第一匹配信號(hào)和第二匹配信號(hào)在邏輯上一起進(jìn)行與以產(chǎn)生BP匹配信號(hào)(步驟722)且方法終止(步驟724)。
[0081 ] LI BTB路徑預(yù)測(cè)器
[0082]BIP 536還用于如上文所描述以類似于索引預(yù)測(cè)的方式預(yù)測(cè)LI BTB路徑。BIP 536的輸出的部分(路徑預(yù)測(cè)608)告訴為了命中結(jié)果查看哪條“路徑”。除了預(yù)測(cè)LI BTB路徑之外的所有路徑被切斷以節(jié)省對(duì)LI BTB的讀取功率。L2 BTB(未在圖5中示出)路徑還被切斷以節(jié)省L2 BTB功率。
[0083]在BIP路徑預(yù)測(cè)608預(yù)測(cè)“1111”的情況下,除了讀取所有LI BTB路徑之外,L2 BTB被通電且讀取。此允許還預(yù)測(cè)BTB錯(cuò)失情況。
[0084]如果不存在LIBTB命中且“111I”組合未被預(yù)測(cè),因此在所有可能BTB位置中搜索,那么執(zhí)行BIP回流以確信存在BTB錯(cuò)失。并非重新導(dǎo)向至目標(biāo)PC,這種情況取消自身且進(jìn)行LI重新導(dǎo)向回至自身,但是在使得整個(gè)LI BTB和整個(gè)L2 BTB被讀取的強(qiáng)制讀取條件下。
[0085]針對(duì)BIP的這個(gè)部分的訓(xùn)練更復(fù)雜。來自當(dāng)前流的索引被取用且饋送至下一個(gè)流中。利用索引讀取BTB且確定BTB中下一個(gè)流在哪個(gè)路徑命中且此為讀出的路徑。
[0086]在管線結(jié)束時(shí),收集用于這個(gè)預(yù)測(cè)的索引和下一個(gè)預(yù)測(cè)的目標(biāo)或索引。下一個(gè)預(yù)測(cè)的索引放入BIP中,下一個(gè)流的BTB命中信息被聚集(以知道其在哪個(gè)路徑命中)且那個(gè)信息利用這個(gè)預(yù)測(cè)寫入至BIP中。
[0087]在第一實(shí)例中:代碼在循環(huán)中且給定分支在BTB的路徑3中。BIP被訓(xùn)練以指向那個(gè)索引和路徑3。接著在循環(huán)中進(jìn)行各個(gè)迭代,而非讀取BTB的所有四個(gè)路徑以查找那個(gè)結(jié)果,只需要讀取路徑3。當(dāng)預(yù)測(cè)正確時(shí),因?yàn)轭A(yù)測(cè)到將存在命中且預(yù)測(cè)到命中在哪個(gè)路徑中,且非預(yù)測(cè)路徑可以斷電,所以此節(jié)省功率。L2 BTB結(jié)構(gòu)可以完全切斷,這是因?yàn)橹繪I BTB中將存在命中,所以將不需要L2 BTB0
[0088]在第二實(shí)例中:在期望BTB中的錯(cuò)失的情況下(如同無地址存儲(chǔ)于BTB中的循序提取),BIP被訓(xùn)練以讀取所有四個(gè)路徑。如果所有四個(gè)路徑從BTB讀出,那么可以確認(rèn)不存在命中,此指示BIP路徑預(yù)測(cè)有用。
[0089]由于如果那個(gè)BIP指示讀取“路徑3”且存在錯(cuò)失(意味著可能分支在其它路徑中的一個(gè)中),那么那個(gè)流需要重新進(jìn)行以在所有路徑中尋找那個(gè)分支,所以存在缺點(diǎn)。通常,當(dāng)BIP預(yù)測(cè)具有不正確路徑時(shí),其還具有不正確索引,使得流在大多數(shù)時(shí)間已由BIP索引匹配機(jī)構(gòu)清除。
[0090]如本文描述的BIP路徑預(yù)測(cè)器從根本上不同于高速緩存路徑預(yù)測(cè)器。BIP的預(yù)測(cè)更像其索引預(yù)測(cè)器的延續(xù),即,索引預(yù)測(cè)器提供M位索引且路徑預(yù)測(cè)器在特定路徑下增加索引。BIP中的一個(gè)查找導(dǎo)向硬件的下一個(gè)BTB查找。所以使用BIP路徑預(yù)測(cè)的一個(gè)流將讀取一個(gè)BIP條目,其接著指向?qū)⒆x取的(若干)一個(gè)(或多個(gè))BTB路徑。另一方面,高速緩存路徑預(yù)測(cè)器在高速緩存中具有用于各個(gè)條目的條目,其與數(shù)據(jù)和標(biāo)簽串聯(lián)查找。對(duì)于N路徑組關(guān)聯(lián)高速緩存,將在路徑預(yù)測(cè)器中查找N個(gè)條目,希望這個(gè)查找的結(jié)果指示在高速緩存自身中存在少于N個(gè)條目。
[0091]IT和IC管的解耦
[0092]圖8是處理器800的一部分中的指令標(biāo)簽(IT)和指令高速緩存(IC)管線的框圖。圖8只示出了實(shí)施IT管線和IC管線的處理器800的一部分;為了清楚的目的,存在未在圖8中示出的處理器800的其它元件。圖8底部處的標(biāo)記一11'0、11'1、1了2、10)和1(:1一指示不同組件操作于IT管線和IC管線的哪個(gè)周期中。
[0093]預(yù)測(cè)PC 802供應(yīng)至LI ITLB 804和uTag查找設(shè)備806。如果LI ITLB中存在命中,那么LI ITLB輸出物理地址(PA)SOS13PA 808供應(yīng)至第一比較器810、選擇PA設(shè)備812、標(biāo)簽查找設(shè)備814和第二比較器816。
[0094]uTag查找設(shè)備806使用預(yù)測(cè)PC 802以產(chǎn)生uTag 818,其供應(yīng)至第一比較器810。uTag查找開始于ITO周期中且完成于ITl周期中。第一比較器810將PA 808與uTag 818相比較以產(chǎn)生匹配信號(hào)820。匹配信號(hào)820供應(yīng)至標(biāo)簽查找設(shè)備814和選擇路徑設(shè)備822。
[0095]選擇路徑設(shè)備822使用預(yù)測(cè)PC802和匹配信號(hào)820以選擇指令高速緩存826中的路徑824。來自第一比較器810的命中信息指示路徑824是IC 826中可能具有有用數(shù)據(jù)的路徑;命中基于那個(gè)高速緩存條目的標(biāo)簽位的子集。選擇PA設(shè)備812使用預(yù)測(cè)PC 802和PA 808以產(chǎn)生所選PA 828。指令高速緩存826使用路徑824和所選PA 828以選擇用于處理的指令830。
[0096]標(biāo)簽查找設(shè)備814使用PA 808和匹配信號(hào)820以選擇標(biāo)簽832,其供應(yīng)至第二比較器816。第二比較器816使用PA 808和標(biāo)簽832以產(chǎn)生命中信號(hào)834。
[0097]在IT2周期中,標(biāo)簽查找完成。對(duì)于存在部分匹配的情況,讀出剩余標(biāo)簽以確認(rèn)存在全部匹配。接著將確切知道,高速緩存中的這個(gè)位置是具有正尋找的數(shù)據(jù)的位置。通常,部分命中具有可以用于控制從高速緩存讀出數(shù)據(jù)的足夠信息。如果部分標(biāo)簽導(dǎo)致多個(gè)命中,那么對(duì)于各個(gè)路徑,剩余標(biāo)簽讀出可以與全部地址相比較以獲得下一個(gè)周期中的全部限定命中信號(hào)(此為在IT和IC管線耦接時(shí)需要做的事情)。在此之后,可以重新讀取數(shù)據(jù)陣列(指令高速緩)以讀取正確條目。
[0098]在IT管線結(jié)束時(shí),如果存在命中,那么將那個(gè)信息(其被發(fā)現(xiàn)所在的地址和路徑)存儲(chǔ)于PRQ中。稍后,那個(gè)數(shù)據(jù)需要從高速緩存讀出,不需要執(zhí)行全部標(biāo)簽查找。僅先前命中所在的索引和路徑需要從PRQ讀出且那個(gè)信息可以用于訪問數(shù)據(jù)陣列。所以標(biāo)簽管線和標(biāo)簽訪問可以從訪問數(shù)據(jù)時(shí)分離。
[0099]在高速緩存錯(cuò)失或提取得到多于一半高速緩存線(S卩,長(zhǎng)提取)下,標(biāo)簽管線將在各個(gè)地址(預(yù)測(cè)PC 802)從BP管線出現(xiàn)時(shí)立即運(yùn)行。接著IC管線對(duì)于每個(gè)提取必須進(jìn)行兩次挑選(而非一次),所以即使IC管線可以獨(dú)立地挑選,其落后于IT管線。
[0100]如果DE管線(其在IT和IC管線之后)填滿,那么仍可執(zhí)行標(biāo)簽查找(以確定命中或錯(cuò)失)而無需使數(shù)據(jù)陣列通電以將數(shù)據(jù)發(fā)送至DE管線。
[0101]如果IT管線在IC管線之前有若干提取,那么存在優(yōu)點(diǎn)。如果現(xiàn)在存在高速緩存錯(cuò)失,此在IT管線中得知。請(qǐng)求發(fā)送至L2高速緩存,所以當(dāng)IC管線追上且想要使用按個(gè)數(shù)據(jù)時(shí),可能數(shù)據(jù)已從L2高速緩存回來(且可以與IT管線想要流動(dòng)的地方對(duì)齊)。換句話說,可以獲得更多預(yù)取行為。
[0102]將IT管線和IC管線解耦的影響類似于機(jī)器的其它部分中所做的事情。即,將管線解耦隱藏氣泡或減少氣泡的影響。因?yàn)榇嬖趦蓚€(gè)不同管線(其各者可能因?yàn)楠?dú)立原因暫停),所以不期望氣泡的影響增加。在不解耦下,如果在一個(gè)管線中存在氣泡,那么其將前進(jìn)通過管線且至其它依賴管線。
[0103]如果立即與IC管線一起挑選IT管線,那么比以別的方式為必要的更多的數(shù)據(jù)高速緩存的路徑必須通電,且此必須一直進(jìn)行。標(biāo)簽管線一在數(shù)據(jù)管線之前,數(shù)據(jù)管線就可以更精確地將其需要讀出數(shù)據(jù)所在的指令高速緩存數(shù)據(jù)陣列的部分通電。
[0104]解耦的副作用是使用PRQ以存儲(chǔ)可能已存在命中所在的索引和路徑。如果存在從高速緩存移除那個(gè)線的操作,那么此外,PRQ中的命中指示必須改變?yōu)椤拔疵小薄R驗(yàn)閷⒈仨毦S護(hù)這個(gè)記錄,所以以此方式使用PRQ將涉及一些記錄保持開銷(從IT管線出來的信息存儲(chǔ)于PRQ中)ο如果標(biāo)簽條目失效,那么PRQ中的條目還必須失效。
[0105]應(yīng)理解,基于本文的公開內(nèi)容的許多變化是可行的。雖然上文以特定組合描述特征和元件,但是各個(gè)特征或元件可以在不具有其它特征和元件下單獨(dú)使用或以具有或不具有其它特征和元件的多種組合使用。
[0106]提供的方法可以實(shí)施于通用計(jì)算機(jī)、處理器或處理器核心。舉例來說,合適的處理器包括通用處理器、專用處理器、常規(guī)處理器、數(shù)字信號(hào)處理器(DSP)、多個(gè)微處理器、與DSP核心關(guān)聯(lián)的一個(gè)或多個(gè)微處理器、控制器、微控制器、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)電路、任何其它類型的集成電路(IC)和/或狀態(tài)機(jī)。這樣的處理器可以通過使用處理的硬件描述語言(HDL)指令的結(jié)果和包括網(wǎng)表的其它中間數(shù)據(jù)(這樣的指令能夠存儲(chǔ)于計(jì)算機(jī)可讀介質(zhì)上)配置制造工藝來制造。這樣的處理的結(jié)果可以是掩膜作品,其接著在半導(dǎo)體制造工藝中用于制造實(shí)施實(shí)施方案的方面的處理器。
[0107]本文提供的方法或流程圖可以實(shí)施于非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并入以用于由通用計(jì)算機(jī)或處理器執(zhí)行的計(jì)算機(jī)程序、軟件或固件中。非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的實(shí)例包括只讀存儲(chǔ)器(R0M)、隨機(jī)存取存儲(chǔ)器(RAM)、寄存器、高速緩沖存儲(chǔ)器、半導(dǎo)體存儲(chǔ)設(shè)備、磁介質(zhì)(諸如內(nèi)部硬盤和可卸除式磁盤、磁光介質(zhì))和光學(xué)介質(zhì)(諸如CD-ROM光盤和數(shù)字多用光盤(DVD))。
[0108]額外實(shí)施方案
[0109]1.—種處理器,其包括:指令標(biāo)簽(IT)管線;和指令高速緩存(IC)管線,其與IT管線通信,但是與IT管線分開,使得IT管線和IC管線可以獨(dú)立于彼此操作。
[0110]2.根據(jù)實(shí)施方案I所述的處理器,其中IT管線包括:I級(jí)指令轉(zhuǎn)譯后備緩沖器(ITLB),其被配置來接收預(yù)測(cè)地址且輸出物理地址;和微標(biāo)簽查找設(shè)備,其被配置來接收預(yù)測(cè)地址且輸出微標(biāo)簽。
[0111]3.根據(jù)實(shí)施方案2所述的處理器,其中IT管線進(jìn)一步包括第一比較器,其被配置來基于來自ITLB的物理地址和來自微標(biāo)簽查找設(shè)備的微標(biāo)簽的比較產(chǎn)生匹配信號(hào)。
[0112]4.根據(jù)實(shí)施方案3所述的處理器,其中IC管線包括選擇路徑設(shè)備,其被配置來基于預(yù)測(cè)地址和來自第一比較器的匹配信號(hào)選擇指令高速緩存中的路徑。
[0113]5.根據(jù)實(shí)施方案4所述的處理器,其中IC管線進(jìn)一步包括選擇物理地址設(shè)備,其被配置來基于預(yù)測(cè)地址和來自ITLB的物理地址選擇物理地址。
[0114]6.根據(jù)實(shí)施方案5所述的處理器,其中指令高速緩存被配置來基于來自選擇選擇物理地址設(shè)備的所選物理地址和來自選擇路徑設(shè)備的所選路徑選擇指令。
[0115]7.根據(jù)實(shí)施方案3所述的處理器,其中IT管線進(jìn)一步包括標(biāo)簽查找設(shè)備,其被配置來基于預(yù)測(cè)地址和來自第一比較器的匹配信號(hào)選擇標(biāo)簽。
[0116]8.根據(jù)實(shí)施方案7所述的處理器,其中IT管線進(jìn)一步包括第二比較器,其被配置來基于來自ITLB的物理地址和來自標(biāo)簽查找設(shè)備的所選標(biāo)簽產(chǎn)生命中信號(hào)。
【主權(quán)項(xiàng)】
1.一種處理器,其包括: 前端單元,其包括: I級(jí)分支目標(biāo)緩沖器(BTB),其被配置來預(yù)測(cè)目標(biāo)地址; BTB索引預(yù)測(cè)器(BIP),其被配置來基于程序計(jì)數(shù)器和全局歷史產(chǎn)生預(yù)測(cè),其中所述預(yù)測(cè)包括推測(cè)性部分目標(biāo)地址、全局歷史值、全局歷史移位值和路徑預(yù)測(cè);和 I級(jí)散列感知器(HP),其被配置來預(yù)測(cè)分支指令是取用還是不取用。2.根據(jù)權(quán)利要求1所述的處理器,其中所述BIP被進(jìn)一步配置來組合所述程序計(jì)數(shù)器和所述全局歷史以產(chǎn)生所述預(yù)測(cè)。3.根據(jù)權(quán)利要求2所述的處理器,其中所述BIP被進(jìn)一步配置來執(zhí)行異或操作以組合所述程序計(jì)數(shù)器和所述全局歷史。4.根據(jù)權(quán)利要求2所述的處理器,其中所述BIP被進(jìn)一步配置來使用散列函數(shù)以組合所述程序計(jì)數(shù)器和所述全局歷史。5.根據(jù)權(quán)利要求1所述的處理器,其中來自所述BIP的所述推測(cè)性部分目標(biāo)地址在所述預(yù)測(cè)之后緊接的周期中由所述BTB使用以預(yù)測(cè)所述BTB的索引且由所述HP使用以預(yù)測(cè)所述HP的索引。6.根據(jù)權(quán)利要求1所述的處理器,其中所述前端單元進(jìn)一步包括: 第一選擇電路,其被配置來從輸入程序計(jì)數(shù)器選擇預(yù)測(cè)程序計(jì)數(shù)器,從所述BIP選擇所述推測(cè)性部分目標(biāo)地址且從所述BTB選擇所述目標(biāo)地址。7.根據(jù)權(quán)利要求1所述的處理器,其中所述前端單元進(jìn)一步包括: 第二選擇電路,其被配置來從輸入全局歷史選擇預(yù)測(cè)全局歷史,從所述BIP選擇所述全局歷史值且選擇目標(biāo)全局歷史。8.根據(jù)權(quán)利要求1所述的處理器,其中所述前端單元進(jìn)一步包括: 第一比較器,其被配置來將來自所述BIP的所述推測(cè)性部分目標(biāo)地址和來自所述BTB的所述目標(biāo)地址相比較。9.根據(jù)權(quán)利要求8所述的處理器,其中所述前端單元進(jìn)一步包括: 全局歷史移位器,其被配置來基于來自所述HP的取用/不取用預(yù)測(cè)產(chǎn)生全局歷史移位值;和 第二比較器,其被配置來將來自所述BIP的所述全局歷史移位值與來自所述全局歷史移位器的所述全局歷史移位值相比較。10.根據(jù)權(quán)利要求9所述的處理器,其中所述前端單元進(jìn)一步包括: 邏輯門,其被配置來基于所述第一比較器的輸出和所述第二比較器的輸出產(chǎn)生匹配信號(hào),其中所述匹配信號(hào)指示所述BIP是否作出正確預(yù)測(cè)。11.根據(jù)權(quán)利要求1所述的處理器,其中所述BTB被進(jìn)一步配置來切斷除了由所述BIP預(yù)測(cè)的路徑之外的所有路徑。12.根據(jù)權(quán)利要求1所述的處理器,其中所述BTB被進(jìn)一步配置來從緊接前一個(gè)周期基于由所述BIP預(yù)測(cè)的所述路徑讀取路徑。13.根據(jù)權(quán)利要求1所述的處理器,其進(jìn)一步包括: 指令標(biāo)簽(IT)管線;和 指令高速緩存(IC)管線,其與所述IT管線通信,但是與所述IT管線分開,使得所述IT管線和所述IC管線可以獨(dú)立于彼此操作。14.一種用于在處理器中執(zhí)行分支預(yù)測(cè)的方法,所述處理器包括I級(jí)分支目標(biāo)緩沖器(BTB)和BTB索引預(yù)測(cè)器(BIP),所述方法包括: 產(chǎn)生索引以用來查找至所述BTB和所述BIP中; 使用所述索引在所述BTB中執(zhí)行查找以預(yù)測(cè)目標(biāo)地址; 使用所述索引在所述BIP中執(zhí)行查找以預(yù)測(cè)推測(cè)性部分目標(biāo)地址;且使用來自所述BTB的所述目標(biāo)地址和來自所述BIP的所述推測(cè)性部分目標(biāo)地址以產(chǎn)生用于下一個(gè)流的所述索引。15.根據(jù)權(quán)利要求14所述的方法,其中在所述BTB中所述執(zhí)行查找包括: 使用所述索引以產(chǎn)生可能地址集;且 從所述可能地址集選擇所述目標(biāo)地址。16.根據(jù)權(quán)利要求14所述的方法,其中所述處理器進(jìn)一步包括I級(jí)散列感知器(HP),且所述方法進(jìn)一步包括: 使用所述索引在所述HP中執(zhí)行查找以預(yù)測(cè)分支是取用還是不取用;且 基于所述取用或不取用預(yù)測(cè)更新全局歷史。17.根據(jù)權(quán)利要求16所述的方法,其進(jìn)一步包括: 通過使用所述索引在所述BIP中執(zhí)行查找來產(chǎn)生預(yù)測(cè)全局歷史移位; 通過所述HP使用所述取用或不取用預(yù)測(cè)產(chǎn)生全局歷史移位;且將來自所述BIP的所述預(yù)測(cè)全局歷史移位與來自所述HP的所述全局歷史移位相比較以產(chǎn)生第一匹配信號(hào)。18.根據(jù)權(quán)利要求17所述的方法,其進(jìn)一步包括: 將來自所述BTB的所述目標(biāo)地址與來自所述BIP的所述推測(cè)性部分目標(biāo)地址相比較以產(chǎn)生第二匹配信號(hào)。19.根據(jù)權(quán)利要求18所述的方法,其進(jìn)一步包括: 將所述第一匹配信號(hào)與所述第二匹配信號(hào)相比較以確定所述BIP是否做出正確預(yù)測(cè)。20.根據(jù)權(quán)利要求14所述的方法,其進(jìn)一步包括: 預(yù)測(cè)由所述BTB使用的路徑,通過使用所述索引在所述BIP中查找來執(zhí)行所述預(yù)測(cè)。21.根據(jù)權(quán)利要求20所述的方法,其進(jìn)一步包括: 切斷除了由所述BIP預(yù)測(cè)的路徑之外的所述BTB中的所有路徑。22.根據(jù)權(quán)利要求20所述的方法,其進(jìn)一步包括: 從緊接前一個(gè)周期基于由所述BIP預(yù)測(cè)的所述路徑讀取所述BTB中的路徑。23.—種非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其存儲(chǔ)用于由通用計(jì)算機(jī)執(zhí)行以在處理器中執(zhí)行分支預(yù)測(cè)的指令集,所述處理器包括I級(jí)目標(biāo)緩沖器(BTB)和BTB索引預(yù)測(cè)器(BIP),所述指令集包括: 產(chǎn)生代碼段,其用于產(chǎn)生索引以用來查找至所述BTB和所述BIP中; 第一執(zhí)行代碼段,其用于使用所述索引在所述BTB中執(zhí)行查找以預(yù)測(cè)目標(biāo)地址; 第二執(zhí)行代碼段,其用于使用所述索引在所述BIP中執(zhí)行查找以預(yù)測(cè)推測(cè)性部分目標(biāo)地址;和 使用代碼段,其用于使用來自所述BTB的所述目標(biāo)地址和來自所述BIP的所述推測(cè)性部分目標(biāo)地址以產(chǎn)生用于下一個(gè)流的所述索引。24.根據(jù)權(quán)利要求23所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述指令是用于設(shè)備制造的硬件描述語言(HDL)指令。
【文檔編號(hào)】G06F9/38GK106030516SQ201480065959
【公開日】2016年10月12日
【申請(qǐng)日】2014年10月24日
【發(fā)明人】道格拉斯·威廉姆斯, 薩希爾·阿羅拉, 尼基爾·古普塔, 陳威宇, 德比杰特·達(dá)斯薩爾馬, 馬呂斯·埃弗斯
【申請(qǐng)人】超威半導(dǎo)體公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1