DE10393835T5 - Ausführung einer modifizierten Cheney-Abtastung in einer Multithreaded-Verarbeitungsumgebung - Google Patents

Ausführung einer modifizierten Cheney-Abtastung in einer Multithreaded-Verarbeitungsumgebung Download PDF

Info

Publication number
DE10393835T5
DE10393835T5 DE10393835T DE10393835T DE10393835T5 DE 10393835 T5 DE10393835 T5 DE 10393835T5 DE 10393835 T DE10393835 T DE 10393835T DE 10393835 T DE10393835 T DE 10393835T DE 10393835 T5 DE10393835 T5 DE 10393835T5
Authority
DE
Germany
Prior art keywords
pointer
memory
area
slot
load
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE10393835T
Other languages
English (en)
Other versions
DE10393835B4 (de
Inventor
Richard Northampton Hudson
Hong Fremont Wang
Weldon San Jose Washburn
John San Jose Shen
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 DE10393835T5 publication Critical patent/DE10393835T5/de
Application granted granted Critical
Publication of DE10393835B4 publication Critical patent/DE10393835B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Processing (AREA)

Abstract

Speicherverwaltungsverfahren, umfassend:
das Aufweisen eines Ladezeigers, der an Speicherobjekten, die in einem zweiten Speicherbereich zwischen einem Abtastzeiger und einem Zuweisungszeiger angeordnet sind, arbeitet, wobei er Speicherobjekte abtastet, um Slots zu finden, die Zeiger auf Objekte im ersten Speicherbereich enthalten,
das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und
das Vorablesen des Speicherobjekts im ersten Bereich in einem Cache, der mit einem Thread, der den Zuweisungszeiger unterstützt, gemeinsam benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft eine Rechenanlagensoftware. Ins Besonderen betrifft diese Erfindung die Speicherverwaltung.
  • Der verlässliche Betrieb von Softwaresystemen erfordert üblicherweise eine Speicherverwaltung, welche die Verfügbarkeit dynamisch zugewiesenen Speichers automatisch sicherstellt. Diese automatische Aufgabe, die oftmals als Speicherbereinigung bezeichnet wird, erfolgt durch einen Müllsammler, der Speicher wieder verwertet, der nie mehr verwendet werden wird. Die automatische Speicherbereinigung umgeht die Notwendigkeit, dass ein Programmierer Speicherblöcke explizit freigeben muss, und hilft bei der Vermeidung von Schwierigkeiten in Zusammenhang mit Speicherverlust und vorzeitiger Speicherfreigabe.
  • Objekte sind eine Sammlung von Feldern und Verfahren. Die Felder können Slots umfassen, die möglicherweise rekursive Verweise auf andere Objekte enthalten. Da die Speicherbereinigung auch die Programmentwicklung vereinfachen kann, indem sie die Notwendigkeit zur Verwaltung von Speicher, der verwendet wird, um Objekte zu instanziieren, verringert, ist sie oft in modernen Sprachen, einschließlich Java und deren Varianten oder C# (Microsoft Common Language Runtime (CLR)), verfügbar.
  • Allerdings bringt die Speicherbereinigung einen beträchtlichen Laufzeitüberhang mit sich, wobei diese Befehlsverarbeitungszeit wiederum vom spezifischen Speicherbereinigungsalgorithmus abhängt, der verwendet wird. Aufgrund des bekannten Halteproblems ist es für einen Müllsammler im Allgemeinen nicht möglich, genau zu ermitteln, welche Speicherobjekte noch aktuell sind und in der Zukunft vom Programm noch verwendet werden. Alle Müllsammler bzw. Speicherbereiniger verwenden irgendeine Näherung, um die Aktualität von Speicher zu ermitteln. In einer „zurückverfolgenden" Speicherbereinigung werden Objekte als aktuell ermittelt, wenn sie erreichbar sind. „Kopierspeicherbereinigung" ist eine Art von zurückverfolgender Speicherbereinigung, die funktioniert, indem sie erreichbare Objekte verschiebt (Spülung) und zurückgelassene Objekte (also Objekte, die unerreichbar und daher tot sind) zurückgewinnt.
  • Ein Zweibereich-Kopiensammler ist eine einfache Form von Kopiermüllsammler, der den verfügbaren Speicher in zwei Bereiche einteilt. Speicherobjekte können im ersten Bereich, der auch als „Von-Bereich" oder „alter" Bereich bezeichnet wird, angeordnet sein. Objekte können in den zweiten Bereich, der auch als „Nach-Bereich" oder „neuer" Bereich bezeichnet wird, verschoben oder diesem zugewiesen werden. Gemeinsam werden die ersten beiden Bereiche als erfasster Bereich oder C-Bereich bezeichnet. Schließlich kann ein Objekt in einem dritten nicht erfassten Bereich oder U-Bereich angeordnet sein. Objekte werden dem ersten Bereich zugewiesen, bis dieser voll ist. Dann wird dieser Bereich zum „alten" Bereich. Die erreichbaren Objekte werden dann in den anderen „neuen" Bereich kopiert (üblicherweise unter Verwendung einer Cheney-Abtastung), und der zuvor zugewiesene Speicher des alten Bereiches wird für den verfügbaren Speicherpool zurück gewonnen. Die Cheney-Abtastung ist ein besonders leistungsstarker Algorithmus, der keinen Stack oder anderen Hilfsbereich benötigt, um die Liste der Speicherobjekte zu führen, die noch nicht abgetastet worden sind. Die Zuweisung wird fortgesetzt, bis der neue Bereich gefüllt ist, und der Vorgang dann in umgekehrter Richtung wiederholt wird. Man wird verstehen, dass Verbesserungen der Leistung zum Kopieren erreichbarer Objekte eine Verbesserung der Speicherbereinigung und der Systemleistung insgesamt mit sich bringen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Aus der untenstehenden ausführlichen Beschreibung sowie den beiliegenden Zeichnungen der Ausführungsformen der Erfindungen, sind die Erfindungen besser verständlich, wobei die Beschreibung oder die Zeichnungen jedoch keinesfalls verwendet werden dürfen, um die Erfindungen auf die spezifischen Ausführungsformen, die beschrieben sind, einzugrenzen, sondern ausschließlich zur Erklärung und zum besseren Verständnis dienen.
  • 1 stellt schematisch eine Rechenanlage dar, die eine Multithreaded-Verarbeitung unterstützt;
  • 2 ist eine Abbildung der Arbeitsweise einer Cheney-Abtastung nach dem Stand der Technik;
  • 3 stellt die Programmlogik einer modifizierten Cheney-Abtastung unter Verwendung mehrere Programmfäden dar; und
  • 4 zeigt die Arbeitsweise einer modifizierten Cheney-Abtastung unter Verwendung eines „Dritter-Finger"-Zeigers.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 stellt grundsätzlich eine Rechenanlage 10 dar, die einen Prozessor 12 und ein Speichersystem 13 (das ein externer Cache-Speicher, ein externer Direktzugriffsspeicher und oder ein teilweise im Prozessor integrierter Speicher sein kann) zur Ausführung von Befehlen, die als externe Software in Form eines Computerprogrammproduktes bereitgestellt und in der Datenspeichereinheit 18 gespeichert sein können, aufweist. Der Prozessor 12 ist imstande, mehrere Programmthreads (Programmfäden) zu unterstützen (ein Thread bzw. ein Faden ist eine Abfolge von Befehlsausführungen, die unabhängig von anderen Threads bzw. Fäden ablaufen kann, die jedoch Daten direkt gemeinsam mit anderen Threads bzw. Fäden benutzen kann). Eine Programmthreadunterstützung ist üblicherweise in Zusammenhang mit Computersprachen, wie zum Beispiel Java und C#, verfügbar.
  • Die Rechenanlage 10 der vorliegenden Erfindung kann ein oder mehrere Eingabe/Ausgabe-Geräte (I/O devices) 15 aufweisen, die ein Anzeigegerät, wie zum Beispiel einen Monitor, umfassen. Die Eingabe/Ausgabe-Geräte können auch ein Eingabegerät, wie zum Beispiel eine Tastatur, und eine Cursorsteuerung, wie zum Beispiel eine Maus, einen Trackball oder ein Trackpad umfassen. Des Weiteren können die Eingabe/Ausgabe-Geräte auch einen Netzwerkverbinder umfassen, so dass die Rechenanlage 10 Teil eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN) ist.
  • Beispiele einer Anlage 10 umfassen, sind aber nicht beschränkt auf, einen Computer (zum Beispiel einen Tischcomputer, einen tragbaren PC, einen Server, einen Blade-Server, eine Arbeitsstation, einen elektronischen Assistenten, etc.) oder irgendwelche damit verbunden Peripheriegeräte; Fernmeldeanlagen (zum Beispiel einen Telefonhörer, einen Funkrufempfänger, etc.); ein Fernseh-Aufsatzgerät und ähnliches. Eine „Verbindung" oder ein „Link" ist weitestgehend definiert als logischer oder physischer Kommunikationspfad, wie zum Beispiel eine elektrische Leitung, eine Lichtleitfaser, ein Kabel, eine Sammelleitung oder sogar ein drahtloser Kanal, der Infrarot, Funkübertragung (RF) oder irgendeinen anderen drahtlosen Signalübertragungsmechanismus benützt. Des Weiteren ist der Begriff „Information" definiert als ein oder mehrere Bits von Daten, Adressen und/oder Steuerungen. „Code" umfasst Software oder Firmware, die bei der Ausführung bestimmte Funktionen erfüllt. Beispiele für Code umfassen eine Anwendung, ein Betriebssystem, ein Applet, Urladercode oder jegliche andere Reihe von Befehlen, oder Mikrobefehlskode (das heißt, Code, der auf privilegierter Ebene und unterhalb des Betriebssystems arbeitet).
  • Ersatzweise könnte die Logik zur Ausführung der oben erläuterten Verfahren und Anlagen in zusätzlichen computer- und/oder maschinenlesbaren Medien ausgeführt werden, wie zum Beispiel in einzelnen Hardwarekomponenten, wie zum Beispiel hochintegrierten Schaltkreisen (LSIs), anwenderspezifischen Schaltkreisen (ASICs), Mikrobefehlskode, oder Firmware, wie zum Beispiel elektrisch löschbarem, programmierbarem Nur-Lese-Speicher (EEPROM); oder in räumlich entfernten Computern, die Informationen durch elektrische, optische, akustische und andere Formen von verbreiteten Signalen (zum Beispiel Funkwellen oder optische Infrarotsignale) weiterleiten.
  • In einer Ausführungsform kann ein Computerprogrammprodukt, das durch die Datenspeichereinheit 18 gelesen werden kann, ein maschinen- oder computerlesbares Medium umfassen, das darauf gespeicherte Befehle aufweist, die verwendet werden können, um einen Computer (oder ein anderes elektronisches Gerät) zu programmieren (das heißt, dessen Betrieb zu definieren), um einen Vorgang gemäß der vorliegenden Erfindung durchzuführen. Das computerlesbare Medium der Datenspeichereinheit 18 kann Floppy-Disks, optische Speicherplatten, Compactdiscs, Nur-Lese-Speicher-Disks (CD-ROMs) und magnetooptische Disketten, Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), löschbaren, programmierbaren Nur-Lese-Speicher (EPROM), elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM), Magnetkarten oder optische Speicherkarten, Flash-Speicher oder ähnliches, eingeschlossen alle Verfahren zum Aufrüsten oder Umprogrammieren oder Erzeugen oder Aktivieren oder Reservieren der Aktivierung von Mikrobefehlskodeerweiterung, umfassen, ist jedoch nicht auf diese beschränkt.
  • Demgemäß umfasst das computerlesbare Medium jegliche Art von Medien/maschinenlesbarem Medium, das zum Speichern elektronischer Befehle geeignet ist. Des Weiteren kann die vorliegende Erfindung auch als ein Computerprogrammprodukt heruntergeladen werden. Als solches kann das Programm von einem Ferncomputer (zum Beispiel einem Server) zu einem anfordernden Computer (zum Beispiel einem Kunden) übertragen werden. Die Übertragung des Programms kann durch Datensignale, die in einer Trägerwelle oder einem anderen Verbreitungsmedium eingebettet sind, über eine Nachrichtenverbindung (zum Beispiel ein Modem, eine Netzwerkverbindung oder ähnliches) erfolgen.
  • In einer Ausführungsform sind die Verfahren der vorliegenden Erfindung in maschinenlesbaren Befehlen dargestellt, die dazu dienen sollen, den Betrieb der Rechenanlage 10, und insbesondere den Betrieb des Prozessors, des Registerspeichers, des Cache-Speichers und des allgemeinen Speichers zu steuern. Die Befehle können dazu verwendet werden, zu bewirken, dass ein Mehrzweckcomputer oder ein Spezialcomputer, der mit den Befehlen programmiert worden ist, die Schritte der vorliegenden Erfindung ausführt. Ersatzweise können die Schritte der vorliegenden Erfindung durch spezifische Hardwarekomponenten (die Mikrokode aufweisen), die festverdrahtete Logik zur Durchführung der Schritte enthalten, oder durch irgendeine Kombination von programmierten Computerkomponenten und kundenspezifischen Hardwarekomponenten ausgeführt werden.
  • Es versteht sich, dass Fachleute verschiedene Begriffe und Verfahren verwenden, um Nachrichten, Protokolle, Anwendungen, Ausführungen, Mechanismen, etc. zu beschreiben.
  • Ein solches Verfahren ist die Beschreibung der Ausführung eines Verfahrens in Form eines Algorithmus oder eines mathematischen Ausdrucks. Das heißt, obwohl das Verfahren zum Beispiel durch Ausführungscode auf einem Computer verwirklicht werden kann, kann der Ausdruck dieses Verfahrens treffender und prägnanter als Pseudocode übermittelt und mitgeteilt werden, der die Programmablaufslogik durch Formeln, Algorithmen oder mathematische Ausdrücke allgemein definiert.
  • Demgemäß würden Fachleute einen Block, der A+B=C anzeigt, als Addierfunktion erkennen, deren Ausführung in Hardware und/oder Software zwei Eingaben (A und B) nehmen und daraus eine Summenausgabe (C) erzeugen würde. Daher ist die Verwendung von Formeln, Algorithmen oder mathematischen Ausdrücken als Beschreibungen so zu verstehen, dass diese eine physische Ausführungsform zumindest entweder in Hardware und/oder Software aufweisen (wie ein Computersystem, in dem die Verfahren der vorliegenden Erfindung angewendet beziehungsweise als eine Ausführungsform ausgeführt werden können).
  • 2 ist eine Darstellung einer Cheney-Abtastung, wie sie nach dem Stand der Technik bekannt ist. Wie aus 2 ersichtlich, beginnt eine klassische Cheney-Abtastung 20 durch Kopieren von Objekten, die erreichbar sind, vom Stammverzeichnis in den „Nach"-Bereich. Die Objekte werden durch Verwendung eines „Zuweisungszeigers", der die Grenze zwischen den zugewiesenen und den nicht zugewiesenes Bereichen des Cheney-Bereichs markiert, sequentiell zugewiesen. Die Objekte werden durch Verwendung eines Abtastzeigers abgetastet, der mit dem ersten zugewiesenen Objekt beginnt und die Objekte der Reihe nach von links nach rechts abtastet. Findet die Cheney-Abtastung einen Slot, der auf ein Objekt im „Von"-Bereich verweist, das bereits eine „Nach"-Bereich-Version aufweist, wird der Slot aktualisiert, so dass er auf die „Nach"-Version verweist. Entdeckt die Cheney-Abtastung ein Objekt im „Von"-Bereich, das noch nicht in den „Nach"-Bereich verschoben worden ist, so wird eine Version des Objekts unter Verwendung des Zuweisungszeigers dem „Nach"-Bereich zugewiesen. Der Zuweisungszeiger wird durch die Größe des Objekts vorgeschoben. Schließlich wird der Slot, der die Adresse des „Von"-Objekts enthält, aktualisiert, so dass er auf die neue „Nach"-Version des Objekts verweist. Dieses Verfahren wird manchmal als Zweifingerverfahren bezeichnet, wobei der rechte Finger den Zuweisungszeiger und der linke Finger den Abtastzeiger darstellt. Das Abtasten bewegt den linken Finger und das Zuweisen bewegt den rechten Finger. Die Cheney-Abtastung ist beendet, wenn der Abtastzeiger den Zuweisungszeiger eingeholt hat, wenn sich – mit anderen Worten – die Finger treffen. Da der „Von"-Bereich begrenzt ist, endet der Algorithmus in jedem Fall.
  • Unglücklicherweise findet die Cheney-Abtastung von 2 im Betrieb häufig ein Objekt im „Von-Bereich, das nicht im Speichercache angeordnet ist. Die Cheney-Abtastung bleibt stehen, bis das Objekt in den Cache gezogen werden kann, wodurch die Leistung der Speicherbereinigung verringert wird.
  • Wie unter Bezugnahme auf Vorgang 30 in 3 ersichtlich ist, kann ein Stehenbleiben der Cheney-Abtastung verhindert werden, indem Multithreaded-Rechenanlagen verwendet werden, die einen gemeinsamen Cache benützen. Ein „dritter Finger" wird verwendet, um dem Abtaster zu helfen, indem er vor dem Abtastzeiger Objekte im ersten „Von"-Speicherbereich in den Cache lädt. Dieser Dritter-Finger-Lade-Faden arbeitet an Objekten zwischen dem Abtastzeiger und dem Zuweisungszeiger. Er tastet das Objekt ab, wobei er jeden Slot untersucht. Wenn der Slot einen Nullzeiger oder einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, enthält, wird er als uninteressant angesehen, und der Ladefaden bewegt sich zum nächsten Slot.
  • Wenn der Slot einen Zeiger auf ein Objekt im „Von-"Bereich enthält, dann wird das Objekt in den Cache geladen, der gemeinsam mit dem Zuweisungsfaden benutzt wird. Wenn der Zeiger auf ein Objekt im zweiten „Nach"-Bereich verweist, so weiß der Ladethread bzw. Ladefaden, dass er „hinter" dem Kopierthead bwz. dem Kopierfaden zurückliegt und nimmt die Arbeit am genannten Objekt umgehend wieder auf. Mit anderen Worten springt er nach vor zu einem Objekt, das noch nicht abgetastet worden ist. Dieses Verfahren führt zu einer preiswerten blockierungsfreien Koordination zwischen den beiden Programmthreads.
  • 4 zeigt wie der Ladethread Zeiger vor dem Abtastzeiger aktualisiert. Wenn der Ladefaden daran geht, das nächste Objekt zu untersuchen, wird er erkennen, dass ein Objekt noch nicht kopiert worden ist, wenn ein Zeiger auf ein Objekt im ersten „Von"-Speicherbereich verweist, und liest dieses Objekt vorab, so dass der Abtastfaden möglichst keinen Cache-Verlust erleiden wird.
  • Auf starken Speicherzugriffsauftragsmaschinen, löscht der Zuweisungszeiger den Vtable gleich nach dem Grenzzeiger, bevor er das Objekt kopiert, so dass der Ladefaden den Null-Vtable sieht und weiß, dass er den Grenzzeiger erreicht hat. Wenn der Ladefaden einen Slot entdeckt, der einen Verweis auf ein Objekt enthält, das bereits verschoben worden ist, so aktualisiert er den Slot, so dass dieser auf die „Nach"-Version des Objekts verweist. Das hilft dem Zuweisungsfaden, indem es die Notwendigkeit ausmerzt, das „Von"-Objekt zu laden und dann den Objektkennsatz zu analysieren, um zu bestimmen, ob es bereits verschoben worden ist. Auf schwachen Speicherzugriffsauftragsmaschinen muss der Ladefaden den Zuweisungszeiger regelmäßig laden und bis zum Zuweisungszeiger abtasten.
  • Es gibt mehrere günstige Rennbedingungen, die durch diesen Vorgang eingebracht worden sind. Zunächst ist es dem Zuweisungsfaden möglich, den Ladefaden zu überholen. Der Zuweisungsfaden wird dadurch nicht beeinflusst. Der Ladefaden wird jedoch auf Objekte mit Zeigern in den „Nach"-Bereich treffen. Das ist die einzige Situation, in welcher der Ladefaden auf solche Zeiger trifft. Verweist der Zeiger, den er findet, auf ein Objekt zur Rechten des Objekts, das abgetastet wird, so kann der Ladezeiger das Laden an diesem Objekt wieder aufnehmen, da der Zuweisungsfaden mindestens so weit fortgeschritten ist.
  • Da sich der Ladefaden und der Zuweisungsfaden gegenseitig überholen, ist es möglich, dass beide Fäden versuchen, einen Slot im Objekt, das abgetastet wird, zu aktualisieren. Da beide Fäden versuchen, den Zeiger mit demselben Wert zu aktualisieren, ist diese Rennbedingung gutartig und der Algorithmus bleibt korrekt.
  • Man beachte, dass der Ladefaden niemals ein Objekt kopiert oder den Zuweisungszeiger aktualisiert. Diese Aufgabe ist dem Zuweisungsfaden vorbehalten, so dass wir den Zuweisungszeiger nicht synchronisieren müssen. Der Ladefaden kann den Zuweisungszeiger überholen, was erkannt wird, da Speicher jenseits des Zuweisungszeigers auf Null gesetzt ist. Da der Zuweisungszeiger niemals an initialisiertem Speicher vorbeizielen wird, ist das Schlimmste, was passieren kann, dass der Ladefaden einen überholten Zuweisungszeiger erfasst und die Abtastung vorzeitig beendet. Es gibt nichts, was der Ladefaden tun muss, um sicherzustellen, dass der Algorithmus korrekt ist, er ist nur ein Versuch, Arbeit zu übernehmen, die üblicherweise durch den Zuweisungsfaden erfolgt, wodurch der Zuweisungsfaden beschleunigt wird.
  • Zum besseren Verständnis dieses Vorgangs bildet der folgende Pseudocode ein mögliches Ausführungsschema für die modifizierte Cheney-Abtastung ab:
    Figure 00090001
    Figure 00100001
  • Ein Verweis in der Patentschrift auf „Ausführungsform" oder „eine Ausführungsform", „einige Ausführungsformen" oder „andere Ausführungsformen" bedeutet, dass mindestens einige Ausführungsformen, aber nicht notwendigerweise alle Ausführungsformen der Erfindung ein bestimmtes Merkmal, einen bestimmten Aufbau oder eine bestimmte Eigenschaft, die in Verbindung mit den Ausführungsformen beschrieben ist, aufweisen. Die verschiedenen Vorkommen von „Ausführungsform", „eine Ausführungsform" oder „einige Ausführungsformen" beziehen sich nicht unbedingt alle auf dieselben Ausführungsformen.
  • Wenn die Patentschrift angibt, dass ein Bestandteil, ein Merkmal, ein Aufbau oder eine Eigenschaft umfasst sein „kann" oder „könnte", so muss dieser bestimmte Bestandteil, dieses bestimmte Merkmal, dieser bestimmte Aufbau oder diese bestimmte Eigenschaft nicht unbedingt umfasst sein. Wenn sich die Patentschrift oder der Anspruch auf „ein" Element bezieht, bedeutet dies nicht, dass es nur eines dieser Elemente gibt. Wenn sich die Patentschrift oder die Ansprüche auf „ein zusätzliches" Element beziehen, schließt das nicht aus, dass es möglicherweise mehr als eines der zusätzlichen Elemente gibt.
  • Fachleute, die diese Offenbarung kennen, werden erkennen, dass viele andere Variationen der obigen Beschreibung und der Zeichnungen innerhalb des Umfangs der vorliegenden Erfindung gemacht werden können. Demgemäß sind es die folgenden Ansprüche einschließlich aller Ergänzungen dazu, die den Umfang der Erfindung definieren.
  • Zusammenfassung
  • Bei einer Ausführungsform verwendet ein Speichermanagement einen "third finger" Ladezeigerthread, der mit Speicherobjekten arbeitet, die in einem zweiten Speicherbereich zwischen einem Abtastzeigerthread und einem Zuweisungszeigerthread angeordnet sind, um Objekte in den zweiten Speicherbereich zu lesen, bevor diese abgetastet werden. Der Lesethread wird zu einem nächsten Speicherslot in dem zweiten Speicherbereich bewegt, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt in dem ersten Speicherbereich enthält. Das Speicherobjekt wird in einen Cache vorab gelesen, der mit einem Zuweisungszeigerthread gemeinsam benutzt wird, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt in dem ersten Bereich enthält.

