(57)【要約】効率的なデータ処理の装置および方法は、ソフトウェアによって事前にプログラムされたハードウェアコンポーネントを含む。各ハードウェアコンポーネントは、他のものをトリガしてそのタスクを完了させる。事前にプログラムされた最後のハードウェアタスクが完了すると、ハードウェアコンポーネントは、ソフトウェア割込を出す。【選択図】      図３
2013502015.tif 000002
【特許請求の範囲】
【請求項１】
データ処理方法であって：
第１のタスク待ち行列と関連付けられた第１のハードウェアコンポーネントによって、第１のタスクのセットを実行する命令を受信することと、
第２のタスク待ち行列と関連付けられた第２のハードウェアコンポーネントによって、第２のタスクのセットを実行する命令を受信することと、
前記第１のハードウェアコンポーネントにおいて、前記第１のタスクのセットを実行するためのトリガメッセージを受信することと、
前記第１のタスクのセットの完了に応じて、前記第１のハードウェアコンポーネントによって、前記第２のタスクのセットを実行するためのトリガメッセージを前記第２のハードウェアコンポーネントに送信することと
を備える方法。
【請求項２】
前記第１のタスクのセットは、第１のメモリからデータのブロックを読み取り、前記データのブロックを第２のメモリに記憶するタスクを含む、請求項１に記載の方法。
【請求項３】
前記第２のタスクのセットは、前記第２のメモリに記憶されたデータのブロックを処理するタスクを含む、請求項２に記載の方法。
【請求項４】
前記第１のハードウェアコンポーネントは、前記第２のタスク待ち行列と関連付けられた書込ポインタを移動することによって、前記第２のハードウェアコンポーネントをトリガする、請求項１に記載の方法。
【請求項５】
前記第２のタスクのセットが完了した後に、前記第２のハードウェアコンポーネントによって、トリガメッセージを前記第１のハードウェアコンポーネントに送信することと、
前記第１のハードウェアコンポーネントによって、前記第１のタスク待ち行列にさらなるタスクが存在するか否かを判定することと、
さらなるタスクが前記第１のタスク待ち行列に存在しない場合、ソフトウェアコンポーネントにソフトウェア割込を送信することと
をさらに備える、請求項１に記載の方法。
【請求項６】
前記第２のハードウェアコンポーネントによって、前記処理されたデータのブロックの長さが、閾値の長さを超える場合を決定することと、ここにおいて、前記閾値の長さは、前記処理されたデータの可能な最大の長さよりも短く、
前記第２のハードウェアコンポーネントによって、前記処理されたデータのブロックの長さが前記閾値の長さを超えることを示すソフトウェア割込を生成することと
をさらに備える、請求項３に記載の方法。
【請求項７】
ソフトウェアコンポーネントによって、前記閾値の長さを超える前記データのブロックの一部を移動することと、
前記ソフトウェアコンポーネントによって、前記ブロックのデータの残りの部分を移動するように、前記第１のハードウェアコンポーネントをトリガすることと
をさらに備える、請求項６に記載の方法。
【請求項８】
前記閾値の長さは、前記ソフトウェア割込の周波数に依存して動的に調整される、請求項６に記載の方法。
【請求項９】
トラフィックテンプレートを前記第２のハードウェアコンポーネントに提供することをさらに備え、前記トラフィックテンプレートは、前記第２のハードウェアコンポーネントが動作を行うための一連の条件を備える、請求項３に記載の方法。
【請求項１０】
前記第２のハードウェアコンポーネントは、前記データのブロックを、前記トラフィックテンプレートと比較する、請求項９に記載の方法。
【請求項１１】
前記第２のハードウェアコンポーネントは、前記データのブロックが、前記トラフィックテンプレートの前記一連の条件のうちの１つと一致する場合に、前記データのブロック上で動作する、請求項１０に記載の方法。
【請求項１２】
前記第２のハードウェアコンポーネントは、前記データのブロックが、前記トラフィックテンプレートの前記一連の条件のいずれとも一致しない場合に、前記データのブロックをソフトウェアモジュールに送る、請求項１０に記載の方法。
【請求項１３】
データ処理装置であって、
プロセッサと、
第１のメモリと、
第２のメモリと、
第１のタスク待ち行列と関連付けられた第１のハードウェアコンポーネントと、
第２のタスク待ち行列と関連付けられた第２のハードウェアコンポーネントと
を備え、
複数のタスクは、前記第１のタスク待ち行列に事前に記憶され、複数の第２のタスクは、前記第２のタスク待ち行列に事前に記憶され、前記第１のハードウェアコンポーネントは、前記複数の第１のタスクの実行を開始させるためのトリガを受信し、前記複数の第２のタスクを実行させるために、前記第２のハードウェアコンポーネントにトリガを出すように構成される、データ処理装置。
【請求項１４】
前記複数の第１のタスクのうちの少なくとも１つは、データのブロックを第１のメモリから読み取り、前記データのブロックを前記第２のメモリに記憶するタスクである、請求項１３に記載のデータ処理装置。
【請求項１５】
前記複数の第２のタスクのうちの少なくとも１つは、前記第２のメモリに記憶されたデータのブロックを処理するタスクである、請求項１４に記載のデータ処理装置。
【請求項１６】
前記第１のハードウェアコンポーネントは、データムーバである、請求項１３に記載のデータ処理装置。
【請求項１７】
前記第２のハードウェアコンポーネントは、ハードウェアアクセラレータである、請求項１３に記載のデータ処理装置。
【請求項１８】
前記第２のハードウェアコンポーネントは、前記処理されたデータのブロックの長さを閾値の長さと比較するための比較器を備え、
前記第２のハードウェアコンポーネントは、前記処理されたデータのブロックの長さが、前記閾値の長さよりも大きい場合に、ソフトウェア割込を生成する、
請求項１５に記載のデータ処理装置。
【請求項１９】
前記閾値の長さは、前記ソフトウェア割当の周波数に依存して、動的に調整される、請求項１８に記載のデータ処理装置。
【請求項２０】
一連の条件を備えるトラフィックテンプレートをさらに備え、前記第２のハードウェアコンポーネントは、前記データのブロックを前記トラフィックテンプレートを比較する、請求項１５に記載のデータ処理装置。
【請求項２１】
少なくとも１つのプロセッサであって、
第１のハードウェアコンポーネントによって第１のタスクのセットを実行する命令を受信するための第１のモジュールと、
第２のハードウェアコンポーネントによって第２のタスクのセットを実行する命令を受信するための第２のモジュールと、
前記第１のタスクのセットを実行するトリガメッセージを受信するための第３のモジュールと、
前記第１のハードウェアコンポーネントから前記第２のハードウェアコンポーネントに、前記第２のタスクのセットを実行するトリガメッセージを出すための第４のモジュールと
を備える少なくとも１つのプロセッサ。
【請求項２２】
コンピュータ可読媒体上に記録されたコンピュータプログラムであって、
第１のハードウェアコンポーネントによって、第１のタスクのセットを実行する命令を受信することと、
第２のハードウェアコンポーネントによって、第２のタスクのセットを実行する命令を受信することと、
前記第１のタスクのセットを実行するトリガメッセージを受信することと、
前記第１のハードウェアコンポーネントから前記第２のハードウェアコンポーネントに、前記第２のタスクのセットを実行するトリガメッセージを出すことと
を備える、コンピュータプログラム。
【請求項２３】
装置であって、
第１のタスク待ち行列と関連付けられた第１のハードウェアコンポーネントによって、第１のタスクのセットを実行する命令を受信するための手段と、
第２のタスク待ち行列と関連付けられた第２のハードウェアコンポーネントによって、第２のタスクのセットを実行する命令を受信するための手段と、
前記第１のハードウェアコンポーネントにおいて、前記第１のタスクのセットを実行するトリガメッセージを受信するための手段と、
前記第１のタスクのセットの完了に応じて、前記第１のハードウェアコンポーネントによって、前記第２のハードウェアコンポーネントに、前記第２のタスクのセットを実行するトリガメッセージを送信するための手段と
を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般にデータ処理に関し、さらに詳細には、通信システムにおいて、ハードウェアを使用し、データをより効率的に処理するための技術に関する。
【背景技術】
【０００２】
一般的に、通信システム内のデータ処理機能は、ソフトウェアを用いて様々なタスクを実現する。そのようなソフトウェアは、一般的に、特定のハードウェア動作に対して知力を提供する。その結果として、ソフトウェアとハードウェアとの間には密なインタラクションが存在しなければならず、そのため、いくつかの例では、特定のタスクを実現するために多数のステップが要求される。ソフトウェアへの依存は、待ち時間の増加、帯域幅の浪費、システムマイクロプロセッサ上での処理負荷の増加などを含む、多数の不利益をもたらす。つまり、ハードウェアと、そのようなハードウェアを制御するための知能の大部分を提供するソフトウェアとの間に蜜なインタラクションを必要とする現在のパラダイムによってもたらされる不利益を改善または除去すると同時に、より効率的にデータを処理する方法が必要とされる。
【発明の概要】
【０００３】
下記は、１または複数の態様の基本的な理解を提供するために、そのような態様の簡略化された概要を提示する。この概要は、全ての企図される態様の広範囲な概観ではなく、全ての態様のキーまたは不可欠な要素を識別すること、あるいは、任意または全ての態様の範囲を描写することを目的としていない。その唯一の目的は、後に示される、発明を実施するための形態への前置きとして、１または複数の態様のいくつかのコンセプトを簡易な形で提示することである。
【０００４】
いくつかの態様に従って、データ処理方法は、第１のタスク待ち行列と関連付けられた第１のハードウェアコンポーネントーネントによって、第１のタスクのセットを実行する命令を受信することと、第２のタスク待ち行列と関連付けられた第２のハードウェアコンポーネントーネントによって、第２のタスクのセットを実行する命令を受信することと、第１のハードウェアコンポーネントにおいて、第１のタスクのセットを実行するためのトリガメッセージを受信することと、第１のタスクのセットの完了に応じて、第１のハードウェアコンポーネントによって、第２のタスクのセットを実行するためのトリガメッセージを第２のハードウェアコンポーネントに送信することと、を備える。
【０００５】
いくつかの態様に従って、データ処理装置は、プロセッサと、第１のメモリと、第２のメモリと、第１のタスク待ち行列と関連付けられた第１のハードウェアコンポーネントと、第２のタスク待ち行列と関連付けられた第２のハードウェアコンポーネントとを備え、複数のタスクは、第１のタスク待ち行列に事前に記憶され、複数の第２のタスクは、第２のタスク待ち行列に事前に記憶され、第１のハードウェアコンポーネントは、複数の第１のタスクの実行を開始するためにトリガを受信し、複数の第２のタスクの実行を開始するために第２のハードウェアコンポーネントにトリガを出すように構成される。
【０００６】
前述および関連した目的を達成するために、１または複数の態様が、以下に十分に記述され、特に特許請求の範囲で示される特徴を備える。以下の記述および添付の図面は、１または複数の態様の特定の例示的な特徴を詳細に示す。しかしながら、これらの特徴は、様々な態様の原理が用いられうる様々な方法のほんの一部を示し、この記述は、そのような態様およびその均等物を全て含むことが企図される。
【図面の簡単な説明】
【０００７】
開示される態様は、開示される態様を限定するためではなく、例示するために提供される添付の図面に関して下に記述されるであろう。ここで、同様の称号は同様のエレメントを表す。
【図１】図１は、開示される様々な態様に従って、無線通信システムを描写する。
【図２】図２は、開示される様々な態様に従って、ユーザ機器およびノードＢを描写する。
【図３】図３は、開示される様々な態様に従って、受信機を描写する。
【図４】図４は、開示される様々な態様に従って、データ処理動作を描写するデータフロー図である。
【図５】図５は、開示される様々な態様に従って、簡略化されたシステム図である。
【図６】図６は、開示される様々な態様に従って、データ処理動作を描写するデータフロー図である。
【図７】図７は、開示される様々な態様に従って、データ処理動作を描写するフローチャートである。
【図８】図８は、開示される様々な態様に従って、閾値処理動作を描写するフローチャートである。
【図９】図９は、開示される様々な態様に従って、テンプレート処理を実現するシステム図である。
【図１０】図１０は、開示される様々な態様に従って、複数のメモリプールを実現するシステム図である。
【図１１】図１１は、開示される様々な態様に従って、プロトコルデータユニット記憶装置を描写する。
【図１２】図１２は、開示される様々な態様に従って、データの処理と記憶を例示する簡略化されたブロック図である。
【図１３】図１３は、典型的な無線デバイスを描写するブロック図である。
【図１４】図１４は、開示される様々な態様に従って、例示的な無線デバイスを描写するブロック図である。
【図１５】図１５は、開示される様々な態様に従って、ミニプロセッサを実現する簡略化されたブロック図である。
【図１６】図１６は、開示される様々な態様に従って、ミニプロセッサを使用してデータ処理方法を描写するフローチャートである。
【図１７】図１７は、開示される様々な態様に従って、コピーエンジンを実現するブロック図である。
【図１８】図１８は、開示される様々な態様に従って、例示的なデータフレームを描写する。
【発明を実施するための形態】
【０００８】
図面に関して様々な態様がここに記述される。次の記述において、説明を目的として、１または複数の態様の完全な理解を提供するために多数の特定な詳細が示される。しかしながら、そのような１または複数の態様が、これらの特定の詳細なしに実施されうることは明白でありうる。
【０００９】
本出願で使用される場合、「コンポーネント（component）」、「モジュール（module）」、「システム（system）」という用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアなどであるが、それらに限定されないコンピュータ関連エンティティを含むことが企図される。例えば、コンポーネントは、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および／または、コンピュータでありうるが、それらに限定されない。例として、計算デバイス上で実行中のアプリケーションと、その計算デバイスとは、両方とも、コンポーネントでありうる。１または複数のコンポーネントは、プロセスおよび／または実行スレッド内に存在することができ、１つのコンポーネントは、１つのコンピュータに局所化（localize）され、および／または、２またはそれより多くのコンピュータ間に分散されうる。加えて、これらのコンポーネントは、様々なデータ構造を格納する様々なコンピュータ可読媒体から実行することができる。これらコンポーネントは、１または複数のデータパケット（例えば、ローカルシステム、分散システム内の別のコンポーネントと、および／または、インターネットのようなネットワークを経由して信号で別の複数のシステムとインタラクトする１つのコンポーネントからのデータ）を有する信号に従うような、ローカルおよび／またはリモートプロセスで通信することができる。
【００１０】
さらに、有線端末または無線端末でありうる端末に関して、様々な態様が本明細書に記述される。端末は、システム、デバイス、加入者ユニット、加入者局、モバイル局、モバイル、モバイルデバイス、リモート局、リモート端末、アクセス端末、ユーザ端末、端末、通信デバイス、ユーザエージェント、ユーザデバイス、または、ユーザ機器（ＵＥ）とも呼ばれうる。無線端末は、セルラ電話、衛星電話、コードレス電話、セッション開始プロトコル（ＳＩＰ）電話、無線ローカルループ（ＷＬＬ）局、携帯情報端末（ＰＤＡ）、無線接続機能を有するハンドヘルドデバイス、計算デバイス、または、無線モデムに接続された別の処理デバイスでありうる。さらに、基地局に関して、様々な態様が本明細書に記述される。基地局は、１または複数の無線端末との通信に利用され、アクセスポイント、ノードＢ、または、ある別の用語でも呼ばれうる。
【００１１】
さらに、「または（or）」という用語は、排他的な「または」というよりはむしろ包括的な「または」を意味することが企図される。すなわち、別段明記されていない限り、または、コンテキストから明らかでない限り、「ＸはＡまたはＢを用いる」という表現は、あらゆる自然で包含的な置き換えを意味することが企図される。すなわち、「ＸはＡまたはＢを用いる」という表現は、次の例のいずれによっても満たされる：「ＸはＡを用いる」、「ＸはＢを用いる」、「ＸはＡとＢの両方を用いる」。加えて、冠詞「ａ」および「ａｎ」は、本出願および添付の図面で使用される場合、一般的に、単数形を指すことが別段明記されていない限り、または、コンテキストから明らかでない限り、「１または複数の」を意味すると解釈されるべきである。
【００１２】
本明細書に記述される技術は、ＣＤＭＡ、ＴＤＭＡ、ＦＤＭＡ、ＯＦＤＭＡ、ＳＣ−ＦＤＭＡ、および別のシステムのような様々な無線通信システムに対して使用されうる。「システム」および「ネットワーク」という用語は、交換可能に使用されることが多い。ＣＤＭＡシステムは、ユニバーサル地上波無線アクセス（ＵＴＲＡ）、ｃｄｍａ２０００などの無線テクノロジを実現しうる。ＵＴＲＡは、広域ＣＤＭＡ（Ｗ−ＣＤＭＡ）およびＣＤＭＡの他の変形を含む。さらに、ｃｄｍａ２０００は、ＩＳ−２０００、ＩＳ−９５、および、ＩＳ−８５６規格をカバーする。ＴＤＭＡシステムは、ＧＳＭ（登録商標）のような無線テクノロジを実現しうる。ＯＦＤＭＡシステムは、次世代ＵＴＲＡ（Ｅ−ＵＴＲＡ）、ウルトラモバイルブロードバンド（ＵＭＢ）、ＩＥＥＥ ８０２．１１（Ｗｉ−Ｆｉ（登録商標））、ＩＥＥＥ ８０２．１６（ＷｉＭＡＸ（登録商標））、ＩＥＥＥ ８０２．２０、フラッシュＯＦＤＭ（登録商標）のような無線テクノロジを実現しうる。ＵＴＲＡおよびＥ−ＵＴＲＡは、万国移動通信システム（ＵＭＴＳ）の一部である。３ＧＰＰロングタームエボリューション（ＬＴＥ）は、ダウンリンクではＯＦＤＭＡを、アップリンクではＳＣ−ＦＤＭＡを用いるＥ−ＵＴＲＡを使用するＵＭＴＳのリリースである。ＵＴＲＡ、Ｅ−ＵＴＲＡ、ＵＭＴＳ、ＬＴＥ、ＧＳＭは、「第３世代パートナーシッププロジェクト（３ＧＰＰ）」という名称の団体からの文書に記述されている。加えて、ｃｄｍａ２０００およびＵＭＢは、「第３世代パートナーシッププロジェクト２（３ＧＰＰ２）」という名称の団体からの文書に記述されている。さらに、そのような無線通信システムは、追加として、対ではない無認可のスペクトル、８０２．ｘｘ無線ＬＡＮ、ブルートゥース（登録商標）、および、他の短距離または長距離の無線通信技術を使用することが多いピア・ツー・ピア（例えば、モバイル・ツー・モバイル）アドホックネットワークシステムを含みうる。
【００１３】
多数のデバイス、コンポーネント、モジュールなどを含みうるシステムという観点から、様々な態様または特徴が提示されるであろう。様々なシステムが、さらなるデバイス、コンポーネント、モジュール等を含みうること、および／または、図に関して論述されるデバイス、コンポーネント、モジュールの全てを含むわけではないことは理解および認識されるべきである。さらに、これらのアプローチの組み合わせも使用されうる。
【００１４】
図１は、（ｉ）ユーザ機器（ＵＥ）のために無線通信をサポートする無線アクセスネットワーク（ＲＡＮ）１２０と、（ｉｉ）通信サービスをサポートするために様々な機能を行うネットワークエンティティとを含む無線通信システム１００を示す。ＲＡＮ １２０は、任意の数のノードＢと、任意の数の無線ネットワークコントローラ（ＲＮＣ）とを含みうる。簡潔さのために、図１には、１つのノードＢ １３０と１つのＲＮＣ １３２だけが示される。ノードＢは、一般的に、ＵＥと通信する固定局であり、発展型ノードＢ，基地局、アクセスポイントなどとも呼ばれうる。ＲＮＣ １３２は、ノードＢのセットに結合され、その制御下で、ノードＢに対して協調および制御を提供する。
【００１５】
インターネットプロトコル（ＩＰ）ゲートウェイ１４０は、ＵＥのためのデータサービスをサポートし、サービングＧＰＲＳサポートノードまたはゲートウェイＧＰＲＳサポートノード（ＳＧＳＮまたはＧＧＳＮ）、アクセスゲートウェイ（ＡＧＷ）、パケットデータサービングノード（ＰＤＳＮ）とも呼ばれうる。ＩＰゲートウェイ１４０は、ＵＥのためのデータセッションの確立、管理、終了に対して責任を有し、さらに、動的ＩＰアドレスをＵＥに割り当てうる。ＩＰゲートウェイ１４０は、コアネットワーク、インターネットなどを備える１または複数のデータネットワーク１５０に結合する。ＩＰゲートウェイ１４０は、１または複数のデータネットワーク１５０を介して、サーバ１６０のような様々なエンティティと通信することができる。無線システム１００は、図１には示されていない別のネットワークエンティティを含みうる。
【００１６】
ＵＥ １１０は、ＲＡＮ １２０と通信して、サーバ１６０のような別のエンティティとデータを交換しうる。ＵＥ １１０は、固定またはモバイルであり、モバイル局、端末、加入者ユニット、局などとも呼ばれうる。ＵＥ １１０は、セルラ電話、携帯情報端末（ＰＤＡ）、無線通信デバイス、無線モデム、ハンドヘルドデバイス、ラップトップコンピュータなどでありうる。ＵＥ １１０は、ダウンリンクおよびアップリンクのようなエアインターフェースを介してノードＢ １２０と通信しうる。ダウンリンク（または、順方向リンク）は、ノードＢからＵＥへの通信リンクを指し、逆方向リンク（またはアップリンク）は、ＵＥからノードＢへの通信リンクを指す。本明細書に記述される技術は、ダウンリンク並びにアップリンクでのデータ送信のために使用されうる。
【００１７】
いくつかの態様において、ＵＥ １１０は、有線接続（図１に示されるような）または無線接続を介して、端末装置（ＴＥ）デバイス１１２に結合されうる。ＵＥ １１０は、ＴＥデバイス１１２に対して無線データサービスを提供またはサポートするために使用されうる。ＴＥデバイス１１２は、ラップトップコンピュータ、ＰＤＡ、または、ある別の計算デバイスでありうる。
【００１８】
図２は、図１のＵＥ １１０およびノードＢ １３０の例示的な設計のブロック図を示す。この例示的な設計において、ＵＥ １１０は、データプロセッサ２１０、外部メモリ２６０、無線送信機（ＴＭＴＲ）２５２、および、無線受信機（ＲＣＶＲ）２５４を含む。データプロセッサ２１０は、コントローラ／プロセッサ２２０、送信プロセッサ２３０、受信プロセッサ２４０、および、内部メモリ２５０を含む。バス２１２は、プロセッサ２２０、２３０、２４０とメモリ２５０との間のデータ転送を容易にする。データプロセッサ２１０は、特定用途向け集積回路（ＡＳＩＣ）で実現され、メモリ２６０は、ＡＳＩＣの外側にありうる。
【００１９】
アップリンクでのデータ送信について、送信プロセッサ２３０は、プロトコルのセットに従ってトラフィックデータを処理し、出力データを提供する。無線送信機２５２は、この出力データを調整（例えば、アナログ変換、フィルタリング、増幅、および周波数アップコンバート）して、ノードＢ ２３０に送信されうるアップリンク信号を生成する。ダウンリンクでのデータ受信について、無線受信機２５４は、ノードＢ ２３０から受信されたダウンリンク信号を調整（例えば、フィルタリング、増幅、周波数ダウンコンバート、デジタル化）して、受信データを提供する。受信プロセッサ２４０は、プロトコルのセットに従って受信データを処理し、トラフィックデータを提供する。コントローラ／プロセッサ２２０は、ＵＥ １１０の様々なユニットの動作を指示しうる。内部メモリ２５０は、プロセッサ２２０、２３０、２４０のためのプログラムコードとデータを記憶しうる。外部メモリ２６０は、ＵＥ １１０のためのデータおよびプログラムコード用の大容量記憶装置を提供しうる。
【００２０】
図２は、さらに、ノードＢ１３０の例示的な設計のブロック図を示す。無線送信機／受信機２６４は、ＵＥ １１０並びに別のＵＥとの無線通信をサポートしうる。コントローラ／プロセッサ２７０は、ダウンリンクでのデータ送信、および、アップリンクでのデータ受信のためにデータを処理しうる。コントローラ／プロセッサ２７０は、さらに、ＵＥとの通信のために、様々な機能を実行しうる。メモリ２７２は、ノードＢ １３０のためにデータおよびプログラムコードを記憶しうる。通信（Ｃｏｍｍ）ユニット２７４は、別のネットワークエンティティとの通信をサポートしうる。
【００２１】
図３は、ＵＥ １１０の一部でありうる、受信機３００の例示的な設計を描写する。受信機３００は、データの大容量記憶装置を提供する外部メモリ３１０、受信データを処理する受信プロセッサ３２０、および、処理データを記憶する内部メモリ３４０を含む。受信プロセッサ３２０および内部メモリ３４０は、ＡＳＩＣ ３１２上で実現されうる。
【００２２】
受信プロセッサ３２０において、ＲＸ ＰＨＹプロセッサ３２２は、ＰＨＹフレームを送信機（例えば、ノードＢ １３０）から受信し、受信されたこのＰＨＹフレームを、ＲＡＮによって使用される無線テクノロジ（例えば、ＣＤＭＡ２０００ １Ｘまたは１ｘＥＶ−ＤＯ、またはＬＴＥ）に従って処理し、受信フレームを提供しうる。データプロセッサ３２４は、さらに、この受信フレームを処理（例えば、復号、解読、フレーム除去（de-frame））する。
【００２３】
データ転送は、典型的に、３つのタスクを必要とする。第１に、データは、外部メモリ３１０のような、あるロケーションから移入（move in）される。次に、このデータは、ハードウェアによって処理され、元の場所に移出（move out）されうる。データムーバ（Data mover）３３６は、あるロケーションから別のロケーションにデータを移入し、ハードウェアアクセラレータ３３４による処理の後にそのデータを元の場所に移出ように構成されうる。プロセッサ／コントローラ３３０は、ハードウェアアクセラレータ３３４およびデータムーバ３３６の動作を制御するように構成されうる。
【００２４】
図４は、ソフトウェアおよびハードウェアで生じる典型的なデータ処理動作を描写するデータフロー図である。図４に描写されるように、ソフトウェアコンポーネント４０２は、第１のハードウェアコンポーネント４０４および第２のハードウェアコンポーネント４０６のような１または複数のハードウェアコンポーネントとインターフェースしうる。ステップ４０８に描写されるように、ソフトウェアコンポーネント４０２は、第１のハードウェアコンポーネント４０４に、第１の命令のセットを出しうる。この命令は、１または複数のタスクを実行する命令を含みうる。次に、第１のハードウェアコンポーネント４０４は、４１０に描写されるように、最初のセットの命令に応答する。次に、第２のハードウェアコンポーネント４０６で処理を開始するために、ソフトウェアコンポーネント４０２は、４１２に描写されるように、第２のハードウェアコンポーネント４０６に命令のセットを送り、４１４に描写されるような応答を待つ。タスクが実行される必要がある度に、ソフトウェア４０２は、４１６、４１８、４２０、４２２に描写されるように、命令または命令のセットを指定のハードウェアコンポーネントに出し、応答を待たなければならない。
【００２５】
図４に描写される方法において、全てのハードウェアのタスクまたはタスクのセットの後に、ソフトウェア割込（software interrupt）が使用されなければならない。すなわち、提供された命令の完了後、ハードウェアコンポーネントは、ソフトウェアに割込を送らなければならない。これらの割込は、プログラムコンテキストが機能停止され、且つ、割込の実行およびハードウェア処理の再開のために新たに構築されなければならないため、大きな損失をもたらしうる。さらに、割込は、ロックされている場合が多く、それにより、割込のロックが解除されるまで、潜在的な期間が生じる。
【００２６】
図５は、開示される様々な態様を示す簡略化されたブロック図である。プロセッサ５０２は、第１のハードウェアコンポーネント５０４および第２のハードウェアコンポーネント５０６のような様々なハードウェアコンポーネントの動作を制御するように構成されうる。図４と同じように、第１のハードウェアコンポーネント５０４および第２のハードウェアコンポーネント５０６の各々は、例えば、データムーバまたはハードウェアアクセラレータのような専用ハードウェアブロックでありうる。プロセッサ５０２は、ハードウェアコンポーネントに対して、様々なタスクを実行するように命令するソフトウェアを格納しうる。
【００２７】
第１のハードウェアコンポーネント５０４および第２のハードウェアコンポーネント５０６は、互いに通信的に結合されうる。このように、これらのコンポーネントは、プロセッサ５０２に格納されたソフトウェアを中断させることなく、互いに情報を提供しうる。例えば、第１のハードウェアコンポーネント５０４および第２のハードウェアコンポーネント５０６は、プロセッサ５０２によって１または複数のタスクを行うように事前にプログラムされうる。このプロセスは、図６においてさらに詳細に描写される。
【００２８】
図６に描写されるように、プロセッサ５０２は、第１のハードウェアコンポーネント５０４および第２のハードウェアコンポーネント５０６とインターフェースしうる。いくつかの態様に従って、第１のハードウェアコンポーネント５０４は、外部メモリなどの様々なソースからローカルバッファへとデータを移動することに適応しているもの（例えば、データムーバ）でありうる。第２のハードウェアコンポーネント５０６は、データアクセラレータのようなカスタムハードウェアブロックでありうる。
【００２９】
６１０に描写されるように、プロセッサ５０２は、複数のタスクを実行するために、第１のコマンドのセットを第１のハードウェアコンポーネント５０４に出しうる。例えば、プロセッサ５０２は、ハードウェアコンポーネント５０４に、外部の記憶ロケーションからデータブロックを移入するように命令する。次に、プロセッサ５０２は、６１２に描写されるように、複数のタスクを行うように第２のハードウェアコンポーネント５０６をプログラムしうる。例えば、プロセッサ５０２は、第２のハードウェアコンポーネント５０６に、第１のハードウェアコンポーネント５０４によって移入されたデータのブロックに対して動作するように命令しうる。第１のハードウェアコンポーネントおよび第２のコンポーネントは、指定のタスクを実行するように事前にプログラムされるが、６１４で描写されるように、プロセッサ５０２がトリガメッセージを送信するまで、動作は開始しない。
【００３０】
トリガメッセージを受信すると、第１のハードウェアコンポーネント５０４は、事前にプログラムされたタスクの実行を開始しうる。いくつかの態様に従って、最後の命令は、６１６に描写されるように、トリガメッセージを第２のハードウェアコンポーネント５０４に送ように第１のハードウェアコンポーネントに指示しうる。このトリガは、例えば、ハードウェア割込（hardware interrupt）でありうる。ステップ６１８、６２０、６２２に描写されるように、各ハードウェアコンポーネントは、それ自体の処理の完了に応じて、命令を実行するようにもう一方のコンポーネントをトリガする。この処理の間、ソフトウェア割込は必要ではない。最後の命令が処理されると、この最後の命令を処理したハードウェアコンポーネント（ここでは、第１のハードウェアコンポーネント）は、６２４に描写されるように、プロセッサ５０２に割込を送りうる。図６に描写されるように、ソフトウェア割込の数は、著しく減少しうる。いくつかの態様においては、単一のソフトウェア割込しか要求されない。
【００３１】
図７は、開示される様々な態様に従って、より詳細にデータ処理動作を描写するフローチャートである。７０２に描写されるように、ソフトウェアコンポーネントは、２つ以上のハードウェアコンポーネントをプログラムしうる。ハードウェアコンポーネントをプログラムすることは、各ハードウェアコンポーネントによって実行されるべき一連の命令を提供することを含みうる。この一連の命令は、ハードウェアコンポーネントと関連付けられたタスク待ち行列に格納されうる。いくつかの態様に従って、１より多くのハードウェアコンポーネントは、単一のタスク待ち行列を共有しうる。ここにおいて、各ハードウェアコンポーネントに対する命令は、共にインターリーブされうる。
【００３２】
例示的な態様に従って、２つ以上のハードウェアコンポーネントは、データムーバおよびハードウェアアクセラレータを含みうる。このデータムーバおよびハードウェアアクセラレータの代わりに、あるいは、それらに加えて、別のハードウェアコンポーネントも使用されうる。図７に描写される残りのプロセスは、データムーバおよびハードウェアアクセラレータに関して描写されるが、これは単なる例であることに注意されたい。
【００３３】
上に描写されたように、各ハードウェアコンポーネントは、タスク待ち行列と関連付けられうる。このように、データムーバおよびハードウェアアクセラレータは、各々、それらに関連付けられたタスク待ち行列を有する。このタスク待ち行列は、ソフトウェアによってあらかじめ構成されうる。ハードウェアアクセラレータと関連付けられたタスク待ち行列は、ソフトウェアによって制御される書込ポインタによってゲートされうる。同様にハードウェアコンポーネントと関連付けられた読取ポインタは、ハードウェアによって制御されうる。
【００３４】
プログラムされたタスクの実行が望まれる場合、ソフトウェアコンポーネントは、７０４で描写されるように、トリガ信号をデータムーバに送りうる。トリガ信号が受信されると、データムーバは、７０６に描写されるように、その第１のタスクを実行しうる。例えば、データムーバは、第１のデータブロックを外部メモリロケーションから読み取り、そのデータを内部メモリロケーションに移動するように命令されうる。データムーバは、さらに、ハードウェアアクセラレータと関連付けられた書込ポインタレジスタに書き込むように命令され、それによって、その割り当てられた命令の実行を開始するようにハードウェアアクセラレータをトリガしうる。データムーバは、さらに、イベントが受信されるまで処理を停止するように命令されうる。
【００３５】
データムーバからトリガを受信すると、ハードウェアアクセラレータは、７０８に描写されるように、その命令の実行を開始しうる。これは、例えば、様々なタイプの動作を、データムーバによってロードされるデータに実行することを含みうる。待ち行列に入れられたタスクが完了すると、ハードウェアアクセラレータは、７１０に描写されるように、処理を継続するようにデータムーバをトリガするハードウェア割込を出しうる。トリガを受信すると、データムーバは、７１２で描写されるように、それが、完了させるべきタスクをさらに有するか否かを判定しうる。完了させるべきタスクをさらに有する場合、処理は、ステップ７０６に戻る。データムーバが実行すべきタスクをさらに有さない場合、それは、７１４に描写されるように、ソフトウェアに割込を送りうる。データムーバおよびハードウェアアクセラレータが、ハードウェア割込を使用して互いをトリガできるようにすることで、割込待ち時間が短縮され、コンテキスト切替の数が減少しうる。さらに、データムーバおよびハードウェアアクセラレータがより効率的に使用されるため、全体の待ち時間が減りうる。
【００３６】
上に記述されたように、ハードウェアアクセラレータおよびデータムーバのようなハードウェアコンポーネントは、ソフトウェアによって、複数のタスクを実行するように事前にプログラムされうる。特定のハードウェアアクセラレータの場合、アクセラレータからの出力の長さはランダムでありうる。しかしながら、データムーバも事前にプログラムされるため、データ移出命令は、典型的に、ハードウェアアクセラレータからの出力が最悪の場合に備えてプログラムされうる。ほとんどの時間、出力の長さが事前にプログラムされた長さよりも短くなりうるため、このような構成は、帯域幅を不必要に浪費することにつながりうる。
【００３７】
本明細書の装置および方法のいくつかの態様に従って、ハードウェアアクセラレータの最も一般的な出力のデータの長さを収容する閾値が定義されうる。いくつかの態様において、ハードウェアアクセラレータからの全出力のうちの大部分が閾値を超えないように、閾値が定義されることが望まれうる。しかしながら、この閾値は、あらゆる別の望まれるパラメータに従って構成されうる。例えば、閾値は、アクセラレータの全出力の少なくとも既定の割合が閾値を超えないように、あるいは、アクセラレータの出力のうちの少なくとも一部が閾値を超えないように構成されうる。図８は、より詳細に閾値の処理を示すフローチャートである。
【００３８】
８１０に描写されるように、ハードウェアアクセラレータのようなハードウェアコンポーネントは事前にプログラムされた命令に従って、データを受信および処理する。この処理が完了すると、ハードウェアアクセラレータは、８１２に描写されるように、データムーバのような第２のハードウェアコンポーネントによって出力されるべき命令の結果が、既定の閾値を超えたか否かを判定する。より具体的には、ハードウェアアクセラレータは、ソフトウェアによって事前に構成された閾値決定モジュールを含みうる。閾値は、ハードウェアアクセラレータによって処理されるデータのサイズに対して最大値を設定しうる。
【００３９】
８１４に描写されるように、閾値を超えた場合、ハードウェアアクセラレータは、移出タスクのプロビジョニングが不十分であった（under provisioned）ことを示す割込を生成しうる。すなわち、この割込は、データムーバにおいて事前にプログラムされていたデータ移出のサイズが、ハードウェアアクセラレータによって処理されたばかりのデータを収容するのに十分な大きさでないことを示す。割込を受信すると、ソフトウェアは、８１６に描写されるように、プログラムされたデータ移出のサイズの制限を超えた超過データを読み取りうる。ハードウェアアクセラレータは、この割込の間、機能が停止され、この割込が解決されるとソフトウェアによって「go」が与えられうる。処理は次に続く。例えば、８１８で描写されるように、ハードウェアアクセラレータまたはソフトウェアコンポーネントは、データムーバにトリガを送り、データムーバは、事前にプログラムされた命令に従ってデータを移出する。ステップ８１２において、閾値を超えていないと判定された場合も、処理は、データムーバが、プログラムされた通りに、データを主メモリに移出するステップ８１８へと続く。
【００４０】
いくつかの態様に従って、図８に関して記述される閾値は、適応的に調節されうる。例えば、プロビジョニングが不十分なデータ移出命令からもたらされる割込の周波数が所与の時間期間に亘って大きい場合、ソフトウェアは、閾値のサイズを増やしうる。同様に、所与の時間期間に亘って多数の割込が受信されない場合、閾値のサイズは減らされる。このように、ソフトウェアは、プロビジョニングされていないデータ移出命令の結果として受信される全ての割込を追跡するタイマおよびカウンタで構成されうる。不十分なプロビジョニングを説明するメカニズムを提供する間、移出されるデータ量を制御することで、電力の消費と、システムバス帯域幅を減らすことができる。加えて、割込の数がより少なくなると、ソフトウェア複雑性は減少しうる。さらに、例外の状況をソフトウェアに渡して対処させることにより、ハードウェアはシンプルに保たれる。閾値を適応的に調整することは、低い割り込み率を維持することと、必要のないデータの移動を回避することとの間で良いトレードオフとなるように支援する。
【００４１】
いくつかの態様に従って、典型的にソフトウェアで行われる動作は、ソフトウェア処理および待ち時間を減らすため、並びに、バス帯域幅の使用を減らすために、ハードウェアに移動されうる。例えば、ハードウェアアクセラレータは、データフレームヘッダを処理する論理で構成されうる。典型的に、ハードウェアは単にデータを解読し、このデータを、さらに処理するために、ソフトウェアに転送する。次に、ソフトウェアは、データを処理する命令と共に、このデータをハードウェアに戻す。これは、ソフトウェア処理、待ち時間、バス帯域幅を減らしうる。
【００４２】
いくつかの例示的な態様において、例えば、ハードウェアアクセラレータは、データフレームヘッダを解釈し、このヘッダを、既定の複数のテンプレートと比較し、このヘッダに基づいて次の処理ステップを決定する論理で構成されうる。ソフトウェアインタラクションは、ヘッダの一致が見つからなかった場合、あるいは、テンプレートの再構成が必要な場合にのみ必要とされる。
【００４３】
図９は、テンプレート処理が実施されうる環境の例である。図９に描写されるように、制御プロセッサ９２０によって制御されるハードウェアアクセラレータ９２２は、入力データを受信し、フィルタリングモジュール９２２を介して、この入力データを処理しうる。フィルタリングモジュール９２２は、その出力を、プロセッサ９１４、メモリ９１６、または、インターフェース９１８−１〜９１８―Ｎのうちの１または複数に提供しうる。メモリ９１６は、内部メモリまたは外部メモリありうる。インターフェース９１８−１〜９１８−Ｎは、例えば、ラップトップ、ＰＤＡ、または、他のあらゆる外部電子デバイスのような外部デバイスへの接続を提供しうる。例えば、インターフェース９１８−１〜９１８−Ｎは、ＵＳＢポート、ブルートゥース、ＳＤＩＯ、ＳＤＣＣ、あるいは、別の有線インターフェースまたは無線インターフェースを含みうる。
【００４４】
フィルタリングモジュール９２２は、出力データがどこにルーティングされるべきかに関してのルーティング決定を行うために使用されうる複数の既定のテンプレートを含みうる。例えば、暗号データは、ハードウェアアクセラレータ９１２によって受信され、解読されうる。フィルタリングモジュール９２２においてプログラムされるテンプレートに基づいて、解読されたデータは、インターフェース９１８−１〜９１８−Ｎを介してプロセッサ９１４、メモリ９１６、または、外部デバイスに転送されうる。いくつかの態様に従って、プロセッサ９１４は、ハードウェアアクセラレータ９１２が処理しにくい、より複雑な動作のためのバックアップフィルタとして使用されうる。
【００４５】
いくつかの態様に従って、各トラフィックテンプレートは、１または複数のパラメータと、各パラメータに対する特定の値を含みうる。各パラメータは、ＩＰ、ＴＣＰ、ＵＤＰ、あるいは、いくつかの別のプロトコルのヘッダの特定のフィールドに対応しうる。例えば、ＩＰパラメータは、ソースアドレス、宛先アドレス、アドレスレンジ、およびプロトコルを含みうる。ＴＣＰまたはＵＤＰパラメータは、ソースポート、宛先ポート、および、ポートレンジを含みうる。トラフィックテンプレートは、ヘッダにおける各パラメータのロケーションを特定しうる。このように、ハードウェアアクセラレータは、使用中のプロトコルについてのいずれの実知識も有する必要はない。むしろ、このハードウェアは、テンプレートパラメータとヘッダの一致を実行する。
【００４６】
例えば、トラフィックテンプレートは、宛先ポートｘへのＴＣＰフレームを検出するように定義され、ＩＰｖ４パケットで送信されうる。このテンプレートは、次ように設定されうる３つのパラメータを含みうる：バージョン＝ＩＰｖ４、プロトコル＝ＴＣＰ、宛先ポート＝ｘ。一般的に、任意のプロトコルヘッダ内の任意のフィールドが、トラフィックテンプレートパラメータとして使用されうる。任意の数のテンプレートが定義され、各テンプレートは、任意のパラメータのセットと関連付けられうる。異なるテンプレートは、異なるアプリケーション、ソケットに対して定義され、異なるパラメータのセットで定義されうる。
【００４７】
各テンプレートは、さらに、一致があった場合に行う動作と、一致がなかった場合に行う動作に関連付けられうる。データフレームを受信すると、受信されたフレームの値は、テンプレートの特定の値に対して比較される。受信された値が特定の値と一致すると、一致が宣言され、そうでなければ、一致は宣言されない。いずれの一致も定義されなかった場合、ハードウェアはソフトウェア割込を出し、次に、ソフトウェアがフレームを処理する。
【００４８】
本明細書記述されるように、データ処理は、典型的に、第１の位置からのデータの移入、このデータに対しての動作、データの移出を含む。典型的に、単一の大きなメモリプール（memory pool）は、低コスト、高待ち時間メモリ（high latency memory）で定義される。データは、この高待ち時間メモリプールから移入され、それに対して動作され、メモリプールに戻されうる。しかしながら、最近アクセスされたデータは、再利用される場合が多い。このように、全てのアクセス後に、データを高待ち時間メモリプールに戻すことは、システムバス帯域幅を不必要に増加させる。本明細書の装置および方法のいくつかの態様に従って、複数のメモリプールが、物理メモリで定義される。メモリ割当は、利用可能な最良のメモリプールに基づくか、あるいは、データがどれだけの頻度でアクセスされる可能性が高いかに依存しうる。
【００４９】
図１０は、いくつかの態様に従って、複数のメモリプールを実現するシステム１０００の例である。システム１０００は、低待ち時間メモリ１０１２（low latency memory）、プロセッサ１０１４、データムーバ１０１６、および、ハードウェアアクセラレータ１０１８を備えるＡＳＩＣ ９１０を含みうる。高待ち時間メモリ１０２０も提供されうる。低待ち時間メモリ９１２は内部メモリとして描写され（depicted）、高待ち時間メモリ１０２０は、外部メモリとして描写されているが、この構成は単なる例である。メモリのうちのいずれか一方あるいは両方が、内部メモリまたは外部メモリでありうる。プロセッサ１００４は、高待ち時間メモリ１０２０および低待ち時間メモリ１０１２へのアクセスを制御するメモリコントローラ１０２２を含みうる。大部分の動作が、低待ち時間メモリ１０１２を使用する場合、データは、より効率的に処理されうる。このように、メモリコントローラ１０２２は、高待ち時間メモリ１０２０へのアクセスの数を制限するように構成されうる。
【００５０】
通常の動作の場合、データムーバ１０２０は、例えば、高待ち時間メモリ１０２０と低待ち時間メモリ９１２との間でデータを移入および移出するように構成されうる。いくつかの例示的な態様に従って、ハードウェアアクセラレータ１０１８は、低待ち時間メモリ１０１２からのデータに対して直接動作するように構成されうる。例えば、いくつかの態様において、データは、空間が利用可能な限り、低待ち時間メモリ１０１２で維持されうる。別の態様において、データは、サービス品質要件、通信チャネルプロパティ、および／または、別の要因のような特定のデータ送信特性に基づいて低待ち時間メモリ１０１２に記憶され、維持されうる。
【００５１】
小さくて高速なプールと、大きくてより遅いプールが定義可能であることから、複数のメモリプールを提供することは、ハードウェアコストを削減しうる。さらに、システムバス帯域幅および電力が減らされうる。
【００５２】
いくつかの態様に従って、低待ち時間メモリ１０１２に記憶されるデータは、ハードウェアとソフトウェアの両方からアクセスされうる。ペイロードは、ハードウェアアクセラレータ１０１８によって処理され、低待ち時間アクセスを確実にしうる。低待ち時間メモリ１０１２は、ハードウェアアクセラレータ１０１８の近くに設置されうる。このように、データ転送は、システムバスをまたぐ必要はなく、電力とシステムバス帯域幅を節約しうる。
【００５３】
データを処理する際、データは、各層での実現（例えば、ヘッダを除去し、複数のフローからのデータを多重化し、分割／再構築すること）を簡略化するために、データスタックを通過する間に複数回複写されることが多い。本明細書の装置および方法のいくつかの態様に従って、データを同一のロケーションに残し、異なる層に同一のデータに対する処理を行わせることによって、複写を繰り返すことは回避されうる。各データ処理命令は、ハードウェアによって実行されようと、ソフトウェアによって実行されようと、ローカルハードウェアバッファのような同一のロケーションを示しうる。例えば、ＵＭＴＳ解読が行われた後、解読されたデータは、ローカルハードウェアバッファのようなローカルメモリに複写されうる。プロトコルヘッダを評価することによって、ソフトウェアがペイロードを連結した後、ソフトウェアは、ＴＣＰチェックサム計算またはＰＰＰフレーミングのいずれかを行うようにハードウェアアクセラレータに命令する。データは、そのような処理の間、外部メモリロケーションから移出されたり、外部メモリロケーションに移入されたりする必要はない。
【００５４】
データ送信について、データフレームは、典型的に、使用中のプロトコルに依存して、より小さいユニットに分割される。このように、関連ペイロードは、複数の送信に分割されることが多い。典型的に、各ユニットに対するメモリブロックが割り当てられ、ペイロードを、それがより高い層に送られる際に、より大きいデータユニットへと連結するために、これらのユニットの連結リストが形成されうる。
【００５５】
図１１は、受信パケットデータユニットの典型的な記憶割当を描写する。図１１に描写されるように、入力データフレーム１１００は、各々が、ヘッダ（Ｈ１、Ｈ２、Ｈ３）およびペイロード（Ｐ１、Ｐ２、Ｐ３）を備える複数のプロトコルデータユニット（ＰＤＵ）を含みうる。典型的に、データフレームは、複数のセグメントに分割され、各セグメントは、個別データサービスメモリ（ＤＳＭ）ユニットに記憶される。図１１で示されるように、ＰＤＵ１（Ｈ１＋Ｐ１）は、第１のＤＳＭユニット１１０４に記憶され、ＰＤＵ２（Ｈ２＋Ｐ２）は、第２のＤＳＭユニット１１０６に記憶され、ＰＤＵ３（Ｈ３＋Ｐ３）は、第３のＤＳＭユニット１１０８に記憶される。
【００５６】
この方法でデータを記憶することは、様々な理由で非効率的である。例えば、各ＤＳＭユニットは、オーバヘッドを増やす、それ自体のヘッダＨを含む。加えて、ＤＳＭプール内の各ＤＳＭユニットは、均等の大きさに分類される。このように、ＰＤＵが予め構成されたＤＳＭユニットサイズよりも小さい場合、空間は無駄になる。１１０４および１１０８で描写されるように、ＤＳＭユニットを満たすために、パディングデータＰがＰＤＵの後に加えられる。さらに、セグメント化されたＰＤＵを後で連結させるために、各ＰＤＵがどこに記憶されているか、および、それが他とどのように関係するかを示す連結リストが保持されなければならない。
【００５７】
本発明の装置および方法のいくつかの例示的な態様に従って、受信データは、ヘッダを除去して、より高い層に対する連続ペイロードを直接連結することにより、異なる送信からのチャネルごとに、連続メモリのより大きなブロックへと集められうる。これは、アプリケーションデータの一貫性をもたらし、連結によるさらなるメモリ割当の必要性を減らしうる。さらに、パッディングオーバヘッド、メモリ割当処理、メモリオーバヘッドの減少により、メモリが減らされうる。
【００５８】
上述されたように、ハードウェアが、暗号データフレームを受信すると、フレームは解読され、次に、さらなる処理のためにハードウェアに転送される。いくつかの例示的な態様に従って、ハードウェアアクセラレータのようなハードウェアコンポーネントは、さらに、フレームをソフトウェアに転送することなく、関連ペイロードを連結するように構成されうる。
【００５９】
図１２は、いくつかの態様に従って、データ処理および記憶装置を示す簡略化されたブロック図である。図１２に描写されるように、入力データフレーム１２０１は、各々がヘッダおよびペイロードを備える複数のプロトコルデータユニットを含みうる。分割ユニット１２０２は、入力データフレーム１２０１を処理するように構成されうる。処理は、例えば、ヘッダとペイロードを分離することを含みうる。ヘッダ（Ｈ１、Ｈ２、Ｈ３）は、関連ペイロードへのポインタと共に、メモリ１２０３に記憶されうる。
【００６０】
ハードウェア連結論理１２０４は、次に、ペイロードを結合し、それらを単一のＤＳＭに記憶しうる。分割ユニット１２０２およびハードウェア連結論理１２０４は、ソフトウェア論理１２０６によってプログラムおよび／または制御されうる。例えば、ソフトウェア論理１２０６は、ヘッダを取り除し、ポインタ情報を生成するように、分割ユニット１２０２をプログラムしうる。加えて、ソフトウェア論理１２０６は、特定のペイロードまたはヘッダを取り出すように連結論理１２０４を指示する。
【００６１】
いくつかの態様に従って、複数の送信からのデータは、単一のＤＳＭで結合されうる。データは、一度ＤＳＭに記憶されると、たとえこのＤＳＭが一杯でなかったとしても、別の層に送られうる。加えて、データは、ＤＭＳユニットの末尾に加えられうる。
【００６２】
典型的に、ヘッダおよびペイロードは、データの受信時には互いに離れていない。むしろ、このヘッダとペイロードは、典型的に、共に記憶される。しかしながら、パケットをどのように処理するかについての大部分の決定は、パケットヘッダにのみ基づきうる。本明細書の装置および方法のいくつかの態様に従って、ヘッダのみが、層から層へと移動されうる。ゆえに、ペイロードは、処理に必要な場合のみ移動され、それによって、ペイロードデータの一貫性およびキャッシュの効率性を改善し、バスの利用を減らしうる。
【００６３】
典型的な無線デバイスにおいて、主プロセッサは、全てのモデム関連機能性に対処する。図１３は、典型的な構成を描写するブロック図である。主プロセッサ１３０４は、通信的に、複数のバス１３０６を介してハードウェア１３０８と結合される。メモリ１３０２は、ハードウェア１３０８によって動作されるデータを記憶するために提供される。動作中、主プロセッサ１３０４が、ハードウェア１３０８に命令を出すたびに、この命令は、複数のバス１３０６を横切らなければならない。さらに、ハードウェア１３０８は、各命令が完了した後に、ソフトウェア割込を、主プロセッサ１３０４に出さなければならない。バスを横切ること、および、ソフトウェア割込を出すことにより、実質的な処理待ち時間が加えられる。
【００６４】
様々な例示的な態様に従って、ハードウェアの近くに配置されており、これによって待ち時間を減らすミニプロセッサが提供されうる。図１４は、そのような構成を描写するブロック図である。主プロセッサ１４０４は、通信的に、複数のバス１４０６を介してハードウェア１４０８に結合される。メモリ１４０２は、ハードウェア１４０８によって処理されるデータを記憶するために提供される。
【００６５】
ミニプロセッサ１４１０は、ハードウェア１４０８の近くに提供される。ミニプロセッサ１４１０は、主プロセッサ１４０４と同じメモリ１４０２へのアクセスを有する、柔軟にプログラムされたプロセッサである。ミニプロセッサ１４１０は、ハードウェア１４０８と直接インタラクトするようにプログラムされうる。ミニプロセッサ１４１０は、ハードウェアに指示して、ヘッダ抽出、暗号化、解読、データ移動、連続記憶、ＩＰフィルタリング、ヘッダ挿入、ＰＰＰフレーミング、および／または、別のタスクのようなタスクを行うようにプログラムされうる。
【００６６】
いくつかの態様に従って、無線デバイスにおいて新しい情報が受信されると、主プロセッサ１４０４は、データの処理を開始し、ハードウェア１４０８による処理の後に、その結果をメモリ１４０２に記憶するように、ミニプロセッサ１４１０を指示しうる。このように、ハードウェアは、もはや、各タスクの後に主プロセッサ１４１４に割り込む必要がない。加えて、ミニプロセッサ１４１０がプログラム可能であるため、処理要件に変更があった場合、容易に再プログラムされうる。例えば、エアインターフェースに変更があった場合、または、新しいプロトコルリリースが利用可能な場合、ミニプロセッサ１４１０は、この変更を実現するために再プログラムされうる。
【００６７】
図１４に描写される構成に従って、単なるソフトウェア実現と比べて、待ち時間が減らされる。加えて、割込、メモリアクセス、およびバス待ち時間が減少しうる。さらに、ミニプロセッサが、単なるソフトウェアアプリケーションよりもハードウェアメモリの近くで実現されうるため、電力消費は低くされうる。
【００６８】
いくつかの態様に従って、主プロセッサとミニプロセッサの両方は、１または複数の専用ハードウェアブロックへのアクセスを有しうる。これは、図１５に描写される。主プロセッサ１５０２およびミニプロセッサ１５０４は、各々、通信的に、複数の専用ハードウェアブロックに結合される。複数の専用ブロックは、第１のハードウェアブロック１５０６、第２のハードウェアブロック１５０８、第３のハードウェアブロック１５１０を含む。ハードウェアブロックは、例えば、ハードウェアアクセラレータ、データムーバ、暗号化エンジン、解読エンジン、および／または、あらゆる別の専用ハードウェアブロックを含みうる。
【００６９】
主プロセッサ１５０２およびミニプロセッサ１５０４は、各々、同時に、ハードウェアブロック１５０４、１５０６、１５０８のうちの異なる１つにアクセスしうる。これは、並列処理を可能にする。例えば、主プロセッサ１５０２は、解読専用でありうる第１のハードウェアブロック１５０６にアクセスするように構成され、ミニプロセッサ１５０４は、同時に、暗号化専用でありうる第２のハードウェアブロック１５０８にアクセスするように構成されうる。このように、アップリンクおよびダウンリンク処理は、同時に発生しうる。
【００７０】
ミニプロセッサ（図１５に描写されたミニプロセッサ１５０４）は、複雑なタスクを処理することができない可能性がある。例えば、パケットの再送信を処理する場合、シーケンス番号がいつロールオーバ（rollover）するかを決定する際に複雑な論理が存在する。いくつかの態様に従って、主プロセッサは、ミニプロセッサへのバックアップとして機能し、ミニプロセッサが適切に処理できないこれらの複雑なタスクを処理するように構成されうる。図１６は、このような複雑な論理を処理するためのプロセスを描写するフローチャートである。
【００７１】
１６０２で描写されるように、プロセスは、ミニプロセッサが、処理されるべきデータを受信すると開始する。いくつかの態様に従って、ミニプロセッサは、既定の処理方法を使用して特定のタイプのタスクを常に処理するようにプログラムされうる。このように、１６０４で描写されるように、ミニプロセッサは、ハードウェアに命令し、第１の処理方法を使用してデータを処理するように構成されうる。例えば、シーケンス番号がロールオーバするべきか否かを決定する場合、ミニプロセッサは、シーケンス番号がロールオーバしないことを常に想定するように構成されうる。
【００７２】
１６０６で描写されるように、主プロセッサは、ハードウェアによって処理されるデータを受信する。主プロセッサは、さらに、データがどのように処理されたかについての表示を受信しうる。１６０８に描写されるように、主プロセッサは、データが正確に処理されたか否かを判定する。正確に処理された場合、主プロセッサは、１６１０に描写されるように、単に、このデータを、メモリなどの宛先に転送する。しかしながら、主プロセッサが、このデータが、正確に処理されなかったことを検出した場合、主プロセッサは、１６１２に描写されるように、ハードウェアによって行われる動作を逆転させ、データを正確に処理するようにハードウェアを再プログラムすることができる。
【００７３】
典型的なデータ移動動作において、プロセッサは、移動されるべきデータの各チャックに対して複写タスクを行うようにデータムーバをプログラムする。例示的な様々な態様に従って、コピーエンジンが含まれ、ハードウェアの近くに配置される。図１７は、コピーエンジンを組み込むシステム１７００のブロック図である。システム１７００は、データムーバ１７０２、主メモリ１７０４、コピーエンジン１７１０、コピーエンジンメモリ１７０６、ハードウェア１７０８を備える。コピーエンジン１７１０は、複写および／またはデータ転送動作を容易にするために、ハードウェア１７０８に対して直接動作するようにプログラムされうる。コピーエンジン１７１０は、その専用メモリ１７０６と関連付けられ、それによって、主メモリ１７０４からのデータの記憶および検索と関連付けられた待ち時間が短縮されうる。データムーバ１７０２は、データをコピーエンジンメモリ１７０６から取り出し、それを主メモリ１７０４に記憶するようにプログラムされうる。
【００７４】
コピーエンジンを含むことによって、ビットレベルの粒度は、ビットレベル幅を有するプロトコルをサポートすることができる。加えて、単一のプログラミングタスクを使用して、等しく分散したソースデータを、等しく分散した宛先ロケーションに複写できるようにすることで、プログラミングオーバヘッドが減らされうる。さらに、コピーエンジンは、例えば、ヘッダ抽出および挿入、データ連結またはセグメント化、バイト／ワードアライメント、並びに、データ操作のための通常のデータムーバタスクなど、ソフトウェアによって使用されるあらゆるタイプの動作に使用されうる。
【００７５】
いくつかの態様に従って、コピーエンジン１７１０は、単一のタスクで、複数のＰＤＵからのデータを複写するようにプログラムされうる。図１８に描写されるように、データフレームは、各々がヘッダ（Ｈ１、Ｈ２、Ｈ３）およびペイロード（Ｐ１、Ｐ２、Ｐ３）を備える複数のＰＤＵを含みうる。ヘッダおよびペイロードのサイズは、アプリオリに知られており、コピーエンジンは、これらのサイズを知るようにプログラムされうる。例えば、図１８に描写されるように、ヘッダ１８０２などの全てのヘッダのサイズはＸであり、ペイロード１８０４などの全てのペイロードのサイズはＹでありうる。コピーエンジンは、ヘッダとペイロードのサイズについての知識に基づいて、単一のタスクで、Ｎ個のヘッダまたはＮ個のペイロードを複写するようにプログラムされうる。
【００７６】
本明細書に開示された実施形態と関連して記述される様々な実例となる論理、論理ブロック、モジュール、回路は、汎用のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向けＩＣ（ＡＳＩＣ）、書替え可能ゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理デバイス、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいは、本明細書に記述された機能を実行するよう設計されたこれらの任意の組み合わせと一緒に実現または実行される。汎用プロセッサはマイクロプロセッサでありうるが、代替で、このプロセッサは従来のあらゆるプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンでありうる。プロセッサは、例えば、ＤＳＰとマクロプロセッサ、複数のマイクロプロセッサ、ＤＳＰコアに結合した１または複数のマイクロプロセッサ、その他の上記構成の組み合わせといった計算デバイスの組み合わせとしても実現されうる。加えて、少なくとも１つのプロセッサは、上述されたステップおよび／または動作のうちの１または複数を行うように動作可能な１または複数のモジュールを備えうる。
【００７７】
さらに、本明細書に開示された態様に関して示される方法またはアルゴリズムのステップおよび／または動作は、直接的にハードウェアに、プロセッサによって実行されるソフトウェアモジュールに、またはそれら二つの組み合わせに組み込まれうる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、取外し可能ディスク、ＣＤ−ＲＯＭ、または本技術分野において周知の記憶媒体の他の形態に存在しうる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替において、記憶媒体はプロセッサに一体化される。さらに、いくつかの態様において、プロセッサと記憶媒体はＡＳＩＣに存在しうる。加えて、ＡＳＩＣはユーザ端末に存在しうる。代替において、プロセッサと記憶媒体は、個別コンポーネントとして、ユーザ端末に存在しうる。さらに、いくつかの態様において、方法またはアルゴリズムのステップおよび／または動作は、コンピュータプログラムプロダクトに組み込まれうる機械可読媒体および／またはコンピュータ可読媒体上のコードおよび／または命令のうちの１つ、または、任意の組み合わせ、または、セットとして存在しうる。
【００７８】
１または複数の態様において、記述された機能は、ハードウェア、ソフトウェア、ファームウェア、または、それらのあらゆる組み合わせに実現されうる。ソフトウェアに実現された場合、その機能はコンピュータ可読媒体上の１または複数の命令またはコードとして記憶または送信される。コンピュータ可読媒体は、コンピュータ記憶媒体と、ある箇所から別の箇所へのコンピュータプログラム移送を容易にする任意の媒体を含む通信媒体との両方を含む。記憶媒体はコンピュータによりアクセスされることができる任意の利用可能な媒体である。それに制限されない例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは、コンピュータによってアクセスされることができ、命令やデータ構造形で所望のプログラムコードを搬送または記憶するために使用される任意の別媒体を備えうる。また、任意の接続は適切にコンピュータ可読媒体と呼ばれうる。例えば、同軸ケーブル、光ファイバーケーブル、撚線対、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、マイクロ波などの無線テクノロジを使用してウェブサイト、サーバ、または他のリモートソースからソフトウェアが送信されると、この同軸ケーブル、光ファイバーケーブル、撚線対、ＤＳＬ、または赤外線、無線、マイクロ派などの無線テクノロジは媒体の定義に含まれる。ディスク（disk）とディスク（disc）は、本明細書で使用される場合、コンパクトディスク（ＣＤ）、レーザディスク、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、ブルーレイ（登録商標）ディスクを含む。ディスク（disk）は通常磁気作用によってデータを再生し、ディスク（disc）はレーザーで光学的にデータを再生する。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
【００７９】
前述の開示は、例示的な態様および／または実施形態を論述しているが、本明細書において、添付される特許請求の範囲によって定義されるような、記述されたステップおよび／または実施形態の範囲を逸脱することなく様々な変更および修正が行われうることに注意されたい。さらに、記述された態様および／または実施形態のエレメントが単数形で記述または請求されるとしても、単数形への限定が明示的に述べられていない限り、複数形が企図される。加えて、任意の態様および／または実施形態の全てまたは一部は、別段言及されない限り、任意の別の態様および／または実施形態の全てまたは一部と共に利用されうる。
【図１】
2013502015.tif 000003
【図２】
2013502015.tif 000004
【図３】
2013502015.tif 000005
【図４】
2013502015.tif 000006
【図５】
2013502015.tif 000007
【図６】
2013502015.tif 000008
【図７】
2013502015.tif 000009
【図８】
2013502015.tif 000010
【図９】
2013502015.tif 000011
【図１０】
2013502015.tif 000012
【図１１】
2013502015.tif 000013
【図１２】
2013502015.tif 000014
【図１３】
2013502015.tif 000015
【図１４】
2013502015.tif 000016
【図１５】
2013502015.tif 000017
【図１６】
2013502015.tif 000018
【図１７】
2013502015.tif 000019
【図１８】
2013502015.tif 000020
【国際調査報告】
2013502015.tif 000021
2013502015.tif 000022
2013502015.tif 000023