Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP6701207B2 - 情報処理システム - Google Patents
[go: Go Back, main page]

JP6701207B2 - 情報処理システム - Google Patents

情報処理システム Download PDF

Info

Publication number
JP6701207B2
JP6701207B2 JP2017536098A JP2017536098A JP6701207B2 JP 6701207 B2 JP6701207 B2 JP 6701207B2 JP 2017536098 A JP2017536098 A JP 2017536098A JP 2017536098 A JP2017536098 A JP 2017536098A JP 6701207 B2 JP6701207 B2 JP 6701207B2
Authority
JP
Japan
Prior art keywords
computer
control module
arithmetic processing
random number
memory
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
JP2017536098A
Other languages
English (en)
Other versions
JPWO2017033263A1 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2017033263A1 publication Critical patent/JPWO2017033263A1/ja
Application granted granted Critical
Publication of JP6701207B2 publication Critical patent/JP6701207B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/04Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0475Generative networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Automation & Control Theory (AREA)
  • Probability & Statistics with Applications (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、情報処理装置に関し、特に、イジングモデルやニューロモデル等の計算を取り扱う情報処理装置と、その情報処理装置をアクセラレータとして制御する情報処理システムに関する。
現在、コンピュータアーキテクチャの主流はノイマン型である。ノイマン型アーキテクチャでは逐次的な命令列であるプログラムでその動作が定義される。プログラムを変更することにより、様々な用途に利用可能な汎用性を有している。コンピュータの中心的な役割を果たすCPU(Central Processing Unit)のみならず、GPU(Graphics Processing Unit)のような特定用途向けの演算装置もノイマン型アーキテクチャで構成されており、その基本動作は命令列の逐次的な実行にある。このように逐次的に命令を実行して問題を解く計算機を、時間方向に問題を展開しているという観点から見て、本明細書では「時間展開型計算機」と呼ぶ。
これまで、コンピュータの性能向上は主としてクロック周波数の向上に依っていた。ノイマン型アーキテクチャの根幹は命令列の逐次的な実行であるから、命令の実行速度を高速化すれば性能向上が期待できる。しかし、パーソナルコンピュータやサーバに用いられる汎用的なCPUにおいては、クロック周波数の向上は2000年代初頭に3GHz前後で頭打ちとなっている。近年では頭打ちになったクロック周波数に替わって、マルチコア化による並列処理で性能向上を実現する方策が主流になっている。
マルチコア化による並列処理では、逐次的な命令列から並列実行可能な箇所を見出し(並列性の抽出)、並列実行することで性能向上を図る。しかし、逐次的なアルゴリズムを命令列として書き下したプログラムから並列性を抽出することは容易ではない。命令のレベルで並列性を抽出するILP(Instruction Level Parallelism)は既に限界に達しており、近年ではTLP(Thread Level Parallelism)やDLP(Data Level Parallelism)のように、より粒度の粗い並列性を利用する方向になっている。
このような状況を鑑みると、今後、コンピュータの性能向上を図っていくためには、従来のような逐次的な命令列の実行を基本とするのではなく、本質的に並列な情報処理に移行していく必要がある。そのためには、従来の逐次的な命令列による問題の記述方法に替わって、本質的に並列な情報処理を実現するために適した問題の記述が必要となる。
その一つの候補としてイジングモデルがある。イジングモデルは磁性体の振る舞いを説明するための統計力学のモデルであり、磁性体の研究に用いられている。イジングモデルはサイト(+1/−1の2をとるスピン)間の相互作用として定義される。トポロジが非平面グラフになるイジングモデルの基底状態を求めることはNP困難問題であることが知られている。イジングモデルは空間方向に広がった相互作用係数で問題を表現するため、本質的な並列性を利用した情報処理を実現できる可能性がある。
ところで、イジングモデルの基底状態を求めることは、前述した通りNP困難問題であることから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。
例えば、このような装置として、特許文献1に記載の装置がある。このような計算機は、問題を時間方向ではなく空間方向に展開して解くため、本明細書では「空間展開型計算機」と呼ぶ。この空間展開型計算機は、特定の問題を特定の型に当てはめて解くことを行うため、自らの計算過程を制御することは難しく、この制御には時間展開型の汎用的な計算機を用いる必要がある。
時間展開型計算機によって空間展開型計算機を制御する場合には、空間展開型計算機がどの程度処理をしたかを時間空間型計算機内で把握しておき、時間に応じた制御が必要となる。1つの時間展開型計算機から1つの空間展開型計算機を制御する際には、その空間型計算機に応じた制御を実行することで、空間展開型計算機に応じた制御が可能となる。
国際公開第2012/118064号
しかしながら、1つの時間展開型計算機から複数の空間展開型計算機を制御しようとした場合には、それぞれの空間展開型計算機の動作に合わせた制御が必要となる。例えば、空間展開型計算機を複数動作させている際にそれぞれの空間展開型計算機の動作を変更する際には、それぞれの空間展開型計算機に対して時間管理をし続け、その時間にしたがって空間展開型計算機の計算の開始、終了の制御や、温度スケジューリングをする必要があり、空間展開型計算機の数が増えるとすべてを時間展開型計算機で制御するには多くのリソースを取られるという問題がある。
上記課題を解決する本願発明の一側面は、第1の計算機と、第1の計算機に制御される制御モジュールと、制御モジュールと対応付けて構成された第2の計算機を備えるシステムである。第2の計算機は複数のユニットを備え、複数のユニットの其々は、ノードの状態を示す値を記憶する第1のメモリと、係数を記憶する第2のメモリと、演算回路を備える。演算回路は、他ユニットのノードの状態を示す値及び自ユニットの係数に基づいて、自ユニットのノードの状態を示す値を決定して第1のメモリに記憶する演算処理を行う。制御モジュールは、演算処理を制御するための制御信号を第2の計算機に供給する。
本発明の他の一側面は、計算機と制御モジュールを備えるシステムである。計算機は複数のユニットを備え、複数のユニットの其々は、第1のメモリと、第2のメモリと、演算回路を備える。演算回路は、他ユニットの第1のメモリに記憶された値及び自ユニットの第2のメモリに記憶された値に基づいて、自ユニットの第1のメモリセルに記憶する値を決定する演算処理を行う。制御モジュールは、演算処理を制御するためにメモリを指定する第1の制御信号とタイミングを指定する第2の制御信号を前記計算機に供給する。
本発明の他の一側面は、空間展開型計算機とは別に制御部を持つシステムである。特に、複数の空間展開型計算機を持つ際にはそれぞれに空間展開型計算機毎に制御モジュールを持つ。制御モジュールでは、計算実行の時間管理や空間展開型計算機の動作制御である温度管理等を実行する。制御モジュールは、時間展開型計算機に内包される場合、外側に置かれる場合、空間展開型計算機に載せられる場合がある。
本願の構成を持つことにより、空間展開型計算機の時間管理や温度管理などの細かい制御を空間展開型計算機で実施する必要がなくなり、空間展開型計算機を制御するために時間展開型計算機のリソースを浪費する必要がなくなる。
実施例におけるイジングチップ100の構成の一例を説明するブロック図 3次元格子のスピンアレイ110の構成の一例を説明する概念図 スピンユニット200の構成の一例を説明するブロック図 実施例1の計算機全体構成を表すブロック図 実施例1の計算機の制御信号を説明するブロック図 実施例1の処理フロー例を示す流れ図 実施例1の制御モジュール301の構成ブロック図 実施例1の空間展開型計算機303の、相互作用制御インタフェース160に関する部分を取り出した構成ブロック図 実施例1の相互作用制御インタフェース160から、空間展開型計算機303に供給される制御信号の例を示すグラフ図 実施例2の計算機全体構成を表すブロック図 実施例2の計算機の制御信号を説明するブロック図 実施例2の制御モジュール321の構成ブロック図 実施例3の計算機全体構成を表すブロック図 実施例3の計算機の制御信号を説明するブロック図 温度スケジューリングの概念の一例を示すグラフ図 実施例4の制御モジュール301の構成ブロック図 実施例4の処理フロー例を示す流れ図
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
以下、本発明の一実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号または関連する符号を付し、その繰り返しの説明は省略することがある。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
本実施の形態では、空間展開型計算機の例として、イジングモデルの基底状態を求める半導体装置であるイジングチップ100(図1)の例を説明する。
イジングモデルは磁性体の振る舞いを説明するための統計力学のモデルである。イジングモデルは+1/−1(または、0/1、上/下)の2値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎にある外部磁場係数で定義される。
イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することができる。イジングモデルのエネルギー関数E(σ)は一般的に次式(1)で表わされる。
Figure 0006701207
なお、σ,σはそれぞれi番目とj番目のスピンの値、Ji,jはi番目とj番目のスピンの間の相互作用係数、hはi番目のスピンに対する外部磁場係数、<i,j>は隣接する2つのサイトの組合せ、σはスピンの配列を表わすものとする。
イジングモデルの基底状態を求めるというのは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。例えば、因数分解や巡回セールスマン問題など、一見すると磁性体と何ら関係の無い問題をイジングモデルに変換することができる。そして、変換して得られたイジングモデルの基底状態は、元の問題の解に対応している。このことから、イジングモデルの基底状態を探索することのできる装置は、汎用的な用途に利用可能なコンピュータであると言える。
図1は、本実施の形態におけるイジングチップ100の構成の一例を説明するための図である。イジングチップ100は、スピンアレイ110、I/O(Input/Output)ドライバ120、I/Oアドレスデコーダ130および相互作用アドレスデコーダ140から構成される。本実施の形態では、イジングチップ100は現在広く用いられているCMOS(Complementary Metal−Oxide Semiconductor)集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。
イジングチップ100は、スピンアレイ110にリード/ライトを行うためのSRAM互換インタフェース150を持っている。SRAM互換インタフェース150は、アドレスバス190、データバス191、R/W制御線193、およびI/Oクロック線192から構成される。この部分は従来のSRAMメモリのリード/ライトのための構成を基本にしている。
また、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース160として、相互作用アドレス線180および相互作用クロック線181を有している。相互作用制御インタフェース160は、後述の相互作用計算を制御するためのインタフェースである。
図1の例では、イジングチップ100は、電源線142で供給される電圧で動作する。イジングチップ100では、イジングモデルのスピンσ、相互作用係数Ji,jおよび外部磁場係数hを全てスピンアレイ110内のメモリセルに記憶する情報で表現する。図1に示した例では、メモリセルを高速なSRAM(Static Random Access Memory:スタティックランダムアクセスメモリ)で構成することを想定している。この場合、スピンσの初期状態の設定および基底状態探索完了後の解読み出しのためにスピンσのリード/ライトをSRAM互換インタフェース150で行う。また、基底状態を探索すべきイジングモデルをイジングチップ100に設定するために、相互作用係数Ji,jおよび外部磁場係数hのリード/ライトもSRAM互換インタフェース150で行う。そのため、スピンアレイ110内のスピンσ、相互作用係数Ji,jおよび外部磁場係数hには、それらを格納するメモリセルに対応するアドレスが付与されている。
なお、SRAM互換インタフェース150を構成するアドレスバス190、データバス191およびR/W制御線193は、I/Oクロック線192に入力されるクロックに同期して動作する。但し、本実施例において、インタフェースが同期式である必要性は無く、非同期式のインタフェースでも良い。本実施の形態では、同期式のインタフェースであるという前提で説明を行う。
また、イジングチップ100は、基底状態探索を行うために、スピンアレイ110の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース160である。具体的には相互作用を行うスピン群を格納するメモリを指定するアドレスを、相互作用アドレス線180を介して入力する。そして、指定されたメモリに格納されたスピンに対し、相互作用クロック線181を介して入力されるクロックに同期して相互作用を行う。イジングチップの例では、相互作用とはスピンσ、相互作用係数Ji,jおよび外部磁場係数hを用いた演算、およびその結果の格納である。具体的には、スピンアレイのメモリセルの値を読み出し、読み出した値からエネルギーを計算し、エネルギーが小さくなるようなスピンの値を決定し、決定したスピンの値をメモリセルに書き込む一連の処理をいう。
なお、相互作用は、必ずしもクロック同期回路で実現される必要はなく、非同期回路であっても構わない。この場合、相互作用クロック線181の役割はクロックの入力ではなく、相互作用の実行を許可するイネーブル信号であるものとする。相互作用制御インタフェースについても、必ずしも同期式である必要はなく、非同期式のインタフェースでも良いが、本実施の形態では同期式のインタフェースを用い、相互作用が相互作用クロック線181を介して入力されるクロックに同期して行われるという前提で説明を行う。
スピンアレイ110は、1個のスピンとそれに付随する相互作用係数および外部磁場係数の保持と、基底状態探索処理とを実現するスピンユニット200を基本構成単位として、スピンユニット200を多数個並べて構成する。
図2は、3次元格子のスピンアレイ110の構成の一例を説明するための概念図である。図2では、スピンアレイ110として、スピンユニット200を複数個並べることで、3次元格子状のトポロジを持つイジングモデルを構成する例を示している。
図2の例は、3(X軸方向)×3(Y軸方向)×2(Z軸方向)の大きさの3次元格子である。座標軸の定義は図示した通り、図面右方向をX軸、図面下方向をY軸、図面奥行き方向をZ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本実施例とは関係しない。3次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図3の3次元格子状のトポロジにおいて、スピン間の相互作用をグラフとして捉えると、最大で次数5のスピン(頂点)が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。
図2に示す1個のスピンユニット200には、隣接するスピンユニットが持つスピンσ、σ、σ、σ、σの値が入力される。図2の例ではこれらの値は、隣接する上、下、左、右、奥行き方向の5個のスピンユニットが持つ値を示している。スピンユニット200は、スピンσおよび外部磁場係数hを格納するメモリセルを備える。図2のスピンユニット200で、スピンを格納するメモリセルを円形で、外部磁場係数を格納するメモリセルを正方形で示した。また、上述した隣接する5つのスピンσとの相互作用係数であるJj,i、Jk,i、Jl,i、Jm,i、Jn,iを保持するメモリセルを有している。これらは図2では長方形で示される。
ところで、イジングモデルは、一般的に無向グラフで表現される相互作用を有している。上述した式(1)では、相互作用を表わす項として、Ji,j×σ×σがあるが、これはi番目スピンからj番目スピンへの相互作用を示している。この時、一般的なイジングモデルでは、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。つまり、Ji,jとJj,iは同一である。しかし、本実施の形態のイジングチップ100では、このイジングモデルを有向グラフに拡張し、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
そのため、1個のスピンユニット200をi番目スピンσと考えた時に、このスピンユニットが保持する相互作用係数であるJj,i、Jk,i、Jl,i、Jm,i、Jn,iは、隣接するj番目、k番目、l番目、m番目、n番目のスピンσ、σ、σ、σ、σから、i番目スピンσへの相互作用を決めるものである。このことは、図2において、スピンユニット200に含まれている相互作用係数が対応する矢印(相互作用)が、図示されているスピンユニット200の外部のスピンから、スピンユニット200の内部のスピンに向かっていることに対応している。
図3を用いてスピンユニット200の具体的な構成の一例を説明する。スピンユニット200は、イジングモデルのスピンσ、相互作用係数Jj,i〜Jおよび外部磁場係数hを保持するために、複数のメモリセルN、IU0、IU1、IL0、IL1、IR0、IR1、ID0、ID1、IF0、IF1、IS0、IS1を有している。これらのメモリセルは、図3には示していないが、SRAMと同様にCMOSインバータ2個で構成されるデータ保持部を有し、その両端にそれぞれ接続されたパスゲートトランジスタを、やはり図示していないワード線およびビット線で制御することで、データ保持部へのデータ読み書きを実現する。ワード線およびビット線を用いて所望のメモリセルに読み書きを行う方式は、従来のSRAMの構成を踏襲している。すなわち、本実施例のイジングチップは、基本的にメモリセルアレイの構造を有している。なお、本実施例では、高速なSRAM構成としたが、他の方式のメモリでも動作は可能である。
スピンの値はイジングモデルでは+1/−1(+1を上、−1を下とも表現する)であるが、これをメモリセルNの2値である0/1に対応させる。例えば、+1を1、−1を0に対応させる。
本実施例では、外部磁場係数、及び、相互作用係数は、+1/0/−1の3値に対応させている。そのため、外部磁場係数、および、相互作用係数を表わすためには、それぞれ2ビットのメモリセルを用いている。図3で示すように、IS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0、ID1、IF0、IF1は、末尾の数字が0と1の2つのメモリセル(例えば外部磁場係数ISXの場合にはIS0とIS1)の組合せで、+1/0/−1の3値を表現する。例えば、外部磁場係数ISXの場合には、IS1で+1/−1を表現し、IS1が1の時は+1,0の時には−1を表現する。これに加えて、IS0が0の時には外部磁場係数を0と見なし、IS0が1の時にはIS1で決まる+1/−1のいずれかを外部磁場係数とする。外部磁場係数が0の時は外部磁場係数をディセーブルしていると考えれば、IS0は外部磁場係数のイネーブルビットであると言うことができる(IS0=1の時に、外部磁場係数がイネーブルされる)。相互作用係数を表現するIU0、IU1、IL0、IL1、IR0、IR1、ID0、ID1、IF0、IF1も同様に係数とビットの値を対応させている。
スピンユニット200では隣接または離れたスピンとの間でエネルギーを最小化するように相互作用計算を行いスピンの次状態を決定する。図3の例で、NU,NL,NR,ND,NFは其々、上、左、右、下、奥行き方向に隣接するスピンユニットに接続されたラインを示し、各スピンユニットからスピンの値(状態)を読み出した信号を受信する。また、Nで示す信号は、メモリセルNに格納されるスピンの値を隣接するスピンユニットに送信するラインである。このように、スピンユニット同士は互いのスピンの値を送受信するように構成されるが、その結線は、例えば図2に示すごとく想定されたモデルを再現するように構成すればよい。
図3のスピンユニット200に図示する論理回路2000は、前記した相互作用を行うための回路である。まず、隣接または離れたスピンの状態と、相互作用係数を示すメモリセルが保持する値との排他的論理和を排他的論理和回路で求める。
これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる。もし、相互作用係数が+1/−1だけであれば、排他的論理和回路の出力のうち+1/−1のどちらが多いかを多数決論理回路201において多数決論理で判定すればスピンの次状態を決定することができる。IS0、IS1に格納される外部磁場係数に関しては、常に状態+1のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理回路201に入力すべき値となる。このようにして計算されたスピンの次状態は、メモリセルNに格納(上書き)され、一回の相互作用計算が完了する。
前述したスピン間の相互作用計算を複数回繰り返すことによるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することができる。しかし、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことができず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転させる方法も用いられる。
具体例としては、スピンユニット200に乱数142を入力し、その値が1の場合には反転論理203にて値を反転させる。これにより局所最適化にスタックすることなく、なるべくエネルギーの低い値を求めることが可能となる。この乱数の値の1/0の出現頻度が、空間展開型計算機の収束計算時の温度相当となる。つまり、収束計算における温度が高い(全体的なエネルギーが高い)場合には1が出現する頻度を高くし、温度が低い(全体的なエネルギーが低い)場合には0が出現する頻度を高くする。つまり温度を制御する一つの方法として乱数の1/0の出現頻度を変化させる。具体的には、相互作用計算を複数回繰り返す過程において、初期において1が出現する頻度を高くし、終期において0が出現する頻度を高くするように、乱数142を制御すればよい。
上記の相互作用計算は、スピンアレイ110内のスピンユニット200を1個ずつ実行させるようにすればよい。しかし、この方法では計算に時間がかかる短所がある。そこで、スピン間の相互作用を全てのスピンについて同時並行的に行うことが考えられる。しかし、実際には相互作用計算では、相互作用計算を行っているスピンユニットと、そのスピンユニットにスピンの値を入力しているスピンユニットとで、相互作用計算を同時に行うことは好ましくない。あるスピンを更新するときに、隣接スピンの値に基づいて、隣接スピンとの間でエネルギーを最小化するようにスピンを更新するので、それと同時に隣接スピンの値を更新すると、両方の更新が重複してしまい、エネルギーを最小化できず振動してしまう。すなわち、あるスピンを更新するときに、そのスピンに接続されているスピン(あるスピンに相互作用係数を介して直接接続されているスピンをこれ以降隣接スピンと呼ぶ)を同時に更新することは避けるべきである。
このために、例えば、隣接スピンは同時に更新しないように、スピンアレイ内のスピンユニットをグループ分けして、一度に同時に更新するのは1つのグループだけにする方法が考えられる。そして、このグループを順次更新していく。このため、相互作用計算は相互作用制御インタフェース160によって、相互作用計算を行うスピンユニットのアドレスとタイミングが制御される。
このように図1〜図3で説明したイジングモデルを用いた計算機は、問題を空間方向に展開して解いているため、空間展開型計算機と言える。本明細書では、イジングモデルを用いた計算機を空間展開型計算機として想定して説明するが、イジングモデルを用いない計算機でも同様の効果が得られる。例えば、ニューロンの働きを模擬したニューロ計算機も同様に空間展開型計算機と考えられるが、同様に時間展開型計算機から制御する必要があり、本願の構成により同様の効果が得られる。
図4に、時間展開型計算機と空間展開型計算機で構成した計算機全体構成例を表す。この例では、1つの時間展開型計算機により4つの空間展開型計算機を制御している。時間展開型計算機302は例えばノイマン型の市販のCPUであり、空間展開型計算機303は例えば上述のイジングチップである。
この実施例の空間展開型計算機303では、上述のイジングモデルの基底状態探索を行うことを想定している。一般に、基底状態探索では、同一の問題を複数回解き、最良の解(例えばエネルギーが最低になる解)を採用することが行われる。このとき、複数の基底状態探索を並行して実行することができれば、スループットの向上が見込まれる。この場合、空間展開型計算機303は必ずしも同期して動作する必要はなく、別個独立に動作してもよい。例えば、一つの空間展開型計算機で1回の基底状態探索が終了したら、その空間展開型計算機で、他の空間展開型計算機の状況に係らず、同じ問題について2回目の基底状態探索を開始することもできる。従って、本実施例では、空間展開型計算機303をなるべく多数配置することにメリットがある。
時間展開型計算機302と空間展開型計算機303は、データをやり取りするデータ線306により直接接続される。また、時間展開型計算機302から制御信号304を介して制御モジュール301が接続されている。さらに制御モジュール301から制御信号305を介して空間展開型計算機303が1対1に接続されている。
この構成により、空間展開型計算機303で計算するためのデータは、直接時間展開型計算機302から空間展開型計算機303に転送され、また、計算結果は直接空間展開型計算機303から時間展開型計算機302に送られる。データとしては、前述の相互作用係数、外部磁場係数等の係数がある。また、必要に応じてスピンの値を転送してもよい。
一方で、空間展開型計算機303を制御する際には、制御を行うことを示す信号が、制御信号304として時間展開型計算機302から制御モジュール301に送出される。この制御信号304に基づいて、空間展開型計算機303を制御するための信号305が制御モジュール301から空間展開型計算機303に送られる。空間展開型計算機303での計算が終われば、計算が終わったという信号が制御信号304を通して制御モジュール301から時間展開型計算機302に送られる。
図5に、これらの信号のより詳細な内訳を示す。時間展開型計算機302から空間展開型計算機303に送られるデータの送受信のための信号としては、データIOに使われるクロック信号192や空間展開型計算機のデータIOを選択するためのR/W制御信号193、データIOを行うアドレスを指定するIOアドレス191があり、時間展開型計算機302から空間展開型計算機303に送られる。
時間展開型計算機302から空間展開型計算機303に送られるデータは、問題データであり、例えば相互作用係数や外部磁場係数を含む。これらの問題データは、図2に示したモデル構造に従って、図3に示した所定のメモリセルに格納される。格納のプロセスは、一般的なSRAMへの書き込み動作を踏襲すればよい。また、必要に応じてスピンの値を設定し、問題データの一部とすることもできる。あるいは、初期のスピンの値はランダムに設定してもよい。
空間展開型計算機303から時間展開型計算機302に送られるデータは、解データであり、複数回の相互作用計算の後に図3のメモリセルNに格納されたスピンの値である。読み出しのプロセスは、一般的なSRAMからの読み出し動作を踏襲すればよい。このようにして、空間展開型計算機303で使われるデータおよび空間展開型計算機303での計算結果はIOデータ191として送受信される。
さらに制御モジュール301からは、空間展開型計算機303に空間展開型計算機303が自ら計算するための相互作用クロック181、その相互作用が行われるアドレスを示す相互作用アドレス180、および、必要により温度の状態を表すための乱数142が入力される。
さらに詳細に説明すると、実際に空間展開型計算機303が動作する際には、まず時間展開型計算機302から空間展開型計算機に計算するための問題データ191が転送される。問題データは、イジングモデルの外部磁場係数や相互作用係数に相当するデータであり、イジングモデルの相互作用係数を格納するメモリ(図3のIS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0、ID1、IF0、IF1)にそれらのデータが書き込まれる。また、スピンの値の初期値も書き込む。
次に、制御信号304を通じて相互作用計算を実行するための指示が時間展開型計算機302から制御モジュール301に送られる。この際に、空間展開型計算303でどの程度の時間で計算を実行するべきか(何回相互作用計算を行うか)や、温度をどのように変えるか(乱数の発生条件をどのように変えるか)といった設定データも制御モジュール301に送信することができる。
制御モジュール301では、イジングモデルの相互作用を実行するためのクロック181を空間展開型計算機303に送るとともに、その相互作用を実行するスピンユニットのアドレス180を生成して入力する。これらのクロック181とアドレス180を用いて空間展開型計算機303では計算が行われる。上述のように、相互作用計算を行うスピンユニットは、互いに干渉しないように選択することが望ましい。
また、制御モジュール301内では、空間展開型計算機303内で行われる計算の時間(あるいは相互作用計算の回数)を管理しておき、その時間にしたがって温度状態、つまり、乱数142に含まれる1/0の頻度を変更する。この温度変化に関しては、時間展開型計算機302から送られてきた設定情報を元に変更を実施することができる。
本実施例中、モジュールと呼ばれる構成は、入出力装置、処理装置、メモリを備えたいわゆるマイクロコンピュータにおいて、メモリに格納されたプログラムがプロセッサによって実行されることで、定められた処理を他のハードウェアと協働して行う構成とすることができる。あるいは、上記ソフトウェアで構成した機能と同等の機能は、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)などのハードウェアでも実現できる。本実施例では、いずれの構成も採用が可能である。
図6に、図4のシステムの全体動作フローの例を示す。動作の開始は、時間展開型計算機302に対するオペレータの指示、あるいは自動的に行うことができる(S401)。時間展開型計算機302からIOアドレス190及びIOクロック192、IOデータ191を用いて、相互作用係数データが空間展開型計算機303に送られ、係数の値が設定される(S402)。さらに、場合によっては、同様にスピンの値も入力される(S403)。
次に、空間展開型計算機303から制御モジュール301に制御信号304が送られ、それぞれの時間展開型計算機302にて相互作用計算が開始される(S404)。相互作用計算中は、制御モジュール301から相互作用のためのクロック181とアドレス180、および、乱数142が供給され、相互作用が実行される(S405)。所定の回数相互作用を実施したかどうかを制御モジュール301内でチェックする(S406)。所定の回数に達しない場合には、S405に戻り相互作用計算を実行する。所定の回数に達した場合には、制御モジュール301から時間展開型計算機302に動作が終了したことを通知する(S407)。それに伴い、時間展開型計算機302は、IOクロック192、アドレス190を用いて、データ線から計算結果191を読み出す(S408)。
以上のS404〜S408の動作は、1回の基底状態探索に相当する。本実施例では、以上のS404〜S408の動作は複数の空間展開型計算機303で独立して行われる。通常、基底状態探索は複数回行われ、最良の結果を採用する。このため、各空間展開型計算機303では、一度動作終了(S409)した後、再度S403に戻って基底状態探索を繰り返すように構成し、結果はS408で順次時間展開型計算機302に蓄積して、最終的に最良の解を選択してもよい。
図7にこれらの動作を実行するために必要な制御モジュール301内部の構成を示す。制御モジュール301は、時間展開型計算機302から送られてきた設定データを保持するための設定レジスタ312、空間展開型計算機303が動作している時間及び温度を管理するためのタイマ(あるいはカウンタ)313、使用する乱数を発生させるための乱数発生機314、各チップに固有のデータを保持する不揮発メモリ315を含み、これらの構成要素の情報を元に制御論理モジュール311にて相互作用クロック181、相互作用アドレス180、乱数142を生成する。
また、空間展開型計算機303での計算が終わると、制御信号304を通して計算が終了したことを時間展開型計算機302に通知する。不揮発メモリ315では、空間展開型計算機のチップ固有の情報を保持することで、空間展開型計算機303の制御信号をチップに合わせて設定することが可能となる。たとえば、対応する空間展開型計算機303での最大動作周波数を保持しておけば、それに対応したクロックを生成し入力することで、最大限高速に動作させることが可能となる。
このように、本実施例を用いることで、制御モジュール301によって空間展開型計算機303の計算が実行可能となり、空間展開型計算機303を制御するための時間展開型計算機302のリソースを押さえることが可能となる。
図8は、制御モジュール301に制御される空間展開型計算機303内部のスピンユニット200を示すブロック図である。前述したように、本実施例では、各スピンユニットの相互作用計算は互いに干渉しないように制御する。図8の例では、スピンユニットをAとBの2つのグループに分けて、交互に相互作用計算を行う。
各スピンユニット200には、制御モジュール301からの相互作用クロック181、相互作用アドレス180、および乱数142が配給されている。これらは、制御モジュール301からの信号をそのまま用いてもよいし、位相や周波数を調整して用いてもよい。これらの信号線は独立に構成されているが、図8では便宜上1本の線で示している。スピンユニット200には「N000」等のIDと、A,Bの符号が付されている。AとBは、隣接するスピンが同時に書き換えられないように、相互作用アドレスデコーダ140で交互に相互作用が実行される、グループの別を示している。
図9は、図8のスピンユニットに入力される制御信号を示している。相互作用アドレス180と相互作用クロック181は、スピンユニットのAとBのグループに、交互に相互作用計算を実行させる。ri[t]で示される乱数142は、1ビットに限るものではないが、本例では+1と−1の値をとる1ビットパルスとした。この信号は、制御モジュール301内で、通常の乱数発生機314で生成することができる。
ランダム効果制御信号(RE)は、この信号がHIGHの間、乱数142を有効にし、LOWの間無効にする。乱数142が無効な間はri[t]の値は0になり、有効な間はri[t]の値は、+1または−1のランダムな値をとる。通常は、基底状態探索の初期において、乱数142を有効とする。ランダム効果制御信号REも必要により、制御モジュール301から空間展開型計算機303に供給することができる。空間展開型計算機303では乱数の値に応じて、メモリセルNの値を反転させる。
ランダム効果制御信号(RE)は、図7の乱数信号142とともに空間展開型計算機303に入力して、乱数142との論理和を生成し、乱数の有効無効を制御(マスキング)することができる。また、ランダム効果制御信号(RE)を空間展開型計算機303に供給して乱数をマスキングするのではなく、制御モジュール301の制御論理モジュール311内で乱数142をマスキングし、マスキングされた乱数を直接空間展開型計算機303に供給してもよい。
本実施例では、空間展開型計算機としてイジングチップの例を示したが、必ずしもイジングチップに限る話ではない。例えば、ニューラルネットワークを実装した空間展開型計算機であるニューロコンピュータでは、データの入出力信号や同期型の場合のクロック信号、チップ間の通信の制御などを外部の空間展開型計算機で行う。なお、イジングモデルにおける係数は、ニューラルネットワークにおいては、重みやバイアスのパラメータなど、ニューロンの振る舞いを表すパラメータに置き換えることができる。本明細書では便宜上、これらの係数やパラメータを総括して「係数」と称することがある。
実施例1では、制御モジュール301は、時間展開型計算機から空間展開型計算機へ送るデータに関しては関与していなかった。しかし、データの送受信も制御モジュールが実行することも可能である。実施例2では、その場合の形態について説明する。
図10に、時間展開型計算機302と空間展開型計算機303で構成した計算機全体構成を表す。1つの時間展開型計算機により4つの空間展開型計算機を制御している。図4と異なるのは、時間展開型計算機302から制御モジュール321へ、制御信号と空間展開型計算機で実行する計算データの両方が送られている点である。制御モジュール321では、これらのデータと制御信号322から空間展開型計算機に計算データおよび制御信号323を送る。
図11にデータおよび制御信号の詳細を示す。時間展開型計算機302からは、制御するための信号324および計算するためのIOデータ325が、制御モジュール321へ送られる。さらに、制御モジュール321から空間展開型計算機303に、空間展開型計算機が自ら相互作用計算するための相互作用クロック181、その相互作用が行われるアドレスを示す相互作用アドレス180、および、温度の状態を表すための乱数142が入力される。さらに、データIOに使われるクロック信号192や空間展開型計算機のデータIOを選択するためのR/W制御信号193、データIOを行うアドレスを指定するIOアドレス191があり、制御モジュール321から空間展開型計算機303に送られる。
空間展開型計算機303が動作する際には、まず時間展開型計算機302から制御モジュール321に計算するためのデータ325が転送される。そのデータは、イジングモデルの相互作用係数に相当するデータである。さらにそのデータは制御モジュール321から空間展開型計算機303にデータ191として送られる。そのデータは、実施例1と同様に、IOアドレス191、クロック信号192、R/W制御信号193を用いて、イジングモデルの相互作用を格納するメモリに書き込まれる。
次に、制御信号324を通じて計算を実行するための指示が時間展開型計算機302から制御モジュール321に送られる。この際に、設定データも制御モジュール321に送信する。設定データには、例えば、空間展開型計算機303で、どの程度の時間相互作用計算を行うかを設定するデータが含まれる。あるいは、何回相互作用計算を行うかを設定するデータでもよい。また、温度をどのように変えるかを設定するデータが含まれていてもよい。温度の設定データは、具体的には、例えば、乱数の発生の開始や停止を設定するデータが含まれる。あるいは、乱数に含まれる0と1の比率を時間的に制御するデータが含まれていてもよい。
制御モジュール321では、イジングモデルの相互作用を実行するためのクロック181を、空間展開型計算機303に送るとともに、その相互作用を実行するアドレス180を生成して入力する。これらのクロックとアドレス信号を用いて空間展開型計算機303では相互作用計算が行われる。また、制御モジュール321内では、空間展開型計算機303内で行われる計算の時間を管理しておき、その時間にしたがって温度状態、つまり、乱数142に含まれる1/0の頻度を変更する。この温度変化に関しては、時間展開型計算機から送られてきた設定情報を元に変更を実施することができる。
図12にこれらの動作を実行するために必要な制御モジュール321内の構成を示す。制御モジュール321は、時間展開型計算機302から送られてきた設定データを保持するための設定レジスタ312、空間展開型計算機が動作している時間及び温度を管理するためのタイマ313、使用する乱数を発生させるための乱数発生機314、空間展開型計算機で使われるデータや空間展開型計算機の結果を一時的に保持するメモリを含み、これらの構成要素の情報を元に制御論理モジュール326にて、相互作用クロック181、相互作用アドレス180、乱数142を生成する。
また、空間展開型計算機303とデータをやり取りする際にはIOクロック192、R/W制御信号193、IOアドレス190を生成する。また、空間展開型計算機での計算が終わると、IOクロック192、R/W制御信号193、IOアドレス190を生成して計算結果を空間展開型計算機から読み出してメモリ327に格納し、さらに制御信号304を通して計算が終了したことを時間展開型計算機に通知する。それとともに、メモリ327に保持されている計算結果をI/Oデータ325を通して時間展開型計算機302に転送する。
このように、本実施例を用いることで、制御モジュールによって空間展開型計算機の計算が実行可能となり、空間展開型計算機を制御するための時間展開型計算機のリソースを抑えることが可能となる。
実施例1では、制御モジュール301は、時間展開型計算機とも空間展開型計算機とも別のモジュールとして配置されていた。しかしこのモジュールは、時間展開型計算機や空間展開型計算機内に内包することも可能である。実施例3では、その一例として空間展開型計算機内に内包されている場合の形態について説明する。
図13に、時間展開型計算機と空間展開型計算機で構成した計算機全体構成を表す。1つの時間展開型計算機により4つの空間展開型計算機を制御している。図4と異なるのは、制御モジュール331が空間展開型計算機332内に含まれている点である。時間展開型計算機302からは制御信号304およびデータ305が直接空間展開型計算機332に送られる。
図14にこれらの信号のより詳細な内訳を示す。時間展開型計算機302から空間展開型計算機332に送られるデータの送受信のための信号としては、データIOに使われるクロック信号192や空間展開型計算機のデータIOを選択するためのR/W制御信号193、データIOを行うアドレスを指定するIOアドレス190があり、時間展開型計算機302から空間展開型計算機332に送られる。また、空間展開型計算機332で使われるデータおよび空間展開型計算機332での計算結果はIOデータ191がそれぞれの計算機間で送受信される。
実際に空間展開型計算機が動作する際には、まず時間展開型計算機302から空間展開型計算機332に計算するためのデータが転送される。そのデータは、イジングモデルの相互作用係数に相当するデータであり、イジングモデルの相互作用を格納するメモリにそれらのデータが書き込まれる。次に、制御信号304を通じて計算を実行するための指示が時間展開型計算機302から制御モジュール331に送られる。この際に、空間展開型計算機332でどの程度の時間で計算を実行するべきかや、温度をどのように変えるかといった設定データも制御モジュール331に送信する。制御モジュール331では、イジングモデルの相互作用を実行するためのクロックを空間展開型計算機332内部のスピンユニットに送るとともに、その相互作用を実行するアドレスを生成して入力する。これらのクロックとアドレス信号を用いて空間展開型計算機332では計算が行われる。また、制御モジュール331内では、空間展開型計算機332内で行われる計算の時間を管理しておき、その時間にしたがって温度状態、つまり、乱数列に含まれる1/0の頻度を変更する。この温度変化に関しては、時間展開型計算機302から送られてきた設定情報を元に変更を実施する。このため、制御モジュール331自体は、実施例1で説明した図7の制御モジュール301と同様の構成とすることが可能となる。
このように、本実施例を用いることで、制御モジュールによって空間展開型計算機の計算が実行可能となり、空間展開型計算機を制御するための時間展開型計算機のリソースを抑えることが可能となる。
実施例1〜3では、空間展開型計算機の一つの制御要素である温度スケジューリングが時間で決定される場合について説明した。
図15は温度スケジューリングの概念の一例である。これは、例えば図15で示すように時間とともに乱数列の1の比率を下げていくということで実現できる。このように、スケジューリングが予め決まっている場合には、時間展開型計算機あるいは制御モジュールが予め定めたスケジュールで空間展開型計算機を動作させればよい。例えば、このスケジュールは、時間展開型計算機から設定データの一部として制御モジュールに送られ、制御モジュールの設定レジスタに記憶され、このスケジュールに沿って乱数列の制御が行われる。
しかし、この1の比率は空間展開型計算機であるイジングモデルが持つエネルギーが下がっていくにしたがって低くするのが本来は望ましい。よって、イジングモデルが持つエネルギーをチェックし、それにしたがって乱数列に含まれる1の比率を変化させることで、さらに精度の高い解を得ることが可能となる。実施例4では、その動作を実現するための制御モジュールの例を示す。制御モジュール以外の部分は実施例2(図10、図11)に相当する場合について説明するが、その他の場合にも同様の構成を取ることで実現可能である。
図16に制御モジュール内の構成を示す。制御モジュール341は、時間展開型計算機302から送られてきた設定データを保持するための設定レジスタ312、使用する乱数を発生させるための乱数発生機314、空間展開型計算機303で使われるデータや空間展開型計算機303の結果を一時的に保持するメモリ327、イジングモデルが持つエネルギーを計算するためのエネルギー計算モジュール343を含む。これらの構成要素の情報を元に制御論理モジュール342にて、相互作用クロック181、相互作用アドレス180、乱数142を生成する。
また、空間展開型計算機303とデータをやり取りする際にはIOクロック192、R/W制御信号193、IOアドレス190を生成する。また、空間展開型計算機303での計算が終わると、IOクロック192、R/W制御信号193、IOアドレス190を生成して計算結果を空間展開型計算機303から読み出してメモリ327に格納し、さらに制御信号304を通して計算が終了したことを時間展開型計算機302に通知する。それとともに、メモリ327に保持されている計算結果をI/Oデータ325を通して時間展開型計算機に転送する。
空間展開型計算機303で計算を実行している際には、相互作用クロック181を空間展開型計算機303に供給して相互作用計算を実行する。また、IOの機能を使って空間展開型計算機の途中状態を随時制御モジュール301内に読み出す。具体的には、IOクロック192、R/W制御信号193、I/Oアドレス190を用いて、例えば図3のメモリセルNに格納される値を読み出す。読みだしたデータを用いてエネルギー計算モジュール343にてイジングモデルが持つエネルギーを計算し、エネルギーに応じて乱数列の1/0の比率を変化させる。より具体的には、エネルギーが下がってくると1の比率を低下させる。乱数列の1/0の比率を変化させる方法は、公知の種々の方法を適用してよい。こういった動作をさせることで、精度高く空間計算型計算機を動作させることが可能となる。
図17に処理フローの一例を示す。S422にて、時間展開型計算機からIOアドレス線及びIOクロック、IOデータを通してデータが空間展開型計算機にデータが送られ、係数の値が設定される。さらに、場合によっては、S423にて同様にスピンの値も入力される。次にS424にて、空間展開型計算機から制御モジュールに制御信号が送られ、相互作用計算が開始される。相互作用計算中は、S425にて、制御モジュールから相互作用のためのクロックとアドレス、および、乱数が供給され、相互作用が実行される。S426にて、制御モジュール内でその状態でのイジングモデルのエネルギー計算を実行する。S427にて、エネルギーが所定の値より下がったかチェックし、下がっていない場合には、S425に戻り相互作用計算を実行する。所定の値に達した場合には、S428にて、制御モジュールから時間展開型計算機に動作が終了したことを通知する。それに伴い、S429にて、時間展開型計算機は、IOクロック、アドレス、データ線を用いて計算結果を読み出す。
上に説明した例では乱数発生機を用いたが、スピンの値をランダムに反転させる他の手段として、スピンを表現するメモリセルに供給する電源電圧を下げることで、メモリセルのビットエラーを誘発し、スピン配列をランダムに変化させる方法がある。そのための構成として、スピンユニット200が有するメモリセルのうち、スピンの値を格納するメモリセルNはスピン専用電源線で供給する電圧で動作させる。また、係数を保持するメモリセル、および、メモリセル以外の構成要素、例えば相互作用を計算するための論理ゲート等は通常電源線で供給する電圧で動作させる。
メモリセルのビットエラーレートは、記録に適正な電圧から電圧を下げていくと、電圧の下げ幅に比例してビットエラーレートが悪化していく。この状態を利用して、基底状態探索の初期ではエラーレートが高い状態とし、探索の進行と共に、ビットエラーレートが低い状態へと電圧を変化させていく。例えば図5の構成をこの方式に変更する場合には、空間展開型計算機303にスピン専用電源線を設けるとともに、乱数142の代わりにスピン専用電源線の電圧を制御する制御信号を用いればよい。
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明した。本発明は実施例で述べたように、イジングモデルやニューラルネットワーク等を扱う空間展開型計算機に適用することができる。ただし、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
例えば、上記した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
産業上の利用分野
各種の計算を取り扱う情報処理システムに適用が可能である。
100…イジングチップ
110…スピンアレイ
120…IOドライバ
130…IOアドレスデコーダ
140…相互作用アドレスデコーダ
142…乱数
145…電源線
180…相互作用アドレス
181…相互作用クロック
190…アドレスバス
191…データバス
192…IOクロック
193…R/W制御線
200…スピンユニット
201…多数決論理
301、321、331、341…制御モジュール
302…時間展開型計算機
303、332…空間展開型計算機
304、305…制御信号
306…データ線
311、326、342…制御論理モジュール
312…設定レジスタ
313…タイマ
314…乱数発生機
322、323…データ/制御信号
324…制御信号
325…IOデータ
327…メモリ
343…エネルギー計算モジュール

