TWI607307B - 用於存取記憶體之對準式區塊並行 - Google Patents

用於存取記憶體之對準式區塊並行 Download PDF

Info

Publication number
TWI607307B
TWI607307B TW104110339A TW104110339A TWI607307B TW I607307 B TWI607307 B TW I607307B TW 104110339 A TW104110339 A TW 104110339A TW 104110339 A TW104110339 A TW 104110339A TW I607307 B TWI607307 B TW I607307B
Authority
TW
Taiwan
Prior art keywords
size
memory
data
block
address
Prior art date
Application number
TW104110339A
Other languages
English (en)
Other versions
TW201621667A (zh
Inventor
強納森D 布瑞布里
麥克K 齊史溫
克理斯俊 傑可比
提摩西J 史洛歌
Original Assignee
萬國商業機器公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 萬國商業機器公司 filed Critical 萬國商業機器公司
Publication of TW201621667A publication Critical patent/TW201621667A/zh
Application granted granted Critical
Publication of TWI607307B publication Critical patent/TWI607307B/zh

Links

Classifications

    • 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
    • G06F12/023Free address space management
    • 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/04Addressing variable-length words or parts of words
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

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)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

用於存取記憶體之對準式區塊並行
本發明大體上係關於藉由處理器存取記憶體,且更具體而言,係關於藉由處理器以不可部分完成之方式或以區塊並行之方式存取記憶體中之資料區塊。
純量碼預期執行該程式碼之中央處理單元(CPU)將一起存取軟體變數之所有位元組。在用於CPU之典型架構中,只要對係正被存取之資料之大小之整數倍的記憶體中之界限執行存取,即滿足對純量碼之此種期望。當藉由編譯器向量化純量碼時,常將載入及儲存指令轉化成向量載入及儲存指令。然而,向量載入指令及向量儲存指令常不具有一致性保證,或僅在向量載入或儲存指令處於為CPU中之向量暫存器之大小的界限上時保證一致性。對於並非為不可部分完成的或區塊並行之存取,若一個CPU寫出資料且另一CPU同時讀取資料,則讀取資料之CPU可見對含有後一CPU之變數之記憶體位置的部分更新。此與大部分程式設計語言或諸如無鎖資料結構之程式設計技術之語義不一致。
實施例包括用於存取記憶體中之資料之方法、系統及電腦程式產品。根據本發明之實施例,提供一種用於存取耦接至處理器之記憶 體中之資料的方法。該方法接收用於存取在該記憶體中之一位址處具有第一大小之資料的記憶體參考指令。該方法判定該位址之對準大小。該方法藉由以區塊並行之方式存取每一資料群組而存取一或多個資料群組中之具有第一尺寸之資料。該等資料群組具有係該對準大小之倍數之大小。
根據本發明之另一實施例,提供一種用於存取資料之系統。該系統包含記憶體及經組態以執行一方法之處理器。該方法接收用於存取在該記憶體中之一位址處具有第一大小之資料的記憶體參考指令。該方法判定該位址之對準大小。該方法藉由以區塊並行之方式存取每一資料群組而存取一或多個資料群組中之具有第一大小之資料。該等資料群組具有係該對準大小之倍數之大小。
根據本發明之另一個實施例,提供一種用於存取記憶體中之資料的電腦程式產品。該電腦程式產品包含電腦可讀儲存媒體,該電腦可讀儲存媒體具有使用其體現之機器指令。可由處理器讀取之該等機器指令引起處理器執行一方法。該方法接收用於存取在該記憶體中之一位址處具有第一大小之資料的記憶體參考指令。該方法判定該位址之對準大小。該方法藉由以區塊並行之方式存取每一資料群組而存取一或多個資料群組中之具有第一大小之資料。該等資料群組具有係該對準大小之倍數之大小。
根據本發明之另一實施例,提供一種用於存取資料之系統。該系統包含記憶體及經組態以執行一方法之處理器。該方法接收用於存取在該記憶體中之一位址處具有第一大小之資料的記憶體參考指令。記憶體參考指令指定第一大小。該方法判定該位址之對準大小。該方法判定第一大小及經判定之大小之最大公約數。該方法存取一或多個資料群組中之具有第一大小之資料。該等資料群組具有係最大公約數之大小之倍數的大小。
根據本發明之另一個實施例,提供一種用於存取記憶體中之資料的電腦程式產品。該電腦程式產品包含電腦可讀儲存媒體,該電腦可讀儲存媒體具有使用其體現之機器指令。可由處理器讀取之該等機器指令引起處理器執行一方法。該方法接收用於存取在該記憶體中之一位址處具有第一大小之資料的記憶體參考指令。記憶體參考指令指定第一大小。該方法判定該位址之對準大小。該方法判定第一大小及經判定之大小之最大公約數。該方法存取一或多個資料群組中之具有第一大小之資料。該等資料群組具有係最大公約數之大小之倍數的大小。
102‧‧‧列
104‧‧‧列
106‧‧‧列
108‧‧‧列
110‧‧‧列
112‧‧‧列
200‧‧‧記憶體
305‧‧‧方框
310‧‧‧決策方框
315‧‧‧方框
320‧‧‧決策方框
325‧‧‧方框
330‧‧‧決策方框
335‧‧‧方框
340‧‧‧決策方框
345‧‧‧方框
350‧‧‧方框
405‧‧‧方框
410‧‧‧決策方框
415‧‧‧方框
420‧‧‧決策方框
425‧‧‧決策方框
430‧‧‧方框
435‧‧‧決策方框
440‧‧‧決策方框
445‧‧‧方框
450‧‧‧決策方框
455‧‧‧決策方框
460‧‧‧方框
465‧‧‧方框
500‧‧‧系統
505‧‧‧記憶體
510‧‧‧處理器
515‧‧‧處理器
520‧‧‧匯流排
525‧‧‧暫存器
530‧‧‧暫存器
在本說明書之結尾部分處之申請專利範圍中特別指出並且清楚地主張被視為實施例之標的物。實施例之前述及其他特徵及優勢自結合隨附圖式進行的以下詳細描述顯而易見,其中:圖1說明根據本發明之一些實施例之具有自然對準之區塊的記憶體的部分;圖2描繪根據本發明之一些實施例之經存取之記憶體之一部分;圖3描繪根據本發明之一些實施例之用於存取記憶體之處理流程;圖4描繪根據本發明之一些實施例之用於存取記憶體之處理流程;及圖5說明根據本發明之一些實施例之用於存取記憶體中之資料的系統。
一些程式設計語言慣例要求藉由處理器(例如,中央處理單元CPU))並行地存取記憶體中之資料區塊之所有位元組(例如,原生型變數,諸如整數、浮點數、長整數、雙精準數等)。區塊之位元組經並 行地存取意謂存取原始值抑或更新值且將不存取該兩個值之混合。舉例而言,當資料區塊具有值「1234」且該值經更新至「5678」,則該兩個值中僅一個為擷取的正確值。可由並非並行地存取資料區塊而產生之任何部分更新值(例如,「1278」或「5634」)為擷取的不正確值。在本發明中,此並行存取要求被稱作「區塊並行」。此外,「以區塊並行」方式存取記憶體或「區塊並行」意謂存取記憶體中之資料之方式滿足區塊並行。對於習知程式設計語言及處理器,僅在區塊為「自然對準」時(亦即,區塊之位址對應於區塊之資料類型大小之倍數時)保證用於資料區塊之區塊並行存取。
向2個、4個、8個、16個及32個位元組之欄位給定特殊名稱。半字組為兩個連續位元組之群組。字組為四個連續位元組之群組。雙字組為八個連續位元組之群組。四倍字組為16個連續位元組之群組。八倍字組為32個連續位元組之群組。當記憶體位址標明「自然對準之」半字組、字組、雙字組、四倍字組及八倍字組時,位址之二進位表示分別含有一個、兩個、三個、四個或五個最右零位元。半字組、字組、雙字組或四倍字組在本發明中被稱作區塊。
對於參考記憶體中之資料之一些指令,將對半字組、字組、雙字組或四倍字組內之所有位元組的存取指定為表現為如由其他處理器及通道程式所觀察到的區塊並行。在將擷取型參考指定為表現為在區塊內為並行時,在區塊中所含之位元組正由一個處理器擷取的時間內,不允許另一處理器或通道程式對區塊進行之儲存存取。在將儲存型參考指定為表現為在區塊內為並行時,在區塊內之位元組正由一個處理器擷取的時間內,不允許另一處理器或通道程式對區塊(擷取型抑或儲存型)之存取。根據習知指令集架構,若運算元中所指定之位址在積分邊界處,則單運算元參考(例如,載入至單一暫存器之單一值或指令所使用之單一運算元)具有對應於彼運算元大小(亦即,正被 存取之資料之大小)的區塊並行,若運算元中所指定之位址並非處於積分邊界處,則運算元對應於僅一個位元組大小為區塊並行。
對於習知處理器,位元組之所有八個位元始終被一起參考-此被稱作位元組並行。因此,區塊並行表示不同層級之位元組並行。舉例而言,四位元組資料區塊之區塊並行可被稱作四位元組並行。此外,由於在藉由四位元組並行存取記憶體時將四位元組資料區塊之所有四個位元組作為單一單元而並行地存取,所以兩個二位元組資料區塊及四個一位元組區塊分別為二位元組並行及位元組並行。
區塊並行記憶體操作亦被稱作關於記憶體參考之不可部分完成的操作。若積分區塊內之所有位元組經存取為如由其他處理器所見之單一單元,則記憶體參考被視為區塊並行。積分區塊為資料區塊,該積分區塊之位址為區塊之長度的整數倍。積分區塊在積分邊界上-區塊之第一位元組之位址處於積分邊界處。
圖1說明具有標明「自然對準之」區塊之位址之記憶體的部分。具體而言,此圖式描繪列102至112,該等列分別表示「自然對準之」半字組、字組、雙字組、四倍字組及八倍字組。如所說明,將記憶體視為位元之長水平字串。位元之字串經次分成位元組之單元((亦即,八個位元)。藉由為彼位元組位置之位址的獨特非負整數識別記憶體中之每一位元組位置。
列102表示具有一位元組資料之區塊之記憶體。列102中之每一矩形表示一位元組資料之區塊。每一矩形中所包括之數目為位元組區塊與基底位址(對應於用偏移0標記之第一元件之位址)的偏移。可使用位址及與該位址之偏移存取每一位元組(亦即,自記憶體擷取或儲存至記憶體)。在一些實施例中,至少在位元組層級((亦即,位元組並行)以區塊並行之方式存取記憶體。另外,若正被存取之資料之第一位元組之位址為對於較大區塊大小之積分邊界,則對較大區塊之存取 相對於彼區塊大小可類似地為區塊並行。
列104表示具有自然對準之二位元組資料之區塊的記憶體。用二之倍數定址二位元組區塊中之每一者,且因此所有二位元組資料區塊為積分區塊,且可利用兩個位元組之區塊大小以區塊並行之方式存取。同樣,列106中之四位元組資料區塊、列108中之八位元組資料區塊、列110中之16位元組資料區塊及列112中之32位元組資料區塊全部為積分區塊,且可相對於四位元組、八位元組、16位元組及32位元組區塊以區塊並行之方式執行對彼等資料區塊之存取。
在本發明中,記憶體位址之位址對準大小為可藉由彼位址(亦即,該位址之最大二之乘冪約數)定址之最大積分區塊的大小。舉例而言,位址96之位址對準大小為32(亦即,25)且位址64之位址對準大小為64(亦即,26)。在一些實施例中,藉由以下步驟獲得位址之位址對準大小:對二進位表示中之位址之尾隨零進行計數及接著自乘二至二進位表示中之尾隨零之乘冪,亦即,alignment_size(address)=2trailing_zeros(address),其中alignment_size()為採用位址作為輸入且輸出輸入位址之位址對準大小的函數,且trailing_zeros()為採用位址作為輸入且輸出二進位表示中之位址中的尾隨零之數目的函數。舉例而言,位址96為11000002,其具有五個尾隨零。因此,位址96之位址對準大小為25或32。位址64為10000002,其具有六個尾隨零。因此,位址64之位址對準大小為26或64。
對於習知記憶體參考指令,區塊並行取決於正被參考之資料區塊之第一位元組的位址是否為記憶體參考大小之積分(亦即,第一位元組之位址是否為記憶體參考大小之倍數,或位址對準大小是等於還是大於記憶參考大小)。亦即,用於習知記憶體參考指令之區塊並行取決於正由指令參考之資料區塊是否具有與記憶體參考大小相同之位址對準大小。舉例而言,若習知記憶體參考指令參考八位元組積分邊 界(例如,由列108所表示之記憶體之部分中所展示之位址0、8、16、24等等)上之資料之八個位元組,則該指令為八位元組並行。然而,若習知記憶體參考指令參考四位元組積分邊界(例如,由列106所表示之記憶體之部分中所展示之位址4、12、20等等)上之資料之八個位元組,則不保證八位元組並行。此係因為當習知記憶體參考指令參考在四位元組邊界處對準之記憶體中之資料的八位元組區塊時,不保證在一個處理器正參考八個位元組時兩個四位元組區塊或四個二位元組區塊將不由另一處理器更新。
當正被參考之資料區塊之位址並非參考該區塊之指令之記憶體參考大小的積分時,習知指令集架構保證僅單一位元組並行用於此記憶體參考(諸如用於載入至單一暫存器或自單一暫存器儲存),該記憶體參考將來自記憶體之一個運算元提供至期望記憶體運算元之指令,等等。因此,軟體可僅依賴於習知記憶體參考,該記憶體參考提供在記憶體參考大小處之區塊並行或僅單一位元組並行。根據習知指令集架構藉由記憶體參考指令不保證區塊並行之中間層級。亦即,例如,當記憶體參考大小為八位元組且正被參考之資料區塊在四位元組邊界或二位元組邊界處對準時,因為僅為積分八位元組記憶體位址上之八位元組(雙字組)參考提供八位元組並行(亦即,當位址為八位元組資料大小之倍數時),僅提供單一位元組並行(亦即,具有一個位元組之區塊大小的區塊並行)或以其他方式保證單一位元組並行。
在現代處理器中,可以與對較小資料大小之參考相同之速度共同地執行對於寬資料參考(例如,雙字組、四倍字組或八倍字組)之存取。因此,當較大記憶體區域待存取、處理或複製時,需要利用適於使用較大記憶體參考大小存取、處理及/或複製記憶體之記憶體指令來存取、處理或複製大區域。因此,例如,當兩個連續字組待複製時,可用單次雙字組載入及單次雙字組儲存替換兩次字組載入及兩次 字組儲存,且藉此使複製操作之速度加倍。若二位元組邊界上之32個二位元組變數之陣列待複製,則可採用32次半字組載入及32次半字組儲存來完成複製。在實施雙字組存取之處理器上,四個半字組存取之群組各自可由單一雙字組存取替換。
本發明之實施例提供一種機構,該機構用於當使用對於大於其各別(資料元件)積分邊界處之每一個別資料元件之大小(例如,字組大小-四個位元組)的資料大小(例如,雙字組大小-八個位元組)的記憶體參考複製此資料時及當其各別(資料元件)積分邊界(例如,位址1002)處之第一個別資料元件並未在較大資料大小積分邊界(例如,位址10002)(其對應於用於複製在其積分邊界處對準之資料元件之序列的存取大小)處對準時利用各別個別資料元件處之區塊並行複製其積分位址(例如,位址1002)處之對準資料(例如,字組)之序列。
本發明之實施例提供系統及方法,其即使在正被參考之資料區塊之位址並非記憶體參考大小之積分的情況下仍提供不同層級之區塊並行。在一些實施例中,指令之運算元由多個區塊並行存取構成,每一區塊對應於其對應的積分邊界處之區塊。舉例而言,若一些實施例之記憶體參考指令參考四位元組邊界(例如,由列106表示之記憶體之部分中所展示之位址1002或11002)上之八位元組資料,則保證對於在積分四位元組邊界處對準之每一四位元組區塊的四位元組並行。此外,亦保證二位元組並行,因為其由所保證的四位元組並行暗示(亦即,因為四為二之倍數,故在積分四位元組邊界處對準之任何區塊亦在積分二位元組邊界處對準)。同樣,若記憶體參考指令在具有八位元組邊界(例如,由列106表示之記憶體之部分中所展示之位址10002或110002)之記憶體之位址處具有16位元組之記憶體參考大小,則針對在包含16位元組區塊之其積分八位元組、四位元組、二位元組及一位元組區塊邊界處對準之八位元組、四位元組、二位元組及一位元組 區塊保證八位元組區塊並行、四位元組區塊並行、二位元組區塊並行及單一位元組區塊並行。亦即,保證在其積分邊界上包含經存取之16位元組參考大小之任何八位元組、四位元組、二位元組或一位元組區塊不包括部分更新值。
正被參考之資料區塊之位址之對準大小僅為執行本發明之一些實施例之記憶體參考指令的處理器所提供之最小位元組並行層級。亦即,在一些實施例中,單一區塊並行存取可實施為結合邏輯之複數個存取以確保複數個此種存取展現區塊並行行為。在一些實施例中,複數個區塊並行存取經實施為單一存取,該單一存取將至少區塊並行行為提供至在積分邊界處對準之該複數個存取中之每一區塊。
圖2描繪根據本發明之一些實施例之藉由處理器存取之記憶體200之一部分。具體而言,此圖式說明具有自32至55之位址之記憶體的一部分。記憶體200具有八位元組邊界(例如,快取記憶體介面大小)。亦即,位址32、40及48包括邊界。
作為一實例,根據本發明之一些實施例之記憶體參考指令具有16位元組之記憶體參考大小(亦即,四倍字組之大小),且16位元組之此區塊具有位址34(亦即,該區塊之第一位元組在記憶體200之位址34處)。在圖2中將此等16個位元組描繪為灰方框。執行此記憶體參考指令之處理器將存取資料之16個位元組,同時保證二位元組並行。此係因為呈二進位形式(亦即,1000102)之位址34具有一個尾隨零,且因此該位址具有兩個位元組之對準大小。
在一些實施例中,處理器可存取為對準大小之倍數之任何大小之群組中之資料的16個位元組,只要該等群組中無一者跨越記憶體之邊界。舉例而言,執行指令之處理器將存取具有位址34至37之四個位元組、具有位址38及39之兩個位元組、具有位址40至43之四個位元組、具有位址44至47之四個位元組,及具有位址48及49之兩個位元 組。然而,因為存取每一群組花費時間且影響效能,則執行指令之處理器將在避免跨越快取線的同時以儘可能小的存取次數存取資料之該16個位元組(亦即,此實例中之位址32、40、48)。具體而言,處理器將存取具有位址34至39至多快取線位址40之前六個位元組、具有位址40至47至多下一快取線位址48之接下來的八個位元組,及具有位址48及49之接下來的兩個位元組。可以任何次序執行該三個存取(亦即,六位元組存取、八位元組存取及二位元組存取),以便存取所有16個位元組。
與根據本發明之一些實施例之執行記憶體參考指令之處理器相對比,執行參考記憶體200之位址34處的資料之16個位元組之習知記憶體參考指令的處理器將使用至多16個一位元組存取來存取資料之16個位元組。此係因為對於習知記憶體參考指令而言,16位元組資料之位址並非記憶體參考大小(亦即,16個位元組)之積分,且因此僅保證位元組並行。在一些情況下,執行習知記憶體參考指令之處理器將必須在位元組位址32、33及50至55處填補無意義位元組,以存取具有位址34至49之十六個位元組而不導致對準故障。此等額外步驟將影響效能。
除非另有說明,否則將基於根據IBM之z/Architecture之例示性指令指定以下程式碼實例。然而,熟習此項技術者將理解如何使本文中之實例適於其他架構,諸如Power ISA架構。IBM System z伺服器系列之指令集(被稱為z/Architecture指令集)闡述於IBM出版物z/Architecture Principles of Operation(SA22-7832-09(2012年9月第10版)),其以全文引用之方式併入本文中。Power Servers之指令集(被稱為Power ISA(指令集架構))闡述於Power ISA(2010年7月,版本2.06修正版B)中,其以全文引用之方式併入本文中。
在以下例示性z/Architecture指令(實例1)中,展示16次半字組載 入及儲存之複製廻圈:LHI R1,16 XGR R3,R3 LOOP:LLH R2,0(R3,R4) STH R2,0(R3,R5) AGHI R3,2 BCT R1,LOOP
其中LHI為LOAD HALFWORD IMMEDIATE指令,XGR為EXCLUSIVE OR指令,LLH為LOAD LOGICAL HALFWORD指令,STH為STORE HALFWORD指令,AGHI為ADD HALFWORD IMMEDIATE指令,BCT為BRANCH ON COUNT指令,且R1至R5為暫存器。在上文併入之z/Architecture Principles of Operation中描述該等指令之更詳細描述。
實例1中所展示之16次半字組載入及儲存可用雙字組暫存器之四次載入及四次儲存替換,從而將執行時間自對應於執行66個指令之時間減少至對應於執行如以下實例2中所展示之18個指令之時間:LHI R1,4 XGR R3,R3 LOOP:LG R2,0(R3,R4) STG R2,0(R3,R5) AGHI R3,8 BCT R1,LOOP
然而,基於複製16個半字組之實例1在暫存器R4及R5中所保存之位址對應於至少為二之位址對準大小的情況下供應二位元組區塊並行,以及供應單一位元組並行(亦即,具有對應於單個位元組之區塊大小之區塊並行)。另一方面,實例2中所展示之指令通常可在暫存器 R4及R5具有至少為四倍字組之位址對準大小的情況下保證四倍字組區塊並行,且另外保證位元組並行。因此,將指令自實例1轉換至實例2之程式設計器或編譯器可將實例1之區塊並行保證自半字組區塊並行降低至對於具有小於四倍字組但至少半字組大小之對準位址大小的位址的唯一位元組並行。因此,程式設計器或編譯器可隨此在其他方面有益的變化引入程式設計語言或程式設計慣例之違規。
作為另一實例,若二位元組邊界上之32個二位元組變數之陣列待複製,則將採用32次半字組載入及32次半字組儲存來完成複製。若使用根據本發明之一些實施例之一次載入16個位元組之單指令多資料(SIMD)載入,則僅需要兩次載入及兩次儲存,從而極大地減少複製之執行時間。當在z/Architecture處理器上實施此SIMD載入時,以下實例3中之程式碼可用如以下實例4中所展示之兩個VECTOR LOAD指令接著用兩個VECTOR STORE指令替換。
實例3展示16次半字組載入及儲存之複製廻圈:LHI R1,16 XGR R3,R3 LOOP:LLH R2,0(R3,R4) STH R2,0(R3,R5) AGHI R3,2 BCT R1,LOOP
此複製廻圈可用僅向量暫存器之兩次載入及兩次儲存替換,從而將執行時間自對應於執行66個指令之時間減少至對應於執行如實例4中所展示之四個指令之時間:VL V1,0(R4)
VST V1,0(R5)
VL V1,16(R4)
VST V1,16(R5)
其中VL為VECTOR LOAD指令,VST為VECTOR STORE指令,且V1為向量資料類型。
然而,根據習知指令架構,基於複製16個半字組之實例3在暫存器R4及R5中所保存之位址對應於至少為二之位址對準大小的情況下供應二位元組區塊並行,以及供應單一位元組並行。另一方面,實例4通常可在暫存器R4及R5具有至少為四倍字組之位址對準大小的情況下保證四倍字組區塊並行,且另外保證位元組並行。因此,將指令自實例3轉換至實例4之程式設計器或編譯器可將實例3之區塊並行保證自半字組區塊並行降低至對於具有小於四倍字組但至少半字組大小之對準位址大小的位址的唯一位元組並行。因此,程式設計器或編譯器可隨此在其他方面有益的變化引入程式設計語言或程式設計慣例之違規。
當陣列之多個值待增加一常量時,可進行類似變換。具體而言,以下實例5展示16個半字組之加法廻圈:LHI R1,16 LH R7,R6 XGR R3,R3 LOOP:LLH R2,0(R3,R4) AH R2,R6 STH R2,0(R3,R5) AGHI R3,2 BCT R1,LOOP
其中LH為LOAD HALFWORD指令,AH為ADD HALFWORD指令,且R6及R7為暫存器。16個半字組之此加法廻圈可用僅兩次向量加法替換,從而將執行時間自對應於執行83個指令之時間減少至對應 於執行如以下實例6中所展示之7個指令之時間:VLREPH V3,0(R6)
VL V1,0(R4)
VAH V1,V1,V3
VST V1,0(R5)
VL V1,16(R4)
VAH V1,V1,V3
VST V2,16(R5)
其中VLREPH為VECTOR LOAD AND REPLICATE指令,VAH為VECTOR ADD HALFWORD指令,且V1至V3為向量。
實例5在位址R4及R5具有至少為二之位址對準大小的情況下提供對於經如此增加之每一半字組之區塊並行,而實例6在R4及R5具有至少為16之位址對準大小的情況下提供對於經如此增加之八個半字組之群組之區塊並行,且另外提供唯一位元組並行。因此,自實例5至實例6之變換並不保存實例5之區塊並行行為。
應注意,實例4及6中所展示之向量指令不為習知記憶體參考指令而為新指令。然而,根據本文所描述之本發明之一些實施例,此等新向量指令並不具有區塊並行行為。
本發明之實施例基於經指定記憶體位址之位址對準大小提供記憶體參考指令之新定義,使得此等指令為對應於以彼位址對準大小對準之位址對準大小的區塊大小之子區塊提供區塊並行。因此,可在載入及儲存指令之新的經修改之指令定義的基礎上執行以上三個程式碼變換(自實例1至實例2、自實例3至實例4,及自實例5至實例6)。該修改對應於本文中所描述之區塊並行行為,同時使指令執行之其他態樣之行為未經修改。為了澄清,在指令之以下實例中,在操作碼之開始處用「m」指示以下例示性經修改指令之作業碼。
可用如以下實例7中所展示之經修改的雙字組存取指令執行具有半字組區塊並行之半字組的複製廻圈:LHI R1,4 XGR R3,R3 LOOP:mLG R2,0(R3,R4) mSTG R2,0(R3,R5) AGHI R3,8 BCT R1,LOOP
在一些實施例中,實例7中之此程式碼在暫存器R4及R5中所保存之位址對應於至少為二之位址對準大小的情況下供應二位元組區塊並行,以及供應單一位元組並行。另外,在一些實施例中,此程式碼在暫存器R4及R5中所保存之位址對應於至少為四之位址對準大小的情況下供應四位元組區塊並行。另外,在一些實施例中,此程式碼暫存器R4及R5中所保存之位址對應於至少為八之位址對準大小的情況下供應八位元組區塊並行。
類似地,可在載入及儲存指令之經修改的Power ISA指令定義的基礎上使用Power ISA表達實例7之指令。該修改對應於本文中所描述之區塊並行行為,同時使指令執行之其他態樣之行為未經修改,如由Power ISA定義所指定。又,為了澄清,在實例7之以下指令中,在操作碼之開始處用「m」指示該等經修改指令之作業碼:LI R1,4 MTCTR R1 XOR R3,R3,R3 LOOP:mLDX R2,R3,R4 mSTDX R2,R3,R5 ADDI R3,R3,8 BDNZ LOOP
其中LI為Load Immediate指令,MTCTR為Move To Count Register指令,XOR為Exclusive OR指令,LDX為Load Double Word指令,STDX為Store Doubleword Indexed指令,ADDI為Add Immediate指令,BDNZ為Branch指令,且R1至R5為暫存器。
此外,實例4之最佳化之指令可變換為以下實例8之指令。可用如下之經修改指令執行最佳化之程式碼:mVL V1,0(R4)
mVST V1,0(R5)
mVL V1,16(R4)
mVST V1,16(R5)
在一些實施例中,實例8之程式碼暫存器R4及R5中所保存之位址對應於至少為二之位址對準大小的情況下供應二位元組區塊並行,以及供應單一位元組並行(亦即,具有對應於單一位元組之區塊大小的區塊並行)。另外,在一些實施例中,此程式碼在暫存器R4及R5中所保存之位址對應於至少為四之位址對準大小的情況下供應四位元組區塊並行。另外,在一些實施例中,此程式碼在暫存器R4及R5中所保存之位址對應於至少為八之位址對準大小的情況下供應八位元組區塊並行。另外,在一些實施例中,在暫存器R4及R5中所保存之位址對應於至少為16之位址對準大小,在mVL及mVST之最大區塊並行大小經定義為至少為16個位元組的情況下,此程式碼供應16位元組區塊並行。在一些實施例中,在暫存器R4及R5中所保存之位址對應於至少為16之位址對準大小,在mVL及mVST之最大區塊並行大小經定義為至少為八個位元組的情況下,此程式碼供應八位元組區塊並行。
類似地,可使用經修改Power ISA定義將實例7之程式碼表達為以下實例8: LI R1,16
mLXVX V1,R0,R4
mSTXVX V1,R0,R5
mLXVX V1,R1,R4
mSTXVX V1,R1,R5
類似地,實例6可表達為以下實例9:VLREPH V3,0(R6)
mVL V1,0(R4)
VAH V1,V1,V3
mVST V1,0(R5)
mVL V1,16(R4)
VAH V1,V1,V3
mVST V2,16(R5)
在一些實施例中,實例9之程式碼在暫存器R4及R5中所保存之位址對應於至少為二之位址對準大小的情況下供應二位元組區塊並行,以及供應單一位元組並行(亦即,具有對應於單一位元組之區塊大小的區塊並行)。另外,在一些實施例中,此程式碼在暫存器R4及R5中所保存之位址對應於至少為四之位址對準大小的情況下供應四位元組區塊並行。另外,在一些實施例中,此程式碼在暫存器R4及R5中所保存之位址對應於至少為八之位址對準大小的情況下供應八位元組區塊並行。另外,在一些實施例中,在暫存器R4及R5中所保存之位址對應於至少為16之位址對準大小,在mVL及mVST之最大區塊並行大小經定義為至少為16個位元組的情況下,此程式碼供應16位元組區塊並行。在一些實施例中,在暫存器R4及R5中所保存之位址對應於至少為16之位址對準大小,在mVL及mVST之最大區塊並行大小經定義為至少為八個位元組的情況下,此程式碼供應八位元組區塊並行。
在一些實施例中,修改現有指令及作業碼,且不引入用於該等指令之新記憶符。在其他實施例中,基於本文中所描述之位址對準大小,利用區塊並行之教示引入新指令及作業碼。
圖3描繪根據本發明之一些實施例之用於存取記憶體之處理流程。在一些實施例中,處理器(例如CPU)執行圖3中所展示之處理流程。在方框305處,處理器接收參考在記憶體之位址處之資料區塊的記憶體參考指令。記憶體參考指令包括參考記憶體中之資料區塊之任何指令(例如,包括記憶體中作為運算元之位址的指令)。此類指令包括載入指令及儲存指令以及用於算術運算之指令(例如,相加指令、減去指令、比較指令等)。
在決策方框310處,處理器視情況判定處理器自其參考資料之記憶體是否具有大於或等於由在方框305處接收之記憶體參考指令所支援之最大區塊並行記憶體參考大小(或最大區塊並行大小)的記憶體位址邊界(亦即,在記憶體參考指令中所指定之位址之位址對準大小)。針對指令集架構之所有指令定義指令之最大記憶體參考大小。最大區塊並行記憶體參考大小可為指令之記憶體參考之大小或可對應於針對指令集架構之所有指令所定義之最大區塊並行參考大小。在一些實施例中,最大區塊並行記憶體參考大小可為指令之記憶體參考之大小或可對應於獨立地針對指令集架構之每一指令所定義之最大區塊並行記憶體參考大小。
回應於在決策方框310處判定記憶體位址邊界不大於或等於最大區塊並行記憶體參考大小,處理器繼續進行至決策方框320,其將在下文得以進一步描述。回應於在決策方框310處判定記憶體位址邊界大於或等於最大區塊並行記憶體參考大小,處理器繼續進行至方框315以利用最大區塊並行記憶體參考大小之區塊並行存取記憶體。舉例而言,當記憶體參考大小為32位元組且記憶體位址邊界為16位元 組,但最大區塊並行記憶體參考大小為八位元組時,處理器利用八位元組並行存取記憶體。
在決策方框320處,處理器判定所請求之記憶體位址之對準大小為二之N次冪(亦即,2N),其中N為使2N小於或等於記憶體參考大小之最大非負整數。舉例而言,當記憶體參考大小為36個位元組時,在決策方框320處,處理器判定所請求之記憶體位址是否具有32個位元組(25位元組)之對準大小。回應於判定所請求之記憶體位址對準大小為二之N次冪,處理器繼續進行至方框325以利用2N位元組並行存取記憶體。舉例而言,若記憶體位址對準大小為32位元組且記憶體參考大小為32位元組,則處理器以區塊並行之方式一起存取記憶體之32個位元組以存取所有32個位元組。回應於判定所請求之記憶體位址對準並非二之N次冪,處理器繼續進行至方框330。如上文所描述,可針對一或多個指令設定最大區塊並行記憶體參考大小。在一些實施例中,將N設定為使得2N小於或等於最大區塊並行記憶體參考大小之最大非負整數而不考慮記憶體參考大小。舉例而言,指令可提供八個位元組之最大區塊並行記憶體參考大小。隨後,即使記憶體參考大小大於23,仍將N設定為三。
在決策方框330處,處理器判定所請求之記憶體位址對準大小是否為二之(N-1)次冪(亦即,2(N-1))。舉例而言,當記憶體參考大小為32個位元組(25個位元組)時,在方框330處,處理器判定所請求之記憶體位址對準大小是否為16個位元組(24個位元組)。回應於判定所請求之記憶體位址對準大小為二之(N-1)次冪,處理器繼續進行至方框335以利用2(N-1)位元組並行存取記憶體。舉例而言,若記憶體參考大小為32個位元組(25個位元組),則處理器以區塊並行之方式一次存取記憶體之16個位元組(24個位元組)以存取所有32個位元組。
回應於判定所請求之記憶體位址對準大小並非二之(N-1)次冪, 處理器以類似方式繼續進行至決策方框340直至在決策方框340處將所請求之記憶體位址對準大小判定為二之一次冪(亦即,21個位元組)。回應於判定所請求之記憶體位址對準大小為二,處理器繼續進行至方框345以利用二位元組並行存取記憶體。舉例而言,若記憶體參考大小為32位元組,則處理器以區塊並行之方式一次存取記憶體之二個位元組以存取所有32個位元組。回應於在決策方框340處判定所請求之記憶體位址對準大小並非為二,處理器繼續進行至方框350以利用一位元組並行存取記憶體。亦即,處理器一次存取一個位元組以存取由記憶體參考指令所指定之所有位元組。
應認識到,在方框320至350處,在所請求之記憶體位址對準大小小於記憶體參考指令之記憶體參考大小時,處理器利用所請求之記憶體位址對準大小之區塊並行存取記憶體。亦即,在一些實施例中,執行記憶體參考指令之處理器表現得與存取對至對準所請求之資料區塊之位址的任何邊界為區塊並行(亦即,存取在任何對準大小下為區塊並行)時一樣。
在一些實施例中,記憶體參考指令之記憶體參考大小由(例如)指令之作業碼(操作碼)所暗示。此係因為指令之作業碼指示正被參考之資料之資料類型以及將執行之操作。可替代地或結合地,在一些實施例中,可定義記憶體參考指令以明確地(例如)在指令之運算元中指定記憶體參考大小。舉例而言,指令之運算元指定將擷取或儲存之最高索引位元組。此允許程式設計器指定記憶體參考大小。在一些情況下,經指定之記憶體參考大小可不為二之乘冪(例如,10個位元組),且可不與作業碼暗示之記憶體參考大小相匹配。
本發明之實施例提供系統及方法,其在所指定之記憶體參考大小與所請求之記憶體之位址邊界不相同時提供區塊並行。在一些實施例中,當在記憶體參考指令中指定記憶體參考大小時,執行指令之處 理器使用記憶體之所請求位址之位址邊界與所指定之記憶體參考大小之最大公約數作為區塊並行資料存取大小。舉例而言,若指令之運算元位址在四位元組邊界上且所指定之記憶體參考大小為10位元組,則資料存取對其他處理器表現為至少為二位元組並行,因為二為10與四之最大公約數。此考慮到以與純量碼相同之方式起作用之資料平行碼且不破壞任何程式設計語言語義或慣例。
在一些實施例中,直接自位址對準大小導出區塊並行之區塊大小(亦即,區塊並行之層級,例如,2位元組並行、4位元組並行、16位元組並行、32位元組並行)。在其他實施例中,區塊並行存取之區塊並行大小係基於指令之位址對準大小及記憶體參考大小兩者。在一些此類實施例中,區塊並行存取之區塊大小為直接自位址對準及記憶體參考之大小導出之區塊並行之區塊大小的最小值。又在其他實施例中,藉由位址對準大小與記憶體參考大小之間共同的最大二之乘冪區塊大小判定用於區塊並行存取之區塊大小,如圖4中所進一步展示。
圖4描繪用於在區塊並行存取之區塊大小係基於記憶體參考指令之位址對準大小及記憶體參考大小兩者時存取記憶體之處理流程。在一些實施例中,可將區塊並行存取之最大區塊大小強加至所有指令(藉由指令集架構)或強加至具有最大區塊並行大小之特定指令。一些記憶體參考指令明確地指定記憶體參考大小,且其可不為二之乘冪。然而,一些實施可僅允許二之乘冪之區塊並行大小。在一些此類實施例中,處理器(例如,CPU)執行圖4中所展示之處理流程。
在方框405處,處理器接收參考在記憶體之位址處之資料區塊的記憶體參考指令。此記憶體參考指令亦(例如)在指令之運算元中指定將參考之資料之大小。
在決策方框410處,處理器視情況判定處理器自其參考資料之記憶體是否具有大於或等於在方框405處接收之記憶體參考指令之最大 區塊並行記憶體參考大小的記憶體位址對準大小。回應於判定記憶體位址對準大小不大於或等於最大區塊並行記憶體參考大小,處理器繼續進行至決策方框420,其將在下文得以進一步描述。回應於判定記憶體位址對準大小大於或等於所指定之記憶體參考大小,處理器繼續進行至方框415以利用最大區塊並行記憶體參考大小之區塊並行存取記憶體。舉例而言,當所指定之記憶體參考大小為八位元組且記憶體位址對準大小為八位元組,但最大區塊並行記憶體並行存取大小為4位元組時,處理器利用四位元組並行存取記憶體。
在決策方框420處,處理器判定所請求之記憶體位址對準大小為二之N次冪(亦即,2N),其中N為使2N小於或等於所指定之記憶體參考大小之最大非負整數。舉例而言,當所指定之記憶體參考大小為十位元組時,在方框415處,處理器判定所請求之記憶體位址是否對準至八個(23個)位元組。回應於在決策方框420處判定所請求之記憶體位址對準大小並非為二之N次冪,處理器繼續進行至決策方框435,其將在下文得以進一步描述。
回應於在決策方框420處判定所請求之記憶體位址對準大小為二之N次冪,處理器繼續進行至決策方框425以判定所指定之記憶體參考大小是否為二之N次冪之倍數。舉例而言,當經指定之記憶體參考大小為十個位元組時,在決策方框425處,處理器判定所指定之記憶體參考大小十是否為八個位元組之倍數。若經指定之記憶體參考大小並非為二之N次冪之倍數,則處理器繼續進行至決策方框440,其將在下文得以進一步描述。若經指定之記憶體參考大小為二之N次冪,則處理器繼續進行至方框430以利用2N位元組並行存取記憶體。
在決策方框435處,處理器判定所請求之記憶體位址對準大小是否為二之(N-1)次冪(亦即,2(N-1))。舉例而言,當記憶體參考大小為十個位元組時,在決策方框435處,處理器判定所請求之記憶體位址對 準大小是否為四個位元組(亦即,22個位元組)。回應於判定所請求之記憶體位址對準大小並非為二之(N-1)次冪,處理器朝向決策方框450繼續進行,其將在下文得以進一步描述。
回應於在決策方框435處判定所請求之記憶體位址對準大小為二之(N-1)次冪,處理器繼續進行至決策方框440以判定所指定之記憶體參考大小是否為二之(N-1)次冪之倍數。舉例而言,當經指定之記憶體參考大小為十個位元組時,在決策方框440處,處理器判定所指定之記憶體參考大小十是否為四個位元組(22個位元組)之倍數。若所指定之記憶體參考大小並非為二之(N-1)次冪之倍數,則處理器朝向決策方框455繼續進行,其將在下文得以進一步描述。若經指定之記憶體參考大小為二之(N-1)次冪,則處理器繼續進行至方框445以利用2(N-1)位元組並行存取記憶體。
回應於在決策方框435處判定所請求之記憶體位址對準大小並非二之(N-1)次冪,處理器以類似方式朝向方框450繼續進行直至在方框450處將所請求之記憶體位址對準大小判定為二之一次冪(亦即,21)。回應於在決策方框450處判定所請求之記憶體位址對準大小並非為二,處理器在方框465處利用一位元組並行存取記憶體。亦即,處理器一次存取一個位元組以存取由記憶體參考指令所指定之所有位元組。
回應於在決策方框450處判定所請求之記憶體位址對準大小為二,處理器繼續進行至決策方框455以判定所指定之記憶體參考大小是否為兩個位元組之倍數。若經指定之記憶體參考大小並非為二之倍數,則處理器繼續進行至方框465以利用一位元組並行存取記憶體。若經指定之記憶體參考大小為二之倍數,則處理器繼續進行至方框460以利用二位元組並行存取記憶體。舉例而言,若記憶體參考大小為十個位元組,則處理器一次存取記憶體之兩個位元組,以存取所有 十個位元組。
應認識到,在方框420至465處,處理器在位元組數目中識別所請求之記憶體位址對準大小與所指定之記憶體參考大小之最大公約數,且利用該最大公約數之區塊並行存取記憶體。舉例而言,當所指定之記憶體參考大小為十個位元組且所請求之記憶體位址對準大小為四個位元組時,處理器識別最大公約數、兩個位元組且利用二位元組並行存取記憶體(亦即,藉由以區塊並行之方式一次存取兩個位元組來存取所有十個位元組)。
在一些實施例中,可針對一或多個指令設定最大區塊並行大小。舉例而言,指令可提供八個位元組之最大區塊並行大小。隨後,在決策方框420處,即使所指定之記憶體參考大小大於23,仍將N設定為三。在一些實施例中,最大區塊並行大小適用於所有指令。在其他實施例中,每一指令可具有單獨的最大區塊並行大小。
圖5說明根據本發明之一些實施例之用於存取記憶體中之資料的系統500。具體而言,此圖式說明系統500包括記憶體505及複數個處理器510及515,以及為說明及描述之簡單起見而未描繪之其他組件。記憶體505及處理器510及515經由一或多個匯流排520彼此耦接。處理器510及515經展示為分別具有暫存器525及530,但為說明及描述簡單起見而未描繪處理器內之其他組件(例如,算術邏輯單元、控制單元、時鐘、內部匯流排等)。
在一些實施例中,系統500表示各種平行處理環境。舉例而言,處理器510及515中之一者可為執行向量化指令之向量處理器。其他處理器中之一者可為執行純量指令之純量處理器。向量處理器及純量處理器可共用記憶體505。作為另一實例,系統500可表示多核處理器,其中處理器510及515為共用記憶體505之不同核心。作為又一實例,系統500可表示具有以平行方式進行處理之處理器510及515之大型電 腦系統。
如此項技術中已知,處理器或處理器系列(諸如,8086及x86系列或IBM System z伺服器系列之彼等者)具有其自有的機器指令集。舉例而言,IBM System z伺服器系列之指令集(被稱為z/Architecture指令集)闡述於以上併入之z/Architecture Principles of Operation,且Power Servers之指令集(被稱為Power ISA(指令集架構))闡述於以上併入之Power ISA中。機器指令係根據設計對應於至機器之不同命令之位元模式。在大多數情況下,指令集特定於使用同一架構之一類處理器。多數指令具有:一或多個作業碼,其指定基本指令類型(諸如,算術、記憶體參考、分支等)及實際操作(諸如,載入、儲存、相加或比較),及其他欄位,其可給定一或多個運算元、一或多個定址模式、一或多個定址偏移或索引之類型或實際值本身。亦即,每一機器指令用於在暫存器或記憶體中之資料單元上執行非常特別之任務,諸如載入、分支或算術邏輯單元(ALU)操作。一些此等機器指令係記憶體參考指令,其參考記憶體505中之特定位址處之資料以自記憶體530或暫存器擷取資料或將資料儲存至記憶體530或暫存器。
處理器510及515可經組態以執行記憶體參考指令,其即使在記憶體505內之資料區塊之位址並非為記憶體參考指令之記憶體參考大小之積分的情況下仍提供區塊並行。亦即,在一些實施例中,處理器510及515之記憶體參考指令將表現得與指令對至對準正被參考之資料區塊之任何邊界為區塊並行時一樣。在一些實施例中,存在為八位元組並行之最大值。在一些實施例中,處理器在位元組數目中識別記憶體位址對準大小與所指定之記憶體參考大小之最大公約數,且利用該最大公約數之區塊並行存取記憶體505。因此,可改良包括處理器510及515之電腦之功能。
不同實施例以不同方式組態處理器510及515。舉例而言,在一 些實施例中,根據本發明之各種實施例,可藉由將新定義提供至現有的習知記憶體參考指令來組態處理器510及515,以使得處理器510及515在執行指令時存取記憶體505。可替代地或結合地,根據本發明之各種實施例,可藉由定義存取記憶體505之新記憶體參考指令來組態處理器510及515。
舉例而言,記憶體參考指令包括向量載入指令,其常具有16位元組對準要求。亦即,預期具有16位元組對準要求之向量載入指令將16位元組資料區塊之所有16個位元組作為單一單元自記憶體載入。當藉由編譯器向量化多執行緒程式碼以(例如)允許資料平行執行時,假定若一個變數由第一CPU更新及由第二CPU讀取,則第二CPU將看見該變數之完全變化且從不使結果混淆。利用習知向量載入指令定義不能保證區塊並行。因此,常常難以在亦使用執行緒平行性時使用更大程度之資料平行性。此限制潛在的軟體效能且導致硬體未得到充分利用。
藉由根據本發明之各種實施例組態處理器以存取記憶體,處理器可在使用執行緒平行性時使用更大程度之資料平行性,而無需外部串列化(例如,鎖定)。根據本發明之實施例經組態之處理器亦改良軟體效能且促進硬體之利用。本發明之實施例允許較小資料類型封裝至向量中且對其他處理器表現為利用與在使用純量指令時相同之語義進行操作。此外,區塊並行藉由避免額外對準限制及對額外程式碼之需要而允許編譯器對程式碼之更簡單的自動平行化,以處置可未經對準之資料之部分。
在本發明之一些實施例中,提供一種用於存取耦接至處理器之記憶體中之資料的方法。該方法接收用於存取在該記憶體中之位址處具有第一大小之資料的記憶體參考指令。該方法判定該位址之對準大小。該方法藉由以區塊並行之方式存取每一資料群組而存取一或多個 資料群組中之具有第一尺寸之資料。該等資料群組具有係該對準大小之倍數之大小。該方法藉由對二進位表示中之位址中之尾隨零之數目進行計數來判定對準大小。每一數據群組在位元組方面不大於預定義最大區塊並行大小。在一些實施例中,第一大小大於該判定之對準大小。在一些實施例中,第一大小及經判定之對準大小係位元組之數目,其中該第一大小為2A且經判定之對準大小為2B,其中A為大於B之整數,B為非負整數。在一些實施例中,該方法基於記憶體參考指令之作業碼判定第一大小。在一些實施例中,處理器包含向量處理器,且記憶體參考指令包含向量指令。
在本發明之一些實施例中,提供一種用於存取耦接至處理器之記憶體中之資料的方法。該方法接收用於存取在該記憶體中之位址處具有第一大小之資料的記憶體參考指令。記憶體參考指令指定第一大小。該方法判定該位址之對準大小。該方法判定第一大小及經判定之對準大小之最大公約數。該方法存取一或多個資料群組中之具有第一大小之資料。該等資料群組具有係最大公約數之大小之倍數的大小。在一些實施例中,第一大小大於該判定之對準大小。在一些實施例中,第一大小及經判定之對準大小係位元組之數目,其中第一大小並非為二之乘冪之大小,且經判定之對準大小為二之乘冪之大小。在一些實施例中,該方法基於記憶體參考指令之運算元判定第一大小。在一些實施例中,處理器包含向量處理器,且記憶體參考指令包含向量指令。
本發明可為一種系統、方法及/或電腦程式產品。電腦程式產品可包括電腦可讀儲存媒體(或多個媒體),其上具有電腦可讀程式指令以用於使處理器執行本發明之態樣。
電腦可讀儲存媒體可為有形器件,其可保留及儲存指令以供指令執行裝置使用。電腦可讀儲存媒體可為(例如但不限於)電子儲存器 件、磁性儲存器件、光學儲存器件、電磁儲存器件、半導體儲存器件或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例的非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可擦除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶型光碟唯讀記憶體(CD-ROM)、數位化通用光碟(DVD)、記憶棒、軟性磁碟、經機械編碼器件(諸如其上記錄有指令之打孔卡或凹槽中之凸起結構)及前述各者之任何合適組合。如本文中所使用,不將電腦可讀儲存媒體本身理解為暫時性信號,諸如無線電波或其他自由傳播之電磁波、經由波導或其他傳輸媒體傳播之電磁波(例如,經由光纖線纜傳遞之光脈衝),或經由導線傳輸之電信號。
本文中所描述之電腦可讀程式指令可經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)自電腦可讀儲存媒體下載至各別運算/處理器件或下載至外部電腦或外部儲存器件。網路可包含銅傳輸線纜、光學傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一運算/處理器件中之網路配接卡或網路介面自網路接收電腦可讀程式指令且遞送電腦可讀程式指令以用於儲存於各別運算/處理器件內之電腦可讀儲存媒體中。
用於執行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合撰寫之組譯程式指令、指令集合架構(ISA)指令、機器指令、機器相關指令、微碼、韌體指令、狀態設定資料或原始程式碼或目標程式碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及諸如「C」程式設計語言或類似程式設計語言之習知程序程式設計語言。電腦可讀程式指令可完全在使用者之電腦上執行、部分地在使用者之電腦上執行、作為獨立軟體封包執行、部分地在使用者之電腦上執行 且部分地在遠端電腦上執行或完全在遠端電腦或伺服器上執行。在後種情形中,遠端電腦可經由任一類型之網路(包括區域網路(LAN)或廣域網路(WAN))連接至使用者之電腦,或可(例如,經由使用網際網路服務提供者之網際網路)連接至外部電腦。在一些實施例中,電子電路(包括例如可程式化邏輯電路、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA))可藉由利用電腦可讀程式指令之狀態資訊來個人化電子電路而執行電腦可讀程式指令,以執行本發明之態樣。
本文參考根據本發明之實施例之方法、裝置(系統)及電腦程式產品之流程圖說明及/或方塊圖描述本發明之態樣。應理解,可藉由電腦可讀程式指令實施流程圖說明及/或方塊圖之每一區塊,及流程圖說明及/或方塊圖中的區塊之組合。
可將此等電腦可讀程式指令提供至通用電腦、專用電腦或其他可程式化資料處理裝置之處理器以產生機器,以使得經由該電腦或其他可程式化資料處理裝置之處理器執行之指令建立用於實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作之構件。亦可將此等電腦可讀程式指令儲存於電腦可讀儲存媒體中,該等指令可指導電腦、可程式化資料處理裝置及/或其他器件以特定方式起作用,使得其中儲存有指令之電腦可讀儲存媒體包含製品,該製品包括實施一或多個流程圖及/或方塊圖區塊中指定之功能/動作之態樣的指令。
電腦可讀程式指令亦可載入至電腦、其他可程式資料處理裝置或其他器件上,以使一系列操作步驟在該電腦、其他可程式化裝置或其他器件上執行以產生電腦實施之處理程序,使得在該電腦、其他可程式化裝置或其他器件上執行之指令實施一或多個流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例的系統、方法及電腦程式產品之可能實施的架構、功能性及操作。就此而 言,流程圖或方塊圖中之每一區塊可表示指令之模組、區段或部分,其包含用於實施指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中提及之功能可不按諸圖中所提及之次序發生。舉例而言,取決於所涉及之功能性,以連續方式展示之兩個區塊實際上可實質上並行地執行,或該等區塊有時可以相反次序執行。亦將注意,可藉由執行指定功能或動作或進行專用硬體及電腦指令之組合的基於硬體之專用系統實施方塊圖及/或流程圖說明之每一區塊,及方塊圖及/或流程圖說明中之區塊之組合。
已出於說明目的呈現本發明之各個實施例的描述,但該等描述並不意欲為詳盡的或限於所揭示之實施例。在不背離所描述實施例之範疇及精神的情況下,對於一般熟習此項技術者而言,許多修改及變化將顯而易見。本文中所使用之術語經選擇以最佳解釋實施例之原理、實際應用或相較於市場中發現之技術的技術改良,或使得其他一般熟習此項技術者能夠理解本文中所揭示之實施例。
305‧‧‧方框
310‧‧‧決策方框
315‧‧‧方框
320‧‧‧決策方框
325‧‧‧方框
330‧‧‧決策方框
335‧‧‧方框
340‧‧‧決策方框
345‧‧‧方框
350‧‧‧方框

