具有共享前端單元的處理核的制作方法
【專利說(shuō)明】具有共享前端單元的處理核發(fā)明領(lǐng)域
[0001]本發(fā)明的領(lǐng)域一般涉及計(jì)算科學(xué),更具體而言,涉及具有共享前端單元的處理核。
[0002]背景
[0003]圖1示出了示例性多核處理器100的架構(gòu)。如在圖1中觀察到的,處理器包括:1)多個(gè)處理核101_1到101_N ;2)互連網(wǎng)絡(luò)102 ;3)末級(jí)緩存系統(tǒng)103 ;4)存儲(chǔ)器控制器104和I/O中樞105。處理核中的每一個(gè)都包含用于執(zhí)行程序代碼指令的一個(gè)或多個(gè)指令執(zhí)行流水線?;ミB網(wǎng)絡(luò)102可以將核101_1到101_N中的每一個(gè)彼此互連并與其他組件103、
104、105互連。末級(jí)緩存系統(tǒng)103在指令和/或數(shù)據(jù)被驅(qū)逐到系統(tǒng)存儲(chǔ)器108之前充當(dāng)處理器中的最后一層緩存。
[0004]存儲(chǔ)器控制器104從/向系統(tǒng)存儲(chǔ)器108讀/寫數(shù)據(jù)和指令。I/O中樞105管理處理器和“I/O”設(shè)備(例如,非易失性存儲(chǔ)器設(shè)備和/或網(wǎng)絡(luò)接口)之間的通信。端口 106源于互連網(wǎng)絡(luò)102以鏈接多個(gè)處理器,以便可以實(shí)現(xiàn)具有N以上的核的系統(tǒng)。圖形處理器107執(zhí)行圖形計(jì)算。功率管理電路(未示出)作為整體管理處理器的性能和功率狀態(tài)(“封裝級(jí)別”)以及處理器內(nèi)的諸如單個(gè)核101_1到101_N、圖形處理器107等等之類的單個(gè)單元的性能和功率狀態(tài)的各方面。為了方便起見,在圖1中未描繪其他重要的功能塊(例如,鎖相環(huán)(PLL)電路)。
[0005]圖2示出了圖1的處理核中的一個(gè)的示例性實(shí)施例200。如在圖2中觀察到的,每一核都包括兩個(gè)指令執(zhí)行流水線250,260。每一指令執(zhí)行流水線250,260都包括其自己的相應(yīng)的:i)指令獲取級(jí)201 ;ii)數(shù)據(jù)獲取級(jí)202 ;iii)指令執(zhí)行級(jí)203 ;以及,iv)寫回級(jí)204。指令獲取級(jí)201從緩存或系統(tǒng)存儲(chǔ)器(如果所希望的指令不在緩存內(nèi))獲取指令序列中的“接下來(lái)的”指令。指令通常操作數(shù)數(shù)據(jù)以及要對(duì)操作數(shù)數(shù)據(jù)執(zhí)行的操作。數(shù)據(jù)獲取級(jí)202從本地操作數(shù)寄存器空間、數(shù)據(jù)緩存或系統(tǒng)存儲(chǔ)器獲取操作數(shù)數(shù)據(jù)。指令執(zhí)行級(jí)203包含一組功能單元,其中任何一個(gè)都被調(diào)用,以執(zhí)行由任何一個(gè)指令對(duì)操作數(shù)數(shù)據(jù)調(diào)用的特定操作,操作數(shù)數(shù)據(jù)是由指令所指定的,并由數(shù)據(jù)獲取級(jí)202獲取的。寫回級(jí)204通常通過(guò)將結(jié)果寫入到耦合到相應(yīng)的流水線的本地寄存器空間,來(lái)“提交”執(zhí)行的結(jié)果。
[0006]為了避免對(duì)較早的“飛行中的”指令沒有任何依賴關(guān)系的指令的不必要的等待時(shí)間,許多現(xiàn)代的指令執(zhí)行流水線具有增強(qiáng)的數(shù)據(jù)獲取和寫回級(jí)以實(shí)行“無(wú)序”執(zhí)行。這里,流水線250,260的相應(yīng)的數(shù)據(jù)獲取級(jí)202被增強(qiáng),以包括數(shù)據(jù)相依性邏輯205,以識(shí)別指令何時(shí)沒有對(duì)較早的飛行中的指令的依賴關(guān)系,并準(zhǔn)許其在例如其數(shù)據(jù)還沒有被獲取的較早的指令的“前頭”向指令執(zhí)行級(jí)203發(fā)出。
[0007]此外,寫回級(jí)204還被增強(qiáng)以包括重排序緩沖器206,該重排序緩沖器206將無(wú)序執(zhí)行的指令的結(jié)果重排序?yàn)槠湔_的順序,并將它們的引退等待時(shí)間到物理寄存器組,直到指令執(zhí)行結(jié)果的正確地排序的連續(xù)序列引退。
[0008]還觀察到增強(qiáng)的指令執(zhí)行流水線在指令獲取級(jí)201內(nèi)包括指令推測(cè)邏輯207。推測(cè)邏輯207猜測(cè)指令序列將采取什么條件分支方向或跳轉(zhuǎn),并開始獲取從該方向或跳轉(zhuǎn)流出的指令序列。然后,由執(zhí)行流水線的其余級(jí)處理推理性指令。
[0009]附圖
[0010]本發(fā)明是作為示例說(shuō)明的,而不僅限制于各個(gè)附圖的圖形,在附圖中,類似的參考編號(hào)表示類似的元件,其中:
[0011]圖1示出了處理器(現(xiàn)有技術(shù));
[0012]圖2示出了指令執(zhí)行流水線(現(xiàn)有技術(shù));
[0013]圖3示出了具有共享前端單元的處理核;
[0014]圖4示出了由圖3的處理核執(zhí)行的方法;
[0015]圖5示出了其相應(yīng)的核具有共享前端單元的處理器;
[0016]圖6示出了由其相應(yīng)的核具有共享前端單元的處理器組成的計(jì)算系統(tǒng)。
[0017]詳細(xì)描述
[0018]在半導(dǎo)體芯片上制造的邏輯晶體管的數(shù)量可以被視為半導(dǎo)體芯片的用于處理信息的固定資源。上文參考圖1和2所討論的處理器和處理核架構(gòu)的特征是,強(qiáng)調(diào)縮短由處理器處理的指令的等待時(shí)間。換言之,圖1和2的處理器設(shè)計(jì)的固定資源,諸如對(duì)每一個(gè)流水線作出的無(wú)序執(zhí)行增強(qiáng),專用于通過(guò)帶有最小的等待時(shí)間的流水線運(yùn)行線程。
[0019]然而,邏輯電路專用于當(dāng)前活躍的線程的加速,是以處理器在任何時(shí)刻能夠同時(shí)處理的線程的總數(shù)為代價(jià)來(lái)實(shí)現(xiàn)的。換言之,如果以不同的方式強(qiáng)調(diào)處理器的邏輯電路單元,則處理器能夠比圖1的處理器(其處理核是根據(jù)2的架構(gòu)設(shè)計(jì)的)同時(shí)處理更多線程。例如,如果移除無(wú)序執(zhí)行增強(qiáng)的邏輯電路資源,則“被騰出的”邏輯電路可以重新用于實(shí)例化處理器內(nèi)的更多執(zhí)行單元。利用更多執(zhí)行單元,處理器可以同時(shí)執(zhí)行更多指令,并由此的更多線程。
[0020]圖3示出了在多核處理器內(nèi)可以實(shí)例化多次(例如,對(duì)于每一個(gè)處理核,一次)的處理核300的架構(gòu)的實(shí)施例。圖3的處理核架構(gòu)被設(shè)計(jì)有比典型的標(biāo)準(zhǔn)處理核更多執(zhí)行單元,以便提高處理核的總的吞吐量(即,提高處理核可以同時(shí)處理的線程的數(shù)量)。如在圖3中觀察到的,處理核架構(gòu)包括耦合到多個(gè)處理單元302_1至302_N的共享前端單元301。在一個(gè)實(shí)施例中,處理單元302_1到302_N中的每一個(gè)都包含能夠支持整個(gè)指令集,諸如整個(gè)x86指令集或其他通用指令集(與諸如數(shù)字信號(hào)處理器(DSP)或加速器的典型的指令集之類的比較有限的特定用途指令集相反)的至少一組功能單元(例如,至少一組功能單元303) ο
[0021]如在圖3中觀察到的,共享前端單元301獲取并接收要由處理核300處理的指令,解碼接收到的指令,并將經(jīng)解碼的指令派遣到它們的合適的處理單元。在一個(gè)實(shí)施例中,共享前端單元獲取正在由處理核的所有通用處理單元執(zhí)行的所有線程的所有指令。
[0022]將特定線程分配給特定處理單元,并且每一處理單元,如下面更詳細(xì)地描述的,是多線程的(即,可以同時(shí)和/或并發(fā)地處理一個(gè)以上的線程)。如此,如果每一處理單元都可以同時(shí)/并發(fā)地執(zhí)行高達(dá)M個(gè)硬件線程,并且有N個(gè)處理單元,則處理核可以同時(shí)/并發(fā)地執(zhí)行高達(dá)MN個(gè)硬件線程。這里,乘積MN可以大于可以在典型的處理核中同時(shí)執(zhí)行的硬件線程的典型的數(shù)量(例如,大于當(dāng)前密度中的8或16)。參考共享前端單元301,共享前端單元包含程序控制邏輯電路311,用以標(biāo)識(shí)并獲取每一個(gè)線程的合適的“接下來(lái)的”指令。這里,程序控制邏輯電路311包括每一個(gè)線程的指令指針312_1到312_MN,以及指令獲取電路313。注意,圖3指出有麗個(gè)指令指針以反映對(duì)于麗個(gè)不同的硬件線程的支持。對(duì)于每一個(gè)硬件線程,指令獲取電路313首先針對(duì)在線程的指令指針內(nèi)標(biāo)識(shí)的指令查看指令緩存314。如果在指令緩存314內(nèi)沒有發(fā)現(xiàn)搜尋的指令,則從程序存儲(chǔ)器315中獲取它。在各實(shí)現(xiàn)中,可以以每個(gè)硬件線程為基礎(chǔ)存儲(chǔ)指令塊,并從緩存和/或存儲(chǔ)器中獲取它們。
[0023]個(gè)體硬件線程可以由指令獲取電路313以時(shí)間切片為基礎(chǔ)來(lái)服務(wù)(例如,合理的輪詢(round robin)方法)。進(jìn)一步,指令獲取電路313可以被并行化為并行地獲取不同的硬件線程的指令的類似的/相同塊(例如,指令獲取電路的每一并行塊服務(wù)指令指針的不同的子集)。
[0024]然而,由于可能比傳統(tǒng)的處理器較慢地處理單個(gè)硬件線程(例如,由于每個(gè)線程等待時(shí)間縮減電路沒有被實(shí)例化以有利于更多處理單元,如上文所描述的),因此,可以設(shè)想,某些實(shí)現(xiàn)可能不需要并行指令獲取能力,或至少包括少于N個(gè)并行指令獲取通道(例如,N/2并行指令獲取塊)。相應(yīng)地,在這些中的任何一種情況下,前端單元301的某些組件由處理單元302_