Claims (14)

  1. 第1の計算機と、前記第1の計算機に制御される制御モジュールと、前記制御モジュールと対応付けて構成された第2の計算機を備え、
    前記第2の計算機は複数のユニットを備え、
    前記複数のユニットの其々は、
    ノードの状態を示す値を記憶する第1のメモリと、係数を記憶する第2のメモリと、演算回路を備え、
    前記演算回路は、
    他ユニットの前記ノードの状態を示す値及び自ユニットの前記係数に基づいて、自ユニットのノードの状態を示す値を決定して前記第1のメモリに記憶する演算処理を行い、
    前記第1の計算機は、
    前記制御モジュールに前記演算処理の設定データを送信し、
    前記制御モジュールは、
    前記設定データを保持する設定レジスタを備え、該設定データに基づいて、前記演算処理を制御するための制御信号を前記第2の計算機に供給し、
    前記制御信号は、
    前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含み、
    1個の前記第1の計算機に対してN個(ただしNは2以上の整数)の前記制御モジュールが接続され、1個の前記制御モジュールに対して1個の前記第2の計算機が対応しており、
    前記制御信号は、
    前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含み、
    前記制御モジュールは、
    乱数発生機を含み、前記乱数発生機で発生した乱数列を前記第2の計算機に供給し、
    前記第1の計算機は、
    前記制御モジュールに対して、前記乱数列の1/0の比率、乱数列の発生開始、および、乱数列の発生停止のすくなくともひとつを指示するための設定データを供給する、
    情報処理システム。
  2. 前記第1の計算機は、時間方向に問題を展開する時間展開型計算機であり、
    前記第2の計算機は、空間方向に問題を展開する空間展開型計算機である、
    請求項1記載の情報処理システム。
  3. 前記制御信号は、
    前記第1のメモリに記憶したノードの状態を示す値を変更するための信号をさらに含む、
    請求項2記載の情報処理システム。
  4. 前記ノードの状態を示す値を変更するための信号は乱数列である、
    請求項3記載の情報処理システム。
  5. さらに、1個の前記第1の計算機に対してN個の前記第2の計算機が接続されており、
    前記第1の計算機から前記第2の計算機に前記係数を送信して、前記第2のメモリに前記係数を記憶し、
    前記制御信号は、
    前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含む、
    請求項1記載の情報処理システム。
  6. 前記第1の計算機から前記制御モジュールに前記係数を送信し、前記制御モジュールから前記第2のメモリに前記係数を記憶し、
    前記制御信号は、
    前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含む、
    請求項1記載の情報処理システム。
  7. さらに、1個の前記第1の計算機に対してN個の前記第2の計算機が接続されており、
    前記第1の計算機から前記第2の計算機に前記係数を送信して、前記第2のメモリに前記係数を記憶し、
    前記第2の計算機は、前記制御モジュールを搭載し、
    前記制御信号は、
    前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含む、
    請求項1記載の情報処理システム。
  8. 前記制御信号は、
    前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含み、
    前記第1の計算機は、
    前記制御モジュールに対して、前記演算処理の回数および演算処理の時間のすくなくともひとつを指示するための設定データを供給する、
    請求項1記載の情報処理システム。
  9. 計算機と制御モジュールを備え、
    前記計算機は複数のユニットを備え、
    前記複数のユニットの其々は、
    第1のメモリと、第2のメモリと、演算回路を備え、
    前記演算回路は、
    他ユニットの前記第1のメモリに記憶された値及び自ユニットの前記第2のメモリに記憶された値に基づいて、自ユニットの前記第1のメモリに記憶する値を決定する演算処理を行い、
    前記制御モジュールは、
    ノイマン型計算機から送られてきた設定データを保持するための設定レジスタを備え、前記設定データに基づいて、前記演算処理を制御するために前記第1のメモリおよび第2のメモリを指定する第1の制御信号とタイミングを指定する第2の制御信号を前記計算機に供給し、
    前記制御モジュールは、
    前記計算機に乱数列を供給する乱数発生機を備え、
    上位装置からの制御信号に含まれる、前記乱数列の1/0の比率、乱数列の発生開始、および、乱数列の発生停止の少なくともひとつを指示する設定データを格納する前記設定レジスタを備える、 情報処理システム。
  10. 前記制御モジュールは、
    上位装置からの制御信号に含まれる、前記演算処理の回数および演算処理の時間のすくなくともひとつを指示する設定データを格納する前記設定レジスタを備える、
    請求項9記載の情報処理システム。
  11. 前記制御モジュールは、
    前記計算機に固有のデータを保持する不揮発メモリを備える、
    請求項9記載の情報処理システム。
  12. 前記制御モジュールは、
    IOクロック、R/W制御信号、I/Oアドレスを用いて、前記計算機の第1のメモリの値を読み出す制御論理モジュールと、
    前記読み出した値を用いて、前記計算機の前記演算処理の状態を計算するエネルギー計算モジュールと、
    前記計算機に乱数列を供給する乱数発生機を備え、
    前記演算処理の状態に応じて前記乱数列の1/0の比率を変化させる、
    請求項9記載の情報処理システム。
  13. 前記第1の計算機が、前記制御モジュールに信号を送ることにより、前記第2の計算機により一連の前記演算処理が開始され、
    前記制御モジュールは、前記第2の計算機による一連の前記演算処理が終了すると、前記第1の計算機に演算処理の終了を通知する、
    請求項1記載の情報処理システム。
  14. 前記ノイマン型計算機の指示により前記演算処理が開始され、
    前記制御モジュールは、前記計算機による一連の前記演算処理が終了すると、前記ノイマン型計算機に一連の演算処理の終了を通知する、
    請求項9記載の情報処理システム。
