TW202141302A - 執行哈希算法的電路、計算晶片、數據處理設備和方法 - Google Patents
執行哈希算法的電路、計算晶片、數據處理設備和方法 Download PDFInfo
- Publication number
- TW202141302A TW202141302A TW110125266A TW110125266A TW202141302A TW 202141302 A TW202141302 A TW 202141302A TW 110125266 A TW110125266 A TW 110125266A TW 110125266 A TW110125266 A TW 110125266A TW 202141302 A TW202141302 A TW 202141302A
- Authority
- TW
- Taiwan
- Prior art keywords
- register
- stage
- expansion
- extended
- operation stage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
- G06Q20/4014—Identity check for transactions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Power Engineering (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
Abstract
本公開涉及執行哈希算法的電路、計算晶片、數據處理設備和方法。一種用於執行哈希算法的電路包括:以流水線結構佈置的多個運算級,每個包括用於儲存當前運算級的擴展數據的第0至第15擴展寄存器;和多個擴展數據運算邏輯模組,每個設置在包括第一運算級和其後的第二運算級的相鄰兩個運算級之間,並包括用於基於第一運算級的第1擴展寄存器中的擴展數據計算第二運算級的第0擴展寄存器中的擴展數據的第一子模組和用於基於第一運算級的第0擴展寄存器中的擴展數據計算第二運算級的第15擴展寄存器中的擴展數據的第二子模組,其中第二運算級的第(i-1)擴展寄存器中的擴展數據是第一運算級的第i擴展寄存器中的擴展數據,其中2≤i≤15且i為整數。
Description
本申請是以CN申請號為202011509432.7,申請日為2020年12月18日的申請為基礎,並主張其優先權,該CN申請的公開內容在此作為整體引入本申請中。
本公開總體而言涉及用於執行哈希算法的電路、計算晶片、數據處理設備(例如,加密貨幣礦機)和相關方法。
比特幣是一種P2P(Peer-to-Peer)形式的虛擬加密數位貨幣,其概念最初由中本聰在2008年11月1日提出,並於2009年1月3日正式誕生。比特幣的獨特之處在於,它不依靠特定貨幣機構發行,而是依據特定算法通過大量運算來產生。比特幣交易使用整個P2P網絡中眾多節點構成的分布式數據庫來確認並記錄所有的交易行為,並使用密碼學設計來確保安全性。從密碼學的角度而言,比特幣是基於SHA-256哈希算法的工作量證明POW(proof of work),其交易完整性取決於SHA-256的碰撞性和前映像阻力。哈希算法是一種將可變長度的數據作為輸入並產生固定長度的哈希值作為輸出的算法,其本質是對信息的提煉。自1993年以來,美國標準與技術研究所先後設計並發佈了多個版本的安全哈希算法SHA(Secure Hash Algorithm),SHA-256正是其中一種哈希長度為256位的安全哈希算法。
使用礦機來進行比特幣挖礦的核心是根據礦機計算SHA-256的運算能力來獲得獎勵。對於礦機而言,晶片尺寸、晶片運行速度和晶片功耗是決定礦機性能的至關重要的三個因素,其中,晶片尺寸決定晶片成本,晶片運行的速度決定礦機運行速度,即算力,晶片功耗決定耗電程度,即挖礦成本。在實際應用中,衡量礦機最為重要的性能指標是單位算力所消耗的功耗,即功耗算力比。為了提高安全性,在比特幣協議中,要進行兩次SHA-256。因此,對於比特幣礦機而言,最重要的就是以較低的功耗算力比來實現哈希算法SHA-256。
根據本公開的第一方面,提供了一種用於執行哈希算法的電路,包括:輸入模組,被配置為接收數據;以及運算模組,被配置為基於接收到的數據計算哈希值,該運算模組包括:以流水線結構佈置的多個運算級,該多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據;以及多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在該多個運算級中的相應的相鄰兩個運算級之間,該相鄰兩個運算級包括第一運算級和在第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括:第一子模組,被配置為基於第一運算級的第1擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據;以及第二子模組,被配置為基於第一運算級的第0擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據,其中,用於儲存到第二運算級的第(i-1)擴展寄存器中的擴展數據是第一運算級的第i擴展寄存器中儲存的擴展數據,其中2≤i≤15且i為整數。
根據本公開的第二方面,提供了一種用於執行哈希算法的電路,包括:輸入模組,被配置為接收數據;以及運算模組,被配置為基於接收到的數據計算哈希值,該運算模組包括:以流水線結構佈置的多個運算級,該多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,附加寄存器被配置為儲存用於計算擴展數據的中間數據;以及多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在所述多個運算級中的相應的相鄰兩個運算級之間,該相鄰兩個運算級包括第一運算級和在第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括:第一子模組,被配置為基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器中的中間數據;以及第二子模組,被配置為基於第一運算級的附加寄存器中儲存的中間數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據,其中,用於儲存到第二運算級的第(i-1)擴展寄存器中的擴展數據是第一運算級的第i擴展寄存器中儲存的擴展數據,其中1≤i≤15且i為整數。
根據本公開的第三方面, 提供了一種計算晶片,其包括如以上方面所述的電路。
根據本公開的第四方面,提供了一種數據處理設備,其包括一個或多個如以上方面所述的計算晶片。
根據本公開的第五方面,提供了一種在用於執行哈希算法的電路中計算擴展數據的方法,該電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,該運算模組包括以流水線結構佈置的多個運算級,該多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,該方法包括:對於該多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級:基於第一運算級的第1擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據; 基於第一運算級的第0擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;以及將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-1)擴展寄存器中的擴展數據,其中2≤i≤15且i為整數。
根據本公開的第六方面,提供了一種在用於執行哈希算法的電路中計算擴展數據的方法,該電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,該運算模組包括以流水線結構佈置的多個運算級,該多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,附加寄存器被配置為儲存用於計算擴展數據的中間數據,該方法包括:對於該多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級:基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器中的中間數據;基於第一運算級的附加寄存器中儲存的中間數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;以及將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-1)擴展寄存器中的擴展數據,其中1≤i≤15且i為整數。
通過以下參照圖式對本公開的示例性實施例的詳細描述,本公開的其它特徵及其優點將會變得更為清楚。
現在將參照圖式來詳細描述本公開的各種示例性實施例。應當注意,除非另外具體說明,否則在這些實施例中闡述的部件和步驟的相對佈置、數字表達式和數值不限制本公開的範圍。
以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本公開及其應用或使用的任何限制。本領域的技術人員將會理解,它們僅僅說明可以用來實施本公開的示例性方式,而不是窮盡的方式。
對於相關領域普通技術人員已知的技術、方法和設備可能不作詳細討論,但在適當情況下,所述技術、方法和設備應當被視為授權說明書的一部分。
為了更為清楚和直觀地呈現本公開的發明構思,下文中將簡要介紹SHA-256算法並以其作為哈希算法的代表示例來描述根據本公開的實施例的用於執行哈希算法的電路和相關方法。本領域技術人員將理解,根據本公開的實施例的用於執行哈希算法的電路和相關方法適用於任何哈希算法,甚至可以進一步應用到任何其它合適的電路和方法中,而不僅限於實現SHA-256算法。
圖1示出了用於執行SHA-256算法的示例性流水線結構的示意圖。SHA-256的輸入是最大長度小於264
位的數據,輸出是256位的數據摘要,即哈希值。輸入數據以512位的數據塊為單位進行處理。為了實現SHA-256算法,需要對於每個512位的數據塊要進行64輪重複運算,因此可以採用包括64個運算級的流水線結構來並行運算64組數據。如圖1所示,該流水線結構包括第0運算級至第63運算級,每個運算級包括用於儲存中間值的8個32位的壓縮寄存器A至H以及用於儲存擴展數據的16個32位的擴展寄存器R0
至R15
。第0運算級可以接收輸入的數據塊,並將其分成8個32位數據分別存入壓縮寄存器A至H中,然後對其進行運算處理並提供給第1運算級。之後,每個運算級對其接收到的前一運算級的運算結果進行運算並將自己的運算結果提供給後一運算級。最終在經過64個運算級的運算後,運算核可以輸出對輸入數據執行過一次SHA-256算法的哈希運算結果。
下面詳細討論SHA-256在每個運算級上進行的一輪運算的內部邏輯。在第t運算級上進行的第t輪運算由如下的運算式定義(t為整數且滿足0≤t≤63):
T1 = H + Σ1
(E) + Ch(E, F, G) + Kt
+ Wt
;
T2 = Σ0
(A) + Maj(A, B, C);
H = G;
G = F;
F = E;
E = D + T1;
D = C;
C = B;
B = A;
A = T1 + T2 ; (運算式1)
其中:
Ch(x, y, z)=(x AND y) ⊕ ((NOT x) AND z)
Maj(x, y, z)= (x AND y) ⊕ (x AND z) ⊕ (y AND z)
Σ0
(x)=ROTR2
(x) ⊕ ROTR13
(x) ⊕ ROTR22
(x)
Σ1
(x)=ROTR6
(x) ⊕ ROTR11
(x) ⊕ ROTR25
(x)
其中,ROTRn
(x)表示對32位的變量x循環右移n位;Wt
為一個32位字,從當前的256位輸入數據塊導出;Kt
為一個32位附加常數;+為模232
加;AND為32位按位與運算;NOT是取反的操作;⊕為互斥或運算。
接下來描述32位的字Wt
是如何從512位的數據塊導出的。Wt
可以按照以下運算式得出:
對於0 ≤ t ≤ 15:Wt
直接取自輸入的數據塊 ;
對於16 ≤ t ≤ 63:
Wt
=σ1
(Wt-2
) + Wt-7
+ σ0
(Wt-15
) + Wt-16
(運算式2)
其中:
σ0
(x)= ROTR7
(x) ⊕ ROTR18
(x) ⊕ SHR3
(x)
σ1
(x)= ROTR17
(x) ⊕ ROTR19
(x) ⊕ SHR10
(x)
其中,ROTRn
(x)表示對32位的變量x循環右移n位;SHRn
(x)表示對32位變量x向右移動n位,左邊填充0;⊕為互斥或運算;+為模232
加。
注意,以上Σ0
(x)、Σ1
(x)、σ0
(x)、σ1
(x)函數的公式是以SHA-256為示例給出的用於處理32位數據的具體形式,本領域技術人員知道在其它SHA算法(例如SHA-512等)乃至其它哈希算法中這些函數可以適應性地採用其它相應形式用於處理其它大小的數據(例如64位數據等)。
具體地,圖2示出了圖1中的流水線結構中的相鄰兩個運算級的擴展寄存器中的擴展數據之間的常規運算邏輯。需要使用每個運算級的擴展寄存器R0
、R1
、R9
和R14
中的擴展數據來計算要儲存在後一運算級的擴展寄存器R15
中的擴展數據,另外擴展寄存器R1
到R15
中的擴展數據可以直接移位至後一運算級的相應擴展寄存器R0
到R14
中。具體而言,第t+1運算級的擴展寄存器R15
中的擴展數據w15
’是通過三個加法器ADD1、ADD2、ADD3將第t運算級的擴展寄存器R0
中的擴展數據w0
、經σ0
運算器進行σ0
運算後的第t運算級的擴展寄存器R1
中的擴展數據σ0
(w1
)、第t運算級的擴展寄存器R9
中的擴展數據w9
、經σ1
運算器進行σ1
運算後的第t運算級的擴展寄存器R14
中的擴展數據σ1
(w14
)依次相加得到的,即w15
’=w0
+σ0
(w1
)+w9
+σ1
(w14
)。可以看到,從第t運算級的擴展寄存器R0
、R1
、R9
和R14
中的擴展數據w0
、w1
、w9
、w14
計算要儲存在後一運算級的擴展寄存器R15
中的擴展數據w15
’需要經歷的運算邏輯級數高達4級,這帶來了顯著的計算延時,限制了流水線結構的運算速度,進而難以實現較低的功耗算力比。
對此,本申請的發明人注意到,第t+1運算級的擴展寄存器R0
與第t運算級的擴展寄存器R1
二者之間存在直連關係,即第t運算級的擴展寄存器R1
中儲存的擴展數據被直接移位至第t+1運算級的擴展寄存器R0
。因此,本申請的發明人想到,可以利用擴展寄存器R0
、R1
的這一直連關係,將用於計算第t+2運算級的擴展寄存器R15
中要儲存的擴展數據的過程中涉及第t+1運算級的擴展寄存器R0
中的擴展數據(即第t運算級的擴展寄存器R1
中的擴展數據)的部分提前到與用於計算第t+1運算級的擴展寄存器R15
中要儲存的擴展數據的過程同時進行,並存入第t+1運算級的擴展寄存器R0
。這樣,可以在將用於計算第t+2運算級的擴展寄存器R15
中要儲存的擴展數據的過程進行拆解後,將拆解出的部分與用於計算第t+1運算級的擴展寄存器R15
中要儲存的擴展數據的過程並行地處理。通過並行處理,可以減少每輪運算中計算擴展數據所需要經歷的運算邏輯級數。
因此,本公開提供了具有改進的擴展數據運算邏輯模組的用於執行哈希算法的電路以及改進的在用於執行哈希算法的電路中計算擴展數據的方法,其能夠減少在相鄰運算級之間基於前一運算級的擴展數據計算後一運算級的擴展數據所需要經歷的運算邏輯級數,顯著提高了電路進而包含該電路的計算晶片的運算速度,從而便於實現更低的功耗算力比。
圖3示出了根據本公開的一些實施例的用於執行哈希算法的電路100的示意性方塊圖,其中箭頭表示數據傳遞方向。電路100可以包括輸入模組110和運算模組120。輸入模組110可以被配置為接收數據。運算模組120可以被配置為基於接收到的數據計算哈希值。運算模組120可以包括以流水線結構佈置的多個運算級120-0、…、120-63,每個運算級可以包括第0擴展寄存器R0
至第15擴展寄存器R15
,每個擴展寄存器可以被配置為儲存當前運算級的擴展數據。
應理解,雖然在圖式中將運算模組120描繪為包括64個運算級,但是如前面已經提到的,本文僅僅以用於執行SHA-256算法的電路作為非限制性示例,根據本公開的電路實際上可以適用於執行現在已知的或以後開發的適用於礦機的任何哈希算法(不限於SHA系列算法),並且可以包括任何合適數量的運算級。還應理解的是,實際的電路還可以具有附加的其它部件(諸如壓縮寄存器等),但是為了避免模糊本公開的要點,圖式沒有示出並且本文也沒有去討論這些其它部件。
通常,運算模組120的最前一個運算級120-0的第0擴展寄存器R0
至第15擴展寄存器R15
中儲存的擴展數據例如可以直接取自由輸入模組110接收的數據,而從運算級120-1開始的每個運算級的第0擴展寄存器R0
至第15擴展寄存器R15
中要儲存的擴展數據例如可以基於前一運算級的第0擴展寄存器R0
至第15擴展寄存器R15
中儲存的擴展數據確定。本公開主要討論的是如何基於前一運算級的第0擴展寄存器R0
至第15擴展寄存器R15
中儲存的擴展數據確定後一運算級的第0擴展寄存器R0
至第15擴展寄存器R15
中要儲存的擴展數據。
運算模組120還可以包括多個擴展數據運算邏輯模組130,每個擴展數據運算邏輯模組130設置在運算模組120的多個運算級120-0、…、120-63中的相應的相鄰兩個運算級之間。在本文中,可以將相鄰兩個運算級中在前的運算級稱為第一運算級並將相鄰兩個運算級中在後的運算級稱為第二運算級,注意“第一”和“第二”僅是用於區分而非限制性的。例如,如圖3所示,相鄰兩個運算級120-a、120-b之間設置有擴展數據運算邏輯模組130。每個擴展數據運算邏輯模組130可以包括第一子模組131和第二子模組132。
擴展數據運算邏輯模組130可以被配置用於基於第一運算級(例如,120-a)的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級(例如,120-b)的擴展寄存器中的擴展數據。第一子模組131可以被配置為基於第一運算級的第1擴展寄存器R1
中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0
中的擴展數據。第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。另外,用於儲存到第二運算級的第(i-1)擴展寄存器中的擴展數據可以是第一運算級的第i擴展寄存器中儲存的擴展數據,其中2≤i≤15且i為整數。也就是說,在電路100中,第二運算級的第0擴展寄存器R0
和第15擴展寄存器R15
中要儲存的擴展數據是通過第一運算級的擴展寄存器中儲存的擴展數據進行運算而得到的,而第二運算級的第1擴展寄存器R1
至第14擴展寄存器R14
中要儲存的擴展數據是通過將第一運算級的第2擴展寄存器R2
至第15擴展寄存器R15
中的每個擴展寄存器中儲存的擴展數據直接移位到第二運算級的第1擴展寄存器R1
至第14擴展寄存器R14
中的相應擴展寄存器而得到的。
在一些實施例中,第二運算級的後一運算級的第15擴展寄存器R15
中儲存的擴展數據可以是基於第一運算級的第1擴展寄存器R1
、第2擴展寄存器R2
、第10擴展寄存器R10
、第15擴展寄存器R15
中儲存的擴展數據確定的。在一些實施例中,第二運算級的後一運算級的第15擴展寄存器R15
中儲存的擴展數據w15
’’、第一運算級的第1擴展寄存器R1
中儲存的擴展數據w1
、第一運算級的第2擴展寄存器R2
中儲存的擴展數據w2
、第一運算級的第10擴展寄存器R10
中儲存的擴展數據w10
以及第一運算級的第15擴展寄存器R15
中儲存的擴展數據w15
可以滿足如下關係:w15
’’=w1
+σ0
(w2
)+w10
+σ1
(w15
),其中σ0
、σ1
、+的定義同前所述。
在一些實施例中,第一子模組131可以被配置為基於第一運算級的第2擴展寄存器R2
、第10擴展寄存器R10
、第15擴展寄存器R15
中的一者或兩者中儲存的擴展數據以及第一運算級的第1擴展寄存器R1
中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0
中的擴展數據。
在一些實施例中,第二子模組132可以被配置為基於第一運算級的第1擴展寄存器R1
、第9擴展寄存器R9
、第14擴展寄存器R14
中的一者或兩者中儲存的擴展數據以及第一運算級的第0擴展寄存器R0
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
下面結合圖4至圖7描述根據本公開的實施例的如圖3所示的電路中包括擴展數據運算邏輯模組的部分的幾種非限制性示例配置。在這些圖中,以相鄰兩個運算級120-a和120-b為例進行說明,可以理解,在運算模組120中的任意相鄰兩個運算級都可以是以下討論的運算級120-a和120-b。另外,在這些圖中,為了清楚起見,用虛線框指示第一子模組131和第二子模組132,用點線箭頭指示直接移位而不經過運算的擴展數據的移動方向,用點劃線箭頭指示經由第一子模組131處理的擴展數據的移動方向,用實線箭頭指示經由第二子模組132處理的擴展數據的移動方向。
在一些實施例中,第一子模組131可以被配置為基於第一運算級的第1擴展寄存器R1
和第2擴展寄存器R2
中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0
中的擴展數據,以及第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0
、第9擴展寄存器R9
和第14擴展寄存器R14
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖4所示,運算級120-b的第0擴展寄存器R0
中的擴展數據w0
’是通過由第一子模組131處理運算級120-a的第1擴展寄存器R1
中儲存的擴展數據w1
和第2擴展寄存器R2
中儲存的擴展數據w2
得到的。具體地,在這個示例中,第一子模組131包括用於執行σ0
運算的σ0
運算器和用於執行加法運算的加法器ADD1,其中擴展數據w2
被輸入到σ0
運算器,σ0
運算器的輸出以及擴展數據w1
被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級120-b的第0擴展寄存器R0
,使得w0
’= w1
+σ0
(w2
)。
進一步如圖4所示,運算級120-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組132處理運算級120-a的第0擴展寄存器R0
中儲存的擴展數據w0
、第9擴展寄存器R9
中儲存的擴展數據w9
和第14擴展寄存器R14
中儲存的擴展數據w14
得到的。具體地,在這個示例中,第二子模組132包括用於執行σ1
運算的σ1
運算器以及用於執行加法運算的全加器FAA和加法器ADD2,其中擴展數據w14
被輸入到σ1
運算器,σ1
運算器的輸出、擴展數據w0
以及擴展數據w9
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級120-b的第15擴展寄存器R15
,使得w15
’= w0
+ w9
+σ1
(w14
)。
進一步如圖4所示,運算級120-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級120-b的第(i-1)擴展寄存器中,其中2≤i≤15且i為整數。
在圖4所示的示例中,第一子模組131所經歷的運算邏輯級數為2級,第二子模組132所經歷的運算邏輯級數為3級。第一子模組131與第二子模組132可以彼此獨立地並行操作,使得最終計算用於運算級120-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組131可以被配置為基於第一運算級的第1擴展寄存器R1
和第10擴展寄存器R10
中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0
中的擴展數據,以及第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0
、第1擴展寄存器R1
和第14擴展寄存器R14
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖5所示,運算級120-b的第0擴展寄存器R0
中的擴展數據w0
’是通過由第一子模組131處理運算級120-a的第1擴展寄存器R1
中儲存的擴展數據w1
和第10擴展寄存器R10
中儲存的擴展數據w10
得到的。具體地,在這個示例中,第一子模組131包括用於執行加法運算的加法器ADD1,其中擴展數據w1
和擴展數據w10
被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級120-b的第0擴展寄存器R0
,使得w0
’= w1
+ w10
。
進一步如圖5所示,運算級120-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組132處理運算級120-a的第0擴展寄存器R0
中儲存的擴展數據w0
、第1擴展寄存器R1
中儲存的擴展數據w1
和第14擴展寄存器R14
中儲存的擴展數據w14
得到的。具體地,在這個示例中,第二子模組132包括用於執行σ0
運算的σ0
運算器、用於執行σ1
運算的σ1
運算器以及用於執行加法運算的全加器FAA和加法器ADD2,其中擴展數據w1
被輸入到σ0
運算器,擴展數據w14
被輸入到σ1
運算器,σ0
運算與σ1
運算例如可以同時進行。然後,σ0
運算器的輸出、σ1
運算器的輸出以及擴展數據w0
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級120-b的第15擴展寄存器R15
,使得w15
’= w0
+ σ0
(w1
)+σ1
(w14
)。
進一步如圖5所示,運算級120-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級120-b的第(i-1)擴展寄存器中,其中2≤i≤15且i為整數。
在圖5所示的示例中,第一子模組131所經歷的運算邏輯級數為1級,第二子模組132所經歷的運算邏輯級數為3級。第一子模組131與第二子模組132可以彼此獨立地並行操作,使得最終計算用於運算級120-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組131可以被配置為基於第一運算級的第1擴展寄存器R1
、第2擴展寄存器R2
和第10擴展寄存器R10
中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0
中的擴展數據,以及第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0
和第14擴展寄存器R14
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖6所示,運算級120-b的第0擴展寄存器R0
中的擴展數據w0
’是通過由第一子模組131處理運算級120-a的第1擴展寄存器R1
中儲存的擴展數據w1
、第2擴展寄存器R2
中儲存的擴展數據w2
和第10擴展寄存器R10
中儲存的擴展數據w10
得到的。具體地,在這個示例中,第一子模組131包括用於執行σ0
運算的σ0
運算器以及用於執行加法運算的全加器FAA和加法器ADD1,其中擴展數據w2
被輸入到σ0
運算器,σ0
運算器的輸出、擴展數據w1
和擴展數據w10
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級120-b的第0擴展寄存器R0
,使得w0
’= w1
+σ0
(w2
)+w10
。
進一步如圖6所示,運算級120-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組132處理運算級120-a的第0擴展寄存器R0
中儲存的擴展數據w0
和第14擴展寄存器R14
中儲存的擴展數據w14
得到的。具體地,在這個示例中,第二子模組132包括用於執行σ1
運算的σ1
運算器以及用於執行加法運算的加法器ADD2,其中擴展數據w14
被輸入到σ1
運算器,σ1
運算器的輸出以及擴展數據w0
被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級120-b的第15擴展寄存器R15
,使得w15
’= w0
+σ1
(w14
)。
進一步如圖6所示,運算級120-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級120-b的第(i-1)擴展寄存器中,其中2≤i≤15且i為整數。
在圖6所示的示例中,第一子模組131所經歷的運算邏輯級數為3級,第二子模組132所經歷的運算邏輯級數為2級。第一子模組131與第二子模組132可以彼此獨立地並行操作,使得最終計算用於運算級120-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組131可以被配置為基於第一運算級的第1擴展寄存器R1
和第15擴展寄存器R15
中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0
中的擴展數據,以及第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0
、第1擴展寄存器R1
和第9擴展寄存器R9
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖7所示,運算級120-b的第0擴展寄存器R0
中的擴展數據w0
’是通過由第一子模組131處理運算級120-a的第1擴展寄存器R1
中儲存的擴展數據w1
和第15擴展寄存器R15
中儲存的擴展數據w15
得到的。具體地,在這個示例中,第一子模組131包括用於執行σ1
運算的σ1
運算器以及用於執行加法運算的加法器ADD1,其中擴展數據w15
被輸入到σ1
運算器,σ1
運算器的輸出和擴展數據w1
被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級120-b的第0擴展寄存器R0
,使得w0
’= w1
+σ1
(w15
)。
進一步如圖7所示,運算級120-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組132處理運算級120-a的第0擴展寄存器R0
中儲存的擴展數據w0
、第1擴展寄存器R1
中儲存的擴展數據w1
和第9擴展寄存器R9
中儲存的擴展數據w9
得到的。具體地,在這個示例中,第二子模組132包括用於執行σ0
運算的σ0
運算器以及用於執行加法運算的全加器FAA和加法器ADD2,其中擴展數據w1
被輸入到σ0
運算器,σ0
運算器的輸出、擴展數據w0
以及擴展數據w9
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級120-b的第15擴展寄存器R15
,使得w15
’= w0
+σ0
(w1
)+w9
。
進一步如圖7所示,運算級120-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級120-b的第(i-1)擴展寄存器中,其中2≤i≤15且i為整數。
在圖7所示的示例中,第一子模組131所經歷的運算邏輯級數為2級,第二子模組132所經歷的運算邏輯級數為3級。第一子模組131與第二子模組132可以彼此獨立地並行操作,使得最終計算用於運算級120-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組131可以被配置為基於第一運算級的第1擴展寄存器R1
、第2擴展寄存器R2
和第15擴展寄存器R15
中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0
中的擴展數據,以及第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0
和第9擴展寄存器R9
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。具體地,在一些示例中,運算級120-b的第0擴展寄存器R0
中的擴展數據w0
’可以通過由第一子模組131處理運算級120-a的第1擴展寄存器R1
中儲存的擴展數據w1
、第2擴展寄存器R2
中儲存的擴展數據w2
和第15擴展寄存器R15
中儲存的擴展數據w15
得到,運算級120-b的第15擴展寄存器R15
中的擴展數據w15
’可以通過由第二子模組132處理運算級120-a的第0擴展寄存器R0
中儲存的擴展數據w0
和第9擴展寄存器R9
中儲存的擴展數據w9
得到,使得w0
’= w1
+σ0
(w2
)+σ1
(w15
),w15
’= w0
+w9
。
在一些實施例中,第一子模組131可以被配置為基於第一運算級的第1擴展寄存器R1
、第10擴展寄存器R10
和第15擴展寄存器R15
中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0
中的擴展數據,以及第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0
和第1擴展寄存器R1
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據。具體地,在一些示例中,運算級120-b的第0擴展寄存器R0
中的擴展數據w0
’可以通過由第一子模組131處理運算級120-a的第1擴展寄存器R1
中儲存的擴展數據w1
、第10擴展寄存器R10
中儲存的擴展數據w10
和第15擴展寄存器R15
中儲存的擴展數據w15
得到,運算級120-b的第15擴展寄存器R15
中的擴展數據w15
’可以通過由第二子模組132處理運算級120-a的第0擴展寄存器R0
中儲存的擴展數據w0
和第1擴展寄存器R1
中儲存的擴展數據w1
得到,使得w0
’= w1
+w10
+σ1
(w15
),w15
’= w0
+σ0
(w1
)。
相應地,本公開也提供了在用於執行哈希算法的電路中計算擴展數據的方法。圖13示出了根據本公開的實施例的在用於執行哈希算法的電路中計算擴展數據的方法300的示例性流程圖。這樣的電路可以包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,其中運算模組可以包括以流水線結構佈置的多個運算級,每個運算級可以包括第0擴展寄存器至第15擴展寄存器,每個擴展寄存器可以被配置為儲存當前運算級的擴展數據。對於運算模組的多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級,方法300可以包括:在S301處,基於第一運算級的第1擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據;在S302處,基於第一運算級的第0擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;以及在S303處,將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-1)擴展寄存器中的擴展數據,其中2≤i≤15且i為整數。注意,S301-S303並不需要以順序次序執行,而是可以以任何次序執行,或者可以至少部分地並行執行。
在一些實施例中,計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據與計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據可以是同時進行的。
在一些實施例中,第二運算級的後一運算級的第15擴展寄存器中儲存的擴展數據可以是基於第一運算級的第1擴展寄存器、第2擴展寄存器、第10擴展寄存器、第15擴展寄存器中儲存的擴展數據確定的。
方法300還可以採用以上關於第一子模組131和第二子模組132描述的各種方式來計算擴展數據,在此不再贅述。方法300可以減少在用於執行哈希算法的電路中計算擴展數據導致的計算延時,從而大幅提高電路進而包含該電路的計算晶片的運算速度,從而實現更低的功耗算力比。
此外,在根據本公開的上述實施例的電路和方法中,使用擴展寄存器R0
來儲存提前進行的在原本用於計算後續運算級的擴展寄存器R15
中要儲存的擴展數據的過程中涉及先前運算級的擴展寄存器R1
中的擴展數據的部分。在一些替代實施例中,也可以使用附加的寄存器來替代地實現擴展寄存器R0
在上述實施例中所起到的作用。而且,當使用附加的寄存器時,不僅可以用於提前進行在原本用於計算後續運算級的擴展寄存器R15
中要儲存的擴展數據的過程中涉及先前運算級的擴展寄存器R1
中的擴展數據的部分,而且可以提前進行在原本用於計算後續運算級的擴展寄存器R15
中要儲存的擴展數據的過程的任何合適部分。
圖8示出了根據本公開的另外一些實施例的用於執行哈希算法的電路200的示意性方塊圖。其中箭頭表示數據傳遞方向。電路200可以包括輸入模組210和運算模組220。輸入模組210可以被配置為接收數據。運算模組220可以被配置為基於接收到的數據計算哈希值。運算模組220可以包括以流水線結構佈置的多個運算級220-0、…、220-63,每個運算級可以包括第0擴展寄存器R0
至第15擴展寄存器R15
以及附加寄存器X,每個擴展寄存器可以被配置為儲存當前運算級的擴展數據,附加寄存器可以被配置為儲存用於計算擴展數據的中間數據。在一些實施例中,最前一個運算級220-0的附加寄存器X中儲存的中間數據與最前一個運算級220-0的第0擴展寄存器R0
中儲存的擴展數據可以相同。
運算模組220還可以包括多個擴展數據運算邏輯模組230,每個擴展數據運算邏輯模組230設置在運算模組220的多個運算級220-0、…、220-63中的相應的相鄰兩個運算級之間。在本文中,可以將相鄰兩個運算級中在前的運算級稱為第一運算級並將相鄰兩個運算級中在後的運算級稱為第二運算級,注意“第一”和“第二”僅是用於區分而非限制性的。例如,如圖8所示,相鄰兩個運算級220-a、220-b之間設置有擴展數據運算邏輯模組230。每個擴展數據運算邏輯模組230可以包括第一子模組231和第二子模組232。
擴展數據運算邏輯模組230可以被配置用於基於第一運算級(例如,220-a)的擴展寄存器中儲存的擴展數據和第一運算級(例如,220-a)的附加寄存器中儲存的中間數據計算用於儲存到第二運算級(例如,220-b)的擴展寄存器中的擴展數據和用於儲存到第二運算級的附加寄存器中的中間數據。第一子模組231可以被配置為基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器中的中間數據。第二子模組232可以被配置為基於第一運算級的附加寄存器中儲存的中間數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據。另外,用於儲存到第二運算級的第(i-1)擴展寄存器中的擴展數據可以是第一運算級的第i擴展寄存器中儲存的擴展數據,其中1≤i≤15且i為整數。也就是說,在電路200中,第二運算級的第15擴展寄存器R15
中要儲存的擴展數據是通過第一運算級的附加寄存器中儲存的中間數據進行運算而得到的,而第二運算級的第0擴展寄存器R0
至第14擴展寄存器R14
中要儲存的擴展數據是通過將第一運算級的第1擴展寄存器R1
至第15擴展寄存器R15
中的每個擴展寄存器中儲存的擴展數據直接移位到第二運算級的第0擴展寄存器R0
至第14擴展寄存器R14
中的相應擴展寄存器而得到的。
在一些實施例中,第二運算級的後一運算級的第15擴展寄存器R15
中儲存的擴展數據可以是基於第一運算級的第1擴展寄存器R1
、第2擴展寄存器R2
、第10擴展寄存器R10
、第15擴展寄存器R15
中儲存的擴展數據確定的。在一些實施例中,第二運算級的後一運算級的第15擴展寄存器R15
中儲存的擴展數據w15
’’、第一運算級的第1擴展寄存器R1
中儲存的擴展數據w1
、第一運算級的第2擴展寄存器R2
中儲存的擴展數據w2
、第一運算級的第10擴展寄存器R10
中儲存的擴展數據w10
、第一運算級的第15擴展寄存器R15
中儲存的擴展數據w15
可以滿足如下關係:w15
’’=w1
+σ0
(w2
)+w10
+σ1
(w15
),其中σ0
、σ1
、+的定義同前所述。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第1擴展寄存器R1
、第2擴展寄存器R2
、第10擴展寄存器R10
、第15擴展寄存器R15
中的兩者或三者中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據。
在一些實施例中,第二子模組232可以被配置為基於第一運算級的第0擴展寄存器R0
、第1擴展寄存器R1
、第9擴展寄存器R9
、第14擴展寄存器R14
中的一者或兩者中儲存的擴展數據以及第一運算級的附加寄存器X中儲存的中間數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
下面結合圖9至圖14描述根據本公開的實施例的如圖8所示的電路中包括擴展數據運算邏輯模組的部分的幾種非限制性示例配置。在這些圖中,以相鄰兩個運算級220-a和220-b為例進行說明,可以理解,在運算模組220中的任意相鄰兩個運算級都可以是以下討論的運算級220-a和220-b。另外,在這些圖中,為了清楚起見,用虛線框指示第一子模組231和第二子模組232,用點線箭頭指示直接移位而不經過運算的擴展數據的移動方向,用點劃線箭頭指示經由第一子模組231處理的擴展數據的移動方向,用實線箭頭指示經由第二子模組232處理的擴展數據的移動方向。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第1擴展寄存器R1
和第2擴展寄存器R2
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組232可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第9擴展寄存器R9
和第14擴展寄存器R14
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖9所示,運算級220-b的附加寄存器X中的中間數據wx
’是通過由第一子模組231處理運算級220-a的第1擴展寄存器R1
中儲存的擴展數據w1
和第2擴展寄存器R2
中儲存的擴展數據w2
得到的。具體地,在這個示例中,第一子模組231包括用於執行σ0
運算的σ0
運算器和用於執行加法運算的加法器ADD1,其中擴展數據w2
被輸入到σ0
運算器,σ0
運算器的輸出以及擴展數據w1
被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的附加寄存器X,使得wx
’= w1
+σ0
(w2
)。
進一步如圖9所示,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組232處理運算級220-a的附加寄存器X中儲存的中間數據wx
、第9擴展寄存器R9
中儲存的擴展數據w9
和第14擴展寄存器R14
中儲存的擴展數據w14
得到的。具體地,在這個示例中,第二子模組232包括用於執行σ1
運算的σ1
運算器以及用於執行加法運算的全加器FAA和加法器ADD2,其中擴展數據w14
被輸入到σ1
運算器,σ1
運算器的輸出、中間數據wx
以及擴展數據w9
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第15擴展寄存器R15
,使得w15
’= wx
+ w9
+σ1
(w14
)。
進一步如圖9所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-1)擴展寄存器中,其中1≤i≤15且i為整數。
在圖9所示的示例中,第一子模組231所經歷的運算邏輯級數為2級,第二子模組232所經歷的運算邏輯級數為3級。第一子模組231與第二子模組232可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第1擴展寄存器R1
和第10擴展寄存器R10
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組232可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第1擴展寄存器R1
和第14擴展寄存器R14
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖10所示,運算級220-b的附加寄存器X中的中間數據wx
’是通過由第一子模組231處理運算級220-a的第1擴展寄存器R1
中儲存的擴展數據w1
和第10擴展寄存器R10
中儲存的擴展數據w10
得到的。具體地,在這個示例中,第一子模組231包括用於執行加法運算的加法器ADD1,其中擴展數據w1
和擴展數據w10
被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的附加寄存器X,使得wx
’= w1
+w10
。
進一步如圖10所示,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組232處理運算級220-a的附加寄存器X中儲存的中間數據wx
、第1擴展寄存器R1
中儲存的擴展數據w1
和第14擴展寄存器R14
中儲存的擴展數據w14
得到的。具體地,在這個示例中,第二子模組232包括用於執行σ0
運算的σ0
運算器、用於執行σ1
運算的σ1
運算器以及用於執行加法運算的全加器FAA和加法器ADD2,其中擴展數據w1
被輸入到σ0
運算器,擴展數據w14
被輸入到σ1
運算器,σ0
運算與σ1
運算例如可以同時進行。然後,σ0
運算器的輸出、σ1
運算器的輸出以及中間數據wx
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第15擴展寄存器R15
,使得w15
’= wx
+ σ0
(w1
)+σ1
(w14
)。
進一步如圖10所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-1)擴展寄存器中,其中1≤i≤15且i為整數。
在圖10所示的示例中,第一子模組231所經歷的運算邏輯級數為1級,第二子模組232所經歷的運算邏輯級數為3級。第一子模組231與第二子模組232可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第1擴展寄存器R1
、第2擴展寄存器R2
和第10擴展寄存器R10
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組232可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第14擴展寄存器R14
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖11所示,運算級220-b的附加寄存器X中的中間數據wx
’是通過由第一子模組231處理運算級220-a的第1擴展寄存器R1
中儲存的擴展數據w1
、第2擴展寄存器R2
中儲存的擴展數據w2
和第10擴展寄存器R10
中儲存的擴展數據w10
得到的。具體地,在這個示例中,第一子模組231包括用於執行σ0
運算的σ0
運算器以及用於執行加法運算的全加器FAA和加法器ADD1,其中擴展數據w2
被輸入到σ0
運算器,σ0
運算器的輸出、擴展數據w1
和擴展數據w10
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的附加寄存器X,使得wx
’= w1
+σ0
(w2
)+w10
。
進一步如圖11所示,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組232處理運算級220-a的附加寄存器X中儲存的中間數據wx
和第14擴展寄存器R14
中儲存的擴展數據w14
得到的。具體地,在這個示例中,第二子模組232包括用於執行σ1
運算的σ1
運算器以及用於執行加法運算的加法器ADD2,其中擴展數據w14
被輸入到σ1
運算器,σ1
運算器的輸出以及中間數據wx
被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第15擴展寄存器R15
,使得w15
’= wx
+σ1
(w14
)。
進一步如圖11所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-1)擴展寄存器中,其中1≤i≤15且i為整數。
在圖11所示的示例中,第一子模組231所經歷的運算邏輯級數為3級,第二子模組232所經歷的運算邏輯級數為2級。第一子模組231與第二子模組232可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第1擴展寄存器R1
和第15擴展寄存器R15
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組232可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第1擴展寄存器R1
和第9擴展寄存器R9
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖12所示,運算級220-b的附加寄存器X中的中間數據wx
’是通過由第一子模組231處理運算級220-a的第1擴展寄存器R1
中儲存的擴展數據w1
和第15擴展寄存器R15
中儲存的擴展數據w15
得到的。具體地,在這個示例中,第一子模組231包括用於執行σ1
運算的σ1
運算器以及用於執行加法運算的加法器ADD1,其中擴展數據w15
被輸入到σ1
運算器,σ1
運算器的輸出和擴展數據w1
被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的附加寄存器X,使得wx
’= w1
+σ1
(w15
)。
進一步如圖12所示,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組232處理運算級220-a的附加寄存器X中儲存的中間數據wx
、第1擴展寄存器R1
中儲存的擴展數據w1
和第9擴展寄存器R9
中儲存的擴展數據w9
得到的。具體地,在這個示例中,第二子模組232包括用於執行σ0
運算的σ0
運算器以及用於執行加法運算的全加器FAA和加法器ADD2,其中擴展數據w1
被輸入到σ0
運算器,σ0
運算器的輸出、中間數據wx
以及擴展數據w9
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第15擴展寄存器R15
,使得w15
’= wx
+σ0
(w1
)+w9
。
進一步如圖12所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-1)擴展寄存器中,其中1≤i≤15且i為整數。
在圖12所示的示例中,第一子模組231所經歷的運算邏輯級數為2級,第二子模組232所經歷的運算邏輯級數為3級。第一子模組231與第二子模組232可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第1擴展寄存器R1
、第2擴展寄存器R2
和第15擴展寄存器R15
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組232可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第9擴展寄存器R9
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。具體地,在一些示例中,運算級220-b的附加寄存器X中的中間數據wx
’可以通過由第一子模組231處理運算級220-a的第1擴展寄存器R1
中儲存的擴展數據w1
、第2擴展寄存器R2
中儲存的擴展數據w2
和第15擴展寄存器R15
中儲存的擴展數據w15
得到,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’可以通過由第二子模組232處理運算級220-a的附加寄存器X中儲存的中間數據wx
和運算級220-a的第9擴展寄存器R9
中儲存的擴展數據w9
得到,使得wx
’= w1
+σ0
(w2
)+σ1
(w15
),w15
’= wx
+w9
。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第1擴展寄存器R1
、第10擴展寄存器R10
和第15擴展寄存器R15
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組232可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第1擴展寄存器R1
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據。具體地,在一些示例中,運算級220-b的附加寄存器X中的中間數據wx
’可以通過由第一子模組231處理運算級220-a的第1擴展寄存器R1
中儲存的擴展數據w1
、第10擴展寄存器R10
中儲存的擴展數據w10
和第15擴展寄存器R15
中儲存的擴展數據w15
得到,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’可以通過由第二子模組232處理運算級220-a的附加寄存器X中的中間數據wx
和運算級220-a的第1擴展寄存器R1
中儲存的擴展數據w1
得到,使得wx
’= w1
+w10
+σ1
(w15
),w15
’= wx
+σ0
(w1
)。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第2擴展寄存器R2
和第10擴展寄存器R10
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組232可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第0擴展寄存器R0
和第14擴展寄存器R14
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖13所示,運算級220-b的附加寄存器X中的中間數據wx
’是通過由第一子模組231處理運算級220-a的第2擴展寄存器R2
中儲存的擴展數據w2
和第10擴展寄存器R10
中儲存的擴展數據w10
得到的。具體地,在這個示例中,第一子模組231包括用於執行σ0
運算的σ0
運算器以及用於執行加法運算的加法器ADD1,其中擴展數據w2
被輸入到σ0
運算器,σ0
運算器的輸出和擴展數據w10
被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的附加寄存器X,使得wx
’=σ0
(w2
)+w10
。
進一步如圖13所示,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組232處理運算級220-a的附加寄存器X中儲存的中間數據wx
、第0擴展寄存器R0
中儲存的擴展數據w0
和第14擴展寄存器R14
中儲存的擴展數據w14
得到的。具體地,在這個示例中,第二子模組232包括用於執行σ1
運算的σ1
運算器以及用於執行加法運算的全加器FAA和加法器ADD2,其中擴展數據w14
被輸入到σ1
運算器,σ1
運算器的輸出、中間數據wx
以及擴展數據w0
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第15擴展寄存器R15
,使得w15
’= wx
+w0
+σ1
(w14
)。
進一步如圖13所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-1)擴展寄存器中,其中1≤i≤15且i為整數。
在圖13所示的示例中,第一子模組231所經歷的運算邏輯級數為2級,第二子模組232所經歷的運算邏輯級數為3級。第一子模組231與第二子模組232可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第2擴展寄存器R2
、第10擴展寄存器R10
和第15擴展寄存器R15
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組232可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第0擴展寄存器R0
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。
例如,在一些示例中,如圖14所示,運算級220-b的附加寄存器X中的中間數據wx
’是通過由第一子模組231處理運算級220-a的第2擴展寄存器R2
中儲存的擴展數據w2
、第10擴展寄存器R10
中儲存的擴展數據w10
和第15擴展寄存器R15
中儲存的擴展數據w15
得到的。具體地,在這個示例中,第一子模組231包括用於執行σ0
運算的σ0
運算器、用於執行σ1
運算的σ1
運算器以及用於執行加法運算的全加器FAA和加法器ADD1,其中擴展數據w2
被輸入到σ0
運算器,擴展數據w15
被輸入到σ1
運算器,σ0
運算和σ1
運算可以同時進行。然後,σ0
運算器的輸出、σ1
運算器的輸出和擴展數據w10
被輸入到全加器FAA,全加器FAA的輸出被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的附加寄存器X,使得wx
’=σ0
(w2
)+w10
+σ1
(w15
)。
進一步如圖14所示,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’是通過由第二子模組232處理運算級220-a的附加寄存器X中儲存的中間數據wx
和第0擴展寄存器R0
中儲存的擴展數據w0
得到的。具體地,在這個示例中,第二子模組232包括加法器ADD2,其中中間數據wx
以及擴展數據w0
被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第15擴展寄存器R15
,使得w15
’= wx
+w0
。
進一步如圖14所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-1)擴展寄存器中,其中1≤i≤15且i為整數。
在圖14所示的示例中,第一子模組231所經歷的運算邏輯級數為3級,第二子模組232所經歷的運算邏輯級數為1級。第一子模組231與第二子模組232可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第2擴展寄存器R2
和第15擴展寄存器R15
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第0擴展寄存器R0
和第9擴展寄存器R9
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。具體地,在一些示例中,運算級220-b的附加寄存器X中的中間數據wx
’可以通過由第一子模組231處理運算級220-a的第2擴展寄存器R2
中儲存的擴展數據w2
和第15擴展寄存器R15
中儲存的擴展數據w15
得到,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’可以通過由第二子模組232處理運算級220-a的附加寄存器X中的中間數據wx
以及運算級220-a的第0擴展寄存器R0
中儲存的擴展數據w0
和第9擴展寄存器R9
中儲存的擴展數據w9
得到,使得wx
’= σ0
(w2
)+σ1
(w15
),w15
’= wx
+w0
+w9
。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第10擴展寄存器R10
和第15擴展寄存器R15
中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器X中的中間數據,以及第二子模組232可以被配置為基於第一運算級的附加寄存器X中儲存的中間數據以及第一運算級的第0擴展寄存器R0
和第1擴展寄存器R1
中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15
中的擴展數據。具體地,在一些示例中,運算級220-b的附加寄存器X中的中間數據wx
’可以通過由第一子模組231處理運算級220-a的第10擴展寄存器R10
中儲存的擴展數據w10
和第15擴展寄存器R15
中儲存的擴展數據w15
得到,運算級220-b的第15擴展寄存器R15
中的擴展數據w15
’可以通過由第二子模組232處理運算級220-a的附加寄存器X中的中間數據wx
以及運算級220-a的第0擴展寄存器R0
中儲存的擴展數據w0
和第1擴展寄存器R1
中儲存的擴展數據w1
得到,使得wx
’= w10
+σ1
(w15
),w15
’= wx
+w0
+σ0
(w1
)。
相應地,本公開也提供了在用於執行哈希算法的電路中計算擴展數據的方法。圖14示出了根據本公開的實施例的在用於執行哈希算法的電路中計算擴展數據的方法400的示例性流程圖。這樣的電路可以包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,其中運算模組可以包括以流水線結構佈置的多個運算級,每個運算級可以包括第0擴展寄存器至第15擴展寄存器以及附加寄存器,每個擴展寄存器可以被配置為儲存當前運算級的擴展數據,附加寄存器可以被配置為儲存用於計算擴展數據的中間數據。在一些實施例中,最前一個運算級的附加寄存器中儲存的中間數據與最前一個運算級的第0擴展寄存器中儲存的擴展數據可以相同。對於運算模組的多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級,方法400可以包括:在S401處,基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的附加寄存器中的中間數據;在S402處,基於第一運算級的附加寄存器中儲存的中間數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;以及在S403處,將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-1)擴展寄存器中的擴展數據,其中1≤i≤15且i為整數。注意,S401-S403並不需要以順序次序執行,而是可以以任何次序執行,或者可以至少部分地並行執行。
在一些實施例中,計算用於儲存到第二運算級的附加寄存器中的中間數據與計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據可以是同時進行的。
在一些實施例中,第二運算級的後一運算級的第15擴展寄存器中儲存的擴展數據可以是基於第一運算級的第1擴展寄存器、第2擴展寄存器、第10擴展寄存器、第15擴展寄存器中儲存的擴展數據確定的。
方法400還可以採用以上關於第一子模組231和第二子模組232描述的各種方式來計算擴展數據,在此不再贅述。方法400可以減少在用於執行哈希算法的電路中計算擴展數據導致的計算延時,從而大幅提高電路進而包含該電路的計算晶片的運算速度,從而實現更低的功耗算力比。
本公開還可以提供了包括如以上任一實施例所述的電路的計算晶片。本公開還可以提供包括一個或多個如上所述的計算晶片的數據處理設備。根據本公開的例如作為加密貨幣礦機的數據處理設備可以具有實現更低的功耗算力比,從而以更低的成本並且更高效地執行挖礦過程。
說明書及申請專利範圍中的詞語“左”、“右”、“前”、“後”、“頂”、“底”、“上”、“下”、“高”、“低”等,如果存在的話,用於描述性的目的而並不一定用於描述不變的相對位置。應當理解,這樣使用的詞語在適當的情況下是可互換的,使得在此所描述的本公開的實施例,例如,能夠在與在此所示出的或另外描述的那些取向不同的其它取向上操作。例如,在圖式中的裝置倒轉時,原先描述為在其它特徵“之上”的特徵,此時可以描述為在其它特徵“之下”。裝置還可以以其它方式定向(旋轉90度或在其它方位),此時將相應地解釋相對空間關係。
在說明書及申請專利範圍中,稱一個元件位於另一元件“之上”、“附接”至另一元件、“連接”至另一元件、“耦合”至另一元件、或“接觸”另一元件等時,該元件可以直接位於另一元件之上、直接附接至另一元件、直接連接至另一元件、直接耦合至另一元件或直接接觸另一元件,或者可以存在一個或多個中間元件。相對照的是,稱一個元件“直接”位於另一元件“之上”、“直接附接”至另一元件、“直接連接”至另一元件、“直接耦合”至另一元件或“直接接觸”另一元件時,將不存在中間元件。在說明書及申請專利範圍中,一個特徵佈置成與另一特徵“相鄰”,可以指一個特徵具有與相鄰特徵重疊的部分或者位於相鄰特徵上方或下方的部分。
如在此所使用的,詞語“示例性的”意指“用作示例、實例或說明”,而不是作為將被精確複製的“模型”。在此示例性描述的任意實現方式並不一定要被解釋為比其它實現方式優選的或有利的。而且,本公開不受在技術領域、背景技術、發明內容或具體實施方式中所給出的任何所表述的或所暗示的理論所限定。如在此所使用的,詞語“基本上”意指包含由設計或製造的缺陷、器件或元件的容差、環境影響和/或其它因素所致的任意微小的變化。詞語“基本上”還允許由寄生效應、噪聲以及可能存在於實際的實現方式中的其它實際考慮因素所致的與完美的或理想的情形之間的差異。
另外,僅僅為了參考的目的,還可以在本文中使用“第一”、“第二”等類似術語,並且因而並非意圖限定。例如,除非上下文明確指出,否則涉及結構或元件的詞語“第一”、“第二”和其它此類數字詞語並沒有暗示順序或次序。還應理解,“包括/包含”一詞在本文中使用時,說明存在所指出的特徵、整體、步驟、操作、單元和/或組件,但是並不排除存在或增加一個或多個其它特徵、整體、步驟、操作、單元和/或組件以及/或者它們的組合。在本公開中,術語“提供”從廣義上用於涵蓋獲得對象的所有方式,因此“提供某對象”包括但不限於“購買”、“製備/製造”、“佈置/設置”、“安裝/裝配”、和/或“訂購”對象等。
如本文所使用的,術語“和/或”包括相關聯的列出項目中的一個或多個的任何和所有組合。本文中使用的術語只是出於描述特定實施例的目的,並不旨在限制本公開。如本文中使用的,單數形式“一”、“一個”和“該”也旨在包括複數形式,除非上下文另外清楚指示。
本領域技術人員應當意識到,在上述操作之間的邊界僅僅是說明性的。多個操作可以結合成單個操作,單個操作可以分佈於附加的操作中,並且操作可以在時間上至少部分重疊地執行。而且,另選的實施例可以包括特定操作的多個實例,並且在其它各種實施例中可以改變操作順序。但是,其它的修改、變化和替換同樣是可能的。可以以任何方式和/或與其它實施例的方面或元件相結合地組合以上公開的所有實施例的方面和元件,以提供多個附加實施例。因此,本說明書和圖式應當被看作是說明性的,而非限制性的。
雖然已通過示例對本公開的一些特定實施例進行了詳細說明,但本領域的技術人員應該理解,以上示例僅是為了進行說明,而不是為了限制本公開的範圍。在此公開的各實施例可以任意組合,而不脫離本公開的精神和範圍。本領域的技術人員還應理解,可以對實施例進行多種修改而不脫離本公開的範圍和精神。本公開的範圍由所附申請專利範圍來限定。
100:電路
110:輸入模組
120:運算模組
120-0~120-63:運算級
120-a,120-b:運算級
130:擴展數據運算邏輯模組
131:第一子模組
132:第二子模組
200:電路
210:輸入模組
220:運算模組
220-0~220-63:運算級
220-a,220-b:運算級
230:擴展數據運算邏輯模組
231:第一子模組
232:第二子模組
300,400:方法
ADD1~ADD3:加法器
FAA:全加器
R0
~R15
:擴展寄存器
A~H:壓縮寄存器
X:附加寄存器
構成說明書的一部分的圖式描述了本公開的實施例,並且連同說明書一起用於解釋本公開的原理。
參照圖式,根據下面的詳細描述,可以更加清楚地理解本公開,其中:
圖1示出了用於執行SHA-256算法的示例性流水線結構的示意圖;
圖2示意性示出了圖1中的流水線結構中的相鄰兩個運算級的擴展寄存器中的擴展數據之間的常規運算邏輯;
圖3示出了根據本公開的一些實施例的用於執行哈希算法的電路的示意性方塊圖;
圖4至圖7示意性示出了根據本公開的實施例的如圖3所示的電路中包括擴展數據運算邏輯模組的部分的示例性配置;
圖8示出了根據本公開的一些實施例的用於執行哈希算法的電路的示意性方塊圖;
圖9至圖14示意性示出了根據本公開的實施例的如圖8所示的電路中包括擴展數據運算邏輯模組的部分的示例性配置;以及
圖15和圖16示出了根據本公開的實施例的用於計算擴展數據的方法的示例性流程圖。
注意,在以下說明的實施方式中,有時在不同的圖式之間共同使用同一圖式標記來表示相同部分或具有相同功能的部分,而省略其重複說明。在本說明書中,使用相似的標號和字母表示類似項,因此,一旦某一項在一個圖式中被定義,則在隨後的圖式中不需要對其進行進一步討論。
為了便於理解,在圖式等中所示的各結構的位置、尺寸及範圍等有時不表示實際的位置、尺寸及範圍等。因此,所公開的發明並不限於圖式等所公開的位置、尺寸及範圍等。此外,圖式不必按比例繪製,一些特徵可能被放大以示出具體組件的細節。
120-a,120-b:運算級
131:第一子模組
132:第二子模組
ADD1,ADD2:加法器
FAA:全加器
R0~R15:擴展寄存器
Claims (28)
- 一種用於執行哈希算法的電路,包括: 輸入模組,被配置為接收數據;以及 運算模組,被配置為基於接收到的數據計算哈希值,所述運算模組包括: 以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據;以及 多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在所述多個運算級中的相應的相鄰兩個運算級之間,所述相鄰兩個運算級包括第一運算級和在所述第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括: 第一子模組,被配置為基於所述第一運算級的第1擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據;以及 第二子模組,被配置為基於所述第一運算級的第0擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據, 其中,用於儲存到所述第二運算級的第(i-1)擴展寄存器中的擴展數據是所述第一運算級的第i擴展寄存器中儲存的擴展數據,其中2≤i≤15且i為整數。
- 如請求項1所述的用於執行哈希算法的電路,其中,所述第二運算級的後一運算級的第15擴展寄存器中儲存的擴展數據是基於所述第一運算級的第1擴展寄存器、第2擴展寄存器、第10擴展寄存器、第15擴展寄存器中儲存的擴展數據確定的。
- 如請求項1所述的用於執行哈希算法的電路,其中,所述第一子模組被配置為基於所述第一運算級的第2擴展寄存器、第10擴展寄存器、第15擴展寄存器中的一者或兩者中儲存的擴展數據以及所述第一運算級的第1擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據。
- 如請求項1所述的用於執行哈希算法的電路,其中,所述第二子模組被配置為基於所述第一運算級的第1擴展寄存器、第9擴展寄存器、第14擴展寄存器中的一者或兩者中儲存的擴展數據以及所述第一運算級的第0擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項1至4中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器和第2擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據;以及 所述第二子模組被配置為基於所述第一運算級的第0擴展寄存器、第9擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項1至4中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器和第10擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據;以及 所述第二子模組被配置為基於所述第一運算級的第0擴展寄存器、第1擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項1至4中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器、第2擴展寄存器和第10擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據;以及 所述第二子模組被配置為基於所述第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項1至4中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據;以及 所述第二子模組被配置為基於所述第一運算級的第0擴展寄存器、第1擴展寄存器和第9擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項1至4中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器、第2擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據;以及 所述第二子模組被配置為基於所述第一運算級的第0擴展寄存器和第9擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項1至4中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器、第10擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據;以及 所述第二子模組被配置為基於所述第一運算級的第0擴展寄存器和第1擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 一種用於執行哈希算法的電路,包括: 輸入模組,被配置為接收數據;以及 運算模組,被配置為基於接收到的數據計算哈希值,所述運算模組包括: 以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,所述附加寄存器被配置為儲存用於計算擴展數據的中間數據;以及 多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在所述多個運算級中的相應的相鄰兩個運算級之間,所述相鄰兩個運算級包括第一運算級和在所述第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括: 第一子模組,被配置為基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 第二子模組,被配置為基於所述第一運算級的附加寄存器中儲存的中間數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據, 其中,用於儲存到所述第二運算級的第(i-1)擴展寄存器中的擴展數據是所述第一運算級的第i擴展寄存器中儲存的擴展數據,其中1≤i≤15且i為整數。
- 如請求項11所述的用於執行哈希算法的電路,其中,所述第二運算級的後一運算級的第15擴展寄存器中儲存的擴展數據是基於所述第一運算級的第1擴展寄存器、第2擴展寄存器、第10擴展寄存器、第15擴展寄存器中儲存的擴展數據確定的。
- 如請求項11所述的用於執行哈希算法的電路,其中,所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器、第2擴展寄存器、第10擴展寄存器、第15擴展寄存器中的兩者或三者中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據。
- 如請求項11所述的用於執行哈希算法的電路,其中,所述第二子模組被配置為基於所述第一運算級的第0擴展寄存器、第1擴展寄存器、第9擴展寄存器、第14擴展寄存器中的一者或兩者中儲存的擴展數據以及所述第一運算級的附加寄存器中儲存的中間數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器和第2擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第9擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器和第10擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第1擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器、第2擴展寄存器和第10擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第1擴展寄存器和第9擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器、第2擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第9擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第1擴展寄存器、第10擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第1擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第2擴展寄存器和第10擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第2擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第0擴展寄存器和第9擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第2擴展寄存器、第10擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第0擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 如請求項11至14中任一項所述的用於執行哈希算法的電路,其中, 所述第一子模組被配置為基於所述第一運算級的第10擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據;以及 所述第二子模組被配置為基於所述第一運算級的附加寄存器中儲存的中間數據以及所述第一運算級的第0擴展寄存器和第1擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
- 一種計算晶片,包括如請求項1至24中任一項所述的用於執行哈希算法的電路。
- 一種數據處理設備,包括一個或多個如請求項25所述的計算晶片。
- 一種在用於執行哈希算法的電路中計算擴展數據的方法,所述電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,所述運算模組包括以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,所述方法包括: 對於所述多個運算級中的包括第一運算級和在所述第一運算級之後的第二運算級的相鄰兩個運算級: 基於所述第一運算級的第1擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據; 基於所述第一運算級的第0擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據;以及 將所述第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到所述第二運算級的第(i-1)擴展寄存器中的擴展數據,其中2≤i≤15且i為整數。
- 一種在用於執行哈希算法的電路中計算擴展數據的方法,所述電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,所述運算模組包括以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,所述附加寄存器被配置為儲存用於計算擴展數據的中間數據,所述方法包括: 對於所述多個運算級中的包括第一運算級和在所述第一運算級之後的第二運算級的相鄰兩個運算級: 基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的附加寄存器中的中間數據; 基於所述第一運算級的附加寄存器中儲存的中間數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據;以及 將所述第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到所述第二運算級的第(i-1)擴展寄存器中的擴展數據,其中1≤i≤15且i為整數。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011509432.7A CN114648319A (zh) | 2020-12-18 | 2020-12-18 | 执行哈希算法的电路、计算芯片、加密货币矿机和方法 |
CN202011509432.7 | 2020-12-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202141302A true TW202141302A (zh) | 2021-11-01 |
TWI801926B TWI801926B (zh) | 2023-05-11 |
Family
ID=80783444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110125266A TWI801926B (zh) | 2020-12-18 | 2021-07-09 | 執行哈希算法的電路、計算晶片、數據處理設備和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11658807B2 (zh) |
KR (1) | KR102587719B1 (zh) |
CN (1) | CN114648319A (zh) |
TW (1) | TWI801926B (zh) |
WO (1) | WO2022127085A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116094691B (zh) * | 2022-12-26 | 2023-11-03 | 声龙(新加坡)私人有限公司 | 基于工作量证明的数据处理方法、装置及芯片 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI238636B (en) | 2003-06-19 | 2005-08-21 | Yen-Fu Liu | Operation device and method of fast secure hash algorithm |
US7921300B2 (en) * | 2003-10-10 | 2011-04-05 | Via Technologies, Inc. | Apparatus and method for secure hash algorithm |
KR20050065976A (ko) * | 2003-12-26 | 2005-06-30 | 한국전자통신연구원 | Sha-1 해쉬값 연산 장치 및 방법 |
JP4308840B2 (ja) * | 2006-11-08 | 2009-08-05 | Okiセミコンダクタ株式会社 | Sha演算方法およびsha演算装置 |
US20080215849A1 (en) | 2007-02-27 | 2008-09-04 | Thomas Scott | Hash table operations with improved cache utilization |
KR100901697B1 (ko) * | 2007-07-09 | 2009-06-08 | 한국전자통신연구원 | 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 |
US8458377B2 (en) | 2010-03-05 | 2013-06-04 | Lsi Corporation | DMA engine capable of concurrent data manipulation |
EP2601613B1 (en) * | 2011-04-06 | 2020-08-12 | BlackBerry Limited | Efficient implementation of hash algorithm on a processor |
CN104012032B (zh) * | 2011-12-22 | 2017-04-19 | 英特尔公司 | 处理sha‑1安全散列算法的方法和设备 |
US8924741B2 (en) * | 2012-12-29 | 2014-12-30 | Intel Corporation | Instruction and logic to provide SIMD secure hashing round slice functionality |
US10241817B2 (en) | 2014-11-25 | 2019-03-26 | Red Hat Israel, Ltd. | Paravirtualized access for device assignment by bar extension |
US9960909B2 (en) * | 2014-12-08 | 2018-05-01 | Open-Silicon Inc. | High speed and low power hashing system and method |
US10097345B2 (en) * | 2015-04-14 | 2018-10-09 | PeerNova, Inc. | Secure hash algorithm in digital hardware for cryptographic applications |
US10020934B2 (en) | 2015-11-05 | 2018-07-10 | Intel Corporation | Hardware accelerator for cryptographic hash operations |
CN108427575B (zh) | 2018-02-01 | 2022-03-15 | 深圳市安信智控科技有限公司 | 全流水结构sha-2消息扩展优化方法 |
US10979214B2 (en) * | 2018-07-24 | 2021-04-13 | Martin Spence Denham | Secure hash algorithm implementation |
CN110543481B (zh) | 2019-08-23 | 2022-12-06 | 紫光展锐(重庆)科技有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN111612622B (zh) | 2020-05-20 | 2021-03-23 | 深圳比特微电子科技有限公司 | 用于执行散列算法的电路和方法 |
CN111930682B (zh) | 2020-07-16 | 2024-08-13 | 深圳比特微电子科技有限公司 | 时钟树、哈希引擎、计算芯片、算力板和计算设备 |
-
2020
- 2020-12-18 CN CN202011509432.7A patent/CN114648319A/zh active Pending
-
2021
- 2021-07-09 WO PCT/CN2021/105350 patent/WO2022127085A1/zh active Application Filing
- 2021-07-09 KR KR1020237015367A patent/KR102587719B1/ko active IP Right Grant
- 2021-07-09 TW TW110125266A patent/TWI801926B/zh active
- 2021-07-09 US US17/630,881 patent/US11658807B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2022127085A1 (zh) | 2022-06-23 |
TWI801926B (zh) | 2023-05-11 |
US20220376893A1 (en) | 2022-11-24 |
CN114648319A (zh) | 2022-06-21 |
KR20230066661A (ko) | 2023-05-16 |
US11658807B2 (en) | 2023-05-23 |
KR102587719B1 (ko) | 2023-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Morioka et al. | A 10-Gbps full-AES crypto design with a twisted BDD S-Box architecture | |
US11743028B2 (en) | Protecting block cipher computation operations from external monitoring attacks | |
WO2021233198A1 (zh) | 用于执行散列算法的电路和方法 | |
CN111600699A (zh) | 用于实现散列算法的电路和方法 | |
Kaps et al. | Energy scalable universal hashing | |
JP2002229445A (ja) | べき乗剰余演算器 | |
TW202141302A (zh) | 執行哈希算法的電路、計算晶片、數據處理設備和方法 | |
US7240204B1 (en) | Scalable and unified multiplication methods and apparatus | |
Van Hieu et al. | Hardware implementation for fast block generator of Litecoin blockchain system | |
JP4177526B2 (ja) | 乗算剰余演算方法および乗算剰余回路 | |
CN213518334U (zh) | 执行哈希算法的电路、计算芯片和加密货币矿机 | |
CN114629665B (zh) | 一种用于可信计算的硬件平台 | |
Pyrgas et al. | A very compact architecture of CLEFIA block cipher for secure IoT systems | |
TW202141303A (zh) | 執行哈希算法的電路、計算晶片、數據處理設備和方法 | |
Lee et al. | Lightweight and low-latency AES accelerator using shared SRAM | |
CN213482935U (zh) | 执行哈希算法的电路、计算芯片和加密货币矿机 | |
CN212231468U (zh) | 用于执行散列算法的电路以及执行比特币挖矿算法的装置 | |
Michail et al. | Novel high throughput implementation of SHA-256 hash function through pre-computation technique | |
Satoh | Hardware architecture and cost estimates for breaking SHA-1 | |
Satoh et al. | High-Speed MARS Hardware. | |
TWI776474B (zh) | 單回合高階加密標準電路模組 | |
Stefan | Hardware framework for the rabbit stream cipher | |
TWI403952B (zh) | A large integer modulus index chip structure for signature cryptography | |
US7480380B2 (en) | Method for efficient generation of modulo inverse for public key cryptosystems | |
Ali et al. | Optimal datapath design for a cryptographic processor: the Blowfish algorithm |