用于架構不同核的線程遷移支持的制作方法
【技術領域】
[0001] 本發明的多個實施例總體涉及處理器架構,更具體地說,涉及用于在架構上不同 的處理器核之間迀移線程的技術。
【背景技術】
[0002] 半導體處理和邏輯設計方面的進展已允許可存在于集成電路器件上的邏輯數量 的增加。因此,計算機系統配置已經從系統中的單個或多個集成電路演化為存在于單獨的 集成電路上的多個核和多個邏輯處理器。處理器或集成電路通常包括單個處理器管芯,其 中,該處理器管芯可包括諸如核、線程和/或邏輯處理器之類的任意數量的處理元件。
[0003] 諸如芯片多處理器("CMP")系統之類的多處理器系統包括多個處理器核,其中的 每一個都能夠獨立地執行線程。同構的CMP系統包括全部具有相同的指令集架構(ISA)的 處理器核。如果功率是主要的設計約束,則全部為小型處理器核的系統似乎是可能的選擇。 然而,該系統將遭受比全部是大型處理器核的系統更低的性能。對全部為小型處理器核的 系統的自然擴展是具有附加的大處理器核,該大處理器核用于在需要時提供附加的性能提 升,同時將高功率效率的小型處理器核用于系統執行的其余部分。
[0004] 在CMP系統中支持線程迀移。線程迀移是指線程從一個處理器核移動到另一處 理器核。常規的異構CMP系統通過將異構資源暴露于應用軟件、操作系統(OS)、基本輸入 /輸出系統(BIOS)和/或低層級軟件和/或固件(在本文中,將把它們簡單地統稱為"軟 件"(SW))來支持線程迀移。在此類異構CMP系統中,線程迀移涉及SW層管理被暴露的異 構資源。SW和CMP系統硬件之間的該緊密耦合需要修改軟件以使該軟件適應各種異構的 CMP系統。
【附圖說明】
[0005] 在所附附圖的多個圖中,以示例方式而非限制方式說明本發明的多個實施例,在 附圖中,類似的參考標號指示類似的元件。
[0006] 圖1是根據本發明的一個實施例的處理器或處理器核的執行流水線的框圖。
[0007] 圖2是根據本發明的一個實施例的、包括多個處理器核的處理器的框圖框圖。
[0008] 圖3是示出線程迀移的處理器實現的方法的流程圖。
[0009] 圖4是示出圖2中的迀移單元242的實施例的流程圖。
[0010] 圖5是示出圖2中的迀移單元242的實施例的流程圖。
[0011] 圖6是示出圖2中的迀移單元242的實施例的流程圖。
[0012] 圖7A示出根據本發明的一個實施例的高級向量擴展(AVX)指令格式。
[0013] 圖7B示出根據本發明的另一實施例的高級向量擴展(AVX)指令格式。
[0014] 圖7C示出根據本發明的又一實施例的高級向量擴展(AVX)指令格式。
[0015] 圖8A是示出根據本發明的多個實施例的通用向量友好指令格式及其A類指令模 板的框圖。
[0016] 圖8B是示出根據本發明的多個實施例的通用向量友好指令格式及其B類指令模 板的框圖。
[0017] 圖9A是示出根據本發明的一個實施例的專用向量友好指令格式的框圖。
[0018] 圖9B是示出根據本發明的另一實施例的通用向量友好指令格式的框圖。
[0019] 圖9C是示出根據本發明的另一實施例的通用向量友好指令格式的框圖。
[0020] 圖9D是示出根據本發明的另一實施例的通用向量友好指令格式的框圖。
[0021] 圖10是根據本發明的一個實施例的寄存器架構的框圖。
[0022] 圖11A是示出根據本發明的多個實施例的有序流水線和示例性的寄存器重命名 的無序發布/執行流水線的框圖。
[0023] 圖11B是示出根據本發明的多個實施例的要包括在處理器中的有序架構核的實 施例和示例性的寄存器重命名的無序發布/執行架構核的框圖。
[0024] 圖12A是根據本發明的一個實施例的處理器核的框圖。
[0025] 圖12B是根據本發明的另一實施例的處理器核的框圖。
[0026] 圖13是根據本發明的多個實施例的處理器的框圖。
[0027] 圖14是根據本發明的一個實施例的系統的框圖。
[0028] 圖15是根據本發明的實施例的更具體的系統的框圖。
[0029] 圖16是根據本發明的另一實施例的更具體的系統的框圖。
[0030] 圖17是根據本發明的實施例的SoC的框圖。
[0031] 圖18是根據本發明的多個實施例的對照使用軟件指令轉換器將源指令集中的二 進制指令轉換成目標指令集中的二進制指令的框圖。
【具體實施方式】
[0032] 將參考以下所討論的細節來描述本發明的各實施例和方面,并且所附附圖將說明 各實施例。下列描述和附圖是說明本發明的,并且不應當被解釋為限制本發明。描述許多 具體的細節以提供對本發明的各實施例的透徹理解。然而,在某些實例中,不描述公知的或 尋常的細節,以便提供本發明的實施例的簡潔的討論。
[0033] 在本說明書中提到"一個實施例"或"實施例",意思是指結合該實施例所描述的特 定特征、結構或特性可以被包括在本發明的至少一個實施例中。在本說明書中的不同位置 出現短語"在一個實施例中"不一定都是指同一個實施例。
[0034] 根據本發明的一些實施例,提供架構和機制集以通過對SW透明的方式實現兩個 架構上不同類型的核之間的無縫線程迀移。當由SW發起線程時,由第一處理器核(其在本 文中將被稱為"源"核)執行該線程。在一個實施例中,在執行該線程期間,系統確定應當 將該線程迀移到第二處理器核(其在本文中將被稱為"目標"核)。在一個實施例中,由系 統硬件(其在本文中將被簡稱為"硬件")完成迀移的確定,而沒有SW的任何干預。在一個 實施例中,該硬件通過喚醒該目標核(即,使該目標核上電)來發起線程迀移程序。該硬件 也可例如通過將源核的架構狀態保存在共享存儲設備(例如,共享存儲器)中來"停止"該 源核并保存其線程上下文。在一個實施例中,在目標核中恢復該源核的線程上下文,并且該 目標核基于來自共享存儲器的架構狀態,繼續執行該線程。在一個實施例中,該硬件例如通 過使源核失電而將該源核置于節能模式。
[0035] 在一個實施例中,通過處理器核的內部存儲元件的設置/狀態(例如,寄存器設 置)來確定該處理器核的架構狀態。在一個實施例中,在目標核中恢復線程上下文是指將 已經被保存在共享存儲器中的、源核的內部存儲元件的設置/狀態復制到目標核的內部存 儲元件(例如,寄存器等)中。在一個實施例中,按照對SW透明的此類方式在目標核中恢 復該線程上下文。例如,可在沒有任何SW干預或SW不知曉的情況下將源核的架構狀態迀 移到目標核。在一個實施例中,SW是指在系統之內或之外被執行的應用軟件、OS、BIOS和/ 或任何其他軟件和/或固件。
[0036] 圖1是根據本發明的一個實施例的處理器或處理器核的框圖。參考圖1,處理器 100可表示任何種類的指令處理裝置或處理元件。處理元件是指線程、進程、上下文、邏輯處 理器、硬件線程、核和/或共享對處理器的其他共享資源(例如,預留單元、執行單元、流水 線和更高層級的高速緩存/存儲器)的訪問的任何處理元件。物理處理器通常是指潛在地 包括諸如核或硬件線程之類的任意數量的其他處理元件的集成電路。核通常是指位于集成 電路上的、能夠維持獨立架構狀態的邏輯,其中,每一個被獨立地維持的架構狀態與至少一 些專用執行資源相關聯。在一個實施例中,處理器100可以是通用處理器。處理器100可 以是各種復雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指 令字(VLIW)處理器中的任何處理器,可以是上述處理器的混合或者可以完全是其他類型 的處理器。處理器100也可表示一個或多個處理器核。
[0037] 可在不同的處理器中,出于不同目的,以不同的方式來實現處理器核。例如,此類 核的實現可以包括:1)旨在用于通用計算的通用有序核;2)旨在用于通用計算的高性能通 用無序核;3)旨在主要用于圖形和/或科學(吞吐量)計算的專用核。不同處理器的實現 可包括:1)中央處理單元(CPU),其包括旨在用于通用計算的一個或多個通用有序核和/或 旨在用于通用計算的一個或多個通用無序核的;以及2)協處理器,其包括旨在主要用于圖 形和/或科學(吞吐量)的一個或多個專用核。這樣的不同處理器導致不同的計算機系統 架構,其可包括:1)在與CPU分開的芯片上的協處理器;2)在與CPU相同的封裝中但分開的 管芯上的協處理器;3)與CPU在相同管芯上的協處理器(在該情況下,有時將此類協處理 器稱為諸如集成圖形和/或科學(吞吐量)邏輯之類的專用邏輯,或將其稱為專用核);以 及4)芯片上系統,其可將所描述的CPU (有時被稱為應用核或應用處理器)、以上描述的協 處理器和附加功能包括在同一管芯上。接著描述示例性核架構,隨后描述示例性處理器和 計算機架構。
[0038] 在一個實施例中,處理器100包括但不限于形成處理器流水線的指令取出單元 101、指令解碼器102、重命名/分配器103、一個或多個執行單元104和引退單元105。可 由多個線程共享流水線或流水線的部分(例如,流水線的前端或指令解碼部分102)。復制 架構狀態寄存器(未示出),因此能夠存儲單獨的架構狀態/上下文以用于不同的邏輯處 理器。也可復制其他更小的資源(例如,重命名分配器邏輯103中的指令指針和重命名邏 輯)以用于多個線程。可通過分區操作來共享諸如重排序/引退單元105中的重排序緩沖 器、加載/存儲緩沖器和隊列之類的一些資源。而可以潛在地完全共享諸如通用內部寄存 器(例如,寄存器106)、頁表基寄存器、低層級數據高速緩存(例如,高速緩存107)和數據 轉換緩沖器(TLB)、執行單元104和無序單元(未示出)之類的資源。
[0039] 在一個實施例中,指令解碼器102用于對從指令取出單元101接收到的指令進行 解碼。這些指令可以是從集成在處理器100之內或與處理器100緊密關聯的高速緩存存儲 器107中取出的宏指令,或者可以經由系統總線從外部存儲器中檢索到。指令解碼器102可 對這些宏指令進行解碼,并且生成或輸出反映指令或從指令導出的一個或多個微操作、微 代碼、進入點、微指令、其他指令或其他控制信號。指令解碼器102可以使用各種不同的機 制來實現。合適機制的示例包括但不僅限于,微代碼只讀存儲器(ROM)、查找表、硬件實現、 可編程邏輯陣列(PLA)等。
[0040] 在一個實施例中,分配器和重命名單元103包括用于預留資源的分配器,諸如用 于存儲指令處理結果的寄存器組。然而,線程可能能夠無序執行,其中,分配器和重命名單 元103也預留其他資源(例如,用于追蹤指令結果的重排序緩沖器)。單元130也可包括寄 存器重命名器,其用于將程序/指令引用寄存器重命名為處理器內部的其他寄存器。在此 類重命名級期間,將對外部或邏輯寄存器的引用轉換為內部的或物理寄存器引用以消除由 寄存器重新使用而導致的依賴關系。
[0041] 執行單元104可包括算術邏輯單元或能夠基于指令執行操作的另一類型的邏輯 單元。作為指令解碼器102對指令進行解碼的結果,執行單元104可接收反映這些指令或從 這些指令導出的一個或多個微操作、微代碼進入點、微指令、其他指令或其他控制信號。執 行單元104可由于指示一個或多個源操作數(SRC)的指令而操作,并且用于將結果存儲在 指令所指示的寄存器集合的一個或多個目的地操作數OEST)中。執行單元104可包括用 于執行指令或從指令導出的其他控制信號并相應地執行操作的電路或其他執行邏輯(例 如,與硬件和/或固件相結合的軟件)。執行單元104可表示諸如邏輯單元、算術邏輯單元 (ALU)、算術單元、整數單元等之類的任何種類的執行單元。
[0042] 處理器100進一步包括調度器和分派單元(未示出),其用于將指令調度并分派到 執行單元104,以便執行。事實上,根據指令/操作的類型可用性,在執行單元104上潛在地 調度這些指令/操作。例如,在具有可用的浮點執行單元的執行單元的端口上調度浮點指 令。執行單元的示例包括浮點執行單元、整數執行單元、跳轉執行單元、加載執行單元、存儲 執行單元以及其他已知的執行單元。在一個實施例中,重排序/引退單元105包括諸如上 述的重排序緩沖器、加載緩沖器和存儲緩沖器之類的組件,這些組件用于支持被無序執行 的指令的無序執彳丁和稍后的有序引退。
[0043] 可將源操作數和目的地操作數中的一些或全部存儲在存儲資源106 (例如,寄存 器集合中的寄存器或存儲器)中。寄存器集合可以是寄存器組以及潛在的諸如狀態寄存 器、標志寄存器等之類的其他寄存器的部分。寄存器可以是可用于存儲數據的存儲位置或 設備。寄存器集合常常可在物理上與執行單元一起位于管芯上。寄存器可以是從處理器 外部或從編程者的視角來看是可見的。例如,指令可指定存儲在寄存器中的操作數。各種 不同類型的寄存器可適用,只要它們能夠存儲并提供在本文中所述的數據。寄存器可以被 重命名,也可以不被重命名。合適寄存器的示例包括但不限于,專用物理寄存器、使用寄存 器重命名的動態分配的物理寄存器以及專用物理寄存器和動態分配物理寄存器的組合,等 等。或者,可將源操作數和目的地操作數中的一個或多個存儲在除寄存器之外的,諸如系統 存儲器中的位置之類的存儲位置中。
[0044] 在一個實施例中,高速緩存107包括諸如高層級和/或低層級高速緩存之類的各 種高速緩存。較高層級或進一步遠離的高速緩存用于對近期被取出和/或操作的元素進行 高速緩存操作。注意,較高層級或進一步遠離指的是高速緩存層級增加或進一步遠離執行 單元。在一個實施例中,較高層級的高速緩存是第二級數據高速緩存。然而,較高層級的高 速緩存并不限于此,因為其可以是或可包括可被稱為追蹤高速緩存的指令高速緩存。可轉 而在解碼器之后耦合追蹤高速緩存以存儲最近被解碼的指令。追蹤高速緩存也潛在地包括 用于預測要執行/采用的分支的分支目標緩沖器和用于存儲指令的地址轉換條目的指令 轉換緩沖器(I-TLB)。
[0045] 較低層級的數據高速緩存和數據轉換緩沖器(D-TLB)可耦合至執行單元。數據高 速緩存用于存儲最近被使用/操作的元素(例如,數據操作數),這些元素在存儲器一致性 狀態(例如,修改狀態、排他狀態和無效(MESI)狀態)下潛在地被保持。D-TLB用于存儲最 近的虛擬/線性至物理地址轉換。之前,D-TLB條目包括用于向最近使用的虛擬存儲器地 址提供代價不高的轉換的虛擬地址、物理地址和其他信息(例如,偏移)。
[0046] 處理器100進一步包括總線接口單元(未示出)。總線接口單元用于與處理器 外部的,諸如系統存儲器、芯片組、北橋或其他集成電路之類的設備通信。該存儲器可專用 于該處理器,或與系統中的其他設備一起被共享。存儲器的示例包括動態隨機存取存儲器 (DRAM)、靜態RAM (SRAM)、非易失性存儲器(NV存儲器)和長期存儲設備。通常,總線接口單 元包括用于在互連上傳送和接收總線信號的輸入/輸出(I/O)緩沖器。互連的示例包括射 電收發機邏輯(GTL)總線、GTL+總線、雙數據速率(DDR)總線、泵式(bumped)總線、差分總 線、高速緩存一致性總線、點對點總線、多分支總線或實現任何已知總線協議的其他已知的 互連。總線接口單元也可與更高層級的高速緩存通信。
[0047] 在一個實施例中,可將上述各個級組織成三個階段。可將第一階段稱為有序前端, 其包括取出級101、解碼級102和分配重命名級103。在該有序前端階段,這些指令按照其 原始的程序順序,經過流水線100繼續進行。可將第二階段稱為無序執行階段,其包括調度 /分派級(未示出)和執行級104。在此階段,一確定每條指令的數據依賴關系并且執行單 元可用時,就調度、分派并執行每條指令,而不管在原始程序中指令的順序位置。第三階段 被稱為有序引退階段,其包括引退級105,在該引退級105中,按照指令原始的、順序的程序 順序來引退指令以保持該程序的完整性和語義,并且提供精確的中斷模型。
[0048] 圖2是示出根據本發明的一個實施例的系統200的框圖。系統200包括但不 限于經由互聯250彼此耦合的源核210、目標核220、共享存