TW202305588A - 用於向量組合指令之處理設備、方法、及電腦程式 - Google Patents
用於向量組合指令之處理設備、方法、及電腦程式 Download PDFInfo
- Publication number
- TW202305588A TW202305588A TW111125090A TW111125090A TW202305588A TW 202305588 A TW202305588 A TW 202305588A TW 111125090 A TW111125090 A TW 111125090A TW 111125090 A TW111125090 A TW 111125090A TW 202305588 A TW202305588 A TW 202305588A
- Authority
- TW
- Taiwan
- Prior art keywords
- source
- data element
- elements
- registers
- data elements
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 565
- 238000012545 processing Methods 0.000 title claims abstract description 206
- 238000000034 method Methods 0.000 title claims abstract description 15
- 238000004590 computer program Methods 0.000 title claims abstract description 11
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000009825 accumulation Methods 0.000 claims description 24
- 230000008602 contraction Effects 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 description 26
- 238000007792 addition Methods 0.000 description 21
- 238000013459 approach Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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
-
- 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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
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)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
提供一種處理設備、方法、及電腦程式。該設備包含:解碼電路系統以解碼指令;及處理電路系統以施加由該等指令指定的向量處理操作。該解碼電路系統經組態以回應於指定各包含在複數個資料元素位置上的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器之複數個來源向量暫存器的一向量組合指令而導致該處理電路系統對各資料元素位置執行:從各來源向量暫存器的該資料元素位置擷取第一來源資料元素;從該一或多個進一步來源向量暫存器擷取第二來源資料元素;藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而產生一結果資料元素;及將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。
Description
無
無
處理設備可具備處理電路系統以執行向量處理操作。此類操作可涉及使用經設計以實現一或多個指令的有效率處理的處理電路系統對向量暫存器的元素的操作。
根據一些實例組態,提供處理設備,其包含:解碼電路系統,用以解碼指令;及處理電路系統,用以選擇性地將由該等指令指定的向量處理操作施加至輸入資料向量,該等輸入資料向量包含在該等輸入資料向量中的各別位置的複數個輸入資料項,其中該解碼電路系統經組態以回應於指定各包含在複數個資料元素位置上的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器之複數個來源向量暫存器的一向量組合指令而產生控制信號以導致該處理電路系統對該複數個資料元素位置的各資料元素位置執行:從各來源向量暫存器的該資料元素位置擷取第一來源資料元素;從該一或多個進一步來源向量暫存器提取第二來源資料元素;執行組合操作以產生一結果資料元素,其中該結果資料元素係藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而計算;及將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。
根據其他實例組態,提供一種用於操作一處理設備的方法,該處理設備包含:解碼電路系統,用以解碼指令;及處理電路系統,用以選擇性地將由該等指令指定的向量處理操作施加至輸入資料向量,該等輸入資料向量包含在該等輸入資料向量中的各別位置的複數個輸入資料項,該方法包含:使用該解碼電路系統,回應於指定各包含在複數個資料元素位置中的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器之複數個來源向量暫存器的一向量組合指令而產生控制信號以導致該處理電路系統對該複數個資料元素位置的各資料元素位置執行下列步驟:從各來源向量暫存器的該資料元素位置擷取第一來源資料元素;從該一或多個進一步來源向量暫存器擷取第二來源資料元素;執行組合操作以產生一結果資料元素,其中該結果資料元素係藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而計算;及將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。
根據其他實例組態,提供一種用於控制一主機處理設備以提供一指令執行環境的電腦程式,該電腦程式包含:解碼邏輯,用以解碼指令;及處理邏輯,用以選擇性地將由該等指令指定的向量處理操作施加至輸入資料向量,該等輸入資料向量包含在該等輸入資料向量中的各別位置的複數個輸入資料項,其中該解碼邏輯經組態以回應於指定各包含在複數個資料元素位置上的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器之複數個來源向量暫存器的一向量組合指令而產生控制信號以導致該處理邏輯對該複數個資料元素位置的各資料元素位置執行:從各來源向量暫存器的該資料元素位置擷取第一來源資料元素;從該一或多個進一步來源向量暫存器擷取第二來源資料元素;執行組合操作以產生一結果資料元素,其中該結果資料元素係藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而計算;及將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。
一些實例組態提供一種處理設備,其包含:解碼電路系統,用以解碼指令;及處理電路系統,用以選擇性地將由該等指令指定的向量處理操作施加至輸入資料向量,該等輸入資料向量包含在該等輸入資料向量中的各別位置的複數個輸入資料項。該解碼電路系統經組態以回應於指定各包含在複數個資料元素位置上的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器之複數個來源向量暫存器的一向量組合指令而產生控制信號。該處理設備經組態使得該等控制信號導致該處理電路系統對該複數個資料元素位置的各資料元素位置執行:從各來源向量暫存器的該資料元素位置擷取第一來源資料元素;從該一或多個進一步來源向量暫存器擷取第二來源資料元素;執行組合操作以產生一結果資料元素,其中該結果資料元素係藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而計算;及將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。
處理設備可具備處理電路系統以對輸入資料向量執行資料處理操作。輸入資料向量具有在該資料向量內的不同位置的複數個資料元素。一些處理設備經組態以執行算術或邏輯操作以組合來自輸入資料向量的元素以產生結果資料元素以儲存在結果資料向量中。本發明人已了解到常有在特定類型的計算期間重複地執行特定操作的期望。儘管此等操作可藉由執行使用通用處理電路系統執行的許多現有指令而提供,例如,藉由一次在一個來源元素上操作,此方法可在效能上具有顯著衝擊。因此,藉由提供具有經定制以回應單一向量組合指令之特定電路系統的處理電路系統,可提供特別有效率的處理設備。
為此,本組態經組態以回應向量組合指令。向量組合指令係將可用的完整指令集提供給程式設計師的指令集架構之與該處理電路系統相互作用的部分。指令集架構的指令係由採取行動以解譯指令集架構之指令以控制該處理電路系統回應該等指令的解碼電路系統解碼。各向量組合指令指定複數個(亦即,二或更多個)來源向量暫存器。複數個來源向量暫存器之各者係由儲存在複數個資料元素位置上的複數個資料元素組成。不同尺寸的資料元素可根據特定組態提供並可基於該特定組態彈性地調整。在一些實例組態中,向量暫存器係512位元向量暫存器,其可,例如,經組態為8位元尺寸的64個資料元素、16位元尺寸的32個資料元素、32位元尺寸的16個資料元素、64位元尺寸的8個資料元素、128位元尺寸的4個資料元素、或256位元尺寸的2個資料元素。在其他實例組態中,向量暫存器係256位元向量暫存器,其可,例如,經組態為:16位元尺寸的16個資料元素、8位元尺寸的32個資料元素、32位元尺寸的8個資料元素、或64位元尺寸的4個資料元素。所屬技術領域中具有通常知識者將輕易明瞭此等尺寸僅提供為實例,且其他向量暫存器尺寸可併入本文描述的組態中。向量組合指令亦指定一或多個進一步來源向量暫存器,該一或多個進一步來源向量暫存器係在該複數個來源向量暫存器之外指定的。一或多個進一步來源向量暫存器係各由在其他複數個資料元素位置上的其他複數個資料元素組成。向量組合指令亦指定一或多個目的地暫存器,該一或多個目的地暫存器由在複數個目的地資料元素位置上的複數個目的地資料元素組成。一或多個進一步來源向量暫存器之各者及一或多個目的地暫存器之各者可經組態以具有相同數目之與複數個來源暫存器的尺寸相同的資料元素。替代地,一或多個進一步來源向量暫存器及/或一或多個目的地暫存器可經組態以保持不同數目之與複數個來源暫存器的尺寸不同的資料元素。
解碼電路系統回應於向量組合指令而導致處理電路系統對複數個資料元素位置的各資料元素位置執行一系列步驟。例如,若各來源暫存器保持N個資料元素,解碼電路系統導致處理電路系統對資料元素位置0、1、2、…、N-2、N-1執行步驟。儘管步驟循序地呈現,此僅用於解釋目的,且任何以下步驟可以不同於指定順序的順序或以多個步驟平行地執行的方式執行。解碼電路系統導致處理電路系統擷取一組第一來源資料元素。第一來源資料元素之各者係從各來源向量暫存器的資料元素位置擷取。解碼電路系統亦導致處理電路系統從一或多個進一步來源向量暫存器擷取第二組來源資料元素。擷取第一來源資料元素的元素使得各資料元素係從複數個來源向量暫存器之不同者的相同資料元素位置擷取。第二來源資料元素之資料元素的各者係從一或多個進一步來源向量暫存器擷取。然而,進一步來源向量暫存器內之自其擷取第二來源資料元素的位置不受如此限制且可基於所實施的組態彈性地判定。解碼電路系統亦經組態以控制處理電路系統執行組合操作以產生結果資料元素。結果資料元素係藉由組合來自第一來源資料元素及第二來源資料元素的元素而計算,使得結果資料元素取決於第一來源資料元素及第二來源資料元素的各資料元素。以此方式,各結果資料元素取決於從複數個來源向量暫存器之各者擷取的資料元素且取決於從一或多個進一步來源向量暫存器擷取的資料元素。解碼電路系統亦控制處理電路系統以將結果資料元素儲存至一或多個目的地暫存器的資料處理元素位置。以此方式,所產生之結果資料元素的數目等於複數個來源向量暫存器之各者中的元素的數目。
組合操作不受限制且組合操作的各種組態將於下文討論。在一些實例組態中,該等組合操作包含:來源組合操作,用以產生中間資料元素,各中間資料元素係藉由組合該等第一來源資料元素的一對應第一來源資料元素與該等第二來源資料元素產生;中間組合操作,以組合該等中間資料元素以產生該結果資料元素。用語來源組合操作(source combining operation)及中間組合操作(intermediate combining operation)係用以區分所執行的組合操作(例如,以區分所執行的數學或邏輯操作)。所屬技術領域中具有通常知識者將理解此等操作可由電路系統的相同功能區塊平行地執行或由電路系統之相關於彼此循序操作的循序區塊執行。來源組合操作組合第一來源資料元素的各對應第一來源資料元素與第二來源資料元素以產生中間資料元素。因此,各中間資料元素取決於對應第一來源資料元素及第二來源資料元素的一或多個元素。組合操作可使用第二來源資料元素的各第二來源資料元素,或僅使用第二來源資料元素的子集。結果,中間資料元素的數目與第一來源資料元素的數目相同。組合操作亦包含藉由將中間資料元素之各者組合在一起而產生結果資料元素的中間組合操作。因此,單一結果資料元素係藉由中間組合操作產生(雖然此對複數個來源向量暫存器中的複數個資料元素位置的各資料元素位置循序地或平行地重複。
在一些組態中,該等來源組合操作係乘法操作;且組合該等第一來源資料元素的該對應第一來源資料元素與該等第二來源資料元素包含將該對應第一來源資料元素乘以該等第二來源資料元素的一對應第二來源資料元素以產生該等中間資料元素。中間資料元素因此包含已取自複數個來源向量之各者的相同位置之已乘以一或多個進一步來源向量暫存器之元素的元素。在此等組態中,中間資料元素中的元素可藉由以下方程式表達:
(1)
亦即,
I
j,i= S
j,ix F
j,i ,其中I
j,i係中間資料元素之對應於從複數個來源向量暫存器之各者的第j個位置擷取之資料元素的第i個元素、S
j,i係複數個來源向量之第i個來源向量的第j個元素、且F
j,i係經擷取的第二來源資料元素之用於涉及從複數個來源向量的第j個資料元素位置擷取的第一來源資料元素的組合操作的第i個元素。在一些組態中,對於j的所有值,資料元素F
j,i係相同的資料元素。在替代組態中,對於j的各值,元素F
j,i係從一或多個進一步來源向量暫存器的不同部分擷取的不同資料元素。在此類組態中,一或多個進一步來源向量暫存器包含一組資料元素,該組資料元素回應於向量組合指令而各乘以複數個來源向量暫存器的一者。
在一些替代組態中,該等來源組合操作係擴縮操作,該等擴縮操作包含:從該等第二來源資料元素擷取一或多個第一擴縮值;從該等第二來源資料元素擷取一或多個第二擴縮值;執行一加法操作及一減法操作的一者,該加法操作將該一或多個第一擴縮值的一對應第一擴縮值加至該等第一來源資料元素的一對應第一來源資料元素以產生對應中間經擴縮元素,該減法操作從該對應第一來源資料元素減去該對應第一擴縮值以產生該等對應中間經擴縮元素;將該等對應中間經擴縮元素之各者乘以該一或多個第二擴縮的一對應第二擴縮值以產生該等中間資料元素的對應中間資料元素。中間資料元素因此對應於第一來源資料元素(其從第一複數個來源向量暫存器擷取)之基於儲存在第二來源資料元素(且從一或多個進一步來源向量暫存器擷取)中之資訊的擴縮。在此等替代組態中,中間資料元素中的元素可藉由以下方程式表達:
, (2)
亦即,
I
i,j= (S
j,i± F1
i )
F2
i ,其中F1
i及F2
i分別係從第二來源資料元素擷取的一或多個第一擴縮值及從第二來源資料元素擷取的一或多個第二擴縮值。對應於複數個來源向量的第i個來源向量的第j個元素的第一來源資料值S
i,j通過對應第一擴縮值(亦即,待用於從第i個來源向量暫存器擷取的第一來源資料元素的第一擴縮值)的加法或減法,且接著乘以對應第二擴縮值(亦即,待用於從第i個來源向量暫存器擷取的第一來源資料元素的第二擴縮值)而修改。中間資料元素因此對應於第二來源資料元素的經擴縮版本。此類組態可用以使資料元素能以經壓縮形式儲存在複數個來源暫存器中,且組合指令可用以在施加進一步操作(在此情形中,中間組合操作)之前首先解壓縮資料元素。在一些組態中,一或多個第一擴縮值可係對應於複數個來源向量暫存器之各者的單一第一擴縮值,且第二擴縮值可係對應於複數個來源向量暫存器之各者的單一第二擴縮值。在此類組態中,中間資料元素可使用以下方程式表達:
, (3)
亦即,
I
i,j= (S
j,i± F1
)
F2,其中F1及F2分別係單一第一擴縮值及單一第二擴縮值。
中間組合操作可不同地定義,且在一些組態中,可如方程式(1)中所闡述地與來源組合操作組合,或在其他組態中,可如方程式(2)或方程式(3)中所闡述地與來源組合操作組合。在一些實例組態中,該等中間組合操作係累加操作;且組合該等中間資料元素以產生該結果資料元素包含累加該等中間資料元素。中間組合操作因此對複數個來源向量暫存器的複數個資料元素位置的各資料元素位置取得所有的中間資料元素並累加其等以產生單一結果資料元素。在數學上,累加操作可表達為:
(4)
亦即,
R
j =在所有
i (I
j,i)
上的總和,其中R
j係一或多個目的地向量暫存器的第j個元素且I
j,i係中間資料元素之對應於從複數個來源向量暫存器之各者的第j個位置擷取之資料元素的第i個元素,如藉由方程式(1)至方程式(3)之任何者所描述的。應認知到,在I
j,i係根據方程式(1)描述的情況下,組合操作包含一系列內積操作,其中第一來源資料元素的各者與第二來源資料元素內積。因此,向量組合操作充當第一組向量與一或多個進一步來源向量暫存器中所含有的第二向量之間的複數內積操作,其中第一組向量之各者包含來自複數個來源向量暫存器的相同位置的資料元素。因此向量組合指令可用以執行矩陣-向量乘法操作,其中複數個輸入向量暫存器之各者包含矩陣的一行的元素,且一或多個進一步來源向量暫存器包含向量的元素。
在一些實例組態中,該等中間資料元素係第一中間資料元素,且該等中間組合操作包含:第一中間組合操作,以組合該等第一中間資料元素以產生一第二中間資料元素;及第二中間組合操作,以組合該第二中間資料元素與從該一或多個目的地暫存器的該資料元素位置擷取的一目的地資料元素。以此方式,目的地暫存器可用以儲存一組其他資料元素,該組資料元素將與複數個來源向量暫存器及一或多個進一步來源向量暫存器組合。此在回應向量組合指令時對處理設備提供經改善彈性。
第一中間組合操作及第二中間組合操作可不同地定義。在一些實例組態中,該等第一中間組合操作係累加操作;且組合該等第一中間資料元素以產生該第二中間資料元素包含累加該等第一中間元素。在此類組態中,第二中間資料元素可表達為:
(5)
亦即,
I2
j =在所有
i (I
j,i)
上的總和,其中I2
j係第二中間資料元素之對應於從複數個來源向量暫存器之各者的第j個位置擷取的資料元素的元素、且I
j,i係中間資料元素之對應於從複數個來源向量暫存器之各者的第j個位置擷取的資料元素的第i個元素,如藉由方程式(1)至方程式(3)之任何者所描述的。
第二中間組合操作可不同地定義。在一些實例組態中,第二中間組合操作係遮罩操作以遮罩第二中間資料元素的值、或係乘法操作或擴縮操作的一者以擴縮第二中間資料元素。在一些組態中,該第二中間組合操作係一累加操作;且組合該第二中間資料元素與該目的地資料元素包含累加該第二中間資料元素與該目的地資料元素。在此類組態中,結果資料元素可表達為
(6)
亦即,
R
j= Rj +
在所有
i (I2
j,i)
上的總和,其中應注意術語R
j= R
j+ X
j將解譯成意指值R
j係藉由將R
j的現有值與X
j累加而產生。以此方式,當I2
j,i基於I
j,i定義時,如在方程式(1)中所闡述的,可提供向量組合指令以執行一系列累加內積操作或累加矩陣-向量乘積操作。
對於將組合操作分為第一組合操作及第二組合操作的組態,第一及第二處理操作可循序地或平行地執行。在一些組態中,對於各資料元素位置,第一組合操作的至少一子集與第二組合操作平行地執行。第一組合操作的子集可指各操作的子集,使得各第一組合操作的一部分與第二組合操作的一部分平行地執行。替代地,或額外地,處理電路系統可經配置使得第一組合操作的子集包含與全部第二組合操作平行地執行的全部組合操作的子集。例如,在第一組合操作係乘法操作且第二組合操作係累加操作的組態中,第一及第二組合操作可使用一或多個融合乘法累加電路實施,以與第二組合操作的組合操作平行地執行第一組合操作的乘法操作。以此方式,組合操作可以緊湊且有效率的方式實施在電路系統中。
在一些組態中,該等組合操作包含一內積操作以將該等第一來源資料元素與該等第二來源資料元素的一內積產生為該結果資料元素。在此類組態中,內積操作可使用任何內積電路系統實施。在一些實例組態中,內積操作可分成如上文闡述的第一及第二組合操作,儘管在其他組態中,內積操作可藉由合併用於內積操作之乘法及累加步驟的所有必要電路系統的單一功能電路實行。
一或多個目的地暫存器的結果資料元素可不同地定義,且在一些組態中,分布在一或多個目的地暫存器各處。在一些組態中,結果資料元素的尺寸指定在向量組合指令中。在一些實例組態中,各結果資料元素的一結果資料元素尺寸等於各來源資料元素的一來源資料元素尺寸。在此類組態中,一或多個目的地暫存器係與複數個來源向量暫存器之各者的尺寸相同(位元的數目及資料元素的數目)的單一目的地暫存器。在一些組態中,各結果資料元素的該結果資料元素尺寸大於各來源資料元素的一來源資料元素尺寸。在此類組態中,向量組合指令係加寬指令,以加寬與資料元素關聯之位元的數目,且結果資料元素橫跨複數目的地暫存器散布。
例如,在一些組態中,來源資料元素尺寸係8位元的一者,且結果資料元素尺寸係32位元;及來源資料元素尺寸係16位元,且結果資料元素尺寸係64位元。在一些組態中,該一或多個目的地暫存器之目的地暫存器的一數目係基於該結果資料元素尺寸與該來源資料元素尺寸的一比率判定。在前述結果資料元素尺寸及來源資料元素尺寸組之各者中,結果資料元素尺寸係來源資料元素尺寸的四倍大,且因此,一或多個目的地暫存器包含四個目的地暫存器。以此方式,可能足夠數目的位元提供在一或多個目的地暫存器中,以使組合操作能實行而不損失準確度。
結果元素在目的地暫存器中的分布可不同地定義。在一些實例組態中,該一或多個目的地暫存器經配置以形成一結果陣列,該結果陣列包含等於目的地暫存器之該數目的一列數目,及等於各目的地暫存器中之資料元素的一數目的一行數目;且結果資料元素以列為主的次序配置在該結果陣列中。以此方式,結果元素可配置在一或多個目的地暫存器中,使得該等結果元素採與其等出現在來源暫存器中的順序相同的順序。在一些替代組態中,該一或多個目的地暫存器經配置以形成一結果陣列,該結果陣列包含等於目的地暫存器之該數目的一列數目,及等於各目的地暫存器中之資料元素的一數目的一行數目;且結果資料元素以行為主的次序配置在該結果陣列中。藉由以此方式將結果資料元素配置在一或多個目的地暫存器內,結果資料元素儲存在目的地暫存器內之更接近自其擷取來源資料元素之位置的位置上,且因此可實現更緊密設計。
在一些實例組態中,處理電路系統使用一或多個進一步來源向量暫存器中的所有資料元素。然而,在一些組態中,僅使用一或多個進一步來源向量暫存器之資料元素的子集。來源元素的選擇可硬編碼至資料處理設備中。然而,在一些組態中,該向量組合指令指定該等第二來源資料元素在該一或多個進一步來源向量暫存器中的位置。此提供經改善彈性且可使相同的進一步來源向量暫存器能用於複數向量組合操作。在一些組態中,指定在一或多個進一步來源向量暫存器中的位置對應於一或多個進一步來源向量暫存器內的特定位置。替代地,位置係指在一或多個進一步來源向量暫存器的複數個子區段之各者內的相對位置。此提供對執行重複向量組合操作特別有效率的設備,其中將一或多個進一步來源向量暫存器的不同部分用於各操作,且其中位置係相對於針對操作之目前實例而讀取的位置指定。在一些實例組態中,可將複數個來源向量暫存器、一或多個進一步來源向量暫存器、及一或多個目的地暫存器之各者劃分成塊。例如,暫存器(包括一或多個進一步來源向量暫存器、複數個來源向量暫存器及目的地暫存器)之各者可劃分成四個128位元的塊,且指定在向量組合指令中的位置識別待從128位元之塊的各者內擷取為第二來源資料元素之將相關於複數個來源向量暫存器之各者的128位元的塊使用的一或多個資料元素(例如,藉由複製經識別的一或多個資料元素)。例如,若元素係8位元且從各128位元的塊擷取4個循序資料元素(出自每塊總共16個8位元元素),各塊內有4個位置可選擇。在此情形中,可將相對位置設定成(例如)各128位元之塊內的第三相對位置。在此情形中,將選擇資料元素8至11(亦即,來自第一128位元之塊的第三位置內)並應用在與複數個來源向量暫存器中的資料元素的第一128位元之塊關聯的組合操作中(例如,藉由將從一或多個進一步來源向量暫存器擷取的資料元素8至11複製四次或通過相同的經擷取資料元素的重複使用),來自與第一128位元之塊關聯的組合操作的結果資料元素將接著儲存在一或多個目的地暫存器的第一128位元的塊中。將選擇資料元素24至27(亦即,來自第二128位元之塊的第三位置內)並應用在與複數個來源向量暫存器中的資料元素的第二128位元之塊關聯的組合操作中(例如,藉由將從一或多個進一步來源向量暫存器擷取的資料元素24至27複製四次或通過相同的經擷取資料元素的重複使用),來自與第二128位元之塊關聯的組合操作的結果資料元素將接著儲存在一或多個目的地暫存器的第二128位元的塊中。將選擇資料元素40至43並應用在與複數個來源向量暫存器中的資料元素的第三128位元之塊關聯的組合操作中(例如,藉由將從一或多個進一步來源向量暫存器擷取的資料元素40至43複製四次或通過相同的資料元素的重複使用),來自與第三128位元之塊關聯的組合操作的結果資料元素將接著儲存在一或多個目的地暫存器的第三128位元的塊中。將選擇資料元素56至59並應用在與複數個來源向量暫存器中的資料元素的第四128位元之塊關聯的組合操作中(例如,藉由將從一或多個進一步來源向量暫存器擷取的資料元素56至59複製四次或通過相同的資料元素的重複使用),來自與第四128位元之塊關聯的組合操作的結果資料元素將接著儲存在一或多個目的地暫存器的第四128位元的塊中。所屬技術領域中具有通常知識者將輕易明瞭將128位元尺寸使用為實例且可使用任何的塊尺寸(小於,相同於,或大於一或多個進一步來源向量暫存器的一者的尺寸)。
儘管來源向量暫存器的數目及使用在一或多個進一步來源向量暫存器中的來源資料元素的數目可根據先前描述的組態的任何者不同地定義,在一些實例組態中,該複數個來源向量暫存器包含2個來源向量暫存器且該一或多個進一步來源向量暫存器各包含2個來源資料元素。在其他實例組態中,該複數個來源向量暫存器包含4個來源向量暫存器,且該一或多個進一步來源向量暫存器各包含4個來源資料元素。
各元素的數值格式可不同地定義,且在一些實例組態中,各資料向量的各元素包含下列一者:一正負號整數值;及一無正負號整數值。此外,在一些實例組態中,該進一步向量暫存器的各元素包含下列一者:一正負號整數值;及一無正負號整數值。因此,不同組態規定複數個來源向量暫存器的各資料向量的任何組合且規定進一步向量暫存器。因此,在一些組態中,各資料向量的各元素係正負號整數值,且進一步向量暫存器的各元素係正負號整數值;在進一步組態中,各資料向量的各元素係正負號整數值,且進一步向量暫存器的各元素係無正負號整數值;在進一步組態中,各資料向量的各元素係無正負號整數值,且進一步向量暫存器的各元素係正負號整數值;在進一步實例組態中,各資料向量的各元素係無正負號整數值,且進一步向量暫存器的各元素係無正負號整數值。
在一些實例組態中,處理電路系統經配置以依序產生各元素位置的各結果資料,導致電路佔用區域降低。在其他實例組態中,處理電路系統經組態以平行地產生各資料元素位置的結果資料元素。平行地產生結果資料元素導致具有經改善可擴縮性的向量組合指令的更快速操作。
如所討論的,第二來源資料元素的數目可不同地定義,且可指定為向量組合指令的部分。然而,在一些組態中,從該一或多個進一步來源向量暫存器擷取之第二來源資料元素的一數目等於該複數個來源暫存器中之來源暫存器的一數目。此選項在執行內積操作或矩陣-向量乘積計算時尤其有用。
在一些組態中,目的地暫存器係向量暫存器。然而,在一些組態中,該一或多個目的地暫存器係一或多個塊式暫存器的一或多個水平或垂直塊切片,該一或多個塊式暫存器之各者包含一可垂直地及水平地定址的二維資料元素陣列。在概念上,當向量暫存器係指純量暫存器時,塊式暫存器係指向量暫存器。塊式暫存器提供二維純量資料元素陣列,且對矩陣-向量或矩陣-矩陣計算尤其有效率。各塊式暫存器可在其整體上定址或就塊式暫存器的垂直或水平切片(分別對應於行或列)定址。藉由將塊式暫存器提供為儲存目的地,後續算術或邏輯處理操作可基於結果資料元素而不需要進一步操作以重排序或重配置結果資料元素。更確切地說,適當的列或行(水平或垂直塊切片)可從塊式暫存器選擇。
從一或多個進一步來源向量暫存器擷取第二來源資料元素的方法可不同地定義。在一些組態中,該一或多個進一步來源向量暫存器包含與該複數個來源向量暫存器的數目相同的向量暫存器;及從該一或多個進一步來源向量暫存器擷取該等第二來源資料元素包含從各進一步來源向量暫存器的該資料元素位置擷取該等第二來源資料元素。在此類組態中,一或多個進一步來源向量暫存器係以與複數個來源向量暫存器相同的方式處理。因此,對於各資料元素位置,第一來源資料元素包含複數個來源向量暫存器之各者的1個元素,其中該元素係從複數個來源向量暫存器之各者的相同位置擷取。類似地,對於各資料元素位置,第二來源資料元素包含一或多個來源向量暫存器之各者的1個元素,其中已從一或多個進一步來源向量暫存器之各者擷取的元素已從一或多個進一步來源向量暫存器的相同位置擷取。
在一些替代組態中,從一或多個進一步來源向量暫存器擷取第二來源資料元素包含對各資料元素位置擷取一組相同的來源資料元素。在此類組態中,可能不需要重複地執行從一或多個進一步來源向量暫存器擷取第二來源資料元素的步驟。確切地說,用於在複數個資料元素位置之各資料元素位置上的組合操作的擷取可執行一次。在此類組態中,一或多個進一步來源向量暫存器的數目可不同地定義。在一些組態中,可定義複數個進一步來源向量暫存器。在其他組態中,該一或多個進一步來源向量暫存器包含一單一進一步來源向量暫存器。此方法提供涉及較少向量暫存器的更緊湊實施方案。
現在將參照附圖描述特定實例組態。
圖1示意地繪示可具現本技術的各種實例的處理設備10。設備包含資料處理電路系統12,該資料處理電路系統回應於其執行的一系列指令而對資料項執行資料處理操作。此等指令從資料處理設備具有對其之存取的記憶體14且以所屬技術領域中具有通常知識者所會熟悉的方式檢索,提取電路系統16為此目的提供。此外,將由提取電路系統16檢索的指令傳至指令解碼器電路系統18(其另外稱為解碼電路系統),該指令解碼器電路系統產生經配置以控制處理電路系統12以及一組暫存器20及載入/儲存單元22之組態及操作的各種態樣的控制信號。一般而言,資料處理電路系統12可以管線化方式配置,然而其之特異性不與本技術相關。所屬技術領域中具有通常知識者將熟悉圖1表示的通用組態且其之進一步詳細描述僅出於簡潔之目的而隨其提供。如可見於圖1中的暫存器20各包含用於多個資料元素的儲存器,使得處理電路系統可將資料處理操作施加至指定暫存器內的指定資料元素,或可將資料處理操作施加至指定暫存器內的指定資料元素群組(「向量」)。具體而言,所繪示的資料處理設備係關於向量化資料處理操作的效能,且具體地關於相關於保持在暫存器20中之資料元素的複數處理指令的執行,其之進一步解釋將隨後於下文參考一些特定實施例更詳細地提供。藉由載入/儲存單元22將資料處理電路系統12在執行指令時所需的資料值及產生為該等資料處理指令之結果的資料值寫入至記憶體14及從該記憶體讀取。亦注意到通常可將圖1中的記憶體14視為電腦可讀儲存媒體的實例,本技術的指令一般可在該電腦可讀儲存媒體上儲存為處理電路系統接著執行的一系列預定義指令(「程式」)的部分。然而,處理電路系統可經由網路介面等存取來自各種不同來源(諸如ROM中、ROM中)的此一程式。本揭露描述處理電路系統12可執行的各種新穎指令,且其後的圖式提供此等指令的本質、資料處理電路系統上的變化以支援該等指令之執行等的進一步解釋。
圖2示意地繪示根據一些實例組態之圖1的處理電路系統30的進一步細節。具體而言,處理電路系統30具備複數個來源向量暫存器:來源向量暫存器A 32及來源向量暫存器B 34。處理電路系統30亦具備進一步來源向量暫存器36(在一些組態中,進一步來源向量暫存器可係一或多個進一步來源向量暫存器)。處理電路系統30由解碼電路系統產生的控制信號控制,以執行組合操作40(A)、40(B)、40(C)、40(D)以產生結果資料元素以儲存至一或多個目的地暫存器。組合操作40(A)、40(B)、40(C)、40(D)各對在來源向量暫存器A 32及來源向量暫存器B 34之資料元素位置的一者上的資料元素執行。此外,各組合操作40(A)、40(B)、40(C)、40(D)係基於進一步來源向量暫存器36的元素。具體而言,組合操作40(A)從來源向量暫存器A 32取得作為輸入的元素32(A)、從來源向量暫存器B 34取得作為輸入的元素34(A)、及從進一步來源向量暫存器36取得作為輸入的元素36(C)及36(D)。此等元素藉由組合操作40(A)組合以產生結果資料元素。組合操作40(B)從來源向量暫存器A 32取得作為輸入的元素32(B)、從來源向量暫存器B 34取得作為輸入的元素34(B)、及從進一步來源向量暫存器36取得作為輸入的元素36(C)及36(D)。此等元素藉由組合操作40(B)組合以產生結果資料元素。組合操作40(C)從來源向量暫存器A 32取得作為輸入的元素32(C)、從來源向量暫存器B 34取得作為輸入的元素34(C)、及從進一步來源向量暫存器36取得作為輸入的元素36(C)及36(D)。此等元素藉由組合操作40(C)組合以產生結果資料元素。組合操作40(D)從來源向量暫存器A 32取得作為輸入的元素32(D)、從來源向量暫存器B 34取得作為輸入的元素34(D)、及從進一步來源向量暫存器36取得作為輸入的元素36(C)及36(D)。此等元素藉由組合操作40(D)組合以產生結果資料元素。
圖3示意地繪示根據一些實例組態之處理電路系統48的細節,其中組合操作40包含來源組合操作44、46及中間組合操作42。來源組合操作44、46各將來源向量暫存器A 32或來源向量暫存器B 34的對應元素與進一步來源暫存器36的元素組合。在所繪示的實例中,來源組合操作44、46取得作為輸入之進一步來源暫存器36的二個元素。然而,所屬技術領域中具有通常知識者將理解此僅用於說明目的且來源組合操作44、46可各從進一步來源暫存器取得元素的任何相同或不同的子集。來源組合操作組合從來源向量暫存器A 32、來源向量暫存器B 34、及進一步來源向量暫存器36擷取的資料元素以產生中間資料元素。將中間資料元素饋送至中間組合操作42中,該等中間組合操作之各者產生待儲存在一或多個目的地暫存器中的結果資料元素。
處理電路系統48對來源向量暫存器A 32及來源向量暫存器B 34之各者中的各元素位置執行包含來源組合操作44及46及中間組合操作42的組合操作。具體而言,當元素位置係對應於來源向量暫存器A 32中之資料元素32(A)及來源向量暫存器B 34中之資料元素34(A)的最低有效位置時,來源組合操作44(A)組合來源向量暫存器A 32的資料元素32(A)與來自進一步來源向量暫存器36的資料元素36(C)及36(D)。類似地,來源組合操作46(A)組合來源向量暫存器B 34的資料元素34(A)與來自進一步來源向量暫存器36的資料元素36(D)及36(C)。來源組合操作44(A)及46(A)的輸出產生中間資料元素,該等中間資料元素經饋送至中間組合操作42(A)中以產生待儲存至一或多個目的地暫存器的結果資料元素。
類似地,當元素位置係對應於來源向量暫存器A 32中之資料元素32(B)及來源向量暫存器B 34中之資料元素34(B)的第二最低有效位置時,來源組合操作44(B)組合來源向量暫存器A 32的資料元素32(B)與來自進一步來源向量暫存器36的資料元素36(C)及36(D)。類似地,來源組合操作46(B)組合來源向量暫存器B 34的資料元素34(B)與來自進一步來源向量暫存器36的資料元素36(D)及36(C)。來源組合操作44(B)及46(B)的輸出產生中間資料元素,該等中間資料元素經饋送至中間組合操作42(B)中以產生待儲存至一或多個目的地暫存器的結果資料元素。
類似地,當元素位置係對應於來源向量暫存器A 32中之資料元素32(C)及來源向量暫存器B 34中之資料元素34(C)的第二最高有效位置時,來源組合操作44(C)組合來源向量暫存器A 32的資料元素32(C)與來自進一步來源向量暫存器36的資料元素36(C)及36(D)。類似地,來源組合操作46(C)組合來源向量暫存器B 34的資料元素34(C)與來自進一步來源向量暫存器36的資料元素36(D)及36(C)。來源組合操作44(C)及46(C)的輸出產生中間資料元素,該等中間資料元素經饋送至中間組合操作42(C)中以產生待儲存至一或多個目的地暫存器的結果資料元素。
類似地,當元素位置係對應於來源向量暫存器A 32中之資料元素32(D)及來源向量暫存器B 34中之資料元素34(D)的最高有效位置時,來源組合操作44(D)組合來源向量暫存器A 32的資料元素32(D)與來自進一步來源向量暫存器36的資料元素36(C)及36(D)。類似地,來源組合操作46(D)組合來源向量暫存器B 34的資料元素34(D)與來自進一步來源向量暫存器36的資料元素36(D)及36(C)。來源組合操作44(D)及46(D)的輸出產生中間資料元素,該等中間資料元素經饋送至中間組合操作42(D)中以產生待儲存至一或多個目的地暫存器的結果資料元素。
上文描述的組合操作係藉由分開的組合操作對來源向量暫存器A 32及來源向量暫存器B中的最低有效位置、第二最低有效位置、第二最高有效位置、及最高有效位址的各者執行。然而,所屬技術領域中具有通常知識者將理解可提供單一組組合電路區塊(例如,來源組合元素44(A)及46(A)及單一中間組合操作42(A)),其輸入可,例如,通過一系列解多工器饋送,且輸出中間組合操作44(A)可多工至一或多個目的地暫存器的各結果元素位置中。
圖4A示意地繪示根據本技術的各種組態之經組態以回應於向量組合指令而執行一系列點乘積網路之處理設備50的使用。處理設備50包含解碼電路系統56以解碼指令並提供控制信號至處理電路系統54。處理設備50進一步包含用以儲存資料向量的一系列暫存器52。在所繪示的組態中,資料處理設備50用以執行對應於矩陣-向量乘法的一系列內積操作。具體而言,資料處理設備50係用以計算矩陣58乘以向量60的結果。在數學上,此操作係藉由執行一系列內積而實行,以計算矩陣58的各列與向量60的內積。
將矩陣58儲存在包含來源向量暫存器A 62及來源向量暫存器B 64的複數個來源向量暫存器中,使得矩陣58的第一行儲存在來源向量暫存器A 62中且矩陣58的第二行儲存在來源向量暫存器B 64中。將向量60儲存在單一進一步來源向量暫存器66中。在所繪示的實施例中,將向量60的二個元素儲存為進一步來源向量暫存器66的二個最低有效元素。然而,所屬技術領域中具有通常知識者將理解此僅用於說明目的且進一步來源向量暫存器內的任何位置可互換地使用(且可選地可指定在向量組合指令中)。包含來源向量暫存器A 62及來源向量暫存器B 64的複數個來源向量暫存器及進一步來源向量暫存器係儲存為資料處理設備50之暫存器儲存器中之暫存器52的暫存器。
具有經儲存向量暫存器52的資料處理設備50回應向量組合指令。向量組合指令係由解碼電路系統56接收並導致處理電路系統54對來源向量暫存器的各資料元素位置執行一系列操作。在此情形中,處理電路系統(可選地並行地)執行4個系列的操作,各系列操作用於四個來源向量暫存器位置的一者。在所繪示的實施例中,組合操作包含點乘積指令,或替代地,作為來源組合操作的乘法操作及作為中間組合操作的累加操作以產生結果資料元素。結果資料元素係(例如,如向量組合指令中定義的)來源向量元素的二倍寬,且因此需要二個目的地向量暫存器以提供用於結果資料元素的足夠儲存空間。在此情形中,目的地向量暫存器包含結果向量暫存器A 68及結果向量暫存器B 70,該結果向量暫存器A包含結果資料元素68(A)、68(B),該結果向量暫存器B包含結果資料元素70(A)及70(B)。
解碼電路系統56控制處理電路系統54以藉由分別從來源向量暫存器A 62及來源向量暫存器B擷取第一來源資料元素A
1,1及A
1,2及從進一步來源向量暫存器66擷取第二來源資料元素b
1及b
2而產生結果資料元素68(B)。解碼電路系統56進一步控制處理電路系統54以藉由執行內積操作而組合第一來源資料元素及第二來源資料元素,以產生將計算A
1,1b
1+A
1,2b
2的值儲存於其中的結果資料元素68(B)。因此,此資料元素含有源自矩陣58乘以向量60之結果矩陣72的第一值。
解碼電路系統56控制處理電路系統54以藉由執行相同系列的操作以從來源向量暫存器A 62及來源向量暫存器B 64的對應位置擷取元素而產生結果資料元素68(A)、70(B)、及70(A)。此等操作可平行地或依序地對各來源向量暫存器位置執行。具體而言,藉由分別從來源向量暫存器A 62及來源向量暫存器B擷取第一來源資料元素A
2,1及A
2,2並執行第一來源元素與先前擷取的第二來源元素的內積,處理電路系統能夠產生儲存在結果向量暫存器A 68中之具有A
2,1b
1+A
2,2b
2之值的結果資料元素68(A)。藉由分別從來源向量暫存器A 62及來源向量暫存器B擷取第一來源資料元素A
3,1及A
3,2並執行第一來源元素與先前擷取的第二來源元素的內積,處理電路系統能夠產生儲存在結果向量暫存器B 70中之具有A
3,1b
1+A
3,2b
2之值的結果資料元素70(B)。藉由分別從來源向量暫存器A 62及來源向量暫存器B擷取第一來源資料元素A
4,1及A
4,2並執行第一來源元素與先前擷取的第二來源元素的內積,處理電路系統能夠產生儲存在結果向量暫存器B 70中之具有A
4,1b
1+A
4,2b
2之值的結果資料元素70(A)。
圖4B示意性地繪示一或多個進一步來源向量暫存器包含二個進一步來源向量暫存器的組態。所屬技術領域中具有通常知識者將理解對於所說明之組態的各者,可將一或多個進一步來源向量暫存器指定在向量組合指令中。在所繪示的組態中,資料處理設備50用以執行對應於組合來自二個矩陣之元素的一系列組合操作。具體而言,資料處理設備50用以計算矩陣58乘以矩陣600的結果。在數學上,此操作係藉由執行一系列內積而實行,以計算矩陣58的各列與矩陣600的各列的內積。
將矩陣58儲存在包含來源向量暫存器A 62及來源向量暫存器B 64的複數個來源向量暫存器中,使得矩陣58的第一行儲存在來源向量暫存器A 62中且矩陣58的第二行儲存在來源向量暫存器B 64中。將矩陣600儲存在複數個進一步來源向量暫存器中,使得矩陣600的第一行儲存在進一步來源向量暫存器A 660中且矩陣600的第二行儲存在進一步來源向量暫存器B 670中。將包含來源向量暫存器A 62及來源向量暫存器B 64的複數個來源向量暫存器及包含進一步來源向量暫存器A 660及進一步來源向量暫存器B 670的複數個進一步來源向量暫存器儲存為資料處理設備50之暫存器儲存器中的暫存器52。
具有經儲存向量暫存器52的資料處理設備50回應向量組合指令。向量組合指令係由解碼電路系統56接收並導致處理電路系統54對來源向量暫存器的各資料元素位置執行一系列操作。在此情形中,處理電路系統(可選地並行地)執行4個系列的操作,各系列操作用於四個來源向量暫存器位置的一者。在所繪示的實施例中,組合操作包含點乘積指令,或替代地,作為來源組合操作的乘法操作及作為中間組合操作的累加操作以產生結果資料元素。結果資料元素係(例如,如向量組合指令中定義的)來源向量元素的二倍寬,且因此需要二個目的地向量暫存器以提供用於結果資料元素的足夠儲存空間。在此情形中,目的地向量暫存器包含結果向量暫存器A 68及結果向量暫存器B 70,該結果向量暫存器A包含結果資料元素68(A)、68(B),該結果向量暫存器B包含結果資料元素70(A)及70(B)。
解碼電路系統56控制處理電路系統54以藉由分別從來源向量暫存器A 62及來源向量暫存器B擷取第一來源資料元素A
1,1及A
1,2及分別從進一步來源向量暫存器A 660及進一步來源向量暫存器B670擷取第二來源資料元素B
1,1及B
1,2而產生結果資料元素68(B)。解碼電路系統56進一步控制處理電路系統54以藉由執行內積操作而組合第一來源資料元素及第二來源資料元素,以產生將計算A
1,1B
1,1+A
1,2B
1,2的值儲存於其中的結果資料元素68(B)。因此,此資料元素含有源自矩陣58乘以向量60之結果矩陣72的第一值。
解碼電路系統56控制處理電路系統54以藉由執行相同系列的操作以從來源向量暫存器A 62、來源向量暫存器B 64、進一步來源向量暫存器A 660、及進一步來源向量暫存器B 670的對應位置擷取元素而產生結果資料元素68(A)、70(B)、及70(A)。此等操作可平行地或依序地對各來源向量暫存器位置執行。具體而言,藉由分別從來源向量暫存器A 62及來源向量暫存器B擷取第一來源資料元素A
2,1及A
2,2並執行第一來源元素與從進一步來源向量暫存器A 660及進一步來源向量暫存器B 670擷取的第二來源元素B
2,1及B
2,2的內積,處理電路系統能夠產生儲存在結果向量暫存器A 68中之具有A
2,1B
2,1+A
2,2B
2,2之值的結果資料元素68(A)。藉由分別從來源向量暫存器A 62及來源向量暫存器B擷取第一來源資料元素A
3,1及A
3,2並執行第一來源元素與從進一步來源向量暫存器A 660及進一步來源向量暫存器B 670擷取的第二來源元素B
3,1及B
3,2的內積,處理電路系統能夠產生儲存在結果向量暫存器B 70中之具有A
3,1B
3,1+A
3,2B
3,2之值的結果資料元素70(B)。藉由分別從來源向量暫存器A 62及來源向量暫存器B擷取第一來源資料元素A
4,1及A
4,2並執行第一來源元素與從進一步來源向量暫存器A 660及進一步來源向量暫存器B 670擷取的第二來源元素B
4,1及B
4,2的內積,處理電路系統能夠產生儲存在結果向量暫存器B 70中之具有A
4,1B
4,1+A
4,2B
4,2之值的結果資料元素70(A)。
圖5示意地繪示根據各種實例組態提供給資料處理設備80之暫存器的進一步細節。除了如上文描述的解碼電路系統92及處理電路系統90外,處理設備80具備向量暫存器儲存器82及塊式暫存器儲存器86。向量暫存器儲存器82包含N個向量暫存器84(1)、84(2)、…、84(N)。塊式暫存器儲存器86包含塊式暫存器88(1)、…、88(M)。所提供的向量及塊式暫存器的數目可取決於組態變化。各向量暫存器包含複數個元素,且可在向量暫存器基礎上或在向量元素基礎上定址。塊式暫存器88經配置為二維元素陣列。各塊式暫存器可在塊基礎上、元素基礎上、或就塊式暫存器的列(水平切片)或行(垂直切片)定址。
圖6示意地繪示根據本技術的各種實例組態之處理電路系統的操作。在所繪示的組態中,組合操作包含係乘法操作96、98的第一組合操作及係加法操作100的第二組合操作。處理電路系統回應於向量組合指令而組合包含來源向量暫存器A 90及來源向量暫存器B 92及進一步來源向量暫存器94的複數個來源向量暫存器。處理電路系統經組態以輸出結果元素至包含與來源向量暫存器90、92之各者相同尺寸之數目相同的元素的結果向量暫存器A 102。在操作時,處理電路系統執行乘法操作98以組合來源向量暫存器A 90的元素與進一步來源向量暫存器94的元素b
1,及乘法操作96以組合來源向量暫存器B 92的元素與進一步來源向量暫存器94的元素b
2。通過累加操作100將對應乘法操作組的結果組合以產生儲存在結果向量暫存器A 102中的結果資料元素。
圖6的處理電路系統提供電路系統以執行四組組合操作,各組合操作與結果資料元素的一者關聯(並藉由包括在參考數字末端的小括號中的字母識別)。最高有效(最左側)結果資料元素係使用乘法操作96(D)及98(D)及累加操作100(D)以組合乘法操作96(D)及98(D)的輸出而從與進一步來源向量暫存器94的對應元素組合的來源向量暫存器A 90及來源向量暫存器B 92的最高有效元素產生。類似地,結果向量暫存器102的第二最高有效元素係使用乘法操作96(C)及98(C)及累加操作100(C)以組合乘法操作96(C)及98(C)的輸出而從與進一步來源向量暫存器94的對應元素組合的來源向量暫存器A 90及來源向量暫存器B 92的第二最高有效元素產生。類似地,結果向量暫存器102的第二最低有效元素係使用乘法操作96(B)及98(B)及累加操作100(B)以組合乘法操作96(B)及98(B)的輸出而從與進一步來源向量暫存器94的對應元素組合的來源向量暫存器A 90及來源向量暫存器B 92的第二最低有效元素產生。最後,最低有效(最右側)結果資料元素係使用乘法操作96(A)及98(A)及累加操作100(A)以組合乘法操作96(A)及98(A)的輸出而從與進一步來源向量暫存器94的對應元素組合的來源向量暫存器A 90及來源向量暫存器B 92的最低有效元素產生。
圖7示意地繪示根據各種實例組態之藉由處理電路系統實行之操作的細節。圖7的處理電路系統包含與相關於圖6描述的該等來源組合操作相同的來源組合操作。圖6的中間組合操作包含與圖6的中間組合操作100相同的第一中間組合操作100。額外地,圖7的處理電路系統具備在所說明的實施例中係累加操作的第二中間組合操作104。第二中間組合操作將來自第一中間組合操作100的輸出與已存在於目的地向量暫存器102中的資料元素的值組合。結果向量暫存器102的結果資料元素各與來源向量暫存器90、92的資料元素的尺寸相同。
圖7的處理電路系統提供電路系統以執行四組組合操作,各組合操作與結果資料元素的一者關聯。最低有效結果資料元素係使用乘法操作96(D)及98(D)、及累加操作100(D)以組合乘法操作96(D)及98(D)的輸出、及累加操作104(D)以將累加操作100(D)的輸出與結果向量暫存器102中的現有值累加而從與進一步來源向量暫存器94的對應元素組合的來源向量暫存器A 90及來源向量暫存器B 92的最低有效元素產生。類似地,結果向量暫存器102的第二最低有效元素係使用乘法操作96(C)及98(C)、及累加操作100(C)以組合乘法操作96(C)及98(C)的輸出、及累加操作104(C)以將累加操作100(C)的輸出與結果向量暫存器102中的現有值累加而從與進一步來源向量暫存器94的對應元素組合的來源向量暫存器A 90及來源向量暫存器B 92的第二最低有效元素產生。類似地,結果向量暫存器102的第二最高有效元素係使用乘法操作96(B)及98(B)、及累加操作100(B)以組合乘法操作96(B)及98(B)的輸出、及累加操作104(B)以將累加操作100(B)的輸出與結果向量暫存器102中的現有值累加而從與進一步來源向量暫存器94的對應元素組合的來源向量暫存器A 90及來源向量暫存器B 92的第二最高有效元素產生。最後,最高有效結果資料元素係使用乘法操作96(A)及98(A)、及累加操作100(A)以組合乘法操作96(A)及98(A)的輸出、及累加操作104(A)以將累加操作100(A)的輸出與結果向量暫存器102中的現有值累加而從與進一步來源向量暫存器94的對應元素組合的來源向量暫存器A 90及來源向量暫存器B 92的最高有效元素產生。可將累加操作100及104及乘法操作96及98提供為離散分開邏輯區塊或執行如參考累加操作100及104及乘法操作96及98之各者描述之累加及乘法的步驟的單一組合電路。此外,可提供單一組完整的累加及乘法電路(例如,乘法電路96(A)及98(A)及累加單元100(A)及104(A))以用於使用來自使用開關(解多工器)選擇的來源向量暫存器A及來源向量暫存器B的運算元及使用開關(多工器)饋送至目的地暫存器中之對應位置的結果資料元素循序地執行上述步驟。
圖8示意地繪示根據各種實例組態之藉由處理電路系統實行之操作的細節。圖8的處理電路系統包含如相關於圖6描述的來源組合操作及中間組合操作。中間組合操作可相等地包含相關於圖7描述的第二中間組合操作。處理電路系統經組態以產生係輸入來源暫存器90、92之資料元素二倍寬的結果資料元素。將結果資料元素儲存在目的地暫存器A 106及目的地暫存器B 108中。目的地暫存器A 106及目的地暫存器B 108經配置以形成結果陣列,該結果陣列包含等於目的地暫存器之該數目的一列數目,及等於各目的地暫存器中之資料元素的一數目的一行數目。此外,處理電路系統經組態以列為主的次序將結果資料元素配置在結果陣列中。具體而言,將與來源暫存器B 92的元素A
1,2及A
2,2及來源暫存器A 90的元素A
1,1及A
2,1關聯的結果資料元素儲存在目的地暫存器A 106中。類似地,將與來源暫存器B 92的元素A
3,2及A
4,2及來源暫存器A 90的元素A
3,1及A
4,1關聯的結果資料元素儲存在目的地暫存器B 108中。
圖9示意地繪示根據各種實例組態之藉由處理電路系統實行之操作的細節。圖9的處理電路系統包含與相關於圖6及圖8描述的來源組合操作及中間組合操作相同的來源組合操作及中間組合操作。處理電路系統經組態以產生係輸入來源暫存器90、92之資料元素二倍寬的結果資料元素。將結果資料元素儲存在目的地暫存器A 106及目的地暫存器B 108中。目的地暫存器A 106及目的地暫存器B 108經配置以形成結果陣列,該結果陣列包含等於目的地暫存器之該數目的一列數目,及等於各目的地暫存器中之資料元素的一數目的一行數目。此外,處理電路系統經組態以行為主的次序將結果資料元素配置在結果陣列中。具體而言,將與來源暫存器B 92的元素A
1,2及A
3,2及來源暫存器A 90的元素A
1,1及A-
3,1關聯的結果資料元素儲存在目的地暫存器A 106中。類似地,將與來源暫存器B 92的元素A
2,2及A
4,2及來源暫存器A 90的元素A
2,1及A
4,1關聯的結果資料元素儲存在目的地暫存器B 108中。
圖10示意地繪示根據各種實例組態之藉由處理電路系統實行之操作的細節。圖10的處理電路系統包含在功能上等效於相關於圖6、圖8、及圖9描述的來源組合操作及中間組合操作的來源組合操作及中間組合操作。應注意,在一些組態中,圖10的中間組合操作亦可經修改以合併相關於圖7描述的第二中間組合操作。圖10的處理電路系統與前述實施例的不同處在於來源組合操作的至少一子集係與中間組合操作平行地執行。具體而言,來源組合操作係乘法操作,且中間組合操作係累加操作。將與來源向量暫存器B 92關聯的來源組合操作96執行為取得二個輸入的乘法操作,一者來自來源向量暫存器B 92且一者來自進一步來源向量暫存器94。與來源向量暫存器A 90關聯的來源組合操作及中間組合操作各藉由融合乘法累加(fused multiply accumulate, FMA)單元110平行地執行。各融合乘法累加單元110包含執行乘法112的電路系統及執行累加114的電路系統。融合乘法累加單元110(A)從來源組合操作96(A)及來源向量A 90取得輸入,並將結果資料元素輸出至目的地暫存器A 106。融合乘法累加單元110(B)從來源組合操作96(B)及來源向量A 90取得輸入,並將結果資料元素輸出至目的地暫存器A 106。融合乘法累加單元110(C)從來源組合操作96(C)及來源向量A 90取得輸入,並將結果資料元素輸出至目的地暫存器B 108。融合乘法累加單元110(D)從來源組合操作96(D)及來源向量A 90取得輸入,並將結果資料元素輸出至目的地暫存器B 108。在所繪示的實施例中,結果元素係以列為主的次序輸出,如相關於圖8討論的。然而,所屬技術領域中具有通常知識者將理解資料元素可以行為主的次序輸出至目的地暫存器106、108,該等目的地暫存器亦可經組態以儲存任何尺寸的結果資料元素,且中間組合操作亦可包含第二中間組合操作以將結果累加至目的地暫存器106 108中。
圖11A及圖11B示意地繪示根據本技術之於其中執行擴縮操作之處理設備的細節。圖11A示意性繪示將單一組擴縮值指定在指令中的情形,且圖11B示意地繪示對各輸入向量暫存器提供一組擴縮值的情形。
圖11A示意地繪示根據本技術的各種組態之藉由處理電路系統實行之操作的細節。在所繪示的實施例中,處理電路系統包含來源組合操作及中間組合操作,其中來源組合操作係涉及加法/減法操作116、118及乘法操作120、122的擴縮操作。對複數個來源向量暫存器(亦即,來源向量暫存器A 90及來源向量暫存器B 92)中的各資料元素位置執行操作。各組操作(其藉由在參考數字末端的小括號中的相同字母識別)包含從複數個來源向量暫存器之各者的位置擷取第一來源資料元素及從進一步來源向量暫存器94擷取第二來源資料元素。操作涉及從擷取自進一步來源向量暫存器94的第二來源資料元素擷取第一擴縮值(在此情形中,b
2)。將第一擴縮值連同第一來源資料元素的一者輸入至加法/減法單元116、118中。各第一來源資料元素藉由加法/減法單元116、118通過加/減第一擴縮值而擴縮。操作進一步涉及從第二來源資料元素擷取第二擴縮值(在此情形中,b
1)。將加法/減法操作116、118的結果饋送至乘法單元120、122中,以將加法/減法操作的結果乘以第二擴縮值以產生中間資料元素。將中間資料元素饋送至執行中間組合操作以組合乘法單元120、122之輸出的組合單元124中。所執行的中間組合操作可係本文描述之操作的任何者。例如,中間組合操作可係乘法、累加操作、或另一數學或邏輯操作。來自累加操作124的輸出儲存在目的地暫存器106、108中。
使用加法/減法單元116(D)將來自來源向量暫存器A 90之最低有效位置的元素A
4,2與第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元120(D)將中間經擴縮元素與第二擴縮值b
1組合以產生中間資料元素。類似地,使用加法/減法單元118(D)將來自來源向量暫存器B 92之最低有效位置的元素A
4,1與第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元122(D)將中間經擴縮元素與第二擴縮值b
1組合以產生中間資料元素。通過組合操作124(D)組合由乘法單元120(D)及乘法單元122(D)輸出的中間資料元素以產生儲存在目的地暫存器B 108中的結果資料元素
,其中
用以代表任何組合操作。
使用加法/減法單元116(C)將來自來源向量暫存器A 90之最低有效位置的元素A
3,2與第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元120(C)將中間經擴縮元素與第二擴縮值b
1組合以產生中間資料元素。類似地,使用加法/減法單元118(C)將來自來源向量暫存器B 92之最低有效位置的元素A
3,1與第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元122(C)將中間經擴縮元素與第二擴縮值b
1組合以產生中間資料元素。通過組合操作124(C)組合由乘法單元120(C)及乘法單元122(C)輸出的中間資料元素以產生儲存在目的地暫存器B 108中的結果資料元素
。
使用加法/減法單元116(B)將來自來源向量暫存器A 90之最低有效位置的元素A
2,2與第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元120(B)將中間經擴縮元素與第二擴縮值b
1組合以產生中間資料元素。類似地,使用加法/減法單元118(B)將來自來源向量暫存器B 92之最低有效位置的元素A
2,1與第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元122(B)將中間經擴縮元素與第二擴縮值b
1組合以產生中間資料元素。通過組合操作124(B)組合由乘法單元120(B)及乘法單元122(B)輸出的中間資料元素以產生儲存在目的地暫存器A 108中的結果資料元素
。
使用加法/減法單元116(A)將來自來源向量暫存器A 90之最低有效位置的元素A
1,2與第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元120(A)將中間經擴縮元素與第二擴縮值b
1組合以產生中間資料元素。類似地,使用加法/減法單元118(A)將來自來源向量暫存器B 92之最低有效位置的元素A1,1與第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元122(A)將中間經擴縮元素與第二擴縮值b
1組合以產生中間資料元素。通過組合操作124(A)組合由乘法單元120(A)及乘法單元122(A)輸出的中間資料元素以產生儲存在目的地暫存器A 108中的結果資料元素
。
在繪示於圖11A中的組態中,來源向量暫存器A 90及來源向量暫存器B之各者係藉由相同的第一擴縮值及相同的第二擴縮值擴縮。在繪示於圖11B中的替代組態中,來源向量暫存器A 90係藉由對應的第一擴縮值b
4及對應的第二擴縮值b
3擴縮,而來源向量暫存器B 92係藉由對應的第一擴縮值b
2及對應的第二擴縮值b
1擴縮。擴縮值b
1、b
2、b
3、及b
4各儲存在進一步來源向量暫存器94中。在替代組態中,第一擴縮值b
2及b
4可儲存在一個進一步來源向量暫存器中,且第二擴縮值b
1及b
3可儲存在不同的進一步來源向量暫存器中。在其他組態中,四個擴縮值之各者可儲存於分開的來源向量暫存器中。繪示於圖11B中之電路的操作類似於相關於圖11A描述的電路。
在圖11B中,使用加法/減法單元116(D)將來自來源向量暫存器A 90之最低有效位置的元素A
4,2與對應的第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元120(D)將中間經擴縮元素與對應的第二擴縮值b
1組合以產生中間資料元素。類似地,使用加法/減法單元118(D)將來自來源向量暫存器B 92之最低有效位置的元素A
4,1與對應的第一擴縮值b
4組合以產生中間經擴縮元素。使用乘法單元122(D)將中間經擴縮元素與對應的第二擴縮值b
3組合以產生中間資料元素。通過組合操作124(D)組合由乘法單元120(D)及乘法單元122(D)輸出的中間資料元素以產生儲存在目的地暫存器B 108中的結果資料元素
,其中
用以代表任何組合操作。
使用加法/減法單元116(C)將來自來源向量暫存器A 90之最低有效位置的元素A
3,2與對應的第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元120(C)將中間經擴縮元素與對應的第二擴縮值b
1組合以產生中間資料元素。類似地,使用加法/減法單元118(C)將來自來源向量暫存器B 92之最低有效位置的元素A
3,1與對應的第一擴縮值b
4組合以產生中間經擴縮元素。使用乘法單元122(C)將中間經擴縮元素與對應的第二擴縮值b
3組合以產生中間資料元素。通過組合操作124(C)組合由乘法單元120(C)及乘法單元122(C)輸出的中間資料元素以產生儲存在目的地暫存器B 108中的結果資料元素
。
使用加法/減法單元116(B)將來自來源向量暫存器A 90之最低有效位置的元素A
2,2與對應的第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元120(B)將中間經擴縮元素與對應的第二擴縮值b
1組合以產生中間資料元素。類似地,使用加法/減法單元118(B)將來自來源向量暫存器B 92之最低有效位置的元素A
2,1與對應的第一擴縮值b
4組合以產生中間經擴縮元素。使用乘法單元122(B)將中間經擴縮元素與對應的第二擴縮值b
3組合以產生中間資料元素。通過組合操作124(B)組合由乘法單元120(B)及乘法單元122(B)輸出的中間資料元素以產生儲存在目的地暫存器A 108中的結果資料元素
。
使用加法/減法單元116(A)將來自來源向量暫存器A 90之最低有效位置的元素A
1,2與對應的第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元120(A)將中間經擴縮元素與對應的第二擴縮值b
1組合以產生中間資料元素。類似地,使用加法/減法單元118(A)將來自來源向量暫存器B 92之最低有效位置的元素A1,1與的第一擴縮值b
2組合以產生中間經擴縮元素。使用乘法單元122(A)將中間經擴縮元素與對應的第二擴縮值b
1組合以產生中間資料元素。通過組合操作124(A)組合由乘法單元120(A)及乘法單元122(A)輸出的中間資料元素以產生儲存在目的地暫存器A 108中的結果資料元素
。
圖12示意地繪示根據本技術的各種組態之藉由處理電路系統實行之操作的進一步細節。圖12的向量組合操作組合來自複數個來源向量暫存器130及進一步來源向量暫存器132的資料元素。各來源向量暫存器130使用組合電路系統136與進一步來源暫存器132的不同元素組合。在此情形中,組合操作係乘法操作且導致中間資料元素134。使用組合電路系統136(A)將來源向量暫存器A 130(A)乘以進一步來源向量暫存器132的最高有效(最左側)元素,以產生中間資料元素134(A)。使用組合電路系統136(B)將來源向量暫存器B 130(B)乘以進一步來源向量暫存器132的第二最高有效元素,以產生中間資料元素134(B)。使用組合電路系統136(C)將來源向量暫存器C 130(C)乘以進一步來源向量暫存器132的第二最低有效元素,以產生中間資料元素134(C)。使用組合電路系統136(D)將來源向量暫存器D 130(D)乘以進一步來源向量暫存器132的最低有效(最右側)元素,以產生中間資料元素134(D)。中間資料元素可係寬度與複數個來源向量暫存器之元素相同的元素或可比來源資料元素更寬。
使用中間組合電路系統140組合中間資料元素134。在所繪示的實施例中,組合操作係累加操作。中間組合電路系統140(A)組合各組中間資料元素134的最高有效元素以產生結果資料元素142(A)。中間組合電路系統140(B)組合各組中間資料元素134的第二最高有效元素以產生結果資料元素142(B)。中間組合電路系統140(C)組合各組中間資料元素134的第二最低有效元素以產生結果資料元素142(C)。中間組合電路系統140(D)組合各組中間資料元素的最低有效元素以產生結果資料元素142(D)。以此方式產生的所得資料元素對應於在向量之間實行的一系列內積操作,該等向量從來源向量暫存器130及進一步來源向量暫存器132中的相同元素位置的元素形成。將結果資料元素儲存至結果陣列142,該結果陣列可係向量暫存器的陣列或一或多個塊式暫存器之水平或垂直切片的陣列。
圖13示意地繪示回應於一系列指令而由處理設備實行的一系列步驟。流程在藉由解碼電路系統接收次一指令的步驟S100開始。流程接著進行至判定已接收的指令是否係指定複數個來源向量暫存器、一或多個進一步來源向量暫存器、及一或多個目的地暫存器的向量組合指令的步驟S102。若判定指令不係向量組合指令,則指令將在流程返回至步驟S100以等待次一指令之前基於該特定指令及其所屬之指令集架構的需求由解碼電路系統發布。在步驟S102,若判定指令係向量組合指令,則流程進行至對來源向量的各位置i(可選地平行地)執行一系列步驟的步驟S104。流程進行(對各位置i)至從複數個來源向量暫存器之各者的位置i擷取第一來源資料元素的步驟S106。流程接著進行至從一或多個進一步來源向量暫存器擷取第二來源資料元素的步驟S108。流程接著進行至執行組合操作以產生結果資料元素的步驟S110。組合操作涉及組合第一來源資料元素及第二來源資料元素的各資料元素。流程接著進行至將結果資料元素儲存至一或多個目的地向量暫存器之位置i的步驟S112。流程接著返回至步驟S100以等待次一指令。
圖14繪示可使用的模擬器實施方案。雖然稍早所述之實施例以用於操作支援所關注技術的特定處理硬體之設備及方法來實施本發明,但亦可能根據本文所述之實施例提供一指令執行環境,其係透過使用電腦程式實施。此類電腦程式常稱為模擬器,因為其等提供硬體架構之基於軟體的實施方案。模擬器電腦程式的種類包括仿真器、虛擬機、模型、及二進制轉譯器(包括動態二進制轉譯器)。一般而言,模擬器實施方案可在可選地運行主機作業系統(主機OS)510、支援模擬器程式505的主機硬體515上運行。在一些配置中,在硬體與所提供的指令執行環境及/或相同的主機處理器上提供的多個相異指令執行環境之間可有多層模擬。歷史上,已需要強大的處理器來提供模擬器實施方案,其以合理速度執行,但此種方法在某些情況下可係有正當理由的,諸如當因為相容性或再使用原因而需要運行另一處理器本體的碼時。例如,模擬器實施方案可提供具有不為主機處理器硬體所支援之額外功能性的指令執行環境,或提供一般與不同的硬體架構相關聯的指令執行環境。模擬的綜述係於「Some Efficient Architecture Simulation Techniques」中給出,Robert Bedichek, Winter 1990 USENIX Conference,頁數53至63。
在先前已參照特定硬體架構或特徵描述實施例的情況下,在一模擬實施例中,等效功能性可藉由合適的軟體架構或特徵提供。例如,可在模擬實施例中將特定電路系統實施為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取)可在模擬實施例中實施為軟體資料結構。在先前描述的實施例中提及的硬體元件的一或多者存在於主機硬體(例如,主機處理器730)上的配置中,一些模擬實施例可(在適當處)利用主機硬體。
模擬器程式505可儲存在電腦可讀儲存媒體(其可係非暫時性媒體)上,並提供程式介面(指令執行環境)給目標碼500,該程式介面與藉由模擬器程式505模型化之硬體架構的應用程式介面相同。模擬器程式505包括解碼邏輯520以解碼指令;及處理邏輯530以選擇性地將由指令指定的向量處理操作施加至輸入資料向量,該等輸入資料向量包含在該等輸入資料向量中的各別位置的複數個輸入資料項。解碼邏輯520經組態以回應於指定複數個來源向量暫存器,該複數個來源向量暫存器各包含在複數個資料元素位置上的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器的向量組合指令而產生控制信號以導致處理邏輯530對複數個資料元素位置的各資料元素位置執行:從各來源向量暫存器的資料元素位置擷取第一來源資料元素;從該一或多個進一步來源向量暫存器擷取第二來源資料元素;執行組合操作以產生一結果資料元素,其中該結果資料元素係藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而計算;及將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。因此,包括上述複數處理指令之目標碼500的程式指令可在指令執行環境內使用模擬器程式505執行,使得實際上不包括上文討論之設備的硬體特徵的主機硬體515可模仿此等特徵。
簡要地整體總結,提供一種處理設備、方法、及電腦程式。該設備包含:解碼電路系統以解碼指令;及處理電路系統以施加由該等指令指定的向量處理操作。該解碼電路系統經組態以回應於指定複數個來源向量暫存器,該複數個來源向量暫存器各包含在複數個資料元素位置上的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器的一向量組合指令而導致該處理電路系統對各資料元素位置執行:從各來源向量暫存器的該資料元素位置擷取第一來源資料元素;從該一或多個進一步來源向量暫存器擷取第二來源資料元素;藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而產生一結果資料元素;及將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。
在本申請案中,用語「經組態以…(configured to…)」係用以意指一設備的一元件具有能夠實行該經定義操作的一組態。在此上下文中,「組態(configuration)」意指硬體或軟體之互連的配置或方式。例如,該設備可具有專用硬體,其提供經定義的操作,或者一處理器或其他處理裝置可經程式化以執行該功能。「經組態以(configured to)」並不意味著設備元件需要以任何方式改變以提供所定義的操作。
說明性實施例雖然已參照附圖於本文中詳細描述,應瞭解本發明不限於該等精確實施例,且所屬技術領域中具有通常知識者可於其中實行各種變化、添加、及修改而不脫離如隨附申請專利範圍所定義的本發明的範疇及精神。例如,附屬請求項之特徵的各種組合可使用獨立請求項的特徵產生而不脫離本發明的範疇。
10:處理設備
12:資料處理電路系統/處理電路系統
14:記憶體
16:提取電路系統
18:指令解碼器電路系統
20:暫存器
22:載入/儲存單元
30:處理電路系統
32:來源向量暫存器A
32(A):元素
32(B):元素
32(C):元素
32(D):元素
34:來源向量暫存器B
34(A):元素
34(B):元素
34(C):元素
34(D):元素
36:進一步來源向量暫存器/進一步來源暫存器
36(A):元素
36(B):元素
36(C):元素/資料元素
36(D):元素/資料元素
40:組合操作
40(A):組合操作
40(B):組合操作
40(C):組合操作
40(D):組合操作
42:中間組合操作
42(A):中間組合操作
42(B):中間組合操作
42(C):中間組合操作
42(D):中間組合操作
44:來源組合操作
44(A):來源組合操作
44(B):來源組合操作
44(C):來源組合操作
44(D):來源組合操作
46:來源組合操作
46(A):來源組合操作
46(B):來源組合操作
46(C):來源組合操作
46(D):來源組合操作
48:處理電路系統
50:處理設備/資料處理設備
52:暫存器/向量暫存器
54:處理電路系統
56:解碼電路系統
58:矩陣
60:向量
62:來源向量暫存器A
64:來源向量暫存器B
66:進一步來源向量暫存器
68:結果向量暫存器A
68(A):結果資料元素
68(B):結果資料元素
70:結果向量暫存器B
70(A):結果資料元素
70(B):結果資料元素
72:結果矩陣
80:資料處理設備/處理設備
82:向量暫存器儲存器
84(1):向量暫存器
84(2):向量暫存器
84(N):向量暫存器
86:塊式暫存器儲存器
88:塊式暫存器
88(1):塊式暫存器
88(M):塊式暫存器
90:處理電路系統/來源向量暫存器A/來源向量暫存器/輸入來源暫存器/來源暫存器A/來源向量A
92:解碼電路系統/來源向量暫存器B/來源向量暫存器/輸入來源暫存器/來源暫存器B
94:進一步來源向量暫存器
96:乘法操作/來源組合操作
96(A):乘法操作/來源組合操作
96(B):乘法操作/來源組合操作
96(C):乘法操作/來源組合操作
96(D):乘法操作/來源組合操作
98:乘法操作
98(A):乘法操作
98(B):乘法操作
98(C):乘法操作
98(D):乘法操作
100:累加操作/第一中間組合操作/中間組合操作/加法操作
100(A):累加操作
100(B):累加操作
100(C):累加操作
100(D):累加操作
102:結果向量暫存器A/目的地向量暫存器/結果向量暫存器
104:第二中間組合操作/累加操作
104(A):累加操作
104(B):累加操作
104(C):累加操作
104(D):累加操作
106:目的地暫存器A/目的地暫存器
108:目的地暫存器B/目的地暫存器
110:融合乘法累加(FMA)單元
110(A):融合乘法累加單元
110(B):融合乘法累加單元
110(C):融合乘法累加單元
110(D):融合乘法累加單元
112:乘法
114:累加
116:加法/減法操作/加法/減法單元
116(A):加法/減法單元
116(B):加法/減法單元
116(C):加法/減法單元
116(D):加法/減法單元
118:加法/減法操作/加法/減法單元
118(A):加法/減法單元
118(B):加法/減法單元
118(C):加法/減法單元
118(D):加法/減法單元
120:乘法操作/乘法單元
120(A):乘法單元
120(B):乘法單元
120(C):乘法單元
120(D):乘法單元
122:乘法操作/乘法單元
122(A):乘法單元
122(B):乘法單元
122(C):乘法單元
122(D):乘法單元
124:組合單元/累加操作
124(A):組合操作
124(B):組合操作
124(C):組合操作
124(D):組合操作
130:來源向量暫存器
130(A):來源向量暫存器A
130(B):來源向量暫存器B
130(C):來源向量暫存器C
130(D):來源向量暫存器D
132:進一步來源向量暫存器/進一步來源暫存器
134:中間資料元素
134(A):中間資料元素
134(B):中間資料元素
134(C):中間資料元素
134(D):中間資料元素
136:組合電路系統
136(A):組合電路系統
136(B):組合電路系統
136(C):組合電路系統
136(D):組合電路系統
140:中間組合電路系統
140(A):中間組合電路系統
140(B):中間組合電路系統
140(C):中間組合電路系統
140(D):中間組合電路系統
142:結果陣列
142(A):結果資料元素
142(B):結果資料元素
142(C):結果資料元素
142(D):結果資料元素
500:目標碼
505:模擬器程式
510:主機作業系統(主機OS)
515:主機硬體
520:解碼邏輯
530:處理邏輯
600:矩陣
660:進一步來源向量暫存器A
670:進一步來源向量暫存器B
730:主機處理器
A
1,1:第一來源資料元素/元素
A
1,2:第一來源資料元素/元素
A
2,1:第一來源資料元素/元素
A
2,2:第一來源資料元素/元素
A
3,1:第一來源資料元素/元素
A
3,2:第一來源資料元素/元素
A
4,1:第一來源資料元素/元素
A
4,2:第一來源資料元素/元素
b
1:第二來源資料元素/第二擴縮值/元素
b
2:第二來源資料元素/第一擴縮值/元素
b
3:第二擴縮值
b
4:第一擴縮值
B
1,1:第二來源資料元素
B
1,2:第二來源資料元素
B
2,1:第二來源元素
B
2,2:第二來源元素
B
3,1:第二來源元素
B
3,2:第二來源元素
B
4,1:第二來源元素
B
4,2:第二來源元素
S100:步驟
S102:步驟
S104:步驟
S106:步驟
S108:步驟
S110:步驟
S112:步驟
本技術將僅藉由實例、參照如附圖中所繪示之其實施例來進一步說明,其中:
[圖1]示意地繪示根據本技術的各種組態的處理設備;
[圖2]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖3]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖4A]示意地繪示根據本技術的各種組態之用以執行向量組合指令之處理設備的進一步細節;
[圖4B]示意地繪示根據本技術的各種組態之用以執行向量組合指令之處理設備的進一步細節;
[圖5]示意地繪示根據本技術的各種組態之向量暫存器及塊式暫存器的細節;
[圖6]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖7]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖8]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖9]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖10]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖11A]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖11B]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖12]示意地繪示根據本技術的各種組態之處理電路系統的進一步細節;
[圖13]示意地繪示根據本技術的各種組態之藉由處理設備實行的一系列步驟;及
[圖14]示意地繪示根據本技術的各種組態之處理設備的模擬器實施方案。
50:處理設備
52:暫存器
54:處理電路系統
56:解碼電路系統
58:矩陣
60:向量
62:來源向量暫存器A
64:來源向量暫存器B
66:進一步來源向量暫存器
68:結果向量暫存器A
68(A):結果資料元素
68(B):結果資料元素
70(A):結果資料元素
70(B):結果資料元素
72:結果矩陣
Claims (29)
- 一種處理設備,其包含: 解碼電路系統,用以解碼指令;及 處理電路系統,用以選擇性地將由該等指令指定的向量處理操作施加至輸入資料向量,該等輸入資料向量包含在該等輸入資料向量中的各別位置的複數個輸入資料項, 其中該解碼電路系統經組態以回應於指定各包含在複數個資料元素位置上的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器之複數個來源向量暫存器的一向量組合指令而產生控制信號以導致該處理電路系統對該複數個資料元素位置的各資料元素位置執行: 從各來源向量暫存器的該資料元素位置擷取第一來源資料元素; 從該一或多個進一步來源向量暫存器擷取第二來源資料元素; 執行組合操作以產生一結果資料元素,其中該結果資料元素係藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而計算;及 將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。
- 如請求項1之處理設備,其中該等組合操作包含: 來源組合操作,用以產生中間資料元素,各中間資料元素係藉由組合該等第一來源資料元素的一對應第一來源資料元素與該等第二來源資料元素產生; 中間組合操作,用以組合該等中間資料元素以產生該結果資料元素。
- 如請求項2之處理設備,其中 該等來源組合操作係乘法操作;及 組合該等第一來源資料元素的該對應第一來源資料元素與該等第二來源資料元素包含將該對應第一來源資料元素乘以該等第二來源資料元素的一對應第二來源資料元素以產生該等中間資料元素。
- 如請求項2之處理設備,其中該等來源組合操作係擴縮操作,該等擴縮操作包含: 從該等第二來源資料元素擷取一或多個第一擴縮值; 從該等第二來源資料元素擷取一或多個第二擴縮值; 執行一加法操作及一減法操作之一者,該加法操作將該一或多個第一擴縮值的一對應第一擴縮值加至該等第一來源資料元素的一對應第一來源資料元素以產生對應中間經擴縮元素,該減法操作從該對應第一來源資料元素減去該對應第一擴縮值以產生該等對應中間經擴縮元素; 將該等對應中間經擴縮元素之各者乘以該一或多個第二擴縮值的一對應第二擴縮值以產生該等中間資料元素的對應中間資料元素。
- 如請求項2至4之處理設備,其中: 該等中間組合操作係累加操作;及 組合該等中間資料元素以產生該結果資料元素包含累加該等中間資料元素。
- 如請求項2至4之處理設備,其中該等中間資料元素係第一中間資料元素,且該等中間組合操作包含: 第一中間組合操作,用以組合該等第一中間資料元素以產生一第二中間資料元素;及 第二中間組合操作,用以組合該第二中間資料元素與從該一或多個目的地暫存器的該資料元素位置擷取的一目的地資料元素。
- 如請求項6之處理設備,其中: 該等第一中間組合操作係累加操作;及 組合該等第一中間資料元素以產生該第二中間資料元素包含累加該等第一中間元素。
- 如請求項6或請求項7之處理設備,其中: 該第二中間組合操作係一累加操作;及 組合該第二中間資料元素與該目的地資料元素包含累加該第二中間資料元素與該目的地資料元素。
- 如請求項2至8中任一項之處理設備,其中對於各資料元素位置,該等來源組合操作的至少一子集係與該等中間組合操作平行地執行。
- 如請求項1之處理設備,其中該等組合操作包含一內積操作以將該等第一來源資料元素與該等第二來源資料元素的一內積產生為該結果資料元素。
- 如前述請求項中任一項之處理設備,其中各結果資料元素的一結果資料元素尺寸等於各來源資料元素的一來源資料元素尺寸。
- 如請求項1至10中任一項之處理設備,其中各結果資料元素的一結果資料元素尺寸大於各來源資料元素的一來源資料元素尺寸。
- 如請求項12之處理設備,其中以下一者: 該來源資料元素尺寸係8位元,且該結果資料元素尺寸係32位元;及 該來源資料元素尺寸係16位元,且該結果資料元素尺寸係64位元。
- 如請求項11至13中任一項之處理設備,其中該一或多個目的地暫存器之目的地暫存器的一數目係基於該結果資料元素尺寸與該來源資料元素尺寸的一比率判定。
- 如請求項14之處理設備,其中: 該一或多個目的地暫存器經配置以形成一結果陣列,該結果陣列包含等於目的地暫存器之該數目的一列數目,及等於各目的地暫存器中之資料元素的一數目的一行數目;及 結果資料元素以列為主的次序配置在該結果陣列中。
- 如請求項14之處理設備,其中: 該一或多個目的地暫存器經配置以形成一結果陣列,該結果陣列包含等於目的地暫存器之該數目的一列數目,及等於各目的地暫存器中之資料元素的一數目的一行數目;及 結果資料元素以行為主的次序配置在該結果陣列中。
- 如前述請求項中任一項之處理設備,其中該向量組合指令指定該等第二來源資料元素在該一或多個進一步來源向量暫存器中的位置。
- 如前述請求項中任一項之處理設備,其中該複數個來源向量暫存器包含2個來源向量暫存器,且該一或多個進一步來源向量暫存器各包含2個來源資料元素。
- 如請求項1至17中任一項之處理設備,其中該複數個來源向量暫存器包含4個來源向量暫存器,且該一或多個進一步來源向量暫存器各包含4個來源資料元素。
- 如前述請求項中任一項之處理設備,其中各資料向量的各元素包含下列一者: 一正負號整數值;及 一無正負號整數值。
- 如前述請求項中任一項之處理設備,其中該一或多個進一步向量暫存器的各元素包含下列一者: 一正負號整數值;及 一無正負號整數值。
- 如前述請求項中任一項之處理設備,其中該處理電路系統經組態以平行地產生各資料元素位置的該結果資料元素。
- 如前述請求項中任一項之處理設備,其中從該一或多個進一步來源向量暫存器擷取之第二來源資料元素的一數目等於該複數個來源暫存器中之來源暫存器的一數目。
- 如前述請求項中任一項之處理設備,其中該一或多個目的地暫存器係一或多個塊式暫存器的一或多個水平或垂直塊切片,該一或多個塊式暫存器之各者包含一可垂直地及水平地定址的二維資料元素陣列。
- 如前述請求項中任一項之處理設備,其中: 該一或多個進一步來源向量暫存器包含與該複數個來源向量暫存器的數目相同的向量暫存器;及 從該一或多個進一步來源向量暫存器擷取該等第二來源資料元素包含從各進一步來源向量暫存器的該資料元素位置擷取該等第二來源資料元素。
- 如請求項1至24中任一項之處理設備,其中從該一或多個進一步來源向量暫存器擷取該等第二來源資料元素包含對各資料元素位置擷取一組相同的來源資料元素。
- 如請求項26之處理設備,其中該一或多個進一步來源向量暫存器包含一單一進一步來源向量暫存器。
- 一種用於操作一處理設備之方法,該處理設備包含解碼電路系統及處理電路系統,該解碼電路系統用以解碼指令,該處理電路系統用以選擇性地將由該等指令指定的向量處理操作施加至輸入資料向量,該等輸入資料向量包含在該等輸入資料向量中的各別位置的複數個輸入資料項,該方法包含: 使用該解碼電路系統,回應於指定各包含在複數個資料元素位置中的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器之複數個來源向量暫存器的一向量組合指令而產生控制信號以導致該處理電路系統對該複數個資料元素位置的各資料元素位置執行下列步驟: 從各來源向量暫存器的該資料元素位置擷取第一來源資料元素; 從該一或多個進一步來源向量暫存器擷取第二來源資料元素; 執行組合操作以產生一結果資料元素,其中該結果資料元素係藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而計算;及 將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。
- 一種電腦程式,其用於控制一主機處理設備提供一指令執行環境,該電腦程式包含: 解碼邏輯,用以解碼指令;及 處理邏輯,用以選擇性地將由該等指令指定的向量處理操作施加至輸入資料向量,該等輸入資料向量包含在該等輸入資料向量中的各別位置的複數個輸入資料項, 其中該解碼邏輯經組態以回應於指定各包含在複數個資料元素位置上的來源資料元素、一或多個進一步來源向量暫存器、及一或多個目的地暫存器之複數個來源向量暫存器的一向量組合指令而產生控制信號以導致該處理邏輯對該複數個資料元素位置的各資料元素位置執行: 從各來源向量暫存器的該資料元素位置擷取第一來源資料元素; 從該一或多個進一步來源向量暫存器擷取第二來源資料元素; 執行組合操作以產生一結果資料元素,其中該結果資料元素係藉由組合該等第一來源資料元素及該等第二來源資料元素的各元素而計算;及 將該結果資料元素儲存至該一或多個目的地暫存器的該資料元素位置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2110506.9A GB2609200B (en) | 2021-07-21 | 2021-07-21 | A processing apparatus, method and computer program for a vector combining instruction |
GB2110506.9 | 2021-07-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202305588A true TW202305588A (zh) | 2023-02-01 |
Family
ID=77443392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111125090A TW202305588A (zh) | 2021-07-21 | 2022-07-05 | 用於向量組合指令之處理設備、方法、及電腦程式 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20240319999A1 (zh) |
EP (1) | EP4374251A1 (zh) |
JP (1) | JP2024524588A (zh) |
KR (1) | KR20240027145A (zh) |
CN (1) | CN117677932A (zh) |
GB (1) | GB2609200B (zh) |
IL (1) | IL309765A (zh) |
TW (1) | TW202305588A (zh) |
WO (1) | WO2023002145A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6901422B1 (en) * | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
US8984043B2 (en) * | 2009-12-23 | 2015-03-17 | Intel Corporation | Multiplying and adding matrices |
US10338919B2 (en) * | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
-
2021
- 2021-07-21 GB GB2110506.9A patent/GB2609200B/en active Active
-
2022
- 2022-06-22 US US18/577,983 patent/US20240319999A1/en active Pending
- 2022-06-22 KR KR1020247005230A patent/KR20240027145A/ko unknown
- 2022-06-22 IL IL309765A patent/IL309765A/en unknown
- 2022-06-22 JP JP2024500529A patent/JP2024524588A/ja active Pending
- 2022-06-22 EP EP22734669.9A patent/EP4374251A1/en active Pending
- 2022-06-22 WO PCT/GB2022/051584 patent/WO2023002145A1/en active Application Filing
- 2022-06-22 CN CN202280050773.3A patent/CN117677932A/zh active Pending
- 2022-07-05 TW TW111125090A patent/TW202305588A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
GB202110506D0 (en) | 2021-09-01 |
US20240319999A1 (en) | 2024-09-26 |
GB2609200B (en) | 2023-08-23 |
EP4374251A1 (en) | 2024-05-29 |
IL309765A (en) | 2024-02-01 |
JP2024524588A (ja) | 2024-07-05 |
CN117677932A (zh) | 2024-03-08 |
GB2609200A (en) | 2023-02-01 |
WO2023002145A1 (en) | 2023-01-26 |
KR20240027145A (ko) | 2024-02-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110770701B (zh) | 基于寄存器的矩阵乘法 | |
JP7454377B2 (ja) | データ処理装置における拡大算術計算 | |
CN110300956B (zh) | 数据处理装置中的乘-累加 | |
CN110312993B (zh) | 数据处理装置中的向量逐元素操作 | |
TWI791694B (zh) | 向量帶進位加法指令 | |
KR102586259B1 (ko) | 레지스터 기반의 복소수 처리 | |
EP3655852B1 (en) | Vector interleaving in a data processing apparatus | |
TW202305588A (zh) | 用於向量組合指令之處理設備、方法、及電腦程式 | |
TW202411860A (zh) | 多外積指令 | |
TW202349232A (zh) | 用於執行外積操作之技術 | |
GB2617828A (en) | Technique for handling data elements stored in an array storage | |
WO2024200990A1 (en) | Technique for efficient multiplication of vectors of complex numbers | |
GB2617829A (en) | Technique for handling data elements stored in an array storage |