JP5865456B1 - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP5865456B1
JP5865456B1 JP2014176127A JP2014176127A JP5865456B1 JP 5865456 B1 JP5865456 B1 JP 5865456B1 JP 2014176127 A JP2014176127 A JP 2014176127A JP 2014176127 A JP2014176127 A JP 2014176127A JP 5865456 B1 JP5865456 B1 JP 5865456B1
Authority
JP
Japan
Prior art keywords
spin
coefficient
value
interaction
memory cell
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014176127A
Other languages
English (en)
Other versions
JP2016051314A (ja
Inventor
地尋 吉村
地尋 吉村
山岡 雅直
雅直 山岡
真人 林
真人 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2014176127A priority Critical patent/JP5865456B1/ja
Priority to US14/638,205 priority patent/US9331695B2/en
Application granted granted Critical
Publication of JP5865456B1 publication Critical patent/JP5865456B1/ja
Publication of JP2016051314A publication Critical patent/JP2016051314A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/0002Multistate logic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1659Cell access
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5607Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using magnetic storage elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Abstract

【目的】イジングモデルの基底状態を求めるために基本構成単位となる構成要素をアレイ状に配置した半導体装置で、量子スピンの状態を疑似的に表現する構成の応用例を実現する。【構成】イジングモデルの1つのスピンを3以上の状態で表現する値を記憶する第1のメモリセルと、1つのスピンに相互作用を及ぼす他のスピンからの相互作用を示す相互作用係数を記憶する第2のメモリセルと、他のスピンの状態を表現する値と前記相互作用係数を定数または変数として持つ関数に基づいて、1つのスピンの次状態を決定する論理回路と、を有する単位ユニットを複数備える半導体装置が開示される。【選択図】 図30

Description

本発明は、相互作用モデルの計算を行う装置に関するものである。
現在、コンピュータアーキテクチャの主流はノイマン型である。ノイマン型アーキテクチャの基本動作は命令列の逐次的な実行にある。これまで、コンピュータの性能向上は主としてクロック周波数の向上に依っていた。しかし、近年では頭打ちになったクロック周波数にかわって、マルチコア化による並列処理で性能向上を実現する方策が主流になっている。
マルチコア化による並列処理では、逐次的な命令列から並列実行可能な箇所を見出し(並列性の抽出)、並列実行することで性能向上を図る。しかし、逐次的なアルゴリズムを命令列として書き下したプログラムから並列性を抽出することは容易ではない。
このような状況を鑑みると、今後、コンピュータの性能向上を図っていくためには、従来のように逐次的な命令列の実行を基本とするのではなく、本質的に並列な情報処理に移行していく必要がある。そのためには、従来の逐次的な命令列による問題の記述方法に替わって、本質的に並列な情報処理を実現するために適した問題の記述方法が必要となる。
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは,モデルを構成する複数個の主体(entity)あるいはノード(node)と,主体間の相互作用,さらに必要であれば主体毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが,いずれも相互作用モデルの一形態であると解釈できる。また,相互作用モデルの特徴として,主体間の影響を2個の主体間の相互作用に限定している(2体間の相互作用)ことがあげられる。例えば,宇宙空間にある惑星の力学を考えてみると,惑星という主体の間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが,惑星間の影響は2個の惑星間にとどまらず,3個以上の惑星が互いに影響し合って複雑な挙動を示す(いわゆる3体問題や多体問題と言われる問題になる)。 相互作用モデルの一例としてイジングモデルがある。イジングモデルは磁性体の振舞いを説明するための統計力学のモデルであり、磁性体の研究に用いられている。イジングモデルはサイト(+1/−1の2値をとるスピン)間の相互作用として定義される。トポロジが非平面グラフになるイジングモデルの基底状態を求めることは、NP困難問題であることが知られている。イジングモデルは空間方向に広がった相互作用係数で問題を表現するため、本質的な並列性を利用した情報処理を実現できる可能性がある。
ところで、イジングモデルの基底状態を求めることは、前述した通りNP困難問題であるから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。
このような装置として、例えば特許文献1に記載の装置がある。このような装置では、解くべき問題に対応した並列度が必要になってくる。イジングモデルの場合では、基底状態を探索すべきイジングモデルのスピン数に対応して、スピンや相互作用を実現する素子が必要となる。例えば特許文献1に記載の装置ではスピンとレーザーを対応させており、スピン数に比例した数のレーザーが必要となる。すなわち、多数の素子を実現できるスケーラビリティの高さが必要となる。
また,生物学の世界では脳をモデル化したニューラルネットワークが相互作用モデルの一例である。ニューラルネットワークは神経細胞のニューロンを模した人工ニューロンを主体として,人工ニューロン間はシナプス結合という相互作用を持つ。また,各ニューロン毎にバイアスを与える場合もある。社会科学の世界では,例えば人間のコミュニケーションを考えると,人間という主体と言語や通信で成される相互作用があることは容易に理解できよう。また,各人間には個別にバイアスがあることも想像できる。そのため,人間のコミュニケーションを,相互作用モデルという点で共通なイジングモデル等に模してその特性を明らかにしようという研究もなされている(例えば,特許文献2(特開2012−217518))。
また、特許文献3に示すように、超伝導素子における量子力学的な効果を利用して、イジングモデルの基底状態探索を行おうという試みもある。量子力学的な効果とは、いわゆる重ね合わせの状態を利用することであり、スピンの状態の重ね合わせを利用することで、収束性能を高めようとするものである。
しかし、スケーラビリティの観点からは、上記の装置とは異なるアプローチが求められる。すなわち、より多くのスピン数を実現するためには、大量のレーザーを並べたり、高度な冷却技術を必要とする超伝導素子では限界がある。より簡便に大きなスケーラビリティが得られる方法が求められる。現在の実装技術において最もスケーラビリティに優れているのは半導体装置(半導体集積回路)である。半導体集積回路はシリコン等の半導体基板上に、フォトリソグラフィと呼ばれる印刷技術に類似した手法で回路を形成する。また、半導体基板上に形成可能な素子や配線の大きさは年々小さくなっており(半導体の微細化と呼ばれている)、同一面積に実装可能な回路規模は年々大きくなっている。
半導体集積回路のスケーラビリティの高さはノイマン型コンピュータの性能向上をこれまで支え続けてきたが、上述したような新しい種類のコンピュータにおいても、スケーラビリティの高さを持つ半導体装置として実現可能な形態が求められるであろう。
国際公開第2012/118064号 特開2012−217518号公報 特表2011−524026号公報
半導体装置の技術を適用して作成した固体素子で、相互作用モデルの計算を行う構成を実現することを目的とする。
上記課題を解決するための、本発明の一側面は半導体装置として提供される。この装置は、相互作用モデルの注目主体(entity)の値を記憶するための多値(3値以上)を格納するメモリセルと、注目主体に相互作用を及ぼす隣接主体からの相互作用係数を記憶するメモリセルと、注目主体及び隣接主体からなる系の主体の値および相互作用係数を定数または変数として持つ関数に基づいて、前記注目主体の次状態を決定する論理回路と、を有する単位ユニットを複数備える。
本発明の他の側面は、相互作用モデルの注目主体の値を記憶するメモリセルと、注目主体に相互作用を及ぼす隣接主体からの相互作用係数を記憶するメモリセルと、注目主体及び隣接主体からなる系の主体の値及び相互作用係数を定数または変数とする関数に基づいて、注目主体の次状態を決定する論理回路と、を有する単位ユニットを複数備え、論理回路における関数計算に用いる係数の値を、複数の単位ユニットで共通に変化させるインタフェースを有する。
また、本発明の他の側面は、入力装置、出力装置、記憶装置、および処理装置からなる情報処理装置により、注目主体及び隣接主体からなる系の、主体の値および主体相互の相互作用係数を定数または変数として持つ関数で表現される、相互作用モデルの前記関数の値を所望の値とする解である主体の配列もしくはその近似解を計算する情報処理方法である。この方法では、計算において、主体配列の主体の値として+1、−1、およびこれらの中間的な値として離散化された多値の値を使用する。ここで、注目主体及び隣接主体からなる系の主体の値は、その全てを変数として持ってもよいし、一部を固定(定数)とし、他を変数としてもよい。また、相互作用係数については、その全てを変数あるいは定数として持ってもよいし、一部を定数とし、他を変数として持ってもよい。
半導体装置の技術を適用して作成した固体素子で、相互作用モデルを表す関数において、所望の値をとる状態の解の探索を行う構成を実現することができる。
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
イジングチップが解くグラフ問題の一例を説明するグラフ図。 イジングチップが解くグラフ問題の一例のカットの概念を説明するグラフ図。 イジングチップが解くグラフ問題の一例の最大カットを説明するグラフ図。 グラフ問題に対応する相互作用モデルの一例を説明するグラフ図。 グラフ問題に対応する相互作用モデルの一例の解を説明するグラフ図。 本発明の一実施例であるイジングチップの構成を説明するブロック図。 本発明の一実施例であるイジングチップを備える情報処理装置の構成を説明するブロック図。 3次元格子のスピンアレイの構成の一例を説明する斜視図。 スピンユニット間の相互作用を行う構成例を示す回路図。 スピンユニットが有するメモリセルにアクセスするための構成例を示す回路図。 3次元格子中のスピンユニットの構成例を説明する斜視図。 イジングチップのメモリマップの一例を示す平面図。 イジングチップ上のスピンユニットの配置の一例を説明するブロック図。 3次元格子のスピンアレイとスピンユニットの対応関係の一例を説明する斜視図。 スピンユニット間の相互作用を行う配線の一例を説明する配線図。 イジングチップの制御手順の一例を説明するフローチャート。 イジングチップの問題定義の構成を示す表図。 イジングチップの問題データの構成を示す表図。 イジングチップの解データの構成を示す表図。 量子状態を表現するブロッホ球の斜視図。 2値で表現されたスピンの状態の概念図。 ブロッホ球のxz平面上でx方向の横磁場を導入して表現した量子スピンの概念図。 xが正の値のみをとる場合の、量子スピンの状態を示す概念図。 量子スピンの状態を3ビットの多値で示す概念図。 スケジュール係数α[t]の例を示すグラフ図。 ランダム性制御インタフェースを備えたイジングチップのブロック図。 ランダム性制御インタフェースとスピンユニットの結線を示すブロック図。 ランダムパルス列(RS)、ランダム効果制御信号(RE)とクロックの関係を示すタイミング図。 相互作用アドレス180、相互作用クロック181、およびスケジュール制御信号(AT)の関係を示すタイミング図。 本発明の一実施例でスピンユニットの回路図。 本発明の一実施例である基底探索処理のフロー図。
物理学の世界で代表的な相互作用モデルの例として,イジングモデルをあげることができる。イジングモデルとは+1/−1(ないしは上,下など)の2状態を取るスピンを主体として,2個のスピン間の相互作用を決める相互作用係数と,個々のスピンに対するバイアスである外部磁場係数でモデルが定義される。本実施例では、相互作用モデルの計算を行う手段として、イジングモデルを扱うことができる装置であるイジングチップを例に説明を行う。もっとも、本発明は、相互作用モデル一般において、モデルを表現する関数の値を所望の値に収斂させた際に、当該関数の変数がとる値を高速に求める技術を提供するものであり、応用がイジングモデルに限定されるものではない。また、実施例中の装置は便宜的にイジングチップと呼称しているが、イジングモデル以外のモデルに適用することを妨げるものではない。
本実施例の一例は半導体装置として提供される。この半導体装置は、量子スピンの状態を疑似的に表現する構成であって、イジングモデルの注目スピンの値を記憶するための多値(3値以上)を格納するメモリセルと、注目スピンに相互作用を及ぼす隣接スピンからの相互作用係数を記憶するメモリセルと、注目スピンの外部磁場係数を記憶するメモリセルと、注目スピン及び隣接スピンからなる系のエネルギー関数に基づいて、注目スピンの次状態を決定する論理回路からなるスピンユニットを複数備えている。複数のスピンユニットはアレイ構造を形成している。
注目スピンの値を記憶するメモリセルは、スピンの値として+1の状態、−1の状態、+1でも−1でもない状態、の少なくとも3つの状態を表現できることが望ましく、+1でも−1でもない状態としては0の状態がある。
本実施例の他の例では、イジングモデルの注目スピンの値を記憶するメモリセルと、注目スピンに相互作用を及ぼす隣接スピンからの相互作用係数を記憶するメモリセルと、注目スピンの外部磁場係数を記憶するメモリセルと、注目スピン及び隣接スピンからなる系のエネルギー関数に基づいて、注目スピンの次状態を決定する論理回路と、を有するスピンユニットを複数備える半導体装置である。この装置は、論理回路におけるエネルギー関数計算に用いる係数の値を、複数のスピンユニットで共通に変化させるインタフェースを有する。複数のスピンユニットで異なる係数を用いる場合には、各スピンユニットに横磁場係数を格納するメモリセルを準備し、当該メモリセルの横磁場係数値に重みづけする信号を、上記のインタフェースから配給してもよい。
また、本発明の他の例は、入力装置、出力装置、記憶装置、および処理装置からなる情報処理装置により、イジングモデルのエネルギーを最少とするスピン配列である基底状態、もしくはその近似解を計算する情報処理方法あるいは情報処理装置である。この方法では、計算においてスピン配列のスピンの値として+1、−1、およびこれらの中間的な値として離散化された多値の値を使用する。
上記の方法あるいは装置において、好ましくは、計算に横磁場係数を導入し、横磁場係数は、複数のスピンユニットに共通するインタフェースにより制御される。
上記の方法あるいは装置において、好ましくは、計算において外部磁場係数にランダムな値を付加する。ランダムな値は、複数のスピンユニットに共通するインタフェースにより制御される。
上記の方法あるいは装置において、好ましくは、計算において、外部磁場係数の値が0の場合は、0の値の代わりにランダムな値を外部磁場係数とし、所定のタイミングで0に戻す処理を採用する。
以下、本発明の実施例を図面により説明する。前半で相互作用モデルの基底状態探索を行う、イジングチップの基本構成の実施例を説明する。後半でイジングチップの応用についての実施例を説明する。
ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略する。
本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
本明細書で引用した刊行物、特許および特許出願は、そのまま本明細書の説明の一部を構成する。
(1)イジングチップの基本構成
以下で、本発明の相互作用モデルの基底状態探索を行うデバイスの具体的な実施例であるイジングチップについて説明する。イジングチップは、第1〜第7の2値または多値(3値以上を多値と呼ぶ)のメモリセルを備えるユニットを複数備える。ある一つのユニット(注目ユニット)には、他の第1〜第5のユニットの第7のメモリセルのデータが入力され、当該他のユニットからの5つのデータと注目ユニットの第1〜第6のメモリセルのデータに基づいて演算を行い、演算結果に従って注目ユニットの第7のメモリセルのデータを書き換える。このとき、イジングチップは、当該ユニットの第7のメモリセルのデータと、他の第1〜第5のユニットの第7のメモリセルのデータが同時に書き換えられないように制御する。以上の構成のイジングチップに、イジングモデルのトポロジに従って、メモリセルのデータとユニットの接続関係を規定する。
(1−1)解くべき問題のイジングモデルの基底状態探索問題への変換
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは典型的には、+1/−1(または0/1、または上/下)の2値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎に付随する外部磁場係数で定義される。
イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することが出来る。イジングモデルのエネルギー関数E(σ)は一般的に次式(数1)で表わされる。なお、σ,σはそれぞれi番目とj番目のスピンの値、Ji,jはi番目とj番目のスピンの間の相互作用係数、hはi番目のスピンに対する外部磁場係数、<i,j>は隣接する2つのサイトの組合せ、σはスピンの配列を表わすものとする。
Figure 0005865456
イジングモデルの基底状態を求めるというのは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。例えば、因数分解や巡回セールスマン問題など、一見すると磁性体と何ら関係の無い問題をイジングモデルに変換することができる。そして、変換して得られたイジングモデルの基底状態は、元の問題の解に対応している。このことから、イジングモデルの基底状態を探索することのできる装置は、汎用的な用途に利用可能なコンピュータであると言える。
本実施例において、解きたい問題からイジングチップの設定までを通して説明するために、例題としてグラフの最大カット問題を示す。
図1は、イジングチップが解くグラフ問題の一例を説明するグラフ図である。
まず、グラフの意味を説明する。図1のグラフG=(V,E)は頂点の集合V={A,B,C,D}と、辺の集合E={a,b,c,d,e,f}から構成される。各辺は重み係数を持っており、a,b,c,d,e,fと書いたときにその重み係数を表わすものとする。
図2に示すように、このグラフの頂点Vを2つの部分集合V’とV’\Vに分割することをカットと呼ぶ。V’\VはVからV’を除いた集合を示す。ここで、分割されたV’とV’\Vの間を跨っている辺(図2の例ではc,d,e,f)をカットを跨いでいるエッジ、もしくは、カットエッジと呼ぶ。重みが無いグラフの場合にはカットエッジの本数、図2のように重み付きのグラフの場合にはカットエッジの重みの総和を、カットの大きさと呼ぶ。図2の例では、カットの大きさはc+d+e+fである。なお、図1、及び、図2は無向グラフの例であるが、有向グラフに拡張することも出来る。
最大カット問題とは、グラフG=(V,E)を与えられた時、カットの大きさを最大化するカットを求めることである。換言すれば、カットの大きさを最大化するように、頂点の集合VをV’とV’\Vにグループ分けすることと言っても良い。
図3に最大カット問題の具体的な例を示す。この例では頂点VをV’={A,B}とV’\V={C,D}に分けるようにカットした時に、カットの大きさw(V’)=2となり、このグラフにおける最大カットとなる。
図2に戻ってグラフのカットとイジングモデルの関係について説明する。図2のグラフでは、カットの大きさw(V’)=c+d+e+fである。ここで、図2のグラフをイジングモデルと見なすと、辺E={a,b,c,d,e,f}の重みは、イジングモデルの相互作用係数となる。そして、頂点V={A,B,C,D}はイジングモデルではそれぞれ+1/−1の2値の状態を持つスピンとなる。ここで、カットした頂点V’に属する頂点は+1のスピン、V’\Vに属する頂点は−1のスピンとする。つまり、A=+1,B=+1,C=−1,D=−1とする。このときのイジングモデルのエネルギーは、(数1)に示したエネルギー関数に沿って計算すると、−(a+b−c−d−e−f)=−a−b+c+d+e+fとなる。ところで、カットの大きさw(V’)=c+d+e+fであることから、このエネルギー関数は(数2)のように書くことが出来る。
Figure 0005865456
図2の例に沿って具体的に計算してみると、−((a+b+c+d+e+f)−2(c+d+e+f))=−(a+b−c−d−e−f)となることが確かめられよう。(数2)を見るとカットの大きさw(V’)を最大化すれば、エネルギーE(σ)も大きくなることが分かる。つまり、カットの大きさを最大化すると、イジングモデルのエネルギーは最大化される。逆に、カットの大きさを最小化すると、イジングモデルのエネルギーは最小化される。つまり、イジングモデルの基底状態探索は、最小カットを求めることに対応している。そこで、最小カットを求めるためには、最大カット問題の重みの符号を全て反転させることで、最小カットを求めることに変換する。
図4に図3に示した最大カット問題を、イジングモデルの基底状態探索問題に変換した例を示す。図4の各辺についている相互作用係数JAB、JAC、JAD、JBC、JBC、JCDを見ると、図3の重みの符号を反転したものになっている。これが前述した最大カット問題から最小カット問題への変換に対応する。
図5に、図4のイジングモデルの基底状態を探索し、エネルギーが最小となるようにスピンσA,σB,σC,σDを決定したものを示す。なお、図5の例ではσA=+1,σB=+1,σC=−1,σD=−1だが、イジングモデルでは全てのスピンの状態を反転させたものも同じエネルギーとなるので、σA=−1,σB=−1,σC=+1,σD=+1も基底状態となる。図5の例をみると、カットV’に属する頂点はスピンの値が+1となり、V’\Vに属する頂点はスピンの値が−1となっている。このように、イジングモデルの基底状態探索を行い、スピンの値で頂点をグループ分けすることで、最大カット、または、最小カットを実現することができるのである。
(1−2)イジングチップの構成
次に、図4に示したイジングモデルの基底状態探索を実現する装置であるイジングチップと、その制御方法を示す。ここでは、3次元格子のイジングモデルの基底状態探索を実現する装置の例を示す。しかし、本発明は3次元格子のイジングモデルに限られるものではなく、任意のトポロジ、任意のスピン数に対して適用可能である。
図6は、本実施例のイジングチップ100の構成図の例である。イジングチップ100はスピンアレイ110、I/Oドライバ120、I/Oアドレスデコーダ130、および、相互作用アドレスデコーダ140から構成される。
本実施例ではイジングチップ100は現在広く用いられているCMOS集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。本実施例では、スピンアレイ110は半導体メモリアレイで構成されている。メモリの種類は問わないが、ここでは高速動作可能なSRAM(Static Random Access Memory)を用いた例で説明する。イジングチップ100は、スピンアレイ110にリード/ライトを行うための、SRAM互換インタフェースによって駆動可能である。SRAM互換インタフェースは、アドレスバス190、データバス191、R/W制御線193、および、I/Oクロック192を含む。
イジングチップ100では、イジングモデルのスピンσ、相互作用係数Ji,j、および、外部磁場係数hを、全てスピンアレイ110内のメモリセルに記憶する情報で表現する。これらの値のスピンアレイのメモリセルへのリード/ライトは、SRAM互換インタフェースで行う。
基底状態を探索すべきイジングモデルをイジングチップ100に設定するために、メモリセルにはアドレスが付与されている。また、スピンアレイ110のスピンσ、相互作用係数Ji,j、および、外部磁場係数hは、メモリセルのアドレスに対応付けられている。任意のアドレスのメモリセルに情報をリード/ライトする手法は、公知の半導体メモリの制御技術と同様である。
なお、SRAM互換インタフェースを構成するアドレスバス190、データバス191、および、R/W制御線193は、I/Oクロック192に入力されるクロックに同期して動作する。但し、本発明においてインタフェースが同期式である必要性は無く、非同期式のインタフェースでも良い。本実施例では、同期式のインタフェースであるという前提で説明を行う。
また、イジングチップ100は基底状態探索を行うために、スピンアレイ110の内部でスピン間の相互作用を実現する。ここで、相互作用とは、スピンアレイ110のメモリセルの値を読み出し、読み出した値からエネルギーを計算し、エネルギーが小さくなるようなスピンの値を決定し、決定したスピンの値をメモリセルに書き込む一連の処理をいう。
この相互作用を外部から制御するのが相互作用制御インタフェースであり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス180で入力し、相互作用クロック181に入力されるクロックに同期して相互作用を行う。
なお、相互作用は必ずしもクロック同期回路で実現される必要はなく、非同期回路であっても構わない。この場合、相互作用クロック181の役割はクロックの入力ではなく、相互作用の実行を許可するイネーブル信号であるものとする。相互作用制御インタフェースについても必ずしも同期式である必要はなく非同期式のインタフェースでも良いが、本実施例では同期式のインタフェースを用い、相互作用が相互作用クロック181に同期して行われるという前提で説明を行う。
図6の乱数発生器150、ビット調整期151、乱数発生クロック160については後述する。また、相互作用アドレスデコーダ140についても詳細を後述する。
(1−3)イジングチップを備えた情報処理装置の構成
このイジングチップ100を1個、または、複数個用いて情報処理を実現するが、そのためには前述したSRAMインタフェースを制御しなければならない。
図7は図6のイジングチップを制御する情報処理装置の構成の一例を説明する図である。この例では、イジングチップ100は情報処理装置200の一部として利用される。
情報処理装置200の典型例としては、現在一般的に用いられているパーソナルコンピュータに、イジングチップ100で構成されたアクセラレータを装着したものである。情報処理装置200は、中央処理装置(CPU)210、一時メモリ(RAM)220、記憶装置(HDD)260、を有し、これらがシステムバス230で結合されている。
加えて、システムバス230にイジングチップコントローラ250が接続され、その先に1個ないしは複数個のイジングチップ(図7の例では、2個のイジングチップ100−1、及び、イジングチップ100−2を有する。これ以降、2個のイジングチップを特に区別する必要の無いときには、単にイジングチップ100と称する。)を持つ。このイジングチップコントローラ250とイジングチップ100がアクセラレータに相当するものであり、例えばPCI Express(登録商標)のようなペリフェラル拡張用インタフェースに挿入して使う拡張カードの形態を取ることができる。
イジングチップコントローラ250はシステムバス230(例えばPCI Express(登録商標)やQPI)のプロトコルを、イジングチップ100のインタフェースに合せて変換するものである。情報処理装置200のCPU210上で動作するソフトウェアは、一般的には特定のアドレスに対してリード/ライトを行うことで(いわゆるMMIO、Memory Mapped I/O)、イジングチップコントローラ250を経由して、イジングチップ100を制御することが出来る。
図7の情報処理装置200でイジングチップ100に問題を解かせようとする場合には、例えばHDD260に問題データを格納しておく。また、問題データをイジングモデルの基底状態探索問題に変換するためのプログラムやイジングチップ100を制御するためのプログラムが、RAM220に格納され、CPU210で実行される。
(1−4)イジングモデルの構造
イジングチップ100内のスピンアレイ110は、イジングモデルに対応し、これをシミュレートするものである。スピンアレイ110は、1個のスピン(注目スピン)とそれに付随する相互作用係数、及び、外部磁場係数の保持と、基底状態探索処理を実現するスピンユニットを基本構成単位としている。
図8はスピンユニット300を複数個並べることで、3次元格子状のトポロジを持つイジングモデルを構成する例を示している。図8の例は、3(X軸方向)×3(Y軸方向)×2(Z軸方向)の大きさの3次元格子である。
座標軸の定義は図示した通り、図面右方向をX軸、図面下方向をY軸、図面奥行き方向をZ軸としている(以下の図面でも同様)。この座標軸は実施例の説明上便宜的に必要なだけであり、発明とは関係しない。3次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図8の3次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数5のスピン(頂点)が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。
図8に示す1個のスピンユニット300は隣接するスピン(例えば隣接するスピンが5個の場合)σj,σk,σl,σm,σnの値が入力される。また、スピンユニット300はスピンσiと外部磁場係数hiに加え、前記した隣接するスピンとの相互作用係数であるJj,i,Jk,i,Jl,i,Jm,i,Jn,i(隣接する5スピンとの相互作用係数)を保持するメモリセルを有している。
ところで、イジングモデルは一般的に無向グラフで表現される相互作用を有している。前記した(数1)では、相互作用を表わす項として、Ji,j×σi×σjがあるが、これはi番目スピンからj番目スピンへの相互作用を示している。この時、一般的なイジングモデルではi番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。つまり、Ji,jとJj,iは同一である。しかし、本発明のイジングチップ100では、このイジングモデルを有向グラフに拡張し、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
そのため、1個のスピンユニット300をi番目スピンσiを含むユニットと考えた時に、このスピンユニットが保持する相互作用係数であるJj,i,Jk,i,Jl,i,Jm,i,Jn,iは、隣接するj番目、k番目、l番目、m番目、n番目のスピンσj,σk,σl,σm,σnから、i番目スピンσiへの相互作用を決めるものである。
このことは、図8において、スピンユニット300に含まれている相互作用係数が対応する矢印(相互作用)が、図示されているスピンユニット300の外部のスピンから、スピンユニット300の内部のスピンに向かっていることに対応している。
(1−5)スピンユニットの回路構成
図8で示されたスピンモデルの基底状態を求めるため、スピンユニット300を固体素子で構成する。本実施例では、半導体メモリおよび論理回路で構成されたスピンユニット300を複数個並べて、スピンアレイ110を構成する。スピンユニット300の構成の一例を図9と図10を用いて説明する。
図9は、スピンユニットの回路構成例について説明する図である。図9には、スピンユニット間の相互作用を実現するための回路を図示している。
図10は、図9の構成において、スピンユニットが有するメモリセルにイジングチップ100外からアクセスするためのインタフェースである、ワード線とビット線に注目して図示したものである。
1個のスピンユニット300は、図9と図10の双方の構成を備えるが、配線の接続関係を理解しやすくするため、便宜上図9と図10に分けて説明している。
なお、図9の相互作用を実現するための回路において図示されているインタフェースであるEN,NU,NL,NR,ND,NF,Nを、複数のスピンユニット間でどのように結線するかについては、後に図15を参照して説明する。また、図10のワード線及びビット線を複数のスピンユニット間でどのように結線するかについては、後に図13を参照して説明する。
スピンユニット300は、イジングモデルのスピンσi、相互作用係数Jj,i、……Jn,iおよび、外部磁場係数hiを保持するために、1ビットのメモリセルを複数個備えている。この1ビットのメモリセルは図9、図10中に、N(701),IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1(以上702)として図示されているものである。なお、IS0とIS1、IU0とIU1、IL0とIL1、IR0とIR1、ID0とID1、および、IF0とIF1はそれぞれ2個1組で役割を果たすものであるため、それぞれまとめてISx,IUx,ILx,IRx,IDx,および、IFxと略記する。
スピンユニット300が有する各メモリセルの構造の一例としては、公知のSRAMメモリのセルを利用することができる。すなわち、メモリセルはCMOSインバータ2個で構成されるデータ保持部を有する。インバータと直列に接続されるパスゲートトランジスタのゲートをワード線で制御し、ソース・ドレイン経路をビット線に接続することで、データ保持部へのデータ読み書きを実現する。もっとも、メモリセル構造はこれに限られず、少なくとも2値を記憶できる構成であればよい。例えば、DRAMやフラッシュメモリのような他のメモリを用いることができる。
図9の例では、各メモリセルは1ビット格納できるSRAMメモリセルとしている。しかし、多値化したメモリセルを用いてもよい。多値化したメモリセルは、物理的に1つのメモリセルを用いてもよいし、複数の1ビットメモリセルを用いて複数ビットを格納できるように構成してもよい。メモリセルを多値化すると、使用できる係数の値の自由度が広がる。一方、回路規模や処理時間は拡大する。したがって、解くべき問題の種類や用途に応じて、適切なメモリを選択すればよい。
ここで、スピンユニット300はi番目のスピンを表現するものとして説明を行う。メモリセルNはスピンσiを表現するためのメモリセルでありスピンの値を保持する。スピンの値はイジングモデルでは+1/−1(+1を上、−1を下とも表現する)であるが、これをメモリセルの2値である1/0に対応させる。本明細書では、+1を1、−1を0に対応させることにするが、逆の対応でもかまわない。
図11を用いて、図9および図10のスピンユニット300が有するメモリセルと、図8に示したイジングモデルのトポロジとの対応関係を示す。ISxは外部磁場係数を表現する。また、IUx,ILx,IRx,IDx,IFxはそれぞれ相互作用係数を表現する。IUxは上側のスピン(Y軸方向で−1)、ILxは左側のスピン(X軸方向で−1)、IRxは右側のスピン(X軸方向で+1)、IDxは下側のスピン(Y軸方向で+1)、IFxは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)との相互作用係数を示している。また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット300は最大で5個のスピンと接続される。
本実施例のイジングチップ100では、外部磁場係数、及び、相互作用係数は、+1/0/−1の3値に対応する。そのため、外部磁場係数、および、相互作用係数を表わすためには、少なくともそれぞれ2ビットのメモリセルが必要となる。図9、図10で示すように、ISx,IUx,ILx,IRx,IDx,IFxは、末尾の数字が0と1の2つのメモリセル(例えばISxの場合にはIS0とIS1)の組合せで、+1/0/−1の3値を表現する。例えば、ISxの場合には、IS1で+1/−1を表現し、IS1が1の時は+1,0の時には−1を表現する。これに加えて、IS0が0の時には外部磁場係数を0と見なし、IS0が1の時にはIS1で決まる+1/−1のいずれかを外部磁場係数とする。外部磁場係数が0の時は外部磁場係数をディセーブルしていると考えれば、IS0は外部磁場係数のイネーブルビットであると言うことができる(IS0=1の時に、外部磁場係数がイネーブルされる)。相互作用係数を表現するIUx,ILx,IRx,IDx,IFxも同様に係数とビットの値を対応させている。
図10はスピンユニット300のメモリセルと、ワード線及びビット線の関係を示す図である。
スピンユニット300内のメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1は、それぞれイジングチップ100の外部からリード/ライト可能でなければならない。そのために、図10に示すように、スピンユニット300はビット線410とワード線420をそれぞれ有している。先に述べたように、図10では末尾の数字が0と1の2つのメモリセルのセットで、+1/0/−1の3値を表現しているが、4値以上の係数を表現したい場合には、セットを構成する1ビットメモリセルの数を増やし、ビット線方向に追加すればよい。
スピンユニット300は、半導体基板上にタイル状に並べてビット線410とワード線420を接続する。図6に示すI/Oアドレスデコーダ130とI/Oドライバ120で駆動、制御、読み出しすることで、一般的なSRAMと同様に、スピンユニット300内のメモリセルをイジングチップ100のSRAM互換インタフェースでリード/ライトすることが出来る。
以上の構成により、図8に示した3×3×2の3次元格子イジングモデルを、イジングチップ100上のメモリにマッピングすることができる。
図12にイジングチップ100のメモリマップ2000の例を示す。図8のイジングモデルに対応した、18個のサイトに対応する18個のブロックを示している。各ブロックは、図9に示した、N,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1に対応する13個のビットを含む。
(1−6)スピンアレイ内のスピンユニット配置
図13は、イジングチップ100上のスピンユニット300の配置の一例を説明する図である。スピンアレイ110の構成を、半導体装置としてのレイアウトの観点から説明している。
図14は図8のスピンアレイに、スピンユニット300を識別する符号「N000」等を表記したものである。NxyzというようにX軸、Y軸、Z軸上の位置によって符号を付与している。本実施例のスピンアレイは3次元格子のトポロジを持つため、2次元平面上に回路を構成する半導体装置として実現するためには、レイアウト上の工夫が必要となる。スピンユニットは、イジングモデルのトポロジを維持した状態で、半導体基板上の2次元平面に配置、接続する。
図12、図13では、図14中のスピンユニット300の符号「N000」等と対応する符号を表記してあり、図12、図13上で表現されているスピンユニット300が、図14の3次元格子のトポロジでどの頂点に対応するかが示されている。図13からわかるように、本実施例では、3×3×2の3次元格子頂点を2次元平面上に配置するために、X軸方向の格子頂点配列の間隔にZ軸方向の格子頂点配列の各格子頂点を挿入するように配置している。
すなわち、図13の2次元平面上でのY軸方向(図面下側がY軸正の方向)にはNx0z,Nx1z,Nx2zというように配置されるが、X軸方向(図面右側がX軸正の方向)にはN0y0,N0y1,N1y0,N1y1,N2y0,N2y1というように、Z軸方向座標が0と1のスピンユニットが交互に配置される。
イジングチップ100上には物理的にはスピンユニット300を図13に示すように配置し、その上に図13に示すワード線901−1,901−2,901−3と、ビット線902−1,902−2,902−3,902−4,902−5,902−6を配線する。これらのワード線、ビット線は図10に示したスピンユニット300のワード線420とビット線410に結線される。各スピンユニット300はワード線の配列方向に13個のメモリセルを有する(ワード線420は13ビット)ので、ワード線901−1,901−2,901−3はそれぞれ13ビットとなる。
(1−7)イジングモデルの基底状態探索処理の制御
イジングモデルの基底状態探索を実現するためには、イジングモデル全体のエネルギーがより低いスピン配列になるように遷移するように、スピン間の相互作用を実現しなければならない。このための相互作用は、与えられた相互作用係数と外部磁場係数に基づいて行われる。つまり、あるスピンの次の値を、そのスピンに接続されている他のスピンからの相互作用と、そのスピンが持つ外部磁場係数から決定する。このとき、スピンの次の値は、そのスピンが接続されている範囲内での局所的なエネルギーを最小化するような値になる。
このスピンの更新は、それぞれのスピンを1個ずつ逐次的に更新することがまず考えられるが、この方法ではスピン数に比例した時間がかかってしまい、並列性を利用することが出来ない。そこで、スピン間の相互作用を全てのスピンについて同時並行的に行うことが望ましい。
しかし、全てのスピンを同時に更新しようとすることは適当でない。あるスピンを更新するときに、隣接スピンの値に基づいて、隣接スピンとの間でエネルギーを最小化するようにスピンを更新するので、それと同時に隣接スピンの値を更新すると、両方の更新が重複してしまい、エネルギーを最小化できず振動してしまう。すなわち、あるスピンを更新するときに、そのスピンに接続されているスピン(あるスピンに相互作用係数を介して直接接続されているスピンをこれ以降隣接スピンと呼ぶ)を同時に更新することは避けるべきである。
そこで、本実施例では隣接スピンは同時に更新しないように、スピンアレイ110内のスピンユニット300をグループ分けして、一度に同時に更新するのは1つのグループだけにする。図8に示すようなトポロジであれば、2グループに分ければ良い。そして、この2グループを交互に更新していく。
図6を再度参照する。図6の構成では、あるタイミングで更新するグループを指示するために、イジングチップ100は相互作用アドレス180を入力インタフェースとして有する。相互作用アドレス180は前述したグループのうち、更新するグループを指定するためのインタフェースであり、相互作用クロック181の入力によって、相互作用アドレス180で指定されるグループに属するスピン(スピンユニット300)が同時に更新される。
この方法であれば、スピンユニット300内に追加のハードウェアは必要なく、イジングチップ100全体に対して一組の相互作用アドレスデコーダ140を設けるだけで良い。そのため、構成単位であるスピンユニット300を複雑化することなく、前記の問題が解決できる。
上記の例は、隣接スピンが同時に更新されないように2つのグループに分けたが、隣接スピンが同時に更新されない分け方であれば、3以上のグループに分けてもよい。
(1−8)次のスピンの状態を決定するための回路構成
図9を再度参照して説明する。
スピンユニット300は複数並行して同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット300毎に独立して持っている。スピンの次状態を決定するための回路を図9に示す。図9ではスピンユニットは外部とのインタフェースとして、NU,NL,NR,ND,NF,Nを有する。Nは当該スピンユニットのスピンの値を他のスピンユニット(図8のトポロジで隣接するユニット)に出力するインタフェースである。NU,NL,NR,ND,NFはそれぞれ他のスピンユニットの有するスピンの値を入力するためのインタフェース830である。NUは上側のスピン(Y軸方向で−1)、NLは左側のスピン(X軸方向で−1)、NRは右側のスピン(X軸方向で+1)、NDは下側のスピン(Y軸方向で+1)、NFは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)からの入力である。なお、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。
図8のトポロジのように単に端は打ち切るのであれば、NU,NL,NR,ND,NFのうち端に対するものは何も入力しなくて良い(回路上は0ないしは1の固定値に接続するなど、未使用入力端子として適切な処理をとる)。例えばN000のスピンユニットの場合には、NU及びNLの2端子は入力が無い。
スピンユニット300では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を評価した時に、正の値と負の値のどちらが支配的か判断することと等価である。例えば、i番目スピンσiに、スピンσj,σk,σl,σm,σnが隣接しているとして、スピンσiの次状態は以下のように決まる。まず、隣接スピンの値はσ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のスピンとの相互作用係数と読み替えて良い。
ここで、i番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれi番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、j番目スピンとの間での局所的なエネルギーは、i番目スピンを+1とした時には−1、i番目スピンを−1としたときには+1となるので、i番目スピンを+1にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。
このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えた時に、i番目スピンを+1/−1のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べたものにおいて、+1と−1のどちらが多いか数えれば良い。先程の例では、+1が4個、−1が2個である。仮に、i番目スピンを+1とするとエネルギーの総和は−2、i番目スピンを−1とするとエネルギーの総和は+2になる。よって、+1の個数が多い時にはi番目スピンの次状態を+1とし、−1の個数が多い時にはi番目スピンの次状態を−1にするという多数決で、エネルギーを最小化するi番目スピンの次状態を決定することが出来る。
図9のスピンユニット300に図示する論理回路810は前記した相互作用を行うための回路である。まず、隣接スピンの状態と相互作用係数の+1/−1を示すメモリセルとの排他的論理和の否定(XNOR)で、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる(+1は1、−1は0にエンコードされているものとする)。もし、相互作用係数が+1/−1だけであれば、この出力のうち+1/−1のどちらが多いか多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態+1のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理に入力すべき値となる。
次に、係数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を実現する。
具体的には、図9に示すように、XORを利用して、係数のイネーブルを決めるビット(IS0など)の値により、多数決論理に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、IS0が0の場合、IS1の値と、IS1の反転の値が同時に多数決論理に入力されるので、外部磁場係数の影響は無い(外部磁場係数が0に相当する)ことになる。また、IS0が1の場合には、IS1の値と、その値と同じ値(複製)が同時に多数決論理に入力されることになる。
上記の説明では、スピン及び各係数は2〜3値の値をとるため、多数決論理回路を用いて回路を実現している。しかし、前述のように基底状態探索の本質は、隣接スピンと相互作用係数の積、及び、外部磁場係数を評価した時に、正の値と負の値のどちらが支配的か判断することである。よって、スピンや各係数が多値の値をとる場合は、正と負の値それぞれの加算回路として実現することができる。
(1−9)イジングモデルの基底状態探索における局所最適解の回避
(1−9−1)乱数発生器を用いる方法
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。前述の論理回路810では基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するために、所定の確率でエネルギーを大きくする遷移を許容する処理を取り入れる。
本実施例では、スピンの値を仮想的な温度Tで決まる確率で反転させることにした。ここで温度Tは基底状態探索の過程を物理的なアニーリングに例えたものである。基底状態探索の初期では高い温度とし、徐々に温度を下げながら局所的な探索を行い、最終的に温度がゼロとなる状態まで冷却していく。
図6を再度参照すると、本実施例では、スピンの値を所定確率で反転させるために、乱数発生器150と乱数発生クロック160を用いる。ビット調整器151は、基底状態探索の初期では高い確率でスピンの値を反転させ、終期では低い確率でスピンの値を反転させるように、乱数発生器150からの出力ビットを調整するものである。具体的には、乱数発生器150の出力から所定ビット数を取り出し、多入力のAND回路またはOR回路で演算することにより、基底状態探索の初期では1が多く、基底状態探索の終期では0が多く発生するように出力を調整する。
図9において、ビット調整器151からの出力がVARである。ビット調整器出力VARはアンプ821を通過し、反転論理回路820に入力される。論理回路810の出力は局所解であるスピンの値を出力するが、反転論理回路820でVARが1だった場合、スピンの値を反転させる。このようにして、スピンの値を格納するメモリセル701には、所定確率で反転された値が格納されることになる。
ライン822は、複数のスピンユニット300で単一の乱数発生器150とビット調整器151を共有するための構成であり、隣接するスピンユニットへビット調整器151出力を転送する。アンプ821は、ビット調整器151出力を分岐しても出力が落ちないようにするためのものである。
なお、図6に示すように、イジングチップ100内に乱数発生回路150を設けて各スピンユニットに乱数を配送して利用する他に、各スピンユニット300内に乱数発生回路を設けても良い。また、イジングチップ100の外に乱数発生回路を設けて、チップではチップ外からの乱数を配送するようにしても良い。
(1−9−2)電源電圧を制御する方法
図6の例では、乱数発生器を用いたが、所定の確率でエネルギーを大きくする遷移を発生させる他の手段として、スピンを表現するメモリセルに供給する電源電圧を下げることで、メモリセルのビットエラーを誘発し、スピン配列をランダムに変化させる方法がある。
そのための構成として、スピンユニット300が有するメモリセルのうち、係数を保持するメモリセルは通常電源線で供給する電圧で動作させ、スピンを表現するメモリセルNはスピン専用電源線で供給する電圧で動作させる。なお、メモリセル以外の構成要素、例えば相互作用を計算するための論理ゲート等は全て通常電源線で供給する電圧で動作する。
メモリセルのビットエラーレートはメモリセルへの供給電圧に比例している。一般的にはメモリセルにこの1V程度の電圧を供給し、記憶内容の保持に適したビットエラーレートで用いる。この電圧から、電圧を下げていくと、電圧の下げ幅に比例してビットエラーレートも悪化していく。例えば、0.6V程度まで電圧を下げることで、10−1程度のビットエラーレートになり、このようなビットエラーが発生しやすい状態を、局所最適解からの脱出に用いる。
そのため、前述したスピンの値を格納するメモリセルNは、例えば基底状態探索の初期では解空間をより広く探索することで局所最適解に陥らないようにするため、0.6Vなどの低い電源電圧をスピン用電源線に供給して、ランダムなビットエラーが生じる状況で相互作用による基底状態探索を行う。この状況では、基本的には相互作用によってエネルギーが小さい状態に遷移していくが、それと並行してビットエラーにより、状態がランダムに遷移していくことで、相互作用だけでは遷移しえない状態への遷移も発生し、解空間を広く探索することができる。基底状態探索の進行と共に、状態を安定させていくために、ビットエラーレートが起こりにくい状態へと少しずつ電圧を変化させていく。
(1−10)スピンユニット間の配線
図15はスピンユニット間の相互作用を行う配線の一例を説明する図である。
図15は、図9で示したスピンユニットのインタフェースである、NU,NL,NR,ND,NF,Nの配線の例について示す。図15は、ある1個のスピンユニットNxyzに注目した時に、図8に示すようなトポロジを図13のように配置したスピンユニットで実現するために適した配線を示している。このような配線をスピンユニット毎に行うことで、図8のトポロジを回路上に実現することが出来る。
(1−11)動作シーケンス
図16に、処理装置200において、イジングチップ100をCPU210が制御して基底状態探索を行う手順の概略を示す。
ステップS1600において、対象問題を表現するイジングモデルの相互作用係数と外部磁場係数を生成する。これは、最大カット問題の例で言えば、図3に示すような最大カット問題が与えられた時に、図4に示すイジングモデルを生成することである。
ステップS1601では、スピン割当てマップを生成する。スピン割当てマップとは、解きたいイジングモデルを解く際に、イジングチップ100にどのようにイジングモデルを割当てるか定義した情報である。例えば図4のイジングモデルを、図14のような3次元格子に当てはめ、これを図13のスピンアレイ上にマッピングし、図12のようなメモリマップを生成する。
ステップS1602で初期スピン配列を生成する。通常はスピンの初期値はランダムな値とする。
ステップS1603では、メモリマップに基づいて、係数と初期スピン配列をスピンアレイに書き込む。
ステップS1604では、相互作用アドレスを設定し、例えばスピンアレイの第1のグループと第2のグループを交互に指定する。
ステップS1605では、同じくスピンアレイの第1のグループと第2のグループのためのクロックを生成する。
ステップS1606では、相互作用アドレスと相互作用クロックに従って、スピンアレイの値を読み出し、次のスピンの状態を決定し、スピンを書き換える。このとき、前述のように局所解に陥らないように、所定確率でスピンをランダムに書き換える。
ステップS1607で所定の回数相互作用計算を行った場合、ステップS1608でスピン配列を読み出す。このスピン配列が解となる。
以上のような全体の制御は、図7に示した情報処理装置のCPU210が、RAM220に格納されたソフトウェアに基づいて行うことができる。
(1−12)イジングモデルを表現するデータ構造と書式
図17に、情報処理装置200上でイジングモデルを表現するデータ構造の例を示す。イジングモデルは、問題定義1700で定義され、相互作用係数を定義する相互作用定義部1710と、外部磁場係数を定義する外部磁場係数部1720とから構成される。
相互作用定義部1710は、相互作用の元となるスピンを指定する識別子(例えば、スピンに一意な番号を付与して、それを識別子とする)、相互作用の先となるスピンの識別子、及び、相互作用係数を一組として、この組を相互作用の数だけ並べる。これは、グラフをコンピュータ上で扱う時のデータ構造である隣接リストに近い。ここでは、表現されているイジングモデルは、有向グラフとなっている。
外部磁場係数定義部1720は、外部磁場を与えるスピンを指定する識別子と、外部磁場係数とを一組として、外部磁場係数の数だけ並べる。
なお、相互作用定義部1710で定義されていないスピン間の相互作用係数や、外部磁場係数1720で定義されていないスピンへの外部磁場係数は0とする。つまり、デフォルト値は、相互作用係数の場合には当該スピン間には相互作用が存在しないことを示す0であり、外部磁場係数の場合いは当該スピンには外部磁場が存在しないことを示す0となる。
図18は、図17のデータ構造のより具体的な表現形式、特にHDD260上でデータを保持する場合の書式(ファイルフォーマット)の一例を示す。図18のデータ構造は、HDD260上ではテキストファイルとして実現される。そのテキストファイルのフォーマットは、図18において問題データ1800として示すように、相互作用か外部磁場を識別するための識別子と、スピンの識別子及び係数とを並べたものである。
(1−13)解を表現するデータ構造と書式
図19は、図16のスピン配列読み出し(S1608)で読み出した、解または解候補となるスピン配列を示す解データを情報処理装置200上で表現するデータ構造の例1900と、そのHDD260上での書式の例とを示す。イジングモデルの解はスピン配列であることから、そのデータ構造は解1900のようにスピンの識別子と、そのスピンの値とを一組にして並べたものになる。そして、全てのスピンについて省略無く値を書き出すという前提の元に、スピンの識別子を省略して、解データ1920のようにスピンの値だけを列挙したテキストファイルとしてHDD260上に保持することが出来る。
(2)疑似的な量子アニーリングへの拡大
(2-1)量子ビットの表現方法
「(1)イジングチップの基本構成」で説明した構成では、スピンの上向きと下向きの状態を、1ビットのメモリセルで表現することができる。この構成では、シミュレーテッド・アニーリング(Simulated Annealing:SA)と呼ばれる概念において、温度に相当する遷移確率を、「(1−9)イジングモデルの基底状態探索における局所最適解の回避」で説明したスピンの所定確率での反転で模倣している。
一方、量子揺らぎに類似した過程によって基底状態を探す方法として、量子アニーリング(quantum annealing: QA)が知られている。量子アニーリングは、元のハミルトニアンに外部パラメータを導入し、それを徐々に弱めることにより、元のハミルトニアンの安定状態を得る方法である。量子アニーリングでは、スピンの値は上向きと下向きが重ね合わせて存在する状態となる。すなわち、スピンは古典的な2値の値にはならず、量子力学的な振る舞いにより、上向きか下向きかが確定せずに、観測時に確率的に上か下かが観測されることになる。
このような量子力学的スピン(量子スピン)の状態は、単純な2値の値をとらない量子ビットで表す必要があり、1ビットのメモリセルに当てはめることができない。量子ビットは2値とその重ね合わせの状態を持つことができる。しかも、その重ね合わせは単に0と1(2値を0と1とした場合。2値を−1と+1というように見做すこともできる。)が半々というようなものにとどまらず、様々な確率を取りうる。しかし、量子ビットを実現するためには高度な物理システムが必要であり、また観測によって状態が確定してしまう(重ね合わせではなくなってしまう)ことから、外乱を抑止する様々な技術を要する。そのため、極低温で動作させるなど、特殊な動作環境を必要とするものが多い。
図20に、量子状態を単位球面上に表す表記法であるブロッホ球を示す。量子ビットの状態はブロッホ球の中で、x、y、z方向に自由度を持ち、要素θ、φで規定される単位ベクトル2000で表すことができる。ブロッホ球の球面上のどこを単位ベクトル2000が指しているかによって、どのような重ね合わせの状態にあるかは異なる。
図21は、古典的な2値のスピンをとる状態であり、スピンは+1と―1の状態しかとらない。これは、ブロッホ球上ではz軸上に単位ベクトルが固定されていることに相当する。ここで、イジングモデルで量子アニーリング的な動作を模倣するために、量子スピンの状態を表現する外部パラメータとして、横磁場の概念を導入する。横磁場は図20のブロッホ球でx方向の力として表現することにする。
図22は、図20のブロッホ球で、x方向の横磁場を導入して表現した量子スピンを表す。いま、横磁場を導入するためには、x方向とz方向が定義できればよく、y方向のパラメータは使用しないので、図22はブロッホ球をy=0(すなわちφ=0)の平面でカットした状態に相当する。
図23は、図22でxが正の値のみをとる場合の、量子スピンの状態を示す図である。横磁場は正の値しかとらないので、図23の単位ベクトル2000で表現されるスピン状態を、イジングチップ上で扱えるようにすればよい。そのためには、θやφで表わす方法、xz座標で表わす方法、単位ベクトルのx軸ないしz軸上の射影で表す方法等がある。例えば、単位ベクトルのz軸上の射影で表す方法によれば、図23に示すように、スピン変数δは、+1から−1までの任意の値をとることができる。また、その任意の値を量子化することで、イジングチップで扱いやすくすることができる。
図24は、量子スピンを3bitとして離散化した場合の概念を示す。3bitの符号付2進数で表現できる整数+3〜−4のうち,+3〜−3を使用しており、−4は未使用となっている。以上のように、量子スピンの状態は、疑似的に離散的な多値で表現でき、これはスピンが+1、−1の値をとる期待値に相当する。
以降の例では、イジングモデルを例にとって説明を行う。ただし、以下で説明される技術は、主体(例えばスピン)に多値の概念を導入し、さらに、多値概念の導入によっても相互作用モデルで表現される系を表す関数の計算を、問題なく実行できる装置および方法を提供する。このような、本発明はイジングモデルだけでなく、相互作用モデルの計算一般に適用が可能である。
(2-2)係数の設定とスピン次状態の演算
本実施例では、イジングチップで量子アニーリング的な処理を実現する例を示す。
(数3)はスピンと係数が2値をとる場合の、スピンの次状態決定の条件を示す。ここで、δn[t]は時刻tにおけるn番目のスピンの値である。Nは隣接スピンの集合であり、n番目のスピンは隣接スピンに含まれるスピンである。Jijはi番目のスピンとj番目のスピンの間の相互作用係数である。hiはi番目スピンの外部磁場係数である。
Fi[t]は時刻tにおけるi番目スピンの有効磁場を示す。この式は(数1)と等価である。計算されたFi[t]の値により次状態δi[t+1]が決定できる。(数3)の条件で行うスピンの次状態の決定は、図9で説明した回路で実現できる。
Figure 0005865456
(数4)は、スピンの状態を離散的な多値で表し、量子アニーリング的な処理を実現する際の、スピンの次状態決定の条件を示す。δn[t]は時刻tにおけるn番目のスピンの値である。
Figure 0005865456
ここで、スピンの値は多値をとるので、δn[t]は+1から−1までの任意の実数をとる。N、Jij、hiの定義は(数3)と同様である。また、相互作用係数Jijと外部磁場係数hiは多値をとることにする。
ri[t]は、i番目のスピンが時刻tに観測するランダムノイズである。α[t]は時刻tにおけるスケジュール係数である。γは横磁場係数であり、多値をとることにする。
以上の係数を定義した上で、スピンの次状態は(数4)で求まる。図23で説明したように、スピンの状態はx軸方向とz軸方向に成分を有するため、(数4)でもx方向の成分xi[t]とz方向の成分zi[t]を持つ。xi[t]は時刻tにおけるx方向の力を示し、zi[t]は時刻tにおけるz方向の力を示す。
zi[t]の式は、基本的に(数3)のFi[t]同様の構成であるが、スケジュール係数としてα[t]を持っている。また、zi[t]は基本的に横磁場γで定まるが、係数として(1−α[t])を持っている。
図25はスケジュール係数α[t]の例を示すグラフである。横軸に基底状態探索の時間(相互作用回数)を定義し、縦軸にα[t](0〜1の値に正規化)を定義している。図25ではα[t]が一次関数の例を示したが、これに限るものではない。二次関数でもよいし、曲線的に変化させてもよいし、段階的に変化してもよい。スケジュール係数α[t]は、次状態を決定する際に、x方向の力とz方向の力のどちらを支配的にするかを設定するものであり、通常は図25に示すように、基底状態探索の初期に0、終期に1の値をとる。すなわち、(数4)のzi[t]は基底状態探索の初期に0、終期に絶対値で最大値をとる。また、1−α[t]は逆の傾きをとるので、(数4)のxi[t]は基底状態探索の初期にγ、終期に0の値をとる。スケジュール係数の作用は、横磁場γを徐々に弱めることに相当し、量子アニーリング的な現象を模倣している。
ランダムノイズri[t]は、スピンと係数の値が0をとり得る本実施例において、(数4)のzi[t]の右辺カッコ内の値が継続的にゼロにならないようにする。上述のように、基底状態探索の開始時にスケジュール係数α[t]は0をとるので、すべてのzi[t]は0になる。このため、すべてのδi[t+1]も0になり、すべてのスピンの値が0になる。次の相互作用であるzi[t+1]の計算時には、α[t]は0ではないが、スピンの値が0のため、外部磁場hiが0の条件では、ランダムノイズri[t]がないとzi[t+1]も0となり、この状態が最後まで続き解を得られない。そこで、外部磁場がない場合には、ランダムノイズri[t]を導入し、スピンの値が0の状態を脱出する。
(2-3)量子アニーリングの模倣のためのイジングチップの構成
前述のように、本実施例では、スピンが上向き(+1)と下向き(−1)の重ね合わせで存在する状態を利用し,重ね合わせの状態の段階は無制限である。観測時は確率的に+1か−1が観測される。この状態に近い状態をモデル化するため、スピンを多値化する。すなわち、+1と−1の間の中間的な値(離散化された多値)を用いて,スピンに働く力の段階を表現する。
この状況をイジングチップで実現する構成を以下に説明する。基本的な構成は、「(1)イジングチップの基本構成」を踏襲するので、異なる部分について説明する。
図26は量子アニーリングを模倣するイジングチップのブロック図である。基本構成は図6に示したものと同様であるが、乱数発生器150、ビット調整期151、乱数発生クロック160が省略されている。これらは、シミュレーテッド・アニーリングにおいて、スピンの遷移確率を調整するための構成であった。量子アニーリングにおいては、この代わりにランダム性制御インタフェース2600を備えている。ランダム性制御インタフェース2500は、スケジュール制御信号(AT)、ランダムパルス列(RS)、ランダム効果制御信号(RE)の入力を含む。ここで、スケジュール制御信号(AT)は、(数4)のスケジュール係数α[t]に対応するものである。ランダムパルス列(RS)は(数4)のランダムノイズri[t]に対応するものである。ランダム効果制御信号(RE)は、ランダムノイズri[t]の適用を制御する。
図27は図26のスピンアレイ110内のスピンユニット300を示すブロック図である。各スピンユニット300には、ランダム性制御インタフェース2500の、スケジュール制御信号(AT)、ランダムパルス列(RS)およびランダム効果制御信号(RE)の信号が配給されている。これらの信号線は独立に構成されているが、便宜上1本の線で示している。スピンユニット300には「N000」等のIDと、A,Bの符号が付されている。AとBは、隣接するスピンが同時に書き換えられないように、相互作用アドレスデコーダ140で交互に相互作用が実行される、グループの別を示している。
図28は、図27のスピンユニットに入力されるランダムパルス列(RS)およびランダム効果制御信号(RE)を示している。相互作用アドレス180と相互作用クロック181は、スピンユニットのAとBのグループに、交互に相互作用を生じさせる。この構成は、図6と同様である。ランダムパルス列ri[t](RS)は、1ビットに限るものではないが、本例では+1と−1の値をとる1ビットパルスとした。この信号は通常の乱数発生器で生成することができる。ランダム効果制御信号(RE)は、この信号がHIGHの間、ランダムパルス列ri[t](RS)を有効にし、LOWの間無効にする。ランダムパルス列ri[t]が無効な間はri[t]の値は0になり、有効な間はri[t]の値は、+1または−1のランダムな値をとる。通常は、基底状態探索の初期において、ランダムパルス列ri[t]を有効とする。
図29は、相互作用アドレス180、相互作用クロック181、およびスケジュール制御信号(AT)の関係を示す。図29では、AT(1)とAT(2)の2種類の例を示した。スケジュール制御信号(AT)は、図25に示したように、暫時値が増加する信号であるが、AT(1)とAT(2)の例では、クロックに同期して段階的に増加する信号としている。例えば、信号AT(1)では、1クロックサイクルで1ずつ値が増加しており、信号AT(2)では、2クロックサイクルで2ずつ値が増加している。ここで、信号ATの最大値をATmaxとしたとき、スピンユニット300内で(数4)の演算に用いるαは、
α = AT/ATmax
となる。
スケジュール制御信号(AT)の値の増加幅や増加頻度は任意であるが、解くべき問題の内容や、解の精度、処理時間を考慮して設定すればよい。
(2-4)量子アニーリングの模倣のためのスピンユニットの構成
図30に図27のスピンユニット300の一例を示す。
入力としては、隣接スピンであるNU,NL,NR,ND,NFからはスピンの値を示す値が、スピン次状態演算回路3000に入力される。また、スケジュール制御信号(AT)、ランダムパルス列(RS)およびランダム効果制御信号(RE)の信号が、スピン次状態演算回路3000に入力される。
イネーブル信号(EN)は、相互作用アドレス180によって制御され、相互作用によるスピンの書き換えを許容/禁止する。
メモリセルであるNIU,NIL,NIR,NID,NIFには相互作用係数Jijが格納されている。メモリセルNISは外部磁場係数hiを格納し、メモリセルNIXは横磁場係数γを格納する。また、メモリセルNはスピンの値を格納する。図30の例では、係数を格納するメモリセルはmビット幅の符号付数値を格納するものとし、スピンを格納するメモリセルは、nビット幅の符号付数値を格納するものとした。例えば、上位1ビットが正負の符号を表し、下位ビットが数値(絶対値)を表すものとする。
以上の係数はスピン次状態決定回路3000に入力される。スピンの値は隣接するスピンユニットの入力となる。
スピン次状態演算回路は、(数4)に示す演算を行い、スピンの次状態であるδi[t+1]を出力する。出力は、マルチプレクサ3010の入力となり、イネーブル信号(EN)が1のときはメモリセルNのスピンの値を書き換える。イネーブル信号(EN)が0のときはメモリセルNのスピンの値は書き換えられない。
(2−5)全体システムおよび処理フロー
疑似的な量子アニーリングによって基底状態を探索するイジングチップにおいても、基本的な全体システムは、図7に示したものと同様である。また、処理フローは、図16に示したものと同様である。
以下、疑似的な量子アニーリングに特有の点について、図16と図7を参照して捕捉説明する。
図16は、処理装置200において、イジングチップ100をCPU210が制御して基底状態探索を行う手順の概略である。解くべき問題のデータはHDD260に格納される。各処理は、RAM220に格納されCPU210で実行されるプログラムで実行される。このとき必要な情報をユーザが入力してもよい。また、情報処理装置200はネットワークインターフェースを介して外部のサーバ等に接続が可能であり、当該サーバのリソースを適宜利用できるように構成してもよい。
ステップS1600において、対象問題を表現するイジングモデルの相互作用係数、外部磁場係数、および横磁場係数を生成する。本実施例においては、相互作用係数、外部磁場係数、および横磁場係数は多値をとり得るものとする。横磁場係数γは各スピンユニット共通の値でもよい。
ステップS1601では、スピン割当てマップを生成する。本実施例でも図12のようなメモリマップを生成すればよいが、数値を格納するメモリセルは多値を格納可能なメモリセルである。なお、横磁場係数γが各スピンユニット共通の場合は、横磁場係数を格納するメモリセルは省略可能であり、イジングチップの外部から入力することができる。
ステップS1602で初期スピン配列を生成する。本実施例では、基底状態探索の最初の段階では、スピンの値は影響しないので、数値はすべて同じ値でもよいが、通常はスピンの初期値はランダムな値とする。
ステップS1603では、メモリマップに基づいて、係数と初期スピン配列をスピンアレイに書き込む。
ステップS1603以降で、疑似的な量子アニーリング特有の処理について、以下に説明する。外部磁場係数が0の場合とそうでない場合で、処理が異なる。
(2−5−1)ひとつでも外部磁場係数を持つ(0でない)スピンがある場合
以下で、ひとつでも外部磁場係数を持つ(0でない)スピンがある場合のフローを説明する。ただし、以下の例では、0でないスピンが1つでもあるか否かでフローの選択を判断するが、0であるスピン数が所定数(閾値)以下か否かでフローの選択を判断してもよい。
図31に、図16のステップS1603以降の変更点を含めたフローを示す。図16と同じ符号は基本的に同じ処理である。
ステップS3100では、スケジュール係数α[t]の値を0にセットする。スケジュール係数α[t]は、スケジュール制御信号(AT)としてスピンユニットに供給される。
ステップS1604では、相互作用アドレスを設定し、例えばスピンアレイの第1のグループと第2のグループを交互に指定する。
ステップS1605では、同じくスピンアレイの第1のグループと第2のグループのためのクロックを生成する。
ステップS1606では、相互作用アドレスと相互作用クロックに従って、スピンアレイの値を読み出し、次のスピンの状態を決定し、スピンを書き換える。このとき、本実施例では図6の例のように、所定確率でスピンをランダムに書き換えることはせず、スケジュール制御信号(AT)による制御を行う。
スケジュール制御信号(AT)は、エネルギー関数の計算時に用いる横磁場係数γの重みを制御する信号である。これにより、横磁場係数の、エネルギー関数の計算における影響を変化させることができる。図30と(数4)の例では、横磁場係数γはスピンユニット内のメモリセルに格納され、スケジュール制御信号(AT)によって決まる(1−α[t])が乗算されるが、これに限るものではない。また、横磁場係数γが各スピンユニットで共通であれば、横磁場係数γはスピンユニット内のメモリセルに格納する必要はなく、スケジュール制御信号(AT)そのものとして配給することもできる。
ステップS1607では、相互作用計算の数をカウントする。所定の回数を実行していない場合は、再度相互作用計算を実行する。所定回数実行した場合は、ステップS3101でスケジュール係数に増分を加算する。(表1)に、S1607の分岐条件である所定回数の例を示した。この例ではスケジュール係数は0.2ずつ増分し、最大値は1である。(表1)の例では、初期値0を設定したスケジュール係数は、相互作用を100回行うと、S3101で0.2が加算され、スケジュール係数は0.2になる。スケジュール係数0.2で、さらに相互作用を100回行うと、S3101で0.2が加算され、スケジュール係数は0.4になる。スケジュール係数は、ランダム性制御インタフェース2500の、スケジュール制御信号(AT)で制御できるので、全てのスピンユニットの論理回路で共通して用いることができる。
スケジュール制御信号は(表1)のように、係数そのものを示すものでもよいし、タイミングのみを示す信号として、スピンユニット内で、タイミングに合わせて所定値(例えば0.2)を加算する構成としてもよい。
Figure 0005865456
S3102では、スケジュール係数が最大値を超えたかどうかをチェックする。最大値が1の場合は、これを超えるまでは相互作用を継続し、これを超えた場合は、ステップS1608でスピン配列を読み出す。(表1)の例では、スケジュール係数が1.2になった場合、スピン配列を読み出す。
読み出されるスピンの値は+1または−1の2値ではなく、通常中間の値をとる。これはスピンの値の期待値に相当するが、解としては+1または−1に決めなければならないので、スピンの値が0より大きければ当該スピンの値を+1とし、0より小さければ当該スピンの値を−1として出力する。0であれば、当該スピンの値はランダムに決めて出力する。このスピン配列が解となる。
なお、上記のすべてのスピンに対して外部磁場係数がある場合には、ランダムパルス列(RS)およびランダム効果制御信号(RE)の信号は用いない。
以上の制御は、RAM220に格納される問題変換プログラムやイジングチップ制御プログラムを、CPU210が実行することにより行われる。(表1)のような設定は、プログラムに内蔵していてもよいし、ユーザが外部から入力してもよい。
(2−5−2)すべてのスピンの外部磁場係数がない(0である)場合
次に、すべてのスピンの外部磁場係数がない(0である)場合のフローを説明する。先に説明したように、外部磁場係数を持たないスピンはゼロのまま変化しないので、疑似的な外部磁場としてランダム効果制御を行う。
この場合のフローは基本的に図31と同様である。ただし、以下が異なる。
S3100で、スケジュール係数を0に設定するとともに、ランダム効果制御信号(RE)をイネーブルする。この設定により、その後の相互作用計算(数4)においては、ランダムパルス列(RS)のランダムノイズ係数ri[t]が有効となる。図28の例によると、ri[t]は+1か−1の1ビット値をランダムにとるが、多ビット化してもよい。
S3101で、スケジュール係数に増分を加算するとともに、相互作用の所定回数の実行を条件に、ランダム効果制御信号(RE)をディセーブルする。この設定により、その後の相互作用計算(数4)においては、ランダムパルス列(RS)のランダムノイズ係数ri[t]は無効、すなわち0となる。ランダムノイズは、スピンがゼロのまま変化しないことを防止するための一種の外乱なので、相互作用を所定回数行った基底状態探索の終盤では、無効にすることが望ましい。
(表2)にランダム効果制御の一例を示す。この例では、相互作用が300回まではランダム効果制御信号(RE)はイネーブル(EN)され、301回以降ディセーブル(DS)される。図28で示したランダム効果制御信号(RE)の例だと、イネーブル(EN)は(HIGH)で、ディセーブル(DS)は(LOW)の信号だが、ランダムノイズ係数を制御できるものであれば、これに限られない。ランダム効果制御信号(RE)とランダムパルス列(RS)は、各スピンユニットで共通して用いることができ、このために、ランダム性制御インタフェース2600を用いることができる。(表2)の例では、ランダム効果制御をスケジュール係数の制御と連動させたが、図27に示すように、各信号線を独立に構成し、其々独立に制御してもよい。
Figure 0005865456
(2−5−3)すべてのスピンの外部磁場係数がない(0である)場合(例2)
次に、すべてのスピンの外部磁場係数がない(0である)場合の別のフローを説明する。
この場合のフローは基本的に図31と同様である。ただし、以下が異なる。
S1603で、係数を書き込む際に、外部磁場係数がない(0である)スピンについては、外部磁場係数をランダムに設定し、外部磁場係数hiの値を書き込んでおく。すなわち、外部磁場係数がないスピンについては、ダミーの外部磁場が書き込まれることになる。なお、外部磁場係数を書き込むメモリは、図30のNISで示すメモリである。メモリの書き込み・書換えは、SRAM互換インタフェースで行うことができる。
S3101で、スケジュール係数に増分を加算するとともに、相互作用の所定回数の実行を条件に、外部磁場係数がないスピンのダミーの外部磁場を0に書き換える。この設定により、外部磁場係数がないスピンは本来の状態に戻る。ダミーの外部磁場は、スピンがゼロのまま変化しないことを防止するための一種の外乱なので、相互作用を所定回数行った基底状態探索の終盤では、ゼロにすることが望ましい。
(表3)にダミーの外部磁場制御の一例を示す。この例では、相互作用が300回までは外部磁場係数がないスピンに、ダミーの外部磁場(random)が付加されている。301回以降は、ダミーの外部磁場を0にするために、メモリの値が0に書き換えられる。このような制御は、ランダム性制御インタフェース2500を用いて行うことができる。(表3)の例では、外部磁場係数の書換えをスケジュール係数の制御と連動させたが、其々独立に制御してもよい。独立に制御する場合は、外部磁場を制御するための配線を、図27の配線に追加する必要がある。
Figure 0005865456
なお、上記の場合には、ランダムパルス列(RS)およびランダム効果制御信号(RE)の信号は用いないでよい。
(2-5-4)システム構成
実際に問題を解く場合、外部磁場係数が0のものがあるかどうかは、係数を生成する段階(図16のS1600)で判明するので、この時点でひとつでも外部磁場係数を持つ(0でない)スピンがある場合のフロー(2−5−1)か、すべてのスピンの外部磁場係数がない(0である)場合のフロー((2−5−2)または(2−5−3))に分岐すればよい。ハードウェア構成としては、(2−5−2)の例では、ランダムパルス列(RS)およびランダム効果制御信号(RE)用の配線が必要である(図27参照)。(2−5−3)の例では、ランダムパルス列(RS)およびランダム効果制御信号(RE)用の配線は不要であるが、外部磁場係数が0のメモリセルを検出する機能、および、そのメモリセルの値をランダムと0の間で切り替える手段が必要である。これらは、イジングチップ制御プログラムでソフトウェア的に実現することができる。
図16と図31で説明した基底状態探索は複数回の相互作用計算で実行され、一つの解が得られる。この解は、実際には基底状態の近似解となるので、より精度の高い結果を得るためには、基底状態探索を複数回行い、もっとも、エネルギーが小さくなった解を最終的な解とすればよい。
(2−6)データの関係
(表4)にスピンの値と、スピンの値を示すメモリセルNに格納される多値データ、および解の関係を示す。イジングモデルの量子スピンの状態は本来+1と−1しか取れず、その間の値は+1と−1の重ね合わせの状態となる(#1)。このスピンの値を、図30のメモリN701にn-ビット幅(符号付数値)として、例えば図24の3ビットの補数表現で表すと、+3〜−3の多値データとなる(#2)。これは、スピン状態に換算すると+1、−1およびその中間の値となる(#3)。基底状態探索終了時、このスピン状態δiが得られるので、解としては、これを+1または−1のいずれかに変換する(#4)。このように本発明では、スピンの+1と−1の重ね合わせの状態を、データとして+1と−1の間の離散的な多値で表現している。なお、多値データNは、多値で表されたスピン状態と対応が取れるものであれば、(表4)の例に限るものではない。
Figure 0005865456
以上の構成は、単体のコンピュータで構成してもよいし、あるいは、入力装置、出力装置、処理装置、記憶装置の任意の部分が、ネットワークで接続された他のコンピュータで構成されてもよい。発明の思想としては等価であり、変わるところがない。
本実施例中、ソフトウエアで構成した機能と同等の機能は、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)などのハードウエアでも実現できる。そのような態様も本願発明の範囲に含まれる。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
100,100−1,100−2 イジングチップ
110 スピンアレイ
120 I/Oドライバ
130 I/Oアドレスデコーダ
140 相互作用アドレスデコーダ
180 相互作用アドレス
181 相互作用クロック
190 アドレスバス(SRAM互換インタフェース)
191 データバス(SRAM互換インタフェース)
192 I/Oクロック(SRAM互換インタフェース)
193 R/W制御線(SRAM互換インタフェース)
200 情報処理装置
210 CPU
220 RAM
230 システムバス
250 イジングチップコントローラ
260 HDD
300 スピンユニット
410 ビット線
420 ワード線
N スピンを表現するメモリセル、及び、スピンの値を出力するインタフェース

