JPS6027962A - 構造体メモリ管理方式 - Google Patents
構造体メモリ管理方式Info
- Publication number
- JPS6027962A JPS6027962A JP13612683A JP13612683A JPS6027962A JP S6027962 A JPS6027962 A JP S6027962A JP 13612683 A JP13612683 A JP 13612683A JP 13612683 A JP13612683 A JP 13612683A JP S6027962 A JPS6027962 A JP S6027962A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- area
- cache
- block
- management unit
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
本発明は、プロローグの構造体の実現、ならびに、動的
メモリ管理装置の管理方式に関するものである。
メモリ管理装置の管理方式に関するものである。
近年、知的システムへの関心の高まりとともに、述語論
理型言語プロローグが注目されている。その理由の1つ
として、可変側の要素から構成される構造体を直接扱え
ることがあげられる。
理型言語プロローグが注目されている。その理由の1つ
として、可変側の要素から構成される構造体を直接扱え
ることがあげられる。
例えば、プロローグでは、かごの中に“りんご”“みか
ん”、“なし″が入っている状態を構造体温“かご”
要素数3の構造体を使って次のように表現できる。
ん”、“なし″が入っている状態を構造体温“かご”
要素数3の構造体を使って次のように表現できる。
かご(りんご、みかん、なし)
さらに、太部がこのかごを持っているという事実を、構
造体温°“持つ″、要素数2の構造体を用いて次のよう
に記述できる。
造体温°“持つ″、要素数2の構造体を用いて次のよう
に記述できる。
持つ(太部、かご(りんご、みかん、なし))プロロー
グは、このような可変側の要素を持つ構造体を用いるこ
さに、よりデータの記述を容易にしている。
グは、このような可変側の要素を持つ構造体を用いるこ
さに、よりデータの記述を容易にしている。
一方、プロローグを実行すると多数の構造体が、動的に
生成・消滅するため、構造体の領域として多量のメモリ
セルが必要となる。そこで、メモリセルの使用効率を高
めるために、一度、使用済みとなったメモリセルを回収
し、再度、構造体を格納するのに使用するカーベージコ
レクションが行なわれる。しかし、カーベージコレクシ
ョンにかが7)処理コストは大きく、全体の処理コスト
の30%から50%以上になる場合がある。
生成・消滅するため、構造体の領域として多量のメモリ
セルが必要となる。そこで、メモリセルの使用効率を高
めるために、一度、使用済みとなったメモリセルを回収
し、再度、構造体を格納するのに使用するカーベージコ
レクションが行なわれる。しかし、カーベージコレクシ
ョンにかが7)処理コストは大きく、全体の処理コスト
の30%から50%以上になる場合がある。
本発明は、このようなカーベージコレクションを高速に
処理できる構造体の管理方式を提供するものである。
処理できる構造体の管理方式を提供するものである。
構造体を実現するための良く知られた実現方式の1つは
、固定長の領域をポインタで複数個つなぐ方式である。
、固定長の領域をポインタで複数個つなぐ方式である。
以下、この方式を第1の構造体実現方式と称す。h第1
図に2進木リストセル10を用いて構造体 持つ(太部、かご(りんご、みかん、なし))を表現し
た時の概念図を示す。この方式の最大の特徴は、メモリ
セルを確保する単位が固定長となっているため、未使用
領域が連続領域になくてもよい点にある。すなわち、カ
ーベージコレクションにより使用済みメモリセルを回収
する作業は固定領域(2進木リストでは2連続のメモリ
セル)をポインタで結ぶだけでよい。しかしながら、固
定長領域をポインタで接続する方式は、構造体の要素を
アクセスする際のオーバーヘッドが大きいという欠点を
持つ。例えば、構造体のn番目の要素をアクセスするた
めにはポインタをn回辿らねばならず、メモリアクセス
ネックの要因となる。
図に2進木リストセル10を用いて構造体 持つ(太部、かご(りんご、みかん、なし))を表現し
た時の概念図を示す。この方式の最大の特徴は、メモリ
セルを確保する単位が固定長となっているため、未使用
領域が連続領域になくてもよい点にある。すなわち、カ
ーベージコレクションにより使用済みメモリセルを回収
する作業は固定領域(2進木リストでは2連続のメモリ
セル)をポインタで結ぶだけでよい。しかしながら、固
定長領域をポインタで接続する方式は、構造体の要素を
アクセスする際のオーバーヘッドが大きいという欠点を
持つ。例えば、構造体のn番目の要素をアクセスするた
めにはポインタをn回辿らねばならず、メモリアクセス
ネックの要因となる。
前記方式の欠点を解消する他の方式としては、構造体の
要素を連続領域に並べ、各要素へのアクセスをヘッダ部
からのオフセットで行なう方式が知られている(以下、
この方式を第2の構造体実現方式と称す。)。第2図は
、第2の方式による構造体 持つ(太部、かご(りんご、みかん、なし))を表現す
る概念図である。第2図において、20は構造体毛領域
、21は要素数頭域、22はカーベージコレクション時
に、その構造体が使用中又は、使用済みであることを示
すのに使用するマークピット、詔はデータ領域を表わす
。構造体毛領域20、要素数頭域21およびマークビッ
ト22の3つの領域を合わせて、以下、特にヘッダ領域
と称ず。
要素を連続領域に並べ、各要素へのアクセスをヘッダ部
からのオフセットで行なう方式が知られている(以下、
この方式を第2の構造体実現方式と称す。)。第2図は
、第2の方式による構造体 持つ(太部、かご(りんご、みかん、なし))を表現す
る概念図である。第2図において、20は構造体毛領域
、21は要素数頭域、22はカーベージコレクション時
に、その構造体が使用中又は、使用済みであることを示
すのに使用するマークピット、詔はデータ領域を表わす
。構造体毛領域20、要素数頭域21およびマークビッ
ト22の3つの領域を合わせて、以下、特にヘッダ領域
と称ず。
この方式では、構造体はヘッダ領域と構造体の各要素を
格納するデータ領域nが連続領域に割り当てられている
。したがって、構造体を要素として含むときは構造体ヘ
ッダ領域へのポインタを要素とすればよい。また、要素
へのアクセスはヘッダ領域からのオフセットを用いて高
速に行なうことができる。
格納するデータ領域nが連続領域に割り当てられている
。したがって、構造体を要素として含むときは構造体ヘ
ッダ領域へのポインタを要素とすればよい。また、要素
へのアクセスはヘッダ領域からのオフセットを用いて高
速に行なうことができる。
しかしながら、この方式では構造体は可変長の連続領域
に格納される必要があるため、カーベージコレクション
のオーバーヘッドが太きいという問題点を持つ。又、構
造体の性質上1つの構造体を複数の構造体が共有する可
能性がある。第3図(1) 、 (2)は、構造体Aと
構造体Cが構造体Bを共有している時のカーベージコレ
クションによるメモリ領域の遷移を示す概念図である。
に格納される必要があるため、カーベージコレクション
のオーバーヘッドが太きいという問題点を持つ。又、構
造体の性質上1つの構造体を複数の構造体が共有する可
能性がある。第3図(1) 、 (2)は、構造体Aと
構造体Cが構造体Bを共有している時のカーベージコレ
クションによるメモリ領域の遷移を示す概念図である。
第3図において、30はメモリ、31は使用中の構造体
領域、32は使用済みあるいは未使用の領域を示す。又
、第3図(1)はカーベージコレクションを行なう前の
メモリ状態、第3図(2)はカーベージコレクションを
行なった後のメモリ状態を表わす。
領域、32は使用済みあるいは未使用の領域を示す。又
、第3図(1)はカーベージコレクションを行なう前の
メモリ状態、第3図(2)はカーベージコレクションを
行なった後のメモリ状態を表わす。
この方式におけるカーベージコレクションは、次のよう
にして実現される。初めζこ、現在使用中の構造体に印
をつける操作を行なう。これは、次のアルゴリズムによ
って、外部処理装置が処理を行なう時に現在使用中の構
造体の情報を格納しているスタックを調べて、スタック
から直接又は、間接に参照されている構造体のマークピ
ット領域のフラグをセットすることにより実現される。
にして実現される。初めζこ、現在使用中の構造体に印
をつける操作を行なう。これは、次のアルゴリズムによ
って、外部処理装置が処理を行なう時に現在使用中の構
造体の情報を格納しているスタックを調べて、スタック
から直接又は、間接に参照されている構造体のマークピ
ット領域のフラグをセットすることにより実現される。
スタックより指される全ての構造体について、構造体の
マークピットが既にセットされていれば何もせず、セク
トされていなければ、前記構造体のマークピットをセッ
トし、前記構造体が要素としてさらに構造体を含むとき
は要素となっている全ての構造体について処理を繰り返
す。
マークピットが既にセットされていれば何もせず、セク
トされていなければ、前記構造体のマークピットをセッ
トし、前記構造体が要素としてさらに構造体を含むとき
は要素となっている全ての構造体について処理を繰り返
す。
上記アルゴリズムでマークピットがセットさね。
なかった構造体は、使用済み領域として回収できる。し
かし、固定領域を用いた前記第1の構造体実現方式のよ
うに単ζこ使用済み領域をポインタで結ぶたけでは、次
に新しい構造体の領域として連続領域を確保することが
できない。したがって、未使用領域を連続領域上に確保
するためには、第3図(1) 、 +2)に図示しであ
るように、使用中の構造体領域31をリロケートして、
使用済領域32を集める必要がある。
かし、固定領域を用いた前記第1の構造体実現方式のよ
うに単ζこ使用済み領域をポインタで結ぶたけでは、次
に新しい構造体の領域として連続領域を確保することが
できない。したがって、未使用領域を連続領域上に確保
するためには、第3図(1) 、 +2)に図示しであ
るように、使用中の構造体領域31をリロケートして、
使用済領域32を集める必要がある。
この方式の問題点は、i遺体をリロケートする際に、リ
ロケートした構造体を指すポインタを全て書き換える必
要がある点にある。
ロケートした構造体を指すポインタを全て書き換える必
要がある点にある。
本発明の目的は、上記第2の構造体表現実現方式の問題
点を解決し、要素へのアクセスが高速で、カッ、カーベ
ージコレクション時の構造体のりロケーションのオーバ
ヘッドが最小となるような構造体を実現する構造体メモ
リ管理方式を提供することにある。
点を解決し、要素へのアクセスが高速で、カッ、カーベ
ージコレクション時の構造体のりロケーションのオーバ
ヘッドが最小となるような構造体を実現する構造体メモ
リ管理方式を提供することにある。
本発明によれば、固定長のヘッダ部と可変長のデータ部
とから成る構造体を貯える大容量メモリと、前記大容量
メモリの一部を貯え、外部装置によってアクセスされる
キャッシュメモリと、前記大容量メモリの使用中領域と
未使用中領域とを識別するための情報を保持する階層化
ピットマツプと、前記大容量メモリ及び、前記キャッジ
−メモリに格納されている個々の構造体を識別するため
の番号と前記大容量メモリ上の格納番地との間の変換処
理と、前記大容量メモリに新たな構造体を格納するため
の連続領域が確保できなくなった時、前記大容量メモリ
上の構造体で使用中のものを、前記階層化ビットマツプ
の情報を使用して前記大容量メモリ中でリロケートし、
前記性たな構造体の格納領域を確保する操作を前記外部
装置が前記キャッジ−メモリを用いて処理を実行するの
と並行して行なうブロック管理ユニットと、前記キャシ
ュメモリに格納されている構造体の識別番号と前記キャ
ッシュメモリ上の格納番地間の変換と、前記キャッシュ
メモリ上に存在しない構造体を前記大容量メモリから取
ってきたり、新たに生成された構造体を前記大容量メモ
リに格納する処理を実行するキャッジ−管理ユニットと
を備え、前記ブロック管理ユニットが前記大容量メモリ
へアクセスするのと並行して、前記外部装置が前記キャ
ッジ−管理ユニットを使用して前記キャッシュメモリを
アクセスできる構造体メモリ管理方式が得られる。
とから成る構造体を貯える大容量メモリと、前記大容量
メモリの一部を貯え、外部装置によってアクセスされる
キャッシュメモリと、前記大容量メモリの使用中領域と
未使用中領域とを識別するための情報を保持する階層化
ピットマツプと、前記大容量メモリ及び、前記キャッジ
−メモリに格納されている個々の構造体を識別するため
の番号と前記大容量メモリ上の格納番地との間の変換処
理と、前記大容量メモリに新たな構造体を格納するため
の連続領域が確保できなくなった時、前記大容量メモリ
上の構造体で使用中のものを、前記階層化ビットマツプ
の情報を使用して前記大容量メモリ中でリロケートし、
前記性たな構造体の格納領域を確保する操作を前記外部
装置が前記キャッジ−メモリを用いて処理を実行するの
と並行して行なうブロック管理ユニットと、前記キャシ
ュメモリに格納されている構造体の識別番号と前記キャ
ッシュメモリ上の格納番地間の変換と、前記キャッシュ
メモリ上に存在しない構造体を前記大容量メモリから取
ってきたり、新たに生成された構造体を前記大容量メモ
リに格納する処理を実行するキャッジ−管理ユニットと
を備え、前記ブロック管理ユニットが前記大容量メモリ
へアクセスするのと並行して、前記外部装置が前記キャ
ッジ−管理ユニットを使用して前記キャッシュメモリを
アクセスできる構造体メモリ管理方式が得られる。
次に、本発明について図面を用い、詳細に説明する。
第4図は本発明の実施例の1つである構造体メモリ管理
装置のブロック図である。図において、100はブロッ
ク管理ユニットであり、101はブロック番号領域、1
02はマークピット領域、103は構造体を格納してい
るメモリ上の領域の先頭を指すポインタ領域、104は
ブロックの大きさを格納するサイズ領域である。又、1
10はキャッシュメモリを管理するキャッジ−管理ユニ
ットであり、111はキャッシュメモリ上に格納されて
いる構造体に割り付けられたブロック番号を格納するキ
ャリー用ブロック番号領域、112はキャッシュメモリ
上の未使用領域決定に用いるキャッシュ用マークピット
領域、113は構造体を格納しているキャッシュメモリ
上の領域の先頭を指すキャッジ−用ポインタ領域である
。120は構造体メモリ管理ユニットであり、121は
階層化ビットマツプである。
装置のブロック図である。図において、100はブロッ
ク管理ユニットであり、101はブロック番号領域、1
02はマークピット領域、103は構造体を格納してい
るメモリ上の領域の先頭を指すポインタ領域、104は
ブロックの大きさを格納するサイズ領域である。又、1
10はキャッシュメモリを管理するキャッジ−管理ユニ
ットであり、111はキャッシュメモリ上に格納されて
いる構造体に割り付けられたブロック番号を格納するキ
ャリー用ブロック番号領域、112はキャッシュメモリ
上の未使用領域決定に用いるキャッシュ用マークピット
領域、113は構造体を格納しているキャッシュメモリ
上の領域の先頭を指すキャッジ−用ポインタ領域である
。120は構造体メモリ管理ユニットであり、121は
階層化ビットマツプである。
さらに、130はメモリであり、140はキャッシュメ
モリである。160はプロローグを実行するのに使用す
る情報が蓄積されるスタックメモリである。
モリである。160はプロローグを実行するのに使用す
る情報が蓄積されるスタックメモリである。
構造体メモリ管理ユニッ) 120は、前記階層化ビッ
トマソプ121、ブロック管理ユニット100、キャッ
シュ管理ユ′二、/ト110の情報を使用し、て、メモ
リ130とキャッシュメモリ140を管理し、かつ、前
記スタックメモリ160に格納されている使用中の構造
体に対応したブロック番号から、現在使用中の構造体の
マーキングを指示するユニットである。170は前記キ
ャッシュメモリ140、メモリ130、スタックメモリ
160及び、図示されていない外部処理ユニットを結合
するデータバスであり、190は前記キャッシュ管理ユ
ニ、 ト110とブロック管理ユニット100、構造体
メモリ管理ユニット120、スタックメモリ160及び
、図示されていない外部処理ユニットを結合するアドレ
スバスである。又、180はメモリ130、ブロック管
理ユニット100、構造体メモリ管理ユニット120を
結合する内部バスである。190は、キャッシュメモリ
140、キャッシュ管理ユニッl−’110 、構造体
メモリ管理ユニット120を結合する内部バスである。
トマソプ121、ブロック管理ユニット100、キャッ
シュ管理ユ′二、/ト110の情報を使用し、て、メモ
リ130とキャッシュメモリ140を管理し、かつ、前
記スタックメモリ160に格納されている使用中の構造
体に対応したブロック番号から、現在使用中の構造体の
マーキングを指示するユニットである。170は前記キ
ャッシュメモリ140、メモリ130、スタックメモリ
160及び、図示されていない外部処理ユニットを結合
するデータバスであり、190は前記キャッシュ管理ユ
ニ、 ト110とブロック管理ユニット100、構造体
メモリ管理ユニット120、スタックメモリ160及び
、図示されていない外部処理ユニットを結合するアドレ
スバスである。又、180はメモリ130、ブロック管
理ユニット100、構造体メモリ管理ユニット120を
結合する内部バスである。190は、キャッシュメモリ
140、キャッシュ管理ユニッl−’110 、構造体
メモリ管理ユニット120を結合する内部バスである。
本実施例における構造体メモリ管理方式を図を参照しつ
つ説明する。第5図は本実施例における構造体メモリ管
理方式を説明する概念図である。
つ説明する。第5図は本実施例における構造体メモリ管
理方式を説明する概念図である。
なお、102のマークビット領域で、11″は使用中ブ
ロック、“0”は未使用ブロックを表わしている。
ロック、“0”は未使用ブロックを表わしている。
構造体が定義されていない状態では、ブロック管理ユニ
ット中のマークビット領域102は“0″である。
ット中のマークビット領域102は“0″である。
図示されていない外部処理ユニット(例えば、プロロー
グプロセッサ)から構造体メモリ管理ユニット120へ
、新しく構造体を作成せよという要求が出された時の構
造体メモリ管理ユニツ) 120の動作は次のようにな
る。
グプロセッサ)から構造体メモリ管理ユニット120へ
、新しく構造体を作成せよという要求が出された時の構
造体メモリ管理ユニツ) 120の動作は次のようにな
る。
例えば、構造体 かご(りんご、みかん、なし)をメモ
リ上に置く場合を考える。初めに、構造体を格納するた
めのブロックの大きさ4が、構造体メモリ管理ユニット
120へ送られ、構造体メモリ管理ユニット120は、
階層化ビットマツプ121を使用して、大きさ4以上の
未使用領域を捜す。未使用領域を捜す動作と並行して、
構造体メモリ管理ユニッ) 120は、ブロック管理ユ
ニット100へ、未使用ブロック番号を1つ確保するこ
とを要求する。
リ上に置く場合を考える。初めに、構造体を格納するた
めのブロックの大きさ4が、構造体メモリ管理ユニット
120へ送られ、構造体メモリ管理ユニット120は、
階層化ビットマツプ121を使用して、大きさ4以上の
未使用領域を捜す。未使用領域を捜す動作と並行して、
構造体メモリ管理ユニッ) 120は、ブロック管理ユ
ニット100へ、未使用ブロック番号を1つ確保するこ
とを要求する。
ブロック管理ユニット100は、新しい構造体のために
確保したブロック番号(第5図では、ブロック番号1)
を図示されていない外部処理ユニットへ通知する。その
後、サイズ領域に要求されたフロックのサイズを格納す
る。新しい構造体を格納する領域に与えられたブロック
番号とそのブロックの何番目の要素であるかを指定する
ことで、図示されていない外部処理ユニ、トはメモリ1
30上に新しい構造体を生成することができる。
確保したブロック番号(第5図では、ブロック番号1)
を図示されていない外部処理ユニットへ通知する。その
後、サイズ領域に要求されたフロックのサイズを格納す
る。新しい構造体を格納する領域に与えられたブロック
番号とそのブロックの何番目の要素であるかを指定する
ことで、図示されていない外部処理ユニ、トはメモリ1
30上に新しい構造体を生成することができる。
前記ブロック管理ユニット100が、新しい構造体を格
納する領域のために割り当てるブロック番号を決定して
いる間に、構造体メモリ管理ユニット120は階層化ビ
ットマツプ121を使用して、新しい構造体を格納でき
る未使用領域を捜し、未使用領域の先頭アドレスをフロ
ック管理ユニットiooに通知する。
納する領域のために割り当てるブロック番号を決定して
いる間に、構造体メモリ管理ユニット120は階層化ビ
ットマツプ121を使用して、新しい構造体を格納でき
る未使用領域を捜し、未使用領域の先頭アドレスをフロ
ック管理ユニットiooに通知する。
前記フロック管理ユニソl−100は新しい構造体のた
めに用意された未使用領域の先頭アドレスを、新しい構
造体を格納する領域に割り当てられたブロック番号のポ
インタ領域に格納する。構造体の値としては、構造体が
格納されている領域に割り当てられたブロック番号が返
されるので、構造体“持つ(太部、かご(りんご、みか
ん、なし))”のように構造体を要素として含む構造体
は、第5図に図示したように、構造体の要素を格納する
位置に、要素となる構造′体のブロック番号を格納する
ことになる。
めに用意された未使用領域の先頭アドレスを、新しい構
造体を格納する領域に割り当てられたブロック番号のポ
インタ領域に格納する。構造体の値としては、構造体が
格納されている領域に割り当てられたブロック番号が返
されるので、構造体“持つ(太部、かご(りんご、みか
ん、なし))”のように構造体を要素として含む構造体
は、第5図に図示したように、構造体の要素を格納する
位置に、要素となる構造′体のブロック番号を格納する
ことになる。
@5図は、さらに構造体
持つ(花子、かご(りんご、みかん、なし))が構造体
かご(りんご、みかん、なし)
を共有している状態を示す。
新しい構造体が次々と生成されていくと、構造体メモリ
管理装置120が、新しい構造体を格納できる大きさの
未使用領域を確保できない状態が先生し、ガーベージコ
レクション処理を開始する。
管理装置120が、新しい構造体を格納できる大きさの
未使用領域を確保できない状態が先生し、ガーベージコ
レクション処理を開始する。
ガーベージコレクションが開始されると、はじめにマー
クビット102の値を全て“0”をこセットする。同時
に、構造体メモリ管理ユニット120上の階層化ヒツト
マツプ121の値も“0”にする。次にスタックメモリ
160におかれている構造体を格納している領域の各ブ
ロック番号に対して、次のアルゴリズムに従って使用中
ブロックのマーキンクを行なう。
クビット102の値を全て“0”をこセットする。同時
に、構造体メモリ管理ユニット120上の階層化ヒツト
マツプ121の値も“0”にする。次にスタックメモリ
160におかれている構造体を格納している領域の各ブ
ロック番号に対して、次のアルゴリズムに従って使用中
ブロックのマーキンクを行なう。
(1)マークビット102を“1”にセリトンた後、ポ
インタ領域103が指すアドレスの次のアドレスから、
構造体の要素数だけザーチし、ブロック番号を値とする
要素に対して、(2)の操作を行なう。こノ時、ポイン
タ領域103におかれているアドレスから、サイズ領域
104に格納されている大きさだけの連続領域は使用中
であることを階層化ビットマツプ121にセットしてや
る。マークピッ)・102のセットと、階層化ビットマ
ツプ121のセットは、夫々ブロック管理ユニッ) 1
00と構造体メモリ管理ユニット120により並行して
行なわ才lる。
インタ領域103が指すアドレスの次のアドレスから、
構造体の要素数だけザーチし、ブロック番号を値とする
要素に対して、(2)の操作を行なう。こノ時、ポイン
タ領域103におかれているアドレスから、サイズ領域
104に格納されている大きさだけの連続領域は使用中
であることを階層化ビットマツプ121にセットしてや
る。マークピッ)・102のセットと、階層化ビットマ
ツプ121のセットは、夫々ブロック管理ユニッ) 1
00と構造体メモリ管理ユニット120により並行して
行なわ才lる。
(2)対応するブロックのマークピッI−,102の値
が“I IIなら、スタックメモリ160上の次のブロ
ック番号に対して、(1)の処理を行なう。マークピッ
ト102の値が“O”ならば、そのブロックに対して(
1)の処理を行なう。
が“I IIなら、スタックメモリ160上の次のブロ
ック番号に対して、(1)の処理を行なう。マークピッ
ト102の値が“O”ならば、そのブロックに対して(
1)の処理を行なう。
この結果、ブロック9mユニット100上ζこは、現在
使用中のブロック番号のマークピッi・領域102のみ
に、41″′がセットさnている。さらに、構造体メモ
リ管理ユニット120上の階層化ビットマツプ121上
には、メモリ130における1吏用中領域と未使用領域
の情報がセットされている。
使用中のブロック番号のマークピッi・領域102のみ
に、41″′がセットさnている。さらに、構造体メモ
リ管理ユニット120上の階層化ビットマツプ121上
には、メモリ130における1吏用中領域と未使用領域
の情報がセットされている。
次に階層化ビットマツプ121の使用中領域の情報を使
用して、使用中領域のりロケーションを行なう。この時
、使用中領域のりロケーションはブロック単位で行なっ
ていく。使用中領域のりロケーションと並行して、ブロ
ック管理ユニット100のポインタ領域103が更新さ
れる。例えば、第5図のメモリ状態でのりロケーション
処理でブロック3がリロケートされた状態が第6図であ
る。ブロック単位に使用中領域をリロケートしていくと
、リロケーションが進むにつれて、使用済領域の大きさ
が増していく。使用済領域の大きさが、ガーベージコレ
クションの原因となった新しく生成される構造体を格納
するに充分な大きさになった時点で、その使用済領域を
新しい構造体に割り当てられたブロック番号の領域とし
て登録し、外部処理ユニットに処理再開の許可を与える
。
用して、使用中領域のりロケーションを行なう。この時
、使用中領域のりロケーションはブロック単位で行なっ
ていく。使用中領域のりロケーションと並行して、ブロ
ック管理ユニット100のポインタ領域103が更新さ
れる。例えば、第5図のメモリ状態でのりロケーション
処理でブロック3がリロケートされた状態が第6図であ
る。ブロック単位に使用中領域をリロケートしていくと
、リロケーションが進むにつれて、使用済領域の大きさ
が増していく。使用済領域の大きさが、ガーベージコレ
クションの原因となった新しく生成される構造体を格納
するに充分な大きさになった時点で、その使用済領域を
新しい構造体に割り当てられたブロック番号の領域とし
て登録し、外部処理ユニットに処理再開の許可を与える
。
外部処理ユニットは、新しい構造体の生成が終了すると
、キャッシュメモリ140を使用して処理を再開する。
、キャッシュメモリ140を使用して処理を再開する。
構造体メモリ管理ユニット120は外部処理ユニットが
新しい構造体の生成を終了し、キャッシュメモリ140
を使用して処理を再開したのを確認すると、中断してい
たりロケーション処理を再開する。
新しい構造体の生成を終了し、キャッシュメモリ140
を使用して処理を再開したのを確認すると、中断してい
たりロケーション処理を再開する。
次に、新しい構造体を格納する領域を捜したり、リロケ
ーション処理で使用中領域の情報を提供する階層化ビッ
トマツプ121について説明する。
ーション処理で使用中領域の情報を提供する階層化ビッ
トマツプ121について説明する。
第7図は、ビットマツプ300を用いてメモリ310の
使用領域情報を管理する実施例の概念図である。第7図
ではビットマツプ300上の1ビツトをメモリ310上
の2セルに対応させており、ビットマツプ300上のビ
ットを調べることで対応するメモリ310上の2セルが
、使用中であるが、又は未使用であるかの情報を得るこ
とができるようになりている。
使用領域情報を管理する実施例の概念図である。第7図
ではビットマツプ300上の1ビツトをメモリ310上
の2セルに対応させており、ビットマツプ300上のビ
ットを調べることで対応するメモリ310上の2セルが
、使用中であるが、又は未使用であるかの情報を得るこ
とができるようになりている。
第7図では、ビットマツプ300のビットの値が“0”
の時は、対応するメモリ310上の2セルが未使用領域
であることを表わし、ビットの値が“1″の時は、対応
するメモリ310上の2セルは使用中領域であることを
表わす。
の時は、対応するメモリ310上の2セルが未使用領域
であることを表わし、ビットの値が“1″の時は、対応
するメモリ310上の2セルは使用中領域であることを
表わす。
従って、未使用領域の割り付けを要求された時は、要求
された大きさの領域に相当する長さだけ連続して“O′
であるビット列を、ビットマツプ300上で捜し、その
先頭アドレスを出力してやる。
された大きさの領域に相当する長さだけ連続して“O′
であるビット列を、ビットマツプ300上で捜し、その
先頭アドレスを出力してやる。
要求された大きさの領域に相当する長さだけ連続して“
O”であるビット列が、ビットマツプ300上に存在し
ない時は、ガーベージコレクション処理を要求する。
O”であるビット列が、ビットマツプ300上に存在し
ない時は、ガーベージコレクション処理を要求する。
本構造体メモリ管理方式で使用されている階層化ビット
マツプは、第7図のビットマツプ3ooを用いて未使用
領域を捜す処理を高速化するために、複数のビットマツ
プを階層化して、上方に位置するビットマツプの1ビツ
トが、下方に位置するビットマツプの連続する数ビット
の状態に関する情報を持つようにして、大きな使用領域
の存在によるビットマツプのアクセス回数増加を抑える
ことを実現している。
マツプは、第7図のビットマツプ3ooを用いて未使用
領域を捜す処理を高速化するために、複数のビットマツ
プを階層化して、上方に位置するビットマツプの1ビツ
トが、下方に位置するビットマツプの連続する数ビット
の状態に関する情報を持つようにして、大きな使用領域
の存在によるビットマツプのアクセス回数増加を抑える
ことを実現している。
第8図は、階層化ビットマツプの実施例の概念図である
。410.420.430.440は、各々ビットマ。
。410.420.430.440は、各々ビットマ。
プであり、450はメモリである。ビットマツプ410
上の1ビツトはビットマツプ420上の4ビツトの状態
に対する情報を持っており、ビットの値の意味は次のよ
うになっている。
上の1ビツトはビットマツプ420上の4ビツトの状態
に対する情報を持っており、ビットの値の意味は次のよ
うになっている。
ti> ビットマツプ440上のビットは値が“0”の
時は、対応するメモIJ 450上の2セルが未使用で
あることを表わし、 値が“1”の時は、対応するメモIJ 450上の2セ
ルが使用中であることを表わす。
時は、対応するメモIJ 450上の2セルが未使用で
あることを表わし、 値が“1”の時は、対応するメモIJ 450上の2セ
ルが使用中であることを表わす。
(2)ビットマツプ410,420,430上のビット
は、値が“1”の時は、対応する一段下方のビットマツ
プ上の連続した4ビツトの値が全て“1″であることを
表わす。
は、値が“1”の時は、対応する一段下方のビットマツ
プ上の連続した4ビツトの値が全て“1″であることを
表わす。
値カ“0”の時は、対応する下方のビットマツプ上の連
続した4ビツトの値の内、少なくきも1っは“0”であ
ることを示す。
続した4ビツトの値の内、少なくきも1っは“0”であ
ることを示す。
階層化ビットマツプを用いて、未使用領域を捜す方式は
、次のアルゴリズムに従う。
、次のアルゴリズムに従う。
(1)最上方のビットマツプ410を使って、値が“0
″であるビットを捜す。この時、メモリ450の第0番
地(第8図最右端)を担当するビット411から調べる
。これは、ガーベージコレクション処理の時に行なわわ
るリロケーションにより、メモリ450の第0番地側に
、常に使用される構造体が格納される可能性が高くなる
ためである。値が“θ″であるビットを見つけたら、処
理(2)へ移る。
″であるビットを捜す。この時、メモリ450の第0番
地(第8図最右端)を担当するビット411から調べる
。これは、ガーベージコレクション処理の時に行なわわ
るリロケーションにより、メモリ450の第0番地側に
、常に使用される構造体が格納される可能性が高くなる
ためである。値が“θ″であるビットを見つけたら、処
理(2)へ移る。
(2)上方のビットマツプから送られてきた、値が“0
”の上方のビットマツプ上のビットの位置から、そのビ
ットに対応する連続した4ビツトを訓べる。
”の上方のビットマツプ上のビットの位置から、そのビ
ットに対応する連続した4ビツトを訓べる。
要求された未使用領域の大きさが、現在調べているビッ
トマツプ上のビットに対応するメモリ450上の領域の
大きさより大きい時は、処理(3)を行なう。値が“0
″のビットを捜し、下方のビットマツプに対し、処理(
2)を行なう。
トマツプ上のビットに対応するメモリ450上の領域の
大きさより大きい時は、処理(3)を行なう。値が“0
″のビットを捜し、下方のビットマツプに対し、処理(
2)を行なう。
(3)要求された未使用領域の大きさに相当する、値が
全て“0″のビット列を捜し、そのビット列の先頭ビッ
トの位置をめ、下方のビットマツプに対し処理(2)を
行なう。但し、現在調べているビットマツプがビットマ
ツプ440の時は、見つかったビット列の先頭ビット位
置からメモIJ 450上の未使用領域の先頭アドレス
をめ出力する。
全て“0″のビット列を捜し、そのビット列の先頭ビッ
トの位置をめ、下方のビットマツプに対し処理(2)を
行なう。但し、現在調べているビットマツプがビットマ
ツプ440の時は、見つかったビット列の先頭ビット位
置からメモIJ 450上の未使用領域の先頭アドレス
をめ出力する。
本構造体メモリ管理方式により、プロローグの実行時に
行なわれる多数の構造体の動的生成・消滅操作の結果生
じる一度使用済みとなったメモリセルを回収するガーベ
ージコレクション処理ヲ外部装置の負荷から切り離し、
構造体メモリを使用している外部装置からみたガーベー
ジコレクション処理時間を短縮することができる。
行なわれる多数の構造体の動的生成・消滅操作の結果生
じる一度使用済みとなったメモリセルを回収するガーベ
ージコレクション処理ヲ外部装置の負荷から切り離し、
構造体メモリを使用している外部装置からみたガーベー
ジコレクション処理時間を短縮することができる。
第1図は、構造体を固定領域を使って実現した時の一例
を示す概念図、第2図は、構造体を可変現した時のガー
ベージコレクションの一例を示す概念図、第4図は、本
発明の一実施例である構造体メモリ管理装置のブロック
図である。また、第5図、第6図は、本発明のガーベー
ジコレクション方式を説明する概念図であり、第7図、
第8図、4話鉢跡は、本発明の階層化ビットマツプを説
明する概念図である。 図において、lOは2進木リストセル、20は構造体毛
領域、21は要素数領域、22はマークビット、詔はデ
ータ領域、30はメモリ、31は使用中の構造体領域、
32は使用済み領域、iooはブロック管理ユニッ+−
,ioiはブロック番号領域、102はマークビット領
域、103はポインタ領域、104はサイズ領域、11
0はキャッジ−管理メモリ、111はキャッシュ用ブロ
ック番号領域、112はキャッシュ用マークビット領域
、113はキャッシュ用ポインタ領域、120は構造体
メモリ管理ユニット、121は階層化ビットマツプ、1
30はメモリ、140はキャッシュメモリ、160はス
タックメモリ、170はデータバス、180は内部バス
、190はアドレスバス、131は使用中領域、132
,134は使用済領域、300.410,420,43
0,440はビットマツプ、310.450はメモリで
あり、411はビットマツプ410の1ビツトを表わし
ている。 第1図 n 第 2 図 第3図 (+) (2) 躬4図 第5図 第6図 第7図 300 第 8 図 手続補正書軸発) 59、10122 昭和 年 月 日 1、 iJl’l、の表示 昭和58年 特詐 願第1
36126号2、発明の名称 構造体メモリ管理方式3
、補正をする者 事件との関係 出 願 人 東京都港区芝IL丁「」33番1号 4、代理人 5、補正の対象 明細書の発明の詳細な説明の欄 図面 6、補正の内容 1)明細書第11頁第16行目に「190は、」とある
のを「200は、」と補正する。 2)本願添付図面の第4図を別紙図面のように補正する
。 代理人 弁理士 内 原 ヨ
を示す概念図、第2図は、構造体を可変現した時のガー
ベージコレクションの一例を示す概念図、第4図は、本
発明の一実施例である構造体メモリ管理装置のブロック
図である。また、第5図、第6図は、本発明のガーベー
ジコレクション方式を説明する概念図であり、第7図、
第8図、4話鉢跡は、本発明の階層化ビットマツプを説
明する概念図である。 図において、lOは2進木リストセル、20は構造体毛
領域、21は要素数領域、22はマークビット、詔はデ
ータ領域、30はメモリ、31は使用中の構造体領域、
32は使用済み領域、iooはブロック管理ユニッ+−
,ioiはブロック番号領域、102はマークビット領
域、103はポインタ領域、104はサイズ領域、11
0はキャッジ−管理メモリ、111はキャッシュ用ブロ
ック番号領域、112はキャッシュ用マークビット領域
、113はキャッシュ用ポインタ領域、120は構造体
メモリ管理ユニット、121は階層化ビットマツプ、1
30はメモリ、140はキャッシュメモリ、160はス
タックメモリ、170はデータバス、180は内部バス
、190はアドレスバス、131は使用中領域、132
,134は使用済領域、300.410,420,43
0,440はビットマツプ、310.450はメモリで
あり、411はビットマツプ410の1ビツトを表わし
ている。 第1図 n 第 2 図 第3図 (+) (2) 躬4図 第5図 第6図 第7図 300 第 8 図 手続補正書軸発) 59、10122 昭和 年 月 日 1、 iJl’l、の表示 昭和58年 特詐 願第1
36126号2、発明の名称 構造体メモリ管理方式3
、補正をする者 事件との関係 出 願 人 東京都港区芝IL丁「」33番1号 4、代理人 5、補正の対象 明細書の発明の詳細な説明の欄 図面 6、補正の内容 1)明細書第11頁第16行目に「190は、」とある
のを「200は、」と補正する。 2)本願添付図面の第4図を別紙図面のように補正する
。 代理人 弁理士 内 原 ヨ
Claims (1)
- 固定長のヘッダ部と可変長のデータ部とから成る構造体
を貯える大容量メモリと、前記大容量メモリの一部を貯
え、外部装置によってアクセスされるキャッシュメモリ
と、前記大容量メモリの使用中領域と未使用中領域とを
識別するための情報を保持する階層化ビットマツプと、
前記大容量メモリ及び、前記キャッシュメモリに格納さ
れている個々の構造体を識別するための番号と前記大容
量メモリ上の格納番地との間の変換処理と、前記大容量
メモリに新たな構造体を格納するための連続領域が確保
できなくなった時、前記大容量メモリ上の構造体で使用
中のものを、前記階層化ビットマツプの情報を使用して
前記大容量メモリ中でリロケートし、前記新たな構造体
の格納領域を確保する操作を前記外部装置が前記キャッ
ジ−メモリを用いて処理を実行するのと並行して行なう
ブロック管理ユニットと、前記キャッジ−メモリに格納
されている構造体の識別番号と前記キャッシュメモリ上
の格納番地間の変換と、前記キャッシュメモリ上に存在
しない構造体を前記大容量メモリから取ってきたり、新
たに生成された構造体を前記大容量メモリに格納する処
理を実行するキャッジ−管理ユニットとを備え、前記ブ
ロック管理ユニットが前記大容量メモリへアクセスする
のと並行して、前記外部装置が前記キャッシュ管理ユニ
ットを使用して前記キャッシュメモリをアクセスできる
ことを特徴とする構造体メモリ管理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP13612683A JPS6027962A (ja) | 1983-07-26 | 1983-07-26 | 構造体メモリ管理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP13612683A JPS6027962A (ja) | 1983-07-26 | 1983-07-26 | 構造体メモリ管理方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPS6027962A true JPS6027962A (ja) | 1985-02-13 |
Family
ID=15167909
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP13612683A Pending JPS6027962A (ja) | 1983-07-26 | 1983-07-26 | 構造体メモリ管理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS6027962A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS61105653A (ja) * | 1984-07-31 | 1986-05-23 | テキサス インスツルメンツ インコ−ポレイテツド | 接続されたユ−ザのプロセツサとは独立の並列ガ−ベツジコレクシヨン機能を有するコンピユ−タ記憶装置 |
-
1983
- 1983-07-26 JP JP13612683A patent/JPS6027962A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS61105653A (ja) * | 1984-07-31 | 1986-05-23 | テキサス インスツルメンツ インコ−ポレイテツド | 接続されたユ−ザのプロセツサとは独立の並列ガ−ベツジコレクシヨン機能を有するコンピユ−タ記憶装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0127753B1 (en) | Method for executing a distribution sort | |
| EP2817741B1 (en) | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory | |
| US4758946A (en) | Page mapping system | |
| US9740706B2 (en) | Management of intermediate data spills during the shuffle phase of a map-reduce job | |
| AU2010265984C1 (en) | Scalable indexing in a non-uniform access memory | |
| US6401181B1 (en) | Dynamic allocation of physical memory space | |
| US20080243966A1 (en) | System and method for managing temporary storage space of a database management system | |
| CN111984425B (zh) | 用于操作系统的内存管理方法、装置及设备 | |
| US11061676B2 (en) | Scatter gather using key-value store | |
| JPS63116232A (ja) | 階層構造のファイルシステムおよびそれを構成する方法 | |
| CN113609310B (zh) | 单机大规模知识图谱嵌入系统及方法 | |
| JPH06105435B2 (ja) | 情報処理装置による記憶管理機構 | |
| JPS6027962A (ja) | 構造体メモリ管理方式 | |
| CN106293510A (zh) | 一种面向多虚拟存储系统的数据共享方法及系统 | |
| Cockshott | Addressing mechanisms and persistent programming | |
| JP3875358B2 (ja) | 記憶装置、記憶方法および記録媒体 | |
| Lv et al. | RotaryDS: fast storage for massive data streams via a rotation storage model | |
| Cheng et al. | Design and Implementation of Dynamic Memory Allocation Algorithm in Embedded Real-Time System | |
| JPS59158459A (ja) | 構造体メモリ回収方式 | |
| JP2001022640A (ja) | メモリ管理方法 | |
| CN118860669B (zh) | 一种内存分配方法、产品、设备及存储介质 | |
| JPS6084647A (ja) | 構造体メモリ管理装置 | |
| JPS61184651A (ja) | 記憶領域管理方式 | |
| JP3570050B2 (ja) | ファイルサーバ | |
| JPH01191229A (ja) | ファイル制御方式 |