(57)【要約】【課題】最近は複数のＣＰＵコアを内蔵するＦＰＧＡも現れており、これらのＣＰＵコアをうまく連携させることで、少ない部品点数を維持したままで、ＦＰＧＡに内蔵されたＣＰＵコアの処理能力不足に伴う課題を解決する。すなわち、暗号処理を伴うトランザクション処理を効率的に実行する暗号装置を提供する。【解決手段】ＦＰＧＡ１００は、複数のＣＰＵコアを備えている。アプリケーション用ＣＰＵコア１１０は、所定のアプリケーションプログラムから要求された暗号処理を伴う複数のトランザクション処理を並行処理する。暗号処理用ＣＰＵ１２０は、アプリケーション用ＣＰＵコア１１０により並行処理される複数のトランザクション処理にともなって処理の実行が必要な暗号処理が発生すると、発生した暗号処理を実行する。【選択図】図１
2009296195.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コアを備えたＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いた暗号装置において、
所定のアプリケーションプログラムから要求された暗号処理を伴う複数のトランザクション処理を並行処理するアプリケーション用ＣＰＵコアと、
前記アプリケーション用ＣＰＵコアにより並行処理される前記複数のトランザクション処理にともなって処理の実行が必要な暗号処理が発生すると、発生した暗号処理を実行する暗号処理用ＣＰＵコアと
を備えたことを特徴とする暗号装置。
【請求項２】
前記暗号処理用ＣＰＵコアは、
前記アプリケーション用ＣＰＵコアにより並行処理される前記複数のトランザクション処理にともなって、処理の実行が必要な複数の暗号処理が発生すると、前記複数の暗号処理を並行処理により実行することを特徴とする請求項１記載の暗号装置。
【請求項３】
前記暗号装置は、さらに、
暗号処理を実行する複数の暗号回路を備え、
前記暗号処理用ＣＰＵコアは、
前記複数の暗号回路を制御することにより前記複数の暗号処理を並列処理で実行させることを特徴とする請求項２記載の暗号装置。
【請求項４】
前記暗号処理用ＣＰＵコアと前記アプリケーション用ＣＰＵコアとの少なくともいずれかは、
前記複数の暗号回路のすべてが暗号処理の実行中である場合に、前記複数のトランザクション処理にともなって処理の実行が必要な新たな暗号処理が発生すると、前記新たな暗号処理を自身で実行することを特徴とする請求項３記載の暗号装置。
【請求項５】
前記暗号装置は、
前記アプリケーションプログラムが所定の種別の場合に、前記複数の暗号回路を制御するＣＰＵコアを前記暗号処理用ＣＰＵコアから前記アプリケーション用ＣＰＵコアに切り替えるコア切替部
を備えたことを特徴とする請求項３または４のいずれかに記載の暗号装置。
【請求項６】
前記暗号装置は、さらに、
情報を格納する格納部を備え、
前記アプリケーション用ＣＰＵコアと前記暗号処理用ＣＰＵコアとは、
前記格納部に自身の生成した情報を格納すると共に前記格納部から情報を読み取ることにより、互いに通信することを特徴とする請求項１〜５のいずれかに記載の暗号装置。
【請求項７】
前記アプリケーション用ＣＰＵコアと前記暗号処理用ＣＰＵコアとは、
前記格納部に対して論理アドレス空間を共有することを特徴とする請求項６記載の暗号装置。
【請求項８】
前記暗号装置は、
複数のＣＰＵコアを備え、
前記格納部は、
前記暗号処理用ＣＰＵコアと前記アプリケーション用ＣＰＵコアとのいずれになるべきかを指示する指示情報を格納しており、
前記複数のＣＰＵコアの各ＣＰＵコアは、
前記格納部から前記指示情報を読み取り、読み取った前記指示情報に従って、前記暗号処理用ＣＰＵコアと前記アプリケーション用ＣＰＵコアとのいずれかとして機能することを特徴とする請求項７記載の暗号装置。
【請求項９】
前記暗号処理用ＣＰＵコアの前記格納部における作業用メモリ領域と暗号処理プログラム領域との少なくともいずれかは、
前記アプリケーション用ＣＰＵコアの特権領域とされ、
前記アプリケーション用ＣＰＵコア上の非特権モードのプログラムは、
特権領域の作業用メモリ領域、特権領域の暗号処理プログラム領域を参照することができないことを特徴とする請求項７記載の暗号装置。
【請求項１０】
前記アプリケーション用ＣＰＵコア上のプログラムは、
前記暗号処理用ＣＰＵコアの前記格納部における作業用メモリ領域と暗号処理プログラム領域との少なくともいずれかの物理アドレスを前記アプリケーション用ＣＰＵコアの論理アドレス空間に割付けないメモリ管理ルーチンにより管理されることにより、物理アドレスの割付けられていない作業用メモリ領域、物理アドレスの割付けられていない暗号処理プログラム領域を参照することができないことを特徴とする請求項７記載の暗号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のＣＰＵコアを備えたＦＰＧＡを用いた暗号装置に関する。
【背景技術】
【０００２】
暗号処理を必要とする組込み機器が増えてきている。このような機器では、少ない部品点数で柔軟なシステムを構築するためにＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コアを内蔵する大容量ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が利用されることが多い。暗号処理は通常、
（１）ＦＰＧＡ内蔵のＣＰＵコア上のソフトウェアのみで実現する（図７）、
あるいは、
（２）ＦＰＧＡ内に実装した暗号回路（ハードウェア）をＦＰＧＡ内蔵ＣＰＵコア上のソフトウェアが制御する（図８）、
ことで実行する。
図８中の暗号回路は、例えば、ＡＥＳやＲＳＡ（登録商標）のコプロセッサ（ハードウェア）などである。図７、図８ともに、暗号処理に直接関係無いＦＰＧＡ内部の回路は省略している（以下同様）。ＦＰＧＡ内蔵ＣＰＵコアのメモリ領域（作業用メモリやプログラム格納用メモリ）にはＦＰＧＡ内部メモリと外部メモリの双方または一方が充てられる（以下同様）。外部メモリには、外部メモリＩＦ（インタフェース）を介してシステムバスからアクセスできる。一般に、ＦＰＧＡ内蔵ＣＰＵコアの処理性能は、単体の高性能プロセッサチップの処理性能よりも劣るため、図７と図８のいずれの場合も、暗号処理を必要とする大量のトランザクションが発生すると、ＦＰＧＡ内蔵ＣＰＵコアの処理能力不足によって、十分な数のトランザクションを受け付けられなくなるか、または個々のトランザクションの処理性能が大幅に低下する。
【特許文献１】特開２００５−１５７６５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
最近は複数のＣＰＵコアを内蔵するＦＰＧＡ（マルチＣＰＵコア内蔵ＦＰＧＡ）も現れており、これらのＣＰＵコアをうまく連携させることで、少ない部品点数を維持したままで、ＦＰＧＡ内蔵ＣＰＵコアの処理能力不足に伴う上記課題を解決可能性がある。
【０００４】
本発明は、マルチＣＰＵコア内蔵ＦＰＧＡの複数のＣＰＵコアを連携させて、暗号処理を伴うトランザクション処理を効率的に実行する暗号システムを実現することを目的とする。
【課題を解決するための手段】
【０００５】
この発明の暗号装置は、
複数のＣＰＵコアを備えたＦＰＧＡを用いた暗号装置において、
所定のアプリケーションプログラムから要求された暗号処理を伴う複数のトランザクション処理を並行処理するアプリケーション用ＣＰＵコアと、
前記アプリケーション用ＣＰＵコアにより並行処理される前記複数のトランザクション処理にともなって処理の実行が必要な暗号処理が発生すると、発生した暗号処理を実行する暗号処理用ＣＰＵコアと
を備えたことを特徴とする。
【発明の効果】
【０００６】
この発明により、暗号処理を伴うトランザクション処理を効率的に実行する暗号装置を提供できる。
【発明を実施するための最良の形態】
【０００７】
実施の形態１．
図１は、実施の形態１のＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）の構成を示す図である。図１に示すＦＰＧＡは、以下に説明する実施の形態１から実施の形態１３のＦＰＧＡの基本コンセプトとなるものである。すなわち、図１のＦＰＧＡ１００では、ＦＰＧＡ１００に内蔵された複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コア（ＦＰＧＡ内蔵ＣＰＵコアともいう）を「ＦＰＧＡ外部とトランザクションのやり取りを行うアプリケーション用ＣＰＵコア１１０」と「アプリケーション用ＣＰＵコアからの依頼に基づいて暗号処理を行う暗号処理用ＣＰＵコア１２０」のように役割分担し、それらが協調してトランザクション処理を行う。これにより、「背景技術」で述べたＦＰＧＡ内蔵ＣＰＵコアの処理能力不足に伴う課題を解決することができる。
【０００８】
図１に示すように、ＦＰＧＡ１００は、アプリケーション用ＣＰＵコア１１０、暗号処理用ＣＰＵコア１２０、ＦＰＧＡ内部メモリ１１１、ＦＰＧＡ内部メモリ１２１、外部メモリＩＦ（インタフェース）１１２（インタフェース）、外部メモリＩＦ１２２を備えている。外部メモリＩＦ１１２は、外部メモリ１１３に接続し、外部メモリＩＦ１２２は、外部メモリ１２３に接続している。前述のように、ＦＰＧＡに内蔵されたＣＰＵコアのメモリ領域（作業用メモリやプログラム格納用メモリ）には、ＦＰＧＡ内部メモリと外部メモリの双方または一方が充てられる。
【０００９】
ＦＰＧＡ１００外部から暗号処理を伴うトランザクション要求を受け取ったアプリケーション用ＣＰＵコア１１０は、当該トランザクション処理の中で発生する必要な暗号処理を暗号処理用ＣＰＵコア１２０に依頼する。暗号処理用ＣＰＵコア１２０が暗号処理を行っている間も、アプリケーション用ＣＰＵコア１１０は、新たなトランザクション要求を受け付けることや、暗号処理用ＣＰＵコア１２０への暗号処理要求を行うこと（並行処理）ができる。暗号処理用ＣＰＵコア１２０は、暗号処理を終える度に暗号処理結果をアプリケーション用ＣＰＵコア１１０に返し、アプリケーション用ＣＰＵコア１１０は、ＦＰＧＡ１００の外部にトランザクション応答を返す。通常のオペレーションシステム（ＯＳ）上のプログラムであれば、マルチプロセス動作環境で、複数のこれらの処理を並列に実行できる。このように、複数のＣＰＵコアによる並列処理と、マルチプロセス動作による並列処理により、暗号システムのトランザクション処理性能が向上する。
【００１０】
より具体的には、アプリケーション用ＣＰＵコア１１０は、所定のアプリケーションプログラムから要求された暗号処理を伴う複数のトランザクション処理を並行処理することこ可能である。暗号処理用ＣＰＵコア１２０は、アプリケーション用ＣＰＵコア１１０により並行処理される複数のトランザクション処理にともなって処理の実行が必要な暗号処理が発生すると、発生した暗号処理を実行する。この場合、暗号処理用ＣＰＵコア１２０は、アプリケーション用ＣＰＵコア１１０により並行処理される複数のトランザクション処理にともなって、処理の実行が必要な「複数の暗号処理」が発生した場合には、複数の暗号処理を並行処理により実行可能である。
【００１１】
なお、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０は、それぞれメモリ領域を持つが、図１では各ＣＰＵコアと各メモリの接続関係は特に限定しない。
【００１２】
また、図１ではアプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０を１つずつ図示したが、それぞれ複数であってもかまわない（以下の実施の形態も同様である）。
【００１３】
以上のように実施の形態１では、複数のＣＰＵコアを内蔵する１つのＦＰＧＡで暗号処理を伴うトランザクション処理を実行する暗号システムであって、内蔵ＣＰＵコアをアプリケーション用ＣＰＵコアと暗号処理用ＣＰＵコアに分け、それらが協調してトランザクション処理を実行する暗号システムについて説明した。
【００１４】
実施の形態２．
次に図２を参照して実施の形態２のＦＰＧＡ２００を説明する。実施の形態２は、実施の形態１の暗号システム（ＦＰＧＡ）を具体化するために、実施の形態１で特定しなかったメモリ構成やＦＰＧＡ内ＣＰＵコア間の通信手段を提供するものである。図２は、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０とは基本的に「疎結合」、すなわちアドレス空間を共有しないが、例外として、両者から共通にアクセス可能な通信用メモリ１３０（格納部の一例）を両者間に設け、通信用メモリ１３０を介して暗号処理要求や暗号処理結果を通信する暗号システムである。
【００１５】
通常、通信用メモリ１３０には、ＦＰＧＡがもともと備えているメモリを使用する。通信用メモリ１３０への転送は、ＣＰＵコアのメモリアクセス命令を用いてプログラムで行うか、図２には示していないが、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  ｃｏｎｔｒｏｌｌｅｒ）コントローラを用いて行う。
【００１６】
このように、ＦＰＧＡ２００は、情報を格納する通信用メモリ１３０を備えており、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０とは、通信用メモリ１３０に自身の生成した情報を格納すると共に通信用メモリ１３０から情報を読み取ることにより、互いに通信する。
【００１７】
以上のように実施の形態２では、アプリケーション用ＣＰＵコアと暗号処理用ＣＰＵコアとは基本的に「疎結合」であるが、両者の間に設けた通信用メモリ１３０を介して、暗号処理要求や暗号処理結果を通信する暗号システムを説明した。
【００１８】
実施の形態３．
次に図３を参照して実施の形態３のＦＰＧＡ３００を説明する。図３は、実施の形態２を示す図２に、さらに、暗号回路１４１、１４２・・・を追加した構成である。図３では、暗号処理用ＣＰＵコア１２０のシステムバス２に暗号回路１４１，１４２等を接続し、暗号処理用ＣＰＵコア１２０からこれらの暗号回路（暗号回路は一つでも複数でもよい）を制御して暗号処理をアクセラレートする暗号システムである。これにより、実施の形態３で示した図２の構成よりも暗号処理性能が向上する。なお、暗号回路はハードウェアにより暗号処理を実行する。
【００１９】
このように、ＦＰＧＡ３００は、さらに、暗号処理を実行する複数の暗号回路１４１等を備える。そして、暗号処理用ＣＰＵコア１２０は、複数の暗号回路を制御することにより、複数の暗号回路に複数の暗号処理を並列処理で実行させることができる。
【００２０】
以上のように実施の形態３では、暗号処理用ＣＰＵコア１２０に接続されるシステムバス２には、暗号処理用ＣＰＵコア１２０から制御可能な１つまたは複数の暗号回路が実装され、暗号処理用ＣＰＵコア１２０は当該暗号回路を用いて高速に暗号処理を実行する暗号システムを説明した。
【００２１】
実施の形態４．
次に実施の形態４の暗号装置を説明する。本実施の形態４のＦＰＧＡのハードウェア構成は、実施の形態３のＦＰＧＡ３００（図３）と同一であるが、「全ての暗号回路の動作中に、新たな暗号処理要求が発生した場合は、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０とのうちの少なくともいずれかが、ソフトウェアだけで新たな要求に対する暗号処理を行う」というプログラムを備えることを特徴とする。この追加プログラムは、暗号回路が動作中であるかどうかを示すフラグ（通常、実施の形態３のシステムでもこのようなフラグは設ける）に基づいて動作する。「アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０とのうちの少なくともいずれか」であり、両者が暗号処理してもよいし、両者のうち一方のＣＰＵコアが暗号処理してもよい。
【００２２】
このように、暗号処理用ＣＰＵコア１２０とアプリケーション用ＣＰＵコア１１０との少なくともいずれかは、複数の暗号回路のすべてが暗号処理の実行中である場合に、複数のトランザクション処理にともなって処理の実行が必要な新たな暗号処理が発生すると、新たな暗号処理を自身で実行する。
【００２３】
以上のように実施の形態４では、全ての暗号回路が暗号処理を実行している最中に新たな暗号処理を伴うトランザクション処理が発生した場合は、暗号処理用ＣＰＵコア１２０またはアプリケーション用ＣＰＵコア１１０がソフトウェアだけで暗号処理を実行する暗号システムを説明した。
【００２４】
実施の形態５．
次に図４を参照して実施の形態５を説明する。図４は、実施の形態２の図２（疎結合）の場合とは別の構成であり、実施の形態１に記載の暗号システムを具体化するために、実施の形態１で特定していなかったメモリ構成やＦＰＧＡ内ＣＰＵコア間通信手段を提供するものである。図４に示すように、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０とは密結合、すなわちアドレス空間を共有し（「ＦＰＧＡ内部メモリ１５１、外部メモリ」（格納部の一例）に対してアドレス空間を共有する）、その共有空間を介して、両者間で暗号処理要求や暗号処理結果をやり取りする構成である。前述の実施の形態２のシステムでは、ＣＰＵコア間の通信のために、各ＣＰＵコアの固有空間から通信用メモリ１３０へのデータ転送が必要であるが、本実施の形態５のシステムではアドレス空間を共有するため、通信をポインタ渡しとすることができるので、ＣＰＵコア間のデータ転送が不要となる。
【００２５】
このように、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０とは、「ＦＰＧＡ内部メモリ１５１や外部メモリ」（格納部）に対して論理アドレス空間を共有する。
【００２６】
以上のように実施の形態５では、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０とは密結合であり、共通のアドレス空間の下で、両者が協調してトランザクション処理を実行する暗号システムを説明した。
【００２７】
実施の形態６．
図５を参照して実施の形態６のＦＰＧＡ５００を説明する。図５は、実施の形態５を示す図４のＦＰＧＡ４００に対して、ＦＰＧＡ５００が、ＦＰＧＡ内部メモリ１６０を備えた構成である。なお、図５では、ＦＰＧＡ内部メモリ１６０を個別に設けているが、ＦＰＧＡ内部メモリ１５１にＦＰＧＡ内部メモリ１６０に対応する領域を設けても構わない。
【００２８】
図５に示すＦＰＧＡ５００では、密結合された複数の対等なＣＰＵコア（ＣＰＵ番号０，１，．．．）が、自身のＣＰＵ番号を知るための専用のリソースを持たない場合に、前述の実施の形態５で述べたシステムを実現するための手段を提供するものである。
【００２９】
図５において、システムが起動すると、各ＣＰＵコアは共通の論理空間上の同一アドレスからプログラムの実行を開始する。すなわち、各ＣＰＵコアは、同じプログラムを実行し始める。従って、各ＣＰＵコアが自身のＣＰＵ番号を知る術がないと、アプリケーション用ＣＰＵコアと暗号処理用ＣＰＵコアとの役割分担ができない。このため、図５では、各ＣＰＵコアのプログラムはシステム起動後に、ＦＰＧＡ内部メモリ１６０において「０（又は１）」（指示情報の一例）に初期化されている特定のアドレスに対して、「不可分なリード＆ライト命令」（＊：下記＊印参照）を実行する。各ＣＰＵコアが同時に同じプログラムを開始しても、システムバスを介した命令読み出しは、バスアービタ（図５には示していない）によって調停される。このため、各ＣＰＵコアが同一命令を実行するタイミングには時間差が生じる。従って、最初にＦＰＧＡ内部メモリ１６０の上記アドレスにアクセスしたＣＰＵコアのみが初期値をＦＰＧＡ内部メモリ１６０から読み出し、その後上記アドレスにアクセスするＣＰＵコアは初期値以外の値をＦＰＧＡ内部メモリ１６０から読み出すことになる。読み出した値に応じた条件分岐を行うことで、以降はアプリケーション用ＣＰＵコアと暗号処理用ＣＰＵコアとの役割分担が可能となる（例えば、上記アドレスから初期値を読み出したＣＰＵコアのみがアプリケーション用ＣＰＵコア１１０となり、他のＣＰＵコアは暗号処理用ＣＰＵコア１２０となる）。
【００３０】
（＊）前記の「不可分なリード＆ライト命令」には、例えば、Ｔｅｓｔ＆Ｓｅｔ（当該アドレスのデータを読み出した後、当該アドレスに１を書き込む）や、Ｌｏａｄ＆Ｃｌｅａｒ（当該アドレスのデータを読み出した後、当該アドレスに０を書き込む）などを使用する。なお、不可分なリード＆ライトを用いず、リード命令とライト命令に分けて実行すると、複数のＣＰＵコアが初期値を読み出す可能性があるため、その場合は各ＣＰＵコア間の役割分担がうまくいかない。
【００３１】
このようにＦＰＧＡ５００は、複数のＣＰＵコアを備えている。そしてＦＰＧＡ内部メモリ１６０（格納部）は、暗号処理用ＣＰＵコアとアプリケーション用ＣＰＵコアとのいずれになるべきかを指示する指示情報を格納している。複数のＣＰＵコアの各ＣＰＵコアは、ＦＰＧＡ内部メモリ１６０（格納部）から前記指示情報を読み取り、読み取った前記指示情報に従って、前記暗号処理用ＣＰＵコアと前記アプリケーション用ＣＰＵコアとのいずれかとして機能する。
【００３２】
以上のように実施の形態６では、０（または１）に初期化されるメモリ領域を備え、そのアドレスに対するアトミック（不可分）なリードとライトを行うプログラムにより、密結合された複数のＣＰＵコアが、自身がアプリケーション用ＣＰＵコアとなるか暗号処理用ＣＰＵコアとなるかを判定する暗号システムを説明した。
【００３３】
実施の形態７．
実施の形態６で示した図５において、図５の「０（又は１）に初期化されるＦＰＧＡ内部メモリ１６０」の代わりに、「システム起動後、１回目に読み出された時だけ０（または１）が読め、以降は１（または０）が読めるような回路」（図示していない）をシステムバス上の特定のアドレスに割付けることで、実施の形態６と同等の機能を実現することも可能である。
【００３４】
このようにＦＰＧＡ５００は、複数のＣＰＵコアを備えている。そして「システム起動後、１回目に読み出された時だけ０（または１）が読め、以降は１（または０）が読めるような回路」（格納部の一例）は、前記の「０（または１）」を暗号処理用ＣＰＵコアとアプリケーション用ＣＰＵコアとのいずれになるべきかを指示する指示情報として格納している。複数のＣＰＵコアの各ＣＰＵコアは、前記回路（格納部）から前記指示情報を読み取り、読み取った前記指示情報に従って、前記暗号処理用ＣＰＵコアと前記アプリケーション用ＣＰＵコアとのいずれかとして機能する。
【００３５】
以上のように実施の形態７では、システム起動後、１回目に読み出された時だけ「０（または１）」（指示情報の一例）が読め、以降は「１（または０）」が読めるような回路を特定のアドレスに割付け、そのアドレスに対するリードを行うプログラムにより、密結合された複数のＣＰＵコアが、自身がアプリケーション用ＣＰＵコアとなるか暗号処理用ＣＰＵコアとなるかを判定する暗号システムを説明した。
【００３６】
実施の形態８．
図６を参照して実施の形態８のＦＰＧＡ６００を説明する。図６のＦＰＧＡ６００は、実施の形態５の図４（密結合）に暗号回路１４１等（暗号回路は一つでもよいし複数でもよい）を追加した実施形態であり、実施の形態３に対応する。
【００３７】
図６では、システムバスに複数の暗号回路１４１、１４２、．．．を接続し、暗号処理用ＣＰＵコア１２０から暗号回路１４１等を制御して暗号処理をアクセラレートする暗号システムである。これにより、密結合として示した図４の構成よりも暗号処理性能が向上する。
【００３８】
このようにＦＰＧＡ６００は、暗号処理を実行する複数の暗号回路１４１等を備える。そして暗号処理用ＣＰＵコア１２０は、複数の暗号回路を制御することにより複数の暗号処理を並列処理で実行させる。
【００３９】
以上のように実施の形態８では、暗号処理用ＣＰＵコアに接続されるバスには、暗号処理用ＣＰＵコアから制御可能な１つまたは複数の暗号回路が実装され、暗号処理用ＣＰＵコアは当該暗号回路を用いて高速に暗号処理を実行する暗号システムを説明した。
【００４０】
実施の形態９．
実施の形態９は、実施の形態４に対応するものであり、ハードウェア構成は、実施の形態８の図６と同じである。実施の形態９は、実施の形態８の場合において、「全ての暗号回路の動作中に、新たな暗号処理要求が発生した場合は、アプリケーション用ＣＰＵコアまたは暗号処理用ＣＰＵコアのうちの少なくともいずれかが、ソフトウェアだけで新たな要求に対する暗号処理を行う」というプログラムを備えるものである。この追加プログラムは、暗号回路が動作中であるかどうかを示すフラグ（通常、実施の形態８のシステムでもこのようなフラグは設ける）に基づいて動作する。
【００４１】
このように、暗号処理用ＣＰＵコアとアプリケーション用ＣＰＵコアとの少なくともいずれかは、複数の暗号回路のすべてが暗号処理の実行中である場合に、複数のトランザクション処理にともなって処理の実行が必要な新たな暗号処理が発生すると、前記新たな暗号処理を自身で実行する。
【００４２】
以上のように実施の形態９では、全ての暗号回路が暗号処理を実行している最中に新たな暗号処理を伴うトランザクション処理が発生した場合は、暗号処理用ＣＰＵコアまたはアプリケーション用ＣＰＵコアがソフトウェアだけで暗号処理を実行する暗号システムを説明した。
【００４３】
実施の形態１０．
実施の形態１０は、密結合である実施の形態５〜実施の形態９の手当てに関する内容である。前述の実施の形態５〜実施の形態９（図４〜図６が対応）の暗号システムでは、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０とがメモリ空間を共有し、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０との物理メモリが共通であるため、全てのプログラムから全てのメモリ領域をアクセス可能にすると、アプリケーション用ＣＰＵコア上のアプリケーションプログラムから暗号処理中の作業用メモリ領域や暗号処理プログラムが読めてしまう。このため、万が一、悪意あるアプリケーションプログラムが混じり込んでしまうと、セキュリティ上の脆弱性となり得る。そのため、実施の形態１０はこの課題を解決するものである。実施の形態１０は、ＣＰＵコアのＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ：メモリ管理ユニット：図示していない）が提供する、アドレス毎の特権／非特権モードを利用して、アプリケーションプログラムから暗号用の作業領域やプログラムへのアクセスを抑制する。
【００４４】
すなわち、暗号処理用ＣＰＵコア１２０の「ＦＰＧＡ内部メモリ１５１または外部メモリ１５３」（これらは格納部の一例）における作業用メモリ領域と暗号処理プログラム領域との少なくともいずれかは、アプリケーション用ＣＰＵコア１１０の特権領域とされる。そして、アプリケーション用ＣＰＵコア１１０上の非特権モードのプログラムは、特権領域の作業用メモリ領域、特権領域の暗号処理プログラム領域を参照することができないものとする。
【００４５】
以上のように実施の形態１０では、暗号処理用ＣＰＵコア１２０の作業用メモリ領域及び／または暗号処理プログラム領域は、アプリケーション用ＣＰＵコアの特権領域とし、アプリケーション用ＣＰＵコア上の非特権モードのプログラムからは参照できない暗号システムを説明した。
【００４６】
実施の形態１１．
実施の形態１１を説明する。実施の形態１１の目的も実施の形態１０と同じである。実施の形態１１は、実施の形態１０で述べた特権／非特権モードではなく、ＭＭＵが持つアドレス変換機構（例えば、ＴＬＢ；Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）を利用して、アプリケーション用ＣＰＵコア１１０のどの論理アドレスにも暗号処理用ＣＰＵコア１２０の作業用メモリ領域及び／または暗号処理プログラム領域の物理アドレスを割付けないことで、アプリケーション用ＣＰＵコア１１０からそれらの領域へのアクセスを抑制するものである。
【００４７】
このように、アプリケーション用ＣＰＵコア上のプログラムは、暗号処理用ＣＰＵコアの「ＦＰＧＡ内部メモリ１５１または外部メモリ１５３」（これらは格納部の一例）における作業用メモリ領域と暗号処理プログラム領域との少なくともいずれかの物理アドレスをアプリケーション用ＣＰＵコアの論理アドレス空間に割付けないメモリ管理ルーチンにより管理されることにより、物理アドレスの割付けられていない作業用メモリ領域、物理アドレスの割付けられていない暗号処理プログラム領域を参照することができない構成である。
【００４８】
以上のように実施の形態１１では、アプリケーション用ＣＰＵコアは、暗号処理用ＣＰＵコアの作業用メモリ領域及び／または暗号処理プログラム領域の物理アドレスを、自身の論理アドレス空間に割付けないようなメモリ管理ルーチンを実装することで、アプリケーション用ＣＰＵコア上のプログラムから上記領域は参照できない暗号システム
を説明した。
【００４９】
実施の形態１２．
以上の実施の形態では、暗号回路１４１等の制御は暗号処理用ＣＰＵコア１２０が行うものとしていたが、実施の形態１２は、暗号回路をアプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０との双方から制御可能とする実施形態である。すなわち、システム性能に対する要求に応じて、暗号回路を制御するＣＰＵコアを切り替え可能とするものである。これを実現するためには、例えば、図３（実施の形態３、４）では、暗号回路を２ポート化（またはセレクタを使用）し、２つのシステムバスに接続する。図６（実施の形態８，９）のハードウェア構成であれば、そのまま本実施の形態１２を実現可能である。
【００５０】
例えば、通常は暗号処理用ＣＰＵコアが暗号回路を制御し、特定のアプリケーションプログラム（所定の種別のアプリケーションプログラム）については、コア切替部で暗号回路を制御するＣＰＵコアを暗号処理用ＣＰＵコア１２０からアプリケーション用ＣＰＵコア１１０に切り替える。ここでコア切替部とは、例えば図３の場合であればセレクタと切り替えプログラムの組合せにより実現し、図６の場合には切り替えプログラムにより実現する。
【００５１】
実施の形態１２では、例えば以下の（１）、（２）により、システム性能に対する要求に応じた最適化が可能となる。
（１）同時に多数のトランザクション処理を受け付ける必要があるアプリケーションプログラムでは、通常どおり、暗号回路の制御を全て暗号処理用ＣＰＵコア１２０が実行し、アプリケーション用ＣＰＵコア１１０はトランザクションの受け付けに注力する。
（２）一方、１つのトランザクション処理をできるだけ短時間で行う必要があるアプリケーションプログラム（所定の種別のアプリケーションプログラム）では、暗号回路の制御を全てアプリケーション用ＣＰＵコア１１０が行うようにコア切替部がＣＰＵコアを切り替える。これにより、アプリケーション用ＣＰＵコア１１０と暗号処理用ＣＰＵコア１２０との間のやり取り（データ転送など）を省くことができ、暗号処理時間を短縮することができる。アプリケーション用ＣＰＵコア１１０が暗号回路を制御する場合は、暗号処理用ＣＰＵコア１２０を停止することにより、システムの低消費電力化も図ることができるという効果もある。
【００５２】
このように、実施の形態１２の暗号装置は、アプリケーションプログラムが所定の種別の場合に、複数の暗号回路を制御するＣＰＵコアを暗号処理用ＣＰＵコア１２０からアプリケーション用ＣＰＵコア１１０に切り替えるコア切替部（１）を備えた構成である。
【００５３】
以上のように実施の形態１２では、実施の形態３、実施の形態８において、アプリケーション用ＣＰＵコアと暗号処理用ＣＰＵコアの双方から制御可能な１つまたは複数の暗号回路が実装され、当該暗号回路の制御を行うＣＰＵコアを次のように切り替える暗号システムを説明した。
（１）同時に多数のトランザクション処理を受け付ける必要があるアプリケーションでは、暗号処理用ＣＰＵコアが暗号回路の制御を行う。
（２）１つのトランザクション処理をできるだけ短時間で行う必要があるアプリケーションでは、アプリケーション用ＣＰＵコアが暗号回路の制御を行う。
【００５４】
実施の形態１３．
実施の形態１３の目的も実施の形態１２と同様である。ＦＰＧＡのパーシャルリコンフィギュレーション（部分的再構成）機能（コア切替部の一例）を利用して、暗号回路が接続されるＣＰＵコアの切り替えを行うことで、暗号回路の２ポート化やセレクタを追加することなく、実施の形態１２と同様に、システム性能に対する要求に応じた最適化が可能となる。
【００５５】
このように、実施の形態１２の暗号装置は、アプリケーションプログラムが所定の種別の場合に、複数の暗号回路を制御するＣＰＵコアを暗号処理用ＣＰＵコア１２０からアプリケーション用ＣＰＵコア１１０に切り替えるコア切替部（パーシャルリコンフィギュレーション機能）を備えた構成である。
【００５６】
以上のように実施の形態１３では、ＦＰＧＡ内に実装した１つまたは複数の暗号回路とＣＰＵコア間の接続を、ＦＰＧＡのパーシャルリコンフィギュレーション（部分的再構成）機能を利用して、次のように切り替える暗号システムを説明した。
（１）同時に多数のトランザクション処理を受け付ける必要があるアプリケーションでは、暗号処理用ＣＰＵコアに接続されるバスに暗号回路を接続する。
（２）１つのトランザクション処理をできるだけ短時間で行う必要があるアプリケーションでは、アプリケーション用ＣＰＵコアに接続されるバスに暗号回路を接続する。
【００５７】
以上の実施の形態１〜１３では、ＦＰＧＡを用いた暗号装置を説明したが、以上に説明した暗号装置は、「ＦＰＧＡを用いた暗号処理方法」として把握することも可能である。
【図面の簡単な説明】
【００５８】
【図１】実施の形態１のＦＰＧＡ１００の構成を示す図。
【図２】実施の形態２のＦＰＧＡ２００の構成を示す図。
【図３】実施の形態３，４のＦＰＧＡ３００の構成を示す図。
【図４】実施の形態５のＦＰＧＡ４００の構成を示す図。
【図５】実施の形態６，７のＦＰＧＡ５００の構成を示す図。
【図６】実施の形態８，９のＦＰＧＡ６００の構成を示す図。
【図７】従来技術を示す図。
【図８】従来技術を示す別の図。
【符号の説明】
【００５９】
１，２，３  システムバス、１００，２００，３００  ＦＰＧＡ、１１０  アプリケーション用ＣＰＵコア、１１１，１２１，１５１，１６０  ＦＰＧＡ内部メモリ、１１２，１２２，１５２  外部メモリＩＦ、１１３，１２３，１５３  外部メモリ、１２０  暗号処理用ＣＰＵコア、１３０  通信用メモリ、１４１，１４２  暗号回路。
【図１】
2009296195.tif 000003
【図２】
2009296195.tif 000004
【図３】
2009296195.tif 000005
【図４】
2009296195.tif 000006
【図５】
2009296195.tif 000007
【図６】
2009296195.tif 000008
【図７】
2009296195.tif 000009
【図８】
2009296195.tif 000010