TWI502492B - 封裝資料重整控制索引產生處理器、方法、系統及指令 - Google Patents

封裝資料重整控制索引產生處理器、方法、系統及指令 Download PDF

Info

Publication number
TWI502492B
TWI502492B TW101145985A TW101145985A TWI502492B TW I502492 B TWI502492 B TW I502492B TW 101145985 A TW101145985 A TW 101145985A TW 101145985 A TW101145985 A TW 101145985A TW I502492 B TWI502492 B TW I502492B
Authority
TW
Taiwan
Prior art keywords
instruction
data
package data
control index
sequence
Prior art date
Application number
TW101145985A
Other languages
English (en)
Other versions
TW201349104A (zh
Inventor
Elmoustapha Ould-Ahmed-Vall
Seth Abraham
Robert Valentine
Zeev Sperber
Amit Gradstein
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 TW201349104A publication Critical patent/TW201349104A/zh
Application granted granted Critical
Publication of TWI502492B publication Critical patent/TWI502492B/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride

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)

Description

封裝資料重整控制索引產生處理器、方法、系統及指令
實施例有關於處理器。尤其是,實施例有關於具有包括使用控制索引之指令的指令組的處理器。
許多處理器具有單一指令多重資料(SIMD)架構。在SIMD架構中,封裝資料指令、向量指令或SIMD指令可同時或平行對多重資料元件或多對的資料元件操作。處理器可具有對用以同時或平行執行多重操作之封裝資料指令有反應的平行執行硬體。
多重資料元件可被封裝於一暫存器或記憶體位置內作為封裝資料或向量資料。在封裝資料中,暫存器或其它儲存位置的位元可邏輯劃分成一序列的多重資料元件。舉例來說,一個256位元寬的封裝資料暫存器可具有四個64位元寬的封裝資料元件,八個32位元寬的封裝資料元件,十六個16位元寬的封裝資料元件等等。每一個封裝資料元件可代表可個別操作或獨立於其它的一件獨立個別的資料(例如像素的紅、綠、藍或阿爾發(alpha)顏色成分,或是複數的實數或複數部分等)。
某些SIMD架構具有根據控制索引而將封裝資料元件彈性重整於一或更多來源封裝資料內的指令。此等指令的範例為排列指令及混洗指令。控制索引控制封裝資料如何被指令重整。
在以下說明中,提出許多特定的細節(例如,特定的實施例、方法、運算、指令、數字模式、以及資料格式)。然而,應了解本發明實施例可無此等特定細節而加以實施。在其它例子中,已知電路、結構及技術未予以詳細顯示以便不阻礙本發明說明的了解。
用於排列指令及混洗指令的控制索引典型藉由執行一系列操作於具有來源封裝資料元件之來源封裝資料的通用指令而從頭開始逐步建立。舉例來說,產生控制索引的方法的一部分可包括執行一系列通用封裝資料算數指令以便執行一系列封裝資料算數運算於來源封裝料元件以便最後將來源封裝資料轉換成控制索引。
意圖限制排列及混洗指令之用處的一個因數,以及一般說來其它封裝資料重整指令的是典型需被執行以產生排列控制索引、混洗控制索引或其它封裝資料重整控制索引之指令的數目。可能要數個(例如,約4到10或更多)指令以產生一組控制索引。再者,所需之指令的數目一般會隨著封裝資料元件之總數目的增加而增加,封裝資料元件之總數目會因時間而隨著封裝資料暫存器的位元寬度的增加而增加。
執行此等指令在處理時間、處理器來源利用以及功耗方面是花錢的。此外,此種花費會降低或減損由封裝資料重指令所提供的整體利益。在某些情形中,在控制索引已 被產生及使用之後,控制索引可被拋棄,在此情形中,如有需要,它們可能需要從頭開始被重整。在其它情形中,在控制索引已被產生及使用之後,控制索引可被儲存於主要記憶體中,且接著需要時,它們經由一系統匯流排自該記憶體被擷取。此可有助於避免每當有需要它們時從頭開始產生控制索引,雖然自主記憶體擷取控制索引亦會花費顯著的時間量。
本文揭示的指令可用於產生用於其它指令(例如,排列指令、混洗指令、其它封裝資料重整指令、以及其它使用控制索引的指令)的控制索引。本文亦揭示用以執行指令的處理器、由該處理器於處理或執行該等指令時所執行的方法、以及包含一或更多處理或執行該等指令之處理器的系統。本文別處所揭示的種種處理器及系統亦適用。有利的是,此等指令、處理器、方法、及系統可有助於減少處理時間量及/或需要被執行以產生控制索引的指令數目。
圖1是一種用於處理對產生控制索引之指令的處理器100的示範實施例的方塊圖。處理器可以是任何不同的複雜指令集計算(CISC)處理器、不同的精簡指令集計算(RISC)處理器、不同的極長指令字(VLIW)處理器、其等不同的混合、或完全其它類型處理器。在其它實施例中,雖然沒有要求但處理器可以是通用處理器(例如,通用微處理器)。或者,處理器可以是特別用途處理器。或者,處理器包括但不侷限於只是列舉的一些例子:網路處理器、 通訊處理器、密碼處理器、圖形處理器、協處理器(coprocessor)、嵌入式處理器、數位信號處理器(DSP)、以及控制器(例如,微控制器)。
處理器具有指令集架構(ISA)101。ISA代表有關程式設計的處理器的架構的一部分。ISA一般包括處理器的原生指令、架構暫存器、資料類型、定址模式、記憶體架構、中斷與異常處置、以及外部輸入及輸出(I/O)。ISA與微架構不同,微架構一般代表選來實施ISA的特定處理器設計技術。具有不同微架構的處理器可以共享一共用ISA。
ISA包括架構上可見的或架構暫存器(例如,架構暫存器檔案)102。架構暫存器代表處理器上的儲存位置。架構暫存器於此亦可僅簡單稱為暫存器。除非有特定或明顯為其它方面,於此所使用的詞組架構暫存器、暫存器檔案、以及暫存器係指暫存器對軟體及/或程式員可見的(例如,軟體可見的)暫存器及/或由通用微架構指定來識別運算元的暫存器。此等暫存器係對照於在給定微架構(例如,指令所使用的暫時暫存器、記錄器緩衝器、引退暫存器、由微指令所使用的微架構唯讀暫存器等等)中的其它非架構或非架構可見的暫存器。所繪示的架構可見的暫存器包括封裝資料暫存器103。封裝資料暫存器的每一者可操作來儲存封裝資料、向量資料或SIMD資料。
所繪示的ISA包括受到處理器支援的指令集104。指令集的指令代表相對於微指令(microinstructions或micro- ops(例如,起因於處理器解碼微指令的結果))而言的微指令(例如,提供給處理器執行用的指令)。處理器可包括用以執行指令集之指令的指定或特定邏輯(例如,可能具有某韌體或軟體的電路)。
指令集包括一或更多使用控制索引105的指令。如上述,在某些實施例中,此等可包括一或更多排列指令、混洗指令、或其它封裝資料重整指令106。作為另一選擇,如以下將予以討論者,在某些實施例中,此等可包括一或更多集中指令、或載入指令107,其可操作來聚集或載入來自使用控制索引的處理器外記憶體的非相連資料。
根據本發明實施例,指令集亦包括一或更多可用於產生控制索引108的指令。在某些實施例中,此等可包括一或更多控制索引產生指令109,其等可操作以產生實際控制索引。每一控制索引產生指令可操作來在單一巨集指令的執行的範圍內產生控制索引。相比之下,傳統上一系列通用微指令一般要被執行以便從頭開始逐漸或逐步建立控制索引。
在某些實施例中,指令可包括一或更多控制索引前標產生指令110,其不產生實際控制索引,但其產生控制索引前標。每一控制索引前標產生指令可操作來在單一微指令的執行的範圍內產生控制索引。不需要從頭開始產生實際控制索引,而是控制索引前標可作為有用的起點或領先值,可以被一或更多其它指令有效率地轉換成實際控制索引。有利地,前標的使用可允許實際控制索引更快及/或 以從比從頭開始較少的指令產生。
處理器亦包括執行邏輯111。執行邏輯111可操作以執行或處理指令集的諸指令。
圖2是一種處理封裝資料重整控制索引產生指令之示範實施例之方法212的示範實施例的方塊流程圖。封裝資料重整控制索引產生指令在方塊213被接收。被接收的指令指定或者指出第一目的地位置。在一些態樣中,第一目的地儲存位置可被指令的編碼的位元或一或更多欄位明白指定。在其它態樣中,第一目地儲存位置可含在指令內。
在方塊214,結果儲存在第一目地的位置,回應及/或作為封裝資料重整控制索引產生指令。結果包括一序列的至少四個代表封裝資料重整控制索引的非負整數。至少四個整數典型具有複數個不同值(即,它們不是都為同一整數值)。在不同實施例中,該序列可包括至少八個、至少十六個、至少三十二個、或至少六十四個代表封裝資料重整控制索引的非負整數。該結果及/或該序列的整數可以是本文它處所揭示之結果及/或序列的整數的任一者。在某些實施例中,該結果及/或該序列的整數可以完全產生於單一巨集指令之執行的範圍內(例如,整數的值可以不取決於在程式流程中的先前指令)。
為進一步說明特定概念,且雖然本發明不侷限於此態樣,但封裝資料重整指令的接收發生於方塊215。在種種態樣中,此指令可以是排列指令、混洗指令或另一類型的封裝資料重整指令,根據該封裝資料重整控制索引可操作 以重整資料元件於一或更多來源封裝資料。此指令指出該封裝資料重整控制索引(例如,指定第一目的地儲存位置)。此指令亦指定或者指出至少一具有封裝資料元件的來源封裝資料指定或者指出第二目的地儲存位置。
在方塊216,一封裝資料結果係儲存於該第二目的地儲存位置,以回應於及/或作為封裝資料重整指令的結果。該封裝資料結果包括來自該至少一根據該封裝資料重整控制索引重整的來源封裝資料的資料元件。在某些實施例中,如許多排列及混洗指令的情形中,封裝資料重整控制索引可識別、選擇或者索引在至少一來源封裝資料之內的特定資料元件。被索引的資料元件可被儲存於位置對應於索引的結果資料元件。
圖3是一種處理封裝資料重整控制索引前標產生指令之示範實施例之方法317的示範實施例的方塊流程圖。在方塊318,封裝資料重整控制索引前標產生指令被接收。所接收的指令指定或者指出一目的地儲存位置。
在方塊319,一結果被儲存於目的地儲存位置,以回應及/或作為封裝資料重整控制索引前標產生指令的結果。該結果包括一序列的至少四個代表封裝資料重整控制索引前標的非負整數。該至少四個整數典型上具有複數個不同的值。在各種實施例中,該序列可包括至少八個、至少十六個、至少三十二個、或至少六十四個代表封裝資料重整控制索引前標的非負整數。該結果及/或該序列的整數可以是文中它處所揭示的任何結果及/或序列的整數。 在某些實施例中,該結果及/或該序列的整數可以完全產生於單一巨集指令之執行的範圍內(例如,整數的值可以不取決於在程式流程中的先前指令)。
為進一步說明特定概念,且雖然本發明不侷限於此態樣,但在方塊320,至少一額外的指令(例如,至少一通用算數指令)被執行以將封裝資料重整控制索引前標轉換成封裝資料重整控制索引。該至少一額外指令的第一者可指出該目的地儲存位置為封裝資料重整控制索引前標的來源。
接著,在方塊321,指出該封裝資料重整控制索引的封裝資料重整指令可被執行。該封裝資料重整指令的操作可類似於前述者。
在圖2及圖3中,在方塊215、216、320及321已顯示以較佳說明特定概念。然而,要了解的是本發明並不侷限於在此等方塊執行的操作。其它實施例有關個別封裝資料重整控制索引產生指令的方法及操作,且又有其它實施例有關個別封裝資料重整控制索引前標產生指令,其不侷限於其它後續指令。
圖4是一種可用於處理對產生控制索引之指令的指令處理設備400的示範實施例的方塊圖。此指令處理設備可以是處理器、或可以是處理器的一部分。例如,在某些實施例中,指令處理設備可以是,或可以不是圖1之處理器100或類似者的一部分。或者,指令處理設備可以包含於一不同的處理器,或電子系統(例如本文揭示之其它處理 器或系統)。
指令處理設備可接收可用於產生控制索引的指令408。該指令在本文它處可代表可用於產生控制索引之指令的各種實施例的任一者。該指令可代表機器指令、巨集指令或類似控制信號。指令處理設備具有特定或特別電路或其它邏輯(例如,可能與韌體及/或軟體結合的硬體)可操作來處理指令及/或回應該指令、作為該指令的結果及/或根據該指令來儲存結果。
所示的指令處理設備包括指令解碼器422。該解碼器可接收及解碼較高階機器指令或巨集指令,並輸出一或更多低階微運算、微碼入口點、微指令,或其它自來源較高階指令反射及/或導出的低階指令或控制信號。該等一或更多低階指令或控制信號可透過一或更多低階(例如,電路層或硬體層)操作來實施該較高指令。該解碼器可用各種不同機制加以實施,包括但並不侷限於微碼唯讀記憶體(ROM)、查找表、硬體實施、可程式邏輯陣列(PLA)以及其它用來實施習知解碼器的機制。
或者,不使用解碼器422,在一或更多其它實施例中,取而代之的是,該設備可有一指令仿真器、轉譯器、編輯器、解譯器或其它指令轉換邏輯。各種類型的指令轉換邏輯是習知的且可實施於軟體、硬體、韌體或其等之組合。該指令轉換邏輯可接收該指令、仿真、轉譯、編輯、解譯或者將其轉換成一或更多對應之導出的指令或控制信號。在其它實施例中,指令處理設備可同時具有指令轉換 邏輯及解碼器二者。例如,指令處理設備可具有將導出指令轉換成一或更多中間指令的指令轉換邏輯,以及將該一或更多中間指令解碼成一或更多可由指令處理設備之原生硬體執行的低階指令或控制信號的解碼器。一些或全部的指令轉換邏輯可離開指令處理設備的其餘部分而位在晶粒外(off-die),諸如在一不的晶粒上或在一晶粒外記憶體內。
再參照圖4,可用於產生控制索引408的指令明白指定(例如,透過一或更多欄位),或者指出(例如,隱含指出)一目的地儲存位置427。如所示,在某些實施例中,目的地儲存位置可以在指令處理設備的一組封裝資料暫存器403之內。或者,目的地儲存位置可以是另一暫存器或記憶體位置。封裝資料暫存器係架構可見之在處理器上的儲存位置,其可使用習知技術且不侷限於任何特定類型電路在不同微架構中以不同方式實施。只要能夠如此處所述地儲存及提供資料,各種不同類型暫存器都適合。適合類型的暫存器的例子包括但不侷限於專用實體暫存器、使用暫存器重新命名之動態分配實體暫存器、以及其等之組合。
指令處理設備亦包括執行單元423。執行單元係與解碼器422及目的地儲存位置427耦合。執行單元可自解碼器接收一或更多微運算、微碼入口點、微指令、其它指令、或其它控制信號,其反射或導出自指令408。藉由示例,執行單元可包括一算術邏輯單元、邏輯單元、算術單元、功能單元之類者。執行單元可包括可能具有其它邏輯 (例如,軟體、硬體、或組合)之特定或特別硬體邏輯(例如,積體電路),其可操作來執行指令(例如,執行一或更多微指令)及/或儲存回應該指令之結果。
執行單元回應指令408之指令及/或作為其結果,可操作以儲存結果428於目的地儲存位置427。如所示,在實施例中,該結果可包括一序列的至少四個整數。在指令408為一控制索引產生指令的實施例中,該等整數的每一者可代表一控制索引。在指令408為一控制索引前標產生指令的實施例中,該等整數的每一者可代表一控制索引前標。
在某些實施例中,執行單元可包括計算邏輯424,其可操作以計算該序列之至少四個整數。此等可為特別用途或特定電路(例如,使用行掃描方式計算整數,反覆計算整數等等)。在某些實施例中,執行單元可回應該指令而自記憶體426(例如,與執行單元在晶粒上的非架構可見唯讀記憶體(ROM))存取該序列之至少四個整數425的預先存在的複本。見例如以下圖16的討論。在此等實施例中的每一者中,該序列的整數典型不自晶片外主記憶體或透過系統匯流排存取。
在某些實施例中,該結果可包括一序列的至少四個、至少八個、至少十六個、至少三十二個、或至少六十四個依一數值模式的非負整數。在某些實施例中,依照該數值模式的整數可以是依數值順序(例如,0、1、2、3、4、5、6及7)的連續非負整數。在其它實施例中,依照該數 值模式的整數可以是依數值順序的非負整數,所有在連續位置的整數相差至少二個固定整數間隔。在某些實施例中,此間隔可以等於二,且該序列的整數可以是一序列依一數值順序的連續相同奇偶整數。例如,該連續相同奇偶整數可以是連續偶整數(例如,0、2、4、6、8、10、12及14),或是連續奇整數(例如,1、3、5、7、9、11、13及15)。在其它實施例中,間隔(N)可以大於二(例如,間隔可以是3、4、8、16等等),且該序列的整數可包括該間隔的連續倍數(例如,0、N、2N、3N、4N、5N、6N及7N)。
在某些實施例中,指令可明白指定或者指出一或更多數值模式界定參數(例如,整數偏移、固定整數間隔、整數旋轉量、整數偏移與固定整數間隔等等)。在某些實施例中,指令可包括正整數偏移(K),且該等數數的最小者以該整數偏移(K)從零偏移(例如,在連續整數的情形,K、K+1、K+2、K+3、K+4、K+5、K+6及K+7)。在某些實施例中,指令可指出一正整數偏移(K)以及一固定整數間隔(N),且該等整數可以是自零偏移之該間隔的連續整數倍數(例如,K、N+K、2N+K、3N+K、4N+K、5N+K、6N+K及7N+K)。或者,就可用於產生控制索引的指令之各種實施例而言,該結果及/或該序列的至少四個整數可以是本文它處所揭示之該等結果及/或該等序列的至少四個整數的任一者。在某些實施例中,該數值模式完全根據或至少主要根據該指令的一運算碼、或該運算碼與一或更 多數值模式界定參數,或以該運算碼、或該運算碼與該一或更多界定參數之數值模式固定。在其它實施例中,該序列的整數不需要依照一數值模式(例如,它們可以是看起來隨機的)。
為避免阻礙說明,已顯示及描述一相對簡單的指令處理設備400。在某些實施例中,指令處理設備可隨意地包括其它眾所周知的組件,例如像是,指令提取單元、指令排程單元、分支預測單元、指令與資料快取、指令與資料轉譯旁看緩衝區、預取緩衝、微指令佇列、微指令定序器、匯流排介面單元、第二或較高階快取、引退單元、暫存器重新命名單元、其它包含於處理器的組件、以及各種其等的組合。實施例可具有多核心、邏輯處理器、或執行引擎。此處揭示之可操作來執行指令實施例的一執行單元,可包含於至少一、至少二、最多、或所有的核心、邏輯處理器、或執行引擎。應了解到,處理器中確實有許多不同的組值組合及組態,且本發明的範圍並不侷限於任何特定組合或組態。
圖5是一種處理指令之方法530的示範實施例的方塊流程圖,該指令儲存一序列的至少四個依一數值模式的非負整數。在方塊531,指令被接收。指令指定或者指出一目的地儲存位置。
在方塊532,一結果被儲存於該目的地儲存位置,以回應該指令及/或作為該指令的結果。該結果包括一序列的至少四個依照一數值模式的非負整數。在各種實施例 中,該結果可包括一序列的至少八個、至少十六個、至少三十二個、至少六十四個、或甚至更多依一數值模式的非負整數。該序列的整數可以是任何依照文中它處所揭示之各種數值模式之任一序列的整數。通常,至少二個、至少四個、至少一半、或甚至所有整數可具有一不同的值(即,諸整數典型上不全相同)。
圖6是一種用於產生控制索引之指令608的指令格式的示範實施例的方塊圖。該指令格式包括運算碼633。該運算碼可代表複數個位元或一或更多欄位的指令格式以識別該指令。該指令格式亦包括一目的地儲存位置634。在繪示的實施例中,指令格式包括複數個位元或一或更多欄位的指令格式以明白指定該目的地儲存位置。或者,該目的地儲存位置可隱含指出該指令。
在某些實施例中,指令格式不明白指定、隱含指出、或者指出一具有要被指令635操作的封裝資料元件的架構可見來源儲存位置(例如,一封裝資料暫存器或一主記憶體位置)。在本發明的實施例中,序列的整數、控制索引、以及控制索引前標,其被文中揭示的指令所儲存,而不自架構可見的來源儲存位置中的封裝資料元件計算出或者導出。相比之下,如於本案的先前技術所討論者,照慣利,典型藉由執行一系列會對架構可見的來源封裝資料暫存器內封裝資料元件操作的通用指令(例如,通用封裝資料算術指令),直到封裝資料元件最後被轉換成排列或混洗控制索引,從頭開始逐步建立排列及混洗控制索引。在 本發明實施例中,於此揭示之被指令儲存的序列的整數、控制索引、及控制索引前標完全產生於單一巨集指令之執行的範圍內,且不根據任何依程式順序的先前指令的結果。
在某些實施例中,指令格式可具有一或更多運算元及/或一或更多立即明白指定一或更多數值模組界定參數636。或者,指令可被隱含指出一或更多數植模式界定參數(例如,透過由指令隱含指出的暫存器而提供)。一或更多模式界定參數的每一者可影響儲存作為該指令之結果的整數的結果或序列。一或更多模式界定參數的模式每一者可影響在該序列或結果中的每一整數的值。一或更多模式界定參數的每一者可以用以評估數值模式界定方程式或關係對指令而言是隱含的。適合的數值模式界定參數的一些代表性例子包括但不侷限於自零的整數偏移、整數間隔、整數旋轉量、及其等之組合(例如,與整數間隔共同的自零的整數偏移)。
在其它實施例中,指令可以不指定或指出任何數值模式界定參數。在某些實施例中(例如,在指令不指定或者指出任何數值模式界定參數的實施例中),指令可不具有(指定或者指出)任何來源運算元637。
圖7A是一方塊圖,說明在某些實施例中,被指令708A儲存於目的地儲存位置727A之在結果728A中的一序列的整數740A可以具有完全根據或至少主要根據738在該指令之運算碼733A的數值模式。該指令具有該運算 碼及位元或一或更多欄位734A來指定目的地儲存位置727A。要注意此實施例的指令不指定或者指出任何數值模式界定參數,或任何就此而言的來源運算元。此指令執行使結果儲存於目的地儲存位置。結果包括具有該數值模式的序列整數。在此等實施例中,該序列的整數的數值模式完全根據或至少主要根據該指令的運算碼。在此等實施例中,該序列的整數的數值模式對指令的運算碼是固定或恆定的。舉例來說,在該序列中的連續整數間的差可完全根據或至少主要根據該指令的運算碼及/或固定或恆定的指令的運算碼。當識別該運算碼時,該序列的整數及其等數值模式可為固定的(即,可不取決於任何指令的來源運算元)。在某些實施例中,指令/運算碼可能只能夠儲存一特定序列的整數及/或一特定數值模式。藉由比較,當通用算術指令對來源封裝資料運算來產生排列或混洗控制索引時,該排列或混洗控制索引不具有完全根據或甚至主要根據通用算術指令的運算碼,反而是根據該來源封裝資料。
圖7B是一方塊圖,說明在某些實施例中,被指令708B儲存於目的地儲存位置727B之在結果728B中的一序列的整數740B可以具有一數值模式,其部分根據739該指令之運算碼733B以及部分根據一或更多由該指令所指出之數值模式界定參數736。數值模式完全或至少主要根據該運算碼及一或更多數值模式界定參數。該指令具有該運算碼、位元或一或更多欄位734B來指定目的地儲存位置727B,且指定或者指出該一或更多數值模式界定參 數736。該指令的執行使該結果儲存於目的地儲存位置。該結果指出該序列具有該數值模式的整數。在此等實施例中,該序列的整數的數值模式部分根據該指令的運算碼且部分根據該一或更多由該指令指出的數值模式界定參數,但完全或至少主要根據該運算碼及該一或更多數值模式界定參數(即,不根據由前一指令所儲存作為一結果的來源封裝資料)。
圖8是一種用以產生控制索引之處理指令的方法830的示範實施例的方塊流程圖,該指令儲存一序列的至少四個依一數值順序的連續非負整數。該指令在方塊831接收。該指令指定或者指出一目的地儲存位置。
在方塊832,一結果儲存於目的地儲存位置,以回應該指令及/或作為該指令的結果。該結果包括一序列的至少四個依數值順序的連續非負整數。在某些實施例中,該結果可包括一序列的至少八個、至少十六個、至少三十二個、或至少六十四個、或甚至更多依一數值模式的非負整數於該目的地儲存位置。在各種實施例中,該序列的連續整數可包括任何顯示於表1-3中者。
表1列出不同數目之整數依遞增數值順序之序列的連續非負整數的示範實施例。
依遞增數值順序,整數的值隨著目的地儲存位置之遞增位元有效值增加(例如,最小整數要儲存最接近暫存器的最低階位元,且最大整數要儲存最接近暫存器的最高階位元)。在每一此示範例中,最小整數是零。在某些實施例中,指令/運算碼可能只能夠儲存一序列選自表1的整數(即,其不能夠儲存其它整數),雖然此對其它實施例並不要求。此種序列之依遞增數值順序的連續整數特別用於控制索引前標,因為它們可以是快速、有效率且多用途、以有一或一些額外指令算術上或邏輯上轉換成廣範圍之用於控制索引的不同序列的整數。
表2列出不同數目之整數依遞減數值順序之序列的連續非負整數的示範實施例。
依遞減數值順序,整數的值隨著目的地儲存位置之遞減位元有效值減小。在某些實施例中,指令可具有一或更多位元用來指出整數是否要依遞增或遞減數值順序儲存以便允許一指令/運算碼供其者一者使用。此種依遞減順序之序列的連續整數係用以映射封裝資料重整。在映射封裝資料重整的例子中,在封裝資料源中的資料元件繞封裝資料源的中心被「映射」。舉例來說,在一來源中一較高階資料元件中成為一結果中一最低階資料元件,在該來源中一次最高階資料元件成為在該結果中一次最低階元件,等等,到使在該來源中一次最低階資料元件成為在該結果中一次最高階資料元件,以及使在該來源中一次最低階元件成為該結果中一次最高階資料元件。
表3列出依遞增數值順序之序列的連續非負整數的示範實施例,該等不同數目的整數具有自零以一整數偏移(K)的最小整數偏移。
如所示,該等整數的一最小者可是自零以偏移的偏移且可具有該偏移的值。藉由例子,該整數偏移(K)可隨意被加到表1所示之序列的整數的每一者。考量依遞減數值順序的連續非負整數的類似實施例。此種依遞減數值順序的連續非負整數,其為自零以一可變正整數偏移(K)的偏移,可用於有助於自二對齊封裝資料取不對齊的封裝資料以避免需要執行不對齊的載入(見例如圖9的討論)。
在某些實施例中,指令可明白指定(例如,透過來源運算元或立即)或者指出(例如,隱含指出一暫存器具有)整數偏移(K)。偏移(K)代表模式界定參數的一範例實施例,其影響依該數值模式之整數的每一者的值,該數值模式根據該數值模式。
在某些實施例中,結果可包括依數值順序的旋轉連續 非負整數,其已以一整數旋轉量(R)被旋轉。表4列出一序列依遞減數值順序的連續非負整數的示範實施例,對於不同數目的整數而言,已以一整數旋轉量(R)被旋轉。
如所示,每一整數依旋轉方向旋轉,且當轉出一端時即轉入另一端。在某些實施例中,該指令可明白指定(例如,透過一來源運算元或立即)或者指出(例如,隱含指出一暫存器具有)旋轉量(R)。旋轉量(R)代表模式界定參數的示範實施例,其影響依數值模式的整數的每一者的值,且數值模式根據該數值模式。該等整數可向右旋轉或向左旋轉。在某些實施例中,該指令亦可明白指定或隱含指出一旋轉方向。考量依遞減數值順序的連續非負整數的類似實施例。此等旋轉連續整數可用於旋轉封裝資料元件。此等旋轉連續整數可用於旋轉小於完全向量大小之序列中的封裝資料元件。
圖9是說明一種封裝資料重整操作的示範實施例的方 塊圖,使用封裝資料重整控制索引用以自二對齊的封裝資料擷取不對齊的封裝資料以避免需要執行不對齊的載入,該封裝資料重整控制索引具有依數值順序之偏移連續整數的值。該操作可被執行以回應一封裝資料重整指令。
該封裝資料重整指令可指出具有八個資料元件A0 -A7 的第一來源封裝資料942、具有八個資料元件B0 -B7 的第二來源封裝資料943、具有八個資料元件C0 -C7 的第三來源封裝資料944,其各包括八個封裝資料重整控制索引I0 -I7 的一對應者,以及一結果封裝資料945。藉由例子,控制索引I0 -I7 的每一者可為4位元寬且可包含於該對應封裝資料元件C0 -C7 的最低有效4位元,其可為8位元、16位元、32位元、或64位元寬。其它指令可使用其它數目的資料元件及控制索引。
結果封裝資料945被產生及儲存以回應該封裝資料重整運算/指令。在此實施例中,封裝資料重整控制索引的每一者對應到一對應位元位置中的結果資料元件。每一控制索引可操作以選擇要被儲存入對應結果資料元件之第一與第二來源封裝資料(即,A0 -A7 或B0 -B7 的任一者)的十六個資料元件的任何一者。例如,第一控制索引I0 可操作以選擇要被儲存於該結果封裝資料之第一結果封裝資料元件之A0 -A7 或B0 -B7 的任一者。四個位元足以唯一地選擇該十六個來源資料元件的任何一者。根據一可能轉換,控制索引具有0的值以選擇A0 、1的值以選擇A1 、2的值以選擇A2 、3的值以選擇A3 、4的值以選擇A4 、5的值以選擇 A5 、6的值以選擇A6 、7的值以選擇A7 。控制索引具有8的值以選擇B0 、9的值以選擇B1 、10的值以選擇B2 、11的值以選擇B3 、12的值以選擇B4 、13的值以選擇B5 、14的值以選擇B6 、15的值以選擇B7
在此實施例,封裝資料重整控制索引具有依數值順序的偏移連續整數的值。尤其,控制索引I0 、I1 、I2 、I3 、I4 、I5 、I6 、I7 分別具有2、3、4、5、6、7、8及9的值。如所示,此等控制索引可操作以選擇A2 、A3 、A4 、A5 、A6 、A7 、B0 及B1 給該結封裝資料的八個資料元件。利用此等索引的操作合併A2 -A7 與B0 -B1 。不是需要執行不對齊的載入來合併A2 -A7 與B0 -B1 ,可利用依數值順序之該偏移連續整數來執行此合併。
同理,可以清楚見到可以如何使用依遞減數值順序的連續整數來執行映射封裝資料元件重整。再者,可以清楚見到可以如何使用旋轉連續整數來旋轉封裝資料元件。
圖10是一種處理指令之方法1030的示範實施例的方塊流程圖,該指令儲存一序列的至少四個依一數值順序的非負整數,所有在連續位置的整數相差一至少二的固定整數間隔。在方塊1031,指令被接收。該指令指定或者指出目的地儲存位置。
在方塊1032,一結果儲存於目的地儲存位置以回應該指令及/或作為該指令的結果。該結果包括一序列的至少四個依數值順序的非負整數,所有在連續位置的整數相差一至少二的固定整數間隔。在某些實施例中,該結果可包 括一序列的至少八個、至少十六個、至少三十二個、或至少六十四、或甚至更多個依數值順序的非負整數,所有在連續位置的整數相差一至少二的固定整數間隔。
固定間隔代表在目的地儲存位置中連續位置的整數的值之間一固定的差。在各種實施例中,該間隔可為二、三、四、或更多。被二、三、及四的固定間隔隔開的整數尤其可用於處理重覆排列成對/二元組資料(例如,成對的實與虛數,或其它成對的資料)、三元組資料(例如,RGB或其它顏色成分資料)、以及四元組資料(例如,RGBA或其它顏色成分加透明性/不透明性資料)。即使較大間隔可用於收集收集來自記憶體之非相連資料的指令之控制索引(例如,來自表或其它結構化資料分配)。在某些實施例中,該指令可能只能夠儲存一序列的整數,其中連續整數相差一固定間隔,雖然其它實施例並非如此限制。
圖11是一種處理指令之方法1130的示範實施例的方塊流程圖,該指令用以產生控制索引,其儲存一序列的至少四個依一數值順序的非負的相同奇偶(例如全部偶數或全部奇數)整數。在方塊1131,指令被接收。該指令指定或者指出一目的地儲存位置。
在方塊1132,一結果儲存於目的地儲存位置以回應該指令及/或作為該指令的一結果。該結果包括一序列的至少四個依數值順序之非負的相同奇偶整數。整數的奇偶意指其是否為偶或奇。偶整數具有相同奇偶,且奇整數具有相同奇偶,其為與偶數不同的奇偶。在某些實施例中,該 結果可包括一序列的至少八個、至少十六個、至少三十二個、至少六十四個、或更多依一數值模式的偶整數(例如,連續偶整數)。在其它實施例中,該結果可包括一序列的至少八個、至少十六個、至少三十二個、至少六十四個、或更多依一數值模式的奇整數(例如,連續奇整數)。
表5列出不同數目之整數依遞增數值順序之序列的連續偶整數的示範實施例。
表6列出不同數目之整數依遞增數值順序之序列的連續奇整數的示範實施例。
在某些實施例中,指令/運算碼可能只能夠儲存一序列選自表5或6的整數(即,其可能不能夠儲存其它整數),雖然其它實施例不要求。此種序列的連續偶或奇整數尤其用於處理重覆排列成對/二元組資料,例如像是,成對的代表複數的實與虛數,以及其它成對的資料。例如,此等序列的連續偶及奇整數可被用來使一類型的成對或二元組資料彼此分隔、隔離或去交錯(例如,分隔實數與虛數)。見例如圖12的討論。
在其它實施例中,一整數偏移(K)可隨意加到相同奇偶整數的每一者。在其它實施例中,該序列的相同奇偶整數可被旋轉一整數旋轉量(R)。在其它實施例中,該相同奇偶整數可依遞減數值順序。
圖12是說明一種封裝資料重整操作的示範實施例的方塊圖,使用封裝資料重整控制索引,用以區隔實數(R)與虛數(IM),該封裝資料重整控制索引具有依遞增數值順序之連續偶數整數的值。該運算可回應一封裝資料重整指令而運算。
該指令可指出具有八個資料元件R0 、IM0 、R1 、IM1 、R2 、IM2 、R3 、IM3 的第一來源封裝資料1242、具有八個資料元件R4 、IM4 、R5 、IM5 、R6 、IM6 、R7 、IM7 的第二來源封裝資料1243、具有八個資料元件C0 -C7 的第三 來源封裝資料1244,各包括八個封裝資料重整控制索引I0 -I7 的一對應者,及一結果封裝資料1245。在第一及第二來源封裝資料中,實數(R)與虛數(IM)是交錯的。藉由例子,該控制索引I0 -I7 的一者可為4位元寬且可包含於該對應封裝資料元件C0 -C7 的最低有效4位元。
結果封裝資料1245被產生及儲存以回應該封裝資料重整運算/指令。在此實施例中,封裝資料重整控制索引的每一者對應到一對應位元位置中的結果資料元件。在此實施例中,該封裝資料重整控制索引具有依遞增數值順序的連續偶整數的值。尤其,控制索引I0 、I1 、I2 、I3 、I4 、I5 、I6 及I7 分別具有0、2、4、6、8、10、12及14的值。如所示,此等控制索引可操作以選擇並儲存實數R0 、R1 、R2 、R3 、R4 、R5 、R6 及R7 於該結果封裝資料的八個資料元件。此實質上將實數(R)與虛數(IM)去交錯或分隔。
在替代實施例中,可使用具有依遞增數值順序之連續奇整數的值的控制索引來實施類似的封裝資料重整運算,以分隔虛數(I)與實數(R)。尤其,控制索引I0 、I1 、I2 、I3 、I4 、I5 、I6 及I7 分別具有1、3、5、7、9、11、13及15的值,以便選擇並儲存實數IM0 、IM1 、IM2 、IM3 、IM4 、IM5 、IM6 及IM7 於該結封裝資料的八個資料元件。再者,具有依數值順序之連續偶或奇整數亦可用於分隔其它類型成對或二元組資料。
在其它實施例中,該區隔可大於二。表7列出不同數 目之整數依數值順序之序列的連續偶整數的示範實施例,在連續位置的整數相差大於二的固定整數間隔。
此等僅是一些說明例。為簡明目的,雖然亦考量其它數目(例如,32、64等),但僅顯示四、八、或十六個控制索引或控制索引前標的例子。此外,為簡明目的,雖然亦考量其它數目(例如,5、6、10、16等),但僅顯示間隔的代表範例(例如,3、4及8)。考量其它實施例,其中該序列的整數依遞減數值順序,自零偏移且/或被旋轉。
圖13是一種處理可用於產生控制索引之指令之方法1330的示範實施例的方塊流程圖,該指令儲存一序列的至 少四個依一數值順序的整數,其中最小的整數以該偏移(K)自零偏移,且其中所有在連續位置的整數彼此相差該間隔(N)。在方塊1331,指令被接收。該指令指定或者指出一目的地儲存位置。
在某些實施例中,指令可明白指定或者指出一整數偏移(K)及一固定整數間隔(N)。在某些實施例中,該指令可具有明白指定該偏移(K)及/或該間隔(N)之一來源運算元及一立即的至少一者。作為另一選擇,該指令可隱含指出提供該偏移(K)及/或該間隔(N)的暫存器。在某些情形中,該偏移可為零,或在其它情形中,其可為非零正整數。固定整數間隔為一或更大的正整數。該指令可設定該偏移(K)及該間隔(N)的每一者來得到適合所欲之控制索引之所欲的數值模式。
在方塊1332,一結果儲存於目的地儲存位置,以回應該指令及/或作為該指令的結果。該結果包括在目的地儲存位置中一序列的至少四個依數值順序的非負整數,其中最小的整數為自零偏移(K)的偏移,且在連續位置的所有整數彼此相差該間隔(N)。在該目的地儲存位置中位置(i)的整數值可等於該間隔(N)乘以該位置(i)加到該偏移(K)。數學上,此可以整數表示位置(i)=(N*i+K),其中i的範圍從零到比該序列中整數總數目小一者(例如,對於第一整數而言i為零,對於第二整數而言i為1,等等)。
表8列出不同數目之整數依數值順序之序列的整數的示範實施例,其中最小的整數以該偏移(K)自零偏移,且 其中所有在連續位置的整數彼此相差該間隔(N)。
如上所討論,依數值順序的連續非負整數可用於且適用於產生種種不同整數序列及/或數值模式。在某些實施例中,儲存依數值順序之連續非負整數的指令可與一應用間隔及偏移的指令共用以產生有數個有用的數值模式的其中一者。
圖14是一種處理第一控制索引前標產生指令之方法1446的示範實施例的方塊流程圖,該指令儲存一序列的依一數值順序的連續非負整數,且一第二指令對依數值順序之連續非負整數的每一者加一間隔及一偏移。
在方塊1431,該第一控制索引前標產生指令被接收。該指令指定或者指出一第一目的地儲存位置。
在方塊1432,一第一結果儲存於該第一目的地儲存位置以回應該第一指令。該結果包括一序列的至少四個依數值順序之連續非負整數。在某些實施例中,該結果可包括以上表1所示之該等序列的整數的其中一者。
在方塊1447,指出該序列的該至少四個依數值順序的連續整數(例如,明白指定該第一目的地儲存位置為一來源)的一第二指令被接收。該第二指令指出一第二目的地儲存位置且指出一間隔(N)及一偏移(K)。在某些實施例中,該第二指令可具有至少一運算元及/或立即以明白指定該間隔及該偏移。
在方塊1448,一第二結果儲存於該第二目的地儲存位置以回應該第二指令,以回應該第二指令。該第二結果包括一序列的至少四個依數值順序的非負整數,其中所有在連續位置的整數彼此相差該間隔(N),且其中最小的整數自零偏移該偏移(K)。在某些實施例中,該至少四個連續整數的每一者可乘以間隔(N),且該偏移(K)可被加到每一乘積。例如,間隔(N)可被傳送進複數個在一第一暫存器的間隔(N)的值,偏移(K)可被廣播傳送進複數個在一第二暫存器的偏移(K)的值,且該四個至少連續整數的每一者可乘以第一暫時暫存器且結果乘積可被加到第二暫時暫存器。第二結果之序列的整數可依照數值模式(N*i+K)。
圖15是一儲存RGBA(即,紅、綠、藍、阿爾發(Alpha)) 四元組資料的來源封裝資料1542的方塊圖。RGBA資料代表顏色成分加透明性/不透明性資料。RGBA資料通常用於電腦及其它具有顯示器/螢幕的電子設備。特別繪示的封裝資料運算元具有十六個資料元件。在圖式中,該十六個資料元件分別儲存R0 、G0 、B0 、A0 、R1 、G1 、B1 、A1 、R2 、G2 、B2 、A2 、R3 、G3 、B3 、A3 。在某些實施例中,數值模式或序列的整數可對四元組資料運算來執行有用的運算。
表9列出執行種種用以對RGBA資料或其它4元組資料之序列的整數的示範實施例。此等序列的許多者用於四元組資料。
注意此等數值模式具有四個整數的一重覆單元,使得每四個整數該模式就重覆一次。此等僅是一些例子。亦可考量執行其它操作的序列。
其它實施例不需要使用具有數值模式的封裝資料重整 控制索引。一般而言,只要可用於控制索引或控制索引前標,便可使用任何序列的整數。
整數可具有適合控制索引或控制索引前標的值。通常,封裝資料重整指令使用控制索引,其等可運算來索引或選擇4來源封裝資料元件、8來源封裝資料元件、16來源封裝資料元件、32來源封裝資料元件、64來源封裝資料元件、或在某些情況下128來源封裝資料元件的任一者。在實施例中,在序列中的每一整數可具有範圍從零到一上限的值,該上限為比與資料元件的總數目小一,相關聯的封裝資料重整在資料元件之間索引。例如,在各種實施例中,整數值範圍可都從0到127以便索引或選擇128來源封裝資料元件的任一者,範圍可從0到63以便索引64資料元件的任一者,範圍可從0到31以便索引32資料元件的任一者,範圍可從0到15以便索引16資料元件的任一者,或是範圍可從0到7以便索引8資料元件的任一者。在某些實施例中,指令/運算碼不能夠儲存此等範圍以外的整數,雖然其它實施例並不要求。可用於產生用於集中或載入自記憶體(例如,從表)載入非相連資料的指令的控制索引通常具有稍微大於整數值的範圍。
各種ISA具有一或更多指令,其自非相連記憶體位置載入資料,或儲存資料到非相連記憶體位置。此等指令的例子包括但不侷限於集中及分散指令。藉由例子,使用透過該等集中指令之來源所提供的集中索引向量,集中指令可從多非相連記憶體位置將多資料元件集中或載入到一結 果封裝資料。使用透過該等分散指令之來源所提供的集中索引向量,該分散指令可從一來源封裝資料將多資料元件散布或儲存進多重非相連記憶體位置。在某些實施例中,於此揭示的控制索引產生指令可用來產生用於此等集中及/或分散指令及/或用於存取記憶體中非相連位置之其它指令。例如,於此所揭示之控制索引產生指令可用於產生集中索引向量及/或分散索引向量,其可分別被該集中或分散指令指出為來源運算元。
集中及分散指令可用於各種不同目的。在某些實施例中,該集中及分散指令分別被用來從表或其它正規分配的資料結構載入或儲存資料到表或其它正規分配的資料結構。作為一例子,當該資料依主欄(column-major)順序儲存時,集中及分散指令可被用來存取二維陣列的一列。作為其它例子,當該資料依列主(row-major)順序陣列儲存時,集中及分散指令可被用來存取陣列的一行。其它例子包括在多維陣列中存取資料。於此等例子中,於此所揭示之序列或控制索引可用以產生、或以產生來幫助集索引向量及/或分散索引向量。通常,自主欄順序陣列中的列存取資料時,或是自列主順序陣列中的行存取資料時,可使用於文中別處所揭示的固定間隔。如前述,可使用文中所揭示的間隔值及偏移值來產生集中索引向量及/或分散索引向量。藉由例子,間隔可根據列長度及/或在該列範圍內的行位置。集中或分散指令接著可指定該集中索引向量及/或分散索引向量為一來源。
或者,在其它實施例中,從非相連記憶體位置載入資料的指令(例如,集中指令)或儲存資料到非相連記憶體位置(例如,分散指令)可加上控制索引產生能力,如文中它處所述者。舉例來說,在某些實施例中,集中指令及/或分散指令可指出具有一或更多間隔及偏移,且該集中及/或分散指令可操作來同時使用該信號接收器及/或該偏移來產生控制索引與在單一集中及/或分散指令的執行範圍內執行該集中及/或分散操作。使用前面提及之間隔及偏移的不同可能性亦可被此等指令所使用。此等指令的一可能好處在於可能不需要向量定標索引基礎(SIB),其可能允許收回傳統的SIB及/或一較短指令編碼。
考量產生控制索引及/或控制索引前標的不同方式。在某些實施例中,一序列的整數可在製造時被儲存於處理器的記憶體(例如,在應用程式碼的運行時間執行之前),且如於此所揭示的指令(例如,包括於在運行時間的應用程式碼中)可操作來當它們在運行時間被執行時從該記憶體存取該序列的整數。
圖16是一處理器1600的示範實施例的方塊圖。該處理器包括解碼與執行單元1623、封裝資料暫存器1603、以及唯讀記憶體(ROM)1650。該ROM具有多重非架構可見儲存位置1651。此等位置的每一者儲存不同序列的整數。例如,第一儲存位置1651-1儲存第一序列的整數(例如,1、2、3、4、5、6及7),第M個儲存位置1651-M儲存第M序列的整數(例如,0、2、4、6、8、10、12及 14),以及第N個儲存位置1651-N儲存第N序列的整數(例如,0、1、3、5、7、9、11、13及15)。儲存於此等儲存位置的序列的整數代表預定序列的整數。該等儲存位置可儲存完全文中揭示之任何該等序列的整數,以及其它序列。典型上,可儲存一或幾個(例如,從二到約十或更多)較常使用的序列的整數及/或從頭始產生之相對較價昂之序列的整數。
解碼與執行單元1623接收一可用來產生控制索引的指令1608。該指令指出一目的地儲存位置1627,其在某些實施例中可在封裝資料暫存器1603中。在某些實施例中,該指令(例如,該指令的一運算碼)可隱含指出該ROM且該指令可指出其中一非架構可見的儲存位置。在某些此種實施例中,該一被指出的非架構可見的儲存位置對該指令而言可以是固定的或隱含的(例如,對該指令而言是固定的或隱含的)。在某些此種實施例中,該指令可具有一或更多位元以明白指定或選擇該一非架構可見的儲存位置。例如,在某些實施例中,該指令可分別具有一、二、三、四、或更多位元來在二、四、八、或十六不同預定序列的整數之中選擇。有利的是,依此方式,一指令/運算碼可能夠在多序列的整數之中選擇。
在繪示範例中,該指令指出第M個非架構上可見的儲存位置1651-M。回應於該指令,該執行單元可存取第M序列的整數(例如,0、2、4、6、8、10、12及14),且將它們儲存在目的地儲存位置1627。在此種實施例中,第M 序列的整數不需要被產生或計算,但可僅僅從該ROM存取預先存在/預先儲存的值。此可允許在單一指令的執行範圍內快速且有效率提供該序列的整數。在某些實施例中,該ROM可以與處理器及/或該解碼與執行單元在晶粒上,使得不需要從一晶片外主記憶體或其它來源及/或透過系統匯流排來存取該序列的整數。
處理器通常包括晶粒上的ROM以儲存各種不同類型的資訊(例如,處理器識別資訊、密碼金鑰、組態資訊等等)。通常在此種ROM中有可用的空間來儲存一或更多序列的整數,如本文所揭示者。或者,一專用ROM、一唯讀暫存器、一非架構可見的暫存器、或另一非架構可見的儲存空間可被包含在晶粒上以儲存一或更多序列的整數,如此所揭示。作為另一選擇,一或更多序列的整數可被燒進一處理器的一次可編程熔絲內,或者與一處理器及/或執行單元預先儲存或預先設置在晶粒上。
在某些實施例中,可使用行掃描(column-sweep)方法來產生依數值順序之數值模式的整數。例如,為產生連續整數,一1的值可傳遍九個元件以得(A)。接著,具有1的被廣播傳送值的該等元件的一副本可向左移位以得(B)。接著(A)與(B)可相加以得(C)。接著(C)可向左移二個以得(D)。接著(C)和(D)可相加以得(E)。接著(E)可向左移四個以得(F)。接著(E)和(F)可相加以得(G),等等。
111111111 (A)
11111111 (B)
222222221 (C)
2222221 (D)
444444321 (E)
44321 (F)
887654321 (G)
相較於純粹迭代產生,此種行掃描方法一般允許快速產生序列的整數。在又其它實施例中,如於此所揭示之一序列的整數可迭代產生。例如,未產生連續整數,當被計算出之前一整數加一時,可依序計算出每一整數。
圖17A是一方塊圖,說明用以儲存控制索引及控制索引前標的適合格式的第一示範實施例。一封裝資料運算元1742A包括封裝資料元件A0 -AN 。藉由例子,可有4、8、16、32或64個資料元件。封裝資料元件A0 -AN 的每一者具有不同對應的控制索引或控制索引前標。尤其是,第一資料元件A0 具有第一控制索引或前標I0 ,第二資料元件A1 具有第二控制索引或前標I1 ,第N個資料元件AN 具有第N個控制索引或前標IN ,等等。控制索引或前標的每一者被儲存於該對應的資料元件的位元子集。例如,控制索引或前標的每一者可儲存於該對應的資料元件之最低階位元組或控制位元組的位元子集中,雖然此並非必要。在各種實施例中,控制索引或前標的每一者可包含在該對應資料元件的例如最低階2位元、3位元、4位元、5位元、或6位元。控制索引或前標的每一者可以是通常具有一範圍從0到64的整數。就封裝資料重整控制索引/前標而言, 每控制索引/前標的整數大小及位元數取決於在其中索引的來源資料元件的數目。在各種實施例中,資料元件可為8位元位元組、16位元字、32位元雙字、或64位元四倍字。
圖17B是一方塊圖,說明用以儲存控制索引及控制索引前標的適合格式的第二示範實施例。一封裝資料運算元1742B包括資料元件A0 -AN 。不是具有不同對應控制索引或前標之資料元件A0 -AN 的每一者,控制索引或前標在該封裝資料運算元之資料元件的一子集以內被相連地聚集一起。在繪示的實施例中,第一資料元件A0 具有第一控制索引或前標I0 、第二控制索引或前標I1 、第N個控制索引或前標IN ,等等。取決於控制索引或前標的大小、以及資料元件的大小,可用二或多個資料元件的子集來儲存所有的控制索引或前標。而且,在控制索引前標的情形中,它們可被儲存於通用或整數暫存器且稍後被後續的指令被轉換成封裝資料格式。
圖18是適合儲存封裝資料運算元的封裝資料暫存器組1803的示範實施例的方塊圖。繪示的封裝資料暫存器包括三十二個512位元寬的封裝資料或向量暫存器。此等三十二個512位元寬的暫存器被標為ZMM0到ZMM31。在繪示的實施例中,此等暫存器之較低十六個的較低階256位元,即ZMM0-ZMM15,被混疊或覆加於個別的256位元寬的封裝資料或標為YMM0-YMM15的向量暫存器,雖然此並非必要。同樣的,在繪示的實施例中,YMM0- YMM15的較低階128位元被混疊或覆加於個別的128位元封裝資料或標為XMM0-XMM1的向量暫存器,雖然此並非必要。512位元寬的暫存器ZMM0到ZMM31可操作來保持512位元的封裝資料、256位元的封裝資料、或128位元的封裝資料。256位元寬的暫存器YMM0-YMM15可操作來保持256位元的封裝資料、或128位元的封裝資料。128位元寬的暫存器XMM0-XMM1可操作來保持128位元的封裝資料。每一暫存器可用來儲存封裝浮點資料或封裝整數資料之一者。不同的資料元件大小受到支援,包括至少8位元組資料、16位元字資料、32位元雙字或單精準度浮點資料、以及64位元四倍字或雙精準度浮點資料。封裝資料暫存器的替代實施例可包括不同數目的暫存器、不同大小的暫存器,且可能或可能不將較大暫存器別名於較小暫存器。
圖19是一製造物品(例如,電腦程式產品)1952的方塊圖,該製造物品1952包括儲存對產生控制索引有用之指令的機器可讀取儲存媒體1953。在某些實施例中,該機器可讀取儲存媒體可為實體及/或非暫態機器可讀取儲存媒體。在各種示範實施例中,該機器可讀取儲存媒體可包括一軟式磁片、光碟片、光碟機(CD-ROM)、磁碟、磁光碟、唯讀記憶體(ROM)、可程式ROM(PROM)、可抹除可程式ROM(EPROM)、電性可抹除可程式ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、半導體記憶體、其它類型的記 憶體、或其等之組合。在某些實施例中,該媒體可包括一或更多固態資料儲存物質,例如像是,半導體資料儲存物質、相變資料儲存物質、磁性資料儲存物質、光透固態資料儲存物質,等等。
該機器可讀取儲存媒體儲存一或更多可用來產生控制索引1908的指令。在某些實施例中,此等可包括一或更多控制索引產生指令1910。在某些實施例中,此等可包括一或更多控制索引前標產生指令1911。該等指令的每一者若被機器執行,可用來產生該控制索引,該等指令的每一者可操作來致使該機儲存一結果於由該指令所指出的目的地儲存位置。該結果包括一序列的整數,其代表控制索引或控制索引前標。於此所揭示之該等指令、結果、以及序列的整數的任何一者是適合的。再者,其它指令可被儲存於該媒體(例如,封裝資料重整指令、集中指令、其它使用該等控制索引的指令等等)。
不同類型的機器的例子包括但不侷限於處理器(例如,通用處理器及特別用途處理器)、指令處理設備、以及各種具有一或更多處理器或指令處理設備的電子裝置。此種電子裝置的一些代表性的例子包括,但不侷限於電腦系統、桌上電腦、膝上型電腦、筆記型電腦、伺服器、網路路由器、網路交換機、桌上型易網機、機上盒、行動電話、視訊遊戲控制器,等等。
一指令集包括一或更多指令格式。一給定的指令格式界定各種欄位(位元數、位元位置)除了別的以外,用以指 定要被執行的操作(運算碼)及該操作要執行的運算元。一些指令格式透過指令範本(子格式)的定義進一步分析。例如,可定義該等指令格式的指令範本來具有不同子集的指令格式的欄位(被包含的欄位典型上依相同順序,但至少有些具有不同位元位置,因為包含有較少的欄位)及/或定義以具有不同解譯的給定欄位。因此,使用一給定指令格式表達ISA的每一指令(且如果被定義,則以一給定的一個該指令格式的指令範本)且包括用以指定該操作及該等運算元的欄位。例如,一示範ADD指令具有特定運算碼及指令格式,其包括用以指定該運算碼及運算元欄位來選擇運算元(來源1/目的地及來源2)的運算碼欄位;以及於指令流中此ADD指令的發生在選擇特定運算元之運算元欄位中將會有特定內容。一組意指先進向量延伸指令集(AVX)(AVX1及AVX2)且使用向量延伸指令集(VEX)的SIMD延伸指令集編碼方案已經發表及/或出版(例如,參見Intel®64及IA-32架構軟體開發手冊,2011年十月;以及參見Intel®先進向量延伸指令集,2011年六月)。
示範指令格式
於本文描述的指令的實施例可以不同格式實施。此外,示範系統、架構、及管線予以描述如下。指令的實施例可執行於此種系統、架構、及管線,但不侷限於此所描述者。
VEX指令格式
VEX編碼允許指令具有多於二的運算元,且允許SMID向量暫存器較128位元長。使用VEX前綴提供三運算元(或更多)語法。例如,前二運算元指令執行諸如A=A+B的運算,其重寫一來源運算元。使用VEX前綴能使運算元執行諸如A=B+C的非破壞性運算。
圖20A說明示範AVX指令格式,其包括VEX前綴2002、實數運算碼欄位2030、Mod R/M位元組2040、SIB位元組2050、位移欄位2062、以及IMM8 2072。圖20B說明圖20A之構成全運算碼欄位2074及基礎運算欄位2042的欄位。圖20C說明圖20A之構成暫存器索引欄位2044的欄位。
VEX前綴(位元組0-2)2002以三位元組形式被編碼。第一位元組是格式欄位2040(VEX位元組0,位元[7:0]),其包含一明白的C4位元組值(用來區分C4指令格式之唯一值)。第二-第三位元組(VEX位元組1-2)包括提供一些特定能力的位元欄位。具體而言,REX欄位2005(VEX位元組1,位元[7-5])係由VEX.R位元欄位(VEX位元組1,位元[7]-R)、VEX.X位元欄位(VEX位元組1,位元[6]-X)、以及VEX.B位元欄位(VEX位元組1、位元[5]-B)所構成。其它欄位的指令編碼該暫存器索引的較低三位元如本技藝所周知者(rrr、xxx及bbb),使得Rxxx、Xxxx及Bbbb可藉由相加VEX.R、VEX.X及VEX.B來形成。運算碼映射欄位2015(VEX位元組1,位元[4:0]-mmmmm) 包括編碼一隱含的前導運算碼位元組的內容。W欄位2064(VEX位元組2,位元[7]-W)係以記法VEX.W表示,且提供取決於指令的不同功能。VEX.vvvv 2020的角色(VEX位元組2,位元[6:3]-vvvv)可包括以下:1)VEX.vvvv編碼第一來源暫存器運算元,以反轉(1的補數)形式指定,且對於具2或更多來源運算元的指令是有效的;2)VEX.vvvv編碼該目的地暫存器運算元,以1的補數形式指定給特定向量位移;或3)VEX.vvvv不編碼任何運算元,該欄位被保留且應包含1111b。若VEX.L 2068大小欄位(VEX位元組2,位元[2]-L)=0,則其指出128位元向量;若VEX.L=1,則指出256位元向量。前綴編碼欄位2025(VEX位元組2,位元[1:0]-pp)提供額外位元給基礎運算欄位。
真實運算碼欄位2030(位元組3)又被稱為運算碼位元組。部分的運算碼在此欄位係被指定的。
MOD R/M欄位2040(位元組4)包括MOD欄位2042(位元[7-6])、Reg欄位2044(位元[5-3])、以及R/M欄位2046(位元[2-0])。Reg欄位2044的角色可包括以下:編碼目的地暫存器運算元或來源暫存器運算元(Rrrr的rrr),或被視為一運算碼延伸指令且不被用來編碼任何指令運算元。R/M欄位2046的角色可包括以下:編碼代表一記憶體位址的指令運算元,或是編碼該目的地暫存器運算元或一來源暫存器運算元。
定標、索引、基礎(SIB)-定標欄位2050的內容(位元 組5)包括SS2052(位元[7-6]),其用於記憶體位址產生。SIB.xxx 2054(位元[5-3])及SIB.bbb 2056(位元[2-0])先前已意指暫存器索引Xxxx及Bbbb。
位移欄位2062及立即欄位(IMM8)2072包含位址資料。
同屬向量親和指令格式
一向量親和指令格式係一適合向量指令的指令格式(例如,有向量運算專用的特定欄位)。雖然所述的實施例中透過向量親和指令格式支援向量及純量運算,但替代的實施例僅使用以向量親和指令格式的向量運算。
圖21A至21B是方塊圖,說明根據本發明實施例之同屬向量親和指令格式及其指令範本。圖21A是一方塊圖,說明根據本發明實施例之同屬向量親和指令格式及其類別A指令範本;而圖21B是一方塊圖,說明根據本發明實施例之同屬向量親和指令格式及其類別B指令範本。精確而言,被定義類別A及類別B指令範本的同屬向量親和指令格式2100,不包括記憶體存取2105指令範本及記憶體存取2120指令範本。在向量親和指令格式的情境中的名詞同屬意指不連結到任何特定指令集的指令格式。
雖然將說明本發明實施例,其中向量親和指令格式支援以下:具32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小)(且因而,由16雙字大小元件或者,8四倍字大小元件構成的 64位元組向量);具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位元組向量運算元)。
圖21A中的類別A指令範本包括:1)在無記憶體存取2105指令範本以內顯示有無記憶體存取、全捨入控制型運算2110指令範本及無記憶體存取、資料轉換型運算2115指令範本;以及2)在記憶體存取2120指令範本以內顯示有記憶體存取、時間性2125指令範本及記憶體存取、非時間性2130指令範本。圖21B中的類別B指令範本包括:1)在無記憶體存取2105指令範本以內顯示有無記憶體存取、寫入遮罩控制、半捨入控制型運算2112指令範本及無記憶體存取、寫入遮罩控制、vsize類型運算2117指令範本;以及2)在記憶體存取2120指令範本以內顯示有無記憶體存取、寫入遮罩控制2127指令範本。
同屬向量親和指令格式2100包括下列依圖21A至21B中所繪示之順序的欄位。
格式欄位2140-在此欄位中的特定值(一指令格式識別碼值)唯一識別該向量親和指令格式,且因而在該指令流中該向量親和指令格式中指令的出現。因此,此欄位就其對於僅具有該同屬向量親和指令格式的指令集而言不需要的意義而言是可選用的。
基礎運算欄位2142-其內容有別於不同的基本運算。
暫存器索引欄位2144-其內容、直接或透過位址產生,指定該來源及目的地運算元的位置,在暫存器或在記憶體中。此等包括一充分的位元數以從一PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N個暫存器。雖然在一實施例中N可達到三來源及一目的地暫存器,但替代實施例可支援更多或更少來源及目的地暫存器(例如,可支援達到二來源,其中此等來源的其中一者亦充作為該目的地,可支援達到三來源,其中此等來源的其中一者亦充作為該目的地,可支援達到二來源及一目的地)。
修飾符欄位2146-其內容區分指定與不指定記憶體存取之在同屬向量指令格式中的指令的出現;換言之,區分無記憶體存取2105指令範本與記憶體存取2120指令範本之間。記憶體存取運算讀取及/或寫入到記憶體階層(在一些情形中使用暫存器中的值指定來源及/或目的地位址),而非記憶體存取運算則不(例如,來源及目的地為暫存器)。雖然在一實施例中此欄位亦在三個不同執行記憶體位址計算的方式間選擇,但替代的實施例可支援更多、更 少、或不同執行記憶體位址計算的方式。
擴增運算欄位2150-其內容區分除了該基本運算以外還要被執行之各種不同運算的其中一者。此欄位是情境特定。在本發明的一實施例中,此欄位被分成一類別欄位2168、一阿爾發欄位2152、以及一貝他(beta)欄位2154。擴增運算欄位2150允許共同群組的運算要被執行於單一指令而不是2、3、或4指令中。
定標欄位2160-其內容允許用於記憶體位址產生之索引欄位的內容的定標(例如,用於使用2定標 *索引+基礎的位址產生)。
位移欄位2162A-其內容用作為部分的記憶體位址產生(例如,用於使用2定標 *索引+基礎+位移的位址產生)。
位移因子欄位2162B(注意,直接透過位移因子欄位2162B的位移欄位2162A的並列指出一或另一者被使用)-其內容係用作為部分的位址產生;其指定要被記憶體存取(N)的大小定規的位移因子-其中N係在記憶體存取中的位元組數(例如,用於使用2定標 *索引+基礎+定規位移的位址產生)。冗餘低階位元被忽略,因而該位移因子欄位的內容被乘以記憶體運算元總大小(N)以便產生要被用於計算有效位址的最後的位移。N的值由處理器硬體在運算時間基於完全運算碼欄位2174(後述)以及資料調處欄位2154C所決定。位移欄位2162A及位移因子欄位2162B就其不用於可以僅實施該二者中的一者或無一者的無記憶體存取2105指令範本及/或不同實施例的意義而言是可選用 的。
資料元件寬度欄位2164-其內容區分資料元件寬度的一組件的哪一者要被使用(在針對所有指令的某些實施例中;在僅針對某些指令的其它實施例中)。此欄位就若僅一資料元件寬度被支援及/或使用該等運算碼的某些態樣支援資料元件寬度而其不被需要的意義而言是可選用的。
寫入遮罩欄位2170-其內容基於或按照資料元件位置,控制在目的地向量運算元中的資料元件位置是否反射該基本運算及擴增運算的結果。類別A指令範本支援合併寫入遮罩,而類別B指令範本同時支援合併寫入遮罩及歸零遮罩二者。當合併時,向量遮罩允許任何在目的地中的元件集於任何運算的執行期間受到保護免更新(由基本運算及擴增運算指定);在其它一實施例中,保留該目的地的各元件的舊值,其中對應遮罩位元具有一個0。相對的,當歸零時,向量遮罩允許任何在於任何運算的執行期間被歸零的目的地中的元件集(由基本運算及擴增運算指定);在一實施例中,當對應遮罩位元具有一0的值時,該目的地的元件被設成0。此功能的子集係控制正被執行的運算的向量長度的能力(亦即,元件的被修飾的期間,從第一到最後一個);然而,被修飾之元件不需要是連續的。因此,寫入遮罩欄位2170允許包括載入、儲存、算術、邏輯等的部分向量運算,雖然所述的本發明實施例中,寫入遮罩欄位2170的內容選擇寫入遮罩暫存器的其中一組件,其包含要被使用的寫入遮罩(且因而該寫入遮罩欄 位2170的內容間接識別要被執行的遮罩),反而替代實施例或額外的允許該遮罩寫入欄位2170的內容直接指定要被執行的遮罩。
立即欄位2172-其內容允許一立即的規格。此欄位就其不存在於不支援立即之同屬向量親和格式的實施且其不存在於不使用一立即之指令中的意義而言是可選用的。
類別欄位2168-其內容區分不同類別的指令。參照圖21A至B,此欄位選擇類別A與類別B指令之間的內容。在圖21A至B中,圓角方塊被用來指出一特定值係存在於一欄位(例如,圖21A至B中分別為類別欄位2168的類別A 2168A及類別B 2168B)。
類別A的指令範本
在類別A的非記憶體存取2105指令範本的情形中,阿爾發欄位2152被解譯為RS欄位2152A,其內容區分不同擴增運算型的哪一個要被執行(例如,捨入2152A.1及資料轉換2152A.2分別被指定給無記憶體存取,捨入型運算2110及該無記憶體存取、資料轉換型運算2115指令範本,而貝他欄位2154區分該指定型的運算的哪一個要被執行。在無記憶體存取2105指令範本中,定標欄位2160、位移欄位2162A、以及位移定標欄位2162B並不存在。
無記憶體存取指令範本-完全捨入控制型運算
在該無記憶體存取完全捨入控制型運算2110指令範本中,貝他欄位2154被解譯為捨入控制欄位2154A,其內容提供靜態捨入。雖然在所述之本發明實施例中,該捨入控制欄位2154A包括一抑制所有浮點異常(SAE)欄位2156及一捨入運算控制欄位2158,但替代實施例可支援可編碼此等概念進該同一欄位或僅有此等概念/欄位的一或另一者(例如,可只有該捨入運算控制欄位2158)。
SAE欄位2156-其內容區分是否要禁止該異常事件報告;當SAE欄位2156的內容指出抑制被致能時,一給定指令不報告任何種類的浮點異常旗標且不導致任何浮點異常處置器。
捨入運算控制欄位2158-其內容區分一群捨入運算中的哪一者要執行(例如,捨進、捨去、向零方向捨入及就近捨入)。因此,捨入運算控制欄位2158允許根據指令的捨入模式的改變。在本發明一實施例中,其中一處理器包括一控制器暫存器,用以指定捨入模式,捨入運算控制欄位2150的內容重寫該暫存器值。
無記憶體存取指令範本-資料轉換型運算
在無記憶體存取資料轉換型運算2115指令範本中,貝他欄位2154被解譯為資料轉換欄位2154B,其內容區分資料轉換的哪一組件要被執行(例如,無資料轉換、拌和、廣播)。
在類別A的記憶體存取2120指令範本的情形中,阿 爾發欄位2152被解譯為驅逐提示欄位2152B,其內容區分驅逐提示的哪一個被使用(在圖21A中,時間性2152B.1及非時間性2152B.2分別指定記憶體存取、時間性2125指令範本及記憶體存取、非時間性2130指令範本),而貝他欄位2154被解譯為資料調處欄位2154C,其內容區分資料調處運算(眾所周知為基元)要被執行(例如,無調處;廣播;來源的向上轉換;以及目的地的向下轉換)。記憶體存取2120指令範本包括定標欄位2160,且可選用位移欄位2162A或位移定標欄位2162B。
向量記憶體指令執行從記憶體載入且向量儲存至記憶體,利用轉換支援。利用一般向量指令,向量記憶體指令資料元件的方式將資料從記憶體轉換或自記憶體轉換,真實被轉換的元件被該向量遮罩的內容指定,該向量遮罩被選作為寫入遮罩。
記憶體存取指令範本-時間性
時間性資料為可能足夠快要被再用而受益於高速存取的資料。但此為一提示,且不同處理器可依不同方式實施,包括完全忽略該提示。
記憶體存取指令範本-非時間性
非時間性資料為不可能足夠快被再用而受益於在第1階快取中高速存取且應被給予驅逐優先權的資料。但換言之,一提示及不同處理器可依不同方式實施,包括完全忽 略該提示。
類別B的指令範本
在類別B的指令範本的情形中,阿爾發欄位2152被解譯為一寫入遮罩控制(Z)欄位2152C,其內容區分別受控於寫入遮罩欄位2170的寫入遮罩控制應為一合併或歸零。
在類別B的無記憶體存取2105指令範本的情形中,部分的貝他欄位2154被解譯為RL欄位2157A,其內容區分該不同擴增運算類型中的哪一者要被執行(例如,捨入2157A.1及向量長度(VSIZE)2157A.2分別被指定給該無記憶體存取、寫入遮罩控制、半捨入控制型運算2112指令範本及該無記憶體存取、寫入遮罩控制、VSIZE型運算2117指令範本),而貝他欄位2154的其餘者區分該被指定類型的運算的哪一者要被執行。在無記憶體存取2105指令範本的情形中,定標欄位2160、位移欄位2162A、以及位移定標欄位2162B並不存在。
在該無記憶體存取、寫入遮罩控制、半捨入控制類型運算2110指令範本、貝他欄位2154的其餘者被解譯為一捨入運算欄位2159A且異常事件報告被禁止(一給指令不報告任何種類的浮點異常旗標且不導致任何浮點異常處置器)。
捨入控制欄位2159A-正如同捨入運算控制欄位2158,其內容區分一群組之捨入運算的哪一者要執行(例 如,捨進、捨去、向零方向捨入及就近捨入)。因此,捨入運算控制欄位2159A允許根據指令的捨入模式的改變。在本發明一實施例中,其中一處理器包括一控制器暫存器,用以指定捨入模式,捨入運算控制欄位2150的內容重寫該暫存器值。
在無記憶體存取中,寫入遮罩控制、VSIZE類型運算2117指令範本、貝他欄位2154的其餘者被解譯為一向量長度欄位2159B,其內容區分一些資料向量長度的哪一者要被執行(例如,128、256、或512位元組)。
在類別B的記憶體存取2120指令範本的情形中,部分的貝他欄位2154被解譯為一廣播欄位2157B,其內容區分該廣播類型資料調處運算是否要被執行,而貝他欄位2154的其餘者被解譯為向量長度欄位2159B。記憶體存取2120指令範本包括定標欄位2160、且可選用位移欄位2162A或位移定標欄位2162B。
關於同屬向量親和指令格式2100,顯示完全運算碼欄位2174包括格式欄位2140、基礎運算欄位2142、以及資料元件寬度欄位2164。雖然一實施例顯示完全運算碼2174包括所有此等欄位,但在不支援所有欄位的實施例中,完全運算碼2174包括小於全部此等欄位。完全運算碼2174提供該運算碼(運算碼)。
擴增運算欄位2150、資料元件寬度欄位2164、以及寫入遮罩欄位2170允許此等特性依據指令依同屬向量親和指令格式被指定。
寫入遮罩欄位與資料元件寬度的組合產生類型的指令,其允許該遮罩根據不同資料元件寬度被應用。
在類別A與類別B以內發現的各種指令範本可受益於不同情況。在本發明的某些實施例中,不同處理器或在處理器以內之不同核心僅可支援類別A、僅可支援類別B、或者同時支援二類別。例如,一用於通用運算之高性能通用無序核心可僅支援類別B,一主要用於圖形及/或科學(通量)運的核心可僅支援類別A,且一用於二者的核心可支援二者(當然,具有來自二個類別之一些範本及指令的混合但並非來自二個類別的全部範本及指令是在本發明的範圍內)。此外,一單處理器可包括多核心,其全部支援同一類別或者其中不同核心支援不同類別。例如,在具獨立圖形及通用核心的處理器中,主要用於圖形及/或科學運算的圖形核心的其中一者可僅支援類別A,而該通用核心的一或多者可為具無序執行及用於支援類別B之通用運算暫存器重新命的高性能通用核心。不具有獨立圖形核心的另一處理器可再包括一個同時支援類別A與類別B的通用有序或無序核心。當然,在本發明的不同實施例中,來自一類別的特徵亦可實施於另一類別中。以一高階語言寫的程式會被放進(例如,剛好即時編譯或靜態編譯)各種不同可執行的形式,包括:1)一種僅具有受到執行的目標處理器支援之類別的指令的形式;或2)一種具有使用所有類別之指令的不同組合寫成的替代常式且具有控制流碼根據目前正在執行該碼的處理器所支援之指令選擇要執行之常 式的形式。
示範特定向量親和指令格式
圖22A是一方塊圖,說明根據本發明實施例之示範特定向量親合指令格式。圖22A顯示特定向量親合指令格式2200,其就指定欄位位置、大小、解譯及順序以及某些該等欄位的值的意義而言是特定的。特向量親和指令格式2200可用來延伸x86指令集,且因而某些欄位與用於現存x86指令集及其延伸指令集(例如,AVX)的欄位類似或相同。此格式保持與具延伸指令集的現存x86指令集的前綴編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、以及立即欄位保持一致。繪示來自圖22A之欄位要映射到來自圖21之欄位。
應了解到,雖然本發明實施例為說明目的係參照在同屬向量親和指令格式2100之情境中的特定向量親和指令格式2200,除了所請求的部分,本發明不侷限於特定向量親和指令格式2200。例如,同屬向量親和指令格式2100考量各種欄位的種種可能的大小,而特定向量親和指令格式2200顯示為具有特定大小的欄位。藉由特定例子,雖然資料元件寬度欄位2164被繪示為在特定向量親和指令格式2200中的一個一位元欄位,但本發明並不如此限制(亦即,同屬向量親和指令格式2100考量其它大小的資料元件寬度欄位2164)。
同屬向量親和指令格式2100包括以下依圖22A所列 之順序的欄位。
EVEX前綴(位元組0-3)2202-以一四位元組形式編碼。
格式欄位2140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位2140且其包含0x62(用於區分在本發明一實施例中之向量親和指令格式的唯一值)。
第二-第四位元組(EVEX位元組1-3)包括一些提供特定能力的位元欄位。
REX欄位2205(EVEX位元組1,位元[7-5])-係由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、以及2157BEX位元組1,位[5]-B)所構成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應VEX位元欄位相同功的功能,且使用1的補數的形式被編碼,即。ZMM0被偏碼成1111B、ZMM15被被編碼成0000B。其它欄位的指令將暫存器索引的較低三位元編碼成本技藝所周知者(rrr、xxx、及bbb),使得Rrrr、Xxxx及Bbbb可藉將EVEX.R、EVEX.X及EVEX.B加起來而形成。
REX’欄位2110-此REX的欄位2110的第一部分且是用來將延伸32暫存器集的較高16或較低16的EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在本發明的一實施例中,此位元,連同以下指出者,以位元反轉格式被儲存,以與BOUND指令區分(以習知x86 32位元模式),其 真實運算碼位元組是62,但不接受在MOD欄位中11的值於MOD R/M欄位(下述);本發明的替代實施例不儲存此以及以下依反轉格式的指出位元。1的值被用來編碼較低16暫存器。換言之,R’Rrrr係藉由結合EVEX.R’、EVEX.R以及來自其它欄位的其它RRR來形成。
運算碼映射欄位2215(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼一隱含前導運算碼位元組(0F、0F38、或0F3)。
資料元件寬度位元組2164(EVEX位元組2,位元[7]-W)-係以記法EVEX.W表示。EVEX.W係用以界定資料型式(32位元資料元件或64位元資料元件)的粒度(大小)。
EVEX.vvvv 2220(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可包括以下:1)EVEX.vvvv將第一來源暫存器運算元編碼,以反轉(1的補數)形式指定,且對於具2或更多來源運算元的指令是有效的;2)EVEX.vvvv編碼該目的地暫存器運算元,以1的補數形式指定給特定向量位移;或3)EVEX.vvvv不編碼任何運算元,該欄位被保留且應包含1111b。因此,EVEX.vvvv欄位2220將以反轉(1的補數)形式儲存的第一來源暫存器說明符的4低階位元編碼。取決於該指令,一額外的不同EVEX位元欄位係用以將說明符的大小到延伸到32個暫存器。
EVEX.U 2168類別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,則其指示類別A或EVEX.U0;若EVEX.U=1,則其指示類別B或EVEX.U1。前綴編碼欄位 2225(EVEX位元組2,位元[1:0]-pp)-提供額外位元給基礎運算欄位。除了提供支援給以EVEX前綴格式的舊有SSE指令,此亦具有精簡SIMD前綴的好處(不是需要一位元組來表示SIMD前綴,EVEX前綴僅需要2位元)。在一實施例中,為支援使用同時以舊有格式及以EVEX前綴格式的SIMD前綴(66H,F2H,F3H)的舊有SSE指令,此等舊有SIMD前綴被編碼進SIMD前綴編碼欄位;且在運行時間在被提供到解碼器的PLA之前被延伸成舊有SIMD前綴(故PLA能執行舊有及EVEX格式的此舊有指令而不用修飾)。雖然較新的指令能直接使用EVEX前綴編碼欄位的內容直接作為一運算碼延伸,但特定實施例為一致性依類似方式延伸但允許要由此等舊有SIMD前綴指定的不同意義。一替代實施例可重新設PLA以支援該2位元SMID前綴編碼,且不需要擴展。
阿爾發欄位2152(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.寫入遮罩控制、以及EVEX.N;亦以α繪示)-如前述,此欄位為情境特定。
貝他欄位2154(EVEX位元組3,位元[6:4]-SSS;亦已知為EVEX.s2-0 、EVEX.r2-0 、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ繪示)-如前述,此欄位為情境特定。
REX’欄位2110-此為REX’欄位的提醒項目且為EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),其可用來編碼延伸32暫存器集的高16或低16。此位元以位 元反轉格式儲存。一1的值係用來編碼該等較低16暫存器。換言之,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv。
寫入遮罩欄位2170(EVEX位元組3,位元[2:0]-kkk)-其內容指定在寫入遮罩暫存器中一暫存器的索引,如前述。在本發明一實施例中,特定值EVEX.kkk=000具有一特別行為,隱含無寫入遮罩被用於特定指令(此可以各種方式實施,包括使用寫入遮罩硬接線到全部或旁路該遮罩硬體的硬體)。
真實運算碼欄位2230(位元組4)亦眾所周知為運算碼位元組,部分的運算碼於此欄位中指定。
MOD R/M欄位2240(位元組5)包括MOD欄位2242、Reg欄位2244、及R/M欄位2246。如前述,MOD欄位2242的內容區分記憶體存取與非記憶體存取運算。Reg欄位2244的角色能概括為二個情況:編碼目的地暫存器運算元或來源暫存器運算元,或是被視為運算碼延伸且不用來編碼任何指令運算元。R/M欄位2246的角色可包括以下:編碼參照一記憶體位址的指令運算元,或是編碼該目的地暫存器運算元或一來源暫存器運算元。
定標、索引、基礎(SIB)位元組(位元組6)-如前述,定標欄位2150的內容係用於記憶體位址產生。SIB.xxx 2254與SIB.bbb 2256-此等欄位的內容先前已參照暫存器索引Xxxx與Bbbb。
位移欄位2162A(位元組7-10)-當MOD欄位2242含有 10時,位元組7-10為置欄位2162A,且其作用與舊有32-位元位移(disp32)相同且以位元組粒度作用。
位移因子欄位2162B(位元組7)-當MOD欄位2242含有01時,位元組7為位移定標欄位2162B。此欄位的位置係與舊有x86指令集8位元位移(disp8)的相同,其以位元組粒度作用。由於disp8為正負號延伸,其僅可定址於-128及127位元組偏移之間;就64位元組快取線而論,disp8使用8位元,其僅可被設定成四個真正有用的值-128、-64、0、及64;由於時常需要更大範圍,使用disp32;然而,disp32需要4位元組。相較於disp8及disp32,位移因子欄位2162B係disp8的重新解譯;當使用位移因子欄位2162B時,由位移因子欄位的內容乘以記憶體運算元存取的大小(N)來判定真實的位移。這種位移稱為disp8*N。這減少平均指令長度(針對位移使用單一位元組但大很多的範圍)。這種壓縮的位移係根據有效位移為記憶體存取之粒度的倍數之假設上,且因此,不需編碼位址偏移的冗餘低階位元。換言之,該位移因子欄位2162B取代舊有x86指令集8位元位移。因此,以與x86指令集8位元位移之相同方式編碼位移因子欄位2162B(所以在ModRM/SIB編碼規則中無改變),除了disp8超載至disp8*N。換言之,在編碼規則或編碼長度方面無改變,而僅在硬體對位移值的解譯方面有改變(其需以記憶體運算元之大小定標位移來獲得逐位元組之位址偏移)。
立即欄位2172如前述操作。
全運算碼欄位
圖22B是一方塊圖,說明根據本發明實施例之構成全運算碼欄位2174之特定向量親和指令格式2200之欄位。具體而言,全運算碼欄位2174包括格式欄位2140、基礎運算欄位2142、及資料元件寬度(W)欄位2164。基礎運算欄位2142包括前綴編碼欄位2225、運算碼映射欄位2215、及真實運算碼欄位2230。
暫存器索引欄位
圖22C是一方塊圖,說明根據本發明實施例之構成暫存器索引欄位2144之特定向量親和指令格式2200之欄位。具體而言,暫存器索引欄位2144包括REX欄位2205、REX’欄位2210、MODR/M.reg欄位2244、MODR/M.r/m欄位2246、VVVV欄位2220、xxx欄位2254、及bbb欄位2256。
擴增運算欄位
圖22D是一方塊圖,說明根據本發明實施例之構成擴增運算欄位2150之特定向量親和指令格式之欄位2200。當類別(U)欄位2168含有0時,其代表EVEX.U0(類別A2168A);當其含有1時,其代表EVEX.U1(類別B 2168B)。當U=0且MOD 2242欄位含有11時(代表無記憶體存取運算),將阿爾發欄位2152(EVEX位元組3,位元[7]-EH)解 譯為rs欄位2152A。當rs欄位2152A含有1(捨入2152A.1)時,將貝他欄位2154(EVEX位元組3,位元[6:4]-SSS)解譯為捨入控制欄位2154A。捨入控制欄位2154A包括一位元SAE欄位2156及兩位元捨入運算欄位2158。當rs欄位2152A含有0時(資料變換2152A.2),將貝他欄位2154(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料變換欄位2154B。當U=0且MOD 2242欄位含有00、01、或10時(代表記憶體存取運算),將阿爾發欄位2152(EVEX位元組3,位元[7]-EH)解譯為驅逐提示(EH)欄位2152B並將貝他欄位2154(EVEX位元組3,位元[6:4]-SSS)解譯為三位元資料調處欄位2154C。
當U=1時,將阿爾發欄位2152(EVEX位元組3,位元[7]-EH)解譯為寫入遮罩控制(Z)欄位2152C。當U=1且MOD 2242欄位含有11時(代表無記憶體存取運算),將貝他欄位2154的一部分(EVEX位元組3,位元[4]-S0 )解譯為RL欄位2157A;當其含有1(捨入257A.1)時,將貝他欄位2154的其餘部分(EVEX位元組3,位元[6-5]-S2-1 )解譯為捨入運算欄位2159A,而當RL欄位2157A含有0(VSIZE 2157A.2)時,將貝他欄位2154的其餘部分(EVEX位元組3,位元[6-5]-S2-1 )解譯為向量長度欄位2159B(EVEX位元組3,位元[6-5]-L1-0 )。當U=1且MOD 2242欄位含有00、01、或10時(代表記憶體存取運算),將貝他欄位2154(EVEX位元組3,位元[6:4]-SSS)解譯為向量長度欄位2159B(EVEX位元組3,位元[6-5]-L1-0 )及廣播 欄位2157B(EVEX位元組3,位元[4]-B)。
示範暫存器架構
圖23是一根據本發明實施例之暫存器架構2300的方塊圖。在繪示的實施例中,有為512位元寬之32個向量暫存器2310;此等暫存器稱為zmm0至zmm31。較低16個zmm暫存器的低階256位元覆蓋在暫存器ymm0-16上。較低16個zmm暫存器的低階128位元(ymm暫存器之低階128位元)覆蓋在暫存器xmm0-15上。特定向量親和指令格式2200在如下表中所示之此等被覆蓋暫存器檔上運算。
換言之,向量長度欄位2159B在最大長度與一或更多其它較短長度之間做選擇,其中每一個這種較短長度為前一長度之半長;且無向量長度欄位2159B之指令範 本運算於最大向量長度。此外,在一實施例中,特定向量親和指令格式2200之類別B指令範本對封包或純量單/雙精準浮點資料及封包或純量整數資料運算。純量運算為在zmm/ymm/xmm暫存器中的最低階資料元件位置上執行之運算;較高階資料元件位置取決於實施例被保留成與在指令前相同或歸零。
寫入遮罩暫存器2315-在繪示實施例中,有8個寫入遮罩暫存器(k0至k7),各具有64位元之大小。在一替代實施例中,寫入遮罩暫存器2315為16位元大小。如前述,在本發明之一實施例中,向量遮罩暫存器k0不可用作為寫入遮罩;當正常會指示k0的編碼係用於寫入遮罩時,其選擇0xFFFF之固線寫入遮罩,實際上針對該指令禁止寫入遮蓋。
通用暫存器2325-在繪示實施例中,有十六個64位元的通用暫存器,其連同現有x86定址模式一起用來定址記憶體運算元。以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15參照這些暫存器。
純量浮點堆疊暫存器檔(x87堆疊)2345,其上混疊有MMX封包整數扁暫存器檔2350-在所示實施例中,該x87堆疊為八元件堆疊,用來對32/64/80位元浮點資料使用x87指令集延伸來執行純量浮點運算;而MMX暫存器用來對64位元封包整數資料執行運算,還有針對在MMX與XMM暫存器之間執行的一些運算保持運算元。
本發明之替代實施例可使用更寬或更窄的暫存器。另 外,本發明之實施例可使用更多、更少、或不同的暫存器檔及暫存器。
示範核心架構、處理器、及電腦架構
處理器核心可以不同方式針對不同目的以及於不同處理器中實施。例如,此種核心的實施可包括:1)用於通用運算的通用有序核心;2)用於通用運算的高性能通用無序核心;3)主要用於圖形及/或科學(通量)運算的特別用途核心。不同處理器的實施可包括:1)CPU包括一或更多用於通用運算的通用有序核心及/或一或更多用於通用運算的通用無序核心;以及2)包括一或更多主要用於圖形及/或科學(通量)的特別用途核心協處理器。此種不同的處理器導致不同電腦系統架構,其可包括1)在與該CPU不同的晶片上的協處理器;2)在與一CPU相同的包裝中的一不同晶片上的協處理器;3)在與一CPU相同的晶片上的協處理器(在此情形中,此種協處理器有時稱為諸如整合圖形及/或科學(通量)邏輯的特別用途邏輯,或是稱為特別用途核心;4)在該同一晶粒上可包括所述的CPU的系統晶片(在此情形中,有時候稱為應用核心或應用處理器、上述的協處理器、以及額外功能。接下來說明範例核心架構,接著說明示範處理器及電腦架構。
示範核心架構
有序及無序核心方塊圖
圖24A是一方塊圖,說明根據本發明實施例之示範有序管線及示範暫存器重新命名、無序發出/執行管線二者的方塊圖。圖24B是一方塊圖,繪示要包括在處理器內之有序架構核心與範例暫存器重新命名、無序發出/執行架構核心二者的範例實施例。圖24A-B繪示有序管線與有序核心,而虛線框繪示暫存器重新命名、無序發出/執行管線及核心。假設該有序態樣是該無序態樣的子集,將說明該無序態樣。
在圖24A中,處理器管2400線包括提取階段2402、長度解碼階段2404、解碼階段2406、分配階段2408、重新命名階段2410、排程(眾所周知為調度或發出)階段2412、暫存器讀取/記憶體讀取階段2414、執行階段2416、寫回/記憶體寫入階段2418、異常處置階段2422、以及確定階段2424。
圖24B顯示處理器核心2490,其包括耦合到執行引擎單元2450的前端單元2430,且二者耦合到記憶體單元2470。核心2490可為一精簡指令集計算(RISC)核心、複雜指令集計算(CISC)、極長指令字(VLIW)核心、或混合或替代核心類型。作為又一個選項,核心2490可為特別用途核心,例如像是,網路或通訊核心、壓縮引擎、協處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心等等。
前端單元2430包括耦合到指令快取單元2434分支預測單元2432,其耦合到指令轉譯旁看緩衝器(TLB)2436, 其耦合到指令提取單元2438,其耦合到解碼單元2440。解碼單元2440(或解碼器)可解碼指令,且產生如輸出一或更多微運算、微碼入口點、微指令、其它指令、或其它控制信號,其等可解碼自、或者反射、或導自該等原始指令。可使用各種不同的機制實施解碼單元2440。適合的機制的範例包括但不侷限於查找表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。在一實施例中,核心2490包括一微碼ROM或其它儲存特定巨集指令之微碼的媒體(例如,在解碼單元2440或者在前端單元2430內)。解碼單元2440耦合到執行引擎單元2450中的重新命名/分配器單元2452。
執行引擎單元2450包括耦合到引退單元2454及一組一或更多排程器單元2456的重新命名/分配器單元2452。排程器單元2456代表任何數目的不同排程器,包括保留站(reservation station)、中央指令窗等等。排程器單元2456耦合到實體暫存器檔單元2458。每一個實體暫存器檔單元2458代表一或更多實體暫存器檔單元,不同的實體暫存器檔單元2458儲存一或更多不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(例如,要被執行之下一指令之位址的指令指標)等等。在一實施例中,實體暫存器檔單元2458包含向量暫存器單元、寫入遮罩暫存器單元、以及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量暫存器遮罩暫存器、以及通用暫存器。實體暫存器檔單元2458 被引退單元2454覆蓋以說明可實施暫存器重新命名及無序執行的種種方式(例如,使用記錄器緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器、以及引退暫存器檔案;使用暫存器映射及暫存器池等等)。引退單元2454及實體暫存器檔單元2458耦合到執行叢集2460。執行叢集2460包括一組或更多執行單元2462及一組一或更多記憶體存取單元2464。執行單元2462可實施種種運算(例如,移、加、減、乘)且對種種類型的資料(例如,純量浮點、封包整數、封包浮點、向量整數、向量浮點)。雖然某些實施例可包括若干特定功能或成組的功能專用的執行單元,但其它實施例可只包括一執行單元或多個全部執行所有功能的執行單元。排程器單元2456、實體暫存器檔單元2458、及執行叢集2460係眾所周知可能是複數的,因為特定的實施例產生獨立的管線給特定類型的資料/運算(例如,純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或各具有自己排程器單元的記憶體存取管線、實體暫存器檔單元、及/或執行叢集-且在不同記憶體存取管線的情形中,只有此管線的執行叢集具有記憶體存取單元2464的實施例被實施)。應了解到,使用不同的管線情形中,一或更多的此等管線可以是無序發出/執行,而其餘者為有序的。
記憶體存取單元2464組耦合到記憶體單元2470,其包括耦合到二階(L2)快取單元2476之資料快取單元2474的資料TLB單元2472。在一範例實施例中,記憶體存取 單元2464可包括載入單元、儲存位址單元、以及儲存資料單元,其每一者耦合到記憶體單元2470中的資料TLB單元2472。指令快取單元2434進一步耦合到記憶體單元2470中的二階(L2)快取單元2476。L2快取單元2476耦合到一或更多其它階的快取且最後耦合到主記憶體。
藉由範例,範例暫存器重新命名、無序發出/執行核心架構可實施管線2400如下:1)指令提取2438執行提取及長度解碼階段2402及2404;2)解碼單元2440執行解碼階段2406;3)重新命名/分配器單元2452執行分配階段2408及重新命名階段2410;4)排程器單元2456執行排程階段2412;5)實體暫存器檔單元2458且記憶體單元2470執行暫存器讀取/記憶體讀取階段2414;執行叢集2460執行執行階段2416;6)記憶體單元2470及實體暫存器檔單元2458執行寫回/記憶體寫入階段2418;7)各種單元可牽涉於異常處置階段2422中;及8)引退單元2454及實體暫存器檔單元2458執行確定階段2424。
核心2490可以已添加較新版本之一些指令來支援一或更多指令集(例如,x86指令集)美國加州Sunnyvale的MIPS Techologies之MIPS指令集;美國加州Sunnyvale的ARM Holdings之ARM指令集(具有諸如NEON之選配額外指令),包括於此描述的指令。在一實施例中,核心2490包括支援一封裝資料指令集延伸(例如,AVX1、AVX2)的邏輯,從而允許許多要使用封資料來執行的媒體應用程式使用諸運算。
應了解到的是,該核心可支援多執行緒(執行二或更多平行組的運算或執行緒),且可以各種方式,包括時間片多執行緒(time sliced multithreadig)、同時多執行緒(simultaneous multithreading)(其中單一實體核心提供一本地核心給該實體核心正在同時多執行緒的每一執行緒)、或其等之組合(時間片提取與解碼及之後同時多執行緒諸如以Intel®的超執行緒(Hyperthreading)技術)。
雖然暫存器重新命名在無序執行的情境中描述,但應了解到暫存器重新命名可用於有序架構。雖然處理器的說明實施例亦包括獨立指令及資料快取單元2434/2474與共享L2快取單元2476,但替代實施例可具有內部快取給指令與資料,例如像是,一階(L1)內部快取、或內部快取的多階。在某些實施例中,系統可包括內部快取與在核心及/或處理器外部的外部快取的組合。或者,所有的快取可在核心及/或處理器外部。
特定示範有序架構
圖25A-B繪示更特定的示範有序核心架構的方塊圖,其核心會是晶片中數個邏輯塊(包括相同類型及/或不同類型的其它核心)的其中一者。諸邏輯塊透過一高頻寬互連網路(例如,環狀網路),取決於應用,與一些固定功能邏輯、記憶體I/O介面、以及其它必要I/O邏輯通訊。
圖25A是一方塊圖,根據本發明實施例之單處理器核 心,連同其與晶粒上(on-die)互連網路2502的連接以及連同其二階(L2)快取2504的本地子集。在一實施例中,指令解碼器2500以封裝指令集執行來支援x86。L1快取2506允許低潛伏存取以快取記憶體到純量及向量單元中。雖然在一實施例(為簡化設計)中,純量單元2508及向量單元2510使用分別的暫存器集(分別為純量暫存器2512及向量暫存器2514)並將在其之間傳送的資料寫入記憶體並接著從一階(L1)快取2506回讀進來,本發明之替代實施例可使用不同的方式(例如,使用單一暫存器集或包括允許資料在兩個暫存器檔之間傳送而不被寫入及讀回的通訊路徑)。
L2快取2504的本地子集為總體L2快取之一部分,該總體L2快取分成分別的本地子集,每一個處理器核心一個。每一個處理器具有至其本身的L2快取2504之本地子集的直接存取路徑。由處理器核心讀取的資料係儲存在其之L2快取2504並可迅速加以存取,與存取其本身的本地L2快取子集之其它處理器平行。由處理器核心寫入的資料係儲存在其本身的L2快取子集2504中並若有需要的話從其它子集清除。此環狀網路確保共享資料的同調。此環狀網路為雙向以允許諸如處理器核心、L2快取及其它邏輯塊與在晶片內的其它邏輯塊的代理器彼此通訊。每個環狀資料路徑每方向為1012位元寬。
圖25B是圖25A之根據本發明實施例之處理器核心的部分展開圖。第25B圖包括L1快取2504之L1資料快取 2506A部分,以及關於向量單元2510及向量暫存器2514的更多細節。具體而言,向量單元2510為16寬的向量處理單元(VPU)(見16寬ALU 2528),其執行一或更多整數、單精準浮點、及雙精準浮點指令。VPU支援以拌和單元2520拌和暫存器輸入、數值轉換單元2522A-B的數值轉換、及以複製單元2524複製記憶體輸入。寫入遮罩暫存器2526允許預測結果之向量寫入。
具整合記憶體控制器及圖形的處理器
圖26是一根據本發明實施例之處理器2600的方塊圖,該處理器可具有多於一個核心,可以具有整合記憶體控制器,且可具有整合圖形。圖26中之實線框繪示具有單核心2602A之處理器2600、系統代理器單元2610單元、一組一或更多匯流排控制器單元2616,而虛線框繪示具有多核心2602A-N之替代處理器2600、在系統代理器單元2610單元中之一組一或更多整合記憶體控制器單元2614、及特別用途邏輯2608。
因此,處理器2600的不同實施可包括:1)具有為整合圖形及/或科學(通量)邏輯(其可包括一或更多)的特別用途邏輯2608、為一或更多通用目的核心(例如,通用有序核心、通用無序核心、二者的組合)的核心2602A-N的CPU;2)具有為大量主要用於圖形及/或科學(通量)的特別用途核心之核心2602A-N的協處理器;以及3)具有為大量通用有序核心之核心2602A-N的協處理器。因此,處理 器2600可以是通用處理器、協處理器或特別用途處理器,例如像是,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用目的圖形處理單元)、高通量多重整合核心(MIC)協處理器(包括30或更多核心)、嵌入式處理器等等。處理器叮實施於一或更多晶片上。處理器2600可使用任何數目的處理技術,例如像是BiCMOS、CMOS或NMOS而為一或更多基板的一部分及/或實施於一或更多的基板上。
記憶體階層包括在核心內之一或更多階的快取、一組一或更多共享快取單元2606、及耦合至該組整合記憶體控制器單元2614的外部記憶體(未示)。該組共享快取單元2606可包括一或更多中階快取,比如二階(L2)、三階(L3)、四階(L4)、或其它階的快取、最後一階快取(LLC)、及/或上述的組合。雖在一實施例中基於環狀之互連單元2612互連整合圖形邏輯2608、該組共享快取單元2606、及系統代理器單元2610/整合記憶體控制器單元2614,替代實施例可使用任何數量的眾所皆知技術來互連此種單元。在一實施例中,於一或更多快取單元2606與核心2602A-N之間保持同調。
在某些實施例中,核心2602A-N之一或更多者能進行多執行緒。系統代理器單元2610包括協調並操作核心2602A-N之該等組件。系統代理器單元2610可包括例如電力控制單元(PCU)及顯示單元。PCU可為或包括調節核心2602A-N及整合圖形邏輯2608之電力狀態所需之邏輯 及組件。顯示單元用來驅動一或更多外部連接的顯示器。
核心2602A-N以架構及/或指令集而言可為同質或異質;換言之,二或更多的核心2602A-N能夠執行相同的指令集,而其它的能夠只執行一組的該指令集或一不同的指令集。
示範電腦架構
圖27-30是示範電腦架構的方塊圖。本技藝眾所周知之用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程站、伺服器、網路裝置、網路集線器、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、及各種其它電子裝置的其它系統設計及組態亦屬適合。一般而言,能夠併入本文所揭露之處理器及/或其它執行邏輯之大量各種系統或電子裝置一般都適合。
現參照圖27,其顯示一根據本發明一實施例之系統2700的方塊圖。系統2700可包括一或更多處理器2710及2715,其耦合到控制器集線器2720。在一實施例中,控制器集線器2720包括圖形記憶體控制器集線器(GMCH)2790及輸入/輸出集線器(IOH)2750(其可分別在不同的晶片上);GMCH 2790包括記憶體2740及與協處理器2745耦合的記憶體及圖形控制器;IOH 2750將輸 入/輸出(I/O)裝置2760耦合到GMCH 2790。或者,該記憶體及圖形控制器的一或兩者係合在處理器內(如於此所述者),記憶體2740及協處理器2745係直接耦合到處理器2710,而控制器集線器2720係與IOH 2750在一單晶片內。
額外處理器2715之可選本質在圖27中以間斷線標示。各處理器2710及2715可為處理器2600的某種版本。
記憶體2740可以是,例如,動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或二者的組合。對於至少一實施例而言,控制器集線器2720經由諸如前端匯流排(FSB)之多點匯流排、諸如快速路徑互連(QPI)的點對點介面、或類似連接2795與處理器2710及2715通訊。
在一實施例中,協處理器2745是一特別用途處理器,例如像是高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。在一實施例中,控制器集線器2720可包括整合圖形加速器。
就不同優點衡量上來說實體資源2710及2715之間可有各種差異,包括架構、微架構、熱、功耗特性等等。
在一實施例中,處理器2710執行控制一般類型的資料處理運算的指令。嵌入在指令內的可以是協處理器指令。處理器2710辨認出此等協處理器指令為應該由附加協處理器2745所執行的類型。於是,處理器2710於一協 處理器匯流排或其它互連上發出此等協處理器指令(或代表協處理器指令的控制信號)到協處理器2745。協處理器2745接受並執行所接收到的協處理器指令。
現參照圖28,其顯示一根據本發明實施例之第一更特定範例系統2800的方塊圖。如圖28所示,多處理器系統2800為點對點互連系統,並包括經由點對點互連2850耦合之第一處理器2870及第二處理器2880。處理器2870及2880的每一者可為處理器2600的某種版本。在本發明一實施例中,而處理器2870與2880分別為處理器2710與2715,而協處理器2838為協處理器2745。在另一實施例中,處理器2870與2880分別為處理器2710與協處理器2745。
處理器2870與2880顯示分別包括整合記憶體控制器(IMC)單元2872與2882。處理器2870亦包括作為其一部分的匯流排控制器點對點(P-P)介面2876及2878;同理,第二處理器2880包括P-P介面2886及2888。處理器2870及2880可經由點對點(P-P)介面2850使用P-P介面電路2878及2888來交換資料。如圖28所示,IMC 2872及2882耦合處理器到個別記憶體,即記憶體2832與記憶體2834,其可為本地附接到個別處理器的主記憶體之部分。
處理器2870、2880可各經由個別的P-P介面2852及2854使用點對點介面電路2876、2894、2886、2898與晶片組2890交換資料。晶片組2890也可經由高性能圖形介 面2839與高性能圖形電路2838交換資料。在一實施例中,協處理器2838為特別用途處理器,例如像是,高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。
可將共享快取(未示)包括在二處理器內或外,但經由P-P互連與處理器連接,使得若一處理器被置於低功率模式,則處理器之一或兩者的本地快取資訊可儲存在共享快取中。
晶片組2890可經由介面2896耦合至第一匯流排2816。在一實施例中,第一匯流排2816可為周邊組件互連(PCI)匯流排,或比如PCI Express匯流排或另外第三代I/O互連匯流排的匯流排,雖本發明之範疇不限於此。
如圖28所示,各種I/O裝置2814可耦合到第一匯流排2816,連同耦合第一匯流排2816至第二匯流排2820之匯流排橋接器2818。在一實施例中,一或更多額外處理器2815,諸如,協處理器、高通量MIC處理器、GPGPU、加速器(例如像是,圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其它處理器,係耦接到第一匯流排2816。在一實施例中,第二匯流排2820可為低腳數(LPC)匯流排。各種裝置可耦合到第二匯流排2820包括,例如,在一實施例中,鍵盤及/或滑鼠2822、通訊裝置2827及儲存單元2828,諸如碟驅動機或其它大量儲存裝置,其在一實施例中可包括指令/碼及資料2830。再 者,音頻I/O 2824可耦合到第二匯流排2820。注意到其它架構為可行。例如,取代圖28的點對點架構,系統可實現多點匯流排或其它此種架構。
現參照圖29,其顯示一根據本發明實施例之第二更特定示範系統2900的方塊圖。圖28及29中之類似元件有類似參考符號,且圖28之某些態樣在圖29中省去以避免混淆圖29之其它態樣。
圖29繪示處理器2870、2880可包括分別整合記憶體及I/O控制邏輯(「CL」)2872及2882。因此,CL 2872、2882包括整合記憶體控制器單元且包括I/O控制邏輯。圖29繪示不只是記憶體2832、2834耦合到CL 2872、2882,但I/O裝置2914亦耦合到控制邏輯2872、2882。舊有I/O裝置2915耦合到晶片組2890。
現參照圖30,其顯示一根據本發明實施例之SoC 3000的方塊圖。在圖26中類似的元件有類似參考符號。而且,虛線框在更先進SoC上為可選特徵。在圖30中,互連單元3002耦合到:應用處理器3010,其包括一組一或更多核心2602A-N及共享快取單元2606;系統代理器單元2610;匯流排控制器單元2616;整合記憶體控制器單元2614;一組或一或更多協處理器3020,其可包括整合圖形邏輯、影像處理器、音頻處理器及視頻處理器;靜態隨機存取記憶體(SRAM)單元3030;直接記憶體存取(DMA)單元3032;以及用以耦合一或更多外部顯示器之顯示單元3040。在一實施例中,協處理器3020包括特別用 途處理器,例如像是,網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器等等。
本文中揭露的機制之實施例可以硬體、軟體、韌體、或此等實施方式的組合實施。本發明之實施例可實施為電腦程式或程式碼,其在包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置的可編程系統上執行。
程式碼,諸如圖28中所示之碼2830,可應用於輸入指令以執行本文所述之功能並產生輸出資訊。輸出資訊可以已知方式應用於一或更多輸出裝置。為了此申請案之目的,處理系統包括具有處理器(例如像是,數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器)之任何系統。
程式碼可以高階程序或物件導向編程語言實現來與處理系統通訊。若有需要,可以組合或機器語言實現程式碼。事實上,本文所述之機制範圍上不限於任何特定編程語言。在任何情況中,語言可為編譯或解譯語言。
可藉由儲存在機器可讀取媒體上之代表指令實現至少一實施例的一或更多態樣,該等代表指令代表處理器內的各種邏輯,當由機器讀取時會令機器製造邏輯以執行本文中所述之技術。可將此種表示,周知為「IP核心」,可儲存在具體機器可讀取媒體上,並供應至各種客戶或製造單位以載入到實際製作邏輯或處理器的製造機器之中。
此種機器可讀取媒體可包括而不侷限於,由機器或裝 置製造或形成的物品之非暫態具體配置,包括諸如硬碟、任何其它類型的碟(包括軟碟、光碟(光碟唯讀記憶體(CD-ROM)、可抹寫光碟(CD-RW)、及磁光碟))之儲存媒體、諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電性可抹除唯讀記憶體(EEPROM))之半導體裝置、相變記憶體(PCM)、磁或光卡、或適合儲存電子指令之任何其它類型的媒體。
因此,本發明之實施例亦包括非暫態、具體機器可讀取媒體,含有指令或含有設計資料,諸如硬體描述語言(HDL),其界定本文所述之結構、電路、設備、處理器、及/或系統特徵。此種實施例亦可稱為程式產品。
仿真(包括二進制轉譯、碼編輯器等等)
在一些情況中,指令轉換器可用來將指令從來源指令集轉換至目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉譯、包括動態編譯之動態二進制轉譯)、變形、仿真、或否則轉換指令到將由核心處理的一或更多其它指令。可以軟體、硬體、韌體、或上述之組合實現指令轉換器。指令轉換器可在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖31是一使用軟體指令轉換器將來源指令集中的二進制指令轉換成目標指令集中的二進制指令的對照方塊 圖。在所示實施例中,指令轉換器為軟體指令轉換器,雖然指令轉換器替代地可以軟體、韌體、硬體、或其等之各種組合實施。圖31顯示可使用x86編譯器3104編譯在高階語言3102中之程式以產生x86二進制碼3106,其可由處理器以至少一個x86指令集核心3116原生執行。具有至少一個x86指令集核心3116之處理器代表可執行與具有至少一個x86指令集核心的Intel處理器實質上相同功能之任何處理器,藉由可相容執行或者處理(1)Intelx86指令集核心之指令集的實質部分或(2)預計運行於具有至少一x86指令集核心之Intel處理器上的應用程式或其它軟體之物件碼版本,以得到與具有至少一個x86指令集核心的Intel處理器實質上相同的結果。x86編譯器3104代表可被操作以產生x86二進制碼3106(例如,物件碼)的編譯器,該碼可在有或無額外鏈結處理下以至少一x86指令集核心3116在處理器上加以執行。同理,圖31顯示在高階語言3102中之程式可使用一替代指令集編譯器3108編譯來產生替代指令集二進制碼3110,其可由無至少一x86指令集核心3114的處理器原生執行(例如,具有執行美國加州Sunnyvale的MIPS Techologies之MIPS指令集及/或執行美國加州Sunnyvale的ARM Holdings之ARM指令之核心的處理器)。指令轉換器3112用來轉換x86二進制碼3106成為可由無x86指令集核心3114的處理器原生執行的碼。此經轉換的碼不大可能與替代指令集二進制碼3110相同,因為能夠進行此之指令轉換器難以製造;然而,經 轉換的碼將完成一般操作並且係由來自替代指令集之指令構成。因此,指令轉換器3112代表軟體、韌體、硬體、或其等的組合,其透過仿真、模擬或任何其它程序,允許不具有x86指令集處理器或核心之處理器或其它電子裝置來執行x86二進制碼3106。
雖然本文揭示之成序列的數可用於控制索引,其等之用途不侷限於控制索引。亦可用於其它用目的(例如,作為至其它指令或演繹法的輸入)。在其它實施例中,可儲存序列的其它數目的整數(例如,6、12、20、24、128等等)。
顯示於本文方塊流程圖中之方法可以通用處理器、特別用途程序(例如,圖形處理器或數位信號處理器)、或其它類型的數位邏輯裝置或指令處理設備。在各種實施例中,指令可接收於指令處理設備、處理器、或其等的一部分(例如,解碼器、指令轉換器等等)。在各種態樣中,指令可從處理器外來源(例如,來自主記憶體、碟片、或匯流排/互連),或來自處理器上來源(例如,來自指令快取記憶體、指令提取單元等等)被接收於處理器。在某些實施例中,諸方法可由圖1之處理器及/或圖4的指令處理設備所執行。或者,諸方法可由處理器及/或指令處理設備的不同實施例執行。此外,圖1的處理器及/或圖4的指令處理設備可執行與顯示於方塊流程圖之方法相同、類似、或不同的運算及方法。
顯示於本文之方塊流程圖的方法說明可由處理器或指 令處理設備外部可見(例如,以軟體觀點可見的)的運算。例如,指令被提供到處理器,結果被儲存於一架構可見的儲存位置以回應該指令。在其它實施例中,任何此等方法可選用地包括一或更多在處理器或指令處理設備內部產生的其它運算。藉由範例,可提取指令、可將指令解碼或者轉換成一或更多其它指令或控制信號,可致能執行單元來執行根據該等指令的運算,可執行實施該等指令的運算的微架構運算(例如,可計算或自一晶粒上ROM的非架構可見儲存位置存取序列的整數)。
術語「耦合的」及「連接的」,連同其等衍生詞可使用於本文。應了解的是此等術語非意圖為彼此的同義詞。更確切地,在特定實施例中,「連接的」用來指出二或更多元件係以直接實體或電性接觸。「耦合的」可意指二或更多元件係以直接實體或電性接觸。然而,「耦合的」亦可意指二或更多元件不是與彼此互相直接接觸,但仍彼此合作或互動。例如,一執行單元可與一暫存器經一或更多中間組件耦合。在圖式中,箭頭用來顯示耦合。
於上述說明中,為說明之目的,已敘述若干特定細節以便提供本發明實施例的透徹了解。然而,對熟悉此技藝人士而言很明顯地可在無此等特定細節下實行一或更多其它實施例。所述之特定實施例並非提供用來限制本發明而是用來說閘明本發明之實施例。本發明之範疇並非由以上提供的特定範例而係僅由下列申請專利範圍所決定。在其它範例中,眾所周知的電路、結構、裝置、及運算已以方 塊圖形式或無細節顯示以便避免阻礙對本說明的了解。
各種運算與方法業已說明。一些此等方法已以基本形式描述於流程圖中,但運算可選用地加到該方法及/或自該等方法移除。此外,一特定順序的運算已根據範例實施例加以描述,要了解的是該特定順序為示例性。替代實施例可選用地依不同順序執行諸運算、結合特定運算、重疊特定運算等等。
特定運算可以硬體組件執行、或嵌入於機器可執行或電路可執行的指令中,其可用來導致或至少產生利用執行該等運算的指令來編程電路或硬體。該電路,只舉出一些例子,可包括通用或特別用途處理器、或邏輯電路。該等運算亦可選用地由硬體與軟體的組合來執行。執行單元及/或處理器可包括回應於導自執行特定運算之機器指令的指令、微指令、或一或更多控制信號的特定或特別電路或其它邏輯。
應體認在本說明書通篇所指之「一實施例」或「一或更多實施例」意指特定特徵可包括在本發明之實施例的實行中。同理,應體認在說明中有時將各種特徵一起集結於單一實施例、圖示、或其說明中,以便於揭露之流暢並輔助各種發明態樣的理解。然而,本文揭露的方法不應詮釋為反映本發明需要比每一個申請專利範圍中所明確敘述更多的特徵之意圖。更確切地,如以下申請專利範圍所反映出,發明態樣係在於少於單一揭露實施例之所有特徵中。因此,在實施方式後之申請專利範圍在此明確併入到實施 方式中,每一個申請專利範圍獨立成立為本發明的一分別實施例。
100‧‧‧處理器
101‧‧‧指令集架構
102‧‧‧架構暫存器
103‧‧‧封裝資料暫存器
104‧‧‧指令集
105‧‧‧使用控制索引的指令
106‧‧‧封裝資料重整指令(例如,排列、混洗等等)
107‧‧‧集中指令
108‧‧‧可用於產生控制索引的指令
109‧‧‧控制索引產生指令
110‧‧‧控制索引前標產生指令
111‧‧‧執行邏輯
400‧‧‧指令處理設備
403‧‧‧封裝資料暫存器
408‧‧‧可用於產生控制索引的指令
422‧‧‧解碼器
423‧‧‧執行單元
424‧‧‧計算序列整數的邏輯
425‧‧‧序列整數
426‧‧‧記憶體
427‧‧‧目的地儲存位置
428‧‧‧結果
633‧‧‧運算碼
634‧‧‧目的地儲存位置
635‧‧‧無具有要被指令操作(例如,被轉換成結果)的封裝資料元件的架構可見來源儲存位置
636‧‧‧數值模式界定參數(例如,偏移、間隔、旋轉量、偏移與間隔)(選用)
637‧‧‧在某些例子中無來源運算元
708A、708B‧‧‧指令
727A、727B‧‧‧目的地儲存位置
728A、728B‧‧‧結果
733A、733B‧‧‧運算碼
734A、734B‧‧‧目的地儲存位置
736‧‧‧數值模式界定參數
738‧‧‧數值模式完全根據運算碼
739‧‧‧數值模式根據運算碼及數值模式界定參數
740A、740B‧‧‧具有數值模式的序列的整數
942、1242‧‧‧第一來源封裝資料
943、1243‧‧‧第二來源封裝資料
944‧‧‧具有封裝資料重整控制索引的來源封裝資料
945、1245‧‧‧結果封裝資料
1244‧‧‧具有封裝資料重整控制索引的第三來源封裝資料
1542‧‧‧來源封裝資料
1600‧‧‧處理器
1603‧‧‧封裝資料暫存器
1608‧‧‧指出其中一非架構可見儲存位置的指令
1623‧‧‧解碼與執行單元
1627‧‧‧目的地儲存位置
1640-1‧‧‧第一序列的整數
1640-M‧‧‧第M個序列的整數
1640-N‧‧‧第N個序列的整數
1650‧‧‧唯讀記憶體
1651-1‧‧‧第一非架構可見的儲存位置
1651-M‧‧‧第M個非架構可見的儲存位置
1651-N‧‧‧第N個非架構可見的儲存位置
1742A‧‧‧封裝資料運算元
1742B‧‧‧封裝資料運算元
A0 、A1 、AN 、B0 、B1 、BN ‧‧‧資料元件
1803‧‧‧封裝資料暫存器
1908‧‧‧可用於產生控制索引的指令
1909‧‧‧控制索引產生指令
1910‧‧‧控制索引前標產生指令
1952‧‧‧製造物品
1953‧‧‧機器可讀取儲存媒體
2002‧‧‧VEX前綴
2015‧‧‧運算碼映射
2020‧‧‧VVVV欄位
2025‧‧‧前綴編碼欄位
2030‧‧‧真實運算碼欄位
2040、2140‧‧‧格式欄位
2042、2142‧‧‧基礎運算欄位
2044、2144‧‧‧暫存器索引欄位
2062‧‧‧位移欄位
2064‧‧‧資料元件寬度欄位
2068‧‧‧大小欄位
2100‧‧‧同屬向量親和指令格式
2105‧‧‧無記憶體存取
2110‧‧‧無記憶體存取全捨入控制類型運算
2115‧‧‧無記憶體存取全捨入控制類型運算
2117‧‧‧無記憶體存取寫入遮罩控制VSIZE類型運算
2120、2146B‧‧‧記憶體存取
2125‧‧‧記憶體存取時間性
2127‧‧‧記憶體存取寫入遮罩控制
2130‧‧‧記憶體存取非時間性
2144‧‧‧暫存器索引欄位
2146‧‧‧修飾符欄位
2146A‧‧‧無記憶體存取
2146B‧‧‧記憶體存取
2150‧‧‧擴增運算欄位
2152‧‧‧阿爾發欄位
2152A‧‧‧RS欄位
2152A.1‧‧‧捨入
2152A.2‧‧‧資料變換
2152B‧‧‧驅逐提示(EH)欄位
2152B.1‧‧‧時間性
2152B.2‧‧‧非時間性
2152C‧‧‧寫入遮罩控制欄位
2154‧‧‧貝他欄位
2154A‧‧‧捨入控制欄位
2154B‧‧‧資料變換欄位
2154C‧‧‧資料調處欄位
2156‧‧‧SAE欄位
2157A‧‧‧RL欄位
2157A.1‧‧‧捨入
2157A.2‧‧‧VSIZE
2157B‧‧‧廣播欄位
2158‧‧‧捨入運算控制欄位
2159A‧‧‧捨入運算欄位
2159B‧‧‧向量長度欄位
2160‧‧‧定標欄位
2162A‧‧‧位移欄位
2162B‧‧‧位移定標欄位
2164‧‧‧資料元件寬度欄位
2168‧‧‧類別欄位
2168A‧‧‧類別A欄位
2168B‧‧‧類別B欄位
2170‧‧‧寫入遮罩欄位
2172‧‧‧立即欄位
2174‧‧‧全運算碼欄位
2100‧‧‧同屬向量親和指令格式
2105‧‧‧無記憶體存取
2112‧‧‧無記憶體存取寫入遮罩控制半捨入控制類型運算
2170‧‧‧寫入遮罩欄位
2202‧‧‧VEX前綴
2215‧‧‧運算碼映射
2220‧‧‧VVVV欄位
2225‧‧‧前綴編碼欄位
2230‧‧‧真實運算碼欄位
2242‧‧‧MOD欄位
2300‧‧‧暫存器架構
2310‧‧‧向量暫存器
2315‧‧‧寫入遮罩暫存器
2325‧‧‧通用暫存器
2345‧‧‧純量浮點堆疊暫存器檔
2350‧‧‧MMX封裝整數扁暫存器
2400‧‧‧管線
2402‧‧‧提取
2404‧‧‧長度解碼
2406‧‧‧解碼
2408‧‧‧分配階段
2410‧‧‧重新命名
2412‧‧‧排程
2424‧‧‧暫存器讀取/記憶體讀取
2426‧‧‧執行階段
2418‧‧‧寫回/記憶體寫入階段
2422‧‧‧異常處置階段
2424‧‧‧確定階段
2430‧‧‧前端單元
2432‧‧‧分支預測單元
2434‧‧‧指令快取單元
2436‧‧‧指令轉譯旁看緩衝器
2438‧‧‧指令提取單元
2440‧‧‧解碼單元
2450‧‧‧執行引擎單元
2452‧‧‧重新命名/分配器單元
2454‧‧‧引退單元
2456‧‧‧排程器單元
2458‧‧‧實體暫存器檔單元
2460‧‧‧執行叢集
2462‧‧‧執行單元
2464‧‧‧記憶體存取單元
2470‧‧‧記憶體單元
2472‧‧‧資料TLB單元
2474‧‧‧資料快取單元
2476‧‧‧L2快取單元
2490‧‧‧核心
2502‧‧‧環狀網路
2504‧‧‧L2快取之本地子集
2506‧‧‧L1快取
2508‧‧‧純量單元
2510‧‧‧向量單元
2512‧‧‧純量暫存器
2514‧‧‧向量暫存器
2506A‧‧‧L1資料快取
2514‧‧‧向量暫存器
2520‧‧‧拌和單元
2522A‧‧‧數值轉換單元
2522B‧‧‧數值轉換單元
2524‧‧‧複製單元
2526‧‧‧寫入遮罩暫存器
2528‧‧‧16寬的向量ALU
2600‧‧‧處理器
2602A、2602N‧‧‧核心
2604A、2604N‧‧‧快取單元
2606‧‧‧共享快取單元
2608‧‧‧特別用途邏輯
2610‧‧‧系統代理器單元
2612‧‧‧環狀之互連單元
2614‧‧‧整合記憶體控制器單元
2616‧‧‧匯流排控制器單元
2700‧‧‧系統
2710‧‧‧處理器
2715‧‧‧處理器
2720‧‧‧控制器集線器
2740‧‧‧記憶體
2745‧‧‧協處理器
2750‧‧‧輸入/輸出集線器(IOH)
2760‧‧‧輸入/輸出(I/O)
2790‧‧‧圖形記憶體控制器集線器(GMCH)
2800‧‧‧系統
2814‧‧‧I/O裝置
2815‧‧‧處理器
2816‧‧‧第一匯流排
2818‧‧‧匯流排橋接器
2820‧‧‧第二匯流排
2822‧‧‧鍵盤及/或滑鼠
2824‧‧‧音頻I/O
2827‧‧‧通訊裝置
2828‧‧‧儲存單元
2830‧‧‧指令/碼及資料
2832、2834‧‧‧記憶體
2838‧‧‧協處理器
2839‧‧‧圖形介面
2850‧‧‧互連
2852‧‧‧P-P介面
2854‧‧‧P-P介面
2870‧‧‧處理器
2872‧‧‧IMC/控制邏輯CL
2876‧‧‧點對點(P-P)介面
2878‧‧‧點對點(P-P)介面
2880‧‧‧處理器/協處理器
2882‧‧‧整合記憶體控制器(IMC)/控制邏輯(CL)
2886‧‧‧點對點(P-P)介面
2888‧‧‧點對點(P-P)介面
2890‧‧‧晶片組
2894‧‧‧點對點介面
2896‧‧‧介面
2898‧‧‧點對點(P-P)介面
2894‧‧‧點對點介面
2898‧‧‧點對點(P-P)介面
2900‧‧‧系統
2914‧‧‧I/O裝置
2915‧‧‧舊有I/O
3000‧‧‧系統晶片
3002‧‧‧互連單元
3010‧‧‧應用處理器
3020‧‧‧協處理器
3030‧‧‧SRAM單元
3032‧‧‧DMA單元
3040‧‧‧顯示單元
3102‧‧‧高階語言
3104‧‧‧x86編譯器
3106‧‧‧x86二進制碼
3108‧‧‧替代指令集編譯器
3110‧‧‧替代指令集二進制碼
3112‧‧‧指令轉換器
3114‧‧‧無x86指令集核心的處理器
3116‧‧‧處理器以至少一個x86指令集核心
圖1是一種處理對產生控制索引有用之指令的處理器的示範實施例的方塊圖。
圖2是一種處理封裝資料重整控制索引產生指令之示範實施例之方法的示範實施例的方塊流程圖。
圖3是一種處理封裝資料重整控制索引前標產生指令之示範實施例之方法的示範實施例的方塊流程圖。
圖4是一種處理對產生控制索引有用之指令的指令處理設備的示範實施例的方塊圖。
圖5是一種處理指令之方法的示範實施例的方塊流程圖,該指令儲存一序列的至少四個依一數值模式的非負整數。
圖6是一種用於產生控制索引之指令的指令格式的示範實施例的方塊圖。
圖7A是一方塊圖,說明在某些實施例中,被指令儲存之一序列的整數可以具有主要根據或完全根據該指令之運算碼的數值模式。
圖7B是一方塊圖,說明在某些實施例中,被指令儲存之一序列的整數可以具有一數值模式,其部分根據該指令之運算碼以及部分根據一或更多定義由該指令所指出之數值模式界定參數。
圖8是一種處理指令之方法的示範實施例的方塊流程圖,該指令儲存一序列的至少四個依一數值順序的連續非負整數。
圖9是說明一種封裝資料重整操作的示範實施例的方塊圖,使用封裝資料重整控制索引用以自二對齊的封裝資料擷取不對齊的封裝資料以避免需要執行不對齊的載入,該封裝資料重整控制索引具有依數值順序之偏移連續整數的值。
圖10是一種處理指令之方法的示範實施例的方塊流程圖,該指令儲存一序列的至少四個依一數值順序的非負整數,所有在連續位置的整數相差至小二個固定整數間隔。
圖11是一種處理指令之方法的示範實施例的方塊流程圖,該指令儲存一序列的至少四個依一數值順序的非負的相同奇偶(例如全部偶數或全部奇數)整數。
圖12是說明一種封裝資料重整操作的示範實施例的方塊圖,使用封裝資料重整控制索引,用以區隔實數(R)與虛數(IM),該封裝資料重整控制索引具有依遞增數值順序之連續偶數整數的值。
圖13是一種處理指令之方法的示範實施例的方塊流程圖,該指令儲存一序列的至少四個依一數值順序的整數,其中最小的整數以該偏移自零偏移,且其中所有在連續位置的整數彼此相差該間隔。
圖14是一種處理第一控制索引前標產生指令之方法 的示範實施例的方塊流程圖,該指令儲存一序列的依一數值順序的連續非負整數,且一第二指令對每一整數加一間隔及一偏移。
圖15是一儲存紅綠藍阿爾發(Alpha)四元組資料的來源封裝資料的方塊圖。
圖16是一處理器的示範實施例的方塊圖,該處理器包括儲存一或更多序列的整數的唯讀記憶體(ROM)。
圖17A是一方塊圖,說明用以儲存控制索引及控制索引前標的適合格式的第一示範實施例。
圖17B是一方塊圖,說明用以儲存控制索引及控制索引前標的適合格式的第二示範實施例。
圖18是適合的封裝資料暫存器組的示範實施例的方塊圖。
圖19是一製造物品的方塊圖,該製造物品包括儲存對產生控制索引有用之指令的機器可讀取儲存媒體。
圖20A說明示範AVX指令格式,其包括VEX前綴、實數運算碼欄位、Mod R/M位元組、SIB位元組、位移欄位、以及IMM8。
圖20B說明圖20A之構成全運算碼欄位及基礎運算欄位的欄位。
圖20C說明圖20A之構成暫存器索引欄位2044的欄位。
圖21A是一方塊圖,說明根據本發明實施例之同屬向量親和指令格式及其類別A指令範本。
圖21B是一方塊圖,說明根據本發明實施例之同屬向量親和指令格式及其類別B指令範本。
圖22A是一方塊圖,說明根據本發明實施例之示範特定向量親合指令格式。
圖22B是一方塊圖,說明根據本發明實施例之構成全運算碼欄位之特定向量親和指令格式之欄位。
圖22C是一方塊圖,說明根據本發明實施例之構成暫存器索引欄位之特定向量親和指令格式之欄位。
圖22D是一方塊圖,說明根據本發明實施例之構成擴增運算欄位之特定向量親和指令格式之欄位。
圖23是一根據本發明實施例之暫存器架構的方塊圖。
圖24A是一方塊圖,說明根據本發明實施例之示範有序管線及示範暫存器重新命名無序發出/執行管線二者的方塊圖。
圖24B顯示處理器核心,包括耦接到執行引擎單元之前端單元,且二者皆耦接到記憶體單元。
圖25A是一方塊圖,根據本發明實施例之單處理器核心,其與晶粒上(on-die)互連網路的連接以及二階(L2)快取的本地子集。
圖25B是圖25A之根據本發明實施例之處理器核心的部分展開圖。
圖26是一根據本發明實施例之處理器的方塊圖,該處理器可具有多於一個核心,可以具有整合記憶體控制 器,且可具有整合圖形。
圖27顯示一根據本發明實施例之系統的方塊圖。
圖28顯示一根據本發明實施例之第一更特定示範系統的方塊圖。
圖29顯示一根據本發明實施例之第二更特定示範系統的方塊圖。
圖30顯示一根據本發明實施例之SoC的方塊圖。
圖31是一使用軟體指令轉換器將來源指令集中的二進制指令轉換成目標指令集中的二進制指令的對照方塊圖。
400‧‧‧指令處理設備
403‧‧‧封裝資料暫存器
408‧‧‧可用於產生控制索引的指令
422‧‧‧解碼器
423‧‧‧執行單元
424‧‧‧計算序列整數的邏輯
425‧‧‧序列整數
426‧‧‧記憶體
427‧‧‧目的地儲存位置
428‧‧‧結果

