(57)【特許請求の範囲】
【請求項１】
Ｎビット（Ｎは自然数）で表現可能なすべての論理値の状態について演算を並列して行い、それぞれの演算結果を保持する半導体演算装置であって、
所定の上記論理値の状態について演算を行う際、供給される論理値の状態を示すフラグを用いて論理演算を行い、演算結果を保持する複数の演算回路を備え、
上記複数の演算回路は、互いに異なる論理値の状態について演算を並列して行うことを特徴とする半導体演算装置。
【請求項２】
上記論理値の状態を示すフラグは、上記論理値の状態を示す確率振幅に応じたフラグであることを特徴とする請求項１に記載の半導体演算装置。
【請求項３】
上記論理値の状態を示すフラグは、上記論理値の状態を示す確率振幅が０とは異なる値であるか否かを１ビットで示すことを特徴とする請求項１に記載の半導体演算装置。
【請求項４】
上記演算回路にそれぞれ対応して設けられた、複数の上記論理値の状態を記憶する複数の記憶回路をさらに備え、
上記複数の記憶回路が記憶する上記複数の論理値の状態は、上記記憶回路毎に互いに異なり、
上記演算回路は、対応する上記記憶回路に記憶された上記複数の論理値の状態について演算可能であることを特徴とする請求項１〜３の何れか１項に記載の半導体演算装置。
【請求項５】
上記記憶回路は、上記論理値の状態を示すフラグを記憶することを特徴とする請求項４に記載の半導体演算装置。
【請求項６】
上記複数の演算回路は、ネットワークを介して互いに通信可能なように接続されていることを特徴とする請求項１〜５の何れか１項に記載の半導体演算装置。
【請求項７】
上記ネットワークは、論理値のハミング距離が１である論理値の状態について演算を行う演算回路を少なくとも互いに通信可能なように接続することを特徴とする請求項６に記載の半導体演算装置。
【請求項８】
上記ネットワークは、論理値のハミング距離が１である論理値の状態について演算を行う演算回路をハイパーキューブ状に互いに通信可能なように接続することを特徴とする請求項６に記載の半導体演算装置。
【請求項９】
上記論理値の状態についての演算結果に基づいて、観測命令操作により得られる解を記憶するレジスタをさらに備えることを特徴とする請求項１〜８の何れか１項に記載の半導体演算装置。
【請求項１０】
上記演算回路は、複数の論理値の状態について演算を行う際、演算における互いに異なる処理を順次並列に行うことを特徴とする請求項１〜９の何れか１項に記載の半導体演算装置。
【請求項１１】
上記演算回路は、上記所定の論理値の状態を示すフラグと、上記所定の論理値とは演算対象ビットの値だけが異なる論理値の状態を示すフラグとを用いた論理演算を行うことを特徴とする請求項１〜１０の何れか１項に記載の半導体演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体演算装置に関し、特に、Ｎビット（Ｎは自然数）で表現可能な２N個のすべての論理値について演算を並列に実行する半導体演算装置に用いて好適なものである。
【０００２】
【従来の技術】
従来の計算機等が備える半導体演算装置（例えばＣＰＵ）は、１つのデータ値（論理値）を用いて演算処理や条件分岐処理等を逐次実行する従来の演算方式を用いて演算を行っていた。この従来から利用されている演算方式とは異なり、量子力学の原理に基づく新しい演算方式を用いて演算を行う量子コンピュータが提案されている。
【０００３】
量子コンピュータは、キュービット（量子ビット）という単位で構成された量子力学に基づく状態の重ね合わせを利用し、量子力学的な操作を当該状態に施すことにより各状態に対する演算を並列に実行する。したがって、量子コンピュータは、理論上、すべての可能な状態（値として存在可能なデータ値）について、１回の演算を行うだけですべての可能な状態の演算結果を同時に、かつ瞬時に得ることができる。
【０００４】
上記量子コンピュータは、量子力学に基づく状態の重ね合わせを利用するので、核磁気共鳴、マイクロ波、レーザー等を用いた実際に量子力学に基づく現象が観測可能な物理系で実現されてきた。最近では、量子コンピュータにおいて、２7個の状態が同時に存在する７キュービットまで演算可能な実際の物理系が提案されている。
【０００５】
【発明が解決しようとする課題】
しかしながら、従来の量子コンピュータは、量子力学に基づく現象が観測可能な実際の物理系を用いているので、装置自体が非常に大規模になり実用的ではなかった。さらに、量子コンピュータは、状態が互いに相関を持ちながら変化するようにして演算を行う必要があり、キュービット数の増加に伴い指数関数的に増加する位相状態を実際の物理系を用いた１つの装置に存在させて保存することが困難になってくる。
また、量子コンピュータは量子的な物理現象を利用しており、古典的な古典電磁気学に基づく物理現象を利用した集積回路を用いて、量子コンピュータをそのまま実現することは困難である。
【０００６】
そこで、本発明者らは、量子力学に基づいて重ね合わされたそれぞれの状態（論理値）に対応する複数のプロセッサエレメント（演算回路）を設け、それらを互いに通信可能なように接続することにより、集積回路を用いて量子コンピュータの技術を実現する特願２００１−２７９２８６に記載の並列処理プロセッサを提案した。この並列処理プロセッサは、上記複数のプロセッサエレメントが対応する状態の状態確率について演算を同時に行い、得られた演算結果を記憶するように複数のプロセッサエレメントを並列動作させることで、量子コンピュータと同様の演算機能を実現する。
【０００７】
図１２は、本発明者らが提案した並列処理プロセッサが備えるプロセッサエレメントの構成の概要を示すブロック図である。図１２においては、演算対象として注目するターゲットキュービットの値のみが異なり、他のキュービットの値が等しい第１の状態（ターゲットキュービットの値“０”）および第２の状態（ターゲットキュービットの値“１”）にそれぞれ対応するプロセッサエレメント１２１、１２６を一例として示している。
【０００８】
ここで、量子コンピュータによる量子計算において、データに該当する状態確率は位相情報を含み複素数を用いて表され、量子計算にて行われる演算はユニタリ変換である。すなわち、量子計算では複素数で表された状態確率に対してユニタリ行列を用いた行列演算を施すので、図１２に示すように１つのプロセッサエレメントは、２つの乗算器と１つの加算器とを有し、複素数の積和演算を行う。
【０００９】
ユニタリ行列の各成分の係数値をＵ１、Ｕ２，Ｕ３、Ｕ４とすると、図１２に示したプロセッサエレメント１２１では、第１の状態の状態確率（｜０＞）と係数値（Ｕ１）との乗算、および第２の状態の状態確率（｜１＞）と係数値（Ｕ２）との乗算が乗算器１２２、１２３でそれぞれ行われる。さらに、乗算器１２２、１２３の出力が加算器１２４で加算され、その演算結果が演算後の第１の状態の状態確率（｜０＞’）としてレジスタ１２５に記憶される。
【００１０】
同様に、プロセッサエレメント１２６では、第１の状態の状態確率（｜０＞）と係数値（Ｕ３）との乗算、および第２の状態の状態確率（｜１＞）と係数値（Ｕ４）との乗算が乗算器１２７、１２８で行われ、乗算器１２７、１２８の出力が加算器１２９で加算された後、演算後の第２の状態の状態確率（｜１＞’）としてレジスタ１３０に記憶される。
【００１１】
しかしながら、上記図１２に示したプロセッサエレメント１２１、１２６を用いて構成した並列処理プロセッサにおいて、複素数で表される状態確率は、実数部および虚数部がそれぞれ複数のビット（例えば、それぞれ８ビット）を用いて示される。したがって、上記並列処理プロセッサは、複数のビットを用いて表された状態確率について複素積和演算を行うために演算処理に多大な時間を要してしまい、演算を高速に実行することができないという問題があった。
【００１２】
また、上記並列処理プロセッサは、複数のビット演算に対応した２つの乗算器と１つの加算器とをそれぞれのプロセッサエレメントに備える必要があり、１つのプロセッサエレメントを構成するための回路面積（回路規模）が大きく、またプロセッサエレメントの数は、キュービット数の増加にともない指数関数的に増加するので、演算規模を大きくすることが容易ではないという問題があった。
【００１３】
本発明は、このような問題に鑑みてなされたものであり、量子コンピュータと同様の演算機能を有しながらも、演算を高速で実行することができるようにすることを目的とする。また、本発明は、演算の規模を容易に大きくできるとともに、演算を高速で実行することができるようにすることを第２の目的とする。
【００１４】
【課題を解決するための手段】
本発明の半導体演算装置は、Ｎビット（Ｎは自然数）で表現可能なすべての論理値の状態について演算を並列して行い、それぞれの演算結果を保持する半導体演算装置であって、所定の論理値の状態について演算を行う際、供給される論理値の状態を示すフラグを用いて論理演算を行い、演算結果を保持する複数の演算回路を備え、複数の演算回路は、互いに異なる論理値の状態について演算を並列して行うことを特徴とする。
【００１５】
本発明の半導体演算装置の他の特徴とするところは、論理値の状態を示すフラグは、論理値の状態を示す確率振幅に応じたフラグであることを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、論理値の状態を示すフラグは、論理値の状態を示す確率振幅が０とは異なる値であるか否かを１ビットで示すことを特徴とする。
【００１６】
本発明の半導体演算装置のその他の特徴とするところは、演算回路にそれぞれ対応して設けられた、複数の論理値の状態を記憶する複数の記憶回路をさらに備え、複数の記憶回路が記憶する複数の論理値の状態は、記憶回路毎に互いに異なり、演算回路は、対応する記憶回路に記憶された複数の論理値の状態について演算可能であることを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、記憶回路は、論理値の状態を示すフラグを記憶することを特徴とする。
【００１７】
本発明の半導体演算装置のその他の特徴とするところは、複数の演算回路は、ネットワークを介して互いに通信可能なように接続されていることを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、ネットワークは、論理値のハミング距離が１である論理値の状態について演算を行う演算回路を少なくとも互いに通信可能なように接続することを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、ネットワークは、論理値のハミング距離が１である論理値の状態について演算を行う演算回路をハイパーキューブ状に互いに通信可能なように接続することを特徴とする。
【００１８】
本発明の半導体演算装置のその他の特徴とするところは、論理値の状態についての演算結果に基づいて、観測命令操作により得られる解を記憶するレジスタをさらに備えることを特徴とする。
【００１９】
本発明の半導体演算装置のその他の特徴とするところは、演算回路は、複数の論理値の状態について演算を行う際、演算における互いに異なる処理を順次並列に行うことを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、演算回路は、所定の論理値の状態を示すフラグと、所定の論理値とは演算対象ビットの値だけが異なる論理値の状態を示すフラグとを用いた論理演算を行うことを特徴とする。
【００２０】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。
本発明の実施形態による半導体演算装置を適用した並列処理プロセッサは、集積回路を用いて量子コンピュータの技術を実現するものであり、量子計算を行うための公知の量子アルゴリズムと同様にして演算が実行される。
【００２１】
まず、量子アルゴリズムについて説明する。図１は量子アルゴリズムの流れを説明するための図であり、ショア（Ｓｈｏｒ）のアルゴリズムを初めとする量子アルゴリズムは、一般に図１に示すように４つのステージ（段階）で構成される。なお、図１は８キュービットの場合を一例として示しており、横方向に伸びる実線は各キュービットＱ１〜Ｑ８にそれぞれ対応する。
以下、各ステージについて説明する。
【００２２】
第１のステージ（Ｓｔａｇｅ１）では、ウォルシュ・アダマール変換（Walsh-Hadamard Transformation：以下、「Ｗ−Ｈ変換」と称す。）Ｓ１-1、Ｓ１-2、Ｓ１-3、Ｓ１-4、…を用いて、所定の状態に確率を分配する。これにより、第１のステージでは、所定の状態に等しい確率を割り当て、量子力学に基づく状態の重ね合わせの初期状態を生成する。
【００２３】
第２のステージ（Ｓｔａｇｅ２）では、ノット（ＮＯＴ）変換（制御ＮＯＴ操作）Ｓ２-1、Ｓ２-2、Ｓ２-3、…を用いて、上記第１のステージにて割り当てられた確率を状態間で交換する。この第２ステージにおける確率の交換操作は、ＣＰＵ等を備えた従来の計算機における加算演算や乗算演算に相当する。
【００２４】
なお、図１において、例えばノット変換Ｓ２-1は、制御キュービットがＱ３、ターゲットキュービットがＱ８であることを示している。このとき、制御キュービットＱ３の値が“１”であれば、ターゲットキュービットＱ８の値のみが異なり、他のキュービットの値が等しい状態間にて確率の交換をそれぞれ行う。一方、制御キュービットＱ３の値が“０”であれば、確率の交換は行わずに値を保持する。ノット変換Ｓ２-2、Ｓ２-3、…においても同様である。
【００２５】
第３のステージ（Ｓｔａｇｅ３）では、Ｗ−Ｈ変換Ｓ３-1、Ｓ３-3、…およびフェイズシフト変換Ｓ３-2、Ｓ３-4、…による量子フーリエ変換（Quantum Fourier Transformation：以下、「ＱＦＴ」と称す。）等を用いて干渉により解を一点に収束させる。さらに、第４のステージ（Ｓｔａｇｅ４）では、観測Ｓ４を行うことで解を求める。
【００２６】
なお、上述したノット変換Ｓ２-1と同様に、例えばフェイズシフト変換Ｓ３-2は、制御キュービットがＱ８、ターゲットキュービットがＱ７であることを示している。フェイズシフト変換Ｓ３-2は、制御キュービットＱ８の値が“１”であれば、ターゲットキュービットＱ７に関して位相回転を行い、制御キュービットＱ８の値が“０”であれば値を保持する。フェイズシフト変換Ｓ３-4、…においても同様である。
【００２７】
本発明者らは、上記図１に示したような量子アルゴリズムにおいて、Ｗ−Ｈ変換により所定の状態に確率を分配する第１のステージ、および制御キュービットの値等に応じて状態間での確率の交換を行う第２のステージが終了するまでは、各状態の状態確率（確率振幅）が、０あるいは値ｐ（０＜ｐ≦１）の何れか一方の値のみであることを見出した。すなわち、量子アルゴリズムにおける第１および第２のステージにおいては、複数のビットを用いて示される状態の状態確率の値そのものを用いなくとも、値を有するか否か（値が０であるかｐであるか）を示せば、情報量を損失することなく（情報量は変わらずに）等価な演算を行うことが可能であることを見出した。
【００２８】
そこで、本実施形態における並列処理プロセッサは、Ｎ（Ｎは自然数）ビットで表現可能なすべての論理値の状態について各状態の状態確率が値を有するか否かを１ビットで示す確率フラグを用い、さらにユニタリ変換に相当する演算を論理（ロジック）演算で実行する。これにより、本実施形態における並列処理プロセッサは、プロセッサエレメントにおける構成を単純化しながらも、簡単な構成で量子コンピュータと同等の演算機能を実現するようにしたものであり、プロセッサエレメントに要する回路面積を低減して、演算の並列度および単位ゲート当たりの演算量を向上させることが可能になる。
【００２９】
図２は、本実施形態における並列処理プロセッサ１の一構成例を示すブロック図である。
図２において、制御部２は、命令管理部３およびパイプライン生成部４を有し、複数のプロセッサエレメント８-n（ｎは添え字であり、ｎ＝１、２、３、…）等の並列処理プロセッサ１内の各機能部を制御する。インタフェース７は、並列処理プロセッサ１と外部に接続された外部機器（外部回路）等との間で命令やデータの授受等を行うためのものである。
【００３０】
命令管理部３は、インタフェース７を介して外部機器から供給される命令をパイプライン生成部４に出力したり、後述する観測命令操作により得られた解をインタフェース７を介して外部機器に出力したりする。命令管理部３は、外部機器から供給される命令を一時的に記憶するための命令キャッシュ５、および観測命令操作により得られた解を記憶するためのアンサーレジスタ６を有する。
【００３１】
パイプライン生成部４は、命令管理部３から供給される命令に基づいて、各プロセッサエレメント８-nに制御指示をそれぞれ出力し、複数のプロセッサエレメント８-nがそれぞれパイプライン動作を並列して行うように制御する。
【００３２】
プロセッサエレメント８-nは、パイプライン生成部４から供給される制御指示に応じて、量子力学に基づいて重ね合わされた状態における所定の状態について演算を行う。プロセッサエレメント８-nは、複数の状態の状態確率を記憶するためのローカルメモリ９-n（ｎは添え字であり、ｎ＝１、２、３、…）をそれぞれ有する。すなわち、本実施形態のプロセッサエレメント８-nのそれぞれは、量子力学に基づいて重ね合わされた状態の中の複数の状態が対応付けられている。
【００３３】
なお、各プロセッサエレメント８-nにそれぞれ対応付けられている状態は、複数のプロセッサエレメント８-nにて重複しないとともに、並列処理プロセッサ１にて演算可能なキュービット数に応じた任意の状態（論理値）は、何れかのプロセッサエレメント８-nに対応付けられている。また、本実施形態では各状態の状態確率は１ビットの確率フラグを用いて示されるので、ローカルメモリ９-nは、プロセッサエレメント８-nに対応付けられている状態数に等しいビット数だけの記憶容量を有すれば良い。
また、プロセッサエレメント８-nは、ネットワーク１０を介して互いに通信可能なように接続されている。
【００３４】
次に、本実施形態におけるプロセッサエレメント（ＰＥ）について詳細に説明する。
図３は、本実施形態におけるプロセッサエレメントの要素的特徴を示す構成図である。図３においては、ターゲットキュービットの値が“０”である第１の状態に対応するプロセッサエレメント３１と、ターゲットキュービットの値が“１”である第２の状態に対応するプロセッサエレメント３４とを一例として示している。なお、第１および第２の状態において、ターゲットキュービットを除くキュービットの値は等しい。
【００３５】
図３において、プロセッサエレメント３１は、論理演算を行うロジック部３２と、ロジック部３２による演算結果を記憶するレジスタ３３とを有する。ロジック部３２は、第１の状態に係る確率フラグＰＡ０および第２の状態に係る確率フラグＰＡ１が入力され、確率フラグＰＡ０、ＰＡ１を用いて所定の論理演算を行う。さらに、ロジック部３２は、演算後の第１の状態に係る確率フラグＰＢ０として演算結果をレジスタ３３に出力する。レジスタ３３は、ロジック部３２から入力される確率フラグＰＢ０を記憶する。
【００３６】
同様に、プロセッサエレメント３４は、論理演算を行うロジック部３５と、その演算結果を記憶するレジスタ３６とを有する。ロジック部３５は、第１および第２の状態に係る確率フラグＰＡ０、ＰＡ１が入力され、所定の論理演算を行った後、演算後の第２の状態に係る確率フラグＰＢ１として演算結果をレジスタ３６に出力する。レジスタ３６は、ロジック部３５から入力される確率フラグＰＢ１を記憶する。
【００３７】
図４は、本実施形態におけるプロセッサエレメントの具体的な構成例を示すブロック図である。なお、図４に示したプロセッサエレメントは、演算処理の高速化および回路面積の低減化を図るために、６段のパイプライン構造を有する。
図４において、８はプロセッサエレメント、９はローカルメモリであり、上記図２に示したプロセッサエレメント８-n、ローカルメモリ９-nにそれぞれ対応する。
【００３８】
プロセッサエレメント８は、６つのレジスタ４１〜４５、４７およびロジック部４６により構成される。
レジスタ４１、４２、４３は、ローカルメモリ９の出力端子とロジック部４６の第１の入力端子との間にレジスタ４１、４２、４３の順に直列に接続され、レジスタ４１、４２、４３は、入力される確率フラグを一時的に記憶し、次段に接続されたレジスタ４２、４３およびロジック部４６にそれぞれ出力する。すなわち、ローカルメモリ９の所定の記憶領域から読み出された確率フラグは、レジスタ４１、４２、４３により順次伝達され、ロジック部４６に入力される。また、レジスタ４１は、記憶した確率フラグを他のプロセッサエレメントにおける上記図４に示したレジスタ４４に相当するレジスタに出力する。
【００３９】
レジスタ４４、４５は、ロジック部４６の第２の入力端子に対して直列に接続され、レジスタ４４、４５は、入力される確率フラグを一時的に記憶し、次段に接続されたレジスタ４５およびロジック部４６にそれぞれ出力する。すなわち、他のプロセッサエレメントにおける上記図４に示したレジスタ４１に相当するレジスタから供給された確率フラグは、レジスタ４４、４５により順次伝達され、ロジック部４６に入力される。
【００４０】
ロジック部４６は、レジスタ４７を有し、パイプライン生成部４から供給される制御指示に応じて、レジスタ４３、４５から第１および第２の入力端子を介してそれぞれ入力される確率フラグを用いた論理演算を行う。また、ロジック部４６は、上記論理演算の演算結果をレジスタ４７に一時的に記憶した後、ローカルメモリ９の上記所定の記憶領域に書き込む。なお、レジスタ４７はロジック部４６の外部に設けるようにしても良い。
【００４１】
ローカルメモリ９は、プロセッサエレメント８に対応付けられている複数の状態の確率フラグを記憶するためのものである。このようにローカルメモリ９を設けて、１つのプロセッサエレメント８に複数の状態を対応付けることで、１つのプロセッサエレメントに１つの状態を割り当てるよりも、プロセッサエレメント８を有効に活用し、１つの状態当たりに要するプロセッサエレメントの回路面積を低減することができる。
【００４２】
ここで、１つの状態に係る確率フラグは１ビットであるので、ローカルメモリ９は、対応付けられている状態数と同じビット数の記憶領域を少なくとも備えていれば良く、例えば、状態数が６キュービット分に相当する６４個である場合には、ローカルメモリ９は、６４ビットの記憶領域を少なくとも備えていれば良い。同様に、レジスタ４１〜４５、４７は少なくとも１ビットの情報をそれぞれ記憶できれば良い。
【００４３】
上記図４に示したプロセッサエレメント８は、クロック信号等の所定のタイミング信号に同期してレジスタ４１〜４５、４７が動作し、後述するように６段のパイプライン処理を行う。
図５は、本実施形態における並列処理プロセッサでのパイプライン制御の一例を示す図である。なお、図５において、ＣＬＫはパイプライン処理に用いるクロック信号等のタイミング信号であり、図５における上方から下方に時間は進行するものとする。
【００４４】
パイプライン制御は、パイプライン生成部４から各プロセッサエレメントに供給する制御指示に基づいて行われる。
まず、パイプライン生成部４は、所定の状態の確率フラグが記憶されているローカルメモリ９のアドレスを供給し、ローカルメモリ９からの確率フラグの読み出しをプロセッサエレメント８に指示する（read address）。ローカルメモリ９から読み出された確率フラグは、上記図４に示したレジスタ４１に記憶される。
【００４５】
パイプライン生成部４は、レジスタ４１から他のプロセッサエレメントに対して出力する確率フラグが所望のプロセッサエレメントに供給されるようにネットワーク１０を制御する（send switch）。これにより、自らに付随するローカルメモリ９から読み出した確率フラグがレジスタ４２に記憶され、他のプロセッサエレメントから供給される確率フラグがレジスタ４４に記憶される。
【００４６】
次に、パイプライン生成部４は、演算対象として注目するターゲットキュービットをプロセッサエレメント８に指示する（target）。このとき、演算に用いられる確率フラグは、レジスタ４３、４５にそれぞれ伝達されている。その後、パイプライン生成部４は、プロセッサエレメント８に確率フラグの論理演算を指示し（operation control）、ロジック部４６にて演算が行われ、演算結果である新たな確率フラグがレジスタ４７に記憶される。
【００４７】
次に、パイプライン生成部４は、演算の結果として得られた確率フラグを記憶するためのローカルメモリ９のアドレスおよび書き込み許可を通知し、ローカルメモリ９への確率フラグの書き込みをプロセッサエレメント８に指示する（write address, write enable）。
【００４８】
以上のようにして、それぞれのプロセッサエレメント８は、ローカルメモリ９から所定の状態の確率フラグを読み出して演算を行い、演算後の確率フラグをローカルメモリ９に書き戻す。なお、上述した説明では１つの状態についての処理の一連の流れを説明するために処理毎に分けて説明したが、通常のパイプライン制御と同じように各処理が順次同時に実行され、異なる状態についての処理が実行されていることは言うまでもない。
【００４９】
次に、本実施形態におけるプロセッサエレメント８にて実行される論理演算について説明する。上述したようにロジック部４６は、上記図１に示した量子アルゴリズムにおける第１および第２のステージ、すなわちＷ−Ｈ変換およびノット（ＮＯＴ）変換にそれぞれ相当する論理演算を行う。
【００５０】
図６は、ロジック部４６にて実行される論理演算の真理値表を示す図である。
図６において、確率フラグのフラグ値“０”は、状態の確率振幅の値が０であることを示し、フラグ値“１”は、状態の確率振幅の値がｐであることを示している。
【００５１】
また、図６においては、変換前（論理演算前）にてターゲットキュービットを除く他のキュービットの値が等しく、ターゲットキュービットの値が“０”である状態を「｜０＞」で示し、ターゲットキュービットの値が“１”である状態を「｜１＞」で示している。なお、状態｜０＞、｜１＞の変換後の状態は、「｜０＞’」、「｜１＞’」でそれぞれ示している。
【００５２】
図６に示したようにノット変換において、演算結果として得られる変換後の状態｜０＞’および状態｜１＞’のフラグ値は、それぞれ変換前の状態｜１＞および状態｜０＞のフラグ値である。したがって、ロジック部４６にて行われるノット変換に相当する論理演算は、状態｜０＞および状態｜１＞のフラグ値を入れ替えるような演算である。
【００５３】
当該演算は、ノット変換が指示された際に、ターゲットキュービットの値が異なる状態に係る確率フラグを選択するようにして実行しても良いし、状態｜０＞および状態｜１＞のフラグ値を入力するための信号線を状態｜１＞’および状態｜０＞’のフラグ値を出力するための信号線にそれぞれ単に接続するようにしても良い。
【００５４】
また、図６に示したＷ−Ｈ変換において、変換後の状態｜０＞’のフラグ値が“１”になるのは、変換前の状態｜０＞および状態｜１＞のフラグ値が（｜０＞のフラグ値，｜１＞のフラグ値）＝（０，１）、（１，０）、（１，１）のときである。したがって、状態｜０＞’についてロジック部４６にて行われるＷ−Ｈ変換に相当する論理演算は、状態｜０＞および状態｜１＞のフラグ値を用いた論理和（ＯＲ）演算である。当該演算は、ロジック部４６内に図７（Ａ）に示すように、状態｜０＞および状態｜１＞のフラグ値が入力され、その演算結果を状態｜０＞’のフラグ値として出力するＯＲ演算回路７１を設けることにより実現される。
【００５５】
同様に、Ｗ−Ｈ変換において、変換後の状態｜１＞’のフラグ値が“１”になるのは、変換前の状態｜０＞および状態｜１＞のフラグ値が（｜０＞のフラグ値，｜１＞のフラグ値）＝（０，１）、（１，０）のときである。したがって、状態｜１＞’についてロジック部４６にて行われるＷ−Ｈ変換に相当する論理演算は、状態｜０＞および状態｜１＞のフラグ値を用いた排他的論理和（ＥＸ（exclusive）−ＯＲ）演算である。当該演算は、ロジック部４６内に図７（Ｂ）に示すように、状態｜０＞および状態｜１＞のフラグ値が入力され、その演算結果を状態｜１＞’のフラグ値として出力するＥＸＯＲ演算回路７２を設けることにより実現される。
【００５６】
次に、ネットワーク１０について説明する。
本実施形態におけるネットワーク１０は、各プロセッサエレメント８-nが他のプロセッサエレメント８-nに対して、論理演算で用いる状態に係る確率フラグを供給できるように各プロセッサエレメント８-nを互いに通信可能なように接続すれば良い。例えば、図８に概念図を示すようなハイパーキューブネットワークをネットワーク１０に適用することでネットワーク１０を適切に構築することができる。
【００５７】
図８は、ネットワーク１０に適用可能なハイパーキューブネットワークを説明するための概念図であり、図８においては、説明をわかり易くするために３キュービットの場合を一例として示している。図８に示すように、六面体の各頂点８０〜８７が状態“０００”〜“１１１”（２値論理値）にそれぞれ対応するものとする。
【００５８】
ここで、上述したようにプロセッサエレメント８-nによる演算は、ターゲットキュービットの値のみが異なる状態に係る確率フラグを用いて行われる。すなわち、プロセッサエレメント８-nによる論理演算では、演算対象である状態を示す論理値に対してハミング距離が“１”である論理値の状態に係る確率フラグが用いられる。
【００５９】
例えば、状態“０００”についての演算では、状態“００１”、“０１０”および“１００”の何れかの確率フラグが用いられるので、図８において、頂点８０と、頂点８１、８２および８４とをそれぞれ結ぶ辺を通信線に見立てる。すなわち、ネットワーク１０は、状態“０００”に対応したプロセッサエレメントと、状態“００１”、“０１０”および“１００”にそれぞれ対応したプロセッサエレメントとを、通信線ＮＷ１、ＮＷ２およびＮＷ３を介して通信可能なように接続する。
【００６０】
他の状態に対応するプロセッサエレメントについても、上述した説明と同様にして演算対象である状態を示す論理値に対してハミング距離が“１”である論理値の状態に対応するプロセッサエレメントを通信可能なように接続することでハイパーキューブネットワークを適用したネットワーク１０を構築することができる。
【００６１】
次に、上記図１に示した量子アルゴリズムと対応させて本実施形態における並列処理プロセッサ１の動作について説明する。
なお、以下の説明では、説明の便宜上、キュービット数は８（Ｑ１〜Ｑ８）とし、最下位のキュービットをＱ１、最上位のキュービットをＱ８とする。また、並列処理プロセッサ１の初期状態として、すべてのキュービットＱ１〜Ｑ８の値が“０”である状態“00000000”に係る確率フラグのみが“１”であり、他の状態に係る確率フラグは“０”であるとする。
【００６２】
まず、並列処理プロセッサ１は、外部機器からインタフェース７を介して上記図１に示した第１のステージでのＷ−Ｈ変換に対応する命令を受けると、制御部２（命令管理部３およびパイプライン生成部４）により、Ｗ−Ｈ変換に相当する論理演算を行い所定の状態に確率を分配するように各プロセッサエレメント８-nに制御指示を出力する。
【００６３】
例えば、ターゲットキュービットがキュービットＱ１であるＷ−Ｈ変換に対応する命令を受けた場合には、各プロセッサエレメント８-nのロジック部４６にてＷ−Ｈ変換に相当する論理演算がそれぞれ行われ、状態“00000000”および“00000001”のフラグ値が“１”になる。さらに、ターゲットキュービットがキュービットＱ２であるＷ−Ｈ変換に対応する命令を受けた場合には、同様にして状態“00000000”、“00000010”、“00000001”および“00000011”のフラグ値が“１”になる。
このようにして、並列処理プロセッサ１は、Ｗ−Ｈ変換に相当する論理演算を実行し、所定の状態に確率を分配する。
【００６４】
次に、外部機器からインタフェース７を介して上記第２のステージでのノット変換に対応する命令を受けると、並列処理プロセッサ１内の制御部２は、ノット変換に相当する論理演算を行うように各プロセッサエレメント８-nに制御指示を出力する。これにより、各プロセッサエレメント８-nのロジック部４６にてノット変換に相当する論理演算が行われ、所定の状態間にて確率フラグ値が交換される。
以上のようにして、上記図１に示した量子アルゴリズムにおける第１および第２のステージに相当する演算が並列処理プロセッサ１にて行われる。
【００６５】
ここで、上記図１に示した量子アルゴリズムにおいては、第３のステージにて、第２のステージまでの演算結果に量子フーリエ変換等を施すことで解を収束させ、第４のステージにて観測を行って解を求めている。しかしながら、本実施形態における並列処理プロセッサ１は、複素数で表された状態確率ではなく、状態確率が値を有するか否かを示す確率フラグを用いて演算を行っているので、上記図１に示した量子アルゴリズムと同様に量子フーリエ変換等により解を収束させて求めることはできない。
【００６６】
そこで、本実施形態における並列処理プロセッサ１では、インクァエリ命令を用いた観測命令操作を行うことにより解を求める。インクァエリ命令を用いた観測命令操作では、まず、ターゲットキュービットとアンマスク値とを指定してインクァエリ命令を発行する。発行されたインクァエリ命令を受けた並列処理プロセッサ１は、指定されたアンマスク値に対応する状態の中に、確率フラグが“１”である状態が存在するか否かを調べる。
【００６７】
その結果に応じて、並列処理プロセッサ１は、制御部２が有するアンサーレジスタ６内の指定されたターゲットキュービットに対応するフィールドに値（“０”または“１”）を書き込む。
上記操作を繰り返し行うことにより、本実施形態における並列処理プロセッサ１は、アンサーレジスタ６に解を記憶し、外部からの要求に応じてインタフェース７を介して出力する。
【００６８】
図９は、インクァエリ命令を用いた観測命令操作の具体例を示す図である。図９においては、状態“０１０”、“１００”、“１１０”および“１１１”に係る確率フラグが“１”であるとし、解として確率フラグが“１”である状態の値の最小値（“０１０”）を求める場合を一例として示している。
【００６９】
まず、インクァエリ命令にてターゲットキュービットを最上位キュービットに指定するとともに、アンマスク値ＢＭを“０＊＊”（＊はDon't care）に指定する。インクァエリ命令を受けた並列処理プロセッサ１は、指定されたアンマスク値ＢＭに対応した状態“０００”、“００１”、“０１０”および“０１１”の中に、確率フラグが“１”である状態が存在するか否かを調べる。その結果、確率フラグが“１”である状態が存在するので、並列処理プロセッサ１は、アンサーレジスタ６内の最上位ビットに“０”を書き込む。
【００７０】
次に、インクァエリ命令にてターゲットキュービットを３つの中の真中のキュービットに指定するとともに、上記結果を反映させアンマスク値ＢＭを“００＊”に指定する。インクァエリ命令を受けた並列処理プロセッサ１は、アンマスク値ＢＭに対応した状態“０００”および“００１”に、確率フラグが“１”である状態が存在しないので、アンサーレジスタ６内の真中のビットに“１”を書き込む。
【００７１】
続いて、インクァエリ命令にてターゲットキュービットを最下位のキュービットに指定するとともに、アンマスク値ＢＭを“０１０”に指定する。インクァエリ命令を受けた並列処理プロセッサ１は、アンマスク値ＢＭに対応した状態“０１０”の確率フラグが“１”であるので、アンサーレジスタ６内の最下位ビットに“０”を書き込む。
以上のようにして、インクァエリ命令を用いた観測命令操作により並列処理プロセッサ１にて例えば最小値等の所望の解を求めることができる。
【００７２】
次に、本実施形態における並列処理プロセッサ１にて用いられる命令フォーマットについて説明する。
図１０は、命令フォーマットの一例を示す図である。図１０において、１０１は命令を示す命令フィールドであり、１０２はターゲットキュービットを示すターゲットフィールドである。
【００７３】
また、１０３、１０４は、制御キュービットに応じて演算を行うか否かを指示するためのコントロールフィールドであり、（コントロール＿０，コントロール＿１）＝（０，０）の場合には、アンサーレジスタ６の値を返す。また、（コントロール＿０，コントロール＿１）＝（０，１）および（１，０）の場合には、それぞれ制御キュービットの値が“１”および“０”の状態について演算を行い、（コントロール＿０，コントロール＿１）＝（１，１）の場合には、制御キュービットの値にかかわらず演算を行う。
【００７４】
図１１は、プログラム可能な論理素子（ＦＰＧＡ：Field Programmable Gate Array、ＣＰＬＤ：Complex Programmable Logic Device等）を用いて作成した本実施形態における並列処理プロセッサとソフトウェア・シミュレーションとの演算性能を示す図である。
【００７５】
図１１に示したように、並列処理プロセッサは、１．５Ｍゲートを有するプログラム可能な論理素子を用いて、プロセッサエレメントと６４ビットの記憶容量を有するローカルメモリとをそれぞれ１０２４個配置し、周波数６０ＭＨｚのクロック信号で１０２４個のプロセッサエレメントを並列動作させる。すなわち、当該並列処理プロセッサは、１６キュービット相当の演算が可能である。このとき、並列処理プロセッサは、毎秒１．６Ｍ回の演算（１．６Ｍoperations/sec）を実行する。
【００７６】
一方、動作クロック６００ＭＨｚであり、５１２ＫＢのキャッシュメモリを有するＣＰＵを用いたソフトウェア・シミュレーションでは、毎秒０．８Ｋ回の演算（０．８Ｋoperations/sec）を実行する。
したがって、本実施形態における並列処理プロセッサの演算性能は、ソフトウェア・シミュレーションの演算性能の２０００倍程度の演算性能を有することがわかる。
【００７７】
以上、詳しく説明したように本実施形態によれば、Ｎビット（Ｎは自然数）で表現可能な論理値の状態について演算を行う際、複数のプロセッサエレメント８がそれぞれ備えるロジック部４６にて、論理値の状態確率が０と異なる値を有するか否かを１ビットで示した確率フラグを用い、命令に応じた論理演算を互いに異なる論理値の状態について並列して行う。
【００７８】
これにより、複数のビットを用い複素数で表される状態確率についての複素積和演算に相当する演算を、１ビットの確率フラグを用いた簡単な論理演算により行うことができるので、演算機能を損なうことなく、論理演算処理だけで演算を行うことにより演算を高速で実行することができる。
【００７９】
また、複数のビットを用いて表していた１つの論理値の状態を、１ビットの確率フラグにより表すことで、プロセッサエレメント等の回路構成が非常に簡素になり、１つの論理値の状態当たりの演算に要する回路面積を大幅に低減することができ、並列処理プロセッサ内での演算の並列度を向上させ、演算規模を容易に大きくすることができる。
【００８０】
なお、上述した本実施形態における並列処理プロセッサ１は、ショアの量子アルゴリズムに限らず、その他の量子アルゴリズムについても適用可能であり、例えばデータベース検索に関するグローバー（Ｇｒｏｖｅｒ）の量子アルゴリズムについても適用することができる。
【００８１】
また、上記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００８２】
【発明の効果】
以上説明したように、本発明によれば、Ｎビットで表現可能な論理値の状態について演算を行う際、互いに異なる所定の論理値の状態について複数の演算回路が供給される論理値の状態を示すフラグを用いて論理演算を並列に行う。
これにより、複素積和演算で行っていた論理値の状態についての演算を論理演算で行うことができ、量子コンピュータと同等の演算機能を有しながらも、論理値の状態についての演算を高速で実行することができる。さらに、複数のビットで表されていた論理値の状態をフラグにより表すことで、１つの論理値の状態の演算に要する回路面積を小さくすることができ、演算速度を低下させることなく、演算規模の大規模化を容易に行うことができる。
【図面の簡単な説明】
【図１】量子アルゴリズムを説明するための図である。
【図２】本発明の実施形態による半導体演算装置を適用した並列処理プロセッサの一構成例を示すブロック図である。
【図３】プロセッサエレメントの要素的特徴を示す構成図である。
【図４】プロセッサエレメントの具体的な構成例を示す図である。
【図５】本実施形態における並列処理プロセッサでのパイプライン制御の一例を示す図である。
【図６】論理演算における真理値表を示す図である。
【図７】ロジック部の構成例を示す図である。
【図８】ハイパーキューブネットワークを説明するための概念図である。
【図９】観測命令操作を説明するための図である。
【図１０】命令フォーマットの一例を示す図である。
【図１１】本実施形態における並列処理プロセッサおよびソフトウェア・シミュレーションのそれぞれの演算性能を示す図である。
【図１２】複素数で表された状態の確率振幅を用いて演算を行うプロセッサエレメントの構成を示すブロック図である。
【符号の説明】
１  並列処理プロセッサ
２  制御部
３  命令管理部
４  パイプライン生成部
５  命令キャッシュ
６  アンサーレジスタ
７  インタフェース
８-1、８-2、８-3、…  プロセッサエレメント（ＰＥ）
９-1、９-2、９-3、…  ローカルメモリ
１０  ネットワーク
【図１】
0003708072.tif 000002
【図２】
0003708072.tif 000003
【図３】
0003708072.tif 000004
【図４】
0003708072.tif 000005
【図５】
0003708072.tif 000006
【図６】
0003708072.tif 000007
【図７】
0003708072.tif 000008
【図８】
0003708072.tif 000009
【図９】
0003708072.tif 000010
【図１０】
0003708072.tif 000011
【図１１】
0003708072.tif 000012
【図１２】
0003708072.tif 000013