Claims (22)

  1. 一種用於存取耦接至一處理器之一記憶體中之資料的方法,其包含:接收用於存取在該記憶體中之一位址處具有一第一大小之資料的一記憶體參考指令;藉由該處理器判定該位址之一對準大小;及藉由以區塊並行之方式存取每一資料群組而存取一或多個資料群組中之具有該第一大小之該資料,該等資料群組具有為該對準大小之倍數之大小,其中該判定該對準大小包含:對二進位表示中之該位址之尾隨零之一數目進行計數。
  2. 如請求項1之方法,其中該第一大小大於該判定之對準大小。
  3. 如請求項1之方法,其中每一資料群組不大於一預定義最大區塊並行大小。
  4. 如請求項1之方法,其進一步包含基於該記憶體參考指令之一作業碼判定該第一大小。
  5. 一種用於存取資料之系統,其包含:一記憶體;及一處理器,其經組態以執行一方法,該方法包含:接收用於存取在該記憶體中之一位址處具有一第一大小之資料的一記憶體參考指令;判定該位址之一對準大小;及藉由以區塊並行之方式存取每一資料群組而存取一或多個資料群組中之具有該第一大小之該資料,該等資料群組具有係該對準大小之倍數之大小, 其中該判定該對準大小包含:對二進位表示中之該位址中之尾隨零之一數目進行計數。
  6. 如請求項5之系統,其中該第一大小及該經判定之對準大小為位元組之數目,其中該第一大小為2A且該經判定之對準大小為2B,其中A為大於B之一整數,B為一非負整數。
  7. 如請求項5之系統,其中每一資料群組不大於一預定義最大區塊並行大小。
  8. 如請求項5之系統,其中該處理器包含一向量處理器,且該記憶體參考指令包含一向量指令。
  9. 一種用於存取資料之電腦程式產品,該電腦程式產品包含:一電腦可讀儲存媒體,其具有使用其體現之機器指令,該等機器指令可由一處理器讀取以引起該處理器執行一方法,該方法包含:接收用於存取在該記憶體中之一位址處具有一第一大小之資料的一記憶體參考指令;判定該位址之一對準大小;及藉由以區塊並行之方式存取每一資料群組而存取一或多個資料群組中之具有該第一大小之該資料,該等資料群組具有係該對準大小之倍數之大小,其中該判定該對準大小包含:對二進位表示中之該位址中之尾隨零之一數目進行計數。
  10. 如請求項9之電腦程式產品,其中該第一大小大於該經判定之對準大小。
  11. 如請求項9之電腦程式產品,其中每一資料群組不大於一預定義最大區塊並行大小。
  12. 如請求項9之電腦程式產品,其中該方法進一步包含:基於該記 憶體參考指令之一作業碼判定該第一大小。
  13. 一種用於存取耦接至一處理器之一記憶體中之資料的方法,其包含:接收用於存取在該記憶體中之一位址處具有一第一大小之資料的一記憶體參考指令,該記憶體參考指令指定該第一大小;藉由該處理器判定該位址之一對準大小;判定該第一大小及該經判定之該對準大小之一最大公約數;及存取一或多個資料群組中之具有該第一大小之該資料,該等資料群組具有係該最大公約數之一大小之倍數的大小。
  14. 如請求項13之方法,其中該第一大小大於該判定之對準大小。
  15. 如請求項13之方法,其中該第一大小及該經判定之對準大小為位元組之數目,其中該第一大小並非二之乘冪之大小,且該經判定之對準大小為二之乘冪之大小。
  16. 如請求項13之方法,其進一步包含基於該記憶體參考指令之一運算元判定該第一大小。
  17. 如請求項13之方法,其中在該最大公約數不大於一預定義最大區塊並行大小時執行該存取具有該第一大小之該資料。
  18. 一種用於存取資料之系統,其包含:一記憶體;及一處理器,其經組態以執行一方法,該方法包含:接收用於存取在該記憶體中之一位址處具有一第一大小之一資料空間的一記憶體參考指令,該記憶體參考指令指定該第一大小;判定該位址之一對準大小;判定該第一大小及該經判定之該對準大小之一最大公約數; 及存取一或多個資料群組中之具有該第一大小之該資料,該等資料群組具有係該最大公約數之一大小之倍數之大小。
  19. 如請求項18之系統,其中該第一大小大於該判定之對準大小。
  20. 如請求項19之系統,其中該第一大小及該經判定之對準大小為位元組之數目,其中該第一大小不為二之乘冪之大小,且該經判定之對準大小為二之乘冪之大小。
  21. 如請求項19之系統,其進一步包含基於該記憶體參考指令之一運算元判定該第一大小。
  22. 如請求項19之系統,其中該處理器包含一向量處理器且該記憶體參考指令包含一向量指令。
