TW202328926A - 用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制 - Google Patents
用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制 Download PDFInfo
- Publication number
- TW202328926A TW202328926A TW111127064A TW111127064A TW202328926A TW 202328926 A TW202328926 A TW 202328926A TW 111127064 A TW111127064 A TW 111127064A TW 111127064 A TW111127064 A TW 111127064A TW 202328926 A TW202328926 A TW 202328926A
- Authority
- TW
- Taiwan
- Prior art keywords
- dtl
- circuitry
- processor
- instruction
- input
- Prior art date
Links
- 238000013519 translation Methods 0.000 title claims abstract description 31
- 238000012163 sequencing technique Methods 0.000 title abstract description 3
- 238000000034 method Methods 0.000 claims abstract description 64
- 230000003068 static effect Effects 0.000 claims abstract description 30
- 230000000977 initiatory effect Effects 0.000 claims description 5
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 80
- 230000008569 process Effects 0.000 description 35
- 239000013598 vector Substances 0.000 description 34
- 238000010586 diagram Methods 0.000 description 27
- 238000012545 processing Methods 0.000 description 23
- 238000006073 displacement reaction Methods 0.000 description 19
- 238000007667 floating Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 230000006399 behavior Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 6
- 230000007704 transition Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000008672 reprogramming Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000004984 smart glass Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Machine Translation (AREA)
Abstract
說明關於用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制之方法及設備。在一實施例中,資料空間轉譯邏輯(DTL)電路系統接收一靜態輸入及一動態輸入,且至少部分地基於該靜態輸入及該動態輸入產生一或多個輸出。該DTL電路系統在一處理器中開始推測運算之前產生該等一或多個輸出。其他實施例亦被揭露及請求。
Description
本揭露內容大體上係有關電子元件之領域。更特定而言,一實施例係關於用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制。
發明背景
許多具有複雜演算法之指令在執行期間需要多個條件性決策,這可能減緩其執行、增加功能複雜性及/或可能造成安全性問題(包括推測性側通道)。
這些包括施行讀取/寫入操作之指令,其中指令運算元資料判定需要施行何種操作,及針對該指令之特定調用係以何種序列進行。此等指令亦可包括保存/儲存、脈絡切換、狀態保存-恢復流程、及除錯與追蹤流程。這些流程共享一共同特性,即流程輸入或指令運算元資料判定需要施行何種操作及在針對該複雜流程之特定調用係以何種序列進行。
然而,此等作法可能構成效能、複雜性及/或安全性問題。
依據本發明之一實施例,係特地提出一種設備,其包含:資料空間轉譯邏輯(DTL)電路系統,其用以接收一靜態輸入及一動態輸入;且該DTL電路系統至少部分地基於該靜態輸入及該動態輸入產生一或多個輸出,其中該DTL電路系統係用以在一處理器中開始推測運算之前產生該等一或多個輸出。
在下列說明中,闡述了數個特定細節以便提供對於各種實施例之一透徹理解。然而,各種實施例可加在無該等特定細節的情況下實踐。在其他實例中,不詳細說明熟知方法、程序、組件與電路,以避免模糊特定實施例。另外,實施例的各種態樣可使用各種方式施行,諸如積體半導體電路(「硬體」)、組織成一或多個程式(「軟體」)之電腦可讀指令,或硬體與軟體之某種組合。為了本揭露內容之目的,提及「邏輯」時將意謂硬體(諸如邏輯電路系統,或更通常而言電路系統或電路)、軟體、韌體,或其之某種組合。
如上所述,許多具有複雜演算法之指令在執行期間需要多個條件性決策,這減緩其執行、增加功能複雜性及/或可能造成安全性問題(包括推測性側通道)。舉例而言,可將複雜行為序列實行為長的軟體常式,例如,編碼為處理器之前端中之微運算(例如,至唯讀記憶體(ROM)或可規劃邏輯陣列(PLA)或相似結構中)。此可涉及檢查資料運算元的位元或欄位,將每一位元或欄位映射至一特定動作,並根據需要使用條件分支及選擇來對動作進行分支。還有某些實行方式,可將控制流程載入至一處理器之前端中之前端分支及微運算指令指標中。
然而,上文所提及之實行方式可能構成效能、複雜性及/或安全性問題。更特定而言,效能受到檢查資料運算元的每一位元或欄位,以判定下一步驟是執行時間決策點的影響,亦即,可能錯誤預測及清除管線的微運算分支。又,微運算分支預測器係複雜的、並非可用於所有流程且係昂貴的,致使微運算使用靜態預測。來自這些分支之所有路徑皆為資料相依,係極為常見且同樣可能的。這些預測(靜態或動態)對許多資料相依演算法來說表現不佳,且並不消除微型錯誤預測。
就安全性問題,微運算分支藉由允許推測性執行繼續直至跳轉執行且處理器認識到該等操作不該引退,從而引入安全性複雜性。這些跳轉需要安全性驗證,特別是側通道分析及防止在複雜指令中特權狀態讀取或寫入區塊的推測性執行。若可消除推測性微運算(例如,如在一些實施例中,透過決定在前端中的控制流程),則改良安全性及效能、且減少安全性驗證。
至於功能複雜性,對非重命名狀態之推測性寫入為複雜流程錯誤的最常見原因之一。防止這些錯誤所需的串列化可影響效能;經常導致如相依性鏈技巧的積極最適化以改良效能,這進一步添加風險。另外,針對如保存及恢復指令序列之特定流程所生成的定製解決方案係硬體密集的,且並無縮放以供跨所有不同流程使用。
此外,實行這些資料驅動演算法之傳統方法涉及將其轉譯成具有分支之基於流程的演算法。此程序無法簡單明瞭地證明功能等效,且在設計及驗證兩者中引入不必要複雜性,以確保指令之正式資料驅動規格準確地匹配功能流程是如何實行的。
為了解決這些問題中之至少一些者,一或多個實施例在處理器之前端中(亦即,在開始推測運算之前及/或在發布時)做出決策、消除微運算分支、降低複雜性及/或改良效能及推測保護。又,此等技術可適用於如脈絡切換、狀態保存-恢復流程等的複雜流程,諸如系統管理中斷(SMI)、從系統管理模式繼續(RSM)、精確之基於事件的取樣(PEBS)、較深之C電力狀態(如C6)、虛擬機器進入(VM進入)、虛擬機器退出(VM退出)及除錯與追蹤流程。
更特定而言,一些實施例提供用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制的一或多種技術。在一實施例中,最適化之資料空間轉譯邏輯(DTL)係提供在中央處理單元(CPU)之前端中(在本文中亦可互換地被稱作「處理器」)。DTL可實行為可規劃邏輯陣列(PLA)。如本文中所論述,「資料空間轉譯邏輯」或「DTL」通常係指將輸入資料轉譯成輸出控制以及酬載的邏輯。來自DTL之輸出進而被用來勾勒及/或引導/致使用於特定輸入資料的處理器行為。此外,如本文所論述,處理器的「前端」通常係指施行操作以提取與解碼指令/操作及施行分支預測的處理器之組件,參見例如圖7B之項目730。在至少一些實施例中,本文中所論述之指令中之一或多者可遵循EVEX格式(諸如參看圖5A-5D所論述者)。
此外,至DTL之輸入可包括極少或週期性地改變的相對靜態之組件(例如,熔絲或模位元)及/或針對每一查找改變的動態組件(例如,指令輸入)。動態DTL輸入可在從狀態已在前端中之發布時間來被規劃或提供,諸如來自指令或微運算的立即運算元。執行單元(例如,跳轉執行單元(JEU))可用以將資料從暫存器夾(register file)直接發送至前端中之動態DTL輸入。如本文中所論述,「跳轉執行單元」或「JEU」通常係指執行邏輯(例如,提供於處理器之執行單元/引擎部分中,諸如圖7B之執行引擎750),其可從暫存器夾及/或後端DTL接收輸入資料且將其輸出作為動態輸入提供至前端DTL,及/或用以判定微運算指令指標(例如,用於微運算定序操作)。在一實施例中,此執行單元不發送已判定為在虛假(或錯誤預測)路徑中的資料(這已被JEU或執行單元為分支處置)。在一實施例中,一新模式被提供以原子級地規劃一複雜流程所需的多個輸出(或前端狀態),諸如前端分支提示、立即值、微運算指令指標等。如本文中所論述,「複雜」流程通常係指具有多個決策之流程,該等決策係諸如對取決於至指令的輸入資料/運算元,是否執行或跳過特定碼塊。
如本文將進一步論述者,在一些實施例中,可以在處理器後端中提供相似的資料空間轉譯邏輯。後端DTL及前端DTL可跨多個處理器核心共享。至少一實施例利用來自前端DTL之指示以用信號通知用於特定指令輸入的邏輯項將轉移至後端DTL。
上文所提及之特徵個別地且一齊地工作以減少(或大部分消除)用於複雜資料驅動指令的傳統串列化及易有錯誤預測之微碼演算法。舉例而言,一或多個實施例可致能以下中之一或多者:(1)具有多個資料驅動決策點的立即驅動複雜指令,而無需前端串列化或分支預測;(2)微運算可直接用作為資料或遮罩以避免分支的熔絲或模式勾勒的常數。這用以消除微運算與改善潛時兩者;(3)消除複雜指令流程中之運行時間微分支的顯著百分比;(4)減少有關推測的功能及安全性問題,且效能由於消除相關串列化而改良;(5)共享之後端DTL變為用來以極小效能影響跨核心卸載及共享複雜之基於微運算之演算法的實行方式,同時減少重要前端DTL之區域的非常有效之方式。
此等實施例提供用以最適化及簡化各種處理器(諸如由Intel®公司所提供的Atom®處理器)中的複雜指令集架構(ISA)/指令及微運算流程的技術。藉由將流程重構成由資料空間轉譯邏輯所控制的一組通用基本塊,該等流程的大小及複雜性總體上有所減少。在一些實施例中,僅限舊有暫存器或記憶體運算元之指令的新版本可被生成,其支援立即運算元。
在一或多個實施例中,提供關於用於高效且安全的資料空間引導式微定序之迴路驅動區式前端轉譯控制的技術。此等實施例可提供以下中之一或多者:(1)與輸出(前端狀態)規劃分開之規劃動態DTL輸入的能力(此管線支援允許資料在DTL動態輸出資料已被消耗之前被發送至DTL動態輸入,因此致能在無串列化的情況下並行地執行複雜演算法中之多個步驟);(2)將狀態機(計數器)連接至DTL動態輸入的能力(此允許從單個輸入開始的多級輸出資料,且一旦演算法的一步驟完成,狀態機便在無串列化或重規劃的情況下增量動態輸入,因此允許DTL輸出來控制演算法的下一步驟);及/或(3)一模式,其中來自狀態機之輸入「n」的DTL輸出亦提供下一狀態輸入的值,例如,此提供基於原始輸入運算元及模式以跳過演算法之反覆或微運算碼塊區的方式,而非總是移動至「n+1」。
此外,這些實施例個別地且一齊地工作以致能以下中之一或多者:(1)消除複雜多級指令流程中之運行時間微分支的顯著百分比;(2)減少有關推測的功能及安全性問題,且效能由於消除相關串列化而改良;(3)一複雜行為步驟序列的管線式鏈接致能以高效方式,例如從功能規格來自動化,來實行資料相依演算法;及/或(4)允許複雜演算法基於運算元資料跳過微運算碼塊區,對狀態保存/恢復流程而言特別有用。
此外,本文中所論述之一些實施例提供用以最適化及簡化各種處理器(諸如由Intel®公司所提供的Atom®處理器)中的複雜ISA/指令及微運算流程的技術。其等可藉由將流程重構成由資料空間轉譯邏輯所控制的一組通用基本塊,提供該等流程的大小及/或複雜性總體上之減少。此外,可生成直接運用此硬體之新指令。
圖1例示根據一實施例的用以提供用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制的一處理器之組件的方塊圖。
參看圖1,在一CPU的前端中提供一最適化之資料空間轉譯邏輯(DTL) 102。至此邏輯的輸入具有兩個組件:一相對靜態組件(其可被不頻繁地規劃),諸如在模式轉變104時;以及一動態組件(或動態輸入狀態106),其在每一查找時被規劃。在一實施例中,DTL 102係實行為一可規劃邏輯陣列(PLA)。
在所欲模式中之一者之間轉變的指令或事件以關於該模式之資訊來規劃靜態輸入。此轉變流程一般為較長潛時,因此在轉變之前及之後的指令之間提供適當的預及後串列化。靜態輸入狀態可因此在新模式或脈絡中的指令之前早就變得穩定,從而允許從彼等靜態輸入觸拍(flop)至DTL的時序更寬鬆。
此輸入之分開允許在DTL中處置基於熔絲或模式的決策。舉例而言,取決於處理器的操作模式、特權層級或脈絡而有不同的指令行為係非常常見的。當指令以具有指示調用DTL之特定指令或理由的動態輸入查找DTL時,該DTL現可取決於靜態輸入模式而生產稍微或完全不同的輸出。
如圖1中所示,一實施例提供在發布時間從在前端中之狀態來規劃動態DTL輸入(經由多工器108)的能力,諸如來自指令或微運算110的立即運算元。此能力與在處理器之前端中之DTL的位置組合,自然地允許其輸出基於指令或微運算立即資料,而在指令發布時(及例如在開始推測運算之前)在管線上很早就係可用的。
此作法產出至少以下益處:
(a) DTL可生產微運算可直接用作為資料或遮罩以避免分支的熔絲或模式勾勒的常數。此輸出可表示遮罩,其取決於模式及立即資訊,指示哪些位元被保留或可用於被該等指令或微運算修改。此用以消除微運算與改良潛時兩者。
(b) 致能新的具有多個資料驅動決策點的立即驅動複雜指令,而無需前端串列化或分支預測。此可包括僅限舊有暫存器或記憶體運算元之指令的新版本,其支援立即運算元。
如圖1所示,DTL 102可產生用於前端分支112、執行元資料114及一微運算指令指標(IP) 116之資料,該等資料接著被提供至一微運算定序器118。
此外,執行單元(例如,JEU 120)可用以將資料從暫存器夾122直接發送至前端中之動態DTL輸入觸拍(108)。在至少一實施例中,執行單元/JEU不應發送已判定為在虛假路徑中的資料(這已被JEU為跳轉處置)。
x86 ISA中之許多複雜指令具有指令運算元,其中所提供之資料控制指令之演算法行為。此資料值僅在於處理器之後端中執行操作之後可用,諸如在為了先前操作之結果而讀取暫存器夾之後。一實施例運用已用於分支目標重定向的從分支執行單元(JEU)至處理器之前端的資料路徑,來將在指令執行期間所運算之資料值發送至動態DTL輸入。此規劃介面自然地係由現有JEU邏輯相對於較舊的錯誤預測分支排序。此排序確保資料在巨集或微運算被判定為在虛假路徑上,亦即在錯誤預測分支的陰影中時,不被發送至前端。
此外,一實施例提供一模式(經由DTL 102)以原子級地規劃一複雜流程所需的多個輸出(前端狀態),諸如前端分支提示112、立即值114、及微運算指令指標116等。在此模式中,DTL之輸出(藉由用靜態及動態輸入查找其獲得)係用以規劃在處理器之前端中之數種特定用途狀態。
對於多個微運算指令指標目標,一旦DTL經調用以在前端中規劃此狀態,則指令流程可使用這些作為完美的間接分支目標。該流程可依次跳轉至這些中之每一者,其中每一目標指向不同基本塊。由於這些目標在初始DTL查找期間已被設置,因此所有這些基本塊係在無執行懲罰的情況下被鏈接的,而不需要分支預測器,或者無從錯誤基本塊推測性地發布微運算之可能性。
對於前端分支,用於指令之複雜演算法一般具有多個決策點,且針對那些決策點中之許多者,針對分支應遵循經採用或未採用路徑之決策係取決於用於該指令的資料運算元。由於這些資料運算元係被規劃至DTL之動態輸入中,因此DTL之動態輸出中之一些者可被設置來僅表示用於該特定分支條件是否為真或假的控制。由於這些控制係在初始DTL查找期間在前端中原子級地被設置,因此分支在微運算發布時可完美地解決經採用對未採用的問題。又,此消除與輸入資料空間無關之碼序列的錯誤預測及推測性執行。對於立即值,DTL亦可生產特定於該指令之動態輸入的多個定值,其可用作計數、移位量、遮罩或僅用作用於結果之資料。
過去基於暫存器夾資料來規劃前端狀態的挑戰之一,係知道何時在前端中規劃已完成。在一實施例中,本文中提供一解決方案以解決此挑戰:(1)在此脈絡中使用時,將前端分支中之一者保留為「DTL查找」指示;(2)當所有前端狀態的規劃完畢時,讓查找DTL的JEU路徑設定此前端分支;(3)流程現在可單純地持續測試此前端分支,直至其轉變成指示成功規劃,且其將自然地不會在規劃完成前推測;且(4)當分支經設定時,其隱含所有前端狀態(微運算IP目標、前端分支以及立即值)皆被成功規劃且可用於下一微運算的發布。
在一些實施例中,僅限舊有暫存器或記憶體運算元之指令的新版本可被生成,其支援立即運算元。此等指令可共享相似之特性,即該輸入資料運算元指定被讀取/寫入之該組狀態,以及關於在存取該狀態及其他副作用之前需要哪些一致性檢查的特殊處置及決策。
一實施例利用:一相似資料相依邏輯(DTL),其在處理器之後端中,潛在地跨多個核心共享;以及一來自前端DTL的指示,其指示用於特定指令輸入之邏輯項被轉移至後端DTL。
隨著更大型的複雜流程變為由前端DTL以演算法控制,這些流程中之一些者可不被如此頻繁地調用,且由於個別步驟本身之潛時而可容忍其演算法之步驟之間的較長潛時。將特定於那些流程的邏輯閘從前端移動至後端DTL,且將其跨核心共享,允許一些實行方式將DTL之邏輯區域跨共享於一模組中之數個核心來分攤。若模組中多於一個核心希望存取共享邏輯,則該核心運用複雜流程將在功能上僅需再多等一會以待其DTL輸出備妥之事實,僅需在循環法(round robin)或相似演算法中等待輪到自己。
在運行時間,一實施例具有一方法,用以在一前端DTL查找時,知曉對應於該指令、輸入編碼或模式之邏輯閘並不存在於該前端DTL中。此可藉由保留前端分支位元,以指示此輸出係取決於處理器模式而轉移至後端DTL來完成。流程在處於相關模式時檢查此位元,且退回至查找共享DTL之替代流程。共享之後端DTL輸出含有相似的微運算IP指標、前端分支控制,且使用繞過前端DTL之穿過JEU至前端的直接路徑來規劃它們。演算法的其餘部分照常繼續進行。
因此,共享之後端DTL成為用來以極小效能影響跨核心卸載及共享複雜演算法的實行方式,同時減少重要前端DTL之區域的非常有效之方式。
圖2例示根據一實施例的用以提供用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制的一方法200的流程圖。方法200的操作中的一或多者可由圖1的一或多個組件來施行,諸如本文所論述。
參看圖1及2,在操作202處,判定資料空間在發布或執行時是否可用。若資料在發布時係可用的,則操作204規劃DTL動態輸入,例如從發布時間輸入來規劃。操作206在前端中施行DTL評估。替代地,若資料空間在執行時可用,則操作208判定DTL輸入。操作210從JEU規劃DTL動態輸入且方法200在操作206處繼續。操作212從DTL規劃前端狀態。
在操作214處,判定前端狀態是否經規劃,且一旦前端狀態規劃完成,操作216判定是否應將操作發送至後端DTL。若為是,則操作218從暫存器夾122來規劃後端DTL動態輸入。操作220在後端中評估DTL。操作222將來自後端DTL的前端狀態讀入暫存器夾122。操作224藉由從暫存器夾122獲取資料來從JEU規劃前端狀態。方法200終止於操作230,其基於DTL資訊施行微運算序列。
圖3例示根據一實施例的用以提供用於高效且安全的資料空間引導式微定序之迴路驅動區式前端轉譯控制的一處理器之組件的方塊圖。圖1之組件個別地且一齊地工作以減少且大部分消除用於複雜資料驅動指令的傳統串列化及易有錯誤預測之微碼演算法。
如圖3所示,一最適化之資料空間轉譯邏輯(DTL)302係提供在一CPU的前端中(例如,其可與圖1-2之DTL 102相同或相似)。此邏輯具有:一動態組件304,其在每一查找時被規劃;以及一相對靜態組件,諸如模式及組態輸入狀態306。在一實施例中,DTL 302係實行為一可規劃邏輯陣列(PLA)。DTL 302之其他特徵可與參看圖1-2之DTL 102所論述者相同或相似。又,未具體論述之圖3的組件可與那些具有相同或相似標籤之圖1的組件相同或相似。
一實施例提供一模式以原子級地規劃一複雜流程所需的多個輸出(前端狀態),諸如前端分支提示308、立即值310、微運算指令指標312等。
對於多個微運算指令指標目標,一旦DTL經調用以在前端中規劃此狀態,則指令流程可使用這些作為完美的間接分支目標。該流程可依次跳轉至這些中之每一者,其中每一目標指向不同基本塊。由於這些目標在初始DTL查找期間已被設置,因此所有這些基本塊將係在無執行懲罰的情況下被鏈接的,而不需要分支預測器,或者無從錯誤基本塊推測性地發布微運算之可能性。
對於前端分支,用於指令之複雜演算法一般具有多個決策點,且針對那些決策點中之許多者,針對分支應遵循經採用或未採用路徑之決策係取決於用於該指令的資料運算元。由於這些資料運算元係被規劃至DTL之動態輸入中,因此DTL之動態輸出中之一些者可被設置來僅表示用於該特定分支條件是否為真或假的控制。由於這些控制係在初始DTL查找期間在前端中原子級地被設置,因此分支在微運算發布時可完美解決經採用對未採用的問題。又,此消除與輸入資料空間無關之碼序列的錯誤預測及推測性執行。
對於立即值,DTL亦可生產特定於該指令之動態輸入的多個定值,其可用作計數、移位量、遮罩或僅用作用於結果之資料。
在一實施例中,提供一模式,其中在314處的DTL動態輸入之規劃可獨立於前端處置器控制規劃而完成。此對時脈之獨立控制允許用於DTL之動態輸入及輸出觸拍有效地生成一管線模式。此管線支援允許資料在DTL動態輸出資料已被消耗之前被發送至DTL動態輸入,因此致能在無串列化的情況下並行地執行複雜演算法中之多個步驟。
一複雜資料驅動演算法之每一步驟(N、N+1、…)可能需要一不同組的微運算IP指標、前端分支控制以及立即值。用於下一步驟(N+1)之DTL動態輸入可能僅可藉由讀取一暫存器夾(316)或一些先前操作之結果而從處理器之後端獲得,且隱含一特定潛時以使該DTL動態輸入從一深度無序處理器之後端來到前端。在一簡單實行方式中,此隱含在步驟(N)結束時之一串列化,同時等待前端狀態被以DTL針對步驟(N+1)之查找結果來規劃。
此作法係有價值的,此係由於其在DTL之輸出時保持對應於(N)之前端狀態穩定,且操作可藉由開始進行運算及將對應於(N+1)之輸入寫入DTL動態輸入觸拍而繼續。此動態輸入規劃之潛時可部分地或完全地由用於對應於步驟(N)之各種處置器的微運算之潛時隱藏。到了達到步驟(N)結束時,僅需要等待直至接收到用於(N+1)之動態輸入已被規劃的確認為止。此指示係另一前端分支控制,其在步驟(N)開始時被清除,且其在用於(N+1)之輸入達到動態輸入觸拍時被設定。
一實施例提供將狀態機(計數器)連接至動態DTL輸入的能力。處理器支援機器之前端中的計數器318,其具有用以增量/減量計數器的控制320及偵測計數器溢位的能力。此計數器係具有初始值及終止條件之狀態機,且可例如用以避免在迴路結束時的錯誤預測。又,DTL之新特殊模式經由多工器314使用此迴路計數器(或更複雜狀態機)作為之DTL動態輸入。改變計數器之控制亦觸發前端處置器控制規劃。此變為比先前模式更高效的方式,用以按序列將多個演算法步驟鏈接在一起。
此允許單個原始輸入有多級輸出DTL資料。一旦演算法的一步驟完成,狀態機動態輸入便在無串列化或重規劃的情況下增量,因此允許DTL輸出來控制演算法的下一步驟。
另一實施例提供一模式,其中來自狀態機之輸入「n」的DTL輸出亦提供下一狀態輸入之值。此提供基於原始輸入運算元及模式以跳過演算法之反覆或微運算碼塊區的方式,而非總是將DTL動態輸入「N」增量至下一值「N+1」。許多複雜指令共享係簡單基本塊之序列的此共同特性,但彼等步驟中之一些者可基於指令運算元或模式輸入而被跳過。經典範例為保存及恢復狀態之所有種類之流程,諸如脈絡切換流程、VM進入、VM退出、SMI、RSM、重置、C6、PEBS及各種追蹤及除錯流程。這些流程中之每一者可單純地被說明為N個步驟之序列,其中步驟N可讀取或寫入狀態X,其中可能有一些超出狀態讀取或寫入的特殊處置。一實施例規劃微運算IP指標、狀態ID(識別符)、分支控制,其等指示用於DTL中之N個步驟中之每一者的特殊處置且使得迴路計數器從N減量至0。此情形允許在無錯誤預測或延遲的情況下跳過於此實例不適當之步驟。
此序列之整個複雜性因此減少至參數化基本塊的基於輸入模式/資料的序列。此允許用於所有種類之非相關指令的每一基本塊之最大重新使用,從而減小整體微碼大小及冗餘。
就功能性正確性、可驗證性、安全性、區域及效能而言,以本文所論述的方式編碼一複雜流程的演算法,例如作為基本塊的有序列表,就功能正確性而言也有益處。一旦證實產生DTL之工具流程有效,則唯一剩餘的功能錯誤,若存在的話,係有關指令規格是否正確地轉譯成DTL輸入規格。此係在編譯時間要驗證正確性簡單得多的問題,且極大地減少對這些複雜流程之運行時間測試找到功能錯誤的需求及可能性。
一旦設置用於一演算法步驟的資料相依前端控制,就沒有錯誤預測或推測性發布或執行不正確微運算的問題;且因此不需要串列化來對抗推測性路徑。此解決方案可縮放至具有數百個決策點的流程。因此,實施例能夠顯著地減少傳統串列化及易有錯誤預測之微碼演算法。相對於基於微運算之流程權衡DTL區域,導致藉由將複雜流程重構成由DTL所控制的一組通用基本塊,使該複雜流程實行方式的大小及複雜性總體上有所減少。最大化每一通用基本塊之重新使用亦幫助減少修補成本,此係因為需要較少修補匹配來截取所有相似的塊。這些本發明為用以最適化及簡化用於當前及未來核心的複雜ISA實行方式的主要技術中之一些者。
圖4例示根據一實施例的用以提供用於高效且安全的資料空間引導式微定序之迴路驅動區式前端轉譯控制的一方法400的流程圖。方法400的操作中的一或多者可由圖3的一或多個組件來施行,諸如本文所論述。
如圖3-4所示,操作402允許DTL 302規劃當前反覆前端狀態。一旦前端狀態受規劃(如在操作404處被判定),操作406處置各種模式。操作408使前端計數器318增量/減量,操作410從DTL輸出來規劃前端計數器318,操作412從下一反覆運算元來規劃輸入。操作414為DTL 302運算輸入供用於下一反覆。操作416規劃用於DTL之下一反覆的輸入。操作418為當前反覆施行微運算序列。方法400持續施行操作420以判定當前反覆微運算序列是否完成,在該時點,方法400於操作402處繼續。
此外,一些實施例可適用於包括一或多個處理器之運算系統(例如,其中該等一或多個處理器可包括一或多個處理器核心),諸如參看圖1及其後所論述者,包括例如桌上型電腦、工作站、電腦伺服器、伺服器刀鋒或行動運算裝置。行動運算裝置可包括智慧型手機、平板電腦、UMPC(超輕薄行動個人電腦)、膝上型電腦、Ultrabook™運算裝置、可穿戴裝置(諸如智慧型手錶、智慧型戒指、智慧型手鐲或智慧型眼鏡)、等等。
指令集
指令集可包括一或多個指令格式。給定指令格式可定義各種欄位(例如位元數目、位元位置),除了其他方面外,用以指定要施行之運算(例如,運算碼)及將被施行之此運算的運算元,及/或其他資料欄位(例如,遮罩)。一些指令格式係進一步經由指令範本(或子格式)之定義被分解。舉例而言,給定指令格式之指令範本可被定義以具有指令格式之欄位的不同子集(所包括欄位一般呈相同次序,但至少一些具有不同位元位置,因為包括較少之欄位)及/或被定義以具有不同解譯之給定欄位。因此,ISA之每一指令係使用給定指令格式(且在被界定的情況下,以彼指令格式之指令範本中之給定者)來表達,且包括用於指定運算及運算元之欄位。舉例而言,範例性ADD指令具有特定運算碼及指令格式,該指令格式包括用以指定彼運算碼之運算碼欄位及用以選擇運算元(來源1/目的地及來源2)之運算元欄位;且於指令串流中之此ADD指令的出現將具有在運算元欄位中之選擇特定運算元的特定內容。被稱為進階向量延伸(AVX) (AVX1及AVX2)且使用向量延伸(VEX)編碼方案的一組SIMD延伸已被釋出及/或公布(例如,參見2014年9月的Intel® 64及IA-32架構軟體開發者手冊;且參見2014年10月的Intel®進階向量延伸程式設計參考)。
範例性指令格式
本文中所說明的指令之實施例可以不同的格式被體現。此外,範例性系統、架構及管線在下文詳細說明。指令之實施例可在此等系統、架構及管線上被執行,但不限於彼等經詳細說明者。
雖然將說明之實施例中,向量友善指令格式支援以下:一64位元組向量運算元長度(或大小),其具有32位元(4位元組)或64位元(8位元組)資料元素寬度(或大小) (且因此,由16個雙字大小元素或替代地8個四字大小元素組成的一64位元組向量);一64位元組向量運算元長度(或大小),其具有16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小);一32位元組向量運算元長度(或大小),其具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小);以及一16位元組向量運算元長度(或大小),其具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元素寬度(或大小);替代實施例可支援具有更多、更少或不同資料元素寬度(例如,128位元(16位元組)資料元素寬度)之更多、更少及/或不同向量運算元大小(例如,256位元組向量運算元)。
圖5A為根據實施例例示一範例性指令格式的方塊圖。圖5A顯示出一指令格式500,其在其指定欄位之位置、大小、解譯及順序以及用於該等欄位中之一些者之值的意義上係特定的。指令格式500可用以延伸x86指令集,且因此該等欄位中之一些者相似或相同於在現有x86指令集及其延伸(例如,AVX)中使用的那些欄位。此格式維持與具有延伸之現有x86指令集之首碼編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位及立即欄位一致。
EVEX首碼(位元組0-3) 502──以一四位元組形式編碼。
格式欄位582(EVEX位元組0,位元[7:0])──第一位元組(EVEX位元組0)為格式欄位582且其含有0x62 (在一實施例中,用於區分向量友善指令格式之唯一值)。
第二-第四位元組(EVEX位元組1-3)包括數個提供特定能力之位元欄位。
REX欄位505(EVEX位元組1,位元[7-5])──由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X),及557BEX位元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'欄位510──此為EVEX.R'位元欄位(EVEX位元組1,位元[4]-R'),其用以編碼延伸32暫存器集之上部7或下部7。在一實施例中,此位元連同如下文所指示的其他者係儲存成位元反置格式,以與BOUND指令區分(在眾所熟知的x86 32位元模式中),其真實運算碼位元組為62,但在MOD欄位中不接受MOD R/M欄位中(下文所說明)11的值;替代實施例並不以反置格式儲存此及其他指示位元。1之值係用以編碼下部7暫存器。換言之,R’Rrrr係藉由組合EVEX.R'、EVEX.R及來自其他欄位的其他RRR形成。
運算碼映射欄位515(EVEX位元組1,位元[3:0]-mmmm)──其內容編碼一隱含領先運算碼位元組(0F、0F 38或0F 3)。
資料元素寬度欄位564(EVEX位元組2,位元[7]-W)──係由記法EVEX.W表示。EVEX.W係用以定義資料類型(32位元資料元素或64位元資料元素)之粒度(大小)。此欄位係可選擇的,意思是只有在僅支援一資料元素寬度及/或使用運算碼之一些態樣支援資料元素寬度的情況下係不需要此欄位的。
EVEX.vvvv 520(EVEX位元組2,位元[6:3]-vvvv)──EVEX之作用可包括以下:1)EVEX.vvvv對第一來源暫存器運算元進行編碼,其以反置(1補數)形式指定且針對具有2或更多個來源運算元之指令有效;2)EVEX.vvvv對目的地暫存器運算元進行編碼,其以用於特定向量移位之1補數形式指定;或3)EVEX.vvvv不對任何運算元進行編碼,該欄位被保留且應含有1111b。因此,EVEX.vvvv欄位520對以反置(1補數)形式儲存之第一來源暫存器說明符之4個低階位元進行編碼。取決於指令,一額外不同EVEX位元欄位用以將說明符大小延伸至32暫存器。
EVEX.U 568類別欄位(EVEX位元組2,位元[2]-U)──若EVEX.U=0,則其指示類別A(支援合併-寫入遮罩)或EVEX.U0;若EVEX.U=1,則其指示類別B(支援歸零及合併-寫入遮罩)或EVEX.U1。
首碼編碼欄位525(EVEX位元組2,位元[1:0]-pp)──為基址運算欄位提供額外位元。除提供對呈EVEX首碼格式之舊有SSE指令的支援之外,此亦具有緊縮SIMD首碼(而不需要一位元組來表達SIMD首碼,EVEX首碼僅需要2位元)之益處。在一實施例中,為了支援使用呈舊有格式及呈EVEX首碼格式兩者之SIMD首碼(66H、F2H、F3H)的舊有SSE指令,這些舊有SIMD首碼經編碼進SIMD首碼編碼欄位中;且在運行時間先被擴充至舊有SIMD首碼,才被提供至解碼器之PLA(因此PLA可執行這些舊有指令之舊有及EVEX格式兩者而不需修改)。雖然較新指令可直接使用EVEX首碼編碼欄位的內容作為運算碼延伸,但某些實施例為了一致性而以一相似方式擴充,但是允許這些舊有SIMD首碼指定不同意義。一替代實施例重設計PLA以支援2位元SIMD首碼編碼,且因此不需要擴充。
阿爾發欄位553(EVEX位元組3,位元[7]-EH;亦被稱為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制,及EVEX.N;亦以α來例示)──其內容區分不同擴增運算類型中之哪一者將被施行。
在貝他欄位555(EVEX位元組3,位元[6:4]-SSS,亦被稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0, EVEX.LLB;亦以βββ來例示)──區分指定類型之運算之哪一者將被施行。
REX'欄位510──此為REX'欄位之其餘部分,且為EVEX.V'位元欄位(EVEX位元組3,位元[3]-V'),其可用以編碼延伸32暫存器集之上部7或下部7。此位元以位元反置格式儲存。1之值係用以編碼下部7暫存器。換言之,V’VVVV係藉由組合EVEX.V’、EVEX.vvvv形成。
寫入遮罩欄位571(EVEX位元組3,位元[2:0]-kkk)──其內容指定寫入遮罩暫存器中之暫存器的索引。在一實施例中,特定值EVEX.kkk = 000具有暗示沒有寫入遮罩被使用於特定指令之特殊行為(此可通過多種方式實行,包括使用硬連線至所有者之寫入遮罩或繞過遮罩硬體之硬體)。當合併時,向量遮罩允許目的地中之任何元素集合在任何運算(由基址運算及擴增運算所指定)之執行期間受保護而不被更新;在其他實施例中,當對應遮罩位元具有一0值時,保持目的地之每一元素之舊值。對比而言,當歸零時,向量遮罩允許目的地中之任何元素集合在任何運算(由基址運算及擴增運算所指定)之執行期間被歸零;在一實施例中,當對應遮罩位元具有一0值時,將目的地之一元素設定為0。此功能性之子集係用以控制正施行之運算的向量長度之能力(亦即,元素之跨距自第一者至最後一者被修改);然而,被修改之元素並不需要為連續的。因此,寫入遮罩欄位571允許部分向量運算,包括載入、儲存、算術、邏輯等。雖然說明了寫入遮罩欄位571之內容選擇含有將被使用之寫入遮罩的數個寫入遮罩暫存器中之一者(且因此寫入遮罩欄位571之內容間接識別將被施行之遮罩)的實施例,但替代的或其他的不同實施例允許遮罩寫入欄位571之內容以直接指定將被施行之遮罩。
真實運算碼欄位530(位元組4)亦被稱為運算碼位元組。在此欄位中指定該運算碼之部分。
MOD R/M欄位540(位元組5)包括MOD欄位542、暫存器索引欄位544及R/M欄位546。MOD欄位542之內容區分記憶體存取與非記憶體存取操作。暫存器索引欄位544之作用可概述至兩個情形:對目的地暫存器運算元或來源暫存器運算元進行編碼,或被視為一運算碼延伸而不被使用來編碼任何指令運算元。暫存器索引欄位544之內容直接或透過位址產生來指定來源及目的地運算元之位置,無論其在暫存器或在記憶體中。這些包括足以從一PxQ(例如,32x512、7x128、32x1024、64x1024)暫存器夾選擇N暫存器的位元數目。雖然在一實施例中N可以是高達三個來源和一個目的地暫存器,替代實施例可以支援更多或更少的來源及目的地暫存器(例如,可支援高達兩個來源,其中這些來源中之一者也作用為目的地;可支援高達三個來源,其中這些來源中之一者也作用為目的地;可支援高達兩個來源及一個目的地)。
R/M欄位546之作用包括以下:對參考記憶體位址之指令運算元進行編碼,或對目的地暫存器運算元或來源暫存器運算元進行編碼。
尺度、索引、基址(SIB)位元組(位元組6)──尺度欄位550的內容允許縮放索引欄位之內容以用於記憶體位址產生(例如,用於使用2尺度 * 索引 + 基址的位址產生)。SIB.xxx 554及SIB.bbb 556──這些欄位之內容先前已在相關於暫存器索引Xxxx及Bbbb被提及。
位移欄位563A(位元組7-10)──當MOD欄位542含有10時,位元組7-10為位移欄位563A,且其與舊有32位元位移(disp32)相同之方式工作且以位元組粒度工作。此可用作記憶體位址產生之部分(例如,用於使用2尺度 * 索引 + 基址+位移的位址產生)。
位移因子欄位563B(位元組7)──當MOD欄位542含有01時,位元組7為位移因子欄位563B。此欄位之位置與舊有x86指令集8位元位移(disp8)之位置相同,其以位元組粒度工作。由於disp8係符號延伸的,其僅能在定址於-128及127位元組偏移之間;就64位元組快取線而言,disp8使用可僅被設定為四個真正有用的值-128、-64、0及64的8位元;由於常需要較大範圍,所以使用disp32;然而,disp32需要4位元組。對比於disp8與disp32,位移因子欄位563B係disp8的重新解譯;在使用位移因子欄位563B時,實際位移係由該位移因子欄位之內容乘以記憶體運算元存取之大小(N)來決定。此類型之位移稱為disp8*N。此減小平均指令長度(單個位元組被用來供用於位移,但具有大得多的範圍)。此類經壓縮之位移係基於有效位移為記憶體存取之粒度之倍數的假定,且因此位址偏移之冗餘低階位元不需進行編碼。換言之,位移因數欄位563B取代舊有x86指令集8位元位移。因此,位移因子欄位563B以與一x86指令集8位元位移相同之方式編碼(因此在ModRM/SIB編碼規則中沒有改變),其中唯一例外的是disp8被超載至disp8*N。換言之,改變不存在於編碼規則或編碼長度,而是僅存在於由硬體解譯之位移值(該硬體需要藉由記憶體運算元的大小縮放位移,以獲得一按位元組位址偏移)。
立即欄位572允許指定一立即。此欄位係可選擇的,意思是此欄位不存在於不支援立即的一通用向量友善格式實行方式中且其不存在於不使用一立即的指令中。
全運算碼欄位
圖5B為根據一實施例例示指令格式500之欄位的方塊圖,其構成全運算碼欄位574。具體而言,全運算碼欄位574包括格式欄位582、基址運算欄位543及資料元素寬度(W)欄位563。基址運算欄位543包括首碼編碼欄位525、運算碼映射欄位515及真實運算碼欄位530。
暫存器索引欄位
圖5C為根據一實施例例示格式500之欄位的方塊圖,其構成暫存器索引欄位545。具體而言,暫存器索引欄位545包括REX欄位505、REX'欄位510、MODR/M.Reg欄位544、MODR/M.r/m欄位546、VVVV欄位520、xxx欄位554、及bbb欄位556。
擴增運算欄位
圖5D為根據一實施例例示指令格式500之欄位的方塊圖,其構成一擴增運算欄位。當類別(U)欄位568含有0時,其表明EVEX.U0(類別A 568A);當其含有1時,其表明EVEX.U1(類別B 568B)。當U=0且MOD欄位542含有11(表明無記憶體存取操作)時,阿爾發欄位553(EVEX位元組3,位元[7]-EH)被解譯為rs欄位553A。當rs欄位553A含有一1值(捨入553A.1)時,貝他欄位555(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位555A。捨入控制欄位555A包括一位元SAE欄位596及二位元捨入運算欄位598。當rs欄位553A含有一0值(資料變換553A.2)時,貝他欄位555(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料變換欄位555B。當U=0且MOD欄位542含有00、01或10(表明記憶體存取操作)時,阿爾發欄位553(EVEX位元組3,位元[7]-EH)被解譯為驅逐提示(EH)欄位553B,且貝他欄位555(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料調處欄位555C。
當U=1時,阿爾發欄位553(EVEX位元組3,位元[7]-EH)被解釋為寫入遮罩控制(Z)欄位553C。當U=1且MOD欄位542含有11(表明無記憶體存取操作)時,貝他欄位555(EVEX位元組3,位元[4]-S0)之部分被解譯為RL欄位557A;當其含有一1值(捨入557A.1)時,貝他欄位555(EVEX位元組3,位元[6-5]-S2-1)的其餘部分被解譯為捨入運算欄位559A,而當RL欄位557A含有一0值(VSIZE 557A.2)時,貝他欄位555(EVEX位元組3,位元[6-5]-S2-1)的其餘部分被解譯為向量長度欄位559B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位542含有00、01或10(表明記憶體存取操作)時,貝他欄位555(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位559B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位557B(EVEX位元組3,位元[4]-B)。
範例性暫存器架構
圖6為根據一實施例之一暫存器架構600的方塊圖。在所例示之實施例中,存在有512個位元寬的32個向量暫存器610;此等暫存器被稱為ZMM0至ZMM31。低階7 ZMM暫存器之較低階256位元疊覆於暫存器YMM0-16上。低階7 ZMM暫存器之較低階128位元(YMM暫存器之較低階128位元)疊覆於暫存器XMM0-15上。換言之,向量長度欄位459B在最大長度與一或多個其他較短長度之間選擇,其中每一此較短長度為先前長度的一半長度;且不具有向量長度欄位459B之指令模板係操作於最大向量長度上。另外,在一實施例中,指令格式400之類別B指令模板對包封或純量單/雙倍精確度浮點資料及包封或純量整數資料進行運算。純量運算為在ZMM/YMM/XMM暫存器中之最低階資料元素位置上施行之運算;取決於實施例,該較高階資料元素位置係保持與其在指令之前相同或是歸零。
寫入遮罩暫存器615──在所例示之實施例中,存在8個寫入遮罩暫存器(k0至k7),大小各為64位元。在一替代實施例,寫入遮罩暫存器615之大小為7位元。在一些實施例中,向量遮罩暫存器k0不可用作寫入遮罩;當將通常指示k0之編碼用於寫入遮罩時,其選擇硬連線寫入遮罩0xFFFF,有效地停用該指令之寫入遮罩。
通用暫存器625──在所例示之實施例中,存在連同現有x86定址模式一起使用以將記憶體運算元定址之十六個64位元通用暫存器。這些暫存器係藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15來參照。
純量浮點堆疊暫存器夾(x87堆疊)645,其上別名有MMX包封整數平坦暫存器夾650──在所例示之實施例中,該x87堆疊係用以使用x87指令集延伸對32/64/80位元浮點資料施行純量浮點運算的八元素堆疊;而MMX暫存器係用以對64位元包封整數資料施行運算,以及用以保持用於在MMX及XMM暫存器之間施行的一些運算的運算元。
替代實施例可使用較寬或較窄的暫存器。此外,替代實施例可使用更多、更少或不同暫存器夾及暫存器。
範例性核心架構、處理器以及電腦架構
處理器核心可出於不同目的而以不同方式被實行,且可位在不同處理器中。舉例來說,此等核心之實行方式可包括:1)意欲用於通用運算的通用有序核心;2)意欲用於通用運算的高效能通用無序核心;3)主要意欲用於圖形及/或科學(處理量)運算的特定用途核心。不同處理器之實行方式可包括:1)一CPU(中央處理單元),其包括意欲用於通用運算的一或多個通用有序核心及/或意欲用於通用運算的一或多個通用無序核心;以及2)一共處理器,其包括主要意欲用於圖形及/或科學(處理量)的一或多個特定用途核心。此等不同的處理器導致不同的電腦系統架構,其可包括:1)在與CPU分開之晶片上的共處理器;2)在與CPU相同之封裝中之分開晶粒上的共處理器;3)在與CPU相同之晶粒上的共處理器(在此狀況下,此一共處理器有時被稱為專用邏輯,諸如整合式圖形及/或科學(處理量)邏輯,或作為專用核心);及4)系統單晶片,其在如所描述的CPU(有時被稱為應用程式核心或應用程式處理器)之相同的晶粒上可包括前文所述之共處理器及額外的功能性。接下來說明範例性核心架構,接著為範例性處理器及電腦架構之說明。
範例性核心架構
圖7A為根據實施例例示一範例性有序管線及一範例性暫存器重命名、無序發布/執行管線兩者的方塊圖。圖7B為根據實施例例示將被包括在一處理器中的一有序架構核心之一範例性實施例及一範例性暫存器重命名、無序發布/執行架構核心兩者的方塊圖。圖7A-B中之實線框例示有序管線及有序核心,而任擇的虛線框之添加例示暫存器重命名、無序發布/執行管線及核心。考慮到有序態樣為無序態樣之子集,無序態樣將被說明。
在圖7A中,一處理器管線700包括一提取級702、一長度解碼級704、一解碼級706、一分配級708、一重命名級710、一排程(亦被稱為一分派或發布)級712、一暫存器讀取/記憶體讀取級714、一執行級716、一回寫/記憶體寫入級718、一例外處置級722及一提交級724。
圖7B顯示處理器核心790,其包括耦接至一執行引擎單元750的前端單元730,且兩者皆被耦接至一記憶體單元770。核心790可為精簡指令集運算(RISC)核心、複雜指令集運算(CISC)核心、極長指令字(VLIW)核心、或混合式或替代式核心類型。而作為又另一選項,核心790可為特定用途核心,舉例而言,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用運算圖形處理單元(GPGPU)核心、圖形核心或類似者。
前端單元730包括耦接至指令快取記憶體單元734之分支預測單元732,指令快取記憶體單元734被耦接至指令轉譯後備緩衝器(TLB) 736,指令轉譯後備緩衝器736被耦接至指令提取單元738,指令提取單元738被耦接至解碼單元740。解碼單元740(或解碼器)可解碼指令,並產生一或多個微運算、微碼進入點、微指令、其他指令、或其他控制信號作為輸出,其等係從原始指令解碼、或以其他方式反映或導自原始指令。解碼單元740可使用各種不同的機制來實行。合適機制之範例包括但不限於查找表、硬體實行方式、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心790包括儲存用於特定微指令(例如,在解碼單元740中或以其他方式在前端單元730內部)之微碼的微碼ROM(未示出)或其他的媒體。解碼單元740係耦接至執行引擎單元750中之重命名/分配器單元752。
執行引擎單元750包括耦接至引退單元754及一組一或多個排程器單元756的重命名/分配器單元752。排程器單元756代表任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元756係耦接至實體暫存器夾電路單元758。實體暫存器夾758中之每一者代表一或多個實體暫存器夾,其中不同的實體暫存器夾儲存一或多個不同資料類型,諸如純量整數、純量浮點、包封整數、包封浮點、向量整數、向量浮點、狀態(例如,將被執行之下一指令的位址之一指令指標)等。在一項實施例中,實體暫存器夾單元758包含一向量暫存器單元、一寫入遮罩暫存器單元及一純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器及通用暫存器。實體暫存器夾單元758係被引退單元754所重疊,以例示暫存器重命名及無序執行可被實行之各種方式(例如,使用重排序緩衝器及引退暫存器夾;使用未來檔案、歷史緩衝器及引退暫存器夾;使用暫存器映像及暫存器池;等)。引退單元754及實體暫存器夾單元758係耦接至執行叢集760。執行叢集760包括一組一或多個執行單元762及一組一或多個記憶體存取單元764。執行單元762可施行各種操作(例如,移位、加法、減法、乘法)且針對各種類型之資料(例如,純量浮點、包封整數、包封浮點、向量整數向量浮點)施行。儘管一些實施例可包括專用於特定功能或功能集合之數個執行單元,但其他實施例可包括僅一個執行單元或皆施行所有功能之多個執行單元。排程器單元756、實體暫存器夾單元758及執行叢集760被顯示為可能係複數個,因為某些實施例生成用於某些類型之資料/運算之單獨管線(例如,各自具有其自身排程器單元、實體暫存器夾單元及/或執行叢集的純量整數管線、純量浮點/包封整數/包封浮點/向量整數/向量浮點管線及/或記憶體存取管線──且在一單獨記憶體存取管線之狀況下,可實行僅此管線之執行叢集具有記憶體存取單元764之某些實施例)。亦應理解,在使用單獨管線之情況下,這些管線中之一或多者可為無序發布/執行且其餘部分為有序的。
該組記憶體存取單元764係耦接至記憶體單元770,記憶體單元770包括耦接至資料快取記憶體單元774之資料TLB單元772,資料快取記憶體單元774耦接至層級2(L2)快取記憶體單元776。在一範例性實施例中,記憶體存取單元764可包括載入單元、儲存位址單元及儲存資料單元,其中之每一者係耦接至記憶體單元770中之資料TLB單元772。指令快取記憶體單元734係進一步耦接至記憶體單元770中之層級2(L2)快取記憶體單元776。L2快取記憶體單元776係耦接至一或多個其他層級之快取記憶體且最終耦接至主記憶體。
舉例來說,範例性暫存器重命名、無序發布/執行核心架構可如下來實行管線700:1)指令提取738施行提取及長度解碼級702與704;2)解碼單元740施行解碼級706;3)重命名/分配器單元752施行分配級708及重命名級710;4)排程器單元756施行排程級712;5)實體暫存器夾單元758及記憶體單元770施行暫存器讀取/記憶體讀取級714;執行叢集760施行執行級716;6)記憶體單元770及實體暫存器夾單元758施行回寫/記憶體寫入級718;7)各種單元可涉及例外處置級722;以及8)引退單元754及實體暫存器夾單元758施行提交級724。
核心790可支援包括本文所說明的指令之一或多個指令集(例如,x86指令集(具有已新增有較新版本之一些延伸);加州Sunnyvale之MIPS Technologies的MIPS指令集;加州Sunnyvale之ARM Holdings的ARM指令集(具有諸如NEON之任擇額外延伸))。在一實施例中,核心790包括用以支援包封資料指令集延伸(例如,AVX1、AVX2)的邏輯,藉此允許由許多多媒體應用程式所使用的操作將使用包封資料來被施行。
圖8例示根據一實施例的一SOC封裝體的方塊圖。如圖8所例示,SOC 802包括一或多個中央處理單元(CPU)核心820、一或多個圖形處理器單元(GPU)核心830、一輸入/輸出(I/O)介面840以及一記憶體控制器842。SOC封裝體802的各種組件可被耦接至一互連件或匯流排,諸如本文中參看其他圖所論述。又,SOC封裝體802可包括更多或更少構件,諸如本文中參看其他圖所論述。另外,SOC封裝體802的每一組件可包括一或多個其他組件,例如,如參看本文中其他附圖所論述。在一實施例中,SOC封裝體802(及其組件)被設置在一或多個積體電路(IC)晶粒上,例如,其被封裝成單個半導體裝置。
如圖8所例示,SOC封裝體802經由記憶體控制器842耦接至記憶體860。在一實施例中,記憶體860(或其之一部分)可整合於SOC封裝體802上。
I/O介面840可被耦接至一或多個I/O裝置870,例如,經由互連件及/或匯流排,諸如本文中參看其他圖所論述。I/O裝置870可包括鍵盤、滑鼠、觸控板、顯示器、影像/視訊擷取裝置(諸如攝影機或攝錄影機/錄影機)、觸控螢幕、揚聲器、或類似者中的一或多者。
圖9為根據一實施例之一處理系統900的方塊圖。在各種實施例中,系統900包括一或多個處理器902及一或多個圖形處理器908,且可為單處理器桌上型系統、多處理器工作站系統、或具有大量處理器902或處理器核心907之伺服器系統。在實施例中,系統900為併入於系統單晶片(SoC或SOC)積體電路中以用於行動、手持式或嵌入式裝置中之處理平台。
系統900之一實施例可包括以下各者或併入於以下各者中:基於伺服器之遊戲平台;遊戲機,其包括遊戲及媒體控制台;行動遊戲機;手持式遊戲機;或線上遊戲機。在一些實施例中,系統900為行動電話、智慧型手機、平板運算裝置或行動網際網路裝置。資料處理系統900亦可包括、耦接至、或整合於可穿戴裝置,諸如智慧型手錶可穿戴裝置、智慧型眼鏡裝置、擴增實境裝置或虛擬實境裝置。在一些實施例中,資料處理系統900為電視或機上盒裝置,其具有一或多個處理器902及由一或多個圖形處理器908產生之圖形介面。
在一些實施例中,一或多個處理器902各自包括一或多個處理器核心907以處理指令,該等指令在經執行時施行用於系統及使用者軟體之操作。在一些實施例中,一或多個處理器核心907中之每一者係組配來處理特定指令集909。在一些實施例中,指令集909可有利於進行複雜指令集運算(CISC)、精簡指令集運算(RISC)或經由極長指令字(VLIW)之運算。多個處理器核心907可各自處理一不同指令集909,該不同指令集可包括用以促進其他指令集之模仿之指令。處理器核心907亦可包括其他處理裝置,諸如數位信號處理器(DSP)。
在一些實施例中,處理器902包括快取記憶體904。取決於架構,處理器902可具有單個內部快取記憶體或多個層級之內部快取記憶體。在一些實施例中,快取記憶體係在處理器902之各組件間共享。在一些實施例中,處理器902亦使用可使用外部快取記憶體(例如,層級3(L3)或最末級快取記憶體(LLC)) (未示出),其可使用已知快取記憶體一致性技術在處理器核心907間共享。暫存器夾906被額外包括於處理器902中,其可包括不同類型之暫存器以用於儲存不同類型之資料(例如,整數暫存器、浮點暫存器、狀態暫存器及指令指標暫存器)。一些暫存器可為通用暫存器,而其他暫存器可特定於處理器902之設計。
在一些實施例中,處理器902係耦接至處理器匯流排910,以在系統900中之處理器902與其他組件之間傳送通訊信號,諸如位址、資料或控制信號。在一實施例中,系統900使用範例性「集線器」系統架構,其包括記憶體控制器集線器916及輸入輸出(I/O)控制器集線器930。記憶體控制器集線器916促進記憶體裝置與系統900之其他組件之間的通訊,而I/O控制器集線器(ICH)930經由本地I/O匯流排提供至I/O裝置之連接。在一實施例中,記憶體控制器集線器916之邏輯係整合於處理器中。
記憶體裝置920可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、相變記憶體裝置,或具有用以充當處理記憶體的合適效能的一些其他記憶體裝置。在一實施例中,記憶體裝置920可作為用於系統900之系統記憶體而操作,以儲存資料922及指令921以供在一或多個處理器902執行應用程式或程序時使用。記憶體控制器集線器916亦與任擇外部圖形處理器912耦接,其可與處理器902中之一或多個圖形處理器908通訊以施行圖形及媒體操作。
在一些實施例中,ICH 930致能周邊裝置經由高速I/O匯流排連接至記憶體裝置920及處理器902。I/O周邊裝置包括但不限於:音訊控制器946;韌體介面928;無線收發器926(例如,Wi-Fi、藍牙);資料儲存裝置924(例如,硬碟驅動機、快閃記憶體等);以及舊有I/O控制器940,供用於將舊有(例如,個人系統2(PS/2))裝置耦接至系統。一或多個通用串列匯流排(USB)控制器942連接輸入裝置,諸如鍵盤及滑鼠944組合。網路控制器934亦可耦接至ICH 930。在一些實施例中,高效能網路控制器控制器(未示出)耦接至處理器匯流排910。應瞭解的是,所顯示之系統900為範例性且非限制性的,此係因為亦可使用不同組配之其他類型的資料處理系統。舉例而言,I/O控制器集線器930可整合於一或多個處理器902內,或記憶體控制器集線器916及I/O控制器集線器930可整合至諸如外部圖形處理器912之分立外部圖形處理器中。
圖10為一處理器1000之一實施例的方塊圖,其具有一或多個處理器核心1002A至1002N、一整合式記憶體控制器1014及一整合式圖形處理器1008。圖10中具有與本文中之任何其他圖之元件相同的參考數字(或名稱)的彼等元件可以相似於在本文他處所說明之方式的任何方式操作或作用,但不限於此。處理器1000可包括高達且包括由虛線框所表示之額外核心1002N的額外核心。處理器核心1002A至1002N中之每一者包括一或多個內部快取記憶體單元1004A至1004N。在一些實施例中,每一處理器核心亦有對一或多個共享已快取單元1006之存取。
內部快取記憶體單元1004A至1004N及共享快取記憶體單元1006表示在處理器1000中之快取記憶體階層。快取記憶體階層可包括每一處理器核心內之至少一個層級之指令及資料快取記憶體,及一或多個層級之共享中間層級快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)或其他層級之快取記憶體,其中在外部記憶體之前的最高層級之快取記憶體係分類為LLC。在一些實施例中,快取一致性邏輯維持各種快取記憶體單元1006與1004A至1004N之間的一致性。
在一些實施例中,處理器1000亦可包括一組一或多個匯流排控制器單元1016及一系統代理核心1010。一或多個匯流排控制器單元1016管理一組周邊匯流排,諸如一或多個周邊組件互連匯流排(例如,PCI、快速PCI)。系統代理核心1010提供用於各種處理器組件之管理功能性。在一些實施例中,系統代理核心1010包括一或多個整合式記憶體控制器1014,以管理對各種外部記憶體裝置(未示出)之存取。
在一些實施例中,處理器核心1002A至1002N中之一或多者包括對同時多執行緒之支援。在此實施例中,系統代理核心1010包括用於在多執行緒處理期間協調及操作核心1002A至1002N之組件。系統代理核心1010可額外包括電源控制單元(PCU),其包括調節處理器核心1002A至1002N及圖形處理器1008之電力狀態的邏輯及組件。
在一些實施例中,處理器1000另外包括用以執行圖形處理操作之圖形處理器1008。在一些實施例中,圖形處理器1008係耦接至共享快取記憶體單元1006之集合,以及包括一或多個整合式記憶體控制器1014之系統代理核心1010。在一些實施例中,顯示器控制器1011與圖形處理器1008耦接,以驅動圖形處理器輸出至一或多個經耦接之顯示器。在一些實施例中,顯示器控制器1011可為經由至少一個互連件與圖形處理器耦接之單獨模組,或可整合於圖形處理器1008或系統代理核心1010中。
在一些實施例中,以環形為基之互連單元1012係用以耦接處理器1000之內部組件。然而,可使用替代互連單元,諸如點對點互連件、切換式互連件或其他技術,包括業界所熟知之技術。在一些實施例中,圖形處理器1008經由I/O鏈路1013與環形互連件1012耦接。
範例性I/O鏈路1013表示多種I/O互連件中之至少一者,包括封裝體上I/O互連件,其有助於各種處理器組件與高效能嵌入式記憶體模組1018之間的通訊,該高效能嵌入式記憶體模組係諸如eDRAM(或嵌入式DRAM)模組。在一些實施例中,處理器核心1002至1002N中之每一者及圖形處理器1008將嵌入式記憶體模組1018用作共享最末級快取記憶體。
在一些實施例中,處理器核心1002A至1002N係執行相同指令集架構的同質核心。在另一實施例中,就指令集架構(ISA)而言,處理器核心1002A至1002N係異質的,其中處理器核心1002A至1002N中之一或多者執行第一指令集,而其他核心中之至少一者執行第一指令集之子集或不同指令集。在一實施例中,處理器核心1002A至1002N就微架構而言為異質的,其中具有相對較高電力消耗之一或多個核心與具有較低電力消耗之一或多個電力核心耦接。此外,處理器1000可實行於一或多個晶片上,或實行為除其他組件以外還具有所例示之組件的一SoC積體電路。
圖11為一圖形處理器1100的方塊圖,其可係一分立圖形處理單元,或可係與複數個處理核心整合之一圖形處理器。在一些實施例中,圖形處理器經由記憶體映射I/O介面與圖形處理器上之暫存器及與置放於處理器記憶體中之命令通訊。在一些實施例中,圖形處理器1100包括用以存取記憶體之記憶體介面1114。記憶體介面1114可為至本地記憶體、一或多個內部快取記憶體、一或多個共享外部快取記憶體及/或至系統記憶體之介面。
在一些實施例中,圖形處理器1100亦包括顯示器控制器1102,以驅動顯示器輸出資料至顯示裝置1120。顯示器控制器1102包括硬體,其用於一或多個疊覆平面,供用於多層視訊或使用者介面元件的顯示及組成。在一些實施例中,圖形處理器1100包括視訊編解碼器引擎1106以將媒體編碼至一或多個媒體編碼格式、自一或多個媒體編碼格式解碼或在一或多個媒體編碼格式之間轉碼,該等一或多個媒體編碼格式包括但不限於:動畫專家群(MPEG)格式,諸如MPEG-2;進階視訊編碼(AVC)格式,諸如H.264/MPEG-4 AVC;以及電影電視工程師協會(SMPTE) 321M/VC-1;及聯合照相專家群(JPEG)格式,諸如JPEG;及動畫JPEG (MJPEG)格式。
在一些實施例中,圖形處理器1100包括區塊影像轉移(BLIT)引擎1104,以施行包括例如位元邊界區塊轉移之二維(2D)光柵化操作。然而,在一實施例中,3D圖形操作係使用圖形處理引擎(GPE)1110之一或多個組件施行。在一些實施例中,圖形處理引擎1110係運算引擎,其用於施行圖形操作,包括三維(3D)圖形操作及媒體操作。
在一些實施例中,GPE 1110包括3D管線1112,其用於施行3D操作,諸如使用作用於3D基元形狀(例如,矩形、三角形等)之處理功能以渲染三維影像及場景。3D管線1112包括可規劃及固定功能元件,其施行元件中之各種任務及/或生產執行緒至3D/媒體子系統1115。儘管3D管線1112可用於施行媒體操作,但GPE 1110之一實施例亦包括媒體管線1116,其係具體地被使用來施行媒體操作,諸如視訊後處理及圖形增強。
在一些實施例中,媒體管線1116包括固定功能或可規劃邏輯單元,用以代替或代表視訊編解碼器引擎1106施行一或多個特定化媒體操作,諸如視訊解碼加速、視訊解交錯及視訊編碼加速。在一些實施例中,媒體管線1116額外包括執行緒生產單元,以生產用於在3D/媒體子系統1115上執行之執行緒。所生產之執行緒在包括於3D/媒體子系統1115中之一或多個圖形執行單元上施行用於媒體操作的運算。
在一些實施例中,3D/媒體子系統1115包括用於執行由3D管線1112及媒體管線1116所生產之執行緒的邏輯。在一實施例中,管線發送執行緒執行請求至3D/媒體子系統1115,其包括用於仲裁及分派各種請求至可用執行緒執行資源的執行緒分派邏輯。執行資源包括用以處理3D及媒體執行緒的圖形執行單元之陣列。在一些實施例中,3D/媒體子系統1115包括用於執行緒指令及資料之一或多個內部快取記憶體。在一些實施例中,子系統亦包括共享記憶體,包括暫存器及可定址記憶體,以在執行緒之間共享資料及儲存輸出資料。
在下列說明中,闡述了數個特定細節以提供更透徹的理解。然而,對熟習此藝者將顯易可見的是,可在無這些特定細節中之一或多者之情況下實踐本文所揭露之實施例。在其他實例中,並未說明熟知特徵以避免模糊本實施例之細節。
以下範例涉及其他實施例。範例1包括一種設備,其包含:資料空間轉譯邏輯(DTL)電路系統,其用以接收一靜態輸入及一動態輸入;且該DTL電路系統至少部分地基於該靜態輸入及該動態輸入產生一或多個輸出,其中該DTL電路系統係用以在一處理器中開始推測運算之前產生該等一或多個輸出。範例2包括如範例1之設備,其中該處理器之一前端包含該DTL電路系統。範例3包括如範例1之設備,其中該DTL電路系統包含一可規劃邏輯陣列(PLA)。範例4包括如範例1之設備,其進一步包含一跳轉執行單元(JEU),以從一暫存器夾發送資料,供用於該DTL電路系統之該動態輸入。範例5包括如範例4之設備,其中該JEU係用以阻擋要發送來供用於該DTL電路系統之該動態輸入的關聯於一錯誤預測路徑的資料。範例6包括如範例1之設備,其中一或多個輸出包含以下中之一或多者:一前端分支提示、一立即值及一微運算指令指標。範例7包括如範例1之設備,其中該DTL電路系統係用以原子地規劃該等一或多個輸出,該等一或多個輸出包含:一前端分支提示、一立即值及一微運算指令指標。範例8包括如範例1之設備,其中該靜態輸入係用以指示該DTL電路系統的一操作模式。範例9包括如範例1之設備,其中該動態輸入係要針對每一指令而改變。範例10包括如範例1之設備,其中該動態輸入係要至少部分地基於下列來提供:該處理器之該前端中之一指令的一運算元或該指令的一立即運算元。範例11包括如範例1的設備,其中該處理器之複數個處理器核心係要共享該DTL電路系統。範例12包括如範例1之設備,其進一步包含一後端DTL電路系統,以至少部分地基於該靜態輸入及該動態輸入產生該等一或多個輸出。範例13包括如範例12之設備,其中該後端DTL電路系統係用以提供該等一或多個輸出至一JEU。
範例14包括一種設備,其包含:資料空間轉譯邏輯(DTL)電路系統,其用以接收一靜態輸入及一動態輸入,且至少部分地基於該靜態輸入及該動態輸入產生一或多個輸出,解碼電路系統,其用以解碼具有用於一運算元值之一欄位的一指令;以及執行電路系統,其用以執行經解碼之該指令以至少部分地基於該運算元值提供該動態輸入。範例15包括如範例14之設備,其中該DTL電路系統係用以在一處理器中開始推測運算之前產生該等一或多個輸出。範例16包括如範例15之設備,其中該處理器之一前端包含該DTL電路系統。範例17包括如範例14之設備,其中該DTL電路系統包含一可規劃邏輯陣列(PLA)。範例18包括如範例14之設備,其進一步包含一跳轉執行單元(JEU),以從一暫存器夾發送資料,供用於該DTL電路系統之該動態輸入。範例19包括如範例18之設備,其中該JEU係用以阻擋要發送來供用於該DTL電路系統之該動態輸入的關聯於一錯誤預測路徑的資料。範例20包括如範例14之設備,其中一或多個輸出包含以下中之一或多者:一前端分支提示、一立即值及一微運算指令指標。範例21包括如範例14之設備,其中該DTL電路系統係用以原子地規劃該等一或多個輸出,該等一或多個輸出包含:一前端分支提示、一立即值及一微運算指令指標。範例22包括如範例14之設備,其中該靜態輸入係用以指示該DTL電路系統的一操作模式。
範例23包括一或多個非暫時性電腦可讀媒體,其包含一或多個指令,當該等一或多個指令在一處理器上執行時,將該處理器組配來施行一或多個操作,以致使:資料空間轉譯邏輯(DTL)電路系統將接收一靜態輸入及一動態輸入,且至少部分地基於該靜態輸入及該動態輸入產生一或多個輸出,解碼電路系統將解碼具有用於一運算元值之一欄位的一指令;以及執行電路系統將執行經解碼之該指令以至少部分地基於該運算元值提供該動態輸入。範例24包括範例23之該等一或多個電腦可讀媒體,其進一步包含一或多個指令,當該等一或多個指令在該至少一處理器上執行時,將該至少一處理器組配來施行一或多個操作,以致使該DTL電路系統在始該處理器中開始推測運算之前產生該等一或多個輸出。範例25包括範例23之該等一或多個電腦可讀媒體,其進一步包含一或多個指令,當該等一或多個指令在該至少一處理器上執行時,將該至少一處理器組配來施行一或多個操作,以致使一跳轉執行單元(JEU)從一暫存器夾發送資料,供用於該DTL電路系統之該動態輸入。
範例26包括一種設備,其包含用以施行如任何先前範例中所闡述之一方法的構件。範例27包括機器可讀儲存器,其包含機器可讀指令,當該等機器可讀指令被執行時,係用以實行如任何先前範例中所闡述之一方法,或實現如任何先前範例中所闡述之一設備。
在各種實施例中,參看圖1及其後所論述之一或多個操作,可由參看圖中之任一者所論述之一或多個組件(本文中可互換地稱作「邏輯」)來施行。
在各種實施例中,本文所論述的操作,例如參看圖1及其後者,可被實行為硬體(例如,邏輯電路系統)、軟體、韌體、或其之組合,其可被提供作為電腦程式產品,例如,包括一或多個有形(例如,非暫時性)機器可讀或電腦可讀媒體,其上儲存有指令(或軟體程序),以用來規劃電腦以施行本文所論述之程序。機器可讀媒體可包括儲存裝置,諸如就圖所論述的彼等儲存裝置。
此外,此類電腦可讀媒體可下載為電腦程式產品,其中該程式可經由通訊鏈路(例如,匯流排、數據機或網路連接),以於一載波或其他傳播媒體中所提供之資料信號的方式,從遠端電腦(例如,伺服器)轉移至請求電腦(例如,用戶端)。
在本說明書中提及「一個實施例」或「一實施例」意謂關連於該實施例所說明之特定特徵、結構及/或特性可包括於至少一實行方式中。在本說明書之各處所出現的短語「在一個實施例中」可能是或可能不是皆指同一實施例。
又,在說明及申請專利範圍中,可使用用語「耦接」及「連接」連同其衍生詞。在一些實施例中,「連接」可被用來指示二或更多個元件彼此直接實體或電氣接觸。「耦接」可意謂二或更多個元件呈直接實體或電氣接觸。然而,用語「耦接」也可意謂二或更多個元件可沒有彼此直接接觸,但仍可協同操作或與彼此互動。
因此,雖然實施例已以特定於結構特徵及/或方法論行為(methodological act)之語言予以說明,但應理解的是,請求標的可不受限於所說明之特定特徵或行為。相反地,特定特徵及行為係揭露為實行請求標的之樣本型式。
102,302:資料空間轉譯邏輯(DTL)
104:模式轉變
106:動態輸入狀態
108:動態DTL輸入觸拍,多工器
110:指令或微運算
112:前端分支(提示)
114:立即值,執行元資料
116:微運算指令指標(IP)
118:微運算定序器
120:JEU
122,316,906:暫存器夾
200,400:方法
202,204,206,208,210,212,214,216,218,220,222,224,230,402,404,406,408,410,412, 414,416,418,420:操作
304:動態組件
306:模式及組態輸入狀態
308:前端分支提示
310:立即值
312:微運算指令指標
314:多工器
318:(前端)計數器
320:控制
459B,559B:向量長度欄位
500:(指令)格式
502:EVEX首碼
505:REX欄位
510:REX'欄位
515:運算碼映射欄位
520:EVEX.vvvv(欄位),VVVV欄位
525:首碼編碼欄位
530:真實運算碼欄位
540:MOD R/M欄位
542:MOD欄位
543:基址運算欄位
544:MODR/M.Reg欄位,暫存器索引欄位
545:暫存器索引欄位
546:MODR/M.r/m欄位,R/M欄位
550:尺度欄位
553:阿爾發欄位
553A:rs欄位
553A.1,557A.1:捨入
553A.2:資料變換
553B:驅逐提示欄位
553C:寫入遮罩控制欄位
554:SIB.xxx,xxx欄位
555:貝他欄位
555A:捨入控制欄位
555B:為三位元資料變換欄位
555C:三位元資料調處欄位
556:SIB.bbb,bbb欄位
557A.2:VSIZE
557A:RL欄位
557B:廣播欄位
559A:捨入運算欄位
563,564:資料元素寬度欄位
563A:位移欄位
568:EVEX.U,類別欄位
568A:類別A
568B:類別B
571:寫入遮罩欄位,遮罩寫入欄位
572:立即欄位
574:全運算碼欄位
582:格式欄位
596:一位元SAE欄位
598:二位元捨入運算欄位
600:暫存器架構
610:向量暫存器
615:寫入遮罩暫存器
625:通用暫存器
645:純量浮點堆疊暫存器夾
650:MX包封整數平坦暫存器夾
700:(處理器)管線
702:提取級
704:長度解碼級
706:解碼級
708:配級
710:重命名級
712:排程級
714:暫存器讀取/記憶體讀取級
716:執行級
718:回寫/記憶體寫入級
722:例外處置級
724:提交級
730:前端單元
732:分支預測單元
734:指令快取記憶體單元
736:指令轉譯後備緩衝器(TLB)
738:指令提取(單元)
740:解碼單元
750:執行引擎單元
752:重命名/分配器單元
754:引退單元
756:排程器單元
758:實體暫存器夾(電路單元)
760:執行叢集
762:執行單元
764:記憶體存取單元
770:記憶體單元
772:資料TLB單元
774:資料快取記憶體單元
776:層級2(L2)快取記憶體單元
790,1002A,1002N:(處理器)核心
802:SOC(封裝體)
820:中央處理單元(CPU)核心
830:圖形處理器單元(GPU)核心
840:輸入/輸出(I/O)介面
842:記憶體控制器
860:記憶體
870:I/O裝置
900:(資料處理)系統
902,1000:處理器
904:快取記憶體
907,1002:處理器核心
908,1100:圖形處理器
909:指令集
910:處理器匯流排
912:外部圖形處理器
916:記憶體控制器集線器
920:記憶體裝置
921:指令
922:資料
924:資料儲存裝置
926:無線收發器
928:韌體介面
930:輸入輸出(I/O)控制器集線器,ICH
934:網路控制器
940:舊有I/O控制器
942:通用串列匯流排(USB)控制器
944:鍵盤及滑鼠
946:音訊控制器
1004A,1004N:(內部)快取記憶體單元
1006:共享已快取單元,(共享)快取記憶體單元
1008:(整合式)圖形處理器
1010:系統代理核心
1011,1102:顯示器控制器
1012:以環形為基之互連單元.環形互連件
1013:I/O鏈路
1014:整合式記憶體控制器
1016:匯流排控制器單元
1018:嵌入式記憶體模組
1104:區塊影像轉移(BLIT)引擎
1106:視訊編解碼器引擎
1110:圖形處理引擎(GPE)
1112:3D管線
1114:記憶體介面
1115:3D/媒體子系統
1116:媒體管線
1120:顯示裝置
詳細說明係參看隨附圖式來提供。在各圖中,一參考數字最左邊的數字指出該參考數字首次出現在哪一圖中。在不同圖中使用相同參考數字指示相似或相同物件。
圖1例示根據一實施例的用以提供用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制的一處理器之組件的方塊圖。
圖2例示根據一實施例的用以提供用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制的一方法的流程圖。
圖3例示根據一實施例的用以提供用於高效且安全的資料空間引導式微定序之迴路驅動區式前端轉譯控制的一處理器之組件的方塊圖。
圖4例示根據一實施例的用以提供用於高效且安全的資料空間引導式微定序之迴路驅動區式前端轉譯控制的一方法的流程圖。
圖5A為根據實施例例示一範例性指令格式的方塊圖。
圖5B為根據一實施例例示指令格式之欄位的方塊圖,其構成全運算碼欄位。
圖5C為根據一實施例例示指令格式之欄位的方塊圖,其構成暫存器索引欄位。
圖5D為根據一實施例例示指令格式之欄位的方塊圖,其構成擴增運算欄位。
圖6為根據一實施例之一暫存器架構的方塊圖。
圖7A為根據實施例例示一範例性有序管線及一範例性暫存器重命名、無序發布/執行管線兩者的方塊圖。
圖7B為根據實施例例示將被包括在一處理器中的一有序架構核心之一範例性實施例及一範例性暫存器重命名、無序發布/執行架構核心兩者的方塊圖。
圖8例示根據一實施例的一SOC(系統單晶片)封裝體的方塊圖。
圖9為根據一實施例之一處理系統的方塊圖。
圖10為根據一些實施例的具有一或多個處理器核心之一處理器之一實施例的方塊圖。
圖11為根據一實施例的一圖形處理器的方塊圖。
102:資料空間轉譯邏輯(DTL)
104:模式轉變
106:動態輸入狀態
108:動態DTL輸入觸拍,多工器
110:指令或微運算
112:前端分支(提示)
114:立即值,執行元資料
116:微運算指令指標(IP)
118:微運算定序器
120:JEU
122:暫存器夾
Claims (24)
- 一種設備,其包含: 資料空間轉譯邏輯(DTL)電路系統,其用以接收一靜態輸入及一動態輸入;且 該DTL電路系統至少部分地基於該靜態輸入及該動態輸入產生一或多個輸出, 其中該DTL電路系統係用以在一處理器中開始推測運算之前產生該等一或多個輸出。
- 如請求項1之設備,其中該處理器之一前端包含該DTL電路系統。
- 如請求項1至2中任一項之設備,其中該DTL電路系統包含一可規劃邏輯陣列(PLA)。
- 如請求項1至3中任一項之設備,其進一步包含一跳轉執行單元(JEU),以從一暫存器夾發送資料,供用於該DTL電路系統之該動態輸入。
- 如請求項1至4中任一項之設備,其中該JEU係用以阻擋要發送來供用於該DTL電路系統之該動態輸入的關聯於一錯誤預測路徑的資料。
- 如請求項1至5中任一項之設備,其中一或多個輸出包含以下中之一或多者:一前端分支提示、一立即值及一微運算指令指標。
- 如請求項1至6中任一項之設備,其中該DTL電路系統係用以原子級地規劃該等一或多個輸出,該等一或多個輸出包含:一前端分支提示、一立即值及一微運算指令指標。
- 如請求項1至7中任一項之設備,其中該靜態輸入係用以指示用於該DTL電路系統的一操作模式。
- 如請求項1至8中任一項之設備,其中該動態輸入係要針對每一指令而改變。
- 如請求項1至9中任一項之設備,其中該動態輸入係要至少部分地基於下列來提供:該處理器之該前端中之一指令的一運算元或該指令的一立即運算元。
- 如請求項1至10中任一項之設備,其中該處理器之複數個處理器核心係要共享該DTL電路系統。
- 如請求項1至11中任一項之設備,其進一步包含一後端DTL電路系統,以至少部分地基於該靜態輸入及該動態輸入產生該等一或多個輸出。
- 如請求項1至12中任一項之設備,其中該後端DTL電路系統係用以提供該等一或多個輸出至一JEU。
- 一種設備,其包含: 資料空間轉譯邏輯(DTL)電路系統,其用以接收一靜態輸入及一動態輸入,且至少部分地基於該靜態輸入及該動態輸入產生一或多個輸出, 解碼電路系統,其用以解碼具有用於一運算元值之一欄位的一指令;以及 執行電路系統,其用以執行經解碼之該指令以至少部分地基於該運算元值提供該動態輸入。
- 如請求項14之設備,其中該DTL電路系統係用以在一處理器中開始推測運算之前產生該等一或多個輸出。
- 如請求項14至15中任一項之設備,其中該處理器之一前端包含該DTL電路系統。
- 如請求項14至16中任一項之設備,其中該DTL電路系統包含一可規劃邏輯陣列(PLA)。
- 如請求項14至17中任一項之設備,其進一步包含一跳轉執行單元(JEU),以從一暫存器夾發送資料,供用於該DTL電路系統之該動態輸入。
- 如請求項14至18中任一項之設備,其中該JEU係用以阻擋要發送來供用於該DTL電路系統之該動態輸入的關聯於一錯誤預測路徑的資料。
- 如請求項14至19中任一項之設備,其中該一或多個輸出包含以下中之一或多者:一前端分支提示、一立即值及一微運算指令指標。
- 如請求項14至20中任一項之設備,其中該DTL電路系統係用以原子級地規劃該等一或多個輸出,該等一或多個輸出包含:一前端分支提示、一立即值及一微運算指令指標。
- 如請求項14至21中任一項之設備,其中該靜態輸入係用以指示該DTL電路系統的一操作模式。
- 一種電腦可讀媒體,其包含一或多個指令,當該等指令在一處理器上執行時,將該處理器組配來施行如請求項1至22中任一項之一或多個操作。
- 一種設備,其包含用以施行如請求項1至22中任一項所闡述之一方法的構件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/409,062 | 2021-08-23 | ||
US17/409,062 US20230057623A1 (en) | 2021-08-23 | 2021-08-23 | Issue, execution, and backend driven frontend translation control for performant and secure data-space guided micro-sequencing |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202328926A true TW202328926A (zh) | 2023-07-16 |
Family
ID=85227861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111127064A TW202328926A (zh) | 2021-08-23 | 2022-07-19 | 用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230057623A1 (zh) |
EP (1) | EP4392868A1 (zh) |
CN (1) | CN117597672A (zh) |
TW (1) | TW202328926A (zh) |
WO (1) | WO2023027823A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11928472B2 (en) | 2020-09-26 | 2024-03-12 | Intel Corporation | Branch prefetch mechanisms for mitigating frontend branch resteers |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8645666B2 (en) * | 2006-12-28 | 2014-02-04 | Intel Corporation | Means to share translation lookaside buffer (TLB) entries between different contexts |
US8261049B1 (en) * | 2007-04-10 | 2012-09-04 | Marvell International Ltd. | Determinative branch prediction indexing |
US10146545B2 (en) * | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9519773B2 (en) * | 2014-09-12 | 2016-12-13 | Intel Corporation | Returning to a control transfer instruction |
-
2021
- 2021-08-23 US US17/409,062 patent/US20230057623A1/en active Pending
-
2022
- 2022-07-14 WO PCT/US2022/037037 patent/WO2023027823A1/en active Application Filing
- 2022-07-14 CN CN202280047202.4A patent/CN117597672A/zh active Pending
- 2022-07-14 EP EP22861864.1A patent/EP4392868A1/en active Pending
- 2022-07-19 TW TW111127064A patent/TW202328926A/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11928472B2 (en) | 2020-09-26 | 2024-03-12 | Intel Corporation | Branch prefetch mechanisms for mitigating frontend branch resteers |
Also Published As
Publication number | Publication date |
---|---|
CN117597672A (zh) | 2024-02-23 |
US20230057623A1 (en) | 2023-02-23 |
WO2023027823A1 (en) | 2023-03-02 |
EP4392868A1 (en) | 2024-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729048B (zh) | 提供向量压缩和旋转功能的指令和逻辑 | |
CN107077321B (zh) | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 | |
TWI517041B (zh) | 有條件的傳播在單一指令多重資料/向量執行中之評估值的裝置與方法 | |
CN107092465B (zh) | 用于提供向量混合和置换功能的指令和逻辑 | |
TWI524266B (zh) | 用以偵測向量暫存器內相等元素之裝置及方法 | |
KR20170097018A (ko) | 벡터 브로드캐스트 및 xorand 로직 명령어를 위한 장치 및 방법 | |
JP2021108102A (ja) | 行列演算アクセラレータの命令のための装置、方法、およびシステム | |
CN107102844B (zh) | 超级乘加(超级madd)指令 | |
TWI760341B (zh) | 用於跨步載入的系統、設備及方法 | |
WO2013095608A1 (en) | Apparatus and method for vectorization with speculation support | |
CN112148251A (zh) | 跳过无意义的矩阵运算的系统和方法 | |
TW201337743A (zh) | 用於使用輸入寫入遮罩與立即值自來源寫入遮罩暫存器在目的地寫入遮罩暫存器中設定輸出遮罩之系統、設備及方法 | |
US20220091852A1 (en) | Instruction Set Architecture and Microarchitecture for Early Pipeline Re-steering Using Load Address Prediction to Mitigate Branch Misprediction Penalties | |
TW201346726A (zh) | 用以執行絕對差之雙塊總數之系統,裝置及方法 | |
KR101624786B1 (ko) | 기입마스크 레지스터의 트레일링 최하위 마스킹 비트를 결정하는 시스템, 장치, 및 방법 | |
US20230214325A1 (en) | Register File Prefetch | |
KR102462283B1 (ko) | 명령어 흐름을 최적화하기 위한 체크를 수행하는 장치 및 방법 | |
TW202328926A (zh) | 用於高效且安全的資料空間引導式微定序之發布、執行及後端驅動前端轉譯控制 | |
EP4141654A1 (en) | Loop driven region based frontend translation control for performant and secure data-space guided micro-sequencing | |
US11934830B2 (en) | Method and apparatus for data-ready memory operations | |
CN108241506B (zh) | 对基于高性能串的循环加速器中的加载做控制推测的方法 | |
US20210397454A1 (en) | Instruction to vectorize loops with backward cross-iteration dependencies | |
US20230195465A1 (en) | Device, method and system to provide a predicted value with a sequence of micro-operations | |
CN115525333A (zh) | 用于具有移位控制和宽度控制的紧缩数据卷积指令的装置、方法和系统 |