JP2000200211A - メモリプ―ル制御回路 - Google Patents

メモリプ―ル制御回路

Info

Publication number
JP2000200211A
JP2000200211A JP11000977A JP97799A JP2000200211A JP 2000200211 A JP2000200211 A JP 2000200211A JP 11000977 A JP11000977 A JP 11000977A JP 97799 A JP97799 A JP 97799A JP 2000200211 A JP2000200211 A JP 2000200211A
Authority
JP
Japan
Prior art keywords
memory
control circuit
flag
field
pool control
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
JP11000977A
Other languages
English (en)
Other versions
JP3267574B2 (ja
Inventor
Haruhiro Kaganoi
晴大 加賀野井
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP00097799A priority Critical patent/JP3267574B2/ja
Priority to CA 2293938 priority patent/CA2293938A1/en
Publication of JP2000200211A publication Critical patent/JP2000200211A/ja
Application granted granted Critical
Publication of JP3267574B2 publication Critical patent/JP3267574B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Memory System (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 共有メモリを用いるシステムにおいて、メモ
リ領域を解放してよいか否かの確認を容易に行う。 【解決手段】 共有メモリ19は予め定められた数の複
数のフィールドを有するメモリ空間に分割されており、
CAM11には共有メモリの空き領域を管理するポイン
タが格納されるとともにフィールド毎に当該フィールド
が使用中であるか否かを示すフラグが格納される。領域
確保モジュール15は共有メモリへのアクセスに応じて
メモリ空間を確保メモリ空間として確保してCAM内の
ポインタを書き替える。領域内アクセスモジュール14
は確保メモリ空間内のフィールドの使用状態に応じてC
AMにフラグを立てる。検索制御マシン16でCAMを
検索して確保メモリ空間の全てのフィールドが未使用で
ある確認されると、領域解放モジュールは確保メモリ空
間を解放する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、メモリプール制御
回路に関し、特に、共有メモリの管理に関する。
【0002】
【従来の技術】一般に、複数のプロセッサ又はタスク
(プロセス)が一つの共有メモリを使用するシステムが
知られており、このようなシステムでは、共有メモリの
管理を適切に行う必要がある。
【0003】従来、共有メモリの管理を行う際には、タ
スクの要求に応じて共有メモリにメモリ領域を確保し
て、メモリ領域が未使用状態となると当該メモリ領域を
解放するようにしている。
【0004】
【発明が解決しようとする課題】ところで、メモリ領域
を有効に使用するため、固定長の複数フィールドをまと
めて一つの単位(ブロック)として、各ブロックをメモ
リ領域として確保するようにした場合、ブロック内のフ
ィールド毎に使用及び未使用が異なる関係上、つまり、
ブロック内のフィールドの各々について使用状態である
か未使用状態であるか判別することが難しい関係上、全
てのフィールドが未使用状態となった際当該ブロックを
解放することが難しいという問題点がある。つまり、確
保したメモリ領域を解放してもよいかどうかの確認をす
ることが難しく、結果的に、一度確保されたメモリ領域
を解放することができないという問題点がある。
【0005】本発明の目的は固定長の複数フィールドを
まとめて一つの単位(ブロック)として各ブロックをメ
モリ領域として確保するようにした際においても、メモ
リ領域を解放してよいか否かの確認を容易に行うことの
できるメモリプール制御回路を提供することある。
【0006】
【課題を解決するための手段】本発明によれば、共有メ
モリの管理を行う際に用いられるメモリプール制御回路
であって、前記共有メモリは予め定められた数の複数の
フィールドを有するメモリ空間に分割されており、前記
共有メモリの空き領域を管理するポインタが格納される
とともに前記フィールド毎に当該フィールドが使用中で
あるか否かを示すフラグが格納される連想メモリが備え
られ、前記共有メモリへのアクセスに応じて前記メモリ
空間を確保メモリ空間として確保して前記連想メモリ内
のポインタを書き替える第1の手段と、前記確保メモリ
空間内のフィールドの使用状態に応じて前記連想メモリ
にフラグを立てる第2の手段と、前記連想メモリを検索
して前記確保メモリ空間の全てのフィールドが未使用と
なっていると前記確保メモリ空間を解放する第3の手段
とを有することを特徴とするメモリプール制御回路が得
られる。
【0007】
【発明の実施の形態】以下本発明について図面を参照し
て説明する。
【0008】まず、図1を参照して、本発明によるメモ
リプール制御回路の一例について説明する。図示のメモ
リプール制御回路はCAM(Content Addr
essable Memory:連想メモリ)11を備
えており、さらに、メモリプール制御回路は監視モジュ
ール12、領域解放モジュール13、領域内アクセスモ
ジュール14、領域確保モジュール15、検索制御マシ
ン16、及びタイマー17を有している。図示の例で
は、プロセッサ18上で複数のタスク(プロセス)が動
作しており、一つのメモリ19が複数のタスクで共有し
て用いられている。
【0009】ここで、図2も参照して、タスク(プロセ
ス)がメモリ空間(ここではブロックという)を確保し
た際その空き領域はポインタ群(以後ブロック管理ポイ
ンタと呼ぶ)1−1によって管理される。ブロック1−
2は固定長の複数フィールドに分割されており、フラグ
群1−3がメモリ空間(ブロック)1−2と1対1で対
応しており、フラグ群1−3は各フィールドが使用中か
否か、つまり、フラグ群1−3は各フィールドが使用中
であるか未使用(空き状態)であるかを示す。
【0010】ここで、後述するようにして、フラグ群1
−3はブロック管理ポインタとともにCAM11に格納
され、そのサイズ(ワード数)は必要とされる領域確保
の単位数分用意される。また、ポインタ群1−1におい
て、ブロック管理ポインタは任意数(最低)用意され
る。図2に示す例では、64個のブロック管理ポインタ
が用意される。前述のように、ブロック1−2は複数の
固定長フィールドに分割され、各々の固定長フィールド
には次の空きフィールドを指すためのポインタが存在し
ている。
【0011】図3には、CAMのデータフォーマット
{CAM識別子(CAM Indicator)}が示
されており、図示のように、CAM Indicato
rは、該当ワードが有効か無効かを示すフラグ(Val
id/Invalid Flag)2−1、ブロック内
の各フィールドが使用中か未使用かを示すフラグ(Us
ed/Free Indicator)2−2、及び該
当ワードが示しているフラグに対応する実際のメモリ空
間の位置を示すポインタ(Block HeadPoi
nter)2−3を有している。
【0012】図1乃至図3を参照して、複数のタスク
(プロセス)が一つのメモリ空間を共有して使用する
際、一つのタスク(プロセス)によるメモリ領域の確保
と解放について説明する。
【0013】プロセッサ18上のタスクがメモリ19を
アクセスする都度、監視モジュール12はそのアクセス
状況を監視している。そして、監視モジュール12はメ
モリアクセス状況を領域内アクセスモジュール14及び
領域確保モジュール15に与える。
【0014】領域確保を行う際には、固定長のフィール
ドを連続して複数個(図2に示す例では20個)並べた
メモリ空間(ブロック)単位に行われる。いま、確保さ
れるフィールドのサイズが予め定められた規定値(r_si
ze)であるとする。初期化の際には、ブロック管理ポイ
ンタ1−1は全てNULL(無効)を示し、CAM1−
3は全てINVALID(未使用)状態で、ポインタ2
−3も全てNULLを示している(図4参照)。
【0015】いま、タスクnによって、r_sizeバイトの
メモリ空間が必要となると、つまり、監視モジュール1
2がタスクnよるメモリ空間の使用状況を知ると、領域
確保モジュール15では、CAM12をアクセスしてr_
sizeフィールド複数個(ここでは20個)分の連続した
領域1ブロックを確保して、ブロック内の各フィールド
の先頭ポインタを次のフィールドを示すようにする。確
保された領域のうち最初のフィールドは使用されるの
で、n番目のブロック管理ポインタはブロック内の最初
の未使用空間を指す(図2において左から2番目のフィ
ールド)。
【0016】一つのブロックが確保されると、領域内ア
クセスモジュール14ではCAM11の1ワードをVA
LID状態として、その中のポインタフィールドに確保
されたブロックの先頭位置のアドレスを書き込む。さら
に、領域内アクセスモジュール14はブロック内のフィ
ールドの使用状態に応じてフラグを立てる(ここでは、
最初のフィールドに“1"が立つ:図5参照)。
【0017】使用されていたメモリ空間が未使用となる
と、領域内アクセスモジュール14ではn番目のブロッ
ク管理ポインタによって未使用になったフィールドを示
し、それまでn番目のブロック管理ポインタが指してい
たアドレスを未使用となったフィールドのポインタ部分
に書き込む。つまり、n番目のブロック管理ポインタに
よって構成されている空きフィールドを管理するリスト
構造の先頭に未使用になったフィールドは挿入されるこ
とになる。
【0018】さらに、領域内アクセスモジュール14で
はCAM上の該当フィールドの使用未使用フラグを未使
用状態にする(図6参照)。図6ではブロック内の先頭
と2番目のフィールドが使用されており、そのうち先頭
フィールドが未使用となった例が示されている。
【0019】ところで、タスクによって確保された領域
(ブロック)が全て使用されてしまうと、新たなブロッ
クが用意される。上述したように、r_sizeのフィールド
複数個(ここでは20個)分の連続した領域1ブロック
を確保して、ブロック内の各フィールドの先頭ポインタ
は次のフィールドを指すようにする。確保された領域の
うち使用中のフィールドを飛ばして、n番目のブロック
管理ポインタは確保したブロック内の最初の未使用空間
を指示する。ブロックが確保されると同時にCAMの新た
な1ワードがVALID状態となり、その中のポインタ
フィールドに確保されたブロックの先頭位置のアドレス
が書き込まれる。さらに、ブロック内のフィールドの使
用状態にあわせてフラグを立てる(図7参照)。そし
て、上述の動作を繰り返すことによって、図2に示す状
態となる。
【0020】このような状態で、確保した領域(ブロッ
ク)を解放する際には、ブロックを解放してもよいかを
確認するために、CAMの検索機能が用いられる。
【0021】図1を参照して、タイマー17からは予め
設定された時間間隔で検索トリガが出力され、この検索
トリガが検索制御マシン16に与えられる。検索制御マ
シン16は検索トリガに応答して検索用ポートを介して
CAM11を検索する。具体的には、検索制御マシン1
6は一度確保したブロックとその中のフィールドの使用
状況についてCAM11のフラグを検索してブロックの
解放を確認する。例えば、検索制御マシン16は、周期
的に(検索トリガを受ける都度)検索キーとしてVAL
ID状態フラグと使用/未使用フラグを用いて、VAL
IDでかつ全てのフィールドが未使用となっているブロ
ックを検索して、このようなブロックが存在するとその
アドレスを解放可能アドレスとして領域解放モジュール
13に与える。領域解放モジュール13では、解放可能
アドレスに応じて該当するブロックを解放する(図8に
はブロック内の全てのフィールドが未使用状態になった
状態が示されている)。
【0022】このようにして、周期的にCAMの検索機
能を用いて解放可能なブロックを確認するようにすれ
ば、非常に高速に解放可能なブロックを見つけだすこと
が可能となる。
【0023】上述の例では所定の周期で解放可能ブロッ
クの検索を行う例について説明したが、この例に限られ
ず、領域の獲得又は解放(未使用状態にもどる)の都度
に解放可能ブロックの検索を行うようにしてもよい。例
えば、上位装置(例えば、プロセッサ)が共有メモリ空
間の空き領域を監視して、空き領域が所定の容量未満と
なると上位装置から領域解放モジュールにトリガを与え
て、これによって、メモリ解放を行うようにしてもよく
(つまり、連想メモリのフラグを検索してフラグの状態
に応じて確保メモリ空間を解放するか否かを決定するよ
うにしてもよく)、また、共有メモリ空間へのアクセス
の都度メモリ解放を行うようにしてもよい(つまり、共
有メモリへのアクセスの都度連想メモリのフラグを検索
してフラグの状態に応じて確保メモリ空間を解放するか
否かを決定するようにしてもよい)。
【0024】なお、図1に示すメモリ制御回路はタスク
(プロセス)の領域の確保と独立して動作しており、図
1に示すように、領域の解放を行う回路を設けることに
よって、タスク(プロセス)に対する処理の負荷をより
軽減することができる。
【0025】次に、図9を参照して、本発明によるメモ
リプール制御回路の他の例(動作)について説明する。
図示の例では、領域確保されるブロック内のフィールド
に次の空きフィールドを指すポインタだけでなく、自分
のフィールドを指す前のフィールドのポインタが存在す
る。このポインタの書き換えは前述のポインタの書き換
えの時と同じ時に行う。各々のフィールド内に次の空き
フィールドを指すポインタと一つ前のフィールドを指す
ポインタを用いることにより、CAMの検索機能によっ
て解放可能なブロックを見つけだしたあとの実際の解放
作業を行う際にリストの探索をすることなく、簡単にポ
インタの付け替え先が決定できるので解放に要する時間
を節約できる。
【0026】図10に本発明によるメモリプール制御回
路の他の例を示す。図10に示す例では、CAM11の
代わりにレジスタ21、比較器(Comp)22、及び
エンコーダ(Encode)23が用いられている。レ
ジスタ21の構成はCAMと同一であり、レジスタ21
には該当ワードが有効か無効かを示すフラグが登録され
る。比較器22ではレジスタ21の内容に応じてブロッ
ク内の各フィールドが使用中か未使用かを示すフラグを
出力する。そして、エンコーダ23は該当ワードが示し
ているフラグに対応する実際のメモリ空間の位置を示す
ポインタを解放アドレスとして出力する。つまり、比較
器22によって、該当ワードがVALIDであるか否か
及びブロック内の全フィールドが使用中か未使用かの判
定が行われ、その判定結果をエンコーダ23に与える。
エンコーダ23では該当ワードをエンコードして解放ア
ドレスを出力する。
【0027】なお、本発明によるメモリ管理手法を階層
的に用いれば、大規模な単位でメモリプール管理が行え
るばかりでなく、より細かい単位でメモリ管理を行うこ
とができる。
【0028】
【発明の効果】以上説明したように、本発明では、CA
Mを用いて共有メモリの管理をするようにしたから、固
定長の複数フィールドをまとめて一つの単位としたブロ
ック毎に領域を確保した際、確保した領域を解放しても
よいかどうかの確認をCAMの検索機能を用いて非常に
高速に行うことができる。この結果、無駄なメモリの確
保をすることなく領域を解放して効率的にメモリ空間を
使用することができるという効果がある。
【0029】また、予め定められた単位でメモリ空間を
解放することができるので、一度に大容量のメモリ空間
が必要となったときにも対応することができ、階層的に
メモリ管理を行えるので、複数種類の単位でメモリ領域
を管理できるという効果がある。
【図面の簡単な説明】
【図1】本発明によるメモリプール制御回路の一例を説
明するためブロック図である。
【図2】図1に示すメモリプール制御回路におけるメモ
リプール管理手法を説明するための図である。
【図3】図1に示すCAMのデータフォーマットを示す
図である。
【図4】初期化の際の状態を説明するための図である。
【図5】ブロック内のフィールドの使用状態を説明する
ための図である。
【図6】ブロック内の未使用となったフィールドについ
て説明するための図である。
【図7】ブロック内のフィールドの使用状態を説明する
ための図である。
【図8】ブロック内の全てのフィールドが未使用状態と
場合を示す図である。
【図9】本発明によるメモリプール制御回路におけるメ
モリプール管理手法の他の例を説明するための図であ
る。
【図10】本発明によるメモリプール制御回路における
メモリプール管理手法のさらに他の例を説明するための
図である。
【符号の説明】
11 CAM(連想メモリ) 12 監視モジュール 13 領域解放モジュール 14 領域内アクセスモジュール 15 領域確保モジュール 16 検索制御マシン 17 タイマ 18 プロセッサ 19 メモリ

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 共有メモリの管理を行う際に用いられる
    メモリプール制御回路であって、前記共有メモリは予め
    定められた数の複数のフィールドを有するメモリ空間に
    分割されており、前記共有メモリの空き領域を管理する
    ポインタが格納されるとともに前記フィールド毎に当該
    フィールドが使用中であるか否かを示すフラグが格納さ
    れる連想メモリが備えられ、前記共有メモリへのアクセ
    スに応じて前記メモリ空間を確保メモリ空間として確保
    して前記連想メモリ内のポインタを書き替える第1の手
    段と、前記確保メモリ空間内のフィールドの使用状態に
    応じて前記連想メモリにフラグを立てる第2の手段と、
    前記連想メモリを検索して前記確保メモリ空間の全ての
    フィールドが未使用となっていると前記確保メモリ空間
    を解放する第3の手段とを有することを特徴とするメモ
    リプール制御回路。
  2. 【請求項2】 請求項1に記載されたメモリプール制御
    回路において、前記第1の手段は前記メモリ空間を確保
    する際前記連想メモリをアクセスして前記確保メモリ空
    間内の各フィールドの先頭ポインタが次のフィールドを
    示すように書き替えることを特徴とするメモリプール制
    御回路。
  3. 【請求項3】 請求項1に記載されたメモリプール制御
    回路において、前記第2の手段は前記連想メモリにフラ
    グを立てる際前記連想メモリの1ワードを有効状態とし
    て、該1ワード中のポインタフィールドに確保された前
    記メモリ空間の先頭位置のアドレスを書き込むようにし
    たことを特徴とするメモリプール制御回路。
  4. 【請求項4】 請求項3に記載されたメモリプール制御
    回路において、前記メモリ空間が未使用となると、前記
    第2の手段は空きフィールドを管理するリスト構造の先
    頭に未使用になったフィールドを挿入するようにしたこ
    とを特徴とするメモリプール制御回路。
  5. 【請求項5】 請求項4に記載されたメモリプール制御
    回路において、前記第2の手段は前記連想メモリ上の該
    当フィールドの使用未使用フラグを未使用状態にするよ
    うにしたことを特徴とするメモリプール制御回路。
  6. 【請求項6】 請求項1に記載されたメモリプール制御
    回路において、前記第3の手段は予め定められた周期で
    前記連想メモリのフラグを検索して該フラグの状態に応
    じて前記確保メモリ空間を解放するか否かを決定するよ
    うにしたことを特徴とするメモリプール制御回路。
  7. 【請求項7】 請求項1に記載されたメモリプール制御
    回路において、前記第3の手段は上位装置から与えられ
    るトリガに応じて前記連想メモリのフラグを検索して該
    フラグの状態に応じて前記確保メモリ空間を解放するか
    否かを決定するようにしたことを特徴とするメモリプー
    ル制御回路。
  8. 【請求項8】 請求項1に記載されたメモリプール制御
    回路において、前記第3の手段は前記共有メモリへのア
    クセスの都度前記連想メモリのフラグを検索して該フラ
    グの状態に応じて前記確保メモリ空間を解放するか否か
    を決定するようにしたことを特徴とするメモリプール制
    御回路。
JP00097799A 1999-01-06 1999-01-06 メモリプール制御回路 Expired - Fee Related JP3267574B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP00097799A JP3267574B2 (ja) 1999-01-06 1999-01-06 メモリプール制御回路
CA 2293938 CA2293938A1 (en) 1999-01-06 2000-01-05 Memory pool control circuit and memory pool control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP00097799A JP3267574B2 (ja) 1999-01-06 1999-01-06 メモリプール制御回路

Publications (2)

Publication Number Publication Date
JP2000200211A true JP2000200211A (ja) 2000-07-18
JP3267574B2 JP3267574B2 (ja) 2002-03-18

Family

ID=11488684

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00097799A Expired - Fee Related JP3267574B2 (ja) 1999-01-06 1999-01-06 メモリプール制御回路

Country Status (2)

Country Link
JP (1) JP3267574B2 (ja)
CA (1) CA2293938A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009133722A1 (ja) * 2008-04-30 2009-11-05 日本電気株式会社 プロセス間通信システム、その通信に用いる共有メモリおよび通信方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62118454A (ja) * 1985-11-19 1987-05-29 Nec Corp デ−タ処理装置におけるバツフアリソ−ス管理方式
JPH0392941A (ja) * 1989-09-06 1991-04-18 Hitachi Ltd 領域管理方式
JPH05189299A (ja) * 1992-01-09 1993-07-30 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62118454A (ja) * 1985-11-19 1987-05-29 Nec Corp デ−タ処理装置におけるバツフアリソ−ス管理方式
JPH0392941A (ja) * 1989-09-06 1991-04-18 Hitachi Ltd 領域管理方式
JPH05189299A (ja) * 1992-01-09 1993-07-30 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009133722A1 (ja) * 2008-04-30 2009-11-05 日本電気株式会社 プロセス間通信システム、その通信に用いる共有メモリおよび通信方法

Also Published As

Publication number Publication date
CA2293938A1 (en) 2000-07-06
JP3267574B2 (ja) 2002-03-18

Similar Documents

Publication Publication Date Title
US9086920B2 (en) Device for managing data buffers in a memory space divided into a plurality of memory elements
US20030121030A1 (en) Method for implementing dual link list structure to enable fast link-list pointer updates
CN110795028A (zh) 针对网络装置实施阶层分布式链接列表的系统及方法
US8176291B1 (en) Buffer management architecture
US6425048B1 (en) Memory pool control circuit and memory pool control method
CN113419973B (zh) 一种报文转发方法及装置
JP2005209206A (ja) マルチプロセッサシステムにおけるデータ転送方法、マルチプロセッサシステム、及び、この方法を実施するプロセッサ
JPH05282166A (ja) データ処理システムで脱落したバッファを回復する装置
JP3267574B2 (ja) メモリプール制御回路
US6832300B2 (en) Methods and apparatus for control of asynchronous cache
CN108139767B (zh) 针对网络装置实施分布式链接列表的系统及方法
CN100478916C (zh) 内存管理系统及方法
JP3453761B2 (ja) アドレス変換方式
JPH0922397A (ja) 並列計算機
JPH0329041A (ja) 分散ページング制御方式
CN117149452A (zh) 进程间通信方法、装置、计算机设备及介质
JPH1069429A (ja) バッファ割当て管理装置およびバッファ割当て管理プログラム
JP2789657B2 (ja) 通信システム
JP2898985B2 (ja) 画像処理方法
JP3013993B2 (ja) ベクトル処理方式
JPH08221317A (ja) メモリ管理方式
JP3808693B2 (ja) 主記憶管理装置
JP2558370B2 (ja) バッファ管理方式
JPH08249225A (ja) メモリ管理装置
JPH03263142A (ja) メモリ管理方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20011212

LAPS Cancellation because of no payment of annual fees