JP2017536098A 2015-08-24 2015-08-24 情報処理システム Active JP6701207B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/073740 WO2017033263A1 (ja) 2015-08-24 2015-08-24 情報処理システム

Publications (2)

Publication Number Publication Date
JPWO2017033263A1 JPWO2017033263A1 (ja) 2018-06-28
JP6701207B2 true JP6701207B2 (ja) 2020-05-27

Family

ID=58100060

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017536098A Active JP6701207B2 (ja) 2015-08-24 2015-08-24 情報処理システム

Country Status (3)

Country Link
US (1) US10795404B2 (ja)
JP (1) JP6701207B2 (ja)
WO (1) WO2017033263A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6623947B2 (ja) * 2016-06-17 2019-12-25 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP7088292B2 (ja) * 2018-09-13 2022-06-21 富士通株式会社 最適化装置及び最適化装置の制御方法
JP7513868B2 (ja) 2020-03-11 2024-07-10 富士通株式会社 情報処理システム、情報処理方法およびプログラム
JP7410395B2 (ja) * 2020-03-26 2024-01-10 富士通株式会社 最適化装置及び最適化方法
JP7785620B2 (ja) * 2022-07-01 2025-12-15 株式会社東芝 情報処理システムおよび情報処理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11337877A (ja) 1998-05-25 1999-12-10 Sharp Corp 空間フィルタの設計方法及び該設計方法を実行するプログラムを記録した媒体
JP4362594B2 (ja) * 2006-06-23 2009-11-11 防衛省技術研究本部長 疑似乱数発生機構における状態遷移解析方法及び装置並びに周期長計測装置
JP5325977B2 (ja) 2008-05-06 2013-10-23 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. メディアオブジェクトの時空間レイアウト
US9411026B2 (en) 2011-03-01 2016-08-09 Inter-University Research Institute Corporation, Research Organization of Information and systems Ising model quantum computation device and Ising model quantum computation method
JP6006411B2 (ja) 2013-05-31 2016-10-12 株式会社日立製作所 半導体装置
US10140580B2 (en) * 2014-04-11 2018-11-27 Inter-University Research Institute Corporation, Research Organization of Information and systems Quantum computing device for Ising model, quantum parallel computing device for Ising model, and quantum computing method for Ising model

