鬼佬大哥大
  • / 14
  • 下載費用:30 金幣  

具有共享前端單元的處理核.pdf

摘要
申請專利號:

CN201380060918.9

申請日:

2013.06.28

公開號:

CN105027075A

公開日:

2015.11.04

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 9/28申請日:20130628|||公開
IPC分類號: G06F9/28; G06F9/30; G06F9/38 主分類號: G06F9/28
申請人: 英特爾公司
發明人: I·帕多; D·馬可維奇; O·本-琪琪; Y·優素福
地址: 美國加利福尼亞州
優先權: 13/730,719 2012.12.28 US
專利代理機構: 上海專利商標事務所有限公司31100 代理人: 高見
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201380060918.9

授權公告號:

||||||

法律狀態公告日:

2019.01.29|||2015.12.02|||2015.11.04

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

描述了具有一個或多個處理核的處理器。一個或多個處理核中的每一個都具有前端邏輯電路以及多個處理單元。前端邏輯電路將獲取線程的相應的指令并將指令解碼為指令的相應的微代碼以及輸入操作數和結果地址。多個處理單元中的每一個都將被分配至少一個線程,耦合到所述前端單元,并具有相應的緩沖區以接收并存儲線程中的分配給其的至少一個的微代碼。多個處理單元中的每一個都還包括:i)對應于由處理器提供的完整指令組的至少一組功能單元,所述至少一組功能單元用于執行其相應的處理單元的接收到的微代碼;ii)耦合到所述至少一組功能單元以存儲接收到的微代碼的操作數以及結果的寄存器;iii)獲取輸入操作數用于至少一個功能單元執行接收到的微代碼的數據獲取電路。

權利要求書

權利要求書
1.  具有一個或多個處理核的處理器,所述一個或多個處理核中的每一個都包括:
前端邏輯電路,所述前端邏輯電路用于獲取線程的相應的指令并將所述指令解碼為所述指令的相應的微代碼以及輸入操作數和結果地址;
多個處理單元,所述處理單元中的每一個被分配所述線程中的至少一個,每一處理單元耦合到所述前端單元,并具有相應的緩沖區,用于接收并存儲所述線程中分配給其的至少一個線程的微代碼,所述多個處理單元中的每一個都包括:
i)對應于由所述處理器提供的完整指令組的至少一組功能單元,所述至少一組功能單元執行其相應的處理單元的接收到的微代碼;
ii)耦合到所述至少一組功能單元以存儲所述接收到的微代碼的操作數以及結果的寄存器;
iii)用于獲取輸入操作數以用于所述至少一個功能單元執行所述接收到的微代碼的數據獲取電路。

2.  如權利要求1所述的處理器,其特征在于,所述功能單元不耦合到用于執行所述接收到的微代碼的無序執行的任何邏輯電路。

3.  如權利要求2所述的處理器,其特征在于,所述處理器包括N個處理單元。

4.  如權利要求1所述的處理器,其特征在于,所述功能單元單元不耦合到用于執行所述接收到的微代碼的推理性執行的任何邏輯電路。

5.  如權利要求4所述的處理器,其特征在于,所述處理器包括N個處理單元。

6.  如權利要求1所述的處理器,其特征在于,所述處理器不包括用于所述線程中的任何一個的為所述線程中的任何一個并行地發出指令的電路。

7.  如權利要求6所述的處理器,其特征在于,所述處理器包括N個處理單元。

8.  一種由處理器執行的方法,包括:
利用所述處理器的處理核的相同邏輯電路,執行下面的a)和b)中的至少一個:
a)獲取兩個不同的線程的第一和第二指令;
b)將所述第一和第二指令解碼為微代碼的相應的單元、輸入操作數地址信息以及結果地址信息;
將微代碼的所述相應的單元以及地址信息分派到兩個不同的處理單元;以及,
在每一處理單元處,對于所述兩個線程中的其相應的一個,執行下列各項:
存儲其相應的線程的微代碼;
獲取帶有接收到的輸入操作數地址的輸入操作數數據;
利用功能單元電路對所述獲取的輸入操作數執行接收到的微代碼,所述功能單元電路是支持完整通用指令組的一組功能單元的一部分。