TW104110339A 2014-12-04 2015-03-30 用於存取記憶體之對準式區塊並行 TWI607307B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/560,486 US9582413B2 (en) 2014-12-04 2014-12-04 Alignment based block concurrency for accessing memory

Publications (2)

Publication Number Publication Date
TW201621667A TW201621667A (zh) 2016-06-16
TWI607307B true TWI607307B (zh) 2017-12-01

Family

ID=54366218

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104110339A TWI607307B (zh) 2014-12-04 2015-03-30 用於存取記憶體之對準式區塊並行

Country Status (14)

Country Link
US (4) US9582413B2 (zh)
EP (1) EP3227773B1 (zh)
JP (1) JP6664105B2 (zh)
KR (1) KR101976296B1 (zh)
CN (1) CN107003957B (zh)
AU (1) AU2015357677B2 (zh)
BR (1) BR112017011910B1 (zh)
CA (1) CA2961708C (zh)
MX (1) MX2017007060A (zh)
RU (1) RU2675509C1 (zh)
SG (1) SG11201701609VA (zh)
TW (1) TWI607307B (zh)
WO (1) WO2016087138A1 (zh)
ZA (1) ZA201704122B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582413B2 (en) 2014-12-04 2017-02-28 International Business Machines Corporation Alignment based block concurrency for accessing memory
WO2019055738A1 (en) * 2017-09-15 2019-03-21 MIPS Tech, LLC MEMORY ACCESS NOT ALIGNED
CN110770699A (zh) * 2018-08-22 2020-02-07 深圳市大疆创新科技有限公司 数据指令处理方法、存储芯片、存储系统和可移动平台
FR3093571B1 (fr) 2019-03-08 2021-03-19 Commissariat Energie Atomique Procédé et dispositif de représentation en virgule flottante avec précision variable
US11036506B1 (en) * 2019-12-11 2021-06-15 Motorola Solutions, Inc. Memory systems and methods for handling vector data
CN111338997B (zh) * 2020-03-05 2021-07-20 苏州浪潮智能科技有限公司 一种arm服务器bios支持tcm通信的方法、装置、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386531A (en) * 1991-05-15 1995-01-31 International Business Machines Corporation Computer system accelerator for multi-word cross-boundary storage access
US20080307187A1 (en) * 2007-06-05 2008-12-11 Schopp Joel H Arrangements for memory allocation
US20100262781A1 (en) * 2009-04-08 2010-10-14 International Business Machines Corporation Loading Data to Vector Renamed Register From Across Multiple Cache Lines

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212601B1 (en) * 1996-08-30 2001-04-03 Texas Instruments Incorporated Microprocessor system with block move circuit disposed between cache circuits
US6425020B1 (en) * 1997-04-18 2002-07-23 Cirrus Logic, Inc. Systems and methods for passively transferring data across a selected single bus line independent of a control circuitry
US20100274988A1 (en) 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
US6922658B2 (en) 2003-03-31 2005-07-26 International Business Machines Corporation Method and system for testing the validity of shared data in a multiprocessing system
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
EP1508853A1 (en) * 2003-08-19 2005-02-23 STMicroelectronics Limited Computer system and method for loading non-aligned words
US7610466B2 (en) 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
TWI227440B (en) 2003-12-19 2005-02-01 Sunplus Technology Co Ltd Device and method using a processor to perform automatic alignment for data movement in memory
US7537286B2 (en) 2004-06-28 2009-05-26 Walker Brock M Seat with adjustable support system
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7437537B2 (en) * 2005-02-17 2008-10-14 Qualcomm Incorporated Methods and apparatus for predicting unaligned memory access
RU2281546C1 (ru) * 2005-06-09 2006-08-10 Бурцева Тамара Андреевна Способ обработки информации на основе потока данных и устройство для его осуществления
US20070106883A1 (en) 2005-11-07 2007-05-10 Choquette Jack H Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US7725659B2 (en) * 2007-09-05 2010-05-25 International Business Machines Corporation Alignment of cache fetch return data relative to a thread
CN101290589B (zh) 2007-12-27 2010-06-16 华为技术有限公司 一种并发指令操作方法和装置
US20090282198A1 (en) * 2008-05-08 2009-11-12 Texas Instruments Incorporated Systems and methods for optimizing buffer sharing between cache-incoherent cores
JP5381624B2 (ja) * 2009-11-04 2014-01-08 富士通株式会社 メモリ管理機能を有するプログラム及び装置
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
WO2013089709A1 (en) 2011-12-14 2013-06-20 Intel Corporation System, apparatus and method for generating a loop alignment count or a loop alignment mask
US9081503B2 (en) 2012-02-16 2015-07-14 Apple Inc. Methods and systems for maintaining a storage volume with holes and filling holes
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9459867B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9582413B2 (en) 2014-12-04 2017-02-28 International Business Machines Corporation Alignment based block concurrency for accessing memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386531A (en) * 1991-05-15 1995-01-31 International Business Machines Corporation Computer system accelerator for multi-word cross-boundary storage access
US20080307187A1 (en) * 2007-06-05 2008-12-11 Schopp Joel H Arrangements for memory allocation
US20100262781A1 (en) * 2009-04-08 2010-10-14 International Business Machines Corporation Loading Data to Vector Renamed Register From Across Multiple Cache Lines

