DE10296957T5 - Ein Verfahren zum Verwenden nicht-temporaler Streaming-Speicheroperationen zum Verbessern eines Algorithmus zur Sammlung wertloser Daten - Google Patents

Ein Verfahren zum Verwenden nicht-temporaler Streaming-Speicheroperationen zum Verbessern eines Algorithmus zur Sammlung wertloser Daten Download PDF

Info

Publication number
DE10296957T5
DE10296957T5 DE10296957T DE10296957T DE10296957T5 DE 10296957 T5 DE10296957 T5 DE 10296957T5 DE 10296957 T DE10296957 T DE 10296957T DE 10296957 T DE10296957 T DE 10296957T DE 10296957 T5 DE10296957 T5 DE 10296957T5
Authority
DE
Germany
Prior art keywords
data
content
data object
copying
copied
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.)
Ceased
Application number
DE10296957T
Other languages
English (en)
Inventor
Sreenivas Palo Alto Subramoney
Richard L. Northampton Hudson
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10296957T5 publication Critical patent/DE10296957T5/de
Ceased 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

Ein Verfahren, umfassend:
Zugreifen auf ein Referenz-Array, wobei das Referenz-Array auf wenigstens ein Datenobjekt Bezug nimmt, wobei das wenigstens eine Datenobjekt einen im Speicher gespeicherten Inhalt aufweist;
Bestimmen eines neuen Speicherplatzes für den Inhalt jedes der wenigstens einen Datenobjekte; und
Kopieren des Inhalts des wenigstens einen Datenobjekts in den neuen Speicherplatz derart, daß beim Kopieren des Inhalts des neuen Speicherplatzes die Daten nicht zusätzlich in einen Cache-Speicher gespeichert werden.

Description

  • 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.

Claims (21)

  1. Ein Verfahren, umfassend: Zugreifen auf ein Referenz-Array, wobei das Referenz-Array auf wenigstens ein Datenobjekt Bezug nimmt, wobei das wenigstens eine Datenobjekt einen im Speicher gespeicherten Inhalt aufweist; Bestimmen eines neuen Speicherplatzes für den Inhalt jedes der wenigstens einen Datenobjekte; und Kopieren des Inhalts des wenigstens einen Datenobjekts in den neuen Speicherplatz derart, daß beim Kopieren des Inhalts des neuen Speicherplatzes die Daten nicht zusätzlich in einen Cache-Speicher gespeichert werden.
  2. Das Verfahren nach Anspruch 1, wobei die Inhalte der aufeinanderfolgend referenzierten Datenobjekte in aufeinanderfolgende Speicherplätze kopiert werden.
  3. Das Verfahren nach Anspruch 2, wobei das Kopieren ferner ein Kopieren des Inhalts des wenigstens einen Datenobjekts um den Cache herum unter Verwendung einer Schreib-Kombiniere-Operation einschließt.
  4. Das Verfahren nach Anspruch 3, implementiert auf einem Computersystem mit einer zentralen Verarbeitungseinheit, wobei eine Datenmenge, die kopiert wird, von Parametern der zentralen Verarbeitungseinheit abhängt.
  5. Das Verfahren nach Anspruch 4, wobei das Rechnersystem in einer dynamischen Laufzeitumgebung betrieben wird.
  6. Das Verfahren nach Anspruch 5, wobei die Laufzeitumgebung aus einer Gruppe ausgewählt ist, die aus Java und CLI besteht.
  7. Das Verfahren nach Anspruch 6, implementiert als Kopierphase eines Moving-Garbage-Collection-Algorithmus.
  8. Ein maschinen-lesbares Medium, das ausführbare Befehle zur Verfügung stellt, welche, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, ein Verfahren auszuführen, wobei das Verfahren umfaßt: Zugreifen auf ein Referenz-Array, wobei das Referenz-Array auf wenigstens ein Datenobjekt Bezug nimmt, wobei das wenigstens eine Datenobjekt einen im Speicher gespeicherten Inhalt aufweist; Bestimmen eines neuen Speicherplatzes für den Inhalt jedes der wenigstens einen Datenobjekte; und Kopieren der Inhalte des wenigstens einen Datenobjekts in den neuen Speicherplatz derart, daß beim Kopieren der Inhalt des neuen Speicherplatzes nicht in einem Cache-Speicher gespeichert wird.
  9. Das maschinen-lesbare Medium nach Anspruch 8, wobei die Inhalte der aufeinanderfolgend referenzierten Datenobjekte in aufeinanderfolgende Speicherplätze kopiert werden.
  10. Das maschinen-lesbare Medium nach Anspruch 9, wobei das Kopieren ferner ein Kopieren des Inhalts des wenigstens einen Datenobjekts um den Cache herum durch Ausnutzen des Schreibe-Kombiniere-Merkmals der nicht-temporalen Streaming-Speicheroperation einschließt.
  11. Das maschinen-lesbare Medium nach Anspruch 10, implementiert auf einem Rechnersystem mit einer zentralen Verarbeitungseinheit, wobei eine kopierte Datenmenge von Parametern der zentralen Verarbeitungseinheit abhängt.
  12. Das maschinen-lesbare Medium nach Anspruch 11, wobei das Rechnersystem in einer dynamischen Laufzeitumgebung betrieben wird.
  13. Das maschinen-lesbare Medium nach Anspruch 12, wobei die Laufzeitumgebung aus einer Gruppe ausgewählt ist, die aus JAVA und CLI besteht.
  14. Das maschinen-lesbare Medium nach Anspruch 13, implementiert als Kopierphase eines Moving-Garbage-Collection-Algorithmus.
  15. Eine Einrichtung, aufweisend: ein Register zum Halten eines Referenz-Arrays, wobei das Referenz-Array auf wenigstens ein Datenobjekt Bezug nimmt, wo das wenigstens eine Datenobjekt einen Inhalt aufweist; einen Speicherbereich zum Halten des Inhalts des wenigstens einen Datenobjekts; und eine zentrale Verarbeitungseinheit zum Bestimmen eines neuen Speicherplatzes für die Inhalte jedes des wenigstens einen Datenobjekts, wobei die Inhalte des wenigstens einen Datenobjekts derart in den neuen Speicherplatz kopiert werden, daß beim Kopieren der Inhalte in den neuen Speicherplatz, die Daten nicht in einem Cache-Speicher gespeichert werden.
  16. Die Einrichtung nach Anspruch 15, wobei die Inhalte der aufeinanderfolgend referenzierten Datenobjekte um den Cache in aufeinanderfolgende Speicherplätze kopiert werden.
  17. Die Einrichtung nach Anspruch 16, wobei das Kopieren ferner ein Kapieren der Inhalte des wenigstens einen Datenobjekts um den Cache herum durch Ausnutzen eines Schreibe-Kombiniere-Merkmals der nicht-temporalen Streaming-Speicheroperation einschließt.
  18. Die Einrichtung nach Anspruch 17, implementiert bei einem Computersystem mit einer zentralen Verarbeitungseinheit, wobei eine kopierte Datenmenge von Parametern der zentralen Verarbeitungseinheit abhängt.
  19. Die Einrichtung nach Anspruch 18, wobei das Rechnersystem in einer dynamischen Laufzeitumgebung betrieben wird.
  20. Die Einrichtung nach Anspruch 19, wobei die Laufzeitumgebung ausgewählt ist aus der Gruppe, die aus JAVA und CLI besteht.
  21. Die Einrichtung nach Anspruch 20, implementiert als Kopierphase eines Moving-Garbage-Collection-Algorithmus.
