DE112018004636B4 - Gleichzeitige änderung einer gemeinsam genutzten cachezeile durch mehrere prozessoren - Google Patents

Gleichzeitige änderung einer gemeinsam genutzten cachezeile durch mehrere prozessoren Download PDF

Info

Publication number
DE112018004636B4
DE112018004636B4 DE112018004636.2T DE112018004636T DE112018004636B4 DE 112018004636 B4 DE112018004636 B4 DE 112018004636B4 DE 112018004636 T DE112018004636 T DE 112018004636T DE 112018004636 B4 DE112018004636 B4 DE 112018004636B4
Authority
DE
Germany
Prior art keywords
cache line
shared cache
shared
data
computer
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.)
Active
Application number
DE112018004636.2T
Other languages
English (en)
Other versions
DE112018004636T5 (de
Inventor
Nicholas Matsakis
Craig Walters
Jane Bartik
Chung-Lung Shum
Elpida Tzortzatos
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 DE112018004636T5 publication Critical patent/DE112018004636T5/de
Application granted granted Critical
Publication of DE112018004636B4 publication Critical patent/DE112018004636B4/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
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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/0817Cache consistency protocols using directory methods
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

Eine gemeinsam genutzten Cachezeile wird von mehreren Prozessoren einer Datenverarbeitungsumgebung gleichzeitig geändert. Die gleichzeitige Änderung wird mindestens beruhend darauf durchgeführt, dass eine oder mehrere architekturdefinierte Anweisungen („Fetch due to Non-Coherent Store“-Anweisungen) empfangen werden, die es mehreren Prozessoren gestatten, die gemeinsam genutzte Cachezeile gleichzeitig zu aktualisieren, ohne eine Sperre zu erhalten oder über eine exklusive Eigentümerschaft der Daten zu verfügen.

Description

  • HINTERGRUND
  • Ein oder mehrere Aspekte betreffen im Allgemeinen die Verarbeitung innerhalb einer Datenverarbeitungsumgebung und insbesondere das Vereinfachen einer solchen Verarbeitung.
  • Die Verarbeitung innerhalb einer Datenverarbeitungsumgebung umfasst das Zugreifen auf Speicher, darunter Hauptspeicher und Speichercaches, um Daten zu lesen oder zu speichern. Das Aktualisieren solcher Daten ist in Datenverarbeitungsumgebungen komplex, die mehrere Prozessoren enthalten, welche Zugriff auf die zu aktualisierenden Daten haben. In solchen Datenverarbeitungsumgebungen mit mehreren Prozessoren ist es üblich, dass die Computer-Hardware eine atomare Aktualisierungsanweisung wie beispielsweise eine Compare-and-Swap-(CS-)Anweisung hat, die versucht, ein Feld auf einen neuen Wert zu aktualisieren, nachdem sie den aktuellen Wert des Feldes abgerufen hat. Während andere Prozessoren davon abgehalten werden, dieselbe Funktion zur selben Zeit auszuführen, vergleicht die Vergleichsoperation einen alten Wert mit dem aktuellen Wert. Wenn der alte Wert gleich dem aktuellen Wert ist, wird der aktuelle Wert durch den neuen Wert ersetzt. Wenn der alte Wert nicht gleich dem aktuellen Wert ist, wird der neue Wert nicht gespeichert und der Benutzer wird über einen Bedingungscode informiert, dass der Wert nicht aktualisiert wurde, und die Verarbeitung kehrt in einer Schleife zurück, um den aktuellen Wert zu bearbeiten.
  • Damit die Compare-and-Swap-Operation das Feld vergleicht und aktualisiert, bringt sie das Feld in einen privaten Cachespeicher des lokalen Prozessors und macht es aus den privaten Cachespeichern von anderen Prozessoren heraus ungültig. Dies verursacht Adressverzögerungen, die die Performanz herabsetzen. Je häufiger das Feld aktualisiert wird, desto mehr verschlechtert sich die Performanz.
  • Ein Ansatz, diesen Aufwand zu minimieren, besteht darin, eindeutige individuelle prozessorbezogene Felder wie beispielsweise Zähler zu aktualisieren, was den Konflikt zwischen den Prozessoren beseitigt. Die aktuellen Werte werden periodisch von einem Leser oder einem Überwachungsprogramm angefordert und beruhend auf der Anforderung werden die Werte zusammengefasst und die Ergebnisse bereitgestellt. Dies verringert den Aufwand erheblich. Jedoch erhöht dies die Komplexität, und es gibt Fälle, in denen die Zähler bereits vorhanden waren und die Bereitstellung eines Dienstes, um die prozessorbezogenen Werte zusammenzufassen, nicht durchführbar, wenn nicht gar unmöglich ist.
  • Folglich besteht in der Technik Bedarf, das vorstehend genannte Problem anzugehen.
  • Die US 8 738 860 B1 betrifft ein Rechensystem, das einen oder mehrere Kerne umfasst. Jeder Kern umfasst einen Prozessor. In einigen Implementierungen ist jeder Prozessor mit einem Kommunikationsnetzwerk zwischen den Kernen verbunden. In einigen Implementierungen enthält ein Schalter in jedem Kern Schaltkreise, um Daten, die über Datenpfade von anderen Kernen empfangen wurden, an den Prozessor und an Schalter anderer Kerne weiterzuleiten, und um Daten, die vom Prozessor empfangen wurden, an Schalter anderer Kerne weiterzuleiten.
  • KU RZDARSTELLU NG
  • Die Erfindung betrifft Computerprogrammprodukt, ein Computersystem und ein Durch einen Computer ausgeführtes Verfahren, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, deren Merkmalen in den entsprechenden unabhängigen Ansprüchen angegeben sind. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
  • In einem Beispiel wird ein durch einen Computer ausgeführtes Verfahren bereitgestellt, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, wobei das Verfahren aufweist: Erhalten, von einer Vielzahl von Prozessoren der Datenverarbeitungsumgebung, einer Vielzahl von Speicheranforderungen für das Speichern in einer gemeinsam genutzten Cachezeile, wobei die Vielzahl der Speicheranforderungen von einem Typ „gleichzeitige Speicheroperation“ ist; und beruhend auf der Vielzahl der Speicheranforderungen gleichzeitiges Speichern von Daten in der gemeinsam genutzten Cachezeile.
  • In einem weiteren Beispiel wird ein Computersystem bereitgestellt, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, wobei das Computersystem aufweist: einen Speicher; und mindestens einen Prozessor, der mit dem Speicher Daten austauscht, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren durchführt, wobei das Verfahren aufweist: Erhalten, von einer Vielzahl von Prozessoren der Datenverarbeitungsumgebung, einer Vielzahl von Speicheranforderungen für das Speichern in einer gemeinsam genutzten Cachezeile, wobei die Vielzahl der Speicheranforderungen von einem Typ „gleichzeitige Speicheroperation“ ist; und beruhend auf der Vielzahl der Speicheranforderungen gleichzeitiges Speichern von Daten in der gemeinsam genutzten Cachezeile.
  • In einem weiteren Beispiel wird ein Computerprogrammprodukt bereitgestellt, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, das durch eine Verarbeitungsschaltung gelesen werden kann und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren zur Durchführung der erfindungsgemäßen Schritte durchzuführen.
  • In einem weiteren Beispiel wird ein Computerprogramm bereitgestellt, das auf einem durch einen Computer lesbaren Datenträger gespeichert ist und in den internen Speicher eines digitalen Computers geladen werden kann, wobei das Computerprogramm Teile von Software-Code aufweist, wenn das Programm auf einem Computer ausgeführt wird, um die erfindungsgemäßen Schritte durchzuführen.
  • Durch die Bereitstellung eines Computerprogrammprodukts, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, werden Unzulänglichkeiten nach dem Stand der Technik überwunden und zusätzliche Vorteile bereitgestellt. Das Computerprogrammprodukt enthält ein durch einen Computer lesbares Speichermedium, das durch eine Verarbeitungsschaltung gelesen werden kann und Anweisungen zur Durchführung eines Verfahrens speichert. Das Verfahren umfasst zum Beispiel das Erhalten, von einer Vielzahl von Prozessoren der Datenverarbeitungsumgebung, einer Vielzahl von Speicheranforderungen für das Speichern in einer gemeinsam genutzten Cachezeile. Die Vielzahl der Speicheranforderungen ist von einem Typ „gleichzeitige Speicheroperation“. Beruhend auf der Vielzahl der Speicheranforderungen werden Daten gleichzeitig in der gemeinsam genutzten Cachezeile gespeichert. Indem man gleichzeitige Aktualisierungen einer gemeinsam genutzten Cachezeile zulässt, wird die Verarbeitung vereinfacht, die Komplexität verringert und die Performanz verbessert.
  • In einem Beispiel wird ein Cachespeicher-Verzeichniszustand, der zu der gemeinsam genutzten Cachezeile gehört, auf „shared-modifiable“ (gemeinsam genutztänderbar) gesetzt, was anzeigt, dass mehrere Speicheranforderungen von mehreren Prozessoren zulässig sind.
  • Als Beispiel enthalten die Daten eine Aktualisierung einer globalen Shared-modifiable-Struktur, die in der gemeinsam genutzten Cachezeile verwaltet wird. Die globale Shared-modifiable-Struktur wird von mehreren Prozessoren der Vielzahl der Prozessoren verwendet.
  • In einem weiteren Beispiel wird eine Abrufanforderung, die Zugriff auf die gemeinsam genutzte Cachezeile anfordert, erhalten. Die Abrufanforderung unterscheidet sich vom Typ „gleichzeitige Speicheroperation“. Beruhend auf der Abrufanforderung wird eine Serialisierung für die gemeinsam genutzte Cachezeile durchgeführt. Beruhend auf der Beendigung der Serialisierung werden die Daten aus der gemeinsam genutzten Cachezeile gelesen. Indem man eine Serialisierung durchführt, die auf der Abrufanforderung beruht, aber nicht auf einer Anforderung, die so definiert ist, dass sie gleichzeitige Aktualisierungen durch mehrere Prozessoren zulässt, werden Verzögerungen verringert und die Performanz verbessert.
  • Die Durchführung einer Serialisierung umfasst z.B. das Anhalten von ausstehenden Speicheroperationen in die gemeinsam genutzte Cachezeile und das Synchronisieren von Daten der gemeinsam genutzten Cachezeile.
  • Des Weiteren wird in einem Beispiel beruhend auf der Abrufanforderung der Zustand der Eigentümerschaft der gemeinsam genutzten Cachezeile von „shared-modifiable“ in einen anderen Zustand geändert. Der andere Zustand ist z.B. exklusiv oder schreibgeschützt, beruhend auf der Abrufanforderung.
  • In einem Beispiel umfasst das Erhalten der Vielzahl von Speicheranforderungen das Empfangen einer Vielzahl von „Fetch due to non-coherent“-Speicheranforderungen von der Vielzahl der Prozessoren. Die „Fetch due to non-coherent“-Speicheranforderungen sind architekturdefiniert, um nicht blockierende Änderungen an der gemeinsam genutzten Cachezeile zuzulassen.
  • Des Weiteren umfasst das Speichern in einem Beispiel das Speichern der Daten direkt in der gemeinsam genutzten Cachezeile, ohne dass die Daten in einem oder mehreren privaten Cachespeichern der Vielzahl der Prozessoren gespeichert werden.
  • Zusätzliche Merkmale und Vorteile werden durch die hierin beschriebenen Techniken realisiert. Weitere Ausführungsformen und Aspekte werden hierin ausführlich beschrieben und als ein Teil der beanspruchten Aspekte betrachtet.
  • Figurenliste
  • Ein oder mehrere Aspekte werden in den Ansprüchen am Ende der Beschreibung besonders hervorgehoben und gesondert als Beispiele beansprucht. Das Vorstehende sowie Objekte, Merkmale und Vorteile von einem oder mehreren Aspekten gehen aus der folgenden ausführlichen Beschreibung in Zusammenschau mit den beiliegenden Zeichnungen hervor, bei denen:
    • 1 ein Beispiel einer Datenverarbeitungsumgebung zur Einbindung und Verwendung von einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
    • 2 gemäß einem oder mehreren Aspekten der vorliegenden Erfindung weitere Einzelheiten einer Speicherhierarchie darstellt, die von dem Computersystem von 1 verwendet wird;
    • 3 ein Beispiel einer Verarbeitung in Verbindung mit einer exklusiven Abrufoperation da rstellt;
    • 4 ein Beispiel einer Verarbeitung in Verbindung mit einer „Fetch due to non-coherent“-Operation gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
    • 5 ein weiteres Beispiel einer Verarbeitung in Verbindung mit einer „Fetch due to nonconcurrent“-Operation gemäß einem oder mehreren Aspekten der vorliegenden Erfindung da rstellt;
    • 6 weitere Einzelheiten in Verbindung mit der Verarbeitung von „Fetch due to non-coherent“-Anforderungen gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
    • die 7A bis 7B eine einzelne Ausführungsform zur Vereinfachung der Verarbeitung innerhalb einer Datenverarbeitungsumgebung gemäß einem Aspekt der vorliegenden Erfindung darstellen;
    • 8A ein weiteres Beispiel einer Datenverarbeitungsumgebung zur Einbindung und Verwendung von einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
    • 8B weitere Einzelheiten des Speichers von 8A darstellt;
    • 9 eine einzelne Ausführungsform einer Cloud-Computing-Umgebung darstellt; und
    • 10 ein Beispiel von Abstraktionsmodellschichten darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung wird eine Funktion bereitgestellt, um eine gemeinsam genutzte Cachezeile durch mehrere Prozessoren (die auch als Kerne bezeichnet werden) einer Datenverarbeitungsumgebung gleichzeitig zu ändern. Mehrere Prozessoren können auf Daten oder ein Feld, wie beispielsweise einen Zähler, zugreifen und sie/es aktualisieren, ohne eine Sperre zu erhalten oder über exklusive Eigentümerschaft der Daten oder des Feldes zu verfügen.
  • In einem Beispiel umfasst die Funktion eine nicht blockierende atomare Compare-and-Swap-Anweisung, die hierin als eine „Fetch due to Non-Coherent Store“-(FNC-)Anweisung bezeichnet wird, welche zur Aktualisierung von Daten oder Feldern, wie beispielsweise Zählern, verwendet werden kann, die häufig aktualisiert, aber selten gelesen werden. Die Anweisung ist zum Beispiel eine von einer Architektur definierte Hardware-Anweisung, wie beispielsweise die z/Architecture, die von der International Business Machines Corporation, Armonk, New York, angeboten wird. Die Anweisung erhöht oder verringert die Daten, z.B. eine Anzahl, asynchron, ohne die Daten in einen lokalen, privaten Cachespeicher verbringen oder nach Vergleichsfehlern iterieren zu müssen, so dass auf diese Weise ein Großteil des Aufwands bei Aktualisierungen entfällt. Unter Verwendung der „Fetch due to Non-Coherent Store“-Anweisung wird eine Cachezeile in einem gemeinsam genutzten Cachespeicher mit Änderungsabsicht abgerufen und die Daten können gleichzeitig von einem oder mehreren Prozessoren geändert werden, die in einer Art und Weise arbeiten, die zum Beispiel unter herkömmlichen MESI- oder z/Architecture-Kohärenzregeln nicht kohärent ist.
  • Eine einzelne Ausführungsform einer Datenverarbeitungsumgebung zur Einbindung und Verwendung von einem oder mehreren Aspekten der vorliegenden Erfindung wird unter Bezugnahme auf 1 beschrieben. In einem Beispiel beruht die Datenverarbeitungsumgebung auf der z/Architecture® von IBM®. Eine einzelne Ausführungsform der z/Architecture ist in „z/Architecture Principles of Operation“, IBM-Publikation Nr. SA22-7832-10, März 2015, beschrieben.
  • In einem weiteren Beispiel beruht die Datenverarbeitungsumgebung auf der Power Architecture® von IBM. Eine einzelne Ausführungsform der Power Architecture ist in „Power ISA™ Version 2.07B“, International Business Machines Corporation, 9. April 2015, beschrieben. IBM, z/Architecture und Power Architecture sind Warenzeichen der International Business Machines Corporation, die weltweit in vielen Ländern eingetragen sind.
  • Die Datenverarbeitungsumgebung kann auch auf anderen Architekturen beruhen, darunter, ohne darauf beschränkt zu sein, den x86-Architekturen von Intel® oder den Snapdragon-Architekturen von Qualcomm. Andere Beispiele gibt es ebenfalls. Intel ist ein Warenzeichen oder eingetragenes Warenzeichen der Intel Corporation oder ihrer Tochtergesellschaften in den Vereinigten Staaten und anderen Ländern.
  • Wie in 1 gezeigt ist, enthält eine Datenverarbeitungsumgebung 100 zum Beispiel ein Computersystem 102, das z.B. in Form einer Mehrzweck-Datenverarbeitungseinheit gezeigt ist. Das Computersystem 102 kann, ohne darauf beschränkt zu sein, einen oder mehrere Prozessoren, Verarbeitungseinheiten oder Kerne 104 (z.B. zentrale Verarbeitungseinheiten (CPUs, central processing units)), einen Speicher 106 (der auch als Systemspeicher, Hauptspeicher, zentraler Speicher oder Massenspeicher, als Beispiele, bezeichnet wird) und eine oder mehrere Ein-/Ausgabe-(E/A-)Schnittstellen 108 enthalten, die über einen oder mehrere Busse und/oder andere Verbindungen 110 miteinander verbunden sind.
  • Der Bus 110 stellt eine oder mehrere von beliebigen Busstrukturen von mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder einen Speichercontroller, einen peripheren Bus, einen Accelerated Graphics Port und einen Prozessor- oder lokalen Bus, der beliebige von verschiedensten Busarchitekturen verwendet. Beispielhaft und nicht darauf beschränkt gehören zu solchen Architekturen der lokale Bus „Industry Standard Architecture (ISA)“, „Micro Channel Architecture (MCA)“, „Enhanced ISA (EISA)“, „Video Electronics Standards Association (VESA)“ und der „Peripheral Component Interconnect (PCI)“.
  • Der Speicher 106 kann zum Beispiel einen Cachespeicher 120, wie beispielsweise einen gemeinsam genutzten Cachespeicher, enthalten, der mit den lokalen Cachespeichern 122 der Prozessoren 104 verbunden sein kann. Des Weiteren kann der Speicher 106 ein oder mehrere Programme oder Anwendungen 130, ein Betriebssystem 132 und eine oder mehrere durch einen Computer lesbare Programmanweisungen 134 enthalten. Die durch einen Computer lesbaren Programmanweisungen 134 können so konfiguriert werden, dass sie Funktionen von Ausführungsformen von Aspekten der Erfindung ausführen.
  • Das Computersystem102 kann auch über z.B. E/A-Schnittstellen 108 mit einer oder mehreren externen Einheiten 140, einer oder mehreren Netzschnittstellen 142 und/oder einer oder mehreren Datenspeichereinheiten 144 Daten austauschen. Zu beispielhaften externen Einheiten gehören ein Benutzerterminal, ein Bandlaufwerk, eine Zeigereinheit, ein Bildschirm usw. Die Netzschnittstelle 142 ermöglicht dem Computersystem 102 den Datenaustausch mit einem oder mehreren Netzwerken, wie beispielsweise einem lokalen Netz (LAN, local area network), einem allgemeinen Weitverkehrsnetz (WAN, wide area network) und/oder einem öffentlichen Netz (z.B. dem Internet), die eine Übertragung mit anderen Datenverarbeitungseinheiten oder -systemen bereitstellen.
  • Die Datenspeichereinheit 144 kann ein oder mehrere Programme 146, eine oder mehrere durch einen Computer lesbare Programmanweisungen 148 und/oder Daten usw. speichern. Die durch einen Computer lesbaren Programmanweisungen können so konfiguriert werden, dass sie Funktionen von Ausführungsformen von Aspekten der Erfindung ausführen.
  • Das Computersystem 102 kann auswechselbare/nicht auswechselbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems enthalten und/oder damit verbunden sein. Zum Beispiel kann es einen nicht auswechselbaren, nicht flüchtigen magnetischen Datenträger (der üblicherweise als „Festplattenlaufwerk“ bezeichnet wird), ein Magnetplattenlaufwerk, um von einer auswechselbaren, nicht flüchtigen Magnetplatte (z.B. einer „Diskette“) zu lesen und auf sie zu schreiben, und/oder ein optisches Plattenlaufwerk, um von einer auswechselbaren, nicht flüchtigen optischen Platte, wie beispielsweise einem CD-ROM, DVD-ROM oder einem anderen optischen Medium zu lesen oder auf es zu schreiben, enthalten und/oder damit verbunden sein. Es sollte klar sein, dass andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem 102 verwendet werden könnten. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Festplattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.
  • Das Computersystem 102 kann mit zahlreichen anderen Mehrzweck- oder Spezialdatenverarbeitungssystemumgebungen oder -konfigurationen betrieben werden. Zu Beispielen für hinlänglich bekannte Datenverarbeitungssysteme, -umgebungen und/oder - konfigurationen, die für die Verwendung mit dem Computersystem 102 geeignet sein können, gehören, ohne darauf beschränkt zu sein, Personal-Computer-(PC-)Systeme, Server-Computersysteme, Thin Clients, Thick Clients, tragbare oder Laptop-Einheiten, Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Aufsatzgeräte (Set-Top-Boxen), programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme sowie verteilte Cloud-Computing-Umgebungen, die beliebige der vorstehenden Systeme oder Einheiten enthalten, und dergleichen.
  • Weitere Einzelheiten in Bezug auf die Prozessoren 104 und eine von den Prozessoren verwendete Speicherhierarchie sind unter Bezugnahme auf 2 beschrieben. In einem Beispiel enthält das Computersystem 102 eine Vielzahl von Prozessoren oder Kernen 104. In diesem Beispiel sind drei Kerne gezeigt, die Kerne 0, 1 und 2; ein Computersystem kann jedoch mehr oder weniger Kerne haben, als hierin beschrieben ist. Jeder Kern hat einen privaten lokalen Cachespeicher 122. Der lokale Cachespeicher 122 enthält zum Beispiel einen L1-Cachespeicher 200 und einen L2-Cachespeicher 202. Andere Konfigurationen sind möglich.
  • Der lokale Cachespeicher 122 ist Teil einer Speicherhierarchie, die von den Prozessoren 104 verwendet wird. Die Speicherhierarchie enthält des Weiteren einen gemeinsam genutzten Cachespeicher 120 (z.B. einen L3-Cachespeicher), auf den die Vielzahl der Prozessoren 104 zugreifen kann, und den Hauptspeicher 106. Sie kann in weiteren Ausführungsformen auch weitere und/oder andere Cachespeicher oder Cachespeicherstufen enthalten.
  • Die Übertragung von Daten zwischen dem Prozessor, dem Hauptspeicher und dem Cachespeicher wird z.B. von einem Cache-Controller 206 gesteuert.
  • Der gemeinsam genutzte Cachespeicher 120 (und der Speicher im Allgemeinen) kann unter einem Cachekohärenz-Protokoll wie beispielsweise dem MESI-Protokoll arbeiten. Das MESI-Protokoll ist ein invalidierungsbasiertes Cachekohärenz-Protokoll, das Rückschreibcachespeicher unterstützt. Die Buchstaben in den Akronym MESI stellen vier exklusive Zustände dar, mit denen eine Cachezeile markiert (codiert unter Verwendung von z.B. zwei Bits) werden kann:
  • Modified (geändert (M)): Die Cachezeile ist nur im aktuellen Cachespeicher vorhanden und sie ist unsauber (d.h., sie wurde gegenüber dem Wert im Hauptspeicher geändert (M-Zustand). Der Cachespeicher soll die Daten irgendwann in der Zukunft in den Hauptspeicher zurückschreiben, bevor er eine weitere Leseoperation des (nicht mehr gültigen) Zustands des Hauptspeichers gestattet. Das Zurückschreiben ändert den Zustand der Zeile in „Shared“ (gemeinsam genutzt (S)).
  • Exclusive (exklusiv (E)): Die Cachezeile ist nur im aktuellen Cachespeicher vorhanden, sie ist aber sauber (d.h., sie stimmt mit dem Hauptspeicher überein). Sie kann als Reaktion auf eine Leseanforderung jederzeit in den Zustand „shared“ geändert werden. Alternativ kann sie in den Zustand „modified“ geändert werden, wenn sie beschrieben wird.
  • Shared (S): Zeigt an, dass diese Cachezeile in anderen Cachespeichern des Rechners gespeichert werden kann und dass sie sauber ist - sie stimmt mit dem Hauptspeicher überein. Die Zeile kann jederzeit verworfen (in den Zustand „Invalid“ (ungültig) geändert) werden.
  • Invalid (I): Zeigt an, dass diese Cachezeile ungültig ist (nicht verwendet wird).
  • Ein Beispiel für die Verwendung des MESI-Protokolls wird unter Bezugnahme auf 3 beschrieben. In dem Szenario von 3 wird ein exklusiver Abruf durch drei verschiedene Prozessoren oder Kerne zu unterschiedlichen Zeitpunkten durchgeführt: Zeitpunkt T0, Zeitpunkt T1 und Zeitpunkt T2, wobei T0 < T1 < T2. Ein exklusiver Abruf ist ein Prozessorabruf mit einer Absicht, den Inhalt einer Cachezeile zu ändern. In einem Beispiel soll ein globaler Zähler in dem gemeinsam genutzten Cachespeicher geändert werden.
  • Unter Bezugnahme auf 3 führt der Kern 0 zum Zeitpunkt T0 aufgrund eines Cachefehlers in den lokalen Cachespeichern L1, L2 des Kerns 0 einen exklusiven Abruf 300 der Cachezeile A in dem gemeinsam genutzten Cachespeicher 120 aus. Es gibt einen Cache-Treffer im gemeinsam genutzten Cachespeicher 120 (L3) und folglich erhält der Kern 0 die exklusive Eigentümerschaft der gemeinsam genutzten Cachezeile. Beruhend auf dem Erhalt der exklusiven Eigentümerschaft der Cachezeile kann der Kern 0 jetzt in die Cachezeile A speichern (z.B. 1 Speicheroperation, aktivierter globaler Zähler). Um die Speicheroperation durchzuführen, beginnt der Kern 0 damit, die Cachezeile A zurück in den Kern 0 zu bringen, um die Cachezeile A in dem lokalen Cachespeicher (L1 und/oder L2) des Kerns 0 zu speichern (d.h. den Wert/die Daten zu speichern).
  • Zum Zeitpunkt T1 führt der Kern 1 aufgrund eines Cachefehlers in den lokalen Cachespeichern L1, L2 des Kerns 1 einen exklusiven Abruf 302 an der Cachezeile A im gemeinsam genutzten Cachespeicher 120 aus. Es gibt einen Cache-Treffer im gemeinsam genutzten Cachespeicher 120 (L3) und folglich wird aufgrund der MESI-Kohärenzprotokolle eine Anforderung für eine gegenseitige Aufhebung (Cross-Invalidate, XI) 304 an den Kern 0 gesendet, um die Anforderung zu stellen, dass der Kern 0 die Eigentümerschaft der Cachezeile A aufgibt. Anders ausgedrückt, der Kern 0 empfängt die Cross-Invalidate-(XI-)Anforderung, um vorherige Kopien der Daten in den lokalen Cachespeichern ungültig zu machen, die sich auf die Cachezeile A beziehen. Der Kern 0 ist dabei, eine Compare-and-Swap-Operation durchzuführen, so dass der Wert der aus dem gemeinsam genutzten Cachespeicher 120 eingebrachten Cachezeile A mit dem vorherigen Wert im lokalen Cachespeicher (L1 und/oder L2) verglichen werden soll und der Wert der Cachezeile A im lokalen Cachespeicher des Kerns 0 gespeichert wird, wenn die Werte der Cachezeile A und des lokalen Cachespeichers unterschiedlich sind. Im lokalen Cachespeicher des Kerns 0 kann jedoch keine Speicheroperation stattfinden, da der Kern 1 nun dem Kern 0 die exklusive Eigentümerschaft der Cachezeile A im gemeinsam genutzten Cachespeicher 120 weggenommen hat und die Compare-and-Swap-Prozedur folglich fehlschlägt (d.h., die Compare-and-Swap-Prozedur wurde vor Beendigung unterbrochen, so dass keine Speicheroperation stattfindet).
  • Zum Zeitpunkt T2 führt der Kern 2 aufgrund eines Cachefehlers in den lokalen Cachespeichern L1, L2 des Kerns 2 einen exklusiven Abruf 306 an der Cachezeile A im gemeinsam genutzten Cachespeicher 120 aus. Es gibt einen Cache-Treffer im gemeinsam genutzten Cachespeicher 120 (L3) und folglich wird aufgrund der MESI-Kohärenzprotokolle eine Cross-Invalidate-(XI-)Anforderung 308 an den Kern 1 gesendet, um die Anforderung zu stellen, dass der Prozessor die Eigentümerschaft der Cachezeile A aufgibt. Anders ausgedrückt, der Kern 1 empfängt die Cross-Invalidate-(XI-)Anforderung 308, um vorherige Kopien der Daten in den lokalen Cachespeichern ungültig zu machen, die sich auf die Cachezeile A beziehen. Der Kern 1 ist dabei, eine Compare-and-Swap-Operation durchzuführen, so dass der Wert der aus dem gemeinsam genutzten Cachespeicher 120 eingebrachten Cachezeile A mit dem vorherigen Wert im lokalen Cachespeicher (L1 und/oder L2) verglichen werden soll und der Wert der Cachezeile A im lokalen Cachespeicher des Kerns 1 gespeichert wird, wenn die Werte der Cachezeile A und des lokalen Cachespeichers unterschiedlich sind. Im lokalen Cachespeicher des Kerns 1 kann jedoch keine Speicheroperation stattfinden, da der Kern 2 nun dem Kern 1 die exklusive Eigentümerschaft des gemeinsam genutzten Cachespeichers 120 weggenommen hat und die Compare-and-Swap-Prozedur folglich fehlschlägt (d.h., die Compare-and-Swap-Prozedur wurde vor Beendigung unterbrochen, so dass keine Speicheroperation stattfindet). Der Kern 2 fährt mit seiner angeforderten Aktualisierung fort.
  • Wie unter Bezugnahme auf das vorstehende Szenario beschrieben wurde, werden andere Prozessoren blockiert (z.B. über Sperren und/oder über atomare Operationen), während ein Prozessor die gemeinsam genutzte Cachezeile aktualisiert, wodurch Cachekohärenz gewährleistet wird. Cachekohärenz ist die Einheitlichkeit von gemeinsam genutzten Ressourcendaten, die in mehreren lokalen Cachespeichern gespeichert sind, sowie die Konsistenz der Cachespeicher-Daten, die von den Prozessoren innerhalb des Systems sichtbar ist.
  • Gemäß einem oder mehreren Aspekten der vorliegenden Erfindung werden jedoch ein neuer Typ eines Cachespeicher-Verzeichniszustands (z.B. ein neuer MESI-Zustand) und ein neuer Abruftyp bereitgestellt, die es mehreren Kernen ermöglichen, den Inhalt einer Cachezeile ohne Blockierung gleichzeitig zu ändern und dabei gleichzeitig Kohärenz und sichtbare Datenkonsistenz sicherzustellen. Dieser neue Verzeichniszustand wird als „shared-modifiable“ oder „fetch non-coherent (X)“ im Kontext des MESI-Protokolls bezeichnet, und die Abrufoperation wird als „Fetch due to Non-Coherent Store“ bezeichnet. Wenn eine Cachezeile in den Zustand „shared-modfiable“ oder „fetch non-coherent“ für Speicheroperationen versetzt wird, ist die Kohärenz immer noch gewährleistet, aber die sichtbare Kohärenz wird unkenntlich gemacht. Aus Sicht eines Prozessors kann der Prozessor in die Cachezeile speichern, aber der Prozessor prüft den Inhalt, der gerade aktualisiert wird, nicht. Zum Beispiel wird ein Wert der Cachezeile erhöht/verringert oder multipliziert usw., aber dies geschieht blind, ohne den Wert zu diesem bestimmten Zeitpunkt zu kennen. Wenn sich ein Prozessor die Daten anschauen möchte (z.B. ein Abruf, der kein „Fetch due to non-coherent“-Abruf ist), wird vor dem Abruf eine Serialisierung durchgeführt.
  • Wie vorstehend beschrieben wurde, sind Cachezeilen in dem MESI-Protokoll in einem der folgenden Zustände vorhanden: modified, exclusive, shared oder invalid. Die Zustände „exclusive“ und „shared“ werden von exklusiven/schreibgeschützten Abrufen eingegeben, die auf eine Cachespeicheradresse zugreifen; „modified“ verwendet einen exklusiven Abruf, gefolgt von einer Speicheroperation eines Prozessors; und „invalid“ hat einen Chip/Cachespeicher, der die Zeile entfernt oder ein Anfangsverzeichniszustand ist. Mit jedem Zustandsübergang werden Änderungen an der Cachezeile in den Speicher zurückgeschrieben, um Kohärenz sicherzustellen.
  • Mit dem Hinzufügen des Zustands „shared-modfiable“ oder „fetch non coherent (X)“ kann die Cachezeile als eine in einem Zustand vorhandene Cachezeile erkannt werden, in dem ein oder mehrere Kerne für z.B. eine gemeinsame Operation, wie beispielsweise das Erhöhen/Verringern eines Werts einer globalen Shared-modifiable-Struktur (z.B. eines gemeinsamen Debug-Zählers, eines anderen Zählers oder einer Sperre), und für andere komplexere Operationen gleichzeitig in die Cachezeile speichern können. Ohne gleichzeitiges Speichern kann ein Kern mit dem Speichern in die Cachezeile beginnen, bevor ein anderer Kern seine Speicherung abschließt, indem er die Änderungsanforderungen aus den privaten Cachespeichern in die gemeinsam genutzte(n) Cachespeicherstufe(n) eingibt, wo die Änderung an den zu der Cachezeile gehörenden Daten stattfindet.
  • Ein Beispiel eines Szenarios, das gemäß einem oder mehreren Aspekten der vorliegenden Erfindung ein aktualisiertes MESI-Protokoll verwendet, welches eine Fetchnon-coherent-Operation enthält, wird unter Bezugnahme auf 4 beschrieben. Die Zeitpunkte T0, T1 und T2 sind veranschaulicht, wobei T0 < T1 < T2.
  • Zum Zeitpunkt T0 führt der Kern 0 eine „Fetch due to Non-Coherent Store“-(FNC-)Anweisung 400 an der Cachezeile A im gemeinsam genutzten Cachespeicher 120 aus. Beruhend auf der „Fetch non-coherent“-Anforderung wird dem Kern 0 der Zugriff auf die Cachezeile A gewährt und dies ermöglicht dem Kern 0 die Ausgabe von read/modify/write-(Lesen/Ändern/Schreiben-)Operationen (z.B. erhöhen/verringern) an die gemeinsam genutzte Cachestufe, um in diesem Beispiel den Inhalt des Zielcachespeichers zu aktualisieren. Des Weiteren setzt die FNC-Operation einen Cachespeicher-Verzeichniszustand (shared-modifiable oder fetch non-coherent), was es einem oder mehreren Kernen ermöglicht, anschließend gleichzeitig in die gemeinsam genutzte Cachezeile zu speichern. Die „Fetch due to Non-Coherent“-Operation erlaubt mehreren Kernen, in die Cachezeile zu speichern, während die sichtbare Kohärenz der Cachezeile sowie die Datenkonsistenz aus Sicht eines Prozessors gewahrt bleiben. Eine gleichzeitige Aktualisierung/gleichzeitige Änderungen werden aufgrund dessen, dass der Serialisierungsnachteil in herkömmlichen Architekturen verschleiert wird, mit geringerem Aufwand ermöglicht.
  • Zum Zeitpunkt T1 führt der Kern 1 eine „Fetch due to Non-Coherent Store“-Anweisung 402 an der Cachezeile A im gemeinsam genutzten Cachespeicher 120 aus. Da diese Zeile einen Zustand „fetch non-coherent“ hat, kann der Kern 1 auch die gemeinsam genutzte Cachezeile aktualisieren, ohne dass eine Cross-Invalidate-Anforderung an den Kern 0 ausgegeben wird. Mehrere Speicheroperationen sowohl vom Kern 0 als auch dem Kern 1 können unter der Voraussetzung, dass kein dazwischenliegender Abruf vom Typ „nonconcurrent store“ (z.B. ein Abruf, bei dem es sich nicht um einen Abruf „non-coherent store“ handelt) stattfindet, an die Cachezeile A ausgegeben werden.
  • Zum Zeitpunkt T2 führt der Kern 2 eine „Fetch due to Non-Coherent“-Anweisung 404 an der Cachezeile A im gemeinsam genutzten Cachespeicher 120 aus. Da diese Zeile einen Zustand „fetch non-coherent“ hat, kann der Kern 2 auch die gemeinsam genutzte Cachezeile aktualisieren, ohne dass eine Cross-Invalidate-Anforderung an den Kern 1 (oder den Kern 0) ausgegeben wird.
  • In jeder der „Fetch due to Non-Coherent“-Operationen wird die gemeinsam genutzte Cachezeile aktualisiert, ohne dass die Daten in beliebige der lokalen, privaten Cachespeicher verbracht werden.
  • Ein weiteres Beispiel für die Verwendung von „Fetch due to Non-Coherent“-Operationen wird unter Bezugnahme auf 5 beschrieben. In diesem Beispiel gibt der Kern 0 zum Zeitpunkt T0 einen exklusiven Abruf 500 für die gemeinsam genutzte Cachezeile A aus. Dann gibt der Kern 1 zum Zeitpunkt T1 eine „Fetch due to Non-Coherent“-Anweisung 502 für die gemeinsam genutzte Cachezeile A aus. Da der Kern 0 anstelle der Shared-modifiable- oder der „Fetch non-coherent“-Eigentümerschaft über die exklusive Eigentümerschaft der Cachezeile A verfügt, wird eine Cross-Invalidate-Anforderung 504 an den Kern 0 ausgegeben, die die Eigentümerschaft von „exklusiv“ in „shared-modifiable“ oder „fetch non-coherent“ zurückstuft. Somit sind beide Kerne 0 und 1 in der Lage, die gemeinsam genutzte Cachezeile A zu aktualisieren.
  • Zum Zeitpunkt T2 führt der Kern 2 eine „Fetch due to Non-Coherent“-Anweisung 506 an der Cachezeile A im gemeinsam genutzten Cachespeicher 120 aus. Da diese Zeile einen Zustand „fetch non-coherent“ hat, kann der Kern 2 auch die gemeinsam genutzte Cachezeile aktualisieren.
  • Zum Zeitpunkt T3 beschließt der Kern 0, dass er über die exklusive Eigentümerschaft der gemeinsam genutzten Cachezeile A verfügen möchte. Daher gibt der Kern 0 einen exklusiven Abruf 510 für die gemeinsam genutzte Cachezeile aus. Beruhend auf dem exklusiven Abruf 510 werden die Cross-Invalidate-Anforderungen 512, 514 an den Kern 1 bzw. den Kern 2 ausgegeben. Beruhend auf dem exklusiven Abruf werden die Speicheroperationen in dem gemeinsam genutzten Cachespeicher zusammengeführt und der aktualisierte Wert wird an den Kern 0 zurückgegeben. Zum Beispiel werden die Cross-Invalidate-Anforderungen an die anderen Kerne dazu verwendet, die Kerne darüber zu informieren, dass sie das Speichern in die Cachezeile einstellen sollen. Alle ausstehenden Speicheroperationen sollen in den L3-Cachespeicher gelangen und abgeschlossen werden. Danach kann dem Prozessor, der den exklusiven Abruf ausgibt, eine aktualisierte Version der Cachezeile zurückgegeben werden.
  • Wie hierin beschrieben ist, haben mehrere Prozessoren gleichzeitigen Schreibzugriff auf eine gemeinsam genutzte Cachezeile, was die Notwendigkeit für Cross-Invalidate-Anforderungen und einen Serialisierungsaufwand überflüssig macht, wodurch die Verarbeitung innerhalb einer Datenverarbeitungsumgebung vereinfacht wird. Dies wird z.B. für Anwendungsfälle mit häufigen Schreib- und wenigen Leseoperationen verwendet.
  • Weitere Einzelheiten in Bezug auf die gleichzeitige Änderung einer gemeinsam genutzten Cachezeile werden unter Bezugnahme auf 6 beschrieben. Ein erster Prozessor oder Kern sendet eine „Fetch due to Non-Coherent Store“-Anforderung an eine bestimmte Cachespeicherstufe (z.B. L3), wobei er als Ziel die gemeinsam genutzte Cachezeile A hat, SCHRITT 600. Die Cachespeicherstufe setzt, beruhend auf dem Empfang der Abrufanforderung, den Cachespeicher-Verzeichniszustand für die anvisierte Cachezeile auf „shared-modifiable“ oder „fetch non-coherent“, SCHRITT 602. Des Weiteren können die zu der Cachezeile gehörenden Daten an den anfordernden Prozessor zurückgegeben werden oder unter der Voraussetzung, dass der Anfangszustand keine Rolle spielt, kann eine Abrufantwort an den anfordernden Prozessor zurückgegeben werden, SCHRITT 604. Der Prozessor beginnt mit dem Speichern in die Cachezeile, SCHRITT 606, wobei der aktualisierte Wert (oder z.B. die zu erhöhende/verringernde Menge) an den gemeinsam genutzten Cachespeicher für eine read-modify-write-Aktualisierung gesendet wird. Die Aktualisierung wird direkt an den gemeinsam genutzten Cachespeicher (z.B. den L3-Cachespeicher) gesendet und nicht in die privaten Cachespeicher (z.B. den L1-, L2-Cachespeicher) geschrieben.
  • Ein oder mehrere zusätzliche Prozessoren senden daraufhin eine „Fetch due to Non-Coherent Store“-Anforderung, um eine Erlaubnis für die Aktualisierung der gemeinschaftlichen, gemeinsam genutzten Cachezeile zu erhalten, SCHRITT 608. Die Cachespeicherstufe, beruhend auf dem Empfang der zusätzlichen Abrufanforderungen, aktualisiert das Cachespeicherverzeichnis, um Mehrfach-Eigentümerschaft anzugeben, SCHRITT 610, und gibt entweder eine Kopie der zu der Cachezeile gehörenden Daten oder eine einfache Abrufantwort zurück, SCHRITT 612. Der/die zusätzliche(n) Kerne senden daraufhin Speicheroperationen direkt an die Cachezeile (ohne in den/die privaten Cachespeicher zu speichern), SCHRITT 614. Die Speicherwerte geben z.B. die Erhöhungs-/Verringerungs-Offsetwerte an, die die Cachespeicherstufe verwendet, um den Datengehalt im Cachespeicher als eine read-modify-write-Operation zu aktualisieren.
  • Beruhend auf dem Empfang eines Verweises auf die Cachezeile (z.B. eines anderen Abruftyps als die „Fetch due to Non-Coherent-Store“-Anforderung), SCHRITT 616, erkennt die Cachespeicherstufe, dass ein Prozessor versucht, den Wert der zu der Cachezeile gehörenden Daten zu prüfen, und erzeugt einen Satz von Cross-Invalidate-Anforderungen an die Cachezeile, was mit der Cachespeicherstufe verbundene Kerne zwingt, das Speichern in die Cachezeile einzustellen, SCHRITT 618. Beruhend auf dem Empfang von Invalidierungsantworten von den Kernen, die über eine Shared-modifiable- oder „Fetch non-coherent“-Eigentümerschaft der Cachezeile verfügen, aktualisiert die Cachespeicherstufe beruhend auf dem Typ der Abrufoperation, die von dem Prozessor, der beabsichtigt, den Inhalt der zu der Cachezeile gehörenden Daten zu prüfen, in die Cachespeicherstufe gesendet wird, den Verzeichniszustand als „schreibgeschützt“ oder „exklusiv“ für den anfordernden Prozessor, SCHRITT 620. Somit wird beruhend auf dem Empfang einer anderen als einer „Fetch Non-Coherent Store“-Anforderung eine Serialisierung durchgeführt, bei der ausstehende Speicheroperationen angehalten werden, der Inhalt des Cachespeichers synchronisiert wird und der resultierende Wert an den anfordernden Prozessor zurückgegeben wird.
  • Um diesen Prozess zu vereinfachen, kann die Cachespeicherstufe einen kurzen RMW-Pufferspeicher (RMW = read, modify, write) haben, um die Durchführung der Operationen zu beschleunigen, was häufigere Speicheroperationen ermöglicht, als die doppelte Tiefe der Pipeline auf einer bestimmten Cachespeicherstufe vermuten lässt.
  • Beruhend auf dem Vorstehenden können in einem Beispiel mehrere Kerne gleichzeitig in dieselbe Cachezeile speichern, z.B., derselbe Softwarezähler oder ein anderer Softwarezähler in einer Cachezeile, ohne die Zählerwerte in die privaten Cachespeicher zu verbringen. Mehrere Prozessoren können gleichzeitig den Schreibzugriff auf eine einzige Cachezeile verwalten während sie die Datenintegrität über einen Verzeichniszustand „shared-modifiable“ oder „fetch non-coherent“ sicherstellen. Cross-Invalidate-Anforderungen werden nicht verwendet und der Serialisierungsaufwand wird verringert. Folglich kann die Performanz innerhalb der Datenverarbeitungsumgebung verbessert werden.
  • Ein oder mehrere Aspekte der vorliegenden Erfindung sind untrennbar mit Computertechnologie verbunden und vereinfachen die Verarbeitung innerhalb eines Computers, was deren Performanz verbessert. Weitere Einzelheiten einer einzelnen Ausführungsform zur Vereinfachung der Verarbeitung innerhalb einer Datenverarbeitungsumgebung, die sich auf einen oder mehrere Aspekte der vorliegenden Erfindung bezieht, werden unter Bezugnahme auf die 7A bis 7B beschrieben.
  • Unter Bezugnahme auf 7A werden in einer einzelnen Ausführungsform eine Vielzahl von Speicheranforderungen für das Speichern in einer gemeinsam genutzten Cachezeile von einer Vielzahl von Prozessoren der Datenverarbeitungsumgebung erhalten (700). Die Vielzahl der Speicheranforderungen ist von einem Typ „gleichzeitige Speicheroperation“ (701). Beruhend auf der Vielzahl der Speicheranforderungen werden Daten gleichzeitig in der gemeinsam genutzten Cachezeile gespeichert (702). Des Weiteren wird in einer einzelnen Ausführungsform ein Cachespeicher-Verzeichniszustand, der zu der gemeinsam genutzten Cachezeile gehört, auf „shared-modifiable“ gesetzt, was anzeigt, dass mehrere Speicheranforderungen von mehreren Prozessoren zulässig sind (704).
  • Als Beispiel enthalten die Daten eine Aktualisierung einer globalen Shared-modifiable-Struktur, die in der gemeinsam genutzten Cachezeile verwaltet wird (706). Die globale Shared-modifiable-Struktur wird von mehreren Prozessoren der Vielzahl der Prozessoren verwendet (708).
  • In einem weiteren Aspekt wird eine Abrufanforderung, die Zugriff auf die gemeinsam genutzte Cachezeile anfordert, erhalten (710). Die Abrufanforderung unterscheidet sich vom Typ „gleichzeitige Speicheroperation“ (711). Beruhend auf der Abrufanforderung wird eine Serialisierung für die gemeinsam genutzte Cachezeile durchgeführt (712) und beruhend auf der Beendigung der Serialisierung werden die Daten aus der gemeinsam genutzten Cachezeile gelesen (714).
  • Als ein Beispiel, unter Bezugnahme auf 7B, umfasst das Durchführen der Serialisierung das Anhalten von ausstehenden Speicheroperationen in die gemeinsam genutzte Cachezeile (720) und das Synchronisieren von Daten der gemeinsam genutzten Cachezeile (722).
  • Des Weiteren wird in einer einzelnen Ausführungsform beruhend auf der Abrufanforderung der Zustand der Eigentümerschaft der gemeinsam genutzten Cachezeile von „shared-modifiable“ in einen anderen Zustand geändert (724). Der andere Zustand ist exklusiv oder schreibgeschützt, beruhend auf der Abrufanforderung (726).
  • In einer einzelnen Ausführungsform umfasst das Erhalten der Vielzahl von Speicheranforderungen das Empfangen einer Vielzahl von „Fetch due to non-coherent“-Speicheranforderungen von der Vielzahl der Prozessoren (728). Wobei die „Fetch due to non-coherent“-Speicheranforderungen architekturdefiniert sind, um nicht blockierende Änderungen an der gemeinsam genutzten Cachezeile zuzulassen (730).
  • Überdies umfasst das Speichern in einer einzelnen Ausführungsform das Speichern der Daten direkt in der gemeinsam genutzten Cachezeile, ohne dass die Daten in einem oder mehreren privaten Cachespeichern der Vielzahl der Prozessoren gespeichert werden (732).
  • Andere Varianten und Ausführungsformen sind möglich.
  • Andere Arten von Datenverarbeitungsumgebungen können auch einen oder mehrere Aspekte der vorliegenden Erfindung enthalten und verwenden, darunter, ohne darauf beschränkt zu sein, Emulationsumgebungen, von denen ein Beispiel unter Bezugnahme auf 8A beschrieben wird. In diesem Beispiel enthält eine Datenverarbeitungsumgebung 20 zum Beispiel eine native zentrale Verarbeitungseinheit (CPU) 22, einen Speicher 24 und eine oder mehrere Eingabe-/Ausgabeeinheiten und/oder Schnittstellen 26, die zum Beispiel über einen oder mehrere Busse 28 und/oder andere Verbindungen miteinander verbunden sind. Als Beispiele kann die Datenverarbeitungsumgebung 20 einen von der International Business Machines Corporation, Armonk, New York, angebotenen IBM-PowerPC® -Prozessor oder einen IBM-Power Series®- oder einen IBM-pSeries-Server enthalten; und/oder andere Rechner, die auf von der International Business Machines Corporation, Intel oder anderen Unternehmen angebotenen Architekturen beruhen. PowerPC und Power Series sind Warenzeichen der International Business Machines Corporation, die weltweit in vielen Ländern eingetragen sind.
  • Die native zentrale Verarbeitungseinheit 22 enthält ein oder mehrere native Register 30, wie beispielsweise ein oder mehrere Mehrzweckregister und/oder ein oder mehrere Spezialregister, die während der Verarbeitung innerhalb der Umgebung verwendet werden. Diese Register enthalten Informationen, die den Zustand der Umgebung zu irgendeinem bestimmten Zeitpunkt darstellen.
  • Überdies führt die native zentrale Verarbeitungseinheit 22 im Speicher 24 gespeicherte Anweisungen und Code aus. In einem bestimmten Beispiel führt die zentrale Verarbeitungseinheit im Speicher 24 gespeicherten Emulator-Code 32 aus. Dieser Code ermöglicht es der in einer Architektur konfigurierten Datenverarbeitungsumgebung, eine andere Architektur zu emulieren. Zum Beispiel ermöglicht der Emulator-Code 32 Rechnern, die auf anderen Architekturen als der z/Architecture beruhen, wie beispielsweise PowerPC-Prozessoren, pSeries-Servern oder anderen Servern oder Prozessoren, die z/Architecture zu emulieren und Software und Anweisungen auszuführen, die beruhend auf der z/Architecture entwickelt wurden.
  • Weitere Einzelheiten in Bezug auf den Emulator-Code 32 werden unter Bezugnahme auf 8B beschrieben. Im Speicher 24 gespeicherte Gast-Anweisungen 40 weisen Software-Anweisungen (die z.B. mit Maschinenanweisungen korrelieren) auf, die für eine Ausführung in einer anderen Architektur als die der nativen CPU 22 entwickelt wurden. Beispielsweise wurden Gast-Anweisungen 40 möglicherweise für eine Ausführung auf einem Prozessor der z/Architecture konzipiert, werden stattdessen aber auf der nativen CPU 22 emuliert, bei der es sich zum Beispiel um einen Intel-Prozessor handeln kann. In einem Beispiel enthält der Emulator-Code 32 eine Anweisungsabrufroutine 42, um eine oder mehrere Gast-Anweisungen 40 aus dem Speicher 24 zu erhalten und um optional eine lokale Pufferung für die erhaltenen Anweisungen bereitzustellen. Er enthält auch eine Anweisungsumsetzungsroutine 44, um die Art der Gast-Anweisung festzustellen, die erhalten wurde, und um die Gast-Anweisung in eine oder mehrere entsprechende native Anweisungen 46 umzusetzen. Diese Umsetzung umfasst zum Beispiel das Kennzeichnen der Funktion, die durch die Gast-Anweisung ausgeführt werden soll, und das Wählen der nativen Anweisung(en) zum Ausführen dieser Funktion.
  • Außerdem enthält der Emulator-Code 32 eine Emulationssteuerungsroutine 48, um zu veranlassen, dass die nativen Anweisungen ausgeführt werden. Die Emulationssteuerungsroutine 48 kann die native CPU 22 veranlassen, eine Routine nativer Anweisungen auszuführen, die eine oder mehrere zuvor erhaltene Gast-Anweisungen emulieren, und am Ende dieser Ausführung die Steuerung an die Anweisungsabrufroutine zurückzugeben, um das Erhalten der nächsten Gast-Anweisung oder einer Gruppe von Gast-Anweisungen zu emulieren. Die Ausführung der nativen Anweisungen 46 kann das Laden von Daten aus dem Speicher 24 in ein Register; das Zurückspeichern von Daten aus einem Register in den Speicher; oder das Durchführen einer bestimmten Art einer arithmetischen oder logischen Operation, die von der Umsetzungsroutine bestimmt wird, umfassen.
  • Jede Routine ist zum Beispiel in Software ausgeführt, die im Speicher gespeichert und von der nativen zentralen Verarbeitungseinheit 22 ausgeführt wird. In weiteren Beispielen sind eine oder mehrere der Routinen oder Operationen in Firmware, Hardware, Software oder einer Kombination daraus ausgeführt. Die Register des emulierten Prozessors können unter Verwendung der Register 30 der nativen CPU oder durch Verwendung von Speicherplätzen im Speicher 24 emuliert werden. In Ausführungsformen können sich die Gast-Anweisungen 40, die nativen Anweisungen 46 und der Emulator-Code 32 in demselben Speicher befinden oder zwischen verschiedenen Speichereinheiten verteilt sein.
  • In der Verwendung hierin umfasst Firmware z.B. den Mikrocode des Prozessors. Sie umfasst zum Beispiel die Anweisungen auf Hardware-Ebene und/oder Datenstrukturen, die bei der Ausführung von Maschinencode einer höheren Ebene verwendet werden. In einer einzelnen Ausführungsform umfasst sie zum Beispiel proprietären Code, der üblicherweise als Mikrocode geliefert wird, welcher vertrauenswürdige Software oder Mikrocode, der spezifisch für die zugrunde liegende Hardware ist, umfasst und den Betriebssystemzugriff auf die System-Hardware steuert.
  • Eine Gast-Anweisung 40, die erhalten, umgesetzt und ausgeführt wird, kann zum Beispiel eine der hierin beschriebenen Anweisungen sein. Die Anweisung, die eine Anweisung von einer Architektur (z.B. der z/Architecture) ist, wird aus dem Speicher abgerufen, umgesetzt und als eine Abfolge von nativen Anweisungen 46 einer anderen Architektur (z.B. PowerPC, pSeries, Intel usw.) dargestellt. Diese nativen Anweisungen werden dann ausgeführt.
  • Ein oder mehrere Aspekte können sich auf das Cloud-Computing beziehen.
  • Es sei von vornherein klargestellt, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing enthält. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen weiteren Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud-Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften enthalten, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle.
  • Bei den Eigenschaften handelt es sich um die folgenden:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
  • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
  • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Der Ressourcen-Verbrauch kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Die Dienst-Modelle sind wie folgt:
    • Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende E-Mail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
  • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
  • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, das Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Bei den Einsatzmodellen handelt es sich um die folgenden:
    • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann in den eigenen Räumen oder fremden Räumen stehen.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und sie gehört einer Cloud-Dienste verkaufenden Organisation.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Herzen von Cloud-Computing liegt eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten aufweist.
  • Unter Bezugnahme auf 9 ist eine veranschaulichende Cloud-Computing-Umgebung 50 abgebildet. Wie gezeigt ist, weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der elektronische Assistent (PDA, personal digital assistant) oder das Mobiltelefon 54A, der Desktop-Computer 54B, der Laptop-Computer 54C und/oder das Automobil-Computer-System 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in einem oder in mehreren Netzwerken wie zum Beispiel privaten, Gemeinschafts-, öffentlichen oder hybriden Clouds, die hier vorstehend beschrieben wurden, oder in einer Kombination daraus zu Gruppen zusammengefasst (nicht gezeigt) werden. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienst anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die Arten von in 9 gezeigten Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 10 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (9) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 10 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie abgebildet ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören Mainframe-Computer 61; auf der RISC-(Reduced-Instruction-Set-Computer-)Architektur beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen Software-Komponenten eine Netzwerk-Anwendungsserver-Software 67 und Datenbank-Software 68.
  • Die Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann die Verwaltungsschicht 80 die nachstehend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung 82 stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen aufweisen. Die Sicherheit stellt die Identitätsüberprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 84 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 85 stellt die Anordnung vorab und die Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einem SLA bereit.
  • Eine Arbeitslastschicht 90 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalytikverarbeitung 94; Transaktionsverarbeitung 95; und Verarbeitung von gleichzeitigen Änderungen 96.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen Integrationsstufe technischer Details handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für eine integrierte Schaltung oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Zusätzlich zu dem Vorstehenden können ein oder mehrere Aspekte von einem Serviceanbieter, der die Verwaltung von Kundenumgebungen anbietet, bereitgestellt, angeboten, eingesetzt, verwaltet, gewartet usw. werden. Zum Beispiel kann der Serviceanbieter Computer-Code und/oder eine Computerinfrastruktur, die einen oder mehrere Aspekte für einen oder mehrere Kunden ausführt, erzeugen, pflegen, unterstützen usw. Der Serviceanbieter kann als Gegenleistung Zahlungen von dem Kunden im Rahmen eines Abonnement- und/oder Gebührenvertrags, als Beispiele, erhalten. Zusätzlich oder alternativ kann der Serviceanbieter Zahlungen aus dem Verkauf von Werbeinhalten an einen oder mehrere Dritte erhalten.
  • In einem Aspekt kann eine Anwendung zur Durchführung von einer oder mehreren Ausführungsformen eingesetzt werden. Als ein Beispiel weist das Einsetzen einer Anwendung das Bereitstellen von Computerinfrastruktur auf, die so betrieben werden kann, dass sie eine oder mehrere Ausführungsformen ausführt.
  • Als ein weiterer Aspekt kann eine Datenverarbeitungsinfrastruktur eingesetzt werden, die das Integrieren von computerlesbarem Code in ein Datenverarbeitungssystem aufweist, in dem der Code in Verbindung mit dem Datenverarbeitungssystem in der Lage ist, eine oder mehrere Ausführungsformen auszuführen.
  • Als noch ein weiterer Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungsinfrastruktur bereitgestellt werden, die das Integrieren von computerlesbarem Code in ein Computersystem aufweist. Das Computersystem weist einen durch einen Computer lesbaren Datenträger auf, in dem der Computer-Datenträger eine oder mehrere Ausführungsformen aufweist. Der Code in Verbindung mit dem Computersystem ist in der Lage, eine oder mehrere Ausführungsformen auszuführen.
  • Zwar sind vorstehend verschiedene Ausführungsformen beschrieben, doch handelt es sich dabei lediglich um Beispiele. Zum Beispiel können Datenverarbeitungsumgebungen anderer Architekturen verwendet werden, um eine oder mehrere Ausführungsformen einzubinden und zu verwenden. Des Weiteren können verschiedene Anweisungen oder Operationen verwendet werden. Viele Variationen sind möglich.
  • Des Weiteren können andere Arten von Datenverarbeitungsumgebungen profitieren und verwendet werden. Als ein Beispiel kann ein für die Speicherung und/oder Ausführung von Programmcode geeignetes Datenverarbeitungssystem verwendet werden, das mindestens zwei Prozessoren enthält, die über einen Systembus direkt oder indirekt mit Speicherelementen verbunden sind. Zu den Speicherelementen gehört zum Beispiel lokaler Speicher, der während der tatsächlichen Ausführung des Programmcodes genutzt wird, Massenspeicher und Cachespeicher, die eine vorübergehende Speicherung von mindestens einem Teil des Programmcodes ermöglichen, um die Häufigkeit zu verringern, mit der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe-/Ausgabe- bzw. E/A-Einheiten (darunter, ohne darauf beschränkt zu sein, Tastaturen, Bildschirme, Zeigereinheiten, DASD, Band, CDs, DVDs, Thumb-Drives und andere Speichermedien usw.) können entweder direkt oder über dazwischenliegende E/A-Controller mit dem System verbunden sein. Netzadapter können ebenfalls mit dem System verbunden sein, um zu ermöglichen, dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder fernen Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netzwerke verbunden werden kann. Modems, Kabelmodems und Ethernet-Karten sind nur einige der verfügbaren Arten von Netzadaptern.

Claims (27)

  1. Durch einen Computer ausgeführtes Verfahren, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, wobei das Verfahren aufweist: Erhalten, von einer Vielzahl von Prozessoren der Datenverarbeitungsumgebung, einer Vielzahl von Speicheranforderungen für das Speichern in einer gemeinsam genutzten Cachezeile, wobei die Vielzahl der Speicheranforderungen von einem Typ „gleichzeitige Speicheroperation“ ist; und beruhend auf der Vielzahl der Speicheranforderungen gleichzeitiges Speichern von Daten in der gemeinsam genutzten Cachezeile.
  2. Verfahren nach Anspruch 1, wobei das Verfahren des Weiteren das Setzen eines Cachespeicher-Verzeichniszustands, der zu der gemeinsam genutzten Cachezeile gehört, auf „shared-modifiable“ aufweist, was anzeigt, dass mehrere Speicheranforderungen durch mehrere Prozessoren zulässig sind.
  3. Verfahren nach einem der vorhergehenden beiden Ansprüche, wobei die Daten eine Aktualisierung einer globalen Shared-modifiable-Struktur aufweisen, die in der gemeinsam genutzten Cachezeile verwaltet wird.
  4. Verfahren nach Anspruch 3, wobei die globale Shared-modifiable-Struktur von mehreren Prozessoren der Vielzahl der Prozessoren verwendet wird.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren des Weiteren aufweist: Erhalten einer Abrufanforderung, die Zugriff auf die gemeinsam genutzte Cachezeile anfordert, wobei sich die Abrufanforderung von dem Typ „gleichzeitige Speicheroperation“ unterscheidet; Durchführen einer Serialisierung für die gemeinsam genutzte Cachezeile beruhend auf der Abrufanforderung; und Lesen der Daten aus der gemeinsam genutzten Cachezeile beruhend auf der Beendigung der Serialisierung.
  6. Verfahren nach Anspruch 5, wobei das Durchführen der Serialisierung aufweist: Anhalten von ausstehenden Speicheroperationen in die gemeinsam genutzte Cachezeile; und Synchronisieren von Daten der gemeinsam genutzten Cachezeile.
  7. Verfahren nach einem der beiden Ansprüche 5 oder 6, wobei das Verfahren des Weiteren das Ändern des Zustands der Eigentümerschaft der gemeinsam genutzten Cachezeile, beruhend auf der Abrufanforderung, von „shared-modifiable“ in einen anderen Zustand aufweist.
  8. Verfahren nach Anspruch 7, wobei der andere Zustand beruhend auf der Abrufanforderung exklusiv oder schreibgeschützt ist.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Erhalten der Vielzahl der Speicheranforderungen das Empfangen einer Vielzahl von „Fetch due to non-coherent“-Speicheranforderungen von der Vielzahl der Prozessoren aufweist, wobei die Vielzahl der „Fetch due to non-coherent“-Speicheranforderungen architekturdefiniert ist, um nicht blockierende Änderungen an der gemeinsam genutzten Cachezeile zuzulassen.
  10. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Speichern das Speichern der Daten direkt in der gemeinsam genutzten Cachezeile aufweist, ohne dass die Daten in einem oder mehreren privaten Cachespeichern der Vielzahl der Prozessoren gespeichert werden.
  11. Computersystem, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, wobei das Computersystem aufweist: einen Speicher; und mindestens einen Prozessor, der mit dem Speicher Daten austauscht, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren durchführt, wobei das Verfahren aufweist: Erhalten, von einer Vielzahl von Prozessoren der Datenverarbeitungsumgebung, einer Vielzahl von Speicheranforderungen für das Speichern in einer gemeinsam genutzten Cachezeile, wobei die Vielzahl der Speicheranforderungen von einem Typ „gleichzeitige Speicheroperation“ ist; und beruhend auf der Vielzahl der Speicheranforderungen gleichzeitiges Speichern von Daten in der gemeinsam genutzten Cachezeile.
  12. System nach Anspruch 11, wobei das Verfahren des Weiteren das Setzen eines Cachespeicher-Verzeichniszustands, der zu der gemeinsam genutzten Cachezeile gehört, auf „shared-modifiable“ aufweist, was anzeigt, dass mehrere Speicheranforderungen durch mehrere Prozessoren zulässig sind.
  13. System nach einem der beiden Ansprüche 11 oder 12, wobei die Daten eine Aktualisierung einer globalen Shared-modifiable-Struktur aufweisen, die in der gemeinsam genutzten Cachezeile verwaltet wird.
  14. System nach Anspruch 13, wobei die globale Shared-modifiable-Struktur von mehreren Prozessoren der Vielzahl der Prozessoren verwendet wird.
  15. System nach einem der Ansprüche 11 bis 14, wobei das Verfahren des Weiteren aufweist: Erhalten einer Abrufanforderung, die Zugriff auf die gemeinsam genutzte Cachezeile anfordert, wobei sich die Abrufanforderung von dem Typ „gleichzeitige Speicheroperation“ unterscheidet; Durchführen einer Serialisierung für die gemeinsam genutzte Cachezeile beruhend auf der Abrufanforderung; und Lesen der Daten aus der gemeinsam genutzten Cachezeile beruhend auf der Beendigung der Serialisierung.
  16. System nach Anspruch 15, wobei das Durchführen der Serialisierung aufweist: Anhalten von ausstehenden Speicheroperationen in die gemeinsam genutzte Cachezeile; und Synchronisieren von Daten der gemeinsam genutzten Cachezeile.
  17. System nach einem der beiden Ansprüche 15 oder 16, wobei das Verfahren des Weiteren das Ändern des Zustands der Eigentümerschaft der gemeinsam genutzten Cachezeile, beruhend auf der Abrufanforderung, von „shared-modifiable“ in einen anderen Zustand aufweist.
  18. System nach Anspruch 17, wobei der andere Zustand beruhend auf der Abrufanforderung exklusiv oder schreibgeschützt ist.
  19. System nach einem der Ansprüche 11 bis 18, wobei das Erhalten der Vielzahl der Speicheranforderungen das Empfangen einer Vielzahl von „Fetch due to non-coherent“-Speicheranforderungen von der Vielzahl der Prozessoren aufweist, wobei die Vielzahl der „Fetch due to non-coherent“-Speicheranforderungen architekturdefiniert sind, um nicht blockierende Änderungen an der gemeinsam genutzten Cachezeile zuzulassen.
  20. Computersystem nach den Ansprüchen 11 bis 19, wobei das Speichern das Speichern der Daten direkt in der gemeinsam genutzten Cachezeile aufweist, ohne dass die Daten in einem oder mehreren privaten Cachespeichern der Vielzahl der Prozessoren gespeichert werden.
  21. Computerprogrammprodukt, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, wobei das Computerprogrammprodukt aufweist: ein durch einen Computer lesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren nach einem der Ansprüche 1 bis 10 durchzuführen.
  22. Computerprogramm, das auf einem durch einen Computer lesbaren Datenträger gespeichert ist und in den internen Speicher eines digitalen Computers ladbar ist, wobei das Computerprogramm Teile von Software-Code aufweist, wenn das Programm auf einem Computer ausgeführt wird, um das Verfahren nach einem der Ansprüche 1 bis 10 durchzuführen.
  23. Durch einen Computer ausgeführtes Verfahren, um die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, wobei das durch einen Computer ausgeführte Verfahren aufweist: Erhalten, von einer Vielzahl von Prozessoren der Datenverarbeitungsumgebung, einer Vielzahl von Speicheranforderungen für das Speichern in einer gemeinsam genutzten Cachezeile, wobei die Vielzahl der Speicheranforderungen von einem Typ „gleichzeitige Speicheroperation“ ist; und beruhend auf der Vielzahl der Speicheranforderungen gleichzeitiges Speichern von Daten in der gemeinsam genutzten Cachezeile.
  24. Durch einen Computer ausgeführtes Verfahren nach Anspruch 16, das des Weiteren das Setzen eines Cachespeicher-Verzeichniszustands, der zu der gemeinsam genutzten Cachezeile gehört, auf „shared-modifiable“ aufweist, was anzeigt, dass mehrere Speicheranforderungen durch mehrere Prozessoren zulässig sind.
  25. Durch einen Computer ausgeführtes Verfahren nach Anspruch 16, das des Weiteren aufweist: Erhalten einer Abrufanforderung, die Zugriff auf die gemeinsam genutzte Cachezeile anfordert, wobei sich die Abrufanforderung von dem Typ „gleichzeitige Speicheroperation“ unterscheidet; Durchführen einer Serialisierung für die gemeinsam genutzte Cachezeile beruhend auf der Abrufanforderung; und Lesen der Daten aus der gemeinsam genutzten Cachezeile beruhend auf der Beendigung der Serialisierung.
  26. Durch einen Computer ausgeführtes Verfahren nach Anspruch 16, wobei das Erhalten der Vielzahl der Speicheranforderungen das Empfangen einer Vielzahl von „Fetch due to non-coherent“-Speicheranforderungen von der Vielzahl der Prozessoren aufweist, wobei die Vielzahl der „Fetch due to non-coherent“-Speicheranforderungen architekturdefiniert ist, um nicht blockierende Änderungen an der gemeinsam genutzten Cachezeile zuzulassen.
  27. Durch einen Computer ausgeführtes Verfahren nach Anspruch 16, wobei das Speichern das Speichern der Daten direkt in der gemeinsam genutzten Cachezeile aufweist, ohne dass die Daten in einem oder mehreren privaten Cachespeichern der Vielzahl der Prozessoren gespeichert werden.
DE112018004636.2T 2017-11-10 2018-11-08 Gleichzeitige änderung einer gemeinsam genutzten cachezeile durch mehrere prozessoren Active DE112018004636B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/809,049 2017-11-10
US15/809,049 US10769068B2 (en) 2017-11-10 2017-11-10 Concurrent modification of shared cache line by multiple processors
PCT/IB2018/058761 WO2019092622A1 (en) 2017-11-10 2018-11-08 Concurrent modification of shared cache line by multiple processors

Publications (2)

Publication Number Publication Date
DE112018004636T5 DE112018004636T5 (de) 2020-07-16
DE112018004636B4 true DE112018004636B4 (de) 2021-12-30

Family

ID=66433437

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018004636.2T Active DE112018004636B4 (de) 2017-11-10 2018-11-08 Gleichzeitige änderung einer gemeinsam genutzten cachezeile durch mehrere prozessoren

Country Status (6)

Country Link
US (1) US10769068B2 (de)
JP (1) JP7083446B2 (de)
CN (1) CN111279323B (de)
DE (1) DE112018004636B4 (de)
GB (1) GB2581753B (de)
WO (1) WO2019092622A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200054B2 (en) * 2018-06-26 2021-12-14 Intel Corporation Atomic-copy-XOR instruction for replacing data in a first cacheline with data from a second cacheline
US10893120B2 (en) * 2018-09-19 2021-01-12 International Business Machines Corporation Data caching and data-aware placement to accelerate machine learning applications
US11989128B1 (en) * 2022-12-15 2024-05-21 International Business Machines Corporation Invalidity protection for shared cache lines

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4136386A (en) 1977-10-06 1979-01-23 International Business Machines Corporation Backing store access coordination in a multi-processor system
US5291442A (en) * 1990-10-31 1994-03-01 International Business Machines Corporation Method and apparatus for dynamic cache line sectoring in multiprocessor systems
US5715428A (en) 1994-02-28 1998-02-03 Intel Corporation Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US6115804A (en) * 1999-02-10 2000-09-05 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention
US6314491B1 (en) 1999-03-01 2001-11-06 International Business Machines Corporation Peer-to-peer cache moves in a multiprocessor data processing system
US6928525B1 (en) 2000-04-28 2005-08-09 Hewlett-Packard Development Company, L.P. Per cache line semaphore for cache access arbitration
US6748498B2 (en) 2000-06-10 2004-06-08 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method implementing store-conditional memory transactions while an associated directory entry is encoded as a coarse bit vector
US6516393B1 (en) * 2000-09-29 2003-02-04 International Business Machines Corporation Dynamic serialization of memory access in a multi-processor system
US6571322B2 (en) 2000-12-28 2003-05-27 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for cache intervention
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
JP4208895B2 (ja) 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
US8935483B2 (en) 2009-04-27 2015-01-13 Lsi Corporation Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor
US8195883B2 (en) * 2010-01-27 2012-06-05 Oracle America, Inc. Resource sharing to reduce implementation costs in a multicore processor
US10203881B2 (en) * 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
EP2880541A4 (de) * 2012-07-31 2016-01-20 Hewlett Packard Development Co Systeme und verfahren zur kontrolle des zugriffs auf eine gemeinsame datenstruktur mit leser-/schreibersperren mit mehreren untersperren
US9417910B2 (en) 2012-12-20 2016-08-16 Oracle International Corporation System and method for implementing shared probabilistic counters storing update probability values
US9092345B2 (en) 2013-08-08 2015-07-28 Arm Limited Data processing systems
US10146690B2 (en) * 2016-06-13 2018-12-04 Intel Corporation Synchronization logic for memory requests

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments

Also Published As

Publication number Publication date
JP2021502629A (ja) 2021-01-28
DE112018004636T5 (de) 2020-07-16
JP7083446B2 (ja) 2022-06-13
US10769068B2 (en) 2020-09-08
WO2019092622A1 (en) 2019-05-16
GB202008687D0 (en) 2020-07-22
CN111279323A (zh) 2020-06-12
GB2581753A (en) 2020-08-26
GB2581753B (en) 2021-01-06
US20190146916A1 (en) 2019-05-16
CN111279323B (zh) 2023-10-31

Similar Documents

Publication Publication Date Title
DE112016003355B4 (de) Sicherer Einsatz einer Anwendung über Einsatzorte hinweg
DE112015001977B4 (de) Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung
DE112016003120B4 (de) Umleiten einer Kopie beim Schreiben
DE112016005571T5 (de) Aufrufergeschützte stapelrücksprungadresse in einer hardware-verwalteten stapelarchitektur
DE112012003316T5 (de) Dynamisches Erwerben von Datenverarbeitungsressourcen in einer vernetzten Datenverarbeitungsumgebung
DE102016119298B4 (de) Zeitpunktkopieren mit klonen von ketten
DE112018004636B4 (de) Gleichzeitige änderung einer gemeinsam genutzten cachezeile durch mehrere prozessoren
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE112015000203T5 (de) &#34;Compare and Delay&#34;-Befehle
DE102016222861A1 (de) Transparentes, sicheres Durchführen von Abrufvorgängen
DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung
DE112017005588T5 (de) Speichern und abrufen von eingeschränkten datensätzen in und aus einem cloud-netzwerk mit nichteingeschränkten datensätzen
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE112017000163T5 (de) Priorisierung von Transaktionen
DE112017005015T5 (de) Verarbeiten von gleichgeordneten Aufrufen (SIBLING CALLS)
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE112019000421T5 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster
DE112019003130T5 (de) Hsm-selbstzerstörung in einer hybriden cloud-kms-lösung
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen
DE112018004138T5 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE112021005881T5 (de) Inline datenpakettransformationen
DE112018004415B4 (de) Optimierung von cloud-ressourcen bei operationen in mehrstufigem speicher auf richtliniengrundlage
DE112019002052T5 (de) Datenschutzsensibilisierung bei der bereitstellung von arbeitslasten

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
R020 Patent grant now final