JP2016051326A - 半導体装置および情報処理装置 - Google Patents

半導体装置および情報処理装置 Download PDF

Info

Publication number
JP2016051326A
JP2016051326A JP2014176238A JP2014176238A JP2016051326A JP 2016051326 A JP2016051326 A JP 2016051326A JP 2014176238 A JP2014176238 A JP 2014176238A JP 2014176238 A JP2014176238 A JP 2014176238A JP 2016051326 A JP2016051326 A JP 2016051326A
Authority
JP
Japan
Prior art keywords
memory cell
interaction
spin
coefficient
semiconductor device
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.)
Granted
Application number
JP2014176238A
Other languages
English (en)
Other versions
JP5901712B2 (ja
Inventor
山岡 雅直
Masanao Yamaoka
雅直 山岡
地尋 吉村
Chihiro Yoshimura
地尋 吉村
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 JP2014176238A priority Critical patent/JP5901712B2/ja
Priority to US14/639,589 priority patent/US9466346B2/en
Publication of JP2016051326A publication Critical patent/JP2016051326A/ja
Application granted granted Critical
Publication of JP5901712B2 publication Critical patent/JP5901712B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40615Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/411Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger using bipolar transistors only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)

Abstract

【課題】相互作用モデルの計算を行う半導体装置において、3値以上の多値の係数による相互作用計算を可能にする技術を提供する。
【解決手段】半導体装置は、相互作用モデルの1つのノードの状態を示す値を記憶する第1メモリセルと、前記1つのノードに接続されたノードからの相互作用を示す相互作用係数を記憶する第2メモリセルと、前記1つのノードのバイアス係数を記憶する第3メモリセルと、をそれぞれ含む複数のユニットを有する。さらに、前記接続されたノードの状態を示す値と前記相互作用係数と前記バイアス係数とに基づいて、前記1つのノードの次状態を示す値を決定する演算回路を有する。そして、前記複数のユニット内の前記第2メモリセルおよび前記第3メモリセルのそれぞれは、多値メモリセルを含む。
【選択図】図6

Description

