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

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

Info

Publication number
JP6021864B2
JP6021864B2 JP2014176234A JP2014176234A JP6021864B2 JP 6021864 B2 JP6021864 B2 JP 6021864B2 JP 2014176234 A JP2014176234 A JP 2014176234A JP 2014176234 A JP2014176234 A JP 2014176234A JP 6021864 B2 JP6021864 B2 JP 6021864B2
Authority
JP
Japan
Prior art keywords
spin
unit
units
switch
value
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.)
Expired - Fee Related
Application number
JP2014176234A
Other languages
English (en)
Other versions
JP2016051325A (ja
Inventor
山岡 雅直
雅直 山岡
長田 健一
健一 長田
地尋 吉村
地尋 吉村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2014176234A priority Critical patent/JP6021864B2/ja
Priority to US14/643,567 priority patent/US9823882B2/en
Publication of JP2016051325A publication Critical patent/JP2016051325A/ja
Application granted granted Critical
Publication of JP6021864B2 publication Critical patent/JP6021864B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1659Cell access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Mram Or Spin Memory Techniques (AREA)
  • Multi Processors (AREA)

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に記載の装置ではスピンとレーザーを対応させており、スピン数に比例した数のレーザーが必要となる。すなわち、多数の素子を実現できるスケーラビリティの高さが必要となる。そのため、構成単位となる要素を規則的に多数並べて実現できる、半導体装置のような固体素子でイジングモデルの基底状態探索を行えることが望ましい。特に、SRAMなどの記憶装置に代表されるようなアレイ構造であり、かつ構成単位となる要素間のトポロジを変更可能であることが望ましい。
本発明の代表的な目的は、相互作用モデルの計算を行うために基本構成単位となる構成要素をアレイ状に配置した半導体装置において、この構成要素間のトポロジを変更可能にする技術を提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
代表的な半導体装置は、相互作用モデルの1つのノードの状態を示す値を記憶する第1メモリセルと、前記1つのノードに接続されたノードからの相互作用を示す相互作用係数を記憶する第2メモリセルと、前記接続されたノードの状態を示す値及び前記相互作用係数に基づいて、前記1つのノードの次状態を示す値を決定する計算回路と、をそれぞれ含む複数のユニットを有する。さらに、前記複数のユニット間を接続または非接続にする複数のスイッチを有する。
例えば、前記複数のスイッチは、前記複数のユニットのなかの第1ユニットの計算回路と第2ユニットの計算回路とを結合または分割する第1スイッチを含む。より好ましくは、前記複数のスイッチは、前記複数のユニットのなかの第1ユニット内の前記第1メモリセルの値を第2ユニットへ出力する第2スイッチを含む。より好ましくは、前記複数のスイッチは、前記複数のユニットのなかの第2ユニット内の前記第1メモリセルの値を第1ユニットへ入力する第3スイッチを含む。
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下の通りである。
代表的な効果は、相互作用モデルの計算を行うために基本構成単位となる構成要素をアレイ状に配置した半導体装置において、この構成要素間のトポロジを変更可能にする技術を提供することができる。
本発明の一実施の形態におけるイジングチップの構成の一例を説明するための図である。 本発明の一実施の形態における情報処理装置の構成の一例を説明するための図である。 本発明の一実施の形態において、3次元格子のスピンアレイの構成の一例を説明するための図である。 本発明の一実施の形態において、スピンアレイのトポロジとスピンユニット内のメモリセルとの対応関係の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、最小単位のスピンユニットによる相互作用の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、スピンユニットを2つ接続して複雑なトポロジを実現する場合の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、スピンユニットを2つ結合するための回路構成(出口側のスイッチ)の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、スピンユニットを2つ結合するための回路構成(入口側のスイッチ)の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、図5における各スピンユニットの接続の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、図6における各スピンユニットの接続の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、図9と図10とを切り替えて使うための構成(図7に対応)の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、図9と図10とを切り替えて使うための構成(図8に対応)の一例を説明するための図である。 図8の入口側のスイッチの回路構成の一例を説明するための図である。 図7の出口側のスイッチの回路構成の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、トポロジを制御するレジスタの構成(スピンユニット内の全てのスイッチに付加)の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、トポロジを制御するレジスタの構成(スピンユニット毎に付加)の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、トポロジを制御するレジスタの構成(スピンアレイの行毎に付加)の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、トポロジを制御するレジスタの構成(スピンアレイの全体に1つ付加)の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、相互作用計算回路の回路構成(多数決計算回路)の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、相互作用計算回路の回路構成(電圧比較回路)の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、相互作用計算回路の動作波形の一例を説明するための図である。 図1のイジングチップのスピンアレイにおいて、より複雑なトポロジを作るための構成の一例を説明するための図である。 図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 0006021864
なお、σ,σはそれぞれ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から構成される。また、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース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の内部のスピンに向かっていることに対応している。
詳細は後述するが、本実施の形態では、1個のスピンユニット300には、隣接するスピンの値に限らず、離れたスピンの値も入力されるトポロジを実現する。このことは、イジングチップ100内の複数のスピンユニット300の相互間において、隣接または離れたスピンユニット300間を結合または分割することで可能にする。
<5.スピンユニットの構成>
スピンユニット300の構成の一例を、図7を用いて説明する。図7では、2つのスピンユニット300−0と300−1を図示しているが、ここでは代表的に、一方のスピンユニット300−0を用いて説明する。スピンユニット300の構成は、図8においても同様である。
スピンユニット300−0は、イジングモデルのスピンσ、相互作用係数Jj,i〜Jおよび外部磁場係数hを保持するために、複数の1ビットのメモリセルN0,IS00(図示省略),IS01(図示省略),IU00,IU01,IL00,IL01,IR00,IR01,ID00,ID01,IF00(図示省略),IF01(図示省略)を備えている。なお、図示省略のメモリセルIS00およびIS01、メモリセルIU00およびIU01、メモリセルIL00およびIL01、メモリセルIR00およびIR01、メモリセルID00およびID01、並びに、図示省略のメモリセルIF00およびIF01は、それぞれ2個1組で役割を果たすものであるため、それぞれまとめてメモリセル対ISx,IUx,ILx,IRx,IDxまたはIFxと略記する(図4参照)。以下では、図示省略したものも含めて説明する。
スピンユニット300−0が有する各メモリセルN0,IS00,IS01,IU00,IU01,IL00,IL01,IR00,IR01,ID00,ID01,IF00,IF01は、図示しないがSRAMと同様に、CMOSインバータ2個で構成されるデータ保持部を有し、その両端にそれぞれ接続されたパスゲートトランジスタをワード線およびビット線で制御することで、データ保持部へのデータ読み書きを実現する。
ここで、スピンユニット300−0はi番目のスピンを表現するものとして説明を行う。メモリセルN0はスピンσを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは+1/−1(+1を上、−1を下とも表現する)であるが、これをメモリセルの2値である0/1に対応させる。例えば、+1を1、−1を0に対応させる。
図4を用いて、スピンユニット300−0が有するメモリセル対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−0は最大で5個のスピンと接続される。本実施の形態のイジングチップ100では、外部磁場係数および相互作用係数として+1/0/−1の3値に対応する。そのため、外部磁場係数および相互作用係数を表わすためには、それぞれ2ビットのメモリセルが必要となる。メモリセル対ISx,IUx,ILx,IRx,IDxおよびIFxは、末尾の数字が00と01の2つのメモリセル(例えばメモリセル対ISxの場合にはメモリセルIS00およびIS01)の組み合わせで、+1/0/−1の3値を表現する。
例えば、メモリセル対ISxの場合には、メモリセルIS01で+1/−1を表現し、メモリセルIS01が保持する値が1の時は+1、メモリセルIS01が保持する値が0の時には−1を表す。これに加えて、メモリセルIS00が保持する値が0の時には外部磁場係数を0と見なし、メモリセルIS00が保持する値が1の時にはメモリセルIS01が保持する値で決まる+1/−1のいずれかを外部磁場係数とする。外部磁場係数が0の時は外部磁場係数をディセーブルしていると考えれば、メモリセルIS00に保持された値は外部磁場係数のイネーブルビットであると言うことができる(IS00=1の時に、外部磁場係数がイネーブルされる)。相互作用係数を記憶するメモリセル対IUx,ILx,IRx,IDxおよびIFxも同様に係数とビットの値を対応させている。
スピンユニット300−0内のメモリセルN0,IS00,IS01,IU00,IU01,IL00,IL01,IR00,IR01,ID00,ID01,IF00およびIF01は、それぞれイジングチップ100の外部からリード/ライト可能でなければならない。そのために、スピンユニット300−0は、図示しないビット線とワード線とをそれぞれ有している。スピンユニット300−0を半導体基板上にタイル状に並べてビット線とワード線とを接続し、図1に示したI/Oアドレスデコーダ130とI/Oドライバ120とで駆動、制御または読み出しすることで、一般的なSRAM(Static Random Access Memory)と同様にスピンユニット300−0内のメモリセルをイジングチップ100のSRAM互換インタフェース150でリード/ライトすることができる。
なお、図7および図8に示す他方のスピンユニット300−1の構成も、同様である。他方のスピンユニット300−1では、複数の1ビットのメモリセルN1,IS10(図示省略),IS11(図示省略),IU10,IU11,IL10,IL11,IR10,IR11,ID10,ID11,IF10(図示省略),IF11(図示省略)を備えている。
<6.スピンユニット内のスピンの次状態を決定するための回路>
スピンユニット300は、同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット300毎に独立して持っている。スピンの次状態を決定するための回路を、図7に示す。図7では、2つのスピンユニット300−0と300−1とを図示しているが、ここでは代表的に、一方のスピンユニット300−0を用いて説明する。
図7では、一方のスピンユニット300−0は、外部とのインタフェースとして、信号線NCU01,NCL01,NL11,NCD01,NCF01(図示省略)およびN0を有する。以下では、図示省略したものも含めて説明する。
信号線N0は当該スピンユニット300−0のスピンの値を他のスピンユニット300に出力するインタフェースである。信号線NCU01,NCL01,NL11,NCD01およびNCF01はそれぞれ他のスピンユニット300の有するスピンの値を入力するためのインタフェースである。信号線NCU01は離れた上側のスピン(Y軸方向で−1)、信号線NCL01は離れた左側のスピン(X軸方向で−1)、信号線NL11は隣接する左側のスピン(X軸方向で−1)、信号線NCD01は離れた下側のスピン(Y軸方向で+1)、信号線NCF01は離れた奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)からの入力である。
なお、他方のスピンユニット300−1では、外部とのインタフェースとして、信号線NCU11,NR01,NCR11,NCD11,NCF11(図示省略)およびN1を有する。信号線NCU11は離れた上側のスピン(Y軸方向で−1)、信号線NR01は隣接する右側のスピン(X軸方向で+1)、信号線NCR11は離れた右側のスピン(X軸方向で+1)、信号線NCD11は離れた下側のスピン(Y軸方向で+1)、信号線NCF11は離れた奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)からの入力である。
これらのインタフェースについては、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。図3のトポロジのように単に端は打ち切るのであれば、信号線NCU01,NCL01,NL11,NCD01およびNCF01のうち端に対するものは何も入力しなくて良い(回路上は0ないしは1の固定値に接続するなど、未使用入力端子として適切な処理をとる)。
スピンユニット300−0では隣接または離れたスピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接または離れたスピンと相互作用係数の積、および、外部磁場係数を見た時に、正の値と負の値のどちらが支配的か判断することと等価である。例えば、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個である。仮に、i番目スピンを+1とすると、エネルギーの総和は−2、i番目スピンを−1とするとエネルギーの総和は+2になる。よって、+1の個数が多い時にはi番目スピンの次状態を+1とし、−1の個数が多い時にはi番目スピンの次状態を−1にするという多数決で、エネルギーを最小化するi番目スピンの次状態を決定することができる。
図7のスピンユニット300−0に図示する論理回路は、前記した相互作用を行うための回路である。まず、隣接または離れたスピンの状態と、相互作用係数の+1/−1を示すメモリセルIU01,IL01,IR01,ID01,IF01(図示省略)が保持する値との排他的論理和を排他的論理和回路310で求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる(+1は1、−1は0にエンコードされているものとする)。もし、相互作用係数が+1/−1だけであれば、排他的論理和回路310の出力のうち+1/−1のどちらが多いかを多数決論理回路330において多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態+1のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理回路330に入力すべき値となる。
図7および図8に示すスピンユニット300(300−0、300−1)の構成において、排他的論理和回路310、スイッチ回路320、および多数決論理回路330を含めて、相互作用計算回路340と称する。
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することができるが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことができず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転させる方法も用いられている。
<7.イジングチップ内の複数のスピンユニットの結合または分割>
本実施の形態では、1個のスピンユニット300には、隣接するスピンの値に限らず、離れたスピンの値も入力されるトポロジを実現するために、イジングチップ100内の複数のスピンユニット300の相互間において、隣接または離れたスピンユニット300間を結合または分割する構成を用いる。
図5は、スピンアレイ110において、最小単位のスピンユニット300による相互作用の一例を説明するための図である。図6は、スピンアレイ110において、スピンユニット300を2つ接続して複雑なトポロジを実現する場合の一例を説明するための図である。図5および図6は、複数のスピンユニット300が、イジングモデルのトポロジを維持した状態で、半導体基板上の2次元平面に配置、接続されて構成されたスピンアレイ110を示している。すなわち、スピンアレイ110には、図3に示した3次元格子状のトポロジを持つイジングモデルの各スピンをそれぞれ割り付けられた複数のスピンユニット300が、半導体基板上に2次元格子状に並べて配置されて接続されている。
図5の例は、複数のスピンユニット300が分離された場合で、各スピンユニット300が隣接するスピンユニットと接続可能である。具体的には、ある1つのスピンユニット300に着目した場合に、このスピンユニットは、上側のスピンユニットと、左側のスピンユニットと、右側のスピンユニットと、下側のスピンユニットとにそれぞれ接続可能である。より具体的には、図9を用いて後述する。
これに対して、図6の例は、複数のスピンユニット300が結合された場合で、スピンユニット300を2つ接続して1つのスピンユニットとして見なし(1つのスピンユニットとして見なす構成単位を、一対のスピンユニットと称する)、隣接するスピンユニット300および離れたスピンユニット300と接続可能である。具体的には、ある一対のスピンユニット300に着目した場合に、この一対のスピンユニットが接続される隣接するスピンユニットは、図5の場合と同様である。すなわち、この一対のスピンユニット300は、上側のスピンユニットと、左側のスピンユニットと、右側のスピンユニットと、下側のスピンユニットとにそれぞれ接続可能である。この一対のスピンユニット300は、隣接するスピンユニットに加えて、離れた上側のスピンユニットと、離れた左側のスピンユニットと、離れた右側のスピンユニットと、離れた下側のスピンユニットともそれぞれ接続可能である。より具体的には、図10を用いて後述する。
なお、図6では、行方向に並ぶ2つのスピンユニットを接続した例を図示しているが、列方向に並ぶ2つのスピンユニットを接続する場合にも同様に適用可能である。さらには、2つに限らず、3つ以上のスピンユニットを接続する場合なども、本発明の範疇に含まれるものである。
<8.スピンユニットを2つ結合するための回路構成>
図7および図8は、スピンユニット300を2つ結合するための回路構成の一例を説明するための図である。図7では、スピンの値を隣接または離れたスピンユニット300のメモリセルに配る(出力する)部分にスイッチを入れて、データの出口側でトポロジを制御する例を示している。図8では、スピンの値を隣接または離れたスピンユニット300のメモリセルから入力される部分にスイッチを入れて、データの入口側でトポロジを制御する例を示している。
スピンユニット300を2つ接続して一対のスピンユニットを実現するためには、第1に、図7および図8に示すように、隣接または離れたスピンユニット300−0と300−1とを結合または分離するためのスイッチ410を有する。このスイッチ410は、一方のスピンユニット300−0の多数決論理回路330の信号線CT0,CB0と他方のスピンユニット300−1の多数決論理回路330の信号線CT1,CB1との間に接続され、オンした場合には互いを接続して2つのスピンユニットを結合し、オフの場合には互いを非接続にして2つのスピンユニットを分離する。
2つのスピンユニット300−0と300−1とを結合した場合には、分離した場合に比べて、より多くのスピンの値に基づいて多数決論理が実現できるので、より複雑な問題の計算に対応することができる。
さらに、スピンユニット300を2つ接続して一対のスピンユニットを実現するためには、第2に、図7に示すように、スピンの値を隣接または離れたスピンユニット300に配る部分に入れるスイッチ420、または、図8に示すように、スピンの値を隣接または離れたスピンユニット300から入力される部分に入れるスイッチ430を有する。スイッチ420は、1つの入力に対して複数(図7の例では2つ)の出力が可能なスイッチであり、スイッチ430は、複数(図8の例では2つ)の入力に対して1つの出力が可能なスイッチである。なお、スイッチ420およびスイッチ430の両方を有する構成にも適用可能である。
図7の例では、一方のスピンユニット300−0においては、スイッチ420−0を一方に切り替える(図7の状態)ことで、メモリセルN0のスピンの値を、上側のスピンユニット(NU01)、左側のスピンユニット(NL01)、右側のスピンユニット(NR01)、および、下側のスピンユニット(ND01)にそれぞれ配ることができる。また、スイッチ420−0を他方に切り替えることで、メモリセルN0のスピンの値を、上側のスピンユニット(NU02)、左側のスピンユニット(NL02)、右側のスピンユニット(NR02)、および、下側のスピンユニット(ND02)にそれぞれ配ることができる。
同様に、他方のスピンユニット300−1においては、スイッチ420−1を一方に切り替える(図7の状態)ことで、メモリセルN1のスピンの値を、上側のスピンユニット(NU11)、左側のスピンユニット(NL11)、右側のスピンユニット(NR11)、および、下側のスピンユニット(ND11)にそれぞれ配ることができる。また、スイッチ420−1を他方に切り替えることで、メモリセルN1のスピンの値を、上側のスピンユニット(NU12)、左側のスピンユニット(NL12)、右側のスピンユニット(NR12)、および、下側のスピンユニット(ND12)にそれぞれ配ることができる。
2つのスピンユニット300−0と300−1とを結合した場合(スイッチ410をオンにした場合)には、メモリセルN0とN1とは同じ値であり、スイッチ420−0と420−1とを切り替えることで、より多くのスピンユニットへスピンの値を配ることができる。この場合に、スピンの値を配ることができるスピンユニットは、隣接するスピンユニットに限らず、離れたスピンユニットへも配ることができるので、より複雑な問題の計算に対応することができる。
図8の例では、一方のスピンユニット300−0においては、スイッチ430−0を一方に切り替える(図8の状態)ことで、上側のスピンユニット(NU01)、左側のスピンユニット(NL01)、他方のスピンユニット(N1)、および、下側のスピンユニット(ND01)のスピンの値をそれぞれ、一方のスピンユニット300−0の各排他的論理和回路310に入力することができる。また、スイッチ430−0を他方に切り替えることで、上側のスピンユニット(NU02)、左側のスピンユニット(NL02)、右側のスピンユニット(NR02)、および、下側のスピンユニット(ND02)のスピンの値をそれぞれ、一方のスピンユニット300−0の各排他的論理和回路310に入力することができる。
同様に、他方のスピンユニット300−1においては、スイッチ430−1を一方に切り替える(図8の状態)ことで、上側のスピンユニット(NU11)、一方のスピンユニット(N0)、右側のスピンユニット(NR11)、および、下側のスピンユニット(ND11)のスピンの値をそれぞれ、他方のスピンユニット300−1の各排他的論理和回路310に入力することができる。また、スイッチ430−1を他方に切り替えることで、上側のスピンユニット(NU12)、左側のスピンユニット(NL12)、右側のスピンユニット(NR12)、および、下側のスピンユニット(ND12)のスピンの値をそれぞれ、他方のスピンユニット300−1の各排他的論理和回路310に入力することができる。
2つのスピンユニット300−0と300−1とを結合した場合(スイッチ410をオンにした場合)には、スイッチ430−0と430−1とを切り替えることで、より多くのスピンユニットからスピンの値を入力することができる。この場合に、スピンの値を入力することができるスピンユニットは、隣接するスピンユニットに限らず、離れたスピンユニットからも入力することができるので、より複雑な問題の計算に対応することができる。
なお、図7および図8のスピンユニット300(300−0,300−1)においては、メモリセル対ISx(IS00とIS01、IS10とIS11),IFx(IF00とIF01、IF10とIF11)の図示を省略している。メモリセル対IFxについては、上記メモリセル対IUx,ILx,IRx,IDxと同様に、スイッチの切り替えにより制御される。一方、メモリセル対ISxについては、外部磁場係数を記憶するメモリセルなのでスイッチによる切り替えはない。
<9.スピンユニットの接続>
図9および図10は、各スピンユニット300の接続の一例を説明するための図である。図9は、上述した図5における各スピンユニット300の接続の一例であり、複数のスピンユニット300が分離され、各スピンユニットの1つが単独で動作する場合である。図10は、上述した図6における各スピンユニット300の接続の一例であり、複数のスピンユニット300が結合され、スピンユニットの2つが接続されて動作する場合である。図9および図10において、黒丸(●)が出口を示し、白丸(○)が入口を示す。
図9では、複数のスピンユニット300として、行方向に4個、列方向に3個を2次元格子状に配置している例を図示している。各スピンユニット300を区別するために、説明上便宜的に、座標(行方向をN00、N01、N02、N03、列方向をN00、N10、N20)を付与している。例えば、N11のスピンユニット300に着目して、接続関係を説明する。このスピンユニット(N11)は、出口(●)が、上側のスピンユニット(N01)、左側のスピンユニット(N10)、右側のスピンユニット(N12)、および、下側のスピンユニット(N21)にそれぞれ接続される。また、このスピンユニット(N11)は、入口(○)が、上側のスピンユニット(N01)、左側のスピンユニット(N10)、右側のスピンユニット(N12)、および、下側のスピンユニット(N21)にそれぞれ接続される。
また、他の座標のスピンユニット300に着目しても同様である。このように、各スピンユニット300は、隣接するスピンユニット300と接続される。ただし、例えばN00のスピンユニット300に着目すると、上側および左側にスピンユニット300がないので、回路上は0ないしは1の固定値に接続するなど、未使用入出力端子として適切な処理をとる。他の対側(隣接する上側、隣接する左側、隣接する右側、隣接する下側、およびこれらの組み合わせ)にスピンユニット300がない場合にも同様である。
図10では、複数のスピンユニット300として、行方向に8個、列方向に4個を2次元格子状に配置している例を図示している。各スピンユニット300を区別するために、説明上便宜的に、座標(行方向をN00、N01、N02、N03、N04、N05、N06、N07、列方向をN00、N10、N20、N30)を付与している。また、図10では、行方向の2個ずつのスピンユニット300が接続されて一対のスピンユニットをそれぞれ構成している(破線の矩形で図示)。一対のスピンユニットは、1つのスピンユニットとして見なす構成単位である。
例えば、N24のスピンユニット300とN25のスピンユニット300とが接続された一対のスピンユニットに着目して、接続関係を説明する。例えば、一対のスピンユニットのうちのN24のスピンユニット300に着目すると、このスピンユニット(N24)は、出口(●)が、上側のスピンユニット(N14)、左側のスピンユニット(N23)、離れた左側のスピンユニット(N21)、および、下側のスピンユニット(N34)にそれぞれ接続される。一対のスピンユニットのうちのN25のスピンユニット300に着目すると、このスピンユニット(N25)は、出口(●)が、離れた上側のスピンユニット(N05)、右側のスピンユニット(N26)、離れた右側のスピンユニット(図示範囲外(N28))、および、離れた下側のスピンユニット(図示範囲外(N45))にそれぞれ接続される。
また、一対のスピンユニットのうちのN24のスピンユニット300に着目すると、このスピンユニット(N24)は、入口(○)が、上側のスピンユニット(N14)、左側のスピンユニット(N23)、離れた左側のスピンユニット(N21)、および、下側のスピンユニット(N34)にそれぞれ接続される。一対のスピンユニットのうちのN25のスピンユニット300に着目すると、このスピンユニット(N25)は、入口(○)が、離れた上側のスピンユニット(N05)、右側のスピンユニット(N26)、離れた右側のスピンユニット(図示範囲外(N28))、および、離れた下側のスピンユニット(図示範囲外(N45))にそれぞれ接続される。
また、他の座標の一対のスピンユニットについても同様である。このように、2個ずつのスピンユニット300が接続された一対のスピンユニットは、隣接するスピンユニット300および離れたスピンユニット300と接続される。ただし、例えば一対のスピンユニットのうちのN00のスピンユニット300に着目すると、上側および左側にスピンユニット300がないので、回路上は0ないしは1の固定値に接続するなど、未使用入出力端子として適切な処理をとる。他の対側(隣接する上側、隣接する左側、隣接する右側、隣接する下側、離れた上側、離れた左側、離れた右側、離れた下側、およびこれらの組み合わせ)にスピンユニット300がない場合にも同様である。
このように、一対のスピンユニットは、隣接するスピンユニットに限らず、離れたスピンユニットとも接続される。なお、図10の例では、離れたスピンユニットは、隣接するスピンユニットを1つ目とすると、3つ目のスピンユニットを指しているが、本実施の形態では4つ目以上の離れたスピンユニットにも適用できるものである。
<10.スイッチの配置>
図11および図12は、上述した図9(各スピンユニット300の1つが単独で動作する場合)と図10(スピンユニット300の2つが接続されて動作する場合)とを切り替えて使うための構成の一例を説明するための図である。図11では、上述した図7(スピンの値を隣接または離れたスピンユニット300のメモリセルに配る部分にスイッチ420を入れる場合)に対応するスイッチの配置の一例を示している。図12では、上述した図8(スピンの値を隣接または離れたスピンユニット300のメモリセルから入力される部分にスイッチ430を入れる場合)に対応するスイッチの配置の一例を示している。図11および図12において、黒丸(●)が出口を示し、白丸(○)が入口を示し、黒三角(▲)は出口にスイッチが付いていることを示し、白三角(△)は入口にスイッチが付いていることを示す。
図11では、複数のスピンユニット300として、行方向に4個、列方向に2個を2次元格子状に配置している例を図示している。各スピンユニット300を区別するために、説明上便宜的に、座標(行方向をN00、N01、N02、N03、列方向をN00、N10)を付与している。また、図11では、行方向の2個ずつのスピンユニット300が接続されて一対のスピンユニットをそれぞれ構成している。
例えば、N00のスピンユニット300とN01のスピンユニット300とが接続された一対のスピンユニットに着目して、出口にスイッチが付いていることを説明する。例えば、一対のスピンユニットのうちのN00のスピンユニット300に着目すると、このスピンユニット(N00)は、隣接する上側のスピンユニット、隣接する左側のスピンユニット、離れた左側のスピンユニット、および、隣接する下側のスピンユニットへの出口のうち、スイッチが付いている出口(▲)は、離れた左側のスピンユニットへの出口である。一対のスピンユニットのうちのN01のスピンユニット300に着目すると、このスピンユニット(N01)は、離れた上側のスピンユニット、隣接する右側のスピンユニット、離れた右側のスピンユニット、および、離れた下側のスピンユニットへの出口のうち、スイッチが付いている出口(▲)は、離れた上側のスピンユニット、離れた右側のスピンユニット、および、離れた下側のスピンユニットへの出口である。また、他の座標の一対のスピンユニットについても同様である。
図12でも、複数のスピンユニット300として、上述した図11と同様の2次元格子状の配置(行方向に4個、列方向に2個)において、図11と同様の座標(行方向をN00、N01、N02、N03、列方向をN00、N10)を付与して、図示している。
例えば、N00のスピンユニット300とN01のスピンユニット300とが接続された一対のスピンユニットに着目して、入口にスイッチが付いていることを説明する。例えば、一対のスピンユニットのうちのN00のスピンユニット300に着目すると、このスピンユニット(N00)は、隣接する上側のスピンユニット、隣接する左側のスピンユニット、離れた左側のスピンユニット、および、隣接する下側のスピンユニットからの入口のうち、スイッチが付いている入口(△)は、離れた左側のスピンユニットからの入口である。一対のスピンユニットのうちのN01のスピンユニット300に着目すると、このスピンユニット(N01)は、離れた上側のスピンユニット、隣接する右側のスピンユニット、離れた右側のスピンユニット、および、離れた下側のスピンユニットからの入口のうち、スイッチが付いている入口(△)は、離れた上側のスピンユニット、離れた右側のスピンユニット、および、離れた下側のスピンユニットからの入口である。また、他の座標の一対のスピンユニットについても同様である。
<11.スイッチの回路構成>
図13および図14は、スイッチの回路構成の一例を説明するための図である。図13は、入口側のスイッチの回路構成の一例であり、上述した図8のスイッチ430、および図12の入口(△)に付いているスイッチの回路構成を示している。図14は、出口側のスイッチの回路構成の一例であり、上述した図7のスイッチ420、および図11の出口(▲)に付いているスイッチの回路構成を示している。
図13では、2入力−1出力のスイッチの例を図示している。図13のスイッチは、回路規模は小さいが信号が劣化しやすいので、入口側のスイッチに向いている。このスイッチは、2つのCMOSトランスファーゲート501,502と、1つのインバータ503とから構成される。各CMOSトランスファーゲート501,502は、PMOSトランジスタとNMOSトランジスタとが接続されて構成されている。
CMOSトランスファーゲート501,502は、それぞれ、選択信号SELとこれをインバータ503で反転した反転信号とによりゲート制御され、それぞれのCMOSトランスファーゲート501,502に入力される入力信号IN1,IN2を出力信号OUTとして出力する。例えば、選択信号SELの電圧レベルがハイの時には、一方のCMOSトランスファーゲート501がオンして、入力信号IN1が出力信号OUTとして出力される。逆に、選択信号SELの電圧レベルがロウの時には、他方のCMOSトランスファーゲート502がオンして、入力信号IN2が出力信号OUTとして出力される。このようにして、2つの入力信号IN1,IN2に対して、選択信号SELにより切り替えて、1つの出力信号OUTとして出力することができる。
図14では、1入力−2出力のスイッチの例を図示している。図14のスイッチは、回路規模は大きいが信号を駆動しやすいので、出口側のスイッチに向いている。このスイッチは、2つのCMOSインバータ601,602と、各CMOSインバータ601,602を電源電位に接続する2つのPMOSトランジスタ603,604と、接地電位に接続する2つのNMOSトランジスタ605,606と、1つのインバータ607とから構成される。各CMOSインバータ601,602は、PMOSトランジスタとNMOSトランジスタとが接続されて構成されている。
CMOSインバータ601,602は、それぞれ、選択信号SELとこれをインバータ607で反転した反転信号とによりゲート制御されるPMOSトランジスタ603,604およびNMOSトランジスタ605,606のオンおよびオフにより、それぞれのCMOSインバータ601,602のゲートに入力される入力信号INを出力信号OUT1,OUT2として出力する。例えば、選択信号SELの電圧レベルがロウの時には、一方のCMOSインバータ601において、これに接続されたPMOSトランジスタ603およびNMOSトランジスタ605がオンして、このCMOSインバータ601のゲートに入力される入力信号INが出力信号OUT1として出力される。逆に、選択信号SELの電圧レベルがハイの時には、他方のCMOSインバータ602において、これに接続されたPMOSトランジスタ604およびNMOSトランジスタ606がオンして、このCMOSインバータ602のゲートに入力される入力信号INが出力信号OUT2として出力される。
<12.トポロジを制御するレジスタの構成>
図15〜図18は、トポロジを制御するレジスタの構成の一例を説明するための図である。図15は、スピンユニット300内の全てのスイッチにレジスタを付加する例を示している。図16は、スピンユニット300毎にレジスタを付加する例を示している。図17は、スピンアレイ110の行毎にレジスタを付加する例を示している。図18は、スピンアレイ110の全体に1つのレジスタを付加する例を示している。
図15では、スピンユニット300において、上述した図7に示した、隣接または離れたスピンユニットを結合または分離するためのスイッチ410、スピンの値を隣接または離れたスピンユニットに配る部分に入れるスイッチ420のそれぞれに、レジスタを付加する例を図示している。なお、レジスタは、上述した図8に示した、スピンの値を隣接または離れたスピンユニットから入力される部分に入れるスイッチ430にも、同様に適用できるものである。
例えば、隣接または離れたスピンユニット300を結合または分離するためのスイッチ410に付加するレジスタTOPCには、例えば、動作開始直後の初期設定において、1ビットの1または0の値を入れてスイッチ410を切り替える。例えば、レジスタTOPCの値が1の場合には、一方のスピンユニット300−0の信号線CT0,CB0と他方のスピンユニット300−1(図示省略)に繋がる信号線CT1,CB1との間を接続して、2つのスピンユニット300を結合する。また、レジスタTOPCの値が0の場合には、一方のスピンユニット300−0の信号線CT0,CB0と他方のスピンユニット300−1に繋がる信号線CT1,CB1との間を非接続にして、2つのスピンユニット300を分離する。
また、スピンの値を隣接または離れたスピンユニット300に配る部分に入れる各スイッチ420に付加する各レジスタTOPU,TOPL,TOPR,TOPDでも同様に、例えば1ビットの1または0の値を入れて各スイッチ420を切り替える。例えば、レジスタTOPUの値が1の場合には、スイッチ420を一方に切り替えて(図15の状態)、メモリセルN0の値を上側のスピンユニット(NU01)に配る。また、レジスタTOPUの値が0の場合には、スイッチ420を他方に切り替えて、メモリセルN0の値を上側のスピンユニット(NU02)に配る。
他のレジスタTOPL,TOPR,TOPDについても同様であり、各レジスタTOPL,TOPR,TOPDの値が1の場合には、スイッチ420を一方に切り替えて(図15の状態)、メモリセルN0の値を、左側のスピンユニット(NL01)、右側のスピンユニット(NR01)、および、下側のスピンユニット(ND01)にそれぞれ配る。また、各レジスタTOPL,TOPR,TOPDの値が0の場合には、スイッチ420を他方に切り替えて、メモリセルN0の値を、左側のスピンユニット(NL02)、右側のスピンユニット(NR02)、および、下側のスピンユニット(ND02)にそれぞれ配る。
図15のように、スピンユニット300内の全てのスイッチ410,420にレジスタTOPC,TOPU,TOPL,TOPR,TOPDを付加する構成では、回路規模は大きくなるが、複雑なトポロジを実現することができる。
図16では、上述した図15と比較して、隣接または離れたスピンユニット300を結合または分離するためのスイッチ410、スピンの値を隣接または離れたスピンユニット300に配る部分に入れるスイッチ420に対して、1つのレジスタTOP1を付加する例を図示している。すなわち、図16の例は、スピンユニット300毎にレジスタTOP1が付加されている。このレジスタTOP1には、各スイッチ410,420を一括して切り替える1ビットの1または0の値を入れることが可能な領域を有する。そして、レジスタTOP1の値に基づいて、各スイッチ420,430を切り替えることで、上述した図15と同様の動作を行うことができる。図16のように、スピンユニット300毎にレジスタTOP1を付加する構成では、スピンユニット300単位での多少複雑なトポロジに対応することができる。
図17では、上述した図15および図16と比較して、スピンユニット300を2次元格子状に配置したスピンアレイ110において、このスピンアレイ110の行毎にレジスタTOPROW1,TOPROW2,TOPROW3,TOPROW4を付加する例を図示している。各レジスタTOPROW1,TOPROW2,TOPROW3,TOPROW4には、スピンアレイ110の各行の各スイッチを一括して切り替える1ビットの1または0の値を入れることが可能な領域を有する。そして、各レジスタTOPROW1,TOPROW2,TOPROW3,TOPROW4の値に基づいて、各行の各スイッチを切り替えることで、上述した図15および図16と同様の動作を行うことができる。図17のように、スピンアレイ110の行毎にレジスタTOPROW1,TOPROW2,TOPROW3,TOPROW4を付加する構成では、スピンアレイ110の行単位でトポロジを変更することができる。
図18では、上述した図15〜図17と比較して、スピンユニット300を2次元格子状に配置したスピンアレイ110の全体に、1つのレジスタTOPCHIPを付加する例を図示している。このレジスタTOPCHIPには、スピンアレイ110全体の各スイッチを一括して切り替える1ビットの1または0の値を入れることが可能な領域を有する。そして、レジスタTOPCHIPの値に基づいて、スピンアレイ110全体の各スイッチを切り替えることで、上述した図15〜図17と同様の動作を行うことができる。図18のように、スピンアレイ110全体にレジスタTOPCHIPを付加する構成では、スピンアレイ110全体でトポロジを切り替えることができる。
<13.相互作用計算回路の回路構成>
図19〜図21は、相互作用計算回路の回路構成と動作波形の一例を説明するための図である。すなわち、図19および図20の相互作用計算回路は、上述した図7および図8に示したスピンユニット300内の、排他的論理和回路310、スイッチ回路320、および多数決論理回路330を含めた相互作用計算回路340の論理回路を実現するための回路構成を示している。図19および図20では、1つのスピンユニット300内の相互作用計算回路340を示しているが、2つのスピンユニット300−0と300−1とを結合した場合には、図19の多数決計算回路における並列接続の電流パスは2倍になり、より多くのスピンの値に基づいて多数決論理が実現できる。図19は、多数決計算回路を示し、図20は図19の後段に付く電圧比較回路を示している。また、図21は、図19および図20の相互作用計算回路の動作波形を示している。
図19では、+1(または、0、上)のスピンの数を計算する+1計算回路710と、−1(または、1、下)のスピンの数を計算する−1計算回路730とに分けて、多数決を計算する部分の回路構成を示している。図19において、+1計算回路710は上側に図示し、−1計算回路730は下側に図示している。
+1計算回路710は、5つのNMOSトランジスタ711,712,713,714,715からなる並列接続の4組のブロックと、各ブロックを電源電位に接続するPMOSトランジスタ721と、接地電位に接続するNMOSトランジスタ722とから構成される。PMOSトランジスタ721およびNMOSトランジスタ722は、図21に示すクロック信号CLKIによりゲート制御される。クロック信号CLKIの電圧レベルがハイの時には、PMOSトランジスタ721がオフし、NMOSトランジスタ722がオンする。逆に、クロック信号CLKIの電圧レベルがロウの時には、PMOSトランジスタ721がオンし、NMOSトランジスタ722がオフする。
4組のブロックは、相互作用係数IUx(上側のスピン)、ILx(左側のスピン)、IRx(右側のスピン)、IDx(下側のスピン)に対応する各ブロックである。相互作用係数IUxに対応するブロックに着目すると、このブロックは、NUT、NUB、IU1T、IU1B、IU0でそれぞれゲート制御されるNMOSトランジスタ711,712,713,714,715から構成される。NMOSトランジスタ711,712,713,714,715は、それぞれ、対応するNUT、NUB、IU1T、IU1B、IU0の電圧レベルがハイの時にはオンし、逆に、ロウの時にはオフする。NMOSトランジスタ711と713とが直列に接続され、また、NMOSトランジスタ712と714とが直列に接続されている。この直列に接続されたNMOSトランジスタ711,713とNMOSトランジスタ712,714とが並列に接続されている。
この並列接続において、NMOSトランジスタ711,712は、共通線CTに接続されている。この共通線CTは、PMOSトランジスタ721を介して電源電位に接続されている。この共通線CTに、−1計算回路730との比較のための電圧が現れる。一方、並列接続において、NMOSトランジスタ713,714は共通にNMOSトランジスタ715に接続されている。このNMOSトランジスタ715は、NMOSトランジスタ722を介して接地電位に接続されている。この相互作用係数IUxに対応するブロックでは、電流が流れるパスを2つ構成している。
他の相互作用係数ILx,IRx,IDxに対応するブロックにおいても、同様である。ILxに対応するブロックは、NLT、NLB、IL1T、IL1B、IL0でそれぞれゲート制御されるNMOSトランジスタ711,712,713,714,715から構成される。IRxに対応するブロックは、NRT、NRB、IR1T、IR1B、IR0でそれぞれゲート制御されるNMOSトランジスタ711,712,713,714,715から構成される。IDxに対応するブロックは、NDT、NDB、ID1T、ID1B、ID0でそれぞれゲート制御されるNMOSトランジスタ711,712,713,714,715から構成される。
−1計算回路730も同様に、5つのNMOSトランジスタ731,732,733,734,735からなる並列接続の4組のブロックと、各ブロックを電源電位に接続するPMOSトランジスタ741と、接地電位に接続するNMOSトランジスタ742とから構成される。この−1計算回路730では、共通線CBに+1計算回路710との比較のための電圧が現れる。ただし、−1計算回路730が、+1計算回路710と異なる点は、例えば、相互作用係数IUxに対応するブロックにおいて、IU1Tでゲート制御されるNMOSトランジスタ733とIU1Bでゲート制御されるNMOSトランジスタ734とが入れ替えて接続されている。すなわち、NMOSトランジスタ731と734とが直列に接続され、また、NMOSトランジスタ732と733とが直列に接続されている。他の相互作用係数ILx,IRx,IDxに対応するブロックにおいても、同様である。
以上のように構成される+1計算回路710および−1計算回路730では、以下のような動作となる。ここでは、簡単のため、相互作用係数IUxに対応するブロックに着目し、NUから入力されたデータとIU0およびIU1に保持された相互作用係数を用いた計算を行う部分を説明する。
それぞれのNMOSトランジスタが接続されている共通線CTおよび共通線CBは、相互作用計算を行う前、つまり図21に示すクロック信号CLKIの電圧レベルがロウの期間に、ハイの電位にプリチャージされる。クロック信号CLKIはハイになると、クロック信号CLKIが入力されているNMOSトランジスタ722,742がオンになり、相互作用の値の計算が開始される。
NUから入力されたデータは、NUTとNUBの相補の信号に分割される。つまり、NUTはNUの値、NUBはNUの反転した値となる。また、相互作用係数のIU1も相補の信号IU1TとIU1Bとなる。IU0は、その相互作用係数を0にするか1にするかを示しており、IU0が0の場合には相互作用係数の値の影響がなくなるため、IU0が入力されたNMOSトランジスタ715,735がオフとなり、電流が流れず計算結果に影響を与えない。IU0が1の場合には、IU0が入力されたNMOSトランジスタ715,735がオンとなり、NUおよびIU1が関連する電流パスがオンとなる。
NUとIU1の値が等しい場合には、NUTとIU1Tが入力されたNMOSトランジスタ711,713が直列接続されたパス、またはNUBとIU1Bが入力されたNMOSトランジスタ712,714が直列接続されたパスを通して電流が流れ、共通線CTの電位が低下する。逆に、NUとIU1の値が異なる場合には、NUTとIU1Bが入力されたNMOSトランジスタ731,734が直列接続されたパス、またはNUBとIU1Tが入力されたNMOSトランジスタ732,733が直列接続されたパスを通して電流が流れ、共通線CBの電位が低下する。
このことは、他の相互作用係数ILx,IRx,IDxに対応するブロックにおいても、同様である。それぞれ、NL、NR、NDから入力されたデータとIL0、IR0、ID0およびIL1、IR1、ID1に保持された相互作用係数を用いた計算を行う。
つまり、入力されたデータと相互作用係数の値が等しい係数に関しては共通線CTの電位を下げる電流が流れ、入力されたデータと相互作用係数の値が異なる係数に関しては共通線CBの電位を下げる電流が流れる。つまり、図7および図8に示した排他的論理和の値が1になる係数に関しては共通線CTの電位を下げ、0になる係数に関しては共通線CBの電位を下げる電流が流れる。よって、共通線CTと共通線CBとの電圧を比較すれば、どちらが多いかの多数決を計算することができる。
上述した共通線CTと共通線CBとの間の電圧を比較する回路が、図20である。図20では、共通線CTと共通線CBとの間の電圧を比較する電圧比較回路の回路構成を示している。電圧比較回路750は、2つのCMOSインバータ751,752と、このCMOSインバータ751,752を接地電位に接続するNMOSトランジスタ753と、CMOSインバータ751,752の各ゲートを共通線CTまたは共通線CBに接続するNMOSトランジスタ754,755とから構成される。さらに、共通線CTまたは共通線CBを電源電位に接続するPMOSトランジスタ756,757と、CMOSインバータ751,752の各出力に接続されるインバータ758,759とから構成される。この電圧比較回路750の出力であるスピンの次状態の値NEWは、インバータ758から出力される。
CMOSインバータ751,752は、互いに、ゲートは出力に接続され、出力はゲートに接続されている。CMOSインバータ751,752の各ゲートが、電圧比較線CLTまたは電圧比較線CLBとなる。PMOSトランジスタ756,757およびNMOSトランジスタ754,755は、それぞれ、クロック信号CLKIによりゲート制御される。NMOSトランジスタ753は、クロック信号CLKIを反転した反転クロック信号CLKIBによりゲート制御される。
この電圧比較回路750は、図21に示すクロック信号CLKI/反転クロック信号CLKIBに同期して動作する。クロック信号CLKIの電圧レベルがハイの期間には、NMOSトランジスタ754,755がオンとなり、共通線CTおよび共通線CBは電圧比較線CLTおよび電圧比較線CLBに接続されている。クロック信号CLKIがロウとなるとともに反転クロック信号CLKIBがハイとなると、NMOSトランジスタ754,755がオフとなり、共通線CTと電圧比較線CLT、共通線CBと電圧比較線CLBが切り離されるとともに、反転クロック信号CLKIBが入力されたNMOSトランジスタ753がオンとなることで電圧比較線CLTと電圧比較線CLBとの電位の高低が比較される。この比較の結果、電圧比較線CLTが高い場合、つまり入力されたデータと係数の排他的論理和の結果が0になる係数が多い場合にはスピンの次状態の値NEWとして0が出力され、電圧比較線CLBが高い場合、つまり入力されたデータと係数の排他的論理和の結果が1になる係数が多い場合にはスピンの次状態の値NEWとして1が出力される。
以上の動作は、クロック信号CLKIの電圧レベルがハイまたはロウ/ 反転クロック信号CLKIBの電圧レベルがロウまたはハイとなる度に、繰り返して実行される。このように繰り返す毎に、共通線CTと共通線CBとにそれぞれ現れる電圧を比較し、増幅して出力することで、+1(または、0、上)または−1(または、1、下)の多い方をスピンの次状態として決定することができる。
+1と−1が同数の場合には、イジングマシンの性質上どちらになってもよい。回路上は、素子のばらつきがあるため、同数の場合はどちらかになる。
<14.より複雑なトポロジを作るための構成>
図22は、より複雑なトポロジを作るための構成の一例を説明するための図である。 図22では、スピンアレイ110内の複数のスピンユニット300として、行方向に4個、列方向に2個を2次元格子状に配置している例を図示している。各スピンユニット300を区別するために、説明上便宜的に、座標(行方向をN00、N01、N02、N03、列方向をN00、N10)を付与している。例えば、各スピンユニット300には、入口側のスイッチSWIと、出口側のスイッチSWOとが設けられている。これらのスイッチSWI,SWOは、上述した図7および図8に示したように、スピンの値を隣接または離れたスピンユニットから入力される部分に入れるスイッチSWI、および、スピンの値を隣接または離れたスピンユニットに配る部分に入れるスイッチSWOとして機能する。さらに、行方向の各スピンユニット300に対して、それぞれ4本の制御線801〜804が設けられている。
このような構成において、入口側のスイッチSWIおよび出口側のスイッチSWOをそれぞれ制御線801〜804で切り替えることで、複数のスピンユニット300の接続を切り替えることができる。例えば、第1の制御線801に着目すると、この第1の制御線においては、N00のスピンユニットの出口側のスイッチSWOとN01のスピンユニットの入口側のスイッチSWIとの間が非接続となっているので、N00のスピンユニットが単独で独立に動作する。また、N01のスピンユニットの出口側のスイッチSWOとN02のスピンユニットの入口側のスイッチSWIとの間、N02のスピンユニットの出口側のスイッチSWOとN03のスピンユニットの入口側のスイッチSWIとの間が接続されているので、N01のスピンユニット、N02のスピンユニット、および、N03のスピンユニットが、結合して動作する。
また、同様な考え方によりスイッチの切り替えを制御することで、第2〜第4の制御線802〜804においては以下の通りである。第2の制御線802により、N00のスピンユニットとN01のスピンユニットとが結合して動作し、N02のスピンユニットとN03のスピンユニットとは結合して動作する。また、第3の制御線803により、N00のスピンユニット、N01のスピンユニット、および、N02のスピンユニットが結合して動作し、N03のスピンユニットが単独で独立に動作する。また、第4の制御線804により、N00のスピンユニット、N01のスピンユニット、N02のスピンユニット、および、N03のスピンユニットの全てが結合して動作する。
また、N10,N11,N12,N13のスピンユニット300についても、第1〜第4の制御線811〜814により、同様に切り替えて動作させることができる。なお、図22では、制御線801〜804と制御線811〜814とを同一の信号で制御して同じ動作をさせているが、制御線801〜804と制御線811〜814とを異なる信号にすることで、行毎に異なる制御を行って動作させることも可能である。
図22のように、行方向に4本の制御線801〜804,811〜814を設け、各スピンユニット300の入口側のスイッチSWIと出口側のスイッチSWOを使って、接続を切り替えることで、自由なトポロジを実現することが可能となる。
なお、図22の例では、列方向については記載していないが、列方向においても行方向と同様に制御することが可能である。さらに、行方向および列方向の両方向で制御する構成にすることも可能である。
<15.イジングチップの動作手順>
図23は、イジングチップ100の動作手順の一例を説明するためのフローチャートである。図23では、イジングチップ100を組み込んだ情報処理装置200において、イジングチップ100をCPU210が制御して基底状態探索を行う手順を示している。
動作開始に先立って、対象問題を表現するイジングモデルについて、トポロジを設定するための値、スピンの値、相互作用係数、および、外部磁場係数を生成しておく。トポロジを設定するための値は、対象問題に基づいて、例えば、より複雑な問題の計算に対応することができるように、また、より高速に問題の解を得ることができるように、値を生成する。スピンの値の生成は、例えば乱数でランダムに生成する。
動作開始直後の初期設定として、ステップS901において、イジングチップ100のスイッチに付加されたトポロジを設定するレジスタに、動作開始に先立って生成しておいたトポロジを設定するための値を設定する。さらに、ステップS902,S903において、イジングチップ100のメモリセルに、動作作開始に先立って生成しておいたスピンの値、相互作用係数、および、外部磁場係数を入力する。これで、初期設定が完了する。
初期設定の完了後、ステップS904において、相互作用の実行が開始となる。相互作用の実行が開始になると、ステップS905において、相互作用の計算を実行する。この相互作用の計算では、相互作用アドレス線180を介してアドレスをイジングチップ100に入力し、相互作用クロック線181を介してクロックを生成してイジングチップ100内で相互作用を起こさせる。また、スピン用電源線141に供給される電圧をスケジューリングに沿って制御する。このような制御を所定の回数繰り返して(ステップS906)、所定の回数が完了した後に相互作用の実行が終了となる(ステップS907)。所定の回数は、例えば対象問題に応じて最適な回数を設定する。
相互作用の実行が終了となると、ステップS908において、イジングチップ100から相互作用の計算結果であるスピンの値を読み出して、対象問題を表現するイジングモデルの答えを得る。この対象問題を表現するイジングモデルの答えを得ることで、動作が終了となる。
<16.効果>
以上説明した本実施の形態によれば、隣接または離れたスピンユニット300間を接続または非接続にする複数のスイッチを有することで、イジングモデルの基底状態を求めるために基本構成単位となるスピンユニット300をアレイ状に配置したイジングチップ100において、このスピンユニット300間のトポロジを変更可能にする技術を提供することができる。より詳細には、以下の通りである。
(1)スピンユニット300間を接続または非接続にする複数のスイッチとして、スピンユニット300−0とスピンユニット300−1との間に配置されるスイッチ410を含む。これにより、スピンユニット300−0とスピンユニット300−1との間を結合または分割することができるので、イジングチップ100の設計後にトポロジを変更することが可能となる。また、スピンユニット300−0とスピンユニット300−1との間の結合または分割によって、イジングチップ100の設計後にスケールを変更することも可能となる。
(2)スピンユニット300間を接続または非接続にする複数のスイッチとして、出力する部分に配置されるスイッチ420を含む。これにより、スピンユニット300−0内のメモリセルN0の値をスピンユニット300−1へ出力することができるので、データの出口側でトポロジを制御することが可能となる。このことは、スピンユニット300−1内のメモリセルN1の値をスピンユニット300−0へ出力する場合、さらに他のスピンユニット300間においても、同様である。
(3)スピンユニット300間を接続または非接続にする複数のスイッチとして、入力される部分に配置されるスイッチ430を含む。これにより、スピンユニット300−1内のメモリセルN1の値をスピンユニット300−0へ入力することができるので、データの入口側でトポロジを制御することが可能となる。このことは、スピンユニット300−0内のメモリセルN0の値をスピンユニット300−1へ入力する場合、さらに他のスピンユニット300間においても、同様である。
(4)スピンユニット300内のスイッチ410,420,430は、各スイッチの切り替えを制御するための値を格納するレジスタがそれぞれ付加されている。これにより、各スイッチ毎に切り替えができるので、複雑なトポロジを実現することが可能となる。
(5)スピンユニット300内のスイッチ410,420,430は、各スイッチの切り替えを制御するための値を格納するレジスタが共通に1つ付加されている。これにより、スピンユニット300毎に切り替えができるので、スピンユニット300単位での多少複雑なトポロジに対応することが可能となる。
(6)スピンユニット300内のスイッチ410,420,430は、各スイッチの切り替えを制御するための値を格納するレジスタがスピンアレイ110の行毎に付加されている。これにより、スピンアレイ110の行単位でトポロジを変更することが可能となる。
(7)スピンユニット300内のスイッチ410,420,430は、各スイッチの切り替えを制御するための値を格納するレジスタがスピンアレイ110の全体で1つ付加されている。これにより、スピンアレイ110全体でトポロジを切り替えることが可能となる。
(8)スピンユニット300−0からスピンユニット300−1へ出力する部分に配置されるスイッチ420は、1つの入力に対して複数の出力が可能なスイッチである。これにより、スイッチ420が切り替えられることで、1つのスピンユニット300−0内のメモリセルN0の値を複数のスピンユニット300−1へ出力することができるので、データの出口側でトポロジをより詳細に制御することが可能となる。また、このスイッチ420は、CMOSインバータを用いて構成することで、信号を駆動しやすくすることが可能となる。
(9)スピンユニット300−0へスピンユニット300−1から入力される部分に配置されるスイッチ430は、複数の入力に対して1つの出力が可能なスイッチである。これにより、スイッチ430が切り替えられることで、複数のスピンユニット300−1内のメモリセルN1の値を1つのスピンユニット300−0へ入力することができるので、データの入口側でトポロジをより詳細に制御することが可能となる。また、このスイッチ430は、CMOSトランスファーゲートを用いて構成することで、回路規模を小さくすることが可能となる。
(10)相互作用計算回路340は、+1のスピンの数を計算する+1計算回路710と、−1のスピンの数を計算する−1計算回路730と、+1計算回路710の共通線CTと−1計算回路730の共通線CBとの間の電圧を比較する電圧比較回路750と、有する。これにより、各隣接または離れたスピンの値、相互作用係数および外部磁場係数に基づいて、+1のスピンの数に対応する共通線CTと、−1のスピンの数に対応する共通線CBとの間の電圧を比較して、高い方の電圧に対応する値をスピンの次状態を決定する値として出力することができる。すなわち、各隣接または離れたスピンの値、相互作用係数および外部磁場係数において、2値の多数決論理によってスピンの次状態を決定することができる。
(11)スピンアレイ110内のスピンユニット300は、入口側のスイッチSWIと、出口側のスイッチSWOとを含む。これにより、制御線によりスイッチSWIおよびスイッチSWOを切り替えることで、複数のスピンユニット300の接続を切り替えることができる。特に、スピンアレイ110の行方向、列方向、またはその両方向で切り替えを制御することで、自由なトポロジを実現することが可能となる。
(12)情報処理装置200において、イジングチップ100の制御プログラムは、スイッチに付加されたレジスタにトポロジを設定するための値を書き込み、さらに、スピンアレイ110内のスピンユニット300へ、スピンの値、相互作用係数、および外部磁場係数を書き込む。そして、スピンユニット300の基底状態探索処理を所定の回数繰り返して実行することで、基底状態に達したスピンユニット300のスピンの値を読み出して対象問題の解を得ることができる。
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
例えば、上記した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記した実施の形態では、物理学の世界で代表的なイジングモデルを例にあげて説明したが、本発明はこれに限定されるものではなく、種々の物理現象や社会現象を表現することができる相互作用モデル全般に適用できるものである。
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,300−0,300−1 スピンユニット
310 排他的論理和回路
320 スイッチ回路
330 多数決論理回路
340 相互作用計算回路
410 スイッチ
420,420−0,420−1 スイッチ
430,430−0,430−1 スイッチ
710 +1計算回路
730 −1計算回路
750 電圧比較回路
N0,IU00,IU01,IL00,IL01,IR00,IR01,ID00,ID01,N1,IU10,IU11,IL10,IL11,IR10,IR11,ID10,ID11 メモリセル

Claims (15)

  1. 相互作用モデルの1つのノードの状態を示す値を記憶する第1メモリセルと、前記相互作用モデルの相互作用係数を記憶する第2メモリセルと、前記相互作用係数に基づいて、前記ノードの状態を示す値を更新する計算回路と、をそれぞれ含む複数のユニットと、
    前記複数のユニット間を接続または非接続にする複数のスイッチと、
    を有する、半導体装置。
  2. 請求項1に記載の半導体装置において、
    前記複数のスイッチは、前記複数のユニットのなかの第1ユニットの計算回路と第2ユニットの計算回路とを結合または分割する第1スイッチを含む、半導体装置。
  3. 請求項1に記載の半導体装置において、
    前記複数のスイッチは、前記複数のユニットのなかの第1ユニット内の前記第1メモリセルの値を第2ユニットに対して出力するかを切り替える第2スイッチを含む、半導体装置。
  4. 請求項1に記載の半導体装置において、
    前記複数のスイッチは、前記複数のユニットのなかの第1ユニットに対して第2ユニット内の前記第1メモリセルの値を出力するかを切り替える第3スイッチを含む、半導体装置。
  5. 請求項1に記載の半導体装置において、
    前記複数のスイッチは、各スイッチの切り替えを制御するための値を格納するレジスタが付加され、
    前記複数のスイッチは、前記複数のユニット内に設けられ、
    前記レジスタは、前記複数のユニット内の前記複数のスイッチのそれぞれに設けられている、半導体装置。
  6. 請求項1に記載の半導体装置において、
    前記複数のスイッチは、各スイッチの切り替えを制御するための値を格納するレジスタが付加され、
    前記複数のスイッチは、前記複数のユニット内に設けられ、
    前記レジスタは、前記複数のユニット内の前記複数のスイッチに共通に1つ設けられている、半導体装置。
  7. 請求項1に記載の半導体装置において、
    前記複数のスイッチは、各スイッチの切り替えを制御するための値を格納するレジスタが付加され、
    前記レジスタは、前記複数のユニットが2次元格子状に配置されたアレイの行毎に設けられている、半導体装置。
  8. 請求項1に記載の半導体装置において、
    前記複数のスイッチは、各スイッチの切り替えを制御するための値を格納するレジスタが付加され、
    前記レジスタは、前記複数のユニットが2次元格子状に配置されたアレイの全体で1つ設けられている、半導体装置。
  9. 請求項3に記載の半導体装置において、
    前記第2スイッチは、1つの入力を、複数の出力の何れに対して出力するかを切り替え可能なスイッチであり、1つの前記第1ユニット内の前記第1メモリセルの値を、複数の前記第2ユニットの何れに対して出力するかを切り替える、半導体装置。
  10. 請求項4に記載の半導体装置において、
    前記第3スイッチは、1つの出力に対して、複数の入力からの何れを出力するかを切り替え可能なスイッチであり、1つの前記第1ユニットに対して、複数の前記第2ユニット内の前記第1メモリセルの値の何れを出力するかを切り替える、半導体装置。
  11. 請求項1に記載の半導体装置において、
    前記計算回路は、
    前記ノードの状態を示す値及び前記相互作用係数に基づいてそれぞれゲート制御される複数のMOSトランジスタによる並列接続の複数の電流パスからなり、第1の値のノードの数を計算する第1計算回路と、
    前記ノードの状態を示す値及び前記相互作用係数に基づいてそれぞれゲート制御される複数のMOSトランジスタによる並列接続の複数の電流パスからなり、前記第1の値とは異なる第2の値のノードの数を計算する第2計算回路と、
    前記第1計算回路の結果が現れる第1共通線の電圧と前記第2計算回路の結果が現れる第2共通線の電圧とを一対のCMOSインバータにより比較して、高い方の電圧に対応する前記第1の値または前記第2の値を前記ノードの状態を更新する値として出力する電圧比較回路と、
    を有する、半導体装置。
  12. 請求項1に記載の半導体装置において、
    前記複数のスイッチは、前記複数のユニットのなかの第1ユニット内の前記第1メモリセルの値を第2ユニットに対して出力するかを切り替える第2スイッチと、前記第1ユニットに対して前記第2ユニット内の前記第1メモリセルの値を出力するかを切り替える第3スイッチと、を含み、
    前記複数のユニットのそれぞれは、前記第2スイッチおよび前記第3スイッチを含み、各スイッチの切り替えを制御する制御線により前記第2スイッチおよび前記第3スイッチが切り替えられることで、前記複数のユニットの接続が切り替えられる、半導体装置。
  13. CPU、RAM、HDD、およびアクセラレータとして動作可能な半導体装置を、システムバスを介して接続した情報処理装置であって、
    前記半導体装置は、
    相互作用モデルの1つのノードの状態を示す値を記憶する第1メモリセルと、前記相互作用モデルの相互作用係数を記憶する第2メモリセルと、前記相互作用係数に基づいて、前記ノードの状態を示す値を更新する計算回路と、をそれぞれ含む複数のユニットと、
    前記複数のユニット間を接続または非接続にする複数のスイッチと、
    前記複数のユニットのメモリセルをリード/ライトするI/Oインタフェースと、
    前記複数のユニットに対して、相互作用を許可する信号を供給する相互作用制御インタフェースと、を有し、
    前記CPUに、
    前記複数のスイッチに付加されたレジスタに、対象問題を表現する前記相互作用モデルのトポロジを設定するための値を書き込む手順と、
    前記相互作用モデルの各ノードを割り当てた前記半導体装置上の前記複数のユニットへ、前記ノードの状態を示す値及び前記相互作用係数を書き込む手順と、
    前記複数のユニットの基底状態探索処理を所定の回数繰り返して実行する手順と、
    基底状態に達した前記複数のユニットのノードの状態を示す値を読み出して前記対象問題の解を得る手順と、
    を実行させるための制御プログラムを有する、情報処理装置。
  14. 請求項13に記載の情報処理装置において、
    前記複数のスイッチは、前記複数のユニットのなかの第1ユニットの計算回路と第2ユニットの計算回路とを結合または分割する第1スイッチを含む、情報処理装置。
  15. 請求項13に記載の情報処理装置において、
    前記複数のスイッチは、前記複数のユニットのなかの第1ユニット内の前記第1メモリセルの値を第2ユニットに対して出力するかを切り替える第2スイッチ、または、前記第1ユニットに対して前記第2ユニット内の前記第1メモリセルの値を出力するかを切り替える第3スイッチ、を含む、情報処理装置。
JP2014176234A 2014-08-29 2014-08-29 半導体装置および情報処理装置 Expired - Fee Related JP6021864B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014176234A JP6021864B2 (ja) 2014-08-29 2014-08-29 半導体装置および情報処理装置
US14/643,567 US9823882B2 (en) 2014-08-29 2015-03-10 Semiconductor device and information processing device

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2016051325A JP2016051325A (ja) 2016-04-11
JP6021864B2 true JP6021864B2 (ja) 2016-11-09

Family

ID=55402546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014176234A Expired - Fee Related JP6021864B2 (ja) 2014-08-29 2014-08-29 半導体装置および情報処理装置

Country Status (2)

Country Link
US (1) US9823882B2 (ja)
JP (1) JP6021864B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9608624B2 (en) * 2014-03-06 2017-03-28 Mediatek Inc. Apparatus for performing signal driving with aid of metal oxide semiconductor field effect transistor
WO2016006071A1 (ja) * 2014-07-09 2016-01-14 株式会社日立製作所 半導体装置及び情報処理システム
JP5864684B1 (ja) * 2014-08-29 2016-02-17 株式会社日立製作所 半導体装置
JP6511413B2 (ja) * 2016-06-17 2019-05-15 株式会社日立製作所 情報処理装置及び計算機システム
JP6841722B2 (ja) * 2017-06-06 2021-03-10 株式会社日立製作所 情報処理装置
JP6914872B2 (ja) * 2018-02-27 2021-08-04 株式会社日立製作所 情報処理装置および半導体集積回路装置
US11182157B2 (en) * 2018-05-08 2021-11-23 Hitachi, Ltd. Information processing device, arithmetic device, and information processing method
JP7152343B2 (ja) * 2019-03-26 2022-10-12 株式会社日立製作所 半導体装置
WO2022053149A1 (en) 2020-09-11 2022-03-17 Hitachi, Ltd. System and method for implementing a distributed ising machine

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7145898B1 (en) * 1996-11-18 2006-12-05 Mci Communications Corporation System, method and article of manufacture for selecting a gateway of a hybrid communication system architecture
EP0895195A1 (en) * 1997-01-24 1999-02-03 Sony Corporation Pattern data generator, pattern data generating method and its medium
US6601229B1 (en) * 2000-03-09 2003-07-29 International Business Machines Corporation Client/server behavioral modeling and testcase development using VHDL for improved logic verification
US7711533B2 (en) * 2000-12-12 2010-05-04 Uri Wilensky Distributed agent network using object based parallel modeling language to dynamically model agent activities
US7085700B2 (en) * 2001-06-20 2006-08-01 Cadence Design Systems, Inc. Method for debugging of analog and mixed-signal behavioral models during simulation
US7096174B2 (en) * 2001-07-17 2006-08-22 Carnegie Mellon University Systems, methods and computer program products for creating hierarchical equivalent circuit models
CA2355974C (en) * 2001-08-24 2004-07-13 Wayne Biao Liu Space reduction in compositional state systems
US20060138397A1 (en) * 2002-12-16 2006-06-29 Mattis Daniel C Manipulation of conductive and magnetic phases in an electron trapping semiconducting
US7809540B2 (en) * 2004-02-24 2010-10-05 Aspen Technology, Inc. Computer method and system for predicting physical properties using a conceptual segment-based ionic activity coefficient model
WO2006007443A1 (en) * 2004-06-16 2006-01-19 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Portland State University System and method for simulating global product development
US7533068B2 (en) * 2004-12-23 2009-05-12 D-Wave Systems, Inc. Analog processor comprising quantum devices
US20080313582A1 (en) * 2007-06-14 2008-12-18 Atmel Corporation Accurate Transistor Modeling
US20090055150A1 (en) * 2007-08-25 2009-02-26 Quantum Leap Research, Inc. Scalable, computationally efficient and rapid simulation suited to decision support, analysis and planning
US7772880B2 (en) * 2007-09-12 2010-08-10 Neal Solomon Reprogrammable three dimensional intelligent system on a chip
US8365141B1 (en) * 2008-12-23 2013-01-29 The Mathworks, Inc. Aliases within a graphical model of a design
US9811794B2 (en) * 2009-02-11 2017-11-07 Johnathan Mun Qualitative and quantitative modeling of enterprise risk management and risk registers
US20110313736A1 (en) * 2010-06-18 2011-12-22 Bioproduction Group, a California Corporation Method and Algorithm for Modeling and Simulating A Discrete-Event Dynamic System
JP5354233B2 (ja) 2011-03-01 2013-11-27 大学共同利用機関法人情報・システム研究機構 イジングモデルの量子計算装置及びイジングモデルの量子計算方法
JP5921856B2 (ja) * 2011-11-28 2016-05-24 株式会社日立製作所 量子コンピュータシステム、量子コンピュータシステムの制御方法及びプログラム
GB201200498D0 (en) * 2012-01-13 2012-02-22 Optimized Systems And Solutions Ltd Simulation modelling
WO2013119906A1 (en) * 2012-02-09 2013-08-15 Saudi Arabian Oil Company Multi-level solution of large-scale linear systems in simulation of porous media in giant reservoirs
JP6143325B2 (ja) * 2013-01-11 2017-06-07 大学共同利用機関法人情報・システム研究機構 イジングモデルの量子計算装置及びイジングモデルの量子計算方法
US9152746B2 (en) * 2013-03-26 2015-10-06 Microsoft Technology Licensing, Llc Quantum annealing simulator
US9633715B2 (en) * 2013-05-31 2017-04-25 Hitachi, Ltd. Semiconductor device capable of attaining ground state in an ising model
US10248675B2 (en) * 2013-10-16 2019-04-02 University Of Tennessee Research Foundation Method and apparatus for providing real-time monitoring of an artifical neural network
JP6177993B2 (ja) * 2014-03-04 2017-08-09 株式会社日立製作所 半導体装置および情報処理装置
JP6445246B2 (ja) * 2014-03-27 2018-12-26 株式会社日立製作所 情報処理装置及び情報処理方法
WO2015156126A1 (ja) * 2014-04-11 2015-10-15 大学共同利用機関法人情報・システム研究機構 イジングモデルの量子計算装置、イジングモデルの量子並列計算装置及びイジングモデルの量子計算方法
JP5865457B1 (ja) * 2014-08-29 2016-02-17 株式会社日立製作所 情報処理システム及び管理装置
JP5894645B1 (ja) * 2014-08-29 2016-03-30 株式会社日立製作所 半導体装置及びその品質管理方法
JP5922203B2 (ja) * 2014-08-29 2016-05-24 株式会社日立製作所 半導体装置
JP5922202B2 (ja) * 2014-08-29 2016-05-24 株式会社日立製作所 半導体装置、画像セグメンテーション方法、および画像処理装置
JP5864684B1 (ja) * 2014-08-29 2016-02-17 株式会社日立製作所 半導体装置
JP5865456B1 (ja) * 2014-08-29 2016-02-17 株式会社日立製作所 半導体装置
JP5851570B1 (ja) * 2014-08-29 2016-02-03 株式会社日立製作所 半導体装置
JP5903471B2 (ja) * 2014-08-29 2016-04-13 株式会社日立製作所 半導体装置および情報処理装置
JP5901712B2 (ja) * 2014-08-29 2016-04-13 株式会社日立製作所 半導体装置および情報処理装置
US20160293048A1 (en) * 2015-03-31 2016-10-06 Cae Inc. Simulator for generating and optimizing simulation data adapted for interacting with a portable computing device

