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