Claims (10)

  1. イジングモデルの1つのスピンを3以上の状態で表現する値を記憶する第1のメモリセルと、
    前記1つのスピンに相互作用を及ぼす他のスピンからの相互作用を示す相互作用係数を記憶する第2のメモリセルと、
    前記他のスピンの状態を表現する値と前記相互作用係数を定数または変数として持つ関数に基づいて、前記1つのスピンの次状態を決定する論理回路と、
    を有する単位ユニットを複数備える半導体装置。
  2. 前記イジングモデルの1つのスピンの値を記憶する第1のメモリセルは、前記1つのスピンの値として+1の状態、−1の状態、+1でも−1でもない状態、の少なくとも3つの状態を表現できる、
    請求項1記載の半導体装置。
  3. 前記イジングモデルの1つのスピンの値を記憶するメモリセルは、前記+1でも−1でもない状態として0の状態を表現できる、
    請求項2記載の半導体装置。
  4. 前記1つのスピンの第1バイアス係数を記憶する第1バイアス用メモリセルを備え、
    該第1バイアス用メモリセルに、
    一時的に疑似的な第1バイアス係数を記憶させるとともに、
    任意のタイミングで前記疑似的な第1バイアス係数を0に変更可能なインタフェースを有する、
    請求項1記載の半導体装置。
  5. 全ての前記単位ユニットの前記論理回路で共通して用いる係数を、
    外部から入力するインタフェースを有する、
    請求項1記載の半導体装置。
  6. 前記1つのスピンの第2バイアス係数を記憶する第2バイアス用メモリセルをさらに備え、
    前記関数の計算時に前記第2バイアス係数を用い、
    前記インタフェースは、
    前記共通して用いる係数として、
    前記第2バイアス係数の前記関数の計算における影響を変化させるスケジュール係数を、
    外部から入力する、
    請求項5記載の半導体装置。
  7. 前記1つのスピンの第1バイアス係数を記憶する第1バイアス用メモリセルを備え、
    前記インタフェースは、
    前記共通して用いる係数として、
    前記関数の計算における前記第1バイアス係数にランダムな値を付加するランダムパルス列および、該ランダムパルス列の効果をイネーブル/ディスエーブルするランダム効果制御信号を、
    外部から入力する、
    請求項5記載の半導体装置。
  8. イジングモデルの1つのスピンの値を記憶する第1のメモリセルと、
    前記1つのスピンに相互作用を及ぼす他のスピンからの相互作用係数を記憶する第2のメモリセルと、
    前記1つのスピン及び他のスピンからなる系の前記スピンの値及び相互作用係数を定数または変数とする関数に基づいて、前記1つのスピンの次状態を決定する論理回路と、
    を有する単位ユニットを複数備え、
    前記論理回路における前記関数計算に用いる係数の値を、前記複数の単位ユニットで共通に変化させるインタフェースを有する、半導体装置。
  9. 前イジングモデルの1つのスピンの値を記憶する第1のメモリセルは、多値(3値以上)を格納するメモリセルである、
    請求項8記載の半導体装置。
  10. 前記単位ユニットは、
    前記関数計算に用いる係数に影響する値として前記1つのスピンの付加係数を記憶する第3のメモリセルを有する、
    請求項8記載の半導体装置。
JP2014176127A 2014-08-29 2014-08-29 半導体装置 Active JP5865456B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014176127A JP5865456B1 (ja) 2014-08-29 2014-08-29 半導体装置
US14/638,205 US9331695B2 (en) 2014-08-29 2015-03-04 Semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014176127A JP5865456B1 (ja) 2014-08-29 2014-08-29 半導体装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015254455A Division JP6207583B2 (ja) 2015-12-25 2015-12-25 半導体装置および情報処理方法

Publications (2)

Publication Number Publication Date
JP5865456B1 true JP5865456B1 (ja) 2016-02-17
JP2016051314A JP2016051314A (ja) 2016-04-11

Family

ID=55346970

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014176127A Active JP5865456B1 (ja) 2014-08-29 2014-08-29 半導体装置

Country Status (2)

Country Link
US (1) US9331695B2 (ja)
JP (1) JP5865456B1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10817304B2 (en) 2018-03-09 2020-10-27 Kabushiki Kaisha Toshiba Calculating device
US11093581B2 (en) 2018-09-18 2021-08-17 Kabushiki Kaisha Toshiba Optimization problem solving calculation apparatus
US11244239B2 (en) 2019-10-08 2022-02-08 Kabushiki Kaisha Toshiba Search device, search method, computer program product, search system, and arbitrage system
US11256779B2 (en) 2019-09-09 2022-02-22 Kabushiki Kaisha Toshiba Calculation apparatus, calculation method and computer program product

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9946513B2 (en) * 2014-07-09 2018-04-17 Hitachi, Ltd. Semiconductor device and information processing system
JP6021864B2 (ja) * 2014-08-29 2016-11-09 株式会社日立製作所 半導体装置および情報処理装置
JP5864684B1 (ja) * 2014-08-29 2016-02-17 株式会社日立製作所 半導体装置
JP5901712B2 (ja) * 2014-08-29 2016-04-13 株式会社日立製作所 半導体装置および情報処理装置
JP6659957B2 (ja) * 2016-06-06 2020-03-04 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP6623947B2 (ja) * 2016-06-17 2019-12-25 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP6468254B2 (ja) * 2016-07-01 2019-02-13 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP6892599B2 (ja) * 2017-07-05 2021-06-23 富士通株式会社 最適化装置及び最適化装置の制御方法
JP6914872B2 (ja) 2018-02-27 2021-08-04 株式会社日立製作所 情報処理装置および半導体集積回路装置
JP7093009B2 (ja) 2018-08-30 2022-06-29 富士通株式会社 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7197789B2 (ja) 2019-03-01 2022-12-28 富士通株式会社 最適化装置及び最適化装置の制御方法
US11574560B2 (en) 2019-04-16 2023-02-07 International Business Machines Corporation Quantum state visualization device
JP2021125172A (ja) * 2020-02-10 2021-08-30 富士通株式会社 最適化装置、最適化プログラム、及び最適化方法
JP2021144622A (ja) 2020-03-13 2021-09-24 富士通株式会社 最適化装置、最適化プログラム、および最適化方法
GB2608666A (en) 2020-03-26 2023-01-11 Hitachi Ltd Information processing system and information processing method
JP7239521B2 (ja) * 2020-03-27 2023-03-14 株式会社日立製作所 情報処理装置および情報処理方法
US11656787B2 (en) 2020-04-29 2023-05-23 Hitachi, Ltd. Calculation system, information processing device, and optimum solution search process method
CN112818626B (zh) * 2021-02-26 2022-08-23 北京华大九天科技股份有限公司 一种基于多重掩膜版的版图布线方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190553B2 (en) * 2007-12-20 2012-05-29 Routt Thomas J Methods and systems for quantum search, computation and memory
JP5296189B2 (ja) 2008-03-24 2013-09-25 ディー−ウェイブ システムズ,インコーポレイテッド アナログ処理用のシステム、装置、および方法
WO2012118064A1 (ja) 2011-03-01 2012-09-07 大学共同利用機関法人情報・システム研究機構 イジングモデルの量子計算装置及びイジングモデルの量子計算方法
JP2012217518A (ja) 2011-04-05 2012-11-12 Hitachi Ltd 人間行動分析システム及び方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6015048354; Chihiro Yoshimura,外3名: 'Spatial Computing Architecture Using Randomness of Memory Cell Stability under Voltage Control' [online] , 201309, IEEE *
JPN6015048357; 中田敦: 'NASA、Googleの秘密兵器 驚愕の量子コンピュータ' 日経コンピュータ 第858号, 20140417, pp.024-037, 日経BP社 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10817304B2 (en) 2018-03-09 2020-10-27 Kabushiki Kaisha Toshiba Calculating device
US11640303B2 (en) 2018-03-09 2023-05-02 Kabushiki Kaisha Toshiba Calculating device
US11093581B2 (en) 2018-09-18 2021-08-17 Kabushiki Kaisha Toshiba Optimization problem solving calculation apparatus
US11720645B2 (en) 2018-09-18 2023-08-08 Kabushiki Kaisha Toshiba Optimization problem solving calculation apparatus
US11256779B2 (en) 2019-09-09 2022-02-22 Kabushiki Kaisha Toshiba Calculation apparatus, calculation method and computer program product
US11244239B2 (en) 2019-10-08 2022-02-08 Kabushiki Kaisha Toshiba Search device, search method, computer program product, search system, and arbitrage system
US11610146B2 (en) 2019-10-08 2023-03-21 Kabushiki Kaisha Toshiba Search device, search method, computer program product, search system, and arbitrage system
US11803770B2 (en) 2019-10-08 2023-10-31 Kabushiki Kaisha Toshiba Search device, search method, computer program product, search system, and arbitrage system

