TW202411860A - 多外積指令 - Google Patents
多外積指令 Download PDFInfo
- Publication number
- TW202411860A TW202411860A TW112131068A TW112131068A TW202411860A TW 202411860 A TW202411860 A TW 202411860A TW 112131068 A TW112131068 A TW 112131068A TW 112131068 A TW112131068 A TW 112131068A TW 202411860 A TW202411860 A TW 202411860A
- Authority
- TW
- Taiwan
- Prior art keywords
- source vector
- vector
- source
- outer product
- operator
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims abstract description 532
- 238000012545 processing Methods 0.000 claims abstract description 119
- 230000004044 response Effects 0.000 claims abstract description 18
- 239000011159 matrix material Substances 0.000 claims description 136
- 238000000034 method Methods 0.000 claims description 25
- 238000013528 artificial neural network Methods 0.000 claims description 17
- 230000004913 activation Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 13
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 15
- 238000009825 accumulation Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 14
- 238000001994 activation Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000004088 simulation Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 4
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Abstract
一種多外積指令指定複數個第一來源向量運算元、至少一個第二來源向量運算元、及與該(等)第二來源向量運算元關聯的相關性資訊,各向量運算元包含多個資料元素,且該相關性資訊對一給定第二來源向量運算元的各資料元素指示一對應第一來源向量運算元。回應於該多外積指令,指令解碼器電路系統(50)控制處理電路系統(60)執行運算以實施外積操作,該等外積操作包含對一給定第一來源向量運算元執行該第一來源向量運算元與該(等)第二來源向量運算元的一資料元素子集的一關聯外積。該處理電路系統取決於該相關性資訊為該(等)第二來源向量運算元的各資料元素選擇待於執行該關聯外積操作時使用的一對應第一來源向量運算元。
Description
本技術係關於資料處理領域。
資料處理設備可包含能夠執行於其中計算二個向量之外積的外積操作的處理電路系統。處理電路系統可進一步經配置以在不同對的向量上執行多個外積操作,以將二個矩陣乘在一起。
外積及矩陣乘法具有若干個應用。例如,人工類神經網路(Artificial Neural Network, ANN)的執行一般涉及矩陣乘法。
然而,乘法操作可係相對緩慢的,且各外積操作(更不用說各矩陣乘法)一般涉及大數目的乘法操作(例如,輸入向量中的每對資料元素一個乘法)。因此,可存在與執行外積操作關聯的顯著效能影響,且因此提供更有效率地執行外積操作的技術,尤其在將執行多個外積操作的情況中,將係所欲的。
在本技術的一第一實例中,提供一種設備,其包含:
處理電路系統,以執行向量操作;及
指令解碼器電路系統,其解碼來自一組指令的指令以控制該處理電路系統執行由該等指令指定的該等向量操作,
其中:
該組指令包含指定複數個第一來源向量運算元、至少一個第二來源向量運算元、及與該至少一個第二來源向量運算元關聯的相關性資訊的一多外積指令,其中各向量運算元包含複數個資料元素,且對於一給定第二來源向量運算元,該相關性資訊經配置以對該給定第二來源向量運算元的各資料元素指示一對應第一來源向量運算元;
該指令解碼器電路系統回應於該多外積指令而控制該處理電路系統執行複數個運算以實施複數個外積操作,其中該複數個外積操作包含對一給定第一來源向量運算元執行一關聯外積操作以計算該給定第一來源向量運算元與該至少一個第二來源向量運算元的一資料元素子集的一外積;及
該處理電路系統經組態以取決於該相關性資訊為該至少一個第二來源向量運算元的各資料元素選擇待於執行該關聯外積操作時使用的一對應第一來源向量運算元。
在本技術的一第二實例中,提供一種方法,其包含:
使用處理電路系統執行向量操作;
解碼來自一組指令的指令以控制該處理電路系統執行由該等指令指定的該等向量操作,
其中:
該組指令包含指定複數個第一來源向量運算元、至少一個第二來源向量運算元、及與該至少一個第二來源向量運算元關聯的相關性資訊的一多外積指令,其中各向量運算元包含複數個資料元素,且對於一給定第二來源向量運算元,該相關性資訊經配置以對該給定第二來源向量運算元的各資料元素指示一對應第一來源向量運算元;
該方法包含回應於該多外積指令而執行複數個運算以實施複數個外積操作,其中該複數個外積操作包含對一給定第一來源向量運算元執行一關聯外積操作以計算該給定第一來源向量運算元與該至少一個第二來源向量運算元的一資料元素子集的一外積;及
取決於該相關性資訊為該至少一個第二來源向量運算元的各資料元素選擇待於執行該關聯外積操作時使用的一對應第一來源向量運算元。
在本技術的一第三實例中,提供一種包含指令的電腦程式,該等指令在一電腦上執行時,控制該電腦以提供:
處理程式邏輯,以執行向量操作;及
指令解碼器程式邏輯,其解碼來自一組目標指令的目標指令,以控制該處理程式邏輯執行由該等目標指令指定的該等向量操作,
其中:
該組指令目標包含指定複數個第一來源向量運算元、至少一個第二來源向量運算元、及與該至少一個第二來源向量運算元關聯的相關性資訊的一多外積指令,其中各向量運算元包含複數個資料元素,且對於一給定第二來源向量運算元,該相關性資訊經配置以對該給定第二來源向量運算元的各資料元素指示一對應第一來源向量運算元;
該指令解碼器程式邏輯回應於該多外積指令而控制該處理程式邏輯執行複數個運算以實施複數個外積操作,其中該複數個外積操作包含對一給定第一來源向量運算元執行一關聯外積操作以計算該給定第一來源向量運算元與該至少一個第二來源向量運算元的一資料元素子集的一外積;及
該處理程式邏輯經組態以取決於該相關性資訊為該至少一個第二來源向量運算元的各資料元素選擇待於執行該關聯外積操作時使用的一對應第一來源向量運算元。
在一些實例中,上文描述的該電腦程式儲存在一電腦可讀儲存媒體上。該電腦可讀儲存媒體可係暫時性或非暫時性的。
在參照隨附圖式討論實例實施方案之前,提供以下實例實施方案及關聯優點的描述。
根據一個實例組態,提供一種設備,其包含處理電路系統及指令解碼器電路系統。該指令解碼器電路系統(在本文中亦稱為解碼器電路系統或指令解碼器)經配置以解碼來自一組指令的指令,並控制該處理電路系統以執行由該等指令指定的該等向量操作。例如,指令解碼器電路系統可回應於該組指令中的指令以產生控制信號,且該等控制信號可控制處理電路系統以執行向量操作。
向量操作係在向量運算元上執行的操作–例如,包含多個資料元素的運算元。向量操作可包括涉及至少一個向量運算元的任何操作,諸如載入或儲存操作以將向量載入/儲存自/至儲存位置(例如,記憶體或快取記憶體)或在向量運算元上執行的算術操作(例如,加法、乘法)。在本技術中,處理電路系統能夠執行包括至少外積操作的向量操作。例如,向量運算元可(但不一定需要)儲存在向量暫存器中,其中單一向量暫存器可儲存整個向量運算元,或其中單一向量運算元可分散在多個向量暫存器之間(且因此單一向量暫存器可儲存來自多個向量運算元的元素)。
指令解碼器電路系統經組態以解碼以用於由處理電路系統執行的該組指令包括至少一「多外積」(multiple-outer-product, MOP)指令。MOP指令定義在指令集架構(instruction set architecture, ISA)中,並識別(直接或間接地,例如,藉由識別儲存對應資料值的暫存器,例如,識別指令之各別欄位中的)至少下列:
• 複數個(例如,二或更多個)第一來源向量運算元;
• 至少一個(例如,一或多個)第二來源向量運算元;及
• 與該至少一個第二來源向量運算元關聯的相關性資訊。
應注意到用語「第一(first)」及「第二(second)」僅係標記,且第一及第二來源向量運算元不一定需要係由指令分別指定的第一及第二運算元(的群組)。相反地,第一及第二來源向量運算元(的群組)可以任何順序由MOP指令識別。
各來源向量運算元(例如,該(多個)第二來源向量運算元及該複數個第一來源向量運算元的各者)包含複數個資料元素,且對於一給定第二來源向量運算元,該相關性資訊經配置以對該給定第二來源向量運算元中的各資料元素指示(例如,識別,直接或間接地)一對應第一來源向量運算元。相關性資訊亦可(可選地)識別用於由指令識別的任何其他第二來源向量運算元中的資料元素的對應第一來源向量運算元(例如,若一個以上的第二來源向量運算元由MOP指令識別)。因此,相關性資訊識別第二來源向量運算元中之與個別第一來源向量運算元關聯的任何資料元素。
該指令解碼器電路系統回應於該MOP指令而控制該處理電路系統執行複數個運算以實施複數個外積操作–例如,回應於由指令解碼器電路系統解碼的單一MOP指令,處理電路系統經組態以執行產生等效於執行二或更多個外積操作之結果的運算。回應於經解碼MOP指令而待由處理電路系統執行的複數個外積操作包含用於藉由該MOP指令識別之第一來源向量運算元的至少一子集的各者的一外積操作。更明確地說,處理電路系統對給定第一運算元執行關聯外積操作以計算該第一來源向量運算元與至少一個第二來源向量運算元的資料元素子集(例如,此可係真子集–例如,一些而非全部資料元素)的外積。至少一個第二來源向量運算元之待用於各外積操作的資料元素子集係基於相關性資訊識別–具體而言,基於相關性資訊為至少一個第二來源向量運算元的各資料元素選擇待於執行關聯外積操作時使用的一對應第一來源向量運算元。(應注意到外積操作不一定需要對第一來源向量運算元的每一者,或對至少一個第二來源向量運算元的每一個子集執行。)
以此方式,藉由提供相關性資訊以使第一來源向量運算元與至少一個第二來源向量運算元中的資料元素關聯,即使僅有一個第二來源向量運算元由該指令指定,回應於單一指令而執行多個外積操作。此與一般(例如,「單一」)外積操作成對比,其中單一外積操作係藉由將一個來源向量的各資料元素乘以另一來源向量的各資料元素而執行。
藉由定義使多個外積操作能回應於該指令的單一實例而執行的指令(MOP指令),由處理電路系統執行之指令的通量可顯著改善。因此,本技術的MOP指令允許改善處理電路系統的效能。實際上,在一個實例實施方案中,此等多個外積操作可並行地執行,甚至進一步改善通量。
除了增加通量外,提供相關性資訊以使至少一個第二來源向量運算元中的資料元素子集與個別的第一來源向量運算元關聯允許該至少一個第二來源向量運算元經定義成使得多個向量有效地壓縮至一個來源向量運算元中。此外,以此方式使用相關性資訊在如何將多個向量壓縮至單一第二來源向量運算元上提供自由度–例如,相關性資訊允許多個向量經壓縮使得來自該多個向量之任一者的資料元素可佔據至少一個第二來源向量運算元中的任何資料元素位置–包括連續及/或非連續資料元素。
提供支援基於來源向量運算元執行多個外積操作的指令在若干個情境中可係有利的,該來源向量運算元可包含來自已壓縮至較小數目的來源向量運算元中的多個向量的資料元素。在一個特定非限制性實例中,此可允許包含一或多個「零」元素的向量以更緊密形式表示。
例如,因為外積操作依賴乘法–例如,將一個向量中的各資料元素乘以另一向量中的各資料元素–且因為任何數目乘以零係零,藉由移除一些或所有的零元素而有效地壓縮用於外積操作的輸入向量係可行的。因為結果向量的其他對應元素(例如,其將具有零值)可從所得外積移除(導致不正確的結果),可假設在執行(多個)外積操作之前必需將等於零的向量元素重插入至輸入向量中。然而,本技術的方法–其中使用相關性資訊以識別哪些第一來源向量運算元與一或多個第二來源向量運算元中的哪些元素關聯–可允許等於零的輸入向量元素從一或多個來源向量運算元移除而不改變外積操作的結果。
因此,本技術可允許此類向量以該等向量可在儲存經壓縮運算元的任何資料儲存結構中佔用較少空間的此一方式表示(例如,藉由從向量移除等於零的資料元素,使得待記錄之資料元素的總數目–且因此儲存結構中儲存該等結構所需的空間–降低)。降低在儲存器中佔用的空間量提供許多優點,包括若資料儲存在揮發性儲存器中,則降低能量消耗,且在載入、操控、及儲存向量時降低延遲及電力消耗。進一步地,藉由降低來源向量的一或多者中的資料元素的數目、待執行的乘法的總數目降低,導致與操作關聯的整體延遲降低且增加資料通量。
因此,在指令集架構(ISA)中提供對MOP指令的支援可在資料處理設備中在效能上提供顯著改善。
應理解至少一個第二來源向量運算元表示多個向量的經壓縮形式或該等多個向量在一或多個資料元素中包含零不係必要的。此僅係MOP指令可如何用以改善效能及降低電力消耗的一個實例。
應理解雖然藉由執行MOP指令產生的結果等效於計算多個外積操作,當執行MOP指令時,各向量運算元的個別資料元素由處理電路系統使用/消耗的順序取決於實施方案。例如,外積操作不一定需要一次執行一個(例如,藉由依次考慮各第一來源向量運算元)。取而代之地,在本技術的至少一些實例實施方案中,可依次考慮至少一個第二來源向量運算元中的各資料元素(例如,為至少一個第二來源向量運算元中的給定資料元素選擇適當的第一來源向量運算元)。在其他實施方案中,可並行地考慮至少一個第二來源向量中的所有資料元素,其中並行地為第二來源運算元的各元素選擇一對應第一來源向量運算元。此等方法–其中為至少一個第二來源向量中的各資料元素選擇一第一來源向量運算元–可係更有效率的,因為其等可能僅需要產生單一回合的各第二來源向量運算元,而非必須掃描過各第二來源向量運算元多次(由於若外積操作一次執行一個,可能有此情形)。然而,將理解其他實施方案亦可用以產生等效結果。
在一些實施例中,該設備包含陣列儲存電路系統,其包含儲存資料元素的儲存元件,該陣列儲存電路系統經配置以儲存當執行該等向量操作時可由該處理電路系統存取的至少一個二維(2D)資料元素陣列。在此類實例中,該多外積指令可將一給定二維資料元素陣列指定在形成一目的地運算元的該陣列儲存器內,且該處理電路系統可經組態以藉由將一給定第一來源向量運算元的各資料元素乘以該至少一個第二來源向量運算元的該資料元素子集中的各資料元素以產生複數個外積結果元素,且使用各外積結果元素更新保持在該給定二維儲存元件陣列內的一關聯儲存元件中的一值而執行該給定第一來源向量運算元的該關聯外積操作。
陣列儲存電路系統(其可,例如,包含一組陣列暫存器)可提供用於執行某些類型之操作(例如外積操作)的有用機制。具體而言,由於執行外積操作而產生的資料元素矩陣可儲存在表示在陣列儲存電路系統中的2D陣列的關聯資料元素內。
然而,本技術的發明人在一些實例使用情形中認知到,如上文提及的,當使用二個來源向量執行外積操作時,可有來源向量的一或二者中的一些元素係零的情形。此可導致2D陣列之儲存元件的無效率使用,因為相當數目的該等儲存元件接著不可使用或僅將用以儲存零值,且亦可導致形成處理電路系統(其可能能夠執行運算以產生用於儲存元件之各者的結果)之硬體組件的資源的無效率使用。然而,根據本文描述的技術,可定義單一指令(亦即,上文討論的MOP指令),通過將至少一個第二來源向量運算元中的資料元素子集與對應的第一來源向量運算元關聯的相關性資訊的使用,使多外積操作能執行,其中各外積操作的結果係儲存在二維(2D)陣列的關聯儲存元件內。此可顯著改善通量(如上文提到的),同時亦使陣列儲存器內的可用儲存元件更有效率地使用。
應注意到各外積結果與2D陣列中的關聯儲存元件之間不一定需要係1:1相關。例如,在一些情形中,多個外積結果可用以判定保持在給定儲存元件中的值,其中額外操作(諸如累加(加法)操作)經執行以組合多個外積結果。
在一些實例中,該處理電路系統包含在執行複數個外積操作時產生各外積結果的乘法電路系統,及與該乘法電路系統關聯的多工器電路系統,該多工器電路系統在該相關性資訊的控制下選擇待相乘的該複數個第一來源向量運算元的一經選擇資料元素及該至少一個第二來源向量運算元的一經選擇資料元素以產生一關聯外積結果元素。
例如,乘法電路系統可包括乘法器電路–例如,此可係用於將二個值乘在一起的簡單乘法器,或將二個值乘在一起並將結果加至累加值的乘法-累加(MAC)電路–該乘法器電路與2D儲存元件陣列中的各儲存元件關聯。在MAC電路的情形中,相同的MAC電路可將經選擇資料元素乘在一起以產生關聯外積結果,並將關聯外積結果加至目前儲存在陣列儲存電路系統之關聯儲存元件中的值(其可係零)。然而,各乘法器電路或MAC電路與2D陣列中的各儲存元件之間可不一定係1:1相關–例如,每儲存元件可有一個乘法器/MAC(在該情形中,外積結果儲存在待並行計算的各儲存元件中係可行的),或每儲存元件可有少於一個乘法器/MAC(在該情形中,各乘法器/MAC用以序列地運算多個儲存元件的外積結果)。
然而,提供許多乘法器電路,提供與乘法電路系統關聯的多工器電路允許選擇用於各乘法操作的資料元素,因此促成本技術之MOP指令的實施方案。
在一些實例中,該相關性資訊包含至少一組索引,且該至少一組索引包含將該給定第二來源向量運算元的各資料元素與該對應第一來源向量運算元關聯的一索引。
例如,可為給定第二來源向量運算元的各資料元素提供一索引。替代地,各索引可與給定第二來源向量運算元中的複數個資料元素關聯。
在一些實例中,該相關性資訊係由該多外積指令所指定的至少一個相關性來源運算元提供,且一給定相關性來源運算元針對該給定第二來源向量運算元的各資料元素包含一對應元素,該對應元素包含將該給定第二來源向量運算元的該資料元素與該對應第一來源向量運算元關聯的該索引。
在形成相關性資訊的一組索引中對至少一個第二來源向量的各資料元素提供一索引提供用於判定哪個索引對應於該第二來源向量運算元的哪個資料元素的簡單機制,其可繼而簡化處理且因此提供效能上的改善。
作為一特定實例,該組索引可儲存為多位元可擴縮值(例如,在純量暫存器或述詞暫存器中),其中各位元與一或多個向量暫存器的一者中的不同向量元素關聯。在另一實例中,該組索引可儲存為向量(例如,在向量暫存器中),其中該向量中的各資料元素保持用於至少一個第二來源向量運算元中的對應資料元素的一或多個索引。將理解此等僅係該組索引可如何儲存的一些實例,且其他實例亦係可行的。
在一些實例中,該相關性資訊包含用於各第二來源向量運算元的一組索引。
例如,若MOP指令指定複數個第二來源向量運算元,其亦可為各第二來源向量運算元識別單獨的一組索引。因此,索引組的數目可至少與第二來源向量運算元的數目一樣大。
在一些實例中,該至少一組索引包含提供用於複數個第二來源向量運算元的該相關性資訊的一組索引。
因此,取代為各第二來源向量運算元指示一組索引,由MOP指令識別的各組索引為一個以上的第二來源運算元提供相關性資訊亦係可行的。因此,在此實例中,索引組的數目可小於第二來源向量的數目。有利地,在所使用的暫存器的尺寸/寬度係固定且相對大的實施方案中,此允許降低由相關性資訊佔用的儲存空間量。
在一些實例中,該相關性資訊係由該多外積指令所指定的至少一個相關性來源運算元提供,且一給定相關性來源運算元的各元素包含複數個索引,該複數個索引包含用於該複數個第二來源向量運算元之各者的一對應資料元素的一索引。
因此,在此等實例中,給定相關性來源運算元的各元素提供多個索引,包括各第二來源向量的至少一個索引。在一特定實例中,給定元素中的頂部位元可提供用於第一來源向量之資料元素的索引,而底部位元提供用於第二來源向量之資料元素的索引。此方法利用索引可各以比存在於相關性來源運算元之各元素中的空間更少的位元形成的事實。因此,多個索引可儲存在相關性來源運算元的各元素中,使得需要較少的儲存空間來儲存相關性資訊。
在一些實例中,由該處理電路系統執行的各外積操作係基於該至少一個第二來源向量運算元的一不同資料元素子集。
例如,至少一個第二來源向量運算元的各資料元素子集可包含與各其他子集不同的資料元素(例如,各外積操作可基於第二來源向量運算元的不同資料元素)。在此等實例中,至少一個第二來源向量運算元之用於外積操作之任二者的資料元素子集以至少一個資料元素相異。應注意到「資料元素(data element)」通常係指向量運算元中的特定資料元素位置,而非保持在該位置中的特定數值。因此,不同子集中的資料元素的數值可能不一定相異,因為給定來源向量運算元中的多個資料元素保持具有相同數值的資料係可能的。進一步地,應注意到子集可以一個以上的資料元素相異–作為一特定實例,至少一個第二來源向量運算元中的各資料元素可係至多一個資料元素子集的部分。
以此方式,多個向量可表示在各第二來源向量運算元中,其中各子集表示不同向量,且多個外積操作可基於多個向量執行。
在一些實例中,該多外積指令包含一外積和指令,使得多個外積結果在該給定二維儲存元件陣列內具有相同的關聯儲存元件,且該處理電路系統經組態以組合該等多個外積結果以更新保持在該關聯儲存元件中的該值。
存在MOP指令的許多可能應用,但在此實例中,MOP指令係外積和指令(其亦可稱為「多外積和指令(sum-of-multiple-outer-products instruction, SMOP)」),其執行涉及將多個外積結果累加至2D陣列的單一儲存元件中。由於MOP指令的此變化允許回應於單一指令而將二個矩陣乘在一起,其可係有利的。
在一些實例中,該設備包含一組向量暫存器,該組向量暫存器可由該處理電路系統存取,其中各向量暫存器經配置以儲存包含複數個資料元素的一向量,且該複數個第一來源向量運算元及該至少一個第二來源向量運算元包含該組向量暫存器的向量暫存器內所含的向量。
向量係包含多個(一個以上)資料元素的一維(1D)陣列。在數學上,一維陣列可將資料元素向量表示為單一行或單一列的資料元素;在資料處理系統(諸如此實例中的設備)中,向量的資料元素儲存在單一向量暫存器內。因為各純量運算元包含單一資料項(例如,向量中的各資料元素可係一純量運算元),向量運算元與純量運算元成對比。由於允許並行地在多個資料元素上操作(例如,使用單指令多資料(single-instruction-multiple-data, SIMD)處理),儲存及操縱採向量形式的資料元素(於其上執行操作)係有利的,。此可大幅改善效能,尤其當在大資料陣列上執行操作(例如,矩陣乘法)時,其中回應於單一指令而在多個資料元素上操作的能力可藉由增加通量而顯著地改善效能。
在一些實例中,該設備包含可由該處理電路系統存取的一組述詞暫存器,其中各述詞暫存器經配置以儲存包含複數個元素的述詞資訊,各元素提供一述詞值,且該相關性資訊儲存在該組述詞暫存器的至少一個述詞暫存器內。
資料處理系統–諸如此實例的設備–可具備一組述詞暫存器以儲存述詞(例如,述詞資訊)。例如,各述詞可係使用在向量處理中的真/偽(例如,1/0)值的遮罩–例如,述詞可指示應或不應在向量中的哪些資料元素上操作。此實例將述詞暫存器用於另一目的:儲存相關性資訊。若各資料元素子集已提供在一個單獨向量暫存器中(例如,以斷定零值),此方法由於其使用可能已用以執行外積操作的電路系統(述詞暫存器)而係有利的。因此,此方法提供相關性資訊而不需要佔用額外儲存空間(例如,佔用額外架構暫存器,或記憶體、快取記憶體、或一些其他儲存結構中的額外空間)。
在一些實例中,各第二來源向量運算元中的該等資料元素表示來自一來源矩陣的複數個列及複數個行的資料值。
如上文提及的,存在若干個本技術的MOP指令可係有用的情境。然而,在一特定實例中,MOP指令可使用在矩陣乘法中。在此實例中,至少一個第二來源向量運算元中的各資料元素子集可表示來源矩陣的不同列/行,且因此本技術提供矩陣的更緊密表示。
在一些實例中,該給定相關性來源運算元的各元素經配置以使該來源矩陣能從該至少一個第二來源向量運算元重建。
例如,給定相關性來源運算元的各元素可指示(多個)第二來源向量運算元的一或多個對應元素來自原始矩陣的哪個列/行。作為一特定實例,各元素可係1及0的位元映像,指示原始矩陣的哪些列/行保持非零值(例如,若原始矩陣具有二個列且第一位元映像係(1, 0),此可指示給定第二來源向量運算元中的第一資料元素表示矩陣之第一列的第一資料元素)。此方法的優點在於其擷取與原始矩陣格式有關的資訊,所以簡單地將(多個)第二來源向量運算元解壓縮回原始矩陣。
在一些實例中,各第二來源向量運算元中的各資料元素與該來源矩陣中的一對應第一維關聯,其中該對應第一維包含該來源矩陣中的一對應列或一對應行,且各第二來源向量運算元中的各資料元素提供從該來源矩陣中的該對應第一維中的該等資料值中選擇的一資料值。
例如,給定第二來源向量運算元中的第一資料元素可係來源矩陣之給定列/行中的第一資料元素,且相關性資訊可指示該資料元素來自哪個列/行。因此,以此方式,由多個列/行(例如,多個向量)組成的矩陣可壓縮至較小數目的向量運算元中。
在一些實例中,來源矩陣包含具有N:M結構化稀疏性的矩陣,其中來源矩陣中的各經定義的M個資料值群組包含至多N個非零資料值。
在具有結構化稀疏性的矩陣中,特定(例如,經定義)的M個資料元素群組經限制為具有至多N個非零值。此可係「修剪(pruning)」ANN的結果,其可導致以零置換矩陣中的一些資料元素。N及M的值係實施方案相依的–例如,2:4及4:8的比率係常見的;更一般而言,可使用M = 2N的比率,或只要N小於M (N < M),可使用任何其他比率。
當矩陣具有結構化稀疏性時,藉由移除零值壓縮矩陣以佔用較少儲存空間係可行的;以此方式,降低由矩陣所佔用的儲存空間量(其導致效能改善及降低電力消耗,尤其當載入/儲存資料元素時)。可能認為此方法的不利因素係在資料元素上執行任何資料處理操作(例如,外積操作)之前需要將(多個)第二來源向量解壓縮回來源矩陣的額外處理。然而,本發明人認知到此等經壓縮矩陣可與指示資料元素來自來源矩陣的哪些列或行的相關性資訊組合而使用為MOP指令的運算元。以此方式,不僅由矩陣佔用的儲存空間量降低,因為多個外積操作可回應於單一MOP指令而執行,亦改善在執行矩陣乘法時所涉及的延遲(導致效能的進一步改善)。
應注意到來源矩陣中的各M個資料元素群組係經定義/特定群組–不係來源矩陣中的任何M個元素群組皆可使用。例如,給定的M個元素群組可在一個維度(例如,列或行)上取得並對準(例如,若M = 4,給定列中的前四個元素可形成一個群組)。
在一些實例中,來源矩陣包含在人工類神經網路(ANN)執行時使用的權重矩陣或啟動矩陣。
如上文提到的,ANN的節點一般表示為權重矩陣,且此等矩陣可係大的。類似地,輸入至ANN之節點的資料一般採取啟動矩陣的形式。因為此等矩陣可係大的,且ANN中的節點的數目一般係非常大的,一般需要相當的資料量以表示ANN。因此,藉由清除權重矩陣中的一些資料元素(例如,將其等設定成零)以修剪類神經網路可係有用的。具體而言,此可根據經定義N:M稀疏性以結構化方式完成。此允許將表示ANN的矩陣壓縮至較小數目的向量運算元中,提供上文討論的所有優點(例如,資料儲存器的更有效率的使用、更佳效能、及較低的電力消耗)。將理解當執行ANN時,假定涉及大量資料,此等優點尤其顯著。
上文討論的技術可實施在具有實施上述處理電路系統、指令解碼器電路系統、及其他設備特徵之支援作為由解碼電路系統及處理電路系統所支援之原生指令集架構的部分之多外積(MOP)指令的電路硬體的硬體設備中。
然而,在另一實例中,相同技術可實施在電腦程式(例如,架構模擬器或模型)中,其可提供用於控制主機資料處理設備以提供用於來自目標碼之指令的執行的指令執行環境。電腦程式可包括指令解碼程式邏輯以用於解碼目標碼的指令,以控制主機資料處理設備執行包括執行向量操作的資料處理。因此,指令解碼程式邏輯仿真如上文討論之硬體設備的指令解碼器(指令解碼器電路系統)的功能性。程式亦可包括處理程式邏輯以當在主機資料處理設備上執行時執行資料處理(且因此仿真上述處理電路系統的功能性)。再者,程式可包括維護表示(仿真)由該程式模擬之指令集架構之架構暫存器的資料結構(在主機設備的記憶體或架構暫存器內)的暫存器維護程式邏輯–例如,此等架構暫存器可包括任何或所有的向量暫存器、純量暫存器、陣列暫存器、及述詞暫存器。指令解碼程式邏輯包括對MOP指令的支援,該MOP指令具有與上文針對硬體實例之描述相同的功能性。因此,此一模擬器電腦程式可對在模擬器電腦程式上執行的目標碼呈現與將由能夠直接執行目標指令集的實際硬體設備提供的環境類似的指令執行環境,即使在正在執行模擬器程式的主機電腦上可能不存在提供此等特徵的任何實際硬體。因此,藉由提供上述設備的模擬,模擬器電腦程式提供於上文討論之相關於該設備的所有優點。額外地,模擬對於在不實際支援一個指令集架構之主機平台上執行針對該架構編寫的碼可係有用的。再者,在軟體開發與支援新架構之硬體裝置的開發並行地執行的同時,模擬器在開發新版本之指令集架構之軟體的期間可係有用的。此可允許軟體在模擬器上開發及測試,使得軟體開發可在支援新架構的硬體裝置可用之前開始。
模擬器程式可儲存於儲存媒體上,且該儲存媒體可係暫時性或非暫時性的。
現在將參考圖式描述特定實施例。
圖1示意地繪示一資料處理系統10,該資料處理系統包含耦接至一記憶體30的一處理器20,該記憶體儲存資料值32及程式指令34。處理器20包括用於自記憶體30提取程式指令34並將該等經提取程式指令供應至一指令解碼器電路系統50的一指令提取單元40。解碼器電路系統50解碼該等經提取程式指令,並產生控制信號以控制處理電路系統60對暫存器儲存器65之儲存元件內所保持之資料值執行處理運算,如由該等經解碼向量指令所指定。如圖1所示,暫存器儲存器65可由多個不同區塊形成。例如,可提供一純量暫存器檔案70,該純量暫存器檔案包含可藉由指令指定的複數個純量暫存器,且類似地,可提供一向量暫存器檔案80,該向量暫存器檔案包含可藉由指令指定的複數個向量暫存器。
如圖1所示,處理器20可存取一陣列儲存器90。在圖1所示的實例中,陣列儲存器90經提供作為處理器20之部分,但此非必要。在各種實例中,該陣列儲存器可實施為以下中之任一或多者:架構上可定址暫存器;非架構上可定址暫存器;一高速暫存記憶體;及一快取記憶體。
在一實例實施方案中,處理電路系統60可包含向量處理電路系統及純量處理電路系統兩者。純量處理與向量處理之間的大致區別如下。向量處理可涉及施加一單一向量處理指令至一資料向量之資料元素,該資料向量在資料向量中之各別位置處具有複數個資料元素。該處理電路系統亦可執行向量處理以對儲存在陣列儲存器90內的二維陣列資料元素(其亦可稱為一子陣列)內的複數個向量執行操作。純量處理有效地對單一資料元素進行操作,但非對資料向量。向量處理可用於其中對待處理之資料的許多不同例項實行處理操作的例項中。在向量處理配置中,單一指令可同時施加於(資料向量的)多個資料元素。相較於純量處理,此可改善資料處理之效率及產出量。
處理器20可經配置以處理儲存在陣列儲存器90中的二維陣列資料元素。在至少一些實例中,該二維陣列可作為一維向量資料元素在多個方向存取。在一實例實施方案中,陣列儲存器90可經配置以儲存一或多個二維陣列資料元素,及各二維陣列資料元素可在記憶體中形成較大或甚至較高維陣列資料元素的方形陣列部分。
暫存器儲存器65亦包括述詞暫存器檔案75。此儲存述詞資訊(例如,遮罩)以用於在資料處理操作中使用(例如,以遮蓋掉向量的某些資料元素,使得其等從特定處理操作排除)。
圖2顯示在一實例實施方案中可提供的處理器20之架構暫存器65的實例。架構暫存器(如指令設定架構(ISA)中所定義的)可包括一組純量暫存器(未圖示)及用於儲存述詞資訊的一組述詞暫存器100。述詞暫存器亦可儲存用於執行多外積(MOP)指令的相關性資訊,如將於下文討論的。例如,可存在一定數目的述詞暫存器100,在此實例中,提供,例如,16個暫存器P0至P15。述詞暫存器可具有固定尺寸,儘管取決於儲存在述詞暫存器中的元素的資料類型,可能不一定使用各元素中的一些位元。
再者,可供由解碼器50支援之ISA中的程式指令選擇的架構暫存器可包括一定數目個向量暫存器105(在此實例中標記為Z0至Z31)。當然,提供圖2所示的該數目個述詞/向量暫存器不係必要的,且其他實例可提供可由程式指令指定的不同數目個暫存器。各向量暫存器可儲存包含可變數目個資料元素的向量運算元,其中各資料元素可表示獨立資料值。回應於向量處理(SIMD)指令,處理電路系統可對儲存在暫存器中的向量運算元執行向量處理以產生結果。例如,向量處理可包括逐通道運算,其中對應運算係對一或多個運算元向量中的各元素通道執行以產生結果向量之元素的對應結果。當執行向量或SIMD處理時,各向量暫存器可具有一定的向量長度VL,其中向量長度係指在給定向量暫存器中的位元數目。用於向量處理模式中的向量長度VL對於給定硬體實施方案可係固定的或可係可變的。由處理器20支援的ISA可支援可變向量長度,使得可選擇不同處理器實施方案以實施不同大小的向量暫存器,但ISA係向量長度無關的,使得指令經設計以使得程式碼可正確地作用而無論在執行該程式的給定CPU上實施的特定向量長度。
向量暫存器Z0至Z31亦可作用為用於儲存向量運算元的運算元暫存器,其等提供輸入至由處理電路系統60對儲存在陣列儲存器90內之二維陣列資料元素執行的處理及累加運算。
如圖2所示,架構暫存器亦包括形成先前提及的陣列儲存器90(ZA0至ZA(NA-1))的一定數目NA個陣列暫存器110。可將各陣列暫存器視為用於儲存單一2D陣列資料元素(例如,處理及累加運算之結果)的一組暫存器儲存器。然而,處理及累加運算可能不是唯一可使用陣列暫存器的運算。陣列暫存器亦可用於儲存方形陣列,同時執行記憶體中之一陣列結構之列/行方向的轉置。當程式指令參照陣列暫存器110中之一者時,將其參照為使用陣列識別符ZAi的單一實體,但一些類型的指令(例如,資料傳輸指令)亦可藉由定義選擇陣列的一部分的索引值而選擇該陣列的子部分(例如,一個水平/垂直元素群組)。
實際上,對應於陣列暫存器的暫存器儲存器的實體實施方案可包含一定數目NR個陣列向量暫存器ZAR0至ZAR(NR-1),如圖2所示。形成陣列暫存器儲存器110之陣列向量暫存器ZAR可係與用於SIMD處理及至陣列處理之向量輸入的向量暫存器Z0至Z31不同的一組暫存器。陣列向量暫存器ZAR的各者可具有向量長度VL,所以各陣列向量暫存器ZAR可儲存長度VL的1D向量,該向量可邏輯地分割成可變數目的資料元素。例如,若VL係512個位元,則此可係一組64個8位元元素、32個16位元元素、16個32位元元素、8個64位元元素、或4個128位元元素。應理解,並非所有此等選項均需要在一給定實施方案中支援。藉由支援可變元件大小,此提供處置涉及不同精確度之資料結構之計算的靈活性。為表示2D資料陣列,可在邏輯上將陣列向量暫存器ZAR0至ZAR(NR-1)群組視為係指派陣列暫存器識別符ZA0至ZA(NA-1)之給定一者的單一實體,使得2D陣列以在對應於陣列的一維的單一向量暫存器內延伸的元素及在陣列之橫跨多個向量暫存器條串化的另一維中的元素形成。
如上文所討論,處理電路系統60經配置以在由解碼器電路系統50所解碼的指令之控制下存取純量暫存器70、向量暫存器80、及/或陣列儲存器90。現將參考圖3A描述此後一配置的進一步細節,其僅提供如何可存取陣列儲存器的一個說明性實例,尤其考慮存取在陣列儲存器內的方形2D陣列。
在所說明之實例中,陣列儲存器90內的方形2D陣列經配置為n × n個儲存元件/位置200之陣列205,其中n係大於1的整數。在本實例中,n係16,其暗示在水平或垂直的陣列方向任一者上,對儲存位置200的存取粒度係2D陣列的總儲存的1/16。
從處理電路系統的觀點而言,n × n個位置的陣列係可存取為在第一方向(例如,如所繪示的水平方向)上的n個線性(一維)向量以及在第二陣列方向(例如,如所繪示的垂直方向)上的n個線性向量。因此,從處理電路系統60的觀點,可將n × n個儲存位置存取為各具有n個資料元素的2n個線性向量。
在與至少處理電路系統60及可選地與解碼器電路系統50通訊的控制電路系統250之控制下,儲存位置200的陣列可由存取電路系統210、220、行選擇電路系統230、及列選擇電路系統240存取。
參照圖3B,在指定為「ZA1」(應注意,如下文討論的,可有一個以上的此類2D陣列提供在陣列儲存器90內,例如,ZA0、ZA1、ZA2,並依此類推)的實例方形2D陣列的情形中,第一方向(如所繪示的水平或「H」方向)上的n個線性向量各有16個資料元素0...F(以十六進位標記法表示),且在此實例中可參考為ZA1H0…ZA1H15。儲存在陣列儲存器90之256個項目(16 × 16個項目)中(即圖3B的ZA1)的相同基本資料可替代地在第二方向(如所繪示的垂直或「V」方向)上參照為ZA1V0…ZA1V15。應注意,例如,資料元素260係參照為ZA1H0的項F,而非ZA1V15的項0。應注意,「H」及「V」的使用並不表示關於組成陣列儲存器90的資料元素之儲存的任何空間或實體布局需求,亦不具有陣列儲存器內之2D陣列在任何實例應用中是否儲存列資料或行資料之任何相關性。
圖4A繪示外積操作。外積操作將可如上文討論地儲存在向量暫存器檔案中的二個向量A及B取為輸入。外積操作的結果係矩陣(例如,2D陣列)A⊗B。如圖所示,輸出矩陣中的各資料元素係藉由將各輸入向量中的對應資料元素乘在一起而判定–例如,結果矩陣中的左上元素係藉由將向量A的元素a
0及向量B的元素b
0乘在一起而判定。在填充結果矩陣時,向量A中的各資料元素乘以向量B中的各資料元素;因此,計算n個元素之向量與m個元素之向量的外積操作的結果係n × m矩陣。
圖4B繪示矩陣乘法操作。具體而言,圖4B顯示涉及將二個矩陣C及D(其等可,例如,儲存在向量暫存器中(例如,一列或一行保持在各暫存器中)或在陣列儲存電路系統中)乘在一起以產生矩陣CD的操作。如可從圖式見到的,將二個
n × n矩陣乘在一起的結果係
n × n矩陣(更一般而言,
n × k矩陣乘以
k × m矩陣將導致
n × m矩陣)。
存在計算輸出矩陣CD之元素的數種方式,但一般由處理器採用的技術係執行多個外積操作並將結果累加(相加)在一起。例如,為執行繪示於圖4B中的矩陣乘法,處理電路系統可首先計算矩陣A的最左側行i與矩陣B的頂部列w的外積以產生16個外積結果,並使用該等外積結果填充陣列儲存器中的4×4陣列。處理電路系統可接著計算矩陣A的次一行j與D的次一列x的外積,以產生加至已儲存在陣列中之外積結果的另外16個外積結果。此程序接著可對最後二對向量重複(k⊗y及l⊗z),以產生最終結果CD。
因此,可看出矩陣乘法可藉由執行多個外積操作並累加結果而實行–例如,此可藉由執行一或多個多外積指令而執行。應注意到該等向量對乘在一起的順序不限於上述順序–外積可以任何順序計算。額外地,外積操作不需要相繼地執行。
如可從圖4B中的實例見到的,矩陣乘法涉及執行相當數目的操作–例如,可執行各涉及多個乘法操作的多個外積操作。因此,矩陣乘法可尤其係時間-及能量-消耗程序。此在執行諸如人工類神經網路(ANN)的情況中尤其如此,其可包含執行相當數目的矩陣乘法。因此,對改善矩陣乘法操作的效能感興趣。
圖5顯示具有N:M結構化稀疏性的矩陣。在圖5所示的矩陣中,陰影元素表示非零元素,而空白(無陰影)元素表示零元素。在圖5所示的特定實例中,顯示具有3:5稀疏性的10 × 11矩陣。更具體地說,將十個資料元素的各行視為包含M = 5個連續資料元素的二個群組,該等連續資料元素至多N = 3個係非零的(例如,陰影資料元素)。
如上文解釋的,可將結構化稀疏性引入矩陣中(例如,藉由將其元素的一些清除/設定至零),以降低該矩陣中之將在該矩陣上執行的至少一些矩陣操作中所涉及的資料元素的數目。額外地,本發明人認知到(如下文更詳細地討論的)將結構化稀疏性引入至矩陣中可允許將矩陣壓縮至較小數目的向量運算元中,其降低由矩陣所佔用的空間量。
圖6A及圖6B顯示用於資訊之稀疏矩陣的進一步實例–如圖5,陰影元素表示非零元素,而空白(無陰影)元素表示零元素。具體地說,圖6A顯示具有2:4結構化稀疏性的矩陣(N=2, M=4),且圖6B顯示具有4:8結構化稀疏性的矩陣(N=4, M=8)。應注意到雖然圖6A與圖6B二者顯示每行至多四個資料元素係非零的8 × 8矩陣,將顯示於圖6A中的矩陣進一步限制成行中的各4個資料元素群組(例如,行中的前四個元素或行中的最末四個元素)具有至多二個非零元素。此可藉由比較,例如,各矩陣的最左側行而見到–例如,在圖6B的矩陣中,最左側行中的前四個資料元素皆係非零的;此在具有2:4結構化稀疏性的矩陣中係不受允許的,其中此等四個元素的至多2者可係非零(如圖6A中之矩陣的最左側行中所示)。
資料處理操作可正如同其等可在其他矩陣上執行般地在稀疏矩陣上執行。例如,圖7繪示乘法-累加(MAC)單元的陣列可如何用以計算8 × 4啟動矩陣乘以4 × 8權重矩陣(具有2:4稀疏性)(例如,在ANN之給定節點的權重)的結果。例如,述詞資訊可用以將零值遮蓋掉。
然而,如上文解釋的,本發明人認知到將稀疏矩陣壓縮至較小數目的向量運算元中有數個優點。此之實例顯示於圖8A中,其中具有2:4稀疏性的4 × 8矩陣經壓縮至二個向量運算元中。具體而言,圖8顯示最初佔用四個向量暫存器(Z8, Z9, Z10, Z11)的矩陣可如何壓縮至各儲存來自來源矩陣的一或多個列的資料元素的二個向量暫存器(Z4, Z5)中。此釋放向量暫存器檔案中的二個向量暫存器(及/或記憶體及/或另一資料儲存器中的等效空間量)。
為經壓縮來源向量運算元的各者保持一組索引Id,其可用以重建來源矩陣。例如,索引可指示Z4或Z5中的各元素來自來源矩陣的哪個列。
稀疏矩陣可如何壓縮至較小數目的向量運算元中的另一實例顯示於圖8B中,其中將8 × 8稀疏矩陣(具有4:8結構化稀疏性)壓縮至四個向量運算元中。
一旦稀疏矩陣已壓縮,本發明人認知到多外積(MOP)操作可在所得向量運算元上執行而無需首先解壓縮其等以形成原始矩陣。此顯示於圖9中,其中使用乘法電路系統255將8 × 4啟動矩陣乘以2 × 8經壓縮權重矩陣(例如,此可係MAC陣列)。例如,此可執行為一者基於Z4且一者基於Z5的二個MOP操作,或執行為外積和(SMOP)操作。
執行四個外積操作以將矩陣乘在一起。此等操作涉及計算啟動矩陣的各行(例如,向量Z0、Z1、Z2、Z3)與Z4及Z5中之具有相同陰影的資料元素的外積。例如,此意謂著來自Z5中左側的第一、第二、第四、及第六資料元素乘以Z3中的對應元素;來自Z5中左側的第三,第5、及第7元素與來自Z4中左側的第一元素乘以Z2中的對應元素,並依此類推。索引可用以識別第二向量運算元(Z4:Z5)群組中的各資料元素應乘以第一向量運算元(Z0:Z3)群組中的哪個向量。
顯示於圖9中的乘法電路系統255包含各將輸入提供至對應乘法器電路(未圖示)的若干個多工器270。在此特定實例中,提供多工器270的8 × 8陣列,包括用於各待執行乘法的一多工器(及對應乘法器)。各多工器將來自啟動向量Z0至Z3之各者中的對應位置的資料元素取為輸入,並基於相關性資訊選擇該等資料元素之用於與Z4或Z5中之對應位置上的資料元素相乘的一者。然而,將理解,在其他實例中,可存在較少的多工器及乘法器,其中各多工器/乘法器對係用以執行數個待執行乘法操作。
因此,如上文討論的,本技術的設備經組態以支援多外積(MOP)指令的執行,該多外積指令將複數個第一向量運算元(例如,此情形中係向量暫存器Z0:Z3)、至少一個第二來源向量運算元(例如,Z4及/或Z5)、及相關性資訊(例如,索引組中的一或二者)識別為輸入。
應注意到,雖然圖式顯示權重矩陣係經壓縮稀疏矩陣的實例,替代權重矩陣或除了權重矩陣外,將啟動矩陣係經壓縮縮稀矩陣係同等可行的。更一般而言(因為將啟動及權重矩陣相乘僅係本技術的一個實例使用情形),由MOP指令指定的(多個)第一向量運算元(的群組)或(多個)第二向量運算元(的群組)的哪一者代表經壓縮稀疏矩陣並不重要–其可係任一者或二者。
圖10係根據一個實例實施方案之設備的方塊圖,其繪示如何使用處理電路系統以執行外積操作。向量暫存器檔案80提供可用以儲存資料元素之向量的複數個向量暫存器。如早先討論的,MOP指令可經配置以識別複數個第一來源向量運算元300及至少一個第二來源向量運算元320。至少一個第二來源向量運算元320(且亦可選地複數個第一來源向量運算元300)包含多個資料元素子集,其中各子集用於不同的外積操作。應注意到本文使用之參考至二個來源向量運算元(的群組)的用語「第一(first)」及「第二(second)」純粹使用為標記以在其等之間區分,且不暗示關於該等運算元如何由指令指定的任何特定排序。因此,指令的來源運算元欄位的任一者可用以指定上文所指稱的第一來源向量運算元,且來源運算元欄位的另一者將接著用以指定上文所指稱的第二來源向量運算元。
進一步地,雖然根據本文描述的該等技術,二個來源向量運算元中之至少一者將包含多個資料元素子集以在不同的外積操作中使用,且另一來源向量運算元可不如此,在一些實例實施方案中亦可有二個來源向量運算元皆包含多個資料元素子集的情形。類似地,除了指定複數個第一來源向量運算元外,可指定一個以上的第二來源向量運算元320。額外地,由MOP指定的第一來源向量運算元的數目及第二來源向量運算元的數目不限於一個向量運算元或二個向量運算元,而實際上可指定二個以上的第一/第二向量運算元(例如,四個向量運算元或八個向量運算元等)。
MOP指令亦指定相關性資訊,該相關性資訊識別至少一個第二來源向量運算元320中的哪些資料元素將乘以複數個第一向量運算元中的哪些向量運算元。在此實例中,相關性資訊儲存在述詞暫存器檔案75中的述詞暫存器325中,且因此MOP指令亦識別一或多個述詞暫存器325。
處理電路系統60依據接收自解碼器電路系統(解碼器)50的控制信號受控制,且當解碼器電路系統50解碼早先提及的MOP指令時,其將控制信號發送至處理電路系統以控制處理電路系統執行複數個運算以實施複數個外積操作,其中該複數個外積操作包含對給定第一來源向量運算元執行關聯外積操作,以計算該給定第一來源向量運算元與至少一個第二來源向量運算元的一資料元素子集的外積。作為此程序之部分,彼等控制信號將控制由處理電路系統60提供的選擇電路系統340,以選擇待由各外積操作處理的適當資料元素。各外積操作包含將至少一個第二來源向量運算元中的關聯資料元素子集的各資料元素乘以關聯第一來源向量運算元中的各資料元素,且接著使用各外積結果元素更新保持在陣列儲存器90內的給定二維儲存元件陣列380內的關聯儲存元件中的值。
選擇電路系統340可依各種方式組織,但在一個實例實施方案中包含為用以從二個輸入資料元素產生外積結果的複數個乘法器的各者提供的多工器電路系統,該多工器電路系統用以為各乘法器選擇適當的二個輸入資料元素。
接著,經選擇的輸入資料元素被轉發至乘法電路系統350,其如上文所提及,在一實例實施方案中可包含用於將被產生之各外積結果的乘法器電路。各外積結果元素係藉由將提供至乘法電路系統350內的對應乘法器的二個輸入資料元素相乘而產生。外積結果元素可直接提供至陣列更新電路系統370,該陣列更新電路系統用以更新2D陣列380內的儲存元件,各外積結果元素具有在2D陣列380內的關聯儲存元件且用以更新保持在該關聯儲存元件中的值。然而,通常的情形係所執行的外積操作係累加操作,且所產生的各外積結果元素使用可選的累加電路系統360與儲存在2D陣列380的關聯儲存元件中的現有值組合(例如,藉由將外積結果加至現有值或從現有值減去外積結果)。儘管乘法電路系統350及可選的累加電路系統360在圖10中顯示為分開方塊,在一個實例實施方案中,其等可提供作為由乘法累加電路形成的組合方塊。
陣列更新電路系統370用以控制2D陣列380內的相關儲存元件的存取,以確保由陣列更新電路系統接收的各值用以更新2D陣列380內的相關聯儲存元件。
外積操作有效地使用在針對多種不同原因之資料處理系統內,且因此回應於單一指令而執行多個外積操作的能力可提供顯著效能/通量改善,以及使由陣列儲存器90內之二維陣列提供的可用儲存資源更有效使用。關於可如何使用外積操作,僅舉實例而言,其可用以實施矩陣乘法操作。矩陣乘法可,例如,涉及將第一
m × k資料元素矩陣乘以
k × n資料元素矩陣以產生
m × n資料元素矩陣結果。此操作可分解成複數個外積操作(更明確地說,
k個外積操作,其中
k可稱為深度),其中各外積操作涉及執行一序列的乘法累加操作,以將來自第一矩陣的
m個資料元素向量的各資料元素乘以來自第二矩陣的
n個資料元素向量的各資料元素,以產生儲存在2D陣列內的
m × n結果資料元素矩陣。複數個外積操作的結果可累加在相同的2D陣列內,以產生已藉由執行早先提及的矩陣乘法而產生的
m × n矩陣。
矩陣乘法具有若干個潛在應用。除了如上文提到的執行ANN的應用外,矩陣乘法可使用在,例如,影像處理中。
圖11A繪示外積結果元素可如何與2D陣列中的特定儲存元件關聯。在圖11A的實例中,使用乘法功能574將來自第一來源向量運算元的資料元素570乘以來自第二來源向量運算元的資料元素572,產生外積結果元素,該外積結果元素接著受累加功能576的累加操作,以將該外積結果加至儲存在關聯儲存元件578中的目前值(或從儲存在關聯儲存元件578中的目前值減去該外積結果),以產生接著儲存在關聯儲存元件中的更新值。
圖11B繪示外積操作的加總,其中二個外積結果元素與2D陣列內的相同儲存元件關聯。在此實例中,使用乘法功能584將來自第一來源向量運算元的資料元素580乘以來自第二來源向量運算元的資料元素582,以產生第一外積結果元素。類似地,藉由乘法功能590將來自第一來源向量運算元的資料元素586與來自第二來源向量運算元的資料元素588相乘,以產生第二外積結果元素。接著使用加法功能592將二個外積結果加在一起,且執行累加功能594,以產生用於儲存在相關聯儲存元件596中的更新資料值。因此,將理解,在一些實施方案中,可存在與2D陣列中的相同儲存元件關聯的一個以上的外積結果元素。
圖12係示意地繪示根據一個實例實施方案可提供在MOP指令內之欄位的圖。運算碼欄位605用以識別指令的類型,在此情形中,識別出該指令係多外積指令。
可提供一或多個控制資訊欄位610,例如,以識別如早先提及的一或多個述詞。額外地,欄位615識別待使用在操作中的相關性資訊–例如,此可係儲存相關性資訊之暫存器(例如,述詞暫存器)的識別符。應注意到此與保持在控制資訊欄位610中的任何述詞資訊分開,述詞資訊在操作中將使用為述詞/遮罩。欄位620接著用以識別複數個第一來源向量運算元(例如,藉由指定向量暫存器檔案80內的向量暫存器,其中一或多個向量運算元隱含地與(多個)經識別暫存器關聯)。類似地,欄位625可用以識別一或多個第二來源向量運算元,例如,再度藉由指定在向量暫存器檔案80內的一或多個向量暫存器。應注意到此僅係一個實例,且實際上欄位620、625的任一者可用以指定早先提及的第一來源向量運算元,其中另一欄位則指定第二來源向量運算元。最後,欄位630可用以識別在陣列儲存器90內的目的2D陣列,該目的2D陣列被用以儲存作為執行由多外積指令指定的多個外積操作之結果所產生的矩陣。
如上文提到的,存在相關性資訊可以其表示的多種方式。圖13至圖15繪示相關性資訊可如何表示在一或多個述詞暫存器中的一些實例。
圖13顯示各述詞暫存器P0、P1保持用於一對應向量暫存器Z4、Z5的一組索引的第一實例,各組索引形成用於其之對應向量暫存器的相關性資訊。此實例中的各索引識別對應資料元素所來自之來源矩陣的暫存器(且因此間接識別來源矩陣的一列),其中第一(底部)列係列「0」且第四(頂部)列係列「3」。例如,述詞暫存器P0中的最左側元素(在此實例中,其保持向量暫存器Z4的相關性資訊)係「2」,指示向量暫存器Z4中的對應元素(最左側元素)係來自來源矩陣的第3列(例如,在此實例中,來自向量暫存器Z10)。
圖13的右側顯示MOP指令在此實例中可如何表示(在此情形中,識別為「FMOPA」指令)。在此實例中,對向量暫存器Z4、Z5的各者執行一單獨MOP指令,其中各MOP指令識別:
• 目的地陣列(ZAi),由處理電路系統計算的外積結果將寫至其;
• 述詞暫存器(P0或P1),保持待於執行MOP指令時使用的索引;
• 複數個第一來源向量暫存器(Z0至Z3),保持複數個第一來源向量運算元;及
• 第二來源向量暫存器(Z4或Z5),保持第二來源向量運算元以用於該操作。
圖14顯示相關性可如何表示的另一實例;在此實例中,使用相同的索引,但用於Z4及Z5二者的索引儲存在相同的述詞暫存器P0中。此實例利用表示各索引所需的位元數目一般顯著地小於述詞暫存器之各元素中的可用位元數目的事實–例如,此實例中的索引係至多2位元長(索引0、1、2、及3分別以二進位表示為00、01、10、及11),然而述詞暫存器之各元素中的位元數目可係4或更多。因此,本發明人認知到可將二個向量暫存器Z4、Z5的索引包裝至單一述詞暫存器中,降低由相關性資訊佔用的述詞暫存器的數目。具體而言,如圖14所示,各資料元素的上半部(例如,頂部的二個位元)可用以儲存向量暫存器的一者的對應資料元素的索引(例如,最左側元素的上半部儲存值「3」,其係Z5中的最左側元素的索引),而各資料元素的下半部(例如,底部的二個位元)可用以儲存向量暫存器之另一者的對應資料元素的索引(例如,最左側元素的下半部儲存值「2」,其係Z4中的最左側元素的索引)。
因此,如圖14之右側的指令組合語言語法所示,此實例需要二個略微不同的MOP指令(亦即,「FMOPA1」指令及「FMOPA2」指令),其中二者皆識別相同的述詞暫存器P0,但一者導致處理電路系統讀取各元素的頂部二個位元,且另一者導致處理電路系統讀取各元素的底部二個位元。為在二種類型的MOP指令之間區分,二個MOP指令的各者可,例如,具有不同的運算碼。替代地,二個指令的編碼可某種程度地不同。
因此,圖14中的各MOP指令指示:
• 目的地陣列(ZAi);
• 相同的述詞暫存器(P0);
• 複數個第一來源向量暫存器(Z0至Z3),保持複數個第一來源向量運算元;及
• 第二來源向量暫存器(Z4或Z5),保持第二來源向量運算元以用於該操作。
圖15顯示相關性資訊可如何表示的另一實例,其中二個向量暫存器Z4、Z5的相關性資訊經壓縮至單一述詞暫存器P0中。在此實例中,述詞暫存器P0中的各資料元素保持指示來源矩陣的對應列中的哪些資料元素保持非零值的位元映像。例如,述詞暫存器中的最左側資料元素讀取為「1100」,指示在來源矩陣的最左側行的頂部二個列中存在非零元素,且零在相同行的底部二個列中。可從此判定向量暫存器Z4、Z5中的最左側資料元素係來自來源矩陣的頂部二個(第2及第3)列。
當執行此實例中的MOP指令時,因此,處理電路系統判定對應位元映像中的第一或第二個「1」其中一者的位置以識別第一來源向量的何一者應在關聯外積操作中使用。
各指令指定:
• 目的地陣列(ZAi);
• 相同的述詞暫存器(P0);
• 複數個第一來源向量暫存器(Z0至Z3),保持複數個第一來源向量運算元;及
• 第二來源向量暫存器(Z4或Z5),保持第二來源向量運算元以用於該操作。
應注意,雖然圖14及圖15顯示對各第二向量運算元(Z4, Z5)執行一單獨MOP指令的實例,定義指定第二向量運算元二者的單一MOP指令亦係可行的。
如上文解釋的,結構化稀疏性係用於類神經網路模型之推斷(且不用於其等的訓練)的最佳化技術。因此,支援使用採腦浮點(Brain Floating Point) (bfloat16 / BF16)格式且使用為有正負號8位元整數(int8)之資料的模型係有利的。由於2路資料交錯一般使用在一些資料處理器中以用於bf16資料的外積,例如,圖9中的二個權重向量(Z4, Z5)經包裝至bf16元素的單一向量暫存器(Z
m)中,如圖16所示。類似地,將4個啟動向量(Z0:Z3)包裝至2個向量暫存器(Z
n, Z
n+1)中。圖16繪示使用bf16元素的多暫存器外積和方案的原理。述詞暫存器可含有如圖14所示的索引列表或如圖15所示的位元映像。
如圖16所示,此實例中的MOP指令係用於執行基本2路點乘積操作的外積和(sum-of-outer-products, SMOPA)指令。此實例中SMOPA指令指定:
• 目的地陣列(ZAi);
• 述詞暫存器(P
i);
• 複數個第一來源向量暫存器(Z
n, Z
n+1),保持複數個第一向量運算元;及
• 第二來源向量暫存器(Z
m),保持多個第二來源向量運算元。
在8位元資料類型(int8或uint8)的情形中,基本指令係具有在32位元上之累加的外積和指令。基本操作係在4路交錯資料上操作的4路點乘積。如圖17所示,在本發明之在8位元資料上操作的變體中,2個來源暫存器用於啟動(左側運算元)且一個來源暫存器用於權重(右側運算元)。由於4個元素係在指令之此變體中的8個元素中選擇(例如,2乘以4個中的2個元素),使用二個述詞暫存器。將8位元4對1多工器提供在各乘法器前方,以達成每循環一個操作的通量。
圖17的右側繪示MOP指令之此變體的形式。如圖所示,此實例中的MOP指令係外積和指令(SMOPA),其指定:
• 目的地陣列(ZAi);
• 述詞暫存器(P0, P1);
• 複數個第一來源向量暫存器(Z
n, Z
n+1),保持複數個第一向量運算元;及
• 第二來源向量暫存器(Z
m),保持多個第二來源向量運算元。
雖然圖17假設使用2:4稀疏性模式,在指令的替代變體中,4:8稀疏性模式與位元映像一起使用以選擇左運算元的來源元素。此變體將需要8對1,而非4對1,多工器。然而,指令的替代變體的形式將與圖17所示的該一者相同,因為運算元將係相同的。
就指令的使用而言,以下係繪示指令可如何使用的碼片段:
LD1B {Z0-Z3}, p0/Z, [&activations]
LD1B {Z4-Z5}, p1/Z, [&weights]
LDR p2, [&indexes]
LDR p3, [&indexes]
SMOPA ZA0.S, P2, {Z0.H-Z1.H}, Z4.H
SMOPA ZA1.S, P3, {Z0.H-Z1.H}, Z5.H
SMOPA ZA2.S, P2, {Z2.H-Z3.H}, Z4.H
SMOPA ZA3.S, P3, {Z2.H-Z3.H}, Z5.H
圖18係繪示根據一個實例實施方案之在解碼多外積指令時執行之步驟的流程圖。在步驟650,判定是否已遇到MOP指令。若否,則在步驟655處執行相關指令的標準解碼,其中處理電路系統接著被控制以執行由該指令界定的所需操作。
然而,若遇到MOP指令,則在步驟660,該指令經解碼以識別來源向量運算元(例如,複數個第一來源向量運算元及至少一個第二來源向量運算元)、目的2D陣列、相關性資訊、及待執行之外積的形式(例如,是否正執行累加外積,或正執行非累加變體,亦且,例如,是否將執行正常外積操作或將執行外積和操作)。
接著,在步驟665處,控制處理電路系統以執行所需外積操作,並執行對2D陣列儲存元件的所需更新。作為此程序的部分,控制選擇電路系統以取決於相關性資訊選擇用於各乘法操作的資料元素。
圖19繪示可使用的模擬器實施方案。雖然稍早所述之實施例以用於操作支援所關注技術的特定處理硬體之設備及方法來實施本發明,但亦可能根據本文所述之實施例提供一指令執行環境,其係透過使用電腦程式實施。此類電腦程式常稱為模擬器,因為其等提供硬體架構之基於軟體的實施方案。模擬器電腦程式的種類包括仿真器、虛擬機、模型、及二進制轉譯器(包括動態二進制轉譯器)。一般而言,模擬器實施方案可在可選地運行主機作業系統710、支援模擬器程式705的主機處理器715上運行。在一些配置中,在硬體與所提供的指令執行環境及/或相同的主機處理器上提供的多個相異指令執行環境之間可有多層模擬。歷史上,已需要強大的處理器來提供模擬器實施方案,其以合理速度執行,但此種方法在某些情況下可係有正當理由的,諸如當因為相容性或再使用原因此需要執行另一處理器原生的程式碼時。例如,模擬器實施方案可提供具有不為主機處理器硬體所支援之額外功能性的指令執行環境,或提供一般與不同的硬體架構相關聯的指令執行環境。模擬的綜述係於「Some Efficient Architecture Simulation Techniques」中給出,Robert Bedichek, Winter 1990 USENIX Conference,頁數53至63。
在先前已參照特定硬體架構或特徵來描述實施例之情況下,在一模擬實施例中,可藉由合適的軟體架構或特徵提供等效功能。例如,特定電路系統可在模擬實施例中實施為電腦程式邏輯–例如,模擬器程式705可包含處理程式邏輯720以仿真上文描述的處理電路系統的行為,及指令解碼程式邏輯以仿真上文描述的指令解碼器電路系統的行為。類似地,記憶體硬體(諸如,暫存器或快取記憶體)可在模擬實施例中實施為軟體資料結構–在此特定實例中,提供陣列儲存仿真程式邏輯722以仿真上文描述的陣列儲存器。於先前描述實施例中提及的硬體元件的一或多者存在於主機硬體(例如,主機處理器715)上的配置中,一些模擬實施例可在適當時利用主機硬體。
模擬器程式705可儲存在電腦可讀儲存媒體(其可係非暫時性媒體)上,並提供程式介面(指令執行環境)給目標碼700(其可包括應用程式、作業系統、及超管理器),該程式介面與藉由模擬器程式705模型化之硬體架構的介面相同。因此,包括上述MOP之目標碼700的程式指令可使用模擬器程式705在指令執行環境內執行,使得實際上不具有上述設備之硬體特徵的主機電腦715可仿真此等特徵。
在本申請案中,用語「經組態以...(configured to...)」係用以意指一設備的一元件具有能夠實行該經定義作業的一組態。在此上下文中,「組態(configuration)」意指硬體或軟體之互連的配置或方式。例如,該設備可具有專用硬體,其提供經定義的作業,或者一處理器或其他處理裝置可經程式化以執行該功能。「經組態以(configured to)」並不意味著設備元件需要以任何方式改變以提供所定義的作業。
雖然本文已參照附圖詳細地描述本發明的說明性實施例,應瞭解本發明不限於該等精確實施例,且所屬技術領域中具有通常知識者可於其中實行各種變化與修改,而不脫離如隨附申請專利範圍所定義的本發明的範圍。
10:資料處理系統
20:處理器
30:記憶體
32:資料值
34:程式指令
40:指令提取單元
50:指令解碼器電路系統;解碼器電路系統;解碼器
60:處理電路系統
65:暫存器儲存器;架構暫存器
70:純量暫存器檔案;純量暫存器
75:述詞暫存器檔案
80:向量暫存器檔案;向量暫存器
90:陣列儲存器
100:述詞暫存器
105:向量暫存器
110:陣列暫存器儲存器;陣列暫存器
200:儲存元件/位置
205:陣列
210:存取電路系統
220:存取電路系統
230:行選擇電路系統
240:列選擇電路系統
250:控制電路系統
255:乘法電路系統
260:資料元素
270:多工器
300:第一來源向量運算元
320:第二來源向量運算元
325:述詞暫存器
340:選擇電路系統
350:乘法電路系統
360:累加電路系統
370:陣列更新電路系統
380:二維儲存元件陣列;2D陣列
570:資料元素
572:資料元素
574:乘法功能
576:累加功能
578:儲存元件
580:資料元素
582:資料元素
584:乘法功能
586:資料元素
588:資料元素
590:乘法功能
592:加法功能
594:累加功能
596:儲存元件
605:運算碼欄位
610:控制資訊欄位
615:欄位
620:欄位
625:欄位
630:欄位
650:步驟
655:步驟
660:步驟
665:步驟
700:目標碼
705:模擬器程式
710:主機作業系統
715:主機處理器;主機電腦
720:處理程式邏輯
722:陣列儲存仿真程式邏輯
Id:索引
P0:暫存器;述詞暫存器
P1:述詞暫存器
P15:暫存器
P
i:述詞暫存器
VL:向量長度;儲存長度
Z0:向量暫存器;向量;啟動向量;向量運算元
Z1:向量暫存器;向量;啟動向量;向量運算元
Z2:向量暫存器;向量;啟動向量;向量運算元
Z3:向量暫存器;向量;啟動向量;向量運算元
Z4:向量暫存器;向量運算元;權重向量
Z5:向量暫存器;向量運算元;權重向量
Z8:向量暫存器
Z9:向量暫存器
Z10:向量暫存器
Z11:向量暫存器
Z31:向量暫存器
ZA(N
A-1):陣列儲存器;陣列暫存器識別符
ZA0:陣列儲存器;陣列暫存器識別符
ZAR:陣列向量暫存器
ZAR0:陣列向量暫存器
ZAR(NR-1):陣列向量暫存器
ZA
i:陣列識別符
Z
m:向量暫存器
Z
n:向量暫存器
Z
n+1:向量暫存器
本技術的進一步態樣、特徵、及優點將由於結合附圖閱讀的以下實例描述而顯而易見,在該等附圖中:
[圖1]繪示資料處理設備的方塊圖;
[圖2]顯示可提供在設備內之包括用於儲存向量運算元之向量暫存器、及用於儲存2D資料元素陣列之陣列暫存器的架構暫存器的實例,包括陣列暫存器之實體實施方案的實例;
[圖3A]及[圖3B]示意地繪示可如何對陣列儲存器內的方形2D陣列執行存取;
[圖4A]繪示外積操作;
[圖4B]繪示矩陣乘法操作;
[圖5]、[圖6A]、及[圖6B]繪示矩陣中的N:M結構化稀疏性;
[圖7]顯示使用乘法-累加(multiply-accumulate, MAC)陣列將啟動矩陣乘以權重矩陣的實例;
[圖8A]及[圖8B]繪示可如何壓縮具有2:4及4:8結構化稀疏性的矩陣;
[圖9]繪示待相乘之輸入矩陣的一者係經壓縮矩陣的矩陣乘法;
[圖10]係資料處理設備的方塊圖,繪示處理電路系統如何用以執行外積操作;
[圖11A]及[圖11B]繪示經產生外積結果可如何用以更新陣列儲存器之2D陣列內的關聯儲存元件;
[圖12]示意地繪示可提供在多外積指令內的欄位;
[圖13]至[圖15]繪示多個外積指令的實例及相關性資訊可如何表示的實例;
[圖16]及[圖17]繪示用於執行外積和操作之電路系統的實例;
[圖18]係繪示在解碼多外積指令時所執行之步驟的流程圖;及
[圖19]繪示可使用的模擬器實施方案。
255:乘法電路系統
270:多工器
Z0:向量暫存器;向量;啟動向量;向量運算元
Z1:向量暫存器;向量;啟動向量;向量運算元
Z2:向量暫存器;向量;啟動向量;向量運算元
Z3:向量暫存器;向量;啟動向量;向量運算元
Z4:向量暫存器;向量運算元;權重向量
Z5:向量暫存器;向量運算元;權重向量
Claims (20)
- 一種設備,其包含: 處理電路系統,用以執行向量操作;及 指令解碼器電路系統,用以解碼來自一組指令的指令以控制該處理電路系統執行由該等指令指定的該等向量操作, 其中: 該組指令包含指定複數個第一來源向量運算元、至少一個第二來源向量運算元、及與該至少一個第二來源向量運算元關聯的相關性資訊的一多外積指令,其中各向量運算元包含複數個資料元素,且對於一給定第二來源向量運算元,該相關性資訊經配置以對該給定第二來源向量運算元的各資料元素指示一對應第一來源向量運算元; 該指令解碼器電路系統回應於該多外積指令而控制該處理電路系統執行複數個運算以實施複數個外積操作,其中該複數個外積操作包含對一給定第一來源向量運算元執行一關聯外積操作以計算該給定第一來源向量運算元與該至少一個第二來源向量運算元的一資料元素子集的一外積;且 該處理電路系統經組態以取決於該相關性資訊為該至少一個第二來源向量運算元的各資料元素選擇待於執行該關聯外積操作時使用的一對應第一來源向量運算元。
- 如請求項1之設備,其包含 陣列儲存電路系統,其包含儲存資料元素的儲存元件,該陣列儲存電路系統經配置以儲存當執行該等向量操作時可由該處理電路系統存取的至少一個二維資料元素陣列, 其中: 該多外積指令將一給定二維資料元素陣列指定在形成一目的地運算元的該陣列儲存器內;且 該處理電路系統經組態以藉由將一給定第一來源向量運算元的各資料元素乘以該至少一個第二來源向量運算元的該資料元素子集中的各資料元素以產生複數個外積結果元素,且使用各外積結果元素更新保持在該給定二維儲存元件陣列內的一關聯儲存元件中的一值而執行該給定第一來源向量運算元的該關聯外積操作。
- 如請求項2之設備,其中該處理電路系統包含: 乘法電路系統,其在執行該複數個外積操作時用以產生各外積結果;及 多工器電路系統,其與該乘法電路系統關聯,該多工器電路系統在該相關性資訊的控制下選擇待相乘的該複數個第一來源向量運算元的一經選擇資料元素及該至少一個第二來源向量運算元的一經選擇資料元素以產生一關聯外積結果元素。
- 如前述請求項中任一項之設備,其中: 該相關性資訊包含至少一組索引;且 該至少一組索引包含將該給定第二來源向量運算元的各資料元素與該對應第一來源向量運算元關聯的一索引。
- 如請求項4之設備,其中: 該相關性資訊係由該多外積指令所指定的至少一個相關性來源運算元提供;且 一給定相關性來源運算元針對該給定第二來源向量運算元的各資料元素包含一對應元素,該對應元素包含將該給定第二來源向量運算元的該資料元素與該對應第一來源向量運算元關聯的該索引。
- 如請求項4或請求項5之設備,其中 該相關性資訊包含各第二來源向量運算元的一組索引。
- 如請求項4或請求項5之設備,其中 該至少一組索引包含提供用於複數個第二來源向量運算元的該相關性資訊的一組索引。
- 如請求項7之設備,其中: 該相關性資訊係由該多外積指令所指定的至少一個相關性來源運算元提供;且 一給定相關性來源運算元的各元素包含複數個索引,該複數個索引包含用於該複數個第二來源向量運算元之各者的一對應資料元素的一索引。
- 如前述請求項中任一項之設備,其中 由該處理電路系統執行的各外積操作係基於該至少一個第二來源向量運算元的一不同資料元素子集。
- 如前述請求項中任一項之設備,當依附請求項2時,其中: 該多外積指令包含一外積和指令;且 多個外積結果在該給定二維儲存元件陣列內具有相同的關聯儲存元件,且該處理電路系統經組態以組合該等多個外積結果以更新保持在該關聯儲存元件中的該值。
- 如前述請求項中任一項之設備,其包含: 一組向量暫存器,其可由該處理電路系統存取, 其中: 各向量暫存器經配置以儲存包含複數個資料元素的一向量;且 該複數個第一來源向量運算元及該至少一個第二來源向量運算元包含該組向量暫存器的向量暫存器內所含的向量。
- 如請求項11之設備,其包含 一組述詞暫存器,其可由該處理電路系統存取, 其中: 各述詞暫存器經配置以儲存包含複數個元素的述詞資訊,各元素提供一述詞值;且 該相關性資訊儲存在該組述詞暫存器的至少一個述詞暫存器內。
- 如前述請求項中任一項之設備,其中 各第二來源向量運算元中的該等資料元素表示來自一來源矩陣的複數個列或複數個行的資料值。
- 如請求項13之設備,當依附請求項8時,其中 該給定相關性來源運算元的各元素經配置以使該來源矩陣能從該至少一個第二來源向量運算元重建。
- 如請求項13或請求項14之設備,其中: 各第二來源向量運算元中的各資料元素與該來源矩陣中的一對應第一維關聯,其中該對應第一維包含該來源矩陣中的一對應列或一對應行;且 各第二來源向量運算元中的各資料元素提供從該來源矩陣中的該對應第一維中的該等資料值中選擇的一資料值。
- 如請求項13至15中任一項之設備,其中 該來源矩陣包含具有N:M結構化稀疏性的一矩陣,其中該來源矩陣中的各經定義的M個資料值群組包含至多N個非零資料值。
- 如請求項13至16中任一項之設備,其中 該來源矩陣包含用於在執行一人工類神經網路時使用的一權重矩陣或一啟動矩陣。
- 一種方法,其包含: 使用處理電路系統執行向量操作; 解碼來自一組指令的指令以控制該處理電路系統執行由該等指令指定的該等向量操作, 其中: 該組指令包含指定複數個第一來源向量運算元、至少一個第二來源向量運算元、及與該至少一個第二來源向量運算元關聯的相關性資訊的一多外積指令,其中各向量運算元包含複數個資料元素,且對於一給定第二來源向量運算元,該相關性資訊經配置以對該給定第二來源向量運算元的各資料元素指示一對應第一來源向量運算元; 該方法包含回應於該多外積指令而執行複數個運算以實施複數個外積操作,其中該複數個外積操作包含對一給定第一來源向量運算元執行一關聯外積操作以計算該給定第一來源向量運算元與該至少一個第二來源向量運算元的一資料元素子集的一外積;及 取決於該相關性資訊為該至少一個第二來源向量運算元的各資料元素選擇待於執行該關聯外積操作時使用的一對應第一來源向量運算元。
- 一種包含指令的電腦程式,該等指令在一電腦上執行時,控制該電腦以提供: 處理程式邏輯,用以執行向量操作;及 指令解碼器程式邏輯,用以解碼來自一組目標指令的目標指令,以控制該處理程式邏輯執行由該等目標指令指定的該等向量操作, 其中: 該組目標指令包含指定複數個第一來源向量運算元、至少一個第二來源向量運算元、及與該至少一個第二來源向量運算元關聯的相關性資訊的一多外積指令,其中各向量運算元包含複數個資料元素,且對於一給定第二來源向量運算元,該相關性資訊經配置以對該給定第二來源向量運算元的各資料元素指示一對應第一來源向量運算元; 該指令解碼器程式邏輯回應於該多外積指令而控制該處理程式邏輯執行複數個運算以實施複數個外積操作,其中該複數個外積操作包含對一給定第一來源向量運算元執行一關聯外積操作以計算該給定第一來源向量運算元與該至少一個第二來源向量運算元的一資料元素子集的一外積;且 該處理程式邏輯經組態以取決於該相關性資訊為該至少一個第二來源向量運算元的各資料元素選擇待於執行該關聯外積操作時使用的一對應第一來源向量運算元。
- 一種電腦可讀儲存媒體,其儲存如請求項19之電腦程式。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2213475.3 | 2022-09-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202411860A true TW202411860A (zh) | 2024-03-16 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10656944B2 (en) | Hardware apparatus and methods to prefetch a multidimensional block of elements from a multidimensional array | |
GB2474901A (en) | Multiply-accumulate instruction which adds or subtracts based on a predicate value | |
KR20190119074A (ko) | 데이터 처리장치에서의 산술 확대 | |
CN110312993B (zh) | 数据处理装置中的向量逐元素操作 | |
KR20190119076A (ko) | 데이터 처리장치에서의 곱셈-누적 | |
EP4189537A1 (en) | Register addressing information for data transfer instruction | |
CN109992243A (zh) | 用于矩阵操作的系统、方法和装置 | |
CN114327362A (zh) | 大规模矩阵重构和矩阵-标量操作 | |
JP7324754B2 (ja) | ベクトル・キャリー付き加算命令 | |
EP3655852B1 (en) | Vector interleaving in a data processing apparatus | |
TW202411860A (zh) | 多外積指令 | |
WO2021250392A1 (en) | Mixed-element-size instruction | |
GB2622581A (en) | Multiple-outer-product instruction | |
CN110914800B (zh) | 基于寄存器的复数处理 | |
GB2617828A (en) | Technique for handling data elements stored in an array storage | |
WO2023199015A1 (en) | Technique for handling data elements stored in an array storage | |
TW202349232A (zh) | 用於執行外積操作之技術 | |
TW202305588A (zh) | 用於向量組合指令之處理設備、方法、及電腦程式 | |
JPS6252899B2 (zh) |