TWI731543B - 計算機資料處理方法及裝置 - Google Patents
計算機資料處理方法及裝置 Download PDFInfo
- Publication number
- TWI731543B TWI731543B TW109100610A TW109100610A TWI731543B TW I731543 B TWI731543 B TW I731543B TW 109100610 A TW109100610 A TW 109100610A TW 109100610 A TW109100610 A TW 109100610A TW I731543 B TWI731543 B TW I731543B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- multiplication
- group
- bit
- result
- Prior art date
Links
Images
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
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
本說明書提供一種計算機資料處理方法及裝置,實現了256比特乘法運算,將2個256位資料拆分成64位數,再對拆分後的資料按照預設規則進行計算。並且在整個計算過程中,逐個計算各組資料對的乘法結果,按組對各組資料對的乘法結果進行累加,各組資料對的乘法結果累加結束後,即將累加結果的低64為儲存在內部記憶體中,釋放對應的暫存器。即乘即累加,一組累加結束即釋放低64位暫存器的運算方式,可以實現占用較少的暫存器,使得整個運算過程可以僅僅存取暫存器,不需要存取高速存取和內部記憶體,提高了資料處理的效率,實現了256比特乘法的快速運算,為密碼學、大整數運算等資料處理過程奠定了資料基礎。
Description
本說明書屬於計算機技術領域,尤其關於一種計算機資料處理方法及裝置。
隨著科技的進步,計算機技術在不斷的發展,資料處理的複雜程度也在不斷的增加,越來越多的需要進行大數運算資料處理,如:密碼演算法中通常需要使用256比特模乘。大數運算是指計算的數值非常大或者對運算的精度要求非常高的運算,由於程式化語言提供的基本數值資料類型表示的數值範圍有限,不能滿足較大規模的高精度數值計算。這種大數運算通常與計算機的硬體相關聯,如何實現比較高效、便捷的計算機資料的運算處理,是本領域極需解决的技術問題。
本說明書實施例的目的在於提供一種計算機資料處理方法及裝置,實現256比特乘法的快速計算,提高了資料處理效率,為密碼學、大整數運算等資料處理過程奠定了資料基礎。
一方面本說明書實施例提供了一種計算機資料處理方法,用於實現2個256位數的乘法資料處理,所述方法包括:
將乘數a和被乘數b由高位到低位分別拆分成4個64位數,分別獲得拆分後乘數和拆分後被乘數,所述拆分後乘數包括:a[3]、a[2]、a[1]、a[0],所述拆分後被乘數包括:b[3]、b[2]、b[1]、b[0];
將所述拆分後乘數和所述拆分後被乘數讀取到暫存器中,並按照預設規則將所述拆分後乘數和所述拆分後被乘數進行相乘處理,獲得目標資料的乘法處理結果;
其中,所述預設規則包括:
所述拆分後乘數和所述拆分後被乘數被分為七組資料對,第一組資料對包括:a[0]b[0],第二組資料對包括:a[1]b[0]、a[0]b[1],第三組資料對包括:a[2]b[0]、a[1]b[1]、a[0]b[2],第四組資料對包括:a[3]b[0]、a[2]b[1]、a[1]b[2]、a[0]b[3],第五組資料對包括:a[3]b[1]、a[2]b[2]、a[1]b[3],第六組資料對包括:a[3]b[2]、a[2]b[3],第七組資料對包括:a[3]b[3];
逐個計算所述第一組資料對到所述第七組資料對的乘法結果,對每組內的資料對的乘法結果進行組內累加,所述組內累加包括:在同一組資料對中,每計算一個資料對的乘法結果,將計算出的乘法結果與組內的上一個資料對的乘法結果進行組內累加,將同一組內的資料對的最終累加結果的低64位保存至內部記憶體,獲得相應組資料對的剩餘累加結果,並釋放對應的暫存器;
各組資料對的第一個資料對的乘法結果與上一組資料對的剩餘累加結果相累加,再與下一個資料對的乘法結果累加,直至獲得第七組資料中資料對的乘法結果累加結束,將所述第七組資料中資料對對應的累加結果保存至內部記憶體中,獲得所述目標資料的乘法處理結果。
進一步地,本說明書一個實施例中,所述方法還包括:
在對各組資料對的乘法結果進行累加時,釋放儲存各資料對的乘法結果的暫存器,並將累加結果保存在3個暫存器中。
進一步地,本說明書一個實施例中,所述方法應用於64位計算機操作系統中。
進一步地,本說明書一個實施例中,所述方法還包括:
從所述64位計算機操作系統的暫存器RBX、RBP、R12、R13、R14、R15中任意選取4暫存器,將選取出的暫存器的值保存到內部記憶體中;
在計算出所述目標乘法結果後,從內部記憶體中獲取保存的所述選取出的暫存器的值,恢復所述選取出的暫存器的值。
進一步地,本說明書一個實施例中,所述方法還包括:
從所述64位計算機操作系統中選取暫存器RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R11,與所述選取出的暫存器均用於資料處理過程中的資料儲存。
另一方面,本說明書提供了一種計算機資料處理裝置,用於實現2個256位數的乘法資料處理,所述裝置包括:
資料拆分模組,用於將乘數a和被乘數b由高位到低位分別拆分成4個64位數,分別獲得拆分後乘數和拆分後被乘數,所述拆分後乘數包括:a[3]、a[2]、a[1]、a[0],所述拆分後被乘數包括:b[3]、b[2]、b[1]、b[0];
資料處理模組,用於將所述拆分後乘數和所述拆分後被乘數讀取到暫存器中,並按照預設規則將所述拆分後乘數和所述拆分後被乘數進行相乘處理,獲得目標資料的乘法處理結果;
其中,所述預設規則包括:
所述拆分後乘數和所述拆分後被乘數被分為七組資料對,第一組資料對包括:a[0]b[0],第二組資料對包括:a[1]b[0]、a[0]b[1],第三組資料對包括:a[2]b[0]、a[1]b[1]、a[0]b[2],第四組資料對包括:a[3]b[0]、a[2]b[1]、a[1]b[2]、a[0]b[3],第五組資料對包括:a[3]b[1]、a[2]b[2]、a[1]b[3],第六組資料對包括:a[3]b[2]、a[2]b[3],第七組資料對包括:a[3]b[3];
逐個計算所述第一組資料對到所述第七組資料對的乘法結果,對每組內的資料對的乘法結果進行組內累加,所述組內累加包括:在同一組資料對中,每計算一個資料對的乘法結果,將計算出的乘法結果與組內的上一個資料對的乘法結果進行組內累加,將同一組內的資料對的最終累加結果的低64位保存至內部記憶體,獲得相應組資料對的剩餘累加結果,並釋放對應的暫存器;
各組資料對的第一個資料對的乘法結果與上一組資料對的剩餘累加結果相累加,再與下一個資料對的乘法結果累加,直至獲得第七組資料中資料對的乘法結果累加結束,將所述第七組資料中資料對對應的累加結果保存至內部記憶體中,獲得所述目標資料的乘法處理結果。
進一步地,本說明書一個實施例中,所述資料處理模組具體用於:
在對各組資料對的乘法結果進行累加時,釋放儲存各資料對的乘法結果的暫存器,並將累加結果保存在3個暫存器中。
進一步地,本說明書一個實施例中,所述裝置應用於64位計算機操作系統中。
進一步地,本說明書一個實施例中,所述裝置還包括暫存器準備模組用於:
從所述64位計算機操作系統的暫存器RBX、RBP、R12、R13、R14、R15中任意選取4暫存器,將選取出的暫存器的值保存到內部記憶體中;
在計算出所述目標乘法結果後,從內部記憶體中獲取保存的所述選取出的暫存器的值,恢復所述選取出的暫存器的值。
進一步地,本說明書一個實施例中,所述暫存器準備模組還用於:
從所述64位計算機操作系統中選取暫存器RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R11,與所述選取出的暫存器均用於資料處理過程中的資料儲存。
再一方面,本說明書提供了一種計算機設備,包括:至少一個64位處理器、用於儲存處理器可執行64位指令的記憶體以及至少13個64位暫存器,所述處理器執行所述64位指令實現上述計算機資料處理方法。
本說明書提供的計算機資料處理方法、裝置、處理設備,實現了256比特乘法運算,將2個256位資料拆分成64位數,再對拆分後的資料按照預設規則進行計算。並且在整個計算過程中,逐個計算各組資料對的乘法結果,按組對各組資料對的乘法結果進行累加,各組資料對的乘法結果累加結束後,即將累加結果的低64為儲存在內部記憶體中,釋放對應的暫存器。即乘即累加,一組累加結束即釋放低64位暫存器的運算方式,可以實現占用較少的暫存器,使得整個運算過程可以僅僅存取暫存器,不需要存取高速存取和內部記憶體,提高了資料處理的效率,實現了256比特乘法的快速運算,計算出的乘法處理結果為密碼學、大整數運算等資料處理過程奠定了資料基礎。
為了使本技術領域的人員更好地理解本說明書中的技術方案,下面將結合本說明書實施例中的圖式,對本說明書實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本說明書一部分實施例,而不是全部的實施例。基於本說明書中的實施例,本領域普通技術人員在沒有作出進步性勞動前提下所獲得的所有其他實施例,都應當屬於本說明書保護的範圍。
越來越多的應用場景需要使用大整數運算,可以利用計算機的資料處理能力,透過計算機程式化等方式實現大整數運算。如:公鑰密碼演算法廣泛使用大整數乘法,在密碼學演算法中的橢圓曲線演算法中,如國密SM2(國家密碼管理局發布的橢圓曲線公鑰密碼演算法),美國NIST 256r1 ECDSA(美國NIST公布的橢圓曲線數位簽名演算法),都使用256比特模乘。由於SM2和NIST 256r1使用特殊的偽梅森素數,對256位數的模可以用快速約簡,所以計算256位模乘可以先求256位乘法,再用快速約簡求模。這樣256比特乘法約占國密SM2和NIST 256r1 ECDSA一半的計算量。256比特乘法還可作為實現模組用於構造更高比特的乘法和模乘,用於RSA2048、RSA4096等,RSA2048、RSA4096可以理解為兩種公鑰加密演算法。
本說明書實施例中提供了一種計算機資料處理方法,可以實現256比特乘法,透過將用於256比特乘法運算的乘數和被乘數分別拆分為4個64位數後,再將拆分後的資料按照一定的規則進行運算。整個過程可以透過計算機程式碼實現,運算過程中,可以僅僅使用的計算機內部的暫存器,並且不需要限制使用哪些暫存器,也不需要存取高速存取空間,提高了資料處理效率。
本說明書中計算機資料處理方法可以應用在客戶端或伺服器中,客戶端可以是智慧型手機、平板電腦、智慧型可穿戴設備(智慧型手錶、虛擬現實眼鏡、虛擬現實頭盔等)、智慧型車載設備等電子設備。
具體的,圖1是本說明書一個實施例中計算機資料處理方法的流程示意圖,如圖1所示,本說明書一個實施例中提供的計算機資料處理方法可以包括:
步驟102、將乘數a和被乘數b由高位到低位拆分別分成4個64位數,分別獲得拆分後乘數和拆分後被乘數,所述拆分後乘數包括:a[3]、a[2]、a[1]、a[0],所述拆分後被乘數包括:b[3]、b[2]、b[1]、b[0]。
在具體的實施過程中,本說明書實施例可以用於實現256比特乘法,即可以實現2個256位資料的大整數乘法運算。在資料處理之前,可以先對256比特乘法運算中的乘數a和被乘數b進行拆分,將乘數a和被乘數b分別拆分為4個64位數,獲得拆分後乘數和拆分後被乘數。具體可以按照資料的位數進行劃分,每隔64比特劃分一次,具體可以參考圖3所示。其中,拆分後乘數從高位到低位按64位劃分為:a[3]、a[2]、a[1]、a[0],拆分後被乘數從高位到低位按64位劃分為:b[3]、b[2]、b[1]、b[0]。
步驟104、將所述拆分後乘數和所述拆分後被乘數讀取到暫存器中,並按照預設規則將所述拆分後乘數和所述拆分後被乘數進行相乘處理,獲得目標資料的乘法處理結果;
其中,所述預設規則包括:
所述拆分後乘數和所述拆分後被乘數被分為七組資料對,第一組資料對包括:a[0]b[0],第二組資料對包括:a[1]b[0]、a[0]b[1],第三組資料對包括:a[2]b[0]、a[1]b[1]、a[0]b[2],第四組資料對包括:a[3]b[0]、a[2]b[1]、a[1]b[2]、a[0]b[3],第五組資料對包括:a[3]b[1]、a[2]b[2]、a[1]b[3],第六組資料對包括:a[3]b[2]、a[2]b[3],第七組資料對包括:a[3]b[3];
逐個計算所述第一組資料對到所述第七組資料對的乘法結果,對每組內的資料對的乘法結果進行組內累加,所述組內累加包括:在同一組資料對中,每計算一個資料對的乘法結果,將計算出的乘法結果與組內的上一個資料對的乘法結果進行組內累加,將各組資料對的最終累加結果的低64位保存至內部記憶體,獲得各組資料對的剩餘累加結果,並釋放對應的暫存器;
各組資料對的第一個資料對的乘法結果與上一組資料對的剩餘累加結果相累加,再與下一個資料對的乘法結果累加,直至獲得第七組資料中資料對的乘法結果累加結束,將所述第七組資料中資料對對應的累加結果保存至內部記憶體中,獲得所述目標資料的乘法處理結果。
在具體的實施過程中,乘數和被乘數拆分結束後,可以調用256位乘法函數如:64位乘法指令和64位加法指令,計算256位乘法。可以先從內部記憶體中將拆分好的資料讀取到暫存器中,拆分後乘數和拆分後被乘數可以占用8個64位暫存器。再按照預設規則將拆分後乘數和拆分後被乘數進行相乘處理,獲得最終的目標乘法結果,目標乘法結果可以保存在內部記憶體中。其中,具體進行乘法運算的預設規則可以包括:
圖2是本說明書實施例中資料對分組示意圖,如圖2所示,本說明書一個實施例中,可以按照乘法運算規則,即乘數和被乘數逐位相乘,錯位排列的規則,將排列好的資料按列進行分組,相乘的兩個資料可以作為一個資料對。如圖2所示,拆分後乘數和拆分後被乘數被劃分為7組資料對,圖2中從右到左虛線框分別為第一組資料對到第七組資料對。如圖2所示,其中:第一組資料對包括:a[0]b[0],第二組資料對包括:a[1]b[0]、a[0]b[1],第三組資料對包括:a[2]b[0]、a[1]b[1]、a[0]b[2],第四組資料對包括:a[3]b[0]、a[2]b[1]、a[1]b[2]、a[0]b[3],第五組資料對包括:a[3]b[1]、a[2]b[2]、a[1]b[3],第六組資料對包括:a[3]b[2]、a[2]b[3],第七組資料對包括:a[3]b[3]。即第一組資料對包括a[0]和b[0]一個資料對,第二組資料對包括a[1]和b[0]、a[0]和b[1]2個資料對,以此類推,此處不再贅述。
需要說明的是,對被拆分的資料進行分組可以理解為預先設置好各個資料對的相乘以及乘法結果的累加順序,並不一定指需要先將資料進行分組,僅僅表示將哪些的資料的乘法結果進行累加。本說明書實施例為了方便描述,可以先將資料進行分組,位於同一組的資料對的乘法結果相累加,高位再與下一組資料對的乘法結果相累加。
資料對被劃分好之後,可以依次逐個計算第一組資料對到第七組資料對的乘法結果,並按組對每組內的資料對的乘法結果進行累加,若組內只有一個資料對,則將該資料對的乘法結果作為該組的累加結果。如:計算第一組資料對的乘法結果,即先計算a[0]×b[0],獲得128位的乘法結果,可以將乘法結果保存在暫存器中,該乘法結果可以占用2個64位暫存器。可以將乘法結果作為第一組資料對的累加結果,可以將累加結果中的低64位作為最終的目標乘法結果的低64位,從暫存器保存在內部記憶體中,釋放保存該乘法結果低64位的暫存器。再計算第二組資料對的乘法結果,對第二組資料對的乘法結果進行累加,再計算第三組資料對的乘法結果,並對第三組資料對的乘法結果進行累加,以此類推,此處不再贅述。
需要注意的是,本說明書實施例在進行乘法結果的運算和資料累加時,每計算一個資料對的乘法結果,即將計算出的乘法結果與上一個資料對的乘法結果累加,再計算下一個資料對的乘法結果,並進行累加。並且,每一組資料對最終的累加結果的低64位資料可以從對應的暫存器保存到內部記憶體中,釋放其對應的暫存器,獲得該組資料對的剩餘累加結果。而每一組資料對中計算的第一個資料對的乘法結果先與上一組資料對的剩餘累加結果相累加,再計算下一個資料對的乘法結果,並將下一個資料對的乘法結果與累加後的累加結果相累加,直至計算到第七組資料對。將第七組資料對的累加結果保存至內部記憶體中,即可以獲得2個256位數的目標乘法結果。
需要說明的是,各組資料對中可能包括多個資料對,在對各組資料對計算資料對的乘法結果時,可以根據實際需要選擇各個資料對的計算的先後順序,本說明書實施例不具體限定各組資料對內的資料對的計算順序。
例如:先計算第一組資料對中a[0]和b[0]的乘法結果,獲得a[0]×b[0]的乘法結果,將計算獲得的乘法結果的低64位保存至內部記憶體,並釋放對應的暫存器。
再計算第二組資料對的乘法結果,如:可以先計算a[1]×b[0]的乘法結果,將計算獲得乘法結果與a[0]×b[0]的乘法結果的高64位相加,獲得累加結果;再計算a[0]×b[1]的乘法結果,將a[1]×b[0]的乘法結果與a[0]×b[0]的乘法結果的高64位相加的累加結果與a[0]×b[1]的乘法結果相加,獲得第二組資料對的累加結果;將第二組資料對的累加結果的低64位保存至內部記憶體,獲得第二組資料對的剩餘累加結果,並釋放保存第二組資料對的累加結果的暫存器。
再計算第三組資料對的乘法結果,如:可以先計算a[2]×b[0]的乘法結果,將a[2]×b[0]的乘法結果與第二組資料對的剩餘累加結果相加,獲得累加結果,再依次計算a[1]b[1]、a[0]b[2],並在計算出乘法結果後即與上一次的累加結果進行累加,具體可以參考第二組資料對的計算規則。按照類似的方法,依次計算第四組資料對到第七組資料對的乘法結果以及累加結果,獲得第七組資料對a[3]×b[3]的乘法結果後,將a[3]×b[3]的乘法結果與第六組資料對的剩餘累加結果相累加,並將累加結果保存在內部記憶體中,釋放對應的暫存器。則256位資料a和b最終的目標資料的乘法處理結果均保存在內部記憶體中,計算結束。目標資料可以理解為資料a和b。
在本說明書一些實施例中,在對各組資料對進行運算時,各資料對的乘法結果在進行資料累加時,釋放原本儲存乘法結果的暫存器,並將累加結果保存在3個暫存器內,確保了整個計算過程占用的暫存器最少。
本說明書一些實施例中提供的計算機資料處理方法,可以運行在64位計算機操作系統中,如:x86 CPU(Central Processing Unit/Processor,中央處理器)的64位運行環境。該64位計算機操作系統可以支持64位指令,如64位乘和64位加,與32位乘和加相比有更强的計算能力,同時64位的x86 CPU可以提供更多的暫存器。本說明書實施例中的計算機資料處理方法的計算機程式也可以採用64位編譯,利用64位操作系統進行256比特乘法的運算,可以提供更多的暫存器,使得在資料處理過程中,不需要存取高速存取和內部記憶體,提高資料處理的效率,快速實現256比特乘法。
x86-64 CPU在64位環境下通常情况下可以包括16個64位暫存器,如:RAX、RBX、RCX、RDX、RSI、RDI、RSP、RBP、R8、R9、R10、R11、R12、R13、R14、R15。本說明書一些實施例中,可以從64位計算機操作系統的以下6個暫存器中任意選取4暫存器:RBX、RBP、R12、R13、R14、R15,將選取出的暫存器的值保存到內部記憶體中。在計算出所述目標乘法結果後,即完成256比特乘法的運算後,從內部記憶體中獲取保存的選取出的4個暫存器的值,利用保存的選取出的暫存器的值,恢復選取出的暫存器的值,確保了函數的準確運行,提高資料處理的準確性。
本說明書實施例,利用x86-64位特性的256比特乘法實現方法和實現程式碼作為大數計算基本模組,計算出的256位資料的乘法處理結果,可以用於構建安全計算平台技術部MORSE平台(可以理解為數位貨幣平台)的橢圓曲線密碼庫和大數計算庫,為密碼學和大數運算奠定了理論基礎。
在本說明書一些實施例中,可以從64位計算機操作系統中選取以下9個暫存器RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R11,與上述實施例中選取出的4個暫存器,用於256比特乘法運算過程中的資料儲存。即本說明書實施例中,x86-64 CPU在64位環境下的16個64暫存器除了RSP暫存器,其他15個64位暫存器均可以用於256比特乘法的計算,並且,本說明書實施例中,可以優先選擇RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R119個暫存器,可以在計算結束後不必恢復該9個暫存器的值,只需要恢復從RBX、RBP、R12、R13、R14、R156個暫存器中選取出的4個暫存器。減少了資料處理步驟,提高資料處理效率。
本說明書實施例提供的計算機資料處理方法,實現了256比特乘法運算,將2個256位資料拆分成64位數,再對拆分後的資料按照預設規則進行計算。並且在整個計算過程中,逐個計算各組資料對的乘法結果,按組對各組資料對的乘法結果進行累加,各組資料對的乘法結果累加結束後,即將累加結果的低64為儲存在內部記憶體中,釋放對應的暫存器。即乘即累加,一組累加結束即釋放低64位暫存器的運算方式,可以實現占用較少的暫存器,使得整個運算過程可以僅僅存取暫存器,不需要存取高速存取和內部記憶體,提高了資料處理的效率,實現了256比特乘法的快速運算。
圖3是本說明書一個實施例中256比特乘法運算的流程示意圖,下面結合圖3,介紹本說明書實施例中資料處理的過程:
1、256位乘法參數準備
如圖3所示,將兩個256位的乘數按64位劃分,分別分為4個64位的數,保存在內部記憶體中。如圖3所示,bit可以表示資料的位數,256bit可以表示256位數,兩個256位乘數a、b,從高位到低位按64位劃分為a[3]、a[2]、a[1]、a[0],b[3]、b[2]、b[1]、b[0]。
步驟第2、3、4步可以理解為256位乘法函數執行過程,調用256位乘法函數開始計算256位乘法:
2、暫存器準備
x86-64 CPU在64位環境下通常可以有16個64位暫存器:RAX、RBX、RCX、RDX、RSI、RDI、RSP、RBP、R8、R9、R10、R11、R12、R13、R14、R15。
64位系統操作系統(如:Windows、Unix/Linux等)的調用約定規定了在一個函數中,哪些暫存器的值可以破壞,即可以直接用於計算,其資料不用恢復;哪些暫存器的值在函數返回時要保證必須是原值;哪些暫存器的值在函數中不能破壞。對於函數返回必須保持原值的暫存器,將其值在內部記憶體中保存,而後可供函數使用,在函數返回前要恢復這些暫存器的值。本說明書實施例中256比特乘法運算需要準備13個64位暫存器。
如Linux 64位環境下,函數可直接使用以下9個暫存器:RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R11;以下6個暫存器函數返回時要保證原值:RBX、RBP、R12、R13、R14、R15。其中,暫存器RSP的值是堆疊頂位址,本說明書實施例中,暫存器RSP不能在函數中使用。
本說明書實施例,可以從6個暫存器RBX、RBP、R12、R13、R14、R15中選4個保存到內部記憶體,加上RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R11,256位乘法函數可使用13個64位暫存器。
3、乘法計算過程:
可以將a[3]、a[2]、a[1]、a[0],b[3]、b[2]、b[1]、b[0]從內部記憶體讀取到暫存器,占用8個64位暫存器。圖3中“*”即本說明書實施例中的“×”,可以表示兩個數相乘。
3.1、計算a[0]×b[0]得到128位乘法結果,從高位到低位分為2個64位數,存在2個64位暫存器中。其中,低64位可以作為最終乘法結果的一部分,從暫存器存到內部記憶體,此時,還占用1個暫存器。
3.2、計算a[1]×b[0]得到128位乘法結果,存在2個64位暫存器中,與a[0]×b[0]的高64位相加,累加結果占用3個64位暫存器。計算a[0]×b[1]得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。累加結果的低64位可以作為最終乘法結果的一部分,從暫存器存到內部記憶體,此時,累加結果還占用2個暫存器。
3.3、計算a[2]×b[0] 得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。計算a[1]×b[1] 得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。計算a[0]×b[2] 得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。累加結果的低64位可以作為最終乘法結果的一部分,從暫存器存到內部記憶體,此時,累加結果還占用2個暫存器。
3.4、計算a[3]×b[0]得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。計算a[2]×b[1] 得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。計算a[1]×b[2] 得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。計算a[0]×b[3]得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。累加結果的低64位可以作為最終乘法結果的一部分,從暫存器存到內部記憶體,此時,累加結果還占用2個暫存器。
3.5、計算a[3]×b[1] 得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。計算a[2]×b[2]得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。計算a[1]×b[3]得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。累加結果低64位可以作為最終乘法結果的一部分,從暫存器存到內部記憶體,此時,累加結果還占用2個暫存器。
3.6、計算a[3]×b[2]得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。計算a[2]×b[3]得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用3個64位暫存器。累加結果的低64位可以作為最終乘法結果的一部分,從暫存器存到內部記憶體,此時,累加結果還占用2個暫存器。
需要說明的是,步驟3.2到步驟3.6中計算那兩個資料的乘法結果的順序可以根據實際需要進行調整,本說明書實施例不作具體限定。
3.7、a[3]×b[3]得到128位乘法結果,存在2個64位暫存器中,與已有累加結果相加,得到的加法結果占用2個64位暫存器。得到的128位累加結果都是最終結果,從暫存器存到內部記憶體,不再占用暫存器。
步驟3.1到步驟3.7的計算過程,可以參考圖3所示,每一步驟可以對應上述實施例中一組資料對的計算,各組資料對的劃分可以參考圖2以及圖3所示。如圖3所示,下一組資料的乘積可以與上一組資料累加結果的高位相加。
可以看出,除了乘數a、b占用8個64位暫存器外,乘法計算中占用的其他64位暫存器的數量為:3.1步占用2個;3.2、3.3、3.4、3.5、3.6步占用5個;3.7步占用3個。
綜上,整個乘法計算過程中,兩個乘數a,b需要8個64位空間,資料的乘和加最多需要5個64位臨時空間。因此,整個乘法計算過程可以在13個64位暫存器中完成。
4、暫存器恢復
對於第2步暫存器準備中4個值在內部記憶體中保存的暫存器,計算結束後,可以從內部記憶體讀取值,恢復這4個暫存器的值。
執行完第2、3、4步後256位乘法函數返回。圖3中,s[0]-s[7]表示累加結果,其中s[0]可以表示第一組資料對即a[0]×b[0]的乘法結果的低64位數,s[1]可以表示第二組資料對的累加結果的低64位數,以此類推,s[6]和s[7]可以表示第七組資料對的乘法結果與第六組資料對的剩餘累加結果累加後的累加結果。
本說明書實施例中的256位乘法的計算過程可以利用x86 CPU的64位指令和64位暫存器實現,其中,x86 CPU 的64位環境支持的64位指令,具體可以使用下述64位指令:
(1)使用64位乘法指令MUL;或使用Intel CPU從2013的Haswell架構開始推出的MULX,還可以指定乘法結果使用的暫存器,如:指定其中5個暫存器作為乘法結果使用的暫存器,以減少mov指令(資料傳送指令),提高資料處理效率。
(2)使用64位加法指令ADD,或帶進位加法指令ADC。
通常情况下,x86 CPU 的64位環境有16個64位暫存器:RAX、RBX、RCX、RDX、RSI、RDI、RSP、RBP、R8、R9、R10、R11、R12、R13、R14、R15。
除了暫存器RSP用於堆疊指標,彙編編寫的程式碼,將相應暫存器存入堆疊中保護,程式返回前恢復暫存器,則暫存器可用於計算。x86 CPU 的64位環境中,即除了暫存器RSP,其他15個64位暫存器可用於計算。
本說明書實施例中的256位乘法計算過程需要13個64位空間,即13個64位暫存器,而x86 CPU 的64位環境可以有15個64位暫存器供資料處理使用。因此,本說明書實施例提供的計算機資料處理方法可以在x86 CPU 的64位環境中在暫存器中完成計算,其中多餘的2個暫存器可以作為備用暫存器。
本說明書實施例提供的計算機資料處理方法,實現了256比特乘法運算,並且可以在x86 CPU 的64位環境完成,占用較少的暫存器,不限制(規定)使用哪些64位暫存器,使用哪些64位乘法和加法指令,以及具體的程式碼實現。整個計算過程可以不存取高速存取和內部記憶體,提高了資料處理效率,實現了256比特的快速乘法運算,為密碼學、大整數運算等提供了資料基礎。
本說明書中上述方法的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參與即可,每個實施例重點說明的都是與其他實施例的不同之處。相關之處參與方法實施例的部分說明即可。
基於上述所述的計算機資料處理方法,本說明書一個或多個實施例還提供一種計算機資料處理裝置。所述的裝置可以包括使用了本說明書實施例所述方法的系統(包括分散式系統)、軟體(應用程式)、模組、組件、伺服器、客戶端等並結合必要的實施硬體的裝置。基於同一創新構思,本說明書實施例提供的一個或多個實施例中的裝置如下面的實施例所述。由於裝置解决問題的實現方案與方法相似,因此本說明書實施例具體的裝置的實施可以參與前述方法的實施,重複之處不再贅述。以下所使用的,術語“單元”或者“模組”可以實現預定功能的軟體和/或硬體的組合。儘管以下實施例所描述的裝置較佳地以軟體來實現,但是硬體,或者軟體和硬體的組合的實現也是可能並被構想的。
具體地,圖4是本說明書提供的計算機資料處理裝置一個實施例的模組結構示意圖,如圖4所示,本說明書中提供的計算機資料處理裝置用於實現2個256位數的乘法資料處理,所述裝置可以包括:資料拆分模組41、資料處理模組42,其中:
資料拆分模組41,可以用於將乘數a和被乘數b由高位到低位分別拆分成4個64位數,分別獲得拆分後乘數和拆分後被乘數,所述拆分後乘數包括:a[3]、a[2]、a[1]、a[0],所述拆分後被乘數包括:b[3]、b[2]、b[1]、b[0];
資料處理模組42,可以用於將所述拆分後乘數和所述拆分後被乘數讀取到暫存器中,並按照預設規則將所述拆分後乘數和所述拆分後被乘數進行相乘處理,獲得目標資料的乘法處理結果;
其中,所述預設規則包括:
所述拆分後乘數和所述拆分後被乘數被分為七組資料對,第一組資料對包括:a[0]b[0],第二組資料對包括:a[1]b[0]、a[0]b[1],第三組資料對包括:a[2]b[0]、a[1]b[1]、a[0]b[2],第四組資料對包括:a[3]b[0]、a[2]b[1]、a[1]b[2]、a[0]b[3],第五組資料對包括:a[3]b[1]、a[2]b[2]、a[1]b[3],第六組資料對包括:a[3]b[2]、a[2]b[3],第七組資料對包括:a[3]b[3];
逐個計算所述第一組資料對到所述第七組資料對的乘法結果,對每組內的資料對的乘法結果進行組內累加,所述組內累加包括:在同一組資料對中,每計算一個資料對的乘法結果,將計算出的乘法結果與組內的上一個資料對的乘法結果進行組內累加,將同一組內的資料對的最終累加結果的低64位保存至內部記憶體,獲得相應組資料對的剩餘累加結果,並釋放對應的暫存器;
各組資料對的第一個資料對的乘法結果與上一組資料對的剩餘累加結果相累加,再與下一個資料對的乘法結果累加,直至獲得第七組資料中資料對的乘法結果累加結束,將所述第七組資料中資料對對應的累加結果保存至內部記憶體中,獲得所述目標資料的乘法處理結果。
本說明書實施例提供的計算機資料處理裝置,實現了256比特乘法運算,將2個256位資料拆分成64位數,再對拆分後的資料按照預設規則進行計算。並且在整個計算過程中,逐個計算各組資料對的乘法結果,按組對各組資料對的乘法結果進行累加,各組資料對的乘法結果累加結束後,即將累加結果的低64為儲存在內部記憶體中,釋放對應的暫存器。即乘即累加,一組累加結束即釋放低64位暫存器的運算方式,可以實現占用較少的暫存器,使得整個運算過程可以僅僅存取暫存器,不需要存取高速存取和內部記憶體,提高了資料處理的效率,實現了256比特乘法的快速運算。
在上述實施例的基礎上,本說明書一些實施例中,所述資料處理模組具體用於:
在對各組資料對的乘法結果進行累加時,釋放儲存各資料對的乘法結果的暫存器,並將累加結果保存在3個暫存器中。
本說明書實施例,即乘即累加,一組累加結束即釋放低64位暫存器的運算方式,確保了整個計算過程占用的暫存器最少。
在上述實施例的基礎上,本說明書一些實施例中,所述裝置應用於64位計算機操作系統中。
本說明書實施例利用64位操作系統進行256比特乘法的運算,可以提供更多的暫存器,使得在資料處理過程中,不需要存取高速存取和內部記憶體,提高資料處理的效率,快速實現256比特乘法。
圖5是本說明書又一個實施例中計算機資料處理裝置的結構示意圖,如圖5所示, 在上述實施例的基礎上,本說明書一些實施例中,所述裝置還包括所述裝置還包括暫存器準備模組51用於:
從所述64位計算機操作系統的暫存器RBX、RBP、R12、R13、R14、R15中任意選取4暫存器,將選取出的暫存器的值保存到內部記憶體中;
在計算出所述目標乘法結果後,從內部記憶體中獲取保存的所述選取出的暫存器的值,恢復所述選取出的暫存器的值。
本說明書實施例,在計算出所述目標乘法結果後,即完成256比特乘法的運算後,從內部記憶體中獲取保存的選取出的4個暫存器的值,利用保存的選取出的暫存器的值,恢復選取出的暫存器的值,確保了函數的準確運行,提高資料處理的準確性。
在上述實施例的基礎上,本說明書一些實施例中,所述暫存器準備模組還用於:
從所述64位計算機操作系統中選取暫存器RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R11,與所述選取出的暫存器均用於資料處理過程中的資料儲存。
本說明書實施例可以優先選擇RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R119個暫存器,可以在計算結束後不必恢復該9個暫存器的值,只需要恢復從RBX、RBP、R12、R13、R14、R156個暫存器中選取出的4個暫存器。減少了資料處理步驟,提高資料處理效率。
需要說明的,上述所述的裝置根據方法實施例的描述還可以包括其他的實施方式。具體的實現方式可以參照上述對應的方法實施例的描述,在此不作一一贅述。
本說明書實施例還提供一種計算機資料處理設備,包括:至少一個64位處理器、用於儲存處理器可執行64位指令的記憶體以及至少13個64位暫存器,所述處理器執行所述64位指令時實現上述實施例中計算機資料處理方法,如:
將乘數a和被乘數b由高位到低位拆分成4個64位數,分別獲得拆分後乘數和拆分後被乘數,所述拆分後乘數包括:a[3]、a[2]、a[1]、a[0],所述拆分後被乘數包括:b[3]、b[2]、b[1]、b[0];
將所述拆分後乘數和所述拆分後被乘數讀取到暫存器中,並按照預設規則將所述拆分後乘數和所述拆分後被乘數進行相乘處理,獲得目標乘法結果;
其中,所述預設規則包括:
所述拆分後乘數和所述拆分後被乘數被分為七組資料對,第一組資料對包括:a[0]b[0],第二組資料對包括:a[1]b[0]、a[0]b[1],第三組資料對包括:a[2]b[0]、a[1]b[1]、a[0]b[2],第四組資料對包括:a[3]b[0]、a[2]b[1]、a[1]b[2]、a[0]b[3],第五組資料對包括:a[3]b[1]、a[2]b[2]、a[1]b[3],第六組資料對包括:a[3]b[2]、a[2]b[3],第七組資料對包括:a[3]b[3];
計算所述第一組資料對的乘法結果,將獲得的所述第一組資料對的乘法結果的低64位保存至內部記憶體,並釋放對應的暫存器;
逐個計算所述第二組資料對到所述第七組資料對的乘法結果,按組對資料對的乘法結果進行累加,每計算一個資料對的乘法結果,將計算出的乘法結果與上一個資料對的乘法結果進行累加,將各組資料對的最終累加結果的低64位保存至內部記憶體,獲得各組資料對的剩餘累加結果,並釋放對應的暫存器;
其中,各組資料對的第一個資料對的乘法結果與上一組資料對的剩餘累加結果相累加,再與下一個資料對的乘法結果累加,直至獲得第七組資料中資料對的乘法結果累加結束,將所述第七組資料中資料對對應的累加結果保存至內部記憶體中,獲得所述目標乘法結果。
需要說明的,上述所述的處理設備根據方法實施例的描述還可以包括其他的實施方式。具體的實現方式可以參照相關方法實施例的描述,在此不作一一贅述。
本說明書提供的計算機資料處理裝置或處理設備,也可以應用在多種資料分析處理系統中。所述系統或裝置或處理設備可以包括上述實施例中任意一個計算機資料處理裝置。所述的系統或裝置或處理設備可以為單獨的伺服器,也可以包括使用了本說明書的一個或多個所述方法或一個或多個實施例裝置的伺服器集群、系統(包括分散式系統)、軟體(應用程式)、實際操作裝置、邏輯閘電路裝置、量子計算機等並結合必要的實施硬體的終端裝置。所述核對差異資料的檢測系統可以包括至少一個處理器以及儲存計算機可執行指令的記憶體,所述處理器執行所述指令時實現上述任意一個或者多個實施例中所述方法的步驟。
本說明書實施例所提供的方法實施例可以在行動終端、計算機終端、伺服器或者類似的運算裝置中執行。以運行在伺服器上為例,圖6是本說明書一個實施例中計算機資料處理伺服器的硬體結構方塊圖,該伺服器可以是上述實施例中的計算機資料處理裝置或計算機資料處理設備。如圖6所示,伺服器10可以包括一個或多個(圖中僅示出一個)處理器100(處理器100可以包括但不限於微處理器MCU或可程式化邏輯裝置FPGA等的處理裝置)、用於儲存資料的記憶體200、以及用於通訊功能的傳輸模組300。本鄰域普通技術人員可以理解,圖6所示的結構僅為示意,其並不對上述電子裝置的結構造成限定。例如,伺服器10還可包括比圖6中所示更多或者更少的組件,例如還可以包括其他的處理硬體,如資料庫或多級高速存取、GPU,或者具有與圖6所示不同的配置。
記憶體200可用於儲存應用軟體的軟體程式以及模組,如本說明書實施例中的計算機資料處理方法對應的程式指令/模組,處理器100透過運行儲存在記憶體200內的軟體程式以及模組,從而執行各種功能應用程式以及資料處理。記憶體200可包括高速隨機記憶體,還可包括非揮發性記憶體,如一個或者多個磁性儲存裝置、快閃記憶體、或者其他非揮發性固態記憶體。在一些實例中,記憶體200可進一步包括相對於處理器100遠端設置的記憶體,這些遠端記憶體可以透過網路連接至計算機終端。上述網路的實例包括但不限於網際網路、企業內部網、局域網、行動通訊網及其組合。
傳輸模組300用於經由一個網路接收或者發送資料。上述的網路具體實例可包括計算機終端的通訊供應商提供的無線網路。在一個實例中,傳輸模組300包括一個網路介面控制器(Network Interface Controller,NIC),其可透過基地台與其他網路設備相連從而可與網際網路進行通訊。在一個實例中,傳輸模組300可以為射頻(Radio Frequency,RF)模組,其用於透過無線方式與網際網路進行通訊。
上述對本說明書特定實施例進行了描述。其它實施例在所附請求項書的範圍內。在一些情况下,在請求項書中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在圖式中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多工處理和並行處理也是可以的或者可能是有利的。
本說明書提供的上述實施例所述的方法或裝置可以透過計算機程式實現業務邏輯並記錄在儲存媒體上,所述的儲存媒體可以計算機讀取並執行,實現本說明書實施例所描述方案的效果。
所述儲存媒體可以包括用於儲存資訊的物理裝置,通常是將資訊數位化後再以利用電、磁或者光學等方式的媒體加以儲存。所述儲存媒體有可以包括:利用電能方式儲存資訊的裝置如,各式記憶體,如RAM、ROM等;利用磁能方式儲存資訊的裝置如,硬碟、軟碟、磁帶、磁晶記憶體、磁泡記憶體、U碟;利用光學方式儲存資訊的裝置如,CD或DVD。當然,還有其他方式的可讀儲存媒體,例如量子記憶體、石墨烯記憶體等等。
本說明書實施例提供的上述計算機資料處理方法或裝置可以在計算機中由處理器執行相應的程式指令來實現,如使用windows操作系統的c++語言在PC端實現、linux系統實現,或其他例如使用android、iOS系統程式設計語言在智慧型終端實現,以及基於量子計算機的處理邏輯實現等。
需要說明的是說明書上述所述的裝置、計算機儲存媒體、系統根據相關方法實施例的描述還可以包括其他的實施方式,具體的實現方式可以參照對應方法實施例的描述,在此不作一一贅述。
本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參與即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於硬體+程式類實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參與方法實施例的部分說明即可。
本說明書實施例並不局限於必須是符合行業通訊標準、標準計算機資料處理和資料儲存規則或本說明書一個或多個實施例所描述的情况。某些行業標準或者使用自定義方式或實施例描述的實施基礎上略加修改後的實施方案也可以實現上述實施例相同、等同或相近、或變形後可預料的實施效果。應用這些修改或變形後的資料獲取、儲存、判斷、處理方式等獲取的實施例,仍然可以屬於本說明書實施例的可選實施方案範圍之內。
在20世紀90年代,對於一個技術的改進可以很明顯地區分是硬體上的改進(例如,對二極體、電晶體、開關等電路結構的改進)還是軟體上的改進(對於方法流程的改進)。然而,隨著技術的發展,當今的很多方法流程的改進已經可以視為硬體電路結構的直接改進。設計人員幾乎都透過將改進的方法流程程式化到硬體電路中來得到相應的硬體電路結構。因此,不能說一個方法流程的改進就不能用硬體實體模組來實現。例如,可程式化邏輯裝置(Programmable Logic Device, PLD)(例如現場可程式化閘陣列(Field Programmable Gate Array,FPGA))就是這樣一種積體電路,其邏輯功能由使用者對裝置程式化來確定。由設計人員自行程式化來把一個數位系統“積體”在一片PLD上,而不需要請晶片製造廠商來設計和製作專用的積體電路晶片。而且,如今,取代手工地製作積體電路晶片,這種程式化也多半改用“邏輯編譯器(logic compiler)”軟體來實現,它與程式開發撰寫時所用的軟體編譯器相類似,而要編譯之前的原始碼也得用特定的程式化語言來撰寫,此稱之為硬體描述語言(Hardware Description Language,HDL),而HDL也並非僅有一種,而是有許多種,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)與Verilog。本領域技術人員也應該清楚,只需要將方法流程用上述幾種硬體描述語言稍作邏輯程式化並程式化到積體電路中,就可以很容易得到實現該邏輯方法流程的硬體電路。
控制器可以按任何適當的方式實現,例如,控制器可以採取例如微處理器或處理器以及儲存可由該(微)處理器執行的計算機可讀程式碼(例如軟體或韌體)的計算機可讀媒體、邏輯閘、開關、專用積體電路(Application Specific Integrated Circuit,ASIC)、可程式化邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限於以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,記憶體控制器還可以被實現為記憶體的控制邏輯的一部分。本領域技術人員也知道,除了以純計算機可讀程式碼方式實現控制器以外,完全可以透過將方法步驟進行邏輯程式化來使得控制器以邏輯閘、開關、專用積體電路、可程式化邏輯控制器和嵌入微控制器等的形式來實現相同功能。因此這種控制器可以被認為是一種硬體部件,而對其內包括的用於實現各種功能的裝置也可以視為硬體部件內的結構。或者甚至,可以將用於實現各種功能的裝置視為既可以是實現方法的軟體模組又可以是硬體部件內的結構。
上述實施例闡明的系統、裝置、模組或單元,具體可以由計算機晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為計算機。具體的,計算機例如可以為個人計算機、膝上型計算機、車載人機互動設備、蜂巢式電話、相機電話、智慧型電話、個人數位助理、媒體播放器、導航設備、電子郵件設備、遊戲控制台、平板計算機、可穿戴設備或者這些設備中的任何設備的組合。
雖然本說明書一個或多個實施例提供了如實施例或流程圖所述的方法操作步驟,但基於常規或者無進步性的手段可以包括更多或者更少的操作步驟。實施例中列舉的步驟順序僅僅為衆多步驟執行順序中的一種方式,不代表唯一的執行順序。在實際中的裝置或終端產品執行時,可以按照實施例或者圖式所示的方法順序執行或者並行執行(例如並行處理器或者多緒處理的環境,甚至為分散式資料處理環境)。術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、產品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、產品或者設備所固有的要素。在沒有更多限制的情况下,並不排除在包括所述要素的過程、方法、產品或者設備中還存在另外的相同或等同要素。第一,第二等詞語用來表示名稱,而並不表示任何特定的順序。
為了描述的方便,描述以上裝置時以功能分為各種模組分別描述。當然,在實施本說明書一個或多個時可以把各模組的功能在同一個或多個軟體和/或硬體中實現,也可以將實現同一功能的模組由多個子模組或子單元的組合實現等。以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以積體到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是透過一些介面,裝置或單元的間接耦合或通訊連接,可以是電性、機械或其它的形式。
本發明是參照根據本發明實施例的方法、裝置(系統)、和計算機程式產品的流程圖和/或方塊圖來描述的。應理解可由計算機程式指令實現流程圖和/或方塊圖中的每一流程和/或方塊、以及流程圖和/或方塊圖中的流程和/或方塊的結合。可提供這些計算機程式指令到通用計算機、專用計算機、嵌入式處理機或其他可程式化資料處理設備的處理器以產生一個機器,使得透過計算機或其他可程式化資料處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的裝置。
這些計算機程式指令也可儲存在能引導計算機或其他可程式化資料處理設備以特定方式工作的計算機可讀記憶體中,使得儲存在該計算機可讀記憶體中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能。
這些計算機程式指令也可裝載到計算機或其他可程式化資料處理設備上,使得在計算機或其他可程式化設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可程式化設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的步驟。
在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和內部記憶體。
內部記憶體可能包括計算機可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非揮發性內部記憶體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。內部記憶體是計算機可讀媒體的示例。
計算機可讀媒體包括永久性和非永久性、可行動和非可行動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是計算機可讀指令、資料結構、程式的模組或其他資料。計算機的儲存媒體的例子包括,但不限於相變內部記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可程式化唯讀記憶體(EEPROM)、快閃記憶體或其他內部記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存器、磁盒式磁帶,磁帶磁磁碟儲存器、石墨烯儲存器或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,計算機可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料訊號和載波。
本領域技術人員應明白,本說明書一個或多個實施例可提供為方法、系統或計算機程式產品。因此,本說明書一個或多個實施例可採用完全硬體實施例、完全軟體實施例或結合軟體和硬體方面的實施例的形式。而且,本說明書一個或多個實施例可採用在一個或多個其中包含有計算機可用程式碼的計算機可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的計算機程式產品的形式。
本說明書一個或多個實施例可以在由計算機執行的計算機可執行指令的一般上下文中描述,例如程式模組。一般地,程式模組包括執行特定任務或實現特定抽象資料類型的例程、程式、對象、組件、資料結構等等。也可以在分散式計算環境中實踐本說明書一個或多個實施例,在這些分散式計算環境中,由透過通訊網路而被連接的遠端處理設備來執行任務。在分散式計算環境中,程式模組可以位於包括儲存設備在內的本地和遠端計算機儲存媒體中。
本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參與即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於系統實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參與方法實施例的部分說明即可。在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特徵、結構、材料或者特點包含於本說明書的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特徵、結構、材料或者特點可以在任一個或多個實施例或示例中以合適的方式結合。此外,在不相互矛盾的情况下,本領域的技術人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特徵進行結合和組合。
以上所述僅為本說明書一個或多個實施例的實施例而已,並不用於限制本說明書一個或多個實施例。對於本領域技術人員來說,本說明書一個或多個實施例可以有各種更改和變化。凡在本說明書的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在請求項範圍之內。
102:步驟
104:步驟
10:伺服器
41:資料拆分模組
42:資料處理模組
51:暫存器準備模組
100:處理器
200:非揮發性記憶體
300:傳輸模組
a:乘數
b:被乘數
為了更清楚地說明本說明書實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式僅僅是本說明書中記載的一些實施例,對於本領域普通技術人員來講,在不付出進步性勞動性的前提下,還可以根據這些圖式獲得其他的圖式。
[圖1]是本說明書一個實施例中計算機資料處理方法的流程示意圖;
[圖2]是本說明書實施例中資料對分組示意圖;
[圖3]是本說明書一個實施例中256比特乘法運算的流程示意圖;
[圖4]是本說明書提供的計算機資料處理裝置一個實施例的模組結構示意圖;
[圖5]是本說明書又一個實施例中計算機資料處理裝置的結構示意圖;
[圖6]是本說明書一個實施例中計算機資料處理伺服器的硬體結構方塊圖。
Claims (11)
- 一種計算機資料處理方法,用於實現2個256位數的乘法資料處理,該方法包括: 將乘數a和被乘數b由高位到低位分別拆分成4個64位數,分別獲得拆分後乘數和拆分後被乘數,該拆分後乘數包括:a[3]、a[2]、a[1]、a[0],該拆分後被乘數包括:b[3]、b[2]、b[1]、b[0]; 將該拆分後乘數和該拆分後被乘數讀取到暫存器中,並按照預設規則將該拆分後乘數和該拆分後被乘數進行相乘處理,獲得目標資料的乘法處理結果; 其中,該預設規則包括: 該拆分後乘數和該拆分後被乘數被分為七組資料對,第一組資料對包括:a[0]b[0],第二組資料對包括:a[1]b[0]、a[0]b[1],第三組資料對包括:a[2]b[0]、a[1]b[1]、a[0]b[2],第四組資料對包括:a[3]b[0]、a[2]b[1]、a[1]b[2]、a[0]b[3],第五組資料對包括:a[3]b[1]、a[2]b[2]、a[1]b[3],第六組資料對包括:a[3]b[2]、a[2]b[3],第七組資料對包括:a[3]b[3]; 逐個計算該第一組資料對到該第七組資料對的乘法結果,對每組內的資料對的乘法結果進行組內累加,該組內累加包括:在同一組資料對中,每計算一個資料對的乘法結果,將計算出的乘法結果與組內的上一個資料對的乘法結果進行組內累加,將同一組內的資料對的最終累加結果的低64位保存至內部記憶體,獲得相應組資料對的剩餘累加結果,並釋放對應的暫存器; 各組資料對的第一個資料對的乘法結果與上一組資料對的剩餘累加結果相累加,再與下一個資料對的乘法結果累加,直至獲得第七組資料中資料對的乘法結果累加結束,將該第七組資料中資料對對應的累加結果保存至內部記憶體中,獲得該目標資料的乘法處理結果。
- 如請求項1所述的方法,該方法還包括: 在對各組資料對的乘法結果進行累加時,釋放儲存各資料對的乘法結果的暫存器,並將累加結果保存在3個暫存器中。
- 如請求項1所述的方法,該方法應用於64位計算機操作系統中。
- 如請求項3所述的方法,該方法還包括: 從該64位計算機操作系統的暫存器RBX、RBP、R12、R13、R14、R15中任意選取4暫存器,將選取出的暫存器的值保存到內部記憶體中; 在計算出該目標乘法結果後,從內部記憶體中獲取保存的該選取出的暫存器的值,恢復該選取出的暫存器的值。
- 如請求項4所述的方法,該方法還包括: 從該64位計算機操作系統中選取暫存器RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R11,與該選取出的暫存器均用於資料處理過程中的資料儲存。
- 一種計算機資料處理裝置,用於實現2個256位數的乘法資料處理,該裝置包括: 資料拆分模組,用於將乘數a和被乘數b由高位到低位分別拆分成4個64位數,分別獲得拆分後乘數和拆分後被乘數,該拆分後乘數包括:a[3]、a[2]、a[1]、a[0],該拆分後被乘數包括:b[3]、b[2]、b[1]、b[0]; 資料處理模組,用於將該拆分後乘數和該拆分後被乘數讀取到暫存器中,並按照預設規則將該拆分後乘數和該拆分後被乘數進行相乘處理,獲得目標資料的乘法處理結果; 其中,該預設規則包括: 該拆分後乘數和該拆分後被乘數被分為七組資料對,第一組資料對包括:a[0]b[0],第二組資料對包括:a[1]b[0]、a[0]b[1],第三組資料對包括:a[2]b[0]、a[1]b[1]、a[0]b[2],第四組資料對包括:a[3]b[0]、a[2]b[1]、a[1]b[2]、a[0]b[3],第五組資料對包括:a[3]b[1]、a[2]b[2]、a[1]b[3],第六組資料對包括:a[3]b[2]、a[2]b[3],第七組資料對包括:a[3]b[3]; 逐個計算該第一組資料對到該第七組資料對的乘法結果,對每組內的資料對的乘法結果進行組內累加,該組內累加包括:在同一組資料對中,每計算一個資料對的乘法結果,將計算出的乘法結果與組內的上一個資料對的乘法結果進行組內累加,將同一組內的資料對的最終累加結果的低64位保存至內部記憶體,獲得相應組資料對的剩餘累加結果,並釋放對應的暫存器; 各組資料對的第一個資料對的乘法結果與上一組資料對的剩餘累加結果相累加,再與下一個資料對的乘法結果累加,直至獲得第七組資料中資料對的乘法結果累加結束,將該第七組資料中資料對對應的累加結果保存至內部記憶體中,獲得該目標資料的乘法處理結果。
- 如請求項6所述的裝置,該資料處理模組具體用於: 在對各組資料對的乘法結果進行累加時,釋放儲存各資料對的乘法結果的暫存器,並將累加結果保存在3個暫存器中。
- 如請求項6所述的裝置,該裝置應用於64位計算機操作系統中。
- 如請求項8所述的裝置,該裝置還包括暫存器準備模組用於: 從該64位計算機操作系統的暫存器RBX、RBP、R12、R13、R14、R15中任意選取4暫存器,將選取出的暫存器的值保存到內部記憶體中; 在計算出該目標乘法結果後,從內部記憶體中獲取保存的該選取出的暫存器的值,恢復該選取出的暫存器的值。
- 如請求項8所述的裝置,該暫存器準備模組還用於: 從該64位計算機操作系統中選取暫存器RAX、RCX、RDX、RSI、RDI、R8、R9、R10、R11,與該選取出的暫存器均用於資料處理過程中的資料儲存。
- 一種計算機設備,包括:至少一個64位處理器、用於儲存處理器可執行64位指令的記憶體以及至少13個64位暫存器,該處理器執行該64位指令時實現請求項1-5任一項所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910349581.2 | 2019-04-28 | ||
CN201910349581.2A CN110262773B (zh) | 2019-04-28 | 2019-04-28 | 一种计算机数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202040354A TW202040354A (zh) | 2020-11-01 |
TWI731543B true TWI731543B (zh) | 2021-06-21 |
Family
ID=67913934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109100610A TWI731543B (zh) | 2019-04-28 | 2020-01-08 | 計算機資料處理方法及裝置 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN110262773B (zh) |
TW (1) | TWI731543B (zh) |
WO (1) | WO2020220743A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262773B (zh) * | 2019-04-28 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种计算机数据处理方法及装置 |
US11579843B2 (en) * | 2020-06-15 | 2023-02-14 | Micron Technology, Inc. | Bit string accumulation in multiple registers |
CN113934678A (zh) * | 2020-06-29 | 2022-01-14 | 中科寒武纪科技股份有限公司 | 一种计算装置、集成电路芯片、板卡、设备和计算方法 |
CN112765936B (zh) * | 2020-12-31 | 2024-02-23 | 出门问问(武汉)信息科技有限公司 | 一种基于语言模型进行运算的训练方法及装置 |
US11996137B2 (en) * | 2021-05-21 | 2024-05-28 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compute in memory (CIM) memory array |
CN114911832B (zh) * | 2022-05-19 | 2023-06-23 | 芯跳科技(广州)有限公司 | 一种数据处理方法及装置 |
CN116126750B (zh) * | 2023-02-24 | 2023-08-22 | 之江实验室 | 一种基于硬件特性的数据处理的方法及装置 |
CN116225366B (zh) * | 2023-03-06 | 2024-04-05 | 开源网安物联网技术(武汉)有限公司 | 应用于嵌入式流水cpu内核的乘法指令扩展方法及装置 |
CN117896067B (zh) * | 2024-03-13 | 2024-07-16 | 杭州金智塔科技有限公司 | 适用于国密sm2算法的并行模约减方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW501344B (en) * | 2001-03-06 | 2002-09-01 | Nat Science Council | Complex-valued multiplier-and-accumulator |
TW200605502A (en) * | 2004-07-26 | 2006-02-01 | Min-An Song | Booth multiplier with fixed width |
EP2037357A2 (en) * | 2003-04-25 | 2009-03-18 | Samsung Electronics Co., Ltd. | Montgomery modular multiplier and method thereof using carry save addition |
TWI438678B (zh) * | 2007-08-10 | 2014-05-21 | Inside Contactless S A | 大數量乘法之方法、系統及電腦程式產品 |
CN103942028A (zh) * | 2014-04-15 | 2014-07-23 | 中国科学院数据与通信保护研究教育中心 | 应用在密码技术中的大整数乘法运算方法及装置 |
CN108351761A (zh) * | 2015-11-12 | 2018-07-31 | Arm有限公司 | 使用冗余表示的第一和第二操作数的乘法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567178A (zh) * | 2003-07-04 | 2005-01-19 | 中国科学院微电子中心 | 新型乘法器重构算法及电路 |
US20090248769A1 (en) * | 2008-03-26 | 2009-10-01 | Teck-Kuen Chua | Multiply and accumulate digital filter operations |
CN101534125B (zh) * | 2009-04-24 | 2012-07-18 | 北京空间机电研究所 | 一种超长数据变长编码合成*** |
CN102750150B (zh) * | 2012-06-14 | 2015-05-13 | 中国科学院软件研究所 | 基于x86架构的稠密矩阵乘法汇编代码自动生成方法 |
CN103631660A (zh) * | 2013-09-23 | 2014-03-12 | 中国科学院数据与通信保护研究教育中心 | 在gpu中进行大整数计算时的存储资源分配方法及装置 |
CN104933689B (zh) * | 2014-03-19 | 2018-01-16 | 炬芯(珠海)科技有限公司 | 一种图像信号处理方法及装置 |
CN108733347B (zh) * | 2017-04-20 | 2021-01-29 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法及装置 |
CN109284083A (zh) * | 2018-09-14 | 2019-01-29 | 北京探境科技有限公司 | 一种乘法运算装置及方法 |
CN110262773B (zh) * | 2019-04-28 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种计算机数据处理方法及装置 |
-
2019
- 2019-04-28 CN CN201910349581.2A patent/CN110262773B/zh active Active
-
2020
- 2020-01-07 WO PCT/CN2020/070620 patent/WO2020220743A1/zh active Application Filing
- 2020-01-08 TW TW109100610A patent/TWI731543B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW501344B (en) * | 2001-03-06 | 2002-09-01 | Nat Science Council | Complex-valued multiplier-and-accumulator |
EP2037357A2 (en) * | 2003-04-25 | 2009-03-18 | Samsung Electronics Co., Ltd. | Montgomery modular multiplier and method thereof using carry save addition |
TW200605502A (en) * | 2004-07-26 | 2006-02-01 | Min-An Song | Booth multiplier with fixed width |
TWI438678B (zh) * | 2007-08-10 | 2014-05-21 | Inside Contactless S A | 大數量乘法之方法、系統及電腦程式產品 |
CN103942028A (zh) * | 2014-04-15 | 2014-07-23 | 中国科学院数据与通信保护研究教育中心 | 应用在密码技术中的大整数乘法运算方法及装置 |
CN108351761A (zh) * | 2015-11-12 | 2018-07-31 | Arm有限公司 | 使用冗余表示的第一和第二操作数的乘法 |
Also Published As
Publication number | Publication date |
---|---|
CN110262773B (zh) | 2020-08-04 |
WO2020220743A1 (zh) | 2020-11-05 |
CN110262773A (zh) | 2019-09-20 |
TW202040354A (zh) | 2020-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI731543B (zh) | 計算機資料處理方法及裝置 | |
JP6804668B2 (ja) | ブロックデータ検証方法および装置 | |
US8903882B2 (en) | Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
TWI686712B (zh) | 基於混淆電路的數據統計方法、裝置以及設備 | |
CN103427997A (zh) | 一种生成数字签名的方法及装置 | |
CN103226461B (zh) | 一种用于电路的蒙哥马利模乘方法及其电路 | |
Kudithi | An efficient hardware implementation of the elliptic curve cryptographic processor over prime field | |
CN103793199A (zh) | 一种支持双域的快速rsa密码协处理器 | |
Meher et al. | Low-Latency, Low-Area, and Scalable Systolic-Like Modular Multipliers for $ GF (2^{m}) $ Based on Irreducible All-One Polynomials | |
Seo et al. | Binary and prime field multiplication for public key cryptography on embedded microprocessors | |
US10782933B2 (en) | Computer data processing method and apparatus for large number operations | |
CN101021777B (zh) | 基于除数(2n-1)的有效求模操作运算 | |
RU2598781C1 (ru) | Способ линейного преобразования (варианты) | |
CN114168106A (zh) | 基于卷积神经网络的数据处理方法、装置及设备 | |
CN103765493B (zh) | 数字平方计算机实现的方法和设备 | |
US11029921B2 (en) | Performing processing using hardware counters in a computer system | |
Baktır et al. | A state-of-the-art elliptic curve cryptographic processor operating in the frequency domain | |
CN115834018A (zh) | 一种保护隐私的多方数据处理方法、***和设备 | |
CN115276952A (zh) | 一种隐私数据处理方法及装置 | |
WO2017037729A1 (en) | Concurrent architecture of vedic multiplier-an accelerator scheme for high speed computing | |
CN114510217A (zh) | 处理数据的方法、装置和设备 | |
CN106569778B (zh) | 一种数据处理的方法及电子设备 | |
CN104767544A (zh) | 一种实现解扰解扩的方法和矢量运算器 | |
Schramm et al. | A Vendor‐Neutral Unified Core for Cryptographic Operations in GF (p) and GF (2m) Based on Montgomery Arithmetic |