Also Published As

Publication number Publication date
US20160065210A1 (en) 2016-03-03
JP2016051314A (ja) 2016-04-11
US9331695B2 (en) 2016-05-03

Similar Documents

Publication Publication Date Title
JP5865456B1 (ja) 半導体装置
JP5864684B1 (ja) 半導体装置
US11836610B2 (en) Concurrent training of functional subnetworks of a neural network
JP5922202B2 (ja) 半導体装置、画像セグメンテーション方法、および画像処理装置
JP5922203B2 (ja) 半導体装置
JP6177993B2 (ja) 半導体装置および情報処理装置
US10366745B2 (en) Semiconductor device and information processing device
JP6295325B2 (ja) 半導体装置及び情報処理システム
JP6568222B2 (ja) 半導体システムおよび計算方法
JP5894645B1 (ja) 半導体装置及びその品質管理方法
US9466346B2 (en) Semiconductor device and information processing device
WO2017037903A1 (ja) 半導体システムおよび計算方法
JP6207583B2 (ja) 半導体装置および情報処理方法
JP2016103282A (ja) 情報処理システム及び管理装置
JP5851570B1 (ja) 半導体装置
JP5903471B2 (ja) 半導体装置および情報処理装置

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151225

R150 Certificate of patent or registration of utility model

Ref document number: 5865456

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150