(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-03
(45)【発行日】2022-10-12
(54)【発明の名称】半導体装置
(51)【国際特許分類】
G06N 99/00 20190101AFI20221004BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2019058983
(22)【出願日】2019-03-26
【審査請求日】2021-03-22
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成28年度、国立研究開発法人新エネルギー・産業技術総合開発機構「IoT推進のための横断技術開発プロジェクト/組合せ最適化処理に向けた革新的アニーリングマシンの研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】林 真人
(72)【発明者】
【氏名】竹本 享史
【審査官】杉浦 孝光
(56)【参考文献】
【文献】特開2017-219948(JP,A)
【文献】特開2016-051351(JP,A)
【文献】特開2013-196509(JP,A)
【文献】特開2005-157653(JP,A)
【文献】特開2016-051325(JP,A)
【文献】米国特許出願公開第2017/0351947(US,A1)
【文献】米国特許出願公開第2016/0063148(US,A1)
【文献】国際公開第2017/037903(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-20/00
G06N 99/00
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
処理装置と、通信路を介して接続された複数のイジングボードとを有し、イジングモデルの基底状態探索を行う半導体装置であって、
前記処理装置は、
隣接する前記イジングボードの間でスピン値の送受信を行う相互作用演算モードと、前記イジングボードとの間で前記イジングモデルの制御情報の送受信を行う制御モードとを前記通信路を時分割に共有して実行することを特徴とする半導体装置。
【請求項2】
前記イジングボードは、
前記相互作用演算モードと前記制御モードを判別する振り分け部を更に有することを特徴とする請求項1に記載の半導体装置。
【請求項3】
前記振り分け部が前記相互作用演算モードと判別した場合は、
相互作用演算中に、隣接する前記イジングボード同士で前記イジングボードの端部に位置する前記スピン値を有するデータパケットを前記通信路を介してやり取りし、
前記振り分け部が前記制御モードと判別した場合は、
前記イジングモデルの前記制御情報として、前記イジングボードを特定するためのアドレス、前記スピン値、相互作用係数及び外部磁場係数を有する制御パケットを前記通信路を介してやり取りすることを特徴とする請求項2に記載の半導体装置。
【請求項4】
前記イジングボードは、
前記スピン値を持つスピンアレイを有するイジングコアと、
前記振り分け部と前記イジングコアとの間に設けられたバッファと、
前記振り分け部に接続された制御部と、を更に有し、
前記振り分け部は、
前記相互作用演算モードと判別した場合は、相互作用演算中の前記スピン値を前記バッファに入力し、
前記制御モードと判別した場合は、前記制御情報を前記制御部に入力することを特徴とする請求項3に記載の半導体装置。
【請求項5】
前記イジングボードは、
前記制御部に接続された制御レジスタを更に有し、
前記制御部は、
前記振り分け部から入力された前記制御パケットの前記アドレスを確認し、自身の前記イジングボードに割り当てられたアドレス範囲であれば、前記制御パケットの前記スピン値、前記相互作用係数及び前記外部磁場係数を前記制御レジスタに書き込み、
自身の前記イジングボードに割当たられた前記アドレス範囲でなければ、前記制御パケットを隣接する前記イジングボードに転送することを特徴とする請求項4に記載の半導体装置。
【請求項6】
前記振り分け部は、閾値レジスタを有し、
前記処理装置は、
前記振り分け部に入力されたパケットを、前記閾値レジスタで指定される値に応じて、制御パケットとデータパケットに振り分けることを特徴とする請求項
2に記載の半導体装置。
【請求項7】
前記処理装置は、
前記相互作用演算モードにおいては、前記データパケットの数を前記制御パケットの数よりも多く設定することを特徴とする請求項6に記載の半導体装置。
【請求項8】
前記イジングボードは、
前記処理装置との間で情報の授受を行うホストインターフェースを更に有することを特徴とする請求項1に記載の半導体装置。
【請求項9】
前記処理装置は、
前記イジングモデルを前記イジングボードが一度に処理できるスピン数に応じて分割して、隣接する前記イジングボードに順次割り当てることを特徴とする請求項1に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関する。
【背景技術】
【0002】
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは+1/-1(ないしは、0/1、上/下)の2値をとるスピンと、スピン間の相互作用を示す相互作用係数と、スピン毎にある外部磁場係数とで定義される。
【0003】
イジングモデルは与えられたスピン配列、相互作用係数、及び、外部磁場係数から、その時のエネルギーを計算することができる。イジングモデルのエネルギー関数は一般的に(数1)で表わされる。
【0004】
【0005】
なお、σi,σjはそれぞれi番目とj番目のスピンの値、Ji,jはi番目とj番目のスピンの間の相互作用係数、hiはi番目のスピンに対する外部磁場係数、σはスピンの配列を表わすものとする。
【0006】
数1において、第一項は、スピン間の相互作用に起因するエネルギーを計算するものである。一般的にイジングモデルは無向グラフとして表現され、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。そのため、第一項ではi<jを満たすσi,σjの組み合わせについて、相互作用係数の影響を計算している。また第二項は、各スピンに対する外部磁場に起因するエネルギーを計算するものである。
【0007】
イジングモデルの基底状態探索とは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。相互作用係数及び外部磁場係数の値域に制限を付けないときには、トポロジが非平面グラフになるイジングモデルの基底状態を求めることはNP困難問題であることが知られている。
【0008】
イジングモデルの基底状態探索は、元々イジングモデルが対象としていた磁性体の振る舞いを説明することのみならず、様々な用途に用いられている。これは、イジングモデルが相互作用に基づく最も単純なモデルであり、同様に相互作用に起因する様々な事象を表現する能力を持っているためであると言える。例えば、特許文献1には、イジングモデルの基底状態探索を用いて、職場組織などの集団におけるストレス度を推定する方法が開示されている。
【0009】
また、イジングモデルの基底状態探索は、NP困難なグラフ問題として知られている最大カット問題とも対応している。このようなグラフ問題は、ソーシャルネットワークにおけるコミュニティの検出や、画像処理におけるセグメンテーションなど、幅広い応用を持っている。そのため、イジングモデルの基底状態探索を行うソルバがあれば、このような様々な問題に適用することができる。
【先行技術文献】
【特許文献】
【0010】
【文献】特開2012-217518号公報
【文献】国際公開第2012/118064号公報
【文献】特開平3-80379号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
イジングモデルの基底状態を求めることは、上述のようにNP困難問題であることから、イノマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリステックを導入して高速化を図るアルゴリズムも提案されているものの、イノマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている(例えば、特許文献2参照)。
【0012】
このような装置では、解くべき問題に対応した並列度が必要になってくる。イジングモデルの場合では、基底状態を探索すべきイジングモデルのスピン数に対応して、それぞれ1つのスピンや、当該スピンにおける他のスピンとの相互作用を表現する素子(以下、これを単位素子と呼ぶ)が必要となる。
【0013】
例えば、特許文献3に開示された装置では、スピンとレーザを対応させているため、スピン数に比例した数のレーザが必要となる。すなわち、多数の単位素子を搭載可能なスケーラビリティの高さが必要となる。
【0014】
以上のことを考慮した場合、単位素子を規則的に多数並べて実現できる半導体装置のような固体素子でイジングモデルの基底状態探索を行えることが望ましい。特に、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの記憶装置に代表されるようなアレイ構造であり、かつ集積性を高められるように単位要素が単純な構造であることが望ましい。
【0015】
ところで、このような半導体装置として、例えば、多数のスピンを含む大規模なイジングモデルの基底状態を探索可能な半導体装置を構築するためには、単位素子をスピン数に応じた数だけ半導体チップに搭載する必要がある。
【0016】
しかし、このような半導体装置は、チップサイズが大きく、また製造コストも高くなる。従って、このような半導体装置を実現するに際しては、ある程度の数の単位素子が搭載された半導体チップを複数接続するようにして構築することが望ましい。
【0017】
しかしながら、このような方法によると、半導体チップ間の配線量が大きくなるために製造コストが増大したり、実装上の困難が生じたりする問題がある。
【0018】
本発明の目的は、大規模なイジングモデルの基底状態を探索可能な半導体装置において、半導体チップを接続するチップ間配線の配線量を抑えて半導体装置を安価かつ容易に製造可能にすることにある。
【課題を解決するための手段】
【0019】
本発明の一態様の半導体装置は、処理装置と、通信路を介して接続された複数のイジングボードとを有しイジングモデルの基底状態探索を行う半導体装置であって、前記処理装置は、隣接する前記イジングボードの間でスピン値の送受信を行う相互作用演算モードと、前記イジングボードとの間で前記イジングモデルの制御情報の送受信を行う制御モードとを前記通信路を時分割に共有して実行することを特徴とする。
【発明の効果】
【0020】
本発明の一態様によれば、大規模なイジングモデルの基底状態を探索可能な半導体装置において、半導体チップを接続するチップ間配線の配線量を抑えて半導体装置を安価かつ容易に製造することができる。
【図面の簡単な説明】
【0021】
【
図1】情報処理装置の全体構成を示すブロック図である。
【
図2】イジングボードの構成を示すブロック図である。
【
図3】イジングボードの別の構成を示すブロック図である。
【
図4】イジングコアの構成を示すブロック図である。
【
図5】スピンユニットの説明に供する概念図である。
【
図6】スピンユニットの説明に供する概念図である。
【
図7】スピンユニットの説明に供する概念図である。
【
図8】スピンユニットの構成を示すブロック図である。
【
図9】スピンユニットの構成を示すブロック図である。
【
図10】スピンユニットの配置例を示す概念図である。
【
図11】スピンユニット間の配線例を示す概念図である。
【
図12A】入力のイジングモデルとイジングボードの対応関係を示す概念図である。
【
図12B】入力のイジングモデルとイジングボードの対応関係を示す概念図である。
【
図13】イジングボード間の結線を示す概念図である。
【
図14】イジングボード間の制御信号の伝送路を示す概念図である。
【
図15】イジングボード間で授受されるデータを示す概念図である。
【
図16】情報処理装置の処理の流れを示すフローチャートである。
【
図17】振り分け部の構成例を示すブロック図である。
【
図18】相互作用動作中のパケット振り分け例を示す概念図である。
【
図19】ボード間通信路を流れるパケットの時間変化を示す概念図である。
【発明を実施するための形態】
【0022】
以下、図面を用いて実施形態について説明する。
【0023】
<有向グラフに拡張したイジングモデル>
実施形態では、イジングモデルを拡張した、以下の(数2)で示されるモデルを、これ以降イジングモデルと呼ぶものとする。
【0024】
【0025】
(数1)で示したイジングモデルとの違いは、(数2)では有向グラフで示されるような相互作用が許されることにある。一般的にイジングモデルはグラフ理論では無向グラフとして描画することができる。それは、イジングモデルの相互作用は、i番目スピンからj番目スピンへの相互作用係数Ji,jとj番目スピンからi番目スピンへの相互作用係数Jj,iとを区別していないことによる。
【0026】
実施形態はイジングモデルを拡張し、Ji,jとJj,iとを区別しても適用できるため、本実施の形態でも有向グラフ化したイジングモデルを取り扱う。なお、無向グラフのイジングモデルを有向グラフのイジングモデルで取り扱う場合には、単にJi,jとJj,iとの双方向に同じ相互作用係数を定義することで可能である。この場合、同じモデルでも(数1)のエネルギー関数に対して(数2)のエネルギー関数ではエネルギーの値が2倍になる。
【0027】
<情報処理装置の全体構成>
図1は、実施の形態による情報処理装置(半導体装置)の全体構成を示す。この情報処理装置1は、パーソナルコンピュータやワークステーション又はサーバなどから構成され、システムバス2を介して構成されたCPU(処理装置)3、メモリ4、記憶装置5及び1つ又は複数のイジングボード6aを備える。また、システムバス2とは直接接続せず、イジングボード6aとボード間通信路18を介して情報処理装置1に接続されるイジングボード6bを備える。
【0028】
記憶装置5には、情報処理装置1が解くべき単一の問題の問題データ7が格納され、メモリ4には、問題変換プログラム8及びイジングボード制御プログラム9が格納される。問題変換プログラムは、かかる問題を必要に応じて単一のイジングモデル形式の問題に変換すると共に、かかるイジングモデル形式の問題を必要に応じて複数の部分問題に分割し、これらの部分問題を個々のイジングボード6aおよび6bにそれぞれ振り分けるプログラムである。またイジングボード制御プログラム9は、個々のイジングボード6aおよび6bにおいて対応する部分問題を解くための制御を行うためのプログラムである。なお部分問題は、それ自体が他の部分問題と独立した単一のイジングモデル形式の問題である。
【0029】
<イジングボードの構成>
イジングボード6aは、イジングモデルの基底状態探索を行う専用ハードウェアであり、例えば画面描画処理のための専用ハードウェアであるGPU(Graphics Processing Unit)のように、情報処理装置1に装着する拡張カードの形態を取る。
【0030】
イジングボード6aは、
図2に示すように、イジングコア19、送信部31、受信部37バッファ32、振り分け部33、制御部34、制御レジスタ35、乱数発生器17とホストI/F36を備える。ホストI/F36およびシステムバス2(
図1)を介してCPU3(
図1)との間でコマンドや情報の授受を行う。
【0031】
イジングボード6aは隣接するイジングボード6a及びイジングボード6bと接続するために、上下左右に送信部31及び受信部37を備える。送信部31及び受信部37の動作については後述するが、本実施の形態においては相互作用演算中に隣接するイジングボード同士6a及び6bでイジングコア19の端部に位置するスピンσiの値をやり取りするほか、ホストI/F36を持たないボードに対してスピン・相互作用係数、および外部磁場係数を読み書きするための制御情報をやり取りする。
【0032】
振り分け部33は、受信部37から入力を受け取り、相互作用演算中のスピン値であるか、隣接するイジングボード6aおよび6bから転送された制御情報かを判別し、前者であればスピン値をバッファ32に入力し、後者であれば制御部34に入力する。バッファ32はイジングボード6aに隣接するボード上にあるイジングコア19の端部のスピン値を格納しており、自身のイジングボード6a上のイジングコア19の端部に位置するスピンからみて隣接するスピンのように接続されている。
【0033】
なお、
図13と
図14を用いて後述するように、相互作用演算中のスピン値を伝送する結線と制御情報を伝送する論理的な結線は異なる。本実施形態では
図14で示すように制御情報が各イジングボード6a及び6bから見て決まった方向に伝達されることを想定している。このため、各イジングボード6a及び6bの下方向及び右方向の受信部37に入力されるデータは常にデータパケット51(後述)となるので振り分け部33を省略して直接バッファ32に入力する構成をとっている。
【0034】
制御部34は振り分け部33から入力された制御パケット50(後述)のアドレスを確認し、自身のイジングボードに割り当てられたアドレス範囲であれば、制御パケット50のデータを制御レジスタ35またはイジングコア19上のメモリに対する読書きを行う。一方、自身のイジングボードに割当たられたアドレス範囲でなければ、受け取った制御パケットを送信部31bおよび31cに入力し、隣接するイジングボード6a及び6bに転送する。
【0035】
制御レジスタ35はイジングコア19の動作状態を格納したり、後述する振り分け部33の動作モードを設定する。乱数発生器17はイジングコア19の相互演算動作において、局所解を避けるために必要な乱数ビット列を発生させる。イジングコア19はイジングモデルの相互作用演算を実行する部分で、詳細は
図4を用いて後述する。
【0036】
図3はイジングボード6aの別の構成を図示したものである。
図3のイジングボード6bは、
図2のイジングボード6aと異なりホストI/F36を持たない。イジングボード6bは隣接するイジングボード6aから制御情報を受け取ってイジングコア19に対してスピン値、相互作用係数および外部磁場係数の読み書きを行う。ホストI/F36を除いた部分は
図2のイジングボード6aと同様である。
【0037】
<イジングコアの構成>
図4は、イジングコア19の概略構成を示す。イジングコア19は、CMOS(Complementary Metal-Oxide Semiconductor)集積回路やFPGA(Field Programmable Gate Array)上の論理回路として実装されていることを想定して説明するが、他の固体素子でも実現可能である。
【0038】
イジングコア19は、スピンアレイ20にリード/ライトを行うためのSRAM互換インタフェース30としてアドレスバス31、データバス32、R/W制御線33及びI/Oクロック線34を備える。またイジングチップ13は、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース35として、相互作用アドレス線36及び相互作用クロック線37をも備える。
【0039】
イジングコア19では、イジングモデルのスピンσi、相互作用係数Ji,j及び外部磁場係数hiをすべてスピンアレイ20内のメモリセルに記憶する情報で表現する。スピンσiの初期状態の設定や基底探索完了後の解読み出しはSRAM互換インターフェース30を介して行う。またイジングコア19では、基底状態を探索すべきイジングモデルをスピンアレイ20に設定するための相互作用係数Ji,j及び外部磁場係数hiのリード/ライトもSRAM互換インターフェース30を介して行う。
【0040】
そして、イジングチップ13にスピンσi、相互作用係数Ji,j又は外部磁場係数hiをリード/ライトする場合、対応するアドレスがコントローラ15からアドレスバス31を介してI/Oアドレスデコーダ21に与えられ、これらスピンσi、相互作用係数Ji,j及び外部磁場係数hiのリード/ライトを制御するR/W制御信号がコントローラ15からR/W制御線33を介してI/Oドライバ22に与えられる。
【0041】
<スピンアレイの構成>
スピンアレイ20は、1個のスピンσi並びにそれに付随する相互作用係数Ji,j及び外部磁場係数hiの保持と、基底状態探索演算とを実現するスピンユニットを基本構成単位として、スピンユニットを多数個並べた構成を有する。
【0042】
図5は、スピンユニット40を複数個並べることで、3次元格子状のトポロジを持つイジングモデルを構成する例を示している。
図5の例は、3(X軸方向)×3(Y軸方向)×2(Z軸方向)の大きさの3次元格子である。座標軸の定義は図示した通り、図面右方向をX軸、図面下方向をY軸、図面奥行き方向をZ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本発明とは関係しない。
【0043】
3次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。
図5の3次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数5のスピン(頂点)が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。
【0044】
図5に示す1個のスピンユニット40には、隣接するスピン(例えば隣接するスピンが5個の場合σ
j、σ
k、σ
l、σ
m、σ
n)の値が入力される。このためスピンユニット40は、これら入力する隣接するスピンの値を保持するためのメモリセルを有している。またスピンユニット40は、かかるスピンの値に加え、外部磁場係数と、上述した隣接するスピンとの相互作用係数(隣接する5スピンとの相互作用係数J
j,i、J
k,i、J
l,i、J
m,i、J
n,i)とをそれぞれ保持するメモリセルをも有している。
【0045】
ところで、先に述べたようにイジングモデルは一般的に無向グラフで表現される相互作用を有している。上述した(1)式では、相互作用を表わす項として、Ji,j×σi×σjがあるが、これはi番目スピンからj番目スピンへの相互作用を示している。この場合、一般的なイジングモデルではi番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。
【0046】
つまり、Ji,jとJj,iは同一である。しかし、本実施の形態のイジングコア19では、先に述べたようにこのイジングモデルを有向グラフに拡張し(数2)、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【0047】
そのため、1個のスピンユニットをi番目スピンσ
iと考えた時に、このスピンユニット40が保持する相互作用係数であるJ
j,i、J
k,i、J
l,i、J
m,i、J
n,iは、隣接するj番目、k番目、l番目、m番目、n番目のスピンσ
j、σ
k、σ
l、σ
m、σ
nから、i番目スピンσ
iへの相互作用を決めるものである。このことは、
図5において、スピンユニット40に含まれている相互作用係数が対応する矢印(相互作用)が、図示されているスピンユニット40の外部のスピンから、スピンユニット40の内部のスピンに向かっていることに対応している。
【0048】
<スピンユニットの構成>
スピンユニット40の一構成例を
図8及び
図9を用いて説明する。
スピンユニット40は2つの側面をもっており、便宜上、
図8及び
図9に分けて説明するが、1個のスピンユニット40は
図8及び
図9の構成の双方を含む。
図8はスピンユニット40間の相互作用を実現するための回路を示し、
図9はスピンユニット40が有するメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1にイジングコア19外からアクセスするためのインタフェースであるビット線41とワード線42とに注目してスピンユニット40の構成を図示したものである。
【0049】
スピンユニット40は、イジングモデルのスピンσ
i、相互作用係数J
j,i~J
n,i及び外部磁場係数h
iを保持するために、複数の1ビットのメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1を備えている。なお、メモリセルIS0及びIS1、メモリセルIU0及びIU1、メモリセルIL0及びIL1、メモリセルIR0及びIR1、メモリセルID0及びID1、並びに、メモリセルIF0及びIF1は、それぞれ2個1組で役割を果たすものであるため、適宜、これらをそれぞれまとめてメモリセル対ISx,IUx,ILx,IRx,IDx又はIFxと略記する(
図6参照)。
【0050】
ここで、スピンユニット40はi番目のスピンを表現するものとして説明を行う。メモリセルNはスピンを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは+1/-1(+1を上、-1を下とも表現する)であるが、これをメモリセルが保持可能な2値である0/1に対応させる。例えば、+1を1、-1を0に対応させる。
【0051】
図6を用いて、スピンユニット40が有するメモリセル対ISx、IUx、ILx、IRx、IDx及びIFxと、
図5に示したイジングモデルのトポロジとの対応関係を示す。メモリセル対ISxは外部磁場係数を記憶する。また、メモリセル対IUx,ILx,IRx,IDx及びIFxは、それぞれ相互作用係数を記憶する。具体的に、メモリセル対IUxは上側のスピン(Y軸方向で-1)、メモリセル対ILxは左側のスピン(X軸方向で-1)、メモリセル対IRxは右側のスピン(X軸方向で+1)、メモリセル対IDxは下側のスピン(Y軸方向で+1)、メモリセル対IFxは奥行き方向に接続するスピン(Z軸方向で+1ないしは-1)との相互作用係数をそれぞれ記憶する。
【0052】
また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット40は最大で5個のスピンと接続される。本実施の形態のイジングコア19では、外部磁場係数及び相互作用係数として+1/0/-1の3値に対応する。そのため、外部磁場係数及び相互作用係数を表わすためには、それぞれ2ビットのメモリセルが必要となる。
【0053】
メモリセル対ISx,IUx,ILx,IRx,IDx及びIFxは、末尾の数字が0と1の2つのメモリセル(例えばメモリセル対ISxの場合にはメモリセルIS0及びIS1)の組合せで、+1/0/-1の3値を表現する。例えば、メモリセル対ISxの場合には、メモリセルIS1で+1/-1を表現し、メモリセルIS1が保持する値が1の時は+1、メモリセルIS1が保持する値が0の時には-1を表す。
【0054】
これに加えて、メモリセルIS0が保持する値が0の時には外部磁場係数を0と見なし、メモリセルIS0が保持する値が1の時にはメモリセルIS1が保持する値で決まる+1/-1のいずれかを外部磁場係数とする。外部磁場係数が0の時は外部磁場係数をディセーブルしていると考えれば、メモリセルIS0に保持された値は外部磁場係数のイネーブルビットであると言うことができる(IS0=1の時に、外部磁場係数がイネーブルされる)。相互作用係数を記憶するメモリセル対IUx,ILx,IRx,IDx及びIFxも同様に係数とビットの値とを対応させている。
【0055】
スピンユニット40内のメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0及びIF1は、それぞれイジングコア19の外部からリード/ライト可能でなければならない。そのために、
図9に示すように、スピンユニット40はビット線41とワード線42とをそれぞれ有している。
【0056】
そしてイジングコア19では、
図10に示すように、スピンユニット40が半導体基板上にタイル状に並べられてビット線41とワード線42とが接続されており、I/Oアドレスデコーダ21とI/Oドライバ22とでこれらのスピンユニット40を駆動、制御又は読み出しすることにより、一般的なSRAM(Static Random Access Memory)と同様にスピンユニット40内のメモリセルをイジングコア19のSRAM互換インタフェース30でリード/ライトすることができるようになされている。
【0057】
なお、
図10上で表現されているスピンユニット(NxyzというようにX軸、Y軸及びZ軸上の位置によって符号を付与している)が、3次元格子のトポロジでどの頂点に対応するかを
図7に示す。3×3×2の3次元格子頂点を2次元平面上に配置するために、X軸方向の格子頂点配列の間隔にZ軸方向の格子頂点配列の各格子頂点を挿入するように配置している。すなわち、
図10の2次元平面上でのY軸方向(図面下側がY軸の正方向)にはNx0z、Nx1z、Nx2zというように配置されるが、X軸方向(図面右側がX軸の正方向)にはN0y0、N0y1、N1y0、N1y1、N2y0、N2y1というように、Z軸方向座標が0と1のスピンユニットが交互に配置される。
【0058】
またスピンユニット40は同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット40毎に独立して持っている。
図8では、スピンユニット40は、外部とのインタフェースとして、信号線NU,NL,NR,ND,NF,ON,DIFFN及びRNDを有する。
【0059】
信号線ONは、当該スピンユニット40のスピンの値を他のスピンユニット40(
図5のトポロジで隣接するユニット)に出力するインタフェースである。信号線NU,NL,NR,ND及びNFは、それぞれ他のスピンユニット40(
図5のトポロジで隣接するユニット)が保持するスピンの値を入力するためのインタフェースである。信号線NUは上側のスピン(Y軸方向で-1)、信号線NLは左側のスピン(X軸方向で-1)、信号線NRは右側のスピン(X軸方向で+1)、信号線NDは下側のスピン(Y軸方向で+1)、信号線NFは奥行き方向に接続するスピン(Z軸方向で+1ないしは-1)からの入力である。
【0060】
スピンユニット40では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を見たときに、正の値と負の値のどちらが支配的か判断することと等価である。例えば、i番目スピンσiに、スピンσj、σk、σl、σm及びσnが隣接しているとして、スピンσiの次状態は以下のように決まる。
【0061】
まず、隣接スピンの値はσj=+1、σk=-1、σl=+1、σm=-1、σn=+1とし、相互作用係数はJj,i=+1、Jk,i=+1、Jl,i=+1、Jm,i=-1、Jn,i=-1、外部磁場係数hi=+1とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σj×Jj,i=+1、σk×Jk,i=-1、σl×Jl,i=+1、σm×Jm,i=+1、σn×Jn,i=-1、hi=+1となる。外部磁場係数は、常に値が+1のスピンとの相互作用係数と読み替えて良い。
【0062】
ここで、i番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれi番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、j番目スピンとの間での局所的なエネルギーは、i番目スピンを+1とした時には-1、i番目スピンを-1としたときには+1となるので、i番目スピンを+1にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。
【0063】
このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えたときに、i番目スピンを+1/-1のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数及び隣接スピンの積と、外部磁場係数とをそれぞれ並べたものにおいて、+1と-1のどちらが多いか数えれば良い。先程の例では、+1が4個、-1が2個である。仮に、i番目スピンを+1とすると、エネルギーの総和は-2、i番目スピンを-1とするとエネルギーの総和は+2になる。よって、+1の個数が多い時にはi番目スピンの次状態を+1とし、-1の個数が多い時にはi番目スピンの次状態を-1にするという多数決で、エネルギーを最小化するi番目スピンの次状態を決定することができる。
【0064】
図8に示した論理回路46は、上述の相互作用を行うための回路である。まず、隣接スピンの状態と、相互作用係数の+1/-1を示すメモリセルIU1,IL1,IR1,ID1,IF1が保持する値との排他的論理和の否定(XNOR)をXNOR回路47で求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる(+1は1、-1は0にエンコードされているものとする)。
【0065】
もし、相互作用係数が+1/-1だけであれば、XNOR回路47の出力のうち+1/-1のどちらが多いかを多数決論理回路44において多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態+1のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理回路44に入力すべき値となる。
【0066】
次に、係数0の実現方法について考える。n入力の多数決論理f(I1,I2,I3,……,In)があるとき、以下の命題は真であると言える。まず、入力I1,I2,I3,……,Inの複製I’1,I’2,I’3,……,I’nがあるとする(任意のkについて、Ik=I’kである)。このとき、f(I1,I2,I3,……,In)の出力は、複製もあわせて入力したf(I1,I2,I3,……,In、I’1,I’2,I’3,……,I’n)と等しい。つまり、各入力変数をそれぞれ2個ずつ入れても、出力は不変である。さらに、入力I1、I2、I3,……,Inの他に、もう一つの入力Ixと、その反転Ixがあるとする。このとき、f(I1,I2,I3,……,In,Ix,反転Ix)の出力は、f(I1,I2,I3,……,In)と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数0を実現する。
【0067】
具体的には、
図8に示すように、XOR回路48を利用して、係数のイネーブルを決めるビット(ビットセルIS0,IU0,IL0,IR0,ID0及びIF0にそれぞれ保持されたビット)の値により、多数決論理回路44に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、メモリセルIS0が保持するビットの値が0の場合、メモリセルIS1が保持するビットの値と、メモリセルIS1が保持するビットの値を反転させた値が同時に多数決論理回路44に入力されるので、外部磁場係数の影響は無い(外部磁場係数が0に相当する)ことになる。また、メモリセルIS0が保持するビットの値が1の場合には、メモリセルIS1が保持するビットの値と、その値と同じ値(複製)が同時に多数決論理回路44に入力されることになる。
【0068】
上述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することができるが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことができず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転されるために、スピンユニット40はインタフェースとしてRND線49を有する。
【0069】
そしてスピンユニット40には、上述のように乱数発生器17(
図2)から乱数注入線38(
図4)を介してスピンアレイ20(
図4)に与えられた乱数がこのRND線49を介して与えられ、この乱数がXOR回路45に入力することで、スピンの値が確率的に反転される。
【0070】
なお、
図8に示したスピンユニット40のインタフェースであるNU,NL,NR,ND,NFのスピンユニット40間の配線例を
図11に示す。この
図11は、「Nxyz」というある1個のスピンユニット40に注目したときに、
図5に示すようなトポロジを
図10のようなスピンユニット配置で実現するために必要な配線を示している。このような配線をスピンユニット40ごとに行うことで、
図5のトポロジを実現することができる。
【0071】
<イジングボード間の配線方法>
図12Aは、情報処理システム1に入力される入力データであるイジングモデルと、イジングモデルの各部分の計算を行うイジングボード6a及び6bとの対応を示す模式図である。イジングモデルは、各イジングボード6a及び6bが一度に処理できるスピンの数に応じて分割され、隣接するボードに順次割り当てられる。このとき、前述の通りCPU3上のイジングボード制御プログラム9がこのイジングモデルの分割処理を担当し、割当先に応じて適切な書き込み先を決定したうえでイジングボード6a上のホストI/F36を介して書き込む。このときは、CPU3から見て各イジングボード6aおよび6b上のスピンアレイ20に含まれるスピンに対してアドレスを付与して管理することが望ましい。
【0072】
一方で、
図12Bに示すように相互作用動作の実施中には、スピンアレイ20の境界部分に位置するスピンの情報を隣接するイジングボード6a及び6b同士でやり取りする。このとき、イジングボード6a及び6b上の送信部31と受信部37は隣接するイジングボード6a及び6b間で1対1で接続されるため、アドレスの情報を必要とせず、かえってアドレスの情報を含まないことによってアドレスの伝送にかかる帯域や、アドレス情報の処理にかかる回路上の遅延時間を削減できる。
【0073】
図13はイジングボード6aおよび6b間の結線を示す模式図である。3x3のイジングボード6a及び6bをタイル状に接続する例を示している。CPU3とイジングボード6aはシステムバス2を介して接続される。イジングボード6a及び6bの間はボード間通信路18を介して接続する。隣接ボード間を上下左右にそれぞれ接続し、端部のボードは逆側の端部のボードと接続する所謂2次元トーラスと呼ばれる構成となっている。この接続構成は物理的な結線を示すと同時に、相互作用動作を実施する際にそのまま使用される。
【0074】
図14はCPU3からスピンの初期値、相互作用係数、外部磁場係数を書き込んだり、各イジングボード6aおよび6b上の制御レジスタ35を読み書きする制御用通信の際に用いる論理的な接続関係を示した図である。これは
図13の結線から一部を除去したものとなっており、所謂ツリー状の構成となっている。制御用としてより単純な接続を用いることで、宛先アドレスまでのルーティングを単純化することができる。
【0075】
<制御用通信と相互作用中の通信>
図15は制御用の通信と相互作用時の通信の内容を示した模式図である。制御パケット50は制御用の通信の内容を示したものである。CPU3から見てアクセス対象となるイジングボード6aおよび6bを特定するためのアドレス情報を含み、これに読み書きすべき内容であるスピン値・相互作用係数・外部磁場係数の情報が続く。一方、データパケット51は相互作用時の通信の内容を示したものであり、前述のとおりイジングボード6aおよび6b間が1対1で通信するため、アドレス情報を排してスピンアレイ端部のスピン値のみを送受信することで帯域を最大限活用している。
【0076】
<制御フロー>
図16は情報処理装置1の使用に関する全体の動作フローを示したものである。まず、ステップS1501で計算開始に先立って、各イジングボード6aおよび6bをリセットする。続いて、ステップS1502でCPU3から各イジングボード6aおよび6bに対して、スピン初期値・相互作用係数値および外部磁場係数値を書き込む。この際、CPU3がイジングボード制御プログラム9を実行して計算対象となるイジングモデルの分割処理を行い、分割の結果得られた宛先のイジングボード6aおよび6bに対応するアドレスを付与する。CPU3はアドレスを付与した制御パケット50を生成し、システムバス2を介してイジングボード6aに書き込む。
【0077】
イジングボード6aは受信部37を通してパケットを受信し、振り分け部33に入力する。振り分け部33は受け取った制御パケットのアドレスを確認し、自身に割り当てられたアドレスの範囲であれば制御部34を介してイジングコア19内の該当するスピンユニットに値を書き込む。受け取ったデータが自身に割り当てられたアドレスの範囲でなければ受け取ったデータを制御部34を介して送信部31b及び31cに入力し、隣接するイジングボード6bに転送する。
【0078】
書き込み完了後、ステップS1503でCPU3は相互作用動作を開始するにあたってスピン値の伝送に適した転送モードに切り替えるよう各イジングボード6aおよび6bに通知する。通知は各イジングボード6a及び6bの制御レジスタ35に対する書き込みの形で行う。
【0079】
その後、ステップS1504でCPU3は相互作用動作を開始するよう各イジングボード6a及び6bに通知する。各イジングボード6a及び6bは夫々のイジングコア19に対して相互作用クロックを入力し、相互作用動作を開始する。また、各イジングボード6a及び6bは夫々の制御レジスタ35に対して相互作用演算中であることを示す値を設定する。相互作用動作が実行されている間、CPU3は定期的に各イジングボード6a及び6bの制御ジスタ35の値を読み取り、相互作用動作が完了したかどうかを確認する。
【0080】
相互作用動作の完了後、ステップS1505でCPU3は制御用通信に適した転送モードに切り替えるよう各イジングボード6a及び6bに通知する。ステップS1503と同様、通知は各イジングボード6a及び6bの制御レジスタ35に対する書き込みの形で行う。
【0081】
その後、ステップS1506でCPU3は計算結果であるスピン値を読み取る。CPU3はすべてのスピンユニットのスピン値に対応するアドレスを含んだ値の読み取りを要求する制御パケット生成し、システムバス2を通じてイジングボード6aに書き込む。ステップS1502と同様に、イジングボード6aは受信部37を通してパケットを受信し、振り分け部33に入力する。
【0082】
振り分け部33は受け取った制御パケットのアドレスを確認し、自身に割り当てられたアドレスの範囲であれば制御部34を介してイジングコア19内の該当するスピンユニットの値を読み取り、制御パケットに読み取った値を書き込んで送信部31を介してCPU3に応答する。受け取ったデータが自身に割り当てられたアドレスの範囲でなければ受け取ったデータを制御部34を介して送信部31b及び31cに入力し、隣接するイジングボード6bに転送する。すべてのスピンユニットの値を読み取り終わったら、処理を終了する。
【0083】
<振り分け部の構成例>
図17に振り分け部33の構成例を示す。振り分け部33はモードレジスタ170とカウンタ171と閾値レジスタ172と剰余演算器173とNOT演算器174とOR演算器175とデマルチプレクサ176とを備える。モードレジスタ170は振り分け部の動作を切り替えるモードレジスタで、値が0であれば相互作用演算中に用いるデータパケットを主として受け取る転送モードを表し、値が1であれば初期化中等に用いる制御パケットのみを入力として受け取る転送モードを表すものとする。
【0084】
カウンタ171は振り分け部33が入力のパケットを受け取るたびにインクリメントされる。カウンタの値は予め定数が設定された閾値レジスタ172の値とともに剰余演算器173に入力される。剰余演算器173は剰余の値が0のとき0を、それ以外のとき1を出力するものとする。この値はNOT演算器174に入力され、値が反転されたのちOR演算器175へと入力される。デマルチプレクサ176はOR演算器175の出力を選択信号として入力されたパケットをバッファ32又は送信部31へと振り分ける。
【0085】
ここでは、選択信号が0のとき、バッファ32へ出力し、選択信号が1のとき送信部31へ出力する。これにより、モードレジスタ170の値が0のときは、原則として入力されたパケットをデータパケットとして振り分け、閾値レジスタで指定されるパケット数毎に1度制御パケットとして振り分ける。一方、モードレジスタ170の値が1のときは常に制御パケットとして振り分ける動作となる。
【0086】
図18は相互作用動作中の通信に対応する振り分け部の状態遷移を示した図である。相互作用動作中はスピン値のやり取りが主であるため、データパケットの割合を高めることで帯域を無駄なく活用する。相互作用動作中も、イジングボードが計算中であるかどうかを確認するために、CPU3から各イジングボードの制御レジスタ35を読み取る必要があるため制御パケットも一部含める。
【0087】
図19にボード間通信路18を通るパケット種別の時間変化の例を示す。
図16に示したフローチャートに沿って計算を実行する際、リセット後は各イジングボード6a及び6bの振り分け部33は制御用通信を行うモードとなり、ボード間通信路18に制御パケット50が連続して流れることとなる。
図16のステップ1503で転送モードを変更すると、隣接するイジングボード6a及び6bの間でスピン値をやり取りするためにボード間通信路18には制御パケット50に加えてデータパケット51も流れる。
【0088】
相互作用演算が終了し、
図16のステップS1505で再び転送モードを変更すると、ボード間通信路18に制御パケット50が連続して流れるようになる。このようにして、同一のボード間通信路18上で、制御時に適した通信と演算時に適した通信とを時分割的に共有して行うことでチップ間配線を抑えて効率よく通信することが可能となる。
【0089】
尚、本発明は、イジングモデルの基底状態探索を行う半導体装置に広く適用することができる。
【符号の説明】
【0090】
1 情報処理装置
2 システムバス
3 CPU
4 メモリ
5 記憶装置
6a イジングボード
6b イジングボード
17 乱数発生器
18 ボード間通信路
19 イジングコア
31 送信部
32 バッファ
33 振り分け部
34 制御部
35 制御レジスタ
36 ホストI/F
37 受信部
50 制御パケット
51 データパケット