特許第6914872号(P6914872)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

<>
  • 特許6914872-情報処理装置および半導体集積回路装置 図000004
  • 特許6914872-情報処理装置および半導体集積回路装置 図000005
  • 特許6914872-情報処理装置および半導体集積回路装置 図000006
  • 特許6914872-情報処理装置および半導体集積回路装置 図000007
  • 特許6914872-情報処理装置および半導体集積回路装置 図000008
  • 特許6914872-情報処理装置および半導体集積回路装置 図000009
  • 特許6914872-情報処理装置および半導体集積回路装置 図000010
  • 特許6914872-情報処理装置および半導体集積回路装置 図000011
  • 特許6914872-情報処理装置および半導体集積回路装置 図000012
  • 特許6914872-情報処理装置および半導体集積回路装置 図000013
  • 特許6914872-情報処理装置および半導体集積回路装置 図000014
  • 特許6914872-情報処理装置および半導体集積回路装置 図000015
  • 特許6914872-情報処理装置および半導体集積回路装置 図000016
  • 特許6914872-情報処理装置および半導体集積回路装置 図000017
  • 特許6914872-情報処理装置および半導体集積回路装置 図000018
  • 特許6914872-情報処理装置および半導体集積回路装置 図000019
  • 特許6914872-情報処理装置および半導体集積回路装置 図000020
  • 特許6914872-情報処理装置および半導体集積回路装置 図000021
  • 特許6914872-情報処理装置および半導体集積回路装置 図000022
  • 特許6914872-情報処理装置および半導体集積回路装置 図000023
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6914872
(24)【登録日】2021年7月16日
(45)【発行日】2021年8月4日
(54)【発明の名称】情報処理装置および半導体集積回路装置
(51)【国際特許分類】
   G06N 99/00 20190101AFI20210727BHJP
   G06F 9/38 20060101ALI20210727BHJP
   G06F 15/80 20060101ALI20210727BHJP
【FI】
   G06N99/00
   G06F9/38 370C
   G06N99/00 180
   G06F15/80
【請求項の数】12
【全頁数】25
(21)【出願番号】特願2018-32961(P2018-32961)
(22)【出願日】2018年2月27日
(65)【公開番号】特開2019-148965(P2019-148965A)
(43)【公開日】2019年9月5日
【審査請求日】2020年3月16日
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成28年度国立研究開発法人新エネルギー・産業技術総合開発機構「IoT推進のための横断技術開発プロジェクト/組合せ最適化処理に向けた革新的アニーリングマシンの研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜特許業務法人
(72)【発明者】
【氏名】林 真人
(72)【発明者】
【氏名】山岡 雅直
【審査官】 大桃 由紀雄
(56)【参考文献】
【文献】 特開2016−051351(JP,A)
【文献】 特開2017−219948(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06F 9/38
G06F 15/80
(57)【特許請求の範囲】
【請求項1】
スピンの状態を記憶するスピンユニットを複数備え、スピンユニットのスピンの状態を他のスピンユニットのスピンの状態に基づいて更新することで、所定の状態を探索する情報処理装置であって、
複数の第1のスピンユニットが形成された第1の半導体集積回路装置と、
第2のスピンユニットが形成された第2の半導体集積回路装置と、
前記第1の半導体集積回路装置と前記第2の半導体集積回路装置とを接続するチップ間配線と、
前記チップ間配線に接続されるとともに、前記複数の第1のスピンユニットで共有される送信側接続部と、を備え、
前記送信側接続部は、前記複数の第1のスピンユニットのうち、スピンの状態の変化があったスピンユニットのスピンの状態を、前記チップ間配線を介して、前記第2の半導体集積回路装置に送信し、
前記第1のスピンユニットの其々は、自己のスピンの状態の変化を検出する検出回路と、前記検出回路の出力を前記送信側接続部に送信する信号線を備え、
前記送信側接続部は、前記複数の第1のスピンユニットから送信される前記検出回路の出力のうち、一つでもスピンの状態の変化を示すものがあるとき、スピンの状態の変化があったスピンユニットのスピンの状態を、前記チップ間配線を介して前記第2の半導体集積回路装置に送信し、
前記送信側接続部は、前記複数の第1のスピンユニットから送信される前記検出回路の出力のうち、複数の出力がスピン状態の変化を示すとき、前記複数の第1のスピンユニットの一つを選択する調停器を備え、
選択されたスピンユニットのスピンの状態を、前記チップ間配線を介して、前記第2の半導体集積回路装置に送信する
報処理装置。
【請求項2】
前記第1のスピンユニットの其々は、自己のスピンの状態を前記送信側接続部に送信する信号線を備え、
前記送信側接続部は、前記複数の第1のスピンユニットから送信される複数のスピンの状態を入力とし、そのうちの一つのスピンの状態を出力とするマルチプレクサを備え、
前記マルチプレクサは、前記調停器の指示により出力すべきスピンの状態を決定する、
請求項記載の情報処理装置。
【請求項3】
前記調停器は、前記複数の第1のスピンユニットの一つを選択する際に、選択する優先順位を所定タイミングで変更する、
請求項記載の情報処理装置。
【請求項4】
前記送信側接続部は、
スピンの状態の変化があったスピンユニットのスピンの状態を、前記チップ間配線を介して前記第2の半導体集積回路装置に送信するマルチプレクサと、
送信されたスピンの状態を持つ第1のスピンユニットを特定する情報を、前記チップ間配線を介して前記第2の半導体集積回路装置に送信する調停器と、
有効なスピン値を伝送することを示す信号を、前記チップ間配線を介して前記第2の半導体集積回路装置に送信する論理回路と、を備える、
請求項1記載の情報処理装置。
【請求項5】
前記第2の半導体集積回路装置は、
前記スピンの状態を、前記チップ間配線を介して受信するデマルチプレクサと、
前記第1のスピンユニットを特定する情報を、前記チップ間配線を介して受信するデコーダと、
前記有効なスピン値を伝送することを示す信号を、前記チップ間配線を介して受信するとともに、前記デコーダの出力を入力とする複数のAND回路と、
前記デマルチプレクサの出力を入力とするとともに、前記複数のAND回路と一対一に設けられる複数のバッファメモリを備え、
前記バッファメモリは、前記AND回路の出力をイネーブル信号として、前記デマルチプレクサの出力を記憶する、
請求項記載の情報処理装置。
【請求項6】
前記第2の半導体集積回路装置は、
前記送信側接続部から前記チップ間配線を介して送信されるスピンの状態と、乱数とを選択して前記第2のスピンユニットに入力するセレクタを備える、
請求項1記載の情報処理装置。
【請求項7】
前記第2の半導体集積回路装置は、
乱数発生器と切替信号線とを備え、
前記切替信号線の信号に応じて、前記乱数発生器から供給される乱数と、前記チップ間配線を介して送信されるスピンの状態とを前記セレクタで選択する、
請求項記載の情報処理装置。
【請求項8】
前記所定の状態を探索する処理において、局所解を脱するためにスピンの値をランダムに反転させる反転確率を時間の経過とともに低下させる制御を行い、
前記切替信号線は、前記反転確率が高いときには前記乱数発生器から供給される乱数を前記セレクタに選択させ、前記反転確率が低いときには前記チップ間配線を介して送信されるスピンの状態を前記セレクタに選択させる、
請求項記載の情報処理装置。
【請求項9】
複数のスピンユニットからなるスピンアレイが形成された半導体集積回路装置であって、
前記スピンユニットの其々は、
1つのスピンの状態を表現する値を記憶する第1のメモリセルと、
前記1つのスピンに相互作用を及ぼす他のスピンからの相互作用を示す相互作用係数を記憶する第2のメモリセルと、
前記他のスピンの状態を表現する値と前記相互作用係数に基づいて、前記1つのスピンの次状態を決定する論理回路と、
前記スピンの次状態が現在のスピンの状態と異なるかどうかを検出する検出回路と、
を備え、
前記複数のスピンユニットは、一つの送信側接続部を共有し、
前記送信側接続部は、
前記複数のスピンユニットの前記第1のメモリセルの内容を入力とし、そのうちの一つを選択するマルチプレクサと、
前記複数のスピンユニットの前記検出回路の出力を入力とする調停器と、
を備え、
前記マルチプレクサは、前記調停器の出力に基づいて前記第1のメモリセルの内容を選択し、装置外部へ出力する、
半導体集積回路装置。
【請求項10】
前記調停器は、前記マルチプレクサに前記第1のメモリセルの内容を選択させる際に、
選択するスピンユニットの優先順位を所定タイミングで変更する、
請求項記載の半導体集積回路装置。
【請求項11】
前記複数のスピンユニットは、
装置外部から入力される他のスピンの状態を表現する値を入力とするデマルチプレクサと、
複数のバッファと、
前記デマルチプレクサの出力を記憶するためのバッファを指定するデコーダと、
を備える、
請求項記載の半導体集積回路装置。
【請求項12】
前記バッファの内容と乱数とを選択して前記スピンユニットに供給するセレクタを備える、
請求項11記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関し、特に、大規模なイジングモデルの基底状態探索を行う情報処理装置および半導体集積回路装置に適用して好適なものである。
【背景技術】
【0002】
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは+1/−1(ないしは、0/1あるいは上/下)の2値をとるスピンと、スピン間の相互作用を示す相互作用係数と、スピン毎にある外部磁場係数とで定義される。
【0003】
イジングモデルは与えられたスピン配列、相互作用係数、及び、外部磁場係数から、その時のエネルギーを計算することができる。イジングモデルのエネルギー関数は一般的に次式で表わされる。
【0004】
【数1】
……(1)
【0005】
なお、σ,σはそれぞれi番目とj番目のスピンの値、Ji,jはi番目とj番目のスピンの間の相互作用係数、hはi番目のスピンに対する外部磁場係数、σはスピンの配列を表わすものとする。
【0006】
(1)式において、第一項は、スピン間の相互作用に起因するエネルギーを計算するものである。一般的にイジングモデルは無向グラフとして表現され、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。そのため、第一項ではi<jを満たすσ,σの組み合わせについて、相互作用係数の影響を計算している。また第二項は、各スピンに対する外部磁場に起因するエネルギーを計算するものである。
【0007】
イジングモデルの基底状態探索とは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。相互作用係数及び外部磁場係数の値域に制限を付けないときには、トポロジが非平面グラフになるイジングモデルの基底状態を求めることはNP困難問題であることが知られている。
【0008】
イジングモデルの基底状態探索は、元々イジングモデルが対象としていた磁性体の振る舞いを説明することのみならず、様々な用途に用いられている。これは、イジングモデルが相互作用に基づく最も単純なモデルであり、同様に相互作用に起因する様々な事象を表現する能力を持っているためであると言える。例えば、イジングモデルの基底状態探索を用いて、職場組織などの集団におけるストレス度を推定することもできる。
【0009】
また、イジングモデルの基底状態探索は、NP困難なグラフ問題として知られている最大カット問題とも対応している。このようなグラフ問題は、ソーシャルネットワークにおけるコミュニティの検出や、画像処理におけるセグメンテーションなど、幅広い応用を持っている。そのため、イジングモデルの基底状態探索を行うソルバがあれば、このような様々な問題に適用することができる。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2016−51314号公報
【特許文献2】特開2016−51351号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
イジングモデルの基底状態を求めることは、上述のようにNP困難問題であることから、イノマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリステックを導入して高速化を図るアルゴリズムも提案されているものの、イノマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。
【0012】
このような装置では、解くべき問題に対応した並列度が必要になってくる。イジングモデルの場合では、基底状態を探索すべきイジングモデルのスピン数に対応して、それぞれ1つのスピンや、当該スピンにおける他のスピンとの相互作用を表現する素子(以下、これを単位素子と呼ぶ)が必要となる。以上のことを考慮した場合、単位素子を規則的に多数並べて実現できる半導体装置のような固体素子でイジングモデルの基底状態探索を行えることが望ましい。特に、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの記憶装置に代表されるようなアレイ構造であり、かつ集積性を高められるように単位要素が単純な構造であることが望ましい。そこで、近年、このような半導体装置(半導体チップ)の開発が本願特許出願人により進められている(例えば特許文献1)。
【0013】
ところで、このような半導体装置として、例えば、多数のスピンを含む大規模なイジングモデルの基底状態を探索可能な半導体装置を構築するためには、単位素子をスピン数に応じた数だけ半導体チップに搭載する必要があるが、このような半導体装置は、チップサイズが大きく、また製造コストも高くなる。従って、このような半導体装置を実現するに際しては、ある程度の数の単位素子が搭載された半導体チップを複数接続するようにして構築することが望ましい。例えば特許文献2には、必要な単位素子が保持するノードの状態を示す値をチップ間配線を時分割で共有しながら他の半導体チップとの間で送受することが提案されている。
【0014】
しかしながら、半導体チップ間の配線量を削減しつつ、チップ間の送受信を高速化して、低コストかつ高性能な情報処理装置を提供することが望まれる。
【課題を解決するための手段】
【0015】
本発明の一側面は、スピンの状態を記憶するスピンユニットを複数備え、スピンユニットのスピンの状態を他のスピンユニットのスピンの状態に基づいて更新することで、所定の状態を探索する情報処理装置である。この情報処理装置は、複数の第1のスピンユニットが形成された第1の半導体集積回路装置と、第2のスピンユニットが形成された第2の半導体集積回路装置と、第1の半導体集積回路装置と第2の半導体集積回路装置とを接続するチップ間配線と、チップ間配線に接続されるとともに、複数の第1のスピンユニットで共有される送信側接続部と、を備えるものである。送信側接続部は、複数の第1のスピンユニットのうち、スピンの状態の変化があったスピンユニットのスピンの状態を、チップ間配線を介して、第2の半導体集積回路装置に送信する。
【0016】
本発明の他の一側面は、複数のスピンユニットからなるスピンアレイが形成された半導体集積回路装置である。スピンユニットの其々は、1つのスピンの状態を表現する値を記憶する第1のメモリセルと、1つのスピンに相互作用を及ぼす他のスピンからの相互作用を示す相互作用係数を記憶する第2のメモリセルと、他のスピンの状態を表現する値と相互作用係数に基づいて、1つのスピンの次状態を決定する論理回路と、スピンの次状態が現在のスピンの状態と異なるかどうかを検出する検出回路とを備える。複数のスピンユニットは、一つの送信側接続部を共有し、送信側接続部は、複数のスピンユニットの第1のメモリセルの内容を入力とし、そのうちの一つを選択するマルチプレクサと、複数のスピンユニットの検出回路の出力を入力とする調停器と、を備える。マルチプレクサは、調停器の出力に基づいて第1のメモリセルの内容を選択し、装置外部へ出力する。
【発明の効果】
【0017】
半導体チップ間の配線量を削減しつつ、チップ間の送受信を高速化して、低コストかつ高性能な情報処理装置を提供することが望まれる。
【図面の簡単な説明】
【0018】
図1】実施の形態による情報処理装置の全体構成を示すブロック図である。
図2】マルチイジングチップの構成を示すブロック図である。
図3】イジングチップの構成を示すブロック図である。
図4】イジングモデルの説明に供する概念図である。
図5】第1の実施の形態によるスピンユニットの構成を示すブロック図である。
図6】第1の実施の形態によるスピンユニットの構成を示すブロック図である。
図7】スピンユニットの説明に供する概念図である。
図8】イジングチップ上のスピンユニットの配置例を示すブロック図である。
図9】スピンユニットの説明に供する概念図である。
図10】チップ間配線の一例を示すブロック図である。
図11】チップ間接続の概略を示すブロック図である。
図12】チップ間接続部の構成を示すブロック図である。
図13】チップ間接続部に含まれる調停器の構成を示すブロック図である。
図14】送信側接続部の動作説明に供するタイミングチャート図である。
図15】受信側送信部の動作説明に供するタイミングチャート図である。
図16】基底状態探索処理の処理手順の一例を示すフローチャートである。
図17】基底状態探索中の温度制御の説明に供する概念図である。
図18】第2の実施の形態におけるイジングチップの構成を示すブロック図である。
図19】第2の実施の形態におけるスピン値受信部の構成例を示すブロック図である。
図20】基底状態探索の他の手順を示すフローチャートである。
【発明を実施するための形態】
【0019】
本実施例は、大規模なイジングモデルの基底状態を探索でき、安価かつ容易に製造可能な半導体装置を提案しようとするものである。実施例の一例では、複数のスピンを含み、イジングモデルの基底状態探索を行う半導体装置において、複数のスピンのうち隣接する複数のスピン間で伝送路を共有し、隣接する複数のスピンは、スピン値の変化を検出する回路を共有し、隣接する複数のスピンは、一組のカウンタとマルチプレクサにより、順次スピン値を前記伝送路に送信する伝送権を取得し、伝送権を取得したスピンであって、スピン値の変化があったスピンが、スピン値を前記伝送路に送信する構成が説明されている。
【実施例1】
【0020】
<有向グラフに拡張したイジングモデル>
本実施の形態では、イジングモデルを拡張した、以下の(2)式で示されるモデルを、これ以降イジングモデルと呼ぶものとする。
【0021】
【数2】
……(2)
【0022】
(1)式で示したイジングモデルとの違いは、(2)式では有向グラフで示されるような相互作用が許されることにある。一般的にイジングモデルはグラフ理論では無向グラフとして描画することができる。それは、イジングモデルの相互作用は、i番目スピンからj番目スピンへの相互作用係数Ji,jとj番目スピンからi番目スピンへの相互作用係数Jj,iとを区別していないことによる。
【0023】
本発明はイジングモデルを拡張し、Ji,jとJj,iとを区別しても適用できるため、本実施の形態でも有向グラフ化したイジングモデルを取り扱う。なお、無向グラフのイジングモデルを有向グラフのイジングモデルで取り扱う場合には、単にJi,jとJj,iとの双方向に同じ相互作用係数を定義することで可能である。この場合、同じモデルでも(1)式のエネルギー関数に対して(2)式のエネルギー関数ではエネルギーの値が2倍になる。
【0024】
<情報処理装置の全体構成>
図1は、本実施の形態による情報処理装置の全体構成を示す。この情報処理装置1はパーソナルコンピュータやワークステーション又はサーバなどから構成され、システムバス2を介して構成されたCPU3、メモリ4、記憶装置5及び1つ又は複数のマルチイジングチップ6を備える。
【0025】
記憶装置5には、本情報処理装置1が解くべき単一の問題の問題データ7が格納され、メモリ4には、問題変換プログラム8及びマルチイジングチップ制御プログラム9が格納される。問題変換プログラムは、かかる問題を必要に応じて単一のイジングモデル形式の問題に変換すると共に、かかるイジングモデル形式の問題を必要に応じて複数の部分問題に分割し、これらの部分問題を個々のマルチイジングチップ6にそれぞれ振り分けるプログラムである。またマルチイジングチップ制御プログラム9は、個々のマルチイジングチップ6において対応する部分問題を解くための制御を行うためのプログラムである。なお部分問題は、それ自体が他の部分問題と独立した単一のイジングモデル形式の問題である。
【0026】
マルチイジングチップ6は、イジングモデルの基底状態探索を行う専用ハードウェアであり、例えば画面描画処理のための専用ハードウェアであるGPU(Graphics Processing Unit)のように、情報処理装置1に装着する拡張カードの形態を取る。
【0027】
図2は、情報処理装置1のマルチイジングチップ6の構成例を示すブロック図である。マルチイジングチップ6は、図2に示すように、インタフェース10、イジングチップ群11及び制御部12を備えて構成され、インタフェース10及びシステムバス2(図1)を介してCPU3(図1)との間でコマンドや情報の送受を行う。
【0028】
イジングチップ群11は、それぞれがイジングモデルの基底状態探索を行う専用のハードウェアである複数のイジングチップ13から構成される。イジングチップ13間はチップ間配線14により接続されており、このチップ間配線14を介してイジングチップ13同士が必要な情報を送受する。
【0029】
制御部12は、イジングチップ群11を構成する各イジングチップ13を制御する機能を有し、コントローラ15、相互作用クロック生成器16及び乱数発生器17を備えて構成される。
【0030】
コントローラ15は、マルチイジングチップ6全体の動作制御を司るプロセッサであり、情報処理装置1のCPU3(図1)からシステムバス2(図1)及びインタフェース10を介して与えられるコマンドに従ってイジングチップ群11を構成する各イジングチップ13の動作や、相互作用クロック生成器16及び乱数発生器17を制御する。
【0031】
また相互作用クロック生成器16は、後述する相互作用クロックを生成するクロック生成器である。相互作用クロック生成器16により生成された相互作用クロックは、イジングチップ群11を構成する各イジングチップ13にそれぞれ与えられる。乱数発生器17は、後述のように各イジングチップ13において実行される基底状態探索が局所最適解に陥るのを防止するためのランダムなビット列からなる乱数を発生させる。乱数発生器17により発生された乱数は、各イジングチップ13にそれぞれ与えられる。
【0032】
<イジングチップの構成>
図3は、イジングチップ13の概略構成を示す。この図3に示すように、イジングチップ13は、スピンアレイ20、I/O(Input/Output)アドレスデコーダ21、I/Oドライバ22、相互作用アドレスデコーダ23及びチップ間接続部24を備えて構成される。本実施の形態では、イジングチップ13は現在広く用いられているCMOS(Complementary Metal-Oxide Semiconductor)集積回路として実装されていることを想定して説明するが、他の固体素子でも実現可能である。
【0033】
イジングチップ13は、スピンアレイ20にリード/ライトを行うためのSRAM互換インタフェース30としてアドレスバス31、データバス32、R/W制御線33及びI/Oクロック線34を備える。またイジングチップ13は、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース35として、相互作用アドレス線36及び相互作用クロック線37をも備える。
【0034】
イジングチップ13では、イジングモデルのスピンσi、相互作用係数Ji,j及び外部磁場係数hをすべてスピンアレイ20内のメモリセルに記憶する情報で表現する。スピンσの初期状態の設定や基底探索完了後の解読み出しはSRAM互換インタフェース30を介して行う。またイジングチップ13では、基底状態を探索すべきイジングモデルをスピンアレイ20に設定するための相互作用係数Ji,j及び外部磁場係数hのリード/ライトもSRAM互換インタフェース30を介して行う。
【0035】
そのため、スピンアレイ20内のスピンσ、相互作用係数Ji,j及び外部磁場係数hにはアドレスが付与されている。そしてイジングチップ13にスピンσ、相互作用係数Ji,j又は外部磁場係数hをリード/ライトする場合、対応するアドレスがコントローラ15からアドレスバス31を介してI/Oアドレスデコーダ21に与えられ、これらスピンσ、相互作用係数Ji,j及び外部磁場係数hのリード/ライトを制御するR/W制御信号がコントローラ15からR/W制御線33を介してI/Oドライバ22に与えられる。
【0036】
かくしてI/Oアドレスデコーダ21は、アドレスバス31を介して与えられたアドレスに基づいてスピンアレイ20のワード線をアクティベートし、I/Oドライバ22は、R/W制御線33を介して与えられたR/W制御信号に基づいてスピンアレイ20内の対応するビット線を駆動する。これによりデータバス32を介して与えられたスピンσの初期値や、相互作用係数Ji,j及び外部磁場係数hの設定値がスピンアレイ20に設定され、又は、基底探索完了後の解がスピンアレイ20から読み出されてデータバス32を介して外部に出力される。
【0037】
なお、SRAM互換インタフェース30を構成するアドレスバス31、データバス32及びR/W制御線33は、I/Oクロック線34を介して制御部12からイジングチップ13に与えられるI/Oクロックに同期して動作する。ただし、本発明においてインタフェースが同期式である必要はなく、非同期式のインタフェースでも良い。本実施の形態では、同期式のインタフェースであるという前提で説明を行う。
【0038】
また、イジングチップ13は、基底状態探索を行うために、スピンアレイ20の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース35である。具体的に、イジングチップ13は、コントローラ15から与えられる相互作用を行うスピン群を指定するアドレスを相互作用アドレス線36を介して入力し、相互作用クロック線37を介して入力される相互作用クロック生成器16からの相互作用クロックに同期して相互作用を行う。相互作用アドレスデコーダ23は、相互作用アドレス線36を介して与えられたアドレスに基づいてスピンアレイ20に対する相互作用係数Ji,j及び外部磁場係数hのリード/ライトを行う。
【0039】
加えて、イジングチップ13は、後述のようにイジングモデルのスピンを表現するメモリセルの値を確率的に反転させる乱数を注入するための乱数注入線38を有している。図2について上述した乱数発生器17により発生された乱数は、この乱数注入線38を介してスピンアレイ20に与えられる。
【0040】
チップ間接続部24は、チップ間配線4を用いて、隣接して配置されたイジングチップ13との間で必要なスピンσの値を送受する際のインタフェースとして機能する。チップ間接続部24の詳細については後述する。
【0041】
<スピンアレイの構成>
スピンアレイ20は、1個のスピンσ並びにそれに付随する相互作用係数Ji,j及び外部磁場係数hの保持と、基底状態探索演算とを実現するスピンユニットを基本構成単位として、スピンユニットを多数個並べた構成を有する。
【0042】
図4は、スピンユニット40を複数個並べることで、3次元格子状のトポロジを持つイジングモデルを構成する例を示している。すなわち、スピンアレイ20の機能を概念的に示している。図4の例は、3(X軸方向)×3(Y軸方向)×2(Z軸方向)の大きさの3次元格子である。座標軸の定義は図示した通り、図面右方向をX軸、図面下方向をY軸、図面奥行き方向をZ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本発明とは関係しない。3次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図4の3次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数5のスピン(頂点)が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。
【0043】
図4に示す1個のスピンユニット40には、隣接するスピン(例えば隣接するスピンが5個の場合σ、σ、σ、σ、σ)の値が入力される。このためスピンユニット40は、これら入力する隣接するスピンの値を保持するためのメモリセルを有している。またスピンユニット40は、かかるスピンの値に加え、外部磁場係数と、上述した隣接するスピンとの相互作用係数(隣接する5スピンとの相互作用係数Jj,i、Jk,i、Jl,i、Jm,i、Jn,i)とをそれぞれ保持するメモリセルをも有している。
【0044】
ところで、先に述べたようにイジングモデルは一般的に無向グラフで表現される相互作用を有している。上述した(1)式では、相互作用を表わす項として、Ji,j×σ×σがあるが、これはi番目スピンからj番目スピンへの相互作用を示している。この場合、一般的なイジングモデルではi番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。つまり、Ji,jとJj,iは同一である。しかし、本実施の形態のイジングチップ13では、先に述べたようにこのイジングモデルを有向グラフに拡張し((2)式)、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【0045】
そのため、1個のスピンユニットをi番目スピンσと考えた時に、このスピンユニット40が保持する相互作用係数であるJj,i、Jk,i、Jl,i、Jm,i、Jn,iは、隣接するj番目、k番目、l番目、m番目、n番目のスピンσ、σ、σ、σ、σから、i番目スピンσへの相互作用を決めるものである。このことは、図4において、スピンユニット40に含まれている相互作用係数が対応する矢印(相互作用)が、図示されているスピンユニット40の外部のスピンから、スピンユニット40の内部のスピンに向かっていることに対応している。
【0046】
<スピンユニットの構成>
図5はスピン値変化情報を出力するスピンユニットの構成を示すブロック図である。
【0047】
図6はメモリとしてのスピンユニットの構成を示すブロック図である。
【0048】
スピンユニット40の一構成例を図5及び図6を用いて説明する。スピンユニット40は2つの側面をもっており、便宜上、図5及び図6に分けて説明するが、1個のスピンユニット40は図5及び図6の構成の双方を含む。図5はスピンユニット40間の相互作用を実現するための回路を示し、図6はスピンユニット40が有するメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1にイジングチップ13外からアクセスするためのインタフェースであるビット線41とワード線42とに注目してスピンユニット40の構成を図示したものである。
【0049】
スピンユニット40は、イジングモデルのスピンσ、相互作用係数Jj,i〜Jn,i及び外部磁場係数hを保持するために、複数の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と略記する(図7参照)。
【0050】
ここで、スピンユニット40はi番目のスピンを表現するものとして説明を行う。メモリセルNはスピンを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは+1/−1(+1を上、−1を下とも表現する)であるが、これをメモリセルが保持可能な2値である0/1に対応させる。例えば、+1を1、−1を0に対応させる。
【0051】
図7を用いて、スピンユニット40が有するメモリセル対ISx、IUx、ILx、IRx、IDx及びIFxと、図4に示したイジングモデルのトポロジとの対応関係を示す。メモリセル対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個のスピンと接続される。本実施の形態のイジングチップ13では、外部磁場係数及び相互作用係数として+1/0/−1の3値に対応する。そのため、外部磁場係数及び相互作用係数を表わすためには、それぞれ2ビットのメモリセルが必要となる。
【0053】
メモリセル対ISx,IUx,ILx,IRx,IDx及びIFxは、図5および図6に示すように、末尾の数字が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は、それぞれイジングチップ13の外部からリード/ライト可能でなければならない。そのために、図6に示すように、スピンユニット40はビット線41とワード線42とをそれぞれ有している。
【0056】
図8は、メモリとしてのスピンアレイ20のレイアウトを示す平面図である。そしてイジングチップ13では、図8に示すように、スピンユニット40が半導体基板上にタイル状に並べられてビット線41とワード線42とが接続されており、I/Oアドレスデコーダ21とI/Oドライバ22とでこれらのスピンユニット40を駆動、制御又は読み出しすることにより、一般的なSRAM(Static Random Access Memory)と同様にスピンユニット40内のメモリセルをイジングチップ13のSRAM互換インタフェース30でリード/ライトすることができるようになされている。
【0057】
図9は、図8の格子上の座標とスピンユニット番号の対応を示す概念図である。図8上で表現されているスピンユニット(NxyzというようにX軸、Y軸及びZ軸上の位置によって符号を付与している)が、3次元格子のトポロジでどの頂点に対応するかが図9に示される。3×3×2の3次元格子頂点を2次元平面上に配置するために、X軸方向の格子頂点配列の間隔にZ軸方向の格子頂点配列の各格子頂点を挿入するように配置している。すなわち、図9の2次元平面上でのY軸方向(図面下側がY軸の正方向)にはNx0z、Nx1z、Nx2zというように配置されるが、X軸方向(図面右側がX軸の正方向)にはN0y0、N0y1、N1y0、N1y1、N2y0、N2y1というように、Z軸方向座標が0と1のスピンユニットが交互に配置される。
【0058】
図5を再度参照する。本実施例では、スピンユニット40は同時にスピンの更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット40毎に独立して持っている。図5では、スピンユニット40は、外部とのインタフェースとして、信号線NU,NL,NR,ND,NF,ON,DIFFN及びRNDを有する。
【0059】
図5に見られる信号線ONは、当該スピンユニット40のスピンの値を他のスピンユニット40(図4のトポロジで隣接するユニット)に出力するインタフェースである。信号線DIFFNは、相互作用を計算した結果、計算前のスピンの値Nと次のスピンの状態に変化があったかどうかを出力する。計算前のスピンの値(メモリセルNの値)と、次のスピンの状態の計算結果であるXOR回路45の出力とをXOR回路200に入力することでスピンの状態の変化を検出する。変化があった場合は1が出力され、変化がなかった場合は0が出力される。
【0060】
信号線NU,NL,NR,ND及びNFは、それぞれ他のスピンユニット40(図4のトポロジで隣接するユニット)が保持するスピンの値を入力するためのインタフェースである。信号線NUは上側のスピン(Y軸方向で−1)、信号線NLは左側のスピン(X軸方向で−1)、信号線NRは右側のスピン(X軸方向で+1)、信号線NDは下側のスピン(Y軸方向で+1)、信号線NFは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)からの入力である。
【0061】
スピンユニット40では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を見たときに、正の値と負の値のどちらが支配的か判断することと等価である。例えば、i番目スピンσに、スピンσ、σ、σ、σ及びσが隣接しているとして、スピンσの次状態は以下のように決まる。
【0062】
まず、たとえば隣接スピンの値はσ=+1、σ=−1、σ=+1、σ=−1、σ=+1とし、相互作用係数はJj,i=+1、Jk,i=+1、Jl,i=+1、Jm,i=−1、Jn,i=−1、外部磁場係数h=+1とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σ×Jj,i=+1、σ×Jk,i=−1、σ×Jl,i=+1、σ×Jm,i=+1、σ×Jn,i=−1、h=+1となる。外部磁場係数は、常に値が+1のスピンとの相互作用係数と読み替えて良い。
【0063】
ここで、i番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれi番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、j番目スピンとの間での局所的なエネルギーは、i番目スピンを+1とした時には−1、i番目スピンを−1としたときには+1となるので、i番目スピンを+1にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。
【0064】
このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えたときに、i番目スピンを+1/−1のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数及び隣接スピンの積と、外部磁場係数とをそれぞれ並べたものにおいて、+1と−1のどちらが多いか数えれば良い。先程の例では、+1が4個、−1が2個である。仮に、i番目スピンを+1とすると、エネルギーの総和は−2、i番目スピンを−1とするとエネルギーの総和は+2になる。よって、+1の個数が多い時にはi番目スピンの次状態を+1とし、−1の個数が多い時にはi番目スピンの次状態を−1にするという多数決で、エネルギーを最小化するi番目スピンの次状態を決定することができる。
【0065】
図5に示した論理回路46は、上述の相互作用を行うための回路である。まず、隣接スピンの状態と、相互作用係数の+1/−1を示すメモリセルIU1,IL1,IR1,ID1,IF1が保持する値との排他的論理和の否定(XNOR)をXNOR回路47で求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる(+1は1、−1は0にエンコードされているものとする)。
【0066】
もし、相互作用係数が+1/−1だけであれば、XNOR回路47の出力のうち+1/−1のどちらが多いかを多数決論理回路44において多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態+1のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理回路44に入力すべき値となる。
【0067】
次に、係数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を実現する。
【0068】
具体的には、図5に示すように、XOR回路48を利用して、係数のイネーブルを決めるビット(ビットセルIS0,IU0,IL0,IR0,ID0及びIF0にそれぞれ保持されたビット)の値により、多数決論理回路44に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、メモリセルIS0が保持するビットの値が0の場合、メモリセルIS1が保持するビットの値と、メモリセルIS1が保持するビットの値を反転させた値が同時に多数決論理回路44に入力されるので、外部磁場係数の影響は無い(外部磁場係数が0に相当する)ことになる。また、メモリセルIS0が保持するビットの値が1の場合には、メモリセルIS1が保持するビットの値と、その値と同じ値(複製)が同時に多数決論理回路44に入力されることになる。
【0069】
上述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することができるが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことができず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転されるために、スピンユニット40はインタフェースとしてRND線49を有する。
【0070】
そしてスピンユニット40には、上述のように乱数発生器17(図2)から乱数注入線38(図3)を介してスピンアレイ20(図3)に与えられた乱数がこのRND線49を介して与えられ、この乱数がXOR回路45に入力することで、スピンの値が確率的に反転される。
【0071】
なお、図5に示したスピンユニット40のインタフェースであるNU,NL,NR,ND,NFのスピンユニット40間の配線例を図10に示す。この図10は、「Nxyz」というある1個のスピンユニット40に注目したときに、図4に示すようなトポロジを図8のようなスピンユニット配置で実現するために必要な配線を示している。このような配線をスピンユニット40ごとに行うことで、図4のトポロジを実現することができる。
【0072】
<マルチイジングチップ内におけるイジングチップ間の配線方法>
次に、マルチイジングチップ6(図1)内におけるイジングチップ13(図2)間の配線方法について説明する。
【0073】
たとえば並列化を進めるため、単一のイジングチップ13に多数のスピンユニット40を搭載しようとすると、イジングチップ13のチップサイズが増大し、コスト増につながる。このためマルチイジングチップ6に多数のスピンユニット40を搭載するに際しては、マルチイジングチップ6に複数のイジングチップ13を実装し、これらをチップ間配線14により接続する方法がコスト上昇を抑える上で効果的である。
【0074】
この場合、イジングチップ13の端部に設けられたスピンユニット40と、他のイジングチップ13内の対応するスピンユニット40との間で、図10について上述したパターンでの配線を施す必要がある。このために、例えば図11に示すように、隣接する各イジングチップ13のチップ端部にそれぞれ設けられた対応するスピンユニット40同士を、チップ間接続部24(図3)の一部を構成する接続部50とチップ間配線14とを介して接続する必要がある。
【0075】
なお、ここで言う「チップ端部に設けられたスピンユニット40」とは、図4のイジングモデルで隣接するスピンユニット40Aの値を受け取るスピンユニット40Bが、スピンユニット40Aが設けられたイジングチップ13Aと異なるイジングチップ13Bに設けられたスピンユニットである場合、そのスピンユニット40Bを指す。
【0076】
隣接するイジングチップ13のチップ端部に設けられたすべての対応するスピンユニット40同士をそれぞれ接続するよう接続部50やチップ間配線14(図2)を形成すると、接続部50の数やチップ間配線14の配線量が大きくなり過ぎるためにコストの上昇や実装上の困難が生じる。
【0077】
図11は、本実施例のチップ間接続の概略を示す図である。本実施例においては、イジングチップ13Aのチップ端部に設けられた各スピンユニットの値を隣接するイジングチップ13Bに伝送する際、図11に示すように、接続部50を複数のスピンユニット(図11の例では3つのスピンユニット)で共有した上で、値に変化があったスピンユニットのスピン値のみを伝送することで、基底状態の精度を大きく低下させることなく、隣接するイジングチップ13間のチップ間配線の配線量を低減させる。なお、接続部50をいくつのスピンユニットで共有するかは重要ではない。
【0078】
図12は、イジングチップ13Aとイジングチップ13Bの間でスピン値の伝送を行う部分の詳細構成を示す。説明の便宜上、12左側のイジングチップ13Aには送信側接続部62のみを、図12右側のイジングチップ13Bには受信側接続部63のみをそれぞれ図示して一方向の伝送のみ示しているが、実際にはそれぞれのイジングチップ13が接続部50として送信側接続部62と受信側接続部63の両方を備えていることは図11に示した通りである。
【0079】
イジングチップ13Aの送信側接続部62は、OR回路70と調停器71とマルチプレクサ72とドライバ75から構成される。チップ端部のスピンユニット40Aの出力のうち、スピン値が変動したことを示す信号線DIFFNの値はOR回路70と調停器71に入力される。先に説明したように、スピンの状態に変化があった場合はDIFFNの値として1が出力され、変化がなかった場合は0が出力されている。
【0080】
このとき、いずれか1つの信号線DIFFNの値が1であれば有効なスピン値を伝送することを示す信号線TXVALIDを1にする。調停器71は信号線DIFFNの値が1であるスピンユニットが複数あった場合に、チップ間配線14を介してスピン値を伝送すべきスピンユニット40Aを一つ選択し、その位置を信号線SPINADRに出力する。調停器71の構成は後述する。
【0081】
イジングチップ端部のスピンユニット40Aの出力のうち、スピンユニット40Aの値を示す信号線ONの値はマルチプレクサ72に入力される。マルチプレクサ72の入力を選択する信号は調停器71の出力を用いる。これにより、調停器71が選択したスピンユニット40のスピン値が信号線SPINVALに出力される。ドライバ75は信号線TXVALID、SPINADR、SPINVALの値を、チップ間配線14を介して隣接するイジングチップ13Bに伝送する。
【0082】
受信側接続部63は、レシーバ76とデコーダ73とデマルチプレクサ74とAND回路78および1ビットの値を記録するバッファメモリ77から構成される。レシーバ76はチップ間配線14を介して隣接するイジングチップ13Aの送信側接続部62から伝送された信号を受信する。信号線TXVALIDの値はAND回路78に入力される。信号線SPINADRの値はデコーダ73に入力され、伝送元のスピンユニット40の位置を示す信号線のみに値1を出力する。デコーダ73の出力はAND回路78に入力される。また、信号線SPINADRの値はデマルチプレクサ74の選択信号として入力される。信号線SPINVALの値はデマルチプレクサ74に入力され、伝送元のスピンユニット40の位置を示す信号線のみに信号線SPINVALを介して入力された値を出力する。
【0083】
AND回路78及びデマルチプレクサ74の出力はバッファメモリ77にそれぞれ入力される。AND回路78の出力はバッファメモリ77のイネーブル信号として入力され、デマルチプレクサ74の出力はバッファメモリ77に記録する値として入力される。これにより、有効な値が伝送されていることを示す信号線TXVALIDの値が1かつ、デコーダ73の出力が1となる位置のバッファメモリ77のみがイネーブル状態となるため、伝送元のスピンユニット40Aに対応する位置のスピンユニット40Bに接続されているバッファメモリ77のみ値が更新されることになる。
【0084】
なお、ここでドライバ75とレシーバ76は例えば、一般的に用いられる伝送規格であるLVDSなどを用いて構成することができるが、これに限るものではない。
【0085】
図13に調停器71の構成例を示す。調停器71はカウンタ80とシフタ81とエンコーダ82と減算器83から構成される。調停器71はスピンユニット40のスピンの値に変化があったことを示す複数の信号線DIFFNの値を入力として、値が1である信号線を一つ選択してその信号線の位置を出力する機能を持つ。このとき、複数のスピンユニット40の値が変化した場合に、選択されるスピンユニット40に偏りが出ないようにすることが望ましい。カウンタ80は相互作用クロックに同期して毎サイクルカウントアップされ、信号線DIFFNの本数−1までカウントすると0に戻る。カウンタ80の値に応じてシフタ81で入力信号線の値をバレルシフトし、エンコーダ82で値が1である信号線の位置を出力する。エンコーダ82の出力から減算器でカウンタの値を減算することで、元の入力信号において値が1である信号線の位置を出力する。
【0086】
このようにして、調停器71はスピンの値に変化があったスピンユニット40を選択する優先順位をその都度変更することにより、選択されるスピンユニット40に偏りが出ないようにする。また、選択されるスピンユニット40に偏りが出ないようにするため、このほかにも乱数を用いてランダムにスピンユニットを選択するなどの各種の方法が考えられる。
【0087】
図14に、図12で示した送信側接続部の動作例を示すタイミングチャートを示す。この例では、送信側接続部に4つのスピンユニットが接続されているものとする。カウンタは調停器71に含まれるカウンタの値を示す。spin0,spin1,spin2,spin3はそれぞれ送信元となるスピンユニット40のスピンの値である。diff0,diff1,diff2,diff3はそれぞれ送信元となるスピンユニット40のスピン値が変化したかどうかを示す値である。TXVALID,SPINADR,SPINVALはそれぞれ図12で示した送信側接続部62の同名の信号線の値である。
【0088】
時刻1ではdiff1のみが1であるため、SPINADRに1が出力される。時刻2では、diff0,diff3の2本が1であるが、カウンタの値が2であるため、diff2を先頭に値1の信号線の位置を探すため、SPINADRの出力は3となる。時刻5,6,7も同様に、当該時刻のカウンタの値を起点に値が1である信号線の位置を探し、その位置を出力している。一方、時刻4では値が変化したスピンが存在しないため、TXVALIDの値が0となる。この時刻の値は受信側で無視されるため、SPINADR,SPINVALの値は意味を持たないが0を出力するものとしている。
【0089】
図15に受信側スピン値の伝送例を示す。図14の例で示した送信側接続部62の送信した信号を受信する場合の動作を示している。送信側接続部62が時刻0に送信した値は所定の遅延時間(Dとする)経過後に受信側接続部63に到達するため、図15のタイミングチャート上段の時刻は時刻Dを起点として記述している。デコーダ0、1、2、3と記載している信号はデコーダ73の出力信号に対応している。デコーダは、信号線SPINADRの値に対応する出力のみが1となる。例えば時刻D+1では、信号線SPINADRの値が1であるので、デコーダ1のみが1となり、デコーダ0、2,3は0となる。
【0090】
デマルチプレクサ0,1,2,3と記載している信号はデマルチプレクサ74の出力信号に対応している。信号線SPINVALの値を対応する信号線に出力する。なお、この例では選択信号に対応しない出力は0としている。例えば時刻D+2では、SPINADRが3でSPINVALが1であるので、デマルチプレクサ3の出力が1となり、デマルチプレクサ0,1,2の出力は0となる。
【0091】
buf0,buf1,buf2,buf3はバッファメモリの記録している値を示す。この例では、送信側接続部から送信された値がバッファメモリに格納されるタイミングを明示するため、送信側接続部から値が到達する前の値は便宜上不定として、灰色の網掛けで記載している。
【0092】
<マルチイジングチップの制御手順>
図16は、本情報処理装置1においてCPU3(図1)により実行される基底状態探索処理の処理手順を示す。CPU3は、マルチイジングチップ制御プログラム9(図1)に基づき、この図16に示す処理手順に従って、必要なマルチイジングチップ6(図2)のコントローラ15(図2)を介して当該マルチイジングチップ6内のイジングチップ13を制御することにより、これらのイジングチップ13において基底状態探索を実行させる。
【0093】
なお、CPU3は、各マルチイジングチップ6内のイジングチップ13や、イジングチップ13内のスピンユニット40をマルチイジングチップ6内のコントローラ15(図2)を介して制御するが、以下においては理解の容易化のため、コントローラ15の存在を無視して説明を行う。
【0094】
CPU3は、ユーザからの指示等によりこの基底状態探索処理を開始すると、まず、問題データ7(図1)を問題変換プログラム8(図1)によりイジングモデル形式に変換し、さらに必要に応じて変換後の問題を分割することにより得られた部分問題についての相互作用係数、及び、外部磁場係数を、必要なマルチイジングチップ6の各イジングチップ13内の各スピンユニット40にそれぞれ設定する(SP1)。
【0095】
続いて、CPU3は、各スピンユニットが保持すべきスピンの値を乱数によりそれぞれ決定し、決定したスピンの値となるようにかかるマルチイジングチップ6における各イジングチップ13内の各スピンユニット40のスピンの値を初期化する(SP2)。
【0096】
次いで、CPU3は、予め定められた各マルチイジングチップ6内の乱数発生器17(図2)が発生する乱数において「1」が出現する確率(以下、これをビット確率と呼ぶ)を設定する(SP3)。本実施の形態の場合、初期時には乱数発生器17が発生する乱数におけるビット確率を高く設定し、その後、段階的にビット確率を下げてゆく。これにより初期時には各スピンユニット40が保持するスピンの値を反転し易くする一方、その後は徐々に当該スピンの値が反転し難く(「0」又は「1」に収束し易く)することができる。このためステップSP3では、上述の各段階におけるビット確率が設定される。
【0097】
続いて、CPU3は、マルチイジングチップ6の相互作用クロック生成器16(図2)を駆動するなどして各イジングチップ13内の各スピンユニット40における相互作用演算を1回実行させ(SP5)、この後、現在のビット確率について設定された回数分だけ相互作用演算を実行し終えたか否かを判断する(SP6)。そしてCPU3は、この判断で否定結果を得るとステップSP5に戻り、この後、ステップSP5及びステップSP6の処理を繰り返す。
【0098】
そしてCPU3は、やがて現在設定されているビット確率について設定された回数分の相互作用演算を実行し得ることによりステップSP7で肯定結果を得ると、ステップSP4で設定したビット確率毎の相互作用演算をすべて実行し終えたか否かを判断する(SP7)。
【0099】
CPU3は、この判断で否定結果を得ると、ビット確率を現在のビット確率よりも低い予め定められたビット確率に更新すると共に(SP8)、その後実行すべき相互作用演算の回数をそのビット確率について予め定められた回数に更新する(SP9)。そしてCPU3は、ステップSP5に戻り、この後、ステップSP5〜ステップSP9の処理を繰り返す。
【0100】
そしてCPU3は、やがてステップSP4で設定されたビット確率毎の相互作用演算をすべて実行し終えることによりステップSP7で肯定結果を得ると、そのとき対象としているマルチイジングチップ6における各イジングチップ13内の各スピンユニット40がそれぞれ保持するスピンの値を読み出し(SP10)、この後、この基底状態探索処理を終了する。
【0101】
<本実施の形態の効果>
以上のように本実施の形態の情報処理装置1では、マルチイジングチップ6内のイジングチップ13間において値が変化したスピンユニットのみスピン値を伝送する。これに伴ってイジングチップ13間を接続するチップ間配線14の配線量を抑えることができる。また、すべてのスピンユニットのスピン値を、限定されたチップ間配線で時分割で伝送する場合に比べて、高速な伝送が可能となる。従って、本実施の形態によれば、大規模なイジングモデルの基底状態を探索でき、安価かつ容易に製造可能なマルチイジングチップ6を実現できる。
【実施例2】
【0102】
第1の実施の形態の図16を用いて説明したとおり、マルチイジングチップ6を用いて基底状態探索を行う際、最初はビット確率を高く設定し、徐々にビット確率を下げる制御を行う。
【0103】
図17は、時間とビット確率の関係の一例を示すグラフ図である。ビット確率が高い状態ではイジングチップ13端部のスピンの値は頻繁に変化するが、ビット確率が低くなるとイジングチップ13端部のスピン値は殆ど変化しなくなる。第1の実施の形態で説明したとおり、スピンの値が変動した際に値を伝送する場合、ビット確率が低い状態に合わせてチップ間配線14の量を決定すると、ビット確率が高いときにスピン値の変化を伝送しきれない場合がある。このとき、受信側接続部63に含まれるバッファメモリ77に格納されているスピンの値が変化する回数は実際よりも少なくなる。一方で、ビット確率の高い状態では、スピン値は殆どランダムに変化するため、必ずしも隣接するイジングチップ13の正確なスピン値を把握する必要はない。
【0104】
このため、ビット確率の高い状態ではイジングチップ内に設けた乱数発生器の出力を、隣接するイジングチップ13からチップ間配線14を介して伝送されるスピン値の代わりに使用し、ビット確率の低い状態のみチップ間配線を介して隣接イジングチップのスピン値を伝送することで、物量を殆ど増やさずに精度向上を期待できる。
【0105】
図18に第2の実施の形態におけるイジングチップ13の構成を示す。同一の符号を付した要素は第1の実施の形態に含まれるものと同様である。スピンアレイへの入力として、切替信号線39を備える。切替信号線39はチップ間接続部24に入力される。切替信号の値はチップ間接続部24において、隣接するイジングチップ13チップ間配線14を介して伝送されたスピンの値を、イジングチップ13端部のスピンユニットに入力するか、乱数値を入力とするかを切り替えるために使用する。
【0106】
図19は第2の実施の形態における受信側接続部63の構成を示す図である。第1の実施の形態で説明した構成に加えて、受信側接続部63に乱数発生器90とマルチプレクサ92とをさらに備え、外部からの入力として切替信号線39を備える。乱数発生器は、相互作用クロックに同期してビット確率50%の乱数を発生させる。マルチプレクサ92は乱数発生器の出力と、バッファメモリ77に記録された値とを入力とし、切替信号線39の値を選択信号とする。これにより、切替信号の値に応じて、イジングチップ13端部のスピンユニット40に、ビット確率に応じて適切な値を供給することができる。図19では、イジングチップ13に一つ乱数発生器を設けているが、イジングチップに複数設けてもよいし、複数のイジングチップで一つの乱数発生器を共用してもよい。
【0107】
図20に、第2の実施の形態における制御手順を示す。同一のステップ番号を付したステップは図16と同じ処理を行う。CPU3はユーザからの指示により、受信側送信部で乱数値を用いるか送信側接続部62から伝送された値を用いるかを切り替えるビット確率の閾値を決定する(SP21)。CPU3は、マルチイジングチップへ入力される切替信号線に、各イジングチップ13の受信側接続部63が乱数値を使用するような値を設定する(SP23)。CPU3はビット確率を更新した際、ステップSP21で決定したビット確率を下回っているかどうかを判断する(SP30)。この判断で肯定結果を得ると、CPU3は切替信号線に、各イジングチップ13の受信側接続部63が、送信側接続部62から伝送されたスピン値を使用するような値を設定する(SP31)
<第2の実施形態の効果>
ビット確率が高く、スピン値が頻繁に変化する状態であっても近似的に受信側接続部のバッファメモリのスピン値の分布を実際のスピン値に近づけることができ、得られる解精度の向上が期待される。また、ビット確率の高い状態ではチップ間接続部を使用しないので、その間チップ間接続部を停止させることでチップ間伝送に係る消費電力を削減できる。
【0108】
本実施例によれば、イジングチップ間で必要なスピンの値を空間的又は時間的に間引きながら送受するため、これに伴いイジングチップ間を接続するチップ間配線の配線量を抑えることができる。本実施例によれば、大規模なイジングモデルの基底状態を探索でき、安価かつ容易に製造可能な半導体装置を実現できる。本発明は、イジングモデルの基底状態探索を行う半導体装置に広く適用することができる。
【符号の説明】
【0109】
1:情報処理装置
6:マルチイジングチップ
13:イジングチップ
20:スピンアレイ
40:スピンユニット
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20