JP7069455B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP7069455B2
JP7069455B2 JP2019086434A JP2019086434A JP7069455B2 JP 7069455 B2 JP7069455 B2 JP 7069455B2 JP 2019086434 A JP2019086434 A JP 2019086434A JP 2019086434 A JP2019086434 A JP 2019086434A JP 7069455 B2 JP7069455 B2 JP 7069455B2
Authority
JP
Japan
Prior art keywords
bank
memory
hash calculation
hash
data
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2019086434A
Other languages
English (en)
Other versions
JP2020184095A (ja
Inventor
宏文 岩戸
丈博 小川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Axell Corp
Original Assignee
Axell Corp
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 Axell Corp filed Critical Axell Corp
Priority to JP2019086434A priority Critical patent/JP7069455B2/ja
Priority to PCT/JP2020/004345 priority patent/WO2020217640A1/ja
Priority to US17/593,259 priority patent/US11961073B2/en
Priority to CN202080029695.XA priority patent/CN113924556A/zh
Publication of JP2020184095A publication Critical patent/JP2020184095A/ja
Application granted granted Critical
Publication of JP7069455B2 publication Critical patent/JP7069455B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • 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
    • 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/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • 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/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3678Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
    • 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/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3821Electronic credentials
    • G06Q20/38215Use of certificates or encrypted proofs of transaction rights
    • 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
    • H04L9/3236Cryptographic 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 using cryptographic hash functions
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Finance (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、情報処理装置に関し、特にブロックチェーン等に利用される複数のハッシュ値を並列に演算するのに好適な情報処理装置に関する。
ブロックチェーン技術を利用すると、ブロック内のデータが改ざんされていないことを証明することができる。そのため、ブロックチェーン技術は、仮想通貨システムのトランザクション証明や、第三者を介さずに信用が担保されたトランザクションを処理できるスマートコントラクト等をはじめ、様々なサービスに利用されている。
仮想通貨システムに関するブロックチェーンは、様々存在するが、代表的なものとしてビットコイン(Bitcoin)や、イーサリアム(Ethereum)があり、これらの仮想通貨システムではプルーフ・オブ・ワーク(PoW)と呼ばれ、ブロック同士をチェーンで繋ぐためのキーであるナンス(nonce)を探し当てるハッシュ関数演算が行われる。
ハッシュ関数演算は、従来CPUやGPUを用いて行われていた。しかし、近年はハッシュ関数演算用のASIC(特定用途向け集積回路)が用いられ、ASICを大量に準備できる資本を有する者が優位な立場にあり、マイニングの中央集権化が問題となりつつある。
一方、イーサリアム(Ethereum)は、ナンス(nonce)を探し当てるハッシュ関数演算のアルゴリズムにおいて、DAGと呼ばれる事前に計算された数ギガバイトのデータセットをランダムに参照する手順が含まれ、DAGが格納されたメモリへのアクセス速度がプルーフ・オブ・ワーク(PoW)の処理速度を制限するという特徴がある。
そのため、ビットコイン(Bitcoin)のハッシュ関数演算に比較してASIC耐性があるが、イーサリアム(Ethereum)の仮想通貨をマイニング(ナンスの特定)するためには、DAGに格納されたデータへの高速アクセスが課題である。
<プルーフ・オブ・ワーク(PoW)のアルゴリズムの概要>
図8は、従来のイーサリアム(Ethereum)に用いられるプルーフ・オブ・ワーク(PoW)のアルゴリズムの概要を示す図である。
まず、1つ前のブロックヘッダ情報と推測したナンスとをSHA3(Keccak512)のアルゴリズムを用いてハッシュ演算し(ステップS1)、その演算結果(Mix0)を得る。
その後、演算結果(Mix0)をアドレス生成用Mixing関数(FNVハッシュアルゴリズム)でハッシュ演算し、DAGのアドレス情報を求め、求められたアドレスに格納されている128バイトのデータを読み出す(ステップS2)。
その後、読み出したデータと演算結果Mix0とをMixデータ生成用Mixing関数(FNVハッシュアルゴリズム)を用いて演算し、演算結果であるMix1を得る(ステップS3)。Mix1の演算結果も前記と同様にアドレス生成用のMixing関数でハッシュ演算し、DAGのアドレス情報を求め、求められたアドレスに格納されているDAGのデータを読み出し、読み出したデータとMix1とを用いてFNVハッシュアルゴリズム演算し、Mix2を得る。
このようなアドレス生成用のハッシュ演算と、DAGからのデータ読み出しと、読み出したデータとMix値とを用いたMixデータ生成用のハッシュ演算とを64回繰り返し(ステップS4)、Mix64を得る(ステップS5)。
その後、事後処理関数を用いてデータの圧縮等の処理を行い(ステップS6)、得られたハッシュ値が特定の条件を満たす場合(ターゲットとなる閾値以下)であればプルーフ・オブ・ワーク(PoW)の成功と見なされる(ステップS7)。
EthereumのPoWアルゴリズム Ethereumに用いられているプルーフ・オブ・ワーク(PoW)のアルゴリズムは、Ethashと称され、そのアルゴリズムは下記URLに示すWebに開示されている。https://vicryptopix.com/ethash/
ハッシュ演算に用いるDAGのアドレス情報(ページ情報)は、上記ステップS4の繰り返し処理における各フェーズの演算結果(mix値)(Mix0~Mix63)により決まるため、DAGのデータ取得を並列化することができず、そのためマイニングを高速化するためにはDAGへの高速アクセスが必要である。
DAGのデータセットが格納されているメモリに高速アクセスするためには、メモリとしてHBM(High Bandwidth Memory)やHBM2を利用することが考えられるが、HBMやHBM2はDRAMが用いられているので、DRAMのレイテンシを遮蔽すると共にメモリ帯域を最大限に利用する必要がある。
ハッシュ演算におけるDAGリードのリードアドレスはランダム性を持つことから、単純にハッシュ演算回路を多数準備して並列実行させたとしても、複数のバンクを備えるメモリに対するバンクアクセス競合が避けられず、メモリアクセス効率が落ちてしまう。
本発明の一実施形態は、上記に鑑みてなされたもので、その目的は、多数のハッシュ演算回路から複数のバンクを備えるメモリに対してバンク競合を起こさないように制御することにより、メモリ帯域を最大限に有効活用することにある。
上記課題を解決するために、請求項1記載の発明は、複数のバンクを備えたメモリと、複数のハッシュ演算回路と、前記メモリの各バンクと前記ハッシュ演算回路とを接続するインターコネクトと、を備えた情報処理装置において、偶数番号の前記ハッシュ演算回路を前記メモリのバンク番号の前半分に割り当て、奇数番号の前記ハッシュ演算回路を前記メモリのバンク番号の後半分に割り当て、各前記ハッシュ演算回路では初期カウンタ値が全て異なる値に設定されて1サイクル毎に1ずつカウントアップされるカウンタのカウンタ値が入力されるセレクタが、前記カウンタ値に等しいバンク番号のバンクを指定するリードリクエストを選択することで、前記メモリからデータを読み出すための各前記ハッシュ演算回路からのリードリクエストが同一サイクルにおいてそれぞれが異なるバンクを指定し、前記インターコネクトのルーティング部はバタフライ接続結線により各前記ハッシュ演算回路からのリードリクエストの調停が生じないよう設定されていることを特徴とする。



本発明によれば、複数のバンクを備えたメモリに複数のハッシュ演算回路がそれぞれ異なるバンクを指定してアクセスすることにより、メモリからのデータ読み込みを効率化することができる。
本発明の一実施形態に係る情報処理装置の構成を示す図である。 本発明の一実施形態に係る情報処理装置のハッシュ演算回路、インターコネクト、メモリの関係を示す概要図である。 (a)は本発明の一実施形態に係る情報処理装置のインターコネクトの構成、及び各ルータのポート番号を示す図であり、(b)は一つのルータの構造を示す図である。 本発明の一実施形態に係る情報処理装置のハッシュ演算回路の概要を示す図である。 FIFOとセレクタの周辺回路の一例を示す図である。 本発明の一実施形態に係る情報処理装置の各ハッシュ演算回路のカウンタに設定されている初期値が異なることを表で示す図である。 メモリのレイテンシを遮蔽し、各ハッシュ演算回路のスレッド部が処理を行うタイミングを示す図である。 従来のイーサリアムに用いられるプルーフ・オブ・ワークのアルゴリズムの概要を示す図である。
以下、本発明を図面に示した実施の形態により詳細に説明する。
本発明は、複数のバンクを備えたメモリにバンクに対して複数のハッシュ演算回路から同時に異なるバンクを指定してアクセスすることにより、メモリの帯域を有効活用する。
すなわち、本発明の情報処理装置は、複数のバンクを備えたメモリと、複数のハッシュ演算回路と、メモリの各バンクとハッシュ演算回路とを接続するインターコネクトと、を備えた情報処理装置において、各ハッシュ演算回路は、メモリからデータを読み出すためのリードリクエストが同一サイクルにおいてそれぞれが異なるバンクを指定するためのバンク番号を含むように制御することを特徴とする。
以上の構成を備えることにより、複数のバンクを備えたメモリに複数のハッシュ演算回路から同時に異なるバンクを指定してアクセスすることにより、メモリの帯域を有効活用することができる。
上記記載の本発明の特徴について、以下の図面を用いて詳細に解説する。但し、この実施形態に記載される構成要素、種類、組み合わせ、形状、その相対配置などは特定的な記載がない限り、この発明の範囲をそれのみに限定する主旨ではなく単なる説明例に過ぎない。
上記の本発明の特徴に関して、以下、図面を用いて詳細に説明する。
<情報処理装置>
本発明の一実施形態に係る情報処理装置は、プロセッサと高速なメモリ(例として、HBM)とASICやFPGA等の半導体集積回路とを用いてハッシュ関数演算を行うものであり、メモリはマルチバンク構成とし、ハッシュ関数演算を行う半導体集積回路はメモリのアクセスレイテンシを遮蔽するためマルチスレッドを採用し、かつメモリの帯域をフルに使うことができる並列演算を行うものである。
イーサリアム(Ethereum)のプルーフ・オブ・ワーク(PoW)を高速に実現するためには、DAGに格納された128byteのデータ(以下、「DAGデータ」という。)を高速に読み込みすることが効果的である。
そのため、本実施形態では、DAGデータを帯域幅の広いHBM(High Bandwidth Memory)やHBM2に格納する。
HBMやHBM2は、DRAMをスタックした構成であるため、長いアクセスレイテンシが発生する。
本実施形態では、メモリのアクセスレイテンシを遮蔽するため、ハッシュ演算回路はマルチスレッド構成を採用する。
図1は、本発明の一実施形態に係る情報処理装置の構成を示す図である。
情報処理装置100は、メモリ1と、インターコネクト2と、複数のハッシュ演算クラスタ3と、を備えている。
メモリ1は、HBM2(High Bandwidth Memory 2)と呼ばれ、複数のバンク(本実施形態では32個のバンク)を有するマルチバンク構成のDRAM(Dynamic Random Access Memory)である。
インターコネクト2は、前記メモリ1とハッシュ演算クラスタ3に含まれる各ハッシュ演算回路8とを接続している。
各ハッシュ演算クラスタ(HCL(0)~HCL(7))3は、ナンス生成回路4、チェック回路5、ケチャック回路(512)6、ケチャック回路(256)7、複数のハッシュ演算回路8を備えている。
ナンス生成回路4は、ブロック同士をチェーンで繋ぐためのキーであるナンス候補を生成する回路である。
チェック回路5は、演算結果が所望のものであるか否か(マイニングが成功したか否か)を判定する回路である。
ケチャック回路(512)6は、ケチャック(Keccak)と呼ばれるハッシュ関数演算ロジックであり、ケチャック回路(512)は、背景技術において説明したSHA3と同様に、一つ前のブロックヘッダ情報と推測したナンスをハッシュ化するための回路である。
ケチャック回路(256)7は、ハッシュ演算結果であるMix64をハッシュ演算し、演算結果を圧縮するものである。なお、ケチャック回路(256)7は、背景技術において説明したMixダイジェスト(32b)と同様である。
ハッシュ演算回路8であるHAS(0)~HAS(3)は、FNVハッシュ関数アルゴリズムを実行する演算ロジックであり、それぞれ入力したミックス値とDAGから得たデータとを組み合わせ64回のハッシュ演算を行う。
情報処理装置100には、ハッシュ演算クラスタ3を8個含み、各ハッシュ演算クラスタ3に4個のハッシュ関数部が実装されているので、合計32個のハッシュ演算部HAS(0)~HAS(31)を含んでいる。
一方、各ハッシュ演算クラスタ3には、ケチャック回路(512)6、ケチャック回路(256)7、ナンス生成回路4、チェック回路5がそれぞれ1個ずつ実装され、それらを4つのハッシュ演算回路8で共用している。
ハッシュ演算回路8の実装数はメモリ1の帯域、インターコネクトのバス幅、動作周波数、扱うデータ量によって定める。
例えば、メモリ1の帯域が512GB/secであり、インターコネクト2のバス幅を64byte、動作周波数を250MHzとすると、128byteのDAGデータを処理するハッシュ演算回路8は32個あればメモリ1の帯域を使いきることとなる。すなわち、バス幅64byteのインターコネクト2で128byteのデータを処理するためには2クロックで一回のデータ処理が行われるので、512GB/(128byte×125MHz)=32となる。
また、ケチャック回路(512)6、ケチャック回路(256)7のスループットと、ハッシュ演算回路8のスループットとがバランスがとれるようにハッシュ演算クラスタ3内のハッシュ演算回路8の個数を選定している。
<ハッシュ演算回路、インターコネクト、メモリの関係>
図2は、本発明の一実施形態に係る情報処理装置のハッシュ演算回路、インターコネクト、メモリの関係を示す概要図である。なお、図2に示す各部に付与した符号は図1と同様である。また、図1に示した8つのハッシュ演算クラスタ(HCL(0)~HCL(7))に含まれるハッシュ演算回路(HAS(0)~HAS(3))を説明の都合上、HAS(0)~HAS(31)と通し番号で記載している。
したがって、図2において、HAS(4)はハッシュ演算クラスタHCL(1)のHAS(0)に相当し、HAS(30)、HAS(31)はハッシュ演算クラスタHCL(7)のHAS(2)及びHAS(3)に相当する。
インターコネクト2は、図2に示すように、メモリ1内のバンク(0)~バンク(31)を制御対象としており、各ハッシュ演算回路から同時並列に出力された各アドレス(バンク)に応じて、メモリ1内のバンク(0)~バンク(31)の任意のバンクに接続できるよう構成られている。なお、所定のタイミングにおいて、一つのハッシュ演算回路8がインターコネクト2を介してアクセスするバンクは任意の一つであり、各ハッシュ演算回路8はアクセスするバンクが重複しないよう制御されている。これにより、インターコネクト2は、メモリ1の帯域を有効活用している。
インターコネクト2は、アドレスルータ2Aとデータルータ2Dとから構成されている。
図示したように、各ハッシュ演算回路8からハッシュ演算回路のスレッド番号(後述)及びアドレスが出力され、インターコネクト2のアドレスルータ2Aがハッシュ演算回路の回路番号及びバンク番号を付加し、ハッシュ演算回路からのリードリクエストRRqをメモリ1側に出力する。
また、インターコネクト2のアドレスルータ2Aの出力段では、バンク番号に関するデータを削除し、メモリ1にはアドレス、ハッシュ演算回路番号及びスレッド番号が供給される。メモリ1は供給されたアドレス情報に基づいてDAGデータを読み出し、ハッシュ演算回路番号及びスレッド番号はメモリ1に一時記憶され、読み出されたDAGデータをハッシュ演算回路に出力する際、ハッシュ演算回路番号及びスレッド番号が利用される。なお、インターコネクト2のアドレスルータ2Aはハッシュ演算回路8から出力されたリードリクエストRRqに含まれるアドレス(バンク)バンク番号に応じて、バンク0~バンク31の任意のバンクに接続できるよう構成している。
ここで、図において、RRqはハッシュ演算回路8からのリードリクエストを表し、RDはメモリ1から出力されるDAGデータを表している。
メモリ1から読み出されたDAGデータは、リードデータRDおよびリードリクエストRRqを行ったハッシュ演算回路の回路番号、スレッド番号と共にインターコネクト2のデータルータ2Dに供給され、ハッシュ演算回路番号に応じたルート制御が行われ、リードリクエストRRqを行ったハッシュ演算回路にデータが供給される。この際、データルータ2Dの出力段でハッシュ演算回路番号に関するデータが削除され、ハッシュ演算回路にはデータとスレッド番号が供給される。
<インターコネクトの構成>
図3(a)は、本発明の一実施形態に係る情報処理装置のインターコネクト2のアドレスルータ2Aの構成、及び各ルータのポート番号を示す図であり、図3(b)は一つのルータのポート構造を示す図である。なお、インターコネクト2のデータルータ2Dもアドレスルータ2Aと同じ構成である。
図3(a)において、符号12はメモリ1に設けられたメモリバンク側I/Oを示し、14Aはインターコネクト2に設けられたアドレスルータ2Aのルーティング部を示し、16はハッシュ演算クラスタ(HCL0~HCL7)に設けられたハッシュ演算回路のI/Oを示している。
ルーティング部14Aは、バンク数及びハッシュ演算回路数に応じてルータ列が決定され、本実施形態のようにバンク数及びハッシュ演算回路数が32個の場合には、32を二進数で表した際のビット数5に等しいルータ列が必要となる。
ルーティング部14Aのハッシュ演算回路のI/Oに接続しているルータ列(R1-1~R1-16)は各ハッシュ演算回路8から出力されるバンク番号(後述するFIFOの番号)の最上位ビット(5ビット目)の“0”または“1”によってルートが制御され、次のルータ列(R2-1~R2-16)は最上位から2番目のビットの値によってルートが制御される。
以下同様にハッシュ演算回路のI/Oから3列目、4列目、5列目のルータ列はそれぞれバンク番号の3ビット目、4ビット目、5ビット目(最下位ビット)のビット値によってルートが制御される。
バンク番号の最下位ビットにより制御されるルータ列(R5-1~R5-16)はメモリ1の各バンクのI/Oへ接続されている。また、ルーティング部14Aは複数のルータをバタフライ接続した構成であり、各ルータは図3(b)に示すように入力2ポート、出力2ポートであり、入力ポートから“0”が入力するとポート0(port0)へ接続し、“1”が入力するとポート1(port1)へ接続するように構成している。
例えば、1列目のルータR1-1のハッシュ演算回路側から見た出力ポートのポート1(port1)は2列目のルータR2-9の入力ポートのポート0(port0)と接続し、同じく1列目のルータR1-8の出力ポートのポート1は2列目のルータR2-16の入力ポートのポート0(port0)と接続している。また、1列目のルータR1-2~R1-7の出力ポート1は2列目のルータR2-10~R2-16の入力ポート0(port0)とそれぞれ接続している。さらに、ルータR1-1~R1-8はいずれもその出力ポート0は2列目のルータ列のR2-1~R2-8の入力ポート0と接続している。
一方、1列目のルータR1-9~R1-16は出力ポート1がそれぞれ2列目のルータ列のR2-9~R2-16の入力ポート1と接続し、出力ポート0がそれぞれ2列目のルータ列のR2-1~R2-8の入力ポート1と接続するよう結線されている。
2列目から5列目の各入出力ポートの接続は図3(a)に示した通りである。
例えば、ハッシュ演算回路の回路番号0がメモリ1のバンク番号0を指定した場合、ハッシュ演算回路からルーティング部14Aに入力されるバンク番号は00000であるため、R1-1、R2-1、R3-1、R4-1、R5-1のすべてのルータにおいてポート0が選択され、バンク0に接続しているI/Oとの間でデータの送信ができることになる。
また、ハッシュ演算回路の回路番号0がメモリ1のバンク番号31を指定した場合、ハッシュ演算回路からルーティング部14Aに入力されるバンク番号は11111となり、ルータR1-1、R2-9、R3-13、R4-15、R5-16のすべてのルータでポート1出力となり、バンク31に接続しているI/Oとの間でデータの送信ができることとなる。
なお各ルータにおいて、2つの入力をルーティングした結果、出力ポートが同一になると調停が発生し、バスの帯域を有効利用できなくなる。そのため、同じルータに入力するデータには所定の規則を持たせている。
すなわち、初期値として、ハッシュ演算回路の回路番号として偶数番号(0、2、4、・・・30)をメモリ1のバンク番号0~15に割り当て、ハッシュ演算回路の回路番号として奇数番号(1、3、5、・・・31)をメモリ1のバンク番号16~31に割り当てることで、データの衝突を回避している。このように構成することにより、同じルータに接続した2つの異なるハッシュ演算回路から出力されるバンク番号の最上位ビットが必ず異なり、調停が不要となるのでデータの転送速度を向上することができる。
なお、ルータにおける接続制御の対象になるビットが互いに異なる組み合わせは多数存在するが、図3に示した初期設定にすることで、ルーティング部の2段目~5段目においても調停が不要となる。
ハッシュ演算回路8から出力される、メモリ1のバンク番号を表すビットは、ルーティング部14Aを制御し、メモリアドレスはバンク内のDAGデータを読み出すアドレスであり、ハッシュ演算回路8の回路番号はメモリ1から読み出したデータを要求元であるハッシュ演算回路8に戻すために用いられ、スレッド番号はハッシュ演算回路8のスレッドを制御するために用いられる。
<データ転送>
次に、メモリ1のバンクから読み出されたDAGデータをリクエスト元のハッシュ演算回路に転送する制御について説明する。
メモリ1のバンクから読み出されたDAGデータをリクエスト元のハッシュ演算回路に転送する際はデータルータ2Dを介してDAGデータが転送される。データルータ2Dは図3(a)に示したアドレスルータ2Aと同じ構成であり、データの流れがアドレスルータ2Aと異なるだけである。
先に述べたように、ハッシュ演算回路8は、自己の回路番号をアドレスルータ2Aのルーティング部14Aに供給しているので、リードリクエストRRqの結果、各バンクから読み出したデータ転送の際に、データルータ2Dのルーティング部14Aはこの回路番号を利用してルーティングを行う。
例えば、ハッシュ演算回路の回路番号1からバンク番号16を表す値「10000」がアドレスルータ2Aルーティング部に入力され、バンク番号に基づきルーティングが制御され、メモリ1のバンク番号「16」にリードリクエストRRqが行われると、メモリ1のバンク番号「16」から読み出されたDAGデータはデータルータ2Dを介して要求元であるハッシュ演算回路の回路番号1に転送される。
より詳細には、メモリ1はバンク番号「16」に対するリードリクエストを受け付け、所定のレイテンシを経た後、DAGデータが読み出され、要求元のハッシュ演算回路1に出力される。この際、データルータ2Dのルーティング部14Aは、リードリクエスト元のハッシュ演算回路の回路番号を表す最下位ビットを最上位ビットにシフトすると共に、残りのビットをそれぞれシフトダウンすることで得られた値を用いてルーティングを制御する。
ハッシュ演算回路の回路番号1は、回路番号として00001をアドレスルータ2Aに供給し、インターコネクト2のルーティングコントローラ(図示省略)は受け取った回路番号を、10000に変換すると共にバンク番号「16」から読み出したDAGデータと変換した回路番号のデータとスレッド番号とをデータルータ2Dに供給する。データルータ2Dはルータ列(R5-1~R5-16)において、変換された回路番号のデータの最下位ビットに基づきルート判定を行い、その後、各ルータ列(R4、R3、R2、R1)でも最下位ビットから2ビット目、3ビット目、4ビット目、5ビット目(最上位ビット)の値に基づきルート判定が行われ、読み出したDAGデータをハッシュ演算回路の回路番号1に供給する。
なお、ルーティングコントローラにおける回路番号のビットシフト処理を行わず、図3(a)に示したルーティング部14Aのルータ列が反転した構成、すなわち、メモリバンク側のI/Oに最も近いルータ列にR1-1~R1-16を配置し、ハッシュ演算回路側のI/Oに最も近いルータ列にR5-1~R5-16を配置すると共に、それに伴い2段目から4段目の各ルータ列も反転した位置に配置し、ルータ列R1-1~R1-16にて回路番号の最上位ビットでルーティングを制御し、ルータ列R5-1~R5-16で回路番号の最下位ビットでルーティングを制御するよう構成しても良い。
このようにアドレスルータとデータルータのルータ列およびその接続を反転させることで、データルータにおけるルーティング制御でビットの入れ替えやビットシフト等、回路番号のアドレス加工が不要となる。
ただし、インターコネクト2を構成する半導体素子の実装上の配線が複雑になるので、アドレスルータ2A及びデータルータ2Dは相似の構成とするのが好ましい。
<ハッシュ演算回路>
図4は、本発明の一実施形態に係る情報処理装置のハッシュ演算回路の概要を示す図である。
ハッシュ演算回路8は、ハッシュ演算部(FNVアルゴリズム)21、スレッド部23、スレッドコントローラ25、アドレス生成・バンク判定部(FNVアルゴリズム)27、FIFO29、セレクタ31と、カウンタ33を備えている。
図1にて説明したように、ケチャック回路(512)6は、ナンス生成回路4から取得したデータをハッシュ演算し、その結果である演算結果(Mix0)を得て、ハッシュ演算回路8に設けられたスレッド部23に演算結果(Mix0)を出力する。
スレッド部23は、スレッド部23のコンテキストに基づき、演算結果(Mix0)をアドレス生成・バンク判定部27に出力し、該アドレス生成・バンク判定部27は、スレッド部23から取得した演算結果(Mix0)に対して、FNVアルゴリズムに基づくハッシュ演算を行うことで、次に読み出すべきメモリ1のバンク番号およびメモリ1のアドレスを得る。
なお、スレッドコントローラ25は、スレッド部23を構成しているSRAMの中のマルチスレッドコンテキストの空き状況や計算状況(計算中・計算完了)等の情報に基づきスレッド部23のスレッド実行制御を行っている。また、スレッド部23が保持するスレッド数は、メモリ1のアクセスレイテンシよりも十分大きな数とすることで、レイテンシを完全に遮蔽する。
次に、アドレス生成・バンク判定部27は、得られたバンク番号に対応したFIFO29にメモリのアドレス及びスレッド番号を表すデータを格納する。各FIFO29は複数のデータを先入れ先出しするメモリで、各FIFOは例えば8段分のデータを格納できる。
次に、セレクタ31は、カウンタ33から入力されるカウンタ値に基づいて32個のFIFO29のうちの1つを選択し、選択したFIFO29から当該セレクタ31を介してアドレス及びスレッド番号を含むリードリクエストRRqをインターコネクト2へ送出する。この際、インターコネクト2はリードリクエストを出力しているハッシュ演算回路の回路番号や各ハッシュ演算回路のセレクタ31を介してリクエストが出力されたFIFOの番号をバス側から把握できるので、ハッシュ演算回路番号やバンク番号(=FIFO番号)をリードリクエスト及び読み出しデータ転送のルーティングに利用する。
<プルーフ・オブ・ワーク(PoW)のアルゴリズムの概要>
図1及び図4を参照して、ハッシュ演算回路によるプルーフ・オブ・ワーク(PoW)のアルゴリズムの概要について説明する。
(1)ケチャック(512)6は、256ビットのヘッダーと64ビットのナンスからなる320ビットのデータをハッシュ演算し、512ビットの演算結果を得、その演算結果を2回繰り返すことで1024ビットのMix0を得る。
(2)ハッシュ演算回路8のスレッド部23はMix0とスレッド番号とからなるデータをアドレス生成・バンク判定部27に供給し、該アドレス生成・バンク判定部27にてMix0のデータについてFNVハッシュ演算を行うことでバンク番号及びアドレスの情報を得る。
(3)アドレス生成・バンク判定部27は、得られたバンク番号と同じ番号のFIFO29にアドレスとスレッド番号を格納する。
(4)セレクタ31がいずれかのFIFO29をインターコネクト2に接続すると、該FIFO29に格納されているリードリクエスト(アドレスおよびスレッド番号)がインターコネクト2を介してメモリ1の所望のバンクに供給される。なお、メモリ1のバンク番号はセレクタ31が選択したFIFO番号に等しいので、インターコネクト2はFIFO番号を見ることでリードリクエストを供給すべきバンク番号を把握することができ、バンク番号に基づいてアドレスルータ2Aのルーティング部14Aを制御する。また、ハッシュ演算回路8の番号もインターコネクト2側から把握することができるので、インターコネクト2はハッシュ演算回路8の番号をリードリクエスト受付時に記憶し、リードリクエストに対応するリードデータがメモリ1から出力された際にハッシュ演算回路8の回路番号を再度付与することでリードデータのルーティングを制御している。
(5)インターコネクト2に供給されたリードリクエストはメモリ1の所望のバンクに供給され、DAGデータが読み出される。インターコネクト2を介したリードリクエストの供給および読み出したDAGデータの転送については、図2及び図3で説明した通りである。
(6)インターコネクト2を介してメモリ1から読み出されたDAGデータはハッシュ演算回路8のハッシュ演算部21に供給される。該ハッシュ演算部21ではFNVアルゴリズムに基づくハッシュ演算が行われ、ハッシュ演算結果であるMix1がスレッド部23に供給される。
(7)その後、Mix1及びスレッド番号をアドレス生成・バンク判定部27に供給し、該アドレス生成・バンク判定部27にてMix1のデータについてFNVハッシュ演算を行うことで次のハッシュ演算に利用するDAGデータが格納されているバンク番号及びアドレスの情報を得る。
(8)以降、上記(2)~(6)を63回(既に記載した処理も含め、合計64回)繰り返し、Mix64を得、得られたMix64(1024ビット)をFNVで256ビットに圧縮する。
(9)その後、ケチャック(256)7は、得られたMix64をハッシュ演算によりデータ圧縮し、その結果が所定の条件を満たしているか否かをチェック回路5にて判定する。
<FIFOとセレクタの周辺回路>
図5は、FIFOとセレクタの周辺回路の一例を示す図である。
アドレス生成・バンク判定部27とFIFO29(0)~(31)との間には、アドレスデコーダ35(0)~(31)が設けられている。
アドレスデコーダ35(0)~(31)は、アドレス生成・バンク判定部27から出力されるバンク番号およびアドレスのうち、バンク番号(0)~(31)をそれぞれデコードしてバンクイネーブル信号BE(0)~(31)を生成し、生成されたバンクイネーブル信号BE(0)~(31)をそれぞれ対応するFIFO29(0)~(31)に供給することで、それぞれ適切なバンク番号およびアドレスが各FIFO29(0)~(31)に入力される。
この結果、各FIFO29(0)~(31)には、同一番号のバンク番号(0)~(31)およびアドレスが順次に格納される。
カウンタ33は、コントローラから初期化時にハッシュ演算回路の番号に応じた初期値が設定される。カウンタ33のカウント値はセレクタ31に出力され、選択信号として用いられる。
この際、カウンタ33から出力されるカウンタ値は、セレクタ31から送出するアドレスが向かうバンク番号を示している。前述した通り、このカウンタ値はすべてのハッシュ演算回路8で異なっていることから、すべてのハッシュ演算回路8から送出するアドレスが向かうバンク番号は、同一サイクルにおいて重複しない。
なお、ハッシュ演算回路(HAS(0)~HAS(31))8のカウンタ初期値は図3に示した通りである。
上述したように、カウンタ初期値を設定し、情報処理装置100を起動すると、起動直後はセレクタ31で選択したFIFO内のデータが空のため、ハッシュ演算回路8からリードリクエストが出力されない。しかし、FIFOに蓄積されるリードリクエストがFIFOからセレクタ31を介してインターコネクト2に出力されるリードリクエストより多くなるようスレッド部23、スレッドコントローラ25、セレクタ31を制御することでFIFOにリードリクエストが蓄積され、セレクタ31がいずれのFIFOを選択しても常にリードリクエストが出力される状況となる。
<各カウンタの初期値>
図6は、本発明の一実施形態に係る情報処理装置の各ハッシュ演算回路のカウンタに設定されているカウンタ初期値を表で示す図であり、同図に示すように、ハッシュ演算クラスタ3(0)~(7)の各々には4つのハッシュ演算回路8(ハッシュ演算回路0~31)が備わっているので、各ハッシュ演算回路8に備えられたカウンタ33の初期設定値は全てが重複しないように設定している。また、同じルータに同時にアクセスするハッシュ演算回路8はデータ転送における調停が発生しないよう、カウンタ初期値が選択されている。
すなわち、カウンタ値はインターコネクト2に出力するリードリクエストが格納されたFIFOの番号であり、またFIFOの番号はリードリクエストにより読み出されるDAGのデータセットが格納されたメモリ1のバンク番号に等しい。
そのため、32個のハッシュ演算回路8がそれぞれ異なるバンクにアクセスするようカウンタの初期値が設定され、かつ同じルータに同時にアクセスするハッシュ演算回路8はルーティング部14Aの1列目~5列目のいずれの列においても、各ルータで異なるポートが選択されることで、ルーティング制御において調停が発生しないようにカウンタ初期値並びにルーティング部14Aのバタフライ接続の結線が設定されている。
<各ハッシュ演算回路のスレッド構成>
図7は、メモリ1のレイテンシを遮蔽する目的で各ハッシュ演算回路8のスレッド部がスレッド処理を行う状態をタイミングチャートで示したものである。
ハッシュ演算クラスタ3では、複数(本実施形態では4つ)のハッシュ演算回路8がナンス生成回路4、チェック回路5、ケチャック回路(512)6、ケチャック回路(256)7を共用している。そのため、同じクラスタに属するハッシュ演算回路から出力されるリードリクエストRRqは出力されるタイミングが異なる。例えば、図7に例示したように、ハッシュ演算クラスタ(0)に含まれるハッシュ演算回路(0)とハッシュ演算回路(1)はリードリクエストRRqが出力されるタイミングがずれている。またリードリクエストRRqのずれに伴い、リードデータの出力もずれている。
一方、ハッシュ演算クラスタ(1)、(2)、(3)に属するハッシュ演算回路(8)、(16)、(24)はハッシュ演算クラスタ(0)に含まれるハッシュ演算回路(0)と同じタイミングでリードリクエストRRqを出力し、同じタイミングでリードデータが得られる。
図7ではスレッド数が256のものを例示しており、このスレッド数はメモリ1のレイテンシ(LTC)を遮蔽するのに十分な数としている。
また各スレッド番号の下に表示した数字は各ハッシュ演算回路8のカウンタ値であり、図6に示したものと同じ情報を記載している。各セレクタ31を制御している全てのカウンタ33は初期値が異なるが同期してカウント動作を行っているので、インターコネクト2のアドレスルータ2Aにおけるアドレスの衝突は発生せず、かつデータルータ2Dにおけるデータの衝突も発生しない。
本実施形態によれば、以下の特徴的な構成、及び効果を有している。
<マルチスレッド構成>
DAGのデータは帯域幅の広いHBM(High Bandwidth Memory)やHBM2に格納する。しかし、HBMやHBM2はDRAMをスタックした構成であるため、長いアクセスレイテンシが発生する。
本実施形態では、長いアクセスレイテンシの発生を遮蔽するために、ハッシュ演算回路8はマルチスレッド構成を採用する。マルチスレッド構成を採用することで、リードリクエストからリードデータ出力までの遅延時間が生じても、その遅延時間に他のスレッドのリードリクエスト及びリードデータ出力が行われるので、HBMやHBM2の帯域を効率的に活用することができる。
<複数のハッシュ演算回路>
本実施形態では、マルチスレッドを採用したハッシュ演算回路8を複数備え、各ハッシュ演算回路8はメモリ1の異なるバンクに同時にアクセスするよう制御しているので、マルチスレッドによるメモリ帯域の活用に加え、HBMやHBM2の性能をさらに引き出す、すなわち、帯域をフルに使うことが可能となる。なお、本実施形態ではハッシュ演算回路8の実装数をメモリ1のバンク数に等しい数に設定しているが、これに限定されるものではなく、バンク数以上のハッシュ演算回路を実装するようにしても良い。ただし、バンク数以上のハッシュ演算回路を実装すると、バンクに対してリードリクエストを出すことができない、すなわち、ハッシュ演算を行うことができないハッシュ演算回路が発生することとなり無駄が生じる。また、バンク数以上のハッシュ演算回路を実装すると、バス(インターコネクト)における調停論理回路を導入する必要があり、バスの実装面積が大きくなる。そのため、ハッシュ演算回路数は最大でバンク数と等しいのが好ましい。
<メモリへのアクセス制御>
各ハッシュ演算回路8がメモリ1の異なるバンクに同時にアクセスするためには、メモリ1の各バンクに対して衝突がないリードリクエストが必要となる。
本実施形態では、各ハッシュ演算回路8のI/Oとメモリ1の各バンクのI/Oとの接続において、同時にアクセスされるバンクが重複しないようにバスを構成することで、各ハッシュ演算回路8がメモリ1の異なるバンクに同時にアクセスすることができる。
<本実施形態の態様例の作用、効果のまとめ>
<第1態様>
本態様の情報処理装置は、複数のバンクを備えたメモリ1と、複数のハッシュ演算回路8と、メモリ1の各バンクとハッシュ演算回路8とを接続するインターコネクト2と、を備えた情報処理装置において、各ハッシュ演算回路8は、メモリ1からデータを読み出すためのリードリクエストが同一サイクルにおいてそれぞれが異なるバンクを指定するためのバンク番号を含むように制御することを特徴とする。
本態様によれば、各ハッシュ演算回路8は、メモリ1からデータを読み出すためのリードリクエストが同一サイクルにおいてそれぞれが異なるバンクを指定するためのバンク番号を含むように制御することで、複数のバンクを備えたメモリに複数のハッシュ演算回路が常にそれぞれ重複しないバンクにアクセスすることにより、メモリからのDAGデータ読み込みを効率的に行うことができる。
<第2態様>
本態様の情報処理装置において、メモリ1は、事前に計算されたDAGデータを記憶し、ハッシュ演算回路8は、ハッシュ演算部21と、スレッド部23と、スレッドコントローラ25と、アドレス生成・バンク判定部27と、バンクの数と等しい数のFIFO29と、セレクタ31と、カウンタ33を備え、ハッシュ演算部21は、メモリ1から読み出したDAGデータに基づいてハッシュ演算を行い、アドレス生成・バンク判定部27は、スレッド部23のコンテキストに基づき入力データをハッシュ演算してアクセスするDAGのデータセットが格納されたバンク番号とアドレスを得ると共にバンク番号に等しい番号のFIFO29にデータを格納し、セレクタ31は、入力されるカウンタ値に基づきFIFO29を決定したことを特徴とする。
本態様によれば、ハッシュ演算部21は、メモリ1から読み出したDAGのデータに基づいてハッシュ演算を行い、アドレス生成・バンク判定部27は、スレッド部23のコンテキストに基づき入力データをハッシュ演算してアクセスするDAGデータが格納されたバンク番号とアドレスを得ると共にバンク番号に等しい番号のFIFO29にデータを格納し、セレクタ31は、入力されるカウンタ値に基づきFIFO29を決定し、各ハッシュ演算回路8のカウンタ初期値がいずれのハッシュ演算回路とも重複しないよう設定している。そのため、全てのハッシュ演算回路からのリードリクエストは衝突することなくインターコネクト2を介してメモリ1に供給され、またメモリ1から読み出されたDAGデータも衝突することなく各ハッシュ演算回路に供給される。
<第3態様>
本態様のセレクタ31に入力されるカウンタ値は、全てのハッシュ演算回路8においてそれぞれ異なることを特徴とする。
本態様によれば、セレクタ31に入力されるカウンタ値は、全てのハッシュ演算回路8においてそれぞれ異なることで、各ハッシュ演算回路8がメモリ1の異なるバンクに衝突せずに同時にアクセスすることができる。
<第4態様>
本態様のインターコネクト2は、複数のルータをバタフライ接続した構成であることを特徴とする。
本態様によれば、インターコネクト2は、複数のルータをバタフライ接続した構成であることで、全てのハッシュ演算回路からのリードリクエストは衝突することなくインターコネクト2を介してメモリ1に供給され、またメモリ1から読み出されたDAGデータも衝突することなく各ハッシュ演算回路に供給される。
<第5態様>
本態様のインターコネクト2は、バンクの数を2ビットで表した場合のビット数に等しい段数であることを特徴とする。
本態様によれば、インターコネクト2は、バンクの数を2ビットで表した場合のビット数に等しい段数であることで、メモリのバンクの数と同数の経路をインターコネクト2の内部に構成することができる。
<第6態様>
本態様のインターコネクト2は、リードリクエストRRqに含まれる指定バンク情報に基づいてハッシュ演算回路8とメモリ1のバンクとを接続し、リードリクエストRRqをメモリ1のバンクに供給することを特徴とする。
本態様によれば、インターコネクト2は、リードリクエストRRqに含まれる指定バンク情報に基づいて各ハッシュ演算回路8とメモリ1の各バンクとを接続し、リードリクエストRRqをメモリ1のバンクに供給することで、インターコネクト2により各ハッシュ演算回路8とメモリ1の各バンクとを1対1で接続することができる。
<第7態様>
本態様のインターコネクト2は、リードリクエストRRqに含まれるハッシュ演算回路8の番号に基づいてハッシュ演算回路8とメモリ1とを接続し、メモリ1から読み出したデータを前記番号を有するハッシュ演算回路8に供給することを特徴とする。
本態様によれば、インターコネクト2は、リードリクエストRRqに含まれるハッシュ演算回路8の番号に基づいてハッシュ演算回路8とメモリ1とを接続し、メモリ1から読み出したデータをハッシュ演算回路8に供給することで、メモリ1から読み出したデータを前記番号を有するハッシュ演算回路8に供給することができる。
1…メモリ、2…インターコネクト、2A…アドレスルータ、2D…データルータ、3…ハッシュ演算クラスタ、4…ナンス生成回路、5…チェック回路、6…ケチャック回路(512)、7…ケチャック回路(256)、8…ハッシュ演算回路、14A…ルーティング部、21…ハッシュ演算部、23…スレッド部、25…スレッドコントローラ、26…スレッドコントローラ、27…アドレス生成・バンク判定部、29…FIFO、31…セレクタ、33…カウンタ、35…アドレスデコーダ、100…情報処理装置

Claims (7)

  1. 複数のバンクを備えたメモリと、
    複数のハッシュ演算回路と、
    前記メモリの各バンクと前記ハッシュ演算回路とを接続するインターコネクトと、を備えた情報処理装置において、
    偶数番号の前記ハッシュ演算回路を前記メモリのバンク番号の前半分に割り当て、
    奇数番号の前記ハッシュ演算回路を前記メモリのバンク番号の後半分に割り当て、
    各前記ハッシュ演算回路では初期カウンタ値が全て異なる値に設定されて1サイクル毎に1ずつカウントアップされるカウンタのカウンタ値が入力されるセレクタが、前記カウンタ値に等しいバンク番号のバンクを指定するリードリクエストを選択することで、前記メモリからデータを読み出すための各前記ハッシュ演算回路からのリードリクエストが同一サイクルにおいてそれぞれが異なるバンクを指定し、
    前記インターコネクトのルーティング部はバタフライ接続結線により各前記ハッシュ演算回路からのリードリクエストの調停が生じないよう設定されていることを特徴とする情報処理装置。
  2. 前記メモリは、事前に計算されたDAGデータを記憶し、
    各前記ハッシュ演算回路は、ハッシュ演算部と、スレッド部と、スレッドコントローラと、アドレス生成・バンク判定部と、前記バンクの数と等しい数のFIFOと、セレクタと、カウンタと、を備え、
    各前記ハッシュ演算部は、前記メモリから読み出したDAGデータに基づいてハッシュ演算を行い、
    各前記アドレス生成・バンク判定部は、前記スレッド部のコンテキストに基づき入力データをハッシュ演算してアクセスするDAGデータが格納されたバンク番号とアドレスを得ると共に前記バンク番号に等しい番号のFIFOにリードリクエストを格納し、
    各前記カウンタは、各初期値が異なり、かつ、それぞれが同期してカウント動作を行って得られたカウント値を各前記セレクタに出力し、
    各前記セレクタは、入力されるカウンタ値に等しい番号のFIFOを決定したことを特徴とする請求項1記載の情報処理装置。
  3. 各前記セレクタにそれぞれが同期して入力されるカウンタ値は、全てのハッシュ演算回路において同じタイミングでそれぞれ異なることを特徴とする請求項1または2記載の情報処理装置。
  4. 前記インターコネクトは、複数のルータをバタフライ接続した構成であることを特徴とする請求項1記載の情報処理装置。
  5. 前記インターコネクトは、前記バンクの数を2進数で表した場合のビット数に等しい段数であることを特徴とする請求項4記載の情報処理装置。
  6. 前記インターコネクトは、リードリクエストに含まれる指定バンク情報に基づいて各前記ハッシュ演算回路と前記メモリの各バンクとを接続し、リードリクエストをメモリのバンクに供給することを特徴とする請求項5記載の情報処理装置。
  7. 前記インターコネクトは、前記リードリクエストに含まれるハッシュ演算回路の番号に基づいて各前記ハッシュ演算回路と前記メモリとを接続し、前記メモリから読み出したデータを前記番号を有するハッシュ演算回路に供給することを特徴とする請求項6記載の情報処理装置。
JP2019086434A 2019-04-26 2019-04-26 情報処理装置 Active JP7069455B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019086434A JP7069455B2 (ja) 2019-04-26 2019-04-26 情報処理装置
PCT/JP2020/004345 WO2020217640A1 (ja) 2019-04-26 2020-02-05 情報処理装置
US17/593,259 US11961073B2 (en) 2019-04-26 2020-02-05 Information processing device
CN202080029695.XA CN113924556A (zh) 2019-04-26 2020-02-05 信息处理设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019086434A JP7069455B2 (ja) 2019-04-26 2019-04-26 情報処理装置

Publications (2)

Publication Number Publication Date
JP2020184095A JP2020184095A (ja) 2020-11-12
JP7069455B2 true JP7069455B2 (ja) 2022-05-18

Family

ID=72942458

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019086434A Active JP7069455B2 (ja) 2019-04-26 2019-04-26 情報処理装置

Country Status (4)

Country Link
US (1) US11961073B2 (ja)
JP (1) JP7069455B2 (ja)
CN (1) CN113924556A (ja)
WO (1) WO2020217640A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282802B (zh) * 2021-06-17 2022-06-24 浙江毫微米科技有限公司 工作量证明算法优化方法、装置、计算机设备和存储介质
CN114584482B (zh) * 2022-02-14 2023-09-08 阿里巴巴(中国)有限公司 基于内存存储检测数据的方法、装置以及网卡
CN115002050B (zh) * 2022-07-18 2022-09-30 中科声龙科技发展(北京)有限公司 工作量证明芯片

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010001239A2 (en) 2008-07-03 2010-01-07 Nokia Corporation Address generation for multiple access of memory

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6366661A (ja) * 1986-09-08 1988-03-25 Hitachi Ltd 記憶制御方式
JPWO2006051780A1 (ja) * 2004-11-10 2008-05-29 松下電器産業株式会社 不揮発性メモリ装置および不揮発性メモリ装置のアクセス方法
US7461208B1 (en) * 2005-06-16 2008-12-02 Sun Microsystems, Inc. Circuitry and method for accessing an associative cache with parallel determination of data and data availability
EP2115593B1 (en) * 2007-01-26 2018-10-24 Intel Corporation Hierarchical immutable content-addressable memory processor
US9332083B2 (en) * 2012-11-21 2016-05-03 International Business Machines Corporation High performance, distributed, shared, data grid for distributed Java virtual machine runtime artifacts
US9424209B2 (en) * 2013-09-19 2016-08-23 Intel Corporation Dynamic heterogeneous hashing functions in ranges of system memory addressing space
US9342462B2 (en) * 2013-10-31 2016-05-17 Oracle International Corporation Systems and methods for implementing low-latency lookup circuits using sparse hash functions
WO2016046821A1 (en) * 2014-09-23 2016-03-31 Spondoolies Tech Ltd. Method and system for reducing power consumption in bitcoin mining via data input hopping
US10049126B2 (en) * 2015-09-06 2018-08-14 Mellanox Technologies Tlv Ltd. Cuckoo hashing with selectable hash
CA3066903A1 (en) * 2017-07-11 2019-01-17 Swirlds, Inc. Methods and apparatus for efficiently implementing a distributed database within a network
US11436046B2 (en) * 2018-10-11 2022-09-06 Powerchip Semiconductor Manufacturing Corporation Electronic device with memory processor-based multiprocessing architecture and operation method thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010001239A2 (en) 2008-07-03 2010-01-07 Nokia Corporation Address generation for multiple access of memory
US20100005221A1 (en) 2008-07-03 2010-01-07 Nokia Corporation Address generation for multiple access of memory
CN102084346A (zh) 2008-07-03 2011-06-01 诺基亚公司 用于存储器的多路访问的地址生成

Also Published As

Publication number Publication date
WO2020217640A1 (ja) 2020-10-29
JP2020184095A (ja) 2020-11-12
CN113924556A (zh) 2022-01-11
US11961073B2 (en) 2024-04-16
US20220156734A1 (en) 2022-05-19

Similar Documents

Publication Publication Date Title
WO2020217640A1 (ja) 情報処理装置
US9335934B2 (en) Shared memory controller and method of using same
US7346750B2 (en) Memory interleave system
US7386689B2 (en) Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner
CN112189324B (zh) 带宽匹配的调度器
WO2007069506A1 (ja) 記憶領域割当システム及び方法と制御装置
CN112214427B (zh) 缓存结构、工作量证明运算芯片电路及其数据调用方法
JP2019159566A (ja) 計算装置
Kobus et al. Gossip: Efficient communication primitives for multi-gpu systems
JP2006262243A (ja) クロスバー装置、制御方法及びプログラム
JPH10161984A (ja) Sci相互接続を用いたtocカウンタの同期
US11449449B2 (en) Data processing apparatus and operating method thereof
US20080235707A1 (en) Data processing apparatus and method for performing multi-cycle arbitration
US8806132B2 (en) Information processing device, memory access control device, and address generation method thereof
US8489839B1 (en) Increasing memory capacity of a frame buffer via a memory splitter chip
JP2010244096A (ja) データ処理装置、印刷システムおよびプログラム
US9507541B2 (en) Computation device, computation method, and medium
US8935559B2 (en) System and method for reducing crosstalk in on-chip networks using a contraflow interconnect and offset repeaters
JP4360300B2 (ja) 記憶制御装置及び制御方法
US20240211414A1 (en) Multichannel memory arbitration and interleaving scheme
US20210117866A1 (en) Address interleaving for machine learning
JP5499346B2 (ja) 半導体装置およびそれを用いた通信装置
TWI442383B (zh) 顯示裝置之記憶體架構及其控制方法
JP4936223B2 (ja) アフィン変換装置および方法
JP6160717B1 (ja) プロセッサ、および、データ転送方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220406

R150 Certificate of patent or registration of utility model

Ref document number: 7069455

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150