JP2006513493A - フリーバッファプールを使用することによるメモリの管理 - Google Patents

フリーバッファプールを使用することによるメモリの管理 Download PDF

Info

Publication number
JP2006513493A
JP2006513493A JP2004566587A JP2004566587A JP2006513493A JP 2006513493 A JP2006513493 A JP 2006513493A JP 2004566587 A JP2004566587 A JP 2004566587A JP 2004566587 A JP2004566587 A JP 2004566587A JP 2006513493 A JP2006513493 A JP 2006513493A
Authority
JP
Japan
Prior art keywords
buffer
pool
free list
processor
index
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.)
Granted
Application number
JP2004566587A
Other languages
English (en)
Other versions
JP2006513493A5 (ja
JP4599172B2 (ja
Inventor
ショーン アダム クレイトン,
ショーン マクマスター,
トーマス ブイ. スペンサー,
Original Assignee
エミュレックス・デザイン・アンド・マニュファクチュアリング・コーポレーション
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 エミュレックス・デザイン・アンド・マニュファクチュアリング・コーポレーション filed Critical エミュレックス・デザイン・アンド・マニュファクチュアリング・コーポレーション
Publication of JP2006513493A publication Critical patent/JP2006513493A/ja
Publication of JP2006513493A5 publication Critical patent/JP2006513493A5/ja
Application granted granted Critical
Publication of JP4599172B2 publication Critical patent/JP4599172B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

本発明は、メモリの管理に関する。本発明の方法は、第1バッファ割り当てコマンドを第1プロセッサから受信する工程が包含され、割り当てコマンドには、共有メモリ内のバッファのプールに関連するレジスタアドレスが含まれており、割り当てコマンドは、フリーバッファに対応するバッファインデックスに基づいて、バッファプール内においてバッファが利用可能かどうかを判定し、バッファが使用可能と判定した場合、バッファを第1プロセッサに割り当てる。

Description

本出願は、メモリの管理に関する。
(背景)
マルチプロセッサシステムは、共有メモリを含むことができる。すなわち、同一のメモリに対して、システム内の2個以上のプロセッサがアクセス(読み出しまたは書き込み)することができる。共有メモリは、論理的にバッファに区分することができる。
(説明)
図1は、プロセッサ20−29と、メモリ30と、局部メモリ41を有するバッファマネージャ(BMGR)とを含むマルチプロセッサシステム10を示す。プロセッサ21−29、メモリ30およびBMGR40はそれぞれ、システムバス50に接続している。作動しているとき、プロセッサ20−29およびBMGR40はそれぞれ、メモリ30にアクセスすることができる。例えば、メモリ30に対して、データの読み込みおよび/または書き込みを行うことができる。一実施形態において、メモリ30はバッファプール60、70に論理区分され、各プールは同一サイズのバッファのセットを含む。本例において、バッファ61−65はプール60に含まれ、バッファ71−73はプール70に含まれる。またメモリ30は、バッファインデックス91−95を保持するバッファインデックスアレイ90と、R_CNT101−105を保持する参照カウント(R_CNT)アレイ100とを含む少なくとも1個のバッファ情報アレイ80を記憶している。本実施形態において、バッファインデックス91−95およびR_CNT100は、バッファプール60のバッファ61−65にそれぞれ対応する。バッファインデックスアレイ90は、バッファインデックス91−95の「フリーリスト」と呼ぶことができる。以下に説明するように、バッファインデックス91−95のフリーリストおよびR_CNT101−105は、プール内でバッファの割り当ておよび割り当て解除を管理するために、BMGR40によって使用される。BMGR40は、バッファインデックスアレイ90からのバッファインデックスの各フリーリストを、局部メモリ41に保存する。BMGR40は、割り当て/割り当て解除レジスタ34のセットを含み、各プール割り当て/割り当て解除レジスタは、メモリ30のバッファプールに対応する。システム10の動作中、プロセッサは、メモリ30のバッファプールに対応する割り当て/割り当て解除レジスタを34を特定するBMGR40に読み取りコマンドを送ることにより、バッファ割り当てを要求することができる。これに対応して、BMGRは、要求を行ったプロセッサに対し、バッファのバッファポインタアドレスを送る。バッファポインタアドレスは、局部メモリ41に記憶されたバッファインデックスのフリーリストのバッファインデックスに基づいている。
本明細書で説明するように、一実施形態において、バッファインデックスアレイ90からのバッファインデックスの各フリーリストのサブセットだけが、局部メモリ41に記憶される。このようにして、BMGR40の局部メモリ41のサイズを減少させることができる。局部メモリ41に記憶されたフリーリストインデックスは、いわゆるフリーリスト巡回待ち行列に記憶される。巡回待ち行列とは、データ(またはアドレス)を待ち行列の始めに上書きすることができるように待ち行列が巡回するようになっており、このときデータ(またはアドレス)が待ち行列の第1配置から始まり最後部配置に至るまで連続する場所に記憶されるようになっている待ち行列のことをいう。システム10の一実施形態において、フリーリスト巡回待ち行列は、2個のポインタ、「先頭」ポインタおよび「最後尾」ポインタにより参照される。先頭ポインタは、割り当て可能な局部メモリ41内の次のバッファインデックスに指定するために使用され、最後尾ポインタは、メモリ30に書き戻すことができる局部メモリ41内の次のバッファインデックスに指定するために使用される。
図2は、バッファを要求を行ったプロセッサ21−29に割り当てるためにBMGR40が行うことができるプロセス100を示す。プロセス100の実行中、BMGR40は、プロセッサ21−29からのコマンドを待っているアイドル状態(110)にある。受信した割り当てコマンド(112)に関して、プロセス100で、バッファが割り当て可能かどうか(例えば、バッファインデックスがBMGR40フリーリスト待ち行列上で使用可能か)について判定する(115)。バッファインデックスが使用可能であると判定されると、BMGR40は、割り当てられたバッファに対応するバッファポインタアドレスを第1プロセッサに送り(120)、先頭ポインタを加算し(122)、フリーリスト待ち行列上の次のバッファインデックスを指し示す。バッファインデックスが利用不可であると判定されると、BMGR40は、ヌルポインタ(例えば、ゼロ値)を第1プロセッサに返す(116)。プロセス100には、より多くのバッファインデックスを予め取り出し、局部メモリ41におけるフリーリスト巡回待ち行列上のバッファインデックスを十分な数に維持する必要があるかを判定すること(125)と、より多くのバッファが必要と判定された(125)場合に、メモリ30から追加のバッファインデックスを予め取り出すこと(126)とが含まれる。
プロセス100を実行することにより、2個以上のプロセッサ21−29は、バッファプール内の特定のバッファに共通にアクセスすることができる。本実施形態において、第1プロセッサが割り当てバッファを有する場合、第1プロセッサは、第2プロセッサに割り当てバッファへのアクセスをさせることができる。例えば、第1プロセッサは、割り当てバッファのアドレスを第2プロセッサに送ることができる。第2プロセッサが割り当てバッファへアクセスを開始するとほぼ同時に、第2プロセッサは、バッファ加算コマンドをBMGR40に送ることができる。さらにプロセス100を参照すると(図2参照)、受信した(130)バッファ加算コマンドに関して、BMGR40は、ポインタアドレスに対応する適切なバッファプールを判定し(135)、R_CNT(例えば、加算R_CNT)に’n’を追加し、読み込み、割り当てバッファに対応するR_CNTを書き戻す(140)。第1および第2プロセッサは、引き続き、割り当てバッファにアクセスすることができる。プロセッサが割り当てバッファにアクセスする必要がなくなれば、当該プロセッサは割り当て解除コマンドをBMGR40に送ることができる。受信した(150)割り当て解除コマンドに関して、BMGR40は、割り当て解除コマンドに対応するバッファプールを決定し(155)、対応するR_CNTをメモリ30から読み出し(157)、R_CNT(例えば、加算R_CNT)から‘n’を減算(157)した後、対応するR_CNTが0であるかを判定し(160)、対応するR_CNTが0であると判定された場合、プロセス100は、先の判定において対応するR_CNTが1であるかを判定し(165)、フリーリストの最後尾ポインタを加算し(175)、フリーリストがバッファインデックスの書き戻しを必要とするかを判定し(18)、局所メモリ41のバッファメモリのフリーリストからフリーリストを共有メモリ30に書き戻し(185)、コマンドを待つ(110)ために帰還する。
このようにバッファを管理することにより、プロセッサは、1個の割り当てコマンド(例えば、1個の読み出しコマンド)によりバッファ割り当てを要求することができ、1個の割り当て解除コマンド(例えば、1個の書き込みコマンド)によりバッファ割り当て解除を要求することができる。また、プロセッサに共有バッファ情報のオーバヘッドを管理させることを要求することなく、複数のプロセッサ間でバッファを共有することができる。さらに、このバッファ管理方法により、プロセッサは、BMGR40が要求を処理する間、システムバスおよび/またはプロセッサを停止させることなく、バッファの割り当てまたは割り当て解除を要求することができる。さらに、プロセス100には、共有メモリ30からバッファインデックスを予め取り出し、局部メモリ40へ記憶することが含まれる。従って、プロセッサからの割り当て要求が連続すれば、プロセッサからの要求があったときのみバッファインデックスを取り出すときに要求する場合より短い時間で処理することができる。これに対して、バッファが割り当て解除されるに従って、BMGR40は、バッファインデックスを、フリーリストからバッファインデックスアレイ90に書き戻すことができる。
バッファ割り当てコマンドを、バッファプールの割り当て/割り当て解除コマンドレジスタ34への読み込みとして実行することができる。バッファマネージャ40は、バッファポインタアドレスを含む要求プロセッサへ書き込みコマンドを送ることにより、割り当てコマンドに対応する。バッファ割り当て解除コマンドは、バッファプールの割り当て/割り当て解除コマンドレジスタ34への書き込みコマンドとして実行することができる。
一実施形態において、割り当て/割り当て解除双方のコマンドについて、1個の割り当て/割り当て解除レジスタを指定することができる。一実施形態において、割り当て/割り当て解除レジスタ34は、各レジスタがメモリ30のバッファプールに対応する32個のレジスタとして実施することができる。しかしながら、これより多いまたは少ないバッファプールおよび対応する数の割り当て/割り当て解除レジスタを設けることが可能である。
一実施形態において、各バッファプールは対応するベースアドレスを有し、本例においては、pool60_baseおよびpool70_baseが、各プール60、70内の第1バッファのメモリ30内の配置を識別する。また、各バッファプールは、プールの特性を識別するために対応する変数を含むことができる。例えば、“buff_sizeX”変数は、プールにおける各バッファのサイズ(例えば、メモリ配置の数)を示すために使用することができ、“#_buffX”変数は、プールに含まれるバッファの数を示すために使用することができる。システム10の作動中、buff_sizeX変数および#_buffX変数は、アレイ90に記憶されたバッファインデックスを算出するためにBMGR40により使用することができ、また、バッファインデックス値から対応するバッファポインタ値を決定するためにBMGR40により使用することができる。
より詳細には、バッファポインタアドレスを含むコマンドにより、バッファにアクセス(例えば、読み出しおよび書き込み)することができる。しかしながら、BMGR40上のフリーリスト巡回行列を、バッファインデックスを記憶するために使用することができる。従って、バッファをプロセッサに割り当てると、フリーリストからのバッファインデックスは、要求プロセッサへ返されるバッファポインタアドレスに変換する。一実施形態において、メモリ30内におけるバッファインデックスのバッファポインタアドレスおよび該バッファ、例えばbuff_sizeXおよび#_buffxを含むバッファプールの関連する変数を使用して、プール内のバッファのバッファインデックスを決定することができる。一例として、第1バッファのバッファインデックスは、バッファのバッファポインタアドレスを、該バッファを含む変数buff_sizeX変数で割ることにより、決定された値と同値に設定することができる。一方、バッファのバッファポインタアドレスは、そのバッファインデックス値に、関連する変数buff_sizeXを掛けることにより、決定することができる。
各バッファプールの数および特性は、プログラム化することができる。例えば、各バッファプールの特性は、システム初期化シーケンス中、またはシステム動作中に設定される。バッファプールおよびその特性は、システム10の作動前に初期化し、作動中には原則として静止状態に維持する。システム10の作動中にバッファプールの特性を変更するために、プールに対するすべての動作を停止し、バッファプール特性値をリセットした後、該バッファを取り扱う動作を再開する。
システム10の一実施形態において、BMGR40は、プロセッサ21−29に対してコマンドを送受信し、メモリ30に対してデータを送受信するバスインターフェース42を含む。また、マネージャ40は、インターフェース42からの受信コマンドを復号する復号論理44を含み、バッファインデックスからのバッファポインタアドレスを決定する。
一実施形態において、システムの10作動中、BMGR40は、「プールコンテキスト」情報、例えば、BMGR40に管理された各バッファプールに関する情報を、局部メモリ41に記憶する。プールコンテキスト情報には、例えば、プールベースアドレス、およびバッファプールに関連する変数buff_sizeXおよび#_buffXが含まれる。プールコンテキスト情報は、フリーリス上のバッファインデックスを、バッファプール内のバッファにアクセスするとき、プロセッサにより利用可能なポインタアドレスに変換するために、復号ロジック44により使用することができる。
一実施形態において、プロセッサは、1個のコマンドにより、複数のバッファの割り当てまたは割り当て解除を要求することができる。例えば、プロセッサは、1個のバッファを特定するコマンドまたは4個のバッファを特定するコマンドを送出することができる。他の例として、プロセッサは、‘n’値を特定するバッファ割り当てコマンドを送出することができるが、このn値はプロセッサによって要求されたバッファの数に対応する。これに対応して、BMGR40は、各ポインタがプール内において割り当てられたバッファの配置に対応する複数のバッファポインタを、要求を出したプロセッサに返すことができる。
一実施形態において、複数のバッファインデックスは、1個のバス50コマンドをもつBMGR40により、(バス50上のアクティビティ量を減少させるために)予め取り出すことができる。例えば、4個以上のバッファをBMGR40により割り当てたときはいつでも、事前取り出しコマンドをマスターFIFO44cに配置する。マスターインターフェース制御44bは、4個の追加バッファインデックスを要求するメモリ30に対し、読み出しコマンドをフリーリスト90から送ることができ、BMGR40は、待ち行列内のメモリ30から受信したとき、これらの追加バッファインデックスをバッファプールのフリーリストに記憶する。
プロセス100は、プロセス100の動作中にR_CNTに適用される増分値および/または減分値として使用されるMAX_RCNT値を選択的に含むことができる。例えば、アクション(127)、(135)および(140)により、MAX_RCNTは、割り当て解除が複数のバッファにより使用することができる。
プロセス100の一実施形態において、割り当てに利用できるプール内にバッファがないとBMGR40が判定した(115)場合、ヌルポインタ(すなわち、0の値)が要求を発したプロセッサに返される。このとき、要求を発したプロセッサは、他のバッファ割り当てコマンドを引き続いて送ることができる。図2をさらに参照すると、フリーリスト上に利用できるバッファがないとプロセス100で判定した場合、BMGR40は、要求を発したプロセッサにヌルポインタを送り(116)、バッファインデックスがメモリ30から必要とされているかを判定し(125)、追加のバッファインデックスがバッファマネージャ40により必要とされていると判断した場合、メモリ30からバッファインデックスを取り出す(126)。
一実施形態において、バッファがプロセッサに割り当てられる前に、メモリ30に記憶されたR_CNT値を最初に1の値に設定する。それ故、バッファの割り当て中は、対応するR_CNTは加算されない。これにより、システム10により実行されるバスコマンド周期数を減少させることができる。バッファの割り当て解除またはR_CNTの加算を行うために、プロセッサはバッファが割り当てられたバッファプールについて知る必要はない。より詳細には、プロセッサは、BMGR40に対して、バッファプールのアドレス範囲内のポインタアドレスを含む書き込みコマンドを送ることができ、BMGR40は、バッファプールに対応するプールを決定する。
以下の例1は、プロセス100の機能に対応するシステム10の動作の例を表す。
例1;
1)プロセッサ21は、pool_10_alloc/deallocレジスタ(@BMGRアドレス=0x0000_0540)を読み込み、バッファインンデックス#5は、フリーリスト先頭ポインタが示している場所にある(そのため、バッファインデックス#5は、局部メモリ41事前取出バッファになければならない)。
2)BMGR40は、バッファインデックス#5、例えば、ポインタ(pool=10、indice=5)=pool_10_base+(pool_10_buffer_size*5)に対応するポインタアドレスを決定する。
3)BMGRは、ポインタアドレス(10、5)をプロセッサ21に送り、また、巡回行列フリーリストを増加させ、他の割り当てコマンドに備えて次の巡回行列フリーリストに指定する。
4)プロセッサ21は、ポインタ(10、5)をプロセッサ22に送る(場合によっては、また、プロセッサ21は、例えば、プロセッサ22のコマンドを送ってプロセッサ21に割り当てられたバッファ中に見出されるプロセスデータを処理する。)
5)プロセッサ21または22は、加算分コマンドをBMGR40に送り、例えばポインタ(10、5)中のアドレスに書き込みコマンドを送ることにより、ポインタ(10、5)に対応するR_CNTを加算させる(R_CNTを加算する書き込みコマンドは、特定のバッファのアドレス範囲内のいかなるアドレスも含むことができ、BMGR40は、アドレスからの適切なバッファを決定し、対応するbuff_CNT(10、5)を加算することを認識していただきたい。)
6)プロセッサ21および22は、係属して割り当てられたバッファ(10、5)に継続的にアクセスすることができる。それとほぼ同時に、BMGRは、メモリ30からR_CNT(10、5)を読み込み、R_CNTを加算し、メモリ30に更新したR_CNT値を書き戻すことにより、対応するR_CNT(10、5)を加算する。
7)プロセッサ21は、バッファ(10、5)にアクセスする際、バッファ(10、5)内のいずれのアドレスをもいずれのpool_x割り当て解除レジスタ34に書き込むことにより、割り当て解除コマンドをBMGR40に送る。
8)BMGR40は、割り当て解除コマンドを受信し、バッファ(10、5)のR_CNT値を決定し、メモリ30からR_CNT(10、5)値を読み込み、R_CNT(10、5)を加算し、加算されたR_CNT(10、5)=1であることを決定し、加算されたR_CNT(10、5)をメモリ30に書き戻す。
9)プロセッサ22は、バッファ(10、5)へのアクセスを行うと、いずれかのアドレスをいずれかのpool_x割り当て解除レジスタ34に書き込むことにより、割り当て解除コマンドをBMGR40に送る。
10)BMGR40は、割り当て解除コマンドを受信し、バッファ(10、5)のR_CNT(10、5)値を決定し、メモリ30からR_CNT(10、5)値を読み込み、加算されたR_CNT(10、5)=0であることを決定し、この場合、メモリにR_CNT(10、5)=0を書き戻す代わりに、R_CNT(10、5)=1をメモリに残す。2個のバスコマンドトランザアクション、例えば、1から−>0に移行するR_CNT値を読み込み、更新し、書き戻す第1バスコマンドおよびR_CNTから−>0から移行する第2バスコマンドの実行を保存することができるため、R_CNT(pool、indice)=1をメモリに残すことは重要である。
11)また、BMGR40は、局部メモリ41におけるこのバッファプール巡回行列のフリーリスト最後尾ポインタを加算する。
例1において、工程7)で、BMGR40がR_CNT(10、5)を加算した後、工程9)で、BMGR40は、R_CNT(10、5)を減算することを認識していただきたい。一実施形態において、工程7)および9)の操作を除くことが可能である。より詳細には、第1プロセッサ(例えば、プロセッサ21)を「割り当て装置」として指定し、第2プロセッサ(例えば、プロセッサ22)を「割り当て解除装置」として指定した場合。この場合、加算および割り当て解除をそれぞれ行う複数のプロセッサを有する代わりに、第1プロセッサのみがバッファ割り当てコマンドのみを実行し、第2プロセッサは、特定のバッファの割り当て解除コマンドのみを実行する。システム10の操作および/またはプロセス100でこの方法を行うことにより、バッファの割り当て、割り当て解除および/またはR_CNTの加算に要するバスコマンド周期の数を減少させることができる。
一実施形態において、割り当てまたは割り当て解除コマンドには、割り当てらえるか割り当て解除されるバッファのアドレス境界内にあるいずれかのアドレスを含むことができる。より詳細には、BMGR40は、プロセッサにより送られたポインタアドレス上でアドレス境界チェックを行い、どのバッファのR_CNTが更新を必要とするかを判定することができる(例えば、図2に説明した動作(155)および(135)を参照)。BMGR40が境界チェックを行うこの方法は、バッファ割り当てまたは再割り当てを要求するために、プロセッサ21−29が割り当てられたバッファのベースプールアドレスを記憶する必要はないことを示している。従って、バッファ内の位置のポインタアドレスはどれも、プロセッサからBMGR40に送られた割り当てまたは割り当て解除コマンドの一部として使用することができる。
一実施形態において、割り当てられた(または、以前割り当てられた)バッファに対応するR_CNTを加算または減算するために、BMGR40は、読み込みコマンドをメモリ30に送り、該バッファに対応するR_CNTアレイ100からR_CNT値を読み出させる。BMGR40は、メモリ30からR_CNTを受信すると、R_CNT値を加算または減算し、(R_CNTの更新値により)更新済みR_CNT値をメモリ30に書き戻すことができる。
一実施形態において、復号論理ブロック44を、他のコマンドの処理前にバッファ割り当てコマンドを処理するように構成する。より詳細には、復号論理44には、復号論理44a、マスターインターフェース論理44bおよびプール状態制御論理44dが含まれる。マスターインターフェース論理ブロック44bには、割り当て解除を保持するFIFO行列44cおよび復号論理44aからの加算加コマンドが含まれる。バッファ割り当て解除コマンドおよび/または増加コマンドが後にマスターインターフェース制御論理44cにより処理されるために保存されるのに対し、復号論理44aにより受信されたバッファ割り当てコマンドは、受信されたときに処理される。そのため、バッファ割り当てコマンドがBMGR40によって処理されるのを待機しているプロセッサは、バッファ処理割り当ておよび/またはR_CNTの処理を待機する必要はない。
一実施形態において、復号論理44には、プールコンテキスト情報を記憶して局部メモリ41にアクセスするプール状態制御44dが含まれる。本例において、プール状態制御44dは、接続されてコマンド復号44aおよびマスターインターフェース制御44b双方からアクセス要求を受信する。プール状態制御44bは、コマンド復調44aおよびマスターインターフェース論理44dからのアクセス要求の調停を行い、データの読み込みおよび書き出しを局部メモリ41に対して行う。
各プロセッサ21−29およびBMGR40は、オペレーティングシステムを装備することができ、オペレーティングシステムとは、プロセッサの動作および資源の割り当てを制御するソフトウェアである。用語「プロセス」または「プログラム」とは、例えば、プロセッサまたはコンピュータシステム上で実行することのできるアプリケーションプログラムのことをいう。アプリケーションプログラムは、オペレーティングシステムを介して利用可能なコンピュータ資源を使用して、利用者が望むタスクを行う実行可能な命令のセットである。
プロセッサ21−29およびBMGR40は、ハードウェア、ソフトウェアまたはこれら2つの組み合わせの中に実施することができる。プロセッサ、プロセッサにより読み取り可能な記憶媒体(揮発性メモリおよび不揮発性メモリおよび/または記憶部品を含む)、少なくとも1個の入力装置および1個以上の出力装置をそれぞれ含むプログラム可能なコンピュータまたは他の機械で実行されるコンピュータプログラムにおいて、それらを実施することができる。プログラムコードは、入力装置(例えば、マウスまたはキーボード)を用いて入力されるデータに適用して、アプリケーションを実行し、出力情報を生成することができる。
アプリケーションを実行するコンピュータが記憶媒体または記憶装置を読み込んだとき、コンピュータを構成および操作する一般または特別目的プログラム可能なコンピュータにより読み取ることが可能な記憶媒体/製品(例えば、CD−ROM、ハードディスクまたは磁気ディスケット)上で、各コンピュータプログラムを記憶することができる。また、実行されるとコンピュータプログラム内の命令により、アプリケーションに従って機械を作動させるコンピュータプログラムにより構成された機械読み取り可能な記憶媒体として、それらを実施することができる。
本発明は、上述した特定の実施形態に限定されるものではない。例えば、上述の例は、マルチプロセッサシステムのプロセッサを用いて説明した。例えば、共有メモリにアクセスする機能を含む機能装置として1個以上のプロセッサを実施することができ、例えば、アプリケーション特化集積回路(“ASICS”)として機能装置を実施ことができる。例えば、BMGR40の局部メモリを用いて上記装置を説明した。しかしながら、局部メモリは、レジスタとして部分的に装備され、例えば、バッファインデックスおよびプールコンテキスト情報を記憶するために使用することができる。他の例として、上記装置は、割り当て/割り当て解除レジスタを特定するBMGR40読み取りコマンドを送ることにより、バッファ割り当てを要求するプロセッサとして、上記装置を説明した。しかしながら、レジスタの特定を必要としない他の方法で、割り当て/割り当て解除コマンドを実行することが可能である。
また、本明細書に記載のない他の実施形態についても、以下の請求項の範囲である。
図1は、マルチプロセッサシステムのブロック図である。 図2は、バッファ管理のための工程の流れ図である。

