(57)【特許請求の範囲】
【請求項１】
マトリックス状に配置され、バスを介して接続される複数のイジング装置と、
前記複数のイジング装置のそれぞれに複数設けられ、それぞれが、複数の接続先ニューロン回路からの出力信号に前記複数の接続先ニューロン回路との接続の強さを示す複数の重み値を掛けた値の総和に基づく第１の値を保持し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受け、前記更新信号に基づいて前記第１の値の変化分を求め、前記変化分を前記第１の値に対して加算または減算することで前記第１の値を更新するニューロン回路と、
前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路を識別する第１のアドレス情報と、前記複数のイジング装置のうち前記複数の接続先ニューロン回路のそれぞれを有するイジング装置を識別する第２のアドレス情報と、前記重み値の識別情報とが対応付けられた接続先情報を記憶するメモリと、
前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のうち、自身以外の第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、変化後の前記第１の出力信号の値と、前記接続先情報とに基づく前記更新信号を出力する制御回路と、
前記複数のイジング装置のそれぞれに設けられ、モード設定値を受け、前記モード設定値に基づき、隣接するイジング装置のうちの少なくとも２つを接続するか、前記隣接するイジング装置と前記制御回路とを接続するか決定するルータと、
前記モード設定値を前記ルータに送信する制御装置と、
を有することを特徴とする情報処理装置。
【請求項２】
前記複数のイジング装置は、スキャンチェーンを介して互いに接続され、
前記ルータは、前記複数のイジング装置のうち、何れかから送信されるスキャンデータを入出力するポートを有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記スキャンデータは、前記モード設定値、または前記第２のアドレス情報、であることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記複数のイジング装置で、同一行または同一列に配列されたイジング装置のうち、行または列の両端のイジング装置同士が前記バスで接続されている、ことを特徴とする請求項１乃至３の何れか一項に記載の情報処理装置。
【請求項５】
前記制御装置は、前記複数のイジング装置から、前記第１のイジング装置を選択し、変化後の前記第１の出力信号の値と、前記第１の接続先ニューロン回路を識別する前記第１のアドレス情報が、前記バスを介して、前記複数のイジング装置のうち、前記第１のイジング装置以外に伝搬されるように、前記モード設定値を決定する、
ことを特徴とする請求項１乃至４の何れか一項に記載の情報処理装置。
【請求項６】
それぞれが、複数の接続先ニューロン回路からの出力信号に前記複数の接続先ニューロン回路との接続の強さを示す複数の重み値を掛けた値の総和に基づく第１の値を保持し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受け、前記更新信号に基づいて前記第１の値の変化分を求め、前記変化分を前記第１の値に対して加算または減算することで前記第１の値を更新する複数のニューロン回路と、
前記複数の接続先ニューロン回路を識別する第１のアドレス情報と、前記複数の接続先ニューロン回路のそれぞれを有するイジング装置を識別する第２のアドレス情報と、前記重み値の識別情報とが対応付けられた接続先情報を記憶するメモリと、
前記複数の接続先ニューロン回路のうち、自身以外の第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、変化後の前記第１の出力信号の値と、前記接続先情報とに基づく前記更新信号を出力する制御回路と、
モード設定値を受け、前記モード設定値に基づき、隣接するイジング装置のうちの少なくとも２つを接続するか、前記隣接するイジング装置と前記制御回路とを接続するか決定するルータと、
を有することを特徴とするイジング装置。
【請求項７】
それぞれが、複数の接続先ニューロン回路からの出力信号に前記複数の接続先ニューロン回路との接続の強さを示す複数の重み値を掛けた値の総和に基づく第１の値を保持し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受け、前記更新信号に基づいて前記第１の値の変化分を求め、前記変化分を前記第１の値に対して加算または減算することで前記第１の値を更新する複数のニューロン回路と、
前記複数の接続先ニューロン回路を識別する第１のアドレス情報と、前記複数の接続先ニューロン回路のそれぞれを有するイジング装置を識別する第２のアドレス情報と、前記重み値の識別情報とが対応付けられた接続先情報を記憶するメモリと、
前記複数の接続先ニューロン回路のうち、自身以外の第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、変化後の前記第１の出力信号の値と、前記接続先情報とに基づく前記更新信号を出力する制御回路と、
モード設定値を受け、前記モード設定値に基づき、隣接するイジング装置のうちの少なくとも２つを接続するか、前記隣接するイジング装置と前記制御回路とを接続するか決定するルータと、
をそれぞれが有し、マトリックス状に配置され、バスを介して接続される複数のイジング装置に対して、
制御装置が、前記複数の重み値を設定し、
前記制御装置が、前記第１のイジング装置を選択し、
前記制御装置が、変化後の前記第１の出力信号の値と、前記第１の接続先ニューロン回路のアドレス情報が、前記バスを介して、前記複数のイジング装置のうち、前記第１のイジング装置以外に伝搬されるように、前記モード設定値を決定する、
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、イジング装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型の目的関数を用いたシミュレーテッド・アニーリングを行うイジング装置（ボルツマンマシンと呼ばれる場合もある）がある。イジング装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
【０００３】
しかし、イジング装置をソフトウェアによるシミュレーションで実現すると、最適化問題が扱う変数の数が増加するにつれ、イジング装置に含まれるユニット数またはユニットの間の接続数が増加し、計算時間が長くなる。
【０００４】
従来、イジング装置をハードウェアで実現することによって、計算時間を短縮することが提案されている。また、シミュレーテッド・アニーリングの代わりに量子アニーリングを用いて最適化問題を解くイジング装置（量子コンピュータとも呼ばれる）も提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平３−２５１９４７号公報
【特許文献２】特開平６−６８０５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、ハードウェアで実現する従来のイジング装置では、ユニット（ビット）が他の全てのビットに接続されているのではなく、接続数に制限があった。たとえば、総ビット数が２０００の量子コンピュータは、各量子ビットが６つの量子ビットと接続するものであった。また、総ビット数が２００００程度で、シミュレーテッド・アニーリングを行うイジング装置は、各ビットが５つのビットと接続するものであった。
【０００７】
従来のイジング装置は、このような接続数の制限のもと、問題をマッピングして解くというものであったため、問題の規模が大きくなるとマッピングすることが困難になる、という問題があった。
【０００８】
上記の点を鑑みて、本発明は、変数が比較的多い大規模な問題の演算を可能とする情報処理装置、イジング装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、マトリックス状に配置され、バスを介して接続される複数のイジング装置と、前記複数のイジング装置のそれぞれに複数設けられ、それぞれが、複数の接続先ニューロン回路からの出力信号に前記複数の接続先ニューロン回路との接続の強さを示す複数の重み値を掛けた値の総和に基づく第１の値を保持し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受け、前記更新信号に基づいて前記第１の値の変化分を求め、前記変化分を前記第１の値に対して加算または減算することで前記第１の値を更新するニューロン回路と、前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路を識別する第１のアドレス情報と、前記複数のイジング装置のうち前記複数の接続先ニューロン回路のそれぞれを有するイジング装置を識別する第２のアドレス情報と、前記重み値の識別情報とが対応付けられた接続先情報を記憶するメモリと、前記複数のイジング装置のそれぞれに設けられ、前記複数の接続先ニューロン回路のうち、自身以外の第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、変化後の前記第１の出力信号の値と、前記接続先情報とに基づく前記更新信号を出力する制御回路と、前記複数のイジング装置のそれぞれに設けられ、モード設定値を受け、前記モード設定値に基づき、隣接するイジング装置のうちの少なくとも２つを接続するか、前記隣接するイジング装置と前記制御回路とを接続するか決定するルータと、前記モード設定値を前記ルータに送信する制御装置と、を有する情報処理装置が提供される。
【００１０】
また、１つの態様では、それぞれが、複数の接続先ニューロン回路からの出力信号に前記複数の接続先ニューロン回路との接続の強さを示す複数の重み値を掛けた値の総和に基づく第１の値を保持し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受け、前記更新信号に基づいて前記第１の値の変化分を求め、前記変化分を前記第１の値に対して加算または減算することで前記第１の値を更新する複数のニューロン回路と、前記複数の接続先ニューロン回路を識別する第１のアドレス情報と、前記複数の接続先ニューロン回路のそれぞれを有するイジング装置を識別する第２のアドレス情報と、前記重み値の識別情報とが対応付けられた接続先情報を記憶するメモリと、前記複数の接続先ニューロン回路のうち、自身以外の第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、変化後の前記第１の出力信号の値と、前記接続先情報とに基づく前記更新信号を出力する制御回路と、モード設定値を受け、前記モード設定値に基づき、隣接するイジング装置のうちの少なくとも２つを接続するか、前記隣接するイジング装置と前記制御回路とを接続するか決定するルータと、を有するイジング装置が提供される。
【００１１】
また、１つの態様では、それぞれが、複数の接続先ニューロン回路からの出力信号に前記複数の接続先ニューロン回路との接続の強さを示す複数の重み値を掛けた値の総和に基づく第１の値を保持し、前記第１の値にノイズ値を加算した第２の値と閾値との比較結果に基づき、０または１を出力するとともに、前記出力信号の変化時に更新信号を受け、前記更新信号に基づいて前記第１の値の変化分を求め、前記変化分を前記第１の値に対して加算または減算することで前記第１の値を更新する複数のニューロン回路と、前記複数の接続先ニューロン回路を識別する第１のアドレス情報と、前記複数の接続先ニューロン回路のそれぞれを有するイジング装置を識別する第２のアドレス情報と、前記重み値の識別情報とが対応付けられた接続先情報を記憶するメモリと、前記複数の接続先ニューロン回路のうち、自身以外の第１のイジング装置に含まれる第１の接続先ニューロン回路の第１の出力信号の変化時に、変化後の前記第１の出力信号の値と、前記接続先情報とに基づく前記更新信号を出力する制御回路と、モード設定値を受け、前記モード設定値に基づき、隣接するイジング装置のうちの少なくとも２つを接続するか、前記隣接するイジング装置と前記制御回路とを接続するか決定するルータと、をそれぞれが有し、マトリックス状に配置され、バスを介して接続される複数のイジング装置に対して、制御装置が、前記複数の重み値を設定し、前記制御装置が、前記第１のイジング装置を選択し、前記制御装置が、変化後の前記第１の出力信号の値と、前記第１の接続先ニューロン回路のアドレス情報が、前記バスを介して、前記複数のイジング装置のうち、前記第１のイジング装置以外に伝搬されるように、前記モード設定値を決定する、情報処理装置の制御方法が提供される。
【発明の効果】
【００１２】
開示の情報処理装置、イジング装置及び情報処理装置の制御方法によれば、変数が比較的多い大規模な問題の演算が可能となる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の情報処理装置の一例を示す図である。
【図２】ニューロン回路の一例を示す図である。
【図３】状態ｘiが１となる確率Ｐi（ｈi）の一例を示す図である。
【図４】チップアドレスとモード設定値の初期値の設定方法の一例を示す図である。
【図５】チップアドレスを設定するスキャンＦＦの一例を示す図である。
【図６】スキャンチェーンの他の例を示す図である。
【図７】ルータの一例を示す図である。
【図８】“ＥＡＳＴ”ポートに接続されるスイッチ部の一例を示す図である。
【図９】モードレジスタに格納されているモード設定値の一例を示す図である。
【図１０】スイッチ制御の他の例を示す図である。
【図１１】モード設定値の変更方法の一例を示すタイミングチャートである。
【図１２】波形及びタイミングの再生を行う回路群が接続されたルータの一例を示す図である。
【図１３】波形とタイミングの再生の様子を示す図である。
【図１４】マルチドロップバス機能を説明する図である。
【図１５】接続先情報の一例を示す図である。
【図１６】情報処理装置の動作の一例を示すフローチャートである。
【図１７】重み値の書き込み時の動作例を示すタイミングチャートである。
【図１８】シミュレーテッド・アニーリングの様子を示す図である。
【図１９】更新信号の受信側のイジング装置での動作の一例を説明する図である。
【図２０】本実施の形態の情報処理装置で実現されるニューラルネットワークのイメージ図である。
【図２１】第２の実施の形態の情報処理装置の一例を示す図である。
【図２２】第３の実施の形態の情報処理装置の一例を示す図である。
【図２３】並列化による高速化手法を説明する図である。
【図２４】並列化による演算の高速化効果を示す図である。
【図２５】量子モンテカルロ法による高速化手法を説明する図である。
【図２６】図２のニューロン回路とは異なるニューロン回路をもつイジング装置の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の情報処理装置の一例を示す図である。
【００１５】
情報処理装置１は、マトリクス状に配置された複数（ｍ個）のイジング装置２ａ１〜２ａｍと、制御装置３を有している。
たとえば、イジング装置２ａ１〜２ａｍのそれぞれは、１つの半導体集積回路（チップ）で実現される。イジング装置２ａ１〜２ａｍのうち、隣接するもの同士は、バス４ａ，４ｂ，４ｃで接続可能である。たとえば、バス４ａではデータが伝搬され、バス４ｂではアドレスが伝搬され、バス４ｃでは後述するモード設定値が伝搬される。
【００１６】
なお、イジング装置２ａ１〜２ａｍの接続トポロジは、図１の例に限定されない（他の例は、後述する（図２１、図２２参照））。
イジング装置２ａ１〜２ａｍのそれぞれは、以下のような要素を有している。図１には、イジング装置２ａｋに含まれる要素の例が示されている。
【００１７】
イジング装置２ａｋは、複数（ｎ個）のニューロン回路１０ａ１，１０ａ２，…，１０ａｎ、メモリ１１、制御回路１２、ルータ１３、送受信回路１４ａ，１４ｂ，１４ｃ，１４ｄを有している。
【００１８】
ニューロン回路１０ａ１〜１０ａｎは、たとえば、ＤｅＧｌｏｒｉａアルゴリズムと呼ばれるアルゴリズムに基づく回路を用いることができる。
ＤｅＧｌｏｒｉａアルゴリズムに基づくニューロン回路１０ａ１〜１０ａｎのそれぞれは、複数の接続先ニューロン回路からの出力信号にその接続先ニューロン回路との接続の強さを示す重み値を掛けた値の総和に基づく値（以下、ローカルフィールド値という）を保持する。そして、ニューロン回路１０ａ１〜１０ａｎのそれぞれは、ローカルフィールド値にノイズ値を加算した値と閾値（たとえば、０）との比較結果に基づき、０または１を出力する。さらに、ニューロン回路１０ａ１〜１０ａｎのそれぞれは、接続先ニューロン回路の出力信号の変化時に、制御回路１２から供給される更新信号を受け、更新信号に基づいて、ローカルフィールド値の変化分を求める。そして、ニューロン回路１０ａ１〜１０ａｎのそれぞれは、その変化分を、上記出力信号の変化前のローカルフィールド値に対して加算または減算することで、ローカルフィールド値を更新する。
【００１９】
ニューロン回路１０ａ１〜１０ａｎの回路図の一例については後述する（図２参照）。
メモリ１１は、接続先情報１１ａを記憶する。接続先情報１１ａには、ニューロン回路１０ａ１〜１０ａｎに接続される接続先ニューロン回路を識別するアドレス情報と、接続先ニューロン回路を有するイジング装置を識別するアドレス情報と、重み値の識別情報とが含まれ、これらの情報が対応付けられている。接続先情報１１ａの例については後述する（図１５参照）。
【００２０】
以下では、接続先ニューロン回路を識別するアドレス情報を、内部アドレスと呼び、イジング装置を識別するアドレス情報を、チップアドレスと呼ぶ。内部アドレスやチップアドレスは、たとえば、制御装置３によって、計算対象の問題に応じて予め決定され、図示しないレジスタ（またはメモリ１１）に格納される。
【００２１】
なお、メモリ１１としては、たとえば、フラッシュメモリなどの半導体記憶装置を使用することができる。
制御回路１２は、接続先ニューロン回路の出力信号の変化時に、上記接続先情報１１ａと、変化後の出力信号の値とに基づく更新信号を出力する。たとえば、更新信号は、変化後の出力信号の値や、重み値の識別情報に基づく重み値の選択信号などである。
【００２２】
制御回路１２は、出力信号の値が変化した接続先ニューロン回路を含むイジング装置のチップアドレス及び接続先ニューロン回路の内部アドレスを、ルータ１３を介して受ける。そして、制御回路１２は、これらのアドレスを、接続先情報１１ａに含まれるチップアドレス及び内部アドレスと比較する。制御回路１２は、受信した各アドレスが、たとえば、ニューロン回路１０ａ１に接続される接続先ニューロン回路の内部アドレスと、チップアドレスに一致したときには、変化後の出力信号の値をニューロン回路１０ａ１に供給する。さらに、制御回路１２は、内部アドレスとチップアドレスに対応付けられた重み値の識別情報に基づいて、ニューロン回路１０ａ１が使用する重み値を選択するための選択信号を、ニューロン回路１０ａ１に供給する。
【００２３】
また、制御回路１２は、ニューロン回路１０ａ１〜１０ａｎの何れかの出力信号が変化したときには、変化後の出力信号の値と、出力信号が変化したニューロン回路のアドレス（内部アドレス）を、ルータ１３に供給する。また、制御回路１２は、ニューロン回路１０ａ１〜１０ａｎのうち、出力信号が変化したニューロン回路とその他のニューロン回路の間の重み値の識別情報に基づいた選択信号を、変化後の出力信号の値とともに、その他のニューロン回路に供給する。
【００２４】
なお、１つのイジング装置内のニューロン回路間の重み値の識別情報は、たとえば、メモリ１１内に格納されている。また、接続先情報１１ａが、１つのイジング装置内のニューロン回路間の重み値の識別情報を含んでいてもよい。
【００２５】
上記のような動作を行う制御回路１２は、たとえば、比較回路や選択回路などで実現できる。なお、制御回路１２は、プロセッサであってもよい。プロセッサは、たとえば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサは、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２６】
ルータ１３は、モード設定値を受け、そのモード設定値に基づき、バス４ａ，４ｂ，４ｃにより、隣接するイジング装置のうち、少なくとも２つを接続するか、隣接するイジング装置と制御回路１２とを接続するか決定する。
【００２７】
なお、モード設定値は、モードレジスタ１３ａに格納される。モードレジスタ１３ａは、たとえば、スキャンフリップフロップ（以下スキャンＦＦという）を有し、信号線５とそのスキャンＦＦを含むスキャンチェーンを用いて、モード設定値の初期値が設定される。モード設定値の変更時には、たとえば、バス４ｃを伝搬するモード設定値が、モードレジスタ１３ａに書き込まれる。
【００２８】
送受信回路１４ａ〜１４ｄは、ルータ１３と接続されており、イジング装置２ａｋと隣接するイジング装置の間で情報（モード設定値、アドレス、データ）の送受信を行う。
制御装置３は、イジング装置２ａ１〜２ａｍのうち、ニューロン回路の出力信号の値の更新を許容するもの（アニーリングするもの）を選択する。そして、制御装置３は、そのイジング装置から出力される、出力信号が変化したニューロン回路のアドレスと、変化後の出力信号の値が、そのニューロン回路に対する接続先ニューロン回路を含むイジング装置に供給されるようにモード設定値を設定する。
【００２９】
また、制御装置３は、計算対象の問題に応じた重み値を、イジング装置２ａ１〜２ａｍの各ニューロン回路にあるメモリに書き込む。
上記のような動作を行う制御装置３は、たとえば、プロセッサで実現できる。プロセッサは、たとえば、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、またはＰＬＤである。またプロセッサは、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。また、制御装置３は、ＰＣ（パーソナルコンピュータ）であってもよい。
【００３０】
（ＤｅＧｌｏｒｉａアルゴリズムに基づくニューロン回路の一例）
図２は、ニューロン回路の一例を示す図である。
図２では、図１に示したｎ個のニューロン回路１０ａ１〜１０ａｎのうち、ニューロン回路１０ａ１，１０ａｉ，１０ａｎの一例が示されている。ニューロン回路１０ａ１〜１０ａｎのうちニューロン回路１０ａ１，１０ａｉ，１０ａｎ以外のニューロン回路も同様の回路構成となっている。なお、図１では図示を省略したが、イジング装置２ａｋは、ノイズ発生回路１４とランダム信号生成回路１５を有している。
【００３１】
ニューロン回路１０ａ１，１０ａｉ，１０ａｎは、レジスタ２０ａ１，２０ａｉ，２０ａｎ、選択回路２１ａ１，２１ａｉ，２１ａｎ，２２ａ１，２２ａｉ，２２ａｎ、乗算回路２３ａ１，２３ａｉ，２３ａｎを有している。さらにニューロン回路１０ａ１，１０ａｉ，１０ａｎは、加算回路２４ａ１，２４ａｉ，２４ａｎ、レジスタ２５ａ１，２５ａｉ，２５ａｎ、加算回路２６ａ１，２６ａｉ，２６ａｎを有している。さらにニューロン回路１０ａ１，１０ａｉ，１０ａｎは、比較回路２７ａ１，２７ａｉ，２７ａｎ、ＸＯＲ回路２８ａ１，２８ａｉ，２８ａｎ、レジスタ２９ａ１，２９ａｉ，２９ａｎを有している。
【００３２】
レジスタ２０ａ１は、Ｎ個の重み値Ｗ11，Ｗ12，…，Ｗ1Nを格納し、レジスタ２０ａｉは、Ｎ個の重み値Ｗi1，Ｗi2，…，ＷiNを格納し、レジスタ２０ａｎは、Ｎ個の重み値Ｗn1，Ｗn2，…，ＷnNを格納する。Ｎ−ｎが、イジング装置２ａｋ以外のイジング装置のニューロン回路のうち、ニューロン回路１０ａ１〜１０ａｎが接続する数となる。
【００３３】
たとえば、レジスタ２０ａｉに格納される重み値Ｗi1〜ＷiNのうち、重み値Ｗi1〜Ｗinは、ニューロン回路１０ａ１〜１０ａｎのうち、ニューロン回路１０ａｉと、イジング装置２ａｋ内のその他のニューロン回路との接続の強さを示す。一方、重み値Ｗi1〜ＷiNのうち、重み値Ｗin+1〜ＷiNは、ニューロン回路１０ａｉと、イジング装置２ａｋ以外のイジング装置のＮ−ｎ個のニューロン回路との接続の強さを示す。たとえば、ｎ＝１０２４でＮ＝１１５２であるとき、ニューロン回路１０ａｉは、イジング装置２ａｋ以外のイジング装置のニューロン回路のうち、１２８個との接続をもつ。なお、ｎや、Ｎの数は、上記の例に限定されないことは言うまでもない。
【００３４】
なお、上記のような重み値は、制御装置３により、計算対象の問題に応じて設定され、レジスタ２０ａ１〜２０ａｎに格納される。なお、上記のような重み値は、ＲＡＭ（Random Access Memory）などのメモリに格納されてもよい。
【００３５】
選択回路２１ａ１は、制御回路１２から供給される選択信号に基づき、レジスタ２０ａ１に格納されている重み値Ｗ11〜Ｗ1Nのうち１つを選択して出力する。選択回路２１ａｉは、選択信号に基づき、レジスタ２０ａｉに格納されている重み値Ｗi1〜ＷiNのうち１つを選択して出力する。選択回路２１ａｎは、選択信号に基づき、レジスタ２０ａｎに格納されている重み値Ｗn1〜ＷnNのうち１つを選択して出力する。
【００３６】
たとえば、ニューロン回路１０ａ１の出力信号が変化したとき、選択信号に基づき、ニューロン回路１０ａ１，１０ａｉ，１０ａｎの選択回路２１ａ１，２１ａｉ，２１ａｎは、それぞれ、重み値Ｗ11，Ｗi1，Ｗn1を選択する。
【００３７】
選択回路２２ａ１〜２２ａｎのそれぞれは、制御回路１２から出力される、接続先ニューロン回路の出力信号の変化後の値（０か１）に基づき、１または−１を選択して出力する。変化後の値が０のときには、選択回路２２ａ１〜２２ａｎは、−１を選択して出力し、変化後の値が１のときには、選択回路２２ａ１〜２２ａｎは、１を選択して出力する。この理由については後述する。
【００３８】
乗算回路２３ａ１は、選択回路２１ａ１から出力される値と、選択回路２２ａ１から出力される値との積を出力する。乗算回路２３ａｉは、選択回路２１ａｉから出力される値と、選択回路２２ａｉから出力される値との積を出力する。乗算回路２３ａｎは、選択回路２１ａｎから出力される値と、選択回路２２ａｎから出力される値との積を出力する。
【００３９】
加算回路２４ａ１は、乗算回路２３ａ１から出力される値と、レジスタ２５ａ１に格納されている値とを加算して出力する。加算回路２４ａｉは、乗算回路２３ａｉから出力される値と、レジスタ２５ａｉに格納されている値とを加算して出力する。加算回路２４ａｎは、乗算回路２３ａｎから出力される値と、レジスタ２５ａｎに格納されている値とを加算して出力する。
【００４０】
レジスタ２５ａ１は、図示しないクロック信号に同期して、加算回路２４ａ１から出力される値を取り込む。レジスタ２５ａｉは、図示しないクロック信号に同期して、加算回路２４ａｉから出力される値を取り込む。レジスタ２５ａｎは、図示しないクロック信号に同期して、加算回路２４ａｎから出力される値を取り込む。レジスタ２５ａ１〜２５ａｎは、たとえば、フリップフロップである。なお、初期値は後述するバイアス値である。
【００４１】
なお、レジスタ２５ａ１〜２５ａｎに取り込まれた値が、前述したローカルフィールド値であり、図２では、ｈ1，ｈi，ｈnと表記されている。
加算回路２６ａ１は、レジスタ２５ａ１から出力される値に、ノイズ発生回路１４から出力されるノイズ値を加算して出力する。加算回路２６ａｉは、レジスタ２５ａｉから出力される値に、ノイズ発生回路１４から出力されるノイズ値を加算して出力する。加算回路２６ａｎは、レジスタ２５ａｎから出力される値に、ノイズ発生回路１４から出力されるノイズ値を加算して出力する。ノイズ値の例については後述する。
【００４２】
比較回路２７ａ１は、加算回路２６ａ１から出力される値が、閾値よりも大きいときには１を出力し、閾値以下のときには０を出力する。比較回路２７ａｉは、加算回路２６ａｉから出力される値が、閾値よりも大きいときには１を出力し、閾値以下のときには０を出力する。比較回路２７ａｎは、加算回路２６ａｎから出力される値が、閾値よりも大きいときには１を出力し、閾値以下のときには０を出力する。
【００４３】
なお、イジング装置２ａｋでアニール動作が行われる際、比較回路２７ａ１〜２７ａｎは、ランダム信号生成回路１５によって、ランダムに１つが有効になり、他は無効になる。ランダム信号生成回路１５としては、ＬＦＳＲ（Linear Feedback Shift Registers）などを用いることができる。
【００４４】
ＸＯＲ回路２８ａ１は、比較回路２７ａ１から出力される値と、レジスタ２９ａ１に格納されている値とが、一致しているときは０を出力し、異なるときは１を出力する。ＸＯＲ回路２８ａｉは、比較回路２７ａｉから出力される値と、レジスタ２９ａｉに格納されている値とが、一致しているときは０を出力し、異なるときは１を出力する。ＸＯＲ回路２８ａｎは、比較回路２７ａｎから出力される値と、レジスタ２９ａｎに格納されている値とが、一致しているときは０を出力し、異なるときは１を出力する。
【００４５】
レジスタ２９ａ１は、ＸＯＲ回路２８ａ１から出力される値が１となると、比較回路２７ａ１から出力される値を取り込む。これにより、ニューロン回路１０ａ１の出力信号（ニューロン回路１０ａ１の状態）ｘ1が変化する（更新される）。レジスタ２９ａｉは、ＸＯＲ回路２８ａｉから出力される値が１となると、比較回路２７ａｉから出力される値を取り込む。これにより、ニューロン回路１０ａｉの出力信号（ニューロン回路１０ａｉの状態）ｘiが変化する。レジスタ２９ａｎは、ＸＯＲ回路２８ａｎから出力される値が１となると、比較回路２７ａｎから出力される値を取り込む。これにより、ニューロン回路１０ａｎの出力信号（ニューロン回路１０ａｎの状態）ｘnが変化する。
【００４６】
以上のような、ニューロン回路１０ａ１〜１０ａｎは、イジング型のエネルギー関数の演算を小規模なハードウェアで実現するものである。なお、イジング型のエネルギー関数Ｅ（ｘ）は、たとえば、以下の式（１）で定義される。
【００４７】
【数１】
0006659957.tif 000002
【００４８】
右辺の１項目は、全ニューロン回路から選択可能な２つのニューロン回路の全組み合わせについて、漏れと重複なく、２つのニューロン回路の状態と重み値との積を積算したものである。なお、Ｗij＝Ｗji、Ｗii＝０である。
【００４９】
右辺の２項目は、全ニューロン回路のそれぞれのバイアス値と状態との積を積算したものである。ｂiは、ｉ番目のニューロン回路のバイアス値を示している。
上記のようなエネルギー関数Ｅ（ｘ）をハードウェアで表現するため、図２に示したニューロン回路１０ａ１〜１０ａｎのそれぞれは、ローカルフィールド値ｈ1〜ｈnを演算する。たとえば、ニューロン回路１０ａｉにおけるローカルフィールド値ｈiは以下の式（２）で表される。
【００５０】
【数２】
0006659957.tif 000003
【００５１】
右辺の１項目は、ｉ番目のニューロン回路１０ａｉと、ニューロン回路１０ａｉの全接続先ニューロン回路のそれぞれとの間の接続の強さを示す複数の重み値と、接続先ニューロン回路のそれぞれの状態との積を積算したものである。
【００５２】
情報処理装置１の全ニューロン回路のうち、一度に状態が更新されるニューロン回路の数を１つとすると、そのニューロン回路の接続先では、元のローカルフィールド値に対して、その更新による変化分を加算または減算すればよい。
【００５３】
たとえば、ニューロン回路１０ａｉに接続されているニューロン回路の状態ｘj（０または１）が、１−ｘjに変化したとき、ニューロン回路１０ａｉのローカルフィールド値の変化分Δｈiは、以下の式（３）で表される。
【００５４】
【数３】
0006659957.tif 000004
【００５５】
式（３）において、１−２ｘjは、状態ｘjが、０から１に変化したときには、＋１となり、１から０に変化したときには、−１となる。
このような１−２ｘjの演算は、図２に示した、選択回路２２ａｉで実現できる。
【００５６】
（ノイズ値の例）
図２に示したようなニューロン回路１０ａ１〜１０ａｎでは、シミュレーテッド・アニーリングを行うために、ローカルフィールド値ｈ1〜ｈnにノイズ値を加えた値に対して、比較回路２７ａ１〜２７ａｎで閾値との比較が行われる。
【００５７】
たとえば、比較回路２７ａ１〜２７ａｎの出力値（ニューロン回路１０ａ１〜１０ａｎの状態ｘ1〜ｘn）が１となる確率が、シグモイド関数に従うようにノイズ値が加えられる。たとえば、ニューロン回路１０ａｉの状態ｘiが１となる確率Ｐi（ｈi）が、以下の式（４）の関係になるように、ノイズ値が加えられる。
【００５８】
【数４】
0006659957.tif 000005
【００５９】
式（４）において、Ｔは、実効温度である。
式（４）に示すような確率Ｐi（ｈi）を得るために、加算するノイズ値ｎｓの確率密度関数ｐ（ｎｓ）は、以下の式（５）のようになる。
【００６０】
【数５】
0006659957.tif 000006
【００６１】
図３は、状態ｘiが１となる確率Ｐi（ｈi）の一例を示す図である。
横軸は、ローカルフィールド値ｈiにノイズ値ｎｓを加算した値を示し、縦軸は、状態ｘiが１となる確率を示している。
【００６２】
波形３０は、ローカルフィールド値ｈiに、式（５）に示すような確率密度関数ｐ（ｎｓ）に従うノイズ値ｎｓを加算した値が、比較回路２７ａｉに入力されたときに、状態ｘｉが１となる確率Ｐi（ｈi）を示す。波形３１は、ローカルフィールド値ｈiが、比較回路２７ａｉに入力されたときに、状態ｘｉが１となる確率Ｐi（ｈi）を示す。
【００６３】
波形３１に示すように、ノイズ値ｎｓがローカルフィールド値ｈiに加算されないときは、ローカルフィールド値ｈiが、閾値Ｖｔｈ以下では、Ｐi（ｈi）＝０、閾値Ｖｔｈを超えると、Ｐi（ｈi）＝１となる。
【００６４】
これに対して、ノイズ値ｎｓがローカルフィールド値ｈiに加算されるときは、波形３０に示すように、シグモイド関数に従って確率Ｐi（ｈi）が変化する。
（チップアドレスとモード設定値の初期値の設定方法）
図４は、チップアドレスとモード設定値の初期値の設定方法の一例を示す図である。
【００６５】
イジング装置２ａ１〜２ａｍは、たとえば、１本のスキャンチェーン４０で接続されている。制御装置３はスキャンチェーン４０により、チップアドレスとモード設定値の初期値をイジング装置２ａ１〜２ａｍのそれぞれに設定する。
【００６６】
図５は、チップアドレスを設定するスキャンＦＦの一例を示す図である。
直列に接続されたスキャンＦＦ部１３ｂ１〜１３ｂｍのそれぞれは、対応するイジング装置２ａ１〜２ａｍのチップアドレスのビット数に対応した数のスキャンＦＦを有する。
【００６７】
たとえば、チップアドレスのビット数をｐビットとすると、図５に示されているように、スキャンＦＦ部１３ｂ１は、直列に接続されたスキャンＦＦ４１ａ１，４１ａ２，…，４１ａｐを有する。また、スキャンＦＦ部１３ｂｍも直列に接続されたスキャンＦＦ４２ａ１，４２ａ２，…，４２ａｐを有する。
【００６８】
スキャンＦＦ部１３ｂ１〜１３ｂｍのそれぞれは、たとえば、対応するイジング装置２ａ１〜２ａｍ内のルータ内に設けられる。
制御装置３は、自身の端子４４から、イジング装置２ａ１〜２ａｍのそれぞれに設定するチップアドレスのビットの値を、１ビットずつ順番に出力する。また、制御装置３は、自身の端子４５からクロック信号を出力する。なお、クロック信号は、スキャンＦＦ部１３ｂ１〜１３ｂｍに並列に供給される。クロック信号の立ち上がり（または立ち下がり）に同期して、ビットの値が、後段のスキャンＦＦに送られていく。
【００６９】
制御装置３は、クロック信号を、ｍ×ｐサイクル出力した後、自身の端子４３から出力するリード・イネーブル信号の論理レベルを、たとえば、Ｈ（High）レベルに立ち上げる。これにより、スキャンＦＦ部１３ｂ１〜１３ｂｍから、ビットの値が読み出され、スキャンＦＦ部１３ｂ１〜１３ｂｍのそれぞれに対応して設けられた図示しないレジスタに、チップアドレスが格納される。
【００７０】
モード設定値の初期値に関しても、たとえば、別のスキャンチェーンを用いて、ルータ内のモードレジスタ（たとえば、図１のイジング装置２ａｋでは、ルータ１３内のモードレジスタ１３ａ）に格納される。
【００７１】
なお、スキャンチェーンは、図４に示したスキャンチェーン４０のように１本のパスではなくてもよい。
図６は、スキャンチェーンの他の例を示す図である。
【００７２】
図６では、並列にｑ本のスキャンチェーン４０ａ１，４０ａ２，…，４０ａｑが制御装置３に接続されている。また、マトリックス状に配置されたイジング装置２ａ１〜２ａｍのうち同じ行のものには、同じスキャンチェーンが接続される。
【００７３】
このようにスキャンチェーンを並列化することによって、イジング装置２ａ１〜２ａｍへのチップアドレスとモード設定値の初期値の付与が、１本のスキャンチェーンを用いる場合よりも高速に行える。
【００７４】
（ルータ１３の構成例）
図７は、ルータの一例を示す図である。
ルータ１３は、スキャン・イン、スキャン・アウトのためのポートの他に、“ＮＯＲＴＨ”、“ＳＯＵＴＨ”、“ＥＡＳＴ”、“ＷＥＳＴ”、“ＬＯＣＡＬ”の５つのポートを有する。
【００７５】
たとえば、イジング装置２ａｋに対して図７の紙面左側に隣接するイジング装置から供給される情報を、図７の紙面右側に隣接するイジング装置に送るときには、“ＥＡＳＴ”、“ＷＥＳＴ”の２つのポートが用いられる。
【００７６】
イジング装置２ａｋに対して隣接するイジング装置から供給される情報を、制御回路１２に送るとき、または制御回路１２からの情報を隣接するイジング装置に送るときには、“ＬＯＣＡＬ”ポートが用いられる。
【００７７】
なお、モードレジスタ１３ａに格納されるモード設定値の変更の際にも、“ＬＯＣＡＬ”ポートが用いられる。
図８は、“ＥＡＳＴ”ポートに接続されるスイッチ部の一例を示す図である。
【００７８】
“ＥＡＳＴ”ポートから供給される情報は、バッファ回路５０を介して、スイッチ部５１に供給される。
スイッチ部５１は、スイッチ５１ａ，５１ｂ，５１ｃ，５１ｄを有する。スイッチ５１ａは、バッファ回路５０の出力端子と、“ＬＯＣＡＬ”ポートの間に接続されている。スイッチ５１ｂは、バッファ回路５０の出力端子と、“ＮＯＲＴＨ”ポートの間に接続されている。スイッチ５１ｃは、バッファ回路５０の出力端子と、“ＷＥＳＴ”ポートの間に接続されている。スイッチ５１ｄは、バッファ回路５０の出力端子、“ＳＯＵＴＨ”ポートの間に接続されている。
【００７９】
たとえば、スイッチ５１ａ〜５１ｄは、ｎチャネル型ＭＯＳＦＥＴ（Metal-Oxide Semiconductor Field Effect Transistor）である。その場合、スイッチ５１ａ〜５１ｄは、たとえば、ルータ１３内の図示しないスイッチ制御回路によって生成されるゲート電圧が、Ｈレベルとなるとオン状態となり、Ｌ（Low）レベルとなるとオフ状態となる。スイッチ制御回路は、モードレジスタ１３ａに格納されているモード設定値に基づき上記のようなゲート電圧を生成する。
【００８０】
図９は、モードレジスタに格納されているモード設定値の一例を示す図である。
図９では、“ＮＯＲＴＨ”、“ＳＯＵＴＨ”、“ＥＡＳＴ”、“ＷＥＳＴ”、“ＬＯＣＡＬ”の５つのポートに接続されるスイッチ部の５つのスイッチを制御するモード設定値の例が示されている。図９の例では、モード設定値は、“ＮＯＲＴＨ”、“ＳＯＵＴＨ”、“ＥＡＳＴ”、“ＷＥＳＴ”、“ＬＯＣＡＬ”のうち、２つの頭文字を組み合わせた制御コードの集合で表されている。
【００８１】
たとえば、“ＥＮ”は、図８に示した“ＥＡＳＴ”ポートに接続されるスイッチ部５１に含まれ、“ＥＡＳＴ”ポートと“ＮＯＲＴＨ”ポートとの接続の有無を決定するスイッチ５１ｂを制御する制御コードである。
【００８２】
また、“ＷＳ”は、図示を省略しているが、“ＷＥＳＴ”ポートに接続されるスイッチ部に含まれ、“ＷＥＳＴ”ポートと“ＳＯＵＴＨ”ポートとの接続の有無を決定するスイッチを制御する制御コードである。
【００８３】
各制御コードは、たとえば、０または１で表され、０のときは、その制御コードで制御されるスイッチはオフ状態となり、１のときは、その制御コードで制御されるスイッチはオン状態となる。
【００８４】
たとえば、（ＥＮ，ＥＷ，ＥＳ，ＥＬ）＝（１，０，０，１）とした場合には、図８に示したスイッチ部５１において、スイッチ５１ａ，５１ｂがオン状態となり、スイッチ５１ｃ，５１ｄがオフ状態となる。
【００８５】
図１０は、スイッチ制御の他の例を示す図である。
モードレジスタ１３ａは、モード設定値として、上記のような制御コードを直接記憶する代わりに、たとえば、モード名を示す識別情報を記憶している。
【００８６】
また、ルータ１３内のメモリ１３ｃは、上記識別情報と制御コードとの対応関係が示された変換テーブル１３ｃ１を格納している。
ルータ１３内のスイッチ制御回路１３ｄは、ルータ１３内のメモリ１３ｃに格納された変換テーブル１３ｃ１を参照して、上記識別情報から制御コードを特定する。そして、スイッチ制御回路１３ｄは、その制御コードに基づくスイッチ制御信号を出力して、スイッチ５１ａ〜５１ｄなどを制御する。
【００８７】
このようにすることで、モードレジスタ１３ａが格納するモード設定値のビット数を少なくでき、モード設定値の転送に要するバンド幅を小さくできる。
図１１は、モード設定値の変更方法の一例を示すタイミングチャートである。
【００８８】
イジング装置２ａｋのルータ１３のモードレジスタ１３ａに格納されるモード設定値を変更する場合、制御装置３は、イジング装置２ａｋのチップアドレスとモード設定値とをバス４ｂ，４ｃに伝搬する。また、制御装置３は、図示しない制御信号線で伝搬するモード・ライト・イネーブル信号の論理レベルをＨレベルに立ち上げる。
【００８９】
このとき、ルータ１３は、現在のモード設定値に基づき、４つのポート、“ＮＯＲＴＨ”、“ＳＯＵＴＨ”、“ＥＡＳＴ”、“ＷＥＳＴ”の何れかから、モード・ライト・イネーブル信号を受ける。そして、ルータ１３は、モード・ライト・イネーブル信号の立ち上がり（タイミングｔ１）に同期して、モード・ライト・イネーブル信号を受けたポートから、供給されるチップアドレスと、自身のチップアドレスとを比較する。
【００９０】
そして、ルータ１３は、両チップアドレスが一致したときに、上記ポートからモード設定値を取り込み、“ＬＯＣＡＬ”ポートを介してモードレジスタ１３ａに記憶されているモード設定値を更新する。
【００９１】
（波形及びタイミングの再生機能）
本実施の形態の情報処理装置１では、チップ内を横断する信号伝送やチップ間信号伝送が行われる。このときの信号波形の変形を抑制するために、たとえば、以下のような回路群がルータ１３に接続される。
【００９２】
図１２は、波形及びタイミングの再生を行う回路群が接続されたルータの一例を示す図である。
図１２の例では、送受信回路１４ｂが受信した信号を、ルータ１３を介して送受信回路１４ｄから送信する部分が示されているが、他の方向の信号伝送を行う部分についても同様の回路群が設けられる。
【００９３】
送受信回路１４ｂとルータ１３間には、並列に接続されたフリップフロップ６０，６１が設けられている。また、ルータ１３と送受信回路１４ｄ間には、２：１マルチプレクサ６２とバッファ回路６３が設けられている。
【００９４】
フリップフロップ６０は、たとえば、位相調整回路６４から出力されるクロック信号ｃｌｋの立ち上がりタイミングに同期して送受信回路１４ｂから供給される信号の値を取り込み、ルータ１３に出力する。フリップフロップ６１は、たとえば、位相調整回路６４から出力されるクロック信号ｃｌｋの立ち下がりタイミングに同期して送受信回路１４ｂから供給される信号の値を取り込み、ルータ１３に出力する。
【００９５】
２：１マルチプレクサ６２は、フリップフロップ６０，６１から出力される２つの信号を、ルータ１３を介して受信し、その何れか一方を、クロック信号ｃｌｋの論理レベルがＨレベルかＬレベルかに応じて出力する。２：１マルチプレクサ６２からの出力信号は、バッファ回路６３を介して送受信回路１４ｄに供給される。
【００９６】
位相調整回路６４は、たとえば、制御装置３から供給されるグローバルクロック信号ｇｃｌｋを受ける。そして位相調整回路６４は、フリップフロップ６０，６１が、送受信回路１４ｂから供給される信号を、その信号のアイパターンの中央のタイミングで取り込めるように、グローバルクロック信号ｇｃｌｋの位相を調整したクロック信号ｃｌｋを出力する。
【００９７】
図１３は、波形とタイミングの再生の様子を示す図である。
クロック信号ｃｌｋは、立ち上がりタイミングｔ２が、送受信回路１４ｂから供給される信号（Ｄａｔａ  ｉｎ）のアイパターンの中央付近になるように、位相が調整されている。
【００９８】
Ｄａｔａ  ｉｎに対して所定時間遅延した信号（Ｄａｔａ  ｏｕｔ）がバッファ回路６３から出力される。上記のような回路群をルータ１３に接続することによって、Ｄａｔａ  ｏｕｔの波形は、Ｄａｔａ  ｉｎの波形とほぼ同じとなる。
【００９９】
（マルチドロップバス機能）
図１４は、マルチドロップバス機能を説明する図である。
本実施の形態の情報処理装置１では、バス４ａ〜４ｃは、図１４に示すように、接続されているイジング装置２ａ１，２ａ２，…，２ａｍとの間で信号の送受信を行うことができるマルチドロップバスとして機能する。たとえば、制御信号配送用の制御信号線４ｄにより伝搬されるモード・ライト・イネーブル信号の論理レベルがＨレベルとなると、バス４ｂで伝搬されるチップアドレスと自身のチップアドレスが一致するイジング装置が、バス４ｃで伝搬されるモード設定値を取り込む。
【０１００】
（メモリ１１に格納される接続先情報１１ａの一例）
図１５は、接続先情報の一例を示す図である。
図１５では、イジング装置２ａｋのニューロン回路１０ａ１〜１０ａｎのうち、図２に示したニューロン回路１０ａｉに対応付けられた接続先情報の一例が示されている。
【０１０１】
接続先情報７０では、ニューロン回路１０ａｉに接続される接続先ニューロン回路を識別する内部アドレスと、その接続先ニューロン回路を有するイジング装置を識別するチップアドレスと、重み値の識別情報とが対応付けられている。
【０１０２】
たとえば、接続先情報７０の１行目では、ニューロン回路１０ａｉは、チップアドレスが０のイジング装置の、内部アドレスが１のニューロン回路に接続されることを示している。また、そのニューロン回路と、ニューロン回路１０ａｉの接続の重み値の識別情報は、（ｉ，ｎ＋１）であることが示されている。なお、ｎは、イジング装置２ａｋ内のニューロン回路１０ａ１〜１０ａｎの数である。ｎ＝１０２４の場合、識別情報は、（ｉ，１０２５）となる。
【０１０３】
また、接続先情報７０において、ｎ１は、チップアドレスが０のイジング装置の中で、ニューロン回路１０ａｉと接続されるニューロン回路の数である。また、ｎ２は、チップアドレスが２のイジング装置の中で、ニューロン回路１０ａｉと接続されるニューロン回路の数である。
【０１０４】
なお、イジング装置２ａ１〜２ａｍの数を１０２４個とすると、チップアドレスは、たとえば、１０ビットで表される。
このような重み値の識別情報と、チップアドレスと、内部アドレスの対応関係の情報は、重み値の識別情報の小さい順に並べられる。
【０１０５】
イジング装置２ａｋのニューロン回路１０ａ１〜１０ａｎのうち、ニューロン回路１０ａｉ以外に対応付けられた接続先情報も同様である。
（アニール動作例）
以下、制御装置３によって制御される情報処理装置１の動作（アニール動作）の一例を説明する。
【０１０６】
図１６は、情報処理装置の動作の一例を示すフローチャートである。
まず、制御装置３は、たとえば、図４や図６に示したようなスキャンチェーン４０，４０ａ１〜４０ａｑを用いて、チップアドレス及びモード設定値の初期値を、イジング装置２ａ１〜２ａｍのそれぞれのレジスタに設定する（ステップＳ１）。たとえば、イジング装置２ａｋでは、モード設定値の初期値は、モードレジスタ１３ａに設定され、チップアドレスは、たとえば、ルータ１３内の図示しないレジスタに設定される。
【０１０７】
さらに、制御装置３により、計算対象の問題に応じた重み値が、イジング装置２ａ１〜２ａｍの各ニューロン回路にあるレジスタ（またはメモリ）へ書き込まれる（設定される）（ステップＳ２）。
【０１０８】
図１７は、重み値の書き込み時の動作例を示すタイミングチャートである。
イジング装置２ａｋのニューロン回路１０ａ１〜１０ａｎのレジスタ２０ａ１〜２０ａｎに重み値を書き込む場合、制御装置３は、イジング装置２ａｋのチップアドレスと重み値とをバス４ａ，４ｂに伝搬する。また、制御装置３は、たとえば、図１４に示したような制御信号線４ｄで伝搬させるウェイト・ライト・イネーブル信号の論理レベルをＨレベルに立ち上げる。
【０１０９】
このとき、ルータ１３は、現在のモード設定値に基づき、４つのポート、“ＮＯＲＴＨ”、“ＳＯＵＴＨ”、“ＥＡＳＴ”、“ＷＥＳＴ”の何れかから、ウェイト・ライト・イネーブル信号を受ける。そして、ルータ１３は、モード・ライト・イネーブル信号の立ち上がり（タイミングｔ３）に同期して、モード・ライト・イネーブル信号を受けたポートから供給されるチップアドレスと、自身のチップアドレスとを比較する。
【０１１０】
そして、ルータ１３は、両チップアドレスが一致したときに、上記ポートから重み値を取り込み、“ＬＯＣＡＬ”ポートを介してレジスタ２０ａ１〜２０ａｎに重み値を書き込む。
【０１１１】
他のイジング装置のニューロン回路にあるレジスタ（またはメモリ）にも同様にして重み値が書き込まれる。
次に、制御装置３は、全チップ（イジング装置２ａ１〜２ａｎ）のニューロン回路の状態を初期化する（ステップＳ３）。たとえば、制御装置３は、図示しない制御信号線を介して、各ニューロン回路のローカルフィールド値を保持するレジスタの値をリセットする。
【０１１２】
その後、制御装置３は、イジング装置２ａ１〜２ａｎのうち、アニール動作を実行させるイジング装置（アニールチップ）を１つ選択する（ステップＳ４）。たとえば、制御装置３は、イジング装置２ａ１〜２ａｎの何れか１つをランダムに選択する。そして、制御装置３は、選択した１つのイジング装置以外のイジング装置に含まれるニューロン回路内において、出力信号の値を決定する比較回路を制御信号により無効化し、出力信号の値が変化しないようにする。
【０１１３】
そして、選択されたイジング装置では、状態の更新を許容するニューロン回路が１つランダムに選択される（ステップＳ５）。以下では、ステップＳ４の処理にて、イジング装置２ａｋが選択されたものとして説明する。このとき、ランダム信号生成回路１５により、ニューロン回路１０ａ１〜１０ａｎの何れか１つの状態の更新が許容される。
【０１１４】
たとえば、ニューロン回路１０ａｉの状態ｘiの更新が許容されたとき、ローカルフィールド値ｈiにノイズ値を加えた値が閾値を超えると、状態ｘiは１となる。また、状態ｘiの元の値が０のとき、ＸＯＲ２８ｉは１を出力し、状態ｘiが更新された旨を制御回路１２に通知する。
【０１１５】
制御回路１２は、状態ｘiが更新された旨の通知を受けると、イジング装置２ａｋ内の他のニューロン回路に、ニューロン回路１０ａｉとの間の接続の強さを示す重み値を選択させるための選択信号と、更新後の状態ｘiの値とを供給する。
【０１１６】
状態の更新を許容するニューロン回路の選択回数が、予め決められた回数ｃｎｔ１に達しないときは（ステップＳ６：ＮＯ）、ステップＳ５の処理が行われる。
状態の更新を許容するニューロン回路の選択を行うたびに、ノイズ発生回路１４は、たとえば、制御装置３の制御のもと、ノイズの振幅を徐々に小さくしていくことで、シミュレーテッド・アニーリングが行われる。
【０１１７】
図１８は、シミュレーテッド・アニーリングの様子を示す図である。
縦軸はエネルギーＥであり、横軸は全ニューロン回路の状態の組み合わせｑKを示している。組み合わせｑKは、“０００…０”から“１１１…１”まである。図１８では、ノイズの振幅がＷ１、Ｗ２、Ｗ３と小さくなっていくときの、解の収束の様子が示されている。ノイズの振幅を小さくしていくことは、式（５）の実効温度Ｔを小さくしていくことに相当する。
【０１１８】
ノイズの振幅がＷ１のとき、解が、局所解（エネルギーが局所的な極小値となる解）ｑk1，ｑk2，ｑk4，ｑk5となっても、エネルギーが高くなる方向に変化でき、局所解から脱出できる。ノイズの振幅が、Ｗ２、Ｗ３と徐々に小さくなるにつれて、解の変化は制限されていき、最終的に、最適解（エネルギーが最小値となる解）ｑk3に収束する。
【０１１９】
ただ、シミュレーテッド・アニーリングでは、最適解への収束時間が長いため、状態の更新を許容するニューロン回路の選択回数を、ｃｎｔ１に制限している。よりエネルギーが小さくなる解を求めるために、後述の量子モンテカルロ法などを用いることができる。
【０１２０】
図１６に示されている処理において、選択回数が、回数ｃｎｔ１に達したときには（ステップＳ６：ＹＥＳ）、制御回路１２は、回数ｃｎｔ１の選択の前後で状態が変化したニューロン回路の内部アドレスと、変化後の状態の値とをルータ１３に通知する。
【０１２１】
ルータ１３は、内部アドレスと、変化後の状態の値とを含む更新信号を、たとえば、バス４ａ，４ｂを用いてブロードキャストする。ニューロン回路１０ａ１〜１０ａｎの数をｎ＝１０２４とした場合、最大で、１０２４個の更新信号がブロードキャストされる。たとえば、ニューロン回路の内部アドレスが小さい順に更新信号がブロードキャストされる。
【０１２２】
このとき、制御装置３は、イジング装置２ａ１〜２ａｍ（イジング装置２ａｋを除く）に、更新信号がブロードキャストされるように、前述の方法でモード設定値を設定する（ステップＳ７）。
【０１２３】
更新信号を受けたイジング装置では、自身に含まれるニューロン回路に対する接続先ニューロン回路の状態が変更されているときには、そのニューロン回路のローカルフィールド値を更新する（ステップＳ８）。
【０１２４】
図１９は、更新信号の受信側のイジング装置での動作の一例を説明する図である。
図１９では、図１に示したイジング装置２ａｋを例にして説明する。ルータ１３などについては図示が省略されている。
【０１２５】
選択回路１２ａ１〜１２ａｎは、図１に示した制御回路１２に含まれる。制御回路１２は、バス４ａ，４ｂや送受信回路１４ｂを介して、更新信号として、アニールチップに含まれるニューロン回路のうち、状態が変化したニューロン回路の内部アドレスと、変化後の状態の値とを受信する。
【０１２６】
たとえば、アニールチップのチップアドレスとして、ｘがバス４ｂで供給されている状態で、制御回路１２が、更新信号として、内部アドレス＝２を受けると、制御回路１２は、接続先情報１１ａ１，１１ａ２，…，１１ａｎを参照する。接続先情報１１ａ１〜１１ａｎには、ニューロン回路１０ａ１〜１０ａｎのそれぞれの接続先ニューロン回路の内部アドレス、接続先ニューロン回路が含まれるイジング装置のチップアドレス、重み値の識別情報が対応付けられている。
【０１２７】
図１９に示すように、チップアドレス＝ｘ、内部アドレス＝２は、接続先情報１１ａ１に含まれている。このとき、選択回路１２ａ１は、更新信号として受信した、状態が変化したニューロン回路の変化後の値を、ニューロン回路１０ａ１に供給する。
【０１２８】
なお、図示を省略しているが、接続先情報１１ａ１において、チップアドレス＝ｘ、内部アドレス＝２に対応した重み値の識別情報に基づいて、重み値の選択のための選択信号もニューロン回路１０ａ１に供給される。
【０１２９】
その選択信号と、更新した状態の値とに基づいて、ニューロン回路１０ａ１は、ローカルフィールド値を更新する。
その後、制御装置３は、アニールチップの選択回数が、予め決められた回数ｃｎｔ２に達しないときは（ステップＳ９：ＮＯ）、再びステップＳ４の処理を行う。
【０１３０】
アニールチップの選択回数が、回数ｃｎｔ２に達したときは（ステップＳ９：ＹＥＳ）、制御装置３は、アニール動作を終了する。
なお、上記の処理ステップの順序は、上記の例に限定されるものではない。たとえば、制御装置３は、モード設定値の設定を、ステップＳ４の処理後に行ってもよい。
【０１３１】
また、上記の例では、選択回数がｃｎｔ１に達すると、更新信号がブロードキャストされるものとしたが、ニューロン回路が１回選択されるごとに、更新信号がブロードキャストされるようにしてもよい。
【０１３２】
以上のような処理後に、制御装置３は、全ニューロン回路の状態を読み出すことで、問題の解を得る。たとえば、スキャンチェーンを用いて、全ニューロン回路の状態を読み出すことができる。
【０１３３】
読み出した状態は、たとえば、制御装置３に接続される図示しない表示装置に表示される。
以上のような情報処理装置１によれば、複数のニューロン回路をもつイジング装置２ａ１〜２ａｍのそれぞれが、接続先のニューロン回路とそれが含まれるイジング装置のアドレスを含む接続先情報を記憶するメモリと、接続先が変更可能なルータを有する。そして、イジング装置２ａ１〜２ａｍのそれぞれで、ルータを介して得た他のイジング装置のニューロン状態を、接続先情報に基づき自身のニューロン回路に反映する。これによって、ニューロン回路間の接続数を増やせ、大規模な演算が可能となる。
【０１３４】
たとえば、変数の数が１０3から１０6以上となるような最適化問題を１チップの集積回路で演算することは難しいが、上記の情報処理装置１によれば、多数のチップを用いて１つのイジング装置として機能させることもできるため、演算が容易になる。
【０１３５】
図２０は、本実施の形態の情報処理装置で実現されるニューラルネットワークのイメージ図である。
図２０の例では、８つのニューロン（たとえば、ニューロン８０ａ）が互いに接続されている６つのニューロン部（たとえば、ニューロン部８０）が、相互接続されているニューラルネットワークが示されている。
【０１３６】
１つのニューロン部は、１つのイジング装置（チップ）に相当し、１つのニューロンは１つのニューロン回路に相当する。
なお、問題のマッピング時（重み値の設定＝プログラミング）時にニューロン部間の接続数が制約となるが、ニューロン部内での接続数の１／１０程度の接続があれば多くの場合問題なくプログラミングが可能である。
【０１３７】
（第２の実施の形態）
図２１は、第２の実施の形態の情報処理装置の一例を示す図である。図１に示した要素と同じ要素については同一符号が付されている。
【０１３８】
第２の実施の形態の情報処理装置１ａは、イジング装置間（チップ間）の接続トポロジが、図１に示した情報処理装置１と異なっている。
情報処理装置１ａは、チップ間の接続トポロジが、１次元トーラスである。マトリクス状に配置されたイジング装置２ａ１〜２ａｍにおいて、同一行に配列された複数のイジング装置のうち、行の両端のイジング装置同士がバスで接続されている。
【０１３９】
たとえば、図２１に示すように、１行目に配列された複数のイジング装置のうち、両端のイジング装置２ａｘ，２ａｍは、バス４ａ１，４ｂ１，４ｃ１で接続されている。
このような接続トポロジを採用することで、マトリクス状に配置したイジング装置２ａ１〜２ａｍによるアレーの周辺部のイジング装置で、送受信回路が使用されなくなることを抑制できる。このため、バンド幅や接続数が減少することが抑制される。
【０１４０】
なお、１次元トーラスの別の例として、同一列に配列された複数のイジング装置のうち、列の両端のイジング装置同士がバスで接続されていてもよい。
（第３の実施の形態）
図２２は、第３の実施の形態の情報処理装置の一例を示す図である。図２に示した要素と同じ要素については同一符号が付されている。
【０１４１】
第３の実施の形態の情報処理装置１ｂは、イジング装置間（チップ間）の接続トポロジが、図２１に示した情報処理装置１ａと異なっている。
情報処理装置１ｂは、チップ間の接続トポロジが、２次元トーラスである。マトリクス状に配置されたイジング装置２ａ１〜２ａｍにおいて、同一行に配列された複数のイジング装置のうち、両端のイジング装置がバスで接続されているとともに、同一列に配列された複数のイジング装置のうち、両端のイジング装置もバスで接続されている。
【０１４２】
たとえば、図２２に示すように、１列目に配列された複数のイジング装置のうち、列の両端のイジング装置２ａ１，２ａｍは、バス４ａ２，４ｂ２，４ｃ２で接続されている。
このような接続トポロジを採用することで、マトリクス状に配置したイジング装置２ａ１〜２ａｍによるアレーの周辺部のイジング装置で、送受信回路が使用されなくなることをさらに抑制できる。このため、バンド幅や接続数が減少することがさらに抑制される。
【０１４３】
（計算高速化手法）
前述したようにシミュレーテッド・アニーリングでは、最適解が得られるまで時間がかかるため、以下に示すような計算高速化手法を用いることが望ましい。
【０１４４】
図２３は、並列化による高速化手法を説明する図である。
制御装置３は、たとえば、全ニューロン回路９１ａ１〜９１ａＭを、同一問題をマッピングした複数のアンサンブル９０ａ１，９０ａ２，…，９０ａｚに分ける。アンサンブル９０ａ１〜９０ａｚのそれぞれに含まれる複数のニューロン回路間の接続関係（重み値の設定に相当する）は、アンサンブル９０ａ１〜９０ａｚ間で同一となっている。また、異なるアンサンブルに属するニューロン回路は接続されないように重み値が設定される。
【０１４５】
制御装置３は、アンサンブル９０ａ１〜９０ａｚのそれぞれを用いて、並列にアニール動作を実行する。なお、アンサンブル９０ａ１〜９０ａｚ間では同じ温度（ノイズ幅）が用いられる。
【０１４６】
そして、制御装置３は、アニール動作後に得られるアンサンブル９０ａ１〜９０ａｚでのエネルギーの値を比較し、最小のエネルギーとなるアンサンブルに含まれるニューロン回路の状態の組み合わせを、問題の解として選択する。
【０１４７】
このように、同じ問題を、複数のアンサンブル９０ａ１〜９０ａｚを用いて並列に解くことで、アニール動作の時間（たとえば、図１６に示した回数ｃｎｔ１，ｃｎｔ２）を減らしても、より最適解に近い値が得られる。
【０１４８】
図２４は、並列化による演算の高速化効果を示す図である。
図２４では、ランダムに発生した問題に対して、図２３のアンサンブル９０ａ１〜９０ａｚのそれぞれを１チップ（１つのイジング装置）として並列演算を行ったときに、目標正解率が９９％となるクロックサイクル数のシミュレーション結果が示されている。クロックサイクル数は、図２に示したニューロン回路１０ａ１〜１０ａｎのレジスタ２５ａ１〜２５ａｎに供給されるクロック信号のサイクル数である。また、アンサンブル９０ａ１〜９０ａｚは、それぞれ６４個のニューロン回路を有しているものとする。
【０１４９】
図２４において、縦軸がクロックサイクル数であり、横軸が並列化数（チップ数）である。
図２４に示すように、目標正解率が９９％となるクロックサイクル数は、並列化数を増やすほど減少し、たとえば、並列化数を１００とすると、並列化しない場合よりも、３桁以上、クロックサイクル数を少なくすることができる。つまり、演算を高速化できる。
【０１５０】
計算高速化手法として、量子モンテカルロ法を適用することもできる。
図２５は、量子モンテカルロ法による高速化手法を説明する図である。図２５において、図２３に示した要素については同一符号が付されている。
【０１５１】
量子モンテカルロ法では、図２３に示した並列化手法と同様に、複数のアンサンブル９０ａ１〜９０ａｚのそれぞれに同一の問題がマッピングされるが、隣接するアンサンブル間のニューロン回路間は接続されている（重み値が１である）。たとえば、ニューロン回路９１ａ１，９１ａｉ，９１ａｊは接続されている。
【０１５２】
制御装置３は、問題を、ｚ個のアンサンブル９０ａ１〜９０ａｚで構築された大きな問題としてみなして解く。
量子モンテカルロ法についての詳細な説明は省略する。量子モンテカルロ法については、M. Suzuki, Relationship between d-Dimensional Quantal Spin Systems and (d+1)-Dimensional Ising Systems, Progress of Theoretical Physics 56,1454 (1976)や、G. E. Santoro, R. Martonak, E. Tosatti, and R. Car, Theory of Quantum Annealing of an Ising Spin Glass, Science 295, 2427 (2002)に記載されている。
【０１５３】
（ニューロン回路の他の例）
図２６は、図２のニューロン回路とは異なるニューロン回路をもつイジング装置の一例を示す図である。
【０１５４】
イジング装置２ｂは、レジスタ２０ｂ１，２０ｂ２，２０ｂ３，…，２０ｂＮを有する。レジスタ２０ｂ１〜２０ｂＮには、チップ内のニューロン回路同士の接続の強さを示す重み値と、チップ内のニューロン回路と、チップ外のニューロン回路の接続の強さを示す重み値が格納されている。
【０１５５】
たとえば、チップ内のニューロン回路数をｎとすると、レジスタ２０ｂ１には、チップ内の１番目のニューロン回路とチップ内のその他のニューロン回路の間の接続の強さを示す重み値Ｗ12，Ｗ13，…，Ｗ1nが格納されている。
【０１５６】
また、チップ内のニューロン回路が接続するニューロン回路数をＮ−ｎとする。このときレジスタ２０ｂＮには、チップ内のニューロン回路が接続するＮ−ｎ番目のチップ外のニューロン回路とチップ内のニューロン回路の間の接続の強さを示す重み値ＷN1，ＷN2，…，ＷNnが格納される。
【０１５７】
また、イジング装置２ｂは、複数のニューロン回路を有している。図２６では、たとえば、ｎ個のニューロン回路のうち、ｉ，ｊ，ｋ番目のニューロン回路１０ｂｉ，１０ｂｊ，１０ｂｋが示されている。
【０１５８】
ニューロン回路１０ｂｉ，１０ｂｊ，１０ｂｋは、それぞれ、選択回路２１ｂｉ，２１ｂｊ、２１ｂｋ、乗算回路２３ｂｉ１〜２３ｂｉＮ，２３ｂｊ１〜２３ｂｊＮ，２３ｂｋ１〜２３ｂｋＮ、加算部２４ｂｉ，２４ｂｊ，２４ｂｋを有している。さらにニューロン回路１０ｂｉ，１０ｂｊ，１０ｂｋは、それぞれ、ｎｏｉｓｅ＆ｂｉａｓ回路２６ｂｉ，２６ｂｊ，２６ｂｋ、比較回路２７ｂｉ，２７ｂｊ，２７ｂｋを有している。
【０１５９】
このようなニューロン回路１０ｂｉ，１０ｂｊ，１０ｂｋは、それぞれ、式（２）に示したようなローカルフィールド値を求め、さらにノイズ値を加え、閾値との比較結果を出力するものである。
【０１６０】
以下、ニューロン回路１０ｂｉを例にして説明する。
選択回路２１ｂｉは、ランダム信号生成回路１５ａから出力される１〜ｎの何れかの選択信号に基づき、レジスタ２０ｂ１〜２０ｂＮの何れかに記憶されている重み値群を選択して出力する。
【０１６１】
乗算回路２３ｂｉ１〜２３ｂｉＮのそれぞれは、制御回路１００から出力されるＮ個のニューロン回路の状態と、重み値とを掛けあわせる。
加算部２４ｂｉは、乗算回路２３ｂｉ１〜２３ｂｉＮから出力される値を積算する。
【０１６２】
比較回路２７ｂｉは、加算部２４ｂｉから出力される値に、ｎｏｉｓｅ＆ｂｉａｓ回路２６ｂｉから出力されるノイズ値とバイアス値とを加えた値と、閾値との比較結果を出力する。
【０１６３】
制御回路１００は、ルータ１３を介して他のチップのニューロン回路の更新後の値と、そのニューロン回路を含むチップのチップアドレスとニューロン回路の内部アドレスを受ける。そして、制御回路１００は、前述した接続先情報７０に基づき、そのチップ外のニューロン回路がイジング装置２ｂ内のニューロン回路の接続先に指定されているとき、更新後の値を、ニューロン回路１０ｂｉ，１０ｂｊ，１０ｂｋに反映させる。
【０１６４】
以上のようなイジング装置２ｂについても同様の効果が得られる。
以上、実施の形態に基づき、本発明の情報処理装置、イジング装置及び情報処理装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１６５】
１  情報処理装置
２ａ１〜２ａｍ，２ａｋ  イジング装置（チップ）
３  制御装置
４ａ〜４ｃ  バス
５  信号線
１０ａ１〜１０ａｎ  ニューロン回路
１１  メモリ
１１ａ  接続先情報
１２  制御回路
１３  ルータ
１３ａ  モードレジスタ
１４ａ〜１４ｄ  送受信回路
【図１】
0006659957.tif 000007
【図２】
0006659957.tif 000008
【図３】
0006659957.tif 000009
【図４】
0006659957.tif 000010
【図５】
0006659957.tif 000011
【図６】
0006659957.tif 000012
【図７】
0006659957.tif 000013
【図８】
0006659957.tif 000014
【図９】
0006659957.tif 000015
【図１０】
0006659957.tif 000016
【図１１】
0006659957.tif 000017
【図１２】
0006659957.tif 000018
【図１３】
0006659957.tif 000019
【図１４】
0006659957.tif 000020
【図１５】
0006659957.tif 000021
【図１６】
0006659957.tif 000022
【図１７】
0006659957.tif 000023
【図１８】
0006659957.tif 000024
【図１９】
0006659957.tif 000025
【図２０】
0006659957.tif 000026
【図２１】
0006659957.tif 000027
【図２２】
0006659957.tif 000028
【図２３】
0006659957.tif 000029
【図２４】
0006659957.tif 000030
【図２５】
0006659957.tif 000031
【図２６】
0006659957.tif 000032