Also Published As

Publication number Publication date
US20190155330A1 (en) 2019-05-23
WO2017033263A1 (ja) 2017-03-02
JPWO2017033263A1 (ja) 2018-06-28
US10795404B2 (en) 2020-10-06

Similar Documents

Publication Publication Date Title
JP6605610B2 (ja) 半導体装置
JP5864684B1 (ja) 半導体装置
JP5922203B2 (ja) 半導体装置
JP6701207B2 (ja) 情報処理システム
JP6177993B2 (ja) 半導体装置および情報処理装置
JP2019082793A (ja) 情報処理装置および情報処理方法
JP6496410B2 (ja) 情報処理装置及び方法
JP2016051314A (ja) 半導体装置
JP6295325B2 (ja) 半導体装置及び情報処理システム
US9466346B2 (en) Semiconductor device and information processing device
JP6503072B2 (ja) 半導体システムおよび計算方法
JPWO2016199220A1 (ja) 情報処理装置及びその制御方法
JP2019179364A (ja) 半導体装置、情報処理システム、および情報処理方法
JP6568222B2 (ja) 半導体システムおよび計算方法
JP5894645B1 (ja) 半導体装置及びその品質管理方法
JP6207583B2 (ja) 半導体装置および情報処理方法
JP5903471B2 (ja) 半導体装置および情報処理装置
JP2023081542A (ja) スケジューリング装置、訓練装置、スケジューラ及び生成方法
Jagode et al. Custom assignment of MPI ranks for parallel multi-dimensional FFTs: Evaluation of BG/P versus BG/L
Perepelkina et al. Compact LRnLA Algorithms for Flux-based Numerical Schemes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190905

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200323

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20200330

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: 20200414

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200501

R150 Certificate of patent or registration of utility model

Ref document number: 6701207

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150