(57)【特許請求の範囲】
【請求項１】
相互作用モデルの１つのノードの状態を示す値を記憶する第１メモリセルと、前記１つのノードに接続されたノードからの相互作用を示す相互作用係数を記憶する第２メモリセルと、前記１つのノードのバイアス係数を記憶する第３メモリセルと、をそれぞれ含む複数のユニットと、
前記接続されたノードの状態を示す値と前記相互作用係数と前記バイアス係数とに基づいて、前記１つのノードの次状態を示す値を決定する演算回路と、
を有し、
前記複数のユニット内の前記第２メモリセルおよび前記第３メモリセルのそれぞれは、多値メモリセルを含む、半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記多値メモリセルは、フラッシュメモリのメモリセルである、半導体装置。
【請求項３】
請求項２に記載の半導体装置において、
前記第２メモリセルに記憶する相互作用係数のうちの数値と、前記第３メモリセルに記憶するバイアス係数のうちの数値とを、前記フラッシュメモリのメモリセルに記憶し、
前記第２メモリセルに記憶する相互作用係数のうちの符号と、前記第３メモリセルに記憶するバイアス係数のうちの符号と、前記第１メモリセルに記憶するノードの状態を示す値とを、ＳＲＡＭのメモリセルに記憶する、半導体装置。
【請求項４】
請求項２に記載の半導体装置において、
前記第２メモリセルに記憶する相互作用係数の数値および符号と、前記第３メモリセルに記憶するバイアス係数の数値および符号とを、前記フラッシュメモリのメモリセルに記憶し、
前記第１メモリセルに記憶するノードの状態を示す値を、ＳＲＡＭのメモリセルに記憶する、半導体装置。
【請求項５】
請求項２に記載の半導体装置において、
前記演算回路は、前記複数のユニットの内部または外部に配置されている、半導体装置。
【請求項６】
請求項２に記載の半導体装置において、
前記第２メモリセルに記憶する相互作用係数と、前記第３メモリセルに記憶するバイアス係数とを、前記フラッシュメモリのメモリセルに記憶し、
前記演算回路は、前記ユニットの内部に配置され、
前記複数のユニットのそれぞれは、
前記フラッシュメモリのメモリセルに記憶した相互作用係数およびバイアス係数を読み出す読み出し回路と、
前記接続されたノードの状態を示す値と前記読み出し回路からの相互作用係数と前記読み出し回路からのバイアス係数とに基づいて、前記１つのノードの次状態を示す値を決定する前記演算回路と、
をさらに含む、半導体装置。
【請求項７】
請求項２に記載の半導体装置において、
前記第２メモリセルに記憶する相互作用係数と、前記第３メモリセルに記憶するバイアス係数とを、前記フラッシュメモリのメモリセルに記憶し、
前記演算回路は、前記ユニットの内部に配置され、
前記半導体装置は、前記ユニットの外部に配置され、前記ユニット内の前記フラッシュメモリのメモリセルに記憶した相互作用係数およびバイアス係数を読み出し、この読み出した相互作用係数およびバイアス係数を前記ユニット内の前記演算回路に出力する読み出し回路をさらに有し、
前記ユニットの内部の前記演算回路は、前記接続されたノードの状態を示す値と前記読み出し回路からの相互作用係数と前記読み出し回路からのバイアス係数とに基づいて、前記１つのノードの次状態を示す値を決定する、半導体装置。
【請求項８】
請求項７に記載の半導体装置において、
前記読み出し回路は、前記複数のユニットで共有する、半導体装置。
【請求項９】
請求項２に記載の半導体装置において、
前記第２メモリセルに記憶する相互作用係数と、前記第３メモリセルに記憶するバイアス係数とを、前記フラッシュメモリのメモリセルに記憶し、
前記演算回路は、前記ユニットの外部に配置され、
前記半導体装置は、
前記ユニットの外部に配置され、前記ユニット内の前記フラッシュメモリのメモリセルに記憶した相互作用係数およびバイアス係数を読み出す読み出し回路と、
前記ユニットの外部に配置され、前記接続されたノードの状態を示す値と前記読み出し回路からの相互作用係数と前記読み出し回路からのバイアス係数とに基づいて、前記１つのノードの次状態を示す値を決定する前記演算回路と、
をさらに有する、半導体装置。
【請求項１０】
請求項９に記載の半導体装置において、
前記読み出し回路および前記演算回路は、前記複数のユニットで共有する、半導体装置。
【請求項１１】
請求項２に記載の半導体装置において、
前記演算回路は、
前記接続されたノードの状態を示す値、前記相互作用係数、および前記バイアス係数に基づいて、第１側と第２側との相互作用演算を行う論理回路と、
前記論理回路の結果に基づいて、前記第１側と前記第２側との作用の大きさを比較して前記１つのノードの次状態を示す値として前記第１側の第１の値または前記第２側の第２の値を出力する比較回路と、
を含む、半導体装置。
【請求項１２】
請求項１１に記載の半導体装置において、
前記論理回路は、前記接続されたノードの状態を示す値、前記相互作用係数、および前記バイアス係数をそれぞれ記憶する複数のメモリセルによる並列接続の複数の電流パスからなり、前記第１側の作用の大きさを計算する第１計算回路と、前記接続されたノードの状態を示す値、前記相互作用係数、および前記バイアス係数をそれぞれ記憶する複数のメモリセルによる並列接続の複数の電流パスからなり、前記第２側の作用の大きさを計算する第２計算回路と、を含み、
前記比較回路は、前記第１計算回路の結果が現れる第１共通線の電圧と前記第２計算回路の結果が現れる第２共通線の電圧とを比較して、高い方の電圧に対応する前記第１の値または前記第２の値を前記１つのノードの次状態を示す値として出力する、半導体装置。
【請求項１３】
ＣＰＵ、ＲＡＭ、ＨＤＤ、およびアクセラレータとして動作可能な半導体装置を備える情報処理装置であって、
前記半導体装置は、
相互作用モデルの１つのノードの状態を示す値を記憶する第１メモリセルと、前記１つのノードに接続されたノードからの相互作用を示す相互作用係数を記憶する第２メモリセルと、前記１つのノードのバイアス係数を記憶する第３メモリセルと、をそれぞれ含む複数のユニットと、
前記接続されたノードの状態を示す値と前記相互作用係数と前記バイアス係数とに基づいて、前記１つのノードの次状態を示す値を決定する演算回路と、
前記複数のユニットのメモリセルをリード／ライトするＩ／Ｏインタフェースと、
前記複数のユニットに対して、相互作用を許可する信号を供給する相互作用制御インタフェースと、を有し、
前記複数のユニット内の前記第２メモリセルおよび前記第３メモリセルのそれぞれは、多値メモリセルを含み、
前記ＣＰＵ上で実行される前記半導体装置の制御プログラムは、
対象問題を表現する前記相互作用モデルの各ノードを割り当てた前記半導体装置上の前記複数のユニットへ、それぞれ、前記第１メモリセルに前記ノードの状態を示す値、多値メモリセルの前記第２メモリセルに前記相互作用係数、および多値メモリセルの前記第３メモリセルに前記バイアス係数を書き込み、
前記複数のユニットの基底状態探索処理を所定の回数繰り返して実行し、
基底状態に達した前記複数のユニットのノードの状態を示す値を読み出して前記対象問題の解を得る、情報処理装置。
【請求項１４】
請求項１３に記載の情報処理装置において、
前記複数のユニットの基底状態探索処理は、グループ分けされたユニットに対して、グループ毎に所定の回数繰り返して実行する、情報処理装置。
【請求項１５】
請求項１３に記載の情報処理装置において、
前記多値メモリセルは、フラッシュメモリのメモリセルであり、
前記フラッシュメモリのメモリセルに、前記相互作用係数のうちの数値と前記バイアス係数のうちの数値とを書き込むか、または、前記相互作用係数の数値および符号と前記バイアス係数の数値および符号とを書き込む、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に、相互作用モデルの計算を行う半導体装置と、その半導体装置をアクセラレータとして制御する情報処理装置に関する。
【背景技術】
【０００２】
現在、コンピュータアーキテクチャの主流はノイマン型である。ノイマン型アーキテクチャでは逐次的な命令列であるプログラムでその動作が定義される。プログラムを変更することにより、様々な用途に利用可能な汎用性を有している。コンピュータの中心的な役割を果たすＣＰＵ（Central Processing Unit）のみならず、ＧＰＵ（Graphics Processing Unit）のような特定用途向けの演算装置もノイマン型アーキテクチャで構成されており、その基本動作は命令列の逐次的な実行にある。
【０００３】
これまで、コンピュータの性能向上は主としてクロック周波数の向上に依っていた。ノイマン型アーキテクチャの根幹は命令列の逐次的な実行であるから、命令の実行速度を高速化すれば性能向上が期待できる。しかし、パーソナルコンピュータやサーバに用いられる汎用的なＣＰＵにおいては、クロック周波数の向上は２０００年代初頭に３ＧＨｚ前後で頭打ちとなっている。近年では頭打ちになったクロック周波数に替わって、マルチコア化による並列処理で性能向上を実現する方策が主流になっている。
【０００４】
マルチコア化による並列処理では、逐次的な命令列から並列実行可能な箇所を見出し（並列性の抽出）、並列実行することで性能向上を図る。しかし、逐次的なアルゴリズムを命令列として書き下したプログラムから並列性を抽出することは容易ではない。命令のレベルで並列性を抽出するＩＬＰ（Instruction Level Parallelism）は既に限界に達しており、近年ではＴＬＰ（Thread Level Parallelism）やＤＬＰ（Data Level Parallelism）のように、より粒度の粗い並列性を利用する方向になっている。
【０００５】
このような状況を鑑みると、今後、コンピュータの性能向上を図っていくためには、従来のような逐次的な命令列の実行を基本とするのではなく、本質的に並列な情報処理に移行していく必要がある。そのためには、従来の逐次的な命令列による問題の記述方法に替わって、本質的に並列な情報処理を実現するために適した問題の記述が必要となる。
【０００６】
その候補として、種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは、モデルを構成する複数個のノードと、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが、いずれも相互作用モデルの一形態であると解釈できる。また、相互作用モデルの特徴として、ノード間の影響を２個のノード間の相互作用に限定している（２体間の相互作用）ことがあげられる。例えば、宇宙空間にある惑星の力学を考えてみると、惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが、惑星間の影響は２個の惑星間にとどまらず、３個以上の惑星が互いに影響し合って複雑な挙動を示す（いわゆる３体問題や多体問題と言われる問題になる）。
【０００７】
物理学の世界で代表的な相互作用モデルの例として、イジングモデルをあげることができる。イジングモデルは磁性体の振る舞いを説明するための統計力学のモデルであり、磁性体の研究に用いられている。イジングモデルはサイト（＋１／−１の２値をとるスピン）間の相互作用として定義される。トポロジが非平面グラフになるイジングモデルの基底状態を求めることはＮＰ困難問題であることが知られている。イジングモデルは空間方向に広がった相互作用係数で問題を表現するため、本質的な並列性を利用した情報処理を実現できる可能性がある。
【０００８】
ところで、イジングモデルの基底状態を求めることは、前述した通りＮＰ困難問題であることから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。例えば、このような装置として、特許文献１に記載の装置がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】国際公開第２０１２／１１８０６４号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
前記特許文献１に記載のような装置では、解くべき問題に対応した係数の値の種類は限られる。イジングモデルの場合でも、スピンの相互作用係数が、＋１、−１の２値のみに限られるので、イジングモデルの種類が制限されてしまうことに繋がる。そのため、イジングモデルの種類に制限されることのない、より多値の係数を持つことが望ましい。
【００１１】
本発明の代表的な目的は、相互作用モデルの計算を行う半導体装置において、３値以上の多値の係数による相互作用計算を可能にする技術を提供することにある。
【００１２】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
【００１４】
代表的な半導体装置は、相互作用モデルの１つのノードの状態を示す値を記憶する第１メモリセルと、前記１つのノードに接続されたノードからの相互作用を示す相互作用係数を記憶する第２メモリセルと、前記１つのノードのバイアス係数を記憶する第３メモリセルと、をそれぞれ含む複数のユニットを有する。さらに、前記接続されたノードの状態を示す値と前記相互作用係数と前記バイアス係数とに基づいて、前記１つのノードの次状態を示す値を決定する演算回路を有する。そして、前記複数のユニット内の前記第２メモリセルおよび前記第３メモリセルのそれぞれは、多値メモリセルを含む。
【００１５】
例えば、前記多値メモリセルは、フラッシュメモリのメモリセルである。より好ましくは、前記第２メモリセルに記憶する相互作用係数のうちの数値と、前記第３メモリセルに記憶するバイアス係数のうちの数値とを、前記フラッシュメモリのメモリセルに記憶する。または、前記第２メモリセルに記憶する相互作用係数の数値および符号と、前記第３メモリセルに記憶するバイアス係数の数値および符号とを、前記フラッシュメモリのメモリセルに記憶する。
【発明の効果】
【００１６】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下の通りである。
【００１７】
代表的な効果は、相互作用モデルの計算を行う半導体装置において、３値以上の多値の係数による相互作用計算を可能にする技術を提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施の形態におけるイジングチップの構成の一例を説明するための図である。
【図２】本発明の一実施の形態における情報処理装置の構成の一例を説明するための図である。
【図３】本発明の一実施の形態において、３次元格子のスピンアレイの構成の一例を説明するための図である。
【図４】本発明の一実施の形態において、スピンアレイのトポロジとスピンユニット内のメモリセルとの対応関係の一例を説明するための図である。
【図５】図１のイジングチップのスピンアレイにおいて、構成単位のスピンユニットによる相互作用の一例を説明するための図である。
【図６】図１のイジングチップのスピンアレイにおいて、スピンユニットの構成の一例を説明するための図である。
【図７】図６のスピンユニットにおいて、相互作用計算回路の回路構成の一例を説明するための図である。
【図８】図６のスピンユニットにおいて、フラッシュメモリの一例（フラッシュメモリの記号）を説明するための図である。
【図９】図６のスピンユニットにおいて、フラッシュメモリの一例（フラッシュメモリの特性）を説明するための図である。
【図１０】図６のスピンユニットにおいて、相互作用計算回路の回路構成（制御信号の生成回路も含む）の一例を説明するための図である。
【図１１】図６のスピンユニットにおいて、相互作用計算回路の回路動作の一例を説明するための図である。
【図１２】図１のイジングチップのスピンアレイにおいて、フラッシュメモリの読み出し回路の構成の一例を説明するための図である。
【図１３】スピンユニットが図１２の構成の場合のスピンアレイの全体構成の一例を説明するための図である。
【図１４】図１のイジングチップのスピンアレイにおいて、フラッシュメモリの読み出し回路および相互作用演算回路の構成の一例を説明するための図である。
【図１５】スピンユニットが図１４の構成の場合のスピンアレイの全体構成の一例を説明するための図である。
【図１６】図１のイジングチップの相互作用動作手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００２０】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００２１】
以下、本発明の一実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
【００２２】
［一実施の形態］
本実施の形態は、相互作用モデルの計算を行う半導体装置と、その半導体装置をアクセラレータとして制御する情報処理装置に関する。
【００２３】
＜０．相互作用モデルの定義＞
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは、モデルを構成する複数個のノードと、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが、いずれも相互作用モデルの一形態であると解釈できる。また、相互作用モデルの特徴として、ノード間の影響を２個のノード間の相互作用に限定している（２体間の相互作用）ことがあげられる。例えば、宇宙空間にある惑星の力学を考えてみると、惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが、惑星間の影響は２個の惑星間にとどまらず、３個以上の惑星が互いに影響し合って複雑な挙動を示す（いわゆる３体問題や多体問題と言われる問題になる）。
【００２４】
物理学の世界で代表的な相互作用モデルの例として、イジングモデルをあげることができる。イジングモデルとは＋１／−１（ないしは上、下など）の２状態を取るスピンをノードとして、２個のスピン間の相互作用を決める相互作用係数と、個々のスピンに対するバイアスである外部磁場係数でモデルが定義される。また、生物学の世界では脳をモデル化したニューラルネットワークが相互作用モデルの一例である。ニューラルネットワークは神経細胞のニューロンを模した人工ニューロンをノードとして、人工ニューロン間はシナプス結合という相互作用を持つ。また、各ニューロン毎にバイアスを与える場合もある。社会科学の世界では、例えば人間のコミュニケーションを考えると、人間というノードと言語や通信で成される相互作用があることは容易に理解できよう。また、各人間には個別にバイアスがあることも想像できる。そのため、人間のコミュニケーションを，相互作用モデルという点で共通なイジングモデル等に模してその特性を明らかにしようという研究もなされている。
【００２５】
以下においては、イジングモデルの基底状態を求める半導体装置であるイジングチップ１００（図１）、およびイジングチップ１００を制御する情報処理装置２００（図２）の例を説明する。
【００２６】
＜１．解くべき問題をイジングモデルの基底状態探索問題に変換＞
イジングモデルは磁性体の振る舞いを説明するための統計力学のモデルである。イジングモデルは＋１／−１（または、０／１、上／下）の２値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎にある外部磁場係数で定義される。
【００２７】
イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することができる。イジングモデルのエネルギー関数Ｅ（σ）は一般的に次式（１）で表わされる。
【００２８】
【数１】
0005901712.tif 000002
【００２９】
なお、σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値、Ｊｉ，ｊはｉ番目とｊ番目のスピンの間の相互作用係数、ｈｉはｉ番目のスピンに対する外部磁場係数、＜ｉ，ｊ＞は隣接する２つのサイトの組合せ、σはスピンの配列を表わすものとする。
【００３０】
イジングモデルの基底状態を求めるというのは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。例えば、因数分解や巡回セールスマン問題など、一見すると磁性体と何ら関係の無い問題をイジングモデルに変換することができる。そして、変換して得られたイジングモデルの基底状態は、元の問題の解に対応している。このことから、イジングモデルの基底状態を探索することのできる装置は、汎用的な用途に利用可能なコンピュータであると言える。
【００３１】
＜２．イジングチップの構成＞
図１は、本実施の形態におけるイジングチップ１００の構成の一例を説明するための図である。イジングチップ１００は、スピンアレイ１１０、Ｉ／Ｏ（Input/Output）ドライバ１２０、Ｉ／Ｏアドレスデコーダ１３０および相互作用アドレスデコーダ１４０から構成される。本実施の形態では、イジングチップ１００は現在広く用いられているＣＭＯＳ（Complementary Metal-Oxide Semiconductor）集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。
【００３２】
イジングチップ１００は、スピンアレイ１１０にリード／ライトを行うためのＳＲＡＭ互換インタフェース１５０を持っており、アドレスバス１９０、データバス１９１、Ｒ／Ｗ制御線１９３およびＩ／Ｏクロック線１９２から構成される。さらに、本実施の形態では、ＳＲＡＭ互換インタフェースに加えて、後述するフラッシュメモリ互換インタフェース（図１２〜図１５）も持っている。また、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース１６０として、相互作用アドレス線１８０および相互作用クロック線１８１を有している。イジングチップ１００は、通常電源線１４２で供給される電圧で動作するが、スピンアレイ１１０の一部はスピン用電源線１４１で供給される電圧で動作する。具体的には、スピンアレイ１１０を構成するスピンユニット３００（図３）が有するメモリセルのうち、スピン情報を保持するメモリセルはスピン用電源線１４１で供給される電圧で動作する。
【００３３】
イジングチップ１００では、イジングモデルのスピンσｉ、相互作用係数Ｊｉ，ｊおよび外部磁場係数ｈｉを全てスピンアレイ１１０内のメモリセルに記憶する情報で表現する。スピンσｉの初期状態の設定および基底状態探索完了後の解読み出しのためにスピンσｉのリード／ライトをＳＲＡＭ互換インタフェース１５０で行う。また、基底状態を探索すべきイジングモデルをイジングチップ１００に設定するために、相互作用係数Ｊｉ，ｊおよび外部磁場係数ｈｉのリード／ライトもＳＲＡＭ互換インタフェース１５０やフラッシュメモリ互換インタフェースで行う。そのため、スピンアレイ１１０内のスピンσｉ、相互作用係数Ｊｉ，ｊおよび外部磁場係数ｈｉにはアドレスが付与されている。
【００３４】
なお、ＳＲＡＭ互換インタフェース１５０を構成するアドレスバス１９０、データバス１９１およびＲ／Ｗ制御線１９３は、Ｉ／Ｏクロック線１９２に入力されるクロックに同期して動作する。但し、本発明において、インタフェースが同期式である必要性は無く、非同期式のインタフェースでも良い。本実施の形態では、同期式のインタフェースであるという前提で説明を行う。
【００３５】
また、イジングチップ１００は、基底状態探索を行うために、スピンアレイ１１０の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース１６０であり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス線１８０を介して入力し、相互作用クロック線１８１を介して入力されるクロックに同期して相互作用を行う。
【００３６】
なお、相互作用は、必ずしもクロック同期回路で実現される必要はなく、非同期回路であっても構わない。この場合、相互作用クロック線１８１の役割はクロックの入力ではなく、相互作用の実行を許可するイネーブル信号であるものとする。相互作用制御インタフェースについても、必ずしも同期式である必要はなく、非同期式のインタフェースでも良いが、本実施の形態では同期式のインタフェースを用い、相互作用が相互作用クロック線１８１を介して入力されるクロックに同期して行われるという前提で説明を行う。
【００３７】
＜３．情報処理装置の構成＞
上述したイジングチップ１００を１個、または複数個用いて情報処理を実現するわけであるが、そのためには上述したようなインタフェースを制御しなければならない。そのために、イジングチップ１００は図２に示すような情報処理装置２００の一部として利用される。
【００３８】
図２は、本実施の形態における情報処理装置２００の構成の一例を説明するための図である。情報処理装置２００は、現在一般的に用いられているパーソナルコンピュータやサーバのような装置に、イジングチップ１００で構成されるアクセラレータを装着したものと考えて良い。情報処理装置２００は、ＣＰＵ（Central Processing Unit）２１０、ＲＡＭ（Random Access Memory）２２０、ＨＤＤ（Hard Disk Drive）２６０およびＮＩＣ（Network Interface Card）２４０などを有し、これらがシステムバス２３０で結合されている。これは、現在のパーソナルコンピュータやサーバに一般的に見られる構成である。
【００３９】
加えて、システムバス２３０にイジングチップコントローラ２５０が接続され、その先に１個または複数個のイジングチップ（図２の例では、２個のイジングチップ１００−１およびイジングチップ１００−２を有する。これ以降、２個のイジングチップを特に区別する必要がないときには、単にイジングチップ１００と称する。）を持つ。このイジングチップコントローラ２５０とイジングチップ１００がアクセラレータに相当するものであり、例えばＰＣＩ  Ｅｘｐｒｅｓｓのようなペリフェラル拡張用インタフェースに挿入して使う拡張カードのような形態をとる。イジングチップコントローラ２５０は、システムバス２３０（例えばＰＣＩ  ＥｘｐｒｅｓｓやＱＰＩ）のプロトコルをイジングチップ１００のインタフェースに合わせて変換するものである。
【００４０】
情報処理装置２００のＣＰＵ２１０上で動作するソフトウェアは、一般的には特定のアドレスに対してリード／ライトを行うことで、イジングチップコントローラ２５０を経由して、イジングチップ１００を制御することができる。また、このような情報処理装置２００を、装置間ネットワーク２９０を介して、複数台結合して利用しても良い。
【００４１】
情報処理装置２００は、ＣＰＵ２１０がイジングチップコントローラ２５０を制御し、イジングチップコントローラ２５０がイジングチップ１００のＳＲＡＭ互換インタフェース１５０やフラッシュメモリ互換インタフェースおよび相互作用制御インタフェース１６０を制御することで、イジングモデルの基底状態探索を実現する。
【００４２】
＜４．スピンアレイの構成＞
スピンアレイ１１０は、１個のスピンとそれに付随する相互作用係数および外部磁場係数の保持と、基底状態探索処理とを実現するスピンユニット３００を基本構成単位として、スピンユニット３００を多数個並べて構成する。図３は、３次元格子のスピンアレイ１１０の構成の一例を説明するための図である。図３では、スピンユニット３００を複数個並べることで、３次元格子状のトポロジを持つイジングモデルを構成する例を示している。図３の例は、３（Ｘ軸方向）×３（Ｙ軸方向）×２（Ｚ軸方向）の大きさの３次元格子である。座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、図面奥行き方向をＺ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本発明とは関係しない。３次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図３の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとして捉えると、最大で次数５のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数６が必要となる。
【００４３】
図３に示す１個のスピンユニット３００には、隣接するスピン（例えば隣接するスピンが５個の場合）σｊ、σｋ、σｌ、σｍ、σｎの値が入力される。また、スピンユニット３００は、スピンσｉおよび外部磁場係数ｈｉに加え、上述した隣接するスピンσｉとの相互作用係数であるＪｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉ（隣接する５スピンとの相互作用係数）を保持するメモリセルを有している。
【００４４】
ところで、イジングモデルは、一般的に無向グラフで表現される相互作用を有している。上述した式（１）では、相互作用を表わす項として、Ｊｉ，ｊ×σｉ×σｊがあるが、これはｉ番目スピンからｊ番目スピンへの相互作用を示している。この時、一般的なイジングモデルでは、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。つまり、Ｊｉ，ｊとＪｊ，ｉは同一である。しかし、本実施の形態のイジングチップ１００では、このイジングモデルを有向グラフに拡張し、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【００４５】
そのため、１個のスピンユニット３００をｉ番目スピンσｉと考えた時に、このスピンユニットが保持する相互作用係数であるＪｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉは、隣接するｊ番目、ｋ番目、ｌ番目、ｍ番目、ｎ番目のスピンσｊ、σｋ、σｌ、σｍ、σｎから、ｉ番目スピンσｉへの相互作用を決めるものである。このことは、図３において、スピンユニット３００に含まれている相互作用係数が対応する矢印（相互作用）が、図示されているスピンユニット３００の外部のスピンから、スピンユニット３００の内部のスピンに向かっていることに対応している。
【００４６】
＜５．スピンアレイのトポロジとスピンユニット内のメモリセルとの対応関係＞
スピンユニット３００の構成の一例を、図６を用いて説明する。スピンユニット３００は、イジングモデルのスピンσｉ、相互作用係数Ｊｊ，ｉ〜Ｊｎ，ｉおよび外部磁場係数ｈｉを保持するために、複数の１ビットのメモリセルＮ０，ＩＳＳ（図示省略），ＩＳＶ（図示省略），ＩＵＳ，ＩＵＶ，ＩＬＳ（図示省略），ＩＬＶ（図示省略），ＩＲＳ（図示省略），ＩＲＶ（図示省略），ＩＤＳ，ＩＤＶ，ＩＦＳ（図示省略），ＩＦＶ（図示省略）を備えている。なお、図示省略のメモリセルＩＳＳおよびＩＳＶ、メモリセルＩＵＳおよびＩＵＶ、図示省略のメモリセルＩＬＳおよびＩＬＶ、図示省略のメモリセルＩＲＳおよびＩＲＶ、メモリセルＩＤＳおよびＩＤＶ、並びに、図示省略のメモリセルＩＦＳおよびＩＦＶは、それぞれ２個１組で役割を果たすものであるため、それぞれまとめてメモリセル対ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘまたはＩＦｘと略記する（図４参照）。以下では、図示省略したものも含めて説明する。
【００４７】
スピンユニット３００が有する各メモリセルＮ０，ＩＳＳ，ＩＳＶ，ＩＵＳ，ＩＵＶ，ＩＬＳ，ＩＬＶ，ＩＲＳ，ＩＲＶ，ＩＤＳ，ＩＤＶ，ＩＦＳ，ＩＦＶのうち、各メモリセルＮ０，ＩＳＳ，ＩＵＳ，ＩＬＳ，ＩＲＳ，ＩＤＳ，ＩＦＳは、ＳＲＡＭ３１０のメモリセルである。ＩＳＶ，ＩＵＶ，ＩＬＶ，ＩＲＶ，ＩＤＶ，ＩＦＶは、フラッシュメモリ３２０のメモリセルである。
【００４８】
スピンユニット３００が有するＳＲＡＭ３１０のメモリセルは、図示しないが、ＣＭＯＳインバータ２個で構成されるデータ保持部を有し、その両端にそれぞれ接続されたパスゲートトランジスタをワード線およびビット線で制御することで、データ保持部へのデータの読み書きを実現する。また、フラッシュメモリ３２０のメモリセルに対するデータの読み書きについては、図１２〜図１５などを用いて後述する。
【００４９】
ここで、スピンユニット３００はｉ番目のスピンを表現するものとして説明を行う。メモリセルＮ０はスピンσｉを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは＋１／−１（＋１を上、−１を下とも表現する）であるが、これをメモリセルの２値である０／１に対応させる。例えば、＋１を１、−１を０に対応させる。
【００５０】
図４を用いて、スピンユニット３００が有するメモリセル対ＩＳｘ、ＩＵｘ、ＩＬｘ、ＩＲｘ、ＩＤｘおよびＩＦｘと、図３に示したイジングモデルのトポロジとの対応関係の一例を示す。メモリセル対ＩＳｘは外部磁場係数を記憶する。また、メモリセル対ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘおよびＩＦｘは、それぞれ相互作用係数を記憶する。具体的に、メモリセル対ＩＵｘは上側のスピン（Ｙ軸方向で−１）、メモリセル対ＩＬｘは左側のスピン（Ｘ軸方向で−１）、メモリセル対ＩＲｘは右側のスピン（Ｘ軸方向で＋１）、メモリセル対ＩＤｘは下側のスピン（Ｙ軸方向で＋１）、メモリセル対ＩＦｘは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）との相互作用係数Ｊｉ，ｊをそれぞれ記憶する。
【００５１】
また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット３００は最大で５個のスピンと接続される。本実施の形態のイジングチップ１００では、外部磁場係数および相互作用係数として、多値に対応する。多値として、０〜１の間の値をとることができる。例えば、＋１／＋０．５／０／−０．５／−１の５値の例を考えるが、これに限定されるものではない。そのため、外部磁場係数および相互作用係数を表わすためには、それぞれ多値のメモリセルが必要となる。メモリセル対ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘおよびＩＦｘは、末尾の符号がＳとＶの２つのメモリセル（例えばメモリセル対ＩＳｘの場合にはメモリセルＩＳＳおよびＩＳＶ）の組み合わせで、例えば＋１／＋０．５／０／−０．５／−１の５値を表現する。
【００５２】
例えば、メモリセル対ＩＳｘの場合には、メモリセルＩＳＳで＋１／−１を表現し、メモリセルＩＳＶが保持する値が１の時は＋１、メモリセルＩＳＶが保持する値が０の時には−１を表す。これに加えて、メモリセルＩＳＳが保持する値が０の時には外部磁場係数を０と見なし、メモリセルＩＳＳが保持する値が１の時にはメモリセルＩＳＶが保持する値で決まる＋１／＋０．５／−０．５／−１のいずれかを外部磁場係数とする。外部磁場係数が０の時は外部磁場係数をディセーブルしていると考えれば、メモリセルＩＳＳに保持された値は外部磁場係数のイネーブルビットであると言うことができる（ＩＳＳ＝１の時に、外部磁場係数がイネーブルされる）。相互作用係数を記憶するメモリセル対ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘおよびＩＦｘも同様に係数とビットの値を対応させている。
【００５３】
スピンユニット３００内のメモリセルＮ０，ＩＳＳ，ＩＳＶ，ＩＵＳ，ＩＵＶ，ＩＬＳ，ＩＬＶ，ＩＲＳ，ＩＲＶ，ＩＤＳ，ＩＤＶ，ＩＦＳおよびＩＦＶは、それぞれイジングチップ１００の外部からリード／ライト可能でなければならない。そのために、スピンユニット３００は、ＳＲＡＭ３１０のメモリセルに関しては、図示しないビット線とワード線とをそれぞれ有している。スピンユニット３００を半導体基板上にタイル状に並べてビット線とワード線とを接続し、図１に示したＩ／Ｏアドレスデコーダ１３０とＩ／Ｏドライバ１２０とで駆動、制御または読み出しすることで、一般的なＳＲＡＭ（Static Random Access Memory）と同様にＳＲＡＭ３１０のメモリセルをＳＲＡＭ互換インタフェース１５０でリード／ライトすることができる。また、フラッシュメモリ３２０のメモリセルに対しては、一般的なフラッシュメモリと同様に、後述するフラッシュメモリ互換インタフェースでリード／ライトすることができる。
【００５４】
＜６．スピンユニット内のスピンの次状態を決定するための回路＞
スピンユニット３００は、同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット３００毎に独立して持っている。スピンの次状態を決定するための回路を、図６に示す。
【００５５】
図６では、スピンユニット３００は、外部とのインタフェースとして、信号線ＮＵ，ＮＬ（図示省略），ＮＲ（図示省略），ＮＤ，ＮＦ（図示省略）およびＮ０を有する。以下では、図示省略したものも含めて説明する。
【００５６】
信号線Ｎ０は当該スピンユニット３００のスピンの値を他のスピンユニット３００に出力するインタフェースである。信号線ＮＵ，ＮＬ，ＮＲ，ＮＤおよびＮＦはそれぞれ他のスピンユニット３００の有するスピンの値を入力するためのインタフェースである。信号線ＮＵは上側のスピン（Ｙ軸方向で−１）、信号線ＮＬは左側のスピン（Ｘ軸方向で−１）、信号線ＮＲは右側のスピン（Ｘ軸方向で−１）、信号線ＮＤは下側のスピン（Ｙ軸方向で＋１）、信号線ＮＦは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）からの入力である。
【００５７】
これらのインタフェースについては、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。図３のトポロジのように単に端は打ち切るのであれば、信号線ＮＵ，ＮＬ，ＮＲ，ＮＤおよびＮＦのうち端に対するものは何も入力しなくて良い（回路上は０ないしは１の固定値に接続するなど、未使用入力端子として適切な処理をとる）。
【００５８】
スピンユニット３００では隣接するスピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接するスピンと相互作用係数の積、および、外部磁場係数を見た時に、正（＋側）の値と負（−側）の値のどちらが支配的か判断することと等価である。本実施の形態では、多値として、例えば＋１／＋０．５／０／−０．５／−１の５値で判断するが、分かり易くするために、＋側の＋１／０／−側の−１を例に具体的に説明する。但し、本実施の形態の例のように５値の場合には、＋側の＋１が＋０．５になったり、−側の−１が−０．５になったりする。
【００５９】
例えば、ｉ番目スピンσｉに、スピンσｊ、σｋ、σｌ、σｍおよびσｎが隣接しているとして、スピンσｉの次状態は以下のように決まる。まず、隣接するスピンの値はσｊ＝＋１、σｋ＝−１、σｌ＝＋１、σｍ＝−１、σｎ＝＋１とし、相互作用係数はＪｊ，ｉ＝＋１、Ｊｋ，ｉ＝＋１、Ｊｌ，ｉ＝＋１、Ｊｍ，ｉ＝−１、Ｊｎ，ｉ＝−１、外部磁場係数ｈｉ＝＋１とする。このとき、相互作用係数と隣接するスピンの積、および、外部磁場係数をそれぞれ並べると、σｊ×Ｊｊ，ｉ＝＋１、σｋ×Ｊｋ，ｉ＝−１、σｌ×Ｊｌ，ｉ＝＋１、σｍ×Ｊｍ，ｉ＝＋１、σｎ×Ｊｎ，ｉ＝−１、ｈｉ＝＋１となる。外部磁場係数は、常に値が＋１のスピンとの相互作用係数と読み替えて良い。
【００６０】
ここで、ｉ番目のスピンと隣接するスピンとの間での局所的なエネルギーは、前述した係数にそれぞれｉ番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、ｊ番目スピンとの間での局所的なエネルギーは、ｉ番目スピンを＋１とした時には−１、ｉ番目スピンを−１とした時には＋１となるので、ｉ番目スピンを＋１にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。このような局所的なエネルギーを全ての隣接するスピン間と外部磁場係数について考えた時に、ｉ番目スピンを＋１／−１のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、前述した相互作用係数および隣接するスピンの積と、外部磁場係数とをそれぞれ並べたものにおいて、＋側の＋１と−側の−１のどちらの作用が大きいかを判断すれば良い。前述の例では、＋１が４個、−１が２個であり、＋１の作用が大きい。仮に、ｉ番目スピンを＋１とすると、エネルギーの総和は−２、ｉ番目スピンを−１とするとエネルギーの総和は＋２になる。よって、＋１の作用が大きい時にはｉ番目スピンの次状態を＋１とし、−１の作用が大きい時にはｉ番目スピンの次状態を−１にするという相互作用演算で、エネルギーを最小化するｉ番目スピンの次状態を決定することができる。
【００６１】
図６のスピンユニット３００に図示する相互作用演算回路３３０は、前記した相互作用を行うための回路である。まず、隣接するスピンの状態と、相互作用係数の＋１／−１を示すメモリセルＩＵＳ，ＩＬＳ（図示省略），ＩＲＳ（図示省略），ＩＤＳ，ＩＦＳ（図示省略）が保持する値との排他的論理和を求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる（＋１は１、−１は０にエンコードされているものとする）。もし、相互作用係数が＋１／−１だけであれば、排他的論理和の出力のうち＋１／−１のどちらの作用が大きいかを相互作用演算回路３３０において判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態＋１のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する相互作用演算回路３３０に入力すべき値となる。
【００６２】
図６に示すスピンユニット３００の構成において、ＳＲＡＭ３１０のメモリセル、フラッシュメモリ３２０のメモリセル、および相互作用演算回路３３０を含めて、相互作用計算回路と称する。
【００６３】
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することができるが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことができず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転させる方法も用いられている。
【００６４】
＜７．スピンアレイ内のスピンユニットの構成＞
図５は、スピンアレイ１１０において、構成単位のスピンユニット３００による相互作用の一例を説明するための図である。図５は、複数のスピンユニット３００が、イジングモデルのトポロジを維持した状態で、半導体基板上の２次元平面に配置、接続されて構成されたスピンアレイ１１０を示している。すなわち、スピンアレイ１１０には、図３に示した３次元格子状のトポロジを持つイジングモデルの各スピンをそれぞれ割り付けられた複数のスピンユニット３００が、半導体基板上に２次元格子状に並べて配置されて接続されている。
【００６５】
図５の例は、スピンアレイ１１０内において、各スピンユニット３００が、相互作用を及ぼす隣接するスピンユニットと接続されている。具体的には、ある１つのスピンユニット３００に着目した場合に、このスピンユニットは、上側のスピンユニットと、左側のスピンユニットと、右側のスピンユニットと、下側のスピンユニットとにそれぞれ接続されている。このような接続により、各スピンユニット３００は、自身のスピンユニットから、自身のスピンユニットのスピンの値を隣接する各スピンユニットへ出力する。また、各スピンユニット３００は、隣接する各スピンユニットから、隣接する各スピンユニットのスピンの値が自身のスピンユニットへ入力される。
【００６６】
＜８．スピンユニットの構成＞
図６は、スピンユニット３００の構成の一例を説明するための図である。スピンユニット３００は、イジングモデルの１つのスピンの値を記憶するメモリセルＮ０と、１つのスピンに相互作用を及ぼす隣接するスピンからの相互作用係数を記憶するメモリセルＩＵＳ，ＩＵＶ，ＩＤＳ，ＩＤＶ（図示省略の他のＩＬＳ，ＩＬＶ，ＩＲＳ，ＩＲＶ，ＩＦＳ，ＩＦＶ）と、１つのスピンの外部磁場係数を記憶するメモリセル（図示省略のＩＳＳ，ＩＳＶ）と、各隣接するスピンの値とこれに対応する相互作用係数との積、および外部磁場係数において、相互作用演算によって１つのスピンの次状態を決定する相互作用演算回路３３０とを有する。
【００６７】
相互作用係数を記憶するメモリセルのうち、ＩＵＳ，ＩＤＳ，ＩＬＳ，ＩＲＳ，ＩＦＳは符号を記憶するメモリセルである。相互作用係数を記憶するメモリセルのうち、ＩＵＶ，ＩＤＶ，ＩＬＶ，ＩＲＶ，ＩＦＶは数値を記憶するメモリセルである。また、外部磁場係数を記憶するメモリセルのうち、ＩＳＳは符号を記憶するメモリセルである。外部磁場係数を記憶するメモリセルのうち、ＩＳＶは数値を記憶するメモリセルである。
【００６８】
相互作用係数を記憶するメモリセル、および外部磁場係数を記憶するメモリセルのそれぞれは、多値メモリセルを含む。この多値メモリセルは、フラッシュメモリ３２０のメモリセルである。フラッシュメモリ３２０に記憶するもの以外は、ＳＲＡＭ３１０のメモリセルに記憶する。
【００６９】
図６の例では、フラッシュメモリ３２０のメモリセルには、相互作用係数のうちの数値（ＩＵＶ，ＩＤＶ、図示省略のＩＬＶ，ＩＲＶ，ＩＦＶ）と、外部磁場係数のうちの数値（図示省略のＩＳＶ）とを記憶する。ＳＲＡＭ３１０のメモリセルには、相互作用係数のうちの符号（ＩＵＳ，ＩＤＳ、図示省略のＩＬＳ，ＩＲＳ，ＩＦＳ）と、外部磁場係数のうちの符号（図示省略のＩＳＳ）と、スピンの値（Ｎ０）とを記憶する。
【００７０】
本実施の形態では、相互作用係数および外部磁場係数として、多値に対応するので、例えば、＋１／＋０．５／０／−０．５／−１の５値の例を考えるが、これに限定されるものではない。＋１／＋０．５／０／−０．５／−１の５値の場合には、相互作用係数および外部磁場係数の数値は１／０．５／０となり、符号は＋／−となる。
【００７１】
相互作用演算回路３３０は、自身のスピンユニット３００内のＳＲＡＭ３１０およびフラッシュメモリ３２０に記憶した相互作用係数および外部磁場係数と、隣接するスピンユニット３００からのスピンの値に基づいて、自身のスピンユニット３００内のスピンの次状態を決定する。このスピンの次状態の値（ＮＥＷ０）はメモリセルＮ０に書き込まれる。すなわち、相互作用演算回路３３０では、各隣接するスピンの値（ＮＵ，ＮＤ、図示省略のＮＬ，ＮＲ，ＮＦ）とこれに対応する相互作用係数（ＩＵＳ，ＩＵＶ，ＩＤＳ，ＩＤＶ、図示省略のＩＬＳ，ＩＬＶ，ＩＲＳ，ＩＲＶ，ＩＦＳ，ＩＦＶ）、および外部磁場係数（図示省略のＩＳＳ，ＩＳＶ）において、多値による相互作用演算によってスピンの次状態を決定する。
【００７２】
なお、スピンユニット３００の構成は、図６の例に限らず、フラッシュメモリ３２０のメモリセルに、相互作用係数の数値および符号と、外部磁場係数の数値および符号とを記憶し、ＳＲＡＭ３１０のメモリセルに、スピンの値を記憶する構成も可能である（後述する図１２参照）。すなわち、スピンの値を除いて、相互作用係数および外部磁場係数の全てをフラッシュメモリ３２０のメモリセルに記憶する構成にすることもできる。この構成の場合には、例えば、後述する図１２の構成とは異なるが、スピンユニット３００の内部に読み出し回路を持つことも可能である。このような構成では、スピンユニット３００の内部において、読み出し回路が、フラッシュメモリ３２０のメモリセルの値を読み出し、この読み出した値を相互作用演算回路３３０に出力する。そして、相互作用演算回路３３０は、多値による相互作用演算によってスピンの次状態を決定する。
【００７３】
＜９．相互作用計算回路の回路構成＞
図７は、図６に示したスピンユニット３００において、相互作用計算回路の回路構成の一例を説明するための図である。相互作用計算回路は、ＳＲＡＭ３１０のメモリセル、フラッシュメモリ３２０のメモリセル、および相互作用演算回路３３０を含めた部分を称する。
【００７４】
図７では、相互作用計算回路として、＋側のスピンの相互作用を計算する＋側計算回路４１０と、−側のスピンの相互作用を計算する−側計算回路４２０とに分けて、＋側計算回路の共通線ＣＴの電圧と−側計算回路の共通線ＣＢの電圧とを電圧比較回路４３０で比較して、スピンの次状態の値ＮＥＷ０を決定する回路構成を示している。
【００７５】
＋側計算回路４１０は、直列に接続されたメモリセルＩＵＶ（フラッシュメモリ内の相互作用係数の数値）およびＮＭＯＳトランジスタ４１１と、直列に接続されたメモリセルＩＤＶ（フラッシュメモリ内の相互作用係数の数値）およびＮＭＯＳトランジスタ４１２とが、並列に接続されて構成されている。メモリセルＩＵＶは制御信号ＣＧ０によりゲート制御され、ＮＭＯＳトランジスタ４１１は制御信号ＣＯＮＴＵＴによりゲート制御される。メモリセルＩＤＶは制御信号ＣＧ１によりゲート制御され、ＮＭＯＳトランジスタ４１２は制御信号ＣＯＮＴＤＴによりゲート制御される。
【００７６】
この並列接続において、メモリセルＩＵＶおよびＩＤＶは、共通線ＣＴに接続されている。この共通線ＣＴは、ＰＭＯＳトランジスタ４１３を介して電源電位に接続されている。この共通線ＣＴに、−側計算回路４２０との比較のための電圧が現れる。一方、並列接続において、ＮＭＯＳトランジスタ４１１およびＮＭＯＳトランジスタ４１２は、ＮＭＯＳトランジスタ４１４を介して接地電位に接続されている。ＰＭＯＳトランジスタ４１３およびＮＭＯＳトランジスタ４１４は、クロック信号ＣＬＫＩによりゲート制御される。
【００７７】
−側計算回路４２０も同様に、直列に接続されたメモリセルＩＵＶおよびＮＭＯＳトランジスタ４２１と、直列に接続されたメモリセルＩＤＶおよびＮＭＯＳトランジスタ４２２とが、並列に接続されて構成されている。メモリセルＩＵＶは制御信号ＣＧ０によりゲート制御され、ＮＭＯＳトランジスタ４２１は制御信号ＣＯＮＴＵＢによりゲート制御される。メモリセルＩＤＶは制御信号ＣＧ１によりゲート制御され、ＮＭＯＳトランジスタ４２２は制御信号ＣＯＮＴＤＢによりゲート制御される。
【００７８】
この並列接続において、メモリセルＩＵＶおよびＩＤＶは、共通線ＣＢに接続されている。この共通線ＣＢは、ＰＭＯＳトランジスタ４２３を介して電源電位に接続されている。この共通線ＣＢに、＋側計算回路４１０との比較のための電圧が現れる。一方、並列接続において、ＮＭＯＳトランジスタ４２１およびＮＭＯＳトランジスタ４２２は、ＮＭＯＳトランジスタ４２４を介して接地電位に接続されている。ＰＭＯＳトランジスタ４２３およびＮＭＯＳトランジスタ４２４は、クロック信号ＣＬＫＩによりゲート制御される。
【００７９】
以上のように構成される＋側計算回路４１０および−側計算回路４２０の動作は、後述する図１０および図１１を用いて説明する。図１０は、図７に示した制御信号ＣＯＮＴＵＴ，ＣＯＮＴＵＢ，ＣＯＮＴＤＴ，ＣＯＮＴＤＢの生成回路も合わせて図示している。
【００８０】
＜１０．フラッシュメモリ＞
図８および図９は、フラッシュメモリ３２０の一例を説明するための図である。図８はフラッシュメモリの記号を示し、図９はフラッシュメモリの特性を示している。
【００８１】
図８に示すように、フラッシュメモリは、制御ゲートＣＧ、ドレインＤ、ソースＳの各端子を有する記号で表示される。フラッシュメモリは、ＭＯＳトランジスタのゲートと酸化膜との間に、浮遊ゲートを挟んだ２重ゲート構造となっている。浮遊ゲートは、酸化膜で覆われているので通常は絶縁状態にある。しかし、制御ゲートに電圧を印加すると、酸化膜を通じてトンネル電流が流れ、浮遊ゲートに電荷が蓄えられる。これが書き込み動作となる。逆に、シリコン基板側に電圧を印加すると、浮遊ゲートに蓄えられた電荷が放出される。これが消去動作となる。
【００８２】
浮遊ゲートに電荷が蓄えられていない場合は、ドレイン−ソース間の抵抗が低い状態なので、制御ゲートに低電圧を加えただけで、ドレイン−ソース間に電流が流れる。また、浮遊ゲートに電荷が蓄えられている場合は、ドレイン−ソース間の抵抗が高い状態なので、制御ゲートの電圧をある程度高くしなければ電流が流れない。この電圧を閾値電圧と言う。つまり、閾値電圧がロウかハイかによって、０か１かのビット信号が読み出せる。これがフラッシュメモリの読み出し動作となる。
【００８３】
フラッシュメモリの特性において、ゲート電圧ＶＧに対するドレイン−ソース間電流ＩＤＳの関係は図９のようになる。この特性で分かるように、ゲート電圧ＶＧに対応する閾値電圧のレベルをロウ、ハイ、その間の電圧値も含めて多段階にすることで、多値メモリセルを実現することができる。１セル当たり１ビットのものを２値メモリセルと言うのに対して、３レベル以上のデータを記憶するものを多値メモリセルと言う。
【００８４】
図９の例において、右側の特性では、ゲート電圧ＶＧ＝０Ｖでドレイン−ソース間電流ＩＤＳが流れないので、０に対応するレベルを記憶できる。一方、左側の特性では、ゲート電圧ＶＧ＝０Ｖでもドレイン−ソース間電流ＩＤＳが流れるので、１に対応するレベルを記憶できる。さらに、右側の特性と左側の特性との間の特性であれば、０と１との間の０．５に対応するレベルを記憶できる。
【００８５】
本実施の形態では、このような多値メモリセルを持つフラッシュメモリ３２０を用いている。そして、フラッシュメモリ３２０の多値メモリセルとＳＲＡＭ３１０のメモリセルとに相互作用係数および外部磁場係数を記憶して、例えば、＋１／＋０．５／０／−０．５／−１の５値に対応する相互作用計算を実現する。
【００８６】
＜１１．相互作用計算回路の回路構成および回路動作＞
図１０および図１１は、相互作用計算回路の回路構成および回路動作の一例を説明するための図である。図１０は、図７に示した相互作用計算回路において、制御信号の生成回路も含めた相互作用計算回路の回路構成の一例を示している。図１１は、図１０に示した相互作用計算回路の回路動作における各部分の電圧波形の一例を示している。ここでは、図７に示した相互作用計算回路（＋側計算回路４１０、−側計算回路４２０）と重複する部分についての説明は省略する。
【００８７】
図１０に示すように、ＮＭＯＳトランジスタ４１１をゲート制御する制御信号ＣＯＮＴＵＴ、ＮＭＯＳトランジスタ４２１をゲート制御する制御信号ＣＯＮＴＵＢは、排他的論理和回路４４１およびインバータ４４２を用いて生成する。排他的論理和回路４４１は、隣接するスピンの値（ＮＵ）と相互作用係数の符号（ＩＵＳ）とを入力として、排他的論理和で制御信号ＣＯＮＴＵＢを出力する。この制御信号ＣＯＮＴＵＢにより、ＮＭＯＳトランジスタ４２１がゲート制御される。インバータ４４２は、排他的論理和回路４４１の出力の制御信号ＣＯＮＴＵＢを入力とし、これを反転して制御信号ＣＯＮＴＵＴを出力する。この制御信号ＣＯＮＴＵＴにより、ＮＭＯＳトランジスタ４１１がゲート制御される。
【００８８】
同様に、ＮＭＯＳトランジスタ４１２をゲート制御する制御信号ＣＯＮＴＤＴ、ＮＭＯＳトランジスタ４２２をゲート制御する制御信号ＣＯＮＴＤＢは、排他的論理和回路４４３およびインバータ４４４を用いて生成する。排他的論理和回路４４３は、隣接するスピンの値（ＮＤ）と相互作用係数の符号（ＩＤＳ）とを入力として、排他的論理和で制御信号ＣＯＮＴＤＢを出力する。この制御信号ＣＯＮＴＤＢにより、ＮＭＯＳトランジスタ４２２がゲート制御される。インバータ４４４は、排他的論理和回路４４３の出力の制御信号ＣＯＮＴＤＢを入力とし、これを反転して制御信号ＣＯＮＴＤＴを出力する。この制御信号ＣＯＮＴＤＴにより、ＮＭＯＳトランジスタ４１２がゲート制御される。
【００８９】
このような制御信号の生成回路を含む相互作用計算回路は、以下のような動作となる。この相互作用計算回路は、図１１に示すクロック信号ＣＬＫＩに同期して動作する。ここでは、簡単のため、相互作用係数ＩＵｘに対応するブロックに着目し、ＮＵから入力されたデータとＩＵＳおよびＩＵＶに保持された相互作用係数を用いた計算を行う部分を説明する。
【００９０】
フラッシュメモリ３２０のメモリセルＩＵＶおよびＮＭＯＳトランジスタ４１１が接続されている共通線ＣＴと、フラッシュメモリ３２０のメモリセルＩＵＶおよびＮＭＯＳトランジスタ４２１が接続されている共通線ＣＢは、相互作用計算を行う前、つまり図１１に示すクロック信号ＣＬＫＩの電圧レベルがロウの期間に、ハイの電位にプリチャージされる。クロック信号ＣＬＫＩはハイになると、クロック信号ＣＬＫＩが入力されているＮＭＯＳトランジスタ４１４，４２４がオンになり、相互作用の値の計算が開始される。この時、フラッシュメモリのメモリセルＩＵＶの制御信号ＣＧ（ＣＧ０）はロウになっており、メモリセルＩＵＶはオン状態である。
【００９１】
ＮＵとＩＵＳの値が等しい場合には、ＮＭＯＳトランジスタ４１１がオンして、フラッシュメモリ３２０のメモリセルＩＵＶおよびＮＭＯＳトランジスタ４１１が直列接続されたパスを通して電流が流れ、共通線ＣＴの電位が低下する。逆に、ＮＵとＩＵＳの値が異なる場合には、ＮＭＯＳトランジスタ４２１がオンして、フラッシュメモリ３２０のメモリセルＩＵＶおよびＮＭＯＳトランジスタ４２１が直列接続されたパスを通して電流が流れ、共通線ＣＢの電位が低下する。この場合の共通線ＣＴまたは共通線ＣＢの電位低下は、例えば、多値メモリセルであるフラッシュメモリ３２０のメモリセルＩＵＶの＋１、＋０．５、−０．５、−１の値に対応したドレイン−ソース間電流に依存した電圧となる。
【００９２】
このことは、他の相互作用係数ＩＤｘに対応するブロックにおいても、同様である。ＮＤから入力されたデータとＩＤＳおよびＩＤＶに保持された相互作用係数を用いた計算を行う。
【００９３】
つまり、入力されたデータと相互作用係数の値が等しい係数に関しては、並列接続の複数の電流パスが接続された共通線ＣＴの電位を下げる電流が流れ、入力されたデータと相互作用係数の値が異なる係数に関しては、並列接続の複数の電流パスが接続された共通線ＣＢの電位を下げる電流が流れる。つまり、相互作用計算における排他的論理和の値が１になる係数に関しては共通線ＣＴの電位を下げ、０になる係数に関しては共通線ＣＢの電位を下げる電流が流れる。
【００９４】
そして、共通線ＣＴの電圧と共通線ＣＢの電圧とを、電圧比較回路４３０で比較する。電圧比較回路４３０は、共通線ＣＴの電圧による＋側、または共通線ＣＢの電圧による−側のどちらの作用が大きいかを判定して、作用が大きい方をスピンの次状態の値ＮＥＷ０として出力する。例えば、共通線ＣＴの電圧が高い場合にはスピンの次状態の値ＮＥＷ０として０が出力され、共通線ＣＢの電圧が高い場合にはスピンの次状態の値ＮＥＷ０として１が出力される。
【００９５】
以上の動作は、クロック信号ＣＬＫＩの電圧レベルがハイまたはロウとなる度に、繰り返して実行される。このように繰り返す毎に、共通線ＣＴと共通線ＣＢとにそれぞれ現れる電圧を比較して出力することで、作用が大きい方の＋側または−側をスピンの次状態として決定することができる。
【００９６】
なお、相互作用計算回路において、フラッシュメモリ３２０のメモリセルに相互作用係数および外部磁場係数の数値と符号の両方を記憶する構成の場合には、回路構成は図示しないが以下のようになる。例えば、相互作用係数ＩＵｘに対応するブロックにおいては、共通線ＣＴおよび共通線ＣＢにそれぞれ、メモリセルＩＵＶとメモリセルＩＵＳとＮＭＯＳトランジスタ（ＮＵ）とが直列に接続された構成となる。また、相互作用係数ＩＤｘに対応するブロックにおいても同様である。このような相互作用計算回路の構成においても、上記と同様の動作となる。
【００９７】
＜１２．フラッシュメモリの読み出し回路＞
図１２および図１３は、フラッシュメモリ３２０の読み出し回路の構成の一例を説明するための図である。図１２は、フラッシュメモリ３２０の読み出し回路をスピンユニット３００の外部に持つ構成の一例を示している。図１３は、スピンユニット３００が図１２の構成の場合のスピンアレイ１１０の全体構成の一例を示している。
【００９８】
図１２では、相互作用係数の数値（ＩＵＶ，ＩＤＶ、図示省略のＩＬＶ，ＩＲＶ，ＩＦＶ）および符号（ＩＵＳ，ＩＤＳ、図示省略のＩＬＳ，ＩＲＳ，ＩＦＳ）と、外部磁場係数の数値（図示省略）および符号（図示省略）とをフラッシュメモリ３２０のメモリセルに記憶し、スピンの値（Ｎ０）をＳＲＡＭ３１０のメモリセルに記憶する構成を示している。すなわち、書き換えが頻繁で他のスピンユニットへの出力が必要であるスピンの値を除いて、相互作用係数および外部磁場係数の全てを、回路規模が小さくできるフラッシュメモリ３２０のメモリセルに記憶する構成である。
【００９９】
図１２の構成において、スピンユニット３００の内部には、ＳＲＡＭ３１０のメモリセルＮ０と、フラッシュメモリ３２０のメモリセルＩＵＳ，ＩＵＶ，ＩＤＳ，ＩＤＶと、各隣接するスピンの値（ＮＵ、ＮＤ）と相互作用係数および外部磁場係数において、多値による相互作用演算によってスピンの次状態（ＮＥＷ０）を決定する相互作用演算回路３３０とを有する。このスピンユニット３００の外部には、スピンユニット３００の内部のフラッシュメモリ３２０のメモリセルＩＵＳ，ＩＵＶ，ＩＤＳ，ＩＤＶの値を読み出し、スピンユニット３００の内部の相互作用演算回路３３０に出力する読み出し回路５００が設けられている。スピンユニット３００の外部の読み出し回路５００からスピンユニット３００の内部の相互作用演算回路３３０へは、フラッシュメモリ３２０のメモリセルの数に対応するビット幅の出力となる。
【０１００】
図１２に示すスピンユニット３００のように、フラッシュメモリ３２０の読み出し回路５００をスピンユニット３００の外部に持つ構成の場合には、スピンユニット３００の外部の読み出し回路５００が、スピンユニット３００の内部のフラッシュメモリ３２０のメモリセルの値を読み出し、この読み出した値を、スピンユニット３００の内部の相互作用演算回路３３０に出力する。そして、相互作用演算回路３３０は、各隣接するスピンユニットからのスピンの値（ＮＵ，ＮＤ）と、読み出し回路５００からの相互作用係数（ＩＵＳ，ＩＵＶ，ＩＤＳ，ＩＤＶ）および外部磁場係数において、多値による相互作用演算によってスピンの次状態（ＮＥＷ０）を決定し、この決定した値をＳＲＡＭ３１０のメモリセルＮ０に書き込む。
【０１０１】
図１２に示すスピンユニット３００の構成の場合のスピンアレイ１１０は、図１３のような構成となる。すなわち、図１３では、複数のスピンユニット３００を、行方向に４個、列方向に３個を２次元格子状に配置している例を図示している。各スピンユニット３００を区別するために、説明上便宜的に、座標（行方向をＮ００、Ｎ０１、Ｎ０２、Ｎ０３、列方向をＮ００、Ｎ１０、Ｎ２０）を付与している。このイジングチップ１００では、２次元格子状に配置した複数のスピンユニット３００と、複数のスピンユニット３００で共有し、フラッシュメモリ互換インタフェースを持つフラッシュメモリ読み出し／書き込み回路５１０とを有している。
【０１０２】
フラッシュメモリ読み出し／書き込み回路５１０は、一般的なフラッシュメモリへのリード／ライトと同様のフラッシュメモリ互換インタフェースを持ち、フラッシュメモリ３２０の値を読み出すための機能と共に、フラッシュメモリ３２０へ値を書き込むための機能も備えている。このフラッシュメモリ読み出し／書き込み回路５１０は、回路規模が大きくなるので、複数のスピンユニット３００で共有することが望ましい。
【０１０３】
図１３に示すスピンアレイ１１０の構成の場合には、スピンユニット３００の外部のフラッシュメモリ読み出し／書き込み回路５１０が、各スピンユニット３００の内部のフラッシュメモリ３２０のメモリセルの値を読み出し、この読み出した値を係数値としてメモリセルの数のビット幅で、各スピンユニット３００の内部の相互作用演算回路３３０に出力する。
【０１０４】
例えば、図１３において、列方向の各スピンユニットＮ００，Ｎ１０，Ｎ２０については、以下のような順序となる。まず、フラッシュメモリ読み出し／書き込み回路５１０は、スピンユニットＮ００の内部のフラッシュメモリ３２０の値を読み出し、この読み出した係数値をメモリセルの数のビット幅で、スピンユニットＮ００の内部の相互作用演算回路３３０に出力する。そして、スピンユニットＮ００の相互作用演算回路３３０は、各隣接するスピンユニットからのスピンの値と、フラッシュメモリ読み出し／書き込み回路５１０からの相互作用係数および外部磁場係数に基づいて、多値による相互作用演算によってスピン（Ｎ０）の次状態（ＮＥＷ０）を決定し、この決定した値をＳＲＡＭ３１０のメモリセルＮ０に書き込む。
【０１０５】
続いて、フラッシュメモリ読み出し／書き込み回路５１０は、スピンユニットＮ１０についても同様に、このスピンユニットＮ１０の内部のフラッシュメモリ３２０の値を読み出し、この読み出した係数値をメモリセルの数のビット幅で、スピンユニットＮ１０の内部の相互作用演算回路３３０に出力する。そして、スピンユニットＮ１０の相互作用演算回路３３０は、各隣接するスピンユニットからのスピンの値と、フラッシュメモリ読み出し／書き込み回路５１０からの相互作用係数および外部磁場係数に基づいて、多値による相互作用演算によってスピンの次状態を決定し、この決定した値をＳＲＡＭ３１０のメモリセルＮ０に書き込む。続いて実行するスピンユニットＮ２０についても同様である。
【０１０６】
他の列方向の、各スピンユニットＮ０１，Ｎ１１，Ｎ２１の場合、各スピンユニットＮ０２，Ｎ１２，Ｎ２２の場合、各スピンユニットＮ０３，Ｎ１３，Ｎ２３の場合も、同様である。このように、フラッシュメモリ読み出し／書き込み回路５１０は、２次元格子状に配置された複数のスピンユニット３００を１個ずつ処理して、各スピンユニット３００のスピン（Ｎ０）の次状態（ＮＥＷ０）を決定する相互作用計算を実行する。
【０１０７】
また、フラッシュメモリ読み出し／書き込み回路５１０は、フラッシュメモリ３２０へ値を書き込むための機能も備えている。フラッシュメモリ３２０への書き込み時には、メモリセルの制御ゲートに電圧を印加することで、ドレインが接続された共通線の電圧に対応する電荷が浮遊ゲートに蓄えられる。例えば、共通線が、ハイの電位の場合にはメモリセルにハイの値を書き込むことができ、ロウの電位の場合にはメモリセルにロウの値を書き込むことができる。
【０１０８】
＜１３．フラッシュメモリの読み出し回路および相互作用演算回路＞
図１４および図１５は、フラッシュメモリ３２０の読み出し回路および相互作用演算回路の構成の一例を説明するための図である。図１４は、フラッシュメモリ３２０の読み出し回路および相互作用演算回路をスピンユニット３００の外部に持つ構成の一例を示している。図１５は、スピンユニット３００が図１４の構成の場合のスピンアレイ１１０の全体構成の一例を示している。すなわち、図１４および図１５では、上述した図１２および図１３に対して、さらに相互作用演算回路をスピンユニット３００の外部に持つ構成である。
【０１０９】
図１４の構成において、スピンユニット３００の内部には、ＳＲＡＭ３１０のメモリセルＮ０と、フラッシュメモリ３２０のメモリセルＩＵＳ，ＩＵＶ，ＩＤＳ，ＩＤＶとを有する。このスピンユニット３００の外部には、スピンユニット３００の内部のフラッシュメモリ３２０のメモリセルＩＵＳ，ＩＵＶ，ＩＤＳ，ＩＤＶの値を読み出す読み出し回路６００が設けられている。さらに、スピンユニット３００の外部には、各隣接するスピンの値（ＮＵ、ＮＤ）と読み出し回路６００からの相互作用係数および外部磁場係数において、多値による相互作用演算によってスピンの次状態（ＮＥＷ０）を決定する相互作用演算回路６１０が設けられている。スピンユニット３００の外部の相互作用演算回路６１０からスピンユニット３００の内部のＳＲＡＭ３１０のメモリセルＮ０へは、１ビットの出力となる。
【０１１０】
図１４に示すスピンユニット３００のように、フラッシュメモリ３２０の読み出し回路６００および相互作用演算回路６１０をスピンユニット３００の外部に持つ構成の場合には、スピンユニット３００の外部の読み出し回路６００が、スピンユニット３００の内部のフラッシュメモリ３２０のメモリセルの値を読み出し、この読み出した値を相互作用演算回路６１０に出力する。そして、相互作用演算回路６１０は、各隣接するスピンユニットからのスピンの値（ＮＵ，ＮＤ）と、読み出し回路６００からの相互作用係数（ＩＵＳ，ＩＵＶ，ＩＤＳ，ＩＤＶ）および外部磁場係数において、多値による相互作用演算によってスピンの次状態（ＮＥＷ０）を決定し、この決定した値（ＮＥＷ０）をスピンユニット３００の内部のＳＲＡＭ３１０のメモリセルＮ０に書き込む。
【０１１１】
図１４に示すスピンユニット３００の構成の場合のスピンアレイ１１０は、図１５のような構成となる。図１５でも、複数のスピンユニット３００を、行方向に４個、列方向に３個を２次元格子状に配置している例を図示し、座標（行方向をＮ００、Ｎ０１、Ｎ０２、Ｎ０３、列方向をＮ００、Ｎ１０、Ｎ２０）を付与している。このイジングチップ１００では、２次元格子状に配置した複数のスピンユニット３００と、複数のスピンユニット３００で共有し、フラッシュメモリ互換インタフェースを持つフラッシュメモリ読み出し／書き込み回路／相互作用演算回路６２０とを有している。
【０１１２】
図１５に示すスピンアレイ１１０の構成の場合には、スピンユニット３００の外部のフラッシュメモリ読み出し／書き込み回路／相互作用演算回路６２０が、各スピンユニット３００の内部のフラッシュメモリ３２０のメモリセルの値を読み出し、この読み出した値と各隣接するスピンユニットからの値に基づいて多値による相互作用演算を行い、この相互作用演算結果をスピン（Ｎ０）の次状態として決定し、この決定した値（ＮＥＷ０）を、各スピンユニット３００の内部のＳＲＡＭ３１０のメモリセルＮ０に書き込む。
【０１１３】
例えば、図１５において、列方向の各スピンユニットＮ００，Ｎ１０，Ｎ２０については、以下のような順序となる。まず、フラッシュメモリ読み出し／書き込み回路／相互作用演算回路６２０は、スピンユニットＮ００の内部のフラッシュメモリ３２０の値を読み出し、この読み出した値と各隣接するスピンユニットからの値に基づいて多値による相互作用演算を行い、この相互作用演算結果を、スピンユニットＮ００の内部のＳＲＡＭ３１０のメモリセルＮ０に書き込む。
【０１１４】
続いて、フラッシュメモリ読み出し／書き込み回路／相互作用演算回路６２０は、スピンユニットＮ１０についても同様に、このスピンユニットＮ１０の内部のフラッシュメモリ３２０の値を読み出し、この読み出した値と各隣接するスピンユニットからの値に基づいて多値による相互作用演算を行い、この相互作用演算結果を、スピンユニットＮ１０の内部のＳＲＡＭ３１０のメモリセルＮ０に書き込む。続いて実行するスピンユニットＮ２０についても同様である。
【０１１５】
他の列方向の、各スピンユニットＮ０１，Ｎ１１，Ｎ２１の場合、各スピンユニットＮ０２，Ｎ１２，Ｎ２２の場合、各スピンユニットＮ０３，Ｎ１３，Ｎ２３の場合も、同様である。このように、フラッシュメモリ読み出し／書き込み回路／相互作用演算回路６２０は、２次元格子状に配置された複数のスピンユニット３００を１個ずつ処理して、各スピンユニット３００のスピン（Ｎ０）の次状態を決定、この決定した値（ＮＥＷ０）を各スピンユニット３００のＳＲＡＭ３１０のメモリセルＮ０に書き込む相互作用計算を実行する。
【０１１６】
＜１４．イジングチップの相互作用動作手順＞
図１６は、イジングチップ１００の相互作用動作手順の一例を説明するためのフローチャートである。図１６では、上述した図１３および図１５に示したスピンアレイ１１０の構成における相互作用動作の例を示している。
【０１１７】
このイジングチップ１００の相互作用動作手順は、イジングチップ１００を組み込んだ情報処理装置２００において、イジングチップ１００をＣＰＵ２１０が制御して基底状態探索における相互作用動作の手順を示している。
【０１１８】
相互作用動作開始に先立って、初期設定として、イジングチップ１００の各スピンユニット３００内のＳＲＡＭ３１０およびフラッシュメモリ３２０のメモリセルに、スピンの値、相互作用係数、および、外部磁場係数を入力する。本実施の形態では、相互作用係数および外部磁場係数として、多値に対応するために、例えば、＋１／＋０．５／０／−０．５／−１の値となる。但し、この値に限定されるものではない。
【０１１９】
初期設定の完了後、相互作用動作が開始となる。相互作用動作が開始になると、ステップＳ７０１〜Ｓ７０４において、各スピンユニット３００の相互作用計算を実行する。この相互作用計算では、相互作用アドレス線１８０を介してアドレスをイジングチップ１００に入力し、相互作用クロック線１８１を介してクロックを生成してイジングチップ１００内で相互作用を起こさせる。また、スピン用電源線１４１に供給される電圧をスケジューリングに沿って制御する。
【０１２０】
この場合に、全てのスピンを同時に更新しようとすると、あるスピンを更新するときに、隣接するスピンを見て、隣接するスピンとの間でエネルギーを最小化するようにスピンを更新するので、それと同時に隣接するスピンの値を更新すると、両方の更新が重複してしまい、エネルギーを最小化できずに振動してしまう。そこで、本実施の形態では、隣接するスピンを同時に更新しないように、スピンアレイ１１０内のスピンユニット３００をグループ分けしている。
【０１２１】
例えば、上述した図１３および図１５に示したスピンアレイ１１０の構成では、まず、ステップＳ７０１において、スピンユニットＮ００，Ｎ１１，Ｎ２２の相互作用計算を行う。このステップＳ７０１では、図１３および図１５のスピンユニット３００の配列において、左上のスピンユニットＮ００から斜め右下方向へのスピンユニットＮ１１，Ｎ２２を選択して、相互作用計算を行う。このスピンユニットＮ００，Ｎ１１，Ｎ２２における計算結果の値で、隣接するスピンユニットのメモリセルの値を更新する。
【０１２２】
例えば、スピンユニットＮ００における計算結果の値で、右側のスピンユニットＮ０１および下側のスピンユニットＮ１０のメモリセルの値を更新する。同様に、スピンユニットＮ１１における計算結果の値で、上側のスピンユニットＮ０１、左側のスピンユニットＮ１０、右側のスピンユニットＮ１２、および下側のスピンユニットＮ２１のメモリセルの値を更新する。スピンユニットＮ２２における計算結果の値で、上側のスピンユニットＮ１２、左側のスピンユニットＮ２１、および右側のスピンユニットＮ２３のメモリセルの値を更新する。
【０１２３】
同様にして、スピンユニットＮ１０，Ｎ２１，Ｎ０３の相互作用計算（ステップＳ７０２）、スピンユニットＮ２０，Ｎ０２，Ｎ１３の相互作用計算（ステップＳ７０３）、スピンユニットＮ０１，Ｎ１２，Ｎ２３の相互作用計算（ステップＳ７０４）、を順に実行する。
【０１２４】
ステップＳ７０１〜Ｓ７０４における全てのスピンユニットの相互作用計算を所定の回数繰り返して（ステップＳ７０５）、所定の回数が完了した後に相互作用動作が終了となる。この相互作用動作が終了となると、イジングチップ１００から相互作用計算結果であるスピンの値を読み出すことで、対象問題を表現するイジングモデルの答えを得ることができる。
【０１２５】
＜１５．効果＞
以上説明した本実施の形態によれば、スピンユニット３００内の相互作用係数を記憶するメモリセルおよび外部磁場係数を記憶するメモリセルは、多値メモリセルを含むことで、イジングモデルの基底状態を求めるイジングチップ１００において、３値以上の多値の係数による相互作用計算を可能にする技術を提供することができる。より詳細には、以下の通りである。
【０１２６】
（１）多値メモリセルは、フラッシュメモリ３２０のメモリセルである。これにより、フラッシュメモリ３２０のメモリセルには、相互作用係数のうちの数値と、外部磁場係数のうちの数値とを、例えば５値などの多値で記憶することができる。この場合に、ＳＲＡＭ３１０のメモリセルには、相互作用係数のうちの符号と、外部磁場係数のうちの符号と、スピンの値とを記憶することができる。
【０１２７】
（２）多値メモリセルは、フラッシュメモリ３２０のメモリセルである。これにより、フラッシュメモリ３２０のメモリセルには、相互作用係数の数値および符号と、外部磁場係数の数値および符号とを、例えば５値などの多値で記憶することができる。この場合に、ＳＲＡＭ３１０のメモリセルには、スピンの値を記憶することができる。
【０１２８】
（３）相互作用演算回路３３０は、スピンユニット３００の内部または外部に配置されている。これにより、相互作用演算回路３３０は、各隣接するスピンの値とこれに対応する相互作用係数との積、および外部磁場係数において、多値による相互作用演算によってスピンの次状態を決定することができる。
【０１２９】
（４）スピンユニット３００は、読み出し回路と相互作用演算回路３３０とを含む。これにより、読み出し回路は、フラッシュメモリ３２０のメモリセルに記憶した相互作用係数および外部磁場係数を読み出すことができる。そして、相互作用演算回路３３０は、各隣接するスピンの値と読み出し回路からの相互作用係数との積、および読み出し回路からの外部磁場係数において、多値による相互作用演算によってスピンの次状態を決定することができる。
【０１３０】
（５）スピンユニット３００は、相互作用演算回路３３０を含み、スピンユニット３００の外部には読み出し回路５００が配置されている。これにより、読み出し回路５００は、スピンユニット３００内のフラッシュメモリ３２０のメモリセルに記憶した相互作用係数および外部磁場係数を読み出し、この読み出した相互作用係数および外部磁場係数をスピンユニット３００内の相互作用演算回路３３０に出力することができる。そして、相互作用演算回路３３０は、各隣接するスピンの値と読み出し回路５００からの相互作用係数との積、および読み出し回路５００からの外部磁場係数において、多値による相互作用演算によってスピンの次状態を決定することができる。また、読み出し回路５００は、複数のスピンユニット３００で共有することができる。
【０１３１】
（６）スピンユニット３００の外部には、読み出し回路６００と相互作用演算回路６１０とが配置されている。これにより、読み出し回路６００は、スピンユニット３００内のフラッシュメモリ３２０のメモリセルに記憶した相互作用係数および外部磁場係数を読み出すことができる。そして、相互作用演算回路６１０は、各隣接するスピンの値と読み出し回路６００からの相互作用係数との積、および読み出し回路６００からの外部磁場係数において、多値による相互作用演算によってスピンの次状態を決定することができる。また、読み出し回路６００および相互作用演算回路６１０は、複数のスピンユニット３００で共有することができる。
【０１３２】
（７）相互作用演算回路３３０は、＋側計算回路４１０と−側計算回路４２０とを含む論理回路と、＋側計算回路４１０と−側計算回路４２０との作用の大きさを比較する電圧比較回路４３０とを有する。これにより、＋側計算回路４１０は、並列接続の複数の電流パスからなる構成において、＋側の作用の大きさを計算することができる。かつ、−側計算回路４２０は、並列接続の複数の電流パスからなる構成において、−側の作用の大きさを計算することができる。そして、電圧比較回路４３０は、＋側計算回路４１０の結果が現れる共通線ＣＴの電圧と−側計算回路４２０の結果が現れる共通線ＣＢの電圧とを比較して、高い方の電圧に対応する値をスピンの次状態を決定する値として出力することができる。
【０１３３】
（８）情報処理装置２００において、イジングチップ１００の制御プログラムは、スピンアレイ１１０内のスピンユニット３００へ、それぞれ、メモリセルにスピンの値、多値メモリセルに相互作用係数、および多値メモリセルに外部磁場係数を書き込む。そして、スピンユニット３００の基底状態探索処理を所定の回数繰り返して実行することで、基底状態に達したスピンユニット３００のスピンの値を読み出して対象問題の解を得ることができる。
【０１３４】
（９）スピンユニット３００の基底状態探索処理は、グループ分けされたスピンユニットに対して、グループ毎に所定の回数繰り返して実行することで、隣接するスピンユニット３００を同時に更新しないようにすることができる。
【０１３５】
（１０）イジングチップ１００において、相互作用係数および外部磁場係数を多値メモリセルに記憶し、相互作用演算回路３３０は、多値による相互作用演算によってスピンの次状態を決定することができるので、より複雑な問題の計算に対応することが可能となり、また、より高速に問題の解を得ることが可能となる。
【０１３６】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【０１３７】
例えば、上記した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１３８】
また、上記した実施の形態では、物理学の世界で代表的なイジングモデルを例にあげて説明したが、本発明はこれに限定されるものではなく、種々の物理現象や社会現象を表現することができる相互作用モデル全般に適用できるものである。
【符号の説明】
【０１３９】
１００，１００−１，１００−２  イジングチップ
１１０  スピンアレイ
１２０  Ｉ／Ｏドライバ
１３０  Ｉ／Ｏアドレスデコーダ
１４０  相互作用アドレスデコーダ
１４１  スピン用電源線
１４２  通常電源線
１５０  ＳＲＡＭ互換インタフェース
１６０  相互作用制御インタフェース
１８０  相互作用アドレス線
１８１  相互作用クロック線
１９０  アドレスバス（ＳＲＡＭ互換インタフェース）
１９１  データバス（ＳＲＡＭ互換インタフェース）
１９２  Ｉ／Ｏクロック線（ＳＲＡＭ互換インタフェース）
１９３  Ｒ／Ｗ制御線（ＳＲＡＭ互換インタフェース）
２００  情報処理装置
２１０  ＣＰＵ
２２０  ＲＡＭ
２３０  システムバス
２４０  ＮＩＣ
２５０  イジングチップコントローラ
２６０  ＨＤＤ
２９０  装置間ネットワーク
３００  スピンユニット
３１０  ＳＲＡＭ
３２０  フラッシュメモリ
３３０  相互作用演算回路
４１０  ＋側計算回路
４２０  −側計算回路
４３０  電圧比較回路
５００  読み出し回路
５１０  フラッシュメモリ読み出し／書き込み回路
６００  読み出し回路
６１０  相互作用演算回路
６２０  フラッシュメモリ読み出し／書き込み回路／相互作用演算回路
Ｎ０，ＩＵＳ，ＩＵＶ，ＩＤＳ，ＩＤＶ  メモリセル
【図１】
0005901712.tif 000003
【図２】
0005901712.tif 000004
【図３】
0005901712.tif 000005
【図４】
0005901712.tif 000006
【図５】
0005901712.tif 000007
【図６】
0005901712.tif 000008
【図７】
0005901712.tif 000009
【図８】
0005901712.tif 000010
【図９】
0005901712.tif 000011
【図１０】
0005901712.tif 000012
【図１１】
0005901712.tif 000013
【図１２】
0005901712.tif 000014
【図１３】
0005901712.tif 000015
【図１４】
0005901712.tif 000016
【図１５】
0005901712.tif 000017
【図１６】
0005901712.tif 000018