JP2015506027A - バッファリソース管理方法および通信機器 - Google Patents

バッファリソース管理方法および通信機器 Download PDF

Info

Publication number
JP2015506027A
JP2015506027A JP2014546268A JP2014546268A JP2015506027A JP 2015506027 A JP2015506027 A JP 2015506027A JP 2014546268 A JP2014546268 A JP 2014546268A JP 2014546268 A JP2014546268 A JP 2014546268A JP 2015506027 A JP2015506027 A JP 2015506027A
Authority
JP
Japan
Prior art keywords
list
deallocation
pointer
buffer
buffer object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014546268A
Other languages
English (en)
Inventor
ジュン ワン,
ジュン ワン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Optis Cellular Technology LLC
Original Assignee
Optis Cellular Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Optis Cellular Technology LLC filed Critical Optis Cellular Technology LLC
Publication of JP2015506027A publication Critical patent/JP2015506027A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W72/00Local resource management
    • H04W72/12Wireless traffic scheduling
    • H04W72/1221Wireless traffic scheduling based on age of data to be sent
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/08Access point devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/064Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation

Abstract

本発明は、ロックレス・バッファリソース管理方式に関する。提案の方式においては、バッファプールは、割り当てリストおよび割り当て解除リストを有するように構成されている。割り当てリストは、前のバッファオブジェクトの中のネクストポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当てリストの先頭のバッファオブジェクトを指し示すヘッドポインタとを有する。割り当て解除リストは、前のバッファオブジェクトの中の次のポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当て解除リストの先頭のバッファオブジェクトを指し示すヘッドポインタと、割り当て解除リストの最後のバッファオブジェクトの次のポインタを指し示すテールポインタとを有し、このテールポインタは、ポインタのポインタである。

Description