DE10296957T 2001-06-19 2002-06-06 Ein Verfahren zum Verwenden nicht-temporaler Streaming-Speicheroperationen zum Verbessern eines Algorithmus zur Sammlung wertloser Daten Ceased DE10296957T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/885,745 2001-06-19
US09/885,745 US6950837B2 (en) 2001-06-19 2001-06-19 Method for using non-temporal streaming to improve garbage collection algorithm
PCT/US2002/017960 WO2002103527A2 (en) 2001-06-19 2002-06-06 A method for using non-temporal streaming stores to improve garbage collection algorithm

Publications (1)

Publication Number Publication Date
DE10296957T5 true DE10296957T5 (de) 2004-09-16

Family

ID=25387598

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10296957T Ceased DE10296957T5 (de) 2001-06-19 2002-06-06 Ein Verfahren zum Verwenden nicht-temporaler Streaming-Speicheroperationen zum Verbessern eines Algorithmus zur Sammlung wertloser Daten

Country Status (6)

Country Link
US (1) US6950837B2 (de)
CN (1) CN1237451C (de)
AU (1) AU2002312374A1 (de)
DE (1) DE10296957T5 (de)
HK (1) HK1067418A1 (de)
WO (1) WO2002103527A2 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198088A1 (en) * 2004-03-03 2005-09-08 Sreenivas Subramoney Method and system for improving the concurrency and parallelism of mark-sweep-compact garbage collection
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
JP5008845B2 (ja) * 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US20070118579A1 (en) * 2005-11-21 2007-05-24 Hudson Richard L Dynamic consistency between multiple versions of objects managed by a garbage collector using transactional memory support
US7506132B2 (en) 2005-12-22 2009-03-17 International Business Machines Corporation Validity of address ranges used in semi-synchronous memory copy operations
US7484062B2 (en) * 2005-12-22 2009-01-27 International Business Machines Corporation Cache injection semi-synchronous memory copy operation
US7454585B2 (en) * 2005-12-22 2008-11-18 International Business Machines Corporation Efficient and flexible memory copy operation
KR100858527B1 (ko) 2007-04-18 2008-09-12 삼성전자주식회사 시간적 인접성 정보를 이용한 캐쉬 메모리 시스템 및데이터 저장 방법
TWI438633B (zh) * 2007-11-29 2014-05-21 Ibm 記憶體管理之垃圾收集方法、其電腦程式產品,及其裝置
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8407444B2 (en) * 2009-12-23 2013-03-26 International Business Machines Corporation Hardware off-load garbage collection acceleration for languages with finalizers
US8943108B2 (en) * 2009-12-23 2015-01-27 International Business Machines Corporation Hardware off-load memory garbage collection acceleration
CN102262591B (zh) * 2010-05-31 2014-03-19 国际商业机器公司 用于内存复制系统进行垃圾回收的方法和系统
US8838888B2 (en) 2012-03-19 2014-09-16 International Business Machines Corporation Conditional write processing for a cache structure of a coupling facility
US8898376B2 (en) 2012-06-04 2014-11-25 Fusion-Io, Inc. Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
US9501393B2 (en) * 2014-01-27 2016-11-22 Western Digital Technologies, Inc. Data storage system garbage collection based on at least one attribute
EP3113026B1 (de) * 2015-06-29 2019-07-24 aicas GmbH Automatische speicherverwaltung mit speicherverwaltungseinheit
US10572181B2 (en) * 2017-02-01 2020-02-25 Microsoft Technology Licensing, Llc Multiple stage garbage collector
US11068390B2 (en) * 2019-02-01 2021-07-20 EMC IP Holding Company LLC Scalable garbage collection for deduplicated storage
US11989124B2 (en) 2019-04-26 2024-05-21 EMC IP Holding Company LLC Garbage collection for a deduplicated cloud tier with encrypted segments
US11580015B2 (en) * 2019-05-03 2023-02-14 EMC IP Holding Company LLC Garbage collection for a deduplicated cloud tier using functions

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02213960A (ja) 1989-02-14 1990-08-27 Hitachi Ltd キャッシュメモリ
DE3912996A1 (de) 1989-04-20 1990-10-25 Asea Brown Boveri Verfahren zur herstellung eines halbleiterbauelements
JPH04170650A (ja) * 1990-11-05 1992-06-18 Oki Electric Ind Co Ltd データ処理装置
US6205520B1 (en) 1998-03-31 2001-03-20 Intel Corporation Method and apparatus for implementing non-temporal stores
US6356270B2 (en) * 1998-03-31 2002-03-12 Intel Corporation Efficient utilization of write-combining buffers
US6421689B1 (en) * 1998-06-30 2002-07-16 Oracle Corporation Moderately conservative, mostly copying 2 space garbage collector in the nursery of a generational memory manager
US6249844B1 (en) * 1998-11-13 2001-06-19 International Business Machines Corporation Identifying, processing and caching object fragments in a web environment
US6334171B1 (en) * 1999-04-15 2001-12-25 Intel Corporation Write-combining device for uncacheable stores