Also Published As

Publication number Publication date
ZA201704122B (en) 2018-11-28
MX2017007060A (es) 2017-11-08
US20170123967A1 (en) 2017-05-04
US10579514B2 (en) 2020-03-03
KR101976296B1 (ko) 2019-05-07
CA2961708C (en) 2023-09-26
US9582413B2 (en) 2017-02-28
RU2675509C1 (ru) 2018-12-20
EP3227773B1 (en) 2020-05-20
AU2015357677A1 (en) 2017-03-09
SG11201701609VA (en) 2017-03-30
WO2016087138A1 (en) 2016-06-09
BR112017011910A2 (pt) 2018-01-16
AU2015357677B2 (en) 2018-11-08
US9904618B2 (en) 2018-02-27
CA2961708A1 (en) 2016-06-09
CN107003957B (zh) 2020-01-17
JP2018501554A (ja) 2018-01-18
US20180074950A1 (en) 2018-03-15
TW201621667A (zh) 2016-06-16
BR112017011910B1 (pt) 2023-04-04
CN107003957A (zh) 2017-08-01
US20160162400A1 (en) 2016-06-09
EP3227773A1 (en) 2017-10-11
JP6664105B2 (ja) 2020-03-13
US9910769B2 (en) 2018-03-06
KR20170073688A (ko) 2017-06-28
US20160162401A1 (en) 2016-06-09

Similar Documents

Publication Publication Date Title
TWI607307B (zh) 用於存取記憶體之對準式區塊並行
US10209989B2 (en) Accelerated interlane vector reduction instructions
US9934032B2 (en) Processors, methods, and systems to implement partial register accesses with masked full register accesses
JP6711480B2 (ja) ベクトルインデックスロードおよびストアのための方法および装置
US20200183688A1 (en) Packed data operation mask shift processors, methods, systems, and instructions
BR112015030098B1 (pt) Métodos, sistemas e instruções de processadores de predicação de elemento de dados compactados
US10261790B2 (en) Memory copy instructions, processors, methods, and systems
US9122475B2 (en) Instruction for shifting bits left with pulling ones into less significant bits
BR102014006231A2 (pt) equipamento de processamento de instruções, método dentro de um processador, sistema para processar instruções e artigo de manufatura
JP6741006B2 (ja) マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置
BR102014006118A2 (pt) sistemas, equipamentos e métodos para determinar um bit de mascaramento menos significativo à direita de um registrador writemask
JP6738579B2 (ja) 命令フローを最適化するチェックを実行するための装置および方法
US20200004535A1 (en) Accelerator apparatus and method for decoding and de-serializing bit-packed data