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