DE112016001686T5 - Automatische Speicherbereinigung ohne Verwendung von Spezialbefehlen - Google Patents

Automatische Speicherbereinigung ohne Verwendung von Spezialbefehlen Download PDF

Info

Publication number
DE112016001686T5
DE112016001686T5 DE112016001686.7T DE112016001686T DE112016001686T5 DE 112016001686 T5 DE112016001686 T5 DE 112016001686T5 DE 112016001686 T DE112016001686 T DE 112016001686T DE 112016001686 T5 DE112016001686 T5 DE 112016001686T5
Authority
DE
Germany
Prior art keywords
pointer
object pointer
routine
address
garbage collection
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
DE112016001686.7T
Other languages
English (en)
Other versions
DE112016001686B4 (de
Inventor
Giles Roger Frazier
Michael Karl Gschwind
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Priority claimed from US14/755,748 external-priority patent/US10176093B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112016001686T5 publication Critical patent/DE112016001686T5/de
Application granted granted Critical
Publication of DE112016001686B4 publication Critical patent/DE112016001686B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Ermöglicht wird eine automatische Speicherbereinigungsverarbeitung. Auf Grundlage einer Ausführung eines Ladebefehls und einer Feststellung, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet und dass der Objektzeiger eine Position innerhalb eines ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet, wird durch eine Routine, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird, eine Verarbeitungssteuerung erhalten. Die Routine erhält den Objektzeiger aus dem Zeigerspeicherbereich und ermittelt, ob der Objektzeiger modifiziert werden soll. Wenn der Objektzeiger modifiziert werden soll, modifiziert die Routine den Objektzeiger. Danach kann die Routine den modifizierten Objektzeiger in einer ausgewählten Position speichern.

Description

  • HINTERGRUND
  • Ein oder mehrere Aspekte beziehen sich im Allgemeinen auf eine Verarbeitung innerhalb einer Datenverarbeitungsumgebung und im Besonderen auf eine automatische Speicherbereinigungsverarbeitung innerhalb der Datenverarbeitungsumgebung.
  • Die automatische Speicherbereinigung ist ein automatischer Arbeitsspeicher-Verwaltungsprozess, der nicht mehr referenzierte Objekte im Arbeitsspeicher identifiziert und diese Objekte freigibt. Wenn Arbeitsspeicherobjekte verschiedener Größe zugeordnet und später freigegeben werden, kommt es zu einer zunehmenden Fragmentierung des Arbeitsspeichers, in dem sie gespeichert sind. Schließlich sind nur noch sehr wenige große, freie Arbeitsspeicherbereiche vorhanden, und zusätzliche Objekte lassen sich nur schwer speichern, ohne die Arbeitsspeichergröße zu erhöhen. In diesem Fall wird ein als Komprimierung bezeichneter Prozess innerhalb der automatischen Speicherbereinigung genutzt, um die zugeordneten Objekte in einem großen Bereich zu konsolidieren und dadurch einen weiteren großen Bereich von freiem Speicherplatz für neue Objekte verfügbar zu machen. Während der Konsolidierung werden Arbeitsspeicherobjekte, die auch dann noch referenziert werden, von einem Arbeitsspeicherbereich in einen weiteren Arbeitsspeicherbereich verschoben.
  • Wenn für einen Objektspeicherbereich eine automatische Speicherbereinigung durchgeführt wird, müssen Anwendungen, die den Objektspeicherbereich nutzen, herkömmlicherweise ihre Ausführung aussetzen. Hiermit wird zum einen ermittelt, ob die Zeiger auf die Objekte, mit deren Hilfe die Anwendungen auf die Objekte zugreifen, noch gültig sind, da die Objekte unter Umständen verschoben wurden.
  • Diese mitunter mehrere Sekunden dauernden Aussetzungen verhindern, dass die Anwendungen für zeitkritische Aufgaben wie z.B. Transaktionsverarbeitung, Echtzeitspiele oder mechanische Steuerung verwendet werden. Somit besteht ein Bedarf an einem optimierten automatischen Speicherbereinigungsprozess.
  • KURZDARSTELLUNG
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird ein optimierter automatischer Speicherbereinigungsprozess bereitgestellt, mit dem Anwendungen während des automatischen Speicherbereinigungsprozesses weiterhin ausgeführt werden können (ohne aufgrund der automatischen Speicherbereinigung ausgesetzt zu werden), wenn diese Anwendungen nicht auf Objekte in einem Arbeitsspeicherbereich zugreifen, für den eine automatische Speicherbereinigung stattfindet, und mit dem Anwendungen, die auf Objekte in einem Arbeitsspeicherbereich zugreifen, für den eine automatische Speicherbereinigung stattfindet, nach einer sehr kurzen Verzögerung die Verarbeitung sofort wieder aufnehmen können. Ermöglicht wird dies durch ein Bereitstellen eines effizienten Mechanismus, um zu erkennen, wann auf einen Zeiger auf den gerade bereinigten Objektspeicherbereich zugegriffen wird, um den Zeiger auf ein Objekt in dem Arbeitsspeicherbereich, für den eine automatische Speicherbereinigung stattfindet, zu erhalten und um den Zeiger zu modifizieren. Dies erfolgt vorteilhafterweise, ohne Spezialbefehle zu verwenden und/oder ohne Programmmodifizierungen zu benötigen, um Spezialbefehle auszuführen. Des Weiteren wird die Leistung innerhalb einer Datenverarbeitungsumgebung wie z.B. die Anwendungsleistung und/oder die Prozessorleistung verbessert.
  • Gemäß einer Ausführungsform wird ein Computerprogrammprodukt bereitgestellt, um eine automatische Speicherbereinigung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen. Das Computerprogrammprodukt weist ein Arbeitsspeichermedium auf, das von einer Verarbeitungsschaltung lesbar ist und Befehle zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren durchzuführen. Das Verfahren beinhaltet zum Beispiel ein Erhalten einer Verarbeitungssteuerung durch eine Routine, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird. Wobei das Erhalten der Verarbeitungssteuerung auf Grundlage einer Ausführung eines Ladebefehls und einer Feststellung erfolgt, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet und dass der Objektzeiger eine Position innerhalb eines ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet. Bei Erhalten des Objektzeigers aus dem Zeigerspeicherbereich durch die Routine auf Grundlage des Erhaltens der Verarbeitungssteuerung durch die Routine, gibt der Objektzeiger eine Position eines Objekts an, auf das der Objektzeiger zeigt. Ermitteln durch die Routine, ob der Objektzeiger modifiziert werden soll, und auf Grundlage des Feststellens, dass der Objektzeiger modifiziert werden soll, Modifizieren des Objektzeigers durch die Routine, um einen modifizierten Objektzeiger bereitzustellen. Auf Grundlage des Modifizierens des Objektzeigers wird der modifizierte Objektzeiger in einer ausgewählten Position gespeichert.
  • Vorteilhafterweise ermöglicht dies Anwendungen, die Objekte in einem Arbeitsspeicherbereich verwenden, für den keine automatische Speicherbereinigung stattfindet, die Verarbeitung während der automatischen Speicherbereinigung ohne Unterbrechung fortzusetzen, und es ermöglicht Anwendungen, die Objekte in einem Arbeitsspeicherbereich verwenden, für den eine automatische Speicherbereinigung stattfindet, die Verarbeitung nach einer sehr kurzen, nicht wahrnehmbaren Verzögerung fortzusetzen, wodurch die Leistung verbessert wird. Des Weiteren erfordert es nicht die Verwendung von Spezialbefehlen oder Anwendungsmodifizierungen, um die Spezialbefehle zu nutzen.
  • Bei einer Ausführungsform erfolgt das Erhalten der Verarbeitungssteuerung über eine Unterbrechung, die durch eine Prozessorhardware ausgegeben wird. Die Unterbrechung wird auf Grundlage einer Ausführung des Ladebefehls und der Feststellung ausgegeben, dass sich die Adresse des zu ladenden Objektzeigers in dem Zeigerspeicherbereich befindet und dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet. Bei einem bestimmten Beispiel ist die Unterbrechung eine leichtgewichtige Unterbrechung (d.h. ohne Beteiligung des Betriebssystems), welche die Steuerung direkt an eine Routine auf Anwendungsebene übergibt. Vorteilhafterweise ermöglichen eine oder mehrere dieser Ausführungsformen eine sofortige Verarbeitung durch die Routine und ermöglichen der Anwendung, die auf den Zeiger zugegriffen hat, die Verarbeitung sofort fortzusetzen, nachdem die Unterbrechung verarbeitet wurde, ohne die Verzögerung einer Unterbrechungsroutine auf Supervisor-Ebene nach sich zu ziehen.
  • Bei einer weiteren Ausführungsform ist der ausgewählte Arbeitsspeicherbereich, für den eine automatische Speicherbereinigung stattfindet, Teil eines Objektbereichs, der zudem ein oder mehrere andere Objekte enthält, für die keine automatische Speicherbereinigung stattfindet, und eine oder mehrere Anwendungen, die auf den Objektbereich zugreifen, für den keine automatische Speicherbereinigung stattfindet, fahren während der automatischen Speicherbereinigung mit der Verarbeitung fort. So fahren sie zum Beispiel ohne eine Unterbrechung mit der Verarbeitung fort. Des Weiteren nimmt die Anwendung, die auf den Objektzeiger zugegriffen hat, der ein Objekt in dem ausgewählten Arbeitsspeicherbereich angibt, für den eine automatische Speicherbereinigung stattfindet, die Verarbeitung nach einer sehr kurzen Verzögerung sofort wieder auf, während die Routine (z.B. eine leichtgewichtige Routine auf Anwendungsebene) den Zeiger verarbeitet. Auf diese Weise können Anwendungen für eine zeitkritische Verarbeitung verwendet werden, da keine Anwendung für einen Zeitraum verzögert wird, der bedeutsam genug ist, um wahrnehmbar zu sein.
  • Bei einer Ausführungsform wird die Adresse des Objektzeigers (d.h. die Adresse, die eine Position des Objektzeigers angibt) aus der Ausführung des Ladebefehls ermittelt, und die Adresse des Objektzeigers wird mit Daten verglichen, die sich auf den Zeigerspeicherbereich beziehen, um zu ermitteln, ob sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet. Auf Grundlage dessen, dass bei dem Vergleichen festgestellt wird, dass sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet, wird der Objektzeiger (d.h. eine Adresse, die eine Position eines Objekts angibt) mit Daten verglichen, die sich auf den ausgewählten Arbeitsspeicherbereich beziehen, um festzustellen, dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt. Auf Grundlage dessen, dass festgestellt wird, dass sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet und dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt, wird die Steuerung der Routine bereitgestellt. Das Erhalten des Objektzeigers aus dem Zeigerspeicherbereich eliminiert vorteilhafterweise die Notwendigkeit einer Verwendung von Spezialbefehlen, um den Objektzeiger zu erhalten; es eliminiert somit die Notwendigkeit, eigens für die automatische Speicherbereinigung vorgesehene Spezialbefehle zu definieren und bestehende Programme zu modifizieren, um die Befehle zum Erhalten von Objektzeigern zu verwenden.
  • Bei Ausführungsformen beinhaltet der Zeigerspeicherbereich einen zusammenhängenden Arbeitsspeicherbereich, der eine Mehrzahl von Objektzeigern enthält. In einem Beispiel wird der Zeigerspeicherbereich durch ein Register oder eine Position innerhalb des Arbeitsspeichers angegeben.
  • Des Weiteren wird bei Ausführungsformen der ausgewählte Arbeitsspeicherbereich durch ein Register oder eine Position innerhalb des Arbeitsspeichers angegeben, und das Register enthält bei einer Ausführungsform eine Basisadresse des ausgewählten Arbeitsspeicherbereichs und eine Größe des ausgewählten Arbeitsspeicherbereichs.
  • Des Weiteren ist in einem Beispiel die ausgewählte Position, in welcher der modifizierte Objektzeiger gespeichert wird, eine Position innerhalb des Zeigerspeicherbereichs oder eine Position, die durch den Ladebefehl vorgegeben wird.
  • So enthält der Ladebefehl zum Beispiel ein oder mehrere Betriebscodefelder, um eine Ladeoperation vorzugeben, ein Ergebnisfeld, mit dem der Objektzeiger erhalten wird, und ein oder mehrere andere Felder, die bei der Ladeoperation verwendet werden.
  • Gemäß einem weiteren Aspekt wird ein Computerprogrammprodukt zum Vereinfachen einer Verarbeitung innerhalb einer Datenverarbeitungsumgebung bereitgestellt. Das Computerprogrammprodukt beinhaltet ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Befehle zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren durchzuführen. Das Verfahren beinhaltet zum Beispiel ein Erhalten einer Verarbeitungssteuerung durch eine Routine, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird. Wobei das Erhalten der Verarbeitungssteuerung auf Grundlage einer Ermittlung erfolgt, dass ein Objektzeiger, auf den zugegriffen wird, eine Position innerhalb eines vorgegebenen Arbeitsspeicherbereichs angibt. Auf Grundlage des Erhaltens der Verarbeitungssteuerung durch die Routine führt die Routine eine Aktion durch. Das Durchführen einer Aktion beinhaltet mindestens: ein Bereitstellen eines Warnhinweises; ein Verhindern des Zugriffs auf den vorgegebenen Arbeitsspeicherbereich; oder ein Modifizieren des Objektzeigers und Speichern des modifizierten Objektzeigers. Hierdurch kann die Routine vorteilhafterweise immer dann eine Aktion durchführen, wenn ein Zeiger auf einen vorgegebenen Arbeitsspeicherbereich zugreifen soll, unabhängig vom Grund für den Zugriff.
  • Gemäß einem weiteren Aspekt wird ein Computersystem zum Vereinfachen einer automatischen Speicherbereinigung innerhalb einer Datenverarbeitungsumgebung bereitgestellt, wobei das Computersystem aufweist:
    einen Arbeitsspeicher; und einen Prozessor, der mit dem Arbeitsspeicher Daten austauscht, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren ausführt, wobei das Verfahren aufweist: Erhalten einer Verarbeitungssteuerung durch eine Routine, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird, wobei das Erhalten der Verarbeitungssteuerung auf Grundlage einer Ausführung eines Ladebefehls und einer Feststellung erfolgt, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet und dass der Objektzeiger eine Position innerhalb eines ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet; auf Grundlage des Erhaltens der Verarbeitungssteuerung durch die Routine Erhalten des Objektzeigers aus dem Zeigerspeicherbereich durch die Routine, wobei der Objektzeiger eine Position eines Objekts angibt, auf das der Objektzeiger zeigt; Ermitteln durch die Routine, ob der Objektzeiger modifiziert werden soll; auf Grundlage des Feststellens, dass der Objektzeiger modifiziert werden soll, Modifizieren des Objektzeigers durch die Routine, um einen modifizierten Objektzeiger bereitzustellen; und auf Grundlage des Modifizierens des Objektzeigers Speichern des modifizierten Objektzeigers in einer ausgewählten Position
  • Gemäß einem weiteren Aspekt wird ein computerrealisiertes Verfahren zum Vereinfachen einer automatischen Speicherbereinigung innerhalb einer Datenverarbeitungsumgebung bereitgestellt, wobei das computerrealisierte Verfahren aufweist:
    Erhalten einer Verarbeitungssteuerung durch eine Routine, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird, wobei das Erhalten der Verarbeitungssteuerung auf Grundlage einer Ausführung eines Ladebefehls und einer Feststellung erfolgt, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet und dass der Objektzeiger eine Position innerhalb eines ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet; auf Grundlage des Erhaltens der Verarbeitungssteuerung durch die Routine Erhalten des Objektzeigers aus dem Zeigerspeicherbereich durch die Routine, wobei der Objektzeiger eine Position eines Objekts angibt, auf das der Objektzeiger zeigt; Ermitteln durch die Routine, ob der Objektzeiger modifiziert werden soll; auf Grundlage des Feststellens, dass der Objektzeiger modifiziert werden soll, Modifizieren des Objektzeigers durch die Routine, um einen modifizierten Objektzeiger bereitzustellen; und auf Grundlage des Modifizierens des Objektzeigers Speichern des modifizierten Objektzeigers in einer ausgewählten Position
  • Computerrealisierte Verfahren und Systeme mit Bezug zu einem oder mehreren Aspekten sowie andere Computerprogrammprodukte können hier ebenfalls beschrieben und beansprucht werden. Darüber hinaus werden hier auch Dienste, die sich auf einen oder mehrere Aspekte beziehen, beschrieben und gegebenenfalls beansprucht.
  • Durch die hier beschriebenen Methoden werden zusätzliche Merkmale und Vorteile realisiert. Weitere Ausführungsformen und Aspekte werden hier ausführlich beschrieben und können als Bestandteil der beanspruchten Aspekte betrachtet werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Bevorzugte Ausführungsformen der vorliegenden Erfindung werden nun lediglich beispielhaft und mit Blick auf die folgenden Zeichnungen beschrieben:
  • 1 stellt ein Beispiel für eine Datenverarbeitungsumgebung dar, die eine oder mehrere Ausführungsformen beinhaltet und verwendet;
  • 2A stellt ein weiteres Beispiel für eine Datenverarbeitungsumgebung dar, die eine oder mehrere Ausführungsformen beinhaltet und verwendet;
  • 2B stellt weitere Einzelheiten des Arbeitsspeichers aus 2A gemäß einer Ausführungsform der vorliegenden Erfindung dar;
  • 3 stellt ein Beispiel für einen Lade-Doppelwortbefehl gemäß einer oder mehreren Ausführungsformen dar;
  • 4 stellt weitere Einzelheiten eines Arbeitsspeichers gemäß einer oder mehreren Ausführungsformen dar, für den eine automatische Speicherbereinigung stattfindet;
  • 5A stellt ein Beispiel für ein Register eines Zeigerspeicherbereichs gemäß einer oder mehreren Ausführungsformen dar;
  • 5B stellt ein Beispiel für ein Register der ladeüberwachten Region gemäß einer oder mehreren Ausführungsformen dar;
  • 6 stellt eine Ausführungsform einer Logik zum Durchführen einer automatischen Speicherbereinigung unter Verwendung des Lade-Doppelwortbefehls gemäß einer oder mehreren Ausführungsformen dar;
  • 7 stellt eine Ausführungsform einer Logik zum Durchführen einer optimierten automatischen Speicherbereinigung dar;
  • 8 stellt eine Ausführungsform einer Logik zum Durchführen einer Aktion durch eine Routine auf Grundlage einer vorgegebenen Bedingung dar;
  • 9 stellt ein Beispiel für einen Cloud-Datenverarbeitungsknoten gemäß einer oder mehreren Ausführungsformen dar;
  • 10 stellt eine Ausführungsform eines Cloud-Datenverarbeitungsknotens gemäß einer oder mehreren Ausführungsformen dar; und
  • 11 stellt ein Beispiel für Abstraktionsmodellschichten gemäß einer oder mehreren Ausführungsformen dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einer oder mehreren Ausführungsformen wird eine Fähigkeit für einen optimierten automatischen Speicherbereinigungsprozess bereitgestellt, der vorteilhafterweise die Anwendungsleistung verbessert, die Leistung des Prozessors verbessert, der die Anwendung ausführt, und/oder die Leistung der Datenverarbeitungsumgebung verbessert, in welcher der Prozessor läuft.
  • Der optimierte automatische Speicherbereinigungsprozess ermöglicht (auch als Programme bezeichneten) Anwendungen, eine automatische Speicherbereinigung durchzuführen, ohne dass eine Programmmodifizierung erforderlich ist, um Spezialbefehle oder Hardware zum Ausführen von Spezialbefehlen zu verwenden. Des Weiteren ermöglicht sie bei einer oder mehreren Ausführungsformen Anwendungen, die auf Objekte in einem Arbeitsspeicherbereich zugreifen, für den keine automatische Speicherbereinigung stattfindet, während der automatischen Speicherbereinigung die Verarbeitung ohne Unterbrechung fortzusetzen, sie ermöglicht Anwendungen, die auf Objekte in einem Arbeitsspeicherbereich zugreifen, für den eine automatische Speicherbereinigung stattfindet, die Verarbeitung nach einer sehr kurzen, nicht wahrnehmbaren Verzögerung fortzusetzen, und sie verbessert des Weiteren die Verarbeitung der (auch als Zeiger bezeichneten) Objektzeiger.
  • Bei einer Ausführungsform dient ein als Lade-Doppelwortbefehl (ld-Befehl) bezeichneter Befehl zum Laden von Daten wie z.B. Objektzeigern (z.B. Adressen von Objekten). Wenn der Befehl ausgeführt wird, wird die Adresse der zu ladenden Daten (z.B. der Objektzeiger) mit einem Objektzeigerbereich verglichen, und wenn sich die Daten nicht in dem Objektzeigerbereich befinden, wird der Ladebefehl wie üblich ausgeführt. Wenn sich die Adresse der zu ladenden Daten jedoch in dem Zeigerspeicherbereich befindet, wird anhand einer Prüfung ermittelt, ob die zu ladenden Daten auf ein Objekt in einem gegebenen Adressbereich zeigen (z.B. einem Arbeitsspeicherbereich, für den eine automatische Speicherbereinigung stattfindet). Wenn sie nicht auf ein Objekt in dem Adressbereich zeigen, wird der Ladebefehl wie üblich ausgeführt. Wenn die zu ladenden Daten jedoch auf den gegebenen Adressbereich zeigen, verursacht der Prozessor eine (als EBB (Event-Based Branch, ereignisbasierte Verzweigung) bezeichnete) asynchrone Verzweigung zu einer Zeigeraktualisierungsroutine (die auch als Routine für die automatische Speicherbereinigung, als EBB-Routine oder als Routine bezeichnet wird). Auf diese Weise kann die Zeigeraktualisierungsroutine den Zeiger (z.B. die Adresse des Objekts) aktualisieren, wenn der Zeiger, auf den gezeigt wird, während eines laufenden automatischen Speicherbereinigungsprozesses entfernt wurde oder durch die Routine entfernt wird. Der aktualisierte Zeiger wird dann in einer ausgewählten Position gespeichert, bei der es sich in einem Beispiel um eine Position innerhalb des Zeigerspeicherbereichs handeln kann.
  • Um die Adresse des Zeigers zu ermitteln, aktualisiert die Zeigeraktualisierungsroutine bei einer Ausführungsform den ld-Befehl, um die Quellregister zu ermitteln, liest die Quellregister und berechnet die Adresse des Zeigers auf Grundlage eines Inhalts der Quellregister. Anstelle der Berechnung der Zeigeradresse durch die Zeigeraktualisierungsroutine wie oben erwähnt, wird bei einer weiteren Ausführungsform die Zeigeraktualisierungsroutine bereitgestellt oder hat direkten Zugriff auf die Zeigeradresse. Bei dieser Ausführungsform erhält die Prozessorhardware die Adresse des Zeigers zum Beispiel aus dem Befehl (z.B. eine EA (effektive Adresse), die durch den unten beschriebenen ld-Befehl angegeben wird) und speichert die (auch als Zeigeradresse bezeichnete) Adresse des Zeigers in einer vordefinierten Position wie z.B. einer vorgegebenen Arbeitsspeicherposition oder einem Register, auf das die Zeigeraktualisierungsroutine direkt zugreifen kann.
  • In einem Beispiel kann die Zeigeradresse in einer vorgegebenen Position in einem Speicher gespeichert werden. So kann zum Beispiel vorgegeben sein, dass die Speicheradresse, unter der die Zeigeradresse gespeichert werden soll, der in einem EBBHR-Register (Event Based Branch Handler Register, Register der ereignisbasierten Verzweigungsroutine) gespeicherten EBB-Routinenadresse unmittelbar vorangeht oder dass sie einen anderen vorgegebenen Offset zu der Adresse aufweist. Ein Beispiel-Offset kann darin bestehen, dass die Zeigeradresse an einer Speicherposition gespeichert wird, die dem Start der eigentlichen Zeigeraktualisierungsroutine unmittelbar vorangeht. Wenn dies der Fall ist, liest die Zeigeraktualisierungsroutine einfach diese Speicherposition, um die Zeigeradresse zu ermitteln. In einem weiteren Beispiel wird die Zeigeradresse in einem bestehenden Register gespeichert, das für keinen weiteren Zweck benötigt wird. So kann das Register zum Beispiel Teil einer weiteren Einrichtung sein, z.B. einer Einrichtung zur Leistungsüberwachung. Des Weiteren kann die Adresse in dem Register gespeichert werden, das zum Speichern der Adresse der Zeigeraktualisierungsroutine verwendet wird, d.h. im EBBHR. Die Zeigeradresse kann unmittelbar nach dem Auftreten der EBB durch die Hardware in das EBBHR geladen werden, woraufhin die Zeigeraktualisierungsroutine das betreffende Register liest, wenn die Zeigeradresse benötigt wird, und es wiederherstellt, so dass es die Startadresse der Zeigeraktualisierungsroutine enthält, bevor die Steuerung wieder an die Anwendung übergeben wird. Auf ähnliche Art und Weise kann jedes andere Register verwendet werden, sofern das Register während der Ausführung der Zeigeraktualisierungsroutine nicht für einen anderen Zweck benötigt wird, als die Zeigeradresse anzugeben, und sofern das Register vor der Rückkehr zur Anwendung durch die Zeigeraktualisierungsroutine wiederhergestellt werden kann.
  • Eine Ausführungsform einer Datenverarbeitungsumgebung, die eine oder mehrere Ausführungsformen beinhaltet und verwendet, wird unter Bezugnahme auf 1 beschrieben. Eine Datenverarbeitungsumgebung 100 beinhaltet zum Beispiel einen Prozessor 102 (z.B. eine Zentraleinheit), einen Arbeitsspeicher 104 (z.B. einen Hauptspeicher) und eine oder mehrere Eingabe/Ausgabe-Einheiten (E/A-Einheiten) und/oder -Schnittstellen 106, die z.B. über einen oder mehrere Busse 108 und/oder andere Verbindungen miteinander verbunden sind.
  • Bei einer Ausführungsform beruht der Prozessor 102 auf der von der International Business Machines Corporation angebotenen Power Architecture. Eine Ausführungsform der Power Architecture wird in „Power ISA Version 2.07B“, International Business Machines Corporation, 9. April 2015, beschrieben, das hiermit durch Bezugnahme in seiner Gesamtheit mit aufgenommen wird. POWER ARCHITECTURE® ist eine eingetragene Marke der International Business Machines Corporation mit Sitz in Armonk, New York, USA. Andere hier genannte Namen können eingetragene Marken, Marken oder Produktnamen der International Business Machines Corporation oder anderer Unternehmen sein.
  • In einem weiteren Beispiel beruht der Prozessor 102 auf der von der International Business Machines Corporation angebotenen z/Architecture und ist Teil eines Servers wie z.B. des System z-Servers, der die z/Architecture realisiert und ebenfalls von der International Business Machines Corporation angeboten wird. Eine Ausführungsform der z/Architecture wird in einer IBM® Publikation mit dem Titel „z/Architecture Principles of Operation“, IBM® Publikation Nr. SA22-7832-10, elfte Auflage, März 2015, beschrieben, die hierin durch Bezugnahme in ihrer Gesamtheit mit aufgenommen wird. In einem Beispiel führt der Prozessor ein Betriebssystem wie z.B. z/OS aus, das ebenfalls von der International Business Machines Corporation angeboten wird. IBM®, Z/ARCHITECTURE® und Z/OS® sind eingetragene Marken der International Business Machines Corporation.
  • Bei noch einer weiteren Ausführungsform beruht der Prozessor 102 auf einer von der Intel Corporation angebotenen Intel-Architektur. Intel® ist eine eingetragene Marke der Intel Corporation mit Sitz in Santa Clara, Kalifornien. Des Weiteren kann der Prozessor 102 auf anderen Architekturen beruhen. Die hier erwähnten Architekturen dienen lediglich als Beispiele.
  • Eine weitere Ausführungsform einer Datenverarbeitungsumgebung, die eine oder mehrere Ausführungsformen beinhaltet und verwendet, wird unter Bezugnahme auf 2A beschrieben. In diesem Beispiel beinhaltet eine Datenverarbeitungsumgebung 200 zum Beispiel eine native Zentraleinheit (CPU) 202, einen Arbeitsspeicher 204 und eine oder mehrere Eingabe/Ausgabe-Einheiten und/oder -Schnittstellen 206, die zum Beispiel über einen oder mehrere Busse 208 und/oder andere Verbindungen miteinander verbunden sind. Die Datenverarbeitungsumgebung 200 kann zum Beispiel einen von der International Business Machines Corporation mit Sitz in Armonk, New York, angebotenen PowerPC®-Prozessor, einen zSeries-Server oder einen pSeries-Server; einen von Hewlett Packard Co. mit Sitz in Palo Alto, Kalifornien, angebotenen HP Superdome mit Intel-Itanium-II-Prozessoren; und/oder andere Maschinen auf Grundlage von Architekturen beinhalten, die von der International Business Machines Corporation, von Hewlett Packard, Intel, Oracle oder anderen angeboten werden.
  • Die native Zentraleinheit 202 beinhaltet ein oder mehrere native Register 210 wie z.B. ein oder mehrere Universalregister und/oder ein oder mehrere Spezialregister, die während einer Verarbeitung innerhalb der Umgebung verwendet werden. Diese Register enthalten Daten, die für den Zustand der Umgebung zu jedem beliebigen Zeitpunkt stehen.
  • Darüber hinaus führt die native Zentraleinheit 202 Befehle und Code aus, die in dem Arbeitsspeicher 204 gespeichert sind. In einem bestimmten Beispiel führt die Zentraleinheit einen Emulatorcode 212 aus, der in dem Arbeitsspeicher 204 gespeichert ist. Anhand dieses Codes kann die in einer Architektur konfigurierte Verarbeitungsumgebung eine weitere Architektur emulieren. So ermöglicht der Emulatorcode 212 zum Beispiel Maschinen auf Grundlage von anderen Architekturen als der Power® Architecture wie beispielsweise zSeries-Servern, pSeries-Servern, HP-Superdome-Servern oder anderen, die Power Architecture zu emulieren und Software und Befehle auszuführen, die auf Grundlage der Power Architecture entwickelt wurden. In einem weiteren Beispiel ermöglicht der Emulatorcode 212 Maschinen auf Grundlage von anderen Architekturen als der z/Architecture wie beispielsweise PowerPC-Prozessoren, pSeries-Servern, HP-Superdome-Servern oder anderen, die z/Architecture zu emulieren und Software und Befehle auszuführen, die auf Grundlage der z/Architecture entwickelt wurden. Auch andere Architekturen können emuliert werden. Power und PowerPC sind Marken der International Business Machines Corporation.
  • Weitere Einzelheiten zu dem Emulatorcode 212 werden mit Bezug auf 2B beschrieben. In dem Arbeitsspeicher 204 gespeicherte Gastbefehle 250 weisen Softwarebefehle (die z.B. Maschinenbefehlen entsprechen) auf, die entwickelt wurden, um in einer anderen Architektur als derjenigen der nativen CPU 202 ausgeführt zu werden. Die Gastbefehle 250 können zum Beispiel für eine Ausführung in einem PowerPC- oder einem z/Architecture-Prozessor 102 entworfen worden sein, werden jedoch stattdessen in der nativen CPU 202 emuliert, bei der es sich zum Beispiel um einen Itanium-II-Prozessor von Intel handeln kann. In einem Beispiel beinhaltet der Emulatorcode 212 eine Befehlsabrufroutine 252, um einen oder mehrere Gastbefehle 250 aus dem Arbeitsspeicher 204 zu erhalten und um optional ein lokales Puffern für die erhaltenen Befehle bereitzustellen. Er beinhaltet außerdem eine Befehlsübersetzungsroutine 254, um die Art des erhaltenen Gastbefehls zu ermitteln und den Gastbefehl in einen oder mehrere entsprechende native Befehle 256 zu übersetzen. Diese Übersetzung beinhaltet zum Beispiel ein Identifizieren der Funktion, die durch den Gastbefehl durchgeführt werden soll, und ein Auswählen des/der nativen Befehls/Befehle, welche die Funktion ausführen soll/en.
  • Des Weiteren beinhaltet der Emulatorcode 212 eine Emulationssteuerungsroutine 260, um zu veranlassen, dass die nativen Befehle ausgeführt werden. Die Emulationssteuerungsroutine 260 kann die native CPU 202 dazu veranlassen, eine Routine mit nativen Befehlen auszuführen, die einen oder mehrere zuvor erhaltene Gastbefehle emulieren, und die nach Abschluss einer solchen Ausführung die Steuerung wieder an die Befehlsabrufroutine übergibt, um das Erhalten des nächsten Gastbefehls oder einer Gruppe von Gastbefehlen zu emulieren. Eine Ausführung der nativen Befehle 256 kann beinhalten, Daten aus einem Arbeitsspeicher 204 in ein Register zu laden; Daten aus einem Register in einen Arbeitsspeicher zurück zu speichern; oder eine andere Art von arithmetischer oder logischer Operation durchzuführen, wie sie durch die Übersetzungsroutine bestimmt wird.
  • Jede Routine wird beispielsweise in Software realisiert, die im Arbeitsspeicher gespeichert und durch die native Zentraleinheit 202 ausgeführt wird. In anderen Beispielen werden eine oder mehrere Routinen oder Operationen in Firmware, Hardware, Software oder einer beliebigen Kombination hiervon realisiert. Die Register des emulierten Prozessors können unter Verwendung der Register 210 der nativen CPU oder unter Verwendung von Positionen in dem Arbeitsspeicher 204 emuliert werden. Bei Ausführungsformen können sich die Gastbefehle 250, die nativen Befehle 256 und der Emulatorcode 212 in demselben Arbeitsspeicher befinden, oder sie können auf verschiedene Arbeitsspeichereinheiten verteilt sein.
  • Wie hier verwendet, enthält eine Firmware z.B. den Mikrocode, Millicode und/oder Makrocode des Prozessors. Sie beinhaltet zum Beispiel die Befehle auf Hardware-Ebene und/oder Datenstrukturen, die für eine Realisierung von Maschinencode einer höheren Abstraktionsebene verwendet werden. Bei einer Ausführungsform beinhaltet sie zum Beispiel herstellerspezifischen Code, der üblicherweise als Mikrocode, welcher vertrauenswürdige Software enthält, oder als Mikrocode bereitgestellt wird, der für die darunter liegende Hardware spezifisch ist und einen Betriebssystemzugriff auf die Systemhardware steuert.
  • In einem Beispiel ist ein Gastbefehl 250, der erhalten, übersetzt und ausgeführt wird, ein hier beschriebener Befehl. Der einer bestimmten Architektur (z.B. der Power Architecture oder z/Architecture) zugehörige Befehl wird aus dem Arbeitsspeicher abgerufen, übersetzt und als eine Abfolge von nativen Befehlen 256 einer weiteren Architektur (z.B. der z/Architecture, der Power Architecture, der Intel-Architektur usw.) dargestellt. Diese nativen Befehle werden dann ausgeführt.
  • Ein gemäß einer oder mehreren Ausführungsformen verwendeter Befehl ist der Lade-Doppelwortbefehl, der zum Laden von Daten wie z.B. Objektzeigern dient. Eine bestimmte Realisierung des Lade-Doppelwortbefehls in der Power Architecture wird mit Blick auf 3 beschrieben. In einem Beispiel enthält ein Lade-Doppelwortbefehl 300 (ld-Befehl) Betriebscode(opcode)-Felder 302a (z.B. die Bits 0 bis 5), 302b (z.B. das Bit 30), die eine Lade-Operation angeben; ein Ergebnisfeld (RT) 304 (z.B. die Bits 6 bis 10), mit denen ein Register angegeben wird, das ein Ergebnis der Lade-Operation speichert; ein Registerfeld (RA) 306 (z.B. die Bits 11 bis 15), mit dem ein Register vorgegeben wird, das durch die Lade-Operation verwendet werden soll; und ein weiteres Feld (DS) (z.B. die Bits 16 bis 29), das durch die Lade-Operation verwendet wird. In einem Beispiel sind alle Felder 304 bis 308 voneinander getrennt und unabhängig; bei anderen Ausführungsformen, können hingegen mehrere Felder kombiniert werden. Weitere Informationen zur Verwendung der Felder sind im Folgenden zu finden.
  • Beim Ausführen des ld-Befehls wird geprüft, ob sich die Adresse der zu ladenden Daten (z.B. ein Objektzeiger) in dem Zeigerspeicherbereich befindet. Wenn sie sich in dem Zeigerspeicherbereich befindet, wird weiterhin geprüft, ob die zu ladenden Daten auf ein Objekt zeigen, das sich in einem ausgewählten Arbeitsspeicherbereich befindet, der hier als eine ladeüberwachte Region bezeichnet wird. Wenn sich die Adresse der zu ladenden Daten nicht in dem Zeigerspeicherbereich befindet oder wenn die zu ladenden Daten nicht auf ein Objekt zeigen, das sich in dem ausgewählten Arbeitsspeicherbereich befindet, wird ein herkömmlicher Ladevorgang durchgeführt. So wird in einem Beispiel ein herkömmlicher Lade-Doppelwortbefehl ausgeführt.
  • Bei Ausführung des herkömmlichen ld-Befehls: eine effektive Adresse (EA) soll die Summe (RA|0) + (DS||0b00) sein. Das durch die EA adressierte Doppelwort im Speicher wird in RT geladen.
  • Ein Beispiel eines Pseudocodes für den herkömmlichen ld-Befehl lautet wie folgt:
    If RA = 0 then b ← 0
    else b ← (RA)
    EA ← b + EXTS(DS || 0b00)
    RT ← MEM(EA, 8)
    wobei EA eine Adresse des Objektzeigers und MEM(EA, 8) der Objektzeiger ist.
  • Wenn sich jedoch die Adresse der zu ladenden Daten in dem Zeigerspeicherbereich befinden und der Objektzeiger auf ein Objekt zeigt, das sich in dem ausgewählten Arbeitsspeicherbereich befindet, für den eine automatische Speicherbereinigung stattfindet, wird die Verarbeitung unterbrochen, wodurch eine EBB zu einer Aktualisierungsverzweigungsroutine verursacht wird, die eine oder mehrere Aufgaben in Zusammenhang mit der automatischen Speicherbereinigung durchführt, wie z.B. das Aktualisieren des Zeigers, wie hier im Folgenden beschrieben wird.
  • Ein Beispiel eines Pseudocodes für den ld-Befehl gemäß einer oder mehreren Ausführungsformen lautet wie folgt:
    If RA = 0 then b ← 0
    else b ← (RA)
    EA ← b + EXTS(DS ⌣ 0b00)
    loaded_ea ← MEM(EA, 8)
    If –((EA im Zeigerspeicher & loaded_ea im aktivierten Abschnitt der ladeüberwachten Region) & BESCRGE LME = 0b11)
    RT ← loaded_ea
    wobei loaded_ea der Objektzeiger ist; EA eine Adresse des Objektzeigers ist; BESCR für Branch Event Status-Control Register (Verzweigungsereignis-Statuskontrollregister) steht; GE für General Enable (allgemeines Aktivieren) steht; und LME = Load Monitored Enabled (Ladeüberwachung aktiviert).
  • Obwohl das Befehlsformat der hier genannten Beispiele für die Power Architecture gilt, können ähnliche Formate für andere Architekturen verwendet werden.
  • Des Weiteren kann in einem weiteren Beispiel ein ldx-Befehl (Load Doubleword Indexed, Laden eines indexierten Doppelworts) verwendet werden, bei dem die Bits 16 bis 20 anstelle des Felds DS 308 ein weiteres Registerfeld (RB) 308 enthalten und die Bits 21 bis 30 einen Teil des Betriebscodes 302b enthalten. Bei diesem Format ist EA ← b + (RB).
  • Wie weiter oben erläutert, wird der ausgewählte Arbeitsspeicherbereich, für den eine automatische Speicherbereinigung stattfindet, bei einer Ausführungsform hier als die ladeüberwachte Region bezeichnet. Wie in 4 gezeigt, beinhaltet der Arbeitsspeicher 400 eine ladeüberwachte Region 402 sowie eine Mehrzahl von Objekten 404. Eines der Objekte, Objekt B 406, befindet sich in der ladeüberwachten Region 402, was bedeutet, dass sich das Objekt in einem Arbeitsspeicherbereich befindet, für den eine automatische Speicherbereinigung stattfindet. Somit muss der aktuelle Zeiger womöglich aktualisiert werden, falls das Objekt, auf das der Zeiger zeigt, zum Beispiel aufgrund des automatischen Speicherbereinigungsprozesses verschoben wurde.
  • Ein Objektbereich beinhaltet hier des Weiteren die ladeüberwachte Region und den Arbeitsspeicherbereich mit Objekten, für die keine automatische Speicherbereinigung stattfindet.
  • Zusätzlich beinhaltet der Arbeitsspeicher 400 bei einer Ausführungsform einen Zeigerspeicherbereich 410, der eine Mehrzahl von Zeigern enthält.
  • In dieser Figur wird des Weiteren gezeigt, dass ein Anwendungsprogramm 420 einen ld-Befehl 422 ausführt, der versucht, den Zeiger B zu laden, welcher sich in dem Zeigerspeicherbereich befindet. Der Zeiger B zeigt auf ein Objekt 406 in der ladeüberwachten Region, wodurch eine Unterbrechung ausgeführt wird, um die Steuerung an eine (auch als Aktualisierungszeigerroutine bekannte) EBB-Routine 424 zu übergeben. Die Routine 424 modifiziert bei Bedarf den Zeiger B und speichert in einem Beispiel den modifizierten Zeiger in der Position, aus der er erhalten wurde, 426. Danach kehrt die Verarbeitung zu dem Befehl zurück, der erneut ausgeführt wird.
  • Bei einer weiteren Ausführungsform modifiziert die Routine den Zeiger, speichert den modifizierten Zeiger in dem Zielregister des Befehls, und die Verarbeitung fährt nach dem ld-Befehl an der Stelle des Befehls fort, wodurch das Laden des Zeigers emuliert wird. Bei einer oder mehreren Ausführungsformen weiß die Anwendung nichts von der EBB-Verarbeitung und empfängt einfach den Zeiger, wie dies zuvor der Fall war.
  • Wie oben erläutert, wird eine Unterbrechungsverarbeitung ausgeführt, wenn sich die Adresse der zu ladenden Daten (z.B. der Objektzeiger) in einem Zeigerspeicherbereich befindet und der Objektzeiger auf ein Objekt zeigt, das sich in der ladeüberwachten Arbeitsspeicherregion befindet. Der Zeigerspeicherbereich kann auf vielerlei Arten identifiziert werden, zum Beispiel, indem seine Größe und Basisadresse in einem Register oder einer vorgegebenen Position im Arbeitsspeicher vorgegeben werden. Wie in 5A gezeigt, beinhaltet ein PSA-Register (Pointer Storage Area, Zeigerspeicherbereich) 500 zum Beispiel ein Feld 502 mit einer Zeigerbereich-Basisadresse und ein Feld 504 mit einer Größe des Bereichs. In einem Beispiel identifizieren die Bits 0 bis 53 die Startadresse des Zeigerspeicherbereichs. In diesem Beispiel ist die Basisadresse an einer Adressgrenze ausgerichtet, die mit seiner Größe übereinstimmt, um eine Realisierung zu ermöglichen. So ist zum Beispiel ein 256-Kbyte-Zeigerspeicherbereich an einer 256-Kbyte-Grenze und ein 2-Kbyte-Zeigerspeicherbereich an einer 2-Kbyte-Grenze ausgerichtet. Diese Ausrichtung ermöglicht, dass die Zeigeradresse mit ihrer Größe in ein 64-Bit-Register passt, und ist keine zwingende Erfordernis. Unter Verwendung eines größeren Registers oder mehrerer Register ist jede beliebige Ausrichtung möglich.
  • Bei dieser Ausführungsform bestimmen die Bits 61 bis 63 wie folgt die Größe des Zeigerspeicherbereichs:
    Bit 61 bis 63 Größe
    000 256 Kbyte
    001 128 Kbyte
    010 64 Kbyte
    011 32 Kbyte
    100 16 Kbyte
    101 8 Kbyte
    110 4 Kbyte
    111 2 Kbyte
  • Die ladeüberwachte Region kann auch auf andere Art und Weise identifiziert werden. So werden zum Beispiel bei einer Realisierung ihre Größe und Basisadresse in einem Register gespeichert, wie es in 5B dargestellt ist. Wie gezeigt, beinhaltet ein LMRR-Register (Load Monitored Region Register, Register der ladeüberwachten Region) 550 zum Beispiel ein Feld 552 mit einer Basisadresse der ladeüberwachten Region und ein Feld 554 mit einer Größe der Region.
  • In einem Beispiel enthält die Basisadresse der ladeüberwachten Region die höchstwertigen Bits der ladeüberwachten Region. Bei dieser Ausführungsform wird angenommen, dass die ladeüberwachte Region an einer Granularität ihrer Größe ausgerichtet ist. Das Größenfeld ist so codiert, dass jeder Wert einer vorgegebenen Größe entspricht. Wenn zum Beispiel 16 mögliche Größen benötigt werden, hat das Größenfeld 4 Bits. Typische Größen bewegen sich in der Größenordnung von mehreren Dutzend MB (Megabyte) bis hin zu über einem GB (Gigabyte). Die Anzahl der Bits in dem Feld mit der Basisadresse der ladeüberwachten Region kann aus der unterstützten Mindestgröße abgeleitet werden. Wenn zum Beispiel die unterstützte Mindestgröße 16 MB beträgt, hat das Feld mit der Basisadresse der ladeüberwachten Region 40 Bit, da 64 – 40 = 24, und 24 Bit einer Adresse sind ausreichend, um jede 16-MB-Arbeitsspeicherregion zu identifizieren, die an einer 16-MB-Adressgrenze ausgerichtet ist. Wenn das Größenfeld kleinere Größen angibt, werden weniger Bits benötigt, um die Basisadresse anzugeben, und die niedrigstwertigen Bits in dem Feld mit der Basisadresse der ladeüberwachten Region werden auf Null-Werte gesetzt.
  • In anderen Beispielen können die Größe und Basisadresse für die ladeüberwachte Region und/oder den Zeigerspeicherbereich in einer Arbeitsspeicherposition oder in einem Register vorgegeben werden, das für einen weiteren Zweck verwendet wird, usw. Zusätzlich kann der Adressbereich der ladeüberwachten Region und/oder des Zeigerspeicherbereichs durch andere Daten vorgegeben werden.
  • Eine Ausführungsform von Logik, die gemäß Ausführungsformen der vorliegenden Erfindung dem Ausführen des ld-Befehls zugehörig ist, wird mit Blick auf 6 beschrieben. Bei einer Realisierung führt die Hardware eines Prozessors eine Anwendung aus, die den ld-Befehl ausgibt, und die Prozessorhardware decodiert den ld-Befehl, SCHRITT 600. Während der Ausführung des ld-Befehls vergleicht die Prozessorhardware die Adresse der zu ladenden Daten (z.B. den Zeiger) zum Beispiel anhand des PSA-Registers mit dem angegebenen Zeigerspeicherbereich, ABFRAGE 601. Wenn sich die Adresse des Objektzeigers in dem Zeigerspeicherbereich befindet, vergleicht die Prozessorhardware des Weiteren die gelesenen Daten mit dem Register der ladeüberwachten Region (oder einem anderen Register oder einer anderen Arbeitsspeicherposition), das bzw. die den ausgewählten Arbeitsspeicherbereich angibt, für den eine automatische Speicherbereinigung stattfindet. Wenn der gelesene Zeiger auf eine Position innerhalb der ladeüberwachten Region zeigt, ABFRAGE 602, verursacht die Hardware eine Unterbrechung (z.B. eine EBB) für die Zeigeraktualisierungsroutine, SCHRITT 606. Die Zeigeraktualisierungsroutine ermittelt daraufhin die Adresse des Zeigers, indem sie entweder seine Adresse aus den Ladebefehlregistern berechnet oder indem sie sie aus einer vordefinierten Position liest; liest den Zeiger aus dem Zeigerspeicherbereich; modifiziert bei Bedarf den Zeiger (d.h., wenn der Zeiger, auf den sie zeigt, während der automatischen Speicherbereinigung oder durch die Routine verschoben wurde) und führt weitere automatische Speicherbereinigungsaufgaben durch, sofern diese benötigt werden und die Zeit dies zulässt; und speichert den modifizierten Zeiger wieder in der Position, aus der er gelesen wurde, SCHRITT 610. Danach kann die Routine die Steuerung an der Stelle des ld-Befehls wieder an die Anwendung übergeben und den Befehl erneut ausführen, SCHRITT 612.
  • In einem weiteren Beispiel liest die Aktualisierungsroutine das Zielregister des ld-Befehls und speichert den aktualisierten Zeiger in dem Zielregister. Hierdurch wird ein Ladevorgang des Zeigers emuliert, und die Routine kann somit nach dem ld-Befehl die Steuerung an der Stelle des Befehls wieder an die Anwendung übergeben.
  • Wenn sich der Zeiger in ABFRAGE 601 nicht in dem Zeigerspeicherbereich befindet oder nicht auf eine Position innerhalb der ladeüberwachten Region zeigt, ABFRAGE 602, verursacht die Prozessorhardware keine EBB, sondern führt anstelle dessen den ld-Befehl ohne die Unterbrechung aus, SCHRITT 614. Danach fährt die Verarbeitung mit dem nächsten Befehl fort, SCHRITT 616.
  • Wie hier beschrieben, wird eine automatische Speicherbereinigung optimiert, indem Anwendungen, die auf Objekte in einem Arbeitsspeicherbereich zugreifen, für den keine automatische Speicherbereinigung stattfindet, während der automatischen Speicherbereinigung mit der Verarbeitung fortfahren können (ohne angehalten zu werden), und indem Anwendungen, die auf Objekte in einem Arbeitsspeicherbereich zugreifen, für den eine automatische Speicherbereinigung stattfindet, nach einer kurzen, nicht wahrnehmbaren Verzögerung mit der Verarbeitung fortfahren können. Ermöglicht wird dies, indem während des Ladens des Zeigers festgestellt wird, dass sich die Adresse des Objektzeigers in einem Zeigerspeicherbereich befindet und dass sich das Objekt, auf das gezeigt wird, in dem ausgewählten Arbeitsspeicherbereich befindet, für den eine automatische Speicherbereinigung stattfindet, woraufhin eine Unterbrechung an eine Routine ausgegeben wird, die den Zeiger verwaltet. Bei einer vorteilhaften Realisierung steht der Zeiger der Routine zur Verfügung, so dass die Routine die Adresse des Zeigers nicht berechnen muss, wodurch die Anzahl der Befehle, die zum Aktualisieren des Zeigers benötigt werden, verringert und die Datenverarbeitung durch den Computer verbessert wird.
  • Eine Ausführungsform der Logik, die gemäß einer oder mehreren Ausführungsformen einem Vereinfachen einer automatischen Speicherbereinigung zugehörig ist, wird nun mit Blick auf 7 beschrieben. Zunächst erhält eine innerhalb eines Prozessors ausgeführte Routine (z.B. eine Routine auf Anwendungsebene) zum Beispiel über eine Unterbrechung (z.B. eine leichtgewichtige Unterbrechung, an der das Betriebssystem nicht beteiligt ist), eine Verarbeitungssteuerung, SCHRITT 700, die durch die Prozessorhardware ausgegeben wird, SCHRITT 702. Die Verarbeitungssteuerung wird durch die Routine auf Grundlage einer Ausführung eines Ladebefehls (z.B. eines ld- oder ldx-Befehls) und einer Feststellung erhalten, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet und dass der Objektzeiger eine Position innerhalb eines ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet, SCHRITT 704. In einem Beispiel wird die Adresse des Objektzeigers (z.B. die EA) durch den Ladebefehl erhalten und mit Daten verglichen, die sich auf den Zeigerspeicherbereich beziehen, um zu ermitteln, ob sich der Objektzeiger innerhalb des Zeigerspeicherbereichs befindet, SCHRITT 706. Auf Grundlage dessen, dass bei dem Vergleichen festgestellt wird, dass sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet, wird der Objektzeiger mit Daten verglichen, die sich auf den ausgewählten Arbeitsspeicherbereich beziehen, um festzustellen, dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt, SCHRITT 708. Bei einer Ausführungsform wird der Zeigerspeicherbereich zum Beispiel durch ein Register, das eine Basisadresse und eine Größe enthalten kann, oder durch eine Arbeitsspeicherposition angegeben, SCHRITT 710. Des Weiteren wird der ausgewählte Arbeitsspeicherbereich zum Beispiel durch ein Register, das eine Basisadresse und eine Größe enthalten kann, oder durch eine Arbeitsspeicherposition angegeben, SCHRITT 712.
  • Auf Grundlage des Erhaltens der Verarbeitungssteuerung erhält die Routine eine Adresse des Objektzeigers, SCHRITT 720. In einem Beispiel wird die Adresse aus der Ausführung des ld-Befehls ermittelt, SCHRITT 722, oder aus der vordefinierten Position gelesen, SCHRITT 724. Die Routine verwendet die Adresse, um den Objektzeiger aus dem Zeigerspeicherbereich zu erhalten (z.B. zu lesen), der z.B. in einem Register oder einer Arbeitsspeicherposition angegeben wird, SCHRITT 726.
  • Danach ermittelt die Routine, ob der Objektzeiger modifiziert werden soll, ABFRAGE 730. So ermittelt die Routine zum Beispiel, ob das Objekt, auf das der Objektzeiger zeigt, verschoben wurde. Wenn das Objekt verschoben wurde, wird der Objektzeiger modifiziert, SCHRITT 735. Danach wird der modifizierte Objektzeiger in einer Position, aus der er gelesen wurde (z.B. in einer Position innerhalb des Zeigerspeicherbereichs) gespeichert, SCHRITT 740, und die Verarbeitung fährt mit dem ld-Befehl fort, der erneut ausgeführt wird; oder er kann in einer Position gespeichert werden, die durch den Ladebefehl vorgegeben wird, z.B. in dem Zielregister, das durch den Ladebefehl vorgegeben wird, und die Verarbeitung fährt nach dem ld-Befehl an der Stelle des Befehls fort.
  • Wenn in ABFRAGE 730 der Objektzeiger nicht modifiziert wird, wird er zum Beispiel in dem Zielregister des Ladebefehls gespeichert, und die Routine übergibt die Steuerung nach dem ld-Befehl an der Stelle des Befehls wieder an die Anwendung, SCHRITT 732.
  • Vorteilhafterweise wird bei einer oder mehreren Ausführungsformen die automatische Speicherbereinigung vereinfacht, indem Anwendungen, die nicht auf Objekte in dem ausgewählten Arbeitsspeicherbereich zugreifen, während der automatischen Speicherbereinigung mit der Verarbeitung fortfahren können (d.h. nicht anhalten müssen), SCHRITT 750. Zudem werden die Anwendungen, die auf Objekte in dem ausgewählten Arbeitsspeicherbereich zugreifen, nur kurzfristig verzögert.
  • Wie hier beschrieben, stellen eine oder mehrere Ausführungsformen die Adresse des Objektzeigers der Routine direkt bereit, ohne dass die Routine die Adresse des Objektzeigers berechnen muss. Eine oder mehrere Ausführungsformen eliminieren das Decodieren des ld-Befehls durch die Routine, um die Quell- und Zieladressen zu ermitteln, das Lesen des Inhalts der Universal-Quellregister und das Berechnen der effektiven Adresse des Zeigers, wobei auch hier die Routine stattdessen die Adresse aus einer vordefinierten Position liest und diese nicht berechnen muss. Eine oder mehrere Ausführungsformen ermöglichen vorteilhafterweise die Verwendung von Anwendungen, die eine automatische Speicherbereinigung benötigen, in zeitkritischen Umgebungen wie z.B. Hochfrequenzhandel, mechanische Echtzeitsteuerung, zeitkritische Spiele usw. Eine oder mehrere Ausführungsformen erhöhen nicht den Speicherbedarf der Anwendung, da keine zusätzlichen Befehle in die Anwendung eingefügt werden müssen, und erfordern keinerlei Modifizierungen des Betriebssystems. Des Weiteren müssen die Anwendungen nicht modifiziert werden.
  • Gemäß einer oder mehreren Ausführungsformen kann bei jedem Zugriff auf einen Objektzeiger die Verarbeitung an eine automatische Echtzeit-Speicherbereinigungsroutine (z.B. eine Zeigeraktualisierungsroutine) umgeleitet werden, wenn sich der Zeiger in einem Zeigerspeicherbereich befindet und auf ein Objekt in einer Arbeitsspeicherregion zeigt, in der eine automatische Speicherbereinigung stattfindet.
  • Wie hier beschrieben, wird die automatische Speicherbereinigung vereinfacht. Bei einer Ausführungsform wird eine Verarbeitungssteuerung durch eine Routine erhalten, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird, wobei das Erhalten der Verarbeitungssteuerung auf Grundlage einer Ausführung eines Ladebefehls und einer Feststellung erfolgt, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet und dass der Objektzeiger eine Position innerhalb eines ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet. Auf Grundlage des Erhaltens der Verarbeitungssteuerung durch die Routine erhält die Routine aus dem Zeigerspeicherbereich den Objektzeiger, wobei der Objektzeiger eine Position eines Objekts angibt, auf das der Objektzeiger zeigt. Die Routine ermittelt, ob der Objektzeiger modifiziert werden soll, und auf Grundlage des Feststellens, dass der Objektzeiger modifiziert werden soll, wird der Objektzeiger modifiziert, um einen modifizieren Objektzeiger bereitzustellen. Auf Grundlage des Modifizierens des Objektzeigers wird der modifizierte Objektzeiger in einer ausgewählten Position gespeichert, wie z.B. einer Position innerhalb des Zeigerspeicherbereichs oder einer Position, die durch den Ladebefehl vorgegeben wird.
  • Vorteilhafterweise ermöglicht dies Anwendungen, die Objekte in einem Arbeitsspeicherbereich verwenden, für den keine automatische Speicherbereinigung stattfindet, die Verarbeitung während der automatischen Speicherbereinigung ohne Unterbrechung fortzusetzen, und es ermöglicht einer Anwendung, die ein Objekt in einem Arbeitsspeicherbereich verwendet, für den eine automatische Speicherbereinigung stattfindet, die Verarbeitung nach einer sehr kurzen, nicht wahrnehmbaren Verzögerung fortzusetzen, und es erfordert keine Verwendung von Spezialbefehlen oder Programmmodifizierungen, wodurch die Leistung verbessert wird.
  • Bei einer weiteren Ausführungsform ist der ausgewählte Arbeitsspeicherbereich, für den eine automatische Speicherbereinigung stattfindet, Teil eines Objektbereichs, der zudem ein oder mehrere andere Objekte enthält, für die keine automatische Speicherbereinigung stattfindet, und eine oder mehrere Anwendungen, die auf den Objektbereich zugreifen, für den keine automatische Speicherbereinigung stattfindet, fahren während der automatischen Speicherbereinigung vorteilhafterweise mit der Verarbeitung fort. So fahren sie zum Beispiel ohne eine Unterbrechung mit der Ausführung fort. Des Weiteren nimmt bei einer Ausführungsform die Anwendung, die auf den Objektzeiger zugegriffen hat, der ein Objekt in dem ausgewählten Arbeitsspeicherbereich angibt, für den eine automatische Speicherbereinigung stattfindet, die Verarbeitung nach einer sehr kurzen Verzögerung sofort wieder auf, während die Routine (z.B. eine Routine auf Anwendungsebene) den Zeiger verarbeitet. Auf diese Weise können Anwendungen für eine zeitkritische Verarbeitung verwendet werden, da keine Anwendung für einen Zeitraum verzögert wird, der bedeutsam genug ist, um wahrnehmbar zu sein.
  • Zusätzlich können eine oder mehrere Ausführungsformen für andere Zwecke als für eine automatische Speicherbereinigung verwendet werden. Da mit einer oder mehreren hier beschriebenen Ausführungsformen erkannt werden kann, wenn ein Zeiger auf einen vorgegebenen Speicheradressbereich geladen wird, können sie zum Beispiel dazu verwendet werden, eine Vorabwarnung über einen bevorstehenden Zugriff auf einen beschränkten Arbeitsspeicherbereich bereitzustellen. In diesem Fall wird eine Arbeitsspeicherregion als die beschränkte Arbeitsspeicherregion initialisiert, und der Zeigerspeicherbereich wird so gesetzt, dass er die Position der Arbeitsspeicherzeiger angibt. Wenn daraufhin ein Zeiger in dem Zeigerspeicherbereich gelesen wird, der auf einen beschränkten Bereich zeigt, findet eine EBB statt. Die EBB-Routine kann dann entweder den Zugriff vollständig verhindern, einen Vorab-Warnhinweis an eine Sicherheitsüberwachungseinheit bereitstellen, die angibt, dass eine Zugriff auf einen beschränkten Arbeitsspeicherbereich bevorsteht, oder eine anderweitige ausgewählte Aktion durchführen. Andere damit in Zusammenhang stehende Anwendungen sind in Situationen möglich, in denen ein Warnhinweis zu einem erwarteten Zugriff gewünscht wird, der in Kürze auf einen vorgegebenen Arbeitsspeicherbereich erfolgen wird.
  • Eine Ausführungsform von Logik, bei der auf Grundlage einer vorgegebenen Bedingung eine Routine eine Aktion durchführt, wird mit Blick auf 8 beschrieben. In einem Beispiel wird ein Ladebefehl decodiert, SCHRITT 800. (Bei einer weiteren Ausführungsform kann dies eine weitere Befehlsart sein.) Bei dem Ladebefehl kann es sich um einen von verschiedenen Ladebefehlen handeln, wie beispielsweise den ld-Befehl, den ldx-Befehl oder einen weiteren Ladebefehl. Der Ladebefehl wird decodiert, und auf Grundlage des Decodierens wird der Objektzeiger ermittelt. Es wird ermittelt, ob der Objektzeiger ein Objekt in einem vorgegebenen Arbeitsspeicherbereich angibt, ABFRAGE 802. Dieser Arbeitsspeicherbereich ist zum Beispiel ein vorgegebener Speicheradressbereich, für den aus dem einen oder anderen Grund eine Beschränkung gelten soll. Wenn der Zeiger nicht auf ein Objekt in dem vorgegebenen Arbeitsspeicherbereich zeigt, wird der Ladebefehl (oder ein anderer Befehl) wie üblich ausgeführt, SCHRITT 804. Danach fährt die Verarbeitung mit dem nächsten Befehl fort, SCHRITT 806.
  • Wenn in ABFRAGE 802 der Zeiger jedoch auf ein Objekt in einem vorgegebenen Arbeitsspeicherbereich zeigt, wird die Steuerung durch eine Routine (z.B. eine Routine auf Anwendungsebene) erhalten, SCHRITT 810. Die Prozessorhardware führt zum Beispiel eine Unterbrechung für die Routine aus (z.B. eine leichtgewichtige Unterbrechung, an der das Betriebssystem nicht beteiligt ist). Die Routine kann dann eine oder mehrere Aktionen durchführen, SCHRITT 812. So stellt die Routine bei einer Ausführungsform zum Beispiel einen Warnhinweis bereit, verhindert wahlweise den Zugriff auf den vorgegebenen Arbeitsspeicherbereich und fährt dann mit der Verarbeitung des nächsten Befehls fort, SCHRITT 814. In einem weiteren Beispiel erhält die Routine die Zeigeradresse (z.B. aus einer vordefinierten Position oder indem sie sie aus dem Befehl berechnet), liest den Zeiger, modifiziert den Zeiger, speichert den modifizierten Zeiger wieder in der Position, aus der er gelesen wurde, übergibt die Steuerung wieder an den Befehl und führt den Befehl erneut aus, so dass nicht auf den vorgegebenen Arbeitsspeicherbereich zugegriffen wird, SCHRITT 816. Darüber hinaus bestehen andere Möglichkeiten.
  • Sofern dies weder implizit durch Verwendung noch explizit anderweitig vermerkt ist, werden im vorliegenden Kontext die Begriffe Speicher, Zentralspeicher, Hauptspeicher, Arbeitsspeicher und Hauptarbeitsspeicher austauschbar verwendet.
  • Eine oder mehrere Ausführungsformen können sich auf eine Cloud-Datenverarbeitung beziehen.
  • Obwohl diese Offenbarung eine ausführliche Beschreibung der Cloud-Datenverarbeitung beinhaltet, sollte vorab klar sein, dass die Realisierung der hier dargelegten Lehren nicht auf eine Cloud-Datenverarbeitungsumgebung beschränkt ist. Vielmehr können Ausführungsformen der vorliegenden Erfindung in Verbindung mit jeder anderen Art von Datenverarbeitungsumgebung nach dem derzeitigen oder künftigen Stand der Technik realisiert werden.
  • Eine Cloud-Datenverarbeitung ist ein Modell einer Dienstbereitstellung, um einen komfortablen, bedarfsgesteuerten Netzwerkzugriff auf einen gemeinsam genutzten Vorrat von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste) zu ermöglichen, die mit möglichst geringem Verwaltungsaufwand und möglichst wenig Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann z.B. mindestens fünf Merkmale, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle beinhalten.
  • Die Merkmale lauten wie folgt:
    Bedarfsgesteuerte Selbstbedienung: Ein Cloud-Verbraucher kann sich einseitig und automatisch nach Bedarf Datenverarbeitungsfähigkeiten wie z.B. Serverzeit und Netzwerkspeicher bereitstellen, ohne dass hierfür eine menschliche Interaktion mit dem Anbieter des Dienstes notwendig ist.
  • Breiter Netzwerkzugriff: Fähigkeiten werden über ein Netzwerk zur Verfügung gestellt und über Standardmechanismen zugeordnet, die eine Verwendung durch verschiedenartige Thin- oder Thick-Client-Plattformen ermöglichen (z.B. Mobiltelefone, Laptops und PDAs).
  • Ressourcenbündelung: Die Datenverarbeitungsressourcen des Anbieters sind gebündelt, um unter Verwendung eines Multi-Tenant-Modells mehreren Verbrauchern bereitzustehen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen bzw. neu zugewiesen werden. Standortunabhängigkeit ist insofern gegeben, als der Verbraucher im Allgemeinen den genauen Standort der bereitgestellten Ressourcen weder kontrolliert noch kennt, jedoch unter Umständen in der Lage ist, auf einer höheren Abstraktionsebene (z.B. Land, Bundesland oder Rechenzentrum) einen Standort festzulegen.
  • Flexible Anpassungsfähigkeit: Fähigkeiten lassen sich schnell und elastisch (in einigen Fällen automatisch) bereitstellen, um eine rasche Skalierung nach oben zu ermöglichen, sowie – für eine rasche Skalierung nach unten – schnell wieder freigegeben zu werden. Für den Verbraucher scheinen die zur Bereitstellung verfügbaren Fähigkeiten häufig unbegrenzt zu sein und können jederzeit in jeder beliebigen Menge erworben werden.
  • Dienstmessung: Cloud-Systeme kontrollieren und optimieren die Ressourcennutzung automatisch, indem sie in einer bestimmten, der Art des Dienstes angemessenen Abstraktionsschicht eine Messfunktion nutzen (z.B. Speicherung, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, kontrolliert und protokolliert werden, wodurch sowohl für den Anbieter als auch für den Verbraucher des genutzten Dienstes Transparenz bereitgestellt wird.
  • Die Dienstmodelle lauten wie folgt:
    Software as a Service (SaaS): Die dem Verbraucher bereitgestellte Fähigkeit besteht darin, die in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Der Zugriff auf die Anwendungen kann über eine Thin-Client-Schnittstelle wie z.B. einen Web-Browser von verschiedenen Client-Einheiten aus erfolgen (z.B. eine eMail-Nachricht auf Grundlage des Webs). Mit Ausnahme beschränkter benutzerspezifischer Einstellungen der Anwendungskonfiguration wird die darunterliegende Cloud-Infrastruktur wie Netzwerk, Server, Betriebssysteme, Speicher oder auch einzelne Anwendungsfunktionen vom Verbraucher weder verwaltet noch kontrolliert.
  • Platform as a Service (PaaS): Die dem Verbraucher bereitgestellte Fähigkeit besteht darin, vom Benutzer erzeugte oder erworbene Anwendungen, die anhand von vom Anbieter bereitgestellten Programmiersprachen und Werkzeugen erstellt wurden, in der Cloud-Infrastruktur bereitzustellen. Die darunterliegende Infrastruktur wie Netzwerke, Server, Betriebssysteme oder Speicher wird vom Verbraucher weder verwaltet noch kontrolliert, er hat jedoch die Kontrolle über die bereitgestellten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung für die Anwendungen.
  • Infrastructure as a Service (IaaS): Die dem Verbraucher bereitgestellte Fähigkeit besteht darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Verbraucher in der Lage ist, frei wählbare Software wie z.B. Betriebssysteme und Anwendungen bereitzustellen und auszuführen. Die darunterliegende Cloud-Infrastruktur wird vom Verbraucher weder verwaltet noch kontrolliert, er hat jedoch die Kontrolle über Systeme und Einheiten (z.B. Betriebssysteme, Speicher, bereitgestellte Anwendungen usw.) und möglicherweise eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Die Bereitstellungsmodelle lauten wie folgt:
    Private Cloud: Die Cloud-Infrastruktur wird für lediglich eine Organisation betrieben. Sie kann von der Organisation selbst oder von einem Dritten verwaltet werden und sich an Ort und Stelle oder an einem anderen Ort befinden.
  • Gemeinschafts-Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezifische Gemeinschaft mit gemeinsamen Anliegen (z.B. Aufgabe, Sicherheitsanforderungen, Richtlinie und Einhaltung von Gesetzen und Richtlinien). Sie kann von den Organisationen selbst oder von einem Dritten verwaltet werden und sich an Ort und Stelle oder an einem anderen Ort befinden.
  • Öffentliche Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Branchengruppe bereitgestellt und ist Eigentum einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid-Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren (privaten, Gemeinschafts- oder öffentlichen) Clouds, die eigenständige Einheiten bleiben, aber durch eine standardisierte oder herstellerspezifische Technologie miteinander verbunden sind, die eine Portierbarkeit von Daten und Anwendungen ermöglicht (z.B. das Cloud Bursting für den Lastausgleich zwischen Clouds).
  • Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert, wobei der Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantischer Kompatibilität liegt. Im Mittelpunkt einer Cloud-Datenverarbeitung steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten aufweist.
  • Mit Blick auf 9 wird eine schematische Darstellung eines Beispiels für einen Cloud-Datenverarbeitungsknoten gezeigt. Ein Cloud-Datenverarbeitungsknoten 10 ist lediglich ein Beispiel für einen geeigneten Cloud-Datenverarbeitungsknoten und nicht als eine wie auch immer geartete Beschränkung von Verwendungsumfang oder Funktionalität von Ausführungsformen der hier beschriebenen Erfindung gedacht.
  • Unabhängig davon kann der Cloud-Datenverarbeitungsknoten 10 mit jeder hier dargelegten Funktionalität realisiert sein und/oder diese durchführen.
  • In dem Cloud-Datenverarbeitungsknoten 10 gibt es ein Computersystem/einen Server 12, das bzw. der mit zahlreichen anderen Universal- oder Spezialsystemumgebungen oder -konfigurationen betrieben werden kann. Beispiele bekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die für eine Verwendung mit einem Computersystem/Server 12 geeignet sein könnten, sind, ohne darauf beschränkt zu sein, Personal-Computersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Taschen- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Mini-Computersysteme, Mainframe-Computersysteme sowie verteilte Cloud-Datenverarbeitungsumgebungen, die irgendeine(s) der obigen Systeme oder Einheiten beinhalten, und dergleichen.
  • Das Computersystem/der Server 12 lässt sich im allgemeinen Zusammenhang von Befehlen beschreiben, die durch ein Computersystem ausführbar sind, wie z.B. Programmmodule, die von einem Computersystem ausgeführt werden. Allgemein können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. beinhalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Datenverarbeitungsumgebungen eingesetzt werden, wo Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk miteinander verbunden sind. In einer verteilten Cloud-Datenverarbeitungsumgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Computersystem-Speichermedien wie beispielsweise Arbeitsspeichereinheiten befinden.
  • 9 zeigt das Computersystem/den Server 12 in dem Cloud-Datenverarbeitungsknoten 10 als eine Universal-Datenverarbeitungseinheit. Die Komponenten des Computersystems/Servers 12 können eine/n oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemarbeitsspeicher 28 und einen Bus 18 beinhalten, der verschiedene Systemkomponenten wie z.B. den Systemarbeitsspeicher 28 mit dem Prozessor 16 verbindet, ohne jedoch darauf beschränkt zu sein.
  • Der Bus 18 steht für mindestens eine von mehreren Arten von Busstrukturen, z.B. ein Speicherbus oder eine Speichersteuereinheit, ein Peripheriebus, ein Accelerated Graphics Port (AGP) und ein Prozessor oder lokaler Bus, wobei eine beliebige aus einer Vielfalt von Busarchitekturen verwendet werden kann. Beispielhaft und nicht als Beschränkung zu verstehen, beinhalten derartige Architekturen den ISA-Bus (Industry Standard Architecture), den MCA-Bus (Micro Channel Architecture), den EISA-Bus (Enhanced ISA), den lokalen VESA-Bus (Video Electronics Standards Association) und den PCI-Bus (Peripheral Component Interconnect).
  • Das Computersystem/der Server 12 beinhaltet üblicherweise eine Vielfalt von Medien, die von einem Computersystem gelesen werden können. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 12 zugreifen kann, und zu ihnen zählen sowohl flüchtige als auch nicht flüchtige, entfernbare und nicht entfernbare Medien.
  • Der Systemarbeitsspeicher 28 kann ein von einem Computersystem lesbares Medium in Form eines flüchtigen Arbeitsspeichers wie z.B. eines RAM 30 und/oder eines Caches 32 beinhalten. Das Computersystem/der Server 12 kann des Weiteren andere entfernbare/nicht entfernbare, flüchtige/nicht flüchtige Computersystem-Speichermedien beinhalten. Lediglich als Beispiel dienend, kann ein Speichersystem 34 zum Lesen von und Schreiben auf ein nicht entfernbares, nicht flüchtiges magnetisches Medium (das nicht abgebildet ist und das üblicherweise als ein Festplattenlaufwerk bezeichnet wird) bereitgestellt werden. Obwohl hier nicht abgebildet, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine entfernbare, nicht flüchtige Magnetplatte (z.B. eine Diskette) sowie ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine entfernbare, nicht flüchtige optische Platte wie z.B. einen CD-ROM, einen DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. In diesen Fällen kann jedes Laufwerk über eine oder mehrere Datenmedienschnittstellen mit dem Bus 18 verbunden sein. Wie weiter unten ausführlicher dargestellt und beschrieben, kann der Arbeitsspeicher 28 mindestens ein Programmprodukt mit einem Satz von (z.B. mindestens einem) Programmmodulen beinhalten, wobei diese so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung durchführen.
  • Ein Programm/Dienstprogramm 40 mit einem Satz von (mindestens einem) Programmmodulen 42 kann beispielsweise und ohne als Beschränkung verstanden zu werden in dem Arbeitsspeicher 28 gespeichert sein, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Jedes Betriebssystem, das eine oder die mehreren Anwendungsprogramme, die anderen Programmmodule und die Programmdaten oder eine Kombination hiervon können jeweils eine Realisierung einer Netzwerkumgebung beinhalten. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Verfahrensweisen von Ausführungsformen der hier beschriebenen Erfindung aus.
  • Das Computersystem/der Server 12 kann zudem mit einer oder mehreren externen Einheiten 14 Daten austauschen, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw.; mit einer oder mehreren Einheiten, die einem Benutzer gestatten, mit dem Computersystem/Server 12 zu interagieren; und/oder mit beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 12 ermöglichen, mit einer oder mehreren anderen Datenübertragungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 22 erfolgen. Des Weiteren kann das Computersystem/der Server 12 über einen Netzwerkadapter 20 mit einem oder mehreren Netzwerken Daten austauschen, z.B. mit einem lokalen Netzwerk (Local Area Network, LAN), einem Weitverkehrsnetzwerk (Wide Area Network, WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet). Wie dargestellt, tauscht der Netzwerkadapter 20 über den Bus 18 Daten mit den anderen Komponenten des Computersystems/Servers 12 aus. Dabei sollte klar sein, dass – obwohl sie hier nicht abgebildet sind – auch andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten. Beispiele hierfür sind, ohne darauf beschränkt zu sein, Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerksstapel, RAID-Systeme, Bandlaufwerke und Datenarchivierungsspeichersysteme usw.
  • Mit Blick auf 10 ist eine veranschaulichende Cloud-Datenverarbeitungsumgebung 50 dargestellt. Wie gezeigt, weist die Cloud-Datenverarbeitungsumgebung 50 einen oder mehrere Cloud-Datenverarbeitungsknoten 10 auf, mit denen lokale Datenverarbeitungseinheiten wie zum Beispiel ein persönlicher digitaler Assistent (Personal Digital Assistant, PDA) oder ein Mobiltelefon 54A, ein Desktop Computer 54, ein Laptop Computer 54C und/oder ein Automobil-Computersystem 54N Daten austauschen können. Die Knoten 10 können untereinander Daten austauschen. Sie können in einem oder mehreren Netzwerken, z.B. in privaten, Gemeinschafts-, öffentlichen oder Hybrid-Clouds, wie sie hier weiter oben beschrieben sind, oder in einer Kombination hiervon, physisch oder virtuell zusammengefasst sein (nicht abgebildet). Auf diese Weise kann die Cloud-Datenverarbeitungsumgebung 50 Infrastruktur, Plattformen und/oder Software als Dienste anbieten, für die ein Cloud-Verbraucher keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Dabei sollte klar sein, dass die in 10 gezeigten Arten von Datenverarbeitungseinheiten 54A bis N lediglich zur Veranschaulichung gedacht sind und dass die Datenverarbeitungsknoten 10 und die Cloud-Datenverarbeitungsumgebung 50 mit jeder Art von computergestützter Einheit über jede Art von Netzwerk und/oder netzwerkadressierbarer Verbindung (z.B. unter Verwendung eines Webbrowsers) Daten austauschen können.
  • Mit Blick auf 11 wird ein Satz von funktionsbezogenen Abstraktionsschichten gezeigt, der von der Cloud-Datenverarbeitungsumgebung 50 (10) bereitgestellt wird. Dabei sollte von Anfang an klar sein, dass die in 11 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie abgebildet, werden die folgenden Schichten und zugehörigen Funktionen bereitgestellt:
    Eine Hardware- und Softwareschicht 60 enthält Hardware- und Softwarekomponenten. Zu Beispielen von Hardwarekomponenten zählen Großrechner 61; Server 62 auf Grundlage der RISC-Architektur (Reduced Instruction Set Computer); Server 63; Blade-Server 64; Speichereinheiten 65; Netzwerk und Netzwerkkomponenten 66. Bei manchen Ausführungsformen beinhalten Softwarekomponenten Software für Netzwerk-Anwendungsserver 67 und Datenbanksoftware 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, welche die folgenden Beispiele für virtuelle Einheiten zur Verfügung stellen kann: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, die virtuelle private Netzwerke aufweisen; virtuelle Anwendungen und Betriebssysteme 74; sowie virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die im Folgenden beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellungsfunktion 81 stellt eine dynamische Beschaffung von Datenverarbeitungs- und anderen Ressourcen bereit, mit denen Aufgaben innerhalb der Cloud-Datenverarbeitungsumgebung durchgeführt werden. Messungs- und Preisermittlungsfunktionen 82 stellen eine Kostenerfassung bei der Nutzung von Ressourcen innerhalb der Cloud-Datenverarbeitungsumgebung sowie eine Fakturierung bzw. Abrechnung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware aufweisen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Verbraucher und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Eine Benutzerportalfunktion 83 stellt Verbrauchern und Systemadministratoren einen Zugriff auf die Cloud-Datenverarbeitungsumgebung bereit. Eine Dienstgüteverwaltungsfunktion 84 stellt eine Zuordnung und Verwaltung von Cloud-Datenverarbeitungsressourcen bereit, so dass erforderliche Dienstgütestufen erreicht werden. Eine Planungs- und Ausführungsfunktion 85 von Dienstgütevereinbarungen (Service Level Agreement, SLA) stellt eine Vorabfestlegung und Beschaffung von Cloud-Datenverarbeitungsressourcen bereit, für die gemäß einer SLA eine künftige Anforderung erwartet wird.
  • Eine Auslastungsschicht 90 stellt Beispiele einer Funktionalität bereit, für welche die Cloud-Datenverarbeitungsumgebung genutzt werden kann. Beispiele für Auslastungen und Funktionen, die von dieser Schicht bereitgestellt werden können, lauten: Zuordnung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von virtuellen Schulungen 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und eine automatische Speicherbereinigungsverarbeitung einer oder mehrerer Ausführungsformen der vorliegenden Erfindung 96.
  • Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Darstellungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Dabei dürfte klar sein, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch computerlesbare Programmbefehle realisiert werden kann/können.
  • Diese computerlesbaren Programmbefehle können einem Prozessor eines Universalcomputers, Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Handlungen realisiert werden können, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben werden. Diese computerlesbaren Programmbefehle können auch auf einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass das computerlesbare Speichermedium mit darauf gespeicherten Befehlen einen Herstellungsartikel aufweist, der Befehle enthält, welche Aspekte der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktion/Handlung realisieren.
  • Die computerlesbaren Programmbefehle können zudem in einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um zu veranlassen, dass eine Reihe von Funktionsschritten auf dem Computer, der anderweitigen programmierbaren Datenvorrichtung oder der anderen Einheit ausgeführt wird, so dass die Befehle, die auf dem Computer, der anderweitigen Datenverarbeitungsvorrichtung oder der anderen Einheit ausgeführt werden, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Handlungen realisieren.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren stellen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung bereit. Somit kann jeder Block der Ablaufpläne oder Blockschaubilder ein Modul, Segment oder einen Teil von Befehlen darstellen, das/der einen oder mehrere ausführbare Befehle aufweist, mit denen sich die eine oder mehreren angegebenen logischen Funktionen realisieren lassen. Bei manchen alternativen Ausführungsformen können die in dem Block erwähnten Funktionen in einer anderen Reihenfolge als der in den Figuren genannten auftreten. So können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig stattfinden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der betreffenden Funktionalität ist. Zu erwähnen ist ebenfalls, dass jeder Block der Blockschaubilder und/oder der Ablaufplan-Darstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder Ablaufplan-Darstellungen durch Spezialsysteme auf Hardwaregrundlage, welche die angegebenen Funktionen oder Handlungen oder Kombinationen hiervon ausführen, oder durch Kombinationen von Spezial-Hardware- und Computerbefehlen realisiert bzw. durchgeführt werden kann/können.
  • Zusätzlich zu den obigen Ausführungen können ein oder mehrere Aspekte von einem Dienstanbieter, der eine Verwaltung von Kundenumgebungen anbietet, bereitgestellt, angeboten, implementiert, verwaltet, gewartet werden usw. So kann der Dienstanbieter zum Beispiel Computercode und/oder eine Computerinfrastruktur erzeugen, vorhalten, unterstützen usw., die einen oder mehrere Aspekte für einen oder mehrere Kunden durchführt. Der Dienstanbieter kann wiederum, beispielsweise im Rahmen eines Abonnement- und/oder Gebührenvertrags, eine Zahlung von dem Kunden erhalten. Zusätzlich oder alternativ hierzu kann der Dienstanbieter eine Zahlung aus dem Verkauf von Werbeinhalt an einen oder mehrere Dritte erhalten.
  • Gemäß einem Aspekt kann eine Anwendung implementiert werden, um eine oder mehrere Ausführungsformen durchzuführen. So kann in einem Beispiel das Implementieren einer Anwendung ein Bereitstellen von Computerinfrastruktur aufweisen, die imstande ist, eine oder mehrere Ausführungsformen durchzuführen.
  • Gemäß einem weiteren Aspekt kann eine Datenverarbeitungsinfrastruktur implementiert werden, welche ein Integrieren eines computerlesbaren Codes in ein Datenverarbeitungssystem aufweist, bei dem der Code in Verbindung mit dem Datenverarbeitungssystem in der Lage ist, eine oder mehrere Ausführungsformen durchzuführen.
  • Gemäß noch einem weiteren Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungsinfrastruktur bereitgestellt werden, der ein Integrieren von computerlesbarem Code in ein Computersystem aufweist. Das Computersystem weist ein computerlesbares Medium auf, wobei das Computermedium eine oder mehrere Ausführungsformen aufweist. In Verbindung mit dem Computersystem ist der Code in der Lage, eine oder mehrere Ausführungsformen durchzuführen.
  • Obwohl oben verschiedene Ausführungsformen beschrieben sind, handelt es sich dabei lediglich um Beispiele. So können zum Beispiel Datenverarbeitungsumgebungen anderer Architekturen verwendet werden, um eine oder mehrere Ausführungsformen zu beinhalten und zu verwenden. Des Weiteren können andere Befehle, Befehlsformate, Befehlsfelder und/oder Befehlswerte verwendet werden. Es sind viele Abwandlungen möglich.
  • Des Weiteren können andere Arten von Datenverarbeitungsumgebungen Nutzen ziehen und verwendet werden. So kann ein zum Speichern und/oder Ausführen von Programmcode geeignetes Datenverarbeitungssystem verwendet werden, das mindestens zwei Prozessoren enthält, die direkt oder indirekt über einen Systembus mit Arbeitsspeicherelementen verbunden sind. Die Arbeitsspeicherelemente beinhalten z.B. einen lokalen Arbeitsspeicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und einen Cache-Arbeitsspeicher, der eine vorübergehende Speicherung von mindestens einem Teil des Programmcodes bereitstellt, um die Häufigkeit zu verringern, mit welcher Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe/Ausgabe- oder E/A-Einheiten (einschließlich, ohne auf diese beschränkt zu sein, Tastaturen, Anzeigen, Zeigeeinheiten, Einheiten mit Direktzugriffsspeicher (Direct Access Storage Devices, DASDs), Band, CDs, DVDs, USB-Sticks und andere Arbeitsspeichermedien usw.) können entweder direkt oder über dazwischen geschaltete E/A-Steuereinheiten mit dem System verbunden sein. Außerdem können Netzwerkadapter mit dem System verbunden sein, um die Verbindung des Datenverarbeitungssystems mit anderen Datenverarbeitungssystemen oder mit entfernt angeordneten Druckern oder Speichereinheiten über dazwischen geschaltete private oder öffentliche Netzwerke zu ermöglichen. Modems, Kabelmodems und Ethernet-Karten sind nur einige der verfügbaren Arten von Netzwerkadaptern.
  • Die hier verwendete Begrifflichkeit dient lediglich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Beschränkung gedacht. Im hier verwendeten Sinne sollen die Singularformen „ein/e/r" und "der/die/das" auch die Pluralformen beinhalten, sofern der Kontext dies nicht eindeutig anderweitig vorgibt. Ebenso offensichtlich dürfte sein, dass die Verben „weist auf“ und/oder „aufweisend“ in dieser Patentschrift das Vorhandensein der genannten Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten angeben, ohne jedoch das Vorhandensein oder die Hinzufügung ein oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente, Komponente und/oder Gruppen derselben auszuschließen.
  • Die betreffenden Strukturen, Materialien, Handlungen und Äquivalente aller Mittel oder Schritte zusätzlich zu den Funktionselementen (sofern vorhanden) in den nachstehenden Ansprüchen sollen sämtliche Strukturen, Materialien oder Handlungen beinhalten, mit denen die Funktion in Verbindung mit anderen beanspruchten Elementen durchgeführt werden kann, wie sie hier ausdrücklich beansprucht sind. Die Beschreibung einer oder mehrerer Ausführungsformen wurde zum Zwecke der Veranschaulichung und Erläuterung vorgelegt und ist mit Bezug auf die offenbarte Form nicht als vollständig oder beschränkend zu verstehen. Der Fachmann weiß, dass zahlreiche Änderungen und Abwandlungen möglich sind. Die Ausführungsform wurde ausgewählt und beschrieben, um die verschiedenen Aspekte und die praktische Anwendung bestmöglich zu erläutern und um anderen Fachleuten die Möglichkeit zu geben, verschiedene Ausführungsformen mit verschiedenen Abwandlungen zu verstehen, wie sie für die jeweilige, in Erwägung gezogene Verwendung geeignet sind.

Claims (20)

  1. Computerprogrammprodukt zum Ermöglichen einer automatischen Speicherbereinigung innerhalb einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Befehle zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren durchzuführen, aufweisend: Erhalten einer Verarbeitungssteuerung durch eine Routine, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird, wobei das Erhalten der Verarbeitungssteuerung auf Grundlage einer Ausführung eines Ladebefehls und einer Ermittlung erfolgt, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet und dass der Objektzeiger eine Position innerhalb eines ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet; auf Grundlage des Erhaltens der Verarbeitungssteuerung durch die Routine, Erhalten des Objektzeigers aus dem Zeigerspeicherbereich durch die Routine, wobei der Objektzeiger eine Position eines Objekts angibt, auf das der Objektzeiger zeigt; Ermitteln durch die Routine, ob der Objektzeiger modifiziert werden soll; auf Grundlage des Feststellens, dass der Objektzeiger modifiziert werden soll, Modifizieren des Objektzeigers durch die Routine, um einen modifizierten Objektzeiger bereitzustellen; und auf Grundlage des Modifizierens des Objektzeigers Speichern des modifizierten Objektzeigers in einer ausgewählten Position.
  2. Computerprogrammprodukt nach Anspruch 1, wobei die ausgewählte Position eine Position innerhalb des Zeigerspeicherbereichs oder eine Position ist, die durch den Ladebefehl vorgegeben wird.
  3. Computerprogrammprodukt nach Anspruch 1, wobei das Erhalten einer Verarbeitungssteuerung über eine Unterbrechung erfolgt, die durch eine Prozessorhardware ausgegeben wird, wobei die Unterbrechung auf Grundlage einer Ausführung des Ladebefehls und der Ermittlung ausgegeben wird, dass sich die Adresse des zu ladenden Objektzeigers in dem Zeigerspeicherbereich befindet und dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet.
  4. Computerprogrammprodukt nach Anspruch 1, wobei der ausgewählte Arbeitsspeicherbereich, für den eine automatische Speicherbereinigung stattfindet, Teil eines Objektbereichs ist, der ein oder mehrere andere Objekte enthält, für die keine automatische Speicherbereinigung stattfindet, und wobei eine oder mehrere Anwendungen, die auf den Objektbereich zugreifen, für den keine automatische Speicherbereinigung stattfindet, während der automatischen Speicherbereinigung mit der Verarbeitung fortfahren.
  5. Computerprogrammprodukt nach Anspruch 1, wobei das Verfahren des Weiteren aufweist: Ermitteln der Adresse des Objektzeigers aus einer Ausführung des Ladebefehls; Vergleichen der Adresse des Objektzeigers mit Daten, die sich auf den Zeigerspeicherbereich beziehen, um zu ermitteln, ob sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet; auf Grundlage dessen, dass bei dem Vergleichen festgestellt wird, dass sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet, Vergleichen des Objektzeigers mit Daten, die sich auf den ausgewählten Arbeitsspeicherbereich beziehen, um festzustellen, dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt; und Bereitstellen einer Steuerung an die Routine auf Grundlage dessen, dass festgestellt wird, dass sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet und dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt.
  6. Computerprogrammprodukt nach Anspruch 1, wobei der Zeigerspeicherbereich einen zusammenhängenden Arbeitsspeicherbereich aufweist, der eine Mehrzahl von Objektzeigeradressen enthält.
  7. Computerprogrammprodukt nach Anspruch 1, wobei der Zeigerspeicherbereich durch ein Register oder eine Position innerhalb des Arbeitsspeichers angegeben wird.
  8. Computerprogrammprodukt nach Anspruch 1, wobei der ausgewählte Arbeitsspeicherbereich durch ein Register oder eine Position des Arbeitsspeichers angegeben wird.
  9. Computerprogrammprodukt nach Anspruch 8, wobei das Register eine Basisadresse des ausgewählten Arbeitsspeicherbereichs und eine Größe des ausgewählten Arbeitsspeicherbereichs enthält.
  10. Computerprogrammprodukt nach Anspruch 1, wobei der Ladebefehl ein oder mehrere Betriebscodefelder, um eine Ladeoperation anzugeben, ein Ergebnisfeld, mit dem der Objektzeiger erhalten wird, und ein oder mehrere andere Felder enthält, die bei der Ladeoperation verwendet werden.
  11. Computersystem zum Ermöglichen einer automatischen Speicherbereinigung innerhalb einer Datenverarbeitungsumgebung, wobei das Computersystem aufweist: einen Arbeitsspeicher; und einen Prozessor für einen Datenaustausch mit dem Arbeitsspeicher, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren durchführt, wobei das Verfahren aufweist: Erhalten einer Verarbeitungssteuerung durch eine Routine, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird, wobei das Erhalten der Verarbeitungssteuerung auf Grundlage einer Ausführung eines Ladebefehls und einer Ermittlung erfolgt, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet und dass der Objektzeiger eine Position innerhalb eines ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet; auf Grundlage des Erhaltens der Verarbeitungssteuerung durch die Routine, Erhalten des Objektzeigers aus dem Zeigerspeicherbereich durch die Routine, wobei der Objektzeiger eine Position eines Objekts angibt, auf das der Objektzeiger zeigt; Ermitteln durch die Routine, ob der Objektzeiger modifiziert werden soll; auf Grundlage des Feststellens, dass der Objektzeiger modifiziert werden soll, Modifizieren des Objektzeigers durch die Routine, um einen modifizierten Objektzeiger bereitzustellen; und auf Grundlage des Modifizierens des Objektzeigers Speichern des modifizierten Objektzeigers in einer ausgewählten Position.
  12. Computersystem nach Anspruch 11, wobei das Erhalten einer Verarbeitungssteuerung über eine Unterbrechung erfolgt, die durch eine Prozessorhardware ausgegeben wird, wobei die Unterbrechung auf Grundlage einer Ausführung des Ladebefehls und der Ermittlung ausgegeben wird, dass sich die Adresse des zu ladenden Objektzeigers in dem Zeigerspeicherbereich befindet und dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet.
  13. Computersystem nach Anspruch 11, wobei der ausgewählte Arbeitsspeicherbereich, für den eine automatische Speicherbereinigung stattfindet, Teil eines Objektbereichs ist, der ein oder mehrere andere Objekte enthält, für die keine automatische Speicherbereinigung stattfindet, und wobei eine oder mehrere Anwendungen, die auf den Objektbereich zugreifen, für den keine automatische Speicherbereinigung stattfindet, während der automatischen Speicherbereinigung mit der Verarbeitung fortfahren.
  14. Computersystem nach Anspruch 11, wobei das Verfahren des Weiteren aufweist: Ermitteln der Adresse des Objektzeigers aus einer Ausführung des Ladebefehls; Vergleichen der Adresse des Objektzeigers mit Daten, die sich auf den Zeigerspeicherbereich beziehen, um zu ermitteln, ob sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet; auf Grundlage dessen, dass bei dem Vergleichen festgestellt wird, dass sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet, Vergleichen des Objektzeigers mit Daten, die sich auf den ausgewählten Arbeitsspeicherbereich beziehen, um festzustellen, dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt; und Bereitstellen einer Steuerung an die Routine auf Grundlage dessen, dass festgestellt wird, dass sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet und dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt.
  15. Computersystem nach Anspruch 11, wobei die ausgewählte Position eine Position innerhalb des Zeigerspeicherbereichs oder eine Position ist, die durch den Ladebefehl vorgegeben wird.
  16. Computerrealisiertes Verfahren zum Ermöglichen einer automatischen Speicherbereinigung innerhalb einer Datenverarbeitungsumgebung, wobei das computerrealisierte Verfahren aufweist: Erhalten einer Verarbeitungssteuerung durch eine Routine, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird, wobei das Erhalten der Verarbeitungssteuerung auf Grundlage einer Ausführung eines Ladebefehls und einer Ermittlung erfolgt, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet und dass der Objektzeiger eine Position innerhalb eines ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet; auf Grundlage des Erhaltens der Verarbeitungssteuerung durch die Routine, Erhalten des Objektzeigers aus dem Zeigerspeicherbereich durch die Routine, wobei der Objektzeiger eine Position eines Objekts angibt, auf das der Objektzeiger zeigt; Ermitteln durch die Routine, ob der Objektzeiger modifiziert werden soll; auf Grundlage des Feststellens, dass der Objektzeiger modifiziert werden soll, Modifizieren des Objektzeigers durch die Routine, um einen modifizierten Objektzeiger bereitzustellen; und auf Grundlage des Modifizierens des Objektzeigers Speichern des modifizierten Objektzeigers in einer ausgewählten Position.
  17. Computerrealisiertes Verfahren nach Anspruch 16, wobei das Erhalten einer Verarbeitungssteuerung über eine Unterbrechung erfolgt, die durch eine Prozessorhardware ausgegeben wird, wobei die Unterbrechung auf Grundlage einer Ausführung des Ladebefehls und der Ermittlung ausgegeben wird, dass sich die Adresse des zu ladenden Objektzeigers in dem Zeigerspeicherbereich befindet und dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt, für den eine automatische Speicherbereinigung stattfindet.
  18. Computerrealisiertes Verfahren nach Anspruch 16, wobei der ausgewählte Arbeitsspeicherbereich, für den eine automatische Speicherbereinigung stattfindet, Teil eines Objektbereichs ist, der ein oder mehrere andere Objekte enthält, für die keine automatische Speicherbereinigung stattfindet, und wobei eine oder mehrere Anwendungen, die auf den Objektbereich zugreifen, für den keine automatische Speicherbereinigung stattfindet, während der automatischen Speicherbereinigung mit der Verarbeitung fortfahren.
  19. Computerrealisiertes Verfahren nach Anspruch 16, des Weiteren aufweisend: Ermitteln der Adresse des Objektzeigers aus einer Ausführung des Ladebefehls; Vergleichen der Adresse des Objektzeigers mit Daten, die sich auf den Zeigerspeicherbereich beziehen, um zu ermitteln, ob sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet; auf Grundlage dessen, dass bei dem Vergleichen festgestellt wird, dass sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet, Vergleichen des Objektzeigers mit Daten, die sich auf den ausgewählten Arbeitsspeicherbereich beziehen, um festzustellen, dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt; und Bereitstellen einer Steuerung an die Routine auf Grundlage dessen, dass festgestellt wird, dass sich die Adresse des Objektzeigers innerhalb des Zeigerspeicherbereichs befindet und dass der Objektzeiger die Position innerhalb des ausgewählten Arbeitsspeicherbereichs angibt.
  20. Computerprogrammprodukt zum Ermöglichen einer Verarbeitung innerhalb einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Befehle zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren durchzuführen, aufweisend: Erhalten einer Verarbeitungssteuerung durch eine Routine, die innerhalb eines Prozessors der Datenverarbeitungsumgebung ausgeführt wird, wobei das Erhalten der Verarbeitungssteuerung auf Grundlage einer Ausführung eines Ladebefehls und einer Ermittlung erfolgt, dass sich eine Adresse eines zu ladenden Objektzeigers in einem Zeigerspeicherbereich befindet; und auf Grundlage des Erhaltens der Verarbeitungssteuerung durch die Routine Durchführen einer Aktion durch die Routine, wobei das Durchführen einer Aktion mindestens aufweist: Bereitstellen eines Warnhinweises; Vermeiden eines Zugriffs auf den vorgegebenen Arbeitsspeicherbereich; oder Modifizieren des Objektzeigers und Speichern des modifizierten Objektzeigers.
DE112016001686.7T 2015-06-30 2016-06-21 Automatische Speicherbereinigung ohne Verwendung von Spezialbefehlen Active DE112016001686B4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/755,748 2015-06-30
US14/755,748 US10176093B2 (en) 2015-06-30 2015-06-30 Pauseless location and object handle based garbage collection
US14/941,558 2015-11-14
US14/941,558 US10180902B2 (en) 2015-06-30 2015-11-14 Pauseless location and object handle based garbage collection
PCT/IB2016/053675 WO2017001967A1 (en) 2015-06-30 2016-06-21 Garbage collection absent use of special instructions

Publications (2)

Publication Number Publication Date
DE112016001686T5 true DE112016001686T5 (de) 2017-12-28
DE112016001686B4 DE112016001686B4 (de) 2023-10-12

Family

ID=57607955

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016001686.7T Active DE112016001686B4 (de) 2015-06-30 2016-06-21 Automatische Speicherbereinigung ohne Verwendung von Spezialbefehlen

Country Status (6)

Country Link
US (1) US10180902B2 (de)
JP (1) JP6697486B2 (de)
CN (1) CN107636624B (de)
DE (1) DE112016001686B4 (de)
GB (1) GB2556547B (de)
WO (1) WO2017001967A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10783073B2 (en) * 2018-02-23 2020-09-22 International Business Machines Corporation Chronologically ordered out-of-place update key-value storage system

Family Cites Families (29)

* 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
JP2920660B2 (ja) * 1990-06-07 1999-07-19 富士ゼロックス株式会社 ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法
US5560003A (en) * 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
JPH06230963A (ja) * 1993-01-29 1994-08-19 Oki Electric Ind Co Ltd メモリアクセス制御装置
JPH09106377A (ja) * 1995-10-11 1997-04-22 Casio Comput Co Ltd メモリ管理装置
US5920876A (en) 1997-04-23 1999-07-06 Sun Microsystems, Inc. Performing exact garbage collection using bitmaps that identify pointer values within objects
US6098089A (en) 1997-04-23 2000-08-01 Sun Microsystems, Inc. Generation isolation system and method for garbage collection
US5873105A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object
WO1999045481A1 (en) 1998-03-03 1999-09-10 Geodesic Systems, Inc. Transparent garbage collection of resources
US6308185B1 (en) * 1998-03-06 2001-10-23 Sun Microsystems, Inc. Methods and apparatus for generational dynamic management of computer memory
US6874074B1 (en) 2000-11-13 2005-03-29 Wind River Systems, Inc. System and method for memory reclamation
DE10329680A1 (de) * 2003-07-01 2005-02-10 Universität Stuttgart Prozessorarchitektur für exakte Zeigeridentifizierung
US7469324B2 (en) * 2005-01-07 2008-12-23 Azul Systems, Inc. System and method for concurrent compacting self pacing garbage collection using loaded value and access barriers
US8108628B2 (en) * 2003-08-04 2012-01-31 Azul Systems, Inc. Processor instruction used to perform a matrix test to generate a memory-related trap
US8131955B2 (en) 2004-04-15 2012-03-06 Microsoft Corporation Ephemeral garbage collection using a tracking mechanism on a card table to determine marked bundles
US7287049B1 (en) 2004-06-29 2007-10-23 Sun Microsystems, Inc. Tracking minimum mutator utilization (MMU) constraints in a garbage-collection system
US7313566B1 (en) 2004-12-23 2007-12-25 Sun Microsystems, Inc. Method and apparatus for isolating selected heap objects using a faulting address trap
US7647458B1 (en) * 2004-12-30 2010-01-12 Azul Systems, Inc. Garbage collection
US8452938B1 (en) * 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
US20060248130A1 (en) * 2005-04-22 2006-11-02 Steffen Grarup Process and system for real-time relocation of objects during garbage collection
JP2007026368A (ja) * 2005-07-21 2007-02-01 Canon Inc システムlsi用マルチタスクos
US7512745B2 (en) 2006-04-28 2009-03-31 International Business Machines Corporation Method for garbage collection in heterogeneous multiprocessor systems
US7900011B2 (en) 2007-07-19 2011-03-01 International Business Machines Corporation Apparatus, system, and method for improving system performance in a large memory heap environment
US20090063595A1 (en) 2007-09-05 2009-03-05 Mark Graham Stoodley Method and apparatus for updating references to objects in a garbage collection operation
US8612493B2 (en) * 2008-10-30 2013-12-17 International Business Machines Corporation Allocation cache premarking for snap-shot-at-the-beginning concurrent mark-and-sweep collector
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8327109B2 (en) 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
US8601036B2 (en) 2011-03-23 2013-12-03 International Business Machines Corporation Handling persistent/long-lived objects to reduce garbage collection pause times
JP6044181B2 (ja) 2012-08-24 2016-12-14 富士通株式会社 ガーベジコレクションのための情報処理方法、プログラム及び装置

Also Published As

Publication number Publication date
CN107636624B (zh) 2021-06-15
DE112016001686B4 (de) 2023-10-12
GB2556547A (en) 2018-05-30
GB2556547B (en) 2021-07-14
US10180902B2 (en) 2019-01-15
GB201801041D0 (en) 2018-03-07
WO2017001967A1 (en) 2017-01-05
US20170004076A1 (en) 2017-01-05
JP2018524696A (ja) 2018-08-30
CN107636624A (zh) 2018-01-26
JP6697486B2 (ja) 2020-05-20

Similar Documents

Publication Publication Date Title
DE112016003120B4 (de) Umleiten einer Kopie beim Schreiben
DE112015001977B4 (de) Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung
DE112012004336B4 (de) System, Verfahren und Programmprodukt für kostenbewusste Auswahl von Vorlagen zum Bereitstellen von gemeinsam genutzten Ressourcen
DE112012000444B4 (de) Verfahren, System und Computerprogrammprodukt zum Ermitteln einer optimalen Datenverarbeitungsumgebung zum Ausführen eines Abbildes sowie Verfahren zum Implementieren eines entsprechenden Systems
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112012003316T5 (de) Dynamisches Erwerben von Datenverarbeitungsressourcen in einer vernetzten Datenverarbeitungsumgebung
DE112012002941T5 (de) Anwendungsressourcenverwalter über eine Cloud
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE102013204508A1 (de) Dynamisches Neukonfigurieren eines Speichersystems
DE112012005032T5 (de) Entfernen der Datenremanenz in deduplizierten Speicher-Clouds
DE102016119298B4 (de) Zeitpunktkopieren mit klonen von ketten
DE102012215219A1 (de) Ermitteln von Verteilungen von Abbildmustern von virtuellen Maschinen in einer vernetzten Datenverarbeitungsumgebung
DE112012003505T5 (de) Automatisierte Auswahl von Funktionen zum Verringern der Speicherkapazität auf der Grundlage von Leistungsanforderungen
DE112016005571T5 (de) Aufrufergeschützte stapelrücksprungadresse in einer hardware-verwalteten stapelarchitektur
DE102013205572A1 (de) Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung
DE112012000693T5 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE112017005588T5 (de) Speichern und abrufen von eingeschränkten datensätzen in und aus einem cloud-netzwerk mit nichteingeschränkten datensätzen
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE112020000805T5 (de) Kontrolle für „ziffernvalidierungsüberprüfung“ in anweisungsausführung
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE112019000402T5 (de) Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem
DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen
DE112018004636B4 (de) Gleichzeitige änderung einer gemeinsam genutzten cachezeile durch mehrere prozessoren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence