(57)【要約】  例えばイジングモデルなどのような大規模かつ複雑な相互作用モデルの計算を最適な分割方法で行うことができ、安価かつ容易に製造可能な半導体システムおよび計算方法である。半導体システム１０４において、コントローラ１０６は、スピンデータ格納部１１２と、問題データ格納部１１１と、レジス１０８と、アドレス生成部１２３と、展開部１２５と、データ集計部１２６とを備える。レジス１０８には、処理対象とする問題データの分割する際の境界を指定するためのスピンデータ格納部１１２および問題データ格納部１１１のアドレスが設定される。データ集計部１２６は、複数の半導体チップ１１６のメモリセルに格納された各スピンの値を受信し、対応関係に基づきスピンデータ格納部１１２へ格納する。
2017037902.tif 000002
【特許請求の範囲】
【請求項１】
複数の半導体チップと、前記複数の半導体チップに接続されたコントローラとを備える半導体システムであって、
前記複数の半導体チップの各々は、複数のノード間の相互作用によって処理が実行される相互作用モデルで表現された問題データの各ノードの値が格納される第１のメモリと、前記問題データの各ノードに関する係数が格納される第２のメモリと、前記第１のメモリに格納された前記各ノードの値を更新する演算回路とを含むユニットを複数備え、
前記コントローラは、
処理対象とする問題データの各ノードの値が格納される第３のメモリと、
前記処理対象とする問題データの各ノードに関する係数が格納される第４のメモリと、
前記処理対象とする問題データの分割する際の境界を指定するための前記第３及び前記第４のメモリのアドレスが設定されるレジスタと、
前記レジスタの設定値で指定された範囲の問題データが、前記複数の半導体チップのいずれかにまとめて配置されるように、前記第３及び前記第４のメモリのアドレスと前記複数の半導体チップの各々のアドレスとの対応関係を設定するアドレス生成部と、
前記対応関係に基づき、前記第３及び前記第４のメモリに格納された前記各ノードの値及び前記係数を前記複数の半導体チップへ伝送するデータ展開部と、
前記複数の半導体チップの前記第１のメモリに格納された前記各ノードの値を受信し、前記対応関係に基づき前記第３のメモリへ格納するデータ集計部と
を備える、半導体システム。
【請求項２】
請求項１に記載の半導体システムであって、
前記レジスタには、前記問題データの分割時の境界を変更するためのゆらぎ幅が更に設定され、
前記アドレス生成部は、前記ゆらぎ幅に基づき前記対応関係を変更し、
前記データ展開部は、変更された前記対応関係に基づき、前記第３及び前記第４のメモリに格納された前記各ノードの値及び前記係数を前記複数の半導体チップへ伝送する、半導体システム。
【請求項３】
請求項１乃至２に記載の半導体システムであって、
前記データ展開部の伝送処理の実行後に、前記複数の半導体チップでの演算処理が実行され、前記演算処理の実行後に、前記データ集計部の集計処理が実行される、半導体システム。
【請求項４】
請求項１に記載の半導体システムであって、
前記係数にはノード間の相互作用に関する係数が含まれ、
前記コントローラは、前記相互作用に関する係数の合計値に基づき、前記境界を指定するための前記第３及び前記第４のメモリのアドレスを、前記レジスタに設定する解析部を更に備える、半導体システム。
【請求項５】
請求項１に記載の半導体システムであって、
前記相互作用モデルはイジングモデルであり、前記各ノードの値はスピン値であり、前記係数は相互作用係数と外部磁場係数とを含む、半導体システム。
【請求項６】
複数の半導体チップと、前記複数の半導体チップに接続されたコントローラとを備える半導体システムの計算方法であって、
前記複数の半導体チップの各々は、複数のノード間の相互作用によって処理が実行される相互作用モデルで表現された問題データの各ノードの値が格納される第１のメモリと、前記問題データの各ノードに関する係数が格納される第２のメモリと、前記第１のメモリに格納された前記各ノードの値を更新する演算回路とを含むユニットを複数備え、
前記コントローラは、処理対象とする問題データの各ノードの値が格納される第３のメモリと、前記処理対象とする問題データの各ノードに関する係数が格納される第４のメモリと、前記処理対象とする問題データの分割する際の境界を指定するための前記第３及び前記第４のメモリのアドレスが設定されるレジスタと、アドレス生成部と、データ展開部と、データ集計部とを備え、
前記アドレス生成部は、前記レジスタの設定値で指定された範囲の問題データが、前記複数の半導体チップのいずれかにまとめて配置されるように、前記第３及び前記第４のメモリのアドレスと前記複数の半導体チップの各々のアドレスとの対応関係を設定し、
前記データ展開部は、前記対応関係に基づき、前記第３及び前記第４のメモリに格納された前記各ノードの値及び前記係数を前記複数の半導体チップへ伝送し、
前記データ集計部は、前記複数の半導体チップの前記第１のメモリに格納された前記各ノードの値を受信し、前記対応関係に基づき前記第３のメモリへ格納する、計算方法。
【請求項７】
請求項６に記載の計算方法であって、
前記レジスタには、前記問題データの分割時の境界を変更するためのゆらぎ幅が更に設定され、
前記アドレス生成部は、前記ゆらぎ幅に基づき前記対応関係を変更し、
前記データ展開部は、変更された前記対応関係に基づき、前記第３及び前記第４のメモリに格納された前記各ノードの値及び前記係数を前記複数の半導体チップへ伝送する、計算方法。
【請求項８】
請求項６乃至７に記載の計算方法であって、
前記データ展開部の伝送処理の実行後に、前記複数の半導体チップでの演算処理を実行し、前記演算処理の実行後に、前記データ集計部の集計処理を実行する、計算方法。
【請求項９】
請求項６に記載の計算方法であって、
前記係数にはノード間の相互作用に関する係数が含まれ、
前記コントローラは、解析部を更に備え、
前記解析部は、前記相互作用に関する係数の合計値に基づき、前記境界を指定するための前記第３及び前記第４のメモリのアドレスを、前記レジスタに設定する、計算方法。
【請求項１０】
請求項６に記載の計算方法であって、
前記相互作用モデルはイジングモデルであり、前記各ノードの値はスピン値であり、前記係数は相互作用係数と外部磁場係数とを含む、計算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体システムおよび計算方法に関し、特に、大規模かつ複雑な相互作用モデルの計算を行う半導体システムおよび計算方法に適用して好適なものである。
【背景技術】
【０００２】
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは、モデルを構成する複数個のノードと、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが、いずれも相互作用モデルの一形態であると解釈できる。【０００３】
物理学の世界で代表的な相互作用モデルの例として、イジングモデルをあげることができる。イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは＋１／−１（ないしは、０／１、上／下）の２値をとるスピンと、スピン間の相互作用を示す相互作用係数と、スピン毎にある外部磁場係数とで定義される。【０００４】
イジングモデルは与えられたスピン配列、相互作用係数、及び、外部磁場係数から、その時のエネルギーを計算することができる。イジングモデルのエネルギー関数は一般的に次式で表わされる。【０００５】
【数１】
2017037902.tif 000003
【０００６】
なお、σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値、Ｊｉｊはｉ番目とｊ番目のスピンの間の相互作用係数、ｈｉはｉ番目のスピンに対する外部磁場係数、σはスピンの配列を表わすものとする。【０００７】
（１）式において、第一項は、スピン間の相互作用に起因するエネルギーを計算するものである。一般的にイジングモデルは無向グラフとして表現され、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。そのため、第一項ではｉ＜ｊを満たすσｉ，σｊの組み合わせについて、相互作用係数の影響を計算している。また第二項は、各スピンに対する外部磁場に起因するエネルギーを計算するものである。【０００８】
イジングモデルの基底状態探索とは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。相互作用係数及び外部磁場係数の値域に制限を付けないときには、トポロジが非平面グラフになるイジングモデルの基底状態を求めることはＮＰ困難問題であることが知られている。【０００９】
イジングモデルの基底状態探索は、元々イジングモデルが対象としていた磁性体の振る舞いを説明することのみならず、様々な用途に用いられている。これは、イジングモデルが相互作用に基づく最も単純なモデルであり、同様に相互作用に起因する様々な事象を表現する能力を持っているためである。【００１０】
また、イジングモデルの基底状態探索は、ＮＰ困難なグラフ問題として知られている最大カット問題にも対応する。このようなグラフ問題は、ソーシャルネットワークにおけるコミュニティの検出や、画像処理におけるセグメンテーションなど、幅広い応用を持っている。そのため、イジングモデルの基底状態探索を行うソルバがあれば、このような様々な問題に適用することができる。【００１１】
ところで、イジングモデルの基底状態を求めることは、前述したようにＮＰ困難問題である。したがって、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリステックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象を利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。例えば、このような装置として、特許文献１に記載の装置がある。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】国際公開第２０１２／１１８０６４号
【発明の概要】
【発明が解決しようとする課題】
【００１３】
前記特許文献１に記載のような装置では、解くべき問題に対応した並列度が必要になってくる。イジングモデルの場合では、基底状態を探索すべきイジングモデルのスピン数に対応して、それぞれのスピンや、当該スピンにおける他のスピンとの相互作用を表現する素子（以下、これを単位素子と呼ぶ）が必要となる。例えば、前記特許文献１に開示された装置では、スピンとレーザを対応させているため、スピン数に比例した数のレーザが必要となる。すなわち、多数の単位素子を搭載可能なスケーラビリティの高さが必要となる。【００１４】
以上のことを考慮した場合、単位素子を規則的に多数並べて実現できる半導体のような固体素子でイジングモデルの基底状態探索を行えることが望ましい。特に、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの記憶装置に代表されるようなアレイ構造であり、かつ集積性を高められるように単位要素が単純な構造であることが望ましい。【００１５】
例えば、多数のスピンを含む大規模なイジングモデルの基底状態を探索可能な半導体システムを構築するためには、単位素子をスピン数に応じた数だけ半導体チップに搭載する必要がある。そして、イジングモデルのサイズより半導体チップが対応可能なスピン数が大きく、イジングモデルが漏れなく半導体チップに写像可能であることが望ましい。しかし、解くべき問題の問題サイズが拡大することを考慮すると、１個の半導体チップだけで対応した場合、チップサイズが大きくなり、また製造コストも高くなる。従って、このような半導体システムを実現するに際しては、ある程度の数の単位素子が搭載された半導体チップを複数使用するようにして構築することが望ましい。【００１６】
また、半導体チップを複数使用することを前提とした場合、半導体チップ間の接続においては、チップ内の接続と比べて、配線幅やスピードなどの物理的な制約から、データ伝送が疎になることが多い。従って、複数の半導体チップを前提にしたイジングモデルの基底状態探索においては、最適な分割方法が存在し、それに対応することが必要となる。【００１７】
本発明の目的は、例えばイジングモデルなどのような大規模かつ複雑な相互作用モデルの計算を最適な分割方法で行うことができ、安価かつ容易に製造可能な半導体システムおよび計算方法を提供することにある。【００１８】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１９】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。【００２０】
一実施の形態における半導体システムは、複数の半導体チップと、前記複数の半導体チップに接続されたコントローラとを備える半導体システムである。前記複数の半導体チップの各々は、複数のノード間の相互作用によって処理が実行される相互作用モデルで表現された問題データの各ノードの値が格納される第１のメモリと、前記問題データの各ノードに関する係数が格納される第２のメモリと、前記第１のメモリに格納された前記各ノードの値を更新する演算回路とを含むユニットを複数備える。【００２１】
前記コントローラは、処理対象とする問題データの各ノードの値が格納される第３のメモリと、前記処理対象とする問題データの各ノードに関する係数が格納される第４のメモリと、前記処理対象とする問題データの分割する際の境界を指定するための前記第３及び前記第４のメモリのアドレスが設定されるレジスタと、前記レジスタの設定値で指定された範囲の問題データが、前記複数の半導体チップのいずれかにまとめて配置されるように、前記第３及び前記第４のメモリのアドレスと前記複数の半導体チップの各々のアドレスとの対応関係を設定するアドレス生成部と、前記対応関係に基づき、前記第３及び前記第４のメモリに格納された前記各ノードの値及び前記係数を前記複数の半導体チップへ伝送するデータ展開部と、前記複数の半導体チップの前記第１のメモリに格納された前記各ノードの値を受信し、前記対応関係に基づき前記第３のメモリへ格納するデータ集計部とを備える。【００２２】
一実施の形態における計算方法は、複数の半導体チップと、前記複数の半導体チップに接続されたコントローラとを備える半導体システムの計算方法である。前記半導体システムは、上述した一実施の形態における半導体システムと同様の構成を備える。そして、前記アドレス生成部は、前記レジスタの設定値で指定された範囲の問題データが、前記複数の半導体チップのいずれかにまとめて配置されるように、前記第３及び前記第４のメモリのアドレスと前記複数の半導体チップの各々のアドレスとの対応関係を設定する。前記データ展開部は、前記対応関係に基づき、前記第３及び前記第４のメモリに格納された前記各ノードの値及び前記係数を前記複数の半導体チップへ伝送する。前記データ集計部は、前記複数の半導体チップの前記第１のメモリに格納された前記各ノードの値を受信し、前記対応関係に基づき前記第３のメモリへ格納する。
【発明の効果】
【００２３】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下の通りである。【００２４】
一実施の形態によれば、例えばイジングモデルなどのような大規模かつ複雑な相互作用モデルの計算を最適な分割方法で行うことができ、安価かつ容易に製造可能な半導体システムおよび計算方法を実現することができる。
【図面の簡単な説明】
【００２５】
【図１】第１の実施の形態における半導体システムを含む情報処理システムの全体構成の一例を示したブロック図である。
【図２】第１の実施の形態において、半導体システムの構成の一例と、問題分割の調整機能について示したブロック図である。
【図３】第１の実施の形態において、半導体チップの構成の一例を示したブロック図である。
【図４】第１の実施の形態において、イジングモデルの構成の一例を示した図である。
【図５】第１の実施の形態において、スピンユニットの構成の一例を示した図である。
【図６】第１の実施の形態において、問題データ格納部とスピンデータ格納部の構成の一例を示した図である。
【図７】第１の実施の形態において、問題データとスピンデータの配置イメージの一例を示した図である。
【図８】第１の実施の形態において、問題分割設定レジスタのレジスタセットの一例を示した図である。
【図９】第１の実施の形態において、問題分割設定レジスタのレジスタセットの別の一例を示した図である。
【図１０】第１の実施の形態において、半導体チップの実装の一例と、チップ間接続時の端子制御について説明した図である。
【図１１】第１の実施の形態において、半導体チップの実装の一例と、チップ間接続時の端子制御について説明した図である。
【図１２】第１の実施の形態において、半導体チップの実装の一例と、チップ間接続時の端子制御について説明した図である。
【図１３】第１の実施の形態において、チップ間接続時の端子制御に関わるレジスタの設定の一例を示した図である。
【図１４】第１の実施の形態において、チップ間接続部のブロック構成の一例を示した図である。
【図１５】第１の実施の形態において、チップ間接続部の送信用バッファ及び受信用バッファとスピンユニットのデータ伝送を実現するための構成の一例を示した図である。
【図１６】第１の実施の形態を適用した場合で、問題分割設定レジスタのレジスタセットの一例（図８の内容）における半導体チップで基底状態探索を実施する場合のフローチャートの一例を示した図である。
【図１７】第１の実施の形態を適用した場合で、問題分割設定レジスタのレジスタセットの一例（図９の内容）における半導体チップで基底状態探索を実施する場合のフローチャートの一例を示した図である。
【図１８】第２の実施の形態において、半導体システムの構成の一例を示したブロック図である。
【図１９】第２の実施の形態において、問題データと解析部との関係の一例を示した図である。
【図２０】第３の実施の形態において、半導体システムの構成の一例を示したブロック図である。
【図２１】第３の実施の形態において、複数の半導体チップで複数のイジングモデルを解く場合の設定の一例を示した図である。
【図２２】第３の実施の形態において、複数の半導体チップで複数のイジングモデルを解く場合の設定の一例を示した図である。
【発明を実施するための形態】
【００２６】
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００２７】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００２８】
以下、実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
［第１の実施の形態］
【００２９】
第１の実施の形態は、例えばイジングモデルなどのような大規模かつ複雑な相互作用モデルの計算を最適な分割方法で行うことができ、安価かつ容易に製造可能な半導体システムに関する。
＜相互作用モデル＞
【００３０】
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは、モデルを構成する複数個のノードと、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが、いずれも相互作用モデルの一形態であると解釈できる。
【００３１】
また、相互作用モデルの特徴として、ノード間の影響を２個のノード間の相互作用に限定している（２体間の相互作用）ことがあげられる。例えば、宇宙空間にある惑星の力学を考えてみると、惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが、惑星間の影響は２個の惑星間にとどまらず、３個以上の惑星が互いに影響し合って複雑な挙動を示す（いわゆる３体問題や多体問題と言われる問題になる）。
【００３２】
物理学の世界で代表的な相互作用モデルの例として、イジングモデルをあげることができる。イジングモデルとは＋１／−１（ないしは上、下など）の２状態を取るスピンをノードとして、２個のスピン間の相互作用を決める相互作用係数と、個々のスピンに対するバイアスである外部磁場係数でモデルが定義される。
【００３３】
また、生物学の世界では脳をモデル化したニューラルネットワークが相互作用モデルの一例である。ニューラルネットワークは神経細胞のニューロンを模した人工ニューロンをノードとして、人工ニューロン間はシナプス結合という相互作用を持つ。また、各ニューロン毎にバイアスを与える場合もある。
【００３４】
社会科学の世界では、例えば人間のコミュニケーションを考えると、人間というノードと言語や通信で成される相互作用があることは容易に理解できよう。また、各人間には個別にバイアスがあることも想像できる。そのため、人間のコミュニケーションを、相互作用モデルという点で共通なイジングモデル等に模してその特性を明らかにしようという研究もなされている。
【００３５】
以下においては、イジングモデルの基底状態探索を行う半導体システム、およびこの半導体システムを含む情報処理システムの例を説明する。
＜イジングモデル＞
【００３６】
本実施の形態では、イジングモデルを拡張した、以下の（２）式で示されるモデルを、これ以降イジングモデルと呼ぶものとする。
【００３７】
【数２】
2017037902.tif 000004
【００３８】
（１）式で示したイジングモデルとの違いは、（２）式では有向グラフで示されるような相互作用が許されることにある。一般的にイジングモデルはグラフ理論では無向グラフとして描画することができる。それは、イジングモデルの相互作用は、ｉ番目スピンからｊ番目スピンへの相互作用係数Ｊｉ，ｊとｊ番目スピンからｉ番目スピンへの相互作用係数Ｊｊ，ｉとを区別していないことによる。
【００３９】
本実施の形態では、イジングモデルを拡張し、Ｊｉ，ｊとＪｊ，ｉとを区別しても適用できるため、有向グラフ化したイジングモデルを取り扱う。なお、無向グラフのイジングモデルを有向グラフのイジングモデルで取り扱う場合には、単にＪｉ，ｊとＪｊ，ｉとの双方向に同じ相互作用係数を定義することで可能である。この場合、同じモデルでも（１）式のエネルギー関数に対して（２）式のエネルギー関数ではエネルギーの値が２倍になる。
【００４０】
以上を前提に、以降、本実施の形態における半導体システム、およびそれを含む情報処理システムについて説明する。
＜半導体システムを含む情報処理システム＞
【００４１】
図１は、本実施の形態における半導体システムを含む情報処理システムの全体構成の一例を示したブロック図である。図１に示す情報処理システムにおいて、１０１はＣＰＵ（Central Processing Unit）、１０２はメモリ、１０３は記憶装置、１０４は半導体システム、１０５はシステムバスである。この情報処理システムは、パーソナルコンピュータやワークステーション又はサーバなどから構成され、システムバス１０５を介してＣＰＵ１０１、メモリ１０２、記憶装置１０３及び複数の半導体システム１０４が接続される。
【００４２】
ＣＰＵ１０１は、情報処理システム全体の動作制御を司るプロセッサである。このＣＰＵ１０１は、演算装置に相当する。またメモリ１０２は、例えば揮発性の半導体メモリから構成され、各種プログラムを記憶するために利用される。記憶装置１０３は、例えばハードディスク装置やＳＳＤ（Solid State Drive）などから構成され、プログラムやデータを長期間保持するために利用される。
【００４３】
本実施の形態の場合、記憶装置１０３には、本情報処理システムが解くべきイジング形式の問題データ（計算用データ）が格納される。
【００４４】
半導体システム１０４は、イジングモデルの基底状態探索を行う専用ハードウェアである。図１では、２つの半導体システム１０４を図示しているが、１つや３つ以上の場合もあり得る。
＜半導体システム＞
【００４５】
図２は、半導体システム１０４の構成の一例と、問題分割の調整機能について示したブロック図である。図２に示すように、半導体システム１０４は、コントローラ１０６、システムＩ／Ｆ１０７、レジスタ１０８、データ処理部１０９、クロック生成部１１０、問題データ格納部１１１、スピンデータ格納部１１２、相互作用制御信号生成部１２７、乱数発生部１２８、データＩ／Ｆ１１３、専用バス１１４及び半導体チップ群１１５を備えて構成され、システムＩ／Ｆ１０７及びシステムバス１０５を介してＣＰＵ１０１との間でコマンドやデータの送受を行う。
【００４６】
半導体チップ群１１５は、それぞれが単体でイジングモデルの基底状態探索を行う専用のハードウェアである複数の半導体チップ１１６から構成される。また、半導体チップ１１６間はチップ間配線１１７により接続されており、このチップ間配線１１７を介して半導体チップ１１６同士が必要な情報を送受する。
【００４７】
システムＩ／Ｆ１０７は、システムバス１０５を介して、コマンドやパラメータ値、各種データが入力され、入力されたコマンドやパラメータ値、各種データをレジスタ１０８やデータ処理部１０９に転送する。
【００４８】
問題データ格納部１１１は、イジングモデルの相互作用係数と外部磁場係数を格納するブロックであり、システムＩ／Ｆ１０７を介して記憶装置１０３に格納された問題データが転送される。
【００４９】
スピンデータ格納部１１２は、イジングモデルのスピンの値を格納するブロックであり、システムＩ／Ｆ１０７を介して記憶装置１０３に格納されたスピンデータが転送される。
【００５０】
レジスタ１０８は、例えば図２を例にすると、相互作用係数と外部磁場係数とスピンで表現される問題のサイズを規定する問題設定レジスタ１１８と、コントローラ１０６が制御対象とする半導体チップ１１６のチップ数を規定するチップ数設定レジスタ１２０と、１チップで対応可能な問題のサイズを規定するチップ仕様設定レジスタ１２１と、問題分割設定レジスタ１２９で構成する。本レジスタ値は、システムＩ／Ｆ１０７を介して設定され、コントローラ１０６内、例えばデータ処理部１０９で参照される。
【００５１】
データ処理部１０９は、アドレス生成部１２３と、データ生成部１２４と、展開部１２５と、データ集計部１２６で構成され、システムバス１０５とシステムＩ／Ｆ１０７を介して、記憶装置１０３から伝送される問題データを複数の半導体チップ１１６に展開するための処理を実施する。
【００５２】
詳細は後述するが、アドレス生成部１２３は、問題設定レジスタ１１８と、チップ数設定レジスタ１２０と、チップ仕様設定レジスタ１２１と、問題分割設定レジスタ１２９を参照して、問題データ格納部１１１とスピンデータ格納部１１２に格納された各データを展開先のチップ毎に読み出すためのアドレスを規定する。
【００５３】
データ生成部１２４は、指定されたアドレスに対応する問題データを問題データ格納部１１１から読み出し、スピンデータ格納部１１２からスピンデータを読み出す。そして展開部１２５は、半導体チップ１１６毎のデータ伝送を実現するため、伝送データに対して、伝送先のチップ番号と問題データ／スピンデータの判定信号を付与し、データＩ／Ｆ１１３に転送する。
【００５４】
データ集計部１２６は、複数の半導体チップ１１６で基底状態探索を実施した結果、あるいは途中結果を専用バス１１４とデータＩ／Ｆ１１３を介して回収し、探索結果であるスピン値をスピンデータ格納部１１２に書き込む。なお、データ集計部１２６では、前述したアドレス生成部１２３で実現する各データのアドレスと、伝送先であるチップ番号とローカルアドレスの関係の規定に対して逆変換を実施する。つまり、専用バス１１４を介して入力されるチップ番号、問題データ／スピンデータの判定信号とローカルアドレスをスピンデータ格納部１１２のアドレスに変換して、スピンデータ格納部１１２上のスピン値を更新する。
【００５５】
データＩ／Ｆ１１３は、コントローラ１０６と半導体チップ群１１５間でデータを送受信するインタフェースである。例えば、図２で図示はしていないが、バッファを有しており、展開部１２５から転送された全てのデータが専用バス１１４を介して半導体チップ群１１５へ転送されるように制御される。
【００５６】
クロック生成部１１０は、コントローラ１０６の外部から入力されるベースクロックＣＬＫを基準に、コントローラ１０６内部の論理回路を動作させるクロック１と、複数の半導体チップ１１６を動作させるクロック２と、半導体チップ１１６間のデータ伝送に使用するクロック３を生成する。
【００５７】
相互作用制御信号生成部１２７は、半導体チップ１１６における相互作用動作を実現するためのアドレス信号とクロック信号を生成するブロックである。
【００５８】
乱数発生部１２８は、半導体チップ１１６に対して供給されるＲＮＤ信号を発生させるブロックである。詳細は後述するが、ＲＮＤ信号を使用することで、グラフ問題における局所最適解から脱出し、大域最適解への収束性を向上させる。
【００５９】
専用バス１１４は、コントローラ１０６と半導体チップ群１１５を構成する複数の半導体チップ１１６が接続され、データ処理部１０９が生成するルールに従って、複数の半導体チップ１１６への問題データとスピンデータの展開と、複数の半導体チップ１１６からのスピンデータの回収を実施する。これにより、半導体チップ１１６間のデータ伝送も実現する。
【００６０】
なお、半導体システム１０４において、コントローラ１０６と複数の半導体チップ１１６との間の接続には、専用バス１１４に代えて、スイッチを用いることも可能である。
＜半導体チップの構成＞
【００６１】
図３は、半導体チップ１１６の構成の一例を示したブロック図である。図３に示す半導体チップ１１６において、４０１はＩ／Ｆ、４０２はチップ間伝送Ｉ／Ｆ、４０３はレジスタ、４０４はメモリコントローラ、４０５はスピンアレイ、４０６は相互作用Ｉ／Ｆ、４０７は相互作用アドレスデコーダ、４０８はチップ間伝送部コントローラ、４１０は送信用バッファ、４１１は受信用バッファである。なお、本実施の形態では、半導体チップ１１６は現在広く用いられているＣＭＯＳ（Complementary Metal-Oxide Semiconductor）集積回路として実装されていることを想定して説明するが、他の固体素子であっても構わない。
【００６２】
Ｉ／Ｆ４０１は、半導体チップ１１６が専用バス１１４と接続されるブロックであり、コントローラ１０６と問題データやスピンデータを送受信する際のインタフェースである。
【００６３】
半導体チップ１１６においては、スピンアレイ４０５はＳＲＡＭで構成される。したがって、メモリコントローラ４０４はＳＲＡＭコントローラとして動作する。より具体的に言うと、イジングモデルのスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉをすべてスピンアレイ４０５内のメモリセルに記憶する情報で表現する。スピンσｉの初期状態の設定や基底状態探索完了後の解の読み出しはメモリコントローラ４０４を介して行う。
【００６４】
また、半導体チップ１１６では、基底状態を探索すべきイジングモデルをスピンアレイ４０５に設定するための相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉのリード／ライトもメモリコントローラ４０４を介して実施する。そのため、スピンアレイ４０５内のスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉにはアドレスを付与する。そして、スピンσｉ、相互作用係数Ｊｉ，ｊ又は外部磁場係数ｈｉをリード／ライトする場合、メモリコントローラ４０４はアドレス指定とＲ／Ｗ（リード／ライト）制御信号を出力し、データバスを介して読み書きする。
【００６５】
また、半導体チップ１１６は、イジングモデルの基底状態探索の実施するための相互作用Ｉ／Ｆ４０６と相互作用アドレスデコーダ４０７を有し、基底状態探索は、スピンアレイ４０５の内部のスピン間で相互作用を実施することで実現する。相互作用Ｉ／Ｆ４０６はコントローラ１０６から入力されるアドレスとクロックを相互作用アドレスデコーダ４０７に転送する。そして、相互作用アドレスデコーダ４０７は、転送されたアドレスに基づいて相互作用を行うスピン群を指定し、クロックはスピンアレイ４０５に搭載した相互作用回路を動作させる。
【００６６】
相互作用回路の詳細は後述するが、ここでは基底状態探索の流れを簡単に説明する。まず、相互作用アドレスデコーダ４０７は、相互作用Ｉ／Ｆ４０６を介して入力されるアドレスに基づいて、スピンアレイ４０５内のメモリセルに格納された相互作用係数Ｊｉ，ｊと外部磁場係数ｈｉ、及びスピン値をリードする。そして、搭載した相互作用回路で相互作用を実施した後で、リード／ライトを行う。
【００６７】
加えて、半導体チップ１１６は、後述のようにイジングモデルのスピンを表現するメモリセルの値を確率的に反転させる乱数を注入するための乱数注入線を有している。図２で説明した乱数発生部１２８により発生されたＲＮＤ信号は、この乱数注入線を介してスピンアレイ４０５に与えられる。
【００６８】
次に、隣接チップ間のデータ伝送について説明する。隣接チップ間のデータ伝送は、レジスタ４０３とチップ間伝送部コントローラ４０８と送信用バッファ４１０と受信用バッファ４１１とチップ間伝送Ｉ／Ｆ４０２で実現する。まず、チップ間伝送部コントローラ４０８は、メモリコントローラ４０４を介してｍビット毎にスピンアレイ４０５の境界部のスピン値を読み出す。そして、チップ内においては最終的にチップ間伝送Ｉ／Ｆ４０２に転送して、ｎビット幅のチップ間伝送Ｉ／Ｆ４０２が境界部のスピン値を別チップに対して伝送する。ここで、送信用バッファ４１０は読み出したデータのビット幅ｍとチップ間伝送Ｉ／Ｆ４０２のビット幅ｎの間を調停する役割を果たす。
【００６９】
例えば、ｍ＞ｎの場合は、チップ間伝送Ｉ／Ｆ４０２のビット幅ｎが小さいため、一旦ｍビットのスピン値を送信用バッファ４１０に格納し、チップ間伝送Ｉ／Ｆ４０２がｎビットずつ複数に分けて読み出し、他チップに対して伝送する。また、ｍ＜ｎの場合は、読み出したデータのビット幅ｍが小さいため、ｍビットずつスピン値を読み出し、送信用バッファ４１０にｎビットのデータが格納された時点でチップ間伝送Ｉ／Ｆ４０２が他チップに対して伝送する。なお、他チップから半導体チップ１１６へのスピン値伝送は、受信用バッファ４１１を介して、前述した送信側と同様な動作により実現する。
＜イジングモデルの構成＞
【００７０】
図４は、イジングモデルの構成の一例を示した図である。図４では、スピンユニットを複数個並べることで、３次元格子状のトポロジを持つイジングモデルを構成する例を示している。図４において、５０１と５０２はスピンであり、５０３と５０４は相互作用係数、５０５は外部磁場係数、５０６はスピンユニットである。図４の例は、３（Ｘ軸方向）×３（Ｙ軸方向）×２（Ｚ軸方向）の大きさの３次元格子である。座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、図面奥行き方向をＺ軸としているが、３次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図４の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数５のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数６が必要となる。
【００７１】
図４に示す１個のスピンユニット５０６には、隣接するスピン（例えば隣接するスピンが５個の場合σｊ、σｋ、σｌ、σｍ、σｎ）の値が入力される。そして、スピンユニット５０６は、当該のスピン値と、外部磁場係数と、隣接するスピン間に存在する相互作用係数（Ｊｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉ）で構成され、半導体チップ１１６においては対応するメモリセルを有している。
【００７２】
ところで、前述したように、イジングモデルは一般的に無向グラフで表現される相互作用を有している。上述した（１）式では、相互作用を表わす項として、Ｊｉ，ｊ×σｉ×σｊがあるが、これはｉ番目スピンからｊ番目スピンへの相互作用を示している。この場合、一般的なイジングモデルではｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。つまり、Ｊｉ，ｊとＪｊ，ｉは同一である。しかし、本実施の形態の半導体チップ１１６では、先に述べたようにこのイジングモデルを有向グラフに拡張し（（２）式）、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【００７３】
そのため、１個のスピンユニット５０６をｉ番目スピンσｉと考えた時に、このスピンユニット５０６が保持する相互作用係数であるＪｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉは、隣接するｊ番目、ｋ番目、ｌ番目、ｍ番目、ｎ番目のスピンσｊ、σｋ、σｌ、σｍ、σｎから、ｉ番目スピンσｉへの相互作用を決めるものである。このことは、図４において、スピンユニット５０６に含まれている相互作用係数が対応する矢印（相互作用）が、図示されているスピンユニット５０６の外部のスピンから、スピンユニット５０６の内部のスピンに向かっていることに対応している。
＜スピンユニットの構成＞
【００７４】
図５は、スピンユニット５０６の構成の一例を示した図である。図５に示すスピンユニット５０６において、６０１はメモリセル群であり、６０２は論理ブロック、６０３〜６１５はメモリセル、６１６はＸＮＯＲ（排他的論理和の否定）、６１７はスイッチ、６１８は多数決論理回路、６１９は反転論理回路、６２０はセレクタである。
【００７５】
スピンユニット５０６は、イジングモデルのスピンσｉ、相互作用係数Ｊｊ，ｉ〜Ｊｎ，ｉ及び外部磁場係数ｈｉを保持するためのメモリセル群６０１を有しており、その内訳は、複数の１ビットのメモリセル６０３〜６１５（Ｎ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１）で構成される。なお、メモリセル６０４及び６０５、メモリセル６０６及び６０７、メモリセル６０８及び６０９、メモリセル６１０及び６１１、メモリセル６１２及び６１３、並びに、メモリセル６１４及び６１５は、それぞれ２個１組で役割を果たす。
【００７６】
ここで、スピンユニット５０６はｉ番目のスピンを表現するものとして、メモリセルに格納するデータの定義について説明する。メモリセル６０３（Ｎ用）はスピンσｉを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは＋１／−１（＋１を上、−１を下とも表現する）であるが、これをメモリセルが保持可能な２値である０／１に対応させる。例えば、＋１を１、−１を０に対応させる。
【００７７】
メモリセル６０４〜６１５（ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘ）は、末尾の数字が０と１の２つのメモリセル（例えばメモリセル６０４〜６０５（ＩＳｘ）の場合にはメモリセルＩＳ０及びＩＳ１）の組合せで、＋１／０／−１の３値を表現する。例えば、メモリセル６０４〜６０５（ＩＳｘ）の場合には、メモリセル６０５（ＩＳ１）で＋１／−１を表現し、メモリセル６０５（ＩＳ１）が保持する値が１の時は＋１、メモリセル６０５（ＩＳ１）が保持する値が０の時には−１を表す。
【００７８】
これに加えて、メモリセル６０４（ＩＳ０）が保持する値が０の時には外部磁場係数を０と見なし、メモリセル６０４（ＩＳ０）が保持する値が１の時にはメモリセル６０５（ＩＳ１）が保持する値で決まる＋１／−１のいずれかを外部磁場係数とする。外部磁場係数が０の時は外部磁場係数をディセーブルしていると考えれば、メモリセル６０４（ＩＳ０）に保持された値は外部磁場係数のイネーブルビットであると言うことができる（ＩＳ０＝１の時に、外部磁場係数がイネーブルされる）。相互作用係数を記憶するメモリセル６０６〜６１５（ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘ）も同様に係数とビットの値とを対応させている。
【００７９】
なお、スピンユニット５０６内のメモリセル６０３〜６１５（Ｎ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０及びＩＦ１）は、それぞれ半導体チップ１１６の外部からリード／ライト可能とする。そして、メモリコントローラ４０４でこれらのスピンユニット５０６を駆動、制御又は読み出しすることにより、一般的なＳＲＡＭ（Static Random Access Memory）と同様にスピンユニット５０６内のメモリセル６０３〜６１５をリード／ライトすることができるようにする。
【００８０】
次に、メモリセル６０３〜６１５を参照して、実際に相互作用を実施する論理ブロック６０２について説明する。
【００８１】
論理ブロック６０２は、ＸＮＯＲ（排他的論理和の否定）回路６１６とスイッチ６１７と、多数決論理回路６１８と反転論理回路６１９とセレクタ６２０から成る相互作用回路で構成される。そして、相互作用結果に応じてスピンの状態を決定する相互作用回路は、スピンユニット５０６毎に独立して設置する。独立して設置することにより、スピン値の同時更新を可能にする。
【００８２】
スピンユニット５０６は、外部とのインタフェースとして、信号線ＥＮ，ＮＵ１，ＮＬ１，ＮＲ１，ＮＤ１，ＮＦ１、ＮＯＵＴ及びＲＮＤを有する。信号線ＥＮは当該スピンユニット５０６のスピンの更新を許可する切替え信号を入力するインタフェースである。この切替え信号でセレクタ６２０を制御することで、メモリセル６０３（Ｎ）に保持されたスピンの値を、後述の多数決論理回路６１８と反転論理回路６１９を介して与えられる値に更新することができる。
【００８３】
信号線ＮＯＵＴは、当該スピンユニット５０６のスピンの値を他のスピンユニット５０６（図４のトポロジで隣接するユニット）に出力するインタフェースである。信号線ＮＵ，ＮＬ，ＮＲ，ＮＤ及びＮＦは、それぞれ他のスピンユニット５０６（図４のトポロジで隣接するユニット）が保持するスピンの値を入力するためのインタフェースである。信号線ＮＵは上側のスピン（Ｙ軸方向で−１）、信号線ＮＬは左側のスピン（Ｘ軸方向で−１）、信号線ＮＲは右側のスピン（Ｘ軸方向で＋１）、信号線ＮＤは下側のスピン（Ｙ軸方向で＋１）、信号線ＮＦは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）からの入力である。
【００８４】
スピンユニット５０６では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を見たときに、正の値と負の値のどちらが支配的か判断することと等価である。例えば、ｉ番目スピンσｉに、スピンσｊ、σｋ、σｌ、σｍ及びσｎが隣接しているとして、スピンσｉの次状態は以下のように決まる。
【００８５】
まず、隣接スピンの値はσｊ＝＋１、σｋ＝−１、σｌ＝＋１、σｍ＝−１、σｎ＝＋１とし、相互作用係数はＪｊ，ｉ＝＋１、Ｊｋ，ｉ＝＋１、Ｊｌ，ｉ＝＋１、Ｊｍ，ｉ＝−１、Ｊｎ，ｉ＝−１、外部磁場係数ｈｉ＝＋１とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σｊ×Ｊｊ，ｉ＝＋１、σｋ×Ｊｋ，ｉ＝−１、σｌ×Ｊｌ，ｉ＝＋１、σｍ×Ｊｍ，ｉ＝＋１、σｎ×Ｊｎ，ｉ＝−１、ｈｉ＝＋１となる。外部磁場係数は、常に値が＋１のスピンとの相互作用係数と読み替えて良い。
【００８６】
ここで、ｉ番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれｉ番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、ｊ番目スピンとの間での局所的なエネルギーは、ｉ番目スピンを＋１とした時には−１、ｉ番目スピンを−１としたときには＋１となるので、ｉ番目スピンを＋１にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。
【００８７】
このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えたときに、ｉ番目スピンを＋１／−１のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数及び隣接スピンの積と、外部磁場係数とをそれぞれ並べたものにおいて、＋１と−１のどちらが多いか数えれば良い。先程の例では、＋１が４個、−１が２個である。仮に、ｉ番目スピンを＋１とすると、エネルギーの総和は−２、ｉ番目スピンを−１とするとエネルギーの総和は＋２になる。よって、＋１の個数が多い時にはｉ番目スピンの次状態を＋１とし、−１の個数が多い時にはｉ番目スピンの次状態を−１にするという多数決で、エネルギーを最小化するｉ番目スピンの次状態を決定することができる。
【００８８】
ここで、前述した相互作用動作と図５に示す回路ブロックとの関係を説明する。まず、隣接スピンの状態と、相互作用係数の＋１／−１を示すメモリセル６０７（ＩＵ１），メモリセル６０９（ＩＬ１），メモリセル６１１（ＩＲ１），メモリセル６１３（ＩＤ１），メモリセル６１５（ＩＦ１）が保持する値との排他的論理和の否定をＸＮＯＲ回路６１６で求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる（＋１は１、−１は０にエンコードされているものとする）。
【００８９】
もし、相互作用係数が＋１／−１だけであれば、ＸＮＯＲ回路６１６の出力のうち＋１／−１のどちらが多いかを多数決論理回路６１８において多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態＋１のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次の状態を決定する多数決論理回路６１８に入力すべき値となる。
【００９０】
次に、係数０の実現方法について考える。ｎ入力の多数決論理ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ）があるとき、以下の命題は真であると言える。まず、入力Ｉ１，Ｉ２，Ｉ３，……，Ｉｎの複製Ｉ’１，Ｉ’２，Ｉ’３，……，Ｉ’ｎがあるとする（任意のｋについて、Ｉｋ＝Ｉ’ｋである）。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ）の出力は、複製もあわせて入力したｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ、Ｉ’１，Ｉ’２，Ｉ’３，……，Ｉ’ｎ）と等しい。つまり、各入力変数をそれぞれ２個ずつ入れても、出力は不変である。さらに、入力Ｉ１、Ｉ２、Ｉ３，……，Ｉｎの他に、もう一つの入力Ｉｘと、その反転！Ｉｘがあるとする。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ，Ｉｘ，！Ｉｘ）の出力は、ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ）と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数０を実現する。
【００９１】
具体的には、図５に示すように、ＸＮＯＲ回路６１６を利用して、係数のイネーブルを決めるビット（ビットセルＩＳ０，ＩＵ０，ＩＬ０，ＩＲ０，ＩＤ０及びＩＦ０にそれぞれ保持されたビット）の値により、多数決論理回路６１８に、先に述べたスピンの次の状態の候補となる値の複製か、その反転を同時に入力する。例えば、メモリセル６０４（ＩＳ０）が保持するビットの値が０の場合、メモリセル６０５（ＩＳ１）が保持するビットの値と、メモリセル６０５（ＩＳ１）が保持するビットの値を反転させた値が同時に多数決論理回路６１８に入力されるので、外部磁場係数の影響は無い（外部磁場係数が０に相当する）ことになる。また、メモリセル６０４（ＩＳ０）が保持するビットの値が１の場合には、メモリセル６０５（ＩＳ１）が保持するビットの値と、その値と同じ値（複製）が同時に多数決論理回路６１８に入力されることになる。
【００９２】
上述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することができるが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことができず、大域最適解に到達しない。そこで、局所最適解から脱出するための施策として、スピンユニット５０６は、スピンを表現するメモリセル６０３の値を確率的に反転させるため乱数注入線を有する。
【００９３】
そして、スピンユニット５０６には、上述した図２に示す乱数発生部１２８からスピンアレイ４０５に与えられたＲＮＤがこの乱数注入線に接続され、このＲＮＤが反転論理回路６１９に入力されることで、スピンの値を確率的に反転される。
【００９４】
以上の図４、図５の構成とそれぞれの動作により、個々の半導体チップ１１６は、スピンユニット５０６毎に相互作用を実現し、ＲＮＤによる制御を組み合わせることで、イジングモデルの基底状態探索を実現する。
＜問題分割の調整機能＞
【００９５】
次に、問題分割の調整機能について、上述した図２の他、図６〜図９を用いて説明する。図２では、問題分割の調整機能についても示している。
【００９６】
ここでは、説明を簡単にするために、上述した図２において、チップ１とチップ２の２個の半導体チップ１１６で単一のイジングモデルの基底状態探索を実施する場合を考える。その場合、図２に示すように、モデルの左側をチップ１、モデルの右側をチップ２に割り当てて、それぞれのチップに対応する相互作用係数、外部磁場係数からなる問題データと、スピンデータをコントローラ１０６が展開する。そして、各々のチップ内において基底状態探索を実施し、任意の周期でチップ間でもデータ伝送を実施する。
【００９７】
ここで、図２にあるように、問題の分割方法は、破線Ａ、破線Ｂ、破線Ｃが考えられるものとする。例えば、破線Ａを境界に設定して問題を解く場合は、破線Ａ上がチップ間の境界に相当し、境界に接するスピンデータがチップ間のデータ伝送対象になる。前述したように、チップ間のデータ伝送は、チップ内のデータ伝送と比べて疎になることが多いため、境界に接するスピンデータの更新結果に影響が発生し得る。ただし、チップの異なる境界に接するスピンデータの結合が弱い、つまり相互作用係数が小さければ、データ伝送が疎になった場合の影響は軽微であることが予想される。以上から、本実施の形態は、例えば、図２における問題の分割方法を破線Ａ、破線Ｂ、破線Ｃの選択をレジスタ１０８で実施できるようにしたものである。
＜問題の分割方法＞
【００９８】
次に、問題の分割方法の設定について、図６〜図９を用いて説明する。図６〜図９は、な半導体チップが５チップで構成された例を挙げ、問題データ、及びスピンデータを複数の半導体チップ１１６に展開する方法の一例を示した図である。
【００９９】
図６は、問題データ格納部１１１とスピンデータ格納部１１２の構成の一例を示した図である。問題データ格納部１１１とスピンデータ格納部１１２は、個別のメモリ領域であり、図６に示すように、左上を基点として右側に行くに従ってアドレス値が増加するものとする。
【０１００】
図７は、問題データとスピンデータの配置イメージの一例を示した図であり、問題設定レジスタ１１８で規定される問題のＸ方向のサイズ幅を参照して、問題データ、及びスピンデータを物理的な配置イメージで再構成したものである。より詳細に説明するならば、メモリ空間におけるアドレス値を問題のサイズ幅で除算すれば、該当するデータが配置イメージの何行目に相当するかが判るし、剰余で何列目に相当するかが判る。そして、図７の配置イメージで、各チップ１（１１６），２（２１１），３（２１２），４（２１３），５（２１４）に対応する始点アドレスと終点アドレスを規定できるようにする。例えば、チップ１に対応する始点アドレスは２０１とし、終点アドレスは２０２、チップ２に対応する始点アドレスは２０３とし、終点アドレスは２０４、チップ３に対応する始点アドレスは２０５とし、終点アドレスは２０６、チップ４に対応する始点アドレスは２０７とし、終点アドレスは２０８、チップ５に対応する始点アドレスは２０９とし、終点アドレスは２１０とする。
【０１０１】
図８は、問題分割設定レジスタ１２９のレジスタセットの一例を示した図であり、このレジスタセットの内訳を纏めたものである。図８の問題分割設定レジスタ１２９は、各チップ向けの始点アドレス指定レジスタと終点アドレス指定レジスタで構成するものとする。例えば、チップ１向けの始点アドレス指定レジスタは、始点アドレス２０１を設定し、チップ１向け終点アドレス指定レジスタは、終点アドレス２０２を設定する。他のチップ２〜５向けについては、図８の通りである。そして実際のデータ転送は、コントローラ１０６に含まれるアドレス生成部１２３が問題データ格納部１１１とスピンデータ格納部１１２のアドレスと、半導体チップ群１１５に含まれるチップのチップ番号とローカルアドレスの対応関係を示すテーブルを有しており、展開部１２５は問題分割設定レジスタ１２９のレジスタ値と、アドレス生成部１２３に含まれるテーブルを参照して、スピン値と問題データを各チップに展開する。
【０１０２】
なお、始点アドレス指定レジスタと終点アドレス指定レジスタを参照して、チップに伝送される問題のサイズは導出することにする。例えば、２次元格子の問題であれば、Ｘ方向の幅とＹ方向の幅もパラメータ化して、チップに伝送する。これにより、詳細は後述するが、データ伝送先のチップにおいて、チップ間のデータ伝送時の境界部制御を容易にすることができる（後述する図１５の内容）。
【０１０３】
また、コントローラ１０６は、導出した１チップ当たりの問題のサイズと、チップ仕様設定レジスタ１２１の設定を参照して、チップ仕様より問題サイズの方が大きければ、対応不可能であると判断することは容易である。つまり、レジスタ１０８で設定されたアドレス設定が有効であるか無効であるかの判断をコントローラ１０６で実施して、判断結果をメモリ１０２上で動作するプログラムに応答する構成も可能である。
【０１０４】
以上の構成により、問題分割設定レジスタ１２９と、その他レジスタ１０８に含まれるレジスタ値を参照すれば、複数チップを前提にした問題分割の調整が可能になる。
【０１０５】
図９は、問題分割設定レジスタ１２９のレジスタセットの別の一例を示した図である。前述した図８のレジスタセットにおいては、一意に問題分割を決定するが、最適な分割方法は明示的に示されるものではない。そこで、チップ仕様が許容できる範囲の中で、チップ間の境界アドレスを自動的に変更するようにしたのが図９である。ここでは、変更幅をゆらぎと呼び、ゆらぎ設定レジスタのレジスタ値を設定すれば、その範囲の中で、複数の境界アドレスを設定して計算できる。
【０１０６】
図９の例では、チップ間の境界はチップ１−２間、チップ２−３間、チップ３−４間、チップ４−５間の４箇所存在しているが、それぞれに３ビットのゆらぎレジスタを設置し、図８の内容で予め設定したアドレスに対して、ゆらぎなし「レジスタ値＝２’ｈ０」から最大で７種類（レジスタ値＝２’ｈ３）の設定を実現する。そして、４箇所のゆらぎレジスタを２’ｈ３に設定した場合は、１箇所で７種類のアドレスが設定され、それが４箇所あるので２４０１（＝７４）通りの分割方法が可能になる。
【０１０７】
なお、問題分割の設定毎に計算をシリアルに実施する場合は、計算時間が膨大になる恐れがある。その場合はゆらぎレジスタのレジスタ値を小さく設定するか、チップ間の境界部毎にレジスタ値を異ならせて、特に最適な分割方法を探索したい部位には大きなレジスタ値を設定し、それ以外は小さいレジスタ値を設定すれば、条件数が削減でき、計算時間の増加は抑制できる。
＜チップ間接続部における制御＞
【０１０８】
さらに、チップ間接続部における制御について、図１０〜図１５を用いて説明する。図１０〜図１２は、半導体チップの実装の一例と、チップ間接続時の端子制御について説明した図である。図１０〜図１２では、タイル状にＸ方向とＹ方向にチップを実装した場合を示しており、各チップは接続用のパッドを有し、隣接チップのパッド間を配線して接続する。図１０は１２チップ（４×３）で構成する場合であり、図１１は４チップ（１×４）で構成する場合、図１２は３チップ（３×１）で構成する場合である。各チップは実装場所によって、周囲にチップがある場合と、周囲にチップがない場合がある。周囲にチップがない場合は、チップ接続用のパッドからノイズが注入されないようにするため、パッドは、例えば内部的に電源に短絡するなどして、回路への影響を無くすることが望ましい。従って、複数チップを前提とした場合は、例えば、半導体チップ１１６内のレジスタ４０３にＣＯＮＮ＿ＴＹＰＥと呼ぶレジスタを設置して、実装状態に合わせてチップ状態を制御するものとする。なお、レジスタＣＯＮＮ＿ＴＹＰＥの真理値表の一例を図１３に示す。この真理値表に従って、図１０〜図１２の各チップは、図示したようにレジスタＣＯＮＮ＿ＴＹＰＥのレジスタ値が設定されるものとする。
【０１０９】
ここで、前述の真理値表について、図１３を用いて説明する。図１３は、チップ間接続時の端子制御に関わるレジスタの設定の一例を示した図である。本例では、レジスタＣＯＮＮ＿ＴＹＰＥは４ビットに設定し、例えば、ＣＯＮＮ＿ＴＹＰＥ＝４’ｈ０は、チップの上下左右に別チップを接続する場合に設定し、ＣＯＮＮ＿ＴＹＰＥ＝４’ｈ１は、チップの下左右に別チップを接続し、チップの上方には別チップを接続しない場合に設定する。また１チップのみで基底状態探索を実施する場合は、ＣＯＮＮ＿ＴＹＰＥ＝４ｈ’Ｆに設定すれば良い。他は、図１３の通りである。
【０１１０】
図１４は、半導体チップにおけるチップ間接続部のブロック構成の一例を示した図である。図１４では、Ｘ方向とＹ方向への拡張を実現することを前提に、データ伝送部を４系統設置している。すなわち、上下左右の別チップに接続するために、４つの伝送ブロック９０２〜９０５を備えている。各伝送ブロック９０２〜９０５には、送信用バッファ（図３の送信用バッファ４１０）と、受信用バッファ（図３の受信用バッファ４１１）と、転送Ｉ／Ｆ（図３のチップ間伝送Ｉ／Ｆ４０２）を有している。各伝送ブロック９０２〜９０５は、前述したレジスタＣＯＮＮ＿ＴＹＰＥの設定値に基づいて、各イネーブル信号ＥＮ＿ＵＰ、ＥＮ＿ＬＥＦＴ、ＥＮ＿ＲＩＧＨＴ、ＥＮ＿ＤＯＷＮを出力するバッファコントローラ９０１により制御される。
【０１１１】
なお、本実施の形態では、Ｘ方向とＹ方向への拡張を前提に説明したが、例えばＺ方向の拡張を考慮すると、データ伝送部を構成する送信用バッファと、受信用バッファと、転送Ｉ／Ｆの回路セットを奥行き前後の２セット追加したり、前述のレジスタＣＯＮＮ＿ＴＹＰＥのビット幅を増やす必要があるのは言うまでもない。
【０１１２】
まず、前述したレジスタＣＯＮＮ＿ＴＹＰＥに従って、バッファコントローラ９０１は、実際にデータ伝送を実施する送信用バッファと受信用バッファからなる伝送ブロック９０２〜９０５に対して、イネーブル信号ＥＮ＿ＵＰ、ＥＮ＿ＬＥＦＴ、ＥＮ＿ＲＩＧＨＴ、ＥＮ＿ＤＯＷＮを転送する。さらに、前述した問題分割設定レジスタ１２９を使用して問題データやスピンデータ分割時の境界線を変更する場合は、設定によって隣接する半導体チップに伝送すべきデータが異なるため、スピンアレイ４０５から送信用バッファに転送すべきスピンユニットは固定されない。これに対応するため、スピンアレイ４０５から送信用バッファにスピン値を転送すべきスピンユニットと、受信用バッファの値を参照するべきスピンユニットは、メモリコントローラ４０４で選択できるようにする。
【０１１３】
具体的には、コントローラ１０６から伝送される問題分割後の問題サイズの幅に相当する値から、算出する。例えば、チップに搭載されたスピンアレイの幅が１２８ユニット分の仕様で、コントローラ１０６から伝送された問題サイズ幅が１００であったならば、当該チップにおけるイジングモデルの外周に相当するスピン値が送信バッファに転送する為に、メモリコントローラ４０４で、境界部のスピンユニットから数えて、２９ユニット分内側のアドレスにアクセスする。これにより、所望のスピン値を送信用バッファに転送するようにする。なお、問題分割後の問題サイズ幅は、前述した始点アドレス指定レジスタと終点アドレス指定レジスタから算出するものとする。ただし、本内容は、問題分割方法を調整するレジスタを図６〜図９に示した仕様とした場合の例であり、同様の制御がメモリコントローラ４０４で実現できるのであれば、異なるレジスタ仕様であっても構わない。重要なのは、問題分割方法がレジスタで調整できることと、それに対応して隣接する半導体チップ間のスピンユニットが接続され、スピン値が転送されることである。
【０１１４】
図１５は、チップ間の境界を調整した場合のチップ間接続部の送信用バッファ４１０及び受信用バッファ４１１とスピンユニットのデータ伝送に着目し、本実施の形態を実現するための構成の一例を示した図であり、１００１はイジングモデル、１００２はスピン値格納領域、１００３と１００４はセレクタ（ＳＥＬＥＣＴ）、１００５〜１００８はスピン、１００９と１０１０は相互作用係数、１０１１〜１０１４はメモリ素子である。
【０１１５】
イジングモデル１００１は、説明を簡単にするために２次元の格子構造とし、外部磁場係数も省略する。また、イジングモデル１００１は、特に外周の右側を拡大したものであり、スピン１００５と相互作用係数１００９と同列のスピンは、当該チップが対応可能な領域の最外周とする。なお、詳細は後述するが、スピン１００６は隣接チップ専用のスピンとする。また、スピン値格納領域１００２には、スピン１００５に対応するメモリ素子１０１１とスピン１００６に対応するメモリ素子１０１２と、スピン１００７に対応するメモリ素子１０１３と、スピン１００８に対応するメモリ素子１０１４が構成されるものとする。
【０１１６】
また、図１５において、送信用バッファ４１０と受信用バッファ４１１と、セレクタ１００３とセレクタ１００４は複数存在しているが、これはスピン値格納領域１００２に含まれるメモリ素子の行毎にそれぞれを設置することを意味している。まず送信側から説明すると、セレクタ１００３の１つは、メモリ素子１０１１〜１０１４（１０１２は除く）のいずれからスピン値を読み出し、そのスピン値を送信用バッファ４１０の１つに転送する。そして、前述とは異なるセレクタ１００３の１つは、前述とは異なるメモリ素子、例えばメモリ素子１０１１〜１０１４（１０１２は除く）の一段下のメモリ素子群のいずれからスピン値を読み出し、前述とは異なる送信用バッファ４１０の１つに転送する。受信側も同様であり、受信側バッファ４１１の１つに格納された隣接チップのスピン値は、セレクタ１００４の１つを介して、メモリ素子１０１１〜１０１４のいずれかに転送される。そして、前述とは異なる受信用バッファ４１１の１つに格納された隣接チップのスピン値は、前述とは異なるセレクタ１００４の１つを介して、前述とは異なるメモリ素子、例えばメモリ素子１０１１〜１０１４の一段下のメモリ素子群のいずれかに転送される。
【０１１７】
これらを前提に、左右で隣接する２チップ間の境界設定について、２つの条件を想定して説明する。まずは、チップ仕様に対して、最外周までイジングモデルが割り付けられた条件、図１５を参照して言い換えるとスピン１００５が最外周だった場合を考える。図５に示したスピン６０３を中心に考えたスピンユニット５０６の１単位と考えてチップを設計すると、スピン１００５に関する相互作用係数１００９はスピンユニット５０６に含まれるが、その先に接続されるスピン１００６はスピンユニット５０６に含まれず、隣接した別のスピンユニットに含まれ、この例では隣接した別のチップに含まれる。これに対し、当該チップにおいて、隣接チップに含まれるスピン１００６を格納する専用のメモリ素子１０１２を設置する。そして、隣接チップのスピン値をメモリ素子１０１２に伝送し、最外周のスピンユニットにおいても相互作用の計算を実施できるようにする。
【０１１８】
次に、チップ仕様に対して、割り付ける問題サイズが小さい、例えば最外周から４個のスピンを使用しない条件を考える。この場合、当該チップにおけるイジングモデルの外周はスピン１００７になる。そして、相互作用係数１０１０を介して隣接チップのスピンが接続されるのはスピン１００８になるが、何も処理しなければスピン１００８は未使用領域のため、対応するメモリ素子１０１４には不定値が設定される。これに対し、隣接チップから取得するスピン値をメモリ素子１０１４に伝送して、スピン１００８に値が設定されて、当該チップで相互作用の計算が実施できるようにする。
【０１１９】
以上の２つの条件を対応可能にするのが、図１５に示すメモリコントローラ４０４の構成である。まず、メモリコントローラ４０４は、チップ仕様と割り付ける問題サイズに応じて、隣接チップから取得するスピン値を書き込むメモリ素子のアドレスを設定できるセレクタ１００４を有する。セレクタ１００４の動作は、チップ仕様と問題分割設定レジスタ１２９の設定値に応じて決定できるものとする。例えば、図８〜図９で説明した始点アドレスと終点アドレスを指定するレジスタを参照して簡単な演算を実施するのも一案である。そして、隣接チップから到来するスピン値は、受信用バッファ４１１を介してセレクタ１００４に入力され、セレクタ１００４の動作に従って、当該チップにおけるイジングモデルの外周のひとつ外側のメモリ素子に伝送するようにする。つまり、スピン１００５が最外周だった場合は、セレクタ１００４はメモリ素子１０１２を選択し、スピン１００７が最外周だった場合は、セレクタ１００４はメモリ素子１０１４を選択する。
【０１２０】
一方、隣接チップにおいてもスピン値が接続されないスピンユニットが存在する。これに対しては、当該チップからイジングモデルの外周のスピン値を伝送できれば良い。これを実現するため、メモリコントローラ４０４は、チップ仕様と割り付ける問題サイズに応じて、隣接チップへ転送するスピン値を読み出すメモリ素子のアドレスを設定できるセレクタ１００３を有する。セレクタ１００３の動作は、例えばセレクタ１００４で設定されたメモリ素子に対して内側に１個ずれたメモリ素子を指定できれば良い。そして、当該チップから伝送すべきスピン値は、セレクタ１００３の動作に従って、送信用バッファ４１０を介して隣接チップへと伝送される。つまり、スピン１００５が最外周だった場合は、セレクタ１００３はメモリ素子１０１１を選択し、スピン１００７が最外周だった場合は、セレクタ１００３はメモリ素子１０１３を選択する。
【０１２１】
これらの動作が隣接チップにおいても同様に実施できれば、双方向でのチップ間接続が可能になり、チップ間の領域分割の仕様調整が実現できる。
【０１２２】
なお、図１５では、イジングモデルは２次元として説明したが、３次元構造などに複雑であっても構わない。さらに、図１５では、実装上の左右で隣接した場合を例にして説明したが、実装上の上下であっても構わない。
【０１２３】
以上が第１の実施の形態を実現するためのブロック構成と各ブロックの動作に関する説明である。
＜基底状態探索＞
【０１２４】
次に、これまで説明してきた各ブロックの動作を踏まえて、基底状態探索の一連の動作について説明する。図１６〜図１７は半導体チップで基底状態探索を実施する場合のフローチャートの一例を示した図であり、図１６は問題設定レジスタ１２９を図８のレジスタセットを採用した場合のフローチャートを示し、図１７は問題設定レジスタ１２９を図９のレジスタセットを採用した場合のフローチャートを示した図である。
【０１２５】
図１６のフローチャートは、１回の基底状態探索はＮステップ（例えば計算ステップＮ＝３６０００）で実施し、初期値を異ならせたスピン値セットでＭ回（例えば初期値設定数Ｍ＝１０００）の基底状態探索を前提としている。この場合は、図８を説明した際に述べたように、問題分割は問題設定レジスタ１２９の設定値で一意に決定され、Ｍ種類の計算結果が取得できる。そして、さらに問題分割を調整する場合は、問題分割設定レジスタ１２９のレジスタ値を変更し、図１６のフローチャートを実施することになる。これによりＭ種類（初期値）×問題分割設定数で決定される条件数で計算結果が取得できる。次に図１６のフローチャートについて説明する。
【０１２６】
まず、各半導体チップに相互作用係数と外部磁場係数からなる問題データを設定し、試行回数用カウンタをリセット（ｍ＝０）する（Ｓ１、Ｓ２）。なお、問題分割設定レジスタ１２９の更新は、問題データ設定（Ｓ１）で実施されるものとする。そして、スピンデータの初期値を設定し、ステップ用カウンタをリセット（ＳＴＥＰ＝０）する（Ｓ３、Ｓ４）。次に、ステップ用カウンタをカウントアップ（ＳＴＥＰ＋＋）しながら、スピンユニット毎に相互作用を実施し、その結果に応じてスピンデータを更新していく（Ｓ５、Ｓ６）。相互作用の終了条件はステップ用カウンタ値で規定され、任意の計算ステップＮに到達したら基底状態探索の１回目の試行が終了し、１つの解を取得する（Ｓ７、Ｓ８）。
【０１２７】
これが一連の動作であり、試行回数用カウンタをカウントアップ（ｍ＋＋）しながら、スピンデータに新しい初期値を設定して、同様の動作をすることで初期値設定数Ｍの基底状態探索を実施する（Ｓ９、Ｓ１０）。なお、Ｓ８で取得した解はＣＰＵ１０１に転送する。そして試行回数がＭに到達したら、ＣＰＵ１０１は、コントローラ１０６から取得したＭ種類の解の中から、最低エネルギーを取得した結果を選択する（Ｓ１１）。ただし、Ｓ１１はコントローラ１０６で実施しても構わない。図２には図示していないが、コントローラにスピン値の初期値を発生させる乱数発生器と、取得した解を格納する解格納部と、取得した解の大小関係を導出できる比較器を搭載すれば、Ｓ１１が実現可能である。
【０１２８】
以上が図１６に示すフローチャートの基本動作であり、問題分割設定レジスタ１２９のレジスタ値を書き換えれば、スピンの初期値を異ならせるだけではなく、問題の分割方法が異なる条件での計算が可能になる。
【０１２９】
これに対し、図１７は、問題設定レジスタ１２９を図９のレジスタセットにした場合のフローチャートである。特に、ゆらぎ幅を設定するレジスタを追加して、問題分割方法としてＬ種類（例えば問題分割種数Ｌ＝５）を予め設定できるようにした点が異なっている。なお、問題分割種数Ｌは、図９のゆらぎ設定レジスタの設定値によって決定されるものであり、レジスタ値が２’ｈ０の場合はＬ＝１に対応し、レジスタ値が２’ｈ１の場合はＬ＝３（−１、０、＋１の３種類）に対応し、レジスタ値が２’ｈ２の場合はＬ＝５（−２、−１、０、＋１、＋２の５種類）に対応し、レジスタ値が２’ｈ３の場合はＬ＝７（−３、−２、−１、０、＋１、＋２、＋３の７種類）に対応する。次に図１７のフローチャートについて説明する。
【０１３０】
まず、問題分割種数用カウンタをリセット（ｄ＝０）する（Ｓ２１）。その後、前記図１６の場合（Ｓ１〜Ｓ１０）と同様に、問題データ設定（Ｓ２２）、試行回数ｍ＝０（Ｓ２３）、スピン値初期値設定（Ｓ２４）、ＳＴＥＰ＝０（Ｓ２５）、相互作用＆スピン値更新（Ｓ２６）、ＳＴＥＰ＋＋（Ｓ２７）、ＳＴＥＰ＜Ｎ判定（Ｓ２８）、基底探索結果格納（Ｓ２９）、ｍ＋＋（Ｓ３０）、試行回数ｍ＜Ｍ判定（Ｓ３１）を行う。なお、問題分割設定レジスタ１２９は問題データ設定（Ｓ２２）の初回時に設定された後は、更新する必要はなく、問題分割は、ゆらぎ幅設定レジスタのレジスタ値に応じて変更される。そして、問題分割種数用カウンタをカウントアップ（ｄ＋＋）しながら、問題分割種数Ｌの基底状態探索を実施する（Ｓ３２、Ｓ３３）。最後に、最低エネルギーを取得した結果を選択する（Ｓ３４）。
【０１３１】
これにより、一意のレジスタセットのみで、スピンの初期値を異ならせるだけではなく、問題の分割方法が異なる条件を設定可能にする。そして、（Ｍ×Ｌ）種類の基底状態探索が実施できるようにしたのが図９、及び図１７の特徴である。
【０１３２】
なお、問題分割の設定毎の計算をシリアルに実施する場合は、条件数が増加する為、計算時間が膨大になる恐れがある。これに対しては、問題分割の全条件において初期値を異ならせて計算させるのではなく、ある一条件において最適な初期値を探索し、最適と思われる１つあるいは複数の初期値に限定して、問題分割条件を変更した計算を実施しても構わない。本実施の形態は、スピン値の初期値だけではなく、問題分割条件を異ならせて計算することが特徴であるから、本内容を逸脱しない範囲で計算時間を短縮する施策を実施しても構わない。
【０１３３】
以上のこれまで説明してきたブロック構成、各ブロックの動作、制御フローにより、第１の実施の形態の特徴である問題分割設定レジスタ１２９による問題分割方法の調整を実現可能とし、レジスタ値を変化させれば、分割方法の異なる基底状態探索が実施できるため、結果として、より良好な最適解が取得できる可能性が向上する。
【０１３４】
なお、イジングモデルを前提に説明してきたが、複数のノードが存在し、ノード間に作用する相互作用係数が存在すれば、他のモデルであっても構わない。例えば、ニューラルネットワークにおいても入力層と出力層、さらに多層化された中間層においても複数のニューロン（＝ノード）が存在し、それぞれがシナプスによって結合強度が決定される。このニューラルネットワークをチップ化し、複数のニューラルネットワークチップを使用して、単一のパターン認識問題を求解する場合においても、本実施の形態は適用できるものである。
＜効果＞
【０１３５】
以上説明した第１の実施の形態によれば、例えばイジングモデルなどのような大規模かつ複雑な相互作用モデルの計算を最適な分割方法で行うことができ、安価かつ容易に製造可能な半導体システムを実現することができる。すなわち、複数の半導体チップ１１６にイジングモデルを表現するパラメータを展開する場合に、イジングモデルの展開先チップ毎の分割方法を調整可能にする。これにより、複数の半導体チップ１１６で単一の基底状態探索を実施する場合に、より良好な最適解の導出が可能となる。
［第２の実施の形態］
【０１３６】
第２の実施の形態は、前記第１の実施の形態に対して、問題の分割方法をレジスタで設定するのではなく、問題データを解析し、その結果に基づいて分割方法を決定することを特徴としたものである。前述したように、スピン間の結合が弱い、すなわち相互作用係数が小さい場合には、そこでチップ間のデータ伝送が疎であってもその影響は軽微であると考え、相互作用係数に着目して、最適な分割方法を導出する。
【０１３７】
図１８〜図１９は、第２の実施の形態を説明するための図であり、図１８は、本実施の形態における半導体システム１０４の構成の一例を示したブロック図であり、図１９は、問題データと解析部との関係の一例を示した図である。
【０１３８】
図１８に示す半導体システム１０４では、前記第１の実施の形態の特徴であった問題分割設定レジスタは必須ではなく、その代わり、解析部１１０１を追加した構成となっている。解析部１１０１は、レジスタ１０８を参照する代わりに、問題データ格納部１１１の相互作用係数の値を参照し、その値に基づいて、問題分割方法を決定する。
【０１３９】
図１９では、本実施の形態に関して、スピンと相互作用係数と解析部１１０１の処理内容の一例を示している。説明を簡単にするために、イジングモデルは２次元構造とし、さらに外部磁場係数の記載は省略している。図１９中の丸印はスピン１２０１を表しており、長方形は相互作用係数１２０２を表している。また、長方形内の数字は相互作用係数１２０２の値を示している。そして、問題を分割する場合は、図１９に示すように、スピン間をその境界に設定することから、破線で示された境界線上に存在する複数の相互作用係数を参照して解析する。
【０１４０】
具体的には、解析部１１０１は、Σ回路１２０３、１２０４、１２０５、１２０６、１２０７を備えて、各Σ回路１２０３〜１２０７で、各境界線上の相互作用係数の値の合計を計算する。そして、相互作用係数値の合計値が小さい境界線をチップ間の境界に設定する。図１９の例では、Σ回路１２０４の合計値（１２＋４６＋２３＝８１）が最も小さいので、この境界線がチップ間の境界に設定される。これにより、個別にレジスタで境界部分を設定しなくとも、スピン間の結合が弱い、相互作用係数の小さい部分での問題分割が可能になる。
【０１４１】
なお、図１９では、左右のＸ方向での問題分割を前提に縦断する境界線について説明したが、上下のＹ方向の問題分割を前提に横断する境界線についても同様に、相互作用係数の値の合計を計算すれば同様の判断が可能である。また、３次元構造、例えばＺ方向に展開されたモデルであっても同様の判断は可能である。２次元構造の場合は、前述したようにチップ間の境界を線で定義したが、３次元構造の場合は、チップ間の境界を面で定義すれば良い。境界面上の相互作用係数を参照し、例えば合計値を計算するなどして解析すれば良い。
【０１４２】
また、１個のチップが対応可能な問題サイズを超過して、問題データとスピンデータを割り当てることができないのは言うまでもない。これの対策について一例を挙げるならば、解析部１１０１で判断対象とする境界部は、１個のチップが対応可能なサイズの８０％〜１００％のスピンユニット数の中で設定する等の制約を設置することで、容易に対応可能である。
【０１４３】
以上により、第２の実施の形態の特徴である問題データの分析による問題分割方法の調整を実現可能とし、結果として、より良好な最適解が取得できる可能性が向上する。
【０１４４】
以上説明した第２の実施の形態によれば、前記第１の実施の形態と異なる効果として、問題データを解析し、その結果に基づいて分割方法を決定することができる。
［第３の実施の形態］
【０１４５】
第３の実施の形態は、複数の半導体チップで単一のイジングモデルの基底状態探索を実施する場合に、分割方法も探索することを特徴とする。本内容は、外部から問題の分割方法を規定する前記第１の実施の形態や、分割方法を問題データに基づいて判定する前記第２の実施の形態と異なる。
【０１４６】
図２０〜図２２は、第３の実施の形態を説明するための図であり、図２０は、本実施の形態における半導体システム１０４の構成の一例を示したブロック図であり、図２１〜図２２は、複数の半導体チップで複数のイジングモデルを解く場合の設定の一例を示した図である。
【０１４７】
図２０に示す半導体システム１０４では、前記第１の実施の形態の特徴であった問題分割設定レジスタは必須ではなく、その代わり、解析部１３０１を追加した構成となっている。解析部１３０１は、レジスタ１０８を参照する代わりに、スピンデータ格納部１１２のスピンの値を参照し、その値に基づいて、問題分割方法を探索する。
【０１４８】
図２１では、複数の半導体チップで複数のイジングモデルを解く場合の設定１の概要を示し、図２２は、設定２の概要を示している。いずれも半導体チップ群は１６チップで構成され、ドット表記で図示した１４０１〜１４０４、１４０５〜１４０８は単一問題を示す。これは、１チップでは単一問題を解くことができないため、複数の半導体チップを必要とする場合であり、設定１においては、複数の半導体チップで構成されるスピンユニット群に対し、効率的に問題データが配置されるものする。一方、設定２においては、問題１４０５〜問題１４０８のそれぞれの起点と、対応する半導体チップのスピンアレイの位置関係は同一になるように配置されるものとする。
【０１４９】
ここで、設定１の問題分割方法に着目すると、問題１４０１、問題１４０２、問題１４０３、問題１４０４は異なる分割方法に設定される。そして、各々でスピン値の初期値を同一に設定すれば、問題分割方法の差のみの最適化が可能になる。最適化の実施に当たっては、解の解析部１３０１が搭載されることが特徴となる。
【０１５０】
設定１の特徴を纏めると、前記第２の実施の形態のように解析部１１０１が問題データに基づいた判定をして分割方法を決定するのではなく、解析部１３０１は計算結果であるスピンデータに基づいて分割方法を決定する。解くべきイジングモデルが複雑化し、分割方法の判断が困難である場合においては、設定１は有効である。特に、複数の半導体チップを搭載した大規模な半導体システムの特徴を生かし、並行処理で複数の計算結果が得られる場合は、問題分割方法の最適化も短時間で実施可能である。
【０１５１】
設定１において、最適な問題分割方法が導出できた場合には、設定２に移行する。設定２においては、全ての単一問題１４０５〜１４０８が最適であると判断した問題分割方法で固定され、並行処理でスピン値の初期値が異なる基底状態探索を実施する。このようにして、問題分割設定の探索と基底状態探索を実施することができる。
【０１５２】
なお、本実施の形態の説明では、問題分割設定の探索を実施する設定１のモードと、基底状態探索を実施する設定２のモードにおいて、それぞれは並行処理で実施する内容で説明したが、それぞれの処理をシリアルに実施しても構わない。つまり、複数のチップで同時に１個の問題しか解けない場合であっても、問題分割方法を異ならせた基底状態探索をシリアルに実施することは可能である。いずれにしても、本実施の形態においては、問題分割方法の探索機能が実施されていることが重要である。
【０１５３】
以上により、第３の実施の形態の特徴である問題分割方法の探索を実現可能とし、結果として、より良好な最適解が取得できる可能性が向上する。
【０１５４】
以上説明した第３の実施の形態によれば、前記第１及び第２の実施の形態と異なる効果として、複数の半導体チップ１１６で単一のイジングモデルの基底状態探索を実施する場合に、分割方法も探索することができる。
【０１５５】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【０１５６】
例えば、上記した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１５７】
また、上記した実施の形態では、物理学の世界で代表的なイジングモデルを例にあげて説明したが、本発明はこれに限定されるものではなく、種々の物理現象や社会現象を表現することができる相互作用モデル全般に適用できるものである。また、イジングモデルの基底探索を実施する装置として半導体チップを例にあげて説明したが、本発明はこれに限定されるものではなく、同様の動作を行う装置全般に適用できるものである。
【符号の説明】
【０１５８】
１０１…ＣＰＵ、１０２…メモリ、１０３…記憶装置、１０４…半導体システム、１０５…システムバス、１０６…コントローラ、１０７…システムＩ／Ｆ、１０８…レジスタ、１０９…データ処理部、１１０…クロック生成部、１１１…問題データ格納部、１１２…スピンデータ格納部、１１３…データＩ／Ｆ、１１４…専用バス、１１５…半導体チップ群、１１６…半導体チップ、１１７…チップ間配線、１１８…問題設定レジスタ、１２０…チップ数設定レジスタ、１２１…チップ仕様設定レジスタ、１２３…アドレス生成部、１２４…データ生成部、１２５…展開部、１２６…データ集計部、１２７…相互作用制御信号生成部、１２８…乱数発生部、１２９…問題分割設定レジスタ、
４０１…Ｉ／Ｆ、４０２…チップ間伝送Ｉ／Ｆ、４０３…レジスタ、４０４…メモリコントローラ、４０５…スピンアレイ、４０６…相互作用Ｉ／Ｆ、４０７…相互作用アドレスデコーダ、４０８…チップ間伝送部コントローラ、４１０…送信用バッファ、４１１…受信用バッファ、
１１０１…解析部（問題データ）、
１３０１…解析部（解）。
【図１】
2017037902.tif 000005
【図２】
2017037902.tif 000006
【図３】
2017037902.tif 000007
【図４】
2017037902.tif 000008
【図５】
2017037902.tif 000009
【図６】
2017037902.tif 000010
【図７】
2017037902.tif 000011
【図８】
2017037902.tif 000012
【図９】
2017037902.tif 000013
【図１０】
2017037902.tif 000014
【図１１】
2017037902.tif 000015
【図１２】
2017037902.tif 000016
【図１３】
2017037902.tif 000017
【図１４】
2017037902.tif 000018
【図１５】
2017037902.tif 000019
【図１６】
2017037902.tif 000020
【図１７】
2017037902.tif 000021
【図１８】
2017037902.tif 000022
【図１９】
2017037902.tif 000023
【図２０】
2017037902.tif 000024
【図２１】
2017037902.tif 000025
【図２２】
2017037902.tif 000026
【国際調査報告】
2017037902.tif 000027
2017037902.tif 000028
2017037902.tif 000029
2017037902.tif 000030