本発明は、半導体装置に関し、特に、相互作用モデルの計算を行う半導体装置と、その半導体装置をアクセラレータとして制御する情報処理装置に関する。
現在、コンピュータアーキテクチャの主流はノイマン型である。ノイマン型アーキテクチャでは逐次的な命令列であるプログラムでその動作が定義される。プログラムを変更することにより、様々な用途に利用可能な汎用性を有している。コンピュータの中心的な役割を果たすCPU(Central Processing Unit)のみならず、GPU(Graphics Processing Unit)のような特定用途向けの演算装置もノイマン型アーキテクチャで構成されており、その基本動作は命令列の逐次的な実行にある。
これまで、コンピュータの性能向上は主としてクロック周波数の向上に依っていた。ノイマン型アーキテクチャの根幹は命令列の逐次的な実行であるから、命令の実行速度を高速化すれば性能向上が期待できる。しかし、パーソナルコンピュータやサーバに用いられる汎用的なCPUにおいては、クロック周波数の向上は2000年代初頭に3GHz前後で頭打ちとなっている。近年では頭打ちになったクロック周波数に替わって、マルチコア化による並列処理で性能向上を実現する方策が主流になっている。
マルチコア化による並列処理では、逐次的な命令列から並列実行可能な箇所を見出し(並列性の抽出)、並列実行することで性能向上を図る。しかし、逐次的なアルゴリズムを命令列として書き下したプログラムから並列性を抽出することは容易ではない。命令のレベルで並列性を抽出するILP(Instruction Level Parallelism)は既に限界に達しており、近年ではTLP(Thread Level Parallelism)やDLP(Data Level Parallelism)のように、より粒度の粗い並列性を利用する方向になっている。
このような状況を鑑みると、今後、コンピュータの性能向上を図っていくためには、従来のような逐次的な命令列の実行を基本とするのではなく、本質的に並列な情報処理に移行していく必要がある。そのためには、従来の逐次的な命令列による問題の記述方法に替わって、本質的に並列な情報処理を実現するために適した問題の記述が必要となる。
その候補として、種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは、モデルを構成する複数個のノードと、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが、いずれも相互作用モデルの一形態であると解釈できる。また、相互作用モデルの特徴として、ノード間の影響を2個のノード間の相互作用に限定している(2体間の相互作用)ことがあげられる。例えば、宇宙空間にある惑星の力学を考えてみると、惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが、惑星間の影響は2個の惑星間にとどまらず、3個以上の惑星が互いに影響し合って複雑な挙動を示す(いわゆる3体問題や多体問題と言われる問題になる)。
物理学の世界で代表的な相互作用モデルの例として、イジングモデルをあげることができる。イジングモデルは磁性体の振る舞いを説明するための統計力学のモデルであり、磁性体の研究に用いられている。イジングモデルはサイト(+1/−1の2値をとるスピン)間の相互作用として定義される。トポロジが非平面グラフになるイジングモデルの基底状態を求めることはNP困難問題であることが知られている。イジングモデルは空間方向に広がった相互作用係数で問題を表現するため、本質的な並列性を利用した情報処理を実現できる可能性がある。
ところで、イジングモデルの基底状態を求めることは、前述した通りNP困難問題であることから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。例えば、このような装置として、特許文献1に記載の装置がある。
国際公開第2012/118064号
前記特許文献1に記載のような装置では、解くべき問題に対応した係数の値の種類は限られる。イジングモデルの場合でも、スピンの相互作用係数が、+1、−1の2値のみに限られるので、イジングモデルの種類が制限されてしまうことに繋がる。そのため、イジングモデルの種類に制限されることのない、より多値の係数を持つことが望ましい。
本発明の代表的な目的は、相互作用モデルの計算を行う半導体装置において、3値以上の多値の係数による相互作用計算を可能にする技術を提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
代表的な半導体装置は、相互作用モデルの1つのノードの状態を示す値を記憶する第1メモリセルと、前記1つのノードに接続されたノードからの相互作用を示す相互作用係数を記憶する第2メモリセルと、前記1つのノードのバイアス係数を記憶する第3メモリセルと、をそれぞれ含む複数のユニットを有する。さらに、前記接続されたノードの状態を示す値と前記相互作用係数と前記バイアス係数とに基づいて、前記1つのノードの次状態を示す値を決定する演算回路を有する。そして、前記複数のユニット内の前記第2メモリセルおよび前記第3メモリセルのそれぞれは、多値メモリセルを含む。
例えば、前記多値メモリセルは、フラッシュメモリのメモリセルである。より好ましくは、前記第2メモリセルに記憶する相互作用係数のうちの数値と、前記第3メモリセルに記憶するバイアス係数のうちの数値とを、前記フラッシュメモリのメモリセルに記憶する。または、前記第2メモリセルに記憶する相互作用係数の数値および符号と、前記第3メモリセルに記憶するバイアス係数の数値および符号とを、前記フラッシュメモリのメモリセルに記憶する。
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下の通りである。
代表的な効果は、相互作用モデルの計算を行う半導体装置において、3値以上の多値の係数による相互作用計算を可能にする技術を提供することができる。
本発明の一実施の形態におけるイジングチップの構成の一例を説明するための図である。 本発明の一実施の形態における情報処理装置の構成の一例を説明するための図である。 本発明の一実施の形態において、3次元格子のスピンアレイの構成の一例を説明するための図である。 本発明の一実施の形態において、スピンアレイのトポロジとスピンユニット内のメモリセルとの対応関係の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、構成単位のスピンユニットによる相互作用の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、スピンユニットの構成の一例を説明するための図である。 図6のスピンユニットにおいて、相互作用計算回路の回路構成の一例を説明するための図である。 図6のスピンユニットにおいて、フラッシュメモリの一例(フラッシュメモリの記号)を説明するための図である。 図6のスピンユニットにおいて、フラッシュメモリの一例(フラッシュメモリの特性)を説明するための図である。 図6のスピンユニットにおいて、相互作用計算回路の回路構成(制御信号の生成回路も含む)の一例を説明するための図である。 図6のスピンユニットにおいて、相互作用計算回路の回路動作の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、フラッシュメモリの読み出し回路の構成の一例を説明するための図である。 スピンユニットが図12の構成の場合のスピンアレイの全体構成の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、フラッシュメモリの読み出し回路および相互作用演算回路の構成の一例を説明するための図である。 スピンユニットが図14の構成の場合のスピンアレイの全体構成の一例を説明するための図である。 図1のイジングチップの相互作用動作手順の一例を説明するためのフローチャートである。
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
以下、本発明の一実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
[一実施の形態]
本実施の形態は、相互作用モデルの計算を行う半導体装置と、その半導体装置をアクセラレータとして制御する情報処理装置に関する。
<0.相互作用モデルの定義>
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは、モデルを構成する複数個のノードと、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが、いずれも相互作用モデルの一形態であると解釈できる。また、相互作用モデルの特徴として、ノード間の影響を2個のノード間の相互作用に限定している(2体間の相互作用)ことがあげられる。例えば、宇宙空間にある惑星の力学を考えてみると、惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが、惑星間の影響は2個の惑星間にとどまらず、3個以上の惑星が互いに影響し合って複雑な挙動を示す(いわゆる3体問題や多体問題と言われる問題になる)。
物理学の世界で代表的な相互作用モデルの例として、イジングモデルをあげることができる。イジングモデルとは+1/−1(ないしは上、下など)の2状態を取るスピンをノードとして、2個のスピン間の相互作用を決める相互作用係数と、個々のスピンに対するバイアスである外部磁場係数でモデルが定義される。また、生物学の世界では脳をモデル化したニューラルネットワークが相互作用モデルの一例である。ニューラルネットワークは神経細胞のニューロンを模した人工ニューロンをノードとして、人工ニューロン間はシナプス結合という相互作用を持つ。また、各ニューロン毎にバイアスを与える場合もある。社会科学の世界では、例えば人間のコミュニケーションを考えると、人間というノードと言語や通信で成される相互作用があることは容易に理解できよう。また、各人間には個別にバイアスがあることも想像できる。そのため、人間のコミュニケーションを,相互作用モデルという点で共通なイジングモデル等に模してその特性を明らかにしようという研究もなされている。
以下においては、イジングモデルの基底状態を求める半導体装置であるイジングチップ100(図1)、およびイジングチップ100を制御する情報処理装置200(図2)の例を説明する。
<1.解くべき問題をイジングモデルの基底状態探索問題に変換>
イジングモデルは磁性体の振る舞いを説明するための統計力学のモデルである。イジングモデルは+1/−1(または、0/1、上/下)の2値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎にある外部磁場係数で定義される。
イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することができる。イジングモデルのエネルギー関数E(σ)は一般的に次式(1)で表わされる。
Figure 2016051326
なお、σ,σはそれぞれi番目とj番目のスピンの値、Ji,jはi番目とj番目のスピンの間の相互作用係数、hはi番目のスピンに対する外部磁場係数、<i,j>は隣接する2つのサイトの組合せ、σはスピンの配列を表わすものとする。
イジングモデルの基底状態を求めるというのは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。例えば、因数分解や巡回セールスマン問題など、一見すると磁性体と何ら関係の無い問題をイジングモデルに変換することができる。そして、変換して得られたイジングモデルの基底状態は、元の問題の解に対応している。このことから、イジングモデルの基底状態を探索することのできる装置は、汎用的な用途に利用可能なコンピュータであると言える。
<2.イジングチップの構成>
図1は、本実施の形態におけるイジングチップ100の構成の一例を説明するための図である。イジングチップ100は、スピンアレイ110、I/O(Input/Output)ドライバ120、I/Oアドレスデコーダ130および相互作用アドレスデコーダ140から構成される。本実施の形態では、イジングチップ100は現在広く用いられているCMOS(Complementary Metal-Oxide Semiconductor)集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。
イジングチップ100は、スピンアレイ110にリード/ライトを行うためのSRAM互換インタフェース150を持っており、アドレスバス190、データバス191、R/W制御線193およびI/Oクロック線192から構成される。さらに、本実施の形態では、SRAM互換インタフェースに加えて、後述するフラッシュメモリ互換インタフェース(図12〜図15)も持っている。また、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース160として、相互作用アドレス線180および相互作用クロック線181を有している。イジングチップ100は、通常電源線142で供給される電圧で動作するが、スピンアレイ110の一部はスピン用電源線141で供給される電圧で動作する。具体的には、スピンアレイ110を構成するスピンユニット300(図3)が有するメモリセルのうち、スピン情報を保持するメモリセルはスピン用電源線141で供給される電圧で動作する。
イジングチップ100では、イジングモデルのスピンσ、相互作用係数Ji,jおよび外部磁場係数hを全てスピンアレイ110内のメモリセルに記憶する情報で表現する。スピンσの初期状態の設定および基底状態探索完了後の解読み出しのためにスピンσのリード/ライトをSRAM互換インタフェース150で行う。また、基底状態を探索すべきイジングモデルをイジングチップ100に設定するために、相互作用係数Ji,jおよび外部磁場係数hのリード/ライトもSRAM互換インタフェース150やフラッシュメモリ互換インタフェースで行う。そのため、スピンアレイ110内のスピンσ、相互作用係数Ji,jおよび外部磁場係数hにはアドレスが付与されている。
なお、SRAM互換インタフェース150を構成するアドレスバス190、データバス191およびR/W制御線193は、I/Oクロック線192に入力されるクロックに同期して動作する。但し、本発明において、インタフェースが同期式である必要性は無く、非同期式のインタフェースでも良い。本実施の形態では、同期式のインタフェースであるという前提で説明を行う。
また、イジングチップ100は、基底状態探索を行うために、スピンアレイ110の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース160であり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス線180を介して入力し、相互作用クロック線181を介して入力されるクロックに同期して相互作用を行う。
なお、相互作用は、必ずしもクロック同期回路で実現される必要はなく、非同期回路であっても構わない。この場合、相互作用クロック線181の役割はクロックの入力ではなく、相互作用の実行を許可するイネーブル信号であるものとする。相互作用制御インタフェースについても、必ずしも同期式である必要はなく、非同期式のインタフェースでも良いが、本実施の形態では同期式のインタフェースを用い、相互作用が相互作用クロック線181を介して入力されるクロックに同期して行われるという前提で説明を行う。
<3.情報処理装置の構成>
上述したイジングチップ100を1個、または複数個用いて情報処理を実現するわけであるが、そのためには上述したようなインタフェースを制御しなければならない。そのために、イジングチップ100は図2に示すような情報処理装置200の一部として利用される。
図2は、本実施の形態における情報処理装置200の構成の一例を説明するための図である。情報処理装置200は、現在一般的に用いられているパーソナルコンピュータやサーバのような装置に、イジングチップ100で構成されるアクセラレータを装着したものと考えて良い。情報処理装置200は、CPU(Central Processing Unit)210、RAM(Random Access Memory)220、HDD(Hard Disk Drive)260およびNIC(Network Interface Card)240などを有し、これらがシステムバス230で結合されている。これは、現在のパーソナルコンピュータやサーバに一般的に見られる構成である。
加えて、システムバス230にイジングチップコントローラ250が接続され、その先に1個または複数個のイジングチップ(図2の例では、2個のイジングチップ100−1およびイジングチップ100−2を有する。これ以降、2個のイジングチップを特に区別する必要がないときには、単にイジングチップ100と称する。)を持つ。このイジングチップコントローラ250とイジングチップ100がアクセラレータに相当するものであり、例えばPCI Expressのようなペリフェラル拡張用インタフェースに挿入して使う拡張カードのような形態をとる。イジングチップコントローラ250は、システムバス230(例えばPCI ExpressやQPI)のプロトコルをイジングチップ100のインタフェースに合わせて変換するものである。
情報処理装置200のCPU210上で動作するソフトウェアは、一般的には特定のアドレスに対してリード/ライトを行うことで、イジングチップコントローラ250を経由して、イジングチップ100を制御することができる。また、このような情報処理装置200を、装置間ネットワーク290を介して、複数台結合して利用しても良い。
情報処理装置200は、CPU210がイジングチップコントローラ250を制御し、イジングチップコントローラ250がイジングチップ100のSRAM互換インタフェース150やフラッシュメモリ互換インタフェースおよび相互作用制御インタフェース160を制御することで、イジングモデルの基底状態探索を実現する。
<4.スピンアレイの構成>
スピンアレイ110は、1個のスピンとそれに付随する相互作用係数および外部磁場係数の保持と、基底状態探索処理とを実現するスピンユニット300を基本構成単位として、スピンユニット300を多数個並べて構成する。図3は、3次元格子のスピンアレイ110の構成の一例を説明するための図である。図3では、スピンユニット300を複数個並べることで、3次元格子状のトポロジを持つイジングモデルを構成する例を示している。図3の例は、3(X軸方向)×3(Y軸方向)×2(Z軸方向)の大きさの3次元格子である。座標軸の定義は図示した通り、図面右方向をX軸、図面下方向をY軸、図面奥行き方向をZ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本発明とは関係しない。3次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図3の3次元格子状のトポロジにおいて、スピン間の相互作用をグラフとして捉えると、最大で次数5のスピン(頂点)が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。
図3に示す1個のスピンユニット300には、隣接するスピン(例えば隣接するスピンが5個の場合)σ、σ、σ、σ、σの値が入力される。また、スピンユニット300は、スピンσおよび外部磁場係数hに加え、上述した隣接するスピンσとの相互作用係数であるJj,i、Jk,i、Jl,i、Jm,i、Jn,i(隣接する5スピンとの相互作用係数)を保持するメモリセルを有している。
ところで、イジングモデルは、一般的に無向グラフで表現される相互作用を有している。上述した式(1)では、相互作用を表わす項として、Ji,j×σ×σがあるが、これはi番目スピンからj番目スピンへの相互作用を示している。この時、一般的なイジングモデルでは、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。つまり、Ji,jとJj,iは同一である。しかし、本実施の形態のイジングチップ100では、このイジングモデルを有向グラフに拡張し、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
そのため、1個のスピンユニット300をi番目スピンσと考えた時に、このスピンユニットが保持する相互作用係数であるJj,i、Jk,i、Jl,i、Jm,i、Jn,iは、隣接するj番目、k番目、l番目、m番目、n番目のスピンσ、σ、σ、σ、σから、i番目スピンσへの相互作用を決めるものである。このことは、図3において、スピンユニット300に含まれている相互作用係数が対応する矢印(相互作用)が、図示されているスピンユニット300の外部のスピンから、スピンユニット300の内部のスピンに向かっていることに対応している。
<5.スピンアレイのトポロジとスピンユニット内のメモリセルとの対応関係>
スピンユニット300の構成の一例を、図6を用いて説明する。スピンユニット300は、イジングモデルのスピンσ、相互作用係数Jj,i〜Jおよび外部磁場係数hを保持するために、複数の1ビットのメモリセルN0,ISS(図示省略),ISV(図示省略),IUS,IUV,ILS(図示省略),ILV(図示省略),IRS(図示省略),IRV(図示省略),IDS,IDV,IFS(図示省略),IFV(図示省略)を備えている。なお、図示省略のメモリセルISSおよびISV、メモリセルIUSおよびIUV、図示省略のメモリセルILSおよびILV、図示省略のメモリセルIRSおよびIRV、メモリセルIDSおよびIDV、並びに、図示省略のメモリセルIFSおよびIFVは、それぞれ2個1組で役割を果たすものであるため、それぞれまとめてメモリセル対ISx,IUx,ILx,IRx,IDxまたはIFxと略記する(図4参照)。以下では、図示省略したものも含めて説明する。
スピンユニット300が有する各メモリセルN0,ISS,ISV,IUS,IUV,ILS,ILV,IRS,IRV,IDS,IDV,IFS,IFVのうち、各メモリセルN0,ISS,IUS,ILS,IRS,IDS,IFSは、SRAM310のメモリセルである。ISV,IUV,ILV,IRV,IDV,IFVは、フラッシュメモリ320のメモリセルである。
スピンユニット300が有するSRAM310のメモリセルは、図示しないが、CMOSインバータ2個で構成されるデータ保持部を有し、その両端にそれぞれ接続されたパスゲートトランジスタをワード線およびビット線で制御することで、データ保持部へのデータの読み書きを実現する。また、フラッシュメモリ320のメモリセルに対するデータの読み書きについては、図12〜図15などを用いて後述する。
ここで、スピンユニット300はi番目のスピンを表現するものとして説明を行う。メモリセルN0はスピンσを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは+1/−1(+1を上、−1を下とも表現する)であるが、これをメモリセルの2値である0/1に対応させる。例えば、+1を1、−1を0に対応させる。
図4を用いて、スピンユニット300が有するメモリセル対ISx、IUx、ILx、IRx、IDxおよびIFxと、図3に示したイジングモデルのトポロジとの対応関係の一例を示す。メモリセル対ISxは外部磁場係数を記憶する。また、メモリセル対IUx,ILx,IRx,IDxおよびIFxは、それぞれ相互作用係数を記憶する。具体的に、メモリセル対IUxは上側のスピン(Y軸方向で−1)、メモリセル対ILxは左側のスピン(X軸方向で−1)、メモリセル対IRxは右側のスピン(X軸方向で+1)、メモリセル対IDxは下側のスピン(Y軸方向で+1)、メモリセル対IFxは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)との相互作用係数Ji,jをそれぞれ記憶する。
また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット300は最大で5個のスピンと接続される。本実施の形態のイジングチップ100では、外部磁場係数および相互作用係数として、多値に対応する。多値として、0〜1の間の値をとることができる。例えば、+1/+0.5/0/−0.5/−1の5値の例を考えるが、これに限定されるものではない。そのため、外部磁場係数および相互作用係数を表わすためには、それぞれ多値のメモリセルが必要となる。メモリセル対ISx,IUx,ILx,IRx,IDxおよびIFxは、末尾の符号がSとVの2つのメモリセル(例えばメモリセル対ISxの場合にはメモリセルISSおよびISV)の組み合わせで、例えば+1/+0.5/0/−0.5/−1の5値を表現する。
例えば、メモリセル対ISxの場合には、メモリセルISSで+1/−1を表現し、メモリセルISVが保持する値が1の時は+1、メモリセルISVが保持する値が0の時には−1を表す。これに加えて、メモリセルISSが保持する値が0の時には外部磁場係数を0と見なし、メモリセルISSが保持する値が1の時にはメモリセルISVが保持する値で決まる+1/+0.5/−0.5/−1のいずれかを外部磁場係数とする。外部磁場係数が0の時は外部磁場係数をディセーブルしていると考えれば、メモリセルISSに保持された値は外部磁場係数のイネーブルビットであると言うことができる(ISS=1の時に、外部磁場係数がイネーブルされる)。相互作用係数を記憶するメモリセル対IUx,ILx,IRx,IDxおよびIFxも同様に係数とビットの値を対応させている。
スピンユニット300内のメモリセルN0,ISS,ISV,IUS,IUV,ILS,ILV,IRS,IRV,IDS,IDV,IFSおよびIFVは、それぞれイジングチップ100の外部からリード/ライト可能でなければならない。そのために、スピンユニット300は、SRAM310のメモリセルに関しては、図示しないビット線とワード線とをそれぞれ有している。スピンユニット300を半導体基板上にタイル状に並べてビット線とワード線とを接続し、図1に示したI/Oアドレスデコーダ130とI/Oドライバ120とで駆動、制御または読み出しすることで、一般的なSRAM(Static Random Access Memory)と同様にSRAM310のメモリセルをSRAM互換インタフェース150でリード/ライトすることができる。また、フラッシュメモリ320のメモリセルに対しては、一般的なフラッシュメモリと同様に、後述するフラッシュメモリ互換インタフェースでリード/ライトすることができる。
<6.スピンユニット内のスピンの次状態を決定するための回路>
スピンユニット300は、同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット300毎に独立して持っている。スピンの次状態を決定するための回路を、図6に示す。
図6では、スピンユニット300は、外部とのインタフェースとして、信号線NU,NL(図示省略),NR(図示省略),ND,NF(図示省略)およびN0を有する。以下では、図示省略したものも含めて説明する。
信号線N0は当該スピンユニット300のスピンの値を他のスピンユニット300に出力するインタフェースである。信号線NU,NL,NR,NDおよびNFはそれぞれ他のスピンユニット300の有するスピンの値を入力するためのインタフェースである。信号線NUは上側のスピン(Y軸方向で−1)、信号線NLは左側のスピン(X軸方向で−1)、信号線NRは右側のスピン(X軸方向で−1)、信号線NDは下側のスピン(Y軸方向で+1)、信号線NFは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)からの入力である。
これらのインタフェースについては、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。図3のトポロジのように単に端は打ち切るのであれば、信号線NU,NL,NR,NDおよびNFのうち端に対するものは何も入力しなくて良い(回路上は0ないしは1の固定値に接続するなど、未使用入力端子として適切な処理をとる)。
スピンユニット300では隣接するスピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接するスピンと相互作用係数の積、および、外部磁場係数を見た時に、正(+側)の値と負(−側)の値のどちらが支配的か判断することと等価である。本実施の形態では、多値として、例えば+1/+0.5/0/−0.5/−1の5値で判断するが、分かり易くするために、+側の+1/0/−側の−1を例に具体的に説明する。但し、本実施の形態の例のように5値の場合には、+側の+1が+0.5になったり、−側の−1が−0.5になったりする。
例えば、i番目スピンσに、スピンσ、σ、σ、σおよびσが隣接しているとして、スピンσの次状態は以下のように決まる。まず、隣接するスピンの値はσ=+1、σ=−1、σ=+1、σ=−1、σ=+1とし、相互作用係数はJj,i=+1、Jk,i=+1、Jl,i=+1、Jm,i=−1、J=−1、外部磁場係数h=+1とする。このとき、相互作用係数と隣接するスピンの積、および、外部磁場係数をそれぞれ並べると、σ×Jj,i=+1、σ×Jk,i=−1、σ×Jl,i=+1、σ×Jm,i=+1、σ×Jn,i=−1、h=+1となる。外部磁場係数は、常に値が+1のスピンとの相互作用係数と読み替えて良い。
ここで、i番目のスピンと隣接するスピンとの間での局所的なエネルギーは、前述した係数にそれぞれi番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、j番目スピンとの間での局所的なエネルギーは、i番目スピンを+1とした時には−1、i番目スピンを−1とした時には+1となるので、i番目スピンを+1にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。このような局所的なエネルギーを全ての隣接するスピン間と外部磁場係数について考えた時に、i番目スピンを+1/−1のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、前述した相互作用係数および隣接するスピンの積と、外部磁場係数とをそれぞれ並べたものにおいて、+側の+1と−側の−1のどちらの作用が大きいかを判断すれば良い。前述の例では、+1が4個、−1が2個であり、+1の作用が大きい。仮に、i番目スピンを+1とすると、エネルギーの総和は−2、i番目スピンを−1とするとエネルギーの総和は+2になる。よって、+1の作用が大きい時にはi番目スピンの次状態を+1とし、−1の作用が大きい時にはi番目スピンの次状態を−1にするという相互作用演算で、エネルギーを最小化するi番目スピンの次状態を決定することができる。
図6のスピンユニット300に図示する相互作用演算回路330は、前記した相互作用を行うための回路である。まず、隣接するスピンの状態と、相互作用係数の+1/−1を示すメモリセルIUS,ILS(図示省略),IRS(図示省略),IDS,IFS(図示省略)が保持する値との排他的論理和を求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる(+1は1、−1は0にエンコードされているものとする)。もし、相互作用係数が+1/−1だけであれば、排他的論理和の出力のうち+1/−1のどちらの作用が大きいかを相互作用演算回路330において判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態+1のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する相互作用演算回路330に入力すべき値となる。
図6に示すスピンユニット300の構成において、SRAM310のメモリセル、フラッシュメモリ320のメモリセル、および相互作用演算回路330を含めて、相互作用計算回路と称する。
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することができるが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことができず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転させる方法も用いられている。
<7.スピンアレイ内のスピンユニットの構成>
図5は、スピンアレイ110において、構成単位のスピンユニット300による相互作用の一例を説明するための図である。図5は、複数のスピンユニット300が、イジングモデルのトポロジを維持した状態で、半導体基板上の2次元平面に配置、接続されて構成されたスピンアレイ110を示している。すなわち、スピンアレイ110には、図3に示した3次元格子状のトポロジを持つイジングモデルの各スピンをそれぞれ割り付けられた複数のスピンユニット300が、半導体基板上に2次元格子状に並べて配置されて接続されている。
図5の例は、スピンアレイ110内において、各スピンユニット300が、相互作用を及ぼす隣接するスピンユニットと接続されている。具体的には、ある1つのスピンユニット300に着目した場合に、このスピンユニットは、上側のスピンユニットと、左側のスピンユニットと、右側のスピンユニットと、下側のスピンユニットとにそれぞれ接続されている。このような接続により、各スピンユニット300は、自身のスピンユニットから、自身のスピンユニットのスピンの値を隣接する各スピンユニットへ出力する。また、各スピンユニット300は、隣接する各スピンユニットから、隣接する各スピンユニットのスピンの値が自身のスピンユニットへ入力される。
<8.スピンユニットの構成>
図6は、スピンユニット300の構成の一例を説明するための図である。スピンユニット300は、イジングモデルの1つのスピンの値を記憶するメモリセルN0と、1つのスピンに相互作用を及ぼす隣接するスピンからの相互作用係数を記憶するメモリセルIUS,IUV,IDS,IDV(図示省略の他のILS,ILV,IRS,IRV,IFS,IFV)と、1つのスピンの外部磁場係数を記憶するメモリセル(図示省略のISS,ISV)と、各隣接するスピンの値とこれに対応する相互作用係数との積、および外部磁場係数において、相互作用演算によって1つのスピンの次状態を決定する相互作用演算回路330とを有する。
相互作用係数を記憶するメモリセルのうち、IUS,IDS,ILS,IRS,IFSは符号を記憶するメモリセルである。相互作用係数を記憶するメモリセルのうち、IUV,IDV,ILV,IRV,IFVは数値を記憶するメモリセルである。また、外部磁場係数を記憶するメモリセルのうち、ISSは符号を記憶するメモリセルである。外部磁場係数を記憶するメモリセルのうち、ISVは数値を記憶するメモリセルである。
相互作用係数を記憶するメモリセル、および外部磁場係数を記憶するメモリセルのそれぞれは、多値メモリセルを含む。この多値メモリセルは、フラッシュメモリ320のメモリセルである。フラッシュメモリ320に記憶するもの以外は、SRAM310のメモリセルに記憶する。
図6の例では、フラッシュメモリ320のメモリセルには、相互作用係数のうちの数値(IUV,IDV、図示省略のILV,IRV,IFV)と、外部磁場係数のうちの数値(図示省略のISV)とを記憶する。SRAM310のメモリセルには、相互作用係数のうちの符号(IUS,IDS、図示省略のILS,IRS,IFS)と、外部磁場係数のうちの符号(図示省略のISS)と、スピンの値(N0)とを記憶する。
本実施の形態では、相互作用係数および外部磁場係数として、多値に対応するので、例えば、+1/+0.5/0/−0.5/−1の5値の例を考えるが、これに限定されるものではない。+1/+0.5/0/−0.5/−1の5値の場合には、相互作用係数および外部磁場係数の数値は1/0.5/0となり、符号は+/−となる。
相互作用演算回路330は、自身のスピンユニット300内のSRAM310およびフラッシュメモリ320に記憶した相互作用係数および外部磁場係数と、隣接するスピンユニット300からのスピンの値に基づいて、自身のスピンユニット300内のスピンの次状態を決定する。このスピンの次状態の値(NEW0)はメモリセルN0に書き込まれる。すなわち、相互作用演算回路330では、各隣接するスピンの値(NU,ND、図示省略のNL,NR,NF)とこれに対応する相互作用係数(IUS,IUV,IDS,IDV、図示省略のILS,ILV,IRS,IRV,IFS,IFV)、および外部磁場係数(図示省略のISS,ISV)において、多値による相互作用演算によってスピンの次状態を決定する。
なお、スピンユニット300の構成は、図6の例に限らず、フラッシュメモリ320のメモリセルに、相互作用係数の数値および符号と、外部磁場係数の数値および符号とを記憶し、SRAM310のメモリセルに、スピンの値を記憶する構成も可能である(後述する図12参照)。すなわち、スピンの値を除いて、相互作用係数および外部磁場係数の全てをフラッシュメモリ320のメモリセルに記憶する構成にすることもできる。この構成の場合には、例えば、後述する図12の構成とは異なるが、スピンユニット300の内部に読み出し回路を持つことも可能である。このような構成では、スピンユニット300の内部において、読み出し回路が、フラッシュメモリ320のメモリセルの値を読み出し、この読み出した値を相互作用演算回路330に出力する。そして、相互作用演算回路330は、多値による相互作用演算によってスピンの次状態を決定する。
<9.相互作用計算回路の回路構成>
図7は、図6に示したスピンユニット300において、相互作用計算回路の回路構成の一例を説明するための図である。相互作用計算回路は、SRAM310のメモリセル、フラッシュメモリ320のメモリセル、および相互作用演算回路330を含めた部分を称する。
図7では、相互作用計算回路として、+側のスピンの相互作用を計算する+側計算回路410と、−側のスピンの相互作用を計算する−側計算回路420とに分けて、+側計算回路の共通線CTの電圧と−側計算回路の共通線CBの電圧とを電圧比較回路430で比較して、スピンの次状態の値NEW0を決定する回路構成を示している。
+側計算回路410は、直列に接続されたメモリセルIUV(フラッシュメモリ内の相互作用係数の数値)およびNMOSトランジスタ411と、直列に接続されたメモリセルIDV(フラッシュメモリ内の相互作用係数の数値)およびNMOSトランジスタ412とが、並列に接続されて構成されている。メモリセルIUVは制御信号CG0によりゲート制御され、NMOSトランジスタ411は制御信号CONTUTによりゲート制御される。メモリセルIDVは制御信号CG1によりゲート制御され、NMOSトランジスタ412は制御信号CONTDTによりゲート制御される。
この並列接続において、メモリセルIUVおよびIDVは、共通線CTに接続されている。この共通線CTは、PMOSトランジスタ413を介して電源電位に接続されている。この共通線CTに、−側計算回路420との比較のための電圧が現れる。一方、並列接続において、NMOSトランジスタ411およびNMOSトランジスタ412は、NMOSトランジスタ414を介して接地電位に接続されている。PMOSトランジスタ413およびNMOSトランジスタ414は、クロック信号CLKIによりゲート制御される。
−側計算回路420も同様に、直列に接続されたメモリセルIUVおよびNMOSトランジスタ421と、直列に接続されたメモリセルIDVおよびNMOSトランジスタ422とが、並列に接続されて構成されている。メモリセルIUVは制御信号CG0によりゲート制御され、NMOSトランジスタ421は制御信号CONTUBによりゲート制御される。メモリセルIDVは制御信号CG1によりゲート制御され、NMOSトランジスタ422は制御信号CONTDBによりゲート制御される。
この並列接続において、メモリセルIUVおよびIDVは、共通線CBに接続されている。この共通線CBは、PMOSトランジスタ423を介して電源電位に接続されている。この共通線CBに、+側計算回路410との比較のための電圧が現れる。一方、並列接続において、NMOSトランジスタ421およびNMOSトランジスタ422は、NMOSトランジスタ424を介して接地電位に接続されている。PMOSトランジスタ423およびNMOSトランジスタ424は、クロック信号CLKIによりゲート制御される。
以上のように構成される+側計算回路410および−側計算回路420の動作は、後述する図10および図11を用いて説明する。図10は、図7に示した制御信号CONTUT,CONTUB,CONTDT,CONTDBの生成回路も合わせて図示している。
<10.フラッシュメモリ>
図8および図9は、フラッシュメモリ320の一例を説明するための図である。図8はフラッシュメモリの記号を示し、図9はフラッシュメモリの特性を示している。
図8に示すように、フラッシュメモリは、制御ゲートCG、ドレインD、ソースSの各端子を有する記号で表示される。フラッシュメモリは、MOSトランジスタのゲートと酸化膜との間に、浮遊ゲートを挟んだ2重ゲート構造となっている。浮遊ゲートは、酸化膜で覆われているので通常は絶縁状態にある。しかし、制御ゲートに電圧を印加すると、酸化膜を通じてトンネル電流が流れ、浮遊ゲートに電荷が蓄えられる。これが書き込み動作となる。逆に、シリコン基板側に電圧を印加すると、浮遊ゲートに蓄えられた電荷が放出される。これが消去動作となる。
浮遊ゲートに電荷が蓄えられていない場合は、ドレイン−ソース間の抵抗が低い状態なので、制御ゲートに低電圧を加えただけで、ドレイン−ソース間に電流が流れる。また、浮遊ゲートに電荷が蓄えられている場合は、ドレイン−ソース間の抵抗が高い状態なので、制御ゲートの電圧をある程度高くしなければ電流が流れない。この電圧を閾値電圧と言う。つまり、閾値電圧がロウかハイかによって、0か1かのビット信号が読み出せる。これがフラッシュメモリの読み出し動作となる。
フラッシュメモリの特性において、ゲート電圧VGに対するドレイン−ソース間電流IDSの関係は図9のようになる。この特性で分かるように、ゲート電圧VGに対応する閾値電圧のレベルをロウ、ハイ、その間の電圧値も含めて多段階にすることで、多値メモリセルを実現することができる。1セル当たり1ビットのものを2値メモリセルと言うのに対して、3レベル以上のデータを記憶するものを多値メモリセルと言う。
図9の例において、右側の特性では、ゲート電圧VG=0Vでドレイン−ソース間電流IDSが流れないので、0に対応するレベルを記憶できる。一方、左側の特性では、ゲート電圧VG=0Vでもドレイン−ソース間電流IDSが流れるので、1に対応するレベルを記憶できる。さらに、右側の特性と左側の特性との間の特性であれば、0と1との間の0.5に対応するレベルを記憶できる。
本実施の形態では、このような多値メモリセルを持つフラッシュメモリ320を用いている。そして、フラッシュメモリ320の多値メモリセルとSRAM310のメモリセルとに相互作用係数および外部磁場係数を記憶して、例えば、+1/+0.5/0/−0.5/−1の5値に対応する相互作用計算を実現する。
<11.相互作用計算回路の回路構成および回路動作>
図10および図11は、相互作用計算回路の回路構成および回路動作の一例を説明するための図である。図10は、図7に示した相互作用計算回路において、制御信号の生成回路も含めた相互作用計算回路の回路構成の一例を示している。図11は、図10に示した相互作用計算回路の回路動作における各部分の電圧波形の一例を示している。ここでは、図7に示した相互作用計算回路(+側計算回路410、−側計算回路420)と重複する部分についての説明は省略する。
図10に示すように、NMOSトランジスタ411をゲート制御する制御信号CONTUT、NMOSトランジスタ421をゲート制御する制御信号CONTUBは、排他的論理和回路441およびインバータ442を用いて生成する。排他的論理和回路441は、隣接するスピンの値(NU)と相互作用係数の符号(IUS)とを入力として、排他的論理和で制御信号CONTUBを出力する。この制御信号CONTUBにより、NMOSトランジスタ421がゲート制御される。インバータ442は、排他的論理和回路441の出力の制御信号CONTUBを入力とし、これを反転して制御信号CONTUTを出力する。この制御信号CONTUTにより、NMOSトランジスタ411がゲート制御される。
同様に、NMOSトランジスタ412をゲート制御する制御信号CONTDT、NMOSトランジスタ422をゲート制御する制御信号CONTDBは、排他的論理和回路443およびインバータ444を用いて生成する。排他的論理和回路443は、隣接するスピンの値(ND)と相互作用係数の符号(IDS)とを入力として、排他的論理和で制御信号CONTDBを出力する。この制御信号CONTDBにより、NMOSトランジスタ422がゲート制御される。インバータ444は、排他的論理和回路443の出力の制御信号CONTDBを入力とし、これを反転して制御信号CONTDTを出力する。この制御信号CONTDTにより、NMOSトランジスタ412がゲート制御される。
このような制御信号の生成回路を含む相互作用計算回路は、以下のような動作となる。この相互作用計算回路は、図11に示すクロック信号CLKIに同期して動作する。ここでは、簡単のため、相互作用係数IUxに対応するブロックに着目し、NUから入力されたデータとIUSおよびIUVに保持された相互作用係数を用いた計算を行う部分を説明する。
フラッシュメモリ320のメモリセルIUVおよびNMOSトランジスタ411が接続されている共通線CTと、フラッシュメモリ320のメモリセルIUVおよびNMOSトランジスタ421が接続されている共通線CBは、相互作用計算を行う前、つまり図11に示すクロック信号CLKIの電圧レベルがロウの期間に、ハイの電位にプリチャージされる。クロック信号CLKIはハイになると、クロック信号CLKIが入力されているNMOSトランジスタ414,424がオンになり、相互作用の値の計算が開始される。この時、フラッシュメモリのメモリセルIUVの制御信号CG(CG0)はロウになっており、メモリセルIUVはオン状態である。
NUとIUSの値が等しい場合には、NMOSトランジスタ411がオンして、フラッシュメモリ320のメモリセルIUVおよびNMOSトランジスタ411が直列接続されたパスを通して電流が流れ、共通線CTの電位が低下する。逆に、NUとIUSの値が異なる場合には、NMOSトランジスタ421がオンして、フラッシュメモリ320のメモリセルIUVおよびNMOSトランジスタ421が直列接続されたパスを通して電流が流れ、共通線CBの電位が低下する。この場合の共通線CTまたは共通線CBの電位低下は、例えば、多値メモリセルであるフラッシュメモリ320のメモリセルIUVの+1、+0.5、−0.5、−1の値に対応したドレイン−ソース間電流に依存した電圧となる。
このことは、他の相互作用係数IDxに対応するブロックにおいても、同様である。NDから入力されたデータとIDSおよびIDVに保持された相互作用係数を用いた計算を行う。
つまり、入力されたデータと相互作用係数の値が等しい係数に関しては、並列接続の複数の電流パスが接続された共通線CTの電位を下げる電流が流れ、入力されたデータと相互作用係数の値が異なる係数に関しては、並列接続の複数の電流パスが接続された共通線CBの電位を下げる電流が流れる。つまり、相互作用計算における排他的論理和の値が1になる係数に関しては共通線CTの電位を下げ、0になる係数に関しては共通線CBの電位を下げる電流が流れる。
そして、共通線CTの電圧と共通線CBの電圧とを、電圧比較回路430で比較する。電圧比較回路430は、共通線CTの電圧による+側、または共通線CBの電圧による−側のどちらの作用が大きいかを判定して、作用が大きい方をスピンの次状態の値NEW0として出力する。例えば、共通線CTの電圧が高い場合にはスピンの次状態の値NEW0として0が出力され、共通線CBの電圧が高い場合にはスピンの次状態の値NEW0として1が出力される。
以上の動作は、クロック信号CLKIの電圧レベルがハイまたはロウとなる度に、繰り返して実行される。このように繰り返す毎に、共通線CTと共通線CBとにそれぞれ現れる電圧を比較して出力することで、作用が大きい方の+側または−側をスピンの次状態として決定することができる。
なお、相互作用計算回路において、フラッシュメモリ320のメモリセルに相互作用係数および外部磁場係数の数値と符号の両方を記憶する構成の場合には、回路構成は図示しないが以下のようになる。例えば、相互作用係数IUxに対応するブロックにおいては、共通線CTおよび共通線CBにそれぞれ、メモリセルIUVとメモリセルIUSとNMOSトランジスタ(NU)とが直列に接続された構成となる。また、相互作用係数IDxに対応するブロックにおいても同様である。このような相互作用計算回路の構成においても、上記と同様の動作となる。
<12.フラッシュメモリの読み出し回路>
図12および図13は、フラッシュメモリ320の読み出し回路の構成の一例を説明するための図である。図12は、フラッシュメモリ320の読み出し回路をスピンユニット300の外部に持つ構成の一例を示している。図13は、スピンユニット300が図12の構成の場合のスピンアレイ110の全体構成の一例を示している。
図12では、相互作用係数の数値(IUV,IDV、図示省略のILV,IRV,IFV)および符号(IUS,IDS、図示省略のILS,IRS,IFS)と、外部磁場係数の数値(図示省略)および符号(図示省略)とをフラッシュメモリ320のメモリセルに記憶し、スピンの値(N0)をSRAM310のメモリセルに記憶する構成を示している。すなわち、書き換えが頻繁で他のスピンユニットへの出力が必要であるスピンの値を除いて、相互作用係数および外部磁場係数の全てを、回路規模が小さくできるフラッシュメモリ320のメモリセルに記憶する構成である。
図12の構成において、スピンユニット300の内部には、SRAM310のメモリセルN0と、フラッシュメモリ320のメモリセルIUS,IUV,IDS,IDVと、各隣接するスピンの値(NU、ND)と相互作用係数および外部磁場係数において、多値による相互作用演算によってスピンの次状態(NEW0)を決定する相互作用演算回路330とを有する。このスピンユニット300の外部には、スピンユニット300の内部のフラッシュメモリ320のメモリセルIUS,IUV,IDS,IDVの値を読み出し、スピンユニット300の内部の相互作用演算回路330に出力する読み出し回路500が設けられている。スピンユニット300の外部の読み出し回路500からスピンユニット300の内部の相互作用演算回路330へは、フラッシュメモリ320のメモリセルの数に対応するビット幅の出力となる。
図12に示すスピンユニット300のように、フラッシュメモリ320の読み出し回路500をスピンユニット300の外部に持つ構成の場合には、スピンユニット300の外部の読み出し回路500が、スピンユニット300の内部のフラッシュメモリ320のメモリセルの値を読み出し、この読み出した値を、スピンユニット300の内部の相互作用演算回路330に出力する。そして、相互作用演算回路330は、各隣接するスピンユニットからのスピンの値(NU,ND)と、読み出し回路500からの相互作用係数(IUS,IUV,IDS,IDV)および外部磁場係数において、多値による相互作用演算によってスピンの次状態(NEW0)を決定し、この決定した値をSRAM310のメモリセルN0に書き込む。
図12に示すスピンユニット300の構成の場合のスピンアレイ110は、図13のような構成となる。すなわち、図13では、複数のスピンユニット300を、行方向に4個、列方向に3個を2次元格子状に配置している例を図示している。各スピンユニット300を区別するために、説明上便宜的に、座標(行方向をN00、N01、N02、N03、列方向をN00、N10、N20)を付与している。このイジングチップ100では、2次元格子状に配置した複数のスピンユニット300と、複数のスピンユニット300で共有し、フラッシュメモリ互換インタフェースを持つフラッシュメモリ読み出し/書き込み回路510とを有している。
フラッシュメモリ読み出し/書き込み回路510は、一般的なフラッシュメモリへのリード/ライトと同様のフラッシュメモリ互換インタフェースを持ち、フラッシュメモリ320の値を読み出すための機能と共に、フラッシュメモリ320へ値を書き込むための機能も備えている。このフラッシュメモリ読み出し/書き込み回路510は、回路規模が大きくなるので、複数のスピンユニット300で共有することが望ましい。
図13に示すスピンアレイ110の構成の場合には、スピンユニット300の外部のフラッシュメモリ読み出し/書き込み回路510が、各スピンユニット300の内部のフラッシュメモリ320のメモリセルの値を読み出し、この読み出した値を係数値としてメモリセルの数のビット幅で、各スピンユニット300の内部の相互作用演算回路330に出力する。
例えば、図13において、列方向の各スピンユニットN00,N10,N20については、以下のような順序となる。まず、フラッシュメモリ読み出し/書き込み回路510は、スピンユニットN00の内部のフラッシュメモリ320の値を読み出し、この読み出した係数値をメモリセルの数のビット幅で、スピンユニットN00の内部の相互作用演算回路330に出力する。そして、スピンユニットN00の相互作用演算回路330は、各隣接するスピンユニットからのスピンの値と、フラッシュメモリ読み出し/書き込み回路510からの相互作用係数および外部磁場係数に基づいて、多値による相互作用演算によってスピン(N0)の次状態(NEW0)を決定し、この決定した値をSRAM310のメモリセルN0に書き込む。
続いて、フラッシュメモリ読み出し/書き込み回路510は、スピンユニットN10についても同様に、このスピンユニットN10の内部のフラッシュメモリ320の値を読み出し、この読み出した係数値をメモリセルの数のビット幅で、スピンユニットN10の内部の相互作用演算回路330に出力する。そして、スピンユニットN10の相互作用演算回路330は、各隣接するスピンユニットからのスピンの値と、フラッシュメモリ読み出し/書き込み回路510からの相互作用係数および外部磁場係数に基づいて、多値による相互作用演算によってスピンの次状態を決定し、この決定した値をSRAM310のメモリセルN0に書き込む。続いて実行するスピンユニットN20についても同様である。
他の列方向の、各スピンユニットN01,N11,N21の場合、各スピンユニットN02,N12,N22の場合、各スピンユニットN03,N13,N23の場合も、同様である。このように、フラッシュメモリ読み出し/書き込み回路510は、2次元格子状に配置された複数のスピンユニット300を1個ずつ処理して、各スピンユニット300のスピン(N0)の次状態(NEW0)を決定する相互作用計算を実行する。
また、フラッシュメモリ読み出し/書き込み回路510は、フラッシュメモリ320へ値を書き込むための機能も備えている。フラッシュメモリ320への書き込み時には、メモリセルの制御ゲートに電圧を印加することで、ドレインが接続された共通線の電圧に対応する電荷が浮遊ゲートに蓄えられる。例えば、共通線が、ハイの電位の場合にはメモリセルにハイの値を書き込むことができ、ロウの電位の場合にはメモリセルにロウの値を書き込むことができる。
<13.フラッシュメモリの読み出し回路および相互作用演算回路>
図14および図15は、フラッシュメモリ320の読み出し回路および相互作用演算回路の構成の一例を説明するための図である。図14は、フラッシュメモリ320の読み出し回路および相互作用演算回路をスピンユニット300の外部に持つ構成の一例を示している。図15は、スピンユニット300が図14の構成の場合のスピンアレイ110の全体構成の一例を示している。すなわち、図14および図15では、上述した図12および図13に対して、さらに相互作用演算回路をスピンユニット300の外部に持つ構成である。
図14の構成において、スピンユニット300の内部には、SRAM310のメモリセルN0と、フラッシュメモリ320のメモリセルIUS,IUV,IDS,IDVとを有する。このスピンユニット300の外部には、スピンユニット300の内部のフラッシュメモリ320のメモリセルIUS,IUV,IDS,IDVの値を読み出す読み出し回路600が設けられている。さらに、スピンユニット300の外部には、各隣接するスピンの値(NU、ND)と読み出し回路600からの相互作用係数および外部磁場係数において、多値による相互作用演算によってスピンの次状態(NEW0)を決定する相互作用演算回路610が設けられている。スピンユニット300の外部の相互作用演算回路610からスピンユニット300の内部のSRAM310のメモリセルN0へは、1ビットの出力となる。
図14に示すスピンユニット300のように、フラッシュメモリ320の読み出し回路600および相互作用演算回路610をスピンユニット300の外部に持つ構成の場合には、スピンユニット300の外部の読み出し回路600が、スピンユニット300の内部のフラッシュメモリ320のメモリセルの値を読み出し、この読み出した値を相互作用演算回路610に出力する。そして、相互作用演算回路610は、各隣接するスピンユニットからのスピンの値(NU,ND)と、読み出し回路600からの相互作用係数(IUS,IUV,IDS,IDV)および外部磁場係数において、多値による相互作用演算によってスピンの次状態(NEW0)を決定し、この決定した値(NEW0)をスピンユニット300の内部のSRAM310のメモリセルN0に書き込む。
図14に示すスピンユニット300の構成の場合のスピンアレイ110は、図15のような構成となる。図15でも、複数のスピンユニット300を、行方向に4個、列方向に3個を2次元格子状に配置している例を図示し、座標(行方向をN00、N01、N02、N03、列方向をN00、N10、N20)を付与している。このイジングチップ100では、2次元格子状に配置した複数のスピンユニット300と、複数のスピンユニット300で共有し、フラッシュメモリ互換インタフェースを持つフラッシュメモリ読み出し/書き込み回路/相互作用演算回路620とを有している。
図15に示すスピンアレイ110の構成の場合には、スピンユニット300の外部のフラッシュメモリ読み出し/書き込み回路/相互作用演算回路620が、各スピンユニット300の内部のフラッシュメモリ320のメモリセルの値を読み出し、この読み出した値と各隣接するスピンユニットからの値に基づいて多値による相互作用演算を行い、この相互作用演算結果をスピン(N0)の次状態として決定し、この決定した値(NEW0)を、各スピンユニット300の内部のSRAM310のメモリセルN0に書き込む。
例えば、図15において、列方向の各スピンユニットN00,N10,N20については、以下のような順序となる。まず、フラッシュメモリ読み出し/書き込み回路/相互作用演算回路620は、スピンユニットN00の内部のフラッシュメモリ320の値を読み出し、この読み出した値と各隣接するスピンユニットからの値に基づいて多値による相互作用演算を行い、この相互作用演算結果を、スピンユニットN00の内部のSRAM310のメモリセルN0に書き込む。
続いて、フラッシュメモリ読み出し/書き込み回路/相互作用演算回路620は、スピンユニットN10についても同様に、このスピンユニットN10の内部のフラッシュメモリ320の値を読み出し、この読み出した値と各隣接するスピンユニットからの値に基づいて多値による相互作用演算を行い、この相互作用演算結果を、スピンユニットN10の内部のSRAM310のメモリセルN0に書き込む。続いて実行するスピンユニットN20についても同様である。
他の列方向の、各スピンユニットN01,N11,N21の場合、各スピンユニットN02,N12,N22の場合、各スピンユニットN03,N13,N23の場合も、同様である。このように、フラッシュメモリ読み出し/書き込み回路/相互作用演算回路620は、2次元格子状に配置された複数のスピンユニット300を1個ずつ処理して、各スピンユニット300のスピン(N0)の次状態を決定、この決定した値(NEW0)を各スピンユニット300のSRAM310のメモリセルN0に書き込む相互作用計算を実行する。
<14.イジングチップの相互作用動作手順>
図16は、イジングチップ100の相互作用動作手順の一例を説明するためのフローチャートである。図16では、上述した図13および図15に示したスピンアレイ110の構成における相互作用動作の例を示している。
このイジングチップ100の相互作用動作手順は、イジングチップ100を組み込んだ情報処理装置200において、イジングチップ100をCPU210が制御して基底状態探索における相互作用動作の手順を示している。
相互作用動作開始に先立って、初期設定として、イジングチップ100の各スピンユニット300内のSRAM310およびフラッシュメモリ320のメモリセルに、スピンの値、相互作用係数、および、外部磁場係数を入力する。本実施の形態では、相互作用係数および外部磁場係数として、多値に対応するために、例えば、+1/+0.5/0/−0.5/−1の値となる。但し、この値に限定されるものではない。
初期設定の完了後、相互作用動作が開始となる。相互作用動作が開始になると、ステップS701〜S704において、各スピンユニット300の相互作用計算を実行する。この相互作用計算では、相互作用アドレス線180を介してアドレスをイジングチップ100に入力し、相互作用クロック線181を介してクロックを生成してイジングチップ100内で相互作用を起こさせる。また、スピン用電源線141に供給される電圧をスケジューリングに沿って制御する。
この場合に、全てのスピンを同時に更新しようとすると、あるスピンを更新するときに、隣接するスピンを見て、隣接するスピンとの間でエネルギーを最小化するようにスピンを更新するので、それと同時に隣接するスピンの値を更新すると、両方の更新が重複してしまい、エネルギーを最小化できずに振動してしまう。そこで、本実施の形態では、隣接するスピンを同時に更新しないように、スピンアレイ110内のスピンユニット300をグループ分けしている。
例えば、上述した図13および図15に示したスピンアレイ110の構成では、まず、ステップS701において、スピンユニットN00,N11,N22の相互作用計算を行う。このステップS701では、図13および図15のスピンユニット300の配列において、左上のスピンユニットN00から斜め右下方向へのスピンユニットN11,N22を選択して、相互作用計算を行う。このスピンユニットN00,N11,N22における計算結果の値で、隣接するスピンユニットのメモリセルの値を更新する。
例えば、スピンユニットN00における計算結果の値で、右側のスピンユニットN01および下側のスピンユニットN10のメモリセルの値を更新する。同様に、スピンユニットN11における計算結果の値で、上側のスピンユニットN01、左側のスピンユニットN10、右側のスピンユニットN12、および下側のスピンユニットN21のメモリセルの値を更新する。スピンユニットN22における計算結果の値で、上側のスピンユニットN12、左側のスピンユニットN21、および右側のスピンユニットN23のメモリセルの値を更新する。
同様にして、スピンユニットN10,N21,N03の相互作用計算(ステップS702)、スピンユニットN20,N02,N13の相互作用計算(ステップS703)、スピンユニットN01,N12,N23の相互作用計算(ステップS704)、を順に実行する。
ステップS701〜S704における全てのスピンユニットの相互作用計算を所定の回数繰り返して(ステップS705)、所定の回数が完了した後に相互作用動作が終了となる。この相互作用動作が終了となると、イジングチップ100から相互作用計算結果であるスピンの値を読み出すことで、対象問題を表現するイジングモデルの答えを得ることができる。
<15.効果>
以上説明した本実施の形態によれば、スピンユニット300内の相互作用係数を記憶するメモリセルおよび外部磁場係数を記憶するメモリセルは、多値メモリセルを含むことで、イジングモデルの基底状態を求めるイジングチップ100において、3値以上の多値の係数による相互作用計算を可能にする技術を提供することができる。より詳細には、以下の通りである。
(1)多値メモリセルは、フラッシュメモリ320のメモリセルである。これにより、フラッシュメモリ320のメモリセルには、相互作用係数のうちの数値と、外部磁場係数のうちの数値とを、例えば5値などの多値で記憶することができる。この場合に、SRAM310のメモリセルには、相互作用係数のうちの符号と、外部磁場係数のうちの符号と、スピンの値とを記憶することができる。
(2)多値メモリセルは、フラッシュメモリ320のメモリセルである。これにより、フラッシュメモリ320のメモリセルには、相互作用係数の数値および符号と、外部磁場係数の数値および符号とを、例えば5値などの多値で記憶することができる。この場合に、SRAM310のメモリセルには、スピンの値を記憶することができる。
(3)相互作用演算回路330は、スピンユニット300の内部または外部に配置されている。これにより、相互作用演算回路330は、各隣接するスピンの値とこれに対応する相互作用係数との積、および外部磁場係数において、多値による相互作用演算によってスピンの次状態を決定することができる。
(4)スピンユニット300は、読み出し回路と相互作用演算回路330とを含む。これにより、読み出し回路は、フラッシュメモリ320のメモリセルに記憶した相互作用係数および外部磁場係数を読み出すことができる。そして、相互作用演算回路330は、各隣接するスピンの値と読み出し回路からの相互作用係数との積、および読み出し回路からの外部磁場係数において、多値による相互作用演算によってスピンの次状態を決定することができる。
(5)スピンユニット300は、相互作用演算回路330を含み、スピンユニット300の外部には読み出し回路500が配置されている。これにより、読み出し回路500は、スピンユニット300内のフラッシュメモリ320のメモリセルに記憶した相互作用係数および外部磁場係数を読み出し、この読み出した相互作用係数および外部磁場係数をスピンユニット300内の相互作用演算回路330に出力することができる。そして、相互作用演算回路330は、各隣接するスピンの値と読み出し回路500からの相互作用係数との積、および読み出し回路500からの外部磁場係数において、多値による相互作用演算によってスピンの次状態を決定することができる。また、読み出し回路500は、複数のスピンユニット300で共有することができる。
(6)スピンユニット300の外部には、読み出し回路600と相互作用演算回路610とが配置されている。これにより、読み出し回路600は、スピンユニット300内のフラッシュメモリ320のメモリセルに記憶した相互作用係数および外部磁場係数を読み出すことができる。そして、相互作用演算回路610は、各隣接するスピンの値と読み出し回路600からの相互作用係数との積、および読み出し回路600からの外部磁場係数において、多値による相互作用演算によってスピンの次状態を決定することができる。また、読み出し回路600および相互作用演算回路610は、複数のスピンユニット300で共有することができる。
(7)相互作用演算回路330は、+側計算回路410と−側計算回路420とを含む論理回路と、+側計算回路410と−側計算回路420との作用の大きさを比較する電圧比較回路430とを有する。これにより、+側計算回路410は、並列接続の複数の電流パスからなる構成において、+側の作用の大きさを計算することができる。かつ、−側計算回路420は、並列接続の複数の電流パスからなる構成において、−側の作用の大きさを計算することができる。そして、電圧比較回路430は、+側計算回路410の結果が現れる共通線CTの電圧と−側計算回路420の結果が現れる共通線CBの電圧とを比較して、高い方の電圧に対応する値をスピンの次状態を決定する値として出力することができる。
(8)情報処理装置200において、イジングチップ100の制御プログラムは、スピンアレイ110内のスピンユニット300へ、それぞれ、メモリセルにスピンの値、多値メモリセルに相互作用係数、および多値メモリセルに外部磁場係数を書き込む。そして、スピンユニット300の基底状態探索処理を所定の回数繰り返して実行することで、基底状態に達したスピンユニット300のスピンの値を読み出して対象問題の解を得ることができる。
(9)スピンユニット300の基底状態探索処理は、グループ分けされたスピンユニットに対して、グループ毎に所定の回数繰り返して実行することで、隣接するスピンユニット300を同時に更新しないようにすることができる。
(10)イジングチップ100において、相互作用係数および外部磁場係数を多値メモリセルに記憶し、相互作用演算回路330は、多値による相互作用演算によってスピンの次状態を決定することができるので、より複雑な問題の計算に対応することが可能となり、また、より高速に問題の解を得ることが可能となる。
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
例えば、上記した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記した実施の形態では、物理学の世界で代表的なイジングモデルを例にあげて説明したが、本発明はこれに限定されるものではなく、種々の物理現象や社会現象を表現することができる相互作用モデル全般に適用できるものである。
100,100−1,100−2 イジングチップ
110 スピンアレイ
120 I/Oドライバ
130 I/Oアドレスデコーダ
140 相互作用アドレスデコーダ
141 スピン用電源線
142 通常電源線
150 SRAM互換インタフェース
160 相互作用制御インタフェース
180 相互作用アドレス線
181 相互作用クロック線
190 アドレスバス(SRAM互換インタフェース)
191 データバス(SRAM互換インタフェース)
192 I/Oクロック線(SRAM互換インタフェース)
193 R/W制御線(SRAM互換インタフェース)
200 情報処理装置
210 CPU
220 RAM
230 システムバス
240 NIC
250 イジングチップコントローラ
260 HDD
290 装置間ネットワーク
300 スピンユニット
310 SRAM
320 フラッシュメモリ
330 相互作用演算回路
410 +側計算回路
420 −側計算回路
430 電圧比較回路
500 読み出し回路
510 フラッシュメモリ読み出し/書き込み回路
600 読み出し回路
610 相互作用演算回路
620 フラッシュメモリ読み出し/書き込み回路/相互作用演算回路
N0,IUS,IUV,IDS,IDV メモリセル

