TWI622934B - 具有simd處理電路系統的資料處理裝置及處理資料的方法 - Google Patents
具有simd處理電路系統的資料處理裝置及處理資料的方法 Download PDFInfo
- Publication number
- TWI622934B TWI622934B TW103118467A TW103118467A TWI622934B TW I622934 B TWI622934 B TW I622934B TW 103118467 A TW103118467 A TW 103118467A TW 103118467 A TW103118467 A TW 103118467A TW I622934 B TWI622934 B TW I622934B
- Authority
- TW
- Taiwan
- Prior art keywords
- simd
- operand
- data
- source
- permutation
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 188
- 238000000034 method Methods 0.000 title claims description 30
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000008707 rearrangement Effects 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 15
- 239000000463 material Substances 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 4
- 230000008859 change Effects 0.000 abstract description 5
- 238000007792 addition Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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 Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種資料處理裝置,該資料處理裝置具有:排列電路系統,該排列電路系統用於執行排列運算以改變至少一個源運算元之資料元件大小或資料元件位置,以產生第一SIMD運算元及第二SIMD運算元;及SIMD處理電路系統,該SIMD處理電路系統用於對第一SIMD運算元及第二SIMD運算元執行SIMD運算。回應於需要排列運算之第一SIMD指令,指令解碼器控制排列電路系統執行排列運算以產生第一SIMD運算元及第二SIMD運算元,及隨後控制SIMD處理電路系統以使用該等運算元執行SIMD運算。回應於不需要排列運算之第二SIMD指令,指令解碼器控制SIMD處理電路系統使用由指令所識別的第一SIMD運算元及第二SIMD運算元執行SIMD運算,而無需經由排列電路系統傳遞該等SIMD運
算元。
Description
本發明係關於資料處理領域。更特定言之,本發明係關於一種具有單指令多資料(single instruction multiple data;SIMD)處理電路系統的資料處理裝置。
資料處理裝置可具有對第一運算元及第二運算元執行SIMD運算的SIMD處理電路系統,該等運算元包含多個資料元件。SIMD處理電路系統具有若干並行處理路徑,各個路徑對第一運算元及第二運算元之對應資料元件執行特定運算。舉例而言,第一運算元及第二運算元可各自包含32位元資料值,各個運算元包括四個8位元資料元件。SIMD加法運算可對各對8位元資料元件並行執行四個8位元加法。
有時,資料元件在運算元內呈現的次序可與將藉由SIMD運算組合的資料元件次序不相同,且因此可需要在執行SIMD運算前對資料元件執行一些重新安排。本發明技術設法
改良此類重新安排之實施,以改良SIMD處理運算之執行。
從一態樣看,本發明提供一種資料處理裝置,該資料處理裝置包含:單指令多資料(SIMD)處理電路系統,該SIMD處理電路系統經配置以對包含複數個資料元件的第一SIMD運算元及第二SIMD運算元執行SIMD運算,該SIMD處理電路系統具有用於處理第一SIMD運算元及第二SIMD運算元之對應資料元件之複數個並行處理路徑;排列電路系統,該排列電路系統經配置以對包含複數個源資料元件的至少一個源運算元執行排列運算,以產生該第一SIMD運算元及該第二SIMD運算元,該排列運算產生該第一SIMD運算元及該第二SIMD運算元之至少一者,該等SIMD運算元具有與該至少一個源運算元不同的資料元件大小及不同的資料元件位置之至少一者;以及指令解碼器,該指令解碼器經配置以解碼SIMD指令,該等SIMD指令需要藉由SIMD處理電路系統執行之SIMD運算;其中回應於需要排列運算及識別至少一個源運算元之第一SIMD指令,配置指令解碼器以控制排列電路系統對至少一個源運算元執行排列運算,以產生第一SIMD運算元及第二SIMD運算元;及以控制SIMD處理電路系統使用由排列電路系統所產生的第一SIMD運算元及第二SIMD運算元執行SIMD運算;以及
回應於不需要排列運算及識別第一SIMD運算元及第二SIMD運算元之第二SIMD指令,配置指令解碼器以控制SIMD處理電路系統,以使用由第二SIMD指令所識別的第一SIMD運算元及第二SIMD運算元執行SIMD運算,而無需經由排列電路系統傳遞第一SIMD運算元及第二SIMD運算元。
現有SIMD處理單元通常具有對兩個輸入運算元執行重新安排運算的初始階段,以產生具有與輸入運算元相比不同之資料元件次序的SIMD運算元,使得後續處理階段隨後可對重新安排的運算元執行SIMD運算。即便不需要重新安排,仍將經由重新安排階段傳遞輸入運算元而不改變資料元件之位置。然而,此舉通常意謂需要兩個處理循環用於執行所有SIMD運算,一個處理循環用於執行重新安排及另一個處理循環用於執行SIMD運算自身。第一循環主要專用於多工化輸入運算元之資料元件,以便為第二或進一步處理循環中之SIMD運算正確對準該等資料元件。然而,本發明技術之發明者意識到,此對準循環對於許多SIMD指令而言並非必要。儘管如此,在習知裝置中,所有SIMD指令接受元件重新安排的懲罰。因此,大多數現有SIMD運算比所需循環需要更多循環來執行。
相比之下,本發明技術提供:獨立排列電路系統,該獨立排列電路系統用於執行排列運算以改變資料元件之資料元件次序及/或資料元件大小;及SIMD處理電路系統,該SIMD處理電路系統用於執行SIMD運算。可藉由指令解碼器獨立控制排列電路系統及SIMD處理電路系統,使得使用排
列電路系統及SIMD處理電路系統執行需要排列及SIMD運算的第一SIMD指令,而僅僅使用SIMD處理電路系統執行不需要任何排列的第二SIMD指令,而無需經由排列電路系統傳遞第一SIMD運算元及第二SIMD運算元。因此,第二SIMD指令不受第一SIMD指令所需的排列懲罰。實際上,大多數SIMD運算不需要排列,且因此在許多場合,本發明技術能夠使效能改良。通常,可在單個處理循環期間執行第二SIMD指令。亦即,與排列運算及SIMD運算一起對應於不可分割的單個微運算之先前實施相反,在本發明技術中,排列運算可與SIMD運算隔離以提供可單獨排程的兩個獨立微運算。
此技術違背常理,因為將料想,僅當將執行後續SIMD運算時才將需要排列運算,且因此作為獨立微運算提供排列運算將是有用的這一點並不明顯。由於SIMD運算將通常跟隨排列運算,現有系統將排列運算及SIMD運算組合至單個多循環運算中。然而,本發明之發明者認識到,事實上,SIMD運算通常將為自身所需要,而無需排列運算。若在單個運算中組合排列運算及SIMD運算,則在SIMD運算前偶爾執行排列運算的需求懲罰所有SIMD運算,該懲罰為不必要的。藉由隔離排列運算與SIMD運算,可以比第一SIMD指令更少的處理循環執行第二SIMD指令,以減少處理SIMD指令所採用的循環之平均數目。
指令解碼器可使用排列電路系統及SIMD處理電路系統兩者,或僅使用SIMD處理電路系統控制是否執行特定SIMD指令。舉例而言,第一SIMD指令及第二SIMD指令可
具有不同作業碼,從而允許指令解碼器辨別何種指令需要排列運算。或者,第一SIMD指令及第二SIMD指令可具有相同作業碼,但可具有指定是否需要排列及需要何種類型排列的欄位。
可以各種方式實施指令解碼器。指令解碼器可為僅SIMD解碼器,該解碼器僅用於解碼SIMD指令,而提供另一指令解碼器用於解碼其他種類指令。或者,單個指令解碼器可解碼SIMD指令及非SIMD指令兩者。指令解碼器可經由自指令解碼器發送至排列電路系統或SIMD處理電路系統之訊號直接控制排列電路系統及SIMD處理電路系統,或指令解碼器可藉由在控制其他電路系統的所解碼指令中包括指示(例如,管線之發佈階段)間接控制排列電路系統或SIMD處理電路系統,以決定是否應針對特定SIMD指令使用排列電路系統。
為了允許儘快執行不需要排列的SIMD指令,SIMD處理電路系統可將所有處理運算嚴格保持在相同SIMD處理路徑內。因此,SIMD處理電路系統可不支援排列運算。SIMD處理電路系統之並行處理路徑之各者僅可處理在由SIMD處理單元接收時呈現於第一SIMD運算元及第二SIMD運算元內的預先決定資料元件位置處的資料元件,且SIMD處理電路系統之並行處理路徑之各者不可重新安排該等資料元件或處理呈現於所接收之運算元中的資料元件,該等所接收之運算元在對應於其他並行處理路徑的資料元件位置處。藉由防止SIMD處理單元中的跨路徑切換,此舉避免先前系統中所遭受
的執行懲罰,在先前系統中,SIMD處理電路系統需要一些處理時間以決定應藉由各個路徑處理何資料元件。
第一SIMD運算元及第二SIMD運算元之資料元件可具有複數個不同資料元件大小之一者。可基於正經執行之SIMD指令之參數選擇用於給定SIMD運算的資料元件大小及資料元件數目。對於給定資料元件大小,可建立處理路徑之對應配置,使得各個路徑對來自第一SIMD運算元的一資料元件及來自第二SIMD運算元的一資料元件執行並行運算。舉例而言,SIMD處理電路系統可支援用於處置八對8位元資料元件、四對16位元資料元件、兩對32位元資料元件或一對64位元資料元件之處理路徑。
排列電路系統可能夠執行複數個不同類型的排列運算。可基於正經執行之第一SIMD指令之參數選擇所執行的特定排列。舉例而言,可將不同作業碼分配給表示不同類型排列運算的指令,其中基於作業碼決定待執行的排列運算類型。或者,具有不同排列運算的指令可與表示待執行之排列的另一欄位之指令共享相同作業碼。
大體而言,排列運算可接收至少一個源運算元及產生待由後續SIMD運算處理的第一SIMD運算元及第二SIMD運算元。排列運算可產生第一SIMD運算元及第二SIMD運算元中之至少一者,該等SIMD運算元具有與至少一個源運算元不同的資料元件大小及/或資料元件位置。對於一些排列運算,可提供兩個源運算元及將該等源運算元轉換成兩個SIMD運算元。
在一實例中,排列電路系統可執行元件重新安排排列運算,該排列運算將源資料元件中的至少一些源資料元件映射至第一SIMD運算元及第二SIMD運算元中的不同資料元件位置。當存在兩個源運算元時,此舉尤其有用,因為元件重新安排可改變何等元件成對在一起用於後續SIMD運算。特別有用之實例為成對元件重新安排,該重新安排用於將最小一源運算元之一對相鄰源資料元件分別映射至第一SIMD運算元及第二SIMD運算元中的對應資料元件位置。因此,若將SIMD運算應用於原始源運算元,則可重新安排因在相同運算元中而本尚未加在一起的資料元件,使得該等資料元件現在加在一起。成對重新安排可用於決定一列資料值之總和。先前SIMD運算可將該列資料值之部分加在一起以產生具有多個資料元件的SIMD運算元,各個資料元件對應於該列資料值之不同部分之總和。藉由在另一SIMD運算前執行成對元件重新安排,可將部分總和值放置於第一SIMD運算元及第二SIMD運算元之對應資料元件位置中,使得可將該等值加在一起。藉由多次重複成對排列及SIMD加法,最終可將該列中的所有資料值加在一起。
在另一實例中,排列電路系統可執行元件延伸排列運算,該排列運算產生第一SIMD運算元及第二SIMD運算元之至少一者,該等運算元比至少一個源運算元具有更大的資料元件大小。
可以不同方式執行元件延伸運算。在一實例中,可藉由將資料元件之第一部分設置為對應源資料元件之資料值
及用對應源資料元件之資料值之正負號延伸(或若使用無正負號值即為零延伸)填充資料元件之第二部分產生經延伸之SIMD運算元中的各個資料元件。通常,第二部分將比第一部分更加顯著。在正負號延伸中,用與對應源資料元件之原始資料值之正負號位元具有相同值的位元填充第二部分,而在零延伸中,用具有零值的位元填充第二部分。以此方式,可將較小源資料元件插入第一SIMD運算元或第二SIMD運算元之較大資料元件中,該較大資料元件具有保存該資料元件之原始數值之剩餘部分正負號延伸或零延伸。
當執行元件延伸時,不一定將至少一個源運算元之所有源資料元件映射至SIMD運算元之一者內的對應資料元件。作為延伸資料元件之大小的結果,可能不存在針對所有源資料元件的空間,且因此可能需要廢除一些源資料元件。為了允許處理所有原始源資料元件,可能需要執行多個SIMD運算,各個SIMD運算對來自原始源運算元的資料元件之子集合之延伸變型進行運算。
在一實例中,元件延伸運算可包含元件加長,在元件加長中將具有M位元資料元件的第一源運算元及第二源運算元轉換成具有N位元資料元件的第一SIMD運算元及第二SIMD運算元,其中N>M。因此,可以對應方式延伸第一源運算元及第二源運算元,對N位元SIMD運算元執行後續SIMD運算以產生具有N位元資料元件的結果值。
或者,可執行元件加寬排列運算,其中源運算元之一運算元使得自身的資料元件延伸,但另一源運算元未被延
伸。舉例而言,如此可為有用,以便對具有不同資料元件大小的源運算元執行SIMD運算。加寬排列運算可延伸具有較小資料元件大小的源運算元之資料元件以匹配另一源運算元之較大資料元件大小,在此延伸之前,對具有對應資料元件大小的SIMD運算元執行SIMD運算。
此外,排列運算可執行元件延伸及元件重新安排兩者,以當自至少一個源運算元映射至SIMD運算元時,改變資料元件大小及資料元件位置兩者。舉例而言,成對重新安排延伸運算可對具有M位元資料元件的源運算元進行運算,以產生具有N位元資料元件的第一SIMD運算元及第二SIMD運算元,在第一SIMD運算元及第二SIMD運算元之對應位置中放置對應於源運算元之相鄰源資料元件的經延伸之資料元件。
可藉由排列電路系統執行的另一類型排列運算為純量對元件(scalar-by-element)排列運算,對兩個源運算元執行該排列運算以將第一源運算元之一資料元件映射至第一SIMD運算元之資料元件中之各者,及將第二源運算元之各別資料元件映射至第二SIMD運算元之對應資料元件。因此,可將第二源運算元直接映射至第二SIMD運算元,同時可在第一SIMD運算元之路徑之各者中複製第一源運算元之相同資料元件。如此允許後續SIMD運算以使第一源運算元之經複製之資料元件與第二源運算元之資料元件中之各者成對。舉例而言,此舉可用於將向量之各個元件與純量值組合。若需要,純量對元件排列運算亦可包括藉由上文所論述之加長
或加寬延伸資料元件大小。
由各個資料元件表示的資料值可為整數值或浮點值。
SIMD運算包含並行處理路徑之各者,該等並行處理路徑對第一SIMD運算元之資料元件及第二SIMD運算元之對應資料元件執行處理運算。處理運算可包含許多不同種類運算。舉例而言,處理運算可包含加上或減去對應資料元件,決定對應成對資料元件之最小值或最大值,決定資料元件之間的絕對差;或決定資料元件之間的絕對差,再將絕對差加至儲存於儲存位置中的一值上(累加下的絕對差)。該等處理運算中之各者可對應於指令集內的不同指令,各個指令具有不同變型,其中一些指令需要排列及其中一些指令不需要排列。可使用排列電路系統及SIMD處理電路系統兩者處置需要排列的變型,而可使用SIMD處理電路系統更快處理不需要排列的變型。應將瞭解,可藉由SIMD處理電路系統執行許多其他種類處理運算。
排列電路系統可將所產生的第一SIMD運算元及第二SIMD運算元直接提供給SIMD處理電路系統。或者,排列電路系統可將所產生的第一SIMD運算元及第二SIMD運算元寫入至資料儲存器(諸如暫存器庫),及SIMD處理單元可又自資料儲存器讀取所產生的SIMD運算元。第一SIMD指令及第二SIMD指令可使用暫存器庫中的暫存器之暫存器識別符指定各別源運算元或SIMD運算元。
從另一態樣看,本發明提供一種資料處理裝置,該
資料處理裝置包含:單指令多資料(SIMD)處理手段,該SIMD處理手段用於對包含複數個資料元件的第一SIMD運算元及第二SIMD運算元執行SIMD運算,該SIMD處理手段具有用於處理第一SIMD運算元及第二SIMD運算元之對應資料元件的複數個並行處理路徑手段;排列手段,該排列手段用於對包含複數個源資料元件的至少一個源運算元執行排列運算以產生該第一SIMD運算元及該第二SIMD運算元,該排列運算產生該第一SIMD運算元及該第二SIMD運算元之至少一者,該等SIMD運算元具有與該至少一個源運算元不同的資料元件大小及不同的資料元件位置之至少一者;以及指令解碼手段,該指令解碼手段用於解碼SIMD指令,該等SIMD指令需要藉由SIMD處理手段執行之SIMD運算;其中回應於需要排列運算及識別至少一個源運算元之第一SIMD指令,配置指令解碼手段以控制排列手段對至少一個源運算元執行排列運算,以產生第一SIMD運算元及第二SIMD運算元;及以控制SIMD處理手段使用由排列手段所產生的第一SIMD運算元及第二SIMD運算元執行SIMD運算;以及回應於不需要排列運算及識別第一SIMD運算元及第二SIMD運算元之第二SIMD指令,配置指令解碼手段以控制SIMD處理手段,以使用由第二SIMD指令所識別的第一SIMD運算元及第二SIMD運算元執行SIMD運算,而無需經由排列
手段傳遞第一SIMD運算元及第二SIMD運算元。
從又一態樣看,本發明提供一種處理資料之方法,該方法包含以下步驟:解碼單指令多資料(SIMD)指令,該等SIMD指令需要藉由SIMD處理電路系統對包含複數個資料元件的第一SIMD運算元及第二SIMD運算元執行之SIMD運算,該SIMD處理電路系統具有用於處理第一SIMD運算元及第二SIMD運算元之對應資料元件的複數個並行處理路徑;回應於解碼需要排列運算及識別包含複數個源資料元件的至少一個源運算元之第一SIMD指令,控制排列電路系統對至少一個源運算元執行排列運算以產生該第一SIMD運算元及該第二SIMD運算元,該等SIMD運算元具有與該至少一個源運算元不同的資料元件大小及不同的資料元件位置之至少一者,及控制SIMD處理電路系統使用由排列電路系統所產生的第一SIMD運算元及第二SIMD運算元執行SIMD運算;以及回應於解碼不需要排列運算及識別第一SIMD運算元及第二SIMD運算元之第二SIMD指令,控制SIMD處理電路系統使用由第二SIMD指令所識別的第一SIMD運算元及第二SIMD運算元執行SIMD運算,而無需經由排列電路系統傳遞第一SIMD運算元及第二SIMD運算元。
從另一態樣看,本發明提供一種資料處理裝置,該資料處理裝置包含:排列電路系統,該排列電路系統經配置以回應於程式指
令對包含複數個源資料元件的至少一個源運算元執行排列運算,以產生包含複數個經排列之資料元件的至少一個經排列之運算元,該排列運算藉由以下步驟產生該至少一個經排列之運算元之複數個經排列之資料元件中之各者:(i)將經排列之資料元件的第一部分設置為對應源資料元件之資料值;以及(ii)用該對應源資料元件之該資料值之正負號延伸或零延伸填充經排列之資料元件之第二部分;其中對於至少一個經排列之資料元件,該至少一個經排列之運算元內的資料元件位置與該至少一個源運算元內的對應源資料元件之資料元件位置不同。
如上文所論述,排列電路系統可提供至少一個排列運算,該排列運算提供至少一些資料元件之重新安排及源資料元件之正負號延伸或零延伸兩者,以產生具有較大資料元件大小的經排列之資料元件。此舉避免需要獨立指令用於執行該等運算,且因此加速排列及任何對應SIMD運算。
從又一態樣看,本發明提供一種資料處理裝置,該資料處理裝置包含:排列手段,該排列手段用於回應於程式指令對包含複數個源資料元件的至少一個源運算元執行排列運算,以產生包含複數個經排列之資料元件的至少一個經排列之運算元,該排列運算藉由以下步驟產生該至少一個經排列之運算元之複數個經排列之資料元件中之各者:
(i)將經排列之資料元件的第一部分設置為對應源資料元件之資料值;以及(ii)用該對應源資料元件之該資料值之正負號延伸或零延伸填充經排列之資料元件之第二部分;其中對於至少一個經排列之資料元件,該至少一個經排列之運算元內的資料元件位置與該至少一個源運算元內的對應源資料元件之資料元件位置不同。
從另一態樣看,本發明提供一種處理資料之方法,該方法包含以下步驟:回應於程式指令,對包含複數個源資料元件的至少一個源運算元執行排列運算,以產生包含複數個經排列之資料元件的至少一個經排列之運算元,該排列運算藉由以下步驟產生該至少一個經排列之運算元之複數個經排列之資料元件中之各者:(i)將經排列之資料元件的第一部分設置為對應源資料元件之資料值;以及(ii)用該對應源資料元件之該資料值之正負號延伸或零延伸填充經排列之資料元件之第二部分;其中對於至少一個經排列之資料元件,該至少一個經排列之運算元內的資料元件位置與該至少一個源運算元內的對應源資料元件之資料元件位置不同。
可使用具有用於執行排列運算之排列電路系統的電腦或其他資料處理裝置執行處理資料之方法。
本發明之上文及其他目標、特徵及優勢將自說明性
實施例之以下詳細描述顯而易見,將結合隨附圖式閱讀該等實施例。
2‧‧‧資料處理裝置
4‧‧‧處理電路系統
6‧‧‧指令解碼器
8‧‧‧暫存器
10‧‧‧單指令多資料處理單元/SIMD單元
12‧‧‧排列單元/資料元件
12-0‧‧‧資料元件
12-1‧‧‧資料元件
14‧‧‧處理/加法器
14-0‧‧‧加法器
14-1‧‧‧加法器
16‧‧‧結果資料元件
20‧‧‧多工電路系統
22‧‧‧正負號延伸位元
30‧‧‧部分
40‧‧‧部分
50‧‧‧第一種類型SIMD指令
52‧‧‧第二種類型SIMD指令
54‧‧‧獨立排列指令
第1圖示意地圖示資料處理裝置的一部分;第2圖圖示具有並行處理路徑的SIMD處理單元,該等並行處理路徑用於對第一SIMD運算元及第二SIMD運算元之各別資料元件並行執行運算;第3圖圖示排列電路系統之實例,該排列電路系統用於對至少一個源運算元執行排列運算以產生第一SIMD運算元及第二SIMD運算元;第4A圖至第4C圖圖示成對元件重新安排之實例;第5A圖及第5B圖圖示用於加長資料元件的排列運算之實例;第6A圖至第6C圖圖示用於成對加長資料元件的排列之實例;第7A圖至第7C圖圖示用於加寬一源運算元以對應於另一源運算元之資料元件大小的排列之實例;第8圖圖示純量對元件排列之實例,該排列用於將第一源運算元之一選定資料元件映射至第一SIMD運算元之資料元件中之各者;以及第9圖圖示一時序圖,該時序圖圖示執行排列指令及第一SIMD指令及第二SIMD指令所需的循環數之實例。
第1圖示意地圖示資料處理裝置2的一部分,該資
料處理裝置2包含處理電路系統4、指令解碼器6及暫存器8。應將瞭解,處理裝置2亦可具有為了簡明而未在第1圖中圖示之其他元件。指令解碼器6解碼待由處理電路系統4執行之指令。可在暫存器8中放置指令之結果,在該暫存器中,當執行其他指令時可藉由處理電路系統4讀取該等結果。指令解碼器6可分割一些指令至待由處理電路系統4之不同單元執行之微運算中。可藉由處理電路系統4單獨排程微運算。處理電路系統4包含單指令多資料(SIMD)處理單元10及排列單元12,該排列單元12可回應於單個SIMD指令執行獨立微運算。或者,可藉由排列單元12執行獨立排列指令及可藉由SIMD處理單元10執行獨立SIMD指令。
第2圖圖示SIMD處理單元10之實例。SIMD處理單元10具有若干並行處理路徑,該等路徑處理彼此並行的SIMD運算元op1、op2之各別對資料元件12。在此實例中,由加法器14表示並行處理路徑,各個加法器加上第一SIMD運算元op1之一資料元件12及第二運算元op2之一資料元件12,並將總和放置於結果值res之結果資料元件16中。可將結果值寫回到暫存器8。處理14之各個路徑僅可處理資料元件12,該等資料元件處於輸入運算元op1、op2內的預先決定資料元件位置處。舉例而言,右邊加法器14-0僅可處理各別運算元之最右元件12-0,自右邊起的第二加法器14-1處理第二最右資料元件12-1等等。處理14之路徑不可處理來自其他路徑的資料元件。由於SIMD單元10中不存在跨路徑運算,所以處理14之路徑不需要耗費時間來決定應處理何等資料元
件,且因此藉由SIMD單元10之SIMD處理可快速執行。可在單個循環內完成並行運算之各者。
第2圖圖示兩個SIMD運算元op1、op2具有八個資料元件及結果值亦具有八個資料元件的實例。然而,SIMD單元10可為可配置以處理具有不同資料元件大小的資料值。舉例而言,若第2圖中所示之運算元op1、op2為64位元值,則第2圖圖示藉由各別加法器14處理八對8位元資料元件的實例。在另一配置中,加法器14可兩兩成對以提供處理之四個路徑,各個路徑處理一對16位元資料元件之加法。類似地,可配置SIMD單元10以提供處理之兩個並行路徑,各個路徑處理一對32位元運算元或一路徑處理一對64位元資料元件。可基於由指令解碼器6所解碼的指令之參數選擇用於給定SIMD運算的資料元件大小。儘管第2圖圖示在處理之各個路徑中所執行的SIMD運算為加法之實例,但是各個路徑亦可處理其他種類之處理運算。
第3圖中圖示排列單元12之實例。排列單元12用於執行排列運算以改變資料元件之安排。排列單元12接收包括眾多資料元件的一或更多個源運算元A、B及排列單元12包含多工電路系統20,該多工電路系統將資料元件中的至少一些資料元件映射至待由SIMD單元10處理之SIMD運算元op1、op2之對應部分。多工電路系統20可將輸入運算元A、B之任何資料元件映射至SIMD運算元op1、op2之資料元件中的任何部分。基於由指令解碼器6所解碼的指令執行對多工器之控制。舉例而言,多工電路系統20可具有眾多預先決
定電線配置,該等電線配置將輸入運算元A、B中的不同部分連接至SIMD運算元op1、op2的部分。可基於所解碼指令之參數選擇特定配置。
儘管第3圖圖示兩個輸入運算元A、B,但是對於一些排列運算,可基於單個源運算元A之資料元件決定SIMD運算元op1、op2兩者,而忽略對多工電路系統20的B輸入。又,資料元件數目及資料元件大小在源運算元與SIMD運算元之間不必相同。如第3圖所示,多工電路系統20可輸入對應於各別源資料元件的正負號延伸位元22及將正負號位元放置在SIMD運算元op1、op2的部分中。對於正負號值,正負號延伸位元22等於對應源資料元件之正負號位元(對於正值為0及對於負值為1)。另一方面,若源運算元A、B之資料值為無正負號,則正負號位元對於所有資料元件可為0。正負號延伸位元22(或對於無正負號值的零延伸位元)用於加長或加寬資料元件,使得在針對彼資料元件保存校正數值的同時可延伸資料元件大小。
第4A圖圖示成對元件重新安排排列運算之實例,該運算可藉由排列單元12執行。如第4A圖之部分30所示,一些暫存器M、N原始儲存兩個源運算元A、B,各個源運算元具有四個16位元資料元件。可藉由僅使用SIMD單元10對當前形式的該等運算元執行SIMD運算,而無需排列單元12執行任何排列。在此情況中,運算元A之元件0將被加至運算元B之元件0,運算元A之元件1將被加至運算元B之元件1等等,如第4A圖之部分30所示。
然而,可能需要將運算元A之元件3及元件2加在一起,且在運算元A與B之餘項中執行相鄰元件之類似成對加法。此舉圖示於第4A圖底部的部分40中。為了實現此運算,藉由排列單元12執行元件重新安排以使用第4A圖所示的傳送之序列在暫存器之間傳送值。亦即,多工電路系統20將源運算元A、B之資料元件映射至SIMD運算元op1、op2內的不同資料元件位置,使得SIMD單元10可執行SIMD運算以將元件之不同組合加在一起。類似地,除了SIMD加法,可向各種類型SIMD運算提供成對排列。第4B圖及第4C圖圖示對於分別具有兩個及八個資料元件的運算元所執行之類似成對重新安排。在第4A圖至第4C圖所示之成對重新安排中,資料元件數目及資料元件大小在排列期間保持相同。
第5A圖及第5B圖圖示加長排列運算之實例,其中在排列期間資料元件大小改變。排列單元12在源運算元A、B內延伸各個資料元件之大小以產生較大SIMD運算元op1、op2。在此實例中,將第一源運算元A及第二源運算元B之各個M位元資料元件正負號延伸及映射至第一SIMD運算元op1及第二SIMD運算元op2之對應位置以形成N位元資料元件(N>M)。正負號延伸延伸原始資料值,使得位元具有與資料值之最高有效位元相同的值。若原始資料值為無正負號,則將為零延伸,而非正負號延伸。因此,排列單元12可產生具有比源運算元更大資料元件的SIMD運算元。第5A圖及第5B圖圖示分別具有兩個資料元件及四個資料元件的放大運算元之實例。
第6A圖至第6C圖圖示執行成對加長加法的排列運算4之另一實例。在此情況中,提供單個源運算元A,且在SIMD運算元op1、op2中重新安排源運算元之各別資料元件之位置,以及自M位元正負號延伸至N位元(N>M)。成對重新安排在兩個SIMD運算元內的對應位置處放置源運算元之相鄰M位元元件。舉例而言,運算元A之源資料元件OpA.1及0pA.0兩個SIMD運算元op1、op2之相同路徑中的對應位置。又,對於無正負號值,可使用零延伸,而非使用正負號延伸。第6A圖、第6B圖及第6C圖圖示分別針對兩個、四個及八個元件運算元的成對加長。
第7A圖至第7C圖圖示排列之另一實例,該排列用於加寬一對源運算元之一者的資料元件以匹配另一源運算元之資料元件的大小。在此情況中,將運算元A直接映射至SIMD運算元op1,而源運算元B具有各個M位元資料元件,該M位元資料元件經正負號延伸(或零延伸)及放置於第二SIMD運算元op2內的對應位置中。儘管具有不同資料元件大小,但是此類型排列允許使用單個SIMD指令組合運算元A與B。各個SIMD處理路徑又組合第一SIMD運算元op1及第二SIMD運算元op2之對應成對資料元件。第7A圖至第7C圖圖示此排列分別應用於具有一個、兩個或四個資料元件的源運算元之實例。
第8圖圖示排列運算之另一實例。在此情況中,將源運算元B直接映射至第二SIMD運算元op2。另一方面,在第一SIMD運算元op1之路徑之各者中選擇及複製源運算元A
之一元件(在此實例中為OpA.2)。藉由將相同源資料元件複製到SIMD運算元之多個路徑中,後續純量對元件向量SIMD運算可將由op2表示之向量之各個元件與由op1之複製元件OpA.2表示之純量組合。
儘管第2圖及第4A圖至第8圖圖示各個處理路徑中所執行之SIMD運算係對運算元op1、op2之對應資料元件之加法的實例,但是亦可執行其他種類之處理運算。舉例而言,本發明技術可應用於以下種類之正負號或無正負號SIMD指令中的任一者:‧ADD:各個處理路徑加上兩個對應資料元件,具有包括成對、加長、加寬及成對加長之可選排列;‧SUB:各個處理路徑減去兩個對應資料元件,具有包括加長及加寬之可選排列;‧MIN:各個處理路徑決定兩個對應資料元件之最小值,具有可選成對排列;‧MAX:各個處理路徑決定兩個對應資料元件之最大值,具有可選成對排列;‧ABD:各個處理路徑決定兩個對應資料元件之絕對差,具有可選加長排列;‧ABA:各個處理路徑決定兩個對應資料元件之絕對差,及隨後將絕對差累加至暫存器中,具有可選加長排列。
此外,純量對元件排列亦可應用於所有該等指令。亦可執行許多其他類型處理運算及排列。
第9圖圖示一時序圖,該時序圖圖示執行不同指令
的處理循環。如第9圖所示,在兩個循環內執行需要排列運算的第一種類型SIMD指令50,一循環執行排列及一循環對使用該排列所產生的運算元op1、op2執行SIMD運算。
此外,第9圖圖示第二種類型SIMD指令52,對於該類型SIMD指令,不需要排列。藉由SIMD單元10處理此指令,該SIMD單元直接對由指令52所指定的運算元op1、op2執行SIMD運算,而無需經由排列單元12傳遞該等運算元。此舉與先前實施形成對比,先前實施原本將經由排列階段傳遞運算元,即便是SIMD指令不需要排列。因此,本發明技術省去一處理循環,且因此現可在一個處理循環內執行SIMD指令52。實際上,大多數SIMD指令具有第二種類型52,且需要排列的指令50為極少。因此,對於大多數SIMD指令可避免排列所需的額外處理循環,從而提供顯著執行節省。
第9圖亦圖示獨立排列指令54,該獨立排列指令僅需要執行排列運算,而無需後續SIMD運算。可使用排列單元12在單個循環內執行此指令54。
儘管本文已參看隨附圖式詳細描述本發明之說明性實施例,但是應將理解,本發明不受限於彼等精確實施例,且在不脫離如由隨附申請專利範圍所界定之本發明之範疇及精神的情況下,可由熟習此項技術者在該等實施例中實現各種變化及修改。
Claims (21)
- 一種資料處理裝置,該資料處理裝置包含:單指令多資料(SIMD)處理電路系統,該SIMD處理電路系統經配置以對包含複數個資料元件的第一SIMD運算元及第二SIMD運算元執行一SIMD運算,該SIMD處理電路系統具有用於處理該第一SIMD運算元及該第二SIMD運算元之對應資料元件之複數個並行處理路徑;排列電路系統,該排列電路系統經配置以對包含複數個源資料元件的至少一個源運算元執行一排列運算,以產生該第一SIMD運算元及該第二SIMD運算元,該排列運算產生該第一SIMD運算元及該第二SIMD運算元之至少一者,該等SIMD運算元具有與該至少一個源運算元不同的一資料元件大小及不同的一資料元件位置之至少一者;以及一指令解碼器,該指令解碼器經配置以解碼SIMD指令,該等SIMD指令需要藉由該SIMD處理電路系統執行之該SIMD運算;其中回應於需要該排列運算及識別該至少一個源運算元之一第一SIMD指令,配置該指令解碼器以控制該排列電路系統對該至少一個源運算元執行該排列運算,以產生該第一SIMD運算元及該第二SIMD運算元;及以控制該SIMD處理電路系統使用由該排列電路系統所產生的該第一SIMD運算元及該第二SIMD運算元執行該SIMD運算;以及回應於不需要該排列運算及識別該第一SIMD運算元及該第二SIMD運算元之一第二SIMD指令,配置該指令解碼器 以控制該SIMD處理電路系統,以使用由該第二SIMD指令所識別的該第一SIMD運算元及該第二SIMD運算元執行該SIMD運算,而無需經由該排列電路系統傳遞該第一SIMD運算元及該第二SIMD運算元。
- 如請求項1所述之資料處理裝置,其中配置該資料處理裝置以比該第一SIMD指令更少的處理循環處理該第二SIMD指令。
- 如請求項1所述之資料處理裝置,其中該SIMD處理電路系統不支援該排列運算。
- 如請求項1所述之資料處理裝置,其中各個並行處理路徑僅可處理在由該SIMD處理電路系統接收時呈現於該第一SIMD運算元及該第二SIMD運算元內的一預先決定資料元件位置處的資料元件,且各個並行處理路徑不可處理在其他資料元件位置處呈現於該等所接收之第一SIMD運算元及第二SIMD運算元中的資料元件。
- 如請求項1所述之資料處理裝置,其中該第一SIMD運算元及該第二SIMD運算元之該等資料元件具有複數個不同資料元件大小之一者。
- 如請求項1所述之資料處理裝置,其中配置該排列電路系統以執行複數個不同類型之該排列運算。
- 如請求項1所述之資料處理裝置,其中對於至少一種類型排列運算,配置該排列電路系統以對各個包含複數個源資料元件的第一源運算元及第二源運算元執行該排列運算,以產生該第一SIMD運算元及該第二SIMD運算元。
- 如請求項1所述之資料處理裝置,其中配置該排列電路系統以執行一元件重新安排排列運算,以將該等複數個源資料元件中的至少一些源資料元件映射至該第一SIMD運算元及該第二SIMD運算元中的不同資料元件位置。
- 如請求項8所述之資料處理裝置,其中該元件重新安排排列運算包含一成對元件重新安排運算,該成對元件重新安排運算用於將該至少一個源運算元之一對相鄰源資料元件分別映射至該第一SIMD運算元及該第二SIMD運算元中的對應資料元件位置。
- 如請求項1所述之資料處理裝置,其中配置該排列電路系統以執行一元件延伸排列運算,以產生該第一SIMD運算元及該第二SIMD運算元之至少一者,該等SIMD運算元比該至少一個源運算元之一者具有一更大資料元件大小。
- 如請求項10所述之資料處理裝置,其中當執行該元件延伸排列運算時,配置該排列電路系統以藉由以下步驟產生該第一SIMD運算元及該第二SIMD運算元之該至少一者之各個資料元件:(i)將該資料元件的一第一部分設置為一對應源資料元件之一資料值;以及(ii)用該對應源資料元件之該資料值之一正負號延伸或零延伸填充該資料元件之一第二部分。
- 如請求項10所述之資料處理裝置,其中該元件延伸排列運算包含對各個具有M位元源資料元件的第一源運算元及第二源運算元所執行的一元件加長排列運算,以產生各個具有N位元資料元件的第一SIMD運算元及第二SIMD運算元,其中M及N為整數且N>M。
- 如請求項10所述之資料處理裝置,其中該元件延伸排列運算包含對具有N位元源資料元件的一第一源運算元及具有M位元源資料元件的一第二源運算元所執行的一元件加寬排列運算,以產生各個具有N位元資料元件的第一SIMD運算元及第二SIMD運算元,其中M及N為整數且N>M。
- 如請求項10所述之資料處理裝置,其中該元件延伸排列運算包含對具有M位元源資料元件的至少一個源運算元所執行的一元件延伸與重新安排排列運算,以將該等源資料元件 中的至少一些源資料元件映射至該第一SIMD運算元及該第二SIMD運算元中的不同資料元件位置,該第一SIMD運算元及該第二SIMD運算元具有N位元資料元件,其中M及N為整數且N>M。
- 如請求項1所述之資料處理裝置,其中配置該排列電路系統以對第一源運算元及第二源運算元執行一純量對元件排列運算以產生該第一SIMD運算元及該第二SIMD運算元,該純量對元件排列運算包含將該第一源運算元之一選定源資料元件映射至該第一SIMD運算元之該等資料元件之各者,及將該第二源運算元之各別資料元件映射至該第二SIMD運算元之對應資料元件。
- 如請求項1所述之資料處理裝置,其中該SIMD運算包含該等並行處理路徑中之各者,該等並行處理路徑對該第一SIMD運算元及該第二SIMD運算元之該等對應資料元件執行一處理運算,該處理運算包含以下之一者:加上該等對應資料元件;從該等對應資料元件之其他者中減去該等對應資料元件之一者;決定該等對應資料元件之一最小值;決定該等對應資料元件之一最大值;決定該等對應資料元件之間的一絕對差;以及 決定該等對應資料元件之間的一絕對差,及將該絕對差加至儲存於一儲存位置中的一值。
- 如請求項1所述之資料處理裝置,其中配置該排列電路系統以將該等所產生之第一SIMD運算元及第二SIMD運算元寫入至一資料儲存器。
- 如請求項1所述之資料處理裝置,其中回應於指定該至少一個源運算元及不需要該SIMD處理電路系統執行該SIMD運算之一排列指令,配置該指令解碼器以控制該排列電路系統執行該排列運算。
- 一種處理資料之方法,該方法包含以下步驟:解碼單指令多資料(SIMD)指令,該等SIMD指令需要藉由SIMD處理電路系統對包含複數個資料元件的第一SIMD運算元及第二SIMD運算元執行之一SIMD運算,該SIMD處理電路系統具有用於處理該第一SIMD運算元及該第二SIMD運算元之對應資料元件之複數個並行處理路徑;回應於解碼需要一排列運算及識別包含複數個源資料元件的至少一個源運算元之一第一SIMD指令之步驟,控制排列電路系統對該至少一個源運算元執行該排列運算以產生該第一SIMD運算元及該第二SIMD運算元,該等SIMD運算元具有與該至少一個源運算元不同的一資料元件大小及不同的一資料元件位置之至少一者,及控制該SIMD處理電路系統 使用由該排列電路系統所產生的該第一SIMD運算元及該第二SIMD運算元執行該SIMD運算;以及回應於解碼不需要該排列運算及識別該第一SIMD運算元及該第二SIMD運算元之一第二SIMD指令之步驟,控制該SIMD處理電路系統使用由該第二SIMD指令所識別的該第一SIMD運算元及該第二SIMD運算元執行該SIMD運算,而無需經由該排列電路系統傳遞該第一SIMD運算元及該第二SIMD運算元。
- 一種資料處理裝置,該資料處理裝置包含:排列電路系統,該排列電路系統經配置以回應於一程式指令對包含複數個源資料元件的至少一個源運算元執行一排列運算,以產生包含複數個經排列之資料元件的至少一個經排列之運算元,該排列運算藉由以下步驟產生該至少一個經排列之運算元之該等複數個經排列之資料元件中之各者:(i)將該經排列之資料元件的一第一部分設置為一對應源資料元件之一資料值;以及(ii)用該對應源資料元件之該資料值之一正負號延伸或零延伸填充該經排列之資料元件之一第二部分;其中對於至少一個經排列之資料元件,該至少一個經排列之運算元內的該資料元件位置與該至少一個源運算元內的該對應源資料元件之該資料元件位置不同。
- 一種處理資料之方法,該方法包含以下步驟:回應於一程式指令,對包含複數個源資料元件的至少一個源運算元執行一排列運算,以產生包含複數個經排列之資料元件的至少一個經排列之運算元,該排列運算藉由以下步驟產生該至少一個經排列之運算元之該等複數個經排列之資料元件中之各者:(i)將該經排列之資料元件的一第一部分設置為一對應源資料元件之一資料值;以及(ii)用該對應源資料元件之該資料值之一正負號延伸或零延伸填充該經排列之資料元件之一第二部分;其中對於至少一個經排列之資料元件,該至少一個經排列之運算元內的該資料元件位置與該至少一個源運算元內的該對應源資料元件之該資料元件位置不同。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/936,576 | 2013-07-08 | ||
US13/936,576 US9292298B2 (en) | 2013-07-08 | 2013-07-08 | Data processing apparatus having SIMD processing circuitry |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201502995A TW201502995A (zh) | 2015-01-16 |
TWI622934B true TWI622934B (zh) | 2018-05-01 |
Family
ID=51214738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103118467A TWI622934B (zh) | 2013-07-08 | 2014-05-27 | 具有simd處理電路系統的資料處理裝置及處理資料的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9292298B2 (zh) |
CN (1) | CN104281437B (zh) |
GB (1) | GB2517254B (zh) |
TW (1) | TWI622934B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9880845B2 (en) * | 2013-11-15 | 2018-01-30 | Qualcomm Incorporated | Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods |
US9965275B2 (en) | 2015-07-31 | 2018-05-08 | Arm Limited | Element size increasing instruction |
GB2540943B (en) * | 2015-07-31 | 2018-04-11 | Advanced Risc Mach Ltd | Vector arithmetic instruction |
US10970081B2 (en) * | 2017-06-29 | 2021-04-06 | Advanced Micro Devices, Inc. | Stream processor with decoupled crossbar for cross lane operations |
US10346163B2 (en) | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
US10970078B2 (en) * | 2018-04-05 | 2021-04-06 | Apple Inc. | Computation engine with upsize/interleave and downsize/deinterleave options |
US10642620B2 (en) | 2018-04-05 | 2020-05-05 | Apple Inc. | Computation engine with strided dot product |
US11294678B2 (en) * | 2018-05-29 | 2022-04-05 | Advanced Micro Devices, Inc. | Scheduler queue assignment |
US10754649B2 (en) | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
US10831488B1 (en) | 2018-08-20 | 2020-11-10 | Apple Inc. | Computation engine with extract instructions to minimize memory access |
US10620958B1 (en) | 2018-12-03 | 2020-04-14 | Advanced Micro Devices, Inc. | Crossbar between clients and a cache |
US11442729B2 (en) * | 2020-10-26 | 2022-09-13 | Google Llc | Bit-packed array processing using SIMD |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020026570A1 (en) * | 2000-11-08 | 2002-02-28 | Takehiro Shimizu | SIMD operation system capable of designating plural registers |
US6718504B1 (en) * | 2002-06-05 | 2004-04-06 | Arc International | Method and apparatus for implementing a data processor adapted for turbo decoding |
US20090172366A1 (en) * | 2007-12-28 | 2009-07-02 | Cristina Anderson | Enabling permute operations with flexible zero control |
TW201140435A (en) * | 2009-12-22 | 2011-11-16 | Intel Corp | Synchronizing SIMD vectors |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU556521B2 (en) | 1981-06-11 | 1986-11-06 | Data General Corporation | Arithmetic unit |
US4785393A (en) | 1984-07-09 | 1988-11-15 | Advanced Micro Devices, Inc. | 32-Bit extended function arithmetic-logic unit on a single chip |
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6223320B1 (en) | 1998-02-10 | 2001-04-24 | International Business Machines Corporation | Efficient CRC generation utilizing parallel table lookup operations |
US6338136B1 (en) | 1999-05-18 | 2002-01-08 | Ip-First, Llc | Pairing of load-ALU-store with conditional branch |
US7308559B2 (en) * | 2000-02-29 | 2007-12-11 | International Business Machines Corporation | Digital signal processor with cascaded SIMD organization |
US6915411B2 (en) * | 2002-07-18 | 2005-07-05 | International Business Machines Corporation | SIMD processor with concurrent operation of vector pointer datapath and vector computation datapath |
US6954841B2 (en) | 2002-06-26 | 2005-10-11 | International Business Machines Corporation | Viterbi decoding for SIMD vector processors with indirect vector element access |
US7191432B2 (en) | 2003-06-05 | 2007-03-13 | International Business Machines Corporation | High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit |
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 |
GB2411974C (en) * | 2003-12-09 | 2009-09-23 | Advanced Risc Mach Ltd | Data shift operations |
GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
US7721069B2 (en) | 2004-07-13 | 2010-05-18 | 3Plus1 Technology, Inc | Low power, high performance, heterogeneous, scalable processor architecture |
CN101359284B (zh) | 2006-02-06 | 2011-05-11 | 威盛电子股份有限公司 | 处理数个不同数据格式的乘法累加单元及其方法 |
US9652231B2 (en) | 2008-10-14 | 2017-05-16 | International Business Machines Corporation | All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture |
US8423983B2 (en) | 2008-10-14 | 2013-04-16 | International Business Machines Corporation | Generating and executing programs for a floating point single instruction multiple data instruction set architecture |
US9529571B2 (en) * | 2011-10-05 | 2016-12-27 | Telefonaktiebolaget Lm Ericsson (Publ) | SIMD memory circuit and methodology to support upsampling, downsampling and transposition |
US9898283B2 (en) * | 2011-12-22 | 2018-02-20 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
US10678541B2 (en) * | 2011-12-29 | 2020-06-09 | Intel Corporation | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions |
EP2798429A4 (en) * | 2011-12-30 | 2016-07-27 | Intel Corp | RECONFIGURABLE DEVICE FOR REPOSITIONING DATA IN A DATA WORD |
US10038550B2 (en) * | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
-
2013
- 2013-07-08 US US13/936,576 patent/US9292298B2/en active Active
-
2014
- 2014-05-27 TW TW103118467A patent/TWI622934B/zh active
- 2014-06-05 GB GB1409947.7A patent/GB2517254B/en active Active
- 2014-07-07 CN CN201410320577.0A patent/CN104281437B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020026570A1 (en) * | 2000-11-08 | 2002-02-28 | Takehiro Shimizu | SIMD operation system capable of designating plural registers |
US6718504B1 (en) * | 2002-06-05 | 2004-04-06 | Arc International | Method and apparatus for implementing a data processor adapted for turbo decoding |
US20090172366A1 (en) * | 2007-12-28 | 2009-07-02 | Cristina Anderson | Enabling permute operations with flexible zero control |
TW201140435A (en) * | 2009-12-22 | 2011-11-16 | Intel Corp | Synchronizing SIMD vectors |
Also Published As
Publication number | Publication date |
---|---|
TW201502995A (zh) | 2015-01-16 |
US9292298B2 (en) | 2016-03-22 |
CN104281437B (zh) | 2018-09-18 |
GB2517254A (en) | 2015-02-18 |
US20150012724A1 (en) | 2015-01-08 |
GB201409947D0 (en) | 2014-07-16 |
CN104281437A (zh) | 2015-01-14 |
GB2517254B (en) | 2021-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI622934B (zh) | 具有simd處理電路系統的資料處理裝置及處理資料的方法 | |
US9852109B2 (en) | Method, apparatus and instructions for parallel data conversions | |
US9292286B2 (en) | Shuffle pattern generating circuit, processor, shuffle pattern generating method, and instruction sequence | |
JP3976082B2 (ja) | 異なった幅のvliwプロセッサコマンド | |
US20100274988A1 (en) | Flexible vector modes of operation for SIMD processor | |
JP2008071130A (ja) | Simd型マイクロプロセッサ | |
EP1267257A2 (en) | Conditional execution per data path slice | |
US8959275B2 (en) | Byte selection and steering logic for combined byte shift and byte permute vector unit | |
US9965275B2 (en) | Element size increasing instruction | |
KR100981998B1 (ko) | 데이터 워드 내의 비트 삽입 | |
EP1267258A2 (en) | Setting up predicates in a processor with multiple data paths | |
EP3329363B1 (en) | Vector arithmethic instruction | |
US20230325189A1 (en) | Forming Constant Extensions in the Same Execute Packet in a VLIW Processor | |
US20200249955A1 (en) | Pair merge execution units for microinstructions | |
EP3060979B1 (en) | Processor and methods for immediate handling and flag handling | |
US9933996B2 (en) | Selectively combinable shifters | |
EP1267255A2 (en) | Conditional branch execution in a processor with multiple data paths | |
JPH05150979A (ja) | 即値オペランド拡張方式 | |
US11385897B2 (en) | Merge execution unit for microinstructions | |
CN107291425B (zh) | 合并解决重命名尺寸问题的部分写入结果的系统和方法 | |
JP3515337B2 (ja) | プログラム実行装置 | |
US10289382B2 (en) | Selectively combinable directional shifters | |
JP2002091929A (ja) | Simd型並列処理装置 | |
CN113961878A (zh) | 可配置的bf16格式矩阵乘法数据通路实现方法、部件及装置 |