Claims (29)

  1. 一種執行封裝資料重整控制索引產生指令的方法,包含:接收該封裝資料重整控制索引產生指令,該封裝資料重整控制索引產生指令指出一目的地儲存位置;以及儲存一結果於該目的地儲存位置,以回應該封裝資料重整控制索引產生指令,該結果包括一序列的至少四個代表封裝資料重整控制索引的非負整數,其中,該至少四個非負整數的值不是使用前一指令的結果所計算而得的,且其中,該封裝資料重整控制索引產生指令不指出來源封裝資料運算元,該來源封裝資料運算元在一架構可見的儲存位置具有複數個封裝資料元件。
  2. 如申請專利範圍第1項之方法,其中,儲存該結果包含儲存該序列的至少八個具有一數值模式的非負整數,且其中,該數值模式係主要根據該封裝資料重整控制索引產生指令的運算碼。
  3. 如申請專利範圍第1項的方法,其中,接收包含接收該封裝資料重整控制索引產生指令,其指出一或更多個數值模式界定參數,該一或更多個數值模式界定參數的每一者影響該四個非負整數的每一者的值。
  4. 如申請專利範圍第1項之方法,其中,儲存該結果包含儲存該序列的至少八個具有一數值模式的非負整數,該數值模式係主要根據該封裝資料重整控制索引產生指令 的運算碼以及該一或更多個界定參數之數值模式。
  5. 如申請專利範圍第1項之方法,其中,接收包含接收該封裝資料重整控制索引產生指令,其指出一整數偏移,且其中,儲存包含儲存該序列的該至少四個非負整數,該至少四個非負整數的最小者與零相差該整數偏移。
  6. 如申請專利範圍第1項之方法,其中,接收包含接收該封裝資料重整控制索引產生指令,其指出固定整數間隔,且其中,儲存包含儲存該序列的該至少四個非負整數,所有連續整數相差該固定整數間隔。
  7. 如申請專利範圍第1項之方法,其中,儲存包含儲存該序列的該至少四個非負整數,所有連續整數相差一固定間隔,且其中,接收包含接收該具有一運算碼的指令,該運算碼確使所有該等連續整數相差該固定間隔。
  8. 如申請專利範圍第1項之方法,其中,儲存包含儲存該序列的該至少四個在該封裝資料重整控制索引產生指令的執行之前已被預定的非負整數。
  9. 如申請專利範圍第1項之方法,其中,儲存包含儲存包括該序列的至少三十二個代表封裝資料重整控制索引之非負整數的該結果。
  10. 如申請專利範圍第1項之方法,進一步包含存取該序列的該至少四個來自一非架構可見儲存位置的非負整數,該非架構可見儲存位置與一執行該封裝資料重整控制索引產生指令的指令單元係在晶粒上。
  11. 如申請專利範圍第1項之方法,進一步包含: 接收一選自一排列指令及一混洗指令的封裝重整指令,該封裝資料重整指令指出該等封裝資料重整控制索引,指出至少一來源封裝資料,以及指出一第二目的地儲存位置;以及儲存一封裝資料結果於該第二目的地儲存位置以回應該封裝資料重整指令,該封裝資料結果包括來自該至少一根據該等封裝資料重整控制索引而重整之來源封裝資料的資料元件。
  12. 一種執行封裝資料重整控制索引產生指令的設備,包含:一目的地儲存位置;以及一與該目的地儲存位置耦合的執行單元,該執行單元回應指出該目的地儲存位置之該封裝資料重整控制索引產生指令,儲存一結果於該目的地儲存位置,該結果包括一序列的至少四個代表封裝資料重整控制索引的非負整數,其中,該執行單元用以儲存包括代表該等封裝資料重整控制索引之該序列的該至少四個非負整數的結果,而不自前一指令的結果計算該至少四個非負整數的值,且其中,該執行單元用以儲存回應一封裝資料重整控制索引產生指令的結果,該封裝資料重整控制索引產生指令不指出一來源封裝資料運算元,該來源封裝資料運算元具有複數個封裝資料元件於一架構可見的儲存位置。
  13. 如申請專利範圍第12項之設備,其中,該執行單元用以回應該封裝資料重整控制索引產生指令,儲存該序 列的至少八個具有一數值模式的非負整數,且其中,該數值模式係主要根據該封裝資料重整控制索引產生指令的一運算碼。
  14. 如申請專利範圍第12項之設備,其中,該執行單元用以儲存回應該封裝資料重整控制索引產生指令的結果,該封裝資料重整控制索引產生指令指出一或更多個數值模式界定參數,該一或更多個數值模式界定參數的每一者影響該至少四個非負整數的值。
  15. 如申請專利範圍第14項之設備,其中,該執行單元用以回應該封裝資料重整控制索引產生指令,儲存該序列的至少八個具有一數值模式的非負整數,該數值模式係主要根據該封裝資料重整控制索引產生指令的一運算碼以及該一或更多個數值模式數值模式界定參數。
  16. 如申請專利範圍第12及13至15項中任一項之設備,其中,該封裝資料重整控制索引產生指令係用以指出一整數偏移,且其中,該執行單元用以回應該封裝資料重整控制索引產生指令,儲存該序列的該至少四個非負整數,該至少四個非負整數的最小者與零相差該整數偏移。
  17. 如申請專利範圍第12及13至15項中任一項之設備,其中,該封裝資料重整控制索引產生指令係用以指出一固定整數間隔,且其中,該執行單元用以回應該封裝資料重整控制索引產生指令,儲存該序列的該至少四個非負整數,所有連續整數相差該固定整數間隔。
  18. 如申請專利範圍第12項之設備,其中,該執行單 元用以回應一封裝資料重整控制索引產生指令的運算碼,儲存呈該序列的該至少四個非負整數的所有連續整數,該所有連續整數相差一固定間隔。
  19. 如申請專利範圍第12項之設備,其中,該執行單元用以回應該封裝資料重整控制索引產生指令,儲存該序列的該至少四個在該封裝資料重整控制索引產生指令的執行之前已被預定的非負整數。
  20. 如申請專利範圍第12及13至15項中任一項之設備,其中,該執行單元用以回應該封裝資料重整控制索引產生指令,儲存包括該序列的至少三十二個代表封裝資料重整控制索引之非負整數的該結果。
  21. 如申請專利範圍第12項之設備,進一步包含一非架構可見儲存位置,其與儲存該至少四個封裝資料重整控制索引的執行單元在晶粒上,且其中,該執行單元用以回應該封裝資料重整控制索引產生指令,存取該至少四個來自該非架構可見儲存位置的封裝資料重整控制索引。
  22. 一種執行封裝資料重整控制索引產生指令的系統,包含:一互連;一用以與該互連耦合的處理器,該處理器包括一目的地暫存器,該處理器回應指出該目的地暫存器之該封裝資料重整控制索引產生指令,儲存一結果於該目的地暫存器,該結果包括一序列的至少四個代表封裝資料重整控制索引的非負整數, 其中,該處理器用以儲存回應該封裝資料重整控制索引產生指令的結果,該等封裝資料重整控制索引不指出一來源封裝資料運算元,該來源封裝資料運算元具有複數個封裝資料元件於一架構可見的儲存位置;以及一與該互連耦合的動態隨機存取記憶體。
  23. 如申請專利範圍第22項之系統,其中,該序列的至少四個非負整數具有一數值模式,該數值模式係主要根據該封裝資料重整控制索引產生指令之運算碼的一或多者以及一或更多個數值模式界定參數,該一或更多個數值模式界定參數由該封裝資料重整控制索引產生指令所指出。
  24. 如申請專利範圍第22項之系統,其中,該處理器儲存用以回應該封裝資料重整控制索引產生指令的結果,該封裝資料重整控制索引產生指令指出一或更多個數值模式界定參數。
  25. 一種機器可讀取儲存媒體,包含包括一或更多個固態儲存材料,儲存指令的該機器可讀取儲存媒體包含:一封裝資料重整控制索引產生指令,該封裝資料重整控制索引產生指令指出一目的地儲存位置,且該封裝資料重整控制索引產生指令若由一機器所執行,則致使該機器實施包含以下的操作:決定一序列的至少四個代表封裝資料重整控制索引的非負整數;以及儲存一結果於該目的地儲存位置,該結果包括該序列的該至少四個代表封裝資料重整控制索引的非負整數, 其中,該封裝資料重整控制索引產生指令不指出一來源封裝資料運算元,該來源封裝資料運算元在一架構可見的儲存位置具有複數個封裝資料元件。
  26. 如申請專利範圍第25項之物件,其中,該封裝資料重整控制索引產生指令不指出一在一架構可見的儲存位置中的來源運算元。
  27. 如申請專利範圍第25項之物件,其中,該封裝資料重整控制索引產生指令指出一或更多個數值模式界定參數。
  28. 一種執行指令的設備,包含:目的地儲存位置;解碼單元,用以解碼該指令,該指令用以指出該目的地儲存位置;以及執行單元,與該解碼單元及該目的地儲存位置耦合,該執行單元回應被解碼的該指令,儲存一結果於該目的地儲存位置,該結果包括一序列的至少八個具有一數值模式的非負整數,且其中,該數值模式係主要根據以下其中一者:(a)該指令的運算碼;以及(b)該指令的運算碼及一或更多個界定該指令所指出之參數的數值模式。
  29. 如申請專利範圍第28項之設備,其中,該執行單元用以儲存其中連續整數相差一固定間隔的結果,且其中,該指令用以指出該間隔的值為數值模式界定參數。
