JP2564483B2 - 接続されたユ−ザのプロセツサとは独立の並列ガ−ベツジコレクシヨン機能を有するコンピユ−タ記憶装置 - Google Patents

接続されたユ−ザのプロセツサとは独立の並列ガ−ベツジコレクシヨン機能を有するコンピユ−タ記憶装置

Info

Publication number
JP2564483B2
JP2564483B2 JP60167863A JP16786385A JP2564483B2 JP 2564483 B2 JP2564483 B2 JP 2564483B2 JP 60167863 A JP60167863 A JP 60167863A JP 16786385 A JP16786385 A JP 16786385A JP 2564483 B2 JP2564483 B2 JP 2564483B2
Authority
JP
Japan
Prior art keywords
block
memory
pointer
register
space
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 - Lifetime
Application number
JP60167863A
Other languages
English (en)
Other versions
JPS61105653A (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.)
Texas Instruments Inc
Original Assignee
Texas Instruments 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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JPS61105653A publication Critical patent/JPS61105653A/ja
Application granted granted Critical
Publication of JP2564483B2 publication Critical patent/JP2564483B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、記憶装置における改良に関わり、特に結合
されるユーザのプロセツサに関係なく、一般的に言つて
自動記憶動作そして特にはガーベツジ コレクシヨンお
よび参照計数を可能にする型の記憶装置における改良に
関する。
従来技術 記憶装置管理システムの開発は、多くの関連の研究分
野と共に長い歴史を有している。ここ数年の間、メモリ
構造の割当ておよび割当解除に対して非常に大きな関心
が寄せられている。これに関連の多くの記憶装置の構造
が、マサチユセツツ州所在のAddison−Wesley社発行の
H.M.Deitel著の「An Introduction to Operating Syste
me」(1982年)、第7章に示されている。他の主要な事
項は同上社1968年発行のD.Knuth著の「The Art of Comp
uter Programming」の第1巻の「Fundamental Algorith
ms」に論述されている。
ここに開示する本発明は、主として、ガーベツジ コ
レクシヨン(不要情報の整理)が行なわれる重ね管理メ
モリに関する。ここで重ね管理もしくはヒープ管理(He
ap Manage)とは考察下の記憶装置の1時的秩序または
大きさに関係なく、(明確にまたは含蓄的に)メモリに
割当を行なつたり割当を解除することを意味する。ま
た、ガーベツジ コレクシヨンメモリとは、使用可能な
メモリを自動的に回収して、それにより、必要に応じメ
モリの空間を有効に利用するために、次から次へとメモ
リを再構成することができるメモリである。このような
ガーベツジ コレクシヨン技術の背景ならびに関連の背
景資料に関しては、1981年9月発行の「Computing Surv
eis」Vol.13,No.3,頁341−367に掲載のCohen J,著の「G
arbage Collection of Linked Data Structures」が挙
げられ、また1977年9月発行の「Massachusetts Instit
ute of Technology,Working Paper 111」掲載のP.Bisho
p著の「Garbage Collection in a Very Large Address
Space」にも開示してある。
人工知能の急速な発展と共に関心がもたれているの
は、例えば動的組織化を必要とする極めて大きく複雑な
情報を記憶保有するのに使用されるような謂ゆる「知識
ベース」と称される大型のデータ ベースの開発であ
る。例えば、「Preliminary Report on Fifth Generati
on Computer Systems,ICOT」に所蔵のSuwa,M.他の「Kno
wledge Base Mechanism」を参照されたい。このような
考究されているあるいは実施されている大型データベー
スの例には、逐語的事件報告のような法律情報、特定の
徴候を示す病気の診断に用いられる医学的情報、アブス
トラクト、請求範囲等等を含む或る種の特許情報を格納
しているデータベースがある。このようなデータ ベー
スにおいては、時として100万の単語や文字を探索し
て、特定の記録(事件、特許、診断等々)を識別するこ
とがしばしば望まれる。
現在、このような重ね割当てデータベース(Lisp指示
ガーベツジ コレクシヨン データベースをも含む)を
実現するのに、Lispのような特定の計算機言語ならびに
それよりも使用頻度は小さいがPascalおよびAdaが用い
られている。メモリの割当、割当解除、ガーベツジ コ
レクシヨン(不要情報整理もしくはちり集め)およびコ
ンパクシヨン(凝縮)が行なわれる伝統的なアーキテク
チヤにおいては、通常用いられている言語実行時間支援
およびコンパイラが、ガーベツジ コレクシヨンおよび
コンパクシヨンを司り、そして仮想記憶装置が設けられ
ている場合には、該仮想記憶装置の管理を司るのはハー
ドウエアおよびオペレーチング システムである。典型
的に、オペレーチング システムにおいては、例えば、
通常、支援ストレツジに対しページをどの様に変位する
かを決定するのに、或る種の要求ページの最近最小使用
(RLU)スキーマならびに、どのページが必要とされ、
どのページが最早や必要とされないかを特定するための
ガーベツジ コレクタが用いられている。
プログラマがしばしば出会う重要な問題の1つに、用
いられる特定のメモリの速度に直接関係がある個々のワ
ードに対するアクセス速度がる。また記憶装置が後入れ
先出し(LiFo)で割当てられなかつたり、また一定の大
きさでない場合には、割当ての速度が困難な問題となつ
ている。また、メモリのブロツクが利用可能になる時点
(これはプログラムの及ぶところではない)と、仮想記
憶空間のレデイー大きさが得られる時点との間の時間遅
延がしばしば問題となる。と言うのは、ガーベツジ コ
レクシヨンの費用は、回収されるガーベツジ量ではなく
収集が行なわれるスペースの大きさと共に増大するから
である。最後に安全性が重要な問題である。と言うの
は、通常プログラムは、プログラムまたはメモリの設計
において故意かあるいは過失で、記憶装置の実際の構造
を無視したりデータ ブロツクの書過ぎ(overwrite)
や完全な抹消が容易に起り得るからである。
本発明を用いることができる典型的な記憶装置として
は、例えば1984年6月12日付けのOxley他の米国特許願
(発明の名称:COMPUTER MEMORY SYSTEM)ならびに1984
年6月12日付けのThatle他の米国特許願(発明の名称:C
OMPUTER SYSTEM ENABLING AUTOMATIC MEMORY OPERATION
S)各明細書に見ることができる。なお、これら米国特
許願は双方共に本出願人に譲渡されているものであり、
その内容は、参考のために本明細書に援用してある。
上記両米国特許願に記述されている型の典型的な記憶
装置ならびに関連のユーザ(使用者)のプロセツサの動
作において、ユーザのプロセツサは、必要に応じ、記憶
空間の割当てを要求する。このメモリの割当は仮想アド
レス空間で行なわれることが多い。割当てはしばしば仮
想アドレス空間の始めから終りまでのスペースを割当て
ることにより達成されている。仮想アドレス空間が完全
に割当てられてしまうと、その次に起る空間割当て要求
は、既に割当てられている仮想アドレス空間における再
使用可能なスペースが識別され回収されるまでは拒絶し
なければならない。
従来、割当てられた仮想アドレス空間を回収するため
にユーザのCPUによつて行なわれている処理を中断して
ガーベツジ コレクシヨン アルゴリズムをCPUで実行
することにより、ガーベツジ コレクシヨン(不要情報
整理またはちり集めとも称される)を行なつている。し
かしながら、メモリが大きくなるにつれて、ガーベツジ
コレクシヨン処理には益々時間がかかり、その間主プ
ロセスルーチンは実行できない。
この問題に鑑み、「並列」または「同時」ガーベツジ
コレクシヨンが提案されている。しかしながらこれ
は、現在まで本出願人の知る限り、真の意味での並列ガ
ーベツジ コレクシヨン処理は実際には達成されていな
い。なお、並列ガーベツジ コレクシヨン処理と関連し
て、従来多様に用いられている幾つかの術語について明
確な定義付けが必要であろう。本明細書においては「並
列」ガーベツジ コレクシヨン処理とは、ユーザのプロ
セツサから完全に独立して、しかもユーザのプロセツサ
の動作と同時に行われるガーベツジ コレクシヨン処理
を表わす。従来においては、ガーベツジ コレクシヨン
処理と関連して用いられる術語「並列」は「同時」の意
味を含んでいた。
術語「同時」処理は、ユーザのCPU動作とインターリ
ーブもしくは時分割的に行なわれるガーベツジ コレク
シヨン処理を意味するのに用いられる。同時ガーベツジ
コレクシヨンは、例えば、時分割アクセスおよび処理
動作を含み、そしてガーベツジ コレクシヨン ルーチ
ンおよび通常の動作ルーチンで交互に動作する単一のプ
ロセツサにより行なわれるガーベツジ コレクシヨン処
理を含む。
「Communications of the ACM」,Vol.27,No.11(1978
年11月)頁966−977に掲載のE.W.Dijkstra他の「On−th
e−Fly Garbage Collection:An Exercise in Cooperati
on」にはユーザのプロセツサ(または「ミユーテイタ:m
utator」)の動作と少なくとも同時にガーベツジ コレ
クシヨンを行なう第2のプロセツサを使用することが提
案されている。また、「Communications of the acm」,
Vol.18,No.9(1975年9月),頁495−508に掲載のG.L.S
teeleの論文「Multiprocessing compacting garbage co
llection」には別のガーベツジ コレクシヨン方法が示
唆されている。
Dijkstraの方法によれば、割当てられたブロツクは、ユ
ーザのプログラムの使用に依存し、黒、灰色または白で
マークされる。また、Steeleの方法では、セルをマーク
するのにセマフオが用いられている。しかしながら、両
方法とも、少なくとも用いたセルのマーキングならびに
ガーベツジコレクシヨン用プロセツサとの時間的に同時
の動作においては、ユーザのプロセツサの関与が要求さ
れる。
さらに、従来用いられている別の方法として、メモリ
内の各ブロツクまたはセルに該ブロツクまたはセルがポ
インタあるいは参照の対象になつているかどうかの指示
を与える参照カウンタが設けられている。その基礎とな
る認識は、ブロツクあるいはセルに対して参照が行なわ
れない場合には、該ブロツクまたはセルはメモリ内で到
達不可能であり、したがつてガーベツジ(不要情報)と
なり、したがつて収集しスペースを回収することができ
ると言う点である。
先に掲げたP.B.Bishopの論文には、アドレス空間が区
分されている領域にガーベツジ コレクシヨンを行なう
ことにより、仮想アドレス空間全体よりも小さな空間で
ガーベツジ コレクシヨンを行なうことができる旨の示
唆がある。各領域は、領域に向けられたポインタのリス
トを維持しているので、ガーベツジ コレクシヨンが行
なわれつつある領域内のセルあるいはブロツクに対する
参照の存否を判定する上でアドレス空間全体を探索する
必要はないからである。
発明の目的および構成 上述の背景技術に鑑み本発明の目的は、結合されるユ
ーザのプロセツサとは独立して自動メモリ動作を可能に
するガーベツジ コレクシヨンが行なわれる記憶装置を
提供することにある。
本発明の他の目的は、ユーザのCPUおよび記憶域管理
装置もしくはMMUの責任が分かれておつて、CPUはポイン
タの管理の責に当らず、MMUはメモリ内でデータを自由
に動かす能力を有し、そしてCPUおよびMMUが双方共に、
別別に独立してしかも同時に動作することができる上述
の型のガーベツジ コレクシヨンが行なわれる記憶装置
を提供することにある。
本発明のさらに他の目的は、特定のCPU言語での実
効、特定のオペレーチングシステムおよびCPUマイクロ
コードに束縛されない上述の型のガーベツジ コレクシ
ヨンが行なわれる記憶装置を提供することにある。
CPUおよびMMUが上述のように、動作において分離する
ことを可能にするためにメモリのブロツクが情報および
識別タグ(標識)を持ち、そして記憶装置のガーベツジ
コレクシヨンは厳密にMMUによつて管理される上述の
型の記憶域管理装置を提供することにある。
本発明のさらに他の目的は、記憶装置内のガーベツジ
コレクシヨン(不要情報整理)がユーザのプロセツサ
の動作と並列に行なわれ、そしてポインタ参照計数なら
びにガーベツジ コレクシヨン アルゴリズムが用いら
れる上述の型の記憶装置を提供することにある。
上に述べた目的ならびに他の目的、特徴および利点
は、添付図面を参照しての以下の説明から当業者には明
らかとなろう。本発明の広い様相に従えば、ユーザのCP
Uからの条件、EQUまたは命令に応答してメモリブロツク
を割当て、それによりユーザのCPUが、割当てられたメ
モリブロツクに関し、EQU、読取り、書込みおよび命令
の移動を実行することができ、さらにユーザのプロセツ
サとは独立にそれと並行にガーベツジ コレクシヨンを
行なうことができることを特徴とする。記憶装置の動作
は、ユーザのCPUを記憶装置に接続し、記憶装置をして
ユーザのCPUに対しブロツク構成のメモリとして扱うこ
とを可能に、しかもMMUをして、ユーザのCPUから独立し
且つ実質的に不透過に、ガーベツジ コレクシヨン処理
を含むメモリのオーバヘツド機能を制御することを可能
にする結合もしくは連結レジスタの使用を基礎とするも
のである。
以下図面を参照し、本発明の実施例に関し説明する、
全図面を通して同じ参照数字は同じもしくは類似の部分
を指すのに用いられている。
実施例 第1図に示すように、本発明の記憶装置10は、使用者
もしくはユーザのCPU20と接続される記憶域管理装置11
と物理的メモリ12を備えている。追つて明らかとなるよ
うに、従来のメモリ動作とは異なり、ユーザのCPU20な
らびにここに開示した改良記憶域管理装置(MMU)11の
動作上の負担は互いに別々である。即ち、CPU20はポイ
ンタ管理負担を有さず、MMU11はメモリ内で自由にデー
タを動かすことができる。さらに、CPU20は、偶然的に
もあるいは故意に記憶装置もしくはメモリの情報構造を
破壊したり変えたりすることはできない。このことはメ
モリの組織的完全性を維持するのに必要なことである。
追つて明らかなように、使用者もしくはユーザのCPU20
は記憶装置10とコンパチブルな実質的に任意の型もしく
は種類のものとすることができる。
ユーザのCPU20側から見た場合、記憶装置10はブロツ
ク構成であると見做すことができる。第2図を参照する
に、記憶装置10の実際の構造もしくはハードウエア構造
に関係なく、参照数字(10)および関連の破線矢印で示
すように、ユーザのCPU20にとつては、見掛け上、論理
メモリ構成10を呈する。この論理メモリ構成10は本明細
書では「論理アドレス空間もしくはスペース」と称す
る。この論理アドレス空間は、後述する記憶域管理装置
もしくはMMUから見た場合に、記憶内容の代表もしくは
抽出データもしくは仮想アドレスを記憶する「仮想アド
レス空間」とも、また記憶装置の実際の物理的記憶要素
である物理的メモリとも異なる。
論理メモリ装置10は、追つて第3図を参照して詳述す
る連結もしくは結合レジスタ装置15を備えている。この
結合レジスタ15は、論理メモリ装置10に対しウインドウ
もしくは出力ポートとしての機能を果す(結合レジスタ
15は、記憶装置10の実際の一部分であつて、ユーザのCP
Uから見た場合のブロツク配列を、実際に記憶域管理装
置が行われる仮想アドレス空間に変換する機能を司
る)。この結合レジスタ装置15の概念は、任意時点にお
いて、ユーザのプロセツサ20は限られた数のブロツクし
か直接アドレスすることができないと言う事実、より詳
しく述べると、ユーザのプロセツサは結合レジスタ装置
15内の一群の結合レジスタ内に格納されているポインタ
を有するブロツクしか直接アドレスできないと言う認識
に基ずく。
ユーザのCPU20は、典型的な例において、2つの動作
モードで連結もしくは結合レジスタ装置15を使用する。
即ち、結合レジスタ15には、メモリ内の特定のブロツク
のアドレシング可能性を設定するためにブロツク識別子
をロードすることができる。これを、アドレシング可能
性が設定されつつあるブロツクに対する特定レジスタ
「結合」と称する。なお術語「連結もしくは結合」は、
レジスタの名称、番号または識別子およびブロツクの連
結もしくは結合を強調するのに用いられている術語であ
る。明らかなように、結合レジスタ内に格納することが
できるブロツク識別子のソース(源)に対しては或る程
度の制約が課せられる。初期設定ブートストラツプ ア
ドレスを除き、ブロツク、アドレスの唯一のアドレス源
は、先に結合されているブロツクまたは他の結合レジス
タからのブロツク アドレスである。
結合レジスタ15の他の主動作モードは、先に結合され
ているブロツク内において或る値を参照するためのベー
スとしての動作である。例えば特定の相対ブロツク場所
におけるデータに対するCPUの要求に応答して、MMUは、
結合レジスタに収容されているブロツク アドレス フ
イールドの内容にインデツクス(索引)計数を加算する
ことにより、ブロツク内に格納されている特定の値に対
するアドレスを発生する。明らかなように、上記インデ
ツクスは特定のブロツクに対して有効なインデツクスで
あることを確証する必要がある。例えば、上記インデツ
クスが2ワードのブロツクの4番目のワードを指定しな
いこと、したがつて無効でないことを検証する必要があ
る。結合レジスタ装置は、相対インデツクスとして現在
ブロツクに結合されているレジスタの名称に対しこの種
のアドレシングを行なうことができる。したがつて、参
照を行なう前にインデツクスが有効であるか否かの完全
なチエツクが行なわれる。
さらに、詳細に述べると、結合レジスタ装置15は、多
数の個々結合レジスタ21,22…,30を備えており、これら
個々の結合レジスタはユーザのCPU20によりアドレシン
グ可能であり且つ操作可能である。ユーザのCPUが結合
レジスタをアドレシングする仕方は、例えば、「レジス
タ1」、「レジスタ5」等々のように特定の結合レジス
タを単に指定することにより行なうことができる。結合
レジスタ装置15は、記憶域管理装置もしくはMMUの特定
の用途に応じて必要とされる数の結合レジスタを有する
ことができる。
記憶装置10内には、大きい物理的メモリ(追つて詳述
する)が設けられており、このメモリから、メモリブロ
ツクを割当てることができる。例えば、第2図を参照す
るに、2つのメモリブロツク40および45がCPUからの関
連の命令(後述する)により設定されている。設定され
たブロツクの各々は、見出し部分40hおよび45hと、少な
くとも結合レジスタ装置15の結合レジスタ20ないし30の
うちの1つの再生される部分とを有する。各ブロツクの
見出しは、特に、ブロツク識別データ、ブロツク長デー
タ、ブロツク種(タイプ)データ、ブロツクの長さを指
示するデータ、フラツグ等を収容し得る。
さらに各ブロツク40および45には、それぞれデータ
ワード40dおよび45dが格納されている。データ ワード
40dおよび40dは、アドレス場所の数だけ、ブロツク40お
よび45の各見出しから変位されている。このアドレス場
所の数は、ユーザのCPUによる特定のアドレス変位を含
め多くの要因に依存する。さらに具体的に述べると、ユ
ーザのCPUは、例えば結合レジスタ装置15のレジスタ21
内に格納されている見出しからの変位を指定することに
よりブロツク40の記憶場所40dにデータを書込むことが
できる。ユーザのCPUが所望のブロツク場所を特定する
仕方は、ブロツクが結合されている特定の結合レジスタ
(例えば「レジスタi」)ならびに結合されているブロ
ツク内の変位(例えば「j」)を指定することにより実
現される。指定もしくは特定された値は、そこで、直接
ユーザのCPUに対してデータとして戻すこともできる
し、或いはまた結合レジスタ装置(同じまたは異なつ
た)指定の結合レジスタに書込むことができる。
追つて詳述するが、ここで例として、CPU20が、記憶
装置10に対して、或る特定の長さの参照数字40で示した
ブロツクを創成する命令を発生することができるものと
する。そうすることにより、CPUは、MMUに対して、例え
ばレジスタ21のようなCPUに向けられた目標結合レジス
タにブロツク40に対するポインタをロードする指令を発
生する。しかる後に、CPU20は、結合レジスタ21内のポ
インタにより指示される見出しのアドレスから変位
「j」を指定することによりブロツク40へのデータ書込
み命令を発生する。ここでCPU10は、ポインタ10および
変位「j」を格納している特定の結合レジスタを指定す
るだけであつて、ブロツク40のアドレスを指定するもの
ではないことを強調して置く。
結合レジスタ装置15の結合レジスタは、第3図に詳細
に示してある。次にこの第3図を参照して説明する。結
合レジスタ装置の各結合レジスタは、「部分a」、「部
分b」および「部分c」で示した3つの部分を有してい
る。これら部分aないしcの各々は追つて詳述するよう
に、或る種のブロツク識別情報を格納している。図に
は、ブロツク40および45が示されており、そのうちブロ
ツク40は、部分aないしcを有する結合レジスタに結合
されている(同じことが、追つて明らかになるように、
ブロツク45についても当嵌まる)。ブロツク40内の見出
し情報は、ブロツク40の始めの部分に格納され、第1お
よび第2のセグメントもしくは区分は、結合レジスタの
部分aおよびb内の情報に対応する情報を格納してい
る。関心のない他の情報は、この場合、見出し部分40h
内に格納して置くことができよう。
再び結合レジスタの部分「a」を参照するに、3つの
情報、即ちユーザのCPUブロツク タグ(標識)61、MMU
タグ62およびブロツク サイズ セグメント63が存在す
る。
結合レジスタの部分「b」は5つのセグメントを有す
る。第1のセグメントもしくは区分64は使用者のCPUの
タグbのためのものであり、それに続くセグメントはMM
Uのタグ65のためのものであり、そして領域66は或る種
のフラツグのためのものであり、領域67は領域識別子を
格納し、そして2つ分のセグメント領域は参照計数(後
述する)を格納している。結合レジスタのレジスタ部
「b」のフラツグ部分70内のフラツグは、種々なフラツ
グを格納することができ、その例とちえ、「ロツク」、
「結合」、「スカベンジ」等がある。簡単に述べると、
ロツク フラツグは例えばブロツクの設定もしくは変位
において、その間、当該ブロツクの、MMU以外によるア
ドレシングを禁止するのに用いることができよう。ま
た、結合フラツグは、例えば、当該ブロツクが結合レジ
スタに結合されていることを指示するのに用いることが
できよう。さらに、スカベンジ フラツグはガーベツジ
コレクシヨン処理(不要情報整理)中に使用すること
ができよう。種々なフラツグ動作の詳細に関しては後述
する。
結合レジスタの部「c」も2つのセグメントもしくは
区分を有する。第1のセグメント64は、MMUタグのため
のものであり、そして第2のセグメント71は、特定のブ
ロツクの見出しに対するポインタまたはデータのための
ものである。いずれの場合にも、セグメント71の内容は
観察者に対しては「データ」として現われる。結合レジ
スタの部分「c」内の情報は、実際上は、ブロツク40の
見出しに再生することはできず、単に、連結もしくは結
合レジスタの部分として存在し得るに過ぎない。
したがつて、或る処理に関連し、上述のように、結合
レジスタ装置内でのブロツクの設定もしくは結合(連
結)においては、特定のブロツク場所もしくはアドレス
が相対インデツクスによりユーザのCPUにより参照され
る。第3図において、参照される特定の場所は、参照ブ
ロツク45にPcで示してある。この例において、結合レジ
スタ装置に結合すべき次のブロツクに対するポインタを
格納しているのは、この「データ」ワードである。場所
Pcのワードは点線で示すように、結合レジスタの部分
「c」に移される。MMUタグ(標識)64は、「データ」
が実際にポインタであるか否かを指示する。ポインタで
ない場合には、プロセスは直ちに中断されるか或いはエ
ラーメツセージが発生される。レジスタの部分「c」に
格納されている部分71の「データ」が有効ポインタであ
る場合には、このポインタは結合すべきブロツク40の見
出し情報40hを指示する。見出し40hの第1および第2の
レジスタ内の情報はそこで、先に述べたような仕方でレ
ジスタ部分「a」および「b」に移され、それにより結
合もしくは連結プロセスが完了する。
第2図および第3図の論理メモリ構成を可能にする結
合もしくは連結レジスタ装置を実現するためには、第4
図に示したように配列されたハードウエアを用いること
ができる。本発明による結合もしくは連結レジスタ装置
15を実現するためのハードウエアは、使用者のCPU20
(第1図)と結合レジスタ装置15との間を接続するため
のCPUインターフエイス80と、プロセツサ(第5図を参
照して後述する)を制御するMMUと、結合もしくは連結
レジスタ装置15との間に接続を形成するためのプロセツ
サ インターフエース81を備えている。結合レジスタ装
置15は上述のように情報が書込まれる個々の結合レジス
タからなる結合レジスタ フアイル83を備えている。こ
の結合レジスタ フアイル83は、直接CPUインターフエ
ース80に接続される。さらに、結合レジスタ フアイル
83は、データ路制御回路84を介してプロセツサ インタ
ーフエース81に接続されている。
さらに、ユーザのプロセツサから命令を受け、ユーザ
のCPUにより発生される特定の命令を解読するために、C
PUインターフエース80に接続された命令デコーダ90が設
けられる。命令デコーダ90からの出力は、シーケンサ92
およびマイクロコード発生器もしくは制御ROM/RAM93に
送られる。MMUプロセツサと関連して設けられるマイク
ロコード発生器もしくは制御ROM/RAM93は、結合レジス
タ フアイル83およびデータ路選択回路84の動作を制御
する。
上の説明から明らかなように、結合もしくは連結レジ
スタ装置15の回路は周知の技術を用いて、標準TTLまた
はMSI回路或いはカスタムLSIもしくはVLSIチツプとして
製造することができる。上述のように、既述のメモリア
ーキテクチヤを実現するための結合もしくは連結レジス
タ15の動作は、マイクロコードROM/RAM93内に格納され
ているマイクロコード制御プログラムの制御下にある。
マイクロコードの設計は、(後述するように)用いられ
るメモリプロセツサの種類、記憶装置を構成するハード
ウエアの種類等々のような要因に依存する。単なる例と
してではあるが、完全を期すために、結合もしくは連結
レジスタ装置を含む、本発明の記憶装置の動作を模擬す
るために標準リストマシンで実行することができるLisp
プログラムが本明細書に添付の付録Aに示してある。し
かしながら、記憶装置のいろいろな他の実施態様をも同
等に有利に採用し得ることは理解されるであろう。
物理的メモリ12と関連して、本発明の記憶装置を形成
する記憶域管理装置もしくはMMU11を実現するためのハ
ードウエアは全く慣用のものであり、第5図に示してあ
る。図示のように、記憶装置10は、ユーザのCPU20に接
続された既述の結合もしくは連結レジスタ装置15を備え
ている(第1図参照)。図示のように、結合もしくは連
結レジスタ装置15から、既述のように、ユーザのCPU20
に対して指令、結合レジスタ、インデツクス、データ、
制御および状態の各線路が設けられる。記憶域管理装置
もしくはMMU11の動作は、プロセツサ100によつて制御さ
れる。このプロセツサには、図示のように、結合もしく
は連結レジスタ装置15に接続される指令、仮想アドレ
ス、制御およびデータの各線路が設けられている。本発
明の記憶装置と組合せて動作すべき物理的メモリの特定
の型式に依存して、プロセツサ100による制御のために
いろいろなメモリインターフエース装置を設けることが
できる。即ち図示のように、例えば半導体からなるハー
ドな物理的メモリ、バブル記憶装置、その他当該技術分
野で知られている他の記憶要素から構成することができ
る主メモリ102が設けられる。この主メモリ102は、ペー
ジテーブル装置104により結合もしくは連結レジスタ装
置15に接続される。結合レジスタ装置15と物理的メモリ
102との間のデータの流れは、ページテーブル装置104を
介し、結合レジスタ装置15と上記ページテーブル装置10
4との間に接続されている指令、仮想アドレス、制御お
よびデータ線路を有するプロセツサ100によつて制御さ
れる。さらに、本発明によるMMU11と組合せて用いるこ
とができる形態のメモリとしてデイスク装置106を設け
ることができる。このデイスク装置106は、当該技術分
野で周知の磁気デイスク、光学デイスクその他周知のデ
イスクメモリとすることができる。デイスク装置106
は、デイスクコントローラ(制御装置)108によつて制
御され、一方、該デイスクコントローラは制御、データ
および指令線路を介しプロセツサ100により、図示のよ
うにデータ、制御および物理的アドレス線路を介して連
結レジスタ装置15およびページテーブル装置104に対し
て制御される。
なお、物理的主メモリ102およびデイスク装置106が示
してはあるが、本発明は、このようなメモリもしくは記
憶装置に制限されるものではなく、当該技術分野の専門
家には明らかなように、本発明の実施において他の種類
のメモリおよび構成を同等に有利に採用し得るものであ
ることは理解されるべきである。
既述の結合もしくは連結レジスタ装置の動作において
は、見出しブロツクに1つまたは2つ以上のフラツグが
設けられる。これらフラツグのうちの少なくとも1つは
ロツクフラツグとして用いられ、したがつてこのフラツ
グがセツトされた時には、当該ブロツクに対してユーザ
のCPUにより変更を加えることはできない。この事は、
例えば、ガーベツジコレクシヨン処理中、ブロツクの転
記、変位或いは再構成等を行つたり或いはMMUにより他
のアクシヨンが実行される際に有利である。
他の用いることができるフラツグは、ブロツクが結合
もしくは連結されているか否かを判定するためのフラツ
グである。記憶装置が或るブロツクを変位したり或いは
修正したい場合には、当該ブロツクが現時点で結合レジ
スタに結合されているる否かの判定を行うことができな
ければならない。
さらに結合レジスタの部分「a」のレジスタ部分68の
ブロツクサイズ表示が、インデツクスが有効ブロツク長
を超えているか否かを判定するために必要とされる。
セグメントもしくは区分62,63および64のMMUタグ(標
識)は、ブロツクの見出しならびにデータ部分と組合さ
れている。記憶域管理装置もしくはMMUによつて要求さ
れるタグは、結合レジスタ装置により、ユーザのプロセ
ツサがタグもしくは「ポインタ」を書込むのを阻止さ
れ、またセルが実際に特定のブロツクを形成する前にポ
インタを格納していることを確証するのに結合もしくは
連結レジスタ装置によつて強制されるタグである。なお
ここに開示しタグ付メモリである。なおここに開示した
タグ付メモリ(標識付メモリ)においては、タグは、ユ
ーザのプロセツサによつて任意に設定し得ない点に注意
されたい。したがつて、記憶域管理装置もしくはMMU
は、ユーザのプロセツサが禁止されているタグ、即ちポ
インタ、見出し等をセツトしようとしていないことを連
続的に検証しなければならない。したがつて、各ポイン
タは、データがポインタを表すことを意味するMMUタグ
を含んでいるので、ブロツク内のポインタはユーザのプ
ロセツサによつて変更することはできない。しかしなが
ら、ユーザのプロセツサは、ポインタとデータとを書替
えることが可能であり、そうした場合には、ポインタの
破壊が生じ得る。しかしながらこのような破壊は、ポイ
ンタの直接的変更により阻止されるのである。
上に述べたような仕方で構成された記憶装置によれ
ば、多数の予め定められた指令により論理アドレス空間
にアドレシングもしくはアクセス可能となる。用いるこ
とができる指令として、(1)ブロツク空間もしくはス
ペースを割当てる指令、(2)論理アドレス空間内の同
じまたは異なつたブロツク内で或るインデツクスされた
ブロツクレジスタから他のブロツクレジスタにポインタ
を転記する命令、(3)論理アドレス空間内の2つのレ
ジスタが、(a)双方共に同じブロツクに関するポイン
タを格納しているかまたは(b)同じデータを格納して
いるかを決定するために論理アドレス空間内の2つのレ
ジスタもしくはセルを試験するための「EQ(同等)」テ
ストを行うための指令、(4)特定のブロツク内のイン
デツクスされた記憶場所から読出しを行うための指令、
および(5)ユーザのプロセツサで発生されたデータを
特定のブロツク内のインデツクスされた記憶場所に書込
むための指令がある。割当指令、転記命令ならびに「EQ
テスト」は、ユーザのプロセツサをして、記憶装置の構
成もしくは形態を決定し記憶装置を所望の任意の構成に
再編成するのに用いられる。また、読出しおよび書込み
指令により、プロセツサは、記憶装置と相互作用するこ
とができる。しかしながら、ユーザのプロセツサは、論
理アドレス空間にポインタを書込むことは許されていな
い点に注意されたい。当該技術分野の専門家には明らか
なように、他の指令をも同等に有利に用いることができ
るが、上に列挙した指令が、現在のところ、本発明の記
憶装置について要求される最小限の指令であると考えら
れる。即ち、上述の5つの指令で、本発明の記憶装置は
従来の記憶装置から異なるのである。当業者には明らか
なように、上に述べた記憶装置で他の付加的な指令を容
易に実現することが可能である。この種の命令の多く
は、上述の指令のいろいろな組合せによつて達成するこ
とができる。なお上述の指令に関しては追つて詳細に説
明する。
次に、上に述べたような構成の記憶装置の動作につい
て概略的に説明する。記憶装置10は、最初にユーザのプ
ロセツサ20と組合される。ユーザのプロセツサ20は、結
合もしくは連結レジスタ装置15と交信できる限りにおい
て任意の種類もしくは型のものとすることができる。単
にハードウエア上のコンパチビリテイ(互換性)に対し
て制限が課せられるだけであつて、記憶装置の動作、そ
の階層構造および組織等々とは無関係である。
ユーザのプロセツサが記憶装置に対して書込みを行い
たい場合には、該プロセツサは先ず、記憶域管理装置も
しくはMMU10に対してブロツク割当指令を発生する。こ
のブロツク割当指令の一部分として、ユーザのプロセツ
サは、所望のブロツクサイズならびに割当もしくは創成
されるべきブロツクが結合される結合レジスタを指定す
る。それに応答して、記憶装置は所要のブロツクを創成
する。次にユーザのプロセツサ20は、指定された結合も
しくは連結レジスタに送られる書込み指令を発生し、プ
ロセツサがデータを書込みたい相対ブロツク場所を指定
する。然る後に、前以つて書込まれているデータを読出
したい場合には、プロセツサ20は、データが前以つて書
込まれた変位もしくはオフセツトを指定することによ
り、当該時点で結合されているブロツクに関し読出し宣
言を発生する。MMUはそこで、ユーザのプロセツサに対
して既に書込まれているデータを供給する。
記憶装置10の動作の1つの様相は、割当てられたブロ
ツク内におけるポインタ系の形成および動作にある。例
えば、ブロツクを次から次に参照したい場合には、相対
アドレスで参照される側のブロツクに対し、参照する側
のブロツクにポインタを設定することができる。ポイン
タは、ユーザのプロセツサによることなく記憶域管理装
置もしくはMMU11により設定され、参照する側のブロツ
ク内のインデツクスされた相対場所に設けることができ
よう。所望ならば、ユーザのプロセツサは、1つの特定
のブロツクまたは2つのブロツク内の2つの相対場所が
同じブロツクに対するポインタを格納しているか否かを
決定するために記憶装置10に対しEQU(同等)指令を発
生することができる(このEQU指令は、また、同じ或い
は異なつたブロツクの2つの特定の相対場所が同じデー
タを格納しているか否かを決定するのに用いることがで
きる)。なお、割当てられたブロツクの相対記憶場所を
ユーザのプロセツサにより直接読取ることができるが、
相対記憶場所が他のブロツクに対するポインタを格納し
ている場合には、読取られるポインタは必ずしも同じで
ある必要はない。例えば、明らかに異なつた参照を招来
するような不可視のポインタを格納しているブロツクが
有り得る。例えば、ブロツクAのポインタがブロツクB
を指示しており、そしてブロツクCのポインタがブロツ
クDを指示しており、該ブロツクDがブロツクBを指示
している場合には、ブロツクAおよびCのポインタは同
じブロツクを指示することになるが、ユーザのプロセツ
サによりデータとして取込まれる場合には同等ではな
い。
最後にユーザのCPUが、特定のブロツクに関し総ての
動作を完了したならば、ユーザのプロセツサは、当該ブ
ロツクを破壊すべきことを要求する割当解除指令を記憶
域管理装置もしくはMMU11に発生することができる。
このような構成のMMU10を用いれば、従来、CPU、コン
パイラ、アツセンブラ等により実行する必要があつた多
くの動作もしくは演算を自動的に遂行もしくは実行でき
ることが諒解されるであろう。特筆すべきは、CPUの実
行中の処理段階を、ガーベツジコレクシヨン(不要情報
整理)処理中に停止する必要なく、ガーベツジコレクシ
ヨンを自動的に実現し得る点である。
仮想メモリは、CPUによつて特定される任意の領域に
分割される。即ち、第6図に示すように、任意の大きさ
の3つの領域が仮想アドレス空間に指定される。これら
領域は、CPUの要求によつて創成されるものであるの
で、CPUに対して透過である。領域No.1は、2つのブロ
ツクを有しており、領域No.2は4つのブロツクを有して
おり、そして領域No.3は3つのブロツクを有している。
ブロツクの各々は、他のブロツクまたはブロツク群に対
するポインタを格納することができる。図示のように領
域1においては、ブロツク120は2つのポインタを格納
しており、そのうちの1つのポインタは領域1における
ブロツク121の見出しを指し、他のポインタは領域3に
おけるブロツク122を指示している。ブロツク121は、領
域2にブロツク126に対するポインタを格納している。
ブロツク126はブロツクポインタを格納してはいない。
領域2においてもブロツク127は2つのポインタを格納
しており、そのうちの1つのポインタはブロツク126に
向けられ、他のポインタはブロツク128に向けられるも
のである。ブロツク128は、ブロツク129に対するポイン
タを有しており、ブロツク127ないしブロツク129のポイ
ンタ連鎖は総て領域2内に格納されている。
最後に、領域3において、ブロツク132は2つのポイ
ンタを格納している。即ち、領域2におけるブロツク12
6に対するポインタおよび領域3におけるブロツク133に
対するポインタである。ブロツク127はまた、領域2内
のブロツク126に対するポインタを有している。
上の説明から明らかなように、仮想アドレス空間にお
ける領域の使用で、仮想アドレス空間の小さい部分にお
けるガーベツジコレクシヨン処理が可能となる。また、
従来の場合要求されているような、仮想アドレス空間全
体について捕集することなく単一の領域におけるガーベ
ツジコレクシヨンが可能である。これにより、ガーベツ
ジコレクシヨンに対する費用(時間およびプロセツササ
イクル)が軽減される。さらに、他の領域に比較的少な
い不要情報しか存在しない場合でも、相当量の不要情報
を格納する確率が高い領域においてガーベツジコレクシ
ヨン即ち不要情報整理処理もしくはちり集め処理を行な
うことができる。
後述するように、ガーベツジコレクシヨン処理の一部
分として、「ルート(径路)ポインタ」の集合から或る
領域における総ての潜在的に達成可能なブロツクを識別
する追跡サイクルがある。この追跡サイクルは、各領域
と関連し、当該領域外から直接到達することができる領
域内のブロツクを識別するルートを有しているか否かに
依存する。或る領域と関連のルートポインタの集合は、
結合もしくは連結レジスタに起因する参照ポインタなら
びに当該領域に存在しないブロツクから直接到来するポ
インタを含む。これらポインタは他の領域において発生
されるものであるが、当該領域におけるブロツクを指定
するために「到来する」ものである。これらポインタは
「内向きの領域間ポインタ」と称する。或る領域内で発
生して、他の領域に存在するブロツクを指定するために
「出て行く」ポインタは「外向き領域間ポインタ」と称
する。また、同じ領域内で発生され同じ領域内のブロツ
クを指すポインタは、領域内向きポインタと称すること
にする。
各領域は、それと関連して、内向きポインタテーブル
(IPT)と称する制御構造を有している。このIPTは、当
該領域に対する総ての内向き領域間ポインタを見付ける
のに必要な情報を格納している。図示の特定の実施例に
おいては、IPTは、当該領域内のブロツクに結合されて
いる結合レジスタから到来する参照情報をは格納しな
い。したがつて、或る領域に対するルート スペース
は、結合もしくは連結レジスタ群に領域IPTを加えたも
のからなる。
第6図に示す領域形態について再び参照するに、関連
の領域には4つの現在の内向きポインタが格納されてい
る。即ち、領域1のブロツク121から領域2のブロツク1
26に向くポインタは、領域間ポインタであり、その参照
は領域2内のIPT140内に格納されている。ブロツク132
および133も、他の領域、例えば領域3からのポインタ
を格納しているので、これらポインタも領域2における
IPT140として識別される。領域3内のブロツク122は、
領域1内のブロツク120によつて指定されるので、ブロ
ツク120内のポインタは領域3内のIPT141で識別され
る。最後に、領域2または3からの内向きポインタは存
在しないので領域1内のIPT142は空きである。
上の説明から明らかなように、記憶装置10内のガーベ
ツジコレクシヨン処理は、CPUに対して不透明であるの
で該CPUに関係なく用いられるガーベツジコレクシヨン
処理は、実際上、ガーベツジコレクシヨン処理を効率良
く圧縮することができ、それにより、記憶域管理装置も
しくはMMU10の物理的メモリのより有効な使用が可能と
なる。メモリの管理に対する2つの主たる機能に関して
は追つて説明する。なお、使用不可能なメモリが多数決
される第1のメカニズムもしくは手段は、参照計数メカ
ニズムであり、そして第2の主たるメカニズムはガーベ
ツジコレクシヨンの転記のためのメカニズムである。
全てのブロツクに対し参照計数を維持することによ
り、ガーベツジ ブロツクの迅速な回収が可能となり、
回収されたメモリは再び使用可能になる。全てのガーベ
ツジ ブロツクは、参照計数メカニズムにより回収可能
であるが、ガーベツジ ブロツクの大多数を回収するの
が、第一次的な主たる機能である。
既に概略的に述べたように、各ブロツクの見出しに
は、参照計数フイールド(第3図参照)在り、(それ自
身をも含め)他のブロツクからのブロツク参照回数を表
す計数を格納している。このように、或るブロツクに対
する参照は、同じまたは他の領域内にあるブロツク内の
セルがその起源である。計数には、結合もしくは連結レ
ジスタからのブロツクに対する参照ならびに内向きポイ
ンタテーブルからの参照は含まれない。
結合レジスタに対する参照が参照計数フイールドで計
数されない理由は、ハードウエアならびに支持ソフトウ
エアに付加的な複雑性が招来されるという認識からし
て、性能を最適化するためである。このような最適化
は、非常に短い期間或るブロツクが結合レジスタに結合
されるリスト探索(例えばLIPのリスト「CDRing」)の
頻度を考慮した場合に必要となり得る。また、或る領域
における外向きポインタを指定する他の領域の内向きポ
インタ表に由来する参照も計数されない。参照は、ユー
ザのセルからではなく制御構造から行われる。さらに、
参照はブロツクに対しては実際上行われない。参照は、
ブロツク内の特定のユーザのセルに対して行われる。
或るブロツクが最初に割当てられると、このブロツク
の参照計数は零であるが、結合されている結合レジスタ
により「保護」される新しい参照が行われる度に、参照
計数は増分される。(ブロツクの参照計数にあふれもし
くはオーバフローが生じ得る確率もしくは可能性に関し
ては追つて説明する)。他方、ブロツク内の参照が破壊
される都度、ターゲツトブロツクの参照計数は減分され
る。
或るブロツクに対する参照の付加および削除は、正確
に、当該ブロツクに対する参照計数の増分および減分に
より反映されなければならない。或るブロツクの最後の
参照が破壊される時には、参照計数が値零に達するこ
と、或いは参照計数が回収不可能であることが重要であ
る。ブロツクが回収できることを知らない場合には、ブ
ロツクのユーザのセルがメモリ内の他のブロツクに対す
る参照を格納している場合があり得るので、1つのブロ
ツクよりかなり多くのブロツクが不必要にも要求され得
る。これらブロツクも回収可能である。さらに由々しい
問題が、或るブロツクの参照計数を正確に維持しない場
合に起り得る。ブロツクに1つまたは2つ以上の参照が
存在するにも拘らず計数が零に達しブロツクが結合され
なくなると、当該ブロツクは誤つて回収される可能性が
ある。後に現存しないブロツクに対する参照が生ずるよ
うな場合にも予測できないエラーが発生し得る。このよ
うな「中ぶらりんな参照」が残るという問題は回避しな
ければならない。
したがつて、結合レジスタに結合されていない零の参
照計数のブロツクは自動的に割当を解除される。即ち、
メロリプロセツサが、あるブロツクの参照計数が「1」
から「0」に遷移したことを検出すると、該プロセツサ
は、結合レジスタが当該ブロツクに結合されているか否
かに関し結合レジスタのバンクに質問を発する。当該ブ
ロツクを指定する結合レジスタが存在しない場合には、
割当は解除される。同様にして、特定の結合レジスタか
らの或るブロツクに対する結合が破壊もしくは解除され
る時に、他の結合レジスタについてチエツクしなければ
ならない。当該ブロツクに他の結合レジスタが結合され
ていない場合には、メモリプロセツサは、当該ブロツク
の割当を解除できるかどうかを判定するために、ブロツ
クの参照計数をチエツクする。参照計数が零であつて、
当該ブロツクに対するユーザのセルからの参照が存在し
ない事が判明した時に、当該ブロツクは割当てを解除さ
れる。(なお術語「割当解除」および「回収もしくは再
生」は、本明細書における参照計数メカニズムの既述に
おいて互換的に用いられている点に注意されたい)。
上の説明から明らかなように、参照計数メカニズム
は、2つまたは3つ以上のブロツクの分離した循環構造
ならびに当該ブロツクのユーザのセルだけからの参照を
有するブロツクは検出しない。いずれの場合にも、これ
らブロツクは使用不可能であり回収もしくは再生すべき
である。このようなブロツクは、追つて詳述するよう
に、ガーベツジコレクシヨン処理によつてのみ回収もし
くは再生利用することができる。このような理由から、
参照計数は、到達できないセルのサブ集合だけを直接回
収もしくは再生することを可能にするが、到達し得るセ
ルの回収は許容しないという点で保守的であると言え
る。
或るブロツクの参照計数の変化は、「転記」動作のよ
うなユーザの動作の結果または他のブロツクをクリヤし
た場合の参照の除去、即ちそのユーザのセル内の全ての
ポインタを潰すことの結果として発生し得る。
メモリプロセツサおよびCPUが、同じ参照計数の同時
変更を試みようとする場合が有り得るので、潜在的競合
の可能性が存在する。例えば、このような同時修正もし
くは修飾の試みは、CPUが或るブロツクに対するポイン
タを変更しつつある時に同時にメモリ管理(MMU)によ
りクリヤされつつある当該ブロツクにポインタが存在す
るような場合に起り得る。この競合は、(参照計数が格
納されている)ブロツクの見出しに対するハードウエア
アクセスという性質からして回避される。メモリプロセ
ツサは、本質的に、ユーザならびにメモリ管理もしくは
記憶域管理に対し変更を行うのに用いられる直列の資源
である。
第3図に示すように、各ブロツク内の参照計数フイー
ルドは4ビツトから構成され、それにより当該ブロツク
に対する参照回数を表すのに最大15の計数が許容され
る。(15或いはそれ以下の参照計数で殆んど多数の事例
をカバーできるが、実際には、各ブロツクに対し満杯に
なつた参照計数を桁上げするのが非常に望ましい)。
参照計数の桁上げが望ましいことの1つの理由は、後
述するガーベツジコレクシヨンのアルゴリズムで、参照
計数は、サイクル中のガーベツジブロツクを含め全ての
ガーベツジブロツクに対し零まで減分されるからであ
る。これにより、所望ならば、協力な内部一貫性チエツ
クが行われ、さらに、ガーベツジコレクシヨンメカニズ
ムならびに参照計数メカニズムにおける信頼性を増加す
るための手段が得られる。拡張された参照計数能力を実
現するために、各ブロツクの第2の見出しセルHbに、余
分のビツト、即ち「溢れもしくはオーバフロー」ビツト
を含ませることができる。さらに参照オーバフローテー
ブル(ハツシユ技術を利用した内部制御構造)(図示せ
ず)が維持される。
満杯参照計数のアルゴリズムは比較的単純である。15
の最大のブロツク参照計数が超えられる場合、即ちブロ
ツクに16番目の参照が行われる場合には、参照計数フイ
ールドの溢れビツトがオンにセツトされる。そこで参照
計数の半分(8)がROTに対する新しいエントリ(記述
項)として置数される。その結果上記ブロツク内の参照
計数は残りの半分(8)を保持する。この「半値」は、
溢れに対する特殊論理を発動する必要性を軽減する点で
望ましい。
オーバフローもしくは溢れビツトが既にセツトされて
いるブロツクに対し参照が行れ続けてブロツク最大参照
計数が再び超えられると、参照計数の半分がROTに既に
存在するエントリ(記述項)に対して加算される。ROT
は、各エントリ毎に全参照計数を格納することができる
ので、全参照計数(ROT内のエントリにおけるブロツク
の参照計数の組合せ)を保持することができる。
参照計数が1であるが溢れビツトがセツトされている
ブロツクに対する参照が潰されると、ROT内のエントリ
に対し探索が行われることになる。エントリが、最大ブ
ロツク参照計数の2分の1(8)よりも大きい値を有し
ている場合には、最大ブロツク参照計数の2分の1
(8)をROTのエントリから減算して当該ブロツク内に
格納されている参照計数に加算する。当該ブロツクにお
ける参照計数の一連の「アンダフロー(下位桁溢れ)」
後に、ROTエントリに残つている値は、終局的には、ブ
ロツクに転送される。このようにして、ROTエントリの
削除が行われる。
参照計数が真に零であるためには、参照計数ならびに
オーバフロービツト双方が零でなければならない。言い
換えるならば、或るブロツクの回収もしくは再生利用を
可能にするためには、参照計数フイールドの5ビツト全
てが零でなければならない。或るブロツクの参照計数が
零に達し、然も該ブロツクに結合レジスタが連結されて
いなくても、このブロツクは、当該ブロツク内の全ての
ポインタがクリヤされるまでは、真の意味で回収するこ
とはできない。この定義は再帰的定義であり、(リスト
に対するポインタが破壊されることにより長いリストが
突然空きにある場合のような)任意に大きな量の作業
(タスク)を意味する。この作業に加えて、割当解除プ
ロセス状態を追跡記録するために大きな記憶量が要求さ
れ得る。次に述べるアルゴリズムにおいては、割当解除
処理に要求される計数状態を維持するために、割当解除
されつつあるブロツク内の利用可能なスペースが用いら
れる。
B=割当解除すべきブロツクの現在のりすとに加えるべ
き参照計数=0を有する新しいブロツクに対するポイン
タ、 T=一時ポインタ、 S=割当解除すべきブロツク(の現在のリスト)に対す
るポインタとし、Sの参照計数(ポインタSによつて指
定されるブロツク)=0とする。
S=0であれば、 S=Bとセツトし、 そうでなければ、 T=Sとセツトし、 Bの参照計数を増分し、 ラベルAを付け、 1(T)の型のタグ(ブロツクT内の1番目のセルにポ
インタが付けられている)の場合 タグ−データ: 1(T)=Bをセツトする(古い値を、記憶すべきセ
ルに対するポインタで書替える) タグ−ポインタ: 参照計数1(T)=1(但しリストの終りの場合)な
らば、T=1(T)(NOであつてリストを下方にイテレ
ートする)Aに行く そうでない場合(YESであつて、次のセルが1よりも大
きい参照計数を有し割当解除がまだできない場合)に
は、参照計数1(T)を減分する(但し負にはなり得な
い) 1(T)=Bにセツト エンド(終り) 割当て変更処理自体は、上記のSで開始し、第1番目
のセルを除き、Sにより指示されたブロツク内の全ての
ポインタを潰す。第1番目のセルがポインタを有してい
る場合には、Sに組込まれ、当該ブロツクは割当解除さ
れる。そうでない場合には、Sは零にセツトされて当該
ブロツクは割当解除される。このアルゴリズムでは、イ
ンダイレクシヨン(indirection)を用いる前に、新し
いブロツクポインタ(上記B)を保持するための場所が
あるかどうかがブロツク内の全てのセルについて探索さ
れる。また、スタツク内で最後の挿入が行われた場所を
想起してそこでの探索を開始する。
第6図を参照して上に述べた内向きポインタテーブル
は、ポインタ切換ベースで維持される他の主要な制御構
造である。或る領域のIPTは、当該領域に対する参照計
数の目的に用いられるものと考えて良い。しかしなが
ら、IPTは、参照計数よりもさらに複雑な構造である。
ポインタが変更される時には常に、当該ポインタを格
納しているブロツクが該ポインタにより指定されるブロ
ツクを含む領域とは異なる領域にある場合には、IPTを
更新しなければならない。各ブロツクの第2の見出しセ
ル内に含まれる領域id(識別子領域)が、領域が同じで
あるか否かを判定するのに用いられ、そしてソースブロ
ツクおよびターゲツトブロツク双方の領域idに対しアク
セスして比較を行う。
MMUの連結レジスタフアイル内のポインタは、領域内
に存在すると見做されない点に注意されたい(このポイ
ンタは、自動的に、それが指定するブロツクと同じ領域
内に存在すると考えることができる)。したがつて、結
合もしくは連結が行われている時には、IPTを更新する
必要はない。
参照計数の維持の場合と同様に、第1回目の実行で
は、CPUは、IPTに対する変更が完了するまで遅延される
に過ぎない。しかしながら、参照計数の場合と同じ理由
から、差し迫つた処理は、遅らせることができる作業と
切り離される。さらに、IPTの場合には、作業(1つは
ポインタのターゲツトの読取りおよび1つはIPTの部分
の読取り)を完了するために多重のページ傷害を発生す
ることが可能である。ポインタが変更される場合には常
に参照計数およびIPTが手直しされるが、これら2つの
動作は、基本的には、互いに独立している。したがつ
て、2つの同時プロセスとして実行できる。
ここで、“Communications of the ACM",21巻、4
号、(1978年4月)に掲載のG.Baker Jr.著の論文「Lis
t Processing in Real Time on a Serial Computer」を
参照されたい。この論文には、本発明が属するガーベツ
ジコレクシヨンの従来のレベルに関する説明がある。
ガーベツジコレクシヨン処理の1つの主たる目的は、
仮想アドレスを再使用することができるようにするため
に仮想メモリを回収することである。上述のように、参
照計数を採用することにより、効率的に、大多数の到達
不可能なメモリブロツクを回収することができるが、こ
の方法では扱いきれないような事例が存在する。既に述
べたように参照計数アルゴリズムによつてでは、循環的
構造もしくはサイクリツク構造は回収することはできな
い。互いに参照し合う2つまたは3つ以上のブロツクか
ら構成され従つて零には決してならない参照計数を有す
るサイクリツクもしくは循環的構造の生起は極く普通の
イベントである。また、或る1つのブロツクが当該ブロ
ツク内の1つまたは2つ以上のセルによつてポインタ指
定される可能性もある。この場合にも、参照計数は決し
て零にはならない。このような構造はCPUから切離すこ
とができる、即ち到達不可能にすることができるが、参
照計数メカニズムではこれら構造が回収可能であること
の検出が行れない。しかしながら、参照計数により回収
されなかつたガーベッジブロツクは、全べて、ガーベツ
ジコレクシヨン処理により回収可能なのである。このよ
うな循環的構造が第7図に示されており、これは後述す
るように、完全な参照構造とは異なる。
ガーベツジコレクシヨン(不要情報整理)もしくはち
り集め処理のさらに重要な目的は、参照の局所性を改善
するために仮想アドレス空間をコンパクト(凝縮)にす
ることにある。メモリブロツクを割当てたり割当解除す
るCPUの能力ならびにポインタの破壊で仮想メモリは非
常に細分化されるが、ガーベツジコレクタは、アクセス
可能なメモリブロツクを互いに近くに寄せ集め、したが
つて細分化プロセスとは逆の作用をする。
ここに開示するガーベツジコレクシヨンアルゴリズム
は、ベイカ(Baker)によつて提案された原理に基いて
行われる。このようなコレクタの2つの主たる利点は、
収集および凝縮するのに唯1つのパスしか必要とされな
い点ならびにコレクタスタツクが必要とされない点にあ
ることは、アルゴリズムに関する以下の記述から明らか
となろう。
既に述べたように本発明の記憶装置は、主として、大
きい仮想メモリ能力を必要とする動作もしくは演算に企
図されているものである。ガーベツジ コレクシヨンを
メモリ全体に対して行うとすれば、そのためのプロセス
は大きい時間を消費する。また、任意時点で、仮想メモ
リの半分だけが使用可能であるようにするのは望ましく
ない。と言うのは、使用不可能な半分は、Baker型のコ
レクシヨンが行われる時に転記するのに必要とされるか
らである。これら2つの問題は、領域の利用により軽減
される。即ち、仮想アドレス空間の断片は、所要時間お
よびオーバーヘツドを減少するために、領域毎のベース
で、別々にガーベツジ収集されるのである。領域毎のベ
ースでガーベツジ コレクシヨンを行うことから得られ
る別の利点は、或る領内におけるガーベツジ処理の頻度
を当該領域における予想ガーベツジ累積率を導出するの
に用いることができるという点にある。したがつて例え
ば、安定な領域に対しては不必要にガーベツジ コレク
シヨンを行う必要はない。
介入するガーベツジ処理中に、CPUが或る領域をアク
セスすることが不可能になる時間が大きくなるのを回避
するために、CPUおよびガーベツジコレクタは、連結レ
ジスタおよび仮想アドレス空間に対し並列に作用する。
その意図は、CPU側から見た場合に、ブロツクの割当な
らびにアクセスのための性能の劣下を可能な限り最小に
するためであることは言う迄もない。
以下に、ガーベツジ コレクシヨンのアルゴリズムに
関して説明する。上に述べたように、MMUは、そのメモ
リの回収の大部分について参照計数を利用する。したが
つて、ガーベツジ コレクタは、参照計数の完全性を保
持しなければならない。第7図および第8図は、ガーベ
ツジ コレクシヨン直前および直後における領域200を
絵画的に示す図である。この例においては、領域間ポイ
ンタも領域に向けることができるが、領域200に対する
ポインタだけが結合レジスタから由来している。この場
合には、当該領域に対するポインタは、該領域の左側に
示してある結合レジスタR1,R4ないしR6に起源を発す
る。領域内には、B1ないしB8で識別した幾つかのブロツ
クが存在する。各ブロツクの右上隅の番号は当該ブロツ
クの参照計数を表す。或る結合レジスタ(B1およびB7)
に直接結合されているかまたは或る結合レジスタ(B2お
よびB3)から由来するポインタのストリングで参照され
ているブロツクだけが有用なブロツクである。したがつ
て、ブロツクB4およびB8は有用なブロツクではないが、
これらブロツクのセルの1つが自分自身をポインタ指定
しているので、言い換えるならばその参照計数が零では
ないのでこの領域に残されている。ブロツクB5およびB6
はまた、当該領域に残つている円形リストを形成する。
これと対照的に、第8図に示すように、ガーベツジ コ
レクシヨン後には、全てが有用なブロツクが存続する。
ガーベツジ ブロツクならびにそのポインタは、領域か
ら取払われ、そして残存ブロツクの有用な参照計数は、
該ブロツクに対する参照の損失を反映するように調節さ
れている。
本発明のガーベツジ コレクシヨン アルゴリズムの
実施に当つて、その単純な形態においては、ガーベツジ
コレクシヨンを行なうべき全てのブロツクは、旧スペ
ースおよび新スペース(OLDSPACEおよびNEWSPACE)と称
する2つのサブ空間のうちの1つに格納される。全ての
アクセス可能なブロツクは、旧スペース(OLDSPACE)か
ら新スペース(NEWSPACE)に転記される。前進アドレス
は、転記されたブロツクの元の場所もしくは旧場所に残
される。前進アドレスを含むブロツクを指定するポイン
タが追跡される時には、当該ポインタは、転記ブロツク
を指示するように更新される。全てのアクセス可能なブ
ロツクが新スペースNEWSPACEに転記された時にガーベツ
ジ コレクシヨンは完了する。そこで、旧スペース(OL
DSPACE)は割当解除される。
本発明によるガーベツジ コレクシヨンは5つの相を
含む。即ち、1)或る領域の有用なブロツクのコピーを
形成するために新しい断片を設定して必要なポインタを
初期設定するイニシヤライズ相、2)1つまたは2つ以
上の結合レジスタまたは他の領域からのセルによつてア
クセス可能な全てのブロツクを転記する追跡相、3)追
跡相で追跡されたブロツク内のセルにより指定されたブ
ロツクを転記するスカベンジ相、4)ガーベツジ ブロ
ツク内のセルのポインタを除去して再使用のためのセル
を作成する旧スペース クリーニング相、そして5)ガ
ーベツジ コレクタが制御を放棄する準備をなすフリツ
プ相である。
したがつて、第9図に簡略に示すような動作において
は、領域210に対してガーベツジ コレクシヨン処理を
行う時点となると、当該領域に等しい大きさのメモリ断
片212が割当てられる。この新しい断片212は、新スペー
ス(NEWSPACE)212と称される。「ガーベツジ(57)」
と混合された有用ブロツクを含む元の断片210は、旧ス
ペース(OLDSPACE)210と称する。
ポインタBは、新スペース(NEWSPACE)212の最下位
アドレスを指定するように初期設定もしくはイニシヤラ
イズされる。このポインタは、旧スペース(OLDSPACE)
210からのブロツクを新スペース212のどの箇所に転記す
べきかを指示するのに用いられる。追つて説明するよう
に、ガーベツジ コレクシヨンのスカベンジ相で用いら
れるポインタSもまた、新スペース212の最下位アドレ
スを指示するように初期設定される。第3のポインタT
は、新スペース212の最上位アドレスを指示するように
初期設定される。領域のガーベツジ コレクシヨン処理
中、CPUによつて要求される全ての新しいブロツク割当
は、ポインタTが指示する仮想アドレス空間で行われ
る。その場合、ポインタTは、利用可能な次に低い仮想
アドレスを指示するように進まされる。
イニシヤライゼイシヨン相が完了すると、トレースも
しくは追跡相が始まる。1つまたは2つ以上の結合レジ
スタにより指示された旧スペース(OLDSPACE)216内の
どのブロツクをも、直ちに、新スペース(NEWSPACE)21
5に転記しなければならない。このようにして、マシン
(機械)の「規則」は守られる。この規則は、旧スペー
スには結合されたブロツクが存在してはならないという
規則である。既に述べたように、全ての新しい割当は新
スペース内で行われる。追跡相により、全ての結合され
ているブロツクは、旧スペースから新スペースに転記さ
れる。最後に、ガーベツジ コレクシヨン中、旧スペー
ス内の或るブロツクが続いてCPUの要求により結合され
る場合には、このブロツクは直ちに新スペースに転記さ
れる。
ガーベツジ コレクシヨンの追跡相の開始に当つて、
結合レジスタの各々は、そのMMUタグ(標識)フイール
ドならびに領域−idフイールドをチエツクする。このよ
うなタスクもしくは作業を行う1つの方法においては、
CAM探索が用いられるが、しかしながらこれは必須要件
ではない。各結合レジスタに対して、MMUタグ フイー
ルドが、ポインタであることを表す値を有し、そしてレ
ジスタの領域idフイールドがガーベツジ コレクシヨン
されつつある領域と一致する場合には、そのロツク ビ
ツト(フラツグ)がセツトされる。この動作で、CPU
は、結合されているブロツクが旧スペース内に存在する
間は、これらブロツクに対するアクセスは阻止される。
ロツク ビツトもしくはフラツグは、全ての結合されて
いるブロツクが新スペースに転記されてしまうまでセツ
トされた状態に留まる。
次に第10(a)図ないし第10(e)図を参照して説明
する。第10(a)図に示すように、ニユースペース212
が創成されている。旧スペース210内のブロツクに結合
されている全ての結合レジスタは、(図示のように、ロ
ツク ビツトもしくはフラツグをセツトすることにより
ロツクされている。ブロツク251は、ポインタBで始ま
る新スペース212に転記する必要がある。この転記中、
ブロツクに対し1回だけのアクセスを可能にするため
に、ブロツクのロツク ビツトがセツトされる。ブロツ
クをロツクする必要性に関しては追つて説明する。ブロ
ツク251は新スペース212に転記され、そして転記された
ブロツクは第10(b)図に、参照数字251で示されてい
る。2つの見出しセルを除き、旧スペース210内のブロ
ツク251の各セルは、転記に際して再初期設定される。
と言うのは、これらのセル内の情報は転記されるブロツ
ク内に保存されるものであり、そしてセルを再初期設定
もしくはリイニシヤライズすることにより、ユーザのセ
ル内のポインタが除去されるからである。もしポインタ
が残存しているとすると、ポインタにより指示されるブ
ロツクは不正確な参照計数を有することになり、各ポイ
ンタが旧スペース ブロツクならびに新スペース内の転
記されたブロツク内に存在することになつて、ポインタ
で指示されたブロツクの参照計数が余分のポインタを反
映しないことになるからである。
第10(c)図に示すように、旧スペース210内のブロ
ツク251のブロツク見出しHaのMMUタグもしくは標識フイ
ールドに、値「gc−前進(gc−forwars)」が与えられ
(gcはガーベツジコレクシヨンの意味)、そして最初の
ユーザのセルUOには、ポインタBによつて指示される仮
想アドレスの値(新スペース212内のブロツクの仮想ア
ドレスの値)が与えられる。新スペース210内のブロツ
ク251の参照計数には、「gc−前進」ポインタを考慮し
て値「1」が与えられる。
第10(d)図に示すように、旧スペース210内で転記
されたブロツク251に結合されている全ての連結レジス
タ211の仮想アドレス フイールドは、新スペース212内
では、ポインタBにより指示される仮想アドレスの値に
変えられる。この事により、実効的に、ブロツク251の
新アドレスが新スペース212の結合レジスタ211のフイー
ルドにロードされる。最後に、第10(e)図に示すよう
に、ポインタBは、最後に転記されたブロツク251を丁
度超えたところで、新スペース212内のセルに変位さ
れ、全てのロツク ビツトもしくはフラツグはリセツト
される。
次に第11図を参照するに、この図には、第9図と関連
して上に述べたようにイニシヤライズされたメモリ ス
ペースに対し、第10(a)図ないし第10(e)図を参照
し上述した仕方でのガーベツジコレクシヨン処理の結合
レジスタ追跡相が図解してある。図から明らかなよう
に、各結合レジスタR4およびR7によつて参照されるブロ
ツクB1およびB3は旧スペース210から新スペース212に転
記される。旧スペース210内のブロツクに対する結合レ
ジスタからのポインタは潰され、新スペース212内の転
記されたブロツクに対するポインタと置換される。ブロ
ツクB1内の見出しは、gc−前進で置き換えられ、そして
新スペース212内の転記されたブロツクB1内の参照計数
は増分される。ブロツクB3は,その結合レジスタR7以外
は参照しないので、旧スペース210のブロツクB3の見出
しには「gc−前進」は要求されない。旧スペース210内
のブロツクB3から旧スペース内のブロツクB1の見出しを
指示するポインタは潰される。と言うのは、このポイン
タは、新スペース212内のブロツクB3からのポインタに
よつて置き換えられるからである。旧スペース210内の
ブロツクB1から旧スペース内のブロツクB4に対するポイ
ンタも潰される。と言うのはこのポインタは、新スペー
ス内のブロツクB1から旧スペース内のブロツクB4に向く
ポインタにより置換されるからである。ポインタBは、
新スペース212内のブロツクB3の最後のセルの底部に変
位され、領域は、全ての内向き領域間ポインタを追跡す
る追跡相における第2の段階の処理を受け得る状態とな
る。
全ての内向き領域間ポインタは、IPTを介しガーベツ
ジ コレクタに対しては既知となる。IPTの各テーブル
記述項は、領域に対するポインタであるユーザのセルを
探知するのに用いられる。ユーザの各セルが探知される
と、このセルのデータフイールドを用いて、当該セルに
より指示されたブロツクの仮想メモリ アドレスが決定
される。これは、ポインタが、新スペース内のポインタ
Sによつて指示されるユーザのセルの代りに他の領域内
のユーザのセルに由来する点を除き、後述のスカベンジ
相中に行なわれるアクシヨンに非常によく類似してい
る。
第12図に示すように、スカベンジ相は、連結レジスタ
または他の領域におけるユーザのセルから直接アクセス
可能な旧スペース210内の全てのブロツクが新スペース2
12に転記された後に開始される。最後に転記されたブロ
ツクを丁度超えた位置にあるセルを指示する新スペース
212内のポインタBで、次のステツプで新スペース212内
のポインタBとポインタSとの間のセルが「スカベンジ
(scavenge)もしくは掃除」される。Sにより指示され
るセルが見出しセルでない場合には、このMMUタグ(標
識)フイールドをチエツクして、ポインタ セルである
か否かを判定しなければならない。ポインタ セルでな
い場合には、ポインタSを増分して同じプロセスを繰返
す。セルのMMUタグ(標識)フイールドが、領域内ポイ
ンタ セルであることを表す値「領域内」を保有してい
る場合には、ポインタSを増分する前ならびに次のセル
に対してプロセスを繰返す前に、スカベンジ アクシヨ
ンがとられる。然る後に、ポインタSは増分され続け、
該ポインタが指定するセルは、ポインタSがポインタB
と同じ新スペース212内のセルに位置するまでチエツク
される。
ポインタSのセルが領域内ポインタ セルであること
が検出された場合には、該セルにより指示されるブロツ
クの仮想メモリ アドレスを決定するためにデータ フ
イールドが用いられる。ポインタはそれが指示するブロ
ツクに続く。然る後に、当該ブロツクの最初の見出し内
のMMUタグもしくは標識フイールドの内容を見ることに
より、当該ブロツクが新スペースに既に転記されている
か否かの判定が行われる。「gc−前進」の値に出合う
と、この事は、ブロツクが既に転記されていることを意
味する。他方、値「見出し−a」に出合うと、この事は
ブロツクがまだ転記されていないことを意味する。
見出しセルのHaのMMUタグ フイールドが値「見出し
−a」を有している場合には、ブロツクは、新スペース
内のBにより指示されるアドレスに転記される。したが
つて、第12図に示すように、ブロツクB4は新スペース21
2に転記される。ブロツクの転記中、メモリのプロセツ
サが或るブロツクに対し単一回のアクセスを可能にする
ために、当該ブロツクの6ビツトは、一時的にCPUが当
該ブロツクをアクセスするのを阻止するようにセツトさ
れる。そこで、ブロツクはセル ベースで転記される。
同時に、旧スペース内の元のブロツクのユーザのセルが
イニシヤライズされる。「gc−前進」参照計数を、旧ス
ペース内の元のブロツクにセツトする。新スペース内の
転記されたブロツクの参照計数には、「gc−前進」から
の単一回の参照を反映するための値「1」が与えられ
る。転記されたブロツクを指示するセルを再び読出す。
その内容が参照である場合には、ポインタを付ける。最
も確率が高いのは、丁度転記された旧スペース内のブロ
ツクに対する参照であり、したがつて「gc−前進」を格
納している。その場合には、参照計数を格納しているセ
ルを更新して新スペース内の転記されたブロツクを参照
する。そのためには、旧スペース内の「gc−前進」ブロ
ツクの参照計数の減分ならびに新スペース内の転記され
たブロツクの増分が必要となる。希な事ではあるが今転
記されたブロツクに対する参照計数が、その間に、デー
タ或いは他のポインタで書替えられている可能性があ
る。その場合には、参照計数に対する更新或いは変更は
行われない。最後に、旧スペース内の「gc−前進」ブロ
ツクが解放される。
ブロツクの転記ステツプにおいて同じポインタが存在
することを確かめるチエツクの必要性は自明ではない。
このステツプは、転記されつつあるブロツクを参照する
ユーザのセルが、ロツクされていないブロツクの一部分
であることから必要とされるものである。該ブロツクを
ロツクすることは可能ではあるが、その場合には、転記
が完了するまで当該ブロツクの全てのユーザのセルに対
するアクセスは拒否される。ブロツク内には、CPUが必
要とし得る幾つかのポインタが存在し得る。したがつ
て、ブロツクはアクセス可能な状態に留まる。その結
果、CPUは、旧スペースから新スペースへの参照計数の
転記を開始したポインタそのものを潰すことが可能であ
る。CPUは、上位のユーザのセル内に異なつたポインタ
をロードしたり、セル内にデータを書込むことができ
る。新スペースへの転記が完了したならば、新スペース
内のブロツクを指示するようにユーザのセルを盲目的に
更新することは、メモリ プロセツサ側にとつて大きな
エラーとなり得る。したがつて、その代りにセルを再び
読出さなければならない。MMUタグ(標識)をアクセス
することにより決定されるポインタが最早や存在しない
場合には、セルのスカベンジ処理は完了する。該セルが
ポインタ セルである場合にはポインタが続く。「gc−
前進」に出合つた時には、ポインタを更新する。
上述の領域間ポインタ相中ならびにスカベンジ相中、
ブロツクの転記に要求されるステツプは、転記されつつ
あるブロツクに連結されている結合レジスタをロツク
アウトする必要性を何ら含まない。これは、結合レジス
タは、旧スペース内のブロツクに結合されないという
「規則」もしくは「ルール」に依る。しかしながらガー
ベツジ コレクタに対する排他的アクセスを保証するた
めには、転記されつつあるブロツクを、そのロツク ビ
ツトもしくはタグをセツトすることによりロツクしなけ
ればならない。並列なガーベツジ コレクシヨン処理を
許容する場合にCPUならびにガーベツジ コレクタが同
時に1つの特定のブロツクの内容にアクセスすることは
可能である。しかしながら或る種の状況は由々しい問題
を齎す。例えば、ガーベツジ コレクタが、或るブロツ
クを新スペースに転記している過程にある間に、CPU
は、再初期設定もしくはリイニシヤライズされた旧スペ
ース内のブロツク内のセルからの有効な読取りを行つた
り、既に転記されておつて新スペース内のブロツクに反
映されていないセルに対する有効な書込みを行つたりす
ることができよう。したがつて、ロツク ビツトもしく
はフラツグは、ブロツクをアクセスから阻止するのに用
いることができるのである。
上に述べたようにIPTを用いて領域間ポインタを維持
する特定の実施例においては、領域間ポインタであるユ
ーザのセルが新スペースに転記されそして元のユーザの
セルが上述のようにリイニシヤライズされる場合には常
に、他の領域における関連のIPTエントリもしくは記述
項を変更しなければならない。IPTに対して変更がなさ
れない場所には、IPTに従い、他の領域に対する内向き
ポインタが、新スペース内のセルではなく旧スペース内
の元のセルから発生されることになろう。したがつて、
旧スペースから新スペースへのブロツクのセル ベース
での転記中に、各セルは、領域間ポインタであるか否か
に関してチエツクされる。領域間ポインタでない場合に
は、セルは直ちに再初期設定もしくはリイニシヤライズ
することができる。しかしながら、領域間ポインタであ
ることが指示されている場合には、参照計数が記憶され
ている領域におけるIPT記述項を更新して新スペース内
の転記されたセルを指示するようにする必要がある。
或るブロツクが既に新スペースに転記されているか否
か、ポインタで指示されたブロツクのMMUタグ(標識)
フイールドが値「gc−前進」を有しているか否かの判定
に関して再び説明すると、この場合には転記は行われな
い。何故ならば当該ブロツクは既に転記されているから
である。その代り、Sにより指示された新スペース内の
セルのデータ フイールドが、旧スペース内のブロツク
の第1のユーザのセルのデータ フイールドの値に変え
られる。即ち指示されるブロツクの順方向の仮想アドレ
スに変えられる。この事は、単なる例としてではある
が、第12図に新スペース212におけるブロツクB1およびB
3に関して図解してある。ポインタは、旧スペース内の
「gc−前進」ブロツクとは最早や参照しないので、旧ス
ペースブロツクの参照計数は減分され、新スペース内の
ブロツクの参照計数は、図示のように、これらブロツク
に対する新しい参照を考慮して増分される。
旧スペース210において「gc−前進」ブロツクの参照
計数が上述のステツプ後に零に達すると、「gc−前進」
は最早や必要とされない。なぜならば、参照計数は、最
早や存在しないからである。したがつて、新スペース21
2内の転記されたブロツクを指示するようにポインタを
更新する必要は最早や無い。「gc−前進」ブロツクの参
照計数が零に達すると、前進ポインタを潰すことができ
る。この場合、この事は、新スペース212内の前進参照
計数を「1」だけ増分できることを意味する。しかしな
がら、上に述べたように、旧スペース内の「gc−前進」
ブロツクは回収されない。
スカベンジ処理が完了すると、全ての有用なブロツク
は新スペース212に転記されている。旧スペース210内の
ユーザのセルから新スペースに対して参照は行われない
ことは保証されるけれども、幾つかの「gc−前進」ポイ
ンタが旧スペースから新スペースに参照を行う可能性が
十分にある。旧スペース内に、「gc−前進」ブロツクに
対する参照をする必要があるような現象が生ずる。この
ような現象は、旧スペース内の「gc−前進」ブロツクに
対しさらに参照がなされる場合に起る。ユーザのセルが
「gc−前進」ブロツクを指示する1つまたは2つ以上の
ガーベツジ ブロツクで、当該「gc−前進」ブロツクに
対し非零の参照計数が生ずる。「gc−前進」ブロツクの
参照計数が零に達するまで、新スペース内のブロツクに
対する前進参照計数は残存する。
第13図は、旧スペース260から新スペース265への残存
前進ポインタの例を示す。スカベンジ処理は丁度完了し
たところである。ブロツクB2′は、結合レジスタ266に
よつて指示され、したがつて新スペース265にある。旧
スペース内のブロツクB1は、結合レジスタに連結されて
はおらずまた新スペース内にセルにより結合レジスタに
連結されてもいない。ブロツクB1は、零よりも大きい参
照計数を有しており、したがつてその限りにおいてガー
ベツジ コレクシヨン処理を生き抜いている。ブロツク
B1のセルのうちの1つが旧スペース内のブロツクB2を指
示し、ブロツクB2に対し非零の参照計数を生ずる危険が
存在する。さらに、旧スペース内のブロツクB2は、新ス
ペース内のブロツクB2′に対し前進参照を行うことがで
きる。ブロツクB2′は、その参照計数において、ブロツ
クB2から前進参照を受ける。したがつてガーベツジ コ
レクシヨンの完了の際に矯正アクシヨンが行われない場
合には、旧スペース内のブロツクB1およびブロツクB2は
消失するが、ブロツクB2′は、誤つた参照計数を有し続
け得る。旧スペースを単に利用可能な断片のリストに戻
した場合に生ずるこのような潜在的問題に鑑みて、旧ス
ペース内の全てのガーベツジ ブロツクのセルをスカベ
ンジ(掃除)して旧スペース内の他のブロツクに対する
参照を潰すことが必要である。同時に、旧スペース内の
セルは、割当変更を受けることができるようにリイニシ
ヤライズされる。
ガーベツジ ブロツクのユーザのセル内の全てのポイ
ンタを潰すことなく旧スペースを単に回収するとした場
合には別の問題が起り得る。例えば、他の領域における
ブロツクに対する外向き領域間ポインタが誤つて破壊さ
れる可能性がある。このようにガーベツジ ブロツク内
の領域間ポインタを誤つて破壊すると、他の領域に位置
するブロツク内に誤つた参照計数が生じ得る。さらに、
他の領域のIPTは、該領域について存在しない参照デー
タを参照し続けることになる。この領域に関してガーベ
ツジ コレクシヨンを行うときには、このような参照の
試みは由々しい問題となろう。
旧スペース ブロツクをスカベンジし残存ポインタを
潰す過程において、ガーベツジ コレクシヨンが行われ
つつある領域内の全てのブロツクの全ての参照計数の精
度もしくは有効性を交差チエツクする機会が存在する。
ガーベツジ コレクシヨンの旧スペースのクリーニング
相の完了時には、全てのブロツクは零の参照計数を有し
ているはずである。それと異なる結果は、由々しいエラ
ーを意味する。
次に述べる旧スペース クリーニング方式は、それが
有効となるためには、その実施に或る種の条件が課せら
れる。通常の参照計数メカニズムの過程中はブロツク回
収方法は、最早や使用されていないブロツクを記録し続
けなければならない。即ち、メモリ プロセツサは、仮
想アドレス空間内の「ホール(穴)」の位置および大き
さに関する情報を有しなければならない。この方式は、
この条件が満たされないと不可能であるが、この相を完
了するには相当長い時間を要する。と言うのは、既にイ
ニシヤライズされている多くのセルが不必要にもスカベ
ンジ(掃除)されてしまうからである。
また、メモリ プロセツサは、ガーベツジ コレクシ
ヨンが行われている領域の旧スペースにおける通常のブ
ロツク回収を「ターン オフ」する能力を有するのが望
ましい。参照計数が零に達すると、参照計数メカニズム
は、ブロツクにより占有されている領域には戻らない。
メモリ プロセツサはそこで、その作業を参照計数メカ
ニズム側を遮断することなく、ガーベツジ コレクシヨ
ンに集中することができる。ガーベツジ コレクシヨン
後 旧スペース全体は利用可能なスペースの集まりもし
くはプールに戻される。ここで、回収は旧スペースで停
止されるものと仮定する。したがつて例えば、旧スペー
ス内の「gc−前進ブロツク」が零に達つしている参照計
数を有している場合には、このブロツクは依然として旧
スペース内に留まる。
各ブロツクの見出しセルHbには、「スカベンジ」フラ
ツグ ビツトが設けられている(第3図参照)。このビ
ツトは、ガーベツジ コレクシヨン相中に有用となる。
後述の、旧スペースのクリーニングで、旧スペース全体
に渡り単一回のスカベンジが行われる。旧スペース全体
が掃引されると、各セルはイニシヤライズされる。しか
しながら、追つて明らかになるように、或るセルの早ま
つたイニシヤライジングもしくは初期設定は、有用であ
る情報を破壊してしまう。したがつて、或るセルをスカ
ベンジする場合に、相の後期におい或る条件が満される
まで初期設定もしくはイニシヤライズは行うことができ
ず、スカベンジ フラツグ ビツトを介して既にスカベ
ンジされたセルであることのフラツグが立てられる。
旧スペースのスカベンジが完了した後に、旧スペース
内には3種類の客体が存在する。即ち、(1)割当てら
れていない領域断片と、(2)新スペースに転記されて
現在「gc−前進」アドレスを収容している元の有用なブ
ロツクと、(3)ガーベツジ ブロツクである。
これら客体の1つが、一度に1つのセルずつ旧スペー
スの全長を走査するポインタSにより指示されると、後
述するような或る種のアクシヨンが生ずる。その場合の
アルゴリズムは、大きいセル群が、それらの内容をチエ
ツクする必要無しに看過されるという点を除いて、新ス
ペースのスカベンジ処理で用いられたアルゴリズムと類
似している。ポインタSは必要のあるセルだけに関与す
る。
ポインタSは、最初、旧スペース内の最下位アドレス
セルを指示する。このアドレスにおいては、3つの客
体のうちの1つに出会う。以下、それがその客体である
かを判定する仕方について述べる。ポインタSは総ての
旧スペースが掃引されるまでセルを走査し続ける。各客
体に対してとられるアクシヨンは次の通りである。
1 領域断片:指示されているセルのMMUタグ(標識)
フイールドが、それがイニシヤライズもしくは初期設定
されたセルであることを表わす値を有している場合に
は、次のN個のセルは、カーベツジ コレクシヨンの直
前までは割当てられていなかつたことになる。例えば、
ブロツクはその参照計数が零に達した後に固収されてお
り、そしてセルは他のブロツクを形成するために再割当
てされていなかつた。数Nは、領域断片リストをアクセ
スするこにより決定することができる。ポインタSは、
ポインタに対する中間セルをスカベンジする必要はない
のでNセルだけ増分することができる。
2 前進アドレスを有するブロツク:指示されたセルの
MMUタグ(標識)フイールドが値「gc−forward(前
進)」を有している場合には、セルは、新スペースに転
記されたブロツクの第1の見出しセルHaである。このブ
ロツクのユーザのセル総てが再初期設定されているの
で、これらセルはスカベンジする必要はない。したがつ
てポインタSは、ブロツクを丁度越える位置にあるセル
まで増分される。ブロツクのユーザのセルは、追跡もし
くはスカベンジ相中にリイニシヤライズされているが、
現在前進アドレスを保有する第1のユーザのセルおよび
2つの見出しセルはリイニシヤライズされていない。前
進アドレスは、ブロツクに対する総ての有用なポインタ
が潰されていることが判定されるまで有用として留ま
る。ガーベツジ ブロツク内には、ポインタSでブロツ
クを指示するセルが存在し得る。前進アドレスが無い場
合には、前進に関する参照が最終的に潰された時、即ち
旧スペース内のブロツクに対する最後の参照が潰された
後には、新スペース内における参照計数を何処で減分す
べきかを知ることができない。新スペースのスカベンジ
処理の完了は前進ポインタが最早や必要でないことを表
わす。順方向を指示しているガーベツジ ブロツクがあ
れば、新スペースを指示するように更新するのではなく
潰す。したがつて、第1のユーザのセルUOにおける「gc
−前進」が存在すると仮定するとポインタは潰され、そ
の新スペース内の参照計数は「1」だけ減分された参照
計数となる。「gc−前進」ブロツクに対する参照計数
が、ガーベツジ コレクシヨンの初期の相において既に
零に達している場合には、該「gc−前進」ポインタは既
に潰されている可能性がある。そこで、Sによつて指示
されるブロツクの見出しセルの再初期設定の判定におい
ては注意を要する。参照計数はチエツクしなければなら
ない。この計数が零である場合にはこのことは、それを
指示するガーベツジ セルは存在しないことを意味し、
セルを再初期設定もしくはリイニシヤライズすることが
できる。参照計数が零よりも大きい時には、情報が残存
していることを意味する。さらにHbにスカベンジ ビツ
トがセツトされる。これは、Sが旧スペースを前進し続
け、そして既に通過したセルには決して戻ることがない
ので、参照計数が零に達した時に見出しセルを再初期設
定するのに必要である。
3 ガーベツジ ブロツク:指示されたセルのMMUタグ
(標識)フイールドが値「見出し−a」を有している場
合には、これは、ガーベツジ ブロツクの最初の見出し
セルHaである。ガーベツジ ブロツクのセルをスカベン
ジ処理する前に、前進アドレスを有するブロツクの場合
と将に同様に、参照計数をチエツクする。この計数が零
である場合には、見出しセルを再初期設定する。そうで
ない場合には、Hbにスカベンジ フラツグをセツトす
る。この場合には、ブロツクの各セルをチエツクしなけ
ればならない。Sがブロツクにおいて1度に1セルずつ
前進する際に、MMUタグ フイールドをチエツクして、
ポインタセルであることを意味する「領域内」または
「領域間」の値を有しているか否かを確かめる。この値
を有していない場合には、セルは再初期設定される。ま
た、領域内ポインタである場合には、このポインタはセ
ルを再初期設定する前に潰さなければならない。データ
フイールドは指示されたブロツクのアドレスを保有し
ている。スカベンジされつつあるセルにより指示されて
いる旧スペース内のブロツクの参照計数は減分される。
参照計数を減分して零にし、ブロツクのHbにスカベンジ
フラツグをセツトした場合には、当該ブロツクに対す
るポインタは最早や存在しないので、見出しセルを再初
期設定する。スカベンジ ビツトがセツトされていない
場合には、Sポインタが当該ブロツクに到達した時点
で、今度は無用なセルを再初期設定する。他方、ポイン
タが領域間ポインタであることが判明したならば、ポイ
ンタを潰し、参照計数を減分し、参照側の記述項のIPT
表から関連の記述項を除去する。
総てのアクセス可能なブロツクを新スペースに転記
し、そして総ての適用可能なポインタを更新したならば
(このことはポインタSが新スペース内のポインタに達
していると言う事実によつて示される)、ガーベツジ
コレクシヨンが本質的に完了している。後は唯利用可能
なセルの断片リストに旧スペース(OLDSPACE)を挿入
し、ポインタBとポインタTとの間にあるメモリ部分で
あるところの新スペース(NEWSPACE)の未使用の部分を
領域アロケータに利用可能にすることだけである。かく
して領域のガーベツジ コレクシヨンは完了する。
以上、本発明を或る程度特定的に説明したが、ここに
開示した内容な単なる例に過ぎず、本発明の精神および
範囲から逸脱することなく当業者には組合せおよび配列
もしくは構成における数多の変更が可能であろうことは
理解されるであろう。
【図面の簡単な説明】
第1図は、ユーザのCPUと、物理的メモリと、本発明に
よる記憶域管理装置MMUの相互関係を示すブロツク ダ
イヤグラム、第2図は、結合されるユーザのプロセツサ
に対し論理的空間として現われる本発明による記憶装置
のブロツク ダイヤグラム、第3図は、本発明の記憶装
置の好ましい実施例を実現する上でMMUにおいて使用さ
れる結合もしくは連結レジスタ構造を示すブロツクダイ
ヤグラム、第4図は、本発明により記憶装置を実現する
上で用いられる結合レジスタ装置のブロツク ダイヤグ
ラム、第5図は、本発明による記憶装置を汎用ハードウ
エアで実現する構成を示すブロツク ダイヤグラム、第
6図は、本発明による記憶装置の仮想アドレス空間の一
部分を示す図であつて、領域間および領域内ポインタ構
成の種々の形態を図解するダイヤグラム、第7図は、ガ
ーベツジ コレクシヨン前の本発明の記憶装置の仮想ア
ドレス空間の領域を図解するダイヤグラム、第8図は、
第7図に示した仮想アドレス空間に対して行なわれるガ
ーベツジ コレクシヨン処理から生ずるガーベツジ コ
レクシヨン後の本発明による記憶装置の仮想アドレス空
間の1つの領域を示す図、第9図は、ガーベツジ コレ
クシヨン処理の準備段階として領域の初期設定相を示す
本発明による記憶装置の仮想アドレス空間の部分を示す
図、第10a図ないし第10e図は、ガーベツジ処理されてい
るスペースもしくは空間から結合されたブロツクを新ス
ペースに転記する段階を図解する図、第11図は、ガーベ
ツジ コレクシヨン処理中の結合レジスタを追跡した後
の領域を図解する図、第12図は、第11図において追跡さ
れた領域をスカベンジした結果を図解する図、そして第
13図は、クリーニング前の旧スペースを図解するダイヤ
グラムである。 11……記憶域管理装置(MMU)、12……物理的メモリ、1
5……連結レジスタ装置、20……CPU、64……MMUタグ
(標識)、80……CPUインターフエース、81……プロセ
ツサ インターフエース、83……連結レジスタ フアイ
ル、84……データ路制御回路、90……命令デコーダ、92
……シーケンサ、93……制御ROM/RAM、100……プロセツ
サ、102……主メモリ、104……ページ テーブル装置、
106……デイスク装置、108……デイスク コントローラ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 テイモシイ ジエイ.マツクエンテイー アメリカ合衆国テキサス州ダラス,ウオ ルナツト ストリート ナンバー 1075,10000 (72)発明者 サテイツシユ エム.サツテ アメリカ合衆国テキサス州リチヤードソ ン,エルク グロウブ 1304 (56)参考文献 特開 昭60−27962(JP,A)

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】中央処理装置とともに使用するためのコン
    ピュータシステムのメモリシステムであって、 (a)前記中央処理装置に接続される複数の結合レジス
    タを有する結合レジスタユニットであって、前記中央処
    理装置がある結合レジスタとオフセット値とを参照する
    ことによってのみメモリにアクセスさせる、前記結合レ
    ジスタユニットと、 (b)アドレス空間を有する物理メモリと、 (c)前記結合レジスタユニットに接続され、前記中央
    処理装置とは前記結合レジスタユニットを介して接続さ
    れ、メモリプロセッサを有するメモリ管理手段であっ
    て、前記メモリ管理手段は、前記中央処理装置による結
    合レジスタとオフセット値との参照の結果を前記物理メ
    モリのアドレスに変換するメモリ管理手段と、 (d)前記メモリ管理手段内に設けられ、前記メモリプ
    ロセッサによって動作させられるガーベッジコレクタで
    あって前記中央処理装置によってアクセスすることがで
    きないメモリの領域を識別し、かつ、前記メモリ管理手
    段による使用のために前記領域を解放するガーベッジコ
    レクタを具備し、前記中央処理装置によってアクセス可
    能な領域は、いずれかの結合レジスタからポインタをた
    どることによって直接的にあるいは間接的に到達し得る
    領域であることを特徴とするメモリシステム。
  2. 【請求項2】ユーザプロセッサと共に使用するためのメ
    モリシステムにおいて、 (a)物理メモリと、 (b)前記ユーザプロセッサによりアクセスされる複数
    の結合レジスタを有する結合レジスタユニットであっ
    て、前記レジスタはデータとメモリのブロックに対する
    識別子を有し、前記結合レジスタがデータ操作のための
    前記ユーザプロセッサによる相対位置の索引を可能にす
    る結合レジスタユニットと、 (c)前記結合レジスタユニットに接続され、前記ユー
    ザプロセッサとは前記結合レジスタユニットを介して接
    続され、前記ユーザプロセッサとは独立に、前記物理メ
    モリおよび前記結合レジスタを管理する管理手段と、前
    記メモリシステムは、前記結合レジスタを介してのみア
    クセスされるユーザ指定のブロックを収集するように機
    能し、 (d)前記物理メモリを制御するコンピュータプログラ
    ム手段と、 (e)前記結合レジスタユニットに接続され、前記ユー
    ザプロセッサとは前記結合レジスタユニットを介して接
    続され、前記ユーザプロセッサの動作とは独立且つ並列
    に、前記物理メモリを表す仮想アドレス空間のガーベッ
    ジコレクションを行うための結合レジスタ管理手段を具
    備し、いずれかの結合レジスタから直接的又は関接的に
    ポインタをたどることによって到達し得ないブロックは
    ガーベッジとし、いずれかの結合レジスタから直接的又
    は関接的にポインタをたどることによって到達し得るブ
    ロックはガーベッジとはしないことを特徴とするメモリ
    システム。
JP60167863A 1984-07-31 1985-07-31 接続されたユ−ザのプロセツサとは独立の並列ガ−ベツジコレクシヨン機能を有するコンピユ−タ記憶装置 Expired - Lifetime JP2564483B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US636187 1984-07-31
US06/636,187 US4775932A (en) 1984-07-31 1984-07-31 Computer memory system with parallel garbage collection independent from an associated user processor

Publications (2)

Publication Number Publication Date
JPS61105653A JPS61105653A (ja) 1986-05-23
JP2564483B2 true JP2564483B2 (ja) 1996-12-18

Family

ID=24550821

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60167863A Expired - Lifetime JP2564483B2 (ja) 1984-07-31 1985-07-31 接続されたユ−ザのプロセツサとは独立の並列ガ−ベツジコレクシヨン機能を有するコンピユ−タ記憶装置

Country Status (3)

Country Link
US (1) US4775932A (ja)
EP (1) EP0173464A3 (ja)
JP (1) JP2564483B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185687B2 (en) 2010-01-29 2012-05-22 Kabushiki Kaisha Toshiba Semiconductor storage device and method of controlling semiconductor storage device

Families Citing this family (191)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62208977A (ja) * 1986-03-10 1987-09-14 Brother Ind Ltd プリンタ
GB8613069D0 (en) * 1986-05-29 1986-07-02 Univ Manchester Parallel storage allocation
US4912629A (en) * 1986-06-26 1990-03-27 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Real-time garbage collection for list processing using restructured cells for increased reference counter size
US4967353A (en) * 1987-02-25 1990-10-30 International Business Machines Corporation System for periodically reallocating page frames in memory based upon non-usage within a time period or after being allocated
US4989134A (en) * 1987-03-20 1991-01-29 Hewlett-Packard Company Method and apparatus for enhancing data storage efficiency
US4961137A (en) * 1987-04-17 1990-10-02 U.S. Philips Corporation Method for operating a multiprocessor system for therein establishing a global binary assertion and a multiprocessor apparatus comprising synchronization means for such establishing, in particular for effecting a garbage collection operation
US5136706A (en) * 1987-04-30 1992-08-04 Texas Instruments Incorporated Adaptive memory management system for collection of garbage in a digital computer
US5121495A (en) * 1988-02-02 1992-06-09 Bell Communications Research, Inc. Methods and apparatus for information storage and retrieval utilizing hashing techniques
US4996663A (en) * 1988-02-02 1991-02-26 Bell Communications Research, Inc. Methods and apparatus for decontaminating hash tables
US5438674A (en) * 1988-04-05 1995-08-01 Data/Ware Development, Inc. Optical disk system emulating magnetic tape units
US5455926A (en) * 1988-04-05 1995-10-03 Data/Ware Development, Inc. Virtual addressing of optical storage media as magnetic tape equivalents
US4953080A (en) * 1988-04-25 1990-08-28 Hewlett-Packard Company Object management facility for maintaining data in a computer system
US4907151A (en) * 1988-09-30 1990-03-06 Digital Equipment Corporation System and method for garbage collection with ambiguous roots
EP0417293B1 (en) * 1988-12-14 1998-08-12 Sony Corporation Data management system
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5297283A (en) * 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
US5321834A (en) * 1989-11-28 1994-06-14 Xerox Corporation Method and system for reclaiming unreferenced computer memory space
JPH0792775B2 (ja) * 1989-12-11 1995-10-09 株式会社日立製作所 外部記憶装置群のスペース管理方法
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5237673A (en) * 1991-03-20 1993-08-17 Digital Equipment Corporation Memory management method for coupled memory multiprocessor systems
US5319778A (en) * 1991-07-16 1994-06-07 International Business Machines Corporation System for manipulating elements in linked lists sharing one or more common elements using head nodes containing common offsets for pointers of the linked lists
US5355483A (en) * 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
US5809551A (en) * 1991-08-23 1998-09-15 International Business Machines Corporation Pending page release
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
JPH0738168B2 (ja) * 1991-09-19 1995-04-26 工業技術院長 データ処理装置
US5659744A (en) * 1991-10-15 1997-08-19 International Computers Limited Data file store system with means for efficiently managing freeing of data blocks
US5367637A (en) * 1992-03-26 1994-11-22 International Business Machines Corporation Self-tuning virtual storage management for dedicated real-time computer system
US5398334A (en) * 1992-04-06 1995-03-14 General Electric Company System for automatic garbage collection using strong and weak encapsulated pointers
EP0574884B1 (en) * 1992-06-15 2003-02-19 Microsoft Corporation A computer method and system for memory management
WO1994002898A1 (en) * 1992-07-24 1994-02-03 Microsoft Corporation Computer method and system for allocating and freeing memory
US5577246A (en) * 1992-09-25 1996-11-19 Lucent Technologies Inc. Database memory compaction and reclamation method
US5581724A (en) * 1992-10-19 1996-12-03 Storage Technology Corporation Dynamically mapped data storage subsystem having multiple open destage cylinders and method of managing that subsystem
US5740395A (en) * 1992-10-30 1998-04-14 Intel Corporation Method and apparatus for cleaning up a solid state memory disk storing floating sector data
US5479633A (en) * 1992-10-30 1995-12-26 Intel Corporation Method of controlling clean-up of a solid state memory disk storing floating sector data
US5560003A (en) * 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
US5761739A (en) * 1993-06-08 1998-06-02 International Business Machines Corporation Methods and systems for creating a storage dump within a coupling facility of a multisystem enviroment
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5664060A (en) * 1994-01-25 1997-09-02 Information Storage Devices Message management methods and apparatus
US5583988A (en) * 1994-03-09 1996-12-10 National Instruments Corporation Method and apparatus for providing runtime checking features in a compiled programming development environment
JPH086843A (ja) * 1994-06-23 1996-01-12 Fujitsu Ltd 半導体記憶装置
US5613063A (en) * 1994-07-01 1997-03-18 Digital Equipment Corporation Method and apparatus for checking validity of memory operations
US6341293B1 (en) * 1994-07-13 2002-01-22 Object Technology Licensing Corp Real-time computer “garbage collector”
US5687368A (en) * 1994-07-22 1997-11-11 Iowa State University Research Foundation, Inc. CPU-controlled garbage-collecting memory module
US5765175A (en) * 1994-08-26 1998-06-09 Intel Corporation System and method for removing deleted entries in file systems based on write-once or erase-slowly media
US5809558A (en) * 1994-09-29 1998-09-15 Intel Corporation Method and data storage system for storing data in blocks without file reallocation before erasure
US5754817A (en) * 1994-09-29 1998-05-19 Intel Corporation Execution in place of a file stored non-contiguously in a non-volatile memory
US5687370A (en) 1995-01-31 1997-11-11 Next Software, Inc. Transparent local and distributed memory management system
US6571262B2 (en) * 2000-02-14 2003-05-27 Apple Computer, Inc. Transparent local and distributed memory management system
US5604902A (en) * 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
US6167503A (en) * 1995-10-06 2000-12-26 Compaq Computer Corporation Register and instruction controller for superscalar processor
US5689707A (en) * 1995-12-04 1997-11-18 Ncr Corporation Method and apparatus for detecting memory leaks using expiration events and dependent pointers to indicate when a memory allocation should be de-allocated
US5794044A (en) * 1995-12-08 1998-08-11 Sun Microsystems, Inc. System and method for runtime optimization of private variable function calls in a secure interpreter
US5860082A (en) * 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US6233621B1 (en) * 1996-04-30 2001-05-15 Sun Microsystems, Inc. System and method for space efficient hashcode allocation
US6186677B1 (en) 1996-08-27 2001-02-13 Compuware Corporation Byte code instrumentation
US5987249A (en) * 1996-08-27 1999-11-16 Numega Technologies IR code instrumentation
US5930830A (en) * 1997-01-13 1999-07-27 International Business Machines Corporation System and method for concatenating discontiguous memory pages
US5911144A (en) * 1997-04-23 1999-06-08 Sun Microsystems, Inc. Method and apparatus for optimizing the assignment of hash values to nodes residing in a garbage collected heap
US6038572A (en) * 1997-04-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for localizing nodes in a garbage collected carded heap
US5845298A (en) * 1997-04-23 1998-12-01 Sun Microsystems, Inc. Write barrier system and method for trapping garbage collection page boundary crossing pointer stores
US6115782A (en) * 1997-04-23 2000-09-05 Sun Micosystems, Inc. Method and apparatus for locating nodes in a carded heap using a card marking structure and a node advance value
US5953736A (en) * 1997-04-23 1999-09-14 Sun Microsystems, Inc. Write barrier system and method including pointer-specific instruction variant replacement mechanism
US6098089A (en) * 1997-04-23 2000-08-01 Sun Microsystems, Inc. Generation isolation system and method for garbage collection
US5915255A (en) * 1997-04-23 1999-06-22 Sun Microsystems, Inc. Method and apparatus for referencing nodes using links
US5920876A (en) * 1997-04-23 1999-07-06 Sun Microsystems, Inc. Performing exact garbage collection using bitmaps that identify pointer values within objects
US5903900A (en) * 1997-04-23 1999-05-11 Sun Microsystems, Inc. Method and apparatus for optimizing exact garbage collection of array nodes in a carded heap
US6049810A (en) * 1997-04-23 2000-04-11 Sun Microsystems, Inc. Method and apparatus for implementing a write barrier of a garbage collected heap
US5900001A (en) * 1997-04-23 1999-05-04 Sun Microsystems, Inc. Method and apparatus for optimizing exact garbage collection using a bifurcated data structure
US5933840A (en) * 1997-05-19 1999-08-03 International Business Machines Corporation Garbage collection in log-structured information storage systems using age threshold selection of segments
US6199075B1 (en) * 1997-05-30 2001-03-06 Sun Microsystems, Inc. Method and apparatus for generational garbage collection of a heap memory shared by multiple processors
US6182107B1 (en) * 1997-06-03 2001-01-30 Object Technology Licensing Corporation Management of reference object lifetimes in object oriented programs
US5857210A (en) * 1997-06-26 1999-01-05 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including read and write barriers associated with an instance of a partially relocated object
US5873105A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object
US5873104A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with source and target instances of a partially relocated object
US6055612A (en) * 1997-07-11 2000-04-25 Geodesic Systems, Inc. Incremental garbage collector with decommit barrier
US6144965A (en) * 1997-09-24 2000-11-07 Sony Corporation Performing memory management in an object-oriented programming environment
US6151685A (en) * 1998-05-15 2000-11-21 International Business Machines Corporation System and method for recovering a segment directory for a log structured array
US7013305B2 (en) 2001-10-01 2006-03-14 International Business Machines Corporation Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange
US6327701B2 (en) * 1998-09-15 2001-12-04 Sun Microsystems, Inc. Method and apparatus for finding bugs related to garbage collection in a virtual machine
US6226761B1 (en) 1998-09-24 2001-05-01 International Business Machines Corporation Post dump garbage collection
GB9907278D0 (en) * 1999-03-31 1999-05-26 Philips Electronics Nv Memory reclamation method and apparatus
US6363403B1 (en) * 1999-06-30 2002-03-26 Lucent Technologies Inc. Garbage collection in object oriented databases using transactional cyclic reference counting
US6393440B1 (en) * 1999-12-13 2002-05-21 International Business Machines Corporation Data structure for keeping track of objects remaining to be traced by concurrent garbage collector
JP4050855B2 (ja) * 2000-01-28 2008-02-20 松下電器産業株式会社 ガベージコレクション装置および方法
US6526422B1 (en) * 2000-05-15 2003-02-25 Sun Microsystems, Inc. Striding-type generation scanning for parallel garbage collection
US6826583B1 (en) 2000-05-15 2004-11-30 Sun Microsystems, Inc. Local allocation buffers for parallel garbage collection
US6823351B1 (en) * 2000-05-15 2004-11-23 Sun Microsystems, Inc. Work-stealing queues for parallel garbage collection
US6463515B1 (en) 2000-06-23 2002-10-08 Dell Products L.P. System and method for recovering physical memory locations in a computer system
US7216136B2 (en) * 2000-12-11 2007-05-08 International Business Machines Corporation Concurrent collection of cyclic garbage in reference counting systems
US6993770B1 (en) * 2001-01-12 2006-01-31 Sun Microsystems, Inc. Lock free reference counting
US6654773B2 (en) * 2001-02-27 2003-11-25 Tajea Corporation Method of deterministic garbage collection
US7103887B2 (en) * 2001-06-27 2006-09-05 Sun Microsystems, Inc. Load-balancing queues employing LIFO/FIFO work stealing
GB0116497D0 (en) * 2001-07-06 2001-08-29 Koninkl Philips Electronics Nv Receiver apparatus and method
US7047213B2 (en) * 2001-10-03 2006-05-16 International Business Machines Corporation Method for purging abandoned shopping carts from an electronic commerce web site
JP2005521133A (ja) * 2002-03-20 2005-07-14 リサーチ イン モーション リミテッド 移動装置における機密保護ガーベージコレクション・システムおよび方法
US6728738B2 (en) * 2002-04-03 2004-04-27 Sun Microsystems, Inc. Fast lifetime analysis of objects in a garbage-collected system
US7403961B1 (en) * 2003-03-14 2008-07-22 Xilinx, Inc. Dangling reference detection and garbage collection during hardware simulation
GB2406181B (en) * 2003-09-16 2006-05-10 Siemens Ag A copy machine for generating or updating an identical memory in redundant computer systems
US7191307B1 (en) * 2004-12-14 2007-03-13 Sun Microsystems, Inc. Memory management unit technique to detect cross-region pointer stores
US7716403B2 (en) * 2005-09-30 2010-05-11 Rockwell Automation Technologies, Inc. Information technology integration with automation systems
US7734603B1 (en) * 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
US8229902B2 (en) 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
US7885932B2 (en) * 2006-11-01 2011-02-08 Ab Initio Technology Llc Managing storage of individually accessible data units
KR100789406B1 (ko) * 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
KR20080085574A (ko) * 2007-03-20 2008-09-24 삼성전자주식회사 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
US7685182B2 (en) * 2007-05-08 2010-03-23 Microsoft Corporation Interleaved garbage collections
US8103706B2 (en) * 2007-10-05 2012-01-24 Microsoft Corporation Nondeferred reference-counting garbage collection using overlooking roots
US20090094301A1 (en) * 2007-10-05 2009-04-09 Microsoft Corporation Applications of overlooking root information for improving nondeferred reference-counting garbage collection
US9208081B1 (en) * 2007-11-30 2015-12-08 Oracle America, Inc. Concurrent object management
US8239611B2 (en) 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
JP5120455B2 (ja) * 2008-08-11 2013-01-16 富士通株式会社 ガーベジコレクションプログラム、及びガーベジコレクション方法、ならびにガーベジコレクションシステム
US8301672B2 (en) * 2008-09-22 2012-10-30 Advanced Micro Devices, Inc. GPU assisted garbage collection
US8473900B2 (en) * 2009-07-01 2013-06-25 Advanced Micro Devices, Inc. Combining classes referenced by immutable classes into a single synthetic class
US8200718B2 (en) * 2009-07-02 2012-06-12 Roberts Michael L Parallelized, incremental garbage collector
US8327109B2 (en) * 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
US8108447B2 (en) * 2010-03-11 2012-01-31 Symantec Corporation Systems and methods for garbage collection in deduplicated data systems
US8577936B2 (en) * 2010-11-29 2013-11-05 International Business Machines Corporation Fixup cache tool for object memory compaction in an information handling system
US8661221B2 (en) * 2011-03-16 2014-02-25 International Business Machines Corporation Leasing fragmented storage between processes
US20130013605A1 (en) 2011-07-08 2013-01-10 Stanfill Craig W Managing Storage of Data for Range-Based Searching
US8688754B1 (en) * 2012-09-19 2014-04-01 International Business Machines Corporation Remembered set overhead reduction by deferred garbage collections of stable regions
WO2014205187A1 (en) 2013-06-20 2014-12-24 The United States Of America, As Represented By The Secretary, Department Of Health And Human Services Cytolethal distending toxin subunit b conjugated or fused to bacillus anthracis toxin lethal factor
US9361224B2 (en) 2013-09-04 2016-06-07 Red Hat, Inc. Non-intrusive storage of garbage collector-specific management data
CN105446653B (zh) 2014-08-27 2018-12-14 阿里巴巴集团控股有限公司 一种数据合并方法和设备
KR102449192B1 (ko) 2015-09-10 2022-09-29 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
KR102501751B1 (ko) 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
US10359954B2 (en) 2017-05-31 2019-07-23 Alibaba Group Holding Limited Method and system for implementing byte-alterable write cache
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10303241B2 (en) 2017-06-19 2019-05-28 Alibaba Group Holding Limited System and method for fine-grained power control management in a high capacity computer cluster
US10564856B2 (en) 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
US10678443B2 (en) 2017-07-06 2020-06-09 Alibaba Group Holding Limited Method and system for high-density converged storage via memory bus
US10089235B1 (en) 2017-07-28 2018-10-02 Citrix Systems, Inc. Dynamic trim processing with disk caching
US10303601B2 (en) 2017-08-11 2019-05-28 Alibaba Group Holding Limited Method and system for rearranging a write operation in a shingled magnetic recording device
US10423508B2 (en) 2017-08-11 2019-09-24 Alibaba Group Holding Limited Method and system for a high-priority read based on an in-place suspend/resume write
US10496829B2 (en) 2017-09-15 2019-12-03 Alibaba Group Holding Limited Method and system for data destruction in a phase change memory-based storage device
US10642522B2 (en) 2017-09-15 2020-05-05 Alibaba Group Holding Limited Method and system for in-line deduplication in a storage drive based on a non-collision hash
US10789011B2 (en) * 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer
US10503409B2 (en) 2017-09-27 2019-12-10 Alibaba Group Holding Limited Low-latency lightweight distributed storage system
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10445190B2 (en) 2017-11-08 2019-10-15 Alibaba Group Holding Limited Method and system for enhancing backup efficiency by bypassing encoding and decoding
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US10402112B1 (en) 2018-02-14 2019-09-03 Alibaba Group Holding Limited Method and system for chunk-wide data organization and placement with real-time calculation
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US10747673B2 (en) * 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
KR102620731B1 (ko) * 2018-09-27 2024-01-05 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10884654B2 (en) 2018-12-31 2021-01-05 Alibaba Group Holding Limited System and method for quality of service assurance of multi-stream scenarios in a hard disk drive
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CS164932B2 (ja) * 1971-09-07 1975-11-28
US3882470A (en) * 1974-02-04 1975-05-06 Honeywell Inf Systems Multiple register variably addressable semiconductor mass memory
US4189773A (en) * 1974-07-03 1980-02-19 General Electric Company On-line memory space allocation
GB1548401A (en) * 1975-10-08 1979-07-11 Plessey Co Ltd Data processing memory space allocation and deallocation arrangements
JPS5436144A (en) * 1977-08-26 1979-03-16 Toshiba Corp Address conversion unit
JPS56140451A (en) * 1980-03-31 1981-11-02 Hitachi Ltd Log information holding device
JPS5835656A (ja) * 1981-08-27 1983-03-02 Fujitsu Ltd セル管理制御方式
JPS58146946A (ja) * 1982-02-26 1983-09-01 Nec Corp リストメモリ
JPS6027962A (ja) * 1983-07-26 1985-02-13 Nec Corp 構造体メモリ管理方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185687B2 (en) 2010-01-29 2012-05-22 Kabushiki Kaisha Toshiba Semiconductor storage device and method of controlling semiconductor storage device

Also Published As

Publication number Publication date
EP0173464A2 (en) 1986-03-05
EP0173464A3 (en) 1989-09-13
JPS61105653A (ja) 1986-05-23
US4775932A (en) 1988-10-04

Similar Documents

Publication Publication Date Title
JP2564483B2 (ja) 接続されたユ−ザのプロセツサとは独立の並列ガ−ベツジコレクシヨン機能を有するコンピユ−タ記憶装置
US6249793B1 (en) Mostly concurrent compaction in a garbage collection system
JP4130481B2 (ja) ポインタ依存擬似命令置換機構を含むライトバリアシステム及び方法
US6424977B1 (en) Train-algorithm-based garbage collector employing reduced oversized-object threshold
JP4104668B2 (ja) ガーベッジコレクションページ境界横断ポインタストアをトラップするためのライトバリアシステム及び方法
US7136887B2 (en) Method and mechanism for finding references in a card in time linear in the size of the card in a garbage-collected heap
JP3881702B2 (ja) 部分的に再配置されたオブジェクトのソース及び目標インスタンスに関する書込みバリアを含む有界休止時間ガーベッジコレクションシステム及び方法
JP3957770B2 (ja) 部分的に再配置されたオブジェクトのソースインスタンスに関連する書き込みバリアを含む有界休止時間ガーベッジコレクションシステム及びその方法
US6415302B1 (en) Train-algorithm-based garbage collector employing farthest-forward-car indicator
US7031990B2 (en) Combining external and intragenerational reference-processing in a garbage collector based on the train algorithm
US6845437B2 (en) Computer system with heap and card table
US7069281B2 (en) Efficient collocation of evacuated objects in a copying garbage collector using variably filled local allocation buffers
US7058670B2 (en) Scalable, space-efficient, parallel remembered-sets
US7412580B1 (en) Concurrent incremental garbage collector with a card table summarizing modified reference locations
US7035884B2 (en) Placement of allocation trains in the train algorithm
JP2002506548A (ja) 部分的に再配置されたオブジェクトのインスタンスに関連する読み込みバリア及び書き込みバリアを有する有界休止時間ガーベッジコレクションシステム及びそのガーベッジコレクション方法
US7062519B2 (en) Incremental scanning of enormous objects to improve scheduling and pause-time behavior of garbage collection
US6999979B2 (en) Efficient encoding of references into a collection set
US7062518B2 (en) Efficiently supporting the existence of long trains in a generation managed by the train algorithm
US20040122874A1 (en) Lock-free, parallel remembered sets
US7617264B1 (en) Parallel remembered-set processing respecting popular-object detection
US7653793B1 (en) Use of memory protection to implement replicating collection in an incremental, copying garbage collector
US7096329B2 (en) Better placement of objects promoted into a generation managed by the train algorithm
US7039664B2 (en) Combining entries in a card object table
US7024437B2 (en) Better placement of objects reachable from special objects during collection based on the train algorithm

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term