本発明は、リソース管理のロックレス解決策に関し、特に、ロックレス・バッファリソース管理方式および同方式を使用する通信機器に関する。
BS(基地局)および/またはスイッチなどの通信機器においては、常にそのバッファリソースを管理するニーズがある。例えば、LTE(ロングタームエボリューション)のeNB(進化型ノードB)のS1インタフェースにおける着信/発信パケットは、エアインタフェースの着信/発信パケットとは対照的に、並列かつ非同期の手順である。たいてい2つの個別のタスクがあり、一方は、S1インタフェースのソケットを通じて送信または受信して、無線UP(ユーザプレーン)(PDCP/RLC/MAC)スタックにパケットを配信し、他方は、UPスタックのパケットからスケジューリング情報に従ってMAC(媒体アクセス制御)PDU(パケットデータユニット)を作成して、エアインタフェースで送信する。
図1は、LTEのeNBにおける一例であるプロデューサおよびコンシューマモデルを示す。(S1インタフェースの)ソケットのタスクは、コンシューマであり、プールの中らバッファオブジェクトをS1インタフェースからの保持パケットに割り当てて、それをUPスタックに転送する。(エアインタフェースの)他方のタスクは、プロデューサであり、エアインタフェースを通じてPDUを送信した後、バッファオブジェクトをリリース(解放)してプールに戻す。バッファオブジェクトは、2つのタスクの間を流れるパケットのコンテナであり、それ故、再利用のためにバッファプールでリサイクルされる。この場合、そのようなマルチスレッド実行環境において、バッファプールのデータの完全性をどのように保証するかというよくある課題が生じる。
プロデューサ−コンシューマモデルにおいてデータの完全性を保証するよくある方法は、LOCK(ロック)である。このロックは、複数のスレッドにバッファプールへの順次アクセスを強要して、データの完全性を確保する。
ロックメカニズムは、たいていOS(オペレーティングシステム)によって提供され、ミューテックスやセマフォのように原子性を確実にすることができる。アロケーション(割り当て)であれデアロケーション(割り当て解除)であれ、任意のタスクがバッファプールにアクセスしたいときはいつも、まずロックを取得する必要が常にある。他のタスクがロックを所有している場合、現在のタスクは、その所有者がロックを解放するまで、その実行を保留しなければならない。
ロックメカニズムは、不可避的に余分のタスクスイッチ(切り替え)を持ち込んでしまう。通常の場合は、全体の性能に大きな影響を与えない。しかし、際どいリアルタイム環境においては、タスク切り替えのオーバヘッドを無視することはできない。例えばLTEのeNBにおいては、TTIのスケジューリングは1msに過ぎないのに対して、1回のタスク切り替えには、約20μsかかり、タスクの中断から再開までの1巡には、少なくとも2回のタスク切り替え手順、すなわち40μsが必要であり、これは、特にトラヒック量が多い場合には、LTEのスケジューリング性能に顕著な影響を与える。
たいてい、ベースバンドのアプリケーションは、マルチコア・ハードウェア・プラットフォームで実行され、このプラットフォームは、複数のタスクの並列同時実行を促進して、高い性能を達成する。しかし、ロックメカニズムは、そのような並列モデルを妨害してしまう。ロックの本質は、データの完全性を確保するために、まさに順次実行を強要することにあるからである。ロックを所有する間隔が非常に短いとしても、順次実行は、マルチコア・プラットフォームで実行されているアプリケーションに大きな影響を与え、潜在的な性能のボトルネックになることがある。
上記の問題の少なくとも1つを解決するために、本発明においては、ロックレス・バッファリソース管理方式および同方式を使用する通信機器を提案する。
本発明の第1の態様によれば、バッファプールが割り当てリストおよび割り当て解除リストを有するように構成されているバッファリソース管理方法を提供する。割り当てリストは、前のバッファオブジェクトの中のネクスト(次の)ポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当てリストの先頭のバッファオブジェクトを指し示すヘッド(先頭)ポインタとを有する。割り当て解除リストは、前のバッファオブジェクトの中の次のポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当て解除リストの先頭のバッファオブジェクトを指し示す先頭ポインタと、割り当て解除リストの最後のバッファオブジェクトの次のポインタを指し示すテール(末尾)ポインタとを有し、この末尾ポインタは、ポインタのポインタである。初期化においては、割り当て解除リストの先頭ポインタはエンプティ(空)であり、割り当て解除リストの末尾ポインタは、割り当て解除リストの先頭ポインタ自体を指し示す。バッファリソース管理方法は、割り当てリストの先頭ポインタに割り当て解除リストの先頭ポインタの役割を割り当てる工程と、割り当て解除リストの先頭ポインタを空にクリアする工程と、割り当て解除リストの末尾ポインタに割り当て解除リストの先頭ポインタ自体を指示させる工程とである、テイクオーバーアクション(引き継ぎ行動)の工程を有していてもよい。
一実施形態においては、バッファリソース管理方法は、割り当てリストが空であるか否かを判定する工程と、割り当てリストが空である場合に、割り当て解除リストが空であるか否かを判定する工程と、割り当て解除リストが空でない場合に、引き継ぎ行動の工程を行う工程とをさらに有していてもよい。バッファリソース管理方法は、割り当てリストが空でない場合に、割り当てリストの先頭のバッファオブジェクトをリンク解除(切り離す)工程をさらに有していてもよい。バッファリソース管理方法は、割り当て解除リストが空である場合に、ヒープ(の中から複数のバッファオブジェクトを取り出す工程と、その複数のバッファオブジェクトを割り当てリストとリンクさせる工程とをさらに有していてもよい。
別の実施形態においては、バッファリソース管理方法は、割り当て解除リストの末尾ポインタによってアドレス指定される、割り当て解除リストの最後のバッファオブジェクトの次のポインタに、新しく解放されるバッファオブジェクトを指示させる工程と、割り当て解除リストの末尾ポインタを新しく解放されるバッファオブジェクトの次のポインタに移動させる工程とである、リクラメーションアクション(再利用行動)の工程をさらに有していてもよい。バッファリソース管理方法は、新しく解放されるバッファオブジェクトが割り当て解除リストの中にリンクされた後、割り当て解除リストの先頭ポインタが空であるか否かを判定する工程と、割り当て解除リストの先頭ポインタが空である場合に、割り当て解除リストの末尾ポインタに割り当て解除リストの先頭ポインタ自体を指示させる工程とである、ポスト・アジャストメント・アクション(事後調整行動)の工程をさらに有していてもよい。バッファリソース管理方法は、事後調整行動の後、割り当てリストの先頭ポインタが空であるか否か、および新しく解放されたバッファオブジェクトが依然として解放状態にあるか否かを判定する工程と、割り当てリストの先頭ポインタが空であり、かつ新しく解放されたバッファオブジェクトが依然として解放状態にある場合に、再利用行動の工程を再度行う工程とである、再リクラメーションアクション(再々利用行動)の工程をさらに有していてもよい。
一例として、引き継ぎ行動の工程と再利用行動の工程は、どの位置においても交互に配置することができる。
本発明の第2の態様によれば、バッファプールが割り当てリストおよび割り当て解除リストを有するように構成されているバッファリソース管理方法を提供する。割り当てリストは、前のバッファオブジェクトの中の次のポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当てリストの先頭のバッファオブジェクトを指し示す先頭ポインタとを有する。割り当て解除リストは、前のバッファオブジェクトの中の次のポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当て解除リストの先頭のバッファオブジェクトを指し示す先頭ポインタと、割り当て解除リストの最後のバッファオブジェクトの次のポインタを指し示す末尾ポインタとを有し、この末尾ポインタは、ポインタのポインタである。初期化においては、割り当て解除リストの先頭ポインタは空であり、割り当て解除リストの末尾ポインタは、割り当て解除リストの先頭ポインタ自体を指し示す。バッファリソース管理方法は、割り当て解除リストの末尾ポインタによってアドレス指定される、割り当て解除リストの最後のバッファオブジェクトの次のポインタに、新しく解放されるバッファオブジェクトを指示させる工程と、割り当て解除リストの末尾ポインタを新しく解放されるバッファオブジェクトの次のポインタに移動させる工程とである、再利用行動の工程を有していてもよい。
一実施形態においては、バッファリソース管理方法は、新しく解放されるバッファオブジェクトが割り当て解除リストの中にリンクされた後、割り当て解除リストの先頭ポインタが空であるか否かを判定する工程と、割り当て解除リストの先頭ポインタが空である場合に、割り当て解除リストの末尾ポインタに割り当て解除リストの先頭ポインタ自体を指示させる工程とである、事後調整行動の工程をさらに有していてもよい。バッファリソース管理方法は、事後調整行動の後、割り当てリストの先頭ポインタが空であるか否か、および新しく解放されたバッファオブジェクトが依然として解放状態にあるか否かを判定する工程と、割り当てリストの先頭ポインタが空であり、かつ新しく解放されたバッファオブジェクトが依然として解放状態にある場合に、再利用行動の工程を再度行う工程とである、再々利用行動の工程をさらに有していてもよい。
本発明の第3の態様によれば、本発明の第1および第2の態様のうちのいずれか1つによる方法を実行するために、コンピューティングデバイスで実行可能であり、通信機器におけるバッファリソース管理を促進する、コンピュータで読み取り可能な命令を有する、コンピュータで読み取り可能な記憶媒体を提供する。
本発明の第4の態様によれば、割り当て解除リストを有するように構成されているバッファプールを有する、通信機器を提供する。割り当て解除リストは、前のバッファオブジェクトの中の次のポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当て解除リストの先頭のバッファオブジェクトを指し示す先頭ポインタと、割り当て解除リストの最後のバッファオブジェクトの次のポインタを指し示す末尾ポインタとを有し、この末尾ポインタは、ポインタのポインタである。
一実施形態の初期化においては、割り当て解除リストの先頭ポインタは空であり、割り当て解除リストの末尾ポインタは、割り当て解除リストの先頭ポインタ自体を指し示す。
別の実施形態においては、バッファプールは、割り当てリストを有するようにさらに構成されており、割り当てリストは、前のバッファオブジェクトの中の次のポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当てリストの先頭のバッファオブジェクトを指し示す先頭ポインタとを有する。
さらに別の実施形態においては、通信機器は、割り当てリストの先頭ポインタに割り当て解除リストの先頭ポインタの役割を割り当てる工程と、割り当て解除リストの先頭ポインタを空にクリアする工程と、割り当て解除リストの末尾ポインタに割り当て解除リストの先頭ポインタ自体を指示させる工程とである、引き継ぎ行動の工程を実行するように構成されたプロセッサをさらに有していてもよい。
また別の実施形態においては、プロセッサは、割り当てリストが空であるか否かを判定する工程と、割り当てリストが空である場合に、割り当て解除リストが空であるか否かを判定する工程と、割り当て解除リストが空でない場合に、引き継ぎ行動の工程を行う工程とを実行するようにさらに構成されていてもよい。プロセッサは、割り当てリストが空でない場合に、割り当てリストの先頭のバッファオブジェクトを切り離す工程を実行するようにさらに構成されていてもよい。プロセッサは、割り当て解除リストが空である場合に、ヒープの中から複数のバッファオブジェクトを取り出す工程と、その複数のバッファオブジェクトを割り当てリストとリンクさせる工程とを実行するようにさらに構成されていてもよい。
もう1つの実施形態においては、プロセッサは、割り当て解除リストの末尾ポインタによってアドレス指定される、割り当て解除リストの最後のバッファオブジェクトの次のポインタに、新しく解放されるバッファオブジェクトを指示させる工程と、割り当て解除リストの末尾ポインタを新しく解放されるバッファオブジェクトの次のポインタに移動させる工程とである、再利用行動の工程を実行するようにさらに構成されていてもよい。
あるいは代わりに、通信機器は、割り当て解除リストの末尾ポインタによってアドレス指定される、割り当て解除リストの最後のバッファオブジェクトの次のポインタに、新しく解放されるバッファオブジェクトを指示させる工程と、割り当て解除リストの末尾ポインタを新しく解放されるバッファオブジェクトの次のポインタに移動させる工程とである、再利用行動の工程を実行するように構成されたプロセッサをさらに有していてもよい。
さらに、プロセッサは、新しく解放されるバッファオブジェクトが割り当て解除リストの中にリンクされた後、割り当て解除リストの先頭ポインタが空であるか否かを判定する工程と、割り当て解除リストの先頭ポインタが空である場合に、割り当て解除リストの末尾ポインタに割り当て解除リストの先頭ポインタ自体を指示させる工程とである、事後調整行動の工程を実行するようにさらに構成されていてもよい。プロセッサは、事後調整行動の後、割り当てリストの先頭ポインタが空であるか否か、および新しく解放されたバッファオブジェクトが依然として解放状態にあるか否かを判定する工程と、割り当てリストの先頭ポインタが空であり、かつ新しく解放されたバッファオブジェクトが依然として解放状態にある場合に、再利用行動の工程を再度行う工程とである、再々利用行動の工程を実行するようにさらに構成されていてもよい。
一例として、引き継ぎ行動の工程と再利用行動の工程は、どの位置においても交互に配置することができる。
別の例として、通信機器は、基地局(BS)、スイッチ、または進化型ノードB(eNB)であってもよい。
本発明の上記および他の目的、特徴および利点は、添付の図面とともに、本発明の非限定の実施形態についての以下の詳細説明を読むことにより明らかになる。
1つのプロデューサかつ1つのコンシューマのモデルの概略図である。 それぞれのバッファオブジェクト、ヘッダ、およびテールを有する、一例である割り当てリストおよび一例である割り当て解除リスト(「フリーリスト」とも呼ばれる)を示す図である。 バッファオブジェクトを示す概略図である。 一例であるコンシューマタスクのフロー図である。 一例であるプロデューサタスクのフロー図である。 バッファ紛失検出を有する一例であるプロデューサタスクのフロー図である。
以下、本発明の実施形態について、図面に沿って説明する。以下の説明においては、幾つかの特定の実施形態を説明のためだけに使用している。それらの実施形態は、本発明に対する何らかの限定と理解されるものではなく、その例と理解されるものである。本発明の理解をあいまいにする恐れはあるが、従来の構造および構成については省略する。
従来技術によるロックメカニズムは、タスク切り替えの余分のオーバヘッドを持ち込み、並列実行を妨げるので、本発明の1つの目的は、要するに、ロックを除いても、依然としてデータの完全性を確保することにある。
最新のOS理論は、ロックメカニズムがマルチタスク環境におけるリソースコンフリクトを解決する唯一の可能な方法であることを証明している。しかし、その理論は、まさに一般事例を対象としたものであるのに対して、特別な事例においては、ロックはもはや必要ないことがある。図1に示すプロデューサおよびコンシューマが関係する事例は、まさにそのような事例の1つであり、この事例は次の特徴を有する。
●2つの同時タスクのみ利用可能
2つを超えるタスクを有する一般事例とは対照的に、このプロデューサおよびコンシューマの事例は、ちょうど2つのタスクを有する。
●一方は読み出し、他方は書き込む
どのタスクも読み出しも書き込みもできる一般事例とは対照的に、このプロデューサはバッファプールに主に書き込み、一方コンシューマはバッファプールから主に読み出す。
タスクが2つだけあり、それぞれのタスクがバッファプールに対して異なる操作を行う場合、データ構造および処理手順を注意深く設計することによって、ロックを使用することなく、2つのタスクにバッファプールの異なる部分にアクセスさせることが可能である。
上記の目的を達成するためには、以下の設計原理の少なくとも1つに従ってもよい。
1.クリティカルデータ構造を異なるタスクに分離する。
ロックは使用しないが、データ構造を分離する方法は依然として使用してもよく、そうすることにより、データの完全性を広範囲にわたって確保することができる。
例えば、あるリンクリスト構造においては、リストの先頭は、2つのタスクが同時にアクセスするクリティカル変数になり、従ってその完全性を保証することは不可能である。しかし、個別のタスクに対して2つの個々のリストを採用する場合、コンフリクトの可能性は大幅に減少する。
しかし、時には、同時にアクセスがあることは依然として避けられない。従って、依然としてまた別の技術を導入する必要がある。
2.できるだけ少ない数の命令を用いて、それらのクリティカルデータ構造にアクセスする。
クリティカルデータ構造にアクセスするとき、if−then−else方式がたいてい採用される。すなわち、最初に状態を確認し、その結果に応じてデータ構造を操作する。しかし、この方式は、より多くのCPU命令を占有して、データの完全性を確保することをさらに難しくする。コード命令が少なければ少ないほど、コンフリクトの可能性は小さくなる。そういうことから、データ構造および処理手順を注意深く設計することによって、クリティカルデータ構造の状態を確認することなく、同じ処理ロジックを採用するように最善を尽くした方がよい。
3.クリティカルデータ構造の1つへの同時アクセスが避けられないとき、異なるタスクからの操作が互いに矛盾しないようにしておく方がよい。
データ構造を注意深くどのように設計しようと、2つのタスクが同じデータ構造を操作することは常に生じる。ロック同期メカニズムがないと、データ構造に対する2つのタスクの実行シーケンスはランダムであり、その結果は、予測できなくなる。従って、異なるタスクからのコンフリクトする操作を避ける方がよい。ここで、一例の「矛盾しない(compatibility)」の意味は、読み出し−および−書き込み、または書き込み−および−書き込みが同じ結果を有することを意味しており、2つのタスクが同時にデータ構造にアクセスする場合でさえ、決定性の常に同じ結果を生じることができるということである。
4.状態確認を使用する必要があるとき、いったん真と確認されたら、状態が変わらないようにする方がよい。
一般的には、状態確認は、処理手順を注意深くどのように設計しようとも避けられない。状態確認は不可分操作ではないので、予期しないタスク切り替えが確認と対応する操作との間に起こることがある。タスクがその実行を再開後に、状態が変わっていることがあり、データを損なうことになる。そういうことから、ロックを使用しない場合、タスク切り替えが確認とそれに続く操作との間に実際に行われる場合でさえ、状態がいったん真または偽と確認されたら、状態自体を確実に変わらないようにした方がよい。
本発明の一実施形態においては、ロックレス・リソース・コンフリクト解決方法を提供する。この方法においては、バッファプールは、割り当てリストおよび割り当て解除リストを有するように構成されている。割り当てリストは、前のバッファオブジェクトの中のネクスト(次の)ポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当てリストの先頭のバッファオブジェクトを指し示すヘッド(先頭)ポインタとを有する。割り当て解除リストは、前のバッファオブジェクトの中の次のポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当て解除リストの先頭のバッファオブジェクトを指し示す先頭ポインタと、割り当て解除リストの最後のバッファオブジェクトの次のポインタを指し示すテール(末尾)ポインタとを有し、この末尾ポインタはポインタのポインタである。初期化においては、割り当て解除リストの先頭ポインタは空であり、割り当て解除リストの末尾ポインタは、割り当て解除リストの先頭ポインタ自体を指し示す。バッファリソース管理方法は、割り当てリストの先頭ポインタに割り当て解除リストの先頭ポインタの役割を割り当てる工程と、割り当て解除リストの先頭ポインタを空にクリアする工程と、割り当て解除リストの末尾ポインタに割り当て解除リストの先頭ポインタ自体を指示させる工程とである、テイクオーバアクション(引き継ぎ行動)の工程を有していてもよい。引き継ぎ行動の工程を実行する前に、バッファリソース管理方法は、割り当てリストが空でない場合に、割り当てリストの先頭でバッファオブジェクトを切り離して、コンシューマタスクに戻る工程と、あるいは、割り当て解除リストが空でない場合に、引き継ぎ行動の工程を実行することによって、割り当てリストが割り当て解除リストを引き継ぐ工程とを有していてもよい。割り当て解除リストが空である場合、複数のバッファオブジェクトがヒープの中から割り当てられ、割り当てリストにリンクされ、その後コンシューマタスクに戻る。バッファリソース管理方法は、(割り当て解除リストの末尾ポインタによってアドレス指定される)割り当て解除リストの最後のバッファオブジェクトの次のポインタに、新しく解放されるバッファオブジェクトを指示させる工程と、割り当て解除リストの末尾ポインタを新しく解放されるバッファオブジェクトの次のポインタに移動させる工程とである、リクラメーションアクションを(再利用行動)の工程をさらに有していてもよい。バッファリソース管理方法は、解放されるバッファオブジェクトが割り当て解除リストの最後にリンクされた後、割り当て解除リストの先頭ポインタが空になっている(引き継ぎが行われている)場合に、結果を引き継ぎと一致させ続けるために、割り当て解除リストの末尾ポインタに割り当て解除リストの先頭ポインタ自体を指示させる工程である、上記再利用に続くポスト・アジャストメント・アクション(事後調整行動)の工程をさらに有していてもよい。バッファリソース管理方法は、事後調整以降、割り当てリストの先頭ポインタが空になり(バッファオブジェクトがコンシューマに既に割り当てられた)、かつ新しく解放されたバッファオブジェクトが依然として解放状態にある場合に、バッファ紛失を避けるために、上記再利用行動の工程を再び行う工程である、上記事後調整に続く再リクラメーションアクション(再々利用行動)の工程をさらに有していてもよい。
上記の設計原理1に基づいて、バッファプールは、それぞれ割り当ておよび割り当て解除用の、2つの個別リストを有するように設計されている。詳細には、図2は、それぞれのバッファオブジェクト、ヘッダおよびテールを有する、これら2つの個別リスト(割り当てリスト、割り当て解除リスト(「フリーリスト」とも呼ばれる))を示す。
図2は、それぞれのバッファオブジェクト、ヘッダおよびテールを有する、一例である割り当てリストおよび一例である割り当て解除リスト(「フリーリスト」とも呼ばれる)を示す。図2を参照すると、グローバルポインタは、次のように記述される。
●alloc_head:
割り当てリストを指し示す(バッファ)先頭ポインタ
○ポインタはNULLに初期化される。
○ヒープ内の大容量メモリに言及している。
○引き継ぎ後は、割り当て解除リストの最初のバッファオブジェクトを指し示す。
●free_head:
割り当て解除リストを指し示す(バッファ)先頭ポインタ
○ポインタはNULLに初期化される。
○割り当て解除リストの最初のバッファオブジェクトを指し示す。
○引き継ぎ後、ポインタは再びNULLに再設定される。
●free_tail:
割り当て解除リストの最後のバッファオブジェクトの次のポインタを指し示す(バッファ**)末尾ポインタ
○ポインタは初期化においてfree_headを指し示す。
○バッファオブジェクトが解放されるたびに、そのバッファオブジェクトは、free_tailによって指示されて割り当て解除リストの最後にリンクされ、free_tailは、解放されたバッファオブジェクトの次のポインタを指し示すように移動される。
○引き継ぎ後、free_tailは再びfree_headを指し示すように再設定される。
本発明の幾つかの実施形態は、図2に示す割り当て解除リストおよび割り当てリストの少なくとも1つを有するように構成されていてもよいバッファプールを有する、通信機器を提供する。この通信機器は、基地局(BS)、スイッチまたは進化型ノードB(eNB)であってもよい。詳細には、割り当て解除リストは、前のバッファオブジェクトの中の次のポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当て解除リストの先頭のバッファオブジェクトを指し示す先頭ポインタ(free_head)と、割り当て解除リストの最後のバッファオブジェクトの次のポインタを指し示す末尾ポインタ(free_tail)とを有し、この末尾ポインタは、ポインタのポインタである。割り当てリストは、前のバッファオブジェクトの中の次のポインタによって次のバッファオブジェクトにリンクされた1つ以上のバッファオブジェクトと、割り当てリストの先頭のバッファオブジェクトを指し示す先頭ポインタ(alloc_head)とを有する。
図3は、バッファオブジェクトを示す概略図である。
図3を参照すると、1つのバッファオブジェクトは、以下のフィールドを有する。
●inFreeList:バッファオブジェクトがプールの中にあるか否かを示すブール代数(真(TRUE):空、偽(FALSE):使用)
このフィールドは、次のルールに従って設定される。
○初期化において、フィールドは真に設定される。
○コンシューマタスクがプールの中からバッファを割り当てるとき、割り当てリストからリンク解除する(切り離す)前にフィールドを偽に設定した方がよい。
○プロデューサタスクがバッファをプールに解放するとき、割り当て解除リストに付加する前にフィールドを真に設定した方がよい。
○コンシューマタスクがバッファをプールに戻すとき、フィールドを真に設定する前にまずバッファを割り当てリストの最初に挿入した方がよい。
●コンテンツ[]:char型[]
例えば最大2,500バイトの着信パケットを保持する。
●長さ
実際のバッファコンテンツの長さ。
●オフセット
アレイ内のコンテンツの開始オフセットであり、前置されるプロトコルヘッダ(PDCP)を保持する。
●次
続くバッファオブジェクトを指し示す次のポインタ。
●魔法数(マジックナンバー)
バッファの所有者を示す任意の隠しフィールドである。
このフィールドは、初期化によってプロデューサになっている。バッファオブジェクトは、通常プロデューサタスクによって解放されるからである。しかし、異なる処理を可能にするために、コンシューマタスクが未使用のバッファを解放してプールに戻すとき、コンシューマに修正されてもよい。
上記の設計原理2に基づいて、通常のif−then−elseコードモデルの代わりに、各タスクは、クリティカルリソースの先取りと片付け作業を遂行するための2つの命令のみを有する同じコードモデルをまさに使用する。こうすることにより、命令数を少なくしている。その結果、可能な命令シーケンスの組み合わせのセットを大幅に減少させ、全ての場合を列挙することを可能にして、アルゴリズムの正しさを保証している。
コンフリクトは、2つのタスクの交互実行によって生じるので、アルゴリズムは、可能なコードシーケンスの組み合わせを全て考慮する必要があり、全ての可能性を確実に列挙する必要がある。
1つのタスクがM−1個の命令を有して、可能な命令の交互配置位置がM個あり、他のタスクがその位置で交互配置されるN個の命令を有すると想定すると、全ての可能なコードシーケンスの組み合わせ数は次の通りである。
S(N,M)=S(N−1,M)+S(N−1,M−1)+S(N−1,M−2)+...+S(N−1,1)
Nを1、2、3...から列挙すると、
S(1,M)=M=O(M)
S(2,M)=S(1,M)+S(1,M−1)+S(1,M−2)+...+S(1,1)
=M+M−1+M−2+...+1=(M+1)×M/2
=O(M
S(3,M)=S(2,M)+S(2,M−1)+S(2,M−2)+...+S(2,1)
=(M+1)×M/2+(M)×(M−1)/2+(M−1)×(M−2)/2+...+1
=O(M
S(N,M)=O(M
上式から、MおよびNが大きい値である場合、コード組み合わせセットの数は膨大な値に達して、全ての可能性を網羅することは極端に難しくなる。まさにこの理由から、クリティカルコードシーケンスは、少ない命令数に限定されている。
この点に関しては後で詳述するように、クリティカルコードシーケンスを少ない命令数に減少させた場合でさえ、コンフリクトを生じる操作が、引き継ぎ手順中に依然として起こることがある。ここで、コンシューマタスクは、{free_head=NULL;free_tail=&free_head}である2つのクリティカル命令のみを有するように設計されていて、3つの可能な交互配置位置があり、プロデューサタスクは、{free_tail=pNodeDel;free_tail=&(pNodeDel−>next)}である2つのクリティカル命令のみを有するように設計されている。実際の状況においては、コンシューマタスクおよびプロデューサタスクのこれらの命令は、どの位置においても交互配置可能である。そういうことから、交互配置コード組み合わせセットの合計数は、S(N=2,M=3)=S(1,3)+S(1,2)+S(1,1)=3+2+1=6である。
実際の実行においては、どのシナリオに相当するかは明確には誰にもわからないので(確認することができないからである。確認するとなると、余分の交互配置コード組み合わせセットを持ち込むことになる)、最終のコードシーケンスは、どのシナリオが起こるかにかかわらず、結果が常に正しいことを保証できる方がよい。上記の設計原理3に基づいて、上記の全てのシナリオにおいて矛盾しないように、行動を注意深く選択した方がよい。例えば、いったん引き継ぎが検出されると、事後調整中に、割り当て解除リストの末尾ポインタは、戻されて、割り当て解除リストの先頭ポインタを指し示す。末尾ポインタの上記の調整は、引き継ぎ手順と事後調整手順の間でだけ矛盾しないからであり、引き継ぎ行動と再利用行動がどのように互いに交互配置されるかにかかわらず常に正しい。
新しい手順がコンフリクトの可能性をより小さい範囲に減少させるように特別な設計を採用している場合でさえ、2つのタスクの交互実行によって引き起こされる副作用は、依然として避けられない。幸いにも、他のタスクのフットプリントを注意深くチェックすることによって、その副作用を完全に取り除くことができる。他のタスクがデータ構造に作用していることを見つけると、副作用を取り除くために、データ構造に特別な調整を行う必要がある。設計原理4に基づくと、他のタスクが作用しても、データ構造の確認状態は安泰である。割り当て解除リストの先頭ポインタがいったん空になると、コンシューマタスクはもはやそれに作用せず、プロデューサタスクが意図的にそれを変更するまで、常にいつまでも空のままになっているからである。プロデューサタスクが意図的にそれを変更するのは、もちろんプロデューサタスク自体とコンフリクトすることはない。その結果、事後調整の正しさを保証する。
上記の設計原理1〜4に基づいて、コンシューマタスクおよびプロデューサタスク用の動作記述および対応する疑似コードについて、次に示す。
割り当て
スレッドが、多重定義された新しい演算子を通じて、プールからバッファを割り当てるように要求すると、スレッドの役割に応じて別々の処理が行われる。
−コンシューマ
通常のシナリオである。リンクが空でない場合、割り当てリストの先頭からバッファオブジェクトを切り離すように常に試みる。リンクが空である場合は、割り当て解除リストが空でない場合に、プロデューサのスレッドから割り当て解除リストを引き継ぐように試み、割り当て解除リストが空である場合に、バッファプールを作成するためにヒープの中から大容量メモリを割り当てるように、独自の新しい機能を呼び出す。
−プロデューサ
それ自体のプロデューサプールの中からバッファを割り当てる(後で詳述する)。
コンシューマタスク
if(割り当てリストが空である)

if(割り当て解除リストが空である)

//ヒープの中から取得
ヒープの中から1組のバッファを割り当て、それらを割り当てリストにリンクする

else

//引き継ぎ行動
alloc_head=free_head;
free_head=NULL;
free_tail=&free_head;


//バッファオブジェクトの割り当て
割り当てリストの先頭からバッファオブジェクトを切り離す
割り当て解除
割り当て手順と同様に、割り当て解除においても、次の2つのシナリオを区別する必要がある。
−プロデューサ
free_tailポインタによってのみ割り当て解除リストに作用する。2つのCPU命令で十分である。すなわち、バッファオブジェクトをfree_tailが指示する割り当て解除リストの最後にリンクさせる命令と、free_tailをこのバッファオブジェクトに移動させる命令とで十分である。割り当て解除シナリオが割り当てシナリオの引き継ぎ動作と同時に行われることがあるので、その後、データの完全性を保証するために特別な事後調整が依然として必要である(後で詳述する)。
−コンシューマ
プロデューサとの衝突を避けるために、コンシューマタスクからの割り当て解除手順は、割り当てリストの最初にバッファを挿入することで、割り当てリストに作用するだけである。
プロデューサタスク
if{(free_tail==&free_head)

//引き継ぎとのコンフリクトを解決する
//free_tailをフリーリストの最後に移動させる
while(free_tail !=NULL)

free_tail=&(free_tail)−>next


//バッファオブジェクトをフリーリストの最後にリンクする
free_tail=pNodeDel;
free_tail=&(pNodeDel−>next);
//事後調整
if(free_headが空である場合)

free_tail=&free_head;

これらに対応するものとして、図4は、一例であるコンシューマタスクのフロー図を示し、図5は、一例であるプロデューサタスクのフロー図を示す。
本発明の幾つかの実施形態においては、図2に示すバッファプールを有する通信機器は、上記のコンシューマタスクの1つ以上の工程および/または上記の手順タスクの1つ以上の工程を行うように構成されたプロセッサをさらに有していてもよい。
上述のように、割り当て解除は、引き継ぎ動作と同時に起こることがある。コード命令交互配置効果のせいで、free_tailが今解放されるバッファに移動されたときに、コンシューマタスクに引き継がれていることがあり、この場合、free_tail点は正しくなくなり、末尾ポインタの正しさを維持するために、余分の調整が必要になることがある。
データの完全性を維持するために、事後調整が、free_headを確認する割り当て解除手順に続いて常に行われる。free_headが空である場合は、引き継ぎが本当に行われたことを意味しており(現在の割り当て解除は、free_headを空にしたまま終わってはいけない)、free_tailをfree_headに再設定する。これは、引き継ぎ行動と全く同じであるが、矛盾のない結果を生じる(設計原理3を参照)。
free_headは、引き継ぎ行動によっていったん空に設定されると、もはや変わらない。それ故、上記の確認は信頼でき、事後調整において使用することができる。しかし、非空のfree_headの確認は、非空のfree_headが引き継ぎ行動によって空に再設定されうるので信頼できず、従って、事後調整においては使用されない。
事後調整は、引き継ぎと再利用との間のコンフリクトを解決することができるが、バッファ紛失の問題は依然として存在することがあり、次のように生じる。
●割り当てリストにバッファがなく、割り当て解除リストに1つだけバッファが残されている。
●割り当て解除において、割り当て解除リストの最後のオブジェクト(唯一のバッファオブジェクト)をfree_tailによって指示してもらい、その次のポインタへリンクしようと試みるまさにその前に、タスク切り替えが起こり、割り当て解除リストから唯一のバッファオブジェクトを引き継いでコンシューマタスクに割り当て、次いでalloc_headは再びNULLに設定される。
●プロデューサタスクは、何事も起こらなかったかのように、その実行を再開して続行する。この場合、プロデューサタスクは、依然として前のバッファオブジェクト(割り当てられている)を使用して、解放されるバッファをリンクする。解放されたバッファは、もはやどの既知のポインタからも参照されないので漏れる。
上記のバッファ紛失問題を解決するために、バッファ紛失検出手順が導入されてもよい。このために、割り当てリストがヒープの中から割り当てられた新しいバッファオブジェクトを有するか、それとも割り当て解除リストから引き継がれた再利用のバッファオブジェクトを有するかを示すために、追加のグローバル変数であるNewfromHeap(ブール代数)も、本実施形態において定義される。
●NewfromHeap:
割り当てリストがヒープの中から割り当てられた新しいバッファオブジェクトを有するか、それとも割り当て解除リストから引き継がれた再利用のバッファオブジェクトを有するかを示す(ブール代数)。
○変数は、初期化において偽に設定される。
○ヒープの中から大容量メモリが割り当てられて、alloc_headによって参照されるたびに、変数は真に設定される。
○引き継ぎ後、変数は偽に再設定される。
以下の条件を確認することによって、上記のバッファ紛失状態の事例に狙いを定める。
●free_head==NULL
バッファ紛失の前提条件である引き継ぎが本当に起こっていることを意味している。
●inFreeList==TRUE(真)
バッファが割り当てられていないことを意味しており、紛失する可能性がある。
●(alloc_head==NULL)||(NewfromHeap)
割り当て解除リストから引き継がれた唯一のバッファオブジェクトが割り当てられており、バッファ紛失が生じていることを意味する。
上記の条件が満足される場合、バッファ紛失が生じ、再び再利用される必要がある。2回目の再利用は、割り当て解除リストが空になっているので、成功するであろう。引き継ぎ行動は再び起こることはなく、安全に割り当て解除リストにリンクされうる。
この関連で、プロデューサタスクの疑似コードは、次のように修正されてもよい。
プロデューサタスク
for(int i=0; i<2;i++)

if(free_tail==&free_head)

//引き継ぎとのコンフリクトを解決する
//free_tailをフリーリストの最後に移動させる
while(free_tail !=NULL)

free_tail=&(free_tail)−>next


//バッファオブジェクトをフリーリストの最後にリンクする
free_tail=pNodeDel;
free_tail=&(pNodeDel−>next);
//事後調整
if(free_headが空である)

free_tail=&free_head;
//バッファ紛失検出
if((pNodeDel−>inFreeList==TRUE)&&
(alloc_head==NULL||NewfromHeap))

continue;


break;

図6は、一例であるバッファ紛失検出を有するプロデューサタスクのフロー図を示す。
本発明の幾つかの実施形態における図2に示すバッファプールを有する通信機器は、バッファ紛失検出を有する上記のプロデューサタスクの1つ以上の工程を実行するように構成されたプロセッサをさらに有していてもよい。
提案のロックレス・バッファリソース管理方式は、リソースを解放するだけの1つのプロデューサと、リソースを割り当てるだけの1つのコンシューマとのシナリオに、たいてい適用される。場合によっては、プロデューサも、リソースを割り当てる必要があることもある。他方では、コンシューマタスクも、未使用のリソースを解放してバッファプールに戻す必要があることもある。
この状況において、プロデューサは、コンシューマとの衝突を避けるために、もう1つ個別のプール(他のタスクはこのプールにアクセスしないので、リンクされるリストは1つだけで十分である)からリソースを割り当ててもよい。プロデューサタスクのリソース割り当ての可能性はコンシューマタスクのようには高くないので、別のプールを管理するためのオーバヘッドは依然として受け入れ可能である。
コンシューマ側に関しては、コンシューマは、未使用のバッファオブジェクトを割り当てリストの最初に挿入することによって未使用リソースを解放してもよい。割り当てリストは、コンシューマタスク自体だけが作用するので、割り当てリストに衝突は少しももたらさない。
提案のロックレス・バッファリソース管理方式は、1ms期間当たり少なくとも60μsのタスク切り替えのオーバヘッドを減少することと、フルレート(ダウンリンク帯域幅80Mbpsおよびエアインタフェース帯域幅20Mbps)のユーザデータ量で、約10%の性能の向上を達成することが証明されている。
本発明の他のアレンジメントには、方法実施形態の工程および動作を実行するソフトウェアプログラムを含む。これについては、まず概要を述べ、それから詳細に説明する。より具体的には、コンピュータプログラムプロダクトは、コンピュータプログラムロジックがその上に符号化されたコンピュータで読み取り可能な媒体を備えるような実施形態である。コンピュータプログラムロジックは、コンピュータデバイスで実行されるとき、上述のロックレス・バッファリソース管理方式を提供するための対応する動作を提供する。コンピュータプログラムロジックは、コンピュータシステムの少なくとも1つのプロセッサで実行されるとき、その少なくとも1つのプロセッサが、本発明の実施形態の動作(方法)を実行することを可能にする。本発明のそのようなアレンジメントは、光媒体(例えば、CD−ROM)、ソフトディスクまたはハードディスクなどのコンピュータで読み取り可能な媒体上で提供されるか、またはそれらに符号化されたソフトウェア、コードおよび/または他のデータ構造;1つ以上のROMまたはRAMまたはPROMのチップ上のファームウェアまたはマイクロコードなどの他の手段;あるいは特定用途向け集積回路(ASIC);あるいは1つ以上のモジュールの中のダウンロード可能なソフトウェアイメージおよび共有データベース等として典型的に提供される。ソフトウェア、ハードウェア、またはそのようなアレンジメントは、コンピュータデバイスの1つ以上のプロセッサが本発明の実施形態によって述べられる技術を行うことができるように、コンピュータデバイスに搭載されてもよい。例えば他のエンティティのデータ通信デバイスまたはコンピュータデバイスのグループなどと一緒に動作しているソフトウェアプロセスも、本発明のノードおよびホストを提供してもよい。本発明によるノードおよびホストも、複数のデータ通信デバイス上の複数のソフトウェアプロセス、または小さい特定のコンピュータのグループ上で実行される全てのソフトウェアプロセス、または単一のコンピュータ上で実行される全てのソフトウェアプロセスの間で分散されてもよい。
システムの態様のハードウェア実施とソフトウェア実施との間には、差異はほとんど残されていない。ハードウェアまたはソフトウェアの使用は、一般に(しかし、ある状況においては、ハードウェアにするかソフトウェアにするかの選択は重要なことがあるので、常にではない)、費用対効率のトレードオフを意味する設計の選択である。本明細書に記載のプロセスおよび/またはシステムおよび/または他の技術に影響を及ぼすことがある種々の媒介物があり(例えば、ハードウェア、ソフトウェアおよび/またはファームウェア)、好ましい媒介物は、プロセスおよび/またはシステムおよび/または他の技術が配備される状況とともに変わる。例えば、開発者が速度と精度が最重要であると判断する場合、開発者は、主にハードウェアおよび/またはファームウェア媒介物を選択してもよい。柔軟性が最重要である場合、開発者は、主にソフトウェア実施を選択してもよい。また別の代替として、開発者は、ハードウェア、ソフトウェアおよび/またはファームウェアの組み合わせを選択してもよい。
これまでの説明は、本発明の実施形態のみを挙げており、本発明を少しも限定する意図はない。従って、本発明の精神および原理内で行われる修正、置換、改善などのいずれも、本発明の範囲に包含されるものである。
<略語集>
BS 基地局(Base Station)
eNB 進化型ノードB(evolved Node B)
LTE ロングタームエボリューション(Long Term Evolution)
MAC 媒体アクセス制御(Media Access Control)
OS オペレーティングシステム(Operating System)
PDCP パケットデータ収束プロトコル(Packet Data Convergence Protocol)
PDU パケットデータユニット(Packet Data Unit)
RLC 無線リンク制御(Radio Link Control)
TTI 送信時間間隔(Transmission Time Interval)
UP ユーザプレーン(User Plane)

Claims (21)

  1. バッファリソースの管理方法であって、割り当てリストと割り当て解除リストとを有するようにバッファプールが構成されており、
    前記割り当てリストは、前のバッファオブジェクトにおいてネクストポインタによって次のバッファオブジェクトへとリンクされる1つ以上のバッファオブジェクトと、前記割り当てリストにおける先頭のバッファオブジェクトの次のバッファオブジェクトを指し示しているヘッドポインタとを有し、
    前記割り当て解除リストは、前のバッファオブジェクトにおいてネクストポインタによって次のバッファオブジェクトへとリンクされる1つ以上のバッファオブジェクトと、前記割り当てリストにおける先頭のバッファオブジェクトの次のバッファオブジェクトを指し示しているヘッドポインタと、前記割り当てリストの最後に位置するバッファオブジェクトのネクストポインタを指し示しているテールポインタとを有し、前記テールポインタはポインタのポインタであり、
    初期化の際に、前記割り当て解除リストの前記ヘッドポインタが空にされ、前記割り当て解除リストの前記テールポインタが前記割り当て解除リストの前記ヘッドポインタを指し示すようにされ、
    前記バッファリソースの管理方法は、引き継ぎアクションとして、
    前記割り当て解除リストの前記ヘッドポインタを前記割り当てリストの前記ヘッドポインタに割り当てるステップと、
    前記割り当て解除リストの前記ヘッドポインタをクリーニングして空にするステップと、
    前記割り当て解除リストの前記テールポインタを当該割り当て解除リストの前記ヘッドポインタを指し示すようにするステップと
    を有することを特徴とするバッファリソースの管理方法。
  2. 前記割り当てリストが空かどうかを判定するステップと、
    前記割り当てリストが空である場合、前記割り当て解除リストが空であるかどうかを判定するステップと、
    前記割り当て解除リストが空でない場合、前記引き継ぎアクションを実行するステップと
    をさらに有することを特徴とする請求項1に記載のバッファリソースの管理方法。
  3. 前記割り当てリストが空でない場合、前記割り当てリストにおける前記先頭のバッファオブジェクトをリンク解除するステップをさらに有することを特徴とする請求項2に記載のバッファリソースの管理方法。
  4. 前記割り当て解除リストが空である場合、ヒープから複数のバッファオブジェクトを割り当て、当該複数のバッファオブジェクトを前記割り当てリストにリンクするステップをさらに有することを特徴とする請求項2に記載のバッファリソースの管理方法。
  5. リクラメーションアクションとして、
    前記割り当て解除リストにおける前記最後に位置する前記バッファオブジェクトの前記ネクストポインタを、新しく解放されたバッファオブジェクトを指し示すようにするステップであって、前記割り当て解除リストの最後の前記ネクストポインタは前記割り当て解除リストの前記テールポインタによってアドレス指定されている、前記ステップと、
    前記割り当て解除リストの前記テールポインタを前記新しく解放されたバッファオブジェクトのネクストポインタに移動させるステップと
    をさらに有することを特徴とする請求項1ないし4のいずれか1項に記載のバッファリソースの管理方法。
  6. 事後調整アクションとして、
    前記新しく解放されたバッファオブジェクトが前記割り当て解除リスト内にリンクされた後で、前記割り当て解除リストの前記ヘッドポインタが空かどうかを判定するステップと、
    前記割り当て解除リストの前記ヘッドポインタが空である場合、前記割り当て解除リストの前記テールポインタを前記割り当て解除リストの前記ヘッドポインタを指し示すようにするステップと
    をさらに有することを特徴とする請求項5に記載のバッファリソースの管理方法。
  7. 再リクラメーションアクションとして、
    前記事後調整アクションの後で、前記割り当てリストの前記ヘッドポインタが空で、かつ、前記新しく解放されたバッファオブジェクトがまだ解放状態であるかどうかを判定するステップと、
    前記割り当てリストの前記ヘッドポインタが空で、かつ、前記新しく解放されたバッファオブジェクトがまだ解放状態である場合、前記リクラメーションアクションを再度実行するステップと
    をさらに有することを特徴とする請求項6に記載のバッファリソースの管理方法。
  8. 前記引き継ぎアクションと前記リクラメーションアクションとはどの位置においても交互に配置可能であることを特徴とする請求項5ないし7のいずれか1項に記載のバッファリソースの管理方法。
  9. バッファリソースの管理方法であって、バッファプールが割り当てリストと割り当て解除リストとを有すように構成されており、
    前記割り当てリストは、前のバッファオブジェクトにおいてネクストポインタによって次のバッファオブジェクトへとリンクされる1つ以上のバッファオブジェクトと、前記割り当てリストにおける先頭のバッファオブジェクトの次のバッファオブジェクトを指し示しているヘッドポインタとを有し、
    前記割り当て解除リストは、前のバッファオブジェクトにおいてネクストポインタによって次のバッファオブジェクトへとリンクされる1つ以上のバッファオブジェクトと、前記割り当てリストにおける先頭のバッファオブジェクトの次のバッファオブジェクトを指し示しているヘッドポインタと、前記割り当てリストの最後に位置するバッファオブジェクトのネクストポインタを指し示しているテールポインタとを有し、前記テールポインタはポインタのポインタであり、
    初期化の際に、前記割り当て解除リストの前記ヘッドポインタが空にされ、前記割り当て解除リストの前記テールポインタが前記割り当て解除リストの前記ヘッドポインタを指し示すようにされ、
    前記バッファリソースの管理方法は、リクラメーションアクションとして、
    前記割り当て解除リストにおける前記最後に位置する前記バッファオブジェクトの前記ネクストポインタを、新しく解放されたバッファオブジェクトを指し示すようにするステップであって、前記割り当て解除リストの最後の前記ネクストポインタは前記割り当て解除リストの前記テールポインタによってアドレス指定されている、前記ステップと、
    前記割り当て解除リストの前記テールポインタを前記新しく解放されたバッファオブジェクトのネクストポインタに移動させるステップと
    を有することを特徴とするバッファリソースの管理方法。
  10. 事後調整アクションとして、
    前記新しく解放されたバッファオブジェクトが前記割り当て解除リスト内にリンクされた後で、前記割り当て解除リストの前記ヘッドポインタが空かどうかを判定するステップと、
    前記割り当て解除リストの前記ヘッドポインタが空である場合、前記割り当て解除リストのテールポインタを前記割り当て解除リストのヘッドポインタを指し示すようにするステップと
    をさらに有する
    ことを特徴とする請求項9に記載のバッファリソースの管理方法。
  11. 再リクラメーションアクションとして、
    前記事後調整アクションの後で、前記割り当てリストの前記ヘッドポインタが空で、かつ、前記新しく解放されたバッファオブジェクトがまだ解放状態であるかどうかを判定するステップと、
    前記割り当てリストの前記ヘッドポインタが空で、かつ、前記新しく解放されたバッファオブジェクトがまだ解放状態である場合、前記リクラメーションアクションを再度実行するステップと
    ことを特徴とする請求項10に記載のバッファリソースの管理方法。
  12. 通信機器においてバッファリソース管理を実行させるコンピュータ可読命令であって、コンピューティングデバイスによって実行可能であり、請求項1ないし11のいずれか1項に記載された前記バッファリソースの管理方法を実行させるコンピュータ可読命令を備えたコンピュータ可読記憶媒体。
  13. 割り当て解除リストを有するように構成されたバッファプールを備えた通信機器であって、
    前記割り当て解除リストは、
    前のバッファオブジェクト内のネクストポインタによって次のバッファオブジェクトへとリンクされた1つ以上のバッファオブジェクトと、
    前記割り当て解除リストの先頭に位置するバッファオブジェクトを指し示すヘッドポインタと、
    ポインタのポインタであるテールポインタであって、前記割り当て解除リストの最後に位置するバッファオブジェクトのネクストポインタを指し示すテールポインタと
    を有することを特徴とする通信機器。
  14. 初期化の際に、前記割り当て解除リストの前記ヘッドポインタが空にされ、前記割り当て解除リストの前記テールポインタが前記割り当て解除リストの前記ヘッドポインタを指し示すようにされることを特徴とする請求項13に記載の通信機器。
  15. 前記バッファプールはさらに割り当てリストを有するように構成されており、
    前記割り当てリストは、
    前のバッファオブジェクト内のネクストポインタによって次のバッファオブジェクトへとリンクされた1つ以上のバッファオブジェクトと、
    前記割り当てリストの先頭に位置するバッファオブジェクトを指し示すヘッドポインタと
    を有することを特徴とする請求項13または14に記載の通信機器。
  16. 引き継ぎアクションとして、
    前記割り当て解除リストの前記ヘッドポインタを前記割り当てリストの前記ヘッドポインタに割り当てるステップと、
    前記割り当て解除リストの前記ヘッドポインタをクリーニングして空にするステップと、
    前記割り当て解除リストの前記テールポインタを当該割り当て解除リストの前記ヘッドポインタを指し示すようにするステップと
    を実行するように構成されたプロセッサをさらに有することを特徴とする請求項13ないし15のいずれか1項に記載の通信機器。
  17. 前記プロセッサは、さらに、
    前記割り当てリストが空かどうかを判定するステップと、
    前記割り当てリストが空である場合、前記割り当て解除リストが空であるかどうかを判定するステップと、
    前記割り当て解除リストが空でない場合、前記引き継ぎアクションを実行するステップとを実行するように構成されていることを特徴とする請求項16に記載の通信機器。
  18. 前記プロセッサは、さらに、前記割り当てリストが空でない場合、前記割り当てリストにおける前記先頭のバッファオブジェクトをリンク解除するステップを実行するように構成されていることを特徴とする請求項17に記載の通信機器。
  19. 前記プロセッサは、さらに、前記割り当て解除リストが空である場合、ヒープから複数のバッファオブジェクトを割り当て、当該複数のバッファオブジェクトを前記割り当てリストにリンクするステップを実行するように構成されていることを特徴とする請求項17に記載の通信機器。
  20. リクラメーションアクションとして、
    前記割り当て解除リストの前記最後に位置する前記バッファオブジェクトの前記ネクストポインタを、新しく解放されたバッファオブジェクトを指し示すようにするステップであって、前記割り当て解除リストの最後の前記ネクストポインタは前記割り当て解除リストの前記テールポインタによってアドレス指定されている、前記ステップと、
    前記割り当て解除リストの前記テールポインタを前記新しく解放されたバッファオブジェクトのネクストポインタに移動させるステップと
    を実行するように構成されたプロセッサをさらに有することを特徴とする請求項13ないし15のいずれか1項に記載の通信機器。
  21. 前記プロセッサは、さらに、
    事後調整アクションとして、
    前記新しく解放されたバッファオブジェクトが前記割り当て解除リスト内にリンクされた後で、前記割り当て解除リストの前記ヘッドポインタが空かどうかを判定するステップと、
    前記割り当て解除リストの前記ヘッドポインタが空である場合、前記割り当て解除リストの前記テールポインタを前記割り当て解除リストの前記ヘッドポインタを指し示すようにするステップとを実行するように構成されていることを特徴とする請求項20に記載の通信機器。
JP2014546268A 2011-12-14 2011-12-14 バッファリソース管理方法および通信機器 Pending JP2015506027A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/083973 WO2013086702A1 (en) 2011-12-14 2011-12-14 Buffer resource management method and telecommunication equipment

Publications (1)

Publication Number Publication Date
JP2015506027A true JP2015506027A (ja) 2015-02-26

Family

ID=48611813

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014546268A Pending JP2015506027A (ja) 2011-12-14 2011-12-14 バッファリソース管理方法および通信機器

Country Status (10)

Country Link
US (1) US20140348101A1 (ja)
EP (1) EP2792109A1 (ja)
JP (1) JP2015506027A (ja)
KR (1) KR20140106576A (ja)
CN (1) CN104025515A (ja)
BR (1) BR112014014414A2 (ja)
CA (1) CA2859091A1 (ja)
IN (1) IN2014KN01447A (ja)
RU (1) RU2014128549A (ja)
WO (1) WO2013086702A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424123B (zh) * 2013-09-10 2018-03-06 中国石油化工股份有限公司 一种无锁数据缓冲区及其使用方法
US9398117B2 (en) * 2013-09-26 2016-07-19 Netapp, Inc. Protocol data unit interface
CN107797938B (zh) * 2016-09-05 2022-07-22 北京忆恒创源科技股份有限公司 加快去分配命令处理的方法与存储设备
CN109086219B (zh) * 2017-06-14 2022-08-05 北京忆恒创源科技股份有限公司 去分配命令处理方法及其存储设备
US11593483B2 (en) * 2018-12-19 2023-02-28 The Board Of Regents Of The University Of Texas System Guarder: an efficient heap allocator with strongest and tunable security
US11907206B2 (en) * 2021-07-19 2024-02-20 Charles Schwab & Co., Inc. Memory pooling in high-performance network messaging architecture

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6482725A (en) * 1987-09-24 1989-03-28 Nec Corp Queuing system for data connection
JPH03236654A (ja) * 1990-02-14 1991-10-22 Sumitomo Electric Ind Ltd データ通信装置
US20040034743A1 (en) * 2002-08-13 2004-02-19 Gilbert Wolrich Free list and ring data structure management
JP2008123516A (ja) * 2006-11-13 2008-05-29 Internatl Business Mach Corp <Ibm> ロックフリー同時fifoキュー、キューを実装する方法、装置およびコンピュータ・プログラム
US7447875B1 (en) * 2003-11-26 2008-11-04 Novell, Inc. Method and system for management of global queues utilizing a locked state

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3034873B2 (ja) * 1988-07-01 2000-04-17 株式会社日立製作所 情報処理装置
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US6298386B1 (en) * 1996-08-14 2001-10-02 Emc Corporation Network file server having a message collector queue for connection and connectionless oriented protocols
US5889779A (en) * 1996-12-02 1999-03-30 Rockwell Science Center Scheduler utilizing dynamic schedule table
US5893162A (en) * 1997-02-05 1999-04-06 Transwitch Corp. Method and apparatus for allocation and management of shared memory with data in memory stored as multiple linked lists
US6487202B1 (en) * 1997-06-30 2002-11-26 Cisco Technology, Inc. Method and apparatus for maximizing memory throughput
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
US6430666B1 (en) * 1998-08-24 2002-08-06 Motorola, Inc. Linked list memory and method therefor
US6668291B1 (en) * 1998-09-09 2003-12-23 Microsoft Corporation Non-blocking concurrent queues with direct node access by threads
US6988177B2 (en) * 2000-10-03 2006-01-17 Broadcom Corporation Switch memory management using a linked list structure
US7860120B1 (en) * 2001-07-27 2010-12-28 Hewlett-Packard Company Network interface supporting of virtual paths for quality of service with dynamic buffer allocation
TW580619B (en) * 2002-04-03 2004-03-21 Via Tech Inc Buffer control device and the management method
CN100403739C (zh) * 2006-02-14 2008-07-16 华为技术有限公司 基于链表的进程间消息传递方法
US7669015B2 (en) * 2006-02-22 2010-02-23 Sun Microsystems Inc. Methods and apparatus to implement parallel transactions
US9043363B2 (en) * 2011-06-03 2015-05-26 Oracle International Corporation System and method for performing memory management using hardware transactions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6482725A (en) * 1987-09-24 1989-03-28 Nec Corp Queuing system for data connection
JPH03236654A (ja) * 1990-02-14 1991-10-22 Sumitomo Electric Ind Ltd データ通信装置
US20040034743A1 (en) * 2002-08-13 2004-02-19 Gilbert Wolrich Free list and ring data structure management
US7447875B1 (en) * 2003-11-26 2008-11-04 Novell, Inc. Method and system for management of global queues utilizing a locked state
JP2008123516A (ja) * 2006-11-13 2008-05-29 Internatl Business Mach Corp <Ibm> ロックフリー同時fifoキュー、キューを実装する方法、装置およびコンピュータ・プログラム

Also Published As

Publication number Publication date
KR20140106576A (ko) 2014-09-03
RU2014128549A (ru) 2016-02-10
US20140348101A1 (en) 2014-11-27
WO2013086702A1 (en) 2013-06-20
CN104025515A (zh) 2014-09-03
CA2859091A1 (en) 2013-06-20
BR112014014414A2 (pt) 2017-06-13
IN2014KN01447A (ja) 2015-10-23
EP2792109A1 (en) 2014-10-22

Similar Documents

Publication Publication Date Title
JP2015506027A (ja) バッファリソース管理方法および通信機器
US8392925B2 (en) Synchronization mechanisms based on counters
JP2017208145A (ja) ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法
KR102206577B1 (ko) 트랜잭셔널 미들웨어 머신 환경에서 분산 트랜잭션 락을 제공하는 시스템 및 방법
ES2719489T3 (es) Aparato y método para procesar eventos en una red de telecomunicaciones
EP3462324B1 (en) Pointers in a memory managed system
US10331500B2 (en) Managing fairness for lock and unlock operations using operation prioritization
US10896001B1 (en) Notifications in integrated circuits
CN107797848B (zh) 进程调度方法、装置和主机设备
US20060031658A1 (en) Method, apparatus, and computer program product for dynamically tuning a data processing system by identifying and boosting holders of contentious locks
US10387053B1 (en) Memory synchronization in a distributed computing system
US11042409B2 (en) Leader election with lifetime term
WO2004066148A1 (en) Method and apparatus for managing resource contention in a multisystem cluster
Burns The application of the original priority ceiling protocol to mixed criticality systems
US10102037B2 (en) Averting lock contention associated with core-based hardware threading in a split core environment
Huang et al. Los: A high performance and compatible user-level network operating system
US10445096B2 (en) Managing lock and unlock operations using traffic prioritization
US9940128B2 (en) Conditional access with timeout
US20120210074A1 (en) Dual mode reader writer lock
US10108453B2 (en) Averting lock contention associated with core-based hardware threading in a split core environment
US20080127213A1 (en) Contention resolution with counter rollover
US11126474B1 (en) Reducing resource lock time for a virtual processing unit
US9509780B2 (en) Information processing system and control method of information processing system
US20150134841A1 (en) Network system, network node and communication method
US8566829B1 (en) Cooperative multi-level scheduler for virtual engines

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141209

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160129

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160902