TW101145985A 2011-12-22 2012-12-06 封裝資料重整控制索引產生處理器、方法、系統及指令 TWI502492B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067000 WO2013095555A1 (en) 2011-12-22 2011-12-22 Packed data rearrangement control indexes generation processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
TW201349104A TW201349104A (zh) 2013-12-01
TWI502492B true TWI502492B (zh) 2015-10-01

Family

ID=48669196

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101145985A TWI502492B (zh) 2011-12-22 2012-12-06 封裝資料重整控制索引產生處理器、方法、系統及指令

Country Status (4)

Country Link
US (1) US9904547B2 (zh)
CN (1) CN104011643B (zh)
TW (1) TWI502492B (zh)
WO (1) WO2013095555A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095555A1 (en) 2011-12-22 2013-06-27 Intel Corporation Packed data rearrangement control indexes generation processors, methods, systems, and instructions
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
US10866807B2 (en) 2011-12-22 2020-12-15 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
TWI565302B (zh) * 2014-10-01 2017-01-01 財團法人工業技術研究院 解碼器、編碼器、解碼方法、編碼方法與編解碼系統
US20180101384A1 (en) * 2015-04-17 2018-04-12 Hewlett Packard Enterprise Development Lp Morphed instruction according to configuration update
US10474707B2 (en) * 2015-09-21 2019-11-12 International Business Machines Corporation Detecting longest regular expression matches
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US20170177352A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Lane-Based Strided Store Operations
US9946541B2 (en) * 2015-12-18 2018-04-17 Intel Corporation Systems, apparatuses, and method for strided access
US10509726B2 (en) 2015-12-20 2019-12-17 Intel Corporation Instructions and logic for load-indices-and-prefetch-scatters operations
US20170177363A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Gather Operations
CN106095392B (zh) * 2016-06-20 2018-09-14 龙芯中科技术有限公司 混洗模式生成方法和装置
EP3602276A1 (en) * 2017-03-31 2020-02-05 Intel Corporation Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements
US20210349719A1 (en) * 2018-09-25 2021-11-11 Nec Corporation Information processing apparatus, information processing method, and program
US20230367843A1 (en) * 2022-05-13 2023-11-16 Arm Limited Vectorized Operations for Sparse Kernels

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI283353B (en) * 2003-12-18 2007-07-01 Intel Corp Method of assigning addresses, device in communication with a plurality of remote interfaces, system in communication with at least one remote device, and article of manufacture for interfacing local interfaces with connected remote interfaces
US7370180B2 (en) * 2004-03-08 2008-05-06 Arm Limited Bit field extraction with sign or zero extend
US20110153997A1 (en) * 2009-12-22 2011-06-23 Maxim Loktyukhin Bit Range Isolation Instructions, Methods, and Apparatus
US20110258418A1 (en) * 2001-12-20 2011-10-20 Patrice Roussel Load/Move Duplicate Instructions for a Processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7293056B2 (en) * 2002-12-18 2007-11-06 Intel Corporation Variable width, at least six-way addition/accumulation instructions
US7529918B2 (en) * 2006-07-21 2009-05-05 Broadcom Corporation System and method for efficiently performing bit-field extraction and bit-field combination operations in a processor
US7865693B2 (en) * 2008-10-14 2011-01-04 International Business Machines Corporation Aligning precision converted vector data using mask indicating offset relative to element boundary corresponding to precision type
US7900025B2 (en) * 2008-10-14 2011-03-01 International Business Machines Corporation Floating point only SIMD instruction set architecture including compare, select, Boolean, and alignment operations
WO2013095555A1 (en) 2011-12-22 2013-06-27 Intel Corporation Packed data rearrangement control indexes generation processors, methods, systems, and instructions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110258418A1 (en) * 2001-12-20 2011-10-20 Patrice Roussel Load/Move Duplicate Instructions for a Processor
TWI283353B (en) * 2003-12-18 2007-07-01 Intel Corp Method of assigning addresses, device in communication with a plurality of remote interfaces, system in communication with at least one remote device, and article of manufacture for interfacing local interfaces with connected remote interfaces
US7370180B2 (en) * 2004-03-08 2008-05-06 Arm Limited Bit field extraction with sign or zero extend
US20110153997A1 (en) * 2009-12-22 2011-06-23 Maxim Loktyukhin Bit Range Isolation Instructions, Methods, and Apparatus

