TWI775514B - 運算核、計算晶片和數據處理設備 - Google Patents

運算核、計算晶片和數據處理設備 Download PDF

Info

Publication number
TWI775514B
TWI775514B TW110124791A TW110124791A TWI775514B TW I775514 B TWI775514 B TW I775514B TW 110124791 A TW110124791 A TW 110124791A TW 110124791 A TW110124791 A TW 110124791A TW I775514 B TWI775514 B TW I775514B
Authority
TW
Taiwan
Prior art keywords
clock
module
computing
stage
clock signal
Prior art date
Application number
TW110124791A
Other languages
English (en)
Other versions
TW202138998A (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 TW202138998A publication Critical patent/TW202138998A/zh
Application granted granted Critical
Publication of TWI775514B publication Critical patent/TWI775514B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Abstract

本公開涉及運算核、計算晶片和數據處理設備。一種運算核包括被配置為接收數據塊的輸入模組、被配置為對接收到的數據塊進行哈希運算的運算模組和時鐘模組。運算模組包括:第一哈希引擎,包括第一多個運算級,第一多個運算級以流水線結構佈置使得基於數據塊的數據信號沿著第一多個運算級依次傳遞;以及第二哈希引擎,包括第二多個運算級,第二多個運算級以流水線結構佈置使得從第一哈希引擎接收的數據信號沿著第二多個運算級依次傳遞。時鐘模組被配置為向第一哈希引擎和第二哈希引擎提供時鐘信號,其中,第一哈希引擎內的時鐘信號的傳遞方向與第二哈希引擎內的時鐘信號的傳遞方向相反。

Description

運算核、計算晶片和數據處理設備
本公開涉及用於進行哈希運算的運算核,並且更具體地,涉及運算核、計算晶片和數據處理設備(例如,加密貨幣礦機)。
比特幣系統是最早提出並且目前得到最廣泛認可的區塊鏈系統。比特幣系統的主要作用之一是用作去中心化的公共記帳本,其可以記錄各種金融交易。之所以稱為“去中心化”,是因為比特幣不是由單一的中心化的貨幣機構發行的,而是依據特定算法通過運算來產生的。比特幣系統使用計算機網路的各節點構成的分布式數據庫來確認並記錄所有的交易行為,並使用密碼學設計來確保安全性。
目前比特幣協議採用安全哈希算法SHA(Secure Hash Algorithm)-256。SHA系列算法是美國標準與技術研究所發佈的,其中SHA-256算法是一種哈希長度為256位的安全哈希算法。
根據比特幣協議,第一個成功確定候選區塊的工作量證明POW(proof of work)的節點有權將該區塊添加到區塊鏈,並有權生成新的加密貨幣單元作為獎勵。這個過程就被稱為“挖礦”,執行比特幣算法的節點被稱為挖礦機或礦機。
使用專用集成電路(ASIC)執行挖礦過程的礦機是指使用ASIC晶片作為核心運算零件的礦機。這種ASIC晶片簡單而高效,例如比特幣採用SHA-256算法,那麼比特幣ASIC礦機晶片可以被設計用於執行SHA-256算法。ASIC礦機在算力上相比於其它類型的礦機具有很大優勢。對於礦機計算晶片而言,晶片尺寸決定晶片成本,晶片運行速度決定礦機運行速度即算力,晶片功耗決定耗電程度即挖礦成本。因此,設計ASIC礦機的關鍵在於改善晶片尺寸、晶片運行速度和晶片功耗。
根據本公開的第一方面,提供了一種運算核,包括:輸入模組,被配置為接收數據塊;運算模組,被配置為對接收到的數據塊進行哈希運算,所述運算模組包括第一哈希引擎和第二哈希引擎,第一哈希引擎包括第一多個運算級,所述第一多個運算級以流水線結構佈置使得基於所述數據塊的數據信號沿著所述第一多個運算級依次傳遞,第二哈希引擎包括第二多個運算級,所述第二多個運算級以流水線結構佈置使得從所述第一哈希引擎接收的數據信號沿著所述第二多個運算級依次傳遞,其中所述第一多個運算級和所述第二多個運算級中的每個運算級對從前一運算級接收的數據信號進行運算並將經該運算級運算的數據信號提供給後一運算級;以及時鐘模組,被配置為向所述第一哈希引擎和所述第二哈希引擎提供時鐘信號,其中,所述第一哈希引擎內的時鐘信號的傳遞方向與所述第二哈希引擎內的時鐘信號的傳遞方向相反。
根據本公開的第二方面,提供了一種計算晶片,包括一個或多個如前所述的運算核。
根據本公開的第三方面,提供了一種計算晶片,包括多個如前所述的運算核,所述多個所述運算核被佈置在多個列中,每列運算核的時鐘模組經由共同的時鐘信道接收時鐘信號。
根據本公開的第四方面,提供了一種數據處理設備,包括一個或多個如前所述的計算晶片。
通過以下參照圖式對本公開的示例性實施例的詳細描述,本公開的其它特徵及其優點將會變得更為清楚。
現在將參照圖式來詳細描述本公開的各種示例性實施例。應當注意,除非另外具體說明,否則在這些實施例中闡述的部件和步驟的相對佈置、數字表達式和數值不限制本公開的範圍。
以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本公開及其應用或使用的任何限制。也就是說,本文中的哈希引擎是以示例性的方式示出,來說明本公開中的電路的不同實施例,而並非意圖限制。本領域的技術人員將會理解,它們僅僅說明可以用來實施本公開的示例性方式,而不是窮盡的方式。
對於相關領域普通技術人員已知的技術、方法和設備可能不作詳細討論,但在適當情況下,所述技術、方法和設備應當被視為授權說明書的一部分。
礦機的計算晶片通常包括頂層模組和運算核。頂層模組用於執行通信功能、控制功能、輸入輸出IO功能、時鐘PLL功能等功能。運算核用於核心的計算運算。運算核從頂層模組得到運算任務,並將運算結果反饋給頂層模組。對於比特幣挖礦而言,完整的計算通常需要兩輪64次循環(執行兩次SHA-256算法,這通常被稱為雙哈希(double hash)),即128拍運算。一些優化方法可以減少若干拍(例如,6拍)運算。在根據本公開的實施例中,主要以運算核執行兩次SHA-256算法的運算(即128拍運算)為例進行說明,但是本領域技術人員可以理解,本公開不限於此,並且可以適用於任何拍數的運算。本文中所提及的SHA-256算法包括公知可知的任何版本的SHA-256算法及其變型例和修改例。
總的來說,目前比特幣挖礦需要進行的運算拍數仍然較多。在本公開中,為了提升運算吞吐量,運算核可以被配置為具有以流水線結構佈置的多個運算級。圖10示意性示出了用於執行SHA-256算法的示例性流水線結構,該流水線結構包括64個運算級,每個運算級有8個壓縮寄存器A-H和16個擴展寄存器0-15。第1運算級可以接收輸入的數據塊,並將其分成8個32位數據分別存入壓縮寄存器A-H中,然後對其進行運算處理並提供給第2運算級。之後,每個運算級對其接收到的前一運算級的運算結果進行運算並將自己的運算結果提供給後一運算級。最終在經過64個運算級的運算後,運算核可以輸出對輸入數據塊執行過一次SHA-256算法的哈希運算結果。如此,當流水線結構中的所有運算級滿載(即所有運算級都接收有數據並進行運算處理)時,運算核在每一拍都能輸出一個運算結果,由此運算吞吐率得到大幅提升。
作為非限制性示例,對於需要執行兩次SHA-256算法的礦機計算晶片運算核來說,總共需要128個運算級。運算核可以包括兩個哈希引擎,每個哈希引擎可以包括64個運算級並且被配置用於執行SHA-256算法。每個哈希引擎例如可以具有如圖10所示的配置。可以理解,本公開並不對哈希引擎執行的哈希算法進行特別限制,運算核的哈希引擎實際上可以用於執行現在已知的或以後開發的適用於礦機的任何哈希算法(不限於SHA系列算法),並且相應地可以包括對應數量的運算級。
當按照流水線結構來設計運算核的運算時,需要向流水線結構中的每個運算級提供時鐘信號。在一種情況下,運算核中的時鐘信號的傳遞方向可以與流水線結構中的數據信號傳遞方向相同(正向時鐘結構),即從流水線結構中的最前一個運算級傳遞到最後一個運算級,在這樣的情況下時鐘週期可以更小,相應地晶片頻率可以更快,達到更高性能,但是在這樣的情況下,流水線結構中每個運算級處的寄存器的保持時間不容易滿足,晶片可能無法正常工作。在另一種情況下,運算核中的時鐘信號的傳遞方向可以與流水線結構中的數據信號傳遞方向相反(反向時鐘結構),即從流水線結構中的最後一個運算級傳遞到最前一個運算級,在這樣的情況下更容易滿足流水線結構中每個運算級處的寄存器的保持時間,使得數據能夠被穩定地打入寄存器,但是在這樣的情況下,會犧牲晶片的頻率從而導致晶片的性能降低。此外,在這兩種情況下,時鐘信號都需要遍歷運算核中的流水線結構上的每個運算級,時鐘信號的傳遞級數通常多達128級。然而,時鐘信號傳播得越遠,時鐘信號的上升沿和/或下降沿的畸變程度會越來越大,導致時鐘信號的形狀劣化,占空比越來越差。當時鐘信號沿著數據信號的傳遞方向傳播到位於流水線結構下游的運算級(例如,第128運算級)或者沿著與數據信號的傳遞方向相反的方向傳播到位於流水線結構上游的運算級(例如,第1運算級)時,時鐘信號的電平可能已不能滿足當前運算級的寄存器的最小脈衝要求,從而嚴重降低性能。
在根據本公開的實施例的運算核中,一個哈希引擎被配置為正向時鐘結構而另一個哈希引擎被配置為反向時鐘結構,使得整個運算核具有混合時鐘結構,即該運算核的兩個哈希引擎內的時鐘信號的傳遞方向彼此不同。這樣的配置不僅能夠結合正向時鐘結構和反向時鐘結構的優點,尋求保持時間與晶片頻率之間的平衡,還能夠大大減少時鐘信號所需要傳遞通過的運算級的數量,由此能夠顯著改善時鐘信號在各運算級處的形狀,從而有利地提高了運算核進而整個計算晶片的性能。
下面結合圖式詳細描述根據本公開的實施例的運算核。在這些圖式中,虛線箭頭用於指示數據信號的傳遞方向,以及實線箭頭用於指示時鐘信號的傳遞方向。應注意,實際的運算核還可以包括附加的部件,而為了避免模糊本公開的要點,圖式中沒有示出並且本公開也沒有討論這些附加的部件。
圖1示意性地示出了根據本公開的實施例的運算核100A。運算核100A可以包括輸入模組110、運算模組120和時鐘模組140。輸入模組110可以被配置為接收數據塊。運算模組120可以被配置為對接收到的數據塊進行哈希運算。時鐘模組140可以被配置用於為運算模組120提供所需要的時鐘信號。
如圖1所示,運算模組120包括第一哈希引擎121和第二哈希引擎122。第一哈希引擎121包括第一多個運算級121-1、…、121-i、…、121-64。運算級121-1、…、121-i、…、121-64以流水線結構佈置,使得基於接收到的數據塊的數據信號沿著運算級121-1、…、121-i、…、121-64依次傳遞。第二哈希引擎122包括第二多個運算級122-1、…、122-i、…、122-64。運算級122-1、…、122-i、…、122-64以流水線結構佈置,使得從第一哈希引擎121接收的數據信號沿著運算級122-1、…、122-i、…、122-64依次傳遞。運算級121-1、…、121-i、…、121-64、122-1、…、122-i、…、122-64中的每個運算級對從前一運算級接收的數據信號進行運算並將經該運算級運算的數據信號提供給後一運算級。在一些示例中,可以參照圖10的示例性流水線結構配置哈希引擎中的運算級,也可以按照本領域已知的或以後開發的其它流水線結構來配置運算級。應理解,雖然在圖式中將第一哈希引擎121和第二哈希引擎122描繪為分別包括64個運算級,但是如前面已經提到的,本文僅僅以用於執行SHA-256算法的哈希引擎作為非限制性示例,根據本公開的運算核及其哈希引擎實際上可以適用於執行現在已知的或以後開發的適用於礦機的任何哈希算法(不限於SHA系列算法),並且相應地可以包括合適數量的運算級。
時鐘模組140被配置為向第一哈希引擎121和第二哈希引擎122提供時鐘信號,使得第一哈希引擎121內的時鐘信號的傳遞方向與第二哈希引擎122內的時鐘信號的傳遞方向相反。這樣,時鐘信號並不需要遍歷第一哈希引擎121後再遍歷第二哈希引擎122(正向時鐘結構)或者遍歷第二哈希引擎122後再遍歷第一哈希引擎121(反向時鐘結構),而是僅僅需要分別遍歷第一哈希引擎121和第二哈希引擎122,使得時鐘信號所需要經歷的運算級的數量相對於正向時鐘結構或反向時鐘結構減半。由於數據信號在第一哈希引擎121和第二哈希引擎122內的傳遞方向是相同的,而時鐘信號在第一哈希引擎121和第二哈希引擎122內的傳遞方向是相反的,因此根據本公開的運算核的時鐘結構可以被稱為混合時鐘結構。
在一些實施例中,第一哈希引擎121內的時鐘信號的傳遞方向與數據信號的傳遞方向可以相反,並且第二哈希引擎122內的時鐘信號的傳遞方向與數據信號的傳遞方向可以相同。在一些實施例中,第一哈希引擎121內的時鐘信號的傳遞方向與數據信號的傳遞方向可以相同,並且第二哈希引擎122內的時鐘信號的傳遞方向與數據信號的傳遞方向可以相反。
例如,如圖1所示,在運算核100A中,由時鐘模組140向第一哈希引擎121提供的時鐘信號從運算級121-64傳遞到運算級121-1,而由時鐘模組140向第二哈希引擎122提供的時鐘信號從運算級122-1傳遞到運算級122-64。由此,時鐘信號從運算核的中間向兩側傳播,最遠只傳遞了64個運算級,極大地改善了時鐘的最差形狀。
在一些實施例中,根據本公開的運算核還可以在第一哈希引擎121和第二哈希引擎122設置有同步先入先出(First Input First Output,FIFO)模組,用於在運算級121-64與122-1之間傳遞數據信號。同步FIFO是一種FIFO設計,其是在同一時鐘域中進行FIFO緩衝區的讀寫操作的FIFO,即數據值是從一個時鐘域寫入FIFO緩衝區並從相同的時鐘域從同一FIFO緩衝區讀取。
圖2示出了根據本公開的具有同步FIFO模組的運算核100B。運算核100B相比於運算核100A,還包括設置在第一哈希引擎121的最後一個運算級121-64與第二哈希引擎122的最前一個運算級122-1之間的同步FIFO模組150。同步FIFO模組150被配置為利用由時鐘模組140提供的時鐘信號接收從第一哈希引擎121的最後一個運算級121-64輸出的數據信號並且利用由時鐘模組140提供的時鐘信號將所接收的數據信號輸出到第二哈希引擎122的最前一個運算級122-1。時鐘模組140還被配置為向同步FIFO模組150提供時鐘信號。在運算核100B中,由時鐘模組140向第一哈希引擎121提供的時鐘信號從運算級121-64傳遞到運算級121-1,而由時鐘模組140向第二哈希引擎122提供的時鐘信號從運算級122-1傳遞到運算級122-64。時鐘信號最遠也只傳遞了64個運算級。同步FIFO模組150的引入並不會影響整個運算核的處理速度及吞吐率,因為數據信號在同步FIFO模組150與運算級之間的傳遞時間不會超過在運算級之間的傳遞時間。
同步FIFO模組的引入還帶來了附加的效果。通常,運算核可以被實現在半導體晶片(例如,矽晶片)上。流水線結構的所有運算級通常被佈置在同一行中,第一哈希引擎和第二哈希引擎在水平方向上彼此相鄰。這裡所稱的水平方向可以是指流水線結構的延伸方向,也即數據信號的傳遞方向。在一些實施例中,第一哈希引擎和第二哈希引擎還可以沿半導體晶片的表面被佈置在不同的兩行中,從而在與水平方向垂直的豎直方向上彼此相鄰。具有這樣佈置的第一哈希引擎和第二哈希引擎的運算核在本文中可以被稱為是具有豎直結構的運算核。具有豎直結構的運算核可以具有更合適的(例如,更接近方形的)長寬比,從而便於這樣的運算核在計算晶片上的靈活佈置。在這樣的情況下,能夠更便利地從通常為圓形的矽晶片切割出更多的通常為矩形的晶片。然而,對於具有豎直結構的運算核,數據信號在第一哈希引擎的最後一個運算級和第二哈希引擎的最前一個運算級之間傳遞所需經歷的距離相比於在哈希引擎內部的相鄰兩個運算級之間傳遞所需經歷的距離更遠,導致在這兩個運算級之間的數據信號傳遞時間相比於在哈希引擎內部的相鄰兩個運算級之間的數據信號傳遞時間更長,由此可能限制運算核的處理速度及吞吐率。但是,同步FIFO模組具有寬鬆的定時,它可以有助於縮短在豎直結構中數據信號從第一哈希引擎的最後一個運算級到第二哈希引擎的最前一個運算級的傳遞時間,進而改善具有豎直結構的運算核的性能,使得豎直結構在帶來利處的同時也不會使運算核的處理速度及吞吐率劣化。
圖6A和圖6B是根據本公開的實施例的包含同步FIFO模組以及在豎直方向上彼此相鄰的第一哈希引擎和第二哈希引擎的運算核的示意圖。如圖6A所示,運算核200A的第一哈希引擎221和第二哈希引擎222在豎直方向上彼此相鄰,數據信號從第一哈希引擎221經由同步FIFO模組250到達第二哈希引擎222,其中第一哈希引擎221中的時鐘信號與數據信號的傳遞方向相反,第二哈希引擎222中的時鐘信號與數據信號的傳遞方向相同。如圖6B所示,運算核200B的第一哈希引擎221和第二哈希引擎222在豎直方向上彼此相鄰,數據信號從第一哈希引擎221經由同步FIFO模組250到達第二哈希引擎222,其中第二哈希引擎222中的時鐘信號與數據信號的傳遞方向相反,第一哈希引擎221中的時鐘信號與數據信號的傳遞方向相同。在圖式中所描繪的第一哈希引擎221與第二哈希引擎222在豎直方向上的相對位置關係僅僅是示例性的而非限制性的,也可以根據實際需要顛倒第一哈希引擎221與第二哈希引擎222在豎直方向上的相對位置關係。
在另外一些實施例中,根據本公開的運算核還可以在第一哈希引擎121和第二哈希引擎122設置有異步先入先出(FIFO)模組,用於在運算級121-64與122-1之間傳遞數據信號。異步FIFO是指一種FIFO設計,其中,數據值從一個時鐘域寫入FIFO緩衝區,數據值從另一個時鐘域從同一FIFO緩衝區讀取,兩個時鐘域彼此異步。異步FIFO可以用於將數據從一個時鐘域安全地傳遞到另一時鐘域。
圖3示出了根據本公開的具有異步FIFO模組的運算核100C。運算核100C相比於運算核100A,還包括設置在第一哈希引擎121的最後一個運算級121-64與第二哈希引擎122的最前一個運算級122-1之間的異步FIFO模組130。異步FIFO模組130被配置為利用第一時鐘信號接收從第一哈希引擎121的最後一個運算級121-64輸出的數據信號並且利用不同於第一時鐘信號的第二時鐘信號將所接收的數據信號輸出到第二哈希引擎122的最前一個運算級122-1。運算核100C包括第一時鐘模組141和第二時鐘模組142。第一時鐘模組141被配置為向第一哈希引擎121和異步FIFO模組130提供第一時鐘信號,並且第二時鐘模組142被配置為向第二哈希引擎122和異步FIFO模組130提供第二時鐘信號,並且其中,所述第一時鐘信號與所述第二時鐘信號的頻率相同。異步FIFO模組130的引入並不會影響整個運算核的處理速度及吞吐率,因為數據信號在異步FIFO模組130與運算級之間的傳遞時間不會超過在運算級之間的傳遞時間。
在一些實施例中,第一時鐘信號與數據信號的傳遞方向可以相同,並且第二時鐘信號與數據信號的傳遞方向可以相反。如圖3所示,數據信號沿著從左到右的方向傳播通過運算模組120的所有運算級,而第一時鐘信號沿著從左到右的方向在第一哈希引擎121內傳播(從運算級121-1到121-64),第二時鐘信號沿著從右到左的方向在第二哈希引擎122內傳播(從運算級122-64到122-1)。
在另外一些實施例中,第一時鐘信號與數據信號的傳遞方向可以相反,並且第二時鐘信號與數據信號的傳遞方向可以相同。如圖4所示,運算核100D相比於運算核100C,數據信號仍沿著從左到右的方向傳播通過運算模組120的所有運算級,但是第一時鐘信號沿著從右到左的方向在第一哈希引擎121內傳播(從運算級121-64到121-1),第二時鐘信號沿著從左到右的方向在第二哈希引擎122內傳播(從運算級122-1到122-64)。
在一些實施例中,第一時鐘模組141和第二時鐘模組142可以被配置為從位於運算核外部的相同時鐘源接收時鐘信號。時鐘源可以用於提供基本時鐘信號。即,第一時鐘信號與第二時鐘信號可以是同源的,但是從時鐘源經歷不同路徑到達相應的時鐘模組。
異步FIFO模組的引入也帶來了附加的效果。與同步FIFO模組的情況類似地,異步FIFO模組也可以有助於縮短在豎直結構中數據信號從第一哈希引擎的最後一個運算級到第二哈希引擎的最前一個運算級的傳遞時間,進而改善具有豎直結構的運算核的性能。圖6C和圖6D是根據本公開的實施例的包含異步FIFO模組以及在豎直方向上彼此相鄰的第一哈希引擎和第二哈希引擎的運算核的示意圖。如圖6C所示,運算核200C的第一哈希引擎221和第二哈希引擎222在豎直方向上彼此相鄰,數據信號從第一哈希引擎221經由異步FIFO模組230到達第二哈希引擎222,其中第一時鐘信號與數據信號的傳遞方向相同,第二時鐘信號與數據信號的傳遞方向相反。如圖6D所示,運算核200D的第一哈希引擎221和第二哈希引擎222在豎直方向上彼此相鄰,數據信號從第一哈希引擎221經由異步FIFO模組230到達第二哈希引擎222,其中第二時鐘信號與數據信號的傳遞方向相同,第一時鐘信號與數據信號的傳遞方向相反。在圖中描繪的第一哈希引擎221與第二哈希引擎222在豎直方向上的相對位置關係也僅僅是示例性的而非限制性的。
在一些實施例中,第一哈希引擎121或第二哈希引擎122內部還可以包括一個或多個異步FIFO模組,這一個或多個異步FIFO模組可以被插置在運算級之間。這樣,可以進一步減少每個時鐘信號所需要傳遞通過的運算級的數量。這些異步FIFO模組的插入可以使得每個哈希引擎中的運算級被分為多個組,在一些實施例中,每個組中包含的運算級的數量可以是相同的。圖5A至圖5C示出了在第一哈希引擎121和第二哈希引擎122內設置有附加異步FIFO模組的運算核的示例。
如圖5A所示,運算核100A’相比於運算核100A,還包括第二異步FIFO模組132。第二異步FIFO模組132設置在第一哈希引擎121的第一多個運算級中相鄰的第一運算級121-a和第二運算級121-b之間,第一運算級121-a在第二運算級121-b之前。第二異步FIFO模組132被配置為利用不同於由時鐘模組140提供的時鐘信號的第三時鐘信號接收從第一運算級121-a輸出的數據信號並且利用由時鐘模組140提供的時鐘信號將所接收的數據信號輸出到第二運算級121-b。運算核100A’還包括第三時鐘模組143,該第三時鐘模組143被配置為向第二異步FIFO模組132並且向第一運算級121-a及第一哈希引擎121的第一多個運算級中在第一運算級121-a之前的運算級提供第三時鐘信號。時鐘模組140還被配置為向第二異步FIFO模組132並且向第二運算級121-b及第一哈希引擎121的第一多個運算級中在第二運算級121-b之後的運算級提供時鐘信號。
附加地或替代地,運算核100A’ 還包括第三異步FIFO模組133。第三異步FIFO模組133設置在第二哈希引擎122的第二多個運算級中相鄰的第三運算級122-c和第四運算級122-d之間,第三運算級122-c在第四運算級122-d之前。第三異步FIFO模組133被配置為利用由時鐘模組140提供的時鐘信號接收從第三運算級122-c輸出的數據信號並且利用不同於由時鐘模組140提供的時鐘信號的第四時鐘信號將所接收的數據信號輸出到第四運算級122-d。運算核100A’還包括第四時鐘模組144,該第四時鐘模組144被配置為向第三異步FIFO模組133並且向第四運算級122-d及第二哈希引擎122的第二多個運算級中在第四運算級122-d之後的運算級提供第四時鐘信號。時鐘模組140還被配置為向第三異步FIFO模組133並且向第三運算級122-c及第二哈希引擎122的第二多個運算級中在第三運算級122-c之前的運算級提供時鐘信號。
如圖5B所示,類似地,運算核100B’相比於運算核100B也可以包括第二異步FIFO模組132、第三時鐘模組143和/或第三異步FIFO模組133、第四時鐘模組144。
如圖5C所示,運算核100C’相比於運算核100C,還可以包括第二異步FIFO模組132。第二異步FIFO模組132設置在第一哈希引擎121的第一多個運算級中相鄰的第一運算級121-a和第二運算級121-b之間,第一運算級121-a在第二運算級121-b之前。第二異步FIFO模組132被配置為利用不同於由第一時鐘模組141提供的第一時鐘信號的第三時鐘信號接收從第一運算級121-a輸出的數據信號並且利用由第一時鐘模組141提供的第一時鐘信號將所接收的數據信號輸出到第二運算級121-b。運算核100C’還包括第三時鐘模組143,該第三時鐘模組143被配置為向第二異步FIFO模組132並且向第一運算級121-a及第一哈希引擎121的第一多個運算級中在第一運算級121-a之前的運算級提供第三時鐘信號。第一時鐘模組141被配置為向第一異步FIFO模組130和第二異步FIFO模組132並且向第二運算級121-b及第一哈希引擎121的第一多個運算級中在第二運算級121-b之後的運算級提供第一時鐘信號。
附加地或替代地,運算核100C’ 還可以包括第三異步FIFO模組133。第三異步FIFO模組133設置在第二哈希引擎122的第二多個運算級中相鄰的第三運算級122-c和第四運算級122-d之間,第三運算級122-c在第四運算級122-d之前。第三異步FIFO模組133被配置為利用由第二時鐘模組142提供的第二時鐘信號接收從第三運算級122-c輸出的數據信號並且利用不同於由第二時鐘模組142提供的第二時鐘信號的第四時鐘信號將所接收的數據信號輸出到第四運算級122-d。運算核100C’還可以包括第四時鐘模組144,該第四時鐘模組144被配置為向第三異步FIFO模組133並且向第四運算級122-d及第二哈希引擎122的第二多個運算級中在第四運算級122-d之後的運算級提供第四時鐘信號。第二時鐘模組142被配置為向第一異步FIFO模組130和第三異步FIFO模組133並且向第三運算級122-c及第二哈希引擎122的第二多個運算級中在第三運算級122-c之前的運算級提供第二時鐘信號。
例如,第二異步FIFO模組132可以被設置在第一哈希引擎121的第32運算級和第33運算級之間,第三異步FIFO模組133可以被設置在第二哈希引擎122的第32運算級和第33運算級之間,使得每個時鐘信號最遠只傳遞了32個運算級,從而進一步優化時鐘信號在各運算級處的形狀。
本領域技術人員可以理解,雖然圖5A至圖5C示出每個哈希引擎內包括一個異步FIFO模組,但這僅僅是作為非限制性示例,可以根據實際需要合理設置哈希引擎中的異步FIFO模組的數量和位置。還應理解的是,可以根據哈希引擎中的同步FIFO模組和異步FIFO模組的數量和位置,合理地設置相應的時鐘模組來為哈希引擎中的各個運算級以及各個FIFO模組提供時鐘信號,只要保證每個哈希引擎內的時鐘信號方向一致但不同哈希引擎的時鐘信號方向相反、並且保證向同步FIFO模組提供相同時鐘信號而向異步FIFO模組提供不同時鐘信號即可,圖5A至圖5C僅僅示出了幾種示例佈置,並不意在限制本公開。
本公開還提供了包括一個或多個如以上任一實施例所述的運算核的計算晶片。
下面結合圖7描述根據本公開的一些實施例的計算晶片700。計算晶片700可以包括頂層模組710和多個如上所述的具有混合時鐘結構的運算核720。作為非限制性示例,在圖7所描繪的實施例中,運算核720被示出為具有圖1所示的結構。
如圖7所示,頂層模組710包括時鐘源711。時鐘源711被配置用於為計算晶片700的運算核720提供時鐘信號。運算核720被佈置在多個列720-1、720-2、720-3、720-4中,每列運算核的時鐘模組經由共同的時鐘信道接收時鐘信號。例如,列720-1、720-2、720-3、720-4中的運算核的時鐘模組分別經由時鐘信道731、732、733、734接收時鐘信號。在圖7所示的運算核中兩個哈希引擎被描繪為佈置在同一行中,當運算核具有豎直結構時,還可以在相鄰列的運算核之間共享時鐘信道。
儘管未具體圖示,但是可以理解的是,當運算核720的哈希引擎內部具有如上所述的附加異步FIFO模組時,還可以設置附加的時鐘信道,使得同一列中的運算核720的因增加異步FIFO模組而增加的相應時鐘模組也可以經由共同的時鐘信道接收時鐘信號。
應理解,雖然在圖示的示例中,計算晶片包括四列四行運算核,但是這僅僅是示例性的而非限制性的,可以根據實際情況將任意合適數量的運算核佈置成任意合適數量的列。
圖8A的計算晶片800A相比於圖7的計算晶片700,區別在於計算晶片800A的運算核820還具有同步FIFO模組(如圖中的填充有左斜線的矩形所示意性表示的),例如可以具有如圖2所示的結構。在這樣的實施例中,每列820-1、820-2、820-3、820-4中的運算核的時鐘模組仍可以分別經由時鐘信道731、732、733、734接收時鐘信號。
當運算核具有豎直結構時,還可以在相鄰列的運算核之間共享時鐘信道。如圖8B所示,計算晶片800B相比於計算晶片800A,區別在於計算晶片800B的運算核820’具有在豎直方向上彼此相鄰的第一哈希引擎和第二哈希引擎。在本公開的圖式中,SF代表同步FIFO模組,ASF代表異步FIFO模組,H1代表第一哈希引擎,並且H2代表第二哈希引擎。
運算核的多個列可以包括彼此相鄰且按所陳述的順序佈置的第一列運算核和第二列運算核(例如,820-1’和820-2’)。在一些實施例中,第一列運算核820-1’的時鐘模組與第二列運算核820-2’的時鐘模組經由共同的時鐘信道831接收時鐘信號。計算晶片還可以包括多對這樣的第一列運算核和第二列運算核,每對都可以經由共同的時鐘信道接收時鐘信號。例如,計算晶片800B的列820-3’和820-4’也經由共同的時鐘信道832接收時鐘信號。
應理解,雖然在圖8B中將同步FIFO模組佈置在哈希引擎H1和H2的左側,但這僅僅是示例性的而非限制性的,例如如圖8C所示,運算核的同步FIFO模組可以被佈置在哈希引擎H1和H2的任一側,而且不論相鄰兩列運算核中的對應運算核關於同步FIFO模組的佈置是相同還是相反,都能實現本公開的混合時鐘結構。實際上,可以根據實際情況合理設置每個運算核中同步FIFO模組相對於哈希引擎的位置,並且不一定要求計算晶片中的每個運算核或每列運算核的佈置都相同。
還應理解,雖然在圖8B中將H1描繪為在H2上方,但是哈希引擎H1和H2在豎直方向上的相對位置關係不受特別限制,而且不論H1在H2上方還是H2在H1上方,都能實現本公開的混合時鐘結構。實際上,根據實際情況合理設置每個運算核中哈希引擎H1和H2在豎直方向上的相對位置關係,並且不一定要求計算晶片中的每個運算核或每列運算核的佈置都相同。
圖9A的計算晶片900A相比於圖7的計算晶片700,區別在於計算晶片900A的運算核920A還具有異步FIFO模組(如圖中的填充有右斜線的矩形所示意性表示的),例如可以具有如圖4所示的結構。在這樣的實施例中,每列920A-1、920A-2、920A-3、920A-4中的運算核的第一時鐘模組經由共同的時鐘信道接收第一時鐘信號,並且第二時鐘模組經由共同的時鐘信道接收第二時鐘信號。例如,列920A-1中的運算核的第一時鐘模組和第二時鐘模組中的一者經由共同的時鐘信道931接收第一時鐘信號,並且另一者經由共同的時鐘信道932接收第二時鐘信號。
圖9B的計算晶片900B相比於計算晶片900A,區別在於計算晶片900A的運算核920B例如可以具有如圖3所示的結構。在這樣的實施例中,每列920B-1、920B-2、920B-3、920B-4中的運算核的第一時鐘模組經由共同的時鐘信道接收第一時鐘信號,並且第二時鐘模組經由共同的時鐘信道接收第二時鐘信號。例如,列920B-1中的運算核的第一時鐘模組和第二時鐘模組中的一者經由共同的時鐘信道931’接收第一時鐘信號,並且另一者經由共同的時鐘信道932’接收第二時鐘信號。
對於圖9B所示的實施例,可以進一步修改為在相鄰列之間共享時鐘信道。多個列920B-1、920B-2、920B-3、920B-4包括彼此相鄰且按所陳述的順序佈置的第一列運算核和第二列運算核(例如920B-1、920B-2),在一些實施例中,第一列運算核的第一時鐘模組和第二時鐘模組中的一者與第二列運算核的第一時鐘模組和第二時鐘模組中的一者可以經由共同的時鐘信道接收時鐘信號。在一些實施例中,多個列除了第一列運算核、第二列運算核還包括與第一列運算核相對地與第二列運算核相鄰的第三列運算核(例如,920B-3),第二列運算核的第一時鐘模組和第二時鐘模組中的另一者與第三列運算核的第一時鐘模組和第二時鐘模組中的一者可以經由共同的時鐘信道接收時鐘信號。
例如,圖9C的計算晶片900B’相比於計算晶片900B,區別在於相鄰列的運算核共享時鐘信道。如圖9C所示,列920B-1與列920B-2共享時鐘信道934,列920B-2與列920B-3共享時鐘信道935,列920B-3與列920B-4共享時鐘信道936,此外列920B-1還具有單獨的時鐘信道933,列920B-4還具有單獨的時鐘信道937。圖9C中並未具體示出運算核920B是如何佈置在計算晶片中的。事實上,參考圖9D可以知道,無論如何佈置運算核920B(第一哈希引擎在左並且第二哈希引擎在右,或者第二哈希引擎在左並且第一哈希引擎在右),都可以實現相鄰列的運算核之間的時鐘信道共享。因此,可以根據實際情況合理佈置計算晶片900B’中的每個運算核。需要注意的是,如圖9D所示,數據信號的傳遞方向始終是從第一哈希引擎到第二哈希引擎的,也就是說,圖中第一哈希引擎在左側還是第二哈希引擎在左側只是相對於圖示視角而言,並不更改它們的數據傳遞上下游關係。
此外,當運算核具有豎直結構時,相鄰列的運算核之間也可以共享時鐘信道。下面結合圖9E至圖9G具體描述。在圖9E至圖9G中,為了圖示清楚,點劃線也用於代表時鐘信號。運算核的多個列可以包括彼此相鄰且按所陳述的順序佈置的第一列運算核和第二列運算核。在一些實施例中,第一列運算核的第一時鐘模組和第二時鐘模組中的一者與第二列運算核的第一時鐘模組和第二時鐘模組中的一者經由共同的時鐘信道接收時鐘信號;附加地或替代地,第一列運算核的第一時鐘模組和第二時鐘模組中的另一者與第二列運算核的第一時鐘模組和第二時鐘模組中的另一者經由共同的時鐘信道接收時鐘信號。
如圖9E所示,計算晶片900C相比於計算晶片900B’,區別在於計算晶片900C的運算核920’具有在豎直方向上彼此相鄰的第一哈希引擎和第二哈希引擎。多個列920-1’、920-2’、920-3’、920-4’包括彼此相鄰且按所陳述的順序佈置的第一列運算核和第二列運算核(例如920-1’、920-2’)。在一些實施例中,第一列運算核(例如920-1’)的第一時鐘模組和第二列運算核(例如920-2’)的第一時鐘模組經由共同的時鐘信道(例如991)接收時鐘信號分別作為各自的第一時鐘信號。在一些實施例中,附加地或替代地,第一列運算核(例如920-1’)的第二時鐘模組和第二列運算核(例如920-2’)的第二時鐘模組經由共同的時鐘信道(例如993)接收時鐘信號分別作為各自的第二時鐘信號。計算晶片900C可以包括多對這樣的第一列運算核和第二列運算核。例如,列920-3’和920-4’ 的運算核的第一時鐘模組可以經由共同的時鐘信道992接收時鐘信號分別作為各自的第一時鐘信號,第二時鐘模組可以經由共同的時鐘信道994接收時鐘信號分別作為各自的第二時鐘信號。
應理解圖9E中異步FIFO模組相對於哈希引擎H1和H2的佈置僅僅是示例性的而非限制性的,例如如圖9F所示,運算核的異步FIFO模組可以被佈置在哈希引擎H1和H2的任一側,而且不論相鄰兩列運算核中的對應運算核關於異步FIFO模組的佈置是相同還是相反,都能實現本公開的混合時鐘結構。實際上,可以根據實際情況合理設置每個運算核中異步FIFO模組相對於哈希引擎的位置,並且不一定要求計算晶片中的每個運算核或每列運算核的佈置都相同。
還應理解圖9E中哈希引擎H1在哈希引擎H2上方的佈置僅僅是示例性的而非限制性的,哈希引擎H1和H2在豎直方向上的相對位置關係不受特別限制,而且不論H1在H2上方還是H2在H1上方,都能實現本公開的混合時鐘結構。例如,如圖9G所示,第二列運算核中哈希引擎H2在哈希引擎H1上方。在如圖9G所示的實施例中,第一列運算核的第一時鐘模組和第二列運算核的第二時鐘模組經由共同的時鐘信道接收時鐘信號分別作為各自的第一時鐘信號和第二時鐘信號。附加地或替代地,第一列運算核的第二時鐘模組和第二列運算核的第一時鐘模組經由共同的時鐘信道接收時鐘信號分別作為各自的第二時鐘信號和第一時鐘信號。實際上,可以根據實際情況合理設置每個運算核中哈希引擎H1和H2在豎直方向上的相對位置關係,並且不一定要求計算晶片中的每個運算核或每列運算核的佈置都相同。
由於常規礦機計算晶片的運算核的長寬比通常很大(因為要設置多達128個運算級),因此運算核在計算晶片(一般基於矽晶圓)上的佈置非常受限。本公開提供的具有豎直結構的運算核可以具有顯著縮小的長寬比,可以更加靈活自由地被合理佈置在計算晶片上。包含同步或異步FIFO模組還可以有助於改進具有豎直結構的運算核的性能。此外,通過運算核的相鄰列之間的時鐘信道的共用,還可以進一步節省晶片面積,也可以允許在同等尺寸晶片上佈置更多數量的運算核,以高效地承擔複雜的運算任務。
可以理解,雖然在上述實施例中描述的是在運算核的相鄰列之間共享時鐘信道,但是以類似的方式在運算核的相鄰行之間共享時鐘信道也是可行的,並且也被涵蓋在本公開的範圍內。
本公開還可以提供包括一個或多個如上所述的計算晶片的數據處理設備。根據本公開的例如作為加密貨幣礦機的數據處理設備可以具有更低的成本,更高效地執行挖礦過程。
說明書及權利要求中的詞語“左”、“右”、“前”、“後”、“頂”、“底”、“上”、“下”、“高”、“低”等,如果存在的話,用於描述性的目的而並不一定用於描述不變的相對位置。應當理解,這樣使用的詞語在適當的情況下是可互換的,使得在此所描述的本公開的實施例,例如,能夠在與在此所示出的或另外描述的那些取向不同的其它取向上操作。例如,在圖式中的裝置倒轉時,原先描述為在其它特徵“之上”的特徵,此時可以描述為在其它特徵“之下”。裝置還可以以其它方式定向(旋轉90度或在其它方位),此時將相應地解釋相對空間關係。
在說明書及申請專利範圍中,稱一個元件位於另一元件“之上”、“附接”至另一元件、“連接”至另一元件、“耦合”至另一元件、或“接觸”另一元件等時,該元件可以直接位於另一元件之上、直接附接至另一元件、直接連接至另一元件、直接耦合至另一元件或直接接觸另一元件,或者可以存在一個或多個中間元件。相對照的是,稱一個元件“直接”位於另一元件“之上”、“直接附接”至另一元件、“直接連接”至另一元件、“直接耦合”至另一元件或“直接接觸”另一元件時,將不存在中間元件。在說明書及申請專利範圍中,一個特徵佈置成與另一特徵“相鄰”,可以指一個特徵具有與相鄰特徵重疊的部分或者位於相鄰特徵上方或下方的部分。
如在此所使用的,詞語“示例性的”意指“用作示例、實例或說明”,而不是作為將被精確複製的“模型”。在此示例性描述的任意實現方式並不一定要被解釋為比其它實現方式優選的或有利的。而且,本公開不受在技術領域、背景技術、發明內容或具體實施方式中所給出的任何所表述的或所暗示的理論所限定。
如在此所使用的,詞語“基本上”意指包含由設計或製造的缺陷、器件或元件的容差、環境影響和/或其它因素所致的任意微小的變化。詞語“基本上”還允許由寄生效應、噪聲以及可能存在於實際的實現方式中的其它實際考慮因素所致的與完美的或理想的情形之間的差異。
另外,僅僅為了參考的目的,還可以在本文中使用“第一”、“第二”等類似術語,並且因而並非意圖限定。例如,除非上下文明確指出,否則涉及結構或元件的詞語“第一”、“第二”和其它此類數字詞語並沒有暗示順序或次序。
還應理解,“包括/包含”一詞在本文中使用時,說明存在所指出的特徵、整體、步驟、操作、單元和/或組件,但是並不排除存在或增加一個或多個其它特徵、整體、步驟、操作、單元和/或組件以及/或者它們的組合。
在本公開中,術語“提供”從廣義上用於涵蓋獲得對象的所有方式,因此“提供某對象”包括但不限於“購買”、“製備/製造”、“佈置/設置”、“安裝/裝配”、和/或“訂購”對象等。
如本文所使用的,術語“和/或”包括相關聯的列出項目中的一個或多個的任何和所有組合。本文中使用的術語只是出於描述特定實施例的目的,並不旨在限制本公開。如本文中使用的,單數形式“一”、“一個”和“該”也旨在包括複數形式,除非上下文另外清楚指示。
本領域技術人員應當意識到,在上述操作之間的邊界僅僅是說明性的。多個操作可以結合成單個操作,單個操作可以分佈於附加的操作中,並且操作可以在時間上至少部分重疊地執行。而且,另選的實施例可以包括特定操作的多個實例,並且在其它各種實施例中可以改變操作順序。但是,其它的修改、變化和替換同樣是可能的。可以以任何方式和/或與其它實施例的方面或元件相結合地組合以上公開的所有實施例的方面和元件,以提供多個附加實施例。因此,本說明書和圖式應當被看作是說明性的,而非限制性的。
雖然已通過示例對本公開的一些特定實施例進行了詳細說明,但本領域的技術人員應該理解,以上示例僅是為了進行說明,而不是為了限制本公開的範圍。在此公開的各實施例可以任意組合,而不脫離本公開的精神和範圍。本領域的技術人員還應理解,可以對實施例進行多種修改而不脫離本公開的範圍和精神。本公開的範圍由所附申請專利範圍來限定。
100A~100D:運算核 100A’~100C’:運算核 110:輸入模組 120:運算模組 121:第一哈希引擎 122:第二哈希引擎 121-1,121-i,121-64:運算級 122-1,122-i,122-64:運算級 121-a:第一運算級 121-b:第二運算級 122-c:第三運算級 122-d:第四運算級 130:異步FIFO模組 132:第二異步FIFO模組 133:第三異步FIFO模組 140:時鐘模組 141:第一時鐘模組 142:第二時鐘模組 143:第三時鐘模組 144:第四時鐘模組 150:同步FIFO模組 200A~200D:運算核 221:第一哈希引擎 222:第二哈希引擎 230:異步FIFO模組 250:同步FIFO模組 700:計算晶片 710:頂層模組 711:時鐘源 720:運算核 720-1~720-4:列 731~734:時鐘信道 800A,800B:計算晶片 820,820’:運算核 820-1~820-4:列 820-1’~820-4’:列 831~832:時鐘信道 900A,900B,900B’:計算晶片 920A,920B:運算核 920A-1~920A-4:列 920B-1~920B-4:列 931~937,931’,932’:時鐘信道 900C:計算晶片 920’:運算核 920-1’~920-4’:列 991~994:時鐘信道
所包括的圖式用於說明性目的,並且僅用於提供本文所公開的發明性裝置以及將其應用到計算設備的方法的可能結構和佈置的示例。這些圖式決不限制本領域的技術人員在不脫離實施方案的實質和範圍的前提下可對實施方案進行的在形式和細節方面的任何更改。所述實施方案通過下面結合圖式的具體描述將更易於理解,其中類似的圖式標記表示類似的結構元件。
圖1至圖4是根據本公開的一些實施例的運算核的示意圖。
圖5A至圖5C是根據本公開的另外一些實施例的運算核的示意圖。
圖6A至圖6D是根據本公開的一些實施例的具有豎直結構的運算核的示意圖。
圖7是根據本公開的一些實施例的計算晶片的示意圖。
圖8A是根據本公開的另外一些實施例的計算晶片的示意圖。
圖8B是根據本公開的另外一些實施例的包括具有豎直結構的運算核的計算晶片的示意圖。
圖8C是用於向圖8B所示的計算晶片中的具有豎直結構的運算核分配時鐘信號的示意性佈置圖。
圖9A至圖9C是根據本公開的另外一些實施例的計算晶片的示意圖。
圖9D是用於向圖9C所示的計算晶片中的運算核分配時鐘信號的示意性佈置圖。
圖9E是根據本公開的另外一些實施例的包括具有豎直結構的運算核的計算晶片的示意圖。
圖9F是用於向圖9E所示的計算晶片中的具有豎直結構的運算核分配時鐘信號的示意性佈置圖。
圖9G是用於向根據本公開的另外一些實施例的計算晶片中的運算核分配時鐘信號的示意性佈置圖。
圖10是用於執行SHA-256算法的示例性流水線結構的示意圖。
注意,在以下說明的實施方式中,有時在不同的圖式之間共同使用同一圖式標記來表示相同部分或具有相同功能的部分,而省略其重複說明。在本說明書中,使用相似的標號和字母表示類似項,因此,一旦某一項在一個圖式中被定義,則在隨後的圖式中不需要對其進行進一步討論。
為了便於理解,在圖式等中所示的各結構的位置、尺寸及範圍等有時不表示實際的位置、尺寸及範圍等。因此,所公開的發明並不限於圖式等所公開的位置、尺寸及範圍等。此外,圖式不必按比例繪製,一些特徵可能被放大以示出具體組件的細節。
100A:運算核
110:輸入模組
120:運算模組
121:第一哈希引擎
122:第二哈希引擎
121-1,121-i,121-64:運算級
122-1,122-i,122-64:運算級
140:時鐘模組

Claims (19)

  1. 一種運算核,包括: 輸入模組,被配置為接收數據塊; 運算模組,被配置為對接收到的數據塊進行哈希運算,所述運算模組包括: 第一哈希引擎,包括第一多個運算級,所述第一多個運算級以流水線結構佈置使得基於所述數據塊的數據信號沿著所述第一多個運算級依次傳遞;以及 第二哈希引擎,包括第二多個運算級,所述第二多個運算級以流水線結構佈置使得從所述第一哈希引擎接收的數據信號沿著所述第二多個運算級依次傳遞, 其中所述第一多個運算級和所述第二多個運算級中的每個運算級對從前一運算級接收的數據信號進行運算並將經該運算級運算的數據信號提供給後一運算級;以及 時鐘模組,被配置為向所述第一哈希引擎和所述第二哈希引擎提供時鐘信號, 其中,所述第一哈希引擎內的時鐘信號的傳遞方向與所述第二哈希引擎內的時鐘信號的傳遞方向相反。
  2. 如請求項1所述的運算核,其中,所述第一哈希引擎內的時鐘信號的傳遞方向與數據信號的傳遞方向相反,並且所述第二哈希引擎內的時鐘信號的傳遞方向與數據信號的傳遞方向相同。
  3. 如請求項1所述的運算核,還包括: 同步FIFO模組,設置在所述第一哈希引擎的所述第一多個運算級中的最後一個運算級與所述第二哈希引擎的所述第二多個運算級中的最前一個運算級之間,所述同步FIFO模組被配置為利用所述時鐘信號接收從所述第一哈希引擎的所述最後一個運算級輸出的數據信號並且利用所述時鐘信號將所接收的數據信號輸出到所述第二哈希引擎的所述最前一個運算級, 其中,所述時鐘模組還被配置為向所述同步FIFO模組提供所述時鐘信號。
  4. 如請求項1所述的運算核,還包括: 異步FIFO模組,設置在所述第一哈希引擎的所述第一多個運算級中的最後一個運算級與所述第二哈希引擎的所述第二多個運算級中的最前一個運算級之間,所述異步FIFO模組被配置為利用第一時鐘信號接收從所述第一哈希引擎的所述最後一個運算級輸出的數據信號並且利用不同於所述第一時鐘信號的第二時鐘信號將所接收的數據信號輸出到所述第二哈希引擎的所述最前一個運算級, 其中,所述時鐘模組包括第一時鐘模組和第二時鐘模組,所述第一時鐘模組被配置為向所述第一哈希引擎和所述異步FIFO模組提供所述第一時鐘信號,並且所述第二時鐘模組被配置為向所述第二哈希引擎和所述異步FIFO模組提供所述第二時鐘信號,並且其中,所述第一時鐘信號與所述第二時鐘信號的頻率相同。
  5. 如請求項4所述的運算核,其中,所述第一時鐘信號與所述數據信號的傳遞方向相同,並且所述第二時鐘信號與所述數據信號的傳遞方向相反。
  6. 如請求項4所述的運算核,其中,所述第一時鐘信號與所述數據信號的傳遞方向相反,並且所述第二時鐘信號與所述數據信號的傳遞方向相同。
  7. 如請求項1至6中任一項所述的運算核,其中,所述運算核被實現在半導體晶片上,並且所述第一哈希引擎和所述第二哈希引擎被佈置為沿所述半導體晶片的表面在與所述數據信號的傳遞方向垂直的豎直方向上彼此相鄰。
  8. 如請求項1至3中任一項所述的運算核,還包括: 第二異步FIFO模組,設置在所述第一多個運算級中相鄰的第一運算級和第二運算級之間,所述第一運算級在所述第二運算級之前,所述第二異步FIFO模組被配置為利用不同於所述時鐘信號的第三時鐘信號接收從所述第一運算級輸出的數據信號並且利用所述時鐘信號將所接收的數據信號輸出到所述第二運算級;以及 第三時鐘模組,被配置為向所述第二異步FIFO模組並且向所述第一運算級及所述第一多個運算級中在所述第一運算級之前的運算級提供所述第三時鐘信號, 其中,所述時鐘模組還被配置為向所述第二異步FIFO模組並且向所述第二運算級及所述第一多個運算級中在所述第二運算級之後的運算級提供所述時鐘信號。
  9. 如請求項1至3中任一項所述的運算核,還包括: 第三異步FIFO模組,設置在所述第二多個運算級中相鄰的第三運算級和第四運算級之間,所述第三運算級在所述第四運算級之前,所述第三異步FIFO模組被配置為利用所述時鐘信號接收從所述第三運算級輸出的數據信號並且利用不同於所述時鐘信號的第四時鐘信號將所接收的數據信號輸出到所述第四運算級;以及 第四時鐘模組,被配置為向所述第三異步FIFO模組並且向所述第四運算級及所述第二多個運算級中在所述第四運算級之後的運算級提供所述第四時鐘信號, 其中,所述時鐘模組還被配置為向所述第三異步FIFO模組並且向所述第三運算級及所述第二多個運算級中在所述第三運算級之前的運算級提供所述時鐘信號。
  10. 如請求項4至6中任一項所述的運算核,其中,所述異步FIFO模組是第一異步FIFO模組,並且所述運算核還包括: 第二異步FIFO模組,設置在所述第一多個運算級中相鄰的第一運算級和第二運算級之間,所述第一運算級在所述第二運算級之前,所述第二異步FIFO模組被配置為利用不同於所述第一時鐘信號的第三時鐘信號接收從所述第一運算級輸出的數據信號並且利用所述第一時鐘信號將所接收的數據信號輸出到所述第二運算級;以及 第三時鐘模組,被配置為向所述第二異步FIFO模組並且向所述第一運算級及所述第一多個運算級中在所述第一運算級之前的運算級提供所述第三時鐘信號, 其中,所述第一時鐘模組被配置為向所述第一異步FIFO模組和所述第二異步FIFO模組並且向所述第二運算級及所述第一多個運算級中在所述第二運算級之後的運算級提供所述第一時鐘信號。
  11. 如請求項4至6中任一項所述的運算核,其中,所述異步FIFO模組是第一異步FIFO模組,並且所述運算核還包括: 第三異步FIFO模組,設置在所述第二多個運算級中相鄰的第三運算級和第四運算級之間,所述第三運算級在所述第四運算級之前,所述第三異步FIFO模組被配置為利用所述第二時鐘信號接收從所述第三運算級輸出的數據信號並且利用不同於所述第二時鐘信號的第四時鐘信號將所接收的數據信號輸出到所述第四運算級;以及 第四時鐘模組,被配置為向所述第三異步FIFO模組並且向所述第四運算級及所述第二多個運算級中在所述第四運算級之後的運算級提供所述第四時鐘信號, 其中,所述第二時鐘模組被配置為向所述第一異步FIFO模組和所述第三異步FIFO模組並且向所述第三運算級及所述第二多個運算級中在所述第三運算級之前的運算級提供所述第二時鐘信號。
  12. 一種計算晶片,包括一個或多個如請求項1至11中任一項所述的運算核。
  13. 一種計算晶片,包括多個如請求項1至3、8至9中任一項所述的運算核,所述多個所述運算核被佈置在多個列中,每列運算核的時鐘模組經由共同的時鐘信道接收時鐘信號。
  14. 如請求項13所述的計算晶片, 其中,所述運算核是如請求項3所述的運算核,所述運算核被實現在半導體晶片上,並且所述第一哈希引擎和所述第二哈希引擎被佈置為沿所述半導體晶片的表面在與所述數據信號的傳遞方向垂直的豎直方向上彼此相鄰, 並且其中,所述多個列包括彼此相鄰且按所陳述的順序佈置的第一列運算核和第二列運算核,並且其中,所述第一列運算核的時鐘模組與所述第二列運算核的時鐘模組經由共同的時鐘信道接收時鐘信號。
  15. 一種計算晶片,包括多個如請求項4至6、10至11中任一項所述的運算核,所述多個所述運算核被佈置在多個列中,每列運算核的第一時鐘模組經由共同的時鐘信道接收第一時鐘信號,並且每列運算核的第二時鐘模組經由共同的時鐘信道接收第二時鐘信號。
  16. 如請求項15所述的計算晶片, 其中,所述運算核是如請求項5所述的運算核, 其中,所述多個列包括彼此相鄰且按所陳述的順序佈置的第一列運算核和第二列運算核, 並且其中,所述第一列運算核的第一時鐘模組和第二時鐘模組中的一者與所述第二列運算核的第一時鐘模組和第二時鐘模組中的一者經由共同的時鐘信道接收時鐘信號。
  17. 如請求項16所述的計算晶片, 其中,所述多個列包括彼此相鄰且按所陳述的順序佈置的所述第一列運算核、所述第二列運算核和第三列運算核, 並且其中,所述第二列運算核的第一時鐘模組和第二時鐘模組中的另一者與所述第三列運算核的第一時鐘模組和第二時鐘模組中的一者經由共同的時鐘信道接收時鐘信號。
  18. 如請求項15所述的計算晶片, 其中,所述運算核被實現在半導體晶片上,並且所述第一哈希引擎和所述第二哈希引擎被佈置為沿所述半導體晶片的表面在與所述數據信號的傳遞方向垂直的豎直方向上彼此相鄰, 其中,所述多個列包括彼此相鄰且按所陳述的順序佈置的第一列運算核和第二列運算核, 並且其中,所述計算晶片被配置成以下中的至少一者: 所述第一列運算核的第一時鐘模組和第二時鐘模組中的一者與所述第二列運算核的第一時鐘模組和第二時鐘模組中的一者經由共同的時鐘信道接收時鐘信號; 所述第一列運算核的第一時鐘模組和第二時鐘模組中的另一者與所述第二列運算核的第一時鐘模組和第二時鐘模組中的另一者經由共同的時鐘信道接收時鐘信號。
  19. 一種數據處理設備,包括一個或多個如請求項12至18中任一項所述的計算晶片。
TW110124791A 2020-11-23 2021-07-06 運算核、計算晶片和數據處理設備 TWI775514B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011320665.2 2020-11-23
CN202011320665.2A CN114528246A (zh) 2020-11-23 2020-11-23 运算核、计算芯片和加密货币矿机

Publications (2)

Publication Number Publication Date
TW202138998A TW202138998A (zh) 2021-10-16
TWI775514B true TWI775514B (zh) 2022-08-21

Family

ID=79601102

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110124791A TWI775514B (zh) 2020-11-23 2021-07-06 運算核、計算晶片和數據處理設備

Country Status (3)

Country Link
CN (1) CN114528246A (zh)
TW (1) TWI775514B (zh)
WO (1) WO2022105252A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180004242A1 (en) * 2016-06-29 2018-01-04 Intel Corporation Low clock-energy 3-phase latch-based clocking scheme
CN108777612A (zh) * 2018-05-18 2018-11-09 中科声龙科技发展(北京)有限公司 一种工作量证明运算芯片核心计算部件的优化方法和电路
CN111427891A (zh) * 2013-11-19 2020-07-17 杨婕 区块挖掘装置
CN111488627A (zh) * 2020-04-13 2020-08-04 杭州德旺信息技术有限公司 一种安全散列算法的消息拓展电路
CN111913749A (zh) * 2020-08-07 2020-11-10 山东大学 基于流水线的sm3算法fpga实现方法及系统
CN111930682A (zh) * 2020-07-16 2020-11-13 深圳比特微电子科技有限公司 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004524617A (ja) * 2001-02-14 2004-08-12 クリアスピード・テクノロジー・リミテッド クロック分配システム
CN101308568B (zh) * 2007-05-17 2010-06-23 北京展讯高科通信技术有限公司 基于fifo的流水线实时处理的方法和装置
GB2505002B (en) * 2012-08-17 2014-09-24 Broadcom Corp Method and apparatus for transferring data from a first domain to a second domain
US20170046298A1 (en) * 2015-08-11 2017-02-16 Mediatek Inc. Asynchronous first-in first-out buffer apparatus with active rate control and dynamic rate compensation and associated network device using the same
CN107831824B (zh) * 2017-10-16 2021-04-06 北京比特大陆科技有限公司 时钟信号传递方法、装置、复用芯片和电子设备
CN111651402A (zh) * 2020-07-16 2020-09-11 深圳比特微电子科技有限公司 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427891A (zh) * 2013-11-19 2020-07-17 杨婕 区块挖掘装置
US20180004242A1 (en) * 2016-06-29 2018-01-04 Intel Corporation Low clock-energy 3-phase latch-based clocking scheme
CN108777612A (zh) * 2018-05-18 2018-11-09 中科声龙科技发展(北京)有限公司 一种工作量证明运算芯片核心计算部件的优化方法和电路
CN111488627A (zh) * 2020-04-13 2020-08-04 杭州德旺信息技术有限公司 一种安全散列算法的消息拓展电路
CN111930682A (zh) * 2020-07-16 2020-11-13 深圳比特微电子科技有限公司 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机
CN111913749A (zh) * 2020-08-07 2020-11-10 山东大学 基于流水线的sm3算法fpga实现方法及系统

Also Published As

Publication number Publication date
TW202138998A (zh) 2021-10-16
CN114528246A (zh) 2022-05-24
WO2022105252A1 (zh) 2022-05-27

Similar Documents

Publication Publication Date Title
US10027433B2 (en) Multiple clock domains in NoC
TWI804890B (zh) 時鐘樹電路、哈希引擎、計算晶片、算力板和資料處理設備
TWI784457B (zh) 時鐘電路系統、計算晶片、算力板和資料處理設備
Srivastava et al. A hybrid design for high performance large-scale sorting on FPGA
WO2021233198A1 (zh) 用于执行散列算法的电路和方法
CN111930682A (zh) 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机
TWI775514B (zh) 運算核、計算晶片和數據處理設備
CN213399573U (zh) 运算核、计算芯片和加密货币矿机
CN212515800U (zh) 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机
CN212515801U (zh) 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机
CN213399572U (zh) 运算核、计算芯片和加密货币矿机
WO2022088683A1 (zh) 计算芯片、算力板和数据处理设备
CN213518334U (zh) 执行哈希算法的电路、计算芯片和加密货币矿机
CN111651403A (zh) 时钟树、哈希引擎、计算芯片、算力板和数字货币挖矿机
CN114528247A (zh) 运算核、计算芯片和加密货币矿机
CN212515799U (zh) 时钟树、哈希引擎、计算芯片、算力板和加密货币挖矿机
TWI801926B (zh) 執行哈希算法的電路、計算晶片、數據處理設備和方法
JP2010039625A (ja) 並列演算装置
Dimitrakopoulos et al. Sorter based permutation units for media-enhanced microprocessors
Joseph et al. Bridging the Frequency Gap in Heterogeneous 3D SoCs through Technology-Specific NoC Router Architectures
Zhou et al. 64-bit prefix adders: Power-efficient topologies and design solutions
TWI766754B (zh) 執行哈希算法的電路、計算晶片、數據處理設備和方法
CN213482935U (zh) 执行哈希算法的电路、计算芯片和加密货币矿机
US11947889B2 (en) Chips placed in full-custom layout and electronic device for implementing mining algorithm
Meng et al. Design of clock-free asynchronous systems for real-time signal processing

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent