(57)【特許請求の範囲】
【請求項１】
（Ｎ＋１）ビット（Ｎは自然数）で表現可能なすべての論理値の状態について演算を同時に行い、それぞれの演算結果を保持する半導体演算装置であって、
複数の演算回路をそれぞれ有し、Ｎビットで表現可能なすべての論理値の状態について演算を同時にそれぞれ行い、演算結果を保持する２つのＮキュービット演算回路群と、
上記２つのＮキュービット演算回路群の間で論理値の状態を授受するための第Ｎキュービット目のスイッチ回路とを備えることを特徴とする半導体演算装置。
【請求項２】
上記Ｎキュービット演算回路群は、２Ｎ個の演算回路を有し、
上記演算回路は、Ｎビットで表現可能なすべての論理値の状態の互いに異なる何れか１つの状態についてそれぞれ演算を行い、演算結果を保持することを特徴とする請求項１に記載の半導体演算装置。
【請求項３】
上記２つのＮキュービット演算回路群は、それぞれ第（Ｎ−１）キュービット目のスイッチ回路を備え、
上記２つのＮキュービット演算回路群の一方の上記第（Ｎ−１）キュービット目のスイッチ回路は、さらに上記Ｎキュービット演算回路群の他方と論理値の状態を授受可能であることを特徴とする請求項１または２に記載の半導体演算装置。
【請求項４】
上記Ｎキュービット演算回路群の１キュービット演算回路群の一方は、１ビットで表現される２値論理値のそれぞれ異なる論理値の状態について演算を行う２つの上記演算回路と、
上記２つの演算回路を接続し、上記２つの演算回路の間、および上記２つの演算回路と上記１キュービット演算回路群の他方との間で、互いに論理値の状態を授受するための第１キュービット目のスイッチ回路とを備えることを特徴とする請求項３に記載の半導体演算装置。
【請求項５】
上記２つのＮキュービット演算回路群をそれぞれ両側に配置し、上記２つのＮキュービット演算回路群の間に、上記第Ｎキュービット目のスイッチ回路を配置したことを特徴とする請求項１〜４の何れか１項に記載の半導体演算装置。
【請求項６】
上記演算回路は、供給される論理値の状態を用いて演算を行う演算部と、
上記演算部による演算結果を記憶するレジスタ部とを備えることを特徴とする請求項１〜５の何れか１項に記載の半導体演算装置。
【請求項７】
上記演算部は、上記論理値の状態を示す複素数で表された確率振幅を演算することを特徴とする請求項６に記載の半導体演算装置。
【請求項８】
上記演算部は、４つの乗算器と、
２つの加算器とを備え、
上記論理値の状態を示す確率振幅の複素積和演算を行うことを特徴とする請求項７に記載の半導体演算装置。
【請求項９】
上記演算部は、上記論理値の状態を示す確率振幅のユニタリ性を保持し、演算を行うことを特徴とする請求項８に記載の半導体演算装置。
【請求項１０】
上記２つのＮキュービット演算回路群は、Ｎビットから（Ｎ＋１）ビットに拡張された際に、拡張されたビットの２値論理値のそれぞれ異なる論理値に対応する演算を行うことを特徴とする請求項１〜９の何れか１項に記載の半導体演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体演算装置に関し、特に、半導体演算装置にて演算可能なビット数により表現されるすべての論理値での演算を同時に実行する半導体演算装置に用いて好適なものである。
【０００２】
【従来の技術】
集積回路における集積密度（集積可能な素子数（トランジスタ数））は、約１．５年で２倍になるという「ムーアの法則」に従い、指数関数的に増大している。この集積密度の向上に伴い、従来の技術では、１つの半導体チップ（以下、単に「チップ」と称す。）上に集積することが不可能であると思われた多数の回路素子からなる回路を、１つのチップ上に集積することができるようになってきた。
【０００３】
例えば、プロセッサ等の半導体演算装置の集積回路では、１つのチップ上に集積可能な回路素子数が増加するのに伴って演算処理量が増大し、大規模な演算を実行することができるようになってきた。また、例えば、所定の機能を有する回路がそれぞれ集積された複数のチップにより構成されていたシステムの機能を、当該システム全体の機能を実現するための多数の回路素子を１つのチップ上に集積したシステム・オン・チップ（ＳＯＣ：Ｓｙｓｔｅｍ  Ｏｎ  ａ  Ｃｈｉｐ）と呼ばれる集積回路も実用化されるようになってきた。
【０００４】
また、従来、集積回路における集積密度が低いときには、集積回路を構成するトランジスタにおいて必要でないトランジスタを省略して、１つのチップ上に集積することができるように集積回路のトランジスタ数を削減しなければならなかった。しかし、近年の集積密度の向上に伴い、１つのチップ上に集積可能なトランジスタ数が増加してきたことにより、必要でないトランジスタを省略したりする作業の必要性は低下してきた。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述したように集積回路における集積密度が向上し、さらに必要でないトランジスタを省略したりする作業の必要性は低下してきたが、１つのチップ上に形成する集積回路のデザイン効率（集積回路の設計に要する時間および労力）については、集積密度の向上と同等には向上していなかった。
【０００６】
つまり、製造技術の進歩による集積回路における集積密度の向上に伴い、多数のトランジスタのチップ上での配置、配線等のレイアウト（デザイン）を行う設計に非常に多大な時間および労力を要していた。その結果、集積回路の設計に要する時間および労力も、集積密度と同様に増大してしまうという問題があった。
【０００７】
また、集積回路における集積密度の向上に伴い、ＣＰＵ等の半導体演算装置の集積回路では、大規模な演算を実行することができるようになってきたが、１つのデータ値を用いて演算処理、条件・分岐処理等を逐次実行する従来から利用されている演算方式（アルゴリズム）を用いているため、演算の規模に応じて演算時間が増大してしまい、大規模な演算を高速で実行することができないという問題があった。
【０００８】
本発明は、このような問題を解決するためになされたものであり、大規模な演算を行うための集積回路の設計に要する時間および労力を増大させることなく、大規模な演算を高速で実行することができるようにすることを目的とする。
【０００９】
【課題を解決するための手段】
本発明の半導体演算装置は、（Ｎ＋１）ビット（Ｎは自然数）で表現可能なすべての論理値の状態について演算を同時に行い、それぞれの演算結果を保持する半導体演算装置であって、複数の演算回路をそれぞれ有し、Ｎビットで表現可能なすべての論理値の状態について演算を同時にそれぞれ行い、演算結果を保持する２つのＮキュービット演算回路群と、上記２つのＮキュービット演算回路群の間で論理値の状態を授受するための第Ｎキュービット目のスイッチ回路とを備えることを特徴とする。
【００１０】
本発明の半導体演算装置の他の特徴とするところは、Ｎキュービット演算回路群は、２Ｎ個の演算回路を有し、上記演算回路は、Ｎビットで表現可能なすべての論理値の状態の互いに異なる何れか１つの状態についてそれぞれ演算を行い、演算結果を保持することを特徴とする。
【００１１】
本発明の半導体演算装置のその他の特徴とするところは、２つのＮキュービット演算回路群は、それぞれ第（Ｎ−１）キュービット目のスイッチ回路を備え、上記２つのＮキュービット演算回路群の一方の上記第（Ｎ−１）キュービット目のスイッチ回路は、さらに上記Ｎキュービット演算回路群の他方と論理値の状態を授受可能であることを特徴とする。
【００１２】
本発明の半導体演算装置のその他の特徴とするところは、Ｎキュービット演算回路群の１キュービット演算回路群の一方は、１ビットで表現される２値論理値のそれぞれ異なる論理値の状態について演算を行う２つの演算回路と、上記２つの演算回路を接続し、上記２つの演算回路の間、および上記２つの演算回路と上記１キュービット演算回路群の他方との間で、互いに論理値の状態を授受するための第１キュービット目のスイッチ回路とを備えることを特徴とする。
【００１３】
本発明の半導体演算装置のその他の特徴とするところは、２つのＮキュービット演算回路群をそれぞれ両側に配置し、上記２つのＮキュービット演算回路群の間に、第Ｎキュービット目のスイッチ回路を配置したことを特徴とする。
【００１４】
本発明の半導体演算装置のその他の特徴とするところは、演算回路は、供給される論理値の状態を用いて演算を行う演算部と、上記演算部による演算結果を記憶するレジスタ部とを備えることを特徴とする。
【００１５】
本発明の半導体演算装置のその他の特徴とするところは、演算部は、論理値の状態を示す複素数で表された確率振幅を演算することを特徴とする。
【００１６】
本発明の半導体演算装置のその他の特徴とするところは、演算部は、４つの乗算器と、２つの加算器とを備え、論理値の状態を示す確率振幅の複素積和演算を行うことを特徴とする。
【００１７】
本発明の半導体演算装置のその他の特徴とするところは、演算部は、論理値の状態を示す確率振幅のユニタリ性を保持し、演算を行うことを特徴とする。
【００１８】
本発明の半導体演算装置のその他の特徴とするところは、２つのＮキュービット演算回路群は、Ｎビットから（Ｎ＋１）ビットに拡張された際に、拡張されたビットの２値論理値のそれぞれ異なる論理値に対応する演算を行うことを特徴とする。
【００１９】
上記のように構成した本発明によれば、第Ｎキュービット目のスイッチ回路を介して、２つのＮキュービット演算回路群を接続するだけで、（Ｎ＋１）ビットで表現可能なすべての論理値の状態について演算を同時に行い、それぞれの演算結果を保持する半導体演算装置を容易に構成することができるようになる。
【００２０】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。
図１は、本発明の実施形態による半導体演算装置を適用した並列処理プロセッサの一構成例を示すブロック図である。
この図１に示す並列処理プロセッサ１は、量子コンピュータの技術を集積回路を用いて実現したものである。
【００２１】
まず、量子コンピュータについて説明する。
量子コンピュータは、従来の計算機等の演算方式とは異なり、キュービット（量子ビット）という単位で構成された量子力学に基づく状態の重ね合わせを利用した新しい演算方式であり、新しいコンピュータモデルとしてファインマンにより提案された。量子コンピュータでは、１つの装置を用いて量子力学に基づく状態の重ね合わせを利用し演算を行うため、理論上、すべての可能な状態（値として存在可能なデータ）に対して、１回の演算を行うだけで上記すべての可能な状態の演算結果を同時に、かつ瞬時に得ることができる。
【００２２】
しかしながら、一方では、量子コンピュータは、量子力学に基づく状態の重ね合わせを利用するので、核磁気共鳴、マイクロ波、レーザーを用いるような実際に量子力学に基づく現象が観測可能な物理系のみで実現されてきており、大規模な装置を要する。最近では、量子コンピュータにおいて、２５個の状態が同時に存在する５キュービットまで演算可能な実際の物理系が提案されている。
【００２３】
しかしながら、量子コンピュータは、状態が互いに相関を持ちながら変化するように（状態をエンタングルメントさせたまま）演算を実行しなければならない。そのため、実際の物理系を用いた量子コンピュータでは、キュービット数の増加にともない指数関数的に増加する位相状態（例えば、１０キュービットの場合、２１０＝１０２４個の位相状態）を１つの装置に存在させ、保存することが困難になってくる。
【００２４】
また、量子コンピュータは、量子力学に基づく現象が観測可能な実際の物理系を用いているため、既存の電子回路との間で演算結果等のデータを授受したりするインタフェースを設けることが煩雑であり、電子回路との接続性は悪かった。
【００２５】
ここで、上記量子コンピュータは量子的な物理現象（量子力学に基づく状態の重ね合わせ）を利用しているので、古典的な物理現象（古典電磁気学）を利用した集積回路でそのまま実現することは困難である。すなわち、集積回路上の１つのデバイスが、量子力学に基づく状態の重ね合わせを利用した演算を行うことは困難である。しかしながら、集積回路上の複数のデバイスが、量子力学に基づいて重ね合わされた複数の状態をそれぞれ記憶し、記憶された量子力学に基づく状態に対して同時に演算を行うことはできる。
【００２６】
そこで、上記図１に示す並列処理プロセッサ１は、複数のプロセッサエレメント（ＰＥ）を集積回路に設けて、量子力学に基づいて重ね合わされた複数の状態（論理値の確率振幅）を複数のプロセッサエレメントにそれぞれ記憶し、同時に演算を行うようにしたものである。なお、図１には、５キュービットに相当する２５＝３２個の状態（５ビットで表現可能な３２通りの論理値の確率振幅）を記憶して同時に演算を行う並列処理プロセッサ１を一例として示しているが、本発明はこれに限定されるものではない。また、以下では、説明の便宜上、論理値の確率振幅を「状態」と称す。
【００２７】
上記図１に示すように並列処理プロセッサ１は、複数のプロセッサエレメント（ＰＥ）（図１においては、実線の□で示す。）と、複数のエクスチェンジユニット（ＥＵ）（図１においては、○で示す。）とを有する。具体的には、５キュービットに相当する演算を行う図１に示した並列処理プロセッサ１は、３２（＝２５）個のプロセッサエレメントと、３１（＝２５−１）個のエクスチェンジユニットとを有する。
【００２８】
ここでプロセッサエレメントは、３２個の状態の中の１つの状態について、複数の状態に基づいて所定の演算（ユニタリ変換）を行い、得られた演算結果を記憶する。また、エクスチェンジユニットは、２つのプロセッサエレメント、または複数のプロセッサエレメントでそれぞれ構成される２つのプロセッサエレメント群を互いに通信可能なように接続し、プロセッサエレメントの間、またはプロセッサエレメント群の間でのデータの授受等を制御する。なお、プロセッサエレメントおよびエクスチェンジユニットの詳細については、後述する。
【００２９】
そして、並列処理プロセッサ１は、図１に示すように、プロセッサエレメント２−１とプロセッサエレメント２−２とを、エクスチェンジユニット３−１を介してＨ字状に接続する。これにより、１キュービットに相当する演算を行うプロセッサエレメント群４−１を構成する。
【００３０】
さらに、プロセッサエレメント群４−１と同様に構成されたプロセッサエレメント群４−２と、プロセッサエレメント群４−１とを、エクスチェンジユニット３−２を介してＨ字状に接続する。これにより、２キュービットに相当する演算を行うプロセッサエレメント群５−１を構成する。
【００３１】
同様にして、エクスチェンジユニット３−３を介して、プロセッサエレメント群５−１、５−２をＨ字状に接続することにより、３キュービットに相当する演算を行うプロセッサエレメント群６−１を構成し、エクスチェンジユニット３−４を介して、プロセッサエレメント群６−１、６−２をＨ字状に接続することにより、４キュービットに相当する演算を行うプロセッサエレメント群７−１を構成する。さらに、エクスチェンジユニット３−５を介して、プロセッサエレメント群７−１、７−２をＨ字状に接続することにより、５キュービットに相当する演算を行うプロセッサエレメント群、つまり並列処理プロセッサ１を構成する。
【００３２】
すなわち、本実施形態による並列処理プロセッサは、エクスチェンジユニットを介して、Ｎキュービット（Ｎは自然数）に相当する演算を行うプロセッサエレメント群（但し、Ｎ＝１のときにはプロセッサエレメント）をＨ字状に接続することにより、１キュービットだけ拡張した（Ｎ＋１）キュービットに相当する演算を行うプロセッサエレメント群を構成する。そして、エクスチェンジユニットを介して、再帰的にプロセッサエレメント群をＨ字状に接続することにより、所望のキュービット数に相当する演算を行う並列処理プロセッサを構成する。ここで、上記プロセッサエレメントは本発明の演算回路を構成し、エクスチェンジユニットは本発明のスイッチ回路を構成する。また、プロセッサエレメント群は本発明の演算回路群を構成する。
【００３３】
さらに、並列処理プロセッサ１は、並列処理プロセッサ１内の複数のプロセッサエレメントおよび複数のエクスチェンジユニットを制御するコントローラ８と、並列処理プロセッサ１と外部に接続された回路（機器）等との間でデータの授受等を行うためのインタフェース９とを有する。
【００３４】
次に、プロセッサエレメント（ＰＥ）について詳細に説明する。
なお、上記図１に示した並列処理プロセッサ１が有するそれぞれのプロセッサエレメントは同じ構成であるので、以下では、プロセッサエレメント２−１を一例として説明する。
【００３５】
図２は、上記図１に示したプロセッサエレメント２−１の構成例を示すブロック図である。
図２において、プロセッサエレメント２−１は、演算部１１とレジスタ部１２とにより構成される。
【００３６】
演算部１１は、図示しない信号線により図１に示したコントローラ８から供給される指示に従い、当該プロセッサエレメント２−１が演算する３２個の状態の中の何れか１つの状態について、所定の演算（ユニタリ変換）を行うものである。演算部１１には、演算する３２個の状態の中の１つの状態を示す内部データＩＤＴがレジスタ部１２から供給され、上記１つの状態と異なる他の状態を示す入力データＤＴＩが、エクスチェンジユニット３−１を介して他のプロセッサエレメント（群）から供給される。
【００３７】
ここで、上記内部データＩＤＴおよび入力データＤＴＩは、上述したように論理値の確率振幅であり、上記確率振幅は複素数を用いて表される。また、演算部１１にて行われる演算はユニタリ変換であるので、演算部１１による演算では、常にユニタリ性が保持される。
【００３８】
例えば、プロセッサエレメント２−１にて演算する状態が、３２個の状態の中の論理値“００００１”の状態である場合には、論理値“００００１”の確率振幅が内部データＩＤＴとして演算部１１に供給され、論理値“００００１”と異なる論理値（例えば、“０００００”または“０００１１”等）論理値の確率振幅が入力データＤＴＩとして演算部１１に供給される。
また、演算部１１には、エクスチェンジユニット３−１を介してコントローラ８から係数信号ＳＣが供給される。
【００３９】
演算部１１は、内部データＩＤＴおよび入力データＤＴＩとして供給される複数の状態（複素数で表される確率振幅）に対して、上記係数信号ＳＣとして供給される係数値を用いて複素数の積和演算を行う。そして、演算部１１は演算結果として得られた状態（複素数で表される確率振幅）をレジスタ部１２に出力する。
【００４０】
レジスタ部１２は、図示しない信号線により図１に示したコントローラ８から供給される指示に従って、演算部１１から出力される演算結果を記憶する。また、レジスタ部１２は、図示しない信号線により供給される指示に従って、記憶した演算結果を内部データＩＤＴとして演算部１１に出力したり、エクスチェンジユニット３−１を介して出力データＤＴＯとして他のプロセッサエレメント（群）に出力したりする。
【００４１】
図３は、上記図２に示した演算部１１の詳細な構成例を示すブロック図である。
図３において、演算部１１は、４つの乗算器２１−１〜２１−４および２つの加算器２２−１〜２２−２により構成される。
【００４２】
乗算器２１−１〜２１−４には、内部データＩＤＴまたは入力データＤＴＩが供給されるとともに、係数信号ＳＣが供給される。乗算器２１−１〜２１−４は、内部データＩＤＴとして供給される３２個の中の１つの論理値の確率振幅の実数部、虚数部、および入力データＤＴＩとして供給される論理値（上記１つの論理値とは異なる論理値）の確率振幅の実数部、虚数部と係数信号ＳＣとして供給される係数値との乗算をそれぞれ行い、その結果を後段に接続された加算器２２−１、２２−２に出力する。
【００４３】
加算器２２−１は、乗算器２１−１および２１−２からそれぞれ出力された乗算結果を加算する。また、加算器２２−２は、乗算器２１−３および２１−４からそれぞれ出力された乗算結果を加算する。そして、加算器２２−１、２２−２は、上記図２に示したレジスタ部１２に加算結果を出力する。
【００４４】
上述のように演算部１１を構成することにより、演算部１１は、内部データＩＤＴおよび入力データＤＴＩとして供給される複数の状態（確率振幅）と、上記係数信号ＳＣとして供給される係数値との積和演算を行う。
【００４５】
次に、エクスチェンジユニット（ＥＵ）について詳細に説明する。
なお、上記図１に示した並列処理プロセッサ１が有するそれぞれのエクスチェンジユニットは同じ構成であるので、以下では、エクスチェンジユニット３−１を一例として説明する。
【００４６】
図４は、上記図１に示したエクスチェンジユニット（ＥＵ）３−１の構成例を示すブロック図である。
図４に示すように、エクスチェンジユニット３−１は、６つのスイッチング素子ＳＷ１〜ＳＷ６により構成される。
【００４７】
スイッチング素子ＳＷ１およびＳＷ２は、プロセッサエレメント２−１のデータ出力端子と、プロセッサエレメント２−２のデータ入力端子およびエクスチェンジユニット３−２の第１のデータ入力端子との間にそれぞれ直列に接続される。同様に、スイッチング素子ＳＷ３およびＳＷ４は、プロセッサエレメント２−２のデータ出力端子と、プロセッサエレメント２−１のデータ入力端子およびエクスチェンジユニット３−２の第２のデータ入力端子との間にそれぞれ直列に接続される。また、スイッチング素子ＳＷ５およびＳＷ６は、エクスチェンジユニット３−２の第１および第２のデータ出力端子と、プロセッサエレメント２−１および２−２のデータ入力端子との間にそれぞれ直列に接続される。
【００４８】
スイッチング素子ＳＷ１およびＳＷ２は、プロセッサエレメント２−１から出力データＤＴＯとして出力された３２個の状態の中の１つの状態（論理値の確率振幅）をプロセッサエレメント２−２およびエクスチェンジユニット３−２にそれぞれ供給するか否か切り替える。
同様に、スイッチング素子ＳＷ３およびＳＷ４は、プロセッサエレメント２−２から出力データＤＴＯとして出力された３２個の状態の中の１つの状態をプロセッサエレメント２−１およびエクスチェンジユニット３−２にそれぞれ供給するか否か切り替える。
【００４９】
また、スイッチング素子ＳＷ５およびＳＷ６は、エクスチェンジユニット３−２から出力される上記プロセッサエレメント２−１、２−２にて演算する状態を除く３２個の状態の中の残りの状態をプロセッサエレメント２−１および２−２にそれぞれ供給するか否か切り替える。
【００５０】
上述のようにエクスチェンジユニット３−１を構成し、スイッチング素子ＳＷ１〜ＳＷ６を適宜、開閉制御してデータの供給路を制御することにより、並列処理コンピュータ１を構成する複数のプロセッサエレメントに３２個の状態をそれぞれ供給することができる。
【００５１】
なお、図４においては、プロセッサエレメント２−１、２−２とエクスチェンジユニット３−２との間で、互いにデータを授受するためのデータ信号線のみを示しているが、上記図１に示したコントローラ８から指示を供給する信号線や、係数信号ＳＣとして係数を供給する信号線をエクスチェンジユニット（ＥＵ）内に備えるようにしても良い。
【００５２】
次に、本実施形態における並列処理プロセッサ１にて用いる命令について説明する。本実施形態における並列処理プロセッサ１では、以下に示す９つの命令を用いるだけで、如何なる演算も実行することができる。
（１）ＰＨＡＳ（Ｐｈａｓｅ  Ｓｈｉｆｔ：１キュービット位相シフト操作）
指定されたキュービットに対する位相回転を行う。
（２）ＲＯＴ（Ｒｏｔａｔｉｏｎ：１キュービット回転操作）
指定されたキュービットに対する回転操作を行う。
（３）ＣＰＨＡＳ（Ｃｏｎｔｒｏｌｌｅｄ  Ｐｈａｓｅ  Ｓｈｉｆｔ：制御１キュービット位相シフト操作）
制御値により示されるキュービットの値が“１”のときには、指定されたキュービットに対する位相回転を行い、キュービットの値が“０”のときには、前値を保持する演算（恒等変換）を行う。
（４）ＣＲＯＴ（Ｃｏｎｔｒｏｌｌｅｄ  Ｒｏｔａｔｉｏｎ：制御１キュービット回転操作）
制御値により示されるキュービットの値が“１”のときには、指定されたキュービットに対する回転操作を行い、キュービットの値が“０”のときには、前値を保持する演算（恒等変換）を行う。
（５）ＨＡＬＴ（演算停止命令）
演算を停止し、アイドル状態に遷移する。
（６）ＩＮＩＴ（Ｉｎｉｔｉａｌｉｚｅ：キュービット初期化操作）
すべてのキュービットの値が“０”である状態の確率振幅の実数値のみを１にし、それ以外は０にする。
（７）ＰＣＡＬ（確率計算）
確率振幅の絶対値の２乗により算出される確率を計算する。
（８）ＰＳＵＭ（確率積算）
指定されたキュービットの値のみが異なる論理値の確率の和を計算する。
（９）ＲＥＤＵＣＥ（状態収縮操作）
指定されたキュービットの値のみが異なる論理値の確率の大小比較を行い、比較結果に応じて確率振幅を維持または“０”にする。
【００５３】
次に、上記図１に示した本実施形態における並列処理プロセッサ１の動作について説明する。
なお、以下の説明では、説明の便宜上、図１に示したプロセッサエレメント２−１にて演算する状態が、論理値“ＸＸＸ００”（ＸはＤｏｎ’ｔ  ｃａｒｅ）の状態とし、プロセッサエレメント２−２にて演算する状態が、論理値“ＸＸＸ０１”（ＸはＤｏｎ’ｔ  ｃａｒｅ）の状態として説明する。
【００５４】
例えば、最下位のキュービットを対象とした演算を行うとする。このとき、エクスチェンジユニット３−１内のスイッチング素子ＳＷ１およびＳＷ３が閉じられ、残りのスイッチング素子ＳＷ２、ＳＷ４〜ＳＷ６は開かれる。
【００５５】
これにより、プロセッサエレメント２−１内のレジスタ部１２に記憶している論理値“ＸＸＸ００”の状態（確率振幅）の一部（例えば、所定の係数値を乗算したもの）が、エクスチェンジユニット３−１内のスイッチング素子ＳＷ１を介してプロセッサエレメント２−２内の演算部１１に供給される。同様に、プロセッサエレメント２−２内のレジスタ部１２に記憶している論理値“ＸＸＸ０１”の状態（確率振幅）の一部が、エクスチェンジユニット３−１内のスイッチング素子ＳＷ３を介してプロセッサエレメント２−１内の演算部１１に供給される。また、プロセッサエレメント２−１、２−２には、演算に応じた係数値がコントローラ８から係数信号ＳＣにより供給される。
【００５６】
プロセッサエレメント２−１内の演算部１１は、自らのレジスタ部１２に記憶している論理値“ＸＸＸ００”の状態、プロセッサエレメント２−２から供給された論理値“ＸＸＸ０１”の状態の一部および係数信号ＳＣにより供給された係数値を用いて、状態（確率振幅）に関する積和演算を行う。これにより、演算後の論理値“ＸＸＸ００”の状態が、演算結果として得られる。また、プロセッサエレメント２−１内の演算部１１での積和演算と同時に、プロセッサエレメント２−２内の演算部１１でも同様の積和演算を行い、演算後の論理値“ＸＸＸ０１”の状態を演算結果として取得する。なお、演算の対象とするキュービットが同じであるので、プロセッサエレメント２−１、２−２にて行われる状態の演算は同じ演算である。
【００５７】
上述したようなプロセッサエレメント２−１、２−２にて行われた動作と同じ動作を、並列処理プロセッサ１が有するすべてのプロセッサエレメントで同時に行う。これにより、並列処理プロセッサ１は、５キュービットに相当する３２個の状態についての最下位のキュービットを対象とした演算を同時に行い、すべての演算結果を速やかに得ることができる。
【００５８】
なお、最下位のキュービット以外を対象とした演算を行う場合については、エクスチェンジユニット内のスイッチング素子ＳＷ１〜ＳＷ６の開閉制御が異なり、論理値の状態の一部を供給するプロセッサエレメントが、他のプロセッサエレメント群の対応する（演算の対象とするキュービットの論理値のみが異なる論理値を演算する）プロセッサエレメントになるだけで、基本的な動作は同じであるので説明は省略する。
【００５９】
以上、詳しく説明したように本実施形態によれば、Ｎビット（Ｎは自然数）で表現可能な互いに異なる論理値の状態についてそれぞれ同時に演算を行い、演算結果を保持する２Ｎ個のプロセッサエレメントを有するＮキュービットに相当する演算を行う２つのプロセッサエレメント群（但し、Ｎ＝１のときにはプロセッサエレメント）を、エクスチェンジユニットを介して接続することにより、１キュービットだけ拡張した（Ｎ＋１）キュービットに相当する演算を行うプロセッサエレメント群を構成する。そして、エクスチェンジユニットを介して、再帰的にプロセッサエレメント群を接続することにより、所定のキュービット数に相当する演算を行う並列処理プロセッサを構成する。
【００６０】
これにより、大規模な演算を行う並列処理プロセッサであっても、エクスチェンジユニットを介して、プロセッサエレメント群を再帰的に接続するだけで設計することができるので、設計に要する時間および労力を増大させることなく、所定の演算を行う並列処理プロセッサを容易に設計することができる。
【００６１】
特に、エクスチェンジユニットを介して、プロセッサエレメント群を再帰的にＨ字状に接続するようにした場合には、上下対称および左右対称にプロセッサエレメント群を配置することができ、設計が非常に容易になるとともに、集積回路上での実装効率も高くすることができる。
【００６２】
また、Ｎビットで表現可能な２Ｎ個のすべての論理値の状態についての演算を同時に行い、演算結果を保持するＮキュービットに相当する２つのプロセッサエレメント群を用いて、（Ｎ＋１）キュービットに相当するプロセッサエレメント群が構成されるので、（Ｎ＋１）ビットで表現可能な２Ｎ＋１個のすべての論理値の状態についての演算を同時に行い、演算結果を常に保持することができる。したがって、従来のように１つのデータ値を用いて演算を逐次行わなくとも、すべての論理値について同時に１回の演算を行うだけで、すべての論理値について演算結果を得ることができるので大規模な演算を高速で実行することができる。
【００６３】
なお、上述した本実施形態では、エクスチェンジユニットを介して、プロセッサエレメント群を再帰的に接続する際、Ｈ字状に配置するようにしているが、本発明はこれに限られるものではない。しかしながら、エクスチェンジユニットに対してプロセッサエレメント群を対称に配置して接続することにより、非常に容易かつ合理的に設計することができる。
【００６４】
また、上述した本実施形態では、５キュービットに相当する演算を行う半導体演算装置について示したが、本発明は５キュービットに相当する演算を行う半導体演算装置に限られるものではなく、図５に示すようにして任意の数のキュービットに相当する演算を行う半導体演算装置に適用することができる。
【００６５】
図５は、任意の数のキュービットに相当する演算を行う半導体演算装置の構成方法を説明するための図である。
図５において、８−１、８−２は、それぞれ５キュービットに相当する演算を行うプロセッサエレメント群であり、図１に示した４キュービットに相当する演算を行う２つのプロセッサエレメント群７−１、７−２によりそれぞれ構成される。上記プロセッサエレメント群８−１、８−２を、エクスチェンジユニット３−６を介して、例えばＨ字状に接続することにより、６キュービットに相当する演算を行うプロセッサエレメント群９−１を構成し、エクスチェンジユニット３−７を介して、プロセッサエレメント群９−１、９−２をＨ字状に接続することにより、７キュービットに相当する演算を行うプロセッサエレメント群１０−１を構成する。
【００６６】
同様にして、エクスチェンジユニットを介して、再帰的にプロセッサエレメント群を接続することにより、演算可能なキュービット数を増加していく。
例えば、Ｎキュービットに相当する演算を行うプロセッサエレメント群を構成する場合には、（Ｎ−２）キュービットに相当する演算を行うプロセッサエレメント群１１−１、１１−２およびエクスチェンジユニット３−（Ｎ−１）をそれぞれ有する（Ｎ−１）キュービットに相当する演算を行うプロセッサエレメント群１２−１、１２−２を、エクスチェンジユニット３−Ｎを介して接続することにより、Ｎキュービットに相当する演算を行うプロセッサエレメント群１３−１を構成する。
【００６７】
【発明の効果】
以上説明したように、本発明によれば、Ｎビットで表現可能なすべての論理値の状態について演算を同時にそれぞれ行い、演算結果を保持する２つのＮキュービット演算回路群と、２つのＮキュービット演算回路群の間で論理値の状態を授受するための第Ｎキュービット目のスイッチ回路とにより、（Ｎ＋１）ビットで表現可能なすべての論理値の状態について演算を同時に行い、それぞれの演算結果を保持する半導体演算装置を構成する。
【００６８】
これにより、大規模な演算を行う半導体演算装置であっても、スイッチ回路を介して演算回路群を再帰的に接続するだけで設計することができ、設計に要する時間および労力を増大させることなく、大規模な演算を行う半導体演算装置を容易に設計することができる。さらに、Ｎビットで表現可能なすべての論理値の状態について演算を同時にそれぞれ行い、演算結果を保持する２つのＮキュービット演算回路群を含み構成されるので、（Ｎ＋１）ビットで表現可能なすべての論理値の状態について演算を同時に行い、それぞれの演算結果を常に保持することができ、すべての論理値について同時に１回の演算を行うだけで、すべての論理値について演算結果を得ることができる。したがって、大規模な演算を高速で実行することができる。
【図面の簡単な説明】
【図１】本発明の実施形態による半導体演算装置を適用した並列処理プロセッサの一構成例を示すブロック図である。
【図２】プロセッサエレメントの構成例を示すブロック図である。
【図３】プロセッサエレメント内の演算部の詳細な構成例を示すブロック図である。
【図４】エクスチェンジユニットの構成例を示すブロック図である。
【図５】任意の数のキュービットに相当する演算を行う半導体演算装置の構成方法を説明するための図である。
【符号の説明】
１  並列処理プロセッサ
２−１、２−２  プロセッサエレメント（ＰＥ）
３−１〜３−５  エクスチェンジユニット（ＥＵ）
８  コントローラ
９  インタフェース
１１  演算部
１２  レジスタ部
２１−１〜２１−４  乗算器
２２−１、２２−２  加算器
【図１】
0003542342.tif 000002
【図２】
0003542342.tif 000003
【図３】
0003542342.tif 000004
【図４】
0003542342.tif 000005
【図５】
0003542342.tif 000006