Also Published As

Publication number Publication date
AU2002312374A1 (en) 2003-01-02
WO2002103527A2 (en) 2002-12-27
US20020194210A1 (en) 2002-12-19
WO2002103527A3 (en) 2003-03-06
CN1509435A (zh) 2004-06-30
CN1237451C (zh) 2006-01-18
HK1067418A1 (en) 2005-04-08
US6950837B2 (en) 2005-09-27

Similar Documents

Publication Publication Date Title
DE10296957T5 (de) Ein Verfahren zum Verwenden nicht-temporaler Streaming-Speicheroperationen zum Verbessern eines Algorithmus zur Sammlung wertloser Daten
DE69909021T2 (de) Dynamische Speicherrückforderung ohne Compiler- oder Programmverbinderunterstützung
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE69836796T2 (de) Datenverarbeiter mit lokalisierter gedächtnisreklamierung
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE69814170T2 (de) Inkrementeller freispeichersammler
DE69722979T2 (de) Betriebsmittelverwaltungsverfahren und -einrichtung eines Multitasking-Datenverarbeitungssystems
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE3151745C2 (de)
DE60032685T2 (de) Speicherrückforderungsverfahren
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69932874T2 (de) Verfahren und Computersystem zur dynamischen Generationsverwaltung von Rechnerspeicher
DE4220198C2 (de) Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem
DE69816686T2 (de) Hochfrequenzabtastung von Leistungszählern
DE60032694T2 (de) Speicherrückforderungsverfahren
DE60308201T2 (de) Datenverarbeitungssystem mit externen und internen anweisungssätzen
DE60034702T2 (de) Verfahren und vorrichtung zur verbesserung der wirksamkeit von kopierender speicherbereinigung
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE2912738A1 (de) System mit direkter uebertragung zwischen subsystemen
DE102013206744A1 (de) Deduplizierende speicherung mit verbesserter erkennung von häufigen blöcken
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE60002559T2 (de) Speicherverwaltung in einer laufzeitumgebung
DE4210126A1 (de) Verfahren und system zur dynamischen dateierweiterung fuer online-datenbanksysteme
DE112010004573T5 (de) System und verfahren zur optimierten wiedernutzbarmachungsverarbeitung in einem virtuellen bandbibliotheksystem
EP0635792A2 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10296957

Country of ref document: DE

Date of ref document: 20040916

Kind code of ref document: P

8131 Rejection