(57)【特許請求の範囲】
【請求項１】
Ｎビット（Ｎは自然数）で表現可能なすべての論理値の状態について演算を並列して行い、それぞれの演算結果を保持する半導体演算装置であって、
供給される論理値の状態を示す確率情報を用いて、互いに異なる論理値の状態について演算を並列して行い、演算結果をそれぞれ保持する複数の演算回路と、
上記複数の演算回路にてエラーに相当する演算を行うように指示するエラー生成部を有し、上記エラー生成部の指示および外部からの命令に応じて上記複数の演算回路に演算を指示する制御回路とを備えることを特徴とする半導体演算装置。
【請求項２】
上記エラー生成部は、上記複数の演算回路にてエラーに相当する演算を行うか否かを決定するエラー発生部と、
上記エラーに相当する演算の種別を決定するエラー種別決定部とを備えることを特徴とする請求項１に記載の半導体演算装置。
【請求項３】
上記エラー種別決定部は、ビットエラーと、位相エラーと、ビットエラーおよび位相エラーとのうち、何れのエラーに相当する演算を行うか決定することを特徴とする請求項２に記載の半導体演算装置。
【請求項４】
上記エラー生成部および上記エラー種別決定部は、所定の期間毎に値が変化する乱数に基づいて、上記エラーに相当する演算を行うか否か、およびエラーに相当する演算の種別をそれぞれ決定することを特徴とする請求項２または３に記載の半導体演算装置。
【請求項５】
上記エラーに相当する演算の実行頻度を外部から制御可能であることを特徴とする請求項２〜４の何れか１項に記載の半導体演算装置。
【請求項６】
上記エラーに相当する演算の種別毎に上記エラーに相当する演算の実行頻度を外部から制御可能であることを特徴とする請求項５に記載の半導体演算装置。
【請求項７】
上記確率情報は、上記論理値の状態を示す確率を２ビットで示すことを特徴とする請求項１〜６の何れか１項に記載の半導体演算装置。
【請求項８】
上記確率情報は、上記論理値の状態を示す確率値の絶対値が０とは異なる値であるか否か、および上記論理値の状態を示す確率の位相をそれぞれ１ビットで示すことを特徴とする請求項７に記載の半導体演算装置。
【請求項９】
上記制御回路は、上記エラーに相当する演算と、異なる上記エラーに相当する演算との間に、少なくとも１つの外部からの命令に応じた演算を指示することを特徴とする請求項１〜８の何れか１項に記載の半導体演算装置。
【請求項１０】
上記演算回路にそれぞれ対応して設けられた、複数の上記論理値の状態を記憶する複数の記憶回路をさらに備え、
上記複数の記憶回路が記憶する上記複数の論理値の状態は、上記記憶回路毎に互いに異なり、
上記演算回路は、対応する上記記憶回路に記憶された上記複数の論理値の状態について演算可能であることを特徴とする請求項１〜９の何れか１項に記載の半導体演算装置。
【請求項１１】
上記演算回路は、上記制御回路から演算に応じて供給される係数情報と、上記供給される所定の論理値の状態を示す確率情報および上記所定の論理値とは演算対象ビットの値だけが異なる論理値の状態を示す確率情報との論理演算をそれぞれ行い、当該論理演算の結果を加算演算することを特徴とする請求項１〜１０の何れか１項に記載の半導体演算装置。
【請求項１２】
上記複数の演算回路は、ネットワークを介して互いに通信可能なように接続されていることを特徴とする請求項１〜１１の何れか１項に記載の半導体演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体演算装置に関し、特に、Ｎビット（Ｎは自然数）で表現可能な２Ｎ個のすべての論理値について演算を並列に実行する半導体演算装置に用いて好適なものである。
【０００２】
【従来の技術】
従来の計算機等が備える半導体演算装置（例えばＣＰＵ）は、１つのデータ値（論理値）を用いて演算処理や条件分岐処理等を逐次実行する従来の演算方式を用いて演算を行っていた。この従来から利用されている演算方式とは異なり、量子力学の原理に基づく新しい演算方式を用いて演算を行う量子コンピュータが提案されている。
【０００３】
量子コンピュータは、キュービット（量子ビット）という単位で構成された量子力学に基づく状態の重ね合わせを利用し、重ね合わされた状態に量子力学的な操作を施すことにより各状態に対する演算を並列して実行する。したがって、量子コンピュータは、理論上、すべての可能な状態（値として存在可能なデータ値）について、１回の演算を行うだけですべての可能な状態の演算結果を同時に、かつ瞬時に得ることができる。
【０００４】
上記量子コンピュータは、量子力学に基づく状態の重ね合わせを利用するので、核磁気共鳴、マイクロ波、レーザー等を用いた実際に量子力学に基づく現象が観測可能な物理系で実現されてきた。最近では、量子コンピュータにおいて、２７個の状態が同時に存在する７キュービットまで演算可能な実際の物理系が提案されている。
【０００５】
【発明が解決しようとする課題】
しかしながら、量子力学に基づく現象が観測可能な実際の物理系を用いた従来の量子コンピュータにおいては、温度や磁場等の外的要因により「デコヒーレンス」と呼ばれるエラーが発生し、量子コンピュータの内部に保たれる位相状態に影響を及ぼしていた。上記「デコヒーレンス」と呼ばれるエラーには、位相状態の確率が他の位相状態の確率と入れ替わるビットエラーや、位相状態における位相が反転する位相エラー（フェイズエラー）がある。
【０００６】
このエラーが量子コンピュータでの演算結果に与える影響については、エラーを加えた状態での量子コンピュータにおける演算のソフトウェアシミュレーションを従来の計算機（コンピュータ）等を用いて実行し、演算結果の予測等の評価を行っていた。
【０００７】
しかしながら、上述のようなソフトウェアシミュレーションによる演算結果の予測等は、実用的な量子アルゴリズムに対して適用すると多大な演算時間を要するので、従来は単純な演算（例えば、キュービット数が少ない等）を行う場合についてのみ行われていた。演算可能なキュービット数の増加等により実際の物理系を用いた量子コンピュータの演算能力が向上し、量子コンピュータにて大規模かつ複雑な演算を行った場合には、ソフトウェアシミュレーションによる演算結果の予測等に膨大な時間を要してしまい、エラーが演算結果に与える影響を評価することは困難である。
【０００８】
本発明は、このような事情に鑑みて成されたものであり、実際の物理系を用いた量子コンピュータにて発生するエラーを演算に反映させながらも、量子コンピュータにおける演算と同等の演算を高速に実行することができるようにすることを目的とする。
【０００９】
【課題を解決するための手段】
本発明の半導体演算装置は、Ｎビット（Ｎは自然数）で表現可能なすべての論理値の状態について演算を並列して行い、それぞれの演算結果を保持する半導体演算装置であって、供給される論理値の状態を示す確率情報を用いて、互いに異なる論理値の状態について演算を並列して行い、演算結果をそれぞれ保持する複数の演算回路と、上記複数の演算回路にてエラーに相当する演算を行うように指示するエラー生成部を有し、上記エラー生成部の指示および外部からの命令に応じて上記複数の演算回路に演算を指示する制御回路とを備えることを特徴とする。
【００１０】
本発明の半導体演算装置の他の特徴とするところは、エラー生成部は、複数の演算回路にてエラーに相当する演算を行うか否かを決定するエラー発生部と、エラーに相当する演算の種別を決定するエラー種別決定部とを備えることを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、エラー種別決定部は、ビットエラーと、位相エラーと、ビットエラーおよび位相エラーとのうち、何れのエラーに相当する演算を行うか決定することを特徴とする。
【００１１】
本発明の半導体演算装置のその他の特徴とするところは、エラー生成部およびエラー種別決定部は、所定の期間毎に値が変化する乱数に基づいて、エラーに相当する演算を行うか否か、およびエラーに相当する演算の種別をそれぞれ決定することを特徴とする。
【００１２】
本発明の半導体演算装置のその他の特徴とするところは、エラーに相当する演算の実行頻度を外部から制御可能であることを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、エラーに相当する演算の種別毎にエラーに相当する演算の実行頻度を外部から制御可能であることを特徴とする。
【００１３】
本発明の半導体演算装置のその他の特徴とするところは、確率情報は、論理値の状態を示す確率を２ビットで示すことを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、確率情報は、論理値の状態を示す確率値の絶対値が０とは異なる値であるか否か、および論理値の状態を示す確率の位相をそれぞれ１ビットで示すことを特徴とする。
【００１４】
本発明の半導体演算装置のその他の特徴とするところは、制御回路は、エラーに相当する演算と、異なるエラーに相当する演算との間に、少なくとも１つの外部からの命令に応じた演算を指示することを特徴とする。
【００１５】
本発明の半導体演算装置のその他の特徴とするところは、演算回路にそれぞれ対応して設けられた、複数の論理値の状態を記憶する複数の記憶回路をさらに備え、上記複数の記憶回路が記憶する上記複数の論理値の状態は、上記記憶回路毎に互いに異なり、演算回路は、対応する上記記憶回路に記憶された上記複数の論理値の状態について演算可能であることを特徴とする。
【００１６】
本発明の半導体演算装置のその他の特徴とするところは、演算回路は、制御回路から演算に応じて供給される係数情報と、供給される所定の論理値の状態を示す確率情報および上記所定の論理値とは演算対象ビットの値だけが異なる論理値の状態を示す確率情報との論理演算をそれぞれ行い、当該論理演算の結果を加算演算することを特徴とする。
本発明の半導体演算装置のその他の特徴とするところは、複数の演算回路は、ネットワークを介して互いに通信可能なように接続されていることを特徴とする。
【００１７】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。
本発明の実施形態による半導体演算装置を適用した並列処理プロセッサは、集積回路を用いて量子コンピュータの技術を実現するものである。
上述したように量子コンピュータは量子的な物理現象を利用したものであり、古典的な物理現象（古典電磁気学）を利用した集積回路によりそのまま実現することは困難である。しかし、集積回路上の複数のデバイスが、重ね合わされた複数の状態についてそれぞれ記憶し、並列して演算を行うことは可能である。
【００１８】
そこで、本実施形態における並列処理プロセッサは、量子力学に基づいて重ね合わされた複数の状態の状態確率（論理値の確率振幅）を記憶するとともに、記憶した状態について演算を行う複数のプロセッサエレメント（演算回路）を集積回路に設ける。上述のように構成した並列処理プロセッサにて、さらに上記複数のプロセッサエレメントを並列動作させる。これにより、本実施形態における並列処理プロセッサは、量子計算を行うための公知の量子アルゴリズムと同様にして複数の状態についての演算を並列して実行し、上述した量子コンピュータと同等の演算機能を実現する。
【００１９】
まず、量子アルゴリズムについて説明する。
図１は、量子アルゴリズムの流れを説明するための図であり、ショア（Ｓｈｏｒ）のアルゴリズムを初めとする量子アルゴリズムは、一般に図１に示すように４つのステージ（段階）で構成される。なお、図１においては、８キュービットの場合を一例として示しており、横方向に伸びる実線は各キュービットＱ１〜Ｑ８にそれぞれ対応する。
以下、各ステージについて説明する。
【００２０】
第１のステージ（Ｓｔａｇｅ１）では、ウォルシュ・アダマール変換（Ｗａｌｓｈ−Ｈａｄａｍａｒｄ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ：以下、「Ｗ−Ｈ変換」と称す。）Ｓ１−１、Ｓ１−２、Ｓ１−３、Ｓ１−４、…を用いて、所定の状態に確率を分配する。これにより、第１のステージでは、所定の状態に等しい確率を割り当て、量子力学に基づく状態の重ね合わせの初期状態を生成する。
【００２１】
第２のステージ（Ｓｔａｇｅ２）では、ノット（ＮＯＴ）変換（制御ＮＯＴ操作）Ｓ２−１、Ｓ２−２、Ｓ２−３、…を用いて、上記第１のステージにて割り当てた確率を状態間で交換する。この第２ステージにおける確率の交換操作は、ＣＰＵ等を備えた従来の計算機における加算演算や乗算演算に相当する。
【００２２】
なお、図１において、例えばノット変換Ｓ２−１は、制御キュービットがＱ３、演算対象として注目するターゲットキュービットがＱ８であることを示している。このとき、制御キュービットＱ３の値が“１”であれば、ターゲットキュービットＱ８の値のみが異なり、他のキュービットの値が等しい状態間にて確率の交換をそれぞれ行う。一方、制御キュービットＱ３の値が“０”であれば、確率の交換は行わずに確率を保持する。ノット変換Ｓ２−２、Ｓ２−３、…においても同様である。
【００２３】
第３のステージ（Ｓｔａｇｅ３）では、回転変換や位相シフト（フェイズシフト）変換による量子フーリエ変換（Ｑｕａｎｔｕｍ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ）Ｓ３を用いて干渉により解を一点に収束させる。さらに、第４のステージ（Ｓｔａｇｅ４）では、観測Ｓ４を行うことで解を求める。
【００２４】
ここで、上述した量子アルゴリズムにおける各変換にて行われる演算は、重ね合わされた各状態の状態確率とユニタリ行列とを用いた行列演算（ユニタリ変換）である。また、重ね合わされた各状態の状態確率は、一般に複素数を用いて示される。つまり、上記量子アルゴリズムにおける各演算は、各状態の状態確率とユニタリ行列の行列要素を用いた複素積和演算である。
【００２５】
本発明者らは、上記図１に示したような量子アルゴリズムにおいて、第１および第２のステージでは各状態の状態確率に対して位相情報を変換する（位相操作を含む）演算は実行されず、第２のステージが終了するまで各状態の状態確率は、０および値±ｐ（ｐは実数であり、０＜ｐ≦１）の３種類の値の何れかの値であることを見出した。すなわち、量子アルゴリズムの第１および第２のステージでは、一般に量子力学において複素数を用いて表される各状態の状態確率を、複数のビットを用いて忠実に複素数表示しなくとも、上記３種類の値を識別可能なように示せば、情報量を損失することなく（情報量は変わらずに）等価な演算を行うことが可能であることを見出した。
【００２６】
そこで、本実施形態における並列処理プロセッサは、Ｎ（Ｎは自然数）ビットで表現可能なすべての論理値の状態について、各状態の状態確率を２ビットの確率情報により示して演算を実行する。さらには、上記量子アルゴリズムに従った通常の演算に加え、実際の物理系を用いた量子コンピュータにて発生する「デコヒーレンス」と呼ばれるエラーに相当する演算を任意に実行する。
【００２７】
上記確率情報の第１のビット（下位ビット、ＬＳＢ）は、状態確率が値を有するか否か（絶対値がｐであるか０であるか）を示し、第２のビット（上位ビット、ＭＳＢ）は、状態確率の位相（符号＋または−）を示す。すなわち、状態確率の値が「＋ｐ」であれば、確率情報は“０１”で示され、状態確率の値が「−ｐ」であれば、確率情報は“１１”で示される。また、状態確率の値が「０」であれば、確率情報は“００”で示される。
【００２８】
各状態の状態確率を上述のように確率情報で表したとき、上述した量子アルゴリズムの第１および第２のステージにてそれぞれ行われるＷ−Ｈ変換およびノット変換は、図２（Ａ）、（Ｂ）に示す行列を用いてそれぞれ行われる。
【００２９】
また、「デコヒーレンス」と呼ばれるエラーに相当する演算は、図２（Ｃ）、（Ｄ−１）、（Ｄ−２）、（Ｅ−１）、（Ｅ−２）に示す行列を用いてそれぞれ行われる。図２（Ｃ）は、状態確率が状態間で入れ替わるビットエラーに相当する演算を行うための行列であり、図２（Ｄ−１）、（Ｄ−２）は、状態確率の位相が反転する位相エラーに相当する演算を行うための行列である。また、図２（Ｅ−１）、（Ｅ−２）は、ビットエラーと位相エラーとが同時に発生した場合のエラーに相当する演算を行うための行列である。
【００３０】
以下に、ターゲットキュービットの値のみが異なり、ターゲットキュービットの値がそれぞれ“０”、“１”である状態の演算前の状態確率を｜０＞、｜１＞で示し、上記図２に示した行列を用いた演算により得られる演算後の状態確率｜０＞’、｜１＞’を示す。
図２（Ａ）に示した行列を用いた演算（Ｗ−Ｈ変換）での演算後の状態確率は、
｜０＞’＝｜０＞＋｜１＞、｜１＞’＝｜０＞−｜１＞
になり、図２（Ｂ）に示した行列を用いた演算（ノット変換）での演算後の状態確率は、
｜０＞’＝｜１＞、｜１＞’＝｜０＞
になる。
【００３１】
図２（Ｃ）に示した行列を用いた演算（ビットエラーに相当）での演算後の状態確率は、
｜０＞’＝｜１＞、｜１＞’＝｜０＞
になる。
【００３２】
また、図２（Ｄ−１）に示した行列を用いた演算（ターゲットキュービットの値が“１”の状態での位相エラーに相当）での演算後の状態確率は、
｜０＞’＝｜０＞、｜１＞’＝−｜１＞
になる。同様に、図２（Ｄ−２）に示した行列を用いた演算（ターゲットキュービットの値が“０”の状態での位相エラーに相当）での演算後の状態確率は、
｜０＞’＝−｜０＞、｜１＞’＝｜１＞
になる。
【００３３】
また、図２（Ｅ−１）に示した行列を用いた演算（ビットエラーおよび位相エラーに相当）での演算後の状態確率は、
｜０＞’＝｜１＞、｜１＞’＝−｜０＞
になり、同様に、図２（Ｅ−２）に示した行列を用いた演算での演算後の状態確率は、
｜０＞’＝−｜１＞、｜１＞’＝｜０＞
になる。
【００３４】
図３は、本実施形態における並列処理プロセッサ１の一構成例を示すブロック図である。
図３において、インタフェース２は、並列処理プロセッサ１と外部に接続された外部機器（外部回路）等との間で命令やデータの授受等を行うためのものである。
【００３５】
制御部３は、並列処理プロセッサ１内の各機能部、例えば複数のプロセッサエレメント７−ｎ（ｎは添え字であり、ｎ＝１、２、３、…）等を制御する。また、制御部３は、エラー生成部４を有する。
エラー生成部４は、上述したビットエラーおよび位相エラー等のエラーに相当する演算を量子アルゴリズムに応じた通常の演算に任意に挿入して実行させ、エラーを擬似的に発生させるためのものである。エラー生成部４は、エラー発生部５およびエラー種別決定部６を有する。
【００３６】
エラー発生部５は、複数のプロセッサエレメント７−ｎで行われる演算にて、通常の演算（量子計算、量子操作）の間にエラーに相当する演算を実行させるか否か、すなわちデコヒーレンスを擬似的に発生させるか否かを決定する。エラー種別決定部６は、擬似的に発生させるエラーの種別、すなわち実行するエラーに相当する演算の種別を決定するものであり、▲１▼ビットエラー、▲２▼位相エラー、▲３▼ビットエラーおよび位相エラー、の中から何れのエラーに相当する演算を実行させるか決定する。
【００３７】
ここで、エラー発生部５およびエラー種別決定部６は、通常の演算毎などの所定の期間毎に値が変化するような乱数に基づいて、エラーに相当する演算を実行するか否か、および何れのエラーに相当する演算を実行するかをそれぞれ決定する。また、エラー発生部５は、エラーに相当する演算を実行すると決定した際には、さらに何れのキュービットをターゲットキュービットにするか決定する。
【００３８】
例えば、エラー発生部５は、乱数の値が予め定めた値等の条件を満足するときに、ターゲットキュービットを決定し、エラーに相当する演算を実行させる。また、例えば、エラー種別決定部６は、乱数の値が予め定めた値等の条件を満足するときに、上記条件に応じて実行するエラーに相当する演算を決定する。エラー発生部５およびエラー種別決定部６に設定する上記条件は、外部から入力することで設定および変更が可能であり、各エラーに相当する演算の実行頻度（エラーの発生確率）を任意に制御することができる。
なお、上記乱数は、エラー生成部４が備える図示しない乱数発生器により発生され、エラー発生部５およびエラー種別決定部６に供給される。
【００３９】
プロセッサエレメント７−ｎは、制御部３から供給される指示に従い、量子力学に基づいて重ね合わされた状態における所定の状態について演算を行う。プロセッサエレメント７−ｎは、確率情報によりそれぞれ示される複数の状態の状態確率を記憶するためのローカルメモリ８−ｎ（ｎは添え字であり、ｎ＝１、２、３、…）をそれぞれ有する。すなわち、本実施形態のプロセッサエレメント７−ｎのそれぞれは、量子力学に基づいて重ね合わされた状態の中の複数の状態が対応付けられている。
【００４０】
なお、各プロセッサエレメント７−ｎにそれぞれ対応付けられている状態は、複数のプロセッサエレメント７−ｎにて重複しないとともに、並列処理プロセッサ１にて演算可能なキュービット数に応じた任意の状態（論理値）は、何れかのプロセッサエレメント７−ｎに対応付けられている。
したがって、本実施形態における並列処理プロセッサ１は、例えばプロセッサエレメント７−ｎを１０２４（＝２１０）個設け、ローカルメモリ８−ｎにそれぞれ６４（＝２６）個の状態の状態確率を記憶することで、１０２４×６４個の状態、すなわち１６キュービット相当の演算を行うことができる。
【００４１】
また、各プロセッサエレメント７−ｎは、演算の際に用いる状態に係る確率情報を他のプロセッサエレメント７−ｎとの間で互いに送受信可能なようにネットワーク９を介して接続されている。
ネットワーク９は、例えば、図４に概念図を示すようなハイパーキューブネットワークを適用することで各プロセッサエレメント７−ｎを適切に接続することができる。
図４は、ネットワーク９に適用可能なハイパーキューブネットワークを説明するための概念図であり、図４においては、説明をわかり易くするために３キュービットの場合を一例として示している。図４に示すように、六面体の各頂点４０〜４７が状態“０００”〜“１１１”（２値論理値）にそれぞれ対応するものとする。
【００４２】
ここで、プロセッサエレメント７−ｎによる演算は、ターゲットキュービットの値のみが異なる状態に係る確率情報を用いて行われる。すなわち、プロセッサエレメント７−ｎによる演算では、演算対象である状態を示す論理値に対してハミング距離が“１”である論理値の状態に係る確率情報が用いられる。
【００４３】
例えば、状態“０００”についての演算では、状態“００１”、“０１０”および“１００”の何れかの確率情報が用いられるので、図４において、頂点４０と、頂点４１、４２および４４とをそれぞれ結ぶ辺を通信線に見立てる。すなわち、ネットワーク９は、状態“０００”に対応したプロセッサエレメントと、状態“００１”、“０１０”および“１００”にそれぞれ対応したプロセッサエレメントとを、通信線ＮＷ１、ＮＷ２およびＮＷ３を介して通信可能なように接続する。
【００４４】
他の状態に対応するプロセッサエレメントについても、上述した説明と同様にして演算対象である状態を示す論理値に対してハミング距離が“１”である論理値の状態に対応するプロセッサエレメントを通信可能なように接続することでハイパーキューブネットワークを適用したネットワーク９を構築することができる。
【００４５】
次に、本実施形態におけるプロセッサエレメント（ＰＥ）について詳細に説明する。
図５は、本実施形態におけるプロセッサエレメントの構成例を示すブロック図である。図５において、７はプロセッサエレメント、８はローカルメモリであり、上記図３に示したプロセッサエレメント７−ｎ、ローカルメモリ８−ｎにそれぞれ対応する。
【００４６】
プロセッサエレメント７は、セレクタ５１、ロジック部５２、レジスタ５３、５４および加算部５４により構成される。
セレクタ５１は、ローカルメモリ８から読み出される確率情報ＰＡ、他のプロセッサエレメントから供給される確率情報ＰＢおよび上記図３に示した制御部３から供給される係数情報ＣＯが入力される。セレクタ５１は、制御部３から供給される指示に応じて確率情報ＰＡまたは確率情報ＰＢの一方を選択し、選択した確率情報と係数情報ＣＯとをロジック部５２に供給する。
【００４７】
ここで、係数情報ＣＯは、上記図２に示した行列の行列要素値を２ビットで示したものであり、例えば第１のビット（下位ビット、ＬＳＢ）は行列要素値の絶対値を示し、第２のビット（上位ビット、ＭＳＢ）は行列要素値の符号（＋または−）を示す。すなわち、行列要素値「＋１」、「−１」、「０」は、係数情報ＣＯ“０１”、“１１”、“００”でそれぞれ示される。
【００４８】
ロジック部５２は、セレクタ５１から供給される確率情報と係数情報ＣＯとの論理演算を行い、演算結果をレジスタ５３に出力する。上述のように確率情報および係数情報において第１のビットが値を示し、第２のビットが符号を示す場合には、ロジック部５２は、確率情報の第１のビットと係数情報の第１のビットとの論理積演算（ＡＮＤ演算）を行い、確率情報の第２のビットと係数情報の第２のビットとの排他的論理和演算（ＥＸ（ｅｘｃｌｕｓｉｖｅ）−ＯＲ演算）を行う。つまり、ロジック部５２は、ＡＮＤ演算回路とＥＸ−ＯＲ演算回路とで構成することができる。
【００４９】
レジスタ５３は、ロジック部５２から供給される演算結果を一時的に記憶し、加算部５４に出力する。
加算部５４は、レジスタ５３、５５からそれぞれ供給される値の論理演算（加算演算）を行い、加算結果を演算後の確率情報としてローカルメモリ８、あるいはネットワーク９を介して他のプロセッサエレメント等に供給したり、レジスタ５５に供給したりする。
【００５０】
ローカルメモリ８は、プロセッサエレメント７に対応付けられている複数の状態の確率情報を記憶するためのものである。このようにローカルメモリ８を設けて、１つのプロセッサエレメント７に複数の状態を対応付けることで、１つのプロセッサエレメントに１つの状態を割り当てるよりも、プロセッサエレメント７を有効に活用し、１つの状態当たりに要するプロセッサエレメントの回路面積を低減することができる。
【００５１】
次に、上記図１を参照しながら本実施形態における並列処理プロセッサ１の動作について説明する。
なお、以下の説明では、説明の便宜上、キュービット数は８（Ｑ１〜Ｑ８）とし、最下位のキュービットをＱ１、最上位のキュービットをＱ８とする。また、並列処理プロセッサ１の初期状態として、すべてのキュービットＱ１〜Ｑ８の値が“０”である状態“００００００００”に係る確率情報のみが“０１”であり、他の状態に係る確率情報は“００”であるとする。
【００５２】
まず、並列処理プロセッサ１が、外部機器からインタフェース２を介して上記図１に示した第１のステージでのＷ−Ｈ変換に対応する命令を受けると、制御部３は、上記図２（Ａ）に示した行列に係る係数情報を各プロセッサエレメント７−ｎに演算する状態に応じて供給する。また、制御部３は、供給される係数情報と確率情報との論理演算等を行い所定の状態に確率を分配するように各プロセッサエレメント７−ｎに指示を出力する。
【００５３】
例えば、ターゲットキュービットがキュービットＱ１であるＷ−Ｈ変換に対応する命令を受けた場合には、各プロセッサエレメント７−ｎのロジック部５２や加算部５４等により所定の論理演算がそれぞれ行われ、状態“００００００００”および“０００００００１”の確率情報が“０１”になる。さらに、ターゲットキュービットがキュービットＱ２であるＷ−Ｈ変換に対応する命令を受けた場合には、同様にして状態“００００００００”、“００００００１０”、“０００００００１”および“００００００１１”の確率情報が“０１”になる。
【００５４】
次に、外部機器からインタフェース２を介して上記第２のステージでのノット変換に対応する命令を受けると、並列処理プロセッサ１内の制御部３は、上記図２（Ｂ）に示した行列に係る係数情報を各プロセッサエレメント７−ｎに供給するとともに、供給される係数情報と確率情報との論理演算を行うように各プロセッサエレメント７−ｎに指示を出力する。これにより、各プロセッサエレメント７−ｎにて論理演算が行われ、所定の状態間にて確率情報が交換される。
【００５５】
以上のようにして、上記第１および第２のステージに相当する通常の演算が並列処理プロセッサ１にて行われる。このとき、制御部３は、エラー生成部４での決定に従って、図６に示すようにエラーに相当する演算を上記通常の演算の間に任意に挿入し各プロセッサエレメント７−ｎにて実行させる。
【００５６】
図６は、量子アルゴリズムの第１および第２のステージにおいて、並列処理プロセッサ１で行われる通常の演算とエラーに相当する演算とを説明するための図であり、説明をわかり易くするために３キュービットの場合を一例として示している。
図６において、横方向に伸びる実線Ｑ１１、Ｑ１２およびＱ１３は、各キュービットに対応する。ＱＯ１、ＱＯ２およびＱＯ３は、それぞれ量子アルゴリズムに応じた通常の演算（量子計算）である。
【００５７】
ＥＲ１、ＥＲ２、ＥＲ３およびＥＲ４は、エラーに相当する演算を挿入可能な箇所を示している。つまり、ＥＲ１〜ＥＲ４は、上述したようにエラー生成部４（エラー発生部５およびエラー種別決定部６）での決定に応じて、何れか１つのキュービットをターゲットキュービットにした任意のエラーに相当する演算がそれぞれ実行可能である。なお、エラーに相当する演算をＥＲ１〜ＥＲ４にそれぞれ複数挿入することは可能であるが、量子計算においては１次のエラーに対して２次以上のエラーの発生確率は著しく低いので、本実施形態ではＥＲ１〜ＥＲ４は、１つのエラーに相当する演算がそれぞれ挿入可能であるとする。
【００５８】
例えば、図２（Ｄ−２）に示した行列を用いた、ターゲットキュービットをＱ１２とする位相エラーに相当する演算をＥＲ２に挿入し実行する場合について説明する。なお、以下の説明では、状態“０００”に着目して説明する。
【００５９】
まず、位相エラーに相当する演算を実行するために、制御部３は、状態“０００”についての演算を行うプロセッサエレメント７に、行列要素値「−１」に対応する係数情報“１１”を供給し、状態“０００”の確率情報との論理演算を行うように指示する。プロセッサエレメント７では、状態“０００”の確率情報と係数情報“１１”との論理演算がロジック部５２にて行われ、演算結果がレジスタ５３、加算部５４を介してレジスタ５５に一時的に記憶される。
【００６０】
さらに、制御部３は、状態“０００”についての演算を行うプロセッサエレメント７に、行列要素値「０」に対応する係数情報“００”を供給し、状態“０１０”の確率情報との論理演算を行うように指示する。プロセッサエレメント７では、状態“０１０”の確率情報と係数情報“００”との論理演算がロジック部５２にて行われ、演算結果がレジスタ５３に一時的に記憶される。さらに、プロセッサエレメント７では、加算部５４にてレジスタ５３、５５にそれぞれ記憶されている値が加算され、加算結果が状態“０００”の新たな確率情報として出力される。なお、他の状態についても同様にして位相エラーに相当する演算が行われる。
【００６１】
上述のようにしてエラーに相当する演算を任意に加えて、上記第１および第２のステージに相当する演算を並列処理プロセッサ１にて行った後、第３のステージでは、量子フーリエ変換に代えて、高速フーリエ変換（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ）を用いて解を一点に収束させ、第４のステージで解を求める。なお、上述した動作にて量子アルゴリズムに従った通常の演算は、外部機器からインタフェース２を介して順次供給される命令に従って実行される。一方、エラーに相当する演算は、外部から予め設定された条件に応じてエラー生成部４内で自動的に実行するか否かが決定され、その決定に応じて実行される。
【００６２】
図７は、本実施形態における並列処理プロセッサによるデコヒーレンスのシミュレーション結果と理論値とを示す図である。図７において、横軸は量子操作の回数（量子計算としてＷ−Ｈ変換を行った回数）を示し、縦軸は演算結果として正しい解が得られる確率を示している。また、実線Ｔ１は理論値を示し、本実施形態における並列処理プロセッサによるデコヒーレンスのシミュレーション結果は黒い点“・”（ドット）で示している。
【００６３】
図７に示されるように、本実施形態における並列処理プロセッサによるデコヒーレンスのシミュレーション結果は、理論値Ｔ１にあっており、本実施形態における並列処理プロセッサは、デコヒーレンスを忠実に実現することができる。これにより、実際の物理系を用いた量子コンピュータでのエラー（デコヒーレンス）の影響による誤差を適切に予測することができる。しかも、本実施形態における並列処理プロセッサは、集積回路上の複数のプロセッサエレメントにより並列して演算を行っているので、従来のソフトウェアシミュレーションと比較して非常に短い時間でエラー（デコヒーレンス）を反映させた演算結果を得ることができ、リアルタイムで実際の物理系を用いた量子コンピュータでの演算結果の評価等を行うことができる。
【００６４】
以上、詳しく説明したように本実施形態によれば、Ｎビット（Ｎは自然数）で表現可能な状態（論理値）の状態確率を２ビットの確率情報で示し、外部機器からの命令による量子アルゴリズムに応じた通常の演算、およびエラー生成部４（エラー発生部５およびエラー種別生成部６）の決定に従って通常の演算の間に任意に挿入されるエラー（デコヒーレンス）に相当する演算を、上記確率情報を用いて互いに異なる論理値の状態についてそれぞれ並列して行う。
【００６５】
これにより、量子アルゴリズムに応じた演算、およびデコヒーレンスのエラーに相当する演算の双方がすべての状態について常に並列して実行されるので、擬似的に発生させたエラーを含んだ演算結果を速やかに得ることができ、量子アルゴリズムに応じた演算にエラーを反映させながらも演算を量子コンピュータと同等に高速で実行することができる。したがって、実際の物理系を用いた量子コンピュータでのエラーの影響による誤差を、大規模かつ複雑な演算であってもリアルタイムで適切に予測することができる。
【００６６】
また、状態（論理値）の状態確率を２ビットの確率情報により表すことで、複素数を用いて状態確率を表したときの複素積和演算に相当する演算を、演算における情報量を損失することなく、論理演算により行うことができる。さらに、プロセッサエレメント等の回路構成が非常に簡素になり、１つの論理値の状態当たりの演算に要する回路面積を大幅に低減することができ、並列処理プロセッサ内での演算の並列度を向上させ、演算規模を容易に大きくすることができる。
【００６７】
なお、上述した本実施形態における状態確率と確率情報との対応関係、および行列要素値と係数情報との対応関係は一例であり、これに限定されるものではなく、状態確率と確率情報との対応関係は、状態確率のおける３つの値が識別可能であれば良く、同様に行列要素値と係数情報との対応関係は、行列要素値が識別可能であれば良い。
【００６８】
また、上述した本実施形態における並列処理プロセッサ１は、ショアの量子アルゴリズムに限らず、その他の量子アルゴリズムについても適用可能であり、例えばデータベース検索に関するグローバー（Ｇｒｏｖｅｒ）の量子アルゴリズムについても適用することができる。
【００６９】
また、上記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００７０】
【発明の効果】
以上説明したように、本発明によれば、Ｎビットで表現可能な論理値の状態を示す確率情報を用いて、エラーに相当する演算を行うように指示するエラー生成部の指示および外部からの命令に応じて、制御回路が複数の演算回路に演算を指示し、複数の演算回路にて互いに異なる論理値の状態について演算を並列して行う。
これにより、外部からの命令に応じた演算にエラーに相当する演算を任意に加えながらも、互いに異なる論理値の状態について演算を並列して行うことができ、エラーの影響を含む演算結果を速やかに得ることができ、実際の物理系を用いた量子コンピュータにて発生するエラーを演算に反映させながらも、演算を高速で実行することができる。したがって、大規模かつ複雑な演算であっても、実際の物理系を用いた量子コンピュータでのエラーの影響を、リアルタイムで適切に予測することができる。
【図面の簡単な説明】
【図１】量子アルゴリズムを説明するための図である。
【図２】本実施形態における演算行列を示す図である。
【図３】本発明の実施形態による半導体演算装置を適用した並列処理プロセッサの一構成例を示すブロック図である。
【図４】ハイパーキューブネットワークを説明するための図である。
【図５】プロセッサエレメントの構成例を示すブロック図である。
【図６】並列処理プロセッサで行われる通常の演算とエラーに相当する演算とを説明するための図である。
【図７】本実施形態における並列処理プロセッサによるデコヒーレンスのシミュレーション結果と理論値とを示す図である。
【符号の説明】
１  並列処理プロセッサ
２  インタフェース
３  制御部
４  エラー生成部
５  エラー発生部
６  エラー種別決定部
７−１、７−２、７−３、…  プロセッサエレメント（ＰＥ）
８−１、８−２、８−３、…  ローカルメモリ
９  ネットワーク
【図１】
0003617007.tif 000002
【図２】
0003617007.tif 000003
【図３】
0003617007.tif 000004
【図４】
0003617007.tif 000005
【図５】
0003617007.tif 000006
【図６】
0003617007.tif 000007
【図７】
0003617007.tif 000008