Claims (30)

  1. Speicherverwaltungsverfahren, umfassend: das Aufweisen eines Ladezeigers, der an Speicherobjekten, die in einem zweiten Speicherbereich zwischen einem Abtastzeiger und einem Zuweisungszeiger angeordnet sind, arbeitet, wobei er Speicherobjekte abtastet, um Slots zu finden, die Zeiger auf Objekte im ersten Speicherbereich enthalten, das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und das Vorablesen des Speicherobjekts im ersten Bereich in einem Cache, der mit einem Thread, der den Zuweisungszeiger unterstützt, gemeinsam benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
  2. Speicherverwaltungsverfahren nach Anspruch 1, wobei der Ladezeiger beim Abtasten eines Nullzeigers zum nächsten Speicherslot bewegt wird.
  3. Speicherverwaltungsverfahren nach Anspruch 1, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn er auf einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, trifft.
  4. Speicherverwaltungsverfahren nach Anspruch 1, des Weiteren umfassend das Aktualisieren des Ladezeigers, so dass er dem Abtastzeiger gleicht, wenn ein Slot entdeckt wird, der einen Zeiger auf ein Objekt im zweiten Bereich enthält.
  5. Speicherverwaltungsverfahren nach Anspruch 1, wobei der Programm-Thread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
  6. Verfahren zur Speicherbereinigung, umfassend: das Aufteilen des erfassten Speichers in erste und zweite Speicherbereiche, das Abtasten des zweiten Speicherbereichs mit einem Ladezeiger, einem Abtastzeiger und einem Zuweisungszeiger, um zu bestimmen, welche Speicherobjekte in den zweiten Speicherbereich verschoben werden sollen; das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und das Vorablesen des Speicherobjekts in einen Cache, der gemeinsam mit dem Thread, der den Zuweisungszeiger unterstützt, benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
  7. Speicherverwaltungsverfahren nach Anspruch 5, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, sobald er einen Nullzeiger abtastet.
  8. Speicherverwaltungsverfahren nach Anspruch 5, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn ein Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, abgetastet wird.
  9. Speicherverwaltungsverfahren nach Anspruch 5, des Weiteren umfassend das Verweisen des Zeigers auf ein Objekt im zweiten Speicherbereich, wenn der Ladezeiger hinter dem Kopierzeigerthread zurückliegt.
  10. Speicherverwaltungsverfahren nach Anspruch 5, wobei der Thread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
  11. Gegenstand umfassend ein Speichermedium, auf dem Befehle gespeichert sind, die, wenn sie von einer Maschine ausgeführt werden, zu einer Speicherverwaltung führen, umfassend: das Aufweisen eines Ladezeigers, der an Speicherobjekten, die in einem zweiten Speicherbereich zwischen einem Abtastzeiger und einem Zuweisungszeiger angeordnet sind, arbeitet, wobei er Speicherobjekte abtastet, um Slots zu finden, die Zeiger auf Objekte im ersten Speicherbereich enthalten, das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und das Vorablesen des Speicherobjekts im ersten Bereich in den Cache, der mit einem Thread, der den Zuweisungszeiger unterstützt, gemeinsam benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
  12. Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 11 gespeichert sind, wobei der Ladezeiger beim Abtasten eines Nullzeigers zum nächsten Speicherslot bewegt wird.
  13. Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 11 gespeichert sind, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn er auf einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, trifft.
  14. Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 11 gespeichert sind, des Weiteren umfassend das Aktualisieren des Ladezeigers, so dass er dem Abtastzeiger gleicht, wenn ein Slot entdeckt wird, der einen Zeiger auf ein Objekt im zweiten Bereich enthält.
  15. Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 11 gespeichert sind, wobei der Programmthread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
  16. Gegenstand umfassend ein Speichermedium, auf dem Befehle gespeichert sind, die, wenn sie von einer Maschine ausgeführt werden, zu einer Speicherbereinigung führen, umfassend: das Aufteilen des erfassten Speichers in erste und zweite Speicherbereiche, das Abtasten des zweiten Speicherbereichs mit einem Ladezeiger, einem Abtastzeiger und einem Zuweisungszeiger, um zu bestimmen, welche Speicherobjekte in den zweiten Speicherbereich verschoben werden sollen; das Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und das Vorablesen des Speicherobjekts in einen Cache, der gemeinsam mit einem Thread, der den Zuweisungszeiger unterstützt, benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
  17. Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 16 gespeichert sind, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, sobald er einen Nullzeiger abtastet.
  18. Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 16 gespeichert sind, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn ein Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, abgetastet wird.
  19. Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 16 gespeichert sind, des Weiteren umfassend das Verweisen des Zeigers auf ein Objekt im zweiten Speicherbereich, wenn der Ladezeiger hinter dem Kopierzeigerthread zurückliegt.
  20. Gegenstand umfassend ein Speichermedium, auf dem Befehle nach Anspruch 16 gespeichert sind, wobei der Thread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
  21. Speicherverwaltungssystem, umfassend: einen Prozessor, der einen Speicher, der mit ihm verbunden ist, aufweist, wobei der Prozessor so ausführbar ist, dass er an Speicherobjekten, die im Speicher, der mit dem Prozessor verbunden ist, angeordnet sind, arbeiten kann, wobei die Speicherobjekte in einem zweiten Speicherbereich zwischen einem Abtastzeiger und einem Zuweisungszeiger angeordnet sind, wobei das System betrieben wird, um Speicherobjekte abzutasten, um Slots zu finden, die Zeiger auf Objekte in einem ersten Speicherbereich enthalten, Bewegen eines Ladezeiges zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und Vorablesen des Speicherobjekts im ersten Bereich in einen Cache, der gemeinsam mit dem Thread, der den Zuweisungszeiger unterstützt, benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
  22. Speicherverwaltungsverfahren nach Anspruch 21, wobei der Ladezeiger beim Abtasten eines Nullzeigers zum nächsten Speicherslot bewegt wird.
  23. Speicherverwaltungssystem nach Anspruch 21, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn er auf einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, trifft.
  24. Speicherverwaltungssystem nach Anspruch 21, des Weiteren umfassend das Aktualisieren des Ladezeigers, so dass er dem Abtastzeiger gleicht, wenn ein Slot entdeckt wird, der einen Zeiger auf ein Objekt im zweiten Bereich enthält.
  25. Speicherverwaltungsverfahren nach System 21, wobei der Programmthread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
  26. Speicherbereinigungssystem, umfassend: einen Prozessor, der einen Speicher, der mit ihm verbunden ist, aufweist, wobei der Prozessor so ausführbar ist, dass er an Speicherobjekten, die im Speicher, der mit dem Prozessor verbunden ist, angeordnet sind, arbeiten kann, wobei der Prozessor den erfassten Speicher in erste und zweite Speicherbereiche aufteilen kann, Abtasten des zweiten Speicherbereichs mit einem Ladezeiger, einem Abtastzeiger und einem Zuweisungszeiger, um zu bestimmen, welche Speicherobjekte in den zweiten Speicherbereich verschoben werden sollen; Bewegen des Ladezeigers zu einem nächsten Speicherslot im zweiten Speicherbereich, wenn der abgetastete Speicherslot keinen Zeiger auf ein Objekt im ersten Speicherbereich enthält, und Vorablesen des Speicherobjekts in einen Cache, der gemeinsam mit einem Thread, der den Zuweisungszeiger unterstützt, benutzt ist, wenn der abgetastete Speicherslot einen Zeiger auf ein Objekt im ersten Bereich enthält.
  27. Speicherverwaltungsverfahren nach Anspruch 26, wobei der Ladezeiger beim Abtasten eines Nullzeigers zum nächsten Speicherslot bewegt wird.
  28. Speicherverwaltungsverfahren nach Anspruch 26, wobei der Ladezeiger zum nächsten Speicherslot bewegt wird, wenn er auf einen Zeiger auf ein Objekt, das nicht in einem Bereich, der erfasst wird, angeordnet ist, trifft.
  29. Speicherverwaltungsverfahren nach Anspruch 26, des Weiteren umfassend das Verweisen des Zeigers auf ein Objekt im zweiten Speicherbereich, wenn der Ladezeiger hinter dem Kopierzeigerfaden zurückliegt.
  30. Speicherverwaltungsverfahren nach Anspruch 26, wobei der Programmthread, der den Zuweisungszeiger unterstützt, gleich nach dem Grenzzeiger einen Vtable löscht, bevor er das Speicherobjekt kopiert, um zu erreichen, dass der Ladefaden einen Null-Vtable sieht.
DE10393835T 2002-12-20 2003-11-20 Ausführung einer modifizierten Cheney-Abtastung in einer Multithreaded-Verarbeitungsumgebung Expired - Fee Related DE10393835B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/327,557 US6993540B2 (en) 2002-12-20 2002-12-20 Prefetching memory objects into a shared cache during garbage collection with a three-finger Cheney scan in a multithreaded processing environment
US10/327,557 2002-12-20
PCT/US2003/037256 WO2004061674A2 (en) 2002-12-20 2003-11-20 Execution of modified cheney scanning in a multithreaded processing environment

Publications (2)

Publication Number Publication Date
DE10393835T5 true DE10393835T5 (de) 2005-11-17
DE10393835B4 DE10393835B4 (de) 2012-10-25

Family

ID=32594286

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10393835T Expired - Fee Related DE10393835B4 (de) 2002-12-20 2003-11-20 Ausführung einer modifizierten Cheney-Abtastung in einer Multithreaded-Verarbeitungsumgebung

Country Status (8)

Country Link
US (1) US6993540B2 (de)
CN (1) CN100530136C (de)
AU (1) AU2003294425A1 (de)
DE (1) DE10393835B4 (de)
GB (1) GB2412203B (de)
HK (1) HK1075511A1 (de)
TW (1) TWI249669B (de)
WO (1) WO2004061674A2 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870170B2 (en) * 2005-05-03 2011-01-11 International Business Machines Corporation Method and apparatus for determining leaks in a Java heap
WO2006119272A2 (en) * 2005-05-04 2006-11-09 Rosenthal Collins Group, Llc Method and system for providing automatic exeuction of black box strategies for electronic trading
US8799882B2 (en) * 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
US8266609B2 (en) * 2005-12-07 2012-09-11 Microsoft Corporation Efficient placement of software transactional memory operations around procedure calls
US8799432B1 (en) * 2006-10-31 2014-08-05 Hewlett-Packard Development Company, L.P. Managed computer network caching requested and related data from remote computers
US7991808B2 (en) * 2008-05-21 2011-08-02 Apple Inc. Per thread garbage collection
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
US10235208B2 (en) * 2012-12-11 2019-03-19 Nvidia Corporation Technique for saving and restoring thread group operating state
US9208080B2 (en) * 2013-05-30 2015-12-08 Hewlett Packard Enterprise Development Lp Persistent memory garbage collection
US10025702B1 (en) * 2014-12-10 2018-07-17 Amazon Technologies, Inc. Browser capable of saving and restoring content item state
US9639460B1 (en) * 2014-12-18 2017-05-02 Amazon Technologies, Inc. Efficient string formatting
CN104536773B (zh) * 2015-02-03 2017-11-21 积成电子股份有限公司 基于内存扫描的嵌入式软件动态内存回收方法
GB2544315B (en) * 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
US11194714B2 (en) 2020-03-31 2021-12-07 International Business Machines Corporation Deep object graph traversal

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5687368A (en) * 1994-07-22 1997-11-11 Iowa State University Research Foundation, Inc. CPU-controlled garbage-collecting memory module
US5590332A (en) * 1995-01-13 1996-12-31 Baker; Henry G. Garbage collection, tail recursion and first-class continuations in stack-oriented languages
US7013454B2 (en) * 1999-02-22 2006-03-14 Sun Microsystems, Inc. Thread suspension system and method using trapping instructions
US6604182B1 (en) * 1999-10-21 2003-08-05 Oracle Corp. Methods for managing memory in a run-time environment including activation and deactivation of objects
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
US6886085B1 (en) * 2000-04-19 2005-04-26 International Business Machines Corporation Method and apparatus for efficient virtual memory management
US7124252B1 (en) * 2000-08-21 2006-10-17 Intel Corporation Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system
US7111294B2 (en) * 2001-01-16 2006-09-19 Microsoft Corporation Thread-specific heaps
US6542911B2 (en) * 2001-03-01 2003-04-01 Sun Microsystems, Inc. Method and apparatus for freeing memory from an extensible markup language document object model tree active in an application cache
US6662274B2 (en) * 2001-06-20 2003-12-09 Intel Corporation Method for using cache prefetch feature to improve garbage collection algorithm

