TWI780116B - 用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作 - Google Patents

用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作 Download PDF

Info

Publication number
TWI780116B
TWI780116B TW107106120A TW107106120A TWI780116B TW I780116 B TWI780116 B TW I780116B TW 107106120 A TW107106120 A TW 107106120A TW 107106120 A TW107106120 A TW 107106120A TW I780116 B TWI780116 B TW I780116B
Authority
TW
Taiwan
Prior art keywords
data
data processing
source register
register
group
Prior art date
Application number
TW107106120A
Other languages
English (en)
Other versions
TW201832071A (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 TW201832071A publication Critical patent/TW201832071A/zh
Application granted granted Critical
Publication of TWI780116B publication Critical patent/TWI780116B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • 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/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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45541Bare-metal, i.e. hypervisor runs directly on hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Abstract

提供了一種資料處理設備、一種操作資料處理設備的方法、一種非暫態電腦可讀式儲存媒體、及一種指令。該指令指定第一來源暫存器、第二來源暫存器、及索引。回應於該指令而產生控制訊號,引發處理電路執行相關於第一來源暫存器及第二來源暫存器中的每一資料群組的資料處理操作,以產生個別結果資料群組而形成資料處理操作的結果。第一來源暫存器及第二來源暫存器之每一者具有一尺寸,該尺寸是資料群組的預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素。針對每一資料群組的資料處理操作的運算元為在第一來源暫存器的資料群組中藉由索引來識別的一選擇的資料元素,及第二來源暫存器的資料群組中的每一資料元素。用於向量逐元素操作的技術,在暫存器寬度成長時為易擴展的。

Description

用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器 的向量逐元素操作
本揭示案關於資料處理。特定而言,本揭示案關於執行向量逐元素(element-by-vector)操作的資料處理設備。
可需要資料處理設備來執行算數操作,該等操作可包含矩陣乘法操作。該等操作可在多種情境中找到應用。可需要實作以支援該等矩陣乘法的一個功能為:支援結合單一元素及整體向量的操作之能力,例如,將一個向量的所有元素乘以另一向量的單一元素。然而,提供該功能性的現存技術不能很好的擴展至大型向量。
於此描述的至少一個範例提供一種資料處理設備,包括:暫存器儲存電路,該暫存器儲存電路具有複數個暫存器;解碼器電路,該解碼器電路回應於一資料處理指令以產生控制訊號,該資料處理指令在該複數個暫存器中指定:一第一來源暫存器、一第二來源暫存器、及一索引;其中該第一來源暫存器及該第二來源暫存器之每一 者具有一尺寸,該尺寸是一資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及處理電路,該處理電路回應於該等控制訊號以執行相關於該第一來源暫存器及該第二來源暫存器中的每一該資料群組的一資料處理操作,以產生個別結果資料群組而形成該資料處理操作的一結果;其中針對每一該資料群組的該資料處理操作的運算元(operands)為在該第一來源暫存器的該資料群組中藉由該索引來識別的一選擇的資料元素,及該第二來源暫存器的該資料群組中的每一資料元素。
於此描述的至少一個範例提供一種資料處理方法,包括以下步驟:解碼一資料處理指令以產生控制訊號,該資料處理指令在複數個暫存器中指定:一第一來源暫存器、一第二來源暫存器、及一索引;其中該第一來源暫存器及該第二來源暫存器之每一者具有一尺寸,該尺寸是一資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及回應於該等控制訊號,執行相關於該第一來源暫存器及該第二來源暫存器中的每一該資料群組的一資料處理操作,以產生個別結果資料群組而形成該資料處理操作的一結果;其中針對每一該資料群組的該資料處理操作的運算元為在該第一來源暫存器的該資料群組中藉由該索引來識別的一選擇的資料元素,及該第二來源暫存器的該資料群組中的每一資料元素。
於此描述的至少一個範例提供一種電腦可讀式儲存媒體,以一非暫態方式儲存於一程式中,包括至少一個資料處理指令,在藉由一資料處理設備執行時,引發以下步驟:回應於該資料處理指令,產生控制訊號,該資料處理指令在複數個暫存器中指定:一第一來源暫存器、一第二來源暫存器、及一索引;其中該第一來源暫存器及該第二來源暫存器之每一者具有一尺寸,該尺寸是一資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及回應於該等控制訊號,執行相關於該第一來源暫存器及該第二來源暫存器中的每一該資料群組的一資料處理操作,以產生個別結果資料群組而形成該資料處理操作的一結果;其中針對每一該資料群組的該資料處理操作的運算元為在該第一來源暫存器的該資料群組中藉由該索引來識別的一選擇的資料元素,及該第二來源暫存器的該資料群組中的每一資料元素。
於此描述的至少一個範例提供一種資料處理設備,包括:用於在複數個暫存器中儲存資料的構件;用於解碼一資料處理指令以產生控制訊號的構件,該資料處理指令在用於儲存資料的該等構件中指定:一第一來源暫存器、一第二來源暫存器、及一索引;其中該第一來源暫存器及該第二來源暫存器之每一者具有一尺寸,該尺寸是一資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及用於回應於 該等控制訊號而執行相關於該第一來源暫存器及該第二來源暫存器中的每一該資料群組的一資料處理操作的構件,以產生個別結果資料群組而形成該資料處理操作的一結果;其中針對每一該資料群組的該資料處理操作的運算元為在該第一來源暫存器的該資料群組中藉由該索引來識別的一選擇的資料元素,及該第二來源暫存器的該資料群組中的每一資料元素。
12:處理電路
14:記憶體
16:提取電路
18:解碼電路
20:暫存器
22:載入/儲存單元
24:正整數倍數
25:資料群組
30:記憶體
32:資料預備指令
34:運算碼部分
36:暫存器區分符
38:記憶體位置區分符
40:資料群組
42:資料元素
44:資料元素
46、48、50、52:資料群組
60:指令
62:運算碼
64:暫存器區分符
66:指定記憶體位置
68:資料群組
70、72、74、76:資料元素
78、80、82、84:資料群組
102:運算碼
104:第一暫存器區分符
106:第二暫存器區分符
108:索引區分符
110:結果暫存器區分符
112:第一資料群組
114:第二資料群組
116、118:資料群組
120、122、124、126:操作單元
130、132、134、136:儲存部件
140、142、144、146:功能單元
148:多工器
150、152、154、156:儲存單元
160、162、164、166:儲存單元
170、172、174、176:功能單元
180、182、184、186:儲存單元
200:指令
202:運算碼
204:第一暫存器區分符
206:第二暫存器區分符
208:中間索引值
210:結果暫存器區分符
220:資料處理指令
221:運算碼
224:第一暫存器區分符/旋轉區分符
226:第二暫存器區分符/第一暫存器(A)區分符
228:第三暫存器區分符/第二暫存器(B)區分符
230:索引區分符
232:累積暫存器區分符
234、236、238、240:熔接乘法累積(CFMA)單元
250、260、270、280、290、300、310:步驟
320、330:指令
322:運算碼
324:第一暫存器區分符
326:第二暫存器區分符
328:輸出暫存器區分符
332:運算碼
334:輸出暫存器區分符
336:累積器暫存器區分符
340、342、344、346:操作單元
348:加總單元
350、352:來源暫存器
354、356:乘法單元
358:加總單元
360:輸出暫存器
362:累積暫存器
380、382:來源暫存器
384、386、388、390、392、394、396、398:暫時儲存緩衝器
400、402、404、406:乘法單元
408、410、412、414:加總單元
416:累積暫存器
430、440、450、460、470:步驟
500:指令
502:運算碼
504:第一來源暫存器區分符
506:第二來源暫存器區分符
508:累積暫存器區分符
510:第一來源暫存器
512:第二來源暫存器
514、516、518、520:熔接乘加(FMA)單元
522、524、526、528:累積暫存器
540:第一來源暫存器
542:第二來源暫存器
544、546:FMA單元
548、550:累積暫存器
560、562:來源暫存器
564、566、568、570、572、574、576、578:FMA單元
580、582、584、586、588、590、592、594:累積暫存器
600、602、604、606:乘法器
620、622:來源暫存器
624、626、628、630:FMA單元
632、634:累積暫存器
650、652、654、656、658:步驟
700:應用程式
710:虛擬機器程式
730:主機處理器
進一步僅藉由範例方式參考本發明之實施例來描述本發明,如所附圖式中所圖示,其中:第1圖示意地圖示資料處理設備,可運用本技術的多種範例;第2圖示意地圖示一個實施例中資料預備指令的使用;第3圖示意地圖示第2圖的實施例上的變體;第4A圖示意地圖示一範例資料處理指令,且第4B圖展示一個實施例中執行該資料處理指令的實作;第5A及5B圖示意地圖示兩個方式,其中可在一些實施例中提供資料元素至操作單元的繞線;第6A及6B圖示意地圖示參考第4A及4B圖及其執行所論述的資料處理指令的兩個進一步範例;第7A圖示意地圖示一範例資料處理指令,且第7B圖展示一個實施例中執行該資料處理指令的實作; 第8圖展示根據一個實施例的方法所採用的一序列步驟;第9A圖示意地圖示根據一個實施例的資料處理指令的執行,且第9B圖展示該指令的兩個範例;第10圖示意地圖示第9B圖的資料處理指令的執行的實施例中的一些變體;第11圖示意地圖示一個實施例中使用兩個128位元的來源暫存器以用於「內積(dot product)」資料處理指令的更複雜範例;第12圖展示第11圖的實施例上的變體;第13圖展示第11及12圖中所展示的範例上的進一步變體;第14圖展示根據一個實施例的方法所採用的一序列步驟;第15A圖示意地圖示一些實施例所提供的資料處理指令的執行,且第15B圖展示對應的範例指令;第16圖以簡單矩陣乘法操作的形式來展示第15A圖的實施例的範例識圖;第17圖展示第15A圖中所展示的範例的更簡單變體,其中僅自第一及第二來源暫存器之每一者獲得兩個資料元素;第18圖展示第15A圖中所展示的範例的另一變體,其中自該等來源暫存器之每一者抽取更多資料元素; 第19圖展示資料處理指令的執行的範例實施例,給出執行的一些特定乘法操作的更多細節;第20圖展示資料處理指令的執行的範例實施例,其中將兩個來源暫存器的內容處置為包含兩個獨立通道(lanes)中的資料元素;第21圖展示根據一個實施例的方法所採用的一序列步驟;及第22圖展示根據一個實施例的虛擬機器實作。
於此描述的至少一個範例實施例提供一種資料處理設備,包括:暫存器儲存電路,該暫存器儲存電路具有複數個暫存器;解碼器電路,該解碼器電路回應於一資料處理指令以產生控制訊號,該資料處理指令在該複數個暫存器中指定:一第一來源暫存器、一第二來源暫存器、及一索引;其中該第一來源暫存器及該第二來源暫存器之每一者具有一尺寸,該尺寸是一資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及處理電路,該處理電路回應於該等控制訊號以執行相關於該第一來源暫存器及該第二來源暫存器中的每一該資料群組的一資料處理操作,以產生個別結果資料群組而形成該資料處理操作的一結果;其中針對每一該資料群組的該資料處理操作的運算元為在該第一來源暫存器的該資料群組中藉由該索引來識別的一選擇 的資料元素,及該第二來源暫存器的該資料群組中的每一資料元素。
所提供的指令因而引發第一來源暫存器中的每一資料群組的向量元素與第二來源暫存器中的對應資料群組的選擇的元素的資料處理操作之執行。使用即時的索引值以選擇第一來源暫存器中每一元素群組內部的資料元素(亦即,所有群組中相同的元素位置)。換句話說,該指令引發元素的群組內部的向量逐元素操作的執行,且跨向量中每一群組複製完全相同的操作(包含元素選擇)。此提供用於實作該向量逐元素操作的有效機制,特別在暫存器寬度(亦即,向量長度)成長時,因為技術明顯為可擴展的。此外,應注意該群組的向量逐元素操作一般可被預期為可在資料處理設備中實作為單一微操作(micro-operation)的,而相較於等效正常向量操作而言無須額外的延遲,因為所處理的資料元素的選擇及複製係在「資料群組」層級上定義及實作,而確實可定義成限制為用於該微操作實作可能的尺寸。
可以多種方式佈置資料處理設備以支援此資料處理指令的執行,例如特定方式中,操控在第一來源暫存器的資料群組中藉由索引識別的選擇的資料元素,且應用至第二來源暫存器的資料群組中的每一資料元素。在一些實施例中,處理電路包括回應於控制訊號的資料元素操控電路以供應所選擇資料元素的多個實體至多個資料操作電路,其中每一資料操作電路回應於控制訊號以執行相 關於第一來源暫存器及第二來源暫存器中的個別資料群組的資料處理操作。
在可自由指定資料處理指令所使用的來源暫存器的同時,且本技術不強加限制於來源暫存器中的資料值必須配合的格式,本技術因而鑑別出:可藉由使來源暫存器的內容事先採用一特定格式來增強資料處理指令的執行。據此,在一些實施例中,解碼器電路回應於資料預備指令以產生進一步控制訊號,資料預備指令指定記憶體位置及目標暫存器,且其中處理電路回應於進一步控制訊號以自記憶體位置擷取具有預先定義尺寸的受試資料群組項目,及藉由該受試資料群組項目的複製來填滿目標暫存器。換句話說,本技術提供另一指令,資料預備指令,佈置以擷取指定的受試資料群組項目且跨目標暫存器的寬度複製該受試資料群組項目。目標暫存器可為第一來源暫存器。因此,可藉由資料預備指令事先設定第一來源暫存器的內容,使得在後續資料處理指令執行之前,已經將第一來源暫存器的資料群組中藉由索引識別的選擇的資料元素複製於跨第一來源暫存器的資料群組之位置處。
正整數倍數,定義了第一來源暫存器及第二來源暫存器之每一者及資料群組的預先定義尺寸之間的尺寸比例(至少為預先定義尺寸的兩倍),可多樣地定義且維持於資料處理設備中,但在一些實施例中,暫存器儲存電路包括控制暫存器以儲存正整數倍數的指示。
進一步地,本技術提供專用的控制指令,可提供該指令以允許此正整數倍數的修改,且在一些實施例中,解碼器電路回應於控制指令以將正整數倍數的指示修改上至用於該資料處理設備的一預先定義最大值。
可以多種方式使用資料處理操作的結果,但在一些實施例中,資料處理指令進一步在複數個暫存器中指定結果暫存器,且處理電路進一步回應於控制訊號以將資料處理操作的結果應用至結果暫存器。處理電路可回應於控制訊號以儲存資料處理操作的結果於結果暫存器中。替代地,處理電路可回應於控制訊號以將資料處理操作的結果應用至第二來源暫存器。換句話說,第二來源暫存器可提供累積暫存器。
資料處理操作僅可將第一來源暫存器及第二來源暫存器的內容(及即時索引值)採用為該操作之運算元,但不限於該等運算元,在一些實施例中,資料處理指令進一步指定複數個暫存器中的至少一個進一步來源暫存器,其中處理電路回應於控制訊號以執行進一步相關於該至少一個進一步來源暫存器中的每一資料群組的資料處理操作,以產生個別結果資料群組而形成資料處理操作的結果,且其中針對每一資料群組的資料處理操作的運算元進一步包括該至少一個進一步來源暫存器的資料群組中的每一資料元素。
此進一步來源暫存器可扮演資料處理操作中的多種角色。在一些實施例中,處理電路回應於控制訊號 以累積資料處理操作的結果與該至少一個進一步來源暫存器中的先前內容。
資料處理操作可為算數操作,例如該資料處理操作可為乘法操作。資料處理操作可為內積操作,包括:自第一來源暫存器及第二來源暫存器之每一者抽取至少一第一資料元素及一第二資料元素;執行將至少第一資料元素對及第二資料元素對相乘的乘法操作;及將該等乘法操作的結果加總。
在一些實施例中,乘法操作包括第一資料元素對、第二資料元素對、第三資料元素對及第四資料元素對的相乘。
在一些實施例中,資料處理指令進一步指定複數個暫存器中的一累積暫存器,且該資料處理操作為內積及累積操作,進一步包括:自該累積暫存器載入一累積值;將乘法操作的結果與該累積值加總;及儲存加總的結果至累積暫存器。
在一些實施例中,資料處理操作為一乘法累積(multiply-accumulate)操作。
在一些實施例中,第一來源暫存器及第二來源暫存器中的每一資料群組中的資料元素為代表一複數(complex number)的一對資料值,且資料處理操作為複數的一乘法累積。換句話說,「複數對」(由兩個個別資料值表示)可視為本技術的資料元素,使得所描述的向量逐元素操作亦可應用至複數。因此亦可提供專用對應指 令以便識別欲經受作用於複數值的資料處理操作的複數元素(例如,複數的乘法累積)。
在一些實施例中,資料處理指令進一步指定一旋轉參數,其中處理電路回應於旋轉參數以使用經受資料處理操作的資料值及該等資料值的正負號的一選擇的排序來執行複數的乘法累積。此導致對複數操作的多樣之彈性,可藉由資料處理指令的構件來執行該等操作,例如允許提供標的複數對資料值而無正負號,但允許針對該等複數對資料值的正負號的每一旋轉排序直接被程式人員取得。
在一些實施例中,資料處理操作為邏輯操作。
於此描述的至少一個範例實施例提供一種資料處理方法,包括以下步驟:解碼資料處理指令以產生控制訊號,該資料處理指令在複數個暫存器中指定:第一來源暫存器、第二來源暫存器、及索引,其中第一來源暫存器及第二來源暫存器之每一者具有一尺寸,該尺寸是資料群組的預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及回應於該等控制訊號,執行相關於第一來源暫存器及第二來源暫存器中的每一資料群組的資料處理操作,以產生個別結果資料群組而形成資料處理操作的結果,其中針對每一資料群組的資料處理操作的運算元為在第一來源暫存器的資料群組中藉由索引來識別的一選擇的資料元素,及第二來源暫存器的資料群組中的每一資料元素。
於此描述的至少一個範例實施例提供一種電腦可讀式儲存媒體,以一非暫態方式儲存於一程式中,包括至少一個資料處理指令,在藉由資料處理設備執行時,引發以下步驟:回應於資料處理指令產生控制訊號,資料處理指令在複數個暫存器中指定:第一來源暫存器、第二來源暫存器、及索引,其中第一來源暫存器及第二來源暫存器之每一者具有一尺寸,該尺寸是資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及回應於該等控制訊號,執行相關於第一來源暫存器及第二來源暫存器中的每一資料群組的資料處理操作,以產生個別結果資料群組而形成資料處理操作的結果,其中針對每一資料群組的資料處理操作的運算元為在第一來源暫存器的資料群組中藉由索引來識別的一選擇的資料元素,及第二來源暫存器的資料群組中的每一資料元素。
於此描述的至少一個範例實施例提供一種資料處理設備,包括:用於在複數個暫存器中儲存資料的構件;用於解碼資料處理指令以產生控制訊號的構件,該資料處理指令在用於儲存資料的該等構件中指定:第一來源暫存器、第二來源暫存器、及索引,其中第一來源暫存器及第二來源暫存器之每一者具有一尺寸,該尺寸是資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及用於回應於該等控制訊號而執行相關於第一來源暫存器及第二來源暫存器中的 每一資料群組的資料處理操作的構件,以產生個別結果資料群組而形成資料處理操作的結果,其中針對每一資料群組的資料處理操作的運算元為在第一來源暫存器的資料群組中藉由索引來識別的一選擇的資料元素,及第二來源暫存器的資料群組中的每一資料元素。
於此描述的至少一個範例實施例提供一種虛擬機器,由在資料處理設備上執行電腦程式來提供該虛擬機器,該虛擬機器提供對應於一個上述資料處理設備的一指令執行環境。
現在參考圖式來描述一些特定實施例。
第1圖示意地圖示資料處理設備,可運用本技術的多種範例。資料處理設備包括處理電路12,處理電路12回應於處理電路12執行的序列指令在資料項目上執行資料處理操作。自記憶體14擷取該等指令(資料處理設備存取記憶體14),以發明所屬領域具有通常知識者所孰悉的方式,針對此目的提供提取電路16。提取電路16所擷取的進一步指令被傳送至解碼電路18,解碼電路18產生控制訊號,該等控制訊號經佈置以控制配置的多種態樣及處理電路12的操作。亦展示了一組暫存器20及載入/儲存單元22。發明所屬領域具有通常知識者熟悉第1圖代表的一般配置,且僅針對簡短目的茲免除第1圖的進一步細節描述。在第1圖中所圖示的實施例中,暫存器20可包括針對正整數倍數24及資料群組25尺寸的其中一者或兩者的儲存,參考一些特定實施例而在下方更詳細描述其使 用。借助於載入/儲存單元22,該等指令的執行中處理電路12所需要的資料及該等資料處理指令結果所產生的資料值被寫入記憶體14及自記憶體14讀取。亦注意一般而言,第1圖中的記憶體14可被視為電腦可讀式儲存媒體的範例,本技術的指令可儲存於其上,典型為處理電路接著執行的預先定義的序列指令的一部分(「程式」)。然而,處理電路可自多種不同來源(例如在RAM中、在ROM中)經由網路介面等來存取該程式。本揭示案描述處理電路12可執行的多種新穎指令,且伴隨的圖式提供該等指令的本質的進一步說明、資料處理電路中的變體,以便支援該等指令的執行等。
第2圖示意地圖示資料預備指令32的使用。資料預備指令32包括運算碼部分34(將運算碼部分34定義為資料預備指令)、暫存器區分符36、及記憶體位置區分符38。由此實施例的資料處理設備來執行此指令,引發資料群組40的識別,資料群組40儲存於記憶體30中(由指定記憶體位置參照,例如延伸多於一個位址,取決於所定義的資料群組尺寸)且包括(在此圖示的實施例中)兩個資料元素b0及b1(在圖式中標為42及44)。進一步地,該指令的執行引發該資料群組40被拷貝入指定的暫存器且更被跨該暫存器的寬度複製,如第2圖中所展示的重複資料群組46、48、50及52,每一者皆由資料元素b0及b1構成。
第3圖示意地圖示第2圖的實施例上的變體,示範了該資料預備指令可引發不同尺寸的資料群組被拷貝及複製。在第3圖所圖示的範例中,指令60具有相同結構,亦即,包括運算碼62、暫存器區分符64、及指定記憶體位置66。指令60的執行引發記憶體位置66的存取且儲存其中的資料群組68(亦即,例如始於該記憶體位置且延伸了預先決定數量的資料元素)包括資料元素c0、c1、c2及c3(在圖式中標為70、72、74及76)。資料群組68被跨目標暫存器的寬度拷貝及複製,且展示為資料群組78、80、82及84的重複拷貝。注意,參考返回第1圖,可藉由暫存器20中的專用儲存位置25中所維持的值來預先定義資料群組尺寸。最終,應理解第2及3圖的範例不限於任何特定資料群組寬度或複製倍數。然而,為了論述在當代情境中有用的僅僅一個範例,可對128位元的寬度進行複製。在由UK的ARM® Limited of Cambridge所提供的可擴展性向量延伸(Scalable Vector Extensions,SVE)的情境中,此寬度對應至SVE向量粒子(granule)尺寸。在由ARM® Limited亦提供的ASMID指令的情境中,此寬度對應至ASIMD暫存器的尺寸。據此,本技術致能載入及複製以下群組類型:兩個64位元資料元素、四個32位元資料元素、八個16位元資料元素、或十六個8位元資料元素。
第4A圖示意地圖示一範例資料處理指令,且第4B圖展示一個實施例中執行該資料處理指令的實作。 此資料處理指令包括運算碼102、第一暫存器區分符104、第二暫存器區分符106、索引區分符108、及作為可選變體的結果暫存器區分符110。第4B圖圖示該指令的執行引發暫存器A及暫存器B中的資料群組被存取,其中暫存器A中的每一資料群組中的所有資料元素(亦即,此範例中的第一資料群組112中的資料元素a0及a1及第二資料群組114中的資料元素a2及a3)被存取,同時暫存器B中在每一資料群組116及118中僅存取選擇的資料元素(亦即,資料元素b1)。因此,存取的該等資料元素被傳送至處理電路的操作電路,在第4B圖中由操作單元120、122、124及126代表,相關於自暫存器B取得的資料元素及自暫存器A取得的資料群組來應用資料處理操作。如上述,指令100可指定結果暫存器(借助識別符110)且該等操作的結果被寫入結果暫存器128的個別資料元素。事實上,在一些實施例中,結果暫存器128及暫存器A可為一個且相同的暫存器,允許例如執行相關於該暫存器的內容的乘法累積操作(如示意地借助虛線箭頭展示於第4圖中)。亦注意第4B圖中所展示的暫存器意圖圖示為可能(在兩側上)延伸超出範例指令所存取的部分。此對應至以下事實:在一些實作中(例如上述可擴展性向量延伸(SVE)),可不指定向量尺寸。例如,將第4B圖視為描繪針對在SVE範例中如兩個64位元的資料元素(b0及b1)的指令操作,則用於目的地的向量尺寸可為自128位元上至2048位元的任何數字(增量為128位元)。
應理解在第4B圖中所展示的範例給予自暫存器B的內容使用選擇(重複)的資料元素的特定範例的同時,一般而言顯然提供多目的、彈性資料處理設備更可取,而具有將暫存器B中的任何資料元素使用為任何操作單元120至126的輸入之能力。第5A及5B圖示意地圖示兩個方式,其中可達到上述需求。第5A圖展示一組儲存部件130、132、134及136,可例如在暫存器中儲存個別資料元素,連接至一組操作單元140、142、144及146(可例如為熔接的乘加單元)。在第5A圖中展示儲存單元130至136及功能單元140至146之間的連接為直接的及經由多工器148中介的。據此,此配置提供任何個別儲存單元130至136的內容可提供至任何功能單元140至146作為第一輸入至每一個別功能單元,且儲存單元130至136的內容可個別提供作為功能單元140至146的第二輸入。由功能單元140至146所執行的處理結果被傳輸至儲存單元150至156,可例如在暫存器中儲存個別資料元素。藉由圖示的控制訊號來控制多工器148及每一功能單元140至146,以便允許上述彈性的輸入選擇。
第5B圖示意地圖示第5A圖的替代配置,其中每一儲存單元160、162、164及166直接連接至每一功能單元170、172、174及176,每一者由個別控制訊號控制,且其結果被傳送至個別儲存單元180、182、184及186。第5B圖所採用的方法避免了相關聯於使用第5B圖範例的多工器148所需的延遲,但付出更複雜繞線所需 的代價。因此,第5A圖及第5B圖的範例皆圖示出:在尋求實作完全彈性及可配置的一組輸入儲存單元、操作單元、及輸出儲存單元時複雜度可上升,特別是當相關的資料元素的數量成長時。例如,採用第5A圖的範例且將輸入儲存單元、操作單元、及輸出儲存單元的數量加倍至每一者八個,將導致針對八倍輸入多工器的需求。另一方面,採用第5B圖的方法的該八倍大實作將需要自每一輸入儲存單元至每一操作單元的八個路徑,亦即,共64個路徑,以及每一操作單元需要能夠接收八個不同輸入及在該八個輸入間選擇。因此,應理解本技術的實施例所採用的方法跨暫存器寬度重新使用資料部分(例如,資料群組)而致能將限制施加於輸入對所需控制單元的多工性及複雜度。此外,應注意在上述SVE/ASIMD情境中,可預期第4A圖的群組的向量逐元素指令可實作為單一微操作,而無須相較於等效正常向量操作的額外延遲,因為選擇及複製保持於SVE向量粒子內且ASIMD已具有在128位元內進行此操作的機制(例如,使用「FMLA(逐元素)」指令)。因此,可預期第4A圖中所展示的指令比正常向量操作之後的分開複製指令(DUP)序列更有效率。
第6A及6B圖示意地圖示參考第4A及4B圖所論述的範例之資料處理指令的兩個進一步範例。在第6A圖的範例中,指令200包括運算碼202、第一暫存器區分符204、第二暫存器區分符206、中間索引值208、及結果暫存器區分符210。第6A圖的下方部分示意地圖 示此指令200的執行,其中選擇了暫存器B的重複子部分(資料群組)內所指定的資料元素(索引1),且此資料元素被乘上暫存器A的個別資料群組所代表的向量,以產生個別結果資料群組以填充結果暫存器的內容。在第6A圖中,個別資料元素及資料群組之間所執行的操作由一般操作符號
Figure 107106120-A0305-02-0021-2
來展示,指示儘管上方範例給定此符號為乘法,其他操作為可能的且經思量。
本技術不限於該資料處理指令僅指定一個向量,且第6B圖展示一範例,其中提供了包括運算碼222、第一暫存器區分符224、第二暫存器區分符226、第三暫存器區分符228及索引區分符230的資料處理指令220。第6B圖的下方部分以相似於第6A圖中所展示方式來展示第一暫存器(B)中選擇的資料元素(b1)如何與自暫存器A及C取得的資料群組(向量)組合及如何產生結果值。僅為了圖示變體之目的,不在指令220中指定第6B圖的範例中的結果暫存器,但為此目的暫時使用預設的(預先決定的)結果暫存器。進一步地,在再次借助一般運算子符號
Figure 107106120-A0305-02-0021-3
來在第6B圖中展示部件組合的同時,應再次理解此操作可採用多種形式,取決於所執行的特定指令,同時此可確實為乘法操作,亦可為任何其他類型的算術操作(加法、減法等)或亦可為邏輯操作(ADD、XOR等)。
第7A圖示意地圖示另一範例資料處理指令,且第7B圖展示一個實施例中執行該資料處理指令的實作。提供該資料處理指令以支援針對複數的向量逐元素操 作,且此處稱為熔接複數乘法累加(FCMLA)指令。如第7A圖中所展示,範例的FCMLA指令220包括運算碼222、旋轉區分符224、第一暫存器(A)區分符226、第二暫存器(B)區分符228、索引區分符230、及累積暫存器區分符232。第7B圖圖示該指令的執行引發暫存器A及暫存器B中資料群組的存取,其中在此指令中的資料群組定義一數量的複數元素。複數元素由一對元素來代表(見第7B圖中的標示「複數對」)。在第7B圖的範例中,暫存器B的複數對為(b3,b2)及(b1,b0),而選擇了複數對(b3,b2)。暫存器A的複數對為(a7,a6)、(a5,a4)、(a3,a2)及(a1,a0)。自暫存器A及B所選擇的複數對(所有來自暫存器A的複數對及來自暫存器B的資料群組由索引230所識別的選擇的複數對)被傳送至複數熔接乘法累積(CFMA)單元234、236、238、240,其中來自暫存器A的每一複數對個別形成一個輸入至每一CFMA單元,同時來自暫存器B中的一個資料群組的選擇的複數對形成另一輸入至CFMA單元234及236且來自暫存器B中的下一資料群組的其他選擇的複數對形成另一輸入至CFMA單元238及240。複數熔接乘法累積操作的個別結果累積如同指定的累積暫存器中的個別複數對,而依序每一者形成第三輸入至每一個別CFMA單元。旋轉參數224(可選地在指令中指定)為2位元控制值,改變操作如下(僅展示第一對,其中(c1,c0)為操作前的累積器值):
Figure 107106120-A0305-02-0023-1
第8圖展示根據一個實施例的方法所採用的一序列步驟。流程始於步驟250,其中將資料載入(預備)指令解碼且在步驟260產生對應控制訊號。接著,控制訊號在步驟270引發指定的資料群組自記憶體的指令指定位置載入(見例如第2及3圖的此類範例)且具有控制暫存器指定尺寸。接著,控制訊號進一步在步驟280引發跨指定目標暫存器(在資料載入(預備)指令中指定)的向量寬度複製載入的資料群組。接著,完成資料載入指令的執行。流程進行至步驟290,其中將向量逐元素資料處理指令解碼。接著,在步驟300產生對應控制訊號,且後續在步驟310接著執行該指令中指定的第一暫存器中的每一資料群組中的經索引元素及該指令中指定的第二暫存器的每一資料群組中的每一資料元素之間的向量逐元素指令所指定的操作。
第9A圖示意地圖示根據本技術的不同資料處理指令的執行。第9B圖展示該指令的兩個範例,第一320包括運算碼322、第一暫存器區分符324、第二暫存器區分符326、及(可選地)輸出暫存器區分符328。展示於第9B圖中的第二範例資料處理指令330包括運算碼332、 輸出暫存器區分符334、及累積器暫存器區分符336。參考第9A圖說明該等範例。由資料處理指令所指定的第一及第二來源暫存器展示於第9A圖頂部,每一者子分割成資料元素部分,經群組成通道(lanes)。回應於資料處理指令,資料處理設備(亦即,處於由解碼器電路所產生控制訊號的控制下的處理電路)自第一來源暫存器及第二來源暫存器之每一者擷取一組資料元素。在第9A圖中所展示的範例中,自第一及第二來源暫存器的每一通道擷取一組四個資料元素。該等資料元素在操作單元340、342、344及346匯集配對,經佈置以執行乘法操作。該等乘法操作的結果匯集於加總單元348且最終因而產生的結果值被寫入輸出暫存器的對應通道。換句話說,實現了「內積」操作。第9A圖中通道的標示圖示了以下事實:四個乘法單元340至346及加總單元348僅代表資料處理設備處理電路中所提供的一組該等單元,且對應地重複該等單元以匹配資料處理設備可針對每一暫存器掌控的每一通道。每一暫存器中的通道數量意圖非明確地圖示於第9A圖中,而對應於以下事實:可自由定義通道的數量,取決於資料元素的相對寬度、每一通道中的資料元素的數量、及可取得的暫存器寬度。因此,可見該指令的行為相似於累積器寬度的相同寬度的操作(例如,在32位元寬的通道中的8位元值(如正整數)的範例中,該指令的行為相似於32位元正整數的操作)。然而,每一通道內,替代了執行32x32乘法,考慮以四個分開的8位元值來建立32 位元來源通道,且跨這兩個「最小向量」執行內積操作。接著將結果自累積器值累積進入對應的32位元通道。應理解圖式僅明確描繪單一32位元通道內的操作。以128位元的向量長度為例,指令有效地執行32個操作(16個乘法及16個加法),而比可比較的當代指令密集3至4倍。若實作成架構而允許更長的向量,例如UK的ARM® Limited of Cambridge所提供的可擴展性向量延伸(SVE),該等更長的向量據此增加有效操作計數。進一步應理解:在展示32位元通道寬度的特定範例的同時,許多不同寬度組合(輸入及輸出兩者)為可能的,例如,16位元x16位元->64位元或16位元x16位元->32位元。亦提出「逐元素」形式(如針對運算元之其中一者複製單一32位元通道)。第9A圖中接合輸出暫存器至第二暫存器的虛線箭頭示意地代表以下事實:第二暫存器事實上可為輸出暫存器,而允許執行相關於此暫存器的內容的累積操作。回到第9B圖的考量,注意到此處圖示了兩個分開的指令。一般而言,第一圖示指令可引發實現第9A圖中所圖示的所有操作,但亦提供以下實施例:其中第9B圖中的第一圖示指令僅引發實現乘法及加總操作,且可藉由第二圖示指令來實現採用輸出暫存器中的結果且應用該結果至累積器暫存器的後續累積操作(第二圖示指令特別以此工作為目的)。
第10圖示意地圖示第9B圖中所展示的資料處理指令的執行的實施例中的一些變體。此處,僅為了清 晰圖示,將兩個來源暫存器350及352之每一者中所存取的資料元素的數量減低至兩個。對此,僅提供兩個乘法單元354及356(針對每一通道)及一個加總單元358(針對每一通道)。取決於執行的特定資料處理指令,「內積」操作的結果可寫入指定輸出暫存器360(若指定)或可替代地寫入累積暫存器362(若如此指定)。在後者定義累積暫存器的情況中,可採用此累積暫存器的內容為至加總單元358的額外輸入,使得可實現不斷的累積。
第11圖示意地圖示更複雜的範例,其中兩個128位元的暫存器380及382為用於上述「內積」資料處理操作指令的其中一者的來源暫存器。該等來源暫存器380及382之每一者被處置成四個獨立通道(通道0至3),且取得該等通道的個別內容進入暫時儲存緩衝器384至398,使得來自該兩個來源暫存器的相同通道的個別內容被帶入相鄰的儲存緩衝器。在每一儲存緩衝器內,內容資料元素(在此範例中,每一儲存緩衝器中有四個資料元素)接著提供個別輸入至針對每一通道提供的一組四個乘法單元400、402、404及406。接著饋送該等乘法單元的輸出進入個別加總單元408、410、412及414,且該等加總單元的每一者之輸出被傳送進入累積暫存器416的個別對應通道。累積暫存器416的個別通道提供進入加總單元(累積器)408至414的第二類型的輸入。第12圖展示第11圖的相同基本配置,且實際上相同的子部件以相同參考數字來代表而此處不再贅述。第12圖及第11圖之 間的差異在於:在使用128位元的暫存器380(來源暫存器)的四個通道之每一者的內容的同時,僅使用第二128位元的來源暫存器382的第一通道內容,且此內容被複製至暫時儲存單元386、390、394及398之每一者。此通道由該指令指定,在此範例中,該通道被選擇為(唯一)通道以提供來自來源暫存器382的內容。應理解並不存在與此特定通道(通道0)的顯著關聯,選擇此特定通道以用於此範例圖示,且一樣可指定來源暫存器382的任何其他通道。藉由指令中索引值的設定來執行選擇的通道的規格,例如第4A圖範例指令中所展示。
第13圖展示第11及12圖中所展示的範例上的進一步變體。此處再次重新使用相同子部件,給定相同參考數字,且為了簡短不再贅述。第13圖中所展示相關於第11及12圖的範例之差異在於:來源暫存器380及382之每一者的四個通道本身被處置成兩個資料群組(於此亦稱為「組集(chunks)」,在圖式中標示為組集0及組集1)。此不會影響暫存器380的內容之掌控、暫存器380的四個通道的內容被傳送至暫時儲存單元384、388、392及396的方式,一如既往。然而,此處在資料群組上基於資料群組(基於「逐一組集」)來執行第12圖之範例所導入的單一通道內容的抽取及複製,使得暫存器382的通道0之內容被複製及傳送至暫時儲存緩衝器394及398,同時組集1中的通道2之內容被複製及傳送進入暫時儲存緩衝器386及390。注意可考量將第13圖中所展 示的操作作為第4B圖所更一般圖示的特定範例,其中圖式中由四個處理單元120至126所實現的「操作」於此包括所述的內積操作。再次,應理解並不存在與此圖示範例中所選擇的特定通道的顯著關聯(通道2及0,作為每一組集的「第一」通道),該等通道由指令中的索引值的設定來指定,例如第4A圖範例指令中所展示。最終,注意第13圖中所圖示的資料處理指令的執行可有效地處於資料預備指令的執行之前,如第2及3圖中所展示及上方論述,以便適於預備來源暫存器的內容。
第14圖展示根據一個實施例的方法所採用的一序列步驟,該等步驟係在執行資料處理指令時執行如上方所論述參考第9A至13圖的內積操作。流程始於步驟430,其中將指令解碼且在步驟440產生對應控制訊號。接著,在步驟450,基於逐一通道自該指令中所指定的第一來源暫存器及第二來源暫存器抽取多個資料元素,在步驟460,將來自第一及第二來源暫存器的個別資料元素對在每一通道中相乘,以便執行內積操作的第一部分。接著,在步驟470,將個別乘法器操作的結果相加(再次,基於逐一通道)且加(在此範例中)至累積器值,該累積器值係擷取自該指令中亦指定的輸入累積器暫存器。
第15A圖示意地圖示一些實施例所提供的資料處理指令的執行。第15B圖展示對應的範例指令。該範例指令500包括運算碼502、第一來源暫存器區分符504、第二來源暫存器區分符506、及一組累積暫存器區 分符508。在第15A圖的範例中實作了第一及第二來源暫存器510及512,展示於該圖式頂部,以回應於所抽取資料元素的資料處理指令的執行。自第一來源暫存器510個別抽取所有(四個)資料元素,同時將構成第二來源暫存器512的全部內容的四個資料元素抽取為一區塊。第二來源暫存器512的內容被傳送至四個操作單元的每一者,亦即熔接乘加(FMA)單元514、516、518及520。自第一來源暫存器510抽取的四個資料元素的每一者被傳送至FMA單元514至520的其中一者。由個別控制訊號來控制FMA單元514及520的每一者,如所圖示。據此,第15A圖的範例中的資料處理指令之執行引發資料處理電路(由四個FMA單元來代表)來同時執行四個向量逐元素乘法/累積操作。應注意本技術不限於四個重數,但此已知為針對載入的好的匹配:典型地在該當代處理設備中可得的計算比例。FMA單元的輸出應用至指令中所指定的累積暫存器組的個別暫存器(見第15B圖中的項目508)。此外,該四個累積暫存器522、524、526及528的內容形成對每一FMA單元514至520之每一者的另一輸入,使得在該等暫存器之每一者的內容上實現累積。
第16圖展示第15A圖的範例的範例識圖,代表簡單矩陣乘法範例,其中受試矩陣A及受試矩陣B相乘以產生結果矩陣C。在針對此的預備中,矩陣A的一行(陰影)被載入暫存器v0且矩陣B的一列(陰影)被載入暫存器v2。用於結果矩陣C的累積器被儲存於暫存器v4至v7。 注意儘管將自矩陣A載入的值描繪為一行,該等矩陣明顯可轉置及/或交錯,使得可執行來自每一來源陣列的連續向量載入。注意在此情境中,矩陣乘法為O(n3)操作,因此預備矩陣資料以用於處理的輔助工作為O(n2)操作,因此對足夠大的n而言為微不足道的負擔。對應至所展示範例之指令可代表為FMA4 v4至v7、v2、v0[0-3]。此處FMA4代表此指令的標示(或等效為運算碼),同時v4至v7為累積暫存器組,v2為全部內容所採自的來源暫存器,同時v0為一組資料元素(索引為0至3)所採自的來源暫存器。接著,此指令的執行導致四個操作:v4+=v2*v0[0],v5+=v2*v0[1],v6+=v2*v0[2],及v7+=v2*v0[3],第17圖代表第15A圖中所展示的範例的更簡單版本,其中在此範例中,僅自第一及第二來源暫存器540及542之每一者獲得兩個資料元素。自暫存器542抽取的兩個資料元素被傳送至FMA單元544及546之每一者,同時來自暫存器540的第一資料元素被傳送至FMA單元544且第二資料元素被傳送至FMA單元546。累積暫存器548及550的內容提供至個別FMA單元之每一者的進一步輸入,且累積結果應用至每一個別累積暫存器。相反地,第18圖圖示一範例,其中自該等來源暫存器之每一者抽取更多資料元素,使用自來源暫存器560及562 之每一者所抽取的該等資料元素(在此範例中為八個)。將提供至FMA單元564至578之每一者的暫存器562之全部內容以及來自暫存器560的選擇的個別資料元素提供為另一輸入。乘加操作的結果累積於個別累積暫存器580至594中。
第19圖展示給出在一個範例中執行的一些特定乘法操作的更多細節之範例。此處,兩個來源暫存器v0及v2之每一者被處置成兩個分開的資料群組。暫存器v0的兩個資料群組亦代表暫存器跨選擇的資料元素所複製的部分,在第19圖的範例中,此為每一部分的「第一」資料元素,亦即,個別為元素[0]及[4]。可借助索引在指令中指定選擇的資料元素。因此,在第19圖中所展示的資料操作中的第一步驟中,將暫存器v0的該兩個資料群組的資料元素複製跨每一部分的寬度,如所展示。此後,此提供至四個乘法器600、602、604及606的輸入,同時由暫存器v2的內容來提供另一輸入。接著,執行v2的個別資料元素與v0的個別資料元素之乘法,且將結果應用至目標暫存器v4至v7,其中藉由針對每一累積暫存器的每一資料群組所標示的特定計算,維持子分割成兩個資料群組而進入該四個累積暫存器,如所展示。注意第19圖中所圖示的資料處理指令之執行可有用地處於資料預備指令的執行之前,如第2及3圖中所展示及上方論述,以便適於預備來源暫存器的內容。
第20圖展示一範例,其中將兩個來源暫存器620及622的內容處置為包含兩個獨立通道(通道0及通道1)中的資料元素。在每一通道內,定義出兩個子部分且該內容的此「通道(laning)」在計算期間被維持,亦即,經由FMA單元624、626、628及630,最終進入累積暫存器632及634。
第21圖展示根據一個實施例的方法所採用的在處理資料處理指令時的一序列步驟,如相關於第15A至20圖的範例所述。流程始於步驟650,其中將資料處理指令解碼且在步驟652產生對應控制訊號。接著,在步驟654,自該資料處理指令中所指定的第一來源暫存器抽取N個資料元素,同時在步驟656,將N個資料元素乘上該資料處理指令中所指定的第二來源暫存器的內容。在步驟658,接著將該等乘法器操作的N個結果值應用至該資料處理指令中所指定的N個個別累積暫存器的內容。應理解:按照如相關於第21圖所述的前述指令執行及等效的如相關於第14圖所述的指令執行,可有用的處於資料預備指令的執行之前,如第2及3圖中所展示及上方論述,以便適於預備來源暫存器的內容。
第22圖圖示可使用的虛擬機器實作。在上述實施例一般就用於操作支援有關技術的特定處理硬體的設備及方法來實作本技術的同時,亦可能提供稱為硬體裝置的虛擬機器實作。該等虛擬機器實作運行於主機處理器730上以支援虛擬機器程式710,主機處理器730通常運 行主機作業系統720。此可需要提供更強效的處理器以便支援以合理速度執行的虛擬機器實作,但在某些情況下該方法可為有理由的,例如在想要運行原產於另一處理器的程式碼以用於相容性或重新使用之原因時。虛擬機器程式710提供應用程式介面至應用程式700,與真實硬體所提供的應用程式介面相同(該真實硬體為虛擬機器程式710所模型化的裝置)。因此,可在應用程式700內使用虛擬機器程式710執行包含上方論述的處理器狀態檢查指令的一個或更多個範例的程式指令,以模型化與虛擬機器硬體的介面。
綜上所述,提供了一種資料處理設備、一種操作資料處理設備的方法、一種非暫態電腦可讀式儲存媒體、及一種指令。該指令指定第一來源暫存器、第二來源暫存器、及索引。回應於該指令而產生控制訊號,引發處理電路執行相關於第一來源暫存器及第二來源暫存器中的每一資料群組的資料處理操作,以產生個別結果資料群組而形成資料處理操作的結果。第一來源暫存器及第二來源暫存器之每一者具有一尺寸,該尺寸是資料群組的預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素。針對每一資料群組的資料處理操作的運算元為在第一來源暫存器的資料群組中藉由索引來識別的一選擇的資料元素,及第二來源暫存器的資料群組中的每一資料元素。用於向量逐元素操作的技術,在暫存器寬度成長時為易擴展的。
在本申請案中,使用用語「經配置以」或「經佈置以」意指設備的元件具有一配置能夠實現所定義的操作。在此情境中,「配置」意指硬體或軟體的內部連接的佈置或方式。例如,設備可具有專用硬體以提供所定義的操作,或處理器或其他處理裝置可經程式化以執行該功能。「經配置以」或「經佈置以」並非暗示設備元件需要以任何方式改變以便提供所定義的操作。
儘管於此參考所附圖式詳細描述圖示的實施例,應理解本發明不限於該等精確的實施例,且發明所屬領域具有通常知識者於此可造成多種改變、增加及修改,而不遠離本發明之範圍,如所附請求項所定義。例如,附屬請求項的特徵可進行與獨立請求項的特徵之多種組合,而不遠離本發明之範圍。
200:指令
202:運算碼
204:第一暫存器區分符
206:第二暫存器區分符
208:中間索引值
210:結果暫存器區分符

Claims (24)

  1. 一種資料處理設備,包括:暫存器儲存電路,該暫存器儲存電路具有複數個暫存器;解碼器電路,該解碼器電路回應於一資料處理指令以產生控制訊號,該資料處理指令在該複數個暫存器中指定:一第一來源暫存器、一第二來源暫存器、及一索引;其中該第一來源暫存器及該第二來源暫存器之每一者具有一尺寸,該尺寸是一資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及處理電路,該處理電路回應於該等控制訊號以執行相關於該第一來源暫存器及該第二來源暫存器中的每一該資料群組的一資料處理操作,以產生個別結果資料群組而形成該資料處理操作的一結果;其中針對每一該資料群組的該資料處理操作的運算元(operands)為在該第一來源暫存器的該資料群組中藉由該索引來識別的一選擇的資料元素,及該第二來源暫存器的該資料群組中的每一資料元素,其中該第一來源暫存器的每一該資料群組是一受試資料群組項目的一複製。
  2. 如請求項1所述之資料處理設備,其中該處理電路包括資料元素操控電路,該資料元素操控電路回應於該等控制訊號以供應該選擇的資料元素的多個實體(instances)至多個資料操作電路,其中每一資料操作電路回應於該等控制訊號以執行相關於該第一來源暫存器及該第二來源暫存器中的一個別資料群組的該資料處理操作。
  3. 如請求項1所述之資料處理設備,其中該解碼器電路回應於一資料預備指令以產生進一步控制訊號,該資料預備指令指定一記憶體位置及一目標暫存器;且其中該處理電路回應於該等進一步控制訊號以自該記憶體位置擷取具有該預先定義尺寸的該受試資料群組項目,及藉由該受試資料群組項目的複製來填滿該目標暫存器。
  4. 如請求項3所述之資料處理設備,其中該目標暫存器為該第一來源暫存器。
  5. 如請求項1所述之資料處理設備,其中該暫存器儲存電路包括一控制暫存器以儲存該正整數倍數的一指示。
  6. 如請求項5所述之資料處理設備,其中該解碼器電路回應於一控制指令以修改該正整數倍數的該 指示上至用於該資料處理設備的一預先定義最大值。
  7. 如請求項1所述之資料處理設備,其中該資料處理指令進一步指定該複數個暫存器中的一結果暫存器;且該處理電路進一步回應於該等控制訊號以將該資料處理操作的該結果應用至該結果暫存器。
  8. 如請求項7所述之資料處理設備,其中該處理電路回應於該等控制訊號以儲存該資料處理操作的該結果於該結果暫存器中。
  9. 如請求項1所述之資料處理設備,其中該處理電路回應於該等控制訊號以將該資料處理操作的該結果應用至該第二來源暫存器。
  10. 如請求項1所述之資料處理設備,其中該資料處理指令進一步指定該複數個暫存器中的至少一個進一步來源暫存器;其中該處理電路回應於該等控制訊號以執行進一步相關於該至少一個進一步來源暫存器中的每一該資料群組的該資料處理操作,以產生該個別結果資料群組而形成該資料處理操作的該結果;及其中針對每一該資料群組的該資料處理操作的運算元進一步包括該至少一個進一步來源暫存器的該資料群組中的每一資料元素。
  11. 如請求項10所述之資料處理設備,其中該處理電路回應於該等控制訊號以累積該資料處理操作的該結果與該至少一個進一步來源暫存器中的先前內容。
  12. 如請求項1所述之資料處理設備,其中該資料處理操作為一算數操作。
  13. 如請求項12所述之資料處理設備,其中該資料處理操作為一乘法操作。
  14. 如請求項12所述之資料處理設備,其中該資料處理操作為一內積操作,包括:自該第一來源暫存器及該第二來源暫存器之每一者抽取至少一第一資料元素及一第二資料元素;執行將至少第一資料元素對及第二資料元素對相乘的乘法操作;及將該等乘法操作的結果加總。
  15. 如請求項14所述之資料處理設備,其中該等乘法操作包括第一資料元素對、第二資料元素對、第三資料元素對及第四資料元素對的相乘。
  16. 如請求項14所述之資料處理設備,其中該資料處理指令進一步指定該複數個暫存器中的一累積暫存器,且該資料處理操作為一內積及累積操作,進一步包括: 自該累積器暫存器載入一累積器值;將該等乘法操作的該等結果與該累積器值加總;及儲存該加總的一結果至該累積器暫存器。
  17. 如請求項12所述之資料處理設備,其中該資料處理操作為一乘法累積(multiply-accumulate)操作。
  18. 如請求項17所述之資料處理設備,其中該第一來源暫存器及該第二來源暫存器中的每一該資料群組中的該資料元素為代表一複數(complex number)的一對資料值,且該資料處理操作為複數的一乘法累積。
  19. 如請求項18所述之資料處理設備,其中該資料處理指令進一步指定一旋轉參數,其中該處理電路回應於該旋轉參數以使用經受該資料處理操作的該等資料值及該等資料值的正負號的一選擇的排序來執行複數的該乘法累積。
  20. 如請求項1所述之資料處理設備,其中該資料處理操作為一邏輯操作。
  21. 一種資料處理方法,包括以下步驟:解碼一資料處理指令以產生控制訊號,該資料處理指令在複數個暫存器中指定:一第一來源暫存器、一第二來源暫存器、及一索引; 其中該第一來源暫存器及該第二來源暫存器之每一者具有一尺寸,該尺寸是一資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及回應於該等控制訊號,執行相關於該第一來源暫存器及該第二來源暫存器中的每一該資料群組的一資料處理操作,以產生個別結果資料群組而形成該資料處理操作的一結果;其中針對每一該資料群組的該資料處理操作的運算元(operands)為在該第一來源暫存器的該資料群組中藉由該索引來識別的一選擇的資料元素,及該第二來源暫存器的該資料群組中的每一資料元素,其中該第一來源暫存器的每一該資料群組是一受試資料群組項目的一複製。
  22. 一種電腦可讀式儲存媒體,以一非暫態方式儲存於一程式中,包括至少一個資料處理指令,在藉由一資料處理設備執行時,引發以下步驟:回應於該資料處理指令,產生控制訊號,該資料處理指令在複數個暫存器中指定:一第一來源暫存器、一第二來源暫存器、及一索引;其中該第一來源暫存器及該第二來源暫存器之每一者具有一尺寸,該尺寸是一資料群組的一預先定義尺 寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及回應於該等控制訊號,執行相關於該第一來源暫存器及該第二來源暫存器中的每一該資料群組的一資料處理操作,以產生個別結果資料群組而形成該資料處理操作的一結果;其中針對每一該資料群組的該資料處理操作的運算元(operands)為在該第一來源暫存器的該資料群組中藉由該索引來識別的一選擇的資料元素,及該第二來源暫存器的該資料群組中的每一資料元素,其中該第一來源暫存器的每一該資料群組是一受試資料群組項目的一複製。
  23. 一種資料處理設備,包括:用於在複數個暫存器中儲存資料的構件;用於解碼一資料處理指令以產生控制訊號的構件,該資料處理指令在用於儲存資料的該等構件中指定:一第一來源暫存器、一第二來源暫存器、及一索引;其中該第一來源暫存器及該第二來源暫存器之每一者具有一尺寸,該尺寸是一資料群組的一預先定義尺寸的至少兩倍的一正整數倍數,且每一資料群組包括複數個資料元素;及用於回應於該等控制訊號而執行相關於該第一來源 暫存器及該第二來源暫存器中的每一該資料群組的一資料處理操作的構件,以產生個別結果資料群組而形成該資料處理操作的一結果;其中針對每一該資料群組的該資料處理操作的運算元(operands)為在該第一來源暫存器的該資料群組中藉由該索引來識別的一選擇的資料元素,及該第二來源暫存器的該資料群組中的每一資料元素,其中該第一來源暫存器的每一該資料群組是一受試資料群組項目的一複製。
  24. 一種虛擬機器,由在一資料處理設備上執行一電腦程式來提供該虛擬機器,該虛擬機器提供對應於請求項1所述之該資料處理設備的一指令執行環境。
TW107106120A 2017-02-23 2018-02-23 用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作 TWI780116B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GR20170100081 2017-02-23
??20170100081 2017-02-23
GR20170100081 2017-02-23

Publications (2)

Publication Number Publication Date
TW201832071A TW201832071A (zh) 2018-09-01
TWI780116B true TWI780116B (zh) 2022-10-11

Family

ID=61188842

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107106120A TWI780116B (zh) 2017-02-23 2018-02-23 用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作

Country Status (8)

Country Link
US (1) US11327752B2 (zh)
EP (1) EP3586228B1 (zh)
JP (1) JP7148526B2 (zh)
KR (1) KR102584031B1 (zh)
CN (1) CN110312993B (zh)
IL (1) IL267998B2 (zh)
TW (1) TWI780116B (zh)
WO (1) WO2018154273A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990396B2 (en) * 2018-09-27 2021-04-27 Intel Corporation Systems for performing instructions to quickly convert and use tiles as 1D vectors
US10963256B2 (en) * 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
CN111198670B (zh) * 2018-11-20 2021-01-29 华为技术有限公司 执行矩阵乘法运算的方法、电路及soc
US20210334072A1 (en) * 2020-04-22 2021-10-28 Facebook, Inc. Mapping convolution to connected processing elements using distributed pipelined separable convolution operations
US11263291B2 (en) * 2020-06-26 2022-03-01 Intel Corporation Systems and methods for combining low-mantissa units to achieve and exceed FP64 emulation of matrix multiplication
US11972230B2 (en) 2020-06-27 2024-04-30 Intel Corporation Matrix transpose and multiply

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097391A1 (en) * 2001-11-21 2003-05-22 Ashley Saulsbury Methods and apparatus for performing parallel integer multiply accumulate operations
US20050125631A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data element size control within parallel lanes of processing
JP2005174292A (ja) * 2003-12-09 2005-06-30 Arm Ltd データシフト操作
GB2458665A (en) * 2008-03-26 2009-09-30 Advanced Risc Mach Ltd Polynomial divider for the GF(2) field in which the coefficient of the highest degree term has a value of one and is not stored in a register

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0589159A (ja) 1992-01-10 1993-04-09 Hitachi Ltd データ処理システム
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
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
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
US20080071851A1 (en) 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
GB2474901B (en) * 2009-10-30 2015-01-07 Advanced Risc Mach Ltd Apparatus and method for performing multiply-accumulate operations
PL3422178T3 (pl) 2011-04-01 2023-06-26 Intel Corporation Przyjazny dla wektorów format instrukcji i jego wykonanie
EP2584460A1 (en) 2011-10-20 2013-04-24 ST-Ericsson SA Vector processing system comprising a replicating subsystem and method
CN104067224B (zh) * 2011-12-23 2017-05-17 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行
US10055225B2 (en) * 2011-12-23 2018-08-21 Intel Corporation Multi-register scatter instruction
US9336000B2 (en) * 2011-12-23 2016-05-10 Intel Corporation Instruction execution unit that broadcasts data values at different levels of granularity
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
EP3001306A1 (en) * 2014-09-25 2016-03-30 Intel Corporation Bit group interleave processors, methods, systems, and instructions
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US20160179523A1 (en) 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10503502B2 (en) * 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
US11216720B2 (en) * 2015-10-08 2022-01-04 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that manages power consumption based on memory accesses per period
US11029949B2 (en) * 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
US10353860B2 (en) * 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
US10565494B2 (en) * 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
KR102425668B1 (ko) * 2017-02-23 2022-07-28 에이알엠 리미티드 데이터 처리장치에서의 곱셈-누적
GB2560159B (en) * 2017-02-23 2019-12-25 Advanced Risc Mach Ltd Widening arithmetic in a data processing apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097391A1 (en) * 2001-11-21 2003-05-22 Ashley Saulsbury Methods and apparatus for performing parallel integer multiply accumulate operations
US20050125631A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data element size control within parallel lanes of processing
JP2005174292A (ja) * 2003-12-09 2005-06-30 Arm Ltd データシフト操作
GB2458665A (en) * 2008-03-26 2009-09-30 Advanced Risc Mach Ltd Polynomial divider for the GF(2) field in which the coefficient of the highest degree term has a value of one and is not stored in a register

Also Published As

Publication number Publication date
JP7148526B2 (ja) 2022-10-05
TW201832071A (zh) 2018-09-01
KR102584031B1 (ko) 2023-10-04
CN110312993A (zh) 2019-10-08
US11327752B2 (en) 2022-05-10
IL267998A (en) 2019-09-26
US20190377573A1 (en) 2019-12-12
WO2018154273A1 (en) 2018-08-30
IL267998B2 (en) 2023-12-01
IL267998B1 (en) 2023-08-01
EP3586228B1 (en) 2023-03-29
CN110312993B (zh) 2024-04-19
EP3586228A1 (en) 2020-01-01
JP2020508514A (ja) 2020-03-19
KR20190119075A (ko) 2019-10-21

Similar Documents

Publication Publication Date Title
EP3586227B1 (en) Widening arithmetic in a data processing apparatus
TWI780116B (zh) 用於資料處理設備、方法、電腦可讀式儲存媒體及虛擬機器的向量逐元素操作
US20220291923A1 (en) Register-based matrix multiplication
EP3586226B1 (en) Multiply-accumulation in a data processing apparatus
TWI773783B (zh) 用於基於暫存器的複數處理的設備、方法、積體電路、電腦程式及電腦可讀取儲存媒體
EP3655852B1 (en) Vector interleaving in a data processing apparatus
GR20170200090U (el) Λειτουργιες στοιχειου κατα διανυσμα σε μια διαταξη επεξεργασιας δεδομενων
GR20170200089U (el) Πολλαπλασιασμος-συσσωρευση σε μια διαταξη επεξεργασιας δεδομενων

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent