(57)【要約】データにおいて演算するためのハードウェア中で、複数のメモリプールを規定する。少なくとも１つのメモリプールは、より短い待ち時間を有する、他のメモリプール。ハードウェアコンポーネントは、より短い待ち時間のメモリプール中のデータにおいて直接的に演算する。【選択図】図１０
2013502016.tif 000002
【特許請求の範囲】
【請求項１】
データ処理方法において、
第１の物理メモリ中の第１のメモリプールを規定することと、
前記第１の物理メモリとは異なる第２の物理メモリ中の第２のメモリプールを規定することと、
１つ以上の予め定められた基準に基づいて、前記第１のメモリプールまたは前記第２のメモリプールにおいて演算するようにハードウェアコンポーネントをプログラミングすることとを含み、
前記第２のメモリプールは、前記第１のメモリプールよりも、より短い待ち時間を有する方法。
【請求項２】
スペースが利用可能であるときにいつでも前記第２のメモリプールにおいて演算するように前記ハードウェアコンポーネントをプログラミングすることをさらに含む請求項１記載の方法。
【請求項３】
前記１つ以上の予め定められた基準は、データ送信特性に基づいている請求項１記載の方法。
【請求項４】
前記第２のメモリプールを規定することは、前記第２のメモリプールを使用してデータ演算の大部分が実行されるように、メモリプールのサイズを規定することを含む請求項１記載の方法。
【請求項５】
前記第２のメモリプールは、前記ハードウェアコンポーネントによって、かつ、前記ハードウェアコンポーネントを制御するソフトウェアコンポーネントによってアクセス可能である請求項１記載の方法。
【請求項６】
前記ハードウェアコンポーネントは、ハードウェアアクセラレータを含む請求項１記載の方法。
【請求項７】
複数のプロトコルレイヤのそれぞれにおいてデータを処理しているときに、前記第２のメモリプール中に記憶されている前記データにおいて演算するように１つ以上のハードウェアコンポーネントを構成することをさらに含み、
前記複数のプロトコルレイヤのそれぞれにおいて処理した後に、前記データは前記第１のメモリプールにコピーされない請求項１記載の方法。
【請求項８】
少なくとも１つのプロセッサにおいて、
第１の物理メモリ中の第１のメモリプールを規定する第１のモジュールと、
前記第１の物理メモリとは異なる第２の物理メモリ中の第２のメモリプールを規定する第２のモジュールと、
１つ以上の予め定められた基準に基づいて、前記第１のメモリプールまたは前記第２のメモリプールにおいて演算するようにハードウェアコンポーネントをプログラミングする第３のモジュールとを具備し、
前記第２のメモリプールは、より短い待ち時間を有する、前記第１のメモリプール、少なくとも１つのプロセッサ。
【請求項９】
コンピュータプログラムプロダクトにおいて、
第１の物理メモリ中の第１のメモリプールをコンピュータに規定させるための第１のセットのコードと、
前記第１の物理メモリとは異なる第２の物理メモリ中の第２のメモリプールを前記コンピュータに規定させるための第２のセットのコードと、
１つ以上の予め定められた基準に基づいて、前記第１のメモリプールまたは前記第２のメモリプールにおいて演算するようにハードウェアコンポーネントを前記コンピュータにプログラミングさせるための第３のセットのコードとを含むコンピュータ読み取り可能媒体を具備し、
前記第２のメモリプールは、より短い待ち時間を有する、前記第１のメモリプール、コンピュータプログラムプロダクト。
【請求項１０】
装置において、
第１の物理メモリ中の第１のメモリプールを規定する手段と、
前記第１の物理メモリとは異なる第２の物理メモリ中の第２のメモリプールを規定する手段と、
１つ以上の予め定められた基準に基づいて、前記第１のメモリプールまたは前記第２のメモリプールにおいて演算するようにハードウェアコンポーネントをプログラミングする手段とを具備し、
前記第２のメモリプールは、より短い待ち時間を有する、前記第１のメモリプール、装置。
【請求項１１】
データ処理装置において、
プロセッサと、
第１の物理メモリ中の第１のメモリプールと、
前記第１の物理メモリとは異なる第２の物理メモリ中の第２のメモリプールと、
１つ以上の予め定められた基準に基づいて、前記第１のメモリプールまたは前記第２のメモリプールにおいて演算可能なハードウェアコンポーネントとを具備し、
前記第２のメモリプールは、より短い待ち時間を有し、前記第１のメモリプール、
前記ハードウェアコンポーネントは、前記プロセッサによって制御されるデータ処理装置。
【請求項１２】
前記ハードウェアコンポーネントは、スペースが利用可能であるときにいつでも前記第２のメモリプールにおいて演算するようにプログラミングされる請求項１１記載のデータ処理装置。
【請求項１３】
前記１つ以上の予め定められた基準は、データ送信特性に基づいている請求項１１記載のデータ処理装置。
【請求項１４】
前記第２のメモリプールは、データ演算の大部分に対応するための容量を有する請求項１１記載のデータ処理装置。
【請求項１５】
前記第２のメモリプールは、前記ハードウェアコンポーネントによって、かつ、前記プロセッサ上に記憶されているソフトウェアコンポーネントによってアクセス可能である請求項１１記載のデータ処理装置。
【請求項１６】
前記ハードウェアコンポーネントは、ハードウェアアクセラレータを含む請求項１１記載のデータ処理装置。
【請求項１７】
複数のプロトコルレイヤのそれぞれにおいてデータを処理しているときに、前記第２のメモリプール中に記憶されているデータにおいて演算する１つ以上のハードウェアコンポーネントをさらに具備し、
前記複数のプロトコルレイヤのそれぞれにおいて処理した後に、前記データは前記第１のメモリプールにコピーされない請求項１１記載のデータ処理装置。
【発明の詳細な説明】
【背景】
【０００１】
分野
本開示は、一般的に、データ処理に関し、さらに詳細には、通信システム中のハードウェアを使用して、より効率的にデータを処理するための技術に関する。
【０００２】
背景
一般的に、通信システム内のデータ処理機能は、多数のタスクを実現するためにソフトウェアの使用を用いる。このようなソフトウェアは、通常、いくつかのハードウェア演算のためにインテリジェンスを提供する。したがって、ソフトウェアとハードウェアとの間には密接な対話がなければならないので、いくつかのインスタンスでは、いくつかのタスクを実現するために多くのステップを要求する。ソフトウェアへの依存は、結果として、増加する待ち時間や、浪費される帯域幅や、システムマイクロプロセッサ上での増加する処理負荷や、これらに類するものを含む、多数の短所になる。したがって、データを処理する、より効率的な方法が必要でありながらも、ハードウェアを制御するためのインテリジェンスの大部分を提供するソフトウェアと、このようなハードウェアとの間の密接な対話が必要である現在のパラダイムによって引き起こされる短所を、改善する、または、無くす、より効率的な方法が必要である。
【概要】
【０００３】
このような態様の基本的な理解を提供するために、１つ以上の態様の簡略化した概要を以下は示している。この概要は、すべて企図した態様の多彩な概略ではなく、すべての態様の重要なまたは不可欠なエレメントを識別することも、何らかの態様またはすべての態様の範囲を詳細に述べることも意図していない。この唯一の目的は、後に示す、より詳細な説明に対する前置きとして、１つ以上の態様のうちのいくつかの概念を、簡略化した形態で示すことである。
【０００４】
いくつかの態様にしたがうと、データ処理方法は、第１の物理メモリ中の第１のメモリプールを規定することと；第１の物理メモリとは異なる第２の物理メモリ中の第２のメモリプールを規定することと；１つ以上の予め定められた基準に基づいて、第１のメモリプールまたは第２のメモリプールにおいて演算するようにハードウェアコンポーネントをプログラミングすることとを含み、第２のメモリプールは、より短い待ち時間を有する、第１のメモリプール。
【０００５】
いくつかの態様にしたがうと、データ処理装置は、プロセッサと；第１の物理メモリ中の第１のメモリプールと；第１の物理メモリとは異なる第２の物理メモリ中の第２のメモリプールと；１つ以上の予め規定された基準に基づいて、第１のメモリプールまたは第２のメモリプールにおいて演算可能なハードウェアコンポーネントとを備え、第２のメモリプールは、より短い待ち時間を有する、第１のメモリプール、ハードウェアコンポーネントは、プロセッサによって制御される。
【０００６】
先述の関連した目的の達成のために、詳細な説明および添付した図面とともに、１つ以上の態様は、以下で完全に記述した特徴および特許請求の範囲において特に指摘した特徴を含む。以下の説明および添付した図面では、１つ以上の態様のいくつかの例示的な特徴を詳細に述べている。しかしながら、これらの特徴は、ほんの数例のさまざまな方法を示しているにすぎず、ここでは、さまざまな態様の原理を用いてもよく、この記述はこのようなすべての態様、および、これらの均等物を含むことを意図している。
【図面の簡単な説明】
【０００７】
開示した態様を図示するように提供されているが、開示した態様を限定するものではない、添付した図面に関連して、開示した態様を以下で記述する。ここでは、同様な呼称は、同じエレメントを示している。  
【図１】図１は、さまざまな開示した態様にしたがった、ワイヤレス通信システムを図示している。
【図２】図２は、さまざまな開示した態様にしたがった、ユーザ機器とノードＢとを図示している。
【図３】図３は、さまざまな開示した態様にしたがった、受信機を図示している。
【図４】図４は、さまざまな開示した態様にしたがった、データ処理動作を図示しているデータフロー図である。
【図５】図５は、さまざまな開示した態様にしたがった、簡略化したシステム図である。
【図６】図６は、さまざまな開示した態様にしたがった、データ処理動作を図示しているデータフロー図である。
【図７】図７は、さまざまな開示した態様にしたがった、データ処理動作を図示しているフローチャートである。
【図８】図８は、さまざまな開示した態様にしたがった、しきい値処理動作を図示しているフローチャートである。
【図９】図９は、さまざまな開示した態様にしたがった、テンプレート処理を実現するシステム図である。
【図１０】図１０は、さまざまな開示した態様にしたがった、複数のメモリプールを実現するシステム図である。
【図１１】図１１は、さまざまな開示した態様にしたがった、プロトコルデータユニット記憶を図示している。
【図１２】図１２は、さまざまな開示した態様にしたがった、データの処理および記憶を図示している簡略化したブロック図である。
【図１３】図１３は、典型的なワイヤレスデバイスを図示しているブロック図である。
【図１４】図１４は、さまざまな開示した態様にしたがった、例示的なワイヤレスデバイスを図示しているブロック図である。
【図１５】図１５は、さまざまな開示した態様にしたがった、ミニプロセッサを実現する簡略化したブロック図である。
【図１６】図１６は、さまざまな開示した態様にしたがった、ミニプロセッサを使用するデータ処理方法を図示しているフローチャートである。
【図１７】図１７は、さまざまな開示した態様にしたがった、コピーエンジンを実現するブロック図である。
【図１８】図１８は、さまざまな開示した態様にしたがった、例示的なデータフレームを図示している。
【詳細な説明】
【０００８】
これから、図面を参照して、さまざまな態様を記述する。以下の記述では、説明の目的のために、１つ以上の態様の完全な理解を提供するために、多数の特定の詳細を述べる。しかしながら、これらの特定の詳細なしに、このような態様を実施してもよいことは明らかである。
【０００９】
本出願において使用されているような、「コンポーネント」、「モジュール」、「システム」という用語や、これらに類するものは、コンピュータ関連エンティティを含むことを意図しており、例えば、コンピュータ関連エンティティは、ハードウェア、ファームウェア、ハードウェアとソフトウェアとを組み合わせたもの、ソフトウェア、または実行中のソフトウェアがあるが、これらに限定されない。例えば、コンポーネントは、プロセッサ上で実行しているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータであってもよいが、これらに限定されない。例示として、コンピューティングデバイス上で実行しているアプリケーションおよびコンピューティングデバイスの双方とも、コンポーネントとすることができる。１つ以上のコンポーネントは、実行のプロセスおよび／またはスレッド内に存在することができ、コンポーネントは、１つのコンピュータ上で局所化および／または２つ以上のコンピュータ間で分散されてもよい。さらに、これらのコンポーネントは、そこに記憶されたさまざまなデータ構造を有するさまざまなコンピュータ読み取り可能媒体から実行することができる。コンポーネントは、１つ以上のデータパケットを有する信号にしたがうような、ローカルおよび／またはリモートプロセスによって通信してもよく、例えば、１つ以上のデータパケットには、ローカルシステム中の、分散システム中の別のコンポーネントと対話する１つのコンポーネントからのデータ、および／または、インターネットのようなネットワークにわたって信号を介して他のシステムと対話する１つのコンポーネントからのデータといったものがある。
【００１０】
さらに、端末に関連して、さまざまな態様をここで記述する。端末は、ワイヤード端末またはワイヤレス端末とすることができる。端末はまた、システム、デバイス、加入者ユニット、加入者局、移動局、移動体、移動体デバイス、遠隔局、遠隔端末、アクセス端末、ユーザ端末、端末、通信デバイス、ユーザエージェント、ユーザデバイス、またはユーザ機器（ＵＥ）と呼ぶことができる。ワイヤレス端末は、セルラ電話機、衛星電話機、コードレス電話機、セッション開始プロトコル（ＳＩＰ）電話機、ワイヤレスローカルループ（ＷＬＬ）局、パーソナルデジタルアシスタント（ＰＤＡ）、ワイヤレス接続能力を有するハンドヘルドデバイス、コンピューティングデバイス、またはワイヤレスモデムに接続されている他の処理デバイスであってもよい。さらに、ここでは、さまざまな態様を、基地局に関連して記述している。ワイヤレス端末との通信のために、基地局を利用してもよく、基地局はまた、アクセスポイント、ノードＢと呼ばれることがあり、または他の何らかの専門用語で呼ばれることもある。
【００１１】
さらには、「または」という用語は、排他的な「または」というよりむしろ、包含的な「または」を意味することを意図している。すなわち、特定の明記がない限り、または、文脈から明らかでない限り、「ＸがＡまたはＢを用いる」というフレーズは、自然な包含的順列のうちのいずれかを意味することを意図している。すなわち、「ＸがＡまたはＢを用いる」というフレーズは、以下の事例：ＸがＡを用いる；ＸがＢを用いる；または、ＸがＡおよびＢの双方とも用いる、のうちのいずれのものによって満たされる。加えて、本出願および添付した特許請求の範囲中で使用しているような冠詞「ａ」および「ａｎ」は、特定の明記がない限り、または、単数形に向けられている文脈から明らかでない限り、一般的に、「１つ以上」を意味すると解釈すべきである。
【００１２】
ＣＤＭＡや、ＴＤＭＡや、ＦＤＭＡや、ＯＦＤＭＡや、ＳＣ−ＦＤＭＡや、他のシステムのような、さまざまなワイヤレス通信システムに対して、ここで記述した技術を使用してもよい。「システム」や「ネットワーク」という用語は、互換性があるように使用されることが多い。ＣＤＭＡシステムは、ユニバーサル地上無線アクセス（ＵＴＲＡ）、ｃｄｍａ２０００等のような無線技術を実現してもよい。ＵＴＲＡは、ワイドバンド−ＣＤＭＡ（Ｗ−ＣＤＭＡ）およびＣＤＭＡの他の変形を含む。さらに、ｃｄｍａ２０００は、ＩＳ−２０００、ＩＳ−９５、およびＩＳ−８５６標準規格をカバーしている。ＴＤＭＡシステムは、グローバルシステムフォーモバイル通信（ＧＳＭ）（登録商標）のような無線技術を実現してもよい。ＯＦＤＭＡシステムは、進化したＵＴＲＡ（Ｅ−ＵＴＲＡ）や、ウルトラモバイルブロードバンド（ＵＭＢ）や、ＩＥＥＥ８０２．１１（Ｗｉ−Ｆｉ（登録商標））や、ＩＥＥＥ８０２．１６（ＷｉＭＡＸ）や、ＩＥＥＥ８０２．２０や、フラッシュ−ＯＦＤＭ等のような無線技術を実現してもよい。ＵＴＲＡおよびＥ−ＵＴＲＡは、ユニバーサル移動体電気通信システム（ＵＭＴＳ）の一部である。３ＧＰＰロングタームエボリューション（ＬＴＥ）は、ダウンリンク上ではＯＦＤＭＡを、アップリンク上ではＳＣ−ＦＤＭＡを用いるＥ−ＵＴＲＡを使用する、リリースのＵＭＴＳである。ＵＴＲＡや、Ｅ−ＵＴＲＡや、ＵＭＴＳや、ＬＴＥや、ＧＳＭは、「第３世代パートナーシッププロジェクト」（３ＧＰＰ）と名付けられている機関による文書中に記述されている。加えて、ｃｄｍａ２０００およびＵＭＢは、「第３世代パートナーシッププロジェクト２」（３ＧＰＰ２）と名付けられている機関による文書中に記述されている。さらに、このようなワイヤレス通信システムは、対でないライセンスされていないスペクトルや、８０２．ｘｘワイヤレスＬＡＮや、ブルートゥース（登録商標）や、他の何らかの短距離または長距離のワイヤレス通信技術を使用していることが多いピアツーピア（例えば、移動体間）のアドホックネットワークシステムを付加的に含んでいてもよい。
【００１３】
多数のデバイスや、コンポーネントや、モジュールや、これらに類するものを含み得るシステムに関して、さまざまな態様または特徴を提示する。さまざまなシステムは、付加的なデバイス、コンポーネント、モジュール等を含んでいてもよいことを、および／または、図面に関連して説明した、デバイス、コンポーネント、モジュール等のすべてを含んでいなくてもよいことを理解および正しく認識すべきである。これらのアプローチを組み合わせたものまた使用してもよい。
【００１４】
図１は、ワイヤレス通信システム１００を示しており、このワイヤレス通信システム１００は、（ｉ）ユーザ機器（ＵＥ）に対する無線通信をサポートする無線アクセスネットワーク（ＲＡＮ）１２０と、（ｉｉ）通信サービスをサポートするためのさまざまな機能を実行するネットワークエンティティとを備えている。ＲＡＮ１２０は、任意の数のノードＢと、任意の数の無線ネットワーク制御装置（ＲＮＣ）とを備えていてもよい。簡単にするために、図１中では、１つのノードＢ１３０と、１つのＲＮＣ１３２とだけを示している。一般的に、ノードＢは、ＵＥと通信する固定局であり、このノードＢは、進化したノードＢ、基地局、アクセスポイント等と呼ばれることがある。ＲＮＣ１３２は、１セットのノードＢに結合させ、その制御のもと、ノードＢに対する調整および制御を提供する。
【００１５】
インターネットプロトコル（ＩＰ）ゲートウェイ１４０は、ＵＥに対するデータサービスをサポートし、また、サービングＧＰＲＳサポートノードまたはゲートウェイＧＰＲＳサポートノード（ＳＧＳＮまたはＧＧＳＮ）、アクセスゲートウェイ（ＡＧＷ）、パケットデータサービングノード（ＰＤＳＮ）等と呼ばれることがある。ＩＰゲートウェイ１４０は、ＵＥに対するデータセッションの、確立や、維持や、終了に関与し、動的ＩＰアドレスをＵＥにさらに割り当てててもよい。ＩＰゲートウェイ１４０は、データネットワーク１５０に結合させてもよく、このデータネットワーク１５０は、コアネットワーク、インターネット等を含んでいてもよい。ＩＰゲートウェイ１４０は、データネットワーク１５０を通して、サーバ１６０のようなさまざまなエンティティと通信することができてもよい。ワイヤレスシステム１００は、図１中では示されていない他のネットワークエンティティを含んでいてもよい。
【００１６】
ＵＥ１１０は、サーバ１６０のような他のエンティティとデータを交換するために、ＲＡＮ１２０と通信してもよい。ＵＥ１１０は、動的または静的であってもよく、移動局、端末、加入者ユニット、局等とも呼ばれることがある。ＵＥ１１０は、セルラ電話機、パーソナルデジタルアシスタント（ＰＤＡ）、ワイヤレス通信デバイス、ワイヤレスモデム、ハンドヘルドデバイス、ラップトップコンピュータ等であってもよい。ＵＥ１１０は、ダウンリンクおよびアップリンクのようなエアインターフェースを通して、ノードＢ１２０と通信してもよい。ダウンリンク（すなわちフォワードリンク）は、ノードＢからＵＥへの通信リンクのことを意味し、リバースリンク（すなわちアップリンク）は、ＵＥからノードＢへの通信リンクのことを意味する。ダウンリンク上でとともに、アップリンク上でのデータ送信に対して、ここで記述した技術を使用してもよい。
【００１７】
いくつかの態様では、ＵＥ１１０は、（図１中に示されているような）ワイヤード接続またはワイヤレス接続を通して、端末機器（ＴＥ）デバイス１１２に結合させてもよい。ＴＥデバイス１１２に対するワイヤレスデータサービスを提供またはサポートするために、ＵＥ１１０を使用してもよい。ＴＥデバイス１１２は、ラップトップコンピュータ、ＰＤＡ、または他の何らかのコンピューティングデバイスであってもよい。
【００１８】
図２は、図１中の、ＵＥ１１０とノードＢ１３０との例示的な設計のブロック図を示している。この例示的な設計では、ＵＥ１１０は、データプロセッサ２１０と、外部メモリ２６０と、無線送信機（ＴＭＴＲ）２５２と、無線受信機（ＲＣＶＲ）２５４とを備えている。データプロセッサ２１０は、制御装置／プロセッサ２２０と、送信プロセッサ２３０と、受信プロセッサ２４０と、内部メモリ２５０とを備えている。バス２１２は、プロセッサ２２０と、プロセッサ２３０と、プロセッサ２４０と、メモリ２５０との間でのデータ転送を促進できる。データプロセッサ２１０は、特定用途向け集積回路（ＡＳＩＣ）上で実現してもよく、メモリ２６０は、ＡＳＩＣの外部にあってもよい。
【００１９】
アップリンク上でのデータ送信のために、送信プロセッサ２３０が、１セットのプロトコルにしたがってトラフィックデータを処理し、出力データを提供してもよい。無線送信機２５２が、出力データを調整（例えば、アナログコンバート、フィルタリング、増幅、および周波数アップコンバート）し、アップリンク信号を発生させてもよく、このアップリンク信号を、ノードＢ２３０に送信してもよい。ダウンリンク上でのデータ受信のために、無線受信機２５４は、ノードＢ２３０から受信したダウンリンク信号を調整（例えば、フィルタリング、増幅、周波数ダウンコンバート、およびデジタル化）し、受信データを提供してもよい。受信プロセッサ２４０は、１セットのプロトコルにしたがって受信データを処理し、トラフィックデータを提供してもよい。制御装置／プロセッサ２２０は、ＵＥ１１０において、さまざまなユニットの動作を指示してもよい。内部メモリ２５０は、プロセッサ２２０と、プロセッサ２３０と、プロセッサ２４０とに対する、プログラムコードとデータとを記憶してもよい。外部メモリ２６０は、ＵＥ１１０に対するデータとプログラムコードとに対する大容量の記憶を提供してもよい。
【００２０】
図２はまた、ノードＢ１３０の例示的な設計のブロック図を示している。無線送信機／受信機２６４は、ＵＥ１１０と他のＵＥとの無線通信をサポートしてもよい。制御装置／プロセッサ２７０は、ダウンリンク上でのデータ送信と、アップリンク上でのデータ受信とのために、データを処理してもよい。制御装置／プロセッサ２７０はまた、ＵＥとの通信のために、さまざまな機能を実行してもよい。メモリ２７２は、ノードＢ１３０に対する、データとプログラムコードとを記憶してもよい。通信（Ｃｏｍｍ）ユニット２７４は、他のネットワークエンティティとの通信をサポートしてもよい。
【００２１】
図３は、受信機３００の例示的な設計を図示しており、この受信機３００は、ＵＥの一部であってもよい。受信機３００は、大容量のデータ記憶を提供する外部メモリ３１０と、受信データを処理する受信プロセッサ３２０と、処理されたデータを記憶する内部メモリ３４０とを備えている。受信プロセッサ３２０および内部メモリ３４０は、ＡＳＩＣ３１２上で実現してもよい。
【００２２】
受信プロセッサ３２０内で、ＲＸ ＰＨＹプロセッサ３２２が、送信機（例えば、ノードＢ１３０）からＰＨＹフレームを受信し、ＲＡＮによって使用される無線技術（例えば、ＣＤＭＡ２０００ １Ｘまたは１ｘ ＥＶ−ＤＯまたはＬＴＥ）にしたがって、受信したＰＨＹフレームを処理し、受信したフレームを提供してもよい。データプロセッサ３２４が、受信したフレームをさらに処理（例えば、デコード、解読、およびデフレーム）してもよい。
【００２３】
データ転送は、典型的に、３つのタスクを伴う。最初に、外部メモリ３１０のような何らかの位置からデータ中に移動させる。その後、ハードウェアによってデータを演算して、外に出して戻すように移動させる。１つの位置から別の位置にデータを移動させ、ハードウェアアクセラレータ３３４による処理の後にデータを外に出して戻すように移動させるように、データムーバー３３６を構成してもよい。ハードウェアアクセラレータ３３４とデータムーバー３３６との動作を制御するように、プロセッサ／制御装置３３０を構成してもよい。
【００２４】
図４は、ソフトウェアおよびハードウェア中で生じる典型的なデータ処理動作を図示しているデータフロー図である。図４中で図示されているように、ソフトウェアコンポーネント４０２は、第１のハードウェアコンポーネント４０４および第２のハードウェアコンポーネント４０６のような１つ以上のハードウェアコンポーネントとインターフェースしてもよい。ステップ４０８において図示されているように、ソフトウェアコンポーネント４０２が、第１のハードウェアコンポーネント４０４に第１のセットの命令を発行してもよい。命令は、１つ以上のタスクを実行するための命令を含んでいてもよい。その後、４１０において図示されているように、第１のハードウェアコンポーネント４０４が、最初のセットの命令に応答する。第２のハードウェアコンポーネント４０６との処理を開始するために、ソフトウェアコンポーネント４０２が、その後、４１２において図示されているように、１セットの命令を第２のハードウェアコンポーネント４０６に送り、４１４において図示されているように、応答を待ってもよい。タスクが実行されることになるたびに、ソフトウェア４０２は、４１６と、４１８と、４２０と、４２２とにおいて図示されているように、指定されたハードウェアコンポーネントに命令または命令のセットを発行し、応答を待たねばならない。
【００２５】
図４中で図示されている方法では、すべてのハードウェアの、タスクまたはタスクのセットの後に、ソフトウェア割込を使用しなければならない。すなわち、提供した命令を完了した後、ハードウェアコンポーネントが、割込をソフトウェアに送らなければならない。プログラムコンテンツをストールし、割込を実行するように再び構築してから、ハードウェア処理を再開しなければならないので、これらの割込はコストがかかることがある。さらには、割込は、ロックされる状態になることが多く、結果として、割込のロックが解消されるまでレイテント期間になる。
【００２６】
図５は、さまざまな開示した態様を図示している簡略化したブロック図である。第１のハードウェアコンポーネント５０４や、第２のハードウェアコンポーネント５０６のような、さまざまなハードウェアコンポーネントの動作を制御するように、プロセッサ５０２を構成してもよい。図４中と同様に、第１のハードウェアコンポーネント５０４および第２のハードウェアコンポーネント５０６のそれぞれは、例えば、データムーバーまたはハードウェアアクセラレータのような専用ハードウェアブロックであってもよい。プロセッサ５０２は、さまざまなタスクを実行するようにハードウェアコンポーネントに命令するソフトウェアをそこに記憶させてもよい。
【００２７】
第１のハードウェアコンポーネント５０４および第２のハードウェアコンポーネント５０６は、通信可能に互いに結合させてもよい。したがって、これらのコンポーネントは、プロセッサ５０２上に記憶されているソフトウェアに割り込みをかけずに、互いに情報を提供することができる。例えば、プロセッサ５０２によって１つ以上のタスクを実行するように、第１のハードウェアコンポーネント５０４および第２のハードウェアコンポーネント５０６を予めプログラミングしてもよい。図６中では、さらにより詳細に、このプロセスを図示した。
【００２８】
図６中で図示されているように、プロセッサ５０２は、第１のハードウェアコンポーネント５０４および第２のハードウェアコンポーネント５０６とインターフェースさせてもよい。いくつかの態様にしたがって、第１のハードウェアコンポーネント５０４は、外部メモリのようなさまざまなソースから、ローカルバッファ（例えば、データムーバー）の中にデータを移動させるのに適しているものであってもよい。第２のハードウェアコンポーネント５０６は、データアクセラレータのようなカスタムハードウェアブロックであってもよい。
【００２９】
６１０において図示されているように、プロセッサ５０２が、複数のタスクを実行するための第１のセットのコマンドを、第１のハードウェアコンポーネント５０４に発行してもよい。例えば、プロセッサ５０２が、外部記憶装置の位置からデータのブロックを中に入れるようにハードウェアコンポーネント５０４に命令してもよい。６１２において図示されているように、プロセッサ５０２が、その後、複数のタスクを実行するように第２のハードウェアコンポーネント５０６をプログラミングしてもよい。例えば、プロセッサ５０２は、第１のハードウェアコンポーネント５０４によって中に入れられた、データのブロックにおいて演算するように第２のハードウェアコンポーネント５０６に命令してもよい。指定されたタスクを実行するように、第１のハードウェアコンポーネントおよび第２のハードウェアコンポーネントを予めプログラミングしてもよいが、６１４において図示されているように、プロセッサ５０２がトリガメッセージを送るまで、動作は開始しない。
【００３０】
トリガメッセージの受信の際、第１のハードウェアコンポーネント５０４は、予めプログラミングされたタスクを実行するのを開始してもよい。いくつかの態様にしたがうと、最後の命令は、６１６において図示されているように、トリガメッセージを第２のハードウェアコンポーネント５０４に送るように第１のハードウェアコンポーネントに指示してもよい。トリガは、例えば、ハードウェア割込であってもよい。ステップ６１８と、６２０と、６２２とにおいて図示されているように、それぞれのハードウェアコンポーネントが、それ自体の処理の完了の際に命令を実行するように他のコンポーネントをトリガする。この処理の間、ソフトウェア割込に対する必要性はない。最後の命令が処理されたときに、最後の命令を処理しているハードウェアコンポーネント（ここでは、第１のハードウェアコンポーネント）が、６２４において図示されているように、割込をプロセッサ５０２に送ってもよい。図６中で図示されているように、ソフトウェア割込の数を、大幅に減少させることができる。いくつかの態様では、単一のソフトウェア割込だけが要求される。
【００３１】
図７は、さまざまな開示した態様したがった、さらに詳細にデータ処理動作を図示しているフローチャートである。７０２において図示されているように、ソフトウェアコンポーネントが、２つ以上のハードウェアコンポーネントをプログラミングしてもよい。ハードウェアコンポーネントをプログラミングすることは、それぞれのハードウェアコンポーネントによって実行されるべき一連の命令を提供することを含んでいてもよい。ハードウェアコンポーネントに関係するタスクキュー中に、一連の命令を記憶させてもよい。いくつかの態様にしたがうと、１つより多いハードウェアコンポーネントが、単一のタスクキューを共有してもよく、ここで、それぞれのハードウェアコンポーネントに対する命令は、一緒にインターリーブされる。
【００３２】
例示的な態様にしたがって、２つ以上のハードウェアコンポーネントは、データムーバーと、ハードウェアアクセラレータとを備えていてもよい。代替的に、または、データムーバーとハードウェアアクセラレータとに加えて、他のハードウェアコンポーネントも使用してもよい。データムーバーとハードウェアアクセラレータとに関連して、図７中では図示されている残りのプロセスを記述するが、これは、単なる例示であることに留意されたい。
【００３３】
上述したように、それぞれのハードウェアコンポーネントは、タスクキューと関係付けさせることができる。したがって、データムーバーおよびハードウェアアクセラレータそれぞれは、それに関係付けられたタスクキューを有する。タスクキューは、ソフトウェアによって前もって構成されていてもよい。ハードウェアアクセラレータに関係するタスクキューは、ソフトウェアによって制御される書き込みポインタによってゲート制御されてもよい。これもハードウェアアクセラレータに関係付けられている読み取りポインタもハードウェアによって制御されてもよい。
【００３４】
プログラミングされているタスクの実行が望まれるとき、７０４において図示されているように、ソフトウェアコンポーネントが、トリガ信号をデータムーバーに送ってもよい。トリガ信号の受信の際、７０６において図示されているように、データムーバーが、その第１のタスクを実行してもよい。例えば、第１のブロックのデータを外部メモリ位置から読み取り、そのデータを内部メモリ位置の中に移動させるように、データムーバーは命令されてもよい。ハードウェアアクセラレータに関係する書き込みポインタレジスタに書き込むように、データムーバーはさらに命令されてもよく、それにより、その割り当てられた命令を実行するのを開始するようにハードウェアアクセラレータをトリガする。また、イベントの受信まで、処理を停止するように、データムーバーは命令されてもよい。
【００３５】
データムーバーからのトリガの受信の際、７０８において図示されているように、ハードウェアアクセラレータは、その命令を実行するのを開始してもよい。これは、例えば、データムーバーによってロードされたデータに対してさまざまなタイプの演算を実行することを含んでいてもよい。キュー待ちしているタスクの完了の際、７１０において図示されているように、ハードウェアアクセラレータが、ハードウェア割込を発行し、これは、動作するのを続けるようにデータムーバーをトリガする。トリガの受信の際、７１２において図示されているように、データムーバーは、完了するための付加的なタスクをデータムーバーが有しているか否かを決定してもよい。完了するための付加的なタスクをデータムーバーが有している場合には、処理は、ステップ７０６に戻る。データムーバーが、実行する付加的なタスクを有していない場合、７１４において図示されているように、データムーバーは、割込をソフトウェアに送ってもよい。ハードウェア割込を介してデータムーバーおよびハードウェアアクセラレータが互いにトリガすることを可能にすることは、割込の待ち時間を減少させ、コンテキスト切り替えの数を減少させる。さらには、データムーバーおよびハードウェアアクセラレータが、より効率的に使用され、これにより、全体の待ち時間を減少させる。
【００３６】
上述したように、複数のタスクを実行するように、ハードウェアアクセラレータやデータムーバーのようなハードウェアコンポーネントをソフトウェアによって予めプログラミングしてもよい。あるハードウェアアクセラレータのケースでは、アクセラレータからの出力の長さがランダムであることがある。しかしながら、データムーバーもまた予めプログラミングされていることから、典型的に、ハードウェアアクセラレータから出力される最悪のケースに対して、データムーブアウト命令はプログラミングされる。時間の大半では、出力の長さは、予めプログラミングされた長さよりも、より短いであろうことから、このようなコンフィギュレーションは、帯域幅の不必要な浪費を招くことがある。
【００３７】
本装置および方法のいくつかの態様にしたがって、ハードウェアアクセラレータの最も一般的な出力のデータ長に対応するしきい値を規定してもよい。いくつかの態様では、ハードウェアアクセラレータからのすべての出力の大部分がしきい値を超えないように、しきい値を規定するのが好ましいかもしれない。しかしながら、他の何らかの所望のパラメータにしたがって、しきい値を構成してもよい。例えば、少なくとも、アクセラレータのすべての出力の予め規定された割合がしきい値を超えないように、または、アクセラレータの出力の少なくとも一部がしきい値を超えないように、しきい値を構成してもよい。図８は、しきい値処理をさらに詳細に図示しているフローチャートである。
【００３８】
８１０において図示されているように、ハードウェアアクセラレータのようなハードウェアコンポーネントが、予めプログラミングされている命令にしたがって、データを受信して処理する。この処理の完了の際、８１２において図示されているように、データムーバーのような第２のハードウェアコンポーネントによって出力されることになる命令の結果が、予め規定されたしきい値を超えているか否かを、ハードウェアアクセラレータが決定する。さらに詳細には、ハードウェアアクセラレータは、ソフトウェアによって予め構成されているしきい値決定モジュールを備えていてもよい。しきい値は、ハードウェアアクセラレータによって処理されるデータのサイズに対する最大値を設定してもよい。
【００３９】
８１４において図示されているように、しきい値を超えている場合、ムーブアウトタスクが準備されているものでは足らないことを示している割込を、ハードウェアアクセラレータが発生させてもよい。すなわち、データムーバー中で予めプログラミングされたデータのムーブアウトのサイズは、ハードウェアアクセラレータによってちょうど処理されたデータに対応するには十分な大きさではないことを、割込は示している。割込の受信の際、８１６において図示されているように、プログラミングされたデータのムーブアウトサイズの限界を超えた過剰データを、ソフトウェアが読み取ってもよい。この割込の間、ハードウェアアクセラレータは、ストールされてもよく、いったん、割込が解消されると、ソフトウェアによって「許可」が与えられてもよい。その後、処理が、続いてもよい。例えば、８１８において図示されているように、ハードウェアアクセラレータまたはソフトウェアコンポーネントが、データムーバーにトリガを送ってもよく、データムーバーが、予めプログラミングされた命令にしたがって、データを外に移動させてもよい。ステップ８１２において、しきい値を超えていないことが決定された場合、処理はまた、ステップ８１８において続いてもよく、ここで、データムーバーが、プログラミングされたように、データを外に出してメインメモリに移動させる。
【００４０】
いくつかの態様にしたがって、図８に関連して記述したしきい値を、適応的に調整してもよい。例えば、準備されたものでは足らないデータのムーブアウト命令から結果的に生じる割込の頻度が、所定の時間期間にわたって多い場合、ソフトウェアが、しきい値のサイズを増加させるかもしれない。同様に、非常に多くの割込が所定の時間期間にわたって受信されなかった場合、しきい値のサイズは減少されるかもしれない。したがって、準備されていないデータムーブアウト命令の結果として受信したすべての割込を追跡する、タイマーとカウンタとにより、ソフトウェアを構成してもよい。外に出されるデータ量を制御しながら、準備されたものでは足らないことに対処するメカニズムを提供することにより、電力消費とシステムバス帯域幅とを減少させることができる。加えて、より少ない数の割込を得ることによって、ソフトウェアの複雑さを減少させることができる。さらには、例外的なケースを、取り扱いのためにソフトウェアに渡すことによって、ハードウェアはシンプルに保たれる。しきい値を適応的に調整することは、低い割込レートを維持することと、データを不必要に移動させるのを避けることとの間の良好なトレードオフを確実にするのを助けることができる。
【００４１】
いくつかの態様にしたがって、ソフトウェア処理および待ち時間を減少させるとともに、バスの帯域幅の使用を減少させるために、ソフトウェア中で典型的に実行される動作をハードウェアに移してもよい。例えば、データフレームヘッダを処理するロジックを有するように、ハードウェアアクセラレータを構成してもよい。典型的に、ハードウェアは、単に、データを解読し、その後、さらなる処理のために、このデータをソフトウェアに転送する。ソフトウェアは、その後、データを処理するための命令とともに、ハードウェアにこのデータを転送して戻す。これは、ソフトウェア処理と、待ち時間と、バス帯域幅とを減少させることができる。
【００４２】
いくつかの例示的な態様では、例えば、データフレームヘッダをパースし、このヘッダを、複数の予め規定されたテンプレートと比較し、このヘッダに基づいて次の処理ステップを決定するためのロジックを有するように、ハードウェアアクセラレータを構成してもよい。ヘッダのマッチングが見出されなった場合、または、テンプレートの再構成が必要である場合にのみ、ソフトウェア対話が必要とされる。
【００４３】
図９は、テンプレート処理を実現し得る環境の例である。図９中で図示されているように、ハードウェアアクセラレータ９２２は、制御プロセッサ９２０によって制御され、入力データを受け取り、フィルタリングモジュール９２２を通して、その入力データを処理してもよい。フィルタリングモジュール９２２は、プロセッサ９１４、メモリ９１６、またはインターフェース９１８−１ないし９１８−Ｎのうちの１つ以上に、その出力を提供してもよい。メモリ９１６は、内部メモリまたは外部メモリであってもよい。インターフェース９１８−１ないし９１８−Ｎは、例えば、ラップトップ、ＰＤＡ、または他の何らかの外部電子デバイスのような外部デバイスへの接続を提供してもよい。例えば、インターフェース９１８−１ないし９１８−Ｎは、ＵＳＢポート、ブルートゥース、ＳＤＩＯ、ＳＤＣＣ、または他のワイヤードまたはワイヤレスインターフェースを含んでいてもよい。
【００４４】
フィルタリングモジュール９２２は、複数の予め規定されたテンプレートを含んでいてもよく、出力データをどこにルーティングすべきかについてのルーティング決定を行うために、この複数の予め規定されたテンプレートを使用してもよい。例えば、暗号化されたデータが、ハードウェアアクセラレータ９１２によって受け取られ、解読されてもよい。フィルタリングモジュール９２２中のプログラミングされたテンプレートに基づいて、解読したデータを、プロセッサ９１４に、メモリ９１６に転送してもよく、または、インターフェース９１８−１ないし９１８−Ｎを通して外部デバイスに転送してもよい。いくつかの態様にしたがうと、ハードウェアアクセラレータ９１２が処理することが困難である、より複雑な演算のために、プロセッサ９１４をバックアップフィルタとして使用してもよい。
【００４５】
いくつかの態様にしたがうと、それぞれのトラフィックテンプレートは、１つ以上のパラメータと、それぞれのパラメータに対する特定の値とを含んでいてもよい。それぞれのパラメータは、ＩＰ、ＴＣＰ、ＵＤＰ、または他の何らかのプロトコルに対するヘッダの特定のフィールドに対応していてもよい。例えば、ＩＰパラメータは、発信元アドレスと、宛先アドレスと、アドレス範囲と、プロトコルとを含んでいてもよい。ＴＣＰまたはＵＤＰパラメータは、発信元ポートと、宛先ポートと、ポート範囲とを含んでいてもよい。トラフィックテンプレートは、ヘッダ中のそれぞれのパラメータの位置を特定する。したがって、ハードウェアアクセラレータは、使用中のプロトコルの何らかの実際の知識を有する必要はない。むしろ、ハードウェアは、テンプレートパラメータとの、ヘッダのマッチングを実行する。
【００４６】
例えば、宛先ポートｘに対するＴＣＰフレームを検出するために、トラフィックテンプレートを規定して、ＩＰｖ４パケット中で送ってもよい。テンプレートは、以下のように設定される３つのパラメータを含んでいてもよい：バージョン＝ＩＰｖ４、プロトコル＝ＴＣＰ、宛先ポート＝ｘ。一般的に、任意のプロトコルヘッダ中の任意のフィールドを、トラフィックテンプレートパラメータとして使用してもよい。任意の数のテンプレートを規定してもよく、それぞれのテンプレートを、任意のセットのパラメータと関係付けてもよい。異なるアプリケーション、ソケット等に対して、異なるテンプレートを規定してもよく、異なるセットのパラメーにより規定してもよい。
【００４７】
それぞれのテンプレートはまた、マッチングが存在した場合に実行するアクションと、マッチングが存在しない場合に実行するアクションとに関係していてもよい。データフレームの受信の際に、フレームの受信値を、テンプレートの特定された値と比較してもよい。受信値が、特定された値とマッチングした場合にはマッチングを宣言してもよく、そうでない場合には、マッチングなしを宣言してもよい。マッチングなしが規定されている場合には、ハードウェアは、ソフトウェア割込を発行して、ソフトウェアがフレームを処理してもよい。
【００４８】
ここで記述したように、データ処理は、典型的に、第１の位置からデータを中に移動させることと、データにおいて演算することと、データを外に出して戻すように移動させることとを伴う。典型的に、低コストで、長い待ち時間のメモリ中で、単一の大きいメモリプールを規定する。この長い待ち時間のメモリプールからデータを中に移動させ、演算して、メモリプールに戻すように移動させる。しかしながら、最近アクセスされたデータは、再使用されることが多い。したがって、すべてのアクセスの後に待ち時間の長いメモリプールに向けてデータを外に出して戻すように不必要に移動させることは、システムバス帯域幅を増加させる。本装置および方法のいくつかの態様にしたがうと、物理メモリ中に複数のメモリプールを規定してもよい。メモリ割振は、利用可能な最良のメモリプールに基づいていてもよく、または、データがどのくらいの頻度でアクセスされる可能性があるかに依存していてもよい。
【００４９】
図１０は、いくつかの態様にしたがった、複数のメモリプールを実現するシステム１０００の例である。システム１０００は、短い待ち時間のメモリ１０１２と、プロセッサ１０１４と、データムーバー１０１６と、ハードウェアアクセラレータ１０１８とを備えているＡＳＩＣ９１０を具備していてもよい。長い待ち時間のメモリ１０２０も、提供してもよい。短い待ち時間のメモリ９１２を、内部メモリとして図示し、長い待ち時間のメモリ１０２０を外部メモリとして図示しているが、このコンフィギュレーションは、単なる例である。いずれかのメモリ、または、両方のメモリは、内部にあっても、または、外部にあってもよい。プロセッサ１００４は、メモリ制御装置１０２２を備えていてもよく、このメモリ制御装置１０２２は、長い待ち時間のメモリ１０２０と、短い待ち時間のメモリ１０１２とへのアクセスを制御する。大部分の演算が短い待ち時間のメモリ１０１２を使用する場合、より効率的にデータを処理することができる。したがって、長い待ち時間のメモリ１０２０へのアクセス数を制限するように、メモリ制御装置１０２２を構成してもよい。
【００５０】
通常の演算と同じように、例えば、待ち時間の長いメモリ１０２０と待ち時間の短いメモリ９１２との間で、データを入れたり出したりするように、データムーバー１０２０を構成してもよい。いくつかの例示的な態様にしたがうと、短い待ち時間のメモリ１０１２からのデータにおいて直接的に演算するように、ハードウェアアクセラレータ１０１８を構成してもよい。例えば、いくつかの態様では、スペースが利用可能である限り、短い待ち時間のメモリ１０１２中に、データを維持してもよい。他の態様では、サービス品質要件、通信チャネルプロパティ、および／または他のファクターのような、特定のデータ送信特性に基づいて、短い待ち時間のメモリ１０１２中にデータを記憶および維持してもよい。
【００５１】
小さくて高速なプールと、大きくてより低速なプールとを規定できるので、複数のメモリプールを提供することは、ハードウェアコストを減少させることができる。さらには、システムバス帯域幅と電力とを減少させることができる。
【００５２】
いくつかの態様にしたがうと、短い待ち時間のメモリ１０１２中に記憶されているデータは、ハードウェアとソフトウェアとの両方によってアクセスされてもよい。ペイロードは、ハードウェアアクセラレータ１０１８によって処理されてもよく、これにより、短い待ち時間のアクセスが確実になる。ハードウェアアクセラレータ１０１８の至近距離に、短い待ち時間のメモリ１０１２を配置してもよい。したがって、データ転送は、システムバスを横切る必要はなく、これにより、電力とシステムバス帯域幅とを節約する。
【００５３】
（例えば、ヘッダを除去するとき、複数のフローからデータを多重化するとき、セグメント化／再組み立て等のとき）それぞれのレイヤにおけるインプリメンテーションを簡単にするために、データを処理するとき、データは、複数回コピーされながら、データスタックを通過することが多い。本装置および方法のいくつかの態様にしたがうと、同じ位置にデータを残して、異なるレイヤに同じデータを演算させることによって、反復されるコピーを防ぐことができる。それぞれのデータの演算命令が、ハードウェアまたはソフトウェアによって実行されようとなかろうと、ローカルハードウェアバッファのような同じ位置を指してもよい。例えば、ＵＭＴＳ解読が実行された後、解読されたデータをコピーして、ローカルハードウェアバッファのようなローカルメモリの中に戻してもよい。ソフトウェアが、プロトコルヘッダを評価することによってペイロードを連結させた後に、ソフトウェアは、ＴＣＰチェックサム計算またはＰＰＰフレーミングのいずれかを実行するようにハードウェアアクセラレータに命令してもよい。このような処理の間に、外部メモリ位置からデータをあちこちに移動させる必要はない。
【００５４】
データ送信のために、データフレームは、典型的に、使用中のプロトコルに依存して、より小さいユニットに区分してもよい。したがって、関連するペイロードは、複数の送信に分割されることが多い。それぞれのユニットに対するメモリブロックは、典型的に、割り振られ、そして、より高いレイヤに渡されるときに、ペイロードをより大きなデータユニットに連結させるために、これらのユニットのリンクされたリストが形成される。
【００５５】
図１１は、受信パケットデータユニットの典型的な記憶割振を図示している。図１１中で図示されているように、到来データフレーム１１００は、それぞれが、ヘッダ（Ｈ１、Ｈ２、Ｈ３）とペイロード（Ｐ１、Ｐ２、Ｐ３）とを含んでいる複数のプロトコルデータユニット（ＰＤＵ）を含んでいてもよい。典型的に、データフレームは、複数のセグメントに区分され、それぞれのセグメントは、別個のデータサービスメモリ（ＤＳＭ）ユニット中に記憶されている。図１１中で示されているように、第１のＤＳＭユニット１１０４中にＰＤＵ１（Ｈ１＋Ｐ１）が記憶され、第２のＤＳＭユニット１１０６中にＰＤＵ２（Ｈ２＋Ｐ２）が記憶され、第３のＤＳＭユニット１１０８中にＰＤＵ３（Ｈ３＋Ｐ３）が記憶されている。
【００５６】
この態様でデータを記憶することは、さまざまな理由で非効率である。例えば、それぞれのＤＳＭユニットは、それ自体のヘッダＨを含んでおり、これは、オーバーヘッドを増加させる。加えて、ＤＳＭプール内のそれぞれのＤＳＭユニットは、サイズが同一にされる。したがって、ＰＤＵが、予め構成されているＤＳＭユニットサイズよりも、小さいときに、スペースが浪費される。１１０４および１１０８において図示されているように、ＤＳＭユニットを埋めるために、パディングデータＰが、ＰＤＵの後に追加される。さらには、セグメント化されたＰＤＵを後で連結させるために、それぞれのＰＤＵがどこに記憶されているかや、ＰＤＵが他のものにどのように関連しているかを示した、リンクされたリストを維持しなければならない。
【００５７】
本装置および方法のいくつかの例示的な態様にしたがうと、異なる送信からのチャネルごとの受信データは、ヘッダを除去することによって、連続したメモリの、より大きいブロックに集約され、これにより、より高いレイヤに対する連続したペイロードを直接的に連結させることができる。このことは、結果として、アプリケーションデータのコヒーレンシーとなるとともに、連結により付加的なメモリの割り振りに対する必要性を減少させることになるかもしれない。さらには、パディングオーバーヘッド、メモリ割り振り演算、およびメモリオーバーヘッドの減少により、メモリが減少される。
【００５８】
上述したように、暗号化されたデータフレームをハードウェアが受信したときに、フレームは、解読され、さらなる処理のためにハードウェアに転送される。いくつかの例示的な態様にしたがうと、フレームをソフトウェアに転送せずに、関連するペイロードを連結させるように、ハードウェアアクセラレータのようなハードウェアコンポーネントをさらに構成してもよい。
【００５９】
図１２は、いくつかの態様にしたがった、データ処理および記憶を図示している簡略化したブロック図である。図１２中で図示されているように、到来データフレーム１２０１は、それぞれが、ヘッダとペイロードとを含んでいる複数のプロトコルデータユニットを含んでいてもよい。区分ユニット１２０２は、到来データフレーム１２０１を処理するように構成していてもよい。処理は、例えば、ヘッダとペイロードとを分離させることを含んでいてもよい。関係するペイロードに対するポインタとともに、ヘッダ（Ｈ１、Ｈ２、Ｈ３）を、メモリ１２０３中に記憶させてもよい。
【００６０】
ハードウェア連結ロジック１２０４が、その後、ペイロードを組み合わせて、これらを単一のＤＳＭ中に記憶させてもよい。ソフトウェアロジック１２０６によって、区分ユニット１２０２とハードウェア連結ロジック１２０４との両方をプログラミングおよび／または制御してもよい。例えば、ソフトウェアロジック１２０６が、ヘッダを除去し、ポインタ情報を発生させるように区分ユニット１２０２をプログラミングしてもよい。加えて、ソフトウェアロジック１２０６が、あるペイロードまたはヘッダをフェッチするように連結ロジック１２０４に指示してもよい。
【００６１】
いくつかの態様にしたがうと、複数の送信からのデータを単一のＤＳＭ中で組み合わせることができる。たとえＤＳＭが一杯でない場合でも、データは、いったんＤＳＭ中に記憶されると、他のレイヤに渡されてもよい。加えて、データは、ＤＳＭユニットの終わりに追加されてもよい。
【００６２】
典型的に、データが受信されたとき、ヘッダおよびペイロードは互いに分離されない。むしろ、ヘッダおよびペイロードは、典型的に、一緒に記憶される。しかしながら、パケットをどのように処理するかについての、大部分の決定は、パケットヘッダだけに基づいている。本装置および方法の、いくつかの態様にしたがうと、ヘッダのみをレイヤからレイヤに移動させることができる。したがって、処理する必要があるときのみ、ペイロードを移動させることができ、したがって、ペイロードデータのコヒーレンシーとキャッシュ効率とを改善させ、バスの利用を減少させる。
【００６３】
典型的なワイヤレスデバイスでは、メインプロセッサが、すべてのモデム関連機能性を取り扱う。図１３は、典型的なコンフィギュレーションを図示しているブロック図である。メインプロセッサ１３０４は、複数のバス１３０６を通して、ハードウェア１３０８に通信可能に結合されている。ハードウェア１３０８によって演算されるデータを記憶するために、メモリ１３０２が提供されている。動作において、メインプロセッサ１３０４がハードウェア１３０８に対して命令を発行するときはいつでも、命令は、複数のバス１３０６を横切らなければならない。さらには、ハードウェア１３０８は、それぞれの命令を完了した後に、メインプロセッサ１３０４に戻すようにソフトウェア割込を発行しなければならない。バスを横切ってソフトウェア割込を発行することは、実質的な処理待ち時間を増大させる。
【００６４】
さまざまな例示的な態様にしたがうと、ハードウェアの近くに位置するミニプロセッサを提供してもよい。これにより、待ち時間が減少する。図１４は、このようなコンフィギュレーションを図示しているブロック図である。メインプロセッサ１４０４は、複数のバス１４０６を通して、ハードウェア１４０８に通信可能に結合されている。ハードウェア１４０８によって処理されたデータを記憶させるために、メモリ１４０２が提供されている。
【００６５】
ハードウェア１４０８の至近距離に、ミニプロセッサ１４１０が提供されている。ミニプロセッサ１４１０は、メインプロセッサ１４０４と同じメモリ１４０２へのアクセスを有している柔軟にプログラム可能なプロセッサであってもよい。ハードウェア１４０８と直接的に対話するように、ミニプロセッサ１４１０をプログラミングしてもよい。ヘッダ抽出、暗号化、解読、データ移動、連続的な記憶、ＩＰフィルタリング、ヘッダ挿入、ＰＰＰフレーミング、および／または他のタスクのような、タスクを実行するようにハードウェア１４０８に指示するように、ミニプロセッサ１４１０をプログラミングしてもよい。
【００６６】
いくつかの態様にしたがうと、ワイヤレスデバイスにおいて新しい情報が受信されたとき、メインプロセッサ１４０４が、データを処理するのを開始するように、そしてハードウェア１４０８による処理の後に、その結果をメモリ１４０２の中に記憶させるように、ミニプロセッサ１４１０に指示してもよい。したがって、ハードウェアは、それぞれのタスクの後に、もはや、メインプロセッサ１４１４に戻すように割り込みをかける必要はない。加えて、ミニプロセッサ１４１０は、プログラム可能であるので、処理要件の変更がある場合には、容易に再プログラム化することができる。例えば、エアインターフェースの変更がある場合には、または、新しいプロトコルリリースが利用可能である場合には、変更を実現するようにミニプロセッサ１４１０を再プログラミングすることができる。
【００６７】
図１４中で図示されているコンフィギュレーションにしたがうと、待ち時間が、純粋なソフトウェアインプリメンテーションと比較して減少する。加えて、割込と、メモリアクセスと、バス待ち時間とを減少させることができる。さらには、純粋なソフトウェアアプリケーション中よりもハードウェアメモリの近くにミニプロセッサが実現できるとき、電力消費を減らすことができる。
【００６８】
いくつかの態様にしたがうと、メインプロセッサおよびミニプロセッサの両方は、１つ以上の専用ハードウェアブロックへのアクセスを有していてもよい。これを図１５中に図示している。メインプロセッサ１５０２およびミニプロセッサ１５０４は、複数の専用ハードウェアブロックに通信可能にそれぞれ結合されている。複数の専用ブロックは、第１のハードウェアブロック１５０６と、第２のハードウェアブロック１５０８と、第３のハードウェアブロック１５１０とを含む。ハードウェアブロックは、例えば、ハードウェアアクセラレータ、データムーバー、暗号化エンジン、解読エンジン、および／または他の何らかの専用ハードウェアブロックを含んでいてもよい。
【００６９】
メインプロセッサ１５０２およびミニプロセッサ１５０４は、ハードウェアブロック１５０４と、１５０６と、１５０８とのうちの異なる１つにそれぞれ同時にアクセスしてもよい。このことは、並列処理を可能にする。例えば、メインプロセッサ１５０２は、解読専用であってもよい第１のハードウェアブロック１５０６にアクセスするように構成してもよい一方で、ミニプロセッサ１５０４は、暗号化専用であってもよい第２のハードウェアブロック１５０８に同時にアクセスするように構成してもよい。このように、アップリンクおよびダウンリンク処理が、同時に生じることがある。
【００７０】
（図１５中で図示されているミニプロセッサ１５０４のような）ミニプロセッサが、複雑なタスクを取り扱うことができないことがある。例えば、パケットの再送信を扱う際に、シーケンス番号がロールオーバーしたときを決定する際に関係する複雑なロジックが存在する。いくつかの態様にしたがうと、メインプロセッサは、ミニプロセッサに対するバックアップとして機能し、ミニプロセッサによって適切に取り扱うことができないこれらの複雑なタスクを取り扱うように構成してもよい。図１６は、このような複雑な論理を取り扱うためのプロセスを図示しているフローチャートである。
【００７１】
１６０２において図示されているように、プロセスは、ミニプロセッサが、処理すべきデータを受信したときに開始する。いくつかの態様にしたがうと、予め規定された処理方法を使用して、あるタイプのタスクを常に処理するように、ミニプロセッサをプログラミングしてもよい。したがって、１６０４において図示されているように、第１の処理方法を使用して、データを処理するようにハードウェアに命令するようにミニプロセッサを構成してもよい。例えば、シーケンス番号がロールオーバーすべきか否かを決定するケースでは、シーケンス番号はロールオーバーしないと常に仮定するようにミニプロセッサを構成してもよい。
【００７２】
１６０６において図示されているように、メインプロセッサが、ハードウェアによって処理されたデータを受け取る。メインプロセッサはまた、どのようにデータが処理されたかの表示を受け取ってもよい。１６０８において図示されているように、データが正しく処理されたか否かを、メインプロセッサが決定する。データが正しく処理されたことが決定された場合には、１６１０において図示されているように、メインプロセッサは、そのデータを、メモリのようなその宛先に単に転送する。しかしながら、データが正しく処理されなかったことをメインプロセッサが検出した場合、１６１２において図示されているように、メインプロセッサは、ハードウェアによって実行されるアクションをリバースし、そのデータを正しく処理するようにハードウェアを再プログラミングすることができる。
【００７３】
典型的なデータ移動演算では、プロセッサは、移動させるべき、かなりの量のデータごとにコピータスクを実行するようにデータムーバーをプログラミングする。さまざまな例示的な態様にしたがうと、ハードウェアの近くに位置しているコピーエンジンが備えられていてもよい。図１７は、コピーエンジンを組み込んでいるシステム１７００のブロック図である。システム１７００は、データムーバー１７０２と、メインメモリ１７０４と、コピーエンジン１７１０と、コピーエンジンメモリ１７０６と、ハードウェア１７０８とを備えている。コピーおよび／またはデータ移動演算を促進するためにハードウェア１７０８上に直接的に作用するように、コピーエンジン１７１０をプログラミングしてもよい。コピーエンジン１７１０が、コピーエンジン１７１０自体の専用メモリ１７０６と関係付けてもよく、この専用メモリ１７０６は、メインメモリ１７０４からのデータを記憶および取り出しすることに関係する待ち時間を減少させる。コピーエンジンメモリ１７０６からのデータをフェッチし、それを、メインメモリ１７０４中に記憶させるように、データムーバー１７０２をプログラミングしてもよい。
【００７４】
コピーエンジンを備えることは、ビットレベル粒度がビットレベル幅でプロトコルをサポートすることを可能にする。加えて、単一のプログラミングタスクを使用しての、均一に散在されている宛先位置への、均一に散在されているソースデータのコピーを可能にすることによって、プログラミングオーバーヘッドを減少させることができる。さらには、例えば、ヘッダ抽出や、挿入や、データ連結またはセグメント化や、バイト／ワード整列とともに、データ操作に対する通常のデータムーバータスクのような、ソフトウェアによって使用される任意のタイプの動作に対してコピーエンジンを使用してもよい。
【００７５】
いくつかの態様にしたがうと、単一のタスク中に、複数のＰＤＵからのデータをコピーするように、コピーエンジン１７１０をプログラミングしてもよい。図１８中で図示されているように、データフレームは、それぞれが、ヘッダ（Ｈ１、Ｈ２、およびＨ３）と、ペイロード（Ｐ１、Ｐ２、Ｐ３）とを含んでいる複数のＰＤＵを含んでいてもよい。ヘッダとペイロードのサイズはアプリオリに知られていてもよく、これらのサイズを知るようにコピーエンジンをプログラミングしてもよい。例えば、図１８中で図示されているように、ヘッダ１８０２のようなすべてのヘッダは、サイズＸのものであってもよい一方で、ペイロード１８０４のようなすべてのペイロードは、サイズＹのものであってもよい。ヘッダおよびペイロードサイズの知識に基づいて、単一のタスク中に、Ｎ個のヘッダまたはＮ個のペイロードをコピーするように、コピーエンジンをプログラミングしてもよい。
【００７６】
ここで開示した実施形態に関連して記述した、さまざまな例示的な、論理、論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、あるいは他のプログラマブルロジックデバイス、ディスクリートゲートまたはトランジスタロジック、ディスクリートハードウェアコンポーネント、あるいは、ここで記述した機能を実行するように設計されているこれらの任意の組み合わせで実現しても、あるいは、実行してもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替実施形態では、プロセッサは、何らかの従来のプロセッサ、制御装置、マイクロ制御装置、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスの組み合わせとして、例えば、ＤＳＰとマイクロプロセッサの組み合わせとして、複数のマイクロプロセッサとして、ＤＳＰコアに関連した１つ以上のマイクロプロセッサとして、あるいは、このような他の何らかの構成として実現してもよい。加えて、少なくとも１つのプロセッサは、上述したステップおよび／またはアクションのうちの１つ以上を実行するように動作可能な１つ以上のモジュールを備えていてもよい。
【００７７】
さらに、ここに開示した態様と関連して記述した方法またはアルゴリズムの、ステップおよび／またはアクションは、直接、ハードウェアで、プロセッサにより実行されるソフトウェアモジュールで、あるいは、２つのものを組み合わせたもので具体化してもよい。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーブバルディスク、ＣＤ−ＲＯＭ、あるいは技術的に知られている他の何らかの形態の記憶媒体中に存在していてもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合させてもよい。代替実施形態では、記憶媒体はプロセッサと一体化してもよい。さらに、いくつかの態様では、プロセッサおよび記憶媒体は、ＡＳＩＣ中に存在していてもよい。加えて、ＡＳＩＣは、ユーザ端末中に存在していてもよい。代替実施形態では、プロセッサおよび記憶媒体は、ユーザ端末において、ディスクリートコンポーネントとして存在していてもよい。加えて、いくつかの態様では、方法またはアルゴリズムのステップおよび／またはアクションは、コンピュータプログラムプロダクトの中に組み込まれていてもよい、機械読み取り可能媒体および／またはコンピュータ読み取り可能媒体上で、１つまたは任意の組み合わせ、あるいは、１つまたは任意のセットのコードおよび／または命令として存在していてもよい。
【００７８】
１つ以上の態様では、記述した機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせ中で実現してもよい。ソフトウェア中で実現した場合、機能は、１つ以上の命令またはコードとしてコンピュータ読み取り可能媒体上に記憶させてもよく、あるいは、１つ以上の命令またはコードとしてコンピュータ読み取り可能媒体上に送信されてもよい。コンピュータ読み取り可能媒体は、１つの場所から別の場所へのコンピュータプログラムの転送を促進する何らかの媒体を含む、コンピュータ記憶媒体および通信媒体の双方を含む。記憶媒体は、コンピュータによってアクセスできる何らかの利用可能な媒体であってもよい。例示によると、このようなコンピュータ読み取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、または他の光ディスク記憶デバイス、磁気ディスク記憶デバイス、または他の磁気記憶デバイス、あるいは命令またはデータ構成の形態で所望のプログラムコードを伝送または記憶するために使用でき、コンピュータによってアクセスできる他の何らかの媒体を含むことができるが、これらに限定されない。また、あらゆる接続は、コンピュータ読み取り可能媒体と呼ばれることがある。例えば、ソフトウェアが、ウェブサイトから、サーバから、あるいは同軸ケーブル、ファイバ光ケーブル、撚り対、デジタル加入者線（ＤＳＬ）、または赤外線、無線、マイクロ波のようなワイヤレス技術を使用している他の遠隔ソースから送信された場合、同軸ケーブル、ファイバ光ケーブル、撚り対、ＤＳＬ、あるいは赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義に含まれる。ここで使用したようなディスク（ｄｉｓｋおよびｄｉｓｃ）は、コンパクトディスク（ＣＤ）、レーザディスク、光ディスク、デジタル汎用ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、およびブルーレイ（登録商標）ディスクを含むが、ディスク（ｄｉｓｋ）は、一般的に、データを磁気的に再生する一方で、ディスク（ｄｉｓｃ）は、一般的に、データをレーザによって光学的に再生する。先のものを組み合わせたものもまた、コンピュータ読み取り可能媒体の範囲内に含められるべきである。
【００７９】
先述した開示は、例示的な態様および／または実施形態を説明しているが、添付した特許請求の範囲によって規定したような、記述した態様および／または実施形態の範囲から逸脱することなく、ここで、さまざまな変更および改良を行うことができることに留意すべきである。さらに、記述した態様および／または実施形態のエレメントは単数で記述または主張されていることがあるが、単数形への限定が明示的に述べられていない限り、複数が企図されている。加えて、任意の態様および／または実施形態のすべて、あるいは、任意の態様および／または実施形態の一部は、特に明記がない限り、他の何らかの態様および／または実施形態のすべて、あるいは、他の何らかの態様および／または実施形態の一部により利用されてもよい。
【図１】
2013502016.tif 000003
【図２】
2013502016.tif 000004
【図３】
2013502016.tif 000005
【図４】
2013502016.tif 000006
【図５】
2013502016.tif 000007
【図６】
2013502016.tif 000008
【図７】
2013502016.tif 000009
【図８】
2013502016.tif 000010
【図９】
2013502016.tif 000011
【図１０】
2013502016.tif 000012
【図１１】
2013502016.tif 000013
【図１２】
2013502016.tif 000014
【図１３】
2013502016.tif 000015
【図１４】
2013502016.tif 000016
【図１５】
2013502016.tif 000017
【図１６】
2013502016.tif 000018
【図１７】
2013502016.tif 000019
【図１８】
2013502016.tif 000020
【国際調査報告】
2013502016.tif 000021
2013502016.tif 000022
2013502016.tif 000023