TW201738733A - 執行指令以排列遮罩的系統及方法 - Google Patents

執行指令以排列遮罩的系統及方法 Download PDF

Info

Publication number
TW201738733A
TW201738733A TW106101733A TW106101733A TW201738733A TW 201738733 A TW201738733 A TW 201738733A TW 106101733 A TW106101733 A TW 106101733A TW 106101733 A TW106101733 A TW 106101733A TW 201738733 A TW201738733 A TW 201738733A
Authority
TW
Taiwan
Prior art keywords
destination
source operand
operand identifier
instruction
field
Prior art date
Application number
TW106101733A
Other languages
English (en)
Inventor
莎拉 班索艾
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201738733A publication Critical patent/TW201738733A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

說明一種處理器,包含:提取電路,用以提取指令,該指令包含第一源運算元識別符、第二源運算元識別符、及目的地運算元識別符;解碼電路,用以將指令解碼;資料擷取電路,用以擷取與第一源運算元識別符及第二源運算元識別符相關聯的資料;以及,執行電路。在某些實施例中,執行電路係配置成決定與第一源運算元識別符相關聯的資料的第一元件是否被設定,假使第一元件被設定,則從與第二源運算元識別符相關聯的資料的對應的第二元件擷取出目的地索引,並且,使用目的地索引以選取及設定與目的地運算元識別符相關聯的資料之目的地元件。

Description

