TW201335845A - 用於迴圈餘數遮罩指令之系統、裝置及方法 - Google Patents

用於迴圈餘數遮罩指令之系統、裝置及方法 Download PDF

Info

Publication number
TW201335845A
TW201335845A TW101142638A TW101142638A TW201335845A TW 201335845 A TW201335845 A TW 201335845A TW 101142638 A TW101142638 A TW 101142638A TW 101142638 A TW101142638 A TW 101142638A TW 201335845 A TW201335845 A TW 201335845A
Authority
TW
Taiwan
Prior art keywords
mask
data
array
instruction
loop
Prior art date
Application number
TW101142638A
Other languages
English (en)
Other versions
TWI514274B (zh
Inventor
Elmoustapha Ould-Ahmed-Vall
Robert Valentine
Jesus Corbal
Andrey Naraikin
Suleyman Sair
Asaf Hargil
Milind B Girkar
Bret Toll
Mark J Charney
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201335845A publication Critical patent/TW201335845A/zh
Application granted granted Critical
Publication of TWI514274B publication Critical patent/TWI514274B/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/3818Decoding for concurrent execution
    • 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/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

迴圈餘數遮罩指令指示迴圈之目前迭代計數作為第一運算元、迴圈限制作為第二運算元以及一目的(destination)。迴圈包含複數迭代,以及每一迭代包含陣列之資料元件。處理器接收迴圈餘數遮罩指令指示、解碼指令以執行以及儲存執行結果於目的中。前述結果指示通過陣列之前部之尾端(其待與該前部分別處理)之該陣列的資料元件數,前部之尾端為目前迭代計數所記錄處。

Description

用於迴圈餘數遮罩指令之系統、裝置及方法
本發明係有關於電腦處理器架構,特別係有關於當執行時導致特殊結果的指令相關實施例。
許多處理器具有單指令多資料(SIMD)架構。SIMD架構通常對處理速度有具體的改善。在SIMD架構中,不像純量指令(scalar instruction)僅對一資料元件或一資料元件對(pair)進行操作,緊縮資料(packed data)指令、向量指令或SIMD指令可對多重資料元件或多重資料元件對同步或平行的進行操作。前述處理器可能具有平行執行硬體以響應緊縮資料指令同步或平行的執行多重操作。
在SIMD架構中,多重資料元件可被緊縮在一暫存器或記憶體位置以作為緊縮資料或向量資料。在緊縮資料中,暫存器或其他儲存位置的位元邏輯上可分為一序列多重固定長度的資料元件。每一資料元件可代表伴隨通常具有相同大小的其他資料元件而儲存在暫存器或儲存位置中的資料個別片段。舉例而言,256-位元寬的暫存器可具有4個64-位元寬的緊縮資料元件,8個32-位元寬的緊縮資料元件,16個16-位元寬緊縮資料元件,或者32個8-位元寬緊縮資料元件。每一緊縮資料元件代表可與其他資料分開或獨立操作的分離個別資料片段(如顏色像素等)。
代表性地,緊縮資料元件、向量指令或SIMD指令(如 緊縮相加指令)之一類型可設定單一緊縮資料操作(如相加)以垂直方式在來自2個來源緊縮資料運算元之所有對應的資料元件對上執行,以產生一目的或結果緊縮資料。來源緊縮資料運算元可為相同大小,可包含相同寬度的資料元件,因此各者可包含相同數目的資料元件。來源資料元件在2個來源緊縮資料運算元中相同位元位置可代表對應資料元件對。緊縮資料操作可在每一對應來源資料元件對中分開或獨立執行以產生結果資料元件匹配數,因此每對對應來源資料元件中可具有對應結果資料元件。典型地,前述指令的結果資料元件為相同順序且通常具有相同大小。
除了前述緊縮資料指令的範例類型外,存在不同類型的緊縮資料指令。例如,僅具有1個或大於2個來源緊縮資料運算元、以水平方式取代垂直方式操作、產生不同大小結果緊縮資料運算元、具有不同大小資料元件、及/或具有不同資料元件順序。
於下說明中描述許多具體細節。然而,必須了解的是本發明之實施例可在沒有具體細節下實施。在其他情形下,眾所周知的電路、架構及技術未顯示其細節以確保不會造成說明描述中的模糊。
第1圖為具有包含一或多個迴圈校準指令指令集102之處理器100之一實施例之區塊圖。處理器100可為不同複雜指令集(CISC)處理器、不同精簡指令集(RISC)處理 器、不同超長指令集(VLIW)處理器、不同混合類型、或者完全其他類型處理器之任一。在一或多個實施例中,處理器100可為通用處理器(general-purpose processor)(如加州Santa Clara、Intel公司所生產的通用微處理器),但此需求並非必要。此外指令處理裝置可為專用處理器(special-purpose processor)。適用的專用處理器包括但不限於如網路處理器(network processor)、通訊處理器(communications processor)、加密處理器(cryptographic processor)、圖形處理器(graphics processor)、協同處理器(co-processor)、內建處理器(embedded processor)、數位信號處理器(DSP)以及控制器(如微控制器),以上僅為示例。
處理器100具有指令集架構(ISA)101。指令集架構101代表處理器100有關程式的架構部分。指令集架構101通常包含本機指令(native instruction)、架構暫存器(architectural register)、資料型別(data type)、定址模式(addressing mode)、記憶體架構(memory architecture)、中斷(interrupt)及例外處理(exception handling)、以及處理器100的外部輸入及輸出(I/O)。指令集架構101與微架構(micro architecture)有所區隔,其通常代表選擇特定處理器設計技術以實現指令集架構。具有不同微架構的處理器可分享共同指令集架構。舉例而言,加州Santa Clara、Intel公司與加州、Sunnyvale、Advanced Micro Devices公司的特定微處理器,使用實質上不同的內部微架構以實 現x86指令集的類似部分。
指令集架構101包含架構暫存器(如架構暫存器檔)106。圖示的架構暫存器106包含通用暫存器127及緊縮資料暫存器107。每一通用暫存器127用來儲存純量資料元件(亦被稱為資料元件),以及每一緊縮資料暫存器107B用來儲存緊縮資料、向量資料或SIMD資料(如資料元件陣列)。圖示的架構暫存器106同時包含遮罩暫存器108。每一遮罩暫存器108用來儲存緊縮資料操作遮罩(亦被稱為“遮罩”)。
架構暫存器106代表內建處理器(on-board processor)儲存位置。架構暫存器106在此亦可被簡稱為暫存器。除非特定或清楚區隔,否則架構暫存器、暫存器檔及暫存器之詞在此被用來指為軟體及/或程式人員可見(如軟體-可見)之暫存器,及/或由巨指令(macroinstruction)設定以識別運算元之暫存器。此等暫存器不同於其他在一給定微架構中的非架構暫存器(如暫態暫存器、重排序緩衝器、報廢暫存器等)。
圖示指令集架構101同時包含由處理器100所支援的指令集102。指令集102包含若干不同類型的指令。指令集102的指令代表巨指令(如提供給處理器100作為執行的指令),相對於微指令或微操作(如產生自處理器100之解碼巨指令的解碼器129)。
指令集102包含一或多個迴圈校準指令,如迴圈校準計數(PLCNT)指令105A、迴圈校準遮罩(PLMSK)指令 105B及/或迴圈餘數遮罩(KSUBREM)指令105C。PLCNT指令105A為純量產生指令,其用以促使或導致處理器100產生純量值,如整數值。純量值可儲存在通用暫存器127中。PLMSK指令105B及KSUBREM指令105C為遮罩產生指令,其各者用以促使或導致處理器100產生可儲存在遮罩暫存器108的遮罩。
在一實施例中,前述的一或多個迴圈校準指令為遮罩緊縮資料指令103。遮罩緊縮資料指令103與先前技術中所述之緊縮資料指令類似,僅些微不同。與前述緊縮資料指令類似,每一遮罩緊縮資料指令103用以促使或導致處理器100在由緊縮資料指令所指示的一或多個緊縮資料運算元的資料元件上執行緊縮資料操作。緊縮資料運算元可儲存在緊縮資料暫存器107中。然而,每一遮罩緊縮資料指令103可使用一或多個遮罩暫存器108以進行遮蔽、預測或有條件地控制緊縮資料處理。儲存在遮罩暫存器108中的遮罩可代表遮罩運算元、預測運算元或條件控制運算元。
遮罩用以在每一資料元件粒度(granularity)上遮蔽或有條件地控制緊縮資料處理。舉例而言,無論在來自單一來源緊縮資料運算元之個別資料元件上或在來自二個來源緊縮資料運算元之個別對應資料元件對上執行之遮罩緊縮資料指令103之緊縮資料操作的結果是否儲存在緊縮資料結果中,遮罩可用以遮蔽。遮罩緊縮資料指令103可允許資料元件的每一資料元件或對應資料元件對之緊縮資料處 理可被分別獨立地預測或有條件地控制。遮罩緊縮資料指令103、操作及遮罩可提供一定的優勢,例如增加碼密度及/或較高指令生產量(throughput)。
在另一實施例中,前述一或多個迴圈校準指令不必與遮罩緊縮資料指令103具有相同指令格式。然而,此等指令產生結果可供遮罩緊縮資料指令103使用。迴圈校準指令的另一實施例圖示於第1圖的虛線方塊中。
處理器100同時包含執行邏輯109。執行邏輯109用以執行或處理指令集102的指令。執行邏輯109可包含執行單元(execution unit)、功能單元(functional unit)、算術邏輯單元(arithmetic logic unit)、邏輯單元(logic unit)、算術單元(arithmetic unit)等。處理器100同時包含用以將巨指令解碼為執行邏輯109所執行之微指令或微操作的解碼器129。
PLCNT指令105A及PLMSK指令105B計算剝離迭代(peel iteration)的數目。剝離迭代為一迴圈的初始迭代,其可自迴圈被取出並可與迴圈的其他迭代分開執行。若每一迭代增加迴圈索引,則一迴圈的“初始”迭代指的是迴圈最低索引(lowest-indexed)部分,或者若每一迭代減少迴圈索引,則一迴圈的“初始”迭代指的是迴圈最高索引(highest-indexed)部分。將一或多個初始迭代從迴圈取出稱為“迴圈剝離(loop peeling)”,此為迴圈最佳化的典型技術。在一般情形下,迴圈中的計算可包含陣列。陣列的基礎位址不必要符合由相關處理器為處理緊縮資料所使用的 資料儲存寬度(如緊縮資料暫存器107、快取線(cache line)、或其他記憶體單元的寬度)。此等資料儲存的寬度被稱為校準寬度。非校準基礎位址意指基礎位址不是校準寬度的整數倍。為改善資料存取效能,編譯器可產生程式碼計算剝離迭代的數目以移位陣列的非校準資料元件離開迴圈。剝離迭代的數目與必須移位離開迴圈的非校準資料元件數目相同,或換言之為必須與陣列其餘部分分開處理。陣列其餘部分的基礎位址(即啟始位址)符合校準寬度,或相同地,為校準寬度的整數倍。
然而,剝離迭代的數目如同最後向量化迴圈操作的剩餘迭代數目一般,通常無法在編譯期間決定,因為陣列元件的位址在此時並不清楚。以在此所述的指令,在編譯期間編譯器可產生PLCNT指令105A、PLMSK指令105B、及/或KSUBREM指令105C取代執行相同工作的其他程式碼序列。因此,編譯器可使用此等迴圈校準指令以簡化迴圈最佳化的工作。在另一實施例中,迴圈校準指令可由程式人員或其他程式碼產生實體使用。當迴圈校準指令為指令集架構101的一部分時,處理器100包含接收指令作為輸入的硬體(如解碼器129)以及將其解碼為執行邏輯109可執行之微指令或微操作。
PLCNT指令105A及PLMSK指令105B處理陣列開始並未校準的情形,而KSUBREM指令105C處理迴圈最末端剩餘元件的總大小小於校準寬度的情形。在一實施例中校準寬度為向量暫存器的寬度,此意謂最後向量化迴圈操 作中剩餘元件不會填滿整個向量暫存器。也就是說,KSUBREM指令105C可用在當迴圈中沒有足夠迭代(以及陣列中沒有足夠資料元件)時填滿向量操作的總寬度。
考慮每一迴圈迭代處理一陣列元件的範例。假設每一緊縮資料暫存器有512位元,此意謂16雙字(doubleword)資料元件可被緊縮到暫存器中並作為向量一併進行處理。若迭代總數為100且以所儲存的資料校準迴圈啟始,則在尾端會有4個剩餘資料元件,其在向量化迴圈中未被處理並需要分開處理。KSUBREM指令105C計算剩餘資料元件數目,以及產生與剩餘資料元件併用來改善向量化的遮罩。
為進一步說明迴圈校準,考慮使用的代表性範例將是有助的。第2A圖為說明遮罩緊縮資料加法操作203之一第一代表性範例的區塊圖。遮罩緊縮資料加法操作203可被執行以響應或作為遮罩緊縮資料指令之結果(如第1圖中遮罩緊縮資料指令103之一)。在一實施例中,遮罩202用於操作203中。遮罩202可為處理器執行如第1圖中所示之PLMSK指令105B所產生之結果。
在第2A圖的範例中,遮罩緊縮資料加法操作203用來增加純量值(如5)給對應集合遮罩位元(如1)的來源緊縮資料201的每一資料元件。假設程式碼序列(for i=0 to 21,B(i)=A(i)+5)設定執行,純量值5增加給陣列A的每一資料元件。既然來源緊縮資料201包含3個陣列A的資料元件(即A(0)、A(1)及A(2))作為最低順序資料元件,僅遮罩 202最低順序3位元會被設定(如設為1)以指示相加應被執行,而且對A(0)、A(1)及A(2)相加的結果應被儲存。在一實施例中,遮罩202可以被用來載入來源緊縮資料201以及執行遮罩緊縮資料加法操作203。此外,遮罩202可在16資料元件(如A(0)至A(15))載入向量暫存器後使用,以指示增加僅在最低順序3個資料元件中執行。在另一實施例中,陣列A的最高順序13個資料元件不會操作相加,因此被指定為“x”(忽略不計(don’t care))。
為說明之便,假設來源緊縮資料201為512-位元寬,而且每一資料元件為32-位元寬(即一雙字或“Dword”)。在第2A-2C圖的範例中,來源緊縮資料201的寬度與校準寬度相同。為最佳化資料存取及緊縮資料操作,以校準寬度校準陣列的基礎位址是有利的。舉例而言,當儲存在快取記憶體(cache)中陣列的基礎位址以快取線寬度進行校準,處理器可在單一存取中取出充滿陣列資料元件的快取線(cache-line)。再者,當儲存在緊縮資料暫存器中陣列的基礎位址以緊縮資料暫存器寬度進行校準,處理器可有效的對陣列資料元件進行向量化操作。
舉例而言,快取線寬度可為512位元,以及校準寬度可為向量暫存器之寬度。在處理器中向量暫存器也是512-位元寬,載入充滿資料(如16個Dword)之快取線到向量暫存器中將採用一個載入操作。然而,在如第2A圖所示的範例中,陣列A的基礎位址並未以校準寬度進行校準,載入陣列A的初始16個Dword將採用2個載入操作;首先 從第一快取線A(0)至A(2),接著由第二快取線A(3)至A(15)。若快取線寬度為512位元且校準寬度(如向量暫存器寬度)為128-位元寬,載入校準的16個Dword到向量暫存器中將需要4個載入操作。然而,第2A圖的範例中載入陣列A的初始16個Dword需要5個載入操作。此係因為初始16個Dword儲存在2個快取線中,因此載入會需要一個額外的載入操作。
在陣列元件數目為2的次方的應用(如影像處理)中,初始錯位(misalignment)可能導致所有後續陣列元件載入的錯位。因此,因為初始錯位,全陣列A可能無法有效的以緊縮資料操作進行處理。因此,在第2A圖的範例中,遮罩202用來指示處理器陣列A中的元件必須與陣列元件剩餘部分分開處理。
相反地,第2B圖顯示一範例,其中來源緊縮資料205包含陣列A接下來的16個元件(即A(3)、A(4)...A(18))。16個元件的總寬度與校準寬度相同。因此,單一緊縮資料操作(如向量取得、向量相加等)可操作在所有16個元件上。若16個元件的任一者在一迴圈迭代中作為指令的來源運算元(如for i=3 to 18,B(i)=A(i)+5),會以單一緊縮資料操作執行相加。如第2B圖所示的範例中,緊縮資料操作遮罩206與來源緊縮資料205併用。遮罩206的所有16遮罩位元均設定以指出陣列A的所有16個資料元件可於其上操作以及操作結果可被儲存。遮罩206以虛線表示因為在若干實施例中不使用遮罩206是較 有利的。此係因為使所有的1作為遮罩位元時,在來源緊縮資料205上的操作以及操作結果的儲存與操作中沒有使用遮罩206相同。
在如第2C圖所示的範例中,陣列最後3個資料元件(即A(19)、A(20)、A(21))並未佔據來源緊縮資料207的全部寬度。也就是說,A中沒有留下足夠元件以填滿整個向量暫存器207。既然來源緊縮資料207包含A(19)、A(20)、A(21)作為其最低順序資料元件,僅遮罩208最低順序3個位元被設定(如設為1)以指示相加應被執行,以及對A(19)、A(20)、A(21)相加的結果應被儲存。遮罩208可以是處理器執行如第1圖中KSUBREM指令105C所產生的結果。在一實施例中,陣列尾端缺乏資料元件(為填滿整個向量暫存器)可能是陣列基礎位址初始錯位的結果。舉例而言,在影像處理應用中,影像陣列大小的倍數通常是向量暫存器寬度的整數倍。然而,若影像陣列的初始是錯位的,迴圈尾端會留下一些資料元件而無法填滿整個向量暫存器。
遮罩202及208的使用有助於對迴圈執行進行向量化,其中陣列資料元件為運算元。在如第2A圖所示的範例中,具迴圈索引i=0、1及2的迭代可用遮罩緊縮資料操作進行向量化,其中來源緊縮資料201與遮罩202併用。在如第2C圖所示的範例中,具迴圈索引i=19、20及21的迭代可用遮罩緊縮資料操作進行向量化,其中來源緊縮資料207與遮罩208併用。在一實施例中,偵測迴圈 時,編譯器可產生包含一或多個PLCNT指令105A、PLMSK指令105B及/或KSUBREM指令105C的迴圈最佳化程式碼(loop-optimizing code)。PLCNT指令105A的輸出是一整數,用以指出可由迴圈取出以改善向量化的迭代數目;在第2A圖的範例中,此數目為3。PLMSK指令105B的輸出是緊縮資料操作遮罩(如遮罩202),其可施用在來源緊縮資料201。在第2A圖的範例中,僅遮罩202之最低順序3個元件被設定(如設為1)以及其餘部分被清除(如設為0)。KSUBREM指令105C的輸出是緊縮資料操作遮罩(如遮罩208),其可施用在來源緊縮資料207。在第2C圖所示的範例中,僅遮罩208之最低順序3個元件被設定(如設為1)以及其他部分被清除(如設為0)。
圖示遮罩緊縮資料操作203的指令指示來源緊縮資料被增加一純量值。其他遮罩緊縮資料指令可指示二或多個來源緊縮資料。遮罩緊縮資料操作203的指令同時指示緊縮資料操作遮罩(202、206或208)。每一緊縮資料操作遮罩包含複數遮罩元件、預測元件、條件控制元件、或旗標(flag)。元件或旗標可被包含在具有一或多個對應來源資料元件之一對一(one-to-one)對應中。舉例而言,如圖之所示,在操作包含一來源緊縮資料運算元的情形中,對每一對應來源資料元件可能存在此等一元件或一旗標。緊縮資料操作遮罩的每一元件或旗標可用以在一或多個對應來源緊縮資料元件上遮蔽分開的緊縮資料操作。例如,每一元件或旗標可在一對應來源緊縮資料元件上遮蔽分開的緊 縮資料操作。
如圖所示,通常每一元件或旗標可為單一位元。一單一位元可允許設定二種不同可能性之任一(如執行操作相對於不執行操作,儲存操作結果相對於不儲存操作結果等等)。此外,若需要在多於二種不同選項間進行選擇,則對每一旗標或元件可使用二或多個位元。在第2A圖之範例中,緊縮資料操作遮罩202包含16位元。16位元之任一者具有順序相對於來源緊縮資料201之16個對應資料元件之一。例如,遮罩202之最高順序3位元相對於來源緊縮資料201之對應最高順序3個資料元件。在另一實施例中,無論來源緊縮資料具有少或多的資料元件,緊縮資料操作遮罩可類似的具有少或多的資料元件。
根據所說明範例,當一給定遮罩位元被設定(即1),緊縮資料操作在來源緊縮資料的對應資料元件上執行並且儲存在緊縮資料結果的對應資料元件中。相反地,當所給定遮罩位元被清除時(即0),則對來源緊縮資料所對應之的資料元件緊縮資料操作會被省略(即不執行),或者結果不被允許儲存在緊縮資料結果的對應資料元件中。再者,另一值(由符號“X”指示)可被儲存在結果資料元件中。舉例而言,來自來源緊縮資料對應資料元件的數值被儲存。在另一實施例中,0或另一預定值可被儲存在緊縮資料結果的對應資料元件中。與說明相反之範例也有可能,其中位元被清除(即0)以允許結果被儲存,或被設定(即1)以不允許儲存結果。
在若干實施例中,例外(如例外旗標)或違規(violation)可藉由緊縮資料操作在遮罩-關閉(masked-off)元件上(即資料元件具有對應已清除遮罩位元)選擇性的壓制或不引發。在若干實施例中,對具有記憶體運算元的遮罩緊縮資料指令,記憶體故障(memory fault)可對遮罩-關閉資料元件選擇性的壓制或不引發。既然遮罩可有效提供合併行為緊縮資料暫存器,此特性有助於改善控制流程預測,但並非必要的。
應理解的是處理器可支援許多不同類型的遮罩緊縮資料操作。舉例而言,可包含僅具有一或具有大於二個來源緊縮資料、產生不同大小的結果緊縮資料、具有不同大小的資料元件及/或具有不同結果資料元件順序,及其結合。
第3圖為具有用以執行包含如PLCNT指令105A、PLMSK指令105B及KSUBREM指令105C的執行單元317之指令處理裝置315之一實施例之區塊圖。在若干實施例中,指令處理裝置315可為處理器及/或可被包含在一處理器中(如第1圖中之處理器100)。此外,指令處理裝置315可被包含在不同處理器或電子系統中。
指令處理裝置315接收一或多個PLCNT指令105A、PLMSK指令105B及KSUBREM指令105C。指令可從記憶體、指令佇列、指令取得單元或一來源被接收。每一指令105A、105B及105C代表可由指令處理裝置辨識的機器指令(machine instruction)、巨指令或控制信號。指令處理裝 置315可具有設定或特殊電路或其他邏輯(如軟體結合硬體及/或韌體)其用以處理指令及/或儲存響應指令或由指令所設定的結果。
圖示實施例之指令處理裝置315包含指令解碼器,如第1圖中的解碼器129或其他類似類型。解碼器129接收及解碼高階(high-level)機器指令或巨指令,如所接收指令105A-105C。解碼器129可產生及輸出一或多個低階(low-level)微操作、微程式碼進入點、微指令,或其他低階指令或控制信號,其由原始高階指令反映及/或衍生而來。此一或多個低階指令或控制信號可透過一或多個低階操作(電路階層或硬體階層)實現高階指令的操作。解碼器129可使用不同種類機制加以實現。適用的機制範例如(但不限於)微程式碼隨機存取記憶體(microcode ROM)、查閱表(look-up table)、硬體實現、可程式化邏輯陣列(PLA),其他本技藝所知可用來實現解碼器之機制。
此外,在一或多個其他實施例中,指令處理裝置315可具有指令仿真器(emulator)、翻譯器(translator)、變形器(morpher)、解譯器(interpreter)或其他指令轉換邏輯而非解碼器129。本技藝所知不同類型之指令轉換邏輯可以軟體、硬體、韌體或其結合實現之。指令轉換邏輯可接收一或多個指令105A-105C,仿真、翻譯、變形、解譯或轉換其為一或多個對應衍生指令或控制信號。在其他實施例中,指令處理裝置315可具有解碼器及額外指令轉換邏輯兩者。例如,指令處理裝置315可具有指令轉換邏輯用以將一或多個 指令105A-105C轉換為一或多個中間指令(intermediate instruction),以及一解碼器用以將一或多中間指令解碼為可由指令處理裝置本機硬體(native hardware)執行的一或多個低階指令或控制信號。指令轉換邏輯的部分或全部可與指令處理裝置之其他部分分開位在晶粒外(off-die),例如位在一分開晶粒上或在晶粒外記憶體中。
請再次參照第3圖,指令處理裝置315同時包含用以儲存基礎位址(其為進行校準陣列的初始位址)的一第一通用(GP)暫存器320,以及用以儲存迴圈限制(其為迴圈迭代之總數)的一第二通用暫存器321。第一及第二通用暫存器320及321提供輸入給PLCNT指令105A及PLMSK指令105B。在一實施例中,指令處理裝置315同時包含用以儲存目前迭代計數(其指示向量處理何處停止)的一第三通用暫存器322。第二及第三通用暫存器321及322提供輸入給KSUBREM指令105C。如前所述,迴圈校準指令可被明確設定(如透過位元或一或多個欄位)或指示提供輸入的暫存器以及一目的。PLCNT指令105A的目的(PLCNT目的323)也是一通用暫存器。PLMSK指令105B的目的(PLMSK目的324)是遮罩暫存器108之一。KSUBREM指令105C的目的(KSUBREM目的325)也是遮罩暫存器108之一。此外,目的儲存位置可為另一暫存器或記憶體位置。
在若干實例中,每一PLCNT指令105A及PLMSK指令105B設定或指示一中間值的額外運算元。中間值代表校準寬度。在其他實施例中,指令並未設定中間值而使用 預定值(例如相關微架構所允許的最大校準寬度,如512位元)取代作為校準寬度。
暫存器320-325可各自代表內建處理器儲存位置,如第1圖中架構暫存器106。暫存器320-325對軟體及/或程式人員為可見的(如軟體可見)及/或由巨指令指示或設定用來識別運算元之暫存器。暫存器320-325可使用已知技術以不同方式實現在不同的微架構中且不限於任何已知特定類型之電路。只要可如前述儲存及提供資料的不同類型暫存器均可適用。暫存器適用類型範例包含(但不限於)專用實體暫存器(dedicated physical register)、使用暫存器更名的動態配置實體暫存器及其結合。
指令處理裝置315同時包含執行單元317。執行單元317耦接至暫存器320-325。執行單元317同時耦接至解碼器129。執行單元317可接收來自解碼器129之一或多個微操作、微程式碼進入點、微指令、其他指令或其他控制信號,其由PLCNT指令105A、PLMSK指令105B及KSUBREM指令105C反映或衍生而來。
執行單元317用以(響應及/或導致每一迴圈校準指令)儲存結果在目的中。透過範例,執行單元317可包含算術邏輯單元、邏輯單元、算術單元、功能單元或其他類似單元。執行單元317可包含用以計算剝離迭代數的迴圈校準邏輯318。執行單元317及/或迴圈校準邏輯318可包含電路或其他用以實現指令操作(如執行一或多個微指令)之執行邏輯(如軟體、韌體、硬體或其結合)。
在若干實施例中,執行單元更可用以設定不用來儲存遮罩的目的位元為0,或賦予此等位元另一預定值。
為說明之便,圖示及說明一相當簡單之指令處理裝置315。應理解的是其他實施例可具有多於一個執行單元。例如,裝置可包含複數不同類型的執行單元,例如算術單元、算術邏輯單元(ALU)、整數單元(integer unit)、浮點單元(floating point unit)等等。此等單元之至少一者可響應在此所描述迴圈校準指令之實施例。尚有其他指令處理裝置或處理器之實施例可包含複數核心(core)、邏輯處理器或執行引擎。用以執行一或多個迴圈校準指令的執行單元可被包含在至少一個、至少二個、大部分或全部核心、邏輯處理器或執行引擎內。
指令處理裝置315或處理器也可選擇性的包含一或多個其他已知元件。舉例而言,其他實施例可包含一或多個指令取得邏輯(instruction fetch logic)、排程邏輯(scheduling logic)、分支預測邏輯(branch prediction logic)、指令及資料快取(instruction and data cache)、指令及資料轉換後備緩衝器(instruction and data translation lookaside buffer)、預取緩衝器(prefetch buffer)、微指令佇列(microinstruction queue)、微指令定序器(microinstruction sequencer)、匯流排介面單元(bus interface unit)、第二或高階快取(second or high level cache)、指令排程邏輯(instruction scheduling logic)、退休邏輯(retirement logic)、暫存器更名邏輯(register renaming logic)、其他類似及其不同之結合。應理解的是 處理器中此等元件存在文義上許多不同的結合與組態,本發明不受限於任一結合或組態。
第4圖為包含儲存一或多個迴圈校準指令405(如第1圖之PLCNT指令105A、PLMSK指令105B及/或KSUBREM指令105C)之實體、非暫態機器可讀取(如機器可讀取)儲存媒體400之產品(如電腦程式產品)之區塊圖。要理解的是用以執行在此所揭露之一或多個操作或方法之其他指令或指令序列(如使用迴圈校準指令405作為預測運算元(predicate operand)之一或多個指令、密切關連的純量或緊縮資料指令、或使用迴圈校準指令405的路由或演算法)也可儲存在儲存媒體400上。
在不同實施例中,實體、非暫態機器可讀取儲存媒體400可包含軟碟(floppy diskette)、光儲存媒體(optical storage medium)、光碟(optical disk)、CD-ROM、磁碟(magnetic disk)、磁光碟(magneto-optical disk)、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯讀記憶體(EPROM)、電子可抹除可程式化唯讀記憶體(EEPROM)、隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、快閃記憶體(flash memory)、相變化記憶體(phase change memory)或其結合。實體媒體可包含一或多個實體固態材料,例如半導體材料、相變化材料、磁性材料、光碟的光透固態材料等。
適用的機器範例包含(但不限於)指令處理裝置、指令執行裝置、處理器及具有一或多個指令處理裝置、指令執 行裝置或處理器之不同電子裝置。一些電子裝置的代表性範例包含(但不限於)電腦系統、桌上型電腦(desktop)、膝上型電腦(laptop)、筆記型電腦(notebook)、伺服器(server)、網路裝置(network device)、路由器(router)、切換器(switch)、小筆電(netbook)、桌上型小筆電(nettop)、行動上網裝置(MID)、手機(cellular phone)及媒體播放器(media player)。此等電子裝置典型地包含耦接至一或多個其他元件(如一或多個實體、非暫態機器可讀取儲存媒體)之一或多個處理器。處理器與其他元件的耦接典型地透過一或多個匯流排及電橋(bridge)(統稱為匯流排控制器)。因此,電子裝置的儲存裝置或儲存媒體可儲存在電子裝置之一或多處理器所執行的指令及/或指令序列。
第5A圖為處理校準指令之一範例(如第1圖之PLCNT指令105A及/或PLMSK指令105B)方法500之一實施例之流程圖。在不同實施例中,方法500可由通用處理器、專用處理器(如圖形處理器或數位信號處理器)或另一類型的數位邏輯裝置或指令處理裝置執行。在若干實施例中,方法500可被第1圖中處理器100或第3圖中處理裝置315或類似處理器或指令處理裝置所執行。此外,方法500可被處理器或指令處理裝置之不同實施例所執行。再者,第1圖中處理器100及第3圖中指令處理裝置315可執行與第5A圖中方法500相同、類似或不同的操作及方法之實施例。
方法500包含用以接收如PLCNT指令105A或 PLMSK指令105B(區塊510)迴圈校準指令之處理器。迴圈校準指令設定或指示第一來源運算元、第二來源運算元、目的及陣列的資料元件大小。在一實施例中,第一來源運算元設定儲存陣列基礎位址之第一暫存器,以及第二來源運算元設定儲存迴圈限制(即迴圈中迭代總數)之第二暫存器。在若干實施例中,每一陣列資料元件的寬度由助記符號設定為指令命名的一部分(如一位元組(byte)資料元件寬度可由PLCNTB及PLMSKB指令命名所指示)。在若干實施例中,指令同時設定或指示中間值,其為欲校準陣列所要求的校準寬度。在不同態樣中,指令可由處理器、指令處理裝置或其一部分(如解碼器、指令轉換器等)所接收。在不同態樣中,迴圈校準指令可被接收自處理器外(off-processor)來源(如來自主記憶體、磁碟或匯流排或連接線)或被接收自處理器內(on-processor)來源(如來自指令快取記憶體)。
接著,迴圈校準指令為解碼以執行(區塊520)。解碼可由處理器中的解碼器電路執行。在若干實施例中,迴圈校準指令可由如前第3圖中所示與解碼器129連接之指令轉換邏輯進行轉換以解碼。
在迴圈校準指令執行後,執行結果被儲存在目的中(區塊530)。此結果指示陣列初始處與陣列其他部分分開處理的資料元件數。當陣列其他部分的基礎位址(即開始位址)以校準寬度(如所要求的校準寬度)進行校準,則迴圈校準已達成。
在一實施例中,指示資料元件數目的結果為整數值(如PLCNT指令105A的情形)。在另一實施例中,指示資料元件數目的結果作為遮罩元件被設定為預定值(如1)(如PLMSK指令105B的情形)。
第5B圖為處理迴圈校準指令(如第1圖之KSUBREM指令105C)之一範例實施例之方法550之一範例實施例之流程圖。在不同實施例中,方法550可由通用處理器、專用處理器(如圖形處理器或數位信號處理器)或另一類型的數位邏輯裝置或指令處理裝置執行。在若干實施例中,方法550可被第1圖中處理器100或第3圖中處理裝置315或類似處理器或指令處理裝置所執行。此外,方法550可被處理器或指令處理裝置之不同實施例所執行。再者,第1圖中處理器100及第3圖中處理裝置315可執行與第5B圖中方法550相同、類似或不同的操作及方法之實施例。
方法550包含用以接收如KSUBREM指令105C(區塊560)迴圈校準指令之處理器。迴圈校準指令設定或指示第一來源運算元、第二來源運算元、目的及陣列的資料元件大小。在一實施例中,第一來源運算元設定儲存目前迭代計數之一第一暫存器(即迴圈向量處理處,以及第二來源運算元設定儲存迴圈限制(即迴圈中迭代總數)之第二暫存器。在若干實施例中,每一陣列資料元件的寬度由助記符號設定為指令命名的一部分(如一位元組(byte)資料元件寬度可由KSUBREM指令命名指示)。在不同態樣中,指令可由處理器、指令處理裝置或其一部分(如解碼器、指令 轉換器等)所接收。在不同態樣中,迴圈校準指令可被接收自處理器外來源(如來自主記憶體、磁碟或匯流排或互連線)或被接收自處理器內來源(如來自指令快取記憶體)。
接著,迴圈校準指令為執行而解碼(區塊570)。解碼可由處理器中的解碼器電路執行。在若干實施例中,迴圈校準指令可由如前述第3圖中所示與解碼器129連接之指令轉換邏輯轉換進行解碼。
在迴圈校準指令執行後,執行結果被儲存在目的中(區塊580)。此結果指示陣列尾端與陣列前部分開處理的資料元件數。陣列前部尾端即為向量處理停止與目前迭代計數記錄處。
在一實施例中,指示資料元件數作為遮罩元件的結果設定為預定值(如1)(如KSUBREM指令105C的情形)。在另一實施例中,指示資料元件數的結果為整數值。
圖示之方法包含處理器或指令處理裝置外部可見的操作(如由軟體觀點)。在其他實施例中,此方法可選擇性的包含一或多個其他操作(如在處理器或指令處理裝置內部發生的一或多個操作)。透過範例,在指令接收後,指令可被解碼、翻譯、仿真或轉換為一或多其他指令或控制信號。第一及第二來源運算元可被存取及/或接收。執行單元可被啟動以根據指令產生或執行迴圈校準,以及可產生或執行迴圈校準。
第6圖為表格600其用以說明由PLMSK指令105B及KSUBREM指令105C對不同校準寬度及緊縮資料元件寬度 結合所產生的緊縮資料操作遮罩位元數。緊縮資料操作遮罩位元數為一給定校準寬度及一給定緊縮資料(如陣列)元件寬度之比例。圖示校準寬度為64-位元、128-位元、256-位元及512-位元,但其他大小也可能發生。緊縮資料元件寬度為8-位元位元組(B)、16-位元字(W)、32-位元雙字組(D)或單精度浮點,及64-位元四字組(Q)或雙精度浮點,但其他大小也可能發生。
第7圖為遮罩暫存器集合700(如第1圖中之遮罩暫存器108)之一實施例之區塊圖。每一遮罩暫存器700用來儲存緊縮資料操作遮罩(如儲存在PLMSK目的324中及KSUBREM目的325中的遮罩)。在說明之實施例中,此集合包含8個遮罩暫存器標示為k0至k7。在不同實施例中可包含比8少(如2、4、6等)或比8多(如16、20、32等)的緊縮資料操作遮罩暫存器。在說明之實施例中,每一遮罩暫存器700為64-位元寬。在不同實施例中遮罩暫存器700的寬度可比64-位元寬(如80-位元、128-位元等)或比64-位元窄(如8-位元、16-位元、32-位元等)。遮罩暫存器700可使用已知技術以不同方式實現且不限於任何已知特定類型之電路。只要可如前述儲存及提供資料的不同類型暫存器均可適用。暫存器適用類型範例包含(但不限於)專用實體暫存器(dedicated physical register)、使用暫存器更名的動態配置實體暫存器及其結合。
在若干實施例中,遮罩暫存器700可為架構暫存器的分離、專用集合。在若干實施例中,指令可在不同位元或 指令格式一或多不同欄位結合編碼或設定遮罩暫存器而非使用編碼或設定其他類型暫存器(如第1圖中遮罩暫存器108)。透過範例,遮罩緊縮資料指令可使用3位元(如3-位元欄位)以編碼或設定8個緊縮資料操作遮罩暫存器k0至k7之任一者。在另一實施例中,當存在較少或較多緊縮資料操作遮罩暫存器時,可依次使用較少或較多位元。
在一特殊實施例中,僅遮罩暫存器k1至k7(不含k0)可被定址作為預測運算元以預測遮罩緊縮資料操作。暫存器k0可被使用作為正規來源或目的,但無法被編碼為預測運算元(如若k0被設定其具有全部1或“無遮罩(no mask)”編碼)。在其他實施例中,全部或僅部分暫存器可編碼為預測運算元。
在若干實施例中,暫存器700的最低順序子集或部分用來作為遮罩,然並非必要。如第6圖所示,當校準寬度為128位元且資料元件寬度為8位元,使用16遮罩位元。此等16遮罩位元可為儲存在暫存器700之一的最低順序16位元(如k1)。k1的較高順序部分可被設定為0或其他預定值。在另一實施例中,最高順序子集或其他子集也可選擇性的使用。
第8A及8C圖為說明PLCNT指令105A、PLMSK指令105B及KSUBREM指令105C及其操作之一實施例。每一指令命名可具有助記符號B/W/D/Q附加以指示資料元件寬度,如B(8位元)、W(16位元)、D(32位元)或Q(64位元)。在圖中,rax、rbx、rcx代表通用暫存器以及k1代表 遮罩暫存器。在第8A及8B圖之範例中(PLCNT及PLMSK),rax(儲存SRC1)為具有陣列基礎位址之一第一來源運算元,rcx(儲存SRC2)為具有迴圈限制之一第二來源運算元,rax(儲存DEST)代表結果的目的。VL代表所需的校準寬度位元組,W代表陣列每一資料元件寬度(即1、2、4或8位元組,當由B/W/D/Q附加在指令命名指示時)。在若干實施例中,指令設定中間值可用來設定VL的值,如00、01及10,其依次代表128位元、256位元、512位元。有些中間值可被保留,如11可代表1024位元。必須了解的是不同中間值可用來表示不同的校準寬度。在另一實施例中,指令並不設定中間值而以預定值取代(如相關微架構允許的最大校準寬度,如512位元)作為VL的值。再者,在第8A及8B圖中,alignmemt_iterations代表每一校準迭代的數目。此數目小於設定在SRC2中的迭代限制。在第2A圖的範例中,此數目為3。
如圖所示,PLCNT指令傳回對應alignmemt_iterations最小值及SRC2(迭代限制)的計數。PLMSK指令傳回等於PLCNT所傳回計數的緊縮資料操作遮罩。如第8B圖所示之範例,顯示遮罩可由數值1移位n位元及減1而產生,其中n代表計數(可由PLCNT產生)。結果遮罩儲存至目的中,其可為第7圖中所示緊縮資料操作遮罩暫存器700之一。必須了解的是此示例為說明之便及並非限制,實存在許多不同方式以實現PLCNT及PLMSK。
在第8C圖的範例中(KSUBREM),rax(儲存SRC1)為 具有迴圈限制之一第一來源運算元,rcx(儲存SRC2)為具有一迴圈之迴圈限制的一第二來源運算元,rax(儲存DEST)為代表結果的目的。VL代表向量元件數目,以及remaining_iterations代表VL的最小值及SRC2與SRC1之間的差值。結果遮罩可由數值1移位n位元及減1而產生,其中n代表remaining_iterations的值。
在此所揭露之迴圈校準指令為具有通用功能的通用指令。舉例而言,此等指令可單獨或與其他指令結合使用以計算剝離迭代的數目。在若干實施例中,所揭露之迴圈校準指令可與密切關連或相關的緊縮資料指令協同使用以最佳化迴圈操作執行。以本發明為基礎同時可推想出其他使用。
範例電腦系統及處理器-第9-13圖。
第9-13圖為範例電腦系統及處理器。本技藝所知之其他系統設計組態如膝上型電腦(laptop)、桌上型電腦(desktop)、手持電腦(handheld PC)、個人數位助理(personal digital assistant)、工程工作站(engineering workstation)、伺服器(server)、網路裝置(network device)、網路集線器(network hub)、切換器(switch)、內建處理器(embedded processor)、數位信號處理器(DSP)、圖形裝置(graphics device)、視訊遊戲裝置(video game device)、機頂盒(set-top box)、微控制器(micro controller)、手機(cell phone)、可攜式媒體播放器(portable media player)、手持裝置(hand held device)及其他不同電子裝置 也同樣適用。一般而言,可用與處理器及/或所揭露之執行邏輯協同合作之不同系統或電子裝置通常均適用。
請參照第9圖,根據本發明之一實施例之系統1300之區塊圖。系統1300可包含一或多個處理器1310、1315,其耦接至圖形記憶體控制器集線器(GMCH)1320。選擇性附加處理器1315在第9圖中以折線表示。
每一處理器1310、1315可為處理器1700的一些版本。然而,必須注意的是整合圖形邏輯及整合記憶體控制單元不太會出現在處理器1310、1315中。
第9圖說明GMCH 1320可耦接至如動態隨機存取記憶體(DRAM)之記憶體1340。DRAM在至少一實施例中可伴隨非揮發性快取記憶體。
GMCH 1320可為晶片集(chipset)或晶片集之一部分。GMCH 1320可與處理器1310、1315通訊以及控制處理器1310、1315與記憶體1340間的互動。GMCH 1320也可作為處理器1310、1315與系統1300其他元件間的加速匯流排介面。對至少一實施例,GMCH 1320透過如前端匯流排(frontside bus)(FSB)1395之多點匯流排(multi-drop bus)與處理器1310、1315通訊。
再者,GMCH 1320耦接至顯示器1345(如平板顯示器)。GMCH 1320可包含整合圖形加速器。GMCH 1320更耦接至輸入/輸出控器集線器(ICH)1350,其可耦接至系統1300其他不同週邊裝置。第9圖中所示之範例為外部圖形裝置1360,其可為耦接至ICH 1350之獨立圖形裝置,伴 隨另一週邊裝置1370。
此外,額外或不同處理器可在系統1300中表示。舉例而言,額外處理器1315可包含與處理器1310相同之額外處理器,額外處理器對處理器1310、加速器(如圖形加速器或數位信號處理(DSP)單元)、欄位可程式化閘陣列、或任何其他處理器為異質或非對稱的。實體資源1310、1315存在許多差異,指標性的優點包含架構的、微架構的、熱的、消耗功率特性及其他類似指標。此等差異可在處理元件1310、1315中有效的顯示異質或非對稱。對至少一實施例,不同的處理元件1310、1315可配置在同一晶片封裝中。
請參照第10圖,第10圖為根據本發明之一實施例之第二系統1400之區塊圖。如第10圖所示,多處理器系統1400為點對點(point-to-point)互連系統,以及包含透過點對點互連線1450耦接之一第一處理器1470及一第二處理器1480。如第10圖所示,每一處理器1470及1480可為處理器1700的一些版本。
此外,一或多處理器1470、1480可為處理器外之一元件,如加速器或欄位可程式化閘陣列。
雖然僅顯示二處理器1470、1480,然非用以限定本發明。在其他實施例中,一或多額外處理元件可被表示在一給定處理器中。
處理器1470更可包含一整合記憶體控制器集線器(IMC)1472及點對點(P-P)介面1476及1478。類似地,第 二處理器1480可包含IMC 1482及P-P介面1486及1488。處理器1470、1480可透過點對點(PtP)介面1450使用PtP介面電路1478、1488交換資料。如第10圖所示,IMC 1472及1482耦接處理器至各自的記憶體,即記憶體1442及記憶體1444,其可為主記憶體的一部分本地連接至各自的處理器。
處理器1470、1480可與晶片集1490透過個別P-P介面1452、1454使用點對點介面電路1476、1494、1486、1498進行資料交換。晶片集1490也可透過高效率圖形介面1439與高效率圖形電路1438進行資料交換。
一分享快取記憶體(未圖示)可被包含在兩處理器外部之任一處理器,但透過P-P互連線與處理器連接,以使當處理器被放置在低功率模式時,一或兩者處理器本地快取記憶體資訊可被儲存在分享快取記憶體中。
晶片集1490可透過介面1496耦接至一第一匯流排1416。在一實施例中,第一匯流排1416可為週邊元件互連(PCI)匯流排,或如PCI Express匯流排或另一第三代I/O互連匯流排之匯流排,然非用以限定本發明。
如第10圖所示,不同I/O裝置1414可耦接至第一匯流排1416,伴隨一匯流排電橋1418,其耦接第一匯流排1416至第二匯流排1420。在一實施例中,第二匯流排1420可為低接腳數(LPC)匯流排。不同裝置可耦接第二匯流排1420,包含如鍵盤/滑鼠1422、通訊裝置1426以及如磁碟機或其他大量儲存裝置之資料儲存單元1428,在一 實施例中其可包含程式碼1430。再者,音訊I/O 1424可耦接至第二匯流排1420。請注意可為其他架構。例如,取代第10圖中的點對點架構,系統可以多點匯流排或其他類似架構加以實現。
請參照第11圖,第11圖為根據本發明之一實施例之第三系統1500之區塊圖。第10圖及第11圖中的近似元件採用近似的參考標號且第10圖中的一些態樣在第11圖中略過以免模糊第11圖的其他態樣。
第11圖說明處理元件1470、1480可依序包含整合記憶體及I/O控制邏輯(“CL”)1472及1482。對至少一實施例,CL 1472、1482可包含記憶體控制器集線器邏輯(IMC)如前所述連接以圖89及14。此外,CL 1472及1482也可包含I/O控制邏輯。圖15說明不僅記憶體1442、1444耦接至CL 1472、1482,同時I/O裝置1514也耦接至控制邏輯1472、1482。傳統I/O裝置1515耦接至晶片集1490。
請參照第12圖,第12圖為根據本發明之一實施例之系統單晶片(SoC)1600之區塊圖。與第13圖近似的元件採用近似的參考標號。同時,虛線方塊為在較先進SoC上選擇性的特性。在第12圖中,互連單元1602耦接至:包含一或多個核心1702A-N集合及共享快取記憶體單元1706之應用處理器1610;系統代理單元1710;匯流排控制器單元1716;整合記憶體控制器單元1714;一或多個媒體處理器之集合1620,其可包含整合圖形邏輯1708提供靜 態及/或視訊照相機功能的影像處理器1624提供硬體音訊加速的音訊處理器1626以及提供視訊編碼/解碼加速的視訊處理器1628;靜態隨機存取記憶體(SRAM)單元1630;直接記憶體存取(DMA)單元1632;以及耦接至一或多外部顯示器之顯示單元1640。
本發明在此所揭露之機制之實施例可以硬體、軟體、韌體或其結合實現之。本發明之實施例可以執行在可程式化系統之電腦程式或程式碼實現之,可程式化系統包括至少一處理器、一儲存系統(包含揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置以及至少一輸出裝置。
程式碼可施用在輸入資料以執行在此所述之功能,並產生輸出資訊。輸出資訊可以所知的方式施用在一或多個輸出裝置。以應用的目的而言,處理系統包含任何具有處理器的系統,例如數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)或微處理器。
程式碼可以可與處理系統進行通訊的高階可程序化或物件導向程式語言加以實現。程式碼也可以組合語或機器語言加以實現。事實上,若有需要前述機制不限於任何特定程式語言。在任何情形下,可為編譯或解譯之語言。
至少一實施例的一或多態樣可由儲存在機器可讀取媒體之的代表性指令加以實現,其代表處理器中不同的邏輯,當由機器讀取促使機器製造執行前述技術的邏輯。這種表示法已知為“智財核心(IP cores)”可被儲存在實體、機器可讀性媒體並提供給不同客戶或製造商利用以載入實際 產生邏輯或處理器的製造機器中。
此等機器可讀性媒體可包含但不限於,由機器或裝置所形成非暫態實體配置的物品,包含如硬碟等儲存媒體,任何其他種類的磁碟如軟碟、光碟(光碟唯讀記憶體CD-ROM)、可抹寫光碟(CD-RW),以及磁光碟、半導體裝置如唯讀記憶體(ROM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、電子可抹拭唯讀記憶體(EEPROM)、磁或光學卡或任何其他可用於儲存電子指令之媒體。
因此,本發明之實施例也包括含有指令的非暫態實體機器可讀性媒體,包括向量友好指令格式或設計資料,如硬體描述語言(HDL),其定義結構、電路、裝置、處理器及/或前述之系統特性。此實施例同時參照為程式產品。
在若干情形下,指令轉換器可用來將指令來源指令集轉換為目標指令集。例如指令轉換器可轉換(使用靜態二元制轉換、包含動態編譯的動態二元制轉換)、編輯、仿真或由核心轉換一指令為一或多指令以進行處理。指令轉換器可以軟體、硬體、韌體或其結合加以實現。指令轉換器可以在處理器、離處理器或為部分在及部分離處理器。
第14圖為根據本發明之一實施例一軟體指令轉換器之對比使用,其用以在來源指令集轉換二進制指令為目標指令集之二進制指令。在所示實施例中,指令轉換器為軟體指令轉換器,然指令轉換器可以軟體、硬體、韌體或其不同結合加以實現。第13圖顯示高階語言1802可由x86 編譯器1804編譯以產生x86二元制程式碼1806,其可由處理器以至少一x86指令集核心1816進行本機執行(假設指令之一部分被編譯為向量友好指令格式)。具有至少一x86指令集核心1816代表任何可實際執行相同功能的處理器,如具有至少一x86指令集核心之Intel處理器可相容執行或其他處理(1)Intel x86指令集核心之指令集的實體部分或(2)應用程式或其他可在Intel處理器上執行具有至少一x86指令集核心的物件碼版本,以便可與具有至少一x86指令集核心的Intel處理器實際上達到相同結果。x86編譯器1804代表用來產生x86二元制碼1806(如物件碼)的編譯器,其可在具有或沒有額外連接處理的情形下,以x86指令集核心1816在處理器上執行。同樣地,第14圖顯示高階語言程式1802可使用選擇性的指令集編譯器1808進行編譯以產生選擇性的指令集二元制碼1810,其可由處理器在沒有至少一x86指令集核心1814的情形下進行本機執行(如Sunnyvale,CA,MIPS Technologies具有執行MIPS指令集核心的處理器及/或Sunnyvale,CA,ARM Holdings具有執行ARM指令集核心的處理器)。指令轉換器1812用以轉換x86二元制碼1806為可在沒有x86指令集核心1814的情形下由處理器進行本機執行。已轉換碼與選擇性的指令集二元制碼1810相同,因為指令集轉換器是為能處理此困難而製造,然而已轉換碼將完成通用操作並由來自選擇性指令集的指令填補。因此,指令轉換器1812代表軟體、韌體、硬體或其結合,透過仿真、模擬或 任何其他處理,允許處理器或其他沒有x86指令及處理器或核心的電子裝置執行x86二元制碼1806。
在此所揭露具向量友好指令格式之特定指令操作可由硬體元件加以執行以及可被內建在機器可執行指令中,其用以引發或至少導致電路或其他具有指令的程式化硬體元件執行操作。電路可包含通用或專用處理器或邏輯電路,在此僅提供若干示例。操作可選擇性的由硬體與軟體結合執行。執行邏輯及/或處理器可包含設定或特定電路或其他響應機器指令之電路,或者由機器指令導出用以儲存指令設定結果運算元之一或多個控制信號。舉例而言,在此所揭露指令之實施例可在如第9-13圖所示之系統中執行以及具向量友好指令格式的指令實施例可被儲存在程式碼中以在系統中執行。此外,這些圖式的處理元件可利用在此所描述之詳細管線(pipeline)及/或架構(如有序(in-order)及無序(out-of-order)架構)。舉例而言,有序架構的解碼單元可解碼指令、傳送解碼指令到向量或純量單元等等。
以上描述欲說明本發明之較佳實施例。由以上討論明顯可知在本發明所屬之技術領域,技術成長快速並無法簡單預知,在不脫離本發明之精神和範圍內,任何熟習此技藝者當可更動與潤飾。例如,方法的一或多個操作可被結合或進一步分離。
選擇性實施例
以上描述本機執行向量友好指令格式之實施例,本發 明選擇性的實施例可透過用以執行不同指令之處理器(如Sunnyvale,CA,MIPS Technologies執行MIPS指令集的處理器,Sunnyvale,CA,ARM Holdings執行ARM指令集的處理器)上的仿真階層來執行向量友好指令格式。同時,圖式中的流程圖用以顯示本發明特定實施例之操作執行特殊順序,必須了解的是此等順序僅為示例(如選擇性的實施例可以不同順序執行操作、結合特定操作、重疊特定操作等等)。
為說明之便以上所述設定若干特定細節以助充分理解本發明之實例。顯而可知任何熟習此技藝者可施行一或多個其他實施例而不採用前述之特定細節。所揭露之實施例並非用以限定本發明,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
必須了解的是以上描述欲說明而非限制本發明。任何熟習此技藝者閱讀與理解前述說明後當可推知若干其他實施例。因此,本發明之範圍當視後附之申請專利範圍輔以其等同的所有範圍為準。
100‧‧‧處理器
101‧‧‧指令集架構
102‧‧‧指令集
103‧‧‧遮罩緊縮資料指令
105A‧‧‧PLCNT指令
105B‧‧‧PLMSK指令
105C‧‧‧KSUBREM指令
106‧‧‧架構暫存器
107‧‧‧緊縮資料暫存器
108‧‧‧遮罩暫存器
109‧‧‧執行邏輯
127‧‧‧通用暫存器
129‧‧‧解碼器
201‧‧‧來源緊縮資料
202‧‧‧遮罩
203‧‧‧遮罩緊縮資料增加操作
205‧‧‧來源緊縮資料
206‧‧‧遮罩
207‧‧‧來源緊縮資料
208‧‧‧遮罩
315‧‧‧指令處理裝置
317‧‧‧執行單元
318‧‧‧迴圈校準邏輯
320‧‧‧第一GP暫存器
321‧‧‧第二GP暫存器
322‧‧‧第三GP暫存器
323‧‧‧PLCNT目的
324‧‧‧PLMSK目的
325‧‧‧KSUBREM目的
400‧‧‧實體非暫態機器可讀取儲存媒體
405‧‧‧迴圈校準指令
700‧‧‧遮罩暫存器
1310、1315‧‧‧處理器
1345‧‧‧顯示器
1320‧‧‧GMCH
1340‧‧‧記憶體
1350‧‧‧ICH
1360‧‧‧外部圖形裝置
1370‧‧‧週邊
1432‧‧‧記憶體
1470‧‧‧處理器
1480‧‧‧處理器/協同處理器
1434‧‧‧記憶體
1438‧‧‧高效率圖形電路
1490‧‧‧晶片集
1418‧‧‧匯流排電橋
1414‧‧‧輸入/輸出裝置
1424‧‧‧視訊輸入/輸出
1422‧‧‧鍵盤/滑鼠
1427‧‧‧通訊裝置
1430‧‧‧程式碼及資料
1428‧‧‧資料儲存
1432‧‧‧記憶體
1514‧‧‧輸入/輸出裝置
1434‧‧‧記憶體
1515‧‧‧傳統輸入/輸出
1600‧‧‧系統單晶片
1620‧‧‧媒體處理器
1708‧‧‧整合圖形
1624‧‧‧影像處理器
1626‧‧‧視訊處理器
1628‧‧‧音訊處理器
1610‧‧‧應用處理器
1702A‧‧‧核心
1702N‧‧‧核心
1704A‧‧‧快取記憶體單元
1704N‧‧‧快取記憶體單元
1706‧‧‧共享快取記憶體單元
1710‧‧‧系統代理單元
1602‧‧‧互連單元
1716‧‧‧匯流排控制器單元
1714‧‧‧整合記憶體控制器單元
1630‧‧‧SRAM單元
1632‧‧‧DMA單元
1640‧‧‧顯示單元
1700‧‧‧處理器
1708‧‧‧整合圖形
1712‧‧‧RING
1714‧‧‧整合記憶體控制器單元
1716‧‧‧匯流排控制器單元
1814‧‧‧沒有x86指令集核心的處理器
1816‧‧‧有x86指令集核心的處理器
1810‧‧‧選擇性的指令集二元制碼
1808‧‧‧選擇性的指令集編譯器
1802‧‧‧高階語言
1804‧‧‧x86編譯器
1806‧‧‧x86二元制程式碼
1812‧‧‧指令轉換器
本發明之較佳實施例輔以圖式說明,其中:第1圖為具有包含一或多個迴圈校準指令之指令集之處理器之區塊圖。
第2A-2C圖說明利用迴圈校準指令結果之遮罩緊縮資料操作之範例。
第3圖為具有一執行單元以執行包含一或多個迴圈校準指令之一指令處理裝置之一範例實施例之區塊圖。
第4圖為包含儲存一或多個迴圈校準指令之實體的、非暫態機器可存取的及/或機器可讀取的儲存媒體之產品(如電腦程式產品)之區塊圖。
第5A及5B圖為說明處理迴圈校準指令方法之範例實施例之流程圖。
第6圖為說明緊縮資料操作遮罩位元數目取決於校準寬度及資料元件寬度之表格。
第7圖為一組緊縮資料操作遮罩暫存器之一範例實施例之區塊圖。
第8A至8C圖為說明迴圈校準指令及其操作之範例實施例。
第9圖為根據本發明之一實施例之一系統之區塊圖。
第10圖為根據本發明之一實施例之一第二系統之區塊圖。
第11圖為根據本發明之一實施例之一第三系統之區塊圖。
第12圖為根據本發明之一實施例之系統單晶片(SoC)之區塊圖。
第13圖為根據本發明之實施例之具有整合記憶體控制器及圖形之單核處理器及多核處理器之區塊圖。
第14圖為根據本發明之實施例對比使用一軟體指令轉換器之區塊圖,該軟體指令轉換器用以將來源指令集中 的二進制指令轉換為目標指令集中之二進制指令。

Claims (18)

  1. 一種方法包括:由一處理器接收一迴圈餘數遮罩指令,該迴圈餘數遮罩指令指示一迴圈之一目前迭代計數作為一第一運算元、一迴圈限制作為一第二運算元以及一目的(destination),其中該迴圈包含複數迭代,以及在每一迭代中處理一陣列之一資料元件;解碼該迴圈餘數遮罩指令以執行;以及儲存該執行之一結果於該目的,該結果指示通過該陣列之前部之尾端(其待與該前部分別處理)之該陣列的資料元件數,該前部之尾端為該目前迭代計數所記錄處。
  2. 如申請專利範圍第1項所述之方法,其中該迴圈餘數遮罩指令之該結果為具有設定為預設值之若干遮罩元件之一緊縮資料運算遮罩(packed data operation mask),該等被設定之遮罩元件之各者對應於待與該陣列之前部分別處理之該陣列之該等資料元件之一者。
  3. 如申請專利範圍第2項所述之方法,其中該等遮罩元件之各者為一位元。
  4. 如申請專利範圍第1項所述之方法,其中該迴圈餘數遮罩指令藉由一助記符號(mnemonic)識別該陣列之該資料元件之一寬度。
  5. 如申請專利範圍第1項所述之方法,其中該校準寬度為該處理器用於處理緊縮資料所使用的資料儲存寬度。
  6. 如申請專利範圍第1項所述之方法,其中待與該陣 列之前部分別處理之該陣列之資料元件數的總數量小於該校準寬度。
  7. 一種裝置包括:一第一暫存器,用以儲存一迴圈之一目前迭代計數;一第二暫存器,用以儲存一迴圈限制,其中該迴圈包含複數迭代以及在每一迭代中處理一陣列之一資料元件;與該第一暫存器及該第二暫存器耦接之一解碼器,該解碼器可操作來解碼該迴圈餘數遮罩指令以執行,作為指示該第一暫存器、該第二暫存器及一目的之一迴圈餘數遮罩指令之一結果;以及與該解碼器耦接之一執行單元,該執行單元可操作來儲存該迴圈餘數遮罩指令之結果於該目的,該結果指示通過該陣列前部之尾端(其待與該前部分別處理)之該陣列的資料元件數,該前部之尾端為該目前迭代計數所記錄處。
  8. 如申請專利範圍第7項所述之裝置,其中該迴圈餘數遮罩指令之該結果為具有設定為預設值之若干遮罩元件之一緊縮資料運算遮罩,該等被設定之遮罩元件之各者對應於待與該陣列之前部分別處理之該陣列之該等資料元件之一者。
  9. 如申請專利範圍第8項所述之裝置,其中該等遮罩元件之各者為一位元。
  10. 如申請專利範圍第7項所述之裝置,其中該迴圈餘數遮罩指令藉由一助記符號識別該陣列之該資料元件之一寬度。
  11. 如申請專利範圍第7項所述之裝置,其中該校準寬度為該處理器用於處理緊縮資料所使用的資料儲存寬度。
  12. 如申請專利範圍第7項所述之裝置,其中待與該陣列之前部分別處理之該陣列之資料元件數的總數量小於該校準寬度。
  13. 一種系統包括:一互連器;耦接至該互連器之一處理器,該處理器包含:一第一暫存器,用以儲存一迴圈之一目前迭代計數一第二暫存器,用以儲存一迴圈限制,其中該迴圈包含複數迭代以及在每一迭代中處理一陣列之一資料元件;與該第一暫存器及該第二暫存器耦接之一解碼器,該解碼器可操作來解碼該迴圈餘數遮罩指令以執行,作為指示該第一暫存器、該第二暫存器及一目的之一迴圈餘數遮罩指令之一結果;以及與該解碼器耦接之一執行單元,該執行單元可操作來儲存該迴圈餘數遮罩指令之結果於該目的,該結果指示通過該陣列前部之尾端(其待與該前部分別處理)之該陣列的資料元件數,該前部之尾端為該目前迭代計數所記錄處;以及耦接至該互連器之一動態隨機存取記憶體(DRAM)。
  14. 如申請專利範圍第13項所述之系統,其中該迴圈餘數遮罩指令之該結果為具有設定為預設值之若干遮罩元 件之一緊縮資料運算遮罩(packed data operation mask),該等被設定之遮罩元件之各者對應於待與該陣列之前部分別處理之該陣列之該等資料元件之一者。
  15. 如申請專利範圍第14項所述之系統,其中該等遮罩元件之各者為一位元。
  16. 如申請專利範圍第13項所述之系統,其中該迴圈餘數遮罩指令藉由一助記符號識別該陣列之該資料元件之一寬度。
  17. 如申請專利範圍第13項所述之系統,其中該校準寬度為該處理器用於處理緊縮資料所使用的資料儲存寬度。
  18. 如申請專利範圍第13項所述之系統,其中待與該陣列之前部分別處理之該陣列之資料元件數的總數量小於該校準寬度。
TW101142638A 2011-12-14 2012-11-15 用於迴圈餘數遮罩指令之系統、裝置及方法 TWI514274B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/064942 WO2013089707A1 (en) 2011-12-14 2011-12-14 System, apparatus and method for loop remainder mask instruction

Publications (2)

Publication Number Publication Date
TW201335845A true TW201335845A (zh) 2013-09-01
TWI514274B TWI514274B (zh) 2015-12-21

Family

ID=48613000

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101142638A TWI514274B (zh) 2011-12-14 2012-11-15 用於迴圈餘數遮罩指令之系統、裝置及方法

Country Status (4)

Country Link
US (1) US20140189296A1 (zh)
CN (1) CN104115113B (zh)
TW (1) TWI514274B (zh)
WO (1) WO2013089707A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042378B2 (en) 2015-07-31 2021-06-22 Arm Limited Propagation instruction to generate a set of predicate flags based on previous and current prediction data

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103959240B (zh) * 2011-12-15 2017-05-17 英特尔公司 使用混洗表和掩码存储表经由矢量指令优化程序循环的方法
US9557993B2 (en) * 2012-10-23 2017-01-31 Analog Devices Global Processor architecture and method for simplifying programming single instruction, multiple data within a register
US9424034B2 (en) * 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
US11544214B2 (en) 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
EP3125108A1 (en) * 2015-07-31 2017-02-01 ARM Limited Vector processing using loops of dynamic vector length
GB2548602B (en) * 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control
GB2548603B (en) 2016-03-23 2018-09-26 Advanced Risc Mach Ltd Program loop control
GB2548604B (en) 2016-03-23 2018-03-21 Advanced Risc Mach Ltd Branch instruction
US10838720B2 (en) * 2016-09-23 2020-11-17 Intel Corporation Methods and processors having instructions to determine middle, lowest, or highest values of corresponding elements of three vectors
JP2018124877A (ja) * 2017-02-02 2018-08-09 富士通株式会社 コード生成装置、コード生成方法、およびコード生成プログラム
CN108509013B (zh) * 2017-02-28 2020-06-26 华为技术有限公司 一种处理指令的方法及装置
US11269638B2 (en) * 2017-06-28 2022-03-08 Texas Instruments Incorporated Exposing valid byte lanes as vector predicates to CPU
CN110045986B (zh) * 2018-01-16 2021-07-27 龙芯中科(北京)信息技术有限公司 一种指令处理方法、装置及存储介质
US10740098B2 (en) * 2018-02-06 2020-08-11 International Business Machines Corporation Aligning most significant bits of different sized elements in comparison result vectors
US10579375B2 (en) 2018-02-06 2020-03-03 International Business Machines Corporation Method to build reconfigurable variable length comparators
CN110134441B (zh) * 2019-05-23 2020-11-10 苏州浪潮智能科技有限公司 Risc-v分支预测方法、装置、电子设备及存储介质
JP2021039658A (ja) * 2019-09-05 2021-03-11 富士通株式会社 Ac並列化回路、ac並列化方法及び並列情報処理装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
US5936872A (en) * 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
WO1998006038A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Architectural support for software pipelining of loops
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US7051168B2 (en) * 2001-08-28 2006-05-23 International Business Machines Corporation Method and apparatus for aligning memory write data in a microprocessor
JP3698123B2 (ja) * 2002-06-25 2005-09-21 セイコーエプソン株式会社 情報処理装置及び電子機器
US20050102495A1 (en) * 2003-11-10 2005-05-12 Wei-Hung Huang Microcomputer apparatus for executing a given instruction a number of times
US7395531B2 (en) * 2004-06-07 2008-07-01 International Business Machines Corporation Framework for efficient code generation using loop peeling for SIMD loop code with multiple misaligned statements
US20060101256A1 (en) * 2004-10-20 2006-05-11 Dwyer Michael K Looping instructions for a single instruction, multiple data execution engine
US20070150705A1 (en) * 2005-12-28 2007-06-28 Intel Corporation Efficient counting for iterative instructions
TWI335550B (en) * 2006-02-06 2011-01-01 Via Tech Inc Stream processor with variable single instruction multiple data (simd) factor and common special function
US20090327674A1 (en) * 2008-06-27 2009-12-31 Qualcomm Incorporated Loop Control System and Method
US8627304B2 (en) * 2009-07-28 2014-01-07 International Business Machines Corporation Vectorization of program code
CN103946795B (zh) * 2011-12-14 2018-05-15 英特尔公司 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法
US9122475B2 (en) * 2012-09-28 2015-09-01 Intel Corporation Instruction for shifting bits left with pulling ones into less significant bits

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042378B2 (en) 2015-07-31 2021-06-22 Arm Limited Propagation instruction to generate a set of predicate flags based on previous and current prediction data
TWI732775B (zh) * 2015-07-31 2021-07-11 英商Arm股份有限公司 用於資料處理的裝置、方法、電腦軟體、儲存媒體及虛擬機

Also Published As

Publication number Publication date
TWI514274B (zh) 2015-12-21
CN104115113B (zh) 2018-06-05
US20140189296A1 (en) 2014-07-03
CN104115113A (zh) 2014-10-22
WO2013089707A1 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
TWI514274B (zh) 用於迴圈餘數遮罩指令之系統、裝置及方法
TWI756251B (zh) 執行複數的熔合乘-加指令的系統與方法
JP6351682B2 (ja) 装置および方法
JP6238497B2 (ja) プロセッサ、方法、及びシステム
TWI470543B (zh) 用於多精度算術之單一指令多重資料(simd)整數乘法累加指令
TWI575448B (zh) 三個來源運算元浮點加法處理器、方法、系統及指令
KR102451950B1 (ko) 융합된 단일 사이클 증가-비교-점프를 수행하기 위한 명령어 및 로직
TWI512612B (zh) 點積處理器、方法、系統及指令
TWI496077B (zh) 用於緊縮資料運算遮罩比較的方法、設備、系統和機器可讀取儲存媒體
JP5829714B2 (ja) マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム
KR20170097018A (ko) 벡터 브로드캐스트 및 xorand 로직 명령어를 위한 장치 및 방법
TWI769645B (zh) 資料元件比較處理器、方法、系統及指令
JP6673574B2 (ja) ベクトルビットシャッフルを実行するための方法および装置
TWI553553B (zh) 用於產生迴圈對齊計數或迴圈對齊遮罩的系統、設備與方法
JP2014182802A (ja) 演算マスクのマスクされていない要素をコンソリデートするプロセッサ、方法、システム、及び命令
TWI455024B (zh) 唯一封裝資料元件識別處理器,方法,系統,及指令
TWI502490B (zh) 用以處理加法指令之方法、及用以執行加法指令之裝置與系統
JP2018506094A (ja) 多倍長整数(big integer)の算術演算を実行するための方法および装置
US10545757B2 (en) Instruction for determining equality of all packed data elements in a source operand
TW201732571A (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
US20140281395A1 (en) Systems, Apparatuses, and Methods for Reducing the Number of Short Integer Multiplications
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置
KR102321941B1 (ko) 스핀-루프 점프를 수행하기 위한 장치 및 방법
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees