(57)【要約】【課題】外部からの制御を全く必要としないで単体でも機能する完全自立形の基本モジュールを複数組み合わせて別の機能を発揮するＩＰコアを構成することができる基本モジュール及びＩＰコアを提供する。【解決手段】本発明は、他のＩＰコアとの間で通信データを運ぶデータバス１２に対してデータの入出力を司るＩ／Ｏインタフェース１５と、所定の演算処理を実行するモジュール機能本体１６と、同一ＩＰコア内の他のＩＰコアモジュールとの間で所定のフォーマットのデータを運ぶシステム内バス１４に対してデータの入出力を司るモジュール間インタフェース１７と、Ｉ／Ｏインタフェース、モジュール機能本体、モジュール間インタフェースを統括制御するコントローラ１８とを備えた基本モジュールを特徴とする。【選択図】      図８
2008102681.tif 000002
【特許請求の範囲】
【請求項１】
他のＩＰコアとの間で共通フォーマットの通信データを運ぶデータバスに対してデータの入出力を司るＩ／Ｏインタフェースと、
所定の演算処理を実行するモジュール機能本体と、
同一ＩＰコア内の他のモジュールとの間でデータをやり取りするためのモジュール間インタフェースと、
前記Ｉ／Ｏインタフェース、モジュール機能本体、モジュール間インタフェースを統括制御するコントローラとを備えたＩＰコア。
【請求項２】
請求項１記載のＩＰコアを同一種又は複数種、複数個含み、当該同一種又は複数種、複数個のＩＰコア間を前記データバスにて接続した構成された複合ＩＰコア。
【請求項３】
前記データバス上のデータフォーマットは、送受信データの１フレームを判断するため、１ワードをｎビットとした場合、最初にデータ通信開始パターンとして１ワードｎビットをオール０としたデータ、続けて送信先アドレス、制御コード及びパラメータ精度情報を含む所定ワード数のメッセージと演算処理に必要とする任意ワード数のパラメータ、最後にデータ通信終了パターンとして所定ワード数全ビットをオール１としたデータで構成されていることを特徴とする請求項１又は２に記載の複合ＩＰコア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、完全自立形ＩＰコア及び同一種又は複数種、複数個のＩＰコアを組み合わせた複合ＩＰコアに関する。
【背景技術】
【０００２】
集積回路技術の向上は目覚しく進歩し続けており、近い将来、数十から数百のＩＰコア（Intellectual Property Core）が集積されるというＳｏＣ（System on Chip）、ＳｉＰ（System in Package）及びシステムＬＳＩが現実のものとなりつつある（非特許文献１）。
【０００３】
このような超高集積回路においては１つの機関で全ての回路ブロックを初めから設計することは困難であることからＩＰコアの流通が不可欠となる。しかしながら、いろいろな機関から提供される多種多様なＩＰコアを１つのチップ上に集積化するには、ＩＰコア間のインタフェース、再利用性及び拡張性など解決すべき多くの課題が山積している。また現在、多種多様なＩＰコアの仕様を理解して使いこなすことは技術的に困難であるため、使用容易性の実現が強く望まれている。
【非特許文献１】Bimbaum, M. and Sachs, H.: "How VSIA Answers the SOC Dilemma", IEEE Computer, Vol.32, No.6, pp.42-50 (1999)
【非特許文献２】中村次男、笠原宏、「オブジェクト指向手法をハードウェア設計に導入する提案とＶＳＩ向きコアのモジュール化」、電学論（Ｃ）、Ｖｏ１．１２１−Ｃ、Ｎｏ．３、ｐｐ．５６４−５７３（２００１）
【非特許文献３】中村次男、鈴川敦之、冬爪成人、笠原宏、田中照夫、「超高集積ＬＳＩ時代に向けたハードウェア設計法」、電学論（Ｃ）、Ｖｏｌ．１２４、Ｎｏ．４、ｐｐ．９９５−１００３（２００４）
【非特許文献４】佐藤正幸、中村次男、冬爪成人、笠原宏、畠中浩行、田中照夫、「自立形回路モジュールの実現法」、電子情報通信学会第４回リコンフィギャラブルシステム研究会論文集、ｐｐ．７９−８６（２００４）
【非特許文献５】Sato, M., Nakamura, T., Hatakenaka, H., Hayakawa, M., Fuyutsume, N. and Kasahara, H.: "Hardware Implementation of Elliptic Curve Cryptosystem Adaptive to Infinite Key Length"、電子情報通信学会ソサイエティ大会講演論文集、Ｃ−１２−１０、ｐ．９０（２００５）
【非特許文献６】畠中浩行、中村次男、佐藤正幸、早川雅文、冬爪成人、笠原宏、田中照夫、「ＳｏＣ内ＩＰコアの設計―楕円曲線暗号システムモジュール化への適用例―」、電気学会電子・情報・システム部門講演論文集、ＧＳ２−１、ｐｐ．７４１−７４５（２００５）
【非特許文献７】Tenca, A. and C. K. Kog: "A Scalable Architecture for Modular Multiplication Based on Montgomery's Algorithm", IEEE Trans. on Computers, Vo1.52, No.9, pp.1215-1222 (2003)
【非特許文献８】Satoh, A. and Takano, K.: "A Scalable Dual-Field Elliptic Curve Cryptographic Processor", IEEE Trans. on Computers, Vo1.52, No.11, pp.449-460 (2003)
【非特許文献９】Crowe, F., Daly, A. and Marnane, W.: "A Scalable Dual Mode Arithmetic Unit for Public Key Cryptoystems", Proc. IEEE Int. Conf. on Information Technology: Coding and Computing, pp.568-573 (2005)
【非特許文献１０】辻井重夫、趙晋輝、「楕円暗号へのガイダンス」、信学論（Ａ）、Ｖｏｌ．Ｊ８２−Ａ、Ｎｏ．８、ｐｐ．１２００−１２１１（１９９９）
【非特許文献１１】中村次男、笠原宏、「超高精度整数乗算器の高速化とモジュール化」、電学論（Ｃ）、Ｖｏ１．１２１−Ｃ、Ｎｏ．７、ｐｐ．１２１２−１２１９（２００１）
【非特許文献１２】中村次男、笠原宏、「任意精度向き準並列形高速除算機構」、電学論（Ｃ）、Ｖｏｌ．１２１−Ｃ、Ｎｏ．１、ｐｐ．１５８−１６７（２０００）
【非特許文献１３】Ors, S. B., Batina, L., Preneel, B. and Vandewalle, J.: "Hardware Implementation of a Montgomery Modular Multiplier in a Systolic Array", Proc. 10th Reconfigurable Architectures Workshop (2003)
【非特許文献１４】Benini, L. and Micheli, G. D.: "Networks on Chips: A New SoC Paradigm", IEEE Computer, Vo1.35, No.1, pp.70-77 (2002)
【非特許文献１５】IEEE P1363: "Standard Specifications for Public-Key Cryptography", (2000)
【非特許文献１６】Gordon, D.: "A Survey of Fast Exponentiation Methods", Journal of Algorithms, Vo1.27, pp.129-146 (1998)
【非特許文献１７】Blake, I. F., Seraussi, G. and Smart, N. P.: "Elliptic Curve in Cryptography", London Mathematical Society Lecture Note Series 265, Cam-bridge University Press(1999)：鈴木治朗訳、「楕円曲線暗号、ピアソン・エデュケーション」、２００１年
【非特許文献１８】早川雅文、中村次男、佐藤正幸、畠中浩行、冬爪成人、笠原宏、田中照夫、「ＳｏＣ内ＩＰコア間の通信方式」、電気学会電子・情報・システム部門大会、ＧＳ２−２（２００５）
【非特許文献１９】古屋憲吾、中村次男、冬爪成人、笠原宏、「オブジェクト指向技術を導入したＩＰコアの設計とその連携方式」、電気関係学会関西支部連大、Ｇ１０−１５（２００３）
【非特許文献２０】T. Hasegawa, J. Nakajima, and M. Matsui.: "A Small and Fast Software Implementation of Elliptic Curve Cryptosystems over GF(p) on a 16-Bit Microcomputer", IEICE Trans. on Fundamentals, Vol.E82-A, No.1, pp.98-105, Jan. 1999
【非特許文献２１】A Miyaji, T. Ono, and H. Cohen.: "Efficient elliptic curve exponentiation", In Proceedings of the First International conference on Information and Communication Security, Vo1.1334 of Lecture Notes In Computer Science, pp.282-293, Springer-Verlag, 1997
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、以上のような従来の技術的課題に鑑みてなされたもので、外部からの制御を全く必要としないで単体でも機能する完全自立形の基本モジュールのＩＰコアを複数組み合わせて別の機能を発揮するＩＰコアを構成し、さらにはそのＩＰコアを複数組み合わせることでさらに別の高度な機能を発揮する複合ＩＰコアを自在に構成することができるＩＰコア及び複合ＩＰコアを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、他のＩＰコアとの間で共通フォーマットの通信データを運ぶデータバスに対してデータの入出力を司るＩ／Ｏインタフェースと、所定の演算処理を実行するモジュール機能本体と、同一ＩＰコア内の他のモジュールとの間でデータをやり取りするためのモジュール間インタフェースと、前記Ｉ／Ｏインタフェース、モジュール機能本体、モジュール間インタフェースを統括制御するコントローラとを備えたＩＰコアを特徴とする。
【０００６】
また本発明は、上記特徴のＩＰコアを同一種又は複数種、複数個含み、当該同一種又は複数種、複数個のＩＰコア間を前記データバスにて接続した構成された複合ＩＰコアを特徴とする。
【０００７】
上記の複合ＩＰコアにおいて、前記データバス上のデータフォーマットは、送受信データの１フレームを判断するため、１ワードをｎビットとした場合、最初にデータ通信開始パターンとして１ワードｎビットをオール０としたデータ、続けて送信先アドレス、制御コード及びパラメータ精度情報を含む所定ワード数のメッセージと演算処理に必要とする任意ワード数のパラメータ、最後にデータ通信終了パターンとして所定ワード数全ビットをオール１としたデータで構成されているものとすることができる。
【発明の効果】
【０００８】
本発明によれば、ＩＰコアの処理に必要な、共通の決められたフォーマットのデータが与えられると、ＩＰコア内でデータ長に合った必要なモジュール数、クロック周波数、クロック数及び不必要なモジュールのスタンバイモード（消費電力の抑制）などを判断し、必要な精度で処理結果を返す（完全自立形）という、処理精度に対してスケーラブルなアーキテクチャを有するＩＰコアが実現できる。
【０００９】
また本発明によれば、データバスにて複数のＩＰコア間をネットワークのように接続すれば、このデータバス上を流す共通のフォーマットのデータにてＩＰコア間の通信ができ、同一種あるいは複数種のＩＰコアを複数個接続してより大規模で複雑な演算処理を実行するＩＰコア、つまり複合ＩＰコアの構築が容易にできる。
【００１０】
したがって、本発明によれば、数千万ゲート以上の規模となるＳｏＣにおいては、自立形とすることによるゲート数のオーバヘッドよりもＳｏＣのような超高集積回路において課題となっているＩＰコアの再利用性、拡張性、使用容易性などを考慮した生産性の向上が期待できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を図に基づいて詳説する。
【００１２】
まず、本発明の原理について説明する。スケーラブルなアーキテクチャの要件と機能及び制約を以下に述べる。
【００１３】
（１）基本となるモジュールの実現（基本モジュールの構成）。
【００１４】
処理精度に柔軟に対応できるアーキテクチャとしての要件には基本モジュール間のインタフェースを考慮した設計が求められる。
【００１５】
（２）基本モジュールの再利用が可能なアーキテクチャ（再利用性）。
【００１６】
流通するＩＰコアに求められる要件としては、用途が特定されないＶＣ（Virtual Component）として設計されていなければならない。
【００１７】
（３）処理精度に対し、単純な同一モジュールのカスケード接続により対応可能（必要なモジュール数の判断機能、拡張性、使用容易性）。
【００１８】
精度情報による動的な必要とするモジュール数の判断機能を持ったアーキテクチャの実現により拡張性と使用容易性が向上する。
【００１９】
（４）処理精度に合ったクロック周波数とクロック数の判断機能（プロセス遅延の考慮と効率的な処理）。
【００２０】
必要とするモジュール数から遅延を考慮したクロック周波数及び必要最小限のクロック数の判断機能を持ったアーキテクチャによりプロセス遅延を考慮した効率的な処理を実現する。
【００２１】
（５）必要な精度に対応したモジュール構成には、回路の変更や外部回路からの制御を必要としてはならない（自立形機能の実現）。
【００２２】
メモリボードにおけるメモリの拡張のように、基本モジュールの単純な追加だけで対応可能なモジュールの自立形機能を実現することにより、モジュール制御における回路やソフトウェアの変更といった制約から解放される。
【００２３】
（第１の実施の形態）
本発明の第１の実施の形態について、以下に説明する。
【００２４】
「自立形ＩＰコア」
自立形ＩＰコア１０は複数の同一基本モジュール１１から成り、モジュール１１単体もＩＰコアとして自立して動作可能で、同一のモジュール１１のカスケード接続により任意の演算精度へ拡張が可能である。要求精度に必要なモジュール数やクロック周波数及びクロック数等は、ＩＰコア１０内のモジュール機構内で自動的に決定され、外部からの制御を全く必要としない。図１は４つの自立形モジュール１１を組み合わせた複合ＩＰコアとしての集積回路１０の例を示している。ここで、各モジュール１１の自立形演算機能（ＳＳＢＯＦ：Self-Supporting Basic Operation Function）は単体でも機能するＩＰコアとして設計されており、共通のデータバスで成るシステムバス（System Bus）１２に接続させて利用する。
【００２５】
中規模の自立形ＩＰコア１３は内部に共通のデータバスで成るローカルバス（Local Bus）１４を持ち、基本となるＳＳＢＯＦ−ＩとＳＳＢＯＦ−IIのように自立形モジュール１１（小規模ＩＰコア）を複数接続した構成となる。例えば、図１のＳＳＢＯＦ−IIのように、中規模の自立形ＩＰコア１３の内部で使用した自立形モジュール１１を直接システムバス１２に接続し、独立したＩＰコア１１としても用いることができる。このため、各演算機能を持った自立形モジュールを組み合わせてより高度な演算を行うことができ、再利用性に優れ、任意鍵長対応可能な楕円曲線暗号処理システムの構築に比較的容易に利用できる。
【００２６】
「自立形モジュールの構成」
図２は自立形基本モジュール１１の構成を示している。この自立形基本モジュール１１は、上述したシステムバス１２、ローカルバス１４ともなり得るデータバス（Data Bus）１２とのインタフェースであるＩ／Ｏインタフェース（Interface）１５、本モジュール１１の自立形演算処理を実行するモジュール機能本体（Module Function）１６、上位側モジュール（Upper Module）、下位側モジュール（Lower Module）との通信インタフェースとなるモジュール間インタフェース（Interface between Modules）１７から成る。
【００２７】
Ｉ／Ｏインタフェース１５は、ＩＰコア間のインタフェースの標準化を考慮し、データバスを通じて通信するための通信フォーマット用のＩ／Ｏインタフェースである。モジュール機能本体１６は、例えば、加減乗除算や比較の演算処理機能を持ち、必要な処理を自立的に判断し、実行する。自立して動作を実行するためには伝搬信号が必要であり、モジュール間インタフェース１７によってそのやり取りを行う。また、モジュール機能本体１６は自モジュール、モジュール間データ通信等の制御機能も含むものである。
【００２８】
図３に自立形基本モジュール１１を複数個カスケード接続して複合ＩＰコア１０とした例を示す。複合ＩＰコア１０の内部では、そのときに必要であると判断した基本モジュール（Basic Module）１１を予め用意する。このとき、自立形基本モジュール１１の全体をカスケード接続することで任意処理精度となり、拡張性に優れる。さらに、処理精度に対する要求が高まった場合には、図３の外部拡張（External Extension）に内部で使用しているのと同じ基本モジュール１１を追加する。また、要求処理精度が大きければ大きいほど、モジュール全体の遅延が増大するので、自立形基本モジュール１１では内部で適切なクロック周波数を設定する。このようにモジュール機構内で必要なクロックを決定することで、演算精度が小さい場合でも必要最小限のクロックで高速に処理できる。使用するモジュールも要求処理精度によって選択し、それ以外の未使用モジュールはスタンバイモードとすることによって消費電力を抑える。これらは各モジュール１１内のモジュール機能本体１６によって制御する。
【００２９】
「自立形ＩＰコア間のデータ通信方式」
ＩＰコア１０，１０間の通信データフォーマットはオブジェクト指向の概念であるメッセージとパラメータに限定されている。これ以外の制御信号を設けることなく、必要な処理は各モジュール１１の内部で自立して行う。これにより、使用者はＩＰコア１０の内部の詳しい構造を知る必要がなく、データ通信のためにモジュール構造を一部変更する必要もない。使用者はＩＰコア１０がどのような機能を持っているかがわかれば、必要なデータを定められたフォーマットでＩＰコアに与えるだけで動作させることができる。
【００３０】
「自立形ＩＰコア間の通信データフォーマット」
自立形ＩＰコア１０，１０間の通信データフォーマットを図４に示す。データ通信開始／終了のデータパターンを設けることで送受信データの１フレームを判断できるフォーマットとなる。１ワードをｎビットとした場合、最初にデータ通信開始パターン（Start Data）として１ワードのオール０を付加し、続けてメッセージとパラメータ、最後にデータ通信終了パターン（Terminal Data）として５ワードのオール１を付加する。パラメータ中にオール１が４ワード連続したデータがある場合は、必ず１ワードのオール０を挿入し、受信する場合はそのオール０を取り除くことによって通信終了の誤判定を防ぐ。
【００３１】
メッセージ（Message）には自立形ＩＰコアのアドレス（Address of Module）と制御コード及び処理に必要なデータの精度情報（Parameter's Precision Information）が含まれている。
【００３２】
パラメータ（Parameter）は最下位ワードから順に送信する。図３で示す複数の同一基本モジュールから成るＩＰコア１０内では、右端の最下位モジュール（Lowest Module）内レジスタから、順次、上位モジュール内レジスタにと、精度情報にしたがってデータバスからワード単位にパラメータを取り込む。
【００３３】
アドレスに含まれている上位２ビットは制御コードとして使用する。ここで、加減乗除算を例に説明する。尚、本方式は演算器に限定されるものではないが、一般的な例として四則演算器を取り上げて説明する。
【００３４】
加減乗除算では処理に必要なデータとして、オペランドが２種類必要となる。例えば、加算（Addition）ならば、加数（addend）と被加数（augend）が必要となる。減算（Subtraction）ならば、減数（subtrahend）と被減数（minuend）、乗算(Multiplication)ならば、乗数（multiplier）と被乗数（multiplicand）、除算（Division）ならば、除数（divisor）と被除数（dividend）が必要である。このため、オペランドをそれぞれ個別に入力する場合と２つのオペランドの両方を一度に入力する場合とを制御コードによって区別する。制御コードのフォーマットを表１に示す。
【表１】
2008102681.tif 000003
【００３５】
加算を例としてあげると、加算の場合、“００”で被加数のみの入力、“０１”で加数のみの入力、“１０”で被加数と加数の両方を続けて入力する。“１１”はアドレスをもう１ワード追加する場合に使用する。例えば１ワードを８ビットとした場合、８ビットの内６ビットがアドレスとなるのでモジュールを６４個まで指定できることになる。それ以上のアドレスが必要な場合は、もう１ワードアドレスを拡張する。
【００３６】
精度情報は続けて送られるパラメータ（Parameter）のワード数となる。精度情報もアドレスと同じように拡張できるようにしている。図５に１ワードが８ビットの場合のメッセージ（精度情報）のフォーマットを示す。最上位ビットは精度情報の拡張用ビットＸとなる。Ｘ＝“０”であればそのワードで精度情報が終了となり、次のワードからがパラメータとなる。Ｘ＝“１”であればもう１ワード精度情報を追加する。８ビットの場合、７ビットが実際の精度情報となるので、０から１２７バイトまで指定することができる。必要なデータが１２７バイト以上の場合は、図５（ｂ）に示すように、さらに２バイトに拡張し、１４ビットが精度情報として有効となる。これで、１２８バイトから１６，３８３バイトまでのデータを入出力することができる。
【００３７】
「自立形ＩＰコア間の通信例」
自立形ＩＰコア間の通信シーケンスを図６に示す。コアＡ、コアＢ、コアＣが同じデータバス上に接続されており、コアＡからコアＣへデータを送信する場合について述べる。コアＡは図４のフォーマットに従うデータをデータバスに流し、コアＣと通信を行う。この時の通信の順序を以下に示す。
【００３８】
ＳＱ１：コアＡがデータバスにオール０のスタート・データを送出する。
【００３９】
ＳＱ２：続けて、コアＡがメッセージであるアドレスを送出する。コアＢとコアＣは、スタート・データがバスに流れたのを確認して、続けて送られるメッセージ（アドレス）を共に受け取る。そして、アドレスが一致したコアであるコアＣのみが続けて送られるデータを受け取る。
【００４０】
ＳＱ３，ＳＱ４：コアＣは、コアＡがデータバスに送出するメッセージ（精度情報：Precision Information）とパラメータ（処理に必要なデータ：Date for Processing）を順次受け取り、自立的に処理を行う。尚、この時、コアＣはビジー状態（busy）となり、コアＢはアイドル状態となっている。
【００４１】
ＳＱ５：コアＡは、オール１を５ワードデータバスに送出することで、データの終了を知らせる。
【００４２】
ＳＱ６：処理に必要なデータをコアＡから受け取り、処理が終了したコアＣは、コアＡをアドレスにし、コアＡがデータバスに送出したのと同様のフォーマットによってデータバスに返答（Reply）する。
【００４３】
このような簡単な通信フォーマットによってデータの送受信を行い、自立形ＩＰコア１０はデータバスからのデータのやり取り以外に、制御信号を必要とせず、自立的に処理を行うことができる。
【００４４】
ＳｏＣにおける１つの課題としてバス調停機構が挙げられる。これに関してはバス調停機構を必要とせず、ＩＰコア間のインタフェースの標準化を考慮した通信方式を筆者らはこれまで開発してきた（非特許文献１８、１９）。ＩＰコアとバス間に通信制御機構（Access Control Unit：ＡＣＵ）を各ＩＰコア間に配置し、多種多様なＩＰコア間のインタフェースを取る。これは、ＡＣＵ間の連携にトークン方式を用いることでバスの使用権を制御するもので、従来のようなバスアービタを構成するといった機構は不要となる。また、ＡＣＵはどのＩＰコアに対してもすべて全く同じアーキテクチャであり、接続するＩＰコアに合わせた設定をする必要はない。単純にＩＰコアと接続するだけで、図４と図５に示す通信フォーマットと図６に示すシーケンスでＩＰコア１０，１０間の通信を行うことができる。
【００４５】
（第２の実施の形態）
本発明の第２の実施の形態は、自立形コアで構成した剰余乗算ＩＰコアについて説明する。本実施の形態の剰余乗算ＩＰコアは、基本となる乗算モジュールと除算モジュールをそれぞれ自立形モジュールとして構成し、そのモジュールを複数個組み合わせて実現している。ここでは、並列形の高速性を活かし、順序形の繰り返し演算を採り入れることにより、回路規模を抑えた準並列形演算コアを使用する（非特許文献１１、１２）。
【００４６】
この剰余乗算コアが実行する剰余乗算は次の通りである。パラメータｍ，ｎ，ｐを入力することで、ｙ＝ｍ×ｎ  （ｍｏｄ  ｐ）を演算して、求めたｙを出力する。つまり、ｍ×ｎを行い、その積をｐで割ることで得られる剰余ｙを求めて出力するものである。
【００４７】
図７は、自立形剰余乗算コア１０Ａの基本となるモジュール構成を示している。図７は、図２で示した基本モジュール１１に対応しており、ここでは同一基本モジュールが複数カスケード接続した場合のＮ−１、Ｎ、Ｎ＋１番目のモジュール１１を示している。尚、図７では、Ｎ−１番目、Ｎ＋１番目のモジュールについては詳しい内部構成は示していないが、Ｎ番目のモジュール１１と同様である。
【００４８】
Ｉ／Ｏインタフェース１５がデータバス１２と接続されており、このデータバス１２上に流れる共通フォーマットの通信データから自ＩＰコア宛のデータを取り込み、そのメッセージとパラメータを解釈する。この複合ＩＰコア１０Ａ内のモジュール機能本体１６は準並列形乗除算器であり、伝播信号によりビットスライス化が可能となっている。モジュール間インタフェース１７はそれぞれの制御回路として働き、入力ラッチ信号やクロック周波数などを制御する。メッセージにはモジュールのアドレスとパラメータの種類の特定及び精度情報が含まれる。剰余乗算の場合、パラメータが除数、乗数、被乗数の３つが必要となる。
【００４９】
図７に示すように、各剰余乗算コアモジュール１１は乗算コアモジュール（Quasi-Paralle Multiplier）１１−１と除算コアモジュール(Quasi-Parallel Divider)１１−２から成る。そして乗算コアモジュール１１−１は、例として、８ビット乗算モジュールを４つカスケード接続して３２ビットの乗算コアモジュールとしている。また除算コアモジュール１１−２は、例として、８ビット除算モジュールを８つカスケード接続して６４ビットの除算コアモジュールとしている。
【００５０】
剰余乗算コアモジュール１１内では剰余を算出するために除数、乗数、被乗数の順にセットする。連続した剰余乗算を行う場合を考慮し、表１と同様にメッセージのアドレスの上位２ビットをオペランドの制御コードとして用い、“００”で乗数のみ、“０１”で被乗数のみ、“１０”で全オペランドとしている。パラメータは自立形乗除算モジュールと同様の動作をする。
【００５１】
全てのパラメータが揃った段階で、乗算コアモジュール１１−１において、モジュール間インタフェース１７によって任意精度の乗算を行う。その結果である積のデータは内部バス１４によって除算モジュール１１−２へ送られる。除算モジュール１１−２のモジュール間インタフェース１４によって任意精度の除算を行い、最終的な結果として、乗算の剰余を得ることができる。この結果はＩ／Ｏインタフェース１５へ送られ、決められたフォーマットにしたがって、データバス１２へ送出される。
【００５２】
準並列形乗除算器は乗算（除算）の基本モジュールのビット数がｎビットの場合、ｋｎビットの乗算（除算）結果を得るにはｋ個のモジュールのカスケードで、ｋクロックサイクルとｋ−１回の部分積（剰余）のラッチを行う。この乗除算器から成る剰余乗算モジュール１１の１クロックサイクルは以下の式で示される。
【数１】
2008102681.tif 000004
【００５３】
ここで、ｎは演算ビット数、ｗはデータバス幅、ａは乗算器の分周段数、ｂは除算器の分周段数、Ｉは精度情報となる。
【００５４】
上の精度情報Ｉは１ワードで演算ビット数が入りきらなくなると２ワードに拡張する。このため、Ｉは１（２ｎ／ｗ＜２ｗ−１）クロックサイクル又は２（２ｎ／ｗ≧２ｗ−１）クロックサイクルとなる。また、Ｓはシステムクロックと分周クロックを切り替える際の同期をとるのに必要なクロックサイクルの余裕度で、４〜６クロックサイクルを要する。
【００５５】
乗算器と除算器の分周段数は、その時のプロセス固有の遅延などによって変化する。ここでの分周器は２のべき乗ずつクロックを分周できる。このため実際の演算サイクルに２ａと２ｂを掛けている。
【００５６】
ｎ／ｗ＋Ｓが乗算の実行サイクルとなり、その結果の出力及び、除算モジュールでのレジスタの格納のためのクロックサイクルがＩ＋２ｎ／ｗとなる。除算モジュールでは１度レジスタに格納した後、最上位ワードから順に除算器に入力を行う。この時の除算の実行サイクルが２ｎ／ｗ＋Ｓとなる。表２にクロックサイクルの概算結果を示す。
【表２】
2008102681.tif 000005
【００５７】
バス幅ｗが８ビット、１６ビット及び３２ビットの時、演算ビット数ｎを１２８ビット、２５６ビット、５１２ビット及び１０２４ビットの場合を算出した。クロックサイクルはこれらのパラメータの他に分周段数によっても変化するため、乗算の分周段数と除算の分周段数をそれぞれ０段から１段まで変化させた。また、乗算と除算の分周回路を別々の分周段数にさせている理由は、除算の方が最大遅延が大きいためである。
【００５８】
以上のように、クロック周波数とクロック数の判断はメッセージ内の精度情報によって、ＩＰコア内で必要なモジュール数を判断し、そのモジュール数からクロックの分周段数を選定してクロック周波数とクロック数を自立的に決定する。
【００５９】
近年、高精度演算化が進み、１ワード以上の演算を要求されることが多く、また、大規模な演算器を用意したとしてもワード単位に演算器にデータを与えることになる。本実施の形態では乗除算器などの演算器もＣＰＵの負荷を軽減すること等も考慮してＩＰコアとした例を示したものである。１ワードを１クロックでワード単位にデータをセットするパラメータ設定の時間を除き、演算部分のクロックサイクル概算結果として表２に示してある。
【００６０】
本実施の形態では、自立形乗算モジュール１１−１と自立形剰余演算モジュール１１−２を再利用して、自立形剰余乗算モジュール１１を構成している。このため、乗算モジュール１１−１からの出力を、除算モジュール１１−２で１度レジスタに格納してから剰余演算を行う。最初から乗算器の出力を直接除算器の入力とする最適化を行うことで、このクロックサイクルは削減可能である。具体的には、式（１）の中で、Ｉ＋２ｎ／ｗサイクル削減できる。こうすることで、表２に示した条件の時、クロックサイクル数を約１５〜３９％削減できる。例えば、分周段数が乗除算共に１段、バス幅３２ビット、１２８ビットの演算を行う場合、１５．８％の削減率となり、分周段数が乗除算共に０段、バス幅８ビット、１０２４ビットの演算を行う場合、３９．４％の削減率となる。よって、さらに高速化を実現することができる。
【００６１】
以上に述べたような本実施の形態の自立形ＩＰコアモジュールにより、再利用性や使用容易性に優れるＩＰコアを設計することができる。したがって、以上の特徴を持つＩＰコアを使った楕円曲線暗号処理システムはそのまま自立形ＩＰコアとすることができる。
【００６２】
（第３の実施の形態）
情報セキュリティ分野では、短い鍵長で強い暗号強度を有することから楕円曲線暗号が注目されている。しかし、公開鍵暗号は多くの多項式を多用することから、処理速度の高速化が求められている（非特許文献１０）。
【００６３】
本発明の第３の実施の形態は、楕円曲線暗号に必要な基本となる自立形回路モジュールを用意して、それらを組み合わせて処理をすることで構成した多機能な楕円曲線暗号アクセラレータ１０Ｂである。本実施の形態は、完全ハードウェア化にも関わらず、鍵長に柔軟に対応可能なアーキテクチャを持った暗号処理システムとしての自立形ＩＰコアである。本実施の形態によれば、ハードウェア本来の高速性を維持し、再利用性や使用容易性を実現し、さらに、バス幅は演算精度に依存しないため、スケーラブルな構造とすることができる。
【００６４】
図８には楕円曲線暗号アクセラレータ１０Ｂの構成を示してある。基本的な構成は上で述べたように、Ｉ／Ｏインタフェース１５、モジュール機能１６、ローカルバス（Local Bus）１４を介して内部モジュール間で通信するためのモジュール間インタフェース（図示せず）から成る。そしてモジュール機能本体１６は、各種演算モジュール１１と主制御回路(Main Conroller)１８から成る。
【００６５】
この楕円曲線暗号処理アクセラレータ１０Ｂは後述のＭｅｎｅｚｅｓ−Ｖａｎｓｔｏｎｅ暗号系を全て実行する。楕円曲線暗号処理アクセラレータ１０Ｂが備えている演算処理機能は次の通りである。
【００６６】
・楕円曲線上の点の算出（平方剰余の算出：Compute EC Points）
・楕円曲線上の点加算・点倍算（EC A/D）
・楕円スカラー倍算（ECSM）
・Ｍｅｎｅｚｅｓ−Ｖａｎｓｔｏｎｅ暗号系による暗号化・復号処理（EC enc/dec）
楕円曲線暗号処理アクセラレータ１０Ｂは、Ｉ／Ｏインタフェース１５でシステムバス１２からの入出力を行う。
【００６７】
主制御回路１８には楕円曲線暗号に必要なレジスタファイル（Resistor File）が含まれており、個々の演算モジュール１１を制御する。データを格納するレジスタの本数は、楕円曲線Ｅ
【数２】
2008102681.tif 000006
のパラメータであるａ，ｂ，ｐ、自分で生成した公開鍵α，βと相手の公開鍵α，β、暗号文（ｙ０，ｙ１，ｙ２）、復号文（ｍ１，ｍ２）、秘密鍵、乱数用及び計算用の（ｃ１，ｃ２）等の７本を加えて２６本必要であり、それに答えられる本数のレジスタを備えている。
【００６８】
モジュール機能本体１６に含まれる各種演算モジュール１１には、上記演算処理機能を司るモジュールと共に、乗算モジュール（Multiplier）、除算モジュール（Divider）、加算モジュール（Adder）、減算モジュール（Subtractor）がある。また、乗法の逆元モジュール（Inverse）、楕円加算に必要なｘ座標、ｙ座標それぞれを計算するＸ座標計算モジュール（Calculate X Coordinate）、Ｙ座標計算モジュール（Calculate Y Coordinate）、式（４）におけるλの計算用に２倍算の分子式を計算するλ演算モジュール（Calculate Lambda）がある。
【００６９】
図８において楕円曲線暗号アクセラレータ１０Ｂの基本モジュールのシステムバス１２や内部バス１４は８ビットとし、除算モジュール（Divider）を除く演算モジュール１１は全て３２ビットの演算が可能である。ただし、除算モジュールは６４ビットである。
【００７０】
バス幅は設計する際、システムに応じて任意に選択可能である。さらに、図８の楕円曲線暗号アクセラレータ１０Ｂを１つのＩＰコアモジュールとして、その複数モジュールを図３のようにカスケード接続することで任意の鍵長に、スケーラブルに対応可能なＩＰコアとすることができる。それぞれの演算モジュール１１は自立形基本モジュールとなっており、制御回路１８の部分を変更することなく直接システムバス１２に接続することで、楕円曲線暗号以外の用途にも容易に再利用可能である。
【００７１】
剰余乗算は基本となるＩＰコアとして設計した乗算モジュールと除算モジュールを再利用し、また、楕円曲線暗号アクセラレータ１０Ｂはその剰余乗算モジュール、除算、加算、減算、乗法の逆元など多くの演算モジュールを再利用し組み合わせて構成してある。複数のＩＰコアを組み合わせて、より高機能なＩＰコアを構成するには、組み合わされるそれぞれのＩ／Ｏインタフェース部分を取り外して１つにし、他はほとんど再利用することができる。
【００７２】
このように楕円曲線暗号アクセラレータ１０Ｂのような複雑なシステムもＩＰコアの再利用により、容易に設計すること可能である。
【実施例】
【００７３】
自立形剰余乗算モジュール１０Ａと楕円曲線暗号アクセラレータ１０Ｂを作製して諸機能を検証した。これらの作製には、ザイリンクス（Xilinx）社のＦＰＧＡ（Field Programmable Gate Array）であるVirtex-4（商品名）、xc4vlx60-10、２６６２４スライスをターゲットデバイスとして動作確認を行った。設計ツールにザイリンクス社ISE Foundation 7.1i（商品名）を使用し、シミュレーションにはメンターグラフィックス（Mentor Graphics）社Model Sim SE 6.1a（商品名）を使用した。
【００７４】
自立形剰余乗算モジュール１０Ａ及び楕円曲線暗号アクセラレータ１０Ｂの回路規模とターゲットデバイスVirtex-4に配置配線後の最大動作周波数をそれぞれ表３及び表４に示す。
【表３】
2008102681.tif 000007
【表４】
2008102681.tif 000008
【００７５】
表３では１６モジュール（３２ビット×１６）までカスケード接続させた結果を示している。５１２ビットまでの演算を行える時、使用したＦＰＧＡのスライス数が２６６２２スライスであるため、９９％のリソースを消費していることがわかる。表４では１基本モジュールを４モジュールまでカスケード接続させた結果を示している。ここで、１２８ビットの場合はＦＰＧＡのリソースが１６９％となり実装することができなかった。
【００７６】
回路規模は等価ゲート数とＦＰＧＡのリソースであるスライス数を示した。制御回路等を全て含んだ規模であり、カスケード接続すると、演算処理能力におよそ比例した規模となる。最大動作周波数に関しては、最も遅延の大きい演算器である剰余演算器の最大周波数で算出した。しかし、演算器は内部のクロック分周器によって制御回路に独立した周波数での動作が可能である。このため実際にはさらに高速に動作できる。例えば、制御回路の最大動作周波数である１００ＭＨｚ程度までの動作が見込める。表３は楕円曲線暗号の主な演算機構となる剰余乗算演算の一回の最大動作周波数である。さらに、暗号化・復号に必要な演算を行う楕円曲線暗号アクセラレータは演算ビット長増に対して剰余乗算演算を含めた多数回の演算を行うことになり、算出する楕円曲線上の点が多くなるため、動作周波数は表４に示すように大きく低下する。
【００７７】
本実施例の楕円曲線暗号アクセラレータ１０Ｂの構成要素のうち、最も処理時間がかかる剰余乗算について類似研究との比較を行った。比較対象として、プロセッサによる方式はゲート数を抑制できるメリットはあるが、ソフトウェアによるため処理速度の点で不利である。ＳｏＣのような超大規模集積回路ではゲート数は大きな設計要因とはならない。非特許文献２０、２１のソフトウェアによる方式は制御機構を内蔵しない従来方式のＩＰコアに比べて数十倍以上という大きな速度低下となることから、高速なＩＰコアと比較とした。表５にその結果を示す。
【表５】
2008102681.tif 000009
【００７８】
非特許文献７によるTencaらのモジュール（Tenca et al）、非特許文献８によるSatohらのモジュール(Satoh et al)ではモンゴメリ乗算において回路規模と速度のトレードオフが選択できるため、ここでは２種類の設定での結果と比較を行った。Tencaらのモジュールではバス幅とパイプラインで使用するＰＥ（Processing Element）の個数を選択できる。このため、３２ビットのバス幅で８個のＰＥの場合と８ビットのバス幅で１６個のＰＥの場合を比較した。Satohらのモジュールでは８ビットバス幅と６４ビットバス幅の乗算器と比較を行った。このモジュールがこの中では最も早い結果を示している。しかし、ＡＳＩＣによって実装されているので、本実施例のＦＰＧＡとは速度や面積が根本的に異なる。また、非特許文献９によるCroweらのモジュール（Crowe et al）、非特許文献１３によるOrsらのモジュール（Ors et al）でもモンゴメリ乗算を使用しているが、バス幅は演算ビット以上となる。デバイスはＦＰＧＡを使用しており、等価ゲート数は公表されていない。
【００７９】
本実施例では、１モジュールを８ビットのバス幅で３２ビットまで演算できるように設計したため、８モジュールカスケード接続した場合を示している。ここで式（１）のクロックを同期するためのサイクルＳを６クロックサイクル、分周段数は乗算器、除算器共に０段としている。今回は８ビット幅でしか実験していないが、例えば、３２ビット幅にするとクロックサイクルは５３となり、比較例と比べても最も少なくなる。また、回路規模では自立形回路モジュールの構造となるのは本実施例のみであり、比較例では演算器のみの回路規模となるのでゲート数を単純には比較できない。しかし、参考のために本実施例での演算器のみのゲート数は約８０ｋゲートとなることがわかっている。
【００８０】
上述したように、本発明の実施例では、ＩＰコア自身に自立性を持たせる機能を内蔵することにより、使用容易性及び拡張性が向上し、ＩＰコア間のインタフェースの標準化が容易になる。そのためには図２で示すように、ＩＰコアモジュール１１内にモジュール機能本体１６と共に、Ｉ／Ｏインタフェース１５とモジュール間インタフェース１７を組み込むことで、単体でもＩＰコアとして機能するようにしている。
【００８１】
本発明の実施例の場合、自立的でない従来方式に比べてインタフェース部分がゲート数増となるが、実施例の剰余乗算モジュール１０Ａの場合、従来方式ではＩ／Ｏインタフェース部で１０００ゲート、モジュール間インタフェース部で５７００ゲート必要であったのに対して、本実施例ではＩ／Ｏインタフェース１５の部分で２１００ゲート、そしてモジュール間インタフェース１７の部分はＩ／Ｏインタフェース１５の部分で共通にモジュールの選定制御を行っているのでほとんど変わらない。
【００８２】
本実施例では１モジュールを８ビットのバス幅で３２ビット構成としたが、バス幅によってデータの取り込む回数とレジスタ長が変化する。したがって、バス幅が同じなら３２ビット構成以外（例えば６４ビットや１２８ビット構成）でもインタフェースの制御部分の割合は変わらない。外部から制御する回路やプロセッサで制御する従来方式では、使用者はモジュールの制御法を理解しなければならないが、本実施例は自立性を持ったＩＰコアであるので、使用者はモジュールの内部構造を理解することなく容易に使用することができる。
【００８３】
次世代の高集積回路においては多種多様なＩＰコア間インタフェースの標準化、再利用性、使用容易性及び拡張性などが求められる。本発明によれば、処理精度に対してスケーラブルなアーキテクチャを持った完全自立形ＩＰコアが設計でき、ＩＰコア間の通信インタフェースの標準化が容易であり、第３の実施の形態のような、多くの多項式から成り、従来はモジュール化が困難であった楕円曲線暗号アクセラレータに適用し、可変長鍵に対応可能なＩＰコアをＦＰＧＡで作製することができる。
【００８４】
この第３の実施の形態のような楕円曲線暗号アクセラレータを構成する完全自立形ＩＰコアは他に存在せず、類似研究と回路構成が異なるため、単純には比較できないが、参考のため回路規模と演算時間などについて既存技術のものと比較検討を行った。第３の実施の形態の楕円曲線暗号アクセラレータ１０ＢはＦＰＧＡの回路規模の関係でバス幅を８ビットで行い、多精度に対応した場合の諸特性とバス幅を大きくした場合の検討を行った。処理速度は３２ビットのバス幅で、類似研究中、最も高速化が期待できる。その主な要因としては完全ハードウェアによるモジュール化にあるが、処理精度に対してソフトウェアのように柔軟に対応できるアーキテクチャにしたことによる。複数の基本モジュールから成るＩＰコアは処理に必要なモジュール数を判断し（拡張性）、適切なクロック周波数とクロック数で効率的な処理を行い結果を返す。ＩＰコア間は簡素なメッセージ通信であるため使用容易性に優れ、モジュールの再利用により単純なカスケード接続だけで楕円曲線暗号アクセラレータの任意の鍵長にも容易に対応できる。
【００８５】
尚、第３の実施の形態の楕円曲線暗号アクセラレータ１０Ｂで利用する楕円曲線の定義と楕円曲線上の計算方法は、次の通りである（非特許文献１５）。
【００８６】
「暗号に利用される楕円曲線の概要」
素数ｐ＞３であるガロア体ＧＦ（ｐ）上のＷｅｉｅｒｓｔｒａｓｓ標準形楕円曲線Ｅは、
【数３】
2008102681.tif 000010
で示される。
【００８７】
ここで、
【数４】
2008102681.tif 000011
となるａ，ｂを満たさなければならない。このとき無限遠点（point at infinity）と呼ばれる特別な点Ｏを一緒に考える。楕円曲線上の点Ｐ＝（ｘ１，ｙ１），Ｑ＝（ｘ２，ｙ２）がある時、ｘ２＝ｘ１、かつ、ｙ２＝−ｙ１ならば、Ｐ＋Ｑ＝Ｏとするが、そうでない場合はＰ＋Ｑ＝（ｘ３，ｙ３）とする。点ＰとＱを通る直線の傾きをλとしたとき、（ｘ３，ｙ３）は、
【数５】
2008102681.tif 000012
となり、傾きλは、
【数６】
2008102681.tif 000013
となる。
【００８８】
楕円曲線暗号の安全性はスカラー倍算Ｑ＝ｋＰが楕円曲線上の離散対数問題に基づいていることによる。これは、点Ｐをｋ倍して点Ｑを求める。スカラー倍算を求めるには様々な方法、例えば非特許文献１６、１７の方法があるが、本発明の第３の実施の形態では最も基本的なアルゴリズムである２進展開法を用いている。
【００８９】
Ｍｅｎｅｚｅｓ−Ｖａｎｓｔｏｎｅ暗号系は次の通りである。本実施の形態での楕円曲線暗号は平文や暗号文が楕円曲線上に限定されないＭｅｎｅｚｅｓ−Ｖａｎｓｔｏｎｅ暗号系を使用する楕円曲線としている。そのアルゴリズムは、まず、楕円曲線上の全点（ｘ，ｙ）を求める計算を行う（平方剰余の算出）。平方剰余の算出により求めた点の中から任意の１点を選定し、原始元αとする。この原始元αはベースポイントとして公表する。次に、自由に選出した整数γを秘密鍵とする。ベースポイントαとγの倍数を求め、その結果であるβ＝γαを公開鍵として公表する。
【００９０】
暗号文を作成するには、通信したい相手の公開鍵α，β、秘密の乱数ｋ及び楕円曲線上に限定されない平文Ｍ（ｍ１，ｍ２）を用意する。平文に対する暗号文をｙ（ｙ０，ｙ１，ｙ２）とすると、
【数７】
2008102681.tif 000014
で表される。（ｃ１，ｃ２）は乱数ｋと公開鍵であるβによって生成し、これを用いて暗号化を行う。
【００９１】
次に、暗号文を平文に復号する式を以下に示す。
【数８】
2008102681.tif 000015
【００９２】
暗号文を元の平文に復号するには、暗号文として公表されているｙ０と秘密鍵γを用いて、暗号文を作成したときと同じ（ｃ１，ｃ２）を生成する。これの乗法の逆元と暗号文の積をとることで元の平文を得る。
【図面の簡単な説明】
【００９３】
【図１】本発明の第１の実施の形態のＩＰコアモジュールを構成する基本モジュールのブロック図。
【図２】上記実施の形態における基本モジュールの機能構成を示すブロック図。
【図３】上記実施の形態のＩＰコアモジュールのブロック図。
【図４】上記実施の形態におけるＩＰコア内の通信データフォーマットの説明図。
【図５】上記実施の形態におけるＩＰコア間の通信データフォーマットの説明図。
【図６】上記実施の形態におけるＩＰコア間の通信シーケンス図。
【図７】本発明の第２の実施の形態のＩＰコアモジュールとしての剰余乗算モジュールのブロック図。
【図８】本発明の第３の実施の形態のＩＰコアモジュールとしての楕円曲線暗号アクセラレータのブロック図。
【符号の説明】
【００９４】
１０  複合ＩＰコア
１０Ａ  複合ＩＰコア（剰余乗算モジュール）
１０Ｂ  複合ＩＰコア（楕円曲線暗号アクセラレータ）
１１  基本モジュール
１２  システムバス
１３  中規模ＩＰコア
１４  ローカルバス
１５  Ｉ／Ｏインタフェース
１６  モジュール機能本体
１７  モジュール間インタフェース
１８  主制御回路
【図１】
2008102681.tif 000016
【図２】
2008102681.tif 000017
【図３】
2008102681.tif 000018
【図４】
2008102681.tif 000019
【図５】
2008102681.tif 000020
【図６】
2008102681.tif 000021
【図７】
2008102681.tif 000022
【図８】
2008102681.tif 000023