執行指令以排列遮罩的系統及方法
此處所述的實施例大致有關於處理器。特別地,此處所述的實施例大致有關於配置成執行指令以排列遮罩之處理器。
向量化碼意指同時對向量的多個分量執行的操作。向量或單指令多資料(SIMD)計算由於能夠增加利用向量或SIMD處理器提供的平行化,所以,其通常比純量計算提供改良的執行性能。但是,在通用應用中迴圈向量化的性能增益會因複雜的動態控制流程而受限。特別是當向量化要求例如聚集及分散等昂貴指令時,編譯器不會嘗試向量化稀疏多分枝的迴圈。對於例如稀疏多分枝之迴圈等某些型式的碼,難以應用向量化以取得性能增益。那麼,需要的是能夠致使向量化某些型式的碼之指令。
102‧‧‧指令儲存器
104‧‧‧解碼電路
106‧‧‧執行電路
108‧‧‧暫存器
110‧‧‧記憶體
112‧‧‧退出或提交電路
500‧‧‧邏輯電路
502‧‧‧8位元暫存器
504‧‧‧24位元暫存器
512‧‧‧8位元暫存器
1700‧‧‧暫存器架構
1710‧‧‧向量暫存器
1715‧‧‧寫入遮罩暫存器
1725‧‧‧通用暫存器
1800‧‧‧管線
1890‧‧‧核心
2200‧‧‧處理器
2300‧‧‧系統
2400‧‧‧系統
2500‧‧‧系統
1800‧‧‧系統晶片
圖1是方塊圖300,顯示根據一個實施例之處理組 件,用以執行指令以排列遮罩。
圖2顯示根據一個實施例之包含於用以排列遮罩之指令中的欄位。
圖3是方塊流程圖,顯示根據一個實施例之處理組件,用以執行指令以排列遮罩。
圖4顯示根據一個實施例之使用第一源運算元及第二源運算元以設定目的地運算元的一個元件之邏輯電路。
圖5顯示根據一個實施例之使用第一源運算元及第二源運算元以設定目的地運算元的一個元件之邏輯電路。
圖6是虛礙碼(pseudocode),顯示根據一個實施例之執行電路106(圖1)的操作。
圖7是方塊流程圖,顯示根據一個實施例之執行電路106(圖1)的操作。
圖8是方塊流程圖,顯示根據替代實施例之執行電路106(圖1)的操作。
圖9是方塊流程圖,顯示根據替代實施例之執行電路106(圖1)的操作。
圖10是方塊流程圖,顯示根據替代實施例之執行電路106(圖1)的操作。
圖11是方塊圖,顯示根據實施例之泛型(generic)向量友善指令格式及其等級A指令樣板(template)。
圖12是方塊圖,顯示根據實施例之泛型向量友善指令格式及其等級B指令樣板。
圖13顯示包含於泛型向量友善指令格式1100中的欄 位。
圖14是方塊圖,顯示根據一個實施例之構成完全運算碼欄位1174的說明的特定向量友善指令格式1300的欄位。
圖15是方塊圖,顯示根據一個實施例之構成暫存器索引欄位1144之特定的向量友善指令格式1300的欄位。
圖16是方塊圖,顯示根據一個實施例之構成擴增操作欄位1650之特定向量友善指令格式的欄位。
圖17是根據一個實施例之暫存器架構1700的方塊圖。
圖18是方塊圖,顯示根據實施例之示例性有序管線及示例性暫存器重命名、亂序核發/執行管線。
圖19顯示處理器核心1890,處理器核心1890包含耦合至執行引擎單元1850之前端單元1830,引擎單元1850及前端單元1830都被耦合至記憶體單元1870。
圖20是根據實施例之單一處理器核心、以及其對晶粒上互連網路2002的連接及其本地子集合的階級2(L2)快取記憶體2004之方塊圖。
圖21是根據實施例的圖20中的處理器核心的部份之放大視圖。
圖22是根據實施例之具有一個以上的核心、具有集成的記憶體控制器、及具有集成的圖形的處理器2200的方塊圖。
圖23顯示根據本發明的一個實施例之系統2300的方 塊圖。
圖24顯示根據本發明的實施例之第一更具體示例性系統2400的方塊圖。
圖25顯示根據本發明的實施例之第二更具體示例性系統2500的方塊圖。
圖26顯示根據本發明的實施例之SoC 2600的方塊圖。
圖27顯示方塊圖,對比根據實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。
【發明內容與實施方式】
遮罩式載入及儲存可以被用來增進某些型式的碼及碼迴圈的性能。揭示修改遮罩之指令。揭示的指令允許排列遮罩以便能夠對正確的位置讀取及寫入。揭示的指令可以被用來排列任何運算元而不管其大小或所要的用途。於下詳述遮罩排列之系統、裝置、及方法的實施例。
圖1是方塊圖100,顯示根據一個實施例之處理組件,用以執行指令以排列遮罩。具體而言,方塊圖100包含指令儲存器102、解碼電路104、執行電路106、暫存器108、記憶體110、及退出或提交電路112。指令會從指令儲存器102被輸入,指令儲存器102包括快取記憶體、晶片上記憶體、與處理器相同晶粒上的記憶體、指令暫存器、一般暫存器、或系統記憶體,但非侷限於此。解 碼電路104將指令解碼。在一個實施例中,指令包括參考圖2之下述進一步說明的欄位。解碼的指令係由執行電路106來予以執行。執行電路106係配置成對暫存器108和記憶體110讀寫資料。暫存器108包括資料暫存器、指令暫存器、一般暫存器、晶片上記憶體中任一或更多者。記憶體110包括晶片上記憶體、與處理器相同的晶粒上的記憶體、與處理器相同封裝組件中的記憶體、快取記憶體、或系統記憶體。參考圖6至10,於下顯示及說明數個示例性執行電路106的實施例。退出或提交電路112確保執行結果寫至或已寫至其目的地、及釋放或釋出資源以供稍後使用。
圖2顯示根據一個實施例之包含於用以排列遮罩之指令中的欄位。具體而言,指令200包含運算碼202、第一源運算元識別符204、第二源運算元識別符206、及目的地運算元識別符208。運算碼202會辨識要被實施的指令及/或操作、以及運算元的型式(例如,指令,其使用向量暫存器中的第二源運算元,以在專用的遮罩暫存器中排列第一源運算元,並且,將結果寫至另一專用的遮罩暫存器)。第一源運算元識別符204含有第一源運算元(立即)或辨識要自其中擷取第一源運算元的暫存器或記憶體位置。第一源運算元包括多個元件,各元件均具有在第二源運算元識別符206所指定的第二源運算元中的對應元件、在由目的地運算元識別符208所指定的目的地運算元中的對應元件。在一個實施例中,第一源運算元是遮罩暫 存器,包括可設定的位元,且第二源運元具有對應的索引,將各第一源運算元元件映射至目的地運算元的多個元件其中之一。由於第二源運算元及目的地運算元對應第一源運算元,所以,它們的最小大小取決於第一源運算元的大小。舉例而言,假使第一源運算元含有8個元件,則目的地運算元將含有最少8個元件,以及,第二源運算元將含有至少8個索引,各索引至少3位元寬以選取目的地運算元的8個元件其中之一。關於另一實例,假使第一源運算元含有64個元件,則目的地運算元將含有最少64個元件,以及,第二源運算元將含有至少64個對應的索引,各索引最少8位元寬以選取目的地運算元的64個元件其中之一。
由欄位104、106、及108辨識的第一及第二源運算元和目的地運算元被儲存於暫存器集之暫存器中或記憶體中。暫存器集是暫存器檔案的一部份、與例如狀態暫存器、旗標暫存器、專用遮罩暫存器、向量暫存器、等等可能的其它暫存器。在一個實施例中,暫存器係可視於處理器外部或自程式設計師之觀點而言為可視的。在一個實施例中,指令指明儲存在暫存器中的運算元。各式各樣不同型式的暫存器只要能夠儲存及提供如此處所述的資料即為適當的。替代地,源及目的地運算元中之一或更多者會被儲存於例如系統記憶體中的位置等暫存器之外的儲存位置中。
圖3是方塊流程圖,顯示根據一個實施例之用以排列 遮罩的指令之執行。具體而言,方塊流程圖300包含:在方塊302開始、在區塊304提取指令、在區塊306將指令解碼、在區塊308擷取與第一及第二源運算識別符相關聯的資料、以及在區塊310執行指令。在區塊304提取的指令具有的格式是具有第一源運算元識別符、第二源運算元識別符、及目的地運算元識別符。藉由從指令儲存器102(圖1)提取指令,以執行區塊304提取指令,指令儲存器102包括快取記憶體、指令暫存器、一般暫存器、或系統記憶體。在區塊306將指令解碼包含將指令的不同欄位解碼(請參見圖2),這些欄位包含運算碼202、第一源運算元識別符204、第二源運算元識別符206、及目的地運算元識別符208。解碼也包含判定從何處擷取運算元及將結果寫至何處。運算元被儲存於暫存器集的暫存器中或是記憶體中。暫存器集是暫存器檔案的一部份、與例如狀態暫存器、旗標暫存器、專用遮罩暫存器、向量暫存器、等等可能的其它暫存器。在一個實施例中,可從處理器外部或是程式設計師的觀點而見到暫存器。舉例而言,指令指明儲存在暫存器中的運算元。各式各樣不同型式的暫存器只要能夠儲存及提供如此處所述的資料就是適當的。替代地,一或更多個源及目的地運算元被儲存在例如系統記憶體中的位置等暫存器以外的儲存位置中。在區塊310執行指令包含在區塊312決定與第一源運算元識別符相關聯的資料的第一元件是否被設定,假使其被設定,則在區塊314從與第二源運算元識別符相關聯的資料之對應的元件 擷取出目的地索引,以及,在區塊316,使用目的地索引以設定與目的地運算元識別符相關聯的資料之目的地元件。於下參考圖6至10,進一步說明執行區塊310。在某些實施例中,方塊流程圖300是由及/或以圖1中所示的處理組件所實施。
圖4顯示根據揭示之示例性執行指令以排列遮罩之結果。此處,第一源運算元識別符指向設定於[k0:k7]=8’b010001010之8位元的值402,以及,第二源運算元識別符指向24位元的值404,其包含8個映射第一源運算元的各位元至目的地運算元的8個位元其中之一的3位元索引。如同所示,第二源運算元被設定於[i0:i7]={x,3,x,x,3,x,6,x},將第一源運算元的三個設定(亦即等於1)位元映射至目的地運算元的位元3,3,及6。為了說明,i0,i2,i3,i5,及i7由於它們的值將不會影響結果,所以它們被設定於[x],而第一源運算源的對應位元被設定於[0]。如同所示,在本實例中的目的地運算元暫存器406被設定於8’b00010010。注意,如圖4所示,第二源運算元的元件i0至i7其中之一或更多個元件能夠具有相同的值,因而可以將第一源運算元的多個元件映射至目的地運算元的相同元件。依此方式,第一源運算元的多個元件k0至k7可以映射至目的地運算元的相同元件,r0至r7。如圖4所示,第一源運算元QD02的位元k1被設定,且第二源運算元404的對應元件i1指向r3。但是,第一源運算元QD02的位元k4被設定,且第二源運 算元404的對應元件i4也指向r3。因此,OR閘408的2輸入被設定,設定目的地位元r3。然後,在所示的實例中,第一源運算元比目的地運算元含有更多個設定元件。
圖5顯示根據一個實施例之使用第一源運算元及第二源運算元以設定目的地運算元的一個元件之邏輯電路。如同所示,邏輯電路500包含用於固持第一源運算元的8位元暫存器502、用於固持第二源運算元的24位元暫存器504、及用於固持目的地運算元的8位元暫存器512。如同所示,結合邏輯501包含比較器506a-h、及閘(AND閘)508a-h、及8輸入或閘(OR閘)510。如同所示,暫存器504固持第二源運算元的元件i0,元件i0對應於第一源運算元的元件k0。在操作時,假使k0被設定且i0等於000,則AND閘508a的輸出將被設定,造成OR閘510的輸出被設定,並且,暫存器512的元件r0被設定。類似地,假使k1被設定且i1等於000,則AND閘508b的輸出將被設定,造成OR閘510被設定,並且,暫存器512的元件r0被設定。類似地,假使k2被設定且i2等於000、或者假使k3被設定且i3等於000、或者假使k4被設定且i4等於000、等等,則OR閘Q’10的輸出將被設定,並且儲存在暫存器512中的目的地運算元的元件r0將被設定。
為了簡明起見,如圖5所示的電路500僅顯示成處理目的地運算元暫存器的八個元件其中之一。可以使用更多個電路來平行地設定更多個或所有的元件。替代地,可以 串列地使用所示的邏輯電路來一次設定目的地運算元的一個元件。
圖6是虛礙碼,用以顯示根據一個實施例之執行電路106(圖1)的操作。如同所示,虛礙碼顯示示例性執行電路106(圖1)接收16位元的第一源運算元識別符src1、64位元的第二源運算元識別符src2、及16位元的目的地運算元識別符dest作為輸入。如圖6的虛礙碼所示,示例性執行電路106(圖1)清除與目的地運算元識別符dest相關聯的資料。如圖6的虛礙碼所示般,示例性執行電路106(圖1)處理src1的16個位元,對於被設定的每一個位元,從與第二源運算元識別符src2相關聯的資料的對應的元件中擷取與元件相關聯的目的地索引;以及,使用目的地索引以設定與目的地運算元識別符dest相關聯的資料的元件。示例性執行電路106(圖1)可以串列地一次處理一個位元、或是同時平行處理多個位元或全部位元。
圖7是方塊流程圖,顯示根據一個實施例之執行電路106(圖1)的操作。具體而言,在702,執行電路106擷取與第一及第二源運算元識別符相關聯的資料,在704,清除目的地運算元,在706,對第一源運算元的各元件測試,在708,第一源運算元元件是否被設定,假使其未被設定,則進行至714以測試第一源運算元的最後元件是否已被處理。但是,假使執行電路106在708決定第一源運算元元件被設定,則其藉由在710從第二源運算元的對應 元件中擷取出對應於第一源運算元元件的目的地索引而繼續,在712,設定由目的地索引識別的目的地元件,以及,在714,決定第一源運算元的最後元件是否已被處理。假使在714決定第一源運算元的最後一個元件已被處理,則執行電路106在716繼續提交或退出指令。或者,在706,其處理第一源運算元的下一個元件。
如圖7所示,執行指令以排列遮罩實質上串列地發生,一次處理第一源運算元的一個元件。在某些實施例中,圖7中所示的流程係由及/或以圖1中所示的處理元件所執行。
圖8是方塊流程圖,顯示根據替代實施例之執行電路106(圖1)的操作。具體而言,在802,執行單元106擷取與第一及第二源運算元識別符相關聯的資料,且在804,清除目的地運算元。在806,對第一源運算元的每一個元件平行地測試在808第一源運算元元件是否被設定,且假使其未被設定,則一旦第一源運算元的所有元件的平行處理完成時,即在814提交或退出指令。但是,假使執行電路106在808決定第一源運算元元件被設定,則其在810從第二源運算元的對應元件中擷取出目的地索引,在812,設定由目的地索引所識別的目的地元件,然後,在814,一旦第一源運算元的所有元件的平行處理完成時,即提交或退出指令。
如圖8所示,執行指令以排列遮罩實質上平行地發生,同時處理第一源運算元的每一個元件。在某些實施例 中,流程圖800係由及/或以圖1中所示的處理元件所執行。
圖9是方塊流程圖,顯示根據替代實施例之執行電路106(圖1)的操作。具體而言,在902,執行電路106擷取與第一及第二源運算元識別符相關聯的資料,在904,清除目的地運算元,在906,將邏輯分配以處理目的地源運算元的各元件,在該期間,執行電路106會分配邏輯以在908將邏輯分配以處理第一源運算元的各元件,在該期間,執行電路106會在910測試第一源運算元是否被設定,且假使未被設定,則進行至916以測試第一源運算元的最後元件是否已被處理。但是,假使執行電路106在910決定元件被設定,則其在912從第二源運算元的對應元件中擷取出對應於第一源運算元元件的目的地索引,以及,決定目的地索引是否指向稍早之前在Q’106選取的目的地元件。假使目的地索引未指向被選取的目的地元件,則執行電路106在916決定第一源運算元的最後一個元件是否已被處理,否則,假使目的地索引未指向在906被選取的目的地元件,則執行電路106在914設定由目的地索引識別的目的地運算元件,並且,在916決定第一源運算元的最後一個元件是否已被處理。假使執行電路106在916決定第一源運算元的最後一個元件已被處理,則其在918測試目的地運算元的最後一個元件是否已被處理,且或者,返回至Q’108以選取第一源運算元的下一個元件。在918,假使執行電路106決定目的地運算元的最後一個 元件並未被處理,則其返回至906以選取目的地運算元的下一個元件。假使執行電路106在918決定目的地運算元的最後一個元件已被處理,則其在920提交或退出指令。
如圖9所示,執行指令以排列遮罩實質上串列地發生,一次處理目的地運算元及第一源運算元的一個元件。在某些實施例中,流程圖900係由及/或以圖1中所示的處理元件所執行。
圖10是方塊流程圖,顯示根據替代實施例之執行電路106(圖1)的操作。具體而言,在1002,執行電路106擷取與第一及第二源運算元識別符相關聯的資料,在1004,清除目的地運算元,在1006使用平行電路來處理目的地運算元的每一個元件,以及,在1008對目的地運算元的各元件使用平行電路來處理第一源運算元的每一個元件,並且,在1010對第一源運算元的各元件,執行電路106決定第一源運算元的元件是否被設定,以及,假使其未被設定,則在1016,一旦完成所有平行處理,則其會提交或退出指令。但是,假使執行電路106在1010決定第一源運算元元件被設定,則在1012,其會從第二源運算元的對應元件擷取出對應於第一源運算元元件的目的地索引,假使被識別的目的地元件符合由在1006所分配的電路處理的目的地索引時,則在1014設定由該索引所識別的目的地元件,以及,一旦所有平行處理完成時,在1016提交或退出指令。
如圖10所示,執行指令以排列遮罩實質上平行地發 生,同時處理目的地運算元及第一源運算元的每一個元件。在某些實施例中,流程圖1000係由及/或以圖1中所示的處理元件所執行。
指令集
指令集包含一或更多個指令格式。給定的指令格式界定不同的欄位(例如,位元的數目、位元的位置)以除此之外還指明要被執行的操作(例如,運算碼)以及操作要於其上執行的運算元及/或其它資料欄位(例如,遮罩)。某些指令格式可以經由指令樣板(或子格式)的界定而進一步分解。舉例而言,給定的指令格式的指令樣板可以被界定為具有不同子集合的指令格式欄位(所包含的多個欄位典型上是相同次序,但是,因為有較少的欄位被包含,所以,至少某些欄位具有不同的位元位置)及/或被界定為具有被不同解譯的給定欄位。因此,使用給定的指令格式(以及,假使被界定時,在該指令格式的多個指令樣板中的給定其中之一中)以表示ISA的各指令,以及,包含用於指明操作及運算元的欄位。舉例而言,示例性ADD指令具有特定運算碼及指令格式,指令格式包含運算碼欄位以指定該運算碼及運算元欄位以選取運算元(源1/目的地及源2);以及,在指令串中此ADD指令的存在將在選取特定運算元的運算元欄位中具有特定內容。
示例性指令格式
此處所述的指令實施例可以以不同格式來具體實施。此外,於下詳述示例性系統、架構、及管線。指令的實施例可以在這些系統、架構、及管線上執行,但是不限於那些詳述的實施例。
泛型向量友善指令格式
向量友善指令格式是適用於向量指令的指令格式(例如,有某些欄位特定用於向量運算)。雖然說明經由向量友善指令格式而支援向量及純量運算之實施例,但是,替代的實施例可以僅使用向量友善指令格式向量運算。
圖11至12是方塊圖,顯示根據實施例之泛型向量友善指令格式及其指令樣板。圖11是方塊圖,顯示根據本發明的實施例之泛型向量友善指令格式及其等級A指令樣板;而圖12是方塊圖,顯示根據實施例之泛型向量友善指令格式及其等級B指令樣板。具體而言,等級A及等級B指令樣板被界定用於泛型向量友善指令格式1100,等級A及等級B指令樣板都未包含記憶體存取1105指令樣板及記憶體存取1120指令樣板。在向量友善指令格式的內容中泛型一詞係指指令格式未被束縛於任何特定的指令集。
將說明本發明的實施例,其中,向量友善指令格式支援下述:具有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位元組向量運算元)。
在圖11中的等級A指令樣板包含:1)在無記憶體存取1105指令樣板之內,顯示無記憶體存取、完全捨入(full round)控制型操作1110指令樣板及無記憶體存取、資料轉換型式操作1115指令樣板;以及,2)在記憶體存取1120指令樣板之內,有顯示記憶體存取、暫時1125指令樣板及記憶體存取、非暫時1130指令樣板。圖12中的等級B指令樣板包含:1)在無記憶體存取1105指令樣板之內,顯示無記憶體存取、寫入遮罩控制、部份捨入控制型操作1112指令樣板及無記憶體存取、寫入遮罩控制、向量長度型式操作1117指令樣板;以及,2)在記憶體存取1120指令樣板之內,顯示有記憶體存取、寫 入遮罩控制1127指令樣板。
泛型向量友善指令格式1100包含以圖11至12中所示的次序列出的下述欄位。
格式欄位1140-在此欄位中的特定值(指令格式識別符值)獨特地識別向量友善指令格式,並因而識別指令串中向量友善指令格式的指令發生。確切而言,以此欄位對於僅有泛型向量友善指令格式之指令集並非所需的觀點而言,此欄位是選加的。
基礎操作欄位1142-其內容區別不同的基礎操作。
暫存器索引欄位1144-不論源及目的地運算元在暫存器或在記憶體中,欄位1144之內容,直接或是經由位址產生,指明源及目的地運算元的位置。這些包含足夠數目的位元以從PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案中選取N個暫存器。雖然在一個實施例中,N可以高達三個源及一個目的地暫存器,但是,替代實施例可以支援更多或是更少的源及目的地暫存器(例如,可以支援高達二個源,其中,這些源中之一也作為目的地,可以支援高達三個源,其中,這些源中之一也作為目的地,可以支援高達二個源及一個目的地)。
修飾符欄位1146-其內容區別指定及未指定記憶體存取的泛型向量指令格式中指令的發生;亦即,在無記憶體存取1105指令樣板與記憶體存取1120指令樣板之間作區分。記憶體存取操作對記憶體層級結構讀取及/或寫入(在某些情況中,使用暫存器中的值來指定源及/或目的 地位址),而非記憶體存取操作未如此作(例如,源及目的地是暫存器)。雖然在一個實施例中,此欄位也在三種不同方式之間選取以執行記憶體位址計算,但是,替代的實施例可以支援更多、更少、或是不同的方式來執行記憶體位址計算。
擴增操作欄位1150-其內容區別多種不同操作中那一種操作要加上基礎操作被執行。此欄位是上下文特定的。在本發明的一個實施例中,此欄位被分成等級欄位1168、阿爾發欄位1152、及貝它欄位1154。擴增操作欄位1150允許共同的操作組能夠被執行於單一指令而非2、3或4指令中。
比例欄位1160-其內容允許索引欄位的內容的比例用於記憶體位址產生(例如,用於使用2比例 *索引+基礎之位址產生)。
位移欄位1162A-其內容被用作為記憶體位址產生的一部份(例如,用於使用2比例 *索引+基礎+位移之位址產生)。
位移因數欄位1162B(注意,位移欄位1162A直接在位移因數欄位1162B上方並列表示一或另一者被使用)-其內容被用作為位址產生的一部份;其指明要依記憶體存取(N)的大小而比例化之位移因數,其中,N是記憶體存取中的位元組數目(例如,用於使用2比例*索引+基礎+比例化位移的位址產生)。冗餘的低階位元被忽略,且因此,位移因數欄位的內容乘以記憶體運算元全部大小 (N)以產生計算有效位址時使用的最後位移。根據全運算碼欄位1174(稍後說明)及資料操縱欄位1154C,在運行時間時由處理器硬體來決定N的值。在位移欄位1162A及位移因數欄位1162B不用於無記憶體存取1105指令樣板及/或不同實施例僅實施二者其中之一或不實施二者的情況中,它們是選加的。
資料元件寬度欄位1164-其內容區別一些資料元件寬度中的那一個寬度是要被使用(在某些實施例中對所有指令;在其它實施例中僅對某些指令)。在假使使用運算碼的某些態樣而僅有一個資料元件寬度被支援及/或複數資料元件寬度被支援時不需要此欄位的情況中,此欄位是選加的。
寫入遮罩欄位1170-其內容以每一個資料元件位置為基礎而控制目的地向量運算元中的資料元件位置是否反應基礎操作及擴增操作的結果。等級A指令樣板支援合併寫入遮罩,而等級B指令樣板支援合併及零化寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元在任何操作的執行期間受保護(由基礎操作及擴增操作指明)而免於更新;在其它的一個實施例中,保留對應的遮罩位元具有0之目的地的各元的舊值。相反地,當零化向量遮罩時允許目的地中的任何組的元在任何操作(由基礎操作及擴增操作來予以指定)執行期間被零化;在一個實施例中,當對應的遮罩位元具有0值時,目的地的元被設定為0。此功能的子集合是控制執行的操作的向量長度之能力(亦即, 被修改之元件的展幅,從第一個至最後一個);但是,被修改的元件不必是連續的。因此,寫入遮罩欄位1170允許部份向量操作,包含載入、儲存、算術、邏輯、等等。雖然說明本發明的實施例,其中,寫入遮罩欄位1170的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器其中之一(因此,寫入遮罩欄位1170的內容間接地識別要被執行的遮罩),但是,替代實施例取代地或增加地允許遮罩寫入欄位1170的內容直接指定要被執行的遮罩。
立即欄位1172-其內容允許立即性的規格。在此欄位未出現在未支援立即性的泛型向量友善格式實施中以及其未出現在未使用立即性的指令中之情況中,此欄位是選加的。
等級欄位1168-其內容區別不同等級的指令。參考圖11-B,此欄位的內容在等級A與等級B指令之間選取。在圖11-B中,四角圓化的方形被用來標示特定值存在於欄位中(例如,分別在圖11-B中用於等級欄位1168的等級A 1168A及等級B 1168B)。
等級A的指令樣板
在等級A的非記憶體存取1105指令樣板的情況中,阿爾發欄位1152被解譯為RS欄位1152A,其內容區別不同的擴增操作型式中那一種型式是要被執行(例如,捨入1152A.1及資料轉換1152A.2分別被指定用於無記憶體存取、捨入型式操作1110及無記憶體存取、資料轉換型式 操作1115指令樣板),而貝他欄位1154區別被指定的型式的操作中那一個操作是要被執行。在無記憶體存取1105指令樣板中,比例欄位1160、位移比例欄位1162A、及位移比例欄位1162B未出現。
無記憶體存取指令樣板-完全捨入控制型操作
在無記憶體存取完全捨入控制型操作1110指令樣板中,貝他欄位1154被解譯為捨入控制欄位1154A,其內容提供靜態捨入。雖然在上述的發明實施例中,捨入控制欄位1154A包含抑制所有浮點例外(SAE)欄位1156及捨入操作控制欄位1158,但是,替代實施例可以支援將這二概念編碼成相同欄位或是僅具有這些概念/欄位其中之一或另一者(例如,可以僅具有捨入操作控制欄位1158)。
SAE欄位1156-其內容區別是否將例外事件報告禁能;當SAE欄位的1156內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處理器。
捨入操作控制欄位1158-其內容區別捨入操作組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接近的)。因此,捨入操作控制欄位1158允許以每一個指令為基礎之捨入模式的改變。在其中處理器包含用以指明捨入模式的控制暫存器之本發明的一個實施例中,捨入操作控制欄位1150的內容置換(override)該暫存器值。
無記憶體存取指令樣板-資料轉換型式操作
在無記憶體存取資料轉換型式操作1115指令樣板中,貝他欄位1154被解譯為資料轉換欄位1154B,其內容區別多個資料轉換中何者要被執行(例如,無資料轉換、拌和(swizzle)、廣播)。
在等級A的記憶體存取1120指令樣板的情況中,阿爾發欄位1152被解譯為逐出暗示欄位1152B,其內容區別逐出暗示中那一者是要被使用(在圖11中,暫時1152B.1及非暫時1152B.2分別被指定用於記憶體存取、暫時1125指令樣板以及記憶體存取、非暫時1130指令樣板),而貝他欄位1154被解譯為資料操縱欄位1154C,其內容區別多個資料操縱操作(也稱為基元)中何者是要被執行(例如,無操縱;廣播;源的升頻(up conversion);及目的地的降頻(down conversion))。記憶體存取1120指令樣板包含比例欄位1160,且選加地包含位移欄位1162A或位移比例欄位1162B。
藉由轉換支援,向量記憶體指令對記憶體執行向量載入及向量儲存。如正常的向量指令般,向量記憶體指令以像資料元件方式將資料傳輸自/至記憶體中,而真正被傳送的元件是由被選為寫入遮罩的向量遮罩的內容所指定。
記憶體存取指令樣板-暫時
暫時資料是很可能足夠快地被再使用而從快取獲利之 資料。但是,這是暗示,並且,不同的處理器可以以不同方式來實施它,包含完全忽略暗示。
記憶體存取指令樣板-非暫時
非暫時資料是不太可能足夠快地被再使用以從第一層快取記憶體中的快取獲利之資料,且應被授予逐出優先權。但是,這是暗示,並且,不同的處理器可以以不同方式來實施它,包含完全忽略暗示。
等級B的指令樣板
在等級B的指令樣板的情況中,阿爾發欄位1152被解譯為寫入遮罩控制(Z)欄位1152C,其內容區別由寫入遮罩欄位1170控制的寫入遮罩是否應為合併或零化。
在等級B的非記憶體存取1105指令樣板的情況中,貝他欄位1154的部份是被解譯為RL欄位1157A,其內容區別不同的擴增操作型式中那一個操作型式是要被執行(例如,拾入1157A.1以及向量長度(VSIZE)1157A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份捨入控制型操作1112指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型式操作1117指令樣板),而貝他欄位1154的其餘部份區別具有指定型式的操作中何者是要被執行。在無記憶體存取1105指令樣板中,比例欄位1160、位移欄位1162A、及位移比例欄位1162B不存在。
在無記憶體存取中、寫入遮罩控制、部份捨入控制型 操作1110指令樣板、貝他欄位1154的其它部份被解譯為捨入操作欄位1159A且例外事件報告被禁能(被給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處理器)。
捨入操作控制欄位1159A-正如同捨入操作控制欄位1158般,其內容區別捨入操作組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接近的)。因此,捨入操作控制欄位1159A允許以每一個指令為基礎之捨入模式的改變。在其中處理器包含用以指明捨入模式的控制暫存器之本發明的一個實施例中,捨入操作控制欄1150的內容置換該暫存器值。
在無記憶體存取、寫入遮罩控制,VSIZE型式操作1117指令樣板中,貝他欄位1154的其餘部份被解譯為向量長度欄位1159B,其內容區別要對多個資料向量長度中的那一個資料向量長度執行(例如,128、256、或512位元組)。
在等級B的記憶體存取1120指令樣板的情況中,貝它欄位1154的一部份被解譯為廣播欄位1157B,其內容區別廣播型資料操縱操作是否要被執行,而貝它欄位1154中的其它部份被解譯為向量長度欄位1159B。記憶體存取1120指令樣板包含比例欄位1160,以及,選加地包含位移欄位1162A或是位移比例欄位1162B。
關於泛型向量友善指令格式1100,完全運算碼欄位1174係顯示包含格式欄位1140、基礎操作欄位1142、及 資料元件寬度欄位1164。雖然顯示完全運算碼欄位1174包含所有這些欄位的一個實施例,但是,在未支援它們全部的實施例中,完全運算碼欄位1174包含少於所有這些欄位的欄位。完全運算碼欄位1174提供運算碼(opcode)。
擴增操作欄位1150、資料元件寬度欄位1164、及寫入遮罩欄位1170允許以泛型向量友善指令格式的指令為基礎來指明這些特點。
寫入遮罩欄位及資料元件寬度欄位的結合會產生型式化的指令,其中,它們允許根據不同的資料元件寬度來施加遮罩。
等級A及等級B之內發現的各種指令樣板在不同的情況中是有利的。在本發明的某些實施例中,不同的處理器或是處理器之內不同的核心可以僅支援等級A、僅支援等級B、或支援這二等級。舉例而言,要用於一般目的之計算的高性能目的之亂序核心僅支援等級B,主要用於圖形及/或科學(通量)計算的核心僅支援等級A,以及用於支援二等級的核心可以支援二等級(當然,具有來自二等級的樣板及指令的某些混合,但非來自二等級的所有樣板及指令是在本發明的範圍之內)。而且,單一處理器包含多核心,所有這些核心支援相同等級,或者,其中,不同的核心支援不同的等級。舉例而言,在設有分別的圖形及通用核心的處理器中,主要用於圖形及/或科學計算的複數個圖形核心其中之一僅支援等級A,而一或更多個通 用核心可為具有用於僅支援等級B的通用計算之亂序執行及暫存器重命名之高性能通用核心。不具有分別的圖形核心之另一處理器可以包含支援等級A和等級B的一或更多個通用有序或亂序核心。當然,在不同實施例中,來自一等級的特點也可在其它等級中實施。以高階語言撰寫的程式將被置於(舉例而言,僅即時被編譯或是靜態地被編譯成)各式各樣之不同的可執行形式中,包含:1)僅具有由用於執行的標的處理器所支援的等級的指令之形式;或是,2)具有使用所有等級的指令之不同組合撰寫的替代常式以及具有控制流程碼之形式,控制流程碼係根據由目前正執行碼的處理器所支援的指令而選取要執行的常式。
示例性特定向量友善指令格式
圖13是方塊圖,顯示根據實施例之示例性特定向量友善指令格式。圖13顯示特定向量友善指令格式1300,其在指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值的情況中是特定的。特定向量友善指令格式1300可以被用來擴充x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其擴充(例如,AVX)。此格式維持與具有延伸的現有x86指令集的前置編碼欄位、實數運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。顯示來自圖13的欄位映射至來自圖11的欄位。
應瞭解,雖然為了說明而在泛型向量友善指令格式1100的上下文中參考特定向量友善指令格式1300,以說明本發明的實施例,但是,除非特別申明,否則本發明不侷限於特定向量友善指令格式1300。舉例而言,泛型向量友善指令格式1100慮及用於各種欄位的各種可能大小,而特定向量友善指令格式1300係顯示為具有特定大小的欄位。具體舉例而言,雖然資料元件寬度欄位1164係顯示為特定向量友善指令格式1300中的一個位元欄位,但是,本發明不限於此(亦即,泛型向量友善指令格式1100慮及資料元件寬度欄位1164的其它大小)。
泛型向量友善指令格式1100包含依圖13中所示的次序而於下列出的下述欄位。
EVEX前置(位元組0-3)1302-以四位元組形式編碼。
格式欄位1140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位1140以及其含有0x62(用於區別發明的一個實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的一些位元欄位。
REX欄位1305(EVEX位元組1,位元[7-5])由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及1157BEX位元組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’欄位1110-這是REX’欄位1110的第一部份且是用以將擴充的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。
運算碼映射欄位1315(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先運算碼位元組(0F,0F38,或0F3)編碼。
資料元件寬度欄位1164(EVEX位元組2,位元[7]-W)-由記號EVEX.W來予以表示。EVEX.W用以界定資料型式的粒度(大小)(32位元資料元件或64位元資料元件)。
EVEX.vvvv 1320(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1之補數)形式指定的第一源暫存器運算元編碼,且對於具有2或更多個源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1之補數形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位1320將依反轉(1之補數)形式儲存的第一源暫存器指定符的4個低階位元編碼。取決於指令,額外的不同EVEX位元欄位被用來擴充指定符大小至32個暫存器。
EVEX.U 1168等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前置編碼欄位1325(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前置編碼,因而不要求擴展。
阿爾發欄位1152(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EXEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α顯示)-如以往所述般,此欄位是上下文特定的。
貝他欄位1154(EVEX位元組3,位元[6:4]-SSS;也稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以β β β顯示)-如以往所述般,此欄位是上下文特定的。
REX’欄位1110-這是REX’欄位的其餘部份且是可被用來將擴充的32暫存器組的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式來予以儲存。1的值被用來將下16暫存器編碼。換言之,藉由結合EVEX.V’、EVEX.vvvv來形成V’VVVV。
寫入遮罩欄位1170(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在本發明的一個實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用實體接線至所有或硬體之寫入遮罩,所述硬體是繞過遮罩硬體)。
實數運算碼欄位1130(位元組4)也稱為運算碼位元組。在此欄位中指定運算碼的一部份。
MOD R/M欄位1340(位元組5)包含MOD欄位1342、Reg欄位1344、及R/M欄位1346。如同先前所述般,MOD欄位1342的內容區別記憶體存取與非記憶體存取操作。Reg欄位1344的角色可以總結為二種情況:將目的地暫存器運算元或源暫存器運算元編碼,或是被當作運算碼擴充來處理且不被用來將任何指令運算元編碼。R/M欄位1346的角色可以包含下述:將參考記憶體位址的指令運算元編碼,或者,將目的地暫存器運算元或源暫存器運算元編碼。
比例、索引、基礎(SIB)位元組(位元組6)-如同先前所述般,比例欄位1150的內容是用於記憶體位址產生。SIB.xxx 1354及SIB.bbb 1356-這些欄位的內容先前已被述及與暫存器索引Xxxx及Bbbb有關。
位移欄位1162A(位元組7-10)-當MOD欄位1342含有10時,位元組7-10是位移欄位1162A,且其與舊有32位元位移(disp32)相同般地運作並以位元組粒度運作。
位移因數欄位1162B(位元組7)-當MOD欄位1342含有01時,位元組7是位移因數欄位1162B。此欄位的位置與以位元組粒度運作的舊有x86指令集8位元位移(disp8)的位置相同。由於disp8是正負號擴充,所以,其僅可以在-128與127位元組差距之間定址;以64位元 組快取線的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位1162B是disp8的再解譯;當使用位移因數欄位1162B時,真實的位移由位移因數欄位的內容乘以記憶體運算元存取之大小(N)所決定。此型式的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,且因此,位址差距的冗餘低階位元不需被編碼。換言之,位移因數欄位1162B替代舊有x86指令集8位元位移。因此,位移因數欄位1162B以同於x86指令集8位元位移的方式編碼(使得ModRM/SIM編碼規則不變),僅有的例外是disp8被過載至disp8*。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以取得位元組方式的位址差距)。立即欄位1172如先前所述地操作。
完全運算碼欄位
圖14是方塊圖,顯示根據一個實施例之構成完全運算碼欄位1174之特定的向量友善指令格式1300的欄位。具體而言,完全運算碼欄位1174包含格式欄位1140、基礎操作欄位1142、及資料元件寬度(W)欄位1164。基 礎操作欄位1142包含前置編碼欄位1325、運算碼映射欄位1315、及實數運算碼欄位1330。
暫存器索引欄位
圖15是方塊圖,顯示根據一個實施例之構成暫存器索引欄位1144之特定的向量友善指令格式1300的欄位。具體而言,暫存器索引欄位1144包含REX欄位1305、REX’欄位1310、MODR/M.reg欄位1344、MODR/M.r/m欄位1346、VVVV欄位1320、xxx欄位1354、及bbb欄位1356。
擴增操作欄位
圖16是方塊圖,顯示根據本發明一個實施例之構成擴增操作欄位1650之特定向量友善指令格式1300的欄位。當等級(U)欄位1668含有0時,其意謂EVEX.U0(等級A 1668A);當其含有1時,其表示EVEX.U1(等級B 1668B)。當U=0及MOD欄位1642含有16時(表示無記憶體存取操作),阿爾發欄位1652(EVEX位元組3,位元[7]-EH)被解譯為RS欄位1652A。當RS欄位1652A含有1(捨入1652A.1)時,貝它欄位1654(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位1654A。捨入控制欄位1654A包含一位元SAE欄位1656及二位元捨入操作欄位1658。當RS欄位1652A含有0(資料轉換1652A.2)時,貝它欄位1654(EVEX位元組 3,位元[6:4]-SSS)被解譯為三位元資料轉換欄位1654B。當U=0及MOD欄位1342含有00、01、或10(表示記憶體存取操作)時,阿爾發欄位1652(EVEX位元組3,位元[7]-EH)被解譯為逐出暗示(EH)欄位1652B及貝它欄位1654(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料操縱欄位1654C。
當U=1時,阿爾發欄位1652(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位1652C。當U=1及MOD欄位1342含有16(表示無記憶體存取操作)時,貝它欄位1654的一部份(EVEX位元組3,位元[4]-S0)被解譯為RL欄位1657A;當其含有1(捨入1657A.1)時,貝它欄位1654的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨入操作欄位1659A,而當RL欄位1657A含有0(VSIZE 1657.A2)時,貝它欄位1654的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位1659B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位1342含有00、01或10(表示記憶體存取操作)時,貝它欄位1654(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位1659B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位1657B(EVEX位元組3,位元[4]-B)。
示例性暫存器架構
圖17是根據一個實施例之暫存器架構1700的方塊 圖。在所示的實施例中,有512位元寬的32個向量暫存器1710;這些暫存器稱為zmm0至zmm31。較低的16 zmm暫存器的低階256位元覆蓋於暫存器ymm0-16之上。較低的16 zmm暫存器的低階128位元(ymm暫存器的低階128位元)覆蓋於暫存器xmm0-15之上。如下表所示般,特定的向量友善指令格式1300對這些被覆蓋的暫存器檔案操作。
換言之,向量長度欄位1159B在最大長度與一或更多個其它較短的長度之間選取,其中,每一個此較短長度是先前長度的長度之一半;以及,不具向量長度欄位1159B的指令樣板對最大向量長度操作。此外,在一個實施例中,特定向量友善指令格式1300的等級B指令樣板對緊縮的或純量的單一/雙倍精度浮點資料及緊縮的或純量的整數資料操作。純量操作是對zmm/ymm/xmm暫存器中最 低階資料元件位置執行的操作;更高階的資料元件位置視實施例而保留成與它們在指令之前相同或者零化。
寫入遮罩暫存器1715-在所示的實施例中,有8個大小均為64位元之寫入遮罩暫存器(k0至k7)。在替代實施例中,寫入遮罩暫存器1715大小為16位元。如同先前所述般,在本發明的一個實施例中,向量罩暫存器k0無法被用作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地使用於該指令的寫入遮罩禁能。
通用暫存器1725-在所示的實施例中,有十六個64位元通用暫存器,它們與現有的x86定址模式一起用來將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15來表示。
純量浮點堆疊暫存器檔案(x87堆疊)1745,MMX緊縮整數平坦暫存器檔案1750疊於其上-在所示的實施例中,x87堆疊是八元件堆疊,用以使用x87指令集延伸,對32/64/80位元浮點資料執行純量浮點操作;而MMX暫存器被用來對64位元緊縮整數資料執行操作,以及固持用於某些在MMX及XMM暫存器之間執行的操作之運算元。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少、或不同的暫存器檔案及暫存器。
示例性核心架構、處理器、及電腦架構
為了不同目的而以不同方式、及在不同處理器中,實施處理器核心。舉例而言,這些核心的施行可包含:1)要用於通用計算的通用有序核心;2)要用於通用計算的高性能通用亂序核心;3)主要用於圖形及/或科學(通量)計算的專用的核心。不同處理器的施行可包含:1)CPU,包含要用於通用計算的一或更多個通用有序核心及/或要用於通用計算的一或更多個通用亂序核心;及2)協同處理器,可包含主要用於圖形及/或科學(通量)計算的一或更多個專用核心。這些不同的處理器導致不同的電腦系統架構,其可包含:1)在與CPU分別的晶片上的協同處理器;2)在與CPU相同的封裝組件中在分別的晶粒上的協同處理器;3)在與CPU相同的晶粒上的協同處理器(在此情況中,此協同處理器有時被稱為專用邏輯,例如集成的圖形及/或科學(輸貫量)邏輯,或是作為專用核心);及4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或應用處理器)、上述協同處理器、及其它功能。於下說明示例性核心架構,接著是示例性處理器及電腦架構的說明。
示例性核心架構 有序及亂序核心方塊圖
圖18是方塊圖,顯示根據實施例之示例性有序管線及示例性暫存器重命名、亂序核發/執行管線。圖19是方 塊圖,顯示根據實施例之要包含於處理器中之示例性暫存器重命名、亂序核發/執行架構核心以及有序架構核心之示例性實施例。圖18-B中的實線方塊顯示有序管線及有序核心,而選加的虛線方塊顯示暫存器重命名、亂序核發/執行管線及核心。將在有序態樣是亂序態樣的子集合之假設下,說明亂序態樣。
在圖18中,處理器管線1800包含提取級1802、長度解碼級1804、解碼級1806、分配級1808、重命名級1810、排程(也稱為派遣或核發)級1812、暫存器讀取/記憶體讀取級1814、執行級1816、寫回/記憶體寫入級1818、例外處理級1822、及提交級1824。
圖19顯示處理器核心1890,處理器核心1890包含耦合至執行引擎單元1850之前端單元1830,且引擎單元1850及前端單元1830兩者都被耦合至記憶體單元1870。核心1890可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或是混合或替代核心型式。關於又另一選項,核心1890可為專用核心,舉例而言,例如網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU)核心、或圖形核心、等等。
前端單元1830包含分支預測單元1832,分支預測單元1832係耦合至指令快取單元1834,指令快取單元1834係耦合至指令轉譯後備緩衝器(TLB)1836,指令轉譯後備緩衝器(TLB)1836係耦合至指令提取單元1838,指 令提取單元1838係耦合至解碼單元1840。解碼單元1840(或解碼器)將指令解碼,以及產生一或更多個微操作、微碼進入點、微指令、其它指令、或是從原始指令解碼、或是從原始指令以其它方式反應、或是從原始指令導出的其它控制訊號,以作為輸出。使用各種不同的機構,以實施解碼單元1840。適當的機構實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一個實施例中,核心1890包含儲存用於某些巨集指令的微碼(例如,在解碼單元1840中或是在前端單元1830之內)之微碼ROM或是其它媒體。解碼單元1840係耦合至執行引擎單元1850中的重命名/分配器單元1852。
執行引擎單元1850包含重命名/分配器單元1852,重命名/分配器單元1852係耦合至退出單元1854及一或更多個排程器單元1856的集合。排程器單元1856代表任何數目的不同排程器,包含保留站、中央指令窗、等等。排程器單元1856係耦合至實體暫存器檔案單元1858。各實體暫存器檔案單元1858代表一或更多個實體暫存器檔案,不同的實體暫存器檔案儲存例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標,指令指標是要被執行的下一個指令的位址)、等等一或更多個不同的資料型式。在一個實施例中,實體暫存器檔案單元1858包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元 提供架構向量暫存器、向量罩暫存器、及通用暫存器。實體暫存器檔案單元1858由退出單元1854所重疊,以顯示實施暫存器重命名及亂序執行的各種方式(例如,使用重排序緩衝器及退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器池;等等)。退出單元1854及實體暫存器檔案單元1858係耦合至執行叢集1860。執行叢集1860包含一或更多個執行單元1862的集合以及一或更多個記憶體存取單元1864的集合。執行單元1862執行各種的操作(例如,偏移、加法、減法、乘法)以及對不同型式的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行操作。雖然某些實施例包含專用於特定功能或功能集的一些執行單元,但是,其它實施例可以僅包含一個執行單元或是多個都執行所有功能的執行單元。由於某些實施例產生用於某些型式的資料/操作之分別的管線(例如,均具有它們自己的排程器單元、實體暫存器檔案單元、及/或執行叢集的純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管線並且,在分別的記憶體存取管線的情況中,實施某些實施例,其中,僅有此管線的執行叢集具有記憶體存取單元1864),所以,排程器單元1856、實體暫存器檔案1858、及執行叢集1860係顯示可能為複數的。也應瞭解,在使用分別的管線時,這些管線中之一或更多者可以是亂序核發/執行,而其它是有序的。
記憶體存取單元1864的集合係耦合至記憶體單元1870,記憶體單元1870包含耦合至資料快取單元1874的資料TLB單元1872,資料快取單元1874係耦合至階層2(L2)快取單元1876。在一個示例性實施例中,記憶體存取單元1864可包含載入單元、儲存位址單元、及儲存資料單元,各單元係耦合至記憶體單元1870中的資料TLB單元1872。指令快取單元1834又被耦合至記憶體單元1870中的階層2(L2)快取單元1876。L2快取單元1876係耦合至一或更多個其它階層的快取記憶體以及最後被耦合至主記憶體。
舉例而言,示例性暫存器重命名、亂序核發/執行核心架構如下所述地實施管線1800:1)指令提取1838實施提取及長度解碼級1802和1804;2)解碼單元1840實施解碼級1806;3)重命名/分配器單元1852實施分配級1808及重命名級1810;4)排程器單元1856實施排程級1812;5)實體暫存器檔案單元1858及記憶體單元1870實施暫存器讀取/記憶體讀取級1814;執行叢集1860實施執行級1816;6)記憶體單元1870及實體暫存器檔案單元1858實施寫回/記憶體寫入級1818;7)各種單元可被包含在例外處理級1822中;以及,8)退出單元1854及實體暫存器檔案單元1858實施提交級1824。
核心1890可支援一或更多個指令集(例如,x86指令集(增加較新版本的某些擴充);加州Sunnyvale的MIPS Technologies的MIPS指令集;加州Sunnyvale的 ARM Holdings的ARM指令集(加上選加的例如NEON等增加擴充)),包含此處所述的指令。在一個實施例中,核心1890包含邏輯以支援緊縮資料指令集擴充(例如,AVX1、AVX2),藉以允許由很多多媒體應用所使用的操作使用緊縮資料而執行。
應瞭解,核心支援多緒(執行二或更多個平行的操作或執行緒組),並且,可以各種方式來如此執行,這些方式包含時間切割多緒、同時多緒(其中,單一實體核心提供用於實體核心同時正多緒化的多個執行緒中的各執行緒之邏輯核心)、或是其組合(例如,時間切割提取及解碼以及其後的同時多緒,例如Intel® Hyperthreading技術中所示)。
雖然在亂序執行的上下文中說明暫存器重命名,但是,應瞭解,暫存器重命名可被使用於有序架構中。雖然所示的處理器的實施例也包含分別的指令及資料快取單元1834/1874以及共用的L2快取單元1876,但是,替代實施例可具有用於指令及資料兩者之單一內部快取,例如階層1(L1)內部快取、或是多階層的內部快取。在某些實施例中,系統可包含內部快取及外部快取的組合,且外部快取在核心及/或處理器的外部。替代地,所有的快取可以在核心及/或處理器的外部。
特定示例性有序核心架構
圖20-B顯示更特定之示例性有序核心架構的方塊 圖,其中,核心是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)其中之一。這些邏輯區塊視應用而經由設有某些固定功能邏輯之高頻寬互連網路(例如,環式網路)、記憶體I/O介面、及其它所需I/O邏輯而相通訊。
圖20是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路2002的連接及其本地子集合的階級2(L2)快取記憶體2004之方塊圖。在一個實施例中,指令解碼器2000支援設有緊縮資料指令集擴充的x86指令集。L1快取記憶體2006允許對快取記憶體低潛時存取至純量及向量單元。雖然在一個實施例中(為了簡化設計),純量單元2008和向量單元2010使用分開的暫存器集(分別為純量暫存器2012和向量暫存器2014)及在它們之間傳送的資料被寫至記憶體,然後從階層1(L1)快取記憶體2006讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集或是包含通訊路徑,允許資料在二個暫存器檔案之間傳送而不用寫入及讀回)。
L2快取記憶體2004的本地子集合是被分割成多個分別的本地子集合之通用L2快取的部份,每一個處理器核心有一個分別的本地子集合。各處理器核心對於它自己的L2快取記憶體2004的本地子集合具有直接存取路徑。與存取它們自己的本地L2快取記憶體子集合之其它處理器核心相平行地,由處理器核心讀取的資料被儲存在L2快 取子集合2004中且可以被快速地存取。由處理器核心寫入的資料被儲存在它自己的L2快取子集合2004中,且假使需要時從其它子集合湧入。環式網路確保共用資料的同調性。環式網路是雙向的以允許例如處理器核心、L2快取記憶體及其它邏輯區塊以在晶片之內彼此通訊。各環式資料路徑是每一個方向1012位元寬。
圖21是根據實施例的圖20中的處理器核心的部份之放大視圖。圖21包含L1快取記憶體2006的L1資料快取記憶體2006A部份、以及關於向量單元2010和向量暫存器2014的更多細節。具體而言,向量單元2010是16-寬的向量處理單元(VPU)(請參見16-寬的ALU 2028),其執行整數、單精準浮點、及雙倍精準浮點指令中之一或更多者。VPU以拌和單元2020來支援拌和暫存器輸入、以數字轉換單元2022A-B來支援數字轉換、以及以記憶體輸入上的複製單元2024來支援複製。寫入遮罩暫存器2026允許預測造成的向量寫入。
圖22是根據實施例之具有一個以上的核心、具有集成的記憶體控制器、及具有集成的圖形的處理器2200的方塊圖。圖22中的實線框顯示具有單核心2202A、系統代理器2210、一或更多個匯流排控制器單元2216的組之處理器2200,而選加的虛線框顯示設有多核心2202A-N、系統理器單元2210中一或更多個整合的記憶體控制器單元2214的組、以及專用邏輯2208的替代處理器2200。
因此,處理器2200的不同施行可包含:1)CPU,設有專用邏輯2208及核心2202A-N,專用邏輯2208是集成的圖形及/或科學(通量)邏輯(包含一或更多個核心),核心2202A-N是一或更多個通用核心(例如,通用有序核心、通用亂序核心、二者之組合);2)協同處理器,設有核心2202A-N,核心2202A-N是大量主要用於圖形及/或科學(通量)的專用核心;以及,3)協同處理器,設有核心2202A-N,核心2202A-N是大量通用通用有序核心。因此,處理器2200可為通用處理器、協同處理器或專用處理,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器GPGPU(通用圖形處理單元),高通量多集成核心(MIC)協同處理器(包含30或更多個核心)、嵌入式處理器、等等。處理器可以實施在一或更多個晶片上。使用例如BiCMOS、CMOS、或NMOS等多種製程技術,處理器2200可以被實施於一或更多個基板上及/或為其一部份。
記憶體階層架構包含在核心內的一或更多個階層的快取記憶體、一組或一或更多個共用快取單元2206、及耦合至集成的記憶體控制器單元2214組之外部記憶體(未顯示出)。共用快取單元2206的組可以包含例如階層2(L2)、階層3(L3)、階層4(L4)、或其它階層快取記憶體等一或更多個中級快取、最後階層快取記憶體(LLC)、及/或其組合。雖然在一個實施例中,環式基礎互連單元2212將整合圖形邏輯2208、共用快取單元2206 的組、及系統代理器單元2210/集成的記憶體控制器單元2214互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一個實施例中,在一或更多個快取單元2206與核心2202-A-N之間維持同調性。
在某些實施例中,核心2202A-N中之一或更多個核心能夠多緒化。系統代理器2210包含協調及操作核心2202A-N之那些組件。系統代理器單元2210可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心2202A-N及集成的圖形邏輯2208的電力狀態所需的邏輯及組件。顯示單元是用來驅動一或更多個外部連接的顯示器。
以架構指令集的觀點而言,核心2202A-N可以是同質的或異質的;亦即,核心2202A-N中之二或更多者能夠執行相同的指令集,而其它核心能夠僅執行該指令集的子集合或不同的指令集。
示例性電腦架構
圖23至26是示例性電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置之此領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠合併有 此處所揭示的處理器及/或其它執行邏輯的多個種類的系統或電子裝置通常是適合的。
現在參考圖23,其顯示根據本發明的一個實施例之系統2300的方塊圖。系統2300可以包含耦合至控制器集線器2320之一或更多個處理器2310、2315。在一個實施例中,控制器集線器2320包含圖形記憶體控制器集線器(GMCH)2390及輸入/輸出集線器(IOH)2350(可以在分別的晶片上);GMCH 2390包含記憶體及圖形控制器,記憶體2340及協同處理器2345係耦合至記憶體及圖形控制器;IOH 2350將輸入/輸出(I/O)裝置2360耦合至GMCH 2390。替代地,記憶體及圖形控制器其中之一或二者係集成於處理器之內(如上所述),記憶體2340及協同處理器2345直接被耦合至處理器2310、及與IOH 2350在單一晶片中的控制器集線器2320。
在圖23中以虛線標示額外的處理器2315的選加本質。各處理器2310、2315包含此處所述的一或更多個處理核心且可以是某些版本的處理器2200。
舉例而言,記憶體2340可以是動態隨機存取記憶體(DRAM)、相位變化記憶體(PCM)、或是二者的組合。對於至少一個實施例,控制器集線器2320經由多接點匯流排而與處理器2310、2315通訊,多接匯流排為例如前側匯流排(FSB)、例如快速路徑互連(QPI)等點對點介面、或是類似連接2395。
在一個實施例中,協同處理器2345是專用處理器, 例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器、等等。在一個實施例中,控制器集線器2320包含集成的圖形加速器。
以包含架構、微架構、熱、耗電特徵、等等優點計量譜的觀點而言,實體資源2310、2315之間有各種差異。
在一個實施例中,處理器2310執行控制一般型式的資料處理操作之指令。處理器指令可以被嵌入在指令之內。處理器2310將這些協同處理器指令視為應由附加的協同處理器2345執行的型式。因此,處理器2310在協同處理器匯流排上或其它互連上核發這些協同處理器指令(或是代表協同處理器指令的控制訊號)給協同處理器2345。協同處理器2345接受及執行所接收到的處理器指令。
現在參考圖24,其顯示根據本發明的實施例之第一更特定示例性系統2400的方塊圖。如圖24中所示般,多處理器系統2400是點對點互連系統,以及包含經由點對點互連2450耦合的第一處理器2470和第二處理器2480。各處理器2470及2480可以是某版本的處理器2200。在本發明的一個實施例中,處理器2470和2480分別是處理器2310和2315,而協同處理器2438是協同處理器2345。在另一實施例中,處理器2470及2480分別是處理器2310和協同處理器2345。
處理器2470及2480係顯示分別包含集成的記憶體控 制器(IMC)單元2472和2482。處理器2470也包含點對點(P-P)介面2476和2478作為它的匯流排控制器單元的一部份;類似地,第二處理器2480包含P-P介面2486和2488。處理器2470、2480可以使用P-P介面電路2478、2488而經由點對點(P-P)介面2450來交換資訊。如同圖24中所示般,IMC 2472和2482將處理器耦合至各別記憶體,亦即記憶體2432和記憶體2434,它們可以是本地附接至各別處理器的主記憶體的部份。
處理器2470、2480使用點對點介面電路2476、2494、2486、2498,經由個別的P-P介面2452、2454而均可以與晶片組2490交換資訊。晶片組2490經由高性能介面2492,而與協同處理器2438選加地交換資訊。在一個實施例中,協同處理器2438是專用處理器,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器、等等。
共用的快取記憶體(未顯示出)可以包含在任一處理器中或是二個處理器的外部,仍經由P-P互連與處理器連接,使得假使處理器係處於低電力模式中時,任一或二個處理器的本地快取資訊可以被儲存在共用的快取記憶體中。
晶片組2490可以經由介面2496而被耦合至第一匯流排2416。在一個實施例中,第一匯流排2416可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互連匯流排等匯流排,但是,本發明的範圍 不侷限於此。
如圖24中所示般,各式各樣的I/O裝置2414與匯流排橋接器2418被耦合至第一匯流排2416,匯流排橋接器2418係耦合第一匯流排2416至第二匯流排2420。在一個實施例中,例如協同處理器、高通量MIC處理器、GPGPU、加速器(例如,圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器等一或更多個額外的處理器2415係耦合至第一匯流排2416。在一個實施例中,第二匯流排2420可以是低接腳數(LPC)匯流排。在一個實施例中,各種裝置可以被耦合至第二匯流排2420,舉例而言,包含鍵盤及/或滑鼠2422、通訊裝置2427及例如包含指令/碼及資料2430的碟片驅動器或其它大量儲存裝置的儲存單元2428。此外,音頻I/O 2424可以被耦合至第二匯流排2420。注意,其它架構是可能的。舉例而言,取代圖24的點對點架構,系統可以實施多接點匯流排或其它此類架構。
現在參考圖25,其顯示根據本發明的實施例之第二更特定的示例性系統2500之方塊圖。圖24及25中類似的元件帶有類似的代號,以及,圖24的某些態樣在圖25中被省略,以免模糊圖25的其它態樣。
圖25顯示處理器2570、2580分別包含集成的記憶體及I/O控制邏輯(「CL」)2572和2582。因此,CL 2572、2582包含集成的記憶體控制器單元及包含I/O控制邏輯。圖25顯示不僅記憶體2532、2534被耦合至CL 2572、2582,I/O裝置2514也被耦合至控制邏輯2572、2582。舊有I/O裝置2515係耦合至晶片組2590。
現在參考圖26,其顯示根據本發明的實施例之系統晶片(SoC)2600的方塊圖。圖22中類似的元件帶有類似的代號。而且,虛線框關於更多個先進的SoC的選加特點。在圖26中,互連單元2608係耦合至:應用處理器2610,包含一或更多個核心2602A-N、對應的快取單元2604A-N及共用快取單元2606的集合;系統代理器單元2610;匯流排控制器單元2616;整合記憶體控制器單元2614;一組或一或更多個協同處理器2620,包含集成的圖形邏輯、影像處理器、音頻處理器、以及視頻處理器;靜態隨機存取記憶體(SRAM)單元2630;直接記憶體存取(DMA)單元2632;以及用以耦合至一或更多個外部顯示器的顯示單元2640。在一個實施例中,協同處理器2620包含專用處理器,舉例而言,例如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、或嵌入式處理器、等等。
此處揭示的機制實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以被施行成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖24中所示的程式碼2430可以被應用至輸入指 令以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式或依應用目的而被應用至一或更多個輸出裝置,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程序或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機制在範圍上不侷限於任何特定的程式語言。在任何情況中,語言可以是經過編譯或解譯的語言。
至少一個實施例的一或更多個態樣可以由儲存在機器可讀取媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以被儲存在實體的、機器可讀取媒體並供應至各式各樣的客戶或製造設施,而載入至實際產生邏輯或處理器的製造機器中。
此種機器可讀取媒體包含但不限於由機器或裝置製造或形成的物件之非暫態性、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可重寫記憶體(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體DRAM、靜態隨機存取記憶體SRAM等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體 (EEPROM)等半導體裝置、相位變化記憶體(PCM)、磁性或光學卡、或適用來儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫態性、實體的機器可讀取媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特點。這些實施例也意指程式產品。
模仿(包含二進位轉譯、碼變體、等等)
在某些情況中,指令轉換器可以用來將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變體、模仿、或以其它方式轉換至由核心處理的一或更多個其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器上。
圖27是方塊圖,對比根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、韌體、硬體、或其各種結合來實施。圖27顯示高階語言2702的程式,可以由x86編譯器2704所編譯以產生x86 二進位碼2706,二進位碼2706可以由具有至少一x86指令集核心2716的處理器原地執行。具有至少一x86指令集核心2716的處理器代表藉由相容性地執行或其它方式地處理下述,而能夠執行與具有至少一x86指令集核心的英特爾處理器實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的英特爾處理器上執行為目標之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器2704代表可以操作以產生x86二進位碼2706(例如,物件碼)之編譯器,x86二進位碼2706藉由或不藉由額外的鏈結處理,都可以在具有至少一x86指令集核心2716的處理器上執行。類似地,圖27顯示高階語言2702的程式,使用替代指令集編譯器2708,可以將其編譯以產生替代指令集二進位碼2710,替代指令集二進位碼2710可以由不具有至少一x86指令集核心2714的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器2712用以將x86二進位碼2706轉換成可以由不具有x86指令集核心2714的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製作,所以,此轉換的碼不易與替代指令集二進位碼2710相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令 組成。因此,指令轉換器2712代表軟體、韌體、硬體或其組合,其經由模仿、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼2706。
102‧‧‧資料儲存器
104‧‧‧解碼電路
106‧‧‧執行電路
108‧‧‧暫存器
110‧‧‧記憶體
112‧‧‧退出或提交電路

Claims (20)

  1. 一種處理器,包括:提取電路,用以提取指令,該指令的格式包含第一源運算元識別符、第二源運算元識別符、及目的地運算元識別符;解碼電路,用以將該指令解碼;資料擷取電路,用以擷取與該第一源運算元識別符及該第二源運算元識別符相關聯的資料;以及執行電路,用以執行該已解碼的指令以實施包括下述的程序:決定與該第一源運算元識別符相關聯的該資料的第一元件是否被設定,假使該第一元件被設定,則從與該第二源運算元識別符相關聯的該資料的對應的第二元件擷取出目的地索引,並且,使用該目的地索引以設定與該目的地運算元識別符相關聯的資料之目的地元件。
  2. 如申請專利範圍第1項之處理器,又包括:在執行該已解碼的指令之前,清除與該目的地運算元識別符相關聯的該資料。
  3. 如申請專利範圍第1項之處理器,其中,與該第二源運算元識別符相關聯的該資料包括多個索引,可用以將與該第一源運算元識別符相關聯的該資料之對應的多個源元件映射至與該目的地運算元識別符相關聯的該資料的多個目的地元件。
  4. 如申請專利範圍第1項之處理器,其中,該執行電路又被配置成: 計數與該第一源運算元識別符相關聯的該資料中之第一數目的設定元件;計數與該目的地運算元識別符相關聯的該資料中之第二數目的設定元件;以及,假使該第一數目大於或等於該第二數目時,則產生表示該第二數目的設定元件低於該第一數目的設定元件之訊號。
  5. 如申請專利範圍第1項之處理器,其中,該執行電路又被配置成對與該第一源運算元識別符相關聯的該資料的多個元件串列地執行該已解碼的指令。
  6. 如申請專利範圍第1項之處理器,其中,該執行電路又被配置成與該第一源運算元識別符相關聯的該資料的多個元件平行地執行該已解碼的指令。
  7. 如申請專利範圍第1項之處理器,其中,該執行電路又被配置成對與該第一源運算元識別符相關聯的該資料的每一個元件串列地實施該執行步驟。
  8. 如申請專利範圍第1項之處理器,其中,該執行電路又被配置成對與該第一源運算元識別符相關聯的該資料的每一個元件平行地執行該已解碼的指令。
  9. 如申請專利範圍第1項之處理器,其中,與該第一源運算元相關聯的該資料被擷取入第一寫入遮罩暫存器中,與該目的地運算元相關聯的資料是在第二寫入遮罩暫存器中,並且,與該第二源運算元相關聯的資料是在記憶體位置中。
  10. 如申請專利範圍第1項之處理器,其中,與該第一源運算元相關聯的該資料被擷取入至第一寫入遮罩暫存器中,與該目的地運算元相關聯的資料是在第二寫入遮罩暫存器中,並且,與該第二源運算元相關聯的資料是在暫存器中。
  11. 一種方法,包括:提取指令,該指令的格式包含第一源運算元識別符、第二源運算元識別符、及目的地運算元識別符;將該指令解碼;擷取與該第一源運算元識別符及該第二源運算元識別符相關聯的資料;以及執行該已解碼的指令以實施包括下述的程序:決定與該第一源運算元識別符相關聯的該資料的第一元件是否被設定,假使該第一元件被設定,則從與該第二源運算元識別符相關聯的該資料的對應的第二元件摘錄目的地索引,並且,使用該目的地索引以設定與該目的地運算元識別符相關聯的資料之目的地元件。
  12. 如申請專利範圍第11項之方法,又包括:在執行該已解碼的指令之前,清除與該目的地運算元識別符相關聯的該資料。
  13. 如申請專利範圍第11項之方法,其中,與該第二源運算元識別符相關聯的該資料包括多個索引,可用以將與該第一源運算元識別符相關聯的該資料之對應的多個源元件映射至與該目的地運算元識別符相關聯的該資料的 多個目的地元件。
  14. 如申請專利範圍第11項之方法,又包括:計數與該第一源運算元識別符相關聯的該資料中之第一數目的設定元件;計數與該目的地運算元識別符相關聯的該資料中之第二數目的設定元件;以及,假使該第一數目大於或等於該第二數目時,則產生表示該第二數目的設定元件低於該第一數目的設定元件之訊號。
  15. 如申請專利範圍第11項之方法,又包括:對與該第一源運算元識別符相關聯的該資料的多個元件平行地執行該執行步驟。
  16. 如申請專利範圍第11項之方法,其中,與該第一源運算元相關聯的該資料被擷取入寫入遮罩暫存器中,與該目的地運算元相關聯的資料是在寫入遮罩暫存器中,並且,與該第二源運算元相關聯的資料是在記憶體位置中。
  17. 如申請專利範圍第11項之方法,其中,與該第一源運算元相關聯的該資料被擷取入至寫入遮罩暫存器中,與該目的地運算元相關聯的資料是在寫入遮罩暫存器中,並且,與該第二源運算元相關聯的資料是在暫存器中。
  18. 一種製造物件,包括非暫態性機器可讀取儲存媒體,該非暫態性機器可讀取儲存媒體儲存能夠由處理器所 執行以執行下述步驟的指令:提取指令,該指令的格式包含第一源運算元識別符、第二源運算元識別符、及目的地運算元識別符;將該指令解碼;擷取與該第一源運算元識別符及該第二源運算元識別符相關聯的資料;以及執行該已解碼的指令以實施包括下述的程序:決定與該第一源運算元識別符相關聯的該資料的第一元件是否被設定,假使該第一元件被設定,則從與該第二源運算元識別符相關聯的該資料的對應的第二元件摘錄目的地索引,並且,使用該目的地索引以設定與該目的地運算元識別符相關聯的資料之目的地元件。
  19. 如申請專利範圍第18項之製造物件,又包括:在執行該指令之前,清除與該目的地運算元識別符相關聯的該資料。
  20. 如申請專利範圍第18項之製造物件,其中,與該第二源運算元識別符相關聯的該資料包括多個索引,可用以將與該第一源運算元識別符相關聯的該資料之對應的多個源元件映射至與該目的地運算元識別符相關聯的該資料的多個目的地元件。
TW106101733A 2016-02-24 2017-01-18 執行指令以排列遮罩的系統及方法 TW201738733A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/052,801 US9921841B2 (en) 2016-02-24 2016-02-24 System and method for executing an instruction to permute a mask

Publications (1)

Publication Number Publication Date
TW201738733A true TW201738733A (zh) 2017-11-01

Family

ID=59629992

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106101733A TW201738733A (zh) 2016-02-24 2017-01-18 執行指令以排列遮罩的系統及方法

Country Status (5)

Country Link
US (1) US9921841B2 (zh)
CN (1) CN108701028A (zh)
DE (1) DE112017000983T5 (zh)
TW (1) TW201738733A (zh)
WO (1) WO2017146855A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9471308B2 (en) * 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
EP3757813A3 (en) 2019-06-18 2021-01-20 Tenstorrent Inc. Processor cores using packet identifiers for routing and computation
US11706039B2 (en) * 2020-12-26 2023-07-18 Intel Corporation ISA accessible physical unclonable function
US11570010B2 (en) * 2020-12-26 2023-01-31 Intel Corporation ISA accessible physical unclonable function
US11700135B2 (en) * 2020-12-26 2023-07-11 Intel Corporation ISA accessible physical unclonable function

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69031232T2 (de) * 1989-02-03 1998-03-12 Digital Equipment Corp Verfahren und Vorrichtung zur Vorverarbeitung mehrerer Befehle in einem Pipeline-Prozessor
US6763034B1 (en) * 1999-10-01 2004-07-13 Stmicroelectronics, Ltd. Connection ports for interconnecting modules in an integrated circuit
US7783860B2 (en) * 2007-07-31 2010-08-24 International Business Machines Corporation Load misaligned vector with permute and mask insert
US8909901B2 (en) 2007-12-28 2014-12-09 Intel Corporation Permute operations with flexible zero control
US8051226B2 (en) 2008-06-13 2011-11-01 Freescale Semiconductor, Inc. Circular buffer support in a single instruction multiple data (SIMD) data processor
WO2013095541A1 (en) 2011-12-22 2013-06-27 Intel Corporation Apparatus and method for performing a permute operation
WO2013095657A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction and logic to provide vector blend and permute functionality
US10055225B2 (en) * 2011-12-23 2018-08-21 Intel Corporation Multi-register scatter instruction
EP2798465B1 (en) * 2011-12-30 2018-11-14 Intel Corporation Unique packed data element identification processors, methods, systems, and instructions
US8959275B2 (en) 2012-10-08 2015-02-17 International Business Machines Corporation Byte selection and steering logic for combined byte shift and byte permute vector unit
US9372692B2 (en) * 2012-12-29 2016-06-21 Intel Corporation Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality
US20150186136A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for expand and compress

Also Published As

Publication number Publication date
WO2017146855A1 (en) 2017-08-31
US20170242697A1 (en) 2017-08-24
CN108701028A (zh) 2018-10-23
US9921841B2 (en) 2018-03-20
DE112017000983T5 (de) 2018-12-06

Similar Documents

Publication Publication Date Title
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI731905B (zh) 用於聚合集中及跨步的系統、裝置及方法
TWI517042B (zh) 用以將萬國碼字元之可變長度編碼點轉碼之處理器、方法、系統及製品
TWI524266B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TWI475480B (zh) 向量頻率壓縮指令
TWI617978B (zh) 用於向量索引載入和儲存之方法和設備
TWI489382B (zh) 改良的萃取指令背景之設備及方法
TW201730746A (zh) 用以融合指令之硬體設備及方法
TWI740859B (zh) 用於跨步的載入(strided load)的系統、設備及方法
TWI489383B (zh) 遮蔽排列指令的裝置及方法
TW201530309A (zh) 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令
TW201738733A (zh) 執行指令以排列遮罩的系統及方法
TW201337740A (zh) 用於在一般目的暫存器中基於向量寫入遮罩之內容而儲存兩個純量常數中之一者的指令
TWI610228B (zh) 用於執行向量位元反轉和交叉的方法和設備
TWI473015B (zh) 執行向量頻率擴展指令之方法、處理器核心以及製品
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TWI486872B (zh) 向量緊縮壓縮及重複之實施系統、設備和方法
TWI526930B (zh) 用以複製及遮蔽資料結構之設備及方法
CN108292228B (zh) 用于基于通道的步进收集的系统、设备和方法
CN107193537B (zh) 经改进的插入指令的装置和方法
TWI637317B (zh) 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置
TWI733718B (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
TW201732574A (zh) 用於改善向量通量的系統、方法及設備
TW201732573A (zh) 用於跨步載入(stride load)的系統、設備及方法
TW201810034A (zh) 用於累和的系統、設備及方法