TWI617978B - 用於向量索引載入和儲存之方法和設備 - Google Patents

用於向量索引載入和儲存之方法和設備 Download PDF

Info

Publication number
TWI617978B
TWI617978B TW104138330A TW104138330A TWI617978B TW I617978 B TWI617978 B TW I617978B TW 104138330 A TW104138330 A TW 104138330A TW 104138330 A TW104138330 A TW 104138330A TW I617978 B TWI617978 B TW I617978B
Authority
TW
Taiwan
Prior art keywords
vector
index
register
processor
instruction
Prior art date
Application number
TW104138330A
Other languages
English (en)
Other versions
TW201640331A (zh
Inventor
Ashish Jha
艾許許 傑哈
Robert Valentine
羅柏 瓦倫泰
Elmoustapha OULD-AHMED-VALL
艾蒙斯特阿法 歐德亞麥德維爾
Original Assignee
Intel Corporation
英特爾股份有限公司
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 Corporation, 英特爾股份有限公司 filed Critical Intel Corporation
Publication of TW201640331A publication Critical patent/TW201640331A/zh
Application granted granted Critical
Publication of TWI617978B publication Critical patent/TWI617978B/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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

Landscapes

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

Abstract

一種用於執行向量索引載入及儲存的設備及方法。舉例而言,處理器的一實施例包括:向量索引暫存器,用以儲存複數個索引值;遮罩暫存器,用以儲存複數個遮罩位元;向量暫存器,用以儲存自記憶體載入的複數個向量資料元;以及,向量索引載入邏輯,用以使用立即值以識別要用於載入作業的儲存於向量索引暫存器中的索引,以及回應地結合索引與基準記憶體位址以決定用於載入作業的記憶體位址,向量索引載入邏輯用以根據複數個遮罩位元而將向量資料元從記憶體位址載至向量暫存器。

Description

用於向量索引載入和儲存之方法和設備
本發明大致關於電腦處理器領域。更特別地,本發明關於用於向量索引載入和儲存之方法和設備。
指令集或是指令集架構(ISA)是電腦架構的一部份,所述電腦架構的一部份是與程式化有關,包含本體資料型式、指令、暫存器架構、定址模式、記憶體架構、中斷及例外處理,及外部輸入及輸出(I/O)。應注意,指令一詞於此大致上意指巨集指令,其是提供給處理器用於執行的指令,巨集指令係與微指令或微作業相反的,微指令或微作業是將巨集指令解碼之處理器的解碼器的結果。微指令或微作業可以配置成指令處理器上的執行單元執行作業以實施與巨集指令相關的邏輯。
ISA與用以實施指令集的處理器設計技術集之微架構有所區別。設有不同微架構的處理器能共用共同的指令集。舉例而言,Intel® Pentium 4處理器、Intel® CoreTM處理器及來自加州太陽谷的超微公司的處理器實施幾乎相 同版本的x86指令集(某些程度上增加更新的版本),但具有不同的內部設計。舉例而言,在使用習知的技術之不同微架構中,以不同方式實施ISA的相同暫存器架構,其包含專用的實體暫存器、使用暫存器重命名機制之一或更多動態分配實體暫存器(例如使用暫存器別名表(RAT)、重排序緩衝器(ROB)及退出暫存器檔案)。除非另外指明,否則,此處使用暫存器架構暫存器檔案及暫存器之文句以表示軟體/程式人員可看到者及指令指明暫存器的方式。在需要明確性的情形中,將使用形容詞「邏輯(的)」、「架構(的)」或「軟體可看見(的)」來表示暫存器架構中的暫存器/檔案,而不同的形容詞會被用以指明給定的微架構中的暫存器(例如,實體暫存器、重排序緩衝器、退出暫存器、暫存器池)。
指令集包含一或更多指令格式。給定的指令格式界定不同的欄位(位元數目、位元位置)以指明其中要被執行的作業以及該作業要於其上執行的運算元。某些指令格式可以經由指令樣板(或子格式)的界定而進一步分解。舉例而言,給定的指令格式的指令樣板可以被界定為具有不同子集合的指令格式欄位(所包含的複數個欄位典型上是相同次序,但是,因為有較少的欄位被包含,所以,至少某些欄位具有不同的位元位置)及/或被界定為具有被不同解譯的給定欄位。使用給定的指令格式(以及,假使被界定時,在該指令格式的複數個指令樣板中的給定之一中)以表示給定的指令,以及,指明作業及運算元。指令串是特 定的指令序列,其中,在序列中的各指令是以指令格式的指令之存在(以及,假使被界定時,是該指令格式的複數個指令樣板中的給定之一)。
300‧‧‧暫存器架構
310‧‧‧向量暫存器
315‧‧‧寫入遮罩暫存器
325‧‧‧一般用途暫存器
345‧‧‧純量浮點堆疊暫存器檔案
350‧‧‧MMX緊縮整數平坦暫存器檔案
400‧‧‧管線
490‧‧‧核心
600‧‧‧處理器
700‧‧‧系統
800‧‧‧系統
900‧‧‧系統
1000‧‧‧系統晶片
1255‧‧‧處理器
1200‧‧‧主記憶體
1291‧‧‧向量索引載入/儲存邏輯
1300‧‧‧向量索引載入/儲存邏輯
從配合下述附圖的詳細說明,將可以更佳地瞭解本發明,其中:圖1A及1B是方塊圖,顯示根據本發明的實施例之泛型向量友善指令格式及其指令樣板;圖2A-D是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式;圖3是根據本發明的一實施例之暫存器架構的方塊圖;圖4A是方塊圖,顯示根據本發明的實施例之舉例說明的有序提取解碼退出管線及舉例說明的暫存器重命名亂序發出/執行管線;圖4B是方塊圖,顯示根據本發明的實施例之包含在處理器中的有序提取解碼退出核心及舉例說明的暫存器重命名亂序發出/執行架構核心二者的舉例說明的實施例;圖5A是方塊圖,顯示單處理器核心與其與晶粒上互連網路的連接;圖5B顯示根據本發明的實施例之圖5A的部份處理器核心的放大視圖;圖6是方塊圖,顯示根據本發明的實施例之單核心處 理器及具有集成的圖形和記憶體控制器之多核心處理器;圖7顯示根據本發明的一實施例之系統的方塊圖;圖8顯示根據本發明的實施例之第二系統的方塊圖;圖9顯示根據本發明的實施例之第三系統的方塊圖;圖10顯示根據本發明的實施例之系統晶片(SoC)的方塊圖;圖11顯示方塊圖,對比根據本發明的實施例之將源指令集中的二進位指令轉換成目標指令集中的二進位指令之軟體指令轉換器的使用;圖12顯示本發明的實施例實施於其上的舉例說明的處理器;圖13顯示根據本發明的一實施例之向量索引載入/儲存邏輯;圖14顯示根據舉例說明的立即和遮罩值以處理舉例說明的索引集之向量索引載入/儲存邏輯;圖15顯示根據本發明的一實施例之用於執行向量索引載入作業的方法;以及圖16顯示根據本發明的一實施例之用於執行向量索引儲存作業的方法。
【發明內容及實施方式】
在下述說明中,為了說明之目的,揭示眾多特定細節以助於更完整瞭解下述的本發明的實施例。但是,習於此技藝者顯然清楚知道,沒有這些特定細節中的某些細節, 仍可實施本發明的實施例。在其它情形中,以方塊圖形式顯示習知的結構及裝置,以免模糊本發明的實施例之基本原理。
舉例說明的處理器架構及資料型式
指令集包含一或更多指令格式。給定的指令格式界定不同的欄位(位元數目、位元位置)以指明其中要被執行的作業(作業碼)以及該作業要於其上執行的運算元。某些指令格式可以經由指令樣板(或子格式)的界定而進一步分解。舉例而言,給定的指令格式的指令樣板可以被界定為具有不同子集合的指令格式欄位(所包含的複數個欄位典型上是相同次序,但是,因為有較少的欄位被包含,所以,至少某些欄位具有不同的位元位置)及/或被界定為具有被不同解譯的給定欄位。因此,使用給定的指令格式(以及,假使被界定時,在該指令格式的複數個指令樣板中的給定之一中)以表示ISA的各指令,以及,包含用於指明作業及運算元的欄位。舉例而言,舉例說明的ADD指令具有特定作業碼及指令格式,指令格式包含作業碼欄位以指定該作業碼及運算元欄位以選取運算元(源1/目的地及源2);以及,在指令串中此ADD指令的存在將在選取特定運算元的運算元欄位中具有特定內容。稱為進階向量擴充(AVX)(AVX1及AVX2)以及使用向量擴充(VEX)碼化設計的SIMD擴充集已經發行及/或公開(舉例而言,請參照2011年10月之Intel® 64和IA-32架構軟體開發者 手冊;以及,2011年6月之Intel®進階向量擴充程式參考)。
舉例說明的指令格式
此處所述的指令實施例可以以不同格式具體實施。此外,於下詳述舉例說明的系統、架構及管線。在這些系統、架構及管線上執行指令的實施例,但是不限於詳述的實施例。
A.泛型向量友善指令格式
向量友善指令格式是適用於向量指令的指令格式(例如,有某些欄位特定用於向量運算)。雖然說明經由向量友善指令格式而支援向量及純量運算之實施例,但是,替代的實施例可以僅使用向量友善指令格式向量運算。
圖1A-1B是方塊圖,顯示根據本發明的實施例之泛型向量友善指令格式及其指令樣板。圖1A是方塊圖,顯示根據本發明的實施例之泛型向量友善指令格式及其等級A指令樣板;而圖1B是方塊圖,顯示根據本發明的實施例之泛型向量友善指令格式及其等級B指令樣板。具體而言,等級A及等級B指令樣板被界定用於泛型向量友善指令格式100,等級A及等級B指令樣板都未包含記憶體存取105指令樣板及記憶體存取120指令樣板。在向量友善指令格式的內容中泛型一詞係指指令格式未被束縛於任何特定的指令集。
將說明本發明的實施例,其中,向量友善指令格式支援下述:具有32位元(4位元組)或是64位元(8位元組)資料元寬度(或尺寸)之64位元組向量運算元長度(或尺寸)(因此,64位元組向量由16個雙倍字尺寸元或是替代地由8個四倍字尺寸元組成);具有16位元(2位元組)或是8位元(1位元組)資料元寬度(或尺寸)之64位元組向量運算元長度(或尺寸);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元寬度(或尺寸)之32位元組向量運算元長度(或尺寸);以及,具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元寬度(或尺寸)之16位元組向量運算元長度(或尺寸);替代實施例以更多、更少或是不同的資料元寬度(例如,128位元(16位元組)資料元寬度)來支援更多、更少及/或不同的向量運算元尺寸(例如,256位元組向量運算元)。
在圖1A中的等級A指令樣板包含:1)在無記憶體存取105指令樣板之內,顯示無記憶體存取、完全捨入控制型作業110指令樣板及無記憶體存取、資料轉換型式作業115指令樣板;以及,2)在記憶體存取120指令樣板之內,有顯示記憶體存取、暫時125指令樣板及記憶體存取、非暫時130指令樣板。圖1B中的等級B指令樣板包含:1)在無記憶體存取105指令樣板之內,顯示無記憶體存取、寫入遮罩控制、部份捨入控制型作業112指令樣板及無記憶體存取、寫入遮罩控制、向量長度(vsize)型式作 業117指令樣板;以及,2)在記憶體存取120指令樣板之內,顯示有記憶體存取、寫入遮罩控制127指令樣板。
泛型向量友善指令格式100包含以圖1A-1B中所示的次序列出的下述欄位。
格式欄位140-在此欄位中的特定值(指令格式識別符值)獨特地識別向量友善指令格式,並因而識別指令串中向量友善指令格式的指令存在。確切而言,以此欄位對於僅有泛型向量友善指令格式之指令集並非所需的觀點而言,此欄位是選加的。
基礎作業欄位142-其內容區別不同的基礎作業。
暫存器索引欄位144-其內容直接或是經由位址產生而指明源及目的地運算元無論是在暫存器或在記憶體中的位置。這些包含足夠數目的位元以從P×Q(例如32×512、16×128、32×1024、64×1024)暫存器檔案中選取N個暫存器。雖然在一實施例中,N可以高達三個源及一個目的地暫存器,但是,替代實施例可以支援更多或是更少的源及目的地暫存器(例如,可以支援高達二個源,其中,這些源中之一也作為目的地,可以支援高達三個源,其中,這些源中之一也作為目的地,可以支援高達二個源及一個目的地)。
修飾符欄位146-其內容區別指定及未指定記憶體存取的泛型向量指令格式中指令的發生;亦即,在無記憶體存取105指令樣板與記憶體存取120指令樣板之間作區分。記憶體存取作業對記憶體層級結構讀取及/或寫入(在某些 情形中,使用暫存器中的值指定源及/或目的地位址),而非記憶體存取作業未如此作(例如,源及目的地是暫存器)。雖然在一實施例中,此欄位也在三不同方式之間選取以執行記憶體位址計算,但是,替代的實施例可以支援更多、更少或是不同的方式以執行記憶體位址計算。
擴增作業欄位150-其內容區別多種不同作業中那一作業要加上基礎作業被執行。此欄位是內容特定的。在本發明的一實施例中,此欄位分成等級欄位168、阿爾發欄位152、貝他欄位154。擴增作業欄位150允許共同的作業組以單一指令而非2、3或4指令執行。
比例欄位160-其內容允許索引欄位的內容的比例用於記憶體位址產生(例如,用於使用2scale*索引+基礎之位址產生)。
位移欄位162A-其內容作為記憶體位址產生的一部份(例如,用於使用2scale*索引+基礎+位移之位址產生)。
位移因數欄位162B(注意,位移欄位162A直接在位移因數欄位162B上方並列係表示一或另一者被使用)-其內容用作為位址產生的一部份;其指明要依記憶體存取(N)的尺寸而比例化之位移因數,其中,N是記憶體存取中的位元組數目(例如,用於使用2scale*索引+基礎+比例化位移的位址產生)。冗餘的低階位元被忽略,因此,位移因數欄的內容乘以記憶體運算元全部尺寸(N)以產生計算有效位址時使用的最後位移。根據全作業碼欄位174(本文稍後說明)及資料操縱欄位154C,在運行時間時由處理 器硬體決定N的值。在位移欄位162A及位移因數欄位162B不用於無記憶體存取105指令樣板及/或不同實施例僅實施二者中之一或不實施二者的情形中,它們是選加的。
資料元寬度欄位164-其內容區別一些資料元寬度中的那一寬度是要被使用(在某些實施例中對所有指令;在其它實施例中僅對某些指令)。在假使使用作業碼的某些態樣而僅有一資料元寬度被支援及/或資料元寬度被支援時不需要此欄位的情形中,此欄位是選加的。
寫入遮罩欄位170-其內容以每一資料元位置為基礎而控制目的地向量運算元中的資料元位置是否反應基礎作業及擴增作業的結果。等級A指令樣板支援合併寫入遮罩,而等級B指令樣板支援合併及零化寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元在任何作業的執行期間受保護(由基礎作業及擴增作業指明)而免於更新;在其它的一實施例中,保留對應的遮罩位元具有0之目的地的各元的舊值。相反地,當零化向量遮罩時允許目的地中的任何組的元在任何作業(由基礎作業及擴增作業指定)執行期間被零化;在一實施例中,當對應的遮罩位元具有0值時,目的地的元被設定為0。此功能的子集合是控制執行的作業的向量長度之能力(亦即,被修改的元的展幅,從第一至最後一個);但是,被修改的元不必是連續的。如此,寫入遮罩欄位170允許部份向量作業,包含載入、儲存、算術、邏輯、等等。雖然說明本發明的實施例,其 中,寫入遮罩欄位170的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器中之一(因此,寫入遮罩欄位170的內容間接地識別要被執行的遮罩),但是,替代實施例取代地或增加地允許遮罩寫入欄位170的內容直接指定要被執行的遮罩。
立即欄位172-其內容允許立即性的規格。在此欄位未出現在未支援立即性的泛型向量友善格式實施中以及其未出現在未使用立即性的指令中之情形中,此欄位是選加的。
等級欄位168-其內容區別不同等級的指令。參考圖1A-B,此欄位的內容在等級A與等級B指令之間選取。在圖1A-B中,四角圓化的方形被用以標示特定值存在於欄位中(例如,分別在圖1A-B中用於等級欄位168的等級A 168A及等級B 168B)。
等級A的指令樣板
在等級A的非記憶體存取105指令樣板的情形中,阿爾發欄位152被解譯為RS欄位152A,其內容區別不同的擴增作業型式中那一型式是要被執行(例如,捨入152A.1及資料轉換152A.2分別被指定用於無記憶體存取、捨入型式作業110及無記憶體存取、資料轉換型式作業115指令樣板),而貝他欄位154區別被指定的型式的作業中那一作業是要被執行。在無記憶體存取105指令樣板中,比例欄位160、位移欄位162A及位移比例欄位162B未出 現。
無記憶體存取指令樣板-完全捨入控制型作業
在無記憶體存取完全捨入控制型作業110指令樣板中,貝他欄位154被解譯為捨入控制欄位154A,其內容提供靜態捨入。雖然在上述的發明實施例中,捨入控制欄位154A包含抑制所有浮點例外(SAE)欄位156及捨入作業控制欄位158,但是,替代實施例可以支援將這些概念編碼成相同欄位或是僅具有這些概念/欄位中之一或另一者(例如,可以僅具有捨入作業控制欄位158)。
SAE欄位156-其內容區別是否將例外事件報告禁能;當SAE欄位的156內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處理器。
捨入作業控制欄位158-其內容區別捨入作業組中何者要執行(例如,捨進、捨去、捨入至零及捨入至最接近的)。因此,捨入作業控制欄位158允許以每一指令為基礎之捨入模式的改變。在處理器包含用於指明捨入模式的控制暫存器之發明的一實施例中,捨入作業控制欄位150的內容置換該暫存器值。
無記憶體存取指令樣板-資料轉換型式作業
在無記憶體存取資料轉換型式作業115指令樣板中,貝他欄位154被解譯為資料轉換欄位154B,其內容區別 複數個資料轉換中何者要被執行(例如,無資料轉換、調和、廣播)。
在等級A的記憶體存取120指令樣板的情形中,阿爾發欄位152被解譯為逐出暗示欄位152B,其內容區別逐出暗示中那一者是要被使用(在圖1A中,暫時152B.1及非暫時152B.2分別被指定用於記憶體存取、暫時125指令樣板以及記憶體存取、非暫時130指令樣板),而貝他欄位154被解譯為資料操縱欄位154C,其內容區別複數個資料操縱作業(也稱為基元)中何者是要被執行(例如,無操縱;廣播;源的上轉;及目的地的下轉)。記憶體存取120指令樣板包含比例欄位160,且選加地包含位移欄位162A或位移比例欄位162B。
藉由轉換支援,向量記憶體指令自記憶體執行向量載入及向量儲存至記憶體。如正常的向量指令般,向量記憶體指令以逐資料元方式傳輸資料自/至記憶體,而真正被傳送的元是由被選為寫入遮罩的向量遮罩的內容所指定。
記憶體存取指令樣板-暫時
暫時資料是很可能足夠快再被使用而從快取獲利之資料。但是,這是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
記憶體存取指令樣板-非暫時
非暫時資料是不太可能足夠快再被使用以從第一層快 取記憶體中的快取獲利之資料,且應被授予逐出優先權。但是,這是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
等級B的指令樣板
在等級B的指令樣板的情形中,阿爾發欄位152被解譯為寫入遮罩控制(Z)欄位152C,其內容區別由寫入遮罩欄位170控制的寫入遮罩是否應為合併或零化。
在等級B的非記憶體存取105指令樣板的情形中,貝他欄位154的部份是被解譯為RL欄位157A,其內容區別不同的擴增作業型式中那一作業型式是要被執行(例如,捨入157A.1以及向量長度(VSIZE)157A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份捨入控制型作業112指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型式作業117指令樣板),而貝他欄位154的其餘部份區別具有指定型式的作業中何者是要被執行。在無記憶體存取105指令樣板中,比例欄位160、位移欄位162A及位移比例欄位162B不存在。
在無記憶體存取中,寫入遮罩控制、部份捨入控制型作業110指令樣板、貝他欄位154的其它部份被解譯為捨入作業欄位159A且例外事件報告被禁能(被給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處理器)。
捨入作業控制欄位159A-正如同捨入作業控制欄位 158般,其內容區別捨入作業組中何者要執行(例如,捨進、捨去、捨入至零及捨入至最接近的)。因此,捨入作業控制欄位159A允許以每一指令為基礎之捨入模式的改變。在處理器包含用於指明捨入模式的控制暫存器之發明的一實施例中,捨入作業控制欄150的內容置換該暫存器值。
在無記憶體存取的、寫入遮罩控制的,VSIZE型式作業117指令樣板中,貝他欄位154的其餘部份被解譯為向量長度欄位159B,其內容區別要對複數個資料向量長度中的那一資料向量長度執行(例如,128、256或512位元組)。
在等級B的記憶體存取120指令樣板的情形中,貝他欄位154的一部份被解譯為廣播欄位157B,其內容區別廣播型資料操縱作業是否要被執行,而貝他欄位154中的其餘部份被解譯為向量長度欄位159B。記憶體存取120指令樣板包含比例欄位160,以及,選加地包含位移欄位162A或是位移比例欄位162B。
關於泛型向量友善指令格式100,完全作業碼欄位174顯示為包含格式欄位140、基礎作業欄位142及資料元件寬度欄位164。雖然顯示完全作業碼欄位174包含所有這些欄位的一實施例,但是,在未支援它們全部的實施例中,完全作業碼欄位174包含小於所有這些欄位的欄位。完全作業碼欄位174提供作業碼(opcode)。
擴增作業欄位150、資料元寬度欄位164及寫入遮罩 欄位170允許以泛型向量友善指令格式的每一指令為基礎來指明這些特點。
寫入遮罩欄位及資料元寬度欄位的結合會產生型式化的指令,其中,它們允許根據不同的資料元寬度來施加遮罩。
等級A及等級B之內發現的各種指令樣板在不同的情形中是有利的。在本發明的某些實施例中,不同的處理器或是處理器之內不同的核心可以僅支援等級A、僅支援等級B或支援這二等級。舉例而言,要用於一般目的之計算的高性能一般目的之亂序核心僅支援等級B,主要用於圖形及/或科學(通量)計算的核心僅支援等級A,以及用於支援該二等級的核心可以支援該二等級(當然,具有來自該二等級的樣板及指令的某些混合之核心,但非來自該二等級的所有樣板及指令是在本發明的範圍之內)。而且,單一處理器包含多核心,所有這些核心支援相同等級,或者,其中,不同的核心支援不同的等級。舉例而言,在設有分別的圖形及一般用途核心的處理器中,主要用於圖形及/或科學計算的複數個圖形核心中之一僅支援等級A,而一或更多一般用途核心可為具有用於僅支援等級B的一般用途計算之亂序執行及暫存器重命名之高性能一般用途核心。不具有分別的圖形核心之另一處理器可以包含支援等級A和等級B的一或更多一般用途有序或亂序核心。當然,在本發明的不同實施例中,來自一等級的特點也可在其它等級中實施。以高階語言撰寫的程式將被置於(舉 例而言,僅即時被編譯或是靜態地被編譯成)各式各樣之不同的可執行形式中,包含:1)僅具有由用於執行的標的處理器所支援的等級的指令之形式;或是,2)具有使用所有等級的指令之不同組合撰寫的替代常式以及具有控制流程碼之形式,控制流程碼係根據由目前正執行碼的處理器所支援的指令而選取要執行的常式。
B.舉例說明的特定向量友善指令格式
圖2是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。圖2顯示特定向量友善指令格式200,其在指定欄位的位置、大小、解譯及欄位次序、以及用於那些欄位中的某些欄位之值的情形中是特定的。特定向量友善指令格式200可以被用以擴充x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其擴充(例如,AVX)。此格式維持與具有延伸的現有x86指令集的前置編碼欄位、實數運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位及立即欄位一致。顯示來自圖2的欄位映射至來自圖1的欄位。
應瞭解,雖然為了說明而在泛型向量友善指令格式100的脈絡中參考特定向量友善指令格式200,以說明本發明的實施例,但是,除申明之處以外,否則本發明不侷限於特定向量友善指令格式200。舉例而言,泛型向量友善指令格式100慮及用於各種欄位的各種可能大小,而特定向量友善指令格式200顯示為具有特定大小的欄位。具 體舉例而言,雖然資料元寬度欄位164顯示為特定向量友善指令格式200中的一位元欄位,但是,本發明不限於此(亦即,泛型向量友善指令格式100慮及資料元寬度欄位164的其它大小)。
泛型向量友善指令格式100包含依圖2A中所示的次序而於下列出的下述欄位。
EVEX前置(位元組0-3)202-以四位元組形式編碼。
格式欄位140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位140以及其含有0×62(用於區別發明的一實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的一些位元欄位。
REX欄位205(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)及157BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應的VEX位元欄位相同的功能性,且使用1s互補形式來編碼,亦即,ZMM0被編碼為1111B,ZMM15被編碼為0000B。如同此技藝中所知般,指令的其它欄位將暫存器索引的較低的三個位元編碼(rrr、xxx及bbb),以致於藉由加上EVEX.R、EVEX.X及EVEX.B,可以形成Rrrr、Xxxx及Bbbb。
REX’欄位110-這是REX’欄位110的第一部份且是用以將擴充的32暫存器組的上16或下16編碼之EVEX.R’ 位元欄位(EVEX位元組1,位元[4]-R’)。在本發明的一實施例中,此位元與如下標示的其它位元以位元反轉格式儲存,以與BOUND指令區別(在已知的x86 32位元模式中),BOUND指令的實數作業碼位元組是62,但是,在MOD R/M欄位(下述)中未接受MOD欄位中11的值;本發明的替代實施例未以反轉格式儲存此位元及下述其它標示的位元。1的值用以將下16暫存器編碼。換言之,藉由結合來自其它欄位的EVEX.R’、EVEX.R及其它RRR以形成R’Rrrr。
作業碼映射欄位215(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先作業碼位元組(0F,0F 38,或0F 3)編碼。
資料元寬度欄位164(EVEX位元組2,位元[7]-W)-由記號EVEX.W表示。EVEX.W用以界定資料型式的粒度(大小)(32位元資料元或64位元資料元)。
EVEX.vvvv 220(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1s互補)形式指定的第一源暫存器運算元編碼,且對於具有2或更多源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1s互補形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位220將依反轉(1s互補)形式儲存的第一源暫存器指定符的4低階位元編碼。取決於指令,額外的不同EVEX位元欄位被用以 擴充指定符尺寸至32暫存器。
EVEX.U 168等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前置編碼欄位225(EVEX位元組2,位元[1:0]-pp)-提供增加的位元用於基礎作業欄位。除了提供支援給EVEX前置格式的舊有SSE指令,這也具有使SIMD前置小巧化(而非要求位元組來表示SIMD前置,EVEX前置僅要求2位元)的優點。在一實施例中,為了支援以舊有格式及EVEX前置格式等二各式使用SIMD前置(66H、F2H、F3H)之舊有SSE指令,這些舊有SIMD前置被編碼成SIMD前置編碼欄位;以及,在被提供給解碼器的PLA(以致於PLA可以執行這些舊有指令的舊有及EVEX等二格式而不用修改)之前,在運行時間時被擴展成舊有SIMD前置。雖然較新的指令可以直接使用EVEX前置編碼欄位的內容作為運算碼擴充,但是,某些實施例為了一致性而以類似方式擴展,但允許不同的意義由這些舊有SIMD前置規定。替代實施例可以重新設計PLA以支援2位元SIMD前置編碼,因而不要求擴展。
阿爾發欄位152(EVEX位元組3,位元[7])-EH;也稱為EVEX.EH、EXEX.rs、EVEX.RL、EVEX.寫入遮罩控制及EVEX.N;也以α顯示)-如先前所述般,此欄位是內容特定的。
貝他欄位154(EVEX位元組3,位元[6:4])-SSS;也 稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以βββ顯示)-如先前所述般,此欄位是內容特定的。
REX’欄位110-這是REX’欄位的餘部且是可被用以將擴充的32暫存器組的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式儲存。1的值被用以將下16暫存器編碼。換言之,藉由結合EVEX.V’、EVEX.vvvv以形成V’VVVV。
寫入遮罩欄位170(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在發明的一實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用實體接線至所有或硬體之寫入遮罩,所述硬體是繞過遮罩硬體)。
實數作業碼欄位230(位元組4)也稱為作業碼位元組。在此欄位中指定作業碼的一部份。
MOD R/M欄位240(位元組5)包含MOD欄位242、Reg欄位244及R/M欄位246。如同先前所述般,MOD欄位242的內容區別記憶體存取與非記憶體存取作業之間。Reg欄位244的角色可以總合為二情形:將目的地暫存器運算元或源暫存器運算元編碼,或是被當作作業碼擴充來處理且不被用以將任何指令運算元編碼。R/M欄位246的角色可以包含下述:將參考記憶體位址的指令運算元編碼,或者,將目的地暫存器運算元或源暫存器運算元 編碼。
比例、索引、基礎(SIB)位元組(位元組6)-如同先前所述般,比例欄位150的內容是用於記憶體位址產生。SIB.xxx 254及SIB.bbb 256-這些欄位的內容先前已被述及與暫存器索引Xxxx及Bbbb有關。
位移欄位162A(位元組7-10)-當MOD欄位242含有10時,位元組7-10是位移欄位162A,且其與舊有32位元位移(disp32)相同工作並以位元組粒度工作。
位移因數欄位162B(位元組7)-當MOD欄位242含有01時,位元組7是位移因數欄位162B。此欄位的位置與以位元組粒度工作的舊有x86指令集8位元位移(disp8)的位置相同。由於disp8是正負號擴充,所以,其僅可以在-128與127位元組差距之間定址;以64位元組快取線的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0及64之8位元;由於通常需要更大的範圍,所以使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位162B是disp8的再解譯;當使用位移因數欄位162B時,真實的位移由位移因數欄位的內容乘以記憶體運算元存取的大小(N)所決定。此型式的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有大許多的範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,因此,位址差距的冗餘低階位元不需被編碼。換言之,位移因數欄位162B替代舊有x86指令集8位元位 移。因此,位移因數欄位162B以同於x86指令集8位元位移的方式編碼(以致於ModRM/SIM編碼規則不變),僅有的例外是disp8被過載至disp8*N。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以取得位元組方式的位址差距)。
立即欄位172如先前所述地操作。
完全作業碼欄位
圖2B是方塊圖,顯示根據本發明的一實施例之構成完全作業碼欄位174之特定的向量友善指令格式200的欄位。具體而言,完全作業碼欄位174包含格式欄位140、基礎作業欄位142及資料元寬度(W)欄位164。基礎作業欄位142包含前置編碼欄位225、作業碼映射欄位215及實數作業碼欄位230。
暫存器索引欄位
圖2C是方塊圖,顯示根據本發明的一實施例之構成暫存器索引欄位144之特定的向量友善指令格式200的欄位。具體而言,暫存器索引欄位144包含REX欄位205、REX’欄位210、MODR/M.reg欄位244、MODR/M.r/m欄位246、VVVV欄位220、xxx欄位254及bbb欄位256。
擴增作業欄位
圖2D是方塊圖,顯示根據本發明的一實施例之構成擴增作業欄位150之特定向量友善指令格式200的欄位。當等級(U)欄位168含有0時,其意謂EVEX.U0(等級A168A);當其含有1時,其表示EVEX.U1(等級B 168B)。當U=0及MOD欄位242含有11時(表示無記憶體存取作業),阿爾發欄位152(EVEX位元組3,位元[7]-EH)被解譯為rs欄位152A。當rs欄位152A含有1(捨入152A.1)時,貝他欄位154(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位154A。捨入控制欄位154A包含一位元SAE欄位156及二位元捨入作業欄位158。當rs欄位152A含有0(資料轉換152A.2)時,貝他欄位154(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料轉換欄位154B。當U=0及MOD欄位242含有00、01或10(表示記憶體存取作業)時,阿爾發欄位152(EVEX位元組3,位元[7]-EH)被解譯為逐出暗示(EH)欄位152B及貝他欄位154(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料操縱欄位154C。
當U=1時,阿爾發欄位152(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位152C。當U=1及MOD欄位242含有11(表示無記憶體存取作業)時,貝他欄位154的一部份(EVEX位元組3,位元[4]-S0)被解譯為RL欄位157A;當其含有1(捨入157A.1)時,貝他欄位154的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨入作業欄位159A,而當RL欄位157A含有0(VSIZE 157.A2)時,貝他欄位154的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位242含有00、01或10(表示記憶體存取作業)時,貝他欄位154(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位157B(EVEX位元組3,位元[4]-B)。
C.舉例說明的暫存器架構
圖3是根據本發明的一實施例之暫存器架構300的方塊圖。在所示的實施例中,有512位元寬的32個向量暫存器310;這些暫存器稱為zmm0至zmm31。較低的16zmm暫存器的低階256位元覆蓋於暫存器ymm0-16之上。較低的16zmm暫存器的低階128位元(ymm暫存器的低階128位元)覆蓋於暫存器xmm0-15之上。如下述表格中所示般,特定向量友善指令格式200對這些被覆蓋的暫存器檔案操作。
換言之,向量長度欄位159B在最大長度與一或更多其它較短的長度之間選取,其中,每一此較短長度是先前長度的長度之一半;以及,不具向量長度欄位159B的指令樣板對最大向量長度作業。此外,在一實施例中,特定向量友善指令格式200的等級B指令樣板對緊縮的或純量的單一/雙倍精度浮點資料及緊縮的或純量的整數資料作業。純量作業是對zmm/ymm/xmm暫存器中最低階資料元位置執行的作業;更高階的資料元位置視實施例而保留成與它們在指令之前相同或者零化。
寫入遮罩暫存器315-在所示的實施例中,有8個大小均為64位元之寫入遮罩暫存器(k0至k7)。在替代實施例中,寫入遮罩暫存器315大小為16位元。如同先前所述般,在本發明的一實施例中,向量遮罩暫存器k0無法作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地使用於該指 令的寫入遮罩禁能。
一般用途暫存器325-在所示的實施例中,有十六個64位元一般用途暫存器,它們與現有的x86定址模式一起用以將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15表示。
純量浮點堆疊暫存器檔案(x87堆疊)345,MMX緊縮整數平坦暫存器檔案350疊於其上-在所示的實施例中,x87堆疊是八元堆疊,用以使用x87指令集延伸,對32/64/80位元浮點資料執行純量浮點作業;而MMX暫存器被用以對64位元緊縮整數資料執行作業,以及為了某些在MMX及XMM暫存器之間執行的作業而固持運算元。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少或不同的暫存器檔案及暫存器。
D.舉例說明的核心架構、處理器及電腦架構
為了不同目的而以不同方式及在不同處理器中,實施處理器核心。舉例而言,這些核心的實施包含:1)要用於一般用途計算的一般用途有序核心;2)要用於一般用途計算的高性能一般用途亂序核心;3)主要用於圖形及/或科學(輸貫量)計算的特定用途的核心。不同處理器的實施包含:1)CPU,包含要用於一般用途計算的一或更多一般用 途有序核心及/或要用於一般用途計算的一或更多一般用途亂序核心;及2)副處理器,包含主要用於圖形及/或科學(輸貫量)計算的一或更多特定用途核心。這些不同的處理器導致不同的電腦系統架構,包含:1)在與CPU分別的晶片上的副處理器;2)在與CPU相同的封裝中在分別的晶粒上的副處理器;3)在與CPU相同的晶粒上的副處理器(在此情形中,此副處理器有時被稱為特定用途邏輯,例如集成的圖形及/或科學(輸貫量)邏輯,或是作為特定用途核心);及4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或應用處理器)、上述副處理器及其它功能。於下說明舉例說明的核心架構,接著是舉例說明的處理器及電腦架構的說明。
圖4A是方塊圖,顯示根據本發明的實施例之舉例說明的有序管線及舉例說明的暫存器重命名亂序發出/執行管線。圖4B是方塊圖,顯示根據本發明的實施例之要包含於處理器中之舉例說明的暫存器重命名亂序發出/執行架構核心以及有序架構核心之舉例說明的實施例。圖4A-B中的實線方塊顯示有序管線及有序核心,而選加的虛線方塊顯示暫存器重命名亂序發出/執行管線及核心。在有序態樣是亂序態樣的子集合之假設下,說明亂序態樣。
在圖4A中,處理器管線400包含提取級402、長度解碼級404、解碼級406、分配級408、重命名級410、排程(也稱為派遣或發出)級412、暫存器讀取/記憶體讀取級414、執行級416、寫回/記憶體寫入級418、例外處理級 422及提交級424。
圖4B顯示處理器核心490,處理器核心490包含耦合至執行引擎單元450之前端單元430,執行引擎單元450及前端單元430都耦合至記憶體單元470。核心490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、很長指令字(VLIW)核心或是混合或替代核心型式。作為又另一選項,核心490可為特別用途的核心,舉例而言,例如網路或通訊核心、壓縮引擎、副處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖形核心、等等。
前端單元430包含分支預測單元432,分支預測單元432耦合至指令快取單元434,指令快取單元434耦合至指令轉譯旁看緩衝器(TLB)436,指令轉譯旁看緩衝器(TLB)436耦合至指令提取單元438,指令提取單元438耦合至解碼單元440。解碼單元440(或解碼器)將指令解碼,並產生一或更多微作業、微碼進入點、微指令、其它指令,或是產生從原始指令解碼,從原始指令以其它方式反應、從原始指令導出的其它控制訊號,以作為輸出。使用各種不同的機構,以實施解碼單元440。適當的機構實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心490包含儲存用於某些巨集指令的微碼(例如,在解碼單元440中或是在前端單元430之內)之微碼ROM或是其它媒體。解碼單元440耦合至執行引擎單元450中的重 命名/分配器單元452。
執行引擎單元450包含重命名/分配器單元452,命名/分配器單元452耦合至退出單元454及一或更多排程器單元456的集合。排程器單元456代表任何數目的不同排程器,包含保留站、中央指令窗、等等。排程器單元456耦合至實體暫存器檔案單元458。各實體暫存器檔案單元458代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標,指令指標是要被執行的下一指令的位址)等等的一或更多不同的資料型式。在一實施例中,實體暫存器檔案單元458包括向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。這些暫存器單元提供架構向量暫存器、向量遮罩暫存器及一般用途暫存器。實體暫存器檔案單元458由退出單元454重疊,以顯示實施暫存器重命名及亂序執行的各種方式(例如,使用重排序緩衝器及退出暫存器檔案;使用未來檔案、歷史緩衝器及退出暫存器檔案;使用暫存器映射及暫存器池;等等)。退出單元454及實體暫存器檔案單元458耦合至執行叢集460。執行叢集460包含一或更多執行單元462的集合以及一或更多記憶體存取單元464的集合。執行單元462執行不同的作業(例如,偏移、加法、減法、乘法)以及對不同型式的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行。雖然某些實施例包含專用於特定功能或功能集的一些執行 單元,但是,其它實施例可以僅包含一執行單元或是複數個都執行所有功能的執行單元。由於某些實施例產生用於某些型式的資料/作業之分別的管線(例如,均具有它們自己的排程器單元、實體暫存器檔案單元及/或執行叢集的純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管理,以及,在分別的記憶體存取管線的情形中,實施僅有此管線的執行叢集具有記憶體存取單元464的某些實施例),所以,排程器單元456、實體暫存器檔案單元458及執行叢集460顯示為可能為複數的。也應瞭解,在使用分別的管線時,這些管線中之一或更多者可以是亂序發出/執行,而其它是有序的。
記憶體存取單元464的集合耦合至記憶體單元470,記憶體單元470包含耦合至資料快取單元474的資料TLB單元472,資料快取單元474耦合至階層2(L2)快取單元476。在一舉例說明的實施例中,記憶體存取單元464包含載入單元、儲存位址單元及儲存資料單元,各單元耦合至記憶體單元470中的資料TLB單元472。指令快取單元434又耦合至記憶體單元470中的階層2(L2)快取單元476。L2快取單元476耦合至一或更多其它階層的快取記憶體以及最後耦合至主記憶體。
舉例而言,舉例說明的暫存器重命名亂序發出/執行核心架構如下地實施管線400:1)指令提取438執行提取及長度解碼級402和404;2)解碼單元440執行解碼級 406;3)重命名/分配器單元452執行分配級408及重命名級410;4)排程器單元456執行排程級412;5)實體暫存器檔案單元458及記憶體單元470執行暫存器讀取/記憶體讀取級414;執行叢集460執行執行級416;6)記憶體單元470及實體暫存器檔案單元458執行寫回/記憶體寫入級418;7)各種單元涉及例外處理級422;以及,8)退出單元454及實體暫存器檔案單元458執行提交級424。
核心490支援一或更多指令集(例如,x86指令集(增加較新版本的某些擴充);加州太陽谷的MIPS Technologies的MIPS指令集;加州太陽谷的ARM Holdings的ARM指令集(加上選加的例如NEON之增加擴充)),包含此處所述的指令。在一實施例中,核心490包含邏輯以支援緊縮資料指令集擴充(例如AVX1、AVX2),藉以允許由很多多媒體應用所使用的作業使用緊縮資料而執行。
應瞭解,核心支援多緒(執行二或更多平行的作業或緒組),以及,以各種方式如此執行,這些方式包含時間切割多緒、同時多緒(其中,單一實體核心提供用於實體核心同時正多緒化的複數個緒中的各緒之邏輯核心)或是其組合(例如,時間切割提取及解碼以及其後的同時多緒,例如Intel® Hyperthreading技術中所示)。
雖然在亂序執行的環境中說明暫存器重命名,但是,應瞭解,暫存器重命名可用於有序架構中。雖然所示的處理器的實施例也包含分別的指令及資料快取單元434/474以及共用的L2快取單元476,但是,替代實施例具有用 於指令及資料之單一內部快取,例如階層1(L1)內部快取或是多階層的內部快取。在某些實施例中,系統包含內部快取及外部快取的組合,外部快取是核心及/或處理器的外部。替代地,所有的快取可以是核心及/或處理器的外部。
圖5A-B顯示更特定之舉例說明的有序核心架構的方塊圖,其中,核心是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)中之一。這些邏輯區塊視應用而經由設有某些固定功能邏輯之高頻寬互連網路(例如,環式網路)、記憶體I/O介面及其它必需I/O邏輯而通訊。
圖5A是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路502的連接及其本地子集合的階級2(L2)快取記憶體504之方塊圖。在一實施例中,指令解碼器500支援設有緊縮資料指令集擴充的x86指令集。階層1(L1)快取記憶體506允許對快取記憶體低潛時存取至純量及向量單元。雖然在一實施例中(為了簡化設計),純量單元508和向量單元510使用分開的暫存器集(分別為純量暫存器512和向量暫存器514)及在它們之間傳送的資料被寫至記憶體,然後從階層1(L1)快取記憶體506讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集或是包含通訊路徑,允許資料在二暫存器檔案之間傳送而不用寫入及讀回)。
L2快取記憶體504的本地子集合是被分割成複數個分別的本地子集合之通用L2快取記憶體的部份,每一處 理器核心有一分別的本地子集合。各處理器核心對於它自己的L2快取記憶體504的本地子集合具有直接存取路徑。與存取它們自己的本地L2快取記憶體子集合之其它處理器核心相平行地,由處理器核心讀取的資料被儲存在該處理器核心的L2快取子集合504中且可以被快速地存取。由處理器核心寫入的資料儲存在它自己的L2快取子集合504中,且假使需要時從其它子集合湧入。環式網路確保共用資料的同調性。環式網路是雙向的以允許例如處理器核心、L2快取記憶體及其它邏輯區塊之代理器以在晶片之內彼此通訊。各環式資料路徑是每一方向1012位元寬。
圖5B是根據本發明的實施例的圖5A中的處理器核心的部份之放大視圖。圖5B包含L1快取記憶體504的L1資料快取記憶體506A部份、以及關於向量單元510和向量暫存器514的更多細節。具體而言,向量單元510是16寬的向量處理單元(VPU)(參見16寬的ALU 528),其執行整數、單精準浮點及雙倍精度浮點指令中之一或更多。VPU以調和單元520支援調和暫存器輸入,以數字轉換單元522A-B支援數字轉換,以及以記憶體輸入上的複製單元524支援複製。寫入遮罩暫存器526允許預測造成的向量寫入。
圖6是根據本發明的實施例之具有一個以上的核心、具有集成的記憶體控制器及具有集成的圖形的處理器600的方塊圖。圖6中的粗線框顯示具有單核心602A、系統 代理器610、一或更多匯流排控制器單元616的組之處理器600,而選加的虛線框顯示設有多核心602A-N、系統代理器單元610中一或更多整合的記憶體控制器單元614的組、以及特定用途邏輯608的替代處理器600。
因此,處理器600的不同實施包含:1)CPU,設有特定用途邏輯608及核心602A-N,特定用途邏輯608是集成的圖形及/或科學(通量)邏輯(包含一或更多核心),核心602A-N是一或更多一般用途核心(例如,一般用途有序核心、一般用途亂序核心、二者之組合);2)副處理器,設有核心602A-N,核心602A-N是大量主要用於圖形及/或科學(通量)的特定用途核心;以及,3)副處理器,設有核心602A-N,核心1202A-N是大量一般用途的有序核心。因此,處理器600可為一般用途處理器、副處理器或特定用途處理器,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途圖形處理單元)、高通量多集成核心(MIC)副處理器(包含30或更多核心)、嵌入式處理器、等等。處理器可以實施在一或更多晶片上。使用例如BiCMOS、CMOS或NMOS等多種製程技術之任一者,處理器600可以實施在一或更多基底上及/或為其一部份。
記憶體階層架構包含在核心內的一或更多階層的快取記憶體、一組或一或更多共用快取單元606及耦合至集成的記憶體控制器單元614組之外部記憶體(未顯示)。共用快取單元606組可以包含(例如階層2(L2)、階層3(L3)、 階層4(L4)或其它階層快取記憶體等)一或更多中級快取、最後階層快取記憶體(LLC)及/或其組合。雖然在一實施例中,環式基礎互連單元612將整合圖形邏輯608、共用快取單元606的組及系統代理器單元610/集成的記憶體控制器單元614互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一實施例中,在一或更多快取單元606與核心602-A-N之間維持同調性。
在某些實施例中,核心602A-N中之一或更多核心能夠多緒化。系統代理器610包含協調及操作核心602A-N之那些組件。系統代理器單元610可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心602A-N及集成的圖形邏輯608的電力狀態所需的邏輯及組件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構指令集的觀點而言,核心602A-N可以是同質的或異質的;亦即,核心602A-N中之二或更多者能夠執行相同的指令集,而其它核心能夠僅執行該指令集的子集合或不同的指令集。
圖7-10是舉例說明的電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置及各式各樣的其它電子裝置之此領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處 所揭示的處理器及/或其它執行邏輯的眾多種類的系統或電子裝置通常是適合的。
現在參考圖7,其顯示根據本發明的一實施例之系統700的方塊圖。系統700可以包含耦合至控制器集線器720之一或更多處理器710、715。在一實施例中,控制器集線器720包含圖形記憶體控制器集線器(GMCH)790及輸入/輸出集線器(IOH)750(可以在分別的晶片上);GMCH 790包含記憶體及圖形控制器,記憶體740及副處理器745耦合至記憶體及圖形控制器;IOH 750將輸入/輸出(I/O)裝置760耦合至GMCH 790。替代地,記憶體及圖形控制器中之一或二者集成於處理器之內(如本文所述),記憶體740及副處理器745直接耦合至處理器710及設有IOH 750之單晶片中的控制器集線器720。
在圖7中以虛線標示增加的處理器715的選加本質。每一處理器710、715包含此處所述的一或更多處理核心以及可以是某版本的處理器600。
舉例而言,記憶體740可以是動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)或是二者的組合。對於至少一實施例,控制器集線器720經由多接點匯流排而與處理器710、715通訊,多接點匯流排為例如前側匯流排(FSB)、例如快速路徑互連(QuickPath Interconnect,QPI)之點對點介面或是類似連接795。
在一實施例中,副處理器745是特定用途處理器,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、 圖形處理器、GPGPU、嵌入式處理器或之類者。在一實施例中,控制器集線器720包含集成的圖形加速器。
以包含架構的、微架構的、熱的、耗電的特徵諸如此類各種準則計量的觀點而言,實體資源710、715之間有各種差異。
在一實施例中,處理器710執行控制一般型式的資料處理作業之指令。副處理器指令可以嵌入在指令之內。處理器710將這些副處理器指令視為應由附加的副處理器745執行的型式。因此,處理器710在副處理器匯流排上或其它互連上發出這些副處理器指令(或是代表副處理器指令的控制訊號)給副處理器745。副處理器745接受及執行收到的副處理器指令。
現在參考圖8,其顯示根據本發明的實施例之第一更特定舉例說明的系統800的方塊圖。如圖8中所示般,多處理器系統800是點對點互連系統,以及包含經由點對點互連850耦合的第一處理器870和第二處理器880。各處理器870及880可以是某版本的處理器600。在本發明的一實施例中,處理器870和880分別是處理器710和715,而副處理器838是副處理器745。在另一實施例中,處理器870及880分別是處理器710和副處理器745。
處理器870及880顯示為分別包含集成的記憶體控制器(IMC)單元872和882。處理器870也包含點對點(P-P)介面876和878作為它的匯流排控制器單元的一部份;類 似地,第二處理器880包含P-P介面886和888。處理器870、880可以使用P-P介面電路878、888而經由點對點(P-P)介面850來交換資訊。如同圖8中所示般,IMC 872和882將處理器耦合至各別記憶體,亦即記憶體832和記憶體834,它們可以是本地附著至各別處理器的主記憶體的部份。
處理器870、880使用點對點介面電路876、894、886、898,經由個別的P-P介面852、854而均可以與晶片組890交換資訊。晶片組890經由高性能介面839,而與副處理器838選加地交換資訊。在一實施例中,副處理器838是特別用途處理器,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。
共用的快取記憶體(未顯示)可以包含在任一處理器中或是二處理器的外部,但經由P-P互連與處理器連接,以致於假使處理器置於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取記憶體中。
晶片組890可以經由介面896而耦合至第一匯流排816。在一實施例中,第一匯流排816可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排之匯流排,但是,本發明的範圍不侷限於此。
如圖8中所示般,各式各樣的I/O裝置814與匯流排橋接器818耦合至第一匯流排816,匯流排橋接器818耦 合第一匯流排816至第二匯流排820。在一實施例中,例如副處理器、高通量MIC處理器、GPGPU、加速器(例如,圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列或是任何其它處理器等一或更多增加的處理器815耦合至第一匯流排816。在一實施例中,第二匯流排820可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排820,舉例而言,包含鍵盤及/或滑鼠822、通訊裝置827及例如包含指令/碼及資料830的碟片驅動器或其它大量儲存裝置的儲存單元828。此外,音頻I/O 824可以耦合至第二匯流排820。注意,其它架構是可能的。舉例而言,取代圖8的點對點架構,系統可以實施多接點匯流排或其它此類架構。
現在參考圖9,其顯示根據本發明的實施例之第二更特定的舉例說明的系統900之方塊圖。圖8及9中類似的元件帶有類似的代號,以及,圖8的某些態樣在圖9中被省略,以免模糊圖9的其它態樣。
圖9顯示處理器870、880分別包含集成的記憶體及I/O控制邏輯(CL)872和882。因此,CL 872、882包含集成的記憶體控制器單元及包含I/O控制邏輯。圖9顯示不僅記憶體832、834耦合至CL 872、882,I/O裝置914也耦合至控制邏輯872、882。舊有I/O裝置915耦合至晶片組890。
現在參考圖10,其顯示根據本發明的實施例之系統晶片(SoC)1000的方塊圖。圖6中類似的元件帶有類似的 代號。而且,虛線框關於更多先進的SoC的選加特點。在圖10中,互連單元1002耦合至:應用處理器1010,包含一或更多核心202A-N的集合及共用快取單元606;系統代理器單元610;匯流排控制器單元616;整合記憶體控制器單元614;一組或一或更多副處理器1020,包含集成的圖形邏輯、影像處理器、音頻處理器、以及視頻處理器;靜態隨機存取記憶體(SRAM)單元1030;直接記憶體存取(DMA)單元1032;以及用於耦合至一或更多外部顯示器的顯示單元1040。在一實施例中,副處理器1020包含特定用途處理器,舉例而言,例如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器、等等。
此處揭示的機制之實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置及至少一輸出裝置。
例如圖8中所示的程式碼830可以應用至輸入指令以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)或微處理器等處理器之任何系統。
程式碼可以以高階程序的或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組 合或機器語言來實施。事實上,此處所述的機制在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是經過編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入真正地產生邏輯的製造機器或處理器。
此機器可讀取的儲存媒體包含但不限於由機器或裝置製造或形成的物件之非暫時、實體配置,包括:例如硬碟、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可重寫記憶體(CD-RW)及磁光碟等任何其它型式的碟片之儲存媒體;例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)及靜態隨機存取記憶體(SRAM)之隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)之半導體裝置;磁性或光學卡;或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫時、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特點。這些實施例也意指程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變體、模仿或以其它方式轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體或其結合來實施。指令轉換器可以是在處理器上、不在處理器上或部份在處理器上及部份不在處理器上。
圖11是方塊圖,將根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令作對比。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、韌體、硬體或其各種結合來實施。圖11顯示高階語言1102的程式,可以由x86編譯器1104編譯以產生x86二進位碼1106,二進位碼1106可以由具有至少一x86指令集核心1116的處理器原地執行。具有至少一x86指令集核心1116的處理器代表藉由共容地執行或其它方式地處理下述,而能夠執行與具有至少一x86指令集核心的英特爾處理器實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的英特爾處理器上執行為目標之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器1104代表可以操作以產生x86二進位碼1106(例如,物件碼)之編譯器,x86二進位碼1106藉由或不藉由增加的 鏈結處理,都可以在具有至少一x86指令集核心1116的處理器上執行。類似地,圖11顯示高階語言1102的程式,使用替代指令集編譯器1108,可以將其編譯以產生替代指令集二進位碼1110,替代指令集二進位碼1110可以由不具有至少一x86指令集核心1114的處理器(例如,具有執行例如加州太陽谷的MIPS Technologies公司的MIPS指令集及/或加州太陽谷的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器1112用以將x86二進位碼1106轉換成可以由不具有x86指令集核心1114的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製作,所以,此轉換的碼不易與替代指令集二進位碼1110相同;但是,所述轉換的碼將完成一般作業及由來自替代指令集的指令組成。因此,指令轉換器1112代表軟體、韌體、硬體或其組合,其經由模仿、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼1106。
用於向量索引載入及儲存之方法和設備
高性能碼(HPC)的關鍵特徵是其具有可觀數目的記憶體參考,其中大部份是指向相同記憶體,但具有不同索引。根據目前的實施,這些記憶體索引中的各記憶體索引需要「分別的」一般用途暫存器(例如,在x86架構中的GPR x86-84)。藉由有限的暫存器集(例如8個x86及16個x64暫存器)及大數目的記憶體參考,GPR暫存器集會 快速地填滿,導致堆疊上的溢出及填充,以及,產生膨脹及無效率碼。此外,這些索引需要例如加法、乘法或減法等進一步計算,而所有這些算術都要求GPR純量計算,隨著遍及所有索引之相同計算而進一步消耗GPR暫存器堆疊及產生不必要的複製碼膨脹。
本發明的實施例包含向量索引載入/儲存指令,所述向量索引載入/儲存指令藉由使用SIMD向量暫存器作為用於各載入/儲存作業的索引暫存器而增進載入及儲存的性能。以此方式使用向量暫存器會加速索引交換,索引交換可以使用SIMD向量計算而不是GPR純量計算而完成,而造成更小巧及有效率的碼。本發明的實施例也在向量化迴路中自然地流動。由於所有的索引計算現在是在SIMD向量暫存器中被執行且不需要被溢出於堆疊上及接著被讀回以用於執行載入/儲存,所以,可以達成更有效率的HPC碼迴路的向量化。此外,這些實施例對於編譯器要向量化是顯著地更加容易(例如由於GPR堆疊的較少管理)。
本發明的一實施例包含採取下述形式的3源向量索引載入指令(VILD)及3源向量索引儲存指令(VIST):向量索引載入:VILD[B/W/D/Q]DST_SIMD_REG{k1}{z},[MEM+VectIndex],ImmSelectForVectIndex;及向量索引儲存:VIST[B/W/D/Q][MEM+VectIndex]{k1}{z},SRC_SIMD_REG,ImmSelectForVectIndex,其中:→MEM是記憶體基礎參考, →VectIndex是SIMD向量暫存器,→ImmSelectForVectIndex用於從VectorIndex暫存器中選取對應的索引,及→B/W/D/Q標示是否使用位元組、字、雙倍字或四倍字值來執行指令。
圖12顯示舉例說明的處理器1255,本發明的實施例可以於其上實施。在一實施例中,處理器1255的各核心0-N包含設有向量索引載入/儲存邏輯1291以用於執行此處所述的向量索引載入/儲存作業之記憶體管理單元1290。此外,各核心0-N包含一般用途暫存器(GPR)1205的組、向量暫存器1206的組及遮罩暫存器1207的組。在一實施例中,複數個向量資料元緊縮於各向量暫存器1206中,其具有512位元寬,用於儲存二個256位元值、四個128位元值、八個64位元值、十六個32位元值、等等。但是,本發明的基本原理不侷限於任何特定尺寸/型式的向量資料。在一實施例中,遮罩暫存器1207包含八個64位元運算元遮罩暫存器,用於對儲存在向量暫存器1206(例如,實施成上述遮罩暫存器k0-k7)中的值執行位元遮罩作業。但是,本發明的基本原理不侷限於任何特定遮罩暫存器尺寸/型式。
為了簡明起見,於圖12中顯示單一處理器核心(「核心0」)的細節。但是,將瞭解,圖12中所示的各核心可以具有與核心0相同的邏輯集。舉例而言,各核心包含專用階層1(L1)快取記憶體1212及階層2(L2)快取記憶體 1211,用於根據指定的快取管理政策而快取指令及資料。L1快取記憶體1212包含用於儲存指令之分別的指令快取記憶體1220、以及用於儲存資料之分別的資料快取記憶體1221。以可為固定尺寸(例如長度64、128、512位元組)之快取線的粒度,管理儲存於各式各樣的處理器快取記憶體內的指令及資料。本舉例說明的實施例之各核心具有:指令提取單元1210,用於從主記憶體1200及/或共用階層3(L3)快取記憶體1216提取指令;解碼單元1220,用於將指令解碼(例如,將程式指令解碼成微作業或是「μops」);執行單元1240,用於執行指令;以及,寫回單元1250,用於使指令退出及將結果寫回。
指令提取單元1210包含各式各樣習知的組件,包含:下一指令指標器1203,用於儲存要從記憶體1200(或是快取記憶體中之一)提取的下一指令之位址;指令轉譯旁看緩衝器(ITLB)1204,用於儲存最近使用的虛擬對實體指令位址對映,以增進位址轉譯速度;分支預測單元1202,用於推測地預測指令分支位址;以及,分支標的緩衝器(BTB)1201,用於儲存分支位址及標的位址。一旦被提取時,指令接著被串流至包含解碼單元1230、執行單元1240及寫回單元1250之指令管線的其餘級。這些單元中的各單元之結構及功能是具有此技藝中的一般技術者所熟知的,且於此將不會詳述,以免模糊本發明的不同實施例之有關態樣。
圖13顯示向量索引載入/儲存邏輯1291的一實施 例,其使用向量索引暫存器1301以儲存源索引值i0-i7及目的地/源向量暫存器1302以用於儲存自記憶體1200載入的向量,以回應向量索引載入指令,或儲存至記憶體1200以回應向量索引儲存指令。在一實施例中,目的地/源向量暫存器1302包括具有8個64位元的向量資料元(位於63:0、127:64、191:128等等)之512位元向量暫存器,以及,向量索引暫存器1301包括具有八個64位元索引值的512位元向量暫存器。遮罩暫存器1303儲存用於執行如此處所述的寫入遮罩作業之遮罩值。在一實施例中,遮罩暫存器1303是64位元暫存器(舉例而言,例如上述k0-k7暫存器)。提供基準記憶體參考1304用於與來自向量索引暫存器1301的索引相結合以用於計算記憶體位址。此外,提供立即選取值1305用以辨識要與基準記憶體參考1304相結合以計算最後記憶體位址之來自向量索引暫存器1301的特定向量索引。雖然為了說明而於上述中述明各式各樣舉例說明的暫存器尺寸及資料型式,但是,應注意,本發明的基本原理不侷限於索引、遮罩、立即值或資料元的任何特定尺寸/型式。
在操作時,眾多不同索引i0-i7儲存於向量索引暫存器1301內。向量索引載入/儲存邏輯1291從立即值1305辨識要用於目前載入/儲存作業之索引。在一實施例中,立即值1305包括在0與N-1之間的值以識別儲存在向量索引暫存器1301內的N個不同的索引值(在圖13中,N=8)。一旦向量索引載入/儲存邏輯1291辨識適當的索引 時,其會將索引與基準記憶體參考1304相結合以計算用於載入/儲存作業的記憶體位址。然後,其使用目的地/源向量暫存器1302,將值從記憶體載至向量暫存器1302內的資料元位置,或將值從向量暫存器1302內的資料元位置載入至記憶體,以執行載入/儲存。在一實施例中,使用來自遮罩暫存器1303的遮罩值以指明要自/至給定的記憶體位址載出入/儲存之元的數目。
圖14顯示從記憶體載入雙倍精度浮點值(各64位元)之特定實例,其中Struct Atom[double x,y,z]及Atom AtomArray[10000]。在本實例中,MEM指向至陣列的基部,亦即,& AtomArray[0]。VectIndex是含有八個值作為記憶體索引(DWORD值)之ZMM1暫存器1301:ZMM1={7000,6000,4000,3000,900,500,2000,1000}。遮罩k1 1303=二進位00000111,表示元x,y,及z是要依給定索引載入(如LSB位置中的三個設定位元111所示)。在所示的實例中,假定索引2000將資料識別為要被載入,其被儲存於ZMM1暫存器的第二元中(元1)。結果,為了從AtomArray的索引2000載入Atom元x,y,z,而執行指令VILD ZMM2{K1},[MEM+ZMM1],1。載入作業的結果是目的地向量暫存器1302,ZMM2={0,0,0,0,0,AtomArray[2000].z,AtomArray[2000].y,AtomArray[2000].x}。
圖15顯示根據本發明的一實施例之方法。在上述架構的環境內執行所述方法,但不侷限於任何特定系統架 構。
在1501,從記憶體提取或是從快取記憶體(例如L1、L2或L3快取記憶體)讀取向量索引載入指令。在1502,將索引值儲存於源向量索引暫存器中。在1503,使用由向量索引載入指令包含的立即值,在向量索引暫存器內識別要與基準記憶體位址相結合的索引。在1504,索引與基準記憶體參考相結合以決定用於載入作業的記憶體位址。最後,在1505,從記憶體載入以記憶體位址識別的資料(舉例而言,例如上述陣列資料)。
圖16顯示根據本發明的一實施例之方法。在上述架構的環境內執行所述方法,但不侷限於任何特定系統架構。
在1601,從記憶體提取或是從快取記憶體(例如L1、L2或L3快取記憶體)讀取向量索引儲存指令。在1602,將索引值儲存於源向量索引暫存器中。在1603,使用由向量索引儲存指令包含的立即值,在向量索引暫存器內識別要與基準記憶體位址相結合的索引。在1604,索引與基準記憶體參考相結合以決定用於儲存作業的記憶體位址。最後,在1605,將資料儲存在記憶體位址之記憶體。
如上所述,高性能碼(HPC)具有可觀數目的記憶體參考,其中,基準記憶體位址相同,但是索引不同。此外,索引通常被計算且值儲存及維持於SIMD向量暫存器中。本發明的實施例利用維持及再使用SIMD向量暫存器中的 索引以執行載入及儲存,而不執行溢出至記憶體及/或填至GPR暫存器作業。
舉例而言,考慮下述應用使用情形,其為來自對雙精度資料集作業的HPC應用之C碼序的快照:
上述程式碼取決於是否有「if」或「else」條件而分別從f_tbl或從eed_cub載入4個元件。此外,隨著迴路向量化,索引的計算(亦即,「ind」)自然地出現在向量SIMD暫存器中。
以簡單情形為例,假定對於向量化迴路,「if」條件為真。在該情形中,所有8個索引「ind」在SIMD向量暫存器中。由於僅有4個在給定的索引之元要被載入,所 以,遮罩被設定成0x00001111。注意,遮罩值及指向f_tbl的基礎位址暫存器對於所有這些8個載入是固定的。因此,僅有的差異是索引。
相反地,依據目前的ISA實施,為了執行「f_tbl」陣列的8個向量載入,SIMD暫存器必須溢出至自其讀出的記憶體及索引值。這造成膨脹的碼,假使一般用途暫存器(例如x86-64 GPR暫存器)在任何它處被使用時會造成它們進一步溢出-填充,而造成緩慢碼。
用於執行向量索引載入/儲存之本發明的實施例,當要執行負載/儲存時,藉由再使用SIMD暫存器中的索引值而解決此問題。這造成大幅更加可讀之外還是有效率、小巧的全SIMD碼。此特徵類似於用於聚集及散佈之SIMD索引暫存器,但使其擴充至一般的載入及儲存。
下述實例將有助於突顯此處所述的本發明的實施例的優點:Struct Atom[double x,y,z];Atom AtomArray[10000];1.記憶體被定義為:Struct Table[double x,y,z,w];Table f_tbl[10000];2.如下述表1所示般,根據本發明的一實施例,被計算的索引固持於ZMM暫存器中,以及,顯示用於使用x86-64 GPR暫存器之實施的對應值。
假定遮罩k1被設定於0x0F以載入四個元x,y,z及w。
使用目前的ISA實施,如下所述地在暫存器ZMM1-8中執行八個向量載入。
VMOVDQA ZMM1{k1},[MEM+r8] VMOVDQA ZMM2{k1},[MEM+r9] VMOVDQA ZMM3{k1},[MEM+r10] VMOVDQA ZMM4{k1},[MEM+r11] VMOVDQA ZMM5{k1},[MEM+r12] VMOVDQA ZMM6{k1},[MEM+r13] VMOVDQA ZMM7{k1},[MEM+r14] VMOVDQA ZMM8{k1},[MEM+r15]
依據本發明的實施例,使用向量索引載入,索引可以儲存於一或更多ZMM暫存器中(例如,在下述實例中的ZMM15)。使用上述指令格式,以下述指令序列(假定四倍字(Q)值),執行對應的向量索引載入:VILDQ ZMM1{k1},[MEM+ZMM15],0 VILDQ ZMM2{k1},[MEM+ZMM15],1 VILDQ ZMM3{k1},[MEM+ZMM15],2 VILDQ ZMM4{k1},[MEM+ZMM15],3 VILDQ ZMM5{k1},[MEM+ZMM15],4 VILDQ ZMM6{k1},[MEM+ZMM15],5 VILDQ ZMM7{k1},[MEM+ZMM15],6 VILDQ ZMM8{k1},[MEM+ZMM15],7
使用VIST,對於儲存作業,執行類似的指令序列。 注意,對於上述VILD指令(以及對於VIST指令),當檢索索引值時不需要涉及GPR暫存器。
在前述說明書中,參考本發明的特定舉例說明的實施例,說明本發明的實施例。但是,顯然可知,在不悖離後附的申請專利範圍中揭示的本發明的更廣義精神及範圍之下,可以作各種修改及變化。因此,說明書及圖式被視為是說明性的而非限制性的。
本發明的實施例包含上述說明之各式各樣的步驟。步驟可以以機器可執行的指令體現,這些指令可用以促使一般用途或特定用途的處理器執行這些步驟。替代地,這些步驟可以由含有用於執行步驟之實體接線的邏輯之特定硬體組件或是由程式化的電腦組件及客製化硬體組件的任何組合所執行。
如同此處所述般,指令意指例如特定應用積體電路(ASIC)等硬體的特定配置,ASIC係配置成執行某些作業或意指具有儲存在記憶體中的預定功能或軟體指令,該記憶體係體現於非暫態的電腦可讀取媒體中。如此,使用儲存於及執行於一或更多電子裝置(例如終端站台、網路元件等等)上的碼及資料,可以實施圖式中所示的技術。這些電子裝置使用電腦可讀取的媒體以儲存及通訊(內部地及/或經由網路而與其它電子裝置通訊)碼及資料,電腦可讀取的媒體可為例如非暫態的電腦機器可讀取的儲存媒體(例如磁碟、光碟、隨機存取記憶體、唯讀記憶體、快閃記憶體裝置、相變記憶體)以及暫態的電腦可讀取通訊媒 體(例如電的、光學的、聲的或其它形式的傳播訊號-例如載波、紅外線訊號、數位訊號、等等)。此外,這些電子裝置典型地包含一或更多耦合至一或更多其它組件的處理器,一或更多其它組件可為例如一或更多儲存裝置(非暫態的機器可讀取的儲存媒體)、使用者輸入/輸出裝置(例如鍵盤、觸控螢幕及/或顯示器)及網路連接。該組處理器及其它組件的耦合典型上經由一或更多匯流排及橋接器(也稱為匯流排控制器)。載送網路交通之儲存裝置及訊號分別代表一或更多機器可讀取的儲存媒體以及機器可讀取的通訊媒體。因此,給定的電子裝置之儲存裝置典型地儲存用於在該電子裝置的一或更多處理器的組上執行之碼及/或資料。當然,可以使用軟體、韌體及/或硬體的不同組合,實施本發明的實施例之一或更多部份。在此詳細說明中,為了說明之目的,提出眾多特定細節以助於完整瞭解本發明。但是,習於此技藝者將清楚,不用這些特定細節中的某些細節,仍可實施本發明。在某些情形中,未特別詳細地說明熟知的結構及功能,以免模糊本發明的標的。因此,本發明的範圍及精神應以後附的申請專利範圍之觀點來判斷。
174‧‧‧全作業碼欄位
140‧‧‧格式欄位
142‧‧‧基礎作業欄位
144‧‧‧暫存器索引欄位
146‧‧‧修飾符欄位
150‧‧‧擴增作業欄位
168‧‧‧等級欄位
152‧‧‧阿爾發欄位
154‧‧‧貝他欄位
160‧‧‧比例欄位
162A‧‧‧位移欄位
162B‧‧‧位移因數欄位
164‧‧‧資料元寬度欄位
170‧‧‧寫入遮罩欄位
172‧‧‧立即欄位
100‧‧‧泛型向量友善指令格式
105‧‧‧無記憶體存取
110‧‧‧無記憶體存取、完全捨入控制型作業
146A‧‧‧無記憶體存取
168A‧‧‧等級A
152A‧‧‧RS欄位
152A.1‧‧‧捨入
154A‧‧‧捨入控制欄位
156‧‧‧浮點例外欄位
158‧‧‧捨入作業欄位
115‧‧‧無記憶體存取資料轉換型式作業
152A.2‧‧‧資料轉換
154B‧‧‧資料轉換欄位
120‧‧‧記憶體存取
125‧‧‧記憶體存取、暫時
146B‧‧‧記憶體存取
152B‧‧‧逐出暗示欄位
152B.1‧‧‧暫時
130‧‧‧記憶體存取非暫時
152B.2‧‧‧非暫時
154C‧‧‧資料操緃欄位

Claims (27)

  1. 一種處理器,包括:向量索引暫存器,用以儲存複數個索引值;遮罩暫存器,其從該向量索引暫存器分離,該遮罩暫存器用以儲存複數個遮罩位元;向量暫存器,用以儲存來自記憶體載入的複數個向量資料元;以及向量索引載入邏輯,用以使用指令的立即值以識別要用於載入作業之儲存於該向量索引暫存器中的索引,以及回應地結合該索引與基準記憶體位址以決定用於該載入作業的記憶體位址,該向量索引載入邏輯用以根據該複數個遮罩位元而將向量資料元從該記憶體位址載至該向量暫存器。
  2. 如申請專利範圍第1項之處理器,其中,該複數個遮罩位元標示要從該記憶體位址載入的向量資料元的數目。
  3. 如申請專利範圍第1項之處理器,其中,該遮罩暫存器包括64位元遮罩暫存器及其中該向量索引暫存器及向量暫存器包括具有8個64位元值之512位元向量暫存器。
  4. 如申請專利範圍第1項之處理器,其中,該立即值包括整數值,該整數值識別用於該向量索引暫存器內的索引之索引位置。
  5. 如申請專利範圍第1項之處理器,又包括: 記憶體管理單元,用以計算該些索引值中的各索引值以及將該些索引值儲存在該向量索引暫存器內。
  6. 如申請專利範圍第1項之處理器,其中,該些向量資料元包括雙倍精度浮點值。
  7. 如申請專利範圍第1項之處理器,其中,包括該些向量資料元的資料陣列是要儲存於記憶體中,以及,其中,該基準記憶體位址指向該資料陣列的基部,該向量索引載入邏輯會結合該基準記憶體位址與該些索引值中的各索引值,以識別該資料陣列中的該些向量資料元中的各向量資料元。
  8. 如申請專利範圍第1項之處理器,其中,執行識別該索引、結合該索引與基準記憶體位址及載入該些向量資料元,以回應向量索引載入指令的解碼及執行。
  9. 如申請專利範圍第1項之處理器,其中,將該向量索引載入指令解碼成複數個微作業。
  10. 一種處理器,包括:向量索引暫存器,用以儲存複數個索引值;遮罩暫存器,其從該向量索引暫存器分離,該遮罩暫存器用以儲存複數個遮罩位元;向量暫存器,用以儲存要儲存至記憶體的複數個向量資料元;以及向量索引儲存邏輯,用以使用指令的立即值以識別要用於儲存作業的儲存於該向量索引暫存器中的索引,以及回應地結合該索引與基準記憶體位址以決定用於該儲存作 業的記憶體位址,該向量索引儲存邏輯用以根據該複數個遮罩位元而將向量資料元從該向量暫存器儲存至系統記憶體中的該記憶體位址。
  11. 如申請專利範圍第10項之處理器,其中,該複數個遮罩位元標示要儲存至該記憶體位址的向量資料元的數目。
  12. 如申請專利範圍第10項之處理器,其中,該遮罩暫存器包括64位元遮罩暫存器及其中該向量索引暫存器及向量暫存器包括具有8個64位元值之512位元向量暫存器。
  13. 如申請專利範圍第10項之處理器,其中,該立即值包括整數值,該整數值識別用於該向量索引暫存器內的索引之索引位置。
  14. 如申請專利範圍第10項之處理器,又包括:記憶體管理單元,用以計算該些索引值中的各索引值以及將該些索引值儲存在該向量索引暫存器內。
  15. 如申請專利範圍第10項之處理器,其中,該些向量資料元包括雙倍精度浮點值。
  16. 如申請專利範圍第10項之處理器,其中,包括該些向量資料元的資料陣列是要儲存於記憶體中,以及,其中,該基準記憶體位址指向該資料陣列的基部,該向量索引儲存邏輯會結合該基準記憶體位址與該些索引值中的各索引值,以識別該資料陣列中的該些向量資料元中的各向量資料元。
  17. 如申請專利範圍第10項之處理器,其中,執行識別索引、結合該索引與該基準記憶體位址及儲存該些向量資料元,以回應向量索引儲存指令的解碼及執行。
  18. 如申請專利範圍第17項之處理器,其中,將該向量索引儲存指令解碼成複數個微作業。
  19. 一種方法,包括:將複數個索引值儲存在向量索引暫存器中;將複數個遮罩位元儲存在從該向量索引暫存器分離的遮罩暫存器中;儲存從記憶體載入的複數個向量資料元在向量暫存器中;以及使用指令的立即值以識別要用於載入作業的儲存於該向量索引暫存器中的索引;回應地結合該索引與基準記憶體位址以決定用於該載入作業的記憶體位址;以及根據該複數個遮罩位元而將向量資料元從該記憶體位址載至該向量暫存器。
  20. 如申請專利範圍第19項之方法,其中,該複數個遮罩位元標示要從該記憶體位址載入的向量資料元的數目。
  21. 如申請專利範圍第19項之方法,其中,該遮罩暫存器包括64位元遮罩暫存器及其中該向量索引暫存器及向量暫存器包括具有8個64位元值之512位元向量暫存器。
  22. 如申請專利範圍第19項之方法,其中,該立即值包括整數值,該整數值識別用於該向量索引暫存器內的索引之索引位置。
  23. 如申請專利範圍第19項之方法,又包括:計算該些索引值中的各索引值以及將該些索引值儲存在該向量索引暫存器內。
  24. 如申請專利範圍第19項之方法,其中,該些向量資料元包括雙倍精度浮點值。
  25. 如申請專利範圍第19項之方法,又包括:將包括該些向量資料元的資料陣列儲存於記憶體中,其中,該基準記憶體位址指向該資料陣列的基部;以及,結合該基準記憶體位址與該些索引值中的各索引值,以識別該資料陣列中的該些向量資料元中的各向量資料元。
  26. 如申請專利範圍第19項之方法,其中,執行識別該索引、結合該索引與該基準記憶體位址及載入該些向量資料元,以回應向量索引載入指令的解碼及執行。
  27. 如申請專利範圍第26項之方法,其中,將該向量索引載入指令解碼成複數個微作業。
TW104138330A 2014-12-23 2015-11-19 用於向量索引載入和儲存之方法和設備 TWI617978B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/581,289 2014-12-23
US14/581,289 US9830151B2 (en) 2014-12-23 2014-12-23 Method and apparatus for vector index load and store

Publications (2)

Publication Number Publication Date
TW201640331A TW201640331A (zh) 2016-11-16
TWI617978B true TWI617978B (zh) 2018-03-11

Family

ID=56129467

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104138330A TWI617978B (zh) 2014-12-23 2015-11-19 用於向量索引載入和儲存之方法和設備

Country Status (9)

Country Link
US (1) US9830151B2 (zh)
EP (1) EP3238026B1 (zh)
JP (1) JP6711480B2 (zh)
KR (1) KR102463858B1 (zh)
CN (1) CN107003846B (zh)
BR (1) BR112017010956A2 (zh)
SG (1) SG11201704243UA (zh)
TW (1) TWI617978B (zh)
WO (1) WO2016105755A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9658821B2 (en) * 2014-09-29 2017-05-23 International Business Machines Corporation Single operation array index computation
EP3428792B1 (en) * 2017-07-10 2022-05-04 Arm Ltd Testing bit values inside vector elements
US10684858B2 (en) 2018-06-01 2020-06-16 Intel Corporation Indirect memory fetcher
US20200004535A1 (en) * 2018-06-30 2020-01-02 Intel Corporation Accelerator apparatus and method for decoding and de-serializing bit-packed data
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US11403256B2 (en) 2019-05-20 2022-08-02 Micron Technology, Inc. Conditional operations in a vector processor having true and false vector index registers
US11507374B2 (en) * 2019-05-20 2022-11-22 Micron Technology, Inc. True/false vector index registers and methods of populating thereof
US11340904B2 (en) * 2019-05-20 2022-05-24 Micron Technology, Inc. Vector index registers
US11327862B2 (en) 2019-05-20 2022-05-10 Micron Technology, Inc. Multi-lane solutions for addressing vector elements using vector index registers
CN111158757B (zh) * 2019-12-31 2021-11-30 中昊芯英(杭州)科技有限公司 并行存取装置和方法以及芯片
CN111782270B (zh) * 2020-06-09 2023-12-19 Oppo广东移动通信有限公司 一种数据处理方法及装置、存储介质
KR20220145656A (ko) 2021-04-22 2022-10-31 에스케이하이닉스 주식회사 호스트 및 이를 포함하는 컴퓨팅 시스템
KR20230158257A (ko) * 2022-05-11 2023-11-20 서울시립대학교 산학협력단 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040577A1 (en) * 1998-12-16 2008-02-14 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US20080059759A1 (en) * 2005-05-10 2008-03-06 Telairity Semiconductor, Inc. Vector Processor Architecture
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
AU2001226324A1 (en) * 2000-01-18 2001-07-31 Clearwater Networks, Inc. Method and apparatus for improved computer load and store operations
US7162607B2 (en) * 2001-08-31 2007-01-09 Intel Corporation Apparatus and method for a data storage device with a plurality of randomly located data
US20130212353A1 (en) 2002-02-04 2013-08-15 Tibet MIMAR System for implementing vector look-up table operations in a SIMD processor
JP3659252B2 (ja) * 2003-03-28 2005-06-15 セイコーエプソン株式会社 ベクトルデータのアドレス参照方法およびベクトルプロセッサ
CN101061460B (zh) * 2004-09-21 2011-03-30 Nxp股份有限公司 用于混移运算的微处理器设备和方法
US10387151B2 (en) * 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
CN102200905A (zh) * 2010-03-26 2011-09-28 Mips技术公司 具有紧凑指令集架构的微处理器
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
CN104094218B (zh) * 2011-12-23 2017-08-29 英特尔公司 用于执行写掩码寄存器到向量寄存器中的一系列索引值的转换的系统、装置和方法
US9354881B2 (en) * 2011-12-27 2016-05-31 Intel Corporation Systems, apparatuses, and methods for generating a dependency vector based on two source writemask registers
US20140189322A1 (en) 2012-12-28 2014-07-03 Elmoustapha Ould-Ahmed-Vall Systems, Apparatuses, and Methods for Masking Usage Counting

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040577A1 (en) * 1998-12-16 2008-02-14 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US20090187739A1 (en) * 1998-12-16 2009-07-23 Mario Nemirovsky Method and Apparatus for Improved Computer Load and Store Operations
US20080059759A1 (en) * 2005-05-10 2008-03-06 Telairity Semiconductor, Inc. Vector Processor Architecture
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor

Also Published As

Publication number Publication date
KR102463858B1 (ko) 2022-11-03
WO2016105755A1 (en) 2016-06-30
JP6711480B2 (ja) 2020-06-17
KR20170097626A (ko) 2017-08-28
CN107003846A (zh) 2017-08-01
EP3238026A1 (en) 2017-11-01
EP3238026B1 (en) 2019-11-20
BR112017010956A2 (pt) 2018-02-14
CN107003846B (zh) 2021-02-26
TW201640331A (zh) 2016-11-16
SG11201704243UA (en) 2017-07-28
JP2018500660A (ja) 2018-01-11
EP3238026A4 (en) 2018-08-01
US20160179526A1 (en) 2016-06-23
US9830151B2 (en) 2017-11-28

Similar Documents

Publication Publication Date Title
TWI617978B (zh) 用於向量索引載入和儲存之方法和設備
JP6456867B2 (ja) 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法
TWI502499B (zh) 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法
TWI512616B (zh) 用於緊縮資料運算遮罩之序連的方法、設備、系統及製品
CN103999037B (zh) 用于响应于单个指令来执行横向相加或相减的系统、装置和方法
TWI517031B (zh) 用於呈現各別複數之複數共軛根之向量指令
TWI476682B (zh) 用以偵測向量暫存器內相等元素之裝置及方法
TW201730746A (zh) 用以融合指令之硬體設備及方法
JP6849275B2 (ja) インデックスおよび即値を用いてベクトル置換を実行するための方法および装置
TWI740859B (zh) 用於跨步的載入(strided load)的系統、設備及方法
TW201530309A (zh) 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令
TWI498815B (zh) 用以響應於單一指令而執行橫向部分和之系統、裝置及方法
TW201617890A (zh) 無區域性提示向量記憶體存取之處理器、方法、系統與指令
JP6673574B2 (ja) ベクトルビットシャッフルを実行するための方法および装置
TWI610228B (zh) 用於執行向量位元反轉和交叉的方法和設備
JP6741006B2 (ja) マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置
TW201346725A (zh) 向量緊縮壓縮及重複之實施系統、設備和方法
JP6835436B2 (ja) マスクをマスク値のベクトルに拡張するための方法および装置
TWI482086B (zh) 用以於緊縮資料元件上執行差分編碼之系統、裝置及方法
CN108241509B (zh) 用于高效地处理存储器排序缓冲器的分配的方法和装置
TW201732568A (zh) 用於巷道為主的跨類收集的系統、設備與方法
TW201732574A (zh) 用於改善向量通量的系統、方法及設備
TWI697836B (zh) 處理包括高功率及標準指令之指令集的方法與處理器
CN107077333B (zh) 用于实行向量位聚集的方法和装置
TWI737650B (zh) 用於從鏈結結構取回元件的處理器、系統和方法