Also Published As

Publication number Publication date
US20160062704A1 (en) 2016-03-03
US9823882B2 (en) 2017-11-21
JP2016051325A (ja) 2016-04-11

Similar Documents

Publication Publication Date Title
JP6021864B2 (ja) 半導体装置および情報処理装置
JP5901712B2 (ja) 半導体装置および情報処理装置
JP7173709B2 (ja) ニューラルネットワーク回路
JP5865456B1 (ja) 半導体装置
JP5922203B2 (ja) 半導体装置
JP5864684B1 (ja) 半導体装置
WO2017037902A1 (ja) 半導体システムおよび計算方法
JP6295325B2 (ja) 半導体装置及び情報処理システム
JP6177993B2 (ja) 半導体装置および情報処理装置
JP5894645B1 (ja) 半導体装置及びその品質管理方法
JP5851570B1 (ja) 半導体装置
JP5903471B2 (ja) 半導体装置および情報処理装置
JP6207583B2 (ja) 半導体装置および情報処理方法
Kojima et al. Body bias optimization for variable pipelined CGRA
JP6294971B2 (ja) 半導体集積回路装置
Müller et al. A new high-speed real-time video processing platform
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
Bai et al. A bit-serial reconfigurable VLSI based on a multiple-valued X-net data transfer scheme
JP2020160755A (ja) 半導体装置
Jrad Design and optimization of Computational SRAM architectures dedicated to highly data-centric applications
Abisoye et al. Field Programmable Gate Array (FPGA): A Tool for Improving Parallel Computations

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160810

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161004

R150 Certificate of patent or registration of utility model

Ref document number: 6021864

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees