TWI759373B - 複製元件指令 - Google Patents
複製元件指令 Download PDFInfo
- Publication number
- TWI759373B TWI759373B TW106142869A TW106142869A TWI759373B TW I759373 B TWI759373 B TW I759373B TW 106142869 A TW106142869 A TW 106142869A TW 106142869 A TW106142869 A TW 106142869A TW I759373 B TWI759373 B TW I759373B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- instruction
- segment
- data
- copy
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims abstract description 422
- 238000012545 processing Methods 0.000 claims abstract description 96
- 238000000034 method Methods 0.000 claims description 38
- 230000004044 response Effects 0.000 claims description 23
- 238000003672 processing method Methods 0.000 claims description 3
- 230000003362 replicative effect Effects 0.000 claims 1
- 238000005192 partition Methods 0.000 description 289
- 239000011159 matrix material Substances 0.000 description 55
- 230000015654 memory Effects 0.000 description 25
- 238000013507 mapping Methods 0.000 description 12
- 238000013459 approach Methods 0.000 description 9
- 230000001066 destructive effect Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000009466 transformation Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000003550 marker Substances 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
- 230000006855 networking Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer 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/30018—Bit or string 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Separation By Low-Temperature Treatments (AREA)
- Bidet-Like Cleaning Device And Other Flush Toilet Accessories (AREA)
Abstract
一種定義結果向量中的複數個可變長度分段的複製元件指令控制處理電路系統(80)產生結果向量,其中在每個相應分段中,在該結果向量之整個彼分段中重複重複值,該重複值包含源向量之已選資料元件的資料值或元件索引。此指令係用於加速小於向量長度之資料結構的處理。
Description
本技術係關於資料處理領域。更特定言之,本發明係關於向量指令之處理。
一些資料處理系統支援向量指令之處理,對此該指令的源運算元或結果值係包含多個資料元件的向量。藉由回應於單個指令來支援數個不同的資料元件的處理,可改良代碼密度並降低指令擷取及解碼的額外負擔。可藉由將資料值載入向量運算元之相應元件中並使用單個向量指令一次處理若干元件之資料值來更有效地處理待處理之資料值陣列。
至少一些實例提供了一種設備,其包含: 處理電路系統,用以對包含複數個資料元件的向量執行向量處理操作;以及 指令解碼器,用以解碼程式指令以控制該處理電路系統來執行該等向量處理操作; 其中回應於規定分段資訊的複製元件指令,該分段資訊定義複數個可變大小分段在結果向量內的位置,每個分段包含該結果向量的至少一個資料元件並且至少一個分段包含該結果向量的複數個相鄰資料元件,該指令解碼器經配置以控制該處理電路系統產生該結果向量,其中在每個相應分段中,在該結果向量之整個彼分段中重複重複值,該重複值包含於源向量之該對應分段之已選資料元件位置處的資料值或指示該已選資料元件位置的元件索引。
至少一些實例提供了一種用於包含處理電路系統的設備的資料處理方法,該處理電路系統用以對包含複數個資料元件的向量執行向量處理操作;該方法包含: 解碼規定分段資訊之複製元件指令,該分段資訊定義複數個可變大小分段在結果向量內的位置,每個分段包含該結果向量的至少一個資料元件並且至少一個分段包含該結果向量的複數個相鄰資料元件;以及 回應於該複製元件指令,產生結果向量,其中在每個相應分段中,在該結果向量之整個彼分段中重複重複值,該重複值包含於源向量之該對應分段之已選資料元件位置處的資料值或指示該已選資料元件位置的元件索引。
至少一些實例提供了一種儲存用於控制電腦之虛擬機器程式的電腦可讀儲存媒體,用以提供對應於上文所述之設備的指令執行環境。
將在下文描述一些具體實例。應瞭解本技術不限於此等準確實例。
資料處理設備可具有:處理電路,用以對包含複數個資料元件之向量執行向量處理操作;以及指令解碼器,用以解碼程式指令以控制處理電路執行向量處理操作。對於眾多處理應用,向量處理可取決於向量長度(在一個向量中的資料元件數量)而使效能改良一倍數。然而,發明者認識到例如在數位信號處理(DSP)、高效能計算(HPC)及網路連接應用中存在一些演算法,對此正處理之資料維度可限制效能,使得增加向量長度不導致對應效能加速。此演算法之實例可係涉及具有相對小維度(例如,2x2、3x3、4x4、3x2、等等)之矩陣之矩陣乘法的演算法。由於眾多向量通道可歸因於正操作之小資料維度而保持未填充,將標準向量指令應用至此演算法可導致低效之效能。 複製分區指令
指令解碼器可支援規定分區資訊的複製分區指令,該分區資訊定義兩個或多個可變大小分區在結果向量內的位置。回應於複製分區指令,指令解碼器控制處理電路產生結果向量,其中具有一個以上的資料元件的每個分區包含於已選資料元件位置開始或結束的源向量之相鄰資料元件序列的資料值或用指示該已選資料元件位置之元件索引開始或結束的元件索引的遞增序列。
因此,指令可利用在源向量中於已選資料元件位置開始的資料元件序列的資料值或針對該元件序列之對應元件索引填充(populate)結果向量之相應分區,其中分區的位置係可變的並由指令規定。此指令可有助於加速演算法之向量化處理,其中資料結構具有與向量長度相比相對小的維度。例如,此舉可允許利用資料結構之對應行或列的資料值或元件索引來填充每個分區,其中在相同向量內封裝給定行或列之若干實例。
存在用於編碼定義分區位置之分區資訊的數個選項。在一個實例中,分區資訊包含分區遮罩資訊(其可參考暫存器或作為緊接值規定),該分區遮罩資訊包括一個或多個標記位元,每個標記位元識別在結果向量內分區的開始或結束。因此,藉由利用在遮罩內之不同位置中的標記位元編碼分區遮罩資訊,可定義不同數量、位置及大小之分區。此舉可用於支援具有不均勻之行或列長度之資料結構的處理。
或者,分區資訊可包含指示每個分區資料元件之數量的分區大小資訊。例如,分區大小資訊可係指示資料元件之數量的純量值。在一些實例中,例如,藉由規定指示在每個分區中的元件數量的純量值陣列,分區大小資訊可分別針對每個分區規定資料元件的數量。然而,若需要不同大小之分區,則可更有效地使用上文實例中之遮罩來編碼該分區。
在其他實例中,複製分區指令之編碼可限制不同於第一或最後分區的全部分區以具有相同數量之資料元件。例如,複製分區指令可規定單個純量值,該純量值規定每個分區之期望大小。可將定義分區大小資訊之純量值規定為暫存器緊接值或參考暫存器規定。或者,複製分區指令可規定控制遮罩,其中分區大小可由第一或最後主動位元相對於固定參考點的位置來識別、或藉由在遮罩的第一主動位元與最後主動位元之間的資料元件數量來識別。利用針對每個分區規定單個分區大小的編碼,若其中將定義分區的向量之主動區域之長度係分區大小之準確倍數,則全部分區可具有相同大小。然而,若在主動區域中資料元件之數量非分區大小之準確倍數,則可截斷第一或最後分區,使得其與其他分區相比具有較少元件(由於第一或最後分區之大小可由分區大小以及主動區域之向量長度或大小暗示,在指令中不需要明確地編碼該第一或最後分區之大小)。限制每個分區(不同於第一或最後分區)以具有相同數量之資料元件的指令可在指令集架構中需要較少編碼空間並且可足夠支援使用資料結構的眾多常見處理演算法,其中全部行或列具有相同長度(例如,方形或矩形矩陣之矩陣乘法)。
針對複製元件指令之一些實例,指令編碼可包括用於將不同資料元件位置識別為每個分區之已選資料元件位置的資訊。例如,指令可規定步距參數,該步距參數識別在針對給定分區之已選資料元件位置與下一分區之已選資料元件位置之間的常見步距差異。
然而,對其他實例,每個分區的已選資料元件位置可是相同的。因此,複製分區指令可有效地導致在結果向量內重複資料值或元件索引之給定序列數次(注意到,若分區資訊定義在相同結果向量內的不同大小之分區,則可相對於其他重複截斷一些重複)。在結果向量內重複資料值或元件索引之給定序列數次的能力對於矩陣或相似資料結構之處理而言可係非常有用的。例如,在矩陣乘法中,矩陣之相同行可需要乘以在數個不同列中的值,因此藉由在結果向量內複製矩陣之給定行多次,可在指令之向量化迴圈之單個迭代中處置結合行與相應列之多個迭代。
在一些實例中,複製分區指令可支援其中利用對應於向量之不相鄰資料元件之序列的源向量資料值或元件索引來填充每個分區的情形。例如,複製分區指令之變化可於由步距參數定義之間隔拾取元件(例如,具有步距2的元件0、2、4、6…或具有步距3的元件0、3、6…的序列,諸如)。
然而,在其他實例中,分配至每個分區的序列可係源向量之相鄰元件的序列或對應於彼等相鄰元件之元件索引的遞增序列。以利用元件之連續區塊的資料值或元件索引填充來限制每個分區可簡化指令編碼以及用於執行該指令的硬體,並且可足夠支援常見地執行之算術運算,諸如矩陣算術,其中例如可期望擷取對應於矩陣之行的元件並重複數次。
在一些實例中,在不具有任何識別在編碼複製分區指令時定義的已選資料元件位置之資訊的情況下,已選資料元件位置可預設至源向量內之特定位置處來規定。例如,按預設已選資料元件位置可係最低有效資料元件(在已選資料元件位置標記資料元件序列之開始的實例中,對此資料值或元件索引將分配至每個分區)。眾多向量處理演算法可通常填充於最低有效元件處開始的向量,因此此指令仍可支援大部分使用情形並且與於源向量內之任意位置處開始的指令支援序列相比,需要較少編碼空間。相似地,針對已選資料元件位置標記資料元件序列之結束的實例,該已選資料元件位置可係最高有效資料元件位置。
然而,在其他實例中,已選資料元件位置可係可變的並且由在複製分區指令內編碼之元件選擇資訊規定。分區位置資訊可以不同方式編碼,例如,經由具有由遮罩中的第一或最後主動位元之位置識別的已選資料元件位置的遮罩值編碼、或藉由規定該已選資料元件位置之純量值編碼。藉由允許複製分區指令從源向量擷取對應於源向量內之任意位置的資料元件序列(或輸出對應元件索引),此舉可減少對預先操控源向量以將期望資料放置在向量內之所需位置中的其他指令的需求,進而有助於減少計算給定處理結果所需之指令總量。
利用複製分區指令之一些實例(例如,當使用具有識別每個分區之開始/結束的標記位元之遮罩來定義分區資訊時),指令可支援其中至少一個分區包含單個元件的編碼。當定義包含單個元件之分區時,可利用對應於源向量內之已選資料元件位置的資料值或元件索引來填充彼元件。
在一些實例中,分區資訊可定義在整個結果向量內的分區,亦即,整個向量可被認為係主動部分。
然而,在其他實例中,複製分區指令可規定主動部分資訊,該主動部分資訊定義包含分區的結果向量之主動部分。針對此指令,在主動部分內之元件利用對應於如上文所論述之資料元件序列的資料值或元件索引來填充,但在主動部分外之元件可採取不同值。例如,在主動部分外之元件可經設定為諸如零之預定值,或可保留用以儲存結果向量的目的暫存器之對應資料元件之先前值。主動部分資訊可以不同方式編碼,例如,使用包含標記主動部分內之元件的一系列主動位元的遮罩(或述語)值。或者,主動部分可使用具有標記主動部分末端之主動位元的控制遮罩來定義、或藉由使用規定主動部分大小之純量值來定義,其中該主動部分假設按預設為於向量之最低有效末端處開始。
在一些情形中,常見控制值可具有結合之編碼,該編碼規定分區資訊(定義分區在結果向量內的位置)、元件選擇資訊(定義待分配至每個分區的序列之開始/結束)及主動區域資訊(定義其中將形成分區的結果向量之元件)的兩個或多個。例如,主動部分資訊及分區資訊可使用常見位元遮罩來編碼,其中每個位元對應於結果向量之給定資料元件並且可設定為主動值(1與0的一個)或非主動值(1與0的另一個)。最低有效主動位元在位元遮罩中之位置指示每個分區之大小,並且最高有效主動位元在位元遮罩中之位置指示主動部分之大小。已選資料元件位置可暗示假設為源向量之最低有效資料元件位置,並且主動部分之開始亦可暗示地於最低有效資料元件位置處開始。分區大小亦暗示地識別分區在結果向量內的位置,進而定義分區之重複圖案,其中重複規定大小之分區直至到達主動區域之末端(其中若必須的話,截斷最後重複)。此類型之指令允許在單個控制遮罩中複製分區指令之控制參數的相對有效編碼,同時支援眾多常見使用情形,以避免需要消耗額外控制暫存器。
複製分區指令可在硬體中以不同的方式實施。在一些情形中,可已經提供了用於將源向量之任意定位的資料元件映射至結果向量內之任意位置的一般置換單元,在此情形中該一般置換單元可重複用於實施複製分區指令。然而,由於複製分區指令所需的源至結果映射之集合可係由一般置換單元支援的映射之受限子集,在其他實例中,可提供僅支援複製分區指令所需之映射的一些定製硬體,由於若複製分區指令從不需要此元件映射,則該定製硬體可允許省略將源向量之給定元件鏈接至結果向量之給定元件的一些資料線,該定製硬體可係更高效的。因此,應瞭解,處理電路可使用提供上文所論述之形式的結果向量的任何電路來處理複製分區指令。
可提供數種不同形式之複製分區指令。回應於規定儲存源向量之源暫存器的源變換形式之複製分區指令,指令解碼器可控制處理電路產生結果向量,其中具有一個以上的資料元件之每個分區包含於已選資料元件位置處開始或結束的源向量之資料元件序列之資料值。因此,此形式之指令從源向量擷取所需的資料值序列並將彼等資料值映射至結果向量內的相關分區。
或者,複製分區操作可在單個指令中與載入操作結合。在此情形中,不是儲存在暫存器中,而是源向量可對應於儲存在資料儲存器(諸如記憶體)中之資料元件集合。回應於載入複製形式之複製分區指令,指令解碼器可控制處理電路從資料儲存器載入源向量之至少部分並產生結果向量,其中重複圖案包含來自源向量的資料元件序列之資料值。此舉可將等同結果給予源變換形式之複製分區指令,但避免需要分配獨立向量暫存器以用於儲存源向量,這可有助於降低暫存器壓力。
在另一實例中,不是將源向量之實際資料值映射至結果向量之資料元件,而是索引產生形式之複製分區指令可利用以指示已選資料元件位置之元件索引開始或結束的元件索引之遞增序列來填充結果向量之每個分區。獲自索引產生形式之指令的結果向量可有效地被視為控制向量,該控制向量可隨後由後續指令使用以控制從源向量至進一步結果向量的資料元件之映射。例如,後續指令可係收集載入指令,該收集載入指令將資料值從記憶體載入結果向量之相應元件中,其中基於控制向量內之對應元件索引決定用以針對結果向量之每個元件識別載入之資料值之位址的位址位移。或者,後續指令可係一般置換指令,該一般置換指令使來自向量內之任何任意位置的資料值能夠被映射至結果向量內之任何資料元件位置,其中獲自先前執行的索引產生形式之複製分區指令的控制向量規定應將源向量之哪個元件映射至結果之每個元件。
源變換及載入複製形式之複製分區指令可被看作「融合」之指令,其中將資料值之已選序列從源向量映射至結果向量內之相應分區的總體操作係由單個指令控制。此方法可提供增加之效能並且可允許使用針對此操作定製設計的更有效之電路。
另一方面,索引產生指令可被視為「解融合」之指令,其中將資料值從源向量映射至結果向量之分區的總體操作可被分為兩個獨立指令,其中索引產生指令接著另一指令。取決於已經支援了哪種其他指令,在微架構中實施此方法可有時係更為簡單的。例如,若特定實施方式已經支援了允許源向量之資料元件至結果向量之任何資料元件位置的任何任意映射的一般置換指令,則由於與提供了支援「融合」之指令(諸如源變換或載入複製形式之複製分區指令)的定製電路的情形相比,索引產生指令可需要較少額外電路,添加索引產生指令之功能以使得索引產生指令之結果可用作控制一般置換指令的輸入可係更有效的。
一些實施方式可僅支援上文所論述的源變換、載入複製及索引產生形式之複製分區指令的一個。其他實施方式可支援一個以上的此等形式之指令,其中指令作業碼或指令編碼之另一參數指示將執行哪種形式。 複製元件指令
指令解碼器可支援規定分段資訊之複製元件指令之解碼,該分段資訊定義兩個或多個可變大小分段在結果向量內的位置,其中每個分區包含該結果向量的至少一個資料元件並且至少一個分區包含該結果向量之複數個資料元件。回應於複製元件指令,指令解碼器控制處理電路產生結果向量,其中在每個相應分段中,在結果向量之整個彼分段中重複重複值,該重複值包含於源向量之對應分段之已選資料元件位置處的資料值或指示該已選資料元件位置的元件索引。
因此,複製元件指令定義結果向量中之多個可變大小分段,並且在每個分段中,一個重複值在彼分段中重複若干次。每個分段的重複值可係不同的,並且該重複值可係源向量中的對應分段之已選資料元件之資料值或彼已選資料元件之元件索引。此指令可用於演算法(諸如矩陣乘法),其中資料結構具有小於向量長度的維度,其中單個資料值經常需要乘以矩陣之給定行或列內的每個值,因此藉由定義對應於行/列結構的分區並選擇不同值作為在不同分區中重複的單個值,此舉可允許在向量化迴圈之單個迭代中執行針對若干行/列的乘法之若干迭代以有助於改良效能。複製元件指令亦可用於各種其他類型之處理操作。
分段資訊可以不同方式編碼(例如,針對複製分區指令之分區資訊的上文所論述之任何技術可用於針對複製元件指令之分段資訊的對應方式中)。例如,可使用包含標記位元的分段遮罩資訊,該標記位元識別結果向量內之每個分段的開始或結束。或者,分段資訊可規定指示每個分段中資料元件之數量的分段大小資訊(例如,控制遮罩或純量值)。一些實例可支援相同結果向量內之不同大小之分段,而其他方法可限制不同於第一或最後分段的全部分段以具有相同數量的資料元件(若利用分段填充之主動區域之大小非分段大小之準確倍數,則第一或最後分段可具有不同大小)。
複製元件指令亦可針對每個分段規定指示已選資料元件位置的元件選擇資訊(該元件選擇資訊定義了在整個每個分段中重複源向量之哪個特定元件或哪個特定元件索引)。元件選擇資訊可以不同方式編碼。在一些情形中,指令之編碼可獨立地針對每個分段規定元件選擇資訊(例如,控制遮罩可具有識別每個分段中之已選元件位置的主動位元)。在其他一些情形中,指令之編碼可限制全部分段以具有相同的已選資料元件位置。例如,元件選擇資訊可係規定值N的純量值,用以指示每個分段的第N個元件將為已選元件。
在一些實例中,複製元件指令可規定主動部分資訊,該主動部分資訊指示包含複數個分段的結果向量之主動部分,並且回應於複製元件指令,指令解碼器可控制處理電路產生結果向量,其中在主動部分外的至少一個資料元件具有預定值或用於儲存結果向量的目的暫存器之對應資料元件之值。此舉允許「掩蔽掉」結果向量之剩餘部分以使得不利用重複元件填充該等剩餘部分,例如,若正處理之資料結構具有使得不可以完全利用資料結構之行或列填充向量長度的維度,則這可係有用的。
然而,其他實例可基於複製元件指令認為整個結果向量係利用每個分段中之重複值填充的主動部分。在此情形中,不需要規定任何主動部分資訊。
以與複製分區指令相似的方式,可提供源變換、載入複製及索引產生形式之複製元件指令。同樣,可選擇任何特定實施方式以實施此等形式之指令的僅一個、或兩個或多個。用以實施複製元件指令之電路可取決於微架構實施方式而變化(例如,可使用通用置換單元,或如複製元件指令所需,更多定製電路經設計以支援更多元件映射之受限子集)。因此,一般而言,可使用回應於解碼之複製元件指令而提供於架構位準定義的行為的任何電路。
注意到,儘管複製分區指令及複製元件指令可支援定義兩個或多個分區的編碼,其中至少一個分區包含結果向量的一個以上之資料元件,存在此等指令之有效編碼,該有效編碼亦可允許利用分區之其他配置來定義結果向量,例如,僅利用單個分區、或利用每個包含單個資料元件的數個分區來定義結果向量。此舉可允許使用相同指令以執行其他類型之操作,諸如直接將源向量之每個元件映射至主動區域內的結果向量之對應元件、或在整個結果向量中重複源向量之相同資料元件。支援此等額外編碼可提供ISA中之其他指令以用於控制此等不必要之操作,用以允許更有效地使用編碼空間。儘管如此,複製分區指令及複製元件指令之編碼可使得表示複製分區指令或複製元件指令的位元值之至少一個圖案意味著結果向量將包含多個分區,其中至少一個分區包含一個以上的資料元件。
一些實施方式可僅實施複製分區指令及複製元件指令的一個。例如,如在以下實例中所示,即使不提供複製元件指令,複製分區指令可用於FFT演算法,並且即使不提供複製分區指令,複製元件指令可用於框架乘以框架之矩陣乘法。
然而,由於支援複製分區指令及複製元件指令的實施方式允許利用在向量化迴圈之單個迭代中處置的矩陣之多行來計算使用相對小維度之矩陣的矩陣乘法,該等實施方式係特別有用的。
上文所論述之指令亦可在虛擬機器中實施。虛擬機器可用以在系統上模擬給定架構之處理硬體,該系統本身不具有彼硬體。通用電腦可執行虛擬機器程式以提供對應於設備之指令執行環境的指令執行環境,該設備具有支援複製分區指令或複製元件指令的硬體,使得此等指令可在虛擬機器內執行以給出與實際上提供了硬體相同的結果。虛擬機器電腦程式可在非暫時記錄媒體上儲存。 示例實施例
第1圖係其中可採用所描述實施例之技術的系統的方塊圖。在第1圖所示的實例中,系統採取管線式處理器之形式。藉由擷取電路10從指令快取記憶體15(該快取記憶體通常經由一個或多個進一步級別之快取記憶體諸如2階快取記憶體50耦接至記憶體55)擷取指令,從擷取電路10可將此等指令經由解碼電路20傳遞,該解碼電路解碼每個指令以產生用於在管線式處理器內控制下游執行資源之適當控制信號,以執行該等指令所需之操作。將形成解碼指令之控制信號傳遞至發佈級電路25以用於發佈至管線式處理器內的一個或多個執行管線30、35、40、80。可認為執行管線30、35、40、80共同形成處理電路。
發佈級電路25可存取暫存器60,其中可儲存操作所需之資料值。特定言之,向量運算之源運算元可儲存在向量暫存器65內,並且純量運算之源運算元可儲存在純量暫存器75中。此外,一個或多個述語(遮罩)可儲存在述語暫存器70中,當執行某些向量運算時用作所處理之向量運算元之資料元件的控制資訊。一個或多個純量暫存器亦可用以儲存資料值,該資料值用以導出此控制資訊以在執行某些向量運算期間使用。
源運算元及任何關聯之控制資訊可經由路徑47路由至發佈級電路中,使得可將其等連同識別待執行之運算(多個運算)的控制信號發送至適當執行單元以實施每個解碼之指令。假設第1圖所示之各個執行單元30、35、40、80為用於對向量運算元進行操作之向量處理單元,但若需要可提供獨立執行單元(未顯示)以處置由設備支援之任何純量運算。
考慮到各種向量運算,可例如將算術運算連同所需源運算元(及任何控制資訊,諸如述語)轉發到算術邏輯單元(ALU) 30,以實現待對彼等源運算元執行算術或邏輯運算,其中結果值通常輸出為儲存在向量暫存器組65之規定暫存器中的目的運算元。
除了ALU 30外,可提供其他執行單元35,例如,用於回應於解碼之浮點指令而執行浮點運算的浮點單元(FPU)、及用於對向量運算元執行某些置換運算的向量置換單元80。此外,載入/儲存單元(LSU) 40係用於執行載入運算以將資料值從記憶體55(經由資料快取記憶體45及任何介入之進一步級別之快取記憶體,諸如2階快取記憶體50)載入暫存器集合60內之規定暫存器中,並用於執行儲存運算以將資料值從彼等暫存器儲存回記憶體55。
第1圖所示之系統可係有序處理系統,其中按程式順序執行指令序列,或替代地可係無序系統,允許其中出於嘗試改良效能之目的而重新排序執行各個指令的順序。熟習該項技術者應理解,在無序系統中,可提供額外結構(未在第1圖中明確圖示),例如,提供暫存器重命名電路以將指令所規定之架構暫存器映射至來自暫存器組45中之實體暫存器池的實體暫存器(該實體暫存器池通常大於架構暫存器之數量),由此實現移除某些風險,促進無序處理的更多使用。此外,通常可提供重排序緩衝器以追蹤無序執行並允許按順序實行各個指令的執行結果。
在所描述之實施例中,佈置第1圖之電路以對向量暫存器65中儲存之向量運算元執行向量運算,其中向量運算元包含複數個資料元件。針對對此向量運算元執行的某些向量運算(諸如算術運算)而言,可將所需運算並行(或迭代)應用至向量運算元內的各個資料元件。述語資訊(亦稱為遮罩)可用以識別向量內的哪些資料元件係特定向量運算的主動資料元件,並且因此係應對其應用運算的資料元件。
第2圖圖示了在述語暫存器70之一中儲存的述語值Pg的控制下對在對應向量暫存器60中儲存之兩個向量運算元Za、Zb執行的向量運算的實例。在此實例中,應用至每個向量通道之獨立運算係乘法運算,使得將對應於述語Pg中主動位元(設定為1)之結果向量Zd的元件設定為乘以運算元Za、Zb之對應位置處之元件的結果。對應於述語Pg之非主動位元(0)的結果向量Zd之元件可以設定為零,或可保留與目的暫存器之對應部分相關的先前值。此預測可用於支援條件運算,其中先前指令可根據向量之元件是否滿足某些準則來設定述語值Pg,及/或此預測可用於當不存在足夠資料以完全填充向量運算元時在向量化迴圈之最後迭代中將向量之一些上部元件標記為非主動。
在一些微架構實施方式中,可提供處理邏輯以對每個向量元件並行執行運算。然而,其他實施方式可提供對應於與整個向量長度相比較小之資料寬度的處理硬體,並且在此情形中,向量指令可在多次穿過較狹窄硬體時處理,每次穿過產生結果向量之元件之對應子集。一些實施方式甚至可使用對應於單個資料元件之寬度的硬體順序地產生結果之每個元件。儘管在可並行處理較寬向量的實施例中,甚至在順序地處理向量之一些部分的實施例中效能係最大的,歸因於處理給定量資料所需的減少之指令擷取、解碼及發佈頻寬,向量化仍可相對於純的純量指令改良效能。
儘管第2圖圖示了其中每個向量包括8個資料元件的實例,這僅係實例並且其他實施方式可使用其他配置、或可支援對具有可變數量或大小之資料元件的向量的向量運算。指令集架構可經設計以與廣泛微架構實施方式一起使用,該微架構實施方式可提供不同大小之向量處理路徑及向量暫存器,使得可在利用不同向量大小運算的不同平臺上執行相同指令。與使用較長向量長度之實施方式相比,使用較短向量長度之實施方式可需要向量化迴圈之更多迭代(向量化迴圈係包含向量指令之迴圈,其中在迴圈中的每個迭代從記憶體載入資料塊、根據一些定義系列之處理操作處理所載入向量的每個元件、以及將結果儲存回記憶體)。
在涉及HPC、DSP及網路連接域之各個演算法中,涉及小維度(諸如2x2、3x3、4x4、等等)的矩陣乘法可係常見使用情形。其亦係基於區塊之變換運算的主幹,其中,對較大框架資料(諸如像素值)執行小維度方形矩陣乘法運算,這常見在視訊及影像處理演算法中使用。具有小維度之矩陣提出了針對向量化的獨特問題,其中輸入資料之維度形成優化之限制因素而非向量長度。因此,增加向量長度將不改良效能並且此等演算法不可以隨著較高向量長度而按比例放大。具有寬向量長度之向量實施方式受此問題影響最大。以下實例示出此問題。
一種用於向量化純量矩陣乘法之方法係藉由將完整行/列(或行/列之部分,若向量長度小於行/列長度)讀取至向量暫存器且並行處理多個元件以產生輸出值。此方法隨著向量長度良好地按比例增加,只要存在足夠的用以填充每個迭代中之向量暫存器的資料,亦即,針對具有與向量長度之維度相比較大之維度的矩陣。在較高向量長度的情況下,可在向量暫存器中封裝更多資料,由此有效地減少迭代數量並改良效能。
然而,在DSP、HPC及網路連接中的眾多演算法中,對小維度進行矩陣運算。進一步地,在一些情形中,此等維度非2的倍數。亦在眾多影像及視訊處理演算法中,運算對較大資料框架進行,使得即使矩陣運算本身係對較小維度進行,運算在區塊乘以區塊之圖案上重複以覆蓋整個框架資料。利用可變向量長度(VL)實施小維度之MxM矩陣乘法的簡單向量方法應係以下形式: 然而,若矩陣之維度與向量長度相比係較小的,亦即,針對MxM矩陣,其中VL/M>=2,VL係向量長度(每個向量之元件數量),並且M係矩陣寬度,則用於向量化矩陣乘法的此方法具有嚴重效能缺陷。
對具有寬向量長度之SIMD機器,用於向量化小維度之矩陣乘法的此方法導致: •使用在小的行/列維度上操作的寬向量暫存器將導致向量暫存器之部分使用,其中不使用大部分通道。此舉導致具有大量稀疏填充之向量暫存器的實施方式並顯著減少通道使用 •設計將不隨著具有較高向量長度之機器放大。由於僅可在向量暫存器中封裝一行/列,演算法與向量長度無關地給出相同效能。 •設計之優化範疇由矩陣寬度限制並且獨立於向量長度。
因此,期望提供指令集架構特徵,該特徵使向量處理器能夠在較小資料維度上操作,但同時採用較高向量長度之優點。以下指令實現向量分區(或「數個向量中向量」)方法,其中不同維度之資料可在單個向量暫存器中處理。
下文描述了指令之數個實例,稱為「複製分區指令」,該指令允許程式設計員將向量暫存器之一部分複製至另一暫存器中。任意大小之分區可在結果暫存器內定義,並且源暫存器之已選部分可在每個分區中重複。此舉在處理小維度之資料的演算法中有助於實施用於寬向量長度機器的數個向量中向量方法,並且由此允許以向量長度不可知方式隨著向量長度按比例放大效能。顯示指令可如何有助於加速算術運算的實例使用情形將在下文論述,但首先描述指令本身之數個變化。在下文所論述之實例中,出於便於說明之目的,控制遮罩中的「主動位元」被認為係等於1之彼等位元,並且非主動位元係等於0之位元。然而,應瞭解其他實施方式可將「0 」位元視為主動位元並且將「1 」位元視為非主動。
第3圖圖示了複製分區指令之源變換形式的第一實例,該複製分區指令規定了用於儲存結果向量的目的向量暫存器Zd、規定用於識別該結果向量之主動部分的控制遮罩值的述語暫存器Pg、用於儲存源向量的源向量暫存器Zs、以及規定分區遮罩值的第二述語暫存器Ps,該分區遮罩值提供了識別在結果向量內的數個分區之配置的分區資訊以及識別標記待映射至每個分區的相鄰資料元件序列之開始的源向量之已選元件位置的元件選擇資訊。
在此實例中,主動部分經識別為對應於控制遮罩Pg之主動位元的結果向量之部分。分區大小可藉由在第一與最後主動位元之間的Ps之部分大小或藉由其中全部位元被設定為主動的Ps之部分來定義(針對第3圖所示的分區大小2的實例,兩種選項係等同的,但若分區大小係3或更大,則在第一種方法的情況下,介入位元可採取任何值,而在第二種方法的情況下,在第一/最後主動位元之間的介入位元亦應係主動的)。此等參數定義結果向量內的分區配置,其中重複規定大小的數個分區之每個直至到達主動區域之末端(若主動區域之大小非分區大小之準確倍數,則截斷最後重複)。例如,在第3圖中,主動區域包含結果向量Zd之下部5個資料元件,分區大小係2個資料元件(由於Ps中的第一及最後主動位元彼此相繼),並且因此前兩個分區每個將包含2個資料元件,並且最後截斷之分區包含單個資料元件。結果向量Zd之剩餘的3個元件形成該向量之非主動部分。
當執行指令時,解碼電路20控制向量置換單元80產生結果向量Zd,其中利用從已選元件位置開始的源向量Zs之元件序列之資料值填充每個分區。在第3圖之實例中,已選元件位置係Zs之元件5,並且因此利用以元件5中之資料值f開始的資料值序列填充結果向量之每個分區。包含2個資料元件之分區由此包含資料值f、g之序列並且包含單個資料元件之分區具有設定為已選資料元件位置之資料值f的彼元件。
因此,此指令可用以在整個向量中重複資料值之相同序列的多個實例,這可用於與如下文所論述之向量長度相比具有相對小維度的矩陣或其他資料結構的處理。
第4圖圖示了複製分區指令之第二實例,該複製分區指令又規定了源暫存器Zs及目的暫存器Zd,但該複製分區指令規定了用於定義主動區域及分區配置的單個述語暫存器Pg。在此實例中,假設預設為元件0,暗示已選資料元件位置(標記待從源向量擷取之資料值序列之開始)。利用此編碼,述語值Pg中的第一主動位元指示分區大小(該大小關於在第一主動位元與最低有效位元之間的位元數量編碼)。述語值之最後主動位元指示結果向量Zd之主動區域之大小(又相對於最低有效位元定義)。在第一與最後主動位元之間的Pg之位元利用「x」標記以指示由於其等不影響結果,其等可採取任何值。
因此,在第4圖之實例中,分區大小係3(由於第一主動位元係於Pg之第三最低有效位元處)並且主動區域大小係7(由於最後主動位元係於Pg之第七最低有效位元處)。因此,結果Zd配置有三個分區,前兩個分區每個包含3個元件,並且由於截斷最後分區以適合主動區域,該最後分區包含單個元件。Zd之最後元件係非主動的。因此,當執行指令時,從Zs之最低有效資料元件位置開始的資料值a、d、c之序列經映射至下部的兩個分區,並且最後的截斷之分區包含部分序列,該部分序列包含資料值「 a」。
第5圖圖示了使用與第4圖相同之編碼技術的第二實例。如第5圖所示,若在述語暫存器Pg中僅存在一個主動位元,則分區大小與主動區域大小係相同的,並且指令將僅利用Zs之對應元件填充目的暫存器Zd之主動區域,其中Zd之剩餘元件係非主動的。如亦使用相同編碼技術的第6圖所示,為了在整個完整的向量暫存器中複製規定大小之分區,遮罩Pg之最高有效位元可被標記為主動。
結果向量Zd之非主動元件可以不同方式處置。例如,在主動區域外的非主動元件每個可利用諸如零之預定資料值填充(「歸零預測」)。或者,可保留儲存在目的暫存器Zd之彼等非主動元件中的先前值,使得新分配的分區與Zd之先前內容合併(「合併預測」)。
亦可提供複製分區指令之若干其他變化。例如,可提供不規定控制遮罩Pg的第3圖所示的指令之非預測變化,該指令之非預測變化控制處理器以在整個目的暫存器中複製分區。分區大小及已選資料元件位置仍可以與第3圖相同之方式使用PS編碼,或替代地第4圖所示之方法可用於定義分區大小。
此外,儘管第3圖至第6圖圖示了其中指令包括分別用於源向量及結果向量之獨立暫存器識別符的建設性編碼,其他實例可使用其中單個暫存器規定源值及將寫入結果向量之位置的破壞性編碼。在此情形中,複製分區指令之結果改寫源運算元。
亦可提供此等指令之純量變化,其中分區大小、主動區域大小、及已選資料元件位置的任一個可以經由純量值編碼。例如: 1.(建設性),或(破壞性), 其中Rs1指示分區大小,並且Rs2指示主動區域大小。在此實例中,假設主動區域預設於向量通道0處開始,並且如在第4圖之實例中,已選資料元件位置暗示地定義為元件0。針對實施本文所論述之「數個向量中向量」方法而言,期望Rs1<Rs2。然而,指令亦可支援有效編碼,其中Rs1>Rs2。若將分區大小定義為大於主動區域大小,則結果將由Rs2標記為主動區域之區域中的元件從源向量拷貝至結果向量之對應元件(亦即,由於較小主動區域大小,僅存在一個截斷的分區)。 2.兩個先前實例之對應非預測版本:建設性破壞性 其中Rs1規定分區大小,並且同樣,已選資料元件位置暗示地係元件0。若Rs1小於向量長度,則結果係Zd包含至少兩個分區,其中每個分區利用從Zs之元件0開始的資料值序列填充。若Rs1大於或等於向量長度,則結果應僅直接將源向量Zs拷貝至目的向量Zd。 3.非預測變化,其中主動區域係整個向量,並且分區大小及已選資料元件位置由純量值規定:(建設性)(破壞性)。 在一個實例中,Rs1及Rs2可分別直接地指示分區大小及已選資料元件位置。
或者,Rs1及Rs2可分別指示待從Zs擷取之元件序列之開始及結束位置,亦即,對應於Rs2-Rs1+1的分區大小。此舉提供了等同於第3圖所示之Ps之編碼的純量,並且允許於Zs內之任意位置處擷取資料值序列而非預設於最低有效元件處開始。注意到,編碼錯誤(例如,其中Rs2<Rs1)可藉由將指令視為NOP(不影響暫存器狀態的非運算指令)來處置。若Rs1大於向量長度(向量中的元件總量),則這亦可經視為NOP以防止不確定結果。若Rs2大於向量長度,這可藉由假設設定Rs2以指示向量之最後元件來處置(由於結果向量Zd在此情形中應表示由寫入執行之代碼的程式設計員/編譯者希望的待針對向量下部決定之正確結果)。
上文所論述之變化係複製分區指令之源變換形式的全部實例,該複製分區指令操作儲存在源暫存器Zs或Zd中的源向量並產生結果向量Zd,其中取決於定義之分區配置,將來自源暫存器之資料值映射至結果之資料元件。此舉可被視為「融合」之操作,其中一個指令決定應擷取源向量之哪些元件並將彼等元件置換至結果向量Zs中的所需位置。
然而,替代方案係提供如第7圖至第9圖所示的索引產生形式之複製分區指令,該複製分區指令利用來自源向量的所需元件之元件索引填充結果向量,但不準確複製資料值。後續置換指令可隨後使用結果向量之元件索引以控制由源向量中之元件索引指示的元件映射至進一步結果向量。或者,從非連續位址(使用從源向量讀取之偏移決定該非連續位址)載入資料值的後續收集類型之載入指令可使用作為偏移向量的由索引產生形式之複製分區指令產生的結果以控制將所需資料值從記憶體載入目的暫存器中。此方法可被認為係「分割」或「解融合」之操作,其中使用兩個獨立指令(索引產生複製分區指令及後續載入或置換指令)進行將所需資料填入至向量暫存器中的全部操作。儘管與如上文所論述的單個融合之指令相比,此舉就效能而言可係較慢的,在一些情況中其可簡化微架構硬體設計,例如,其可允許重新使用硬體以用於實施一般置換操作或收集載入。
第7圖圖示了索引產生形式之複製分區指令INCRR Zdst、Rs1、Rs2的第一實例,其中Zdst係用於儲存結果向量的目的暫存器,並且Rs1及Rs2係分別規定重設值及步距的純量值。此實例係非預測之指令並且因此整個結果向量被認為係主動部分。亦可提供預測版本,其中指令之參數識別主動部分。結果向量利用元件索引之重複圖案之數個重複填充,其中Rs1定義重設值,該重設值規定待寫入每個重複圖案之第一元件的索引值,並且Rs2定義指示重複週期(在每個分區中之元件數量)的步距。在每個重複內,在第一元件之後的索引藉由使先前元件索引遞增1而產生。在第7圖所示之實例中,例如,Rs1=0且Rs2=4,並且因此結果向量利用元件序列(3,2,1,0)之數個重複填充直至向量結束,亦即,結果係[3,2,1,0,3,2,1,0]。相似地,若Rs1=2且Rs2=3,則結果向量應利用重複序列(4,3,2)之重複填充以給出形式[…,4,3,2,4,3,2]之結果。
因此,由於步距參數Rs2控制每個分區之大小,其可被看作等同於分區大小資訊,並且由於重設參數Rs1控制元件索引之每個遞增序列開始的元件,其可被看作等同於元件選擇資訊。
第8圖圖示了與第7圖相似的另一實例,不同之處在於指令亦規定第三純量值Rs3,該純量值規定了表示在寫入結果向量中的單個重複之相鄰元件的元件索引之間的差異的遞增值。例如,若Rs1=1、Rs2=3且Rs3=3,則重複圖案應係(7,4,1)並且因此結果向量應利用圖案[…,7,4,1,7,4,1]填充。儘管第8圖圖示了其中在純量暫存器中規定遞增值的編碼,應亦可能提供其中在指令編碼本身中將遞增值規定為緊接值的替代編碼。複製分區指令之此變化可用於定義每個利用元件索引之遞增序列填充的分區,該元件索引對應於源向量之不相鄰元件。
可設定索引產生形式之指令的參數以使得將結果向量之一些元件設定為大於向量之最高有效元件位置之索引的索引。例如,在第8圖之實例中,若Rs1=2、Rs2=5及Rs3=2,並且向量長度係8個元件,則結果向量應係[6,4,2,10,8,6,4,2],並且在第四及第五元件位置中的元件索引8及10應在長度8之向量的元件索引之有效範圍外。在一些實施方式中,當產生範圍外之元件索引時可信號傳輸錯誤,或在此情形中可將指令處理為NOP。
然而,在一些情形中,定義「無效」元件索引之能力可用於在「有效」元件索引之連續重複之間實施「填充(padding)」。若後續指令簡單地忽視「範圍外」元件索引(例如,以與由述語標記出之通道相似的方式處理彼等通道),則結果可係藉由一個或多個填充通道分開重複有效資料元件之圖案的重複,這可用於一些應用。例如,在歸零預測的情況下,在產生以上結果[6,4,2,10,8,6,4,2]之索引產生指令之後的後續置換或載入指令應隨後導致形式[R6,R4,R2,0,0,R6,R4,R2]之結果值。
或者,不是指示在寫入相同分區內之相鄰元件的索引之間的增量,而是第三純量暫存器Rs3可識別在一個分區之開始索引與下一分區之開始索引之間的差異。在此情形中,第一分區可包含於Rs1開始的索引序列,下一分區可包含於Rs1+Rs3開始的索引序列,下一分區可包含於Rs1+2*Rs3開始的索引序列,並且依此類推。例如,利用Rs1=2、Rs2=3、及Rs3=5編碼可導致利用索引[…13,12|9,8,7|4,3,2]填充的結果向量,其中|表示在分區之間的邊界。此舉顯示了在寫入結果向量之索引序列中此指令變化可如何用以提供「跳躍」。因此,這係其中每個分區的已選元件位置可針對每個分區而不同的指令之實例。載入複製或源變換形式之指令亦可規定與Rs3相似的步距參數以編碼不同元件位置,進而用作每個分區的序列之開始/結束。
第9圖圖示了索引產生形式之複製分區指令的另一變化,該複製分區指令規定了純量暫存器Rs1(該純量暫存器定義哪個元件係在每個分區中元件索引之遞增序列開始的已選元件)以及控制遮罩Ps1,其中主動位元之位置標記每個分區之開始(或者,主動位元可標記每個分區之結束)。利用此方法,可能在相同結果向量內定義不同大小之分區,這可用於處理具有不同長度之行的資料結構(例如,不規則、三角形或幾何柵格圖案)。注意到,使用支援不同分區長度的一般遮罩的用於分區資訊的相似編碼亦可用於源變換或載入複製類型之複製分區指令。
第10圖圖示了載入複製形式之複製分區指令。一般而言,載入複製形式之指令規定了基底位址暫存器Ra,該基底位址暫存器儲存用以計算基底位址#[Ra]之值。於基底位址開始的記憶體位址處儲存的資料塊可被視為有效地表示在目的暫存器Zdst之每個分區中從其擷取並重複資料值序列的「源向量」。亦即,若執行規定相同基底位址#[Ra]的獨立之連續向量載入指令,此舉將導致包含對應於基底位址#[Ra]及數個後續位址處之資料值的元件A0、A1、A2…之序列的向量暫存器,並且可如上文所論述執行後續源變換形式之指令以利用從源向量擷取之元件填充結果向量之分區。載入複製形式之複製分區指令避免對此獨立向量載入指令的需求,而是直接對記憶體中的「源向量」操作以給出等同結果。
載入複製形式可使用上文所論述之任何技術以用於編碼分區大小/位置、主動區域位置、及已選資料元件位置。第10圖之特定實例與上文所論述之源變換指令之純量實例之第一個相似,即其規定兩個純量暫存器Rs1、Rs2以分別定義分區大小及主動區域大小,並且預設已選資料元件位置及主動區域開始位置均暗示係最低有效元件位置。因此,若Rs1=3,則載入複製指令應控制處理器載入對應於在基底位址#[Ra]開始之位址處的記憶體中儲存的「源向量」之前三個元件A0、A1、A2的資料值,並且在向量之主動區域內重複此等三個資料值A0、A1、A2多次。然而,應瞭解,第10圖僅係一個實例,並且載入複製形式之複製分區指令的其他實例可反映由上文所述的源變換形式或索引產生形式之指令的其他實例之任一個使用的分區編碼。
注意到,儘管載入複製形式之複製分區指令僅可需要從在記憶體中儲存之源向量載入某些已選元件,儘管如此,實務上一些硬體實施方式可將整個結構A0、A1、 A2…(或該結構之子部分)從記憶體載入緩衝器中,並且隨後拾取待寫入結果目的暫存器的所需元件。因此,指令可導致從記憶體讀取一些資料,即使實際上不需要產生結果向量。與從所需偏移讀出已選值相比,在一些情形中此方法可係更為方便的。例如,記憶體系統硬體可將最小大小賦予在單個事務中從記憶體讀取的資料塊,並且因此若需要彼區塊之任何部分,則這可需要讀取整個區塊。例如,若在第10圖之實例中讀取記憶體的最小粒度對應於值A0、A1、A2、A3之區塊,則儘管僅需要元件A0、A1、A2以用於產生結果,仍可讀取整個區塊A0-A3,但A3可由處理器丟棄。因此,對於載入複製指令而言僅載入所需資料值係不重要的-其他值亦可作為特定記憶體系統操作方式之假像而載入。儘管如此,藉由避免需要消耗向量暫存器,載入複製指令可減輕暫存器壓力,這可有助於改良效能。
在上文所給出之實例中,分配至每個分區的資料值序列或元件索引於已選資料元件位置處開始。例如,若已選資料元件位置係元件1,則大小2之分區應包含元件1及2之資料值或元件索引,大小3之分區應包含元件1至3之資料值或元件索引,並且依此類推。
然而,其他實例可利用以已選資料元件位置結束的序列來填充結果向量之每個分區。例如,若已選資料元件位置係元件5,則大小3之分區應包含對應於元件3、4、5的資料值或元件索引;大小4之分區應包含對應於元件2、3、4、5的資料值或元件索引,並且依此類推。此舉可用於調節其他類型之資料結構(例如,上三角矩陣)的處理。
第11圖圖示了示出處理複製分區指令之方法的流程圖。於步驟100,指令解碼器20解碼從快取記憶體15擷取之指令佇列中的下一指令。於步驟102,解碼器20決定下一指令是否係複製分區指令。若否,則於步驟104,解碼器20產生控制信號,該控制信號用於控制管線之後續級以執行對遇到之指令類型適當的處理操作,並且該方法返回到步驟100。
若遇到複製分區指令,則於步驟106,解碼器20產生控制信號,該控制信號用於控制處理管線之後續級以產生結果向量,其中由指令定義數個可變大小分區之位置。具有一個以上之資料元件的每個分區利用來自源向量的資料值序列或於已選資料元件位置處開始或結束的元件索引來填充。
由指令解碼器20支援的另一類型之指令係複製元件指令,該複製元件指令識別結果向量內的多個分段,每個可變大小由指令所規定。回應於複製元件指令,解碼器20控制處理電路產生結果向量,其中在每個相應分段中,在結果向量之整個彼分段中重複重複值,其中該重複值包含源向量之對應分段之已選資料元件的資料值或彼已選資料元件的元件索引。同樣,此舉可用於加速操作,諸如矩陣算術,其中正處理之資料維度小於向量長度。下文論述指令之一些實例使用情形,但首先描述指令本身。
第12圖圖示了複製元件指令之第一實例,該複製元件指令規定了用於儲存結果向量的目的向量暫存器Zd、用於儲存源向量的源向量暫存器Zs、以及兩個述語暫存器Pg、Ps。
述語暫存器Pg提供了分段資訊,該分段資訊識別結果向量中的每個分段之大小及位置。在此實例中,將分段資訊編碼為分段遮罩,其中主動位元(在此實例中係1)的位置標記每個分段之結束。因此,此編碼支援在相同向量內具有不同大小之分段。在第12圖中,例如,設定Pg以使得第一分段於元件1結束,第二分段於元件2結束(因此僅包含單個元件),並且第三分段於元件6結束。述語暫存器Pg亦提供了識別結果向量之主動部分的主動區域資訊。在此實例中,主動區域於結果向量之元件0處開始並且在述語Pg中對應於最高有效主動位元之元件(在此實例中元件6)處結束。因此,在此實例中,結果向量之元件7位於主動區域外。利用此編碼,分段大小資訊及主動區域資訊均可編碼在相同暫存器中。應瞭解,在其他實例中,標記位元可以與第9圖針對複製分區指令所示之分區開始位置之編碼相似的方式表示每個分段之開始而非結束。
第二述語暫存器Ps提供了元件選擇資訊,該元件選擇資訊指示源向量Zs之哪些資料元件係在由Pg識別之每個分段內的已選元件。在每個分段內,已選元件係在Ps中對應於最低有效主動位元的元件。因此,在第12圖之實例中,第一分段中之已選元件係元件0,第二分段中之已選元件係元件2,並且第三分段中之已選元件係元件4。不同於使用最低有效主動位元,應瞭解亦可使用給定分段內之最高有效主動位元來信號傳輸已選元件。
當執行複製元件指令時,指令解碼器20控制處理電路(例如,向量置換單元80)產生結果Zd,其中在每個分段中,在結果之整個對應分段中重複於對應分段之已選元件位置處的源向量Zs之資料值。針對第12圖,例如,此舉導致對應於Zs之元件0的資料值「a」在結果Zd之元件0及1中的整個第一分段中重複、將Zs之元件2的資料值「c」映射至Zd之元件2、以及將Zs之元件4的資料值「e」映射至第三分段中的Zd之元件3至6的每個。
在結果之主動區域外的元件可如第12圖及第13圖之「歸零」實例所示設定為0,或可如第13圖之「合併」實例所示保留在目的暫存器之對應元件中儲存的先前值。注意到,若Pg係全部真述語(全部主動位元),則每個元件係其自身分段。在彼情形中,取決於Ps之對應值,將輸入拷貝至輸出中(在Ps[]=1之情形中),或輸出基於指令係合併或歸零類型而保持不變或歸零(Ps[]=0)。此外,由於預測指令之此變化,若Pg係ALL_FALSE,則取決於指令類型而歸零或合併輸出。指令亦可用以如第14圖所示藉由在Pg中將最高有效向量通道標記為主動來在整個向量暫存器中複製特定元件,亦即,認為整個向量區域係單個分段。因此,由於此編碼係亦支援多個分段的複製元件指令之有效編碼,使用此編碼可避免對提供任何獨立指令以用於在整個向量中控制單個元件之複製的需求。
如第15圖所示,亦可提供指令之非預測變化,其中Pg僅編碼分段大小而非主動區域,並且認為整個向量暫存器係主動。在此情形中,最後分段對應於從Pg之最後主動位元之後的下一元件延伸直至向量結束的結果向量之部分。例如,在第15圖中,Pg之最後主動位元係於元件4處,並且因此結果向量Zd之最後分段包含元件5至7且如由Ps所識別,將結果之此等元件設定為等於在源向量Zs之對應分段之已選元件5中的資料值「f」。注意到利用第15圖之編碼,若Pg係全部假(全部非主動位元),則認為整個暫存器係單個分區,並且因此如第16圖所示,將來自源向量Zs之一個已選元件的單個資料值(「e」)拷貝至結果向量Zd之每個元件(此舉與上文所論述之第14圖相似)。
指令之其他變化可使用述語及純量值之不同組合以傳送分段大小資訊、主動部分資訊及元件選擇資訊。此等變化之一些實例包括: 1.預測指令,其中以與第12圖所示者相同之方式將主動區域資訊及分段大小資訊均編碼至Pg中,但將元件選擇資訊編碼為在純量暫存器中規定的純量可變Xs1或編碼為緊接值。在此情形中,在每個分段中將已選元件相對於每個分段的相對位置限制為相同的(例如,Xs1規定值N,該值指示每個分段中之第N個元件係已選元件)。 2.建設性及破壞性變化,其中將主動區域資訊、分段大小資訊及元件選擇資訊的每個編碼為在純量暫存器中儲存的純量變化。在此情形中,每個分段應具有相同大小(儘管若需要,可截斷第一或最後分段以適合主動區域)。例如,Xs1指示標記主動區域結束的元件位置,Xs2指示每個分段的長度,並且Xs3指示在每個分段中源向量之哪個元件係已選元件(相對於分段開始)。針對建設性變化,定義獨立的源暫存器及目的暫存器,使得在執行指令之後保留源向量。針對破壞性變化,相同暫存器用作源暫存器及目的暫存器,使得源向量被結果向量改寫。一般而言,期望針對指令之大部分用途,Xs1≥Xs2且Xs2≥Xs3。若遇到指令,其中分區大小Xs2大於主動區域Xs1之大小,則可將指令視為NOP,或可應用歸零或合併預測以掩蔽雜散至非主動區域中的分段之部分。相似地,由Xs3指示之元件位置大於分段大小的情形可被視為NOP或可導致每個分段由歸零或合併預測掩蔽。是否採取NOP或掩蔽方法可針對特定實施方式預定義(硬編碼),或可取決於指令類型而變化。 3.上文實例2所示的建設性預測變化在編碼空間中擔負一些成本,這可藉由提供破壞性變化來避免。或者,可提供建設性非預測實例以節省編碼三個獨立純量暫存器:在此情形中,Xs1指示分段大小,Xs2指示已選元件位置,並且如在上文第15圖之實例中,將整個結果向量視為主動部分。相似地,亦可提供非預測之破壞性編碼:。 利用純量形式之指令,注意到若向量長度或主動部分之大小非分段大小之準確倍數,則截斷最後分段(例如,若向量長度係8,則認為整個向量係主動的,並且若分段大小係3,認為結果向量將分別包含大小3、3、2之三個分段)。或者,可截斷第一分段而非最後分段。
上文實例係源變換形式之複製元件指令,該複製元件指令從在向量暫存器60中儲存之源向量擷取已選元件之資料值並在結果向量之對應分段內重複該等資料值。
然而,如第17圖所示,亦可以與上文針對第10圖所論述之載入複製形式之複製分區指令相似的方式提供結合的載入複製形式之複製元件指令。在此情形中,將從其擷取元件的「源向量」儲存在記憶體中而非暫存器中(其中基於基底暫存器Za中的值決定記憶體中的源向量之基底位址#[Ra]),但編碼分段大小、主動部分及元件選擇資訊的方式可與上文針對源變換之複製元件指令所論述的任何變化相同。第17圖之實例反映了上文所述的非預測之純量變化3。有效地,Rs1定義了對應於分段大小的固定步距,並且Rs2定義了在分段內之元件位置。第17圖圖示了實例,其中Rs1=4並且Rs2=3,使得每個分段包含四個元件並且在目的暫存器Zd之整個對應分段中複製每個分段之第三個元件。應瞭解,可提供對應於其他變化的載入複製之複製元件指令的相似實例。例如,作為載入操作之部分可規定步距及分段長度之不同值以有助於將分區填充至所需對準,或可藉由如上文所論述定義主動區域來提供預測。
如第18圖所示,亦可與上文第7圖及第8圖相似地提供索引產生形式之複製元件指令,該複製元件指令觸發了管線在結果向量之整個對應分段中複製源向量之已選元件之元件索引,而非複製彼元件之資料值。例如,索引產生之複製元件指令可規定目的暫存器Zdst及兩個純量值Rs1、Rs2,其中Rs1定義每個分段之大小(並且亦定義元件索引於分段之間的邊界處的遞增量),並且Rs2定義結果向量之第一元件的開始值。例如,在第18圖中,若Rs1=4且Rs2=3,則結果之前四個元件包含索引3,接下來的四個元件包含索引7,並且依此類推。注意到這與第17圖載入複製情形係相同實例。因此,使用索引向量Zd作為載入偏移或由置換選擇之元件來執行後續收集載入指令或置換指令將給出與第17圖所示者等同之結果。
第19圖圖示了示出處理複製元件指令之方法的流程圖。於步驟120,指令解碼器20解碼從快取記憶體15擷取之指令佇列中的下一指令。於步驟122,解碼器20決定下一指令是否係複製分區指令。若否,則於步驟124,解碼器20產生控制信號,該控制信號用於控制管線之後續級執行對遇到之指令類型適當的處理操作,並且該方法返回到步驟120。
當遇到複製元件指令時,於步驟126,解碼器20控制處理管線產生結果向量,其中在每個可變大小分段中,在整個分段中重複重複值。分段可具有不同大小或可全部係相同大小,並且在指令內編碼每個分段之大小/位置。針對預測之指令,分段僅可在結果向量之主動部分內定義,而針對非預測之指令,分段可填充整個向量。給定分段之重複值係源向量之對應分段之已選元件的資料值、或已選資料元件的元件索引。哪個元件係已選資料元件在指令內編碼,並且可係每個分段中的相同相對位置,或可在分段之間變化。
現將描述針對複製分區指令及複製元件指令的一些工作實例使用情形。應瞭解,此等非此等指令之唯一使用情形,但僅僅示出了其中指令可有助於改良效能的一些實例。儘管實例顯示了一般形式之複製分區指令或複製元件指令,應瞭解可根據上文所論述之任何變化實施該等指令。 維度MxM之矩陣乘法
對維度MxM之矩陣乘法(其中可將N行封裝至單個向量暫存器中)可使用如下代碼實施。注意到,此實例使用純量形式之複製指令,其中將遮罩(主動元件之數量)表達為整數-參看VecRepElementS及VecRepPartitionS中的遮罩參數。然而,其他實例可使用述語形式之指令,其中遮罩在述語暫存器而非純量整數暫存器中表達。在此情形中,由於作為迴圈迭代之部分將考慮何時產生述語遮罩,不需要邊界條件檢查(這適用於以下之其他實例)。 在具有向量長度=8的3x3矩陣乘法之實例之上下文中(亦即,M=3,N=2,其中將矩陣之2行封裝至第一迭代中的一個向量中及最後一行封裝至第二迭代中),以下工作實例顯示了此代碼如何工作。取代迴圈中的值:
因此,吾人可看到在外部迴圈之第一迭代(i=0)中,不是如在先前說明之對照實例中需要獨立迭代,而是使用複製元件指令及複製分區指令允許在外部迴圈之一個迭代中計算結果矩陣之兩行c0-c2及c3-c5。複製分區指令在結果向量內複製來自矩陣b之一行的值多次。複製元件指令定義長度M之分段(對應於矩陣行大小),並且在每個分段中複製將乘以矩陣b之對應行中之每個值的矩陣a之單個元件。在三個迭代上,向量處理之給定通道具有三個執行之乘法(例如,針對第一通道之a0.b0、a1.b3、a2.b6),其中選擇元件之相應乘法在矩陣a中沿著行方向進行並且在矩陣b中沿著列方向進行以給出針對矩陣c之正確值。在外部迴圈之第二迭代(i=6)中,計算矩陣c之剩餘行。在此實例中,矩陣係方形矩陣(MxM),但應瞭解,複製元件指令及複製分區指令亦可用以計算其中行長度與列長度係不同的矩陣之乘法。
儘管此實例使用源變換形式之複製分區指令及複製元件指令,替代迴圈可使用載入複製形式之指令替代,使得亦不需要VecLoad()指令,或替代地可使用索引產生形式之指令,接著後續向量載入或置換指令。 框架乘以矩陣的乘法
在影像/視訊處理中框架形成輸入資料(例如,源自RGB或灰階影像)並且核心形成變換矩陣係常見使用情形。這係基於區塊之運算,其中輸入框架資料之每個子區塊乘以核心矩陣以產生輸出框架資料。傳統向量方法係對每個子區塊執行步距矩陣乘法並針對框架資料之寬度及高度運行迴圈:
在本文中,如上文第13頁論述之傳統方法向量化並且將計算每個MxM區塊矩陣乘法之結果。在使用複製分區指令及複製元件指令的情況下,不在區塊乘以區塊之基礎上執行矩陣乘法,可轉換以上演算法以藉由將對應於多個MxM區塊之資料封裝在一起且並行處理多個區塊來在框架中的完整行上操作。使用此方法之參考實施方式係: 工作實例係如下(M=3):
因此,I=0迭代計算兩個不同MxM矩陣乘法之第一行(針對一個乘法計算行c0-c2並且針對下一個乘法計算行c3-c5)。相似地,I=1迭代計算此等兩個MxM矩陣結果之每個之第二行,以及對於行之剩餘部分及框架之後續部分依此類推。此舉可導致在處理整個框架時指令計數的顯著減少,其中效能益處取決於向量長度及可在一個暫存器中封裝的MxM矩陣行之數量而縮放。 框架乘以框架之矩陣乘法
在第20圖至第22圖中圖示了進一步實例使用情形。此實例使用複製元件指令而非複製分區指令。如第20圖所示,可將框架分為多個瓦片,並且此等瓦片可具有不同大小。例如,在第20圖中的框架之每個部分表示2x2或4x4大小之瓦片。此等瓦片乘以其他框架中的對應瓦片以產生所得框架。此基於瓦片之方法係用於眾多視訊處理演算法。假設具有寬向量暫存器之向量處理引擎,可在向量迴圈之單個迭代中處理不同大小之多個瓦片。第20圖至第22圖考慮了其中具有向量長度VL=6之向量引擎用以執行矩陣乘法的實例。如此實例所示,在相同迭代中完成不同大小(2x2及4x4)之兩個相鄰瓦片之乘法。注意到,迭代1及2計算上部2x2瓦片t0-t3,並且迭代3及4計算下部2x2瓦片w0-w3(其中未圖示之述語運算用以掩蔽掉向量暫存器v1-v8之一些的適當部分),而全部4個運算計算4x4瓦片u0-u15之部分。使用複製元件運算,與每個向量指令僅可在單個2x2或4x4瓦片上運算的情形相比,運算可利用較少指令完成。 N維資料結構之處理
以上實例論述了用於處置二維柵格結構之處理的複製分區指令及複製元件指令的使用。然而,其等亦可用於處置三維或N維結構。 具有變化之行大小的柵格之處理
在相同暫存器內支援變化之分區大小的指令變化(諸如針對複製分區指令的第9圖或針對複製元件指令的第12圖)可用於支援其他非矩形柵格圖案之處理,該非矩形柵格圖案包括下列: •不規則柵格圖案(其中每行中的行長度由遮罩規定)。這用於稀疏矩陣及巣套while迴圈。 •三角形柵格圖案,其中每行具有長度1、2、3、4、…、N(或每行具有長度N、N-1、N-2、…、1)-用於三角形矩陣並且當巣套迴圈具有依賴迴圈限制時。 •幾何柵格圖案,具有隨著幾何序列縮放的行長度,諸如1、2、4、8、…。這特別用於快速傅立葉變換(FFT)或離散子波變換(DWT)演算法。 FFT
如第23圖所示,複製分區指令亦可用以針對給定級複製用於FFT演算法之撫弄因子。當給定級中的撫弄因子之數量小於向量長度時,則撫弄因子可在若干分區中複製並且可經並行處理。例如,在第23圖中,考慮到8個元件向量,在級2中吾人可如下複製撫弄因子:。
因此,這係複製分區指令可與複製元件指令分開地使用的使用情形之實例。
第24圖示出了可使用的虛擬機器實施方式。儘管先前描述之實施例關於用於操作支援相關技術之具體處理硬體的設備及方法來實施本發明,亦可能提供硬體裝置的所謂之虛擬機器實施方式。此等虛擬機器實施方式在主處理機530上運行,該主處理機運行支援虛擬機器程式510的主機作業系統520。通常,需要大型高效處理器以提供按合理速度執行的虛擬機器實施方式,但此方法在某些環境中可為合理的,諸如當需要運行另一處理器本端的代碼以獲得相容性時,或出於再使用之原因。虛擬機器程式510向應用程式500提供應用程式介面,該介面與將由真實硬體提供的應用程式介面相同,該實際硬體係藉由虛擬機器程式510模型化的裝置。因此,程式指令(包括上文所述之對記憶體存取的控制)可使用虛擬機器程式510而在應用程式500內執行,以模型化指令與虛擬機器硬體的互動。
其他示例佈置在以下條款中闡述:
(1)一種設備,包含: 處理電路系統,用以對包含複數個資料元件的向量執行向量處理操作;以及 一指令解碼器,用以解碼程式指令以控制該處理電路系統來執行該等向量處理操作; 其中回應於規定分區資訊的一複製分區指令,該分區資訊定義複數個可變大小分區在一結果向量內之位置,每個分區包含該結果向量的至少一個資料元件並且至少一個分區包含該結果向量之複數個相鄰資料元件,該指令解碼器經配置以控制該處理電路電路產生該結果向量,其中具有一個以上的資料元件的每個分區包含於一已選資料元件位置開始或結束的一源向量之資料元件之一序列的資料值或以指示該已選資料元件位置之該元件索引開始或結束的元件索引的一遞增序列。
(2)如條款(1)所述之設備,其中該分區資訊包含分區遮罩資訊,該分區遮罩資訊包含識別在該結果向量內之一分區之該開始或結束的至少一個標記位元。
(3)如條款(1)所述之設備,其中該分區資訊包含指示每個分區之資料元件之一數量的分區大小資訊。
(4)如條款(3)所述之設備,其中該複製分區指令之該編碼限制了不同於一第一或最後分區的全部分區以具有該相同數量之資料元件。
(5)如先前條款中任一項所述之設備,其中該已選資料元件位置對該等分區之每個係相同的。
(6)如先前條款中任一項所述之設備,其中該複製分區指令規定了將不同資料元件位置識別為不同分區之該已選資料元件位置的資訊。
(7)如先前條款中任一項所述之設備,其中該複製分區指令規定了指示哪個資料元件位置係該已選資料元件位置的元件選擇資訊。
(8)如先前條款中任一項所述之設備,其中回應於該複製分區指令,該指令解碼器經配置以控制該處理電路系統產生該結果向量,其中針對包含一單個資料元件的該複數個分區之任一個,該單個資料元件包含於該源向量內之該已選資料元件位置處的一資料值或指示該已選資料元件位置的一元件索引。
(9)如先前條款中任一項所述之設備,其中該複製分區指令規定了定義包含該複數個分區之該結果向量之一主動部分的主動部分資訊; 其中回應於該複製元件指令,該指令解碼器經配置以控制該處理電路系統產生該結果向量,其中在該主動部分外之至少一個資料元件具有一預定值或用於儲存該結果向量的一目的暫存器之一對應資料元件之一值。
(10)如條款(9)所述之設備,其中該複製分區指令規定了識別該分區資訊及該主動部分資訊的一單個控制值。
(11)如先前條款中任一項所述之設備,其中回應於規定儲存該源向量之一源暫存器的一源變換形式之該複製分區指令,該指令解碼器經配置以控制該處理電路系統產生該結果向量,其中具有一個以上的資料元件之每個分區包含於一已選資料元件位置開始或結束的該源向量之資料元件的該序列之該等資料值。
(12)如先前條款中任一項所述之設備,其中回應於一載入複製形式之該複製分區指令,該指令解碼器經配置以控制該處理電路系統從一資料儲存器載入該源向量之至少部分並產生該結果向量,其中具有一個以上的資料元件之每個分區包含於一已選資料元件位置處開始或結束的該源向量之資料元件的該序列之該等資料值。
(13)如先前條款中任一項所述之設備,其中回應於一索引產生形式之該複製分區指令,該指令解碼器經配置以控制該處理電路系統產生該結果向量,其中具有一個以上的資料元件之每個分區包含元件索引之該遞增序列
(14)一種用於包含處理電路系統的一設備的資料處理方法,該處理電路系統用以對包含複數個資料元件的向量執行向量處理操作;該方法包含: 解碼規定分區資訊之一複製分區指令,該分區資訊定義複數個可變大小分區在一結果向量內之位置,每個分區包含該結果向量之至少一個資料元件並且至少一個分區包含該結果向量之複數個資料元件;以及 回應於該複製分區指令,控制該處理電路系統產生該結果向量,其中具有一個以上的資料元件的每個分區包含於一已選資料元件位置處開始或結束的一源向量之資料元件之一序列的資料值或與以指示該已選資料元件位置之該元件索引一起開始或結束的元件索引的一遞增序列。
(15)一種儲存用於控制一電腦之一虛擬機器程式的電腦可讀儲存媒體,用以提供對應於如條款(1)至(13)中任一項所述之設備的一指令執行環境。
在本申請案中,詞語「經配置以……」用於意謂設備之元件具有能夠進行所定義操作的配置。在此上下文中,「配置」意謂硬體或軟體之互連之佈置或方式。例如,設備可具有提供所定義之操作的專用硬體,或處理器或其他處理設備可經程式化以執行該功能。「經配置以」不暗示需要以任何方式改變設備元件以便提供所定義之操作。
儘管已在本文中參考隨附圖式詳細描述了本發明之說明性實施例,應理解,本發明不限於彼等精確實施例,且熟習該項技術者可在其中實現各種變化及修改而不偏離由隨附申請專利範圍所定義之本發明之範疇及精神。
10‧‧‧擷取電路15‧‧‧指令快取記憶體20‧‧‧解碼電路25‧‧‧發佈級電路30‧‧‧算術邏輯單元35‧‧‧執行單元40‧‧‧載入/儲存單元45‧‧‧資料快取記憶體47‧‧‧路徑50‧‧‧2階快取記憶體5055‧‧‧記憶體60‧‧‧暫存器65‧‧‧向量暫存器70‧‧‧述語暫存器75‧‧‧純量暫存器80‧‧‧向量置換單元100‧‧‧步驟102‧‧‧步驟104‧‧‧步驟106‧‧‧步驟120‧‧‧步驟122‧‧‧步驟124‧‧‧步驟126‧‧‧步驟500‧‧‧應用程式510‧‧‧虛擬機器程式520‧‧‧主機作業系統530‧‧‧主處理機
本技術的進一步態樣、特徵及優點將從結合附圖閱讀的實例之以下描述中顯而易見,其中:
第1圖示意地示出了支援向量指令處理之資料處理設備的實例;
第2圖圖示了向量處理的實例;
第3圖圖示了複製分區指令之源變換形式的第一實例;
第4圖至第6圖圖示了複製分區指令之源變換形式的第二實例;
第7圖至第9圖示出了複製分區指令之索引產生形式的三個實例。
第10圖示出了複製分區指令之載入複製形式的實例;
第11圖係示出處理複製分區指令之方法的流程圖;
第12圖至第16圖示出了複製元件指令之源變換形式的實例;
第17圖示出了複製元件指令之載入複製形式的實例;
第18圖示出了複製元件指令之索引產生形式的實例;
第19圖係示出處理複製元件指令之方法的流程圖;
第20圖至第22圖圖示了使用複製元件指令以用於對框架中之不同大小瓦片執行矩陣乘法的實例;以及
第23圖圖示了可使用複製分區指令的FFT計算的實例;
第24圖圖示了可使用的虛擬機器實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
Claims (13)
- 一種用於複製元件指令的設備,包含:處理電路系統,用以對包含複數個資料元件的向量執行向量處理操作;以及一指令解碼器,用以解碼程式指令以控制該處理電路系統來執行該等向量處理操作;其中回應於規定分段資訊的一複製元件指令,該分段資訊定義複數個可變大小分段在一結果向量內之位置,每個分段包含該結果向量的至少一個資料元件並且至少一個分段包含該結果向量之複數個相鄰元件,該指令解碼器經配置以控制該處理電路系統產生一結果向量,其中在每個相應分段中,該複製元件指令之編碼限制了該處理電路系統在該結果向量之整個彼分段中重複一重複值,該重複值包含於一源向量之該對應分段之一已選資料元件位置處的一資料值或指示該已選資料元件位置的一元件索引。
- 如請求項1所述之設備,其中該分段資訊包含分段遮罩資訊,該分段遮罩資訊包含識別在該結果向量內之一分段之開始或結束的至少一個標記位元。
- 如請求項1所述之設備,其中該分段資訊包含指示每個分段之資料元件之一數量的分段大小資訊。
- 如請求項3所述之設備,其中該複製元件指令之該編碼限制了不同於一第一或最後分段的全部分段以具有該相同數量之資料元件。
- 如請求項1所述之設備,其中該複製元件指令規定了指示每個分段之該已選資料元件位置的元件選擇資訊。
- 如請求項5所述之設備,其中該元件選擇資訊具有一編碼,該編碼限制該已選資料元件位置以對每個分段相同。
- 如請求項5所述之設備,其中該元件選擇資訊具有一編碼,該編碼分別針對該複數個分段之每個識別該已選資料元件位置。
- 如請求項1所述之設備,其中該複製元件指令規定了指示包含該複數個分段之該結果向量之一主動部分的主動部分資訊;其中回應於該複製元件指令,該指令解碼器經配置以控制該處理電路系統產生該結果向量,其中在該主動部分外之至少一個資料元件具有一預定值或用於儲存該結果向量的一目的暫存器之一對應資料元件之一值。
- 如請求項1所述之設備,其中回應於規定儲存該源向量之一源暫存器的一源變換形式之該複製元 件指令,該指令解碼器經配置以控制該處理電路系統產生該結果向量,其中在每個相應分段中,該重複值包含於該源向量之該對應分段之該已選資料元件位置處的該資料值。
- 如請求項1所述之設備,其中回應於一載入複製形式之該複製元件指令,該指令解碼器經配置以控制該處理電路系統從一資料儲存器載入該源向量之至少部分並產生該結果向量,其中在每個相應分段中,該重複值包含於該源向量之該對應分段之該已選資料元件位置處的該資料值。
- 如請求項1所述之設備,其中回應於一索引產生形式之該複製元件指令,該指令解碼器經配置以控制該處理電路系統產生該結果向量,其中在每個相應分段中,該重複值包含指示該已選資料元件位置的該元件索引。
- 一種用於包含處理電路系統的一設備的資料處理方法,該處理電路系統用以對包含複數個資料元件的向量執行向量處理操作;該方法包含以下步驟:解碼規定分段資訊之一複製元件指令,該分段資訊定義複數個可變大小分段在一結果向量內的位置,每個分段包含該結果向量的至少一個資料元件並且至少 一個分段包含該結果向量的複數個相鄰元件;以及回應於該複製元件指令,產生一結果向量,其中在每個相應分段中,該複製元件指令之編碼限制了該處理電路系統在該結果向量之整個彼分段中重複一重複值,該重複值包含於一源向量之該對應分段之一已選資料元件位置處的一資料值或指示該已選資料元件位置的一元件索引。
- 一種儲存用於控制一電腦之一虛擬機器程式的電腦可讀儲存媒體,用以提供對應於如請求項1所述之設備的一指令執行環境。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16386020.8 | 2016-12-13 | ||
EP16386020.8A EP3336691B1 (en) | 2016-12-13 | 2016-12-13 | Replicate elements instruction |
??16386020.8 | 2016-12-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201828048A TW201828048A (zh) | 2018-08-01 |
TWI759373B true TWI759373B (zh) | 2022-04-01 |
Family
ID=57755165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106142869A TWI759373B (zh) | 2016-12-13 | 2017-12-07 | 複製元件指令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11977884B2 (zh) |
EP (1) | EP3336691B1 (zh) |
JP (1) | JP7053620B2 (zh) |
KR (1) | KR102447106B1 (zh) |
CN (1) | CN110073330B (zh) |
TW (1) | TWI759373B (zh) |
WO (1) | WO2018109428A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10409601B2 (en) * | 2017-12-29 | 2019-09-10 | Intel Corporation | Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline |
US11477007B1 (en) * | 2021-04-13 | 2022-10-18 | International Business Machines Corporation | Packing arbitrary tensors into tiles with descriptive shapes |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140059323A1 (en) * | 2012-08-23 | 2014-02-27 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
TW201514852A (zh) * | 2013-10-09 | 2015-04-16 | Advanced Risc Mach Ltd | 用於執行推論向量存取操作的資料處理裝置與方法 |
TWI516937B (zh) * | 2011-12-22 | 2016-01-11 | 英特爾股份有限公司 | 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體 |
US20160224511A1 (en) * | 2015-02-02 | 2016-08-04 | Optimum Semiconductor Technologies, Inc. | Vector processor configured to operate on variable length vectors using implicitly typed instructions |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822786A (en) | 1994-11-14 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus and method for determining if an operand lies within an expand up or expand down segment |
GB9509987D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
US6895421B1 (en) | 2000-10-06 | 2005-05-17 | Intel Corporation | Method and apparatus for effectively performing linear transformations |
US7155601B2 (en) | 2001-02-14 | 2006-12-26 | Intel Corporation | Multi-element operand sub-portion shuffle instruction execution |
US7631025B2 (en) * | 2001-10-29 | 2009-12-08 | Intel Corporation | Method and apparatus for rearranging data between multiple registers |
US7725521B2 (en) | 2001-10-29 | 2010-05-25 | Intel Corporation | Method and apparatus for computing matrix transformations |
US7685212B2 (en) | 2001-10-29 | 2010-03-23 | Intel Corporation | Fast full search motion estimation with SIMD merge instruction |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US7853778B2 (en) | 2001-12-20 | 2010-12-14 | Intel Corporation | Load/move and duplicate instructions for a processor |
JP3958662B2 (ja) | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
US7127592B2 (en) | 2003-01-08 | 2006-10-24 | Sun Microsystems, Inc. | Method and apparatus for dynamically allocating registers in a windowed architecture |
US20070106882A1 (en) | 2005-11-08 | 2007-05-10 | Stexar Corp. | Byte-wise permutation facility configurable for implementing DSP data manipulation instructions |
US7685109B1 (en) | 2005-12-29 | 2010-03-23 | Amazon Technologies, Inc. | Method and apparatus for data partitioning and replication in a searchable data service |
US7885988B2 (en) | 2006-08-24 | 2011-02-08 | Dell Products L.P. | Methods and apparatus for reducing storage size |
US9678775B1 (en) | 2008-04-09 | 2017-06-13 | Nvidia Corporation | Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment |
US8745360B2 (en) * | 2008-09-24 | 2014-06-03 | Apple Inc. | Generating predicate values based on conditional data dependency in vector processors |
GB2464292A (en) | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US8776090B2 (en) | 2009-02-17 | 2014-07-08 | Broadcom Corporation | Method and system for network abstraction and virtualization for a single operating system (OS) |
US8996845B2 (en) | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
KR101779992B1 (ko) | 2010-02-24 | 2017-10-10 | 마벨 월드 트레이드 리미티드 | 데이터 저장 디바이스들에 대한 액세스들의 공간적인 분포에 기초하는 캐싱 |
US8595469B2 (en) | 2010-06-24 | 2013-11-26 | International Business Machines Corporation | Diagnose instruction for serializing processing |
US8868885B2 (en) | 2010-11-18 | 2014-10-21 | Ceva D.S.P. Ltd. | On-the-fly permutation of vector elements for executing successive elemental instructions |
GB2485774A (en) * | 2010-11-23 | 2012-05-30 | Advanced Risc Mach Ltd | Processor instruction to extract a bit field from one operand and insert it into another with an option to sign or zero extend the field |
CN103502935B (zh) | 2011-04-01 | 2016-10-12 | 英特尔公司 | 向量友好指令格式及其执行 |
WO2013074781A1 (en) | 2011-11-15 | 2013-05-23 | Ab Initio Technology Llc | Data clustering based on candidate queries |
CN104126167B (zh) | 2011-12-23 | 2018-05-11 | 英特尔公司 | 用于从通用寄存器向向量寄存器进行广播的装置和方法 |
US9336000B2 (en) * | 2011-12-23 | 2016-05-10 | Intel Corporation | Instruction execution unit that broadcasts data values at different levels of granularity |
CN104011649B (zh) * | 2011-12-23 | 2018-10-09 | 英特尔公司 | 用于在simd/向量执行中传播有条件估算值的装置和方法 |
CN104137061B (zh) * | 2011-12-30 | 2017-12-22 | 英特尔公司 | 用于执行向量频率扩展指令的方法、处理器核和计算机系统 |
US9575753B2 (en) | 2012-03-15 | 2017-02-21 | International Business Machines Corporation | SIMD compare instruction using permute logic for distributed register files |
US9098265B2 (en) | 2012-07-11 | 2015-08-04 | Arm Limited | Controlling an order for processing data elements during vector processing |
US9606961B2 (en) | 2012-10-30 | 2017-03-28 | Intel Corporation | Instruction and logic to provide vector compress and rotate functionality |
EP3093758B1 (en) | 2013-03-15 | 2020-06-24 | Oracle International Corporation | Run length instruction for single instruction multiple data processors |
WO2014142972A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Methods and systems to vectorize scalar computer program loops having loop-carried dependences |
US9237014B2 (en) | 2013-05-28 | 2016-01-12 | Hong Kong Applied Science & Technology Research Institute Company, Limited | Partial CipherText updates using variable-length segments delineated by pattern matching and encrypted by fixed-length blocks |
US10423413B2 (en) | 2013-07-09 | 2019-09-24 | Texas Instruments Incorporated | Vector load and duplicate operations |
US9557995B2 (en) | 2014-02-07 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing segmented operations |
KR101818985B1 (ko) | 2014-03-28 | 2018-02-28 | 인텔 코포레이션 | 마스킹된 결과 요소들로의 전파를 이용하여 소스 요소들을 대응하는 마스킹되지 않은 결과 요소들에 저장하기 위한 프로세서, 방법, 시스템 및 명령어 |
US20160179521A1 (en) | 2014-12-23 | 2016-06-23 | Intel Corporation | Method and apparatus for expanding a mask to a vector of mask values |
US10445092B2 (en) * | 2014-12-27 | 2019-10-15 | Intel Corporation | Method and apparatus for performing a vector permute with an index and an immediate |
US20170177350A1 (en) | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Set-Multiple-Vector-Elements Operations |
US10459843B2 (en) * | 2016-12-30 | 2019-10-29 | Texas Instruments Incorporated | Streaming engine with separately selectable element and group duplication |
US11579881B2 (en) | 2017-06-29 | 2023-02-14 | Intel Corporation | Instructions for vector operations with constant values |
-
2016
- 2016-12-13 EP EP16386020.8A patent/EP3336691B1/en active Active
-
2017
- 2017-11-10 KR KR1020197018952A patent/KR102447106B1/ko active IP Right Grant
- 2017-11-10 JP JP2019530214A patent/JP7053620B2/ja active Active
- 2017-11-10 WO PCT/GB2017/053395 patent/WO2018109428A1/en active Application Filing
- 2017-11-10 CN CN201780076939.8A patent/CN110073330B/zh active Active
- 2017-11-10 US US16/468,108 patent/US11977884B2/en active Active
- 2017-12-07 TW TW106142869A patent/TWI759373B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI516937B (zh) * | 2011-12-22 | 2016-01-11 | 英特爾股份有限公司 | 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體 |
US20140059323A1 (en) * | 2012-08-23 | 2014-02-27 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
TW201514852A (zh) * | 2013-10-09 | 2015-04-16 | Advanced Risc Mach Ltd | 用於執行推論向量存取操作的資料處理裝置與方法 |
US20160224511A1 (en) * | 2015-02-02 | 2016-08-04 | Optimum Semiconductor Technologies, Inc. | Vector processor configured to operate on variable length vectors using implicitly typed instructions |
Also Published As
Publication number | Publication date |
---|---|
US20190303155A1 (en) | 2019-10-03 |
KR102447106B1 (ko) | 2022-09-26 |
US11977884B2 (en) | 2024-05-07 |
TW201828048A (zh) | 2018-08-01 |
JP7053620B2 (ja) | 2022-04-12 |
EP3336691B1 (en) | 2022-04-06 |
KR20190091489A (ko) | 2019-08-06 |
JP2020501274A (ja) | 2020-01-16 |
CN110073330A (zh) | 2019-07-30 |
WO2018109428A1 (en) | 2018-06-21 |
EP3336691A1 (en) | 2018-06-20 |
CN110073330B (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI759372B (zh) | 複製分區指令 | |
CN107851014B (zh) | 用于转换存储器与多个向量寄存器之间的多个数据结构的设备及方法 | |
US9965275B2 (en) | Element size increasing instruction | |
US20230229730A1 (en) | Variable position shift for matrix processing | |
TWI759373B (zh) | 複製元件指令 | |
US20230214236A1 (en) | Masking row or column positions for matrix processing | |
WO2021250392A1 (en) | Mixed-element-size instruction | |
GB2617829A (en) | Technique for handling data elements stored in an array storage | |
WO2023148467A1 (en) | Technique for performing memory access operations | |
WO2023199014A1 (en) | Technique for handling data elements stored in an array storage |