(57)【特許請求の範囲】
【請求項１】
入力データに対して、処理手順に従って演算処理して出力する情報処理システムにおいて、
前記処理手順に基づいて、それぞれ演算精度２mビット（ｍ：自然数）にて演算する複数の演算ユニットと、
前記演算ユニット同士をカスケード接続するための複数のカスケード接続端子と、
を有し、
前記複数の演算ユニットの少なくとも一つは、演算精度（２m／ｙ）で演算を行うべき演算モジュールをｙ個（ｙは自然数で固定）を有し、
演算処理時に必要な最大演算精度を２nビット（ｎは自然数で固定）とし、演算処理時に必要な演算精度を２n1ビット（ｎ１≦ｎでｎ１は可変）としたとき、ｘ１≧２n1／２m（ｘ１は自然数で可変）を満たす（ｘ１−１）個のカスケード接続された演算ユニットにて演算精度２n2（ｎ２＜ｎ１）にて演算が実施され、前記（ｘ１−１）個の演算ユニットとカスケード接続される他の一つの演算ユニットでは、ｙ１≧（２n1−２n2）／（２m／ｙ）（ｙ１≦ｙでｙ１は可変）を満たすｙ１個の演算モジュールがカスケード接続されることを特徴とする情報処理システム。
【請求項２】
入力データに対して、処理手順に従って演算処理して出力する情報処理システムにおいて、
前記処理手順に基づいて、それぞれ演算精度２m1ビット（ｍ１：自然数で固定）にて演算する複数の内部演算ユニットと、
演算精度２m2ビット（ｍ２：自然数で固定）で演算をする複数の外部演算ユニットと、
前記複数の内部演算ユニット及び前記複数の外部演算ユニットをカスケード接続するためのカスケード接続端子と、
を有し、
演算処理時の最大演算精度を２nビット（ｎは自然数で可変）としたとき、ｚ≧（２n−２m1）／２m2（ｚは自然数で固定）を満たすように前記外部演算ユニットがｚ個カスケード接続されることを特徴とする情報処理システム。
【請求項３】
請求項２において、
演算処理時に必要な演算精度を２n1ビット（ｎ１≦ｎでｎ１は可変）としたとき、ｚ１≧（２n1−２m1）／２m（ｚ１は自然数で可変）を満たすように前記外部演算ユニットがｚ１個カスケード接続されることを特徴とする情報処理システム。
【請求項４】
請求項２または３において、
前記複数の内部演算ユニット及び前記複数の外部演算ユニット間は光信号により信号が伝送されることを特徴とする情報処理システム。
【請求項５】
請求項２乃至４のいずれかにおいて、
前記複数の外部演算ユニットの各々は、演算精度（２m2／ｙ）で演算を行うべき演算モジュールをそれぞれｙ個（ｙは自然数で固定）を有し、ｙ個の前記演算モジュールをカスケード接続することにより構成されていることを特徴とする情報処理システム。
【請求項６】
請求項５において、
前記ｙ個の演算モジュール間は光信号により信号が伝送されることを特徴とする情報処理システム。
【請求項７】
請求項２乃至６のいずれかにおいて、
前記処理手順を記憶する記憶部を有することを特徴とする情報処理システム。
【請求項８】
請求項７において、
前記処理手順に基づいて前記複数の内部演算ユニット及び前記複数の外部演算ユニットの制御を行う演算制御手段を備えたことを特徴とする情報処理システム。
【請求項９】
請求項２乃至８のいずれかにおいて、
前記入力データをＸ、Ｎとし、出力データＹをとしたとき、前記複数の内部演算ユニット及び前記複数の外部演算ユニットは、
Ｙ＝Ｘ2ｍｏｄ  Ｎの演算処理を実施することを特徴とする情報処理システム。
【請求項１０】
請求項２乃至９のいずれかにおいて、
前記複数の外部演算ユニットの歩留まり率をＡとしたとき、全外部演算ユニットの数Ｋ（ｚ≧Ｋ／Ａ）のうち良品の演算ユニットを最大でｚ個カスケード接続することを特徴とする情報処理システム。
【請求項１１】
請求項５または６において、
前記演算モジュールの歩留まり率をＡ′としたとき、前記複数の内部演算ユニット及び前記少なくとも一つの外部演算ユニットの各々は、全演算モジュールの数Ｌ（ｙ≧Ｌ／Ａ’）のうち、良品の演算モジュールを最大でｙ個カスケード接続することを特徴とする情報処理システム。
【請求項１２】
乗算精度２m1ビット（ｍ１は自然数で固定）、除算精度２m1+1ビットでべき乗剰余演算を行う複数の内部べき乗剰余演算ユニットと、
乗算精度２m2ビット（ｍ２は自然数で固定）、除算精度２m2+1ビットでべき乗剰余演算を行う複数の外部べき乗剰余演算ユニットと、
前記複数の内部及び外部べき乗剰余演算ユニットをカスケード接続するためのカスケード接続端子と、
を有し、
最大ビット精度２n（ｎは自然数で固定）で暗号化及び復号を行うに際して、
ｚ≧（２n−２m1）／２m2（ｚは自然数で固定）を満たすように前記外部べき乗剰余演算ユニットをｚ個接続することを特徴とする暗号／復号システム。
【請求項１３】
請求項１２において、
演算処理時に必要な演算精度を２n1ビット（ｎ１≦ｎでｎ１は可変）としたとき、ｚ１≧（２n−２m1）／２m2（ｚ１≦ｚで可変）を満たすように、前記外部べき乗剰余演算ユニットがｚ１個カスケード接続されることを特徴とする暗号／復号システム。
【請求項１４】
請求項１２または１３において、
前記複数の内部べき乗剰余演算ユニットと前記複数の外部べき乗剰余演算ユニットの間は、光信号により信号が伝送されることを特徴とする暗号／復号システム。
【請求項１５】
請求項１２乃至１４のいずれかにおいて、
前記複数の外部べき乗剰余演算ユニットの各々は、乗算精度（２m／ｙ）（ｙは自然数で固定）、除算精度（２m+1／ｙ）でべき乗剰余演算を行う外部べき乗剰余演算モジュールをｙ個有し、前記ｙ個の外部べき乗剰余演算モジュールがカスケード接続されていることを特徴とする暗号／復号システム。
【請求項１６】
請求項１５において、
前記ｙ個の外部べき乗剰余乗算モジュール間は、光信号により信号が伝送されることを特徴とする暗号／復号システム。
【請求項１７】
請求項１２乃至１６のいずれかにおいて、
前記複数の外部べき乗剰余演算ユニットの歩留まり率をＡとしたとき、全演算ユニットの数Ｋ（ｚ≧Ｋ／Ａ）のうち良品の演算ユニットを最大でｚ個カスケード接続することを特徴とする暗号／復号システム。
【請求項１８】
請求項１５において、
前記外部べき乗剰余演算モジュールの歩留まり率をＡ′としたとき、前記複数の外部べき乗剰余演算ユニットの各々は、全外部べき乗剰余演算モジュールの数Ｌ（ｙ≧Ｌ／Ａ’）のうち、良品の演算モジュールをｙ個カスケード接続することを特徴とする暗号／復号システム。
【発明の詳細な説明】
［技術分野］
本発明は、情報処理システム及び暗号／復号システムに係り、特にハードウェア構成によって任意精度の演算を行う情報処理システム及びハードウェア構成によって任意精度の演算を行って暗号化及び復号を行う暗号／復号システムに関する。さらに本発明は、内部バスラインまたは外部バスラインを光伝送方式とした情報処理システム、システムＬＳＩ及び電子機器に関する。
［背景技術］
従来より、乱数発生、ウェーブレット変換、ニューラルネットワーク、高速フーリエ演算、ディジタルフィルタ等の複雑、かつ、大規模な演算を伴う場合には、開発コスト、開発期間などの観点から特殊な用途を除き、専用のハードウェアを用いることなく、汎用の演算装置を用い、ソフトウェアにより実現する構成を採っていた。
また、インターネットの普及と共に電子商取引やプライバシー保護の観点から、情報セキュリティの技術の必要が高まり、その有効な手段としての暗号技術が注目されている。
暗号方式は秘密鍵暗号と公開鍵暗号に大別され、代表的な方式としては、秘密鍵暗号としてはＤＥＳ（Data Encryption Standard）、公開鍵暗号としてはＲＳＡ(Rivest Shamir Adleman criptograph)がある。
原理的には、ＤＥＳはデータビット列の並び換えや置換による方式で、ＲＳＡは極めて多ビットの剰余演算を行う方式であり、一般に秘密鍵暗号方式に比べて公開鍵暗号方式は数百倍遅くなる。これは、公開鍵暗号方式においては、数百ビット以上を法とする非常に多精度の剰余演算を行うことによる。
そこで、通常、多量のデータ列の暗号化には高速な秘密鍵暗号方式を用い、データ量の少ない認証、署名および鍵の配送などには公開鍵暗号方式を用いるように暗号方式の使い分けがなされている。
また、公開鍵暗号では、暗号強度を鍵のビット長を変えることにより選択できるため、通信相手の公開したさまざまなビット数の公開鍵を用いて演算ができることが求められている。
乱数発生、ウェーブレット変換、ニューラルネットワーク、高速フーリエ演算、ディジタルフィルタ等を汎用の演算装置を用いてソフトウェアにより実現する手法においては、汎用の演算装置の演算精度を超えて演算を行う場合に、全てソフトウェア側で対応する必要があり、プログラミングの手間及び処理時間の増大によりその実現が現実的ではなくなってしまう場合が生じていた。
さらにＤＥＳではハードウェア技術を用いて実現されなければならないと規定されているように、ソフトウェアだけによる暗号／復号システムの場合、第三者による解読を避けるのは事実上困難である。暗号アルゴリズムの一部をハードウェア化すれば暗号強度はより高いものとなる。
これは公開鍵式暗号方式においても同様であり、例えば、１チップ公開鍵暗号プロセッサが提案されている（電子情報通信学会論文誌  D-I Vol.J80-D-I No.8 pp.725-735 1997-8）。
しかしながら、上記１チップ公開鍵暗号プロセッサにおいては、予めハードウェアで規定された精度内での任意精度の処理は可能であるが、規定された精度を超える精度が要求された場合には処理はできず、新たなハードウェアの設計を行わなければならないという問題点が生じる。
また、演算装置を、例えば、ＴＦＴ（Thin Film Transistor）で１チップ構成とする場合には、動作しないトランジスタの存在により演算装置全体が使用できなくなってしまい、歩留まり率が低下するとともに、製造コストの上昇を招くという問題点が生じる。
さらに他の課題として、近年マイクロコンピュータの発達により、各種の分野にて機器の小型化と高付加価値化が進んでいる一方で、マイクロコンピュータの設計は極めて困難となっている。マイクロプロセッサ（ＭＰＵ）を１チップ化して構成されるマイクロコンピュータの高集積度化が進むにつれ、配線幅はサブミクロンオーダとなって高抵抗化が進み、多層構造化により浮遊容量も増大するため、配線部には分布定数回路が形成されて、電気信号の伝搬遅延は増大する一方である。
従って、マイクロコンピュータ内のＣＰＵ（中央処理ユニット）が他の機能ユニットに対してデータ、アドレスを伝送するのに要する時間、他の機能ユニットからデータが入力されるまでに要する時間を考慮して、ＣＰＵの命令サイクルなどを決定する必要があり、信号伝搬遅延に起因した設計の負荷が多くなっている。
しかも、近年は軽薄短小化と付加機能の増大化に従い、マイクロコンピュータの超ＬＳＩと、高集積化の方向にのみ進んでおり、マイクロコンピュータの設計はさらに困難になる一方である。
配線抵抗、容量の増大は、信号伝搬遅延だけでなく、信号としての矩形波に変形も生じさせる。近年特に携帯用電子機器を中心として省電力化が進んでおり、電圧レベルが低い矩形波の変形の度合いが大きいと、信号としての機能を確保できなくなり、誤動作の原因ともなる。
そこで、本発明の目的は、所望精度の演算が行えるシステムをハードウェア的に容易に構築することが可能な情報処理システムを提供することにある。
本発明の他の目的は、任意精度（任意ビット数）の演算が要求されるシステムをハードウェア的に容易に構築することが可能な暗号／復号システムを提供することにある。
本発明のさらに他の目的は、１チップ構成とする場合の実効的な歩留まり率を向上して、システムの信頼性を向上することが可能な情報処理システム及び暗号／復号システムを提供することにある。
本発明のさらに他の目的は、信号伝搬遅延、信号波形の変形を無視できる程度に低減して、その設計を容易とすることができる情報処理システム及びシステムＬＳＩ並びにそれを用いた電子機器を提供することにある。
本発明のさらに他の目的は、他社開発の機能ブロックを搭載しながらも、その知的所有権に関する管理を上述の暗号／復号システム等を利用して容易化することができるシステムＬＳＩ及びそれを用いた電子機器を提供することにある。
［発明の開示］
本発明は、入力データに対して、処理手順に従って演算処理して出力する情報処理システムにおいて、
前記処理手順に基づいて、それぞれ演算精度２mビット（ｍ：自然数）にて演算する複数の演算ユニットと、
前記演算ユニット同士をカスケード接続するための複数のカスケード接続端子と、
を有し、
演算処理時に必要な最大演算精度を２nビット（ｎは自然数で固定）としたとき、ｘ≧２n／２m（ｘは自然数）を満たすように前記演算ユニットがｘ個カスケード接続されることを特徴とする。
本発明によれば、演算処理を複数の演算処理ユニットにて分散処理することでハードウェア処理が容易となり、乱数発生処理、ウェーブレット変換処理、高速フーリエ変換処理、デジタルフィルタ処理などの演算量が多く、精度が要求される場合でも、容易にシステムを構築して演算処理の高速化を図ることとができる。また、分散処理の結果、演算ユニットのゲート数を抑制することができ、装置コストを低減することが可能となる。
本発明においては、演算処理時に必要な演算精度を２n1ビット（ｎ１≦ｎでｎ１は可変）としたとき、ｘ１≧２n1／２m（ｘ１は自然数で可変）を満たすように前記演算ユニットがｘ１個カスケード接続される。このとき、クロック発生回路は、演算処理時に２n1個の前記基準クロック信号を発生させる。これにより、ｘ個のうちのｘ１個の演算ユニットが実効的にカスケード接続される。こうすると、ｘ１個以外の演算ユニットにて消費される電力を節約でき、演算速度も高速化される。さらに、複数の演算ユニット間にて光信号により信号が伝送されるようにすれば、演算速度はより高速となる。
複数の演算ユニットの各々は、演算精度２m／ｙで演算を行うべき演算モジュールをそれぞれｙ個（ｙは自然数で固定）を有し、ｙ個の演算モジュールをカスケード接続することにより構成することができる。
このとき、演算処理時に必要な演算精度を２n1ビット（ｎ１≦ｎでｎ１は可変）としたとき、ｙ１≧２n1／（２m／ｙ）（ｙ１は自然数で可変）を満たすようにｙ１個の演算モジュールがカスケード接続されればよい。
あるいは、２n1ビット精度の演算を行うのに、（ｘ１−１）個のカスケード接続された演算ユニットにて演算精度２n2（ｎ２＜ｎ１）にて演算が実施され、前記（ｘ１−１）個の演算ユニットとカスケード接続される他の一つの演算ユニットでは、ｙ１≧（２n1−２n2）／（２m／ｙ）（ｙ１≦ｙでｙ１は可変）を満たすｙ１個の演算モジュールがカスケード接続さされればよい。
この最大ｙ個の演算モジュール間を光信号により信号が伝送されるようにすれば、各演算ユニット内での演算が高速化される。
本発明では、処理手順を記憶する第１の記憶部をさらに有することができる。さらに、第１の記憶部に記憶された処理手順に基づいて複数の演算ユニットの制御を行う演算制御手段をさらに備えることができる。このとき、複数の演算ユニットと演算制御手段との間を、光信号により信号が伝送されるようにしてもよい。
また、複数の演算ユニットでの演算結果を一時的に記憶する第２の記憶部を有し、第２の記憶部と複数の演算ユニットとの間を光信号により信号が伝送されるように構成しても良い。
複数の演算ユニットでの演算の一例として、入力データをＸ、Ｎとし、出力データＹをとしたとき、疑似乱数発生のために、Ｙ＝Ｘ2ｍｏｄ  Ｎの演算の例を挙げることができる。
ここで、複数の演算ユニットの歩留まり率をＡとしたとき、全演算ユニットの数をＫ（ｘ≧Ｋ／Ａ）個用意しておけば、そのうち良品の演算ユニットを最大でｘ個カスケード接続することができる。
あるいは、演算モジュールの歩留まり率をＡ′としたとき、前記複数の演算ユニットの各々は、全演算モジュールの数をＬ（ｙ≧Ｌ／Ａ’）個用意しておけば、そのうち、良品の演算モジュールを最大でｙ個カスケード接続することができる。
本発明の他の態様によれば、入力データに対して、処理手順に従って演算処理して出力する情報処理システムにおいて、
前記処理手順に基づいて、それぞれ演算精度２m1ビット（ｍ１：自然数で固定）にて演算する複数の内部演算ユニットと、
演算精度２m2ビット（ｍ２：自然数で固定）で演算をする複数の外部演算ユニットと、
前記複数の内部演算ユニット及び前記複数の外部演算ユニットをカスケード接続するためのカスケード接続端子と、
を有し、
演算処理時の最大演算精度を２nビット（ｎは自然数で可変）としたとき、ｚ≧（２n−２m1）／２m2（ｚは自然数で固定）を満たすように前記外部演算ユニットがｚ個カスケード接続されることを特徴とする。
こうすると、演算精度を容易にハードウェア的に拡張することができ、システムの信頼性を確保しつつ、情報処理システムのシステム設計が容易となる。
本発明のさらに他の態様に係る暗号／復号システムによれば、複数のべき乗剰余演算ユニットと、
前記複数のべき乗剰余演算ユニットをカスケード接続するための複数のカスケード端子と、
を有し、
前記複数のべき乗剰余演算ユニットの各々は、
乗算精度２mビット（ｍは自然数で固定）で乗算を行う乗算ユニットと、
除算精度２m+1ビットで除算を行う除算ユニットと、
を有し、
前記複数のべき乗剰余演算ユニットにより実施されるべき乗剰余演算の最大演算精度を２n（ｎは自然数で固定）としたとき、
ｘ≧２n／２m（ｘは自然数で固定）
を満たすように、前記複数のべき乗剰余演算ユニットがｘ個接続されて、暗号化及び復号を行うことを特徴とする。
こうすると、暗号化または復号のための演算処理を複数の演算処理ユニットにて分散処理することでハードウェア処理が容易となり、演算量が多く、精度が要求される場合でも、容易にシステムを構築して演算処理の高速化を図ることとができる。また、分散処理の結果、演算ユニットのゲート数を抑制することができ、装置コストを低減することが可能となる。
本発明のさらに他の態様に係る暗号／復号システムによれば、乗算精度２m1ビット（ｍ１は自然数で固定）、除算精度２m1+1ビットでべき乗剰余演算を行う複数の内部べき乗剰余演算ユニットと、
乗算精度２m2ビット（ｍ２は自然数で固定）、除算精度２m2+1ビットでべき乗剰余演算を行う複数の外部べき乗剰余演算ユニットと、
前記複数の内部及び外部べき乗剰余演算ユニットをカスケード接続するためのカスケード接続端子と、
を有し、
最大ビット精度２n（ｎは自然数で固定）で暗号化及び復号を行うに際して、
ｚ≧（２n−２m1）／２m2（ｚは自然数で固定）を満たすように前記外部べき乗剰余演算ユニットをｚ個接続することを特徴とする。
こうすると、べき乗剰余演算における演算精度を容易にハードウェア的に拡張することができ、鍵の精度において十分な信頼性を確保することができる。
さらに少ないゲート数で外部べき乗剰余演算ユニットを構成することができるため、パーソナルコンピュータシステムにおいても暗号／復号システムを容易に構築することが可能となる。
本発明のさらに他の態様によれば、多チャンネルの電気信号に基づいてそれぞれ動作する複数の機能ユニットと、それらの間で信号を伝送するバスラインとを、有する情報処理システムであって、
前記複数の機能ユニットの各々は、信号出力部及び／又は信号入力部を有し、
前記信号出力部は、多チャンネルの電気信号を波長の異なる多チャンネルの光信号に変換して出力する電気−光信号変換手段を有し、
前記信号入力部は、波長の異なる多チャンネルの前記光信号を多チャンネルの前記電気信号をに変換する光−電気信号変換手段を有し、
前記バスラインは光伝送媒体にて形成されていることを特徴とする。
この場合、一の機能ユニットと他の機能ユニットとの間の信号伝送は、光伝送媒体であるバスラインを介して、波長分割された多チャンネルの光信号を伝送することで行われる。このため、各機能ユニットの信号出力部は、多チャンネルの電気信号を多チャンネルの光信号に変換する電気−光信号変換手段を有し、各機能ユニットの信号入力部は、多チャンネルの光信号を多チャンネルの電気信号に変換する光−電気信号変換手段を有する。
１チップのマイクロコンヒュータの各機能ユニット間を光通信しているため、光の速度による信号伝搬によって信号伝搬遅延をほとんどは無視できる。結果として、その信号伝搬遅延等に伴う設計上の制約がなくなり、情報処理システムの設計を容易化できる。
本発明では、複数の機能ユニットの一つは中央処理ユニット（ＣＰＵ）であり、前記バスラインはデータバスラインとアドレスバスラインとを含むことができる。ＣＰＵに接続されたデータ、アドレスバスラインの双方を光伝送ラインとするものである。
この場合、データバスラインとアドレスバスラインとは１本の光伝送媒体にて兼用することもできる。データとアドレスとは同時でなく、時分割で伝送すればよいからである。
本発明ではさらに、バスラインには、周辺機器と光通信するための光入出力部が接続されていることが好ましい。こうすると、情報処理システム内の各機能ユニットの電気−光信号変換手段にて変換された光信号を、そのまま周辺機器に送信でき、逆に周辺機器からの光信号をそのまま情報処理システムに入力できる。また、光信号へのノイズの重畳や、光信号からのノイズの放出もなくなるという利点もある。
周辺機器と光通信するための光入出力部は、前記バスラインを介して前記中央処理ユニットから伝送されるチップセレクト信号により、前記周辺機器との間での光通信が可能とされることが好ましい。このとき、光入出力部としては、チップセレクト信号により動作される光シャッター等にて構成できる。
本発明のさらに他の態様によれば、第１の内部バスラインを有する第１の半導体装置と、第２の内部バスラインを有する第２の半導体装置とを、外部バスラインを介して接続して成るシステムＬＳＩであって、
前記第１の半導体装置は、第１の信号出力部及び第１の信号入力部を有し、多チャンネルの電気信号に基づいて動作する中央処理ユニット（ＣＰＵ）が、前記第１の内部バスラインと共に第１の基板上に形成され、
前記第２の半導体装置は、第２の信号出力部及び第２の信号入力部を有し、かつ、前記中央処理ユニットからの信号により制御されて、多チャンネルの電気信号に基づいて動作する被制御ユニットが、前記第２の内部バスラインと共に第２の基板上に形成され、
前記第１，第２の信号出力部は、多チャンネルの電気信号を波長の異なる多チャンネルの光信号に変換して出力する電気−光信号変換手段をそれぞれ有し、
前記第１，第２の信号入力部は、波長の異なる多チャンネルの前記光信号を多チャンネルの前記電気信号に変換する光−電気信号変換手段をそれぞれ有し、
前記第１，第２の内部バスライン及び前記外部バスラインは、それぞれ光伝送媒体にて形成されていることを特徴とする。
こうすると、例えば第１の半導体装置を上述の１チップ化されたマイクロコンピュータとした場合、本来マイクロコンピュータ内に搭載されるべき機能ユニットの少なくとも一つは、第２の半導体装置に搭載できる。この場合、第１，第２の半導体装置内の機能ユニット同士は、第１，第２の内部バスライン及び外部バスラインを介して光による信号の授受が行われる。従って、空間的には異なる基板上に配置された機能ユニット同士が、光の伝送速度で通信できるバスラインにて接続されるため、機能的には上述の１チップ内で光による信号の授受が行われる複数の機能ユニットを搭載したマイクロコンピュータと等価となる。
このように、本来１チップ内に搭載されるべき機能ユニットの一部を外部に取り出すことができるため、高集積化の必要はなくなるという利点がある。あるいは、マイクロコンピュータに演算機能、メモリなどを増設したい場合にも、従来のように１チップマイクロコンピュータの設計をやり直す必要なく、基本となるマイクロコンピュータに光伝送媒体である外部バスラインを介して半導体装置を外付けすればよい。従って、マイクロコンピュータの汎用性が高まるという利点もある。
特に、本発明を適用すればキャシュメモリの容量の変更を自由に行うことができる。
さらに好ましくは、本発明において、内部バスラインの内部クロックを外部バスラインへも供給する構成とする。これによって、内部クロックが全機能ユニットの標準クロックとなり、同期モードでデータ処理を行うことが可能となる。
上記の本発明に係る情報処理システムまたはシステムＬＳＩを電子機器に搭載すれば、その電子機器の機能変更にも容易に対応できる。
本発明のさらに他の態様によれば、開発メーカが異なる複数の機能ブロックが搭載されたシステムＬＳＩであって、
前記複数の機能ブロックの少なくとも一つは、四則演算機能エリアを有し、
前記四則演算機能エリアは、所定の復号鍵が入力された際に復号ための演算を実施し、その復号が成立した時以降初めて、前記復号以外の四則演算機能がイネーブルとされることを特徴とする。
このシステムＬＳＩには、例えばＡ社の開発した機能ブロックが含まれているとする。このシステムＬＳＩ中のＡ社の開発した機能ブロックを利用するエンドユーザに、例えばＲＳＡ方式の復号鍵（プライベートキー）をライセンスによって開示する。そして、本システムＬＳＩの利用者のうち、復号鍵を有するエンドユーザのみが機能ブロックを利用できるようにしたものである。これにより、Ａ社の開発した機能ブロックを利用するには、Ａ社から復号鍵をライセンスによって取得する必要が生じ、知的所有権に関する管理が容易となる。
この四則演算機能エリアには、上述した通り、処理手順に基づいて、それぞれ演算精度２mビット（ｍ：自然数で固定）にて演算するｘ個のカスケード接続される演算ユニットを備えることができる。この複数の演算ユニットの一部は、カスケード接続される複数のべき乗剰余演算ユニットを含むことができる。
【図面の簡単な説明】
図１Ａ及び図１Ｂは、本発明の第１実施例に係る情報処理システムの概要構成を示すブロック図である。
図２は、図１Ａ及び図１Ｂ中のプログラマブルディジタルプロセッサの概要構成を示すブロック図である。
図３は、第１実施例を疑似乱数発生回路に適用した具体例を示すブロック図である。
図４は、本発明の第２実施例に係る暗号／復号システムの概要構成ブロック図である。
図５は、べき乗剰余演算装置の概要構成を示すブロック図である。
図６は、任意精度除算装置の概要構成を示すブロック図である。
図７Ａ〜図７Ｃはそれぞれ、除算分散処理の困難性を説明する説明図である。
図８は、任意精度除算器の構成と動作の説明図である。
図９は、除算器の概要構成を示すブロック図である。
図１０は、除算器の動作タイミングチャートである。
図１１は、本発明の第２実施例におけるＲＳＡに基づいた公開鍵暗号方式の暗号化及び復号処理の処理手順を示している。
図１２は、べき乗剰余演算装置に必要なゲート数を説明する図である。
図１３Ａは、ａb≡Ｍ  ｍｏｄ  ｃの演算手法を説明する説明図である。
図１３Ｂは、図１３Ａの演算を実行する回路のブロック図である。
図１３Ｃは、図１３Ａの手法に従って、１８６19≡Ｍ  ｍｏｄ  ３７７を復号してＭ＝１７を求めた演算例の説明図である。
図１４は、図１３Ａにて必要な演算処理時間の計算を示す説明図である。
図１５は、演算処理時間の例を示す説明図である。
図１６は、従来におけるＲＳＡに基づいた公開鍵暗号方式の暗号化及び復号処理の処理手順である。
図１７は、本発明の第４実施例に係るマイクロコンピュータの一例を示すブロック図である。
図１８は、図１７に示すマイクロコンピュータの光伝送部を含む領域の概略説明図である。
図１９は、図１８に示す発光部を構成する３チャンネル分の発光素子の概略断面図である。
図２０は、図１９に示す発光層の製膜方法の一例を示す概略説明図である。
図２１は、図１８に示す受光部を構成する３チャンネル分の受光素子の概略断面図である。
図２２は、図１８に示す発光部の変形例を示す概略説明図である。
図２３は、本発明の第５実施例に係るシステムＬＳＩを示す概略説明図である。
図２４は、発光部、導波路及び受光部を三次元的に配置した本発明の第６実施例を示す概略説明図である。
図２５は、本発明の第７実施例に係るシステムＬＳＩの概略図である。
［発明を実施するための最良の形態］
次に図面を参照して本発明の好適な実施例を説明する。
（第１実施例）
図１Ａに第１実施例の情報処理システムのブロック図を示す。
情報処理システム１０は、図１Ａに示すように例えば２つの汎用のマイクロプロセッサにより構成される。図１Ａにおいて、この情報処理システム１０は、システム全体を制御するためのメインマイクロプロセッサ１と、メインマイクロプロセッサ１とバス２を介して接続されたプログラマブルディジタルプロセッサ３と、を備えている。プログラマブルディジタルプロセッサ３は、メインマイクロプロセッサ１に代わって予め設定されたプログラム（処理手順）に従って高速で所望演算精度の演算を行うコプロセッサ（coprocessor）として機能する。
ここで、バス２には、図示は省略してあるが、この情報処理システム１０に要求される仕様に応じて、キーボード、マウスなどの入力装置、プリンタなどの出力装置、ＲＯＭ、ＲＡＭ等の記憶装置及びハードディスク装置などの外部装置などが直接、あるいは、インターフェース装置を介して接続されている。
図２は、図１に示すプログラマブルディジタルプロセッサ３の構成を示している。このプログラマブルディジタルプロセッサ３は、図示しないシステムＲＯＭ、システムＲＡＭを有し、乱数発生処理、ウェーブレット変換処理、高速フーリエ変換処理、デジタルフィルタ処理などの処理手順が予めメインマイクロプロセッサ１側からロードされてプログラミングされる。
このプログラマブルディジタルプロセッサ３は、全体の制御を司るコントロールユニット５と、演算途中の各種データ、処理手順などを格納するＲＡＭ６、ＲＯＭ８と、それぞれ演算精度２mビット（ｍは自然数で固定）で演算を行うｘ（ｘは自然数で固定）個の演算ユニット７−１〜７−ｘと、これら演算ユニット７−１〜７−ｘ同士をカスケード接続するためのスイッチＳＷと、アドレスデータ、命令データなどを転送するための内部システムバス４Ａと、各種データを転送するための内部データバス４Ｂと、を備えている。なお、内部システムバス４Ａと内部データバス４Ｂとで、内部バス４を構成している。また、スイッチＳＷは、実施例の構成を図面上で理解できるように便宜的に図示したものである。実際には、実効的にカスケード接続される演算ユニットの数は、プログラマブルディジタルプロセッサ３内の例えばコントロールユニット５から発生する基準クロック信号の数に基づいて決定され、機械的にスイッチＳＷがオン、オフする構成ではない。この点については後述する。
この場合において、全ての演算ユニットをｘ個カスケード接続した場合に得られる最大ビット精度を２n（ｎは自然数で固定）とした時、カスケード接続される最大個数ｘは、以下に示す条件式を満たしている必要がある。
ｘ≧２n／２m
なお、必要な演算精度が最大ビット精度２n以下のビット精度２n1（ｎ１は可変でかつｎ１≦ｎ）である場合には、ｘ個の演算ユニット７−１〜７−ｘを全て動作可能状態としても演算結果を得ることは可能であるが、最大ｘ個の演算ユニットのうち、
ｘ≧ｘ１≧２n1／２m（ｘ１は可変）
を満たすようにｘ１個の演算ユニット７−１〜７−ｘ１を実効的に動作するようにカスケード接続すればよい。こうして、２n1ビット精度の演算を行うようにすれば、電力を不必要に消費することなく、消費電力の適正化を図ることができ、さらに演算処理時間も最適化することが可能となる。
ここで、演算ユニット７−１〜７−ｘの各々は、それぞれ演算精度２m/y（ｙは２以上の整数）で演算を行うべきｙ個の演算モジュール９−１〜９−ｙが、スイッチＳＷを介してカスケード接続可能となっている。なお、スイッチＳＷは、実施例の構成を図面上で理解できるように便宜的に図示したものである。実際には、実効的にカスケード接続される演算モジュールの数は、上述の通り、プログラマブルディジタルプロセッサ３内の例えばコントロールユニット５からの基準クロック信号の数に基づいて決定され、機械的にスイッチＳＷがオン、オフする構成ではない。
ここで、例えば演算ユニット７−１と演算ユニット７−２とが実効的にカスケード接続された場合には、トータルで２ｙ個の演算モジュールがカスケード接続されたことと等価となる。
そして、本実施例では、一つの演算ユニットの全ｙ個の演算モジュール９−１〜９−ｙのうち、２n1ビット精度の演算を行うのに十分な個数ｙ１≧２n1／２m/y（ｙ１≦ｙ）の演算モジュールを実効的にカスケード接続することも可能である。こうすれば、消費電力及び演算処理時間をより最適化することが可能となる。
あるいは、２n1ビット精度の演算を行うのに、（ｘ１−１）個の演算ユニット７−１〜７−（ｘ−１）と、演算ユニット７−ｘ１の中のｙ１個の演算モジュールとを用いることも可能である。この場合に、（ｘ１−１）個の演算ユニット７−１〜７−（ｘ−１）で２n2（ｎ２＜ｎ１）のビット精度の演算が実施されるとすると、ｙ１≧（２n1−２n2）／（２m/ｙ）（ｙ１≦ｙ）を満たせばよい。
次に、図１Ａ及び図２に示す装置の動作について説明する。
まず、メインマイクロプロセッサ１がプログラマブルディジタルプロセッサ３に対し、演算命令、演算に必要なデータ及び要求する演算精度に対応する演算精度データをバス２を介して与える。
これによりプログラマブルディジタルプロセッサ３のコントロールユニット５は、演算ユニット７−１〜７−ｘに対し、メインマイクロプロセッサユニット１及び／またはＲＡＭ６からの処理手順（例えば、図１３Ｂで示す暗号手順）に基づいて、要求された演算精度２n1に対応する数の演算ユニットあるいは演算モジュールを制御する。演算ユニット７−１〜７−ｘは、各演算データの精度情報に基づいて、カスケード接続されるべきユニット数及びモジュール数を判断する。このカスケード接続されるべきユニット数及びモジュール数は、演算に必要な基準クロック信号の数によって決定される。この基準クロック信号は、図１Ａに示す情報処理システム１０が有する図示しない基準クロック信号発生回路にて発生される。
これにより、演算に必要とされた数の演算ユニット及び演算モジュールは実効的にカスケード接続され、コントロールユニット５は、予めプログラミングされた処理手順に基づいて演算を演算ユニットにて行わせることとなる。
そして得られた精度２n1の演算結果をバス２を介してメインプロセッサユニット１側に出力することとなる。
ここで、この第１実施例ではチップ間すなわち図１Ａのマイクロプロセッサユニット１とプログラマブルディジタルプロセッサ３間のバス２上の信号を、多チャンネルの電気信号としても良いし、あるいは例えば波長の異なる多チャンネルの光信号としても良い。チップ間を光通信する技術は既に多くの提案がある。
さらに加えて、この第１実施例では、１チップを構成するプログラマブルディジタルプロセッサ３内の一部または全部のユニット間にて、光信号を伝送することも可能である。すなわち、図２に示すプログラマブルディジタルプロセッサ３の内部システムバス４Ａと内部データバス４Ｂとを光伝送路とするのである。こうすると、コントロールユニット１０５と、ＲＡＭ６と、ＲＯＭ８と、ｘ個の演算ユニット７−１〜７−ｘとの各間で、内部システムバス４Ａと内部データバス４Ｂを介して光信号を伝送することができる。このとき、ＲＡＭ６を構成する記憶素子として、電気信号以外の情報例えば強誘電メモリのように磁化された情報を記憶するようにすれば、光信号を電気信号に変換する必要はない。例えば強誘電メモリを用いた場合には、光信号に基づいて磁化された情報を記憶すればよい。さらには、ｘ個の演算ユニット７−１〜７−ｘの間も実質的にバス接続され、各演算ユニットを構成するｙ個の演算モジュールもバス接続されているため、これらのバスを光伝送路とし、演算ユニット間及び演算モジュール間も光信号により伝送することが可能である。
なお、１チップ内の内部バスを光伝送路とする具体的例については後述する。
以上の説明においては、最大ｘ個の演算ユニットが装着されている場合について説明したが、後に機能拡張する場合などに備えて、プログラマブルディジタルプロセッサ３に外部演算ユニットをカスケード接続するための端子を設けてもよい。このように、外部演算ユニットをカスケード接続するように構成すれば、内部演算ユニットのみをカスケード接続して得られる演算精度以上の演算精度を確保することができる。
より詳細には、プログラマブルディジタルプロセッサ３を１チップ構成とした場合であっても、図２に破線で示すように、一または複数のプログラマブルディジタルプロセッサ３′を、内部データバス及び図示しないカスケード接続端子を介してカスケード接続することができる。こうすると、プログラマブルディジタルプロセッサ３′内の演算ユニットを、プログラマブルディジタルプロセッサ３′内の演算ユニットとカスケード接続したのと等価となる。この意味で、プログラマブルディジタルプロセッサ３内の内部演算ユニット７−１〜７−ｘに対して、一または複数のプログラマブルディジタルプロセッサ３′の演算ユニットは、外部演算ユニットとして機能する。そして、本実施例では、この内部演算ユニットと外部演算ユニット間も光信号により伝送することが可能である。
また、複数の外部演算ユニットを例えば、ＴＦＴ（Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）で構成した場合には、欠損などにより不良トランジスタが発生することに起因して、最大でｚ個の外部演算ユニットの全体が使用できなくなる恐れがある。
そこで、演算ユニットの歩留まり率Ａに対して、少なくともＫ（ｚ≧Ｋ／Ａ）個の演算ユニットを予め用意しておくことが好ましい。こうすると、Ｋ個の演算ユニットのうち良品の演算ユニットを最大でｚ個接続することできる。
さらにこのことは、演算ユニットばかりでなく、外部演算ユニットを構成する演算モジュールについても同じことが言えるので、外部演算モジュールの歩留まり率Ａ′に対して、各外部演算ユニット中に少なくともＬ（ｙ≧Ｌ／Ａ′）演算モジュールを予め用意しておくと良い。こうすると、Ｌ個の演算モジュールのうち良品の演算モジュールをｙ個接続することができる。従って、演算モジュールに不良が発生した場合でも、冗長演算モジュールに接続切換を行うことにより、その演算ユニットは良品として扱うことが可能となる。
また、プログラマブルディジタルプロセッサ３内に演算精度２m1ビット（ｍ１：自然数）で演算を行う内部演算ユニットと、プログラマブルディジタルプロセッサ３’内に演算精度２m2ビット（ｍ２：自然数）で演算を行う外部演算ユニットとをカスケード接続して、最大演算精度２nの演算を実施するには、外部演算ユニットの接続数ｚを下記の式を満足するように設定すればよい。
ｚ≧（２n−２m1）／２m2
さらに所望のビット精度２n1（ｎ１は自然数、かつ、ｎ１≦ｎ）にて演算する場合には、ｚ個の外部演算ユニットのうち、
ｚ≧ｚ１≧（２n1−２m1）／２m2（ｚ１は自然数）
を満たすように外部演算ユニットをカスケード接続すれば、演算に必要な外部演算ユニットのみを動作させることができる。この結果、消費電力の適正化、演算処理時間の適正化を図ることができる。
なお、情報処理システム１０を構成する場合に、図１Ａの実施例ではメインマイクロプロセッサ１が必須の構成要件となっていた。しかし、プログラマブルディジタルプロセッサ３にメインマイクロプロセッサ１の機能を持たせ、バス２を介して記憶装置あるいは外部記憶装置からプログラムをロードするように構成すれば、図１Ｂに示す情報処理システム１０’のように、メインマイクロプロセッサ１は不要となる。
また、以上の説明においては、プログラマブルディジタルプロセッサ３がプログラムをロードする場合についてのみ説明したが、これに限定されるものではない。例えば予めマスクＲＯＭ、ＰＲＯＭ、ＥＥＰＲＯＭなどの不揮発性のメモリに処理手順のプログラムを格納しておき、これに基づいて固定化した処理手順に基づいて動作したり、固定化した処理手順をハードウエアロジックで実現することも可能である。
ここで第１実施例のより具体的な例として、本発明を疑似乱数発生装置に適用した例について説明する。
Ｎが大きな素数の積の場合に、非線形演算子であるＹ＝Ｘ2ｍｏｄ  Ｎを用いて、計算量的に安全な疑似乱数を作ることが可能である。この場合において、「計算量的に安全な」とは、安全性が崩れるということ（すなわち、生成した乱数列の一部である部分乱数列から、生成した乱数列の他の部分の部分乱数列を推測することができること）と、Ｎを因数分解できるということとが、計算量的に同等であるということである。
換言すれば、数学の長い歴史の中で、因数分解についての簡単な計算法が見つかっていないので、多分、乱数は予測できないであろうということである。
Ｙ＝Ｘ2ｍｏｄ  Ｎ
を用いて、計算量的に安全な疑似乱数を発生するためのブロック図を図３に示す。この場合において、
Ｎ＝Ｐ・Ｑ
であり、ＰとＱとは共に大きな素数である。
図３に示すように、入力データ（Ｘ、Ｎ）に対し、
Ｙ＝Ｘ2ｍｏｄ  Ｎ
の演算処理を行う際に、第１実施例のプログラマブルディジタルプロセッサ３を用いることにより、任意精度で疑似乱数を発生させることができる。
以上の説明のように、本実施例によれば、所望精度の演算を行うための情報処理システムをハードウェア的に容易に実現することが可能であるとともに、演算精度の拡張に対してもハードウェア的に容易に対応することが可能となる。
この第１実施例の説明においては、プログラマブルディジタルプロセッサ３内にコントロールユニット５及びＲＡＭ６を設ける構成としていたが、メインマイクロプロセッサ１側にこれらの機能を行わせるように情報処理システムを構成し、演算ユニットのみを１チップ構成とし、任意精度汎用演算プロセッサとして機能させることも可能である。
（第２実施例）
次に暗号化処理及び復号処理を行う暗号／復号システムに本発明を適用した第２実施例について説明する。
［１］  ＲＳＡ方式の原理説明
まず具体的な実施例の説明に先立ち、代表的な公開鍵方式暗号であるＲＳＡ方式について説明する。
ネットワーク暗号の利用形態としては、送信者が暗号鍵を用いて平文を暗号化して送信し、その暗号文の受信者は復号鍵を用いて復号し平文に戻す処理を行うものである。
秘密鍵暗号方式では暗号鍵と復号鍵が同一であるのに対し、公開鍵暗号方式は同一ではなく、暗号鍵を公開し、復号鍵を秘密に保持する方式である。次に代表的な公開鍵暗号方式であるＲＳＡ方式の原理について述べる。
平文をある適当なブロックに分け、それに相当する数値をＭとする。素数ｐとｑを定め、復号鍵（プライベートキー）として秘密にし、次の関係にあるｎとｅを公開鍵（パブリックキー）とする。
ｎ＝ｐｑ                                                  ……  （１）
ｇｃｄ（ｅ，（ｐ−１，ｑ−１））＝１                      ……  （２）
ここで、ｅ及び（ｐ−１）（ｑ−１）の最大公約数は１、すなわち、（ｐ−１）（ｑ−１）と互いに素な正数ｅを適当に決める。
そして、下記の（３）式に示すように、送信者はパブリックキーを用いて、ｎを法とする平分Ｍのｅ乗の剰余演算（Ｍeをｎで割った余りＣを算出）を行い、暗号文Ｃを送信する。
Ｍｅ≡Ｃ  ｍｏｄ  ｎ                                   ……（３）
これにより、暗号文Ｃを受信した受信者は、まず、プライベートキーを用いて、下記の（４）式により（ｐ−１）（ｑ−１）を法とするｅの逆数ｄを求める。
ｅｄ≡１  ｍｏｄ  （ｐ−１）（ｑ−１）                ……  （４）
得られたｄにより、下記の（５）式から暗号文Ｃを平分Ｍに復号する。
Ｃd≡Ｍ  ｍｏｄ  ｎ                                   ……  （５）
ところで、式（４）と式（５）は、（ｐ−１）と（ｑ−１）の最少公倍数ｌｃｍ（ｐ−１，ｑ−１）を用いると、ｄを小さく定めることができ、下記の（６）式及び（７）式に示すように、計算量の軽減がはかれる。
ｇｃｄ（ｅ，ｌｃｍ（ｐ−１，ｑ−１））＝１            ……  （６）
ｅｄ≡１  ｍｏｄ  ｌｃｍ（ｐ−１，ｑ−１）            ……  （７）
この場合において、パブリックキーｎはプライベートキーｐとｑの積であるため、容易に素因数分解できないよう、通常５１２ビット以上に選定される。
以上のようにＲＳＡ方式は素因数分解という数学的要素と多精度剰余演算を行うことなどで、暗号強度の高い方式であると広く認知されている。
［２］  剰余計算例
式（３）と式（５）のべき乗剰余演算結果が暗号・復号文となるため、丸め操作や浮動少数点演算が使えず整数演算でなければならない。べき乗剰余演算は指数をそのシステムで除算可能な部分に分割して、より小さな剰余演算の積の繰り返しで求めることができる。説明の容易性のため、ごく小さい数値の例を示す。
パブリックキーをｎ＝５５、ｅ＝７とし、プライベートキーをｐ＝５、ｑ＝１１とする。
平文Ｍ＝３とすると、暗号文Ｃは、暗号化においてはパブリックキーのｎとｅを用いて、式（３）より
３7≡Ｃ  ｍｏｄ  ５５
から
Ｃ＝４２
を得る。
復号ではプライベートキーのｐとｑよりｄを次のように選定する。
式（４）より
７ｄ≡１  ｍｏｄ  （５−１）（１１−１）
すなわち、
７ｄ≡１  ｍｏｄ  ４０
から
ｄ＝２３
となる。
４２23≡Ｍ  ｍｏｄ  ５５
から
Ｍ＝３
となる。
剰余演算においては
Ｘ≡ｒ１  ｍｏｄ  ｎ、
Ｙ≡ｒ２  ｍｏｄ  ｎ
のとき、ｎを法とする下記の式（８）の乗算が成立する。
Ｘ・Ｙ≡ｒ１・ｒ２  ｍｏｄ  ｎ                                  （８）
この関係式により指数部分を演算可能な部分に分割する。
例えば、
４２23＝４２5+5+5+5+3
＝４２5・４２5・４２5・４２5・４２3
そこで、先ず、４２5及び４２3についての２種類の剰余を求める。
４２5≡１２  ｍｏｄ  ５５
４２3≡３  ｍｏｄ  ５５
式（８）から
0004092735.tif 000002
となる。
次にｒ１・ｒ２からその剰余ｒ1-2を求める。
ｒ１・ｒ２≡１２・１２≡ｒ1-2ｍｏｄ  ５５
より、
ｒ1-2＝３４
となる。以下同様にして、
ｒ1-2・ｒ３≡３４・１２≡ｒ1-3ｍｏｄ  ５５
より、
ｒ1-3＝２３
となる。さらに
ｒ1-3・ｒ４≡２３・１２≡ｒ1-4ｍｏｄ  ５５
より、
ｒ1-4＝１
となる。さらにまた、
ｒ1-4・ｒ５≡１・３≡ｒ  ｍｏｄ  ５５
となって、
ｒ＝３
を得ることとなる。
以上の剰余演算過程における各剰余乗算の最大精度は法であるｎの２倍以下で済む。このようにして、小さな数値に置き換えた剰余演算の繰り返しで、目的とする剰余を算出することができる。
［３］  暗号化及び復号処理の一般的手法
ここで、図１６を参照してＲＳＡに基づく暗号化及び復号処理の一般的手法について説明する。
まず、Ａm≡Ｒ  ｍｏｄ  ｎについての剰余演算では、Ａ、ｍ、ｎの各値を入力する（ステップＳ１）。
合同式  Ａm≡Ｒ  ｍｏｄ  ｎ  は暗号化においては平文ＭがＡ、パブリックキーｅがｍとして、パブリックキーｎを法とする剰余演算によって得られたＲが暗号文Ｃになる。復号では暗号文ＣがＡ、パブリックキーｅとプライベートキーｐ、ｑから選定されたｄがｍとして、ｎを法とする剰余演算によって得られたＲが平文Ｍである。
先ず、Ａのビット数Ｋ１を求め（ステップＳ２）、Ａのビット数Ｋ１から剰余演算システムにおけるＡNの最大指数Ｎを求める（ステップＳ３）。
次に最大指数Ｎが１であるか否かを判別し（ステップＳ４）、最大指数Ｎ＝１であればＡ2で精度オーバーになるため、
Ａ≡ｒ  ｍｏｄ  ｎ
を求め（ステップＳ５）、剰余ｒのビット数ｋを求め（ステップＳ６）、ビット数ｋからＡのブロック規模を判断する（ステップＳ７）。
Ａのブロック規模が精度内であれば（ステップＳ７；Ｎｏ）、ｍ個のＡに対するｎを法とする乗算を行い、その結果から求める剰余Ｒを得る（ステップＳ８）。
また、Ａのブロック規模が精度外であれば（ステップＳ７；Ｙｅｓ）、データが大きすぎてオーバーフローを起こしてしまうので（ステップＳ９）、Ａのブロック規模を小さくすべく、演算処理を終了する（ステップＳ１０）。
一方、Ｎが２以上であれば（ステップＳ４；Ｎｏ）、ｍをｑＮ＋ａに分解し（ステップＳ１１）、ａが０でないときは（ステップＳ１２；Ｙｅｓ）、Ａaを求め（ステップＳ１３）、Ａaをｎで割った余りｒ１を求める（ステップＳ１４）。
次にｑ＝０であるか否かを判別し（ステップＳ１５）、ｑ＝０ならば（ステップＳ１５；Ｙｅｓ）ｒ１が求める剰余Ｒである（ステップＳ１６）。
ステップＳ１５の判別において、ｑ≠０であるならば（ステップＳ１５；Ｎｏ）、ＡNを求め（ステップＳ１７）、ＡNをｎで割った剰余ｒを求める（ステップＳ１８）。
そして剰余ｒをｒ００に代入し（ステップＳ１９）、ｑ個のＡNに対するｎを法とする乗算を行い（ステップＳ２０）、ａ≠０であるならば（ステップＳ２１；Ｎｏ）、得られた乗算結果ｒとｒ１との積をｎで割った剰余を求め（ステップＳ２２）、求めた剰余ｒを最終的に求めるべき剰余Ｒとし（ステップＳ２３）、剰余Ｒを剰余データとして出力する（ステップＳ２４）。
このようにＲＳＡに基づいた公開鍵暗号方式の暗号化及び復号処理（剰余演算処理）は複雑であり、特に暗号／復号システムにおいては、前述したように、ｎは５１２ビット以上と高精度であるため、除算の分散処理が不可能であれば、本第１実施例のようなハードウェア化は困難であり、上記処理をソフトウェアで処理することとなり、そのプログラミングも簡単ではないので、多くの演算時間を要することは容易に推察できる。
［４］公開鍵暗号／復号システムの構成
図４は、第２実施例の公開鍵暗号／復号システムのブロック図である。
公開鍵暗号／復号システム１１は、大別すると、パーソナルコンピュータシステム１２と、パーソナルコンピュータシステム１２の入出力インターフェース１７を介して接続されたべき乗剰余演算装置１３と、を備えて構成されている。
パーソナルコンピュータシステム１２は、各種データを入力するためのキーボード１５と、各種表示を行うためのディスプレイ１６と、入出力インターフェース１７及び図示しないハードディスクなどの外部記憶装置を内蔵したパーソナルコンピュータ本体１８と、各種プリントアウトを行うプリンタ１９と、を備えて構成されている。
べき乗剰余演算装置１３は、大別すると図５に示すように、所定の精度範囲内で任意精度の除算を行う任意精度除算装置２０と、所定の精度範囲内で任意精度の乗算を行う任意精度乗算装置２１とを備え、これらはバス２２により接続される。
［５］任意精度除算装置及び任意精度乗算装置の構成
任意精度除算装置２０は、図６に示すように、被除数データ及び除数データがそれぞれ入力される８ビット精度の第１除算器２５−１〜第Ｈ除算器２５−Ｈ（Ｈ：２以上の整数）のＨ個の除算器と、精度情報データに基づいて対応する８ビット精度の除算器をカスケード接続するための第１スイッチＳＷ１〜第（Ｈ−１）スイッチＳＷ（Ｈ−１）の（Ｈ−１）個のスイッチと、を備えて構成されており、第１スイッチ〜第（Ｈ−１）スイッチＳＷ１〜ＳＷ（Ｈ−１）は、精度情報データに基づいて必要な数の除算器をカスケード接続することとなる。
なお、これらスイッチＳＷ１〜ＳＷ（Ｈ−１）も、図２の場合と同様に説明の便宜上図示したものである。また、各８ビット除算器の間及び各８ビット除算器への入出力を、全て光信号で伝送するように構成することもできる。
より具体的には、８ビット精度の除算を行う場合には、全てのスイッチＳＷ１〜ＳＷ（Ｈ−１）が開状態であり、第１除算器２５−１のみが動作し、１６ビット精度の除算を行う場合には、第１スイッチＳＷ１のみが閉状態となり、第１除算器２５−１及び第２除算器２５−２が動作し、（８×Ｊ）精度の除算を行う場合には（Ｊ：２以上（Ｈ−１）以下の整数）、第１スイッチＳＷ１〜第（Ｊ−１）スイッチＳＷ（Ｊ−１）が全て閉状態となり第１除算器２５−１〜第Ｊ除算器２５−Ｊが動作することとなる。
そして、被除数データ及び除数データは、下位８ビットから８ビット単位で第１除算器２５−１から第Ｊ除算器に順次与えられることとなる。
同様に、複数の除算器を乗算精度２mビット（ｍ：自然数で固定）、除算精度２m+1ビットでべき乗剰余演算を行う外部べき乗剰余演算ユニットとして構成し、被除数データ、除数データ及び精度情報データの入力信号ライン並びに商データ及び剰余データの出力信号ラインをカスケード接続するためのカスケード接続端子をそれぞれのべき乗剰余演算ユニットに設け、
ｘ  ＝２n／２m    （ただし、ｎは自然数、ｘは自然数）
を満たすようにべき乗剰余演算ユニットをｘ個接続することにより最大２nビット精度の暗号化及び復号を行うための任意精度べき乗剰余演算装置を構成することが可能となる。
なお、任意精度乗算装置２１は、任意精度除算装置２０の８ビット除算器を８ビット乗算器に変更した構成とほぼ同様の構成であるので、その説明を省略する。また、図４に示すバス２２を光伝送路とすれば、これら任意精度乗算装置２１と任意精度除算装置２０との間を、光信号により伝送することができる。
［６］除算器の構成
次に任意精度除算装置を構成している除算器の構成について説明する。
［６．１］  除算器のアルゴリズム
まず、除算器の説明に先立ち、除算器のアルゴリズムについて説明する。
除算に関しては、乗算ほどではないが、いろいろなアルゴリズムが考案されている。また、信号処理においては、除算は乗算ほど頻繁に用いられるわけではない。
しかしながら、信号の正規化、コンピュータ通信や情報ネットワークにおける秘匿技術としての暗号化／復号に、音声認識における特徴抽出において、周波数スペクトルを基本とする線形予測係数の演算（積和が７０回、除算が１２回）、フォールトトレラントシステムにおいてなどの例に見られるように、除算を必要とする場合、その実現は乗算ほど容易ではなく、従来においては、高精度で高速に結果を得るための有効な手段がなかった。
除算の実現方法としては、以下の４種類が知られている。
（１）変数ｘと１／ｘ  の関係を示すルックアップテーブル（変換表）をＲＯＭ内に用意しておき、ｙ／ｘなる除算を、ｙ（１／Ｘ）  なる乗算に置き換えて実行する「逆数ＲＯＭ方式」。
（２）ｙ／ｘ  なる除算を直接実行する代わりに、対数ＲＯＭによりｘとｙから  ｌｏｇｘとｌｏｇｙを求め、それからｚ＝ｌｏｇｘ−ｌｏｇｙの減算を行い、最後に指数ＲＯＭによりｅｘｐｚを求める「対数計算方式」。
（３）被除数に対してシフトと減算を試行錯誤的に繰り返す「減算シフト方式」。
（４）乗算を繰り返し実行しながら結果を求めるべき商の値に収束させていく「収束形除算方式」。
このうち、逆数ＲＯＭ方式が最も高速であるが、高精度を要求するとルックアップテーブルを格納すべきＲＯＭの容量が指数的に大きくなる欠点がある。従って、信号処理においては比較的粗い精度でよい場合に限られて使用されている。
次の対数計算方式も対数ＲＯＭの容量の制約からくる精度上の検討を十分に行ったうえで用いる必要があり、その意味でも以上の二つのＲＯＭ方式はどのような場合にも用い得る汎用的な方法とは言い難い。
以上の４方式のうち、どのような精度に対しても除算可能な方式は減算シフト方式と収束形除算方式であるといえる。
収束形除算方式は被除数と除数を分数の分子と分母とみなし、分母が１に近づくまで分子分母に同一の収束係数を乗じていき、得られた最終的な分子の値が商になる。あるいは、除数の逆数を収束アルゴリズムによって求め、商はこの逆数と被除数の積から求めることができる。
しかし、複数チップ（モジュール）接続による除算能力の拡張機能を考慮した場合、近似演算による収束が行われる収束形除算方式では部分剰余の伝搬がさらに近似されることになり、誤差が大きくなってしまうという問題点が生じる。
この点、減算シフト方式ではそのような問題はなく、任意精度で除算可能であり、複数チップ（モジュール）接続による除算能力の拡張機能をも考慮した場合、最も適しているといえる。
次に、除算能力の拡張機能について考察する。
例えば、
５６７８９０／１２３４
の除算を実行するには図７Ａに示すように、被除数と除数の減算が繰り返し実行される。
ここで、除数２けたの除算器（または除算モジュール）を用いて、除数を４けたに拡張した使用を考えてみると、図７Ｂ及び図７Ｃに示すように、除数１２３４を除数１２と除数３４とに分割するとともに、被除数５６７８９０を被除数５６７及び被除数８９０とに分割し、１２と３４の除数で分散処理した結果から除算能力の拡張した解（図７Ａ相当）を得るという乗算器のような使い方（乗算においては可能）はできない。
従って、除算は使用可能けた数の範囲内で有効であり、１ビットでも除算能力を超えた使用に対しては、たとえメモリーや外部回路を用いても容易には対処できない。
また、除算においては通常丸め操作を行うが、暗号／復号システムにおいては、このような使用はできない。
以上のような理由によって、従来においては、ハードウェア化された除算器は少なく処理速度の遅いソフトウェアで対処していた。
ところで、本除算器のアルゴリズムは被除数に対してシフトと減算を試行錯誤的に繰り返す「減算シフト方式」に基づいたもので、その一般的な基本式は以下の漸化式で表される。
0004092735.tif 000003
0004092735.tif 000004
が求める商Ｑであり、最終剰余Ｒは２-nＲ(n)である。
各演算工程における商のディジットｑj+1は２ＲとＤの大小関係で以下のように定まる。
２Ｒ(j)＜Ｄの場合、ｑj+1＝０
２Ｒ(j)≧Ｄの場合、ｑj+1＝１
つまり、まず仮の部分剰余Ｒ(j+1)（＝２Ｒ(j)−Ｄ）を求めて、部分剰余Ｒ(j+1)が正または“０″ならばｑj+1＝１が求まり、真の部分剰余とする。もし、部分剰余Ｒ(j+1)が負ならば、ｑj+1＝０で仮の部分剰余の減算を取消す。
以上の操作は、Ｒ(n)をｎディジットだけ右にシフトすることから求まることを先の漸化式は意味している。
しかし、以上の漸化式は単にｎディジットの商に対してのものである。除算データを各モジュールに分散した場合、各モジュールの被除数と除数はそれぞれ連結した状態で行われなければならない。
一般に、除数に対して被除数のけた数が多いため、分散した除数を連結して被除数との減算を行うことは、除数の連結とそれに伴う減算器やラッチ回路の連結などにより容易には実現できなかった。
これに対し、本実施例の除算器は、分散した除数と減算器は各モジュール内に固定し、被除数を連結してシフトと減算を行うようにしてモジュールの分散化を可能にしている。
この場合、筆算とは逆に除数を固定した減算なので被除数は左シフトになる。
例えば、簡単のために１モジュールが４ビット除算器について２モジュールに拡張したときの各ステップの動作を図８に示す。
２モジュールに分散した除数は減算器とラッチ回路を伴ってそのけた借り用端子ＢＯとＢＮで連結される。被除数はＱＩとＱＯ端子により連結されて初段のＲＩに戻される。除数部分は各モジュールに固定で、被除数が必要なけた数だけ左シフトと減算を繰返して演算を終了する。
商ｑと部分剰余は各減算処理における減算結果によって決まるものである。なお、演算は８ビットの減算器の場合、７ステップで終了し、８ステップ目では商ｑ０の格納だけになる。この結果、後述の被除数ラッチ・シフト回路３２（図９参照）に商データＱが、後述の部分剰余のシフト回路３４（図９参照）には剰余データが得られることとなる。
［６．２］  除算器の概要構成
図９に第１除算器２５−１を例として除算器の概要構成ブロック図を示す。
第１除算器２５−１は、入力された８ビット除数データをラッチする除数ラッチ回路３１と、被除数データをラッチし、シフト操作を行うための被除数ラッチ・シフト回路３２と、被除数データに対応する被除数から除数データに対応する除数を減算する並列減算回路３３と、部分剰余データを格納し、シフト操作を行う部分剰余シフト回路３４と、除算に必要なシフトパルスを発生する制御回路３５と、を備えて構成されている。
［６．３］  除算器の動作
次に除算器の動作について図１０を参照して説明する。
時刻ｔ１において、除算開始パルス／ＳＴＡＴ（／はロウアクティブを示す。以下、同様）が立ち下がると、除算開始パルス／ＳＴＡＴの次の立ち上がり（時刻ｔ２）までの間に第１除算器２５−１は初期化される。
次に時刻ｔ２以降で基準クロック信号ＣＫが最初に立ち下がる時刻ｔ３において被除数データ（８ビット）が被除数ラッチ・シフト回路３２にラッチされ、除数データ（８ビット）が除数ラッチ回路３１にラッチされる。
そして、時刻ｔ４において、基準クロック信号ＣＫが次に立上ると、並列減算回路３３において、被除数と除数の減算が行われ、減算結果が正または“０″ならば、切換スイッチ３６は並列減算回路３３側となり、並列減算回路３３の減算結果が負であるならば切換スイッチ３６は、部分剰余シフト回路３４側となる。
この結果、時刻ｔ５において、部分剰余シフト回路３４の部分剰余データがシフトされるとともに、並列減算回路３３の減算結果である部分剰余データあるいは減算前に部分剰余シフト回路３４に保持されていた減算前の部分剰余データが部分剰余シフト回路３４にラッチされる。
同様に時刻ｔ５〜時刻ｔ６の間に被除数が必要な回数だけ、すなわち、全８ビットであるから残りの７ビットに対応する７回の被除数と除数の減算処理及び部分剰余シフト回路のシフト処理及びラッチ処理が繰り返される。
そして時刻ｔ６において、基準クロック信号ＣＫが立ち下がると、除算終了信号／ＤＥＮＤが“Ｌ″レベルとなり、上位桁の減算器（ここでは、第２減算器２５−２）が同様に動作を開始することとなる。
そして、さらに上位桁の減算器２５−３〜２５−Ｊにおいて同様の除算動作が行われて、最後の減算器２５−Ｊの除算終了信号／ＤＥＮＤが第１減算器２５−１に出力されると減算処理を終了することとなる。
これらの結果、各減算器２５−１〜２５−Ｊの被除数ラッチ・シフト回路３２には商データ（８ビット）が求められ、部分剰余シフト回路３４には剰余データがそれぞれ求められることとなる。
以上の動作はすべて制御回路３５が出力するシフトパルスＳＬＡに同期して行われるため、多くの減算器をカスケード接続して除算能力を拡張した際にも伝搬遅延によるタイミング的な誤動作を生じることはない。
［７］  暗号化処理及び復号処理（剰余演算処理）
ＲＳＡに基づいた公開鍵暗号方式の暗号化及び復号処理（剰余演算処理）について図１１を参照して説明する。
ＡN≡Ａ  ｍｏｄ  ｎ
の剰余演算では本暗号／復号システムにおいてＡ、Ｎ、ｎの各値を入力する（ステップＳ３１）。
次にＡをＡ１に代入し（ステップＳ３２）、演算用変数ｋの初期値を１とする（ステップＳ３３）。
そして、演算用変数ｋがＮ未満である間、すなわち、次式
ｋ＜Ｎ
を満たしている間（ステップＳ３９）は、以下のステップＳ３４〜ステップＳ３８の処理を繰り返す。
まず、Ｎ＝１であるか否かを判別する（ステップＳ３４）。
ステップＳ３４の判別において、Ｎ＝１である場合には、Ａ１をＡ０に代入する（ステップＳ３５）。
また、Ｎ≠１である場合には、Ａ１及びＡの乗算を行い、乗算結果をＡ０に代入する（ステップＳ３６）
そして、
Ａ０≡Ａ  ｍｏｄ  ｎ
を求め（ステップＳ３７）、演算用変数ｋをｋ＋１とする（ステップＳ３８）。
そして、演算用変数ｋがＮ以上となった場合に、得られた剰余Ａが求める剰余となる。このとき、乗算の最大精度はＡのビット数の２倍である。
このように、本第１実施例のべき乗剰余演算装置を用いれば、図１６の従来の処理と比較して処理を非常に単純化することができる。
［８］  べき乗剰余演算装置のゲート数
ここで、べき乗剰余演算装置を構成する際に必要とされるゲート数について説明する。
周知のように暗号／復号システムにおける剰余演算では極めて高精度であることから、１モジュールの乗算器の乗算精度を１６ビット、１モジュールの除算器の除算精度を３２ビットとして、１ユニットにそれぞれ４モジュールを内蔵（乗算１６〜６４ビット、除算３２〜１２８ビットの可変精度）した場合のゲート数を図１２に示す。
図１２に示すように、１モジュールの３２ビット精度除算器を構成するためには、１７００ゲート必要であり、べき乗剰余演算装置１ユニット中の任意精度除算装置では、
１７００×４＝６８００［ゲート］
が必要となる。
また、図１２に示すように、１モジュールの１６ビット精度乗算器を構成するためには、１０３２ゲート必要であり、べき乗剰余演算装置１ユニット中の任意精度乗算装置では、
１０３２×４＝４１２８［ゲート］
が必要となる。
従って、べき乗剰余演算装置に必要とされるゲート数は、
６８００＋４１２８＝１０９２８［ゲート］
であり、制御回路及び動的な接続回路を含めて一つのべき乗剰余演算装置を１２０００［ゲート］程度でワンチップ化することが可能となる。
なお、５１２ビット精度では８ユニット、１０２４ビット精度では１６ユニットをそれぞれ必要とする。
［９］  演算時間
次に上記べき乗剰余演算装置を用いて、
ａb≡Ｍ  ｍｏｄ  ｃ
を演算する場合に要する演算時間ついて図１３Ａ〜図１３Ｃ、図１４及び図１５を参照して説明する。
指数ｂがｎビットの場合、べき乗剰余演算に必要な演算処理は、図１３Ａに示すように、（１）〜（４）の４段階の乗算処理及び除算処理に分解することができる。この場合において、（１）及び（３）の乗算は、図１３Ｂのｉビット乗算器２１にて実施され、（２）及び（４）の除算は、図１３Ｂの２ｉビット除算器２０にて実施される。（１）及び（３）の乗算処理における乗算精度は、最大ｃのビット数ｉ以下となり、その積は最大でｃのビット数ｉの２倍精度となる。また、（２）及び（４）の除算（剰余演算）処理における除算精度は、最大でｃのビット数ｉの２倍の精度となる。このｉビット乗算器２１と２ｉビット除算器２０とは、図５の任意精度乗算装置２１と任意精度除算装置２０と同様の構成を有する。
なお、図１３Ｂにおいて、入力される値はａ，ｂ，ｃであり、Ｍが格納されるレジスタには、当初のＭは１に初期化されている。そして、Ｍ←Ｍ×  ａ  ｍｏｄ  ｃの演算（ｂ＝０）では、ａ，Ｍがｉビット乗算器２１に入力され、その結果をｃで割った余りをＭとして格納する。また、ａ←ａ2ｍｏｄ  ｃの演算（ｂ＝１）では、ｉビット乗算器２１に２つのａを入力することによりａ2が求められる。
ここで、図１３Ａ中の（１）ではｒ１2，ｒ２2，ｒ３3…の演算がｉビット乗算器２１で実施され、図１３Ａ中の（２）ではｒ１2，ｒ２2，…をそれぞれｃで割った余りがｒ２，ｒ３…（計算途中のＭ）として、２ｉビット除算器２０で求められる。図１３Ａ中の（３）では、ｋ１＝ｒ１×ｒ２、ｋ２＝ＲＯ×ｒ３、ｋ３＝Ｒ１×ｒ４…の乗算がｉビット乗算器２１で実施される。また、図１３Ａ中の（４）では、Ｋ１，Ｋ２，…をｃで割った余りがそれぞれＲ０，Ｒ１，…（計算途中のＭ）として、２ｉビット除算器２０で求められ、最終段階でｋｎ−２をｃで割った余りＲｎ−３が求めるべき値Ｍとなる。
この計算例の実例を図１３Ｃに示す。図１３Ｃは、１８６19≡Ｍ  ｍｏｄ  ３７７を復号してＭ＝１７を求めた計算手順を示している。
図１３Ｃにおいて、（２）の剰余の値「２８９」，「２０４」，「１４６」，「２０４」は、１８６2，２８９2，２０４2，１４６2をそれぞれ３７７で割った余りとして求められる。また、（３）の積の値は、５３７５４＝１８６×２８９，４４８８０＝２２０×２０４として求められる。さらに、（４）のＭ＝１７は、４４８８０を３７７で割った余りとして求められる。
ここで、図１３Ａのａ、ｂ、ｃが全て１０２４ビットである場合の最大演算時間を必要な基準クロック数で表すと、図１４に示すように、（１）の乗算時間に１０４７５５２［クロック］、（２）の剰余演算時間に２０９５１０４［クロック］、（３）の乗算時間に１０４７５５２［クロック］、（４）の剰余演算時間に２０９５１０４［クロック］必要であり、合計で６２８５３１２［クロック］必要となる。
この結果、基準クロック周波数を６６［ＭＨｚ］として演算を行った場合、演算時間は、９５．２［ｍｓｅｃ］となる。
同様に、ａ及びｂが１０２４ビットであり、指数ｂのビット数を５１２ビット及び９ビットとした場合の演算時間は、図１５に示すように、それぞれ４７．６［ｍｓｅｃ］、０．７［ｍｓｅｃ］となる。ただし、これらの演算時間は、毎回の積及び剰余を最大精度とした時の算出結果であるため、実際には、これらの値よりも小さな値となる。
以上の説明のように第２実施例によれば、乗算精度２mビット（ｍ：自然数）、除算精度２m+1ビットでべき乗剰余演算を行うべき乗剰余演算ユニットを構成し、
ｘ＝２n／２m      （ただし、ｎは自然数、ｘは自然数）
を満たすようにべき乗剰余演算ユニットをｘ個接続することにより、２nビット精度の暗号化及び復号を行うことが可能となる。このため、容易にシステムのハードウェア的な拡張を図ることが可能となっている。
なお、上記ｘの関係式はべき乗剰余演算ユニットの最大演算精度が要求される演算精度と等しい場合であったが、
ｘ＞２n／２m      （ただし、ｎは自然数、ｘは自然数）
を満たすようにべき乗剰余演算ユニットをｘ個接続することによっても演算能力に余裕が生まれるだけで、同様の効果が得られる。
さらに、べき乗剰余演算ユニットで演算可能なビット精度２nよりも低いビット精度２n1（ｎ１は自然数、かつ、ｎ１≦ｎ）が要求された場合には、接続されているｘ個のべき乗剰余演算ユニットのうち、
ｘ≧ｘ１≧２n1／２m      （ただし、ｘ１は自然数）
を満たすようにｘ１個のべき乗剰余演算ユニットをカスケード接続するように構成すれば、演算に不要なべき乗剰余演算ユニットには電力を供給する必要がないので、消費電力の適正化が図れるととともに、演算処理時間の適正化が図れることとなる。
さらにべき乗剰余演算ユニットを、カスケード接続可能なｙ個の乗算精度２m／ｙ、ｙ個の除算精度２m+1／ｙでべき乗剰余演算を行うべき乗剰余演算モジュールで構成することができる。この場合、接続されているべき乗剰余演算モジュールのうち、２n1ビット精度の暗号化及び復号を行うのに十分な個数ｙ１≧２n1／（２m／ｙ）のべき乗剰余演算モジュールをカスケード接続するようにすれば、さらなる消費電力の適正化及び演算処理時間の適正化が図れることとなる。
また、第２実施例によれば、除算の分散処理を実現した任意精度除算器を１２８ビット精度とし、任意精度乗算器を６４ビット精度でワンチップ化しても約１万２千ゲート規模で済み、その乗除算ユニット（チップ）を８〜１６ユニットカスケード接続することにより５１２〜１０２４ビット精度に容易に対応可能である。同様にさらなる高精度化も容易に実現することができる。
そして、演算は精度に比例したクロック数（例えば、５１２ビット精度では５１２クロック）で実行し、ボード上に完全なハードウェアで構築できるので高速化が可能である。
また、各パーソナルコンピュータシステム毎に暗号／復号システムを容易に構築することができ、情報セキュリティの意味からも望ましい暗号／復号システムを実現することが可能である。
また、上記説明においては、最大でｘ個のべき乗剰余演算ユニットが設けられている場合について説明したが、例えば、べき乗剰余演算ユニットをＴＦＴ（Thin Film Transistor）で構成した場合には、欠損などにより不良トランジスタが発生することにより１個のべき乗剰余演算ユニットが使用できないだけで、べき乗剰余演算ユニット全体が使用できなくなり、実効的な歩留まり率が低下することとなり、製造コストの上昇を招くこととなる。
そこで、べき乗剰余演算ユニットの歩留まり率Ａに対して、少なくともＫ個（ｘ≧Ｋ／Ａ）のべき乗剰余演算ユニットを予め用意し、Ｋ個のべき乗剰余演算ユニットのうち良品べき乗剰余演算ユニットをｘ個接続するように冗長構成を採用することが好ましい。こうすると、べき乗剰余演算モジュールに不良が発生した場合でも、冗長べき乗剰余演算モジュールに接続切換を行うことにより、そのべき乗剰余演算ユニットは良品として扱うことが可能となる。
さらにこのことは、べき乗剰余演算ユニットばかりでなく、べき乗剰余演算ユニットを構成するべき乗剰余演算モジュールについても同じことが言える。すなわち、べき乗剰余演算モジュールの歩留まり率Ａ′に対して、各べき乗剰余演算ユニット中に少なくともＬ個（ｙ≧Ｌ／Ａ′）のべき乗剰余演算モジュールを予め用意し、Ｌ個のべき乗剰余演算モジュールのうち良品べき乗剰余演算モジュールをｙ個接続するように冗長構成を採用する。こうすると、べき乗剰余演算モジュールに不良が発生した場合でも、冗長べき乗剰余演算モジュールに接続切換を行うことにより、そのべき乗剰余演算ユニットは良品として扱うことが可能となる。
以上の説明においては、公開鍵暗号方式のＲＳＡ暗号の場合について説明したが、楕円曲線暗号にも同様に適用が可能である。
（第３実施例）
上記第２実施例においては、全てのべき乗剰余演算装置をパーソナルコンピュータシステムの外部に設けていたが、この第３実施例は、べき乗剰余演算装置の一部を予めパーソナルコンピュータシステムの内部に設け、精度拡張のためのべき乗剰余演算ユニット用拡張スロットをパーソナルコンピュータシステムに予め設け、メモリの拡張をメモリ拡張スロットにより行う場合と同様に、べき乗剰余演算ユニットを拡張スロットに装着することにより容易に演算精度拡張を行えるようにした実施例である。
より詳細には、図４に示すパーソナルコンピュータシステム１１のメインボード上に予め、乗算精度２m1ビット（ｍ１：自然数で固定）、除算精度２m1+1ビットでべき乗剰余演算を行う内部べき乗剰余演算ユニットと、乗算精度２m2ビット（ｍ２：自然数で固定）、除算精度２m2+1ビットでべき乗剰余演算を行う外部べき乗剰余演算ユニットをカスケード接続するためのカスケード接続端子としてのべき乗剰余演算ユニット用拡張スロットを設けておく。そして、
ｚ≧（２n−２m1）／２m2（ｎ，ｚは自然数で固定）
を満たすように、べき乗剰余演算ユニット用拡張スロットに外部べき乗剰余演算ユニットを接続する。この結果、２nビット精度の暗号化及び復号を容易に行うことが可能となる。この外部べき乗剰余演算ユニットに関しても、第２実施例にて説明した各種の変更が可能である。
以上の実施例においては、パーソナルコンピュータにより本発明を実現する場合についてのみ説明したが、ワークステーションや、各種計測機器、家電製品などの機器への組込型コンピュータについても同様に適用が可能である。
（第４実施例）
次に、第１〜第３実施例の中で説明した１チップ内での光伝送について説明する。
（マイクロコンピュータの概要）
図１７は、本発明を適用した情報処理システムとしてのマイクロコンピュータ１００の一例を示すブロック図である。
図１７において、マイクロコンピュータ１００は、下記の各種機能ユニットを含んでいる。すなわち、ＣＰＵ（中央処理ユニット）１０２、ＲＯＭ（リード・オンリー・メモリ）１０４、キャッシュメモリとしてのＲＡＭ（ランダム・アクセス・メモリ）１０６、高周波発振回路１０８、低周波発振回路１１０、リセット回路１１２、プリスケーラ１１４、１６ビットプログラマブルタイマ１１６や８ビットプログラマブルタイマ１１８やクロックタイマ１２０などのタイマ回路、インテリジェントＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）１２２や高速ＤＭＡＣ１２４などのデータ転送制御回路、割り込みコントローラ１２６、シリアルインターフェース１２８、ＢＣＵ（バス・コントロール・ユニット）１３０、Ａ／Ｄ（アナログ／デジタル）変換器１３２やＤ／Ａ（デジタル／アナログ）変換器１３４などのアナログインターフェース回路、入力ポート１３６や出力ポート１３８やＩ／Ｏ（入力／出力）ポート１４０などのＩ／Ｏ回路が、マイクロコンピュータ１００内に配置されている。さらに、マイクロコンピュータ１００は、ＣＰＵ１０２と他の機能ユニット１０４〜１４０と間を接続するデータバス１４２やアドレスバス１４４などのバスライン１４６や、各種端子１４８を含んでいる。これらは、一枚の半導体基板上に形成されている。なお、図１７ではデータバス１４２とアドレスバス１４４とを分離しているが、データとアドレスとを時分割で伝送するようにすれば、データ／アドレスバスとしてデータとアドレスとを１本のラインで兼用して伝送させてもよい。
また、図１７に示すバスライン１４６には、図２に示す内部バス４が接続され、上述した各構成はマイクロプログラマブルプロセットユニット３にも接続されている。
（各種機能ユニット間での光信号の送受信のための構成）
本実施例の特徴は、データバス１４２、アドレスバス１４４、内部バス４を伝送される信号を光信号としたことである。すなわち、多チャンネルのデータ例えば３２ビットのデータは、それぞれ波長の異なる光信号として、光伝送媒体にて形成されたデータバス１４２中を同時に光伝送される。アドレス信号も同様に、波長の異なる多チャンネルの光信号として、アドレスバス１４４を同時に光伝送される。なお、データバス１４２及びアドレスバス１４４が１本の光伝送媒体にて兼用される場合には、光信号のデータ及びアドレスは時分割にて伝送される。
ここで、上述の機能ユニット１０２〜１４０は全て、従来通り、多チャンネルの電気信号にて各種機能を実現するために動作し、半導体素子等にて形成されている。このため、各種の機能ユニット１０２〜１４０は、バスライン１４６（データバス１４２及び／又はアドレスバス１４４）を介して入力される多チャンネルの電気信号を多チャンネルの光信号に変換する信号入力部と、多チャンネルの電気信号を多チャンネルの光信号に変換してバスライン１４６に出力させる信号出力部とのいずれか一方または双方を有する。
図１８は、マイクロコンピュータ１００が形成された基板２００の一部を概略的に示す図である。図１８には、基板２００上に形成された第１の機能ユニット２１０（機能ユニット１０２〜１４０のいずれか一つ）より第２の機能ユニット２２０（機能ユニット１０２〜１４０の他の一つ）に向けて、バスライン１４６を介して信号を送出するための構成が図示されている。
第１の機能ユニット２１０は、電気回路領域２１２と、その電気回路領域２１２からの出力信号（多チャンネルの電気信号）を伝送する配線部２１４と、多チャンネルの電気信号に基づいてそれぞれ波長の異なる多チャンネルの光信号を発光出力する信号出力部としての発光部２１６とを有する。
第２の機能ユニット２２０は、多チャンネルの光信号を多チャンネルの電気信号に変換する信号入力部としての受光部２２２と、多チャンネルの電気信号を増幅する増幅回路２２４と、その電気信号を伝送する配線部２２６と、電気回路領域２２８とを有する。なお、増幅回路２２４は、受光部２２２からの電気信号の電圧レベルを、第２の機能ユニット２２０にて必要な電圧レベルまでシフトさせるレベルシフタとして機能し、必要に応じて設けられる。
発光部２１６と受光部２２２との間に形成されるバスライン１４６は、光伝送媒体である導波路２３０として構成され、多チャンネルの光信号を同時に伝送する。
図１８に示す発光部２１６は多チャンネルの電気信号を多チャンネルの光信号に変換するために、多チャンネルの数と等しい数の発光素子を有する。同様に、受光部２２２も多チャンネル分の受光素子を有する。
なお、第１，第２の機能ユニット２１０，２２０間で双方向の信号伝送を行うこともできる。この場合、第１の機能ユニット２１０は、図１８に示す光伝送媒体としての導波路２３０と光学的に接続された受光部と、該受光部からの電気信号を増幅する増幅器とを有する。一方、第２の機能ユニット２２０は、導波路２３０と光学的に接続された発光部２２２を有する。
図１９は、図１８に示す発光部２１６のうちの一部である３つの発光素子２１６Ａ〜２１６Ｃ及び導波路２３０の一例を示す断面図である。図１９では、共通の導波路２３０上に３チャンネル分の発光素子２１６Ａ〜２１６Ｃが形成されている状態が図示されている。
図１９において、導波路２３０は、例えば、下層のＳｉＯ2層２４０と上層のＳｉＯ2層２４２との間にコアとなる透明電極例えばＩＴＯ（インジウム・ティン・オキサイド）層２４４を設けて構成される。なお、コアとなるＩＴＯ層２４４の全ての外表面は、ＳｉＯ2層２４０またはＳｉＯ2層２４２により覆われて光漏れが防止されている。
発光素子２１６Ａ〜２１６Ｃは、後述するように一部の層の組成、材料等が異なる点を除いて同一の構成を有するため、以下発光素子２１６Ａについて説明する。発光素子２１６Ａは、上層のＳｉＯ2層２４２上に、各チャンネルの発光箇所を仕切るためのバンク２５０を有する。このバンク２５０内には、ＩＴＯ層２５２、発光層２５４が順次積層され、発光層２５４及びバンク２５０の一部を覆って金属電極（例えばＡｌ−Ｌｉ）２５６が形成されている。なお、ＩＴＯ層２５２の下層に、狭帯域の波長を通過させる光学フィルターを形成してもよい。このようにして、導波路２３０上には、バンク２５０により光学的に隔絶された複数の発光素子２１６Ａ〜２１６Ｃなどが形成される。
発光素子２１６Ａの発光層２５４は、例えば有機ＥＬ（エレクトロルミネッセンス）にて形成される。この有機ＥＬは、例えば図２０に示すように、インクジエットノズル２５８よりＩＴＯ層２５２上に吐出され、例えば約０．１μｍの膜厚にて形成される。そして、有機ＥＬの材料を選択することで、あるチャンネルの発光素子２１６Ａの発光層２５４から発光される光の波長を、他の全てのチャンネルの発光素子２１６Ｂ，２１６Ｃ等の発光層２５４の発光波長と異ならせている。
発光層２５４として有機ＥＬを用いると、発光波長の選択の自由度が大きく、事実上特定の材料を選択したり、材料を復号することで、あらゆる波長の選択が可能である。
有機発光材料としては、発光材料中の励起子のエネルギーが有機物質の禁止帯幅に対応するＨＯＭＯ（最高被占準位）−ＬＵＭＯ（最低空準位）間のエネルギー差に相当するものが選択される。例えば、低分子、高分子、特に主鎖に共役系の発達した共役高分子、導電性分子や色素分子が選択される。
有機発光材料として、低分子有機材料を用いる場合、例えば青色発光させるには、アントラセン、ＰＰＣＰ、Ｚｎ（ＯXＺ）2、ジスチルベンゼン（ＤＳＢ）、その誘導体（ＰＥＳＢ）等が用いられる。また、例えば赤色発光させるには、ＢＰＰＣ、ベリレン、ＤＣＭなどが用いられる。
また、有機発光材料として高分子有機材料を用いる場合であって、例えば赤色発光させるためには、ＰＡＴなど、オレンジ色発光させるにはＭＥＨ−ＰＰＶなど、青色発光させるにはＰＤＡＦ、ＦＰ−ＰＰＰ、ＲＯ−ＰＰＰ、ＰＰＰなど、紫色発光させるにはＰＭＰＳなどが用いられる。
その他、有機発光材料として、ＰＰＶ、ＲＯ−ＰＰＶ、ＣＮ−ＰＰＶ、ＰｄｐｈＱX、ＰＱX、ＰＶＫ（ポリ（Ｎ−ビニルカルバゾール））、ＰＰＳ、ＰＮＰＳ、ＰＢＰＳなどが用いられる。
特にＰＶＫは、Ｅｕ錯体などキャリア輸送能力の劣る色素分子などのドーパントインクの混合濃度や吐出回数を制御することで発振波長（発光色）を変えることができる。例えば、ＰＶＫからなる有機発光材料に蛍光色素をドープすると発光色を調整することができる。
また、ＰＶＫにローダミンＢやＤＣＭをドープ可能に構成する場合には、発光色を緑色から赤まで任意に変えることができる。
また、光の波長（ピーク波長や波長帯域など）は、図１９のＩＴＯ層２５２の下層に追加配置される光学フィルターによってある程度調整可能である。
白色光のような波長帯域の広い光が発光され、その波長を調整する場合は、上記光学フィルターとして、通常の吸収型の光学カラーフィルターを用いることができ、これにより所望の色（波長）の光のみを通過させて光信号とすることができる。
また、ＩＴＯ層２５２の下層に追加配置される光学フィルタとしては、分布反射型多層膜ミラー（ＤＢＲミラー）を用いることができる。このＤＢＲミラーは、屈折率の異なる複数の薄膜を積層したもの、特に屈折率の異なる２種類の薄膜で構成されたペアを複数有するものである。この薄膜を構成する成分としては、例えば半導体材料や誘電体材料などが挙げられ、これらのうちでは誘電体材料が好ましい。これらは、通常の真空成膜法あるいは液相成膜法を用いて形成することができる。また、誘電体材料は、有機溶媒に可溶な有機化合物を出発原料として用いることができ、この場合図２０のインクジェット方式によるパターン形成の適用が可能となる。
発光素子２１６Ａ〜２１６Ｃは、垂直共振器型の面発光レーザとすることもできる。この面発光レーザは、それぞれ反射率が異なる２つのミラー例えば分布反射型多層膜（ＤＢＲ）ミラー（図１９の例では下層のミラーの反射率が低い）の間に、クラッド層及び活性層（量子井戸構造が好ましい）を交互に積層させて形成し、上下各層のミラーと上下各層の電極（図１９の例では下部電極はＩＴＯなどの透明電極である）との間にはそれぞれコンタクト層が配置されて形成される。
なお、この種の面発光レーザの詳細は、本願出願人の先の出願（特願平１０−２０１２４１５、特願平１０−２０１２４４、特開平７−１９８２０３など）に開示されているので、その詳細な説明は省略する。
各チャンネルの面発光レーザの発光波長も、エピタキシャル成長される材料例えばＧａＡｌＡｓの組成を選択することで変更可能であり、図２０のインクジェット方式によるパターン形成によって、組成の異なる複数の面発光レーザを導波路２３０上に実装することができる。
発光素子２１６Ａのさらに他の例として、図２２に示すような端面発光レーザ２７０を用いることもできる。この端面発光レーザ２７０の端面２７２から出射された光２７４は、ＩＴＯなどの光伝送媒体にて形成されたウェーブガイド２７６内を伝搬される。各チャンネルの端面発光レーザの発光波長も、その構成材料の組成を選択することで変更可能である。
図２１は、図１９に示す導波路２３０の延長線上に設けられた３チャンネル分の受光素子２２２Ａ〜２２２Ｃの一例を示している。この受光素子２２２Ａ〜２２２Ｃも後述する一部の層の組成、材料等が異なる点を除いて共通の構成を有するため、以下受光素子２２２Ａについて説明する。この受光素子２２２Ａは、導波路２３０の上層のＳｉＯ2層２４２が除去された領域のＩＴＯ層２４４上に、光学フィルター２６２と、透明電極としてのＩＴＯ層２６３と、第１導電型半導体層例えばｎ型ＧａＡｌＡｓ層２６４と、第２導電型半導体層例えばｐ型ＧａＡｌＡｓ層２６６と、金属電極２６８とを有する。
ここで、第１，第２導電型半導体層２６４，２６６はＰＩＮフォトダイオードを構成する。このＰＩＮフォトダイオードを構成する他の例として、ｐ型ａ−ＳｉＣ（ｐ型半導体）と、ｉ型ａ−Ｓｉ層と、ｎ型ａ−ＳｉＣ層とを有するものでもよい。このとき、金属電極２６８として、Ａｌ−Ｓｉ−Ｃｕ層を用いることができる。
光学フィルター２６２は、例えばＸ１ｎｍ以上の波長の光を通過させる第１の光学フィルターと、Ｘ２（＞Ｘ１）ｎｍ以下の波長の光を通過させる第２の光学フィルターとの少なくとも２層を有し、Ｘ１〜Ｘ２ｎｍの波長の光を通過させる狭帯域光フィルターとして機能する。なお、この光学フィルター２６２の構成を、図１９のＩＴＯ層２５２の下層に追加配置される光学フィルターに適用することもできる。逆に、図１９のＩＴＯ層２５２の下層に追加配置される光学フィルターとして説明した材料を、光学フィルター２６２に用いることもできる。
上記の構造により、導波路２３０を伝搬され、光学フィルター２６２を通過した特定波長の光は、第１，第２導電型半導体層２６４，２６６の間の界面に形成される空乏層にて光−電流変換され、この電気信号を電極２６３，２６８を介して取り出すことができる。
ところで、光学フィルター２６２は、その構成材料の選択により、通過される光の波長を変更できる。また、第１，第２導電型半導体層２６４，２６８などにて構成されるフォトダイオードも、構成材料例えばＧａＡｌＡｓの組成を選択することで、検出できる光の波長を変更できる。これにより、あるチャンネルの受光素子２２２Ａにて検出される光の波長を、他の全てのチャンネルの受光素子２２２Ｂ，２２２Ｃなどでの検出波長と異ならせている。なお、光学フィルタ２６２、第１，第２導電型半導体層２６４，２６８は、図２０に示すインクジェットノズル２５８を用いた層形成方法により形成することができる。あるいは、検出波長の異なる受光素子２２２Ａ，２２２Ｂ，２２２Ｃを、導波路２３０上に実装してもよい。
（マイクロコンピュータの動作説明）
図１７に示すＣＰＵ１０２が例えばキャッシュメモリであるＲＡＭ１０６よりデータを読み込む場合には、ＣＰＵ１０２よりＲＡＭ１０６を選択するチップイネーブルまたはチップセレクト信号、さらには読み出しアドレス信号などが、それぞれ多チャンネルの電気信号として出力される。
ここで、図１８に示す第１の機能回路２１０がＣＰＵ１０２とすると、この多チャンネルの電気信号は図１８の電気回路領域２１２より出力される。この多チャンネルの電気信号は配線部２１４を介して発光部２１６に入力される。発光部２１６を構成する各々の発光素子は、図１９に示す金属電極２５６に各チャンネルの電気信号の一つが入力され、それに基づいて発振（発光）制御される発光層２５４にて各チャンネル固有の波長の光信号が発光される。これにより、各チャンネル毎に発光制御された光信号が各チャンネルの発光層２５４より発光され、ＩＴＯ層２５２を介して導波路２３０に入射される。導波路２３０では、図１９に示すようにコアとなるＩＴＯ層２４４を光が伝搬される。
図１８の第２の機能ユニット２２０をＲＡＭ１０６とすると、その受光部２２２に、導波路２３０を伝搬された光信号が入射される。ここで、図２１に示すように、受光部を構成する各々の受光素子２２２Ａ〜２２２Ｃは、それぞれ異なる波長の光を通過させる光学フィルタ２６２を有するので、多チャンネル分の数だけ配置された各々の受光素子２２２Ａ〜２２２Ｃには、各チャンネルに対応する波長の光のみがそれぞれ入射される。さらに、各々の受光素子２２２Ａ〜２２２Ｃは、各々の光学フィルタ２６２を通過した波長の光を検出するように構成されているため、各チャンネル毎に電気信号を出力することができる。
その後は、従来のＬＳＩなどと同様にＲＡＭ１０６が電気的に駆動され、必要なデータがＲＡＭ１０６より読み出される。ＲＡＭ１０６より読み出された電気信号は、図１８では省略した第２の機能ユニット２２０側の発光部にて光信号に変換され、図１８に示す導波路２３０を介して伝搬される。この光信号は、図１８ではした第１の機能ユニット２１０側の受光部にて電気信号に変換され、増幅器を介してＣＰＵ１０２に供給される。
このように、情報処理システムとしてのマイクロコンピュータ１００内の各機能ユニット間の信号の授受を光によって行うことにより、伝送速度のロスをほとんど無視することができる。従って、さらに高集積化が進んだとしても、伝送遅延を考慮した設計が不要となり、回路の構築設計が大幅に簡易化される。しかも、マイクロコンピュータ１００内の各機能ユニット間の信号の授受を光によって行うことにより、マイクロコンピュータ１００の発熱も低減させることができる。
なお、図１７に示すマイクロコンピュータ１００と、その周辺機器との間を光通信する構成とすることもできる。周辺機器としては、ＬＣＤやＣＲＴなどの表示部、プリンタなどを挙げることができる。
この場合、図１７に示す入力ポート１３６、出力ポート１３８、Ｉ／Ｏポート１４０として、バスライン１４６に対して多チャンネルの光信号を入出力する構成とすればよい。このとき、光信号を入出力しない時に通路を遮断する光シャッターを各ポートに設け、チップセレクト信号などにより周辺機器が指定された場合にのみ光シャッターを開放する構成としてもよい。
（第５実施例）
本発明の第５実施例は、従来の例えばＬＳＩとして１チップ内に集積されていた複数の機能ユニットを、異なる半導体装置に振り分けて収容したシステムＬＳＩに関する。
図２３は、図１７に示すマイクロコンピュータ１００の一部の構成を第１の半導体装置３００に搭載し、他の全部または一部を第２の半導体装置３０２に搭載し、第１，第２の半導体装置３００，３０２を外部バスライン３０４にて接続したシステムＬＳＩをベース基板３０６上に形成した状態を示している。外部バスライン３０４は図１８で示した導波路２３０の他、例えば光ファイバーにて形成され、第１，第２の半導体装置３００，３０２間は光により信号の授受が行われる。なお、第１の半導体装置３００及び第２の半導体装置３０２内に複数の機能ユニットが配置される場合、各半導体装置内での機能ユニット間は第１実施例と同様にして光により信号の授受が行われる。
ここで、図２３に示す第２の半導体装置３０２内に、図１７に示すキャッシュメモリとしてのＲＡＭ１０６と、ＲＯＭ１０４と、光伝送媒体で形成された内部バスライン３１０とが、第２の基板３１２上に少なくとも搭載されている。一方、図２３に示す第２の半導体装置３００内には、図１７に示すＣＰＵ１０２、内部バスライン１４６の他、第２の半導体装置３０２に搭載されない機能ユニット１０８〜１４０が、第１の基板３０８上に搭載されているものとする。
この構成により、第１の半導体装置３００内では、ＣＰＵ１０２は内部バスライン１４６を介して、第１の半導体装置３００内に搭載された他の機能ユニット１０８〜１４０との間で光信号によるデータ、アドレスの信号授受を行うことができる。一方、第１の半導体装置３００内のＣＰＵ１０２と、第２の半導体装置３０２内のＲＯＭ１０４，ＲＡＭ１０６との間では、第１の半導体装置３００内の内部バスライン１４６、外部バスライン３０４及び第２の半導体装置３０２内の内部バスライン３１０を介して、データ、アドレスの信号の授受を光信号を用いて行うことができる。
このような構成により、従来はＣＰＵ１０２と共に１チップ内に納める必要があった機能ユニットの少なくとも一つを、外部に取り出すことができ、しかも外部に取り出した機能ユニット１０４，１０６とＣＰＵ１０２との間の伝送遅延は無視することができる。このため、１チップ化される第１の半導体装置３００の集積度を低くでき、歩留まりが向上する他、ＣＰＵ１０２により直接アクセスされる機能ユニットとして例えばＲＯＭ１０４，ＲＡＭ１０６の外付けが可能になる。従って、１チップの基本設計思想を共通化させながら、外付け素子による機能の追加を自由に設計することが可能となる。なお、第２の半導体装置３０２に等される機能ユニットとしては、上述のようなメモリに限定されるものではない。
（第６実施例）
図２４は、本発明の第６実施例を示す概略説明図である。図２４に示すように、本実施例では発光部、受光部、導波路が、三次元に設置されている。図２４において、基板４００上には第１層〜第５層４１０ａ〜４１０ｅが形成されている。第５層４１０ｅにおける発光部４１３と受光部４２７の関係は、図１８に示す水平な導波路２３０にて接続された発光部２１６と受光部２２２の関係と同じである。また、異なる層間における発光部４１３と受光部４２４の関係、発光部４１４と受光部４２２，４２５，４２６の関係、発光部４１２と受光部４２１との関係、発光部４２３と受光部４１１との関係は、導波路が垂直部分を有する点のみが異なり、基本的には図１８に示す発光部２１６と受光部２２２の関係と同じである。
このデバイスを製造するには、下記のようにすることが好ましい。まず、第１層〜第５層４１０ａ〜４１０ｅをそれぞれ異なる第１〜第５基板上に形成する。次いで、第１層４１０ａが形成される第１基板は、図２４の基板４００とすることができるが、もしそうでない場合には第１層４１０ａを第１基板から剥離させ、図２４の基板４００上に転写する。以下、同様にして第２層４１０ｂ〜４１０ｅをそれぞれ第２基板〜第５基板から剥離させ、位置合わせしながら図２４に示す順序で基板４００上に転写して積層する。この剥離、転写方法は本願出願人による特願平８−２２５６４３号などに開示されているので省略する。
このデバイスによれば、第４実施例と同様な効果を奏することができると共に、さらに高集積化を果たすことができる。
なお、本発明は上記実施例に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。例えば、上述した実施例では発光素子として有機ＥＬ、半導体レーザを例に挙げたが、これらに限らず無機ＥＬ、発光ダイオードなどで構成することもできる。さらに、受光素子としても、ＰＩＮフォトダイオードに限らず、ＰＮフォトダイオード、アバランシェフォトダイオードなどの各種ダイオード、フォトトランジスタ、フォトルミネッセンスなどを用いることができる。
また、本発明の情報処理システムであるマイクロコンピュータは図１７の機能ユニットを有するものに限らず、用途に応じて種々の規模及び種類の機能ユニットを配置することができる。特に、第５実施例のようなシステムＬＳＩの一つをマイクロコンピュータとして１チップ化した場合には、従来のマイクロコンピュータに必要であった機能ユニットの一部を省略することも可能である。１チップ内より省略された機能ユニットは、該１チップと外部バスラインを介して接続される他の半導体装置に搭載されればよい。
また、本発明のマイクロコンピュータあるいはシステムＬＳＩが搭載される電子機器としては、従来よりマイクロコンピュータ化されたあらゆる機器を挙げることができ、特に消費電力の低下が求められる携帯用電子機器の他、情報通信機器、家電、業務用電子機器、工作機械、自動車部品等に好適に実施できる。
（第７実施例）
次に、第２実施例または第４実施例の構成を利用して実現される本発明の第７実施例に係るシステムＬＳＩについて、図２５を参照して説明する。
図２５に示すシステムＬＳＩ５００は、開発メーカが異なる複数の機能ブロック５０１，５０２，５０３…が搭載されたシステムＬＳＩである。図２５に示す３つの機能ブロック５０１，５０２，５０３は、それぞれＡ社，Ｂ社，Ｃ社が独自に開発したライブラリに基づいて設計されたものである。このシステムＬＳＩ５００は、Ｃ社によって製造されたものと仮定する。Ｃ社は、機能ブロック５０１，５０２の焼き付けのための知的所有権に関する権利をＡ社及びＢ社から許諾され、このシステムＬＳＩを製造する。
ここで、Ａ社及びＢ社は、Ｃ社が製造するシステムＬＳＩの数に基づいて、ライセンス料が計算されるとすると、Ｃ社から正確な製造数の申告を受ける必要があり、ライセンス料の管理はＡ〜Ｃ社の全てにとって煩雑となる。
この第７実施例は、この種の知的所有権に関するライセンス料の管理を、開発メーカ、製造メーカに負担をかけずに行うための改良に関する。
例えばＡ社の開発した機能ブロック５０１を利用するエンドユーザに、上述したＲＳＡ方式の復号鍵（プライベートキー）をライセンスによって開示する。そして、この第７実施例では、システムＬＳＩ５００の利用者のうち、復号鍵を有するエンドユーザのみが機能ブロック５０１を利用できるようにしたものである。
以下、機能ブロック５０１の構成及び動作について説明する。
機能ブロック５０１は、四則演算機能エリアを有する。この四則演算機能エリアは、エンドユーザに与えられた所定の復号鍵が入力された際に、暗号化及び復号の少なくとも一方の演算を先ず実施する。機能ブロック５０１は、この演算が成立した時以降初めて、暗号化及び復号以外の一般の四則演算機能がイネーブルとされる。
具体的には、機能ブロック５０１は、図２に示すｘ個の演算ユニット７−１〜７−ｘを、四則演算機能ユニットとして有している。この中の一部が、図５または図１３Ｂに示すべき乗剰余演算ユニットとして共用されている。
ここで、例えば機能ブロック５０１での一般四則演算機能をイネーブルとするには、第２実施例の［１］ＲＳＡ方式の原理説明の欄の（３）式の暗号文Ｍｅ≡Ｃ  ｍｏｄ  ｎを解読することが必要十分条件として設定されている。そこで、エンドユーザはライセンスにより予め取得した復号鍵を入力し、第２実施例の［１］ＲＳＡ方式の原理説明の欄の（４）（５）式の演算を、機能ブロック５０１内の複数のべき乗剰余演算ユニットを用いて実施し、暗号文を復号する。この復号の結果、機能ブロック５０１内に設けられた図２に示すｘ個の演算ユニット７−１〜７−ｘを用いた一般の四則演算機能がイネーブルとなり、機能ブロック５０１を利用できるようになる。
なお、機能ブロック５０１を利用する毎に復号鍵を入力するのが煩雑であれば、ライセンスにより取得した復号鍵を記憶する記憶部を設けても良い。
このように、機能ブロック５０１には、第１実施例の図２の構成が備えられ、その一部が第２実施例にて説明した暗号文の復号のために用いられる。
ここで、システムＬＳＩ５００を構成する各機能ブロック間、各機能ブロック内での信号伝送は、第４〜第６実施例の技術を利用して、光伝送とすることができることは言うまでもない。
【図１Ａ】
0004092735.tif 000005
【図１Ｂ】
0004092735.tif 000006
【図２】
0004092735.tif 000007
【図３】
0004092735.tif 000008
【図４】
0004092735.tif 000009
【図５】
0004092735.tif 000010
【図６】
0004092735.tif 000011
【図７Ａ】
0004092735.tif 000012
【図７Ｂ】
0004092735.tif 000013
【図７Ｃ】
0004092735.tif 000014
【図８】
0004092735.tif 000015
【図９】
0004092735.tif 000016
【図１０】
0004092735.tif 000017
【図１１】
0004092735.tif 000018
【図１２】
0004092735.tif 000019
【図１３Ａ】
0004092735.tif 000020
【図１３Ｂ】
0004092735.tif 000021
【図１３Ｃ】
0004092735.tif 000022
【図１４】
0004092735.tif 000023
【図１５】
0004092735.tif 000024
【図１６】
0004092735.tif 000025
【図１７】
0004092735.tif 000026
【図１８】
0004092735.tif 000027
【図１９】
0004092735.tif 000028
【図２０】
0004092735.tif 000029
【図２１】
0004092735.tif 000030
【図２２】
0004092735.tif 000031
【図２３】
0004092735.tif 000032
【図２４】
0004092735.tif 000033
【図２５】
0004092735.tif 000034