TW201928656A - 向量帶進位加法指令 - Google Patents
向量帶進位加法指令 Download PDFInfo
- Publication number
- TW201928656A TW201928656A TW107142663A TW107142663A TW201928656A TW 201928656 A TW201928656 A TW 201928656A TW 107142663 A TW107142663 A TW 107142663A TW 107142663 A TW107142663 A TW 107142663A TW 201928656 A TW201928656 A TW 201928656A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- carry
- vector
- register
- value
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 493
- 238000012545 processing Methods 0.000 claims description 82
- 230000004044 response Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 14
- 230000000873 masking effect Effects 0.000 claims description 5
- 238000003672 processing method Methods 0.000 claims description 4
- 230000002401 inhibitory effect Effects 0.000 claims 1
- 238000007792 addition Methods 0.000 description 146
- 230000035772 mutation Effects 0.000 description 43
- 101100000438 Mus musculus Acacb gene Proteins 0.000 description 32
- 238000000034 method Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 11
- 230000015654 memory Effects 0.000 description 9
- 230000035508 accumulation Effects 0.000 description 8
- 238000009825 accumulation Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 8
- 239000002245 particle Substances 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 5
- 230000001066 destructive effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 239000002699 waste material Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- 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
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本案說明向量帶進位加法指令,其使用目標向量暫存器的一些元素或預測暫存器的對應欄位,以提供對應於帶進位加法運算結果的進位資訊。這有用於加速涉及長整數值乘法的計算。
Description
本技術相關於資料處理領域。
一些資料處理系統支援向量指令的處理程序,此處理程序對包含多個資料元素的向量運算子進行處理(或產生這種向量運算子)。藉由支援回應於單一指令而處理數個分異的資料元素,相較於使用純量指令來執行相同作業,可改良碼密度並可減少擷取與解碼指令的成本。
至少一些範例提供一種設備,包含: 處理電路系統,用於執行資料處理程序; 指令解碼電路系統,用於解碼指令以控制該處理電路系統執行該資料處理程序;以及 複數個向量暫存器,用於儲存向量運算子,該等向量運算子包含複數個資料元素;其中: 該指令解碼電路系統回應於一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、以及一進位源向量暫存器,至少該目標向量暫存器與該進位源向量暫存器之每一者指定包含至少一對資料元素的運算子,每一對資料元素包含一第一資料元素與一第二資料元素,該指令解碼電路系統回應於該向量帶進位加法指令以對該目標向量暫存器的每一對資料元素控制該處理電路系統以: 由一值更新該目標向量暫存器的該對資料元素的該第一資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一所選資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一所選資料元素,該進位值係獲得自該進位源向量暫存器的一對應資料元素對的該第二資料元素;以及 由對應於該加法的一進位輸出的一值,更新該目標向量暫存器的該對資料元素的該第二資料元素。
至少一些範例提供一種電腦程式,用於控制主控處理設備以提供指令執行環境以執行目標程式碼指令,電腦程式包含: 指令解碼程式邏輯,用於解碼該目標程式碼指令以控制處理程式邏輯執行資料處理程序;以及 一向量暫存器資料結構,用於儲存資料,資料代表用於儲存向量運算子的複數個向量暫存器,該等向量運算子包含複數個資料元素;其中: 該指令解碼程式邏輯回應於一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、以及一進位源向量暫存器,至少該目標向量暫存器與該進位源向量暫存器之每一者指定包含至少一對資料元素的運算子,每一對資料元素包含一第一資料元素與一第二資料元素,該指令解碼程式邏輯回應於該向量帶進位加法指令以對該目標向量暫存器的每一對資料元素控制該處理程式邏輯以更新該向量暫存器資料結構以: 由一值更新該目標向量暫存器的該對資料元素的該第一資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一所選資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一所選資料元素,該進位值係獲得自該進位源向量暫存器的一對應資料元素對的該第二資料元素;以及 由對應於該加法的一進位輸出的一值,更新該目標向量暫存器的該對資料元素的該第二資料元素。
至少一些範例提供一種資料處理方法,包含以下步驟: 解碼一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、以及一進位源向量暫存器,至少該目標向量暫存器與該進位源向量暫存器之每一者指定包含至少一對資料元素的運算子,每一對資料元素包含一第一資料元素與一第二資料元素;以及 回應於該向量帶進位加法指令的解碼,對該目標向量暫存器的每一對資料元素控制處理電路系統以: 由一新值更新該目標向量暫存器的該對資料元素的該第一資料元素,該新值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量的一所選資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一所選資料元素,該進位值係獲得自該進位源向量暫存器的一對應資料元素對的該第二資料元素;以及 由對應於該加法的一進位輸出的一值,更新該目標向量暫存器的該對資料元素的該第二資料元素。
至少一些範例提供一種設備,包含: 處理電路系統,用於執行資料處理程序; 指令解碼電路系統,用於解碼指令以控制該處理電路系統執行該資料處理程序; 複數個向量暫存器,用於儲存向量運算子,該等向量運算子包含複數個資料元素;以及 複數個預測暫存器,包含複數個預測欄位以儲存預測值以控制該處理電路系統所執行的運算的遮蔽;其中: 該指令解碼電路系統回應於一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、一輸入預測暫存器與一輸出預測暫存器,該指令解碼電路系統回應於該向量帶進位加法指令以對該目標向量暫存器的一給定資料元素控制該處理電路系統以: 由一值更新該目標向量暫存器的該給定資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一對應資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一對應資料元素,該進位值係獲得自該輸入預測暫存器的一對應預測欄位;以及 由對應於該加法的一進位輸出的一值更新該輸出預測暫存器的一對應預測欄位。
至少一些範例提供一種電腦程式,用於控制主控處理設備以提供指令執行環境以執行目標程式碼指令,電腦程式包含: 指令解碼程式邏輯,用於解碼該目標程式碼指令以控制處理程式邏輯執行資料處理程序;以及 一暫存器資料結構,用於儲存資料,資料代表用於儲存包含複數個資料元素的向量運算子的複數個向量暫存器,以及用於儲存預測值以控制該處理程式邏輯所執行的向量運算的遮蔽的複數個預測暫存器;其中: 該指令解碼程式邏輯回應於一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、一輸入預測暫存器與一輸出預測暫存器,該指令解碼程式邏輯回應於該向量帶進位加法指令以對該目標向量暫存器的一給定資料元素控制該處理電路系統以更新該暫存器資料結構以: 由一值更新該目標向量暫存器的該給定資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一對應資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一對應資料元素,該進位值係獲得自該輸入預測暫存器的一對應預測欄位;以及 由對應於該加法的一進位輸出的一值更新該輸出預測暫存器的一對應預測欄位。
至少一些範例提供一種資料處理方法,包含以下步驟: 解碼一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、一輸入預測暫存器與一輸出預測暫存器,該輸入預測暫存器與該輸出預測暫存器係從用於儲存預測值以控制向量運算遮蔽的複數個預測暫存器中選出;以及 回應於該向量帶進位加法指令的解碼,對該目標向量暫存器的一給定資料元素控制處理電路系統以: 由一值更新該目標向量暫存器的該給定資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一對應資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一對應資料元素,該進位值係獲得自該輸入預測暫存器的一對應預測欄位;以及 由對應於該加法的一進位輸出的一值更新該輸出預測暫存器的一對應預測欄位。
一些處理程序工作負載可要求對非常大的整數值(諸如1024位元、2048位元或4096位元值)應用數學運算。例如,密碼學工作負載可仰賴對大數進行因數分解的難度,且因此可需要將這種大數相乘以加密或解密訊息。例如在RSA 2048中,存在許多2048位元數字的循序乘法以產生4096位元乘積。一些財務處理應用也需要處理長整數值。若使用標準教科書作法將一個運算子的每一位元乘以另一運算子的每一位元,則執行乘法的複雜度通常將隨著位元數的平方值而放大。然而,已知一些減少複雜度的演算法,使得計算成本隨著位元數放大的比例較慢。例如,Karatsuba演算法將要相乘的長數分成較小的部分以個別相乘,這能夠在所需的相乘數量以及一些額外的加法、減法或移位運算之間進行權衡。因此,長整數的乘法,可被分解成數個較小的乘法以及數個加法、減法與移位。可使用向量指令以加速這種計算,此係藉由將不同的子乘法映射到不同的向量道(vector lane)上,使得單一指令可控制數個獨立子乘法的部分的計算。在此情況中,可將多數工作負載有效率地運用在執行各種乘法的部分乘積的一系列的加法或減法中。然而,這在管理部分乘積加法之間的進位資訊的運輸上產生了設計挑戰,因為來自一個加法的進位資訊可需要被輸入至對均等有效值(values of equivalent significance)執行的下一個加法中,且因此可需要將來自一個指令的進位資訊保存作為對於另一個指令的輸入。
一個作法可為有效地減少正在每一向量道內處理的實資料的元素尺寸,並將每一道頂端處的一或更多個位元保存用於儲存來自此道中加法的進位資訊,以讓隨後的指令可讀取此進位資訊。然而,發明人認知到在使用此作法時,因為需要在每一道內包含額外的進位資訊,可需要許多額外指令以解封輸入資料向量(具有完全佔用向量道的元素)以及調整這些成分的尺寸以由減少的有效資料元素尺寸將他們分散到多個向量道。再者,若輸入資料包含數個具有給定元素尺寸的元素,則分散到具有保留給進位的空間的道時,相同量的輸入資料將需要較大的總和向量道數量。例如,4個64位元元素的輸入向量,在由56位元實際資料與8位元保留給進位之下分散到向量道時,將需要指派5個道以容納相同位元數(256位元)的輸入資料,由於4道56位元之每一者僅提供224位元且因此需要第五道以容納最後32位元。由於要計算的部分乘積數隨著向量成分數的平方放大,這可顯著提升所需要的乘法與部分乘積加法的數量,而可進一步降低效能。
下文論述的技術,提供用於實施向量帶進位加法(add-with-carry)指令的技術,使得不需要解封輸入資料,因為指令可直接對佔用整體向量道的源資料元素運算。
在一個作法中,向量帶進位加法指令指定目標向量暫存器、第一與第二資料源向量暫存器以及進位源向量暫存器。至少目標向量暫存器與進位源向量暫存器之每一者,指定包含至少一對資料元素的運算子,其中每一對資料元素包含第一資料元素與第二資料元素。回應於指令,指令解碼器對目標向量暫存器的每一對資料元素控制處理電路系統,以由一值更新目標向量暫存器的資料元素對的第一資料元素,此值對應於第一源資料值、第二源資料值與進位值的加法結果,第一源資料值獲得自第一資料源向量暫存器的所選資料元素,第二源資料值獲得自第二資料源向量暫存器的所選資料元素,進位值獲得自進位源向量暫存器的對應資料元素對的第二資料元素。再者,由對應於加法的進位輸出的值,更新目標向量暫存器的資料元素對的第二資料元素。
因此,目標向量暫存器中的每一元素對的第二資料元素被保留以提供加法的進位輸出,且類似的,進位源向量暫存器內的每一對的第二資料元素被用於提供加法的進位輸入。因此,目標向量暫存器與進位源向量暫存器具有對應的佈局,且實際上通常在實作這些指令時,由向量帶進位加法指令的一個實例所產生的目標向量暫存器,可作為對於向量帶進位加法指令的隨後實例的進位源向量暫存器。
此作法是與直覺相反的,因為這有效地將可用於攜帶源資料與加法結果值的資料元素數減半,這相反於向量處理器中藉由儘可能多地提升向量暫存器檔案的利用來改良計算的效率的常見設計原則。換言之,使用一半的向量道來提供進位值,看起來會浪費向量處理器與向量暫存器檔案的容量,並將使處理給定資料元素量所需的指令數增加一倍。
然而令人驚訝地,發明人認知到儘管可需要更多的帶進位加法指令以執行給定工作負載,但將進位放到每對元素的第二資料元素中的益處,在於第一資料元素可佔用完整道尺寸,這表示不需要將來自輸入向量的元素解封或調整尺寸,且因此向量帶進位加法指令可直接對封裝源資料運算。實際上,對於涉及長整數乘法的工作負載,已發現到,即使需要額外的指令來補償有效地減少的向量帶進位加法指令所處理的元素數,但總體效能仍為較高的,因為(a)避免了解封/調整尺寸的成本,以及(b)藉由前述道內進位作法避免了藉由減少有效道尺寸所造成的部分乘積數的提升。因此,整體而言可改良效能。在任何情況中,在一些微型架構中,即使單一向量帶進位加法指令在架構位準對一半的元素運算,結合以對所有元素運算的兩個指令實例,可被融合在一起以作為單一微指令以被處理程序管線處理,或可被平行處理,以避免因為將每巨指令所處理的元素數減半所造成的顯然的效能損失。這是可能的,例如若微型架構支援對結果匯流排進行多次同時寫入。亦存在為獨立進位鍊形式的平行作法。
在一些實施例中,可由指令與第一及第二源向量暫存器與進位源向量暫存器分開而指定目標向量暫存器,以提供非破壞性的指令格式,這在指令執行後將所有源向量保存在暫存器檔案中,由於結果被寫入不同於所有源暫存器的暫存器。
然而在其他實施例中,第一資料源向量暫存器可為相同於目標向量暫存器的暫存器,且對於每一對,第一源資料值可包含目標向量暫存器的資料元素對的第一資料元素的先前值。實際上,累計運算(其中舊累計器值被加至第二源資料值與進位值,並寫回相同暫存器)有用於許多涉及長整數乘法的工作負載(用於將乘法的各別部分乘積相加),因此對於第一源資料向量暫存器,不必獨立於目標向量暫存器器進行指定。藉由將單一暫存器指定為目標與第一資料源向量暫存器兩者,編碼指令集架構中空間的指令可被節省以用於其他目的。破壞性指令格式(同一暫存器同時作為目標暫存器與一個源暫存器)的另一個優點為,由於有時可需要限制指令所需的源暫存器埠數,且在一些微型架構中,在具有合併預測(其中目標暫存器的預測道保存他們的先前值)的運算的情況中目標暫存器可已經需要被讀取,僅具有兩個進一步的暫存器存取(對於第二源向量暫存器與進位向量暫存器)可為有益的。
向量運算子的向量元素尺寸及(或)總和長度可改變。一些實施例可將元素尺寸及(或)向量長度硬連線至特定的固定值。然而,其他系統可支援可變式向量元素尺寸與向量長度。對於一些向量元素尺寸或向量長度,向量可僅包含兩個元素,且在此情況中目標向量暫存器與進位源向量暫存器可包含單一對資料元素,亦即一個第一資料元素與一個第二資料元素。
然而,有用的是使指令解碼電路系統與處理電路系統支援執行向量帶進位加法指令的至少一個實例,目標與進位源向量暫存器包含多對資料元素,亦即他們包含至少四個元素(第一與第二資料元素之每一者的兩或更多個)。這使得系統能夠支援回應於單一指令計算多個加法,這可有用於加速涉及長整數運算子的乘法的計算。例如,每對元素可代表對Karatsuba演算法的不同子乘法的部分乘積的加法。
可由數種方式完成將資料元素對映射到向量運算子元素上。例如在一個範例中,每一對的第一元素可位於暫存器的一半中,而每一對的第二元素可位於另一半中。例如,在具有4對第一與第二元素的範例中,這些元素可被由2d、2c、2b、2a、1d、1c、1b、1a的次序設置(其中1a為對應於第二元素2a的第一元素,且對於b、c、d對而言亦為如此)。
然而在一個實施例中,每對資料元素可包含一對鄰接的資料元素。因此,在目標向量暫存器與進位源向量暫存器中的資料元素對數量為至少兩個時,對的第一資料元素可與對的第二資料元素交插。例如,在4對第一與第二元素下,這些元素可被由2d、1d、2c、1c、2b、1b、2a、1a的次序設置(或者可將每一對中的第一與第二元素的次序轉置)。由於這可使硬體設計更有效率,此作法可更有效率地由硬體實施,因為要被結合在向量指令的給定子計算中的源運算子與結果值可被限制在位於相同向量道內,或僅分散在緊鄰的向量道中,而非需要跨兩或更多個向量道的較長跨道訊號路徑。因此,藉由交插每一對的第一與第二資料元素,可減少所需的佈線的複雜度與長度。
可從進位源向量暫存器的對應資料元素對的第二資料元素的最小有效位元獲得進位值。回應於向量帶進位加法指令,處理電路系統可由對應於加法進位輸出的值,更新目標向量暫存器的資料元素對的第二資料元素的最小有效位元。使用第二資料元素的最小有效位元提供進位可為較有效率的,因為最小有效位元可鄰接於對應對的第一資料元素的最大有效位元,使得進位與資料值可被寫入目標向量暫存器的連續部分。第二資料元素除了最小有效位元以外的剩餘位元,在進位源向量暫存器與累計器向量暫存器中可為未使用的。儘管留下許多未使用的位元看起來可為浪費向量暫存器檔案中的空間,並浪費向量處理單元中的處理資源,但如上文所論述的,藉由此作法可改良執行長整數乘法時的總體效能。
由帶進位加法指令處理的向量,可具有每一者具有2N
位元的資料元素,且第二源資料值亦可包含2N
位元,其中N為整數。因此,由於第二源資料值具有與向量道自身相同的尺寸(對應於兩個位元數的實際冪次),第二源資料值佔用整體向量道,且因此不需調整尺寸或解封來自輸入向量的資料元素(或先前向量指令的結果)才能允許向量帶進位加法指令對輸入進行運算。相反的,向量帶進位加法指令可直接對來自輸入向量的所選元素運算。這是可能的,因為進位被保存在與資料結果不同的向量元素中。
可從第二資料源向量暫存器的任何元素獲得第二源資料值。可提供指令的不同變異,以從第二源資料向量暫存器的不同元素選出源資料值。
在一個範例中,第二資料源向量暫存器可提供包含至少一對資料元素的運算子,可由與目標及進位源向量暫存器中的元素對對應的方式來設置這對資料元素。例如,每一對的第一與第二資料元素可被交插。可提供向量帶進位加法指令的第一與第二變異。對於第一變異,第二源資料值可包含第二資料源向量暫存器的對應資料元素對的第一資料元素(且指令結果可獨立於每一對的第二元素)。對於第二變異,第二源資料值可包含對應對的第二資料元素(且指令結果可獨立於每一對的第一元素)。藉由提供兩個指令變異以選擇不同的元素作為第二源資料值,這致能了在執行兩個向量帶進位加法指令(第一/第二變異之每一者中之一者)之前不需要執行任何額外的重新排序或解封第二源向量元素,即能夠處理輸入向量的所有元素,因為兩個指令變異的結合可處理第二源向量的每一元素。
在其中指令指定與目標向量暫存器不同的第一資料源向量暫存器的具體實施例中,第一源資料值可類似地被從每一對的第一元素(對於第一指令變異)或每一對的第二元素(對於第二指令變異)萃取出。
另一方面,若第一資料源向量暫存器為相同於目標向量暫存器的暫存器,則對於每一加法,第一源資料值可被從目標向量暫存器中的對應元素對的第一資料元素萃取出(不論所執行的指令變異是第一變異或第二變異),因為目標向量暫存器的第二資料元素將用於呈現進位資訊。
再者,可提供帶進位加法指令的預測變異,這相關聯於指定至少一個預測指示的預測值,每一預測指示對應於目標向量暫存器的該至少一對資料元素之一者。回應於預測變異,指令解碼電路系統可控制處理電路系統,以如前述對目標向量暫存器的資料元素對(對應的預測指示具有第一值)執行第一/第二資料元素的更新,並抑制資料元素對的更新(對應的預測指示具有第二值)。預測值可相關聯於指令,藉由包含預測暫存器指定符(識別儲存預測值的預測暫存器)的指令解碼,或可使用預設預測暫存器以提供預測值給所有的帶進位加法指令預測變異實例,不論指令的編碼為何。對於目標向量暫存器的元素對(對應預測指示具有第二值),此元素對可將先前值保持儲存在目標向量暫存器的此部分中,或可被清除至零或另一預定值。因此,在帶進位加法指令為預測時,相對於在向量的個別資料元素的粒度下運作,預測可在資料元素對的粒度下運作。
可提供向量帶進位加法指令的加法與減法變異。對於加法變異,加法包含相加第一與第二源資料值以及從進位源向量暫存器的第二資料元素獲得的進位值。對於減法變異,運算包含從第一源資料值減去第二源資料值,且進位值指示減法的借位值。對於減法變異,進位輸出代表減法的借位輸出。注意到,減法仍可被視為是加法,因為兩個運算子的相減等於兩個運算子的相加(在一個運算子於執行加法之前為2補數時)。類似的,減法的借位值可被視為加法的進位值,因為借位值僅對應於-1進位而非對於加法的+1進位。
在提供了多於一個向量帶進位加法指令的變異時,可由多種方式分辨變異(第一/第二,或加法/減法)。例如,帶進位加法指令的不同變異可具有不同的指令操作碼。或者,變異可共享共同操作碼,但可在指令編碼中具有另一欄位以分辨變異。在另一範例中,指令的不同變異可具有相同的指令編碼,但可由儲存在設備的控制暫存器中的模式參數分辨,控制暫存器可由前置指令設定以選擇在遭遇隨後的向量帶進位加法指令時應使用哪個指令變異。對於第一/第二變異,第一/第二元素選擇亦可被呈現於由指令讀取的預測或遮蔽暫存器中。
上文論述的向量帶進位加法指令形式(使用進位源向量暫存器與目標向量暫存器的一些元素以運輸進位資訊用於加法/減法)的優點可為,可相對有效率地以微型架構實施,因為回應於指令僅需寫入一個暫存器(目標向量暫存器)。再者,在累計器暫存器被指定為目標與第一源向量暫存器兩者的範例中,指令僅需指定一個目標暫存器指定符與兩個向量源暫存器。
然而,對於實施大整數值計算的問題的替代性解決方案,可為提供使用預測暫存器的向量帶進位加法指令以傳遞進位資訊。資料處理設備可具有數個預測暫存器,預測暫存器包含預測欄位以儲存預測值以控制處理電路系統所執行的運算的遮蔽。儘管對於其他類型的向量指令,預測欄位可控制向量處理程序道的遮蔽,但對於向量帶進位加法指令,可再使用預測暫存器以呈現加法的進位輸出,且亦可從預測暫存器的預測欄位獲得加法的進位輸入。
因此,指令解碼電路系統可回應於向量帶進位加法指令(指定目標向量暫存器、第一資料源向量暫存器、第二資料源向量暫存器、輸入預測暫存器與輸出預測暫存器)以控制處理電路系統,對於目標向量暫存器的給定資料元素,由一值更新目標向量暫存器的給定資料元素,此值對應於第一源資料值、第二源資料值與進位值的加法結果,第一源資料值獲得自第一資料源向量暫存器的對應資料元素,第二源資料值獲得自第二資料源向量暫存器的對應資料元素,進位值獲得自輸入預測暫存器的對應預測欄位。再者,可由對應於該加法的進位輸出的一值更新輸出預測暫存器的對應預測欄位。
儘管此作法可需要更複雜的微型架構(例如對預測暫存器檔案的較快速讀取/寫入路徑,以及回應於同一指令而同時寫入向量暫存器檔案與預測暫存器檔案的能力),此作法的優點為進位未被儲存在目標向量暫存器的元素中,因此可使用目標向量暫存器的每一元素以儲存加法結果值(並可使用第一/第二資料源向量暫存器的每一元素作為源輸入),有效地將回應於單一指令可執行的運算數增加一倍,而因此改良了效能。
簡言之,上文論述的兩個範例具有可直接對來自輸入向量的完整資料元素運算而無需解封或調整尺寸運算的優點,因為進位資訊並未儲存在與資料結果相同的道中,而是被儲存在另一向量暫存器道中或預測暫存器的對應預測欄位中。這對於加速長整數乘法而言是非常有用的。
上文論述的指令形式兩者,可由使用控制處理電路系統的指令解碼器的硬體來實施,以回應於向量帶進位加法指令而執行所需的運算。例如,指令解碼器可包含用於解譯向量帶進位加法指令的編碼的邏輯閘,以選擇性啟用適當的控制訊號路徑,以如前述控制處理電路系統而基於輸入更新結果暫存器。
然而,亦可由處理器架構模擬來實施技術,而非以實體硬體來實施。因此,可提供模擬器電腦程式以控制主控處理設備(自身可不支援上文論述的指令),以提供指令執行環境以執行目標程式碼指令,而在不支援這些指令的目標處理設備上模擬目標程式碼的執行。可由模擬器程式中的指令解碼程式邏輯與處理程式邏輯執行指令解碼器與處理電路系統的功能,且暫存器可被實施為記憶體中的模擬暫存器資料結構,資料結構儲存資料以代表模擬目標處理設備的暫存器。電腦程式可被儲存在儲存媒體上。儲存媒體可為非暫態性儲存媒體。
第1圖示意圖示說明資料處理設備2的範例,具有處理電路系統4以回應於指令解碼器6解碼的指令而執行資料處理作業。從記憶體系統8擷取程式指令,記憶體系統8可包含一或更多個快取與記憶體。指令解碼器6解碼指令以產生控制訊號,控制訊號控制處理電路系統4以處理指令,而執行由指令集架構界定的對應運算。例如,解碼器6可包含邏輯閘以解譯操作碼以及任何額外的指令控制欄位,以產生控制訊號,控制訊號使處理電路系統4啟用適當的硬體單元以執行運算,諸如算數運算、邏輯運算或載入/儲存運算。暫存器10儲存處理電路系統4回應於指令而要處理的資料值,以及用於配置處理電路系統運算的控制資訊。回應於算數或邏輯指令,處理電路系統4從暫存器10讀取運算子,並將指令結果寫回暫存器10。回應於載入/儲存指令,資料值被經由處理邏輯4傳輸在暫存器10與記憶體系統8之間。
暫存器10包含純量暫存器檔案12,包含數個純量暫存器以儲存純量值,純量值包含單一資料元素。純量暫存器可包含整數暫存器以儲存整數運算子,以及浮點數暫存器以儲存浮點數值。或者,可將整數值與浮點數值儲存在相同的暫存器組中。在指令集架構中由指令解碼器6支援的一些指令為純量指令,純量指令控制處理電路系統4以處理從純量暫存器12讀出的純量運算子,以產生要寫回純量暫存器12的純量結果。
暫存器亦包含向量暫存器檔案14與預測暫存器檔案16。向量暫存器檔案14包含數個向量暫存器,向量暫存器支援儲存包含多個資料元素的向量運算子。指令解碼器6支援向量指令,向量指令控制處理電路系統4以對從向量暫存器讀出的各別向量運算子元素執行數個向量處理程序道,以產生要寫入純量暫存器12的純量結果,或要寫入向量暫存器14的另一向量結果。一些向量指令亦可從一或更多個純量運算子產生向量結果,或可對純量暫存器檔案中的純量運算子執行額外純量運算,以及對從向量暫存器檔案讀出的運算子執行向量處理程序。因此,可能的是讓一些指令為純量向量混合式指令。如同在處理電路系統內觸發算數或邏輯運算的向量算數或邏輯指令,解碼器6亦可支援向量載入/儲存指令,向量載入/儲存指令可在向量暫存器14與記憶體系統8之間傳輸資料。
第2圖圖示由預測暫存器16之一者中的預測資訊所控制的範例向量運算。在此範例中,向量指令為向量加法指令,向量加法指令控制處理電路系統4以執行數個獨立的加法運算,每個運算將兩個輸入向量Zm, Zn的對應資料元素對相加,並將加法結果寫入目標向量Zd的對應元素。當然,可應用其他的算數或邏輯運算作為核心運算以在每一向量道中執行,而非僅是加法。預測暫存器P的每一預測欄位控制是否由加法結果更新目標暫存器的對應元素。例如在此範例中,向量道1、2與5被遮蔽(由於對於這些道的對應預測欄位是0),且因此目標暫存器Zd的對應元素不會被設成加法結果。例如,受遮蔽的道可保持他們先前的值。或者,清除/填零形式的預測,可將目標暫存器的受遮蔽元素清除為零或另一預定值,同時未遮蔽道被由在此道中的加法結果寫入。因此大抵而言,可使用預測暫存器16以控制特定道中的向量運算遮蔽。例如,條件向量指令可執行比較,以測試給定向量的每一道中的輸入元素是否符合一些條件,並基於對應道中的比較結果設定預測暫存器中的預測值,且隨後取決於預測來遮蔽隨後向量指令,使得在每一向量道中此指令的效果被設為條件式並取決於先前條件向量指令執行的比較。
儘管第2圖圖示所有的加法被對給定向量平行執行,但這並非必要的。處理電路系統4可支援具有各種不同資料元素尺寸與不同向量長度的向量的處理程序。例如,256位元向量暫存器14可例如被分成32個8位元資料元素、16個16位元資料元素、8個32位元資料元素、4個64位元資料元素、或2個128位元資料元素,或可被解譯成單一256位元元素。再者,可支援不同尺寸的向量暫存器,例如128、256或512位元。例如,可由各種方式將向量暫存器庫14分割,以提供各種向量暫存器尺寸(例如,數個具有固定尺寸的實體暫存器可被由單一向量指令結合並操作,以呈現較大的暫存器尺寸)。因此,如第1圖圖示,暫存器10亦可包含用於控制向量處理程序的控制資訊,諸如指定用於向量運算的資料元素尺寸的元素尺寸參數18(向量的一個資料元素中的位元數),以及指定向量暫存器長度的向量長度參數20(向量中的總位元數,包含所有元素)。在一些實施例中,這些值可被硬連線,使得他們對於所有指令都總是相同的。提供指定元素尺寸18與向量長度20的暫存器仍可為有用的,這使得為了在具有不同元素尺寸或向量長度的各種平臺上執行所撰寫的碼,可讀取正執行此碼的系統上實施的特定元素尺寸或向量長度。然而在其他範例中,元素尺寸及(或)向量長度可被編程,使得指令可指定對於給定運算要使用哪種元素尺寸或向量長度。或者,可由向量指令編碼而非控制暫存器內的參數,來指定元素尺寸及(或)向量長度。
因此,元素尺寸或向量長度可改變。取決於所選擇的特定尺寸,向量處理電路系統可不總是具有足夠的處理硬體來平行處理整體向量。若處理程序邏輯窄於用於給定運算的向量長度,則可由多個循環,多次通過較窄的處理程序邏輯來處理向量。因此,儘管向量指令可回應於單一指令觸發處理電路系統4以在多個處理程序道中執行運算,但這並非必需隱含著所有這些道必需被平行處理。在一種極端情況下,一些向量實施例可僅提供對應於單一道的處理程序邏輯,且隨後循序處理所有向量道。在另一種極端情況下,較高效能的實施例可使用數個平行執行單元平行處理所有向量道。其他實施例可平行處理數個道,但由多個循序塊處理向量整體。
將理解到,元素尺寸與向量長度指示18、20,僅為可儲存在暫存器10中的控制資訊的一些範例。其他範例可包含程式計數器暫存器以指示代表當前執行點的指令位址、堆疊指標暫存器以指示堆疊資料結構的記憶體8中的位置的位址(以在處理例外(exception)時儲存或回復狀態)、以及鏈結暫存器以儲存在功能執行之後處理程序要分支前往的功能返回位址。
第3圖與第4圖圖示根據一個範例的向量帶進位加法指令的加法與減法變異。對於加法與減法變異兩者,圖示進一步的指令的第一與第二變異: ADCLB Zda, Zn, Zm //帶進位長加法(底)-第一變異、加法變異 ADCLT Zda, Zn, Zm //帶進位長加法(頂)-第二變異、加法變異 SBCLB Zda, Zn, Zm //帶進位長減法(底)-第一變異、減法變異 SBCLT Zda, Zn, Zm //帶進位長減法(頂)-第二變異、減法變異
對於每一變異,Zda代表目標向量暫存器(亦作為第一源資料向量暫存器,並可稱為累計器向量暫存器),Zn代表第二源資料向量暫存器,且Zm代表進位源向量資料暫存器。這些指令可用於加速大整數的處理程序,藉由執行加法或減法使得進位或借位輸入資訊被與實際資料值交插在累計器向量暫存器與進位源向量暫存器中。
因此,進位資訊為源與目標向量暫存器的整體部分。有用的是將源向量與目標向量內的「進位」(或「借位」)資訊的位置,限制在鄰接於執行將「進位」作為輸入(或產生「進位」)的數學運算的道的道。見第3圖與第4圖,其中暫存器Zda、Zn、Zm被分成元素對。每一對包含對應於偶數元素的「底」元素(第一元素),以及對應於奇數元素的「頂」元素(第二元素)。對於暫存器Zda、Zm,進位資訊位於每一對的頂元素中,而底元素提供對應的資料。儘管其他範例可由不同方式設置每一對的資料/進位元素(例如將所有資料元素放在暫存器的一半中並將對應的進位元素放在另一半中),但使資料與進位元素交插可為較有效率的,因為用於在Zda中產生鄰接對元素的輸入被從對應的Zn、Zm對元素中選擇,而避免需要使用任何較長的跨元素路徑(延展跨越向量的兩或更多個元素),這可使得處理電路系統的微架構實施例更有效率。因此,這些運算有效地將每一向量分割成「顆粒」或分段,尺寸為向量元素的兩倍。
第3圖圖示ADCLB與ADCLT指令的運算。為了清楚說明,申請人僅圖示說明一個「顆粒」(鄰接頂元素與底元素對)的詳細運算。將理解到,對每一其他的顆粒(元素對)執行相應的運算。ADCLB指令將一個源Zn的偶數元素B(在ADCLT變異的情況中為奇數元素T),加至目標向量暫存器的偶數元素,使用第二源Zm中的每一顆粒(奇數元素)的上半部的最小有效位元作為進位輸入。所產生的總和被寫入目標向量中的每一顆粒的下半部,而所產生的進位資訊被寫入目標中的每一顆粒的上半部的最小有效位元。Zda中每一顆粒的上半部的剩餘位元保持未使用。結果係獨立於進位源暫存器Zm中每一顆粒的底(偶數)元素的位元。再者,對於ADCLB,結果獨立於資料源暫存器Zn的未選擇(頂/奇數)元素,且對於ADCLT,結果獨立於Zn的未選擇(底/偶數)元素。
藉由以此方式交插進位資訊與輸入或結果資料,吾人可確保進位鏈為通常資料流的部分。這致能了數級平行處理方式。首先,可存在一個以上的同時進行中的進位鏈,因為在向量暫存器的粒度位準就解決了相依性。第二,指令的B/T變異可被獨立計算(且在一些微架構中可同時計算,若B/T變異可被融合成單一微運算,或兩個變異可被由管線平行處理)。由於ADCL指令通常消費由先前乘法步驟產生的部分乘積,這些指令使得可能設計程式序列,使得乘法與加法步驟為「精簡型」,且沒有用於處理進位的額外運算,因為進位已經實質上被結合至累計器。這減少了管理進位資訊的成本。
儘管在第3圖與第4圖中每對元素的「第一元素」位於比第二元素更低的元素位置而使得結果被寫入每一對的底元素,但在其他實施例中在暫存器內第一與第二元素可被轉置,使得結果更新每一對的頂元素且進位被寫入底元素。然而,在微架構中將進位提供在每對的較大有效元素是較有效率的,因為這可對應於其中位元可由加法電路輸出的排序,由於進位代表比加法資料結果的最大有效位元更大的一個位元位置。
第4圖圖示向量帶進位加法指令的減法變異的第一/第二變異的對應處理程序。SBCLB與SBCLT指令的運算或資料流分別類似於ADCLB與ADCLT,除了核心運算為「減法」以外(亦即相同為加法,但在加法之前從Zn選擇的元素被2補數化),且「借位」資訊作為輸入並在輸出處產生而非「進位」資訊(借位代表-1進位)。Zn資料輸入的2補數化以及借位反轉兩者,可單純地由將Zn資料源輸入與借位輸入值兩者反轉輸入加法器來實施。不需要分別將1加至Zn資料源輸入,因為借位輸入值的反轉有效地提供了此效果。在借位值為0之情況下,反轉的借位輸入值1對2補數提供1的加法,且不需要借位。在借位值為1之情況下,反轉的借位輸入值0反映了對於借位的1的減法抵銷了對於2補數的1的加法。因此,一旦資料輸入與借位輸入值都已被反轉,則可由相同於加法變異的方式來執行加法。
第4A圖圖示向量帶進位加法指令的預測變異的範例。在此範例中,預測被施加至第3圖圖示的ADCLB變異,但亦可提供類似的ADCLT、SBCLB與SBCLT的預測版本。對目標暫存器Zda的每對鄰接頂/底元素所執行的核心帶進位加法運算,與第3圖相同。然而,指令亦相關聯於預測值P,預測值P例如儲存在預測暫存器16之一者中。預測值包含類似於第2圖的預測欄位的數個預測欄位,但對於第3圖與第4圖圖示類型的向量帶進位加法指令,僅有一半的預測欄位為有效的,由於預測被施加於鄰接元素對的粒度位準下,而非對每一元素施加。在此範例中,有效預測欄位為對應於每一對的底(偶數)元素的欄位(且因此結果獨立於對應於每一對的頂元素的預測欄位,這些欄位由X標示以指示這些欄位的值不會影響結果)。然而,其他實施例可選擇使用對於每對元素的頂(奇數)預測欄位作為有效預測欄位。
對於其中對應預測指示為1的目標向量的元素對,由相同於第3圖的方式執行帶進位加法運算,以由加法產生的資料D更新此對的第一元素,並由帶進位加法輸出C更新此對的第二元素。然而,對於其中對應預測指示為0的元素對(如在此範例中圖示的元素4與5),目標向量Zda'的這些元素的更新被抑制。相對的,目標向量Zda'的這些元素可保持他們的先前值(合併預測),或可被清除至零或另一預定值(填零預測)。因此,預測施加至每一顆粒(元素對),而非施加至每一個別元素。將理解到第4A圖圖示預測暫存器16的一個範例格式,但亦可使用提供預測指示(指示是否應遮蔽目標暫存器Zda'的每對元素)的任何其他技術。
第5圖為圖示向量帶進位加法指令的處理程序的流程圖,向量帶進位加法指令指定目標(累計器)向量暫存器Zda、第二資料源向量暫存器Zn以及進位源向量暫存器Zm(在此範例中目標向量暫存器Zda也作為第一資料源向量暫存器)。在步驟50,指令解碼器判定是否已偵測到這種向量帶進位加法指令,且在未偵測到時根據當前指令所代表的運算來處理當前指令。在遭遇向量帶進位加法指令時,在步驟52指令解碼器判定指令是「頂」(第二)還是「底」(第一)變異。若指令為頂變異,則在步驟54,從第二資料源向量暫存器Zn中的每對元素選擇的元素將為此對的頂元素(換言之,為奇數元素(第二元素)),而若指令為底(第一)變異,則在步驟56,從第二資料源向量暫存器Zn選擇每一對的底(第一或偶數)元素。
在步驟58,指令解碼器判定指令是加法變異或是減法變異。若指令為加法變異,則在步驟60,對目標向量暫存器Zda的每一對元素,將此對的底(第一)元素的新值Zda(B)'設定為:(1)目標向量暫存器中此元素對的底元素的先前值Zda(B);(2)在步驟54或56選擇的第二資料源暫存器Zn中對應元素對的所選元素(頂或底);以及(3)從進位源向量暫存器Zm中對應元素對的頂元素Zm(T)萃取出的進位輸入。再者,目標向量暫存器Zda中對應元素對的頂元素Zda(T)'的最小有效位元被設為加法的進位輸出。
若指令為減法變異,則在步驟62,目標向量暫存器的每一對元素的底元素Zda(B)'被設定為:此底元素的先前值Zda(B)減去在步驟54或56選擇的資料源向量Zn中對應元素對的值,減去從進位源向量暫存器源Zm中對應元素對的頂元素Zm(T)萃取出的進位值所代表的借位值。再者,目標向量暫存器對應元素對的頂元素Zda(T)'的最小有效位元,被設為減法的借位輸出(亦即,Zda(T)的lsb被設為執行減法的加法器電路的進位輸出上的輸出值)。
儘管第3圖至第5圖的範例圖示毀滅性指令格式(其中同一暫存器Zda作為目標暫存器與第一資料源暫存器兩者),亦可提供將不同於目標暫存器的另一向量暫存器指定為第一資料源暫存器的非毀滅性指令格式,以避免在寫入結果至目標暫存器時覆寫第一源向量。
下面論述這些指令的範例使用情況。
數種重要的密碼學工作負載的最耗時的部分,涉及對大整數值執行數學運算的常式。除了密碼學方案以外,涉及大數的數學運算支持資源庫,諸如用於財務軟體和一些科學應用程式的GNU Multiprecision Arithmetic(GMP)資源庫。這種數字通常被使用在由於重現性或數學嚴謹性的考量而不適合使用浮點運算(不考慮其範圍)的實例中。RSA演算法為最常被使用的公鑰密碼學演算法。RSA演算法的安全性,仰賴將大數因數分解的所感知到的難度。為了加密或解密訊息,處理器需要在稱為模冪運算的技術中盡快地將大數相乘。例如在RSA2048中,有許多2048位元數字的循序乘法,給出4096位元乘積,隨後被減少。
整數相乘的最直接方法(常稱為「教科書」方法),對於n位元源需要(2
)個步驟,因為一個源中的每一位元需要乘上另一源中的每一位元。亦存在所需要的「加法」與「資料再對齊」(移位)運算,如下列範例所示:111*543 = 333 + (444 << 1 位元 ) + (555 << 2 位元 ) = 60273
然而,Karatsuba演算法可藉由使用分治法,將兩個n位元數字的乘法減少至最多()個單位元乘法。此方法在「乘法」與「加法」、「減法」等等之間進行權衡,並在大的「n」之下得出良好的效能優點。每個具有尺寸「n」輸入運算子的乘法,被分成數個具有尺寸「n/2」的輸入運算子的較小型乘法,以及一些輔助運算:「加法」、「減法」等等。吾人可正式地撰寫將兩個n位元整數A與B相乘而產生2n
位元結果C的表示式,如第6圖頂部的方程式所示。注意到在此範例中,吾人使用Karatsuba演算法的減法變異,以確保部分乘積不會具有難以處理的尺寸。因此,兩個2048位元整數的乘法,可被分解成三次1024位元整數的子乘法,如第6圖圖示。每一1024位元乘法自身可被由相同方式分解成三次512位元整數乘法。每一512位元乘法隨後可進一步被分解成三次256位元整數乘法。最後會到達一點,此時由於再結合總體結果所需的額外加法、減法或移位,再進一步分解乘法會產生較大的總和成本。
因為子乘法為獨立的,在適當的資料佈局與組織下,可能將Karatsuba演算法向量化,如第6圖圖示。例如,若Karatsuba樹的葉節點提供256位元子乘法,則Karatsuba樹的給定分支的三個256位元子乘法之每一者可被分配至向量的個別道A、B、C,如第6圖中上方範例所示。再者,在較大的向量之下,Karatsuba樹的較高位準處的不同的512x512位元乘法的6個256位元子乘法,可被分配至6道8元素向量(每組三個道A、B、C代表對應512位元節點的三個256x256位元乘法),如第6圖中下方範例所示。
例如,若吾人選擇64位元元素尺寸,則吾人可將兩個256位元整數A與B相乘,如下:A x B = { a3, a2, a1, a0 } x { b3, b2, b1, b0 }。第7圖繪製屬於此乘法的部分乘積。注意到,乘積是從右到左交錯的,因為每一部分乘積需要被「再對齊」以在適當的欄中累計。
第8圖圖示碼序列,呈現為了執行第7圖中第二「支」的計算以計算部分乘積a1 x { b3, b2, b1, b0 }所需要的一個可能的指令序列實例。碼序列開始於一些乘法,以產生各個部分乘積的低與高64位元部分。注意到,每個256位元x256位元乘法實例佔用向量處理程序中的單一道,且每個256位元運算子的64位元成分垂直分佈(在由個別指令作動的個別暫存器中),而非跨越每一向量。這隱含著為了產生對於a1 x { b3, b2, b1, b0 }計算的部分乘積,暫存器z1(包含來自不同源運算子的a1)需要被乘上z4(從數個不同的源運算子提供b0)、z5(b1)、z6(b2)與z7(b3)(第8圖中第1行至第8行)之每一者。
在第8圖中,adclb與adclt指令用於將部分乘積加入對於每一道的累計器:zacc1LB、zacc1LT、zacc0HB等等。執行對應的adclb與adclt指令對,以分別處理來自乘法的部分乘積的偶數與奇數元素。由暴露4向平行處理的方式來使用指令:B變異與T變異為獨立的,並因此可被有益地排程。此外,存在兩個進位鏈,進位鏈能夠被同時處理。一個進位鏈開始於第10行,且另一個進位鏈開始於第12行。吾人隨後可透過第14、18、26行上的指令追蹤「B」變異的第一進位鏈。可透過第16、20、29行的指令追蹤第二進位鏈。存在對於「T」變異的類似鏈。第32、33行的指令被用於合併先前的獨立進位鏈,同時將最終部分乘積(a1×b3(H))加入累計器。
第9圖與第10A圖至第10I圖圖示使用向量帶進位加法指令的另一範例。第9圖圖示用於執行乘法{ a3, a2, a1, a0 } x bi的部分乘積的加法的ADCLB指令的範例指令序列,這可代表較大乘法的單支,此支可為用於將大整數相乘的Karatsuba樹的部分。第9圖中假定部分乘積已被產生並儲存在向量暫存器P0ilo, P1ilo …, P3ihi中(其中Pjilo與Pjihi代表aj與bi乘積的下半部與上半部)。AccB[i]至AccB[i+4]代表5個累計器暫存器,用於儲存各別圖示在第0欄至第4欄中的乘積{ a3, a2, a1, a0 } x bi的5個部分。每對向量道代表施加至不同輸入值的完全獨立的計算(相較於其他向量道),因此對於第7圖圖示的給定計算類型所需的每一部分乘積加法,被藉由第9圖的指令序列執行在單一對道內(例如,每一對道中的計算對應於Karatsuba樹的不同節點)。為了簡潔說明,第10A圖至第10I圖僅圖示對偶數向量道執行的ADCLB指令,可對奇數道執行未圖示的對應ADCLT指令。為了清楚說明,將第一進位鏈圖示為不具有星號(例如CAccBi)並將第二進位鏈圖示為具有星號(例如CAccBi*),來辨別兩個獨立的進位鏈。
第10A圖:AccB[i]代表第0欄中的累計。對於AccB[i]中的每對元素,此對的下(偶數)元素被設為以下之總和:AccB[i]中下元素的先前值;P0ilo中相應元素對的底元素;以及作為進位輸入的0(由於這是結果的最小有效部分,且因此不需要來自更低加法的進位)。加法結果已呈現對於此部分結果的末端結果值Res[i],因為沒有進一步的進位能夠被注入結果的最小有效部分。來自加法的進位輸出CaccBi被寫入AccB[i]中對的頂元素的最小有效位元,並代表對第1欄最小有效位元均等有效的進位位元。
第10B圖:AccB[i+1]代表第1欄中的累計。對於AccB[i+1]中的每對元素,此對的下(偶數)元素被設為以下之總和:AccB[i+1]中下元素的先前值;P1ilo中相應元素對的底元素;以及作為進位輸入的CaccBi。換言之,先前ADCLB指令的目標暫存器AccB[i]被指定為下一ADCLB指令的進位源向量暫存器,使得在第0欄中先前加法產生的進位CaccBi被輸入作為對於第1欄中加法的進位輸入。來自第1欄累計的進位輸出CaccBi+1被儲存在AccB[i+1]中每對的頂元素的最小有效位元,以代表要施加至第2欄中累計的最小有效位元的進位。
第10C圖:AccB[i+2]代表第2欄中的累計。再次說明,先前指令的結果向量AccB[i+1]變為下一指令的進位源向量暫存器,使得對於每對元素,第1欄中先前加法產生的進位CaccBi+1被從AccB[i+1]中相應對的頂元素萃取出,並被加入AccB[i+2]與P2ilo的累計,這被寫入AccB[i+2]中元素對的底部,且產生的進位輸出CaccBi+2被儲存在AccB[I+2]中每對元素的頂元素中。
第10D圖:此指令標示第二進位鏈的開始,獨立於透過第10A圖至第10C圖所採取的進位鏈。此指令代表部分乘積P0ihi的第1欄中對來自第10B圖的AccB[i+1]的加法。注意到,AccB[I+1]的奇數元素中的進位值已被在第10C圖中消耗,因此可被由新進位值CaccBi+1*在奇數元素中覆寫,新進位值CaccBi+1*來自AccB[i+1]的偶數元素與P0ihi的偶數元素的每個加法。
第10E圖:此指令為第一進位鏈的部分,並使用來自第10C圖的進位輸出CaccBi+2(儲存在AccB[i+2]中每對元素的高元素)作為對AccB[i+3]與P3ilo中每對元素的低元素的加法的進位輸入(代表第3欄中的加法)。所產生的進位輸出CaccBi+2被儲存在AccB[i+3]中每對元素的高元素。
第10F圖:此指令在第二進位鏈中使用來自第10D圖的進位輸出CaccBi+1*(對第2欄最小有效位元均等有效),作為對第2欄中AccB[i+2]與P1ihi加法的進位輸入。
第10G圖:此指令在第一進位鏈中執行向量加法於AccB[i+4]的偶數道與P3ihi中,且每個加法的進位輸入來自AccB[i+3]的奇數道(來自第10E圖)。儘管指令仍可將各別加法的進位輸出寫入AccB[i+4]的奇數元素的最小有效位元,實際上任何隨後的指令不需要這些進位,因為此累計代表結果的最大有效位元。
第10H圖:此指令在第二進位鏈中執行向量加法於AccB[i+3]的偶數道與P2ihi中,且每個加法的進位輸入CaccBi+2*來自AccB[i+2]的奇數道(來自第10F圖)。
第10I圖:最後,此指令在第二進位鏈中執行AccB[i+4]的偶數道中與填零資料源暫存器的向量加法(第二資料輸入為零,因為僅有一個部分乘積要被加入最大有效欄,這已由第10G圖中的指令加入)。每個加法的進位輸入CaccBi+2*來自AccB[i+3]的奇數道(來自第10G圖)。每個加法的結果被寫入累計器暫存器AccB[i+4]的偶數道。再次說明,儘管可由每個加法的進位輸出寫入奇數道,作為指令的正常行為部分,但這些進位對於任何進一步的指令是不需要的。
因此,此範例圖示了ADCLB指令如何可有效率地允許乘法部分乘積的加法的進位資訊,被與資料結果自身一同運輸,以致能施加至二冪次位元數元素輸入向量的這種乘法的有效率的計算,使得在執行加法之前不需要將向量乘法指令的結果解封。這改良了涉及長整數乘法的計算效能,例如使用Karatsuba演算法。
第11圖圖示實施帶進位加法指令的替代方式。相對於採取來自向量暫存器交替元素的進位輸入,係從預測暫存器檔案16的輸入預測暫存器Pm的對應預測欄位獲得進位輸入。類似的,進位輸出被寫入目標預測暫存器Pd2中的相應預測欄位。藉由此作法,可由真實資料值完全佔用向量,因為不需要在每一其他元素中呈現進位。因此,對於八元素向量,這將允許回應於同一指令執行八個個別累計。結果向量Zda1的每一元素設為此元素的先前值與資料源向量Zn對應元素的總和或差異。從輸入預測暫存器Pm的對應預測欄位萃取出加法的進位輸入,且來自加法的進位輸出被寫入輸出預測暫存器Pd2的對應預測欄位。再次說明,可類似於第3圖與第4圖圖示的來提供加法與減法變異,使得進位輸入/輸出可代表進位或借位資訊(借位代表要從下一最大有效位元扣除,而進位代表要對下一最大有效位元加值,亦即借位為進位-1)。
儘管第11圖中圖示的作法可產生較緊密封裝的向量暫存器檔案並因此致能在半數的指令中執行累計(例如,不需要個別的ADCLB與ADCLT指令,因為元資料向量的所有元素可被在一個指令中處理),但這可需要較複雜的微架構修改,因為除了寫入向量暫存器檔案以外指令需要額外寫入預測暫存器檔案,這對於許多向量微架構而言是不常見的。因此,要使用第3、4圖或第11圖中的作法,可取決於軟體效率與硬體微架構效率之間的權衡。
第12圖為圖示說明帶進位加法指令的預測形式的處理程序的流程圖。在步驟100,偵測是否遭遇到這種向量帶進位加法指令,若未偵測到,則指令解碼器6控制處理電路系統4執行由所偵測到的指令類型所代表的其他運算。若指令為向量帶進位加法指令,則在步驟102,偵測指令是加法變異還是減法變異。注意到,對於此指令而言沒有第一與第二(頂或底)變異,因為藉由移動進位資訊以分離預測暫存器,不需要保存一半的元素給進位,且因此可能在單一指令中對資料源暫存器的所有元素進行處理。
若向量帶進位加法指令為加法變異,則在步驟104,目標暫存器Zda1(i)’的每一元素i的新值被設定為等於此資料元素先前值Zda1(i)、資料源向量暫存器Zn(i)的對應資料元素以及從輸入預測暫存器Pm(i)的對應預測欄位i取得的進位輸入的總和。再者,輸出預測暫存器Pd2(i)的對應預測欄位被設為等於加法的進位輸出。
若指令為減法變異,則在步驟106,目標暫存器的每一元素Zda1(i)’被設為新值,新值對應於此元素Zda1(i)的先前值減去資料源暫存器的對應元素Zn(i),減去輸入預測暫存器Pm(i)的對應預測欄位所指示的借位值。再次說明,輸出預測暫存器的對應預測欄位Pd2(i)被設為等於減法的借位輸出。將理解到,對每一各別的元素位置(亦即i=0...N-1,其中N為向量中元素總和數量)個別執行步驟104與106。
儘管在第11圖與第12圖圖示的範例中,相同暫存器Zda1作為目標向量暫存器與第一源向量暫存器兩者,再次說明,亦可能提供非破壞性變異,其中將個別的暫存器指定為第一源向量暫存器。
亦可提供第11圖圖示的帶進位加法指令的預測變異,其中以與第2圖所示類似的方式逐元素地施加預測。
第13圖圖示說明可使用的模擬器實施例。儘管前述具體實施例係由用於操作支援所關注技術的特定處理硬體的設備與方法來實施,但也可能提供根據本文所述具體實施例的透過使用電腦程式來實施的指令執行環境。這種電腦程式時常被稱為模擬器,只要他們提供硬體架構的軟體式實施例。各種模擬器電腦程式包含模擬器、虛擬機器、模型、與二元轉譯器(包含動態二元轉譯器)。通常來說,模擬器實施例可執行在主控處理器230上,可選地執行支援模擬程式210的主控作業系統220。在一些設置中,硬體與所提供的指令執行環境(及(或)提供在同一主控處理器上的多個分異的指令執行環境)之間可存在多個模擬層。在過去歷史上,需要強力的處理器以提供由合理速度執行的模擬器實施例,但這種作法在一些情況中可被解決,諸如在由於相容性或再使用理由而需要執行專屬於另一處理器的碼時。例如,模擬器實施例可提供具有未由主控處理器硬體支援的額外功能性的指令執行環境,或提供通常相關聯於不同硬體架構的指令執行環境。Robert Bedichek所著的「Some Efficient Architecture Simulation Techniques」(Winter 1990 USENIX Conference)第53至63頁說明了模擬的綜觀。
就先前已參考特定硬體構造或特徵說明了具體實施例而言,在模擬式具體實施例中,可通過合適的軟體構造或特徵來提供等效的功能。例如,可在模擬式具體實施例中實施特定電路系統為電腦程式邏輯。類似的,諸如暫存器或快取的記憶體硬體,可被實施在模擬式具體實施例中作為軟體資料結構。在其中前述具體實施例已提及的硬體元件之一者或更多者係存在於主控硬體(例如主控處理器230)上的設置中,一些模擬式具體實施例可在適合時使用主控硬體。
模擬器程式210可被儲存在電腦可讀取儲存媒體(可為非暫態性媒體)上,並對目標碼200(可包含應用程式、作業系統與管理器)提供程式介面(指令執行環境),程式介面相同於模擬器程式210所模型化的硬體架構的應用程式介面。因此,可從使用模擬器程式210的指令執行環境內執行目標碼200的程式指令,使得事實上不具有前述設備2硬體特徵的主控電腦230可模擬這些特徵。例如,模擬器程式210可分別包含指令解碼程式邏輯212、處理程式邏輯214、以及暫存器資料結構216(功能上對應於指令解碼器6)、處理電路系統4以及暫存器10。例如,解碼程式邏輯212可包含模擬器程式210的一系列的「若(if)」陳述式,以檢查目標碼200的指令的指令編碼以判定要執行的作業,且處理程式邏輯214可對應於要對特定指令啟用的「則(then)」常式,以將他們映射至要由主控作業系統220執行的對應指令。暫存器資料結構216可包含記憶體區域,記憶體區域經分配以模擬正由模擬器程式210模擬的模擬式設備2的暫存器。
在本申請案中,詞語「被配置為......」用於表示設備的元件具有能夠執行所定義的作業的配置。在此背景內容中,「配置」表示硬體或軟體的互連的佈置或方式。例如,設備可具有提供所定義的作業的專用硬體,或者可以對處理器或其他處理設備進行編程以執行該功能。「配置為」並不意味著需要以任何方式改變設備元件以便提供定義的作業。
儘管本文已參照附加圖式詳細說明了本發明的說明性具體實施例,但應了解到本發明並不限於這些精確的具體實施例,且在本發明所屬技術領域中具有通常知識者將可進行各種改變與修改,而不脫離如附加申請專利範圍所界定的本揭示內容的精神與範圍。
2‧‧‧資料處理設備
4‧‧‧處理電路系統
6‧‧‧解碼器
8‧‧‧記憶體系統
10‧‧‧暫存器
12‧‧‧純量暫存器
14‧‧‧向量暫存器
16‧‧‧預測暫存器
18‧‧‧元素尺寸參數
20‧‧‧向量長度
50‧‧‧步驟
52‧‧‧步驟
54‧‧‧步驟
56‧‧‧步驟
58‧‧‧步驟
60‧‧‧步驟
62‧‧‧步驟
100‧‧‧步驟
102‧‧‧步驟
104‧‧‧步驟
106‧‧‧步驟
200‧‧‧目標碼
210‧‧‧模擬器程式
212‧‧‧指令解碼程式邏輯
214‧‧‧處理程式邏輯
216‧‧‧暫存器資料結構
220‧‧‧主控作業系統
230‧‧‧主控電腦
根據下文範例說明,並結合附加圖式來閱讀時,將可顯然瞭解本技術的進一步的態樣、特徵與優點,在附加圖式中:
第1圖示意圖示說明支援執行向量指令的資料處理設備的範例;
第2圖圖示具有預測的向量作業的範例;
第3圖與第4圖圖示根據第一範例的向量帶進位加法指令的加法與減法變異;
第4A圖圖示向量帶進位加法指令的預測變異;
第5圖為圖示處理向量帶進位加法指令的方法的流程圖;
第6圖圖示根據Karatsuba演算法的長整數值的乘法的向量化的範例;
第7圖圖示在執行兩個256位元值的乘法時要加入的部分乘積的範例(使用64位元向量元素尺寸);
第8圖圖示範例指令序列,包含第3圖圖示的向量帶進位加法指令;
第9圖圖示使用向量帶進位加法指令的第二範例指令序列;
第10A圖至第10I圖圖示一系列的示意圖,圖示說明第9圖指令序列的處理程序;
第11圖圖示第二範例向量帶進位加法指令,使用預測暫存器以運輸對於加法或減法的進位值;
第12圖為根據第11圖範例的圖示說明向量帶進位加法指令的處理程序的流程圖;以及
第13圖圖示說明可使用的模擬器範例。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
Claims (15)
- 一種設備,包含: 處理電路系統,用於執行資料處理程序; 指令解碼電路系統,用於解碼指令以控制該處理電路系統執行該資料處理程序;以及 複數個向量暫存器,用於儲存向量運算子,該等向量運算子包含複數個資料元素;其中: 該指令解碼電路系統回應於一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、以及一進位源向量暫存器,至少該目標向量暫存器與該進位源向量暫存器之每一者指定包含至少一對資料元素的運算子,每一對資料元素包含一第一資料元素與一第二資料元素,該指令解碼電路系統回應於該向量帶進位加法指令以對該目標向量暫存器的每一對資料元素控制該處理電路系統以: 由一值更新該目標向量暫存器的該對資料元素的該第一資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一所選資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一所選資料元素,該進位值係獲得自該進位源向量暫存器的一對應資料元素對的該第二資料元素;以及 由對應於該加法的一進位輸出的一值,更新該目標向量暫存器的該對資料元素的該第二資料元素。
- 如請求項1所述之設備,其中該第一資料源向量暫存器為與該目標向量暫存器相同的暫存器,且該第一源資料值包含該目標向量暫存器的該對資料元素的該第一資料元素的一先前值。
- 如請求項1與2之任一項所述之設備,其中每一對資料元素包含一對鄰接資料元素。
- 如先前請求項之任一項所述之設備,其中在該目標向量暫存器與該進位源向量暫存器中的資料元素對數量為至少兩個時,該等資料元素對的該等第一資料元素與該等資料元素對的該等第二資料元素交插。
- 如先前請求項之任一項所述之設備,其中回應於該向量帶進位加法指令,該指令解碼電路系統經配置以控制該處理電路系統以: 從該進位源向量暫存器的該對應資料元素對的該第二資料元素的一最小有效位元獲得該進位值,以及 由對應於該加法的該進位輸出的該值,更新該目標向量暫存器的該對資料元素的該第二資料元素的一最小有效位元。
- 如請求項5所述之設備,其中回應於該向量帶進位加法指令,對於該進位源向量暫存器與該目標向量暫存器兩者,該第二資料元素除了該最小有效位元以外的剩餘位元為未使用。
- 如先前請求項之任一項所述之設備,其中每一資料元素包含2N 位元,且該第二源資料值包含2N 位元,其中N為一整數。
- 如先前請求項之任一項所述之設備,其中該第二資料源向量暫存器亦指定包含至少一對資料元素的一運算子,每一對資料元素包含一第一資料元素與一第二資料元素; 回應於該向量帶進位加法指令的一第一變異,該第二源資料值包含從該第二資料源向量暫存器的一對應資料元素對的該第一資料元素獲得的一值;以及 回應於該向量帶進位加法指令的一第二變異,該第二源資料值包含從該第二資料源向量暫存器的該對應資料元素對的該第二資料元素獲得的一值。
- 如先前請求項之任一項所述之設備,其中回應於該向量帶進位加法指令的相關聯於指定至少一個預測指示的一預測值的一預測變異(每一預測指示對應於該目標向量暫存器的該至少一對資料元素之一者),該指令解碼電路系統經配置以控制該處理電路系統以: 對於其中該對應預測指示具有一第一值的一對資料元素,執行該由對應於該加法的該結果更新該對的該第一資料元素的該步驟,以及該由該加法的該進位輸出更新該對的該第二資料元素的該步驟;以及 對於其中該對應預測指示具有一第二值的一對資料元素,抑制該由對應於該加法的該結果更新該對的該第一資料元素的該步驟,以及該由該加法的該進位輸出更新該對的該第二資料元素的該步驟。
- 如先前請求項之任一項所述之設備,其中回應於該向量帶進位加法指令的一加法變異,該加法包含將該第一源資料值、該第二源資料值與該進位值相加;以及 回應於該向量帶進位加法指令的一減法變異,該加法包含從該第一源資料值減去該第二源資料值且該進位值指示該減法的一借位值,且該進位輸出包含該減法的一借位輸出。
- 一種電腦程式,用於控制一主控處理設備以提供一指令執行環境以執行目標程式碼指令,該電腦程式包含: 指令解碼程式邏輯,用於解碼該目標程式碼指令以控制處理程式邏輯執行資料處理程序;以及 一向量暫存器資料結構,用於儲存資料,資料代表用於儲存向量運算子的複數個向量暫存器,該等向量運算子包含複數個資料元素;其中: 該指令解碼程式邏輯回應於一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、以及一進位源向量暫存器,至少該目標向量暫存器與該進位源向量暫存器之每一者指定包含至少一對資料元素的運算子,每一對資料元素包含一第一資料元素與一第二資料元素,該指令解碼程式邏輯回應於該向量帶進位加法指令以對該目標向量暫存器的每一對資料元素控制該處理程式邏輯以更新該向量暫存器資料結構以: 由一值更新該目標向量暫存器的該對資料元素的該第一資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一所選資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一所選資料元素,該進位值係獲得自該進位源向量暫存器的一對應資料元素對的該第二資料元素;以及 由對應於該加法的一進位輸出的一值,更新該目標向量暫存器的該對資料元素的該第二資料元素。
- 一種資料處理方法,包含以下步驟: 解碼一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、以及一進位源向量暫存器,至少該目標向量暫存器與該進位源向量暫存器之每一者指定包含至少一對資料元素的運算子,每一對資料元素包含一第一資料元素與一第二資料元素;以及 回應於該向量帶進位加法指令的解碼,對該目標向量暫存器的每一對資料元素控制處理電路系統以: 由一新值更新該目標向量暫存器的該對資料元素的該第一資料元素,該新值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量的一所選資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一所選資料元素,該進位值係獲得自該進位源向量暫存器的一對應資料元素對的該第二資料元素;以及 由對應於該加法的一進位輸出的一值,更新該目標向量暫存器的該對資料元素的該第二資料元素。
- 一種設備,包含: 處理電路系統,用於執行資料處理程序; 指令解碼電路系統,用於解碼指令以控制該處理電路系統執行該資料處理程序; 複數個向量暫存器,用於儲存向量運算子,該等向量運算子包含複數個資料元素;以及 複數個預測暫存器,包含複數個預測欄位以儲存預測值以控制該處理電路系統所執行的運算的遮蔽;其中: 該指令解碼電路系統回應於一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、一輸入預測暫存器與一輸出預測暫存器,該指令解碼電路系統回應於該向量帶進位加法指令以對該目標向量暫存器的一給定資料元素控制該處理電路系統以: 由一值更新該目標向量暫存器的該給定資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一對應資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一對應資料元素,該進位值係獲得自該輸入預測暫存器的一對應預測欄位;以及 由對應於該加法的一進位輸出的一值更新該輸出預測暫存器的一對應預測欄位。
- 一種電腦程式,用於控制一主控處理設備以提供一指令執行環境以執行目標程式碼指令,該電腦程式包含: 指令解碼程式邏輯,用於解碼該目標程式碼指令以控制處理程式邏輯執行資料處理程序;以及 一暫存器資料結構,用於儲存資料,資料代表用於儲存包含複數個資料元素的向量運算子的複數個向量暫存器,以及用於儲存預測值以控制該處理程式邏輯所執行的向量運算的遮蔽的複數個預測暫存器;其中: 該指令解碼程式邏輯回應於一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、一輸入預測暫存器與一輸出預測暫存器,該指令解碼程式邏輯回應於該向量帶進位加法指令以對該目標向量暫存器的一給定資料元素控制該處理電路系統以更新該暫存器資料結構以: 由一值更新該目標向量暫存器的該給定資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一對應資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一對應資料元素,該進位值係獲得自該輸入預測暫存器的一對應預測欄位;以及 由對應於該加法的一進位輸出的一值更新該輸出預測暫存器的一對應預測欄位。
- 一種資料處理方法,包含以下步驟: 解碼一向量帶進位加法指令,該向量帶進位加法指令指定一目標向量暫存器、一第一資料源向量暫存器、一第二資料源向量暫存器、一輸入預測暫存器與一輸出預測暫存器,該輸入預測暫存器與該輸出預測暫存器係從用於儲存預測值以控制向量運算遮蔽的複數個預測暫存器中選出;以及 回應於該向量帶進位加法指令的解碼,對該目標向量暫存器的一給定資料元素控制處理電路系統以: 由一值更新該目標向量暫存器的該給定資料元素,該值對應於一第一源資料值、一第二源資料值與一進位值的一加法的一結果,該第一源資料值係獲得自該第一資料源向量暫存器的一對應資料元素,該第二源資料值係獲得自該第二資料源向量暫存器的一對應資料元素,該進位值係獲得自該輸入預測暫存器的一對應預測欄位;以及 由對應於該加法的一進位輸出的一值更新該輸出預測暫存器的一對應預測欄位。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17386048.7A EP3499362B1 (en) | 2017-12-13 | 2017-12-13 | Vector add-with-carry instruction |
??17386048.7 | 2017-12-13 | ||
EP17386048.7 | 2017-12-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201928656A true TW201928656A (zh) | 2019-07-16 |
TWI791694B TWI791694B (zh) | 2023-02-11 |
Family
ID=60923334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107142663A TWI791694B (zh) | 2017-12-13 | 2018-11-29 | 向量帶進位加法指令 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11106465B2 (zh) |
EP (1) | EP3499362B1 (zh) |
JP (1) | JP7324754B2 (zh) |
KR (1) | KR102649933B1 (zh) |
CN (1) | CN111433741A (zh) |
IL (1) | IL274178B2 (zh) |
TW (1) | TWI791694B (zh) |
WO (1) | WO2019115142A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2597709B (en) * | 2020-07-30 | 2024-08-07 | Advanced Risc Mach Ltd | Register addressing information for data transfer instruction |
CN112416294B (zh) * | 2020-11-20 | 2022-09-16 | 安谋科技(中国)有限公司 | 处理器及其二进制累加方法和计算机可读介质 |
US11829756B1 (en) * | 2021-09-24 | 2023-11-28 | Apple Inc. | Vector cumulative sum instruction and circuit for implementing filtering operations |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
US5717616A (en) * | 1993-02-19 | 1998-02-10 | Hewlett-Packard Company | Computer hardware instruction and method for computing population counts |
DE4430195B4 (de) * | 1993-12-13 | 2004-09-23 | Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto | Verfahren zur Auswertung von Booleschen Ausdrücken |
JP3691538B2 (ja) * | 1995-03-07 | 2005-09-07 | 富士通株式会社 | ベクトルデータ加算方法及びベクトルデータ乗算方法 |
US6295597B1 (en) * | 1998-08-11 | 2001-09-25 | Cray, Inc. | Apparatus and method for improved vector processing to support extended-length integer arithmetic |
JP3779602B2 (ja) | 2001-11-28 | 2006-05-31 | 松下電器産業株式会社 | Simd演算方法およびsimd演算装置 |
US7334110B1 (en) * | 2003-08-18 | 2008-02-19 | Cray Inc. | Decoupled scalar/vector computer architecture system and method |
US20060259737A1 (en) * | 2005-05-10 | 2006-11-16 | Telairity Semiconductor, Inc. | Vector processor with special purpose registers and high speed memory access |
US20080016320A1 (en) * | 2006-06-27 | 2008-01-17 | Amitabh Menon | Vector Predicates for Sub-Word Parallel Operations |
GB2474901B (en) * | 2009-10-30 | 2015-01-07 | Advanced Risc Mach Ltd | Apparatus and method for performing multiply-accumulate operations |
US9588766B2 (en) | 2012-09-28 | 2017-03-07 | Intel Corporation | Accelerated interlane vector reduction instructions |
US9817663B2 (en) * | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US10318293B2 (en) * | 2013-07-09 | 2019-06-11 | Texas Instruments Incorporated | Predication methods for vector processors |
US9400651B2 (en) * | 2013-09-24 | 2016-07-26 | Apple Inc. | Early issue of null-predicated operations |
US9557995B2 (en) * | 2014-02-07 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing segmented operations |
US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
US10838719B2 (en) * | 2014-11-14 | 2020-11-17 | Marvell Asia Pte, LTD | Carry chain for SIMD operations |
GB2548600B (en) * | 2016-03-23 | 2018-05-09 | Advanced Risc Mach Ltd | Vector predication instruction |
GB2548908B (en) * | 2016-04-01 | 2019-01-30 | Advanced Risc Mach Ltd | Complex multiply instruction |
-
2017
- 2017-12-13 EP EP17386048.7A patent/EP3499362B1/en active Active
-
2018
- 2018-11-15 US US16/650,999 patent/US11106465B2/en active Active
- 2018-11-15 IL IL274178A patent/IL274178B2/en unknown
- 2018-11-15 CN CN201880078648.7A patent/CN111433741A/zh active Pending
- 2018-11-15 KR KR1020207018974A patent/KR102649933B1/ko active IP Right Grant
- 2018-11-15 WO PCT/EP2018/081444 patent/WO2019115142A1/en active Application Filing
- 2018-11-15 JP JP2020531157A patent/JP7324754B2/ja active Active
- 2018-11-29 TW TW107142663A patent/TWI791694B/zh active
Also Published As
Publication number | Publication date |
---|---|
TWI791694B (zh) | 2023-02-11 |
IL274178A (en) | 2020-06-30 |
CN111433741A (zh) | 2020-07-17 |
US20200319885A1 (en) | 2020-10-08 |
EP3499362A1 (en) | 2019-06-19 |
EP3499362B1 (en) | 2022-11-30 |
JP7324754B2 (ja) | 2023-08-10 |
IL274178B1 (en) | 2023-11-01 |
WO2019115142A1 (en) | 2019-06-20 |
IL274178B2 (en) | 2024-03-01 |
KR20200094771A (ko) | 2020-08-07 |
US11106465B2 (en) | 2021-08-31 |
KR102649933B1 (ko) | 2024-03-22 |
JP2021507348A (ja) | 2021-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
KR101202445B1 (ko) | 프로세서 | |
TWI728068B (zh) | 複數乘法指令 | |
CN107851013B (zh) | 数据处理装置和方法 | |
TWI791694B (zh) | 向量帶進位加法指令 | |
TW201737067A (zh) | 向量預測指令 | |
WO2021250392A1 (en) | Mixed-element-size instruction | |
CN110914801B (zh) | 在数据处理设备中的向量交叉 | |
KR102586259B1 (ko) | 레지스터 기반의 복소수 처리 | |
WO2023148467A1 (en) | Technique for performing memory access operations | |
WO2023199014A1 (en) | Technique for handling data elements stored in an array storage | |
WO2023199015A1 (en) | Technique for handling data elements stored in an array storage | |
WO2023242531A1 (en) | Technique for performing outer product operations | |
GB2628590A (en) | Technique for efficient multiplication of vectors of complex numbers |