Claims (15)

  1. 相互作用モデルの1つのノードの状態を示す値を記憶する第1メモリセルと、前記1つのノードに接続されたノードからの相互作用を示す相互作用係数を記憶する第2メモリセルと、前記1つのノードのバイアス係数を記憶する第3メモリセルと、をそれぞれ含む複数のユニットと、
    前記接続されたノードの状態を示す値と前記相互作用係数と前記バイアス係数とに基づいて、前記1つのノードの次状態を示す値を決定する演算回路と、
    を有し、
    前記複数のユニット内の前記第2メモリセルおよび前記第3メモリセルのそれぞれは、多値メモリセルを含む、半導体装置。
  2. 請求項1に記載の半導体装置において、
    前記多値メモリセルは、フラッシュメモリのメモリセルである、半導体装置。
  3. 請求項2に記載の半導体装置において、
    前記第2メモリセルに記憶する相互作用係数のうちの数値と、前記第3メモリセルに記憶するバイアス係数のうちの数値とを、前記フラッシュメモリのメモリセルに記憶し、
    前記第2メモリセルに記憶する相互作用係数のうちの符号と、前記第3メモリセルに記憶するバイアス係数のうちの符号と、前記第1メモリセルに記憶するノードの状態を示す値とを、SRAMのメモリセルに記憶する、半導体装置。
  4. 請求項2に記載の半導体装置において、
    前記第2メモリセルに記憶する相互作用係数の数値および符号と、前記第3メモリセルに記憶するバイアス係数の数値および符号とを、前記フラッシュメモリのメモリセルに記憶し、
    前記第1メモリセルに記憶するノードの状態を示す値を、SRAMのメモリセルに記憶する、半導体装置。
  5. 請求項2に記載の半導体装置において、
    前記演算回路は、前記複数のユニットの内部または外部に配置されている、半導体装置。
  6. 請求項2に記載の半導体装置において、
    前記第2メモリセルに記憶する相互作用係数と、前記第3メモリセルに記憶するバイアス係数とを、前記フラッシュメモリのメモリセルに記憶し、
    前記演算回路は、前記ユニットの内部に配置され、
    前記複数のユニットのそれぞれは、
    前記フラッシュメモリのメモリセルに記憶した相互作用係数およびバイアス係数を読み出す読み出し回路と、
    前記接続されたノードの状態を示す値と前記読み出し回路からの相互作用係数と前記読み出し回路からのバイアス係数とに基づいて、前記1つのノードの次状態を示す値を決定する前記演算回路と、
    をさらに含む、半導体装置。
  7. 請求項2に記載の半導体装置において、
    前記第2メモリセルに記憶する相互作用係数と、前記第3メモリセルに記憶するバイアス係数とを、前記フラッシュメモリのメモリセルに記憶し、
    前記演算回路は、前記ユニットの内部に配置され、
    前記半導体装置は、前記ユニットの外部に配置され、前記ユニット内の前記フラッシュメモリのメモリセルに記憶した相互作用係数およびバイアス係数を読み出し、この読み出した相互作用係数およびバイアス係数を前記ユニット内の前記演算回路に出力する読み出し回路をさらに有し、
    前記ユニットの内部の前記演算回路は、前記接続されたノードの状態を示す値と前記読み出し回路からの相互作用係数と前記読み出し回路からのバイアス係数とに基づいて、前記1つのノードの次状態を示す値を決定する、半導体装置。
  8. 請求項7に記載の半導体装置において、
    前記読み出し回路は、前記複数のユニットで共有する、半導体装置。
  9. 請求項2に記載の半導体装置において、
    前記第2メモリセルに記憶する相互作用係数と、前記第3メモリセルに記憶するバイアス係数とを、前記フラッシュメモリのメモリセルに記憶し、
    前記演算回路は、前記ユニットの外部に配置され、
    前記半導体装置は、
    前記ユニットの外部に配置され、前記ユニット内の前記フラッシュメモリのメモリセルに記憶した相互作用係数およびバイアス係数を読み出す読み出し回路と、
    前記ユニットの外部に配置され、前記接続されたノードの状態を示す値と前記読み出し回路からの相互作用係数と前記読み出し回路からのバイアス係数とに基づいて、前記1つのノードの次状態を示す値を決定する前記演算回路と、
    をさらに有する、半導体装置。
  10. 請求項9に記載の半導体装置において、
    前記読み出し回路および前記演算回路は、前記複数のユニットで共有する、半導体装置。
  11. 請求項2に記載の半導体装置において、
    前記演算回路は、
    前記接続されたノードの状態を示す値、前記相互作用係数、および前記バイアス係数に基づいて、第1側と第2側との相互作用演算を行う論理回路と、
    前記論理回路の結果に基づいて、前記第1側と前記第2側との作用の大きさを比較して前記1つのノードの次状態を示す値として前記第1側の第1の値または前記第2側の第2の値を出力する比較回路と、
    を含む、半導体装置。
  12. 請求項11に記載の半導体装置において、
    前記論理回路は、前記接続されたノードの状態を示す値、前記相互作用係数、および前記バイアス係数をそれぞれ記憶する複数のメモリセルによる並列接続の複数の電流パスからなり、前記第1側の作用の大きさを計算する第1計算回路と、前記接続されたノードの状態を示す値、前記相互作用係数、および前記バイアス係数をそれぞれ記憶する複数のメモリセルによる並列接続の複数の電流パスからなり、前記第2側の作用の大きさを計算する第2計算回路と、を含み、
    前記比較回路は、前記第1計算回路の結果が現れる第1共通線の電圧と前記第2計算回路の結果が現れる第2共通線の電圧とを比較して、高い方の電圧に対応する前記第1の値または前記第2の値を前記1つのノードの次状態を示す値として出力する、半導体装置。
  13. CPU、RAM、HDD、およびアクセラレータとして動作可能な半導体装置を、システムバスを介して接続した情報処理装置であって、
    前記半導体装置は、
    相互作用モデルの1つのノードの状態を示す値を記憶する第1メモリセルと、前記1つのノードに接続されたノードからの相互作用を示す相互作用係数を記憶する第2メモリセルと、前記1つのノードのバイアス係数を記憶する第3メモリセルと、をそれぞれ含む複数のユニットと、
    前記接続されたノードの状態を示す値と前記相互作用係数と前記バイアス係数とに基づいて、前記1つのノードの次状態を示す値を決定する演算回路と、
    前記複数のユニットのメモリセルをリード/ライトするI/Oインタフェースと、
    前記複数のユニットに対して、相互作用を許可する信号を供給する相互作用制御インタフェースと、を有し、
    前記複数のユニット内の前記第2メモリセルおよび前記第3メモリセルのそれぞれは、多値メモリセルを含み、
    前記CPU上で実行される前記半導体装置の制御プログラムは、
    対象問題を表現する前記相互作用モデルの各ノードを割り当てた前記半導体装置上の前記複数のユニットへ、それぞれ、前記第1メモリセルに前記ノードの状態を示す値、多値メモリセルの前記第2メモリセルに前記相互作用係数、および多値メモリセルの前記第3メモリセルに前記バイアス係数を書き込み、
    前記複数のユニットの基底状態探索処理を所定の回数繰り返して実行し、
    基底状態に達した前記複数のユニットのノードの状態を示す値を読み出して前記対象問題の解を得る、情報処理装置。
  14. 請求項13に記載の情報処理装置において、
    前記複数のユニットの基底状態探索処理は、グループ分けされたユニットに対して、グループ毎に所定の回数繰り返して実行する、情報処理装置。
  15. 請求項13に記載の情報処理装置において、
    前記多値メモリセルは、フラッシュメモリのメモリセルであり、
    前記フラッシュメモリのメモリセルに、前記相互作用係数のうちの数値と前記バイアス係数のうちの数値とを書き込むか、または、前記相互作用係数の数値および符号と前記バイアス係数の数値および符号とを書き込む、情報処理装置。