Also Published As

Publication number Publication date
US20130283018A1 (en) 2013-10-24
TW201349104A (zh) 2013-12-01
WO2013095555A1 (en) 2013-06-27
US9904547B2 (en) 2018-02-27
CN104011643B (zh) 2018-01-05
CN104011643A (zh) 2014-08-27

Similar Documents

Publication Publication Date Title
TWI502492B (zh) 封裝資料重整控制索引產生處理器、方法、系統及指令
TWI525536B (zh) 封裝資料重排控制指標前標產生處理器、方法、系統及指令
TWI499976B (zh) 用以產生整數序列的方法、設備、系統及製造物品
TWI610222B (zh) 用於產生按數字順序的連續整數序列之處理器、方法、系統及指令(二)
TWI514268B (zh) 合併遮罩圖案之指令
TWI517042B (zh) 用以將萬國碼字元之可變長度編碼點轉碼之處理器、方法、系統及製品
CN108681465B (zh) 用于产生整数序列的处理器、处理器核及系统
TWI630548B (zh) 緊縮旋轉處理器、方法、系統與指令
TWI518588B (zh) 遮罩暫存器上的廣播運算技術
TW201730746A (zh) 用以融合指令之硬體設備及方法
TWI603263B (zh) 執行置換運算的處理器及具有該處理器的電腦系統
JP2017529601A (ja) ビットシャッフルプロセッサ、方法、システム、および命令
TWI644256B (zh) 用以執行向量飽和雙字/四字加法的指令及邏輯
US10732970B2 (en) Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
TW201732553A (zh) 用於保留位元的強制執行的裝置及方法
TWI818894B (zh) 毗連資料元素成對調換處理器、方法、系統、及指令
TWI610234B (zh) 用於壓縮遮罩值的方法及裝置
US20190102187A1 (en) Processors, Methods, Systems, and Instructions to Generate Sequences of Integers in which Integers in Consecutive Positions Differ by a Constant Integer Stride and Where a Smallest Integer is Offset from Zero by an Integer Offset
TWI610231B (zh) 用於向量水平邏輯指令的裝置及方法

Legal Events

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