-
GEBIET DER
ERFINDUNG
-
Diese Erfindung bezieht sich allgemein
auf das Speichermanagement in Laufzeitumgebungen und insbesondere
auf einen Algorithmus zur Sammlung wertloser Daten (Garbage-Collection-Algorithmus),
der nicht-temporale Speicheroperationen (non-temporal stores) verwendet,
um die Zeit zur Sammlung wertloser Daten (garbage collection time) zu
reduzieren.
-
HINTERGRUND DER ERFINDUNG
-
Der Speicher mit wahlfreiem Zugriff
(RAM) eines Rechnersystems ist eine Ressource fest vorgegebener
Größe; gegenwärtig ist
eine RAM-Größe von 32
Megabyte (Mb) typisch. Der RAM muß richtig verwaltet werden,
um die Systemleistung zu halten. In Laufzeitumgebungen, wie beispielsweise
JAVA oder Microsoft CLI, wird das Speichermanagement von dem System
gehandhabt. Das Speichermanagement umfaßt einen als „Abfallsammlung" („Sammlung
wertloser Daten"; „garbage
collection") bekannten
Prozeß.
Die Abfallsammlung ist ein Prozeß mit dem Ziel, so unauffällig wie
möglich
beim Wiederverwerten von Speicher zu sein. Wenn ein Computerprogramm
abläuft
oder abgearbeitet wird, teilt es Abschnitte eines Speichers auf
fortlaufender Basis zu und verwendet diese. An irgendeinem Punkt
kann es sein, daß das
Programm einen bestimmten Abschnitt des Speichers nicht mehr benötigt, beispielsweise den
Speicher, der für
einen bestimmten Zweck zugeteilt worden ist, der nicht mehr relevant
ist. Die Abschnitte, die nicht mehr benötigt werden (Abfall; wertlose
Daten; garbage) werden identifiziert (gesammelt), so daß sie für eine zukünftige Zuteilung
neu beansprucht werden können.
Der Abfallsammlungsprozeß nimmt
die zentrale Verarbeitungseinheit (CPU) in Anspruch und verschlechtert die
Systemleistung, wie sie von der Anwendung wahrgenommen wird. Es
ist folglich in hohem Maße
erwünscht, die
Zeit zu reduzieren, die beansprucht wird, um nicht genutzte Abschnitte
des Speichers neu zu beanspruchen (reclaim).
-
Typische Rechnersysteme haben einen
Cache-Speicher zwischen der CPU und dem Hauptspeicher. Der Cache
ist im Vergleich zu dem Hauptspeicher, der üblicherweise 128 Mb ist, klein, üblicherweise
2 Mb oder weniger. Der Cache wird verwendet, um Daten aus den jüngst benutzten
Speicherplätzen
zu speichern und auf sie einen schnellen Zugriff zur Verfügung zu
stellen. Die Daten werden mit der Erwartung in den Cache gebracht,
daß auf
sie bald erneut zugegriffen wird. Die Abfallsammlung findet im Hauptspeicher
statt, weil aber die meisten Programme unter der Annahme arbeiten,
daß auf
jüngst zugegriffene
Daten bald erneut zugegriffen wird, findet die Verarbeitung der
Abfallsammlung im Cache statt, wie es unten beschrieben wird.
-
Ein populärer Abfallsammlungsalgorithmus zur
Verwendung bei Laufzeitumgebungen ist der Bewegungs-Abfallsammlungsalgorithmus
(MGCA; Moving Garbage Collection Algorithm). Der MGCA überprüft einen
Speicherblock, der üblicherweise
zwischen 1 Mb und 4 Gigabyte (Gb) groß sein kann. Der MGCA bestimmt,
welche Speicherdaten aus dem Block sich in Benutzung befinden (lebende
Daten) und welche Abfall (garbage) sind. Wie der Name impliziert,
bewegt MGCA sämtliche
lebenden Daten in neue aufeinanderfolgende Speicherplätze. Dies, drängt die
lebenden Daten in einem kleineren Raum zusammen, als er verwendet
würde,
wenn sie mit dem Abfall zusammen gespeichert würden. Sobald die lebenden Daten
in neue Speicherplätze
kopiert sind, kann der gesamte Block neu beansprucht und neu zugeteilt
werden.
-
Ein typischer MGCA weist drei Phasen
auf: Kennzeichnen (Mark), Repoint und Kopieren. In der Kennzeichnungsphase
werden die lebenden Objekte bestimmt, das heißt jene, die zu einem Speicherplatz bewegt
werden sollen. An diesem Punkt werden neue Speicherplätze für die Datenobjekte
bestimmt. In der Repoint-Phase werden die lebenden Objekte überprüft und ihre Referenzen
werden derart geändert,
daß sie
auf die neuen Speicherplätze
Bezug nehmen. In der Kopierphase werden die Inhalte jedes lebenden
Objektes in den neuen Speicherplatz kopiert. Bei vielen Programmen
werden die Daten dann, wenn auf die Daten zugegriffen wird, beispielsweise
zum Zwecke des Kopierens, in den Cache-Speicher gebracht. Wie es
oben beschrieben worden ist, schafft der Cache einen schnellen Zugriff auf
häufig
verwendeten Speicher, und es wird angenommen, daß auf jüngst zugegriffene Daten bald
erneut zugegriffen werden könnte.
wenn die Daten nicht bald erneut verwendet werden, werden sie dann aus
dem Cache gelöscht.
Dieser Prozeß,
der auf temporalen Zugriffsmustern basiert, führt häufig dazu, daß Daten
in dem Cache gespeichert werden, die bloß gelöscht werden, wenn auf sie nicht
bald zugegriffen wird. Dieser Prozeß beansprucht den Cachespeicher
bei der Bestimmung, welche Daten aus dem Cache gelöscht werden
können,
und darüber
hinaus dann, wenn sie tatsächlich
gelöscht
werden und wenn gegebenenfalls geänderte Daten in den Hauptspeicher
zurückgeschrieben
werden.
-
Wenn ein lebendes Datenobjekt in
einen neuen Speicherplatz kopiert ist, so braucht auf die in den
neuen Speicherplatz kopierten Daten in naher Zukunft nicht zugegriffen
zu werden. Folglich nimmt das Kopieren der Daten in den Cache in
Erwartung eines baldigen erneuten Zugriffs auf die Daten die CPU/Cache-Ressourcen
unnötigerweise
in Anspruch.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegende Erfindung wird beispielhaft und
nicht in einem einschränkenden
Sinne anhand der Figuren der beigefügten Zeichnungen beschrieben,
in welchen gleiche Bezugszeichen ähnliche Elemente kennzeichnen
und in welchen:
-
1 eine
Veranschaulichung eines Beispielrechnersystems zum Implementieren
des Bewegung-Abfallsammlers gemäß der vorliegenden
Erfindung ist; und
-
2A und 2B die Verwendungsmerkmale des
nicht-temporalen
Streaming-Speicherns der CPU zum Reduzieren der für die Abfallsammlung
erforderlichen Zeit beschreiben.
-
DETAILLIERTE
BESCHREIBUNG
-
Es wird ein verbesserter Bewegungs-Abfallsammlungsalgorithmus
(Moving Garbage Collection Algorithm) beschrieben. Der Algorithmus
gestattet eine effiziente Verwendung nicht-temporaler Speicheroperationen
zum Reduzieren der für
die Abfallsammlung (garbage collection) erforderlichen Zeit. Nicht-temporale
Speicheroperationen (oder Kopien) sind ein CPU-Merkmal (Feature),
daß das
Kopieren von Datenobjekten innerhalb des Hauptspeichers ohne Störung oder
Verunreinigung des Cache-Speichers gestattet. Auf die in neue Speicherplätze kopierten
lebenden Objekte wird in naher Zukunft nicht zugegriffen, und folglich
brauchen sie nicht über
den Cache kopiert zu werden. Wenn es implementiert ist, vermeidet
dies Kopieroperationen und vermeidet die Inanspruchnahme der Hardware.
Der Algorithmus gemäß der vorliegenden
Erfindung nutzt den Umstand, daß lebende
Datenobjekte in aufeinanderfolgende neue Speicherplätze gespeichert
werden, um strömende
(streaming) Kopierprozeduren durchzuführen. Da jeder Kopierprozedur
ein CPU-Mehraufwand (Overhead) zugeordnet ist, verringert der Prozeß des Strömens (Streaming)
der Kopien die Verschlechterung der Systemleistung und reduziert
somit die Gesamtzeit für
die Abfallsammlung (garbage collection).
-
1 ist
ein Schema, das ein Beispielrechnersystem 100 zum Implementieren
des MGCA gemäß der vorliegenden
Erfindung veranschaulicht. Das hier beschriebene Verwenden der nicht-temporalen
Kopiemerkmale und Streaming-Kopien für eine effizientere Abfallsammlung
kann innerhalb des Rechnersystems 100 implementiert und
benutzt werden. Das System 100 kann ein Mehrzweckcomputer, ein
transportabler Computer oder ein anderes ähnliches Gerät sein.
Die Komponenten des Rechnersystems 100 sind insoweit beispielhaft,
daß eine
oder mehrere Komponenten fortgelassen oder hinzugefügt werden
können.
Beispielsweise können
ein oder mehrere Speichereinrichtungen für das Rechnersystem 100 benutzt
werden.
-
Gemäß 1 enthält das Rechnersystem 100 eine
zentrale Verarbeitungseinheit 102 und einen Signalprozessor
103,
die über
einen Bus 101 mit einer Anzeigeschaltung 105,
einem Hauptspeicher 104, einem statischen Speicher 106 und
einer Massenspeichereinrichtung 107 gekoppelt sind. Das Rechnersystem
kann darüber
hinaus mit einer Anzeige 121, einer Tastenfeldeingabe 122,
einer Cursor-Steuereinrichtung 123, einem Hard-Copy-Gerät 124,
Eingabe/Ausgabe(I/O)-Einrichtungen 125 und einer Audio/Sprache-Einrichtung 126 über den
Bus 101 gekoppelt sein.
-
Der Bus 101 ist ein Standardsystembus
zum Austauschen von Informationen und Signalen. Die CPU 102 und
der Signalprozessor 103 sind Verarbeitungseinheiten für das Rechnersystem 100.
Die CPU 102 oder der Signalprozessor 103 oder
beide können verwendet
werden, um Informationen und/oder Signale für das Rechnersystem 100 zu
verarbeiten. Die CPU 102 enthält eine Steuereinheit 131,
eine arithmetisch-logische Einheit (ALU) 132 und verschiedene
Register 133, welche verwendet werden, um Informationen
und Signale zu verarbeiten. Der Signalprozessor 103 kann
ebenfalls ähnliche
Komponenten wie die CPU 102 enthalten.
-
Der Hauptspeicher 104 kann
beispielsweise ein Speicher mit wahlfreiem Zugriff (RAM) oder irgendeine
andere dynamische Speichereinrichtung zum Speichern von Informationen
oder Befehlen (Programmcode) sein, welche von der CPU 102 oder dem
Signalprozessor 103 verwendet werden. Der Hauptspeicher 104 kann
temporäre
Variablen oder andere Zwischeninformationen während der Ausführung von
Befehlen durch die CPU 102 oder dem Signalprozessor 103 speichern.
Der statische Speicher 106 kann beispielsweise ein Nur-Lese-Speicher (ROM)
und/oder ein anderer statischer Speicher zum Speichern von Informationen
oder Befehlen, welche ebenfalls von der CPU 102 oder dem
Signalprozessor 103 verwendet werden können, sein. Die Massenspeichereinrichtung 107 kann
beispielsweise ein Festplattenlaufwerk oder ein Diskettenlaufwerk
oder ein optisches Plattenlaufwerk zum Speichern von Informationen
oder Befehlen für
das Rechnersystem 100 sein.
-
Die Anzeige 121 kann beispielsweise
eine Kathodenstrahlröhre
(CRT) oder eine Flüssigkristallanzeige
(LCD) sein.
-
Die Anzeigeeinrichtung 121 zeigt
Informationen oder Graphik an einem Benutzer an. Das Rechnersystem 100 kann über die
Anzeigeschaltung 105 eine Schnittstelle zu der Anzeige 121 bilden.
Die Tastenfeldeingabe 122 ist eine alphanumerische Eingabeeinrichtung
mit einem Analog-Digital-Umsetzer. Die Cursor-Steuereinrichtung 123 kann
beispielsweise eine Maus, ein Trackball oder Cursor-Richtungstasten
zum Steuern der Bewegung eines Objekts auf der Anzeige 121 sein.
Das Hardcopy-Gerät 124 kann beispielsweise
ein Laser-Drucker zum Drucken von Informationen auf Papier, Folien
oder irgendwelchen anderen Medien sein. Eine Anzahl von Eingabe/Ausgabe-Einrichtungen 125 kann
mit dem Rechnersystem 100 gekoppelt sein.
-
Der automatisierte Prozeß der Abfallsammlung
gemäß der vorliegenden
Erfindung kann durch Hardware und/oder Software implementiert werden, die
in dem Rechnersystem 100 enthalten sind. Beispielsweise
kann die CPU oder der Signalprozessor 143 Befehlscode oder
Befehle ausführen,
die in einem maschinen-lesbaren Medium, beispielsweise dem Hauptspeicher 104,
gespeichert sind.
-
Das maschinen-lesbare Medium kann
einen Mechanismus einschließen,
der Informationen in einer Form zur Verfügung stellt (das heißt speichert und/oder übermittelt),
die von einer Maschine, wie beispielsweise von einem Computer oder
einer digitalen Verarbeitungseinrichtung, lesbar ist. Beispielsweise
kann ein maschinen-lesbares Medium einen Nur-Lese-Speicher (ROM),
einen Speicher mit wahlfreiem Zugriff (RAM), ein magnetisches Plattenspeichermedium,
ein optisches Speichermedium, Flash-Speicherbauelemente einschließen. Der
Code oder die Befehle können
durch Trägerwellensignale, Infrarotsignale,
digitale Signale oder durch andere ähnliche Signale dargestellt
werden.
-
Wie oben beschrieben wurde, enthält ein typischer
MGCA eine Kopierphase, in welcher lebende Objekte in neue Speicherplätze kopiert
werden. Ein Ausführungsbeispiel
der vorliegenden Erfindung verwendet nicht-temporale Streaming-Speicheroperationen
(NTSS; Non-Temporal Streaming Stores), um die Kopierphase der Abfallsammlung
abzuschließen. Die
Verwen dung der NTSS gestattet den Abschluß der Kopierphase in geringerer
Zeit, was zu einer schnelleren Abfallsammlung führt. 2A beschreibt die Verwendung des nicht-temporalen
Speicher-Merkmals der CPU, um die für die Abfallsammlung erforderliche
Zeit zu reduzieren.
-
In 2A sind
Datenobjekte als A bis O gezeigt. Beispielsweise sind die Datenobjekte
A, B, C und D eine Wurzelmenge (root set) von Daten (das heißt Bezugnahmen
innerhalb der CPU-Register beispielsweise). Dann werden A, B, C
und D und sämtliche
erreichbaren (zugeordneten) Datenobjekte als lebend angesehen und
werden bewegt. Die Pfeile sind Referenzen, die eine Zuordnung zwischen
den Datenobjekten kennzeichnen. Sämtliche lebenden „transitive
closure" Objekte
werden in der Kennzeichnungsphase (mark phase) des MGCA bestimmt.
Bei einem Ausführungsbeispiel
kann die Kennzeichnungsphase zur Erzeugung eines Kennzeichnungsstapels
(mark stack) führen,
wie er bei 205 gezeigt ist. Wie es in 2A gezeigt ist, sind die Datenobjekte
G und I nicht in dem Kennzeichnungsstapel enthalten, da sie nicht
Teil des Wurzelsatzes (root set) sind und auch nicht direkt oder
transitiv ausgehend von Mitgliedern des Wurzelsatzes erreichbar
sind.
-
Wenn ein jeweiliges Datenobjekt
als lebend bestimmt wird, werden neue Speicheradressen zugeteilt.
Zu dem Zeitpunkt, zu dem ein Datenobjekt zu dem Kennzeichnungsstapel
hinzugefügt
wird, wird ein neuer Speicherplatz für das Datenobjekt bestimmt,
da es bekannt ist, daß das
Datenobjekt über die
Abfallsammlung hinweg bestehen bleiben muß. Beispielsweise wird, wie
es in 2B gezeigt ist,
für jedes
lebende Datenobjekt, auf das in dem Kennzeichnungsstapel Bezug genommen
wird, ein neuer Speicherplatz zugeteilt und gekennzeichnet. Der Kennzeichnungsstapel
ist als 205B gezeigt und ein entsprechendes Feld (Array)
von Referenzen (Bezugnahmen) auf neue Speicherplätze ist als 210B gezeigt.
An diesem Punkt werden die Referenzen für jedes Datenobjekt geändert. Dies
ist die Repoint-Phase. Beispielsweise referenziert das Datenobjekt
A die Datenobjekte J und K. Die neue Referenz für A wird A' sein, und A' wird J' und K' referenzieren.
-
In der Kopierphase werden die tatsächlichen Inhalte
des Datenobjekts A (die tatsächlichen
Bits der Daten) in den neuen Speicherplatz, der als A' referenziert ist,
kopiert. Dies schließt
den Abschnitt des Datenobjekts A ein, der auf die zugeordneten Daten Bezug
nimmt. Dieser Abschnitt kann bereits aktualisiert sein, so daß seine
Referenzen auf J und K in Referenzen auf J' und K' geändert
worden sind. Bei einem alternativen Ausführungsbeispiel wird das Datenobjekt
A in den neuen Speicherplatz, der als A' referenziert ist, kopiert, und dann
werden die A zugeordneten Datenobjekte (das heißt J und K) aktualisiert.
-
Nachdem das Datenobjekt A in A' kopiert worden ist,
braucht auf A' nicht
erneut zugegriffen zu werden. Die Komponente der Abfallsammlung
bezüglich
des Datenobjekts A ist abgeschlossen. Der MGCA bewegt sich einfach
zu dem nächsten
in dem Kennzeichnungsstapel (mark stack) referenzierten Datenobjekt
weiter und fährt
mit dem Aktualisieren und Bewegen fort. In der Kopierphase des MGCA wird
das Datenobjekt, das gerade kopiert wird (zum Beispiel das Datenobjekt
A) in den Cache gebracht. Es besteht jedoch keine Notwendigkeit,
die Inhalte von A' in
den Cache zu kopieren, da auf das Datenobjekt (das heißt A') in naher Zukunft
nicht zugegriffen wird. Der Algorithmus der vorliegenden Erfindung,
der als Anhang A enthalten ist, verwendet nicht-temporale Speicheroperationen
(NTSs; non-temporal
stores), um die Datenobjekte direkt in den gekennzeichneten neuen
Speicherplatz im Speicher zu kopieren. Die CPU führt in Verbindung mit dem Speicher-Controller
ein nicht-temporales
Speichern aus, welches bewirkt, daß eine Kopie von A in den Speicherplatz
A' ohne Störung oder
Verunreinigung des Cache-Speichers gebracht wird. Die Verwendung
der MTS verringert die Zeit, die für die Abfallsammlung erforderlich
ist, da sie die Datenmenge verringert, die unnötigerweise in dem Cache kopiert wird,
um nach einer Zeit lediglich gelöscht
zu werden.
-
Der Algorithmus der vorliegenden
Erfindung verwendet darüber
hinaus ein Schreibkombinieren (write combining) (Streaming-Kopien),
um die für
die Abfallsammlung erforderliche Zeit zu verringern. Wie es in 2B gezeigt ist, werden die
Datenobjekte, auf die im Kennzeichnungsstapel 205B Bezug
genommen wird, in neue Speicherplätze kopiert, wie sie im Kennzeichnungsstapel 210B referenziert
sind. Beispielsweise werden die Datenobjekte A, B und C in neue
Speicherplätze
so kopiert, wie es A',
B' und C' referenziert ist.
Der Algorithmus der vorliegenden Erfindung ist so ausgebildet, daß sämtliche
lebenden Objekte in aufeinanderfolgende neue Speicherplätze kopiert
werden, das heißt,
A', B' und C' sind beispielsweise
aufeinanderfolgende Speicherplätze.
Dies gestattet die Verwendung des CPU-Merkmals des Schreib-Kombinierens
(streaming copies), um verschiedene Datenobjekte asynchron und transparent zu
kopieren. Da jede Kopierprozedur einen zugehörigen CPU-Mehraufwand (Overhead)
aufweist, verringert der Prozeß des
Strömens
(Streaming) der Kopien die Verschlechterung der Systemleistung und
reduziert somit die Zeit für
die Abfallsammlung. Die Menge, die kopiert werden kann, ist selbstverständlich plattform-spezifisch
und abhängig
von vorherrschenden Speicherbusbedingungen.
-
In der vorstehenden Beschreibung
wurde die Erfindung unter Bezugnahme auf ihre speziellen Ausführungsbeispiele
beschrieben. Es ist jedoch klar, daß verschiedene Modifikationen
und Änderungen
daran vorgenommen werden können,
ohne vom breiteren Geist und Umfang der Erfindung abzuweichen, wie
er in den beigefügten
Ansprüchen
angegeben ist. Die Beschreibung und die Zeichnungen sind folglich
in einem veranschaulichenden Sinne und keinem einschränkenden
Sinne zu verstehen.
-
Zusammenfassung
-
Es wird ein verbesserter Algorithmus
zum Sammeln wertloser Daten durch Bewegung (Moving Garbage Collection
Algorithmus) beschrieben. Der Algorithmus gestattet eine effiziente
Verwendung nicht-temporaler Speicheroperationen, um die erforderliche
Zeit für
eine Sammlung wertloser Daten zu verringern.
-
Nicht-temporale Speicheroperationen
(oder Kopien) sind ein CPU-Merkmal, das das Kopieren von Datenobjekten
in dem Hauptspeicher ohne Störung
oder Verunreinigung des Cache-Speichers gestattet. Auf die in neue
Speicherplätze
kopierten lebenden Objekte wird in naher Zukunft nicht erneut zugegriffen,
und sie brauchen folglich nicht in den Cache kopiert zu werden.
Dies vermeidet Kopieroperationen und vermeidet eine Inanspruchnahme
der CPU mit Cache-Bestimmungen. Bei einem bevorzugten Ausführungsbeispiel
nutzt der Algorithmus der vorliegenden Erfindung den Umstand aus,
daß lebende
Datenobjekte in aufeinanderfolgende neue Speicherplätze gespeichert
werden, um ein Streaming-Kopieren auszuführen. Da jeder Kopierprozedur
ein CPU-Mehraufwand zugeordnet ist, reduziert der Prozeß des Streaming
der Kopien die Verschlechterung der Systemleistung und reduziert
somit die Zeit für
die Sammlung wertloser Daten.