(57)【要約】  素子の製造ばらつきの影響を回避して情報処理を実現する手段を提供することを目的とすることを目的とする。  １個以上のアナログ計算機を含む情報処理装置において、アナログ計算機の特性ばらつきを計測して記録するステップを有することを特徴とする情報処理装置が開示される。
2017033337.tif 000002
【特許請求の範囲】
【請求項１】
処理の対象もしくは処理の結果となる数値を格納する数値格納メモリと、
前記処理に用いる係数を格納する係数格納メモリと、
前記数値と前記係数を用いて前記処理の少なくとも一部をアナログ的に実行するアナログ処理回路と、
を複数組備え、
前記複数のアナログ処理回路の特性ばらつきを示す特性データを格納する特性データ格納メモリを備え、
問題データを前記数値または前記係数として前記数値格納メモリと前記係数格納メモリに格納し、前記アナログ処理回路による１または複数回の処理の後、前記数値格納メモリに格納された数値を解データとして読み出す、
情報処理装置。
【請求項２】
前記問題データを格納する前に、前記特性データに基づいて前記問題データを変換し、
前記解データを読み出した後に、前記特性データに基づいて前記解データを変換する、
請求項１記載の情報処理装置。
【請求項３】
第１の数値格納メモリと、第１の係数格納メモリと、第１のアナログ処理回路と、
第２の数値格納メモリと、第２の係数格納メモリと、第２のアナログ処理回路と、
を有する計算ユニットを備え、
前記第２のアナログ処理回路が、前記第１の数値格納メモリに格納された数値と、前記第２の係数格納メモリに格納された係数を用いて処理を行い、前記第２の数値格納メモリに処理の結果を格納する、
請求項２記載の情報処理装置。
【請求項４】
処理装置、記憶装置、入力装置、出力装置を備え、
前記入力装置が、前記問題データを受付け、
前記処理装置が、前記受付けた問題データを前記記憶装置に格納し、
前記処理装置が、前記記憶装置に格納されている前記問題データを読み出し、前記特性データに基づいて前記読み出した問題データを変換し、前記計算ユニットの数値格納メモリと前記係数格納メモリに格納し、
前記処理装置が、前記アナログ処理回路による複数回の処理の後、前記計算ユニットの数値格納メモリから前記解データを読み出し、前記特性データに基づいて前記読み出した解データを変換し、前記記憶装置または前記出力装置に出力する、
請求項３記載の情報処理装置。
【請求項５】
前記処理装置の制御により、前記複数のアナログ処理回路の特性ばらつきを測定し、測定結果を前記特性データとして前記特性データ格納メモリに格納する、
請求項４記載の情報処理装置。
【請求項６】
前記複数のアナログ処理回路の処理内容を検査する検査回路と、
前記アナログ処理回路による処理と同等の処理をデジタル的に実行するデジタル処理回路と、
を有し、
前記検査回路の検査結果に基づいて、前記アナログ処理回路の処理を前記デジタル処理回路に代替させる、
請求項１記載の情報処理装置。
【請求項７】
前記検査回路による検査は、前記アナログ処理回路の処理において生成される２つのアナログ値を検査するものであり、
前記アナログ値の差が第１の閾値より小さく、第２の閾値より大きい場合に、前記アナログ処理回路の処理を前記デジタル処理回路に代替させる、
請求項６記載の情報処理装置。
【請求項８】
前記問題データは、
イジングモデルのスピン配列を求めるための問題データ、あるいは、ニューラルネットワークのニューロンの状態を求めるための問題データである、
請求項１記載の情報処理装置。
【請求項９】
処理の対象もしくは処理の結果となる数値を格納する数値格納メモリと、
前記処理に用いる係数を格納する係数格納メモリと、
前記数値と前記係数を用いて少なくとも一部の処理をアナログ的に実行するアナログ処理回路と、
を複数組備え、
前記複数のアナログ処理回路の処理内容を検査する検査回路と、
前記アナログ処理回路による処理と同等の処理をデジタル的に実行するデジタル処理回路と、
を有し、
前記検査回路の検査結果に基づいて、前記アナログ処理回路の処理を前記デジタル処理回路に代替させる、
情報処理装置。
【請求項１０】
前記検査回路による検査は、前記アナログ処理回路の処理において生成される２つのアナログ値の差を検査するものであり、
前記アナログ値の差が所定の条件下にある場合、前記アナログ処理回路の処理を前記デジタル処理回路に代替させる、
請求項９記載の情報処理装置。
【請求項１１】
１個以上のアナログ計算機を含む情報処理装置を用いた情報処理方法において、
前記アナログ計算機の特性ばらつきを計測して特性ばらつきデータとして記録するステップ、
を有することを特徴とする情報処理方法。
【請求項１２】
前記特性ばらつきデータを参照して、前記アナログ計算機に入力するデータを変換するステップと、
前記特性ばらつきデータを参照して、前記アナログ計算機から出力されたデータを解釈するステップと、
を有することを特徴とする請求項１１記載の情報処理方法。
【請求項１３】
前記アナログ計算機はイジングモデルのスピン配列を求めるものであり、
前記入力するデータの変換は、イジングモデルの相互作用係数乃至は外部磁場係数の値の符号を反転させるものであり、
前記出力されたデータの解釈は、スピン値の反転であることを特徴とする請求項１２記載の情報処理方法。
【請求項１４】
前記アナログ計算機は特性ばらつきの影響を評価する構成単位毎に、その評価を行う検査部を有しており、
前記検査部からの検査結果を読み出すことで、誤動作の可能性のある前記構成単位を検出することを特徴とする請求項１１記載の情報処理方法。
【請求項１５】
前記誤動作の可能性のある構成単位を検出したときに、前記情報処理装置が有する論理回路が当該構成単位の担う処理を一時的に代替することを特徴とする請求項１４記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置において、求解すべき問題をそれに対応した構造の装置として実現したアナログ計算機に関するものである。
【背景技術】
【０００２】
現在主流の計算機は、トランジスタをスイッチ素子として捉えて構成したデジタル計算機である。一方で、トランジスタなどの素子が持つ特性をより直接的に利用して情報処理を実現するアナログ計算機がある。アナログ計算機の代表的なものに演算増幅器を用いて微分方程式を解くものがかつて盛んに用いられた（例えば、特許文献１）。しかし、アナログ電子回路の実装に起因する精度の制限から、デジタル計算機上での数値計算法に取って替わられた（例えば、特許文献２）。【０００３】
ところで、近年、ニューラルネットワークに代表される創発型の計算モデルが広く用いられている。創発とは部分の性質の単純な総和にとどまらない性質が全体として現れることである。ニューラルネットワークであればニューロン間の局所的なシナプス結合によって成される振舞いが、全体としてはある種の情報処理を実現している（例えば、特許文献３）。創発型の計算モデルとして、例えば他に遺伝的アルゴリズムや群知能があげられる。また、局所的な相互作用に基づく計算モデルであれば創発型と言えるものは多い。創発型の計算モデルの特徴として、一般的にそれを実現する個々の操作の精度が多少低くても、大局的には影響を及ぼさないことがあげられる。この特徴に基づいて、前述したアナログ計算機が創発型の計算モデルを実現する上で再度注目を浴びている（例えば、特許文献４）。また、特許文献５はイジングモデルと呼ばれる統計物理学で磁性体の振舞いを説明するモデルにおいて、エネルギー最小の状態のスピン配列を求めることが一種の最適化問題として捉えられることを用いて、イジングモデルと相似な構造のＣＭＯＳ回路を半導体基板上の形成したアナログ計算機の一種である。【０００４】
アナログ計算機は計算モデルの構成要素と対応する素子を多数個空間上（例えば半導体素子として実現する場合には半導体基板上）に並べて構成する。そのため、素子の製造時のばらつきが問題となる。ニューラルネットワークを実現する場合、同じニューロンを模擬する素子であったとしても、製造時のばらつきによって素子毎に特性が異なる。アナログ計算機ではその振舞いが素子の入出力特性の個体差に影響を受ける。そこで、素子の個体差を補償するような回路を付加することが行われている（例えば、特許文献６）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６１−２８５５８３号
【特許文献２】特開平２−２２６１８６号
【特許文献３】特開２００２−８０３２号
【特許文献４】特開２００７−６６２５８号
【特許文献５】ＰＣＴ／ＪＰ２０１４／０７３２２６
【特許文献６】特開平１０−１１６３０９号
【非特許文献】
【０００６】
【非特許文献１】Stolk， P． A．， Widdershoven， F． P． & Klaassen， D． B． M． Modeling statistical dopant fluctuations in MOS transistors． IEEE Trans． on Electron Devices 45， 1960−1971 (1998)．
【非特許文献２】Miki， H． et． al． Understanding short−term BTI behavior through comprehensive observation of gate−voltage dependence of RTN in highly scaled high−κ/metal−gate pFETs． In Symp． on VLSI Tech． 148−149 (IEEE， 2011)．
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明では、アナログ計算機を備える情報処理装置において、アナログ計算機を構成する素子の特性ばらつきの影響を回避することのできる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、代表的な本発明の情報処理装置の一つは、１個以上のアナログ計算機を含む情報処理装置において、アナログ計算機の特性ばらつきを計測して記録するステップを実行する機能を有することを特徴とする情報処理装置である。【０００９】
本発明の他の一側面は、処理の対象もしくは処理の結果となる数値を格納する数値格納メモリと、処理に用いる係数を格納する係数格納メモリと、数値と係数を用いて処理の少なくとも一部をアナログ的に実行するアナログ処理回路と、を複数組備える情報処理装置である。この情報処理装置は、複数のアナログ処理回路の特性ばらつきを示す特性データを格納する特性データ格納メモリを備える。この情報処理装置は、問題データを数値または係数として数値格納メモリと係数格納メモリに格納し、アナログ処理回路による１または複数回の処理の後、数値格納メモリに格納された数値を解データとして読み出すように動作する。【００１０】
本発明の好ましい態様では、問題データを格納する前に、特性データに基づいて問題データを変換し、解データを読み出した後に、特性データに基づいて解データを変換する。【００１１】
本発明の具体的な構成の一例としては、第１の数値格納メモリと、第１の係数格納メモリと、第１のアナログ処理回路と、第２の数値格納メモリと、第２の係数格納メモリと、第２のアナログ処理回路と、を有する計算ユニットを備る。第２のアナログ処理回路が、第１の数値格納メモリに格納された数値と、第２の係数格納メモリに格納された係数を用いて処理を行い、第２の数値格納メモリに処理の結果を格納する。【００１２】
本発明の具体的な構成の他の一例とは、処理装置、記憶装置、入力装置、出力装置を備える。入力装置が問題データを受付け、処理装置が受付けた問題データを記憶装置に格納する。処理装置が記憶装置に格納されている問題データを読み出し、特性データに基づいて読み出した問題データを変換し、計算ユニットの数値格納メモリと係数格納メモリに格納する。処理装置は、計算ユニットのアナログ処理回路による複数回の処理の後、数値格納メモリから解データ読み出し、特性データに基づいて読み出した解データを変換し、記憶装置または出力装置に出力する。【００１３】
本発明の具体的な構成の他の一例は、処理装置の制御により、複数のアナログ処理回路の特性ばらつきを測定し、測定結果を特性データとして特性データ格納メモリに格納する。特性データ格納メモリは、上記の記憶装置の一部を利用してもよい。また、専用のメモリを設けてもよい。特性データ格納メモリの装置内の位置は限定されない。【００１４】
本発明の具体的な構成の他の一例は、複数のアナログ処理回路の処理内容を検査する検査回路と、アナログ処理回路による処理と同等の処理をデジタル的に実行するデジタル処理回路と、を有し、検査回路の検査結果に基づいて、アナログ処理回路の処理をデジタル処理回路に代替させる。デジタル処理回路は、上記の処理装置の一部を利用してもよい。また、専用の論理回路を設けてもよい。デジタル処理回路の装置内の位置は限定されない。【００１５】
検査回路による検査の例としては、アナログ処理回路の処理において生成される２つのアナログ値を検査して、アナログ値の差が第１の閾値より小さく、第２の閾値より大きい場合に、前記アナログ処理回路の処理を前記デジタル処理回路に代替させるものがある。【００１６】
本発明の具体的な適用例としては、問題データは、イジングモデルのスピン配列を求めるための問題データ、あるいは、ニューラルネットワークのニューロンの状態を求めるための問題データである。【００１７】
本発明の他の一側面は、処理の対象もしくは処理の結果となる数値を格納する数値格納メモリと、処理に用いる係数を格納する係数格納メモリと、数値と係数を用いて少なくとも一部の処理をアナログ的に実行するアナログ処理回路と、を複数組備える情報処理装置である。この情報処理装置は、記複数のアナログ処理回路の処理内容を検査する検査回路と、アナログ処理回路による処理と同等の処理をデジタル的に実行するデジタル処理回路と、を有し、検査回路の検査結果に基づいて、アナログ処理回路の処理をデジタル処理回路に代替させる。【００１８】
本発明の具体的な一例を示すと、検査回路による検査は、アナログ処理回路の処理において生成される２つのアナログ値（例えば電圧値）の差を検査するものであり、アナログ値の差が所定の条件下にある場合、アナログ処理回路の処理をデジタル処理回路に代替させる。デジタル処理回路としては、汎用のマイクロプロセッサを用いてもよいし、専用の論理回路を用いてもよい。【００１９】
本発明の他の一側面は、１個以上のアナログ計算機を含む情報処理装置を用いた情報処理方法において、アナログ計算機の特性ばらつきを計測して特性ばらつきデータとして記録するステップ、を有することを特徴とする情報処理方法である。【００２０】
本発明のさらに具体的な構成例では、特性ばらつきデータを参照して、アナログ計算機に入力するデータを変換するステップと、特性ばらつきデータを参照して、アナログ計算機から出力されたデータを解釈するステップとを有する。【００２１】
本発明のさらに具体的な構成例では、アナログ計算機はイジングモデルのスピン配列を求めるものであり、入力するデータの変換は、イジングモデルの相互作用係数乃至は外部磁場係数の値の符号を反転させるものであり、出力されたデータの解釈は、スピン値の反転である。【００２２】
本発明のさらに具体的な構成例では、アナログ計算機は特性ばらつきの影響を評価する構成単位毎に、その評価を行う検査部を有しており、検査部からの検査結果を読み出すことで、誤動作の可能性のある構成単位を検出する。【００２３】
本発明のさらに具体的な構成例では、誤動作の可能性のある構成単位を検出したときに、情報処理装置が有する論理回路が当該構成単位の担う処理を一時的に代替する。
【発明の効果】
【００２４】
本発明によれば、素子の製造ばらつきがあるアナログ計算機を利用して、回路物量の大幅な増加なく、その影響を回避した情報処理を実現することが出来る。
【図面の簡単な説明】
【００２５】
【図１】本発明を適用した情報処理装置の構成の一例を説明するブロック図である。
【図２】本発明によって製造ばらつきを回避して情報処理を実現するアナログ計算機の構成の一例を説明するブロック図である。
【図３】図２に示すアナログ計算機を構成する単位構成要素の構成の一例を説明するブロック図である。
【図４】図２に示すアナログ計算機が模擬する計算モデルの一例を説明するモデル図である。
【図５】図３に示す単位構成要素と、図４に示す計算モデルとの対応関係を説明するモデル図である。
【図６】図３の単位構成要素中で用いられている回路であり、製造ばらつきが生じる回路の構成の一例を説明する回路図である。
【図７】図６の回路と合わせて用いられる回路の構成の一例を説明する回路図である。
【図８】図６及び図７の回路によって実現される動作の一例を説明するタイムチャートである。
【図９】製造ばらつきを回避して情報処理を実現するために、図１の情報処理装置が行う動作の一例を説明する流れ図である。
【図１０】図１の情報処理装置が保持する特性ばらつきを記録したデータの一例を説明する概念図である。
【図１１】特性ばらつきの計測を実現するために、図１の情報処理装置が行う動作の一例を説明する流れ図である。
【図１２】特性ばらつきの計測を実現するために、図２のアナログ計算機に入力されるデータの一例を説明するモデル図である。
【図１３】本発明を適用したアナログ計算機の構成の一例を説明するブロック図である。
【図１４】図１３に示したアナログ計算機の検査回路の構成の一例を説明する回路図である。
【図１５】図１４に示した検査回路の動作の一例を説明するタイムチャートである。
【図１６】図１の情報処理装置が図１３のアナログ計算機を制御する手順の一例を説明する流れ図である。
【図１７】図１３に示したアナログ計算機の検査回路の構成の他の一例を説明する回路図である。
【発明を実施するための形態】
【００２６】
以下、実施例を図面を用いて説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００２７】
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。
【００２８】
本明細書等における「第１」、「第２」、「第３」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
【００２９】
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
【００３０】
本明細書において単数形で表される構成要素は、特段文脈で明らかに示されない限り、複数形を含むものとする。
【実施例１】
【００３１】
実施例１では、本発明を適用した情報処理装置１００（図１）を説明する。情報処理装置１００はイジングモデルに相似した構造を持つイジングモデル計算機２００（図２）を備える。情報処理装置１００は本発明を適用することにより、イジングモデル計算機２００を構成するＭＯＳＦＥＴ（Ｍｅｔａｌ―Ｏｘｉｄｅ―Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  Ｆｉｅｌｄ―Ｅｆｆｅｃｔ―Ｔｒａｎｓｉｓｔｏｒ）群（図６）の製造ばらつきを回避して情報処理を実現する。【００３２】
なお、本実施例を説明する上で、イジングモデル計算機２００が模擬しようとしているイジングモデルについて簡単に説明する。【００３３】
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは＋１／−１（ないしは，０／１，上／下）の２値をとるスピンと，スピン間の相互作用を示す相互作用係数，および，スピン毎にある外部磁場係数で定義される。【００３４】
イジングモデルは与えられたスピン配列，相互作用係数，および，外部磁場係数から，その時のエネルギーを計算することが出来る。イジングモデルのエネルギー関数は一般的に次式で表わされる。なお，σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値，Ｊｉ，ｊはｉ番目とｊ番目のスピンの間の相互作用係数，ｈｉはｉ番目のスピンに対する外部磁場係数，＜ｉ，ｊ＞は隣接する２つのサイトの組合せ，σはスピンの配列を表わすものとする。【００３５】
【数１】
2017033337.tif 000003
【００３６】
イジングモデルの基底状態を求めるというのは，イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。【００３７】
図１はイジングモデル計算機２００（詳細は後述）を備え、イジングモデル計算機２００を制御して情報処理を行う情報処理装置１００の構成の一例を説明する図である。【００３８】
情報処理装置１００の典型例としては、現在一般的に用いられているパーソナルコンピュータに、イジングモデル計算機２００Ａ、Ｂで構成されたアクセラレータを装着したものである。なお、２個のイジングモデル計算機２００Ａ、Ｂを特に区別する必要が無い時には、単に符号２００として参照する。【００３９】
情報処理装置１００は、中央処理装置（ＣＰＵ）１１０、一時記憶装置（ＲＡＭ）１２０、固定記憶装置（ＨＤＤ）１６０、を有し、これらがシステムバス１３０で結合されている。また、システムバス１３０経由でネットワークインタフェースコントローラ（ＮＩＣ）１４０が接続され、情報処理装置１００は装置間ネットワーク１９０を経由して他の情報処理装置と通信を行うことが可能である。【００４０】
加えて、システムバス１３０に入出力コントローラ１５０が接続され、その先に１個ないしは複数個のイジングモデル計算機（図１の例では、２個のイジングモデル計算機２００Ａ、Ｂ）が接続される。【００４１】
入出力コントローラ１５０はシステムバス１３０上のプロトコルを、イジングモデル計算機２００のインタフェースに合せて変換するものである。情報処理装置１００のＣＰＵ１１０上で動作するソフトウェア（例えば制御プログラム１２１）は、一般的には特定のアドレスに対してリード／ライトを行うことで（いわゆるＭＭＩＯ、Ｍｅｍｏｒｙ Ｍａｐｐｅｄ Ｉ／Ｏ）、入出力コントローラ１５０を経由して、イジングモデル計算機２００を制御することが出来る。【００４２】
情報処理装置１００は、典型的には現在一般的に用いられているパーソナルコンピュータのようなものが一実装形態として考えられる。よって、情報処理装置１００はディスプレイなどの表示装置とキーボードなどの入力装置を備え、ユーザが対話的に操作することが可能なものである。そして、イジングモデル計算機２００などのアナログ計算機は、パーソナルコンピュータに対する演算加速装置（アクセラレータ）であり、一種の周辺機器として付加される。例えば、現在のパーソナルコンピュータでは表示装置での描画処理を高速化するためのアクセラレータとしてグラフィックスアクセラレータ（ＧＰＵとも呼ばれる）をＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）などのインタフェースで接続する拡張ボードとして付加することが多いが、イジングモデル計算機２００もこれに似た形態で実装される。イジングモデル計算機２００は例えば、１つまたは複数の半導体集積回路装置（イジングチップ）として構成することができる。【００４３】
情報処理装置１００でイジングモデル計算機２００に問題を解かせようとする場合には、例えばＨＤＤ１６０に問題データ１６１を格納しておく。あるいは、問題データ１６１は入力装置から直接入力してもよい。問題データ１６１とは、イジングモデル計算機が求解可能なイジングモデルであり、例えばイジングモデルを定義する相互作用係数と外部磁場係数のリストとしてＨＤＤ１６０上に保持される。つまり、問題データ１６１は数１に示した相互作用係数Ｊｉ，ｊと外部磁場係数ｈｉを列挙したものである。【００４４】
制御プログラム１２１はＣＰＵ１１０が実行するプログラムであり、問題データ１６１と特性データ１６２に基づいてイジングモデル計算機２００を制御するプログラムである。制御プログラム１２１の実行結果はイジングモデル計算機２００が生成した問題データ１６１で定義される問題に対する答えである。【００４５】
特性計測プログラム１２２はＣＰＵ１１０が実行するプログラムであり、イジングモデル計算機２００の製造ばらつきを計測するプログラムである。特性計測プログラム１２２は計測結果を特性データ１６２として記録する。【００４６】
図２は、本実施例のイジングモデル計算機２００の構成図の例である。イジングモデル計算機２００はスピンアレイ２１０、Ｉ／Ｏドライバ２２０、Ｉ／Ｏアドレスデコーダ２３０、および、相互作用アドレスデコーダ２４０、乱数発生器２５０、ビット調整器２５１から構成される。【００４７】
本実施例でのイジングモデル計算機は、現在広く用いられているＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ―Ｏｘｉｄｅ―Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。本実施例では、スピンアレイ２１０は半導体メモリアレイで構成されている。メモリの種類は問わないが、ここでは高速動作可能なＳＲＡＭ（Ｓｔａｔｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）を用いた例で説明する。イジングモデル計算機２００は、スピンアレイ２１０にリード／ライトを行うための、ＳＲＡＭ互換インタフェース２２２によって駆動可能である。ＳＲＡＭ互換インタフェースは、アドレスバス２９０、データバス２９１、Ｒ／Ｗ制御線２９３、および、Ｉ／Ｏクロック２９２を含む。また、イジングモデル計算機２００は、制御等のために不揮発メモリ等の他のメモリ２７０を備えていてもよい。【００４８】
イジングモデル計算機２００では、イジングモデルのスピンσｉ、相互作用係数Ｊｉ，ｊ、および、外部磁場係数ｈｉを、全てスピンアレイ２１０内のメモリセルに記憶する情報で表現する。これらの値のスピンアレイのメモリセルへのリード／ライトは、ＳＲＡＭ互換インタフェース２２２を介して、Ｉ／Ｏアドレスデコーダ２３０及びＩ／Ｏドライバ２２０で行う。【００４９】
基底状態を探索すべきイジングモデルをイジングモデル計算機２００に設定するために、スピンアレイ２１０内のメモリセルにはアドレスが付与されている。また、スピンアレイ２１０のスピンσｉ、相互作用係数Ｊｉ，ｊ、および、外部磁場係数ｈｉは、メモリセルのアドレスに対応付けられている。任意のアドレスのメモリセルに情報をリード／ライトする手法は、公知の半導体メモリの制御技術と同様である。【００５０】
なお、ＳＲＡＭ互換インタフェースを構成するアドレスバス２９０、データバス２９１、および、Ｒ／Ｗ制御線２９３は、Ｉ／Ｏクロック２９２に入力されるクロックに同期して動作する。但し、本発明においてインタフェースが同期式である必要性は無く、非同期式のインタフェースでも良い。【００５１】
また、イジングモデル計算機２００は基底状態探索を行うために、スピンアレイ２１０の内部でスピン間の相互作用を実現する。ここで、相互作用とは、スピンアレイ２１０のメモリセルの値を読み出し、読み出した値から当該メモリセルに対応するスピン近傍での局所的なエネルギーを計算し、エネルギーが小さくなるような当該スピンの値を決定し、決定した当該スピンの値をメモリセルに書き込む一連の処理をいう。【００５２】
この相互作用を外部から制御するのが相互作用制御インタフェースであり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス２８０で入力し、相互作用クロック２８１に入力されるクロックに同期して相互作用を行う。内部的には、相互作用アドレスデコーダ２４０が、相互作用アドレス２８０と相互作用クロック２８１から、スピンアレイ２１０内の相互作用アドレス２８０に対応する一群のスピンを更新するためのクロックを生成する。【００５３】
なお、相互作用は必ずしもクロック同期回路で実現される必要はなく、非同期回路であっても構わない。この場合、相互作用クロック２８１の役割はクロックの入力ではなく、相互作用の実行を許可するイネーブル信号であるものとする。【００５４】
後述するスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。後述の相互作用回路３１０では基本的に、局所的なエネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するために、所定の確率でエネルギーを大きくする遷移を許容する処理を取り入れる。【００５５】
本実施例では、スピンの値を仮想的な温度Ｔで決まる確率で反転させることにした。ここで温度Ｔは基底状態探索の過程を物理的なアニーリングに例えたものである。基底状態探索の初期では高い温度とし、徐々に温度を下げながら局所的な探索を行い、最終的に温度がゼロとなる状態まで冷却していく。【００５６】
本実施例では、スピンの値を所定確率で反転させるために、乱数発生器２５０と乱数発生クロック２６０を用いる。乱数発生器２５０は乱数発生クロック２６０の１クロック毎に乱数を発生させる。ビット調整器２５１は、基底状態探索の初期では高い確率でスピンの値を反転させ、終期では低い確率でスピンの値を反転させるように、乱数発生器２５０からの出力ビットを調整するものである。具体的には、乱数発生器２５０の出力から所定ビット数を取り出し、多入力のＡＮＤ回路またはＯＲ回路で演算することにより、基底状態探索の初期では１が多く、基底状態探索の終期では０が多く発生するように出力を調整する。【００５７】
イジングモデル計算機２００内のスピンアレイ２１０は、イジングモデルに対応し、これを模擬するものである。スピンアレイ２１０は、１個のスピンとそれに付随する相互作用係数、及び、外部磁場係数の保持と、基底状態探索処理を実現するスピンユニット３００（図３）を基本構成単位としている。【００５８】
図３は、スピンアレイ２１０の単位構成要素の構成の一例を示すブロック図である。【００５９】
図４は、イジングモデルの一例であり、図３の単位構成要素が１つのスピンユニットを模擬する。【００６０】
図３に示すスピンユニット３００を複数個並べることで、図４に示すような３次元格子状のトポロジを持つイジングモデルを構成する。図４の例は、３（Ｘ軸方向）×３（Ｙ軸方向）×２（Ｚ軸方向）の大きさの３次元格子（合計１８スピン）である。【００６１】
座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、図面奥行き方向をＺ軸としている（以下の図面でも同様）。この座標軸は実施例の説明上便宜的に必要なだけであり、発明とは関係しない。３次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。【００６２】
図４の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数５のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数６が必要となる。【００６３】
図３に示す１個のスピンユニット３００は隣接するスピン（例えば隣接するスピンが上側、下側、左側、右側、奥行側の５個の場合）σj，σｋ，σｌ，σｍ，σｎの値が入力される。また、スピンユニット３００はスピンσｉと外部磁場係数ｈｉに加え、前記した隣接するスピンとの相互作用係数であるＪj，i，Ｊk，i，Ｊl，i，Ｊm，i，Ｊn，i（隣接する５スピンとの相互作用係数）を保持するメモリセルを有している。なお、図３の例では相互作用係数を保持するメモリセルは入力側に置いているが、出力側に置くこともできる。【００６４】
ところで、イジングモデルは一般的に無向グラフで表現される相互作用を有している。前記した（数１）では、相互作用を表わす項として、Ｊi，j×σｉ×σｊがあるが、これはｉ番目スピンからｊ番目スピンへの相互作用を示している。この時、一般的なイジングモデルではｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。つまり、Ｊi，jとＪj，iは同一である。また、一般的なイジングモデルでは、イジングモデル全体のエネルギーを数１に従って計算するときには、どちらか一方の方向しかエネルギーの計算に含めなくてよい。【００６５】
しかし、本実施例のイジングモデル計算機２００では、このイジングモデルを有向グラフに拡張し、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を非対称にする例を示している。【００６６】
そのため、１個のスピンユニット３００をｉ番目スピンσｉを含むユニットと考えた時に、このスピンユニットが保持する相互作用係数であるＪj，i，Ｊk，i，Ｊl，i，Ｊm，i，Ｊn，iは、隣接するｊ番目、ｋ番目、ｌ番目、ｍ番目、ｎ番目のスピンσj，σｋ，σｌ，σｍ，σｎから、ｉ番目スピンσｉへの相互作用を決めるものである。【００６７】
このことは、図４において、スピンユニット３００に含まれている相互作用係数が対応する矢印（相互作用）が、図示されているスピンユニット３００の外部のスピンから、スピンユニット３００の内部のスピンに向かっていることに対応している。【００６８】
スピンユニット３００は、イジングモデルのスピンσｉ、相互作用係数Ｊj，i，Ｊk，i，Ｊl，i，Ｊm，i，Ｊn，iおよび、外部磁場係数ｈｉを保持するために、１ビットのメモリセルを複数個備えている。この１ビットのメモリセルは図３中に、スピンσｉを保持するＳＰＩＮ，外部磁場係数ｈｉを保持するＩＳ０，ＩＳ１，相互作用係数を保持するＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１として図示されているものである。なお、ＩＳ０とＩＳ１、ＩＵ０とＩＵ１、ＩＬ０とＩＬ１、ＩＲ０とＩＲ１、ＩＤ０とＩＤ１、および、ＩＦ０とＩＦ１はそれぞれ２個１組で役割を果たすものであるため、それぞれまとめてＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，および、ＩＦｘと略記する。【００６９】
スピンユニット３００が有する各メモリセルの構造の一例としては、公知のＳＲＡＭメモリのセルを利用することができる。すなわち、メモリセルはＣＭＯＳインバータ２個で構成されるデータ保持部を有する。インバータと直列に接続されるパスゲートトランジスタのゲートをワード線で制御し、ソース・ドレイン経路をビット線に接続することで、データ保持部へのデータ読み書きを実現する。もっとも、メモリセル構造はこれに限られず、少なくとも２値を記憶できる構成であればよい。例えば、ＤＲＡＭやフラッシュメモリのような他のメモリを用いることができる。【００７０】
図３の例では、各メモリセルは１ビット格納できるＳＲＡＭメモリセルとしている。しかし、多値化したメモリセルを用いてもよい。多値化したメモリセルは、物理的に１つのメモリセルを用いてもよいし、複数の１ビットメモリセルを用いて複数ビットを格納できるように構成してもよい。メモリセルを多値化すると、使用できる係数の値の自由度が広がる。一方、回路規模や処理時間は拡大する。したがって、解くべき問題の種類や用途に応じて、適切なメモリを選択すればよい。【００７１】
ここで、スピンユニット３００はｉ番目のスピンを表現するものとして説明を行う。メモリセルＳＰＩＮはスピンσｉを表現するためのメモリセルでありスピンの値を保持する。スピンの値はイジングモデルでは＋１／−１（＋１を上、−１を下とも表現する）であるが、これをメモリセルの２値である１／０に対応させる。本明細書では、＋１を１、−１を０に対応させることにするが、逆の対応でもかまわない。【００７２】
図５を用いて、スピンユニット３００が有するメモリセルと、図４に示したイジングモデルのトポロジとの対応関係を示す。ＩＳｘは外部磁場係数を表現する。また、ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘはそれぞれ相互作用係数を表現する。ＩＵｘは上側のスピン（Ｙ軸方向で−１）、ＩＬｘは左側のスピン（Ｘ軸方向で−１）、ＩＲｘは右側のスピン（Ｘ軸方向で＋１）、ＩＤｘは下側のスピン（Ｙ軸方向で＋１）、ＩＦｘは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）との相互作用係数を示している。また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット３００は最大で５個のスピンと接続される。１個のスピンユニットは５個のスピンとの相互作用と、１個の外部磁場の合計６個の影響によって、スピンの値を決める。【００７３】
本実施例のイジングモデル計算機２００では、外部磁場係数、及び、相互作用係数は、＋１／０／−１の３値に対応する。そのため、外部磁場係数、および、相互作用係数を表わすためには、少なくともそれぞれ２ビットのメモリセルが必要となる。図３に示すスピンユニット３００において、メモリセルＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘは、末尾の数字が０と１の２つのメモリセル（例えばＩＳｘの場合にはＩＳ０とＩＳ１）の組合せで、＋１／０／−１の３値を表現する。例えば、ＩＳｘの場合には、ＩＳ１で＋１／−１を表現し、ＩＳ１が１の時は＋１，０の時には−１を表現する。これに加えて、ＩＳ０が０の時には外部磁場係数を０と見なし、ＩＳ０が１の時にはＩＳ１で決まる＋１／−１のいずれかを外部磁場係数とする。外部磁場係数が０の時は外部磁場係数をディセーブルしていると考えれば、ＩＳ０は外部磁場係数のイネーブルビットであると言うことができる（ＩＳ０＝１の時に、外部磁場係数がイネーブルされる）。相互作用係数を表現するＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘも同様に係数とビットの値を対応させている。【００７４】
スピンユニット３００は、Ｉ／Ｏアドレスデコーダ２３０とＩ／Ｏドライバ２２０で駆動、制御、読み出しすることで、一般的なＳＲＡＭと同様に、スピンユニット３００内のメモリセルをイジングモデル計算機２００のＳＲＡＭ互換インタフェースでリード／ライトすることが出来る。【００７５】
スピンユニット３００では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を評価した時に、正の値と負の値のどちらが支配的か判断することと等価である。例えば、ｉ番目スピンσｉに、スピンσj，σｋ，σｌ，σｍ，σｎが隣接しているとして、スピンσｉの次状態は以下のように決まる。まず、隣接スピンの値はσj＝＋１，σｋ＝−１，σｌ＝＋１，σｍ＝−１，σｎ＝＋１とし、相互作用係数はＪj，i＝＋１，Ｊk，i＝＋１，Ｊl，i＝＋１，Ｊm，i＝−１，Ｊn，i＝−１、外部磁場係数ｈｉ＝＋１とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σj×Ｊj，i＝＋１，σｋ×Ｊk，i＝−１，σｌ×Ｊl，i＝＋１，σｍ×Ｊm，i＝＋１，σｎ×Ｊn，i＝−１，ｈｉ＝＋１となる。外部磁場係数は、常に値が＋１のスピンとの相互作用係数と読み替えて良い。【００７６】
ここで、ｉ番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれｉ番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、ｊ番目スピンとの間での局所的なエネルギーは、ｉ番目スピンを＋１とした時には−１、ｉ番目スピンを−１としたときには＋１となるので、ｉ番目スピンを＋１にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。【００７７】
このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えた時に、ｉ番目スピンを＋１／−１のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べたものにおいて、＋１と−１のどちらが多いか数えれば良い。先程の例では、＋１が４個、−１が２個である。仮に、ｉ番目スピンを＋１とするとエネルギーの総和は−２、ｉ番目スピンを−１とするとエネルギーの総和は＋２になる。よって、＋１の個数が多い時にはｉ番目スピンの次状態を＋１とし、−１の個数が多い時にはｉ番目スピンの次状態を−１にするという多数決で、エネルギーを最小化するｉ番目スピンの次状態を決定することが出来る。【００７８】
図３のスピンユニット３００に図示する相互作用回路３１０は、前記した動作を行うための回路を、論理回路として表現した場合の概略を示している。まず、隣接スピンの状態と相互作用係数の＋１／−１を示すメモリセルとの排他的論理和の否定（ＸＮＯＲ）で、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる（＋１は１、−１は０にエンコードされているものとする）。もし、相互作用係数が＋１／−１だけであれば、この出力のうち＋１／−１のどちらが多いか多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態＋１のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理回路３１１に入力すべき値となる。【００７９】
多数決論理回路３１１の出力は、次状態としてメモリセルＳＰＩＮに入力される。なお、前述のように、ビット調整期２５１の出力となるランダムパルス列は、条件に応じてメモリセルＳＰＩＮに入力される次状態をランダムに変更し、演算途中で局所解に陥ることを防ぐためのものである。【００８０】
次に、係数０は多数決論理に上記のような＋１／−１の投票をしない（相互作用回路３１０内のスイッチで表現される）ことで実現する。もし相互作用回路３１０を論理回路として構成する場合には、このスイッチに対応するようなディセーブル端子を各入力に対応して持つ多数決論理回路を構成する必要がある。【００８１】
相互作用回路３１０のような回路をＡＮＤ，ＯＲ，ＮＯＴのような論理ゲートの組み合わせだけで作ることは回路的なコストが大きい。よって、本実施例では図６〜図８に示すような一部アナログ的な動作を持つ回路で、相互作用回路３１０を実現する例を示している。アナログ的な動作を持つ回路とは、連続的に変化する電気信号を取り扱う回路である。ここでは、スピンを上向き（＋１）に引っ張る力と、スピンを下向きに（−１）に引っ張る力を電流の引き込み量で表現し、その差を増幅することで、スピンの向きを決定する。つまり、スピン間の相互作用の大きさを電子回路上の電流の流量で相似的に表現していると言うことができる。【００８２】
図６は、アナログ的動作による相互作用回路３１０を構成する回路であり、スピンを＋１側に引っ張る力を電流の引き込み量として表現する回路（図６(a)、ＣＴ側回路）と、−１側に引っ張る力を電流の引き込み量として表現する回路（図６(b)、ＣＢ側回路と称する）である。【００８３】
図７は、アナログ的動作による相互作用回路３１０で、図６の回路と合わせて用いられる回路の構成の一例を説明する図である。【００８４】
図８は図６及び図７の回路によって実現される動作の一例を説明するタイムチャートである。【００８５】
図６記載のこの二つの回路と、この二つの回路からの出力を増幅する図７の回路を、図８に示すタイミングチャートに沿って動作させることによって、相互作用回路３１０に相当する機能を実現することが出来る。【００８６】
図６の回路の動作を説明する。説明においては、図６に示されるように、図３の各メモリセルに格納されている値を供給する信号を、そのメモリセルの名前の末尾にＴを付加した信号名で示す（例えば、ＩＳ０に格納されている値０／１はＩＳ０Ｔとして参照される）。また、その信号を反転した信号を、メモリセルの名前の末尾にＢを付加した信号名で示す（例えば、ＩＳ０Ｔの反転した信号をＩＳ０Ｂとする）。【００８７】
また、隣接するスピンの値をＮＵＴ（上側）、ＮＬＴ（左側）、ＮＲＴ（右側）、ＮＤＴ（下側）で表現する。さらに、奥行方向のＮＦＴがあるが、図面の紙幅の都合で割愛する。図６の回路図上はＮＵＴ〜ＮＤＴに関する回路は同様の構成が繰り返し現れていることが見て取れるが、同様にＮＦＴに関する部分も構成できる。なお、それぞれの信号について、その反転した値をＮＵＢ，ＮＬＢ，ＮＲＢ，ＮＤＢと表現する（ＮＦＴに対応してＮＦＢもあるが、図では省略している）。【００８８】
図６において、ＣＴは、後で説明するＣＢと対をなす線である。ＣＴ及びＣＢはクロック信号ＣＬＫＩによって駆動されるＰ型ＭＯＳＦＥＴで電源電圧に接続され、ＣＬＫＩがＬＯＷの時にＰ型ＭＯＳＦＥＴがＯＮとなって、ＣＴ及びＣＢはプリチャージされる。【００８９】
ＣＴ及びＣＢは、いくつかのＮ型ＭＯＳＦＥＴを経由した後に、最下段において、クロック信号ＣＬＫＩによって駆動されるＮ型ＭＯＳＦＥＴでグラウンドに接地する。つまり、ＣＴ，ＣＢはＣＬＫＩがＬＯＷの時にプリチャージされ、ＣＬＫＩがＨＩＧＨの時に前述したいくつかのＮ型ＭＯＳＦＥＴを通って、プリチャージされた電荷がグラウンドに引き抜かれる。【００９０】
ＣＴ，ＣＢそれぞれにおいて、電源電圧からグラウンドに至る経路にあるＮ型ＭＯＳＦＥＴ群がＯＮになっている数が、ＣＴにおいてはスピンを＋１側に引っ張る力を表現し、ＣＢにおいてはスピンを−１が側に引っ張る力を表現する。【００９１】
まずスピンを＋１側に引っ張るＣＴ側に注目して説明する。例えば、外部磁場係数が＋１のとき、それはスピンを＋１側に引っ張る力であるから、このことを回路で表現するために、ＩＳ１Ｔで駆動するＮ型ＭＯＳＦＥＴをＣＴからグラウンドに電流を流すように配置する。同様に、相互作用係数について考えると、上側に隣接するスピンとの相互作用については、上側の隣接スピンが＋１（ＮＵＴが１）で相互作用係数が＋１（ＩＵ１Ｔが１）、ないしは、上側の隣接スピンが＋１（ＮＵＢが１）で相互作用係数が−１（ＩＵ１Ｂが１）の時にスピンを＋１側に引っ張る力となるので、この条件の時にＣＴからグラウンドに向けて電流が流れるように、Ｎ型ＭＯＳＦＥＴを配置して、ゲートに適切な信号を入力する。なお、相互作用係数が０の場合には、この電流の流れを阻止すればよいので、下段にＩＳ０Ｔで駆動されるＮ型ＭＯＳＦＥＴを設けている。ここでは上側に隣接するスピンとの相互作用について説明したが、それ以外の向きで隣接しているスピンとの相互作用も同様である。【００９２】
次にスピンを−１側に引っ張るＣＢ側について説明する。回路の基本的な考え方はＣＴ側と同じで、電流を流す条件だけが異なっている。つまり、Ｎ型ＭＯＳＦＥＴのゲートに入力される信号が違う。【００９３】
上記の構成、及び、動作によって、スピンを＋１側に引っ張る力の総和に比例してＣＴからグラウンドに電流が流れ、スピンを−１側に引っ張る力の総和に比例してＣＢからグラウンドに電流が流れる。その結果、ＣＴとＣＢの電圧はそれぞれ降下し、その降下量もスピンを＋１側（ＣＴ）ないしは−１側（ＣＢ）に引っ張る力に比例する。ここで、ＣＴとＣＢの電圧差を図７に示すラッチ型センスアンプで増幅し、その出力をスピンの次の値とする。なお、ＣＬＫＩＢはクロック信号ＣＬＫＩの反転である。【００９４】
図８に図６と図７の回路で実現される動作を、タイミングチャートとして説明する。図８のタイミングチャートは、図６と図７の回路によってになわれる相互作用の動作（この動作を行う期間を相互作用期間と称する）における、図６及び図７の主要信号線の電圧を縦軸に示し、横軸に時間経過を示すものである。説明上、相互作用期間を電流期間と判定期間の２フェーズに分けて説明する。【００９５】
まず、相互作用期間に入る前に、ＣＴ及びＣＢはプリチャージされており、電流期間の始点に置いて、両者とも信号のレベルはＨＩＧＨにある。この電流期間ではＣＬＫＩがＨＩＧＨになることにより、プリチャージは終了し、ＣＴ及びＣＢからＮ型ＭＯＳＦＥＴ群を通してグラウンドに電流が流れる。その結果、＋１側に引っ張る力（ＣＴ側）と−１側に引っ張る力（ＣＢ側）それぞれに応じて、ＣＴとＣＢに電圧降下が生じる。例えば、図８の例ではＣＢの方がより電圧降下が大きいと仮定する。つまり、−１側に引っ張る力の方が強いというケースである。【００９６】
その後、判定期間ではＣＬＫＩがＬＯＷになることで、次の電流期間に向けたプリチャージが行われることに加えて、判定期間の始点におけるＣＴ及びＣＢの電圧が図７に示すラッチ型センスアンプで増幅される。センスアンプはＣＬＫＩ信号がＨＩＧＨの時にＣＴ及びＣＢと接続しており、ＣＬＫＩがＬＯＷの時（つまりＣＬＫＩＢがＨＩＧＨの時）にアンプとして動作を行う。このセンスアンプによる増幅結果はＣＬＴとＣＬＢとして現れ、この場合にはＣＬＴがＨＩＧＨ，ＣＬＢがＬＯＷという信号により相互作用の結果を得る。図８のタイムチャートの場合には、電圧降下が相対的に大きいＣＬＢが増幅されてＬＯＷとなり、電圧降下が相対的に少ないＣＬＴが増幅されてＨＩＧＨになる。ＣＬＢ＝ＬＯＷ（ＣＬＴ＝ＨＩＧＨ）の時にスピンの値を＋１側にすべき（＋１側に引っ張る力が強い）であり、ＣＬＴ＝ＬＯＷ（ＣＬＢ＝ＨＩＧＨ）の時にスピンの値を−１側にすべき（−１側に引っ張る力が強い）ということになる。【００９７】
なお、図６〜図８の回路の構成例は一例である。例えば図７〜図８に限らず、ＣＴとＣＢの電圧差を測定する公知の種々の回路構成を採用することができる。【００９８】
発明者らが上記のアナログ回路を検討したところ、図６に示すＮ型ＭＯＳＦＥＴ群の製造ばらつきが問題となることがわかった。後述する理由によって、各ＭＯＳＦＥＴの閾値電圧はばらつきを持ち、その結果としてソース−ドレイン間の電流特性にもばらつきを生じる。このことは、図６の回路においてスピンを＋１側ないしは−１側に引っ張る力に、ＭＯＳＦＥＴ毎の差が出てしまうということである。例えば、仮に図６のＣＴ側において、ＮＵＴとＩＵ１Ｔがゲートに接続されているＭＯＳＦＥＴの方が他のＭＯＳＦＥＴと比較してＯＮ時のドレイン間電流（ＩＤＳ）が多く流れるように製造ばらつきがあった場合、ＮＵＴとＩＵ１Ｔに対応する相互作用（上側に隣接するスピンと＋１の係数で接続されているときに、スピンを＋１側に向けようとする力）は、他の相互作用と比較して大きく影響することになってしまう。【００９９】
特にこの問題が顕在化するのは、＋１側に向かう力と−１側に向かう力が拮抗した時（これ以降、この状態を拮抗状態と呼ぶ）である。拮抗状態では、スピンの向きを＋１にしても−１にしてもエネルギーに変化は無い。一般的には、探索空間を広げる観点から、拮抗状態ではスピンの向きをランダムに選ぶことも多い。もしくは、エネルギーに変化が無いため現状維持という意味で、前のスピンの値を保持するようにすることも多い。ところが、上記の製造ばらつきの問題から、ＣＴとＣＢの電圧降下の度合いが異なり、常にどちらか一方がより電圧が低くなる、つまり常に多数決の勝者になってしまうことが実験的にも分かっている。よって、拮抗状態のスピンの値（これ以降、これを拮抗値と呼ぶ）は製造ばらつきによって決まるといえる。【０１００】
拮抗状態の問題は図６〜図８の例に限らず、特にアナログ計算機の本質的な課題であると言うことが出来る。なぜならば、前述したような製造ばらつきを極力抑えたとしても、拮抗状態では微小なばらつきがセンスアンプの出力結果ではスピン値が＋１もしくは−１のどちらかに固定的に決まるという現象として現れるからである。【０１０１】
トランジスタ（ここでは主にＭＯＳＦＥＴが用いられる）の製造ばらつき要因として、主に製造プロセス上の寸法誤差、ＲＤＦ（Ｒａｎｄｏｍ  Ｄｏｐａｎｔ  Ｆｌｕｃｔｕａｔｉｏｎ、詳細は例えば非特許文献１を参照）、及びＲＴＮ（Ｒａｎｄｏｍ  Ｔｅｌｅｇｒａｐｈ  Ｎｏｉｓｅ、詳細は例えば非特許文献２を参照）がある。【０１０２】
製造プロセス上の寸法誤差はフォトリソグラフィ等の技術によって半導体基板上に回路を構成する幾何学的図形を形成する際の誤差により、トランジスタの特性が異なってしまうという問題であり、製造時に決定する静的な誤差である。【０１０３】
ＲＤＦは半導体製造時に不純物（ＤｏｎｏｒないしはＡｃｃｅｐｔｏｒ、総称してＤｏｐａｎｔ）をドーピングするときに生じる、不純物原子の位置と密度のランダムなばらつきのことで、これによってトランジスタの閾値電圧にばらつきが生じる。ＲＤＦによるばらつきは製造時に決まり、その後トランジスタの寿命の中で変化することはほとんど無い。また、不純物原子の位置と密度のランダムなばらつきに起因するという点から、トランジスタ自体の大きさが大きい場合には、その影響は相対的に小さく見え、微細化の進展と共にその影響が大きく見えてくる。微細化プロセスの中でも、特に閾値電圧ばらつきを低く抑える必要があるトランジスタについては、ゲート長を長くするなど、ゲートの面積を大きく取って、ＲＤＦの影響を緩和する策がとられる。【０１０４】
ＲＴＮはトランジスタのゲートにある絶縁膜（酸化膜など）にキャリアが捕縛、解放されることにより、動的に閾値電圧ばらつきが生じる現象である。キャリアの捕縛、解放が起こる時定数は様々であり、様々な時定数のＲＴＮ現象が合わさって閾値電圧ばらつきとして観測される。その時定数は製造時に何らかの要因で決まると考えられているが、時定数が極めて短いものから長いものまであるため、製造時のスクリーニングを困難にする要因となる。ＲＤＦとの違いとして、微細化に伴って影響を及ぼす度合いがＲＤＦよりＲＴＮの方が強いこと、閾値電圧の動的な変化を及ぼすことがあげられる。【０１０５】
本発明者らが検討したところによれば、本実施例で示したイジングモデル計算機３００を、６５ｎｍ程度の世代のプロセスで製造した場合には、寸法誤差やＲＤＦによると推定される静的な影響が主体的であり、ＲＴＮの影響と考えられるような動的なばらつきはまだ顕在化していない。【０１０６】
そこで、本発明者らは、各個体の特性を事前に計測し、その計測結果に基づいて各個体に入力する問題を改変することで、各個体を構成する素子の特性ばらつきに適応するという技術を考案した。また、この方法では各個体の特性の計測は基本的に一度だけ行えばよいため、工場出荷時に計測して、その情報と対応する個体を共に顧客に提供するといった形態も可能である。【０１０７】
本実施例における特性ばらつきへの対処は、イジングモデル計算機２００を制御する情報処理装置１００の制御プログラム１２１及び特性計測プログラム１２２によって実現される。【０１０８】
図９は制御プログラム１２１の動作を示すフローチャートである。このフローチャートに基づく動作は以下の通りである。これらの動作は、ソフトウェアである制御プログラム１２１による情報処理が、ＣＰＵ１１０、ＲＡＭ１２０、ＨＤＤ１６０等、情報処理装置１００のハードウェア資源を用いて実現している。全体の制御や計算はＣＰＵ１１０が行い、ＲＡＭ１２０、ＨＤＤ１６０へのリード・ライトも制御する。これらは、以下の他のフローチャートでも同様である。【０１０９】
ステップ９０１：本フローチャートはイジングモデルをイジングモデル計算機２００で求解するための手順である。本フローチャートの実行に先立ち、ユーザは、入力装置を経由して入力する等して、問題データ１６１をＨＤＤ１６０上に用意したものとする。なお、情報処理装置１００は複数のイジングモデル計算機２００Ａ，２００Ｂを有しているが、ユーザが問題データ１６１を解かせるイジングモデル計算機を自分で選択するか、ステップ９０１の段階でＣＰＵ１１０が適宜選択するものとする。これ以降の説明でイジングモデル計算機２００は、ステップ９０１で選択されたイジングモデル計算機のことを称するものとする。【０１１０】
ステップ９０２：情報処理装置１００が備えるイジングモデル計算機２００に対応する特性データ１６２がＨＤＤ１６０上に存在するかを検査する。存在しない場合、ステップ９０３で特性データ１６２を生成する。存在する場合、ステップ９０３を実行せず、ステップ９０４に遷移する。なお、特性データ１６２の詳細は後述する。【０１１１】
ステップ９０３及びステップ９０４：特性計測プログラム１６２を実行して、イジングモデル計算機２００Ａ、２００Ｂに対応する特性データ１６２を生成する。なお、特性計測プログラム１６２の詳細は後述する。【０１１２】
ステップ９０５：特性データ１６２を元にして、特性ばらつきを回避できるように問題データ１６１を変換する。このステップで行われる変換の詳細は後述する。変換した問題データは変換後問題データと称する。【０１１３】
ステップ９０６：イジングモデル計算機２００に変換後問題データを入力する。具体的には、変換後問題データを構成する相互作用係数と外部磁場係数を、イジングモデル計算機２００を構成するメモリセル群に書き込む。この書込みは入出力コントローラ１５０がイジングモデル計算機２００のＳＲＡＭ互換インタフェース２２２を制御することで実現される。そのため、ステップ９０６ではＣＰＵ１１０がＭＭＩＯ等の手段によって、入出力コントローラ１５０を制御する。【０１１４】
ステップ９０７：イジングモデル計算機２００に対して、求解を指示する。具体的には、イジングモデル計算機２００の相互作用アドレス２８０、相互作用クロック２８１、及び、乱数発生クロック２６０を制御する。この制御も直接は入出力コントローラ１５０によって行われるので、ＣＰＵ１１０はＭＭＩＯ等の手段によって、入出力コントローラ１５０を制御する。【０１１５】
ステップ９０８：イジングモデル計算機２００が求解した結果、すなわちスピン配列を読み出す。ステップ９０６と同様にＳＲＡＭ互換インタフェース２２２を制御するために、ＣＰＵ１１０がＭＭＩＯ等の手段で、入出力コントローラ１５０を制御する。【０１１６】
ステップ９０９：ステップ９０８で読みだしたスピン配列を変換し、問題データ１６１に対する解を得る（逆変換後スピン配列と称する）。イジングモデル計算機２００で解いた問題は変換後問題データであるから、ステップ９０８で得られる解は変換後問題データの解である。この解を、変換前の問題データ１６１の解として解釈する作業が必要である。この解釈によって得られたスピン配列が逆変換後スピン配列である。解釈の方法の詳細は後述する。【０１１７】
ステップ９１０：逆変換後スピン配列を求解結果としてユーザに呈示する。また求解結果は、情報処理装置１００のＨＤＤ１６０に格納してもよいし、そのまま出力装置を介して外部に出力してもよい。【０１１８】
図１０は特性データ１６１の構成の一例である。特性データ１６１は本実施例の場合、各スピンの拮抗値を示したリストである。拮抗値はイジングモデル計算機の個体毎に異なるため、特性データ１６１は個体毎のエントリ（個体情報エントリ１０１０，１０２０）を持つ。例えばイジングモデル計算機２００Ａの特性は個体情報エントリ１０１０に、イジングモデル計算機２００Ｂの特性は個体情報エントリ１０２０に格納される。【０１１９】
各エントリは、例えば個体情報エントリ１０１０の例で説明すると、シリアル番号部１０１１、タイムスタンプ１０１２、拮抗値記録部１０１３のよう構成をとる。個体情報エントリ１０１０はイジングモデル計算機の個体に対応することからイジングモデル計算機の個体を識別する情報、すなわちシリアル番号を個体情報エントリに含めることで、個体情報エントリ１０１０と個体との紐付けを行う。また、本発明者らの検討したところによれば、拮抗値の特性は製造時にほぼ決定されるが、経年変化が皆無とは言い切れないので、タイムスタンプ１０１２に個体情報エントリ１０１０を構成した情報を計測した日付及び時刻を格納する。拮抗値は拮抗値記録部１０１３に、イジングモデル計算機２００の各スピンの拮抗値を、各スピンの座標（本例ではＸ座標、Ｙ座標、Ｚ座標）と共に記録している。【０１２０】
図１１に特性データ１６１を生成するための特性計測プログラム１６２の動作をフローチャートとして示す。このフローチャートに基づく動作は以下の通りである。【０１２１】
ステップ１１０１：本フローチャートはイジングモデル計算機２００の有する各スピンの拮抗値を計測するための手順である。なお、情報処理装置１００は複数のイジングモデル計算機２００Ａ，２００Ｂを有しているが、本手順はイジングモデル計算機それぞれに対して実行される（並行して実行しても良い）。【０１２２】
ステップ１１０２：拮抗値を測定するための問題（測定用モデル）を作成する。拮抗状態を引き起こさせるためのモデルの例を図１２に示す。【０１２３】
図１２のモデルは、あるスピンの拮抗値を知るために、その両端（Ｙ軸方向＋１とＺ軸方向＋１）のスピンとそれぞれ＋１及び−１の相互作用を設け、かつ、両端のスピンの値はそれぞれ＋１にして拮抗状態を生成するものである。このモデルにおいて、温度０（ランダムなスピン反転を行わない状態）の元に１回相互作用を行うと、注目しているスピンはその製造ばらつきによって＋１ないしは−１に遷移する。なお、１個のスピンの拮抗値を計測するために、例えば図１２に示すようにＹ方向とＺ方向に隣接するスピンをそれぞれ１個ずつ用いると、それらのスピンを除いた他のスピンは、同様の相互作用を１つの測定用モデルに含めることで同時に計測することが出来る。例えば、図４に示したイジングモデルであれば、２個の測定用モデルを順次用いることで全てのスピンを測定できる。つまり１個目の測定用モデルでは、座標（Ｘ，Ｙ，Ｚ）＝（０，０，０），（１，０，０），（２，０，０），（０，１，１），（１，１，１），（２，１，１），（０，２，０），（１，２，０），（２，２，０）を測定対象とする。そして、２個目の測定用モデルでは、座標（Ｘ，Ｙ，Ｚ）＝（０，０，１），（１，０，１），（２，０，１），（０，１，０），（１，１，０），（２，１，０），（０，２，２），（１，２，２），（２，２，２）を測定対象とする。【０１２４】
ステップ１１０３：ステップ１１０２で作成した測定用モデルをイジングモデル計算機２００に入力する。入力の方法はステップ９０６と同様である。【０１２５】
ステップ１１０４：イジングモデル計算機２００に、当該測定用モデルで測定対象となっているスピンそれぞれについて、相互作用を実行するように求解を指示する。測定対象となっているスピンは、図１２で説明したように、測定用モデルにより拮抗状態に設定されている。なお、温度は０とする。すなわち、乱数発生クロック２６０を止めるか、乱数発生器２５０ないしはビット調整器２５１の設定を変更するなどして、ランダムなスピン反転は抑止する。【０１２６】
ステップ１１０５：イジングモデル計算機２００からスピン配列を読み出す。その方法はステップ９０８と同様である。【０１２７】
ステップ１１０６：ステップ１１０５で読みだしたスピン配列のうち、ステップ１１０２で生成した測定用モデルで測定対象となっているスピンの値を当該スピンの拮抗値として特性データ１６１に記録する。【０１２８】
ステップ１１０７：全てのスピンの拮抗値を測定したかを判定する。もし、全てのスピンの測定が完了していなければ、その残りのスピンを測定するための測定モデルを生成して、再度測定を行うために、ステップ１１０２にも戻る。全てのスピンの測定が完了したら、ステップ１１０８に遷移する。【０１２９】
ステップ１１０８：特性データ１６１の生成を完了した後に、特性計測プログラム１６２は終了する。特性データ１６１は、制御プログラム１２１が利用できるように、ＲＡＭ１２０あるいはＨＤＤ１６０に保持する。あるいは、イジングモデル計算機２００内のフラッシュメモリ等の不揮発メモリ２７０に格納しておいてもよい。イジングモデル計算機２００に自分の特性データ１６１を持たせておけば、イジングモデル計算機２００を他の情報処理装置で使用する場合でも、特性データ１６１を利用することができる。【０１３０】
図９のステップ９０５に示した、問題データの変換について説明する。特性データ１６１に示された拮抗値と、拮抗時にあるべきスピン値（以降、希望値と呼ぶ）に基づいて、イジングモデル（問題データ）を変換し、ステップ９０９との組合せで、拮抗時のスピン値が希望値になるようにモデルを変換する。ここで、ｉ番目スピンの拮抗値をｕｉ、ｉ番目スピンの希望値をｅｉとする。この時、相互作用係数Ｊｉ，ｊはＪｉ，ｊ×ｕｉ×ｕｊ×ｅｉ×ｅｊに変換する。また、外部磁場係数ｈｉはｈｉ×ｕｉ×ｅｉに変換する。【０１３１】
ステップ９０５と対になる変換としてステップ９０９では、ステップ９０８で読みだしたスピン値から、変換前のモデルの解に変換する。読みだしたスピン値をａｉ、変換前の問題データの解としてのスピン値をσｉとした時、σｉ＝ａｉ×ｕｉ×ｅｉとする。【０１３２】
具体的な例を説明する。図１２に示すようなモデルで、上記のステップに基づいて、製造ばらつきに関わらず拮抗時には希望値が得られることを示す。３個のスピンσ１、σ２、σ３があり、σ１の値を決める相互作用を考える。σ２とσ３は両方とも＋１になっているものとする。拮抗状態を作るために相互作用係数Ｊ１，２は＋１、Ｊ１，３は−１とする。測定によって得られた３個のスピンそれぞれの拮抗値はｕ１＝＋１，ｕ２＝＋１，ｕ３＝＋１，希望値はｅ１＝−１，ｅ２＝＋１，ｅ３＝＋１とする。このモデルをそのままイジングモデル計算機に解かせると、σ１＝ｕ１＝＋１という答えが得られる。そこで、このモデルをステップ９０５に示すように変換すると、Ｊ１，２＝＋１×＋１×＋１×−１×＋１＝−１、Ｊ１，３＝−１×＋１×＋１×−１×＋１＝＋１というように変換される。この変換したモデルをイジングモデル計算機３００に入力すると、やはり拮抗するのでａ１＝＋１という結果が得られる。この結果をステップ９０９に示すようにσ１＝＋１×＋１×−１と変換してσ１＝−１を得る。【０１３３】
つまり、ステップ９０５とステップ９０９で行う変換は、素子の製造ばらつきによって拮抗値が決まっているときに、拮抗状態になった時の値をステップ９０９での後処理によって希望値に変換できるように、ステップ９０５で係数の正負を入れ替えていると言うことができる。そして、ステップ９０９で解となるスピンの正負を入れ替えることにより希望値を得ることができる。【０１３４】
この方式では、希望値が決まっている必要がある。実用上は、各スピンの外部磁場係数ｈｉが正であれば希望値を＋１、負であれば希望値を−１とする。これは、相互作用及び外部磁場の総和として拮抗状態が生じた場合に、外部磁場を優先するという考え方に基づいている（もしくは、外部磁場が相互作用より微小量大きいという考え方もできる）。希望値が決まっている場合には、その値を例えば問題データ１６１と関連付けてＨＤＤ１６０に保持しておけばよい。あるいは、問題データ１６１とは別に入力して、制御プログラム１２１が利用できるようにＲＡＭ１２０に保持しておいてもよい。【０１３５】
もしくは、イジングモデル計算機２００のようにランダム性を利用する解法では、一般的に同じ問題を複数回解いて、その中の最良解を得ることが多い。そのような場合には問題を解く毎に希望値をランダムに決めて、複数回問題を解くことを試行する。この場合も、本変換を用いず拮抗状態で拮抗値に固定されてしまう場合と比べて、大きな空間を探索することができるため、製造ばらつきの影響を回避して解の品質向上に寄与することができる。ランダム性を利用する場合には、予めランダムなデータを保持しておいてもよいし、その都度生成してもよい。【０１３６】
また、希望値を予め決めない別の方式として、問題を１回解いている間に、その過程において希望値をランダムに変更する方式がある。このように求解の途中において、異なる希望値を与えて変換した問題データを入力すれば、一回の求解において、その過程において拮抗状態が生じることで探索すべき解空間が狭まってしまうことを防ぐことができる。この場合、基本的な処理の流れは図９に示す例と同様であるが、問題データを変換する処理９０４の間、途中で希望値がランダムに変更される。スピン配列を変換する処理９０９でも、問題データに対応した変換処理が行われる。希望値を変更するタイミングは任意であるが、変更の周期を短くすれば効果が大きくなる反面、処理が複雑になる。【０１３７】
以上では希望値をランダムに変えることを想定したが、希望値が２値を取る場合は、交互に変更する方式も考えられる。【０１３８】
なお、本実施例ではイジングモデルと相似な構造を持つイジングモデル計算機２００を例として実施例を示したが、ニューラルネットワークと相似な構造を持つニューロ計算機についても同様に実施することができる。ニューラルネットワークでは、他のニューロンの発火状態（例えば、数値の０と１で表現される）を受け取り、自ニューロンが発火するかどうかを、他のニューロンの発火状態とニューロン間のシナプス結合係数を乗じたものの総和を計算し、総和を閾値関数に通してその出力で決定する。この動作をアナログ電子回路で実装しようとすると、本実施例のイジングモデル計算機と類似した構造を持つ（発火状態をスピン値、シナプス結合係数を相互作用係数と読みかえればイジングモデルとほぼ同じ構造となる）。【０１３９】
ニューロ計算機の場合も相互作用回路（シナプス結合回路）の構成は、基本的に図６に示した構成が使用可能であり、スピン値ＮＵＴ等の代わりに発火状態、相互作用係数ＩＵ１Ｔの代わりにシナプス結合係数を入力すればよい。
【実施例２】
【０１４０】
実施例２は、イジングモデル計算機２００で拮抗状態以外のばらつきも考慮する場合も考える。実施例１では、イジングモデル計算機２００の相互作用回路３１０におけるＭＯＳＦＥＴの製造特性ばらつきに起因する、相互作用が拮抗したときに顕在化するスピン値が固定的な方向に倒れてしまう問題に対応する実施例を示した。実施例１で示した方式は、相互作用回路３１０にそれを補償するための付加的な回路を加えること無く、イジングモデル計算機２００とそれを含んだ情報処理装置１００の制御で対応する方法であった。【０１４１】
実施例２では、さらに製造ばらつきの影響が大きくなり、その影響が拮抗状態のみならず、それ以外の相互作用にも影響を及ぼすような場合に、対応できる構成の例を開示する。【０１４２】
一般的にＭＯＳＦＥＴのドレイン間電流（ＩＤＳ）のばらつきは、チャネル長（Ｌ）とチャネル幅（Ｗ）に依存しており、１／√（Ｗ×Ｌ）に比例することが知られている。そこで、ＩＤＳのばらつきを１／ｎに抑制するためには、（Ｗ／Ｌ）をｎ２倍にしなければならない。このことは、ばらつきの抑制と微細化（高集積化）が相反関係になることを示している。【０１４３】
一方で、実施例１に示したイジングモデル計算機２００よりも、複雑なイジングモデル（相互作用の関係を増やす、ないしは、相互作用係数・外部磁場係数の値域を広げる）に対応しようとすると、ばらつきの抑制に対してより厳しい要求が科される。【０１４４】
例えば、実施例１のイジングモデル計算機２００は、相互作用係数及び外部磁場係数の値域は＋１〜−１であった。また、相互作用と外部磁場を併せて、１個のスピンには６種類の力がかかっている（相互作用の上下左右奥行方向で５種に加えて外部磁場で合計６種）。この時、＋１に向ける力と−１に向ける力が半々の時に拮抗状態となり、この拮抗状態における製造ばらつきへの対応が実施例１であった。【０１４５】
ここで、例えば、＋１に向ける力と−１に向ける力が半々で無い時は、当然より力が大きい方向にスピンが向くことが期待される。例えば、６種の力のうち外部磁場が無く、相互作用５方向で、＋１側に３、−１側に２の力で引っ張られるという３対２のケースを考える。この時は、３の力がある＋１側になるべきである。つまり、相互作用回路３１０ではＣＴ側回路でより多くの電流が流れて、ＣＴの電圧降下の幅が大きいはずである。【０１４６】
しかし、そのためには、ＭＯＳＦＥＴの特性ばらつきが十分小さい範囲に収まっている必要がある。例えば相互作用回路３１０のＣＴ側回路とＣＢ側回路で最大に流れる電流（同時にＯＮになりうる全てのＭＯＳＦＥＴをＯＮにした時の電流）を１とする。その時に、３対２であれば、理想的にはＣＴ側回路は（１／６）×３＝１／２の電流が、ＣＢ側回路は（１／６）×２＝１／３の電流が流れる。つまり、ＣＴ側回路とＣＢ側回路の電流差は１／６であるため、このケースではＣＢ側回路のＭＯＳＦＥＴの電流ばらつきの結果、１／６以上の電流をさらに流してしまうと正しく動作しない。もしくは、ＣＴ側の電流がばらつき起因で流れる量が少なく、ＣＢ側の方は逆に多いというような場合も問題になる。【０１４７】
そのため、上記の問題が生じないように、ＩＤＳのばらつきを抑制できるようにＭＯＳＦＥＴの大きさ（Ｗ，Ｌ）を決めて設計するわけだが、それも相互作用や外部磁場を複雑化すると問題になってくる。例えば、実施例１のように、相互作用係数と外部磁場係数が＋１〜−１で、相互作用係数と外部磁場係数を併せて６種の力がある場合に、上記の問題が生じない程度にＩＤＳのばらつきをおさえることに成功した設計があるとしよう。この設計を元に、前述したばらつきとチャネル幅・チャネル長の関係で、複雑化させた設計で面積効率がどの程度落ちるかを示す。【０１４８】
例えば、係数の幅を＋３〜−３にすると、現状の設計と比べてＣＴ側回路、ＣＢ側回路それぞれ３倍の数のトランジスタが必要になる。現状では６種の力それぞれに４個のＭＯＳＦＥＴ（但し、同時にＯＮになるのはそのうち２個）を用いているが、１種に４×３＝１２個のＭＯＳＦＥＴ（但し、同時にＯＮになるのは最大６個）を必要とする。この構成では、拮抗状態が起きる時には係数＋３／−３をそれぞれ３方向ずつで使う９対９のケースになる。そこで、拮抗状態一歩手前の９対８のケースについて考えると、ＣＴ側回路は（１／１８）×９＝９／１８の電流が、ＣＢ側回路は（１／１８）×８＝８／１８の電流が流れることになるので、その差は１／１８である。係数＋１〜−１の場合と比べると、差が１／３に縮小している。つまり、ＭＯＳＦＥＴの特性ばらつきも１／３に収めなければならず、そのためにはＭＯＳＦＥＴのサイズを９倍にしなければならない。【０１４９】
このことから、相互作用が複雑になると、ＭＯＳＦＥＴの特性ばらつきを抑えるためにＭＯＳＦＥＴを多くしなければならない上に、元々複雑な相互作用を実現するためにＭＯＳＦＥＴの数が増えている。例えば上記の場合だと特性ばらつきを抑えるためのサイズ９倍に加えて、元々複雑な相互作用を実現するために３倍の数のトランジスタを用いているので、合計２７倍の面積を必要とする。このため、スケーラビリティを著しく阻害する要因となる。【０１５０】
そのため、本実施例では拮抗状態以外でもＩＤＳのばらつきが顕在化する場合に対応する例を示す。例えば拮抗状態ではない３対２のケースであったとしても、ＣＴ側ないしはＣＢ側のＭＯＳＥＦＴのＩＤＳばらつきによって、３の力で引く側よりも２の力で引く側が強いと誤認されてしまうようなケースに対応するため例を示す。【０１５１】
図１３は本実施例の実施の形態であるアナログ計算機１３００の構成図である。このアナログ計算機１３００は実施例１のイジングモデル計算機２００Ａと同様に、情報処理装置１００のような装置の一部に組み込まれて利用することを想定している。【０１５２】
図１３は説明の都合上、実施例１のイジングモデル計算機２００を抽象化したアナログ計算機として説明する。そのアナログ計算機１３００は、アナログ計算ユニット１３１０Ａ〜Ｅ（Ａ〜Ｅを特に区別する必要が無い時は、単に１３１０として参照する）、アナログ演算回路１３１１、記憶素子１３１２、検査回路１３１３、ユニット間インタフェース１３２０、検査インタフェース１３３０から構成されている。【０１５３】
これは実施例１に照らし合わせれば、イジングモデル計算機２００がアナログ計算機１３００に対応し、スピンユニット３００がアナログ計算ユニット１３１０に対応する。相互作用回路３１０が、例えば図６と図７で具体例を示したアナログ演算回路１３１１に対応する。また、スピンユニット３００内のメモリセルアレイが記憶素子１３１２に対応し、スピンユニット間で隣接スピンユニットのスピン値を伝送する伝送線がユニット間インタフェース１３２０に対応する。なお、ユニット間インタフェース１３２０及び検査インタフェース１３３０は図１３上ではバス状のトポロジになっているが、このトポロジは任意である。実施例１のイジングモデル計算機２００の場合には、ユニット間インタフェースが３次元格子状のトポロジを持っていると言うことが出来る。【０１５４】
検査回路１３１３は、アナログ演算回路１３１１の処理結果が誤る可能性がある場合を検出して、その結果を検査インタフェース１３３０に出力する。アナログ演算回路１３１１の処理結果が誤る場合とは、２種類のケースがある。第一には、既に述べた拮抗状態である。第二には、拮抗状態ではないものの（つまりアナログ演算回路１３１１の製造ばらつきが一切なければ誤ることはないものの）、＋１側に引く力と−１側に引く力が近いため、製造ばらつきによっては誤判定する可能性があるケースである。どの程度の製造ばらつきが生じるかは、プロセスの世代やＭＯＳＦＥＴの設計パラメータからある程度推定することが可能である。【０１５５】
一般的に、アナログ演算回路１３１１のようなアナログ電子回路で生じる各種ばらつきは、それを打ち消すための回路を付加して補償することが多く行われているが、このような方法では、元の回路の２倍近い物量が必要となることも多く、スケーラビリティを下げる原因となる。【０１５６】
そこで、本実施例では後述するように、アナログ計算機１３００に組み込まれた簡単な検査回路１３１３と、アナログ計算機１３００を含む情報処理装置１００の全体制御の組み合わせで、アナログ計算機１３００の物量増加を抑えて、前述したような状況に対処する。【０１５７】
図１４に検査回路１３１３の構成の一例を示す。検査回路１３１３では前述した２ケースを一括して検出するために、ＣＴ側回路とＣＢ側回路の電圧差が一定の範囲内に収まっているかどうかを検出する。一定の範囲内に収まった場合には、誤動作の可能性ありと判断する。具体例としては、ＣＴ側回路とＣＢ側回路の電圧差が所定閾値より小さい場合に誤動作の可能性ありと判定する。電圧差を許容する範囲は、どの程度の製造ばらつきが生じるかの見積によって設定できる。【０１５８】
図１４の検査回路１３１３は図７のラッチ型センスアンプを基本構造としている。センスアンプは２種類の信号（ＣＴとＣＢ）の電圧差を増幅する役割だが、図１４に示すＭＯＳＦＥＴ１４０１の駆動力を下げると、電圧差の増幅が緩やかとなり、かつ、その勾配は電圧差が小さいほど緩やかなものとなる。この緩やかな勾配を検出することで、電圧差が許容範囲内かどうかを検出する。【０１５９】
図１５は検査回路１３１３を動作させた時のタイムチャートであるが、これを参照しながら検査回路１３１３の構造と動作を詳説する。図８のタイムチャートと同様に、プリチャージしたＣＴ／ＣＢから隣接スピン値、相互作用係数、及び、外部磁場係数でＯＮ／ＯＦＦが決まるＭＯＳＦＥＴ群で電流を引き抜き、ＣＴ／ＣＢに電圧降下を生じさせる。その後、ＣＬＫＩＢをＨＩＧＨとしてセンスアンプを作動させるが、前述したようにＭＯＳＦＥＴ１４０１の駆動力をおさえているため、ＣＬＴ、ＣＬＢに現れる電圧の傾きは緩やかなものとなる。さらに、ＣＴとＣＢの電圧差が大きい場合と小さい場合を比較すると、小さい場合の方がより緩やかな電圧変化を見せる。よって、ＣＴとＣＢの電圧差はＣＬＴとＣＬＢの電圧変化の傾きとして現れ、その傾きが一定より緩いことを検出することで、検査回路１３１３を実現する。【０１６０】
傾きが一定より緩いことを検出するために、本実施例では閾値を持つバッファと排他的論理和（ＸＯＲ）回路を用いる。ＸＯＲからの出力ＯＵＴＡを、ＣＬＫＩＢを微小時間Δｔ遅延させたタイミングで観測する。観測されたＯＵＴＡのレベルがＨＩＧＨかＬＯＷかで誤動作の可能性を検査することができる。このタイミングで観測するためには、例えばエッジトリガ型のフリップフロップ（ＦＦ）をΔｔ遅延させたＣＬＫＩＢで駆動すれば良い。【０１６１】
なお、検査回路１３１３の構造が図７のセンスアンプと類似していることから分かるように、センスアンプと兼用することも可能である。なお、図１４の例は一例であり、センスアンプと全く別個にＣＴとＣＢの電圧差を測定する回路を設けてもよい。この場合は、電圧を測定する公知の種々の回路構成を採用することができる。【０１６２】
図１６にこの検査回路１３１３を用いて、アナログ計算機１３００の誤動作に対応する情報処理装置１００の動作をフローチャートとして示す。【０１６３】
ステップ１６０１：本フローは、実施例１の図９に示した情報処理装置１００によるイジングモデル計算機２００の制御（本実施例ではアナログ計算機１３００の制御）のうち、ステップ９０７で行われる処理を、検査回路１３１３を用いて制御する詳細なフローを示すものである。【０１６４】
ステップ１６０２：アナログ計算機１３００が有する各アナログ計算ユニット１３１０Ａ〜１３１０Ｂをそれぞれ一回ずつ動作させて、演算を実行する。【０１６５】
ステップ１６０３：ステップ１６０２で行った演算の結果、検査回路１３１３でアナログ演算ユニット１３１１の誤動作の可能性が検出されていないかを検査する。誤動作の可能性が検出されていなければ、ステップ１６０７に進む。誤動作の可能性が検出されていれば、ステップ１６０４に進む。【０１６６】
ステップ１６０４：誤動作があった場合、検査回路１３１３から検査インタフェース１３３０を介して得られた情報で、誤動作があった可能性のあるアナログ計算ユニット１３１０を特定し、当該ユニット及び当該ユニット周辺の記憶素子の値を読み出す（例えば、実施例１のイジングモデル計算機２００であれば、隣接スピンのスピン値だけを読み出せばよい）。【０１６７】
ステップ１６０５：誤動作があったアナログ計算ユニット１３１０が行うべき演算を、ステップ１６０４で得た情報を用いて、情報処理装置１００のＣＰＵ１１０上で代替して行う。【０１６８】
なお代替するＣＰＵは、情報処理装置１００のＣＰＵを使用してもよいが、アナログ計算機１３００の中あるいはこれに付随して、専用のＣＰＵあるいは論理回路を備えてもよい。アナログ計算機１３００の中に配置する場合には、複数のアナログ演算回路１３１１に対して１つのＣＰＵを備えるようにすれば、回路規模の縮小効果を得ることができる。【０１６９】
専用のＣＰＵはソフトウェアによりプログラム可能なものでもよいし、FPGA（Field Programmable Gate Array）、ASIC（Application Specific Integrated Circuit）などのハードウェアでも実現できる。また、専用のハードウェアで構成してもよい。専用のハードウェアとしては、例えば図３に示した相互作用回路３１０相当の回路を、デジタル演算回路として使用できる。アナログ演算回路１３１１に誤動作可能性のある場合には、このデジタル演算回路でアナログ演算回路１３１１を代替させればよい。デジタル演算回路は、アナログ計算機１３００の外部あるいは内部に設けることができる。複数のアナログ演算回路１３１１に対して１つのデジタル演算回路を備えるようにすれば、回路規模の縮小効果を得ることができる。【０１７０】
ステップ１６０６：ステップ１６０５の演算結果を、対応するアナログ計算ユニット１３１０の記憶装置１３１２に書き戻す。【０１７１】
ステップ１６０７：本フローで行うべき所定の動作回数を満たしたかを確認する。満たしていなければ、ステップ１６０２に戻って繰り返す。【０１７２】
ステップ１６０８：所定の動作回数を満たしたら、本フローを終了する。【０１７３】
この動作フローによって、アナログ計算機ユニット１３１０が備えるアナログ演算回路１３１１において、製造ばらつきに起因する誤動作の可能性がある時、その時に限ってアナログ演算回路１３１１の役割を情報処理装置１００のＣＰＵ１１０が一時的に代替することが出来るようになり、情報処理装置１００全体として誤動作の無い処理が可能となる。【０１７４】
なお、アナログ計算機ユニット１３１０の代替を担うＣＰＵ１１０は、アナログ計算機１３００の中に備えても良い。
【実施例３】
【０１７５】
図１７は検査回路１３１３の構成の他の一例を説明する図である。検査回路１３１３を図１７に示す検査回路１７００のように実装しても良い。この検査回路１７００では、二種類の遅延回路（第１遅延回路、第２遅延回路）で生成した異なるタイミングのクロック信号でＯＵＴＡ信号（ＸＯＲからの出力）をフリップフロップに取り込む。例えば、第１遅延回路が時刻ｔにおいてクロックが立ち上がるクロック信号を生成し、第２遅延回路が時刻ｔ＋Δｔにおいてクロックが立ち上がるクロック信号を生成するものとする。【０１７６】
そして、時刻ｔ＋Δｔ以降に２個のフリップフロップの出力（Ｌ１，Ｌ２）を観測すると、（Ｌ１，Ｌ２）＝（０，０），（Ｌ１，Ｌ２）＝（０，１），（Ｌ１，Ｌ２）＝（１，１）の３通りがある。ここで、（０，０）のケースが最もＣＴ側／ＣＢ側の電位差が小さく、逆に（１，１）はＣＴ側／ＣＢ側の電位差が大きい。よって、Ｌ１とＬ２のＸＯＲ（２入力が不一致の時に１を出力）を取ると（０，１）のケースが抽出される（ＸＯＲの出力に１が出る）が、このケースは電位差が（０，０）と（１，１）の中間程度にあると言える。【０１７７】
よって、第１遅延回路の時刻ｔと、第２遅延回路の時刻ｔ＋Δｔを適切に設定することで、電圧差の大小を検出することが出来る。これにより、検査回路１３１３では電圧差が小さい場合全てを検出していたが、検査回路１７００では電圧差が所定より小さい場合、及び、所定より大きい場合は問題が無いと判断し、ある範囲内の電位差だった場合に問題があると検出することができる。【０１７８】
この検査回路１７００を用いると、実施例１と実施例２を組み合わせた実施の形態をとることもできる。つまり、検査回路１７００で（Ｌ１，Ｌ２）＝（０，０）が拮抗状態の時に現れるように時刻ｔとｔ＋Δｔを設定することで、拮抗状態（０，０）、誤判定の可能性がある状態（０，１）、誤判定の可能性が無い状態（１，１）の３状態を分けて検出することが可能で、イジングモデル計算機２００に入力する問題は実施例１と同様にして生成しておき、拮抗状態に対する対処は実施例１と同様に行い、拮抗状態を超える電位差であり、かつ、その電位差が誤判定が無いと言いきれない程度に小さい場合には、実施例２記載の動作が行われるようにする。【０１７９】
なお、本実施例も実施例１と同様にイジングモデルと相似な構造を持つイジングモデル計算機２００を例として実施例を示したが、ニューラルネットワークと相似な構造を持つニューロ計算機についても同様に実施することができることは、実施例１と同様である。【０１８０】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
【産業上の利用可能性】
【０１８１】
イジングモデルやニューラルネットワーク等の計算を行う技術分野に適用が可能である。
【符号の説明】
【０１８２】
１００：情報処理装置
２００：イジングモデル計算機
３００：スピンユニット
１３００：アナログ計算機
【図１】
2017033337.tif 000004
【図２】
2017033337.tif 000005
【図３】
2017033337.tif 000006
【図４】
2017033337.tif 000007
【図５】
2017033337.tif 000008
【図６】
2017033337.tif 000009
【図７】
2017033337.tif 000010
【図８】
2017033337.tif 000011
【図９】
2017033337.tif 000012
【図１０】
2017033337.tif 000013
【図１１】
2017033337.tif 000014
【図１２】
2017033337.tif 000015
【図１３】
2017033337.tif 000016
【図１４】
2017033337.tif 000017
【図１５】
2017033337.tif 000018
【図１６】
2017033337.tif 000019
【図１７】
2017033337.tif 000020
【国際調査報告】
2017033337.tif 000021
2017033337.tif 000022
2017033337.tif 000023
2017033337.tif 000024