(57)【要約】  １つの時間展開型計算機から複数の空間展開型計算機を制御しようとした場合には、それぞれの空間展開型計算機の動作に合わせた制御が必要となる。  上記課題を解決する本願発明の一側面は、第１の計算機（時間展開型計算機）と、第１の計算機に制御される制御モジュールと、制御モジュールと対応付けて構成された第２の計算機（空間展開型計算機）を備えるシステムである。  第２の計算機は複数のユニットを備え、複数のユニットの其々は、ノードの状態を示す値を記憶する第１のメモリと、係数を記憶する第２のメモリと、演算回路を備える。  演算回路は、他ユニットのノードの状態を示す値及び自ユニットの係数に基づいて、自ユニットのノードの状態を示す値を決定して第１のメモリに記憶する演算処理を行う。制御モジュールは、演算処理を制御するための制御信号を第２の計算機に供給する。
2017033263.tif 000002
【特許請求の範囲】
【請求項１】
第１の計算機と、前記第１の計算機に制御される制御モジュールと、前記制御モジュールと対応付けて構成された第２の計算機を備え、
前記第２の計算機は複数のユニットを備え、
前記複数のユニットの其々は、
ノードの状態を示す値を記憶する第１のメモリと、係数を記憶する第２のメモリと、演算回路を備え、
前記演算回路は、
他ユニットの前記ノードの状態を示す値及び自ユニットの前記係数に基づいて、自ユニットのノードの状態を示す値を決定して前記第１のメモリに記憶する演算処理を行い、
前記制御モジュールは、
前記演算処理を制御するための制御信号を前記第２の計算機に供給する、
情報処理システム。
【請求項２】
前記制御信号は、
前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含む、
請求項１記載の情報処理システム。
【請求項３】
前記制御信号は、
前記第１のメモリに記憶したノードの状態を示す値を変更するための信号をさらに含む、
請求項２記載の情報処理システム。
【請求項４】
前記ノードの状態を示す値を変更するための信号は乱数列である、
請求項３記載の情報処理システム。
【請求項５】
１個の前記第１の計算機に対してＮ個の前記制御モジュールが接続され、１個の前記制御モジュールに対して１個の前記第２の計算機が対応している、
請求項１記載の情報処理システム。
【請求項６】
さらに、１個の前記第１の計算機に対してＮ個の前記第２の計算機が接続されており、前記第１の計算機から前記第２の計算機に前記係数を送信して、前記第２のメモリに前記係数を記憶し、
前記制御信号は、
前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含む、
請求項５記載の情報処理システム。
【請求項７】
前記第１の計算機から前記制御モジュールに前記係数を送信し、前記制御モジュールから前記第２のメモリに前記係数を記憶し、
前記制御信号は、
前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含む、
請求項５記載の情報処理システム。
【請求項８】
さらに、１個の前記第１の計算機に対してＮ個の前記第２の計算機が接続されており、前記第１の計算機から前記第２の計算機に前記係数を送信して、前記第２のメモリに前記係数を記憶し、
前記第２の計算機は、前記制御モジュールを搭載し、
前記制御信号は、
前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含む、
請求項５記載の情報処理システム。
【請求項９】
前記制御信号は、
前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含み、
前記制御モジュールは、
乱数発生機を含み、前記乱数発生機で発生した乱数列を前記第２の計算機に供給し、
前記第１の計算機は、
前記制御モジュールに対して、前記乱数列の1/0の比率、乱数列の発生開始、および、乱数列の発生停止のすくなくともひとつを指示するための設定データを供給する、
請求項５記載の情報処理システム。
【請求項１０】
前記制御信号は、
前記演算処理を行う前記ユニットを指定するためのアドレスと、前記演算処理を行うタイミングを生成するためのクロックを含み、
前記第１の計算機は、
前記制御モジュールに対して、前記演算処理の回数および演算処理の時間のすくなくともひとつを指示するための設定データを供給する、
請求項５記載の情報処理システム。
【請求項１１】
計算機と制御モジュールを備え、
前記計算機は複数のユニットを備え、
前記複数のユニットの其々は、
第１のメモリと、第２のメモリと、演算回路を備え、
前記演算回路は、
他ユニットの前記第１のメモリに記憶された値及び自ユニットの前記第２のメモリに記憶された値に基づいて、自ユニットの前記第１のメモリセルに記憶する値を決定する演算処理を行い、
前記制御モジュールは、
前記演算処理を制御するために前記メモリを指定する第１の制御信号とタイミングを指定する第２の制御信号を前記計算機に供給する、
情報処理システム。
【請求項１２】
前記制御モジュールは、
上位装置からの制御信号に含まれる、前記演算処理の回数および演算処理の時間のすくなくともひとつを指示する設定データを格納する設定レジスタを備える、
請求項１１記載の情報処理システム。
【請求項１３】
前記制御モジュールは、
前記計算機に乱数列を供給する乱数発生機を備え、
上位装置からの制御信号に含まれる、前記乱数列の1/0の比率、乱数列の発生開始、および、乱数列の発生停止の少なくともひとつを指示する設定データを格納する設定レジスタを備える、
請求項１１記載の情報処理システム。
【請求項１４】
前記制御モジュールは、
前記計算機に固有のデータを保持する不揮発メモリを備える、
請求項１１記載の情報処理システム。
【請求項１５】
前記制御モジュールは、
IOクロック、R/W制御信号、I/Oアドレスを用いて、前記計算機の第１のメモリの値を読み出す制御論理モジュールと、
前記読み出した値を用いて、前記計算機の前記演算処理の状態を計算するエネルギー計算モジュールと、
前記計算機に乱数列を供給する乱数発生機を備え、
前記演算処理の状態に応じて前記乱数列の1/0の比率を変化させる、
請求項１１記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、イジングモデルやニューロモデル等の計算を取り扱う情報処理装置と、その情報処理装置をアクセラレータとして制御する情報処理システムに関する。
【背景技術】
【０００２】
現在、コンピュータアーキテクチャの主流はノイマン型である。ノイマン型アーキテクチャでは逐次的な命令列であるプログラムでその動作が定義される。プログラムを変更することにより、様々な用途に利用可能な汎用性を有している。コンピュータの中心的な役割を果たす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困難問題であることから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。【０００８】
例えば、このような装置として、特許文献１に記載の装置がある。このような計算機は、問題を時間方向ではなく空間方向に展開して解くため、本明細書では「空間展開型計算機」と呼ぶ。この空間展開型計算機は、特定の問題を特定の型に当てはめて解くことを行うため、自らの計算過程を制御することは難しく、この制御には時間展開型の汎用的な計算機を用いる必要がある。【０００９】
時間展開型計算機によって空間展開型計算機を制御する場合には、空間展開型計算機がどの程度処理をしたかを時間空間型計算機内で把握しておき、時間に応じた制御が必要となる。１つの時間展開型計算機から１つの空間展開型計算機を制御する際には、その空間型計算機に応じた制御を実行することで、空間展開型計算機に応じた制御が可能となる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】国際公開第２０１２／１１８０６４号
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、１つの時間展開型計算機から複数の空間展開型計算機を制御しようとした場合には、それぞれの空間展開型計算機の動作に合わせた制御が必要となる。例えば、空間展開型計算機を複数動作させている際にそれぞれの空間展開型計算機の動作を変更する際には、それぞれの空間展開型計算機に対して時間管理をし続け、その時間にしたがって空間展開型計算機の計算の開始、終了の制御や、温度スケジューリングをする必要があり、空間展開型計算機の数が増えるとすべてを時間展開型計算機で制御するには多くのリソースを取られるという問題がある。
【課題を解決するための手段】
【００１２】
上記課題を解決する本願発明の一側面は、第１の計算機と、第１の計算機に制御される制御モジュールと、制御モジュールと対応付けて構成された第２の計算機を備えるシステムである。第２の計算機は複数のユニットを備え、複数のユニットの其々は、ノードの状態を示す値を記憶する第１のメモリと、係数を記憶する第２のメモリと、演算回路を備える。演算回路は、他ユニットのノードの状態を示す値及び自ユニットの係数に基づいて、自ユニットのノードの状態を示す値を決定して第１のメモリに記憶する演算処理を行う。制御モジュールは、演算処理を制御するための制御信号を第２の計算機に供給する。【００１３】
本発明の他の一側面は、計算機と制御モジュールを備えるシステムである。計算機は複数のユニットを備え、複数のユニットの其々は、第１のメモリと、第２のメモリと、演算回路を備える。演算回路は、他ユニットの第１のメモリに記憶された値及び自ユニットの第２のメモリに記憶された値に基づいて、自ユニットの第１のメモリセルに記憶する値を決定する演算処理を行う。制御モジュールは、演算処理を制御するためにメモリを指定する第１の制御信号とタイミングを指定する第２の制御信号を前記計算機に供給する。【００１４】
本発明の他の一側面は、空間展開型計算機とは別に制御部を持つシステムである。特に、複数の空間展開型計算機を持つ際にはそれぞれに空間展開型計算機毎に制御モジュールを持つ。制御モジュールでは、計算実行の時間管理や空間展開型計算機の動作制御である温度管理等を実行する。制御モジュールは、時間展開型計算機に内包される場合、外側に置かれる場合、空間展開型計算機に載せられる場合がある。
【発明の効果】
【００１５】
本願の構成を持つことにより、空間展開型計算機の時間管理や温度管理などの細かい制御を空間展開型計算機で実施する必要がなくなり、空間展開型計算機を制御するために時間展開型計算機のリソースを浪費する必要がなくなる。
【図面の簡単な説明】
【００１６】
【図１】実施例におけるイジングチップ100の構成の一例を説明するブロック図
【図２】３次元格子のスピンアレイ110の構成の一例を説明する概念図
【図３】スピンユニット200の構成の一例を説明するブロック図
【図４】実施例１の計算機全体構成を表すブロック図
【図５】実施例１の計算機の制御信号を説明するブロック図
【図６】実施例１の処理フロー例を示す流れ図
【図７】実施例１の制御モジュール301の構成ブロック図
【図８】実施例１の空間展開型計算機303の、相互作用制御インタフェース160に関する部分を取り出した構成ブロック図
【図９】実施例１の相互作用制御インタフェース160から、空間展開型計算機303に供給される制御信号の例を示すグラフ図
【図１０】実施例２の計算機全体構成を表すブロック図
【図１１】実施例２の計算機の制御信号を説明するブロック図
【図１２】実施例２の制御モジュール321の構成ブロック図
【図１３】実施例３の計算機全体構成を表すブロック図
【図１４】実施例３の計算機の制御信号を説明するブロック図
【図１５】温度スケジューリングの概念の一例を示すグラフ図
【図１６】実施例４の制御モジュール301の構成ブロック図
【図１７】実施例４の処理フロー例を示す流れ図
【発明を実施するための形態】
【実施例１】
【００１７】
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。【００１８】
本明細書等における「第１」、「第２」、「第３」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。【００１９】
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。【００２０】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。【００２１】
以下、本発明の一実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号または関連する符号を付し、その繰り返しの説明は省略することがある。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。【００２２】
本実施の形態では、空間展開型計算機の例として、イジングモデルの基底状態を求める半導体装置であるイジングチップ100（図1）の例を説明する。【００２３】
イジングモデルは磁性体の振る舞いを説明するための統計力学のモデルである。イジングモデルは＋1/−1(または、0/1、上/下)の２値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎にある外部磁場係数で定義される。【００２４】
イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することができる。イジングモデルのエネルギー関数Ｅ（σ）は一般的に次式（１）で表わされる。【００２５】
【数１】
2017033263.tif 000003
【００２６】
なお、σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値、Ｊｉ，ｊはｉ番目とｊ番目のスピンの間の相互作用係数、ｈｉはｉ番目のスピンに対する外部磁場係数、＜ｉ，ｊ＞は隣接する２つのサイトの組合せ、σはスピンの配列を表わすものとする。【００２７】
イジングモデルの基底状態を求めるというのは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。例えば、因数分解や巡回セールスマン問題など、一見すると磁性体と何ら関係の無い問題をイジングモデルに変換することができる。そして、変換して得られたイジングモデルの基底状態は、元の問題の解に対応している。このことから、イジングモデルの基底状態を探索することのできる装置は、汎用的な用途に利用可能なコンピュータであると言える。【００２８】
図１は、本実施の形態におけるイジングチップ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では、イジングモデルのスピンσｉ、相互作用係数Ｊｉ，ｊおよび外部磁場係数ｈｉを全てスピンアレイ110内のメモリセルに記憶する情報で表現する。図１に示した例では、メモリセルを高速なSRAM（Static Random Access Memory：スタティックランダムアクセスメモリ）で構成することを想定している。この場合、スピンσｉの初期状態の設定および基底状態探索完了後の解読み出しのためにスピンσｉのリード/ライトをSRAM互換インタフェース150で行う。また、基底状態を探索すべきイジングモデルをイジングチップ100に設定するために、相互作用係数Ｊｉ，ｊおよび外部磁場係数ｈｉのリード／ライトもSRAM互換インタフェース150で行う。そのため、スピンアレイ110内のスピンσｉ、相互作用係数Ｊｉ，ｊおよび外部磁場係数ｈｉには、それらを格納するメモリセルに対応するアドレスが付与されている。【００３２】
なお、SRAM互換インタフェース150を構成するアドレスバス190、データバス191およびR/W制御線193は、I/Oクロック線192に入力されるクロックに同期して動作する。但し、本実施例において、インタフェースが同期式である必要性は無く、非同期式のインタフェースでも良い。本実施の形態では、同期式のインタフェースであるという前提で説明を行う。【００３３】
また、イジングチップ100は、基底状態探索を行うために、スピンアレイ110の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース160である。具体的には相互作用を行うスピン群を格納するメモリを指定するアドレスを、相互作用アドレス線180を介して入力する。そして、指定されたメモリに格納されたスピンに対し、相互作用クロック線181を介して入力されるクロックに同期して相互作用を行う。イジングチップの例では、相互作用とはスピンσｉ、相互作用係数Ｊｉ，ｊおよび外部磁場係数ｈｉを用いた演算、およびその結果の格納である。具体的には、スピンアレイのメモリセルの値を読み出し、読み出した値からエネルギーを計算し、エネルギーが小さくなるようなスピンの値を決定し、決定したスピンの値をメモリセルに書き込む一連の処理をいう。【００３４】
なお、相互作用は、必ずしもクロック同期回路で実現される必要はなく、非同期回路であっても構わない。この場合、相互作用クロック線181の役割はクロックの入力ではなく、相互作用の実行を許可するイネーブル信号であるものとする。相互作用制御インタフェースについても、必ずしも同期式である必要はなく、非同期式のインタフェースでも良いが、本実施の形態では同期式のインタフェースを用い、相互作用が相互作用クロック線181を介して入力されるクロックに同期して行われるという前提で説明を行う。【００３５】
スピンアレイ110は、１個のスピンとそれに付随する相互作用係数および外部磁場係数の保持と、基底状態探索処理とを実現するスピンユニット200を基本構成単位として、スピンユニット200を多数個並べて構成する。【００３６】
図2は、３次元格子のスピンアレイ110の構成の一例を説明するための概念図である。図2では、スピンアレイ110として、スピンユニット200を複数個並べることで、３次元格子状のトポロジを持つイジングモデルを構成する例を示している。【００３７】
図2の例は、3(Ｘ軸方向)×3(Ｙ軸方向)×2(Ｚ軸方向)の大きさの３次元格子である。座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、図面奥行き方向をＺ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本実施例とは関係しない。３次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図3の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとして捉えると、最大で次数5のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。【００３８】
図2に示す１個のスピンユニット200には、隣接するスピンユニットが持つスピンσｊ、σｋ、σｌ、σｍ、σｎの値が入力される。図2の例ではこれらの値は、隣接する上、下、左、右、奥行き方向の5個のスピンユニットが持つ値を示している。スピンユニット200は、スピンσｉおよび外部磁場係数ｈｉを格納するメモリセルを備える。図2のスピンユニット200で、スピンを格納するメモリセルを円形で、外部磁場係数を格納するメモリセルを正方形で示した。また、上述した隣接する５つのスピンσｉとの相互作用係数であるＪｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉを保持するメモリセルを有している。これらは図2では長方形で示される。【００３９】
ところで、イジングモデルは、一般的に無向グラフで表現される相互作用を有している。上述した式(1)では、相互作用を表わす項として、Ｊｉ，ｊ×σｉ×σｊがあるが、これはi番目スピンからj番目スピンへの相互作用を示している。この時、一般的なイジングモデルでは、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。つまり、Ｊｉ，ｊとＪｊ，ｉは同一である。しかし、本実施の形態のイジングチップ100では、このイジングモデルを有向グラフに拡張し、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。【００４０】
そのため、１個のスピンユニット200をi番目スピンσｉと考えた時に、このスピンユニットが保持する相互作用係数であるＪｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉは、隣接するj番目、k番目、l番目、m番目、n番目のスピンσｊ、σｋ、σｌ、σｍ、σｎから、i番目スピンσｉへの相互作用を決めるものである。このことは、図2において、スピンユニット200に含まれている相互作用係数が対応する矢印(相互作用)が、図示されているスピンユニット200の外部のスピンから、スピンユニット200の内部のスピンに向かっていることに対応している。【００４１】
図3を用いてスピンユニット200の具体的な構成の一例を説明する。スピンユニット200は、イジングモデルのスピンσｉ、相互作用係数Ｊｊ，ｉ〜Ｊｎ，ｉおよび外部磁場係数ｈｉを保持するために、複数のメモリセル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に対応させる。【００４３】
本実施例では、外部磁場係数、及び、相互作用係数は、＋１／０／−１の３値に対応させている。そのため、外部磁場係数、および、相互作用係数を表わすためには、それぞれ２ビットのメモリセルを用いている。図3で示すように、IS0、IS1、IU0、IU1、IL0、IL1、IR0、IR1、ID0、ID1、IF0、IF1は、末尾の数字が０と１の２つのメモリセル（例えば外部磁場係数ISXの場合にはIS0とIS1）の組合せで、＋１／０／−１の３値を表現する。例えば、外部磁場係数ISXの場合には、IS1で＋１／−１を表現し、IS1が１の時は＋１，０の時には−１を表現する。これに加えて、IS0が０の時には外部磁場係数を０と見なし、IS0が１の時にはＩＳ１で決まる＋１／−１のいずれかを外部磁場係数とする。外部磁場係数が０の時は外部磁場係数をディセーブルしていると考えれば、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を１個ずつ実行させるようにすればよい。しかし、この方法では計算に時間がかかる短所がある。そこで、スピン間の相互作用を全てのスピンについて同時並行的に行うことが考えられる。しかし、実際には相互作用計算では、相互作用計算を行っているスピンユニットと、そのスピンユニットにスピンの値を入力しているスピンユニットとで、相互作用計算を同時に行うことは好ましくない。あるスピンを更新するときに、隣接スピンの値に基づいて、隣接スピンとの間でエネルギーを最小化するようにスピンを更新するので、それと同時に隣接スピンの値を更新すると、両方の更新が重複してしまい、エネルギーを最小化できず振動してしまう。すなわち、あるスピンを更新するときに、そのスピンに接続されているスピン（あるスピンに相互作用係数を介して直接接続されているスピンをこれ以降隣接スピンと呼ぶ）を同時に更新することは避けるべきである。【００５０】
このために、例えば、隣接スピンは同時に更新しないように、スピンアレイ内のスピンユニットをグループ分けして、一度に同時に更新するのは１つのグループだけにする方法が考えられる。そして、このグループを順次更新していく。このため、相互作用計算は相互作用制御インタフェース160によって、相互作用計算を行うスピンユニットのアドレスとタイミングが制御される。【００５１】
このように図1〜図3で説明したイジングモデルを用いた計算機は、問題を空間方向に展開して解いているため、空間展開型計算機と言える。本明細書では、イジングモデルを用いた計算機を空間展開型計算機として想定して説明するが、イジングモデルを用いない計算機でも同様の効果が得られる。例えば、ニューロンの働きを模擬したニューロ計算機も同様に空間展開型計算機と考えられるが、同様に時間展開型計算機から制御する必要があり、本願の構成により同様の効果が得られる。【００５２】
図4に、時間展開型計算機と空間展開型計算機で構成した計算機全体構成例を表す。この例では、１つの時間展開型計算機により4つの空間展開型計算機を制御している。時間展開型計算機302は例えばノイマン型の市販のCPUであり、空間展開型計算機303は例えば上述のイジングチップである。【００５３】
この実施例の空間展開型計算機303では、上述のイジングモデルの基底状態探索を行うことを想定している。一般に、基底状態探索では、同一の問題を複数回解き、最良の解（例えばエネルギーが最低になる解）を採用することが行われる。このとき、複数の基底状態探索を並行して実行することができれば、スループットの向上が見込まれる。この場合、空間展開型計算機303は必ずしも同期して動作する必要はなく、別個独立に動作してもよい。例えば、一つの空間展開型計算機で１回の基底状態探索が終了したら、その空間展開型計算機で、他の空間展開型計算機の状況に係らず、同じ問題について２回目の基底状態探索を開始することもできる。従って、本実施例では、空間展開型計算機303をなるべく多数配置することにメリットがある。【００５４】
時間展開型計算機302と空間展開型計算機303は、データをやり取りするデータ線306により直接接続される。また、時間展開型計算機302から制御信号304を介して制御モジュール301が接続されている。さらに制御モジュール301から制御信号305を介して空間展開型計算機303が１対１に接続されている。【００５５】
この構成により、空間展開型計算機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の動作は、１回の基底状態探索に相当する。本実施例では、以上の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の例では、スピンユニットをＡとＢの２つのグループに分けて、交互に相互作用計算を行う。【００７３】
各スピンユニット200には、制御モジュール301からの相互作用クロック181、相互作用アドレス180、および乱数142が配給されている。これらは、制御モジュール301からの信号をそのまま用いてもよいし、位相や周波数を調整して用いてもよい。これらの信号線は独立に構成されているが、図8では便宜上１本の線で示している。スピンユニット200には「Ｎ０００」等のＩＤと、Ａ，Ｂの符号が付されている。ＡとＢは、隣接するスピンが同時に書き換えられないように、相互作用アドレスデコーダ140で交互に相互作用が実行される、グループの別を示している。【００７４】
図9は、図8のスピンユニットに入力される制御信号を示している。相互作用アドレス180と相互作用クロック181は、スピンユニットのＡとＢのグループに、交互に相互作用計算を実行させる。ri[t]で示される乱数142は、１ビットに限るものではないが、本例では＋１と−１の値をとる１ビットパルスとした。この信号は、制御モジュール301内で、通常の乱数発生機314で生成することができる。【００７５】
ランダム効果制御信号（ＲＥ）は、この信号がHIGHの間、乱数142を有効にし、LOWの間無効にする。乱数142が無効な間はri[t]の値は０になり、有効な間はri[t]の値は、＋１または−１のランダムな値をとる。通常は、基底状態探索の初期において、乱数142を有効とする。ランダム効果制御信号REも必要により、制御モジュール301から空間展開型計算機303に供給することができる。空間展開型計算機303では乱数の値に応じて、メモリセルNの値を反転させる。【００７６】
ランダム効果制御信号（ＲＥ）は、図７の乱数信号142とともに空間展開型計算機303に入力して、乱数142との論理和を生成し、乱数の有効無効を制御（マスキング）することができる。また、ランダム効果制御信号（ＲＥ）を空間展開型計算機303に供給して乱数をマスキングするのではなく、制御モジュール301の制御論理モジュール311内で乱数142をマスキングし、マスキングされた乱数を直接空間展開型計算機303に供給してもよい。【００７７】
本実施例では、空間展開型計算機としてイジングチップの例を示したが、必ずしもイジングチップに限る話ではない。例えば、ニューラルネットワークを実装した空間展開型計算機であるニューロコンピュータでは、データの入出力信号や同期型の場合のクロック信号、チップ間の通信の制御などを外部の空間展開型計算機で行う。なお、イジングモデルにおける係数は、ニューラルネットワークにおいては、重みやバイアスのパラメータなど、ニューロンの振る舞いを表すパラメータに置き換えることができる。本明細書では便宜上、これらの係数やパラメータを総括して「係数」と称することがある。
【実施例２】
【００７８】
実施例１では、制御モジュール301は、時間展開型計算機から空間展開型計算機へ送るデータに関しては関与していなかった。しかし、データの送受信も制御モジュールが実行することも可能である。実施例２では、その場合の形態について説明する。【００７９】
図10に、時間展開型計算機302と空間展開型計算機303で構成した計算機全体構成を表す。１つの時間展開型計算機により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として送られる。そのデータは、実施例１と同様に、IOアドレス191、クロック信号192、R/W制御信号193を用いて、イジングモデルの相互作用を格納するメモリに書き込まれる。【００８２】
次に、制御信号324を通じて計算を実行するための指示が時間展開型計算機302から制御モジュール321に送られる。この際に、設定データも制御モジュール321に送信する。設定データには、例えば、空間展開型計算機303で、どの程度の時間相互作用計算を行うかを設定するデータが含まれる。あるいは、何回相互作用計算を行うかを設定するデータでもよい。また、温度をどのように変えるかを設定するデータが含まれていてもよい。温度の設定データは、具体的には、例えば、乱数の発生の開始や停止を設定するデータが含まれる。あるいは、乱数に含まれる０と１の比率を時間的に制御するデータが含まれていてもよい。【００８３】
制御モジュール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に転送する。【００８６】
このように、本実施例を用いることで、制御モジュールによって空間展開型計算機の計算が実行可能となり、空間展開型計算機を制御するための時間展開型計算機のリソースを抑えることが可能となる。
【実施例３】
【００８７】
実施例１では、制御モジュール301は、時間展開型計算機とも空間展開型計算機とも別のモジュールとして配置されていた。しかしこのモジュールは、時間展開型計算機や空間展開型計算機内に内包することも可能である。実施例３では、その一例として空間展開型計算機内に内包されている場合の形態について説明する。【００８８】
図13に、時間展開型計算機と空間展開型計算機で構成した計算機全体構成を表す。１つの時間展開型計算機により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自体は、実施例１で説明した図7の制御モジュール301と同様の構成とすることが可能となる。【００９１】
このように、本実施例を用いることで、制御モジュールによって空間展開型計算機の計算が実行可能となり、空間展開型計算機を制御するための時間展開型計算機のリソースを抑えることが可能となる。
【実施例４】
【００９２】
実施例１〜3では、空間展開型計算機の一つの制御要素である温度スケジューリングが時間で決定される場合について説明した。【００９３】
図15は温度スケジューリングの概念の一例である。これは、例えば図15で示すように時間とともに乱数列の1の比率を下げていくということで実現できる。このように、スケジューリングが予め決まっている場合には、時間展開型計算機あるいは制御モジュールが予め定めたスケジュールで空間展開型計算機を動作させればよい。例えば、このスケジュールは、時間展開型計算機から設定データの一部として制御モジュールに送られ、制御モジュールの設定レジスタに記憶され、このスケジュールに沿って乱数列の制御が行われる。【００９４】
しかし、この1の比率は空間展開型計算機であるイジングモデルが持つエネルギーが下がっていくにしたがって低くするのが本来は望ましい。よって、イジングモデルが持つエネルギーをチェックし、それにしたがって乱数列に含まれる1の比率を変化させることで、さらに精度の高い解を得ることが可能となる。実施例４では、その動作を実現するための制御モジュールの例を示す。制御モジュール以外の部分は実施例２（図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アドレス１９０を用いて、例えば図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…エネルギー計算モジュール
【図１】
2017033263.tif 000004
【図２】
2017033263.tif 000005
【図３】
2017033263.tif 000006
【図４】
2017033263.tif 000007
【図５】
2017033263.tif 000008
【図６】
2017033263.tif 000009
【図７】
2017033263.tif 000010
【図８】
2017033263.tif 000011
【図９】
2017033263.tif 000012
【図１０】
2017033263.tif 000013
【図１１】
2017033263.tif 000014
【図１２】
2017033263.tif 000015
【図１３】
2017033263.tif 000016
【図１４】
2017033263.tif 000017
【図１５】
2017033263.tif 000018
【図１６】
2017033263.tif 000019
【図１７】
2017033263.tif 000020
【国際調査報告】
2017033263.tif 000021
2017033263.tif 000022
2017033263.tif 000023
2017033263.tif 000024