"モデムボードにおいてマルチコアプロセッサを用いてワイヤレスネットワークにおけるデータパケットを処理する、コンピュータ実装方法であって、ポーリングモードでキューマネージャを実行している間、入力データパケットのバッファを取得し、フレームキューに前記データパケットをエンキューするステップであって、前記フレームキューは、前記キューマネージャによって扱われるべきフレーム記述子のリンクされたリストを含む、ステップと、キューに入れられたフレーム記述子について、前記キューマネージャを定期的にポーリングするためにカーネルスレッドを使用するステップと、前記ハードウェアコンポーネントからN個のフレーム記述子をデキューするステップであって、ここでNは、調整可能なパラメータである、ステップと、カーネル空間でデキューされた各フレーム記述子に関連するコールバック機能を実行するステップであって、前記コールバック機能は、前記フレーム記述子内のデータパケットのバッファポインタを処理のためにバッファ記述子のカーネルからユーザへのマップされたリングにエンキューする、ステップと、コンテキストスイッチなしでメッセージングモジュールに前記データパケットを送るステップとを含む方法。前記キューマネージャは、ハードウェアコンポーネントを含み、ソフトウェア初期化の間にポーリングモードで実行するように構成されている請求項1に記載の方法。バッファマネージャは、前記入力データパケットの前記バッファを提供する請求項1に記載の方法。前記マルチコアプロセッサは、データプレーン機能を実行するように構成された1つまたは複数のデータプレーンコアと、コントロールプレーン機能を実行するように構成された1つまたは複数のコントロールプレーンコアとを含み、前記方法は、前記データプレーンコアで受信された重要でない割込みを無効にし、コントロールプレーンコアに前記重要でない割込みをルーティングするステップをさらに含む請求項1に記載の方法。前記マルチコアプロセッサは、すべての非リアルタイムのスレッドおよびプロセスが、すべてのコントロールプレーン活動専用のプロセッサコアに結合され、すべてのデータプレーン活動専用のプロセッサコアは、データ経路の実装またはレイヤ2処理に直接的に必要ないスレッドをホストまたは実行しないように構成されている請求項1に記載の方法。電気通信ネットワークの単一のSMPパーティション内でマルチセルサポートを提供するためのシステムであって、モデムボードと、複数のプロセッサコアを有するマルチコアプロセッサであって、複数のデータプレーンコアに到着する重要でない割込みを無効にし、複数のコントロールプレーンコアに、前記重要でない割込みをルーティングするように構成されている、マルチコアプロセッサとを備えるシステム。前記マルチコアプロセッサは、すべての非リアルタイムのスレッドおよびプロセスが、すべてのコントロールプレーン活動専用のプロセッサコアに結合され、すべてのデータプレーン活動専用のプロセッサコアは、データ経路の実装またはレイヤ2処理に直接的に必要ないスレッドをホストまたは実行しないように構成されている請求項6に記載のシステム。前記マルチコアプロセッサは、前記プロセッサコアで実行されるアプリケーションソフトウェアから任意のコア固有の詳細を隠すコア抽象化レイヤを含むように構成されている請求項6に記載のシステム。前記マルチコアプロセッサは、前記電気通信ネットワークの少なくとも6つのセルにサービスを提供するように構成されている請求項6に記載のシステム。前記マルチコアプロセッサは、8つのプロセッサコアを含む請求項6に記載のシステム。したがって、たとえば、aリアルタイムのプロセスまたはスレッドだけを実行することを専用とするデータプレーンコアで重要でない割込みを無効にして、コントロールプレーンコアにこれらの割込みをルーティングすることによって、かつbデフォルトの割込みモードではなく、ポーリングモードで特定のハードウェアコンポーネントを実行し、これによって、特定のデータコアに対して生成される割込みの数を減らすことによって、PREEMPTRTパッチを用いるSMPLinuxなどのオペレーティングシステムのリアルタイム性能を拡張する方法およびシステムに対するニーズがある。本明細書に記述するのは、PREEMPTRTパッチを用いるSMPLinuxなどのオペレーティングシステムOSのリアルタイム性能を拡張するために用いることができる様々な技術である。PREEMPTRTを用いるSMPLinuxは、ハードコアのリアルタイムオペレーティングシステムではない。したがって、PREEMPTRTを用いるSMPLinuxを使用することにより、そうでなければ発生する可能性がある制限されないレイテンシ問題に対処する技術を導入することが重要である。これらの制限されないレイテンシスパイクは、非常に厳格なリアルタイム性能を必要とする、LTEレイヤ2スケジューラの適切なシステムの振る舞いに容易に影響し、システムを展開できなくなる可能性がある。特に、PREEMPTRTを用いるSMPLinuxなどオペレーティングシステムのリアルタイム性能を拡張するために用いることができるソフトウェア技術の1つは、リアルタイムのプロセスまたはスレッドだけで実行することを専用とするデータプレーンコアの重要でない割込みを無効にすることを含む。代わりに、ソフトウェアDMA割込みなど、これらの重要でない割込みは、コントロールプレーンコアにルーティングされる。さらに、ハードウェアコンポーネントの少なくとも1つたとえばキューマネージャは、デフォルトの割込みモードではなくポーリングモードで実行できるため、特定のデータコアに対して生成される割込みの数を減らすことができる。一実施形態では、モデムボードにおいてマルチコアプロセッサを用いてワイヤレスネットワークにおけるデータパケットを処理する、コンピュータ実装方法が提供される。ポーリングモードでキューマネージャを実行している間、入力データパケットのバッファが取得され、データパケットはフレームキューにエンキューされ、フレームキューは、キューマネージャによって扱われるべきフレーム記述子のリンクされたリストを含む。カーネルスレッドは、キューに入れられたフレーム記述子について、キューマネージャを定期的にポーリングし、ハードウェアコンポーネントからN個のフレーム記述子をデキューするために使用され、ここでNは、調整可能なパラメータである。カーネル空間でデキューされた各フレーム記述子に関連するコールバック機能を実行することができ、コールバック機能は、フレーム記述子内のデータパケットのバッファポインタを処理のためにバッファ記述子のカーネルからユーザにマップされたリングにエンキューする。最後に、データパケットは、コンテキストスイッチなしでメッセージングモジュールに送られる。他の実施形態では、ワイヤレスネットワークでデータパケットを処理するためのシステムが提供される。装置は、概して、モデムボードと、モデムボードに取り付けられた複数のプロセッサコアを含むマルチコアプロセッサとを含み、モデムボードはカーネル空間およびユーザ空間を含む。さらに、システムは、キューを管理し、かつポーリングモードで実行するように構成されたキューマネージャと、入力データパケットのバッファを取得し、かつフレームキューにデータパケットをエンキューするように構成されたフレームマネージャとを含み、フレームキューは、ハードウェアコンポーネントによって扱われるべきフレーム記述子のリンクされたリストを含む。さらに、カーネルスレッドは、キューに入れられたフレーム記述子について、キューマネージャを定期的にポーリングし、ハードウェアコンポーネントからN個のフレーム記述子をデキューするように構成され、ここでNは、調整可能なパラメータである。カーネル空間でデキューされた各フレーム記述子に関連するコールバック機能は、フレーム記述子内のデータパケットのバッファポインタを処理のためにバッファ記述子のカーネルからユーザにマップされたリングにエンキューするように構成される。最後に、システムは、コンテキストスイッチなしでメッセージングモジュールにデータパケットを送るための手段を含むことができる。さらに他の実施形態では、電気通信ネットワークの単一のSMPパーティション内でマルチセルサポートを提供するためのシステムが開示される。システムは、典型的には、モデムボードと、複数のプロセッサコアを有するマルチコアプロセッサとを含み、マルチコアプロセッサは、複数のデータプレーンコアに到着する重要でない割込みを無効にし、複数のコントロールプレーンコアに、重要でない割込みをルーティングするように構成される。この例示的な実施形態の適用性のさらなる範囲は、以下に提供する詳細な説明から明白になるであろう。しかし、本発明の精神および範囲内の様々な変更形態および修正形態は当業者には明白になるため、詳細な説明および特定の例は、本発明の好適な実施形態を示しているが、例示を目的としてのみ与えられることを理解されたい。本発明は、デバイスの様々な部品の構造、構成物、および組合せ、ならびに方法のステップにおいて存在するものであり、意図する目的は、以下により完全に記述され、特に特許請求の範囲において指摘され、添付の図面に示されるように達成される。ここで図を参照すると、図は、例示的な実施形態を示すことのみが目的であり、請求される主題を限定することが目的ではない。図1は、この記述された実施形態を組み込むことができるシステムの図である。ここで図1を参照すると、例示的なプラットフォームアーキテクチャ100が示されている。このアーキテクチャは、概して、モデムボードで使用されるが、他の用途でも使用できることを理解されたい。本実施形態では、8つのコアすべてをその中に含む1つのパーティションが規定される。しかし、マルチコアプロセッサ100は、任意の数のコアを有することができることを理解されたい。この実施形態では、したがって、コアのすべてたとえば8つのコアで実行される単一の対称型マルチプロセッシングSMPオペレーティングシステムOSインスタンス102を使用することが可能である。コントロールプレーンおよびデータプレーンは、1つのOSインスタンス下にあるため、データプレーンに関する問題のためにコントロールプレーンまでもが低下しないことを保証するために注意が全体として必要である。この例では、マルチコアプロセッサ100は、3つのセルにサービスを提供する図に104、106、および108として示す。各セルは、アップリンクULスケジューラ図に110、112、および114として示すおよびダウンリンクDLスケジューラ図1に116、118、および120として示すを必要とする。RadioLinkControlRLCレイヤは、LTEエアインターフェースを横断して送信および受信されるパケットフレームのエラーをセグメント化、連結、かつ修正するために使用されることが知られている。RadioLinkControl/MediumAccessControlRLC/MACソフトウェアが、GPRS2.5Gワイヤレススタックで使用される。これにより、移動局と基地局制御装置BSCとの間で承認されたデータ転送および承認されていないデータ転送が提供される。したがって、アーキテクチャ100は、また、RLC/MACブロック122を含み、これは、移動局とネットワークとの間で使用されるエアインターフェース上の基本的な伝達装置である。RLC/MACブロック122は、概して、データおよびRLC/MACシグナリングを運ぶために使用される。マルチコアプロセッサ100は、また、Operations,Administration,andManagementOAMモジュール124、および呼処理または、CALLPモジュール126を提供する。OAMは、概して、電気通信ネットワークのコンポーネントの運用、保守、管理、および維持に関連するプロセス、活動、ツール、規格などを記述するために使用される。CALLPモジュール126は、典型的には、呼処理活動の非リアルタイムの態様を管理する。さらに、マルチコアプロセッサ100は、コア抽象化レイヤCAL128を含み、これは、概して、レイヤ2L2のアプリケーションソフトウェアからコア固有の詳細を隠すものである。レイヤ2は、コンピュータネットワーキングの7層の開放型システム間相互接続OSIモデルのデータリンクレイヤである。データリンクレイヤは、ワイドエリアネットワークの隣接するネットワークノード間、または同じローカルエリアネットワークセグメントのノード間のデータを転送するプロトコルレイヤである。データリンクレイヤは、ネットワークエンティティ間でデータを転送するための機能的および手続き的な手段を提供し、物理レイヤで発生する可能性があるエラーを検出および場合によっては修正するための手段を提供することもできる。データリンクプロトコルの例は、ローカルエリアネットワークマルチノードのイーサネット、ポイントツーポイントプロトコルPPP、HDLC、およびポイントツーポイントデュアルノード接続のADCCPである。この場合、L2は、概して、LTEエアインターフェースに必要なL2スケジューラ処理を指し、これは非常に厳格なリアルタイム要件を有する。移動通信装置とネットワークスイッチングサブシステムとの間のトラフィックおよびシグナリングの処理を担当する、基地局のリアルタイム性能のニーズを満たすために、PREEMPTRTパッチを用いるSMPLinuxなどのオペレーティングシステムを使用することができる。もちろん、他のオペレーティングシステムが使用されてもよいことを理解されたい。そのようなSMP構成で決定的な振る舞いを達成するために、システムは、好ましくは、非同期マルチプロセッシングAMP:AsynchronousMultiprocessingと同等のシステムの振る舞いを達成するためにコアリザベーションおよびコアアフィニティの構成物を用いる方法で実装される。たとえば、また、これはPREEMPTRTを用いるSMPLinuxから最高の性能を引き出すのにも望ましい。バッファ管理およびメッセージングサービスなど、ロックレスのゼロコピーサービスの使用は、また、PREEMPTRTを用いるSMPLinuxオペレーティングシステムの使用によって提起される可能性があるレイテンシ問題に対処するのを支援することができる。図1に示すようなコア抽象化レイヤ128の主な機能の1つは、マルチコアプラットフォームの全機能を利用する様々なサービスを用いて、L2処理など、ハイレベルなアプリケーションを提供することである。したがって、コア抽象化レイヤは、複数の目標を達成するように設計されている。第一に、より高いレベルのアプリケーションソフトウェアすなわちL2ソフトウェアからDPAAおよびマルチコア固有の実装を隠しながら、新しいデータパスアクセラレーションアーキテクチャDPAA:DataPathAccelerationArchitectureに基づくBEDバックプレーンイーサネットドライバインターフェースをサポートするDPAAは、負荷拡散およびリソースの共有など、マルチコアネットワーク処理を最適化するように設計され、ネットワークインターフェースおよびハードウェアアクセラレータを含む。第2に、それは、入力および出力の両方向において、ユーザプレーンデータに対する加速されたデータ経路を提供するためにP4080のDPAAハードウェアコンポーネントを利用する。第3に、それは、構成変更に容易に適合するために可能な限りの柔軟性を提供するすなわちコード変更を必要としない。CAL構成の一例は、バッファプール、入力フレームキュー、および出力フレームキューのDPAAリソース構成である。図1に示すように、本発明の実施形態は、1つのパーティションでプロセッサコアのすべてを使用する。シンプルなLinuxが難しいリアルタイム処理のニーズをすべて満たすのは難しい場合があるので、PREEMPTRTパッチを用いるSMPLinuxなどのオペレーティングシステムが好まれる。また、オープンソースオペレーティングシステムは、コストを削減するためにも使用される。システムは、さらにSMP構成内にAMPのようなシステムの振る舞いを規定するために、SMPLinuxのコアアフィニティおよびCPU予約機能を組み込み、これにより、6セルまたは9セルの構成が可能になる。オペレーティングシステムインスタンスは、非リアルタイムコアコントロールプレーンなどとリアルタイムコアデータプレーンなどとの間で共有され、ロックが非リアルタイムのスレッドおよびプロセスによって取られた場合、問題が生じる可能性がある。リアルタイムのスレッドまたはプロセスは、データプレーンコア複数可のロックの開放を待たなければならないため、ロックは、リアルタイムのスレッドまたはプロセスの遅延を引き起こす可能性がある。転送制御プロトコルTCP、ユーザデータグラムプロトコルUDPなどのトランスポートレイヤプロトコルは、パケットヘッダでソースおよび宛先のポート番号を指定することが知られている。ポート番号は、16ビットの符号のない整数である。プロセスは、ポート番号およびIPアドレスに、その入力または出力チャネルのファイル記述子ソケットを関連付けバインディングとして知られているプロセス、ネットワークを介してデータを送信および受信する。オペレーティングシステムのネットワークソフトウェアは、すべてのアプリケーションポートからネットワークに出力データを伝送し、パケットのIPアドレスとポート番号とを照合することによって、到着するネットワークパケットをプロセスに転送するタスクを有する。標準的なLinuxプロトコルスタックは、ロックレスの実装を保証しないため、例示的な実施形態では、Linuxプロトコルスタックの使用を回避しながら、TCP/UDPIPパケットを送信および受信するために、データプレーンコアで実行されるリアルタイムプロセスLTEL2スケジューラのロックレスメッセージング方式を規定する。コントロールプレーンコアで実行されるOAMなど非リアルタイムプロセスは、通常の運用にLinuxプロトコルスタックを使用し続ける。概して、Linuxの一般公有使用許諾GPL問題を回避するために、LTEL2スケジューラは、ユーザ空間で運用される。このため、LTEL2スケジューラからTCP/UDPIPデータを送信および受信するために、データは、ユーザ-カーネル空間の境界を横断する必要がある。このステップは、典型的には、データコピーを必要とする。このように、あるメモリ位置から他の位置にデータをコピーするためにプロセッサパワーを消費することは、貴重なリソースを無駄にすることになる。したがって、従来のLinuxプロトコルスタックを使用するなどコントロールプレーンが通常の方法で動作することを可能にしながら、データプレーンコアで実行されるリアルタイムのスレッドおよびプロセスについて、効率的なロックレスのゼロコピーおよび非閉塞メッセージングサービスを可能にする方法およびシステムを提供することが望ましい。コントロールプレーンOAMおよび呼処理など、非リアルタイムのプロセスおよびスレッドおよびデータプレーンLTEL2スケジューラなど、リアルタイムのプロセスおよびスレッドの両方は、同じオペレーティングシステムインスタンスを共有するため、これらの2種類の活動が実施されるコアの少なくとも一部を物理的に分離することを確認することは有用である。この点で、図2は、コアリザベーションおよびコアアフィニティの構成物を用いるアーキテクチャを示している。この例では、8つのコアプロセッサが使用される。コア0~7は、図において参照番号202、204、206、208、210、212、214、および216と示されている。非リアルタイムのスレッドまたはプロセスはすべて、コントロールプレーンの活動専用のコアに結合される218。言い換えると、データプレーン活動専用のコアのグループ分け図に220、222、224、および226として示すは、高速経路fastpathデータ経路の実装またはL2処理に直接的に必要でないスレッドをホストまたは実行しない。高速経路は、通常の経路と比べてプログラムを通じた指示経路の長さが短い経路を記述する用語である。高速経路を効果的にするために、最も一般に発生するタスクを通常の経路よりも効率的に扱い、珍しいケース、めったに発生しない厄介なケース、エラー処理、および他の異常を扱うために通常の経路を残す必要がある。高速経路は、最適化の一形式である。高速経路ドライバによって使用される入力バッファプールは、システム全体の共有リソースの一例である。それらは、ユーザプレーンパケットを受信することを専用としている。コアアフィニティおよびコアリザベーションを達成するために、コントロールプレーンコアのグループ分け218へのデフォルトのアフィニティマスクが規定される。この方法で、特定のバインディングを割り当てられていないスレッドまたはプロセスは、デフォルトでコントロールプレーンコア複数可になる。コア抽象化レイヤCAL220は、L2アプリケーションソフトウェアからコア固有の詳細を隠す。この構成では、1つのオペレーティングシステムインスタンス222だけが実行されている。所与のセルに対応するリアルタイムのプロセスおよびスレッドは、コアリザベーションおよびコアアフィニティを介して指定されたコアに結合される。たとえば、セル1およびセル4のアップリンクスケジューラスレッドは、コア2に結合され、ダウンリンクスケジューラスレッドはコア3に結合される。したがって、図2は、SMP構成内のAMPのような構成を示している。この実施形態では、たとえば、OAMおよび呼管理プロセスなど、すべてのコントロールプレーンのプロセスおよびスレッドは、コア0202で実行される。セルのリアルタイムのプロセスおよびスレッドのそれぞれは、専用のコアで実行され、非リアルタイムのプロセスまたはスレッドは実行されない。この方法で、1非リアルタイムスレッドは、処理時間不足になることはない。2非リアルタイムスレッドは、リアルタイムスレッドから貴重な処理時間を奪わず、厳密なリアルタイム処理要件を有するデータコアの処理レイテンシスパイクを増加させない。概して、Linuxなどオペレーティングシステムのシステムメモリは、カーネル空間およびユーザ空間という、2つの個別の領域に分割できることが知られている。カーネル空間は、カーネルすなわちオペレーティングシステムのコアを動作すなわち実行させサービスを提供する場所である。メモリは、概してRAMランダムアクセスメモリセルから構成され、そのコンテンツは非常に高速にアクセスすなわち、読取りおよび書込みできるが、一時的すなわち、使用中、またはせいぜい電源がオンの間にしか保存されない。その目的は、現在使用されているプログラムおよびデータを保持することである。ユーザ空間は、ユーザプロセスすなわちカーネル以外のすべてが実行されるメモリ位置の組である。プロセスは、プログラムの実行インスタンスである。カーネルの役割の1つは、この空間内で個々のユーザプロセスを管理し、相互に干渉するのを防ぐことである。カーネル空間は、システムコールの使用を通じてのみユーザプロセスによってアクセスすることができる。システムコールは、入出力I/Oまたはプロセス作成など、カーネルによって実行されるサービスのアクティブなプロセスによるUnixのようなオペレーティングシステムの要求である。CPUで次の順番を待っているプロセスとは対照的に、アクティブなプロセスは、CPUで現在進行しているプロセスである。I/Oは、CPUとの間、および周辺機器ディスクドライブ、キーボード、マウス、およびプリンタなどとの間でデータを転送する任意のプログラム、操作、またはデバイスである。したがって、カーネル空間は、カーネル、カーネル拡張、およびほとんどのデバイスドライバを実行するために厳密に予約される。これとは対照的に、ユーザ空間は、すべてのユーザモードアプリケーションが機能するメモリ領域であり、必要な場合は、このメモリはスワップアウトすることができる。ここで図3を参照すると、これらおよび他の目標を達成する例示的なアーキテクチャ300が示されている。この点で、コア抽象化レイヤCAL301は、次を含むが、これらに限定されない、様々なモジュールをユーザ空間に含む:LTEネットワーク構成および任意の静的なパーシング、クラス分け、および配布PCD:Parsing,ClassificationandDistributionのルールをフレームマネージャFMan330および332にロードし、1組の構成ファイルに基づいてCALフレームワークを設定する、コア抽象化レイヤ初期化CALInitモジュール302、コア抽象化レイヤバッファCALBufモジュール304、他のボードすなわちeCCMとの間でユーザプレーンデータを送信および受信するために、L2ソフトウェアにメッセージングサービスを提供する、コア抽象化レイヤメッセージングCALMsgモジュール306、適切なコアに入力フレームをルーティングするために各FMan330および332によって使用されるPCDルールおよび構成を提供する、コア抽象化レイヤパーシング、分類、および分配CALPcdFmcモジュール308、ならびにカーネル空間モジュールである、コア抽象化レイヤのDPAAドライバCALDpaaDriver312においてトレースを有効および無効にするためのトレーシング能力を提供する、コア抽象化レイヤDPAAトレースCALDpaaTraceモジュール310。さらに、CAL301は、また、バッファプール、入力フレームキュー、および出力フレームキューを管理するためのDPAAリソース構成ツール313を含むことができる。アーキテクチャ300は、PREEMPTRTパッチを用いるSMPLinuxなど、適切なオペレーティングシステム314をさらに含む。オペレーティングシステム314は、次に、前述のCALDPaaドライバ312、少なくとも1つのフレームマネージャFManドライバ316、少なくとも1つのバッファマネージャBManドライバ318、および少なくとも1つのキューマネージャQManドライバ320など、様々なドライバをサポートする。バッファ記述子321のリングは、CALMsgモジュール306などのユーザ空間コンポーネント、およびCALDpaaDriver312などのカーネル空間コンポーネントがアドレス問題を全く伴わず、またはデータコピーの必要なく、アクセスすることを可能にするためにマップされたカーネルからユーザK-Uへの空間である。図3に示すように、アーキテクチャ300は、複数のパワーアーキテクチャ処理コアをキャッシュ、スタンドアロンのキャッシュ、およびメモリサブシステムに接続するための拡張可能なオンチップネットワークに適した相互接続アーキテクチャである、P4080のCoreNet構造322を適切に含むことができる。P4080プロセッサは、DPAAの実装を含む。したがって、アーキテクチャ200は、P4080のDPAA224をさらに含むことができる。DPAA324は、負荷拡散およびリソースの共有などマルチコアネットワーク処理を最適化するように設計され、ネットワークインターフェースおよびハードウェアアクセラレータを含む。図示するように、DPAA324は、概して、それぞれBMan326、QMan328、ならびに第1および第2のFman330および332など様々なマネージャを含む。ワイヤレス多重アクセス通信システムにおいて、送信機および受信機は、複数レイヤの通信スタックを使用して通信できることが知られている。レイヤは、たとえば、物理レイヤ、MediumAccessControlMACレイヤ、RadioLinkControlRLCレイヤ、プロトコルレイヤたとえばパケットデータコンバージェンスプロトコルPDCP:packetdataconvergenceprotocolレイヤ、アプリケーションレイヤなどを含むことができる。RLCレイヤは、PDCPレイヤからサービスデータ単位SDUを受信し、MACレイヤへの伝送のために、RLCプロトコルデータユニットPDUへとSDUを連結またはセグメント化する。したがって、CALBufモジュール304は、RLCSDU処理で使用するL2アプリケーションのためにロックレスのバッファ管理サービスを促進する。当技術分野で知られているように、非閉塞アルゴリズムにより、共有リソースを取り合うスレッドは、相互排除によって無期限にそれらの実行を延期しないことが保証される。システム全体の進行が保証されている場合、非閉塞アルゴリズムは、ロックレスであるまたはロックがない。CALBufモジュール304は、また、バッファプール統計データの照会をサポートすることができるたとえば、プールの消耗状態、消耗数、プールの利用状態、プール割り当てエラー数など。CALBufモジュール304は、概して、そのようなサービスを実装するためにCALDpaaDriver312とインターフェースする。CALBufモジュール304は、マルチコア環境で適切なシステム運用に望ましいロックレスのバッファ管理方式をさらに提供し、非リアルタイムプロセスによって取られたロックは、そのロックの開放を待っているリアルタイムプロセスのレイテンシ問題を引き起こす可能性がある。CALMsgモジュール306は、他のボードすなわちeCCMとの間でユーザプレーンデータを送信および受信するために、L2ソフトウェアにメッセージングサービスを提供する。CALMsgモジュール306は、概して、DPAAを介して、ロックレスのゼロコピーメッセージングサービスを提供するためにCALDPAADriver312とインターフェースする。CALDpaaDriver312は、バッファ記述子321のリングの作成元である。この点で、CALDpaaDriver312は、バッファ記述子321のリング上に入力データフローパケットをエンキューする。CALMsgAPIからの支援を受けるLTEL2スケジューラなどユーザ空間アプリケーションは、バッファ記述子321のリングの典型的な消費者である。ユーザアプリケーションは定期的に実行され、バッファ記述子321のリング上にエンキューされたパケットのそれぞれを処理する。この機能は、制限されていないレイテンシ遅延latencydelayを回避するために、ロックなしのゼロデータコピーの方法で、プロトコルスタックを使用することなく、L2アプリケーションソフトウェアがTCP/UDPIPパケットを送信および受信することを可能にする。CALDpaaDriver312は、CAL301のカーネル空間コンポーネントであり、BmanおよびQmanのAPIを使用してバッファ管理サービスおよびメッセージングサービスを実施および提供するのを支援する。本明細書で使用する場合、APIまたはアプリケーションプログラミングインターフェースという用語は、ソフトウェアプログラムによって実装されたインターフェースを指し、これにより他のソフトウェアと対話することが可能になる。これにより、ユーザインターフェースにより、ユーザとコンピュータとの間の対話処理が促進されるのに似た方法で、異なるソフトウェアプログラム間の対話処理が促進される。APIは、ボキャブラリおよび呼び出し規約を決定するために、アプリケーション、ライブラリ、およびオペレーティングシステムによって実装され、それらのサービスにアクセスするために使用される。それは、ルーチン、データ構造、オブジェクトクラス、および消費者とAPIの実装者との間で通信するために使用されるプロトコルの仕様を含むことができる。CALDpaaDriver312は、概して、ユーザプレーンデータの分配;オープン、クローズ、初期化のためのi-o-controlioctl:入出力制御、バッファ管理、およびメッセージングサービスなど、様々なファイル操作を介する他のCALモジュールにユーザ空間インターフェースの提供;カーネルからユーザ空間K-Uへのバッファマッピングの実行;DPAAバッファプールならびに受信機および送信機の統計データの提供;ならびにリングバッファを管理するためのサービスの実装に使用されるDPAAリソースバッファプールおよびフレームキューを管理することを担当する。リングバッファは、概して、CALのレイヤ2ソフトウェアキューを表し、それらは、特定のレイヤ2ダウンリンクスケジューラスレッドを宛先とするフレーム記述子FDを格納するために使用されることに注意されたい。CALMsgモジュール306は、リングからバッファ記述子を取り込むために、レイヤ2ダウンリンクスケジューラのAPIを提供する。CALBufモジュール304は、高速経路データ処理に排他的に使用されるバッファ管理サービスを提供する。CALBufモジュール304は、L2アプリケーションにユーザ空間APIを提供する。CALBufモジュール204は、CALDpaaドライバ312が作成するが、Bman326によって管理されるバッファに対して、ゼロコピーおよびロックレスのバッファ管理サービスを提供するために、CALDpaaDriver312と協働する。CALDpaaDriver312の例外はあるが、上記のCALコンポーネントはすべて、概して、ユーザ空間で実行されるプラットフォームミドルウェアである。CALDpaaDriver312は、カーネル空間で実行されるカスタムドライバであり、CALユーザ空間ミドルウェアによって必要とされるサービス、具体的にはP4080のDPAAハードウェアコンポーネントに依存するサービスを実装および提供するように設計されている。この新しいアーキテクチャのコア抽象化レイヤの一部として、ロックレスのバッファ管理およびメッセージングサービスを導入することで、コントロールプレーンおよびデータプレーンの両方が同じOSインスタンスを共有する、SMP環境において制限されていないレイテンシスパイクを回避するのに役立つ。SMP環境では、1つのコアで非リアルタイムのプロセスまたはスレッドによって取られるロックはコントロールプレーンで見つかるものなど、別のコアでそのロックが開放されるのを待っているリアルタイムのスレッドまたはプロセスにレイテンシスパイクを引き起こす可能性があるデータプレーンで見つかるものなど。したがって、1つのパーティションを使用するマルチコアプロセッサベースのモデムボードの性能のニーズを満たすために、データプレーンコアで高速のデータ経路にLinuxプロトコルスタックを使用しないロックレスでゼロコピーの非閉塞メッセージング方式へのニーズがある。そのような方式がなければ、特にLTEL2スケジューラの処理に関して、システムは、システム全体を機能停止させる可能性がある制限されていないレイテンシスパイクの影響を受けやすい場合がある。ゼロコピーメッセージング方式を使用することで、データコピーの必要なく、カーネル空間のイーサネットインターフェースに到着するパケットが、ユーザ空間のレイヤ2ダウンリンクスケジューラなど、その宛先に到達することが可能になる。LinuxGPLの課題のために、LTEL2スケジューラはユーザ空間で運用される。したがって、LTEL2スケジューラとの間でTCP/UDPIPデータを送信および受信するために、データは、ユーザ-カーネル空間の境界を横断する必要がある。そのような活動は、典型的には、データコピーを必要とする。このように、あるメモリ位置から他の位置にデータをコピーするためにプロセッサパワーを消費することは、貴重なリソースを無駄にすることになる。したがって、従来のLinuxプロトコルスタックを使用するなどコントロールプレーンが通常の方法で動作することを引き続き可能にしながら、データプレーンコアで実行されるリアルタイムのスレッドおよびプロセスについて、効率的なロックレスでゼロコピーの非閉塞メッセージングサービスを可能にする方法およびシステムを提供することが望ましい。高速データ経路の実装のためにLinuxプロトコルスタックを回避することで、データプレーンコアで実行されるLTEL2スケジューラは、代替のロックレスメッセージング方式を使用して、TCPおよびUDPのIPパケットを送信および受信することができる。Linuxプロトコルスタックを使用すると、LTEL2スケジューラの処理を機能停止させる可能性がある制限されていないレイテンシスパイクが生じる可能性がある。これは、Linuxプロトコルスタックがロックレスとして設計されていないという事実によるものである。さらに、コントロールプレーンコアで実行されるOAMおよび呼処理のエンティティなど、プロトコルスタックも非リアルタイムのプロセスおよびスレッドによって使用されるため、リアルタイムのプロセスおよびスレッドについて制限されていないレイテンシスパイクを引き起こす場合がある。プロトコルスタックは、コントロールプレーンコアで実行しなければいけないため、OAMおよび呼処理など、非リアルタイムのプロセスおよびスレッドは、プロトコルスタックを使用し続ける。これらは、システムの振る舞いおよび/または運用において故障なく、時々発生する制限されていないレイテンシスパイクに容易に耐えられるためである。図4は、入力データパケットフローについてデータプレーンコアでの割込みを無効にする例示的な方法を示している。入力データフローパケットは、カーネルスレッドによって扱われ、これは、各割込みに関連するコンテキストスイッチ処理のオーバヘッドを減らすために、パケットについてハードウェアをポーリングする。最初に、ハードウェアたとえば、QMan328は、デフォルトの割込みモードではなく、ポーリングモードで実行するように構成される410。QMan328は、最初に、すなわちプロセッサが再起動されるときにソフトウェアの初期化の間に、ポーリングモードで実行するように構成することができる。デフォルトの割込みモードについては、参照によりその開示が本明細書に組み込まれている、たとえば、2010年11月12日に出願した米国特許出願第12/945,146に、より詳細に記述されていることに注意されたい。データパケットは、外部イーサネットインターフェースに継続的に到着するため、FMan330などのフレームマネージャは、1BMan326などのバッファマネージャからバッファを取得すべきであり、2バッファ内にパケットをコピーすべきであり、3フレームキューFQにパケットをエンキューすべきである。フレームキューは、QMan328などキューマネージャによって扱われるべきフレーム記述子のハードウェアリンクされたリストである420。本明細書で使用する場合、リンクされたリストは、データレコードの連続から構成されるデータ構造を指し、各レコードに、連続内の次のレコードへの参照すなわちリンクを含むフィールドがある。この場合、各フレーム記述子は、データパケットを保持するバッファへのポインタを含む。QMan328は、システムに対して作成されたフレームキューをすべて管理する。FMan330は、到着する各データパケットのIPアドレスを検査するために、CALモジュール301によって規定されたPCDルールたとえば、入力フレームキューマッピングへのIPアドレスを使用する。次に、Fman330は、データパケットを保持するバッファへのポインタを含むフレーム記述子を作成し、適切なフレームキューにそれをエンキューする。パケットがハードウェアキューの先頭に到達するまで、QMan328はその内部ハードウェアキューにパケットを押し入れる430。重要なことに、ハードウェアは、データプレーンコアへのポータル割込みportalinterruptを生成しない。カーネルスレッドは、概して、この実施形態においてポーリングモードで実行するように構成された、QMan328にサービスを提供するために、CALDpaaDriver312の一部として作成される440。CALDpaaDriver312のカーネルスレッドは、定期的な間隔ΔTで定期的にウェイクアップし、QManAPIを呼び出して、ハードウェアキューの先頭に到達したキューに入れられた任意のフレーム記述子についてポーリングする450。次に、カーネルスレッドは、QMan328からN個のエントリフレーム記述子をデキューするすなわち、キューからアイテムを取り除く460。ただし、Nは、調整可能なパラメータを表しているたとえば、N=100。特に、Nは、カーネルスレッドがウェイクアップするたびにサービスを提供するQMan328からのフレーム記述子エントリの数を示している。次に、サービスが提供されるフレーム記述子があるかどうかに関して決定が行われる470。ない場合は、カーネルスレッドはスリープに戻る490。そうでない場合、デキューされた各フレーム記述子エントリに関連する登録済みのコールバック機能が実行される。コールバック機能は、コンテキストスイッチなし、かつロックレスのゼロコピーの方法で、CALMsgモジュール306にパケットを送る。これは、たとえば、バッファ記述子内にフレーム記述子からデータパケットのバッファポインタをコピーし、それをユーザ空間レイヤ2ダウンリンクスケジューラによって最終的に消費されるバッファ記述子321の適切なK-Uマップされたリングにエンキューすることによって、達成することができる490。割込みモードでは、各入力データパケットの到着は、典型的には、データプレーンコアへの割込みへとつながる。最大15のデータパケットが1つの割込みサービスルーチンISRで扱われる、割込み結合interruptcoalescingモードでも、ユーザ-カーネル-ユーザuser-to-kernel-to-user空間のコンテキストスイッチの処理オーバヘッドはかなり際立っている。この理由は、4GLTEのワイヤレスシステムは、大人数のユーザをサポートし、それぞれが高いデータ速度を保持することができるからである約2MBits/秒の平均データ速度。しかし、QMan328が、デフォルトの割込みモードではなくポーリングモードで実行されるように構成することで、複数の恩恵が得られる。たとえば、上に概説した方式は、入力データフローについて、特定のデータコアに対して生成される割込みの数を大幅に減らす。これにより、データプレーンコアに発生するコンテキストスイッチングの大きな減少につながるユーザ-カーネル-ユーザ空間。これは、データプレーンコアの処理オーバヘッドの大きな減少につながり、LTEシステムのリアルタイム性能が拡張される。さらに、ソフトウェアDMA割込みなど重要でない割込みは、リアルタイムのプロセスまたはスレッドだけを実行することを専用とするデータプレーンコアで無効化され、その代わりに、コントロールプレーンコアに発生するように、これらの割込みをルーティングする。これは、カーネル空間で実行される割込みサービスルーチンISRへのLTEL2スケジューラなど、ユーザ空間アプリケーションからの不必要なコンテキストスイッチが、これらの割込みの結果としてデータプレーンコアに発生しないことを保証するのを支援する。各コンテキストスイッチは、かなりの関連している処理オーバヘッドを含む。この不必要な処理オーバヘッドを排除することによって、LTEL2スケジューラなど、リアルタイムのプロセスおよびスレッドについて、より多くの処理時間およびパワーがデータプレーンコアに与えられる。上記の様々な方法のステップは、プログラムされたコンピュータによって実行できることを当業者なら容易に理解するであろう。本明細書において、一部の実施形態は、たとえば、デジタルデータ記憶媒体など、プログラム記憶装置を包含するようにも意図されており、プログラム記憶装置は、読取り可能な機械またはコンピュータであり、機械で実行可能なまたはコンピュータで実行可能なプログラム命令をエンコードし、前述の命令は、上記方法のステップの一部またはすべてを実行する。プログラム記憶装置は、たとえば、デジタルメモリ、磁気ディスクや磁気テープなどの磁気記憶媒体、ハードドライブ、または光学的に読取り可能なデジタルデータ記憶媒体などであってもよい。また、実施形態は、上記方法の上述したステップを実行するようにプログラムされたコンピュータを包含することを意図するものである。上記の記述は、単に本発明の特定の実施形態の開示を提供するものであり、それに限定することを目的とすることを意図するものではない。したがって、本発明は上記の実施形態だけに限定されない。むしろ、当業者なら本発明の範囲に入る代替の実施形態を想到し得ることが認識される。"