(57)【要約】【課題】  制約条件を含むイジングモデルの基底状態探索を、効率よく実現可能な技術を提案しようとするものである。【課題を解決するための手段】  ユニットを複数備える半導体装置である。ユニットのそれぞれは、自ユニットの値を記憶する第１のメモリと、入力される他ユニットの値に対する係数を記憶する第２のメモリと、自ユニットの値がイジングモデルの１つのスピンの状態を示す値か否かを識別するフラグ値を記憶する第３のメモリとを備える。また、ユニットのそれぞれは、他ユニットの値および係数に基づいて、自ユニットの値の更新値を決定する第１の演算回路と、フラグ値に基づいて、更新値を第１のメモリに記録するタイミングを決定する第２の演算回路と、を備える。【選択図】  図３
2019179364.tif 000002
【特許請求の範囲】
【請求項１】
ユニットを複数備える半導体装置であって、
前記ユニットのそれぞれは、
自ユニットの値を記憶する第１のメモリと、
入力される他ユニットの値に対する係数を記憶する、第２のメモリと、
前記自ユニットの値がイジングモデルの１つのスピンの状態を示す値か否かを識別するフラグ値を記憶する、第３のメモリと、
前記他ユニットの値および前記係数に基づいて、前記自ユニットの値の更新値を決定する第１の演算回路と、
前記フラグ値に基づいて、前記更新値を前記第１のメモリに記録するタイミングを決定する第２の演算回路と、を備える、
半導体装置。
【請求項２】
前記フラグ値は、
前記自ユニットの値がイジングモデルの１つのスピンの状態を示す値であって、自ユニットが通常スピンとして機能するか、
あるいは、
前記自ユニットの値がイジングモデルの制約条件の逸脱度を示す値であって、自ユニットが制約スピンとして機能するか、を識別する、
請求項１記載の半導体装置。
【請求項３】
自ユニットが前記通常スピンとして機能する場合、
前記第２のメモリには、前記イジングモデルに基づいた相互作用係数および外部磁場係数が記憶される、
請求項２記載の半導体装置。
【請求項４】
自ユニットが前記制約スピンとして機能する場合、
前記第２のメモリには、前記制約条件に基づいた制約条件係数が記憶される、
請求項３記載の半導体装置。
【請求項５】
自ユニットが前記制約スピンとして機能する場合、
入力される任意の数の他ユニットの値を、
σS1、σS2、σS3 ・・・
として、
前記制約条件を
ａσS1＋ｂσS2＋ｃσS3＋ ・・・＋Ｚ＜０
の不等式で規定した場合、
前記第２のメモリには、
自ユニットが通常スピンであった場合の相互作用係数に代えて、制約条件係数ａ、ｂ、ｃ、・・・が、
自ユニットが通常スピンであった場合の外部磁場係数に代えて、制約条件係数Ｚが、記憶される、
請求項４記載の半導体装置。
【請求項６】
自ユニットが前記通常スピンとして機能する場合であって、前記制約スピンとして機能する他ユニットの値が入力される場合には、
前記第２のメモリには、
前記他ユニットが通常スピンであった場合の相互作用係数に代えて、制約スピンとして機能する他ユニットの値に対する重みであるペナルティ係数が記憶される、
請求項４記載の半導体装置。
【請求項７】
前記第２のメモリは複数の係数を記憶し、該複数の係数は前記入力される他ユニットの値に一対一で対応し、
前記第１の演算回路は、
前記他ユニットの値と前記係数をそれぞれ積算する複数の乗算回路と、
前記複数の乗算回路の出力を加算する加算回路と、を備える、
請求項２記載の半導体装置。
【請求項８】
前記制約スピンとして機能するユニットの値が、前記通常スピンとして機能するユニットに入力されている場合、
前記第２の演算回路は、
一つの計算サイクルにおいて、前記通常スピンとして機能するユニットの更新値を第１のメモリに記録するタイミングが、前記制約スピンとして機能するユニットの更新値を第１のメモリに記録するタイミングより後になるように、タイミングを決定する、
請求項２記載の半導体装置。
【請求項９】
複数の前記ユニットを互いに入出力関係のない複数の任意の数のグループＧｒ１、Ｇｒ２、Ｇｒ３・・・に分け、前記ユニットのそれぞれは、自ユニットが属するグループを識別する識別情報を記憶する第４のメモリを備え、
前記制約スピンとして機能するユニットを、前記グループＧｒ１、Ｇｒ２、Ｇｒ３・・・の例外として制約グループとして分類したとき、
前記第２の演算回路は、
前記フラグ値と前記識別情報に基づいて、一つの計算サイクルにおいて、更新値を第１のメモリに記録するタイミングを、
制約グループ→グループＧｒ１→制約グループ→グループＧｒ２→制約グループ→グループＧｒ３→制約グループ→・・・
の順序で制御する、
請求項８記載の半導体装置。
【請求項１０】
前記第１のメモリ、前記第２のメモリ、および、前記第３のメモリをリードおよびライトするためのインタフェースを備える、
請求項１記載の半導体装置。
【請求項１１】
請求項１０記載の半導体装置と、
処理装置と、
記憶装置と、
を備えるシステムであって、
前記記憶装置は、問題データ、問題変換プログラム、および制御プログラムを記憶し、
前記処理装置は、前記問題変換プログラムを用いて、前記問題データをイジングモデル形式の問題に変換し、
前記処理装置は、前記制御プログラムを用いて、前記イジングモデル形式の問題に基づき、前記第２のメモリにデータを記録する、
情報処理システム。
【請求項１２】
前記処理装置は、
前記制御プログラムを用いて、前記第１のメモリに初期値データを記録し、前記更新値の前記第１のメモリへの複数回の記録の後に、前記第１のメモリから解答データを読み出す、
請求項１１記載の情報処理システム。
【請求項１３】
ユニットを複数備える半導体装置を用い、上位装置の制御により、前記半導体装置にイジングモデル形式の問題の少なくとも一部を解かせる情報処理方法であって、
前記ユニットのそれぞれは、
自ユニットの値を記憶する第１のメモリと、
入力される他ユニットの値に対する係数を記憶する、第２のメモリと、
前記自ユニットの値がイジングモデルの１つのスピンの状態を示す値か否かを識別するフラグ値を記憶する、第３のメモリと、
前記他ユニットの値および前記係数に基づいて、前記自ユニットの値の更新値を決定する第１の演算回路と、
前記フラグ値に基づいて、前記更新値を前記第１のメモリに記録するタイミングを決定する第２の演算回路と、を備え、
前記フラグ値は、
前記自ユニットの値がイジングモデルの１つのスピンの状態を示す値であって、自ユニットが通常スピンとして機能するか、
あるいは、
前記自ユニットの値がイジングモデルの制約条件の逸脱度を示す値であって、自ユニットが制約スピンとして機能するか、を識別し、
自ユニットが前記通常スピンとして機能する場合、
前記上位装置は、前記第２のメモリに、前記イジングモデルに基づいた相互作用係数および外部磁場係数を格納し、
自ユニットが前記制約スピンとして機能する場合、
前記上位装置は、前記第２のメモリに、前記制約条件に基づいた制約条件係数を格納する、
情報処理方法。
【請求項１４】
前記制約スピンとして機能するユニットの値が、前記通常スピンとして機能するユニットに入力されている場合、
前記第２の演算回路は、
一つの計算サイクルにおいて、前記通常スピンとして機能するユニットの更新値を第１のメモリに記録するタイミングが、前記制約スピンとして機能するユニットの更新値を第１のメモリに記録するタイミングより後になるように、タイミングを決定する、
請求項１３記載の情報処理方法。
【請求項１５】
前記制約条件が不等式制約である、
請求項１３記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、不等式制約を伴うイジングモデルの基底状態探索を行う半導体装置およびそれを用いた情報処理技術に適用して好適なものである。
【背景技術】
【０００２】
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは＋１／−１（ないしは、０／１、上／下）の２値をとるスピンと、スピン間の相互作用を示す相互作用係数と、スピン毎にある外部磁場係数とで定義される。
【０００３】
イジングモデルは与えられたスピン配列、相互作用係数、及び、外部磁場係数から、その時のエネルギーを計算することができる。イジングモデルのエネルギー関数は一般的に次式で表わされる。
【０００４】
【数１】
2019179364.tif 000003
……（１）
【０００５】
なお、σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値、Ｊｉ，ｊはｉ番目とｊ番目のスピンの間の相互作用係数、ｈｉはｉ番目のスピンに対する外部磁場係数、σはスピンの配列を表わすものとする。
【０００６】
（１）式において、第一項は、スピン間の相互作用に起因するエネルギーを計算するものである。一般的にイジングモデルは無向グラフとして表現され、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。そのため、第一項ではｉ＜ｊを満たすσｉ，σｊの組み合わせについて、相互作用係数の影響を計算している。また第二項は、各スピンに対する外部磁場に起因するエネルギーを計算するものである。
【０００７】
イジングモデルの基底状態探索とは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。相互作用係数及び外部磁場係数の値域に制限を付けないときには、トポロジが非平面グラフになるイジングモデルの基底状態を求めることはＮＰ困難問題であることが知られている。イジングモデルの基底状態探索は、元々イジングモデルが対象としていた磁性体の振る舞いを説明することのみならず、様々な用途に用いられている。
【０００８】
イジングモデルの基底状態を求めることは、上述のようにＮＰ困難問題であることから、イノマン型コンピュータで解くことは計算時間の面で困難を伴う。解くべき問題に対応した並列度を得るために、イジングモデルの場合では、基底状態を探索すべきイジングモデルのスピン数に対応して、それぞれ１つのスピンや、当該スピンにおける他のスピンとの相互作用を表現する素子（以下、これを単位素子と呼ぶ）が必要となる。
【０００９】
以上のことを考慮し、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの記憶装置に代表されるようなアレイ構造であり、かつ集積性を高められるように単位要素が単純な構造が提案されている（例えば特許文献１）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１６−５１３１３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、このような半導体装置を用いてＮＰ困難な組合せ最適化問題を解くことを考えると、解きたい問題を式（１）で表されるエネルギー関数の最小化問題に帰着する必要がある。一般に組合せ最適化問題は一部または全部の変数に制約条件が課されている場合が多い。制約条件は大別して等式制約と不等式制約の２種類があり、いずれもよく使われる。このうち特に不等式制約は多数の等式制約を組み合わせて表現する方法が知られているが、制約式の値の範囲が広い場合には正確に表現するのが難しく、帰着結果のイジングモデルにおいてスピン間の相互作用が複雑になりやすい問題がある。
【００１２】
本発明は以上の点を考慮してなされたもので、不等式制約等の制約条件を含むイジングモデルの基底状態探索を効率よく実現可能な技術を提案しようとするものである。
【課題を解決するための手段】
【００１３】
本発明の一側面は、ユニットを複数備える半導体装置である。ユニットのそれぞれは、自ユニットの値を記憶する第１のメモリと、入力される他ユニットの値に対する係数を記憶する第２のメモリと、自ユニットの値がイジングモデルの１つのスピンの状態を示す値か否かを識別するフラグ値を記憶する第３のメモリとを備える。また、ユニットのそれぞれは、他ユニットの値および係数に基づいて、自ユニットの値の更新値を決定する第１の演算回路と、フラグ値に基づいて、更新値を第１のメモリに記録するタイミングを決定する第２の演算回路と、を備える。
【００１４】
本発明の他の一側面は、上記半導体装置と、処理装置と、記憶装置と、を備える情報処理システムである。ここで、記憶装置は、問題データ、問題変換プログラム、および制御プログラムを記憶する。処理装置は、問題変換プログラムを用いて、問題データをイジングモデル形式の問題に変換する。また、処理装置は、制御プログラムを用いて、イジングモデル形式の問題に基づき、第２のメモリにデータを記録する。
【００１５】
本発明の他の一側面は、ユニットを複数備える半導体装置を用い、上位装置の制御により、半導体装置にイジングモデル形式の問題の少なくとも一部を解かせる情報処理方法である。ユニットのそれぞれは、自ユニットの値を記憶する第１のメモリと、入力される他ユニットの値に対する係数を記憶する第２のメモリと、自ユニットの値がイジングモデルの１つのスピンの状態を示す値か否かを識別するフラグ値を記憶する第３のメモリと、他ユニットの値および係数に基づいて、自ユニットの値の更新値を決定する第１の演算回路と、フラグ値に基づいて、更新値を第１のメモリに記録するタイミングを決定する第２の演算回路と、を備える。フラグ値は、自ユニットの値がイジングモデルの１つのスピンの状態を示す値であって、自ユニットが通常スピンとして機能するか、あるいは、自ユニットの値がイジングモデルの制約条件の逸脱度を示す値であって、自ユニットが制約スピンとして機能するか、を識別する。そして、自ユニットが通常スピンとして機能する場合、上位装置は、第２のメモリに、イジングモデルに基づいた相互作用係数および外部磁場係数を格納する。また、自ユニットが制約スピンとして機能する場合、上位装置は、第２のメモリに、制約条件に基づいた制約条件係数を格納する。
【発明の効果】
【００１６】
本発明によれば、不等式制約などの制約条件を含むイジングモデルの基底状態を探索でき、安価かつ容易に製造可能な半導体装置を実現できる。
【図面の簡単な説明】
【００１７】
【図１】情報処理装置の全体構成を示すブロック図である。
【図２】イジングボードの構成を示すブロック図である。
【図３】イジングチップの構成を示すブロック図である。
【図４】イジングモデルの説明に供する概念図である。
【図５】スピンユニットの説明に供する概念図である。
【図６】スピンユニットの構成を示すブロック図である。
【図７】スピンユニットの動作の説明に供する概念図である。
【図８】スピンユニットを用いた制約条件の表現の説明に供する概念図である。
【図９】スピンユニットの更新順序の説明に供する概念図である。
【図１０】基底状態探索処理の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
実施の形態について、図面を用いて詳細に説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００１９】
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。
【００２０】
同一あるいは同様な機能を有する要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、複数の要素を区別する必要がない場合には、添字を省略して説明する場合がある。
【００２１】
本明細書等における「第１」、「第２」、「第３」などの表記は、構成要素を識別するために付するものであり、必ずしも、数、順序、もしくはその内容を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
【００２２】
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
【００２３】
以下で説明されて実施例の一態様では、イジングモデルの基底状態探索を行う半導体装置が、並列処理を行なうスピンアレイを備えている。このスピンアレイは複数のスピンユニットから構成されている。各スピンユニットは、イジングモデルの１つのスピンの値と当該スピンに付随する相互作用係数および外部磁場係数を格納するメモリを備えている。また、各スピンユニットは、当該スピンが制約条件の表現に用いられるかどうかを示すフラグ値を管理する。また、各スピンユニットは、自己に隣接するスピンユニットのスピンの値と、自己が保持する相互作用係数及び外部磁場係数に基づいて、自己が保持するスピンの次状態を決定する演算部とを備える。ここで自己に隣接するスピンユニットとは、自己に対してスピンの値を送ってくるスピンユニットである。
【００２４】
この半導体装置は、前述のフラグ値を用いてスピンの更新順序を定める更新順序制御部を備えており、この更新順序制御部は、一つの計算サイクルにおいて、制約条件を表現するフラグ値をもつスピンユニットがそれ以外のスピンユニットよりも先に更新されるよう、演算部に指示する。
【００２５】
この半導体装置によれば、イジングモデルの基底状態探索を実現する半導体装置において、スピンを模擬する単位構成要素を制約条件の判定に流用し、不等式制約を含む場合にも効率よく基底状態探索を行うことができる。以下、本実施例を詳細に説明する。
＜有向グラフに拡張したイジングモデル＞
本実施の形態では、イジングモデルを拡張した、以下の（２）式で示されるモデルを、これ以降イジングモデルと呼ぶものとする。
【００２６】
【数２】
2019179364.tif 000004
……（２）
【００２７】
（１）式で示したイジングモデルとの違いは、（２）式では有向グラフで示されるような相互作用が許されることにある。一般的にイジングモデルはグラフ理論では無向グラフとして描画することができる。それは、イジングモデルの相互作用は、ｉ番目スピンからｊ番目スピンへの相互作用係数Ｊｉ，ｊとｊ番目スピンからｉ番目スピンへの相互作用係数Ｊｊ，ｉとを区別していないことによる。
【００２８】
拡張したイジングモデルは、Ｊｉ，ｊとＪｊ，ｉとを区別しても適用できるため、本実施の形態でも有向グラフ化したイジングモデルを取り扱う。なお、無向グラフのイジングモデルを有向グラフのイジングモデルで取り扱う場合には、単にＪｉ，ｊとＪｊ，ｉとの双方向に同じ相互作用係数を定義することで可能である。この場合、同じモデルでも（１）式のエネルギー関数に対して（２）式のエネルギー関数ではエネルギーの値が２倍になる。
【００２９】
＜情報処理装置の全体構成＞
図１は、本実施の形態による情報処理装置の全体構成を示す。この情報処理装置１はパーソナルコンピュータやワークステーション又はサーバなどから構成され、システムバス２を介して構成されたＣＰＵ（Central Processing Unit、中央処理装置）３、メモリ４、記憶装置５、及び１つ又は複数のイジングボード６を備える。メモリ４は例えばＤＲＡＭやＳＲＡＭを想定する。記憶装置５は例えば磁気ディスク装置である。以上の構成は、単体のコンピュータで構成してもよいし、あるいは、任意の部分が、ネットワークで接続された他のコンピュータで構成されてもよい。
【００３０】
記憶装置５には、本情報処理装置１が解くべき最適化問題の問題データ７が格納され、メモリ４には、問題変換プログラム８及びイジングチップ制御プログラム９が格納される。問題変換プログラムは、解きたい最適化問題をイジングモデル形式の問題に変換するプログラムである。またイジングチップ制御プログラム９は、個々のイジングボード６において対応する部分問題を解くための制御を行うためのプログラムである。
【００３１】
イジングボード６は、イジングモデルの基底状態探索を行う専用ハードウェアであり、例えば画面描画処理のための専用ハードウェアであるＧＰＵ（Graphics Processing Unit）のように、情報処理装置１に装着する拡張カードの形態を取ることができる。
【００３２】
＜イジングボードの構成＞
図２は、イジングボード６の構成図である。イジングボード６は、インタフェース１０、イジングチップ部１１、及び制御部１２を備えて構成される。イジングボード６は、インタフェース１０及びシステムバス２（図１）を介して、ＣＰＵ３（図１）との間でコマンドやデータの送受を行うことができる。
【００３３】
イジングチップ部１１は、一つまたは複数のイジングチップ１４を備える。図２では一つのみイジングチップ１４を図示した。各イジングチップ１４は、半導体集積回路技術で構成される。
【００３４】
制御部１２は、イジングチップ１４を制御する機能を有し、コントローラ１５、相互作用クロック生成器１６、及び乱数発生器１７を備えて構成される。
【００３５】
コントローラ１５は、イジングボード６全体の動作制御を司るプロセッサであり、情報処理装置１のＣＰＵ３（図１）からシステムバス２（図１）及びインタフェース１０を介して与えられるコマンドに従って、イジングチップ１４の動作を制御する情報ＣＴＲを生成する。また、相互作用クロック生成器１６及び乱数発生器１７を制御する。
【００３６】
相互作用クロック生成器１６は、後述する相互作用クロックを生成するクロック生成器である。相互作用クロック生成器１６により生成された相互作用クロックＩＣＬＫは、イジングチップ１４に与えられる。
【００３７】
乱数発生器１７は、後述のようにイジングチップ１４において実行される基底状態探索が局所最適解に陥るのを防止するための乱数を発生させる。乱数発生器１７により発生された乱数ＲＮＤは、イジングチップ１４にそれぞれ与えられる。乱数を制御するために、乱数発生器１７にはコントローラ１５から例えば温度情報ＴＭが供給される。
【００３８】
＜イジングチップの構成＞
図３は、イジングチップ１４の概略構成を示す。イジングチップ１４は、スピンアレイ２０、Ｉ／Ｏ（Input/Output）アドレスデコーダ２１、Ｉ／Ｏドライバ２２、相互作用アドレスデコーダ２３を備えて構成される。本実施の形態では、イジングチップ１４は現在広く用いられているＣＭＯＳ（Complementary Metal-Oxide Semiconductor）集積回路として実装されていることを想定して説明するが、他の固体素子でも実現可能である。
【００３９】
イジングチップ１４は、スピンアレイ２０にリード／ライトを行うためのＳＲＡＭ互換インタフェース３０としてアドレスバス３１、データバス３２を備える。また、Ｒ／Ｗ制御信号ＲＷを与えるＲ／Ｗ制御信号線、及び、Ｉ／ＯクロックＣＬＫを与えるＩ／Ｏクロック線を備える。またイジングチップ１４は、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース３５として、相互作用アドレス線３６、及び相互作用クロックＩＣＬＫを与える相互作用クロック線を備える。なお、本明細書では、クロック等の信号と当該信号を伝送する線路を同じ符号を付して説明する場合がある。
【００４０】
イジングチップ１４では、イジングモデルのスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉをすべてスピンアレイ２０内のメモリセルに記憶する情報で表現する。スピンσｉの初期状態の設定や基底探索完了後の解読み出しはＳＲＡＭ互換インタフェース３０を介して行う。またイジングチップ１４では、基底状態を探索すべきイジングモデルをスピンアレイ２０に設定するための相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉのリード／ライトもＳＲＡＭ互換インタフェース３０を介して行う。
【００４１】
そのため、スピンアレイ２０内のスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉにはアドレスが付与されている。そしてイジングチップ１４にスピンσｉ、相互作用係数Ｊｉ，ｊ又は外部磁場係数ｈｉをリード／ライトする場合、対応するアドレスがコントローラ１５からアドレスバス３１を介してＩ／Ｏアドレスデコーダ２１に与えられ、これらスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉのリード／ライトを制御するＲ／Ｗ制御信号ＲＷがコントローラ１５からＲ／Ｗ制御線を介してＩ／Ｏドライバ２２に与えられる。
【００４２】
かくしてＩ／Ｏアドレスデコーダ２１は、アドレスバス３１を介して与えられたアドレスに基づいてスピンアレイ２０のワード線をアクティベートし、Ｉ／Ｏドライバ２２は、Ｒ／Ｗ制御線を介して与えられたＲ／Ｗ制御信号ＲＷに基づいてスピンアレイ２０内の対応するビット線を駆動する。これによりデータバス３２を介して与えられたスピンσｉの初期値や、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉの設定値がスピンアレイ２０に設定され、又は、基底探索完了後の解がスピンアレイ２０から読み出されてデータバス３２を介して外部に出力される。
【００４３】
なお、ＳＲＡＭ互換インタフェース３０を構成するアドレスバス３１、データバス３２及びＲ／Ｗ制御線は、Ｉ／Ｏクロック線を介して制御部１２からイジングチップ１４に与えられるＩ／ＯクロックＣＬＫに同期して動作する。ただし、本発明においてインタフェースが同期式である必要はなく、非同期式のインタフェースでも良い。本実施の形態では、同期式のインタフェースであるという前提で説明を行う。
【００４４】
また、イジングチップ１４は、基底状態探索を行うために、スピンアレイ２０の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース３５である。具体的には、イジングチップ１４は、コントローラ１５から、相互作用を行うスピン群を指定するアドレスを相互作用アドレス線３６を介して入力する。そして、相互作用クロック生成器１６から入力される、相互作用クロックＩＣＬＫに同期して相互作用を行う。相互作用アドレスデコーダ２３は、相互作用アドレス線３６を介して与えられたアドレスに基づいて、スピンアレイ２０に対する相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉのリードを行い相互作用計算を実行し、スピンの次状態を決定する。
【００４５】
加えて、イジングチップ１４は、後述のようにイジングモデルのスピンを表現するメモリセルの値を確率的に反転させる乱数ＲＮＤを注入するための乱数注入線を有している。図２について上述した乱数発生器１７により発生された乱数ＲＮＤは、この乱数注入線を介してスピンアレイ２０に与えられる。また、イジングチップ１４は、スピンが制約条件の表現に用いられるかどうかを示すフラグ値を管理し、また、スピンの更新順序を制御するための信号を含む制御信号ＣＴＲを、コントローラ１５から受け取る。
【００４６】
＜スピンアレイの構成＞
スピンアレイ２０は、１個のスピンσｉ並びにそれに付随する相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉの保持と、基底状態探索演算とを実現するスピンユニットを基本構成単位として、スピンユニットを多数個並べた構成を有する。
【００４７】
図４は、スピンユニット４０を複数個並べることで、ＫｉｎｇＧｒａｐｈと呼ばれるトポロジを持つイジングモデルを構成する例を示している。ＫｉｎｇＧｒａｐｈは図示されているとおり、２次元格子に加えて、スピン間の対角線方向にも相互作用をもつトポロジである。図４の例は４（Ｘ軸方向）×４（Ｙ軸方向）の大きさのＫｉｎｇＧｒａｐｈである。
【００４８】
座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、としているが、この座標軸は実施の形態の説明上便宜的に定めたものである。ＫｉｎｇＧｒａｐｈ以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図４のＫｉｎｇＧｒａｐｈトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数８のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数９が必要となる。
【００４９】
図４に示す１個のスピンユニット４０には、隣接するスピン（例えば隣接するスピンが８個の場合σｊ、σｋ、σｌ、σｍ、σｎ、σｏ、σｐ、σｑ）の値が入力される。このためスピンユニット４０は、これら入力する隣接するスピンの値を保持するためのメモリセルを有している（図４中の円とその中の２つの矢印で表現）。またスピンユニット４０は、かかるスピンの値に加え、外部磁場係数を保持するメモリセル（図４中の正方形で表現）と、上述した隣接するスピンとの相互作用係数（隣接する８スピンとの相互作用係数Ｊｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉ、Ｊｏ，ｉ、Ｊｐ，ｉ、Ｊｑ，ｉ）とをそれぞれ保持するメモリセル（図４中の長方形で表現）をも有している。
【００５０】
ところで、先に述べたようにイジングモデルは一般的に無向グラフで表現される相互作用を有している。上述した（１）式では、相互作用を表わす項として、Ｊｉ，ｊ×σｉ×σｊがあるが、これはｉ番目スピンからｊ番目スピンへの相互作用を示している。この場合、一般的なイジングモデルではｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。つまり、Ｊｉ，ｊとＪｊ，ｉは同一である。しかし、本実施の形態のイジングチップ１４では、先に述べたようにこのイジングモデルを有向グラフに拡張し（（２）式）、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【００５１】
そのため、１個のスピンユニットをｉ番目スピンσｉと考えた時に、このスピンユニット４０が保持する相互作用係数であるＪｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉ、Ｊｏ，ｉ、Ｊｐ，ｉ、Ｊｑ，ｉは、隣接するｊ番目、ｋ番目、ｌ番目、ｍ番目、ｎ番目、ｏ番目、ｐ番目、ｑ番目のスピンσｊ、σｋ、σｌ、σｍ、σｎ、σｏ、σｐ、σｑから、ｉ番目スピンσｉへの相互作用を決めるものである。このことは、図４において、スピンユニット４０に含まれている相互作用係数が対応する矢印（相互作用）が、図示されているスピンユニット４０の外部のスピンから、スピンユニット４０の内部のスピンに向かっていることに対応している。
【００５２】
＜スピンユニットの概念モデル＞
図５により、図４のスピンユニット４０単体に注目した接続関係を示す。スピンユニット４０は、隣接する８つのスピンユニットから隣接スピンの値を受け取り、また、隣接する８つのスピンユニットへ自分のスピンの値を送る。スピンユニット４０は外部磁場係数ｈｉと、受け取る隣接スピンの値に対して作用する相互作用係数Ｊｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉ、Ｊｏ，ｉ、Ｊｐ，ｉ、Ｊｑ，ｉを持つ。
【００５３】
＜スピンユニットの具体的構成例＞
図６は、スピンユニット４０の一構成例の回路ブロック図である。スピンユニット４０は、イジングモデルのスピンσｉ、相互作用係数Ｊｊ，ｉ〜Ｊｑ，ｉ及び外部磁場係数ｈｉを保持するために、１ビットのメモリセルＮ，および複数ビットのメモリＩＮ、ＩＮＥ，ＩＥ，ＩＳＥ，ＩＳ，ＩＳＷ，ＩＷ，ＩＮＷを備えている。
【００５４】
ここで、スピンユニット４０はｉ番目のスピンを表現するものとして説明を行う。メモリセルＮはスピンσｉを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは＋１／−１（＋１を上、−１を下とも表現する）であるが、これをメモリセルが保持可能な２値である０／１に対応させる。例えば、＋１を１、−１を０に対応させる。
【００５５】
メモリＭＡＧは外部磁場係数ｈｉを記憶する。また、メモリＩＮ、ＩＮＥ，ＩＥ，ＩＳＥ，ＩＳ，ＩＳＷ，ＩＷ，ＩＮＷは、それぞれ相互作用係数Ｊｊ，ｉ〜Ｊｑ，ｉを記憶する。具体的には例えば、メモリＩＮは上側のスピン（Ｙ軸方向で−１）、メモリＩＮＥは右上側のスピン（Ｘ軸方向で＋１、Ｙ軸方向で−１）、メモリＩＥは右側のスピン（Ｘ軸方向で＋１）、メモリＩＳＥは右下側のスピン（Ｘ軸方向で＋１、Ｙ軸方向で＋１）、メモリＩＳは下側のスピン（Ｙ軸方向で＋１）、メモリＩＳＷは左下側のスピン（Ｘ軸方向で−１、Ｙ軸方向で＋１）、メモリＩＷは左側のスピン（Ｘ軸方向で−１）、メモリＩＮＷは左上側のスピン（Ｘ軸方向で−１、Ｙ軸方向で−１）との相互作用係数をそれぞれ記憶する。
【００５６】
また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット４０は最大で８個のスピンと接続される。本実施の形態のイジングチップ１４では、外部磁場係数及び相互作用係数として整数を表現できる。係数のビット幅は許容するチップの物量に応じて適宜定めることができるが、たとえば４ビットや８ビットといったサイズを用いることができる。係数値は一般的なＣＰＵで用いられるような２の補数形式の数値表現を用いる。
【００５７】
スピンユニット４０内のメモリＮ，ＭＡＧ、ＩＮ、ＩＮＥ，ＩＥ，ＩＳＥ，ＩＳ，ＩＳＷ，ＩＷ，ＩＮＷは、それぞれイジングチップ１４の外部からリード／ライト可能でなければならない。そのために、それぞれのメモリに対して固有のメモリアドレスを割りあて、コントローラ１５は適切なメモリアドレスに対するリード／ライトを行うことで任意のスピンのスピン値あるいは係数を読み取りあるいは変更することができる。
【００５８】
またスピンユニット４０は同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット４０毎に独立して持っている。図６では、スピンユニット４０は、外部とのインタフェースとして、信号線ＮＮ、ＮＮＥ、ＮＥ、ＮＳＥ、ＮＳ，ＮＳＷ、ＮＷ、ＮＮＷ、ＯＮ及びＲＡＮＤＯＭを有する。
【００５９】
信号線ＯＮは、メモリＮに格納される当該スピンユニット４０のスピンの値を、他のスピンユニット４０（図４のトポロジで隣接するユニット）に出力するインタフェースである。信号線ＮＮは上側のスピン（Ｙ軸方向で−１）、信号線ＮＮＥは左上側のスピン（Ｘ軸方向で＋１、Ｙ軸方向で−１）、信号線ＮＥは右側のスピン（Ｘ軸方向で＋１）、信号線ＮＳＥは右下側のスピン（Ｘ軸方向で＋１、Ｙ軸方向で＋１）、信号線ＮＳは下側のスピン（Ｙ軸方向で＋１）、信号線ＮＳＷは左下側のスピン（Ｘ軸方向で−１、Ｙ軸方向で＋１）、信号線ＮＷは左側スピン（Ｘ軸方向で−１）、信号線ＮＮＷは左上側スピン（Ｘ軸方向で−１、Ｙ軸方向で−１）からの入力である。
【００６０】
スピンユニット４０では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、と外部磁場係数を合計したときに、正の値と負の値のどちらが支配的か判断することと等価である。例えば、ｉ番目スピンσｉに、スピンσｊ、σｋ、σｌ、σｍ、σｎ、σｏ、σｐ、σｑが隣接しているとして、スピンσｉの次状態は以下のように決まる。
【００６１】
まず、隣接スピンの値はσｊ＝＋１、σｋ＝−１、σｌ＝＋１、σｍ＝−１、σｎ＝＋１、σｎ＝＋１、σｏ＝−１、σｐ＝＋１、σｑ＝−１とし、相互作用係数はＪｊ，ｉ＝＋１、Ｊｋ，ｉ＝＋２、Ｊｌ，ｉ＝＋３、Ｊｍ，ｉ＝＋４、Ｊｎ，ｉ＝＋５、Ｊｏ，ｉ＝＋６、Ｊｐ，ｉ＝＋７、Ｊｑ，ｉ＝＋８、外部磁場係数ｈｉ＝＋９とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σｊ×Ｊｊ，ｉ＝＋１、σｋ×Ｊｋ，ｉ＝−２、σｌ×Ｊｌ，ｉ＝＋３、σｍ×Ｊｍ，ｉ＝−４、σｎ×Ｊｎ，ｉ＝＋５、σｏ×Ｊｏ，ｉ＝−６、σｐ×Ｊｐ，ｉ＝＋７、σｑ×Ｊｑ，ｉ＝−８、ｈｉ＝＋９となる。外部磁場係数は、常に値が＋１のスピンとの相互作用係数と読み替えて良い。
【００６２】
ここで、ｉ番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した相互作用係数と隣接スピンの積にそれぞれｉ番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、ｊ番目スピンとの間での局所的なエネルギーは、ｉ番目スピンを＋１とした時には−１、ｉ番目スピンを−１としたときには＋１となるので、ｉ番目スピンを＋１にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。
【００６３】
このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えたときに、ｉ番目スピンを＋１／−１のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、上述した相互作用係数及び隣接スピンの積と外部磁場係数の総和の符号を判定すればよい。先ほどの例では、全ての和をとると＋５となり、符号が正となるためスピンの次状態を＋１とすることでエネルギーを最小化するｉ番目のスピンの次状態を決定することができる。
【００６４】
図６に示した次状態演算部６２０はこのような相互作用演算を行う回路である。まず、隣接スピンの値と相互作用係数を格納したメモリＩＮ，ＩＮＥ，ＩＥ、ＩＳＥ，ＩＳ，ＩＳＷ，ＩＷ，ＩＮＷとの積を1ビット乗算回路６２１で求める。１ビット乗算回路６２１では、入力のスピン値が＋１または−１に対応する１ビットの値であるため、入力スピンの符号に応じて係数値の符号を反転させるだけでよく、大規模な乗算回路を用意する必要は無い。その後、１ビット乗算器の出力と外部磁場係数の値を加算器６２２に入力し、さらに加算器の出力結果を比較器６２３に入力する。
【００６５】
上述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することができるが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことができず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転させるために、スピンユニット４０はインタフェースとして乱数注入線を有する。
【００６６】
上述のように乱数発生器１７（図２）からスピンアレイ２０（図３）に与えられた乱数ＲＮＤが、乱数注入線を介してスピンユニット４０に与えられ、この乱数ＲＮＤを比較器６２３に入力することで、スピンの値が確率的に反転される。比較器６２３の出力は、メモリＮにスピンの次状態として格納される。乱数ＲＮＤは温度信号ＴＭにより制御され、例えば温度が高いときに反転確率を高く、温度が低いときに反転確率を低くする。
【００６７】
以上の次状態演算部６２０の構成によって、スピンアレイでは並列的に相互作用計算が可能となる。このとき、スピンの値を出力するスピンユニットと、スピンの値を受け取るスピンユニットが同時に相互作用計算を行なうと、状態が安定しなくなるため、これらが同時に相互作用計算を行なうことを避けるように制御する。このために、相互作用アドレス線３６及び相互作用クロック線ＩＣＬＫで相互作用アドレスデコーダ２３を制御し、相互作用計算を行なわせるスピンユニットを指定する。例えば、スピンユニットを相互に隣接しない２グループに分け、グループごとに相互作用計算を実行する。
【００６８】
なお、上記した以外のスピンアレイやスピンユニットの基本的な構成については、特許文献１等の公知技術に従って構成してよい。
【００６９】
＜スピンユニットを用いた制約条件の表現＞
上述したように、スピンユニット４０は隣接するスピンユニット４０のもつスピン値と、隣接するスピンユニットから受ける相互作用を表す相互作用係数との積の総和からスピンの値を計算する。
【００７０】
図７は、スピンユニットの出力値をグラフ化して示したものである。スピンユニット４０への乱数信号ＲＮＤによるスピン値の反転を無視した場合、ｉ番目のスピンの出力は図７のグラフに示すようになる。グラフの横軸は、ｉ番目のスピンユニット４０に隣接するスピンユニットの値と、隣接するスピンユニットから受ける相互作用係数の積の総和を表している。スピンユニット４０のスピン値は外部磁場係数ｈｉを閾値として−１から＋１に変化するステップ関数として捉えることができる。これを利用することで、不等式制約を実現することができる。
【００７１】
図８に制約条件を含むイジングモデルの例を示す。図の左端の制約対象スピン集合８０１は不等式制約が課せられたスピンの集合である。たとえば、図に示される４つのスピンのうち、＋１の値をとるスピンは２個以下といった条件を課す事ができる。中ほどの制約スピン８０２は制約対象スピン集合８０１が制約条件を満たしているかどうかを示すスピン値を出力する。ここでは、制約を満たすとき−１を出力し、そうでないとき＋１を出力するものと定める。この制約スピン８０２の出力をさらに他の通常スピン８０３に入力する。
【００７２】
ここで、制約スピン８０２から通常スピン８０３に入力される相互作用係数を適当な正の値＋Ｊに設定すると、制約条件を満たさない場合にイジングモデルのエネルギーが＋Ｊだけ増加することとなる。基底状態探索を実行すると、制約条件を満たすときに、イジングモデルのエネルギーが低くなるスピン値の組合せが高い確率で得られる。このため、結果的に制約条件を満たすスピン値の組合せが得られる。
【００７３】
上記では、目的関数と制約逸脱度の荷重和を最適化する手法を用いている。すなわち、制約条件に対して制約逸脱度を定義し、目的関数と制約逸脱度の荷重和を求め、その荷重和を新たな目的関数として最適化していることになる。目的関数はエネルギーであり、制約逸脱度として制約スピンの出力を利用している。制約逸脱度は目的関数に対するペナルティと考えられるため、上記で設定した係数＋Ｊをペナルティ係数という。ペナルティ係数により、制約逸脱度に重み付けを行なうことが可能である。
【００７４】
＜スピンアレイ内におけるスピン更新順序の制御＞
上述の方法により、制約条件を満たすスピン値の組合せを得る際には、通常スピン８０３を更新する際に、隣接する制約スピン８０２の値が正しい値を出力している必要がある。制約スピン８０２の値は隣接スピン値の変化に伴って更新されなければならない。
【００７５】
ところで、イジングチップでは基底状態探索を行う際、相互作用クロック１サイクルに複数のスピンを同時に更新することができる。しかし、互いに隣接するスピン同士を同時に更新すると、互いに隣接スピンの古い値を元に次状態を決定するため、競合が発生し正しい値に収束しなくなる。これを避けるため、１サイクルに同時に更新するスピンは互いに隣接しないものに限る。これを制御する仕組みは、先に述べた相互作用制御インタフェース３５である。
【００７６】
図９に本実施例でのスピンの更新順序の概念を示す。図４で示したＫｉｎｇＧｒａｐｈトポロジでは、図９に示すように４つの互いに隣接しないスピンの集合に分けることができる。それぞれのグループはスピンユニットを示す丸の中に記したＧｒ１〜Ｇｒ４のグループ名で示している。
【００７７】
制約スピンをまったく含まない状態であれば、相互作用クロック１サイクルごとにＧｒ１→Ｇｒ２→Ｇｒ３→Ｇｒ４→Ｇｒ１→…といった順序で各グループのスピンを更新する。
【００７８】
一方、制約スピンを含む状態であれば、通常スピンの更新に先立って制約スピンを更新する必要がある。図９において、点線で囲ったスピンが制約スピン８０２であるとした場合、制約スピン８０２全てを制約グループとして一度に更新する。具体的には、相互作用クロック１サイクルごとに制約グループ→Ｇｒ１→制約グループ→Ｇｒ２→制約グループ→Ｇｒ３→制約グループ→Ｇｒ１→…という順番でスピン値の更新を行う。
【００７９】
このようにスピンの更新順序が保証されることによって、通常の相互作用計算の前には、制約スピン８０２の値が正しく設定されていることになる。
【００８０】
＜スピンユニットの計算順序制御部＞
図６を再度参照して、スピンユニット４０の計算順序制御の詳細を説明する。スピン更新順序の制御は、スピンユニット４０内の計算順序制御部６１０で行われる。計算順序制御部６１０には、外部から制約スピン更新制御信号ＣＴＲ１を入力する。制約スピン更新制御信号ＣＴＲ１は１ビットの信号で、制約スピンを更新すべきタイミングでは「１」、そうでなければ「０」をとるものである。制約スピン更新制御信号ＣＴＲ１は、イジングボード上のコントローラ１５で生成され、制御信号ＣＴＲの一部としてイジングチップ１４に入力される（図２）。
【００８１】
上述したように、制約スピンと通常スピンを交互に更新するため、制約スピン更新制御信号ＣＴＲ１は、相互作用クロック１クロックごとに値が１→０→１→０→…と繰り返す。このとき、イジングモデルを入力する時点で制約スピンが存在しないことがわかっていれば、コントローラ１５は制約スピン更新制御信号ＣＴＲ１を常に「０」としてもよい。こうすることで、制約更新にかかる相互作用クロックサイクルを０にできるため、基底状態探索時間の削減が可能となる。
【００８２】
図６に示すように、計算順序制御部６１０は１ビットの制約フラグ６１７をもつ。このフラグが「１」のとき、当該スピンユニット４０は制約スピンであるとして動作する。このとき、制約スピン更新制御信号ＣＴＲ１が「１」となると、論理積６１８の出力は「１」であり、論理和６１６の出力が「１」となり、スピン値の更新がイネーブルされる。制約フラグ６１７は相互作用係数や外部磁場係数と同様に、イジングモデルを読み込む際にコントローラ１５によって設定される。
【００８３】
一方、制約スピン更新制御信号ＣＴＲ１が「０」であるときは、制約スピンに属さないスピンの集合が更新される。このとき、４進カウンタ６１２がインクリメントされ、メモリセル６１３の自身のスピンユニットが所属するグループ番号と比較される。これをＡＮＤゲート（論理積）６１５に通すことで、制約フラグ６１７が「０」かつ制約スピン更新制御信号ＣＴＲ１が「０」で、４進カウンタ６１２の値が自身のグループ番号と一致するときのみスピン値の更新が行われる。
【００８４】
図６に基づいてより具体的に、まず、制約フラグ６１７が「０」の場合の通常スピンとしての動作を説明する。入力された制約スピン更新制御信号ＣＴＲ１は、否定論理６１１を介して４進カウンタ６１２に入力される。制約スピン更新制御信号ＣＴＲ１が「０」、すなわち、通常スピンを更新するべきタイミングでは、否定論理６１１を介して４進カウンタ６１２に「１」が入力される。４進カウンタ６１２は、「１」の入力によりインクリメントされる。すなわち４進カウンタ６１２は、通常スピンとしての更新動作の回数をカウントしていることになる。図９の構成を前提として、本実施例で４進カウンタ６１２は「４」になるとリセットするように動作する。
【００８５】
メモリセル６１３は、自スピンユニットが通常のスピン更新において、何番目のグループに属しているかを示す情報を格納する。図９の例では、４つのグループに分かれているため、「０」「１」「２」「３」のいずれかの値が格納される。この値は問題設定時にコントローラ１５から設定される。
【００８６】
コンパレータ６１４は、４進カウンタ６１２の出力とメモリセル６１３の出力を比較し、一致していた場合に「１」を、そうでない場合に「０」を出力する。コンパレータ６１４出力の「１」は自スピンユニットが通常のスピンとして更新すべきタイミングであることを示す。コンパレータ６１４の出力と否定論理６１１の出力は、論理積６１５に入力される。論理積６１５の出力は論理和６１６に入力される。
【００８７】
制約スピン更新制御信号ＣＴＲ１が「０」、すなわち、通常スピンの更新動作時には、否定論理６１１を介した論理積６１５への入力は「１」となる。また上述のように、自スピンユニットが通常のスピンとして更新すべきタイミングのとき、コンパレータ６１４出力は「１」となる。よって、このタイミングのみ論理和６１６の出力が「１」となる。論理和６１６の出力はメモリＮの更新可否を示すイネーブル信号ＥＮとなり、「１」のとき更新が許可される。制約フラグ６１７が「０」であるため、論理積６１８の出力は常に「０」であるから、上記以外のタイミングでは、イネーブル信号ＥＮは「０」を維持する。
【００８８】
次に、制約フラグ６１７が「１」の場合の制約スピンとしての動作を説明する。制約フラグ６１７が「１」の場合、否定論理６１１の出力が「０」なので、論理積６１５から論理和６１６への入力は常に「０」である。よって、イネーブル信号ＥＮは、論理積６１８の出力のみで定まる。
【００８９】
制約フラグ６１７が「１」で、かつ制約フラグ６１７が「１」の場合のみ、論理積６１８の出力が「１」となり、メモリＮの更新可否を示すイネーブル信号ＥＮが「１」となる。
【００９０】
本実施例では、制約スピンの出力は制約を満たすときマイナスで、制約を満たさないときプラスになるように設定される。従って、制約スピンの出力は制約逸脱度に相当する。図7を再度参照すると、制約を満たすときには総和の値が小さくなるので、＋１への反転確率が下がる方向にシフトする。よって、制約を満たす場合に基底状態に遷移しやすいということになる。
【００９１】
＜イジングチップの制御手順＞
図１０は、本情報処理装置１においてＣＰＵ３（図１）により実行される基底状態探索処理の処理手順を示す。ＣＰＵ３は、イジングチップ制御プログラム９（図１）に基づき、この図に示す処理手順に従って、必要なイジングボード６（図２）のコントローラ１５（図２）を介して当該イジングボード６内のイジングチップ１４を制御することにより、これらのイジングチップ１４において基底状態探索を実行させる。
【００９２】
なお、ＣＰＵ３は、イジングチップ１４内のスピンユニット４０をイジングボード６内のコントローラ１５（図２）を介して制御するが、以下においては理解の容易化のため、コントローラ１５の存在を無視して説明を行う。
【００９３】
ＣＰＵ３は、ユーザからの指示等により基底状態探索処理を開始すると、まず、問題データ７（図１）を問題変換プログラム８（図１）によりイジングモデル形式に変換し、得られた相互作用係数、及び、外部磁場係数を、イジングチップ１４内の各（通常）スピンユニット４０にそれぞれ設定する。このとき、制約スピンとなるスピンユニット４０が決定され、当該スピンユニットには、制約スピンとしての係数が設定される（ＳＰ１）。制約スピンとしての係数設定については、後述する。
【００９４】
続いて、ＣＰＵ３は、各スピンユニットが保持すべきスピンの値を乱数によりそれぞれ決定し、決定したスピンの値となるようにイジングボード６におけるイジングチップ１４内の各スピンユニット４０のスピンの値を初期化する（ＳＰ２）。この場合、制約スピンを含むすべてのスピンユニットに対して一律に処理を行なってよい。初期値は、その後の動作により更新される。
【００９５】
次いで、ＣＰＵ３は、予め定められた各イジングボード６内の乱数発生器１７（図２）が発生する乱数ＲＮＤにおいて「１」が出現する確率（以下、これをビット確率と呼ぶ）を設定する（ＳＰ３）。本実施の形態の場合、初期時には乱数発生器１７が発生する乱数ＲＮＤにおけるビット確率を高く設定し、その後、段階的にビット確率を下げてゆく。確率を制御する信号とした例えば温度信号ＴＭを用いる。これにより初期時には各スピンユニット４０が保持するスピンの値を反転し易くする一方、その後は徐々に当該スピンの値が反転し難く（「０」又は「１」に収束し易く）することができる。このためステップＳＰ３では、上述の各段階におけるビット確率が設定される。
【００９６】
続いて、ＣＰＵ３は、イジングボード６の相互作用クロック生成器１６（図２）を駆動するなどして、各イジングチップ１４内の各スピンユニット４０における相互作用演算を１回実行させ（ＳＰ５）、この後、現在のビット確率について設定された回数分だけ相互作用演算を実行し終えたか否かを判断する（ＳＰ６）。そしてＣＰＵ３は、この判断で否定結果を得るとステップＳＰ５に戻り、この後、ステップＳＰ５及びステップＳＰ６の処理を繰り返す。
【００９７】
そしてＣＰＵ３は、現在設定されているビット確率について設定された回数分の相互作用演算を実行することにより、ステップＳＰ７で肯定結果を得ると、ステップＳＰ４で設定したビット確率毎の相互作用演算をすべて実行し終えたか否かを判断する（ＳＰ７）。
【００９８】
ＣＰＵ３は、この判断で否定結果を得ると、ビット確率を現在のビット確率よりも低い予め定められたビット確率に更新すると共に（ＳＰ８）、その後実行すべき相互作用演算の回数をそのビット確率について予め定められた回数に更新する（ＳＰ９）。そしてＣＰＵ３は、ステップＳＰ５に戻り、この後、ステップＳＰ５〜ステップＳＰ９の処理を繰り返す。
【００９９】
そしてＣＰＵ３は、やがてステップＳＰ４で設定されたビット確率毎の相互作用演算をすべて実行し終えることによりステップＳＰ７で肯定結果を得ると、そのとき対象としているイジングボード６における各イジングチップ１４内の各スピンユニット４０がそれぞれ保持するスピンの値を読み出し（ＳＰ１０）、この後、この基底状態探索処理を終了する。
【０１００】
＜スピンの係数設定と制約条件の計算例＞
本実施例では、通常スピンに対しては基本的に特許文献１と同様に、相互作用係数と外部磁場係数を設定することができる。ただし、制約スピンからの入力に対しては、通常の相互作用係数の代わりにペナルティ係数を設定する。また、制約スピンについては、制約条件に基づいた相互作用係数と外部磁場係数を設定する。これらの係数は、通常スピンの係数と区別するために、制約条件係数と呼ぶことがある。以下で簡単な例を挙げて説明する。
【０１０１】
いま、３個の制約対象スピンＳ１，Ｓ２，Ｓ３と制約スピンＣがあったとする。ここで、制約対象スピンの値がそれぞれσS1，σS2，σS3として、以下の不等式で制約条件を規定することを考える。
σS1＋２×σS2＋σS3＋１＜０
制約スピンＣに入力される制約対象スピン（隣接スピン）に対する相互作用係数、すなわち制約スピンＣに設定される相互作用係数ＪＳ１，Ｃ、ＪＳ２，Ｃ、ＪＳ３，Ｃ、は、それぞれ上記不等式の左辺の各スピンの係数に対応し、
ＪＳ１，Ｃ＝１、ＪＳ２，Ｃ＝２、ＪＳ３，Ｃ＝１
と設定する。
また、制約スピンＣの外部磁場係数ＭＡＧＣは、不等式の左辺の定数項に対応する。すなわち、
ＭＡＧＣ＝１
に設定する。
【０１０２】
これらの設定は、問題設定時あるいは制約条件設定時に、コントローラ１５が各イジングチップ１４のスピンアレイに２０に対して、制約フラグ６１７の設定と同時にあるいは別途行なうことができる。
【０１０３】
具体的事例をあげてさらに説明すると、上の条件で、いまσS1＝−１、σS2＝１、σS3＝−１とすると、制約スピンＣの比較器６２３への入力は、
１×（−１）＋２×１＋１×（−１）＋１＝１
となる。乱数ＲＮＤが０であれば、制約スピンＣの出力は＋１となり、不等式制約を満たさない状態を表現できる。
【０１０４】
同様に、スピンの値が、σS1＝−１、σS2＝−１、σS3＝１、制約スピンＣの比較器６２３への入力は、
１×（−１）＋２×（−１）＋１×１＋１＝−１
となり、乱数ＲＮＤが０であれば、制約スピンＣの出力は−１となり、不等式制約を満たしている状態を表現できる。
【０１０５】
また、別の例として例えば、制約対象スピンが４スピン（Ｓ１，Ｓ２，Ｓ３，Ｓ４）であった場合、＋１のスピンの個数が２個以上にならないように制約したいときは、スピンの和が１＋１＋（−１）＋（−１）＝０以上になることを避ければよいので、σS1＋σS2＋σS3＋σS４＜０なる不等式を導入し、同様に係数を設定すればよい。
【０１０６】
以上のように、制約スピンになるスピンユニットに入力される相互作用係数は、実現したい不等式制約中の係数値に対応する。また、制約スピンになるスピンユニットの外部磁場係数は、実現したい不等式制約中の定数項に対応する。一方、制約スピンからの値を入力される通常スピンでは、制約スピンからの値に対する係数＋J（ペナルティ係数）を、相互作用係数の代わりに入力する。このように、所望の制約条件を自由に表現することができる。
【０１０７】
以上のように本実施の形態の情報処理装置１では、スピンユニット４０を用いて制約条件の判定にすることにより、不等式制約を含むイジングモデルの基底状態探索を行うイジングボード６を実現できる。本発明は、イジングモデルの基底状態探索を行う半導体装置に広く適用することができる。
【符号の説明】
【０１０８】
ＣＰＵ３、メモリ４、記憶装置５、イジングボード６、イジングチップ１４、スピンアレイ２０、スピンユニット４０
【図１】
2019179364.tif 000005
【図２】
2019179364.tif 000006
【図３】
2019179364.tif 000007
【図４】
2019179364.tif 000008
【図５】
2019179364.tif 000009
【図６】
2019179364.tif 000010
【図７】
2019179364.tif 000011
【図８】
2019179364.tif 000012
【図９】
2019179364.tif 000013
【図１０】
2019179364.tif 000014