(57)【特許請求の範囲】
【請求項１】
メモリセルアレイ内に、第１のメモリセルと、前記第１のメモリセルの記憶内容と相互作用する記憶内容を記憶する第２のメモリセルとを有し、
前記第１のメモリセルと前記第２のメモリセルの閾値電圧を変えることでそれぞれの記憶内容が確率的に反転するようにされ、
さらに第１のレジスタと第２のレジスタを有し、
前記第１のメモリセルと前記第２のメモリセルの閾値電圧を制御する制御電圧を時間経過に伴い変化させ、
前記制御電圧が前記第１のレジスタで指定された条件に達したとき、前記制御電圧を前記第２のレジスタで指定された値に基づいた電圧とするようにされる半導体装置。
【請求項２】
前記制御電圧は基板バイアスである、
請求項１に記載の半導体装置。
【請求項３】
前記制御電圧は電源電圧である、
請求項１に記載の半導体装置。
【請求項４】
前記第１のメモリセルと前記第２のメモリセルは、メモリセルのトリップポイントを可変にするためのトランジスタを有し、
前記制御電圧は前記トランジスタのゲートに印加される電圧である、
請求項１に記載の半導体装置。
【請求項５】
さらに第１の演算器と第２の演算器を有し、
前記第１の演算器は前記メモリセルアレイの全メモリセルを入力としたエネルギー関数を計算するようにされ、
前記第２の演算器は前記メモリセルアレイの全メモリセルを入力として、そのうちランダムに選んだ１ビットを反転させた全入力よりエネルギー関数を計算するようにされる、
請求項１に記載の半導体装置。
【請求項６】
前記第１のメモリセルと前記第２のメモリセルのそれぞれは、ワード線、第１のビット線、及び、第２のビット線を有し、
前記第１のビット線は前記ワード線がアクティベートされたときに読み書きが可能であり、
前記第２のビット線は常時読み出しが可能である、
請求項１に記載の半導体装置。
【請求項７】
前記第１のメモリセルと前記第２のメモリセルのそれぞれは、１対のＣＭＯＳインバータを含むＳＲＡＭメモリセルである、
請求項１乃至６のいずれか１項に記載の半導体装置。
【請求項８】
メモリセルアレイ内に、第１のメモリセルと、前記第１のメモリセルの記憶内容と相互作用する記憶内容を記憶する第２のメモリセルとを有し、
前記第１および第２のメモリセルのそれぞれは、１対のＣＭＯＳインバータを含むＳＲＡＭメモリセルであり、
前記第１および第２のメモリセルの閾値電圧を変えることでそれぞれの記憶内容が確率的に反転するようにされる、
半導体装置。
【請求項９】
さらに、温度とエネルギーを設定する第１のレジスタと、
温度を設定する第２のレジスタと、
現在の温度とエネルギーを保持する第３のレジスタと、
を有し、
前記第１および第２のメモリセルの閾値電圧を制御する制御電圧を時間経過に伴い変化させ、
前記第３のレジスタに記憶する温度とエネルギーが前記第１のレジスタで指定された温度とエネルギーの条件に達したとき、前記制御電圧を前記第２のレジスタで指定された温度に基づいた電圧とするようにされる、
請求項８に記載の半導体装置。
【請求項１０】
さらに第１の演算器と第２の演算器を有し、
前記第１の演算器は前記メモリセルアレイの全メモリセルを入力としたエネルギー関数を計算するようにされ、
前記第２の演算器は前記メモリセルアレイの全メモリセルを入力として、そのうちランダムに選んだ１ビットを反転させた全入力よりエネルギー関数を計算するようにされる、
請求項８乃至９のいずれか１項に記載の半導体装置。
【請求項１１】
前記第１および第２のメモリセルは、それぞれワード線、第１のビット線、及び、第２のビット線を有し、
前記第１のビット線は前記ワード線がアクティベートされたときに読み書きが可能であり、
前記第２のビット線は常時読み出しが可能である、
請求項８乃至９のいずれか１項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、半導体装置に関し、例えばイジングモデルの基底状態を求める半導体装置に適用可能である。
【背景技術】
【０００２】
従来、コンピュータの性能向上は半導体素子の進歩に依存していた。現在主流のノイマン型コンピュータはプログラムを逐次的に実行するものであり、その実行速度を高めるために、主にプロセッサのクロック周波数の向上に頼っていた。しかし、２０００年頃からクロック周波数の向上は頭打ちとなり、次なる性能向上策として半導体素子の微細化に頼ったプロセッサのマルチコア化と、それに対応するためのプログラムの並列化が現在用いられている。【０００３】
しかし、半導体素子の微細化も限界に近付きつつある上に、元々逐次的に実行することを前提としていたプログラムを並列化することにも限界が見えてきている。こうした状況を鑑みると、今後、コンピュータの継続的な性能向上を実現していく上では、プログラムの逐次的な実行とは異なる、新しい情報処理の原理を実現することが必要となる。【０００４】
ところで、イジングモデルは磁性体の振舞いを説明するための統計力学のモデルであり、磁性体の研究に用いられている。イジングモデルはサイト（＋１／−１の２値をとるスピン）間の相互作用として定義される。トポロジが非平面グラフになるイジングモデルの基底状態を求めることはＮＰ困難問題であることが知られている。【０００５】
そのため、イジングモデルの基底状態を求めることのできる装置があれば、各種の問題をイジングモデルの基底状態を求めるという問題に変換することで、問題を解くことが出来る。しかし、イジングモデルの基底状態を求めることは、前述した通りＮＰ困難問題であるから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。例えば、このような装置として、例えば特許文献１に記載の装置がある。【０００６】
解きたい問題をイジングモデルに変換する、より具体的にはサイト間の相互作用の係数に問題を変換することが出来れば、前述したようなアナログコンピュータで当該問題を解くことが出来る。従来のノイマン型コンピュータでは問題をアルゴリズムという時間方向に逐次的なステップで表現しており、そのことが高速化を阻害する要因となっていた。しかし、問題をイジングモデルに変換するということは、サイト間の相互作用の係数という空間方向のパラメータとして問題を表現していることになり、高速化に都合が良い。【０００７】
そこで、解きたい問題をイジングモデルに変換すること、そして、そのイジングモデルの基底状態を求めることのできるハードウェアを実現することが必要となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開２０１２／１１８０６４号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１では、イジングモデルの基底状態を求めることのできるハードウェアとして、レーザを用いており、所望の特性のレーザを製造することが困難である。【００１０】
本開示は、容易に製造できる任意のイジングモデルの基底状態を求めることのできる装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本開示のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
半導体装置は、メモリセルアレイ内に、第１のメモリセルと、前記第１のメモリセルの記憶内容と相互作用する記憶内容を記憶する第２のメモリセルとを有し、前記第１のメモリセルと前記第２のメモリセルの閾値電圧を変えることでそれぞれの記憶内容が確率的に反転するようにされ、さらに第１のレジスタと第２のレジスタを有し、前記第１のメモリセルと前記第２のメモリセルの閾値電圧を制御する制御電圧を時間経過に伴い変化させ、前記制御電圧が前記第１のレジスタで指定された条件に達したとき、前記制御電圧を前記第２のレジスタで指定された値に基づいた電圧とするようにされる。
【発明の効果】
【００１２】
上記半導体装置によれば、任意のイジングモデルの基底状態を求める装置を容易に製造することができる。
【図面の簡単な説明】
【００１３】
【図１】エネルギー関数の構成例を説明する図である。
【図２】エネルギー関数の構成例を説明する図である。
【図３】実施例１におけるイジングモデルの基底状態を求める半導体装置の構成を説明する図である。
【図４】実施例１における近傍探索部の構成を説明する図である。
【図５】実施例１におけるメモリセルの構成を説明する図である。
【図６】実施例１におけるメモリセルアレイの構成を説明する図である。
【図７】実施例１における温度スケジューラの構成を説明する図である。
【図８】実施例２におけるメモリセルの構成を説明する図である。
【図９】実施例３におけるメモリセルの構成を説明する図である。
【図１０】実施例２におけるイジングモデルの基底状態を求める半導体装置の構成を説明する図である。
【図１１】実施例３におけるイジングモデルの基底状態を求める半導体装置の構成を説明する図である。
【発明を実施するための形態】
【００１４】
実施の形態の概要を簡単に説明すれば、下記のとおりである。
（１）半導体装置は、メモリセルアレイ内に、第１のメモリセルと、前記第１のメモリセルの記憶内容と相互作用する記憶内容を記憶する第２のメモリセルとを有し、前記第１のメモリセルと前記第２のメモリセルの閾値電圧を変えることでそれぞれの記憶内容が確率的に反転するようにされ、さらに第１のレジスタと第２のレジスタを有し、前記第１のメモリセルと前記第２のメモリセルの閾値電圧を制御する制御電圧を時間経過に伴い変化させ、前記制御電圧が前記第１のレジスタで指定された条件に達したとき、前記制御電圧を前記第２のレジスタで指定された値に基づいた電圧とするようにされる。
（２）上記（１）の半導体装置において、制御電圧は基板バイアスである。
（３）上記（１）の半導体装置において、制御電圧は電源電圧である。
（４）上記（１）の半導体装置において、前記第１のメモリセルと前記第２のメモリセルは、メモリセルのトリップポイントを可変にするためのトランジスタを有し、前記制御電圧は前記トランジスタのゲートに印加される電圧である。
（５）上記（１）の半導体装置は、さらに第１の演算器と第２の演算器を有し、前記第１の演算器は前記メモリセルアレイの全メモリセルを入力としたエネルギー関数を計算するようにされ、前記第２の演算器は前記メモリセルアレイの全メモリセルを入力として、そのうちランダムに選んだ１ビットを反転させた全入力よりエネルギー関数を計算するようにされる。
（６）上記（１）の半導体装置において、前記第１のメモリセルと前記第２のメモリセルのそれぞれは、ワード線、第１のビット線、及び、第２のビット線を有し、前記第１のビット線は前記ワード線がアクティベートされたときに読み書きが可能であり、前記第２のビット線は常時読み出しが可能である。
（７）上記（１）から（６）のいずれか１つの半導体装置において、第１のメモリセルと第２のメモリセルのそれぞれは、１対のＣＭＯＳインバータを含むＳＲＡＭメモリセルである。
（８）半導体装置は、メモリセルアレイ内に、第１のメモリセルと、前記第１のメモリセルの記憶内容と相互作用する記憶内容を記憶する第２のメモリセルとを有し、前記第１および第２のメモリセルのそれぞれは、１対のＣＭＯＳインバータを含むＳＲＡＭメモリセルであり、前記第１および第２のメモリセルの閾値電圧を変えることでそれぞれの記憶内容が確率的に反転するようにされる。
（９）上記（８）の半導体装置は、さらに、温度とエネルギーを設定する第１のレジスタと、温度を設定する第２のレジスタと、現在の温度とエネルギーを保持する第３のレジスタとを有し、前記第１および第２のメモリセルの閾値電圧を制御する制御電圧を時間経過に伴い変化させ、前記第３のレジスタに記憶する温度とエネルギーが前記第１のレジスタで指定された温度とエネルギーの条件に達したとき、前記制御電圧を前記第２のレジスタで指定された温度に基づいた電圧とするようにされる。
（１０）上記（８）および（９）のいずれか１つの半導体装置は、さらに第１の演算器と第２の演算器を有し、前記第１の演算器は前記メモリセルアレイの全メモリセルを入力としたエネルギー関数を計算するようにされ、前記第２の演算器は前記メモリセルアレイの全メモリセルを入力として、そのうちランダムに選んだ１ビットを反転させた全入力よりエネルギー関数を計算するようにされる。
（１１）上記（８）および（９）のいずれか１つの半導体装置は、前記第１および第２のメモリセルは、それぞれワード線、第１のビット線、及び、第２のビット線を有し、前記第１のビット線は前記ワード線がアクティベートされたときに読み書きが可能であり、前記第２のビット線は常時読み出しが可能である。
【００１５】
実施の形態に係る半導体装置は、現在幅広く用いられているＣＭＯＳ集積回路のプロセスで製造することができる。したがって、イジングモデルの基底状態を求める装置を容易に製造することができる。
【００１６】
また、実施の形態に係る半導体装置は、同様にＣＭＯＳ集積回路のプロセスで製造したノイマン型コンピュータでイジングモデルの基底状態を求める場合と比較して、より少量のハードウェア資源で構成することができる。
【００１７】
以下、図面を参照して実施例を説明する。なお、実施例を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
【００１８】
実施例では、因数分解する問題を例として説明するが、それに限定されるものではなく、イジングモデルの基底状態を求めることができるＮＰ困難問題であればよい。
【実施例１】
【００１９】
本実施例では、イジングモデルの基底状態を求める半導体装置の例を説明する。本実施例では、解くべき問題として因数分解を例に挙げる。具体的には４ビットの数を２個の２ビットの値に因数分解する問題を、イジングモデルの基底状態を求める問題に変換し、それを半導体装置によって解く。【００２０】
＜解きたい問題のイジングモデル変換＞
イジングモデルの基底状態を求めるというのは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。そのため、まず因数分解を最適化問題として定式化する。因数分解すべき数をＮ、Ｎの因数をａ、ｂとすると、下記の式（１）を満たすａ、ｂを求めることで因数分解が出来る。【００２１】
【数１】
0006006411.tif 000002
【００２２】
次に、式（１）をイジングモデルのハミルトニアン（エネルギー関数）で表現する。イジングモデルのエネルギー関数は一般的に下記の式（２）で表わされる。なお、σｉ、σｊはそれぞれｉ番目とｊ番目のサイトの値、Ｊｉ,ｊはｉ番目とｊ番目のサイトの間の相互作用係数、Ｈｉはｉ番目のサイトに対する外部磁場係数、＜ｉ,ｊ＞は隣接する２つのサイトの組合せ、σはサイトの配列を表わすものとする。【００２３】
【数２】
0006006411.tif 000003
【００２４】
各サイトσｉは＋１／−１の２値を持つスピンである。よって、式（１）の変数ａ、ｂを２値のスピン複数個の組合せで表現すれば良い。但し、後述するように本実施例ではスピンではなく、ＣＭＯＳ回路で実現されるフリップフロップなどの記憶素子をサイトとして用いるので、これ以降、各サイトσｉは０／１の２値を持つものとする。解くべき問題は６＝２×３であるため、因数ａ、ｂを表現するためにそれぞれ２ビットずつを利用するものとして、サイトａ１、ａ２、ｂ１、ｂ２とすると、下記の式（３）で表されるエネルギー関数を最小化するａ１、ａ２、ｂ１、ｂ２を求めれば因数分解が出来ることになる。【００２５】
【数３】
0006006411.tif 000004
【００２６】
式（３）を展開すれば、式（２）を構成する相互作用係数と外部磁場係数が得られる。しかし、式（２）では相互作用の及ぶ範囲が高々２体間であったのに対して、式（３）を展開すると３体間、４体間の相互作用が出てきてしまう。よって、このままではイジングモデルに問題を変換できないため、下記の技術文献に記載の方法で２体相互作用に収める。【００２７】
［技術文献］Gernot Schaller and Ralf Schutzhold, The role of symmetries in adiabatic quantum algorithms, arXiv:0708.1882, 2007.
図１は、式（３）のエネルギー関数を、補助ビットを導入して表現したものである。因数分解すべき数Ｎは４ビットω１、ω２、ω３、ω４で表現している。補助ビットとして、Ｓ１１、Ｓ１２、Ｓ２１、Ｓ２２、ｚ０１、ｚ０２、ｚ１１、ｚ１２、ｚ２１、ｚ２２を導入している。但し、補助ビットの幾つかは０にしかならないことが自明であり、そうした補助ビットを取り除いて簡約化したものを図２に示す。その結果、４ビットω１、ω２、ω３、ω４それぞれに対応して下記の式（４）〜式（７）が得られる。【００２８】
【数４】
0006006411.tif 000005
【００２９】
【数５】
0006006411.tif 000006
【００３０】
【数６】
0006006411.tif 000007
【００３１】
【数７】
0006006411.tif 000008
【００３２】
しかし、式（４）〜式（７）をそれぞれ二乗してエネルギー関数を得ようとすると、式（３）の場合と同様に３体以上の相互作用が出てしまい、イジングモデルにならない。そこで、非特許文献１に記載されている方式を用いる。２値（０／１）のビット変数ａ、ｂ、ｃ１、ｃ２、ｃ３、ｃ４、…、ｃｎと、ｃ１、ｃ２、ｃ３、ｃ４、…、ｃｎに対する整数係数ｋ１、ｋ２、ｋ３、ｋ４、…、ｋｎがあるときに、下記の式（８）と式（９）を満たすビット変数ａ、ｂ、ｃ１、ｃ２、ｃ３、ｃ４、…、ｃｎは同一である。すなわち、０になる条件が同じ近似式が得られる。【００３３】
【数８】
0006006411.tif 000009
【００３４】
【数９】
0006006411.tif 000010
【００３５】
式（９）ではａｂという項がａ＋ｂになっているため、２体間相互作用の範囲内で収まる。この変換を式（４）〜式（７）それぞれに適用して、下記の式（１０）〜式（１３）を得る。【００３６】
【数１０】
0006006411.tif 000011
【００３７】
【数１１】
0006006411.tif 000012
【００３８】
【数１２】
0006006411.tif 000013
【００３９】
【数１３】
0006006411.tif 000014
【００４０】
式（１０）〜式（１３）で得られた項を纏めると、下記の式（１４）に示すようなエネルギー関数として纏められる。なお、ａ１＝σ１、ａ２＝σ２、ｂ１＝σ３、ｂ２＝σ４、ｚ１１＝σ５、Ｓ２１＝σ６とする。【００４１】
【数１４】
0006006411.tif 000015
【００４２】
よって、本実施例では、因数分解すべき数Ｎを４ビットで表現したω１、ω２、ω３、ω４が与えられたときに、式（１４）で示されるエネルギー関数Ｅ（σ）に対応するイジングモデルの基底状態、すなわちＥ（σ）＝０となるσ＝｛σ１、σ２、σ３、σ４、σ５、σ６｝を求める半導体装置を示す。【００４３】
＜イジングモデルの基底状態を求める半導体装置＞
図３は、実施例１の半導体装置の構成図の例である。本実施例の半導体装置３００はＳＲＡＭ（Static Random Access Memory）を基にした構造となっている。メモリセルアレイ３１０、ドライバ３２０、アドレスデコーダ３３０、プリデコーダ３５０、センスアンプ３８０、リクエスト線３９０、アドレス線３９１、及び、データ線３９２は、ＳＲＡＭにおける対応する構成要素を踏襲している。半導体装置３００はＣＭＯＳ（Complementary Metal Oxide Semiconductor）集積回路のプロセスで製造される。ＳＲＡＭとの違いに関しては、各構成要素の説明において詳細を述べる。【００４４】
イジングモデルのサイト、すなわち式（１４）におけるσはメモリセルアレイ３１０で実現する。よって、式（１４）の例であればメモリセルアレイ３１０は６ビット以上のメモリセルを有するメモリセルアレイである。【００４５】
（ＳＲＡＭと同様の構成）
メモリセルアレイ３１０は、ＳＲＡＭと同様に外部からアドレスを指定することで読書きが可能な構成である。メモリセルアレイ３１０は、例えば、１ワード８ビット、８ワード構成であれば、合計６４ビットのメモリセルアレイであり、アドレス毎に１ワード８ビットずつ読み書きが出来るものとする。そのために、半導体装置３００は、メモリセルアレイ３１０のワード線をアクティベートするアドレスデコーダ３３０、メモリセルアレイ３１０内のビット線を駆動、ないしは、読み出しするためのドライバ３２０、及び、制御信号を生成するプリデコーダ３５０を有する。ドライバ３２０は読み出しに用いるセンスアンプと書込みに用いるライトドライバから構成される。【００４６】
メモリセルアレイ３１０の構造を、図５及び図６を用いて説明する。図５は実施例１におけるメモリセルの構成を説明する図である。図６は実施例１におけるメモリセルアレイの構成を説明する図である。メモリセルアレイ３１０は図６に示すように図５のメモリセル５００を並べたものである。メモリセル５００はデータ保持部５６０、及び、１対のパスゲートトランジスタ５５０から構成され、外部とのインタフェースとして１対のワード線５２０、１対の第１ビット線５３０、１対の第２ビット線５４０、基板バイアス制御線５１０を持っている。データ保持部５６０は２個のＣＭＯＳインバータから構成される。ＣＭＯＳインバータＩＮＶ１の出力がＣＭＯＳインバータＩＮＶ２の入力にノードＮ１で接続され、ＣＭＯＳインバータＩＮＶ２の出力がＣＭＯＳインバータＩＮＶ１の入力にノードＮ２で接続されたフリップフロップを構成している。ノードＮ１とノードＮ２が相補的な記憶ノードとなっている。パスゲートトランジスタ５５０はｎチャネル型ＭＯＳトランジスタで構成される。【００４７】
データ保持部５６０の入出力をパスゲートトランジスタ５５０と、パスゲートトランジスタ５５０に対する制御信号であるワード線５２０で制御し、第１ビット線５３０で読書きを行うという点はＳＲＡＭと共通である。アドレスデコーダ３３０がワード線５２０を駆動し、ドライバ３２０が第１ビット線５３０を駆動する。【００４８】
本実施例の特徴として、データ保持部５６０に対する基板バイアス制御を行う基板バイアス制御線５１０を有することと、データ保持部５６０の記憶内容を読み出すために、第１ビット線５３０とは別に、第２ビット線５４０を有することを特徴としている。【００４９】
図６のメモリセルアレイ３１０の構成では、第１ビット線５３０は１ワードの入出力を行うために設けられており、ワード線５２０によりワードを選択する。それに加えて、各メモリセル５００から個別に第２ビット線５４０を外部に出力している。すなわち、メモリセルアレイ３１０はワード単位での読書きとは別に、全ビットの読み出しを並行して行うことの可能な構成となっている点が特徴である。また、メモリセルアレイ３１０に含まれる全てのメモリセル５００のデータ保持部５６０の基板バイアスを外部から制御できるようになっている。本実施例では、データ保持部５６０が第２ビット線５２０に直接接続されているが、第１ビット線５３０と同様に、パスゲートトランジスタを介して接続される、いわゆるデュアルポートＳＲＡＭの構成としてもよい。メモリセルが多い場合は、デュアルポートＳＲＡＭの構成の方が有効である。【００５０】
（ＳＲＡＭと異なる構成）
半導体装置３００はＳＲＡＭとは異なり、近傍探索部３４０、温度スケジューラ３６０、基板バイアス制御部３７０をさらに有している。【００５１】
イジングモデルの基底状態を求めるなどの最適化問題の解法として、従来のノイマン型コンピュータ上ではシミュレーテッドアニーリングと呼ばれるアルゴリズムが用いられている。シミュレーテッドアニーリングは、近傍探索、メトロポリス法、温度スケジューリングの３要素から構成されている。【００５２】
近傍探索とは、現在の状態の近傍にある状態のエネルギーを計算し、エネルギーが減少する場合には状態を近傍に遷移するというものである。近傍探索を繰り返すことにより、エネルギーが小さい状態、すなわち、最適解に近い状態に向かうことが出来るが、局所解に陥った場合には抜けだすことが出来ない。【００５３】
そこで、局所解からの脱出用にメトロポリス法を導入する。メトロポリス法は近傍探索において、エネルギーが大きくなる状態への遷移を確率的に許すことで、局所解からの脱出を行う。遷移を許す度合いは、温度とエネルギーの差で決まり、温度をＴ、現在の状態のエネルギーをＥｃｕｒｒｅｎｔ、近傍の状態のエネルギーをＥｎｅｘｔとしたときに、式（１５）で示される確率で遷移を許す。【００５４】
【数１５】
0006006411.tif 000016
【００５５】
さらに、この温度が一定のままではいつまでも収束しないので、温度を徐々に下げていく温度スケジューリングが必要となる。【００５６】
シミュレーテッドアニーリングはノイマン型コンピュータで実行するアルゴリズムであり、逐次的に実行することが前提となっている。しかし、本実施例では半導体装置３００でイジングモデルの基底状態を高速に探索することを実現するために、シミュレーテッドアニーリングの動作を改変して、近傍探索部３４０、温度スケジューラ３６０、基板バイアス制御部３７０でそれぞれ同時並行的に動作させる。【００５７】
（ａ）近傍探索
近傍探索部３４０の構成を図４に示す。近傍探索部３４０は、２個のエネルギー演算器４１０Ａ、４１０Ｂ、係数記憶部４２０、ビット反転器４４０、比較器４５０、及び、書込み信号生成部４６０から構成されている。【００５８】
半導体装置３００では、近傍探索を以下のようにして行う。まず、メモリセルアレイ３１０の第２ビット線５４０からセンスアンプ３８０で全ビットを読み出す。なお、これ以降、読み出したビット列を現状態ベクトルと呼称する。現状態ベクトルを信号線３９５を介してエネルギー演算器（第１の演算器）４１０Ａに入力するとともに、現状態ベクトルをビット反転器４４０に入力する。ビット反転器４４０は入力されたビット列（現状態ベクトル）のうち、ランダムに選んだ１ビットを反転させたビットを生成する。これを近傍状態ベクトルと呼称する。ビット反転器４４０が生成した近傍状態ベクトルはエネルギー演算器（第２の演算器）４１０Ｂに入力する。また、ビット反転器４４０は反転したビットを示す識別子（ビット番号）を書込み信号生成部４６０に送る。【００５９】
エネルギー演算器４１０Ａ、４１０Ｂは両方とも共通した構造の演算器であり、式（１４）で示したエネルギー関数Ｅ（σ）の計算を行う。このとき、エネルギー関数Ｅ（σ）の引数であるσはエネルギー演算器４１０Ａ、４１０Ｂに入力されたビット列（エネルギー演算器４１０Ａの場合は現状態ベクトル、エネルギー演算器４１０Ｂの場合は近傍状態ベクトル）となる。また、エネルギー関数Ｅ（σ）を計算する上で必要となるパラメータであるＪｉｊ、Ｈｉ、及び、Ｏｆｆｓｅｔは係数記憶部４２０が保持している。【００６０】
係数記憶部４２０は半導体装置３００と外部とのインタフェースである係数設定インタフェース３９３を介して、エネルギー関数を計算する上で必要となるパラメータを外部から設定し、保持するための記憶装置である。【００６１】
比較器４５０はエネルギー演算器４１０Ａ、４１０Ｂの計算したエネルギーを比較し、エネルギーが小さい方を判定する。判定結果は書込み信号生成部４６０に入力される。【００６２】
なお、エネルギー演算器４１０Ａ、４１０Ｂ、及び、比較器４５０はデジタル回路によるものであっても、アナログ回路によるものであっても良い。【００６３】
書込み信号生成部４６０は、近傍状態ベクトルの方のエネルギーが小さいときに、メモリセルアレイ３１０に記憶されている内容を現在の記憶内容（現状態ベクトル）から近傍状態ベクトルに更新するための信号を生成する。具体的には、ビット反転器４４０から指定されたビット番号に基づき、現状態ベクトルのうち反転されたビットを含む１ワードを取りだし、当該ワード中の当該ビットを反転させた１ワードと、そのワードをメモリセルアレイ３１０に書込むためのアドレスを生成する。生成したワードは信号線３９７を介してドライバ３２０に、アドレスは信号線３９８を介してプリデコーダ３５０に、書込み要求信号はリクエスト線３９０を介してプリデコーダ３５０に入力される。【００６４】
これらの動作により、近傍探索部３４０はシミュレーテッドアニーリングにおける近傍探索に相当する動作を高速に実現することが出来る。【００６５】
マルチプレクサ４７０は比較器４５０の比較結果を元に、次の状態ベクトル（現状態ベクトルと近傍状態ベクトルのうち、エネルギーの低い方）のエネルギーを、信号線３９５を介して後述する温度スケジューラ３６０に送る。【００６６】
次に、メトロポリス法に相当する動作を実現する基板バイアス制御部３７０と、温度スケジュールに相当する動作を実現する温度スケジューラ３６０について説明する。【００６７】
（ｂ）メトロポリス法
シミュレーテッドアニーリングでのメトロポリス法は、近傍探索において、エネルギーが高くなる状態への遷移を、式（１５）で示される確率で決めるというものであった。しかし、この方式では近傍探索と独立したハードウェアで同時並行的に行うことが難しい。かつ、確率的な動作を行うために、大量の乱数を発生させる必要があるため、そのこともシミュレーテッドアニーリングを実現するコストを上昇させている。【００６８】
そこで、半導体装置３００では、メトロポリス法の代替として、所定の確率でメモリセルアレイ３１０内の各メモリセルの記憶内容を反転させる、すなわちメモリセルを不安定な状態にすることで、局所解からの脱出を実現する。このとき、記憶内容が反転する確率は、メトロポリス法とは異なり、現状態ベクトルのエネルギーと近傍状態ベクトルのエネルギーの差とは関係なく、単に温度だけで決定する。【００６９】
また、エネルギー演算器４１０Ａ，４１０Ｂによって計算されたエネルギーの履歴から、エネルギーが減少しないときに局所解に陥っているものと判定し、そのときにメモリセルの記憶内容を確率的に反転させることで、局所解からの脱出を図る。【００７０】
メモリセルを不安定な状態とし、その記憶内容を確率的に反転させるための手段として、メモリセルの閾値電圧（Ｖｔｈ）を変化させる。閾値電圧を変化させる手段として、例えば、基板バイアス制御、電源電圧制御、ないしは、トリップポイント制御を用いることができる。本実施例においては、基板バイアス制御を利用する。【００７１】
基板バイアス制御では、基板バイアス制御部３７０はメモリセルアレイ３１０内の各メモリセルの基板バイアス制御線５１０に、基板バイアスを印加する。【００７２】
一般的に基板バイアス制御は、半導体装置製造時のばらつきを補償するためや、待機時のリーク電流削減用に用いられている。具体的には、待機時のリーク電流削減を例にとると、通常動作時には基板バイアスをかけずに低い閾値電圧（Ｖｔｈ）でトランジスタを利用する。一方、待機時には逆方向の基板バイアスをかけることでＶｔｈを高くし、リーク電流を削減する。あるいは、通常はリーク電流の発生を抑制できる程度のＶｔｈにしておき、動作時に順方向の基板バイアスをかけてＶｔｈを下げて利用する。これらの基板バイアスの利用方法とは異なり、本実施例では基板バイアスでＶｔｈを下げることで、メモリセルを意図的に不安定とする。通常、データを保持する目的からはデータ保持部５６０のＶｔｈはノイズの影響を受けない程度に高く設定する。しかし、本実施例ではＶｔｈを下げることで、意図的にノイズの影響を受けさせて、メモリセルの内容を確率的に反転させる。反転する確率はＶｔｈで調節する。また、メモリセル近傍にノイズ源を配置し、ノイズ源の強度とＶｔｈの双方で確率を制御しても良い。【００７３】
これにより、本実施例では、基板バイアスの制御でメトロポリス法相当の動作を実現することが出来る。本来、メトロポリス法を実現するためには大量の乱数を発生させる必要があるため、乱数発生器を何度も使うか、乱数発生器自体を大量に用意する必要があった。それに対して、本実施例では基板バイアスを下げることによって発生するメモリセルの不安定性を直接的に利用することで、この問題を解決している。【００７４】
（ｃ）温度スケジューリング
基板バイアスは、温度スケジューラ３６０が生成する電圧によって時系列的に変化させる。温度スケジューラ３６０の構成を、図７を用いて説明する。図７は実施例１における温度スケジューラの構成を説明する図である。温度スケジューラ３６０は、初期温度レジスタ７１０（第２のレジスタ）、冷却係数レジスタ（第４のレジスタ）７２０、Ｄ／Ａ変換器７３０、乗算器７４０、再加熱条件レジスタ７５０（第１のレジスタ）、再加熱判定器７６０、現在温度レジスタ（第３のレジスタ）７７０から構成されている。【００７５】
半導体装置３００と外部とのインタフェースである温度設定インタフェース３９４を介して、初期温度レジスタ７１０、冷却係数レジスタ７２０、及び、再加熱条件レジスタ７５０を設定する。初期温度レジスタ７１０は温度スケジュールにおける最初の温度、及び、再加熱する際の最初の温度を記憶するためのレジスタであり、外部から値を設定し保持するためにある。冷却係数レジスタ７２０は温度を冷却する係数を設定する。温度スケジュールは現在の温度に対して、冷却係数レジスタ７２０が保持する係数（＜１）を乗じていくことで冷却する幾何冷却法を用いる。再加熱条件レジスタ７５０は、冷却が進んだときにメモリセルアレイ３１０の内容が解に達していないとき、再度加熱して解への収束を促進させるための条件を設定する。具体的には、再加熱を行う条件となる温度とエネルギーを設定する。【００７６】
初期温度レジスタ７１０に設定された内容で現在温度レジスタ７７０が初期化され、乗算器７４０が現在温度レジスタ７７０の値と冷却係数レジスタ７２０の値を乗じて現在温度レジスタ７７０に設定することで、現在温度レジスタ７７０の時系列的な値の変化は幾何冷却法に基づく温度スケジュールに則ったものとなる。そして、Ｄ／Ａ変換器７３０が現在温度レジスタ７７０の値を電圧に変換することで、基板バイアス制御に用いる電圧が得られ、信号線３９９を介して基板バイアス制御部３７０に送られる。【００７７】
この温度スケジュールの過程において、再加熱判定器７６０は、信号線３９５を介して近傍探索部３４０からのエネルギーと、現在温度レジスタ７７０からメモリセルアレイ３１０の現在の状態におけるエネルギーと現在の温度を取得する。そして、再加熱条件レジスタ７５０が保持している再加熱条件エネルギーと再加熱条件温度と現在のエネルギー及び温度を比較する。（現在のエネルギー＞再加熱条件エネルギー）∧（現在の温度＜再加熱条件温度）という条件を満たすとき、再加熱を行う。再加熱は初期温度レジスタ７１０の値を現在温度レジスタ７７０に格納することで行う。【００７８】
以上の構成により、半導体装置３００は、係数設定インタフェース３９３で係数記憶部４２０に設定した係数を持つイジングモデルの基底状態を求めることが出来る。例えば、式（１４）に示した係数Ｊｉｊ、Ｈｉ、Ｏｆｆｓｅｔを設定することで、イジングモデルの基底状態を求めることを通して、因数分解を行うことができる。【００７９】
その際、イジングモデルの複雑さの度合いに応じて、温度設定インタフェース３９４で初期温度レジスタ７１０、冷却係数レジスタ７２０、及び、再加熱条件レジスタ７５０に適切なパラメータを設定する必要がある。また、メモリセルアレイ３１０に格納される状態の初期値は、メモリセルアレイ３１０をリクエスト線３９０、アドレス線３９１、及び、データ線３９２でＳＲＡＭと同様に書込むことで設定することができる。そして、近傍探索部３４０、温度スケジューラ３６０、及び、基板バイアス制御部３７０の動作によって、イジングモデルの基底状態を求めた後は、メモリセルアレイ３１０をＳＲＡＭと同様に読み出すことで、イジングモデルの基底状態を取得することが可能である。
【実施例２】
【００８０】
（メモリセルの電源電圧制御による実施例）
図１０は、実施例２の半導体装置の構成図の例である。本実施例の半導体装置１０００は実施例１の半導体装置３００と比較して、メモリセルを確率的に反転させるために、メモリセルの電源電圧を制御する点が異なる。それ以外の点は実施例１と共通であるため、繰り返しの説明を省略する。【００８１】
半導体装置１０００では、図８に示すように実施例１と同じメモリセル５００でメモリセルアレイ３１０を構成する。ＣＭＯＳインバータＩＮＶ１、ＩＮＶ２はそれぞれ、ｐチャネル型ＭＯＳトランジスタＭＰとｎチャネル型ＭＯＳトランジスタＭＮ１で構成される。メモリセル５００の電源線８１０に供給する電圧（ＶＤＤ）を制御することで、メモリセル５００の電源電圧を制御することができる。一般的には、ＳＲＡＭの電源電圧としてはその記憶を確実に保持するために、１Ｖ程度の電圧が用いられる。これにより、１０−９程度のＢＥＲ（Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ）を得ることができる。この場合、１Ｇビット中１ビットの割合で誤り、すなわちビットの反転が生じる。【００８２】
一方で、電源電圧を下げることによりＢＥＲを悪化させて意図的にメモリセルの記憶内容の反転を引き起こすことができ、その度合いは電圧の下げ具合、すなわちＢＥＲの悪化度合いに比例する。実施例１と同様に、温度によるスケジューリング、もしくは、エネルギーが変化しないことをトリガーとしてメモリセル５００の電源電圧を制御する。本実施例では電源電圧制御部１０１０が電源線８１０を制御する。そのときの電圧としては、例えば０．６Ｖ程度に落とすことで１０−１程度のＢＥＲを得ることができる。この場合、１０ビット中１ビットの割合で誤り、すなわちビット反転が発生する。本実施例では、電源電圧制御部１０１０を用いて、電源線８１０を通常の領域（例えば１Ｖ程度）と比較して、記憶内容を正確に保持するのに不十分なほど低い電圧（例えば０．６Ｖ程度）に下げることで、イジングモデルの基底状態を探索するために必要な、局所解からの脱出を実現できることを特徴としている。
【実施例３】
【００８３】
（メモリセルのトリップポイント制御による実施例）
図１１は、実施例３の半導体装置の構成図の例である。本実施例の半導体装置１１００は、実施例１の半導体装置３００、及び、実施例２の半導体装置１０００と比較して、メモリセルを確率的に反転させるために、メモリセルのトリップポイント（０から１、ないしは、１から０に記憶内容を遷移させるための電圧の変化点）を制御する点が異なる。それ以外の点は実施例１、及び、実施例２と共通であるため繰り返しの説明を省略する。【００８４】
半導体装置１１００では、図９に示すメモリセル９００でメモリセルアレイ１１２０を構成する。実施例１および実施例２のメモリセル５００と比較して、メモリセルのトリップポイントを制御するためのｎチャネル型ＭＯＳトランジスタＭＮ２と、トランジスタＭＮ２を制御するためのトリップポイント制御線９１０をさらに有することを特徴としている。すなわち、ＣＭＯＳインバータはｐチャネル型ＭＯＳトランジスタＭＰとｎチャネル型ＭＯＳトランジスタＭＮ１とｎチャネル型ＭＯＳトランジスタＭＮ２とで構成される。【００８５】
実施例１、実施例２と同様に、メモリセルの内容を確率的に反転するとき（温度スケジューリングで温度が高い状態、もしくは、エネルギーが変化しないことから局所解に陥っていることを検出したとき）、本実施例ではトリップポイント制御線９１０に供給する電圧をトリップポイント制御部１１１０で制御する。【００８６】
以上、本発明者によってなされた発明を実施の形態および実施例に基づき具体的に説明したが、本発明は、上記実施の形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
【符号の説明】
【００８７】
３００、１０００、１１００  半導体装置
３１０、１１２０  メモリセルアレイ
３２０  ドライバ
３３０  アドレスデコーダ
３４０  近傍探索
３５０  プリデコーダ
３６０  温度スケジューラ
３７０  基板バイアス制御部
３８０  センスアンプ
３９０  リクエスト線
３９１  アドレス線
３９２  データ線
３９３  係数設定インタフェース
３９４  温度設定インタフェース
４１０Ａ、４１０Ｂ  エネルギー演算器
４２０  係数記憶部
４４０  ビット反転器
４５０  比較器
４６０  書込み信号生成部
４７０  マルチプレクサ
５００、９００  メモリセル
５１０  基板バイアス制御線
５２０  ワード線
５３０  第１ビット線
５４０  第２ビット線
５５０  パスゲートトランジスタ
５６０  データ保持部
７１０  初期温度レジスタ
７２０  冷却係数レジスタ
７３０  Ｄ／Ａ変換器
７４０  乗算器
７５０  再加熱条件レジスタ
７６０  再加熱判定器
７７０  現在温度レジスタ
８１０  電源線
９１０  トリップポイント制御線
１０１０  電源電圧制御部
１１１０  トリップポイント制御部
【図１】
0006006411.tif 000017
【図２】
0006006411.tif 000018
【図３】
0006006411.tif 000019
【図４】
0006006411.tif 000020
【図５】
0006006411.tif 000021
【図６】
0006006411.tif 000022
【図７】
0006006411.tif 000023
【図８】
0006006411.tif 000024
【図９】
0006006411.tif 000025
【図１０】
0006006411.tif 000026
【図１１】
0006006411.tif 000027