TWI338858B - Efficient multiplication sequence for large integer operands wider than the multiplier hardware - Google Patents
Efficient multiplication sequence for large integer operands wider than the multiplier hardware Download PDFInfo
- Publication number
- TWI338858B TWI338858B TW093109455A TW93109455A TWI338858B TW I338858 B TWI338858 B TW I338858B TW 093109455 A TW093109455 A TW 093109455A TW 93109455 A TW93109455 A TW 93109455A TW I338858 B TWI338858 B TW I338858B
- Authority
- TW
- Taiwan
- Prior art keywords
- multiplication
- operand
- segment
- memory
- character
- Prior art date
Links
- 239000000047 product Substances 0.000 claims description 13
- 238000009825 accumulation Methods 0.000 claims description 11
- 238000000034 method Methods 0.000 claims description 11
- 230000001186 cumulative effect Effects 0.000 claims description 3
- 239000012634 fragment Substances 0.000 claims description 3
- 239000013067 intermediate product Substances 0.000 claims 6
- 230000008521 reorganization Effects 0.000 claims 3
- 239000013589 supplement Substances 0.000 description 11
- 238000010586 diagram Methods 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 208000002925 dental caries Diseases 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
Classifications
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
-
- 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
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Description
1338858 玖、發明說明: 【發明所屬之技術領域】 本發明係關於算術處理電路,尤其關於乘算器硬體 操作方法,以執行乘算或乘算累加運算(及相關的平 算),其中該運算牽涉到比乘算硬體較為寬之至少一個 元運算元。 本發明係特別關於乘算數列的硬體控制,以便用有 方式來執行這種多字元運算,其中該方法之特徵在於 定順序處理運算元的字元。 【先前技術】 乘算硬體必須具有有限的大小,通常定義為具有一 字元運算元輸入與一雙字元結果輸出。為了同時執行 累加運算,乘算器輸出通常連接至累加器電路,累加 路至少擁有雙字元加上一位元寬。(補充位元可為結果 部份,或單純地代表CARRY資訊,指示在運算的累j 份中,在加法情況下的溢位或是在減法情況下的欠位 因此基本運算為R = Z±XY。對於簡單的乘算而言,R = 累加器輸入Z = 0。對於平方運算而言,X = Y。基本運: 常被設計成執行標準整數算術,但執行多項式算術的 硬體亦存在,尤其是用於加密應用。 在加密以及若干其他應用當中,需要乘算内含大量 並且非常大的整數。為了執行使用比乘算硬體更為廣 算元之運算,運算元必須分割成複數個單字元區段, 以某些特定的數列送入硬體之中。這些區段會經過運 3丨2/發明說明書(補件V93-〇7/9310SM55 ,及 方運 多字 效的 以特 對單 乘算 器電 的一 部 ° ) ΧΥ, ‘通 乘算 字元 之運 並且 算, 5 1338858 並且將中間結果累加,如此最終乘積就會是有不同權重的 向量積的總合。字元寬度運算元段以及部份結果會儲存在 由乘算器硬體運算定序器所定址的記憶體内。 典型的數列會維持第一運算元的片段恆等,而其他運算 元的片段則一次掃描一個字元進入乘算器;然後第一運算 元遞增到下一個字元寬度片段,並且重複掃描第二個運算 元。若 XsZiXjW1,Y = ZjyjWJ 並且 Z二 EkZkWk,其中 w = 2n, 然後 ,其中 i+j=k, 並且其中η為字元大小的位元數。因此,在典型的運算數 列中,字元y』會跟固定的字元Xi循環配對所有j值,然後 將i遞增一,之後字元y j循環配對新的X i。 上述數列直觀、易於編程並且獲得正確結果,然而每個 步驟或循環平均都需要三次存取隨機存取記憶體。特別 是,每個步驟都需要從記憶體讀取yj和zk,並且將部份結 果r k寫回記憶體。 本發明的目的在於提供用於較大整數運算之更有效多 字元乘算數列,其每個乘算平均只需要存取一次記憶體。 【發明内容】 本發明的目的係藉由在一組兩個相鄰的結果字元權重 (稱之為櫊)内處理乘算數列的方法達成。在一組欄對内, 數列藉由以穩定遞增(或穩定遞減)的運算元段權重來替換 攔(稱之為鋸齒型式)來進行,如此一個來自前一個乘算循 環的片段也會用於目前的乘算循環,並且除了可能在已知 群組内第一乘算循環以外,在該群組的任何乘算循環中, 6 31W發明說明書(補件V93-O7/93109455 1338858 只需要從記憶艟讀取一個運算元段即可。相同結果 分乘積的加法會在累加運算内執行,而該累加運算 運算係於同一管線。個別累加參數的雙字元片段可 對應群組的累加運算數列的開始或結尾處。 乘算累加(M A C )單元執行乘算與累加循環,如同 體内韌體程式設計運算定序器所做,而來自隨機存 體(R A Μ )的運算元段讀取會透過乘算硬體内部的暫 傳送至MAC單元。同樣地,中間以及最後結果的: 導回累積參數段的内部暫存器,最終導回RAM。 進一步改善在於加入内部快取暫存器,用於保存 乘算循環群組開始或結尾都會重複並且經常使用到 段。 本發明優於先前乘算數列,可大量符合乘算器的 需求,使其配合每個乘算週期一個讀取與一個寫入 體存取頻寬,如此在最小週期内可有效執行較大多 數的整體乘算。乘算運算也可擴展於許多週期中(使 操作),在此情況下,仍可看成,平均上,每個週期 個乘算,因為每個週期都可獲得一個乘算結果,並 每個週期可開始一個新的乘算運算。 【實施方式】 參考圖1,處理系統的主要架構包含一主要核心, 1 1及一乘算器引擎】3,共享隨機存取記憶體或R A 乘算器控制暫存器快取1 7。該乘算器引擎1 3包含· 累加(M A C )單元2 1 ; —運算定序器2 3,連接用於將 312/發明說明(補件)/93-07/93109455 權重部 與乘算 加入至 乘算硬 取記憶 存器, 高入會 在每個 的參數 參數段 的記憶 字元整 用管線 執行一 且因為 處理器 Μ 1 5及 一乘算 指令信 1338858 號傳送至M A C 2 1 ;以及内部資料暫存器2 7。 記憶體管理/記憶體保護單元(Μ M U / Μ P U ) 1 4及1 9介接於 R Α Μ 1 5及快取1 7以及處理器1 1及乘算器引擎]3之間。 在本發明的較佳具體實施例中,有一 Μ M U / Μ P U使處理器 核心1 1連接至R A Μ和週邊存取裝置之處(用以控制/眼制 對於某些區域/過邊的存取)。在此,乘算器引擎1 3可視為 一項週邊設備。因為乘算器引擎13直接存取RAM15’因 此可以成為使用者克服核心側Μ M U / Μ P U 1 9内特定存取限 制的方法。因此,本發明利用乘算器引擎1 3提供另一個 Μ M U / Μ P U 1 4來控制記憶體的存取。這兩個Μ M U / Μ P U 1 4 和丨9應組態成一致,但是兩者之間沒有聯結並且相互獨立 運算。 乘算器引擎丨3通常並未擁有任何專用ROM,並且由處 理器核心]1組態與參數化。控制暫存器2 5連接至控制暫 存II快取1 7,並從其接收來自處理器核心1 1的指令。控 制暫存器2 5將指令參數和狀態資訊傳輸至運算定序器 23,並且也與 MAC單元21介接,例如用以選取這些有兩 種算術模式的M A C單元之M A C模式(標準算術或多項式算 術)、選取單字元或多字元 MAC運算,以及通信來自目前 或之前M A C運算的任何進位值。 内部資料和位址暫存器2 7連接至共享的R Α Μ 1 5,用以 接收與傳輸MAC運算的運算元參數。運算定序器23最好 使用根據本發明說明的韌體程式設計。運算定序器23將指 令與位址傳送至内部暫存器27,並且傳送至共享的 8 3丨2/發明說明嗇(補件)/93-07/93丨09455 1338858 R A Μ 1 5,根據本發明,以特定順序指引選取的字元寬度運 算元段之載入。此架構通常如此建構,使當乘算器引擎1 3 執行時,可有特權存取共享R Α Μ 1 5的特定部份。這允許 核心丨1在計算期間仍舊可以存取R Α Μ 1 5的其他部份。或 者,在計算期間,對於共享R Α Μ 1 5的存取權會整個專屬 於乘算器引擎]3,並且只有在乘算器1 3不使用時才能由 處理器核心1 1存取。 M A C單元2 1可以3 2位元字元大小為基礎。在此情況 下,運算元長度一定是 4位元組的倍數,並且運算元會排 列在3 2位元字元的邊界,必要時前端為零。這個選擇有助 於共享R Α Μ 1 5的位址計算,因為處理器1 1通常在位元組 位址上作業。M A C單元2 1擁有一對乘算器陣列的3 2位元 (字元寬度)運算元輸入X和Y ; —兩字元寬度的累加器輸 入Z; —兩字元寬度的乘算器結果輸出,以形成第二乘算 器輸入;以及兩字元寬度累力σ器輸出 R。 雖然M A C單元2 1只在單字元運算元輸入X和Υ上運 算,整個乘算器引擎13,包括程式設計運算定序器23,可 視為一大型(多字元)整數乘算器。其支援有效乘算運算, 像是N字元數字的乘算累加、N字元數字的平方累加(乘算 器輸入Y = X )、N字元數字的不累加乘算或平方運算(累力0 器輸入Z = 0)以及N字元數字的以1字元(或甚至1位元)常 數A乘算累加乘。 參考圖2,介面圖中說明了乘算器引擎13與其不同暫存 器和快取以及與共享R Α Μ 1 5之間的互動。R Α Μ 1 5將參數 9 3丨2/發明說明書(補件)/93-07/93109455 1338858 X、Υ、Z和R儲存在特定位址區塊上,並且必須指向這些 區塊以便存取。運算元的字元一定會儲存在 RAM 内第一 個最低有效位元,開始於一基址。為了要求參數,或特定 運算元段字元,對應的位址暫存器 XADDR、YADDR、Z A D D R或 R A D D R (圖1内某些内部暫存器2 7 )必須以相關 位址載入。然後已定址字元會載入對應的資料暫存器 RX、RY、RZ 或 RR(圖1内用於MAC單元21的更多内部 暫存器2 7 )或從這些地方載出。 暫存器25通常包含一或多個運算暫存器,用於指定要 用來執行的運算(乘算、乘算累加、乘算減去、乘以一個字 元常數、平方等等);一或多個控制暫存器,用以指定許多 選項(自然或多項式模式、完整或戠斷運算、進位或進位 輸入等)及指示運算元長度;及一或多個狀態暫存器,用以 指示不同情況(忙碌/閒置、溢位/欠位/零結果、錯誤情況等 等)。 參閱圖3,圖1的M A C單元2 1由一個整數乘算器陣列 3 1所構成,該陣列接收單字元運算元或更通常為透過資料 暫存器RX和RY接收從共享RAM載入的較大多字元運算 元的單字元段。乘算器陣列3 1輸出乘算輸入字元的雙字元 結果至累加器3 3。累加器3 3的大小為三字元(=9 6位元) 加上足以處理特定最大運算元大小的一些進位位元。例 如,對於5丨2字元運算元來說,會加入最長欄具有的5 1 2 列的中間乘積,因此進位總合需要9位元的空間。如此在 這個實例當中,累加器的總寬度為1 0 5位元。累力σ器3 3 10 3丨2/發明說明書(補件)/93-07/93丨09455 1338858 也接收來自資料暫存器RZ的雙字元輸入參數,並且將結 果輸出至結果資料暫存器RR。雙字元反饋可由累加器輸出 或資料暫存器RR送回累加運算元暫存器,以允許在暫存 器RR内的最終結果寫回RAM之前,更新累加運算元段。 典型的乘算累加(M A C)單元的大小可處理3 2位元字元、從 暫存器RX和RY到乘算器陣列具有32位元運算元輸入以 及具有64位元運算元乘算器陣列輸出,且累加器輸出及輸 入暫存器 RZ 和 RR。 以A代表一個單字元運算元或從資料暫存器RX載入乘 算器陣列3 1之多字元運算元X的一個區段,並以B代表 從資料暫存器RY載入乘算器陣列3 1之多字元運算元Y的 一單字元區段,則,B = Ejbj2j,其中ai和bj為運 算元或區段的獨立位元,並且其中i和j的範圍從0到3 1。 對於整數體Zp上的乘算, AB = ZiIJaibj2i+J 〇 對於蓋羅瓦體(Galois Fie ld)GF(2n)上的乘算,兩位元相加 會減去模數2,如此 AB = Ek = 〇2n'2(2k-Zj+j = k (aj-bjinod 2)) 在此也加入了進位輸入項W。進位的處理方式取決於上述 暫存器2 5所指定的選項。並且注意到進位輸入項W與前 一個計算的外送進位輸入項並不需要有直接關係。最後, 蓋羅瓦體運算會影響進位處理,因為將進位輸入項W加入 最低有效位元也會導入模數 2。 完整規模的多字元運算元X和Y乘算牽涉到上述的單字
II 3丨2/發明說明書(補件)/93-07/93109455 1338858 元乘算之數?彳。χ和γ分別代表N字元以及Μ字元數目。 一般運算為R = [Z] ± ((X.Y) + W)。這可寫成下列乘積總合 形式: R = [Ek = 0N + M-iZkbk-| ± (ς. = 〇ν-ι (ς. = 〇μ-ι (xiYjbi+j)) + W)« 此方程式對於Zp和GF (2n)運算都有效,且b = 2 3 2。必 要時’二子元加進位累加器可計算Acc:=Acc±(Xi-Yj)或 Acc Acc ± (Xi. Yj.2 3 2 )。本發明適用於單字元乘算所發 生的特定順序中》 運算數列 參閱圖4,此圖表顯示多字元運算元X的第一運算元段 A0...A7與多字元運算元γ的第二運算元段B0...B7之間字 元乘字元乘算運算的配置。為了說明,運算元X和γ都為 8字元寬’但是這並未強制規定。為了獲得結果字元 R0...R15’不同部份乘積最終要和運算元z的對應累加字 元 C 0…C 1 5垂直力π總在一起。為了記憶體存取,運算元段 的載入、其個別的乘算以及累加區段的加入,都建立在相 鄰結果權重的雙欄内。每一組雙欄都會從頂端或底部開始 處理,並且以鋸齒方式逐行處理。另外,相鄰攔對群組並 不需要同方向處理。因此,在圖 4内,乘算數列可為: Α1Β0、 ΑΟΒΟ、 Α0Β1; Α0Β3、 Α0Β2、 Α1Β2、 Α1Β1、 Α2Β1 、 Α2Β0、 Α3Β0; Α5Β0、 Α4Β0、 Α4Β1、 Α3Β1、 Α3Β2、 Α2Β2、 Α2Β3、 Α1Β3、 Α1Β4、 Α0Β4、 Α0Β5; Α0Β7、 Α0Β6、 Α1Β6、 Α1Β5、 Α2Β5、 Α2Β4、 Α3Β4、 Α3Β3、 Α4Β3、 Α4Β2、 Α5Β2、 Α5Β1、Α6Β1、Α6Β0、Α7Β0; Α7Β1、Α7Β2、Α6Β2、Α6Β3、 12 312/發明說明書(補件)/93-〇7/93109455 1338858 A5B3、 A5B4、 A4B4、 A4B5' A3B5、 A3B6、 A2B6、 A2B7、 A1B7; A3B7、 A4B7、 A4B6、 A5B6、 A5B5、 A6B5、 A6B4、 A7B4、 A7B3; A7B5' A7B6、 A6B6、 A6B7、 A5B7; A7B7。 (數列清單中,分號將不同攔對群組分隔。)在此特定例子 中,連續群組以相反方向進行(由上到下,然後由下到上, 然後再次由上到下,等)。請注意,因為一個運算元已經位 於之前的乘算當中,所以在陣列執行下一個乘算之前,只 需要讀取一個運算元。 若連續攔對群組都是以相同方向進行,則可提供一些快 取暫存器來儲存特定經常使用的必要運算元段,以避免在 每個群組開始之第一次多數乘算,需要讀取兩次。在此情 況,在乘算數列的上升段中五個快取會儲存 A 0、A 1、B 0、 B 1和 B 2 (圖4的右半邊,在每個連續群組變長時)。然後 在數列的下降段中上述快取會儲存 A6、A7、B5、B6和 B7 (圖4的左半邊,在每個連續群組變短時)。 圖5 A、5 B和5 C藉由顯示本發明具體實施例的乘算數 列,說明有此快取的好處。第一欄代表 RAM讀取存取、 第二欄代表乘算器陣列運算,且最右邊五欄顯示每個乘算 週期期間五個快取的内容。對於具有5個快取的8字元乘 8字元乘算,總共有64個乘算週期、7個只有快取載入週 期、5個其他記憶體讀取週期,加上在結束時的追加3個 週期,總共是79個週期。較先前數列優異之處,在乘算加 密應用中常見的較大整數(例如1 0 2 4字元對1 0 2 4位元) 時,更能顯現出。 13 312/發明說明書(補件)/93-07/93109455 1338858 每個運算元的字元大小可為偶數或奇數,且並不需要相 同。後者通常稱為「矩形乘算」運算。一矩形乘算和累加 運算例子,其中,乘算運算元之一 X具有奇數字元(5),另 一乘算運算元Y具有偶數字元(]4),且累加運算元Z以及 結果R具有奇數字元(19),如圖6、7A、7B、7C所示。在 此例子中,也有7個内部快取暫存器用於儲存經常使用的 參數段。在此僅顯總數列之部份,群組R 〇 - R 1、R 2 - R 3、 R4-R5 ' R6-R7.··(省略 R8 到 Rll)、R12-R13、R14-R15 以 及R 1 6 - R 1 7。在群組内,再次配置乘算形式,使最多只需 要一次R A Μ讀取存取以及一次R A Μ寫入存取。第一欄顯 示在連續週期内應用及存取的特定RAM位址。對於RAM 的寫入以粗體邊界來顯示。第二和第三欄分別顯示由乘算 器陣列以及累加器所執行的運算。最右邊七欄顯示乘算器 陣列以及累力。器所使用的内部快取暫存器内容。 此例子也顯示在整個欄對群組上,乘算數列並不一定要 嚴格地鋸齒狀由上往下或由下往上進行。而是這種鋸齒數 列的開端及/或結尾可被取代,甚至可從群組數列的第一部 份開始以反方向進行處理,因為可在快取中獲得所需參 數。因此,在第一群組 R 0 - R 1内,順序可為 Υ Ο X 0、Υ Ο X 1、 Y 1 X 0,代替嚴格遞降數列的Y 0 X 0、Y 1 X 0、Y 0 X 1,或嚴格 遞增數列的 Y0X1、Y0X0、Y1X0。在第二、第三以及第四 群組内,數列分另|J從中間 Υ 1 X 1、Υ 3 X 1和Υ 5 X 1開始,以 鋸齒狀遞降到底部,然後分別跳回 Y 2 X 1、Y 4 X 1和 Y 6 X 1, 並且以鋸齒狀往頂端遞增完成。可如此完成係因為運算元 14 3丨2/發明說明書(補件)/93-07/93109455 1338858 段χ丨儲存在内部快取内,所以即使在數列中間分別從 Υ Ο X 3跳至Y 2 X 1 、從Υ Ο X 4跳至Y 4 X 1以及從Y 2 X 4跳至 Y6X1,也只需要〆次讀取。這適用於圖7A至7C内省略 的群組以及群組R 1 2 - R I 3。在群組R 1 4 - R 1 5中,數列從頂 端開始且嚴格地以鎇齒狀遞減到 Y 1 2 X 3,然後跳至Y 1 〇 X 4 並且以鋸齒狀往 Y丨]X 4和Y 1 1 X 3遞增完成。在數列中跳 躍並且改變方向係被准許,因為參數X4已經可在快取暫 存器内取得。最後乘算群組R 1 6 - R 1 7如所示為嚴格地遞減 鎇齒形式,但是可以任何順序來進行,因為運算元段X3 和X4已可在快取暫存器内取得。 平方運算以及平方累加運算和上述任何例子相同的方 式處理,除了 X和 Y運算元一致以外。然而,因為在任何 特定乘算週期當中X和Y的特定段並不一定相同,所以平 方運算就可看待成運算元X和Y不同的其他任何乘算運 算 11 【圖式簡單說明】 圖1為包含丰發明乘算器引擎的處理系統主架構之示 意平面圖。 圊2為顥示依據本發明之典型乘算器引擎的暫存器和 t己憶體介面之介面圖。 圖3為圖丨的乘算器引擎内 MAC單元之更詳細示意平 面圊。 圖4為多個字元對字元乘算與加法圖表,利用運算元與 結果權重來配置,說明依照本發明的運算數列。 15 3丨W發明說明書(補件)/93-07/93109455 1338858 圖5A、5B和5C為顯示本發明一運算具體實施例的一 運算數列表,其額外使用 5组快取暫存器儲存經常使用的 運算元段。 圖6為多個字元對字元乘算與加法的圖表,如圖4内所 示,利用具有不同大小運算元的實施例「矩形」乘算累加 運算之運算元與結果權重來配置。 圖7 A、7 B和7 C為顯示對應圖6實施例的運算數列的另 一實施例,在此例中,硬體内具有一組 7個快取暫存器。 (元件符號說明) 11 主要核心處理 】3 乘算器引擎 14 記憶體管理單元/記憶體保護單元 15 共享的R A Μ (隨機存取記憶體) 17 控制暫存器快取 19 記憶體管理單元/記憶體保護單元 2 1 乘算累加單元 23 運算定序器 25 控制暫存器 27 内部暫存器 3 1 整數乘算器陣列 3 3 累加器 16 3丨2/發明說明書(補件)/93-07/93丨09455
Claims (1)
1338858 ,-- pi年f月/;曰渗正本 i 拾、申請專利範圍: 1.一種操作一乘算電路來計算兩運算元(X和 之方法,其中,兩運算元中至少其一,實質上寬 電路;該乘算電路具有一對字元寬度運算元輸入 字元寬度乘積輸出,其中一字元為特定數字的位 «* 該運算元都由複數個鄰接排列的字元寬度運算为 ym)所組成,其特徵為特定權重(k和m);該乘算 一記憶體;該方法包含之步驟為: 從記憶體中以特定順序將兩運算元的字元寬 段載入乘算電路,該乘算電路包含至少兩暫存 RY),存取該記憶體,用以暫時保存已載入之2 . 乘算已載入之片段以獲得兩字元寬度中間乘積 乘積具有等於已載入片段權重總合的一權重; 在一累加器内加入一相同權重的中間乘積,該 有三字元加上一些進位位元的大小,足以處理一 運算元大小,該累加器連接至一雙字元輸入暫存 用於暫時保存在之前加入的特定權重的乘積,且 雙字元輸出暫存器(RR),用於保存一加法步驟的 等暫存器(RZ和RR)可存取該記憶體;以及 至少在累加特定權重的所有中間乘積之後,將 暫存器(RR)的累加結果存回該記憶體; 其中將運算元段載入該暫存器的該特定順序 乘積權重結果所定義的數列,其中乘算步驟在連 乘積權重群組内,完成選取權重組内的數列,除 124079-990817.doc Y)的乘積 於該乘算 以及一雙 元;每一 ,段Ok和 電路存取 度運算元 器(RX和 =1段; ,該中間 累加器具 特定最大 器(RZ), 連接至一 結果,該 來自輸出 為該中間 續兩相鄰 了已知群 1338858 組内的第一乘算速算,最多一運算元段需從記憶體讀取到 一暫存器(RX或RY),而另一運算元段已在之前乘算運算 之後儲存在另一暫存器(RY或RX)内。 2. 如申請專利範圍第1項之方法1其中該累加器輸入暫 存器(RZ)會載入一累加字元(Z)的片段,其中該片段的權重 與乘算步驟内形成的中間乘積具相同 > 藉此運算方法會在 一對乘算運算元以及一累加運算元上執行乘算累加運算。 3. 如申請專利範圍第1項之方法,其中,上述數列在群 組内會以不斷遞增運算元段權重的鋸齒形式進行。 4. 如申請專利範圍第1項之方法,其中,上述數列在群 組内會以不斷遞減運算元段權重的鋸齒形式進行。 5. 如申請專利範圍第 1項之方法,其中該乘算電路更包 含一組内部快取暫存器,該快取暫存器會從記憶體載入一 乘算運算内經常使用的運算元段。 6. 如申請專利範圍第5項之方法,其中,上述數列在群 組内由一至少一運算元段儲存在一快取暫存器内之乘算運 算開始,向不斷遞增或遞減運算元段權重的第一鋸齒方向 進行,然後跳至至少也有一運算元段儲存在一快取暫存器 内1尚未執行的群組乘算運算,並且用不斷遞增或遞減運 算元段權重的第二鋸齒方向進行,直到完成該群組的所有 乘算運算。 7. 如申請專利範圍第1項之方法,其中,上述特定順序 會程式設計在該乘算電路之一運算定序器的韌體内,且運 算元字元長度被包含在内,作為乘算指令的輸入參數。 124079-990817.doc -2- 1338858 8.—種乘算電路,包含: 一乘算累加(MAC)單元,包含一乘算器陣列,具有輸入 來接收單字元運算元段,經過乘算來形成一雙字元中間乘 積,並且也包含一累加器電路,具有一第一雙字元輸入, 接收來自該乘算器的中間乘積;一第二雙字元輸入,接收 一累加值;以及一三字元加入上處理特定最大運算元大小 的進位位元,提供來自該雙字元輸入的輸入值加總之輸 出,該累加器輸出也將兩字元送回該第二雙字元輸入; 一組内部位址暫存器,用以定位一隨機存取記憶體; 一組内部資料暫存器 (RX、RY、RZ ' RR),這些暫存器 相連來接收來自該記憶體的該運算元段或將該運算元段傳 送至該記憶體,同時也相連至該乘算器陣列以及該累加 器,如此可將運算元段供應至該乘算器陣列以及該累加器 的該輸入,並且接收來自該乘算器陣列以及該累加器的輸 出,每一該運算元段都具有一特定權重;及 一運算定序器,用於利用該内部位址以及資料暫存器控 制記憶體的存取,並且利用該個別乘算器陣列以及累加器 控制乘算與累加運算的數列, 其中該數列由等於所乘算的該運算元段權重總合之結 果乘積權重所定義,其中,乘算步驟係在連續兩相鄰乘積 權重組内完成,選取權重組内的數列,除了已知群組内的 第一乘算運算,最多一運算元段需從記憶體讀取到一暫存 器(RX或RY),而另一運算元段已在之前乘算運算之後儲 存在另一暫存器(RY或RX)内。 124079-990817.doc
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0304299A FR2853425B1 (fr) | 2003-04-07 | 2003-04-07 | Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200504593A TW200504593A (en) | 2005-02-01 |
TWI338858B true TWI338858B (en) | 2011-03-11 |
Family
ID=32982290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093109455A TWI338858B (en) | 2003-04-07 | 2004-04-06 | Efficient multiplication sequence for large integer operands wider than the multiplier hardware |
Country Status (7)
Country | Link |
---|---|
US (1) | US7392276B2 (zh) |
EP (1) | EP1614027B1 (zh) |
CN (1) | CN100489764C (zh) |
DE (1) | DE602004023067D1 (zh) |
FR (1) | FR2853425B1 (zh) |
TW (1) | TWI338858B (zh) |
WO (1) | WO2004095234A2 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8538015B2 (en) * | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
US8028015B2 (en) * | 2007-08-10 | 2011-09-27 | Inside Contactless S.A. | Method and system for large number multiplication |
CN101271570B (zh) * | 2008-05-07 | 2011-08-17 | 威盛电子股份有限公司 | 用于绘图处理单元中的大整数乘法运算的装置和方法 |
US20110106872A1 (en) * | 2008-06-06 | 2011-05-05 | William Hasenplaugh | Method and apparatus for providing an area-efficient large unsigned integer multiplier |
CN101562594B (zh) * | 2009-05-25 | 2011-09-07 | 哈尔滨工业大学 | 基于流水线操作的相位因子结合电路 |
US8495125B2 (en) * | 2009-05-27 | 2013-07-23 | Microchip Technology Incorporated | DSP engine with implicit mixed sign operands |
EP2365659B1 (fr) * | 2010-03-01 | 2017-04-12 | Inside Secure | Procédé de test de la résistance d'un circuit intégré à une analyse par canal auxiliaire |
WO2013044276A1 (en) | 2011-09-27 | 2013-04-04 | Technische Universität Graz | Multiplication of large operands |
CN106371808B (zh) * | 2015-07-22 | 2019-07-12 | 华为技术有限公司 | 一种并行计算的方法及终端 |
WO2018075052A1 (en) | 2016-10-20 | 2018-04-26 | Intel Corporation | Systems, apparatuses, and methods for fused multiply add |
US11599334B2 (en) | 2020-06-09 | 2023-03-07 | VeriSilicon Microelectronics | Enhanced multiply accumulate device for neural networks |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4240144A (en) * | 1979-01-02 | 1980-12-16 | Honeywell Information Systems Inc. | Long operand alignment and merge operation |
JPH061438B2 (ja) * | 1984-04-26 | 1994-01-05 | 日本電気株式会社 | 倍精度乗算器 |
US4809212A (en) * | 1985-06-19 | 1989-02-28 | Advanced Micro Devices, Inc. | High throughput extended-precision multiplier |
US4754421A (en) * | 1985-09-06 | 1988-06-28 | Texas Instruments Incorporated | Multiple precision multiplication device |
US4876660A (en) * | 1987-03-20 | 1989-10-24 | Bipolar Integrated Technology, Inc. | Fixed-point multiplier-accumulator architecture |
US4893268A (en) * | 1988-04-15 | 1990-01-09 | Motorola, Inc. | Circuit and method for accumulating partial products of a single, double or mixed precision multiplication |
US5121431A (en) * | 1990-07-02 | 1992-06-09 | Northern Telecom Limited | Processor method of multiplying large numbers |
JPH0612229A (ja) * | 1992-06-10 | 1994-01-21 | Nec Corp | 乗累算回路 |
US5606677A (en) * | 1992-11-30 | 1997-02-25 | Texas Instruments Incorporated | Packed word pair multiply operation forming output including most significant bits of product and other bits of one input |
EP0654733B1 (en) * | 1993-11-23 | 2000-05-24 | Hewlett-Packard Company | Parallel data processing in a single processor |
US5446651A (en) * | 1993-11-30 | 1995-08-29 | Texas Instruments Incorporated | Split multiply operation |
US5953241A (en) * | 1995-08-16 | 1999-09-14 | Microunity Engeering Systems, Inc. | Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction |
US6295599B1 (en) * | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US5862067A (en) * | 1995-12-29 | 1999-01-19 | Intel Corporation | Method and apparatus for providing high numerical accuracy with packed multiply-add or multiply-subtract operations |
DE19637369C2 (de) * | 1996-09-13 | 2001-11-15 | Micronas Gmbh | Digitaler Signalprozessor mit Multipliziereinrichtung und -Verfahren |
US5996066A (en) * | 1996-10-10 | 1999-11-30 | Sun Microsystems, Inc. | Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions |
US5943250A (en) * | 1996-10-21 | 1999-08-24 | Samsung Electronics Co., Ltd. | Parallel multiplier that supports multiple numbers with different bit lengths |
KR100222032B1 (ko) * | 1996-12-24 | 1999-10-01 | 윤종용 | 디지탈 신호 처리기에서의 2배 정밀도 곱셈연산 수행방법 |
US6233597B1 (en) * | 1997-07-09 | 2001-05-15 | Matsushita Electric Industrial Co., Ltd. | Computing apparatus for double-precision multiplication |
US6026421A (en) * | 1997-11-26 | 2000-02-15 | Atmel Corporation | Apparatus for multiprecision integer arithmetic |
US6202077B1 (en) * | 1998-02-24 | 2001-03-13 | Motorola, Inc. | SIMD data processing extended precision arithmetic operand format |
US6055554A (en) * | 1998-03-04 | 2000-04-25 | Internatinal Business Machines Corporation | Floating point binary quad word format multiply instruction unit |
US6523055B1 (en) * | 1999-01-20 | 2003-02-18 | Lsi Logic Corporation | Circuit and method for multiplying and accumulating the sum of two products in a single cycle |
-
2003
- 2003-04-07 FR FR0304299A patent/FR2853425B1/fr not_active Expired - Fee Related
- 2003-07-07 US US10/615,475 patent/US7392276B2/en active Active
-
2004
- 2004-03-22 CN CNB2004800091607A patent/CN100489764C/zh not_active Expired - Fee Related
- 2004-03-22 WO PCT/US2004/008715 patent/WO2004095234A2/en active Search and Examination
- 2004-03-22 DE DE602004023067T patent/DE602004023067D1/de not_active Expired - Lifetime
- 2004-03-22 EP EP04759716A patent/EP1614027B1/en not_active Expired - Lifetime
- 2004-04-06 TW TW093109455A patent/TWI338858B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TW200504593A (en) | 2005-02-01 |
EP1614027A4 (en) | 2006-06-21 |
US7392276B2 (en) | 2008-06-24 |
EP1614027B1 (en) | 2009-09-09 |
WO2004095234A3 (en) | 2005-11-03 |
CN100489764C (zh) | 2009-05-20 |
WO2004095234A2 (en) | 2004-11-04 |
CN1809805A (zh) | 2006-07-26 |
FR2853425A1 (fr) | 2004-10-08 |
FR2853425B1 (fr) | 2006-01-13 |
DE602004023067D1 (de) | 2009-10-22 |
US20040199562A1 (en) | 2004-10-07 |
EP1614027A2 (en) | 2006-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5866128B2 (ja) | 算術プロセッサ | |
US7822947B2 (en) | Aliasing data processing registers | |
EP1692613B1 (en) | A data processing apparatus and method for moving data between registers and memory | |
US7689811B2 (en) | Method and apparatus for constant generation in SIMD processing | |
US7145480B2 (en) | Data processing apparatus and method for performing in parallel a data processing operation on data elements | |
JP5112325B2 (ja) | 参照テーブルアドレス指定システム及び方法 | |
TWI338858B (en) | Efficient multiplication sequence for large integer operands wider than the multiplier hardware | |
US20050198473A1 (en) | Multiplexing operations in SIMD processing | |
US6958718B2 (en) | Table lookup operation within a data processing system | |
US20050125647A1 (en) | Endianess compensation within a SIMD data processing system | |
CA2225899A1 (en) | A method and apparatus for finite field multiplication | |
WO2004061705A2 (en) | Efficient multiplication of small matrices using simd registers | |
US20050125636A1 (en) | Vector by scalar operations | |
US7210023B2 (en) | Data processing apparatus and method for moving data between registers and memory in response to an access instruction having an alignment specifier identifying an alignment to be associated with a start address | |
US6009450A (en) | Finite field inverse circuit | |
US20050125631A1 (en) | Data element size control within parallel lanes of processing | |
US20050125635A1 (en) | Moving data between registers of different register data stores | |
JPS5862746A (ja) | 割算装置 | |
US20050125638A1 (en) | Data shift operations | |
JPS62134763A (ja) | 3アドレス・コ−ドの指標づけ装置 | |
US6766346B2 (en) | System and method for computing a square of a number | |
JP2607689B2 (ja) | ベクトル処理装置 | |
JP2000020486A (ja) | Simd型演算器 | |
JP2000039995A (ja) | 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル | |
US5526472A (en) | Method and system for representing a bit pattern for utilization in linear or circular shift operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |