TWI766754B - 執行哈希算法的電路、計算晶片、數據處理設備和方法 - Google Patents

執行哈希算法的電路、計算晶片、數據處理設備和方法 Download PDF

Info

Publication number
TWI766754B
TWI766754B TW110125267A TW110125267A TWI766754B TW I766754 B TWI766754 B TW I766754B TW 110125267 A TW110125267 A TW 110125267A TW 110125267 A TW110125267 A TW 110125267A TW I766754 B TWI766754 B TW I766754B
Authority
TW
Taiwan
Prior art keywords
extension
register
data
stage
extension register
Prior art date
Application number
TW110125267A
Other languages
English (en)
Other versions
TW202141303A (zh
Inventor
范志軍
薛可
許超
楊作興
Original Assignee
大陸商深圳比特微電子科技有限公司
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 大陸商深圳比特微電子科技有限公司 filed Critical 大陸商深圳比特微電子科技有限公司
Publication of TW202141303A publication Critical patent/TW202141303A/zh
Application granted granted Critical
Publication of TWI766754B publication Critical patent/TWI766754B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, 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/401Transaction verification
    • G06Q20/4014Identity check for transactions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Abstract

本公開涉及執行哈希算法的電路、計算晶片、數據處理設備和方法。一種電路包括:以流水線結構佈置的多個運算級,各自包括第0至第15擴展寄存器;和多個擴展數據運算邏輯模組,各自設置在相鄰運算級之間,並包括基於當前運算級的第2擴展寄存器的擴展數據計算用於後一運算級的第0擴展寄存器的擴展數據的第一子模組、基於當前運算級的第0和第14擴展寄存器的擴展數據計算用於後一運算級的第14擴展寄存器的擴展數據的第二子模組、基於當前運算級的第3擴展寄存器的擴展數據計算用於後一運算級的第1擴展寄存器的擴展數據的第三子模組和基於當前運算級的第1和第15擴展寄存器的擴展數據計算用於後一運算級的第15擴展寄存器的擴展數據的第四子模組。

Description

執行哈希算法的電路、計算晶片、數據處理設備和方法
本申請是以CN申請號為202011504071.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擴展寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據;以及多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在多個運算級中的相應的相鄰兩個運算級之間,相鄰兩個運算級包括第一運算級和在第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括:第一子模組,被配置為基於第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據;第二子模組,被配置為基於第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;第三子模組,被配置為基於第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器中的擴展數據;以及第四子模組,被配置為基於第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;其中,用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據是第一運算級的第i擴展寄存器中儲存的擴展數據,其中4≤i≤15且i為整數。
根據本公開的第二方面,提供了一種用於執行哈希算法的電路,包括:輸入模組,被配置為接收數據;以及運算模組,被配置為基於接收到的數據計算哈希值,運算模組包括:以流水線結構佈置的多個運算級,多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器和第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,每個附加寄存器被配置為儲存用於計算擴展數據的中間數據;以及多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在多個運算級中的相應的相鄰兩個運算級之間,相鄰兩個運算級包括第一運算級和在第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括:第一子模組,被配置為基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器中的中間數據;第二子模組,被配置為基於第一運算級的第一附加寄存器中儲存的中間數據和第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;第三子模組,被配置為基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器中的中間數據;以及第四子模組,被配置為基於第一運算級的第二附加寄存器中儲存的中間數據和第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;其中,用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據是第一運算級的第i擴展寄存器中儲存的擴展數據,其中2≤i≤15且i為整數。
根據本公開的第三方面,提供了一種用於執行哈希算法的電路,包括:輸入模組,被配置為接收數據;以及運算模組,被配置為基於接收到的數據計算哈希值,運算模組包括:以流水線結構佈置的多個運算級,多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,第二附加寄存器被配置為儲存用於計算擴展數據的中間數據;以及多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在多個運算級中的相應的相鄰兩個運算級之間,相鄰兩個運算級包括第一運算級和在第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括:第一子模組,被配置為基於第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據;第二子模組,被配置為基於第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;第三子模組,被配置為基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器中的中間數據;以及第四子模組,被配置為基於第一運算級的第二附加寄存器中儲存的中間數據和第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;其中,用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據是第一運算級的第i擴展寄存器中儲存的擴展數據,其中3≤i≤15且i為整數。
根據本公開的第四方面,提供了一種用於執行哈希算法的電路,包括:輸入模組,被配置為接收數據;以及運算模組,被配置為基於接收到的數據計算哈希值,運算模組包括:以流水線結構佈置的多個運算級,多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,第一附加寄存器被配置為儲存用於計算擴展數據的中間數據;以及多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在多個運算級中的相應的相鄰兩個運算級之間,相鄰兩個運算級包括第一運算級和在第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括:第一子模組,被配置為基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器中的中間數據;第二子模組,被配置為基於第一運算級的第一附加寄存器中儲存的中間數據和第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;第三子模組,被配置為基於第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器中的擴展數據;以及第四子模組,被配置為基於第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;其中,用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據是第一運算級的第i擴展寄存器中儲存的擴展數據,其中4≤i≤15且i為整數,並且用於儲存到第二運算級的第0擴展寄存器中的擴展數據是第一運算級的第2擴展寄存器中儲存的擴展數據。
根據本公開的第五方面,提供了一種計算晶片,其包括如以上方面所述的電路。
根據本公開的第六方面,提供了一種數據處理設備,其包括一個或多個如以上方面所述的計算晶片。
根據本公開的第七方面,提供了一種在用於執行哈希算法的電路中計算擴展數據的方法,該電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,運算模組包括以流水線結構佈置的多個運算級,多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,該方法包括:對於多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級:基於第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據;基於第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;基於第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器中的擴展數據;基於第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;以及將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據,其中4≤i≤15且i為整數。
根據本公開的第八方面,提供了一種在用於執行哈希算法的電路中計算擴展數據的方法,該電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,運算模組包括以流水線結構佈置的多個運算級,多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器和第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,每個附加寄存器被配置為儲存用於計算擴展數據的中間數據,該方法包括:對於多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級:基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器中的中間數據;基於第一運算級的第一附加寄存器中儲存的中間數據和第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器中的中間數據;基於第一運算級的第二附加寄存器中儲存的中間數據和第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;以及將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據,其中2≤i≤15且i為整數。
根據本公開的第九方面,提供了一種在用於執行哈希算法的電路中計算擴展數據的方法,該電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,運算模組包括以流水線結構佈置的多個運算級,多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,第二附加寄存器被配置為儲存用於計算擴展數據的中間數據,該方法包括:對於多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級:基於第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據;基於第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器中的中間數據;基於第一運算級的第二附加寄存器中儲存的中間數據和第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;以及將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據,其中3≤i≤15且i為整數。
根據本公開的第十方面,提供了一種在用於執行哈希算法的電路中計算擴展數據的方法,該電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,運算模組包括以流水線結構佈置的多個運算級,多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,第一附加寄存器被配置為儲存用於計算擴展數據的中間數據,該方法包括:對於多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級:基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器中的中間數據;基於第一運算級的第一附加寄存器中儲存的中間數據和第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;基於第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器中的擴展數據;基於第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;以及將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據,其中4≤i≤15且i為整數,並且將第一運算級的第2擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第0擴展寄存器中的擴展數據。
通過以下參照圖式對本公開的示例性實施例的詳細描述,本公開的其它特徵及其優點將會變得更為清楚。
現在將參照圖式來詳細描述本公開的各種示例性實施例。應當注意,除非另外具體說明,否則在這些實施例中闡述的部件和步驟的相對佈置、數字表達式和數值不限制本公開的範圍。
以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本公開及其應用或使用的任何限制。本領域的技術人員將會理解,它們僅僅說明可以用來實施本公開的示例性方式,而不是窮盡的方式。
對於相關領域普通技術人員已知的技術、方法和設備可能不作詳細討論,但在適當情況下,所述技術、方法和設備應當被視為授權說明書的一部分。
為了更為清楚和直觀地呈現本公開的發明構思,下文中將簡要介紹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:
Wt1 (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 加。在本文中可以將上述Wt 稱為W參數。
注意,以上Σ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 ’= w00 (w1 )+w91 (w14 )。
根據上述內部邏輯,SHA-256在每個運算級上進行的每輪運算需要計算出一個W參數,其隨後在第t+16個運算級上進行的運算中參與計算用於儲存到壓縮儲存器的中間值。但是,在一些場景中,可能需要使用兩個W參數來計算中間值,因此每輪運算需要能夠計算出兩個W參數。
這樣的場景的非限制性示例例如可以是用於執行SHA-256算法的具有32個運算級的流水線結構。圖3示出了用於計算兩個W參數的在第y運算級和第y+1運算級的擴展寄存器中的擴展數據之間的運算邏輯,其中0≤y≤31且y為整數。在圖3中,用實線箭頭指示用於計算第一W參數的數據移動方向,用點劃線箭頭指示用於計算第二W參數的數據移動方向,用點線指示直接移位而不經歷運算的數據移動方向。如圖3所示,第y+1運算級的擴展寄存器R14 中的擴展數據w14 ’是通過三個加法器ADD11、ADD21、ADD31將第y運算級的擴展寄存器R0 中的擴展數據w0 、經σ0 1運算器進行σ0 運算後的第y運算級的擴展寄存器R1 中的擴展數據w1 、第y運算級的擴展寄存器R9 中的擴展數據w9 、經σ1 1運算器進行σ1 運算後的第y運算級的擴展寄存器R14 中的擴展數據w14 依次相加得到的,w14 ’= w00 (w1 )+w91 (w14 )。還如圖3所示,第y+1運算級的擴展寄存器R15 中的擴展數據w15 ’是通過三個加法器ADD12、ADD22、ADD32將第y運算級的擴展寄存器R1 中的擴展數據w1 、經σ0 2運算器進行σ0 運算後的第y運算級的擴展寄存器R2 中的擴展數據w2 、第y運算級的擴展寄存器R10 中的擴展數據w10 、經σ1 2運算器進行σ1 運算後的第y運算級的擴展寄存器R15 中的擴展數據w15 依次相加得到的,w15 ’= w10 (w2 )+w101 (w15 )。由此,這樣一輪運算後可以計算出兩個W參數(w14 ’和w15 ’)。另外,第y運算級的第2擴展寄存器至第15擴展寄存器中的每個擴展寄存器中儲存的擴展數據直接移位到第y+1運算級的第0擴展寄存器至第13擴展寄存器中的相應擴展寄存器中。
通過圖3所示的運算邏輯設計,每輪運算能夠計算出兩個W參數,並且這兩個W參數的計算過程可以並行執行,即利用原來計算一個W參數所需要花費的時間可以得到兩個W參數,由此可以提高流水線結構的運算吞吐率,進一步加快礦機的運算速度進而實現較低的功耗算力比。
然而,從第y運算級的擴展寄存器R0 、R1 、R9 和R14 中的擴展數據計算要儲存在第y+1運算級的擴展寄存器R14 中的擴展數據需要經歷的運算邏輯級數包括4級。從第y運算級的擴展寄存器R1 、R2 、R10 和R15 中的擴展數據計算要儲存在第y+1運算級的擴展寄存器R15 中的擴展數據需要經歷的運算邏輯級數包括4級。因而,即使並行處理這兩個W參數的計算過程,需要經歷的運算邏輯級數也高達4級,這帶來了顯著的計算延時,限制了流水線結構的運算速度,難以進一步實現更低的功耗算力比。
對此,本申請的發明人注意到,第y+1運算級的擴展寄存器R0 與第y運算級的擴展寄存器R2 二者之間存在直連關係,即第y運算級的擴展寄存器R2 中儲存的擴展數據被直接移位至第y+1運算級的擴展寄存器R0 。因此,本申請的發明人想到,可以利用擴展寄存器R0 與R2 的這一直連關係,將用於計算第y+2運算級的擴展寄存器R14 中要儲存的擴展數據的過程中涉及第y+1運算級的擴展寄存器R0 中的擴展數據(即第y運算級的擴展寄存器R2 中的擴展數據)的部分提前到與用於計算第y+1運算級的擴展寄存器R14 中要儲存的擴展數據的過程同時進行,並存入第y+1運算級的擴展寄存器R0 。這樣,可以在將用於計算第y+2運算級的擴展寄存器R14 中要儲存的擴展數據的過程進行拆解後,將拆解出的部分與用於計算第y+1運算級的擴展寄存器R14 中要儲存的擴展數據的過程並行地處理。通過並行處理,可以減少每輪運算中計算擴展數據所需要經歷的運算邏輯級數。
同樣,本申請的發明人也注意到,第y+1運算級的擴展寄存器R1 與第y運算級的擴展寄存器R3 二者之間存在直連關係,即第y運算級的擴展寄存器R3 中儲存的擴展數據被直接移位至第y+1運算級的擴展寄存器R1 。因此,本申請的發明人想到,可以利用擴展寄存器R1 與R3 的這一直連關係,將用於計算第y+2運算級的擴展寄存器R15 中要儲存的擴展數據的過程中涉及第y+1運算級的擴展寄存器R1 中的擴展數據(即第y運算級的擴展寄存器R3 中的擴展數據)的部分提前到與用於計算第y+1運算級的擴展寄存器R15 中要儲存的擴展數據的過程同時進行,並存入第y+1運算級的擴展寄存器R1 。這樣,可以在將用於計算第y+2運算級的擴展寄存器R15 中要儲存的擴展數據的過程進行拆解後,將拆解出的部分與用於計算第y+1運算級的擴展寄存器R15 中要儲存的擴展數據的過程並行地處理。通過並行處理,可以減少每輪運算中計算擴展數據所需要經歷的運算邏輯級數。
因此,本公開提供了具有改進的擴展數據運算邏輯模組的用於執行哈希算法的電路以及改進的在用於執行哈希算法的電路中計算擴展數據的方法,其能夠減少在相鄰運算級之間基於前一運算級的擴展數據計算後一運算級的擴展數據所需要經歷的運算邏輯級數,顯著提高了電路進而包含該電路的計算晶片的運算速度,從而便於實現更低的功耗算力比。
圖4示出了根據本公開的一些實施例的用於執行哈希算法的電路100的示意性方塊圖,其中箭頭表示數據傳遞方向。電路100可以包括輸入模組110和運算模組120。輸入模組110可以被配置為接收數據。運算模組120可以被配置為基於接收到的數據計算哈希值。運算模組120可以包括以流水線結構佈置的多個運算級120-0、…、120-31,每個運算級可以包括第0擴展寄存器R0 至第15擴展寄存器R15 ,每個擴展寄存器可以被配置為儲存當前運算級的擴展數據。
應理解,雖然在圖式中將運算模組120描繪為包括32個運算級,但是如前面已經提到的,本文僅僅以用於執行SHA-256算法的具有包括32個運算級的流水線結構的電路作為非限制性示例,本公開實際上可以適用於每輪運算需要提供兩個W參數的任何合適場景,根據本公開的電路也可以適用於執行現在已知的或以後開發的適用於礦機的任何哈希算法(不限於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-31中的相應的相鄰兩個運算級之間。在本文中,可以將相鄰兩個運算級中在前的運算級稱為第一運算級並將相鄰兩個運算級中在後的運算級稱為第二運算級,注意“第一”和“第二”僅是用於區分而非限制性的。例如,如圖4所示,相鄰兩個運算級120-a、120-b之間設置有擴展數據運算邏輯模組130。每個擴展數據運算邏輯模組130可以包括第一子模組131、第二子模組132、第三子模組133和第四子模組134。
擴展數據運算邏輯模組130可以被配置用於基於第一運算級(例如,120-a)的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級(例如,120-b)的擴展寄存器中的擴展數據。第一子模組131可以被配置為基於第一運算級的第2擴展寄存器R2 中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0 中的擴展數據。第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0 和第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據。第三子模組133可以被配置為基於第一運算級的第3擴展寄存器R3 中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器R1 中的擴展數據。第四子模組134可以被配置為基於第一運算級的第1擴展寄存器R1 和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。另外,用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據可以是第一運算級的第i擴展寄存器中儲存的擴展數據,其中4≤i≤15且i為整數。第一子模組131和第二子模組132可以用於計算第一W參數。第三子模組133和第四子模組134可以用於計算第二W參數。
第一子模組131和第二子模組132可以採用多種協作方式來計算擴展數據,從而提供第一W參數。
在一些實施例中,第一子模組131可以被配置為基於第一運算級的第2擴展寄存器R2 、第3擴展寄存器R3 、第11擴展寄存器R11 中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0 中的擴展數據,以及第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0 和第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據。
在一些實施例中,第一子模組131可以被配置為基於第一運算級的第2擴展寄存器R2 和第3擴展寄存器R3 中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器R0 中的擴展數據,以及第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0 、第9擴展寄存器R9 和第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據。
第三子模組133和第四子模組134可以採用多種協作方式來計算擴展數據,從而提供第二W參數。
在一些實施例中,第三子模組133可以被配置為基於第一運算級的第3擴展寄存器R3 、第4擴展寄存器R4 、第12擴展寄存器R12 中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器R1 中的擴展數據,以及第四子模組134可以被配置為基於第一運算級的第1擴展寄存器R1 和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。
在一些實施例中,第三子模組133可以被配置為基於第一運算級的第3擴展寄存器R3 和第4擴展寄存器R4 中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器R1 中的擴展數據,以及第四子模組134可以被配置為基於第一運算級的第1擴展寄存器R1 、第10擴展寄存器R10 和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。
在一些實施例中,第三子模組133被配置可以為基於第一運算級的第3擴展寄存器R3 和第12擴展寄存器R12 中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器R1 中的擴展數據,以及第四子模組134可以被配置為基於第一運算級的第1擴展寄存器R1 、第2擴展寄存器R2 和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。
根據本公開的實施例的第一子模組131和第二子模組132的任一協作方式與第三子模組133和第四子模組134的任一協作方式可以自由組合,從而提供第一W參數和第二W參數。
下面結合圖5至圖7描述根據本公開的實施例的如圖4所示的電路100中包括擴展數據運算邏輯模組的部分的幾種非限制性示例配置,其示出了第一子模組131和第二子模組132的協作方式與第三子模組133和第四子模組134的協作方式的幾種非限制性示例組合。在這些圖中,以相鄰兩個運算級120-a和120-b為例進行說明,可以理解,在運算模組120中的任意相鄰兩個運算級都可以是以下討論的運算級120-a和120-b。另外,在這些圖中,為了清楚起見,用點線箭頭指示直接移位而不經過運算的擴展數據的移動方向,用實線箭頭指示經由第一子模組131和第二子模組132處理的擴展數據的移動方向,用點劃線箭頭指示經由第三子模組133和第四子模組134處理的擴展數據的移動方向,第一子模組至第四子模組131-134的示意性方塊圖在下方另行給出。
在如圖5所示的示例中,運算級120-b的第0擴展寄存器R0 中的擴展數據w0 ’是通過由第一子模組131處理運算級120-a的第2擴展寄存器R2 中儲存的擴展數據w2 、第3擴展寄存器R3 中儲存的擴展數據w3 和第11擴展寄存器R11 中儲存的擴展數據w11 得到的。具體地,在這個示例中,第一子模組131包括用於執行σ0 運算的σ0 1運算器和用於執行加法運算的全加器FAA1和加法器ADD1,其中擴展數據w3 被輸入到σ0 1運算器,σ0 1運算器的輸出、擴展數據w2 和擴展數據w11 被輸入到全加器FAA1,全加器FAA1的輸出被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級120-b的第0擴展寄存器R0 ,使得w0 ’= w20 (w3 )+w11
進一步如圖5所示,運算級120-b的第14擴展寄存器R14 中的擴展數據w14 ’是通過由第二子模組132處理運算級120-a的第0擴展寄存器R0 中儲存的擴展數據w0 和第14擴展寄存器R14 中儲存的擴展數據w14 得到的。具體地,在這個示例中,第二子模組132包括用於執行σ1 運算的σ1 1運算器以及用於執行加法運算的加法器ADD2,其中擴展數據w14 被輸入到σ1 1運算器,σ1 1運算器的輸出和擴展數據w0 被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級120-b的第14擴展寄存器R14 ,使得w14 ’= w01 (w14 )。
進一步如圖5所示,運算級120-b的第1擴展寄存器R1 中的擴展數據w1 ’是通過由第三子模組133處理運算級120-a的第3擴展寄存器R3 中儲存的擴展數據w3 、第4擴展寄存器R4 中儲存的擴展數據w4 和第12擴展寄存器R12 中儲存的擴展數據w12 得到的。具體地,在這個示例中,第三子模組133包括用於執行σ0 運算的σ0 2運算器以及用於執行加法運算的全加器FAA2和加法器ADD3,其中擴展數據w4 被輸入到σ0 2運算器,σ0 2運算器的輸出、擴展數據w3 和擴展數據w12 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級120-b的第1擴展寄存器R1 ,使得w1 ’= w30 (w4 )+w12
進一步如圖5所示,運算級120-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組134處理運算級120-a的第1擴展寄存器R1 中儲存的擴展數據w1 和第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組134包括用於執行σ1 運算的σ1 2運算器以及用於執行加法運算的加法器ADD4,其中擴展數據w15 被輸入到σ1 2運算器,σ1 2運算器的輸出和擴展數據w1 被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級120-b的第15擴展寄存器R15 ,使得w15 ’= w11 (w15 )。
進一步如圖5所示,運算級120-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級120-b的第(i-2)擴展寄存器中,其中4≤i≤15且i為整數。
在圖5所示的示例中,第一子模組131所經歷的運算邏輯級數為3級,第二子模組132所經歷的運算邏輯級數為2級,第三子模組133所經歷的運算邏輯級數為3級,第四子模組134所經歷的運算邏輯級數為2級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級120-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在如圖6所示的示例中,運算級120-b的第0擴展寄存器R0 中的擴展數據w0 ’是通過由第一子模組131處理運算級120-a的第2擴展寄存器R2 中儲存的擴展數據w2 和第3擴展寄存器R3 中儲存的擴展數據w3 得到的。具體地,在這個示例中,第一子模組131包括σ0 1運算器和加法器ADD1,其中擴展數據w3 被輸入到σ0 1運算器,σ0 1運算器的輸出和擴展數據w2 被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級120-b的第0擴展寄存器R0 ,使得w0 ’= w20 (w3 )。
進一步如圖6所示,運算級120-b的第14擴展寄存器R14 中的擴展數據w14 ’是通過由第二子模組132處理運算級120-a的第0擴展寄存器R0 中儲存的擴展數據w0 、第9擴展寄存器R9 中儲存的擴展數據w9 和第14擴展寄存器R14 中儲存的擴展數據w14 得到的。具體地,在這個示例中,第二子模組132包括σ1 1運算器、全加器FAA1和加法器ADD2,其中擴展數據w14 被輸入到σ1 1運算器,σ1 1運算器的輸出、擴展數據w0 和擴展數據w9 被輸入到全加器FAA1,全加器FAA1的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級120-b的第14擴展寄存器R14 ,使得w14 ’= w0 +w91 (w14 )。
進一步如圖6所示,運算級120-b的第1擴展寄存器R1 中的擴展數據w1 ’是通過由第三子模組133處理運算級120-a的第3擴展寄存器R3 中儲存的擴展數據w3 和第4擴展寄存器R4 中儲存的擴展數據w4 得到的。具體地,在這個示例中,第三子模組133包括σ0 2運算器和加法器ADD3,其中擴展數據w4 被輸入到σ0 2運算器,σ0 2運算器的輸出和擴展數據w3 被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級120-b的第1擴展寄存器R1 ,使得w1 ’= w30 (w4 )。
進一步如圖6所示,運算級120-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組134處理運算級120-a的第1擴展寄存器R1 中儲存的擴展數據w1 、第10擴展寄存器R10 中儲存的擴展數據w10 和第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組134包括σ1 2運算器、全加器FAA2和加法器ADD4,其中擴展數據w15 被輸入到σ1 2運算器,σ1 2運算器的輸出、擴展數據w1 和擴展數據w10 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級120-b的第15擴展寄存器R15 ,使得w15 ’= w1 +w101 (w15 )。
進一步如圖6所示,運算級120-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級120-b的第(i-2)擴展寄存器中,其中4≤i≤15且i為整數。
在圖6所示的示例中,第一子模組131所經歷的運算邏輯級數為2級,第二子模組132所經歷的運算邏輯級數為3級,第三子模組133所經歷的運算邏輯級數為2級,第四子模組134所經歷的運算邏輯級數為3級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級120-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在如圖7所示的示例中,第一子模組131和第二子模組132的協作方式與圖6所示的示例相同,並且運算級120-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級120-b的第(i-2)擴展寄存器中,其中4≤i≤15且i為整數。
進一步如圖7所示,運算級120-b的第1擴展寄存器R1 中的擴展數據w1 ’是通過由第三子模組133處理運算級120-a的第3擴展寄存器R3 中儲存的擴展數據w3 和第12擴展寄存器R12 中儲存的擴展數據w12 得到的。具體地,在這個示例中,第三子模組133包括加法器ADD3,其中擴展數據w3 和w12 被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級120-b的第1擴展寄存器R1 ,使得w1 ’= w3 +w12
進一步如圖7所示,運算級120-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組134處理運算級120-a的第1擴展寄存器R1 中儲存的擴展數據w1 、第2擴展寄存器R2 中儲存的擴展數據w2 和第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組134包括σ0 2運算器、σ1 2運算器、全加器FAA2和加法器ADD4,其中擴展數據w2 被輸入到σ0 2運算器,擴展數據w15 被輸入到σ1 2運算器,σ0 運算與σ1 運算可以同時進行。然後σ0 2運算器的輸出、σ1 2運算器的輸出和擴展數據w1 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級120-b的第15擴展寄存器R15 ,使得w15 ’= w10 (w2 )+σ1 (w15 )。
在圖7所示的示例中,第一子模組131所經歷的運算邏輯級數為2級,第二子模組132所經歷的運算邏輯級數為3級,第三子模組133所經歷的運算邏輯級數為1級,第四子模組134所經歷的運算邏輯級數為3級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級120-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
相應地,本公開也提供了在用於執行哈希算法的電路中計算擴展數據的方法。圖18示出了根據本公開的實施例的在用於執行哈希算法的電路中計算擴展數據的方法500的示例性流程圖。這樣的電路可以包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,其中運算模組可以包括以流水線結構佈置的多個運算級,每個運算級包括第0擴展寄存器至第15擴展寄存器,每個擴展寄存器可以被配置為儲存當前運算級的擴展數據。對於運算模組的多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級,方法500可以包括:在S501處,基於第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據;在S502處,基於第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;在S503處,基於第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器中的擴展數據;在S504處,基於第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;在S505處,將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據,其中4≤i≤15且i為正整數。注意,S501-S505並不需要以順序次序執行,而是可以以任何次序執行,或者可以至少部分地並行執行。
方法500還可以採用與根據以上描述的實施例的子模組之間的各種協作方式的各種組合類似的方式來計算擴展數據,在此不再贅述。方法500可以減少在用於執行哈希算法的電路中計算擴展數據導致的計算延時,從而大幅提高電路進而包含該電路的計算晶片的運算速度,從而實現更低的功耗算力比。
此外,在根據本公開的上述實施例的電路和方法中,使用擴展寄存器R0 、R1 來儲存提前進行的在原本用於計算後續運算級的擴展寄存器R14 、R15 中要儲存的擴展數據的過程中涉及先前運算級的擴展寄存器R2 、R3 中的擴展數據的部分。在一些替代實施例中,也可以使用附加的寄存器來替代地實現擴展寄存器R0 、R1 在上述實施例中所起到的作用。而且,當使用附加的寄存器時,不僅可以用於提前進行在原本用於計算後續運算級的擴展寄存器R14 、R15 中要儲存的擴展數據的過程中涉及先前運算級的擴展寄存器R0 、R1 中的擴展數據的部分,而且可以提前進行在原本用於計算後續運算級的擴展寄存器R14 、R15 中要儲存的擴展數據的過程的任何合適部分。
圖8示出了根據本公開的另外一些實施例的用於執行哈希算法的電路200的示意性方塊圖。其中箭頭表示數據傳遞方向。電路200可以包括輸入模組210和運算模組220。輸入模組210可以被配置為接收數據。運算模組220可以被配置為基於接收到的數據計算哈希值。運算模組220可以包括以流水線結構佈置的多個運算級220-0、…、220-31,每個運算級可以包括第0擴展寄存器R0 至第15擴展寄存器R15 以及第一附加寄存器X1和第二附加寄存器X2。每個擴展寄存器可以被配置為儲存當前運算級的擴展數據,每個附加寄存器可以被配置為儲存用於計算擴展數據的中間數據。在一些實施例中,在最前一個運算級220-0中,第一附加寄存器X1中的中間數據可以與第0擴展寄存器R0 中的擴展數據相同,第二附加寄存器X2中的中間數據可以與第1擴展寄存器R1 中的擴展數據相同。
運算模組220還可以包括多個擴展數據運算邏輯模組230,每個擴展數據運算邏輯模組230設置在運算模組220的多個運算級220-0、…、220-31中的相應的相鄰兩個運算級之間。在本文中,可以將相鄰兩個運算級中在前的運算級稱為第一運算級並將相鄰兩個運算級中在後的運算級稱為第二運算級,注意“第一”和“第二”僅是用於區分而非限制性的。例如,如圖8所示,相鄰兩個運算級220-a、220-b之間設置有擴展數據運算邏輯模組230。每個擴展數據運算邏輯模組230可以包括第一子模組231、第二子模組232、第三子模組233和第四子模組234。
第一子模組231可以被配置為基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器X1中的中間數據。第二子模組232可以被配置為基於第一運算級的第一附加寄存器X1中儲存的中間數據和第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據。第三子模組233可以被配置為基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器X2中的中間數據。第四子模組234可以被配置為基於第一運算級的第二附加寄存器X2中儲存的中間數據和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。另外,用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據可以是第一運算級的第i擴展寄存器中儲存的擴展數據,其中2≤i≤15且i為整數。第一子模組231和第二子模組232可以用於計算第一W參數。第三子模組233和第四子模組234可以用於計算第二W參數。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第2擴展寄存器R2 、第3擴展寄存器R3 和第11擴展寄存器R11 中的兩者或三者中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器X1中的中間數據。
在一些實施例中,第二子模組232可以被配置為基於第一運算級的第0擴展寄存器R0 、第1擴展寄存器R1 和第9擴展寄存器R9 中的一者中儲存的擴展數據以及第一運算級的第一附加寄存器X1中儲存的中間數據和第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據。
在一些實施例中,第三子模組233可以被配置為基於第一運算級的第3擴展寄存器R3 、第4擴展寄存器R4 和第12擴展寄存器R12 中的兩者或三者中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器X2中的中間數據。
在一些實施例中,第四子模組234可以被配置為基於第一運算級的第1擴展寄存器R1 、第2擴展寄存器R2 和第10擴展寄存器R10 中的一者中儲存的擴展數據以及第一運算級的第二附加寄存器X2中儲存的中間數據和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。第一子模組231和第二子模組232可以採用多種協作方式來計算擴展數據,從而提供第一W參數。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第2擴展寄存器R2 、第3擴展寄存器R3 、第11擴展寄存器R11 中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器X1中的中間數據,以及第二子模組232可以被配置為基於第一運算級的第一附加寄存器X1中儲存的中間數據和第一運算級的第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第2擴展寄存器R2 和第3擴展寄存器R3 中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器X1中的中間數據,以及第二子模組234可以被配置為基於第一運算級的第一附加寄存器X1中儲存的中間數據以及第一運算級的第9擴展寄存器R9 和第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第2擴展寄存器R2 和第11擴展寄存器R11 中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器X1中的中間數據,以及第二子模組234可以被配置為基於第一運算級的第一附加寄存器X1中儲存的中間數據以及第1擴展寄存器R1 和第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據。
在一些實施例中,第一子模組231可以被配置為基於第一運算級的第3擴展寄存器R3 和第11擴展寄存器R11 中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器X1中的中間數據,以及第二子模組232可以被配置為基於第一運算級的第一附加寄存器X1中儲存的中間數據以及第一運算級的第0擴展寄存器R0 和第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據。
第三子模組233和第四子模組234可以採用多種協作方式來計算擴展數據,從而提供第二W參數。
在一些實施例中,第三子模組233可以被配置為基於第一運算級的第3擴展寄存器R3 、第4擴展寄存器R4 、第12擴展寄存器R12 中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器X2中的中間數據,以及第四子模組234可以被配置為基於第一運算級的第二附加寄存器X2中儲存的中間數據和第一運算級的第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。
在一些實施例中,第三子模組233可以被配置為基於第一運算級的第3擴展寄存器R3 和第4擴展寄存器R4 中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器X2中的中間數據,以及第四子模組234可以被配置為基於第一運算級的第二附加寄存器X2中儲存的中間數據以及第一運算級的第10擴展寄存器R10 和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。
在一些實施例中,第三子模組233被配置可以為基於第一運算級的第3擴展寄存器R3 和第12擴展寄存器R12 中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器X2中的中間數據,以及第四子模組234可以被配置為基於第一運算級的第二附加寄存器X2中儲存的中間數據以及第2擴展寄存器R2 和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。
在一些實施例中,第三子模組233可以被配置為基於第一運算級的第4擴展寄存器R4 和第12擴展寄存器R12 中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器X2中的中間數據,以及第四子模組234可以被配置為基於第一運算級的第二附加寄存器X2中儲存的中間數據以及第一運算級的第1擴展寄存器R1 和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。
根據本公開的實施例的第一子模組231和第二子模組232的任一協作方式與第三子模組233和第四子模組234的任一協作方式可以自由組合,從而提供第一W參數和第二W參數。
下面結合圖9至圖12描述根據本公開的實施例的如圖8所示的電路200中包括擴展數據運算邏輯模組的部分的幾種非限制性示例配置,其示出了第一子模組231和第二子模組232的協作方式與第三子模組233和第四子模組234的協作方式的幾種非限制性示例組合。在這些圖中,以相鄰兩個運算級220-a和220-b為例進行說明,可以理解,在運算模組220中的任意相鄰兩個運算級都可以是以下討論的運算級220-a和220-b。另外,在這些圖中,為了清楚起見,用點線箭頭指示直接移位而不經過運算的擴展數據的移動方向,用實線箭頭指示經由第一子模組231和第二子模組232處理的擴展數據的移動方向,用點劃線箭頭指示經由第三子模組233和第四子模組234處理的擴展數據的移動方向,第一子模組至第四子模組231-234的示意性方塊圖在下方另行給出。
在如圖9所示的示例中,運算級220-b的第一附加寄存器X1中的中間數據wx1 ’是通過由第一子模組231處理運算級220-a的第2擴展寄存器R2 中儲存的擴展數據w2 、第3擴展寄存器R3 中儲存的擴展數據w3 和第11擴展寄存器R11 中儲存的擴展數據w11 得到的。具體地,在這個示例中,第一子模組231包括σ0 1運算器、全加器FAA1和加法器ADD1,其中擴展數據w3 被輸入到σ0 1運算器,σ0 1運算器的輸出、擴展數據w2 和擴展數據w11 被輸入到全加器FAA1,全加器FAA1的輸出被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的第一附加寄存器X1,使得wx1 ’= w20 (w3 )+w11
進一步如圖9所示,運算級220-b的第14擴展寄存器R14 中的擴展數據w14 ’是通過由第二子模組232處理運算級220-a的第一附加寄存器X1中儲存的中間數據wx1 和運算級220-a的第14擴展寄存器R14 中儲存的擴展數據w14 得到的。具體地,在這個示例中,第二子模組232包括σ1 1運算器和加法器ADD2,其中擴展數據w14 被輸入到σ1 1運算器,σ1 1運算器的輸出和中間數據wx1 被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第14擴展寄存器R14 ,使得w14 ’= wx11 (w14 )。
進一步如圖9所示,運算級220-b的第二附加寄存器X2中的中間數據wx2 ’是通過由第三子模組233處理運算級220-a的第3擴展寄存器R3 中儲存的擴展數據w3 、第4擴展寄存器R4 中儲存的擴展數據w4 和第12擴展寄存器R12 中儲存的擴展數據w12 得到的。具體地,在這個示例中,第三子模組233包括σ0 2運算器、全加器FAA2和加法器ADD3,其中擴展數據w4 被輸入到σ0 2運算器,σ0 2運算器的輸出、擴展數據w3 和擴展數據w12 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級220-b的第二附加寄存器X2,使得wx2 ’= w30 (w4 )+w12
進一步如圖9所示,運算級220-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組234處理運算級220-a的第二附加寄存器X2中儲存的中間數據wx2 和運算級220-a的第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組234包括σ1 2運算器和加法器ADD4,其中擴展數據w15 被輸入到σ1 2運算器,σ1 2運算器的輸出和中間數據wx2 被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級220-b的第15擴展寄存器R15 ,使得w15 ’= wx21 (w15 )。
進一步如圖9所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-2)擴展寄存器中,其中2≤i≤15且i為整數。
在圖9所示的示例中,第一子模組231所經歷的運算邏輯級數為3級,第二子模組232所經歷的運算邏輯級數為2級,第三子模組233所經歷的運算邏輯級數為3級,第四子模組234所經歷的運算邏輯級數為2級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在如圖10所示的示例中,運算級220-b的第一附加寄存器X1中的中間數據wx1 ’是通過由第一子模組231處理運算級220-a的第2擴展寄存器R2 中儲存的擴展數據w2 和第3擴展寄存器R3 中儲存的擴展數據w3 得到的。具體地,在這個示例中,第一子模組231包括σ0 1運算器和加法器ADD1,其中擴展數據w3 被輸入到σ0 1運算器,σ0 1運算器的輸出和擴展數據w2 被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的第一附加寄存器X1,使得wx1 ’= w20 (w3 )。
進一步如圖10所示,運算級220-b的第14擴展寄存器R14 中的擴展數據w14 ’是通過由第二子模組232處理運算級220-a的第一附加寄存器X1中儲存的中間數據wx1 、第9擴展寄存器R9 中儲存的擴展數據w9 和第14擴展寄存器R14 中儲存的擴展數據w14 得到的。具體地,在這個示例中,第二子模組232包括σ1 1運算器、全加器FAA1和加法器ADD2,其中擴展數據w14 被輸入到σ1 1運算器,σ1 1運算器的輸出、中間數據wx1 和擴展數據w9 被輸入到全加器FAA1,全加器FAA1的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第14擴展寄存器R14 ,使得w14 ’= wx1 +w91 (w14 )。
進一步如圖10所示,運算級220-b的第二附加寄存器X2中的中間數據wx2 ’是通過由第三子模組233處理運算級220-a的第3擴展寄存器R3 中儲存的擴展數據w3 和第4擴展寄存器R4 中儲存的擴展數據w4 得到的。具體地,在這個示例中,第三子模組233包括σ0 2運算器和加法器ADD3,其中擴展數據w4 被輸入到σ0 2運算器,σ0 2運算器的輸出和擴展數據w3 被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級220-b的第二附加寄存器X2,使得wx2 ’= w30 (w4 )。
進一步如圖10所示,運算級220-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組234處理運算級220-a的第二附加寄存器X2中儲存的中間數據wx2 、第10擴展寄存器R10 中儲存的擴展數據w10 和第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組234包括σ1 2運算器、全加器FAA2和加法器ADD4,其中擴展數據w15 被輸入到σ1 2運算器,σ1 2運算器的輸出、中間數據wx2 和擴展數據w10 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級220-b的第15擴展寄存器R15 ,使得w15 ’= wx2 +w101 (w15 )。
進一步如圖10所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-2)擴展寄存器中,其中2≤i≤15且i為整數。
在圖10所示的示例中,第一子模組231所經歷的運算邏輯級數為2級,第二子模組232所經歷的運算邏輯級數為3級,第三子模組233所經歷的運算邏輯級數為2級,第四子模組234所經歷的運算邏輯級數為3級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在如圖11所示的示例中,運算級220-b的第一附加寄存器X1中的中間數據wx1 ’是通過由第一子模組231處理運算級220-a的第2擴展寄存器R2 中儲存的擴展數據w2 和第11擴展寄存器R11 中儲存的擴展數據w11 得到的。具體地,在這個示例中,第一子模組231包括加法器ADD1,其中擴展數據w2 和w11 被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的第一附加寄存器X1,使得wx1 ’= w2 + w11
進一步如圖11所示,運算級220-b的第14擴展寄存器R14 中的擴展數據w14 ’是通過由第二子模組232處理運算級220-a的第一附加寄存器X1中儲存的中間數據wx1 、第1擴展寄存器R1 中儲存的擴展數據w1 和第14擴展寄存器R14 中儲存的擴展數據w14 得到的。具體地,在這個示例中,第二子模組232包括σ0 1運算器、σ1 1運算器、全加器FAA1和加法器ADD2。擴展數據w1 被輸入到σ0 1運算器,擴展數據w14 被輸入到σ1 1運算器,σ0 運算和σ1 運算可以同時進行。然後,σ0 1運算器的輸出、σ1 1運算器的輸出和中間數據wx1 被輸入到全加器FAA1,全加器FAA1的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第14擴展寄存器R14 ,使得w14 ’= wx10 (w1 )+σ1 (w14 )。
進一步如圖11所示,運算級220-b的第二附加寄存器X2中的中間數據wx2 ’是通過由第三子模組233處理運算級220-a的第3擴展寄存器R3 中儲存的擴展數據w3 和第12擴展寄存器R12 中儲存的擴展數據w12 得到的。具體地,在這個示例中,第三子模組233包括加法器ADD3,其中擴展數據w3 和w12 被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級220-b的第二附加寄存器X2,使得wx2 ’= w3 +w12
進一步如圖11所示,運算級220-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組234處理運算級220-a的第二附加寄存器X2中儲存的中間數據wx2 、第2擴展寄存器R2 中儲存的擴展數據w2 和第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組234包括σ0 2運算器、σ1 2運算器、全加器FAA2和加法器ADD4,其中擴展數據w2 被輸入到σ0 2運算器,擴展數據w15 被輸入到σ1 2運算器,σ0 運算與σ1 運算可以同時進行。然後σ0 2運算器的輸出、σ1 2運算器的輸出和中間數據wx2 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級220-b的第15擴展寄存器R15 ,使得w15 ’= wx20 (w2 )+σ1 (w15 )。
進一步如圖11所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-2)擴展寄存器中,其中2≤i≤15且i為整數。
在圖11所示的示例中,第一子模組231所經歷的運算邏輯級數為1級,第二子模組232所經歷的運算邏輯級數為3級,第三子模組233所經歷的運算邏輯級數為1級,第四子模組234所經歷的運算邏輯級數為3級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在如圖12所示的示例中,運算級220-b的第一附加寄存器X1中的中間數據wx1 ’是通過由第一子模組231處理運算級220-a的第3擴展寄存器R3 中儲存的擴展數據w3 和第11擴展寄存器R11 中儲存的擴展數據w11 得到的。具體地,在這個示例中,第一子模組231包括σ0 1運算器和加法器ADD1,其中擴展數據w3 被輸入到σ0 1運算器,σ0 1運算器的輸出和擴展數據w11 被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級220-b的第一附加寄存器X1,使得wx1 ’= σ0 (w3 )+w11
進一步如圖12所示,運算級220-b的第14擴展寄存器R14 中的擴展數據w14 ’是通過由第二子模組232處理運算級220-a的第一附加寄存器X1中儲存的中間數據wx1 、第0擴展寄存器R0 中儲存的擴展數據w0 和第14擴展寄存器R14 中儲存的擴展數據w14 得到的。具體地,在這個示例中,第二子模組232包括σ1 1運算器、全加器FAA1和加法器ADD2,其中擴展數據w14 被輸入到σ1 1運算器,σ1 1運算器的輸出、擴展數據w0 和中間數據wx1 被輸入到全加器FAA1,全加器FAA1的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級220-b的第14擴展寄存器R14 ,使得w14 ’= wx1 + w01 (w14 )。
進一步如圖12所示,運算級220-b的第二附加寄存器X2中的中間數據wx2 ’是通過由第三子模組233處理運算級220-a的第4擴展寄存器R4 中儲存的擴展數據w4 和第12擴展寄存器R12 中儲存的擴展數據w12 得到的。具體地,在這個示例中,第三子模組233包括σ0 2運算器和加法器ADD3,其中擴展數據w4 被輸入到σ0 2運算器,σ0 2運算器的輸出和擴展數據w12 被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級220-b的第二附加寄存器X2,使得wx2 ’= σ0 (w4 )+w12
進一步如圖12所示,運算級220-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組234處理運算級220-a的第二附加寄存器X2中儲存的中間數據wx2 、第1擴展寄存器R1 中儲存的擴展數據w1 和第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組234包括σ1 2運算器、全加器FAA2和加法器ADD4,其中擴展數據w15 被輸入到σ1 2運算器,σ1 2運算器的輸出、擴展數據w1 和中間數據wx2 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級220-b的第15擴展寄存器R15 ,使得w15 ’= wx2 +w11 (w15 )。
進一步如圖12所示,運算級220-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級220-b的第(i-2)擴展寄存器中,其中2≤i≤15且i為整數。
在圖12所示的示例中,第一子模組231所經歷的運算邏輯級數為2級,第二子模組232所經歷的運算邏輯級數為3級,第三子模組233所經歷的運算邏輯級數為2級,第四子模組234所經歷的運算邏輯級數為3級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級220-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
相應地,本公開也提供了在用於執行哈希算法的電路中計算擴展數據的方法。圖19示出了根據本公開的實施例的在用於執行哈希算法的電路中計算擴展數據的方法600的示例性流程圖。這樣的電路可以包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,其中運算模組可以包括以流水線結構佈置的多個運算級,每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器和第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,每個附加寄存器被配置為儲存用於計算擴展數據的中間數據。對於運算模組的多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級,方法600可以包括:在S601處,基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器中的中間數據;在S602處,基於第一運算級的第一附加寄存器中儲存的中間數據和第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;在S603處,基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器中的中間數據;在S604處,基於第一運算級的第二附加寄存器中儲存的中間數據和第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;在S605處,將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據,其中2≤i≤15且i為正整數。注意,S601-S605並不需要以順序次序執行,而是可以以任何次序執行,或者可以至少部分地並行執行。
方法600還可以採用與根據以上描述的實施例的子模組之間的各種協作方式的各種組合類似的方式來計算擴展數據,在此不再贅述。方法600可以減少在用於執行哈希算法的電路中計算擴展數據導致的計算延時,從而大幅提高電路進而包含該電路的計算晶片的運算速度,從而實現更低的功耗算力比。
當然,也無需同時用第一附加寄存器和第二附加寄存器來替代地實現擴展寄存器R0 、R1 在上述實施例中所起到的作用,而是可以選擇用第一附加寄存器來替代地實現擴展寄存器R0 在上述實施例中所起到的作用,或者選擇用第二附加寄存器來替代地實現擴展寄存器R1 在上述實施例中所起到的作用。
例如,圖13示出了根據本公開的另外一些實施例的用於執行哈希算法的電路300的示意性方塊圖。其中箭頭表示數據傳遞方向。電路300可以包括輸入模組310和運算模組320。輸入模組310可以被配置為接收數據。運算模組320可以被配置為基於接收到的數據計算哈希值。運算模組320還可以包括多個擴展數據運算邏輯模組330,每個擴展數據運算邏輯模組330設置在運算模組320的多個運算級320-0、…、320-31中的相應的相鄰兩個運算級(例如,320-a與320-b)之間。
電路300與電路100、200相比,區別在於電路300的運算模組320的每個運算級可以包括第0擴展寄存器R0 至第15擴展寄存器R15 和第二附加寄存器X2而沒有包括第一附加寄存器X1,並且相應地,每個擴展數據運算邏輯模組330可以包括如前所述的第一子模組131、第二子模組132、第三子模組233和第四子模組234。在一些實施例中,在最前一個運算級320-0中,第二附加寄存器X2中的中間數據可以與第1擴展寄存器R1 中的擴展數據相同。
在電路300中:第一子模組131可以被配置為基於第一運算級(例如,320-a)的第2擴展寄存器R2 中儲存的擴展數據計算用於儲存到第二運算級(例如,320-b)的第0擴展寄存器R0 中的擴展數據;第二子模組132可以被配置為基於第一運算級的第0擴展寄存器R0 和第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據;第三子模組233可以被配置為基於第一運算級的擴展寄存器R3 中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器X2中的中間數據;以及第四子模組234可以被配置為基於第一運算級的第二附加寄存器X2中儲存的中間數據和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。另外,用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據可以是第一運算級的第i擴展寄存器中儲存的擴展數據,其中3≤i≤15且i為整數。在電路300中,第一子模組131和第二子模組132可以用於計算第一W參數,第三子模組233和第四子模組234可以用於計算第二W參數。
如前所述,第一子模組131和第二子模組132可以採用多種協作方式來計算擴展數據,從而提供第一W參數,其實施例在此不再贅述。同樣,如前所述,第三子模組233和第四子模組234可以採用多種協作方式來計算擴展數據,從而提供第二W參數,其實施例在此亦不再贅述。在電路300的各種實現方式中,根據本公開的實施例的第一子模組131和第二子模組132的任一協作方式與第三子模組233和第四子模組234的任一協作方式可以自由組合,從而提供第一W參數和第二W參數。
下面結合圖14和圖15描述根據本公開的實施例的如圖13所示的電路300中包括擴展數據運算邏輯模組的部分的幾種非限制性示例配置,其示出了第一子模組131和第二子模組132的協作方式與第三子模組233和第四子模組234的協作方式的幾種非限制性示例組合。在這些圖中,以相鄰兩個運算級320-a和320-b為例進行說明,可以理解,在運算模組320中的任意相鄰兩個運算級都可以是以下討論的運算級320-a和320-b。另外,在這些圖中,為了清楚起見,用點線箭頭指示直接移位而不經過運算的擴展數據的移動方向,用實線箭頭指示經由第一子模組131和第二子模組132處理的擴展數據的移動方向,用點劃線箭頭指示經由第三子模組233和第四子模組234處理的擴展數據的移動方向,第一子模組至第四子模組的示意性方塊圖在下方另行給出。
在如圖14所示的示例中,運算級320-b的第0擴展寄存器R0 中的擴展數據w0 ’是通過由第一子模組131處理運算級320-a的第2擴展寄存器R2 中儲存的擴展數據w2 、第3擴展寄存器R3 中儲存的擴展數據w3 和第11擴展寄存器R11 中儲存的擴展數據w11 得到的。具體地,在這個示例中,第一子模組131包括σ0 1運算器、全加器FAA1和加法器ADD1,其中擴展數據w3 被輸入到σ0 1運算器,σ0 1運算器的輸出、擴展數據w2 和擴展數據w11 被輸入到全加器FAA1,全加器FAA1的輸出被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級320-b的第0擴展寄存器R0 ,使得w0 ’= w20 (w3 )+w11
進一步如圖14所示,運算級320-b的第14擴展寄存器R14 中的擴展數據w14 ’是通過由第二子模組132處理運算級320-a的第0擴展寄存器R0 中儲存的擴展數據w0 和第14擴展寄存器R14 中儲存的擴展數據w14 得到的。具體地,在這個示例中,第二子模組132包括σ1 1運算器和加法器ADD2,其中擴展數據w14 被輸入到σ1 1運算器,σ1 1運算器的輸出和擴展數據w0 被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級320-b的第14擴展寄存器R14 ,使得w14 ’= w01 (w14 )。
進一步如圖14所示,運算級320-b的第二附加寄存器X2中的中間數據wx2 ’是通過由第三子模組233處理運算級320-a的第3擴展寄存器R3 中儲存的擴展數據w3 、第4擴展寄存器R4 中儲存的擴展數據w4 和第12擴展寄存器R12 中儲存的擴展數據w12 得到的。具體地,在這個示例中,第三子模組233包括σ0 2運算器、全加器FAA2和加法器ADD3,其中擴展數據w4 被輸入到σ0 2運算器,σ0 2運算器的輸出、擴展數據w3 和擴展數據w12 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級320-b的第二附加寄存器X2,使得wx2 ’= w30 (w4 )+w12
進一步如圖14所示,運算級320-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組234處理運算級320-a的第二附加寄存器X2中儲存的中間數據wx2 和運算級220-a的第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組234包括σ1 2運算器和加法器ADD4,其中擴展數據w15 被輸入到σ1 2運算器,σ1 2運算器的輸出和中間數據wx2 被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級320-b的第15擴展寄存器R15 ,使得w15 ’= wx21 (w15 )。
進一步如圖13所示,運算級320-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級320-b的第(i-2)擴展寄存器中,其中3≤i≤15且i為整數。
在圖14所示的示例中,第一子模組131所經歷的運算邏輯級數為3級,第二子模組132所經歷的運算邏輯級數為2級,第三子模組233所經歷的運算邏輯級數為3級,第四子模組234所經歷的運算邏輯級數為2級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級320-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
在如圖15所示的示例中,運算級320-b的第0擴展寄存器R0 中的擴展數據w0 ’是通過由第一子模組131處理運算級320-a的第2擴展寄存器R2 中儲存的擴展數據w2 和第11擴展寄存器R11 中儲存的擴展數據w11 得到的。具體地,在這個示例中,第一子模組131包括加法器ADD1,其中擴展數據w2 和w11 被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級320-b的第0擴展寄存器R0 ,使得w0 ’= w2 +w11
進一步如圖15所示,運算級320-b的第14擴展寄存器R14 中的擴展數據w14 ’是通過由第二子模組132處理運算級320-a的第0擴展寄存器R0 中儲存的擴展數據w0 、第1擴展寄存器R1 中儲存的擴展數據w1 和第14擴展寄存器R14 中儲存的擴展數據w14 得到的。具體地,在這個示例中,第二子模組132包括σ0 1運算器、σ1 1運算器、全加器FAA1和加法器ADD2,其中w1 被輸入到σ0 1運算器,擴展數據w14 被輸入到σ1 1運算器,σ0 運算和σ1 運算可以同時進行。然後,σ0 1運算器的輸出、σ1 1運算器的輸出和擴展數據w0 被輸入到全加器FAA1,全加器FAA1的輸出被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級320-b的第14擴展寄存器R14 ,使得w14 ’=w00 (w1 )+σ1 (w14 )。
進一步如圖15所示,運算級320-b的第二附加寄存器X2中的中間數據wx2 ’是通過由第三子模組233處理運算級320-a的第3擴展寄存器R3 中儲存的擴展數據w3 和第12擴展寄存器R12 中儲存的擴展數據w12 得到的。具體地,在這個示例中,第三子模組233包括加法器ADD3,其中擴展數據w3 和w12 被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級320-b的第二附加寄存器X2,使得wx2 ’= w3 +w12
進一步如圖15所示,運算級320-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組234處理運算級220-a的第二附加寄存器X2中儲存的中間數據wx2 、第2擴展寄存器R2 中儲存的擴展數據w2 和第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組234包括σ0 2運算器、σ1 2運算器、全加器FAA2和加法器ADD4,其中擴展數據w2 被輸入到σ0 2運算器,擴展數據w15 被輸入到σ1 2運算器,σ0 運算與σ1 運算可以同時進行。然後σ0 2運算器的輸出、σ1 2運算器的輸出和中間數據wx2 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級320-b的第15擴展寄存器R15 ,使得w15 ’= wx20 (w2 )+σ1 (w15 )。
進一步如圖15所示,運算級320-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級320-b的第(i-2)擴展寄存器中,其中3≤i≤15且i為整數。
在圖15所示的示例中,第一子模組131所經歷的運算邏輯級數為1級,第二子模組132所經歷的運算邏輯級數為3級,第三子模組233所經歷的運算邏輯級數為1級,第四子模組234所經歷的運算邏輯級數為3級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級320-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
相應地,本公開也提供了在用於執行哈希算法的電路中計算擴展數據的方法。圖20示出了根據本公開的實施例的在用於執行哈希算法的電路中計算擴展數據的方法700的示例性流程圖。這樣的電路可以包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,其中運算模組可以包括以流水線結構佈置的多個運算級,每個運算級包括第0擴展寄存器至第15擴展寄存器以及第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,第二附加寄存器被配置為儲存用於計算擴展數據的中間數據。對於運算模組的多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級,方法700可以包括:在S701處,基於第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第0擴展寄存器中的擴展數據;在S702處,基於第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;在S703處,基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第二附加寄存器中的中間數據;在S704處,基於第一運算級的第二附加寄存器中儲存的中間數據和第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;在S705處,將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據,其中3≤i≤15且i為正整數。注意,S701-S705並不需要以順序次序執行,而是可以以任何次序執行,或者可以至少部分地並行執行。
方法700還可以採用與根據以上描述的實施例的子模組之間的各種協作方式的各種組合類似的方式來計算擴展數據,在此不再贅述。方法700可以減少在用於執行哈希算法的電路中計算擴展數據導致的計算延時,從而大幅提高電路進而包含該電路的計算晶片的運算速度,從而實現更低的功耗算力比。
又例如,例如,圖16示出了根據本公開的另外一些實施例的用於執行哈希算法的電路400的示意性方塊圖。其中箭頭表示數據傳遞方向。電路400可以包括輸入模組410和運算模組420。輸入模組410可以被配置為接收數據。運算模組420可以被配置為基於接收到的數據計算哈希值。運算模組420還可以包括多個擴展數據運算邏輯模組430,每個擴展數據運算邏輯模組430設置在運算模組420的多個運算級420-0、…、420-31中的相應的相鄰兩個運算級(例如,420-a與420-b)之間。
電路400與電路100、200相比,區別在於電路400的運算模組420的每個運算級可以包括第0擴展寄存器R0 至第15擴展寄存器R15 和第一附加寄存器X1而沒有包括第二附加寄存器X2,並且相應地,每個擴展數據運算邏輯模組430可以包括如前所述的第一子模組231、第二子模組232、第三子模組133和第四子模組134。在一些實施例中,在最前一個運算級220-0中,第一附加寄存器X1中的中間數據可以與第0擴展寄存器R0 中的擴展數據相同。
在電路400中:第一子模組231可以被配置為基於第一運算級(例如,420-a)的擴展寄存器R2 中儲存的擴展數據計算用於儲存到第二運算級(例如,420-b)的第一附加寄存器X1中的中間數據;第二子模組232可以被配置為基於第一運算級的第一附加寄存器X1中儲存的中間數據和第一運算級的第14擴展寄存器R14 中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器R14 中的擴展數據;第三子模組133可以被配置為基於第一運算級的第3擴展寄存器R3 中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器R1 中的擴展數據;第四子模組134可以被配置為基於第一運算級的第1擴展寄存器R1 和第15擴展寄存器R15 中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器R15 中的擴展數據。另外,用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據可以是第一運算級的第i擴展寄存器中儲存的擴展數據,其中4≤i≤15且i為整數,並且用於儲存到第二運算級的第0擴展寄存器中的擴展數據是第一運算級的第2擴展寄存器中儲存的擴展數據。在電路400中,第一子模組231和第二子模組232可以用於計算第一W參數,第三子模組133和第四子模組134可以用於計算第二W參數。
如前所述,第一子模組231和第二子模組232可以採用多種協作方式來計算擴展數據,從而提供第一W參數,其實施例在此不再贅述。同樣,如前所述,第三子模組133和第四子模組134可以採用多種協作方式來計算擴展數據,從而提供第二W參數,其實施例在此亦不再贅述。在電路400的各種實現方式中,根據本公開的實施例的第一子模組231和第二子模組232的任一協作方式與第三子模組133和第四子模組134的任一協作方式可以自由組合,從而提供第一W參數和第二W參數。
下面結合圖17描述根據本公開的實施例的如圖16所示的電路400中包括擴展數據運算邏輯模組的部分的幾種非限制性示例配置,其示出了第一子模組231和第二子模組232的協作方式與第三子模組133和第四子模組134的協作方式的非限制性示例組合。在圖17中,以相鄰兩個運算級420-a和420-b為例進行說明,可以理解,在運算模組420中的任意相鄰兩個運算級都可以是以下討論的運算級420-a和420-b。另外,在這些圖中,為了清楚起見,用點線箭頭指示直接移位而不經過運算的擴展數據的移動方向,用實線箭頭指示經由第一子模組231和第二子模組232處理的擴展數據的移動方向,用點劃線箭頭指示經由第三子模組133和第四子模組134處理的擴展數據的移動方向,第一子模組至第四子模組的示意性方塊圖在下方另行給出。
在如圖17所示的示例中,運算級420-b的第一附加寄存器X1中的中間數據wx1 ’是通過由第一子模組231處理運算級420-a的第2擴展寄存器R2 中儲存的擴展數據w2 、第3擴展寄存器R3 中儲存的擴展數據w3 和第11擴展寄存器R11 中儲存的擴展數據w11 得到的。具體地,在這個示例中,第一子模組231包括σ0 1運算器、全加器FAA1和加法器ADD1,其中擴展數據w3 被輸入到σ0 1運算器,σ0 1運算器的輸出、擴展數據w2 和擴展數據w11 被輸入到全加器FAA1,全加器FAA1的輸出被輸入到加法器ADD1,加法器ADD1的輸出被提供給運算級420-b的第一附加寄存器X1,使得wx1 ’= w20 (w3 )+w11
進一步如圖17所示,運算級420-b的第14擴展寄存器R14 中的擴展數據w14 ’是通過由第二子模組232處理運算級220-a的第一附加寄存器X1中儲存的中間數據wx1 和運算級420-a的第14擴展寄存器R14 中儲存的擴展數據w14 得到的。具體地,在這個示例中,第二子模組232包括σ1 1運算器和加法器ADD2,其中擴展數據w14 被輸入到σ1 1運算器,σ1 1運算器的輸出和中間數據wx1 被輸入到加法器ADD2,加法器ADD2的輸出被提供給運算級420-b的第14擴展寄存器R14 ,使得w14 ’= wx11 (w14 )。
進一步如圖17所示,運算級420-b的第1擴展寄存器R1 中的擴展數據w1 ’是通過由第三子模組133處理運算級420-a的第3擴展寄存器R3 中儲存的擴展數據w3 、第4擴展寄存器R4 中儲存的擴展數據w4 和第12擴展寄存器R12 中儲存的擴展數據w12 得到的。具體地,在這個示例中,第三子模組133包括σ0 2運算器、全加器FAA2和加法器ADD3,其中擴展數據w4 被輸入到σ0 2運算器,σ0 2運算器的輸出、擴展數據w3 和擴展數據w12 被輸入到全加器FAA2,全加器FAA2的輸出被輸入到加法器ADD3,加法器ADD3的輸出被提供給運算級420-b的第1擴展寄存器R1 ,使得w1 ’= w30 (w4 )+w12
進一步如圖17所示,運算級420-b的第15擴展寄存器R15 中的擴展數據w15 ’是通過由第四子模組134處理運算級420-a的第1擴展寄存器R1 中儲存的擴展數據w1 和第15擴展寄存器R15 中儲存的擴展數據w15 得到的。具體地,在這個示例中,第四子模組134包括σ1 2運算器和加法器ADD4,其中擴展數據w15 被輸入到σ1 2運算器,σ1 2運算器的輸出和擴展數據w1 被輸入到加法器ADD4,加法器ADD4的輸出被提供給運算級420-b的第15擴展寄存器R15 ,使得w15 ’= w11 (w15 )。
進一步如圖17所示,運算級420-a的第i擴展寄存器中儲存的擴展數據被直接移位到運算級420-b的第(i-2)擴展寄存器中,其中4≤i≤15且i為整數,並且運算級420-a的第2擴展寄存器中儲存的擴展數據被直接移位到運算級420-b的第0擴展寄存器中。
在圖17所示的示例中,第一子模組231所經歷的運算邏輯級數為3級,第二子模組232所經歷的運算邏輯級數為2級,第三子模組133所經歷的運算邏輯級數為3級,第四子模組134所經歷的運算邏輯級數為2級。四個子模組可以彼此獨立地並行操作,使得最終計算用於運算級420-b的擴展數據所需要經歷的運算邏輯級數減少至3級,大大降低了計算延時,使得流水線結構的運算速度得到大幅提升。
相應地,本公開也提供了在用於執行哈希算法的電路中計算擴展數據的方法。圖21示出了根據本公開的實施例的在用於執行哈希算法的電路中計算擴展數據的方法800的示例性流程圖。這樣的電路可以包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,其中運算模組可以包括以流水線結構佈置的多個運算級,每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,第一附加寄存器被配置為儲存用於計算擴展數據的中間數據。對於運算模組的多個運算級中的包括第一運算級和在第一運算級之後的第二運算級的相鄰兩個運算級,方法800可以包括:在S801處,基於第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第一附加寄存器中的中間數據;在S802處,基於第一運算級的第一附加寄存器中儲存的中間數據和第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第14擴展寄存器中的擴展數據;在S803處,基於第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第1擴展寄存器中的擴展數據;在S804處,基於第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到第二運算級的第15擴展寄存器中的擴展數據;在S805處,將第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第(i-2)擴展寄存器中的擴展數據,其中4≤i≤15且i為正整數,並且將第一運算級的第2擴展寄存器中儲存的擴展數據作為用於儲存到第二運算級的第0擴展寄存器中的擴展數據。注意,S801-S805並不需要以順序次序執行,而是可以以任何次序執行,或者可以至少部分地並行執行。
方法800還可以採用與根據以上描述的實施例的子模組之間的各種協作方式的各種組合類似的方式來計算擴展數據,在此不再贅述。方法800可以減少在用於執行哈希算法的電路中計算擴展數據導致的計算延時,從而大幅提高電路進而包含該電路的計算晶片的運算速度,從而實現更低的功耗算力比。
本公開還可以提供了包括如以上任一實施例所述的電路的計算晶片。本公開還可以提供包括一個或多個如上所述的計算晶片的數據處理設備。根據本公開的例如作為加密貨幣礦機的數據處理設備可以具有實現更低的功耗算力比,從而以更低的成本並且更高效地執行挖礦過程。
說明書及申請專利範圍中的詞語“左”、“右”、“前”、“後”、“頂”、“底”、“上”、“下”、“高”、“低”等,如果存在的話,用於描述性的目的而並不一定用於描述不變的相對位置。應當理解,這樣使用的詞語在適當的情況下是可互換的,使得在此所描述的本公開的實施例,例如,能夠在與在此所示出的或另外描述的那些取向不同的其它取向上操作。例如,在圖式中的裝置倒轉時,原先描述為在其它特徵“之上”的特徵,此時可以描述為在其它特徵“之下”。裝置還可以以其它方式定向(旋轉90度或在其它方位),此時將相應地解釋相對空間關係。
在說明書及申請專利範圍中,稱一個元件位於另一元件“之上”、“附接”至另一元件、“連接”至另一元件、“耦合”至另一元件、或“接觸”另一元件等時,該元件可以直接位於另一元件之上、直接附接至另一元件、直接連接至另一元件、直接耦合至另一元件或直接接觸另一元件,或者可以存在一個或多個中間元件。相對照的是,稱一個元件“直接”位於另一元件“之上”、“直接附接”至另一元件、“直接連接”至另一元件、“直接耦合”至另一元件或“直接接觸”另一元件時,將不存在中間元件。在說明書及申請專利範圍中,一個特徵佈置成與另一特徵“相鄰”,可以指一個特徵具有與相鄰特徵重疊的部分或者位於相鄰特徵上方或下方的部分。
如在此所使用的,詞語“示例性的”意指“用作示例、實例或說明”,而不是作為將被精確複製的“模型”。在此示例性描述的任意實現方式並不一定要被解釋為比其它實現方式優選的或有利的。而且,本公開不受在技術領域、背景技術、發明內容或具體實施方式中所給出的任何所表述的或所暗示的理論所限定。如在此所使用的,詞語“基本上”意指包含由設計或製造的缺陷、器件或元件的容差、環境影響和/或其它因素所致的任意微小的變化。詞語“基本上”還允許由寄生效應、噪聲以及可能存在於實際的實現方式中的其它實際考慮因素所致的與完美的或理想的情形之間的差異。
另外,僅僅為了參考的目的,還可以在本文中使用“第一”、“第二”等類似術語,並且因而並非意圖限定。例如,除非上下文明確指出,否則涉及結構或元件的詞語“第一”、“第二”和其它此類數字詞語並沒有暗示順序或次序。還應理解,“包括/包含”一詞在本文中使用時,說明存在所指出的特徵、整體、步驟、操作、單元和/或組件,但是並不排除存在或增加一個或多個其它特徵、整體、步驟、操作、單元和/或組件以及/或者它們的組合。在本公開中,術語“提供”從廣義上用於涵蓋獲得對象的所有方式,因此“提供某對象”包括但不限於“購買”、“製備/製造”、“佈置/設置”、“安裝/裝配”、和/或“訂購”對象等。
如本文所使用的,術語“和/或”包括相關聯的列出項目中的一個或多個的任何和所有組合。本文中使用的術語只是出於描述特定實施例的目的,並不旨在限制本公開。如本文中使用的,單數形式“一”、“一個”和“該”也旨在包括複數形式,除非上下文另外清楚指示。
本領域技術人員應當意識到,在上述操作之間的邊界僅僅是說明性的。多個操作可以結合成單個操作,單個操作可以分佈於附加的操作中,並且操作可以在時間上至少部分重疊地執行。而且,另選的實施例可以包括特定操作的多個實例,並且在其它各種實施例中可以改變操作順序。但是,其它的修改、變化和替換同樣是可能的。可以以任何方式和/或與其它實施例的方面或元件相結合地組合以上公開的所有實施例的方面和元件,以提供多個附加實施例。因此,本說明書和圖式應當被看作是說明性的,而非限制性的。
雖然已通過示例對本公開的一些特定實施例進行了詳細說明,但本領域的技術人員應該理解,以上示例僅是為了進行說明,而不是為了限制本公開的範圍。在此公開的各實施例可以任意組合,而不脫離本公開的精神和範圍。本領域的技術人員還應理解,可以對實施例進行多種修改而不脫離本公開的範圍和精神。本公開的範圍由所附申請專利範圍來限定。
100:電路 110:輸入模組 120:運算模組 120-0~120-31:運算級 120-a,120-b:運算級 130:擴展數據運算邏輯模組 131:第一子模組 132:第二子模組 133:第三子模組 134:第四子模組 200:電路 210:輸入模組 220:運算模組 220-0~220-31:運算級 220-a,220-b:運算級 230:擴展數據運算邏輯模組 231:第一子模組 232:第二子模組 233:第三子模組 234:第四子模組 300:電路 310:輸入模組 320:運算模組 320-0~320-31:運算級 320-a,320-b:運算級 330:擴展數據運算邏輯模組 400:電路 410:輸入模組 420:運算模組 420-0~420-31:運算級 420-a,420-b:運算級 430:擴展數據運算邏輯模組 500,600,700,800:方法 ADD1~ADD4:加法器 ADD11,ADD21,ADD31:加法器 ADD12,ADD22,ADD32:加法器 FAA1,FAA2:全加器 R0 ~R15 :擴展寄存器 A~H:壓縮寄存器 X1:第一附加寄存器 X2:第二附加寄存器
構成說明書的一部分的圖式描述了本公開的實施例,並且連同說明書一起用於解釋本公開的原理。
參照圖式,根據下面的詳細描述,可以更加清楚地理解本公開,其中:
圖1示出了用於執行SHA-256算法的具有64個運算級的示例性流水線結構的示意圖;
圖2示意性示出了圖1中的流水線結構中的相鄰兩個運算級的擴展寄存器中的擴展數據之間的常規運算邏輯;
圖3示意性示出了在圖1中的流水線結構被改造為具有32個運算級的情況下相鄰兩個運算級的擴展寄存器中的擴展數據之間的運算邏輯;
圖4示出了根據本公開的一些實施例的用於執行哈希算法的電路的示意性方塊圖;
圖5至圖7示意性示出了根據本公開的實施例的如圖4所示的電路中包括擴展數據運算邏輯模組的部分的示例性配置;
圖8示出了根據本公開的一些實施例的用於執行哈希算法的電路的示意性方塊圖;
圖9至圖12示意性示出了根據本公開的實施例的如圖8所示的電路中包括擴展數據運算邏輯模組的部分的示例性配置;
圖13示出了根據本公開的一些實施例的用於執行哈希算法的電路的示意性方塊圖;
圖14和圖15示意性示出了根據本公開的實施例的如圖13所示的電路中包括擴展數據運算邏輯模組的部分的示例性配置;
圖16示出了根據本公開的一些實施例的用於執行哈希算法的電路的示意性方塊圖;
圖17示意性示出了根據本公開的實施例的如圖16所示的電路中包括擴展數據運算邏輯模組的部分的示例性配置;以及
圖18至圖21示出了根據本公開的實施例的用於計算擴展數據的方法的示例性流程圖。
注意,在以下說明的實施方式中,有時在不同的圖式之間共同使用同一圖式標記來表示相同部分或具有相同功能的部分,而省略其重複說明。在本說明書中,使用相似的標號和字母表示類似項,因此,一旦某一項在一個圖式中被定義,則在隨後的圖式中不需要對其進行進一步討論。
為了便於理解,在圖式等中所示的各結構的位置、尺寸及範圍等有時不表示實際的位置、尺寸及範圍等。因此,所公開的發明並不限於圖式等所公開的位置、尺寸及範圍等。此外,圖式不必按比例繪製,一些特徵可能被放大以示出具體組件的細節。
120-a,120-b:運算級
131:第一子模組
132:第二子模組
133:第三子模組
134:第四子模組
ADD1~ADD4:加法器
FAA1,FAA2:全加器
R0~R15:擴展寄存器

