(57)【要約】【課題】イジングモデルの相互作用の要素を行列と見たときの特徴を利用することにより、相互作用の素子数を減少させ、チップ上のレイアウト面積の削減を図る。【解決手段】半導体装置を、各スピンの状態を格納するスピンブロックと、各スピンについての他のスピンとの相互作用であって、行列ｉ,ｊで表現した場合にｉ≧ｊ又はｉ≦ｊとなる相互作用を格納する半減相互作用ブロックと、スピンの状態と相互作用とに基づいてスピンの状態を計算し、スピンの状態を更新する計算ブロックと、計算対象となるスピンの各々について、スピンの状態とスピン間の相互作用とを読み出して、計算対象となるスピンの各々の状態を計算させ更新させる制御回路と、を含んで構成する。【選択図】図５
2020052913.tif 000002
【特許請求の範囲】
【請求項１】
各スピンの状態を、全スピン間の相互作用を用いて計算するイジングモデルを構成する半導体装置であって、
各スピンの状態を格納するスピンブロックと、
各スピンについての他のスピンとの相互作用であって、行列ｉ,ｊで表現した場合にｉ≧ｊ又はｉ≦ｊとなる相互作用を格納する半減相互作用ブロックと、
前記スピンの状態と前記相互作用とに基づいて前記スピンの状態を計算し、前記スピンの状態を更新する計算ブロックと、
計算対象となるスピンの各々について、前記スピンの状態とスピン間の前記相互作用とを読み出して、前記計算対象となるスピンの各々の状態を計算させ更新させる制御回路と、
を有する半導体装置。
【請求項２】
矩形の前記半減相互作用ブロックには、前記行列ｉ,ｊで表現される領域において、前記ｉ≧ｊとなる相互作用を配置する場合にはｉ＜ｊに相当する領域、又は前記ｉ≦ｊとなる相互作用を配置する場合にはｉ＞ｊに相当する領域を用いて、所定の順序で前記相互作用を格納する素子を配置する請求項１に記載の半導体装置。
【請求項３】
前記計算ブロックにおいて、スピンσｉ、外場ｈｎ、相互作用Ｊｉｊとし、以下（１）式を用いたエネルギーＥの計算において、各項ごとに対応する前記相互作用Ｊｉｊ、及び前記相互作用Ｊｉｊのｉとｊを入れ替えた相互作用Ｊｊｉであって、前記ｉ≧ｊにおけるｉ＜ｊ、又は前記ｉ≦ｊにおけるｉ＞ｊに相当する相互作用Ｊｊｉを用いて計算を行う請求項２に記載の半導体装置。
【数１】
2020052913.tif 000008
・・・（１）
【請求項４】
前記半減相互作用ブロックに格納する前記ｉ≧ｊ又はｉ≦ｊの相互作用について、ｉ＝ｊの相互作用を省略する請求項１〜３の何れか１項に記載の半導体装置。
【請求項５】
前記制御回路は、スピンの数ｎ、及びスピンσｉのｉの番号に対して予め定められた選択条件に従って前記相互作用を選択して前記計算ブロックによる計算を行わせる請求項１〜４の何れか１項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に係り、特に、イジングモデルを構成する半導体装置に関する。
【背景技術】
【０００２】
昨今、人工知能（ＡＩ）を用いた技術において、ソフトウェア及びハードウェアの両面において開発及び実用化が進められている。
【０００３】
ハードウェア側でみると、末端の機器においてＡＩの処理機能の一部を担わせ、クラウド層と末端機器とが連携することで、処理効率や演算能力の向上を図る技術のニーズが高まっている。
【０００４】
例えば、ＡＩの演算を実行するためのイジングモデル（詳細については後述）を構成する回路において、チップ全体に対して一組の作用アドレスデコーダを設け、構成単位であるスピンユニットを複雑化することなく、少ない乱数発生器でランダム性を供給し、装置の低コスト化及び大規模化を図る技術がある（例えば特許文献１）。
【０００５】
また、所望の係数の値域に対応した相互作用回路を実装するのと比較して、簡易なハードウェア構成で、擬似的に発生させた任意の係数を用いて演算を行う技術がある（例えば特許文献２）。
【０００６】
また、演算結果を変更することが可能な回路を設けることなどにより、回路規模の増加を抑制しながら、局所解に陥る可能性を低減することが可能な、イジングモデル用の半導体集積回路装置を提供する技術がある（例えば特許文献３）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】再公表２０１６−６０７１号公報
【特許文献２】特開２０１６−５１３４９号公報
【特許文献３】再公表２０１６−３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、従来の技術では、イジングモデルを構成するチップにおいては、イジングモデルを構成するために必要なスピン、相互作用、及び計算などを担う各要素が一体となったスピンごとのユニットを多数配置する構成となっており、必要な回路の面積が大きくなってしまい、チップを小型化することが困難であるという、という問題があった。
【０００９】
本発明は、上記事情を鑑みて成されたものであり、イジングモデルの要素を各ブロックによって構成し、かつ、イジングモデルの相互作用の要素を行列と見たときの特徴を利用することにより、相互作用の素子数を減少させ、チップ上のレイアウト面積の削減を図るものである。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明に係る半導体装置は、各スピンの状態を、全スピン間の相互作用を用いて計算するイジングモデルを構成する半導体装置であって、各スピンの状態を格納するスピンブロックと、各スピンについての他のスピンとの相互作用であって、行列ｉ,ｊで表現した場合にｉ≧ｊ又はｉ≦ｊとなる相互作用を格納する半減相互作用ブロックと、前記スピンの状態と前記相互作用とに基づいて前記スピンの状態を計算し、前記スピンの状態を更新する計算ブロックと、計算対象となるスピンの各々について、前記スピンの状態とスピン間の前記相互作用とを読み出して、前記計算対象となるスピンの各々の状態を計算させ更新させる制御回路と、を含んで構成されている。
【発明の効果】
【００１１】
本発明の半導体装置によれば、イジングモデルの要素を各ブロックによって構成し、かつ、イジングモデルの相互作用の要素を行列と見たときの特徴を利用することにより、相互作用の素子数を減少させ、チップ上のレイアウト面積の削減を図るものである。
【図面の簡単な説明】
【００１２】
【図１】全相互作用を実現するイジングモデルの一例を示す図である。
【図２】参考例に係る半導体装置の構成を示すブロック図である。
【図３】参考例に係る半導体装置の詳細な回路構成の一例を示す図である。
【図４】イジングモデルを実現する半導体装置の構成の一例を示す図である。
【図５】半導体装置の構成において、相互作用の素子を半減する場合の一例を示す図である。
【図６】本発明の実施の形態における相互作用の素子を半減する半導体装置の構成の一例を示す図である。
【図７】本発明の実施の形態に係る半導体装置の構成を示すブロック図である。
【図８】計算における相互作用の選択方法を示す図である。
【図９】本発明の実施の形態に係る半導体装置の構成において、ｉ＝ｊの相互作用を省略した変形の一例を示す図である。
【図１０】本発明の実施の形態に係る半導体装置の構成において、他の配置方法の変形の一例を示す図である。
【図１１】本発明の実施の形態に係る半導体装置の構成において、他の配置方法の変形の一例を示す図である。
【図１２】参考例の半導体装置の構成において、スピン数が偶数の場合の一例を示す図である。
【図１３】本発明の実施の形態に係る半導体装置の構成において、スピン数が偶数の場合の一例を示す図である。
【図１４】本発明の実施の形態に係る半導体装置の構成において、選択回路を含む制御回路２２０を配置した場合の一例を示す図である。
【図１５】選択回路における選択条件を用いた相互作用の選択のフローを示す図である。
【図１６】選択信号線を含めた半減相互作用ブロックの詳細の一例を示す図である。
【図１７】選択回路の詳細の一例を示す図である。
【発明を実施するための形態】
【００１３】
本発明の実施の形態について説明する前に、本発明の実施の形態における技術に至った背景、及びイジングモデルの基本的な原理について説明する。また、イジングモデルを発展させた全相互作用のイジングモデル、及び半導体装置の構成の参考例について説明した上で、本実施の形態の技術について説明する。
【００１４】
＜背景＞
まず、本発明の実施の形態における技術を提案するに至った背景について説明する。
【００１５】
近年、最適化問題を解く能力を備えた装置により、情報処理能力を向上させ（AI on Things）、IoTの社会への普及をさらに躍進させるべく開発が行われている。その一環としてイジングモデル（非特許文献１参照）のハード化が進められているが、イジングモデルの実装は膨大な数の相互作用を必要とするため困難であるという課題がある（非特許文献２参照）。
【００１６】
［非特許文献１］小野涼斗，染谷健太，河原尊之，“実数変数最適化問題の2進数展開によるイジングモデルへの変換”，電子情報通信学会総合大会，A-1-16，2016.
［非特許文献２］K.Someya，R.Ono，T.Kawahara，“Novel Ising Model Using Dimension-Control for High-Speed Solver for Ising Machines”，Paper ID 4137，Session B2P-F，NEWCAS 2016.
【００１７】
＜イジングモデルの原理＞
ここで、イジングモデルの基本的な原理について説明する。イジングモデルとは一様な格子点に、２つの状態のみをとるスピンを持つ格子模型であり、系全体のエネルギーはスピンの状態σi,σｊ∈{１,−１}、スピン間の相互作用Ｊi,j及び外部磁場係数ｈiの影響によって以下のように定まる。
【００１８】
【数１】
2020052913.tif 000003
・・・（１）
【００１９】
ここで<ｉ,ｊ>はスピンｉ,ｊが隣接間であることを示している。
【００２０】
また、従来の隣接間での相互作用を実現するイジングモデルの回路構成では、スピン毎に、当該スピンの状態の格納、隣接スピンとの間の相互作用の格納、及び計算などを担う各要素が一体となったユニットを多数配置する構成となっている。
【００２１】
また、隣接間での相互作用するのではなく全ての組合せで相互作用させる全相互作用を考慮したモデルも存在する。これらのモデルは、相互作用Ｊｉ,ｊ及び外部磁場係数hiに値を与えエネルギー（単位は任意）が最小となる基底状態を求めることで、任意の最適化問題の解を与えることができる。
【００２２】
＜全相互作用のイジングモデル＞
ここで、全相互作用を隣接スピン間のみで表現可能とするイジングモデルの一例について説明する。
【００２３】
例えば、全相互作用を実現するイジングモデルとして、図１に示すように、スピン層を２層用意し、それらを便宜上、上層及び下層として表現する。図１では、上層に存在するスピンを点線で示し、下層に存在するスピンを実線で示している。図１の上層に存在する点線のスピンは、当該スピンと近接する２つの下層スピンと接続され、接続にスピン番号に対応した相互作用を持つ。当該スピンが全てのスピンと相互作用を持つよう必要数を横に並べることにより、当該スピンが全てのスピンと相互作用することを実現している。これは近接スピン間によって全相互作用が表せるため実装が容易である。本モデルではある上層スピンが、全てのスピンに対応する下層スピンとの相互作用により、横に接続された上層の同一スピンの各々の状態を決定し、決定された状態を合わせることで、最終的な当該スピンの状態が決定される。そして、決定された当該スピンの状態を、下層の同一スピンにフィードバックするまでを１サイクルとして各サイクルを繰り返すことにより全相互作用を実現できる。このようにしてイジングモデルにおいて各スピンの状態を、全スピンの相互作用を用いて計算することができる。
【００２４】
ここで、全相互作用を隣接スピン間のみで表現可能とするイジングモデルに対して、従来のイジングモデルの回路構成と同様に構成した場合には、イジングモデルを構成するために必要なスピンの状態の格納、相互作用の格納、及び計算などを担う各要素が一体となったユニットを多数配置する構成となり、必要な回路の面積が大きくなってしまうという問題があった。
【００２５】
そこで参考例においては、図２に示すように、スピンの状態を格納する要素（素子）を集約したスピンブロック、相互作用を格納する要素（素子）を集約したスピンブロック、相互作用ブロック、及び計算ブロックに分離するものとし、回路に必要な面積が低面積であり、かつ、高速な演算が可能な回路を実現するものとした。
【００２６】
＜半導体装置の参考例＞
次に、上記の全相互作用のイジングモデルを実装する半導体装置の参考例を説明する。この参考例で説明する半導体装置は、本発明の実施の形態の技術の前提となる構成である。
【００２７】
上記イジングモデルを実装する半導体装置１００の基本的な回路構成を図２に示す。図２に示す半導体装置１００は、制御回路２０と、乱数発生器２２と、相互作用ブロック２６と、スピンブロック２８と、計算ブロック３０とにより構成される回路である。
【００２８】
制御回路２０は、計算対象となるスピンついて、外部磁場係数、相互作用、及び各スピンの状態を読み出して、計算対象となるスピンの状態を計算ブロック３０に計算させ、スピンの状態を更新させる。
【００２９】
乱数発生器２２は、スピンの値を所定確率で反転させるための０−１間の乱数を発生させ、計算ブロック３０に出力することにより、計算対象となるスピンの値を反転させる。
【００３０】
外場ブロック２４には、個々のスピンに対するバイアスである外部磁場係数ｈ（以下、外場ｈとも表記する）の各々を格納する素子が配置される。
【００３１】
相互作用ブロック２６には、各スピン間に対応する相互作用Ｊの各々を格納する素子が配置される。
【００３２】
スピンブロック２８には、スピンの各々の状態σを格納する素子が配置される。
【００３３】
計算ブロック３０は、入力された各スピン間の相互作用Ｊ、各スピンの状態σ、各スピンの外場ｈに基づいて、計算対象となる各スピンの状態を計算し、更新する。
【００３４】
図３に半導体装置１００の詳細な回路構成の一例を示す。
【００３５】
ＰＬＡ（Programmable Logic Array）は、回路構成を再設定可能なアレイであり、ＡＮＤアレイ、ＯＲアレイの書き換えがプログラミングにより可能な集積回路である。ＰＬＡは、稼動層指定線により、入力層の数ｎに対して稼動させる必要があるスピンの層（スピン、相互作用係数、及び外部磁場係数の各層）を決定し、プログラムにより必要な論理回路を構成する。ＰＬＡが、制御回路２０の一例である。
【００３６】
ＭＵＸ（Multiplexer）は、複数の信号を入力として受け取り、選択して出力する回路である。ＭＵＸは、入力層指定線により入力層の数ｎを受け取る。また、データ入力用ＣＬＫにより各スピンに対応した相互作用係数、及び外部磁場係数等の入力を受け付ける。
【００３７】
図３に示す論理回路では、外場ブロック２４に外部磁場係数のユニットとしてｈ１〜ｈ６が構成される。相互作用ブロック２６の相互作用係数のユニットとしてＪ１１〜Ｊ６１、Ｊ１２〜Ｊ６２が構成される。スピンブロック２８のスピンユニットとしてσ１、σ２が構成される。
【００３８】
また、乱数発生器２２である各ＲＮＧにより乱数を発生させ、発生させた乱数に、仮想的な温度ｔから決まる確率を与えて、得られた値によって任意のスピンを反転させる。
【００３９】
計算ブロック３０は、スピンブロック２８のスピンの状態σと相互作用ブロック２６のσに対応する相互作用係数ｈとの演算結果、乱数発生器２２で発生させた乱数と温度による確率とから定まる値、及び外場ｈとに基づいて、各スピンの状態を計算し、該スピンに状態をフィードバックすると共に、各スピンの状態を、ＳＲ（Solder Resist）及びスピン状態出力線を介してスピンブロック２８に出力する。
【００４０】
計算ブロック３０では、複数のスピンの組み合わせを計算対象として同時に計算する。
【００４１】
ただし、
2020052913.tif 000004
は、ビット毎のＡＮＤアレイの演算を表す。
【００４２】
2020052913.tif 000005
は、ビット毎のＯＲアレイの演算を表す。回路では、ＡＮＤアレイ又はＯＲアレイに対応する上記記号がスピン状態に関する演算部分であり、演算を行う素子が配置されているものとする。
【００４３】
なお、本構成は一例であり、ＰＬＡによってプログラミングされた構成に応じて論理回路を構成することができる。
【００４４】
図２の基本構成よりも具体化し、図３の詳細より抽象化した図として、図４に、半導体装置１００の回路構成の一例を示す。半導体装置１００の回路は、外場ブロック２４と、相互作用ブロック２６と、スピンブロック２８と、計算ブロック３０とからなる。スピンブロックは、各スピンに対する、スピンσｉの状態を格納する素子を配置した単位回路、及び相互作用ブロックから読み出した信号との積を計算する素子を配置した単位回路から構成されている。相互作用ブロックは、各スピンに対するスピン間との全ての相互作用Ｊｉｊを格納する単位回路から構成されている。なお、ここでいう単位回路とは、回路全体に配置するスピンσｉの数であるｉ（ｉ＝１,...,ｎ）を単位として、各ブロックにおいて、当該スピンσｉの状態の計算に必要になる各種素子を、ｉの数に対応するように並べて配置した回路を意味する。
【００４５】
図４の回路構成では、以下（２）式のようなイジングモデルのエネルギーを表すことができ、組み合わせ最適化問題の評価関数の等価な表現でもある。
【００４６】
【数２】
2020052913.tif 000006
・・・（２）
【００４７】
上記（２）式を計算し、これが減少するように各スピンを更新することができる。値の減少がほぼ止まるときのスピンの状態が、イジングモデルの安定状態であると共に組み合わせ最適化問題の解となるのである。
【００４８】
＜本発明の実施の形態の原理＞
以上を踏まえて、本発明の実施の形態の原理について説明する。本発明の実施の形態は、イジングモデルの要素を各ブロックによって構成する点で参考例と共通しているが、本発明の実施の形態では、更に行列ｉ,ｊで表現した場合に相互作用Ｊｉｊの要素が対称行列であるという特徴に着目する。対称行列であるということは、すなわち図４の相互作用ブロック２６のｉ≧ｊの部分は、ｊ≧ｉの部分と同じ値が、行列として対称に並んでいることになる。例えば、上記図４の例でいえば、対称行列であるので、例えばＪ１２とＪ２１は同じ値となっているのである。これは同じ値となる相互作用の素子を重複して配置しないようにすることで、相互作用の素子の数を半減できることを意味する。
【００４９】
そこで、本発明の実施の形態では、行列において、ｉ≧ｊ又はｉ≦ｊとなる要素に対応する相互作用の素子のみを回路に搭載することにより、相互作用の素子数を、参考例に比べてほぼ半減させる。これにより、高速、かつ、より低面積な回路を実現することができる、という効果が得られる。
【００５０】
また、以下にスピンの状態の更新方法もより小型化に適したものを開示する。イジングモデルの回路では、エネルギーが低い方向へ変化さえすれば良いので、以下（３）式のように式を変形して、スピンσｉごとに項を展開してエネルギーＥを計算する。
【００５１】
【数３】
2020052913.tif 000007
・・・（３）
【００５２】
スピンσｉについて各項ごとに計算していく。すなわち、第１項の計算では、上記図４の例では、相互作用ブロック２６において、Ｊ１１、Ｊ１２、Ｊ１３、Ｊ１４の行、外場ブロック２４においてｈ１を選び、その各素子の内容をスピンブロック２８に送る。するとスピンブロック２８では、Ｊ１,ｊσｉとｈ１が計算され、スピン状態に関する演算部分にて（ΣｉＪ１,ｊσｉ＋ｈ１）が計算され、計算結果の符号の値が求まる。ここで、スピンσ１の値とこの計算結果の符号の値とを比較することで、スピンσ１の更新状態を決定することができる。決定された更新状態は、スピンσ１へ戻され、スピンσ１が更新される。この計算、比較、及び更新状態の決定を繰り返すことによって、イジングモデルのエネルギーＥが減少するように、スピンの状態を更新することができるのである。その時のエネルギーの値は、外場ｈｉと相互作用Ｊｉｊが与えられた問題では一定であるので、計算することができるのである。上記の参考例の構成では、外場ブロック２４と、相互作用ブロック２６と、スピンブロック２８と、スピン状態演算を行う計算ブロック３０とに分離することによって、回路に必要な面積が低面積であり、かつ、高速な演算が可能な回路を実現できるという特徴があった。
【００５３】
次に、本発明の実施の形態において、相互作用の素子数を半減させる場合の回路構成を図６に示すが、まず、図５に相互作用を半減した状態を示している。図５は上記図４において、相互作用Ｊｉｊは行列表現としては対称行列となるため、相互作用の素子の数を半減させることができることを説明するものである。図５は、ｉ＞ｊの相互作用Ｊｉｊを省いた状態の図となっている。なお、ｉ＝ｊの場合も含ませて、ｉ≧ｊを省いても良い。ｉ＝ｊとはそのスピン自身との結合であるため、この係数は１で良いか、計算の種類によっては省くことができるためである。
【００５４】
図５のように相互作用の素子数を半減させた場合で、図４と同様の計算を行うためには、図６にその主要部分を示した実施の構成例のように、半減した相互作用Ｊｉｊの配置及び結線の結果として、矩形の半減相互作用ブロック２２６を構成する。また、後に説明するようなその選択方法を取る。すなわち、図６では、矩形の半減相互作用ブロック２２６にて、行列ｉ,ｊにおいてｉ≦ｊとなる相互作用Ｊｉｊを配置する。この時、図５におけるＪ４４,Ｊ４５,Ｊ５５を、Ｊ１１,Ｊ２２,Ｊ３３の横に、省いたｉ＞ｊの相互作用Ｊｉｊの部分を埋めるように図６のように配置する。相互作用Ｊｉｊは、ひとつ又は２つの出力端子を持っており、各相互作用Ｊｉｊにおいてそのどちらかに同じ値を出力する。また、一般的にはスピン数がｎで奇数の場合には、図５においてＪｎｎをＪ１１の下になるように図６に倣って配置し、Ｊ(ｎ−１)ｎＪ(ｎ−２)ｎをその下に同様に図６に倣って配置すればよい。スピン数がｎで偶数の場合は後述する。このように矩形の半減相互作用ブロック２２６では、スピン数が奇数か偶数であるかに応じて、所定の順序で相互作用を格納する素子を配置すればよい。この配置において、各相互作用Ｊｉｊとスピンσｊとを電気的に結線する。この時、ｉ≦ｊのみのＪｉｊとなるため、ｉ＞ｊの部分はこのｉとｊを入れ替えたものに対応する相互作用Ｊｊｉを用いる。このために、スピンσ１は相互作用Ｊ１１,Ｊ１２〜Ｊ１５と電気的に接続できるように接続するが、例えば、スピンσ３は相互作用Ｊ３３,Ｊ３４,Ｊ３５と共に、相互作用Ｊ１３,Ｊ２３と接続できるようにする。更にスピンσｊのｊが(ｎ＋１)／２よりも大きい場合は、例えばスピンσ４のように、Ｊ１４,Ｊ２４,Ｊ３４とｊが(ｎ＋１)／２に達するまでには、相互作用Ｊｉｊはｊを増やすように、つまり図６で下へ選択していくが、(ｎ＋１)／２より大きいと対称なスピンを使う必要があるので、Ｊ４４,Ｊ４５へ電気的に接続できるようにする。また、外場ｈｉは図６では半減相互作用ブロック２２６の並びに準じて、２つの列に分けたがこれはひとつの線にｈｉを接続しても良い。いずれの場合も計算時に選択するスピンに応じて外場を選択することができる。本実施の形態では、半減相互作用ブロック２２６として、相互作用Ｊｉｊの素子ついて、ｉ≦ｊの部分のみを残して素子を配置し、ｉ＞ｊの部分の素子は配置しないことにより矩形の小面積となることが特徴である。これによって相互作用の素子の数がおよそ半減するのである。例えば、外場ｈｉを考慮しない場合であっても、１００個のスピンがあるとすると、その全相互作用の数は１万個となる。本実施の形態では、これが半減しおよそ５０００個となる。１０００個のスピンでは、スピンの数は１０００個から２０００個になるが、相互作用の個数としては１００万個がおよそ５０万個になる。本実施の形態によって構成すれば、半減相互作用ブロック２２６では信号線は増え、選択のための若干の回路が追加されるが、回路全体での面積の減少は大きいといえる。
【００５５】
＜本発明の実施の形態の半導体装置の構成＞
図７に本発明の実施の形態の半導体装置２００の基本的な回路構成を示す。図７は、上記図６を用いて説明した回路における各ブロックの関係を抽象化したブロック図である。なお、参考例と同様となる箇所については説明を省略する。
【００５６】
図７に示す半導体装置２００は、制御回路２２０と、乱数発生器２２と、外場ブロック２２４と、半減相互作用ブロック２２６と、スピンブロック２２８と、計算ブロック２３０とにより構成される回路である。
【００５７】
外場ブロック２２４には、外場ｈｉを格納する素子が配置される。
【００５８】
半減相互作用ブロック２２６には、各スピンについての他のスピンとの相互作用であって、行列ｉ,ｊで表現した場合にｉ≧ｊ又はｉ≦ｊとなる相互作用Ｊｉｊを格納する素子が配置される。半減相互作用ブロック２２６は矩形として配置することができる。なお、上記の原理の説明で述べたようにｉ＝ｊに相当する相互作用は定数として省略しても良い。
【００５９】
スピンブロック２２８には、スピンを格納する素子が配置される。スピンブロック２２８は、半減相互作用ブロック２２６の行方向の上辺に対応する位置に配置する。
【００６０】
計算ブロック２３０では、半減相互作用ブロック２２６のＪｉｊ及び外場ブロックｈｉを用いた計算結果Ｊｉｊσｉσｊに基づいて、スピンσｉ又はスピンσｊの状態を計算し、スピンσｉ又はスピンσｊの状態を更新する。具体的な更新手法は上記（３）式の説明で示した通りである。
【００６１】
制御回路２２０は、計算対象となる複数のスピンの組み合わせについてのスピン間の相互作用及び各スピンの状態を読み出して計算対象となる各スピンの状態を計算ブロック２３０に計算させ、スピンの状態を更新させる。
ここで、制御回路２２０によってスピンの状態を更新させる流れについて説明する。制御回路２２０は、スピンブロック２２８のσｉを半減相互作用ブロック２２６に入力させる。制御回路２２０は、半減相互作用ブロック２２６に、ｈｉσｊ及びＪｉｊσｉσｊの計算を行わせる。制御回路２２０は、半減相互作用ブロック２２６による計算結果ｈｉσｊ及び計算結果Ｊｉｊσｉσｊを計算ブロック２３０に出力させる。制御回路２２０は、計算ブロック２３０に、計算結果ｈｉσｊ及び計算結果Ｊｉｊσｉσｊを用いて、スピンの状態を計算させ、スピンの状態を更新させる。
【００６２】
［計算における選択方法］
図８は、（３）式を用いてエネルギーＥを計算するときの、回路における各種素子の選択の方法を相互作用の部分に限って示したものである。スピンσｉについて各項ごとに計算していく。図８（ａ）は、（３）式の第１項であるσ１について、ΣｊＪ１ｊσｉ＋ｈ１を計算する場合のΣｊＪ１ｊσｉの各項の部分である。すなわち、まず、Ｊ１１とσ１を選択し、この積を求める。同時に、相互作用Ｊ１２とスピンσ２を、相互作用Ｊ１３とスピンσ３を、相互作用Ｊ１４とスピンσ４を、相互作用Ｊ１５とスピンσ５を選択することができるため、各々この積を求める。これらの結果をこの図８では示していないが、図６の計算ブロック２３０で和を取ればΣｊＪ１ｊσｉを求めることができる。後は、この結果とスピンσ1を比較し、スピンσ1の更新する値を決定すれば良いのである。図８（ｂ）は（３）式の第２項であるσ２を計算するときの選択の方法であり、以下、図８（ｃ）はσ３の場合であり、図８（ｄ）はσ４の場合、図８（ｅ）はσ５の場合である。それぞれ、ΣｉＪ２ｊσｉ，ΣｊＪ３ｊσｉ，ΣｊＪ４ｊσｉ，ΣｊＪ５ｊσｉの各状態について、各項を同時選択し、かつ、計算ができる。同様にこれらの結果を用いて図６の計算ブロック２３０で和を取れば良い。このようにして、本実施の形態では、スピン更新に必要な計算を行うことができ、また、（３）式を用いてエネルギーＥを計算することができるという特徴がある。
【００６３】
＜本実施の形態の変形例＞
図９は、本実施の形態の他の変形例を示す図であり、相互作用Ｊｉｊにおいてｉ＝ｊのものを省いた例である。すなわち、相互作用Ｊｉｊにおいｉ＜ｊのみを配置している。この実施の形態の変形例では、相互作用ブロックを更に小さくすることができるという特徴がある。ｉ＜ｊにおいて両者でもっとも大きな値のｉ，ｊを持つＪ４５が、図４におけるＪ１１の場所に配置され、Ｊ３４，Ｊ３５が同図のＪ２１，Ｊ２２の場所に配置されることによって矩形の半減相互作用ブロックを形成している。この変形例を用いても（３）式を計算することができる。Ｊｉｊにおいてｉ＝ｊのものは、単にσｉとすればよい。外場ｈｉの配置は図９のように分けても良いが、単にσｉを計算するときにそのｉに対応するものが選ばれれば良いので、一つの線にすべてを接続しても良い。
【００６４】
図１０は、矩形の半減相互作用ブロックを形成するための他の配置の方法を示した本実施の形態の変形例である。図９との差を述べれば、図９では、矩形を形成するために図４の配置から移動させた相互作用Ｊｉｊを図中においてｉが増加する方向に縦に並べたが、図１０では、ｊが増加する方向に縦に並べた。図１０の方法では、図９の方法に比べて、選択のための制御は異なるが、接続のための配線の面積を小さくできるという特徴がある。
【００６５】
図１１は、図１０と同様な相互作用Ｊｉｊにおいてｉ＝ｊのものを省いた例であり、スピン数を増やした場合である。スピン数が奇数の場合には同様に配置すれば良い。ｉ＝ｊを省いた相互作用のみを配列する場合、一般にスピン数ｎに対して、図１１で示すところの縦の並びである相互作用Ｊｉｊの行の数は（ｎ−１）／２とすることができる。
【００６６】
図１２はスピン数が偶数の場合の相互作用Ｊｉｊの半減手法を説明するための図であり、図１３がその半減の結果とした構成の実施の形態の例である。ｉ＝ｊを省いた相互作用のみを配列する場合であり、スピン数が偶数の場合には、一般にスピン数ｎに対して、図１３で示すところの縦の並びである相互作用Ｊｉｊの行の数はｎ／２とすることができる。移動させた相互作用の並びでは、相互作用Ｊ１２の下おりに配置されることになる。図１３では、外場ｈｉは相互作用の行の並びに合わせて配置した例であるが、スピンσｉを計算するときにそのｉに対応するものが選ばれれば良く、一つの線にすべてを接続しても良い。本変形例によれば、スピン数が偶数の場合に、半減相互作用ブロックを構成でき、回路面積が減少するという特徴がある。
【００６７】
［回路における選択方法］
図６から図１３まで半減相互作用ブロック２２６の構成とその相互作用Ｊｉｊの選択について述べてきた。なお、外場ｈｉについては説明しなかったが、外場ｈｉも項の計算に必要なものを選択する。
【００６８】
以下、制御回路２２０における相互作用の選択の詳細について述べる。図６から図１３までの説明では省略してきたが、図１４は、図６の構成を例題に、相互作用Ｊｉｊと外場ｈｉの選択線とこの選択回路を含む制御回路２２０を配置した例である。図１４において選択線の一つの線は、選択に必要な数の配線を纏めて示している。相互作用Ｊｉｊは、ひとつ又は２つの出力端子を持っており、各相互作用Ｊｉｊにおいてそのどちらかに同じ値を出力する。この選択回路からは選択線へ、図１５に示すフローに従って、選択に必要な選択信号を発生させて出力していく。以下に説明するように制御回路２２０では、スピンの数ｎ、及びスピンσｉのｉの番号に対して予め定められた選択条件に従って相互作用を選択して計算ブロック２３０による計算を行わせる。
【００６９】
ここではスピン数がｎであり、ｎが偶数の場合で説明する。半減相互作用ブロック２２６では素子を半減させたので、更新するスピンがσｉのｉがｎ／２より大きいか小さいかで、ΣｋＪｉｋσｋの計算での選択方法が異なる。この判断は比較器（図示省略）で行えば良い。比較器の回路は、デジタル回路の組み合わせ回路の基本回路のひとつであるのでここでは説明しない。まず、ｉがｎ／２より小さい場合は、スピンσｋと相互作用Ｊｉｋは、ｋ＝１よりｋ＝２，３，４とｎに達するまで順次増やしていくように選択する。これは外部信号で増やしていく信号を入れても良いし、内部で外部から例えばアドレス線を入れてこれを順次切り替えても良いし、単に加算器（図示省略）を廻して作成しても良い。次に、スピンσｉのｉがｎ／２より大きい場合、これまでの説明で述べたように、ｋ＝１よりｋがｎ／２に達するまでは、Ｊｉｋは半減相互作用ブロック２２６を用いる各図の構成では縦方向に選択し、ｋがｎ／２を越えて以降は、半減相互作用ブロック２２６を用いる各図の構成では横方向に選択する。すなわち、ｋ＝１よりｋがｎ／２に達するまで選択するスピンσｋと相互作用Ｊｉｋはｋを増やしていく。そしてｋ＝ｎ／２＋１からは、相互作用は半減させていたので、スピンσｋと相互作用Ｊｋｉの組にて選択する。相互作用Ｊｋｉと、相互作用Ｊｉｋでは無く、行列で表現した場合の相互作用の行番号と列番号が入れ替わっていることに注意する。このｋがｎ／２を越えるか否かは、σｉのｉとｎ／２の大小を判断するのと同じ比較器を用いれば良い。ｎが奇数の場合も図１５に示したように同様なフローで選択信号を発生させる。なお、これらの動作のすべてを選択回路内に置くこともできるが、相互作用Ｊｉｊや外場ｈｉの回路の中にデコード回路を置き、その選択動作の一部を行わせることもできる。こうすると選択回路からの信号線の数を減らすことができるという特徴がある。又は、集積回路上にマイコン回路を置き、これを用いて行っても良い。また、一部の回路は別チップ上に置くこともできる。
【００７０】
このようにして発生した選択信号とそれを伝える選択信号線を用いれば、図１６の相互作用Ｊｉｊの場合を示す例のように、各回路の内部は、Ｊｉｊデータを２方向に出力することができる。すなわち、Ｊｉｊの一行目を例にすると、ｌ１１〜ｌ１ｎでその行のどの列かを選択し、ｓ１，ｓ２でどの方向に信号を出すかを選択する。Ｊｉｊの行は、ｎ／２個あるので、ｌ(ｎ/2)１〜ｌ(ｎ/2)ｎまでの選択信号線と各行にｓ１，ｓ２が配置されている。なお、相互作用Ｊｉｊ回路には更にデコード機能を搭載することが可能であり、少数のデコード回路を搭載することにより選択信号線の数を減らすことができる。
【００７１】
選択回路自体は図１７に示す例のように、デコード回路によって構成することができる。図１５のフローに従って、アドレス信号であるＡｉ（ｉ＝１〜ｎ）及びＢｊ（ｊ＝１〜ｎ／２）の信号を切り替えることで所望の選択信号線をｌ１１〜ｌ１ｎ，ｌ(ｎ/2)１〜ｌ(ｎ/2)ｎ選択することが可能となるのである。
【００７２】
以上説明したように、本発明の実施の形態に係る半導体装置によれば、イジングモデルの要素を各ブロックによって構成し、かつ、イジングモデルの相互作用の要素を行列と見たときの特徴を利用することにより、相互作用の素子数を減少させ、チップ上のレイアウト面積の削減を図ることができる。
【００７３】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【００７４】
２０、２２０  制御回路
２２   乱数発生器
２４、２２４  外場ブロック
２６   相互作用ブロック
２８、２２８  スピンブロック
３０、２３０  計算ブロック
１００、２００       半導体装置
２２６ 半減相互作用ブロック
【図１】
2020052913.tif 000009
【図２】
2020052913.tif 000010
【図３】
2020052913.tif 000011
【図４】
2020052913.tif 000012
【図５】
2020052913.tif 000013
【図６】
2020052913.tif 000014
【図７】
2020052913.tif 000015
【図８】
2020052913.tif 000016
【図９】
2020052913.tif 000017
【図１０】
2020052913.tif 000018
【図１１】
2020052913.tif 000019
【図１２】
2020052913.tif 000020
【図１３】
2020052913.tif 000021
【図１４】
2020052913.tif 000022
【図１５】
2020052913.tif 000023
【図１６】
2020052913.tif 000024
【図１７】
2020052913.tif 000025