Claims (25)

  1. 第1プロセッサから第1バッファ割り当てコマンドを受信する工程であって、割り当てコマンドは共有メモリ内のバッファのプールに関連するレジスタアドレスを含む工程と、
    フリーバッファに対応するバッファインデックスに基づき、バッファがバッファプール内で利用可能であるかを判定する工程と、
    バッファが利用可能であると判定された場合、バッファを第1プロセッサに割り当てる工程とを、
    含むことを特徴とする方法。
  2. 判定する工程は、
    共有メモリ中のバッファインデックスの第1フリーリストを記憶する工程であって、各バッファインデックスは共有メモリ中のバッファのアドレスに対応し、フリーリストは第1の数のエントリーを有するものとする工程と、
    第2メモリ中のバッファインデックスの第2フリーリストを記憶する工程であって、バッファインデックスの第2フリーリストは、バッファインデックスアレイ中の第1の数のエントリーより少ない第2の数のエントリーを有するものとする、工程と、
    含むことを特徴とする、請求項1記載の方法。
  3. 第2メモリ中のバッファインデックスの第2フリーリストを記憶する工程は、巡回待ち行列構造中のバッファインデックスの第2フリーリストを記憶することを含むことを特徴とする、請求項2記載の方法。
  4. フリーリストに記憶されるバッファインデックスの第1フリーリストから、バッファインデックスを予め取り出す工程をさらに含むことを特徴とする、請求項3記載の方法。
  5. フリーリストからのバッファインデックスを、バッファの割り当て解除に続き、バッファインデックスアレイに書き戻す工程をさらに含むことを特徴とする、請求項3記載の方法。
  6. 決定する工程は、
    バッファコンテキスト情報を第2メモリに記憶することを含み、バッファコンテキスト情報は少なくとも1個のベースプールアドレス、可変バッファサイズおよび可変バッファの数を含むものとすることを特徴とする、請求項2記載の方法。
  7. バッファプール中のバッファのサイズに基づき、バッファインデックス値またはバッファポインタアドレスを決定することをさらに含むことを特徴とする、請求項6記載の方法。
  8. バッファプール中のバッファの数に基づき、バッファインデックス値またはバッファポインタアドレスを決定することをさらに含むことを特徴とする、請求項6記載の方法。
  9. 割り当てる工程は、
    割り当てられたバッファに対応するバッファポインタアドレスを第1プロセッサに送ることを、
    さらに含むことを特徴とする、請求項1記載の方法。
  10. バッファプールに関連するアドレスは、バッファプールに関連するアドレス範囲内のアドレスを含むことを特徴とする、請求項9記載の方法。
  11. 前記方法は、共有メモリ中の参照カウント値を記憶することを含み、参照カウント値は、バッファにアクセスするプロセッサの数に対応することを特徴とする、請求項2記載の方法。
  12. 第2プロセッサからバッファ加算コマンドを受信する工程であって、バッファ加算コマンドは、割り当てられたバッファに関連するアドレスを含むものとするとバッファ加算コマンドを受信する工程と、
    割り当てられたバッファの参照カウント値を更新する工程と、
    をさらに含むことを特徴とする、請求項11記載の方法。
  13. バッファプール内の複数のバッファの要求を特定する割り当てコマンドを受信する工程と、
    バッファプール内に、少なくとも2個のバッファを割り当てる工程と、
    をさらに含むことを特徴とする、請求項11記載の方法。
  14. 第1および第2プロセッサのうちの少なくともひとつから、割り当て解除コマンドを受信する工程と、
    割り当てられたバッファの参照カウント値を更新する工程と、
    をさらに含むことを特徴とする、請求項11記載の方法。
  15. システムバスと、
    システムバスに接続された複数のプロセッサと、
    複数のプロセッサのうちの少なくとも1つからバッファ割り当てコマンドを受信し、プロセッサにバッファ割り当て応答を送るために、システムバスに接続されたバッファマネージャと、
    複数のプロセッサおよびバッファマネージャに対してデータを送受信するために、システムバスに接続された共有メモリと、
    共有メモリに規定されるバッファのプールと、
    を含み、前記バッファマネージャは、複数のプロセッサの1つからのバッファ割り当てコマンドに応答して、バッファプールからのバッファを割り当てるために作動することを特徴とするシステム。
  16. 前記システムは、共有メモリに記憶されたバッファインデックスの第1フリーリストをさらに含み、アレイ内の各バッファインデックスはバッファプール内のバッファに対応し、アレイは共有メモリ内の第1の数のエントリーを含み、
    前記バッファマネージャは、
    バッファインデックスの第2フリーリストを記憶する局部メモリをさらに含み、第2フリーリストは、バッファインデックスのうちの第1リスト内の第1の数のエントリーより少ない第2の数のエントリーを局部メモリ内に含むことを特徴とする、請求項15記載のシステム。
  17. BMGRは、
    複数のプロセッサから受信されたコマンドを受信および復号するように動作する復号論理ブロックであって、局部メモリに記憶されたバッファの第2フリーリストにアクセスするように動作する、コマンド復号論理ブロック
    をさらに備えることを特徴とする、請求項16記載のシステム。
  18. 共有メモリに記憶された参照カウント値のアレイであって、参照カウントアレイ内の各参照カウント値は、バッファプール内のバッファに対応する、参照カウント値のアレイと、
    参照カウントアレイ内の参照カウント値を更新するように動作する復号論理ブロックと、
    をさらに含むことを特徴とする、請求項17記載のシステム。
  19. 局部メモリに記憶されたプールコンテキスト情報であって、プールコンテキスト情報は共有メモリに規定されたバッファプールに対応し、プールコンテキスト情報は、プールベースアドレス、バッファプールのサイズおよびバッファプールにおけるエントリーの数のうちの少なくとも1個を含む、プールコンテキスト情報をさらに含むことを特徴とする、請求項18記載のシステム。
  20. 復号論理は、プールコンテキスト情報に基づいて、バッファインデックスおよびバッファポインタアドレスを決定するように動作する論理をさらに含むことを特徴とする、請求項19記載のシステム。
  21. 機械により実行されたとき、
    共有メモリ内のバッファのプールに関連するレジスタアドレスを含む第1バッファ割り当てコマンドを第1プロセッサから受信し、
    フリーバッファに対応するバッファインデックスに基づき、バッファがバッファプール内で利用可能であるかを判定し、
    バッファが利用可能であると判定された場合、バッファプール内のバッファを第1プロセッサに割り当てる、
    という結果を生じる指示を記憶した記憶媒体を含むことを特徴とする製品。
  22. 機械により実行されたとき、
    共有メモリ中のバッファインデックスの第1フリーリストを記憶し、このとき、各バッファインデックスは共有メモリ中のバッファのアドレスに対応し、第1の数のエントリーを記憶し、
    第2メモリ中のバッファインデックスの第2フリーリストを記憶し、バッファインデックスの第2フリーリストは、バッファインデックスアレイ中の第1の数のエントリーより少ない第2の数のエントリーを有することを特徴とする、第2フリーリストを記憶する、
    という結果を生じる指示をさらに含むことを特徴とする、請求項21記載の製品。
  23. 機械により実行されたとき、
    第2フリーリストに記憶されるバッファインデックスの第1フリーリストからのバッファインデックスを予め取り出す、
    という結果を生じる指示をさらに含むことを特徴とする、請求項22記載の製品。
  24. 機械により実行されたとき、
    バッファインデックスを、第2フリーリストからバッファの割り当て解除に続きバッファインデックスアレイに書き戻す、
    という結果を生じる指示をさらに含むことを特徴とする、請求項22記載の製品。
  25. 機械により実行されたとき、
    バッファプール内のバッファのサイズに基づき、バッファインデックス値またはバッファポインタアドレスを決定する、
    という結果を生じる指示をさらに含むことを特徴とする、請求項22記載の製品。
JP2004566587A 2003-01-09 2003-12-19 フリーバッファプールを使用することによるメモリの管理 Expired - Fee Related JP4599172B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/340,078 US6931497B2 (en) 2003-01-09 2003-01-09 Shared memory management utilizing a free list of buffer indices
PCT/US2003/040967 WO2004063850A2 (en) 2003-01-09 2003-12-19 Managing memory by using a free buffer pool

Publications (3)

Publication Number Publication Date
JP2006513493A true JP2006513493A (ja) 2006-04-20
JP2006513493A5 JP2006513493A5 (ja) 2010-09-09
JP4599172B2 JP4599172B2 (ja) 2010-12-15

Family

ID=32711237

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004566587A Expired - Fee Related JP4599172B2 (ja) 2003-01-09 2003-12-19 フリーバッファプールを使用することによるメモリの管理

Country Status (5)

Country Link
US (1) US6931497B2 (ja)
EP (1) EP1581872A4 (ja)
JP (1) JP4599172B2 (ja)
TW (1) TWI359358B (ja)
WO (1) WO2004063850A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7484633B2 (ja) 2020-09-30 2024-05-16 株式会社デンソー 共用ストレージ管理装置及び共用ストレージ管理方法

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7133977B2 (en) * 2003-06-13 2006-11-07 Microsoft Corporation Scalable rundown protection for object lifetime management
US7962707B2 (en) * 2005-07-06 2011-06-14 Honeywell International Inc. Apparatus and method for deterministic garbage collection of a heap memory
US7487271B2 (en) * 2005-09-22 2009-02-03 Motorola, Inc. Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system
US7827373B2 (en) * 2005-10-31 2010-11-02 Honeywell International Inc. System and method for managing a short-term heap memory
US20070150593A1 (en) * 2005-12-28 2007-06-28 Telefonaktiebolaget Lm Ericsson (Publ) Network processor and reference counting method for pipelined processing of packets
US7694041B2 (en) * 2006-05-19 2010-04-06 Arabella Software Ltd. Method for managing buffers pool and a system using the method
US8510743B2 (en) * 2007-10-31 2013-08-13 Google Inc. Terminating computer applications
US7971007B2 (en) * 2008-07-08 2011-06-28 Silicon Motion, Inc. Downgrade memory apparatus, and method for accessing a downgrade memory
JP2012010182A (ja) * 2010-06-25 2012-01-12 Sony Corp 情報処理装置と情報処理方法
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US8745291B2 (en) * 2011-10-04 2014-06-03 Qualcomm Incorporated Inter-processor communication apparatus and method
US8949491B1 (en) 2013-07-11 2015-02-03 Sandisk Technologies Inc. Buffer memory reservation techniques for use with a NAND flash memory
US10268410B2 (en) 2014-10-20 2019-04-23 Netapp, Inc. Efficient modification of storage system metadata
US9965196B2 (en) * 2014-10-20 2018-05-08 Netapp, Inc. Resource reservation for storage system metadata updates
CN105224258B (zh) * 2015-10-19 2018-05-22 深圳芯邦科技股份有限公司 一种数据缓冲区的复用方法与系统
US10169073B2 (en) 2015-12-20 2019-01-01 Intel Corporation Hardware accelerators and methods for stateful compression and decompression operations
US10310897B2 (en) * 2016-09-30 2019-06-04 Intel Corporation Hardware accelerators and methods for offload operations
US10235310B2 (en) 2016-11-29 2019-03-19 International Business Machines Corporation Deallocation of memory buffer in multiprocessor systems
US10210106B2 (en) * 2017-03-15 2019-02-19 International Business Machines Corporation Configurable hardware queue management
US10175912B1 (en) 2017-07-05 2019-01-08 Google Llc Hardware double buffering using a special purpose computational unit
US11397672B2 (en) * 2017-11-29 2022-07-26 Beijing Memblaze Technology Co., Ltd Deallocating command processing method and storage device having multiple CPUs thereof
KR101851948B1 (ko) * 2018-01-29 2018-04-25 (주)베스트케이에스 데이터 페이지의 버퍼 풀 관리 방법
US11907206B2 (en) 2021-07-19 2024-02-20 Charles Schwab & Co., Inc. Memory pooling in high-performance network messaging architecture

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5837887A (ja) * 1981-08-28 1983-03-05 Nippon Telegr & Teleph Corp <Ntt> 記憶空間管理方式
JPS60118937A (ja) * 1983-11-30 1985-06-26 Sharp Corp マルチ・タスク制御用デバイス
JPS61290548A (ja) * 1985-06-19 1986-12-20 Fujitsu Ltd 記憶装置の領域管理方式
JPS6224355A (ja) * 1985-07-24 1987-02-02 Hitachi Ltd バッファ管理方法
JPH06195256A (ja) * 1991-07-10 1994-07-15 Internatl Business Mach Corp <Ibm> 記憶システム及びそのアクセス管理方法
JPH08297626A (ja) * 1995-04-14 1996-11-12 Mitsubishi Electric Res Lab Inc ネットワーク・インタフェースおよびネットワーク・インタフェースにおけるパケット処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0872798A1 (en) * 1997-03-21 1998-10-21 CANAL+ Société Anonyme Computer memory organization
US6618793B2 (en) * 2000-12-18 2003-09-09 Redback Networks, Inc. Free memory manager scheme and cache

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5837887A (ja) * 1981-08-28 1983-03-05 Nippon Telegr & Teleph Corp <Ntt> 記憶空間管理方式
JPS60118937A (ja) * 1983-11-30 1985-06-26 Sharp Corp マルチ・タスク制御用デバイス
JPS61290548A (ja) * 1985-06-19 1986-12-20 Fujitsu Ltd 記憶装置の領域管理方式
JPS6224355A (ja) * 1985-07-24 1987-02-02 Hitachi Ltd バッファ管理方法
JPH06195256A (ja) * 1991-07-10 1994-07-15 Internatl Business Mach Corp <Ibm> 記憶システム及びそのアクセス管理方法
JPH08297626A (ja) * 1995-04-14 1996-11-12 Mitsubishi Electric Res Lab Inc ネットワーク・インタフェースおよびネットワーク・インタフェースにおけるパケット処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7484633B2 (ja) 2020-09-30 2024-05-16 株式会社デンソー 共用ストレージ管理装置及び共用ストレージ管理方法

Also Published As

Publication number Publication date
TWI359358B (en) 2012-03-01
US6931497B2 (en) 2005-08-16
US20040139284A1 (en) 2004-07-15
TW200428210A (en) 2004-12-16
EP1581872A2 (en) 2005-10-05
WO2004063850A3 (en) 2004-12-23
WO2004063850A2 (en) 2004-07-29
EP1581872A4 (en) 2007-05-16
JP4599172B2 (ja) 2010-12-15

Similar Documents

Publication Publication Date Title
JP4599172B2 (ja) フリーバッファプールを使用することによるメモリの管理
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
US6728858B2 (en) Method and apparatus including heuristic for sharing TLB entries
JP5241737B2 (ja) プロセッサ・システムにおいて命令レベルでのリソース割り当ての識別を可能にする方法および装置
US6857047B2 (en) Memory compression for computer systems
US5740406A (en) Method and apparatus for providing fifo buffer input to an input/output device used in a computer system
US5644746A (en) Data processing apparatus with improved mechanism for executing register-to-register transfer instructions
US9086920B2 (en) Device for managing data buffers in a memory space divided into a plurality of memory elements
US7805582B2 (en) Method of managing memory in multiprocessor system on chip
JPH05224921A (ja) データ処理システム
US20230196502A1 (en) Dynamic kernel memory space allocation
US5696990A (en) Method and apparatus for providing improved flow control for input/output operations in a computer system having a FIFO circuit and an overflow storage area
JP2004220608A (ja) スレッド型に基づくコンピュータ・リソースの動的割り付け
US5805930A (en) System for FIFO informing the availability of stages to store commands which include data and virtual address sent directly from application programs
JPH076115A (ja) データ処理システムのソフトウェアユーザによるハードウェアデータ移動機能の制御方法、プロセッサ間の操作の同期化方法、及び複数の装置制御ブロックの付与方法
GB2248327A (en) Fixed protection key for real storage memory
US5924126A (en) Method and apparatus for providing address translations for input/output operations in a computer system
US5638535A (en) Method and apparatus for providing flow control with lying for input/output operations in a computer system
JP2001290706A (ja) Tlbキャッシュのためのプリフェッチ
WO2010024071A1 (ja) キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JP2005209206A (ja) マルチプロセッサシステムにおけるデータ転送方法、マルチプロセッサシステム、及び、この方法を実施するプロセッサ
US6851010B1 (en) Cache management instructions
US6499094B1 (en) Management of memory heap space for data files accessible to programs operating in different addressing modes
US20090164729A1 (en) Sync-id for multiple concurrent sync dependencies in an out-of-order store queue

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100223

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100521

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100528

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100622

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100629

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20100720

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: 20100902

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100927

R150 Certificate of patent or registration of utility model

Ref document number: 4599172

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131001

Year of fee payment: 3

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees