TWI438678B - 大數量乘法之方法、系統及電腦程式產品 - Google Patents

大數量乘法之方法、系統及電腦程式產品 Download PDF

Info

Publication number
TWI438678B
TWI438678B TW097130432A TW97130432A TWI438678B TW I438678 B TWI438678 B TW I438678B TW 097130432 A TW097130432 A TW 097130432A TW 97130432 A TW97130432 A TW 97130432A TW I438678 B TWI438678 B TW I438678B
Authority
TW
Taiwan
Prior art keywords
weight
row
word
columns
memory
Prior art date
Application number
TW097130432A
Other languages
English (en)
Other versions
TW200915174A (en
Inventor
Vincent Dupaquis
Russell Hobson
Original Assignee
Inside Contactless S A
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inside Contactless S A filed Critical Inside Contactless S A
Publication of TW200915174A publication Critical patent/TW200915174A/zh
Application granted granted Critical
Publication of TWI438678B publication Critical patent/TWI438678B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/525Multiplying only in serial-serial fashion, i.e. both operands being entered serially

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

大數量乘法之方法、系統及電腦程式產品
本發明係關於資訊管理。
例如一固態器件中之習知乘法硬體將具有一大小限制,例如,可由該硬體同時處置的一已規定位元數目。通常,乘法硬體係定義成具有一對單字運算元輸入及一二字結果輸出。為了實現乘法累加運算,可將該乘法器輸出連接至一累加器,其寬度通常係至少二字加一位元寬。在該運算之累加部分,該補充位元可係該結果的一部分,或簡單地存在而作為進位資訊,其指示加法情況中的一溢位,或者減法情況中的一欠位。
在密碼學及其他應用中,需要乘包含大數量字之極大整數。為了使用較該乘法硬體更寬之運算元實行此等運算,可將該等運算元截割成一字寬片段,並且以某種規定順序饋送至該硬體中。其對該等片段運算,並且累加中間結果,因而計算最終產物,以作為各種權重之交叉乘積的一和。該等字寬運算元片段以及該等部分結果係儲存於一記憶體中,其係由該乘法器硬體之操作定序器加以定址。例如,一順序可將一第一運算元之片段保持恆定,同時將該等運算元之片段一次掃描一字至該乘法器中,然後使該第一運算元增量至該下一字寬片段,並且重複該第二運算元之掃描。
本發明係關於大數量乘法。一般而言,在一態樣中,本發明之特點係一種電腦實施方法、系統及電腦程式產品,其用於操作一乘法電路,以計算二個運算元(A及B)之乘積,該二個運算元之至少一者係寬於與該乘法電路相關聯的一寬度。該等運算元之每一者包含一或多個相連有序字寬運算元片段(Aj 及Bi ),其特徵為特定權重j及i,其中j係從0至k的一整數,其中i係從0至m的一整數,而且一字係一已規定位元數目(n)。該乘法電路執行字寬運算元片段對乘法運算的一矩陣,該矩陣包含m+1列及k+m+2行,每一列具有一權重x,並且每一行具有一權重y。該乘法電路具有對一記憶體之存取。乘法運算係同時對一對列加以實行。對於每一對列,從該記憶體讀取一對對應Bi 字寬運算元片段,而且對於k+2行之每一者反覆地實行字寬運算元片段對乘法運算(Aj *Bi ),因而對於該矩陣中之每一行,要求二個額外記憶體讀取操作及一個記憶體寫入操作的一最大值。揭示其他實施方案。
本發明之實施方案可實現一或多個下列優點。描述之乘法電路可同時計算一對列,並且僅要求每行三個記憶體存取(2個讀取及1個寫入)(對應於每一列之字寬運算元片段之最初讀取除外),使設計如一單一雙埠RAM或二個單埠RAM的一較有效記憶體介面成為可能。另一優點係可失序地計算數對列。隨機化該等列計算之次序可提供該等計算中使用之敏感資料之改良式保護。由於已減少之記憶體存取所致,藉由該乘法電路之功率消耗可係低於其他習知電 路。
附圖及以下描述中提出本發明的一或多項具體實施例之細節。依據描述與附圖及申請專利範圍可明白本發明的其他特點、目的及優點。
特定應用程式要求將大於用以計算該結果之硬體之一機器大小之數字一起乘。藉由一解說性範例,可要求具有一32位元之機器大小的一微處理器計算具有128位元輸入運算元之一乘法之結果。因為該等輸入資料係大於該微處理器之機器大小,所以可將該等輸入資料儲存於RAM或另一類似暫時儲存記憶體中,或者可常駐於該微處理器內部之快取記憶體或暫存器中。給定二個128位元輸入運算元A及B,其係儲存於RAM中,而且係由一32位元微處理器加以運算,其中:A=0x11111111222222223333333344444444;而且B=0x55555555666666667777777788888888;其中0x表示一十六進位數;可將該計算分解成機器大小之字(在此範例中,其係32位元字寬運算元片段)如下:A=A0 +A1 *232 +A2 *264 +A3 *296 ;而且B=B0 +B1 *232 +B2 *264 +B3 *296 ;其中:A0 =0x44444444;A1 =0x33333333;A2 =0x22222222;A3 =0x11111111;而且 B0 =0x88888888;B1 =0x77777777;B2 =0x66666666;B3 =0x55555555。
該計算以該第一運算元A之每一32位元字寬運算元片段乘以另一第二運算元B中之字寬運算元片段之每一者進行。以下描述一種乘法電路及程序,其用於操作該乘法電路,以便可減少對包含該等運算元A及B之一記憶體之讀取及寫入存取之數目,因而提供一有效記憶體介面。
包含乘法電路之範例系統
參考圖1,其顯示包含一乘法電路102的一系統100。該系統100可計算可寬於該乘法電路102之二個運算元的一乘積。例如,該乘法電路102可使用32位元寬硬體加以實施,而且該等運算元可係64位元、128位元、1024位元,或寬於32位元之其他位元數目。該系統100係組態成用以有效地計算該等運算元之乘積,其係藉由減少記憶體操作之數目,同時使用一已減少硬體大小。
該乘法電路102包含一快取記憶體104、一乘法器106,及一累加器108。該乘法器106包含來自該快取記憶體104之輸入。例如,該等輸入可係該等乘法運算元之字寬運算元片段。在某些實施方案中,乘法器106可乘二個字寬運算元片段,以形成一至少二字寬中間乘積。例如,該乘法器106可乘二個32位元運算元片段,以形成一至少64位元中間乘積。該累加器108接收由該字寬運算元片段對乘法運算所致的一中間乘積。
該累加器108接收來自該乘法器106及該快取記憶體104 之輸入。例如,該累加器108可接收來自該乘法器106之中間乘積,及來自該快取記憶體104的一中間行結果。該累加器包含一累加暫存器110。在特定實施方案中,該累加暫存器110可係至少2n+2位元(其中n係一字中之位元數目)的一暫時資料儲存器。在其他實施方案中,該累加暫存器110可以寬於2n+2位元之大小實施。
在某些實施方案中,可將該累加器108組態成用以累加該累加暫存器110中之輸入。例如,該累加器108可將該中間乘積(來自該乘法器106)加至儲存於該累加暫存器110的一值。然後,該累加器108可將該累加結果儲存於該累加暫存器110中。亦可將該累加器108組態成用以重設儲存於該累加暫存器110的一值。例如,該累加器108可將該累加暫存器110重設成零。在另一範例中,該累加器108可將該累加暫存器110重設成該已累加值的一上字。
該累加器108係連接至一記憶體元件,例如,一隨機存取記憶體(RAM)112。在某些實施方案中,該累加器108可將一字寬資料傳輸至該RAM 112。在一範例操作中,該累加器108可擷取欲寫入至該RAM 112之已累加值的一下字。其次,該累加器108可重設該累加暫存器110,其係藉由僅將該已累加值之上字儲存於該累加暫存器110中。
該RAM 112可將資料傳輸至該快取記憶體104。如所示,該RAM 112可將二個一字寬運算元片段傳輸至該快取記憶體104。因為一乘法循環(如進一步描述於下)僅要求來自該RAM 112之二個讀取,所以該RAM 112可包含每行二 個記憶體介面。在一實施方案中,該RAM 112係一雙埠RAM,而且在另一實施方案中,該RAM 112係具有二個單埠RAM的一記憶體模組。雖然在此範例中使用一RAM,但在其他實施方案中亦可使用其他讀取寫入記憶體,例如快閃記憶體、串列存取記憶體,或者其他讀取寫入資料儲存器件。
該系統100包含一狀態機114,其用以控制該乘法電路102之操作。例如,該狀態機114可控制從該快取記憶體104至該RAM 112之記憶體存取。如所示,該狀態機114接收來自該乘法電路102之狀態信號。基於該狀態信號,該狀態機114可決定該乘法電路102的一目前狀態。基於該目前狀態,該狀態機114則可將控制信號傳輸至該RAM 112及/或該乘法電路102。在一範例中,該狀態機114可接收該等狀態信號,以決定該快取記憶體104是否已完成從該RAM 112讀取運算元片段。若該快取記憶體104已完成讀取該運算元片段,則該狀態機114可(例如)將控制信號傳輸至該乘法電路102,以便使用該乘法器106乘該等運算元片段。該狀態機114之運算元順序之某些範例係參考圖3描述於下。
在某些實施方案中,該狀態機114可係一數位邏輯電路(例如,場可程式閘極陣列(FPGA)、特定應用積體電路(ASIC)、離散數位電路組件,或者其一組合),其包含一硬體狀態機結構,用以控制該乘法電路。在其他實施方案中,該狀態機114可係由該系統100加以處理的一電腦程 式,用以操作該乘法電路102。在另一實施方案中,該狀態機114可係一處理器,其執行軟體指令,而使用該乘法電路102實行用以乘二個運算元之操作順序。
在各種範例中,該狀態機114可係一操作定序器,其係用以控制由該快取記憶體104存取該RAM 112,而且用以控制分別由該乘法器106與該累加器108所實行之乘法及累加運算之順序。在另一範例中,該狀態機114可指示該乘法電路102使用該乘法器106乘二字寬運算元。例如,該狀態機102可規定由該乘法器106乘來自該快取記憶體104之二字寬運算元。在另一範例中,該狀態機114可指示該乘法電路102將來自該乘法器的一結果累加於該累加暫存器110中。例如,該累加器108可累加該二字寬乘法結果與該累加暫存器110中的一現存值,並將該累加結果儲存於該累加暫存器110中。在另一範例中,該狀態機114可指示該乘法電路102將來自該累加暫存器110的一字(例如,一上字或一下字)儲存至該RAM 112。例如,該狀態機114可造成該累加器108從該累加暫存器110擷取一上字及/或一下字,並將該(等)已擷取資料字儲存於該RAM 112中。在另一範例中,該狀態機114可指示該乘法電路102重設該累加暫存器110。例如,該狀態機114可造成該累加器108從該累加暫存器110擷取一上字,並將該累加暫存器110重設成該已擷取之上字。
乘法電路操作之解說性範例
參考圖2,該乘法電路102之操作將使用以上定義之A及 B運算元藉由一解說性範例加以描述。每一運算元A及B包含相連有序字寬運算元片段Aj 及Bi ,例如以上定義之A0 至A3 及B0 至B3 。每一字寬運算元片段之特徵為一特定權重j或i。每一A字寬運算元片段之權重j係從0至k的一整數,其中k係該最大權重,在此範例中,其係"3"。每一B字寬運算元片段之權重i係從0至m的一整數,其中m係該最大權重,在此範例中,其係"3"。
圖2顯示一乘法矩陣200的一示意表示法,其包含m+1列及k+m+2行。每一列具有一權重x,並且每一行具有一權重y。在此範例中,該等列權重之範圍係從0至3,而且該等行權重之範圍係從0至7。該等乘法運算係同時對一對列而非對一單一逐列為基礎加以實行。對於每一對列,從該記憶體讀取一對對應Bi 字寬運算元片段,而且對於每一行(其包含對於一對給定列所填入之單元)反覆地實行字寬運算元片段對乘法運算(Aj *Bi )。如此,當實行每一行之乘法運算時,要求二個額外記憶體讀取操作及一個記憶體寫入操作的一最大值。有利的是,藉此可在該系統中使用一有效記憶體介面,例如一個雙埠RAM或二個單埠RAM。
該狀態機114可操作該乘法電路102以執行由該乘法矩陣200所代表之字寬運算元片段對乘法運算。該狀態機114選擇一次對該乘法矩陣200中的一對列實行乘法運算。於完成該對列之乘法運算後,該狀態機114選擇另一對列,直到完成所有字寬運算元片段對乘法。
在所繪示範例中,該狀態機114選擇以圖2中之箭頭所指 示之順序實行字寬運算元片段乘法。如所示,該狀態機114可選擇該乘法矩陣200中之列202、204。於完成該等乘法運算後,該狀態機114選擇列206、208。在一實施方案中,該狀態機114選擇一對列,其係根據每一對中所包含之列之權重之遞增或遞減權重值的一數值順序。例如,該狀態機114可選擇具有權重t及t+1的一對列,繼而選擇具有權重t+2及t+3的一對列。然而,在另一實施方案中,可將列對之選擇隨機化。隨機化列對計算之順序可提供用於該等乘法運算之資料之改良式安全。
再次參考圖2,於選擇該等列202、204時,該狀態機114可指示該乘法電路102讀取一對對應B字寬運算元片段。亦即,將具有對應權重值之B字寬運算元片段讀取至該快取記憶體104,在此範例中,其係B0 及B1 。該狀態機114可將該等單元填入該等列202、204中,其係藉由對於從權重0至權重4之每一行反覆地實行字寬運算元片段對乘法運算。
作為一範例,該狀態機114可先指示該快取記憶體104從該RAM 112讀取一運算元片段A0 。其次,該狀態機114可指示該乘法電路102計算A0 *B0 的一中間乘積。該乘法電路102將該中間乘積儲存於該累加暫存器110。該狀態機114可指示該乘法電路102將該下字(亦即,最低有效n位元)從該累加暫存器110寫入至該RAM 112作為該第0行的一最終行結果(R0 ),因為不計算第0行中之任何另外值,亦即,對於此對列或任何其他列。該狀態機114可將該累加暫存器 110重設成該已累加暫存器110中之上字,其中該上字係用於計算一下一行254之一結果的一進位值(C0 )。因此,為了計算第0行,僅要求往返於該RAM 112的一讀取操作(讀取A0 )及一寫入操作(寫入R0 )。
使用該進位值C0 及讀取自該RAM 112的一額外運算元片段A1 ,該狀態機114可使用該乘法電路102計算該下一行254的一結果。該狀態機114指示該快取記憶體104從該RAM 112讀取A1 。其次,該乘法器106可計算一中間乘積A0 *B1 ,而且該累加器108可將A0 *B1 與該進位值C0 累加於該累加暫存器110中。如此,該累加暫存器110儲存該進位值C0 與A0 *B1 之乘積之和。該乘法器106進一步計算A1 *B0 的一中間乘積。該乘法乘積A1 *B0 係累加於該累加暫存器110中。於累加該乘法乘積後,該累加器108可將來自該累加暫存器110的一下字寫入至RAM 112作為一最終行結果(R1 ),而且以該累加暫存器110中的一上字重設該累加暫存器作為一下一行256的一進位值C1 。總之,對於計算第1行之乘法循環:讀取操作:讀取A1 (A0 係先前所讀取,並且在該快取記憶體中);寫入操作:寫入R1 ;R1 =(C0 +A0 *B1 +A1 *B0 )之下字;而且C1 =(C0 +A0 *B1 +A1 *B0 )之上字。
該等字寬運算元片段之權重之和等於該對應行之權重。亦即,在具有一"1"權重之第1行254之以上範例中,對於 該二個乘法運算之每一者,該等字寬運算元片段之權重係0+1=1及1+0=1。
對於該第2行256,該累加器108可累加該乘法乘積A2 *B0 與A1 *B1 ,及來自該行254之進位值C1 。因為該等列202、204並非對於該行254所計算之最終列,所以該累加器108寫入該累加結果之上字作為第2行的一中間行結果(Int2 )。總之,對於計算第2行之乘法循環:讀取操作:讀取A2(A1係先前所讀取,並且在該快取記憶體中);寫入操作:寫入Int2;Int2 =(C1 +A1 *B1 +A2 *B0 )之下字;而且C2 =(C1 +A1 *B1 +A2 *B0 )之上字。
類似地,對於第3行258,該累加器108將該累加結果之下字寫入至該RAM 112作為中間行結果Int3 ,而且對於第4行260,將該累加結果之下字寫入至該RAM 112作為中間行結果Int4 。此時,因為並無另外A字寬運算元片段從RAM 112讀取,所以該狀態機114指示該累加器108將該累加暫存器110之上字寫入至RAM 112作為該下一行(亦即,第5行262)的一中間結果(Int5 )。
該狀態機114可重設儲存於該乘法電路102之資料。例如,該狀態機114可重設儲存於該累加暫存器110之值。在某些範例中,該狀態機114亦可選擇性清除儲存於該快取記憶體104之值。
其次,該狀態機114可選擇先前尚未選擇之另一對列。 在此範例中,該狀態機114選擇列206、208。該狀態機114指示該快取記憶體104將對應於該等列206、208之B運算元片段(亦即,B2 及B3 )讀取至該快取記憶體104。在一實施方案中,B2 及B3 可取代該快取記憶體104中之B0 及B1 ,以減少該快取記憶體104之大小要求。
該狀態機114將A0 值從該RAM 112讀取至該快取記憶體104中。A0 及B2 之權重之和係欲計算之一第一行(亦即,第2行256)之權重。使用該已決定之權重,該狀態機114可檢查第2權重的一中間結果(Int2 )是否在該RAM 112中可取得。如先前所描述,Int2 係先前已計算,而且係儲存於該RAM 112中,而且係讀取至該快取記憶體104中。在一實施方案中,該狀態機114可指示該累加器108將該累加暫存器110重設成Int2
藉由累加Int2 及A0 *B2 的一乘法乘積,該乘法電路102獲得該第2行256的一最終結果(R2 )及該下一第3行258之計算的一進位值(C2 )。亦即,於累加後,該狀態機114可指示該乘法電路102儲存該累加結果之下n位元字作為R2 ,而且將該累加暫存器110重設成該累加結果之上字作為該進位值C2 。在此實例中,該下字係一最終行結果,因為第2行中並無要求計算之額外列。總之,對於計算第2及3列之第2行之乘法循環:讀取操作:讀取Int2 ;讀取A0 ;寫入操作:寫入R2 ;R2 =[(A0 *B2 )+Int2 ]之下字; C2 =[(A0 *B2 )+Int2 ]之上字。
因此,對於每行之乘法循環,要求二個讀取操作及一個寫入操作。此不包含讀取B2 及B3 ,因為其係最初已讀取,並且在與第2及3列相關之全部計算中加以快取及使用。如藉由此範例所示範,當計算該乘法矩陣200時所要求之記憶體操作之最大數目係每行二個讀取及一個寫入。如此,該RAM 112可係一個雙埠或二個單埠記憶體。
再次參考圖2,類似地,該狀態機114可指示該乘法電路102藉由累加該進位值C2 、A1 *B2 、A0 *B3 及Int3 而計算R3 。例如,該狀態機114可指示該乘法電路102從該RAM 112讀取A1 及Int3 。其次,該狀態機114可指示該乘法電路102將Int3 累加至該累加暫存器110。於累加Int3 後,該狀態機114可順序地指示該乘法電路102計算並且累加該等乘法乘積A1 *B2 及A0 *B3 。藉由擷取該累加結果之下字及上字,該狀態機114可指示該累加器108寫入該累加結果之下字作為R3 ,及將該累加暫存器110重設成該累加結果之上剩餘位元作為一進位值C3
以一類似方式,該狀態機114可操作該乘法電路102以計算該最終行結果R4 及R5 。例如,該乘法電路102可藉由累加來自該第3行258之進位值C3 、Int4 、A2 *B2 及A1 *B3 而計算R4 。該乘法電路102可藉由累加來自該第4行260之進位值C4 與Int5 、A3 *B2 及A2 *B3 而計算R5
因為對於一行264,並無可用之中間行結果,所以該狀態機114可指示該乘法電路102累加A3 *B3 及來自第5行262 之進位值C5 。於累加後,該乘法電路102可將該累加結果之下字寫入至RAM 112作為R6 。此時,完成該等列206、208之字寬運算元片段乘法運算,而且沒有欲計算之更多列。因此,將該累加結果之上剩餘位元寫入至該RAM 112作為第7行266之最終結果(亦即,作為R7 )。
可從該RAM 112讀取A及B之乘法結果,其係藉由計算:R=R0 +R1 *232 +R2 *264 +R3 *296 +R4 *2128 +R5 *2160 +R6 *2192 +R7 *2224
用以實行一乘法矩陣計算之範例程序
現在參考圖3,其顯示一程序300的一實施方案,該程序可用於使用該系統100實行一乘法矩陣之計算。為了解說性用途,該程序300將在以上所討論範例及圖2中所示之範例乘法矩陣200之背景中描述。該程序300以於步驟302中接收具有字寬運算元片段A0 、A1 、A2 、...、Ak 的一第一運算元開始。例如,該系統100可接收一第一運算元A,其具有運算元片段A0 至A3 (亦即,k=3)。其次,該程序300包含在步驟304中接收一第二運算元B,其具有字寬運算元片段B0 、B1 、B2 、...Bm 。例如,該系統100可接收一第二運算元B,其具有運算元片段B0 至B3 (亦即,m=3)。
在步驟306中,該程序300包含選擇先前尚未計算的一對列:列i 及列i+1 (其中im-1)。例如,該狀態機114可選擇該等列202、204以使用該運算元片段實行乘法運算。其次,該程序300包含在步驟308中從記憶體讀取一對字寬運 算元Bi 及Bi+1 。例如,該快取記憶體104可從該RAM 112讀取一對字寬運算元片段。該程序300包含在步驟310中設定j=0,亦即,該狀態機114可選擇最初為零之Aj 的一權重j。
該程序300包含在步驟312中從該記憶體讀取Aj 。例如,該快取記憶體104可從該RAM 112讀取該運算元片段A0 。在步驟314中,該程序300包含決定是否j=0。若j=0,則該程序300包含在步驟316中實行乘法g=Aj *Bi 。例如,當選擇該等列206、208時,該乘法電路102可實行該第2行256的一乘法A0 *B2 。若j≠0,則該程序300包含在步驟318中實行乘法g=Aj *Bi +Aj-1 *Bi+1 。例如,當選擇該等列202、204時,該乘法電路102可實行在行254的一乘法A1 *B0 +A0 *B1 ,以計算R1
在步驟316或318中實行乘法後,該程序300包含在步驟320中決定Inti+j (具有權重=i+j的一中間行結果)是否存在。例如,該狀態機114可檢查Int2 是否存在於RAM 112中。若Inti+j 存在,則該程序300包含在步驟322中從該記憶體讀取Inti+j 。在以上描述之範例中,當選擇該等列206、208時,該快取記憶體104可讀取Int2 ,因為先前已計算該行256(在該等列202、204中)。若Inti+j 不存在,則該程序300包含在步驟324中將Inti+j 設定為零,否則實行步驟322,以便從該記憶體讀取Inti+j
在步驟322中從該記憶體讀取Inti+j 或者在步驟324中將Inti+j 設定為零後,該程序300包含在步驟326中累加 g+Inti+j +Ci+j-1 (其中Ci+j-1 係來自前一行乘法的一進位)。例如,該累加器108可累加Int3 、A1 *B2 、A0 *B3 及來自該第2行256之乘法的一進位C2 ,以計算該第3行258的一行結果。於累加後,該程序300包含在步驟328中決定對於Coli+j 所計算之更多列。例如,該狀態機114可決定是否需要對於Coli+j 填入該矩陣200中之更多列,若對於Coli+j 不計算更多列,則該程序300中包含在步驟330中寫入該累加結果之下字作為Coli+j 的一最終結果(Ri+j )。例如,對於第1行254,該累加器108可寫入A1 *B0 、A0 *B1 及來自第0行252之進位C1 之累加結果之下字作為R1 ,因為對於第1行254不計算更多列。若對於該Coli+j 欲計算更多列,則該程序300包含在步驟332中寫入該累加結果之下字作為一中間結果(Inti+j )。例如,在計算該等列202、204中,該累加器108可寫入A3 *B0 、A2 *B1 及來自該行256之進位C2 之累加結果之下字作為Int3 (而非R3 ),因為對於該第3行258必須再計算更多列。
該程序300包含在步驟334中設定該累加結果之上剩餘位元作為進位(Ci+j )。例如,該累加器108可將該累加暫存器110重設為目前儲存於該累加暫存器110之一值之上字。在步驟336中,該程序300包含決定是否j>k。若jk,則重複該步驟312。若j>k,則該程序300包含在步驟340中實行乘法g=Aj *Bi+1 。例如,在實行該第6行264之乘法(其中j=k=3)中,該乘法電路102可實行A3 *B3
在步驟342中,該程序300包含決定是否欲計算更多列。 例如,該狀態機114可檢查是否未填入該矩陣200中之任何列。若欲計算更多列,則該程序300包含在步驟344中寫入該累加結果之下字作為一中間結果(Inti+j )。其次,該程序300包含在步驟346中寫入該累加結果之上字作為中間結果(Inti+j+1 ),而且程序循環回至步驟306並且繼續。例如,當選擇該等列202、204時,於實行該第4行260之乘法運算後,該乘法電路102可將該下字寫入至該累加暫存器110中作為Int4 ,而且將該上字寫入至該累加暫存器110中作為Int5
在步驟342中,若不計算更多列,則該程序300包含在步驟348中寫入累加結果之下字作為一最終結果(Ri+j )。其次,該程序300包含在步驟350中寫入該累加結果之上字作為一最終結果Ri+j+1 ,而且該程序300結束。例如,當完成計算該等列202、204後之行264時,該累加器108可將該下字寫入至該累加暫存器110中作為R6,而且將該上字寫入至該累加暫存器110中作為該R7。然後可從該RAM 112讀取A及B之乘法結果,其係藉由計算:R=R0 +R1 *232 +R2 *264 +R3 *296 +R4 *2128 +R5 *2160 +R6 *2192 +R7 *2224
雖然描述該乘法系統及程序之某些實施方案,但亦可使用其他實施方案。在各種實施方案中,該狀態機114可從該等m+1列隨機地選擇一對列。例如,該狀態機114可包含一亂數產生器。使用該亂數產生器,該狀態機114可產生一亂數,其代表先前未選擇之矩陣200中的一對列。然 後該狀態機114可進行至使用該等隨機選擇之列以實行乘法運算。在某些範例中,該隨機選擇可改良該系統100之安全。一對列不必係一對相鄰列;任二列可係一對。
在某些實施方案中,可將該狀態機114組態成用以一次實行二列以上之乘法運算。在此一實施方案中,可要求一較大累加器。在一範例中,該系統100可選擇一群三或多個列,以便同時實行乘法運算。在某些實施方案中,該三或多個列係根據每一群中包含之列之權重之遞增或遞減權重值的一數值順序所選擇。在某些範例中,選擇更多列進行乘法可進一步減少用於乘二個大數量之記憶體存取。
程序300中及關於圖2所描述之範例中之步驟可以與上述不同的一次序加以實行。本文之解說性範例中描述之步驟之次序係解說性,而且所需結果可藉由以一不同次序實現某些或全部該等步驟加以達成。
在其他實施方案中,以上描述之技術亦可用以實行一系列數學運算,例如,A*B+Z或Z-A*B或A*B-Z,然而其他運算係可能。藉由解說性範例,圖4顯示一乘法矩陣400,其可經執行以計算:A*B+Z,其中:A=0x11111111222222223333333344444444;B=0x55555555666666667777777788888888;而且Z=0x99999999101010101212121214141414161616161818181820202020224242424
其中0x表示一十六進位數; 可將該計算分解成機器大小之字(在此範例中,其係32位元字寬運算元片段)如下:A=A0 +A1 *232 +A2 *264 +A3 *296 ;B=B0 +B1 *232 +B2 *264 +B3 *296 ;而且Z=Z0 +Z1 *232 +Z2 *264 +Z3 *296 +Z4 *2128 +Z5 *2160 +Z6 *2192 +Z7 *2224
其中:A0 =0x44444444;A1 =0x33333333;A2 =0x22222222;A3 =0x11111111;B0 =0x88888888;B1 =0x77777777;B2 =0x66666666;B3 =0x55555555;而且Z0 =0x24242424;Z1 =0x20202020;Z2 =0x18181818;Z3 =0x16161616;Z4 =0x14141414;Z5 =0x12121212;Z6 =0x10101010;Z7 =0x99999999。
參考該矩陣400,A及B之乘法運算之出現實質上與以上參考圖2所描述之運算相同。然而在此實施方案中,當計算第0(402)及1(404)列時,將該等Z字寬運算元片段加總至該等乘法乘積,其係以類似於在計算第2(406)及3(408)列時將該等中間值(例如Int2、Int3等)加總至該等乘法乘積的一方式。亦即(例如),當對於第0(402)及1(404)列計算第0行(410)時,在讀取數值B0 及B1 的一最初讀取操作後,該等運算係如下:讀取操作:讀取Z0 及A0 寫入操作:寫入R0
其中R0 =(A0 *B0 +Z0 )之下字;而且進位C0 =(A0 *B0 +Z0 )之上字。
對於第0(402)及1(404)列計算第1行(412)之運算係如下:讀取操作:讀取Z1 及A1 寫入操作:寫入R1
其中R1 =(A1 *B0 +A0 *B1 +C0 +Z1 )之下字;而且進位C1 =(A1 *B0 +A0 *B1 +C0 +Z1 )之上字。
該矩陣之餘數可以如上的一類似方式計算。因此,對於一對列,每行可無需二個以上讀取操作而實現該等計算。
本說明書中所描述之本發明及所有功能操作可以數位電子電路或者以電腦硬體、韌體或者以其組合加以實施。本發明之裝置可以一電腦程式產品(其有形地體現於一機器可讀取儲存器件中)加以實施,以便由一可程式處理器執行;而且本發明之方法步驟可由一可程式處理器加以實行,該可程式處理器執行本發明之指令的一程式以實行藉由對輸入資料操作並且產生輸出的本發明之功能。
本發明可以一或多個電腦程式有利地實施,其係可在一可程式系統上執行,該可程式系統包含至少一可程式處理器(其經耦合以接收自一資料儲存系統之資料及指令及傳輸資料及指令至一資料儲存系統)、至少一輸入器件,及至少一輸出器件。每一電腦程式可以一高階程序或物件導向程式設計語言或者若有必要則以組合或機器語言加以實施;而且在任何情況中,該語言可係一已編譯或已解譯語 言。
藉由範例,適合之處理器包含通用及專用微處理器兩者。一般而言,一處理器將接收來自一唯讀記憶體及/或一隨機存取記憶體之指令及資料。一般而言,一電腦將包含用於儲存資料檔案的一或多個大量儲存器件;此類器件包含磁碟,例如內部硬碟及可移式磁碟;一磁光碟;及光碟。適合用於有形地體現電腦程式指令及資料之儲存器件包含所有形式之非揮發記憶體,藉由範例,其包含半導體記憶體器件(例如EPROM、EEPROM,及快閃記憶體器件);磁碟(例如內部硬碟及可移式磁碟);磁光碟;及CD-ROM碟片。前述之任一者可以ASIC(特定應用積體電路)加以補充或合併。
為了提供與一使用者之互動,可將本發明實施於一電腦系統,其具有一顯示器件,例如一監視器或LCD螢幕,用於顯示資訊給該使用者,及一鍵盤與一指向器件,例如一滑鼠或一軌跡球,該使用者可藉此提供輸入給該電腦系統。該電腦系統可經程式化以提供一圖形使用者介面,電腦程式透過其與使用者互動。
已描述本發明之數個具體實施例。儘管如此,將瞭解可進行各種修改,而不致偏離本發明之精神與範疇。因此,其他具體實施例係於下列申請專利範圍之範疇內。
100‧‧‧系統
102‧‧‧乘法電路
104‧‧‧快取記憶體
106‧‧‧乘法器
108‧‧‧累加器
110‧‧‧累加暫存器
112‧‧‧隨機存取記憶體(RAM)
114‧‧‧狀態機
200‧‧‧乘法矩陣
202‧‧‧第0列
204‧‧‧第1列
206‧‧‧第2列
208‧‧‧第3列
252‧‧‧第0行
254‧‧‧第1行
256‧‧‧第2行
258‧‧‧第3行
260‧‧‧第4行
262‧‧‧第5行
264‧‧‧第6行
266‧‧‧第7行
400‧‧‧乘法矩陣
402‧‧‧第0列
404‧‧‧第1列
406‧‧‧第2列
408‧‧‧第3列
410‧‧‧第0行
412‧‧‧第1行
圖1係一方塊圖,其顯示一乘法電路的一範例。
圖2係一第一範例乘法矩陣的一示意表示法。
圖3係一流程圖,其顯示用於根據圖2之乘法矩陣計算二個運算元之乘積的一範例程序。
圖4係一第二範例乘法矩陣的一示意表示法。
各種圖式中之類似參考符號指示類似元件。
100‧‧‧系統
102‧‧‧乘法電路
104‧‧‧快取記憶體
106‧‧‧乘法器
108‧‧‧累加器
110‧‧‧累加暫存器
112‧‧‧隨機存取記憶體(RAM)
114‧‧‧狀態機

Claims (29)

  1. 一種操作一乘法電路以計算二個運算元(在此以A及B表示)之乘積之電腦實施方法,該二個運算元之至少一者係寬於與該乘法電路相關聯的一寬度,其中運算元A包括一或多個相連有序字寬運算元片段,其特徵為權重j且以Aj 表示,其中j係從0至k的一整數,且運算元B包括一或多個相連有序字寬運算元片段,其特徵為權重i且以Bi 表示,其中i係從0至m的一整數,而且一字係一已規定位元數目(n),且其中該乘法電路執行字寬運算元片段對乘法運算的一矩陣,該矩陣包括m+1列及k+m+2行,每一列具有一權重x,其中x係從0至m的一整數,並且每一行具有一權重y,其中y係從0至(k+m+1)的一整數,該乘法電路具有對一記憶體之存取,該方法包括:同時對一對列實行乘法運算,其中對於每一對列,從該記憶體讀取一對Bi 字寬運算元片段且Bi 片段具有對應於該對列之權重(x)的權重(i),而且對於k+2行之每一者反覆地實行字寬運算元片段對乘法運算(Aj *Bi ),其中對於對應於具有權重x之一列且具有權重y之一行的一單元,該字寬運算元片段對之乘法運算包含Aj 乘以Bi ,其中權重j等於(y-x)且其中權重i等於x,因而對於該矩陣中之每一行,除了自記憶體讀取該對Bi 字寬運算元片段外,需要二個記憶體讀取操作及一個記憶體寫入操作的一最大值。
  2. 如請求項1之方法,其中該等乘法運算係對根據每一對 中包含之該等列之該等權重之遞增或遞減權重值之一數值順序所選擇之數對列加以實行。
  3. 如請求項1之方法,其中該等乘法運算係對從該等m+1列隨機地選擇之數對列加以實行。
  4. 如請求項1之方法,其中具有一權重y1 之一行的一字寬運算元片段對乘法運算包括實行一Aj 字寬運算元片段乘以一Bi 字寬運算元片段之至少一乘法運算,其中該Aj 字寬運算元之該權重j及該Bi 字寬運算元片段之該權重i之和係等於該行之該權重y1
  5. 如請求項1之方法,其進一步包括:計算該等k+m+2行之每一者的一n位元最終行結果,其中一行的一最終行結果包括對於有關該行之該等m+1列之每一者所實行之該等字寬運算元片段對乘法運算之一累加的一最低有效n位元字。
  6. 如請求項5之方法,其中計算一行的一n位元最終行結果包括對於該行所計算之一對最終列,累加該等字寬運算元片段對乘法運算、該行之一中間行結果(若有的話)及對於一先前已計算之行所決定之一累加結果之一上字之一進位值(若有的話)之結果,以決定該行的一累加結果,其中該n位元最終行結果包括該行之該累加結果之最低有效n位元。
  7. 如請求項5之方法,其中一行的一中間行結果包括對於一對列,其並非待對於該行所計算之該對列之最終列,累加該等字寬運算元片段對乘法運算、該行之一先前已 計算中間行結果(若有的話)及一先前已計算行之一進位值(若有的話)之結果,以決定該行的一中間累加結果,其中該中間行結果包括該行之該中間累加結果之該等最低有效n位元。
  8. 如請求項7之方法,其中該行之該中間累加結果的一上字包括待用於一下一行之一累加運算之該行的一進位值。
  9. 如請求項1之方法,其中將對應於該對列之讀取自記憶體之該對Bi 字寬運算元片段儲存於一快取記憶體中,同時實行該對列之該等乘法運算。
  10. 一種操作一乘法電路以計算二個運算元(在此以A及B表示)之乘積之電腦實施方法,該二個運算元之至少一者係寬於該乘法電路,其中運算元A包括一或多個相連有序字寬運算元片段,其特徵為權重j且以Aj 表示,其中j係從0至k的一整數,且運算元B包括一或多個相連有序字寬運算元片段,其特徵為權重i且以Bi 表示,其中i係從0至m的一整數,而且一字係一已規定位元數目(n),且其中該乘法電路執行字寬運算元片段對乘法運算的一矩陣,該矩陣包括m+1列及k+m+2行,每一列具有一權重x,其中x係從0至m的一整數,並且每一行具有一權重y,其中y係從0至(k+m+1)的一整數,該乘法電路具有對一記憶體之存取,該方法包括:對於該矩陣中之每一對列,該等列具有權重x1 及x2 ,從該記憶體讀取一對B運算元片段,其中一第一B運算元 片段(Bx1 )之該權重係x1 ,並且一第二B運算元片段(Bx2 )之該權重係x2 ,而且進一步實行下列步驟:(a)對於具有一權重y的一行,從該記憶體讀取一Aj 運算元片段,該Aj 運算元片段以Aj1 識別該行,其中該第一B運算元片段(Bx1 )之權重(x1 )連同權重j1 等於該行之權重y;(b)對於具有一權重y的一行,若有的話讀取一中間行結果(Inty ),一中間行結果係對應於一或多之不同對之列之該行的一先前已決定結果;(c)將該Aj1 運算元片段乘以該第一B運算元片段(Bx1 );(d)若j>0,則將儲存於一快取記憶體的一先前已讀取Aj 運算元片段(Aj0 )乘以該第二B運算元片段(Bx2 ),其中該先前已讀取Aj0 運算元片段之權重(j0 )連同該第二B運算元片段之該權重(x2 )一起等於該行之該權重y;(e)累加該一或二個乘法運算及該中間行結果Inty (若有的話)及具有一權重y-1之一先前已計算行之一進位值Cy-1 (若有的話)之結果,以提供一累加結果;(f)若對於該行不計算任何另外之列,則將該累加結果之最低有效n位元寫入至該記憶體作為一最終行結果Ry ,否則將該累加結果之該等最低有效n位元寫入至該記憶體作為一中間行結果Inty ;以及(g)將j增量1,並且再次反覆步驟(a)至(g),直到將j 增量1超過k之值;其中該等步驟(a)至(d)不必以所示次序實行。
  11. 如請求項10之方法,其中該等乘法運算係對根據每一對中包含之該等列之該等權重之遞增或遞減權重值之一數值順序所選擇之數對列加以實行。
  12. 如請求項10之方法,其中該等乘法運算係對從該等m+1列隨機地選擇之數對列加以實行。
  13. 一種電腦程式產品,其有形地儲存於一電腦可讀取媒體上,用於操作一乘法電路,以計算二個運算元(在此以A及B表示)之乘積,該二個運算元之至少一者係寬於該乘法電路,其中運算元A包括一或多個相連有序字寬運算元片段,其特徵為權重j且以Aj 表示,其中j係從0至k的一整數,且運算元B包括一或多個相連有序字寬運算元片段,其特徵為權重i且以Bi 表示,其中i係從0至m的一整數,而且一字係一已規定位元數目(n),且其中該乘法電路執行字寬運算元片段對乘法運算的一矩陣,該矩陣包括m+1列及k+m+2行,每一列具有一權重x,其中x係從0至m的一整數,並且每一行具有一權重y,其中y係從0至(k+m+1)的一整數,該乘法電路具有對一記憶體之存取,該電腦程式產品包括指令,其可操作以使得一可程式處理器:同時對一對列實行乘法運算,其中對於每一對列,從該記憶體讀取一對Bi 字寬運算元片段且Bi 片段具有對應於該對列之權重(x)的權重(i),而且對於k+2行之每一者 反覆地實行字寬運算元片段對乘法運算(Aj *Bi ),其中對於對應於具有權重x之一列且具有權重y之一行的一單元,該字寬運算元片段對之乘法運算包含Aj 乘以Bi ,其中權重j等於(y-x)且其中權重i等於x,因而對於該矩陣中之每一行,除了自記憶體讀取該對Bi 字寬運算元片段外,需要二個記憶體讀取操作及一個記憶體寫入操作的一最大值。
  14. 如請求項13之電腦程式產品,其中該等乘法運算係對根據每一對中包含之該等列之該等權重之遞增或遞減權重值之一數值順序所選擇之數對列加以實行。
  15. 如請求項13之電腦程式產品,其中該等乘法運算係對從該等m+1列隨機地選擇之數對列加以實行。
  16. 如請求項13之電腦程式產品,其中具有一權重y1 之一行的一字寬運算元片段對乘法運算包括實行一Aj 字寬運算元片段乘以一Bi 字寬運算元片段之至少一乘法運算,其中該Aj 字寬運算元之該權重j及該Bi 字寬運算元片段之該權重i之和係等於該行之該權重y1
  17. 如請求項13之電腦程式產品,其進一步包括指令,其可操作以造成一可程式處理器:計算該等k+m+2行之每一者的一n位元最終行結果,其中一行的一最終行結果包括對於有關該行之該等m+1列之每一者所實行之該等字寬運算元片段對乘法運算之一累加的一最低有效n位元字。
  18. 如請求項17之電腦程式產品,其中可操作以計算一行之 一n位元最終行結果之指令包括指令,該等指令可操作以造成一可程式處理器對於該行所計算的一對最終列,累加該等字寬運算元片段對乘法運算、該行之一中間行結果(若有的話)及對於一先前已計算行所決定之一累加結果之一上字之一進位值(若有的話)之結果,以決定該行的一累加結果,其中該n位元最終行結果包括該行之該累加結果之該等最低有效n位元。
  19. 如請求項18之電腦程式產品,其進一步包括指令,其可操作以造成一可程式處理器:計算一行的一n位元中間行結果,其中一行的一中間行結果包括對於一對列,其並非待對於該行所計算之該對最終列,累加該等字寬運算元片段對乘法運算、該行之一先前已計算中間行結果(若有的話)及一先前已計算行之一進位值(若有的話)之結果,以決定該行的一中間累加結果,其中該中間行結果包括該行之該中間累加結果之該等最低有效n位元。
  20. 如請求項19之電腦程式產品,其中該行之該中間累加結果的一上字包括待用於一下一行之一累加運算之該行的一進位值。
  21. 如請求項13之電腦程式產品,其中將對應於該對列之讀取自記憶體之該對Bi 字寬運算元片段儲存於一快取記憶體中,同時實行該對列之該等乘法運算。
  22. 一種用於計算二個運算元(在此以A及B表示)之乘積之系統,該二個運算元之至少一者係寬於該系統中所包含的 一乘法電路,其中運算元A包括一或多個相連有序字寬運算元片段,其特徵為權重j且以Aj 表示,其中j係從0至k的一整數,且運算元B包括一或多個相連有序字寬運算元片段,其特徵為權重i且以Bi 表示,其中i係從0至m的一整數,而且一字係一已規定位元數目(n),且其中該系統執行字寬運算元片段對乘法運算的一矩陣,該矩陣包括m+1列及k+m+2行,每一列具有一權重x,其中x係從0至m的一整數,並且每一行具有一權重y,其中y係從0至(k+m+1)的一整數,該乘法電路具有對一記憶體之存取,該系統包括:一乘法器,其包含一或多個輸入,其係組態成用以接收欲相乘之字寬運算元片段,以形成一二字寬中間乘積,而且組態成用以實行一對字寬運算元片段的一乘法運算;一累加器,其包含:一或多個輸入,其係組態成用以接收來自該乘法器之該二字寬中間乘積、來自一快取記憶體的一中間行結果,及來自該快取記憶體的一進位值;一或多個輸出,其係組態成用以將該二字寬中間乘積、中間行結果及進位值之一累加之最低有效n位元提供給該快取記憶體作為一中間或最終行結果,而且進一步組態成用以提供該累加之上位元給該快取記憶體作為一進位值;其中該累加器係組態成用以實行其接收之該等輸入 的一累加運算;一快取記憶體,其係組態成用以使字寬運算元片段接收自及傳輸至一記憶體,而且該快取記憶體係連接至該乘法器及該累加器,以便將輸入供應至其中,及從其中接收輸出;以及一操作定序器,其係組態成用以控制該快取記憶體對該記憶體之存取,而且用以控制分別由該乘法器與累加器所實行之乘法及累加運算之一順序;其中該等順序係定義成用以同時對一對列實行乘法運算,其中對於每一對列,將一對Bi 字寬運算元片段從該記憶體讀取至該快取記憶體中且Bi 片段具有對應於該對列之權重(x)的權重(i),而且由該乘法器對於k+2行之每一者反覆地實行字寬運算元片段對乘法運算(Aj *Bi ),其中對於對應於具有權重x之一列且具有權重y之一行的一單元,該字寬運算元片段對之乘法運算包含Aj 乘以Bi ,其中權重j等於(y-x)且其中權重i等於x,因而對於該矩陣中之每一行,除了自記憶體讀取該對Bi 字寬運算元片段外,需要往返於該快取記憶體之二個記憶體讀取操作及一個記憶體寫入操作的一最大值。
  23. 如請求項22之系統,其進一步包括:該記憶體,其中該記憶體要求二個記憶體介面。
  24. 如請求項22之系統,其進一步包括:該記憶體,其中該記憶體係一單一雙埠RAM(隨機存 取記憶體)。
  25. 如請求項22之系統,其進一步包括:該記憶體,其中該記憶體包括二個單埠RAM。
  26. 一種用以計算二個運算元(在此以A及B表示)之乘積之電腦實施方法,該二個運算元之至少一者係寬於與實行乘法之一乘法電路相關聯的一寬度,該方法包括:建立字寬運算元片段對乘法運算的一矩陣,該矩陣包括m+1列及k+m+2行,每一列具有一權重x,其中x係從0至m的一整數,並且每一行具有一權重y,其中y係從0至(k+m+1)的一整數,其中運算元A包括一或多個相連有序字寬運算元片段,其特徵為特定權重j且以Aj 表示,其中j係從0至k的一整數,且運算元B包括一或多個相連有序字寬運算元片段,其特徵為權重i且以Bi 表示,其中i係從0至m的一整數,而且一字係一已規定位元數目(n);以及同時對一對列實行乘法運算,其中對於每一對列,從一記憶體讀取一對Bi 字寬運算元片段且Bi 片段具有對應於該對列之權重(x)的權重(i),而且對於k+2行之每一者反覆地實行字寬運算元片段對乘法運算(Aj *Bi ),其中對於對應於具有權重x之一列且具有權重y之一行的一單元,該字寬運算元片段對之乘法運算包含Aj 乘以Bi ,其中權重j等於(y-x)且其中權重i等於x,因而對於該矩陣中之每一行,除了自記憶體讀取該對Bi 字寬運算元片段外,需要二個記憶體讀取操作及一個記憶體寫入操作的 一最大值。
  27. 如請求項26之方法,其中該等乘法運算係對根據每一對中包含之該等列之該等權重之遞增或遞減權重值之一數值順序所選擇之數對列加以實行。
  28. 如請求項26之方法,其中該等乘法運算係對從該等m+1列隨機地選擇之數對列加以實行。
  29. 一種用於操作一乘法電路以計算二個運算元(在此以A及B表示)之乘積之系統,該二個運算元之至少一者係寬於該乘法電路,其中運算元A包括一或多個相連有序字寬運算元片段,其特徵為權重j且以Aj 表示,其中j係從0至k的一整數,且運算元B包括一或多個相連有序字寬運算元片段,其特徵為權重i且以Bi 表示,其中i係從0至m的一整數,而且一字係一已規定位元數目(n),且其中該乘法電路執行字寬運算元片段對乘法運算的一矩陣,該矩陣包括m+1列及k+m+2行,每一列具有一權重x,其中x係從0至m的一整數,並且每一行具有一權重y,其中y係從0至(k+m+1)的一整數,該乘法電路具有對一記憶體之存取,該系統包括:一構件,其用以同時對一對列實行乘法運算,其中對於每一對列,從該記憶體讀取一對Bi 字寬運算元片段且Bi 片段具有對應於該對列之權重(x)的權重(i),而且對於k+2行之每一者反覆地實行字寬運算元片段對乘法運算(Aj *Bi ),其中對於對應於具有權重x之一列且具有權重y之一行的一單元,該字寬運算元片段對之乘法運算包含 Aj 乘以Bi ,其中權重j等於(y-x)且其中權重i等於x,因而對於該矩陣中之每一行,除了自記憶體讀取該對Bi 字寬運算元片段外,需要二個記憶體讀取操作及一個記憶體寫入操作的一最大值。
TW097130432A 2007-08-10 2008-08-08 大數量乘法之方法、系統及電腦程式產品 TWI438678B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/837,387 US8028015B2 (en) 2007-08-10 2007-08-10 Method and system for large number multiplication

Publications (2)

Publication Number Publication Date
TW200915174A TW200915174A (en) 2009-04-01
TWI438678B true TWI438678B (zh) 2014-05-21

Family

ID=40347502

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097130432A TWI438678B (zh) 2007-08-10 2008-08-08 大數量乘法之方法、系統及電腦程式產品

Country Status (5)

Country Link
US (1) US8028015B2 (zh)
CN (1) CN101790718B (zh)
DE (1) DE112008002158B4 (zh)
TW (1) TWI438678B (zh)
WO (1) WO2009023595A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI731543B (zh) * 2019-04-28 2021-06-21 開曼群島商創新先進技術有限公司 計算機資料處理方法及裝置

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5097138B2 (ja) * 2009-01-15 2012-12-12 シャープ株式会社 モンゴメリ乗算のための演算回路及び暗号回路
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
US9645974B1 (en) 2015-03-11 2017-05-09 Google Inc. Optimized matrix multiplication using vector multiplication of interleaved matrix values
CN111090467A (zh) * 2016-04-26 2020-05-01 中科寒武纪科技股份有限公司 一种用于执行矩阵乘运算的装置和方法
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
US10140574B2 (en) * 2016-12-31 2018-11-27 Via Alliance Semiconductor Co., Ltd Neural network unit with segmentable array width rotator and re-shapeable weight memory to match segment width to provide common weights to multiple rotator segments
CN110312992A (zh) 2017-03-20 2019-10-08 英特尔公司 用于片矩阵乘法和累加的系统、方法和装置
US11275588B2 (en) 2017-07-01 2022-03-15 Intel Corporation Context save with variable save state size
CN112214726B (zh) * 2017-07-07 2024-05-03 华为技术有限公司 运算加速器
US11816483B2 (en) 2017-12-29 2023-11-14 Intel Corporation Systems, methods, and apparatuses for matrix operations
US11023235B2 (en) 2017-12-29 2021-06-01 Intel Corporation Systems and methods to zero a tile register pair
US11669326B2 (en) 2017-12-29 2023-06-06 Intel Corporation Systems, methods, and apparatuses for dot product operations
US11809869B2 (en) 2017-12-29 2023-11-07 Intel Corporation Systems and methods to store a tile register pair to memory
US11093247B2 (en) 2017-12-29 2021-08-17 Intel Corporation Systems and methods to load a tile register pair
US11789729B2 (en) 2017-12-29 2023-10-17 Intel Corporation Systems and methods for computing dot products of nibbles in two tile operands
US10664287B2 (en) 2018-03-30 2020-05-26 Intel Corporation Systems and methods for implementing chained tile operations
US11093579B2 (en) 2018-09-05 2021-08-17 Intel Corporation FP16-S7E8 mixed precision for deep learning and other algorithms
US11579883B2 (en) 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US10970076B2 (en) 2018-09-14 2021-04-06 Intel Corporation Systems and methods for performing instructions specifying ternary tile logic operations
US10990396B2 (en) 2018-09-27 2021-04-27 Intel Corporation Systems for performing instructions to quickly convert and use tiles as 1D vectors
US10866786B2 (en) 2018-09-27 2020-12-15 Intel Corporation Systems and methods for performing instructions to transpose rectangular tiles
US10719323B2 (en) 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions
US10896043B2 (en) 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers
US10929143B2 (en) 2018-09-28 2021-02-23 Intel Corporation Method and apparatus for efficient matrix alignment in a systolic array
US10963256B2 (en) 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
US10929503B2 (en) 2018-12-21 2021-02-23 Intel Corporation Apparatus and method for a masked multiply instruction to support neural network pruning operations
US11886875B2 (en) 2018-12-26 2024-01-30 Intel Corporation Systems and methods for performing nibble-sized operations on matrix elements
US11294671B2 (en) 2018-12-26 2022-04-05 Intel Corporation Systems and methods for performing duplicate detection instructions on 2D data
US20200210517A1 (en) 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
US10922077B2 (en) 2018-12-29 2021-02-16 Intel Corporation Apparatuses, methods, and systems for stencil configuration and computation instructions
US10942985B2 (en) 2018-12-29 2021-03-09 Intel Corporation Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions
US11269630B2 (en) 2019-03-29 2022-03-08 Intel Corporation Interleaved pipeline of floating-point adders
US11016731B2 (en) 2019-03-29 2021-05-25 Intel Corporation Using Fuzzy-Jbit location of floating-point multiply-accumulate results
US10990397B2 (en) 2019-03-30 2021-04-27 Intel Corporation Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator
US11175891B2 (en) 2019-03-30 2021-11-16 Intel Corporation Systems and methods to perform floating-point addition with selected rounding
US11403097B2 (en) 2019-06-26 2022-08-02 Intel Corporation Systems and methods to skip inconsequential matrix operations
US11334647B2 (en) 2019-06-29 2022-05-17 Intel Corporation Apparatuses, methods, and systems for enhanced matrix multiplier architecture
US11714875B2 (en) 2019-12-28 2023-08-01 Intel Corporation Apparatuses, methods, and systems for instructions of a matrix operations accelerator
CN111694541B (zh) * 2020-05-06 2023-04-21 常熟理工学院 一种用于数论变换乘法的基32运算电路
US12112167B2 (en) 2020-06-27 2024-10-08 Intel Corporation Matrix data scatter and gather between rows and irregularly spaced memory locations
US11972230B2 (en) 2020-06-27 2024-04-30 Intel Corporation Matrix transpose and multiply
US11227641B1 (en) * 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory
US11941395B2 (en) 2020-09-26 2024-03-26 Intel Corporation Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions
CN112433760B (zh) * 2020-11-27 2022-09-23 海光信息技术股份有限公司 数据排序方法和数据排序电路
US12001887B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator
US12001385B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator
RU2764876C1 (ru) * 2021-04-13 2022-01-21 Акционерное общество "Концерн "Созвездие" Накапливающий сумматор-вычитатель по модулю произвольного натурального числа
CN117149129B (zh) * 2023-10-31 2024-01-26 共模半导体技术(苏州)有限公司 专用大整数乘法微控制器

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2758195B1 (fr) * 1997-01-09 1999-02-26 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire comprenant deux circuits de multiplication operant en parallele
US6026483A (en) * 1997-10-23 2000-02-15 Advanced Micro Devices, Inc. Method and apparatus for simultaneously performing arithmetic on two or more pairs of operands
DE69828150T2 (de) * 1998-03-30 2005-12-15 Rainbow Technologies Inc., Irvine Vom Rechenaufwand her effizientes modulares Multiplikationsverfahren und Gerät
US6484194B1 (en) * 1998-06-17 2002-11-19 Texas Instruments Incorporated Low cost multiplier block with chain capability
US6633896B1 (en) * 2000-03-30 2003-10-14 Intel Corporation Method and system for multiplying large numbers
JP3709553B2 (ja) * 2000-12-19 2005-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 演算回路および演算方法
US7296049B2 (en) * 2002-03-22 2007-11-13 Intel Corporation Fast multiplication circuits
FR2853424B1 (fr) * 2003-04-04 2005-10-21 Atmel Corp Architecture de multiplicateurs polynomial et naturel combines
FR2853425B1 (fr) * 2003-04-07 2006-01-13 Atmel Corp Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur
US8194855B2 (en) * 2003-06-30 2012-06-05 Oracle America, Inc. Method and apparatus for implementing processor instructions for accelerating public-key cryptography
US7480690B2 (en) * 2003-12-29 2009-01-20 Xilinx, Inc. Arithmetic circuit with multiplexed addend inputs
JP4408712B2 (ja) * 2004-01-26 2010-02-03 富士通マイクロエレクトロニクス株式会社 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路
US7672989B2 (en) * 2005-05-09 2010-03-02 Sandisk Il Ltd. Large number multiplication method and device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI731543B (zh) * 2019-04-28 2021-06-21 開曼群島商創新先進技術有限公司 計算機資料處理方法及裝置

Also Published As

Publication number Publication date
CN101790718B (zh) 2013-11-06
DE112008002158B4 (de) 2023-05-04
WO2009023595A1 (en) 2009-02-19
DE112008002158T5 (de) 2010-06-17
US20090043836A1 (en) 2009-02-12
CN101790718A (zh) 2010-07-28
TW200915174A (en) 2009-04-01
US8028015B2 (en) 2011-09-27

Similar Documents

Publication Publication Date Title
TWI438678B (zh) 大數量乘法之方法、系統及電腦程式產品
US6691143B2 (en) Accelerated montgomery multiplication using plural multipliers
JP4870932B2 (ja) 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
US20170139677A1 (en) Multiplication of first and second operands using redundant representation
JP3891997B2 (ja) 可変幅の符号付きおよび符号なしオペランドのためのモジュラ2進乗算器
US6295597B1 (en) Apparatus and method for improved vector processing to support extended-length integer arithmetic
US10255041B2 (en) Unified multiply unit
JP2001527673A (ja) モントゴメリー乗算に基づくモジュラ乗算及び累乗の改善された装置と方法
JP2011522317A5 (zh)
US20130185345A1 (en) Algebraic processor
US11966740B2 (en) Use of multiple different variants of floating point number formats in floating point operations on a per-operand basis
CN113032797B (zh) 在处理设备中执行加密操作的方法
US9928031B2 (en) Overlap propagation operation
EP1573510B1 (en) Multiplier with look up tables
US7590235B2 (en) Reduction calculations in elliptic curve cryptography
US20220365755A1 (en) Performing constant modulo arithmetic
US7167889B2 (en) Decimal multiplication for superscaler processors
US10824434B1 (en) Dynamically structured single instruction, multiple data (SIMD) instructions
KR20200063077A (ko) 대규모 병렬 연관된 승산기-누산기
JP6984762B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20210263707A1 (en) Iterative binary division with carry prediction
JP6735870B2 (ja) マルチワード乗算器回路及び電力解析攻撃を防止する方法
JP7078129B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20230266911A1 (en) Concurrent multi-bit subtraction in associative memory
Arndt et al. Hardware Accelerated Matrix Multiplication for Embedded Systems