Also Published As

Publication number Publication date
US20040122876A1 (en) 2004-06-24
HK1075511A1 (en) 2005-12-16
GB2412203B (en) 2006-07-12
GB2412203A (en) 2005-09-21
GB0506294D0 (en) 2005-05-04
WO2004061674A3 (en) 2006-07-27
DE10393835B4 (de) 2012-10-25
AU2003294425A1 (en) 2004-07-29
TWI249669B (en) 2006-02-21
AU2003294425A8 (en) 2004-07-29
CN1894673A (zh) 2007-01-10
TW200413912A (en) 2004-08-01
US6993540B2 (en) 2006-01-31
CN100530136C (zh) 2009-08-19
WO2004061674A2 (en) 2004-07-22

Similar Documents

Publication Publication Date Title
DE69427174T2 (de) Dynamische Hochleistungsprogrammverknüpfung durch Cachespeicherung
DE69800909T2 (de) Verfahren und Vorrichtung zur Optimierung der präzisen Speicherbereinigung, bei der Programmschleifen mit Zeiger-Feldern verwendet werden
DE69909021T2 (de) Dynamische Speicherrückforderung ohne Compiler- oder Programmverbinderunterstützung
DE69428848T2 (de) Mehrsprachige Standardressourcen
DE69825751T2 (de) Garbage-sammlungs-anordnung und verfahren mit begrenzter pausenzeit und mit einer schreibschranke die mit einer quelleninstanz eines partiell relokierten objektes assoziiert ist
DE60207222T2 (de) Verfahren und system zur profilerstellung, zur kontinuierlichen detektion von profilphasen
DE60006410T2 (de) Verfahren und system zum verteilen von objektorientierten rechnerprogrammen
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE69400406T2 (de) System und methode zur lokalisierung von geteilten bibliotheken
DE69800686T2 (de) Verfahren und Gerät für effizienten Operationen auf primären Typwerten ohne statisches Überladen
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE69130580T2 (de) Cache-Speicheranordnung
DE69801186T2 (de) Verfahren und Vorrichtung zum Auffinden von Objekt-Zeigern, für die Erkennung/Sammlung von nicht-referenzierten Daten-Objekten
DE69836796T2 (de) Datenverarbeiter mit lokalisierter gedächtnisreklamierung
DE69735342T2 (de) Binärprogrammkonvertiergerät und -verfahren
DE60032694T2 (de) Speicherrückforderungsverfahren
DE69930855T2 (de) Verfahren und vorrichtung zur durchführung einer deterministischen speicherzuordnungsantwort in einem computer-system
DE19945992B4 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
DE10393835T5 (de) Ausführung einer modifizierten Cheney-Abtastung in einer Multithreaded-Verarbeitungsumgebung
DE69229156T2 (de) Digitaldatenprozessor mit verbesserter Wiederanlaufkennzeichnung und Verzweigung
DE69519904T2 (de) Verfahren und Vorrichtung zur Bereitstellung einer zusammenhängenden Navigation in historischen Daten
DE19681256C2 (de) Ausführung von Anwendungen am Platz vom Speicher
DE3833933C2 (de) Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion
DE69618221T2 (de) Mechanismus zur wartung objektorientierter "methoden" der keine unterbrechung des computersystems erfordert
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor

Legal Events

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

Ref document number: 10393835

Country of ref document: DE

Date of ref document: 20051117

Kind code of ref document: P

8139 Disposal/non-payment of the annual fee
8170 Reinstatement of the former position
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20130126

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee