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