TWI709863B - 用於轉換記憶體與複數個向量暫存器之間的複數個資料結構的設備及方法 - Google Patents

用於轉換記憶體與複數個向量暫存器之間的複數個資料結構的設備及方法 Download PDF

Info

Publication number
TWI709863B
TWI709863B TW105123737A TW105123737A TWI709863B TW I709863 B TWI709863 B TW I709863B TW 105123737 A TW105123737 A TW 105123737A TW 105123737 A TW105123737 A TW 105123737A TW I709863 B TWI709863 B TW I709863B
Authority
TW
Taiwan
Prior art keywords
vector
data
memory
access
data structures
Prior art date
Application number
TW105123737A
Other languages
English (en)
Other versions
TW201717053A (zh
Inventor
瑪普 伊宥爾
奈吉爾約翰 史蒂芬斯
傑佛瑞 苟尼恩
艾里克斯 克雷貝爾
查理斯 塔克
Original Assignee
英商Arm股份有限公司
美商蘋果股份有限公司
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 英商Arm股份有限公司, 美商蘋果股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW201717053A publication Critical patent/TW201717053A/zh
Application granted granted Critical
Publication of TWI709863B publication Critical patent/TWI709863B/zh

Links

Images

Classifications

    • 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
    • G06F15/8076Details on data register access
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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
    • 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
    • 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/355Indexed 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

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

Abstract

本案提供一種設備及方法,用於在記憶體與複數個向量暫存器之間轉換複數個資料結構,每一向量暫存器經排列以儲存包括複數個資料元件的向量運算元。存取電路系統用以執行存取操作,以在記憶體中之資料結構與規定的向量暫存器之間移動向量運算元之資料元件,每一資料結構包括儲存在記憶體中相連位址處的多個資料元件。解碼電路系統可回應於單一存取指令,該單一存取指令識別複數個向量暫存器及相對於彼此在記憶體中不相連定位的複數個資料結構,以產生控制信號以控制存取電路系統來執行存取操作之序列,以在記憶體與複數個向量暫存器之間移動該複數個資料結構,以使得每一向量暫存器中之向量運算元保存來自複數個資料結構中每一者的對應資料元件。此提供極高效的機制以用於執行複雜存取操作,從而提高執行速度,及有可能降低功耗。

Description

用於轉換記憶體與複數個向量暫存器之間的複數個資料結構的設備及方法
本技術係關於用於轉換記憶體與複數個向量暫存器之間的複數個資料結構之設備及方法。
用於改善資料處理設備效能的一個已知技術是提供電路系統以支援向量操作之執行。對至少一個向量運算元執行向量操作,在此情況下,每一向量運算元包括複數個資料元件。隨後,向量操作之效能執行涉及對向量運算元內的各種資料元件反複應用操作。
向量處理電路系統(往往稱為單指令多資料(Single Instruction Multiple Data; SIMD)處理電路系統)可用以提供多個平行處理路徑,以便對向量運算元內的各種資料元件同時執行操作。
儘管使用該等向量操作可產生顯著效能益處,但出現一問題,即如何在記憶體與用以儲存向量運算元的向量暫存器之間高效地移動向量操作所需的資料元件。特地而言,所需的個別資料元件可儲存在記憶體內之一系列資料結構內,在該記憶體中,每一資料結構可包括多個相關資料元件,例如X、Y及Z坐標值、紅色、綠色及藍色像素值、複數實部與虛部,等等。然而,為賦能向量操作之高效利用,如若向量暫存器儲存來自複數個該等資料結構的由一系列對應資料元件組成的向量運算元,則是十分有用的。因此,藉由使用X、Y及Z坐標值的上述實例,可需要一個向量暫存器儲存多個X坐標值,另一向量暫存器儲存多個Y坐標值,且又一向量暫存器儲存多個Z坐標值。
將需要提供一種技術,該技術用於高效轉換記憶體與複數個向量暫存器之間的複數個資料結構。
在第一示例性配置中,提供一種設備,該設備包括:一組向量暫存器,每一向量暫存器經排列以儲存包括複數個資料元件的向量運算元;存取電路系統,用以執行存取操作以在記憶體中資料結構與該組向量暫存器之間移動向量運算元的資料元件,每一資料結構包括儲存在該記憶體中相連位址處的多個資料元件;解碼電路系統,可回應於識別來自該組的複數個向量暫存器及該記憶體中相對於彼此而不相連定位的複數個資料結構的單一存取指令,以產生控制信號以控制存取電路系統來執行該等存取操作之序列,以在該記憶體與該複數個向量暫存器之間移動該複數個資料結構,以使得該複數個向量暫存器中每一向量暫存器中之向量運算元保存來自該複數個資料結構中每一者的對應資料元件。
在另一示例性配置中,提供一種方法,該方法是操作一設備以執行存取操作以在記憶體中資料結構與該設備的一組向量暫存器之間移動向量運算元的資料元件,每一向量暫存器經排列以儲存包括複數個資料元件之向量運算元,且每一資料結構包括儲存在該記憶體中相連位址處的多個資料元件,該方法包括:解碼單一存取指令,該指令識別來自該組的複數個向量暫存器及該記憶體中相對於彼此而不相連定位的複數個資料結構,以產生控制信號以控制存取電路系統來執行該等存取操作之序列,以便在該記憶體與該複數個向量暫存器之間移動該複數個資料結構;及在存取操作之該序列執行期間移動每一資料結構的多個資料元件,以使得該複數個向量暫存器中每一向量暫存器中之向量運算元保存來自該複數個資料結構中每一者的對應資料元件。
在又一示例性配置中,提供一種設備,該設備包括:一組向量暫存器手段,每一向量暫存器手段用於儲存包括複數個資料元件的向量運算元;存取手段,用於執行存取操作以在記憶體中資料結構與該組向量暫存器手段之間移動向量運算元之資料元件,每一資料結構包括儲存在所述記憶體中相連位址處的多個資料元件;解碼手段,用於回應於識別來自該組的複數個向量暫存器手段及該記憶體中相對於彼此而不相連定位的複數個資料結構之單一存取指令,而產生控制信號以控制存取手段來執行該等存取操作之序列,以在該記憶體與該複數個向量暫存器手段之間移動該複數個資料結構,以使得該複數個向量暫存器手段中每一向量暫存器手段中之向量運算元保存來自複數個資料結構中每一者的對應資料元件。
在一替代性配置中,提供儲存在非暫時性電腦可讀取儲存媒體中的一電腦程式,該電腦程式在被資料處理設備執行時提供虛擬機,該虛擬機提供對應於上文提及之第一示例性配置的設備之指令執行環境。
在參考附圖論述實施例之前,提供下列實施例描述。
依據一個實施例,設備具有一組向量暫存器,其中每一向量暫存器經排列以儲存包括複數個資料元件的向量運算元,且具有存取電路系統以執行存取操作以便在記憶體中之資料結構與該組向量暫存器之間移動向量運算元的資料元件。每一資料結構包括儲存在記憶體中相連位址處的多個資料元件。存取電路系統可因此執行載入操作,以便從記憶體將資料結構的資料元件移至向量暫存器,或可執行儲存操作以便在多個向量暫存器中讀取向量運算元,然後將彼等向量運算元中包含的資料元件儲存至記憶體,以作為一系列資料結構。
依據一個實施例,提供解碼電路系統,該解碼電路系統可回應於識別複數個向量暫存器及記憶體中相對於彼此而不相連地(本案中亦被稱作非相連地)定位的複數個資料結構的單一存取指令,以產生控制信號以控制存取電路系統來執行存取操作之特定序列。特定而言,存取電路系統可回應於彼等控制信號以在記憶體與該指令識別的複數個向量暫存器之間移動該指令識別的複數個資料結構,以使得每一向量暫存器中之向量運算元保存來自該複數個資料結構中每一者的對應資料元件。在一個實施例中,向量暫存器中保存的對應資料元件來自複數個資料結構中每一者內的同一相對位置。
在一個實施例中,當複數個資料結構中一或更多者的多個資料元件在記憶體與複數個向量暫存器之間移動時,存取電路系統重排該等資料元件。
如本文中所使用,在將資料結構描述為相對於彼此而不相連地定位時,此意謂著在一個資料結構之最後一資料元件與下一資料結構的第一資料元件之間的記憶體位址空間中提供有一或更多個資料元件位置。該等資料結構在本案中亦將被稱為不相連(或非相連)資料結構。
藉由使用上文介紹的單一存取指令,此為存取記憶體中多個不相連資料結構提供了極高效機制,及特定而言,是在資料結構與複數個向量暫存器之間向任一方向移動彼等各種資料結構之資料元件的極高效機制。在一個實施例中,存取電路系統在載入指令之情況下,並非僅可回應於單一存取指令以執行所需的從記憶體檢索各種資料結構之步驟,或在儲存操作情況下將各種資料結構儲存至記憶體,而是亦執行所需重排操作,以便確保在向量暫存器內,每一向量暫存器儲存一向量運算元,該向量運算元包括來自複數個資料結構中每一者的一系列對應資料元件。
由此,考慮每一資料結構都包括X、Y、Z坐標值的先前實例,單一存取指令規定的向量暫存器中之一者可儲存一系列X坐標值,而另一向量暫存器可儲存一系列Y坐標值,且又一向量暫存器可儲存一系列Z坐標值。
使用該種單一存取指令可藉由減少為執行對記憶體中多個不相連資料結構之存取而需要執行的指令數目,來顯著提高執行速度。藉由使用該等指令,有可能減少需要經過管線式處理單元的擷取、解碼及其他初步階段之指令的數目,此舉常常可使得整體功耗顯著降低。
亦已發現,由於該種單一存取指令提高抽象化水平及使複雜存取的易錯性降低,因此使用該種單一存取指令有助於更準確的程式化。
單一存取指令可為載入指令,在此情況下,存取電路系統可回應於控制信號以執行存取操作之序列,以便從記憶體獲得每一識別的資料結構的資料元件,並將向量運算元寫入每一識別的向量暫存器,該向量運算元包括來自複數個資料結構中每一者的對應資料元件。
可以眾多方式實施存取操作之序列,以便執行所需載入指令,但在一個實施例中,存取操作之序列包括聚集操作之序列,每一聚集操作獲得來自複數個資料結構中每一者的對應資料元件,並將所獲得的資料元件寫入與聚集操作關聯的向量暫存器。每一聚集操作又可分解成一系列微操作(如需要)。
在一個實施例中,單一存取指令可具有儲存指令之形式,在此情況下,存取電路系統可回應於控制信號以執行存取操作之該序列,以便從每一識別的向量暫存器讀取一向量運算元,該向量運算元包括來自該複數個資料結構中每一者的對應資料元件,及在該等資料元件被寫入該記憶體時重排該等資料元件,以便將每一資料結構儲存在記憶體中對應於該資料結構之不相連位置之一位址,同時確保每一單個資料結構的資料元件儲存在記憶體中之相連位址。
可以眾多方式構建存取操作之序列,以便執行儲存指令,但在一個實施例中,該序列包括分散操作之序列,每一分散操作從與該分散操作關聯之向量暫存器獲得一向量運算元,該向量運算元包括來自該複數個資料結構中每一者的對應資料元件,並將該向量運算元之資料元件寫入記憶體中之位址,該等位址由複數個資料結構之位址決定。與聚集操作一樣,分散操作可分解成一系列微操作(如需要)。
單一存取指令可以多種方式規定。在一個實施例中,單一存取指令包括資料結構標識符欄位,該欄位提供用以決定複數個資料結構之位址的資訊。資料結構標識符欄位可採用多種形式。在一個實施例中,設備進一步包括一組純量暫存器以儲存純量資料值,且資料結構標識符欄位包括純量暫存器標識符欄位,該欄位識別純量暫存器,該純量暫存器中所儲存的純量資料值用以決定記憶體中之基址。在一個實施例中,基址形成所有資料結構位址的共同參考點。此外,資料結構標識符欄位包括步長標識符欄位,該欄位包含用以利用基址推導複數個資料結構之位址的步長資訊。此提供一極靈活的機制,用於規定不相連資料結構的各種位址。例如,藉由更新多個單一存取指令實例之間的基址,將有可能在記憶體中藉由使用同一步長資訊存取大量資料結構。此對於步長資訊識別恆定步長值之情況尤為有用。
步長資訊用以識別單一存取指令所識別的複數個不相連資料結構中相鄰資料結構中之對應資料元件間的分隔距離(就記憶體位址空間而言)。步長資訊可以數個方式規定,但在一個實施例中,步長資訊規定為位元組數目。或者,步長資訊可規定由每一資料元件中之位元組數目量定的數目。在一個該種實施例中,資料元件大小可形成一參數,該參數可嵌入額外欄位中的指令內。
在由步長資訊規定恆定步長值的實施例中,步長標識符欄位可包括規定恆定步長值的立即值,或可規定一純量暫存器,該純量暫存器之內容識別恆定步長值。
然而,並非必須使用恆定步長值,且特定而言,並非待存取之不相連資料結構中之每一者都必須在記憶體中分隔達正規間距。相反,在一個實施例中,步長資訊可識別一系列步長值,在此情況下,每一步長值與複數個資料結構中至少一個資料結構相關聯。因此,此賦能藉由執行單一存取指令而存取的複數個資料結構定位於記憶體內任意位址。
在步長資訊識別一系列步長值之實施例中,步長標識符欄位可以眾多方式識別該系列步長值。在一個實施例中,步長標識符欄位識別向量暫存器,且向量暫存器中之每一者識別一步長值,該步長值用以根據基址決定資料結構中之關聯一者的位址。
在一替代性實施例中,資料結構標識符欄位不規定基址,但卻識別向量暫存器,在此情況下,該向量暫存器中之每一資料元件提供指標資料,該指標資料用以決定資料結構中之關聯一者的位址。此外,此允許待存取的複數個資料結構定位在記憶體中任意位置,且彼等所需資料結構之間無需恆定步長。
在一個實施例中,單一存取指令進一步包括向量暫存器標識符欄位,該欄位提供資訊,該資訊用以決定待存取之複數個向量暫存器。在一個實施例中,指令可直接獨立地識別每一向量暫存器。然而,指令之可用編碼空間往往相當受限,因此空間可能不足以允許獨立識別每一向量暫存器。相反,在一個實施例中,向量暫存器標識符欄位可包括一向量暫存器標識符,該標識符用以識別該組中之一個向量暫存器,且包括一整數值,該整數值用以識別待存取的該複數個向量暫存器中之向量暫存器數目。然後,解碼電路系統經排列以應用預定規則,以便利用識別的一個向量暫存器及該整數來決定該複數個向量暫存器中之每一者。
由此,在該種實施例中,僅需識別單個向量暫存器,而其他向量暫存器可藉由使用該指令中亦規定的整數值,藉由應用預定規則而推斷。在一個特定實施例中,在要存取複數個向量暫存器時,解碼電路系統經排列以決定連續的複數個向量暫存器,該等向量暫存器包括所識別的一個向量暫存器。由此,在該實施例中,在執行單一存取指令時使用該組向量暫存器中之一系列相鄰向量暫存器。
在又一實施例中,在指令編碼空間尤其受約束之情況下,可排列以使向量暫存器得以預定,且因此在單一存取指令編碼內無需顯式引用。例如,可預定該種單一存取指令始終藉由使用一預定系列之連續向量暫存器而操作,例如向量暫存器0、1,及2。
在一個實施例中,存取電路系統在複數個路徑上操作,每一路徑包含來自複數個向量暫存器中每一向量暫存器的一對應資料元件位置。儘管在一個實施例中,單一存取指令的執行可使得存取操作相對於每一路徑而執行,但在一替代性實施例中,單一存取指令可包括述詞標識符欄位,該欄位提供述詞資訊,該述詞資訊用以決定複數個路徑中哪些路徑是存取操作序列的有效路徑。然後,針對有效路徑執行存取操作,並無需針對無效路徑進行進一步處理。特定而言,在要移動複數個資料結構時,存取電路系統經排列以決定與有效路徑關聯的彼等資料結構。此舉向如何使用單一存取指令及如何規定待存取資料結構提供了顯著增強的靈活性。僅舉例而言,此舉可意謂著可規定正規步長值,即使無需存取原本由正規步長識別的資料結構中一或更多者時亦如此。對於彼等資料結構,對應路徑可由述詞資訊標記為無效。
述詞資訊亦可用於其他目的。例如,當單一存取指令是載入指令時,存取電路系統可經排列以藉由使用述詞資訊而執行壓縮操作,該述詞資訊用以識別待載入的複數個資料結構,且存取電路系統經排列以在複數個向量暫存器內的一系列連續路徑內儲存彼等資料結構。此可藉由避免對執行後續指令以便執行重排操作以移除任何無用資料元件的需求,而提供提高的效率。
在一個實施例中,單一存取指令亦可包括偏移標識符欄位,該欄位提供偏移資料,當決定複數個資料結構的位址時,該偏移資料將結合資料結構標識符欄位中之資訊而被應用。此在執行程式碼循環展開以便更高效地使用向量操作之時尤為實用。特定而言,在循環的同一迭代內,有可能使用對單一存取指令的多個調用,每一調用僅使用一不同的偏移值。由此,此舉賦能向量數目增大,該數目相當於可在展開循環之同一迭代中存取的資料。
存取電路系統可採用各種形式,但在一個實施例中,存取電路系統包括載入/儲存單元及關聯的緩衝儲存器,以允許在存取操作序列執行期間暫時緩衝資料元件。
在一替代性實施例中,存取電路系統可包括載入/儲存單元及向量排列單元,該等單元組合操作以執行存取操作之序列。
在一個實施例中,載入/儲存單元及向量排列單元經排列以經由該組內的一或更多個向量暫存器交換資料元件,該等向量暫存器用以儲存資料元件的中間向量。該種方法將由此賦能載入/儲存單元執行標準載入或儲存操作,以便在暫存器與記憶體之間移動一系列資料元件,在此情況下,每一存取中之資料元件佔據記憶體中之相連位址,向量排列單元隨後執行所需的資料元件重新定序。對於載入指令而言,向量排列單元將因此在載入/儲存單元已載入所需資料元件之後執行該重新定序,而對於儲存操作而言,向量排列單元將在載入/儲存單元執行所需儲存操作之前執行所需重新定序。
現將藉由參考圖式而描述特定實施例。
第1圖是一系統方塊圖,在該系統中可使用所述實施例的技術。在第1圖圖示的實例中,系統採用管線式處理器形式。指令由擷取電路系統10擷取自指令快取記憶體15,指令從指令快取記憶體15穿過解碼電路系統20,該解碼電路系統解碼每一指令以便產生適當的控制信號,以用於控制管線式處理器內的下游執行資源,以執行指令所需操作。形成解碼指令的控制信號被傳遞至發送階段電路系統25以用於發送至管線式處理器內的一或更多個執行管線30、35、40。
發送階段電路系統25可存取暫存器45,在該暫存器中可儲存形成源運算元以用於進行各種操作的資料值。該等源運算元可經由路徑47路由至發送階段電路系統內,以便彼等源運算元可隨同識別待執行之操作的控制信號而調度至適當的執行單元,以實施每一解碼指令。算術操作例如可連同所需源運算元被發送至算術邏輯單元(arithmetic logic unit; ALU) 30,以便賦能針對彼等源運算元的待執行算術邏輯操作,結果值通常輸出作為目的運算元以用於儲存在暫存器45中之規定暫存器。
除ALU 30之外,可提供其他執行單元35,例如用於回應於解碼浮點指令而執行浮點操作的浮點單元(floating point unit; FPU)。此外,載入/儲存單元(load / store unit; LSU) 40用於執行載入操作,以便從記憶體55經由資料快取記憶體50的一或更多個級別將資料值載入暫存器45中之規定一者,並用於執行儲存操作以便從規定暫存器將資料值儲存回記憶體55。
第1圖所示的系統可為依序處理系統,在該系統中依照程式化次序執行指令序列,或者可為無序系統,從而允許各種指令的執行序列得以重新定序,以便設法改良效能。如熟習該項技術者將理解,在無序系統中,將提供額外結構(第1圖中未明確圖示),例如暫存器重命名電路系統,以將指令所規定的架構暫存器映射至來自暫存器組45內實體暫存器池中之實體暫存器(該實體暫存器池通常大於架構暫存器數目),由此使某些危害能夠被移除,從而有利於無序處理的更多使用。另外,通常將提供重新定序緩衝器以記錄無序執行,並允許多個指令的執行結果被依序提交。
在所述實施例中,第1圖的處理電路系統經排列以對儲存在暫存器45中之向量運算元執行向量操作,在該暫存器中,向量運算元包括複數個資料元件。當對該種向量運算元執行向量操作時,對向量運算元內的各種資料元件反複應用所需操作。在一個實施例中,暫存器45包括一組向量暫存器70,在該組中,每一向量暫存器可儲存包括複數個資料元件的一向量運算元。
暫存器組亦可包括其他暫存器,例如一組純量暫存器80以用於儲存純量資料值,及一或更多個述詞暫存器75以用於儲存述詞資訊。述詞資訊為向量運算元內的每一資料元件位置提供述詞資料。述詞暫存器內的述詞資料由此規定布爾向量(即真/假)條件,關聯向量運算元內的每一資料元件與彼等布爾條件中之一者相關聯。儘管在一個實施例中,述詞資料內的述詞條件項數目與由彼述詞資料控制的關聯向量運算元中資料元件數目之間可能存在1:1關係,但此並非必需,且在替代性實施例實施例中,單項述詞資料可提供應用於多個資料元件的條件。此外,儘管在一個實施例中,述詞資料內的每一述詞項採用單個位元形式,但不要求每一述詞項都僅由單個位元來規定。
依據一個實施例,定義特定類型的存取指令,該指令從向量暫存器組70中識別複數個向量暫存器,且亦在記憶體中識別複數個不相連資料結構,而解碼電路系統20可回應於解碼此指令以產生控制信號,該等控制信號經由發送階段電路系統25被傳遞至載入/儲存單元40,以便使得載入/儲存單元在記憶體與規定的複數個向量暫存器之間移動識別的複數個資料結構。另外,作為由載入/儲存單元執行以便實施存取指令之執行的操作序列之部分,載入/儲存單元經排列以在每一資料結構的多個資料元件移動時重排該等資料元件,以使得每一向量暫存器中之向量運算元保存來自複數個資料結構中每一資料結構的對應資料元件。為協助此過程,載入/儲存單元40可存取本地緩衝儲存器60,在該緩衝儲存器中,載入/儲存單元40可在此過程期間緩衝某些資料元件。
第2圖中示意地圖示由載入/儲存單元40執行的移動與重排。在此,不相連資料結構105、110、115之序列經顯示定位於記憶體位址空間100內的對應位址107、112、117。前文提及之新存取指令將提供充足資訊以為待決定的所需資料結構105、110、115中之每一者賦能各種位址107、112、117,且亦將識別一系列向量暫存器120、125、130。識別的向量暫存器數目本質上與每一資料結構中之資料元件數目相關。在此實例中,假定每一資料結構中有三個資料元件,且在第2圖之特定實例中,彼等資料元件假定呈現紅色、綠色及藍色像素值。如若存取指令是載入指令,則載入/儲存單元40執行的操作將導致存取各種資料結構105、110、115,並使得資料元件得以重新定序以便向量暫存器120、125、130中每一者接收到由資料元件之序列組成的向量運算元,該序列是來自多個資料結構的對應資料元件。由此,舉例而言,向量暫存器120可接收包含一系列紅色像素值之向量運算元,向量暫存器125可接收包括一系列綠色像素值之向量運算元,且向量暫存器130可接收包括一系列藍色像素值的向量運算元。
或者,存取指令可為存儲指令,在此情況下,規定向量暫存器的內容被讀取,然後,執行重排以便資料元件被寫出至其在多個資料結構105、110、115內位於位址107、112、117的各自位置。
每一向量運算元內包含的資料元件數目將取決於向量暫存器大小及資料元件大小。僅舉例而言,在一個實施例中,每一向量暫存器可具有32位元長度,且每一資料元件可為一位元組,由此,每一向量暫存器將儲存四個資料元件。然而,在其他實施例中,可使用不同大小的向量暫存器,且實際上資料元件可具有不同大小。
第3圖是一圖表,該圖圖示上述提及之單一存取指令內提供的各種欄位。載入/儲存標識符欄位155用以識別存取指令是載入指令還是儲存指令。暫存器標識符欄位160隨後用以識別複數個暫存器,該等暫存器將用作載入指令之目的暫存器,或用作儲存指令的源暫存器。有數個方式在欄位160內規定該等各種暫存器。例如,假定有充足的編碼空間,每一暫存器可在該欄位內被單獨識別。然而,指令編碼空間往往相當有限,因此可能空間不充足以單獨識別每一逐個暫存器。
因此,在一個實施例中,如第3圖中所示,可連同識別暫存器數目的整數值N 175而提供單一暫存器標識符180。如前文提及,暫存器數目本質上與每一資料結構中之資料元件數目相關。由此,設想第2圖之先前實例,情況可為N設定等於3,且單一暫存器在欄位180中得以識別。然後,解碼電路系統20可經排列以應用預定規則以決定將使用哪些暫存器。例如,可決定使用連續暫存器之序列,該序列自該欄位180中識別的暫存器開始。因此,僅舉例而言,如若欄位180識別向量暫存器Z0,且N設定等於3,則解碼電路系統可決定將使用向量暫存器Z0、Z1及Z2。
在一個實施例中,欄位180中規定之暫存器標識符經排列以將架構向量暫存器之數目遞增模數。由此,例如,如若在一組可用向量暫存器0至31中,暫存器說明符180識別向量暫存器30,且N再次等於3,則解碼電路系統可決定將使用的向量暫存器為向量暫存器30、31及0。
如下文將更詳細地論述,指令可視情況而包括述詞標識符欄位165以便識別規定暫存器內的有效路徑,且由此識別待移動的複數個資料結構。此將在下文中藉由參考第6圖及第7圖而更詳細地論述。
指令編碼150亦將包括資料結構標識符欄位170,該欄位提供充足資訊以決定需要存取之複數個資料結構的位址。此欄位中之資訊可採用各種形式,且第3圖中圖示四個實例。
依據第3圖的實例A,欄位170內提供向量暫存器標識符190,該標識符識別包含一系列任意指標的向量暫存器,該等指標指向所需資料結構中每一者。指標可指向彼等資料結構的起始或結尾。由此,在一個實施例中,該種向量暫存器中之每一資料元件將提供一指標,該指標用以決定關聯資料結構的位址,且因此可見,資料結構中每一者相對於其他資料結構之位置可為完全任意的。
依據第3圖的實例B,純量暫存器標識符200用以識別純量暫存器80中之一個純量暫存器,該純量暫存器中所儲存的資料值識別基址。隨後,向量暫存器標識符205用以識別一向量暫存器,該向量暫存器中所儲存之資料元件為所需資料結構中每一者提供相對於基址的偏移。由此,每一資料結構的位址可藉由向基址加上相關偏移值而被發現。此外,可見,此有效地允許經由單一指令存取來自任意位置的資料結構。
實例C再次使用純量暫存器標識符200,但除此之外亦提供在指令內編碼的立即值215,該立即值規定恆定步長值。由此,在該排列中,儘管資料結構中每一者相對於彼此而在記憶體中不相連地定位,但各種資料結構在記憶體位址空間內藉由正規距離而彼此分隔。由此,在一個實施例中,第一資料結構位址可源自於基址,而下一資料結構將具有藉由向基址加上立即值而計算得出的位址。然後,下一資料結構將具有藉由向基址加上兩次立即值而計算得出的位址,以此類推。
實例D圖示另一替代方式,其中沒有立即值215,而是識別一純量暫存器標識符225,該標識符之內容規定恆定步長值。由此,依據實例D之每一資料結構位址的計算與上文針對實例C的論述相同。
在一個實施例中,向量長度(即每一向量中之資料元件數目)及資料元件大小可為隱式的。然而,在一替代性實施例中,該種資訊可編碼在指令內。例如,指令編碼可包括識別資料元件大小(例如8、16、32或64位元)的資訊,隨後利用指令中引用的向量暫存器大小及規定的資料元件大小決定向量長度。規定的資料元件大小亦可用以執行指令中規定的其他資訊的量定,如步長資訊。
第4圖是一圖表,該圖圖示依據一個實施例之相關不相連資料結構之各種位址的計算。在此實例中,假定指令編碼如第3圖的實例D中所示,且特定而言,載入指令被規定為將資料元件的向量載入三個向量暫存器Z0、Z1及Z2。指令亦包括可選述詞欄位Pg,但在此實例中,假定述詞(若規定)識別全部路徑為有效。此外,純量暫存器識別基址,此純量暫存器在第4圖中被稱為Xb。此外,另一純量暫存器Rs用以識別恆定步長值。在此特定實例中,假定在64位元純量暫存器中規定基底暫存器,該基底暫存器在本案中被稱作X暫存器。使用與識別步長的暫存器關聯的術語「R」更為普遍,且能映射至32位元純量暫存器或64位元純量暫存器,具體視實施例而定。
如圖可見,特定資料結構「i」的位址藉由用步長暫存器中規定的步長乘以i,然後將所得值與基底暫存器中得到的基址相加而得出。在此實施例中,假定步長值直接規定相鄰結構中的對應資料元件之間的位元組數目。然而,將理解,純量暫存器Rs中之步長資料可以數個方式得以規定,且例如可在資料結構大小單元中而非位元組大小單元中得以規定(如要求),或利用藉由每一資料元件的位元組數目度量的值而規定。或者,可將其規定為位元數目,而非位元組數目。
作為又一替代性實例,所需步長資訊亦可藉由將從純量暫存器獲得的值與有關資料元件大小及每一資料結構內資料元件數目的資訊組合而決定。
第5圖是一流程圖,該圖圖示第1圖的設備在遇到上述類型的存取指令之後執行的操作,該存取指令規定多個非相連資料結構。在步驟300中,由解碼電路系統20偵測到該種指令,在步驟305中,解碼電路系統20經排列以為該存取指令識別的每一向量暫存器產生單獨的聚集操作或分散操作。特定而言,對於載入指令而言,解碼器將產生控制信號以用於一系列聚集操作,而對於儲存指令而言,解碼器將產生控制信號以用於一系列分散操作。由此,僅舉例而言,如若指令是載入指令及資料結構具有紅、綠、藍(RGB)資料元件組件,則解碼電路系統將產生控制信號以定義三個聚集操作,第一聚集操作用以將來自識別的資料結構的紅色像素值載入一個目的暫存器,單獨的聚集操作用以將來自識別的資料結構的綠色像素值載入另一向量暫存器,且最終聚集操作用以將來自識別的資料結構的藍色像素值載入第三向量暫存器。
在適當時,識別彼等聚集/分散操作的所需控制信號將轉發至載入/儲存單元40,以在步驟310中使得彼等操作被執行。在一個實施例中,載入/儲存單元可經排列,以藉由使用本地緩衝器60,按需將每一聚集或分散操作作為一系列載入或儲存微操作而執行。由此,僅舉例而言,如若執行聚集操作以將來自識別的資料結構的紅色像素值載入向量暫存器Z0,則可執行載入微操作以從記憶體獲得紅色像素資料元件R0,且將該資料元件R0儲存在緩衝器60中,而隨後使用單獨的載入微操作以載入來自記憶體的剩餘紅色像素資料元件,該等資料元件亦儲存在緩衝器60中。一旦已獲得全部所需紅色像素值,則可進行單次寫入向量暫存器70,以便將紅色像素值的該向量運算元儲存至向量暫存器Z0內。
或者,如若載入/儲存單元40無法存取本地緩衝儲存器,則該單元可改為在載入微操作實施期間向向量暫存器Z0執行多個存取,以便在從記憶體獲取每一單個資料元件時將其儲存至向量暫存器內。
第6圖示意地圖示依據一個實施例如何可使用述詞資訊,在該實施例中,該種述詞資訊被規定在指令編碼150的述詞標識符欄位165內。特定而言,在一個實施例中,述詞標識符欄位165可用以識別通用述詞暫存器Pg,該暫存器針對第6圖中圖示的向量暫存器320、325、330內每一路徑而將單個述詞位元作為述詞資訊儲存。特定而言,可見每一路徑包括一對應資料元件位置,該位置來自存取指令所規定的複數個向量暫存器中的每一向量暫存器。
如若述詞位元設定為第一值,則此用以指示對應路徑是有效的,而如若設定為第二值,則此用以指出對應路徑是無效的。在第6圖圖示實例中,假定邏輯1值指示有效路徑及邏輯0值指示無效路徑,但將理解,如需要,則彼等位元的含義可反轉。
舉載入操作為實例而考慮,並假定第4圖中圖示的四個資料結構由指令的資料結構標識符欄位170所識別,邏輯零值在路徑1中之存在將導致載入/儲存單元決定無需從記憶體擷取資料結構270。因此,即使指令已規定恆定步長(例如藉由使用第3圖的實例C或實例D而規定),且因此在計算一系列位址時將自然識別出指標S[1],無效路徑1之存在仍導致該存取被禁止。相反,僅存取資料結構260、280及290,該等資料結構的各種資料元件儲存在向量暫存器320、325、330的路徑0、2及3內。在一個實施例中,在向量暫存器320、325、330內,當向量被寫入彼等暫存器中每一者時,位於與路徑1關聯的資料元件位置的資料值設定為邏輯0值。然而,在一替代性實施例中,新資料內容可與現有內容合併,以便在暫存器已更新之後,路徑1之內容受該路徑內現有資料元件值的支配。
當執行儲存操作時,可以類似方式使用述詞資訊。特定而言,在載入/儲存單元讀取多個暫存器320、325、330的內容時,將決定無需將R1、G1及B1資料元件向外儲存至其關聯資料結構270,由此將禁止針對該資料結構執行向記憶體的有關儲存操作。
當執行載入操作時,述詞資訊亦可視情況而用以執行壓縮(如需要),如第7圖中示意地圖示。在此實例中,述詞資訊350識別路徑0及2為有效,但路徑1及3為無效。由此,藉由參考第4圖實例,此將識別需要存取資料結構260、280,但無需存取資料結構270、290。因此,僅存取資料結構260及280。然而,並非將資料結構280內容寫入路徑2,而是將其寫入路徑1。由此,憑藉壓縮,針對有效路徑中每一者所獲的資料元件被寫入向量暫存器355、360、365,以便佔用彼等暫存器內的連續路徑。剩餘路徑的內容歸零,或保留「原樣」,亦即該等內容維持儲存在各種暫存器355、360、365內彼等資料元件位置的前述值。如若要求,則又一載入指令可用以用來自不相連資料結構的所需資料充填剩餘路徑。
此舉可藉由在暫存器內容已充滿來自從記憶體的不相連資料結構內容之後,儘可能避免對該等暫存器內容執行任何後續重排操作的需求而提供進一步最佳化。
第8圖圖示第1圖的資料處理設備的一替代形式,在該資料處理設備中,載入/儲存單元40結合專用排列單元400而操作,以便執行所需的重排操作。由此,在此實施例中,當解碼前述存取指令時,解碼電路系統20產生的各種控制信號將為載入儲存單元提供控制資訊及為專用排列單元400提供控制資訊。以載入指令為例而考慮,發送階段電路系統將發送一系列控制信號至LSU 40,以使得LSU用從記憶體獲得的資料元件充滿暫存器45內的數個向量暫存器。在此情況下,每一向量暫存器內,LSU儲存在該向量暫存器中之內容將為從記憶體的相連位址處獲得的資料元件。由此,此時,每一資料結構的單個資料元件尚未被分隔出而進入不同的向量暫存器。然而,一旦LSU 40已執行了所需載入操作之後,則其經由「完成」信號通知專用排列單元400,此時專用排列單元使用發送階段電路系統提供的控制資訊從有關暫存器擷取值,按需對該等值重新定序,然後將該等值寫入原始存取指令規定的目的暫存器。
對於儲存指令,可採取類似步驟,但在此情況下,專用排列單元400通常將首先執行所需排列,然後才向載入/儲存單元發出完成信號,以使得載入/儲存單元隨後以該等資料元件在單個資料結構內的所需次序將資料元件寫出至記憶體。
由此,以第4圖圖示的資料結構序列為例而考慮,且再次假定目的暫存器是Z0、Z1及Z2,並正在執行載入指令,則載入/儲存單元可經排列以執行四個載入操作以便將資料結構260及有可能的來自該資料結構之後的相連位址的一些額外資料值載入第一向量暫存器,且同樣將第二資料結構270儲存至一不同的向量暫存器,將第三資料結構280儲存至另一不同的向量暫存器,並將第四資料結構290儲存至又一向量暫存器(而且,在該等向量暫存器中每一者中,亦可能存在來自有關資料結構之後的相連位址的一些額外資料值)。該等向量暫存器被有效用作中間向量暫存器,且無需為原始載入指令所規定的暫存器Z0、Z1及Z2中任一者。然後,專用排列單元400將存取彼等各種中間向量暫存器之內容,執行所需排列,然後將所需向量運算元儲存回目的向量暫存器Z0、Z1及Z2。由此,在執行第4圖的示例性載入時,專用排列單元400將組織全部紅色像素值構成單個向量,全部綠色像素值構成另一向量,且全部藍色像素值構成又一向量。
第9圖圖示又一示例性排列,在該排列中,不使用專用排列單元400,且改為使用現有向量排列單元410,該單元410形成資料處理管線內執行單元中之一者。向量排列單元410將有效執行與專用排列單元400之彼等功能類似的功能,但將經由發送階段電路系統25及路徑47而從暫存器45獲得用於進行該向量排列單元410之排列操作的源運算元。發送階段電路系統25將由此向向量排列單元410發送適當的控制信號,以識別需要對所提供的源運算元值執行的所需排列,且亦將識別排列資料隨後需要儲存於其中的目的暫存器。
第10圖是一流程圖,該圖圖示在採用第8圖或第9圖的方法時的操作序列。在第10圖的流程圖中,假定正在執行載入操作。因此,載入/儲存單元將用來自一或更多個存取的資料元件充填中間暫存器。個別存取可針對不相連的記憶體位址,但在每一存取期間獲得的全部資料元件將來自相連位址。由此,此時,按照需求,中間向量暫存器的內容將不會被分隔出而進入資料結構的組成資料元件。
儘管如此,在步驟425中,排列單元將因此對LSU已擷取的資料執行所需排列。該排列單元亦將需要解決任何可能存在的任何校準問題。在第4圖中所識別的四個資料結構的每一者都由LSU儲存在單獨的向量暫存器中,且在每一情況下擷取的第一資料元件都是紅色像素值的先前實例中,不存在校準問題,但將理解,在其他實施例中,可能出現此情況:一系列中間暫存器內包含的資料以該方式預校準,而某個校準可能為必需,以便正確識別每一資料結構的對應資料元件。如第10圖所示,此步驟可藉由使用第8圖中與暫存器檔案45交互的專用排列單元400而執行,或可藉由使資料在路徑47上再循環穿過第9圖的現有排列單元410及使用發送階段電路系統26發送的單獨微操作而執行。
當執行儲存指令而非載入指令時,步驟420及425有效反轉。
將理解,在上述實施例中,各種步驟的執行次序在不同的實施例中可改變。例如,當考慮第3圖中之編碼時,將理解,存取電路系統可以反轉次序對資料結構進行操作。
在另一示例性配置中,可配置在採用第3圖中示例性編碼B、C或D中任一者時,存取指令亦可經排列以在所需載入/商店操作的完成時而自動地更新基底暫存器(在本案中被稱作後指數更新)。此舉將由此賦能另一情況,即載入/儲存指令藉由使用相同基底暫存器說明符而得以規定,但對又一資料結構序列而操作,無需單獨指令來更新該基底暫存器。
作為又一替代性實例,可在一些變體中採用記憶體推測,在該情況下,在載入指令執行期間,推測性地載入每一向量中之資料元件中之一個或更多者。特定而言,當對碼進行向量化以利用可用向量操作時,載入向量暫存器的一些資料結構對於處理而言實際上可能或可能不是必需的。在該等情況下,設備可在載入操作期間將待執行的存取中的一或更多個存取標記為推測存取。如若在正規存取期間發生故障,則通常將必需處理該故障,例如藉由產生異常。然而,在一個實施例中,如若在對來自記憶體的資料結構中之一或更多者進行推測擷取期間偵測到故障,則不採取該種措施。相反,在該種排列中,僅在故障出現於第一有效路徑中的情況下才產生記憶體故障(此情況將為非推測性的)。
第11圖圖示存取指令的一替代性編碼形式,其中提供額外的偏移標識符欄位450。四個編碼選項A、B、C及D中每一者都增補了規定偏移的立即值455。作為立即值的替代者,可識別一單獨的純量暫存器,該純量暫存器中之值規定所需偏移。使用偏移的方式隨後在第12圖中示意地圖示。特定而言,該方式將允許規定多個指令實例,該等指令使用同一資料結構標識符資訊(在第12圖的實例中,此資料結構標識符資訊採用基底暫存器及步長暫存器形式),但在每一實例中偏移值發生變更。由此,此方式使得指令循環能夠以更高效的方式展開,以更好地利用向量處理資源。特定而言,在展開循環中,第一載入指令將規定零偏移,並因此將載入向量暫存器Z0、Z1及Z2,且藉由使用位址460、470、480、490而去交錯為四個資料結構465、475、485、495,該等位址藉由使用第12圖中圖示的計算而產生。下一載入指令能隨後使用恰好同一基底資訊及步長資訊,但規定偏移為1,且將所擷取的資料元件載入至其他三個向量暫存器,在此情況下即暫存器Z3、Z4及Z5。因而,此指令將載入及去交錯四個資料結構505、515、525、535,該等資料結構由位址500、510、520、530而識別,且該等位址又藉由使用第12圖中所示計算識別。值「VL」是向量長度,亦即向量暫存器中的資料元件數目。
藉由該種方法,有可能減少在展開循環中執行位址計算的指令數目,且亦將避免對前文提及的後指數更新形式的需求,該形式原本將基址指標作為指令副效應而進行調整。
從上述實施例可見,將理解,本案所述的新存取指令形式在複雜存取操作執行期間賦能顯著的效率增益。在執行速度方面而獲得顯著優勢。執行的指令數目可顯著減少,除提高執行速度以外,此舉亦可降低設備內的功耗。當使用上述指令時,此舉提升抽象化水平及使複雜存取的易錯性降低,由此簡化需要進行該種複雜存取操作的寫入程式的過程。
有眾多利用包括多個資料元件之資料結構的應用程式。例如,類似於以下實例,利用資料結構的應用程式可受益於對上述指令的利用:
Figure 105123737-A0304-0001
第13圖圖示可使用的虛擬機實施方式。儘管前文描述之實施例在操作支援相關技術的特定處理硬體的設備及方法方面而實施本發明,但亦有可能提供硬體裝置的所謂虛擬機實施方式。該等虛擬機實施方式在主機處理器630上執行,該主機處理器執行主機作業系統620,該主機作業系統支援虛擬機程式610。通常,需要大型高效能處理器以提供以合理速度執行的虛擬機實施方式,但該種方法在某些環境中合理,如在需要執行另一處理器的本端代碼以獲得相容性的情況下,或出於重複使用原因。虛擬機程式610向應用程式600提供應用程式介面,該介面與將由實際硬體提供的應用程式介面相同,該實際硬體是藉由虛擬機程式610模型化的裝置。由此,程式指令(包括上述規定多個非相連資料結構的存取指令)可藉由使用虛擬機程式610而在應用程式600內執行,以模型化指令與虛擬機硬體的交互。
在本申請案中,詞語「經配置以…」用以意謂著設備元件具有一配置,該配置能夠執行所定義的操作。
在此上下文中,「配置」意謂著硬體或軟體的排列或互連方式。例如,設備可具有專用硬體,該硬體提供定義的操作,或處理器或其他處理裝置可經程式化以執行該功能。「經配置以」並非暗示該設備元件為了提供所定義的操作而需要以任何方式變更。
儘管本文已引用附圖詳細描述本發明的說明性實施例,但將理解,本發明並非限定於彼等精確實施例,且熟習該項技術者在不背離本發明範疇及精神的前提下可對本發明進行各種變更、新增及修改,如所附申請專利範圍所定義。例如,在不背離本發明範疇的前提下,獨立請求項之特徵可與從屬申請項之特徵進行各種組合。
10‧‧‧擷取電路系統 15‧‧‧指令快取記憶體 20‧‧‧解碼電路系統 25‧‧‧發送階段電路系統 30‧‧‧執行管線 35‧‧‧執行管線 40‧‧‧執行管線 45‧‧‧發送階段電路系統 47‧‧‧路徑 50‧‧‧資料快取記憶體 55‧‧‧記憶體 60‧‧‧本地緩衝儲存器 70‧‧‧向量暫存器組 75‧‧‧述詞暫存器 80‧‧‧純量暫存器 100‧‧‧記憶體位址空間 105‧‧‧資料結構 107‧‧‧位址 110‧‧‧資料結構 112‧‧‧位址 115‧‧‧資料結構 117‧‧‧位址 120‧‧‧向量暫存器 125‧‧‧向量暫存器 130‧‧‧向量暫存器 150‧‧‧指令編碼 155‧‧‧載入/儲存標識符欄位 160‧‧‧欄位 165‧‧‧述詞標識符欄位 170‧‧‧資料結構標識符欄位 175‧‧‧整數值N 180‧‧‧欄位 190‧‧‧向量暫存器標識符 200‧‧‧純量暫存器標識符 205‧‧‧向量暫存器標識符 215‧‧‧立即值 225‧‧‧純量暫存器標識符 260‧‧‧資料結構 270‧‧‧資料結構 280‧‧‧資料結構 290‧‧‧資料結構 300‧‧‧步驟 305‧‧‧步驟 310‧‧‧步驟 320‧‧‧向量暫存器 325‧‧‧向量暫存器 330‧‧‧向量暫存器 350‧‧‧述詞資訊 355‧‧‧暫存器 360‧‧‧暫存器 365‧‧‧暫存器 400‧‧‧專用排列單元 410‧‧‧現有向量排列單元 420‧‧‧步驟 425‧‧‧步驟 450‧‧‧偏移標識符欄位 455‧‧‧立即值 460‧‧‧位址 465‧‧‧資料結構 470‧‧‧位址 475‧‧‧資料結構 480‧‧‧位址 485‧‧‧資料結構 490‧‧‧位址 495‧‧‧資料結構 500‧‧‧位址 505‧‧‧資料結構 510‧‧‧位址 515‧‧‧資料結構 520‧‧‧位址 525‧‧‧資料結構 530‧‧‧位址 535‧‧‧資料結構 600‧‧‧應用程式 610‧‧‧虛擬機程式 620‧‧‧主機作業系統 630‧‧‧主機處理器
本技術將僅以舉例方式,參考本案實施例進行進一步描述,如附圖中所圖示,在該等附圖中:
第1圖是依據一個實施例之資料處理設備的方塊圖;
第2圖是一圖,該圖示意地圖示依據一個實施例在記憶體與複數個向量暫存器之間轉換彼等資料元件時可如何重排個別資料元件;
第3圖示意地圖示一單一存取指令的格式,該單一存取指令可用於一個實施例中以使得存取電路系統執行存取操作之序列,以便實施第2圖示意圖示的移動/重排程序;
第4圖圖示指令中提供之資訊如何可用以識別記憶體中的一系列位址,該等位址與待存取的所需不相連資料結構關聯;
第5圖是一流程圖,該圖圖示依據一個實施例在執行規定多個非相連資料結構的單一存取指令時實施的步驟;
第6圖示意地圖示藉由單一存取指令識別的述詞資訊如何可用於一個實施例;
第7圖圖示依據一個實施例,在從記憶體將資料結構載入多個向量暫存器時,可如何使用單一存取指令所規定的述詞資訊來執行壓縮;
第8圖及第9圖是方塊圖,該等圖式圖示依據兩個替代性實施例的資料處理設備;
第10圖是一流程圖,該圖圖示第8圖或第9圖的設備可如何用於一個實施例中以執行存取操作之序列,以便實施參考第2圖舉例說明的移動/重排程序;
第11圖圖示依據一個實施例,額外偏移標識符欄位可如何添加至指令編碼;
第12圖圖示依據一個實施例,第11圖的額外偏移標識符欄位可如何用於兩個連續載入指令;及
第13圖圖示可用於一個實施例中的虛擬機實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
10‧‧‧擷取電路系統
15‧‧‧指令快取記憶體
20‧‧‧解碼電路系統
25‧‧‧發送階段電路系統
30‧‧‧執行管線
35‧‧‧執行管線
40‧‧‧執行管線
45‧‧‧發送階段電路系統
47‧‧‧路徑
50‧‧‧資料快取記憶體
55‧‧‧記憶體
60‧‧‧本地緩衝儲存器
70‧‧‧向量暫存器組
75‧‧‧述詞暫存器
80‧‧‧純量暫存器

Claims (18)

  1. 一種用於在記憶體與複數個向量暫存器之間轉換相對於彼此在該記憶體中不相連定位的複數個資料結構的設備,該設備包括:一組向量暫存器,每一向量暫存器經排列以儲存一向量運算元,該向量運算元包括複數個資料元件;存取電路系統,用以執行存取操作,以在該記憶體中之資料結構與該向量暫存器組之間移動向量運算元之資料元件,每一資料結構包括儲存在該記憶體中相連位址處的多個資料元件;解碼電路系統,可回應於一單一存取指令,該單一存取指令識別來自該組向量暫存器的該複數個向量暫存器及該記憶體中相對於彼此而不相連定位的該複數個資料結構,以產生控制信號以控制該存取電路系統來執行該存取操作的一序列,以在該記憶體與該複數個向量暫存器之間移動該複數個資料結構,以使得該複數個向量暫存器中每一向量暫存器中之該向量運算元保存來自該複數個資料結構中每一者的一對應資料元件;其中該單一存取指令包括一資料結構標識符欄位,該欄位提供用以決定該複數個資料結構之該等位址的資訊;及 其中該資料結構標識符欄位識別該組向量暫存器內的一向量暫存器,及在該向量暫存器的每一資料元件提供一指標至該等資料結構中的一相關聯的資料結構。
  2. 如請求項1所述之設備,其中該複數個資料結構中一或更多者的該多個資料元件在該記憶體與該複數個向量暫存器之間移動時經重排。
  3. 如請求項1所述之設備,其中該單一存取指令是一載入指令,且該存取電路系統可回應於該等控制信號以執行存取操作的該序列,以便從該記憶體獲得每一識別的資料結構的該等資料元件,且將一向量運算元寫入每一識別的向量暫存器,該向量運算元包括來自該複數個資料結構中每一者的一對應資料元件。
  4. 如請求項3所述之設備,其中存取操作的該序列包括聚集操作的一序列,每一聚集操作獲得來自該複數個資料結構中每一者的一對應資料元件,且將該等獲得的資料元件寫入與該聚集操作關聯的一向量暫存器。
  5. 如請求項1所述之設備,其中該單一存取指令是一儲存指令,且該存取電路系統可回應於該等控制信號以執行該存取操作序列,以便從每一識別的向量暫存器讀取一向量運算元,該向量運算元包括來自該複數 個資料結構中每一者的一對應資料元件,且在該等資料元件被寫入該記憶體時重排該等資料元件,以便將每一資料結構儲存在該記憶體中對應於該資料結構之不相連位置之一位址,同時確保每一單個資料結構的該等資料元件儲存在該記憶體中之相連位址。
  6. 如請求項5所述之設備,其中存取操作的該序列包括分散操作的一序列,每一分散操作從與該分散操作關聯的一向量暫存器處獲得一向量運算元,該向量運算元包括來自該複數個資料結構中每一者的一對應資料元件,且將該向量運算元的該等資料元件寫入該記憶體的位址,該等位址利用該複數個資料結構的該等位址所決定。
  7. 如請求項1所述之設備,其中該單一存取指令包括一向量暫存器標識符欄位,該欄位提供資訊,該資訊用以決定待存取之該複數個向量暫存器。
  8. 如請求項7所述之設備,其中該向量暫存器標識符欄位包括一向量暫存器標識符,該標識符用以識別該組中之一個向量暫存器及一整數值,該整數值用以識別待存取之該複數個向量暫存器中的該向量暫存器數目,該解碼電路系統經排列以應用一預定規則以便利用該識別的一個向量暫存器及該整數來決定該複數個向量暫存器中之每一向量暫存器。
  9. 如請求項8所述之設備,其中,在該複數個向量暫存器待存取時,該解碼電路系統經排列以決定連續複數個向量暫存器,該等向量暫存器包括該已識別的一個向量暫存器。
  10. 如請求項1所述之設備,其中:該存取電路系統在複數個路徑上操作,每一路徑包含來自該複數個向量暫存器中每一者的一對應資料元件位置;該單一存取指令包括一述詞標識符欄位,該述詞標識符欄位提供述詞資訊,該述詞資訊用以決定該複數個路徑中哪些是該存取操作序列的有效路徑;及在該複數個資料結構待移動時,該存取電路系統經排列以決定與該等有效路徑關聯的彼等資料結構。
  11. 如請求項10所述之設備,其中該單一存取指令是一載入指令時,且該存取電路系統經排列以藉由使用該述詞資訊而執行一壓縮操作,該述詞資訊用以識別待載入的該複數個資料結構,且該存取電路系統經排列以在該複數個向量暫存器內的一系列連續路徑內儲存彼等資料結構。
  12. 如請求項1所述之設備,其中該單一存取指令包括一偏移標識符欄位,該欄位提供偏移資料,當決定該複數個資料結構的該等位址時,該偏移資料將結 合該資料結構標識符欄位中之該資訊而被應用。
  13. 如請求項1所述之設備,其中該存取電路系統包括一載入/儲存單元及一關聯的緩衝儲存器,以允許在存取操作的該序列執行期間暫時緩衝資料元件。
  14. 如請求項1所述之設備,其中該存取電路系統包括一載入/儲存單元及一向量排列單元,該等單元組合操作以執行存取操作的該序列。
  15. 如請求項14所述之設備,其中該載入/儲存單元及該向量排列單元經排列以經由該組內的一或更多個向量暫存器交換資料元件,該等向量暫存器用以儲存資料元件的中間向量。
  16. 一種操作一設備以執行存取操作而在記憶體中之資料結構與該設備的一組向量暫存器之間移動向量運算元的資料元件的方法,每一向量暫存器經排列以儲存一向量運算元,該向量運算元包括複數個資料元件,且每一資料結構包括儲存在該記憶體中相連位址的多個資料元件,該方法包括以下步驟:解碼一單一存取指令,該單一存取指令識別來自該組向量暫存器的複數個向量暫存器及該記憶體中相對於彼此而不相連定位的複數個資料結構,以產生控制信號以控制存取電路系統來執行該等存取操作的一序列,以在該記憶體與該複數個向量暫存器之間移 動該複數個資料結構;及在存取操作的該序列執行期間移動每一資料結構的該多個資料元件,以使得該複數個向量暫存器中每一向量暫存器中之該向量運算元保存來自該複數個資料結構中每一者的一對應資料元件;其中該單一存取指令包括一資料結構標識符欄位,該欄位提供用以決定該複數個資料結構之該等位址的資訊;及其中該資料結構標識符欄位識別該組向量暫存器內的一向量暫存器,及在該向量暫存器的每一資料元件提供一指標至該等資料結構中的一相關聯的資料結構。
  17. 一種用於在記憶體與複數個向量暫存器手段之間轉換相對於彼此在該記憶體中不相連定位的複數個資料結構的設備,該設備包括:一組向量暫存器手段,每一向量暫存器手段用於儲存一向量運算元,該向量運算元包括複數個資料元件;存取手段,用以執行存取操作,以在該記憶體中之資料結構與該向量暫存器手段組之間移動向量運算元之資料元件,每一資料結構包括儲存在該記憶體中相連位址處的多個資料元件; 解碼手段,回應於一單一存取指令以用於產生控制信號,該單一存取指令識別來自該組向量暫存器之該複數個向量暫存器手段及該記憶體中相對於彼此而不相連定位的該複數個資料結構,該等控制信號用以控制該存取手段來執行該等存取操作的一序列,以在該記憶體與該複數個向量暫存器手段之間移動該複數個資料結構,以使得該複數個向量暫存器手段中每一向量暫存器手段中之該向量運算元保存來自該複數個資料結構中每一者的一對應資料元件;其中該單一存取指令包括一資料結構標識符欄位,該欄位提供用以決定該複數個資料結構之該等位址的資訊;及其中該資料結構標識符欄位識別該組向量暫存器內的一向量暫存器手段,及在該向量暫存器手段的每一資料元件提供一指標至該等資料結構中的一相關聯的資料結構。
  18. 一種包含一電腦程式的電腦程式產品,該電腦程式儲存在一非暫時性電腦可讀取儲存媒體中,該電腦程式在被一資料處理設備執行時提供一虛擬機,該虛擬機提供對應於請求項1所述設備的一指令執行環境。
TW105123737A 2015-07-31 2016-07-27 用於轉換記憶體與複數個向量暫存器之間的複數個資料結構的設備及方法 TWI709863B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/814,590 2015-07-31
US14/814,590 US9875214B2 (en) 2015-07-31 2015-07-31 Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers

Publications (2)

Publication Number Publication Date
TW201717053A TW201717053A (zh) 2017-05-16
TWI709863B true TWI709863B (zh) 2020-11-11

Family

ID=56235851

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105123737A TWI709863B (zh) 2015-07-31 2016-07-27 用於轉換記憶體與複數個向量暫存器之間的複數個資料結構的設備及方法

Country Status (8)

Country Link
US (1) US9875214B2 (zh)
EP (1) EP3329362B1 (zh)
JP (1) JP6843113B2 (zh)
KR (1) KR20180039645A (zh)
CN (1) CN107851014B (zh)
IL (1) IL256163B (zh)
TW (1) TWI709863B (zh)
WO (1) WO2017021678A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6503945B2 (ja) * 2015-07-13 2019-04-24 富士通株式会社 情報処理装置、並列計算機システム、ファイルサーバ通信プログラム及びファイルサーバ通信方法
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
US10338920B2 (en) * 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
US10152321B2 (en) * 2015-12-18 2018-12-11 Intel Corporation Instructions and logic for blend and permute operation sequences
US20170177359A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Lane-Based Strided Scatter Operations
US20170177543A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Aggregate scatter instructions
US10901940B2 (en) 2016-04-02 2021-01-26 Intel Corporation Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width
US10216515B2 (en) * 2016-10-18 2019-02-26 Oracle International Corporation Processor load using a bit vector to calculate effective address
EP3340037B1 (en) * 2016-12-22 2019-08-28 ARM Limited A data processing apparatus and method for controlling vector memory accesses
US11182200B2 (en) 2017-06-29 2021-11-23 Texas Instruments Incorporated Streaming engine with short cut start instructions
US20190272175A1 (en) * 2018-03-01 2019-09-05 Qualcomm Incorporated Single pack & unpack network and method for variable bit width data formats for computational machines
US11175915B2 (en) * 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10970072B2 (en) * 2018-12-21 2021-04-06 Intel Corporation Systems and methods to transpose vectors on-the-fly while loading from memory
GB2584268B (en) * 2018-12-31 2021-06-30 Graphcore Ltd Load-Store Instruction
GB2580664B (en) * 2019-01-22 2021-01-13 Graphcore Ltd Double load instruction
CN111813446A (zh) * 2019-04-12 2020-10-23 杭州中天微系统有限公司 一种数据加载和存储指令的处理方法和处理装置
US11327862B2 (en) * 2019-05-20 2022-05-10 Micron Technology, Inc. Multi-lane solutions for addressing vector elements using vector index registers
WO2020250419A1 (ja) * 2019-06-14 2020-12-17 日本電気株式会社 制御装置、制御方法、及び制御プログラムが格納された非一時的なコンピュータ可読媒体
CN113626082A (zh) * 2020-05-08 2021-11-09 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
US11204889B1 (en) 2021-03-29 2021-12-21 SambaNova Systems, Inc. Tensor partitioning and partition access order
US11366783B1 (en) 2021-03-29 2022-06-21 SambaNova Systems, Inc. Multi-headed multi-buffer for buffering data for processing
US11748101B2 (en) * 2021-07-13 2023-09-05 Arm Limited Handling of single-copy-atomic load/store instruction with a memory access request shared by micro-operations
US11709611B2 (en) 2021-10-26 2023-07-25 SambaNova Systems, Inc. Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems
CN113918883B (zh) * 2021-11-03 2022-05-27 海光信息技术股份有限公司 数据处理方法、装置以及设备和计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20140181464A1 (en) * 2012-12-26 2014-06-26 Andrew T. Forsyth Coalescing adjacent gather/scatter operations

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689653A (en) 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
US5812147A (en) * 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US6496902B1 (en) * 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
GB2382887B (en) * 2001-10-31 2005-09-28 Alphamosaic Ltd Instruction execution in a processor
GB2402759B (en) * 2003-06-12 2005-12-21 Advanced Risc Mach Ltd Data processing apparatus and method for transferring data values between a register file and a memory
JP3961461B2 (ja) * 2003-07-15 2007-08-22 エヌイーシーコンピュータテクノ株式会社 ベクトル処理装置、および、ベクトル処理方法
US7421565B1 (en) * 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US9557994B2 (en) 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US20070011442A1 (en) * 2005-07-06 2007-01-11 Via Technologies, Inc. Systems and methods of providing indexed load and store operations in a dual-mode computer processing environment
US7921263B2 (en) 2006-12-22 2011-04-05 Broadcom Corporation System and method for performing masked store operations in a processor
US20120060016A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads from Scattered Memory Locations
US8635431B2 (en) * 2010-12-08 2014-01-21 International Business Machines Corporation Vector gather buffer for multiple address vector loads
KR101804008B1 (ko) * 2011-09-26 2017-12-01 인텔 코포레이션 벡터 산개-op 및 집결-op 기능을 제공하는 명령어 및 로직
US10157061B2 (en) * 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
WO2013095581A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Apparatus and method for sliding window data access
CN104137059B (zh) * 2011-12-23 2018-10-09 英特尔公司 多寄存器分散指令
US9626333B2 (en) 2012-06-02 2017-04-18 Intel Corporation Scatter using index array and finite state machine
US8972697B2 (en) 2012-06-02 2015-03-03 Intel Corporation Gather using index array and finite state machine
JP6253514B2 (ja) * 2014-05-27 2017-12-27 ルネサスエレクトロニクス株式会社 プロセッサ

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
TW201246065A (en) * 2011-04-01 2012-11-16 Intel Corp Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
TW201525856A (zh) * 2011-04-01 2015-07-01 Intel Corp 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備
US20140181464A1 (en) * 2012-12-26 2014-06-26 Andrew T. Forsyth Coalescing adjacent gather/scatter operations

Also Published As

Publication number Publication date
IL256163B (en) 2020-02-27
TW201717053A (zh) 2017-05-16
KR20180039645A (ko) 2018-04-18
CN107851014B (zh) 2022-08-09
JP6843113B2 (ja) 2021-03-17
EP3329362A1 (en) 2018-06-06
CN107851014A (zh) 2018-03-27
US20170031865A1 (en) 2017-02-02
IL256163A (en) 2018-02-28
WO2017021678A1 (en) 2017-02-09
JP2018523238A (ja) 2018-08-16
US9875214B2 (en) 2018-01-23
EP3329362B1 (en) 2022-03-30

Similar Documents

Publication Publication Date Title
TWI709863B (zh) 用於轉換記憶體與複數個向量暫存器之間的複數個資料結構的設備及方法
JP6274672B2 (ja) 装置および方法
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
US20190108029A1 (en) Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
JP5646656B2 (ja) 複数の命令セットにより使用されるレジスタ間のマッピング
JP5764257B2 (ja) レジスタをアライメントするためのシステム、装置、および方法
TWI716425B (zh) 用於執行疊接操作的裝置和方法
JP7244046B2 (ja) 遠隔アトミックオペレーションの空間的・時間的マージ
US9081564B2 (en) Converting scalar operation to specific type of vector operation using modifier instruction
KR102318531B1 (ko) 스트리밍 메모리의 치환 동작
US9965275B2 (en) Element size increasing instruction
KR20180066146A (ko) 벡터 데이터 전송 명령어
US11036502B2 (en) Apparatus and method for performing a rearrangement operation
KR20180067582A (ko) 벡터 로드 명령어
GB2540940A (en) An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
US7779231B2 (en) Pipelined processing using option bits encoded in an instruction
US7861061B2 (en) Processor instruction including option bits encoding which instructions of an instruction packet to execute
JP6347629B2 (ja) 命令処理方法及び命令処理装置