(57)【要約】  例えば、共有メモリアーキテクチャ（ＳＭＡ）のスタティックランダムアクセスメモリ（ＳＲＡＭ）とダブルデータレート（ＤＤＲ）の同期式ダイナミックアクセスメモリ（ＳＤＲＡＭ）との間といったように、第１のメモリユニットと第２のメモリユニットとの間でデータを暗号化して転送するためのデータ処理システムが開示される。このシステムは暗号化エンジンおよびデータムーバコントローラを備えている。データムーバコントローラは少なくとも１つのレジスタを備え、このレジスタには、転送されるデータを暗号化すべきかどうかを指定するフィールドがある。このフィールドが転送データを暗号化すべきことを指定する場合は、このフィールドは、３ＧＰＰ標準化機密性暗号化アルゴリズム“ｆ８”または完全性暗号化アルゴリズム“ｆ９”のように、実行される暗号化のタイプも指定する。
2008500638.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリユニットと第２のメモリユニットとの間において、データを暗号化し、転送するデータ処理システムであって、
（ａ）データが前記メモリユニット間で転送されている間に、データを暗号化する暗号化エンジンと、
（ｂ）前記転送されるデータを暗号化エンジンによって暗号化するどうかを指定する第１のフィールドを有する少なくとも１つのレジスタを含むデータムーバコントローラと、
を備えることを特徴とするデータ処理システム。
【請求項２】
前記第１のフィールドが転送されるデータが暗号化されるべきことを指定する場合は、前記第１のフィールドは、前記暗号化エンジンによって実行される暗号化のタイプも指定することを特徴とする請求項１に記載のシステム。
【請求項３】
前記システムは第三世代パートナシッププロジェクト（３ＧＰＰ）のシステムであり、前記暗号化エンジンによって実行される暗号化のタイプは標準化機密性暗号アルゴリズムｆ８であることを特徴とする請求項２に記載のシステム。
【請求項４】
前記システムは第三世代パートナシッププロジェクト（３ＧＰＰ）のシステムであり、前記暗号化エンジンによって実行される暗号化のタイプは標準化完全性暗号アルゴリズムｆ９であることを特徴とする請求項２に記載のシステム。
【請求項５】
レジスタは、標準化完全性暗号アルゴリズムｆ９によって計算されるメッセージ認証コード（ＭＡＣ）値を指定する第２のフィールドを含んでいることを特徴とする請求項４に記載のシステム。
【請求項６】
前記レジスタは、データが前記第１のメモリユニットから前記第２のメモリユニットへ移動されるか、または前記第２のメモリユニットから前記第１のメモリユニットへ移動されるかを指定する第２のフィールドを含んでいることを特徴とする請求項１に記載のシステム。
【請求項７】
前記レジスタは、前記データムーバコントローラによって転送されるデータブロックのサイズを指定する第２のフィールドを含んでいることを特徴とする請求項１に記載のシステム。
【請求項８】
前記データブロックのサイズは、４バイトであることを特徴とする請求項７に記載のシステム。
【請求項９】
前記データブロックのサイズは、８バイトであることを特徴とする請求項７に記載のシステム。
【請求項１０】
前記データブロックのサイズは、１６バイトであることを特徴とする請求項７に記載のシステム。
【請求項１１】
前記データブロックのサイズは、３２バイトであることを特徴とする請求項７に記載のシステム。
【請求項１２】
前記レジスタは、前記データムーバコントローラによって転送されるデータブロックの数を指定する第２のフィールドを含んでいることを特徴とする請求項１に記載のシステム。
【請求項１３】
前記第１のメモリは、共有メモリアーキテクチャ（ＳＭＡ）のスタティックランダムアクセスメモリ（ＳＲＡＭ）であることを特徴とする請求項１に記載のシステム。
【請求項１４】
前記第２のメモリは、同期式ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）であることを特徴とする請求項１に記載のシステム。
【請求項１５】
前記第１のメモリユニットおよび前記第２のメモリユニットは処理速度が異なることを特徴とする請求項１に記載のシステム。
【請求項１６】
前記レジスタは、データの転送が完了したとき割込みパルスを生成させるかどうかを指定する第２のフィールドを含んでいることを特徴とする請求項１に記載のシステム。
【請求項１７】
前記レジスタは、暗号ヘッダに埋め込まれており、前記暗号化エンジンによって処理される値を指定する第２のフィールドを含んでいることを特徴とする請求項１に記載のシステム。
【請求項１８】
前記レジスタは、暗号化の長さを指定する第２のフィールドを含んでいることを特徴とする請求項１に記載のシステム。
【請求項１９】
前記レジスタは、暗号化されたヘッダに埋め込まれており、前記暗号化エンジンによって処理される値を指定する第２のフィールドを含んでいることを特徴とする請求項１に記載のシステム。
【請求項２０】
前記レジスタは、データが移動されるとき前記データを暗号化するために前記暗号化エンジンによって使用される鍵（キー）を指定する第２のフィールドを含んでいることを特徴とする請求項１に記載のシステム。
【請求項２１】
前記鍵は、１２８ビット鍵であることを特徴とする請求項２０に記載のシステム。
【請求項２２】
第１のメモリユニットと第２のメモリユニットとの間において、データを暗号化し、転送する集積回路（ＩＣ）であって、
（ａ）データが前記メモリユニット間で転送されている間に、前記データを暗号化する暗号化エンジンと、
（ｂ）前記転送されるデータを前記暗号化エンジンによって暗号化するかどうかを指定する第１のフィールドを有する少なくとも１つのレジスタを含むデータムーバコントローラと、
を備えることを特徴とするＩＣ。
【請求項２３】
前記第１のフィールドが転送されるデータが暗号化されるべきことを指定する場合は、前記第１のフィールドは、前記暗号化エンジンによって実行される暗号化のタイプも指定することを特徴とする請求項２２に記載のＩＣ。
【請求項２４】
前記ＩＣは、第三世代パートナシッププロジェクト（３ＧＰＰ）のシステムと伴に動作し、前記暗号化エンジンによって実行される暗号化のタイプは標準化機密性暗号アルゴリズムｆ８であることを特徴とする請求項２３に記載のＩＣ。
【請求項２５】
前記ＩＣは、第三世代パートナシッププロジェクト（３ＧＰＰ）のシステムと伴に動作し、前記暗号化エンジンによって実行される暗号化のタイプは標準化完全性暗号アルゴリズムｆ９であることを特徴とする請求項２３に記載のＩＣ。
【請求項２６】
前記レジスタは、前記標準化完全性暗号アルゴリズムｆ９によって計算されるメッセージ認証コード（ＭＡＣ）値を指定する第２のフィールドを含んでいることを特徴とする請求項２５に記載のＩＣ。
【請求項２７】
前記レジスタは、データが前記第１のメモリユニットから前記第２のメモリユニットへ移動されるか、または前記第２のメモリユニットから前記第１のメモリユニットへ移動されるかを指定する第２のフィールドを含んでいることを特徴とする請求項２２に記載のＩＣ。
【請求項２８】
前記レジスタは、前記データムーバコントローラによって転送されるデータブロックのサイズを指定する第２のフィールドを含んでいることを特徴とする請求項２２に記載のＩＣ。
【請求項２９】
前記データブロックのサイズは、４バイトであることを特徴とする請求項２８に記載のＩＣ。
【請求項３０】
前記データブロックのサイズは、８バイトであることを特徴とする請求項２８に記載のＩＣ。
【請求項３１】
前記データブロックのサイズは、１６バイトであることを特徴とする請求項２８に記載のＩＣ。
【請求項３２】
前記データブロックのサイズは、３２バイトであることを特徴とする請求項２８に記載のＩＣ。
【請求項３３】
前記レジスタは、前記データムーバコントローラによって転送されるデータブロックの数を指定する第２のフィールドを含んでいることを特徴とする請求項２２に記載のＩＣ。
【請求項３４】
前記第１のメモリは、共有メモリアーキテクチャ（ＳＭＡ）のスタティックランダムアクセスメモリ（ＳＲＡＭ）であることを特徴とする請求項２２に記載のＩＣ。
【請求項３５】
前記第２のメモリは、同期式ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）であることを特徴とする請求項２２に記載のＩＣ。
【請求項３６】
前記第１のメモリユニットおよび前記第２のメモリユニットは処理速度が異なることを特徴とする請求項２２に記載のＩＣ。
【請求項３７】
前記レジスタは、データの転送が完了したとき割込みパルスを生成させるかどうかを指定する第２のフィールドを含んでいることを特徴とする請求項２２に記載のＩＣ。
【請求項３８】
前記レジスタは、暗号ヘッダに埋め込まれ、前記暗号化エンジンによって処理される値を指定する第２のフィールドを含んでいることを特徴とする請求項２２に記載のＩＣ。
【請求項３９】
前記レジスタは暗号化の長さを指定する第２のフィールドを含んでいることを特徴とする請求項２２に記載のＩＣ。
【請求項４０】
前記レジスタは、暗号化されたヘッダに埋め込まれており、前記暗号化エンジンによって処理される値を指定する第２のフィールドを含んでいることを特徴とする請求項２２に記載のＩＣ。
【請求項４１】
前記レジスタは、データが移動されるときデータを暗号化するために前記暗号化エンジンによって使用される鍵（キー）を指定する第２のフィールドを含んでいることを特徴とする請求項２２に記載のＩＣ。
【請求項４２】
前記鍵は、１２８ビット鍵であることを特徴とする請求項４１に記載のＩＣ。
【請求項４３】
第１のメモリユニットと第２のメモリユニットとの間において、データを暗号化し、転送する無線送／受信ユニット（ＷＴＲＵ）であって、
（ａ）データが前記メモリユニット間で転送されている間に、前記データを暗号化する暗号化エンジンと、
（ｂ）前記転送されるデータを前記暗号化エンジンによって暗号化するかどうかを指定する第１のフィールドを有する少なくとも１つのレジスタを含むデータムーバコントローラと、
を備えることを特徴とするＷＴＲＵ。
【請求項４４】
前記第１のフィールドが転送されたデータが暗号化されるべきことを指定する場合は、前記第１のフィールドは、前記暗号化エンジンによって実行される暗号化のタイプも指定することを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項４５】
前記ＷＴＲＵは、第三世代パートナシッププロジェクト（３ＧＰＰ）のシステムと伴に動作し、前記暗号化エンジンによって実行される暗号化のタイプは標準化機密性暗号アルゴリズムｆ８であることを特徴とする請求項４４に記載のＷＴＲＵ。
【請求項４６】
前記ＷＴＲＵは、第三世代パートナシッププロジェクト（３ＧＰＰ）のシステムと伴に動作し、前記暗号化エンジンによって実行される暗号化のタイプは標準化完全性暗号アルゴリズムｆ９であることを特徴とする請求項４４に記載のＷＴＲＵ。
【請求項４７】
前記レジスタは、前記標準化完全性暗号アルゴリズムｆ９によって計算されるメッセージ認証コード（ＭＡＣ）値を指定する第２のフィールドを含んでいることを特徴とする請求項４６に記載のＷＴＲＵ。
【請求項４８】
前記レジスタは、データが前記第１のメモリユニットから前記第２のメモリユニットへ移動されるか、または前記第２のメモリユニットから前記第１のメモリユニットへ移動されるかを指定する第２のフィールドを含んでいることを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項４９】
前記レジスタは、前記データムーバコントローラによって転送されるデータブロックのサイズを指定する第２のフィールドを含んでいることを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項５０】
前記データブロックのサイズは、４バイトであることを特徴とする請求項４９に記載のＷＴＲＵ。
【請求項５１】
前記データブロックのサイズは、８バイトであることを特徴とする請求項４９に記載のＷＴＲＵ。
【請求項５２】
前記データブロックのサイズは、１６バイトであることを特徴とする請求項４９に記載のＷＴＲＵ。
【請求項５３】
前記データブロックのサイズは、３２バイトであることを特徴とする請求項４９に記載のＷＴＲＵ。
【請求項５４】
前記レジスタは、前記データムーバコントローラによって転送されるデータブロックの数を指定する第２のフィールドを含んでいることを特徴とするＷＴＲＵ。
【請求項５５】
前記第１のメモリは、共有メモリアーキテクチャ（ＳＭＡ）のスタティックランダムアクセスメモリ（ＳＲＡＭ）であることを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項５６】
前記第２のメモリは、同期式ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）であることを特徴とする請求項４３に記載のＷＴＲＵＣ。
【請求項５７】
前記第１のメモリユニットおよび前記第２のメモリユニットは処理速度が異なることを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項５８】
前記レジスタは、データの転送が完了したとき割込みパルスを生成させるかどうかを指定する第２のフィールドを含んでいることを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項５９】
前記レジスタは、暗号ヘッダに埋め込まれ、前記暗号化エンジンによって処理される値を指定する第２のフィールドを含んでいることを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項６０】
前記レジスタは、暗号化の長さを指定する第２のフィールドを含んでいることを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項６１】
前記レジスタは、暗号化されたヘッダに埋め込まれており、前記暗号化エンジンによって処理される値を指定する第２のフィールドを含んでいることを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項６２】
前記レジスタは、データが移動されるとき前記データを暗号化するために前記暗号化エンジンによって使用される鍵（キー）を指定する第２のフィールドを含んでいることを特徴とする請求項４３に記載のＷＴＲＵ。
【請求項６３】
前記鍵は、１２８ビット鍵であることを特徴とする請求項６２に記載のＷＴＲＵ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、無線通信アプリケーション用に使用できるデータ処理の分野に関する。より詳細には、本発明は、データムーバコントローラと暗号化エンジンを使用して、２種類のメモリデバイス間でデータを暗号化し、転送することに関する。
【背景技術】
【０００２】
第三世代パートナシップグループ(Third Generation Partnership Group：３ＧＰＰ)の多くの初期のモデムは、レイヤ１のプロトコルをソフトウェアによって実現している。データレートが増加するのに伴い、いくつかの機能をハードウェアでサポートする必要性が要求されている。３ＧＰＰ、グローバルシステム(Global System for Mobile Communications：ＧＳＭ)やユニバーサル移動通信システム(Universal Mobile Telecommunications Systems：ＵＭＴＳ)などの無線通信システムでは、最近、より数値計算型であるオペレーションのいくつかに対してアクセラレータとして働くハードウェアモデムが開発されている。
【０００３】
このようなオペレーションの１つとして、暗号化(ciphering)がある。この暗号化においては、暗号鍵と実際のデータ暗号化が取り扱われるため、必要とされる処理能力は取り扱われるデータ量に比べて増加している。３ＧＰＰシステムのセキュリティアーキテクチャでは、２つの標準化アルゴリズムが存在している。機密性暗号化アルゴリズム“ｆ８”(confidentially cipher algorithm)と完全性暗号化アルゴリズム“ｆ９”(integrity cipher algorithm)である。
【０００４】
【特許文献１】米国特許出願第10/414,125号、２００３年４月１５日出願、「物理層処理で使用されるソフトウェアでパラメータ化可能制御ブロック(Software Parameterizable Control Blocks For Use In Physical Layer Processing)」
【発明の開示】
【発明が解決しようとする課題】
【０００５】
データが一方のメモリ（すなわち、レイヤ）から別のメモリへ転送されている間に、暗号化計算を効率的に実行する手段が望まれている。
【課題を解決するための手段】
【０００６】
データ処理システムは、例えば、共有メモリアーキテクチャ(share memory architecture ：ＳＭＡ)のスタティックランダムアクセスメモリ(static random access memory：ＳＲＡＭ)とダブルデータレート(double data rate：ＤＤＲ)の同期式ダイナミックランダムアクセスメモリ(synchronous dynamic random access memory：ＳＤＲＡＭ)との間のように、第１のメモリユニットと第２のメモリユニットとの間で、データを暗号化し、転送する。本システムは、暗号化エンジンおよびデータムーバコントローラ(data mover controller)を備えている。データムーバコントローラは、転送されるデータを暗号化エンジンによって暗号化するかどうかを指定するフィールドを有する少なくとも１つのレジスタを備えている。このフィールドが転送されるデータを暗号化することを指定する場合は、このフィールドは、３ＧＰＰ標準化機密性暗号化アルゴリズム“ｆ８”または完全性暗号化アルゴリズム“ｆ９”のように、暗号化エンジンによって実行される暗号化のタイプを指定することもできる。
【０００７】
このレジスタは、標準化完全性暗号化アルゴリズムｆ９の計算によって計算されるメッセージ認証コード(message authentication code：ＭＡＣ)値を指定する別のフィールドを備えることができる。
【０００８】
このレジスタは、データが第１のメモリユニットから第２のメモリユニットへ移動されるか、または第２のメモリユニットから第１のメモリユニットへ移動されるかを指定する別のフィールドをさらに備えることができる。第１のメモリユニットと第２のメモリユニットは処理速度が異なっても良い。
【０００９】
このレジスタは、データムーバコントローラによって転送されるデータブロックのサイズを指定する別のフィールドをさらに備えることができる。データブロックのサイズとしては、４バイト、８バイト、１６バイト、または３２バイトがある。
【００１０】
このレジスタは、データムーバコントローラによって転送されるデータブロックの数を指定する別のフィールドをさらに備えることができる。
【００１１】
このレジスタは、データの転送が完了したとき割込みパルスを生成させるかどうかを指定する別のフィールドをさらに備えることができる。
【００１２】
このレジスタは、暗号ヘッダ(cipher header)に埋め込まれ、暗号化エンジンによって処理される値を指定する別のフィールドをさらに備えることができる。
【００１３】
このレジスタは、暗号長さ(encryption length)を指定する別のフィールドをさらに備えることができる。
【００１４】
このレジスタは、暗号化されたヘッダ(encrypted header)に埋め込まれ、暗号化エンジンによって処理される値を指定する別のフィールドをさらに備えることができる。
【００１５】
このレジスタは、データの移動時にデータを暗号化するために暗号化エンジンによって使用される鍵を指定する別のフィールドをさらに備えることができる。鍵としては、１２８ビット鍵がある。
【００１６】
以下、本発明の理解を容易にするために、例を示して、添付図面を参照しながら本発明について詳しく説明する。
【発明を実施するための最良の形態】
【００１７】
以下では、図面を参照しながら好適な実施形態について説明するが、図面全体を通して同じの要素は同じ符号によって示されている。
【００１８】
好ましくは、本明細書に開示されている本発明は、無線送受信ユニット(wireless transmit/receive unit ：ＷＴＲＵ)および／またはノードＢに組み込まれる。しかし、ここで意図していることは、どのような無線通信方式においても、本発明の利点が得られるということである。
【００１９】
以下において、ＷＴＲＵとしては、ユーザ機器、移動局、固定または移動加入者ユニット、ページャ、そのほかに無線環境で動作する能力を備えた任意タイプの装置などがあるが、これらに限定されない。さらに、ノードＢとしては、基地局、サイトコントローラ、アクセスポイント、そのほかに無線環境においてインタフェースとなる装置などがあるが、これらに限定されない。
【００２０】
本発明の特徴は集積回路(ＩＣ)に組み込むことも、多数の相互接続された部品を含む回路の中において構成することも可能である。
【００２１】
本発明は、時分割二重通信(time division duplex：ＴＤＤ)、周波数分割二重通信(frequency division duplex ：ＦＤＤ)、符号分割多元接続(code division multiple access ：ＣＤＭＡ)、ＣＤＭＡ２０００、時分割同期ＣＤＭＡ(time division synchronous CDMA  ＴＤＳＣＤＭＡ)、直交周波数分割多重(ＯＦＤＭ)などを使用する通信システムに適用可能である。
【００２２】
本発明によれば、他の多くのモデムを実装したものと同じように、データ処理機能はハードウェアモジュール（アクセラレータ）によって実現している。本発明は、既存のメモリインスタンス(memory instances)の数を削減するために共有メモリを使用している。ハードウェアモジュールとプロセッサは、メモリにアクセスする。
【００２３】
多数の小型専用メモリを使用するのではなく、シングルメモリを使用することにより、モデム用などといった、特定用途向け集積回路(ＡＳＩＣ)バージョンの回路のダイサイズ(die size)は縮減されている。このメモリは、典型的には、かなりの高速化が要求されている。高速メモリ（ＳＲＡＭ）は高価であり、面積の観点では、他の形態のメモリ、つまり、典型的にはＤＲＡＭほどには高密度でない。例えば、特許文献１を参照。
【００２４】
本発明によれば、プロセッサが大量のデータをストアするために利用できる他のメモリも用意されている。このメモリは、外部の商用化ＤＲＡＭまたはＳＤＲＡＭチップによって実現されている。この大型で低速のメモリの使用例には、アプリケーション用に処理されるデータをストアしておくための待ち行列（キュー）や他のバッファを並べ替えることがある。
【００２５】
本発明によれば、データムーバコントローラは、高速のハードウェアアクセス可能メモリ（ＳＲＡＭ）と低速で高密度メモリ（ＤＲＡＭ）との間でデータを移動させるときにハードウェアアクセラレータとして構成されている。もしこのハードウェアアクセラレータがないと、プロセッサはソフトウェアのループを使用してデータをシャッフル (shuffle)する必要があるため、ＭＩＰＳで測ったときプロセッサの計算リソースを大量に消費することを意味する。
【００２６】
データは、プロトコルデータユニット(Protocol Data Unit：ＰＤＵ)およびサービスデータユニット(Service Data Unit：ＳＤＵ)と呼ばれるブロック単位で移動されることが多い。これらのブロックは、３ＧＰＰ標準に従って暗号化することができる。暗号化(encrypting)と解読(decrypting)のプロセスは、プロセッサに非常に大きな負担にもなっている。データをアクセスし、処理し、再びメモリに書き戻すことも要求されている。
【００２７】
本発明によれば、ダイレクトメモリアクセス(Direct Memory Access：ＤＭＡ)の機能は、１つのハードウェアアクセラレータにおいて暗号化と解読が結合されているので、データムーバコントローラはデータを移動させるだけでなく、データ移動プロセス期間にデータブロックを暗号化または解読するようにもなっている。ハードウェアが支援しており、データはすでに移動される過程にあるので、これにより時間が節減されることになる。従って、ハードウェアアクセラレータが別々に実装されている場合よりも、アクセス回数が少なくて済むことになる。
【００２８】
いくつかの実装では、各々のハードウェアアクセラレータは独自の内部メモリとインタフェース（バッファ）メモリをもっている。多くのメモリインスタンスが豊富化すると、これらのデザインをＡＳＩＣで実現したもののサイズは大きくなる。
【００２９】
メモリインスタンスの数は、インタフェース（バッファ）メモリの多くを結合してシングル共有メモリにすると削減することができる。このメモリは、共通メモリコントローラを介してハードウェアアクセラレータのすべてによってアクセスされる。このメモリは、典型的には高速ＳＲＡＭを使用して実現されている。制御ソフトウェアは、それぞれのオペレーションを実行するようにハードウェアアクセラレータに指示し、その中には、共有メモリのどこから入力されるデータをフェッチし、共有メモリのどこに処理結果をストアしておくかの指示も含まれている。本発明によれば、すべてのレイヤ１オペレーション用にアクセラレータが用意されている。
【００３０】
上位レイヤのコントロール（レイヤ２とレイヤ３）もこの共有メモリにアクセスしてレイヤ１と通信し、送信すべきデータを提供し、受信したデータを受け取る。送信または収集するようにスケジュールされたアプリケーションからのデータを保存しておき、アプリケーションへの送出に備えてデータパケットをアセンブルするために、大型で低速の低密度メモリが、しばしば、レイヤ２／３のプロセスによって使用される。
【００３１】
情報パケットが受信されるか、あるいは送信されるようにスケジュールされたとき、この低速で低密度のメモリと高速の（より高価な）メモリとの間でデータを移動させる必要がある。これらのパケットも、場合によっては、暗号化および／または解読しなければならないことがある。
【００３２】
データを移動させ、暗号化を支援するアクセラレータは、データムーバコントローラを形成するように結合されている。このように結合すると、実行する必要のあるアクセス数が減少し、プロセッサはデータを移動させ、暗号化する高価なプロセスから解放されることになる。
【００３３】
データがレイヤ１ならびにレイヤ２もしくはレイヤ３の間で移動されるとき、追加の制御レイヤが、データパケットを包み込まれなければ（ｗｒａｐｐｅｄ  ａｒｏｕｎｄ）ならないことがよくある。これは、データパケットに付加される「ヘッダ」の形でしばしば表されている。このようにしたのは、データムーバコントローラのアドレス指定方式がソースおよび／またはデスティネーションアドレスにオフセットを含めることを可能にしているからである。これにより、プロセッサはデータを一方のメモリ空間から別のメモリ空間に移動させることができるが、デスティネーションデータは、例えば、３バイトだけオフセットされている。移動が完了すると、プロセッサは該当ヘッダ情報を、オフセットを通してその目的のために予約されていたエリアに書き込むことができる。これにより、レイヤ２または３プロトコルに合わせてデータをフォーマッティングするときに時々起こるデータシャフリング(data shuffling)が低減される。
【００３４】
本発明は、ＳＭＡ  ＳＲＡＭとＤＤＲ  ＳＤＲＡＭとの間でデータを転送できるデータ処理システムである。このシステムは、ＳＤＲＡＭ内の一方のロケーションから同じＳＤＲＡＭ内の別のロケーションへデータを移動させることもできる。データが移動されている間、そのデータは、そのようにプログラムされていれば、暗号化計算を行なうロジックに渡すことができる。
【００３５】
図１は、本発明の好適な実施形態に従ってＳＭＡ  ＳＲＡＭメモリ１０５とＳＤＲＡＭ１１０との間でデータを転送し、その間に同時にデータを暗号化または解読するために使用されるデータ処理システム１００の例を示すブロック図である。ＳＭＡメモリコントローラ１１５は、ＳＭＡ  ＳＲＡＭ１０５とデータ処理システム１００との間のインタフェースの働きをする。ＳＤＲＡＭメモリコントローラ１２０は、ＳＤＲＡＭ１１０とデータ処理システム１００との間のインタフェースの働きをする。プロセッサ１２５（すなわち、制御ＣＰＵ）は、データ処理システム１００、ＳＭＡ  ＳＲＡＭ１０５、ＳＭＡメモリコントローラ１１５、ＳＤＲＡＭ１１０およびＳＤＲＡＭメモリコントローラ１２０に対する制御を維持している。
【００３６】
データ処理システム１００は、データムーバコントローラ１２８、暗号化エンジン１３０、入力データレジスタ１３５、１４０、出力データレジスタ１４５、１５０、入力マルチプレクサ（ＭＵＸ）１５５、出力ＭＵＸ１６０、および先入れ先出し(first-in first-out：ＦＩＦＯ)レジスタ１６５を備えている。
【００３７】
データムーバコントローラ１２８は、ＳＤＲＡＭ１１０のメモリ空間内で最初にアクセスされるデータワードのアドレスをＳＤＲＡＭ１１０のアドレスレジスタに書き込むことによってプログラムされている。ＳＭＡ  ＳＲＡＭ１０５のアドレスレジスタには、ＳＭＡ  ＳＲＡＭ１０５のメモリ空間内で最初にアクセスされるデータワードのアドレスが書き込まれる。“Num_blocks_to_move”（移動ブロック数）レジスタには、移動するデータブロックの数が書き込まれる。モードレジスタ(mode register)はデータ移動の方向を定義する（すなわち、“０”＝ＳＭＡ  ＳＲＡＭ１０５からＳＤＲＡＭ１１０へ、“１”＝ＳＤＲＡＭ１１０からＳＭＡ  ＳＲＡＭ１０５へ）。各ブロックのサイズも、例えば、ブロック当たり３２ビットワードの数として定義される。転送される３２ビットワードの総数は、“num_blocks_to_move_*block_size”（移動ブロック数＊ブロックサイズ）として指定される。データ処理システム１００のデータムーバコントローラ１２８内のモードレジスタは、データ転送が行なわれるときデータを直接的に転送させるかどうか、あるいはデータを暗号化エンジン１３０に渡すかどうかを指定する。モードレジスタに書き込まれると、データムーバコントローラ１２８はデータ移動プロシージャを開始する。データ転送が完了したとき、オプションとして割り込みがデータムーバコントローラ１２８によってセットされる。
【００３８】
以下に説明するステップバイステップの例は、データを暗号化エンジン１３０に渡している間に、データを一方のメモリ（例えば、ＳＭＡ  ＳＲＡＭ１０５）から別のメモリ（例えば、ＳＤＲＡＭ１１０）に移動するためにデータ処理システム１００によって使用される手順を示している。ＳＭＡ  ＳＲＡＭ１０５にストアされたデータブロックをＳＤＲＡＭ１１０に移動するための判断が行なわれる。そのあと、プロセッサ１２５は制御ブロックをＳＭＡ  ＳＲＡＭ１０５に書き込む。制御ブロックは、意図するオペレーション用にデータムーバコントローラ１２８を構成するために必要なパラメータのすべてを収めている。プロセッサ１２５は、プログラムされた入出力オペレーションを通して、制御信号（すなわち、開始パルス）をデータムーバコントローラ１２８に出力し、データ移動オペレーションを開始する。データムーバコントローラ１２８（事実上ステートマシン）は制御信号を受け取ると、一連のステートを順番に実行して制御ブロックをＳＭＡ  ＳＲＡＭ１０５から取り出す。これは、ＳＭＡメモリ１０５からの要求を、ＳＭＡメモリコントローラ１１５を通して正しくアサート(assert)することにより行なわれる。ＳＭＡメモリ１０５からのデータはレジスタ１１５に入力され、データムーバコントローラ１２８内の該当構成レジスタに渡される。
【００３９】
関連付けられた制御パラメータが受信されると、そこに収められた情報が解釈され、どのタイプの機能を実行させるかについて、さらにデータムーバコントローラ１２８に指示する。この例では、データはＳＭＡ  ＳＲＡＭ１０５からＳＤＲＡＭ１１０に移動されることになる。該当する場合には、データムーバコントローラ１２８は、関連レジスタに入っている暗号ヘッダ情報を入力レジスタ１３５、入力ＭＵＸ１５５、ＦＩＦＯ１６５、暗号化エンジン１３０、ＭＵＸ１６０に渡し、出力レジスタ１５０とＳＤＲＡＭメモリコントローラ１２０を通してＳＤＲＡＭ１１０に出力させる。データムーバコントローラ１２８は、適切なステートを順番に実行し、適切なアイテムが転送されるまでＳＭＡ  ＳＲＡＭ１０５からデータを転送することを続ける。
【００４０】
要求された場合は、データムーバコントローラ１２８内のレジスタによって割り込みが引き起こされ、データ移動が完了したことを通知する。そのあと、データムーバコントローラ１２８は、移動すべき別の制御ブロックがあるかどうかをチェックして確かめる。もしあれば、もう１つのデータムーバコントローラの手順が開始される。
【００４１】
データムーバコントローラ１２８は、バーストアクセス(burst access)を使用してＤＤＲ  ＳＤＲＡＭ１１０との間でデータを転送し、シングルワードアクセス(single word access)を使用してＳＭＡ  ＳＲＡＭ１０５との間でワードを転送する。シングルＳＤＲＡＭバーストアクセスがＳＤＲＡＭページ境界を交差（ｃｒｏｓｓ）しないようにブロックサイズとＤＤＲ  ＳＤＲＡＭ１１０のアドレスがセットされることを保証するのは、プログラマの責任である。
【００４２】
図２は、図１のデータムーバコントローラ１２８内のレジスタ２０５−２５５の構成例を示す図である。
【００４３】
図３は、ＳＭＡ  ＳＲＡＭ１０５へのまたはＳＤＲＡＭ１１０へのデータ転送を開始するためにＳＤＲＡＭ１１０にソースアクセス（つまり、読取り）するときの、データムーバコントローラ１２８の開始アドレスを定義するレジスタを示す図である。このアドレスはバイトアドレスであり、「モード」レジスタに指定されているブロックサイズに一致するアドレスに調整されて（ａｌｉｇｎ）いなければならない。このレジスタに書き込まれる値は、ＳＤＲＡＭアドレス空間の先頭に関係している。アドレスレジスタには、データムーバコントローラ１２８がアイドル状態にあるときだけ書き込まれる。最下位ビットはアクセス時には無視されるが、ワード内のデータのオフセットを指定するために暗号化時に使用される。
【００４４】
図４は、ＳＭＡ  ＳＲＡＭ１０５からまたはＳＤＲＡＭ１１０からのデータ転送を開始するためにＳＤＲＡＭ１１０へのデスティネーションアクセス（つまり、書込み）のときのデータムーバコントローラの開始アドレスを定義するレジスタ２１５を示す図である。このアドレスはバイトアドレスであり、「モード」レジスタに指定されているブロックサイズに一致するアドレスに調整されていなければならない。このレジスタに書かれる値は、ＳＤＲＡＭアドレス空間の先頭に関係している。アドレスレジスタには、データムーバコントローラ１２８がアイドル状態にあるときだけ書き込まれる。最下位ビットはアクセス時には無視されるが、ワード内のデータのオフセットを指定するために暗号化時に使用される。
【００４５】
図５は、ＳＭＡ  ＳＲＡＭ１０５へのソースアクセス（つまり、読取り）のときのデータムーバコントローラ１２８の開始アドレスを定義するレジスタ２１０を示す図である。このレジスタに書かれる値は、ＳＭＡアドレス空間の先頭に関係している。アドレスレジスタには、データムーバコントローラ１２８がアイドル状態にあるときだけ書き込まれる。最下位ビットはアクセス時には無視されるが、ワード内のデータのオフセットを指定するために暗号化時に使用される。
【００４６】
図６は、ＳＭＡ  ＳＲＡＭ１０５へのデスティネーションアクセス（つまり、書込み）のときのデータムーバコントローラ１２８の開始アドレスを定義するレジスタ２２０を示す図である。データムーバコントローラ１２８のための開始アドレスは、データムーバコントローラ１２８がＳＭＡ  ＳＲＡＭ１０５にアクセスするために指定される。このレジスタに書かれる値は、ＳＭＡアドレス空間の先頭に関係している。アドレスレジスタには、データムーバコントローラ１２８がアイドル状態にあるときだけ書き込まれる。最下位ビットはアクセス時には無視されるが、ワード内のデータのオフセットを指定するために暗号化時に使用される。
【００４７】
図７は、ＳＤＲＡＭ１１０とＳＭＡ  ＳＲＡＭ１０５の間で移動されるブロックの数を定義するレジスタ２２５を示す図である。開始時に、データムーバコントローラは、このレジスタ内の値で表されたブロック数を転送する。各々のブロックは、モードレジスタの“ｂｓ”フィールドに指定された３２ビットワードの数からなっている。
【００４８】
図８は、データムーバコントローラ１２８のモードを指定するモードレジスタ２３０を示す図である。このモードレジスタ２３０内の種々のフィールド８０５、８１０、８１５、８２０、８２５は、オペレーション状態にあるときのデータムーバコントローラのアクティビティを制御するために書き込むことができる。
【００４９】
“ｆ”フィールド８０５は読み取り専用であり、データ移動オペレーションが完了したかどうかをプロセッサ１９５に通知する（つまり、ロジック０は未完了、ロジック１は完了を表している）。
【００５０】
“ｃ”フィールド８１０は、データを暗号化エンジンに渡すかどうか、渡すならば、どのような種類の暗号化を行なうかを示すために書くことができる。“ｃ”フィールド８１０が“００”のときは、暗号化は行なわれず、データがソースのアドレス空間からデスティネーションのアドレス空間に渡されるだけである。“ｃ”フィールド８１０が“０１”のときは、データはソースのアドレス空間からデスティネーションのアドレス空間に移動されるが、暗号化エンジン１４５に渡されて、データ移動と同時に３ＧＰＰ“ｆ８”暗号アルゴリズムを使用して暗号化および／または解読される。“ｃ”フィールド８１０が“１０”のときは、データはソースのアドレス空間からアクセスされ、３ＧＰＰ“ｆ９”暗号アルゴリズムを使用して暗号化エンジン１４５に渡されるが、データはストアされない。暗号化エンジン１４５は鍵と関連制御レジスタ値を使用してメッセージ認証コード(Message Authentication Code)値を計算し、この値はレジスタ２５５を通してプロセッサ１９５に利用可能となる。
【００５１】
“ｉ”フィールド８１５は、データの移動が完了したとき割り込みを引き起こすようにプログラムすることができる。“ｉ”フィールド８１５が“０”のときは、割り込みは引き起こされない。“ｉ”フィールド８１５が“１”のときは、データ移動オペレーションが完了したとき割り込みが引き起こされる。
【００５２】
“ｄ”フィールド８２０は、ソースとデスティネーションのアドレス空間として使用される１つまたは２つ以上のメモリを特定し、データ移動の方向を指定する。例えば、“ｄ”フィールド８２０が“００”のときは、データはＳＭＡ  ＳＲＡＭ１０５からＳＤＲＡＭ１１０へ移動される。“ｄ”フィールド８２０が“１０”のときは、データはＳＤＲＡＭ１１０からＳＭＡ  ＳＲＡＭ１０５へ移動される。“ｄ”フィールド８２０が“０１”のときは、データはＳＤＲＡＭ１１１０内の一方のロケーションから他方のロケーションへ移動される。“ｄ”フィールド８２０は、アクセス要求を通してどのメモリアドレスポインタを呼び出すかを判断するために使用される。
【００５３】
“ｂｓ”フィールド８２５は、移動される各アクセスブロックのサイズを定義する。“ｂｓ”フィールド８２５は、ブロックアドレスごとに１ワード（“００”＝４バイト）、２ワード（“０１”＝８バイト）、４ワード（“１０”＝１６バイト）、または８ワード（“１１”＝３２バイト）を示す値にセットすることができる。移動および／または暗号化されるワードの数は、“ｂｓ”フィールド８２５と移動するブロックの数をプログラミングすることによって事前に決定される。総データ移動は、“ｂｓ”フィールド８２５によって表された値とレジスタ２２５に指定されたブロックの数の積に基づいて計算される。
【００５４】
図９は、暗号ヘッダに埋め込まれるカウント値を定義するレジスタ２３５を示す図である。
【００５５】
図１０は、暗号ヘッダに埋め込まれる「フレッシュ」値を定義するレジスタ２４０を示す図である。
【００５６】
図１１は、暗号化ヘッダに入れておく必要のあるベアラ(bearer)と方向値および暗号化する総ビット数を定義するレジスタを示す図である。レジスタ２３５、２４０および２４５は、プロセッサ１９５によって書き込まれる値で、暗号ヘッダに入れられるように３ＧＰＰ標準によって定義されている値を収めている。暗号化がデータ移動に含まれているときは、これらの値はデータムーバコントローラによって該当ロケーションに挿入される。暗号化長フィールドは、どれだけのビットが暗号化エンジンに渡されるかを指定する。ブロックの数およびブロック当たりのワード数はプログラマによって事前に決定され、この長さを表していなければならない。
【００５７】
図１２は、データ移動期間に暗号化のために使用される１２８ビット鍵を定義するレジスタ２５０を示す図である。鍵値は、ｆ８とｆ９暗号アルゴリズムを実行するときデータを暗号化／解読するために３ＧＰＰ標準に記述されているように使用される。
【００５８】
図１３は、計算されたＭＣＡ値を提供するレジスタ２５５を示す図である。ｆ９暗号アルゴリズムは、鍵値とこのアルゴリズムに渡されたデータストリームの値を使用してシグネチャを作成する。このシグネチャは、システムで使用するためにＭＡＣとして報告される。
【００５９】
ここで開示されているレジスタの説明は本質的に例示であるので、同じ機能を実行するために制御フィールドを組み合わせたものに基づいて、他の任意の定義を派生させることが可能である。
【００６０】
好適な実施形態を参照して本発明について説明してきたが、この分野の当業者に自明であるように、これらの実施形態は、特許請求の範囲に記載されている本発明の範囲内において種々態様に変形することが可能である。
【図面の簡単な説明】
【００６１】
【図１】本発明の好適実施形態に従ってデータを暗号化し、一方のメモリから他方のメモリに転送するデータ処理システムを示す概略図である。
【図２】データムーバコントローラに組み込まれているレジスタの構成例を示す図である。
【図３】ＳＤＲＡＭからソースアクセスするときのデータムーバコントローラ開始アドレスを定義するレジスタを示す図である。
【図４】ＳＤＲＡＭにデスティネーションアクセスするときのデータムーバコントローラの開始アドレスを定義するレジスタを示す図である。
【図５】ＳＭＡメモリにソースアクセスするときのデータムーバコントローラの開始アドレスを定義するレジスタを示す図である。
【図６】ＳＭＡメモリにデスティネーションアクセスするときのデータムーバコントローラの開始アドレスを定義するレジスタを示す図である。
【図７】ＳＤＲＡＭメモリとＳＭＡメモリの間で移動されるブロックの数を定義するレジスタを示す図である。
【図８】データムーバコントローラのモードを指定するレジスタを示す図である。
【図９】暗号ヘッダに埋め込まれるカウント値を定義するレジスタを示す図である。
【図１０】暗号ヘッダに埋め込まれるフレッシュ値を定義するレジスタを示す図である。
【図１１】暗号化ヘッダに入れておく必要のあるベアラと方向値および暗号化される総ビット数を定義するレジスタを示す図である。
【図１２】データ移動期間に暗号化するために使用される１２８ビット鍵を定義するレジスタを示す図である。
【図１３】メッセージ認証コード（ＭＡＣ）の計算値を収めているレジスタを示す図である。
【図１】
2008500638.tif 000003
【図２】
2008500638.tif 000004
【図３】
2008500638.tif 000005
【図４】
2008500638.tif 000006
【図５】
2008500638.tif 000007
【図６】
2008500638.tif 000008
【図７】
2008500638.tif 000009
【図８】
2008500638.tif 000010
【図９】
2008500638.tif 000011
【図１０】
2008500638.tif 000012
【図１１】
2008500638.tif 000013
【図１２】
2008500638.tif 000014
【図１３】
2008500638.tif 000015
【国際調査報告】
2008500638.tif 000016
2008500638.tif 000017
2008500638.tif 000018