説明

IPコア及び複合IPコア

【課題】外部からの制御を全く必要としないで単体でも機能する完全自立形の基本モジュールを複数組み合わせて別の機能を発揮するIPコアを構成することができる基本モジュール及びIPコアを提供する。
【解決手段】本発明は、他のIPコアとの間で通信データを運ぶデータバス12に対してデータの入出力を司るI/Oインタフェース15と、所定の演算処理を実行するモジュール機能本体16と、同一IPコア内の他のIPコアモジュールとの間で所定のフォーマットのデータを運ぶシステム内バス14に対してデータの入出力を司るモジュール間インタフェース17と、I/Oインタフェース、モジュール機能本体、モジュール間インタフェースを統括制御するコントローラ18とを備えた基本モジュールを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、完全自立形IPコア及び同一種又は複数種、複数個のIPコアを組み合わせた複合IPコアに関する。
【背景技術】
【0002】
集積回路技術の向上は目覚しく進歩し続けており、近い将来、数十から数百のIPコア(Intellectual Property Core)が集積されるというSoC(System on Chip)、SiP(System in Package)及びシステムLSIが現実のものとなりつつある(非特許文献1)。
【0003】
このような超高集積回路においては1つの機関で全ての回路ブロックを初めから設計することは困難であることからIPコアの流通が不可欠となる。しかしながら、いろいろな機関から提供される多種多様なIPコアを1つのチップ上に集積化するには、IPコア間のインタフェース、再利用性及び拡張性など解決すべき多くの課題が山積している。また現在、多種多様なIPコアの仕様を理解して使いこなすことは技術的に困難であるため、使用容易性の実現が強く望まれている。
【非特許文献1】Bimbaum, M. and Sachs, H.: "How VSIA Answers the SOC Dilemma", IEEE Computer, Vol.32, No.6, pp.42-50 (1999)
【非特許文献2】中村次男、笠原宏、「オブジェクト指向手法をハードウェア設計に導入する提案とVSI向きコアのモジュール化」、電学論(C)、Vo1.121−C、No.3、pp.564−573(2001)
【非特許文献3】中村次男、鈴川敦之、冬爪成人、笠原宏、田中照夫、「超高集積LSI時代に向けたハードウェア設計法」、電学論(C)、Vol.124、No.4、pp.995−1003(2004)
【非特許文献4】佐藤正幸、中村次男、冬爪成人、笠原宏、畠中浩行、田中照夫、「自立形回路モジュールの実現法」、電子情報通信学会第4回リコンフィギャラブルシステム研究会論文集、pp.79−86(2004)
【非特許文献5】Sato, M., Nakamura, T., Hatakenaka, H., Hayakawa, M., Fuyutsume, N. and Kasahara, H.: "Hardware Implementation of Elliptic Curve Cryptosystem Adaptive to Infinite Key Length"、電子情報通信学会ソサイエティ大会講演論文集、C−12−10、p.90(2005)
【非特許文献6】畠中浩行、中村次男、佐藤正幸、早川雅文、冬爪成人、笠原宏、田中照夫、「SoC内IPコアの設計―楕円曲線暗号システムモジュール化への適用例―」、電気学会電子・情報・システム部門講演論文集、GS2−1、pp.741−745(2005)
【非特許文献7】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)
【非特許文献8】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)
【非特許文献9】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)
【非特許文献10】辻井重夫、趙晋輝、「楕円暗号へのガイダンス」、信学論(A)、Vol.J82−A、No.8、pp.1200−1211(1999)
【非特許文献11】中村次男、笠原宏、「超高精度整数乗算器の高速化とモジュール化」、電学論(C)、Vo1.121−C、No.7、pp.1212−1219(2001)
【非特許文献12】中村次男、笠原宏、「任意精度向き準並列形高速除算機構」、電学論(C)、Vol.121−C、No.1、pp.158−167(2000)
【非特許文献13】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)
【非特許文献14】Benini, L. and Micheli, G. D.: "Networks on Chips: A New SoC Paradigm", IEEE Computer, Vo1.35, No.1, pp.70-77 (2002)
【非特許文献15】IEEE P1363: "Standard Specifications for Public-Key Cryptography", (2000)
【非特許文献16】Gordon, D.: "A Survey of Fast Exponentiation Methods", Journal of Algorithms, Vo1.27, pp.129-146 (1998)
【非特許文献17】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):鈴木治朗訳、「楕円曲線暗号、ピアソン・エデュケーション」、2001年
【非特許文献18】早川雅文、中村次男、佐藤正幸、畠中浩行、冬爪成人、笠原宏、田中照夫、「SoC内IPコア間の通信方式」、電気学会電子・情報・システム部門大会、GS2−2(2005)
【非特許文献19】古屋憲吾、中村次男、冬爪成人、笠原宏、「オブジェクト指向技術を導入したIPコアの設計とその連携方式」、電気関係学会関西支部連大、G10−15(2003)
【非特許文献20】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
【非特許文献21】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
【発明の開示】
【発明が解決しようとする課題】
【0004】
本発明は、以上のような従来の技術的課題に鑑みてなされたもので、外部からの制御を全く必要としないで単体でも機能する完全自立形の基本モジュールのIPコアを複数組み合わせて別の機能を発揮するIPコアを構成し、さらにはそのIPコアを複数組み合わせることでさらに別の高度な機能を発揮する複合IPコアを自在に構成することができるIPコア及び複合IPコアを提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明は、他のIPコアとの間で共通フォーマットの通信データを運ぶデータバスに対してデータの入出力を司るI/Oインタフェースと、所定の演算処理を実行するモジュール機能本体と、同一IPコア内の他のモジュールとの間でデータをやり取りするためのモジュール間インタフェースと、前記I/Oインタフェース、モジュール機能本体、モジュール間インタフェースを統括制御するコントローラとを備えたIPコアを特徴とする。
【0006】
また本発明は、上記特徴のIPコアを同一種又は複数種、複数個含み、当該同一種又は複数種、複数個のIPコア間を前記データバスにて接続した構成された複合IPコアを特徴とする。
【0007】
上記の複合IPコアにおいて、前記データバス上のデータフォーマットは、送受信データの1フレームを判断するため、1ワードをnビットとした場合、最初にデータ通信開始パターンとして1ワードnビットをオール0としたデータ、続けて送信先アドレス、制御コード及びパラメータ精度情報を含む所定ワード数のメッセージと演算処理に必要とする任意ワード数のパラメータ、最後にデータ通信終了パターンとして所定ワード数全ビットをオール1としたデータで構成されているものとすることができる。
【発明の効果】
【0008】
本発明によれば、IPコアの処理に必要な、共通の決められたフォーマットのデータが与えられると、IPコア内でデータ長に合った必要なモジュール数、クロック周波数、クロック数及び不必要なモジュールのスタンバイモード(消費電力の抑制)などを判断し、必要な精度で処理結果を返す(完全自立形)という、処理精度に対してスケーラブルなアーキテクチャを有するIPコアが実現できる。
【0009】
また本発明によれば、データバスにて複数のIPコア間をネットワークのように接続すれば、このデータバス上を流す共通のフォーマットのデータにてIPコア間の通信ができ、同一種あるいは複数種のIPコアを複数個接続してより大規模で複雑な演算処理を実行するIPコア、つまり複合IPコアの構築が容易にできる。
【0010】
したがって、本発明によれば、数千万ゲート以上の規模となるSoCにおいては、自立形とすることによるゲート数のオーバヘッドよりもSoCのような超高集積回路において課題となっているIPコアの再利用性、拡張性、使用容易性などを考慮した生産性の向上が期待できる。
【発明を実施するための最良の形態】
【0011】
以下、本発明の実施の形態を図に基づいて詳説する。
【0012】
まず、本発明の原理について説明する。スケーラブルなアーキテクチャの要件と機能及び制約を以下に述べる。
【0013】
(1)基本となるモジュールの実現(基本モジュールの構成)。
【0014】
処理精度に柔軟に対応できるアーキテクチャとしての要件には基本モジュール間のインタフェースを考慮した設計が求められる。
【0015】
(2)基本モジュールの再利用が可能なアーキテクチャ(再利用性)。
【0016】
流通するIPコアに求められる要件としては、用途が特定されないVC(Virtual Component)として設計されていなければならない。
【0017】
(3)処理精度に対し、単純な同一モジュールのカスケード接続により対応可能(必要なモジュール数の判断機能、拡張性、使用容易性)。
【0018】
精度情報による動的な必要とするモジュール数の判断機能を持ったアーキテクチャの実現により拡張性と使用容易性が向上する。
【0019】
(4)処理精度に合ったクロック周波数とクロック数の判断機能(プロセス遅延の考慮と効率的な処理)。
【0020】
必要とするモジュール数から遅延を考慮したクロック周波数及び必要最小限のクロック数の判断機能を持ったアーキテクチャによりプロセス遅延を考慮した効率的な処理を実現する。
【0021】
(5)必要な精度に対応したモジュール構成には、回路の変更や外部回路からの制御を必要としてはならない(自立形機能の実現)。
【0022】
メモリボードにおけるメモリの拡張のように、基本モジュールの単純な追加だけで対応可能なモジュールの自立形機能を実現することにより、モジュール制御における回路やソフトウェアの変更といった制約から解放される。
【0023】
(第1の実施の形態)
本発明の第1の実施の形態について、以下に説明する。
【0024】
「自立形IPコア」
自立形IPコア10は複数の同一基本モジュール11から成り、モジュール11単体もIPコアとして自立して動作可能で、同一のモジュール11のカスケード接続により任意の演算精度へ拡張が可能である。要求精度に必要なモジュール数やクロック周波数及びクロック数等は、IPコア10内のモジュール機構内で自動的に決定され、外部からの制御を全く必要としない。図1は4つの自立形モジュール11を組み合わせた複合IPコアとしての集積回路10の例を示している。ここで、各モジュール11の自立形演算機能(SSBOF:Self-Supporting Basic Operation Function)は単体でも機能するIPコアとして設計されており、共通のデータバスで成るシステムバス(System Bus)12に接続させて利用する。
【0025】
中規模の自立形IPコア13は内部に共通のデータバスで成るローカルバス(Local Bus)14を持ち、基本となるSSBOF−IとSSBOF−IIのように自立形モジュール11(小規模IPコア)を複数接続した構成となる。例えば、図1のSSBOF−IIのように、中規模の自立形IPコア13の内部で使用した自立形モジュール11を直接システムバス12に接続し、独立したIPコア11としても用いることができる。このため、各演算機能を持った自立形モジュールを組み合わせてより高度な演算を行うことができ、再利用性に優れ、任意鍵長対応可能な楕円曲線暗号処理システムの構築に比較的容易に利用できる。
【0026】
「自立形モジュールの構成」
図2は自立形基本モジュール11の構成を示している。この自立形基本モジュール11は、上述したシステムバス12、ローカルバス14ともなり得るデータバス(Data Bus)12とのインタフェースであるI/Oインタフェース(Interface)15、本モジュール11の自立形演算処理を実行するモジュール機能本体(Module Function)16、上位側モジュール(Upper Module)、下位側モジュール(Lower Module)との通信インタフェースとなるモジュール間インタフェース(Interface between Modules)17から成る。
【0027】
I/Oインタフェース15は、IPコア間のインタフェースの標準化を考慮し、データバスを通じて通信するための通信フォーマット用のI/Oインタフェースである。モジュール機能本体16は、例えば、加減乗除算や比較の演算処理機能を持ち、必要な処理を自立的に判断し、実行する。自立して動作を実行するためには伝搬信号が必要であり、モジュール間インタフェース17によってそのやり取りを行う。また、モジュール機能本体16は自モジュール、モジュール間データ通信等の制御機能も含むものである。
【0028】
図3に自立形基本モジュール11を複数個カスケード接続して複合IPコア10とした例を示す。複合IPコア10の内部では、そのときに必要であると判断した基本モジュール(Basic Module)11を予め用意する。このとき、自立形基本モジュール11の全体をカスケード接続することで任意処理精度となり、拡張性に優れる。さらに、処理精度に対する要求が高まった場合には、図3の外部拡張(External Extension)に内部で使用しているのと同じ基本モジュール11を追加する。また、要求処理精度が大きければ大きいほど、モジュール全体の遅延が増大するので、自立形基本モジュール11では内部で適切なクロック周波数を設定する。このようにモジュール機構内で必要なクロックを決定することで、演算精度が小さい場合でも必要最小限のクロックで高速に処理できる。使用するモジュールも要求処理精度によって選択し、それ以外の未使用モジュールはスタンバイモードとすることによって消費電力を抑える。これらは各モジュール11内のモジュール機能本体16によって制御する。
【0029】
「自立形IPコア間のデータ通信方式」
IPコア10,10間の通信データフォーマットはオブジェクト指向の概念であるメッセージとパラメータに限定されている。これ以外の制御信号を設けることなく、必要な処理は各モジュール11の内部で自立して行う。これにより、使用者はIPコア10の内部の詳しい構造を知る必要がなく、データ通信のためにモジュール構造を一部変更する必要もない。使用者はIPコア10がどのような機能を持っているかがわかれば、必要なデータを定められたフォーマットでIPコアに与えるだけで動作させることができる。
【0030】
「自立形IPコア間の通信データフォーマット」
自立形IPコア10,10間の通信データフォーマットを図4に示す。データ通信開始/終了のデータパターンを設けることで送受信データの1フレームを判断できるフォーマットとなる。1ワードをnビットとした場合、最初にデータ通信開始パターン(Start Data)として1ワードのオール0を付加し、続けてメッセージとパラメータ、最後にデータ通信終了パターン(Terminal Data)として5ワードのオール1を付加する。パラメータ中にオール1が4ワード連続したデータがある場合は、必ず1ワードのオール0を挿入し、受信する場合はそのオール0を取り除くことによって通信終了の誤判定を防ぐ。
【0031】
メッセージ(Message)には自立形IPコアのアドレス(Address of Module)と制御コード及び処理に必要なデータの精度情報(Parameter's Precision Information)が含まれている。
【0032】
パラメータ(Parameter)は最下位ワードから順に送信する。図3で示す複数の同一基本モジュールから成るIPコア10内では、右端の最下位モジュール(Lowest Module)内レジスタから、順次、上位モジュール内レジスタにと、精度情報にしたがってデータバスからワード単位にパラメータを取り込む。
【0033】
アドレスに含まれている上位2ビットは制御コードとして使用する。ここで、加減乗除算を例に説明する。尚、本方式は演算器に限定されるものではないが、一般的な例として四則演算器を取り上げて説明する。
【0034】
加減乗除算では処理に必要なデータとして、オペランドが2種類必要となる。例えば、加算(Addition)ならば、加数(addend)と被加数(augend)が必要となる。減算(Subtraction)ならば、減数(subtrahend)と被減数(minuend)、乗算(Multiplication)ならば、乗数(multiplier)と被乗数(multiplicand)、除算(Division)ならば、除数(divisor)と被除数(dividend)が必要である。このため、オペランドをそれぞれ個別に入力する場合と2つのオペランドの両方を一度に入力する場合とを制御コードによって区別する。制御コードのフォーマットを表1に示す。
【表1】

【0035】
加算を例としてあげると、加算の場合、“00”で被加数のみの入力、“01”で加数のみの入力、“10”で被加数と加数の両方を続けて入力する。“11”はアドレスをもう1ワード追加する場合に使用する。例えば1ワードを8ビットとした場合、8ビットの内6ビットがアドレスとなるのでモジュールを64個まで指定できることになる。それ以上のアドレスが必要な場合は、もう1ワードアドレスを拡張する。
【0036】
精度情報は続けて送られるパラメータ(Parameter)のワード数となる。精度情報もアドレスと同じように拡張できるようにしている。図5に1ワードが8ビットの場合のメッセージ(精度情報)のフォーマットを示す。最上位ビットは精度情報の拡張用ビットXとなる。X=“0”であればそのワードで精度情報が終了となり、次のワードからがパラメータとなる。X=“1”であればもう1ワード精度情報を追加する。8ビットの場合、7ビットが実際の精度情報となるので、0から127バイトまで指定することができる。必要なデータが127バイト以上の場合は、図5(b)に示すように、さらに2バイトに拡張し、14ビットが精度情報として有効となる。これで、128バイトから16,383バイトまでのデータを入出力することができる。
【0037】
「自立形IPコア間の通信例」
自立形IPコア間の通信シーケンスを図6に示す。コアA、コアB、コアCが同じデータバス上に接続されており、コアAからコアCへデータを送信する場合について述べる。コアAは図4のフォーマットに従うデータをデータバスに流し、コアCと通信を行う。この時の通信の順序を以下に示す。
【0038】
SQ1:コアAがデータバスにオール0のスタート・データを送出する。
【0039】
SQ2:続けて、コアAがメッセージであるアドレスを送出する。コアBとコアCは、スタート・データがバスに流れたのを確認して、続けて送られるメッセージ(アドレス)を共に受け取る。そして、アドレスが一致したコアであるコアCのみが続けて送られるデータを受け取る。
【0040】
SQ3,SQ4:コアCは、コアAがデータバスに送出するメッセージ(精度情報:Precision Information)とパラメータ(処理に必要なデータ:Date for Processing)を順次受け取り、自立的に処理を行う。尚、この時、コアCはビジー状態(busy)となり、コアBはアイドル状態となっている。
【0041】
SQ5:コアAは、オール1を5ワードデータバスに送出することで、データの終了を知らせる。
【0042】
SQ6:処理に必要なデータをコアAから受け取り、処理が終了したコアCは、コアAをアドレスにし、コアAがデータバスに送出したのと同様のフォーマットによってデータバスに返答(Reply)する。
【0043】
このような簡単な通信フォーマットによってデータの送受信を行い、自立形IPコア10はデータバスからのデータのやり取り以外に、制御信号を必要とせず、自立的に処理を行うことができる。
【0044】
SoCにおける1つの課題としてバス調停機構が挙げられる。これに関してはバス調停機構を必要とせず、IPコア間のインタフェースの標準化を考慮した通信方式を筆者らはこれまで開発してきた(非特許文献18、19)。IPコアとバス間に通信制御機構(Access Control Unit:ACU)を各IPコア間に配置し、多種多様なIPコア間のインタフェースを取る。これは、ACU間の連携にトークン方式を用いることでバスの使用権を制御するもので、従来のようなバスアービタを構成するといった機構は不要となる。また、ACUはどのIPコアに対してもすべて全く同じアーキテクチャであり、接続するIPコアに合わせた設定をする必要はない。単純にIPコアと接続するだけで、図4と図5に示す通信フォーマットと図6に示すシーケンスでIPコア10,10間の通信を行うことができる。
【0045】
(第2の実施の形態)
本発明の第2の実施の形態は、自立形コアで構成した剰余乗算IPコアについて説明する。本実施の形態の剰余乗算IPコアは、基本となる乗算モジュールと除算モジュールをそれぞれ自立形モジュールとして構成し、そのモジュールを複数個組み合わせて実現している。ここでは、並列形の高速性を活かし、順序形の繰り返し演算を採り入れることにより、回路規模を抑えた準並列形演算コアを使用する(非特許文献11、12)。
【0046】
この剰余乗算コアが実行する剰余乗算は次の通りである。パラメータm,n,pを入力することで、y=m×n (mod p)を演算して、求めたyを出力する。つまり、m×nを行い、その積をpで割ることで得られる剰余yを求めて出力するものである。
【0047】
図7は、自立形剰余乗算コア10Aの基本となるモジュール構成を示している。図7は、図2で示した基本モジュール11に対応しており、ここでは同一基本モジュールが複数カスケード接続した場合のN−1、N、N+1番目のモジュール11を示している。尚、図7では、N−1番目、N+1番目のモジュールについては詳しい内部構成は示していないが、N番目のモジュール11と同様である。
【0048】
I/Oインタフェース15がデータバス12と接続されており、このデータバス12上に流れる共通フォーマットの通信データから自IPコア宛のデータを取り込み、そのメッセージとパラメータを解釈する。この複合IPコア10A内のモジュール機能本体16は準並列形乗除算器であり、伝播信号によりビットスライス化が可能となっている。モジュール間インタフェース17はそれぞれの制御回路として働き、入力ラッチ信号やクロック周波数などを制御する。メッセージにはモジュールのアドレスとパラメータの種類の特定及び精度情報が含まれる。剰余乗算の場合、パラメータが除数、乗数、被乗数の3つが必要となる。
【0049】
図7に示すように、各剰余乗算コアモジュール11は乗算コアモジュール(Quasi-Paralle Multiplier)11−1と除算コアモジュール(Quasi-Parallel Divider)11−2から成る。そして乗算コアモジュール11−1は、例として、8ビット乗算モジュールを4つカスケード接続して32ビットの乗算コアモジュールとしている。また除算コアモジュール11−2は、例として、8ビット除算モジュールを8つカスケード接続して64ビットの除算コアモジュールとしている。
【0050】
剰余乗算コアモジュール11内では剰余を算出するために除数、乗数、被乗数の順にセットする。連続した剰余乗算を行う場合を考慮し、表1と同様にメッセージのアドレスの上位2ビットをオペランドの制御コードとして用い、“00”で乗数のみ、“01”で被乗数のみ、“10”で全オペランドとしている。パラメータは自立形乗除算モジュールと同様の動作をする。
【0051】
全てのパラメータが揃った段階で、乗算コアモジュール11−1において、モジュール間インタフェース17によって任意精度の乗算を行う。その結果である積のデータは内部バス14によって除算モジュール11−2へ送られる。除算モジュール11−2のモジュール間インタフェース14によって任意精度の除算を行い、最終的な結果として、乗算の剰余を得ることができる。この結果はI/Oインタフェース15へ送られ、決められたフォーマットにしたがって、データバス12へ送出される。
【0052】
準並列形乗除算器は乗算(除算)の基本モジュールのビット数がnビットの場合、knビットの乗算(除算)結果を得るにはk個のモジュールのカスケードで、kクロックサイクルとk−1回の部分積(剰余)のラッチを行う。この乗除算器から成る剰余乗算モジュール11の1クロックサイクルは以下の式で示される。
【数1】

【0053】
ここで、nは演算ビット数、wはデータバス幅、aは乗算器の分周段数、bは除算器の分周段数、Iは精度情報となる。
【0054】
上の精度情報Iは1ワードで演算ビット数が入りきらなくなると2ワードに拡張する。このため、Iは1(2n/w<2w−1)クロックサイクル又は2(2n/w≧2w−1)クロックサイクルとなる。また、Sはシステムクロックと分周クロックを切り替える際の同期をとるのに必要なクロックサイクルの余裕度で、4〜6クロックサイクルを要する。
【0055】
乗算器と除算器の分周段数は、その時のプロセス固有の遅延などによって変化する。ここでの分周器は2のべき乗ずつクロックを分周できる。このため実際の演算サイクルに2と2を掛けている。
【0056】
n/w+Sが乗算の実行サイクルとなり、その結果の出力及び、除算モジュールでのレジスタの格納のためのクロックサイクルがI+2n/wとなる。除算モジュールでは1度レジスタに格納した後、最上位ワードから順に除算器に入力を行う。この時の除算の実行サイクルが2n/w+Sとなる。表2にクロックサイクルの概算結果を示す。
【表2】

【0057】
バス幅wが8ビット、16ビット及び32ビットの時、演算ビット数nを128ビット、256ビット、512ビット及び1024ビットの場合を算出した。クロックサイクルはこれらのパラメータの他に分周段数によっても変化するため、乗算の分周段数と除算の分周段数をそれぞれ0段から1段まで変化させた。また、乗算と除算の分周回路を別々の分周段数にさせている理由は、除算の方が最大遅延が大きいためである。
【0058】
以上のように、クロック周波数とクロック数の判断はメッセージ内の精度情報によって、IPコア内で必要なモジュール数を判断し、そのモジュール数からクロックの分周段数を選定してクロック周波数とクロック数を自立的に決定する。
【0059】
近年、高精度演算化が進み、1ワード以上の演算を要求されることが多く、また、大規模な演算器を用意したとしてもワード単位に演算器にデータを与えることになる。本実施の形態では乗除算器などの演算器もCPUの負荷を軽減すること等も考慮してIPコアとした例を示したものである。1ワードを1クロックでワード単位にデータをセットするパラメータ設定の時間を除き、演算部分のクロックサイクル概算結果として表2に示してある。
【0060】
本実施の形態では、自立形乗算モジュール11−1と自立形剰余演算モジュール11−2を再利用して、自立形剰余乗算モジュール11を構成している。このため、乗算モジュール11−1からの出力を、除算モジュール11−2で1度レジスタに格納してから剰余演算を行う。最初から乗算器の出力を直接除算器の入力とする最適化を行うことで、このクロックサイクルは削減可能である。具体的には、式(1)の中で、I+2n/wサイクル削減できる。こうすることで、表2に示した条件の時、クロックサイクル数を約15〜39%削減できる。例えば、分周段数が乗除算共に1段、バス幅32ビット、128ビットの演算を行う場合、15.8%の削減率となり、分周段数が乗除算共に0段、バス幅8ビット、1024ビットの演算を行う場合、39.4%の削減率となる。よって、さらに高速化を実現することができる。
【0061】
以上に述べたような本実施の形態の自立形IPコアモジュールにより、再利用性や使用容易性に優れるIPコアを設計することができる。したがって、以上の特徴を持つIPコアを使った楕円曲線暗号処理システムはそのまま自立形IPコアとすることができる。
【0062】
(第3の実施の形態)
情報セキュリティ分野では、短い鍵長で強い暗号強度を有することから楕円曲線暗号が注目されている。しかし、公開鍵暗号は多くの多項式を多用することから、処理速度の高速化が求められている(非特許文献10)。
【0063】
本発明の第3の実施の形態は、楕円曲線暗号に必要な基本となる自立形回路モジュールを用意して、それらを組み合わせて処理をすることで構成した多機能な楕円曲線暗号アクセラレータ10Bである。本実施の形態は、完全ハードウェア化にも関わらず、鍵長に柔軟に対応可能なアーキテクチャを持った暗号処理システムとしての自立形IPコアである。本実施の形態によれば、ハードウェア本来の高速性を維持し、再利用性や使用容易性を実現し、さらに、バス幅は演算精度に依存しないため、スケーラブルな構造とすることができる。
【0064】
図8には楕円曲線暗号アクセラレータ10Bの構成を示してある。基本的な構成は上で述べたように、I/Oインタフェース15、モジュール機能16、ローカルバス(Local Bus)14を介して内部モジュール間で通信するためのモジュール間インタフェース(図示せず)から成る。そしてモジュール機能本体16は、各種演算モジュール11と主制御回路(Main Conroller)18から成る。
【0065】
この楕円曲線暗号処理アクセラレータ10Bは後述のMenezes−Vanstone暗号系を全て実行する。楕円曲線暗号処理アクセラレータ10Bが備えている演算処理機能は次の通りである。
【0066】
・楕円曲線上の点の算出(平方剰余の算出:Compute EC Points)
・楕円曲線上の点加算・点倍算(EC A/D)
・楕円スカラー倍算(ECSM)
・Menezes−Vanstone暗号系による暗号化・復号処理(EC enc/dec)
楕円曲線暗号処理アクセラレータ10Bは、I/Oインタフェース15でシステムバス12からの入出力を行う。
【0067】
主制御回路18には楕円曲線暗号に必要なレジスタファイル(Resistor File)が含まれており、個々の演算モジュール11を制御する。データを格納するレジスタの本数は、楕円曲線E
【数2】

のパラメータであるa,b,p、自分で生成した公開鍵α,βと相手の公開鍵α,β、暗号文(y,y,y)、復号文(m,m)、秘密鍵、乱数用及び計算用の(c,c)等の7本を加えて26本必要であり、それに答えられる本数のレジスタを備えている。
【0068】
モジュール機能本体16に含まれる各種演算モジュール11には、上記演算処理機能を司るモジュールと共に、乗算モジュール(Multiplier)、除算モジュール(Divider)、加算モジュール(Adder)、減算モジュール(Subtractor)がある。また、乗法の逆元モジュール(Inverse)、楕円加算に必要なx座標、y座標それぞれを計算するX座標計算モジュール(Calculate X Coordinate)、Y座標計算モジュール(Calculate Y Coordinate)、式(4)におけるλの計算用に2倍算の分子式を計算するλ演算モジュール(Calculate Lambda)がある。
【0069】
図8において楕円曲線暗号アクセラレータ10Bの基本モジュールのシステムバス12や内部バス14は8ビットとし、除算モジュール(Divider)を除く演算モジュール11は全て32ビットの演算が可能である。ただし、除算モジュールは64ビットである。
【0070】
バス幅は設計する際、システムに応じて任意に選択可能である。さらに、図8の楕円曲線暗号アクセラレータ10Bを1つのIPコアモジュールとして、その複数モジュールを図3のようにカスケード接続することで任意の鍵長に、スケーラブルに対応可能なIPコアとすることができる。それぞれの演算モジュール11は自立形基本モジュールとなっており、制御回路18の部分を変更することなく直接システムバス12に接続することで、楕円曲線暗号以外の用途にも容易に再利用可能である。
【0071】
剰余乗算は基本となるIPコアとして設計した乗算モジュールと除算モジュールを再利用し、また、楕円曲線暗号アクセラレータ10Bはその剰余乗算モジュール、除算、加算、減算、乗法の逆元など多くの演算モジュールを再利用し組み合わせて構成してある。複数のIPコアを組み合わせて、より高機能なIPコアを構成するには、組み合わされるそれぞれのI/Oインタフェース部分を取り外して1つにし、他はほとんど再利用することができる。
【0072】
このように楕円曲線暗号アクセラレータ10Bのような複雑なシステムもIPコアの再利用により、容易に設計すること可能である。
【実施例】
【0073】
自立形剰余乗算モジュール10Aと楕円曲線暗号アクセラレータ10Bを作製して諸機能を検証した。これらの作製には、ザイリンクス(Xilinx)社のFPGA(Field Programmable Gate Array)であるVirtex-4(商品名)、xc4vlx60-10、26624スライスをターゲットデバイスとして動作確認を行った。設計ツールにザイリンクス社ISE Foundation 7.1i(商品名)を使用し、シミュレーションにはメンターグラフィックス(Mentor Graphics)社Model Sim SE 6.1a(商品名)を使用した。
【0074】
自立形剰余乗算モジュール10A及び楕円曲線暗号アクセラレータ10Bの回路規模とターゲットデバイスVirtex-4に配置配線後の最大動作周波数をそれぞれ表3及び表4に示す。
【表3】

【表4】

【0075】
表3では16モジュール(32ビット×16)までカスケード接続させた結果を示している。512ビットまでの演算を行える時、使用したFPGAのスライス数が26622スライスであるため、99%のリソースを消費していることがわかる。表4では1基本モジュールを4モジュールまでカスケード接続させた結果を示している。ここで、128ビットの場合はFPGAのリソースが169%となり実装することができなかった。
【0076】
回路規模は等価ゲート数とFPGAのリソースであるスライス数を示した。制御回路等を全て含んだ規模であり、カスケード接続すると、演算処理能力におよそ比例した規模となる。最大動作周波数に関しては、最も遅延の大きい演算器である剰余演算器の最大周波数で算出した。しかし、演算器は内部のクロック分周器によって制御回路に独立した周波数での動作が可能である。このため実際にはさらに高速に動作できる。例えば、制御回路の最大動作周波数である100MHz程度までの動作が見込める。表3は楕円曲線暗号の主な演算機構となる剰余乗算演算の一回の最大動作周波数である。さらに、暗号化・復号に必要な演算を行う楕円曲線暗号アクセラレータは演算ビット長増に対して剰余乗算演算を含めた多数回の演算を行うことになり、算出する楕円曲線上の点が多くなるため、動作周波数は表4に示すように大きく低下する。
【0077】
本実施例の楕円曲線暗号アクセラレータ10Bの構成要素のうち、最も処理時間がかかる剰余乗算について類似研究との比較を行った。比較対象として、プロセッサによる方式はゲート数を抑制できるメリットはあるが、ソフトウェアによるため処理速度の点で不利である。SoCのような超大規模集積回路ではゲート数は大きな設計要因とはならない。非特許文献20、21のソフトウェアによる方式は制御機構を内蔵しない従来方式のIPコアに比べて数十倍以上という大きな速度低下となることから、高速なIPコアと比較とした。表5にその結果を示す。
【表5】

【0078】
非特許文献7によるTencaらのモジュール(Tenca et al)、非特許文献8によるSatohらのモジュール(Satoh et al)ではモンゴメリ乗算において回路規模と速度のトレードオフが選択できるため、ここでは2種類の設定での結果と比較を行った。Tencaらのモジュールではバス幅とパイプラインで使用するPE(Processing Element)の個数を選択できる。このため、32ビットのバス幅で8個のPEの場合と8ビットのバス幅で16個のPEの場合を比較した。Satohらのモジュールでは8ビットバス幅と64ビットバス幅の乗算器と比較を行った。このモジュールがこの中では最も早い結果を示している。しかし、ASICによって実装されているので、本実施例のFPGAとは速度や面積が根本的に異なる。また、非特許文献9によるCroweらのモジュール(Crowe et al)、非特許文献13によるOrsらのモジュール(Ors et al)でもモンゴメリ乗算を使用しているが、バス幅は演算ビット以上となる。デバイスはFPGAを使用しており、等価ゲート数は公表されていない。
【0079】
本実施例では、1モジュールを8ビットのバス幅で32ビットまで演算できるように設計したため、8モジュールカスケード接続した場合を示している。ここで式(1)のクロックを同期するためのサイクルSを6クロックサイクル、分周段数は乗算器、除算器共に0段としている。今回は8ビット幅でしか実験していないが、例えば、32ビット幅にするとクロックサイクルは53となり、比較例と比べても最も少なくなる。また、回路規模では自立形回路モジュールの構造となるのは本実施例のみであり、比較例では演算器のみの回路規模となるのでゲート数を単純には比較できない。しかし、参考のために本実施例での演算器のみのゲート数は約80kゲートとなることがわかっている。
【0080】
上述したように、本発明の実施例では、IPコア自身に自立性を持たせる機能を内蔵することにより、使用容易性及び拡張性が向上し、IPコア間のインタフェースの標準化が容易になる。そのためには図2で示すように、IPコアモジュール11内にモジュール機能本体16と共に、I/Oインタフェース15とモジュール間インタフェース17を組み込むことで、単体でもIPコアとして機能するようにしている。
【0081】
本発明の実施例の場合、自立的でない従来方式に比べてインタフェース部分がゲート数増となるが、実施例の剰余乗算モジュール10Aの場合、従来方式ではI/Oインタフェース部で1000ゲート、モジュール間インタフェース部で5700ゲート必要であったのに対して、本実施例ではI/Oインタフェース15の部分で2100ゲート、そしてモジュール間インタフェース17の部分はI/Oインタフェース15の部分で共通にモジュールの選定制御を行っているのでほとんど変わらない。
【0082】
本実施例では1モジュールを8ビットのバス幅で32ビット構成としたが、バス幅によってデータの取り込む回数とレジスタ長が変化する。したがって、バス幅が同じなら32ビット構成以外(例えば64ビットや128ビット構成)でもインタフェースの制御部分の割合は変わらない。外部から制御する回路やプロセッサで制御する従来方式では、使用者はモジュールの制御法を理解しなければならないが、本実施例は自立性を持ったIPコアであるので、使用者はモジュールの内部構造を理解することなく容易に使用することができる。
【0083】
次世代の高集積回路においては多種多様なIPコア間インタフェースの標準化、再利用性、使用容易性及び拡張性などが求められる。本発明によれば、処理精度に対してスケーラブルなアーキテクチャを持った完全自立形IPコアが設計でき、IPコア間の通信インタフェースの標準化が容易であり、第3の実施の形態のような、多くの多項式から成り、従来はモジュール化が困難であった楕円曲線暗号アクセラレータに適用し、可変長鍵に対応可能なIPコアをFPGAで作製することができる。
【0084】
この第3の実施の形態のような楕円曲線暗号アクセラレータを構成する完全自立形IPコアは他に存在せず、類似研究と回路構成が異なるため、単純には比較できないが、参考のため回路規模と演算時間などについて既存技術のものと比較検討を行った。第3の実施の形態の楕円曲線暗号アクセラレータ10BはFPGAの回路規模の関係でバス幅を8ビットで行い、多精度に対応した場合の諸特性とバス幅を大きくした場合の検討を行った。処理速度は32ビットのバス幅で、類似研究中、最も高速化が期待できる。その主な要因としては完全ハードウェアによるモジュール化にあるが、処理精度に対してソフトウェアのように柔軟に対応できるアーキテクチャにしたことによる。複数の基本モジュールから成るIPコアは処理に必要なモジュール数を判断し(拡張性)、適切なクロック周波数とクロック数で効率的な処理を行い結果を返す。IPコア間は簡素なメッセージ通信であるため使用容易性に優れ、モジュールの再利用により単純なカスケード接続だけで楕円曲線暗号アクセラレータの任意の鍵長にも容易に対応できる。
【0085】
尚、第3の実施の形態の楕円曲線暗号アクセラレータ10Bで利用する楕円曲線の定義と楕円曲線上の計算方法は、次の通りである(非特許文献15)。
【0086】
「暗号に利用される楕円曲線の概要」
素数p>3であるガロア体GF(p)上のWeierstrass標準形楕円曲線Eは、
【数3】

で示される。
【0087】
ここで、
【数4】

となるa,bを満たさなければならない。このとき無限遠点(point at infinity)と呼ばれる特別な点Oを一緒に考える。楕円曲線上の点P=(x,y),Q=(x,y)がある時、x=x、かつ、y=−yならば、P+Q=Oとするが、そうでない場合はP+Q=(x,y)とする。点PとQを通る直線の傾きをλとしたとき、(x,y)は、
【数5】

となり、傾きλは、
【数6】

となる。
【0088】
楕円曲線暗号の安全性はスカラー倍算Q=kPが楕円曲線上の離散対数問題に基づいていることによる。これは、点Pをk倍して点Qを求める。スカラー倍算を求めるには様々な方法、例えば非特許文献16、17の方法があるが、本発明の第3の実施の形態では最も基本的なアルゴリズムである2進展開法を用いている。
【0089】
Menezes−Vanstone暗号系は次の通りである。本実施の形態での楕円曲線暗号は平文や暗号文が楕円曲線上に限定されないMenezes−Vanstone暗号系を使用する楕円曲線としている。そのアルゴリズムは、まず、楕円曲線上の全点(x,y)を求める計算を行う(平方剰余の算出)。平方剰余の算出により求めた点の中から任意の1点を選定し、原始元αとする。この原始元αはベースポイントとして公表する。次に、自由に選出した整数γを秘密鍵とする。ベースポイントαとγの倍数を求め、その結果であるβ=γαを公開鍵として公表する。
【0090】
暗号文を作成するには、通信したい相手の公開鍵α,β、秘密の乱数k及び楕円曲線上に限定されない平文M(m,m)を用意する。平文に対する暗号文をy(y,y,y)とすると、
【数7】

で表される。(c,c)は乱数kと公開鍵であるβによって生成し、これを用いて暗号化を行う。
【0091】
次に、暗号文を平文に復号する式を以下に示す。
【数8】

【0092】
暗号文を元の平文に復号するには、暗号文として公表されているyと秘密鍵γを用いて、暗号文を作成したときと同じ(c,c)を生成する。これの乗法の逆元と暗号文の積をとることで元の平文を得る。
【図面の簡単な説明】
【0093】
【図1】本発明の第1の実施の形態のIPコアモジュールを構成する基本モジュールのブロック図。
【図2】上記実施の形態における基本モジュールの機能構成を示すブロック図。
【図3】上記実施の形態のIPコアモジュールのブロック図。
【図4】上記実施の形態におけるIPコア内の通信データフォーマットの説明図。
【図5】上記実施の形態におけるIPコア間の通信データフォーマットの説明図。
【図6】上記実施の形態におけるIPコア間の通信シーケンス図。
【図7】本発明の第2の実施の形態のIPコアモジュールとしての剰余乗算モジュールのブロック図。
【図8】本発明の第3の実施の形態のIPコアモジュールとしての楕円曲線暗号アクセラレータのブロック図。
【符号の説明】
【0094】
10 複合IPコア
10A 複合IPコア(剰余乗算モジュール)
10B 複合IPコア(楕円曲線暗号アクセラレータ)
11 基本モジュール
12 システムバス
13 中規模IPコア
14 ローカルバス
15 I/Oインタフェース
16 モジュール機能本体
17 モジュール間インタフェース
18 主制御回路

【特許請求の範囲】
【請求項1】
他のIPコアとの間で共通フォーマットの通信データを運ぶデータバスに対してデータの入出力を司るI/Oインタフェースと、
所定の演算処理を実行するモジュール機能本体と、
同一IPコア内の他のモジュールとの間でデータをやり取りするためのモジュール間インタフェースと、
前記I/Oインタフェース、モジュール機能本体、モジュール間インタフェースを統括制御するコントローラとを備えたIPコア。
【請求項2】
請求項1記載のIPコアを同一種又は複数種、複数個含み、当該同一種又は複数種、複数個のIPコア間を前記データバスにて接続した構成された複合IPコア。
【請求項3】
前記データバス上のデータフォーマットは、送受信データの1フレームを判断するため、1ワードをnビットとした場合、最初にデータ通信開始パターンとして1ワードnビットをオール0としたデータ、続けて送信先アドレス、制御コード及びパラメータ精度情報を含む所定ワード数のメッセージと演算処理に必要とする任意ワード数のパラメータ、最後にデータ通信終了パターンとして所定ワード数全ビットをオール1としたデータで構成されていることを特徴とする請求項1又は2に記載の複合IPコア。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2008−102681(P2008−102681A)
【公開日】平成20年5月1日(2008.5.1)
【国際特許分類】
【出願番号】特願2006−283810(P2006−283810)
【出願日】平成18年10月18日(2006.10.18)
【出願人】(800000068)学校法人東京電機大学 (112)
【Fターム(参考)】