Claims (23)

  1. 一種用於執行哈希算法的電路,包括: 輸入模組,被配置為接收數據;以及 運算模組,被配置為基於接收到的數據計算哈希值,所述運算模組包括: 以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據;以及 多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在所述多個運算級中的相應的相鄰兩個運算級之間,所述相鄰兩個運算級包括第一運算級和在所述第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括: 第一子模組,被配置為基於所述第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據; 第二子模組,被配置為基於所述第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據; 第三子模組,被配置為基於所述第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第1擴展寄存器中的擴展數據;以及 第四子模組,被配置為基於所述第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據; 其中,用於儲存到所述第二運算級的第(i-2)擴展寄存器中的擴展數據是所述第一運算級的第i擴展寄存器中儲存的擴展數據,其中4≤i≤15且i為整數。
  2. 如請求項1所述的用於執行哈希算法的電路,其中,所述第一子模組被配置為基於所述第一運算級的第2擴展寄存器、第3擴展寄存器、第11擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據。
  3. 如請求項1所述的用於執行哈希算法的電路,其中,所述第一子模組被配置為基於所述第一運算級的第2擴展寄存器和第3擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據,以及所述第二子模組被配置為基於所述第一運算級的第0擴展寄存器、第9擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據。
  4. 如請求項1所述的用於執行哈希算法的電路,其中,所述第三子模組被配置為基於所述第一運算級的第3擴展寄存器、第4擴展寄存器、第12擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第1擴展寄存器中的擴展數據。
  5. 如請求項1所述的用於執行哈希算法的電路,其中,所述第三子模組被配置為基於所述第一運算級的第3擴展寄存器和第4擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第1擴展寄存器中的擴展數據,以及所述第四子模組被配置為基於所述第一運算級的第1擴展寄存器、第10擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
  6. 如請求項1所述的用於執行哈希算法的電路,其中,所述第三子模組被配置為基於所述第一運算級的第3擴展寄存器和第12擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第1擴展寄存器中的擴展數據,以及所述第四子模組被配置為基於所述第一運算級的第1擴展寄存器、第2擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
  7. 一種用於執行哈希算法的電路,包括: 輸入模組,被配置為接收數據;以及 運算模組,被配置為基於接收到的數據計算哈希值,所述運算模組包括: 以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器和第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,每個附加寄存器被配置為儲存用於計算擴展數據的中間數據;以及 多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在所述多個運算級中的相應的相鄰兩個運算級之間,所述相鄰兩個運算級包括第一運算級和在所述第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括: 第一子模組,被配置為基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第一附加寄存器中的中間數據; 第二子模組,被配置為基於所述第一運算級的第一附加寄存器中儲存的中間數據和所述第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據; 第三子模組,被配置為基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第二附加寄存器中的中間數據;以及 第四子模組,被配置為基於所述第一運算級的第二附加寄存器中儲存的中間數據和所述第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據; 其中,用於儲存到所述第二運算級的第(i-2)擴展寄存器中的擴展數據是所述第一運算級的第i擴展寄存器中儲存的擴展數據,其中2≤i≤15且i為整數。
  8. 如請求項7所述的用於執行哈希算法的電路,其中,所述第一子模組被配置為基於所述第一運算級的第2擴展寄存器、第3擴展寄存器、第11擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第一附加寄存器中的中間數據。
  9. 如請求項7所述的用於執行哈希算法的電路,其中,所述第一子模組被配置為基於所述第一運算級的第2擴展寄存器和第3擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第一附加寄存器中的中間數據,以及所述第二子模組被配置為基於所述第一運算級的第一附加寄存器中儲存的中間數據以及所述第一運算級的第9擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據。
  10. 如請求項7所述的用於執行哈希算法的電路,其中,所述第一子模組被配置為基於所述第一運算級的第2擴展寄存器和第11擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第一附加寄存器中的中間數據,以及所述第二子模組被配置為基於所述第一運算級的第一附加寄存器中儲存的中間數據以及所述第一運算級的第1擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據。
  11. 如請求項7所述的用於執行哈希算法的電路,其中,所述第一子模組被配置為基於所述第一運算級的第3擴展寄存器和第11擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第一附加寄存器中的中間數據,以及所述第二子模組被配置為基於所述第一運算級的第一附加寄存器中儲存的中間數據以及所述第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據。
  12. 如請求項7所述的用於執行哈希算法的電路,其中,所述第三子模組被配置為基於所述第一運算級的第3擴展寄存器、第4擴展寄存器、第12擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第二附加寄存器中的中間數據。
  13. 如請求項7所述的用於執行哈希算法的電路,其中,所述第三子模組被配置為基於所述第一運算級的第3擴展寄存器和第4擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第二附加寄存器中的中間數據,以及所述第四子模組被配置為基於所述第一運算級的第二附加寄存器中儲存的中間數據以及所述第一運算級的第10擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
  14. 如請求項7所述的用於執行哈希算法的電路,其中,所述第三子模組被配置為基於所述第一運算級的第3擴展寄存器和第12擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第二附加寄存器中的中間數據,以及所述第四子模組被配置為基於所述第一運算級的第二附加寄存器中儲存的中間數據以及所述第一運算級的第2擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
  15. 如請求項7所述的用於執行哈希算法的電路,其中,所述第三子模組被配置為基於所述第一運算級的第4擴展寄存器和第12擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第二附加寄存器中的中間數據,以及所述第四子模組被配置為基於所述第一運算級的第二附加寄存器中儲存的中間數據以及所述第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據。
  16. 一種用於執行哈希算法的電路,包括: 輸入模組,被配置為接收數據;以及 運算模組,被配置為基於接收到的數據計算哈希值,所述運算模組包括: 以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,所述第二附加寄存器被配置為儲存用於計算擴展數據的中間數據;以及 多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在所述多個運算級中的相應的相鄰兩個運算級之間,所述相鄰兩個運算級包括第一運算級和在所述第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括: 第一子模組,被配置為基於所述第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據; 第二子模組,被配置為基於所述第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據; 第三子模組,被配置為基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第二附加寄存器中的中間數據;以及 第四子模組,被配置為基於所述第一運算級的第二附加寄存器中儲存的中間數據和所述第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據; 其中,用於儲存到所述第二運算級的第(i-2)擴展寄存器中的擴展數據是所述第一運算級的第i擴展寄存器中儲存的擴展數據,其中3≤i≤15且i為整數。
  17. 一種用於執行哈希算法的電路,包括: 輸入模組,被配置為接收數據;以及 運算模組,被配置為基於接收到的數據計算哈希值,所述運算模組包括: 以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,所述第一附加寄存器被配置為儲存用於計算擴展數據的中間數據;以及 多個擴展數據運算邏輯模組,每個擴展數據運算邏輯模組設置在所述多個運算級中的相應的相鄰兩個運算級之間,所述相鄰兩個運算級包括第一運算級和在所述第一運算級之後的第二運算級,每個擴展數據運算邏輯模組包括: 第一子模組,被配置為基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第一附加寄存器中的中間數據; 第二子模組,被配置為基於所述第一運算級的第一附加寄存器中儲存的中間數據和所述第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據; 第三子模組,被配置為基於所述第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第1擴展寄存器中的擴展數據;以及 第四子模組,被配置為基於所述第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據; 其中,用於儲存到所述第二運算級的第(i-2)擴展寄存器中的擴展數據是所述第一運算級的第i擴展寄存器中儲存的擴展數據,其中4≤i≤15且i為整數,並且用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據是所述第一運算級的第2擴展寄存器中儲存的擴展數據。
  18. 一種計算晶片,包括如請求項1-17中任一項所述的用於執行哈希算法的電路。
  19. 一種數據處理設備,包括一個或多個如請求項18所述的計算晶片。
  20. 一種在用於執行哈希算法的電路中計算擴展數據的方法,所述用於執行哈希算法的電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,所述運算模組包括以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,所述計算擴展數據的方法包括: 對於所述多個運算級中的包括第一運算級和在所述第一運算級之後的第二運算級的相鄰兩個運算級: 基於所述第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據; 基於所述第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據; 基於所述第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第1擴展寄存器中的擴展數據; 基於所述第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據;以及 將所述第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到所述第二運算級的第(i-2)擴展寄存器中的擴展數據,其中4≤i≤15且i為整數。
  21. 一種在用於執行哈希算法的電路中計算擴展數據的方法,所述用於執行哈希算法的電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,所述運算模組包括以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器和第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,每個附加寄存器被配置為儲存用於計算擴展數據的中間數據,所述計算擴展數據的方法包括: 對於所述多個運算級中的包括第一運算級和在所述第一運算級之後的第二運算級的相鄰兩個運算級: 基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第一附加寄存器中的中間數據; 基於所述第一運算級的第一附加寄存器中儲存的中間數據和所述第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據; 基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第二附加寄存器中的中間數據; 基於所述第一運算級的第二附加寄存器中儲存的中間數據和所述第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據;以及 將所述第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到所述第二運算級的第(i-2)擴展寄存器中的擴展數據,其中2≤i≤15且i為整數。
  22. 一種在用於執行哈希算法的電路中計算擴展數據的方法,所述用於執行哈希算法的電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,所述運算模組包括以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第二附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,所述第二附加寄存器被配置為儲存用於計算擴展數據的中間數據,所述計算擴展數據的方法包括: 對於所述多個運算級中的包括第一運算級和在所述第一運算級之後的第二運算級的相鄰兩個運算級: 基於所述第一運算級的第2擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據; 基於所述第一運算級的第0擴展寄存器和第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據; 基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第二附加寄存器中的中間數據; 基於所述第一運算級的第二附加寄存器中儲存的中間數據和所述第一運算級的第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據;以及 將所述第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到所述第二運算級的第(i-2)擴展寄存器中的擴展數據,其中3≤i≤15且i為整數。
  23. 一種在用於執行哈希算法的電路中計算擴展數據的方法,所述用於執行哈希算法的電路包括被配置為接收數據的輸入模組和被配置為基於接收到的數據計算哈希值的運算模組,所述運算模組包括以流水線結構佈置的多個運算級,所述多個運算級中的每個運算級包括第0擴展寄存器至第15擴展寄存器以及第一附加寄存器,每個擴展寄存器被配置為儲存當前運算級的擴展數據,所述第一附加寄存器被配置為儲存用於計算擴展數據的中間數據,所述計算擴展數據的方法包括: 對於所述多個運算級中的包括第一運算級和在所述第一運算級之後的第二運算級的相鄰兩個運算級: 基於所述第一運算級的擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第一附加寄存器中的中間數據; 基於所述第一運算級的第一附加寄存器中儲存的中間數據和所述第一運算級的第14擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第14擴展寄存器中的擴展數據; 基於所述第一運算級的第3擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第1擴展寄存器中的擴展數據; 基於所述第一運算級的第1擴展寄存器和第15擴展寄存器中儲存的擴展數據計算用於儲存到所述第二運算級的第15擴展寄存器中的擴展數據;以及 將所述第一運算級的第i擴展寄存器中儲存的擴展數據作為用於儲存到所述第二運算級的第(i-2)擴展寄存器中的擴展數據,其中4≤i≤15且i為整數,並且將所述第一運算級的第2擴展寄存器中儲存的擴展數據作為用於儲存到所述第二運算級的第0擴展寄存器中的擴展數據。
TW110125267A 2020-12-18 2021-07-09 執行哈希算法的電路、計算晶片、數據處理設備和方法 TWI766754B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011504071.7A CN114648318A (zh) 2020-12-18 2020-12-18 执行哈希算法的电路、计算芯片、加密货币矿机和方法
CN202011504071.7 2020-12-18

Publications (2)

Publication Number Publication Date
TW202141303A TW202141303A (zh) 2021-11-01
TWI766754B true TWI766754B (zh) 2022-06-01

Family

ID=80783465

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110125267A TWI766754B (zh) 2020-12-18 2021-07-09 執行哈希算法的電路、計算晶片、數據處理設備和方法

Country Status (3)

Country Link
CN (1) CN114648318A (zh)
TW (1) TWI766754B (zh)
WO (1) WO2022127084A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111562808A (zh) * 2020-06-22 2020-08-21 深圳比特微电子科技有限公司 时钟电路系统、计算芯片、算力板和数字货币挖矿机
CN111612622A (zh) * 2020-05-20 2020-09-01 深圳比特微电子科技有限公司 用于实现散列算法的电路和方法
CN111813452A (zh) * 2020-08-19 2020-10-23 深圳比特微电子科技有限公司 用于执行散列算法的运算电路、芯片和计算装置
CN111930682A (zh) * 2020-07-16 2020-11-13 深圳比特微电子科技有限公司 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10979214B2 (en) * 2018-07-24 2021-04-13 Martin Spence Denham Secure hash algorithm implementation
CN110543481B (zh) * 2019-08-23 2022-12-06 紫光展锐(重庆)科技有限公司 数据处理方法、装置、计算机设备及存储介质
CN111600699A (zh) * 2020-06-17 2020-08-28 深圳比特微电子科技有限公司 用于实现散列算法的电路和方法
CN213518334U (zh) * 2020-12-18 2021-06-22 深圳比特微电子科技有限公司 执行哈希算法的电路、计算芯片和加密货币矿机

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111612622A (zh) * 2020-05-20 2020-09-01 深圳比特微电子科技有限公司 用于实现散列算法的电路和方法
CN111562808A (zh) * 2020-06-22 2020-08-21 深圳比特微电子科技有限公司 时钟电路系统、计算芯片、算力板和数字货币挖矿机
CN111930682A (zh) * 2020-07-16 2020-11-13 深圳比特微电子科技有限公司 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机
CN111813452A (zh) * 2020-08-19 2020-10-23 深圳比特微电子科技有限公司 用于执行散列算法的运算电路、芯片和计算装置

Also Published As

Publication number Publication date
CN114648318A (zh) 2022-06-21
WO2022127084A1 (zh) 2022-06-23
TW202141303A (zh) 2021-11-01

Similar Documents

Publication Publication Date Title
KR102137956B1 (ko) 블록 마이닝 방법 및 장치
WO2021233198A1 (zh) 用于执行散列算法的电路和方法
Rudra et al. Efficient Rijndael encryption implementation with composite field arithmetic
Güneysu Utilizing hard cores of modern FPGA devices for high-performance cryptography
JP3302043B2 (ja) 暗号通信方法及びそのシステム
JP4177526B2 (ja) 乗算剰余演算方法および乗算剰余回路
TWI766754B (zh) 執行哈希算法的電路、計算晶片、數據處理設備和方法
CN213518334U (zh) 执行哈希算法的电路、计算芯片和加密货币矿机
CN109033847B (zh) Aes加密运算单元、aes加密电路及其加密方法
WO2022127085A1 (zh) 执行哈希算法的电路、计算芯片、数据处理设备和方法
CN213482935U (zh) 执行哈希算法的电路、计算芯片和加密货币矿机
Van Beirendonck et al. A Lyra2 FPGA core for Lyra2REv2-based cryptocurrencies
CN109033023B (zh) 一种普通轮变换运算单元、普通轮变换电路及aes加密电路
CN108989018B (zh) 一种aes加密单元、aes加密电路及加密方法
JP3907976B2 (ja) F関数内部にspn構造を用いた演算装置および演算方法
KR100954843B1 (ko) 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체
Bernstein What output size resists collisions in a xor of independent expansions
Satoh et al. High-Speed MARS Hardware.
CN109033894B (zh) 普通轮变换运算单元、普通轮变换电路及其aes加密电路
CN108964876B (zh) 普通轮变换运算单元、普通轮变换电路及aes加密电路
CN109150496B (zh) Aes加密运算单元、aes加密电路及加密方法
CN114860318A (zh) 运算电路、计算芯片、加密货币矿机和运算电路制造方法
Stefan Hardware framework for the rabbit stream cipher
Wang et al. Optimized implementations of stream cipher ZUC-256 algorithm
Kodali et al. Implementations of Sunar-Koc multiplier using FPGA platform and wsn node