TW202219748A - 處理器及其處理器架構 - Google Patents
處理器及其處理器架構 Download PDFInfo
- Publication number
- TW202219748A TW202219748A TW111102764A TW111102764A TW202219748A TW 202219748 A TW202219748 A TW 202219748A TW 111102764 A TW111102764 A TW 111102764A TW 111102764 A TW111102764 A TW 111102764A TW 202219748 A TW202219748 A TW 202219748A
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- instruction
- micro
- processor
- write
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
揭露了處理器架構之發明的實施例。於實施例中,處理器包括解碼器、執行單元、同調性快取及互連。解碼器係用以解碼指令以歸零快取線。執行單元係用以發出寫入命令來啟動零之快取線大小的寫入。同調性快取係用以接收寫入命令,以判定同調性快取中是否存在命中,以及命中快取線之快取同調性協定議狀態是修改狀態還是排除狀態,以組態快取線以指示全零,並向互連發出寫入命令。互連係用以響應於寫入命令的接收向複數個其他同調性快取中的每一個發出窺探,為此必須判定是否有命中。
Description
本發明的領域一般是有關於電腦,並且更具體地係有關於處理器架構。
處理器包括許多互連的電路和結構,這些電路和結構一起工作來執行指令和處理資訊。這些電路和結構及其提供的特徵可以用許多不同的組態和組合包括在處理器中。
及
在下面的敘述中,闡述了許多具體細節。然而,應當理解,本發明的實施例可以在沒有這些具體細節的情況下實施。在其他情況下,為了避免妨礙對本說明書的理解,眾所皆知的電路、結構及技術而不細節顯示。
說明書中對「一個實施例」、「實施例」、「示例性實施例」等的引用指示所描述的實施例可包括特定特徵、結構或特性,但每個實施例可不必包括特定特徵、結構或特性。此外,這樣的用語不一定指的是相同的實施例。此外,當結合實施例描述特定特徵、結構或特性時,無論是否明確描述,其被認為在本領域技術人員的知識範圍內,可結合其他實施例之此種的特徵、結構或特性。
一種用以處理資訊之設備(諸如,電腦)可包括一或多個處理器核心。每一處理器核心可包括各種電路、硬體、結構和其他特徵,其中每個單獨的或者任何數目組合在一起可以被稱為特徵。可以以各種方式實施和/或配置特徵、採用各種技術並且可以參與執行各種方法以試圖以各種組合實施期望的水平的效能、電力耗損和/或其他特性(例如,提高效能、降低電力耗損並實施省電特徵、以及改善公平性、最小效能保證、通量、每一時脈指令(IPC)、每一單位時間的指令、服務品質、時間和/或記憶體效率,僅列出幾個適用的標準)。本發明實施例可包括在此說明書中敘述的一或多個特徵。其中可以具體化本發明之架構和系統的一些範例被提供在此說明書中的圖式和敘述中。
其中可以具體化本發明之處理器核心可以以不同方式、用於不同目的以及在不同處理器中實施。例如,此種核心的實施可包括:1)意圖用於通用計算的通用有序核心;2)意圖用於通用計算的高效能通用失序核心;3)主要意圖用於圖形及科學(通量)計算的特用核心。不同處理器的實施可包括:1)中央處理單元(CPU)包括一或多個意圖用於通用計算的通用有序核心和/或一或多個意圖用於通用計算的通用失序核心;以及2)包括一或多個主要意圖用於圖形和/或科學(通量)計算之特用核心的共處理器。此等不同處理器結果導致不同的電腦系統架構,其可包括:1)在來自CPU之單獨晶片上的共處理器;2)在如CPU之相同封裝中的單獨晶粒上的共處理器;3)在如CPU之相同的晶粒上的共處理器(於此種情況下,此種共處理器偶爾稱為特殊用途邏輯,諸如集成圖形和/或科學(通量)邏輯,或稱作特殊用途核心);以及4)可包括在所敘述CPU之相同的晶粒上的系統單晶片(SoC)(偶爾稱為應用核心或應用處理器)、上述共處理器以及額外的功能。
其次描述示例性核心架構,接著描述示例性處理器及電腦架構。每一處理器可包括一或多個核心,其中每一核心和/或核心的組合可被架構以和設計為在各種時間執行一或多個執行緒、流程或其他指令序列。核心架構和設計技術根據稱為同步(或對稱)多執行緒(SMT)或任何其他方案之任何類型方案來提供和/或支持多執行緒的並行執行。因此,其中可以具體化本發明之包括那些下面敘述之範例的處理器核心可以包括架構為和設計為支持SMT和/或以各種新穎方式修改以支持SMT的各種已知特徵的各種新穎特徵,如下面將描述的。為了易於敘述,在此說明書中的用語SMT的意思可以包括SMT與多執行緒(例如,時間截割)的任何其他方法的組合。
如上所提及如下更具體地解釋,本發明之實施例由於各種原因可能是可期望的,包括例如提高效能、降低電力耗損並實施省電特徵、以及改善公平性、最小效能保證、通量、每一時脈指令(IPC)、每一單位時間的指令、服務品質、時間和/或記憶體效率,僅列出幾個適用的標準。上面所列及文中所述之期望的標準為示例性;如本文所解釋,本發明對於以上列出的任何單獨或組合的理由可能是合乎期望的,並且於以上沒有具體列舉的其他原因可能是進一步期望的。
此外,如上所提及如下更具體地解釋,本發明之實施例可應用至任何類型的處理器或處理元件,包括用於伺服器環境中的通用處理器、伺服器處理器或處理元件、共處理器(例如安全性共處理器)高通量MIC處理器、GPGPU、加速器(諸如例如,圖形加速器或數位訊號處理(DSP)單元、密碼加速器、固定功能加速器、機器學習加速器、網路加速器或電腦視覺加速器)、現場可程式閘陣列或任何其他處理器或處理裝置。處理器或多個處理器可以在一或多個晶片上實施。處理器或多個處理器3600可為使用任何數目之處理技術(諸如,BiCMOS、CMOS、或NMOS)之一或多個基板的一部分和/或可被實施在使用任何數目之處理技術(諸如,BiCMOS、CMOS、或NMOS)之一或多個基板上。上面所列和本文所述之處理器和處理裝置為示例性;如本文所解釋,本發明適用於任何處理器或處理裝置。
此外,如上所提以及如下所詳細敘述的,本發明實施例可應用於使用各種指令集和指令集架構的處理器或處理元件,包括例如,x86指令集(選擇性地包括擴延已經增加較新版本);加州昇陽谷的MIPS技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴展,諸如NEON);IBM的「Power」指令集或任何其他指令集,包括RISC和CISC指令集兩者。上面所列和本文所述之指令集和指令集架構為示例性;如本文所解釋,本發明適用於任何指令集或指令集架構。
核心架構範例
有序及失序核心方塊圖
圖1A根據本發明實施例示出示例性有序管線及示例性暫存器重新命名、失序簽發/執行管線二者的方塊圖。圖1B根據本發明實施例示出包括在處理器中有序架構核心之示例性實施例及示例性暫存器重新命名、失序簽發/執行架構核心二者的方塊圖。圖1A-B中的實線框示出了有序管線及有序核心,而虛線框之選擇性添加示出暫存器重新命名、失序簽發/執行管線及核心。假設有序態樣為失序態樣的一子集,將描述失序態樣。
於圖1A中,處理器管線100包括提取階段102、長度解碼階段104、解碼階段106、配置階段108、重新命名階段110、排程(又稱為調度或簽發)階段112、暫存器讀取/記憶體讀取階段114、執行階段116、回寫/記憶體寫入階段118、例外處置階段122、及確定階段124。
圖1B顯示處理器核心190包括前端單元130耦接至執行引擎單元150,以及二者係耦接至記憶體單元170。核心190可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字組(VLIW)核心、或混合或其他核心類型。至於又另一選項,核心190可為特用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用圖形處理單元(GPGPU)核心、或圖形核心等。例如,如上解釋,核心190可以是含由下述的集合:用於伺服器環境中的通用處理器、伺服器處理器或處理元件、共處理器(例如安全性共處理器)高通量MIC處理器、GPGPU、加速器(諸如例如,圖形加速器或數位訊號處理(DSP)單元、密碼加速器、固定功能加速器、機器學習加速器、網路加速器或電腦視覺加速器)、現場可程式閘陣列或任何其他處理器或處理裝置。
前端單元130包括耦接至微-op快取133和指令快取單元134的分支預測單元132,指令快取單元134耦接至指令轉譯後備緩衝器(TLB)136,指令轉譯後備緩衝器(TLB)136耦接至指令提取單元138,指令提取單元138耦接至一解碼單元140。解碼單元140(或解碼器)可以解碼指令並產生一或多個微操作、微碼進入點、微指令、其他指令、或其他控制訊號作為輸出,其係從原先指令解碼,或以其他方式反映、或推衍自原先指令。微操作、微碼進入點、微指令等可至少儲存在微-op快取133。解碼單元140可使用多種不同機構實施。適當機構的實施例包括但非僅限於詢查表、硬體實施、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。於一個實施例中,核心190包括一微碼ROM或針對一些巨集指令儲存微碼的其他媒體(例如於解碼單元140內或否則於前端單元130內部)。微-op快取133和解碼單元140耦接至執行引擎單元150中的重新命名/配置器單元152。在各個實施例中,諸如133的微-op快取也可以或者取代被稱為op-快取、u-op 快取、uop-快取或μop-快取;以及微操作可以被稱為微-op、u-op、uop和µop。
執行引擎單元150包括重新命名/配置器單元152,其耦接至撤回單元154及一或多個排程器單元156之集合。排程器單元156表示任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元156係耦接至實體暫存器檔案單元158。每一實體暫存器檔案單元158表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料類別,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如指令指標器其為欲執行的下個指令的位址)等。於一個實施例中,實體暫存器檔案單元158包含向量暫存器單元、寫入遮罩暫存器單元以及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元158被撤回單元154重疊以例示說明可實施暫存器重新命名與失序執行的多種方式(例如使用重新排序緩衝器及撤回暫存器檔案,使用未來檔案、歷史緩衝器及撤回暫存器檔案;使用暫存器映射表及一匯集物之暫存器等)。撤回單元154及實體暫存器檔案單元158係耦接至執行叢集160。執行叢集160包括一或多個執行單元162之一集合及一或多個記憶體存取單元164之一集合。執行單元162可對各型資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各項操作(例如移位、加法、減法、乘法)。雖然有些實施例可包括專用於特定功能或功能集合的多個執行單元,但其他實施例可只包括一個執行單元或多個執行單元,其全部一起執行全部功能。排程器單元156、實體暫存器檔案單元158、及執行叢集160顯示為可能為多數,原因在於一些實施例產生針對一些類別的資料/操作的分開管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、和/或記憶體存取管線各自具有其本身的排程器單元、實體暫存器檔案單元、和/或執行叢集且於分開記憶體存取管線之情況下,實施一些實施例其中只有此一管線的執行叢集具有記憶體存取單元164)。也須瞭解使用分開管線時,這些管線中的一或多者可為失序簽發/執行而剩下的為有序。
記憶體存取單元164之集合係耦接至記憶體單元170,其包括一資料TLB單元172耦接至與階層2(L2)快取單元176耦接的一資料快取單元174。在一個示例性實施例中,記憶體存取單元164可包括一載入單元、一儲存位址單元、及一儲存資料單元,各單元係耦接至記憶體單元170中的資料TLB單元172。指令快取單元134進一步係耦接至在記憶體單元170中的階層2(L2)快取單元176。L2快取單元176係耦接至一或多個其他階層的快取,及最終耦接至一主記憶體。
例如,示例性暫存器重新命名、失序簽發/執行核心架構可實施管線100如下:1)指令提取138執行提取及長度解碼階段102及104;2)解碼單元140執行解碼階段106;3)重新命名/配置器單元152執行配置階段108及重新命名階段110;4)排程器單元156執行排程階段112;5)實體暫存器檔案單元158及記憶體單元170執行暫存器讀取/記憶體讀取階段114;執行叢集160進行執行階段116;6)記憶體單元170及實體暫存器檔案單元158執行回寫/記憶體寫入階段118;7)各個單元可能涉及例外處置階段122;及8)撤回單元154及實體暫存器檔案單元158執行確定階段124。
核心190可支持包括本文所述之指令的一或多個指令集(例如,包括RISC和CISC指令集兩者的x86指令集(有些擴延已經增加較新版本);加州昇陽谷的MIPS技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴延,諸如霓虹(NEON))、IBM的「Power」指令集或任何其他指令集)。於一個實施例中,核心190包括支持緊縮資料指令集擴延(例如AVX、AVX2、AVX-512),藉此允許許多多媒體應用程式使用的該等操作欲使用緊縮資料執行。
應能理解到核心可支持多執行緒(執行兩或多個並列的操作或執行緒集合),並且可以多種方式達成支持,包括時間截割多執行緒、SMT(例如,單一實體核心對於實體核心為同步多執行緒之每一執行緒提供一邏輯核心)、或其組合(例如,時間截割提取和解碼,以及其後的SMT,諸如Intel® Hyperthreading技術)。
雖然暫存器重新命名係以失序執行脈絡描述,但須瞭解暫存器重新命名可用於有序架構。雖然處理器之所示的實施例也包括分開的指令和資料快取單元134/174及共享L2快取單元176,但替代實施例可具有用於指令及資料二者的單一內部快取,諸如例如階層1(L1)內部快取,或內部快取之多個階層。在一些實施例中,該系統可包括內部快取與在核心和/或處理器外部的外部快取之組合。或者,所有的快取可位在核心和/或處理器外部。
具體示例性核心架構
圖2A-B示出更具體的示例性核心架構之方塊圖,該核心將為晶片中數個邏輯區塊中之一者(包括相同類別和/或不同類別的其他核心)。取決於應用用途,邏輯區塊透過高頻寬互連網路(例如環狀網路)而與若干固定功能邏輯、記憶體I/O介面、及其他需要的I/O邏輯通訊。
圖2A為根據本發明實施例之單一處理器核心之方塊圖,連同其連接至晶粒上互連網路202及階層2(L2)快取204之其本地子集的方塊圖。在一個實施例中,指令解碼器200支持具有緊縮資料指令集擴延的x86指令集。L1快取206允許低度延遲存取快取記憶體至純量及向量單元。雖然於一個實施例中(為了簡化設計),純量單元208及向量單元210使用分開的暫存器集合(分別為純量暫存器212及向量暫存器214),在其間傳輸的資料係寫入至記憶體,然後從階層1(L1)快取206回讀,本發明之替代實施例可使用不同辦法(例如使用單一暫存器集合或包括通訊路徑,其允許資料在兩個暫存器檔案間移轉而不被寫入及回讀)。
L2快取204之本地子集乃通用L2快取部分,被劃分成分開本地子集,每個處理器核心一個子集。各個處理器核心具有一直接存取路徑至其本身的L2快取204之本地子集。由一處理器核心所讀取的資料係儲存於其L2快取子集204中,且與其他處理器核心存取其本身的本地L2快取子集並列地能夠被快速存取。由處理器核心寫入的資料係儲存於其本身的L2快取子集204,及若有所需,從其他子集刷新。環狀網路確保分享資料的同調。環狀網路乃雙向以允許代理器者諸如處理器核心、L2快取及其他邏輯區塊在晶片內部彼此通訊。各個環狀資料路徑為每個方向1012-位元寬。
圖2B為根據本發明實施例之圖2A中的處理器核心部分之展開圖。圖2B包括L1快取204的L1資料快取206A部分,以及有關向量單元210及向量暫存器214之進一步細節。具體言之,向量單元210為16-寬向量處理單元(VPU)(參考16-寬ALU 228),其係執行整數、單精度浮點、及雙精度浮點指令中之一或多者。VPU支持具有拌和單元220拌合暫存器輸入、具有數值轉換單元222A-B做數值轉換及具有複製單元224對記憶體輸入作複製。寫入遮罩暫存器226允許預測所得的向量寫入。
具體示例性失序核心架構
圖3為根據本發明實施例之可包括在處理器中的說明性失序簽發/執行處理器核心的方塊圖。在圖3中,處理器核心300包括前端單元310、整數單元320、FP單元330、載入儲存單元340及階層2(L2)快取單元350。為了說明的目的提供了圖3,並且如此一來根據本發明之實施例顯示可能根據許多方案配置和命名的各種單元。任何一或多個實施例可以以一或多種方式示出。圖3中所顯示的每一單元可以包括可被包含在實施例的其他表示之其他單元中的電路和/或結構。例如,前端單元310可額外地或替代地被示出和敘述為包括提取單元(諸如圖4中的提取單元400)以及解碼單元(諸如圖5中的解碼單元500);任何或全部的整數單元320、FP單元330、載入儲存單元340可額外地或替代地被示出和敘述(分開地或集體地)為一或多個執行單元;等等。再者,在核心300內的各種單元可以以各種方式耦接;因此,為方便起見,不同的圖式可顯示在不同大單元內的單元;例如,特定單元可被顯示於在第一圖中的第一大單元內以及在第二圖中的第二大單元內。
在圖3中,前端單元310包括分支預測單元311、微操作快取(op-快取)單元312、指令快取(i-快取)單元313、解碼單元314、微操作(微-op)佇列單元315。分支預測單元311包括用以減少平均分支延遲的分支預測電路(諸如分支目標緩衝器(BTB)),並且耦接至op-快取單元312和i-快取單元313。op-快取單元312包括其中用以快取與指令相關聯的微-op的op-快取。I-快取313單元包括於實施例中可以是在其中快取指令的64K、四向i-快取的i-快取。I-快取單元313係耦接至解碼單元314,以提供快取的指令進行解碼。解碼單元314包括解碼電路,諸如用以解碼指令的指令解碼器。於一實施例中,前端單元310可以提取以及解碼單元314可以在每個時脈週期解碼多達四個指令。op-快取單元312和解碼單元314各耦接至微-op佇列單元315,以提供用於將微-op載入至微-op佇列單元315中的兩個路徑。微-op佇列單元315包括微-op佇列,其在一實施例中可在每個週期向一或多個執行單元調度六個微-op。
也在圖3中,整數單元320包括整數重新命名單元321;整數排程器單元322A、322B、322C、322D、322E和322F(統稱為整數排程器單元322);整數實體暫存器檔案323;算數邏輯單元(ALU)324A、324B、324C和324D(統稱為ALU 324);以及位址產生單元(AGU)325A和325B(統稱為AGU 325)。整數重新命名單元321耦接至微-op佇列單元315,以接收將由一或多個ALU 324和/或AGU 325完全或部分執行的一或多個微-op。整數重新命名單元321包括暫存器重新命名電路並且也耦接至整數排程器單元322,整數排程器單元322又耦接到整數實體暫存器檔案323,以提供整數暫存器重新命名。整數排程器單元322包括排程器電路,其用於排程由一或多個ALU 324和/或AGU 325完全或部分執行的微-op。整數實體暫存器檔案323包括實體整數暫存器的檔案,其於一實施例中可包括168實體整數暫存器。每一個ALU 324和AGU 325耦接至實體暫存器檔案323,以接收要在微-op之執行中作為輸入的值和/或提供值作為微-op之執行的輸出。
也在圖3中,FP單元330包括FP重新命名單元331、FP排程器單元332、FP暫存器檔案333、FP乘法器334A和334B(統稱為FP乘法器334)以及FP加法器335A和335B(統稱為FP加法器335)。FP重新命名單元331耦接至微-op佇列單元315,以接收將由一或多個FP乘法器334和/或FP加法器335完全或部分執行的一或多個微-op。FP重新命名單元331包括暫存器重新命名電路並且也耦接至FP排程器單元332,FP排程器單元332又耦接到FP暫存器檔案333,以提供FP暫存器重新命名。FP排程器單元332包括排程器電路,其用於排程由一或多個FP乘法器334和/或FP加法器335完全或部分執行的微-op。每一個FP乘法器334和FP加法器335耦接至FP暫存器檔案333,以接收要在微-op之執行中作為輸入的值和/或提供值作為微-op之執行的輸出。
也在圖3中,載入儲存單元340包括載入儲存佇列單元341和資料快取(d-快取)單元342。載入儲存佇列單元341可包括任何數目之耦接到AGU 325的載入和/或儲存佇列(於一實施例中對於每個時脈週期提供兩個載入和一個儲存),以接收用於載入和/或儲存操作的記憶體位址。D-快取單元342包括d-快取,於一實施例中d-快取可以是耦接到整數實體暫存器檔案323、FP暫存器檔案333和載入儲存佇列單元341之用於快取資料的32K、八向階層1(L1)d-快取,以接收並提供由微-op之執行產生並用於微-op之執行的資料。
也在圖3中,L2快取單元350包括L2快取,其於一實施例中可以是在其中快取指令和資料的512K、八向快取。
圖4為根據本發明實施例之說明性提取單元的方塊圖,提取單元可被包括在處理器核心諸如圖3之核心300和/或處理器中。在圖4中,提取單元400包括下一個程式計數(PC)單元410、變換後備緩衝器(TLB)單元420、散列感知單元430、BTB返回堆疊間接目標陣列(ITA)單元440、實體請求佇列單元450、微標籤單元460以及i-快取單元470。
圖5為根據本發明實施例之說明性解碼單元的方塊圖,解碼單元可被包括在處理器核心諸如圖3之核心300和/或處理器中。在圖5中,解碼單元500包括指令位元組緩衝器單元510、拾取單元520、解碼單元530、op-快取單元540、微-op佇列單元550、微碼唯讀記憶體(ROM)單元560、堆疊引擎記憶體檔案(memfile)單元570和調度單元580。
圖6為根據本發明實施例之說明性整數執行單元的方塊圖,整數執行單元可被包括在處理器核心諸如圖3之核心300和/或處理器中。在圖6中,整數執行單元600包括映射單元610;撤回佇列單元620;算數邏輯佇列(ALQ)單元630A、630B、630C和630D(統稱為ALQ 630);位址產生佇列(AGQ)單元640A和640B(統稱為AGQ 640);實體暫存器檔案單元650、轉發多工器(mux)單元660;ALU 670A、670B、670C和670D(統稱為ALU 670);AGU 680A和680B(統稱為AGU 680);以及載入儲存單元690。
圖7為根據本發明實施例之說明性FP執行單元的方塊圖,FP執行單元可被包括在處理器核心諸如圖3之核心300或處理器中。在圖7中,FP執行單元700包括不可排程微-op佇列單元710、可排程微-op佇列單元720、撤回佇列單元730、FP轉換單元740、FP實體暫存器檔案750、轉發mux單元760、FP乘法器770A和770B(統稱為FP乘法器770)以及FP加法器780A和780B(統稱為FP加法器780)。
圖8為根據本發明實施例之說明性載入/儲存單元的方塊圖,載入/儲存單元可被包括在處理器核心諸如圖3之核心300或處理器中。在圖8中,載入/儲存單元800包括載入佇列單元810、載入管線拾取單元811A和811B(統稱為載入拾取單元811)、TLB單元812A和812B(統稱為TLB單元812)、資料管線單元813A和813B(統稱為資料管線單元813)、儲存佇列單元820、預提取單元821、儲存管線拾取單元822、儲存管線單元823、儲存提交單元824、L1/L2 TLB和資料快取標籤陣列830、L1資料快取840、記憶體位址緩衝器850和寫入組合緩衝器860。
圖9為根據本發明實施例之在處理器中支持SMT之諸如圖3之核心300的說明性失序簽發/執行處理器核心的方塊圖。在圖9中,處理器核心900包括前端單元910、整數單元920、FP單元930、載入儲存單元940、L2快取單元950以及撤回單元960。前端單元910包括分支預測單元911、op-快取單元912、i-快取單元913、解碼單元914、微-op佇列單元915以及指令TLB單元916。整數單元920包括整數重新命名單元921、整數排程器單元922、整數實體暫存器檔案923、ALU 924以及AGU 925。FP單元930包括FP重新命名單元931、FP排程器單元932、FP暫存器檔案933、FP乘法器934A和934B(統稱為FP乘法器934)以及FP加法器935A和935B(統稱為FP加法器935)。載入儲存單元940包括載入佇列單元941A和儲存佇列單元941B(統稱為載入儲存佇列單元941)、資料快取(d-快取)單元942以及TLB單元943。撤回單元960包括撤回佇列。
SMT特徵
根據本發明之實施例的處理器核心可包括各種支持SMT的特徵。下面使用非限制性範例分開敘述數個此種特徵,但是實施例可以包括此種特徵的任何組合。
資源之靜態分區
處理器核心可根據一些示例性實施例支持SMT靜態分區特徵。執行緒可被分配給可用資源,其在同步多執行緒管線中靜態地共享。在一些實施例中,執行緒可基於演算法使用諸如圖案化的計數分配給可用資源,以改善效能和效率。在一些實施例中,這個特徵可藉由在用於靜態地共享資源的執行緒之間提供更有效率的資源共享以改善電腦系統。它也可使用可用的資源,否則,由於SMT靜態分區,這些資源將一直未使用。
例如,管線中的資源可以在兩個執行緒之間靜態共享(例如50%-50%),以向兩個執行緒提供相等的資源。在一些實施例中,可以將不同百分比的可用資源分配給每個執行緒,例如基於工作量型態。例如,如果一執行緒比另一執行緒停頓更長的時間並且有另一執行緒可用的空條目,則可用的條目可以分配給停頓的執行緒,而不是保持它們在靜態共享資源中為空。
在一些實施例中,超過一個執行緒可具有類似的型態。在此種情形下,優先級方案可在執行緒之間的連結之情況下被用來分配資源。例如,可以藉由隨機選擇、選擇編號較低的執行緒、選擇編號較高的執行緒和/或選擇交替執行緒來執行連結中斷。
圖10為根據一些實施例示出可包括在處理器中的SMT靜態分區特徵的方塊圖。根據示例性實施例,SMT靜態分區特徵可包括型態偵測方塊1001。第一和第二資源可靜態地分配給執行緒T0和T1。查找型態基礎表可判定執行緒T1具有很長的停頓時間。型態偵測方塊然後可以基於型態輸入來調整靜態分配的資源。例如,靜態分配給T1的第二個資源可以被分配給T0。
在一些實施例中,動態分區可以應用至其他靜態分區資源,諸如指令變換後備緩衝器(ITLB)。
圖11為根據一些實施例示出可被處理器執行之用於SMT靜態分區特徵之方法的流程圖。在一些實施例中,方法可包含偵測諸如管線中靜態共享資源的執行緒停頓的型態,如框CQB01所示。方法還可以包括調整共享(例如,50-50共享),如框CQB02所示。方法調整可以例如基於停頓的長度或一些其他類似的事件。
一些實施例之摘要
實施例可包括處理器,其組態以偵測對於第一和第二靜態分區資源中的至少一個之型態;並且調整第一和第二靜態分區資源中的至少一個之分配。
在一些實施例中,以下一個或多個適用。管線之第一和第二靜態分區資源可為同步多執行緒管線的資源。第一和第二靜態分區資源可位於第一和第二執行緒之間。處理器可進一步組態以基於根據型態的演算法分配第一和第二資源。處理器可進一步組態以基於一或多個工作量型態分配第一和第二資源中的至少一個。處理器可進一步組態以基於第一和第二執行緒中的至少一個是否了比另一者停頓更長的時間週期之判定分配第一和第二資源中的至少一個。處理器可進一步組態以基於是否存在與可用的第一和第二資源中的至少一個相關聯的空條目之判定分配第一和第二資源中的至少一個,並且將第一和第二執行緒中的至少一個分配至可用的第一和第二資源中的至少一個。處理器可進一步組態以基於優先級方案分配第一和第二資源中的至少一個。處理器可進一步組態以基於查找型態基本表判定停頓是否發生。第一和第二靜態分區資源可為指令變換後備緩衝器(ITLB)的資源。
實施例可包括方法,該方法包含偵測對於第一和第二靜態分區資源中的至少一個之型態;並且調整第一和第二靜態分區資源中的至少一個之分配。
在一些實施例中,以下一個或多個適用。第一和第二靜態分區資源可為同步多執行緒管線的資源。第一和第二靜態分區資源可位於第一和第二執行緒之間。方法可進一步包含基於根據型態的演算法分配第一和第二資源。方法可進一步包含基於一或多個工作量型態分配第一和第二資源中的至少一個。方法可進一步包含基於第一和第二執行緒中的至少一個是否了比另一者停頓更長的時間週期之判定分配第一和第二資源中的至少一個。方法可進一步包含基於是否存在與可用的第一和第二資源中的至少一個相關聯的空條目之判定分配第一和第二資源中的至少一個,並且將第一和第二執行緒中的至少一個分配至可用的第一和第二資源中的至少一個。方法可進一步包含基於優先級方案分配第一和第二資源中的至少一個。方法可進一步包含基於查找型態基本表判定停頓是否發生。第一和第二靜態分區資源可為指令變換後備緩衝器(ITLB)的資源。
實施例可包括儲存至少一指令之非暫態機器可讀取媒體,當至少一指令由處理器執行時導致處理器執行方法,方法包含偵測對於第一和第二靜態分區資源中的至少一個之型態;並且調整第一和第二靜態分區資源中的至少一個之分配。
在一些實施例中,以下一個或多個適用。第一和第二靜態分區資源可為同步多執行緒管線的資源。第一和第二靜態分區資源可位於第一和第二執行緒之間。方法可進一步包含基於根據型態的演算法分配第一和第二資源。方法可進一步包含基於一或多個工作量型態分配第一和第二資源中的至少一個。方法可進一步包含基於第一和第二執行緒中的至少一個是否了比另一者停頓更長的時間週期之判定分配第一和第二資源中的至少一個。方法可進一步包含基於是否存在與可用的第一和第二資源中的至少一個相關聯的空條目之判定分配第一和第二資源中的至少一個,並且將第一和第二執行緒中的至少一個分配至可用的第一和第二資源中的至少一個。方法可進一步包含基於優先級方案分配第一和第二資源中的至少一個。方法可進一步包含基於查找型態基本表判定停頓是否發生。第一和第二靜態分區資源可為指令變換後備緩衝器(ITLB)的資源。
實施例可包括含有記憶體和處理器的系統,該處理器組態以偵測對於第一和第二靜態分區資源中的至少一個之型態;並且調整第一和第二靜態分區資源中的至少一個之分配。
在一些實施例中,以下一個或多個適用。第一和第二靜態分區資源可為同步多執行緒管線的資源。第一和第二靜態分區資源可位於第一和第二執行緒之間。處理器可進一步組態以基於根據型態的演算法分配第一和第二資源。處理器可進一步組態以基於一或多個工作量型態分配第一和第二資源中的至少一個。處理器可進一步組態以基於第一和第二執行緒中的至少一個是否了比另一者停頓更長的時間週期之判定分配第一和第二資源中的至少一個。處理器可進一步組態以基於是否存在與可用的第一和第二資源中的至少一個相關聯的空條目之判定分配第一和第二資源中的至少一個,並且將第一和第二執行緒中的至少一個分配至可用的第一和第二資源中的至少一個。處理器可進一步組態以基於優先級方案分配第一和第二資源中的至少一個。處理器可進一步組態以基於查找型態基本表判定停頓是否發生。第一和第二靜態分區資源可為指令變換後備緩衝器(ITLB)的資源。
資源之競爭共享
處理器核心可根據本發明之實施例支持具有資源之競爭共享的SMT。核心中的電路、結構或其他資源可由多個執行緒基於其中執行緒競爭優先級的政策來共享。在圖9之實施例中,以下資源中的每一個可以基於競爭政策在執行緒之間或在執行緒之中共享:分支預測單元911、op-快取單元912、i-快取單元913、解碼單元914、指令TLB單元916、整數重新命名單元921、整數排程器單元922、整數實體暫存器檔案923、ALU 924、AGU 925、FP重新命名單元931、FP排程器單元932、FP暫存器檔案933、FP乘法器934A和934B、FP加法器935A和935B、載入佇列單元941A、d-快取單元942以及TLB單元943。
這些資源中的一些(諸如,在整數重新命名單元921、整數排程器單元922、FP重新命名單元931、FP排程器單元932或載入佇列單元941A中的緩衝器)可具有可以分開分配給執行緒的條目、子單元或其他部分。為了方便,這類型的資源可以被稱為可分割資源,並且這類型的分配可以被稱為部分分配。此外,諸如ALU 924的每個單獨的ALU、AGU 925的每個單獨的AGU、FP乘法器934A、FP乘法器934B、FP加法器935A或FP加法器935B可以只被完全分配給特定的時脈週期、一組連續的時脈週期來完成一操作,或者其他時間的週期或操作的持續期間。為了方便,這類型的資源可以被稱為不可分割資源,並且這類型的分配可以被稱為全分配。
圖12為根據本發明實施例示出可包括在處理器中的資源配置器1200的方塊圖。資源配置器1200可包括用以將核心電路、結構、單元或資源或者它們的任何部分分配給特定的執行緒的電路、結構和/或硬體。在實施例中,資源配置器1200可被實施以分配單個資源和/或多個資源。在任一情況下,處理器或處理器核心可包括資源配置器1200之一或多個實施例的多個實例,每個實例分配任何一或多個資源,每個資源包括圖12中所示之任何一或多個方塊,並且每個資源分別實施任何一或多個資源分配政策或資源分配政策之組合。
資源配置器1200可包括追蹤器電路1210、政策電路1220、決策電路1230以及分配器電路1240。追蹤器電路可包括效能歷史電路1212、使用歷史電路1214以及執行緒狀態電路1216中的一或多個。政策電路1220可包括電力政策電路1222、公平政策電路1224、效能保證政策電路1226以及通量政策電路1228中的一或多個。實施例可包括根據需分配的資源類型和數量以及所需的政策以各種方式組合和/或實施這些電路的每一個。
效能歷史電路1212可包括用以以一或多種方法監視、追蹤、紀錄和/或報告執行緒之效能的電路、結構和/或硬體。於一實施例中,效能歷史電路1212可包括用以計算每個執行緒之一或多個效能測量之每個執行緒的一或多個硬體計數器1212A,例如每一些測量時間或持續時間撤回的指令。例如,測量時間或持續時間可為時脈週期之窗口,其中窗口的尺寸(例如,由字母「N」表示)可以是固定的(例如,固線的)、可組態的(例如,由硬體或韌體)和/或可程式的(例如,由軟體)。於一實施例中,N可為1024。
效能歷史電路1212也可包括用以將執行緒之效能(如由計數器1212A測量的)與一或多個其他執行緒進行比較之一或多個硬體比較器1212B。例如,在N時脈週期之每一窗口的結束,硬體比較器1212B可將在窗口期間由第一執行緒撤回的指令數量與在窗口期間由第二執行緒撤回的指令數量進行比較,並且計數器1212A可對於下一個窗口重設。在下一個窗口期間,與前一窗口之比較結果可由如下所敘述之政策電路1220和/或決策電路1230使用。在實施例中,比較結果可以是執行緒的排名(例如,哪個執行緒撤回更多指令),比較結果可以是比率(例如,計算或近似計算由第一執行緒撤回的指令的數量與由第二執行緒撤回的指令量之比率的計算或近似計算)和/或任何其他測量或計算。
實施例可包括每個執行緒多於一個計數器。例如,每個執行緒可設置兩個單獨的計數器:第一計數器用以追蹤識別為「耗電」的指令(例如,其執行通常比其他指令消耗更多的電力)以及第二計數器用以計數其他(即,非耗電)指令。例如,AVX-512 FMA指令(如下定義)可被識別為耗電並使用獨立的計數器追蹤(可能連同其他耗電指令)。
使用歷史電路1214可包括由執行緒用以監視、追蹤、紀錄和/或報告資源之使用的電路、結構和/或硬體。於一實施例中,使用歷史電路1214可包括用以計數每個執行緒之資源使用的一或多個硬體計數器1214A以及用以比較執行緒之間的資源使用的一或多個硬體比較器1214B。來自計數器1214A和/或比較器1214B的一或多個結果可由如下所敘述之政策電路1220和/或決策電路1230使用。
例如對於諸如緩衝器的可分割資源,計數器可計數由執行緒佔據之條目的數量。用於進一步計算和/或分配決定的計數可以是在任何時間點直接報告或使用的當前計數,和/或可以是在窗口上平均的平均計數(例如,如上所敘述之尺寸為N的窗口)。對於不可分割資源,用於進一步的計算和/或分配決定的計數可以是時間平均的或時間加權的計數(例如,執行緒在時間窗口內使用資源的次數,其中計數在每個時間窗口結束時被重設,或者計數在每個時間窗口結束時右移(除以二的冪)時被重設)。基於任何這些計數的結果可能是計數本身、計數的每個執行緒排名和/或計數的執行緒與執行緒的比率。
執行緒狀態電路1216可包括用以監視、追蹤、紀錄和/或報告執行緒之狀態的電路、結構和/或硬體。例如,執行緒狀態電路1216可包告執行緒當前是否停頓,諸如由於長的潛時L2/L3或其他執行緒遺失。
由追蹤器電路1210報告的歷史和當前的資訊可以根據由政策電路1220指明的政策用於資源配置計算單元和決定。這些政策可包括具有任何優先級、以任何組合之任何類型的政策,包括電力耗損、公平性、最低效能保證和通量的考量。
電力政策電路1222可包括用以實施一或多個電力政策和/或偏愛或選擇基於該政策或該等政策的執行緒之電路、結構和/或硬體。這些政策可包括具有任何優先級、以任何組合之任何類型的電力政策。例如,可能偏愛或選擇使用較少耗電指令的執行緒或進展緩慢的執行緒。
公平政策電路1224可包括用以實施一或多個公平政策和/或偏愛或選擇基於該政策或該等政策的執行緒之電路、結構和/或硬體。例如,具有較低的近期表現、較低的可分割資源的佔用率和/或不可分割資源的較低近期使用率的執行緒可能是有利的或被選擇的。
效能保證政策電路1226可包括用以實施一或多個最小效能保證政策和/或偏愛或選擇基於該政策或該等政策的執行緒之電路、結構和/或硬體。例如,正在進行低於某些最小臨限值的執行緒可以基於效能保證政策而被偏愛或選擇。
通量政策電路1228可包括用以實施一或多個通量政策和/或偏愛或選擇基於該政策或該等政策的執行緒之一或多個電路、結構和/或硬體。例如,比其他執行緒進行相對更多或更快進展的執行緒可能被偏愛或選擇。
任一或全部的電力政策電路1222、公平政策電路1224、效能保證政策電路1226、通量政策電路1228和/或任何其他政策電路可包括用以儲存資訊和/或標準的單獨的儲存位置或暫存器,以致能、修改(例如,加強或削弱政策或者一或多個標準或由政策使用測量的重要性)或以其他方式動態地影響政策。實施例還可以或替代地包括用於這資訊的中央或共享儲存位置或暫存器。任一或多個單獨或群組的儲存位置被表示為政策暫存器1220A。在實施例中,任何此種儲存位置或暫存器可被組態(例如,藉由硬體或韌體)或可被編程(例如,藉由軟體)。
決策電路1230可包括用以接收來自追蹤器電路1210的資訊、結果和/或訊號以及來自政策電路1220的資訊、結果和/或訊號之電路、結構和/或硬體,以使用、權重、優先化、過濾、比較、組合、置換或以其他方式處理以產生可能導致選擇分配資源的執行緒和/或關於決定的一或多個指示或訊號的資訊。例如,於一包括通量政策和最小效能保證的實施例中,通量政策可能偏愛第一執行緒,但決策電路1230可能置換該偏愛,並選擇第二個執行緒來幫助滿足第二執行緒之最低效能保證。在實施例中,資源配置器1200可包括決策電路1230之一或多個實施例的多個實例(每一個用於任何資源或資源組)並且每一個用以實施任何一或多個資源分配政策或資源分配政策的組合,以及每一個用以實施任何一或多個方案或下面所述之方案的組合,其中每一個可以被組態或編程為根據任何方案或方案的組合來選擇執行緒(例如,每一個可以對從政策電路1220中每一個單獨之政策電路接收的資訊分配不同的權重)。
在包括不可分割資源之實施例中,決策電路1230可以判定哪個執行緒對不可分割資源之動態全分配具有優先級。在包括可分割資源之實施例中,決策電路1230可判定哪個執行緒對於可分割資源和/或部分的可分割資源之動態部分分配具有優先級,和/或多少(例如,多少緩衝器條目)可分割資源分配給執行緒。
於一實施例中,決策電路1230可產生或提供一或多個資訊、決定結果、指示符和/或訊號,例如藉由將它們儲存在分配器電路1240可存取的一或多個儲存位置中,和/或將它們直接發送至分配器電路1240,其可以標識具有優於任何數量的其他執行緒之優先級的單個執行緒,或者可以指明兩或多個執行緒之優先級排序。
分配器電路1240可包括用以從決策電路1230接收資訊、決定結果、指示符和/或訊號的電路、結構和/或硬體以作用於、完成和/或實施資源配置決定,例如藉由響應於來自決策電路1230之第一執行緒相對於第二執行緒具有優先級的決定,發送一或多個訊號以全部或部分地將資源(例如,資源1250)分配引導到執行緒。為了這麼做,分配器電路1240可以將一或多個訊號(例如,「去」訊號1240C)發送至允許特定執行緒使用不可分割資源或者使用可分割資源之一或多個部分的調度或其他電路。
在實施例中,分配器電路1240還可以接收一個或多個請求(例如,請求1240A和1240B)以使用資源。請求可以是來自執行緒、來自資源和/或來自與執行緒或資源相關聯之任何類型的調度電路的訊號和/或任何其他類型的指示符。在實施例中,分配器電路1240可以例如使用來自決策電路1230的資訊、決定結果、指示符和/或訊號選擇或仲裁執行緒請求之間或之中的執行緒請求,以判定哪個執行緒將被分配資源。
在實施例中,分配器電路1240可包括用以作用於來自決策電路1230之分配決定的電路、結構和/或硬體,所述分配決定受到或基於額外的資訊或限制條件。例如,分配器電路1240可包括一組固定的、可組態的或可程式的儲存位置或暫存器1242(每一個執行緒具有一暫存器),編程儲存位置或暫存器1242指示多少部分的可分割資源(例如,多少個緩衝器之條目)專用於每一個執行緒、一組計數器1244、每個執行緒一個以追蹤每個當前正在使用每個執行緒部分的數量,以及一組比較器1246(每個執行緒一個)來檢查執行緒是否正在使用它的完全分配。分配器電路1240可使用來自比較器1246的結果以接受或拒絕來自決策電路1230的分配決定。替代地或附加地,實施例可包括用於可分割資源的每個部分(例如,緩衝器中的每個條目的位元或欄位)之指示符的儲存器,以指示哪個執行緒(或哪些執行緒)被允許使用該部分的資源,以及分配器電路1240可以使用所儲存的指示符以接受或拒絕來自決策電路1230的分配決定。
一些實施例之摘要
本發明之實施例可包括處理器,其包含資源配置器和包括追蹤器電路、政策電路、決策電路和分配器電路的資源。追蹤器電路可以追蹤資源的效能歷史、資源的使用歷史和執行緒狀態中的至少一個。政策電路可以是提供用於實施資源分配政策的政策資訊。判定電路可以是基於追蹤器電路的輸出和政策資訊來選擇執行緒。分配器電路可能使用決策電路之輸出來將資源分配給執行緒。
資源之演算法競爭共享
處理器核心可根據實施例支持演算法SMT特徵。在一些實施例中,這個特徵解決執行緒分配到在管線中競爭共享的可用資源的問題。在一些實施例中,這個問題使用優先級演算法解決。在一些實施例中,在管線中的分支預測方塊可能為競爭共享的並且可使用優先級演算法用於有效的條目分配。在一些實施例中,優先級演算法可被實施在硬體和/或軟體中。在一些實施例中,執行緒分配可以用兩或多個執行緒來執行。在一些實施例中,執行緒分配可將最有效的執行緒分配給在管線中的可用資源,以實施最高的每一時脈指令(IPC)和/或管線通量。在一些實施例中,這個特徵可提供用以優先化執行緒分配之最佳的已知演算法給可用資源。隨著執行緒數量的增加和/或執行緒之間的背景切換的增加,該特徵可以藉由有效地分配資源來提供進一步的好處。
圖13為根據實施例示出可包括在處理器1300中的演算法SMT特徵的方塊圖。優先級演算法硬體可例如包括基於動態行為的管理。優先級硬體可包含事件偵測方塊1301、效能計數器旗標方塊1302、死鎖預防方塊1303、以及指令類型/分類方塊1304中的至少一個。事件偵測方塊1301可例如偵測一或多個事件,例如殺光(nuke)、清除頻率(例如,JEClear和CRClear)、BR的頻率、中斷和快取遺失。效能計數器旗標方塊1302可例如計數下面中的一或多個:指令撤回、碼遺失、L2/L3遺失。死鎖預防方塊1303可預防死鎖狀態。指令類型/分類方塊1304可例如允許浮點指令撤回。在一些實施例中,前述中的一或多個可被實施在軟體和/或韌體中。額外地,在一些實施例中,軟體可允許作業系統(OS)和/或虛擬機器管理器(VMM)設定優先級。
在一些實施例中,優先級演算法可具有諸如機器學習的學習能力。學習能力可提供智能執行緒選擇並且可以基於例如收集的歷史資料和/或型態來進行自適應。
在一些實施例中,可能有多於一個執行緒有類似的事件。在一些實施例中,可以在執行緒之間有連結的情況下使用優先級方案。例如,可以藉由隨機選擇、選擇編號較低的執行緒、選擇編號較高的執行緒和/或選擇交替執行緒來執行連結中斷。
圖14為根據實施例示出可被處理器執行之用於演算法SMT特徵之方法的流程圖。該方法可包含判定在管線中的競爭共享的資源是否可用,如在1401中所示。該方法可進一步包含優先化執行緒,如在1402中所示。例如,如果超過一個事件則優先化執行緒。該方法可進一步包含拾取最高優先級事件或旗標,如在1403中所示。例如最高優先級事件或旗標可基於分配演算法選擇。該方法可進一步包含分配資源給執行緒,如在1404中所示。例如,資源可基於優先級演算法被分配給最理想的執行緒。
圖15為根據實施例示出可包括在處理器中的演算法SMT特徵的方塊圖。圖15顯示基於演算法優先級方塊將執行緒(例如,執行緒T0)分配給競爭共享資源。例如,特徵可以判定競爭共享資源1501是可用的,例如根據圖14中的框1401。如果存在多於一個的事件(例如事件Evt1和Evt2(例如根據圖14中的框1402)),演算法優先級方塊1502可以優先化。演算法優先級方塊1502還可以基於分配的演算法(例如,根據圖14中的框1403)拾取最高優先級事件或旗標。演算法優先級方塊1502還可以基於優先級演算法將資源(例如,1501)分配給最禁止的執行緒(例如,T0)。
在一些實施例中,優先級演算法可包含整數重新命名和/或浮點重新命名演算法。優先級演算法可包含基於諸如殺光、清除和中斷之事件的基於事件的判定。優先級演算法可包含效能計數器,其可以計數發生的事件,諸如撤回的指令和碼遺失。優先級演算法可包含限制實體暫存器、使用死鎖防止和/或判定快取遺失。優先級演算法可包含判定指令類型和類別。優先級演算法可包含分配暫存器,例如更多的浮點暫存器的浮點字線。優先級演算法可包含透過軟體管理優先級。例如,優先級演算法可允許作業系統和/或虛擬機器管理器提供優先級。優先級演算法可包含管理優先級之硬體,例如基於動態行為。
在一些實施例中,優先級演算法可包含分支預測器演算法。在一些實施例中,分支預測器演算法可基於下述中的一或多者控制分支目標緩衝器(BTB)的行動:清除的頻率(例如,JEClears和CRClears)、分支的頻率(例如,全部、採用、不採用)、分支以外的性質(例如,撤回的指令,L2/L3遺失)。優先級演算法可包含透過軟體管理優先級。例如,優先級演算法可允許作業系統和/或虛擬機器管理器提供優先級。優先級演算法可包含管理優先級之硬體,例如基於動態行為。圖16根據示例性實施例顯示實施分支預測器優先級演算法的方塊圖。分區邏輯1602可接收輸入1603,諸如清除的頻率(例如,JEClears和CRClears)、分支的頻率(例如,全部、採用、不採用)、分支以外的性質(例如,撤回的指令,L2/L3遺失)。分區邏輯1602可基於輸入1603分配分支目標緩衝器(BTB)1601之條目。
一些實施例之摘要
實施例可包括處理器,其組態以識別可用的競爭共享資源;至少部分基於優先級演算法來選擇執行緒;以及將選擇的執行緒分配給可用的競爭共享資源。
在一些實施例中,以下一個或多個適用。在一些實施例中,處理器可被進一步組態以競爭地共享分支預測並且使用優先級演算法進行條目分配。在一些實施例中,處理器可進一步組態以基於優先級演算法指定第二執行緒。在一些實施例中,處理器可進一步組態以將最有效的執行緒指定給在管線中的可用資源,以增加每一時脈指令(IPC)和管線通量中的至少一個。在一些實施例中,處理器可進一步組態以提供用以優先化執行緒分配之最佳的已知演算法給可用資源。在一些實施例中,處理器可進一步組態以當偵測到二或更多事件時優先化。在一些實施例中,處理器可進一步組態以基於指定的演算法選擇最高優先級事件和旗標中的至少一個。
在一些實施例中,處理器可包含事件偵測方塊、效能計數器旗標方塊、死鎖預防方塊及指令類型/分類方塊。在一些實施例中,事件偵測方塊可偵測殺光、清除的頻率、BR的頻率、中斷和快取遺失中的至少一個。在一些實施例中,效能計數器旗標方塊可計算指令撤回、碼遺失和L2/L3遺失中的至少一個。在一些實施例中,死鎖預防方塊可預防死鎖狀態。在一些實施例中,指令類型/分類方塊可允許浮點指令撤回。在一些實施例中,處理器可進一步組態以允許作業系統(OS)和/或虛擬機器管理器(VMM)中的至少一個設定優先級。在一些實施例中,優先級演算法可具有至少一學習能力。在一些實施例中,至少一學習能力可以基於歷史資料和工作量型態中的至少一個來自適應。
在一些實施例中,優先級演算法可包含整數重新命名和浮點重新命名演算法中的至少一個。優先級演算法可包含基於事件的判定。基於事件的判定可包含殺光、清除和中斷中的一或多個。優先級演算法可包含效能計數器。效能計數器可計數發生的事件。發生的事件可為指令撤回和碼遺失中的一或多個。優先級演算法可包含限制實體暫存器、使用死鎖防止和判定快取遺失中的一或多個。優先級演算法可包含判定指令類型和類別。優先級演算法可包含分配暫存器。分配暫存器可包含分配更多的浮點暫存器的浮點字線。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可基於動態行為。
在一些實施例中,優先級演算法可包含分支預測器演算法。在一些實施例中,分支預測器演算法可至少部分基於下述中的一或多個控制分支目標緩衝器(BTB)之動作:清除的頻率、分支的頻率、分支以外的性質。清除可包含JEClears和CRClears中的一或多個。分支的頻率可包含全部、採用、不採用中的一或多個。分支以外的性質可包含指令撤回、L2/L3遺失中的一或多個。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可至少部分基於動態行為。優先級演算法可包含使用分區邏輯以接收輸入。輸入可包含清除的頻率、分支的頻率、分支以外的性質中的一或多個。分區邏輯可基於輸入分配分支目標緩衝器(BTB)之條目。
實施例可包括方法,方法包含識別可用的競爭共享資源;至少部分基於優先級演算法來選擇執行緒;以及將選擇的執行緒分配給可用的競爭共享資源。
在一些實施例中,以下一個或多個適用。在一些實施例中,方法可進一步包含競爭地共享分支預測並且使用優先級演算法進行條目分配。在一些實施例中,方法可進一步包含基於優先級演算法指定第二執行緒。在一些實施例中,方法可進一步包含將最有效的執行緒指定給在管線中的可用資源,以增加每一時脈指令(IPC)和管線通量中的至少一個。在一些實施例中,方法可進一步包含提供用以優先化執行緒分配之最佳的已知演算法給可用資源。在一些實施例中,方法可進一步包含當偵測到二或更多事件時優先化。在一些實施例中,方法可進一步包含基於指定的演算法選擇最高優先級事件和旗標中的至少一個。
在一些實施例中,方法可進一步包含使用事件偵測方塊、效能計數器旗標方塊、死鎖預防方塊及指令類型/分類方塊。在一些實施例中,方法可進一步包含使用事件偵測方塊以偵測殺光、清除的頻率、BR的頻率、中斷和快取遺失中的至少一個。在一些實施例中,方法可進一步包含使用效能計數器旗標方塊以計算指令撤回、碼遺失和L2/L3遺失中的至少一個。在一些實施例中,方法可進一步包含使用死鎖預防方塊防止死鎖狀態。在一些實施例中,方法可進一步包含使用指令類型/分類方塊以允許浮點指令撤回。在一些實施例中,方法可進一步包含允許作業系統(OS)和/或虛擬機器管理器(VMM)中的至少一個設定優先級。在一些實施例中,優先級演算法可具有至少一學習能力。在一些實施例中,至少一學習能力可以基於歷史資料和工作量型態中的至少一個來自適應。
在一些實施例中,優先級演算法可包含整數重新命名和浮點重新命名演算法中的至少一個。優先級演算法可包含基於事件的判定。基於事件的判定可包含殺光、清除和中斷中的一或多個。優先級演算法可包含效能計數器。效能計數器可計數發生的事件。發生的事件可為指令撤回和碼遺失中的一或多個。優先級演算法可包含限制實體暫存器、使用死鎖防止和判定快取遺失中的一或多個。優先級演算法可包含判定指令類型和類別。優先級演算法可包含分配暫存器。分配暫存器可包含分配更多的浮點暫存器的浮點字線。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可基於動態行為。
在一些實施例中,優先級演算法可包含分支預測器演算法。在一些實施例中,分支預測器演算法可至少部分基於下述中的一或多個控制分支目標緩衝器(BTB)之動作:清除的頻率、分支的頻率、分支以外的性質。清除可包含JEClears。分支的頻率可包含全部、採用、不採用中的一或多個。分支以外的性質可包含指令撤回、L2/L3遺失中的一或多個。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可至少部分基於動態行為。優先級演算法可包含使用分區邏輯以接收輸入。輸入可包含清除的頻率、分支的頻率、分支以外的性質中的一或多個。分區邏輯可基於輸入分配分支目標緩衝器(BTB)之條目。
實施例可包括非暫態機器可讀取媒體,其儲存至少一指令,當指令由處理器執行時導致處理器執行方法,方法包含識別可用的競爭共享資源;至少部分基於優先級演算法來選擇執行緒;以及將選擇的執行緒分配給可用的競爭共享資源。
在一些實施例中,以下一個或多個適用。在一些實施例中,方法可進一步包含競爭地共享分支預測並且使用優先級演算法進行條目分配。在一些實施例中,方法可進一步包含基於優先級演算法指定第二執行緒。在一些實施例中,方法可進一步包含將最有效的執行緒指定給在管線中的可用資源,以增加每一時脈指令(IPC)和管線通量中的至少一個。在一些實施例中,方法可進一步包含提供用以優先化執行緒分配之最佳的已知演算法給可用資源。在一些實施例中,方法可進一步包含當偵測到二或更多事件時優先化。在一些實施例中,方法可進一步包含基於指定的演算法選擇最高優先級事件和旗標中的至少一個。
在一些實施例中,方法可進一步包含使用事件偵測方塊、效能計數器旗標方塊、死鎖預防方塊及指令類型/分類方塊。在一些實施例中,方法可進一步包含使用事件偵測方塊以偵測殺光、清除的頻率、BR的頻率、中斷和快取遺失中的至少一個。在一些實施例中,方法可進一步包含使用效能計數器旗標方塊以計算指令撤回、碼遺失和L2/L3遺失中的至少一個。在一些實施例中,方法可進一步包含使用死鎖預防方塊防止死鎖狀態。在一些實施例中,方法可進一步包含使用指令類型/分類方塊以允許浮點指令撤回。在一些實施例中,方法可進一步包含允許作業系統(OS)和/或虛擬機器管理器(VMM)中的至少一個設定優先級。在一些實施例中,優先級演算法可具有至少一學習能力。在一些實施例中,至少一學習能力可以基於歷史資料和工作量型態中的至少一個來自適應。
在一些實施例中,優先級演算法可包含整數重新命名和浮點重新命名演算法中的至少一個。優先級演算法可包含基於事件的判定。基於事件的判定可包含殺光、清除和中斷中的一或多個。優先級演算法可包含效能計數器。效能計數器可計數發生的事件。發生的事件可為指令撤回和碼遺失中的一或多個。優先級演算法可包含限制實體暫存器、使用死鎖防止和判定快取遺失中的一或多個。優先級演算法可包含判定指令類型和類別。優先級演算法可包含分配暫存器。分配暫存器可包含分配更多的浮點暫存器的浮點字線。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可基於動態行為。
在一些實施例中,優先級演算法可包含分支預測器演算法。在一些實施例中,分支預測器演算法可至少部分基於下述中的一或多個控制分支目標緩衝器(BTB)之動作:清除的頻率、分支的頻率、分支以外的性質。清除可包含JEClears和CRClears中的一或多個。分支的頻率可包含全部、採用、不採用中的一或多個。分支以外的性質可包含指令撤回、L2/L3遺失中的一或多個。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可至少部分基於動態行為。優先級演算法可包含使用分區邏輯以接收輸入。輸入可包含清除的頻率、分支的頻率、分支以外的性質中的一或多個。分區邏輯可基於輸入分配分支目標緩衝器(BTB)之條目。
實施例可包括系統,系統包括記憶體和處理器,處理器組態以識別可用的競爭共享資源;至少部分基於優先級演算法來選擇執行緒;以及將選擇的執行緒分配給可用的競爭共享資源。
在一些實施例中,優先級演算法可包含整數重新命名和浮點重新命名演算法中的至少一個。優先級演算法可包含基於事件的判定。基於事件的判定可包含殺光、清除和中斷中的一或多個。優先級演算法可包含效能計數器。效能計數器可計數發生的事件。發生的事件可為指令撤回和碼遺失中的一或多個。優先級演算法可包含限制實體暫存器、使用死鎖防止和判定快取遺失中的一或多個。優先級演算法可包含判定指令類型和類別。優先級演算法可包含分配暫存器。分配暫存器可包含分配更多的浮點暫存器的浮點字線。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可基於動態行為。
在一些實施例中,優先級演算法可包含分支預測器演算法。在一些實施例中,分支預測器演算法可至少部分基於下述中的一或多個控制分支目標緩衝器(BTB)之動作:清除的頻率、分支的頻率、分支以外的性質。清除可包含JEClears和CRClears中的一或多個。分支的頻率可包含全部、採用、不採用中的一或多個。分支以外的性質可包含指令撤回、L2/L3遺失中的一或多個。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可至少部分基於動態行為。優先級演算法可包含使用分區邏輯以接收輸入。輸入可包含清除的頻率、分支的頻率、分支以外的性質中的一或多個。分區邏輯可基於輸入分配分支目標緩衝器(BTB)之條目。
在一些實施例中,以下一個或多個適用。在一些實施例中,處理器可被進一步組態以競爭地共享分支預測並且使用優先級演算法進行條目分配。在一些實施例中,處理器可進一步組態以基於優先級演算法指定第二執行緒。在一些實施例中,處理器可進一步組態以將最有效的執行緒指定給在管線中的可用資源,以增加每一時脈指令(IPC)和管線通量中的至少一個。在一些實施例中,處理器可進一步組態以提供用以優先化執行緒分配之最佳的已知演算法給可用資源。在一些實施例中,處理器可進一步組態以當偵測到二或更多事件時優先化。在一些實施例中,處理器可進一步組態以基於指定的演算法選擇最高優先級事件和旗標中的至少一個。
在一些實施例中,處理器可包含事件偵測方塊、效能計數器旗標方塊、死鎖預防方塊及指令類型/分類方塊。在一些實施例中,事件偵測方塊可偵測殺光、清除的頻率、BR的頻率、中斷和快取遺失中的至少一個。在一些實施例中,效能計數器旗標方塊可計算指令撤回、碼遺失和L2/L3遺失中的至少一個。在一些實施例中,死鎖預防方塊可預防死鎖狀態。在一些實施例中,指令類型/分類方塊可允許浮點指令撤回。在一些實施例中,處理器可進一步組態以允許作業系統(OS)和/或虛擬機器管理器(VMM)中的至少一個設定優先級。在一些實施例中,優先級演算法可具有至少一學習能力。在一些實施例中,至少一學習能力可以基於歷史資料和工作量型態中的至少一個來自適應。
在一些實施例中,優先級演算法可包含整數重新命名和浮點重新命名演算法中的至少一個。優先級演算法可包含基於事件的判定。基於事件的判定可包含殺光、清除和中斷中的一或多個。優先級演算法可包含效能計數器。效能計數器可計數發生的事件。發生的事件可為指令撤回和碼遺失中的一或多個。優先級演算法可包含限制實體暫存器、使用死鎖防止和判定快取遺失中的一或多個。優先級演算法可包含判定指令類型和類別。優先級演算法可包含分配暫存器。分配暫存器可包含分配更多的浮點暫存器的浮點字線。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可基於動態行為。
在一些實施例中,優先級演算法可包含分支預測器演算法。在一些實施例中,分支預測器演算法可至少部分基於下述中的一或多個控制分支目標緩衝器(BTB)之動作:清除的頻率、分支的頻率、分支以外的性質。清除可包含JEClears和CRClears中的一或多個。分支的頻率可包含全部、採用、不採用中的一或多個。分支以外的性質可包含指令撤回、L2/L3遺失中的一或多個。優先級演算法可包含透過軟體管理優先級。優先級演算法可允許作業系統和虛擬機器管理器中的一或多個提供優先級。優先級演算法可包含硬體管理的優先級。硬體管理的優先級可至少部分基於動態行為。優先級演算法可包含使用分區邏輯以接收輸入。輸入可包含清除的頻率、分支的頻率、分支以外的性質中的一或多個。分區邏輯可基於輸入分配分支目標緩衝器(BTB)之條目。
執行緒切換
處理器核心可根據本發明之實施例支持SMT執行緒切換特徵。在實施具有共享資源的SMT之處理器核心中,SMT可涉及選擇在處理器簽發/執行管線中的各個階段中選擇兩或多個執行緒中的哪一個執行緒。包括SMT執行緒切換特徵之本發明實施例可能被期望提供這種選擇以影響性能、公平性和其他因素之中的優先級(例如,提高效能、降低電力耗損並實施省電特徵、以及改善公平性、最小效能保證、通量、每一時脈指令(IPC)、每一單位時間的指令、服務品質、時間和/或記憶體效率,僅列出幾個適用的標準)。例如,在處理器核心900之簽發/執行管線中,仲裁可被用來選擇分支預測器911將在其上開始預測的執行緒、在i-TLB 916中查找預測的執行緒、在i-快取913中查找i-TLB轉譯的執行緒、解碼器914中將來自i-快取913的位元組進行解碼的執行緒、從op-快取912讀取的執行緒、從微-op佇列915讀取的執行緒等等。
圖17為根據本發明實施例示出用於可包括在處理器中的SMT執行緒切換特徵之仲裁電路1700的方塊圖。仲裁電路1700可包括用以選擇在處理器簽發/執行管線中的各個階段中的任一階段選擇兩個或多個執行緒中的哪個執行緒來推進的電路、結構和/或硬體。處理器或處理器核心可包括仲裁電路1700之一或多個實施例的多個實例,每個實例用於任何一或多個管線階段或資源,每個資源包括圖17中所示之任何一或多個方塊,並且每個資源分別實施任何一或多個方案或下面所述之方案的組合。再者,仲裁電路1700之全部或部分任何實例可被包括、集成或併入處理器或處理器核心的其他電路、結構和/或硬體中,諸如資源分配、排程或共享電路。
仲裁電路1700可包括簡單循環電路1710、高通量循環電路1720、動態循環電路1730和軟體可控制循環電路1740,以及期望實施任何其他循環或其他方案的任何其他電路。
簡單循環電路1710可包括用以執行簡單的循環方案以選擇執行緒的電路、結構和/或硬體。例如,其可實施其中選擇不斷在選項之間交替的方案;即執行緒0、接著執行緒1、接著執行緒0、接著執行緒1等等;或執行緒0、執行緒1、執行緒2、執行緒0、執行緒1、執行緒2等等;等。
高通量循環電路1720可包括用以執行修改的循環方案以基於期望將通量優先於其他可能因素(例如公平)來選擇執行緒的電路、結構和/或硬體。例如,只要每個執行緒在執行緒切換點具有可用的工作,其可實施簡單的循環方案(例如,如上所述),否則可以選擇具有可用工作的執行緒。在具有多於兩個執行緒可供選擇的實施例中,其可以在沒有可用工作下從簡單的循環方案中退出任何執行緒。
動態循環電路1730可包括用以執行動態可修改的循環方案以基於執行緒的動態行為選擇執行緒的電路、結構和/或硬體。動態循環電路1730可包括和/或使用效能計數器、其他硬體計數器、或其他結構(其中任何一個代表1732),以提供作為決定基礎的資訊(例如,試探)。基於執行緒選擇來支持執行緒的比率或其他標準以及使用哪些動態行為測量的指示可以是固定的(例如,硬線)、可組態的(例如,藉由硬體或韌體)或可程式的(例如,藉由軟體)。例如,第一執行緒可以在第二執行緒上以2:1的比率(例如,執行緒0、執行緒0、執行緒1、執行緒0、執行緒0、執行緒1等等)被青睞或選擇。判定一執行緒比另一執行緒更青睞的因素或標準的範例是:誤預測率、每一週期的指令、快取遺失率等。
軟體可控制循環電路1740可包括用以執行修改的循環方案以基於由軟體(例如,以及作業系統或虛擬機器監視器)提供的優先級選擇執行緒的電路、結構和/或硬體,其可具有關於期望系統行為的更多資訊,而不是軟體可用的資訊。該指示以及青睞的比率和/或關於使用哪個方案或如何實施的任何其他資訊(例如,是否以及如何將軟體可控制的循環與動態和/或可修改的循環組合)可以被提供在仲裁電路1700內或者仲裁電路1700可存取的可程式儲存位置或暫存器1742中。
在實施例中,方案的組合是可能的。例如,軟體可以提供(例如,使用用於軟體可控制的循環的電路和/或技術),關於青睞哪個執行緒的提示以及硬體(例如,動態循環的電路或技術)可基於執行緒行為和/或試探來根據執行緒青睞的判定比率。
一些實施例之摘要
本發明之實施例可包括處理器,處理器包含仲裁電路。仲裁電路可包括第一循環電路和第二循環電路。第一循環電路可被用以實施簡單循環執行緒切換方案。第二循環電路可被用以實施動態修改的循環執行緒切換方案。
死鎖避免
處理器核心可根據本發明之實施例支持SMT死鎖避免特徵。在某些情況下,資源共享可能導致執行緒由於缺乏一或多個資源而進展緩慢,由於無法前進(例如,撤回指令)而沒有進展,和/或任何其他死鎖 - 類型的情況。因此,使用者經驗可能包含明顯較慢的效能或錯誤、失敗或崩潰。包括死鎖避免特徵之本發明實施例可能期望減少死鎖類型的情況並改善使用者經驗。這些實施例的其他益處可包括例如提高效能、降低電力耗損並實施省電特徵、以及改善公平性、最小效能保證、通量、每一時脈指令(IPC)、每一單位時間的指令、服務品質、時間和/或記憶體效率,僅列出幾個適用的標準。
圖18為根據本發明實施例示出可包括在處理器中的死鎖避免硬體1800的方塊圖。死鎖避免硬體1800可包括用以影響核心電路、結構、單元和資源以及它們的一部分之分配和使用而減少死鎖類型情況之發生的電路、結構和/或硬體。在實施例中,死鎖避免硬體1800可被實施以避免涉及單個資源和/或多個資源的死鎖。在任一情況下,處理器或處理器核心可包括死鎖避免硬體1800之一或多個實施例的多個實例,每個實例用於任何一或多個資源,每個資源包括圖18中所示之任何一或多個方塊,並且每個資源分別實施任何一或多個方案或下面所述之方案的組合。再者,死鎖避免硬體1800之全部或部分任何實例可被包括、集成或併入處理器或處理器核心的其他電路、結構和/或硬體中,諸如資源分配、排程或共享電路。
死鎖避免硬體1800可包括分配器電路1810,其可包括用以分配資源至執行緒的電路、結構和/或硬體。分配器電路1810之實施例的實施例或實例可表示或相應於圖12中的分配器電路1240之實施例的實施例或實例。
死鎖避免硬體1800、分配器電路CGA10和/或處理器或處理器核心的任何其他部分可包括用以動態地禁止、阻止或以其他方式防止分配器電路CGA10將資源或可分割資源的一部分分配給任何一或多個特定執行緒的電路、結構和/或硬體。例如,於包括任何類型的循環方案之實施例中,諸如那些上面所述,在執行緒請求之間或之中選擇或仲裁、阻止特定執行緒使用資源可以藉由從循環方案暫時退出該執行緒來完成。實施例可包括具有作為一輸入之執行緒請求訊號(例如,1240A、1240B)和執行緒阻隔訊號的補數(例如,如下所述,由基於資源使用計數器1820的電路產生,或者任何其他資訊、狀態或訊號)的AND閘,使得AND閘的輸出可以指示執行緒將被分配資源還是將被視為資源被分配的候選者。
死鎖避免硬體1800還可以包括資源使用計數器1820。於實施例中,資源使用計數器1820可為用以計數被特定執行緒佔據或使用之可分割資源(例如,緩衝器、佇列、排程器、保留站)之部分的數量(例如,條目)的每一執行緒硬體計數器。對於特定資源,用於特定執行緒之資源使用計數器1820的實例可以響應於分配器電路1810向執行緒分配條目而遞增、響應於條目被解除分配或移除而遞減以及響應於資源被刷新而被清除。分配器電路1810可響應於執行緒的計數達到或超過臨限值而被動態地禁止或阻止(例如,如上所述)將條目分配給執行緒。
可以選擇臨限值小於資源中的條目總數,以防止任何單個執行緒同時使用所有條目,其可能會導致死鎖類型情況。臨限值還可以基於包括與接近死鎖類型情況相關的容許度和/或希望優先化通量或其他效能之測量或因素的其他因素或標準來選擇或調整。臨限值可以是固定的(例如,硬線的)、可組態的(例如,藉由硬體或韌體)或可程式的(例如,藉由軟體)。
於一實施例中,可分割的資源可邏輯地分區用於特定執行緒或執行緒群組。例如,在具有N條目組的可分割資源中,N1條目的子組(其中N1小於N)可以被保留僅由第一執行緒使用,N2條目的子組(其中N2小於N)可以被保留僅由第二執行緒使用,並且N-(N1 + N2)條目的剩餘子組可以被分配給任一執行緒。在實施例中,這個方案可以由分配器電路1810的一或多個實例來執行。
在其中取決於從快取讀出資料之載入的完成之實施例中,每個快取條目可包括用以指示條目被包括來自該條目之載入的執行緒鎖定的位元。可以防止具有指示符位元組之條目的置換,直到與載入之完成或執行緒經歷管線刷新事件(例如,誤預測的分支)相關的位元被清除。在實施例中,這個方案可以由分配器電路1810的一或多個實例來執行。
於一實施例中,資源使用計數器1820可以是每一執行緒硬體計數器,其用以計算對於特定執行緒的撤回佇列中最老的條目,該執行緒(停頓的執行緒)一直在等待相應的調度到不可分割資源(該條件涉及撤回佇列,因為該執行緒需要調度槽和回寫槽)。分配器電路1810響應於停頓的執行緒之計數達到或超過臨限值,可動態地禁用或阻隔分配電路1810(例如,如上所述)將操作從不同執行緒分配給不可分割資源的排程器。或者,對於不可分割資源的任何操作的調度可以在給定數量的時脈週期內被禁用或阻隔。
這些方案可以防止使用不可分割的資源(諸如,執行單元)的死鎖類型情況,該執行單元可執行消耗一定範圍的時脈週期的不同操作。例如,它可以允許在單個週期中完成的操作使用可能保持忙碌的資源,從而完成連續的多個週期操作。
臨限值可以是固定的(例如,硬線的)、可組態的(例如,藉由硬體或韌體)或可程式的(例如,藉由軟體)。可以基於各種因素或標準(包括那些與通量相關的以及那些與公平相關的因素或標準)來選擇和/或動態地調整。例如,如果公平是優先的,那麼可以逐漸減少閾值以更積極地允許每個執行緒取得進展;如果通量是優先的,其可能會逐漸增加以便更積極地允許正在進行的執行緒不中斷地繼續。
一些實施例之摘要
本發明之實施例可包括處理器,處理器包含死鎖避免硬體及資源。死鎖避免硬體可包括分配器電路及資源使用計數器。分配器電路可基於來自資源使用計數器的輸出判定是否分配資源給執行緒。
資料路徑特徵
根據本發明之實施例的處理器核心可包括支持指令集架構(ISA)的各種特徵,其資料路徑比ISA提供的要窄。下面使用非限制性範例分開敘述數個此種特徵,但是實施例可以包括此種特徵的任何組合。
處理器核心可以支持藉由將這些操作分解成多個微操作(μops)來操作較大大小的運算元的特徵(例如,在256位元的運算元上的載入/儲存/算術運算),微操作(μops)對較小的運算元進行操作(例如,對128位元大小的值進行操作的多個μop)。由於各種原因,此種特徵可能是期望的:例如,處理器可以支持涉及較大運算元大小的指令集架構,但是可以使用基於較小運算元大小的微架構。此外或替代地,處理器可支持較大運算元大小的指令集架構,並且具有包括這個較大的大小之暫存器暫存器檔案,但可包括可僅處理在較小塊的資料之執行單元。此外或替代地,處理器可具有較大的大小之暫存器檔案、執行單元和載入/儲存埠,但使用較小的大小之運算元執行µop對於例如省電或排程目的可能是期望的。包括下面敘述之特徵的處理器之其他潛在益處包括但不限制於提高效能、降低電力耗損並實施省電特徵、以及改善公平性、最小效能保證、通量、每一時脈指令(IPC)、每一單位時間的指令、服務品質、和時間和/或記憶體效率,僅列出幾個適用的標準。
256至128位元資料路徑載入和儲存
根據本發明實施例,處理器核心可支持使用128位元微操作(µop)允許256位元載入和儲存的特徵。在一些實施例中,處理器可支持256位元指令集架構,但可使用128位元微架構,包括128位元暫存器檔案。於其他實施例中,處理器可具有256位元指令集架構和256位元暫存器檔案,但可包括僅可處理在128位元塊中的資料之載入和/或儲存埠。
圖19為根據一些實施例顯示使用一對128位元µop將256位元載入至256位元暫存器檔案的圖。記憶體1901包括一系列的256位元值,諸如儲存在記憶體位置1902中的值。第一µop 1903檢索儲存在記憶體位置1902中的值的下半部分,以及第二µop 1904檢索儲存在記憶體位置1902中的值的上半部分。儲存在記憶體位置1902中的值的兩半部混合在一起(1905),以及混合操作的結果被放置在256位元暫存器檔案1906中。
圖20為根據一些實施例表示以上參照圖19敘述的流程的流程圖。在解碼指令(2001)之流程期間如果檢測到256位元載入,產生包括第一載入µop、第二載入µop及混合µop(方框2002)的3個µop。排程µop以被執行,並且對於每一µop,處理器可以等待直到資料已經被載入/混合(2003)。當執行第一載入µop時,處理器可檢索儲存在記憶體位置1902中的值的下半部分,如方框2004中所示。當執行第二載入µop時,處理器可檢索儲存在記憶體位置1902中的值的上半部分,如方框2004中所示。當執行混合µop時,儲存在記憶體位置1902的值的兩個檢索半部被組合並且置放在256位元暫存器檔案中,如方框2004所示。最終,已解碼指令在完成後被撤回,如方框2005所示。
在一些實施例中,值可使用128位元µop從256位元暫存器檔案儲存至記憶體中。圖21為示出這個流程的圖。256位元暫存器檔案2101包括256位元寬的暫存器(諸如,暫存器2102)。第一儲存µop 2103檢索儲存在暫存器2102中的值的下半部分並將它儲存在記憶體位置2104的下半部分。第二儲存µop 2105檢索儲存在暫存器2102中的值的上半部分並將它儲存在記憶體位置2104的上半部分。
圖22為根據一些實施例表示以上參照圖21敘述的流程的流程圖。在解碼指令(2201)之流程期間如果檢測到256位元儲存,產生包括第一儲存µop及第二儲存µop(方框2202)的2個µop。排程µop以被執行,並且對於每一µop,處理器可以等待直到資料已經被儲存(2203)。當執行第一儲存µop時,處理器可檢索儲存在暫存器2102中的值的下半部分,如方框2204中所示,並將其寫入至記憶體位置2104的下半部分中。當執行第二儲存µop時,處理器可檢索儲存在暫存器2102中的值的上半部分,如方框2204中所示,並將其寫入至記憶體位置2104的上半部分中。最終,已解碼指令在完成後被撤回,如方框2205所示。
在一些實施例中,256位元載入指令可藉由執行兩個µop將256位元值載入至兩個128位元暫存器中,第一µop用以將256位元值的下半部分載入至第一128位元暫存器中,以及第二µop用以將256位元值的上半部分載入至第二128位元暫存器。
在一些實施例中,載入是使用為「雙泵」的單個μop來完成 - 即,執行兩次,一次從記憶體載入值的下半部分,以及第二次從記憶體載入值的上半部分。在一些實施例中,儲存是使用為「雙泵」的單個μop來完成 -即,被執行一次以將暫存器的下半部分儲存到記憶體以及一次將暫存器的上半部分儲存到記憶體。在一些實施例中,用來實施256位元載入和/或儲存的µop可根據向量排程演算法被排程。在一些實施例中,成組排程技術可被用來排程用於在單獨執行單元上執行載入和/或儲存的多個µop。
上述之載入/儲存特徵不限於使用記憶體、載入埠或任何特定大小之暫存器檔案執行載入和/或儲存。例如,上述技術可被用來使用一次操作256位元的下層硬體來執行512位元載入和/或儲存。
256至128位元資料路徑通道內執行
根據本發明實施例,處理器核心可支持使用128位元微操作(µop)允許256位元算術運算的特徵。在一些實施例中,處理器可支持256位元指令集架構,但可使用128位元微架構,包括128位元暫存器檔案。於其他實施例中,處理器可具有256位元指令集架構和256位元暫存器檔案,但可包括僅可處理在128位元塊中的資料之執行單元。在一些實施例中,處理器可具有256位元暫存器檔案、執行單元及載入/儲存埠,但是例如節電或排程目的可能需要使用多個128位元μop來實施256位元算術運算。
圖23根據一些實施例示出這個流程。256位元指令2301藉由將其分裂為2個128位元µop 2302和2303而解碼,接著將其獨立地排程以在一或多個128位元執行單元2304、2305上執行。根據圖23中所示之實施例,第一128位元µop2302可使用提供至256位元算術指令的256位元運算元之下半部執行指令,並且處理器可接著將結果儲存在256位元目的地暫存器之下半部分。第二128位元µop2303可使用提供至256位元算術指令的256位元運算元之上半部執行指令,並且處理器可接著將結果儲存在256位元目的地暫存器之上半部分。
根據一些實施例,將256位元指令分區為一對128位元µop,結果的下半部分僅在256位元指令的運算元的下半部,以及結果的上半部分完全基於256位元指令運算元的上半部(即,「通道內」操作)。在這些通道內情境,兩個128位元µop可被彼此獨立地排程,因為256位元指令的結果可以表示為兩個獨立的128位元μop的兩個獨立結果。
在一些實施例中,128位元μop中的每一個表示相同的指令(例如,ADD指令),以及可以使用「雙泵」的單個128位元μop來實施256位元指令 - 即,執行兩次,一次計算結果的下半部分,一次計算結果的上半部分。在一些實施例中,256位元指令可以被「分裂」成兩個不同的μop,其在一或多個執行單元上被獨立排程和執行。在一些實施例中,可以使用兩個執行單元同時執行256位元指令,每個執行單元執行128位元μop(這個過程有時在本領域中被稱為「組合排程」)。
上述之通道內執行特徵不限制於使用記憶體值、載入埠、執行單元或任何特定大小之暫存器檔案來執行指令。例如,上述的技術可被用來使用一次操作256位元之下層硬體來執行512位元操作,或一次操作512位元之下層硬體來執行1024位元操作。
256至128位元資料路徑交叉通道執行
在一些實施例中,要執行的256位元指令不能劃分成兩個完全獨立的128位元μop,因為結果的下半部分取決於儲存在運算元之上半部分的值,和/或結果之上半部分取決於儲存在運算元之下半部分的值(即,「交叉通道」操作)中。
交叉通道操作可以使用臨時暫時儲存器區來儲存部分結果而實施,然後將這些結果組合成最終結果並儲存在目的地暫存器中。圖24根據這個特徵之一些實施例示出這個流程。交叉通道256位元指令QJA01藉由將其分裂為2個128位元µop QJA02和QJA03而解碼,接著將其獨立地排程以在一或多個128位元執行單元QJA06、QJA07上執行。暫時儲存器區QJA04可被用來儲存由µop QJA02和QJA03產生的部分結果。這些暫時結果由第三µop(QJA05)使用來產生最終結果。
在一些實施例中,128位元μop QJA02和QJA03中的每一個代表相同的指令,並且可以使用「雙泵」的單個128位元μop來執行 - 即,執行兩次,一次用以計算儲存在暫時儲存器區QJA04中的第一部分結果,以及一次計算儲存在暫時儲存器區QJA04中的第二部分結果。在一些實施例中,256位元指令可以被「分裂」成兩個不同的μop,該μop在一或多個執行單元上被獨立排程和執行,該μop之部分結果係儲存在暫時儲存器區。在一些實施例中,可以使用兩個執行單元同時執行256位元指令,每個執行單元執行128位元μop(這個過程有時在本領域中被稱為「組合排程」)。在一些實施例中,256位元µop可使用具有256位元能力的「特殊」執行單元來執行,不需要暫時儲存器區(例如,暫時儲存器區QJA04)。
上述之交叉通道執行特徵不限制於使用記憶體值、載入埠、執行單元或任何特定大小之暫存器檔案來執行指令。例如,上述的技術可被用來使用一次操作256位元之下層硬體來執行512位元操作,或一次操作512位元之下層硬體來執行1024位元操作。
額外的獨立和可組合特徵
根據本發明之實施例的處理器核心可包括各種支持提升效能和/或降低電力耗損的額外特徵。下面使用非限制性範例分開敘述數個此種特徵,但是實施例可以包括此種特徵的任何組合。
微-op快取
處理器核心可根據實施例支持快取特徵。在一些實施例中,微-op快取特徵可包括分配、替換政策和不同結構類型(例如,實體、虛擬等)。微-op快取特徵中的智能分配可以檢測諸如具有微碼定序器(MS)流的循環流或複雜指令之類的指令,而不是簡單的指令並相應地分配。微-op快取特徵還可以包括添加受害快取以供未來潛在的重用和/或判定每個快取線要分配多少個微操作。在一些實施例中,可以使用微-op快取來將解碼的指令(微操作)保存在微-op緩衝器中以供稍後解碼的指令之重用。在一些實施例中,微-op緩衝器的使用可藉由避免指令快取查找和解碼階段的多個(例如,至少兩個)週期來縮短管線。它也可以藉由使用已經可用的微-op並在微-op緩衝器中解碼來節省電力。在一些實施例中,可能存在具有類似事件之多於一個執行緒(例如,微型、微-op解碼難度、微-op使用型態),並且優先方案可以用於在執行緒之間將資源分配給微-op快取。在一些實施例中,微-op快取特徵可提供智能分配、替換政策和/或用於微-op快取之組態,以在管線中達到最高IPC和/或指令通量。
圖25為根據實施例示出可包括在處理器中的微-op快取特徵的方塊圖。微-op快取特徵可包含下述中的一或多個:指令解碼器2501、智能分配和替換方塊2502及微-op快取2503。智能分配和替換方塊2502可從指令解碼器2501接收指令。指令解碼器2501也可以被省略,以及智能分配和替換方塊2502可以接收已經解碼的指令。智能分配和替換方塊2502可以算術法地判定分配哪些類型的指令,諸如複雜指令(例如,具有MS流)、循環流等。智能分配和替換方塊2502可判定在哪裡分配微-op快取KQA03並可以在判定的位置中分配指令。在一些實施例中,智能分配和替換方塊2502可例如算術法地根據以下一或多項來判定分配哪些類型的指令:指令之歷史使用型態、使用頻率、解碼難度和解碼時間。智能分配和替換方塊可以例如基於以下參數中的一或多個來判定將指令儲存在微-op快取中的何處:近期最少使用的指令資訊、指令的歷史使用型態、使用頻率、解碼難度、指令是否為循環的一部分和來自循環的其他指令是否被儲存,以及解碼儲存在微op快取中的指令之時間。例如,這些參數可以儲存在智能分配和替換方塊、微-op快取和/或其他地方中(例如,在單獨的表格中)。
圖26為根據實施例示出可被處理器執行之用於微-op快取特徵之方法的流程圖。方法可包含接收指令,如方框2601所示。方法可進一步包含算術地判定分配哪些類型的指令,諸如複雜的指令、循環流,如方框2602所示。方法可進一步包含判定在微-op快取中分配指令的位置,如方框2603所示。方法可進一步包含在判定的微-op快取之位置處分配指令,如方框2604所示。
圖27為根據實施例示出可包括在處理器中的微-op快取特徵的方塊圖。微-op快取特徵可包含分支預測單元(BPU)2701、指令快取標籤2702、微op標籤2703、指令快取2704、微op快取2705、解碼器2706及微op佇列2707中的一或多個。BPU 2701可執行分支預測(例如,以判定是否執行條件操作)。如圖27的左側所示,指令快取標籤2702可以例如從BPU 2701接收指令標籤並判定與指令標籤相關聯的指令。該指令可以從指令快取2704中檢索並由解碼器2706解碼。微op佇列2707然後可以從解碼器2706接收解碼的指令。如圖28的右側所示,微op標籤2703可以例如從BPU 2701接收指令標籤並判定與微op標籤相關聯的指令。然後可以檢查微op快取2705以判定與微op標籤相關聯的微-op是否被儲存在微op快取2705中並且從微op快取2705檢索微op。例如,如上面結合圖25和26所敘述的,微op可被解碼並儲存在微op快取2705中。微-op快取特徵可以是實體的和/或虛擬的。微-op快取特徵可以包括縮短管線。例如,如圖27所示,在微-op先前已經被解碼並儲存在微-op快取中的情況下,右側的管線比左側的管線短,這是因為解碼操作可能 當微op已經儲存在微op快取時不需要執行。微-op快取特徵可包含微op快取2705內的下一線預測。微-op快取特徵可將MS流儲存在微op快取2705中。微-op快取特徵可以使用替換政策來判定要在快取中儲存哪些微-op,以及用新微-op來替換哪些微-op。微-op快取特徵可以判定要分配到微-op快取2705中的指令的類型,例如,循環流和/或複雜指令。微-op快取特徵可以優先考慮微操作。微-op快取特徵可包含受害快取(未示出)。受害快取可儲存潛在的重用指令,諸如難以解碼的指令。
圖28為根據實施例示出可包括在處理器中的微-op快取特徵的方塊圖。微-op快取特徵可包含實體微op快取2801和虛擬微op快取2802中的一或多個。實體微op快取2801可以例如使用實體位址空間將微-op儲存在實體記憶體中。虛擬微op快取可以例如使用虛擬位址空間將微op儲存在虛擬記憶體中。實體微op快取2801和/或虛擬微op快取2802可以例如在上下文和/或模式切換時被刷新。實體微op快取2801和/或虛擬微op快取2802可被競爭地共享。
一些實施例之摘要
實施例可包括處理器,其組態以算術地判定要分配給微op快取之指令的類型;判定將所判定類型的指令分配給微op快取的位置;並將該指令分配給判定的位置。
在一些實施例中,以下一個或多個適用。在一些實施例中,處理器進一步組態以導致智能分配和替換方塊,以從指令解碼器接收指令。在一些實施例中,判定的指令類型是複雜指令和循環流中的至少一個。在一些實施例中,處理器可包含分支預測單元(BPU)、指令快取標籤、微op標籤、指令快取、微op快取和解碼器以及微op佇列中的一或多個。在一些實施例中,微op快取可包含下一線預測。在一些實施例中,處理器係組態以將MS流儲存在微op快取中。在一些實施例中,處理器係組態以優先微操作。在一些實施例中,處理器包含受害快取。在一些實施例中,微op快取包含實體微op快取和虛擬微op快取中的至少一者。在一些實施例中,實體微op快取和虛擬微op快取中的至少一者可競爭地共享。在一些實施例中,判定分配給微op快取的哪種類型的指令可以至少部分地基於以下中的一或多個:歷史使用型態、使用頻率、解碼難度和解碼時間。在一些實施例中,判定將所判定類型的指令分配給微op快取的位置可以基於以下中的一或多個:近期最少使用的指令資訊、指令的歷史使用型態、使用頻率、解碼難度、循環狀態資訊以及儲存在微op快取中指令的解碼時間。
實施例可包括方法,其包含算術地判定要分配給微op快取之指令的類型;判定將所判定類型的指令分配給微op快取的位置;並將該指令分配給判定的位置。
在一些實施例中,以下一個或多個適用。在一些實施例中,方法可進一步包含導致智能分配和替換方塊,以從指令解碼器接收指令。在一些實施例中,判定的指令類型是複雜指令和循環流中的至少一個。在一些實施例中,方法可進一步包含使用分支預測單元(BPU)、指令快取標籤、微op標籤、指令快取、微op快取和解碼器以及微op佇列中的一或多個。在一些實施例中,微op快取可包含下一線預測。在一些實施例中,方法可進一步包含將MS流儲存在微op快取中。在一些實施例中,方法可進一步包含優先微操作。在一些實施例中,方法可進一步包含使用受害快取。在一些實施例中,使用微op快取包含使用實體微op快取和虛擬微op快取中的至少一者。在一些實施例中,方法可進一步包含競爭地共享實體微op快取和虛擬微op快取中的至少一者。在一些實施例中,判定分配給微op快取的哪種類型的指令可以至少部分地基於以下中的一或多:歷史使用型態、使用頻率、解碼難度和解碼時間。在一些實施例中,判定將所判定類型的指令分配給微op快取的位置可以基於以下中的一或多個:近期最少使用的指令資訊、指令的歷史使用型態、使用頻率、解碼難度、循環狀態資訊以及儲存在微op快取中指令的解碼時間。
實施例可包括儲存至少一指令之非暫態機器可讀取媒體,當至少一指令由處理器執行時導致處理器執行方法,該方法包含算術地判定要分配給微op快取之指令的類型;判定將所判定類型的指令分配給微op快取的位置;並將該指令分配給判定的位置。
在一些實施例中,以下一個或多個適用。在一些實施例中,方法可進一步包含導致智能分配和替換方塊,以從指令解碼器接收指令。在一些實施例中,判定的指令類型是複雜指令和循環流中的至少一個。在一些實施例中,方法可進一步包含使用分支預測單元(BPU)、指令快取標籤、微op標籤、指令快取、微op快取和解碼器以及微op佇列中的一或多個。在一些實施例中,微op快取可包含下一線預測。在一些實施例中,方法可進一步包含將MS流儲存在微op快取中。在一些實施例中,方法可進一步包含優先微操作。在一些實施例中,方法可進一步包含使用受害快取。在一些實施例中,使用微op快取包含使用實體微op快取和虛擬微op快取中的至少一者。在一些實施例中,方法可進一步包含競爭地共享實體微op快取和虛擬微op快取中的至少一者。在一些實施例中,判定分配給微op快取的哪種類型的指令可以至少部分地基於以下中的一或多:歷史使用型態、使用頻率、解碼難度和解碼時間。在一些實施例中,判定將所判定類型的指令分配給微op快取的位置可以基於以下中的一或多個:近期最少使用的指令資訊、指令的歷史使用型態、使用頻率、解碼難度、循環狀態資訊以及儲存在微op快取中指令的解碼時間。
實施例可包括系統,系統包括記憶體和處理器,該處理器組態以算術地判定要分配給微op快取之指令的類型;判定將所判定類型的指令分配給微op快取的位置;並將該指令分配給判定的位置。
在一些實施例中,以下一個或多個適用。在一些實施例中,處理器進一步組態以導致智能分配和替換方塊,以從指令解碼器接收指令。在一些實施例中,判定的指令類型是複雜指令和循環流中的至少一個。在一些實施例中,處理器可包含分支預測單元(BPU)、指令快取標籤、微op標籤、指令快取、微op快取和解碼器以及微op佇列中的一或多個。在一些實施例中,微op快取可包含下一線預測。在一些實施例中,處理器係組態以將MS流儲存在微op快取中。在一些實施例中,處理器係組態以優先微操作。在一些實施例中,處理器包含受害快取。在一些實施例中,微op快取包含實體微op快取和虛擬微op快取中的至少一者。在一些實施例中,實體微op快取和虛擬微op快取中的至少一者可競爭地共享。在一些實施例中,判定分配給微op快取的哪種類型的指令可以至少部分地基於以下中的一或多個:歷史使用型態、使用頻率、解碼難度和解碼時間。在一些實施例中,判定將所判定類型的指令分配給微op快取的位置可以基於以下中的一或多個:近期最少使用的指令資訊、指令的歷史使用型態、使用頻率、解碼難度、循環狀態資訊以及儲存在微op快取中指令的解碼時間。
移動消除
處理器核心可根據本發明實施例支持移動消除特徵。對於許多處理器,執行移動指令通常涉及將一個值從一暫存器移動到另一個暫存器,或者將立即移動到一暫存器。因為這種移動指令的頻率,如果有效地處理移動指令則處理器效能可能會增加。
大多數的指令對幾個來源運算元進行操作並產生結果。他們明確地或透過間接地命名從中讀取或寫入值的來源和目的地位置。名稱可以是邏輯(架構)暫存器或記憶體中的位置。
通常,處理器可用的實體暫存器的數量超過邏輯暫存器的數量,因此可以利用暫存器重新命名來提高效能。特別地,對於失序處理器、暫存器重新命名允許指令以它們的原始程式順序之外的順序執行。因此,對於許多失序處理器,移動指令被重新命名,以便在原始移動指令中指名的邏輯暫存器被重新命名為實體暫存器。
重新命名一邏輯暫存器涉及將邏輯暫存器映射到實體暫存器。這些映射可以儲存在暫存器別名表(RAT)中。RAT維護每個邏輯暫存器的最新映射。RAT由邏輯暫存器索引,並提供映射到相應的實體暫存器。
在圖29中所示的是暫存器重新命名和涉及三個結構RAT 2900、主動列表(AL)2902及自由表(FL)2904的相關性追蹤方案。對於每個由重新命名指令指明的邏輯暫存器,分配一個來自FL 2904的未使用的實體暫存器,並用這個新的映射更新RAT 2900。一旦在當前指令窗口中的指令不再由指令引用的實體暫存器,則實體暫存器可以被自由地再次使用(即,收回)。
基於圖29中描繪的資料結構,用於暫存器收回的一種方法是僅當指令從RAT 110中將其逐出(即,創建新映射至實體暫存器的指令)時才收回暫存器。結果,每當新的映射更新RAT 2900時,被逐出的舊映射被推入至AL 2902。(AL條目與指令窗口中的每個指令相關聯。)當指令撤回時,記錄在AL 2902中的舊映射的實體暫存器(如果有的話)被收回並被推入到FL 2904中。圖29描繪了這個循環。
對於許多指令,其中一個來源暫存器也被用作目的地暫存器。如果儲存在這來源暫存器中的值是隨後(按程式順序)指令需要的,則可以在隨後的指令之前插入暫存器移動指令,以便將來源暫存器中的來源運算元複製到另一個邏輯位置,從而可以由後續指令存取。
插入暫存器移動指令的另一個原因是在流程呼叫之前將參數值設置在適當的暫存器中。
結果,暫存器移動指令的數量可能相當重要。因此,可能需要使用有效的暫存器重新命名和收回方案來提供對暫存器移動指令的有效執行。
在圖1B中,暫存器重新命名功能單元被指示為重新命名/分配器單元152,以及實體暫存器被指示為實體暫存器檔案單元158。在圖3中,暫存器重新命名功能單元被指示為整數重新命名單元321和FP重新命名單元331,以及實體暫存器係由整數實體暫存器檔案323和FP暫存器檔案333指明。每個邏輯暫存器具有至實體暫存器的映射,其中映射係儲存在RAT 2900中作為條目。在RAT 2900中的條目由邏輯暫存器索引,並含有指向實體暫存器的指標。
在指令之重新命名期間,在RAT中的當前條目提供重新命名指令的來源邏輯暫存器所需的映射,並且為指令之目的地邏輯暫存器建立新的映射。這個新的映射驅除RAT中的舊映射,並且使用新的映射來更新RAT。
表1示出暫存器重新命名的一個範例。在表1中,第一行中提供了原始程式順序中的四個指令。重新命名指令在第二行中指出。在每個重新命名指令旁邊是指令重新命名之後RAT中的當前條目。最後一行提供由指令重新命名驅除的映射。為了簡單起見,僅考慮三個邏輯暫存器LRa、LRb和LRb。實體暫存器係由PRi表示,其中i為整數。表1中的第一條目在第一個列出的指令被重新命名之前,提供RAT之當前狀態。
例如,在表1中,第一指令LRa + 2 à LRa(指示立即2被添加到邏輯暫存器LRa中的值並且結果被儲存在邏輯暫存器LRa中)被重新命名為PR1 + 2 à PR2,其中實體暫存器PR2被假設是可用的。對於這個指令,創建一個新的映射LRa à PR2,並且舊的映射LRa à PR1從RAT中被驅除。
請注意,第二指令和第四指令在第一指令上存在真正的相關,第三指令與第二指令存在真正的相關。然而,暫存器重新命名已經去除了第二和第四指令之間的輸出相關性,以及第三和第四指令之間的反相關性,使得第二、第三和第四指令可以不按順序執行,只要執行順序遵循各種真正的相關。
重新命名指令被放置在指令窗口緩衝器中。指令窗口緩衝器中的條目含有重新命名指令之操作碼,以及稍後將敘述的其他欄位。對於這個實施例,指令的結果不儲存在指令窗口緩衝器中,而是駐留在實體暫存器檔案中。
指令窗口緩衝器允許以原始程式順序撤回指令。對於複雜指令集電腦(CISC)架構,當構成複雜指令的所有微指令一起撤回時,會撤回複雜的指令。指令窗口緩衝器係操作為循環緩衝器,其中第一指標指向下一個要撤回的指令,以及第二指標指向新已解碼指令的下一個可用條目。在模數N運算中完成指標的遞增,其中N是緩衝器中可用條目的數量。當指令撤回時,第一指標遞增。對於精簡指令集電腦(RISC)架構中的每一已解碼指令指標遞增一,以及對於CISC架構可以遞增一以上。
對於將其結果寫入記憶體位置的儲存指令,資料快取在指令撤回時被更新。對於將結果寫入邏輯暫存器的指令,由於不存在專門用作邏輯暫存器的暫存器,所以不需要在撤回時進行寫入。對於此種的指令,實體暫存器檔案具有當指令被重新命名時目的地邏輯暫存器映射到的實體暫存器中撤回指令的結果。
排程器將指令排程至用於執行的執行單元。排程功能可以例如藉由實施Tomasulo的演算法(或其變化)的保留站來實施。執行單元可以取決於要執行的指令(或微指令)從資料快取或實體暫存器檔案中檢索資料或將資料發送到資料快取或實體暫存器檔案。
在本發明的其他實施例中,包含在實體暫存器檔案和指令窗口緩衝器的資料結構中的資訊內容可以由不同的功能單元來實施。例如,重新排序緩衝器可以置換指令窗口緩衝器和實體暫存器檔案,從而將結果存儲在重新排序緩衝器中,此外,暫存器檔案中的暫存器專門作為邏輯暫存器。對於這種類型的實施例,在指令撤回時,指明寫入至邏輯暫存器之指令的結果被寫入至邏輯暫存器。
我們現在區分兩種類型的移動指令:暫存器到暫存器的移動及立即到暫存器的移動。在暫存器到暫存器的移動中,值從一暫存器、來源邏輯暫存器移動至另一暫存器、目的地邏輯暫存器。在立即到暫存器的移動中,立即值被移動到邏輯暫存器。
在本發明之實施例中,藉由將多於一個的邏輯暫存器映射到相同的實體暫存器來執行移動指令。暫存器到暫存器移動指令之執行係藉由將移動指令之目的地邏輯暫存器映射至由移動指令之來源邏輯暫存器映射的實體暫存器。
立即到暫存器的移動指令之執行可由存取值匹配快取來執行。值匹配快取中的條目藉由值進行索引,其中快取條目將值與儲存該值的實體暫存器相關聯。值匹配快取可具有比實體暫存器之數量更少的條目。如果在值匹配快取中存在命中,則移動指令之目的地邏輯暫存器被映射到由值匹配快取指示的實體暫存器。如果沒有命中,則移動執行按照先前技術架構執行,並且值匹配快取被更新。
實體暫存器檔案可以本身服務值匹配快取的功能,從而不需要值匹配快取。於此情況下,暫存器檔案不需額外的埠來執行平行標籤匹配,其中標籤為儲存在實體暫存器中的值。
如上所討論,暫存器到暫存器移動指令和立即到暫存器的移動指令(只要在後一類型的移動中存在值匹配快取中的命中)係藉由建立多個映射來執行,其中多於一個的邏輯暫存器被映射到相同的實體暫存器。實際上,這樣的移動指令在不再由執行單元執行的意義上被「消除」。而是在重新命名階段期間執行移動消除。這些指令保留在指令緩衝器窗口中準備被撤回。因為依賴於這樣的移動指令的指令直接取決於真實的生產者(相依被重定向),所以相依圖瓦解。對於實體暫存器的要求也可能降低,並且可能會有更少的寫入至暫存器檔案中。
成語消除機制類似地影響指令操作而不將它們傳遞給傳統的失序管線。成語是通用指令的實例,其被編碼以實施特定的效果,與明確的指令相比通常以更優化的方式。移動成語包括任何建構以將來源暫存器之內容放置到目的地暫存器中而沒有其他效果的指令,諸如R1 = ADD R0,#0。零成語係類似於通用指令,其被編碼已將暫存器設定為零,諸如R0 = XOR R0, R0。No-ops(NOPs)是指定義為對架構狀態沒有影響的指令,包括顯式NOP操作碼和NOP成語,諸如R0 = ADD R0,#0。
本發明之實施例可以期望藉由節省微操作重新命名/分配帶寬、提高效能、降低電力耗損及實施節電特徵、以及改善公平性、最小效能保證、通量、每一時脈指令(IPC)、每一單位時間的指令、服務品質、時間和/或記憶體效率以及將移動消除的覆蓋範圍擴展到更多的指令類型而改善現有移動消除和成語消除技術。
在實施例中,可以將指令流上的即時移動消除和成語消除操作的結果快取到解碼的微-op快取中,諸如微-op快取133或312。因此,可以避免必要條件之重新發現以及從管線中消除原始指令之操作的重覆。
消除的指令可以被儲存在微-op快取中的元資料取代,其達到與消除的指令相同的效果。當寫入微-op快取時,移動消除或成語消除的結果被轉換為元資料,使得微-op可以從微-op快取中移除,並且因此從所遞送的微-op流中優化。由於即時指令消除機制已經完成了識別機會的工作,因此微-op快取構建可被修改以掃描並移除受影響的微-op。元數據包括執行重新命名操作所需的資訊、正相關架構資訊,諸如事件邊界的存在和效能監視計數器的效果。例如,元數據可指示有多少指令被消除,和/或對於CISC架構,每個指令有多少個微-op被消除,和/或巨集指令結束發生在指令被消除之後。在消除微-op之前和/或之後,元資料可以被儲存在微-op的條目中的欄位中。
於一實施例中,移動消除可以被擴展為包括零擴展和符號擴展操作。例如,R0 = MOV.ZE R1可能會被移動消除,即使這不是一個簡單的動作。
於一實施例中,可以如圖30所示擴展RAT 3000以包括零成語、符號擴展和零擴展。RAT用以下三位元擴展:Z,當設定時,RAT條目的其餘部分被忽略並且邏輯暫存器被視為零;SE,當設定時,邏輯暫存器的值是儲存在條目中的實體暫存器檔案識別符(PRF ID)之符號擴展版本;以及ZE,當設定時,邏輯暫存器的值是儲存在條目中的PRF ID的零擴展版本。
然後,如圖31所示,在暫存器重新命名期間,Z、SE和ZE位元可以被讀取,並且通過讀取暫存器的微-op順著管線向下傳遞。這些位在ALU 3120的操作之前被解釋以創建正確的結果。在圖31中,左來源路徑在概念上被擴充以包括由多工器3110對Z、SE和ZE位元的解讀。基於這些位元,來源在旁通網路或實體暫存器檔案中未被修改的使用、替換為零、在符號擴展後使用或者在零擴展之後使用。
一些實施例之摘要
本發明之實施例可包括包含微操作快取的處理器,微操作快取包括複數個條目位置。至少一條目位置可包括第一欄位和第二欄位。第一欄位可被用以儲存第一微操作。第二欄位可被用以儲存元資料,以指示要從指令流解碼的微操作流消除第二微操作,其中第二微操作是移動指令之解碼的結果。
本發明的實施例可以包括處理器,處理器包含包括複數個條目之暫存器別名表。至少一條目可包括在其中儲存零指示器、符號擴展指示器和零擴展指示器中的一個的欄位。零指示器係用以指示來源運算元將由零替換。符號擴展指示器係用以指示來源運算元在符號擴展之後被使用。零擴展指示器係用以指示來源運算元在零擴展之後被使用。
虛擬暫存器重新命名
處理器核心可根據實施例支持虛擬暫存器重新命名特徵。在一些實施例中,256位元運算元ymmi可被儲存在128位元暫存器檔案中。256位元運算元之上半部分可被儲存在128位元暫存器檔案作為128位元運算元ymmihigh。256位元運算元之下半部分可藉由256位元運算元之虛擬地重新命名下半部分而被儲存在128位元暫存器檔案作為128位元運算元xmmi(ymmilow)。在一些實施例中,這個特徵有利地允許藉由重新命名指令的半部在較小的實體暫存器上實施更寬的ISA。在一些實施例中,較小實體暫存器的使用藉由提供更彈性、節電及更佳的效能而提升電腦系統,因為例如部分的指令可單獨地存取。在一些實施例中,其他大小的指令和暫存器可被使用(例如,具有256位元暫存器之512位元運算元)。在一些實施例中,運算元可被分割為較小片,例如三分之一、四分之一、八分之一、十六分之一。例如,虛擬暫存器重新命名特徵例如可以被用來保留512位元運算元,因為八個部分被儲存在64位元暫存器檔案中。
圖32為根據實施例示出可包括在處理器中的虛擬暫存器重新命名特徵的方塊圖。虛擬暫存器重新命名特徵可包含諸如256位元運算元ymmi之運算元3201。虛擬暫存器重新命名特徵可進一步包含128位元暫存器檔案3201。256位元運算元ymmi 3201可被儲存在128位元暫存器檔案3202中。256位元運算元3201之上半部分可被儲存在128位元暫存器檔案3202中作為128位元運算元ymmihigh。256位元運算元3201之下半部分可藉由256位元運算元之虛擬地重新命名下半部分而被儲存在128位元暫存器檔案3202作為128位元運算元xmmi(ymmilow)。
圖33為根據實施例示出可被處理器執行之用於虛擬暫存器重新命名特徵之方法的流程圖。方法包含將運算元之下半部分儲存在暫存器檔案,如3301中所示。方法進一步包含虛擬地重新命名運算元之上半部分,如3302中所示。方法進一步包含將虛擬重新命名之運算元的上半部分儲存在暫存器檔案中。在進一步實施例中,其他修改是可能的。例如,運算元之下半部分可以被虛擬地重新命名,而不是虛擬地重新命名上半部分。另外,操作可以以不同的順序執行。例如,非虛擬地重新命名的半部之儲存可以在虛擬重新命名和/或儲存虛擬地重新命名的半部之前或之後執行。另外,虛擬地重新命名的半部可以被虛擬地重新命名然後被儲存,反之亦然。
一些實施例之摘要
實施例可包括處理器,其組態以將運算元之第一半部儲存在暫存器檔案中;虛擬地重新命名運算元之第二半部;以及將運算元之虛擬地重新命名的第二半部儲存在暫存器檔案中。在一些實施例中,以下一個或多個適用。運算元可為256位元運算元。暫存器檔案可為128位元暫存器檔案。
實施例可包括方法,方法包含將運算元之第一半部儲存在暫存器檔案中;虛擬地重新命名運算元之第二半部;將運算元之虛擬地重新命名的第二半部儲存在暫存器檔案中。在一些實施例中,以下一個或多個適用。運算元可為256位元運算元。暫存器檔案可為128位元暫存器檔案。
實施例可包括儲存至少一指令之非暫態機器可讀取媒體,當至少一指令由處理器執行時導致處理器執行方法,該方法包含將運算元之第一半部儲存在暫存器檔案中;虛擬地重新命名運算元之第二半部;將運算元之虛擬地重新命名的第二半部儲存在暫存器檔案中。在一些實施例中,以下一個或多個適用。運算元可為256位元運算元。暫存器檔案可為128位元暫存器檔案。
實施例可包括系統,該系統包括記憶體和處理器,該處理器組態以將運算元之第一半部儲存在暫存器檔案中;虛擬地重新命名運算元之第二半部;以及將運算元之虛擬地重新命名的第二半部儲存在暫存器檔案中。在一些實施例中,以下一個或多個適用。運算元可為256位元運算元。暫存器檔案可為128位元暫存器檔案。
FMA分裂和融合
根據本發明實施例,處理器核心可支持乘加指令和操作的分裂和融合。在各個實施例中,處理器核心可支持具有加法、乘法、積和熔加(FMAD)和/或積和累加(FMAC)指令(其中FMAD和/或FMAC可能被稱為FMA)之任何一或多個的指令集,以在FP值上操作。這樣的核心可以包括加法器電路、乘法器電路和/或FMA電路之任何一或多個以響應於這些指令執行FP加法、乘法和/或FMA操作。可以提供單獨的指令和/或電路來對整數值(例如,FMAC)和FP值(例如,FMAD)進行操作,並且可以參照一個或另一個(整數或FP)來敘述實施例;然而,本發明之各種實施例可包括一或兩個。
本發明之實施例提供在指令發出/執行管線中不同階段之間和/或之內將FMA指令/操作轉換為成對的加法和乘法指令/操作(分裂)和/或將成對的加法和乘法指令/操作轉換成FMA指令/操作(融合)。這個特徵通常可被稱為FMA分裂/融合或動態FMA分裂/融合。
包括FMA分裂/融合之本發明的實施例可能由於許多原因而被期望,包括:提供在具有加法器和乘法器電路、但沒有FMA電路的核心中執行FMA指令和/或執行FMA操作的能力;提供使用FMA操作執行乘法指令和加法指令以提升通過一或多個核心資源之通量的能力;提供將FMA指令或操作動態地分裂為乘法操作和加法操作以減少循環中的關鍵路徑並增加每個循環之指令的能力;以及以期望效能、複雜性和電力的組合(例如,提高效能、降低功耗和實施省電特徵、以及提高公平性、最小效能保證、通量、每一時脈指令(IPC)、每一單位時間指令、服務品質、時間和/或記憶體效率等,這裡僅列出幾個的適用標準)提供逐步優化具有FMA能力的管線的可能性。
圖34為根據本發明實施例示出可被實施在支持積和熔加(FMA)分裂/融合特徵之處理器核心中的簽發/執行管線3400之的方塊圖。在圖34中,管線3400包括指令提取階段3401、指令解碼階段3402、重新命名/分配階段3403、排程階段3404、執行階段3405以及撤回/提交階段3406。提供管線3400是為了說明的目的,並且管線3400可以在本發明的各種實施例中以各種方式實施和/或修改。因此,管線3400之以下敘述可以參考在本說明書中敘述之其他附圖中所示之各種方塊。
例如,指令提取階段3401可包括使用指令提取電路(例如,138、400)識別(例如,使用下一個PC暫存器410)被提取之指令或指令的記憶體位置及從i-快取(例如,134、313、470、913)或其他記憶體位置提取指令;指令解碼階段3402可包括使用指令解碼電路(例如,140、314、500、914)解碼(例如,使用解碼器530)指令;重新命名/分配階段3403可包括使用重新命名/分配器電路(例如,152、331、931)重新命名暫存器運算元和/或分配用於暫存器重新命名之儲存位置和/或標籤;排程階段3404可包括使用排程器電路(例如,156、332、932)排程與指令之執行相關聯的操作和/或微-op(例如,來自解碼器140、314、530或614或微-op快取133、312、540或912);執行階段3405可包括使用執行電路(例如,162、334、335、770、780、934、935)執行與指令相關聯的操作和/或微-op(例如,來自解碼器140、314、530或614或微-op快取133、312、540或912);以及撤回/提交階段3406可包括使用撤回電路(例如,154、730、960)撤回指令和/或提交其結果至實體暫存器檔案(例如,158、333、750、933)或記憶體。在圖34中所示的每一階段可表示各個實施例中的一或多個階段和/或時脈週期。
圖34還顯示融合路徑3410和分離路徑3420,各代表通過管線3400之路徑的實施例。如下面使用說明性實施例敘述的,融合路徑3410可包括用以處理、執行和/或執行FMA指令、操作和/或微-op作為融合指令、操作和/或微-op的電路、結構和/或硬體。如下面使用說明性實施例敘述的,分離路徑3420可包括用以處理、執行和/或執行乘法和加法指令、操作和/或微-op作為單獨指令、操作和/或微-op的電路、結構和/或硬體。再者,分離路徑3420可包括用以處理、執行和/或執行FMA指令、操作和/或微-op作為乘法和加法指令、操作和/或微-op的電路、結構和/或硬體;以及融合路徑3410可包括用以處理、執行和/或執行乘法和加法指令、操作和/或微-op作為融合指令、操作和/或微-op的電路、結構和/或硬體。
因此,圖34概念性地示出可用於處理、執行和/或執行融合和/或分離乘法和加法指令、操作和微操作的一組核心資源。各個實施例可包括這些資源的各種子集以支持各種能力,這將在下面進一步敘述。而且,實施方式可以包括圖34中未示出之可以被提供和/或組態為實踐本發明之各種實施例的各種額外的資源。
圖34還顯示了FMA分裂/融合控制器3430,其可以表示包括一或多個控制電路和/或軟體可程式或硬體組態暫存器的可程式的、可組態的或硬線的控制器或控制結構,以產生控制訊號以引導通過和/或在融合路徑3410和/或分離路徑3420之間的指令、操作、微-op、運算元、值和/或其他資料。這些控制訊號可提供通過管線3400的一或多個路徑,其包括融合路徑3410和分離路徑3420中資源的組合。這些控制訊號可以藉由導致FMA指令、操作和/或微-op被處理、執行和/或響應於第一狀況執行為融合指令、操作和/或微-op及響應於第二狀況分開的乘法和加法指令、操作和/或微-op、以及藉由導致分開為乘法和加法指令、操作和/或微-op被處理、執行和/或響應於第三狀況執行為融合指令、操作和/或微-op及響應於第四狀況分開為乘法和加法指令、操作和/或微-op,而提供動態FMA分裂/融合。
例如,FMA指令可以由融合路徑3410中的硬體提取,並且控制器3430可以產生一或多個控制訊號以將指令路由至分離路徑3420中的硬體,以將指令解碼成兩個單獨的微-op、多個微-op和加法微-op。雖然在圖34中顯示為獨立方塊,在各個實施例中控制器3430可被集成或包括在處理器核心中另一控制結構之中或可以被完全地省略(例如,在其中核心只提供一個可能路徑的實施例中,下面敘述其範例)。
在圖34中,融合路徑3410包括提取器3411、解碼器3412、重新命名器3413、排程器3414、積和熔加器3415及重新排序緩衝器/撤回佇列(ROB/RQ)3416;以及分離路徑3420包括提取器3421、解碼器3422、重新命名器3423、排程器3424、乘法器3425A和加法器3425B及重新排序緩衝器/撤回佇列(ROB/RQ)3426。
提取器3411可包括用以提取FMA指令(例如,AVX(如下定義)指令,諸如VFMADD132PS、VFMADD213PS、VFMADD231PS、VFMADD132PD、VFMADD213PD、VFMADD231PD、VFMADD132SS、VFMADD213SS、VFMADD231SS、VFMADD132SD、VFMADD213SD、VFMADD231SD、VFMSUB132PS、VFMSUB213PS、VFMSUB231PS、VFMSUB132PD、VFMSUB213PD、VFMSUB231PD、VFMSUB132SS、VFMSUB213SS、VFMSUB231SS、VFMSUB132SD、VFMSUB213SD、VFMSUB231SD、VFNMADD132PS、VFNMADD213PS、VFNMADD231PS、VFNMADD132PD、VFNMADD213PD、VFNMADD231PD、VFNMADD132SS、VFNMADD213SS、VFNMADD231SS、VFNMADD132SD、VFNMADD213SD、VFNMADD231SD、VFNMSUB132PS、VFNMSUB213PS、VFNMSUB231PS、VFNMSUB132PD、VFNMSUB213PD、VFNMSUB231PD、VFNMSUB132SS、VFNMSUB213SS、VFNMSUB231SS、VFNMSUB132SD、VFNMSUB213SD、VFNMSUB231SD、
VFMADDSUB132PS、VFMADDSUB213PS、
VFMADDSUB231PS、VFMADDSUB132PD、
VFMADDSUB213PD、VFMADDSUB231PD、
VFMSUBADD132PS、VFMSUBADD213PS、
VFMSUBADD231PS、VFMSUBADD132PD、
VFMSUBADD213PD或VFMSUBADD231PD)的電路和/或結構。
由提取器3411提取的FMA指令可具有三個運算元。例如,VFMADD231PS指令可具有第一運算元(xmm1或ymm1)、第二運算元(xmm2或ymm2)及第三運算元(xmm3或ymm3),其中由這些運算元指明的xmm和ymm暫存器在下面敘述。這些暫存器可以保存純量或緊縮值,並且為了便於描述實施例,字母「d」可以用於指代由xmm1運算元指明的來源/目的地暫存器或暫存器的一部分和/或儲存或被儲存在這暫存器或這暫存器的一部分內的值;字母「a」可以用於指代由xmm2運算元指明的來源暫存器或暫存器的一部分和/或儲存或被存儲在該這暫存器或這暫存器的一部分內的值;以及字母「b」可以用來指代來源暫存器或由xmm3運算元指明的一部分和/或儲存或被存儲在該這暫存器或這暫存器的一部分內的值。因此,響應於VFMADD231PS指令而執行的操作的概念性表示(其中a、b和d也可以被稱為運算元)是d = a * b + d。再者,雖然本說明書將運算元稱為暫存器,但是實施例可以使用記憶體位置而不是用於任何或全部運算元的暫存器。
提取器3421可包括用以提取乘法指令(例如,諸如MULPS,MULPD,MULSS或MULSD的SSE(串流單指令多資料擴展)指令)和加法指令(例如,諸如ADDPS、ADDPD、ADDSS或ADDSD的SSE指令)的電路、結構和/或硬體,各具有兩個運算元。例如,MULPS指令可具有第一運算元(xmm1)和第二運算元(xmm2),以及ADDPS指令可具有第一運算元(xmm1)和第二運算元(xmm2),其中通常每一個MULPS xmm1、MULPS xmm2、ADDPS xmm1和ADDPS xmm2運算元可為不同暫存器。然而,在本發明之實施例中,提取器3421當判定ADDPS指令取決於MULPS指令(即,MULPS結果是至ADDPS的輸入)時,可以將MULPS指令與ADDPS指令配對。例如,與「a」為MULPS xmm1運算元和「b」作為MULPS xmm2運算元的,相應的乘法操作a = a * b,如果a接下來用作ADDPS xmm2運算元,「d」作為 ADDPS xmm1運算元,相應的加法操作是d = d + a,並且提取器3421可以配對MULPS和ADDPS指令。在實施例中,響應於來自控制器3430的控制訊號來執行配對和/或判定是否滿足配對條件。
提取器3411可以如箭頭3432A所示耦接或連接到解碼器3412和/或如箭頭3432B所示耦接或連接到解碼器3422。提取器3421可以如箭頭3432C所示耦接或連接到解碼器3412和/或如箭頭3432D所示耦接或連接到解碼器3422。在各種實施例中,耦接或連接和/或解碼器操作可以是靜態的(例如,硬線的)或動態的(例如,取決於來自3430的控制訊號)。
解碼器3412可包括用以將從提取器3411接收的FMA指令解碼為具有三個運算元(例如,d、a和b)之FMA微-op的電路、結構和/或硬體。相反或另外,解碼器3412可包括用以將從提取器3421接收的成對的乘法和加法指令解碼為具有三個運算元(例如,d、a和b)之FMA微-op的電路、結構和/或硬體。
解碼器3422可包括用以將從提取器3411接收的FMA指令解碼為具有兩個運算元之乘法微-op和具有兩個運算元之加法微-op的電路、結構和/或硬體。相反或另外,解碼器3422可包括用以將來自提取器3421的成對的乘法和加法指令解碼為具有兩個運算元之乘法微-op和具有兩個運算元之加法微-op的電路、結構和/或硬體。例如,乘法微-op可以表示為t=a*b,以及加法微-op表示為d = d + t,其中可以引入新的運算元「t」以用作乘法操作的目的地以及用於加法操作的來源。
解碼器3412可以如箭頭3433A所示耦接或連接到重新命名器3413和/或如箭頭3433B所示耦接或連接到重新命名器3423。解碼器3422可以如箭頭3433C所示耦接或連接到重新命名器3413和/或如箭頭3433D所示耦接或連接到重新命名器3423。在各種實施例中,耦接或連接和/或重新命名器操作可以是靜態的(例如,硬線的)或動態的(例如,取決於來自3430的控制訊號)。
重新命名器3413和/或3423可包括用以重新命名暫存器運算元和/或用以分配用於暫存器重新命名之儲存位置和/或標籤(例如,容納失序處理)的電路、結構和/或硬體(諸如,重新排序緩衝器)。在實施例中,為了消除暫存器衝突(例如對於a、b、t和/或d),重新命名器3413可以重新命名用於FMA操作的運算元(例如,a’、b’和/或d’);和/或重新命名器3423可以將運算元重新命名用於乘法操作(例如,作為a’和/或b’)以及用於加法操作(例如,作為t’和/或d’)。
重新命名器3413可以如箭頭3434A所示耦接或連接到排程器3414和/或如箭頭3434B所示耦接或連接到排程器3424。重新命名器3423可以如箭頭3434C所示耦接或連接到排程器3414和/或如箭頭3434D所示耦接或連接到排程器3424。在各種實施例中,耦接或連接和/或排程器操作可以是靜態的(例如,硬線的)或動態的(例如,取決於來自3430的控制訊號)。
排程器3414和/或3424可包括用以排程用於執行之操作和/或微-op的電路、結構和/或硬體(諸如,保留站)。在實施例中,排程器3414可在用於FP執行電路的保留站中排程要與運算元a、b和d一起執行的FMA操作,和/或排程器3424可在用於FP執行電路的保留站中排程要與運算元a和b一起執行的乘法器操作及要與運算元t和d一起執行的加法操作。
排程器3414可以如箭頭3435A所示耦接或連接到積和熔加器3415和/或如箭頭3435B所示耦接或連接到乘法器3425A或乘法器3425A和加法器3425B兩者。排程器3424可以如箭頭3434C所示耦接或連接到積和熔加器3415和/或如箭頭3434D所示耦接或連接到乘法器3425A或乘法器3425A和加法器3425B兩者。在各種實施例中,耦接或連接和/或排程器操作可以是靜態的(例如,硬線的)或動態的(例如,取決於來自3430的控制訊號)。
融合乘法/加法器3415、乘法器3425A和加法器3425B可包括分別執行積和熔加操作、乘法操作和加法操作的電路、結構和/或硬體。於一實施例中,乘法器3425A可耦接至保留站以接收用於加法操作的兩個輸入(例如,a和b)以及耦接至加法器3425B以提供其作為用於加法操作的兩個輸入之一(例如,t和d)的輸出(例如,t)。在這實施例中,專用的積和熔加器之精確度(例如,根據IEEE標準754)可藉由將未被佔用的乘法結果發送至加法器來獲得。於另一實施例中,乘法器3425A可耦接至保留站以接收用於產生輸出(例如,t)之乘法操作的兩個輸入(例如,a和b),以及加法器3425A可耦接到保留站以接收用於加法操作的兩個輸入(例如,t和d)。在這實施例中,專用的積和熔加器之精確度可以藉由增加用於中間結果(例如,t)的內部儲存位置的寬度或者就由使用微碼輔助或陷阱來提供特殊處置來獲得。
積和熔加器3415可以如箭頭3436A所示耦接或連接到ROB/RQ 3416和/或如箭頭3436B所示耦接或連接到ROB/RQ 3426。加法器3425B可以如箭頭3436C所示耦接或連接至ROB/RQ 3416,和/或加法器3425B或乘法器3425A和加法器3425B兩者可以如箭頭3436D所示耦接或連接至ROB/RQ 3426。在各種實施例中,耦接或連接和/或排程器操作可以是靜態的(例如,硬線的)或動態的(例如,取決於來自3430的控制訊號)。
ROB/RQ 3416和/或ROB/RQ 3426可包括用以撤回指令和/或提交結果的電路、結構和/或硬體(諸如,重新排序緩衝器和/或撤回佇列)。於一實施例中,ROB/RQ 3416可撤回FMA指令並提交其結果(例如,xmm1)。於一實施例中,ROB/RQ 3426可撤回乘法指令和加碼指令並提交它們的結果(分別為MULPS xmm1、ADDPS xmm1)。於一實施例中,ROB/RQ 3416可提交已經藉由融合單獨乘法和單獨加法指令而建立的FMA操作的結果,只要單獨乘法操作的結果是不期望的(例如,根據指令集架構期望的)。於一實施例中,作為FMA指令的結果,ROB/RQ 3426可提交已經藉由FMA指令之分裂而建立的加法操作的結果。在根據本發明實施例的處理器核心中,加法指令的結果將與相應的FMA指令的結果相同。
如圖34所示,實施例可在簽發/執行管線的各種階段提供FMA分裂或融合。於一實施例中,在解碼階段3402的分裂可在沒有積和熔加器提供在核心中執行之積和熔加指令。於一實施例中,在解碼階段3402、重新命名/分配階段3403、排程階段3404、執行階段3405和/或撤回階段3406的融合可以透過硬體資源提供更大的通量(一個指令/操作/微-op而不是兩個指令/操作/微-op)。在實施例中,在重新命名/分配階段3403的分裂可以藉由將運算元的數量限制為兩個而不是三個來提供降低重新命名硬體中的複雜性。在實施例中,在重新命名/分配階段3403和/或排程階段3404的融合可以提供在重新命名、重新排序和/或排程儲存中使用較少的條目,以允許更深的失序執行窗口和/或更大的指令階層平行的發現。於一實施例中,在排程階段3404的分裂可藉由將失序喚醒來源之數量限制為每個條目兩個而不是三個,以提供降低的硬體複雜度。於一實施例中,在排程階段3404和/或執行階段3405的分裂可藉由允許FMA操作的不同部分在不同時間執行以將關鍵路徑限制為最慢部分的關鍵路徑而不是這兩個部分的總和來提供縮短的潛時。於實施例中,在執行階段3405的融合可藉由使用專用的積和熔加器,提供增加的效能、增加的精確度和/或降低的電力。
圖35為根據本發明實施例示出可被處理器執行之用於FMA分裂/融合之方法的流程圖。在圖35之方法3500的方塊3510中,指令提取電路(例如,138、400)可從i-快取(例如,134、313、470、913)或其他記憶體位置提取指令。例如,指令可以是具有第一運算元(「d」)、第二運算元(「a」)和第三運算元(「b」)的FMA指令的實例,諸如VFMADD231PS,處理器藉由執行FMA操作(例如,d = a * b + d)來對其進行響應。
在方塊3520中,為用以執行FMA指令之分裂的硬線、組態或編程的指令解碼電路或解碼器(例如,140、314、500、914)可將指令解碼成多個單獨的微-op、乘法微-op和加法微-op。解碼器可從FMA指令和/或從另一微-op選擇特定運算元,將其中的一或多個分配給一或多個單獨的微-op,和/或為一或多個單獨的微-op建立新的運算元。例如,解碼器可選擇FMA指令的「a」和「b」運算元作為乘法微-op的來源運算元,並建立「t」運算元作為乘法微-op的指定運算元,處理器藉由執行乘法操作t = a * b來響應;並且解碼器可以選擇FMA指令的「d」運算元和乘法微-op的「t」運算元作為加法微-op的來源運算元,並選擇FMA指令的「d」運算元作為加法微-op的目的地運算元,處理器將藉由執行加法操作d = d * t來響應。
在方塊3530中,暫存器重新命名電路(例如,152、331、931)可重新命名任何用於暫存器重新命名(例如,在重新排序緩衝器中)的運算元、分配儲存位置和/或標籤,和/或實施作為輸入至加法微-op的乘法微-op(例如,「t」)之輸出的分配。
在方塊3540中,排程器電路(例如,156、332、932)可排程用於執行的單獨微-op,例如在用於FP單元的保留站中。於一實施例中,從指令(例如,從FMA指令解碼的乘法和加法微-op)之相同實例解碼的多個單獨微-op可以按照指明的順序在用於調度的保留站中排程(例如,只有在調度和/或完成多個微-op之後才可以排程加法微-op用於調度)。
在方塊3550中,執行電路(例如,162、334、770、934)可執行單獨微-op中的一者。例如,FP乘法器334A、334B、770A、770B、934A或934B可執行乘法微 -op。
在方塊3552中,執行電路(例如,162、335、780、935)可執行其他的單獨微-op。例如,FP加法器335A、335B、780A、780B、935A或935B可執行加法微-op。
在方塊3560中,撤回電路(例如,154、730、960)可撤回指令和/或提交其結果至實體暫存器檔案(例如,158、333、750、933)或記憶體。於實施例中,方塊3560可包括從指令解碼的單獨微-op中的唯一一個的撤回。例如,FMA指令可以藉由從重新排序緩衝器中撤回相應的加法微-op並提交其結果(例如,d)而被撤回和/或提交其結果。
一些實施例之摘要
本發明之實施例可包括處理器,處理器包含複數個配置在管線中的電路。複數個電路可包括用以解碼積和熔加指令為至少兩單獨的微操作之解碼器。複數個電路還可以包括用以在兩個單獨的微操作中的第一個操作上的乘法器以及在兩個分開的微操作中的第二個操作上的加法器。
具體處理器架構
圖36為根據本發明實施例之處理器的方塊圖,該處理器3600可具有多於一個核心、可具有整合記憶體控制器及可具有整合圖形。圖36的實線框例示說明一處理器3600具有單一核心3602A、一系統代理3610、一或多個匯流排控制器單元3616之一集合,而選擇性地增加的虛線框例示說明另一個處理器3600具有多個核心3602A-N、於系統代理單元3610中之一或多個積體記憶體控制器單元3614、及特殊用途邏輯3608。
因此,處理器3600的不同實施可包括:1)一CPU具有特殊用途邏輯3608係為積體圖形和/或科學(通量)邏輯(可包括一或多個核心),及核心3602A-N係為一或多個通用核心(例如通用有序核心、通用失序核心、二者的組合);2)一共處理器具有核心3602A-N係為意圖主要用於圖形和/或科學(通量)的大量通用核心;及3)一共處理器具有核心3602A-N係為大量通用有序核心。因此,處理器3600可為用於伺服器環境中的通用處理器、伺服器處理器或處理元件、共處理器(例如安全性共處理器)高通量MIC處理器、GPGPU、加速器(諸如例如,圖形加速器或數位訊號處理(DSP)單元、密碼加速器、固定功能加速器、機器學習加速器、網路加速器或電腦視覺加速器)、現場可程式閘陣列或任何其他處理器或處理裝置。處理器可在一或多個晶片上實施。處理器3600可為一或多個基板的一部分,和/或可使用多項處理技術諸如BiCMOS、CMOS、或NMOS而實施在一或多個基板上。
記憶體階層包括在核心內部的一或多個快取階層、一或多個共享快取單元3606之集合、及耦接至積體記憶體控制器單元3614之集合的外部記憶體(圖中未顯示)。共享快取單元3606之集合可包括一或多個中階快取,諸如階層2(L2)、階層3(L3)、階層4(L4)、或其他階層快取、最末階層快取(LLC)、和/或其組合。雖然於一個實施例中,一環式為基的互連單元3612互連積體圖形邏輯3608(積體圖形邏輯3608是本文中的一個範例並且在本文中也被稱為專用邏輯)、共享快取單元3606之集合、及系統代理單元3610/積體記憶體控制器單元3614,但其他實施例可使用任何數目的眾所周知技術以互連此等單元。於一個實施例中,在一或多個快取單元3606與核心3602A-N間維持同調。
在一些實施例中,核心3602A-N中之一或多者可為多執行緒。系統代理3610包括協調與操作核心3602A-N的該等組件。系統代理單元3610可包括例如電力控制單元(PCU)及一顯示單元。電力控制單元(PCU)可為或包括調節核心3602A-N及積體圖形邏輯3608之電力狀態所需邏輯及組件。顯示單元係用以驅動一或多個外部連接的顯示器。
核心3602A-N就架構指令集而言可為同質或異質;換言之,核心3602A-N中之二或多者可能可執行相同指令集,而其他者只能執行該指令集之一子集或一不同指令集。
圖37為根據本發明實施例之可包括在處理器中的說明性中央處理單元(CPU)複合體的方塊圖。於實施例中,L3快取為8 MB16向快取,通過四核心模組(稱為CPU複合體或CCX)分裂為每一個核心提供L3快取的2 MB「片」。然而,實施在CCX中的L3快取片,使得L3為共享快取。多個CCX可被包括在單個處理器中(例如,兩個CCX形成16 MB L3快取)。每個CCX上的8 MB快取是獨立的,因此它們可以作為每個具有適當的掛鉤插入其他L3快取之四核心模組的最後一階層快取,以判定是否需要資料(L3快取設計中涉及的協定允許每個核心存取每個其他核心的L3快取)。因此,這些L1、L2和L3快取為同調性快取,其中CCX內和CCX之中的L3快取片藉由快取同調性互連連接(也稱為快取同調性結構)連接。
圖38為根據本發明實施例之可包括在處理器中的說明性快取階層的方塊圖。在圖38中,快取階層3800包括L1 i-快取3810A及L1 d-快取3810B(統稱為L1快取3810)、L2指令和資料快取3820以及階層3(L3)指令和資料快取3830。於實施例中,兩個L1快取3810及L2快取3820是私用/本地回寫快取,而L3快取3830是受害快取。於實施例中,L1 i-快取3810A為64 KB4向快取、L1 d-快取3810B為32 KB8向快取、L2快取3820為512 KB8向快取以及階層3(L3)快取3830為8 MB16向快取。
記憶體組織特徵
根據本發明實施例的處理器核心、處理器及系統可包括有關記憶體組織和使用的各種特徵。下面使用非限制性範例分開敘述數個此種特徵,但是實施例可以包括此種特徵的任何組合。
快取線歸零
一些實施例包括指令,指令的執行導致在記憶體位址處零的快取線大小的寫入。這樣的指令可以被稱為快取線歸零指令、CLZERO指令、CLZEROING指令、快取線初始化指令、CLINIT指令等。於一實施例中,快取線歸零指令是由諸如核心190和/或核心5300的核心執行的巨集指令。具體而言,解碼器140和/或解碼器5314將被實施為將這樣的巨集指令解碼成一或多個相對較低階層的指令或控制訊號(例如,一或多個微指令、微操作(微-op)、微碼入口點、解碼的指令或控制訊號),其分別使記憶體存取單元164和/或位址產生單元325/載入儲存單元340執行操作。
快取線歸零指令的優點是以更快速和更判定方式歸零快取線,因為它不需要使用所有權請求(RFO)操作,或者至少不需要資料回復或返回。RFO操作是快取同調性協定中的操作,其將讀取和無效廣播(意圖寫入記憶體位址的讀取操作)組合,並且因此使得所有其他同調性快取將這樣的快取線的狀態設定為「無效」的快取同調性協定狀態。例如,RFO操作通常由試圖寫入處於MESI協定的共享(S)或無效(I)狀態的快取線的處理器發出。MESI協定使用「已修改」、「排除」、「共享」和「無效」的快取同調性協定狀態。相比之下,快取線歸零指令的實施方式不要求讀取線並將其返回給發出的代理器,因為它將資料歸零;實際上,在一些實施例中,發行代理器不必擁有資料的所有權。
不同實施例可實施快取線歸零指令以不同方式指示記憶體位址。例如,快取線歸零指令可被實施以明確地(例如,經由立即、一或多個欄位)、間接地(例如,藉由指明其中儲存位址資訊的一或多個暫存器)和/或隱含地(例如,一或多個指定的暫存器)指示位址資訊。記憶體位址資訊可為用以產生記憶體位址之記憶體位址或可為用在與其他資訊(例如來自片段暫存器的資訊等)組合的資訊。雖然在一些實施例中,記憶體位址在快取線邊界上對齊,但是替代的實施例還可以支持在快取線邊界之間的記憶體位址,並將其視為指示這些邊界之間的快取線。位址資訊可以表示絕對記憶體位址資訊或相對記憶體位址資訊,其可以指示相對於基底記憶體位址或其他記憶體位置的記憶體位置。另外,可以可選地使用不同的間接記憶體定址模式。作為一個具體範例,指令可以隱含地指示用於儲存相對記憶體位址資訊的暫存器(例如,通用暫存器),該相對記憶體位址資訊可以與儲存在另一個隱式暫存器(例如,碼、資料或擴展的片段暫存器)中的額外的記憶體位址資訊組合,以產生用於識別記憶體位址的最終記憶體位址。這只是一個範例。其他形式的位址資訊也是可能的。
不同的實施例可以實施不同大小的快取線(例如,32位元組、64位元組)和/或給定實施例可以實施多於一個快取線大小。例如,實施例可支持快取線歸零指令,其為:1)針對指明快取線大小實施(並且因此不需要指定快取線大小);2)被實施為使用當前快取大小,其中不同類型的核心具有不同的快取線大小(例如,當前快取大小可以經由暫存器中的值來指示);或3)被實施為具有指示快取線大小的欄位。在一些實施例中,該指令允許指示一個或多個快取線之大小參數(即,快取線大小的倍數)的指示。在一些實施例中,附加地或替代地,允許指示不綁定快取線大小之指示的大小參數的指示的ZERO指令(例如,僅指示位元組之a #),因為這使得軟體不知道快取線大小(如果大小不是快取線大小的倍數(例如,在位元組和位元組之#中指明為112,即使快取線大小為64位元組),實施例也可以歸零到快取線或發出只是在最後一線中的剩餘資料的RFO)。
在一些實施例中,快取線歸零指令是原子的。因此,整個快取線將被全部儲存,或者不儲存全部快取線,而不僅僅是一部分(即完成原子性保證)。原子性還可以保證由快取線歸零指令寫入的零不會與其他儲存儲存的資料交錯。原子性可能與其他存取有關,因此任何這樣的存取都將觀察完全地儲存的所有資料,或者不儲存所儲存的資料,而不僅僅是一部分。原子性也可以是關於電源故障、系統崩潰、重新啟動或其他這樣的事件,使得即使面對這樣的事件,所有的零都被儲存,或者不儲存零,而不僅僅是一部分。這種原子操作有各種可能的使用。這種使用的一個範例係原子地更新在資料庫中的資料件。這種使用的另一個範例係原子地更新在多處理環境中的共享資料件。這樣使用的又一個範例是原子地將資料儲存到位置以替換鎖、旗號,用以更新共享的變數,用以同步、用以協調等等。預期此種原子儲存操作有其他用途,並且對於本領域技術人員來說是顯而易見的,並且具有本發明的益處。
示例性記憶體階層
圖39為根據本發明實施例示出其中可實施快取線歸零指令的記憶體階層的方塊圖。所示的記憶體階層可以結合各種處理器核心、核心群集、CCX、處理器、電腦架構等來實施。藉由具體實施例,將結合圖3、8、38和37的核心/CCX,參照圖39的記憶體階層來敘述快取歸零指令的實施方式。這是為了說明的目的,並且快取歸零指令可以在不同的記憶體階層中和/或與不同的核心、核心群集等結合來實施。
圖39示出同調代理器3900和同調代理器3901,以及用「...」表示的其他同調代理器和使用虛線框之同調代理器3902的可能性。在圖39中的記憶體階層包括同調性快取3904A、互連3920及下游記憶體3930。不同實施例可實施不同數量的快取和快取階層作為同調性快取3904A的一部分。同調代理器和同調性快取是快取同調性域的一部分,在快取同調性域中,快取同調性使用快取同調性協議(例如,使用「修改」、「排除」、「共享」和「無效」的快取同調性協議狀態之MESI協定;MESIF協定增加了「轉發」的快取同調性協定狀態;MOESI協定反而增加了「擁有」的快取同調性協定狀態;以及其他這樣的快取同調性協定)維持。
同調代理器3900透過一或多個快取連續地在快取階層之較低階層耦接到互連3920。快取階層包括在快取階層之最高階層並耦接至同調代理器3900的快取、在快取階層之最低階層並耦接至互連3920的快取(例如,L3快取3915)(因此,這個快取被稱為最低階層快取或末級快取(LLC))以及處於耦接至在最高階層之快取中的一者和最低階層之快取中的一者的快取階層之中間階層的零或更多快取(例如,L2快取3910)(例如,圖39示出耦接至L1快取3905的同調代理器3900,其耦接到L2快取3910,其耦接到L3快取3915,其耦接到互連3920)。
同調代理器3901透過快取之一或多個階層耦接到互連。圖39示出耦接至選擇性L1快取3906同調代理器3901,L1快取3906耦接到選擇性L2快取3911,其耦接至L3快取3915。此外,圖3902還示出直接地耦接至互連3920之選擇性同調代理器3902(即,不具有任何同調性快取)。
除了或替代包括透過快取之連續階層被耦接至互連3920之同調代理器的連接,某些實施例實施其他連接以允許直接或更直接的通訊(例如,將同調代理器3900直接耦接到互連3920,將同調代理器3900直接耦接到L2快取3910,將L1快取3905直接耦接到互連3920,和/或將L2快取3910直接耦接到互連3920,如分別由虛線3935、3936、3937 和3938所示)。
互連3920耦接至下游記憶體3930(例如,透過一組一或多個記憶體控制器(未顯示))。下游記憶體3930為處於比同調性快取3904更低階層的記憶體階層,並且可包括一或多個類型的記憶體和/或記憶體階層(例如,揮發性記憶體和/或非揮發性記憶體、主記憶體、記憶體映射的輸入/輸出(MMIO)、記憶體側快取、兩階層記憶體(2LM)、DRAM、快閃、相變記憶體、3D Xpoint
tm)。
互連3920(也稱為快取同調性互連、結構、互連、非核心的一部分、互連網路、互連單元)包括用以發出窺探至同調性快取3904並從中收到任何回應的窺探控制器3925。窺探控制器3925包括發出窺探的窺探產生器3926,並且在一些實施例中,窺探回應器3927接收任何回應。此外,在某些實施例中,窺探控制器3925包括寫入產生器3929(以有效地產生全部為零的快取線大小的寫入)和/或寫入轉換器QOS28(以有效地將響應於窺探而接收的資料的快取線轉換為全零)。另外,雖然在一個實施例中互連3920被示出為位於L3快取3915和下游記憶體3930之間,但是替代實施例可以在另一位置(例如,L2快取與L3快取之間)實施互連3920(例如,在L2快取和L3快取之間,具有與下游記憶體3930中的一組或一或多個記憶體控制器遠離互連3920(例如,作為本地代理器)或在L3快取3915和下游記憶體3930之間的一組或一或多個記憶體控制器)。互連3920(例如,作為窺探控制器3925的一部分)可包括其他項目,諸如窺探過濾器(未示出)。
不同實施例可以用不同數量的同調代理器作為通用核心(也稱為中央處理單元(CPU))來實施。例如,在一些實施例中,同調代理器3900為核心,同調代理器391為核心,有零或多個附加同調代理器是核心,並且有零或多個附加同調代理器是其他類型的代理器(例如,用於伺服器環境中的通用處理器、伺服器處理器或處理元件、共處理器(例如,安全共處理器)、高通量MIC處理器、GPGPU、加速器(諸如,例如圖形加速器或數位訊號處理(DSP)單元、密碼加速器、固定功能加速器、機器學習加速器、網路加速器或電腦視覺加速器)、現場可程式閘陣列或任何其他處理器或處理裝置,僅舉幾個例子)。
在一些實施例中,同調代理器和同調性快取3904按照圖38和37進行實施。例如,在CCX中,有為核心的4個同調代理器,每個核心有專用/本地L1快取,每個核心有專用/本地L2快取以及共享L3快取;在單一處理器中可以有多個CCX耦接在一起。L1和L2快取是回寫快取,L2快取是包含快取,L3快取是受害快取。此外,L3快取3915在模組(CCX)內多個同調代理器(例如,在4個核心上每個核心2MB,共8MB)之間以及可選地在一或多個這樣的模組(例如,兩個各具有8MB的CCX,以形成16MB的L3快取)之間被分割成片。圖39示出這具有同調代理器3900之L3快取片3916和同調代理器3901之L3快取片3917。互連3920可例如表示:1)指是CCX內的互連;2)在CCX內和之間的互連;3)在不同的CCX內獨立互連,以及CCX之間的互連。不同的實施例可不同地實施互連3920,包括環、多個環、點對點鏈路、共享總線等中的一或多個。在實施家用代理器和快取代理器的實施例中,互連3920被認為是 包括快取代理器。
圖39中的一或多個或所有同調代理器可以被實施以執行快取線歸零指令(參見可能的快取線歸零指令發出代理器3903被識別為同調代理器3900、3901和3902中的任何一個)。當前執行快取線歸零指令的同調代理器是「發出代理器」、「發出同調代理器」或「第一代理器」,以及它的快取被稱為發出代理器的Lx快取(其中x可以是1、2或3;以及其中L3快取是用片實施,它是發出代理器的L3快取片)。在下面的討論中,這將是同調代理器3900。不是當前執行快取線歸零指令的同調代理器稱為「同調但不發出代理器」、「非發出代理器」、「非發出同調代理器」或「第二代理器」(如上所討論,可能存在多個第二代理器,但為了簡單起見,下面將對其進行討論),以及它的快取被稱為第二代理器的Lx快取(其中x可以是1、2或3;以及其中L3快取是用片實施,它是第二代理器的L3快取片)。在下面的討論中,這將是同調代理器391。
示例性快取架構
圖40為根據本發明實施例示出在實施快取線歸零指令之處理器中之快取的方塊圖。圖40包括Lx快取4050,其中x指示在快取階層中的階層(例如,1、2、3)。Lx快取4050包括用以控制快取之操作的快取控制器4051,快取之操作包括偵測命中/遺失、導致寫入/讀取快取線、接收窺探(並且因此,在一些實施例中,快取控制器4051包括窺探介面,以及在一些實施例中,窺探控制器4043)等。快取控制器包括具有條目4060(其包括有時被稱為「標籤狀態」)的標籤陣列4055,以及Lx快取4050包括具有相應的快取線4070的資料陣列4056。每個條目4060包括標籤欄位4061,其用以儲存用於判定給定的位址命中還是遺失相應的快取線4070中的一者之資料的標籤。此外,每個條目4060包括一組一或多個屬性欄位4062(有時稱為「標籤狀態」),以儲存在相應的一個快取線4070中儲存資料的屬性。屬性欄位4062包括用以儲存指示儲存在快取線4070之相應的一者中的資料之當前快取同調性協定狀態的值之快取同調性協定狀態欄位4065。屬性欄位4062可選擇性地包括其他欄位,諸如零線欄位4066、毒害欄位4067、錯誤校正碼欄位(未顯示)。雖然圖40示出在標籤陣列中的屬性欄位4062,但是替代實施例可以在單獨的狀態陣列(未示出)中實施這些欄位。於一實施例中,給定的快取線可在毒害欄位4067中具有多個毒害指示(例如,一個用於64位元組快取線的兩個32位元組塊)。雖然圖40示出單獨的毒害欄位4067,但是替代實施例可以將毒性指示編碼到另一個欄位(例如,錯誤校正碼(ECC)欄位或快取同調性協定狀態欄位)中。
響應於快取中的命中(例如,基於標籤欄位4061中的標籤),快取控制器4051包括響應於快取同調性協定狀態欄位4056中的快取同調性協定狀態的電路(例如,快取同調性協定狀態電路或其他電路)(例如,相應於其標籤匹配的標籤欄位4061的快取同調性協定狀態欄位4056);該響應在實施例之間並且基於各種因素而不同(例如,快取查找是否響應於寫入命令、讀取命令、窺探(以及可能的窺探類型)而被啟動)。例如,在一些實施例中,響應是判定快取同調性協定狀態是否是響應於如下所詳細討論的寫入命令和/或某些類型的窺探而准許快取授權以修改快取線(例如,「修改」或「排除」狀態)的一者。在一些實施例中,快取控制器4051包括:1)命中 - 遺失電路(未示出)以響應於命令(例如,寫入命令、讀取命令、窺探命令)來判定在快取中是否存在命中或遺失;2)耦接至窺探介面的窺探控制器4043(未示出),用以接收窺探並將回應訊息傳輸給窺探;和3)快取線讀取電路(未示出)和快取線寫入電路(未示出)。
組態快取線以指示全零的技術
雖然一些實施例被實施以組態快取線,以藉由用零寫入快取線中的資料來指示全零(第一技術),替代實施例可組態快取線以使用其他技術來指示全零(下面敘述的第二至第四技術是範例)。此種其他技術可以由於各種原因來實施,諸如快取線的大小通常大於核心內的一些匯流排/結構的寬度(例如,一或多個中間緩衝器,諸如載入佇列810、儲存佇列820、寫入組合緩衝器(WCB)860)和/或利用零寫入快取線中的資料會消耗電力並增加快取的複雜度。
第二種技術是以快取線當前駐留的快取方式使快取線無效,並將零之快取線寫入快取的不同方式。
第三和第四技術涉及改變標籤狀態而不是資料陣列4056中的資料,並且這些可以在一或多個快取階層中和/或在互連中使用。第三種技術是為每個快取線(例如,在屬性欄位4062中)實施欄位(稱為零線欄位4066),並且該欄位中的值(其可以是一位元)表示是否:1)應將快取線視為具有儲存在該快取線中的資料的值;或2)快取線應被視為全零(無論儲存在該快取線中的實際資料如何)。在此種實施例中,快取線的讀取(包括逐出)要不是將零線欄位4066的值傳遞給支持這種零線欄位的另一個結構,不然就將資料轉換為零。資料在由讀取上的其中一個同調代理器(例如,同調代理器3900)使用之前也將被轉換。雖然在一些此種實施例中,資料在被寫入到下游記憶體QO30之前也被轉換,但是替代實施例還在下游記憶體3930或由記憶體控制器管理的替代記憶體結構中實施零線欄位。
第四種技術類似於第三種技術,但不是實施單獨的欄位,在現有屬性欄位中實施新的編碼(例如,快取同調性協定狀態欄位領域或者校正碼(ECC)徵候群領域中的新編碼)。
某些實施例可以實施快取,以作為組態快取線以指示全零的一部分、將該快取線的快取同調性協定狀態修改為「修改的」或「擁有的」(或者在使用快取同調性狀態欄位以指示零線,然後到零線狀態)以及導致任何毒性指示被忽略(資料不再中毒)或被清除。因此,快取線歸零指令的另一個優點是它可以用來一致地清除有毒的線。
在相關的說明中,強制快取線歸零的機制可能僅在某些快取階層中實施(例如L1快取、L2快取和L3快取的子集,諸如僅在L1快取中而不在L2或L3快取中),並且缺少這種機制的給定快取階層可以被實施為藉由將快取線發送到具有該機制的不同快取階層來組態快取線以指示全零(例如,更高的快取階層(例如,L1快取)被實施以組態快取線以藉由將資料逐出到可以進行歸零的較低的快取階層(例如,L2快取)來指示全零;較低的快取階層(例如,L2高速緩存)被實施以藉由將快取線轉發到能夠歸零的較高階層快取(例如,L1快取)來組態快取線以指示全零)。如下面更詳細描述的,不同的實施例可以響應於寫入和/或窺探來實施快取線的歸零。在響應於寫入和窺探兩者而實施快取線之歸零的實施例中,給定的快取階層可以被實施為僅響應於寫入或窺探(但不是兩者)中的一個來進行歸零,並且可以將資料推送/逐出或者轉發到可以響應於寫入和窺探中的另一個進行歸零的較低或較高快取階層。
觸發快取以組態快取線來指示全零的技術
不管在快取中實施以組態快取線來指示全零(參見上文)的技術,觸發快取來組態快取線以指示全零可響應於從互連發送到快取之一者的訊息、藉由發出代理器自行發出、或由發出代理器響應於從互連發送的訊息。
在發出代理(單獨或響應於來自互連的訊息)觸發快取以組態快取線來指示全零的情況下,不同的實施例可以使用不同的技術,包括在快取線比發出代理器之本質支持的資料寬度(例如,32位元、64位元、128位元、256位元、512位元、1024位元)更寬(例如32位元組、64元位元組)的情況下,將快取線歸零指令實施為原子的技術。本質支持的資料寬度可以在不同的實施例中以不同的方式表現出來。在一些實施例中,本質支持的資料寬度可以表示最寬暫存器組的位元寬度和/或將藉由指令操作的運算元的寬度。在一些實施例中,本質支持的資料寬度可以表示算術和/或邏輯執行單元的寬度(例如,當它具有藉由指令指示的運算元的相同寬度時,運算元的多個部分不會順序地通過它(雙泵或更多))。在一些實施例中,本質支持的資料寬度可以表示匯流排(例如,載入管線)的寬度。可以原子地儲存的資料量可以由發出代理器的一或多個內部結構(例如,匯流排、中間緩衝器)的寬度來限制。
因此,在發出代理器(獨立地或響應於來自互連的訊息)觸發(快取組態快取線以指示全零)的一些實施例中,發出代理器:1)在諸如一或多個中間緩衝器(例如,儲存佇列820和寫入組合緩衝器(WCB)860)的其他結構中實施零線欄位;或2)實施一個新的命令(例如,微-op、控制信號、微指令),它不承載零之快取線,但是指示零之快取線大小的寫入,可以通過中間緩衝器(例如,儲存佇列820和寫入組合緩衝器(WCB)860)。如此一來,在快取線大小比發出代理器之本質支持的資料寬度更寬(例如,32位元組、64位元組)的情況下,可以在這些更窄的結構中表示零之快取線。當零線(如零線欄位或新的命令/微-op所指示的)被發送到記憶體階層中較低且不支持零線欄位或新的命令時,執行至零線的轉換(例如,當零線被發送到資料快取840(其可以執行上述技術中的另一個)、從寫入組合緩衝器8600發送、由L3快取發送至互連或由互連(例如,經由記憶體控制器)發送至下游記憶體時,可以執行至零線的轉換)。
當作另一範例,在其中發出代理器(單獨或響應於來自互連的訊息)進行觸發(快取組態快取線以指示全零)的一些實施例中,發出代理器順序地將較小的塊(例如,一次16位元組、一次32位元組)寫入中間緩衝器(例如,儲存佇列820、寫入組合緩衝器(WCB)860、單獨的階段緩衝器(未顯示)),該中間緩衝器不響應窺探(或者在塊正在寫入時不響應窺探),並且響應於已經被寫入足夠的塊以等同於快取線的大小(而不是更早)被逐出,使得塊被同時寫入;由此原子地實施快取線歸零指令。
其他態樣
不同的實施例可以實施具有不同順序(例如,弱排序、強排序、比弱排序更弱的排序、比強排序更強的排序)的快取線歸零指令。在弱排序的快取線歸零指令的情況下,實施例可以實施該指令以使其自動逐出。
快取線歸零指令可以被實施為使得其不會在該指令撤回之前將快取線組態為指示全零。在這樣的實施例中,存在一種機制來確保快取線零指令已經完成並且快取線被組態為指示所有讀取器的全零(例如,圍欄指令、鎖定指令、架構序列化指令、為GO的較年輕的儲存(強排序的)、為GO的較年輕的載入(比強排序更嚴格)的一或多個)。
快取線歸零指令可以像分頁表走查(包括虛擬表(例如,擴展分頁表(EPT)(其中A和D位元將被更新)的目的一樣被視為儲存,並且如果不可寫入則會出錯。
在使用窺探之前,首先嘗試寫入發出代理器之快取的實施例
圖41為示出在使用窺探之前首先嘗試寫入發出代理器之快取之本發明之實施例的流程圖。如上所討論,第一代理器3900係用以解碼和執行指令,指令的執行是導致在記憶體位址處零之快取線大小的寫入(方塊4110)。響應於指令之解碼和執行,第一代理器用以發出寫入命令至耦接至第一代理器(例如,L1快取3905)的同調性快取中的一者以在記憶體位址處(在這種情況下,第一代理器也被稱為發出代理器)啟動零之快取線大小的寫入(方塊4112)。在一些實施例中,第一代理器包括的解碼單元(例如,解碼器140、解碼器314),解碼單元用以解碼指令執行將在記憶體位址處導致零之快取線大小的寫入之指令。第一代理器還包括執行單元(例如,記憶體存取單元164、載入儲存單元340),其響應於解碼單元發出命令以啟動在記憶體位址處的零之快取線大小的寫入。
當發出該命令的快取(例如,L1快取3905)的快取線命中時(方塊4114),並且快取線的快取同調性協定狀態是授予快取修改快取線的權限而不廣播到其他快取(例如,「修改」或「排除」)(方塊4116),則該快取將組態快取線以指示全零並且抑制窺探(方塊4118)。不同的實施例可以實施快取以組態快取線來指示全零,如前面標題為「組態快取線以指示全零的技術」的部分中所描述的。在一些實施例中,如果存在命令發出到的快取(例如,L1快取3905)的快取線的命中(方塊4114),則快取線對於一或多個其他快取同調性協定狀態(例如「擁有」、「轉發」或「共享」中的一或多個)仍為歸零。對於完成這個的任何狀態,控制傳遞到方塊4119;對於未完成控制的任何狀態,傳遞到方塊4120。因此,在控制傳遞到方塊4119以進行未「修改」、「排除」和「無效」的任何狀態的實施例中,則不執行方塊4120;反之亦然。然而,可以實施實施例,其中取決於狀態,控制傳遞到方塊4119或4120。在方塊4119,快取係用以組態快取線以指示全零;從方塊4119,控制傳遞到方塊4122(在下文中更詳細敘述),其中快取將向互連(取決於實施例,至下一個快取階層或至互連以發出窺探(例如,寫入更新窺探(也稱為寫入零窺探或寫入和零窺探)、寫入無效窺探(也稱為無效甚至如果修改的窺探)或指示無效和回寫的窺探(也被稱為回寫和無效窺探))。傳遞到下一個快取階層或互連的寫入命令可能將指示具有非「修改」或「排除」狀態的線被組態為指示全零。這個修改的寫入命令的一個用法是,如果「共享」線被組態為全零,並且其狀態被改變為「修改」或「擁有」,則寫入更新窺探將不會被發出。在這種情況下,互連可以發出不同的窺探類型(例如,寫入無效的窺探或回寫和無效的窺探)。在方塊4120,快取將快取線的快取同調性協定狀態改變為「無效」,並且控制傳遞到方塊4122。如果存在快取遺失(方塊4114),則控制傳遞到方塊4122。
藉由關於轉發或擁有狀態的具體範例,當發出代理器的快取具有處於轉發或擁有狀態的快取線時,快取線可以處於處於共享狀態的其他快取中。如此一來,如果在方塊4119中將快取線歸零,則可以發送窺探以使處於共享狀態的那些其他快取線無效,或者組態以指示所有處於共享狀態的那些其他快取線全零。或者,處於轉發狀態或擁有狀態的快取線可以被無效(或清除逐出和無效)(方塊4120),並建立一個新的線,該線被修改及歸零或被擁有及歸零。被歸零的新線可以被插入(填充)到在轉發或擁有狀態中找到的快取線的相同快取中(例如,以該快取的不同集合或方式),或者可以被插入到 不同快取中(例如,如果在L2快取或L3快取中發現快取線處於轉發或擁有狀態,則快取線可以被無效,並且在L1快取中建立的修改及歸零或擁有及歸零的新線)。
在方塊4122,快取將向互連發出寫入命令。該寫入命令可以被直接發出至互連3920,或者可以被發送到第一代理器之快取的一或多個較低階層。舉例而言:1)在一些實施例中,寫入命令被直接發出到互連(即,在快取階層之較低階層跳過任何快取 - 例如,從L1快取3905直接至互連3920,跳過任何較低階層的快取(例如,L2快取OQA10、L3快取OQA15)- 在這種情況下,寫入命令被用於第一代理器的資料L1快取,而窺探(下面敘述的)被用於第一代理器之指令L1快取、L2快取和L3快取(更具體地說,如果實施L3快取片3916)以及用於第二代理器的快取);2)在一些實施例中,寫入命令被發出到L2快取3910,其重複上述,並且如果它沒有組態快取線以指示全零,則直接向互連3920發出寫入命令 - 在這種情況下,寫入命令被用於第一代理器之L1快取和L2快取,而窺探(下一個敘述)被用於第一代理器的L3快取(更具體地說,如果實施L3快取片3916)和第二代理器的快取;3)在一些實施例中,寫入命令被發出到重複上述的L2快取3910,並且如果它沒有組態快取線以指示全零,則將寫入命令發出到L3快取3915(更具體地說,如果實施L3快取片3916),並且如果它沒有組態快取線以指示全零,則將寫入命令發出到互連3920-在這種情況下,寫入命令係用於第一代理器的快取,而窺探(下一個敘述)用於第二代理器的快取。在某些實施例中,發出寫入命令的快取包括快取控制器,該快取控制器被實施以響應於上面討論的寫入命令來判定是否存在快取命中、組態快取線以指示全零(不同的實施例可實施快取以組態快取線來指示全零,如前面在標題為「組態快取線以指示全零的技術」中所敘述的),並且在快取遺失時向互連發出寫入命令。在一具體範例中,響應於快取線命中,在處於修改、排除和/或擁有的(發出代理器之)L2快取3910中,L2快取被實施以藉由轉發任務到L1快取組態快取線以指示全零。
響應於寫入命令,互連3920之窺探控制器3925被實施以啟動窺探流程(方塊4190)以定位可儲存快取線的任何快取。為了實施窺探流程4190,窺探控制器3925被實施(例如,經由窺探產生器3926)以對可能儲存快取線的同調性快取的那些發出窺探(方塊4126)(換句話說,如果存在命中,則必須判定它們的同調性快取)。在一些實施例中,可能儲存快取線的同調性快取是那些同調性快取:1)寫入命令先前未被發出;以及2)在互連3920中實施窺探濾波器(未顯示)的實施例中,窺探濾波器指示快取可能含有該線(即,窺探濾波器不抑制窺探)。這可包括將第二代理器3901耦接至互連3920的快取之一或多個階層(例如,L1快取3906、L2快取3911、L3快取3915);以及將第一代理器3900(發出代理器)耦接至互連3920的任何快取(例如,L2快取3910、L3快取3915),其沒有接收到寫入命令(即,被跳過的快取),並且在互連3920中實施窺探濾波器(未顯示)的實施例中,窺探濾波器指示可能含有線(即,窺探濾波器不壓制窺探)。在其中窺探被發出至將第一代理器耦接至互連的一或多個快取的實施例中,每個此種窺探也可被稱為後窺探(back snoop)。作為窺探流程4190的一部分,可以實施不同的實施例以取決於情況發出不同類型的窺探,或者僅發出一種類型的窺探。存在多種可能的窺探類型可用(例如,寫入更新窺探(也被稱為寫入零窺探或寫入和零窺探)、寫入無效窺探(也被稱為無效甚至如果修改的窺探)、指示無效和回寫的窺探(也稱為回寫和無效窺探)、寫出任何命中但不將資料發送回第一代理器並且不會導致資料從下游記憶體讀取之快取線的窺探、先前技術的窺探(例如,RFO)),如本文稍後更詳細討論的。具體來說,在使用寫入更新窺探的情況下,窺探控制器3925還被實施為判定快取線大小的寫入是否響應於作為窺探流程4190的一部分的寫入更新窺探之一(示為虛線方塊4128)而被執行;如果是,則該流程完成(方塊4130);否則,控制傳遞到方塊4132。當其他類型的窺探被用於窺探流程4190時,方塊4128被虛線化,因為它不被使用。
寫入命令和窺探操作以處理存在含有要在一或多個快取中歸零之資料的快取線的情況。響應於寫入命令(如上所述),零之快取線大小的寫入可能已由快取之一執行,或者在發出寫入更新窺探的實施例中,如下面更詳細敘述的,響應於寫入更新窺探之一的快取之一。如果零之快取線大小的寫入沒有由任何快取執行時,接著在方塊4132,互連3920(例如,經由窺探控制器3925之寫入產生器3929)或第一代理器(發出代理器)響應於來自互連3920之訊息導致在一或多個同調性快取(例如,L1快取3905、L2快取3910、L3快取3915)中的快取線被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在記憶體位址處導致至下游記憶體的快取線大小之零之寫入。如上面以及下面更詳細地指出,在某些實施例中,窺探控制器3925包括負責該動作的窺探回應器3927(以及可選的是寫入轉換器3928和寫入產生器3929)。在某些實施例中,第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)在該動作中執行其滾動(如果有的話)。在替代實施例中,互連3920指示記憶體控制器向下游記憶體寫入零。
如上在標題「觸發快取以組態快取線以指示全零」之部分中所述,不同實施例可不同地實施發出代理器以導致快取的觸發而指示全零(以確保快取線比發出代理器之本質支持的資料寬度更寬(例如,32位元組、64位元組)的原子性、在其他結構(例如中間緩衝器)中實施零線欄位、實施可以通過中間緩衝器的新命令(其不承載零之快取線,但指示零之快取線大小的寫入)、或實施在不響應窺探(或者在塊正在寫入時不響應窺探)並響應足夠的塊被寫入至等於快取線的大小(而不是更早)而被驅逐使得塊被同時寫入之中間緩衝器(例如,儲存佇列8200、寫入組合緩衝器(WCB)8600、單獨的階段緩衝器(未示出))中零之較小塊的連續寫入(例如,一次16字位元組、一次32位元組))。
依賴於同調性快取之窺探的實施例
圖42為示出依賴同調性快取之窺探(它們不首先嘗試寫入發出代理器之快取)之本發明之實施例的流程圖。如上所討論,第一代理器3900係用以解碼和執行指令,指令的執行是導致在記憶體位址處零之快取線大小的寫入(方塊4210)。響應於指令之解碼和執行,第一代理器用以向互連3920發出命令,以在記憶體位址處(在這種情況下,第一代理器也被稱為發出代理器)啟動零之快取線大小的寫入(方塊4212)。在一些實施例中,第一代理器包括解碼單元(例如,解碼器140、解碼器314),解碼單元用以解碼指令執行將在記憶體位址處導致零之快取線大小的寫入之指令。第一代理器還包括執行單元(例如,記憶體存取單元164、載入儲存單元340),其響應於解碼單元發出命令以啟動在記憶體位址處的零之快取線大小的寫入。
來自第一代理器/發出代理器3900之命令被發出至互連3920(方塊4212),以及響應於該命令,互連3920被實施以啟動窺探流程(方塊4290)以定位可能儲存快取線的任何快取。為了實施窺探流程4290,互連3920(例如,經由窺探控制器3925)被實施(例如,經由窺探產生器3926)以對可能儲存快取線的同調性快取的那些發出窺探(方塊4226)(換句話說,如果存在命中,則必須判定它們的同調性快取)。在一些實施例中,可能儲存快取線的同調性快取是那些同調性快取:1)在互連3920中沒有實施窺探濾波器(未示出)的實施例中的任何同調性快取(例如,L1快取3905、L2快取3910、L1快取3906、L2快取3911、L3快取3915);或2)在實施這種窺探濾波器的實施例中,互連3920中的窺探濾波器(未示出)指示快取的同調性快取可能含有該線(即,窺探濾波器不抑制窺探)。在其中窺探被發出至將第一代理器耦接至互連的一或多個快取的實施例中,每個此種窺探也可被稱為後窺探(back snoop)。像之前一樣,作為窺探流程4290的一部分,不同的實施例以取決於情況發出不同類型的窺探,或者僅發出一種類型的窺探。存在多種可能的窺探類型可用(例如,寫入更新窺探(也被稱為寫入零窺探或寫入和零窺探)、寫入無效窺探(也被稱為無效甚至如果修改的窺探)、指示無效和回寫的窺探(也稱為回寫和無效窺探)、寫出任何命中但不將資料發送回第一代理器並且不會導致資料從下游記憶體讀取之快取線的窺探、先前技術的窺探(例如,RFO),如本文稍後更詳細討論的。具體來說,在使用寫入更新窺探的情況下,窺探控制器3925還被實施為判定快取線大小的寫入是否響應於作為窺探流程4290的一部分的寫入更新窺探之一的快取之一(示為虛線方塊4228)而被執行;如果是,則該流程完成(方塊4230);否則,控制傳遞到方塊4232。當其他類型的窺探被用於窺探流程4290時,方塊4228被虛線化,因為它不被使用。
在替代實施例中,方塊4212被以第一代理器替換,第一代理器被實施以向可能儲存快取線的同調性快取的那些發出窺探命令(在這種情況下,方塊4226不存在,並且流程在使用寫入更新窺探的實施例中傳遞到方塊4228,否則傳遞到方塊4232)。
窺探操作以處理存在含有要在一或多個快取中歸零之資料的快取線的情況。在發出寫入更新窺探的實施例中,零之快取線大小的寫入可能已經由一或多個快取執行。如果零之快取線大小的寫入沒有由任何快取執行時,接著在方塊4232,第一代理器本身、互連3920(例如,經由寫入產生器3929)或第一代理器響應於來自互連3920之訊息導致在一或多個快取(例如,L1快取3905、L2快取3910、L3快取3915)中的快取線被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在位址處導致至下游記憶體的快取線大小之零之寫入。如上面以及下面更詳細地指出,在某些實施例中,窺探控制器3925包括在該動作中執行其角色(如果有的話)的窺探回應器3927(以及可選的是寫入轉換器3928和寫入產生器3929)。在某些實施例中,第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)在該動作中執行其角色(如果有的話)。在替代實施例中,互連3920指示記憶體控制器向下游記憶體寫入零。
如上在標題「觸發快取以組態快取線以指示全零」之部分中所述,不同實施例可不同地實施發出代理器以導致快取的觸發而指示全零(以確保快取線比發出代理器之本質支持的資料寬度更寬(例如,32位元組、64位元組)的原子性、在其他結構(例如中間緩衝器)中實施零線欄位、實施可以通過中間緩衝器的新命令(其不承載零之快取線,但指示零之快取線大小的寫入)、或實施在不響應窺探(或者在塊正在寫入時不響應窺探)並響應足夠的塊被寫入至等於快取線的大小(而不是更早)而被驅逐使得塊被同時寫入之中間緩衝器(例如,儲存佇列8200、寫入組合緩衝器(WCB)8600、單獨的階段緩衝器(未示出))中之較小塊的連續寫入(例如,一次16字位元組、一次32位元組))。
不同類型的窺探
如前所述,為窺探流程4190或窺探流程4290的一部分,不同的實施例以取決於情況發出不同類型的窺探,或者僅發出一種類型的窺探。存在多種可能的窺探類型可用(例如,寫入更新窺探(也被稱為寫入零窺探或寫入和零窺探)、寫入無效窺探、指示無效和回寫的窺探(也稱為無效甚至如果修改的窺探)、寫出任何命中但不將資料發送回第一代理器並且不會導致資料從下游記憶體讀取之快取線的窺探、先前技術的窺探(例如,RFO))。如前所指示,這些不同類型之任一者的窺探可以與關於圖41和42討論的任何上述實施例結合使用。現在將敘述關於不同類型窺探的更多細節。
寫入更新窺探:圖43為示出使用寫入更新窺探(也稱為寫入零窺探或寫入和零窺探)以實施窺探流程4190或4290之本發明之實施例的流程圖。在圖41和42的上下文中,流程分別從方塊4124或方塊4212傳遞到方塊4326,方塊4326使用寫入更新窺探執行方塊4126或4226。互連3920(例如,經由窺探控制器3925之窺探產生器3926)被實施以對可能儲存快取線的同調性快取的那些發出寫入更新窺探(方塊4326)(換句話說,如果存在命中,則必須判定它們的同調性快取)。當存在發出寫入更新窺探的快取(例如,第一代理器的L1快取、L2快取和/或L3快取片以及第二代理器之L1快取、L2快取和L3快取片)之快取線的命中時(方塊4340),則該快取係用以:1)如果命中快取線的快取同調性協定狀態為「修改」(以及在一些實施例中,「轉發」、「排除」、「擁有」和/或「共享」中的一或多個)(方塊4342),組態快取線以指示全零(方塊4344)(不同實施例可實施快取以組態快取線以指示全零,如前面標題為「組態快取線以指示全零的技術」的部分中所描述的那樣)並發出指示歸零之回應訊息至互連3920(在支持處於共享狀態的命中快取線的歸零的一些實施例中,回應訊息還分辨快取線的狀態-諸如修改和零或擁有和零對上共享和零(後者指示原始狀態是「共享」,並且快取已經組態快取線以指示全零並且其狀態仍然是「共享」);在支持處於共享狀態的快取線的歸零的替代實施例中,當原始狀態為「共享」並且快取已組態快取線以指示全零及其狀態仍在「共享」時,發送指示不歸零的回應訊息(如在方塊4350中))(4346);以及2)否則,組態該快取線的快取同調性協定狀態為「無效」(方塊4328),並向互連發出指示不歸零的回應訊息(方塊4350)。當不存在發出寫入更新窺探的快取之快取線的命中時(方塊4340),則該快取向互連發出指示不歸零的回應訊息(方塊4350)。因此,在一些實施例中,可以實施同調性快取,使得以任何修改、擁有、排除和轉發狀態命中快取線的寫入命令或寫入和零窺探將導致快取組態快取線被歸零(以及改變其狀態為修改(修改和歸零)或擁有(擁有和歸零))。在替代實施例中,這樣的快取可以僅為修改、擁有、排除和轉發狀態的子集這樣做;在這種情況下,它會導致處於修改、擁有、排除和轉發狀態並且沒有被改變為修改快取線和歸零或擁有和歸零的任何命中響應於寫入和零的窺探被改變為無效狀態。如此一來,在一些實施例中,全部的同調性快取或同調性快取之子集被實施為(針對所有修改、排除、擁有、或轉發狀態或其子集)響應於在快取中命中的寫入命令或寫入和更新(又名,寫入和零)窺探導致快取線被歸零(以及其狀態改變為修改(修改和歸零)或擁有(擁有和歸零))。支持處於共享狀態並將其保持在共享狀態的命中快取線的歸零實施例僅當在其他快取中命中的任何修改、排除、擁有或轉發線改變為擁有和歸零或無效時才這樣做,而不是改變為修改和歸零。在某些實施例中,實施以響應寫入更新窺探的快取包括快取控制器4051(例如,經由窺探控制器4053),其響應於寫入更新窺探以判定是否存在快取命中、組態命中的快取線以指示全零(如前面在標題「組態快取線以指示全零的技術」之部分中所述,不同實施例可實施快取以組態快取線以指示全零)以及發出回應訊息至互連3920。
在發出寫入更新窺探之後,互連3920(例如,經由窺探控制器3925的窺探回應器3927)被實施為追蹤相應的回應訊息的接收(方塊4352)(例如,於一實施例中,窺探產生器3926向窺探回應器3927指示資訊以便追蹤對相應的回應訊息的接收)。取決於是否實施圖41或42的實施例,控制從方塊4352傳遞到方塊4128或方塊4228。零之快取線大小的寫入可能響應於寫入更新窺探中的一者由快取之一者執行(然而,在實施處於「共享」狀態的快取線之歸零的實施例中並且沒有任何回應訊息反映其中一快取線是擁有和零或者修改和零,那麼零之快取線寫入響應於寫入更新窺探之一不被認為是由其中一個快取執行的)。如果零之快取線大小的寫入沒有被任何快取執行(方塊4128和方塊4228)(所有的回應訊息指示不歸零;或在實現了處於「共享」狀態的快取線之歸零的實施例中,並且沒有任何回應訊息反映其中一快取線是擁有和零或者修改和零),則執行方塊4132或方塊4232--即,互連3920(例如,經由窺探控制器QO25之寫入產生器3929)或第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)響應於來自互連3920之訊息導致在快取(例如,L1快取、L2快取、L3快取)之一者中的快取線被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在位址處導致至下游記憶體的快取線大小之零之寫入。
如上所述,與使用RFO操作相反,使用寫入更新窺探是有利的,因為它不需要讀取線並將其返回給發布代理器,並且確實需要資料的所有權給予發布代理器(當滿足4340和4342的條件時,寫入更新窺探導致快取線在另一同調代理器之快取中歸零)。因此,用寫入更新窺探之實施例的優點為它們可直接地更新另一代理器之本地快取(例如,第二代理器/非發出代理器)。例如,這允許相對較快的通訊 - 諸如更新另一個代理器正在旋轉的變量。
如前所指示,寫入更新窺探可以結合圖41和42的實施例使用。舉例而言,將敘述在圖41的實施例之一者中實施寫入更新窺探的一個具體實施例。在這具體實施例中,發出代理器3900首先嘗試寫入發出代理器3900之L1快取3905;並且如果需要窺探,則互連3920向如上所述的可儲存快取線的同調性快取的那些發出寫入更新窺探。因此,L1快取被實施以響應如上所述的寫入命令;L1快取、L2快取和L3快取(更具體地,如果實施L3快取片)響應如上所述的寫入更新窺探而實施;互連3920被實施以響應於如上所述的寫入命令(例如,經由窺探控制器3925之窺探產生器3926)以及響應於回應訊息(例如,經由窺探控制器3925之窺探回應器3927)發出寫入更新窺探;以及互連3920(例如,經由窺探控制器QO25之寫入產生器3929)或第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)響應於來自互連之訊息被實施以導致在快取(例如,第一代理器之L1快取3905、L2快取3910、或L3快取3915(更具體地,如果實施L3快取片3916))之一者中的快取線被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在記憶體位址處導致至下游記憶體的快取線大小之零之寫入。
寫入無效窺探:圖44為示出使用寫入無效窺探(也稱為「無效甚至如果修改的窺探」)以實施窺探流程4190或4290之本發明之實施例的流程圖。在圖41和42的上下文中,流程分別從方塊4124或方塊4212傳遞到方塊4426,方塊4426使用寫入無效窺探執行方塊4126或4226。互連3920(例如,經由窺探控制器3925之窺探產生器3926)被實施以對可能儲存快取線的同調性快取的那些發出寫入無效窺探(方塊4426)(換句話說,如果存在命中,則必須判定它們的同調性快取)。當存在對於發出寫入無效窺探之快取的快取線(例如,第一代理器之L1快取、L2快取和/或L3快取片以及第二代理器之L1快取、L2快取和/或L3快取片)的命中時(方塊4440),那麼該快取將使快取同調性協定狀態指示「無效」(即使在當前狀態下是「修改」)(方塊4448);快取不需要組態快取線以指示全零(如前面標題「組態快取線以指示全零的技術」部分所述,不同實施例可實施快取以組態快取線以指示全零)或如果無效在固定時間內完成,則向互連發出回應訊息(如果無效不在固定時間內完成,則一實施例具有窺探快取發送指示窺探已完成的回應訊息)。當不存在發出寫入無效窺探的快取之快取線的命中時(4440),則於一實施例中該快取不做任何事(方塊4430)。
此外,在圖41和42的上下文中,流程分別從方塊4124或方塊4212傳遞到方塊4132或4232(當使用寫入無效窺探時不實施方塊4128和4228)。在方塊4132或4232,第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)就其本身,互連3920(例如,經由窺探控制器QO25之寫入產生器3929)或第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)響應於來自互連之訊息導致在快取(例如,第一代理器之L1快取3905、L2快取3910、L3快取3915(更具體地,如果實施L3快取片3916))之一者中的快取線被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在位址處導致至下游記憶體的快取線大小之零之寫入。
如上所述,與使用RFO操作相反,使用寫入無效窺探是有利的,因為它不要求快取線被讀取並返回到發出代理器,因為發出代理器將資料歸零。
如前所指示,寫入無效窺探可以結合圖41和42的實施例使用。舉例而言,將敘述在圖41的實施例之一者中實施寫入無效窺探的一個具體實施例。在這具體實施例中,發出代理器3900首先嘗試寫入發出代理器3900之L1快取3905;並且如果需要窺探,則互連3920向如上所述的可儲存快取線的同調性快取的那些發出寫入無效窺探。因此,L1快取被實施以響應如上所述的寫入命令;L1快取、L2快取和L3快取(更具體地,如果實施L3快取片)響應如上所述的寫入無效的窺探而實施;互連3920被實施以響應於寫入命令發出寫入無效窺探;以及第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)就其本身,互連3920(例如,經由窺探控制器QO25之寫入產生器3929)或第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)響應於來自互連之訊息被實施以導致在快取(例如,第一代理器之L1快取3905、L2快取3910、L3快取3915(更具體地,如果實施L3快取片3916))之一者中的快取線被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在記憶體位址處導致至下游記憶體的快取線大小之零之寫入。
窺探無效和回寫:圖45為示出使用窺探無效和回寫(也稱為「回寫和無效窺探」)以實施窺探流程4190或4290之本發明之實施例的流程圖。在圖41和42的上下文中,流程分別從方塊4124或方塊4212傳遞到方塊4526,方塊4526使用回寫和無效窺探(無效並回寫的窺探)執行方塊4126或4226。互連3920(例如,經由窺探控制器3925之窺探產生器3926)被實施以對可能儲存快取線的同調性快取的那些發出回寫和無效窺探(方塊4526)(換句話說,如果存在命中,則必須判定它們的同調性快取)。當存在發出此種窺探的快取(例如,第一代理器的L1快取、L2快取和/或L3快取片以及第二代理器之L1快取、L2快取和L3快取片)之快取線的命中時(方塊4540),則該快取係用以:1)如果快取線之快取同調性協定狀態為「修改」(方塊4542)(以及在一些實施例中,「清除逐出」),將快取線回寫至互連3920(方塊4544);且無論2)使快取線的快取同調性協定狀態指示「無效」(方塊4548)(快取不需要組態快取線以指示全零)。當不存在發出窺探的快取之快取線的命中時(方塊4540),則於一實施例中該快取不做任何事(控制傳遞到方塊4552)。在某些實施例中,被實施為響應此種窺探的快取包括快取控制器4051,響應於此種窺探,判定是否存在快取命中、回寫修改的快取線(例如,命中和具有快取同調性協定狀態的那些)到互連3920以及將快取線的快取同調性協定狀態修改為「無效」。
在發出窺探之後,互連3920(例如,經由窺探控制器3925的窺探回應器3927)被實施為追蹤任何相應的回應訊息的接收(方塊4552)(例如,於一實施例中,窺探產生器3926向窺探回應器3927指示資訊以便追蹤對任何相應的回應訊息的接收)。如果回應訊息與資料一起被接收(方塊4560)(即,來自修改的快取線的資料),則互連3920可選擇地實施(例如,經由窺探控制器3925之寫入轉換器3928)以有效地將資料歸零(方塊4562)。否則,互連3920可選地實施(例如,經由窺探控制器3925的寫入產生器3929)以有效地建立零線(方塊4564)。取決於圖41或42的實施例是否被實施,控制從方塊4562和4564傳遞到方塊4132或方塊4232(當使用無效和回寫的窺探時,不實施方塊4128和4228)。在方塊4132或4232,第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)就其本身,互連3920(例如,經由窺探控制器QO25)或第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)響應於來自互連3920之訊息導致在快取(例如,L1快取、L2快取、L3快取)之一者中的快取線被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在位址處導致至下游記憶體的快取線大小之零之寫入。於一實施例中,不實施方塊4560和4562,以及永遠執行方塊4564。於另一實施例中,不執行方塊4562,回寫資料被發送至第一代理器,以及第一代理器歸零該資料。於另一實施例中,不執行方塊4560、4562和4564,以及第一代理器歸零該資料。
如上所述,與使用RFO操作相反,使用無效和回寫的窺探是有利的,因為它不要求快取線被讀取並返回到發出代理器,因為發出代理器將資料歸零。
如前所述,以上開始響應於第一代理器發出命令以在快取線邊界上對齊的位址處啟動零之快取線大小的寫入(例如,方塊4112或4212)。如前所述,這個命令可以採取寫入命令的形式(例如,方塊4112或4212)。於其他實施例中,這個命令可為讀取命令(例如,方塊4212);在這種情況下,導致快取(例如,L1快取、L2快取、L3快取)一者中的快取線被組態以藉由以下方式指示全零:1)互連3920(例如,窺探控制器3925)被實現為響應來自第一代理器的讀取命令,並且對第一代理器的響應指示零線(該線將具有快取同調性協定狀態設定為修改或排除);以及2)第一代理器被實施以將它的讀取命令的結果放入快取(導致快取(例如,L1快取3905)以組態快取線以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零)中,但不是放入第一代理器的架構暫存器檔案中。
如前所指示,指示無效和回寫的窺探可以結合圖41和42的實施例使用。舉例而言,將敘述在圖41的實施例之一者中實施此種窺探的一個具體實施例。在這具體實施例中,發出代理器3900首先嘗試寫入發出代理器3900之L1快取3905;並且如果需要窺探,則互連3920向如上所述的可儲存快取線的同調性快取的那些發出該窺探。因此,L1快取被實施以響應如上所述的寫入命令;L1快取、L2快取和L3快取(更具體地,如果實施L3快取片)響應如上所述的窺探;互連3920被實施以響應於寫入命令發出窺探,可選地被實施為響應於窺探(例如,經由窺探控制器3925的寫入轉換器3928)有效地將任何接收的資料轉換為零,並且如果沒有接收到響應於窺探的資料,可選地被實施為有效地建立零線(例如窺探控制器3925的寫入產生器3929);以及第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)就其本身,互連3920(例如,經由窺探控制器QO25)或第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)響應於來自互連之訊息被實施以導致在快取(例如,L1快取3905、L2快取3910、L3快取3915(更具體地,如果實施L3快取片3916))之一者中的快取線被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在記憶體位址處導致至下游記憶體的快取線大小之零之寫入。
寫出任何快取線但不將資料發送回第一代理器,並且不導致從下游記憶體讀取資料的窺探,或通常將線寫出的先前技術窺探(RFO):圖46為示出使用窺探以實施窺探流程4190或4290之本發明之實施例的流程圖,該窺探寫出任何命中但不將資料發送回第一代理器,並且不導致從下游記憶體(或通常將線寫出的先前技術窺探 - 例如RFO操作)讀取資料的快取線。在圖41和42的上下文中,流程分別從方塊4124或方塊4212傳遞到方塊4526,方塊4526使用此種窺探執行方塊4126或4226。互連3920(例如,經由窺探控制器3925之窺探產生器3926)被實施以對可能儲存快取線的同調性快取的那些發出此種窺探(方塊4626)(換句話說,如果存在命中,則必須判定它們的同調性快取)。當存在發出此種窺探的快取(例如,第一代理器的L1快取、L2快取和/或L3快取片以及第二代理器之L1快取、L2快取和L3快取片)之快取線的命中時(方塊4640),則該快取將響應窺探(4644)。在一些實施例中,快取被實施以響應此種窺探,因為先前技術快取通常將根據實施的快取同調性協定來響應。雖然在一些實施例中使用了新類型的窺探,但是在其他先前技術窺探(例如,RFO操作)中使用 - 在這種情況下,將快取線歸零指令併入現有的處理器設計中不需要對快取依存(caches depending)進行修改或小修改(參見上述標題「觸發快取以組態快取線以指示全零」部分)。當不存在發出窺探的快取之快取線的命中時(4640),則於一實施例中該快取不做任何事(控制傳遞到方塊4652)。
在發出窺探之後,互連3920(例如,經由窺探控制器3925的窺探回應器3927)被實施為追蹤任何相應的回應訊息的接收(例如,於一實施例中,窺探產生器3926向窺探回應器3927指示資訊以便追蹤對任何相應的回應訊息的接收)。如果與資料一起接收的回應訊息(方塊4660) (例如,來自修改的快取線的資料),則互連3920(例如,經由窺探控制器3925的窺探回應器3927)被實施為不發送資料到發出代理器或發出代理器的任何快取(方塊4662)。如果沒有與資料一起接收的回應訊息(4660),則互連3920(例如,經由窺探控制器3925的窺探回應器3927)被實施為不從下游記憶體讀取數據,因為不需要(方塊4664)。
取決於圖41或42的實施例是否被實施,控制從方塊4662和4664傳遞到方塊4132或4232(當使用此種窺探時,不實施方塊4128和4228)。在方塊4132或4232,第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)就其本身(僅方塊4232),互連3920(例如,經由窺探控制器QO25)或第一代理器(例如,透過執行單元(例如,記憶體存取單元164、載入儲存單元340)或其他硬體結構)響應於來自互連3920之訊息導致在快取(例如,L1快取、L2快取、L3快取)之一者中的快取線被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在位址處導致至下游記憶體的快取線大小之零之寫入。在方塊4662未被實施(資料被發送回第一代理器)和/或方塊4664未被實施(下游記憶體被存取並且資料被返回到第一代理器)的實施例中,則第一代理器將資料歸零。
如上所述,即使使用RFO操作,所示實施例的優點在於它們與現有支持RFO操作的快取設計一起工作,而沒有或很少修改。
如前所指示,這些類型之窺探可以結合圖41和42的實施例使用。舉例而言,將敘述在圖42的實施例之一者中實施此種窺探的一個具體實施例。在這具體實施例中,發出代理器3900將直接地發出命令至互連3920(跳過發布代理器/第一代理器的快取)以啟動在記憶體位址處的零之快取線大小的寫入,互連3920(例如,經由窺探控制器3925之窺探產生器3926)被實施以向可能正在如上所述儲存快取線的同調性快取的那些發出窺探;如果回應訊息與資料一起被接收(即,來自修改的快取線的資料),則互連3920可選擇地實施(例如,經由窺探控制器3925的窺探回應器3927)以不發送資料至發布代理器或發布代理器的任何快取;如果回應訊息沒有與資料一起被接收,互連3920(例如,經由窺探控制器3925的窺探回應器3927)可選擇地實施不從下游記憶體讀取資料,因為不需要;以及發布代理器(第一代理器)自己或響應於來自互連的訊息之第一代理,導致在快取(例如,L1快取、L2快取、L3快取)之一者中的快取線被組態以指示全零(不同的實施例可實施快取以組態快取線以指示全零,如前面標題「組態快取線以指示全零的技術」的部分中所述),或在記憶體位址處導致至下游記憶體的快取線大小之零之寫入。因此,在某些實施例中,L1快取、L2快取和L3快取(更具體地,如果實施L3快取片)響應如上所述的窺探而實施;如上所述,互連3920被實施以響應於命令(例如,經由窺探控制器3925之窺探產生器3926)以及響應於來自快取的響應資料(例如,經由窺探控制器3925之窺探回應器3927)發出窺探;發布代理器被實施以直接地發送命令至互連3920以啟動在記憶體位址處的零之快取線大小的寫入;以及發出代理器(第一代理器)本身或響應於來自互連之訊息的第一代理器,導致在快取之一者中快取線(例如,L1快取、L2快取、L3快取)被組態以指示全零(如前面標題為「組態快取線以指示全零的技術」的部分中所敘述的,不同實施例可實施快取以組態快取線以指示全零),或在記憶體位址處導致至下游記憶體的快取線大小之零之寫入。於一具體實施例中,發出代理器(第一代理器)就其自身引起快取的一者中的快取線(例如,L1快取、L2快取、L3快取)被組態以指示全零。
多個插槽
如前所述,互連3920可例如表示:1)只是CCX內的互連;2)在CCX內和之間的互連;3)在不同的CCX內獨立互連,以及CCX之間的互連。如本文所討論的,系統可以用一或多個上述處理器(每個包括一或多個CCX)來實施(參見下面標題「示例性電腦架構」的部分)。此種系統可包括一或多個插槽(被稱為CPU插槽或CPU槽),其各包含提供機械和電性連接一或多個機械組件。在具有多個插槽的系統(例如,伺服器)中,插槽係藉由一組一或多個互連(也稱為插槽至插槽互連)連接。不同的實施例可以用不同方式實施插槽至插槽互連組,包括環、多個環、點對點鏈路(例如,點對點鏈路,諸如快速路徑互連(QPI)、超路徑互連(UPI)、超傳輸(HP))、共享匯流排等之一或多者。這組插槽至插槽互連取決於實施例可以被視為互連3920的一部分或者是分開的。在一些實施例中,這組互連被實現為支持上面關於互連3920討論的相同的通訊(寫入命令、窺探、回應訊息等);其中這些通訊的每一者在透過插槽至插槽互連等發送時可能具有相同或不同的格式。在其他實施例中,當發送插槽至插槽時,這些通訊中的一或多個(例如,一或多個窺探類型和/或回應訊息)被轉換。例如,一些實施例可以在單個插槽中的處理器內使用寫入更新窺探,但是當它被發送到另一個插槽時,將此種窺探轉換成寫入無效或回寫和無效窺探。此種實施例的優點在於是否產生新的歸零快取線的決定僅在插槽內(因此,不需要來自其他插槽的「歸零」或「不歸零」的指示)。
一些實施例之摘要
本發明之一實施例可包括包含第一同調代理器、第二同調代理器和互連的處理器。第一代理器透過第一代理器之快取耦接至互連。第二代理器透過第二代理器之快取耦接至互連。第一代理器係用以解碼和執行指令,指令的執行是導致在記憶體位址處零之快取線大小的寫入。第一代理器係用以發出寫入命令至第一代理器之快取,以在記憶體位址啟動零之快取線大小的寫入。當存在響應於接收寫入命令並且快取線的快取同調性協定狀態為修改狀態或排除狀態之快取線的命中時,第一代理器之快取組態該快取線以指示全零。當存在響應於接收寫入命令的快取遺失時,第一代理器的快取向該互連發出寫入命令。互連響應於接收寫入命令而向第二代理器之快取發出窺探。互連或第一代理器響應於來自互連之訊息導致在第一代理器之快取中的快取線在當寫入命令和窺探沒有導致快取線寫入零被執行時被組態以指示全零。
另外,以下可能適用:在一些實施例中,當存在響應於接收寫入命令並且快取線的快取同調性協定狀態不為修改狀態或排除狀態之快取線的命中時,第一代理器之快取使快取線的快取同調性協定狀態為無效狀態,並向該互連發出寫入命令。
本發明另一實施例可包括包含用以解碼將快取線歸零的指令之解碼器的處理器。處理器也包含執行單元,其耦接至該解碼器並響應於該指令之該解碼,該執行單元發出寫入命令以在記憶體位址處啟動零之快取線大小的寫入。處理器還包含耦接至執行單元之用以接收寫入命令的同調性快取,其響應於寫入命令來判定在同調性快取中是否存在命中、判定命中快取線的快取同調性協定狀態是修改狀態還是排除狀態、當快取同調性協定狀態是修改狀態或排除狀態時組態快取線以指示全零、以及當存在響應於對寫入命令之接收的遺失時,向互連發出寫入命令。響應於寫入命令的接收互連向複數個其他同調性快取中的每一個發出窺探,為此必須判定是否有命中。互連或執行單元響應於來自互連之訊息導致在同調性快取之一者中的快取線在當寫入命令和窺探沒有導致快取線寫入零被執行時被組態以指示全零。
另外,以下可能適用:在一些實施例中,同調性快取還使快取線的快取同調性協定狀態為無效狀態,並且當命中快取線的快取同調性協定狀態不是修改狀態或排除狀態時,向互連發出寫入命令。在一些實施例中,解碼器和執行單元為第一核心的一部分,以及複數個同調性快取包括第二核心之同調性快取。
本發明另一實施例可包括包含用以響應於快取線歸零指令之執行發出寫入命令之第一核心的處理器。第一核心還包含接收寫入命令的階層1(L1)快取,其響應於寫入命令來判定快取中是否存在命中或遺失、以及響應於命中判定所命中的快取線的快取同調性協定狀態是否授予快取權限修改快取線而不向其他快取廣播。當所命中的快取線的快取同調性協定狀態是授予快取權限修改快取線而不向其他快取廣播的一者時,L1快取係用以響應於命中而組態快取線以指示全零。L1快取響應於遺失向互連發出寫入命令。耦接至第一核心並響應於寫入命令的互連向那些複數個其他快取發出窺探,為此必須判定是否有命中。第一核心、互連或第一核心響應於來自互連之訊息導致在快取或複數個其他快取之一者中的快取線在當寫入命令和窺探沒有導致快取線寫入零被執行時被組態以指示全零。
另外,以下可能適用:在一些實施例中,當所命中的快取線的快取同調性協定狀態不是授予快取權限修改快取線而不向其他快取廣播的一者時,L1快取也可以響應於命中而使快取同調性協定狀態為無效並且向互連發出寫入命令。在一些實施例中,響應於窺探之複數個其他快取的每一者亦可被實施以判定在其他快取中是否存在命中或遺失、以及響應於命中判定在其他快取中所命中的快取線的快取同調性協定狀態是否授予快取權限修改快取線而不向其他快取廣播。每一個複數個其他快取用以:當在該快取中所命中之快取線的快取同調性協定狀態是授予快取權限修改在該快取中命中的快取線而不向其他快取廣播時,在該快取中組態快取線以指示全零並且發出響應於命中之指示歸零的回應訊息;以及當在該快取中所命中之快取線的快取同調性協定狀態不是授予快取權限修改在該快取中命中的快取線時,發出響應於遺失或響應於命中之指示不歸零的回應訊息。互連用以判定對回應訊息之追蹤接收以判定窺探是否導致複數個其他快取中的一個被配置為指示全零。
本發明之另一實施例可包括包含第一同調代理器、第二同調代理器和互連的處理器。第一代理器透過第一代理器之快取耦接至互連。第二代理器透過第二代理器之快取耦接至互連。第一代理器係用以解碼和執行指令,指令的執行是導致在記憶體位址處零的快取線大小的寫入。第一代理器係用以發出命令至互連。響應於接收命令,互連係用以發出窺探至第一代理器之快取以及第二代理器之快取。第一代理器、互連或第一代理器響應於來自互連之訊息導致在第一代理器之快取中的快取線在當窺探沒有導致快取線寫入零被執行時被組態以指示全零。
本發明另一實施例可包括包含用以解碼將快取線歸零的指令之解碼器的處理器。處理器還包含耦接至解碼器的執行單元,其用以響應於指令之解碼發出命令。響應於命令的接收,互連向複數個同調性快取中的每一個發出窺探,為此必須判定是否有命中。執行單元本身、互連或執行單元響應於來自互連之訊息導致在耦接至執行單元的複數個同調性快取之一者中的快取線在當窺探沒有導致快取線寫入零被執行時被組態以指示全零。
本發明另一實施例可包括包含用以響應於快取線歸零指令之執行發出命令之第一核心的處理器。處理器也包含耦接至共享的階層3(L3)快取、第一核心之階層2(L2)快取以及第一核心之階層1(L1)快取的互連,用以響應於命令發出窺探至複數個同調性快取,為此必須判定是否有命中。在一些實施例中,複數個同調性快取包括第一核心之L1快取、第一核心之L2快取、L3快取、第二核心之L1快取以及第二核心之L2快取。響應於來自互連的訊息,第一核心本身、互連或第一核心用以導致在耦接至第一核心之複數個同調性快取之一者中的快取線被組態以指示全零。
PTE合併
處理器核心可根據一些示例性實施例支持分頁表合併特徵,允許多個較小的記憶體頁面合併至單個、有效的、較大的記憶體頁面中。在一些實施例中,例如,八個4KB的記憶體頁面可以合併至單個32KB的記憶體頁面中。在其他實施例中,16個4KB記憶體頁面可以合併至單個64KB記憶體頁面中。
當前的電腦架構允許各種大小的虛擬記憶體頁面。例如,x86架構可能允許4KB、2MB和1GB的頁面。實施此種架構的處理器可為這些頁面尺寸中的每一個提供變換後備緩衝器(TLB),提供虛擬位址至實體位址的映射。當嘗試將虛擬位址轉譯為實體位址時,處理器可以搜索每個可應用的TLB,以判定它們中的任何一個是否含有相應於虛擬位址的條目。如果找到條目(即,「TLB命中」),則從其找到的TLB中檢索條目,並且持續將虛擬位址轉譯到實體位址。
如果在處理器上存在的任何TLB(即,「TLB遺失」)中沒有相應於虛擬位址的條目,則處理器可以嘗試將條目定位在相應於虛擬位址的分頁表中。如果找到一個條目(即,「分頁表命中」),則從分頁表中檢索條目並將其插入到適當的TLB中。然後可重試從虛擬位址到實際位址的轉譯,產生TLB命中。
如果在分頁表中找不到相應於虛擬位址的條目(即,「分頁表遺失」),則它可以指示當前在記憶體中沒有相應於所提供的虛擬位址的實體位址。在這種情況下,處理器可以使得相應於虛擬位址的頁面從其他儲存器(例如磁盤)被載入到特定實體位址處的記憶體中,並且可以將從所提供的虛擬位址到實體位址的映射插入至分頁表中。隨後嘗試將提供的虛擬位址的轉譯將導致分頁表命中,這將導致相應的條目被添加到適當的TLB。
當前處理器架構的一個難處是缺少允許頁面大小的粒度。例如,如上所述,一些處理器架構允許4KB、2MB和1GB的頁面,在頁面大小之間提供相對「粗糙」的分佈。
根據一些實施例,這個難處可以由合併多個較小頁面、產生例如大於4KB但小於2MB的中間頁面大小來解決。在一些實施例中,這可以藉由機會性地合併例如8個4KB頁面以在特定條件下建立單個有效的32KB頁面來實施。在一些實施例中,八個4KB頁面必須與32KB位址邊界對齊。
在一些實施例中,八個4KB頁面在(a)虛擬;和(b)實體位址空間的一或兩者中必須是連續的。例如,某些實施例可能要求虛擬地址VA和實體位址PA之位元12-14彼此相等。也就是說,在一些實施例中,只有對於每個較小的頁面VA [14:12] == PA [14:12],較小的頁面才合併成較大的頁面。
在一些實施例中,只有每個較小的頁面具有相同的許可位元時,較小的頁面合併成較大的頁面。在一些實施例中,當較小的頁面合併成較大的頁面時,作業系統可藉由例如對所有較小頁面的存取/壞位元上執行邏輯OR操作來將相應於每個較小頁面的存取/壞位元組合成單個值。在一些實施例中,當較小的頁面合併成較大的頁面時,作業系統可僅設定合適的4KB頁面壞/存取位元,從而追蹤較大頁面的哪些部分已經被存取和/或是壞的。
圖47為根據一些實施例示出可包括在處理器中的頁面合併特徵的圖。方塊4700表示含有八個條目4701-4708的分頁表的一部分,每個條目相應於4KB大小的頁面。如圖47所示,八個條目4701-08具有連續的位址,八個位址的位元12-14取連續值000、001、010、011、100、101、110和111。根據一些實施例,如圖47所示,這些八個4KB頁面可被組合為有效的32KB頁面4709。
在一些實施例中,有效的32KB頁面4709可以藉由在每個分頁表條目(PTE)中包括額外的位元來表示,指示八個4KB頁面應被視為有效的32KB頁面。在一些實施例中,有效的32KB頁面4709可以藉由相應於分頁表條目4701-08的頁面目錄條目中的額外的位元來表示,指示八個4KB頁面應被視為有效的32KB頁面。在一些實施例中,在每次存取八個4KB頁面中的一頁面時,八個4KB頁面之連續的、對齊的位址可以被硬體檢測到,並被視為有效的32KB頁面。
檢測多個較小頁面滿足合併成有效較大頁面的標準是否可以使用各種方法來達成。例如,圖48為示出用於合併分頁表條目為單個有效頁面之方法的流程圖。在如方框4801所示在所有TLB(例如,所有的4KB、32KB、2MB和1GB TLB)中的TLB遺失,處理器可以根據頁面目錄的階層結構來走查分頁表(例如,使用x86分頁表定義),如方框4802中所示。一旦判定適當的分頁表條目的位置,處理器就可以檢索含有多個分頁表條目的快取線(方框4803)。例如,在一些實施例中,處理器可以檢索快取線中的八個分頁表條目。
當檢索到在快取線中的多個分頁表條目時,處理器可以測試分頁表條目是否相應於滿足合併要求的頁面,如4804中所示。例如,處理器可以測試頁面的位址在虛擬和/或實體記憶體中是否連續。在一些實施例中,處理器可進一步測試頁面的許可位元的值是否相同。在一些實施例中,處理器可判定頁面的位址是否對齊32KB邊界。
如果快取線中的多個分頁表條目滿足合併成單個組合頁面的標準(例如,有效的32KB頁面),則可以將相應於組合頁面的條目放置在適當的TLB中(例如,32KB TLB),並且組合成單個條目的快取線中的條目是無效,如方框4805所示。如果多個分頁表條目不滿足合併成單個組合頁面的標準,則虛擬至實體位址轉譯可以藉由分配在相應於較小(例如,4KB)TLB之TLB中的條目按照慣例繼續 ,如方框4806所示。
在一些實施例中,處理器可基於相關的TLB之內容來判定是否合併多個較小的頁面。例如,在4KB TLB遺失之後,處理器可偵測相應的4KB頁面是否可能會與TLB中存在之額外的條目合併(例如,相應於4KB頁面的七個其他TLB條目)。如果相應於所提供的位址之條目可與用以建立有效較大頁面的其他者組合(例如,有效的32KB頁面),將被組合的現有TLB條目無效,並且建立相應於在適當的TLB中(例如,在相應於32KB頁面的TLB中)之有效較大頁面的條目。在一些實施例中,不使用相應於組合的有效頁面大小的單獨TLB,而是將與組合頁面之虛擬至實體位址轉譯有關的資訊儲存在相應於較小頁面大小的TLB(例如,4KB頁面TLB)中。在一些實施例中,可以使用為此目的而保留的額外位元將該資訊編碼在相應於較小頁面大小的TLB中。
在一些實施例中,上述特徵可以與如上所述的使用對於頁面合併優化的演算法來分配頁面之作業系統結合使用。現有的作業系統具有用於分配例如4KB、2MB和/或1GB頁面的演算法。可以結合一些實施例使用的作業系統可以使用被設計用於分配組合頁面(例如,32KB的有效頁面)的附加演算法。
上述頁面合併特徵不限於組合特定大小之頁面的特定數目,而是可以用於合併不同大小之頁面的不同數目。例如,一些實施例可以合併16個4KB頁面,形成64KB的有效組合頁面。一些實施例可以另外支持多種大小的有效組合頁面(例如,32KB和64KB的組合頁面)。在一些實施例中,多個大小的頁面(例如,4KB和32KB的頁面)可以被組合成單個有效頁面(例如,有效的64KB頁面)。
示例性電腦架構
圖49-52為示例性電腦架構範例之方塊圖。本領域已知的用於膝上型、桌上型、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位訊號處理器(DSP)、用於伺服器環境中的通用處理器、伺服器處理器或處理元件、共處理器(例如,安全性共處理器)高通量MIC處理器、GPGPU、加速器(諸如,例如圖形加速器、密碼加速器、固定功能加速器、機器學習加速器、網路加速器或電腦視覺加速器)、現場可程式閘陣列或任何其他處理器或處理裝置、圖形裝置、視頻遊戲裝置、機頂盒、微控制器、手機、可攜式媒體播放器、手持裝置以及各種其他電子裝置的其他系統設計和組態也是合適的。概略言之,能夠結合一處理器和/或其他此處揭示的執行邏輯的大量多種系統或電子裝置大致上為適宜。
現在參考圖49,其顯示依據本發明之一個實施例一種系統4900之方塊圖。系統4900可包括一或多個處理器4910、4915,耦接至控制器集線器4920。在一個實施例中,控制器集線器4920包括一圖形記憶體控制器集線器(GMCH)4990及一輸入/輸出集線器(IOH)4950(可位在分開的晶片上);GMCH 4990包括記憶體及圖形控制器,其耦接記憶體4940及一共處理器4945;IOH 4950係耦接輸入/輸出(I/O)裝置4960至GMCH 4990。另外,記憶體及圖形控制器中之一或二者係整合於處理器內部(如此處描述),記憶體4940及共處理器4945係直接地耦接至處理器4910及耦接至在單一晶片內具有IOH 4950之控制器集線器4920。
額外處理器4915的選擇性本質係以虛線標示於圖49。各個處理器4910、4915可包括此處描述的處理核心中之一或多者且可為處理器3600的某個版本。
記憶體4940例如可為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或二者的組合。針對至少一實施例,控制器集線器4920透過多插匯流排諸如前端匯流排(FSB)、點對點介面諸如快速路徑互連(QPI)或類似的連接4995而與處理器4910、4915通訊。
於一實施例中,共處理器4945為特殊用途處理器(包括,例如用於伺服器環境中的通用處理器、伺服器處理器或處理元件、諸如安全性共處理器的共處理器、高通量MIC處理器、GPGPU、諸如例如圖形加速器或數位訊號處理(DSP)單元、密碼加速器、固定功能加速器、機器學習加速器、網路加速器或電腦視覺加速器的加速器)、現場可程式閘陣列或任何其他處理器或處理裝置)。於一實施例中,控制器集線器4920可包括一積體圖形加速器。
就一定範圍的優劣量表而言,包括架構、微架構、熱、電力耗損特性等,實體資源4910、4915間可有多項差異。
在一實施例中,處理器4910執行指令其控制通用類別的資料處理操作。該等指令內部嵌入共處理器指令。處理器4910識別此等共處理器指令乃屬須由附接的共處理器4945執行的類別。因此,處理器4910在共處理器匯流排或其他互連上簽發此等共處理器指令(或表示共處理器指令的控制訊號)給共處理器4945。共處理器4945接收且執行所接收的共處理器指令。
現在參考圖50,其顯示依據本發明之一實施例第一更具體示例性系統5000之一方塊圖。如圖50所示,多處理器系統5000為點對點互連系統,包括透過點對點互連5050而耦接的第一處理器5070及第二處理器5080。處理器5070及5080各自可為處理器3600的某個版本。於本發明之一個實施例中,處理器5070及5080分別為處理器4910及4915,而共處理器5038為共處理器4945。在另一個實施例中,處理器5070及5080分別為處理器4910及共處理器4945。
處理器5070及5080係顯示為分別包括積體記憶體控制器(IMC)單元5072及5082。處理器5070也包括點對點(P-P)介面5076及5078作為其匯流排控制器單元之一部分;同理,第二處理器5080可包括P-P介面5086及5088。處理器5070、5080可使用P-P介面電路5078、5088透過點對點(P-P)介面5050交換資訊。如圖50所示,IMC 5072及5082耦接該等處理器至個別記憶體,亦即記憶體5032及記憶體5034,其可為本地附接至個別處理器的主記憶體的一部分。
處理器5070、5080可使用點對點介面電路5076、5094、5086、5098透過P-P介面5052、5054而各自與一晶片組5090交換資訊。晶片組5090也可透過一高效能介面5092而與共處理器5038交換資訊。在一實施例中,共處理器5038乃特用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等。
共享快取(圖中未顯示)可含括於任一處理器內或二處理器外部,但仍然透過P-P互連而與處理器連接,使得如果一處理器被置於低電力模式時,任一處理器的或二處理器的本地快取資訊可被儲存於該共享快取。
晶片組5090可透過一介面5096而耦接至一第一匯流排5016。在一個實施例中,第一匯流排5016可為周邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或其他第三代I/O互連匯流排之一匯流排,但本發明之範圍不因此限制。
如圖50所示,多個I/O裝置5014可連同一匯流排橋接器5018而耦接至第一匯流排5016,該匯流排橋接器5018係耦接第一匯流排5016至第二匯流排5020。於一實施例中,一或多個額外處理器5015(諸如,用於伺服器環境中的通用處理器、伺服器處理器或處理元件、共處理器(例如,安全性共處理器)、高通量MIC處理器、GPGPU、加速器(諸如例如圖形加速器或數位訊號處理(DSP)單元、密碼加速器、固定功能加速器、機器學習加速器、網路加速器或電腦視覺加速器)、現場可程式閘陣列或任何其他處理器或處理裝置)耦接至第一匯流排5016。在一個實施例中,第二匯流排5020可為低接腳數目(LPC)匯流排。在一個實施例中,多個裝置可耦接至第二匯流排5020,包括例如鍵盤及/或滑鼠5022、通訊裝置5027及儲存單元5028,諸如磁碟機或其他大容量儲存裝置,可包括指令/碼及資料5030。此外,音頻I/O 5024可被耦接至第二匯流排5020。注意其他架構係屬可能。例如,替代圖50之點對點架構,一系統可實施多插匯流排或其他此種架構。
現在參考圖51,顯示依據本發明之實施例第二更具體示例性系統5100之一方塊圖。圖50與圖51中相似的元件具有相似的元件符號,及圖50的一些態樣已經從圖51省略以免不必要地遮掩圖51的其他態樣。
圖51例示說明處理器5070、5080分別地可包括積體記憶體及I/O控制邏輯(「CL」)5072及5082。因此,CL 5072、5082包括積體記憶體控制器單元且包括I/O控制邏輯。圖51例示說明不僅記憶體5032、5034耦接至CL 5072、5082,I/O裝置5114也耦接至控制邏輯5072、5082。舊有I/O裝置5115係耦接至晶片組5090。
現在參考圖52,其顯示依據本發明之實施例一種SoC 5200之方塊圖。圖36中的相似元件具有類似的元件符號。又,虛線框乃更為先進SoC上的選擇性特徵。在圖52中,互連單元5202耦接至:包括一組一或多個包括快取單元3604A-N和共享快取單元3606之核心3602A-N的應用程式處理器5210;系統代理單元3610;匯流排控制器單元3616;集成記憶體控制器單元3614;一組或一或多個可包括集成的圖形邏輯、影像處理器、音頻處理器和視頻處理器、用於伺服器環境中的通用處理器、伺服器處理器或處理元件、安全共處理器、高通量MIC處理器、GPGPU、加速器(諸如例如圖形加速器或數位訊號處理(DSP)單元、密碼加速器、固定功能加速器、機器學習加速器、網路加速器或電腦視覺加速器)、現場可程式閘陣列或任何其他處理器或處理裝置的共處理器5220;靜態隨機存取記憶體(SRAM)單元5230;直接記憶體存取(DMA)單元5232;以及用於耦接至一或多個外部顯示器的顯示單元5240。在一個實施例中,該(等)共處理器5220包括特用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器等。
因此處揭示的機構之實施例可於硬體、軟體、韌體或此等實施辦法的組合而予實施。本發明實施例可被實施為在包含至少一處理器的可程式系統上執行的電腦程式或程式碼,其中處理器包括例如用於伺服器環境中的通用處理器、伺服器處理器或處理元件、共處理器(例如,安全共處理器)高通量MIC處理器、GPGPU、加速器(諸如例如圖形加速器或數位訊號處理(DSP)單元、密碼加速器、固定功能加速器、機器學習加速器、網路加速器或電腦視覺加速器)、現場可程式閘陣列或任何其他處理器或處理裝置、儲存系統(包括揮發性和非揮發性記憶體和/或儲存元件)、至少一輸入裝置以及至少一輸出裝置。
程式碼(諸如圖50例示說明之碼5030)可應用至輸入指令以執行此處描述的功能及產生輸出資訊。輸出資訊可以已知方式施加至一或多個輸出裝置。用於本應用之目的,處理系統包括具有一處理器的任何系統,諸如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)或微處理器。
程式碼可於高階程式或物件導向程式語言實施以與一處理系統通訊。若有所需,程式碼也可於組合語言或機器語言實施。實際上,此處描述的機構之範圍並非限於任何特定程式語言。任何狀況之下,語言可為編譯語言或解譯語言。
至少一實施例的一或多個態樣可藉表示處理器內部的多個邏輯而儲存在機器可讀取媒體上的代表性指令實施,該等指令當由一機器讀取時使得該機器組合邏輯以執行此處描述的技術。此種表示型態稱作為「IP核心」,可儲存在具體有形的機器可讀取媒體上且供給各個客戶或製造廠以載入至實際上生產該邏輯或處理器的組裝機器內。
此等機器可讀取儲存媒體可包括但非僅限於由機器或裝置所製造或製成的非暫態具體有形的物件配置,包括儲存媒體諸如硬碟、任何其他類別的碟片包括軟碟、光碟、光碟-唯讀記憶體(CD-ROM)、光碟可覆寫入式(CD-RW)、及磁光碟;半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、可電氣抹除可程式唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡;或適用以儲存電子指令的任何其他類別的媒體。
因此,本發明之實施例也包括非暫態具體有形的機器可讀取媒體含有指令或含有設計資料,諸如硬體描述語言(HDL)其定義此處描述的結構、電路、裝置、處理器和/或系統特徵。此等實施例也可稱作為程式產品。
根據本發明實施例之由處理器核心執行的指令可具體化在「同屬向量友善指令格式」中,其將在下面詳細敘述。於其他實施例中,這樣的格式不被利用,並且使用另一種指令格式,然而,下面對寫入遮罩暫存器、各種資料轉換(拌和、廣播等)、定址等的敘述通常適用於上面有關指令之實施例的敘述。另外,下面詳細描述示例性系統、架構和管線。指令可以在這樣的系統、架構和管線上執行,但不限於那些詳細敘述的。
指令集
指令集可包括一或多個指令格式。給定的指令格式可定義各種欄位(例如,位元數、位元位置)以指定要執行的操作(例如,操作碼)和其上將執行該操作的運算元和/或其他資料欄位(例如,遮罩)等等。一些指令格式透過指令模板(或子格式)的定義進一步分解。例如,給定指令格式的指令模板可以被定義為具有指令格式的欄位的不同子集(所包括的欄位通常以相同的順序,但是至少一些具有不同的位元位置,因為包括更少的欄位)和/或被定義為具有不同解讀的給定欄位。因此,使用給定指令格式(以及如果被定義,則在該指令格式的指令模板中的給定指令模板中)表示ISA的每個指令,並且包括用於指定操作和運算元的欄位。例如,示例性ADD指令具有特定操作碼和指令格式,其包括指定操作碼和運算元欄位以選擇運算元(來源1/目的地和來源2)的操作碼欄位;並且在指令流中出現該ADD指令將在選擇特定運算元的運算元欄位中具有特定內容。已經發出及/或公布一組SIMD擴充,其被稱為進階向量擴充(AVX、AVX2和AVX-512),並且使用向量擴充(VEX)編碼方案(例如,參見2014年9月之Intel® 64和IA-32架構軟體開發人員手冊;2014年10月之Intel® 先進向量擴充編程參考;以及2016年10月之Intel® 架構指令集擴充編程參考)。
示例性指令格式
文中所述之指令的實施例可以具體化在不同格式中。另外,下面詳細描述示例性系統、架構和管線。指令的實施例可以在這樣的系統、架構和管線上執行,但不限於那些詳細敘述的。
同屬向量友善指令格式
向量友善指令格式是適用於向量指令的指令格式(例如,有某些欄位特定用於向量操作)。雖然說明透過向量友善指令格式而支持向量及純量操作之實施例,但是替代的實施例可以僅使用向量友善指令格式向量操作。
圖53A-53B為根據本發明之實施例示出同屬向量友善指令格式及其指令模板的方塊圖。圖53A為根據本發明實施例示出同屬向量友善指令格式及其類別A指令模板的方塊圖;而圖53B為根據本發明實施例示出同屬向量友善指令格式及其類別B指令模板的方塊圖。具體而言,類別A及類別B指令模板被定義用於同屬向量友善指令格式5300,類別A及類別B指令模板都包含無記憶體存取5305指令模板及記憶體存取5320指令模板。在向量友善指令格式的內容中同屬一詞係指指令格式未被束縛於任何特定的指令集。
儘管將說明本發明的實施例,其中,向量友善指令格式支持下述:具有32位元(4位元組)或是64位元(8位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小)(因此,64位元組向量由16個雙倍字大小元件或是替代地由8個四倍字大小元件組成);具有16位元(2位元組)或是8位元(1位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元件寬度(或大小)之32位元組向量運算元長度(或大小);以及,具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元件寬度(或大小)之16位元組向量運算元長度(或大小);替代實施例以更多、更少或是不同的資料元件寬度(例如,128位元(16位元組)資料元件寬度)來支持更多、更少及/或不同的向量運算元大小(例如,256位元組向量運算元)。
在圖53A中的類別A指令模板包含:1)在無記憶體存取5305指令模板之內,顯示無記憶體存取、完全捨入(full round)控制型操作5310指令模板及無記憶體存取、資料轉換類型操作5315指令模板;以及,2)在記憶體存取5320指令模板之內,有顯示記憶體存取、暫時5325指令模板及記憶體存取、非暫時5330指令模板。圖53B中的類別B指令模板包含:1)在無記憶體存取5305指令模板之內,顯示無記憶體存取、寫入遮罩控制、部份捨入控制型操作5312指令模板及無記憶體存取、寫入遮罩控制、vsize類型操作5317指令模板;以及,2)在記憶體存取5320指令模板之內,顯示記憶體存取、寫入遮罩控制5327指令模板。
同屬向量友善指令格式5300包括以圖53A至53B中所示的次序列出的下述欄位。
格式欄位5340-在此欄位中的特定值(指令格式識別符值)獨特地識別向量友善指令格式,並因而識別指令流中向量友善指令格式的指令發生。如此一來,以此欄位對於僅有同屬向量友善指令格式之指令集並非所需的觀點而言,此欄位是選擇性的。
基礎操作欄位5342-其內容區別不同的基礎操作。
暫存器索引欄位5344-不論來源及目的地運算元在暫存器或在記憶體中,其內容,直接或是經由位址產生,指明來源及目的地運算元的位置。這些包含足夠數目的位元以從P×Q(例如,32×512、16×128、32×1024、64×1024)暫存器檔案中選取N個暫存器。雖然在一實施例中,N可以高達三個來源及一目的地暫存器,但是替代實施例可以支持更多或是更少的來源及目的地暫存器(例如,可以支持高達二個來源,其中,這些來源中之一也作為目的地,可以支持高達三個來源,其中,這些來源中之一也作為目的地,可以支持高達二個來源及一個目的地)。
修改符欄位5346-其內容區別指定及未指定記憶體存取的同屬向量指令格式中指令的發生;亦即,在無記憶體存取5305指令模板與記憶體存取5320指令模板之間作區分。記憶體存取操作對記憶體階層讀取及/或寫入(在某些情況中,使用暫存器中的值來指定來源及/或目的地位址),而非記憶體存取操作未如此做(例如,來源及目的地是暫存器)。雖然在一實施例中,此欄位也在三種不同方式之間選取以執行記憶體位址計算,但是,替代的實施例可以支持更多、更少、或是不同的方式來執行記憶體位址計算。
擴增操作欄位5350-其內容區別多種不同操作中那一種操作除了基礎操作之外還要被執行。此欄位是上下文特定的。於本發明之一實施例中,此欄位被分成等級欄位5368、阿爾發欄位5352、及貝它欄位5354。擴增操作欄位5350允許共同的操作組能夠被執行於單一指令而非2、3或4個指令中。
比例欄位5360-其內容允許索引欄位的內容的比例用於記憶體位址產生(例如,用於使用2比例* 索引+基礎之位址產生)。
位移欄位5362A-其內容被用作為記憶體位址產生的一部份(例如,用於使用2比例*索引+基礎+位移之位址產生)。
位移因子欄位5362B(注意,位移欄位5362A直接在位移因子欄位5362B上方並列表示一或另一者被使用)-其內容被用作為位址產生的一部份;其指明要依記憶體存取(N)的大小而比例化之位移因子,其中,N是記憶體存取中的位元組數目(例如,用於使用2比例*索引+基礎+比例化位移的位址產生)。冗餘的低階位元被忽略,且因此,位移因子欄位的內容乘以記憶體運算元全部大小(N)以產生計算有效位址時使用的最後位移。根據全操作碼欄位5374(稍後說明)及資料操縱欄位5354C,在運行時間時由處理器硬體來決定N的值。在位移欄位5362A及位移因子欄位5362B不用於無記憶體存取5305指令模板及/或不同實施例僅實施二者其中之一或不實施二者的情況中,它們是選擇性的。
資料元件寬度欄位5364-其內容區別一些資料元件寬度中的那一個寬度是要被使用(在某些實施例中對所有指令;在其他實施例中僅對某些指令)。在假使使用操作碼的某些態樣而僅有一個資料元件寬度被支持及/或複數資料元件寬度被支持時不需要此欄位的情況中,此欄位是選擇性的。
寫入遮罩欄位5370-其內容以每一個資料元件位置為基礎而控制目的地向量運算元中的資料元件位置是否反應基礎操作及擴增操作的結果。類別A指令模板支持合併寫入遮罩,而類別B指令模板支持合併及歸零寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元件在任何操作的執行期間受保護(由基礎操作及擴增操作指明)而免於更新;在其他的一個實施例中,保留對應的遮罩位元具有0之目的地的各元件的舊值。相反地,當歸零向量遮罩時允許目的地中的任何組的元件在任何操作(由基礎操作及擴增操作來予以指定)執行期間被歸零;在一個實施例中,當對應的遮罩位元具有0值時,目的地的元件被設定為0。此功能的子集合是控制執行的操作的向量長度之能力(亦即,被修改之元件的展幅,從第一個至最後一個);但是,被修改的元件不必是連續的。因此,寫入遮罩欄位5370允許部份向量操作,包含載入、儲存、算術、邏輯、等等。雖然說明本發明的實施例,其中,寫入遮罩欄位5370的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器其中之一(因此,寫入遮罩欄位5370的內容間接地識別要被執行的遮罩),但是,替代實施例取代地或增加地允許遮罩寫入欄位5370的內容直接指定要被執行的遮罩。
立即欄位5372-其內容允許立即性的規格。在此欄位未出現在未支持立即性的同屬向量友善格式實施中以及其未出現在未使用立即性的指令中之情況中,此欄位是選擇性的。
等級欄位5368-其內容區別不同等級的指令。參考圖53A-B,此欄位的內容在類別A與類別B指令之間選取。在圖53A-B中,四角圓化的方形被用來指示特定值存在於欄位中(例如,分別在圖53A-B中用於等級欄位5368的類別A 5368A及類別B 5368B)。
類別A的指令模板
在類別A的非記憶體存取5305指令模板的情況中,阿爾發欄位5352被解譯為RS欄位5352A,其內容區別不同的擴增操作類型中那一種類型是要被執行(例如,捨入5352A.1及資料轉換5352A.2分別被指定用於無記憶體存取、捨入類型操作5310及無記憶體存取、資料轉換類型操作5315指令模板),而貝它欄位5354區別被指定的類型的操作中那一個操作是要被執行。在無記憶體存取5305指令模板中,比例欄位5360、位移欄位5362A、及位移比例欄位5362B未出現。
無記憶體存取指令模板-完全捨入控制型操作
在無記憶體存取完全捨入控制型操作5310指令模板中,貝它欄位5354被解譯為捨入控制欄位5354A,其內容提供靜態捨入。雖然在上述的發明實施例中,捨入控制欄位5354A包含抑制所有浮點例外(SAE)欄位5356及捨入操作控制欄位5358,但是,替代實施例可以支持將這二概念編碼成相同欄位或是僅具有這些概念/欄位其中之一或另一者(例如,可以僅具有捨入操作控制欄位5358)。
SAE欄位5356-其內容區別是否將例外事件報告禁能;當SAE欄位的5356內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處置器(handler)。
捨入操作控制欄位5358-其內容區別捨入操作組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接近的)。因此,捨入操作控制欄位5358允許以每一個指令為基礎之捨入模式的改變。在其中處理器包含用以指明捨入模式的控制暫存器之本發明的一個實施例中,捨入操作控制欄位5350的內容置換(override)該暫存器值。
無記憶體存取指令模板-資料轉換類型操作
在無記憶體存取資料轉換類型操作5315指令模板中,貝它欄位5354被解譯為資料轉換欄位5354B,其內容區別多個資料轉換中何者要被執行(例如,無資料轉換、拌和、廣播)。
在類別A的記憶體存取5320指令模板的情況中,阿爾發欄位5352被解譯為逐出暗示欄位5352B,其內容區別逐出暗示中那一者是要被使用(在圖53A中,暫時5352B.1及非暫時5352B.2分別被指定用於記憶體存取、暫時5325指令模板以及記憶體存取、非暫時5330指令模板),而貝它欄位5354被解譯為資料操縱欄位5354C,其內容區別多個資料操縱操作(也稱為基元)中何者是要被執行(例如,無操縱;廣播;來源的上轉換(up conversion);及目的地的下轉換(down conversion))。記憶體存取5320指令模板包含比例欄位5360,且選加地包含位移欄位5362A或位移比例欄位5362B。
藉由轉換支持,向量記憶體指令對記憶體執行向量載入及向量儲存。如正常的向量指令般,向量記憶體指令以像資料元件方式將資料傳輸自/至記憶體中,而真正被傳送的元件是由被選為寫入遮罩的向量遮罩的內容所指定。
記憶體存取指令模板-暫時
暫時資料是很可能足夠快地被再使用而從快取獲利之資料。但是,這是暗示,並且,不同的處理器可以用不同方式來實施它,包含完全忽略暗示。
記憶體存取指令模板-非暫時
非暫時資料是不太可能足夠快地被再使用以從第一層快取中的快取獲利之資料,且應被授予逐出優先權。但是,這是暗示,並且,不同的處理器可以以不同方式來實施它,包含完全忽略暗示。
類別B的指令模板
在類別B的指令模板的情況中,阿爾發欄位5352被解譯為寫入遮罩控制(Z)欄位5352C,其內容區別由寫入遮罩欄位5370控制的寫入遮罩是否應為合併或歸零。
在類別B的非記憶體存取5305指令模板的情況中,貝它欄位5354的部份是被解譯為RL欄位5357A,其內容區別不同的擴增操作類型中那一個操作類型是要被執行(例如,捨入5357A.1以及向量長度(VSIZE)5357A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份捨入控制型操作5312指令模板以及無記憶體存取、寫入遮罩控制、VSIZE類型操作5317指令模板),而貝它欄位5354的其餘部份區別具有指定類型的操作中何者是要被執行。在無記憶體存取5305指令模板中,比例欄位5360、位移欄位5362A、及位移比例欄位5362B未出現。
在無記憶體存取中、寫入遮罩控制、部份捨入控制型操作5310指令模板、貝它欄位5354的其餘部份被解譯為捨入操作欄位5359A且例外事件報告被禁能(被給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處置器(handler))。
捨入操作控制欄位5359A-正如同捨入操作控制欄位5358般,其內容區別捨入操作組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接近的)。因此,捨入操作控制欄位5359A允許以每一個指令為基礎之捨入模式的改變。在其中處理器包含用以指明捨入模式的控制暫存器之本發明的一個實施例中,捨入操作控制欄位5350的內容置換(override)該暫存器值。
在無記憶體存取、寫入遮罩控制,VSIZE類型操作5317指令模板中,貝它欄位5354的其餘部份被解譯為向量長度欄位5359B,其內容區別要對多個資料向量長度中的那一個資料向量長度要被執行(例如,128、256、或512位元組)。
在類別B的記憶體存取5320指令模板的情況中,貝它欄位5354的一部份被解譯為廣播欄位5357B,其內容區別廣播型資料操縱操作是否要被執行,而貝它欄位5354中的其餘部份被解譯為向量長度欄位5359B。記憶體存取5320指令模板包含比例欄位5360,且選加地包含位移欄位5362A或位移比例欄位5362B。
關於同屬向量友善指令格式5300,完全操作碼欄位5374係顯示包含格式欄位5340、基礎操作欄位5342、及資料元件寬度欄位5364。雖然顯示完全操作碼欄位5374包含所有這些欄位的一個實施例,但是,在未支持它們全部的實施例中,完全操作碼欄位5374包含少於所有這些欄位的欄位。完全操作碼欄位5374提供操作碼(opcode)。
擴增操作欄位5350、資料元件寬度欄位5364、及寫入遮罩欄位5370允許以同屬向量友善指令格式的指令為基礎來指明這些特點。
寫入遮罩欄位及資料元件寬度欄位的結合會產生類型化的指令,其中,它們允許根據不同的資料元件寬度來施加遮罩。
類別A及類別B之內發現的各種指令模板在不同的情況中是有利的。在本發明的某些實施例中,不同的處理器或是處理器之內不同的核心可以僅支持類別A、僅支持類別B、或支持這二等級。舉例而言,要用於一般目的之計算的高性能目的之亂序核心僅支持類別B,主要用於圖形及/或科學(通量)計算的核心僅支持類別A,以及用於支持二等級的核心可以支持二等級(當然,具有來自二等級的樣板及指令的某些混合,但非來自二等級的所有樣板及指令是在本發明的範圍之內)。而且,單一處理器包含多核心,所有這些核心支持相同等級,或者,其中,不同的核心支持不同的等級。舉例而言,在設有分別的圖形及通用核心的處理器中,主要用於圖形及/或科學計算的複數個圖形核心其中之一僅支持類別A,而一或更多個通用核心可為具有用於僅支持類別B的通用計算之亂序執行及暫存器重命名之高性能通用核心。不具有分別的圖形核心之另一處理器可以包含支持類別A和類別B的再一個通用有序或亂序核心。當然,在本發明的不同實施例中,來自一等級的特點也可在其他等級中實施。以高階語言撰寫的程式將被置於(舉例而言,僅即時被編譯或是靜態地被編譯成)各式各樣之不同的可執行形式中,包含:1)僅具有由用於執行的標的處理器所支持的等級的指令之形式;或是,2)具有使用所有等級的指令之不同組合撰寫的替代常式以及具有控制流程碼之形式,控制流程碼係根據由目前正在執行碼的處理器所支持的指令而選取要執行的常式。
示例性特定向量友善指令格式
圖54A為根據本發明實施例示出之示例性特定向量友善指令格式的方塊圖。圖54A顯示特定向量友善指令格式5400,其在指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值的情況中是特定的。特定向量友善指令格式5400可以被用來擴充x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其擴充(例如,AVX)。此格式維持與具有延伸的現有x86指令集的前綴編碼欄位、實數操作碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。顯示來自圖54A的欄位映射至來自圖53的欄位。
應瞭解,雖然為了說明而在同屬向量友善指令格式5300的上下文中參考特定向量友善指令格式5400,以說明本發明的實施例,但是,除非特別申明,否則本發明不侷限於特定向量友善指令格式5400。例如,同屬向量友善指令格式5300慮及用於各種欄位的各種可能大小,而特定向量友善指令格式5400係顯示為具有特定大小的欄位。具體例如,雖然資料元件寬度欄位5364係顯示為特定向量友善指令格式5400中的一個位元欄位,但是,本發明不限於此(亦即,同屬向量友善指令格式5300慮及資料元件寬度欄位5364的其他大小)。
同屬向量友善指令格式5300包括以圖54A中所示的次序列出的下述欄位。
EVEX前綴(位元組0-3)5402-以四位元組形式編碼。
格式欄位5340(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位5340以及其含有0×62(用於區別本發明的一個實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的一些位元欄位。
REX欄位5405(EVEX位元組1,位元[7-5])由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及5357BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應的VEX位元欄位相同的功能性,且使用1之補數形式來編碼,亦即,ZMM0被編碼為1111B,ZMM15被編碼為0000B。如同此技藝中所知般,指令的其他欄位將暫存器索引的較低的三個位元編碼(rrr、xxx、及bbb),使得藉由加上EVEX.R、EVEX.X、及EVEX.B,可以形成Rrrr、Xxxx、及Bbbb。
REX’欄位5310-這是REX’欄位5310的第一部份且是用以將擴充的32暫存器組的上16或下16編碼之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在本發明的一個實施例中,此位元與如下標示的其他位元以位元反轉格式儲存,以與BOUND指令區別(在已知的x86 32位元模式中),BOUND指令的實數操作碼位元組是62,但是,在MOD R/M欄位(下述)中未接受MOD欄位中11的值;本發明的替代實施例未以反轉格式儲存此位元及下述其他標示的位元。1的值用以將下16暫存器編碼。換言之,藉由結合來自其他欄位的EVEX.R’、EVEX.R、及其他RRR以形成R’Rrrr。
操作碼映射欄位5415(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先操作碼位元組(0F、0F 38、或0F 3)編碼。
資料元件寬度欄位5364(EVEX位元組2,位元[7]-W)-由記號EVEX.W來予以表示。EVEX.W用以界定資料類型的粒度(大小)(32位元資料元件或64位元資料元件)。
EVEX.vvvv 5420(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1之補數)形式指定的第一源暫存器運算元編碼,且對於具有2或更多個源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1之補數形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位5420將依反轉(1之補數)形式儲存的第一源暫存器指定符的4個低階位元編碼。取決於指令,額外的不同EVEX位元欄位被用來擴充指定符大小至32個暫存器。
EVEX.U 5368等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示類別A或EVEX.U0;假使EVEX.U=1,則其標示類別B或EVEX.U1。
前綴編碼欄位5425(EVEX位元組2,位元[1:0]-pp)-提供額外的位元用於基礎操作欄位。除了提供支持給EVEX前綴格式的舊有SSE指令,這也具有使SIMD前綴小巧化(而非要求位元組來表示SIMD前綴,EVEX前綴僅要求2位元)的優點。在一個實施例中,為了支持以舊有格式及EVEX前綴格式等二格式使用SIMD前綴(66H、F2H、F3H)之舊有SSE指令,這些舊有SIMD前綴被編碼成SIMD前綴編碼欄位;以及,在被提供給解碼器的PLA(使得PLA可以執行這些舊有指令的舊有及EVEX等二格式而不用修改)之前,在運行時間時被擴展成舊有SIMD前綴。雖然較新的指令可以直接使用EVEX前綴編碼欄位的內容作為操作碼擴充,但是,某些實施例為了一致性而以類似方式擴展但允許不同的意義由這些舊有SIMD前綴規定。替代實施例可以重新設計PLA以支持2位元SIMD前綴編碼,因而不要求擴展。
阿爾發欄位5352(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α顯示)-如以往所述般,此欄位是上下文特定的。
貝它欄位5354(EVEX位元組3,位元[6:4]-SSS;也稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以βββ顯示)-如以往所述般,此欄位是上下文特定的。
REX’欄位5310-這是REX’欄位的其餘部份且是可被用來將擴充的32暫存器組的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式來予以儲存。1的值用以將下16暫存器編碼。換言之,藉由結合EVEX.V’、EVEX.vvvv來形成V’VVVV。
寫入遮罩欄位5370(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在本發明的一個實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用硬線至所有或硬體之寫入遮罩,所述硬體是繞過遮罩硬體)。
實數操作碼欄位5430(位元組4)也稱為操作碼位元組。在此欄位中指定操作碼的一部份。
MOD R/M欄位5440(位元組5)包含MOD欄位5442、Reg欄位5444、及R/M欄位5446。如同先前所述般,MOD欄位5442的內容區別記憶體存取與非記憶體存取操作。Reg欄位5444的角色可以總結為二種情況:將目的地暫存器運算元或源暫存器運算元編碼,或是被當作操作碼擴充來處理且不被用來將任何指令運算元編碼。R/M欄位5446的角色可以包含下述:將參考記憶體位址的指令運算元編碼,或者,將目的地暫存器運算元或源暫存器運算元編碼。
比例、索引、基礎(SIB)位元組(位元組6)-如同先前所述般,比例欄位5350的內容是用於記憶體位址產生。SIB.xxx 5454及SIB.bbb 5456-這些欄位的內容先前已被述及與暫存器索引Xxxx及Bbbb有關。
位移欄位5362A(位元組7-10)-當MOD欄位5442含有10時,位元組7-10是位移欄位5362A,且其與舊有32位元位移(disp32)相同般地運作並以位元組粒度運作。
位移因子欄位5362B(位元組7)-當MOD欄位5442含有01時,位元組7是位移因子欄位5362B。此欄位的位置與以位元組粒度運作的舊有x86指令集8位元位移(disp8)的位置相同。由於disp8是正負號擴充,所以,其僅可以在-128與127位元組差距之間定址;以64位元組快取線的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因子欄位5362B是disp8的再解譯;當使用位移因子欄位5362B時,真實的位移由位移因子欄位的內容乘以記憶體運算元存取之大小(N)所決定。此類型的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,且因此,位址差距的冗餘低階位元不需被編碼。換言之,位移因子欄位5362B替代舊有x86指令集8位元位移。因此,位移因子欄位5362B以同於x86指令集8位元位移的方式編碼(使得ModRM/SIB編碼規則不變),僅有的例外是disp8被過載至disp8*N。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小比例化以取得位元組方式的位址差距)。立即欄位5372如先前所述地操作。
完全操作碼欄位
圖54B為根據本發明一實施例示出構成完全操作碼欄位5374之特定向量友善指令格式5400的欄位的方塊圖。具體而言,完全操作碼欄位5374包含格式欄位5340、基礎操作欄位5342、及資料元件寬度(W)欄位5364。基礎操作欄位5342包含前綴編碼欄位5425、操作碼映射欄位5415、及實數操作碼欄位5430。
暫存器索引欄位
圖54C為根據本發明一實施例示出構成暫存器索引欄位5344之特定向量友善指令格式5400的欄位的方塊圖。具體而言,暫存器索引欄位5344包含REX欄位5405、REX’欄位5410、MODR/M.reg欄位5444、MODR/M.r/m欄位5446、VVVV欄位5420、xxx欄位5454、及bbb欄位5456。
擴增操作欄位
圖54D為根據本發明一實施例示出構成擴增操作欄位5350之特定的向量友善指令格式5400的欄位的方塊圖。當等級(U)欄位5368含有0時,其意謂EVEX.U0(類別A 5368A);當其含有1時,其表示EVEX.U1(類別B 5368B)。當U=0及MOD欄位5442含有11時(表示無記憶體存取操作),阿爾發欄位5352(EVEX位元組3,位元[7]-EH)被解譯為rs欄位5352A。當rs欄位5352A含有1(捨入5352A.1)時,貝它欄位5354(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位5354A。捨入控制欄位5354A包含一位元SAE欄位5356及二位元捨入操作欄位5358。當rs欄位5352A含有0(資料轉換5352A.2)時,貝它欄位5354(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料轉換欄位5354B。當U=0及MOD欄位5442含有00、01、或10(表示記憶體存取操作)時,阿爾發欄位5352(EVEX位元組3,位元[7]-EH)被解譯為逐出暗示(EH)欄位5352B及貝它欄位5354(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料操縱欄位5354C。
當U=1時,阿爾發欄位5352(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位5352C。當U=1及MOD欄位5442含有11(表示無記憶體存取操作)時,貝它欄位5354的一部份(EVEX位元組3,位元[4]-S0)被解譯為RL欄位5357A;當其含有1(捨入5357A.1)時,貝它欄位5354的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨入操作欄位5359A,而當RL欄位5357A含有0(VSIZE 5357.A2)時,貝它欄位5354的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位5359B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位5442含有00、01或10(表示記憶體存取操作)時,貝它欄位5354(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位5359B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位5357B(EVEX位元組3,位元[4]-B)。
示例性暫存器架構
圖55為根據本發明一實施例之暫存器架構5500的方塊圖。於所示的實施例中,將有512位元寬之32向量暫存器5510;這些暫存器被被稱為zmm0至zmm31(zmm暫存器組)。其他實施例可包括一組十六個向量暫存器,而不是zmm暫存器組,所述十六個向量暫存器是256位元寬;這些暫存器被標示為ymm0到ymm15(ymm暫存器組)。其他實施例可包括一組十六個向量暫存器,而不是zmm暫存器組或ymm暫存器組,所述十六個向量暫存器是128位元寬;這些暫存器被標示為xmm0到xmm15(xmm暫存器組)。在圖55中,較低16 zmm暫存器的低階256位元被覆加在暫存器ymm0-15上,以及較低16 zmm暫存器的低階128位元(ymm暫存器的低階128位元)覆加在暫存器xmm0-15上。
換言之,向量長度欄位5359B在最大長度與一或更多個其他較短的長度之間選取,其中,每一個此較短長度是先前長度的長度之一半;以及,不具向量長度欄位5359B的指令模板對最大向量長度操作。此外,在一個實施例中,特定向量友善指令格式5400的類別B指令模板對緊縮的或純量的單一/雙倍精度浮點資料及緊縮的或純量的整數資料操作。純量操作是對zmm/ymm/xmm暫存器中的最低階資料元件位置執行的操作;較高階資料元件位置取決於實施例要麼是與它們在指令之前相同不然就是歸零。
寫入遮罩暫存器5515--於所示的實施例中,有8個寫入遮罩暫存器(k0到k7),每個64位元大小。在替代實施例中,寫入遮罩暫存器5515的大小為16位元。於一實施例中,向量遮罩暫存器k0不能用作寫入遮罩;當通常指示k0的編碼用於寫入遮罩時,其選擇0xFFFF的硬線寫入遮罩有效地禁用該指令的寫入遮罩。
通用暫存器5525--於所示的實施例中,有16個64位元通用暫存器,它們與現有的x86可定址模式一起使用以尋址記憶體運算元。這些暫存器由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8至R15引用。
純量浮點堆疊暫存器檔案(x87堆疊)5545,MMX緊縮整數平坦暫存器檔案5550疊於其上-在所示的實施例中,x87堆疊是八元件堆疊,用以使用x87指令集延伸,對32/64/80位元浮點資料執行純量浮點操作;而MMX暫存器被用來對64位元緊縮整數資料執行操作,以及固持用於某些在MMX及XMM暫存器之間執行的操作之運算元。
本發明的替代實施例可以使用更寬或更窄的暫存器。另外,本發明的替代實施例可以使用更多、更少或不同的暫存器檔案和暫存器。
仿真(包含二進制轉譯、碼變形等)
於一些情況下,指令轉換器可用以將指令從來源指令集轉換成目標指令集。例如,指令轉換器可將一指令轉譯(例如使用靜態二進制轉譯、含動態編譯的動態二進制轉譯)、變形、仿真或以其他方式轉換成欲藉核心處理的一或多個其他指令。指令轉換器可於軟體、硬體、韌體或其組合實施。指令轉換器可在處理器上、不在處理器上、或部分在及部分不在處理器上。
圖56為根據本發明實施例之對比軟體指令轉換器用以將在來源指令集中之二進制指令轉換成在目標指令集中之二進制指令的方塊圖。於所示的實施例中,指令轉換器為軟體指令轉換器,但另外,指令轉換器可於軟體、韌體、硬體、或其各項組合實施。圖56示出了高階語言5602中的程式可以使用x86編譯器5604編譯以產生可以由具有至少一個x86指令集核心之處理器5616原生地執行的x86二進制碼5606。具有至少一x86指令集核心之處理器5616表示藉相容式執行或以其他方式處理(1)英特爾x86指令集核心的該指令集之一相當大部分或(2)靶定以在具至少一x86指令集核心的一英特爾處理器上執行的應用程式或其他軟體之目標碼版本而執行與具至少一x86指令集核心的一英特爾處理器實質上相同功能以達成與具至少一x86指令集核心的一英特爾處理器實質上相同結果。x86編譯器5604表示可操作而產生x86二進制碼5606(例如目標碼)的一編碼器,該等x86二進制碼5606有或無額外鏈結處理可在具至少一x86指令集核心的該處理器5616上執行。類似地,圖56顯示於高階語言5602的該程式可使用替代的指令集編譯器5608編譯以產生另一指令集二進制碼5610,可藉不具至少一x86指令集核心之處理器5614本機執行(例如具有執行加州昇陽谷的MIPS技術公司之MIPS指令集和/或執行加州昇陽谷的ARM控股公司的ARM指令集之核心的一處理器)。指令轉換器5612係用以將x86二進制碼5606轉換成可由不具一x86指令集核心的該處理器5614本機執行的碼。此種轉換碼不可能與另一指令集二進制碼5610相同,原因在於難以製造可達成此項目的之一指令轉換器;但轉換碼將達成一般操作且係由得自該另一指令集的指令組成。因此,指令轉換器5612表示軟體、韌體、硬體或其組合其透過仿真、模擬或任何其他處理允許不具有x86指令集處理器或核心的一處理器或其他電子裝置執行該x86二進制碼5606。
圖57 根據各個實施例示出資料中心5700的概念性概觀,資料中心5700一般可以代表資料中心或本文敘述的一或多個技術中的其他類型的計算網路。如圖57所示,資料中心5700一般可含有複數個框架,每一個框架可容置包括相應的實體資源組的計算設備。於圖57中所描繪之特定非限制範例中,資料中心5700含有4個框架5702A至5702D,其容置包含相應的實體資源組(PCR)5705A至5705D的計算設備。根據這個範例,資料中心5700之實體資源5706的集體組包括分散於框架5702A至5702D中的實體資源5705A至5705D的各種組。實體資源5706可包括多個類型的資源,諸如例如處理器、共處理器、加速器、場效可程式閘陣列(FPGA)、記憶體和儲存器。該實施例不限制於這些範例。
說明性資料中心5700在許多方面與典型的數據中心不同。例如,在說明性實施例中,其上放置諸如CPU、記憶體和其他組件的電路板(「滑槽」)被設計用於增加熱效能。具體地說,於說明性實施例中,滑槽比典型的板更淺。換句話說,滑槽從前面到後面都是冷卻風扇所在的地方。這減少了空氣必須通過電路板上之元件之路徑長度。此外,滑槽上的組件與典型的電路板中間隔得更遠,並且該些組件被配置以減少或消除陰影(即,在另一組件之氣流路徑中的一組件)。於說明性實施例中,諸如處理器的處理組件位於滑槽的頂部,而靠近的記憶體(諸如DIMM)位於滑槽的底部。由於這種設計所提供的增強的氣流,這些組件可以在比典型系統更高的頻率和電力水平下工作,從而提高了效能。此外,滑槽被組態為盲目地與每個框架5702A、5702B、5702C、5702D中的電力和資料通訊電纜配合,從而增強其快速移除、升級、重新安裝和/或更換的能力。類似地,位於滑槽上的單獨的組件(諸如,處理器、加速器、記憶體和資料儲存器驅動)由於它們彼此之間增加的間距而被組態以簡單地升級。於說明性實施例中,組件額外地包括硬體認證特徵以證明其真偽。
再者,於說明性實施例中,資料中心5700利用支持包括乙太網路和全向路徑的多種其他網路架構的單個網路架構(「結構」)。於說明性實施例中,滑槽經由光纖耦接到開關,所述光纖提供比典型的扭繩對佈線(例如,類別5、類別5e、類別6等)更高的頻寬和更低的潛時。由於高頻寬、低潛時的互連和網路架構,資料中心5700可以在使用中匯集資源(諸如記憶體、加速器(例如圖形加速器、FPGA、ASIC等))及實體分離的資料儲存驅動,並且根據需要提供它們來計算資源(例如,處理器),使計算資源能夠存取匯集的資源,就好像它們是本地的一樣。說明性資料中心5700額外地接收用於各種資源之使用資訊、基於過去的資源使用預測不同類型的工作量的資源使用以及基於該資訊動態地重新分配資源。
資料中心5700之框架5702A、5702B、5702C、5702D可包括有助於各種類型的維護任務的自動化的實體設計特徵。例如,資料中心5700可以使用被設計為機器人式存取的框架來實施,並且接受和容置機器人式可操作的資源滑槽。此外,於說明性實施例中,框架5702A、5702B、5702C、5702D包括接收比典型用於電源之更大電壓的集成電源。增加的電壓使電源能夠為每個滑槽上的組件提供額外的電力,使組件能夠以高於典型的頻率工作。圖58 示出資料中心5700之框架202的示例性邏輯組態。如圖58所示,框架5802一般可容置複數個滑槽,每一個滑槽可包含實體資源組的個別組。在圖58中所描繪之特定非限制範例,框架5802容置包含實體資源5805-1至5805-4之個別組的滑槽5804-1至5804-4,其中每個個別的實體資源組構成框架5802中包括的集體的實體資源組5806的一部分。關於圖1,如果框架5802係代表-例如-框架102A,則實體資源5806可相應於包含在框架102A中的實體資源105A。於此範例的上下文中,實體資源105A可因此由個別的實體資源組構成,包括包含在框架5802之滑槽5804-1至5804-4中的實體儲存資源5805-1、實體加速器資源5805-2、實體記憶體資源5804-3和實體計算資源5805-5。該實施例不限制於這個範例。每個滑槽可以含有各種類型的實體資源(例如,計算、記憶體、加速器、儲存)之每一者的池。藉由具有包含分離資源的機器人式可存取的和機器人式可操縱的滑槽,每種資源類型可以相互獨立地升級,並且以它們自己的優化刷新率進行升級。
圖59根據各個實施例示出資料中心5900的範例,資料中心5900一般可以代表在其中/為此本文所敘述的一或多種技術可以被實施的一種資料中心。在圖59中所描繪之特定非限制範例中,資料中心5900包含框架5902-1至5902-32。在各個實施例中,資料中心5900之框架可以依定義和/或適應各種存取路徑的方式配置。例如,如圖59所示,資料中心5900之框架可以依定義和/或適應存取路徑5911A、5911B、5911C和5911D的方式配置。在一些實施例中,這種存取路徑的存在通常可以使諸如機器人的維護設備之類的自動維護設備以能夠實體地存取容置在資料中心5900的各個框架中的計算設備,並且執行自動化維護任務(例如,替換失敗的滑槽、升級滑槽)。在各種實施例中,存取路徑5911A、5911B、5911C和5911D的尺寸、框架5902-1至5902-32的尺寸和/或資料中心5900之實體佈局的一個或多個其他態樣可被選擇,以促進這種自動操作。該實施例不限制於這上下文。
圖60根據各個實施例示出資料中心6000的範例,資料中心6000一般可以代表在其中/為此本文所敘述的一或多種技術可以被實施的一種資料中心。如圖60所示,資料中心6000可以具有光學結構6012。光學結構6012通常可包含光學傳訊媒體(例如光纜)和光學切換基礎設施的組合,經由該組合資料中心6000中的任何特定滑槽可以向資料中心6000中的每個其他滑槽發送訊號(並且從中接收訊號)。光學結構6012提供給任何給定的滑槽之傳訊連接性可包括與同一框架中的其他滑槽和其他框架中的滑槽的連接。在圖60中所描繪之特定非限制範例中,資料中心6000包含四個框架6002A至6002D。框架6002A至6002D容置個別的滑槽對6004A-1和6004A-2、6004B-1和6004B-2、6004C-1和6004C-2以及6004D-1和6004D-2。因此,於此範例中,資料中心6000包含總共八個滑槽。經由光學結構6012,每一個此種滑槽可具有與資料中心6000中七個其他滑槽中的每一者的傳訊連接。例如,經由光學結構6012、框架6002A中的滑槽6004A-1可以具有與框架6002A中的滑槽6004A-2以及分佈在資料中心6000的其他框架6002B、6002C和6002D中的六個其他滑槽6004B-1、6004B-2、6004C-1、6004C-2、6004D-1和6004D-2的傳訊連接。該實施例不限制於這個範例。
圖5示出連接方案500的概述,該連接方案500通常可以表示在一些實施例中可以在資料中心的各個滑槽之間建立的鏈路層連接,諸如圖57、59和60中的任何範例資料中心5700、5900和6000。連接方案6100可以使用以雙模式光學切換基礎設施6114為特徵的光學結構來實施。雙模式光學切換基礎設施6114通常可以包括切換基礎設施,切換基礎設施能夠經由相同的統一的光學傳訊媒體集合根據多個鏈路層協定來接收通訊,並且適當地切換此種通訊。在各個實施例中,雙模式光學切換基礎設施6114可以使用一或多個雙模式光學切換6115來實施。在各個實施例中,雙模式光學切換6115通常可包含高基(high-radix)切換。在一些實施例中,雙模式光學切換6115可包含多層切換,諸如四層切換。在各個實施例中,雙模式光學切換6115可以具有集成矽光子特性,與傳統的切換裝置相比,使他們能夠切換通訊,並顯著減少潛時。在一些實施例中,雙模式光學切換6115可以構成額外包括一或多個雙模式光學脊柱切換6120的葉脊柱架構中的葉切換6130。
在各個實施例中,雙模式光學切換可以能夠經由光學結構之光學傳訊媒體根據第二、高效能計算(HPC)鏈路層協定(例如,英特爾的全向路徑架構(Omni-Path),Infiniband)接收承載網際網路協定(IP封包)和通訊的乙太網路協定通訊兩者。如圖61A所示,相對於具有到光學結構的光學傳訊連接的任何特定的滑槽對6104A和6104B,連接方案6100因此可以經由乙太網路鏈路和HPC鏈路提供對鏈路層連接的支持。因此,乙太網路和HPC通訊都可以藉由單個高頻寬、低潛時切換結構來支持。該實施例不限制於這個範例。
圖61B根據一些實施例示出可以表示圖57至圖60中所描繪之框架中的任何特定一者之架構的框架架構600的總體概述。如圖61B所示,框架架構600通常可以具有複數個滑槽空間,滑槽可以插入滑槽空間中,每個滑槽空間都可以經由框架存取區域601機器人式地可存取。在圖61B中所描繪之特定非限制範例中,框架架構6100具有五個滑槽空間6103-1至6103-5。滑槽空間6103-1至6103-5具有個別的多用途連接器模組(MPCM)6116-1至6116-5。圖61C是圖61B之框架架構6100之一部分的詳細圖。如圖61C所示,當將滑槽插入到滑槽空間6103-1至6103-5中的任何一個給定的滑槽空間中時,相應的MPCM(例如,MPCM 6116-3)可以與插入的滑槽之對應MPCM 6120耦接。這種耦接可以使插入的滑槽與其所容置的框架之傳訊基礎設施和電力基礎設施連接。
在藉由框架架構6100容納的滑槽類型中可以為具有擴展能力之一或多種類型的滑槽。圖62示出可代表此種類型的滑槽的滑槽6204的範例。如圖62所示,當滑槽6204被插入至滑槽空間(諸如,圖61A之滑槽空間603-1至603-5的任一者)中時,滑槽6204可包含實體資源6205組以及設計來與對應的MPCM耦接之MPCM6216。滑槽6204還可以具有擴展連接器6217。擴展連接器6217通常可以包括能夠接受一或多種類型的擴展模組(諸如,擴展滑槽6218)的插槽、槽或其他類型的連接元件。藉由與擴展滑槽6218上之對應的連接器耦接,擴展連接器6217可以向實體資源6205提供對位於擴展滑槽6218上的補充計算資源6205B的存取。該實施例不限制於這上下文。
圖63示出框架架構800的範例,該框架架構800可代表框架架構,該框架架構可以被實現以為了具有擴展能力之滑槽(例如圖62的滑槽6204)提供支持。在圖63中所描繪之特定非限制範例中,框架架構6300包括七個滑槽空間6303-1至6303-7,其具有個別的MPCM6316-1至6316-7。滑槽空間6303-1至6303-7包括個別的主要區域6303-1A到6303-7A和個別的擴展區域6303-1B到6303-7B。關於每個此種的滑槽空間,當相應的MPCM與插入的滑槽之對應的MPCM耦接時,主要區域通常可以構成實體地容置插入的滑槽之滑槽空間的區域。在插入的滑槽組態有此種模組的情況下,擴展區域通常可以構成滑槽空間的區域,其可以實體地容置擴展模組,例如圖62的擴展滑槽6218。
圖64根據一些實施例示出可代表框架之框架902的範例,其根據圖8之框架架構800實施。在圖64中所描繪之特定非限制範例中,框架6402具有七個滑槽空間6403-1至6403-7,其包括個別的主要區域6403-1A至6403-7A及個別的擴展區域6403-1B至6403-7B。在各個實施例中,框架6402中的溫度控制可使用氣冷系統實施。例如,如圖64所示,框架6402可具有複數個風扇6419,其通常配置以在各個滑槽空間6403-1至6403-7之中提供氣冷。在一些實施例中,滑槽空間之高度大於傳統的「1U」伺服器高度。在此種實施例中,相比於在傳統框架組態中使用的風扇,風扇6419通常可包含相對慢、較大直徑的冷卻風扇。以較低的速度運行較大直徑的冷卻風扇相對於以較高速度運行的較小直徑的冷卻風扇可增加風扇壽命,同時仍提供相同的冷卻量。該滑槽在實體上比傳統的框架尺寸更淺。而且,組件被配置在每個滑槽上以減少熱陰影(即,不沿氣流方向串列配置)。因此,更寬、更淺的滑槽可以提高裝置的效能,因為裝置可以在更高的熱包封(thermal envelope)(例如250W)下運作,這是由於改進了散熱(即,沒有熱陰影,裝置之間有更多的間距,更多的空間用於較大的散熱片等)。
MPCM 6416-1至6416-7可被組態以向插入的滑槽提供對從個別的電力模組6420-1到6420-7獲得的電力的存取,電力模組6420-1到6420-7中的每一個都可以從外部電源6421汲取電力。在各種實施例中,外部電源6421可以將交流(AC)電力遞送到框架6402,並且電力模塊6420-1到6420-7可以被配置為將此種AC電力轉換成直流(DC)電力以被發送到插入的滑槽。在一些實施例中,例如,電力模塊6420-1到6420-7可以被配置為將277伏AC電力轉換成12伏DC電力,以經由相應的MPCM 6416-1到6416-7供應到插入的滑槽。該實施例不限制於這個範例。
MPCM 6416-1至6416-7還可以被配置為向具有光學傳訊連接之插入的滑槽給雙模式光學切換基礎設施6414,其可以相同於-或類似於-圖5之雙模式光學切換基礎設施514。在各個實施例中,包含在MPCM6416-1至6416-7中的光學連接器可被設計為與包含在插入的滑槽之MPCM中的光學連接器耦接,以經由光學電纜6422-1至6422-7之個別的長度提供此種具有光學傳訊連接的框架給雙模式光學切換基礎設施6414。在一些實施例中,每一個此種光學電纜之長度可從其相應的MPCM擴展至框架6402之滑槽空間外部的光學互連織機6423。在各個實施例中,光學互連織機6423可被配置以通過框架6402之支撐柱或其他類型的承載元件。該實施例不限制於這上下文。因為插入的滑槽經由MPCM連接至光學切換基礎設施,可以節省通常用於手動組態框架電纜以適應新插入的框架的資源。
圖65根據一些實施例示出可代表被設計成與圖64的框架6402一起使用的滑槽的滑槽6504的範例。滑槽6504可具有包含光學連接器6516A和電力連接器6516B的MPCM 6516,並且被設計成與MPCM 6516插入滑槽空間中的一個滑槽空間之對應的MPCM結合。將MPCM 6516與此種對應的MPCM耦接可以使得電力連接器6516與包括在對應的MPCM中的電力連接器耦接。這通常可以使滑槽6504之實體資源6505能夠經由電力連接器6516和將電力連接器6516導電地耦接到實體資源6505之電力傳輸媒體6524從外部源供電。
滑槽6504也可包括雙模式光學網路介面電路6526。雙模式光學網路介面電路6526通常可包含能夠根據圖64的雙模式光學切換基礎設施6414所支持的多個鏈路層協定中的每一個在光學傳訊媒體上進行通訊的電路。在一些實施例中,雙模式光學網路介面電路6526既能夠進行乙太網路協定通訊又能夠進行根據第二、高效能協定之通訊兩者。在各種實施例中,雙模式光學網路介面電路6526可包括一或多個光學收發器模組6527,其中的每一個可以能夠透過一或多個光學通道中的每一個傳輸和接收光學訊號。該實施例不限制於這上下文。
將MPCM 6516與給定框架中的滑槽空間之對應的MPCM耦接可以使得光學連接器6516A與包含在對應的MPCM中的光學連接器耦接。這通常可以經由光學通道6525組中的每一個建立滑槽之光學電纜與雙模式光學網路介面電路6526之間的光學連接。雙模式光學網路介面電路6526可以經由電傳訊媒體6528與滑槽6504的實體資源6505進行通訊。除了滑槽的尺寸和滑槽上的組件的配置以提供改進的冷卻並且能夠在相對較高的熱包封(例如250W)下操作之外,如上參考圖64所述,在一些實施例中,滑槽可包括一或多個額外的特徵以促進氣冷,諸如配置用於耗散由實體資源6505產生之熱量的熱管和/或散熱片。值得注意的是,儘管圖65中所示的範例滑槽6504不具有擴展連接器,但是具有滑槽6504之設計元件的任何給定的滑槽也可以根據一些實施例具有擴展連接器。該實施例不限制於這上下文。
圖66根據各個實施例示出資料中心6600的範例,資料中心6600一般可以代表在其中/對此本文所敘述的一或多種技術可以被實施的一種資料中心。如圖66所示,實體基礎設施管理框架6650A可被實施以促進資料中心6600之實體基礎設施6600A之管理。在各種實施例中,實體基礎設施管理框架6650A中一個功能可以是管理資料中心6600內自動維護功能,諸如使用機器人維護設備來維護實體基礎設施6600A內的計算設備。在一些實施例中,實體基礎設施6600A可具有一個先進的遙測系統,其執行遙測報告,這是足夠強大的,以支持實體基礎設施6600A之遠程自動化管理。在各種實施例中,由此種先進遙測系統提供的遙測資訊可以支持諸如故障預測/預防能力和容量規劃能力的特徵。在一些實施例中,實體基礎設施管理框架6650A還可以被組態為使用硬體認證技術來管理實體基礎設施組件的認證。例如,機器人可以藉由分析從與要被安裝的每個組件相關聯的射頻識別(RFID)標籤收集的資訊來驗證組件在安裝之前的真偽。該實施例不限制於這上下文。
如圖66所示,資料中心6600之實體基礎設施6600A可包含光學結構6612,其可包括雙模式光學切換基礎設施6614。光學結構6612和雙模式光學切換基礎設施6614可分別相同於-或類似於-圖4之光學結構412和圖5之雙模式光學切換基礎設施514,並且可在資料中心6600的滑槽之間提供高頻寬、低潛時、多協定連接。如上所討論,與參考圖1,在各個實施例中,此種連接的可用性可以使分離和動態地匯集諸如加速器、記憶體和儲存的資源成為可能。在一些實施例中,例如,資料中心6600之實體基礎設施6600A中可以包括一或多個匯集的加速器滑槽6630,其中的每一個可以包含-諸如共處理器和/或FPGA的加速器資源池,例如- 經由光學結構6612和雙模式光學切換基礎設施6614全局可存取至其他滑槽。
於另一範例中,在各個實施例中,資料中心6600之實體基礎設施6600A中可以包括一或多個匯集的儲存滑槽6632,其中的每一個可以包含儲存資源池,其經由光學結構6612和雙模式光學切換基礎設施6614全局可存取至其他滑槽。在一些實施例中,此種匯集的儲存滑槽6632可包含固態儲存裝置(諸如,固態驅動(SSD))池。在各種實施例中,資料中心6600之實體基礎設施6600A中可以包括一或多個高效能處理滑槽6634。在一些實施例中,高效能處理滑槽6634可以包括高效能處理器池,以及增強氣冷以產生高達250W或更多的更高熱包封的冷卻特徵。在各種實施例中,任何給定的高效能處理滑槽6634可具有可接受遠程記憶體擴展滑槽的擴展連接器6617,使得高效能處理滑槽6634本地可用的遠程記憶體與處理器分離並且包括在滑槽附近的記憶體。在一些實施例中,可以使用包含低潛時SSD儲存的擴展滑槽將此種高效能處理滑槽6634組態為遠程記憶體。光學基礎設施允許在一滑槽上的計算資源利用遠端加速器/FPGA、記憶體和/或SSD資源,該SSD資源從位於同一框架或資料中心之任何其他框架上的滑槽分離。遠程資源可以位於上面參照圖61敘述的脊柱葉網路架構中的一切換跳開或兩切換跳開。該實施例不限制於這上下文。
在各種實施例中,可以將一或多個抽象層應用於實體基礎設施6600A之實體資源,以便定義諸如軟體定義的基礎設施6600B的虛擬基礎設施。在一些實施例中,可以分配軟體定義的基礎設施6600B的虛擬計算資源6636以支持雲端服務6640的供應。在各種實施例中,特定虛擬計算資源6636組可以用SDI服務6638的形式被分組以提供給雲端服務6640。雲端服務6640的範例可以包括但不限於軟體即時服務(SaaS)服務6642、平台即時服務(PaaS)服務6644以及基礎設施即時服務(IaaS)服務6646。
在一些實施例中,軟體定義的基礎設施6600B的管理可以使用虛擬基礎設施管理框架6650B來進行。在各種實施例中,虛擬基礎設施管理框架6650B可以被設計成結合管理虛擬計算資源6636和/或SDI服務6638至雲端服務6640的分配來實施工作量指紋分析技術和/或機器學習技術。在一些實施例中,虛擬基礎設施管理框架6650B可以結合執行此種資源分配來使用/諮詢遙測資料。在各個實施例中,可以實施應用/服務管理框架6650C以便為雲端服務6640提供QoS管理能力。該實施例不限制於這上下文。
流程圖中的操作可能已經參考其他附圖的示例性實施例敘述。然而,應該理解的是,流程圖的操作可以由本發明的實施例而不是參考其他附圖討論的那些實施例來執行,並且參照其他附圖討論之本發明實施例可以執行與參考流程圖所討論之不同的操作。再者,雖然附圖中的流程圖示出了由本發明的某些實施例執行之操作的特定順序,但是應當理解的是,這樣的順序是示例性的(例如,替代實施例可以用不同的順序執行操作、組合某些操作、重疊某些操作等)。
本發明之實施例的一或多個部分可以使用軟體、韌體和/或硬體的不同組合來實施。實施例可以使用電子裝置來實施,該電子裝置儲存和傳輸(內部地和/或透過網路與其他電子裝置)碼(其由軟體指令組成並且有時被稱為電腦程式碼或電腦程式)和/或使用機器可讀取媒體(也稱為電腦可讀取媒體)的資料,機器可讀取媒體可為諸如機器可讀取儲存媒體(例如,磁碟、光碟、唯讀記憶體(ROM)、快閃記憶體裝置、相變記憶體)和機器可讀取傳輸媒體(也稱為載體)(例如,電、光學、無線電、聲波或其他形式的傳播訊號-諸如載波、紅外線訊號)。因此,電子裝置(例如,電腦)可包括硬體和軟體,諸如耦接到一或多個機器可讀取儲存媒體的一或多個處理器組,用以儲存用於在該處理器組上執行和/或儲存資料的碼。例如,電子裝置可包括含有碼的非揮發性記憶體,因為即使在電子裝置被關閉時(當電力被移除時),非揮發性記憶體也可以保持碼/資料,並且在打開電子裝置時將由該電子裝置之處理器執行之碼的一部分從電子裝置之較慢的非揮發性記憶體複製到揮發性記憶體(例如,動態隨機存取記憶體(DRAM),靜態隨機存取記憶體(SRAM))。典型的電子裝置還包括用以建立與其他電子裝置的網路連接(使用傳播訊號傳輸和/或接收碼和/或資料)的一組或一或多個實體網路介面。
雖然本發明已經透過若干實施例進行了敘述,但是本領域技術人員將認識到,本發明不限於所敘述的實施例,可以在所附權利要求的精神和範圍內進行修改和變更來實施。敘述因此被視為說明性而非限制性。
100:處理器管線
102:提取階段
104:長度解碼階段
106:解碼階段
108:配置階段
110:重新命名階段
112:排程階段
114:暫存器讀取/記憶體讀取階段
116:執行階段
118:回寫/記憶體寫入階段
122:例外處置階段
124:確定階段
130:前端單元
132:分支預測單元
134:指令快取單元
136:指令轉譯後備緩衝器(TLB)
138:指令提取單元
140:解碼單元
150:執行引擎單元
152:重新命名/配置器單元
154:撤回單元
156:排程器單元
158:實體暫存器檔案單元
160:執行叢集
162:執行單元
164:記憶體存取單元
170:記憶體單元
172:資料TLB單元
174:資料快取單元
176:階層2(L2)快取單元
190:處理器核心
200:指令解碼器
202:晶粒上互連網路
204:階層2(L2)快取
206:L1快取
206A:L1資料快取
208:純量單元
210:向量單元
212:純量暫存器
214:向量暫存器
220:調合單元
222A-B:數值轉換單元
224:複製單元
226:寫入遮蔽暫存器
228:16-寬的ALU
300:核心
310:前端單元
311:分支預測單元
312:微操作快取(op-快取)單元
313:指令快取(i-快取)單元
314:解碼單元
315:微操作(微-op)佇列單元
320:整數單元
321:整數重新命名單元
322A-F:整數排程器單元
323:整數實體暫存器檔案
324A-F:算數邏輯單元(ALU)
325:位址產生單元(AGU)
330:FP單元
331:FP重新命名單元
332:FP排程器單元
333:FP暫存器檔案
334A-D:FP乘法器
335:FP加法器
340:載入儲存單元
341:載入儲存佇列單元
342:資料快取(d-快取)單元
350:階層2(L2)快取單元
400:提取單元
410:下一個程式計數(PC)單元
420:變換後備緩衝器(TLB)單元
430:散列感知單元
440:BTB返回堆疊間接目標陣列(ITA)單元
450:實體請求佇列單元
460:微標籤單元
470:i-快取單元
500:解碼單元
510:指令位元組緩衝器單元
520:拾取單元
530:解碼單元
540:op-快取單元
550:微-op佇列單元
560:微碼唯讀記憶體(ROM)單元
570:堆疊引擎記憶體檔案(memfile)單元
580:調度單元
600:整數執行單元
610:映射單元
620:撤回佇列單元
630A-D:算數邏輯佇列(ALQ)單元
640A-B:位址產生佇列(AGQ)單元
650:實體暫存器檔案單元
660:轉發多工器(mux)單元
670A-D:ALU
680A-B:AGU
690:載入儲存單元
700:FP執行單元
710:不可排程微-op佇列單元
720:可排程微-op佇列單元
730:撤回佇列單元
740:FP轉換單元
750:FP實體暫存器檔案
760:轉發mux單元
770A-B:FP乘法器
780A-B:FP加法器
800:載入/儲存單元
810:載入佇列單元
811A-B:載入管線拾取單元
812A-B:TLB單元
813A-B:資料管線單元
820:儲存佇列單元
821:預提取單元
822:儲存管線拾取單元
823:儲存管線單元
824:儲存提交單元
830:L1/L2 TLB和資料快取標籤陣列
840:L1資料快取
850:記憶體位址緩衝器
860:寫入組合緩衝器
900:核心
910:前端單元
911:分支預測單元
912:op-快取單元
913:i-快取單元
914:解碼單元
915:微-op佇列單元
916:指令TLB單元
920:整數單元
921:整數重新命名單元
922:整數排程器單元
923:整數實體暫存器檔案
924:ALU
925:AGU
930:FP單元
931:FP重新命名單元
932:FP排程器單元
933:FP暫存器檔案
934A-B:FP乘法器
935A-B:FP加法器
940:載入儲存單元
941A:載入佇列單元
941B:儲存佇列單元
942:資料快取(d-快取)單元
943:TLB單元
950:L2快取單元
960:撤回單元
1001:型態偵測方塊
1200:資源配置器
1210:追蹤器電路
1212:效能歷史電路
1212A,1214A:硬體計數器
1212B,1214B:硬體比較器
1214:使用歷史電路
1216:執行緒狀態電路
1220:政策電路
1222:電力政策電路
1224:公平政策電路
1226:效能保證政策電路
1228:通量政策電路
1230:決策電路
1240:分配器電路
1240A-B:請求
1240C:「去」訊號
1242:暫存器
1244:計數器
1246:比較器
1250:資源
1300:處理器
1301:事件偵測方塊
1302:效能計數器旗標方塊
1303:死鎖預防方塊
1304:指令類型/分類方塊
1501:競爭共享資源
1502:演算法優先級方塊
1601:分支目標緩衝器(BTB)
1602:分區邏輯
1603:輸入
1700:仲裁電路
1710:簡單循環電路
1720:高通量循環電路
1730:動態循環電路
1732:計數器
1740:軟體可控制循環電路
1742:暫存器
1800:死鎖避免硬體
1810:分配器電路
1820:資源使用計數器
1901:記憶體
1902:記憶體位置
1903:第一µop
1904:第二µop
1905:混合
1906:暫存器檔案
2002,2004,2005,2202,2204,2205,2601,2602,2603,2604,4801,4802,4803,4805,4806:方框
2101:256位元暫存器檔案
2102:暫存器
2103:第一儲存µop
2104:記憶體位置
2105:第二儲存µop
2301:256位元指令
2302,2303,QJA02,QJA03:128位元µop
2304,2305,QJA06,QJA07:128位元執行單元
QJA01:交叉通道256位元指令
QJA04:暫時儲存器區
QJA05:第三µop
2501:指令解碼器
2502:智能分配和替換方塊
2503:微-op快取
2701:分支預測單元(BPU)
2702:指令快取標籤
2703:微op標籤
2704:指令快取
2705:微op快取
2706:解碼器
2707:微op佇列
2801:實體微op快取
2802:虛擬微op快取
2900,3000:RAT
2902:主動列表(AL)
2904:自由表(FL)
3110:多工器
3120:ALU
3201:運算元
3202:128位元暫存器檔案
3400:管線
3401:指令提取階段
3402:指令解碼階段
3403:重新命名/分配階段
3404:排程階段
3405:執行階段
3406:撤回/提交階段
3410:融合路徑
3411,3421:提取器
3412,3422:解碼器
3413,3423:重新命名器
3414,3424:排程器
3415:積和熔加器
3416,3426:重新排序緩衝器/撤回佇列(ROB/RQ)
3420:分離路徑
3425A:乘法器
3425B:加法器
3430:控制器
3432A-D,3433A-D,3434A-D,3435A-B,3436A-D:箭頭
3510,3520,3530,3540,3550,3552,3560,4110,4112,4114,4116,4118,4119,4120,4122,4124,4126,4128,4130,4132,4210,4212,4226,4228,4230,4232,4326,4340,4342,4344,4346,4348,4350,4352,4426,4440,4430,4448,4526,4540,4542,4544,4548,4552,4560,4562,4564,4626,4640,4644,4652,4660,4662,4664:方塊
3600:處理器
3602A-N:核心
3606:共享快取單元
3608:特殊用途邏輯
3610:系統代理
3612:環式為基的互連單元
3614:積體記憶體控制器單元
3616:匯流排控制器單元
3800:快取階層
3810A:L1 i-快取
3810B:L1 d-快取
3820:L2指令和資料快取
3830:階層3(L3)指令和資料快取
3900,3901,3902:同調代理器
3903:快取線歸零指令發出代理器
3904:同調性快取
3905,3906:L1快取
3910,3911:L2快取
3915:L3快取
3916,3917:L3快取片
3920:互連
3925:窺探控制器
3926:窺探產生器
3927:窺探回應器
3928:寫入轉換器
3929:寫入產生器
3930:下游記憶體
3935,3936,3937,3938:虛線
4050:Lx快取
4051:快取控制器
4053:窺探控制器
4055:標籤陣列
4056:資料陣列
4060:條目
4061:標籤欄位
4062:屬性欄位
4065:快取同調性協定狀態欄位
4066:零線欄位
4067:毒害欄位
4070:快取線
4190,4290:窺探流程
4700:方塊
4701,4702,4703,4704,4705,4706,4707,4708:條目
4709:有效的32KB頁面
4900:系統
4910,4915:處理器
4920:控制器集線器
4940:記憶體
4945:共處理器
4950:輸入/輸出集線器(IOH)
4960:輸入/輸出(I/O)裝置
4990:圖形記憶體控制器集線器(GMCH)
5000:多處理器系統
5014:I/O裝置
5015:額外處理器
5016:第一匯流排
5018:匯流排橋接器
5020:第二匯流排
5022:鍵盤及/或滑鼠
5024:音頻I/O
5027:通訊裝置
5028:儲存單元
5030:指令/代碼及資料
5032:記憶體
5034:記憶體
5038:共處理器
5039:高性能介面
5050:點對點互連
5052,5054:P-P介面
5070:第一處理器
5072,5082:積體記憶體控制器(IMC)單元
5076,5078:點對點(P-P)介面
5080:第二處理器
5086,5088:P-P介面
5090:晶片組
5094,5098:點對點介面電路
5096:介面
5100:系統
5114:I/O裝置
5115:舊有I/O裝置
5200:SoC
5202:互連單元
5210:應用程式處理器
5220:共處理器
5230:靜態隨機存取記憶體(SRAM)單元
5232:直接記憶體存取(DMA)單元
5300:同屬向量友善指令格式
5305,5346A:無記憶體存取
5310:無記憶體存取,完全捨入(full round)控制型操作
5312:無記憶體存取,寫入遮罩控制,部份捨入控制型操作
5315:無記憶體存取資料轉換類型操作
5317:無記憶體存取,寫入遮罩控制,VSIZE類型操作
5320,5346B:記憶體存取
5325:記憶體存取,暫時
5327:記憶體存取,寫入遮罩控制
5330:記憶體存取,非暫時
5340:格式欄位
5342:基礎操作欄位
5344:暫存器索引欄位
5346:修改符欄位
5350:擴增操作欄位
5352:阿爾發欄位
5352A:RS欄位
5352A.1:捨入
5352A.2:資料轉換
5352B:逐出暗示欄位
5352B.1:暫時
5352B.2:非暫時
5352C:寫入遮罩控制(Z)欄位
5354:貝它欄位
5354A:捨入控制欄位
5354B:三位元資料轉換欄位
5354C:三位元資料操縱欄位
5356:抑制所有浮點例外(SAE)欄位
5357A:RL欄位
5357A.1:捨入
5357A.2:向量長度(VSIZE)
5357B:廣播欄位
5358:捨入操作控制欄位
5359A:捨入操作欄位
5359B:向量長度欄位
5360:比例欄位
5362A:位移欄位
5362B:位移因子欄位
5364:資料元件寬度欄位
5368:等級欄位
5368A:類別A
5368B:類別B
5370:寫入遮罩欄位
5372:立即欄位
5374:完全操作碼欄位
5400:特定向量友善指令格式
5402:EVEX前綴
5405:REX欄位
5410:REX’欄位
5415:操作碼映射欄位
5420:EVEX.vvvv
5425:前綴編碼欄位
5430:實數操作碼欄位
5440:MOD R/M欄位
5442:MOD欄位
5444:Reg欄位
5446:R/M欄位
5454:SIB.xxx
5456:SIB.bbb
5500:暫存器架構
5510:向量暫存器
5515:寫入遮罩暫存器
5525:通用暫存器
5545:純量浮點堆疊暫存器檔案(x87堆疊)
5550:MMX緊縮整數平坦暫存器檔案
5602:高階語言
5604:x86編譯器
5606:x86二進制碼
5608:指令集編譯器
5610:指令集二進制碼
5612:指令轉換器
5614:不具至少一x86指令集核心之處理器
5616:具有至少一x86指令集核心之處理器
5700,5900,6000,6600:資料中心
5702A-D,5802,5902-1~5902-32,6002A-6002D,6402:框架
5705A-D,5706,5806,6205,6505:實體資源
5804-1,5804-2,5804-3,5804-4,6004A-1~6004D-2,6104A-6104B,6204,6504:滑槽
5805-1:實體儲存資源
5805-2:實體加速器資源
5805-3:實體記憶體資源
5805-4:實體計算資源
5911A-D:存取路徑
6012:光學結構
6100:連接方案
6101:框架存取區域
6103-1~6103-5,6303-1~6303-7,6403-1~6403-7:滑槽空間
6114,6414:雙模式光學切換基礎設施
6115:雙模式光學切換
6116-1~6116-5,6216,6316-1~6316-7,6416-1~6416-7,6516:多用途連接器模組(MPCM)
6120:雙模式光學脊柱切換
6130:葉切換
6205:實體資源
6205B:補充計算資源
6217:擴展連接器
6218:擴展滑槽
6300:框架架構
6303-1A~6303-7A,6403-1A~6403-7A:主要區域
6303-1B~6303-7B,6403-1B~6403-7B:擴展區域
6420-1~6420-7:電力模組
6421:外部電源
6516A:光學連接器
6516B:電力連接器
6524:電力傳輸媒體
6525:光學通道
6526:雙模式光學網路介面電路
6527:光學收發器模組
6528:電傳訊媒體
6600A:實體基礎設施
6600B:軟體定義的基礎設施
6612:光學結構
6614:雙模式光學切換基礎設施
6617:擴展連接器
6632:匯集的儲存滑槽
6634:高效能處理滑槽
6636:虛擬計算資源
6638:SDI服務
6640:雲端服務
6642:軟體即時服務(SaaS)服務
6644:平台即時服務(PaaS)服務
6646:基礎設施即時服務(IaaS)服務
6650A:實體基礎設施管理框架
6650B:虛擬基礎設施管理框架
6650C:應用/服務管理框架
本發明透過範例而非限制的方式在附圖的圖中示出,其中相同的元件編號指示相似的元件,並且其中:
[圖1A]根據本發明實施例示出示例性有序管線及示例性暫存器重新命名、失序簽發/執行管線二者的方塊圖;
[圖1B]根據本發明實施例示出包括在處理器中有序架構核心之示例性實施例及示例性暫存器重新命名、失序簽發/執行架構核心二者的方塊圖;
[圖2A-B]示出示例性核心架構之更具體實施例之方塊圖,該核心將為晶片中數個邏輯區塊中之一者(包括相同類別和/或不同類別的其他核心);
[圖2A]為根據本發明實施例之單一處理器核心之方塊圖,連同其連接至晶粒上互連網路202及階層2(L2)快取204之其本地子集的方塊圖;
[圖2B]為根據本發明實施例之圖2A中的處理器核心部分之展開圖;
[圖3]為根據本發明實施例之可包括在處理器中的說明性失序簽發/執行處理器核心的方塊圖;
[圖4]為根據本發明實施例之說明性提取單元的方塊圖,提取單元可被包括在諸如圖3之處理器核心和/或處理器中;
[圖5]為根據本發明實施例之說明性解碼單元的方塊圖,解碼單元可被包括在諸如圖3之處理器核心和/或處理器中;
[圖6]為根據本發明實施例之說明性整數執行單元的方塊圖,整數執行單元可被包括在諸如圖3之處理器核心和/或處理器中;
[圖7]為根據本發明實施例之說明性浮點(EP)執行單元的方塊圖,浮點執行單元可被包括在諸如圖3之處理器核心或處理器中;
[圖8]為根據本發明實施例之說明性載入/儲存單元的方塊圖,載入/儲存單元可被包括在諸如圖3之處理器核心或處理器中;
[圖9]為根據本發明實施例之在處理器中支持同步多執行緒(SMT)之諸如圖3之說明性失序簽發/執行處理器核心的方塊圖;
[圖10]為根據一些實施例示出可包括在處理器中的SMT靜態分區特徵的方塊圖;
[圖11]為根據一些實施例示出可被處理器執行之用於SMT靜態分區特徵之方法的流程圖;
[圖12]為根據一些實施例示出可包括在處理器中的資源配置器的方塊圖;
[圖13]為根據實施例示出可包括在處理器1300中的演算法SMT特徵的方塊圖;
[圖14]為根據實施例示出可被處理器執行之用於演算法SMT特徵之方法的流程圖;
[圖15]為根據實施例示出可包括在處理器中的演算法SMT特徵的方塊圖;
[圖16]根據示例性實施例顯示實施分支預測器優先級演算法的方塊圖;
[圖17]為根據實施例示出用於可包括在處理器中的SMT執行緒切換特徵之仲裁電路的方塊圖;
[圖18]為根據實施例示出可包括在處理器中的死鎖避免硬體1800的方塊圖;
[圖19]為根據一些實施例顯示使用一對128位元µop將256位元載入至256位元暫存器檔案的圖;
[圖20]為根據一些實施例示出用於使用一對128位元µop將256位元載入至256位元暫存器檔案之流程的圖;
[圖21]為根據一些實施例顯示使用128位元µop來自256位元暫存器檔案之256位元儲存的圖;
[圖22]為根據一些實施例示出用於使用一對128位元µop從256位元暫存器檔案儲存256位元之流程的圖;
[圖23]為根據一些實施例示出使用128位元微操作用於256位元算術運算之特徵的方塊圖;
[圖24]為根據一些實施例示出使用暫時儲存器區以儲存部分結果之交叉通道操作的方塊圖;
[圖25]為根據實施例示出可包括在處理器中的微-op快取特徵的方塊圖;
[圖26]為根據實施例示出可被處理器執行之用於微-op快取特徵之方法的流程圖;
[圖27]為根據實施例示出可包括在處理器中的微-op快取特徵的方塊圖;
[圖28]為根據實施例示出可包括在處理器中的微-op快取特徵的方塊圖;
[圖29]為根據實施例示出涉及暫存器別名表(RAT)之暫存器重新命名和相關性追蹤方案的方塊圖;
[圖30]為根據實施例示出RAT擴展到包括零成語、符號擴展和零擴展的方塊圖;
[圖31]為根據實施例示出在暫存器重新命名期間中讀取擴展RAT位元,並透過讀取暫存器的微-op把它們順著管線向下傳遞的方塊圖;
[圖32]為根據實施例示出可包括在處理器中的虛擬暫存器重新命名特徵的方塊圖;
[圖33]為根據實施例示出可被處理器執行之用於虛擬暫存器重新命名特徵之方法的流程圖;
[圖34]為根據本發明實施例示出可被實施在支持積和熔加(FMA)分裂/融合特徵之處理器核心中的簽發/執行管線的方塊圖;
[圖35]為根據本發明實施例示出可被處理器執行之用於FMA分裂/融合之方法的流程圖;
[圖36]為根據本發明實施例之處理器的方塊圖,該處理器可具有多於一個核心、可具有整合記憶體控制器及可具有整合圖形;
[圖37]為根據本發明實施例之可包括在處理器中的說明性中央處理單元(CPU)複合體的方塊圖;
[圖38]為根據本發明實施例之可包括在處理器中的說明性快取階層的方塊圖;
[圖39]為根據實施例示出其中可實施快取線歸零指令的記憶體階層的方塊圖;
[圖40]為根據實施例示出在實施快取線歸零指令之處理器中之快取的方塊圖;
[圖41]為示出在使用窺探之前首先嘗試寫入發出代理器之快取之本發明之實施例的流程圖;
[圖42]為示出依賴同調性快取之窺探之本發明之實施例的流程圖;
[圖43]為示出使用寫入更新窺探以實施窺探流程之本發明之實施例的流程圖;
[圖44]為示出使用寫入無效窺探以實施窺探流程之本發明之實施例的流程圖;
[圖45]為示出使用無效窺探和回寫以實施窺探流程的窺探之本發明之實施例的流程圖;
[圖46]為示出使用窺探寫出任何快取線,但不將資料發送回第一代理器,並且不導致從下游記憶體讀取資料以實施窺探流程之本發明之實施例的流程圖;
[圖47]為根據一些實施例示出可包括在處理器中的頁面合併特徵的圖;
[圖48]為根據一些實施例示出用於合併分頁表條目為單個有效頁面之方法的流程圖;
[圖49-52]為示例性電腦架構範例之方塊圖;
[圖49]根據本發明一實施例顯示的系統之方塊圖;
[圖50]為根據本發明實施例之第一更具體的示例性系統的方塊圖;
[圖51]為根據本發明實施例之第二更具體的示例性系統的方塊圖;
[圖52]為根據本發明實施例之系統單晶片(SoC)的方塊圖;
[圖53A-53B]為根據本發明之實施例示出同屬向量友善指令格式及其指令模板的方塊圖;
[圖53A]為根據本發明之實施例示出同屬向量友善指令格式及其類別A指令模板的方塊圖;
[圖53B]為根據本發明之實施例示出同屬向量友善指令格式及其類別B指令模板的方塊圖;
[圖54A]為根據本發明實施例示出之示例性特定向量友善指令格式的方塊圖;
[圖54B]為根據本發明一實施例示出構成完全操作碼欄位之特定向量友善指令格式的欄位的方塊圖;
[圖54C]為根據本發明一實施例示出構成暫存器索引欄位之特定向量友善指令格式的欄位的方塊圖;
[圖54D]為根據本發明一實施例示出構成擴增操作欄位之特定向量友善指令格式的欄位的方塊圖;
[圖55]為根據本發明一實施例之暫存器架構的方塊圖;以及
[圖56]為根據本發明實施例之對比軟體指令轉換器用以將在來源指令集中之二進制指令轉換成在目標指令集中之二進制指令的方塊圖。
[圖57-66]為本發明中系統的實施例的圖解。
130:前端單元
132:分支預測單元
133:微-op快取
134:指令快取單元
136:指令轉譯後備緩衝器(TLB)
138:指令提取單元
140:解碼單元
150:執行引擎單元
152:重新命名/配置器單元
154:撤回單元
156:排程器單元
158:實體暫存器檔案單元
160:執行叢集
162:執行單元
164:記憶體存取單元
170:記憶體單元
172:資料TLB單元
174:資料快取單元
176:階層2(L2)快取單元
190:處理器核心
Claims (7)
- 一種處理器,包含: 第一同調代理器,透過第一快取耦接至互連,該第一同調代理器用以解碼且執行指令,其之執行係用以引起在記憶體位址處零的快取線大小的寫入,並且用以將寫入命令發出至該第一快取來在該記憶體位址處啟動該零的快取線大小的寫入; 該第一快取,當反應於接收該寫入命令而有對於快取線的命中以及該快取線的快取同調性協定狀態為修改狀態或排除狀態時,用以將該快取線組態以指示全零,以及當反應於接收至該寫入命令而有快取遺失時,用以對該互連發出該寫入命令;及 第二同調代理器,透過第二快取耦接至該互連; 反應於接收該寫入命令,該互連用以將窺探發出至該第二快取; 其中該互連或對來自該互連之訊息反應的該第一同調代理器係用以引起在該第一快取中其它快取線在當該寫入命令和該窺探未引起該零的快取線寫入被進行時,被組態以指示全零。
- 如請求項1所述的處理器,其中當反應於接收該寫入命令而有對於該快取線的命中以及該快取線的快取同調性協定狀態不是該修改狀態或該排除狀態時,該第一快取係用以使得該快取線的快取同調性協定狀態為無效狀態並且用以對該互連發出該寫入命令。
- 一種處理器,包含: 第一核心,用以反應於執行快取線歸零指令而發出寫入命令,該第一核心亦包含階層1(L1)快取; 該L1快取耦接以接收該寫入命令,用以反應於該寫入命令決定在該L1快取中是否有命中或遺失,用以反應於該命中決定命中的快取線之快取同調性協定狀態是否為一而准許該L1快取授權以修改該快取線而沒有對至少一其它快取的廣播,用以當命中的該快取線之該快取同調性協定狀態為一而准許該L1快取授權以修改該第一快取線而沒有對該至少一其它快取的該廣播時反應於該命中將該快取線組態以指示全零,以及用以反應於該遺失對互連發出該寫入命令;及 該互連,耦接至該第一核心,用以反應於該寫入命令,對必需針對其決定是否有其它命中的該至少一其它快取之該些者發出窺探; 其中該第一核心、該互連或對來自該互連之訊息反應的該第一核心,係用以引起在該快取中其它快取線或該至少一其它快取其中一者在當該寫入命令和該窺探未引起該零的快取線寫入被進行時,被組態以指示全零。
- 如請求項3所述的處理器,其中該第一快取係用以使得該快取同調性協定狀態為無效,並且當命中的該快取線之該快取同調性協定狀態為一而准許該快取授權以修改該第一快取線而沒有對該至少一其它快取的該廣播時,反應於該命中對該互連發出該寫入命令。
- 如請求項3所述的處理器,其中反應於該窺探,該至少一其它快取之各者係用以決定在該其它快取中是否有其它命中或其它遺失,並且用以反應於該其它命中決定命中的該快取線之快取同調性協定狀態為一而准許該其它快取授權以修改該快取線而沒有對其它快取的廣播。
- 如請求項5所述的處理器,其中該至少一其它快取之各者係用以: 組態在該其它快取中的該快取線以指示全零,並且當在該其它快取中命中的該快取線之該快取同調性協定狀態為一而准許該其它快取授權以修改在該快取中命中的該快取線而沒有對其它快取的廣播時,反應於該其它命中發出指示歸零的響應訊息;及 反應於該遺失或反應於當在該其它快取中命中的該快取線之該快取同調性協定狀態不為一而准許該快取授權以修改在該其它快取中命中的該快取線時的該其它命中,發出指示未歸零的響應訊息。
- 如請求項6所述的處理器,其中該互連係用以追蹤該響應訊息之接收用以決定該窺探是否引起該其它快取之一者被組態以指示全零。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2016/066242 WO2018111228A1 (en) | 2016-12-12 | 2016-12-12 | Apparatuses and methods for a processor architecture |
WOPCT/US16/66242 | 2016-12-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202219748A true TW202219748A (zh) | 2022-05-16 |
Family
ID=62559007
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106138929A TWI751222B (zh) | 2016-12-12 | 2017-11-10 | 處理器及其處理器架構 |
TW111102764A TW202219748A (zh) | 2016-12-12 | 2017-11-10 | 處理器及其處理器架構 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106138929A TWI751222B (zh) | 2016-12-12 | 2017-11-10 | 處理器及其處理器架構 |
Country Status (10)
Country | Link |
---|---|
EP (2) | EP3552108B1 (zh) |
JP (1) | JP7095208B2 (zh) |
KR (1) | KR20190086669A (zh) |
CN (1) | CN109952566A (zh) |
BR (1) | BR112019009566A2 (zh) |
DE (1) | DE112016007516T5 (zh) |
ES (1) | ES2895266T3 (zh) |
PL (1) | PL3552108T3 (zh) |
TW (2) | TWI751222B (zh) |
WO (1) | WO2018111228A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180150256A1 (en) | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US10929139B2 (en) | 2018-09-27 | 2021-02-23 | Qualcomm Incorporated | Providing predictive instruction dispatch throttling to prevent resource overflows in out-of-order processor (OOP)-based devices |
CN110032407B (zh) | 2019-03-08 | 2020-12-22 | 创新先进技术有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
US11210100B2 (en) | 2019-01-08 | 2021-12-28 | Apple Inc. | Coprocessor operation bundling |
GB2581140A (en) | 2019-01-31 | 2020-08-12 | Ernst & Young Gmbh | System and method of obtaining audit evidence |
US10983797B2 (en) | 2019-05-28 | 2021-04-20 | International Business Machines Corporation | Program instruction scheduling |
TWI748513B (zh) * | 2020-06-12 | 2021-12-01 | 鴻海精密工業股份有限公司 | 資料處理方法、系統、電子裝置及存儲介質 |
US11314657B1 (en) * | 2020-12-02 | 2022-04-26 | Centaur Technology, Inc. | Tablewalk takeover |
CN113626205B (zh) * | 2021-09-03 | 2023-05-12 | 海光信息技术股份有限公司 | 处理器、物理寄存器管理方法及电子装置 |
TWI779923B (zh) * | 2021-11-11 | 2022-10-01 | 南亞科技股份有限公司 | 圖案驗證系統及其操作方法 |
CN115858420B (zh) * | 2023-02-23 | 2023-05-12 | 芯砺智能科技(上海)有限公司 | 用于支持多处理器架构的系统缓存架构和芯片 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03231345A (ja) * | 1990-02-06 | 1991-10-15 | Fujitsu Ltd | キャッシュ装置 |
GB2260429B (en) * | 1991-10-11 | 1995-05-24 | Intel Corp | Versatile cache memory |
US5551001A (en) * | 1994-06-29 | 1996-08-27 | Exponential Technology, Inc. | Master-slave cache system for instruction and data cache memories |
US5809548A (en) * | 1996-08-30 | 1998-09-15 | International Business Machines Corporation | System and method for zeroing pages with cache line invalidate instructions in an LRU system having data cache with time tags |
US6374330B1 (en) * | 1997-04-14 | 2002-04-16 | International Business Machines Corporation | Cache-coherency protocol with upstream undefined state |
CN1230721A (zh) * | 1998-02-17 | 1999-10-06 | 国际商业机器公司 | 具有指令和数据的悬停(h)状态的高速缓存相关协议 |
US6345339B1 (en) * | 1998-02-17 | 2002-02-05 | International Business Machines Corporation | Pseudo precise I-cache inclusivity for vertical caches |
US6178461B1 (en) * | 1998-12-08 | 2001-01-23 | Lucent Technologies Inc. | Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects |
JP4123621B2 (ja) * | 1999-02-16 | 2008-07-23 | 株式会社日立製作所 | 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法 |
KR100373849B1 (ko) * | 2000-03-13 | 2003-02-26 | 삼성전자주식회사 | 어소시어티브 캐시 메모리 |
US6745297B2 (en) * | 2000-10-06 | 2004-06-01 | Broadcom Corporation | Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent |
US7454577B2 (en) * | 2005-02-10 | 2008-11-18 | International Business Machines Corporation | Data processing system and method for efficient communication utilizing an Tn and Ten coherency states |
US7290094B2 (en) | 2005-05-17 | 2007-10-30 | International Business Machines Corporation | Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy |
US7707361B2 (en) * | 2005-11-17 | 2010-04-27 | Apple Inc. | Data cache block zero implementation |
US7451277B2 (en) * | 2006-03-23 | 2008-11-11 | International Business Machines Corporation | Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation |
US7475196B2 (en) | 2006-03-23 | 2009-01-06 | International Business Machines Corporation | Processor, data processing system, and method for initializing a memory block in a data processing system having multiple coherency domains |
US7484042B2 (en) * | 2006-08-18 | 2009-01-27 | International Business Machines Corporation | Data processing system and method for predictively selecting a scope of a prefetch operation |
CN101944012B (zh) * | 2009-08-07 | 2014-04-23 | 威盛电子股份有限公司 | 指令处理方法以及其所适用的超纯量管线微处理器 |
US9424190B2 (en) * | 2011-08-19 | 2016-08-23 | Freescale Semiconductor, Inc. | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation |
US9684603B2 (en) * | 2015-01-22 | 2017-06-20 | Empire Technology Development Llc | Memory initialization using cache state |
WO2016141817A1 (zh) * | 2015-03-06 | 2016-09-15 | 华为技术有限公司 | 数据备份装置及方法 |
-
2016
- 2016-12-12 BR BR112019009566A patent/BR112019009566A2/pt not_active Application Discontinuation
- 2016-12-12 CN CN201680090755.2A patent/CN109952566A/zh active Pending
- 2016-12-12 DE DE112016007516.2T patent/DE112016007516T5/de active Pending
- 2016-12-12 PL PL16923787T patent/PL3552108T3/pl unknown
- 2016-12-12 ES ES16923787T patent/ES2895266T3/es active Active
- 2016-12-12 EP EP16923787.2A patent/EP3552108B1/en active Active
- 2016-12-12 EP EP21168711.6A patent/EP3889787B1/en active Active
- 2016-12-12 JP JP2019521670A patent/JP7095208B2/ja active Active
- 2016-12-12 KR KR1020197013501A patent/KR20190086669A/ko active Search and Examination
- 2016-12-12 WO PCT/US2016/066242 patent/WO2018111228A1/en active Application Filing
-
2017
- 2017-11-10 TW TW106138929A patent/TWI751222B/zh active
- 2017-11-10 TW TW111102764A patent/TW202219748A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
EP3552108B1 (en) | 2021-08-18 |
CN109952566A (zh) | 2019-06-28 |
EP3552108A4 (en) | 2020-07-15 |
DE112016007516T5 (de) | 2019-10-02 |
KR20190086669A (ko) | 2019-07-23 |
TWI751222B (zh) | 2022-01-01 |
ES2895266T3 (es) | 2022-02-18 |
EP3889787B1 (en) | 2023-11-01 |
EP3552108A1 (en) | 2019-10-16 |
PL3552108T3 (pl) | 2022-01-03 |
WO2018111228A1 (en) | 2018-06-21 |
JP2020513605A (ja) | 2020-05-14 |
JP7095208B2 (ja) | 2022-07-05 |
BR112019009566A2 (pt) | 2019-08-06 |
TW201823971A (zh) | 2018-07-01 |
EP3889787A1 (en) | 2021-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220237123A1 (en) | Apparatuses and methods for a processor architecture | |
TWI751222B (zh) | 處理器及其處理器架構 | |
US11093277B2 (en) | Systems, methods, and apparatuses for heterogeneous computing | |
US11630691B2 (en) | Memory system architecture for multi-threaded processors | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
US20190102302A1 (en) | Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization | |
CN117940895A (zh) | 具有可编程直接存储器访问和扩展防护/转储清除操作的指令集架构 | |
JP2018500659A (ja) | 高速ベクトルによる動的なメモリ競合検出 | |
EP4020225A1 (en) | Adaptive remote atomics | |
CN115878506A (zh) | 共享预取指令和支持 |