JP5265758B2 - 組込みまたは無線通信システムにおけるメモリ割当てのためのシステムおよび方法 - Google Patents

組込みまたは無線通信システムにおけるメモリ割当てのためのシステムおよび方法 Download PDF

Info

Publication number
JP5265758B2
JP5265758B2 JP2011503159A JP2011503159A JP5265758B2 JP 5265758 B2 JP5265758 B2 JP 5265758B2 JP 2011503159 A JP2011503159 A JP 2011503159A JP 2011503159 A JP2011503159 A JP 2011503159A JP 5265758 B2 JP5265758 B2 JP 5265758B2
Authority
JP
Japan
Prior art keywords
memory
item
header
size
payload
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.)
Expired - Fee Related
Application number
JP2011503159A
Other languages
English (en)
Other versions
JP2011521313A (ja
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011521313A publication Critical patent/JP2011521313A/ja
Application granted granted Critical
Publication of JP5265758B2 publication Critical patent/JP5265758B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephone Function (AREA)
  • Transceivers (AREA)
  • Communication Control (AREA)

Description

本出願は、2008年4月2日に出願された、「MEMORY ALLOCATION SCHEME FOR EMBEDDED OR WIRELESS COMMUNICATION SYSTEMS」という名称の米国仮特許出願第61/041,878号の利益を主張する。本出願は、全体として参照により組み込まれる。
本分野は、概してメモリ割当てに関し、より詳細には組込みまたは無線通信システムにおけるメモリ割当てに関する。
メモリ割当てサービスは、メモリアイテムのプールを利用する。場合によっては、メモリアイテムは、メモリアイテムの大きさに基づく異なるプールに振り分けられる。例えば、あるプールは多くの小さいメモリアイテムで構成される可能性があり、別のプールは比較的少数の大きいメモリアイテムで構成される可能性がある。メモリ割当て要求に応答して、適切なデータアイテムが特定のプールから選択され、要求するエンティティに返されることが可能である。このシステムは、メモリおよびプロセッサリソースを著しく無駄にすることになる。例えば、小さいメモリアイテムでは、ヘッダのペイロードに対する比率が高く、結果としてメモリを非効率的に使用することになる。さらに、全メモリアイテムが割り当てられると、特定のデータアイテムのかなりのデータ部分は未使用になる可能性がある。また、こうした割当てサービスでは、統計多重化が利用できない。プロセッサリソースはまた、複数の小さいメモリアイテムのチェーン化により消費される。
無線通信システムでは、確実な無線伝送を保証するために、パケットはしばしば小さい固定サイズの「無線リンク」パケット、例えば40バイト、にセグメント化される。メモリを効率的に使用するためには、1つの手法は、それぞれ40バイトのブロックを保持する比較的小さいメモリアイテムの大きいプールを作成することであり、この40バイトのブロックは最終的に上位層で併せてチェーン化されて、より大きいデータブロック(例えば1500バイトのIPパケット)を形成することができる。このサービスの1つの欠点は、メモリアイテムがキャッシュ行に合わせられたもの(32または64バイト)でなければならず、これは小さい無線リンクパケットサイズにふさわしくない可能性があるので、一部のスペースが無駄になる可能性があることである。また、様々な技術は、総メモリを削減するために、同じメモリアイテムのプールを共有することがあり、この場合メモリアイテムのペイロードサイズは、最も大きい無線リンクパケットサイズに適合するように選ばれなければならず、これは浪費をさらに増大する可能性がある。
1つの実施形態では、メモリ管理のためのシステムが提供される。このシステムは、プロセッサと、このプロセッサで実行可能なメモリ管理サービスを備える。メモリ管理サービスは、第1のメモリアイテムを生成するように構成可能であり、第1のメモリアイテムのそれぞれがヘッダおよびペイロードを備え、ペイロードは個別に割り当てることができる複数のメモリチャンクを格納するように構成可能であり、第1のメモリアイテムのヘッダはペイロードの中の割当て可能なスペースを参照し、メモリ管理サービスは、第2のメモリアイテムを生成するように構成可能であり、第2のメモリアイテムのそれぞれが第1のメモリアイテムのペイロードの中の1つまたは複数のメモリチャンクを参照するヘッダを備え、メモリ管理サービスは、メモリ割当て要求に応答して第1または第2のメモリアイテムのヘッダのいずれかからの参照を返すように構成可能である。
別の実施形態では、メモリ管理のための方法が提供される。この方法は、第1のメモリアイテムを割り当てることであって、第1のメモリアイテムはそれぞれ第1のヘッダおよびペイロードを備え、ペイロードは個別に割当て可能なメモリのチャンクを備え、第1のヘッダはペイロードの中の割り当てられていないメモリへの参照を備える、第1のメモリアイテムを割り当てることと、第2のメモリアイテムを割り当てることであって、第2のメモリアイテムはそれぞれ第2のヘッダを備え、第2のヘッダは第1のメモリアイテムのペイロードの中の割り当てられたメモリのチャンクへの参照を備える、第2のメモリアイテムを割り当てることと、メモリ割当て要求を受信することと、第1または第2のメモリアイテムのヘッダからの参照を返すことによってメモリ割当ての要求に応答することとを備える。
別の実施形態では、メモリ管理システムが提供される。このシステムは、第1のメモリアイテムを割り当てるための手段であって、第1のメモリアイテムはそれぞれ第1のヘッダおよびペイロードを備え、ペイロードは個別に割当て可能なメモリのチャンクを備え、第1のヘッダはペイロードの中の割り当てられていないメモリへの参照を備える、手段と、第2のメモリアイテムを割り当てるための手段であって、第2のメモリアイテムはそれぞれ第2のヘッダを備え、第2のヘッダは第1のメモリアイテムのペイロードの中の割り当てられたメモリのチャンクへの参照を備える、手段と、メモリ割当ての要求を受信するための手段と、第1または第2のメモリアイテムのヘッダから参照を返すことによってメモリ割当ての要求に応答するための手段とを備える。
別の実施形態では、コンピュータ命令で符号化されたコンピュータ可読媒体が提供される。この命令は実行されるとプロセッサに、第1のメモリアイテムを割り当てることであって、第1のメモリアイテムはそれぞれ第1のヘッダおよびペイロードを備え、ペイロードは個別に割当て可能なメモリのチャンクを備え、第1のヘッダはペイロードの中の割り当てられていないメモリへの参照を備える、第1のメモリアイテムを割り当てることと、第2のメモリアイテムを割り当てることであって、第2のメモリアイテムはそれぞれ第2のヘッダを備え、第2のヘッダは第1のメモリアイテムのペイロードの中の割り当てられたメモリのチャンクへの参照を備える、第2のメモリアイテムを割り当てることと、メモリ割当て要求を受信することと、第1または第2のメモリアイテムのヘッダから参照を返すことによってメモリ割当ての要求に応答することとを行わせる。
移動体デバイスの一例を示すブロック図。 メモリアイテムの一例を示すブロック図。 メモリアイテムの別の例を示すブロック図。 メモリを割り当てる方法の一例を示すブロック図。 メモリを割り当てる方法の一例を示すブロック図。 メモリ割当てサービスの実行の様々な例を示すブロック図。 メモリを割り当てる方法の別の例を示すブロック図。
次の詳細な説明は、本発明のある特定の実施形態に対して行われるものである。しかしながら本発明は、多数の様々な方法で具体化されることが可能である。本明細書の諸態様が、多様な形態で具体化されることが可能であること、および本明細書に開示されるどの特定の構造、機能、または両方も単に代表的なものであることは明らかである。本明細書の教示に基づいて、本明細書に開示された態様が、他のいずれの態様とも個別に実施されることが可能であること、およびこうした態様の2つ以上は、様々な方法で組合せ可能であることを、当業者は理解するであろう。例えば、本明細書に示す任意の数の態様を使用して、装置を実装することが可能であり、または方法を実行することが可能である。さらに、他の構造、機能、または本明細書に示す諸態様の1つもしくは複数に加えて、またはそれ以外の構造および機能を使用して、このような装置を実装することが可能であり、またはこのような方法を実行することが可能である。
移動体デバイスは、一般に動作するためにメモリ割当てサービスを利用する。本明細書には、移動体デバイスの中の様々なサブシステムに必要とされるメモリの総容量を削減する、および移動体デバイスによって消費される処理リソースを削減するための方法および装置が記載される。以下に、記載した方法および装置と共に使用されることが可能であるいくつかのアーキテクチャについて説明する。
図1は、移動体デバイス102の一例を示すブロック図である。装置102は、メモリ204と通信しているプロセッサ202および無線リンク106を介して通信するためのネットワークインターフェース206を含んでいる。必要に応じて、装置102はまた、ディスプレイ210、キー、タッチスクリーン、もしくは他の好適な触覚入力デバイスのようなユーザ入力デバイス212、無線リンク106を通じて受信される信号に基づいて音響出力を提供するように構成されたトランスデューサを備えるラウドスピーカ214、および/または無線リンク106を通じて送信される信号の音響入力を提供するように構成されたトランスデューサを備えるマイクロホン216のうちの1つまたは複数を含むことができる。例えば、電話は、グラフィカルユーザインターフェース(GUI)の画像出力を提供するように構成されたディスプレイ210を含むことができる。
ネットワークインターフェース206は、例示の装置102が無線リンク106を通じて1つまたは複数の装置と通信することができるように、任意の好適なアンテナ(図示せず)、受信機220、および送信機222を含むことができる。必要に応じてネットワークインターフェース206は、プロセッサ202の処理要求を減らすために処理機能を有することも可能である。
必要に応じて装置102は、リンク108を介してネットワーク110を通じて通信する第2のネットワークインターフェース208を含むことができる。例えば、装置102は、有線または無線通信リンクを介して他のネットワーク110(例えばインターネットなどのワイドエリアネットワーク)との接続性を提供することができる。したがって装置102は、他の装置102(例えばWi−Fiステーション)が他のネットワーク110とアクセスできるようにすることが可能である。さらに、装置102の1つまたは複数はポータブルであるか、場合によっては比較的ポータブルでない可能性があることを理解されたい。第2のネットワークインターフェース208は、IEEE802.11(a)、(b)、もしくは(g)を含むIEEE802.11規格、BLUETOOTH(登録商標)規格、および/またはCDMA、GSM(登録商標)、AMPSに従ったRF信号、または無線セル方式の電話網内の通信に使用される他の既知の信号を送受信することができる。さらに、第2のネットワークインターフェース208は、イーサネット(登録商標)(IEEE802.3)、USB、またはMDDIなどの好適な有線ネットワークインターフェースを備えることができる。
装置102は、装置102の1つまたは複数の構成要素に電力を供給する電池231を含むことができる。装置102は、電話、スマートフォン、携帯情報端末(PDA)、ウルトラモバイルパーソナルコンピュータ(UMPC)、モバイルインターネットデバイス(MID)、または他の任意の移動体デバイスの少なくとも1つを備えることができる。詳細には、本明細書の教示は、様々な装置102に組み込まれる(例えば内部に実装されるまたは実行される)ことが可能である。
本明細書に記載する構成要素は、様々な方法で実装されることが可能である。図1を参照すると、デバイスまたは装置102は、例えばプロセッサ202、ソフトウェア、その何らかの組合せ、または本明細書で教示される他の何らかの方法で実装される諸機能を表すことができる、一連の相互に関係のある機能ブロックとして表されている。例えば、プロセッサ202は、入力デバイス212を介してユーザ入力を容易にすることができる。さらに送信機222は、別の装置102に情報を送信することに関連する様々な機能を提供する送信用プロセッサを含むことができる。受信機220は、本明細書で教示される別のデバイス102から情報を受信することに関連する様々な機能を提供する受信用プロセッサを備えることができる。
プロセッサ202はまた、メモリ割当てサービス203と通信している。1つの実施形態では、メモリ割当てサービス203は、プロセッサ202上で動作する。メモリ割当てサービス203は、デバイス102の中で動作している1つまたは複数のサブシステムからのメモリの要求に応じる。メモリ割当てサービス203の方法および動作について、以下にさらに詳細に説明する。
上記のように、図1は、こうした構成要素がいくつかの態様において、適切なプロセッサ構成要素を介して実装されることが可能であることを示している。こうしたプロセッサ構成要素は、いくつかの態様において少なくとも部分的に本明細書に教示する構造を使用して実装されることが可能である。いくつかの態様においてプロセッサは、こうした構成要素の1つまたは複数の機能の一部または全部を実装するように適合させることが可能である。いくつかの態様では、破線の枠で示した構成要素の1つまたは複数はオプションである。
1つまたは複数の例示的実施形態では、記載した機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せで実施することが可能である。ソフトウェアに実装される場合、機能は、コンピュータ可読媒体上の1つもしくは複数の命令またはコードとしてこれに格納される、またはこれを通じて伝送されることが可能である。コンピュータ可読媒体は、コンピュータ記憶媒体とコンピュータプログラムを一方の場所からもう一方の場所へ転送することを容易にする任意の媒体を含む通信媒体とを共に含む。記憶媒体は、汎用コンピュータまたは専用コンピュータによってアクセスされることが可能である任意の使用可能な媒体とすることができる。限定ではなく一例として、このようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、または所望のプログラムコード手段を命令もしくはデータ構造の形態で搬送もしくは格納するために使用することができ、汎用コンピュータもしくは専用コンピュータ、または汎用プロセッサもしくは専用プロセッサでアクセスすることができる他の任意の媒体を含むことができる。また、いかなる接続も、適切にはコンピュータ可読媒体と呼ばれる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、ディジタル加入者線(DSL)、または赤外線、ラジオ波、およびマイクロ波などの無線技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、この同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、ラジオ波、およびマイクロ波などの無線技術が、媒体の定義に含まれる。本明細書で使用するディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、ディジタルバーサタイルディスク(digital versatile disc、DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は通常データを磁気的に再生し、ディスク(disc)はレーザーを使用してデータを光学的に再生する。上記のものの組合せもまた、コンピュータ可読媒体の範囲内に含まれるものとする。
メモリ割当てサービスの1つの態様によれば、小さいメモリブロックは、大きい固定サイズのユニット(「DSMアイテム」と呼ばれる)にパックされる。より小さいブロックのそれぞれは、DSM内のペイロードを指す、「DUP」(複製)アイテムの使用を監視される。DSMアイテムは、限定されたサイズであるので、またDSM内のすべてのブロックは、同様の限定されたライフタイムを有すると仮定されることが可能であるので、各DSM内の空きメモリのフラグメンテーションに対応する必要がない。この利点は、各DSM内のメモリがほとんど無駄にならず、高パッキング効率を有する他のメモリ割当て技術の複雑さはわずかであるので、メモリの利用が大きく削減されることが可能であることである。見方を変えるとこれは、固定サイズの割当てサービスとフレキシブルなサイズ割当てサービスの混成物であり、全メモリは固定サイズのブロックに割り当てられるが、フレキシブルな割当ては短いライフタイムを有すると予想されるので、ブロック内では、フレキシブルなサイズの割当てが可能である。
1つの態様では、基本的なメモリブロックはDSMアイテムと呼ばれる。これは、ヘッダとペイロードの部分から構成される。データのブロックがメモリに格納されなければならないとき、新しいDSMアイテムが割り当てられ、データはこのDSMのペイロード部分にコピーされる。さらに、ヘッダは、データの開始および長さを反映するように更新される。データの長さがペイロード部分のサイズを超える場合、複数のDSMアイテムがリンクされたリストに一緒にチェーンされることが可能である。
さらに、特定タイプのDSMアイテムが定義され、DUP(「duplicate」)と示される。DUPは通常のDSMと同じヘッダ構造を使用するが、それ自体のペイロード部分はない。代わりとして、DUPは、例えば標準的なDSMの内部など他の場所のデータ部分をポイントすることができる。いくつのDUPが同じDSMアイテムの中のデータをポイントするかを追跡するために、「ref_count」と示されるヘッダフィールドがあり、これはこのDSMアイテムの参照の数をカウントし、元のDSMが最初に割り当てられるとき、1に設定される。新しいDUPがDSMアイテムの中をポイントして作成されるたびに、DSMアイテムのref_countが増やされる。同様に、DUPが解放された状態になると、元のDSMアイテムのref_countは減らされる。このように割当てアルゴリズムは、DSMアイテムが実際に解放状態になるときを知ることができ、これは単に他のDUPがこのパケットのペイロード部分をポイントしないときであり、ref_countがゼロに戻ったときである。
DUPは、元のデータに接触せずにパケットを分割する、データを並べ換える、ヘッダを削除するなどのために使用されることが可能である。このすべては、単にDSMおよびDUPヘッダを操作することによって実現されることが可能である。
別の態様によれば、メモリ効率を向上させるためにデータを同じDSMアイテムにパックすることを可能にする技術は、前に記載した欠点のいくつかに対処することができる。この態様によれば、大きいDSMアイテムのプールが定義される。大きいDSMサイズは、複数の無線リンクパケットからのデータが連結されて同じDSMアイテムになることを可能にする。
図2は、メモリ割当てサービスからのメモリアイテムを示すブロック図である。メモリ割当てサービスは、アプリケーションプログラミングインターフェース(「API」)を含むことができる。このAPIは、デバイス102に存在するサブシステムのようなサブシステムによるアクセスに利用することができる。このメモリ割当てサービスは、全体的にまたは部分的に、プロセッサ202または他の同様の処理デバイスによって実行されることが可能である。さらにAPIは、デバイス102のような移動体または無線装置の動作システムの一部を形成することができる。あるいはAPIは、ソフトウェアライブラリの一部を形成することができる。図2には、第1のタイプのメモリアイテム610が示されている。この第1のタイプのメモリアイテム610は、データサービス管理(「DSM」)アイテムと呼ばれることがある。あるいはこれは、コンテナアイテムと呼ばれることがある。こうしたコンテナタイプのメモリアイテム610は、メモリアイテムのプール605として編成される。単一プール605が示されているが、DSMアイテムの複数のプールが使用されることも可能であることを理解されたい。各プールは、アイテムサイズまたはプールによって供給されるサブシステムなど、1つまたは複数の共通の特徴によって特徴付けられることが可能である。
メモリアイテム610の拡大図もまた図2に提供されている。拡大図でわかるように、こうしたコンテナタイプのアイテム610は、複数の部分を含む。メモリアイテムの第1の部分は、ヘッダ615と呼ばれることが可能である。ヘッダ615は、メモリアイテム610の残りの部分に関連する情報ならびに他の情報を含むことができる。メモリアイテム610の第2の部分は、ペイロードと呼ばれることが可能である。ペイロード自体は、メモリ620のいくつかの割り当てられた部分またはブロックを有することができる。さらに、ペイロードは、割り当てられていない、または未使用のスペース625を有することがある。1つの実施形態では、ペイロードは、IPパケットを格納するために必要とされるサイズに近い、約1500バイトを含む。
メモリアイテム610のヘッダ615は、メモリアイテム610の中の割り当てられていないスペース625への参照のような情報を含むことができる。1つの例では、この参照は、メモリアイテム610の中の割り当てられていないスペース625の開始アドレスを示すポインタの形をとる。データアイテム610の中の割り当てられていないメモリ625へのこの参照は、「data_ptr」と呼ばれることが可能である。またヘッダは、割り当てられたメモリ620のサイズを示すフィールドを含むこともある。この割り当てられたスペースの量は、ペイロードの中の「使用済み」スペースと呼ばれることが可能である。ヘッダはまた、メモリアイテム610と関連付けられたメモリプール605を識別する識別子を示すフィールドを含んでいることもある。この識別子は、「pool_id」と呼ばれることが可能である。ヘッダは、メモリアイテム610への参照の数を示すフィールドを含むこともできる。例えば、以下に説明するように、メモリアイテム610は他のメモリアイテムによって参照されることが可能である。例えば、ペイロードの割り当てられたチャンク620のそれぞれが、異なるメモリアイテムによって参照される。さらに、メモリアイテム610のヘッダ615は、ペイロードの割り当てられていない部分625を参照する。こうした参照のカウントは、とりわけ、メモリアイテム610がいつ解放されて、その後再び割り当てられるようにプール605に返されることが可能であるかを判定する目的のために使用されることが可能である。この参照カウントは、「参照(references)」と呼ばれることもある。ヘッダ615は、他のメモリアイテムへの1つまたは複数の参照を含むこともできる。例えば、要求されたメモリのチャンクが大きすぎて単一メモリアイテム610に適合しない場合、要求に対処するために合わせてチェーン化されることが可能である1つまたは複数の追加メモリアイテムを示すために、ヘッダの中の参照が使用される場合がある。参照されるメモリアイテムのタイプによって、こうした参照は、「pkt_ptr」または「dup_ptr」と呼ばれることもある。例えば、pkt_ptrは、ゼロ以上のDSMまたはコンテナアイテムを参照することができ、dup_ptrは、ゼロ以上のDUPアイテムを参照することができる。識別されたフィールドに加えて、ヘッダ615は、目的をテストするために使用されるユーザが定義した1つまたは複数のフィールドのような追加フィールドを含むことができる。さらにヘッダ615は、識別されたフィールドの1つまたは複数を省略することができる。
図2はまた、第2のタイプのメモリアイテム630を示している。この第2のタイプのメモリアイテムは、複製または「DUP」メモリアイテムと呼ばれることがある。これらのDUPアイテム630は、コンテナメモリアイテム610のヘッダ615と同様のヘッダを含んでいる。例えばDUPアイテムは、DSMアイテムのヘッダ615と同じフィールドを有することができる。あるいはDUPアイテムは、より大きいまたは小さいフィールドを有する場合がある。しかしながら、こうしたDUPアイテムは、自身のペイロードがない。むしろ、DUPアイテムのヘッダ630は、コンテナメモリアイテムへの参照を含んでいる。1つの特定の例では、DUPアイテム630は、メモリアイテム610の割り当てられた部分620の中の第1の割当てメモリブロックを示すポインタを含んでいる。DUPアイテム630は、1つまたは複数のプール640に配列されることも可能である。コンテナアイテムのプール605のように、複数のDUPアイテムプールが使用されることが可能である。例えば、図2は、2つのDUPアイテムプール640および650を示している。1つの例では、組込まれたデバイスまたは無線通信デバイスの中の各サブシステムは、その独自のDUPアイテムのプールを有している。この実施形態ではプール640は、1つの特定のサブシステムに対応することができ、一方プール650は、別のサブシステムに対応することができる。図2に示すように、1つの実施形態は、別個のプールからのDUPアイテムが、単一DSMアイテム610の中のメモリ620のブロックを参照することができることを提供する。
図3は、図2に示したメモリアイテムの代替的実施形態を示している。前述のように、DSMアイテムの単一プール715が使用されることが可能である。しかしながら、このときDUPアイテム730および735の各プールは、それぞれ異なるDSMアイテム725および720の割り当てられた部分を参照する。上述のようにDSMアイテムは、ペイロードへのすべての参照が解放されると、再割当てのためにDSMプール715に返されることが可能である。しかしながら、多数のサブシステムが同じDSMアイテムへのDUP参照を有することを認められるとき、断片化(fragmentation)が発生する可能性がある。例えば、特定のDSMの第1のサブシステムに割り当てられたすべてのメモリは、すでに解放されている。しかしながら、小さいブロックが別のサブシステムからのDUPによって依然として参照される場合、ペイロードの中の残りのメモリは、第2のサブシステムがその小さいメモリブロックを解放するまで、解放されるのを待たなければならない。この問題を最小化するために、各サブシステムはそれ自体のDSMへのそれ自体のDUP参照を有することができる。このようにして、特定のDSMの中の割り当てられたメモリ部分のライフタイムは、同じになる可能性が高くなる。ライフタイムが同様であることは、結果として断面化の減少につながる。
図4Aおよび4Bは、メモリを割り当てるための方法780の一実施形態を示している。この方法780は、プロセッサ202のようなプロセッサ上で動作するサービスとして実行されることが可能である。この方法780は、メモリ割当て要求の受信および割り当てられたメモリへの参照を返すことを容易にする。以下に説明するように、割り当てられる特定の参照は、要求しているサブシステムの現在のメモリ割当て状態と要求されるメモリブロックのサイズの関数であることが可能である。ステップのいくつかは、特定の応用の要件または指定に適合させるために省略可能であることに留意する。さらに本明細書に記載したステップのいくつかは最適化であり、ゆえにシステムの設計者の裁量により選択して利用されるまたは省略されることが可能である。
方法780は、ステップ785においてメモリ割当てサービスがメモリ要求を受信したときに始まる。メモリ要求の一部として、要求しているサブシステムは、要求するメモリのサイズを指定することができる。また要求しているサブシステムは、サブシステムのIDを提示し、メモリ割当てサービスがそのサブシステムに適切なDSMアイテムを選択できるようにすることが可能である。メモリ要求を受信した後に、メモリ割当てサービスは、判定ステップ790に示すように、要求されたサイズが現在のDSMコンテナアイテムの中の割り当てられていないメモリのサイズより小さいかどうかを判定する。図2および3に関して説明したように、DSMアイテムはペイロード部分に割り当てられていないスペースを有する可能性がある。判定ステップ790は、割り当てられていない部分のサイズを要求されたサイズと比較することによって行われることが可能である。あるいは、ペイロードの全体のサイズはわかっているので、要求される量は、ペイロードの割り当てられた部分のサイズと比較されることが可能である。別の実施形態では、メモリ割当てシステムは比較にメモリの要求されるサイズを使用するのではなく、要求のサイズを増大させ、増大された要求がキャッシュの限界と合わせられるようにすることが可能である。例えば、実際の要求は、結果的な要求が、16、32、64、または128バイトのような複数の特定のキャッシュ行サイズであるように、増大されることが可能である。ともかく、要求されたメモリサイズ、またはその増大されて合わせられたサイズが割り当てられていない部分に適合する場合、方法はステップ800へ進む。
判定ステップ800に進むと、メモリ割当てシステムは、要求されたサイズを現在のDSMアイテムのこれまでに割り当てられた部分のサイズに加えると、第1のしきい値より大きくなるかどうかを判定する。例えば、DSMペイロードが約1500バイトの長さである場合、しきい値は1200バイトである可能性がある。したがって、メモリ割当てシステムは、すでに割り当てられたメモリのサイズを要求されたメモリのサイズに加えると、1200バイトの限界を超えるかどうかを判定することになる。1つの実施形態では、しきい値は、DSMアイテムのペイロードのサイズの一定のパーセンテージとして選択されることが可能である。例えばしきい値は、ペイロードのサイズのおよそ70%〜80%であることが可能である。別の実施形態では、しきい値のサイズは、IPパケットを格納するためのメモリの要求のような一般的な要求のサイズ特性を反映するように選択されることが可能である。別の実施形態では、割り当てられるメモリのサイズをしきい値と比較するのではなく、割り当てられていない残りのメモリのサイズがしきい値と比較されることが可能である。この実施形態では、要求されたまたは調整されたメモリサイズが割り当てられた場合、サービスは、依然として割り当てられていないペイロードの部分を計算するようになる。次に、残りの割り当てられていないメモリとこのしきい値の比較は、前述の割り当てられるメモリとしきい値の比較と同様に使用されることが可能である。
判定ステップ800を行うと、識別された和がしきい値より大きい場合、方法はステップ805へ進む。ステップ805において続行し、メモリ割当てシステムは、要求するサブシステムへ参照を返す。1つの実施形態では、返される参照は、現在のDSMアイテムのヘッダからのdata_ptrである。有利には、DSMアイテムのヘッダから参照を返すことによって、メモリ割当てシステムは、DUPアイテムを作成すること、およびDUPヘッダから参照を返すことに含まれるオーバヘッドおよびリソースを節約する。さらに、単に要求されたサイズではなくDSMペイロードの残りを割り当てることにより、メモリ割当てサービスはペイロードの終わりでデータの小さいブロックを避けることができ、そうしない場合、これは使用されると結果としてチェーン化をもたらす。
判定ステップ800に戻ると、要求されたメモリサイズをすでに割り当てられたメモリサイズに加えると、しきい値より大きくない場合、方法はステップ810へ進む。ステップ810では、メモリ割当てサービスはDUPアイテムを作成し、要求されたメモリを割り当て、DUPの中の参照を要求しているサブシステムに返す。有利には、複数の繰り返しによってこの方法は、メモリ割当てサービスが複数の割当てを単一のDSMアイテムにパックすることを可能にする。このパック化により、メモリリソースを効率的に利用できるようになり、メモリの使用においても処理の使用においても利益をもたらす。
ステップ790に戻ると、要求されたメモリサイズが現在のDSMアイテムの中の割り当てられていないスペースより大きい場合、方法は図4Bの判定ステップ845に進む。判定ステップ845では、メモリ割当てサービスは、要求されるサイズが第2のしきい値より大きいかどうかを判定する。この第2のしきい値は、第1のように、固定のバイト数として設定されることが可能である。例えば、DSMアイテムのペイロードのサイズが1600バイトである場合、第2のしきい値は1200バイトとすることができる。あるいは、第2のしきい値は、ペイロードのサイズのパーセンテージとして決定されることも可能である。例えば、第2のしきい値は、ペイロードサイズの65%〜75%とすることができる。別の実施形態では、しきい値は動的に決定されることが可能である。例えばしきい値は、DSMアイテムに割り当てられたメモリの総量と等しく設定されることが可能である。この実施形態では、要求されたサイズがDSMの中の割り当てられたスペースを超える場合、要求されたサイズはしきい値を超えることになる。しきい値がどのように決定されるかにかかわらず、要求されるサイズがこのしきい値より大きい場合、ステップ850に示すように、メモリ割当てサービスは新しいDSMアイテムを割り当て、この新しいDSMアイテムのヘッダからのdata_ptrを要求しているサブシステムへ返す。ステップ805と同様に、新しいDSMアイテムのヘッダから参照を返すこのプロセスは、新しいDUPアイテムを作成するオーバヘッドを防ぐ。要求しているサブシステムは、求めるよりも多く、DSMアイテム全体を与えられ、この割当ては、その後の割当て要求が現在のDSMアイテムに残っている、割り当てられていないメモリで満たされることを可能にする。
ステップ845に戻ると、要求されたサイズが、この第2のしきい値より小さい場合、この方法はステップ855へ進む。ステップ855では、DSMペイロードの割り当てられていない部分へのDSMアイテムのヘッダの参照が削除される。実際には、これはDSMアイテムの残りを解放する。さらに、新しいDSMアイテムが作成される。新しいDSMアイテムの中のメモリのブロックが割り当てられ、対応するDUPが作成される。新しいDUPの中の、新しいDSMアイテムへの参照は、その後要求しているサブシステムへ返される。
説明の目的で、前述の方法の例が、図5に示されている。ケース1では、現在のDSMアイテム910が示されている。現在のDSMは、割り当てられた部分915と割り当てられていない部分920の両方を有する。要求されたパケットサイズ925は、第1のしきい値930であるように示されている。図に示すように、割り当てられた部分915のサイズを要求された部分925のサイズに加えると、第1のしきい値930より小さい。したがって、図のようにDSMアイテム935のチャンク(chunk)が割り当てられ、新しいDUPアイテムが作成され、その参照が要求中のサブシステムに返される。新しいDUPアイテムは、新しく割り当てられたデータの開始をポイントするDSM935への参照を含んでいる。
ケース2では、現在のDSM955は、別の要求されたパケット960と併せて示されている。図に示すように、DSM955の割り当てられた部分のサイズを要求されたパケットのサイズに加えると第1のしきい値を超えるが、この和は総ペイロード長を超えていない。したがって、DSMアイテム965の割り当てられていない部分への参照が、要求しているサブシステムに返される。結果として、要求されたメモリサイズまたはわずかに大きい行が割当てに調整されることに加えて、要求しているサブシステムは、DSM965の中の残りの割り当てられていないスペース980すべてを取得する。再び、DMSアイテムのヘッダからの参照を返すことは、DUPを作成することのオーバヘッドを防ぎ、さもなければ残されていたスタブ980によって作り出されるチェーン化の可能性を除く。
ケース3では、現在のDSM985が、別の要求されたメモリブロック990と共に示されている。図示されたように、要求されたパケットは大きすぎて、現在のDSMの割り当てられていない部分に適合しない。さらに、要求されたサイズは、第2のしきい値995より小さい。したがって、ペイロードの割り当てられていない部分への、現在のDSM1000のヘッダの中の参照は削除される。新しいDSM1005が形成される。DSMからのメモリのブロックが割り当てられ、新しいDSMにおいて割り当てられたブロックを参照して新しいDUPアイテムが作成される。この新しいDUPアイテムからの参照は、その後要求しているサブシステムへ返される。再び、第2のしきい値995が静的であるように示されているが、しきい値はオリジナルの中の割り当てられたメモリのサイズに等しく設定することによってなど、動的に決定されることが可能であることがわかる。
ケース4では、現在のDSM1010が、要求されたメモリブロック1015と一緒に示されている。ケース3と同様に、要求されたサイズは大きすぎて、DSMアイテム1010の割り当てられていない部分に適合しない。さらに、要求されたブロックのサイズ1015は、第2のしきい値995より大きい。結果として、現在のDSM1020は現在の状態で保たれる。一方で、新しいDSM1025が作成され、新しいDSMヘッダの中のペイロードの割り当てられていない部分への参照が返される。
図6は、図4Aおよび4Bに示す方法と同様である。しかしながら図6は、メモリを割り当てるためのサービスの1つの実施形態で使用されるあるパラメータに関して変形形態を示している。方法1080は、図6に示すように、メモリ割当て要求のためのAPIを提供する。1つの特定の実施形態では、方法1080は、メモリ割当てを要求するために使用されることが可能であるサブシステムのための関数呼出し(function call)を提供する。図示されるように、関数は、メモリ割当ての要求されるサイズをパラメータとして取得することができる。さらに関数は、要求しているサブシステムを識別するサブシステムIDのような他のパラメータを取得することができる。図6によって表されるサービスは、デバイス102のプロセッサ202のようなプロセッサ上で動作するように構成されることが可能である。割当て要求に応答してサービスは、以下に説明するように、要求されるサイズより大きいまたは等しいサイズの割り当てられたメモリブロックへのポインタを用意する。したがって、サービスのAPIを使用するサブシステムは、割り当てられたメモリへポインタを返される。1つの特定の実施形態では、図6に示す方法は、その動作中、次の値の一部または全部を使用する:
current_dsm_item_ptr[]:これは、各サブシステムの現在のDSMアイテムへのポインタのセットである。
aligned_pkt_size:これは、16、32、64、または128のようなサイズのキャッシュ行に合うように調整された、要求されるメモリのブロックのサイズである。
pkt_ptr:返されることになる割り当てられたメモリへのポインタ。
DSMI_MEM_THRESHOLD_TO_FREE_DSM:DUPまたはDSM参照が返されるべきであるかどうかを判定するための第1のしきい値。メモリのブロックを割り当てた後、残りの割り当てられていないメモリがこのしきい値より小さい場合、DSM参照が返され、DSMアイテムの中の残りの割り当てられていない全メモリを有効に割り当てる。
DSMI_THRESHOLD_FOR_COMPLETE_ITEM_ALLOCATION:DUPまたはDSM参照が返されるべきかどうかを判定するための第2のしきい値。要求されたパケットサイズがこのしきい値より大きい場合、新しいDSMアイテムが生成され、新しいDSMのヘッダからの参照が返される。現在のDSMが維持される。
図6に示す方法は、1085に示す関数呼出しから始まる。要求へのパラメータとして、割当てサービスは、要求されるパケットサイズ「pkt_size」を受信する。さらに、いくつかの実施形態では、別のパラメータ、サブシステムIDもまた、関数呼出しに渡される。ステップ1100に進むと、方法は、同時に発生したアクセス問題を回避するために、DSMアイテムの特定のプールをロックする。プールをロックした後に、方法は判定ステップ1105に進む。判定ステップ1105では、サービスはpkt_ptrがnullであるかどうかを判定する。要求に対してメモリが割り当てられていない場合、ポインタはnullとすることが可能である。しかしながら、ポインタにNULL値がない場合、サービスはプール1140を解除し、ポインタ1145を返すように進行する。しかしながら、ポインタがnullである場合、サービスは判定ステップ1110へ進む。
判定ステップ1110で継続すると、サービスは、current_dsm_item_ptrがnullであるかどうかを判定する。前の繰り返しの結果として、現在のDSMアイテムが存在しない場合、サービスはDSMアイテムを作成するように進み1115、このような作成が失敗する場合1120、1140、1145は終了する。有効な現在のDSMが存在していることを確認される、または作成されると、この方法は判定ステップ1125へ進む。判定ステップ1125では、サービスが、合わせられた要求サイズが、現在のDSMの中の割り当てられていないスペースのサイズより小さいかどうかを判定する。小さい場合、サービスは次に、ステップ1130において、DSMの中で要求されたメモリを割り当てた後に残っている、割り当てられていないスペースが、第1のしきい値より小さいかどうかを判定する。小さい場合、サービスはDUPを作成し、現在のDSM1135の中で合わせられた要求メモリを割り当て、プール1140を解除し、DUPポインタ1145を返す。小さくない場合、サービスは全く新しいDSM1150を作成し、プール1140を解除し、新しいDSM1145のヘッダからポインタを返す。
ステップ1125に戻ると、要求されたサイズが、残りの割り当てられていないスペースより大きい場合、この方法は判定ステップ1155へ進む。ステップ1155では、サービスは、要求されたサイズが第2のしきい値より大きいまたは等しいかどうかを判定する。そうである場合、サービスは全く新しいDSM1165を作成し、プール1140を解除し、新しいDSM1145のヘッダからのポインタを返す。そうでない場合、サービスは現在のDSMの中の残りのメモリを解放し、ステップ1105で再びこの方法を開始するように進む。結果として、新しいDSMが作成され、新しいDSMの本文(body)を参照するDUPが作成され、DUPポインタが要求しているシステムに返される。
本メモリ割当てサービスのさらなる特徴および実施形態もまた、本明細書に提示される:
異なるユーザ用の複数のDSMポインタ
データブロックのライフタイムが実質的にユーザによって異なることが予想される場合に対処するために、アルゴリズムは、複数のDSMポインタを維持し、単に同様のライフタイムを有するデータブロックを同じDSMにパックすることができる。例えば、ユーザの特定IDが割当ての要求と合わせて渡され、このユーザからのデータのみが同じDSMアイテムにパックされるようにすることが可能である。他のユーザからの要求は、他のDSMにパックされる。ここで「ユーザ」は、ユーザプロファイルの1つのセットを任意の他のセットと識別するために、タスクまたはサブタスクまたはレイヤまたは関数のセット、あるいはこれらの他のいずれかの組合せとすることができる。
DSMの前(または後)にデータを追加するための支援
既存のDSMまたはDUPアイテムの前のデータの追加(すなわちプロトコルヘッダの追加)を、新しいDSMアイテムを割り当てるおよびチェーン化を行う必要がなく、効率的に処理するために、前にフリースペースを有するDSMを割り当てることを可能にすることが提案される。フリースペースは、「オフセット」ヘッダによって追跡される。このように、DUPまたはDSMは、所与のオフセットを有して割り当てられることが可能であり、後により多くのデータがDSMの前に挿入される必要がある場合、これは、その後にチェーン化が続く、新しいDSMを割り当てることなく、行われることが可能である。同様のサービスは、DSMの終わりにデータを追加するために許容されることが可能である。
複数のプール
このサービスは、複数のDSMプールがあるユーザへの所与の数のアイテムを予約することができるようにする。このようにしてこのユーザは、他のユーザがDSMアイテムをすべて割り当てたために突然にフリーDSMアイテムがなくなるということを心配する必要がない。またこれは、メモリオーバーラン問題(1人のユーザが割当ての境界を乗り越える)のより優れたデバッグ能力を提供するが、なぜならこの問題はこのユーザのコードベースに限定されるだけだからである。
複数のプールに代わるものとしての割当てサービス
同じことを実現する別の方法は、1つのプールを有することであるが、各ユーザは、ユーザが割り当てることができるDSMアイテムの最大割当量(バイト)を有する。ユーザが自身の割当量に達すると、ユーザは新しいアイテムを割り当てるためにいくつかのアイテムを解放して、他のユーザのメモリが欠乏するのを避けなければならない。複数のプール手法にわたり有する1つの利点は、さらに共有が実現可能であることである。例えば、Xアイテムの自身のプールを有する4人のユーザがいる場合、4Xアイテムのメモリが必要である。しかしながら、4人すべてのユーザがすべてのアイテムを同時に割り当てる可能性はあまりないので、割当てサービスは、総メモリをおよそ3Xに削減することを可能にし、1人のユーザが自身の全メモリ=Xを取得すれば、残りの3人のユーザは、残りのメモリ=2Xを共有することができると仮定する。
異なるサイズに対する複数のDSMポインタ
この態様では、DSM割当ては、(上記のサブシステムIDを使用するのとは対照的に)要求されるメモリスペースに基づいて分割されることが可能である。すべてのタスク/プロファイルの必要を満たすために複数のサイズのプールの従来の方法を複数のレイヤ/サブシステムにわたって共有する代わりに、この提案を用いると、DSMポインタごとに特定のサイズのブロックのみが割当て可能である複数のDSMポインタをサポートするために備えることができる。例えば、128、256、512、768、1024、1536バイトのブロックサイズなどのDSMポインタを有することができる。
任意のレイヤ/モジュールが特定のサイズのメモリを要求するときはいつでも、アルゴリズムは最も適合するDSMポインタを決定し、要求されたサイズが利用可能であれdupを提供することができる。要求されたサイズが利用できない場合は、そのサイズのDSMポインタ(NULLでない場合)を解除し、大きいアイテム(複数)(例えば、所定のバイト数より大きいアイテム、一例では768バイト以上のアイテム)のグローバルプールから1の大きいアイテムおよびその後にDUP、最も適合するブロックサイズを割当て、DUPを要求者に返す。
この割当てはまた、従来の技術にまさるいくつかの明白な利点を有する。このサービスの所実施形態は、メモリフットプリント(footprint)を削減する。より少ないプールを使用して、よりよい統計多重を可能にする。このサービスは、より優れたパック化効率を推進する。DUPにはオーバヘッドが加えられるが、DSMアイテムにはオーバヘッドが少ない。CPU処理オーバヘッド(MIPS)は、チェーン化が少ないことにより削減される。このサービスは、より大きいDSMアイテムの使用を可能にし、長いパケットチェーンを回避して(特により大きいパケットサイズにおいて)、それによってDSM割当て/解放動作の数を削減する。諸実施形態は、複数のメモリプールを含んでいるより多くの従来の手法と関連する維持管理を簡易化する。このサービスは、これを処理するためのセントラルAPIを有することで、サブシステムごとにこのような機能を実行しなければならないこと、したがってコードの写しを作ることを回避するように、実施されることが可能である。ターゲットごとに別々のプールサイズおよびアイテムサイズの必要は回避される。本明細書で概略を述べた技術なしでは、コードを多くの場所(例えば、パケットサービスモジュール(PS)、高速USB(HS−USB)モジュールなどのような、スタックの中の様々な、または複数のレイヤ)で別個に実行する必要があり、これは誤りなどを引き起こしやすい。例えば低遅延のメモリ(例えば、インターナルランダムアクセスメモリ(IRAM))の中でDUPプールを定義することによって、さらなる性能の向上(キャッシュベネフィットなど)を求めて高速メモリの中でDUPプールを定義することが可能である。DSMの中で削減されたチェックは、このアプリケーションプログラミングインターフェース(API)でただ1つのプールが使用される場合、取得されることが可能である。現在のDSMは、パラメータとして渡されるプールID(識別情報)に基づいて、いくつかのチェックを行っている。

Claims (26)

  1. プロセッサと、
    前記プロセッサ上で実行できるメモリ管理サービスとを備え、
    前記メモリ管理サービスは、
    第1のメモリアイテムを生成するように構成可能であり、前記第1のメモリアイテムのそれぞれがヘッダおよびペイロードを備え、前記ペイロードは複数の個別に割当て可能なメモリチャンクを格納するように構成可能であり、前記第1のメモリアイテムの前記ヘッダは前記ペイロードの中の割当て可能なスペースを参照し、
    第2のメモリアイテムを生成するように構成可能であり、前記第2のメモリアイテムのそれぞれが、前記第1のメモリアイテムの前記ペイロードの中の1つまたは複数のメモリチャンクを参照するヘッダを備え、
    メモリ割当て要求に応答して第1または第2のメモリアイテムの前記ヘッダからの参照を返すように構成可能である、メモリ管理システム。
  2. 前記第1のメモリアイテムの前記ヘッダが、前記第1のメモリアイテムへの参照のカウントを保持する、請求項1に記載のメモリ管理システム。
  3. 前記メモリ管理サービスがさらに、複数のサブシステムのそれぞれに別個の第1のメモリアイテムを生成するように構成可能である、請求項1に記載のメモリ管理システム。
  4. 前記メモリ割当て要求が、要求されるメモリサイズを備える、請求項1に記載のメモリ管理システム。
  5. 前記メモリ管理サービスがさらに、特定の第1のメモリアイテムのペイロードの中の割り当てられたメモリのサイズと要求されたメモリのサイズの和を求め、前記和をしきい値と比較するように構成可能である、請求項4に記載のメモリ管理システム。
  6. 前記メモリ管理サービスがさらに、前記和が前記しきい値より小さいとき、特定の第2のメモリアイテムの前記ヘッダからの参照を生成して返すように構成可能である、請求項5に記載のメモリ管理システム。
  7. 前記メモリ管理サービスがさらに、前記和が前記しきい値より大きいとき、前記特定の第1のメモリアイテムの前記ヘッダからの参照を返すように構成可能である、請求項6に記載のメモリ管理システム。
  8. 前記メモリ管理サービスがさらに、特定の第1のメモリアイテムのペイロードの中の割り当てられたメモリのサイズと前記要求されたメモリのサイズの和を求め、前記和を前記特定の第1のメモリアイテムの前記ペイロードのサイズと比較し、前記要求されたメモリのサイズをしきい値と比較するように構成可能である、請求項4に記載のメモリ管理システム。
  9. 前記メモリ管理サービスがさらに、別の特定の第1のメモリアイテムを生成し、前記別の特定の第1のメモリアイテムのペイロードを参照している特定の第2のメモリアイテムを生成し、前記和が前記特定の第1のメモリアイテムの前記ペイロードの前記サイズより大きく、前記要求されたメモリのサイズが前記しきい値より小さいとき、前記特定の第2のメモリアイテムの前記ヘッダからの参照を返すように構成可能である、請求項8に記載のメモリ管理システム。
  10. 前記メモリ管理サービスがさらに、別の特定の第1のメモリアイテムを生成し、前記和が前記特定の第1のメモリアイテムの前記ペイロードの前記サイズより大きく、前記要求されたメモリのサイズが前記しきい値より大きいとき、前記別の特定の第1のメモリアイテムの前記ヘッダからの参照を返すように構成可能である、請求項8に記載のメモリ管理システム。
  11. 前記しきい値が、前記特定の第1のメモリアイテムの中の割り当てられたメモリの前記サイズである、請求項8に記載のメモリ管理システム。
  12. 前記メモリ管理サービスがさらに、前記要求されたメモリのサイズをキャッシュ行の境界に合わせるために前記要求されたメモリのサイズを増大させるように構成可能である、請求項4に記載のメモリ管理システム。
  13. メモリ管理の方法であって、
    それぞれが第1のヘッダおよびペイロードを備える第1のメモリアイテムを割り当てることであって、前記ペイロードが個別に割当て可能なメモリのチャンクを備え、前記第1のヘッダが前記ペイロードの中の割り当てられていないメモリへの参照を備える、第1のメモリアイテムを割り当てることと、
    それぞれ第2のヘッダを備える第2のメモリアイテムを割り当てることであって、前記第2のヘッダが第1のメモリアイテムのペイロードの中のメモリの割り当てられたチャンクへの参照を備える、第2のメモリアイテムを割り当てることと、
    メモリ割当ての要求を受信することと、
    第1または第2のメモリアイテムのヘッダからの参照を返すことによってメモリ割当ての要求に応答することと
    を備える方法。
  14. 前記第1のヘッダがさらに、前記第1のメモリアイテムへの参照のカウントを備える、請求項13に記載の方法。
  15. 前記第1のメモリアイテムを割り当てることがさらに、複数のサブシステムのそれぞれに別個の第1のメモリアイテムを割り当てることを備える、請求項13に記載の方法。
  16. 前記メモリ割当て要求が、要求されるメモリサイズを備える、請求項13に記載の方法。
  17. 特定の第1のメモリアイテムのペイロードの中の割り当てられたメモリのサイズと前記要求されたメモリのサイズの和を求め、前記和をしきい値と比較することをさらに備える、請求項16に記載の方法。
  18. 前記和が前記しきい値より小さいとき、特定の第2のメモリアイテムの前記ヘッダからの参照を割り当てて、返すことをさらに備える、請求項17に記載の方法。
  19. 前記和が前記しきい値より大きいとき、前記特定の第1のメモリアイテムの前記ヘッダからの参照を返すことをさらに備える、請求項18に記載の方法。
  20. 特定の第1のメモリアイテムのペイロードの中の割り当てられたメモリのサイズと前記要求されたメモリのサイズの和を求めることと、
    前記和を前記特定の第1のメモリアイテムの前記ペイロードのサイズと比較することと、
    前記要求されたメモリのサイズをしきい値と比較することと
    をさらに備える、請求項16に記載の方法。
  21. 別の特定の第1のメモリアイテムを生成することと、
    前記別の特定の第1のメモリアイテムのペイロードを参照している特定の第2のメモリアイテムを生成することと、
    前記和が前記特定の第1のメモリアイテムの前記ペイロードの前記サイズより大きく、前記要求されたメモリのサイズが前記しきい値より小さいとき、前記特定の第2のメモリアイテムの前記ヘッダからの参照を返すことと
    をさらに備える、請求項20に記載の方法。
  22. 別の特定の第1のメモリアイテムを生成することと、
    前記和が前記特定の第1のメモリアイテムの前記ペイロードの前記サイズより大きく、前記要求されたメモリのサイズが前記しきい値より大きいとき、前記別の特定の第1のメモリアイテムの前記ヘッダからの参照を返すことと
    をさらに備える、請求項20に記載の方法。
  23. 前記しきい値が、前記特定の第1のメモリアイテムの中の割り当てられたメモリの前記サイズである、請求項20に記載の方法。
  24. 前記要求されたメモリのサイズをキャッシュ行の境界と合わせるために、前記要求されたメモリのサイズを増大させることをさらに備える、請求項16に記載の方法
  25. 第1のメモリアイテムを割り当てるための手段であって、前記第1のメモリアイテムがそれぞれ第1のヘッダおよびペイロードを備え、前記ペイロードが個別に割当て可能なメモリのチャンクを備え、前記第1のヘッダが前記ペイロードの中の割り当てられていないメモリへの参照を備える、手段と、
    第2のメモリアイテムを割り当てるための手段であって、前記第2のメモリアイテムがそれぞれ第2のヘッダを備え、前記第2のヘッダが第1のメモリアイテムの前記ペイロードの中の割り当てられたメモリのチャンクへの参照を備える、手段と、
    メモリ割当ての要求を受信するための手段と、
    第1または第2のメモリアイテムの前記ヘッダからの参照を返すことによって、メモリ割当ての要求に応答するための手段と
    を備えるメモリ管理システム。
  26. コンピュータ命令で符号化されたコンピュータ可読媒体であって、実行されるとプロセッサに、
    それぞれが第1のヘッダおよびペイロードを備える第1のメモリアイテムを割り当てることであって、前記ペイロードが個別に割当て可能なメモリのチャンクを備え、前記第1のヘッダが前記ペイロードの中の割り当てられていないメモリへの参照を備える、第1のメモリアイテムを割り当てることと、
    それぞれ第2のヘッダを備える第2のメモリアイテムを割り当てることであって、前記第2のヘッダが第1のメモリアイテムの前記ペイロードの中の割り当てられたメモリのチャンクへの参照を備える、第2のメモリアイテムを割り当てることと、
    メモリ割当ての要求を受信することと、
    第1または第2のメモリアイテムの前記ヘッダからの参照を返すことによって、メモリ割当ての要求に応答することと
    を行わせる、コンピュータ可読媒体。
JP2011503159A 2008-04-02 2009-04-02 組込みまたは無線通信システムにおけるメモリ割当てのためのシステムおよび方法 Expired - Fee Related JP5265758B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US4187808P 2008-04-02 2008-04-02
US61/041,878 2008-04-02
US12/416,759 2009-04-01
US12/416,759 US8321651B2 (en) 2008-04-02 2009-04-01 System and method for memory allocation in embedded or wireless communication systems
PCT/US2009/039243 WO2009124164A1 (en) 2008-04-02 2009-04-02 System and method for memory allocation in embedded or wireless communication systems

Publications (2)

Publication Number Publication Date
JP2011521313A JP2011521313A (ja) 2011-07-21
JP5265758B2 true JP5265758B2 (ja) 2013-08-14

Family

ID=41134319

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011503159A Expired - Fee Related JP5265758B2 (ja) 2008-04-02 2009-04-02 組込みまたは無線通信システムにおけるメモリ割当てのためのシステムおよび方法

Country Status (11)

Country Link
US (1) US8321651B2 (ja)
EP (1) EP2266265B1 (ja)
JP (1) JP5265758B2 (ja)
KR (1) KR101134195B1 (ja)
CN (1) CN101971581B (ja)
AT (1) ATE516647T1 (ja)
CA (1) CA2718291A1 (ja)
ES (1) ES2367605T3 (ja)
RU (1) RU2460222C2 (ja)
TW (1) TW201018142A (ja)
WO (1) WO2009124164A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100182970A1 (en) * 2009-01-21 2010-07-22 Qualcomm Incorporated Multiple Subscriptions Using a Single Air-Interface Resource
US9442846B2 (en) * 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US8433880B2 (en) 2009-03-17 2013-04-30 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US8762532B2 (en) * 2009-08-13 2014-06-24 Qualcomm Incorporated Apparatus and method for efficient memory allocation
US9038073B2 (en) * 2009-08-13 2015-05-19 Qualcomm Incorporated Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts
US20110041128A1 (en) * 2009-08-13 2011-02-17 Mathias Kohlenz Apparatus and Method for Distributed Data Processing
US8788782B2 (en) * 2009-08-13 2014-07-22 Qualcomm Incorporated Apparatus and method for memory management and efficient data processing
US8341368B2 (en) 2010-06-07 2012-12-25 International Business Machines Corporation Automatic reallocation of structured external storage structures
US8838910B2 (en) 2010-06-07 2014-09-16 International Business Machines Corporation Multi-part aggregated variable in structured external storage
US9351196B2 (en) 2012-08-31 2016-05-24 International Business Machines Corporation Byte caching in wireless communication networks
KR102150262B1 (ko) * 2013-09-25 2020-09-01 현대모비스 주식회사 차량 정보 시스템의 메모리 관리 방법
CN105573711B (zh) 2014-10-14 2019-07-19 深圳市中兴微电子技术有限公司 一种数据缓存方法及装置
CN104572498B (zh) * 2014-12-26 2018-04-27 曙光信息产业(北京)有限公司 报文的缓存管理方法和装置
CN110245091B (zh) * 2018-10-29 2022-08-26 浙江大华技术股份有限公司 一种内存管理的方法、装置及计算机存储介质
CN112860423A (zh) * 2019-11-28 2021-05-28 深圳云天励飞技术有限公司 显存管理方法及相关产品
US11206222B2 (en) 2020-02-07 2021-12-21 Wipro Limited System and method of memory management in communication networks

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0574140A1 (en) * 1992-05-29 1993-12-15 Hewlett-Packard Company Network adapter which places a network header and data in separate memory buffers
JP3177047B2 (ja) * 1993-01-27 2001-06-18 大日本印刷株式会社 メモリ領域の管理方法
RU2037874C1 (ru) 1993-05-10 1995-06-19 Валерий Алексеевич Харитонов Устройство управления памятью
JP2778913B2 (ja) * 1994-04-26 1998-07-23 株式会社東芝 マルチプロセッサシステム及びメモリアロケーション方法
US7269171B2 (en) * 2002-09-24 2007-09-11 Sun Microsystems, Inc. Multi-data receive processing according to a data communication protocol
US7334123B2 (en) 2003-05-02 2008-02-19 Advanced Micro Devices, Inc. Computer system including a bus bridge for connection to a security services processor
JP2005100262A (ja) * 2003-09-26 2005-04-14 Seiko Epson Corp メモリ管理装置およびメモリ管理プログラム、並びにメモリ管理方法
US20050125550A1 (en) * 2003-12-09 2005-06-09 Bajikar Sundeep M. Location information via DHCP
US7930422B2 (en) * 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
WO2006015513A1 (en) * 2004-08-12 2006-02-16 Intel Corporation Method and system for processing multicast packets
JP4144609B2 (ja) 2004-09-29 2008-09-03 ソニー株式会社 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム
FR2879874B1 (fr) * 2004-12-16 2008-11-07 Eads Telecom Soc Par Actions S Procede de demarrage d'une station ip, systeme, serveur et station le mettant en oeuvre et procede d'etablissement d'appel telephonique
US7433673B1 (en) * 2004-12-17 2008-10-07 Sprint Spectrum L.P. Method and system for providing location information for a wireless local area network (WLAN)
RU2491737C2 (ru) * 2006-03-31 2013-08-27 Квэлкомм Инкорпорейтед Управление памятью для высокоскоростного управления доступом к среде
US7685396B2 (en) * 2007-03-05 2010-03-23 Research In Motion Limited System and method for dynamic memory allocation

Also Published As

Publication number Publication date
CN101971581B (zh) 2013-11-06
KR20100126592A (ko) 2010-12-01
CA2718291A1 (en) 2009-10-08
RU2460222C2 (ru) 2012-08-27
US8321651B2 (en) 2012-11-27
ES2367605T3 (es) 2011-11-04
ATE516647T1 (de) 2011-07-15
JP2011521313A (ja) 2011-07-21
CN101971581A (zh) 2011-02-09
EP2266265B1 (en) 2011-07-13
WO2009124164A1 (en) 2009-10-08
US20090254731A1 (en) 2009-10-08
TW201018142A (en) 2010-05-01
RU2010144764A (ru) 2012-05-10
KR101134195B1 (ko) 2012-04-09
EP2266265A1 (en) 2010-12-29

Similar Documents

Publication Publication Date Title
JP5265758B2 (ja) 組込みまたは無線通信システムにおけるメモリ割当てのためのシステムおよび方法
CN104090806B (zh) 升级包、升级请求的处理方法及装置
EP3334123A1 (en) Content distribution method, virtual server management method, cloud platform and system
WO2023115978A1 (zh) 一种报文处理方法、装置及电子设备
WO2014190791A1 (zh) 一种网关设备身份设置的方法及管理网关设备
Ramakrishnan et al. An efficient delivery scheme for coded caching
CN105446813A (zh) 一种资源分配的方法及装置
CN114710467B (zh) Ip地址存储方法、装置和硬件网关
KR20140034951A (ko) 무선 메쉬 네트워크에서 컨텍스트 기반의 IPv6 헤더 압축을 위한 컨텍스트 테이블 관리 방법
US10237233B2 (en) Allocating identifiers with minimal fragmentation
WO2010076603A1 (en) Methods, apparatuses, and computer program products for facilitating randomized port allocation
JP2022541261A (ja) リソース割振り方法、記憶デバイス、および記憶システム
CN109614345B (zh) 一种协议层之间通信的内存管理方法及装置
WO2014159252A2 (en) Methods and systems for providing resources for cloud storage
CN104753814B (zh) 基于网卡的报文分流处理方法
KR20130130295A (ko) 단말을 서버에 할당하고 단말로의 효율적인 메시징을 위한 시스템 및 방법
CN116560878A (zh) 一种内存共享方法和相关装置
US20220350748A1 (en) Consistent hashing for communication devices
CN103544292A (zh) 基于HASH表的Diameter消息处理方法和装置
CN113612837B (zh) 数据处理方法、装置、介质和计算设备
WO2024113090A1 (zh) 访存方法、装置及系统
WO2015062058A1 (zh) 一种频谱分配的方法和设备
KR102012261B1 (ko) 메모리 할당의 부분 해제를 지원하는 메모리 관리 장치 및 방법
US20140068220A1 (en) Hardware based memory allocation system with directly connected memory
CN118227322A (zh) 基于cxl的数据传输方法、电子设备及计算设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130307

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130501

R150 Certificate of patent or registration of utility model

Ref document number: 5265758

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees