DE112015001977T5 - Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung - Google Patents

Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung Download PDF

Info

Publication number
DE112015001977T5
DE112015001977T5 DE112015001977.4T DE112015001977T DE112015001977T5 DE 112015001977 T5 DE112015001977 T5 DE 112015001977T5 DE 112015001977 T DE112015001977 T DE 112015001977T DE 112015001977 T5 DE112015001977 T5 DE 112015001977T5
Authority
DE
Germany
Prior art keywords
processor
memory
synchronization
updates
status indicators
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
DE112015001977.4T
Other languages
English (en)
Other versions
DE112015001977B4 (de
Inventor
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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112015001977T5 publication Critical patent/DE112015001977T5/de
Application granted granted Critical
Publication of DE112015001977B4 publication Critical patent/DE112015001977B4/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

Eine Synchronisationsfunktionalität zum Synchronisieren von Aktualisierungen von Seitentabellen, indem erzwungen wird, dass Aktualisierungen in zwischengespeicherten Einträgen in einem Speicher (d. h. in Seitentabelleneinträgen in einem Speicher) sichtbar gemacht werden. Eine Synchronisationsanweisung wird verwendet, die sicherstellt, dass, nachdem die Anweisung ausgeführt worden ist, Aktualisierungen der zwischengespeicherten Einträge, die vor der Synchronisationsanweisung stattgefunden haben, in dem Speicher sichtbar gemacht werden. Eine Synchronisation kann dazu verwendet werden, Speicherverwaltungsoperationen wie zum Beispiel Massenoperationen, die dazu verwendet werden, einen großen Abschnitt des Speichers in schreibgeschützt zu ändern, Operationen zum Verwalten einer Liste von freien Speicherseiten und/oder Operationen, die einem Beenden von Prozessen zugehörig sind, zu erleichtern.

Description

  • GEBIET DER ERFINDUNG
  • Ein oder mehrere Aspekte beziehen sich allgemein auf ein Verarbeiten innerhalb einer Mehrprozessor-Datenverarbeitungsumgebung und im Besonderen auf ein Synchronisieren von Aktualisierungen von Statusanzeigern in Seitentabellen, die durch die Mehrprozessor-Datenverarbeitungsumgebung verwendet werden.
  • HINTERGRUND
  • Bei Seitentabellen handelt es sich um Datenstrukturen, die zum Speichern der Zuordnung zwischen virtuellen Adressen und physischen Adressen verwendet werden. Virtuelle Adressen sind einem virtuellen Speicher zugehörig, der dazu verwendet wird, den Anschein eines zusätzlichen physischen Speichers bereitzustellen. Bekanntlich weist ein physischer Speicher eine definierte Größe auf, und um den physischen Speicher größer erscheinen zu lassen, als er ist, wird ein virtueller Speicher eingesetzt. Der virtuelle Speicher wird dem physischen Speicher zugeordnet, und es werden Techniken bereitgestellt, um die virtuellen Adressen dazu zu verwenden, Seitentabelleneinträge zu finden, zu denen die physischen Adressen zählen, die dazu verwendet werden, auf den physischen Speicher zuzugreifen.
  • Jeder Seitentabelleneintrag beinhaltet Statusanzeiger, die dazu verwendet werden, den Eintrag und/oder die Seite des Speichers zu verwalten, die dem Eintrag zugehörig ist. Um die Leistungsfähigkeit zu optimieren, werden des Weiteren zwischengespeicherte Kopien der Seitentabelleneinträge in Zwischenspeichern wie zum Beispiel Adressumsetzpuffern (translation lookaside buffers, TLBs) vorgehalten. Wenn ein Seitentabelleneintrag geändert wird, ist daher die zwischengespeicherte Kopie zu aktualisieren oder zu invalidieren, und wenn die zwischengespeicherte Kopie aktualisiert wird, sind die Aktualisierungen in der Seitentabelle abzubilden.
  • KURZDARSTELLUNG
  • Durch das Bereitstellen eines Verfahrens, Systems und Computerprogrammprodukts zum Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung werden Mängel des Standes der Technik beseitigt und Vorteile bereitgestellt. Das Computerprogrammprodukt beinhaltet ein computerlesbares Speichermedium, das durch eine Verarbeitungsschaltung gelesen werden kann und das Anweisungen zum Ausführen durch die Verarbeitungsschaltung zum Durchführen eines Verfahrens speichert. Das Verfahren beinhaltet zum Beispiel ein Empfangen einer Synchronisationsanforderung durch einen ersten Prozessor von einem zweiten Prozessor, die den ersten Prozessor anweist, anstehende Aktualisierungen eines oder mehrerer Statusanzeiger eines oder mehrerer Einträge einer Adressumsetzungsstruktur festzuschreiben, die sich im Speicher befindet; ein Durchführen einer Synchronisationsoperation durch den ersten Prozessor auf Grundlage des Empfangens der Synchronisationsanforderung so, dass die anstehenden Aktualisierungen des einen oder der mehreren Statusanzeiger festgeschrieben werden; und ein Anzeigen eines Abschlusses durch den ersten Prozessor gegenüber dem zweiten Prozessor auf Grundlage des Abschließens der Synchronisationsoperation.
  • Verfahren und Systeme, die sich auf eine oder mehrere Ausführungsformen beziehen, werden hierin ebenfalls beschrieben und beansprucht. Des Weiteren werden Dienste, die sich auf eine oder mehrere Ausführungsformen beziehen, hierin ebenfalls beschrieben und können hierin beansprucht werden.
  • Zusätzliche Merkmale und Vorteile werden umgesetzt. Sonstige Ausführungsformen und Aspekte werden hierin ausführlich beschrieben und werden als Teil der beanspruchten Erfindung betrachtet.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • Ein oder mehrere Aspekte werden in den Ansprüchen am Ende der Beschreibung besonders hervorgehoben und ausdrücklich beansprucht. Die obigen und sonstige Aufgaben, Merkmale und Vorteile werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen deutlich, in denen:
  • 1 ein Beispiel für eine Datenverarbeitungsumgebung darstellt, in der ein oder mehrere Aspekte einer Synchronisationsfunktionalität enthalten sein und verwendet werden sollen;
  • 2 ein weiteres Beispiel für eine Datenverarbeitungsumgebung darstellt, in der ein oder mehrere Aspekte einer Synchronisationsfunktionalität enthalten sein und verwendet werden sollen;
  • 3A ein noch weiteres Beispiel für eine Datenverarbeitungsumgebung darstellt, in der ein oder mehrere Aspekte einer Synchronisationsfunktionalität enthalten sein und verwendet werden sollen;
  • 3B weitere Einzelheiten des Speichers von 3A darstellt;
  • 4 ein Beispiel für einen Seitentabelleneintrag darstellt;
  • 5 eine Implementierung einer Synchronisationsanweisung darstellt;
  • 6 eine Ausführungsform einer Synchronisationslogik darstellt;
  • 7 eine weitere Ausführungsform einer Synchronisationslogik darstellt;
  • 8 eine Ausführungsform einer Logik darstellt, die einer Speicherungsoperation zugehörig ist;
  • 9 eine Ausführungsform einer Logik darstellt, die einer Speicheranweisung zugehörig ist;
  • 10 eine weitere Ausführungsform einer Logik darstellt, die einer Speicheranweisung zugehörig ist;
  • 11 ein Beispiel für ein Neukonfigurieren eines Adressraums darstellt;
  • 12 eine Ausführungsform dafür darstellt, Seiten schreibgeschützt zu machen;
  • 13 eine weitere Ausführungsform dafür darstellt, Seiten schreibgeschützt zu machen;
  • 14 eine Ausführungsform einer Logik zum Verwalten einer Liste von freien Speicherseiten darstellt;
  • 15 eine Ausführungsform einer Logik zum Verwalten eines Speichers auf Grundlage eines Beendens eines Prozesses darstellt;
  • 16 eine Ausführungsform eines Computerprogrammprodukts darstellt;
  • 17 eine Ausführungsform eines Cloud-Computing-Knotens darstellt;
  • 18 eine Ausführungsform einer Cloud-Computing-Umgebung darstellt; und
  • 19 ein Beispiel für Abstraktionsmodellschichten darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem oder mehreren Aspekten wird eine Synchronisationsfunktionalität zum Synchronisieren von Aktualisierungen von Seitentabellen bereitgestellt, indem erzwungen wird, dass anstehende Aktualisierungen in zwischengespeicherten Einträgen in einem Speicher (d. h. in Seitentabelleneinträgen in einem Speicher) sichtbar gemacht werden. Als Beispiel wird eine Synchronisationsanweisung verwendet, die sicherstellt, dass, nachdem die Anweisung ausgeführt worden ist, Aktualisierungen der zwischengespeicherten Einträge, die vor der Synchronisationsanweisung stattgefunden haben, in dem Speicher sichtbar gemacht werden. In dem besonderen Beispiel hierin wird die Synchronisationsanweisung als RCsync-Anweisung bezeichnet, da sie Aktualisierungen der Referenz-(reference, R) und Änderungs-(change, C-)Anzeiger von Seitentabellen synchronisiert. Bei sonstigen Ausführungsformen können sonstige Aktualisierungen von Statusanzeigern von Seitentabellen jedoch mithilfe derselben Anweisung oder einer anderen Anweisung synchronisiert werden.
  • Bei einer Ausführungsform wird eine Synchronisation dazu verwendet, Speicherverwaltungsoperationen wie zum Beispiel Massenoperationen, die dazu verwendet werden, einen großen Abschnitt des Speichers in schreibgeschützt zu ändern, Operationen zum Verwalten einer Liste von freien Speicherseiten und/oder Operationen, die einem Beenden von Prozessen zugehörig sind, zu erleichtern.
  • Datenverarbeitungsumgebungen verschiedener Architekturen können einen oder mehrere Aspekte der hierin bereitgestellten Synchronisationsfunktionalität enthalten und verwenden. Beispielsweise können Umgebungen auf Grundlage der Architektur PowerPC, die auch als Power ISA bezeichnet wird, die von International Business Machines Corporation (IBM®) angeboten wird und in Power ISATM Version 2.07, 3. Mai 2013 beschrieben wird, die durch Bezugnahme in ihrer Gesamtheit hierin eingeschlossen ist, einen oder mehrere Aspekte wie auch Datenverarbeitungsumgebungen sonstiger Architekturen wie zum Beispiel die z/Architecture beinhalten, die von International Business Machines Corporation angeboten wird und in z/Architecture – Principles of Operation, Publikations-Nr. SA22-7932-09, 10. Ausgabe, September 2012 beschrieben wird, die durch Bezugnahme in ihrer Gesamtheit hierin eingeschlossen ist.
  • POWER, POWER ARCHITECTURE, POWERPC, Z/ARCHITECTURE, IBM, AIX, POWERVM, Z/OS und Z/VM (auf die hierin Bezug genommen wird) sind eingetragene Marken von International Business Machines Corporation, Armonk, New York. Sonstige hierin verwendete Namen können eingetragene Marken, Marken oder Produktnamen von International Business Machines Corporation oder sonstigen Unternehmen sein.
  • Ein Beispiel für eine Datenverarbeitungsumgebung, in der ein oder mehrere Aspekte einer Synchronisationsfunktionalitat enthalten sind und verwendet werden, wird unter Bezugnahme auf 1 beschrieben. in einem Beispiel beinhaltet eine Datenverarbeitungsumgebung 100 eine Mehrzahl von Prozessoren (Zentraleinheit, central processing unit – CPU) 102, und jeder Prozessor beinhaltet zum Beispiel zumindest eine Speicherverwaltungseinheit (memory management unit, MMU) 104, eine oder mehrere Adressumsetzungsstrukturen 105, einen oder mehrere Zwischenspeicher 106 und eine Synchronisationseinheit 107 zum Bereitstellen der hierin beschriebenen Synchronisationsfunktionalität.
  • Jeder Prozessor 102 ist zur Datenübertragung mit einem Speicherabschnitt 108 (entweder demselben Abschnitt oder einem anderen Abschnitt), der einen oder mehrere Zwischenspeicher 110 aufweist, und mit einem Eingabe-/Ausgabe(E/A)-Teilsystem 112 (wiederum entweder demselben Teilsystem oder einem anderen Teilsystem) verbunden. Das E/A-Teilsystem 112 ist zur Datenübertragung mit externen E/A-Einheiten 114 verbunden, zu denen zum Beispiel Dateneingabeeinheiten, Sensoren und/oder Ausgabeeinheiten wie zum Beispiel Anzeigen zählen können.
  • Die Speicherverwaltungseinheit 104 wird zum Verwalten des Speicherabschnitts 108 verwendet, das ein Erleichtern eines Zugriffs auf den Speicher durch Bereitstellen einer Adressumsetzung beinhaltet. Um die Adressumsetzung zu verbessern, verwendet die Speicherverwaltungseinheit eine oder mehrere Adressumsetzungsstrukturen 105, die zum Beispiel einen Adressumsetzpuffer (TLB) und einen Segmentumsetzpuffer (segment lookaside buffer, SLB) beinhaltet, die sich bei einer Ausführungsform in der MMU befinden. Bei einer weiteren Ausführungsform beinhalten die Adressumsetzungsstrukturen 105 darüber hinaus eine Struktur zur Umsetzung von effektiven in reale Adressen (effective to real address translation, ERAT), die sich z. B. in dem Prozessor außerhalb der MMU befindet.
  • Eine weitere Ausführungsform einer Datenverarbeitungsumgebung, in der ein oder mehrere Aspekte einer Synchronisationsfunktionalität enthalten sind und verwendet werden, wird in 2 beschrieben. Unter Bezugnahme auf 2 beinhaltet eine Datenverarbeitungsumgebung 200 in einem Beispiel einen Zentralprozessorkomplex (central processor complex, CPC) 202, der über eine oder mehrere Steuereinheiten 206 mit einer oder mehreren Eingabe-/Ausgabe(E/A)-Einheiten 204 verbunden ist. Der Zentralprozessorkomplex 202 beinhaltet einen Prozessorspeicher 208 (der auch als Hauptspeicher bezeichnet wird), der mit einem oder mehreren Zentralprozessoren (die auch als Zentraleinheiten (CPUs) bezeichnet werden) 210 und einem E/A-Teilsystem 212 verbunden ist, die jeweils im Folgenden näher beschrieben werden.
  • Der Prozessorspeicher 208 beinhaltet eine oder mehrere virtuelle Maschinen 214 (als Beispiel für die Architektur PowerPC) oder eine oder mehrere logische Partitionen 214 (als Beispiel für die z/Architecture) und Prozessor-Firmware 216, die einen Hypervisor 218 und sonstige Prozessor-Firmware 220 beinhaltet. So, wie der Begriff hierin verwendet wird, beinhaltet Firmware z. B. den Mikrocode und/oder Millicode des Prozessors. Sie beinhaltet zum Beispiel die Anweisungen und/oder Datenstrukturen auf Hardware-Ebene, die zum Implementieren von übergeordnetem Maschinencode verwendet werden. Sie beinhaltet bei einer Ausführungsform zum Beispiel proprietären Code, der üblicherweise als Mikrocode, der vertrauenswürdige Software beinhaltet, oder als Mikrocode bereitgestellt wird, der für die zugrunde liegende Hardware spezifisch ist und den Zugriff des Betriebssystems auf die System-Hardware steuert.
  • Jede virtuelle Maschine oder logische Partition 214 fungiert als separates System und weist eine oder mehrere Anwendungen 222 und optional ein residentes Betriebssystem 224 darin auf, die sich bei jeder virtuellen Maschine oder logischen Partition unterscheiden können. Bei einer Ausführungsform handelt es sich bei dem Betriebssystem um das Betriebssystem z/VM, das Betriebssystem z/OS, das Betriebssystem z/Linux, das Betriebssystem TPF, das Betriebssystem AIX, das Betriebssystem Power Linux, das Betriebssystem IBM i/OS oder um ein weiteres Betriebssystem, das von International Business Machines Corporation, Armonk, New York, angeboten wird; oder um ein weiteres Betriebssystem, das von einem weiteren Unternehmen angeboten wird. Die virtuellen Maschinen werden durch den Hypervisor 218 wie zum Beispiel PowerVM verwaltet, der von International Business Machines Corporation, Armonk, New York, angeboten wird; und die logischen Partitionen werden durch den Hypervisor 218 wie zum Beispiel den Processor Resource/System Manager (PR/SM) verwaltet, der von International Business Machines Corporation, Armonk, New York, angeboten wird.
  • Bei den Zentralprozessoren 210 handelt es sich um physische Prozessor-Ressourcen, die den virtuellen Maschinen zuweisbar sind oder den logischen Partitionen zugeordnet werden. Beispielsweise beinhaltet jede virtuelle Maschine oder logische Partition 214 einen oder mehrere logische Prozessoren, die jeweils sämtliche oder einen Teil eines oder mehrerer physischer Prozessoren 210 darstellen, die der virtuellen Maschine oder der Partition dynamisch zugeordnet werden können. Ein Zentralprozessor kann eine Speicherverwaltungseinheit (MMU) 230, eine oder mehrere Adressumsetzungsstrukturen 231, zumindest einen Zwischenspeicher 232 und eine Synchronisationseinheit 234 beinhalten, die dazu verwendet wird, die hierin beschriebene Synchronisationsfunktionalität bereitzustellen.
  • Das Eingabe-/Ausgabe-Teilsystem 212 leitet den Fluss von Daten zwischen den Eingabe-/Ausgabe-Einheiten 204 und dem Hauptspeicher 208. Es ist insofern mit dem Zentralverarbeitungskomplex verbunden, als es sich um einen Teil des Zentralverarbeitungskomplexes handeln kann oder es davon getrennt sein kann. Das E/A-Teilsystemen entlastet die Zentralprozessoren von der Aufgabe, Daten direkt mit den Eingabe-/Ausgabe-Einheiten auszutauschen, und lässt zu, dass eine Datenverarbeitung gleichzeitig mit einer Eingabe-/Ausgabe-Verarbeitung abläuft. Um Datenübertragungen bereitzustellen, setzt das E/A-Teilsystem E/A-Datenübertragungsadapter ein. Es sind verschiedene Arten von Datenübertragungsadaptern vorhanden, darunter zum Beispiel Kanäle, E/A-Adapter, PCI-Karten, Ethernet-Karten, Small-Computer-Storage-Interface(SCSI)-Karten usw. Des Weiteren verwendet das E/A-Teilsystem einen oder mehrere Eingabe-/Ausgabe-Pfade als Datenübertragungsverbindungen beim Verwalten des Flusses von Daten zu oder von den Eingabe-/Ausgabe-Einheiten 204.
  • Eine weitere Ausführungsform einer Datenverarbeitungsumgebung, in der ein oder mehrere Aspekte der Synchronisationsfunktionalität enthalten sind und verwendet werden, wird unter Bezugnahme auf 3A beschrieben. In diesem Beispiel beinhaltet eine Datenverarbeitungsumgebung 300 zum Beispiel eine systemeigene Zentraleinheit (CPU) 302, einen Speicher 304 und eine oder mehrere Eingabe-/Ausgabe-Einheiten und/oder Schnittstellen 306, die beispielsweise über einen oder mehrere Busse 308 und/oder sonstige Verbindungen miteinander verbunden sind. Die Datenverarbeitungsumgebung 300 kann zum Beispiel einen PowerPC-Prozessor oder einen Power-Systems-Server, die von International Business Machines Corporation, Armonk, New York, angeboten werden; einen HP Superdome mit Intel-Itanium-II-Prozessoren, die von Hewlett Packard Co., Palo Alto, California, angeboten werden; und/oder sonstige Maschinen auf Grundlage von Architekturen beinhalten, die von International Business Machines Corporation, Hewlett Packard, Intel, Oracle oder sonstigen angeboten werden.
  • Die systemeigene Zentraleinheit 302 beinhaltet ein oder mehrere systemeigene Register 310 wie zum Beispiel ein oder mehrere Allgemeinregister und/oder ein oder mehrere Spezialregister, die während eines Verarbeitens innerhalb der Umgebung verwendet werden, wie auch eine oder mehrere Adressumsetzungsstrukturen 311. Diese Register beinhalten Daten, die den Zustand der Umgebung zu einem beliebigen Zeitpunkt darstellen.
  • Darüber hinaus führt die systemeigene Zentraleinheit 302 Anweisungen und Code aus, die in dem Speicher 304 gespeichert sind. In einem besonderen Beispiel führt die Zentraleinheit einen Emulatorcode 312 aus, der in dem Speicher 304 gespeichert ist. Dieser Code ermöglicht der Datenverarbeitungsumgebung, die in einer Architektur konfiguriert ist, eine weitere Architektur zu emulieren. Beispielsweise ermöglicht der Emulatorcode 312 Maschinen auf Grundlage von anderen Architekturen als der z/Architecture wie etwa PowerPC-Prozessoren, Power-Systems-Servern, HP-Superdome-Servern oder sonstigen, die z/Architecture zu emulieren und Software und Anweisungen auszuführen, die auf Grundlage der z/Architecture entwickelt worden sind, oder ermöglicht Maschinen auf Grundlage von anderen Architekturen als der Power Architecture wie zum Beispiel HP-Superdome-Servern oder sonstigen, die Power Architecture zu emulieren und Software und Anweisungen auszuführen, die auf Grundlage der Power Architecture entwickelt worden sind.
  • Weitere Einzelheiten im Hinblick auf den Emulatorcode 312 werden unter Bezugnahme auf 3B beschrieben. Gastanweisungen 350, die in dem Speicher 304 gespeichert sind, weisen Software-Anweisungen (die z. B. mit Maschinenanweisungen korrelieren) auf, die entwickelt wurden, damit sie in einer anderen Architektur als derjenigen der systemeigenen CPU 302 ausgeführt werden. Beispielsweise können Gastanweisungen 350 so entworfen worden sein, dass sie auf einem Power-Architecture- oder z/Architecture-Prozessor 102 laufen, stattdessen jedoch auf der systemeigenen CPU 302 emuliert werden, bei der es sich zum Beispiel um einen Intel-Itanium-II-Prozessor handeln kann. In einem Beispiel beinhaltet der Emulatorcode 312 eine Anweisungsabrufroutine 352, um eine oder mehrere Gastanweisungen 350 aus dem Speicher 304 abzurufen und um optional ein lokales Zwischenspeichern der gewonnenen Anweisungen bereitzustellen. Er beinhaltet darüber hinaus eine Anweisungsumsetzungsroutine 354, um den Typ der Gastanweisung zu ermitteln, die gewonnen worden ist, und um die Gastanweisung in eine oder mehrere entsprechende systemeigene Anweisungen 356 umzusetzen. Diese Umsetzung beinhaltet zum Beispiel ein Identifizieren der Funktion, die durch die Gastanweisung auszuführen ist, und ein Wählen der systemeigenen Anweisung(en), um diese Funktion durchzuführen.
  • Des Weiteren beinhaltet der Emulatorcode 312 eine Emulationssteuerungsroutine 360, um zu bewirken, dass die systemeigenen Anweisungen ausgeführt werden. Die Emulationssteuerungsroutine 360 kann bewirken, dass die systemeigene CPU 302 eine Routine von systemeigenen Anweisungen ausführt, die eine oder mehrere zuvor gewonnene Gastanweisungen emulieren, und nach dem Abschluss einer solchen Ausführung die Steuerung an die Anweisungsabrufroutine zurückgibt, um das Gewinnen der nächsten Gastanweisung oder einer Gruppe von Gastanweisungen zu emulieren. Eine Ausführung der systemeigenen Anweisungen 356 kann ein Laden von Daten aus dem Speicher 304 in ein Register; ein Zurückspeichern von Daten aus einem Register in den Speicher; oder ein Durchführen eines Typs einer arithmetischen oder logischen Operation beinhalten, wie durch die Umsetzungsroutine festgelegt.
  • Jede Routine ist zum Beispiel in Software implementiert, die in dem Speicher gespeichert ist und durch die systemeigene Zentraleinheit 302 ausgeführt wird. In sonstigen Beispielen sind eine oder mehrere der Routinen oder Operationen in Firmware, Hardware, Software oder einer Kombination von diesen implementiert. Die Register des emulierten Prozessors können mithilfe der Register 310 der systemeigenen CPU oder mithilfe von Positionen in dem Speicher 304 emuliert werden. Bei Ausführungsformen können sich die Gastanweisungen 350, die systemeigenen Anweisungen 356 und der Emulatorcode 312 in demselben Speicher befinden oder können auf verschiedene Speichereinheiten verteilt sein.
  • Bei Implementierungen kann die hierin beschriebene Synchronisationsfunktionalität durch die CPUs bereitgestellt werden, die die Emulation durchführen, oder kann durch die emulierte Software bereitgestellt werden. Verschiedene Implementierungen sind möglich.
  • Bei den oben beschriebenen Datenverarbeitungsumgebungen handelt es sich lediglich um Beispiele für Datenverarbeitungsumgebungen, die verwendet werden können. Sonstige Umgebungen, darunter sonstige Umgebungen mit mehreren Prozessoren, sonstige partitionierte Umgebungen und/oder sonstige emulierte Umgebungen können verwendet werden, ohne auf diese beschränkt zu sein; die Ausführungsformen sind nicht auf eine bestimmte Umgebung beschränkt.
  • Jede der Datenverarbeitungsumgebungen verwendet jedoch Aspekte von virtueller Adressierung, darunter Datenstrukturen, die als Seitentabellen bezeichnet werden. Bekanntlich weist ein physischer Speicher eine definierte Größe auf, und um den physischen Speicher größer erscheinen zu lassen, als er ist, wird ein virtueller Speicher eingesetzt. Virtueller Speicher wird realem Speicher zum Beispiel über eine Hash-Seitentabellen(hash page table, HPT)-Technik so zugeordnet, dass Seitentabelleneinträge (page table entries, PTEs) gefunden werden. Jedes Segment des virtuellen Speichers wird einem Segment-ID(SID)-Eintrag zugeordnet, der durch eine effektive Segment-ID (ESID) identifiziert wird. Eine effektive Adresse, die durch das Programm verwendet wird, beinhaltet zum Bespiel eine ESID, einen Seitenabschnitt und einen Byte-Abschnitt und wird dazu verwendet, einen SID-Eintrag, der den ESID-Wert beinhaltet, wie auch einen virtuellen Segment-ID(VSID)-Wert zu wählen. Der VSID-Wert stellt die höchstwertigen Bits einer virtuellen Adresse dar, die durch einen Hashing-Algorithmus dazu verwendet werden, die Hash-Seitentabelle zu durchsuchen. Ein Hash-Wert auf Grundlage der VSID wird dazu verwendet, einen Seitentabelleneintrag (PTE) zu finden. Der Seitentabelleneintrag beinhaltet eine Adresse einer Seite eines physischen Speichers. Um die Leistungsfähigkeit zu verbessern, nachdem ein PTE gefunden worden ist, werden der Seitenabschnitt der effektiven Adresse und die Adresse der physischen Speicherseite, die in dem PTE gefunden worden ist, in einer Zwischenspeicherstruktur wie zum Beispiel einem Adressumsetzpuffer (TLB) so gespeichert, dass weitere Zugriffe auf dieselbe effektive Adressseite auf den TLB „treffen” und die PTE-Suche vermieden wird. Bei sonstigen Ausführungsformen können sonstige Zwischenspeicherstrukturen anstelle des TLB oder zusätzlich zu diesem verwendet werden, um Seitentabelleneinträge zu speichern, darunter eine Struktur zur Umsetzung von effektiven in reale Adressen (ERAT), ohne auf diese beschränkt zu sein.
  • Weitere Einzelheiten im Zusammenhang mit einem Seitentabelleneintrag werden unter Bezugnahme auf 4 beschrieben. Jeder Seitentabelleneintrag 400 ordnet eine virtuelle Zahl einer realen Seitenzahl zu. Als Beispiel für die Architektur Power ISA beinhaltet ein Seitentabelleneintrag Folgendes:
    Doppelwort Bit(s) Name Beschreibung
    0 0:1 B (402) Segmentgröße
    0b00 – 256 MB; 0b01 – 1 TB; 0b10 256 TB; 0b11 – reserviert
    2:56 AVA (404) abgekürzte virtuelle Adresse
    57:60 SW (406) für Software-Verwendung verfügbar
    61 L (408) Größe der virtuellen Seite
    0b0 – 4 KB
    0b1 – größer als 4 KB (große Seite)
    62 H (410) Hash-Funktionskennung
    63 V (412) Eintrag gültig (V = 1) oder ungültig (V = 0)
    1 0 PP (414) Seitenschutz-Bit 0
    2:3 Key (418) SCHLÜSSEL-Bits 0:1
    4:43 ARPN (420) abgekürzte reale Seitenzahl
    44:51 LP (422) Auswahl für große Seitengröße
    52:54 Key (424) SCHLÜSSEL-Bits 2:4
    55 R (426) Referenz-Bit
    56 C (428) Änderungs-Bit
    57:60 WIMG (429) Speichersteuerungs-Bits
    61 N (430) Seite nicht ausführen, wenn N = 1
    62:63 PP (432) Seitenschutz-Bits 1:2
  • Die ARPN, die mit dem LP ((ARPN||LP)0:59-P) verknüpft ist, stellt einen ersten Abschnitt 442 einer realen Adresse 440 bereit, und ein Byte-Abschnitt 444 der effektive Adresse stellt einen zweiten Abschnitt der realen Adresse bereit.
  • Weitere Einzelheiten bezüglich einer Implementierung von Seitentabellen und Seitentabelleneintragen werden in der Spezifikation Power ISATM Version 2.07, 3. Mai 2013, beschrieben, die von International Business Machines Corporation angeboten wird und die durch Bezugnahme in ihrer Gesamtheit hierin eingeschlossen ist.
  • Die Verwendung einer Hash-Seitentabelle zum Umsetzen von Adressen ist lediglich ein Beispiel für eine Umsetzungstechnik. Sonstige Adressumsetzungsschemata einschließlich derjenigen, die eine Hierarchie von Umsetzungstabellen verwenden, werden in den folgenden Publikationen beschrieben: z/Architecture – Principles of Operation, Publikations-Nr. SA22-7932-09, 10. Ausgabe, September 2012, und Intel Itanium Architecture Software Developer's Manual, Band 2: System Architecture, Nummer des Dokuments: 245318, Mai 2010, die jeweils durch Bezugnahme in ihrer Gesamtheit hierin eingeschlossen sind. In einem Beispiel wird bei der z/Architecture die Hierarchie von Tabellen als Tabellen für dynamische Adressumsetzung (dynamic address translation, DAT) bezeichnet; und bei Power ISA werden die Tabellen als Radixtabellen bezeichnet.
  • So, wie sie hierin beschrieben wird, wird eine Synchronisationsfunktionalität bereitgestellt, um Aktualisierungen von Seitentabelleneinträgen zu synchronisieren. Ein Beispiel für eine Synchronisationsanweisung, die hierin als RCsync bezeichnet wird, die verwendet werden kann, wird unter Bezugnahme auf 5 beschrieben. Bei einer Implementierung beinhaltet eine RCsync-Anweisung 500 einen Operationscode 502a, 502b, der eine Synchronisationsoperation angibt; ein Feld 504 L, das dazu verwendet wird, einen Typ einer Synchronisationsoperation anzugeben (z. B. gibt L = 3 eine RCsync-Operation an); und ein Feld 506 für eine Elementgrenze (E), das bei dieser Ausführungsform gleich 0 ist. Bei sonstigen Ausführungsformen weist die RCsync-Anweisung ihren eigenen Op-Code auf, statt einen allgemeinen Op-Code aufzuweisen, der für eine Vielfalt von Synchronisationsoperationen verwendet wird, und RCsync durch das Feld L anzugeben. Es sind zahlreiche Varianten möglich.
  • Eine Ausführungsform einer Synchronisationslogik, die zum Beispiel RCsync verwendet, wird unter Bezugnahme auf 6 beschrieben. Bei einer Ausführungsform führt eine Mehrzahl von Prozessoren diese Logik durch, darunter ein lokaler Prozessor, bei dem es sich um den Prozessor handelt, der den Synchronisationsprozess initiiert, und ein oder mehrere entfernt angeordnete Prozessoren, die ein Verarbeiten in Reaktion auf die Initiierung des Synchronisationsprozesses durchführen.
  • Unter Bezugnahme auf 6 initiiert zunächst ein lokaler Prozessor eine RCsync-Anweisung, SCHRITT 600, die eine RCsync-Anforderung an einen oder mehrere entfernt angeordnete Prozessoren überträgt, SCHRITT 602. Bei Ausführungsformen wird die RCsync-Anforderung zum Beispiel an sämtliche Prozessoren in einer selben logischen Partition (LPAR), virtuellen Maschine (virtual machine, VM) oder sonstigen Gruppe; an Prozessoren, die denselben Adressraum verwenden; oder an sämtliche Prozessoren einer Konfiguration übertragen. In einem besonderen Beispiel wird die Übertragung, wenn sie an sämtliche Prozessoren gesendet wird, mit einer LPAR-ID, VM-ID oder einer sonstigen Kennung gesendet, und wenn der Prozessor, der die Anforderung empfängt, kein Teil der LPAR, VM oder sonstigen Gruppe ist, bestätigt er unverzüglich den Abschluss.
  • Anschließend an das Übertragen der Anforderungen wartet der lokale Prozessor auf eine Bestätigung von den entfernt angeordneten Prozessoren, dass sie die RCsync-Verarbeitung abgeschlossen haben, SCHRITT 604. Bei einer alternativen Ausführungsform überprüft der lokale Prozessor entweder fortdauernd oder in vorgegebenen Zeitabständen, ob er eine Bestätigung empfangen hat. Wenn er keine Bestätigung von den entfernt angeordneten Prozessoren empfangen hat, an die die Anforderung übertragen wurde, ABFRAGE 606, wartet er weiter, SCHRITT 604. Anderenfalls ist die Synchronisation abgeschlossen, was bedeutet, dass die Seitentabelleneinträge im Speicher so aktualisiert worden sind, dass sie Änderungen (z. B. aktualisierte R/C-Anzeiger) in zwischengespeicherten Einträgen (z. B. TLBs) abbilden, SCHRITT 608.
  • Auf jedem entfernt angeordneten Prozessor wird die RCsync-Anforderung von dem lokalen Prozessor empfangen, SCHRITT 620, und sämtliche anstehenden Referenz- und Änderungs(R/C)-Aktualisierungsanforderungen werden markiert, SCHRITT 622. Wenn es zum Beispiel zu einer Referenz- und/oder Änderungsaktualisierung in dem Zwischenspeicher (z. B. dem TLB) kommt, wird die anstehende Aktualisierung für einen letztendlichen Schreibvorgang in den Speicher in eine Speicherungswarteschlange eingestellt. (Bei weiteren Ausführungsformen werden die anstehenden R/C-Aktualisierungen in einer getrennten R/C-Aktualisierungswarteschlange gespeichert.) Wenn eine RCsync-Anforderung empfangen wird, wird folglich jede Aktualisierung, die vor der RCsync-Anforderung eingegangen ist, in der Warteschlange markiert, und ein Festschreiben der anstehenden Aktualisierungen des Adressumsetzungs-Zwischenspeichers in den Speicher wird initiiert. Des Weiteren wird bei einer Ausführungsform ein optionaler Schritt durchgeführt, bei dem ein beschleunigtes Zurückschreiben der markierten R/C-Aktualisierungsanforderungen verarbeitet wird, SCHRITT 624.
  • Bei einer weiteren Ausführungsform wird in Reaktion auf das Empfangen der RCsync-Anforderung und vor dem Durchführen des Markierens, wenn keine Warteschlange anstehender Aktualisierungen vorhanden ist, eine solche erstellt; und/oder ein Verarbeiten kann durchgeführt werden, um sicherzustellen, dass die Warteschlange aktuell ist.
  • Anschließend wartet der entfernt angeordnete Prozessor, bis zumindest eine R/C-Aktualisierung der Speicherungswarteschlange in den Speicher (z. B. den PTE) geschrieben wird, SCHRITT 626. Bei einer alternativen Implementierung kann der entfernt angeordnete Prozessor fortlaufend überprüfen oder in vorgegebenen Zeitabständen überprüfen, ob die Aktualisierung in den Speicher geschrieben wird. Nachdem zumindest eine R/C-Aktualisierung in den Speicher geschrieben worden ist, überprüft der entfernt angeordnete Prozessor, ob sämtliche markierten Aktualisierungen in den Speicher geschrieben worden sind, ABFRAGE 628. Wenn nicht sämtliche markierten R/C-Aktualisierungen in den Speicher geschrieben worden sind, ABFRAGE 628, wartet der Prozessor weiter, SCHRITT 626. Anderenfalls wird dem Anforderer, d. h. dem lokalen Prozessor, der Abschluss der entfernt durchgeführten RCsync angezeigt, SCHRITT 630.
  • Bei einer alternativen Ausführungsform kann die Technik die Anzahl der R/C-Aktualisierungseinträge in einer Speicherungs- oder einer sonstigen Warteschlange in SCHRITT 622 ermitteln und wartet in SCHRITT 626 auf die Anzahl der gezählten Einträge, die zu verarbeiten sind.
  • Bei einer noch weiteren alternativen Ausführungsform wird ein Erzeugen von zusätzlichen Speicheranforderungen an eine Speicherungs- oder eine sonstige Warteschlange optional in SCHRITT 622 unterbrochen, und der Prozessor wartet in SCHRITT 626, bis die Speicherungs- oder die sonstige Warteschlange leer ist, bevor er den Abschluss einer RCsync-Anforderung angibt.
  • Über das Obige hinaus führt der lokale Prozessor bei einer Ausführungsform außerdem eine Synchronisation lokal durch, die sicherstellt, dass jegliche Änderungen in einer lokal zwischengespeicherten Seitentabelle (z. B. dem lokalen TLB) in den Speicher (z. B. in die Kopie des PTE im Speicher) ausgelagert werden.
  • Eine weitere Ausführungsform einer Synchronisationslogik, die zum Beispiel RCsync verwendet, wird unter Bezugnahme auf 7 beschrieben. Bei einer Ausführungsform führt eine Mehrzahl von Prozessoren diese Logik durch, darunter ein lokaler Prozessor, bei dem es sich um den Prozessor handelt, der den Synchronisationsprozess initiiert, und ein oder mehrere entfernt angeordnete Prozessoren, die ein Verarbeiten in Reaktion auf die Initiierung des Synchronisationsprozesses durchführen.
  • Unter Bezugnahme auf 7 initiiert zunächst ein lokaler Prozessor eine RCsync-Anweisung, SCHRITT 700, die eine RCsync-Anforderung an einen oder mehrere entfernt angeordnete Prozessoren (z. B. an sämtliche der entfernt angeordneten Prozessoren in dem System oder an ein Teilmenge davon) überträgt, SCHRITT 702. Anschließend wartet der lokale Prozessor auf eine Bestätigung von den entfernt angeordneten Prozessoren, dass sie die RCsync-Verarbeitung abgeschlossen haben, SCHRITT 704. Bei einer alternativen Ausführungsform überprüft der lokale Prozessor entweder fortdauernd oder in vorgegebenen Zeitabständen, ob er eine Bestätigung empfangen hat. Wenn er keine Bestätigung von sämtlichen entfernt angeordneten Prozessoren empfangen hat, an die er die Anforderung übertragen hatte, ABFRAGE 706, wartet er weiter, SCHRITT 704. Anderenfalls ist die Synchronisation abgeschlossen, SCHRITT 708.
  • Auf jedem entfernt angeordneten Prozessor wird die RCsync-Anforderung von dem lokalen Prozessor empfangen, SCHRITT 720, und anstatt jede momentan ausgeführte R/C-Aktualisierungsanforderung in der Speicherungswarteschlange zu markieren, wird eine Markierung in der Speicherungswarteschlange platziert, und in der Annahme, dass die Warteschlange unter Einhaltung der Reihenfolge verarbeitet wird, ist, wenn die Markierung den Kopf der Warteschlange erreicht, bekannt, dass sämtliche Aktualisierungen, die vorhanden waren, bevor die RCsync empfangen wurde, verarbeitet worden sind, SCHRITT 722.
  • Die Warteschlange wird verarbeitet, indem das Schreiben der R/C-Aktualisierungen in die Seitentabelle initiiert wird, SCHRITT 723. Des Weiteren wird bei einer Ausführungsform ein optionaler Schritt durchgeführt, bei dem ein beschleunigtes Zurückschreiben der R/C-Aktualisierungsanforderungen verarbeitet wird, SCHRITT 724.
  • Bei einer weiteren Ausführungsform wird in Reaktion auf das Empfangen der RCsync-Anforderung und vor dem Durchführen des Markierens, wenn keine Warteschlange anstehender Aktualisierungen vorhanden ist, eine solche erstellt; und/oder ein Verarbeiten kann durchgeführt werden, um sicherzustellen, dass die Warteschlange aktuell ist.
  • Der entfernt angeordnete Prozessor wartet anschließend, bis die Markierung die Spitze oder den Kopf der Warteschlange erreicht, SCHRITT 726. Auf Grundlage dessen, dass die Markierung den Kopf der Warteschlange erreicht, gibt der entfernt angeordnete Prozessor gegenüber dem Anforderer (d. h. dem lokalen Prozessor) den Abschluss der entfernt durchgeführten RCsync an, SCHRITT 728.
  • Bei einer alternativen Ausführungsform kann die Technik die Anzahl der Einträge in einer Speicherungs- oder einer sonstigen Warteschlange in SCHRITT 722 ermitteln und wartet in SCHRITT 726 auf die Anzahl der gezählten Einträge, die zu verarbeiten sind.
  • Bei einer noch weiteren alternativen Ausführungsform wird ein Erzeugen von zusätzlichen Speicheranforderungen an eine Speicherungs- oder eine sonstige Warteschlange optional in SCHRITT 722 unterbrochen, und der Prozessor wartet in SCHRITT 726, bis die Speicherungs- oder die sonstige Warteschlange leer ist, bevor er den Abschluss einer RCsync-Anforderung angibt.
  • Wiederum führt der lokale Prozessor bei einer Ausführungsform über das Obige hinaus außerdem eine Synchronisation lokal durch, die sicherstellt, dass jegliche Änderungen in einer lokal zwischengespeicherten Seitentabelle (z. B. dem lokalen TLB) in den Speicher (z. B. in die Kopie des PTE im Speicher) ausgelagert werden.
  • In einem Aspekt stellt die RCsync sicher, dass die anstehenden entfernt durchgeführten Referenz- und Änderungs(R/C)-Aktualisierungen auf sämtlichen der entfernt angeordneten Knoten abgeschlossen sind, die dazu bestimmt worden sind, die RCsync-Anforderung zu empfangen. Bei einer Implementierung sind, wenn eine RCsync ausgegeben wird, die R/C-Aktualisierungen, die einem Zustand des Speichers vor der RCsync entsprechen, abgeschlossen worden. Nach dem Abschluss der RCsync sind für jeden Seitentabelleneintrag lediglich Aktualisierungen von Seitentabelleneinträgen möglich, die den Wert des Seitentabelleneintrags zum Zeitpunkt der RCsync oder danach abbilden. Wenn ein Seitentabelleneintrag vor der RCsync auf schreibgeschützt gesetzt worden war, jedoch zuvor der Schreibschutz aufgehoben war, erzwingt RCsync jegliche C-Anzeigereinstellungen in dem Seitentabelleneintrag, und nach Abschluss der RCsync werden keine weiteren Änderungen an dem C-Anzeiger vorgenommen, da der neue PTE-Wert dies untersagt. Wenn der C-Anzeiger jedoch in einem TLB so festgelegt wird, dass er angibt, dass ein Schreibvorgang stattgefunden hat, sind künftige Schreibvorgänge mithilfe des TLB möglich, bis der TLB invalidiert oder aktualisiert wird. Wenn ein PTE auf ungültig gesetzt wird, finden gleichermaßen keine R/C-Aktualisierungen nach der RCsync-Operation statt, da der neue PTE-Wert dies untersagt.
  • Gemäß bestehenden Speichersystemen wird, wenn ein zwischengespeicherter TLB-Eintrag von der Zwischenspeicherung, die Lesevorgänge zulässt, dazu übergeht, dass Schreibvorgänge zugelassen werden, der Seitentabelleneintrag (oder seine Gültigkeit und/oder Schreibberechtigungen) gelesen und aktualisiert, bevor der TLB-Eintrag mit der Schreibberechtigung hinzugefügt wird. Auf diese Weise lösen TLB-Einträge keine C-Anzeigeraktualisierungen aus, nachdem der PTE-Eintrag in dem Speicher so aktualisiert worden ist, dass er ungültig ist und/oder keine Schreibberechtigungen aufweist.
  • Eine Ausführungsform einer Logik, die einer Speicherungsoperation zugehörig ist, und die Verwendung zwischengespeicherter Einträge infolge der Verwendung von RCsync wird unter Bezugnahme auf 8 beschrieben. RCsync kann vor oder nach einer Speicherungsoperation durchgeführt werden, und daher wird diese Logik unabhängig davon verwendet, wann RCsync durchgeführt wird.
  • Unter Bezugnahme auf 8 empfängt zunächst ein Prozessor eine Speicherungsanweisung, bei der Daten auf eine bestimmte Seite in dem Speicher zu schreiben sind, SCHRITT 800. Auf Grundlage des Empfangens der Speicherungsanweisung führt der Prozessor eine Suche in einer oder mehreren Adressumsetzungsstrukturen wie zum Beispiel einem Adressumsetzpuffer (TLB) oder einer Struktur zur Umsetzung von effektiven in reale Adressen (ERAT) durch, um zu ermitteln, ob ein Umsetzungseintrag, der der Seite entspricht, zwischengespeichert worden ist, SCHRITT 802. Wenn ein Zwischenspeichereintrag wie zum Beispiel ein TLB- und/oder ERAT-Eintrag vorhanden ist, ABFRAGE 804, wird eine weitere Ermittlung dahingehend durchgeführt, ob der Zwischenspeichereintrag den Änderungsanzeiger als aktualisiert (z. B. C = 1) darstellt, wodurch angegeben wird, dass auf diese Seite zuvor geschrieben worden ist, ABFRAGE 806. Wenn er gesetzt ist (z. B. C = 1), wird der Eintrag bei der Adressumsetzung dazu verwendet, eine reale Adresse bereitzustellen, SCHRITT 808, und die Verarbeitung fährt mit dem Speichern fort, SCHRITT 810.
  • Zu der ABFRAGE 804 zurückkehrend, wird jedoch, wenn kein Zwischenspeichereintrag vorhanden ist, ein Zwischenspeichereintrag entsprechend der vorliegenden Seitenumsetzung dadurch erstellt, dass zumindest ein relevanter Seitentabelleneintrag aus dem Speicher abgerufen wird, SCHRITT 814. Anschließend werden die Gültigkeit des Seitentabelleneintrags und die Schreibberechtigungen überprüft, um den neuesten Lese-(Schreib-Status zu gewinnen, SCHRITT 816. In der Annahme, dass der Seitentabelleneintrag gültig ist und dass eine Schreibberechtigung erteilt worden ist, bildet der Änderungsanzeiger in dem Zwischenspeichereintrag, der der vorliegenden Seitenumsetzung entspricht, dies ab, z. B. C = 1 (optional werden auch der Referenzanzeiger und/oder sonstige Anzeiger in dem TLB gesetzt), SCHRITT 818. Bei einer Ausführungsform wird eine Schreibaktualisierung in eine Speicherungswarteschlange eingestellt, um zumindest das C-Bit so zu aktualisieren, dass es angibt, dass die vorliegende Seite modifiziert worden ist, d. h. C = 1.
  • Anschließend wird der aktualisierte Zwischenspeichereintrag einem oder mehreren Zwischenspeichern (z. B. dem TLB und/oder [RAT) hinzugefügt, SCHRITT 820, und die Verarbeitung fährt mit SCHRITT 808 fort. Bei der obigen Verarbeitung wird das Speichern jedoch nicht fortgesetzt, wenn entweder der Seitentabelleneintrag ungültig ist oder keine Schreibberechtigung erteilt wird, und optional wird ein Fehler angezeigt.
  • Zu der ABFRAGE 806 zurückkehrend, wird, wenn der Zwischenspeichereintrag nicht zeigt, dass der Änderungsanzeiger für einen Schreibvorgang gesetzt ist, der Zwischenspeichereintrag invalidiert (z. B. der V-Anzeiger in dem Zwischenspeichereintrag wird auf 0 gesetzt, oder der Eintrag wird gelöscht) oder ignoriert, SCHRITT 830, und die Verarbeitung fährt mit SCHRITT 814 fort.
  • Über die obige Speicherungsverarbeitung hinaus kann auch eine sonstige Verarbeitung vor oder nach einer RCsync-Anweisung durchgeführt werden. Das heißt, Speicheranweisungen (z. B. Laden, Speichern usw.) können vor oder nach einer RCsync ausgegeben werden. Bei einem bestimmten Beispiel wird bei Implementierungen, die den Vorabzugriff auf Zwischenspeichereinträge wie zum Beispiel TLB- oder ERAT-Einträge zulassen, eine Logik durchgeführt, um den Referenzanzeiger zu überprüfen, um die Gültigkeit eines Zwischenspeichereintrags bei der ersten Verwendung zu bestätigen. Bei sonstigen Ausführungsformen wird auf die TLB-Einträge nicht vor ihrer ersten Verwendung vorab zugegriffen, um eine Speicheradressumsetzung entsprechend einer Speicheranweisung durchzuführen.
  • Eine Ausführungsform einer Logik zum Verarbeiten einer Speicheranweisung wird unter Bezugnahme auf 9 beschrieben. In einem Beispiel wird diese Logik verwendet, wenn ein Vorabzugriff auf Zwischenspeichereinträge (z. B. TLB-Einträge, ERAT-Einträge usw.) zulässig ist, ohne den Referenzanzeiger zu setzen (z. B. R = 1).
  • Unter Bezugnahme auf 9 empfängt zunächst ein Prozessor eine Speicheranweisung, auf eine ausgewählte Seite des Speichers zuzugreifen, SCHRITT 900. Auf Grundlage des Empfangens der Speicheranweisung führt der Prozessor eine Suche in einem Zwischenspeicher wie zum Beispiel einem TLB oder einem ERAT durch, um zu ermitteln, ob eine Adressumsetzung, die der Seite entspricht, auf die zuzugreifen ist, zuvor zwischengespeichert worden ist, SCHRITT 902. Wenn ein Eintrag, der der Seite des Speichers entspricht, auf die zuzugreifen ist, in dem Zwischenspeicher vorhanden ist, ABFRAGE 904, wird eine weitere Ermittlung dahingehend durchgeführt, ob der Zwischenspeichereintrag angibt, dass der Referenzanzeiger aktualisiert (z. B. R = 1) worden ist, wodurch angegeben wird, dass auf diese Seite zuvor zugegriffen worden ist, ABFRAGE 906. Wenn angegeben wird, dass der Referenzanzeiger gesetzt worden ist, wird der Zwischenspeichereintrag dazu verwendet, eine Adressumsetzung durchzuführen und eine reale Adresse zu berechnen, die für den Speicherzugriff zu verwenden ist, SCHRITT 908. Anschließend fährt die Verarbeitung mit der Speicheranweisung fort, SCHRITT 910.
  • Zu der ABFRAGE 904 zurückkehrend, wird, wenn kein Zwischenspeichereintrag vorhanden ist, ein Zwischenspeichereintrag dadurch erstellt, dass der relevante Seitentabelleneintrag aus dem Speicher abgerufen wird, SCHRITT 914. Anschließend werden die Gültigkeit des Seitentabelleneintrags und optional die Schreibberechtigungen überprüft, wenn es sich bei der Speicheranweisung um eine Speicherungsanweisung handelt, um den neuesten Status zu gewinnen, SCHRITT 916. In der Annahme, dass der Seitentabelleneintrag gültig ist, wird der Referenzanzeiger aktualisiert, z. B. R = 1 (und optional der Änderungsanzeiger und/oder sonstige Anzeiger des Seitentabelleneintrags), SCHRITT 918. Bei zumindest einer Ausführungsform wird eine Schreibaktualisierung in eine Speicherungswarteschlange eingestellt, um zumindest das R-Bit so zu aktualisieren, dass es angibt, dass die vorliegende Seite modifiziert worden ist, d. h. R = 1. Bei einer weiteren Ausführungsform kann in Reaktion darauf, dass eine Speicherungsoperation durchgeführt wird, C = 1 auch gleichzeitig aktualisiert werden.
  • Der aktualisierte Zwischenspeichereintrag, der der Adressumsetzung für die vorliegende Seitenadresse entspricht, wird anschließend einem oder mehreren Zwischenspeichern (z. B. TLB und/oder ERAT) hinzugefügt, und der Referenzanzeiger (und/oder optional einer oder mehrere sonstige Anzeiger) wird als aktualisiert angegeben, SCHRITT 920. Dann fährt die Verarbeitung mit Schritt 908 fort. Bei der obigen Verarbeitung wird die Speicheranweisung jedoch nicht fortgesetzt, wenn der Seitentabelleneintrag ungültig ist, und optional wird ein Fehler angezeigt.
  • Zu der ABFRAGE 906 zurückkehrend, wird, wenn der Zwischenspeichereintrag nicht zeigt, dass der Referenzanzeiger für einen Schreibvorgang gesetzt ist, der Zwischenspeichereintrag invalidiert oder ignoriert, SCHRITT 930, und die Verarbeitung fährt mit SCHRITT 914 fort.
  • Eine weitere Ausführungsform einer Logik, die einem Verarbeiten einer Speicheranweisung zugehörig ist, wird unter Bezugnahme auf 10 beschrieben. In einem Beispiel wird diese Logik verwendet, wenn ein Vorabzugriff auf Zwischenspeichereinträge (z. B. TLB-Einträge, ERAT-Einträge usw.) zulässig ist, ohne den Referenzanzeiger zu setzen (z. B. R = 1).
  • Unter Bezugnahme auf 10 empfängt zunächst ein Prozessor eine Speicheranweisung, auf eine ausgewählte Seite des Speichers zuzugreifen, SCHRITT 1000. Auf Grundlage des Empfangens der Speicheranweisung führt der Prozessor eine Suche in einem Zwischenspeicher wie zum Beispiel einem TLB oder einem ERAT durch, um zu ermitteln, ob die Seite, auf die zuzugreifen ist, zuvor zwischengespeichert worden ist, SCHRITT 1002. Wenn ein Eintrag, der der Seite des Speichers entspricht, auf die zuzugreifen ist, in dem Zwischenspeicher vorhanden ist, ABFRAGE 1004, wird eine weitere Ermittlung dahingehend durchgeführt, ob der Zwischenspeichereintrag angibt, dass der Referenzanzeiger aktualisiert (z. B. R = 1) worden ist, wodurch angegeben wird, dass auf diese Seite zuvor zugegriffen worden ist, ABFRAGE 1006. Wenn angegeben wird, dass der Referenzanzeiger gesetzt worden ist, wird der Zwischenspeichereintrag dazu verwendet, eine Adressumsetzung durchzuführen und eine reale Adresse zu berechnen, die für den Speicherzugriff zu verwenden ist, SCHRITT 1008.
  • Anschließend fährt die Verarbeitung mit der Speicheranweisung fort, SCHRITT 1010. Des Weiteren wird bei einer Ausführungsform gegebenenfalls die Operation validiert, SCHRITT 1012.
  • Zu der ABFRAGE 1004 zurückkehrend, wird, wenn kein Zwischenspeichereintrag vorhanden ist, ein Zwischenspeichereintrag dadurch erstellt, dass der relevante Seitentabelleneintrag aus dem Speicher abgerufen wird, SCHRITT 1014. Anschließend werden die Gültigkeit des Seitentabelleneintrags und optional die Schreibberechtigungen überprüft, wenn es sich bei der Speicheranweisung um eine Speicherungsanweisung handelt, um den neuesten Status zu gewinnen, SCHRITT 1016. In der Annahme, dass der Seitentabelleneintrag gültig ist, wird der Referenzanzeiger aktualisiert, z. B. R = 1 (und optional der Änderungsanzeiger und/oder sonstige Anzeiger des Seitentabelleneintrags), SCHRITT 1018.
  • Der aktualisierte Zwischenspeichereintrag wird anschließend einem oder mehreren Zwischenspeichern (z. B. TLB und/oder ERAT) hinzugefügt, und der Referenzanzeiger (und/oder optional einer oder mehrere sonstige Anzeiger) werden als aktualisiert angegeben, SCHRITT 1020. Dann fährt die Verarbeitung mit Schritt 1008 fort. Bei der obigen Verarbeitung wird die Speicheranweisung jedoch nicht fortgesetzt, wenn der Seitentabelleneintrag ungültig ist, und optional wird ein Fehler angezeigt.
  • Zu der ABFRAGE 1006 zurückkehrend, wird, wenn der Zwischenspeichereintrag den Referenzanzeiger nicht als aktualisiert anzeigt, der Seitentabelleneintrag aus dem Speicher abgerufen, der für die Validierung zu verwenden ist, was parallel zu einem oder mehreren SCHRITTEN 1008 und 1010 verläuft, die einen zwischengespeicherten Eintrag dazu verwenden, Verarbeitungsschritte parallel zu einer gleichzeitigen Validierung eines Seiteneintrags durchzuführen, SCHRITT 1030. Wenn der Zwischenspeichereintrag zum Beispiel den Referenzanzeiger nicht als aktualisiert anzeigt, initiiert der Prozessor eine parallele Validierung (die die SCHRITTE 1014, 1016, 1018, 1020 zusammenfassen und die SCHRITTE 1008 und 1010 parallel durchführen würde). Wenn es sich um einen gültigen Eintrag handelte, könnte anschließend die Verarbeitung validiert werden (d. h. es sollte zugelassen werden, dass die in den SCHRITTEN 1008 und 1010 durchgeführten Aufgaben abgeschlossen werden). Anschließend geht die Verarbeitung zu SCHRITT 1012 über, in dem die Operation validiert wird, wenn der in SCHRITT 1002 gefundene zwischengespeicherte Eintrag aktiviert ist.
  • Gemäß einem oder mehreren Aspekten führt ein Prozessor eine Synchronisationsoperation durch, um anstehende Aktualisierungen von Seitentabelleneinträgen früher als später zu erzwingen. Das heißt, in schwach geordneten Speichersystemen können die Seitentabelleneinträge letztendlich aktualisiert werden, es gibt jedoch keine Garantie hinsichtlich des Zeitpunkts, zu dem sie aktualisiert werden. Auf diese Weise erzwingt die Synchronisationsverarbeitung die Aktualisierungen auf Grundlage des Empfangs der Synchronisationsanweisung. Des Weiteren wird bei einer Implementierung die Synchronisation durchgeführt, ohne dass einzelne Zwischenspeicher- und/oder Seitentabelleneinträge invalidiert werden müssen.
  • Es gibt zahlreiche Situationen, in denen ein solcher Synchronisationsprozess verwendet werden kann, darunter Massenoperationen, die an Speicherseiten durchgeführt werden, wie zum Beispiel eine Neukonfiguration, ein Verwalten einer Liste von freien Speicherseiten und ein Durchführen eines Löschvorgangs, wenn ein Prozess endet. Die Synchronisation wird durchgeführt, um Aktualisierungen der Seitentabelleneinträge zu erzwingen und stellt auf diese Weise eine Selektivität bei Einträgen bereit, die zu invalidieren sind (z. B. C = 1), statt sämtliche Einträge zu invalidieren.
  • Eine beispielhafte Situation, in der die Synchronisationsoperation verwendet werden kann, ist ein Neukonfigurieren eines Adressraums, wie unter Bezugnahme auf 11 beschrieben wird. Unter Bezugnahme auf 11 gibt ein lokaler Prozessor zunächst eine RCsync-Operation aus, um das Aktualisieren von Seitentabelleneinträgen mit jeglichen anstehenden R/C-Aktualisierungen (oder sonstigen Statusaktualisierungen in sonstigen Beispielen) zu erzwingen, SCHRITT 1100. Anschließend führt jeder entfernt angeordnete Prozessor, der die RCsync-Anforderung von einem lokalen Prozessor empfängt, der eine RCsync-Anweisung durchführt, eine Synchronisationsoperation durch, wie hierin beschrieben. Parallel zu einer laufenden RCsync-Operation, SCHRITT 1100, fordert ein lokaler Prozessor jeden entfernt angeordneten Prozessor auf, ein massenhaftes Invalidieren einer Mehrzahl von Seitentabelleneinträgen in einem oder mehreren Zwischenspeichern entsprechend dem entfernt angeordneten Prozessor zum Beispiel mithilfe einer TLBIEL-Anweisung oder einer lokalen IPTE-Anweisung durchzuführen (z. B. einer IPTE-Anweisung, wenn die Funktion zur Bereinigung des lokalen TLB installiert ist und das LC-Bit in dem Feld M4 gleich eins ist), SCHRITTe 1102a bis 1102c. Als Beispiele beinhaltet das Invalidieren eines Eintrags ein Setzen eines Gültigkeitsanzeigers in dem Eintrag auf einen bestimmten Wert (z. B. V = 0); ein Löschen eines Eintrags; oder ein auf andere Weise Nichtverfügbarmachen des Eintrags; usw.
  • Anschließend an das Abschließen der durch den lokalen Prozessor angeforderten, entfernt angeordneten RCsync-Operation sendet jeder entfernt angeordnete Prozessor unabhängig davon, ob das lokale Invalidieren auf dem jeweiligen entfernt angeordneten Prozessor abgeschlossen ist, eine Meldung, SCHRITT 1103, an den lokalen Prozessor, die den Abschluss der RCsync-Operation angibt. Auf Grundlage dessen, dass der lokale Prozessor eine Meldung empfängt, dass die entfernt angeordneten Prozessoren die RCsync-Synchronisationsoperation abgeschlossen haben, fährt der lokale Prozessor damit fort, den Adressraum neu zu konfigurieren, indem er einen oder mehrere Seitentabelleneinträge in dem Speicher so aktualisiert, dass der Zustand eines neu konfigurierten Adressraums abgebildet wird, und indem er eine lokale Invalidierungsoperation an den Zwischenspeichereinträgen des Prozessors durchführt, SCHRITT 1104, sodass sichergestellt wird, dass keine Zwischenspeichereinträge C = veraltet auf dem lokalen Prozessor gespeichert sind, die dem Adressraum vor der Neukonfiguration entsprechen. Wenn die entfernt angeordneten Prozessoren die Invalidierung abschließen, warten die entfernt angeordneten Prozessoren darauf, dass die Adressneukonfiguration abgeschlossen wird, z. B. über den SCHRITT 1106. Anschließend kann die Ausführung auf dem lokalen und den entfernt angeordneten Prozessoren neu gestartet werden, SCHRITT 1106. Durch Durchführen von RCsync braucht der lokale Prozessor bei einer Ausführungsform gemäß einem oder mehreren Aspekten nicht zu warten, bis die lokalen Invalidierungen auf den entfernt angeordneten Prozessoren abgeschlossen worden sind, sondern kann stattdessen parallel fortfahren, nachdem er eine Meldung empfangen hat, dass die entfernt angeordneten Prozessoren die RCsync-Synchronisationsverarbeitung abgeschlossen haben, und folglich enthalten in dem Speicher gespeicherte Seitentabelleneinträge den neuesten Zustand der R- und C-Statusanzeiger wie auch optional sonstige Daten, die in einem PTE enthalten sind, der durch entfernt angeordnete Prozessoren aktualisiert wird und mit einer RCsync synchronisiert werden kann.
  • In einem bestimmten Beispiel kann eine Synchronisationsoperation dazu verwendet werden, einen Adressraum so neu zu konfigurieren, dass er einem schreibgeschützten Adressraum entspricht. Gemäß einer Ausführungsform sind die Seiten, in die geschrieben worden ist, bekannt, sodass sie verfolgt, auf Platte geschrieben usw, werden können. Als spezifische Beispiele wird ein Adressraum für Techniken wie zum Beispiel eine Partitionsmigration und eine Verwendung von Copy-on-Write-Techniken schreibgeschützt. Copy-on-Write wird zum Beispiel für eine fork()-Operation in Unix-Betriebssystemen wie auch für sonstige Operationen verwendet. Bei einer solchen Ausführungsform wird Copy-on-Write dazu verwendet, einen großen Speicherbereich zu kopieren, ohne eine lange anfängliche Latenzzeit zu verursachen, die einem Duplizieren sämtlicher Speicherseiten zugehörig ist, die einem solchen Bereich entsprechen. Bei einer Copy-on-Write-Technik wird als ein Beispiel etwa ein gesamter Speicher schreibgeschützt, wodurch ermöglicht wird, dass eine Mehrzahl von Prozessen die Speicherseiten gemeinsam nutzt. Wenn ein bestimmter Prozess auf eine bestimmte Seite seiner Kopie des Speicherbereichs schreiben möchte, kopieren die Systemfunktionen, die Copy-on-Write implementieren, diese Seite und machen sie beschreibbar, bevor dem Prozess ermöglicht wird, mit dem Schreiben auf eine solche Seite fortzufahren.
  • Eine Ausführungsform der Logik, Seiten schreibgeschützt zu machen, wird unter Bezugnahme auf 12 beschrieben. In einem Beispiel aktualisiert der lokale Prozessor (d. h. derjenige, der den Adressraum schreibgeschützt machen möchte) die Seitentabelleneinträge, die den Speicherseiten entsprechen, die schreibgeschützt zu machen sind, so, dass sie den Schreibschutz angeben (z. B. werden Seitenschutz-Bits von 4, die mit pp markiert sind, d. h. die Bits 0, 62 und 63 des zweiten Doppelwortes eines Seitentabelleneintrags, so gesetzt, dass Schreibvorgänge auf eine betreffende Seite unzulässig sind), SCHRITT 1200, und führt anschließend eine Synchronisationsoperation wie zum Beispiel RCsync so aus, dass sämtliche Referenz und Änderungsanzeiger synchronisiert werden (z. B. force out), für die möglicherweise Aktualisierungen momentan bis zu dem Punkt ausgeführt werden, an dem die RCsync-Operation ausgegeben wird, SCHRITT 1202.
  • Die entfernt angeordneten Prozessoren empfangen die RCsync-Operation, verarbeiten sie, wie oben beschrieben, SCHRITT 1204, und geben den Abschluss an, SCHRITT 1206. Eine sonstige entfernt durchgeführte Verarbeitung wird ebenfalls fortgesetzt, SCHRITT 1208.
  • Der lokale Prozessor empfängt die Meldungen über den Abschluss, und nachdem die Synchronisationsoperation durch die entfernt angeordneten Prozessoren abgeschlossen ist, verfügt der lokale Prozessor über eine korrekte Liste der Seiten, in die entfernt gespeichert worden ist (z. B. diejenigen mit C = 1). Des Weiteren können die entfernt angeordneten Prozessoren neue Seiten nicht für eine Speicherungsoperation verwenden, da die Seitentabelleneinträge auf schreibgeschützt gesetzt worden waren und auf diese Weise die zum Beispiel in 8 beschriebene Technik der Überprüfung des Änderungsanzeigers nicht bestehen.
  • Nun invalidiert der lokale Prozessor die Einträge in dem Adressumsetzungs-Zwischenspeicher, die Seitentabelleneinträgen entsprechen, die einen gesetzten Änderungsanzeiger (z. B. C = 1) aufweisen, SCHRITT 1210. Beispielsweise invalidiert der lokale Prozessor seine eigenen lokalen Einträge und überträgt eine Meldung an die entfernt angeordneten Prozessoren, die die entfernt angeordneten Prozessoren anweist, ihre eigenen zwischengespeicherten Einträge zu invalidieren. Diese zwischengespeicherten Seitentabelleneinträge entsprechen sämtlichen Seiten, die nach der Aktualisierung in SCHRITT 1200 noch durch entfernt angeordnete Prozessoren durch Schreiben aktualisiert werden dürfen (da Versuche zum Speichern in sonstige Seiten die Technik von 8 nicht bestehen werden), und stellen eine kleineren Satz von zu invalidierenden Seiten dar, als ohne das Vorhandensein korrekter R/C-Daten in sämtlichen Einträgen in Seitentabellen invalidiert werden müssten. Diese zwischengespeicherten Seitentabelleneinträge können entweder mithilfe von übertragenen globalen Hardware-Invalidierungsanweisungen wie zum Beispiel TLBIE oder IPTE oder mithilfe einer Software-Sequenz invalidiert werden, die ein Übertragen einer einzelnen Masseninvalidierungsanforderung (z. B. mithilfe einer Inter-Processor-Interrupt-Funktion) zusammen mit einer Software-koordinierten lokalen Zwischenspeicherinvalidierung auf jedem entfernt angeordneten Prozessor beinhaltet, z. B. mithilfe von TLBIEL-Anweisungen oder lokalen IPTE-Anweisungen in Reaktion auf eine Liste von zu invalidierenden Seiten. Darüber hinaus werden Seiten, für die ein Änderungsanzeiger gesetzt worden ist, verarbeitet, zum Beispiel die Seiten auf Platte geschrieben usw.
  • Bei einer weiteren Ausführungsform werden in einem ersten Aktualisierungsschritt für Seitentabelleneinträge, der SCHRITT 1200 entspricht, vor einem Durchführen einer RCsync sämtliche Seitentabelleneinträge auf ungültig aktualisiert, und in einem zweiten Verarbeitungs-SCHRITT 1210 werden Seitentabelleneinträge auf schreibgeschützt aktualisiert, um des Weiteren gleichzeitige Aktualisierungen von Seitentabelleneinträgen zu synchronisieren, die durch entfernt angeordnete Prozessoren in Reaktion auf eine RCsync durchgeführt werden.
  • Eine weitere Ausführungsform der Logik, Seiten schreibgeschützt zu machen, wird unter Bezugnahme auf 13 beschrieben. In einem Beispiel gibt der lokale Prozessor (d. h. derjenige, der den Adressraum schreibgeschützt machen möchte) eine erste Synchronisationsoperation wie zum Beispiel eine RCsync-Anweisung an die entfernt angeordneten Prozessoren aus, SCHRITT 1300. Die entfernt angeordneten Prozessoren empfangen die Synchronisationsoperation und verarbeiten sie, wie oben beschrieben, SCHRITT 1302, und senden anschließend Meldungen, die den Abschluss angeben, SCHRITT 1304. Des Weiteren wird die Verarbeitung auf den entfernt angeordneten Prozessoren fortgesetzt, SCHRITT 1305. (Bei einer weiteren Ausführungsform wird diese erste Synchronisationsoperation nicht durchgeführt, wie in 12 dargestellt.)
  • Auf Grundlage des Empfangens von Abschlussmeldungen von den entfernt angeordneten Prozessoren für die Synchronisationsoperation aktualisiert der lokale Prozessor die Seitentabelleneinträge entsprechend den Speicherseiten, die schreibgeschützt zu machen sind, so, dass sie schreibgeschützt angeben, und invalidiert Zwischenspeichereinträge, für die ein Änderungsanzeiger gesetzt ist (z. B. C = 1), wie oben beschrieben, und terminiert eine Verarbeitung für diese Seiten, SCHRITT 1306. Bei einer Ausführungsform eines Verarbeitens von modifizierten Seiten werden modifizierte Seiten in einen externen Speicher (z. B. wie etwa eine Festplatte oder einen Flash-Speicher) geschrieben. Anschließend wird eine zweite Synchronisationsoperation wie zum Beispiel RCsync durch den lokalen Prozessor ausgegeben, um sämtliche verbleibenden Aktualisierungen eines Status R und C von Seitentabellen zu synchronisieren (z. B. force out), die seit einer anfänglichen RCsync stattgefunden haben, SCHRITT 1300, die bis zum Zeitpunkt des Ausgebens der zweiten RCsync-Operation momentan ausgeführt wurden, SCHRITT 1308.
  • Die entfernt angeordneten Prozessoren empfangen die RCsync-Operation und verarbeiten sie, wie oben beschrieben, SCHRITT 1310, und geben den Abschluss an, SCHRITT 1311. Eine sonstige entfernt durchgeführte Verarbeitung wird ebenfalls fortgesetzt, SCHRITT 1312. Nachdem die zweite Synchronisationsoperation durch die entfernt angeordneten Prozessoren abgeschlossen ist, verfügt der lokale Prozessor über eine korrekte Liste der Seiten, in die entfernt gespeichert worden ist (z. B. C = 1). Des Weiteren können die entfernt angeordneten Prozessoren neue Seiten nicht zum Speichern verwenden, da die Seitentabelleneinträge auf schreibgeschützt gesetzt worden waren und auf diese Weise die Technik der Überprüfung des Änderungsanzeigers nicht bestehen.
  • Der lokale Prozessor invalidiert die Zwischenspeichereinträge, für die ein Änderungsanzeiger (z. B. C = 1) gesetzt worden ist, wie hierin beschrieben, SCHRITT 1314. Gemäß einem oder mehreren Aspekten entspricht dieser zweite Verarbeitungsschritt, SCHRITT 1314, einer Verarbeitung jeglicher Seiten, die zwischen der ersten und der zweiten RCsync modifiziert worden sind. Bei dieser Ausführungsform kann die Mehrzahl von Aktualisierungen während SCHRITT 1306 initiiert werden, und Invalidierungen und sonstige Verarbeitungen (wie zum Beispiel E/A-Operationen, die einem Schreiben von modifizierten Seiten in einen externen Speicher entsprechen) können das Verarbeiten der RCsync überlappen, SCHRITT 1308. Darüber hinaus werden Seiten, für die ein Änderungsanzeiger gesetzt worden ist, verarbeitet, zum Beispiel die Seiten auf Platte geschrieben usw.
  • Wiederum können Invalidierungen entweder durch Ausführen von TLBIE oder IPTE zusammen mit einer Hardware-Übertragung von Invalidierungsanforderungen oder durch eine Software-synchronisierte lokale Invalidierung durchgeführt werden, die auf jedem des lokalen und der entfernt angeordneten Prozessoren durchgeführt wird.
  • Bei zumindest einer alternativen Ausführungsform gibt SCHRITT 1306 Seitentabelleneinträge im Speicher an, die dadurch zu invalidieren sind, dass ein Gültigkeitsanzeiger auf ungültig gesetzt wird, und ein zweiter SCHRITT 1314 aktualisiert Seitentabelleneinträge auf einen schreibgeschützten Zustand, z. B. um Aktualisierungen von Seitentabelleneinträgen weiter zu synchronisieren.
  • Bei sonstigen Ausführungsformen zum Schreibschützen von Seiten können zunächst die Seitentabelleneinträge invalidiert werden, und anschließend können die Einträge als schreibgeschützt markiert werden.
  • Eine weitere Verwendung einer Synchronisationsoperation besteht darin, eine Liste der freien Speicherseiten zu aktualisieren. Bei Systemen, die virtuellen Speicher verwenden, muss das Betriebssystem eine Liste der freien Speicherseiten führen, die verwendet wird, wenn zum Beispiel eine Seite einzulagern ist, ein Puffer zuzuordnen ist oder eine neue Seite durch eine Anwendung angefordert wird. Ein Ziel beim Führen einer Liste der freien Seiten besteht darin, selten verwendete Seiten auf der Liste der freien Seiten zu platzieren. Folglich sucht das Betriebssystem Seiten, die R = 0 aufweisen, oder untersucht zusätzliche Referenzdaten für eine differenziertere Verarbeitung. Bei einer Ausführungsform entsprechen die zusätzlichen Daten einem Zeitstempel einer letzten Referenz (z. B. eines Lese- oder Schreibzugriffs auf eine Seite) oder einem Bit-Vektor, der angibt, ob eine Referenz in jeder einer Mehrzahl von Zeitscheiben stattgefunden hat, wobei jedes Bit eines Bit-Vektors einer solchen Zeitscheibe entspricht.
  • Eine Ausführungsform eines Verwendens einer Synchronisationsoperation zum Verwalten einer Liste der freien Seiten wird unter Bezugnahme auf 14 beschrieben. Zunächst gibt ein lokaler Prozessor (z. B. der Prozessor, der die Liste der freien Seiten verwaltet) eine erste Synchronisationsoperation wie zum Beispiel RCsync aus, um die neuesten Daten zu erhalten, SCHRITT 1400. Die entfernt angeordneten Prozessoren, die die Synchronisationsanforderung empfangen, verarbeiten sie, wie oben beschrieben, SCHRITT 1402, und geben anschließend den Abschluss an, SCHRITT 1404. Zusätzlich wird eine entfernt durchgeführte Verarbeitung fortgesetzt, SCHRITT 1406. (Bei einer weiteren Ausführungsform wird diese erste Synchronisationsoperation nicht durchgeführt.) Auf Grundlage des Empfangens von Abschlussmeldungen von sämtlichen entfernt angeordneten Prozessoren, die die Synchronisationsoperation durchführen sollten, führt der lokale Prozessor eine Reihe von Aufgaben durch, SCHRITT 1408. Zu diesen Aufgaben zählen zum Beispiel ein Identifizieren einer oder mehrerer Seiten für die Liste der freien Seiten wie etwa diejenigen Seiten, in denen der Referenzanzeiger nicht gesetzt ist (z. B. R = 0); optional ein Terminieren einer oder mehrerer Seiten für ein Schreiben auf Platte, wenn der Änderungsanzeiger gesetzt ist (z. B. C = 1); ein Setzen einer oder mehrerer Seiten in dem Seitentabelleneintrag auf ungültig (oder ein Markieren dieser als auf der Liste der freien Seiten befindlich); und/oder ein Durchführen einer Invalidierung für jegliche Zwischenspeicher-Adressumsetzungseinträge, die den Seiten entsprechen, die invalidiert werden müssen, wie hierin beschrieben (z. B. mithilfe von IPTE, TLBIE).
  • Anschließend gibt der lokale Prozessor eine zweite Synchronisationsoperation wie zum Beispiel RCsync an die entfernt angeordneten Prozessoren aus, SCHRITT 1410. Die entfernt angeordneten Prozessoren verarbeiten die zweite Synchronisationsoperation, SCHRITT 1412, und geben den Abschluss an, SCHRITT 1414. Des Weiteren wird eine sonstige entfernt durchgeführte Verarbeitung fortgesetzt, SCHRITT 1416.
  • Nachdem die Synchronisationsoperation durch die entfernt angeordneten Prozessoren abgeschlossen worden ist, die die Synchronisationsoperation durchzuführen haben, verfügt der lokale Prozessor über eine korrekte Liste der entfernt verwendeten Seiten. Nun invalidiert der lokale Prozessor lediglich die Seitentabelleneinträge und/oder die Zwischenspeichereinträge, für die ein Änderungs- oder Referenzanzeiger (z. B. C = 1 oder R = 1) gesetzt worden ist, wie hierin beschrieben, SCHRITT 1418. Hierbei handelt es sich um eine Bereinigung für Seiten, die sich von der ersten Synchronisationsoperation zu der zweiten Synchronisationsoperation geändert haben. Bei einer Ausführungsform müssen nur Seiten invalidiert werden, von denen bekannt ist, dass sie von einem oder mehreren Prozessoren referenziert worden sind und dass sie sich möglicherweise in einem oder mehreren Umsetzungszwischenspeichern befinden, wodurch die Notwendigkeit für Invalidierungen von Seiten verringert wird. Darüber hinaus werden Seiten, für die ein Änderungsanzeiger gesetzt worden ist, verarbeitet, zum Beispiel die Seiten auf Platte geschrieben usw.
  • Ein weiteres Beispiel, bei dem eine Synchronisationsverarbeitung verwendet wird, ist ein Löschvorgang eines Prozesses, der auftritt, wenn ein Prozess beendet wird. Bei einem Löschvorgang eines Prozesses sind sämtliche Seiten dieses Prozesses zu invalidieren oder auf einer Liste der freien Seiten zu platzieren, wenn dieser Prozess der einzige Benutzer ist. Darüber hinaus wird bei einem Löschvorgang eines Prozesses eine Rückschreibverarbeitung initiiert, wenn eine Seite zurückzuschreiben ist.
  • Eine Ausführungsform eines Verwendens einer Synchronisationsoperation zum Durchführen eines Löschvorgangs eines Prozesses wird unter Bezugnahme auf 15 beschrieben. Zunächst gibt ein lokaler Prozessor (z. B. der Prozessor, der den Löschvorgang des Prozesses durchführt) eine erste Synchronisationsoperation wie zum Beispiel RCsync aus, um die neuesten Daten zu erhalten, SCHRITT 1500. Die entfernt angeordneten Prozessoren, die die Synchronisationsanforderung empfangen, verarbeiten sie, wie oben beschrieben, SCHRITT 1502, und geben anschließend den Abschluss an, SCHRITT 1504. Zusätzlich wird eine entfernt durchgeführte Verarbeitung fortgesetzt, SCHRITT 1506. (Bei einer weiteren Ausführungsform wird diese erste Synchronisationsoperation nicht durchgeführt.) Auf Grundlage des Empfangens von Abschlussmeldungen von sämtlichen entfernt angeordneten Prozessoren, die die Synchronisationsoperation durchführen sollten, führt der lokale Prozessor eine Reihe von Aufgaben durch, SCHRITT 1508. Zu diesen Aufgaben zählen zum Beispiel für jede Seite des Prozesses, wenn die Seite nur in dem Prozess verwendet wird, die Seite auf ungültig zu setzen; optional ein Invalidieren von zwischengespeicherten Adressumsetzungen für jegliche Seiten durchzuführen, die invalidiert werden müssen, wie hierin beschrieben (z. B. mithilfe von IPTE, TLBIE); und wenn eine Seite auf Platte zurückzuschreiben ist, eine Rückschreiboperation zu initiieren.
  • Anschließend gibt der lokale Prozessor eine zweite Synchronisationsoperation wie zum Beispiel RCsync an die entfernt angeordneten Prozessoren aus, SCHRITT 1510. Die entfernt angeordneten Prozessoren verarbeiten die zweite Synchronisationsoperation, SCHRITT 1512, und geben den Abschluss an, SCHRITT 1514. Des Weiteren wird eine sonstige entfernt durchgeführte Verarbeitung fortgesetzt, SCHRITT 1516.
  • Nachdem die Synchronisationsoperation durch die entfernt angeordneten Prozessoren abgeschlossen worden ist, die die Synchronisation durchzuführen haben, verfügt der lokale Prozessor über eine korrekte Liste der entfernt verwendeten Seiten. Nun invalidiert der lokale Prozessor lediglich die Seitentabelleneinträge und/oder die Zwischenspeichereinträge, für die ein Änderungs- oder Referenzanzeiger (z. B. C = 1 oder R = 1) gesetzt worden ist, SCHRITT 1518, wie hierin beschrieben. Hierbei handelt es sich um eine Bereinigung für Seiten, die sich von der ersten Synchronisationsoperation zu der zweiten Synchronisationsoperation geändert haben. Darüber hinaus werden Seiten, für die ein Änderungsanzeiger gesetzt worden ist, verarbeitet, zum Beispiel die Seiten auf Platte geschrieben usw.
  • Hierin wird eine Synchronisationsfunktionalität ausführlich beschrieben, die durch eine Reihe von Techniken verwendet werden kann, um die neuesten Statusdaten für Seitentabelleneinträge zu gewinnen. In einem Beispiel verwendet eine Synchronisationsoperation eine RCsync-Anweisung, die sicherstellt, dass sämtliche Aktualisierungen von dynamisch aktualisierten Abschnitten eines Seitentabelleneintrags abgeschlossen sind, die vor der Ausführung der RCsync in einem Mehrprozessorsystem stattgefunden haben. Bei einer Ausführungsform stellt eine einzige RCsync sicher, dass alle Arten von Aktualisierungen abgeschlossen sind; und bei einer weiteren Ausführungsform bietet RCsync zusätzliche Parameter, um bestimmte Felder (z. B. aktualisiere Felder C, nicht jedoch R, usw.) anzugeben. Es sind zahlreiche Varianten möglich.
  • Bei weiteren Ausführungsformen kann RCsync durch Ausführen einer Sequenz von Anweisungen und/oder durch Schreiben eines oder mehrerer Steuerregister angegeben werden. Sonstige Varianten sind ebenfalls möglich.
  • Bei einer Ausführungsform aktualisiert RCsync sämtliche Seitentabelleneinträge, die zu aktualisieren sind, auf Grundlage anstehender Aktualisierungen in den Zwischenspeichereinträgen, die zum Zeitpunkt des Empfangens der RCsync identifiziert sind, mithilfe einer einzelnen Anweisung und ohne die Zwischenspeichereinträge zu invalidieren (d. h. indem ermöglicht wird, dass die Zwischenspeichereinträge gültig bleiben).
  • Aktuelle Ansätze zum Empfangen von aktuellen R/C-Anzeigern erfordern ein invalidieren (z. B. TLBIE) pro PTE. Gemäß einem oder mehreren Aspekten kann eine einzige Übertragung R/C (und/oder sonstige PTE-Statusdaten) aktualisieren und die Verarbeitung beschleunigen. Bei einem einzigen Umlauf zu jedem entfernt angeordneten Prozessor werden zum Beispiel sämtliche R/C-Aktualisierungen, die vor dem Durchführen der RCsync anstehen, in den Speicher festgeschrieben. Diese Synchronisationsverarbeitung kann zusammen mit einer TLB-Invalidierung auf Grundlage eines Inter-Prozessor-Interrupt (IPI) verwendet werden, der einzelne Software-Anforderungen zum Durchführen von lokalen TLB-Invalidierungen verwendet.
  • Gemäß einem oder mehreren Aspekten wird ein Synchronisationsprozess bereitgestellt, der einer Datenverarbeitungsumgebung mit einem schwach geordneten Speicher, die verzögerte R/C-Aktualisierungen aufweist (d. h. Datenverarbeitungsumgebungen, die ohne zusammenhängende Aktualisierungen insofern konfiguriert sind, als Aktualisierungen nicht in einer spezifischen Zeitspanne garantiert sind), ermöglicht, zum Beispiel Massenherabstufungen, Invalidierungen usw. lokal durchzuführen.
  • Wenngleich in einer Reihe von Beispielen hierin eine Seitentabelle aktualisiert wird, können ein oder mehrere Aspekte für sonstige Adressumsetzungsstrukturen gelten. Des Weiteren kann auf sonstige, andere Einheiten des Speichers als Seiten zugegriffen und/oder in diese gespeichert werden. Bei der Verwendung von Seiten und Seitentabellen handelt es sich lediglich um Beispiele. Des Weiteren kann eine Seite eines Speichers eine beliebige Größe aufweisen, darunter 4 K oder mehr oder weniger als 4 K.
  • Unter Bezugnahme auf 16 beinhaltet ein Computerprogrammprodukt 1600 in einem Beispiel etwa ein oder mehrere nichttransitorische, computerlesbare Speichermedien 1602 zum Speichern eines/einer/von computerlesbaren Programmcodemittels, -logik und/oder -anweisungen 1604 darauf, um eine oder mehrere Ausführungsformen bereitzustellen und zu vereinfachen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) beinhalten, auf dem sich computerlesbare Programmanweisungen befinden, die bewirken, dass ein Prozessor Aspekte der vorlegenden Erfindung ausführt.
  • Bei dem computerlesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit aufrechterhalten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder um eine beliebige geeignete Kombination aus Obigen handeln, ohne auf diese beschränkt zu sein. Eine nicht erschöpfende Liste konkreterer Beispiele für das computerlesbare Speichermedium beinhaltet folgende: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (random access memory, RAM), einen Festwertspeicher (read-only memory, ROM), einen löschbaren, programmierbaren Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (static random access memory, SRAM), einen tragbaren Compact-Disk-Festwertspeicher (CD-ROM), eine digitale, vielseitige Scheibe (digital versatile disk, DVD), einen Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Nut, auf denen Anweisungen aufgezeichnet sind, oder eine beliebige geeignete Kombination aus Obigen. So, wie dieser Begriff hierin verwendet wird, ist ein computerlesbares Speichermedium nicht als per se transitorische Signale auszulegen, wie zum Beispiel Funkwellen oder sonstige sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder sonstige Übertragungsmedien ausbreiten (z. B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch eine Leitung übertragen werden.
  • Die hierin beschriebenen computerlesbaren Programmanweisungen können von einem computerlesbaren Speichermedium über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrs-Netzwerk und/oder ein drahtloses Netzwerk auf jeweilige Datenverarbeitungs-Verarbeitungseinheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragungssysteme, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zum Speichern in einem computerlesbaren Speichermedium innerhalb der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei computerlesbaren Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, Anweisungen einer Anweisungssatzarchitektur (instruction-set-architecture, ISA), Maschinenanweisungen, maschinenabhängige Anweisungen, Microcode, Firmware-Anweisungen, Zustandseinstelldaten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sind, darunter in einer objektorientierten Programmiersprache wie zum Beispiel Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie etwa der Programmiersprache „C” oder ähnlichen Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden. Bei einigen Ausführungsformen können elektronische Schaltungen wie zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmanweisungen durch Einsetzen von Zustandsdaten der computerlesbaren Programmanweisungen zum Anpassen der elektronischen Schaltungen so ausführen, dass Aspekte der vorliegenden Erfindung durchgeführt werden.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch computerlesbare Programmanweisungen implementiert werden kann/können.
  • Diese computerlesbaren Programmanweisungen können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass das computerlesbare Speichermedium, in dem Anweisungen gespeichert sind, einen Herstellungsgegenstand (article of manufacture) aufweist, der Anweisungen beinhaltet, die Aspekte der Funktion/des Vorgangs implementieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
  • Die computerlesbaren Programmanweisungen können außerdem so auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder eine sonstige Einheit geladen werden, dass sie bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder einer sonstigen Einheit so ausgeführt wird, dass ein computerimplementierter Prozess erzeugt wird, sodass die auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder einer sonstigen Einheit ausgeführten Anweisungen die in dem Block oder den Blöcken des Ablaufplans/der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge implementieren.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren der angegebenen logischen Funktion(en) aufweist. Bei einigen alternativen Implementierungen können die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf Grundlage von Hardware implementiert werden können, die die angegebenen Funktionen oder Vorgänge ausführen oder Kombinationen von Spezial-Hardware und Computeranweisungen ausführen.
  • Zusätzlich zu Obigem können ein oder mehrere Aspekte durch einen Diensteanbieter, der eine Verwaltung von Kundenumgebungen anbietet, bereitgestellt, angeboten, implementiert, verwaltet, gepflegt usw. werden. Der Diensteanbieter kann zum Beispiel einen Computercode und/oder eine Computerinfrastruktur erstellen, verwalten, unterstützen usw., die einen oder mehrere Aspekte für einen oder mehrere Kunden ausführt. Im Gegenzug kann der Diensteanbieter eine Vergütung vom Kunden beispielsweise im Rahmen eines Abonnementvertrags und/oder einer Honorarvereinbarung erhalten. Zusätzlich oder alternativ kann der Diensteanbieter eine Vergütung aus dem Verkauf von Werbeinhalten an einen oder mehrere Dritte erhalten.
  • In einem Aspekt kann eine Anwendung zum Durchführen einer oder mehrerer Ausführungsformen implementiert werden. Beispielsweise weist das Implementieren einer Anwendung ein Bereitstellen einer Computerinfrastruktur auf, die in der Lage ist, eine oder mehrere Ausführungsformen auszuführen.
  • Als weiterer Aspekt kann eine Datenverarbeitungsinfrastruktur implementiert werden, die ein Einbinden eines computerlesbaren Codes in ein Datenverarbeitungssystem aufweist, wobei der Code zusammen mit dem Datenverarbeitungssystem in der Lage ist, eine oder mehrere Ausführungsformen auszuführen.
  • Als noch weiterer Aspekt kann ein Prozess zum Einbinden einer Datenverarbeitungsinfrastruktur bereitgestellt werden, der ein Einbinden eines computerlesbaren Codes in ein Computersystem aufweist. Das Computersystem weist ein computerlesbares Medium auf, wobei das Computermedium eine oder mehrere Ausführungsformen aufweist. Zusammen mit dem Computersystem ist der Code in der Lage, eine oder mehrere Ausführungsformen auszuführen.
  • Oben sind zwar verschiedene Ausführungsformen beschrieben worden, diese dienen jedoch lediglich als Beispiele. Beispielsweise können Datenverarbeitungsumgebungen sonstiger Architekturen dazu verwendet werden, eine oder mehrere Ausführungsformen einzubeziehen und zu verwenden. Des Weiteren können verschiedene Anweisungen, Anweisungsformate, Anweisungsfelder und/oder Anweisungswerte verwendet werden. Noch weiter kann eine Synchronisation auf andere Weisen durchgeführt werden. Es sind zahlreiche Varianten möglich.
  • Des Weiteren können sonstige Typen von Datenverarbeitungsumgebungen profitieren und verwendet werden. Beispielsweise ist ein zum Speichern und/oder Ausführen von Programmcode geeignetes Datenverarbeitungssystem verwendbar, das zumindest zwei Prozessoren beinhaltet, die direkt oder indirekt durch einen Systembus mit Speicherelementen verbunden sind. Zu den Speicherelementen zählen zum Beispiel ein lokaler Speicher, der während einer tatsächlichen Ausführung des Programmcodes eingesetzt wird, ein Massenspeicher und ein Zwischenspeicher, die eine zeitweilige Speicherung von zumindest einem Teil des Programmcodes bereitstellen, um die Häufigkeit zu verringern, mit der der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe-/Ausgabe- oder E/A-Einheiten (zum Beispiel Tastaturen, Anzeigen, Zeigeeinheiten, DASD, ein Band, CDs, DVDs, USB-Speichersticks und sonstige Speichermedien usw., ohne auf diese beschränkt zu sein) können entweder direkt oder durch zwischengeschaltete E/A-Steuereinheiten mit dem System verbunden sein. Netzwerkadapter können ebenfalls so mit dem System verbunden sein, dass dem Datenverarbeitungssystem ermöglicht wird, durch zwischengeschaltete private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten verbunden zu werden. Modems, Kabelmodems und Ethernet-Karten sind nur einige der verfügbaren Arten von Netzwerkadaptern.
  • Bei einer weiteren Ausführungsform beziehen sich ein oder mehrere Aspekte auf Cloud-Computing. Es versteht sich von vornherein, dass, wenngleich diese Offenbarung eine ausführliche Beschreibung zu Cloud-Computing enthät, eine Implementierung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Vielmehr sind Ausführungsformen der vorliegenden Erfindung in der Lage, zusammen mit einem beliebigen sonstigen, heute bekannten oder künftig entwickelten Typ einer Datenverarbeitungsumgebung implementiert zu werden.
  • Bei Cloud-Computing handelt es sich um ein Modell zum Erbringen von Dienstleistungen, um einen praktischen, bedarfsgesteuerten Netzwerkzugriff auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungs-Ressourcen (z. B. Netzwerken, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuellen Maschinen und Diensten) zu ermöglichen, die schnell mit möglichst geringem Verwaltungsaufwand oder Zusammenwirken mit einem Anbieter des Dienstes bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann zumindest fünf Merkmale, zumindest drei Dienstmodelle und zumindest vier Implementierungsmodelle beinhalten.
  • Es handelt sich um folgende Merkmale:
    Selbstbedienung nach Bedarf: Ein Cloud-Kunde kann sich einseitig Datenverarbeitungsfunktionalität wie zum Beispiel Server-Zeit und Netzwerkspeicherplatz automatisch nach Bedarf bereitstellen, ohne dass ein menschliches Zusammenwirken mit dem Anbieter des Dienstes erforderlich ist.
  • Breiter Netzwerkzugriff: Funktionalität ist über ein Netzwerk verfügbar, und der Zugriff erfolgt über Standardmechanismen, die eine Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z. B. Mobiltelefone, Laptops und PDAs) unterstützen.
  • Ressourcen-Zusammenschluss: Die Datenverarbeitungs-Ressourcen des Anbieters werden mit verschiedenen physischen und virtuellen Ressourcen zusammengeschlossen, die nach Bedarf dynamisch zugewiesen und neu zugewiesen werden, um mehrere Kunden mithilfe eines mandantenfähigen Modells zu bedienen. Es besteht in einem gewissen Sinn Standortunabhängigkeit insofern, als der Kunde im Allgemeinen keine Kontrolle oder Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, den Standort jedoch möglicherweise auf einer höheren Abstraktionsebene (z. B. Land, Bundesstaat oder Rechenzentrum) bestimmen kann.
  • Schnelle Elastizität: Funktionalität kann für eine schnelle Vergrößerung schnell und elastisch, in einigen Fällen automatisch, bereitgestellt werden und schnell für eine schnelle Verkleinerung freigegeben werden. Dem Kunden erscheint die für die Bereitstellung verfügbare Funktionalität häufig unbegrenzt, und sie kann jederzeit in beliebigem Umfang erworben werden.
  • Gemessener Dienst: Cloud-Systeme steuern und optimieren automatisch die Ressourcen-Nutzung durch Verwenden einer Messfunktion auf einer gewissen Abstraktionsebene, die für den Typ des Dienstes geeignet ist (z. B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcen-Nutzung kann überwacht, gesteuert und gemeldet werden, wodurch Transparenz sowohl für den Anbieter als auch für den Kunden des genutzten Dienstes bereitgestellt wird.
  • Es handelt sich um folgende Dienstmodelle:
    Software as a Service (SaaS, Software als Dienstleistung): Die dem Kunden bereitgestellte Funktion besteht darin, die Anwendungen des Anbieters zu nutzen, die in einer Cloud-Infrastruktur ausgeführt werden. Auf die Anwendungen kann von verschiedenen Client-Einheiten durch eine Thin-Client-Schnittstelle wie zum Beispiel einen Web-Browser (z. B. E-Mail auf Grundlage des Web) zugegriffen werden. Der Kunde verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur einschließlich des Netzwerks, der Server, der Betriebssysteme, des Speichers oder sogar einzelner Anwendungsfunktionen mit der möglichen Ausnahme begrenzter benutzerspezifischer Anwendungskonfigurationseinstellungen nicht.
  • Platform as a Service (PaaS, Plattform als Dienstleistung): Die dem Kunden bereitgestellte Funktion besteht darin, in der Cloud-Infrastruktur durch den Kunden erstellte oder erworbene Anwendungen zu implementieren, die mithilfe von Programmiersprachen und Werkzeugen erstellt worden sind, die durch den Anbieter unterstützt werden. Der Kunde verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur einschließlich der Netzwerke, Server, Betriebssysteme oder des Speichers nicht, hat aber die Kontrolle über die implementierten Anwendungen und möglicherweise über Konfigurationen von Anwendungen beherbergenden Umgebungen.
  • Infrastructure as a Service (IaaS, Infrastruktur als Dienstleistung): Die dem Kunden bereitgestellte Funktion besteht darin, Verarbeitung, Speicherplatz, Netzwerke und sonstige grundlegende Datenverarbeitungs-Ressourcen bereitzustellen, wobei der Kunde in der Lage ist, beliebige Software zu implementieren und auszuführen, die Betriebssysteme und Anwendungen beinhalten kann. Der Kunde verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicherplatz, implementierte Anwendungen und möglicherweise begrenzte Kontrolle über ausgewählte Netzwerkkomponenten (z. B. Host-Firewalls).
  • Es handelt sich um folgende Implementierungsmodelle:
    Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich auf dem Gelände der Organisation oder außerhalb davon befinden.
  • Gemeinschafts-Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Gemeinschaft, die gemeinsame Anliegen hat (z. B. Überlegungen bezüglich einer Zielsetzung, Sicherheitsanforderungen, Richtlinien und Einhalten von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann sich auf dem Gelände der Organisationen oder außerhalb davon befinden.
  • Öffentliche Cloud: Die Cloud-Infrastruktur wird der breiten Öffentlichkeit oder einer großen Branchengruppe zugänglich gemacht und befindet sich im Besitz einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid-Cloud: Die Cloud-Infrastruktur setzt sich aus zwei oder mehr (privaten, Gemeinschafts- oder öffentlichen) Clouds zusammen, die eigenständige Entitäten bleiben, jedoch durch standardisierte oder proprietäre Technologie miteinander verbunden sind, die eine Portierbarkeit von Daten und Anwendungen (z. B. Cloud-Zielgruppenverteilung zum Lastausgleich zwischen Clouds) ermöglicht.
  • Eine Cloud-Computing-Umgebung ist dienstorientiert mit einem Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantische Interoperabilität. Im Zentrum des Cloud-Computing befindet sich eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Prozessoren aufweist.
  • Es wird nun auf 17 Bezug genommen, in der eine schematische Darstellung eines Beispiels für einen Cloud-Computing-Prozessor gezeigt wird. Der Cloud-Computing-Prozessor 6010 ist lediglich ein Beispiel für einen geeigneten Cloud-Computing-Prozessor und soll den Umfang der Nutzung oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung nicht einschränken. Dennoch kann der Cloud-Computing-Prozessor 6010 implementiert werden und/oder alle oben hierin dargelegten Funktionalitäten durchführen.
  • In dem Cloud-Computing-Prozessor 6010 befindet sich ein Computersystem/Server 6012, der mit zahlreichen sonstigen Universal- oder Spezial-Datenverarbeitungssystem-Umgebungen oder -Konfigurationen betrieben werden kann. Zu Beispielen für allgemein bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die zur Verwendung mit dem Computersystem/Server 6012 geeignet sein können, zählen Personal-Computersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Hand- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der obigen Systeme oder Einheiten beinhalten, und dergleichen, ohne auf diese beschränkt zu sein.
  • Das Computersystem/der Server 6012 kann im allgemeinen Zusammenhang von Anweisungen beschrieben werden, die durch ein Computersystem ausgeführt werden können, wie zum Beispiel Programmmodule, die durch ein Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. beinhalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server 6012 kann in verteilten Cloud-Computing-Umgebungen angewendet werden, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die durch ein Datenübertragungsnetzwerk miteinander verbunden sind. Bei einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Computersystem-Speichermedien befinden, darunter in Speichereinheiten.
  • Wie in 17 gezeigt, wird das Computersystem/der Server 6012 in dem Cloud-Computing-Prozessor 6010 in Form einer Universal-Datenverarbeitungseinheit dargestellt. Zu den Komponenten des Computersystems/Servers 6012 können ein oder mehrere Prozessoren oder Verarbeitungseinheiten 6016, ein Systemspeicher 6028 und ein Bus 6018 zählen, der verschiedene Systemkomponenten wie etwa den Systemspeicher 6028 mit dem Prozessor 6016 verbindet, ohne auf diese beschränkt zu sein.
  • Der Bus 6018 stellt einen oder mehrere von mehreren beliebigen Typen von Busstrukturen dar, darunter zum Beispiel einen Speicherbus oder eine Speichersteuereinheit, einen Peripheriebus, einen Accelerated Graphics Port und einen Prozessor- oder einen lokalen Bus unter Verwendung einer beliebigen von einer Vielfalt von Busarchitekturen. Beispielsweise, und ohne einschränkend zu wirken, beinhalten solche Architekturen einen Industry-Standard-Architecture(ISA)-Bus, einen Micro-Channel-Architecture(MCA)-Bus, einen Enhanced-ISA(EISA)-Bus, einen lokalen Video-Electronics-Sfandards-Association(VESA)-Bus und einen Peripheral-Component-Interconnect(PCI)-Bus.
  • Das Computersystem/der Server 6012 beinhaltet üblicherweise eine Vielfalt von durch ein Computersystem lesbaren Medien. Bei solchen Medien kann es sich um beliebige verfügbare Medien handeln, auf die durch das Computersystem/den Server 6012 zugegriffen werden kann, und sie beinhalten sowohl flüchtige als auch nichtflüchtige Medien sowie austauschbare als auch nichtaustauschbare Medien.
  • Der Systemspeicher 6028 kann durch ein Computersystem lesbare Medien in Form eines flüchtigen Speichers wie zum Beispiel eines Direktzugriffsspeichers (random access memory, RAM) 6030 und/oder eines Cache 6032 beinhalten. Das Computersystem/der Server 6012 kann des Weiteren sonstige austauschbare/nicht austauschbare, flüchtige/nichtflüchtige Computersystem-Speichermedien beinhalten. Lediglich als Beispiel kann ein Speichersystem 6034 zum Lesen von und Schreiben auf ein nicht austauschbares, nichtflüchtiges (nicht dargestelltes und üblicherweise als „Festplatte” bezeichnetes) Magnetmedium bereitgestellt werden. Wenngleich es nicht dargestellt wird, kann ein Magnetplattenlaufwerk zum Lesen von einer austauschbaren, nichtflüchtigen Magnetplatte (z. B. einer „Diskette”) und zum Schreiben darauf und ein optisches Plattenlaufwerk zum Lesen von einer austauschbaren, nichtflüchtigen optischen Platte wie zum Beispiel einer CD-ROM, DVD-ROM oder sonstigen optischen Medien und zum Schreiben darauf bereitgestellt werden. In solchen Fällen kann jedes durch eine oder mehrere Datenmedien-Schnittstellen mit dem Bus 6018 verbunden sein. Wie im Folgenden näher dargestellt und beschrieben wird, kann der Speicher 6028 zumindest ein Programmprodukt beinhalten, das einen Satz (z. B. zumindest eins) von Programmmodulen aufweist, die dazu konfiguriert sind, die Funktionen von Ausführungsformen der Erfindung auszuführen.
  • Ein Programm/Dienstprogramm 6040, das einen Satz (zumindest eins) von Programmmodulen 6042 aufweist, kann als Beispiel, das keine Einschränkung darstellen soll, in dem Speicher 6028 gespeichert werden, wie auch ein Betriebssystem, ein oder mehrere Anwendungsprogramme, sonstige Programmmodule und Programmdaten. Von dem Betriebssystem, dem einen oder mehreren Anwendungsprogrammen, den sonstigen Programmmodulen und Programmdaten und einigen Kombinationen davon kann jedes eine Implementierung einer Netzwerkumgebung beinhalten. Die Programmmodule 6042 führen im Allgemeinen die Funktionen und/oder Methoden von Ausführungsformen der Erfindung aus, wie sie hierin beschrieben wird.
  • Das Computersystem/der Server 6012 kann außerdem mit einer oder mehreren externen Einheften 6014 wie zum Beispiel einer Tastatur, einer Zeigeeinheit, einer Anzeige 6024 usw.; einer oder mehreren Einheiten, die einem Benutzer ermöglichen, mit dem Computersystem/dem Server 6012 in Wechselwirkung zu treten; und/oder beliebigen Einheiten (z. B. einer Netzwerkkarte, einem Modem usw.) Daten austauschen, die dem Computersystem/Server 6012 ermöglichen, Daten mit einer oder mehreren sonstigen Datenverarbeitungseinheiten auszutauschen. Ein solcher Datenaustausch kann über Eingabe-(Ausgabe(E/A)-Schnittstellen 6022 durchgeführt werden. Weiterhin kann das Computersystem/der Server 6012 mit einem oder mehreren Netzwerken wie zum Beispiel einem lokalen Netzwerk (lokal area network, LAN), einem allgemeinen Weitverkehrsnetz (wide area network, WAN) und/oder einem öffentlichen Netzwerk (z. B. dem Internet) über einen Netzwerkadapter 6020 Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 6020 Daten mit den anderen Komponenten des Computersysterns/Servers 6012 über den Bus 6018 aus. Es versteht sich, wenngleich dies nicht dargestellt wird, dass sonstige Hardware- und/oder Software-Komponenten zusammen mit dem Computersystem/Server 6012 verwendet werden könnten. Zu Beispielen zählen Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Datenarchivierungs-Speichersysteme usw., ohne auf diese beschränkt zu sein.
  • Es wird nun auf 18 Bezug genommen, in der eine veranschaulichende Cloud-Computing-Umgebung 6050 dargestellt wird. Wie dargestellt, weist die Cloud-Computing-Umgebung 6050 einen oder mehrere Cloud-Computing-Prozessoren 6010 auf, mit denen lokale Datenverarbeitungseinheiten, die von Cloud-Kunden verwendet werden, wie zum Beispiel ein persönlicher digitaler Assistent (PDA) oder ein Mobiltelefon 6054A, ein Desktop-Computer 6054B, ein Laptop-Computer 6054C und/oder ein KFZ-Computersystem 6054N, Daten miteinander austauschen können. Die Prozessoren 6010 können Daten miteinander austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken zusammengefasst werden (ohne Abbildung), zum Beispiel in privaten, Gemeinschafts-, öffentlichen oder Hybrid-Clouds, wie oben beschrieben, oder in einer Kombination davon. Dies ermöglicht der Cloud-Computing-Umgebung 6050, Infrastruktur, Plattformen und/oder Software als Dienstleistungen anzubieten, für die ein Cloud-Kunde keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es versteht sich, dass die in 18 dargestellten Typen von Datenverarbeitungseinheiten 6054A bis N lediglich der Veranschaulichung dienen sollen und dass die Datenverarbeitungsprozessoren 6010 und die Cloud-Computing-Umgebung 6050 mit einem beliebigen Typ einer computerisierten Einheit über einen beliebigen Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z. B. mithilfe eines Web-Browsers) Daten austauschen können.
  • Es wird nun auf 19 Bezug genommen, in der ein Satz funktionaler Abstraktionsschichten dargestellt wird, die durch das Cloud-Computing-System 6050 (18) bereitgestellt werden. Es versteht sich im Vorhinein, dass die in 19 dargestellten Komponenten, Schichten und Funktionen lediglich der Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
    Eine Hardware- und Software-Schicht 6060 beinhaltet Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen Großrechner, in einem Beispiel IBM® zSeries®-Systeme; Server auf Grundlage einer RISC-Architektur (Reduced Instruction Set Computer, Computer mit reduziertem Befehlssatz), in einem Beispiel IBM pSeries®-Systeme; IBM xSeries®-Systeme; IBM BladeCenter®-Systeme; Speichereinheiten, Netzwerke und Netzwerkkomponenten. Zu Beispielen für Software-Komponenten zählen Netzwerkanwendungs-Server-Software, in einem Beispiel die Anwendungs-Server-Software IBM WebSphere®; und Datenbank-Software, in einem Beispiel die Datenbank-Software IBM DB2®. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind in vielen Ländern weltweit eingetragene Marken von International Business Machines Corporation.) Die Virtualisierungsschicht 6062 stellt eine Abstraktionsschicht bereit, von der die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server; virtueller Speicher; virtuelle Netzwerke, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme; und virtuelle Clients.
  • In einem Beispiel kann eine Verwaltungsschicht 6064 die im Folgenden beschriebenen Funktionen bereitstellen. Ressourcen-Bereitstellung bietet eine dynamische Beschaffung von Datenverarbeitungs-Ressourcen und sonstigen Ressourcen, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung genutzt werden. Messung und Preisbildung stellen eine Kostenüberwachung während der Nutzung von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen aufweisen. Die Sicherheit stellt eine Identitätsüberprüfung für Cloud-Kunden und -Aufgaben wie auch Schutz für Daten und sonstige Ressourcen bereit. Ein Benutzerportal stellt einen Zugriff auf die Cloud-Computing-Umgebung für Kunden und Systemadministratoren bereit. Eine Dienstgüteverwaltung stellt eine Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die erforderlichen Dienstgütegrade erreicht werden. Eine Planung und Erfüllung von Dienstgütevereinbarungen (Service Level Agreement, SLA) stellen eine Vorbereitung für und eine Bereitstellung von Cloud-Computing-Ressourcen bereit, für die eine künftige Erfordernis gemäß einer SLA erwartet wird.
  • Eine Arbeitslastenschicht 6066 stellt Beispiele für die Funktionalität bereit, für die die Cloud-Computing-Umgebung eingesetzt werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation; Software-Entwicklung und Lebenszyklusverwaltung; Bereitstellung von virtuellen Schulungen; Datenanalyseverarbeitung Transaktionsverarbeitung.
  • Die hierin verwendete Terminologie dient lediglich der Beschreibung bestimmter Ausführungsformen und ist nicht einschränkend gemeint. So, wie sie hierin verwendet werden, sollen die Singularformen „ein”, „eine” und „der”, „die”, „das” auch die Pluralformen beinhalten, sofern dies aus dem Kontext nicht eindeutig anders hervorgeht. Es versteht sich darüber hinaus, dass die Begriffe „aufweist” und/oder „aufweisend”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementen und/oder Komponenten bezeichnen, jedoch nicht das Vorhandensein bzw. die Beifügung von einem/einer bzw. mehreren anderen Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente in den nachstehenden Ansprüchen sollen gegebenenfalls jede Struktur, jedes Material oder jeden Vorgang zum Durchführen der Funktion in Kombination mit anderen beanspruchten Elementen als ausdrücklich beansprucht beinhalten. Die Beschreibung einer oder mehrerer Ausführungsformen erfolgte zum Zweck der Veranschaulichung und Beschreibung, ist jedoch nicht erschöpfend oder auf die dargestellte Form beschränkt gemeint. Zahlreiche Modifizierungen und Varianten sind für den Fachmann ersichtlich. Die Ausführungsform wurde ausgewählt und beschrieben, um die verschiedenen Aspekte und die praktische Anwendung am besten zu erläutern und um anderen Fachleuten das Verständnis verschiedener Ausführungsformen mit verschiedenen, für den in Betracht gezogenen Einsatz geeigneten Modifizierungen zu ermöglichen.

Claims (19)

  1. Verfahren zum Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung, wobei das Verfahren aufweist: Empfangen einer Synchronisationsanforderung durch einen ersten Prozessor von einem zweiten Prozessor, die den ersten Prozessor anweist, anstehende Aktualisierungen eines oder mehrerer Statusanzeiger eines oder mehrerer Einträge einer Adressumsetzungsstruktur festzuschreiben, die sich in einem Speicher befindet; Durchführen einer Synchronisationsoperation durch den ersten Prozessor auf Grundlage des Empfangens der Synchronisationsanforderung so, dass die anstehenden Aktualisierungen des einen oder der mehreren Statusanzeiger festgeschrieben werden; und Anzeigen eines Abschlusses durch den ersten Prozessor gegenüber dem zweiten Prozessor auf Grundlage des Abschließens der Synchronisationsoperation.
  2. Verfahren nach Anspruch 1, wobei der eine oder die mehreren Statusanzeiger einen Änderungsanzeiger, der angibt, ob eine Speichereinheit, die dem Änderungsanzeiger zugehörig ist, aktualisiert worden ist, und/oder einen Referenzanzeiger aufweist, der angibt, ob auf die Speichereinheit, die dem Referenzanzeiger zugehörig ist, zugegriffen worden ist.
  3. Verfahren nach Anspruch 2, wobei die Speichereinheit eine Speicherseite aufweist, die Adressumsetzungsstruktur eine Seitentabelle aufweist und wobei sich der Änderungsanzeiger und der Referenzanzeiger in einem Seitentabelleneintrag befinden, der der Speicherseite entspricht.
  4. Verfahren nach Anspruch 2, wobei das Festschreiben der anstehenden Aktualisierungen des einen oder der mehreren Statusanzeiger ein Aktualisieren des Änderungsanzeigers und/oder des Referenzanzeigers in der Adressumsetzungsstruktur durch den ersten Prozessor auf Grundlage eines geänderten Wertes des Änderungsanzeigers und/oder des Referenzanzeigers in einer lokalen Struktur des ersten Prozessors aufweist.
  5. Verfahren nach Anspruch 1, wobei das Empfangen der Synchronisationsanforderung durch den ersten Prozessor auf einem Ausgeben einer Synchronisationsanweisung durch den zweiten Prozessor beruht.
  6. Verfahren nach Anspruch 1, wobei das Durchführen der Synchronisationsoperation aufweist: Markieren einer oder mehrerer anstehender Aktualisierungsanforderungen für den einen oder die mehreren Statusanzeiger in einer Warteschlange des ersten Prozessors; und Aktualisieren eines oder mehrerer Einträge der Adressumsetzungsstruktur auf Grundlage der einen oder mehreren markierten anstehenden Aktualisierungsanforderungen in der Warteschlange.
  7. Verfahren nach Anspruch 1, wobei das Durchführen der Synchronisationsoperation aufweist: Platzieren einer Markierung in einer Warteschlange auf Grundlage der Synchronisationsanforderung, wobei die Warteschlange vor der Markierung eine oder mehrere anstehende Aktualisierungsanforderungen für den einen oder die mehreren Statusanzeiger beinhaltet; und Aktualisieren eines oder mehrerer Einträge der Adressumsetzungsstruktur auf Grundlage der einen oder mehreren anstehenden Aktualisierungsanforderungen in der Warteschlange vor der Markierung, wobei ein Abschluss der Synchronisationsoperation auf Grundlage eines Erreichens der Markierung angegeben wird.
  8. Verfahren nach Anspruch 1, wobei die Datenverarbeitungsumgebung insofern für ein unzusammenhängendes Aktualisieren der Adressumsetzungsstruktur konfiguriert ist, als Aktualisierungen der Adressumsetzungsstruktur nicht in einer bestimmten Zeitspanne garantiert sind.
  9. Verfahren nach Anspruch 1, wobei das Empfangen der Synchronisationsanforderung ein Empfangen der Synchronisationsanforderung durch eine Mehrzahl von Prozessoren aufweist, wobei die Mehrzahl von Prozessoren eine Synchronisation durchzuführen und Abschlussmeldungen zu senden hat.
  10. Verfahren nach Anspruch 9, wobei es sich bei der Mehrzahl von Prozessoren um eine ausgewählte Gruppe von Prozessoren handelt, wobei die ausgewählte Gruppe von Prozessoren auf Grundlage einer Partitionierung, einer Gruppierung und/oder einer Verwendung eines bestimmten Adressraums ausgewählt wird.
  11. Computersystem zum Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung, wobei das Computersystem aufweist: einen Speicher; und einen Prozessor, der Daten mit dem Speicher austauscht, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren durchführt, wobei das Verfahren aufweist: Empfangen einer Synchronisationsanforderung durch einen ersten Prozessor von einem zweiten Prozessor, die den ersten Prozessor anweist, anstehende Aktualisierungen eines oder mehrerer Statusanzeiger eines oder mehrerer Einträge einer Adressumsetzungsstruktur festzuschreiben, die sich in einem Speicher befindet; Durchführen einer Synchronisationsoperation durch den ersten Prozessor auf Grundlage des Empfangens der Synchronisationsanforderung so, dass die anstehenden Aktualisierungen des einen oder der mehreren Statusanzeiger festgeschrieben werden; und Anzeigen eines Abschlusses durch den ersten Prozessor gegenüber dem zweiten Prozessor auf Grundlage des Abschließens der Synchronisationsoperation.
  12. Computersystem nach Anspruch 11, wobei der eine oder die mehreren Statusanzeiger einen Änderungsanzeiger, der angibt, ob eine Speichereinheit, die dem Änderungsanzeiger zugehörig ist, aktualisiert worden ist, und/oder einen Referenzanzeiger aufweist, der angibt, ob auf die Speichereinheit, die dem Referenzanzeiger zugehörig ist, zugegriffen worden ist.
  13. Computersystem nach Anspruch 12, wobei die Speichereinheit eine Speicherseite aufweist, die Adressumsetzungsstruktur eine Seitentabelle aufweist und wobei sich der Änderungsanzeiger und der Referenzanzeiger in einem Seitentabelleneintrag befinden, der der Speicherseite entspricht.
  14. Computersystem nach Anspruch 12, wobei das Festschreiben der anstehenden Aktualisierungen des einen oder der mehreren Statusanzeiger ein Aktualisieren des Änderungsanzeigers und/oder des Referenzanzeigers in der Adressumsetzungsstruktur durch den ersten Prozessor auf Grundlage eines geänderten Wertes des Änderungsanzeigers und/oder des Referenzanzeigers in einer lokalen Struktur des ersten Prozessors aufweist.
  15. Computersystem nach Anspruch 11, wobei das Durchführen der Synchronisationsoperation aufweist: Markieren einer oder mehrerer anstehender Aktualisierungsanforderungen für den einen oder die mehreren Statusanzeiger in einer Warteschlange des ersten Prozessors; und Aktualisieren eines oder mehrerer Einträge der Adressumsetzungsstruktur auf Grundlage der einen oder mehreren markierten anstehenden Aktualisierungsanforderungen in der Warteschlange.
  16. Computersystem nach Anspruch 11, wobei das Durchführen der Synchronisationsoperation aufweist: Platzieren einer Markierung in einer Warteschlange auf Grundlage der Synchronisationsanforderung, wobei die Warteschlange vor der Markierung eine oder mehrere anstehende Aktualisierungsanforderungen für den einen oder die mehreren Statusanzeiger beinhaltet; und Aktualisieren eines oder mehrerer Einträge der Adressumsetzungsstruktur auf Grundlage der einen oder mehreren anstehenden Aktualisierungsanforderungen in der Warteschlange vor der Markierung, wobei ein Abschluss der Synchronisationsoperation auf Grundlage eines Erreichens der Markierung angegeben wird.
  17. Computerprogrammprodukt zum Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und das Befehle zur Ausführung durch die Verarbeitungsschaltung zum Durchführen sämtlicher Schritte eines Verfahrens nach einem der Ansprüche 1 bis 10 speichert.
  18. Computerprogrammprodukt zum Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und das Befehle zum Ausführen durch die Verarbeitungsschaltung zum Durchführen eines Verfahrens speichert, das aufweist: Senden einer Synchronisationsanforderung von einem Prozessor der Datenverarbeitungsumgebung an zumindest einen anderen Prozessor der Datenverarbeitungsumgebung, die den zumindest einen anderen Prozessor anweist, anstehende Aktualisierungen eines oder mehrerer Statusanzeiger eines oder mehrerer Einträge einer Adressumsetzungsstruktur festzuschreiben, die sich im Speicher befindet; Empfangen einer Abschlussmeldung durch den einen Prozessor von dem zumindest einen anderen Prozessor, die angibt, dass das Festschreiben der anstehenden Aktualisierungen des einen oder der mehreren Statusanzeiger abgeschlossen ist; und auf Grundlage des Empfangens der Abschlussmeldung von dem zumindest einen anderen Prozessor Initiieren einer oder mehrerer Operationen mithilfe eines oder mehrerer aktualisierter Statusanzeiger.
  19. Computerprogramm, das einen Computerprogrammcode aufweist, der so auf einem computerlesbaren Medium gespeichert ist, dass er, wenn er in ein Computersystem geladen und darauf ausgeführt wird, das Computersystem veranlasst, sämtliche Schritte eines Verfahrens nach einem der Ansprüche 1 bis 10 durchzuführen.
DE112015001977.4T 2014-05-30 2015-05-21 Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung Active DE112015001977B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/292,604 2014-05-30
US14/292,604 US9785554B2 (en) 2014-05-30 2014-05-30 Synchronizing updates of page table status indicators in a multiprocessing environment
PCT/IB2015/053728 WO2015181687A1 (en) 2014-05-30 2015-05-21 Synchronizing updates to status indicators in a computing environment

Publications (2)

Publication Number Publication Date
DE112015001977T5 true DE112015001977T5 (de) 2017-03-09
DE112015001977B4 DE112015001977B4 (de) 2024-03-07

Family

ID=54698201

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015001977.4T Active DE112015001977B4 (de) 2014-05-30 2015-05-21 Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung

Country Status (6)

Country Link
US (2) US9785554B2 (de)
JP (1) JP6362769B2 (de)
CN (1) CN106462505B (de)
DE (1) DE112015001977B4 (de)
GB (1) GB2540912B (de)
WO (1) WO2015181687A1 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484162B2 (en) 2008-06-24 2013-07-09 Commvault Systems, Inc. De-duplication systems and methods for application-specific data
US8930306B1 (en) 2009-07-08 2015-01-06 Commvault Systems, Inc. Synchronized data deduplication
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US9020900B2 (en) 2010-12-14 2015-04-28 Commvault Systems, Inc. Distributed deduplicated storage system
US8954446B2 (en) 2010-12-14 2015-02-10 Comm Vault Systems, Inc. Client-side repository in a networked deduplicated storage system
US9218374B2 (en) 2012-06-13 2015-12-22 Commvault Systems, Inc. Collaborative restore in a networked storage system
US9633033B2 (en) 2013-01-11 2017-04-25 Commvault Systems, Inc. High availability distributed deduplicated storage system
US10380072B2 (en) 2014-03-17 2019-08-13 Commvault Systems, Inc. Managing deletions from a deduplication database
US9563518B2 (en) 2014-04-02 2017-02-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US9575673B2 (en) 2014-10-29 2017-02-21 Commvault Systems, Inc. Accessing a file system using tiered deduplication
US10339106B2 (en) 2015-04-09 2019-07-02 Commvault Systems, Inc. Highly reusable deduplication database after disaster recovery
US20160350391A1 (en) 2015-05-26 2016-12-01 Commvault Systems, Inc. Replication using deduplicated secondary copy data
US20170192868A1 (en) 2015-12-30 2017-07-06 Commvault Systems, Inc. User interface for identifying a location of a failed secondary storage device
US10146695B2 (en) * 2016-09-22 2018-12-04 Unisys Corporation System and method for implementing an efficient large system page invalidation
US10417102B2 (en) 2016-09-30 2019-09-17 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including virtual machine distribution logic
CN108572926B (zh) * 2017-03-13 2022-02-22 阿里巴巴集团控股有限公司 一种用于同步中央处理器所属缓存的方法和装置
CN107231417B (zh) * 2017-05-31 2020-05-26 深圳市亚启科技有限公司 一种低速链路下网络节点间数据同步方法及系统
US11016696B2 (en) 2018-09-14 2021-05-25 Commvault Systems, Inc. Redundant distributed data storage system
US11010258B2 (en) 2018-11-27 2021-05-18 Commvault Systems, Inc. Generating backup copies through interoperability between components of a data storage management system and appliances for data storage and deduplication
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US11200168B2 (en) * 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US11698727B2 (en) 2018-12-14 2023-07-11 Commvault Systems, Inc. Performing secondary copy operations based on deduplication performance
US20200327017A1 (en) 2019-04-10 2020-10-15 Commvault Systems, Inc. Restore using deduplicated secondary copy data
US11463264B2 (en) 2019-05-08 2022-10-04 Commvault Systems, Inc. Use of data block signatures for monitoring in an information management system
US20210173811A1 (en) 2019-12-04 2021-06-10 Commvault Systems, Inc. Optimizing the restoration of deduplicated data stored in multi-node replicated file systems
US11816037B2 (en) 2019-12-12 2023-11-14 Advanced Micro Devices, Inc. Enhanced page information co-processor
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
US11687424B2 (en) 2020-05-28 2023-06-27 Commvault Systems, Inc. Automated media agent state management
GB2603489B (en) * 2021-02-04 2023-02-22 Advanced Risc Mach Ltd A data processing apparatus and method for address translation
US11645175B2 (en) 2021-02-12 2023-05-09 Commvault Systems, Inc. Automatic failover of a storage manager

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197139A (en) * 1990-04-05 1993-03-23 International Business Machines Corporation Cache management for multi-processor systems utilizing bulk cross-invalidate
CA2107056C (en) * 1993-01-08 1998-06-23 James Allan Kahle Method and system for increased system memory concurrency in a multiprocessor computer system
US6119204A (en) 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6647468B1 (en) 1999-02-26 2003-11-11 Hewlett-Packard Development Company, L.P. Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment
US6360231B1 (en) 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
US6286092B1 (en) * 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6751721B1 (en) 2000-08-31 2004-06-15 Hewlett-Packard Development Company, L.P. Broadcast invalidate scheme
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US6745272B2 (en) 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US7096323B1 (en) 2002-09-27 2006-08-22 Advanced Micro Devices, Inc. Computer system with processor cache that stores remote cache presence information
US7073043B2 (en) * 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US7552254B1 (en) 2003-07-30 2009-06-23 Intel Corporation Associating address space identifiers with active contexts
US8307194B1 (en) * 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US20050080934A1 (en) 2003-09-30 2005-04-14 Cota-Robles Erik C. Invalidating translation lookaside buffer entries in a virtual machine (VM) system
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US8423747B2 (en) 2008-06-30 2013-04-16 Intel Corporation Copy equivalent protection using secure page flipping for software components within an execution environment
US7454590B2 (en) * 2005-09-09 2008-11-18 Sun Microsystems, Inc. Multithreaded processor having a source processor core to subsequently delay continued processing of demap operation until responses are received from each of remaining processor cores
US7739476B2 (en) * 2005-11-04 2010-06-15 Apple Inc. R and C bit update handling
US7549035B1 (en) 2006-09-22 2009-06-16 Sun Microsystems, Inc. System and method for reference and modification tracking
US8296520B2 (en) 2007-12-19 2012-10-23 International Business Machines Corporation System and method for optimizing neighboring cache usage in a multiprocessor environment
US8001328B2 (en) 2008-01-29 2011-08-16 International Business Machines Corporation Method and process for expediting the return of line exclusivity to a given processor through enhanced inter-node communications
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8234407B2 (en) 2009-06-30 2012-07-31 Oracle America, Inc. Network use of virtual addresses without pinning or registration
US8566524B2 (en) 2009-08-31 2013-10-22 International Business Machines Corporation Transactional memory system with efficient cache support
US8930635B2 (en) 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US9448938B2 (en) 2010-06-09 2016-09-20 Micron Technology, Inc. Cache coherence protocol for persistent memories
US8788761B2 (en) 2010-09-24 2014-07-22 Nvidia Corporation System and method for explicitly managing cache coherence
GB2499168B (en) * 2010-11-26 2014-04-16 Ibm Cache coherency control method, system, and program
US9916257B2 (en) 2011-07-26 2018-03-13 Intel Corporation Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
US9418010B2 (en) 2013-04-17 2016-08-16 Apple Inc. Global maintenance command protocol in a cache coherent system
US9411745B2 (en) 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations

Also Published As

Publication number Publication date
GB201620122D0 (en) 2017-01-11
US9785555B2 (en) 2017-10-10
CN106462505A (zh) 2017-02-22
JP2017520869A (ja) 2017-07-27
GB2540912A (en) 2017-02-01
JP6362769B2 (ja) 2018-07-25
US20150347300A1 (en) 2015-12-03
DE112015001977B4 (de) 2024-03-07
WO2015181687A1 (en) 2015-12-03
US20150347306A1 (en) 2015-12-03
GB2540912B (en) 2017-12-20
CN106462505B (zh) 2019-06-04
US9785554B2 (en) 2017-10-10

Similar Documents

Publication Publication Date Title
DE112015001977B4 (de) Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung
US9836411B2 (en) Synchronizing updates of page table status indicators and performing bulk operations
DE112015001548T5 (de) Partitionsmobilität für Partitionen mit erweitertem Code
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE112015000203T5 (de) "Compare and Delay"-Befehle
DE112012005032T5 (de) Entfernen der Datenremanenz in deduplizierten Speicher-Clouds
DE102007037814A1 (de) Synchronisieren eines Übersetzungspuffers (TLB) mit einer vergrößerten Paging-Tabelle
DE112018005404T5 (de) Vereinfachen des zugriffs auf lokalitätsdomäneninformationen eines speichers
DE112020000223B4 (de) Gemeinsame speichernutzung zwischen einer sicheren domäne und einer nicht sicheren entität
DE102016222861A1 (de) Transparentes, sicheres Durchführen von Abrufvorgängen
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung
DE112013000650T5 (de) Datenzwischenspeicherungsbereich
DE112020000303T5 (de) Testen von speicherschutz-hardware in einer umgebung einer sicheren virtuellen maschine
DE112021004290T5 (de) Gemeinsames nutzen von zwischengespeicherten klassendaten in einer containerisierten umgebung
DE112020000289T5 (de) Abfrage und überlassung von sicherem speicher
DE112017000163T5 (de) Priorisierung von Transaktionen
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE112018004138T5 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE112019000402T5 (de) Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems
DE112021005881T5 (de) Inline datenpakettransformationen
DE102021130358A1 (de) E/a-operationen in log-strukturierten arrays

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