9.  如權利要求8所述的方法,其特征在于,所述處理單元中的第一個是第一處理單元,而所述處理單元中的第二個是第N處理單元。

10.  如權利要求9所述的方法,其特征在于,軟件將所述線程中的第一線程分配到所述第一處理單元,并且將所述線程中的第二線程分配到所述第N處理單元。

11.  如權利要求8所述的方法,其特征在于,所述線程兩者都不利用任何推理性執行邏輯電路來處理。

12.  如權利要求8所述的方法,其特征在于,所述線程兩者都不利用任何無序執行邏輯電路來處理。

13.  如權利要求8所述的方法,其特征在于,所述線程兩者都不并行地發出其相應的指令。

14.  一種處理器,包括:
至少兩個處理核,每一核都具有:
前端單元,所述前端單元用于獲取由其處理核處理的所有線程的所有 相應的指令并將所述指令解碼為所述指令的相應的微代碼以及輸入操作數和結果地址;
所述前端單元耦合到其處理核的所有通用處理單元,所述處理單元中的每一個被分配所述線程中的至少一個,每一處理單元耦合到所述前端單元,用于接收所述線程中分配給其的至少一個線程的微代碼以及輸入操作數和結果地址,所述多個處理單元中的每一個包括:
i)對應于由所述處理器提供的完整通用指令組的至少一組功能單元,所述至少一組功能單元執行其相應的處理單元的接收到的微代碼;
ii)耦合到所述至少一組功能單元以存儲所述接收到的微代碼的操作數和結果的寄存器;
iii)用于獲取輸入操作數以用于所述至少一個功能單元執行所述接收到的微代碼的數據獲取電路;
耦合到所述多個處理單元的互連網絡;
耦合到所述互連網絡的末級緩存。

15.  如權利要求14所述的處理器,其特征在于,所述功能單元不耦合到用于執行所述接收到的微代碼的無序執行的任何邏輯電路。

16.  如權利要求15所述的處理器,其特征在于,所述處理器包括N個處理單元。

17.  如權利要求14所述的處理器,其特征在于,所述功能單元不耦合到用于執行所述接收到的微代碼的推理性執行的任何邏輯電路。

18.  如權利要求17所述的處理器,其特征在于,所述處理器包括N個處理單元。

19.  如權利要求14所述的處理器,其特征在于,所述處理器不包括用于所述線程中的任何一個的為所述線程中的任何一個并行地發出指令的電路。

20.  如權利要求19所述的處理器,其特征在于,所述處理器包括N個處理單元。

說明書

