(57)【特許請求の範囲】
【請求項１】
複数のメモリセルが行列状に配置されたメモリセルアレイと、
前記メモリセルの各行に対応して設けられたワード線と、
前記メモリセルの各列に対応して設けられたビット線対と、
前記ワード線をアクティベートするワードデコーダと、
プリチャージ用電圧を前記ビット線対へ接続して、前記ビット線対を「H」レベルに固定する前記ビット線対を駆動するドライバと、及び
前記メモリセルへ供給する電源電圧を所定電圧より下げる電圧を可変に変えて供給する構成とを備え、
前記メモリセルへ供給する電源電圧が所定電圧より下げられた状態で、前記プリチャージ用電圧を前記ビット線対へ接続して、前記ビット線対を「H」レベルに固定し、前記ワードデコーダによりワード線をアクティベートすることを特徴とする半導体装置。
【請求項２】
複数のメモリセルが行列状に配置されたメモリセルアレイと、
前記メモリセルの各行に対応して設けられたワード線と、
前記メモリセルの各列に対応して設けられたビット線対と、
前記ワード線をアクティベートするワードデコーダと、
ビット破壊線を外部より接続して、前記ビット線対を「H」レベルに固定する前記ビット線対を駆動するドライバと、及び
前記メモリセルへ供給する電源電圧を所定電圧より下げる電圧を可変に変えて供給する構成とを備え、
前記メモリセルへ供給する電源電圧が所定電圧より下げられた状態で、前記ビット破壊線を前記ビット線対へ接続して、前記ビット線対を「H」レベルに固定し、前記ワードデコーダによりワード線をアクティベートすることを特徴とする半導体装置。
【請求項３】
複数のメモリセルが行列状に配置されたメモリセルアレイと、
前記メモリセルの各行に対応して設けられたワード線と、
前記メモリセルの各列に対応して設けられたビット線対と、
前記ワード線をアクティベートするワードデコーダと、及び
ビット破壊線を外部より接続して、前記ビット線対を「Ｌ」レベルに固定する前記ビット線対を駆動するドライバとを備え、
前記ビット破壊線を前記ビット線対へ接続して、前記ビット線対を「Ｌ」レベルに固定し、前記ワードデコーダによりワード線をアクティベートすることを特徴とする半導体装置。
【請求項４】
複数のメモリセルが行列状に配置されたメモリセルアレイと、
前記メモリセルの各行に対応して設けられたワード線と、
前記メモリセルの各列に対応して設けられたビット線対と、
前記ワード線をアクティベートするワードデコーダとを備え、
前記メモリセルアレイは、所定の個数のメモリセルのまとまりをユニット単位に纏められ、該ユニットの複数個が隣接関係をそれぞれ持って配置されており、
前記各ユニット内には、隣接関係にある他のユニットのメモリセルの値を受信し、受信した前記値と自己のメモリセルに記憶する係数に基づいて演算した値を出力する演算回路を更に備え、及び
前記メモリセルアレイに、前記演算を同期して行う隣接関係にあるユニットのグループを指定するアドレスデコーダを更に備え、
前記アドレスデコーダが指定したユニットのグループ毎に前記演算を所定回数実行し、その後、前記ワードデコーダにより全てのユニットのメモリセルを順次アクティベートするとともに、前記ビット線対を同レベルの電圧に固定する処理を繰り返すことを特徴とする半導体装置。
【請求項５】
前記演算を所定回数実行した後、前記ワードデコーダにより全てのユニットのメモリセルを順次アクティベートする処理を行う際に、全てのユニットのメモリセルに所定電圧より電圧を下げた電源電圧を供給することを特徴とする請求項４に記載の半導体装置。
【請求項６】
前記ワードデコーダにより全てのユニットのメモリセルを順次アクティベートする処理を行う際に、全てのユニットのメモリセルに所定電圧より電圧を下げた電源電圧を供給する処理では、最初に電源電圧を供給する時の電圧の下げ幅をもっとも大きくして、その後の繰り返しの時には順次下げ幅を減らして、０に収束させることを特徴とする請求項５に記載の半導体装置。
【請求項７】
前記演算を所定回数実行した後、前記ワードデコーダにより全てのユニットのメモリセルを順次アクティベートする処理を行う際に、外部インタフェースに接続するビット破壊線を前記ビット線対へ接続して、前記ビット線対を「Ｌ」レベルに固定することを特徴とする請求項４に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相互作用モデルの計算を行う装置に関するものであり、特に、イジングモデルの基底状態を求める半導体装置に関する。
【背景技術】
【０００２】
現在、コンピュータアーキテクチャの主流はノイマン型である。ノイマン型アーキテクチャでは逐次的な命令列であるプログラムでその動作が定義される。プログラムを変更することにより、様々な用途に利用可能な汎用性を有している。コンピュータの中心的な役割を果たすＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみならず、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のような特定用途向けの演算装置もノイマン型アーキテクチャで構成されており、その基本動作は命令列の逐次的な実行にある。
【０００３】
これまで、コンピュータの性能向上は主としてクロック周波数の向上に依っていた。ノイマン型アーキテクチャの根幹は命令例の逐次的な実行であるから、命令の実行速度を高速化すれば性能向上が期待できる。しかし、パーソナルコンピュータやサーバに用いられる汎用的なＣＰＵにおいては、クロック周波数の向上は２０００年代初頭に３ＧＨｚ前後で頭打ちとなっている。近年では頭打ちになったクロック周波数にかわって、マルチコア化による並列処理で性能向上を実現する方策が主流になっている。
【０００４】
マルチコア化による並列処理では、逐次的な命令列から並列実行可能な箇所を見出し（並列性の抽出）、並列実行することで性能向上を図る。しかし、逐次的なアルゴリズムを命令列として書き下したプログラムから並列性を抽出することは容易ではない。命令のレベルで並列性を抽出するＩＬＰ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｌｅｖｅｌ  Ｐａｒａｌｌｅｌｉｓｍ）は既に限界に達しており、近年ではＴＬＰ（Ｔｈｒｅａｄ Ｌｅｖｅｌ  Ｐｒａｌｌｅｌｉｓｍ）やＤＬＰ（Ｄａｔａ  Ｌｅｖｅｌ  Ｐａｒａｌｌｅｌｉｓｍ）のように、より粒度の粗い並列性を利用する方向になっている。
【０００５】
このような状況を鑑みると、今後、コンピュータの性能向上を図っていくためには、従来のように逐次的な命令列の実行を基本とするのではなく、本質的に並列な情報処理に移行していく必要がある。そのためには、従来の逐次的な命令列による問題の記述方法に替わって、本質的に並列な情報処理を実現するために適した問題の記述方法が必要となる。
その一つの候補としてイジングモデルがある。イジングモデルは磁性体の振舞いを説明するための統計力学のモデルであり、磁性体の研究に用いられている。イジングモデルはノード（＋１／−１の２値をとるスピン）間の相互作用として定義される。トポロジが非平面グラフになるイジングモデルの基底状態を求めることはＮＰ困難問題であることが知られている。イジングモデルは空間方向に広がった相互作用係数で問題を表現するため、本質的な並列性を利用した情報処理を実現できる可能性がある。
【０００６】
そのため、構成単位となる要素を規則的に多数並べて実現できる、半導体装置のような固体素子でイジングモデルの基底状態探索を行えることが望ましい。特にＤＲＡＭやＳＲＡＭなどの記憶装置に代表されるようなアレイ構造であり、かつ集積性を高められるように構成単位となる要素が単純な構造であるほうが望ましい。
【０００７】
イジングモデルは＋１／−１（または、０／１、上／下）の２値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎にある外部磁場係数で定義される。イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することが出来る。イジングモデルの基底状態探索とは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。
【０００８】
イジングモデルは、種々の物理現象や社会現象を表現する相互作用モデルの一形態であると解釈できる。相互作用モデルとは、モデルを構成する複数個のノード（node）と、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々の相互作用モデルが提案されている。
相互作用モデルの特徴として、ノード間の影響を２個のノード間の相互作用に限定している（２体間の相互作用）ことがあげられる。例えば、宇宙空間にある惑星の力学を考えてみると、惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが、惑星間の影響は２個の惑星間にとどまらず、３個以上の惑星が互いに影響し合って複雑な挙動を示す（いわゆる３体問題や多体問題と言われる問題になる）。
【０００９】
また、生物学の世界では脳をモデル化したニューラルネットワークが相互作用モデルの一例である。ニューラルネットワークは神経細胞のニューロンを模した人工ニューロンをノードとして、人工ニューロン間はシナプス結合という相互作用を持つ。また、各ニューロンにバイアスを与える場合もある。社会科学の世界では、例えば人間のコミュニケーションを考えると、人間というノードと言語や通信で成される相互作用があることは容易に理解できる。また、各人間には個別にバイアスがあることも想像できる。そのため、人間のコミュニケーションを、相互作用モデルという点で共通なイジングモデル等に模してその特性を明らかにしようという研究もなされている。
【００１０】
イジングモデルに含まれるスピンのとりうる状態の組み合わせは莫大な数にのぼるため、基底状態を求めるにあたってそのすべてを探索することは実質的に不可能である。このため、基底状態を効率よく求めるには、探索するスピンの組み合わせを絞り込む必要がある。しかしながら、絞り込みによって局所最適解を選んでしまい、近似的な基底状態しか得られなくなるといった弊害も起こるため、探索の過程で見つかった局所解を避けることでよりよい解を得られるようにする手段が必要である。
【００１１】
このような手段として、超電導素子を用いた量子的なゆらぎを活用して基底状態探索を行う手段が提案されている。例えば、このような装置として、国際公開第２０１２／１１８０６４号（特許文献１）や特表２０１１−５２４０２６号（特許文献３）に記載の装置がある。
【００１２】
また、特開２０１４−９９２２５号公報（特許文献２）には、「ＳＲＡＭメモリセルＭＣが不良の場合、低スタンバイモード時にリーク電流が発生してメモリセルＭＣがデータ破壊を起こす可能性がある。低スタンバイモード時におけるメモリセルＭＣのデータ保持特性をテストするために、半導体チップ製造工程の最終工程で、ビット線電位を「Ｌ」レベル固定して、データ破壊の加速試験を行い、不良のメモリセルを特定することのできる低スタンバイテストモードを備えた半導体装置を提供する。」と記載されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】国際公開第２０１２／１１８０６４号
【特許文献２】特開２０１４−９９２２５号公報
【特許文献３】特表２０１１−５２４０２６号
【発明の概要】
【発明が解決しようとする課題】
【００１４】
特許文献１、及び３に示した超電導素子を用いた量子揺らぎの形で局所解を脱する方法は、超電導状態を実現するハードウエアを構成するため、高度な冷却装置を使用する必要がある。このため、装置全体が高コストとなり、また大規模化が難しいといった課題がある。
【００１５】
特許文献２では、製品出荷前のテスト段階で、ＳＲＡＭメモリセルの不良を顕在化させるために、ビット線の電位を「Ｌ」レベルに固定する手段を採用しているが、本発明の目的は、正常なメモリセルを、イジングモデルの基底状態探索処理の演算に使用する過程で、所望のビットエラー発生確率範囲を制御して、メモリセルにランダムなビットエラーを起こさせて、局所最適解から脱出しつつ、大域最適解を目指す基底状態探索処理を実現することである。
【００１６】
本発明は上記の課題に鑑みてなされたものであり、その目的は、メモリセル用電源電圧を可変に制御可能として、アドレスデコーダ、ワード、およびビットドライバの小規模な変更によって、イジングモデルに含まれるスピンのとりうる状態にランダム性を供給することで、低コストで大規模化が容易なイジングモデルの基底状態探索を行う半導体装置を提供することにある。
【課題を解決するための手段】
【００１７】
上記課題を解決するために本発明では、半導体装置を、複数のメモリセルが行列状に配置されたメモリセルアレイと、前記メモリセルの各行に対応して設けられたワード線と、前記メモリセルの各列に対応して設けられたビット線対と、前記ワード線をアクティベートするワードデコーダと、プリチャージ用電圧を前記ビット線対へ接続して、前記ビット線対を「H」レベルに固定する前記ビット線対を駆動するドライバと、及び前記メモリセルへ供給する電源電圧を所定電圧より下げる電圧を可変に変えて供給する構成とを備え、前記メモリセルへ供給する電源電圧が所定電圧より下げられた状態で、前記プリチャージ用電圧を前記ビット線対へ接続して、前記ビット線対を「H」レベルに固定し、前記ワードデコーダによりワード線をアクティベートするように構成する。
【００１８】
また、上記課題を解決するために本発明では、半導体装置を、複数のメモリセルが行列状に配置されたメモリセルアレイと、前記メモリセルの各行に対応して設けられたワード線と、前記メモリセルの各列に対応して設けられたビット線対と、前記ワード線をアクティベートするワードデコーダと、ビット破壊線を外部より接続して、前記ビット線対を「H」レベルに固定する前記ビット線対を駆動するドライバと、及び前記メモリセルへ供給する電源電圧を所定電圧より下げる電圧を可変に変えて供給する構成とを備え、前記メモリセルへ供給する電源電圧が所定電圧より下げられた状態で、前記ビット破壊線を前記ビット線対へ接続して、前記ビット線対を「H」レベルに固定し、前記ワードデコーダによりワード線をアクティベートするように構成する。
【００１９】
また、上記課題を解決するために本発明では、半導体装置を、複数のメモリセルが行列状に配置されたメモリセルアレイと、前記メモリセルの各行に対応して設けられたワード線と、前記メモリセルの各列に対応して設けられたビット線対と、前記ワード線をアクティベートするワードデコーダと、及びビット破壊線を外部より接続して、前記ビット線対を「Ｌ」レベルに固定する前記ビット線対を駆動するドライバとを備え、前記ビット破壊線を前記ビット線対へ接続して、前記ビット線対を「Ｌ」レベルに固定し、前記ワードデコーダによりワード線をアクティベートするように構成する。
【００２０】
また、上記課題を解決するために本発明では、半導体装置を、複数のメモリセルが行列状に配置されたメモリセルアレイと、前記メモリセルの各行に対応して設けられたワード線と、前記メモリセルの各列に対応して設けられたビット線対と、前記ワード線をアクティベートするワードデコーダとを備え、前記メモリセルアレイは、所定の個数のメモリセルのまとまりをユニット単位に纏められ、該ユニットの複数個が隣接関係をそれぞれ持って配置されており、前記各ユニット内には、隣接関係にある他のユニットのメモリセルの値を受信し、受信した前記値と自己のメモリセルに記憶する係数に基づいて演算した値を出力する演算回路を更に備え、及び前記メモリセルアレイに、前記演算を同期して行う隣接関係にあるユニットのグループを指定するアドレスデコーダを更に備え、前記アドレスデコーダが指定したユニットのグループ毎に前記演算を所定回数実行し、その後、前記ワードデコーダにより全てのユニットのメモリセルを順次アクティベートするとともに、前記ビット線対を同レベルの電圧に固定する処理を繰り返すように構成する。
【００２１】
また、上記課題を解決するために本発明では、前記半導体装置において、前記演算を所定回数実行した後、前記ワードデコーダにより全てのユニットのメモリセルを順次アクティベートする処理を行う際に、全てのユニットのメモリセルに所定電圧より電圧を下げた電源電圧を供給するように構成する。
【発明の効果】
【００２２】
本発明によれば、イジングモデルの基底状態探索を行う半導体装置において、マルチワードデコーダにより、複数のワード線を同時に選択して、ワード間で同一値の書き込み、または複数のワードのメモリセル記憶内容破壊を実現できる。
また、メモリセル用電源電圧を可変に制御可能として、アドレスデコーダ、ワード、およびビットドライバの小規模な変更によって、イジングモデルに含まれるスピンのとりうる状態にランダム性を供給することで、低コストで大規模化が容易なイジングモデルの基底状態探索を行う半導体装置を提供できる。
【図面の簡単な説明】
【００２３】
【図１】本発明の半導体装置であるイジングチップの構成の一例を説明する図である。
【図２】本発明の半導体装置であるイジングチップを制御する情報処理装置の構成の一例を説明する図である。
【図３】スピンユニットの構成の一例を、スピンユニット間の相互作用を行う回路の構成について説明する図である。
【図４】スピンユニットの構成の一例を、スピンユニットが有するメモリセルにアクセスするための構成について説明する図である。
【図５】３次元格子のスピンアレイの構成の一例を説明する図である。
【図６】スピンユニット内のメモリセルとスピンアレイのトポロジとの対応関係を説明する図である。
【図７】３次元格子のスピンアレイとスピンユニットの対応関係の一例を説明する図である。
【図８】イジングチップ上のスピンユニットの配置の一例を説明する図である。
【図９】スピンユニット間の相互作用を行う配線の一例を説明する図である。
【図１０】メモリセルの構成の一例を説明する図である。
【図１１】スピンユニットのグループ分けと相互作用クロック、及び、相互作用アドレスの関係について説明する図である。
【図１２】イジングチップに備わる通常のＳＲＡＭの構成を説明する図である。
【図１３】イジングチップに備わる通常のＳＲＡＭの構成によりメモリセルへの書込み動作を説明する図である。
【図１４】イジングチップに備わる通常のＳＲＡＭの構成によりプリチャージ動作を説明する図である。
【図１５】イジングチップに備わる通常のＳＲＡＭの構成によりプリチャージ動作後にメモリセルからリード動作を行う構成を説明する図である。
【図１６】イジングチップに備わる通常のＳＲＡＭの構成に加えて、ビット破壊線と、選択線、およびマルチワードデコーダを接続する構成を説明する図である。
【図１７】図１６の構成のイジングチップにおいて、書込み動作を説明する図である。
【図１８】図１６の構成のイジングチップにおいて、プリチャージ動作を説明する図である。
【図１９】図１６の構成のイジングチップにおいて、プリチャージ動作後にメモリセルからリード動作を行う構成を説明する図である。
【図２０】図１６の構成のイジングチップにおいて、マルチワードライト動作を説明する図である。
【図２１】図１６の構成のイジングチップにおいて、メモリセル破壊動作を説明する図である。
【図２２】情報処理装置において、イジングチップをＣＰＵが制御して基底状態探索処理を行う手順の第一の実施形態である。
【図２３】図２２のフローチャートにおいて、メモリセル用電源電圧の制御の一例を説明する図である。
【図２４】情報処理装置において、イジングチップをＣＰＵが制御して基底状態探索処理を行う手順の第二の実施形態である。
【図２５】情報処理装置において、イジングチップをＣＰＵが制御して基底状態探索処理を行う手順の第三の実施形態である。
【図２６】イジングチップに備わる通常のＳＲＡＭの構成によりプリチャージ動作を利用してメモリセル破壊動作を行う構成を説明する図である。
【図２７】マルチワードデコーダの構成を説明する図である。
【図２８】マスク生成器の構成を説明する図である。
【図２９】メモリセルに供給する電圧を下げた場合のメモリセルＮのビットエラー発生率の実験結果を示しており、(ａ)：全てのメモリセルの初期値を0にして、供給電圧をグラフ横軸の電圧まで下げた後に、正常電圧(定格電圧：１Ｖ)で読み出した時の全メモリセルの値の比率(縦軸)であり、(ｂ)：全てのメモリセルの初期値を１にして、供給電圧をグラフ横軸の電圧まで下げた後に、正常電圧で読み出した時の全メモリセルの値の比率(縦軸)である。
【図３０】メモリセルＮに供給する電圧を下げて、かつ疑似的にリードを行った場合のメモリセルＮのビットエラー発生率の実験結果であり、(ａ)：全てのメモリセルの初期値を0にして、供給電圧をグラフ横軸の電圧まで下げた後に、ダミーリードを行い、正常電圧で読み出した時の全メモリセルの値の比率(縦軸)であり、(ｂ)：全てのメモリセルの初期値を１にして、供給電圧をグラフ横軸の電圧まで下げた後に、ダミーリードを行い、正常電圧で読み出した時の全メモリセルの値の比率(縦軸)である。
【図３１】２０Ｋ個のスピンユニットのスピンを記憶する各メモリセルＮに対して、電源電圧を下げて、かつ疑似リードを行った場合の実験結果であり、メモリセルの初期値を全て１として、０．８Ｖまで電圧を下げてダミーリードした場合を示す。
【図３２】メモリセルの初期値を全て１として、０．７５Ｖまで電圧を下げてダミーリードした場合を示す。
【図３３】メモリセルの初期値を全て１として、０．７Ｖまで電圧を下げてダミーリードした場合を示す。
【図３４】メモリセルの初期値を全て１として、０．６５Ｖまで電圧を下げてダミーリードした場合を示す。
【図３５】メモリセルの初期値を全て０として、０．８Ｖまで電圧を下げてダミーリードした場合を示す。
【図３６】メモリセルの初期値を全て０として、０．７５Ｖまで電圧を下げてダミーリードした場合を示す。
【図３７】メモリセルの初期値を全て０として、０．７Ｖまで電圧を下げてダミーリードした場合を示す。
【図３８】メモリセルの初期値を全て０として、０．６５Ｖまで電圧を下げてダミーリードした場合を示す。
【発明を実施するための形態】
【００２４】
以下、実施例を図面を用いて説明する。
【実施例１】
【００２５】
本実施例では、イジングモデルの基底状態を求める半導体装置であるイジングチップ１００、及びイジングチップ１００を制御する情報処理装置２００の例を説明する。
【００２６】
（１）解くべき問題をイジングモデルの基底状態探索問題に変換
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは＋１／−１（または、０／１、上／下）の２値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎にある外部磁場係数で定義される。
【００２７】
イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することが出来る。イジングモデルのエネルギー関数Ｅ(σ)は一般的に次式(数１)で表わされる。なお、σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値、Ｊi,jはｉ番目とｊ番目のスピンの間の相互作用係数、ｈｉはｉ番目のスピンに対する外部磁場係数、＜ｉ，ｊ＞は隣接する２つのサイトの組合せ、σはスピンの配列を表わすものとする。
【００２８】
【数１】
0005851570.tif 000002
【００２９】
イジングモデルの基底状態を求めるというのは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。
例えば、グラフの最大カット問題や巡回セールスマン問題など、一見すると磁性体と何ら関係の無い最適化問題をイジングモデルの基底状態探索問題に変換することができる。そして、変換して得られたイジングモデルの基底状態は、元の問題の解に対応している。このことから、イジングモデルの基底状態を探索することのできる装置は、汎用的な用途に利用可能なコンピュータであると言える。
【００３０】
本実施例では、イジングモデルの基底状態探索を一例として説明しているが、上記した相互作用モデルの基底状態探索に置き換えて同様に適用できることは言うまでもない。
【００３１】
（２）イジングチップの構成
図１は、本実施例のイジングチップ１００の構成図の例である。イジングチップ１００はスピンアレイ１１０、ビット線ドライバ１２０、マルチワードデコーダ１３０、および、相互作用アドレスデコーダ１４０から構成される。本実施例ではイジングチップ１００は現在広く用いられているＣＭＯＳ集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。
【００３２】
スピンアレイ１１０は後述(図３、４)するとおり、１個のスピンとそれに付随する相互作用係数、及び、外部磁場係数の保持と、基底状態探索処理を実現するスピンユニット３００を基本構成単位として、スピンユニット３００を多数個並べて構成される。スピンアレイ１１０は、ＳＲＡＭとしての機能とイジングモデルの基底状態探索を行う相互作用回路としての機能を併せ持っている。
【００３３】
ビット線ドライバ１２０とマルチワードデコーダ１３０はスピンアレイ１１０をＳＲＡＭとして用いる際のインターフェースである。ビット線ドライバ１２０はデータバス１９１を介してスピンアレイ１１０から読み取り、または書き込みをするビット列を授受し、Ｒ／Ｗ制御線１９３の信号に従って、読み取り動作と書き込み動作を切り替えることができる。また、本実施例に特有の機能として、スピンアレイ１１０内の指定アドレスのスピンユニット３００のスピンを特定の確率で破壊させる制御を行う選択線１９４とビット破壊線１９５を備える。
マルチワードデコーダ１３０はアドレスバス１９０を介して読み書きを行うアドレスをマッピングする。アドレスバス１９０からのアドレス信号に従って、行選択信号、列選択信号を生成して、行選択信号に従って対応するワード線を駆動するとともに、列選択信号をビット線ドライバ１２０へ供給する。また、本実施例に特有の機能として、複数のワード線を同時にアクティベートする制御をするために、外部より多重度制御線１９６を備える。
ビット線ドライバ１２０とマルチワードデコーダ１３０はいずれもＩ／Ｏクロック１９２に同期して動作する。
【００３４】
イジングチップ１００は、スピンアレイ１１０にリード／ライトを行うためのＳＲＡＭ互換インタフェース１５０を持っており、アドレスバス１９０、データバス１９１、Ｒ／Ｗ制御線１９３、および、Ｉ／Ｏクロック１９２である。また、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース１６０として、相互作用アドレス１８０、および、相互作用クロック１８１を有している。
イジングチップ１００は通常電源線１４２で供給される電圧で動作するが、スピンアレイ１１０の一部はメモリセル用電源線１４１で供給される電圧で動作する。具体的には、スピンアレイ１１０を構成するスピンユニット３００（図３）が有するメモリセル３１１は、電圧を可変に制御ができるメモリセル用電源線１４１で供給される電圧で動作する。
【００３５】
イジングチップ１００では、イジングモデルのスピンσｉ、相互作用係数Ｊi,j、および、外部磁場係数ｈｉを全てスピンアレイ１１０内のメモリセルに記憶する情報で表現する。スピンの初期状態の設定、及び、基底探索完了後の解読み出しのためにスピンσｉのリード／ライトをＳＲＡＭ互換インタフェース１５０で行う。また、基底状態を探索すべきイジングモデルをイジングチップ１００に設定するために、相互作用係数Ｊi,j、および、外部磁場係数ｈｉのリード／ライトもＳＲＡＭ互換インタフェース１５０で行う。そのため、スピンアレイ１１０内のスピンσｉ、相互作用係数Ｊi,j、および、外部磁場係数ｈｉにはアドレスが付与されている。なお、ＳＲＡＭ互換インタフェース１５０を構成するアドレスバス１９０、データバス１９１、および、Ｒ／Ｗ制御線１９３は、Ｉ／Ｏクロック１９２に入力されるクロックに同期して動作する。但し、本発明においてインタフェースが同期式である必要性は無く、非同期式のインタフェースでも良い。本実施例では、同期式のインタフェースであるという前提で説明を行う。
【００３６】
また、イジングチップ１００は基底状態探索を行うために、スピンアレイ１１０の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース１６０であり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス１８０で入力し、相互作用アドレスデコーダ１４０は、スピンアレイ１１０を相互作用回路として用いるために、相互作用クロック１８１に入力されるクロックに同期して相互作用を行う。相互作用動作の詳細については後述する。
なお、相互作用は必ずしもクロック同期回路で実現される必要はなく、非同期回路であっても構わない。この場合、相互作用クロック１８１の役割はクロックの入力ではなく、相互作用の実行を許可するイネーブル信号であるものとする。相互作用制御インタフェースについても必ずしも同期式である必要はなく非同期式のインタフェースでも良いが、本実施例では同期式のインタフェースを用い、相互作用が相互作用クロック１８１に同期して行われるという前提で説明を行う。
【００３７】
（３）情報処理装置の構成
前記イジングチップ１００を１個、または、複数個用いて情報処理を実現するわけであるが、そのためには前述したようなインタフェースを制御しなければならない。そのために、イジングチップ１００は図２に示すような情報処理装置２００の一部として利用される。
【００３８】
情報処理装置２００は、現在一般的に用いられているパーソナルコンピュータやサーバのような装置に、イジングチップ１００で構成されたアクセラレータを装着したものと考えて良い。情報処理装置２００は、ＣＰＵ２１０、ＲＡＭ２２０、ＨＤＤ２６０、ＮＩＣ２４０を有し、これらがシステムバス２３０で結合されている。これは、現在のパーソナルコンピュータやサーバに一般的に見られる構成である。加えて、システムバス２３０にイジングチップコントローラ２５０が接続され、その先に１個ないしは複数個のイジングチップ（図２の例では、２個のイジングチップ１００−１、及び、イジングチップ１００−２を有する。これ以降、２個のイジングチップを特に区別する必要の無いときには、単にイジングチップ１００と称する。）を持つ。このイジングチップコントローラ２５０とイジングチップ１００がアクセラレータに相当するものであり、例えばＰＣＩ  Ｅｘｐｒｅｓｓのようなペリフェラル拡張用インタフェースに挿入して使う拡張カードのような形態を取る。イジングチップコントローラ２５０はシステムバス２３０（例えばＰＣＩ  ＥｘｐｒｅｓｓやＱＰＩ）のプロトコルをイジングチップのインタフェースに合せて変換するものである。情報処理装置２００のＣＰＵ２１０上で動作するソフトウェアは、一般的には特定のアドレスに対してリード／ライトを行うことで（いわゆるＭＭＩＯ、Ｍｅｍｏｒｙ  Ｍａｐｐｅｄ  Ｉ／Ｏ）、イジングチップコントローラ２５０を経由して、イジングチップ１００を制御することが出来る。また、このような情報処理装置を、装置間ネットワーク２９０を介して、複数台結合して利用しても良い。
【００３９】
（４）スピンアレイの構成
スピンアレイ１１０は、１個のスピンとそれに付随する相互作用係数、及び、外部磁場係数の保持と、基底状態探索処理を実現するスピンユニット３００を基本構成単位として、スピンユニット３００を多数個並べて構成する。図５はスピンユニット３００を複数個並べることで、３次元格子状のトポロジを持つイジングモデルを構成する例を示している。図５の例は、３（Ｘ軸方向）×３（Ｙ軸方向）×２（Ｚ軸方向）の大きさの３次元格子である。座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、図面奥行き方向をＺ軸としているが、この座標軸は実施例の説明上便宜的に必要なだけであり、発明とは関係しない。３次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図５の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数５のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数６が必要となる。
【００４０】
図５に示す１個のスピンユニット３００は隣接するスピン（例えば隣接するスピンが５個の場合）σj，σｋ，σｌ，σｍ，σｎの値が入力される。また、スピンユニット３００はスピンσｉと外部磁場係数ｈｉに加え、前記した隣接するスピンとの相互作用係数であるＪj,i，Ｊk,i，Ｊl,i，Ｊm,i，Ｊn,i（隣接する５スピンとの相互作用係数）を保持するメモリセルを有している。
【００４１】
ところで、イジングモデルは一般的に無向グラフで表現される相互作用を有している。前記した数１では、相互作用を表わす項として、Ｊi,j×σｉ×σｊがあるが、これはｉ番目スピンからｊ番目スピンへの相互作用を示している。この時、一般的なイジングモデルではｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。つまり、Ｊi,jとＪj,iは同一である。しかし、本発明のイジングチップ１００では、このイジングモデルを有向グラフに拡張し、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【００４２】
そのため、１個のスピンユニット３００をｉ番目スピンσｉと考えた時に、このスピンユニットが保持する相互作用係数であるＪj,i，Ｊk,i，Ｊl,i，Ｊm,i，Ｊn,iは、隣接するｊ番目、ｋ番目、ｌ番目、ｍ番目、ｎ番目のスピンσj，σｋ，σｌ，σｍ，σｎから、ｉ番目スピンσｉへの相互作用を決めるものである。このことは、図５において、スピンユニット３００に含まれている相互作用係数が対応する矢印（相互作用）が、図示されているスピンユニット３００の外部のスピンから、スピンユニット３００の内部のスピンに向かっていることに対応している。
【００４３】
（５）スピンユニットの構成
スピンユニット３００の構成の一例を図３と図４を用いて説明する。スピンユニット３００は２つの側面を持っており、便宜上、図３と図４に分けて説明するが、１個のスピンユニット３００に図３と図４の構成の双方が含まれるものである。図３はスピンユニット間の相互作用を実現するための回路を図示し、図４はスピンユニットが有するメモリセルにイジングチップ１００外からアクセスするためのインタフェースであるワード線とビット線に注目して図示したものである。なお、図３の相互作用を実現するための回路において図示されているインタフェースであるＥＮ，ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦ，Ｎを、複数のスピンユニット間でどのように結線するかについては、後に図９及び図１１を参照して説明する。また、図４のワード線及びビット線を複数のスピンユニット間でどのように結線するかについては、後に図８を参照して説明する。
【００４４】
スピンユニット３００は、イジングモデルのスピンσｉ、相互作用係数Ｊj,i、……Ｊn,iおよび、外部磁場係数ｈｉを保持するために、１ビットのメモリセルを複数個備えている。この１ビットのメモリセルは図中に、Ｎ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１として図示されているものである。なお、ＩＳ０とＩＳ１、ＩＵ０とＩＵ１、ＩＬ０とＩＬ１、ＩＲ０とＩＲ１、ＩＤ０とＩＤ１、および、ＩＦ０とＩＦ１はそれぞれ２個１組で役割を果たすものであるため、それぞれまとめてＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，および、ＩＦｘと略記する。
【００４５】
スピンユニット３００が有する各メモリセルの構造の一例を図１０のメモリセル４５０に示す。メモリセル４５０はＣＭＯＳインバータ２個で構成されるデータ保持部４４０を有し、パスゲートトランジスタ４３１，４３２をワード線４２１及びビット線４１１，４１２で制御することで、データ保持部４４０へのデータ読み書きを実現する。
ここで、スピンユニット３００はｉ番目のスピンを表現するものとして説明を行う。メモリセルＮはスピンσｉを表現するためのメモリセルでありスピンの値を保持する。スピンの値はイジングモデルでは＋１／−１（＋１を上、−１を下とも表現する）であるが、これをメモリセルの２値である０／１に対応させる。例えば、＋１を１、−１を０に対応させる。
【００４６】
図６を用いて、スピンユニット３００が有するメモリセルと、図５に示したイジングモデルのトポロジとの対応関係を示す。ＩＳｘは外部磁場係数を表現する。また、ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘはそれぞれ相互作用係数を表現する。ＩＵｘは上側のスピン（Ｙ軸方向で−１）、ＩＬｘは左側のスピン（Ｘ軸方向で−１）、ＩＲｘは右側のスピン（Ｘ軸方向で＋１）、ＩＤｘは下側のスピン（Ｙ軸方向で＋１）、ＩＦｘは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）との相互作用係数を示している。また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット３００は最大で５個のスピンと接続される。本実施例のイジングチップ１００では、外部磁場係数、及び、相互作用係数として＋１／０／−１の３値に対応する。そのため、外部磁場係数、および、相互作用係数を表わすためには、それぞれ２ビットのメモリセルが必要となる。ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘは、末尾の数字が０と１の２つのメモリセル（例えばＩＳｘの場合にはＩＳ０とＩＳ１）の組合せで、＋１／０／−１の３値を表現する。例えば、ＩＳｘの場合には、ＩＳ１で＋１／−１を表現し、ＩＳ１が１の時は＋１，０の時には−１を表現する。これに加えて、ＩＳ０が０の時には外部磁場係数を０と見なし、ＩＳ０が１の時にはＩＳ１で決まる＋１／−１のいずれかを外部磁場係数とする。外部磁場係数が０の時は外部磁場係数をディセーブルしていると考えれば、ＩＳ０は外部磁場係数のイネーブルビットであると言うことができる（ＩＳ０＝１の時に、外部磁場係数がイネーブルされる）。相互作用係数を表現するＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘも同様に係数とビットの値を対応させている。
【００４７】
スピンユニット３００内のメモリセルＮ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１は、それぞれイジングチップ１００の外部からリード／ライト可能でなければならない。そのために、図４に示すようにスピンユニット３００はビット線４１０とワード線４２０をそれぞれ有している。スピンユニット３００を半導体基板上にタイル状に並べてビット線４１０とワード線４２０を接続し、マルチワードデコーダ１３０とビット線ドライバ１２０で駆動、制御、書き込み・読み出しすることで、一般的なＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と同様にスピンユニット３００内のメモリセルをイジングチップ１００のＳＲＡＭ互換インタフェース１５０でリード／ライトすることが出来る。
【００４８】
（６）スピンアレイ内のスピンユニット配置
スピンアレイ１１０の構成を、半導体装置としてのレイアウトの観点から図８で説明する。本実施例のスピンアレイ１１０は図５に示したように３次元格子のトポロジを持つため、２次元平面上に回路を構成する半導体装置として実現するためには、レイアウト上の工夫が必要となる。そこで、図８に示すような配置を取る。なお、図８上で表現されているスピンユニット３００（ＮｘｙｚというようにＸ軸、Ｙ軸、Ｚ軸上の位置によって符号を付与している）が、３次元格子のトポロジでどの頂点に対応するかを図７で示す。３×３×２の３次元格子頂点を２次元平面上に配置するために、Ｘ軸方向の格子頂点配列の間隔にＺ軸方向の格子頂点配列の各格子頂点を挿入するように配置している。すなわち、図８の２次元平面上でのＹ軸方向（図面下側がＹ軸正の方向）にはＮｘ０ｚ，Ｎｘ１ｚ，Ｎｘ２ｚというように配置されるが、Ｘ軸方向（図面右側がＸ軸正の方向）にはＮ０ｙ０，Ｎ０ｙ１，Ｎ１ｙ０，Ｎ１ｙ１，Ｎ２ｙ０，Ｎ２ｙ１というように、Ｚ軸方向座標が０と１のスピンユニットが交互に配置される。
【００４９】
イジングチップ１００上には物理的にはスピンユニット３００を図８に示すように配置し、その上に図８に示すようなワード線４２０−１，４２０−２，４２０−３と、ビット線４１０−１，４１０−２，４１０−３，４１０−４，４１０−５，４１０−６を配線する。これらのワード線、ビット線は図４に示したスピンユニット３００のワード線４２０とビット線４１０に結線される。各スピンユニット３００はワード線の配列方向に１３個のメモリセルを有する（ワード線４２０は１３ビット）ので、ワード線４２０−１，４２０−２，４２０−３はそれぞれ１３ビットとなる。
【００５０】
（７）イジングモデルの基底状態探索処理の制御
イジングモデルの基底状態探索を実現するためには、イジングモデル全体のエネルギーがより低いスピン配列になるように遷移していくように、スピン間の相互作用を実現しなければならない。このための相互作用は、与えられた相互作用係数と外部磁場係数に基づいて行われる。つまり、あるスピンの次の値を、そのスピンに接続されている他のスピンからの相互作用と、そのスピンが持つ外部磁場係数から決定する。このとき、スピンの次の値は、そのスピンが接続されている範囲内での局所的なエネルギーを最小化するような値になる。
【００５１】
このスピンの更新は、それぞれのスピンを１個ずつ逐次的に更新することがまず考えられるが、この方法ではスピン数に比例した時間がかかってしまい、並列性を利用することが出来ない。そこで、スピン間の相互作用を全てのスピンについて同時並行的に行うことが望ましい。
【００５２】
しかし、全てのスピンを同時に更新しようとすると、あるスピンを更新するときに、隣接スピンの値を見て、隣接スピンとの間でエネルギーを最小化するようにスピンを更新するので、それと同時に隣接スピンの値を更新すると、両方の更新が重複してしまい、エネルギーを最小化できず振動してしまう。すなわち、あるスピンを更新するときに、そのスピンに接続されているスピン（あるスピンに相互作用係数を介して直接接続されているスピンをこれ以降隣接スピンと呼ぶ）を同時に更新することはできない。
【００５３】
そこで、本発明では隣接スピンは同時に更新しないように、スピンアレイ１１０内のスピンユニット３００をグループ分けして、一度に同時に更新するのは１つのグループだけにする。図５に示すようなトポロジであれば、２グループに分ければ良い。そして、この２グループを交互に更新していくわけである。あるタイミングで更新するグループを指示するために、イジングチップ１００は相互作用アドレス１８０を入力インタフェースとして有する。相互作用アドレス１８０は前述したグループのうち、更新するグループを指定するためのインタフェースであり、相互作用クロック１８１の入力によって、相互作用アドレス１８０で指定されるグループに属するスピン（スピンユニット３００）が同時に更新される。
【００５４】
この方法であれば、スピンユニット３００内に追加のハードウェアは必要なく、イジングチップ１００全体に対して一組の相互作用アドレスデコーダ１４０を設けるだけで良い。そのため、構成単位であるスピンユニット３００を複雑化することなく、前記の問題が解決できる。
【００５５】
前記グループ分けについて、図１１を用いて説明する。図１１ではスピンユニットＮｘｙzがそれぞれグループＡとグループＢの２グループにグループ分けされている。各スピンユニット３００は後述するように、スピンの更新を許可する信号を入力するインタフェース（ＥＮ）を有する。そこで、相互作用アドレス１８０で指定されるアドレス（グループの識別子）を相互作用アドレスデコーダ１４０でデコードし、グループ毎の更新許可信号を生成する。図１１の例では、グループＡ指定信号１４３、及び、グループＢ指定信号１４４がグループ毎の更新許可信号である。そして、相互作用クロック１８１でその時に更新が許可されているグループに属するスピンユニットの更新が行われる。なお、図１１に示すグループ分けによって、図５のトポロジで隣接スピンが必ず異なるグループになっている。
【００５６】
また、スピンユニット３００のグループ分けは前述した同時更新の衝突回避に加えて、消費電力の都合からさらに細分化してもよい。例えば前述した例では２グループに分ければ更新の衝突を回避できるが、同時に全てのスピンを更新しようとすると電力消費が問題になる場合には、例えば１つのグループをさらに細かく分割してもよい。例えば、２グループ分けにおいて、１つのグループを消費電力都合で４分割して、合計８グループに分ける。
【００５７】
（８）スピンユニット内に備えた次のスピンの状態を決定するための回路構成  
スピンユニット３００は同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット毎に独立して持っている。スピンの次状態を決定するための回路を図３に示す。図３ではスピンユニットは外部とのインタフェースとして、ＥＮ，ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦ，Ｎを有する。ＥＮは当該スピンユニットのスピンの更新を許可する信号を入力するインタフェースである。Ｎは当該スピンユニットのスピンの値を他のスピンユニット（図５のトポロジで隣接するユニット）に出力するインタフェースである。ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦはそれぞれ他のスピンユニット（図５のトポロジで隣接するユニット）の有するスピンの値を入力するためのインタフェースである。ＮＵは上側のスピン（Ｙ軸方向で−１）、ＮＬは左側のスピン（Ｘ軸方向で−１）、ＮＲは右側のスピン（Ｘ軸方向で＋１）、ＮＤは下側のスピン（Ｙ軸方向で＋１）、ＮＦは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）からの入力である。なお、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。図５のトポロジのように単に端は打ち切るのであれば、ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦのうち端に対するものは何も入力しなくて良い（回路上は０ないしは１の固定値に接続するなど、未使用入力端子として適切な処理をとる）。例えばＮ０００のスピンユニットの場合には、ＮＵ及びＮＬの２端子は入力が無い。
【００５８】
スピンユニット３００では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を見た時に、正の値と負の値のどちらが支配的か判断することと等価である。例えば、ｉ番目スピンσｉに、スピンσj，σｋ，σｌ，σｍ，σｎが隣接しているとして、スピンσｉの次状態は以下のように決まる。まず、隣接スピンの値はσj＝＋１，σｋ＝−１，σｌ＝＋１，σｍ＝−１，σｎ＝＋１とし、相互作用係数はＪj,i＝＋１，Ｊk,i＝＋１，Ｊl,i＝＋１，Ｊm,i＝−１，Ｊn,i＝−１、外部磁場係数ｈｉ＝＋１とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σj×Ｊj,i＝＋１，σｋ×Ｊk,i＝−１，σｌ×Ｊl,i＝＋１，σｍ×Ｊm,i＝＋１，σｎ×Ｊn,i＝−１，ｈｉ＝＋１となる。外部磁場係数は、常に値が＋１のスピンとの相互作用係数と読み替えて良い。
【００５９】
ここで、ｉ番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれｉ番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、ｊ番目スピンとの間での局所的なエネルギーは、ｉ番目スピンを＋１とした時には−１、ｉ番目スピンを−１としたときには＋１となるので、ｉ番目スピンを＋１にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えた時に、ｉ番目スピンを＋１／−１のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べたものにおいて、＋１と−１のどちらが多いか数えれば良い。先程の例では、＋１が４個、−１が２個である。仮に、ｉ番目スピンを＋１とするとエネルギーの総和は−２、ｉ番目スピンを−１とするとエネルギーの総和は＋２になる。よって、＋１の個数が多い時にはｉ番目スピンの次状態を＋１とし、−１の個数が多い時にはｉ番目スピンの次状態を−１にするという多数決で、エネルギーを最小化するｉ番目スピンの次状態を決定することが出来る。
【００６０】
図３のスピンユニット３００に図示する論理回路は前記した相互作用を行うための回路である。まず、隣接スピンの状態と相互作用係数の＋１／−１を示すメモリセルとの排他的論理和の否定（ＸＮＯＲ）で、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる（＋１は１、−１は０にエンコードされているものとする）。もし、相互作用係数が＋１／−１だけであれば、この出力のうち＋１／−１のどちらが多いか多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態＋１のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理に入力すべき値となる。
【００６１】
次に、係数０の実現方法について考える。ｎ入力の多数決論理ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ）があるとき、以下の命題は真であると言える。まず、入力Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎの複製Ｉ’１，Ｉ’２，Ｉ’３，．．．，Ｉ’ｎがあるとする（任意のｋについて、Ｉｋ＝Ｉ’ｋである）。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ）の出力は、複製もあわせて入力したｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ，Ｉ’１，Ｉ’２，Ｉ’３，．．．，Ｉ’ｎ）と等しい。つまり、各入力変数をそれぞれ２個ずつ入れても、出力は不変である。さらに、入力Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎの他に、もう一つの入力Ｉｘと、その反転！Ｉｘがあるとする。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ，Ｉｘ，！Ｉｘ）の出力は、ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ）と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数０を実現する。具体的には、図３に示すように、ＸＯＲを利用して、係数のイネーブルを決めるビット（ＩＳ０など）の値により、多数決論理に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、ＩＳ０が０の場合、ＩＳ１の値と、ＩＳ１の反転の値が同時に多数決論理に入力されるので、外部磁場係数の影響は無い（外部磁場係数が０に相当する）ことになる。また、ＩＳ０が１の場合には、ＩＳ１の値と、その値と同じ値（複製）が同時に多数決論理に入力されることになる。
【００６２】
（９）スピンユニット間の配線
図３で示したスピンユニットのインタフェースである、ＥＮ，ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦ，Ｎについて、ＥＮの配線に関しては図１１で説明した通りだが、ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦ，Ｎの配線の例については図９に示す。図９は、ある１個のスピンユニットＮｘｙｚに注目した時に、図５に示すようなトポロジを図８のように配置したスピンユニットで実現するために必要な配線を示している。このような配線をスピンユニット毎に行うことで、図５のトポロジを実現することが出来る。
【００６３】
（１０）イジングモデルの基底状態探索における局所最適解の回避手段
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、各スピンユニット３００が有するスピンの値を所望の確率でランダムに反転(破壊)させる手段により、スピン配列をランダムに変化させることをイジングモデルの基底状態探索処理の中に取り入れることが考えられる。
【００６４】
すなわち、各スピンユニット３００が有するスピンの値にランダムなビットエラー(記憶内容破壊)を生じさせることである。通常のＳＲＡＭのメモリセルのビットエラーレートはメモリセルへの供給電圧に比例しており、例えば定格電圧１Ｖでは１０−９程度のビットエラーレートであり、このビットエラーレートは記憶内容を保持するというメモリ本来の目的に適したものである。この電圧から、さらに電圧を下げていくと、電圧の下げ幅に比例してビットエラーレートも悪化していくことは知られている。例えば、０.６Ｖ程度まで電圧を下げることで、１０−１程度のビットエラーレートになり、このようなビットエラーが発生しやすい状態を、局所最適解からの脱出手段に用いることが考えられる。
【００６５】
しかし、スピンの値を記憶するメモリセルＮの記憶内容を破壊させるために、単にメモリセルに供給する電源電圧を下げるだけでは、かなり低い電圧（定格電圧が１Ｖに対して、０.２Ｖ未満）まで下げなければならず、またビットエラー確率の制御には細かい電圧分解能（１０mＶで１０％程度）を必要とする（ＣＭＯＳ ６５nm実測値）。
図２９に、メモリセルに供給する電圧を下げた場合のメモリセルＮのビットエラー発生率の実験結果を示す。図２９(ａ)は、全てのメモリセルの初期値を0にして、供給電圧をグラフ横軸の電圧まで下げた後に、正常電圧(定格電圧：１Ｖ)で読み出した時の全メモリセルの値(０ or １)の比率(縦軸)であり、図２９(ｂ)は、全てのメモリセルの初期値を１にして、供給電圧をグラフ横軸の電圧まで下げた後に、正常電圧(定格電圧：１Ｖ)で読み出した時の全メモリセルの値(０ or １)の比率(縦軸)である。グラフでは、電圧が１８０〜２００mV付近で故障のモードが変わっており、また電圧がごく低い領域で、電圧の変化量に対してエラーの変化量が非常に急峻であり、ビットエラーの制御に電圧の変化量を使い難いことが判る。
【００６６】
また、イジングチップ上のメモリセルの属する電源ドメインを、記憶内容を破壊したいメモリセル(スピンを記憶)と、記憶内容を保持したいメモリセル(相互作用係数、外部磁場係数を記憶)とで分けなければならないため、メモリセルアレイの一部のメモリセルを選択的に破壊することが難しい。
【００６７】
そこで、メモリセルに供給する電源電圧をそれ程下げることはしなくても、何らかの動作をメモリセルに起こさせる、例えば、疑似的にメモリセルをリードする、すなわちビット線対をプリチャージした後、ワード線を選択レベルの「H」レベル（内部通常電源電圧１４２）としてメモリセルを活性化することで、メモリセルのビットエラー発生率を高めることができることを本願発明者は見出した。
図３０は、図２９の実験結果と対比して、メモリセルＮに供給する電圧を下げて、かつ疑似的にリードを行った場合のメモリセルＮのビットエラー発生率の実験結果を示す。図３０(ａ)は、全てのメモリセルの初期値を0にして、供給電圧をグラフ横軸の電圧まで下げた後に、ダミーリードを行い、正常電圧(定格電圧：１Ｖ)で読み出した時の全メモリセルの値(０ or １)の比率(縦軸)であり、図３０(ｂ)は、全てのメモリセルの初期値を１にして、供給電圧をグラフ横軸の電圧まで下げた後に、ダミーリードを行い、正常電圧(定格電圧：１Ｖ)で読み出した時の全メモリセルの値(０ or １)の比率(縦軸)である。グラフでは、電圧が８００mVぐらいからメモリセルの内容が壊れ始め、電圧の変化量に対してエラーの変化量の関係は、図２９の結果と比べて、非常に滑らかになっている。従って、ビットエラー確率の制御に細かい電圧分解能を得ることができる。
【００６８】
そこで、メモリセルアレイに供給する電圧を若干下げるのと併用して、疑似的にメモリセルをリードする手段により、各スピンユニット３００が有するスピンの値にランダムなビットエラー(記憶内容破壊)を生じさせ、イジングモデルの基底状態探索処理における局所最適解に陥ることを回避する。このため、本実施例のイジングチップでは、図１に示すように、スピンアレイ１１０を構成する各スピンユニット３００のメモリセルに電源電圧を供給する、電圧を可変に制御できるメモリセル用電源線１４１を、その他の回路に電源電圧を供給する通常電源線１４２とを分けて設けている。図３に示すように、各スピンユニット３００内で、メモリセル用電源ドメイン３１１と、論理用電源ドメイン３１２とを分けている。なお、メモリセルアレイに値を読み書きするための動作を通常動作モード、前記したようなメモリセルアレイに記憶されている値に意図的にエラーを発生させるための動作をメモリ記憶内容破壊モードと称する。
【００６９】
（１１）イジングチップの制御手順
前記イジングチップ１００を組みこんだ前記情報処理装置２００において、イジングチップ１００をＣＰＵ２１０が制御して基底状態探索処理を行う手順を図２２に示す。
【００７０】
ステップＳ１０１において、スピン配列の初期値である初期スピン配列を生成する。初期スピン配列の生成は乱数でランダムにスピン配列を生成する。
ステップＳ１０２において、予め作成された解きたい最適化問題を表現するイジングモデルの相互作用係数および外部磁場係数と、ステップＳ１０１で得られた初期スピン配列を、イジングチップ１００の各スピンユニット３００の通常動作モードでメモリセルに書込む。これで初期設定が完了する。
【００７１】
その後、ステップＳ１０３において、相互作用アドレス１８０をイジングチップ１００に入力する。図１１に示す本実施例では、相互作用アドレスはグループＡ、またはグループＢの識別子で表され、交互に設定される。
【００７２】
ステップＳ１０４において、相互作用クロック１８１が連続して入力され、各相互作用クロック１８１の入力ごとに、該当相互作用クロック１８１に同期されて、ステップＳ１０３で設定された相互作用アドレスの１つが相互作用アドレスデコーダ１４０でデコードされ、グループＡ指定信号１４３、またはグループＢ指定信号１４４が、該当グループに属する全てのスピンユニット３００へ送られる。そして、前記相互作用クロック１８１に同期して、該当グループの全てのスピンユニット３００の相互作用が実行される。以上の相互作用は、相互作用クロック１８１の入力ごとに繰り返されるが、その回数は、ステップＳ１０３で設定した相互作用アドレスの個数である。すなわち、グループＡとグループＢを繰り返し、かつ適当な回数が指定されて、実行される。これによりイジングモデルの基底状態探索処理が実行回数分だけ進行することになる。
【００７３】
ステップＳ１０５において、スピンアレイ１１０を構成する全てのスピンユニット３００のメモリセルに供給している電源電圧１４１を定格値より指定された電圧量だけ減らして供給する。
【００７４】
ステップＳ１０６において、ステップＳ１０５で制御したメモリセル用電源電圧の条件下で、全てのスピンユニット３００のスピンを記憶するメモリセルＮの疑似リードを実行する。すなわち、各メモリセルＮに接続するビット線にプリチャージ電圧を掛けた後、各メモリセルＮに接続するワード線を選択レベルの「H」レベル（内部通常電源電圧１４２）とする制御を実行する。
ステップＳ１０５〜Ｓ１０６の動作は、その期間、メモリセルアレイをメモリ記憶内容破壊モードにすることである。
【００７５】
ステップＳ１０６の制御を実行することにより、図３０(ａ)，(ｂ)に示したグラフに該当する発生確率で各メモリセルＮにビットエラーが発生することになる。そのビットエラーの発生のランダム性を確認するために、試作したスピンアレイ１１０を構成する２５６×８０＝２０Ｋ個のスピンユニット３００のスピンを記憶する各メモリセルＮに対して、電源電圧を下げて、かつ疑似リードを行った場合の実験結果を、全メモリセルＮのビットパターンを表示したのが図３１〜図３８である。各図の横軸は０〜２５５、縦軸は０〜７９、２５６×８０＝２０Ｋ個のメモリセルのビットパターンを表し、白色がメモリセル値＝１、黒色がメモリセル値＝０を示す。  図３１：メモリセルの初期値を全て１として、０．８Ｖまで電圧を下げてダミーリードした場合を示す。図３２：メモリセルの初期値を全て１として、０．７５Ｖまで電圧を下げてダミーリードした場合を示す。図３３：メモリセルの初期値を全て１として、０．７Ｖまで電圧を下げてダミーリードした場合を示す。図３４：メモリセルの初期値を全て１として、０．６５Ｖまで電圧を下げてダミーリードした場合を示す。図３５：メモリセルの初期値を全て０として、０．８Ｖまで電圧を下げてダミーリードした場合を示す。図３６：メモリセルの初期値を全て０として、０．７５Ｖまで電圧を下げてダミーリードした場合を示す。図３７：メモリセルの初期値を全て０として、０．７Ｖまで電圧を下げてダミーリードした場合を示す。図３８：メモリセルの初期値を全て０として、０．６５Ｖまで電圧を下げてダミーリードした場合を示す。
各図の全メモリセルＮのビットパターンには、ランダムにビットエラーが発生していることが判る。
【００７６】
ステップＳ１０６の処理の結果、スピンアレイ１１０を構成する全てのスピンユニット３００のメモリセルＮのスピンの値は、ステップＳ１０４の相互作用によってイジングモデルの基底状態探索が進行している状態で、局所最適解に陥っている各スピンの値を大域最適解に到達するように一部の値をランダムに変更している。
ステップＳ１０６の処理の最後に、ステップＳ１０５においてスピンアレイ１１０を構成する全てのスピンユニット３００のメモリセルに供給している電源電圧１４１を定格値より指定された電圧量だけ減らして供給したものを元の定格値(本実施例では１Ｖ)に戻す。電圧を元の定格値に戻して以降は、メモリセルアレイは通常動作モードになる。
【００７７】
ステップＳ１０７において、イジングモデルの基底状態探索処理が大域最適解に到達するまで十分な処理回数が実行されたか判定される。予めパラメータとして設定された所定の回数実行された場合にはステップＳ１０８へ進み、所定の回数実行されていない場合には、ステップＳ１０３へ戻り、ステップＳ１０６までの一連の処理を繰り返すことになる。
【００７８】
ここで、前述したステップＳ１０３からステップＳ１０６までの一連の処理の繰り返し処理を、図２３において、時間の経過(横軸)と、メモリセル用電源電圧１４１(縦軸)の制御の推移のグラフによって示す。図２３のグラフの横軸の原点は、第１回目のステップＳ１０３において相互作用アドレス１８０が設定されて、ステップＳ１０４において相互作用クロック１８１が入力されて、第１の相互作用クロック１８１に同期して、第１の相互作用アドレスに該当するスピンユニット３００群が相互作用を開始する時刻を表す。その時のメモリセル用電源電圧１４１は定格の１Ｖになっている。そして、相互作用アドレス１８０で設定した複数のアドレスだけ相互作用が繰り返される間、メモリセル用電源電圧１４１は定格の１Ｖで供給される。
【００７９】
図２３において、相互作用アドレス１８０で設定されるアドレスの個数だけ相互作用が繰り返されて、その時間がｔi1となっている。
続いて、ステップＳ１０５の第１回目のメモリセル用電源電圧１４１を定格値より指定された電圧量５０１だけ減らして供給するように制御する。そして、ステップＳ１０６において、全てのスピンユニット３００のスピンを記憶するメモリセルＮの疑似リードを実行する。それに要する時間が、ｔd1となっている。その後、メモリセル用電源電圧１４１を定格値(１Ｖ)に戻して、再び、ステップＳ１０３において第2回目の相互作用アドレス１８０の設定を受付け、ステップＳ１０４において、受付けた相互作用アドレスの個数に従って第２回目の相互作用を繰り返す。その所要時間はｔi2となっている。
続いて、ステップＳ１０５の第２回目のメモリセル用電源電圧１４１を定格値より指定された電圧量５０２だけ減らして供給するように制御する。ここで、第１回目のメモリセル用電源電圧１４１の減圧量５０１に対して、第２回目の減圧量５０２を小さくなるように制御する。更に、第３回目の減圧量５０３、……第ｎ回目の減圧量５０４、以降まで順次減圧量を小さくなるように制御する。その結果、その後のステップＳ１０６のメモリセルＮの疑似リードによって、ビットエラーの発生確率は順次小さくなることは、図３１〜図３８に示す実験結果の通りである。
【００８０】
上述したステップＳ１０３からステップＳ１０６までの一連の処理の繰り返し処理により、イジングモデルの基底状態探索のための相互作用を指定回数実行するごとに、局所最適解から抜け出すようにするためにスピンの値を記憶するメモリセルＮにビットエラーを発生させる回避策を実行する。しかもその回避策では順次ビットエラーの発生確率を下げるように処理を行い、最終的にイジングモデルの基底状態探索が大域最適解に収束するように制御する。
上述した状況では、基本的には相互作用によってエネルギーが小さい状態に遷移していくが、それと並行してビットエラーにより、状態がランダムに遷移していくことで、相互作用だけでは遷移しえない状態への遷移も発生し、解空間を広く探索することができる。基底状態探索の進行と共に、状態を安定させていくために、ビットエラーレートが起こりにくい状態へと少しずつ電圧を変化させていく。つまり、最初はビットエラーレートが起こりやすい電圧である例えば０．６５Ｖが供給されていたところを、ビットエラーレートが起こりにくい１Ｖ程度に少しずつ近づけていく。このような供給電圧のスケジューリングと、相互作用によるエネルギー最小化を併用することで、局所最適解から脱出しつつ、大域最適解を目指す基底状態探索が実現できる。
【００８１】
図２２のステップＳ１０７では、予め設定してあるイジングモデルの基底状態探索が大域最適解に収束したと見なせる繰り返し回数を実行したかどうかを判定する。  ステップＳ１０８において、基底状態探索処理を終了したスピンアレイ１１０を構成する全てのスピンユニット３００のスピンの値を記憶する各メモリセルＮから、スピンの値を読み出す。
以上の基底状態探索処理の終了後、情報処理装置２００のＣＰＵ２１０で実行される問題変換プログラム(図示せず)により、ステップＳ１０８で読み出されたスピン配列の値を解きたい最適化問題の解に変換して、ユーザに提示される。
【００８２】
（１２）マルチワード動作
本実施例のイジングチップ１００は、ＳＲＡＭ互換インタフェース１５０を備え、スピンアレイ１１０を構成する全てのスピンユニット３００の各メモリセルへ初期値の書き込み、および演算結果のスピン配列の読出しを可能としている。しかし、イジングモデルの初期値の規則的配列の特性から、同一データを連続して書き込む必要が生じたり、または、上述したスピンを記憶するメモリセルＮの記憶内容をランダムに破壊するために擬似的にリードを行う処理が必要となることより、複数のワード線を同時にアクティベートする制御を可能として、複数のメモリセルへの同時書き込み、及び同時読み出しを可能とすることが有効である。
そのため、ＳＲＡＭでは通常、アドレスデコーダで選択した行アドレスに従って１ワード線に対してのみ操作が行われていたのに対して、本実施例のマルチワードデコーダ１３０では、複数のワード線を同時にアクティベートする制御を可能とする。
【００８３】
図２７、２８は、マルチワードデコーダ１３０の構成の一例を説明する。
通常のアドレスデコーダの構成は、アドレスの各ビット線１３２と、それらの反転の各ビット線１３３が用意されて、ＡＮＤゲート１３４を使って、全てのアドレスパターンとそれぞれ接続してワード線を出力している。本実施例では、複数のアドレスを同時に指定するために、アドレスデコーダにマスク生成器１３５を設けることが特徴である。マスク生成器から出力するビット１３６とアドレスビットとのＯＲゲート１３７を加えることにより、各マスクビット(MA0,MA1,MA2,MA3)１３６によって、アドレスビット線１３２とその反転ビット線１３３とを同時に１とすることができるので、複数のワード線を同時にアクティベイトすることができる。
【００８４】
図２８はマスク生成器１３５の構成を示す。イジングチップ１００の外部インタフェースより、１ビットのＭＷＥ(Multi Word Enable)信号と２ビットの多重度指定信号１９６を入力として、４ビットのマスクビット(MA0,MA1,MA2,MA3)を出力する。各マスクビットが１であれば、×２のワード線が選択される。本実施例では、×２，×４，×８，×１６のいずれかを選択する。図２７に示すアドレス(A0,A1,A2,A3)は、例えば、アドレスバス１９０から入力された基準となるワードアドレスの下４桁のアドレスに相当して、マスクビットによって、複数のアドレスを選択することになる。
本実施例で示したマルチワードデコーダの構成は一例であり、その他の構成を採用しても同様の効果が考えられる。
【００８５】
イジングチップ１００の外部より多重度指定信号１９６によって、ワード線の複数選択を設定可能であるが、可能な多重度（同時に選択するワード線の本数）は、電源の供給能力と、ビット線のドライブ能力に依存して、同時選択数は限られることになり、例えば４〜８ワード線程度が現実的とも言える。
マルチワードデコーダ１３０により、複数のワード線をアクティベイトすることにより、図２２のステップＳ１０６のメモリセルの疑似リードは効率良く実行が出来、図２３に示す局所最適解の回避処理の時間ｔd1、…ｔdnなども大幅に短縮される効果がある。
【実施例２】
【００８６】
実施例１に記載したイジングモデルの基底状態探索における局所最適解の回避手段の第二の実施形態を示す。
本実施例では、ビット線ドライバ１２０の機能拡張を中心に構成を説明する。
【００８７】
図１２には、通常のＳＲＡＭの構成を説明しており、図１のイジングチップ１００にも備わっている構成である。
図１２のＩ／Ｏアドレスデコーダ１３１は、図１のマルチワードデコーダ１３０の基になる回路である。図１のスピンアレイ１１０の中に備わる個別のメモリセルを図１２で配列したメモリセル４５０で示している。また、図１のビット線ドライバ１２０に備えられた通常のＳＲＡＭに備わっているビット線を介したデータ書込み／読出しに係る回路構成の一部を、図１２のメモリセル配列の上部、及び下部に示す。
【００８８】
図１２には、書込みデータを相反するビットデータとしてビット線対ＢＴ，ＢＢへ供給するデータ入力線４６０、プリチャージ電圧を供給するプリチャージ電圧線４６１、ビット線へ書込みデータ、プリチャージ電圧の供給を切り替えるスイッチ素子４８１〜４８４、メモリセルからデータを読み出すセンスアンプ４５２、および読出しデータを外部へ出力するデータ出力線４７０を示している。また、Ｉ／Ｏアドレスデコーダ１３１より、行選択アドレスに対応するワード線４２０を各メモリセル４５０へ接続している。
【００８９】
図１３は、図１２に示す通常のＳＲＡＭと同等の構成において、メモリセル４５０への書込み動作が、ワード線４２２を選択レベルの「H」レベル（内部通常電源電圧１４２）として、スイッチ素子４８１，４８３を接続して、ビット線対４１１，４１２を介して書込みデータが書き込まれることを示す。
【００９０】
図１４は、図１２に示す通常のＳＲＡＭと同等の構成において、メモリセルからの読出し動作に先立って、スイッチ素子４８２，４８４を接続してプリチャージ電圧線４６１をビット線対４１１，４１２へ接続して、両ビット線４１１，４１２を「H」レベル（内部通常電源電圧１４２）としていることを示す。
【００９１】
図１５は、図１４の両ビット線４１１，４１２がプリチャージされた後、スイッチ素子４８２，４８４をオフとして、ワード線４２２を選択レベルの「H」レベルとして、メモリセル４５０に記憶されている電位をビット線対４１１，４１２へ読み出すことを示している。スイッチ素子４８５，４８６を接続して、ビット線対４１１，４１２の間の電圧をセンスアンプ４５２で増幅して検出することにより、メモリセル４５０の記憶データをデータ出力線４７０へ出力する。
【００９２】
図１６は、図１２に示す通常のＳＲＡＭの構成に加えて、図１のビット線ドライバ１２０にメモリセルにビットエラー(記憶内容破壊)を生じさせるための外部信号(ビット線制御信号)１９４，１９５を入力して、ビット線ドライバ１２０の内部において、セレクタ４５３，４５４にビット線ＢＴ，ＢＢと、ビット破壊線１９５を接続して、セレクタの選択のために選択線１９４が接続されている構成を示す。
また、マルチワードデコーダ１３０により、複数のワード線を同時にアクティベートする制御を可能としている。
【００９３】
図１7では、図１６の構成において、メモリセル４５０への書込み動作が、ワード線４２１を選択レベルの「H」レベルとして、スイッチ素子４８１，４８３を接続して、セレクタ４５３，４５４をビット線ＢＴ，ＢＢへ接続選択して、ビット線対４１１，４１２を介して書込みデータが書き込まれることを示す。
【００９４】
図１８では、図１６の構成において、メモリセル４５０からの読出し動作に先立って、スイッチ素子４８２，４８４を接続してプリチャージ電圧線４６１をビット線対４１１，４１２へ接続して、両ビット線４１１，４１２を「H」レベルとしていることを示す。
【００９５】
図１９は、図１８の両ビット線４１１，４１２がプリチャージされた後、スイッチ素子４８２，４８４をオフとして、ワード線４２１を選択レベルの「H」レベルとして、メモリセル４５０に記憶されている電位をビット線対４１１，４１２へ読み出すことを示している。スイッチ素子４８５，４８６を接続して、ビット線対４１１，４１２の間の電圧をセンスアンプ４５２で増幅して検出することにより、メモリセル４５０の記憶データをデータ出力線４７０へ出力する。
【００９６】
図２０では、図１６の構成において、メモリセル４５０，４５１へのマルチワード書込み動作が、複数のワード線４２１，４２２を選択レベルの「H」レベルとして、スイッチ素子４８１，４８３を接続して、セレクタ４５３，４５４をビット線ＢＴ，ＢＢへ接続選択して、ビット線対４１１，４１２を介して書込みデータが書き込まれることを示す。
【００９７】
図２１では、図１６の構成において、セレクタ４５３，４５４をビット破壊線１９５へ接続選択して、スイッチ素子４８１，４８３を接続して、ビット破壊線１９５に外部から供給した「H」レベル、または「L」レベル（接地電圧）の電位を、両ビット線４１１，４１２へ供給するのと同時に、マルチワードデコーダ１３０からワード線４２１，４２２を選択レベルの「H」レベルと制御することによって、メモリセル４５０，４５１の記憶内容の破壊を促進することができる（メモリセル記憶内容破壊モードとなる）。
上記したビット破壊線１９５に外部から供給した「H」レベルの電位を両ビット線４１１，４１２へ供給して、メモリセル４５０，４５１の記憶内容の破壊動作を行う替わりに、既存のプリチャージ電圧線４６１をスイッチ素子４８２，４８４を介してビット線対４１１，４１２へ接続して、「H」レベルの電位を両ビット線４１１，４１２へ供給して、同様の効果が期待できる。ただし、ビット破壊線１９５にて外部から供給する電位は、最適な電位となるように調整が可能であるが、プリチャージ電圧線４６１から供給する電位は定格の電位のみとなる。
【００９８】
図２４に、第二の実施形態における前記イジングチップ１００を組みこんだ前記情報処理装置２００において、イジングチップ１００をＣＰＵ２１０が制御して基底状態探索処理を行う手順のフローチャートを示す。第一の実施形態におけるフローチャートを示す図２２との相違は、ステップＳ１０６がステップＳ２０１に替わったところである。
【００９９】
ステップＳ２０１において、図２１に示す構成により、ビット破壊線１９５に外部から供給した「H」レベルの電位を両ビット線４１１，４１２へ供給するのと同時に、マルチワードデコーダ１３０により複数のワード線をアクティベートして、メモリセルを活性化する処理を、全てのスピンユニット３００のスピンを記憶するメモリセルＮに対して実行する。
または、図２６に示す構成により、プリチャージ電圧線４６１をスイッチ素子４８２，４８４を介してビット線対４１１，４１２へ接続して、「H」レベルの電位を両ビット線４１１，４１２へ供給するのと同時に、Ｉ／Ｏアドレスデコーダ１３１によりワード線をアクティベートして、メモリセルを活性化する処理を、全てのスピンユニット３００のスピンを記憶するメモリセルＮに対して実行する。
そして、最後にステップＳ１０６の場合と同様に、ステップＳ１０５においてスピンアレイ１１０を構成する全てのスピンユニット３００のメモリセルに供給している電源電圧１４１を定格値より指定された電圧量だけ減らして供給したものを元の定格値(本実施例では１Ｖ)に戻す処理を行う。
【実施例３】
【０１００】
実施例１、２に記載したイジングモデルの基底状態探索における局所最適解の回避手段の第三の実施形態を示す。
【０１０１】
図２１に示す構成において、ビット破壊線１９５に外部から供給する「Ｌ」レベル（接地電圧）の電位を、セレクタ４５３，４５４、スイッチ素子４８１，４８３を介してビット線対４１１，４１２へ接続して、供給すると同時に、マルチワードデコーダ１３０により複数のワード線をアクティベートして、メモリセルを活性化することで、メモリセルの内容を破壊することができる（メモリセル記憶内容破壊モードとなる）。この場合には、実施例１、２で実施したメモリセルアレイ用供給電圧１４１を若干下げる制御を併用する必要は無い。
ビット破壊線１９５から供給する「Ｌ」レベルの電位は、接地電圧だけではなく、それより多少上げた電位を調整することによって、ビットエラーの発生確率を変えることができると予測される。
【０１０２】
図２５に、第三の実施形態における前記イジングチップ１００を組みこんだ前記情報処理装置２００において、イジングチップ１００をＣＰＵ２１０が制御して基底状態探索処理を行う手順のフローチャートを示す。第一の実施形態におけるフローチャートを示す図２２との相違は、ステップＳ１０５、及びステップＳ１０６がステップＳ２０２に替わったところである。
【０１０３】
ステップＳ２０２において、図２１に示す構成により、ビット破壊線１９５に外部から供給した「Ｌ」レベルの電位を両ビット線４１１，４１２へ供給するのと同時に、マルチワードデコーダ１３０により複数のワード線をアクティベートして、メモリセルを活性化する処理を、全てのスピンユニット３００のスピンを記憶するメモリセルＮに対して実行する。
【符号の説明】
【０１０４】
１００，１００−１，１００−２  イジングチップ
１１０  スピンアレイ
１２０  ビット線ドライバ
１３０  マルチワードデコーダ
１３１  Ｉ／Ｏアドレスデコーダ
１３２  アドレスビット線
１３３  アドレスビット線の反転のビット線
１３４  ワード線出力用ＡＮＤゲート
１３５  マスク生成器
１３６  マスクビット
１３７  マスクビットとアドレスビットとのＯＲゲート
１４０  相互作用アドレスデコーダ
１４１  メモリセル用電源線
１４２  通常電源線
１４３  グループＡ指定信号
１４４  グループＢ指定信号
１５０  ＳＲＡＭ互換インタフェース
１６０  相互作用制御インタフェース
１８０  相互作用アドレス
１８１  相互作用クロック
１９０  アドレスバス(ＳＲＡＭ互換インタフェース)
１９１  データバス(ＳＲＡＭ互換インタフェース)
１９２  Ｉ／Ｏクロック(ＳＲＡＭ互換インタフェース)
１９３  Ｒ／Ｗ制御線(ＳＲＡＭ互換インタフェース)
１９４  選択線
１９５  ビット破壊線
１９６  多重度指定線、およびＭＷＥ(Multi Word Enable)信号
２００  情報処理装置
２１０  ＣＰＵ
２２０  ＲＡＭ
２３０  システムバス
２４０  ＮＩＣ
２５０  イジングチップコントローラ
２６０  ＨＤＤ
２９０  装置間ネットワーク
３００  スピンユニット
３１１  メモリセル用電源ドメイン
３１２  論理用電源ドメイン
４１０，４１１，４１２  ビット線
４２０，４２１，４２２，４２３  ワード線
４３１，４３２  パスゲートトランジスタ
４４０  データ保持部
４５０  メモリセル
４５２  センスアンプ
４５３，４５４  セレクタ
４６０  データ入力線
４６１  プリチャージ電圧線
４７０  データ出力線
４８１，４８２，４８３，４８４，４８５，４８６  スイッチ素子
５０１，５０２，５０３，５０４  メモリセル用電源電圧の減圧量
ＢＢ，ＢＴ  ビット線
Ｎ  スピンを表現するメモリセル、及び、スピンの値を出力するインタフェース
ＩＳ０  外部磁場係数が０であるかどうかを示すメモリセル
ＩＳ１  外部磁場係数の＋１／−１を示すメモリセル
ＩＵ０，ＩＬ０，ＩＲ０，ＩＤ０，ＩＦ０  相互作用係数が０であるかどうかを示すメモリセル
ＩＵ１，ＩＬ１，ＩＲ１，ＩＤ１，ＩＦ１  相互作用係数の＋１／−１を示すメモリセル
【要約】
【課題】
イジングモデルの基底状態探索における局所最適解の回避手段を、装置の低コスト化および大規模化が容易な半導体装置で実現する。
【解決手段】
半導体装置を、行列状に配置された複数のメモリセルが、所定の個数のメモリセルのまとまりをスピンユニット単位に纏められ、該スピンユニットの複数個が隣接関係をそれぞれ持って配置されたスピンアレイと、前記メモリセルの各行に対応して設けられたワード線と、前記メモリセルの各列に対応して設けられたビット線対と、ワード線の多重度指定信号の入力に従いワードアドレスを多重化して、複数のワード線を同時にアクティベートするマルチワードデコーダと、各ビット線対に接続された列方向に配列された前記メモリセルのうち、前記複数のワード線によってアクティベートされた複数のメモリセルを、同時に書込み動作、または読出し動作をするビット線ドライバとを備えて構成する。
【選択図】図１【図１】
0005851570.tif 000003
【図２】
0005851570.tif 000004
【図３】
0005851570.tif 000005
【図４】
0005851570.tif 000006
【図５】
0005851570.tif 000007
【図６】
0005851570.tif 000008
【図７】
0005851570.tif 000009
【図８】
0005851570.tif 000010
【図９】
0005851570.tif 000011
【図１０】
0005851570.tif 000012
【図１１】
0005851570.tif 000013
【図１２】
0005851570.tif 000014
【図１３】
0005851570.tif 000015
【図１４】
0005851570.tif 000016
【図１５】
0005851570.tif 000017
【図１６】
0005851570.tif 000018
【図１７】
0005851570.tif 000019
【図１８】
0005851570.tif 000020
【図１９】
0005851570.tif 000021
【図２０】
0005851570.tif 000022
【図２１】
0005851570.tif 000023
【図２２】
0005851570.tif 000024
【図２３】
0005851570.tif 000025
【図２４】
0005851570.tif 000026
【図２５】
0005851570.tif 000027
【図２６】
0005851570.tif 000028
【図２７】
0005851570.tif 000029
【図２８】
0005851570.tif 000030
【図２９】
0005851570.tif 000031
【図３０】
0005851570.tif 000032
【図３１】
0005851570.tif 000033
【図３２】
0005851570.tif 000034
【図３３】
0005851570.tif 000035
【図３４】
0005851570.tif 000036
【図３５】
0005851570.tif 000037
【図３６】
0005851570.tif 000038
【図３７】
0005851570.tif 000039
【図３８】
0005851570.tif 000040