説明

デバイス連携システム

【課題】CPUを介在させることなく、データパケット送信時のイーサネットコントローラとセキュリティエンジンの動作を連携させる。
【解決手段】送信および暗号化対象となるパケットデータを準備して、メモリデバイス7に、パケットデータの暗号化要求のステータスの指示書を書き込み、セキュリティエンジン8によりその指示書に沿った暗号化が完了すると、その指示書のステータスを暗号化要求を示すデータから暗号化完了を示すデータに書き換え、このデータ書き換えに基づいて、イーサネットコントローラ9が前記暗号化されたパケットデータの送信を行うようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、特定の処理を行うことが可能なデバイスを複数組み合わせることで、特定アプリケーションを実現するデバイス連携システムに係り、特に複数のデバイスを高速で連携させることを可能とするデバイス連携システムに関するものである。
【背景技術】
【0002】
近年、パソコンやSoc(システムオンチップ)等のCPUを核として動作するシステムは、データ処理や外部との通信手段を備えるため、多くのデバイスをシステムの一部として搭載している。そしてこれらのデバイスの中には、CPUがメモリに書き込んだ内容を指示書として参照し、それによってその後の動作を決定しているものもある。このようなデバイスは、通常、処理結果もメモリに書き込むことが多く、CPUはこの処理結果を示すデータを基にその後の処理を決定している。ネットワークコントローラや、データの暗号化/復号化を行うセキュリティエンジン等は、このようなデバイスに相当する。
【0003】
しかしながら、IPSEC(IP Security Protocol)のように、データの暗号化/復号化とネットワーク処理を、一連の処理として実施しなければならないような場合、CPUは複数のデバイス間において、結果を中継するための役割を担わなければならなくなる。つまり、前段の結果を後段のデバイスが引き継げるよう、CPUがデータの加工や指示書の作成等の処理を行う必要がある。
【0004】
通常、CPUへの処理要求はデバイスからの割込信号によってなされるが、割込処理を行うには、CPUはそれまでに行っていたタスクの状態を保存し、その後必要な処理が記述されているプログラムをロードし、その後に実際の処理に取り掛かる、といったように、要求された処理を即座に実行することは非常に難しい(例えば、特許文献1では割込の回数を極力少なくしようという試みをしているが、データ受信の度に、最低1回は割込を発生させなくてはならない)。これは結果として、CPU負荷の増大と処理速度の低下を引き起こし、システムパフォーマンスを劣化させることとなる。上記で例示したIPSECについて言えば、転送スループットの低下を意味する。
【特許文献1】特開2005−222281号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
このような問題を回避する方法として、連携するデバイス同士を特殊なインターフェースで直接接続するといった手法が採られることもある。しかし、これは使用可能なデバイスの選択肢を狭め、結果としてコストの増大につながる上、場合によっては所望する機能が実現できなくなるといった事態も想定される。
【0006】
本発明の目的は、CPUを介在させずに、且つ使用可能なデバイスの選択肢を狭めることなく、デバイス同士の連携を実現させて、CPU負荷の低減と処理速度の向上を同時に実現可能としたデバイス連携システムを提供することである。
【課題を解決するための手段】
【0007】
上記目的を達成するために、請求項1にかかる発明のデバイス連携システムは、メモリデバイスと、処理終了時に処理結果を示すデータを前記メモリデバイスの第1のアドレスに書き込む機能を有する第1のデバイスと、前記メモリデバイスの前記第1のアドレスの内容が前記データで書き換えられたことをトリガとして処理を開始する第2のデバイスとを備え、前記第1のデバイスの処理完了に基づき前記第2のデバイスの処理開始が行われるようにしたことを特徴とする。
請求項2にかかる発明は、請求項1に記載のデバイス連携システムにおいて、前記第1のデバイスの処理結果を示す前記データが第1のデータである場合は前記メモリデバイスの前記第1のアドレスの内容が前記データで書き換えられ、第2のデータである場合は書き換えられないようにしたことを特徴とする。
請求項3にかかる発明は、請求項2に記載のデバイス連携システムにおいて、前記第1のデバイスの処理結果を示す前記データが前記第2のデータである場合は、前記第1および第2のデバイス以外のデバイスに対して信号をアサートするようにしたことを特徴とする。
請求項4にかかる発明は、請求項2又は3に記載のデバイス連携システムにおいて、前記第1のデバイスの処理結果を示す前記データが前記第1のデータである場合と前記第2のデータである場合に応じて処理する内容を、外部から設定可能としたことを特徴とする。
請求項5にかかる発明は、請求項2、3又は4に記載のデバイス連携システムにおいて、前記第1のデータは前記第1のデバイスの処理が完了したことを示すデータであり、前記第2のデータは前記第1のデバイスの処理が失敗したことを示すデータであることを特徴とする。
【発明の効果】
【0008】
本発明によれば、メモリの内容によって動作を開始し、終了時にはメモリに対して終了データを書きこむ複数のデバイスを、CPUを介在させることなく高速に連携させることができるという、優れた効果を得ることができる。また、適用対象のデバイスは、メモリの内容によって動作を開始し、終了時にはメモリに対してデータを書き込むデバイスであれば、全てが対象となり、特殊なインターフェースを必要としないので、使用可能なデバイスの選択肢が狭まることはない。
【発明を実施するための最良の形態】
【0009】
本発明は、前段のデバイスの処理結果判定を、CPUとは別に用意されたハードウェア(バスブリッジ回路)によって行い、その後、指定されていたアドレスの内容を書き換えることで後段のデバイスヘの指示を自動的に行い、結果としてCPUを介さずにデバイス同士の連携を実現させることにより、CPU負荷の低減と処理速度の向上を同時に実現するものである。
【実施例】
【0010】
以下、図面を参照して本発明の実施例を詳細に説明する。図1は、本発明の1つの実施例のデバイス連携システムの構成を示すブロック図である。図1において、CPU1、プログラムを格納するROM3、CPU1への割込信号を制御する割込コントローラ4、暗号化/復号化を行うセキュリティエンジン8、イーサネットコントローラ9、そしてメモリへのアクセス状態を監視するバスブリッジ回路5は、システムバス2によって接続され、各デバイス間ではお互いに情報を送受信することが可能となっている。
【0011】
割込コントローラ4には、バスブリッジ回路5、セキュリティエンジン8、イーサネットコントローラ9からの割込信号が接続されており、割込コントローラ4はこれらの信号がアサートされるとCPU1へ通知する機能を有している。またCPU1からの指示により、これらの割込信号を個別にマスクすることも可能となっている。
【0012】
バスブリッジ回路5は、通常、システムバス2経由で送られてくるメモリデバイス7へのアクセス要求を、内蔵するリクエストバッファ11で受信し、そのままメモリコントローラ6経由でメモリデバイス7へ送信する。メモリデバイス7からの応答についても、リクエストバッファ11はそのままシステムバス2へ送信する。しかし、システムバス2経由でリクエストバッファ11が受信したアクセス要求が、CPU1により設定されたコマンドレジスタ12上に展開されている条件に合致すると、メモリデバイス7に対して読出し、書込み要求を発行し、メモリデバイス7の内容を一部変更する機能を有している。バスブリッジ回路5のコマンドレジスタ12の詳細な動作については後述する。
【0013】
イーサネットコントローラ9は、メモリデバイス7の特定のアドレスに用意された指示書(以降、コマンドディスクリプタと呼ぶ)に従い、メモリデバイス7上のパケットデータを、イーサネット10へ送信する機能、及びイーサネット10経由で受信したパケットデータをメモリデバイス7に配置する機能を持つ。送受信が終了すると、結果はメモリデバイス7の特定のアドレスに書き込まれる。
【0014】
セキュリティエンジン8も、イーサネットコントローラ9と同様、メモリデバイス7の特定のアドレスに配置されるコマンドディスクリプタに従い、データの暗号化と復号化を行う機能を有している。処理結果も同様に、メモリデバイス7に書き込まれる。
【0015】
<コマンドレジスタの内容>
さて、バスブリッジ回路5は、前述したようにリクエストバッファ11とコマンドレジスタ12を内蔵している。CPU1はコマンドレジスタ12上に、図2に示すようなデータ配列を展開することが可能となっている。以下、図2の各列の内容について説明する。「コマンド」は指示、「アドレスA」〜「アドレスC」はメモリデバイス7のアドレスを示し、「データA」は「アドレスA」に書き込まれるデータ、「データB」は「アドレスB」に書き込まれるデータを示す。
【0016】
「コマンド」はライトアクセス要求の条件判定を基に、動作する内容を示すもので、「0x00」のときは無効で何も行わない。「0x01」のときは、条件が真の場合(「アドレスA」に「データA」が書き込まれたとき)に「アドレスB」の内容を「データB」に書き換え、条件が偽の場合にCPU1に割込信号をアサートする。このとき、「アドレスB」の内容(データB)は変化なしである。「0x02」のときは、条件が真の場合(「アドレスA」に「データA」が書き込まれたとき)に「アドレスB」に「アドレスC」の内容をコピーし、条件が偽の場合に何も行わない。
【0017】
「アドレスA」はアクセス要求のアドレス値と比較される値、「データA」はアクセス要求のライトデータと比較される値、「アドレスB」は条件が真の場合に内容が変更される対象のアドレス、「データB」は条件が真の場合に「アドレスB」に書き込まれる値(コマンド=「0x01」の場合のみ)、「アドレスC」は条件が真の場合に「アドレスB」にコピーされる内容を保持しているアドレス(コマンド=「0x02」の場合のみ)である。
【0018】
なお、条件判定については、「アドレスA」への書込みアクセス要求がなされた際に『「ライトデータ=データA」の場合は真、それ以外は偽』と判定するものとする。但し「データA=0xFFFFFFFF」の場合は特別に、書込みデータはどのような値であっても結果は真になるものとする。
【0019】
<イーサネットコントローラのコマンドディスクリプタ>
イーサネットコントローラ9のコマンドディスクリプタは以下のような仕様になっているものとする(図3、図5、図7、図9)。「ステータス」はコマンド要求の有無、及びコマンドの実行結果を格納するもので、
「0x00000000」→無効で何もしない
「0x00000080」→パケット送信要求
「0x00000081」→パケット送信完了
「0x00000082」→パケット送信失敗
「0x80000080」→パケット受信要求
「0x80000081」→パケット受信完了
「0x80000082」→パケット受信失敗
を示す。「アドレス」は送信もしくは受信するパケットデータの配置アドレスを示し、「データサイズ」はパケットデータサイズを示す。
【0020】
<セキュリティエンジンのコマンドディスクリプタ>
一方、セキュリティエンジン8のコマンドディスクリプタは以下のような仕様になっているものとする(図3、図5、図7、図9)。「ステータス」はコマンド要求の有無、及びコマンドの実行結果を格納するもので、
「0x00000000」→無効で何もしない
「0x0000aO80」→暗号化要求
「0x0000aO81」→暗号化完了
「0x0000a082」→暗号化失敗
「0x0000b080」→復号化要求
「0x0000b081」→復号化完了
「0x0000b082」→復号化失敗
を示す。「ソースアドレス」は暗号化もしくは復号化対象データの配置アドレス、「デスティネーションアドレス」は暗号化もしくは復号化が完了したデータの配置アドレス、「データサイズ」は暗号化もしくは復号化されるデータのデータサイズを示す。
【0021】
<送信処理>
以降、IPSEC処理を例として、送信処理と受信処理を行う際の手順を説明する。まず、送信処理の場合については、大まかな処理としては以下の手順を踏むこととなる。「CPU1による暗号化対象となるパケットデータの準備」→「セキュリティエンジン8によるパケットデータの暗号化」→「イーサネットワークコントローラ9による暗号化されたパケットデータの送信」。
【0022】
そこで、CPU1は以下の手順で設定を行う。まず、パケットデータの準備を行う(図3)。これは、メモリデバイス7のアドレスRに暗号化対象のパケットデータを配置することで行う。
【0023】
次に、イーサネットコントローラ9のコマンドディスクリプタの準備を行う(図3)。これは、データサイズを設定し、暗号化されたパケットデータが配置されるアドレスSを設定することで行う。このとき、送信要求は行わない(アドレスPに無効を示す「0x00000000」をライトする)。
【0024】
次に、バスブリッジ回路5のコマンドレジスタ12に、データ書換機能の条件と動作を設定(図4)する。これは、セキュリティエンジン8の暗号化処理が終了すると、イーサネットコントローラ9がパケット送信を行うよう設定する。具体的には、コマンドを「0x01」として、『アドレスQに暗号化完了を示す「0x0000aO81」がライトされる』→『アドレスPにパケット送信要求を示す「0x00000080」をライト』のように設定する。
【0025】
次に、セキュリティエンジン8のコマンドディスクリプタを準備(図3)する。これは、データサイズ、暗号化対象パケットデータのアドレスR、暗号化されたパケットデータを配置するアドレスSを設定することで行う。そして、その後、暗号化処理を開始する(アドレスQに暗号化要求を示す「0x0000aO80」をライトする)。
【0026】
上記の設定が完了すると、セキュリティエンジン8はコマンドディスクリプタの内容を自動的に検知し、暗号化処理を開始する。その後、暗号化処理が完了し、アドレスSに暗号化されたパケットデータが配置されると、暗号化完了を示す「0x0000a081」がアドレスQに書き込まれる。なお、暗号化処理が失敗した場合、つまり、アドレスQに暗号化失敗を示す「0x0000a082」が書き込まれた場合(図示せず)は、バスブリッジ回路5からCPU1に対して割込信号がアサートされ、CPU1は処理が失敗したことを認識することとなる。
【0027】
上記のように暗号化が完了した際、バスブリッジ回路5はコマンドレジスタ12に設定された条件が満たされたことを検知する。このためバスブリッジ回路5は、図5に示すように、アドレスQにアクセス要求どおり暗号化完了を示す「0x0000aO81」を書き込むと同時に、アドレスPに対してパケット送信要求を示す「0x00000080」を書き込む。この時、バスブリッジ回路5はデータ書換処理が完了したことを意味するために、図6に示す様に、コマンドレジスタ12の「コマンド」部分を無効を示す「0x00」にクリアする。
【0028】
すると、今度はイーサネットコントローラ9が送信指示を自動的に検知し、暗号化されたパケットデータ(アドレスSに配置されている)をイーサネット10上に送信することとなる。送信完了後、イーサネットコントローラ9はCPU1に対して送信完了を示す割込通知を行う。
【0029】
以上の一連の動作により、途中でCPU1が介在することなく、パケットデータは暗号化され、ネットワークに対して送信されることとなる。
【0030】
<受信処理>
次に受信処理の場合については、大まかな処理としては以下の手順を踏むこととなる。「イーサネットコントローラ9による暗号化されているパケットデータの受信」→「セキュリティエンジン8によるパケットデータの復号化」→「CPU1による復号化されたパケットデータの取り込み」
【0031】
そこで、CPU1は以下の手順で設定を行う。まず、セキュリティエンジン8のコマンドディスクリプタを準備(図7)する。これは、復号化対象パケットデータのアドレスZと、復号されたパケットデータの配置アドレスYを設定することで行う。データサイズはまだ決定されていないため、未定とする。このとき、復号化要求は行わない(アドレスX1に無効を示す「0x00000000」を書き込む)。
【0032】
次に、バスブリッジ回路5のコマンドレジスタ12に、データ書換機能の条件と動作を設定(図8)する。これは、イーサネットコントローラ9にパケット受信が終了すると、セキュリティエンジン8の復号化処理が開始されるように設定することで行う。具体的にはコマンドを「0x01」として、『アドレスW1にパケット受信完了を示す「0x80000081」が書き込まれる』→『アドレスX1に復号化要求を示す「0x0000b080」を書き込む』のように設定する。また、イーサネットコントローラ9がパケットサイズをセットすると、セキュリティエンジン8のデータサイズも同時にセットされるように設定する。具体的な処理は、コマンドを「0x02」として、『アドレスW2に何らかの値が書き込まれる』→『アドレスX2に、アドレスW2の内容をコピーする』となる。
【0033】
次に、イーサネットコントローラ9のコマンドディスクリプタを準備(図7)する。これは、受信するパケットデータ(暗号化されている)の配置先アドレスZを設定することで行う。そして、受信処理開始を指示(アドレスW1にパケット受信要求を示す「0x80000080」を書き込む)する。
【0034】
上記の設定が完了すると、イーサネットコントローラ9はコマンドディスクリプタの内容を自動的に検知し、パケット受信処理を開始する。その後パケット受信が完了し、アドレスZに暗号化されたパケットデータを配置すると、受信したパケットサイズ(ここでは例として「0x100」)を示すデータをアドレスW2に書き込むと同時に、完了を意味するデータとして、アドレスWlにパケット受信完了を示す「0x80000081」を書き込む。なお、パケット受信処理が失敗した場合、つまリアドレスW1にパケット受信失敗を示す「0x80000082」が書き込まれた場合は、バスブリッジからCPUに対して割込信号がアサートされ、CPUは処理が失敗したことを認識することとなる。
【0035】
上記のようにパケット受信が完了した際、バスブリッジ回路5はコマンドレジスタ12に設定された条件が満たされたことを検知する。このためバスブリッジ回路5は、図9に示すように、アドレスW1にパケット受信完了を示す「0x80000081」を、アドレスW2にデータサイズ「0x100」を書き込むと同時に、アドレスX1に対して復号化要求を示す「0x0000bO80」を、アドレスX2にアドレスW2と同じ値であるデータサイズ「0x100」をそれぞれ書き込む。なお、この時、バスブリッジ回路5はデータ書換処理が完了したことを意味するために、図10に示す様に、コマンドバッファ12の「コマンド」部分を無効を示す「0x00」にクリアする。
【0036】
すると、今度はセキュリティエンジン8が復号化指示を自動的に検知し、暗号化されたパケットデータ(アドレスZに配置)を復号化し、復号化されたパケットデータをアドレスYに配置することとなる。この後、セキュリティエンジン8はCPU1に対して復号化完了を示す割込通知を行い、CPU1はそのデータを取り込むこととなる。
【0037】
以上の一連の動作により、途中でCPU1を介在させることなく、暗号化されたパケットデータは受信・復号化されることとなる。
【0038】
<変形例>
なお、ここではイーサネットコントローラ9とセキュリティエンジン8の2つのデバイスのみを連携させる場合を例として挙げたが、2番目に起動されたデバイスの処理完了通知によって3番目のデバイス(例えば画像処理エンジン等)を起動させる、といったように、さらに多くのデバイスであっても連携させることは可能となる。
【図面の簡単な説明】
【0039】
【図1】本発明の1つの実施例のデバイス連携システムの構成を示すブロック図である。
【図2】バスブリッジ回路に内蔵されるコマンドレジスタに設定される値をマトリックスとして表した説明図である。
【図3】パケット送信前のメモリデバイスの内容を模式的に表した説明図である。
【図4】パケット送信前のコマンドレジスタの内容を模式的に表した説明図である。
【図5】パケット送信後のメモリデバイスの内容を模式的に表した説明図である。
【図6】パケット送信後のコマンドレジスタの内容を模式的に表した説明図である。
【図7】パケット受信前のメモリデバイスの内容を模式的に表した説明図である。
【図8】パケット受信前のコマンドレジスタの内容を模式的に表した説明図である。
【図9】パケット受信後のメモリデバイスの内容を模式的に表した説明図である。
【図10】パケット受信後のコマンドレジスタの内容を模式的に表した説明図である。
【符号の説明】
【0040】
1:CPU、2:システムバス、3:ROM、4:割込コントローラ、5:バスブリッジ回路、6:メモリコントローラ、7:メモリデバイス、8:セキュリティエンジン、9:イーサネットコントローラ、10:イーサネット、11:リクエストバッファ、12:コマンドレジスタ
P,W1:イーサネットコントローラのステータスデータのアドレス
Q,X1:セキュリティエンジンのステータスデータのアドレス
R:暗号化対象パケットデータの配置先アドレス
S:暗号化されたパケットデータの配置先アドレス
W2:イーサネットコントローラのレングスデータのアドレス
X2:セキュリティエンジンのレングスデータのアドレス
Y:復号化されたパケットデータの配置先アドレス
Z:復号化対象パケットデータの配置先アドレス

【特許請求の範囲】
【請求項1】
メモリデバイスと、処理終了時に処理結果を示すデータを前記メモリデバイスの第1のアドレスに書き込む機能を有する第1のデバイスと、前記メモリデバイスの前記第1のアドレスの内容が前記データで書き換えられたことをトリガとして処理を開始する第2のデバイスとを備え、前記第1のデバイスの処理完了に基づき前記第2のデバイスの処理開始が行われるようにしたことを特徴とするデバイス連携システム。
【請求項2】
請求項1に記載のデバイス連携システムにおいて、
前記第1のデバイスの処理結果を示す前記データが第1のデータである場合は前記メモリデバイスの前記第1のアドレスの内容が前記データで書き換えられ、第2のデータである場合は書き換えられないようにしたことを特徴とするデバイス連携システム。
【請求項3】
請求項2に記載のデバイス連携システムにおいて、
前記第1のデバイスの処理結果を示す前記データが前記第2のデータである場合は、前記第1および第2のデバイス以外のデバイスに対して信号をアサートするようにしたことを特徴とするデバイス連携システム。
【請求項4】
請求項2又は3に記載のデバイス連携システムにおいて、
前記第1のデバイスの処理結果を示す前記データが前記第1のデータである場合と前記第2のデータである場合に応じて処理する内容を、外部から設定可能としたことを特徴とするデバイス連携システム。
【請求項5】
請求項2、3又は4に記載のデバイス連携システムにおいて、
前記第1のデータは前記第1のデバイスの処理が完了したことを示すデータであり、前記第2のデータは前記第1のデバイスの処理が失敗したことを示すデータであることを特徴とするデバイス連携システム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2008−42773(P2008−42773A)
【公開日】平成20年2月21日(2008.2.21)
【国際特許分類】
【出願番号】特願2006−217447(P2006−217447)
【出願日】平成18年8月9日(2006.8.9)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(501285133)川崎マイクロエレクトロニクス株式会社 (449)
【Fターム(参考)】