JP2014176238A 2014-08-29 2014-08-29 半導体装置および情報処理装置 Active JP5901712B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014176238A JP5901712B2 (ja) 2014-08-29 2014-08-29 半導体装置および情報処理装置
US14/639,589 US9466346B2 (en) 2014-08-29 2015-03-05 Semiconductor device and information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014176238A JP5901712B2 (ja) 2014-08-29 2014-08-29 半導体装置および情報処理装置

Publications (2)

Publication Number Publication Date
JP2016051326A true JP2016051326A (ja) 2016-04-11
JP5901712B2 JP5901712B2 (ja) 2016-04-13

Family

ID=55403226

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014176238A Active JP5901712B2 (ja) 2014-08-29 2014-08-29 半導体装置および情報処理装置

Country Status (2)

Country Link
US (1) US9466346B2 (ja)
JP (1) JP5901712B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017224215A (ja) * 2016-06-17 2017-12-21 株式会社日立製作所 情報処理装置及び計算機システム
EP3754556A1 (en) 2019-06-18 2020-12-23 Fujitsu Connected Technologies Limited Sampling device and sampling method

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6021864B2 (ja) * 2014-08-29 2016-11-09 株式会社日立製作所 半導体装置および情報処理装置
JP6623947B2 (ja) * 2016-06-17 2019-12-25 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP6979331B2 (ja) * 2017-10-30 2021-12-15 株式会社日立製作所 情報処理装置および情報処理方法
CN115081589A (zh) * 2020-01-09 2022-09-20 支付宝(杭州)信息技术有限公司 利用lstm神经网络模型处理交互数据的方法及装置
JP2021144622A (ja) * 2020-03-13 2021-09-24 富士通株式会社 最適化装置、最適化プログラム、および最適化方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011524026A (ja) * 2008-03-24 2011-08-25 ディー−ウェイブ システムズ,インコーポレイテッド アナログ処理用のシステム、装置、および方法
JP2014075065A (ja) * 2012-10-05 2014-04-24 Renesas Electronics Corp 半導体装置及びその回路動作開始方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3942342B2 (ja) * 2000-06-30 2007-07-11 富士通株式会社 多値データを記録する不揮発性メモリ
WO2010134201A1 (ja) * 2009-05-22 2010-11-25 株式会社日立製作所 半導体装置
WO2012118064A1 (ja) 2011-03-01 2012-09-07 大学共同利用機関法人情報・システム研究機構 イジングモデルの量子計算装置及びイジングモデルの量子計算方法
US9378311B2 (en) * 2012-02-09 2016-06-28 Saudi Arabian Oil Company Multi-level solution of large-scale linear systems in simulation of porous media in giant reservoirs
JP5865456B1 (ja) * 2014-08-29 2016-02-17 株式会社日立製作所 半導体装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011524026A (ja) * 2008-03-24 2011-08-25 ディー−ウェイブ システムズ,インコーポレイテッド アナログ処理用のシステム、装置、および方法
JP2014075065A (ja) * 2012-10-05 2014-04-24 Renesas Electronics Corp 半導体装置及びその回路動作開始方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YOSHIMURA CHIHIRO 他: "Spatial computing architecture using randomness of memory cell stability under voltage control", EUROPEAN CONFERENCE ON CIRCUIT THEORY AND DESIGN (ECCTD), 2013, JPN6015048753, 12 September 2013 (2013-09-12), pages 1 - 4, XP055272708, ISSN: 0003261835, DOI: 10.1109/ECCTD.2013.6662276 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017224215A (ja) * 2016-06-17 2017-12-21 株式会社日立製作所 情報処理装置及び計算機システム
EP3754556A1 (en) 2019-06-18 2020-12-23 Fujitsu Connected Technologies Limited Sampling device and sampling method

