(57)【要約】  乱数発生器を用いてイジングモデルの基底状態探索を行う半導体装置全体にランダム性を供給する。  イジングモデルの１つのスピンの値を記憶するメモリセルと、該スピンに相互作用を及ぼす隣接するスピンからの相互作用係数を記憶するメモリセルと、前記１つのスピンの外部磁場係数を記憶するメモリセルと、並びに、前記各隣接スピンの値と前記対応する相互作用係数の積、及び前記外部磁場係数に基いて、前記１つのスピンの次状態を決定する回路とを有するスピンユニットが構成され、前記イジングモデルの各スピンをそれぞれ割り付けられた複数の前記スピンユニットが、前記イジングモデルのトポロジを維持した状態で、半導体基板上の２次元平面に配置、接続されて構成されたスピンアレイと、乱数発生器と、ビット調整器を備え、前記ビット調整器は前記乱数発生器の出力に演算を施して、前記スピンアレイの全てのスピンユニットへ１つの配線を通して乱数ビットを供給する。
2016006071.tif 000002
【特許請求の範囲】
【請求項１】
イジングモデルの各スピンの値を記憶するメモリセルと、該スピンに相互作用を及ぼす隣接するスピンからの相互作用係数を記憶するメモリセルと、該スピンの外部磁場係数を記憶するメモリセルと、および該スピンの次状態を決定する回路とをそれぞれ有する複数のスピンユニットが、前記イジングモデルのトポロジを維持した状態で、半導体基板上の２次元平面に配置、接続されて構成されたスピンアレイと、
複数ビットの乱数を発生する乱数発生器と、
前記乱数発生器の出力に演算を施して、ビット確率を可変にした１ビットの乱数ビットを供給するビット調整器と、
前記スピンアレイの全てのスピンユニットへ前記ビット調整器の出力を供給する１つの配線と、
を備えたことを特徴とする半導体装置。
【請求項２】
前記ビット調整器は、
メモリに格納された演算ビット数ｍに従って、入力されたｎビットの乱数より演算ビット数ｍで指定されたビット数ｍだけ取り出すビット選択部と、
前記ビット選択部の出力であるｍビットの値の各ビットのＡＮＤをとり、１ビットの値を出力するＡＮＤ回路と、
前記ビット選択部の出力であるｍビットの値の各ビットのＯＲをとり、１ビットの値を出力するＯＲ回路と、
メモリに格納されたＡＮＤ／ＯＲ選択ビットに従って、前記ＡＮＤ回路または前記ＯＲ回路の出力のいずれか一つを選択し、ビット調整器全体の出力とするＡＮＤ／ＯＲ選択部とを備えていることを特徴とする請求項１に記載の半導体装置。
【請求項３】
請求項１に記載の半導体装置において、
前記配線は、前記スピンアレイの中で一筆書き状に全てのスピンユニットを１度だけ通り、
前記配線を通して前記各スピンユニットにランダムビットを供給し、
前記各スピンユニットは、前記ランダムビットの値を用いてスピンの値を反転させる、ことを特徴とする半導体装置。
【請求項４】
請求項１に記載の半導体装置において、
前記スピンアレイ内の全てのスピンユニットを複数のブロック単位に分割し、
前記ビット調整器の出力を前記ブロック毎に分岐した配線に分配し、
前記各ブロックは、独立した１つの配線を通して前記各ブロック内の全てのスピンユニットにランダムビットを供給する、ことを特徴とする半導体装置。
【請求項５】
請求項１に記載の半導体装置において、
前記ビット調整器の出力を１つの配線で前記スピンアレイ内へ供給し、
前記配線を前記スピンアレイ内でツリー状に分岐して、末端の各枝配線をそれぞれスピンユニットに接続し、
前記ツリー状の配線を通して前記スピンユニットにランダムビットを供給する、ことを特徴とする半導体装置。
【請求項６】
更に第２の乱数発生器と、および第２のビット調整器を備え、
前記第２のビット調整器は前記第２の乱数発生器の出力に演算を施して、前記配線とは異なるもう１つの第２の配線を通して前記スピンアレイの全てのスピンユニットへ第２の乱数ビットを供給し、
前記各スピンユニットは、前記乱数ビットと前記第２の乱数ビットのＡＮＤ論理の結果を用いてスピンの値を反転させることを特徴とする請求項１に記載の半導体装置。
【請求項７】
半導体装置内に備えた前記乱数発生器と、前記ビット調整器に替えて、
半導体装置の外部に在る乱数発生器と、ビット調整器から出力する乱数ビットを入力する端子と、前記入力された乱数ビットを前記スピンアレイの全てのスピンユニットへ供給する１つの配線を備え、
前記各スピンユニットは、前記乱数ビットの値を用いてスピンの値を反転させることを特徴とする請求項１に記載の半導体装置。
【請求項８】
ＣＰＵ、メモリ、ＨＤＤ、及び請求項1乃至７のいずれかの請求項に記載された半導体装置をシステムバスに接続した情報処理システムであって、
前記ＣＰＵ上で実行された問題変換プログラムは、
対象問題を表現するイジングモデルの相互作用係数と外部磁場係数を生成し、
前記ＣＰＵ上で実行された前記半導体装置の制御プログラムは、
初期スピン配列をランダムに生成し、
前記イジングモデルの各スピンを割当てた前記半導体装置上の前記スピンアレイ内の前記スピンユニットへ、前記初期スピン配列、前記相互作用係数、及び前記外部磁場係数を書き込み、
前記ビット調整器が出力する乱数ビットのビット確率の初期値と、該ビット確率に対応する相互作用回数を設定し、
前記スピンアレイの全てのスピンユニットの基底状態探索処理を前記設定した相互作用回数繰り返し実行し、
設定したビット確率が最終下限閾値に達していなければ、ビット確率を下げる更新と、相互作用回数の再設定を行い、スピンユニットの基底状態探索処理を繰り返し実行し、
基底状態に達した前記スピンユニットのスピン配列を読み出して対象問題の解を得ることを特徴とする情報処理システム。
【請求項９】
ＣＰＵ、メモリ、ＨＤＤ、及びアクセラレータとして適用が可能な半導体装置をシステムバスに接続した情報処理システムであって、
前記半導体装置は、
イジングモデルの各スピンの値を記憶するメモリセルと、該スピンに相互作用を及ぼす隣接するスピンからの相互作用係数を記憶するメモリセルと、該スピンの外部磁場係数を記憶するメモリセルと、および該スピンの次状態を決定する回路とをそれぞれ有する複数のスピンユニットが、前記イジングモデルのトポロジを維持した状態で、半導体基板上の２次元平面に配置、接続されて構成されたスピンアレイと、
複数ビットの乱数を発生する乱数発生器と、
前記乱数発生器の出力に演算を施して、ビット確率を可変にした１ビットの乱数ビットを供給するビット調整器と、
前記スピンアレイの全てのスピンユニットへ前記ビット調整器の出力を供給する１つの配線と、
前記スピンアレイ内に配置されたスピンユニットのメモリセルをリード／ライトするＩ／Ｏインタフェースとを備え、
前記ＣＰＵ上で実行された問題変換プログラムは、
対象問題を表現するイジングモデルの相互作用係数と外部磁場係数を生成し、
前記ＣＰＵ上で実行された前記半導体装置の制御プログラムは、
初期スピン配列をランダムに生成し、
前記イジングモデルの各スピンを割当てた前記半導体装置上の前記スピンアレイ内の前記スピンユニットへ、前記初期スピン配列、前記相互作用係数、及び前記外部磁場係数を書き込み、
前記ビット調整器が出力する乱数ビットのビット確率の初期値と、該ビット確率に対応する相互作用回数を設定し、
前記スピンアレイの全てのスピンユニットの基底状態探索処理を前記設定した相互作用回数繰り返し実行し、
設定したビット確率が最終下限閾値に達していなければ、ビット確率を下げる更新と、相互作用回数の再設定を行い、スピンユニットの基底状態探索処理を繰り返し実行し、
基底状態に達した前記スピンユニットのスピン配列を読み出して対象問題の解を得ることを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イジングモデルの基底状態探索を行う半導体装置に関するものであり、特に、イジングモデルのスピンをＣＭＯＳのフリップフロップとして模擬する半導体装置に関する。
【背景技術】
【０００２】
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは＋１／−１（または、０／１、上／下）の２値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎にある外部磁場係数で定義される。イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することが出来る。【０００３】
イジングモデルの基底状態探索とは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。トポロジが非平面グラフであるイジングモデルの基底状態を求めることはＮＰ困難問題であることが知られている。
イジングモデルの基底状態探索は、ＮＰ困難なグラフ問題として知られている最大カット問題とも対応している。このようなグラフ問題は、ソーシャルネットワークにおけるコミュニティの検出や、画像処理におけるセグメンテーションなど、幅広い応用を持っている。そのため、イジングモデルの基底状態探索を行うソルバがあれば、このような様々な問題に適用することが出来る。【０００４】
イジングモデルに含まれるスピンのとりうる状態の組み合わせは莫大な数にのぼるため、基底状態を求めるにあたってそのすべてを探索することは実質的に不可能である。このため、基底状態を効率よく求めるには、探索するスピンの組み合わせを絞り込む必要がある。しかしながら、絞り込みによって局所最適解を選んでしまい、近似的な基底状態しか得られなくなるといった弊害も起こるため、探索の過程で見つかった局所解を避けることでよりよい解を得られる手法が必要である。
このような手法として、超電導素子を用いた量子的なゆらぎを活用して基底状態探索を行う方法が提案されている。例えば、このような装置として、例えば特許文献１に記載の装置がある。【０００５】
また、シミュレーテッドアニーリングのように、一時的に解の悪化を許容するヒューリスティクスを用いて、良い解を求める方法もある。このような方法を用いる場合、例えば非特許文献１に示されるようなハードウェアを用いることで、高速に基底状態探索を行うことができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１２／１１８０６４号
【非特許文献】
【０００７】
【非特許文献１】Michael G. Wrighton, Andre M. DeHon, Hardware-Assisted Simulated Annealing with Application for Fast FPGA Placement, FPGA '03 Proceedings of the 2003 ACM/SIGDA eleventh international symposium on Field programmable gate arrays, Pages 33 - 42
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に示した超電導素子を用いた量子揺らぎの形で局所解を脱する方法は、超電導状態を実現するハードウエアを構成するため、高度な冷却装置を使用する必要がある。このため、装置全体が高コストとなり、また大規模化が難しいといった課題がある。【０００９】
非特許文献１のように、シミュレーテッドアニーリングを行う半導体装置を用いる場合、疑似乱数発生器を用いて必要なランダム性を供給する必要がある。この場合、アニーリング動作の並列性を得る目的で、アニーリングの基本演算を行う演算器ごとに疑似乱数発生器を搭載すると、回路規模が増大し高コスト化や大規模化が難しくなるといった課題がある。【００１０】
本発明は上記の課題に鑑みてなされたものであり、その目的はごく少数の乱数発生器を用いて半導体装置全体にランダム性を供給することで、低コストで大規模化が容易なイジングモデルの基底状態探索を行う半導体装置を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するために本発明では、イジングモデルの基底状態探索を行う半導体装置を、イジングモデルの各スピンの値を記憶するメモリセルと、該スピンに相互作用を及ぼす隣接するスピンからの相互作用係数を記憶するメモリセルと、該スピンの外部磁場係数を記憶するメモリセルと、および該スピンの次状態を決定する回路とをそれぞれ有する複数のスピンユニットが、前記イジングモデルのトポロジを維持した状態で、半導体基板上の２次元平面に配置、接続されて構成されたスピンアレイと、複数ビットの乱数を発生する乱数発生器と、前記乱数発生器の出力に演算を施して、ビット確率を可変にした１ビットの乱数ビットを供給するビット調整器と、前記スピンアレイの全てのスピンユニットへ前記ビット調整器の出力を供給する１つの配線とを備えて構成した。【００１２】
また、上記課題を解決するために本発明では、前記半導体装置の前記ビット調整器を、メモリに格納された演算ビット数ｍに従って、入力されたｎビットの乱数より演算ビット数ｍで指定されたビット数ｍだけ取り出すビット選択部と、前記ビット選択部の出力であるｍビットの値の各ビットのＡＮＤをとり、１ビットの値を出力するＡＮＤ回路と、前記ビット選択部の出力であるｍビットの値の各ビットのＯＲをとり、１ビットの値を出力するＯＲ回路と、メモリに格納されたＡＮＤ／ＯＲ選択ビットに従って、前記ＡＮＤ回路または前記ＯＲ回路の出力のいずれか一つを選択し、ビット調整器全体の出力とするＡＮＤ／ＯＲ選択部とを備えて構成した。【００１３】
また、上記課題を解決するために本発明では、前記半導体装置において、前記配線は、前記スピンアレイの中で一筆書き状に全てのスピンユニットを１度だけ通り、前記配線を通して前記各スピンユニットにランダムビットを供給し、前記各スピンユニットは、前記ランダムビットの値を用いてスピンの値を反転させるように構成した。【００１４】
また、上記課題を解決するために本発明では、ＣＰＵ、メモリ、ＨＤＤ、及びアクセラレータとして適用が可能な半導体装置をシステムバスに接続した情報処理システムを、前記半導体装置は、イジングモデルの各スピンの値を記憶するメモリセルと、該スピンに相互作用を及ぼす隣接するスピンからの相互作用係数を記憶するメモリセルと、該スピンの外部磁場係数を記憶するメモリセルと、および該スピンの次状態を決定する回路とをそれぞれ有する複数のスピンユニットが、前記イジングモデルのトポロジを維持した状態で、半導体基板上の２次元平面に配置、接続されて構成されたスピンアレイと、複数ビットの乱数を発生する乱数発生器と、前記乱数発生器の出力に演算を施して、ビット確率を可変にした１ビットの乱数ビットを供給するビット調整器と、前記スピンアレイの全てのスピンユニットへ前記ビット調整器の出力を供給する１つの配線と、前記スピンアレイ内に配置されたスピンユニットのメモリセルをリード／ライトするＩ／Ｏインタフェースとを備え、前記ＣＰＵ上で実行された問題変換プログラムは、対象問題を表現するイジングモデルの相互作用係数と外部磁場係数を生成し、前記ＣＰＵ上で実行された前記半導体装置の制御プログラムは、初期スピン配列をランダムに生成し、前記イジングモデルの各スピンを割当てた前記半導体装置上の前記スピンアレイ内の前記スピンユニットへ、前記初期スピン配列、前記相互作用係数、及び前記外部磁場係数を書き込み、前記ビット調整器が出力する乱数ビットのビット確率の初期値と、該ビット確率に対応する相互作用回数を設定し、前記スピンアレイの全てのスピンユニットの基底状態探索処理を前記設定した相互作用回数繰り返し実行し、設定したビット確率が最終下限閾値に達していなければ、ビット確率を下げる更新と、相互作用回数の再設定を行い、スピンユニットの基底状態探索処理を繰り返し実行し、基底状態に達した前記スピンユニットのスピン配列を読み出して対象問題の解を得るように機能するように構成した。
【発明の効果】
【００１５】
本発明によれば、イジングモデルの基底状態探索を行う半導体装置において、少ない乱数発生器でランダム性を供給することができるため、装置の低コスト化および大規模化が容易になる。
【図面の簡単な説明】
【００１６】
【図１】本発明の半導体装置であるイジングチップの構成の一例を説明する図である。
【図２】本発明の半導体装置であるイジングチップを制御する情報処理システムの構成の一例を説明する図である。
【図３】３次元格子のスピンアレイの構成の一例を説明する図である。
【図４】スピンアレイの構成をＳＲＡＭメモリとしての動作に着目して説明する図である。
【図５】スピンアレイの構成を、スピンユニット間の相互作用を行う動作に着目して説明する図である。
【図６】スピンアレイの構成を、ランダムビットの伝播経路に着目して説明する図である。
【図７】スピンユニットを時系列に沿ってランダムビットが伝播していく様子を説明する図である。
【図８】スピンユニットの構成を、ＳＲＡＭメモリとしての動作に着目して説明する図である。
【図９】スピンユニットの構成を、相互作用を行う動作に着目して説明する図である。
【図１０】ビット調整器の構成を説明する図である。
【図１１】イジングチップを用いて最適化問題を解く際のフローを説明する図である。
【図１２】イジングモデルの基底状態探索を行う際のビット確率と相互作用回数の一例を説明する図である。
【図１３】本発明の第２の実施例において、スピンアレイのランダムビットの伝播経路を説明する図である。
【図１４】本発明の第２の実施例において、スピンユニットの構成を、相互作用を行う動作に着目して説明する図である。
【図１５】本発明の第３の実施例において、スピンアレイのランダムビットの伝播経路を説明する図である。
【図１６】本発明の第４の実施例において、スピンアレイのランダムビットの伝播経路を説明する図である。
【図１７】スピンユニット内のメモリセルとスピンアレイのトポロジとの対応関係を説明する図である。
【発明を実施するための形態】
【００１７】
以下では、イジングモデルの基底状態を求める半導体装置の例を用いて本発明の実施例を説明する。
【実施例１】
【００１８】
イジングモデルは強磁性体の振る舞いを説明するとき等に用いられる統計力学のモデルである。イジングモデルは＋１または−１の２値の状態をとる複数のスピンと、スピン間の相互作用の強さを表す相互作用係数と、各スピンに働く外部磁場の強さを表す外部磁場係数で定義される。【００１９】
イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することが出来る。【００２０】
イジングモデルのエネルギー関数Ｅ(σ)は数１で定義される。数１において、σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値、Ｊi,jはｉ番目とｊ番目のスピンの間の相互作用係数、ｈｉはｉ番目のスピンに対する外部磁場係数、＜ｉ，ｊ＞は隣接する全てのスピン(ｉとｊ)の組合せ、σはスピンの配列を表わすものとする。【００２１】
【数１】
2016006071.tif 000003
【００２２】
イジングモデルの基底状態を求めるというのは、数１で表されるイジングモデルのエネルギー関数が最小となるようなスピンの値の組み合わせを求める、組み合わせ最適化問題を解くことに相当する。【００２３】
例えば、グラフの最大カット問題や巡回セールスマン問題などの最適化問題をイジングモデルの基底状態探索に変換することが可能である。このとき、元の問題を変換して作ったイジングモデルの基底状態を求めた後、スピン値の値を元の問題に逆変換することで元の問題を解くことができる。イジングモデルの基底状態探索を高速に行う装置を用いることで、従来の計算機では時間のかかる最適化問題を高速に解くことができる。【００２４】
図１に、イジングモデルの基底状態探索を行う半導体装置であるイジングチップの構成例を示す。
イジングチップ１００は、スピンアレイ１１０、Ｉ／Ｏドライバ１２０、Ｉ／Ｏアドレスデコーダ１３０、相互作用アドレスデコーダ１４０、乱数発生器１５０、およびビット調整器１５１から構成される。【００２５】
スピンアレイ１１０は後述(図３、４)するとおり、１個のスピンとそれに付随する相互作用係数、及び、外部磁場係数の保持と、基底状態探索処理を実現するスピンユニット３００を基本構成単位として、スピンユニット３００を多数個並べて構成される。スピンアレイ１１０は、ＳＲＡＭとしての機能とイジングモデルの基底状態探索を行う相互作用回路としての機能を併せ持っている。【００２６】
Ｉ／Ｏドライバ１２０とＩ／Ｏアドレスデコーダ１３０はスピンアレイ１１０をＳＲＡＭとして用いる際のインターフェースである。Ｉ／Ｏドライバ１２０はデータバス１９１を介してスピンアレイ１１０から読み取り、または書き込みするビット列を授受し、Ｒ／Ｗ制御線１９３の信号に従って、読み取り動作と書き込み動作を切り替えることができる。Ｉ／Ｏアドレスデコーダ１３０はアドレスバス１９０を介して読み書きを行うアドレスをマッピングする。Ｉ／Ｏドライバ１２０とＩ／Ｏアドレスデコーダ１３０はいずれもＩ／Ｏクロック１９２に同期して動作する。【００２７】
イジングチップ１００では、イジングモデルのスピンσｉ、相互作用係数Ｊi,j、および、外部磁場係数ｈｉを全てスピンアレイ１１０内のメモリセルに記憶する情報で表現する。スピンの初期状態の設定、及び、基底探索完了後の解読み出しのためにスピンσｉのリード／ライトを前記ＳＲＡＭ互換インタフェースで行う。また、基底状態を探索すべきイジングモデルをイジングチップ１００に設定するために、相互作用係数Ｊi,j、および、外部磁場係数ｈｉのリード／ライトも前記ＳＲＡＭ互換インタフェースで行う。【００２８】
また、イジングチップ１００は基底状態探索を行うために、スピンアレイ１１０の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するため、相互作用を行うスピン群を指定するアドレスである相互作用アドレス１８０を入力して、相互作用アドレスデコーダ１４０は、スピンアレイ１１０を相互作用回路として用いる際の、相互作用の対象となるスピンを選択する。また、相互作用アドレスデコーダ１４０とスピンアレイ１１０は相互作用クロック１８１に同期して動作し、相互作用クロック１周期につき１回の相互作用動作を行う。相互作用動作の詳細については後述する。【００２９】
また、乱数発生器１５０は１回の乱数生成で複数ビットからなる乱数１５２を発生する装置である。電子回路として実現が容易な線形帰還フィードバックレジスタ等をはじめとする疑似乱数回路を用いてもよいし、物理乱数発生器を用いてもよい。ビット調整器１５１は乱数発生器１５０の出力した乱数１５２を入力とし、適当な演算を施すことで１ビットのランダムなビット１５３を生成し、スピンアレイ１１０へと出力する。乱数発生器１５０とビット調整器１５１はいずれも乱数発生クロック１６０に同期して動作しており、乱数発生クロック１周期につき１つの乱数１５３を発生する。
本実施例では乱数発生器１５０とビット調整器１５１をイジングチップ１００内に含む例を記載しているが、乱数発生器１５０とビット調整器１５１をチップ外に配置し、ランダムなビット列をイジングチップ１００に入力しても良い。【００３０】
図２に、上記のイジングチップ１００を用いて所望の最適化問題を解くための情報処理システムの一例を示す。情報処理システム２５０は、例えば一般的に用いられているパーソナルコンピュータやサーバのようなホストコンピュータ２００を含む。ホストコンピュータ２００は、ＣＰＵ２１０と、メモリ２２０と、ＨＤＤ２３０と、システムバス２４０と、１つまたは複数のイジングチップ１００−１、１００−２をアクセラレータのように備える。
メモリ２２０は、所望の最適化問題をイジングモデルの基底状態探索に変換する問題変換プログラム２２１と、イジングチップを制御してイジングモデルの基底状態探索を行うイジングチップ制御プログラム２２２を格納している。メモリ２２０に格納されたプログラムはＣＰＵ２１０によって実行される。ＨＤＤ２３０は、所望の最適化問題を表す問題データ２３１を格納している。ＣＰＵ２１０はシステムバス２４０を介してイジングチップ１００を制御し、またイジングチップ内のスピンアレイへのデータの読み書きを行う。【００３１】
図３は、スピンアレイ１１０の基本構成単位であるスピンユニット３００を複数個並べることで、３次元格子状のトポロジを持つイジングモデルを構成する例を示している。図３の例は、３（Ｘ軸方向）×３（Ｙ軸方向）×２（Ｚ軸方向）の大きさの３次元格子である。３次元格子のサイズは任意であるが、本実施例ではＺ方向のスピン数を２とした場合を想定した構成を説明する。座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、図面奥行き方向をＺ軸としているが、この座標軸は実施例の説明上便宜的に必要なだけであり、発明とは関係しない。３次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図３の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数５のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数６が必要となる。【００３２】
図３に示す１個のスピンユニット３００は隣接するスピン（例えば隣接するスピンが５個の場合）σj，σｋ，σｌ，σｍ，σｎの値が入力される。また、スピンユニット３００はスピンσｉと外部磁場係数ｈｉに加え、前記した隣接するスピンとの相互作用係数であるＪj,i，Ｊk,i，Ｊl,i，Ｊm,i，Ｊn,i（隣接する５スピンとの相互作用係数）を保持するメモリセルを有している。【００３３】
統計力学で用いられるイジングモデルは一般的に無向グラフで表現される相互作用を有している。前記した数１では、相互作用を表わす項として、Ｊi,j×σｉ×σｊがあるが、これはｉ番目スピンからｊ番目スピンへの相互作用を示している。この時、一般的なイジングモデルではｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。つまり、Ｊi,jとＪj,iは同一である。しかし、本発明のイジングチップ１００では、このイジングモデルを有向グラフに拡張し、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。【００３４】
そのため、１個のスピンユニット３００をｉ番目スピンσｉと考えた時に、このスピンユニットが保持する相互作用係数であるＪj,i，Ｊk,i，Ｊl,i，Ｊm,i，Ｊn,iは、隣接するｊ番目、ｋ番目、ｌ番目、ｍ番目、ｎ番目のスピンσj，σｋ，σｌ，σｍ，σｎから、ｉ番目スピンσｉへの相互作用を決めるものである。このことは、図３において、スピンユニット３００に含まれている相互作用係数が対応する矢印（相互作用）が、図示されているスピンユニット３００の外部のスピンから、スピンユニット３００の内部のスピンに向かっていることに対応している。【００３５】
以下、図４、図５、図６を用いてスピンアレイ１１０の構成を説明する。説明の便宜上、３枚の図面に分けて構成を図示しているが、前述の通りスピンアレイ１１０はＳＲＡＭとしての機能と相互作用を行う回路としての機能を併せ持つものであり、実際には全ての構成要素を同時に含んでいる。【００３６】
図４にＳＲＡＭとしての動作に着目したスピンアレイ１１０の構成を示す。スピンアレイ１１０は半導体基板上の平面上に配列された多数のスピンユニット３００を含んでいる。図４に示した各スピンユニット３００には、図３に示したイジングモデルのトポロジに対応する座標が記載されている。例えば、“Ｎ０２１”はＸ座標が０、Ｙ座標が２、Ｚ座標が１に対応するスピンユニットであることを意味する。図３に示したとおり、イジングモデルのトポロジは３次元格子状であるが、半導体装置として実現する際には平面上に並んでいる方が容易に製造できる。そこで、本実施例では、スピンアレイのＸ方向にＺ＝０とＺ＝１のスピンユニットが交互に並ぶような配置としている。【００３７】
各スピンユニット３００はＩ／Ｏアドレスデコーダ１３０とワード線４０１を介して接続されている。各スピンユニット３００は、スピンの値と相互作用係数と外部磁場係数を保持する１３個のメモリセルを含んでいるため、１つのスピンユニット３００に対して１３ビットのワード線を接続している。なお、単一のスピンユニット３００の構成の詳細については後述する。また、各スピンユニット３００はＩ／Ｏドライバ１２０と１ビットのビット線４０２を介して接続されている。【００３８】
図５に相互作用回路としての動作に着目したスピンアレイ１１０の構成を示す。各スピンユニット３００は相互作用を行うために、３次元格子状のトポロジにおいて隣接するスピンユニットとの間でスピンの値を入出力するための接続を有する。図５は太線で示したスピンユニット（Ｎｘｙｚ）に注目し、Ｎｘｙｚに関する接続のみを図示したものである。ＮＵ、ＮＬ、ＮＲ、ＮＤ、ＮＦは隣接するスピンユニットから入力されるスピン値を表している。スピンユニット（Ｎｘｙｚ）に対して、それぞれＮＵはＹ座標が１小さい（上側）スピンユニットから、ＮＬはＸ座標が１小さい（左側）スピンユニットから、ＮＲはＸ座標が１大きい（右側）スピンユニットから、ＮＤはＹ座標が１大きい（下側）スピンユニットから、ＮＦはＺ座標が異なる（奥行き側）スピンユニットからの入力を意味する。本実施例では、イジングモデルのＺ方向のスピン数を２としているため、Ｚ方向の接続は１本で済む。一方、Ｎはスピンユニットから出力される値を示しており、同じ値が上下左右および奥行き側のスピンユニットへ出力される。【００３９】
図５に示したスピンユニット３００間の接続に基づき、スピン間の相互作用によるエネルギー最小化とするイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。そのため、局所最適解から脱出して大域最適解に到達させるための手段として、図６に乱数発生器１５０、ビット調整器１５１の出力したランダムビット列を伝播させる経路に着目したスピンアレイ１１０の構成を示す。ビット調整器１５１は１ビット幅のランダムビットを生成し、例えば、スピンアレイ１１０の左上隅のスピンユニットに入力する。各スピンユニットは、バッファを用いて、入力されたランダムビットの論理レベルを維持したまま隣接するスピンユニットへ出力する。このようにして、入力されたランダムビットは、図６に示すような一筆書き状の経路を通って全てのスピンユニットへ伝播する。ランダムビットの伝播は非同期に行われ、ビット調整器の出力したランダムビットが各スピンユニット３００に到達するまでの遅延は、ビット調整器から当該スピンユニットに到達するまでに通過するスピンユニットの数によって長くなる。【００４０】
図７にランダムなビット列がスピンユニット３００を伝播していく様子を示す。図７のＶＡＲはビット調整器１５１の出力するランダムビットを表す。Ｎ０００、Ｎ００１、Ｎ１００、Ｎ１０１はそれぞれのスピンユニット３００に入力されるランダムビットを表す。ビット調整器１５１は、乱数クロック幅で記載された時間間隔ごとに新しいランダムビットを出力する。Ｎ０００にはＶＡＲよりも少し遅れのあるランダムビットが入力され、Ｎ００１はＮ０００よりもさらに少し遅れのあるランダムビットが入力される。【００４１】
一方、各スピンユニット３００での相互作用は、相互作用クロック幅で記載された時間間隔ごとに行われ、▲で示されるタイミングで相互作用が行われる。各スピンユニットは、相互作用が行われる時点で自身に到達しているランダムビットを取り込んで相互作用計算に用いる。なお、乱数クロック幅と相互作用クロック幅は必ずしも同じである必要はなく、独立に設定して良い。【００４２】
図８、図９を用いてスピンユニット３００の構成を説明する。説明の便宜上２枚の図面に分けて図示しているが、実際にはひとつのスピンユニット３００は全ての要素を同時に含んでいる。【００４３】
図８にＳＲＡＭとしての動作に着目した際のスピンユニット３００の構成を示す。スピンユニット３００はスピンの値を保持するメモリ７０１と、外部磁場係数および相互作用係数を保持するメモリ７０２とを含む。メモリ７０２は以下のような係数情報を保持する。ＩＳ０及びＩＳ１はこのスピンの外部磁場係数を保持する。ＩＵ０及びＩＵ１は、このスピンの上側に隣接するスピンから受ける相互作用係数を保持する。ＩＬ０及びＩＬ１は、このスピンの左側に隣接するスピンから受ける相互作用係数を保持する。ＩＲ０及びＩＲ１は、このスピンの右側に隣接するスピンから受ける相互作用係数を保持する。ＩＤ０及びＩＤ１は、このスピンの下側に隣接するスピンから受ける相互作用係数を保持する。ＩＦ０及びＩＦ１は、このスピンの奥行き方向に隣接するスピンから受ける相互作用係数を保持するメモリである。
Ｉ／Ｏアドレスデコーダ１３０が出力したアドレス信号がワード線４０１を介して各メモリに入力され、メモリセルが選択される。Ｉ／Ｏドライバ１２０はビット線４０２を介して選択されたメモリセルのデータを読み出し、またはメモリセルへデータを書き込む。【００４４】
図９に相互作用回路としての動作に着目した際のスピンユニット３００の構成を示す。
スピンユニット３００は、イジングモデルのスピンσｉ、相互作用係数Ｊj,i、……Ｊn,iおよび、外部磁場係数ｈｉを保持するために、１ビットのメモリセルを複数個備えている。この１ビットのメモリセルは図中に、Ｎ（７０１）、ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１（７０２）として図示されているものである。なお、ＩＳ０とＩＳ１、ＩＵ０とＩＵ１、ＩＬ０とＩＬ１、ＩＲ０とＩＲ１、ＩＤ０とＩＤ１、および、ＩＦ０とＩＦ１はそれぞれ２個１組で役割を果たすものであるため、それぞれまとめてＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，および、ＩＦｘと略記する。【００４５】
メモリセルＮはスピンσｉを表現するためのメモリセルでありスピンの値を保持する。スピンの値はイジングモデルでは＋１／−１（＋１を上、−１を下とも表現する）であるが、これをメモリセルの２値である０／１に対応させる。例えば、＋１を１、−１を０に対応させる。【００４６】
図１７を用いて、スピンユニット３００が有するメモリセルと、図３に示したイジングモデルのトポロジとの対応関係を示す。ＩＳｘは外部磁場係数を表現する。また、ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘはそれぞれ相互作用係数を表現する。ＩＵｘは上側のスピン（Ｙ軸方向で−１）、ＩＬｘは左側のスピン（Ｘ軸方向で−１）、ＩＲｘは右側のスピン（Ｘ軸方向で＋１）、ＩＤｘは下側のスピン（Ｙ軸方向で＋１）、ＩＦｘは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）との相互作用係数を示している。【００４７】
本実施例のイジングチップ１００では、外部磁場係数、及び、相互作用係数として＋１／０／−１の３値に対応する。そのため、外部磁場係数、および、相互作用係数を表わすためには、それぞれ２ビットのメモリセルが必要となる。ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘは、末尾の数字が０と１の２つのメモリセル（例えばＩＳｘの場合にはＩＳ０とＩＳ１）の組合せで、＋１／０／−１の３値を表現する。例えば、ＩＳｘの場合には、ＩＳ１で＋１／−１を表現し、ＩＳ１が１の時は＋１，０の時には−１を表現する。これに加えて、ＩＳ０が０の時には外部磁場係数を０と見なし、ＩＳ０が１の時にはＩＳ１で決まる＋１／−１のいずれかを外部磁場係数とする。外部磁場係数が０の時は外部磁場係数をディセーブルしていると考えれば、ＩＳ０は外部磁場係数のイネーブルビットであると言うことができる（ＩＳ０＝１の時に、外部磁場係数がイネーブルされる）。相互作用係数を表現するＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘも同様に係数とビットの値を対応させている。【００４８】
スピンユニット３００は、図９に示す通り、隣接スピンユニットのスピン値８３０と相互作用係数、外部磁場係数７０２をもとに、スピンの次状態を決定するための相互作用回路８１０を有する。相互作用回路８１０は、隣接スピンからの影響を計算する論理演算素子と、各隣接スピンからの影響を合算して最終的なスピンの値を決定する多数決論理からなる。相互作用回路８１０は、局所的なエネルギーを最小化するように、次の自身がとるべきスピンの値(スピンの次状態)を求める。【００４９】
スピンユニット３００では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を見た時に、正の値と負の値のどちらが支配的か判断することと等価である。例えば、ｉ番目スピンσｉに、スピンσj，σｋ，σｌ，σｍ，σｎが隣接しているとして、スピンσｉの次状態は以下のように決まる。まず、隣接スピンの値はσj＝＋１，σｋ＝−１，σｌ＝＋１，σｍ＝−１，σｎ＝＋１とし、相互作用係数はＪj,i＝＋１，Ｊk,i＝＋１，Ｊl,i＝＋１，Ｊm,i＝−１，Ｊn,i＝−１、外部磁場係数ｈｉ＝＋１とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σj×Ｊj,i＝＋１，σｋ×Ｊk,i＝−１，σｌ×Ｊl,i＝＋１，σｍ×Ｊm,i＝＋１，σｎ×Ｊn,i＝−１，ｈｉ＝＋１となる。外部磁場係数は、常に値が＋１のスピンとの相互作用係数と読み替えて良い。【００５０】
ここで、ｉ番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれｉ番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、ｊ番目スピンとの間での局所的なエネルギーは、ｉ番目スピンを＋１とした時には−１、ｉ番目スピンを−１としたときには＋１となるので、ｉ番目スピンを＋１にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えた時に、ｉ番目スピンを＋１／−１のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べたものにおいて、＋１と−１のどちらが多いか数えれば良い。先程の例では、＋１が４個、−１が２個である。仮に、ｉ番目スピンを＋１とするとエネルギーの総和は−２、ｉ番目スピンを−１とするとエネルギーの総和は＋２になる。よって、＋１の個数が多い時にはｉ番目スピンの次状態を＋１とし、−１の個数が多い時にはｉ番目スピンの次状態を−１にするという多数決で、エネルギーを最小化するｉ番目スピンの次状態を決定することが出来る。【００５１】
図９のスピンユニット３００に図示する論理回路は前記した相互作用を行うための回路である。まず、隣接スピンの状態と相互作用係数の＋１／−１を示すメモリセルとの排他的論理和の否定（ＸＮＯＲ）で、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる（＋１は１、−１は０にエンコードされているものとする）。もし、相互作用係数が＋１／−１だけであれば、この出力のうち＋１／−１のどちらが多いか多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態＋１のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理に入力すべき値となる。【００５２】
次に、係数０の実現方法について考える。ｎ入力の多数決論理ｆ（Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎ）があるとき、以下の命題は真であると言える。まず、入力Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎの複製Ｉ’１，Ｉ’２，Ｉ’３，・・・・，Ｉ’ｎがあるとする（任意のｋについて、Ｉｋ＝Ｉ’ｋである）。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ）の出力は、複製もあわせて入力したｆ（Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎ，Ｉ’１，Ｉ’２，Ｉ’３，・・・・，Ｉ’ｎ）と等しい。つまり、各入力変数をそれぞれ２個ずつ入れても、出力は不変である。さらに、入力Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎの他に、もう一つの入力Ｉｘと、その反転！Ｉｘがあるとする。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎ，Ｉｘ，！Ｉｘ）の出力は、ｆ（Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎ）と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数０を実現する。具体的には、図9に示すように、ＸＯＲを利用して、係数のイネーブルを決めるビット（ＩＳ０など）の値により、多数決論理に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、ＩＳ０が０の場合、ＩＳ１の値と、ＩＳ１の反転の値が同時に多数決論理に入力されるので、外部磁場係数の影響は無い（外部磁場係数が０に相当する）ことになる。また、ＩＳ０が１の場合には、ＩＳ１の値と、その値と同じ値（複製）が同時に多数決論理に入力されることになる。【００５３】
イジングモデルの基底状態探索を実現するためには、イジングモデル全体のエネルギーがより低いスピン配列になるように遷移していくように、スピン間の相互作用を実現しなければならない。このための相互作用は、以上に説明した図９に示す相互作用回路８１０により、与えられた相互作用係数と外部磁場係数に基づいて行われる。つまり、あるスピンの次の値を、そのスピンに接続されている他のスピンからの相互作用と、そのスピンが持つ相互作用係数、外部磁場係数から決定する。このとき、スピンの次の値は、そのスピンが接続されている範囲内での局所的なエネルギーを最小化するような値になる。【００５４】
このスピンの更新は、それぞれのスピンを１個ずつ逐次的に更新することがまず考えられるが、この方法ではスピン数に比例した時間がかかってしまい、並列性を利用することが出来ない。そこで、スピン間の相互作用を全てのスピンについて同時並行的に行うことが望ましい。【００５５】
しかし、全てのスピンを同時に更新しようとすると、あるスピンを更新するときに、隣接スピンの値を見て、隣接スピンとの間でエネルギーを最小化するようにスピンを更新するので、それと同時に隣接スピンの値を更新すると、両方の更新が重複してしまい、エネルギーを最小化できず振動してしまう。すなわち、あるスピンを更新するときに、そのスピンに接続されているスピン（あるスピンに相互作用係数を介して直接接続されているスピンをこれ以降隣接スピンと呼ぶ）を同時に更新することはできない。【００５６】
そこで、本実施例では隣接スピンは同時に更新しないように、スピンアレイ１１０内のスピンユニット３００をグループ分けして、一度に同時に更新するのは１つのグループだけにする。図３に示すようなトポロジであれば、２グループに分ければ良い。そして、この２グループを交互に更新していくわけである。あるタイミングで更新するグループを指示するために、イジングチップ１００は相互作用アドレス１８０を入力インタフェースとして有する。相互作用アドレス１８０は前述したグループのうち、更新するグループを指定するためのインタフェースであり、相互作用クロック１８１の入力によって、相互作用アドレス１８０で指定されるグループに属するスピン（スピンユニット３００）が同時に更新される。【００５７】
この方法であれば、スピンユニット３００内に追加のハードウェアは必要なく、イジングチップ１００全体に対して一組の相互作用アドレスデコーダ１４０を設けるだけで良い。そのため、構成単位であるスピンユニット３００を複雑化することなく、前記の問題が解決できる。【００５８】
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、図９に示す様に、ランダムビットＶＡＲを入力として前記相互作用回路８１０が計算した直後の次のスピンの値を反転させる反転論理８２０をスピンユニット３００内に設けることで、スピン配列をランダムに変化させる。【００５９】
ランダムビットは、図６に示す乱数発生器１５０、およびビット調整器１５１より乱数クロック幅の時間間隔で生成され、図９のランダムビット線８２２を介して伝搬される。
バッファ８２１はランダムビット線８２２を通して前の隣接スピンユニットからのランダムビットを入力し、ランダムビット線８２２を通して同じビット値を次の隣接スピンユニットへ出力する。
反転論理８２０は、相互作用回路８１０の出力結果と、ランダムビット線８２２のランダムビットを入力し、ランダムビットが０なら相互作用回路８１０の出力結果をそのままメモリ７０１に書き込み、ランダムビットが１なら相互作用回路８１０の出力結果を反転した値をメモリ７０１に書きこむ。反転論理８２０により、局所的なエネルギーが増加する方向へスピンの値が変動しうるため、局所解から脱出することが可能となる。【００６０】
図１０にビット調整器１５１の構成を示す。乱数発生器１５０はｎビット幅の偏りのない乱数１５２を出力する。ここで偏りのないとは、十分多くの乱数を発生したとき、発生した乱数の各ビットについて、“０”と“１”の発生確率が等しいことを意味する。
ビット調整器１５１はビット選択部９０１とＡＮＤ回路９０２とＯＲ回路９０３とＡＮＤ／ＯＲ選択部９０４およびメモリ９１０を備える。メモリ９１０は演算ビット数９１１および、ＡＮＤ／ＯＲ選択用ビット９１２をそれぞれ格納している。ビット調整器１５１は乱数発生器１５０の生成したｎビットの乱数を入力し、ビット選択部９０１に入力する。ビット選択部９０１は入力されたｎビットの乱数のうち、演算ビット数９１１で示されるｍビットだけを取り出して、ＡＮＤ回路９０２およびＯＲ回路９０３に入力する。ＡＮＤ回路９０２は入力されたｍビットの値の各ビットのＡＮＤをとり、結果として得られた１ビットの値を出力する。ＯＲ回路９０３も同様に、ｍビットの値の各ビットのＯＲをとり、結果として得られた１ビットの値を出力する。ＡＮＤ／ＯＲ選択部９０４は、ＡＮＤ／ＯＲ選択用ビット９１２の値に基づいて、ＡＮＤ回路９０２またはＯＲ回路９０３の出力のいずれか一つを選択し、ビット調整器１５１全体の出力１５３とする。【００６１】
ビット調整器１５１は演算ビット数９１１及びＡＮＤ／ＯＲ選択ビット９１２の値を変えることにより、出力ビット列中に“１”が出現する確率を制御することができる。なお、以下ではビット列中に“１”が出現する確率を単にビット確率と呼ぶ。ビット調整器１５１の出力するビット確率は、以下の数２、数３で与えられる。【００６２】
【数２】
2016006071.tif 000004
【００６３】
【数３】
2016006071.tif 000005
【００６４】
数２、数３において、Ｐはビット確率を表し、ｍは演算の対象となるビット数を表す。数２はＡＮＤ演算を選択した場合のビット確率を表している。数３はＯＲ演算を選択した場合のビット確率を表している。【００６５】
図１１に、イジングチップ１００を用いて最適化問題を解く際のフローチャートの一例を示す。このフローは図２に示した情報処理システム２５０上で実行する。
ステップＳ１０１では、ＣＰＵ２１０が問題変換プログラム２２１を実行し、解きたい最適化問題をイジングモデルに変換する。その結果得られた相互作用係数および外部磁場係数を、イジングチップ制御プログラム２２２を用いてイジングチップ１００のスピンユニット３００の該当メモリセル７０２に書き込む。
ステップＳ１０２では、ＣＰＵ２１０がイジングチップ制御プログラム２２２を実行し(以後の各ステップはイジングチップ制御プログラム２２２の実行により実現される)、各スピンユニット３００のスピン７０１の値を設定する。スピンの値は例えば、ランダムな値を書き込む。予め決められた値を書き込んでもよい。【００６６】
ステップＳ１０３では、ＣＰＵがビット調整器１５１の出力する乱数ビットのビット確率の初期値(初期値は、ビット確率が高い値となるように、演算ビット数９１１とＡＮＤ／ＯＲ選択用ビット９１２をメモリ９１０に格納する)を設定し、イジングチップ内のビット調整器１５１に設定値を反映する。
ステップＳ１０４では、ＣＰＵが現在のビット確率設定における相互作用の継続回数を設定する。
ステップＳ１０５では、ＣＰＵがイジングチップ１００に相互作用の実行を指示し、イジングチップが１回の相互作用を行い、スピンの値を更新する。また、同時にＣＰＵが相互作用の実行回数をインクリメントする。【００６７】
ステップＳ１０６では、ＣＰＵが、相互作用の実行回数がステップＳ１０４で設定した回数を実行したかどうか判定する。もし設定回数を実行していなければステップＳ１０５に戻り、設定回数を実行していればステップＳ１０７に進む。
ステップＳ１０７では、ＣＰＵが、現在のビット確率設定が終了閾値(順次、ビット確率を下げながら、設定回数の相互作用を実行して行き、スピン配列が大域最適解に許容誤差内で到達したと見なせるビット確率の最終下限値)を下回っているかどうか判定する。終了閾値を下回っていればステップＳ１１０に進み、そうでなければステップＳ１０８に進む。
ステップＳ１０８では、ＣＰＵが、ビット確率を現在よりも低い値に更新し、更新したビット確率のランダムビットを生成する演算ビット数９１１とＡＮＤ／ＯＲ選択用ビット９１２の設定値を選択して、イジングチップ内のビット調整器１５１に新しい設定値を反映する。【００６８】
ステップＳ１０９では、ＣＰＵが、更新したビット確率での相互作用の継続回数を設定する。また、相互作用の実行回数を０にリセットする。なお、ここで設定する継続回数は、ステップＳ１０４で定めた継続回数と同じであってもよいし、必要に応じて増減させてもよい。ステップＳ１０９が終了したら、ステップＳ１０５に戻る。
ステップＳ１１０では、ＣＰＵが、イジングチップ制御プログラム２２２により、イジングチップ１００からスピン配列の値を読み出す。そして、ＣＰＵが、問題変換プログラム２２１により読み出したスピン配列の値を解きたい最適化問題の解に変換し、ユーザに提示する。【００６９】
図１２に、図１１のフローチャートに従ってイジングモデルの基底状態探索を行う際に、順次変化させて設定するビット確率および、相互作用継続回数の一例を示す。探索開始直後は、最初はＯＲ演算を用いて高いビット確率に設定する。これにより、スピンの値が頻繁に反転するため、局所解を避け易くなる。探索が進むにつれて、徐々にビット確率を下げることで一つの解に収束させる。
図１１のステップＳ１０３でビット確率の初期値を設定する際には、例えば図１２の表の一番上の行にあるように、ＯＲ演算を選択し、演算対象のビット数を３ビットとする。この設定で、相互作用を１００回行う。その後、ステップＳ１０８とステップＳ１０９でビット確率と相互作用回数を更新設定する際には、図１２の表の次の行に進む。すなわち、ＯＲ演算を選択し、演算対象のビット数を２ビットとし、相互作用回数を１１０回に設定する。同様にして、ステップＳ１０８とステップＳ１０９を実行するごとに図１２の表の次の行へ設定値を進めていき、最後の行の設定値での相互作用を終えた時点で基底状態探索を終了する。このように、ビット確率を下げつつ、相互作用回数を伸ばしていくことで、より良い解を得易くなる。
【実施例２】
【００７０】
実施例１で説明したように、ランダムビットは各スピンユニット３００を非同期に伝播する。一般に、バッファ８２１による遅延は小さいため、スピンアレイ１１０上で隣接するスピンユニット３００に同じランダムビットが入力される状況が発生しうる。特に、乱数発生器１５０の動作クロック１６０が遅い場合にはこの傾向が顕著になり、多数のスピンユニット３００に亘って同じランダムビットが入力されることになる。このような状況では、隣接スピンユニット同士で反転論理の挙動が揃ってしまうため、局所解を脱出する能力が低下する可能性がある。【００７１】
実施例２では、上記の問題を軽減し、各スピンユニットにより高いランダム性を供給できる構成について説明する。実施例１と比較して、図６に示したランダムビットの伝播経路と、図９に示したスピンユニット３００の内部に相違があるため、その点に絞って説明する。その他の点については実施例１と共通であるため、説明を省略する。
図１３に、実施例２におけるランダムビットの伝播経路を示す。本実施例におけるイジングチップは、乱数発生器１５０とビット調整器１５１がそれぞれ２つずつ備わっている。乱数発生器１５０−１とビット調整器１５１−１から出力されるランダムビットは、スピンユニットＮ０００に入力され、右方向へと出力される。チップ全体では実線の矢印で示した一筆書き状の経路に沿ってランダムビットが伝播していく。一方、乱数発生器１５０−２とビット調整器１５１−２から出力されるランダムビットは、スピンユニットＮ０００に入力され、下方向に出力される。チップ全体では、破線の矢印で示した一筆書き状の経路に沿ってランダムビットが伝播していく。すなわち、各スピンユニットには、２つの異なるランダムビットが入力される構成となっている。【００７２】
図１４に、実施例２におけるスピンユニット３００の構成を示す。スピン７０１及び相互作用係数、外部磁場係数を保持するメモリ７０２と、相互作用回路８１０と反転論理８２０を備える点は実施例１と同様である。本実施例では、各スピンユニット３００は隣接セルからのランダムビットを伝播させるランダムビット線８２２を２本備える。ランダムビット線８２２−１とランダムビット線８２２−２を通るランダムビットはＡＮＤゲート１４１０に入力され、ＡＮＤゲート１４１０の出力が反転論理８２０に入力される。すなわち、スピンユニット３００に入力される２系統のランダムビットの両方が“１”であるときのみ反転論理８２０によってスピンの値が反転される。【００７３】
伝播経路の異なる２つのランダムビットを組み合わせることで、乱数発生回路の動作クロックが十分に高速でない場合であっても、隣接スピン同士で反転論理の挙動が揃ってしまう現象を軽減できる。イジングモデルの基底状態探索においては、ランダムビットを１本から２本に増やすことで最終的に得られる解の精度が５〜４０％向上することが期待できる。
【実施例３】
【００７４】
実施例１で説明したように、ランダムビットは各スピンユニットを非同期に伝播していくため、１スピンユニットを伝播する遅延は小さい。しかし、スピンアレイが非常に多くのスピンユニットを搭載する場合には、ビット調整器から入力されたランダムビットが終端のスピンユニットに到達するまでの時間も長くなる。一方、イジングモデルの基底状態探索を行う過程において、時間の経過とともにビット確率を下げていく必要がある。このとき、ビット確率を切り替えるタイミングにおいて、ビット調整器に近いスピンユニットはビット確率が低く、遠いスピンユニットはビット確率が高いままといったようなビット確率のむらが生じる。このようなビット確率のむらが基底状態探索の精度に悪影響を与える可能性がある。【００７５】
実施例３では上記の問題を軽減し、多数のスピンユニットを含む場合でもビット確率のむらを抑える構成について説明する。実施例１と比較して、図６に示したランダムビットの伝播経路に相違があるため、その点に絞って説明する。その他の点については共通であるため説明を省略する。【００７６】
図１５に、実施例３におけるランダムビットの伝播経路を示す。スピンアレイ１１０、複数のブロック１５００に分割される。ブロック１５００は複数のスピンユニット３００を含む。ビット調整器１５１から出力されたランダムビットは、ブロック１５００−１〜４の４つのブロックの先頭のスピンユニットに分配されて入力される。各ブロック１５００内部では、実施例１に示したように一筆書き状の経路でランダムビットを伝播させる。【００７７】
このような構成をとることによって、ひとつのランダムビットの伝播経路が実質的に短くなるため、スピンアレイ内部でのビット確率のむらを低減することができる。
【実施例４】
【００７８】
図１６に実施例４におけるランダムビットの伝播経路を示す。その他の部分は実施例１と共通であるため、説明を省略する。ビット調整器１５１から出力されたランダムビットは、図１６中の矢印で示されるツリー状の経路に沿って各スピンユニットに伝播する。このような構成をとることによって、スピンアレイ中でのランダムビットの到達時間のむらを大幅に低減することができる。
【符号の説明】
【００７９】
１００  イジングチップ
１１０  スピンアレイ
１２０  Ｉ／Ｏドライバ
１３０  Ｉ／Ｏアドレスデコーダ
１４０  相互作用アドレスデコーダ
１５０  乱数発生器
１５１  ビット調整器
１５２  乱数発生器１５０の出力した乱数
１５３  １ビットのランダムなビット
１６０  乱数発生クロック
１８０  相互作用アドレス
１８１  相互作用クロック
１９０  アドレスバス
１９１  データバス
１９２  Ｉ／Ｏクロック
１９３  Ｒ／Ｗ制御線
２００  ホストコンピュータ
２１０  ＣＰＵ
２２０  メモリ
２２１  問題変換プログラム
２２２  イジングチップ制御プログラム
２３０  ＨＤＤ
２４０  システムバス
２５０  情報処理システム
３００  スピンユニット
４０１  ワード線
４０２  ビット線
７０１  スピンの値を保持するメモリ
７０２  外部磁場係数および相互作用係数を保持するメモリ
８１０  相互作用回路
８２０  反転論理
８２１  バッファ
８２２  ランダムビット線
８３０  隣接スピンユニットのスピン値
９０１  ビット選択部
９０２  ＡＮＤ回路
９０３  ＯＲ回路
９０４  ＡＮＤ／ＯＲ選択部
９１０  メモリ
９１１  演算ビット数
９１２  ＡＮＤ／ＯＲ選択用ビット
１４１０  ＡＮＤゲート
１５００  ブロック
【図１】
2016006071.tif 000006
【図２】
2016006071.tif 000007
【図３】
2016006071.tif 000008
【図４】
2016006071.tif 000009
【図５】
2016006071.tif 000010
【図６】
2016006071.tif 000011
【図７】
2016006071.tif 000012
【図８】
2016006071.tif 000013
【図９】
2016006071.tif 000014
【図１０】
2016006071.tif 000015
【図１１】
2016006071.tif 000016
【図１２】
2016006071.tif 000017
【図１３】
2016006071.tif 000018
【図１４】
2016006071.tif 000019
【図１５】
2016006071.tif 000020
【図１６】
2016006071.tif 000021
【図１７】
2016006071.tif 000022
【手続補正書】
【提出日】平成28年12月26日(2016.12.26)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
次に、係数０の実現方法について考える。ｎ入力の多数決論理ｆ（Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎ）があるとき、以下の命題は真であると言える。まず、入力Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎの複製Ｉ’１，Ｉ’２，Ｉ’３，・・・・，Ｉ’ｎがあるとする（任意のｋについて、Ｉｋ＝Ｉ’ｋである）。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ）の出力は、複製もあわせて入力したｆ（Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎ，Ｉ’１，Ｉ’２，Ｉ’３，・・・・，Ｉ’ｎ）と等しい。つまり、各入力変数をそれぞれ２個ずつ入れても、出力は不変である。さらに、入力Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎの他に、もう一つの入力Ｉｘと、その反転！Ｉｘがあるとする。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎ，Ｉｘ，！Ｉｘ）の出力は、ｆ（Ｉ１，Ｉ２，Ｉ３，・・・・，Ｉｎ）と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数０を実現する。具体的には、図9に示すように、ＸＯＲを利用して、係数のイネーブルを決めるビット（ＩＳ０など）の値により、多数決論理に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、ＩＳ０が０の場合、ＩＳ１の値と、ＩＳ１の反転の値が同時に多数決論理に入力されるので、外部磁場係数の影響は無い（外部磁場係数が０に相当する）ことになる。また、ＩＳ０が１の場合には、ＩＳ１の値と、その値と同じ値（複製）が同時に多数決論理に入力されることになる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
図１１に、イジングチップ１００を用いて最適化問題を解く際のフローチャートの一例を示す。このフローは図２に示した情報処理システム２５０上で実行する。
ステップＳ１０１では、ＣＰＵ２１０が問題変換プログラム２２１を実行し、解きたい最適化問題をイジングモデルに変換する。その結果得られた相互作用係数および外部磁場係数を、イジングチップ制御プログラム２２２を用いてイジングチップ１００のスピンユニット３００の該当メモリセル７０２に書き込む。
ステップＳ１０２では、ＣＰＵ２１０がイジングチップ制御プログラム２２２を実行し(以後の各ステップはイジングチップ制御プログラム２２２の実行により実現される)、各スピンユニット３００のメモリ７０１の値(スピン)を設定する。スピンの値は例えば、ランダムな値を書き込む。予め決められた値を書き込んでもよい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
実施例１で説明したように、ランダムビットは各スピンユニット３００を非同期に伝播する。一般に、バッファ８２１による遅延は小さいため、スピンアレイ１１０上で隣接するスピンユニット３００に同じランダムビットが入力される状況が発生しうる。特に、乱数発生器１５０の乱数発生クロック１６０が遅い場合にはこの傾向が顕著になり、多数のスピンユニット３００に亘って同じランダムビットが入力されることになる。このような状況では、隣接スピンユニット同士で反転論理の挙動が揃ってしまうため、局所解を脱出する能力が低下する可能性がある。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００７２
【補正方法】変更
【補正の内容】
【００７２】
図１４に、実施例２におけるスピンユニット３００の構成を示す。スピンを保持するメモリ７０１及び相互作用係数、外部磁場係数を保持するメモリ７０２と、相互作用回路８１０と反転論理８２０を備える点は実施例１と同様である。本実施例では、各スピンユニット３００は隣接セルからのランダムビットを伝播させるランダムビット線８２２を２本備える。ランダムビット線８２２−１とランダムビット線８２２−２を通るランダムビットはＡＮＤゲート１４１０に入力され、ＡＮＤゲート１４１０の出力が反転論理８２０に入力される。すなわち、スピンユニット３００に入力される２系統のランダムビットの両方が“１”であるときのみ反転論理８２０によってスピンの値が反転される。
【国際調査報告】
2016006071.tif 000023
2016006071.tif 000024