說明書具有共享前端單元的處理核
發明領域
本發明的領域一般涉及計算科學,更具體而言,涉及具有共享前端單元的處理核。
背景
圖1示出了示例性多核處理器100的架構。如在圖1中觀察到的,處理器包括:1)多個處理核101_1到101_N;2)互連網絡102;3)末級緩存系統103;4)存儲器控制器104和I/O中樞105。處理核中的每一個都包含用于執行程序代碼指令的一個或多個指令執行流水線。互連網絡102可以將核101_1到101_N中的每一個彼此互連并與其他組件103、104、105互連。末級緩存系統103在指令和/或數據被驅逐到系統存儲器108之前充當處理器中的最后一層緩存。
存儲器控制器104從/向系統存儲器108讀/寫數據和指令。I/O中樞105管理處理器和“I/O”設備(例如,非易失性存儲器設備和/或網絡接口)之間的通信。端口106源于互連網絡102以鏈接多個處理器,以便可以實現具有N以上的核的系統。圖形處理器107執行圖形計算。功率管理電路(未示出)作為整體管理處理器的性能和功率狀態(“封裝級別”)以及處理器內的諸如單個核101_1到101_N、圖形處理器107等等之類的單個單元的性能和功率狀態的各方面。為了方便起見,在圖1中未描繪其他重要的功能塊(例如,鎖相環(PLL)電路)。
圖2示出了圖1的處理核中的一個的示例性實施例200。如在圖2中觀察到的,每一核都包括兩個指令執行流水線250,260。每一指令執行流水線250,260都包括其自己的相應的:i)指令獲取級201;ii)數據獲取級202;iii)指令執行級203;以及,iv)寫回級204。指令獲取級201從緩存或系統存儲器(如果所希望的指令不在緩存內)獲取指令序列中的“接 下來的”指令。指令通常操作數數據以及要對操作數數據執行的操作。數據獲取級202從本地操作數寄存器空間、數據緩存或系統存儲器獲取操作數數據。指令執行級203包含一組功能單元,其中任何一個都被調用,以執行由任何一個指令對操作數數據調用的特定操作,操作數數據是由指令所指定的,并由數據獲取級202獲取的。寫回級204通常通過將結果寫入到耦合到相應的流水線的本地寄存器空間,來“提交”執行的結果。
為了避免對較早的“飛行中的”指令沒有任何依賴關系的指令的不必要的等待時間,許多現代的指令執行流水線具有增強的數據獲取和寫回級以實行“無序”執行。這里,流水線250,260的相應的數據獲取級202被增強,以包括數據相依性邏輯205,以識別指令何時沒有對較早的飛行中的指令的依賴關系,并準許其在例如其數據還沒有被獲取的較早的指令的“前頭”向指令執行級203發出。
此外,寫回級204還被增強以包括重排序緩沖器206,該重排序緩沖器206將無序執行的指令的結果重排序為其正確的順序,并將它們的引退等待時間到物理寄存器組,直到指令執行結果的正確地排序的連續序列引退。
還觀察到增強的指令執行流水線在指令獲取級201內包括指令推測邏輯207。推測邏輯207猜測指令序列將采取什么條件分支方向或跳轉,并開始獲取從該方向或跳轉流出的指令序列。然后,由執行流水線的其余級處理推理性指令。
附圖
本發明是作為示例說明的,而不僅限制于各個附圖的圖形,在附圖中,類似的參考編號表示類似的元件,其中:
圖1示出了處理器(現有技術);
圖2示出了指令執行流水線(現有技術);
圖3示出了具有共享前端單元的處理核;
圖4示出了由圖3的處理核執行的方法;
圖5示出了其相應的核具有共享前端單元的處理器;
圖6示出了由其相應的核具有共享前端單元的處理器組成的計算系統。
詳細描述
在半導體芯片上制造的邏輯晶體管的數量可以被視為半導體芯片的用于處理信息的固定資源。上文參考圖1和2所討論的處理器和處理核架構的特征是,強調縮短由處理器處理的指令的等待時間。換言之,圖1和2的處理器設計的固定資源,諸如對每一個流水線作出的無序執行增強,專用于通過帶有最小的等待時間的流水線運行線程。
然而,邏輯電路專用于當前活躍的線程的加速,是以處理器在任何時刻能夠同時處理的線程的總數為代價來實現的。換言之,如果以不同的方式強調處理器的邏輯電路單元,則處理器能夠比圖1的處理器(其處理核是根據2的架構設計的)同時處理更多線程。例如,如果移除無序執行增強的邏輯電路資源,則“被騰出的”邏輯電路可以重新用于實例化處理器內的更多執行單元。利用更多執行單元,處理器可以同時執行更多指令,并由此的更多線程。
圖3示出了在多核處理器內可以實例化多次(例如,對于每一個處理核,一次)的處理核300的架構的實施例。圖3的處理核架構被設計有比典型的標準處理核更多執行單元,以便提高處理核的總的吞吐量(即,提高處理核可以同時處理的線程的數量)。如在圖3中觀察到的,處理核架構包括耦合到多個處理單元302_1至302_N的共享前端單元301。在一個實施例中,處理單元302_1到302_N中的每一個都包含能夠支持整個指令集,諸如整個x86指令集或其他通用指令集(與諸如數字信號處理器(DSP)或加速器的典型的指令集之類的比較有限的特定用途指令集相反)的至少一組功能單元(例如,至少一組功能單元303)。
如在圖3中觀察到的,共享前端單元301獲取并接收要由處理核300處理的指令,解碼接收到的指令,并將經解碼的指令派遣到它們的合適的處理單元。在一個實施例中,共享前端單元獲取正在由處理核的所有通用處理單元執行的所有線程的所有指令。
將特定線程分配給特定處理單元,并且每一處理單元,如下面更詳細地描述的,是多線程的(即,可以同時和/或并發地處理一個以上的線程)。如此,如果每一處理單元都可以同時/并發地執行高達M個硬件線程,并且有N個處理單元,則處理核可以同時/并發地執行高達MN個硬件線程。這里,乘積MN可以大于可以在典型的處理核中同時執行的硬件線程的典型的數量(例如,大于當前密度中的8或16)。參考共享前端單元301,共享前端單元包含程序控制邏輯電路311,用以標識并獲取每一個線程的合適的“接下來的”指令。這里,程序控制邏輯電路311包括每一個線程的指令指針312_1到312_MN,以及指令獲取電路313。注意,圖3指出有MN個指令指針以反映對于MN個不同的硬件線程的支持。對于每一個硬件線程,指令獲取電路313首先針對在線程的指令指針內標識的指令查看指令緩存314。如果在指令緩存314內沒有發現搜尋的指令,則從程序存儲器315中獲取它。在各實現中,可以以每個硬件線程為基礎存儲指令塊,并從緩存和/或存儲器中獲取它們。
個體硬件線程可以由指令獲取電路313以時間切片為基礎來服務(例如,合理的輪詢(round robin)方法)。進一步,指令獲取電路313可以被并行化為并行地獲取不同的硬件線程的指令的類似的/相同塊(例如,指令獲取電路的每一并行塊服務指令指針的不同的子集)。
然而,由于可能比傳統的處理器較慢地處理單個硬件線程(例如,由于每個線程等待時間縮減電路沒有被實例化以有利于更多處理單元,如上文所描述的),因此,可以設想,某些實現可能不需要并行指令獲取能力,或至少包括少于N個并行指令獲取通道(例如,N/2并行指令獲取塊)。相應地,在這些中的任何一種情況下,前端單元301的某些組件由處理單元302_1到302_N中的至少兩個共享。
在又一實施例中,程序控制邏輯電路311還包括每一個硬件線程的指令轉換后備緩沖器(ITLB)電路316。如本領域理解的,ITLB將從程序存儲器315接收到的指令地址轉換為物理存儲器中指令實際駐留的實際地址。
在獲取指令之后,它被指令解碼器317解碼。在一個實施例中,每一個處理單元有指令解碼器(即,有N個解碼器)。再次,例如,在以較低等待時間執行線程為代價增大處理單元的數量N的情況下,每個指令解碼器可以有一個以上的處理單元。可以想象地,對于所有處理單元,甚至可以有一個解碼器。
指令通常指定:i)要以“操作碼”的形式執行的操作;ii)可以發現操作的輸入操作數的位置(寄存器和/或存儲器空間);以及,iii)將存儲操作的結果的位置(寄存器和/或存儲器空間)。在一個實施例中,指令解碼器317不僅通過將指令分解為其操作碼和輸入操作數/結果存儲位置,而且還通過將操作碼轉換為微指令序列,來解碼指令。
如本領域理解的,微指令類似于執行單元將執行以便執行指令的功能的小軟件程序(微代碼)。如此,指令操作碼被轉換為對應于指令的功能操作的微代碼。通常,操作碼作為查詢參數被輸入到被配置成作用就象查詢表一樣的電路318(例如,被配置為查詢表的只讀存儲器(ROM))。查詢表電路318利用操作碼的指令的微代碼,對輸入操作碼作出響應。如此,在一個實施例中,在處理核中每一個處理單元有ROM(或再次,每個微代碼ROM,有一個以上處理單元,因為與傳統的處理器相比,處理單元的每線程等待時間已經變弱)。
然后,與其輸入操作數和結果的經解碼的指令的寄存器/存儲器地址一起,將經解碼的指令的微代碼分派到處理單元,該處理單元已經分配給經解碼的指令是其分量的硬件線程。注意,在兩個不同的處理單元上運行的兩個不同的硬件線程的兩個不同的指令的相應的微代碼可以同時被派遣到它們的相應的處理單元。
在一個實施例中,如上文所討論的,每一處理單元302_1到302_N都可以同時和/或并發地執行一個以上的硬件線程。例如,每一處理單元都可以具有X組執行單元(其中,X=1或更大),其中,每一組執行單元都能夠支持諸如整個x86指令集之類的整個指令集。可另選地或組合地,每一處理單元都可以并發地(而不是同時)執行多個軟件線程。這里,并發執 行,而不是同時執行,對應于在一段時間內通過在由處理單元支持的軟件線程之間交替處理資源執行多個軟件線程(例如,以輪詢方式給每一個軟件線程供給資源)。如此,在一個實施例中,在一個時間窗口內,單一處理單元可以通過作為處理單元的硬件線程,將軟件線程以及它們的相關聯的狀態信息切換進出處理單元,并發地執行多個軟件線程。
如在圖3中觀察到的,每一處理單元都具有微代碼緩沖區320,用于存儲從指令解碼器317派遣的微代碼。可以將微代碼緩沖區320分區,以便對于由處理單元支持的每一個硬件線程,存在單獨的FIFO排隊空間。輸入操作數和結果地址還以對準方式排隊,或以別的方式與它們的指令的相應的微代碼相關聯。
每一處理單元都包括耦合到其內部功能單元組303的寄存器空間321,用于保存功能單元組303負責執行的線程的操作數/結果數據。如果單個功能單元組將并發地執行多個硬件線程,則可以將功能單元組303的寄存器空間321分區,以便對于功能單元組303將并發地執行的每一個硬件線程,有一個寄存器組分區。如此,功能單元組303對于功能單元組正在并發地執行的每一個唯一硬件線程,在特定寄存器分區“之外操作”。
如在圖3中觀察到的,每一處理單元302_1到302_N都包括寄存器分配邏輯322,用以為處理單元正在并發地和/或同時執行的每一個相應的硬件線程的指令分配寄存器。這里,對于每個處理單元具有一個以上的功能單元組的實現,可以有微代碼緩沖區電路320和寄存器分配電路322的多個實例(例如,處理單元的每一功能單元組,一個實例),或可以有饋給一個以上的功能單元組的一個微代碼緩沖區和寄存器分配電路(即,對于兩個或更多功能單元組,一個微代碼緩沖區320和寄存器分配電路322)。寄存器分配邏輯電路322包括數據獲取邏輯,用于從與操作數的相應的指令被指向的功能單元相關聯的寄存器空間321獲取操作數(由指令調用的)。數據獲取邏輯電路可以耦合到系統存儲器323,以顯式地從系統存儲器323獲取數據操作數。
在一個實施例中,每一功能單元組303都包括:i)包含用于執行整數 數學/邏輯指令的功能單元的整數功能單元集群;ii)包含用于執行浮點數學/邏輯指令的功能單元的浮點功能單元集群;iii)包含用于執行SIMD數學/邏輯指令的功能單元的SIMD功能單元集群;以及,iv)包含用于執行數據存儲器訪問(對于整數和/或浮點和/或SIMD操作數和/或結果)的功能單元的存儲器訪問功能單元集群。存儲器訪問功能單元集群可以包含一個或多個數據TLB,以對于其相應的線程執行虛擬到物理地址轉換。
特定指令的微代碼連同由與寄存器分配邏輯322相關聯的獲取電路為指令獲取的操作數數據一起從其相應的微代碼緩沖區320發到合適的功能單元。功能單元的執行的結果被寫回到與執行單元相關聯的寄存器空間321。
在又一實施例中,每一處理單元都包含耦合到存儲器訪問集群的功能單元的數據緩存324。存儲器訪問集群的功能單元還耦合到系統存儲器323,以便它們可以從存儲器獲取數據。值得注意的是,上文所描述的每一寄存器組分區都可以被進一步分區為耦合到對應的功能單元集群的單獨的整數、浮點以及SIMD寄存器空間。
根據一種情況,操作系統和/或虛擬機監視器(VMM)軟件將特定軟件線程分配到特定處理單元。共享前端邏輯301和/或操作系統/VMM能夠動態地將軟件線程分配到特定處理單元或功能單元組,以作為硬件線程來激活線程。在各實施例中,每一處理單元都包括“上下文切換”邏輯(未示出),以便每一處理單元都比起它可以同時或并發地作為硬件線程支持,可分配更多軟件線程。即,分配給處理單元的軟件線程的數量可以超出處理單元目前能夠執行(或者同時或者并發)的“活躍”硬件線程的數量,如由線程的上下文信息在處理單元的寄存器空間內的存在所證明的。
這里,例如,當軟件線程作為硬件線程變為活躍時,其上下文信息(例如,其各種操作數的值和控制信息)位于耦合到執行線程的指令的功能單元組303的寄存器空間321內。如果作出將線程從活躍轉換為非活躍狀態的決定,則從此寄存器空間321讀出線程的上下文信息,并存儲在別處(例如,系統存儲器323)。在線程的寄存器空間現在被“騰出”的情況下,可 以將其上下文信息駐留,例如,在系統存儲器232中的另一“非活躍”軟件線程的上下文信息寫入到寄存器空間321。結果,其他線程從“非活躍”轉換到“活躍”,其指令作為前進的硬件線程來執行。
如上文所討論的,可以以最大化任何一個特定線程的等待時間為代價取得容納大量的硬件線程的邏輯電路的“空間”。如此,用于“加速”硬件線程的執行的任何一個機制以及相關聯的邏輯電路可能不存在于共享前端或處理單元電路中。這樣的被消除的塊可包括下列各項中的任何一項或多項:1)推測邏輯(例如,分支預測邏輯);2)無序執行邏輯(例如,寄存器重命名邏輯和/或重排序緩沖區和/或數據相依性邏輯);3)用于對于單一硬件線程動態地實行并行指令發出的超級標量邏輯。
利用圖3的處理核架構的多個實例構建的多核處理器可包括上文參考圖1所討論的周圍的特征中的任何一個/全部。
圖4示出了描述上文所描述的處理核的方法的流程圖。根據圖4的方法,在共享前端單元中獲取401和解碼不同的硬件線程的第一和第二指令。解碼指令,從共享前端單元402向不同的處理單元發出指令的相應的微代碼和操作數/結果地址。相應的處理單元獲取它們的相應的操作數的數據,并向相應的功能單元403發出接收到的微代碼和相應的操作數。然后,功能單元執行它們的相應的指令404。
圖5示出了具有多個處理核550_1到550_N的處理器500的實施例,每一處理核都具有相應的共享前端單元511_1,511_2,...511_N(帶有相應的指令TLB 516_1,516_2,...516_N)和具有對應的微代碼緩沖區的相應的處理單元(例如,核501_1的處理單元內的微代碼緩沖區520_1,520_2,等等)。每一核還包括一個或多個緩存級別550_1,550_2,550_N以個體地和/或相應的核作為整體地,緩存每一處理單元的指令和/或數據。核501_1,501_2,...501_N通過互連網絡502彼此耦合,該互連網絡502還將核耦合到一個或多個緩存級別(例如,末級緩存503),它們緩存核501_1,501_2...501_N的指令和/或數據),以及耦合到例如系統存儲器的“切片”的存儲器控制器504。在圖5中還可以包括諸如圖1的組件中的任何一個之 類的其他組件。
圖6示出了諸如利用具有上文在圖5中所討論的特征的多個處理器600_1到600_z實現的計算機之類的計算系統的實施例。多個處理器600_1到600_z通過網絡彼此連接,該網絡還將處理器耦合到多個系統存儲器單元608_1,608_2,非易失性存儲器單元610(例如,磁盤驅動器)和外部(例如,因特網)網絡接口611。
在上述說明書中,已經參考特定示例性實施例描述了本發明。然而,顯然可對這些實施例作出各種修改和改變,而不背離如所附權利要求所述的本發明的更寬泛精神和范圍。因此,說明書和附圖應被認為是說明性而非限制性意義。

關 鍵 詞:
具有 共享 前端 單元 處理
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:具有共享前端單元的處理核.pdf
鏈接地址:http://www.wwszu.club/p-6401733.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大