Also Published As

Publication number Publication date
JP5901712B2 (ja) 2016-04-13
US20160064053A1 (en) 2016-03-03
US9466346B2 (en) 2016-10-11

Similar Documents

Publication Publication Date Title
JP5901712B2 (ja) 半導体装置および情報処理装置
JP5865456B1 (ja) 半導体装置
JP6021864B2 (ja) 半導体装置および情報処理装置
JP5864684B1 (ja) 半導体装置
JP5922203B2 (ja) 半導体装置
JP5922202B2 (ja) 半導体装置、画像セグメンテーション方法、および画像処理装置
JP6605610B2 (ja) 半導体装置
JP6177993B2 (ja) 半導体装置および情報処理装置
JP6568222B2 (ja) 半導体システムおよび計算方法
JP6503072B2 (ja) 半導体システムおよび計算方法
JP5894645B1 (ja) 半導体装置及びその品質管理方法
US9666252B2 (en) Semiconductor device for calculating an interaction model
JP6207583B2 (ja) 半導体装置および情報処理方法
JP5903471B2 (ja) 半導体装置および情報処理装置
Chen et al. Hidden-ROM: A compute-in-ROM architecture to deploy large-scale neural networks on chip with flexible and scalable post-fabrication task transfer capability

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160205

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: 20160223

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160308

R150 Certificate of patent or registration of utility model

Ref document number: 5901712

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150