JP2004118512A - 半導体演算装置 - Google Patents
半導体演算装置 Download PDFInfo
- Publication number
- JP2004118512A JP2004118512A JP2002280775A JP2002280775A JP2004118512A JP 2004118512 A JP2004118512 A JP 2004118512A JP 2002280775 A JP2002280775 A JP 2002280775A JP 2002280775 A JP2002280775 A JP 2002280775A JP 2004118512 A JP2004118512 A JP 2004118512A
- Authority
- JP
- Japan
- Prior art keywords
- state
- logical
- arithmetic
- logical value
- 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.)
- Granted
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B82—NANOTECHNOLOGY
- B82Y—SPECIFIC USES OR APPLICATIONS OF NANOSTRUCTURES; MEASUREMENT OR ANALYSIS OF NANOSTRUCTURES; MANUFACTURE OR TREATMENT OF NANOSTRUCTURES
- B82Y10/00—Nanotechnology for information processing, storage or transmission, e.g. quantum computing or single electron logic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Chemical & Material Sciences (AREA)
- General Physics & Mathematics (AREA)
- Nanotechnology (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Crystallography & Structural Chemistry (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
【解決手段】Nビットで表現可能なすべての論理値の状態について演算を行う際、論理値の状態確率が値を有するか否かを示した1ビットの確率フラグを用いて、複数のプロセッサエレメント内のロジック部にて命令に応じた論理演算を互いに異なる論理値の状態について並列して行うようにして、論理値の状態確率についての複素積和演算に相当する演算を、確率フラグを用いた簡単な論理演算により行い、演算機能を損なうことなく、演算を高速で実行することができるようにする。
【選択図】 図4
Description
【発明の属する技術分野】
本発明は、半導体演算装置に関し、特に、Nビット(Nは自然数)で表現可能な2N個のすべての論理値について演算を並列に実行する半導体演算装置に用いて好適なものである。
【0002】
【従来の技術】
従来の計算機等が備える半導体演算装置(例えばCPU)は、1つのデータ値(論理値)を用いて演算処理や条件分岐処理等を逐次実行する従来の演算方式を用いて演算を行っていた。この従来から利用されている演算方式とは異なり、量子力学の原理に基づく新しい演算方式を用いて演算を行う量子コンピュータが提案されている。
【0003】
量子コンピュータは、キュービット(量子ビット)という単位で構成された量子力学に基づく状態の重ね合わせを利用し、量子力学的な操作を当該状態に施すことにより各状態に対する演算を並列に実行する。したがって、量子コンピュータは、理論上、すべての可能な状態(値として存在可能なデータ値)について、1回の演算を行うだけですべての可能な状態の演算結果を同時に、かつ瞬時に得ることができる。
【0004】
上記量子コンピュータは、量子力学に基づく状態の重ね合わせを利用するので、核磁気共鳴、マイクロ波、レーザー等を用いた実際に量子力学に基づく現象が観測可能な物理系で実現されてきた。最近では、量子コンピュータにおいて、27個の状態が同時に存在する7キュービットまで演算可能な実際の物理系が提案されている。
【0005】
【発明が解決しようとする課題】
しかしながら、従来の量子コンピュータは、量子力学に基づく現象が観測可能な実際の物理系を用いているので、装置自体が非常に大規模になり実用的ではなかった。さらに、量子コンピュータは、状態が互いに相関を持ちながら変化するようにして演算を行う必要があり、キュービット数の増加に伴い指数関数的に増加する位相状態を実際の物理系を用いた1つの装置に存在させて保存することが困難になってくる。
また、量子コンピュータは量子的な物理現象を利用しており、古典的な古典電磁気学に基づく物理現象を利用した集積回路を用いて、量子コンピュータをそのまま実現することは困難である。
【0006】
そこで、本発明者らは、量子力学に基づいて重ね合わされたそれぞれの状態(論理値)に対応する複数のプロセッサエレメント(演算回路)を設け、それらを互いに通信可能なように接続することにより、集積回路を用いて量子コンピュータの技術を実現する特願2001−279286に記載の並列処理プロセッサを提案した。この並列処理プロセッサは、上記複数のプロセッサエレメントが対応する状態の状態確率について演算を同時に行い、得られた演算結果を記憶するように複数のプロセッサエレメントを並列動作させることで、量子コンピュータと同様の演算機能を実現する。
【0007】
図12は、本発明者らが提案した並列処理プロセッサが備えるプロセッサエレメントの構成の概要を示すブロック図である。図12においては、演算対象として注目するターゲットキュービットの値のみが異なり、他のキュービットの値が等しい第1の状態(ターゲットキュービットの値“0”)および第2の状態(ターゲットキュービットの値“1”)にそれぞれ対応するプロセッサエレメント121、126を一例として示している。
【0008】
ここで、量子コンピュータによる量子計算において、データに該当する状態確率は位相情報を含み複素数を用いて表され、量子計算にて行われる演算はユニタリ変換である。すなわち、量子計算では複素数で表された状態確率に対してユニタリ行列を用いた行列演算を施すので、図12に示すように1つのプロセッサエレメントは、2つの乗算器と1つの加算器とを有し、複素数の積和演算を行う。
【0009】
ユニタリ行列の各成分の係数値をU1、U2,U3、U4とすると、図12に示したプロセッサエレメント121では、第1の状態の状態確率(|0>)と係数値(U1)との乗算、および第2の状態の状態確率(|1>)と係数値(U2)との乗算が乗算器122、123でそれぞれ行われる。さらに、乗算器122、123の出力が加算器124で加算され、その演算結果が演算後の第1の状態の状態確率(|0>’)としてレジスタ125に記憶される。
【0010】
同様に、プロセッサエレメント126では、第1の状態の状態確率(|0>)と係数値(U3)との乗算、および第2の状態の状態確率(|1>)と係数値(U4)との乗算が乗算器127、128で行われ、乗算器127、128の出力が加算器129で加算された後、演算後の第2の状態の状態確率(|1>’)としてレジスタ130に記憶される。
【0011】
しかしながら、上記図12に示したプロセッサエレメント121、126を用いて構成した並列処理プロセッサにおいて、複素数で表される状態確率は、実数部および虚数部がそれぞれ複数のビット(例えば、それぞれ8ビット)を用いて示される。したがって、上記並列処理プロセッサは、複数のビットを用いて表された状態確率について複素積和演算を行うために演算処理に多大な時間を要してしまい、演算を高速に実行することができないという問題があった。
【0012】
また、上記並列処理プロセッサは、複数のビット演算に対応した2つの乗算器と1つの加算器とをそれぞれのプロセッサエレメントに備える必要があり、1つのプロセッサエレメントを構成するための回路面積(回路規模)が大きく、またプロセッサエレメントの数は、キュービット数の増加にともない指数関数的に増加するので、演算規模を大きくすることが容易ではないという問題があった。
【0013】
本発明は、このような問題に鑑みてなされたものであり、量子コンピュータと同様の演算機能を有しながらも、演算を高速で実行することができるようにすることを目的とする。また、本発明は、演算の規模を容易に大きくできるとともに、演算を高速で実行することができるようにすることを第2の目的とする。
【0014】
【課題を解決するための手段】
本発明の半導体演算装置は、Nビット(Nは自然数)で表現可能なすべての論理値の状態について演算を並列して行い、それぞれの演算結果を保持する半導体演算装置であって、所定の論理値の状態について演算を行う際、供給される論理値の状態を示すフラグを用いて論理演算を行い、演算結果を保持する複数の演算回路を備え、複数の演算回路は、互いに異なる論理値の状態について演算を並列して行うことを特徴とする。
【0015】
本発明の半導体演算装置の他の特徴とするところは、論理値の状態を示すフラグは、論理値の状態を示す確率振幅に応じたフラグであることを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、論理値の状態を示すフラグは、論理値の状態を示す確率振幅が0とは異なる値であるか否かを1ビットで示すことを特徴とする。
【0016】
本発明の半導体演算装置のその他の特徴とするところは、演算回路にそれぞれ対応して設けられた、複数の論理値の状態を記憶する複数の記憶回路をさらに備え、複数の記憶回路が記憶する複数の論理値の状態は、記憶回路毎に互いに異なり、演算回路は、対応する記憶回路に記憶された複数の論理値の状態について演算可能であることを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、記憶回路は、論理値の状態を示すフラグを記憶することを特徴とする。
【0017】
本発明の半導体演算装置のその他の特徴とするところは、複数の演算回路は、ネットワークを介して互いに通信可能なように接続されていることを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、ネットワークは、論理値のハミング距離が1である論理値の状態について演算を行う演算回路を少なくとも互いに通信可能なように接続することを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、ネットワークは、論理値のハミング距離が1である論理値の状態について演算を行う演算回路をハイパーキューブ状に互いに通信可能なように接続することを特徴とする。
【0018】
本発明の半導体演算装置のその他の特徴とするところは、論理値の状態についての演算結果に基づいて、観測命令操作により得られる解を記憶するレジスタをさらに備えることを特徴とする。
【0019】
本発明の半導体演算装置のその他の特徴とするところは、演算回路は、複数の論理値の状態について演算を行う際、演算における互いに異なる処理を順次同時に行うことを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、演算回路は、所定の論理値の状態を示すフラグと、所定の論理値とは演算対象ビットの値だけが異なる論理値の状態を示すフラグとを用いた論理演算を行うことを特徴とする。
【0020】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。
本発明の実施形態による半導体演算装置を適用した並列処理プロセッサは、集積回路を用いて量子コンピュータの技術を実現するものであり、量子計算を行うための公知の量子アルゴリズムと同様にして演算が実行される。
【0021】
まず、量子アルゴリズムについて説明する。図1は量子アルゴリズムの流れを説明するための図であり、ショア(Shor)のアルゴリズムを初めとする量子アルゴリズムは、一般に図1に示すように4つのステージ(段階)で構成される。なお、図1は8キュービットの場合を一例として示しており、横方向に伸びる実線は各キュービットQ1〜Q8にそれぞれ対応する。
以下、各ステージについて説明する。
【0022】
第1のステージ(Stage1)では、ウォルシュ・アダマール変換(Walsh−Hadamard Transformation:以下、「W−H変換」と称す。)S1−1、S1−2、S1−3、S1−4、…を用いて、所定の状態に確率を分配する。これにより、第1のステージでは、所定の状態に等しい確率を割り当て、量子力学に基づく状態の重ね合わせの初期状態を生成する。
【0023】
第2のステージ(Stage2)では、ノット(NOT)変換(制御NOT操作)S2−1、S2−2、S2−3、…を用いて、上記第1のステージにて割り当てられた確率を状態間で交換する。この第2ステージにおける確率の交換操作は、CPU等を備えた従来の計算機における加算演算や乗算演算に相当する。
【0024】
なお、図1において、例えばノット変換S2−1は、制御キュービットがQ3、ターゲットキュービットがQ8であることを示している。このとき、制御キュービットQ3の値が“1”であれば、ターゲットキュービットQ8の値のみが異なり、他のキュービットの値が等しい状態間にて確率の交換をそれぞれ行う。一方、制御キュービットQ3の値が“0”であれば、確率の交換は行わずに値を保持する。ノット変換S2−2、S2−3、…においても同様である。
【0025】
第3のステージ(Stage3)では、W−H変換S3−1、S3−3、…およびフェイズシフト変換S3−2、S3−4、…による量子フーリエ変換(Quantum Fourier Transformation:以下、「QFT」と称す。)等を用いて干渉により解を一点に収束させる。さらに、第4のステージ(Stage4)では、観測S4を行うことで解を求める。
【0026】
なお、上述したノット変換S2−1と同様に、例えばフェイズシフト変換S3−2は、制御キュービットがQ8、ターゲットキュービットがQ7であることを示している。フェイズシフト変換S3−2は、制御キュービットQ8の値が“1”であれば、ターゲットキュービットQ7に関して位相回転を行い、制御キュービットQ8の値が“0”であれば値を保持する。フェイズシフト変換S3−4、…においても同様である。
【0027】
本発明者らは、上記図1に示したような量子アルゴリズムにおいて、W−H変換により所定の状態に確率を分配する第1のステージ、および制御キュービットの値等に応じて状態間での確率の交換を行う第2のステージが終了するまでは、各状態の状態確率(確率振幅)が、0あるいは値p(0<p≦1)の何れか一方の値のみであることを見出した。すなわち、量子アルゴリズムにおける第1および第2のステージにおいては、複数のビットを用いて示される状態の状態確率の値そのものを用いなくとも、値を有するか否か(値が0であるかpであるか)を示せば、情報量を損失することなく(情報量は変わらずに)等価な演算を行うことが可能であることを見出した。
【0028】
そこで、本実施形態における並列処理プロセッサは、N(Nは自然数)ビットで表現可能なすべての論理値の状態について各状態の状態確率が値を有するか否かを1ビットで示す確率フラグを用い、さらにユニタリ変換に相当する演算を論理(ロジック)演算で実行する。これにより、本実施形態における並列処理プロセッサは、プロセッサエレメントにおける構成を単純化しながらも、簡単な構成で量子コンピュータと同等の演算機能を実現するようにしたものであり、プロセッサエレメントに要する回路面積を低減して、演算の並列度および単位ゲート当たりの演算量を向上させることが可能になる。
【0029】
図2は、本実施形態における並列処理プロセッサ1の一構成例を示すブロック図である。
図2において、制御部2は、命令管理部3およびパイプライン生成部4を有し、複数のプロセッサエレメント8−n(nは添え字であり、n=1、2、3、…)等の並列処理プロセッサ1内の各機能部を制御する。インタフェース7は、並列処理プロセッサ1と外部に接続された外部機器(外部回路)等との間で命令やデータの授受等を行うためのものである。
【0030】
命令管理部3は、インタフェース7を介して外部機器から供給される命令をパイプライン生成部4に出力したり、後述する観測命令操作により得られた解をインタフェース7を介して外部機器に出力したりする。命令管理部3は、外部機器から供給される命令を一時的に記憶するための命令キャッシュ5、および観測命令操作により得られた解を記憶するためのアンサーレジスタ6を有する。
【0031】
パイプライン生成部4は、命令管理部3から供給される命令に基づいて、各プロセッサエレメント8−nに制御指示をそれぞれ出力し、複数のプロセッサエレメント8−nがそれぞれパイプライン動作を並列して行うように制御する。
【0032】
プロセッサエレメント8−nは、パイプライン生成部4から供給される制御指示に応じて、量子力学に基づいて重ね合わされた状態における所定の状態について演算を行う。プロセッサエレメント8−nは、複数の状態の状態確率を記憶するためのローカルメモリ9−n(nは添え字であり、n=1、2、3、…)をそれぞれ有する。すなわち、本実施形態のプロセッサエレメント8−nのそれぞれは、量子力学に基づいて重ね合わされた状態の中の複数の状態が対応付けられている。
【0033】
なお、各プロセッサエレメント8−nにそれぞれ対応付けられている状態は、複数のプロセッサエレメント8−nにて重複しないとともに、並列処理プロセッサ1にて演算可能なキュービット数に応じた任意の状態(論理値)は、何れかのプロセッサエレメント8−nに対応付けられている。また、本実施形態では各状態の状態確率は1ビットの確率フラグを用いて示されるので、ローカルメモリ9−nは、プロセッサエレメント8−nに対応付けられている状態数に等しいビット数だけの記憶容量を有すれば良い。
また、プロセッサエレメント8−nは、ネットワーク10を介して互いに通信可能なように接続されている。
【0034】
次に、本実施形態におけるプロセッサエレメント(PE)について詳細に説明する。
図3は、本実施形態におけるプロセッサエレメントの要素的特徴を示す構成図である。図3においては、ターゲットキュービットの値が“0”である第1の状態に対応するプロセッサエレメント31と、ターゲットキュービットの値が“1”である第2の状態に対応するプロセッサエレメント34とを一例として示している。なお、第1および第2の状態において、ターゲットキュービットを除くキュービットの値は等しい。
【0035】
図3において、プロセッサエレメント31は、論理演算を行うロジック部32と、ロジック部32による演算結果を記憶するレジスタ33とを有する。ロジック部32は、第1の状態に係る確率フラグPA0および第2の状態に係る確率フラグPA1が入力され、確率フラグPA0、PA1を用いて所定の論理演算を行う。さらに、ロジック部32は、演算後の第1の状態に係る確率フラグPB0として演算結果をレジスタ33に出力する。レジスタ33は、ロジック部32から入力される確率フラグPB0を記憶する。
【0036】
同様に、プロセッサエレメント34は、論理演算を行うロジック部35と、その演算結果を記憶するレジスタ36とを有する。ロジック部35は、第1および第2の状態に係る確率フラグPA0、PA1が入力され、所定の論理演算を行った後、演算後の第2の状態に係る確率フラグPB1として演算結果をレジスタ36に出力する。レジスタ36は、ロジック部35から入力される確率フラグPB1を記憶する。
【0037】
図4は、本実施形態におけるプロセッサエレメントの具体的な構成例を示すブロック図である。なお、図4に示したプロセッサエレメントは、演算処理の高速化および回路面積の低減化を図るために、6段のパイプライン構造を有する。
図4において、8はプロセッサエレメント、9はローカルメモリであり、上記図2に示したプロセッサエレメント8−n、ローカルメモリ9−nにそれぞれ対応する。
【0038】
プロセッサエレメント8は、6つのレジスタ41〜45、47およびロジック部46により構成される。
レジスタ41、42、43は、ローカルメモリ9の出力端子とロジック部46の第1の入力端子との間にレジスタ41、42、43の順に直列に接続され、レジスタ41、42、43は、入力される確率フラグを一時的に記憶し、次段に接続されたレジスタ42、43およびロジック部46にそれぞれ出力する。すなわち、ローカルメモリ9の所定の記憶領域から読み出された確率フラグは、レジスタ41、42、43により順次伝達され、ロジック部46に入力される。また、レジスタ41は、記憶した確率フラグを他のプロセッサエレメントにおける上記図4に示したレジスタ44に相当するレジスタに出力する。
【0039】
レジスタ44、45は、ロジック部46の第2の入力端子に対して直列に接続され、レジスタ44、45は、入力される確率フラグを一時的に記憶し、次段に接続されたレジスタ45およびロジック部46にそれぞれ出力する。すなわち、他のプロセッサエレメントにおける上記図4に示したレジスタ41に相当するレジスタから供給された確率フラグは、レジスタ44、45により順次伝達され、ロジック部46に入力される。
【0040】
ロジック部46は、レジスタ47を有し、パイプライン生成部4から供給される制御指示に応じて、レジスタ43、45から第1および第2の入力端子を介してそれぞれ入力される確率フラグを用いた論理演算を行う。また、ロジック部46は、上記論理演算の演算結果をレジスタ47に一時的に記憶した後、ローカルメモリ9の上記所定の記憶領域に書き込む。なお、レジスタ47はロジック部46の外部に設けるようにしても良い。
【0041】
ローカルメモリ9は、プロセッサエレメント8に対応付けられている複数の状態の確率フラグを記憶するためのものである。このようにローカルメモリ9を設けて、1つのプロセッサエレメント8に複数の状態を対応付けることで、1つのプロセッサエレメントに1つの状態を割り当てるよりも、プロセッサエレメント8を有効に活用し、1つの状態当たりに要するプロセッサエレメントの回路面積を低減することができる。
【0042】
ここで、1つの状態に係る確率フラグは1ビットであるので、ローカルメモリ9は、対応付けられている状態数と同じビット数の記憶領域を少なくとも備えていれば良く、例えば、状態数が6キュービット分に相当する64個である場合には、ローカルメモリ9は、64ビットの記憶領域を少なくとも備えていれば良い。同様に、レジスタ41〜45、47は少なくとも1ビットの情報をそれぞれ記憶できれば良い。
【0043】
上記図4に示したプロセッサエレメント8は、クロック信号等の所定のタイミング信号に同期してレジスタ41〜45、47が動作し、後述するように6段のパイプライン処理を行う。
図5は、本実施形態における並列処理プロセッサでのパイプライン制御の一例を示す図である。なお、図5において、CLKはパイプライン処理に用いるクロック信号等のタイミング信号であり、図5における上方から下方に時間は進行するものとする。
【0044】
パイプライン制御は、パイプライン生成部4から各プロセッサエレメントに供給する制御指示に基づいて行われる。
まず、パイプライン生成部4は、所定の状態の確率フラグが記憶されているローカルメモリ9のアドレスを供給し、ローカルメモリ9からの確率フラグの読み出しをプロセッサエレメント8に指示する(read address)。ローカルメモリ9から読み出された確率フラグは、上記図4に示したレジスタ41に記憶される。
【0045】
パイプライン生成部4は、レジスタ41から他のプロセッサエレメントに対して出力する確率フラグが所望のプロセッサエレメントに供給されるようにネットワーク10を制御する(send switch)。これにより、自らに付随するローカルメモリ9から読み出した確率フラグがレジスタ42に記憶され、他のプロセッサエレメントから供給される確率フラグがレジスタ44に記憶される。
【0046】
次に、パイプライン生成部4は、演算対象として注目するターゲットキュービットをプロセッサエレメント8に指示する(target)。このとき、演算に用いられる確率フラグは、レジスタ43、45にそれぞれ伝達されている。その後、パイプライン生成部4は、プロセッサエレメント8に確率フラグの論理演算を指示し(operation control)、ロジック部46にて演算が行われ、演算結果である新たな確率フラグがレジスタ47に記憶される。
【0047】
次に、パイプライン生成部4は、演算の結果として得られた確率フラグを記憶するためのローカルメモリ9のアドレスおよび書き込み許可を通知し、ローカルメモリ9への確率フラグの書き込みをプロセッサエレメント8に指示する(write address, write enable)。
【0048】
以上のようにして、それぞれのプロセッサエレメント8は、ローカルメモリ9から所定の状態の確率フラグを読み出して演算を行い、演算後の確率フラグをローカルメモリ9に書き戻す。なお、上述した説明では1つの状態についての処理の一連の流れを説明するために処理毎に分けて説明したが、通常のパイプライン制御と同じように各処理が順次同時に実行され、異なる状態についての処理が実行されていることは言うまでもない。
【0049】
次に、本実施形態におけるプロセッサエレメント8にて実行される論理演算について説明する。上述したようにロジック部46は、上記図1に示した量子アルゴリズムにおける第1および第2のステージ、すなわちW−H変換およびノット(NOT)変換にそれぞれ相当する論理演算を行う。
【0050】
図6は、ロジック部46にて実行される論理演算の真理値表を示す図である。図6において、確率フラグのフラグ値“0”は、状態の確率振幅の値が0であることを示し、フラグ値“1”は、状態の確率振幅の値がpであることを示している。
【0051】
また、図6においては、変換前(論理演算前)にてターゲットキュービットを除く他のキュービットの値が等しく、ターゲットキュービットの値が“0”である状態を「|0>」で示し、ターゲットキュービットの値が“1”である状態を「|1>」で示している。なお、状態|0>、|1>の変換後の状態は、「|0>’」、「|1>’」でそれぞれ示している。
【0052】
図6に示したようにノット変換において、演算結果として得られる変換後の状態|0>’および状態|1>’のフラグ値は、それぞれ変換前の状態|1>および状態|0>のフラグ値である。したがって、ロジック部46にて行われるノット変換に相当する論理演算は、状態|0>および状態|1>のフラグ値を入れ替えるような演算である。
【0053】
当該演算は、ノット変換が指示された際に、ターゲットキュービットの値が異なる状態に係る確率フラグを選択するようにして実行しても良いし、状態|0>および状態|1>のフラグ値を入力するための信号線を状態|1>’および状態|0>’のフラグ値を出力するための信号線にそれぞれ単に接続するようにしても良い。
【0054】
また、図6に示したW−H変換において、変換後の状態|0>’のフラグ値が“1”になるのは、変換前の状態|0>および状態|1>のフラグ値が(|0>のフラグ値,|1>のフラグ値)=(0,1)、(1,0)、(1,1)のときである。したがって、状態|0>’についてロジック部46にて行われるW−H変換に相当する論理演算は、状態|0>および状態|1>のフラグ値を用いた論理和(OR)演算である。当該演算は、ロジック部46内に図7(A)に示すように、状態|0>および状態|1>のフラグ値が入力され、その演算結果を状態|0>’のフラグ値として出力するOR演算回路71を設けることにより実現される。
【0055】
同様に、W−H変換において、変換後の状態|1>’のフラグ値が“1”になるのは、変換前の状態|0>および状態|1>のフラグ値が(|0>のフラグ値,|1>のフラグ値)=(0,1)、(1,0)のときである。したがって、状態|1>’についてロジック部46にて行われるW−H変換に相当する論理演算は、状態|0>および状態|1>のフラグ値を用いた排他的論理和(EX(exclusive)−OR)演算である。当該演算は、ロジック部46内に図7(B)に示すように、状態|0>および状態|1>のフラグ値が入力され、その演算結果を状態|1>’のフラグ値として出力するEXOR演算回路72を設けることにより実現される。
【0056】
次に、ネットワーク10について説明する。
本実施形態におけるネットワーク10は、各プロセッサエレメント8−nが他のプロセッサエレメント8−nに対して、論理演算で用いる状態に係る確率フラグを供給できるように各プロセッサエレメント8−nを互いに通信可能なように接続すれば良い。例えば、図8に概念図を示すようなハイパーキューブネットワークをネットワーク10に適用することでネットワーク10を適切に構築することができる。
【0057】
図8は、ネットワーク10に適用可能なハイパーキューブネットワークを説明するための概念図であり、図8においては、説明をわかり易くするために3キュービットの場合を一例として示している。図8に示すように、六面体の各頂点80〜87が状態“000”〜“111”(2値論理値)にそれぞれ対応するものとする。
【0058】
ここで、上述したようにプロセッサエレメント8−nによる演算は、ターゲットキュービットの値のみが異なる状態に係る確率フラグを用いて行われる。すなわち、プロセッサエレメント8−nによる論理演算では、演算対象である状態を示す論理値に対してハミング距離が“1”である論理値の状態に係る確率フラグが用いられる。
【0059】
例えば、状態“000”についての演算では、状態“001”、“010”および“100”の何れかの確率フラグが用いられるので、図8において、頂点80と、頂点81、82および84とをそれぞれ結ぶ辺を通信線に見立てる。すなわち、ネットワーク10は、状態“000”に対応したプロセッサエレメントと、状態“001”、“010”および“100”にそれぞれ対応したプロセッサエレメントとを、通信線NW1、NW2およびNW3を介して通信可能なように接続する。
【0060】
他の状態に対応するプロセッサエレメントについても、上述した説明と同様にして演算対象である状態を示す論理値に対してハミング距離が“1”である論理値の状態に対応するプロセッサエレメントを通信可能なように接続することでハイパーキューブネットワークを適用したネットワーク10を構築することができる。
【0061】
次に、上記図1に示した量子アルゴリズムと対応させて本実施形態における並列処理プロセッサ1の動作について説明する。
なお、以下の説明では、説明の便宜上、キュービット数は8(Q1〜Q8)とし、最下位のキュービットをQ1、最上位のキュービットをQ8とする。また、並列処理プロセッサ1の初期状態として、すべてのキュービットQ1〜Q8の値が“0”である状態“00000000”に係る確率フラグのみが“1”であり、他の状態に係る確率フラグは“0”であるとする。
【0062】
まず、並列処理プロセッサ1は、外部機器からインタフェース7を介して上記図1に示した第1のステージでのW−H変換に対応する命令を受けると、制御部2(命令管理部3およびパイプライン生成部4)により、W−H変換に相当する論理演算を行い所定の状態に確率を分配するように各プロセッサエレメント8−nに制御指示を出力する。
【0063】
例えば、ターゲットキュービットがキュービットQ1であるW−H変換に対応する命令を受けた場合には、各プロセッサエレメント8−nのロジック部46にてW−H変換に相当する論理演算がそれぞれ行われ、状態“00000000”および“00000001”のフラグ値が“1”になる。さらに、ターゲットキュービットがキュービットQ2であるW−H変換に対応する命令を受けた場合には、同様にして状態“00000000”、“00000010”、“00000001”および“00000011”のフラグ値が“1”になる。
このようにして、並列処理プロセッサ1は、W−H変換に相当する論理演算を実行し、所定の状態に確率を分配する。
【0064】
次に、外部機器からインタフェース7を介して上記第2のステージでのノット変換に対応する命令を受けると、並列処理プロセッサ1内の制御部2は、ノット変換に相当する論理演算を行うように各プロセッサエレメント8−nに制御指示を出力する。これにより、各プロセッサエレメント8−nのロジック部46にてノット変換に相当する論理演算が行われ、所定の状態間にて確率フラグ値が交換される。
以上のようにして、上記図1に示した量子アルゴリズムにおける第1および第2のステージに相当する演算が並列処理プロセッサ1にて行われる。
【0065】
ここで、上記図1に示した量子アルゴリズムにおいては、第3のステージにて、第2のステージまでの演算結果に量子フーリエ変換等を施すことで解を収束させ、第4のステージにて観測を行って解を求めている。しかしながら、本実施形態における並列処理プロセッサ1は、複素数で表された状態確率ではなく、状態確率が値を有するか否かを示す確率フラグを用いて演算を行っているので、上記図1に示した量子アルゴリズムと同様に量子フーリエ変換等により解を収束させて求めることはできない。
【0066】
そこで、本実施形態における並列処理プロセッサ1では、インクァエリ命令を用いた観測命令操作を行うことにより解を求める。インクァエリ命令を用いた観測命令操作では、まず、ターゲットキュービットとアンマスク値とを指定してインクァエリ命令を発行する。発行されたインクァエリ命令を受けた並列処理プロセッサ1は、指定されたアンマスク値に対応する状態の中に、確率フラグが“1”である状態が存在するか否かを調べる。
【0067】
その結果に応じて、並列処理プロセッサ1は、制御部2が有するアンサーレジスタ6内の指定されたターゲットキュービットに対応するフィールドに値(“0”または“1”)を書き込む。
上記操作を繰り返し行うことにより、本実施形態における並列処理プロセッサ1は、アンサーレジスタ6に解を記憶し、外部からの要求に応じてインタフェース7を介して出力する。
【0068】
図9は、インクァエリ命令を用いた観測命令操作の具体例を示す図である。図9においては、状態“010”、“100”、“110”および“111”に係る確率フラグが“1”であるとし、解として確率フラグが“1”である状態の値の最小値(“010”)を求める場合を一例として示している。
【0069】
まず、インクァエリ命令にてターゲットキュービットを最上位キュービットに指定するとともに、アンマスク値BMを“0**”(*はDon’t care)に指定する。インクァエリ命令を受けた並列処理プロセッサ1は、指定されたアンマスク値BMに対応した状態“000”、“001”、“010”および“011”の中に、確率フラグが“1”である状態が存在するか否かを調べる。その結果、確率フラグが“1”である状態が存在するので、並列処理プロセッサ1は、アンサーレジスタ6内の最上位ビットに“0”を書き込む。
【0070】
次に、インクァエリ命令にてターゲットキュービットを3つの中の真中のキュービットに指定するとともに、上記結果を反映させアンマスク値BMを“00*”に指定する。インクァエリ命令を受けた並列処理プロセッサ1は、アンマスク値BMに対応した状態“000”および“001”に、確率フラグが“1”である状態が存在しないので、アンサーレジスタ6内の真中のビットに“1”を書き込む。
【0071】
続いて、インクァエリ命令にてターゲットキュービットを最下位のキュービットに指定するとともに、アンマスク値BMを“010”に指定する。インクァエリ命令を受けた並列処理プロセッサ1は、アンマスク値BMに対応した状態“010”の確率フラグが“1”であるので、アンサーレジスタ6内の最下位ビットに“0”を書き込む。
以上のようにして、インクァエリ命令を用いた観測命令操作により並列処理プロセッサ1にて例えば最小値等の所望の解を求めることができる。
【0072】
次に、本実施形態における並列処理プロセッサ1にて用いられる命令フォーマットについて説明する。
図10は、命令フォーマットの一例を示す図である。図10において、101は命令を示す命令フィールドであり、102はターゲットキュービットを示すターゲットフィールドである。
【0073】
また、103、104は、制御キュービットに応じて演算を行うか否かを指示するためのコントロールフィールドであり、(コントロール_0,コントロール_1)=(0,0)の場合には、アンサーレジスタ6の値を返す。また、(コントロール_0,コントロール_1)=(0,1)および(1,0)の場合には、それぞれ制御キュービットの値が“1”および“0”の状態について演算を行い、(コントロール_0,コントロール_1)=(1,1)の場合には、制御キュービットの値にかかわらず演算を行う。
【0074】
図11は、プログラム可能な論理素子(FPGA:Field Programmable Gate Array、CPLD:Complex Programmable Logic Device等)を用いて作成した本実施形態における並列処理プロセッサとソフトウェア・シミュレーションとの演算性能を示す図である。
【0075】
図11に示したように、並列処理プロセッサは、1.5Mゲートを有するプログラム可能な論理素子を用いて、プロセッサエレメントと64ビットの記憶容量を有するローカルメモリとをそれぞれ1024個配置し、周波数60MHzのクロック信号で1024個のプロセッサエレメントを並列動作させる。すなわち、当該並列処理プロセッサは、16キュービット相当の演算が可能である。このとき、並列処理プロセッサは、毎秒1.6M回の演算(1.6Moperations/sec)を実行する。
【0076】
一方、動作クロック600MHzであり、512KBのキャッシュメモリを有するCPUを用いたソフトウェア・シミュレーションでは、毎秒0.8K回の演算(0.8Koperations/sec)を実行する。
したがって、本実施形態における並列処理プロセッサの演算性能は、ソフトウェア・シミュレーションの演算性能の2000倍程度の演算性能を有することがわかる。
【0077】
以上、詳しく説明したように本実施形態によれば、Nビット(Nは自然数)で表現可能な論理値の状態について演算を行う際、複数のプロセッサエレメント8がそれぞれ備えるロジック部46にて、論理値の状態確率が0と異なる値を有するか否かを1ビットで示した確率フラグを用い、命令に応じた論理演算を互いに異なる論理値の状態について並列して行う。
【0078】
これにより、複数のビットを用い複素数で表される状態確率についての複素積和演算に相当する演算を、1ビットの確率フラグを用いた簡単な論理演算により行うことができるので、演算機能を損なうことなく、論理演算処理だけで演算を行うことにより演算を高速で実行することができる。
【0079】
また、複数のビットを用いて表していた1つの論理値の状態を、1ビットの確率フラグにより表すことで、プロセッサエレメント等の回路構成が非常に簡素になり、1つの論理値の状態当たりの演算に要する回路面積を大幅に低減することができ、並列処理プロセッサ内での演算の並列度を向上させ、演算規模を容易に大きくすることができる。
【0080】
なお、上述した本実施形態における並列処理プロセッサ1は、ショアの量子アルゴリズムに限らず、その他の量子アルゴリズムについても適用可能であり、例えばデータベース検索に関するグローバー(Grover)の量子アルゴリズムについても適用することができる。
【0081】
また、上記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【0082】
【発明の効果】
以上説明したように、本発明によれば、Nビットで表現可能な論理値の状態について演算を行う際、互いに異なる所定の論理値の状態について複数の演算回路が供給される論理値の状態を示すフラグを用いて論理演算を並列に行う。
これにより、複素積和演算で行っていた論理値の状態についての演算を論理演算で行うことができ、量子コンピュータと同等の演算機能を有しながらも、論理値の状態についての演算を高速で実行することができる。さらに、複数のビットで表されていた論理値の状態をフラグにより表すことで、1つの論理値の状態の演算に要する回路面積を小さくすることができ、演算速度を低下させることなく、演算規模の大規模化を容易に行うことができる。
【図面の簡単な説明】
【図1】量子アルゴリズムを説明するための図である。
【図2】本発明の実施形態による半導体演算装置を適用した並列処理プロセッサの一構成例を示すブロック図である。
【図3】プロセッサエレメントの要素的特徴を示す構成図である。
【図4】プロセッサエレメントの具体的な構成例を示す図である。
【図5】本実施形態における並列処理プロセッサでのパイプライン制御の一例を示す図である。
【図6】論理演算における真理値表を示す図である。
【図7】ロジック部の構成例を示す図である。
【図8】ハイパーキューブネットワークを説明するための概念図である。
【図9】観測命令操作を説明するための図である。
【図10】命令フォーマットの一例を示す図である。
【図11】本実施形態における並列処理プロセッサおよびソフトウェア・シミュレーションのそれぞれの演算性能を示す図である。
【図12】複素数で表された状態の確率振幅を用いて演算を行うプロセッサエレメントの構成を示すブロック図である。
【符号の説明】
1 並列処理プロセッサ
2 制御部
3 命令管理部
4 パイプライン生成部
5 命令キャッシュ
6 アンサーレジスタ
7 インタフェース
8−1、8−2、8−3、… プロセッサエレメント(PE)
9−1、9−2、9−3、… ローカルメモリ
10 ネットワーク
Claims (11)
- Nビット(Nは自然数)で表現可能なすべての論理値の状態について演算を並列して行い、それぞれの演算結果を保持する半導体演算装置であって、
所定の上記論理値の状態について演算を行う際、供給される論理値の状態を示すフラグを用いて論理演算を行い、演算結果を保持する複数の演算回路を備え、
上記複数の演算回路は、互いに異なる論理値の状態について演算を並列して行うことを特徴とする半導体演算装置。 - 上記論理値の状態を示すフラグは、上記論理値の状態を示す確率振幅に応じたフラグであることを特徴とする請求項1に記載の半導体演算装置。
- 上記論理値の状態を示すフラグは、上記論理値の状態を示す確率振幅が0とは異なる値であるか否かを1ビットで示すことを特徴とする請求項1に記載の半導体演算装置。
- 上記演算回路にそれぞれ対応して設けられた、複数の上記論理値の状態を記憶する複数の記憶回路をさらに備え、
上記複数の記憶回路が記憶する上記複数の論理値の状態は、上記記憶回路毎に互いに異なり、
上記演算回路は、対応する上記記憶回路に記憶された上記複数の論理値の状態について演算可能であることを特徴とする請求項1〜3の何れか1項に記載の半導体演算装置。 - 上記記憶回路は、上記論理値の状態を示すフラグを記憶することを特徴とする請求項4に記載の半導体演算装置。
- 上記複数の演算回路は、ネットワークを介して互いに通信可能なように接続されていることを特徴とする請求項1〜5の何れか1項に記載の半導体演算装置。
- 上記ネットワークは、論理値のハミング距離が1である論理値の状態について演算を行う演算回路を少なくとも互いに通信可能なように接続することを特徴とする請求項6に記載の半導体演算装置。
- 上記ネットワークは、論理値のハミング距離が1である論理値の状態について演算を行う演算回路をハイパーキューブ状に互いに通信可能なように接続することを特徴とする請求項6に記載の半導体演算装置。
- 上記論理値の状態についての演算結果に基づいて、観測命令操作により得られる解を記憶するレジスタをさらに備えることを特徴とする請求項1〜8の何れか1項に記載の半導体演算装置。
- 上記演算回路は、複数の論理値の状態について演算を行う際、演算における互いに異なる処理を順次同時に行うことを特徴とする請求項1〜9の何れか1項に記載の半導体演算装置。
- 上記演算回路は、上記所定の論理値の状態を示すフラグと、上記所定の論理値とは演算対象ビットの値だけが異なる論理値の状態を示すフラグとを用いた論理演算を行うことを特徴とする請求項1〜10の何れか1項に記載の半導体演算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002280775A JP3708072B2 (ja) | 2002-09-26 | 2002-09-26 | 半導体演算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002280775A JP3708072B2 (ja) | 2002-09-26 | 2002-09-26 | 半導体演算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004118512A true JP2004118512A (ja) | 2004-04-15 |
JP3708072B2 JP3708072B2 (ja) | 2005-10-19 |
Family
ID=32275391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002280775A Expired - Fee Related JP3708072B2 (ja) | 2002-09-26 | 2002-09-26 | 半導体演算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3708072B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210065822A (ko) * | 2019-11-27 | 2021-06-04 | 한양대학교 에리카산학협력단 | 효율성이 향상된 양자 가산기 및 가산 방법 |
-
2002
- 2002-09-26 JP JP2002280775A patent/JP3708072B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210065822A (ko) * | 2019-11-27 | 2021-06-04 | 한양대학교 에리카산학협력단 | 효율성이 향상된 양자 가산기 및 가산 방법 |
KR102658003B1 (ko) * | 2019-11-27 | 2024-04-17 | 한양대학교 에리카산학협력단 | 효율성이 향상된 양자 가산기 및 가산 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP3708072B2 (ja) | 2005-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5682544A (en) | Massively parallel diagonal-fold tree array processor | |
US20190026626A1 (en) | Neural network accelerator and operation method thereof | |
TWI230869B (en) | SIMD processor with scalar arithmetic logic units | |
JP2001520775A (ja) | 算術プロセッサ | |
KR20060056855A (ko) | 프로세서 | |
EP1560110A1 (en) | Multiple-word multiplication-accumulation circuit and Montgomery modular multiplication-accumulation circuit | |
CN113330466A (zh) | 涉及混合量子机器、量子信息技术的方面和/或其他特征的系统和方法 | |
US10884736B1 (en) | Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing | |
Huang et al. | Garbled circuits in the cloud using fpga enabled nodes | |
Gealow et al. | System design for pixel-parallel image processing | |
Cilardo et al. | Securing the cloud with reconfigurable computing: An FPGA accelerator for homomorphic encryption | |
CN109144472B (zh) | 一种二元扩域椭圆曲线的标量乘法及其实现电路 | |
US11165428B1 (en) | Circuits and methods for updating lookup tables | |
Sutradhar et al. | An ultra-efficient look-up table based programmable processing in memory architecture for data encryption | |
US7509479B2 (en) | Reconfigurable global cellular automaton with RAM blocks coupled to input and output feedback crossbar switches receiving clock counter value from sequence control unit | |
JP3708072B2 (ja) | 半導体演算装置 | |
US20220255757A1 (en) | Digital signature verification engine for reconfigurable circuit devices | |
Yu et al. | A fpga-based heterogeneous implementation of ntruencrypt | |
CN116710890A (zh) | 随机数生成装置及生成方法、随机数生成系统、芯片 | |
Kageyama et al. | Implementation of Floating‐Point Arithmetic Processing on Content Addressable Memory‐Based Massive‐Parallel SIMD matriX Core | |
JP3617007B2 (ja) | 半導体演算装置 | |
WO2020194594A1 (ja) | ニューラルネットワーク演算処理装置及びニューラルネットワーク演算処理方法 | |
JP3839002B2 (ja) | 半導体演算装置 | |
JP5608932B2 (ja) | 並列プロセッサ用のアドレス指定装置 | |
Wang et al. | SAM: A Scalable Accelerator for Number Theoretic Transform Using Multi-Dimensional Decomposition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20031215 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050121 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050201 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050401 |
|
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: 20050726 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050802 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |