(57)【特許請求の範囲】
【請求項１】
複数の主体を有して、前記主体間の相互作用モデルを模擬する情報処理装置であって、
前記主体のうち、隣接して配置され、かつ、同時に値を更新しない主体を一つの単位構成要素とし、当該単位構成要素内の前記主体を相互に接続し、
前記単位構成要素は、前記主体のうちのひとつの値を順次更新する共有演算ユニットを含み、
前記共有演算ユニットのうち、隣り合う共有演算ユニットを接続したことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記単位構成要素内では複数の主体は所定の位置に配置され、
前記共有演算ユニットは、更新する主体の位置を指定するカウンタを有し、当該カウンタの値を更新することで、前記複数の主体のうちのひとつの値を順次更新することを特徴とする情報処理装置。
【請求項３】
請求項１に記載の情報処理装置であって、
前記単位構成要素内では複数の主体は所定の位置に配置され、
前記更新する主体の位置を前記共有演算ユニットごとに指定するカウンタを有し、当該カウンタの値を更新することで、前記複数の主体のうちのひとつの値を順次更新することを特徴とする情報処理装置。
【請求項４】
請求項２に記載の情報処理装置であって、
隣り合う前記共有演算ユニットのカウンタの値を比較する検査部を有し、
前記検査部は、同一の値を検出するとエラーの発生を判定することを特徴とする情報処理装置。
【請求項５】
請求項１に記載の情報処理装置であって、
前記共有演算ユニットは、
前記複数の主体の全ての値を更新するまでを１演算サイクルとし、
前記１演算サイクルの最初に乱数を生成し、前記１演算サイクルの間は前記生成した乱数を供給する乱数発生器を有することを特徴とする情報処理装置。
【請求項６】
請求項１に記載の情報処理装置であって、
前記共有演算ユニットは、
前記複数の主体に乱数を供給する乱数発生器を有し、
前記乱数発生器は、
値を更新する主体に対して前記乱数を供給し、他の主体に対する乱数の供給を間引くことを特徴とする情報処理装置。
【請求項７】
請求項１に記載の情報処理装置であって、
前記共有演算ユニットは、
前記複数の主体の全ての値を更新するまでを１演算サイクルとし、
前記１演算サイクルの最初に乱数を生成し、前記１演算サイクルの間は前記生成した乱数を供給する乱数発生器を有し、
前記乱数発生器は、
値を更新する主体に対して前記乱数を供給し、他の主体に対する乱数の供給を間引くことを特徴とする情報処理装置。
【請求項８】
請求項１に記載の情報処理装置であって、
前記共有演算ユニットは、
前記主体毎のバイアスを保持する係数記憶部を有することを特徴とする情報処理装置。
【請求項９】
プロセッサと、メモリと、複数の主体間の相互作用モデルを模擬する情報処理装置と、を有する計算機システムであって、
前記情報処理装置を制御する制御部を有し、
前記情報処理装置は、
前記主体のうち、隣接して配置され、かつ、同時に値を更新しない主体を一つの単位構成要素とし、当該単位構成要素内の前記主体を相互に接続し、
前記単位構成要素は、前記主体のうちのひとつの値を順次更新する共有演算ユニットを含み、
前記共有演算ユニットのうち、隣り合う共有演算ユニットを接続したことを特徴とする計算機システム。
【請求項１０】
請求項９に記載の計算機システムであって、
前記情報処理装置は、
前記単位構成要素内では複数の主体が所定の位置に配置され、
前記共有演算ユニットは、更新する主体の位置を指定するカウンタを有し、当該カウンタの値を更新することで、前記複数の主体のうちのひとつの値を順次更新することを特徴とする計算機システム。
【請求項１１】
請求項９に記載の計算機システムであって、
前記情報処理装置は、
前記単位構成要素内では複数の主体が所定の位置に配置され、
前記更新する主体の位置を前記共有演算ユニットごとに指定するカウンタを有し、当該カウンタの値を更新することで、前記複数の主体のうちのひとつの値を順次更新することを特徴とする計算機システム。
【請求項１２】
請求項１０に記載の計算機システムであって、
前記情報処理装置は、
隣り合う前記共有演算ユニットのカウンタの値を比較する検査部を有し、
前記検査部は、同一の値を検出するとエラーの発生を判定することを特徴とする計算機システム。
【請求項１３】
請求項９に記載の計算機システムであって、
前記共有演算ユニットは、
前記複数の主体の全ての値を更新するまでを１演算サイクルとし、
前記１演算サイクルの最初に乱数を生成し、前記１演算サイクルの間は前記生成した乱数を供給する乱数発生器を有することを特徴とする計算機システム。
【請求項１４】
請求項９に記載の計算機システムであって、
前記共有演算ユニットは、
前記複数の主体に乱数を供給する乱数発生器を有し、
前記乱数発生器は、
値を更新する主体に対して前記乱数を供給し、他の主体に対する乱数の供給を間引くことを特徴とする計算機システム。
【請求項１５】
請求項９に記載の計算機システムであって、
前記共有演算ユニットは、
前記複数の主体の全ての値を更新するまでを１演算サイクルとし、
前記１演算サイクルの最初に乱数を生成し、前記１演算サイクルの間は前記生成した乱数を供給する乱数発生器を有し、
前記乱数発生器は、
値を更新する主体に対して前記乱数を供給し、他の主体に対する乱数の供給を間引くことを特徴とする計算機システム。
【請求項１６】
請求項９に記載の計算機システムであって、
前記共有演算ユニットは、
前記主体毎のバイアスを保持する係数記憶部を有することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相互作用モデルを模擬する情報処理装置に関する。
【背景技術】
【０００２】
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは、モデルを構成する複数個の主体（entity）あるいはノード（node）と、主体間の相互作用、さらに必要であれば主体毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが、いずれも相互作用モデルの一形態であると解釈できる。
【０００３】
相互作用モデルの特徴として、主体間の影響を２個の主体間の相互作用に限定している（２体間の相互作用）ことがあげられる。例えば、宇宙空間にある惑星の力学を考えてみると、惑星という主体の間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが、惑星間の影響は２個の惑星間にとどまらず、３個以上の惑星が互いに影響し合って複雑な挙動を示す（いわゆる３体問題や多体問題と言われる問題になる）。
【０００４】
情報処理において用いられている相互作用モデルの例として、ニューラルネットワーク、イジングモデル、および、マルチエージェントシステムなどがある。
【０００５】
ニューラルネットワークは生物の脳を模倣したモデルであり、複数個のニューロン（主体）がシナプス結合を介して相互作用している。
【０００６】
イジングモデルは磁性体の振舞いを説明するための物理学のモデルであり、複数個のスピン（主体）が与えられた係数（相互作用係数、外部磁場係数）の元で相互作用している。
【０００７】
マルチエージェントシステムは感染症の感染や建屋内での人流を模擬するなど、社会科学の分野で利用されているモデルである。自律的に稼働する複数のエージェントが互いに通信することで相互作用している。
【０００８】
これらの相互作用モデルは、２個の主体間の関係の集合として記述できる。そのため、主体を頂点（vertex）、相互作用を辺（edge）としたグラフで記述されることも多い。
【０００９】
近年、相互作用モデルと相似な構造を有する新しい原理のコンピュータが提案されている。例えば、イジングモデルの構造を模したコンピュータ（特許文献１、特許文献２）やニューラルネットワークの構造を模したコンピュータがある。
【００１０】
これらのコンピュータに共通する特徴として、主体（イジングモデルのスピンやニューラルネットワークのニューロン）を模擬する素子や回路を単位構成要素とし、半導体基板上に単位構成要素を大量に並べて形成していることがあげられる。そのため、この種のコンピュータのスケーラビリティを高めるためには、単位構成要素に要する物量を削減するか、半導体基板の面積をより大きく必要がある。
【００１１】
特許文献１では、イジングモデルのスピン１個に対応したスピンユニットと呼ばれる単位構成要素を複数個２次元平面上に配置したスピンアレイを半導体基板上に形成している。そして、イジングモデルにおいて隣接スピンは同時に更新しないように、スピンアレイ内のスピンユニットをグループ分けして、一度に同時に更新するのは１つのグループだけにする制御を行っている。
【００１２】
特許文献２では、イジングモデルのスピン１個に対応したスピンセルと呼ばれる単位構成要素を複数個、半導体基板上に集積している。そして、スピンセルが有する多数決論理を電流的な加算を用いることで、回路の効率化、すなわち、スピンセルの半導体基板上での占有面積の削減を図っている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】国際公開第２０１５／１３２８８３号
【特許文献２】国際公開第２０１６／０３５１７１号
【発明の概要】
【発明が解決しようとする課題】
【００１４】
特許文献１、２では、相互作用モデルの主体１個に単位構成要素１個が対応するため、より大きな相互作用モデルをサポートするために必要なハードウェアの物量が増加する。また、主体間の相互作用が密になると、単位構成要素間の接続に必要な物量も増加する。そのため、特許文献１、２に記載があるような格子状の相互作用の実現は可能であっても、いくつかの主体間が全対全（all to all）で結合するような密な結合の実現か困難であった。
【００１５】
本発明は上記のような課題に鑑みて成されたものであり、複数の主体間が全対全で結合するような密な結合を、従来例よりも少ないハードウェアの物量で実現することを目的としている。さらに、相互作用モデルが有する主体の数が増えたときに、主体数の増加に伴うハードウェアの物量の増加の度合いを、従来例よりも軽減することを目的としている。
【課題を解決するための手段】
【００１６】
本発明は、複数の主体を有して、前記主体間の相互作用モデルを模擬する情報処理装置であって、前記主体のうち、隣接して配置され、かつ、同時に値を更新しない主体を一つの単位構成要素とし、当該単位構成要素内の前記主体を相互に接続し、前記単位構成要素は、前記主体のうちのひとつの値を順次更新する共有演算ユニットを含み、前記共有演算ユニットのうち、隣り合う共有演算ユニットを接続する。
【発明の効果】
【００１７】
本発明によれば、性能や精度への悪影響を生じること無く、単位構成要素の物量を削減することが出来る。そのため、情報処理装置のスケーラビリティを高めることが出来る。
【００１８】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施例を示し、計算機システムの構成の一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、情報処理装置の構成の一例を示すブロック図である。
【図３】本発明の第１の実施例を示し、共有演算ユニットプレーンの構成の一例を示す図である。
【図４】本発明の第１の実施例を示し、情報処理装置が模擬する相互作用モデルであるイジングモデルの一例を説明する図である。
【図５】本発明の第１の実施例を示し、共有演算ユニットの構成の一例を示すブロック図である。
【図６】本発明の第１の実施例を示し、更新色計数部の構成の一例を示すブロック図である。
【図７】本発明の第１の実施例を示し、次状態演算回路の構成の一例を示すブロック図である。
【図８】本発明の第１の実施例を示し、係数メモリの構成の一例を示す図である。
【図９】本発明の第１の実施例を示し、次状態群記憶部の構成の一例を示すブロック図である。
【図１０】本発明の第１の実施例を示し入出力プレーンの構成の一例を示すブロック図である。
【図１１】本発明の第１の実施例を示し、乱数供給プレーンの構成の一例を示すブロック図である。
【図１２】本発明の第１の実施例を示し、情報処理装置において、同時に更新するスピンのグループを示す図である。
【図１３】本発明の第１の実施例を示し、情報処理装置の時刻ｔ＝０における更新色係数部の初期値を示す図である。
【図１４】本発明の第１の実施例を示し、情報処理装置の時刻ｔ＝１における更新色係数部の値を示す図である。
【図１５】本発明の第１の実施例を示し、情報処理装置の時刻ｔ＝２における更新色係数部の値を示す図である。
【図１６】本発明の第１の実施例を示し、情報処理装置の時刻ｔ＝３における更新色係数部の値を示す図である。
【図１７】本発明の第１の実施例を示し、情報処理装置の時刻ｔ＝４における更新色係数部の値を示す図である。
【図１８】本発明の第１の実施例を示し、情報処理装置を制御する、制御プログラムのフローチャートである。
【図１９】本発明の第１の実施例の変形例を示し、共有演算ユニットにエラー検査を付加した構成を示した図である。
【図２０】本発明の第１の実施例の変形例を示し、縦方向エラー検査プレーンの構成の一例を示すブロック図である。
【図２１】本発明の第２の実施例を示し、情報処理装置の構成の一例を示すブロック図である。
【図２２】本発明の第２の実施例を示し、更新色係数部の構成の一例を示すブロック図である。
【図２３】本発明の第２の実施例を示し、共有演算ユニットの構成の一例を示すブロック図である。
【図２４】本発明の第２の実施例を示し、共有演算ユニットプレーンの構成を示す図である。
【図２５】本発明の第１の実施例を示し、情報処理装置の時刻ｔ＝０におけるスピンの更新状態を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態を添付図面に基づいて説明する。
【実施例１】
【００２１】
実施例１は、相互作用モデルの一種であるイジングモデルと相似な構造を持ち、イジングモデルを模擬する情報処理装置に本発明を適用した場合の実施の形態を示す。以下、相互作用モデルにおける主体をスピン、主体間の相互作用の力の大きさを示す情報を相互作用係数として実施の形態を説明する。なお、イジングモデルに関する説明については特許文献１を参照されたい。
【００２２】
図１は、イジングモデルを模擬（シミュレート）する情報処理装置１００を含んだ、情報処理システム全体の構成を示すブロック図である。情報処理装置１００はイジングモデルという相互作用モデルを模擬する専用計算機である。そのため、情報処理装置１００の制御も含めて、全体の制御は汎用性を有するホスト計算機１７００が担う。ホスト計算機１７００はユーザの端末１７８０からの要求に応じて情報処理を行い、その一部分を情報処理装置１００にオフロードする。
【００２３】
ホスト計算機１７００のＣＰＵ１７２０は主記憶１７３０上の制御プログラム１７９０を実行して、情報処理装置１００を制御する。制御プログラム１７９０は二次記憶１７６０から主記憶１７３０に予めロードされてＣＰＵ１７２０によって実行されている。
【００２４】
ユーザは端末１７８０を介して、ホスト計算機１７００を利用する。ホスト計算機１７００はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１７３０を有しており、ＬＡＮ (Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ)１７３１に接続されている。そのため、ＬＡＮ経由でホスト計算機１７００と情報処理装置１００を利用することも可能である。
【００２５】
Ｉ／Ｏインタフェース１１１は例えばＰＣＩ Ｅｘｐｒｅｓｓ（ＰＣＩ ＥｘｐｒｅｓｓはＰＣＩ−ＳＩＧの登録商標である）のようなインタフェースであり、情報処理装置１００とそれを制御するホスト計算機１７００との間のデータ転送の媒体となる。ＣＰＵ１７２０はシステムバス１７５０を経由して、Ｉ／Ｏコントローラ１７１０を制御することで、Ｉ／Ｏインタフェース１１１上に所望のトランザクションを発生させる。例えば、ＣＰＵ１７２０が情報処理装置１００からデータを取得したい場合には、読出しのトランザクションをＩ／Ｏコントローラ１７１０に発生させる。また、ＣＰＵ１７２０が情報処理装置１００にデータを渡したい場合には、書込みのトランザクションをＩ／Ｏコントローラ１７１０に発生させる。
【００２６】
図２は、イジングモデルを模擬する情報処理装置１００の構成を示す図である。本実施例１では、図１の情報処理装置１００は、図４のイジングモデル６００を模擬するものとする。
【００２７】
イジングモデル６００は、全対全で相互作用を授受する４個のスピン（０〜３）を２次元格子状に並べている。この４個のスピン１組を、完全グラフ状のトポロジで接続されることから、Ｋ４スピン群と称す。Ｋ４スピン群間はＫ４スピン群の中で同じ位置にあるスピン、すなわち図４で示すように、同じ番号のスピン同士が２次元格子状に接続される。
【００２８】
前記従来例では、イジングモデル６００のスピン１個に対して１個の単位構成要素を用意して、単位構成要素間を実線と点線で示した接続関係に沿って接続していた。このような構成で、Ｋ４スピン群のような全対全接続を実現しようとすると、大量の配線を必要とするため情報処理装置１００のスケーラビリティを低下させるという課題があった。
【００２９】
そこで、本発明では主体（本実施例ではスピン）を模擬するために必要なリソースを、複数の主体間で共有する共有演算ユニット５００で構成することで、ハードウェアの物量を削減し、スケーラビリティを高める。
【００３０】
イジングモデル６００を構成するＫ４スピン群のそれぞれを共有演算ユニット５００で実現する。そして、共有演算ユニット５００を図３のように複数個接続して、イジングモデル６００全体を模擬する共有演算ユニットプレーン２００を構成する。
【００３１】
情報処理装置１００は、共有演算ユニットプレーン２００を中心に、データの入出力や制御を行うコンポーネントで構成される。バスマスタ１１０はホスト計算機１７００からの要求に応じて、情報処理装置１００内の各コンポーネントが有する記憶装置へのデータの読み書きを行う。
【００３２】
入出力プレーン３００は、バスマスタ１１０からのデータ転送要求を共有演算ユニットプレーン２００が有する複数の共有演算ユニット５００のうち、該当するものに伝送する。また、入出力プレーン３００は、信号線１１２を介して複数の共有演算ユニット５００からのデータを集約し、バスマスタ１１０に伝送する。
【００３３】
乱数供給プレーン４００は、共有演算ユニット５００で用いる乱数を供給する。乱数制御部１２０は乱数供給プレーン４００を制御する。そのため、乱数制御部１２０にはホスト計算機１７００から乱数に関する各種パラメータを設定する。パラメータとしては、例えば、疑似乱数のシードや、疑似乱数発生器が発生した乱数と比較する閾値などがある。なお、乱数は疑似乱数に限定されるものではなく、ノイズなどのランダムな物理現象を用いるようにしても良い。
【００３４】
相互作用制御部１３０は共有演算ユニットプレーン２００内の相互作用を制御する。具体的には、相互作用制御部１３０はホスト計算機１７００から指定された回数の相互作用を共有演算ユニットプレーン２００に行わせる。そのために、更新要求線１３１を所定の回数、アサートする。また、ホスト計算機１７００は、相互作用の演算を行うスピンのグループ（彩色）を相互作用制御部１３０に指令する。
【００３５】
図３は共有演算ユニットプレーン２００の構成を示す図である。図４のイジングモデル６００と対応するように、共有演算ユニット５００を２次元格子状に配置している。なお、本例は４×４＝１６個の共有演算ユニット５００から構成されているが、そのいずれもハードウェアとしては同一のものであることに注意されたい。つまり、同一の回路（共有演算ユニット５００）を繰り返し形成している。今後、共有演算ユニットに共通した事柄について言及するときには、「共有演算ユニット５００」として参照する。そして、繰り返し形成した個々のインスタンスについて言及するときには、「Ｕ（ｘ座標位置、ｙ座標位置）」として参照する。なお、図３において左右方向の位置をｘ座標とし、上下方向の位置をｙ座標とする。
【００３６】
共有演算ユニット５００は共通の更新要求線１３１が接続される。共有演算ユニット５００は更新要求線１３１がアサートされている期間、相互作用を行う。
【００３７】
図２で示したように、共有演算ユニットプレーン２００は、乱数供給プレーン４００および入出力プレーン３００と接続されている。その接続は個々のＵ（ｘ、ｙ）に対してそれぞれ接続されている。これにより、個々のＵ（ｘ、ｙ）に対する乱数の供給や、データの入出力を実現している。図中、丸、四角、三角の図形が、更新要求線１３１、入出力線１５０、乱数供給線１６０を示し、共有演算ユニット５００Ｕ（０，０）〜Ｕ（３，３）のそれぞれに接続されている。
【００３８】
共有演算ユニットプレーン２００内でのＵ（ｘ、ｙ）の接続は、図４のイジングモデル６００において点線で示されている相互作用に沿っている。
【００３９】
本実施例では、４個のスピンを一つの共有演算ユニット５００で構成し、隣り合う共有演算ユニット５００同士を図３で示すように接続することで、図４のイジングモデル６００のように、隣り合う共有演算ユニット５００のスピンを論理的に接続する。
【００４０】
すなわち、図４において、共有演算ユニット５００のスピン（０）は、左右の共有演算ユニット５００のスピン（０）と、下方の共有演算ユニット５００のスピン（０）と論理的に接続される。
【００４１】
図５は共有演算ユニット５００の構成の一例を示すブロック図である。本実施例では共有演算ユニット５００はユニット１個で主体（スピン）４個を模擬する。
【００４２】
次状態演算回路５３０は、ある１個のスピンの次の状態を決定するための演算回路である。その入力は、当該スピンに隣接するスピンの値、隣接するスピンとの相互作用係数、当該スピンのバイアス（外部磁場係数）の３種である。
【００４３】
例えば、図３において、Ｕ（２、２）のスピン２を更新する場合を考える。このスピンに隣接（直接接続）するスピンは、Ｕ（２、２）のスピン０、１、３と、隣のＵ（２、１）のスピン２と、Ｕ（１、２）のスピン２と、Ｕ（３、２）のスピン２と、Ｕ（２、３）のスピン２である。
【００４４】
イジングモデル６００の場合には一般化するとＵ（ｘ、ｙ）のスピンｎを更新するときに、隣接しているスピンはＵ（ｘ、ｙ）のスピンｎ以外のスピンと、Ｕ（ｘ、ｙ−１）のスピンｎ、Ｕ（ｘ−１、ｙ）のスピン、Ｕ（ｘ＋１、ｙ）のスピンｎ、Ｕ（ｘ、ｙ＋１）のスピンｎである。
【００４５】
隣接するスピン数の合計は、この場合同一のＵ（ｘ、ｙ）内の３スピンと、上下左右の４方向に隣接する４スピンを合わせて、最大７スピンである。つまり、次状態演算回路５３０は、スピンの値７個と、相互作用係数７個、外部磁場係数１個を入力として、スピンの値１個を生成する。
【００４６】
なお、次状態演算回路５３０は乱数供給プレーン４００から乱数供給線１６０で供給された乱数も演算に使っている。
【００４７】
自状態群記憶部５４０は、Ｕ（ｘ、ｙ）が所管する４個のスピン（０〜３）の状態を保持する。この４個のスピンの値は、隣接するＵ（ｘ、ｙ−１）、Ｕ（ｘ−１、ｙ）、Ｕ（ｘ＋１、ｙ）、Ｕ（ｘ、ｙ＋１）の４つの共有演算ユニット５００に供給されると共に、次状態演算回路５３０の入力ともなる。
【００４８】
逆に、Ｕ（ｘ、ｙ）は隣接するＵ（ｘ、ｙ−１）、Ｕ（ｘ−１、ｙ）、Ｕ（ｘ＋１、ｙ）、Ｕ（ｘ、ｙ＋１）の４つの共有演算ユニット５００から、それぞれが保持するスピンの値の供給を受けている。Ｕ（ｘ、ｙ）のスピンｎを更新するときには、隣接する４つの共有演算ユニット５００から供給されているそれぞれ４スピン（スピン０〜３）のうち、ｎ番目のスピンを選択して次状態演算回路に入力する。そのために、共有演算ユニット５００はマルチプレクサ５５０〜５５３を有している。
【００４９】
係数メモリ５２０は、Ｕ（ｘ、ｙ）のスピン０〜３を更新するために必要な係数（相互作用係数および外部磁場係数）を保持している。
【００５０】
更新色計数部５１０は、Ｕ（ｘ、ｙ）が保持しているスピン０〜３のうち、あるタイミング（クロックサイクルまたは所定の周期）ではどのスピンを更新するかを決定するカウンタとして機能する。更新色計数部５１０の決定内容（スピンの番号）は、更新番号線５１１で、次状態演算回路５３０、自状態群記憶部５４０、および、係数メモリ５２０に指示される。
【００５１】
共有演算ユニット５００は、後述するように、ひとつのクロックサイクルでは、ひとつのスピンについて値の更新を実行し、隣り合う共有演算ユニット５００では異なるスピンについて値の更新を実行する。このため、本実施例では、同一のクロックサイクルで更新するスピンをグループ化したものを「色」として説明する。
【００５２】
図６は更新色計数部５１０の構成の一例を示すブロック図である。更新色レジスタ１３００は、現在更新するスピンの番号を保持する。本実施例の場合、２ビットのレジスタとして構成する。
【００５３】
加算器１３１０は更新色レジスタ１３００で現在記憶している値に１を加算する。なお、オーバーフローする場合には０に戻る。
【００５４】
マルチプレクサ１３２０は、更新要求線１３１で更新要求がある場合には、更新色レジスタ１３００に加算器の出力を書き込むようにデータパスを制御する。また、更新要求が無い場合には更新色レジスタ１３００の現在の値を保持するようにデータパスを制御する。また、入出力線１５０経由で更新色レジスタ１３００へのデータ書込み要求があった場合には、そのデータを更新色レジスタ１３００に書き込むようにデータパスを制御する。
【００５５】
上記の制御によって更新色計数部５１０は、更新色レジスタ１３００の値を更新番号線５１１へ出力する。
【００５６】
図７は次状態演算回路５３０の構成を示したブロック図である。次状態演算回路５３０では、隣接するスピンとの相互作用を計算し、更新番号線５１１で指定されるスピンの次状態を決定するために、隣接するスピンの値と係数メモリ５２０から取得した係数（係数０〜７）の乗算を行い、その結果を非線形関数演算部１４１０に入力する。
【００５７】
非線形関数演算部１４１０は乱数供給線１６０で供給される乱数も演算に利用する。非線形関数演算部１４１０の出力は更新番号線５１１で指定したスピンの次状態である。
【００５８】
本実施例の場合、次状態演算回路５３０は、最大７個の隣接スピンとの相互作用と１個のバイアス（外部磁場）をスピンの次状態を決定するために計算しなければならない。外部磁場の影響は、常に値が＋１のスピンとの相互作用と捉えることが出来る。そこで、マルチプレクサ１４２０〜１４２３を設けて、更新番号線５１１で指定された番号のスピンの値に関しては、自状態群記憶部５４０からの値ではなく、マルチプレクサ１４２０〜１４２３内で固定値＋１の信号を生成して後段の演算器に入力する。これにより、相互作用の演算回路を流用して、外部磁場の効果も反映させることが出来るのである。
【００５９】
非線形関数演算部１４１０の出力は、自状態群記憶部５４０へ出力され、演算されたスピンｎの値が更新される。
【００６０】
図８は係数メモリ５２０の構成を示した図である。係数メモリ５２０は次状態演算回路５３０で一回の演算に必要となる係数を１ワードに並べ、そのワードを自状態群記憶部５４０が保持するスピン数分だけアドレス方向に並べた構造を有している。ｎ番目のスピンを更新する際に必要な係数をアドレスｎに格納している。
【００６１】
ワード内のビットフィールドの位置と係数との関係に関しては図８に示した通りである。なお、前述した次状態演算回路５３０のマルチプレクサ１４２０〜１４２３の状態から、更新番号線５１１でｎ番目のスピンの更新が指示されている時、自状態ｎとの相互作用係数は外部磁場係数と読み替えることになる。
【００６２】
つまり、ｎ番目のスピンを更新するとき、次状態演算回路５３０は更新番号線５１１でｎという数が指定され、係数メモリ５２０からアドレスｎの１ワードを読出して利用する。その時、当該ワード内の自状態ｎとの相互作用係数は、マルチプレクサ１４２０〜１４２３の処理で固定値＋１との相互作用となるため、実質的にはｎ番目スピンの外部磁場係数として作用するのである。例えば２番目のスピンを更新するときには、係数２が外部磁場係数となる。
【００６３】
係数メモリ５２０は、次状態演算回路５３０に係数を共有するために、更新要求線１３１がアサートされている期間は常に更新番号線５１１で示されるアドレスを読み出せなければならない。そして、ホスト計算機１７００から入出力プレーン３００を経由して係数を書き込むために、書込みポートを必要とする。そのため、図示はしないが１つのＲ／Ｗのポートが最低でも必要である。
【００６４】
さらに、ホスト計算機１７００から係数を読みだそうとする場合には、更新要求線１３１がアサートされていない期間に読みだすなどの排他制御や調停を必要とする。もしくは、２つのＲｅａｄと１つのＷｒｉｔｅなどより多ポートのメモリとする方法がある。
【００６５】
なお、各スピンに対応する係数０〜３には当該スピンに対するバイアスを保持することができる。
【００６６】
図９は自状態群記憶部５４０の構成の一例を示すブロック図である。スピン０〜３の状態を保持するために、それぞれ自状態０レジスタ１６１０〜自状態３レジスタ１６１３を有する。スピンは−１と＋１の２値であるから、各レジスタは１ビットのフリップフロップとして実装される。
【００６７】
自状態０レジスタ１６１０〜自状態３レジスタ１６１３（これ以降、自状態レジスタ群と称する）は常に読出し可能でなければならない。また、ホスト計算機１７００から入出力プレーン３００を経由して初期値の書込みを行うために、マルチプレクサ１６２０を有している。ホスト計算機１７００は入出力プレーン３００を経由して自状態レジスタ群を読みだすことで、情報処理装置１００の処理結果を得る。
【００６８】
更新番号線５１１で指定されるスピンの値を選択的に更新するため、自状態レジスタ群の前段にはマルチプレクサ１６３０〜１６３３が配置される。上記の構成により次状態演算回路５３０で演算されたスピンｎの値が、自状態レジスタ群の一つに保持される。
【００６９】
図１０は入出力プレーン３００の構成の一例を示すブロック図である。入出力プレーン３００は、Ｕ（ｘ、ｙ）と対応するようにバススレーブＳ（ｘ、ｙ）を有している。バススレーブＳ（ｘ、ｙ）の役割は、バスマスタ１１０から信号線１１２を介して共有演算ユニット５００へのアクセスのうち、対応するＵ（ｘ、ｙ）へのアクセスに応答することである。
【００７０】
なお、本例ではバススレーブＳ（ｘ、ｙ）間をデイジーチェーン状に配線している。一般的に、共有演算ユニット５００へのデータ転送に要する時間と比べて、共有演算ユニット５００が相互作用を行っている時間のほうが、全体の処理時間の中で支配的である。そのため、データ転送性能よりも配線物量の削減を重視した例としてデイジーチェーン状の配線例を示した。なお、本実施例１では、デイジーチェーンの例を示したが、これに限定されるものではなく、バススレーブＳ（ｘ、ｙ）とバスマスタ１１０をそれぞれ接続するようにしてもよい。
【００７１】
図１１は乱数供給プレーン４００の構成の一例を示すブロック図である。乱数供給プレーン４００の役割は、共有演算ユニットＵ（ｘ、ｙ）のそれぞれに乱数を供給することにある。そのため、乱数供給プレーン４００は複数個の乱数発生器４１０を有する。これらの乱数発生器４１０はそれぞれＲ（ｘ、ｙ）と呼ぶ。
【００７２】
本実施例１ではＵ（ｘ、ｙ）が４×４＝１６個あるが、Ｒ（ｘ、ｙ）を４個設けて、ひとつの乱数発生器Ｒ（ｘ、ｙ）に４つのＵ（ｘ、ｙ）が接続される例を示す。各乱数発生器Ｒ（ｘ、ｙ）には、信号線１２１を介して乱数制御部１２０から同一のパラメータが与えられる。
【００７３】
なお、図１１に示した例は乱数発生器４１０の数を削減して、複数のＵ（ｘ、ｙ）でひとつのＲ（ｘ、ｙ）共有する構成とした例であるが、これに限定されるものではなく、例えば、Ｒ（ｘ、ｙ）とＵ（ｘ、ｙ）を１対１に対応させる構成でも良い。
【００７４】
また、本実施例では、ひとつの共有演算ユニット５００を、４つのスピンで共有する構成としたので、乱数発生器４１０は最初のクロックサイクルで乱数の発生を行えばよく、残りの３回のクロックサイクルでは、最初のクロックサイクルで生成した乱数を供給するだけで良い。これにより、乱数発生器４１０の稼働頻度を低減して消費電力を削減することができる。
【００７５】
また、乱数発生器４１０は共有演算ユニット５００と必ずしも１対１に対応しなくても良い。例えば図１１のように１個の乱数発生器４１０が４個の共有演算ユニット５００に乱数を供給しても良い。
【００７６】
このとき、４個の共有演算ユニット５００は同じ乱数で演算を行うことになる。しかし、全ての共有演算ユニット５００は、図１２の接続関係で直接接続されているスピンを同時に更新することは無い。
【００７７】
つまり、図１２の接続関係で直接接続されているスピンの演算で、同時に同じ乱数が使われることは無い。仮に、共有演算ユニット５００の全てに対して１個しか乱数発生器４１０が無い場合でも同様であり、直接接続されているスピンの演算で、同時に同じ乱数が使われることは無い。
【００７８】
図１２は情報処理装置１００において、同時に更新するスピンのグループを示す図である。図１２ではイジングモデル６００を構成するスピンの値を適切に更新するために、同時に更新して良い組合せを、スピンに色を割当てることで表現した図である。図面の都合上、色はＹ（Ｙｅｌｌｏｗ、黄色）、Ｇ（Ｇｒｅｅｎ、緑色）、Ｂ（Ｂｌｕｅ、青色）、Ｐ（Ｐｕｒｐｌｅ、紫色）という記号で示している。
【００７９】
スピンの値を更新するとき、イジングモデル６００で隣接している（図４または図１２で線が接続されている）スピンの値は同時に更新しない。すなわち、図１２（または図４）において、直接接続されているスピンは、相互作用の不要な変動を避けるために同時に値を更新しない。この条件を満たすように各スピンを彩色すると、例えば図１２に示すような彩色になる。なお、この彩色は、同一の彩色が、同一のクロックサイクルで値を更新するスピンのグループを示す。なお、スピンのグループ分け（彩色）は、制御プログラム１７９０等が予め設定したものである。
【００８０】
情報処理装置１００はこの彩色を満たすように、同一の彩色（グループ）単位でスピンの値を更新していく必要がある。例えば、ある時刻では黄色のスピンを更新し、次の時刻（クロックサイクル）では緑色のスピンを更新していくというように、更新すべき色を逐次変えていって、スピン全体を更新する。すなわち、本実施例ではひとつの共有演算ユニットＵ（ｘ、ｙ）が４つのスピンで共有されるので、４クロックサイクルで１つの演算サイクルの更新が完了することになる。
【００８１】
この制御を担うのが、既に説明した更新色計数部５１０の役割である。その処理の一例に関して、図１３〜図１７を用いて説明する。
【００８２】
図１３は、Ｕ（ｘ、ｙ）それぞれの更新色計数部５１０の初期値（時刻ｔ＝０の時点）を示した図である。ｃ＝０、ｃ＝１、ｃ＝２、ｃ＝３と表示しているのが、更新色レジスタ１３００（図６）が保持している値である。この初期値はホスト計算機１７００が相互作用制御部１３０を介して指令した値が書き込まれる。
【００８３】
初期値は、図１２の例ではＵ（ｘ、ｙ）のスピン０番の色に応じて、黄色であればｃ＝０、紫色であればｃ＝１、青色であればｃ＝２、緑色であればｃ＝３という設定としている。この初期値は計算式で表現することもできる。ホスト計算機１７００であれば、ｃ＝（２＊ｙ＋ｘ）ｍｏｄ４として算出する。
【００８４】
図１３の初期値では、図１２において黄色（Ｙ）で示したスピンを更新することになる。すなわち、共有演算ユニットＵ（ｘ、ｙ）では、図２５で示すようにスピンの値が更新される。
【００８５】
図２５は、時刻ｔ＝０におけるスピンの更新状態を示す図である。時刻ｔ＝０では、彩色が黄色のスピンのグループが更新される。図１３のＵ（０，０）はｃ＝０であるので、図２５において、Ｕ（０、０）のスピン番号＝０番（図中（Ｙ））の値が更新される。同様にＵ（０、０）の右隣のＵ（１、０）ではｃ＝１であるので、スピン番号＝１番の値が更新される。Ｕ（０、０）の下隣のＵ（０、１）ではｃ＝２であるので、スピン番号＝２番の値が更新される。
【００８６】
このように、互いに隣り合う共有演算ユニットＵ（ｘ，ｙ）では、図４、図１２において直接接続されるスピンが同一の時刻ｔで更新されないように、更新される彩色（グループ）が設定される。
【００８７】
時刻ｔ＝０で黄色のグループのスピンの更新が完了した後、更新色レジスタ１３００の値は１を加算された値になる。その様子（時刻ｔ＝１の時点）を図１４に示す。
【００８８】
図１４の更新色計数部５１０に基づくと、図１２において緑色で示されているスピンを更新することになる。同様に、図１５（時刻ｔ＝２）では青色のスピンが更新され、図１６（時刻ｔ＝３）では紫色のスピンが更新される。
【００８９】
さらに進んで図１７（時刻ｔ＝４）では色が一巡して初期状態（時刻ｔ＝０）と同じ黄色のスピンの更新に戻る。この図１３、図１４、図１５、図１６、図１７（図１３）の処理をクロックサイクル毎に繰り返して行くことで、共有演算ユニット５００は図１２に示した同時に更新可能なスピンの色（グループ）の条件を満たしつつ、更新を進めていくことが出来る。
【００９０】
図１８は上記したような一連の処理を実現するために、ホスト計算機１７００のＣＰＵ１７２０で実行される制御プログラム１７９０の処理の一例を示すフローチャートである。図１８のフローチャートに基づく処理の一例は以下の通りである。
【００９１】
ステップ１８０１では、ＣＰＵ１７２０は主記憶１７３０にロードされた制御プログラム１７９０を開始する。
【００９２】
ステップ１８０２では、ユーザ端末１７８０を介して処理が情報処理装置１００で処理したい相互作用のモデルをホスト計算機１７００に入力する。この場合、相互作用のモデルとしてイジングモデル６００をユーザは入力する。
【００９３】
ステップ１８０３では、ＣＰＵ１７２０はステップ１８０２でユーザが入力したイジングモデルを解析し、イジングモデルを構成する相互作用係数および外部磁場係数を情報処理装置１００に入力する。具体的には、ＣＰＵ１７２０がＵ（ｘ、ｙ）のそれぞれの係数メモリ５２０に係数を書き込む。
【００９４】
ステップ１８０４では、ＣＰＵ１７２０がイジングモデル６００のスピンの初期値を生成して、情報処理装置１００に入力する。具体的には、Ｕ（ｘ、ｙ）のそれぞれの自状態群記憶部５４０に、ランダムに生成したスピンの値を書き込む。
【００９５】
ステップ１８０５では、ＣＰＵ１７２０が疑似乱数のシードや疑似乱数と比較する閾値など、乱数に関連するパラメータを生成し、乱数制御部１２０に書き込む。
【００９６】
ステップ１８０６では、ＣＰＵ１７２０が相互作用の回数を決定し、相互作用制御部１３０に書き込む。
【００９７】
ステップ１８０７では、ＣＰＵ１７２０が同時に更新可能なスピンの彩色に基づき、Ｕ（ｘ、ｙ）の更新色レジスタ１３００に更新の彩色（グループ）を書き込む。
【００９８】
ステップ１８０８では、ＣＰＵ１７２０が相互作用制御部１３０に、相互作用の開始を指示する書込みを行う。
【００９９】
ステップ１８０９では、ＣＰＵ１７２０が相互作用制御部１３０の状態を読出し、ステップ１８０８で開始を指示した所定回数の相互作用が完了するまで待つ。
【０１００】
ステップ１８１０では、ＣＰＵ１７２０が相互作用の完了を待った後に、Ｕ（ｘ、ｙ）のスピンの値を読みだす。
【０１０１】
ステップ１８１１では、ＣＰＵ１７２０が制御プログラム１７９０を終了する。
【０１０２】
前記従来例と比較した本発明の特徴は、１個の主体を更新する次状態演算回路５３０を、複数（本例では４個）の主体で共有するところにある。そして、１個の次状態演算回路５３０を共有する４個のスピンは、図１２において異なる色に彩色されているスピン、すなわち同時に更新することが出来ないスピンである。このように次状態演算回路５３０を複数の主体で共有することで、性能や精度へのペナルティを引き起こすこと無く、次状態演算回路５３０の物量を節約することが出来る。
【０１０３】
特に完全グラフ状のトポロジで接続されているスピン群は、そのうちいずれか１個しかある時刻には更新出来ない。それにも関わらず、従来のように単位構成要素１個とスピン１個を対応させるような構成では、同時に稼働しない大量の回路を半導体基板上に生じてしまい効率が悪い。
【０１０４】
さらに本発明では、図１２に示した同時に更新可能なスピンのグループと、同時に更新不可能なスピンの制約を守った上で、情報処理装置１００が稼働するために必要な制御を、更新色計数部５１０の処理と、更新色レジスタ１３００への適切な初期値の設定で行っている点が特徴的である。
【０１０５】
これにより、図１２の制約を順守するために必要な処理は、同時に更新可能なスピンのグループを最初に適切な初期値として与えれば、ハードウェアとしてはＵ（ｘ、ｙ）がそれぞれ個々に加算器１３１０でカウントアップするという単純な回路で実現することが出来る。複数のＵ（ｘ、ｙ）間で相互作用時に通信などをすること無く、図１２の制約を順守できるのである。
【０１０６】
なお、更新色レジスタ１３００の値が相互作用中（スピンの更新中）にノイズ等の影響で変化してしまい、正常に相互作用出来ていないことを検出したいという、エラー検査に対する要求がある。そのような要求を満たすための実施の形態を併せて説明する。
【０１０７】
図１９は、実施例１の変形例を示し、共有演算ユニット５００にエラー検査を付加した構成を示すブロック図である。また、図１９は、実施例１の変形例を示し、縦方向エラー検査プレーン２０００の構成の一例を示すブロック図である。
【０１０８】
まず、図１９に示す共有演算ユニット５００のように、更新色計数部５１０から更新色レジスタ１３００の値を更新色検査線１９１０として共有演算ユニット５００の外部に出力する。そして、図２０に示す縦方向エラー検査プレーン２０００のように、Ｕ（ｘ、ｙ）のそれぞれの更新色検査線１９１０を収集して、エラー検査を行う。
【０１０９】
図２０の縦方向エラー検査プレーン２０００では、図３において縦方向に隣接するＵ（ｘ、ｙ）とＵ（ｘ、ｙ＋１）の更新色検査線１９１０の出力を比較器２０１０で比較する。もし比較器２０１０の２つの入力が同一の値であれば、比較器２０１０は「１」を出力し、そうでなければ「０」を出力する。比較器２０１０の出力が「１」であれば、エラーの発生を示し、上下方向で隣接する共有演算ユニット５００が同一のスピン番号で更新を行うことを示す。
【０１１０】
これらの比較器２０１０の出力を論理和回路２０２０及び論理和回路２０３０で収集して、縦方向エラー検出２０５０として出力する。
【０１１１】
図２０は縦方向に同じ更新色になっていないかのエラー検査であったが、同様に横方向で隣接するＵ（ｘ、ｙ）とＵ（ｘ＋１、ｙ）の検査を行う回路を構成することが出来る。
【０１１２】
なお、本実施例は相互作用モデルの一種であるイジングモデル６００を模擬する情報処理装置１００の例を示したが、容易にニューラルネットワークを模擬する情報処理装置に適用することができる。イジングモデルとニューラルネットワークの対応関係に関しては、特開２００８−２６９５９３号公報に記載があるので参考にされたい。
【０１１３】
本発明の情報処理装置１００をニューラルネットワークに適用する場合には、ニューラルネットワークの非同期更新を本実施例１のように行う。その際、自状態０レジスタ１６０１〜自状態３レジスタ１６１３が記憶する値は、ニューロンが発火しているか否かを示す値となる。さらに、係数メモリ５２０が記憶する係数は、シナプス結合の重みとなる。また、非線形関数演算部１４１０で行われる演算は、前段の乗算器の出力の総和を取り、その結果にシグモイド関数などの非線形関数を作用させるものとなる。
【０１１４】
以上のように、本実施例１の情報処理装置１００では、同時に更新できない複数の主体でひとつの共有演算ユニット５００を共有する１個の単位構成要素を設定し、図３で示したように二次元格子状に共有演算ユニット５００（単位構成要素）を接続することで、主体（スピン）を全対全で接続する場合に比して、配線などに要するハードウェアの物量を低減することができる。
【０１１５】
そして、ひとつの共有演算ユニット５００を共有する複数の主体を、クロックサイクル毎に順次値を更新する。この更新は、図１２で示したように、隣り合う共有演算ユニット５００では同一番号のスピンの更新を禁止するグループ（彩色）毎に実施する。
【０１１６】
これにより、物理的には共有演算ユニット５００同士が接続されているが、同時に更新できないスピンのグループをクロックサイクル毎に更新することで、図４で示したように、各スピンを全対全で論理的に接続したことと等価となる。したがって、演算性能や精度に悪影響を与えることなく、ハードウェアの物量を削減することが出来、情報処理装置１００のスケーラビリティを向上させることが可能となる。
【０１１７】
また、縦方向エラー検査プレーン２０００を加えることで、エラーの発生を検出することが可能となって、情報処理装置１００の信頼性を向上させることが可能となる。
【０１１８】
また、同時に更新しないスピンでひとつの共有演算ユニット５００を共有する構成としたので、スピンの演算サイクルのうち最初の演算サイクルで発生または算出した乱数を共有演算ユニット５００に与えればよい。このため、乱数発生器４１０はひとつの演算サイクルのうち最初の演算で乱数を生成すれば良いので、全てのクロックサイクルで乱数を発生させる場合に比して消費電力の低減を図ることが可能となる。
【０１１９】
また、上述のように時系列的に乱数の発生を間引くのに代わって、同時に更新しないスピンに対する乱数の供給を空間的に間引くようにしても良い。つまり、共有演算ユニット５００では、更新するスピンに対して乱数発生器４１０からの乱数を供給し、他のスピンに対しては乱数の供給を間引くようにしてもよい。また、上述のように時系列的に乱数の発生を間引くのに加え、同時に更新しないスピンに対する乱数の空間的な間引きを組み合わせても良い。すなわち、最初の演算サイクルで乱数発生器４１０が乱数を発生してから値を更新するスピンに乱数を順次供給し、同時に更新しないスピンへの乱数の供給を間引くことができる。
【実施例２】
【０１２０】
実施例２は、実施例１において、共有演算ユニット５００内に更新色計数部５１０を持たせていたものを共有演算ユニットプレーン２００の外部へ移動し、全ての共有演算ユニット５００で共有する実施の形態を示す。以下の説明は、前記実施例１との差分で説明する。
【０１２１】
図２１は実施例２における情報処理装置１００の構成の一例を示すブロック図である。実施例２では、更新色計数部を共有演算ユニット間で共有し、情報処理装置１００内に１個の更新色計数部２１１０を有する。
【０１２２】
更新色計数部２１１０は、バスマスタ１１０と相互作用制御部１３０からの入力を受け、更新対象のスピンを決定する更新番号線２１２０、２１２１、２１２２、２１２３を共有演算ユニットプレーン２００に接続する。
【０１２３】
図２２は実施例２における更新色計数部２１１０の構成の一例を示すブロック図である。基本的な構成は前記実施例１の図６に示した更新色計数部５１０と共通であるが、さらに２個の加算器２２２０、２２３０と、合計４本の更新番号線２１２０〜２１２３を有している。加算器１３１０は入力に＋１を加算し、加算器２２２０、２２３０はそれぞれ＋２、＋３を加算する。つまり、更新番号線２１２０を基準とした時に、更新番号線２１２１、２１２２、２１２３はそれぞれ＋１、＋２、＋３された値が出力される。
【０１２４】
この更新番号線２１２０〜２１２３を、図１２に示すような同時に更新するスピンの制約を満たすように、図２３の共有演算ユニット２３００に接続していく。図２３は、共有演算ユニットの構成の一例を示すブロック図である。共有演算ユニット２３００は、前記実施例１の共有演算ユニット５００から更新色計数部５１０を取り除き、外部から更新番号線２３１０を入力するものである。なお、更新番号線２３１０は、更新番号線２１２０〜２１２３のいずれかひとつを示す符号である。
【０１２５】
図２４は、共有演算ユニットプレーンの構成の一例を示すブロック図である。図２４に示すように、共有演算ユニットプレーン２４００上で、Ｕ（ｘ、ｙ）の更新番号線２３１０のそれぞれに、更新番号線２１２０〜２１２３のうち、適切なものを接続していく。その接続に関しては更新色計数部２２１０の更新色レジスタ１３００の値が０であるときに、図１３の初期状態で示されているＵ（ｘ、ｙ）の更新色が各ユニットに供給されていれば良い。紙幅の都合で、図２４上に図示することが困難であるため、以下に接続関係を記す。
【０１２６】
Ｕ（０、０）に更新番号線２１２０、Ｕ（１、０）に更新番号線２１２１、Ｕ（２、０）に更新番号線２１２２、Ｕ（３、０）に更新番号線２１２３、Ｕ（０、１）に更新番号線２１２２、Ｕ（１、１）に更新番号線２１２３、Ｕ（２、１）に更新番号線２１２０、Ｕ（３、１）に更新番号線２１２１というように結線する。
【０１２７】
これにより、実施例１と比較して更新色計数部２１１０を１個に集約することができ、さらなる物量削減を図ることができるのである。
【０１２８】
＜まとめ＞
なお、前記実施例１、２では、本発明を２次元の相互作用モデルに適用した例を示したが、これに限定されるものではなく、３次元の相互作用モデルに適用しても良い。この場合、共有演算ユニット５００を３次元の格子状に配置して、隣り合う共有演算ユニット５００を相互に接続すればよい。
【０１２９】
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【０１３０】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１３１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１３２】
１００  情報処理装置
１２０  乱数制御部
１３０  相互作用制御部
２００  共有演算ユニットプレーン
３００  入出力プレーン
４００  乱数供給プレーン
５００  共有演算ユニット
５１０  更新色計数部
５２０  係数メモリ
５３０  次状態演算回路
５４０  自状態群記憶部
６００  イジングモデル
１３００  更新色レジスタ
１３１０  加算器
１６１０〜１６１３  自状態０レジスタ〜自状態３レジスタ
１７００  ホスト計算機
１７９０  制御プログラム
【図１】
0006511413.tif 000002
【図２】
0006511413.tif 000003
【図３】
0006511413.tif 000004
【図４】
0006511413.tif 000005
【図５】
0006511413.tif 000006
【図６】
0006511413.tif 000007
【図７】
0006511413.tif 000008
【図８】
0006511413.tif 000009
【図９】
0006511413.tif 000010
【図１０】
0006511413.tif 000011
【図１１】
0006511413.tif 000012
【図１２】
0006511413.tif 000013
【図１３】
0006511413.tif 000014
【図１４】
0006511413.tif 000015
【図１５】
0006511413.tif 000016
【図１６】
0006511413.tif 000017
【図１７】
0006511413.tif 000018
【図１８】
0006511413.tif 000019
【図１９】
0006511413.tif 000020
【図２０】
0006511413.tif 000021
【図２１】
0006511413.tif 000022
【図２２】
0006511413.tif 000023
【図２３】
0006511413.tif 000024
【図２４】
0006511413.tif 000025
【図２５】
0006511413.tif 000026