DE112020000843T5 - Ausführen mehrerer datenanforderungen von mehrkernprozessoren - Google Patents

Ausführen mehrerer datenanforderungen von mehrkernprozessoren Download PDF

Info

Publication number
DE112020000843T5
DE112020000843T5 DE112020000843.6T DE112020000843T DE112020000843T5 DE 112020000843 T5 DE112020000843 T5 DE 112020000843T5 DE 112020000843 T DE112020000843 T DE 112020000843T DE 112020000843 T5 DE112020000843 T5 DE 112020000843T5
Authority
DE
Germany
Prior art keywords
core
request
state
data
cache controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112020000843.6T
Other languages
English (en)
Inventor
Ralf Winkelmann
Michael Fee
Matthias Klein
Carsten Otte
Edward Chencinski
Hanno Eichelberger
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 DE112020000843T5 publication Critical patent/DE112020000843T5/de
Granted legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Abstract

Die vorliegende Offenbarung bezieht sich auf ein Verfahren für ein Computersystem, das eine Mehrzahl von Prozessorkernen aufweist, wobei ein zwischengespeichertes Datenelement einem ersten Kern der Prozessorkerne zugewiesen ist, um ausschließlich ein atomares Primitiv durch den ersten Kern auszuführen. Solange das Ausführen des atomaren Primitivs durch den ersten Kern nicht abgeschlossen ist, weist das Verfahren Empfangen an einem Cache-Controller einer Anforderung zum Zugreifen auf das Datenelement von einem zweiten Kern auf. Als Reaktion auf Feststellen, dass eine zweite Anforderung des Datenelements von einem dritten Kern der Mehrzahl von Prozessorkernen vor Empfangen der Anforderung vom zweiten Kern empfangen wird, kann eine Ablehnungsnachricht an den zweiten Kern zurückgesendet werden.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf das Gebiet der digitalen Computersysteme und insbesondere auf ein Verfahren für ein Computersystem, das eine Mehrzahl von Prozessorkernen aufweist.
  • Beim nebenläufigen Programmieren können gleichzeitige Zugriffe auf gemeinsam genutzte Ressourcen zu unerwartetem oder fehlerhaftem Verhalten führen, sodass Teile eines Programms, in denen auf die gemeinsam genutzte Ressource zugegriffen wird, geschützt werden können. Dieser geschützte Bereich kann als atomares Primitiv, kritischer Abschnitt oder kritischer Bereich bezeichnet werden. Das atomare Primitiv kann auf eine gemeinsam genutzte Ressource zugreifen, z.B. eine Datenstruktur, die im Kontext mehrerer gleichzeitiger Zugriffe nicht korrekt funktionieren würde. Es besteht jedoch die Notwendigkeit, die Verwendung eines atomaren Primitivs in einem Mehrkernprozessor besser zu steuern.
  • KURZDARSTELLUNG
  • Verschiedene Ausführungsformen stellen ein Verfahren für ein Computersystem bereit, das eine Mehrzahl von Prozessorkernen, ein Computerprogrammprodukt und ein Prozessorsystem aufweist, wie es durch den Gegenstand der unabhängigen Ansprüche beschrieben wird. Vorteilhafte Ausführungsformen sind in den abhängigen Ansprüchen beschrieben. Ausführungsformen der vorliegenden Erfindung können frei miteinander kombiniert werden, wenn sie sich nicht gegenseitig ausschließen.
  • Bei einem Aspekt bezieht sich die vorliegende Offenbarung auf ein Verfahren für ein Computersystem, das eine Mehrzahl von Prozessorkernen aufweist, wobei ein Datenelement ausschließlich einem ersten Kern der Mehrzahl von Prozessorkernen zum Ausführen eines atomaren Primitivs durch den ersten Kern zugewiesen wird. Solange das Ausführen des atomaren Primitivs durch den ersten Kern nicht abgeschlossen ist, weist das Verfahren Empfangen einer Anforderung zum Zugreifen auf das Datenelement an einem Cache-Controller von einem zweiten Kern der Prozessorkerne auf; sowie als Reaktion auf ein Feststellen, dass eine andere Anforderung des Datenelements von einem dritten Kern der Mehrzahl von Prozessorkernen empfangen wird, bevor die Anforderung des zweiten Kerns empfangen wird, Zurücksenden einer Ablehnungsnachricht an den zweiten Kern, wobei die Ablehnungsnachricht an den zweiten Kern weiterhin anzeigt, dass eine andere Anforderung auf das atomare Primitiv wartet, andernfalls Senden einer Aufhebungsanforderung (invalidation request) an den ersten Kern zum Aufheben eines exklusiven Zugriffs auf das Datenelement durch den ersten Kern. Das Verfahren umfasst weiterhin Empfangen einer Antwort vom ersten Kern, die eine positive Antwort auf die Aufhebungsanforderung anzeigt; und als Reaktion auf die positive Antwort auf die Aufhebungsanforderung vom ersten Kern Antworten des Cache-Controllers an den zweiten Kern, dass die Daten für den Zugriff verfügbar sind.
  • In beispielhaften Ausführungsformen umfasst das Verfahren weiterhin Zurücksenden einer Ablehnungsnachricht für jede empfangene Anforderung des Datenelements durch den Cache-Controller, während der dritte Kern noch auf das Datenelement wartet.
  • In beispielhaften Ausführungsformen umfasst das Verfahren weiterhin Bereitstellen eines Cache-Protokolls, das mehrere mögliche Zustände des Cache-Controllers anzeigt, wobei jeder Zustand der mehreren möglichen Zustände jeweiligen Aktionen zugehörig ist, die von dem Cache-Controller auszuführen sind, wobei das Verfahren Empfangen der Anforderung, wenn sich der Cache-Controller in einem ersten Zustand der mehreren möglichen Zustände befindet, und Umschalten durch den Cache-Controller vom ersten Zustand in einen zweiten Zustand der mehreren möglichen Zustände umfasst, sodass das Feststellen im zweiten Zustand des Cache-Controllers in Übereinstimmung mit Aktionen des zweiten Zustands durchgeführt wird. Das Verfahren umfasst weiterhin Umschalten vom zweiten Zustand in einen dritten Zustand der mehreren möglichen Zustände, sodass das Zurücksenden im dritten Zustand in Übereinstimmung mit Aktionen durchgeführt wird, die dem dritten Zustand zugehörig sind, oder Umschalten vom zweiten Zustand in einen vierten Zustand der mehreren möglichen Zustände, sodass die Schritte des Sendens der Aufhebungsanforderung, des Empfangens und des Antwortens im vierten Zustand in Übereinstimmung mit Aktionen durchgeführt werden, die dem vierten Zustand zugehörig sind.
  • Bei einem anderen Aspekt bezieht sich die vorliegende Offenbarung auf ein Computerprogrammprodukt, das ein oder mehrere durch einen Computer lesbare Speichermedien aufweist, die gemeinsam Programmanweisungen speichern, die durch einen Prozessor oder eine programmierbare Schaltung ausführbar sind, um den Prozessor oder die programmierbare Schaltung zu veranlassen, ein Verfahren für ein Computersystem durchzuführen, das eine Mehrzahl von Prozessorkernen aufweist, wobei ein Datenelement ausschließlich einem ersten Kern der Mehrzahl von Prozessorkernen zugewiesen ist, um ein atomares Primitiv durch den ersten Kern auszuführen; wobei, solange das Ausführen des atomaren Primitivs durch den ersten Kern nicht abgeschlossen ist, das Verfahren Empfangen einer Anforderung zum Zugreifen auf das Datenelement an einem Cache-Controller von einem zweiten Kern der Prozessorkerne aufweist; sowie als Reaktion auf ein Feststellen, dass eine andere Anforderung des Datenelements von einem dritten Kern der Mehrzahl von Prozessorkernen empfangen wird, bevor die Anforderung des zweiten Kerns empfangen wird, Zurücksenden einer Ablehnungsnachricht an den zweiten Kern, wobei die Ablehnungsnachricht an den zweiten Kern weiterhin anzeigt, dass eine andere Anforderung auf das atomare Primitiv wartet, andernfalls Senden einer Aufhebungsanforderung an den ersten Kern zum Aufheben eines exklusiven Zugriffs auf das Datenelement durch den ersten Kern. Das Verfahren umfasst weiterhin Empfangen einer Antwort vom ersten Kern, die eine positive Antwort auf die Aufhebungsanforderung anzeigt; und als Reaktion auf die positive Antwort auf die Aufhebungsanforderung vom ersten Kern Antworten des Cache-Controllers an den zweiten Kern, dass die Daten für den Zugriff verfügbar sind.
  • Bei einem anderen Aspekt bezieht sich die vorliegende Offenbarung auf ein Prozessorsystem, bei dem durch einen Cache-Controller des Prozessorsystems eine Kohärenz aufrechterhalten wird, wobei das Prozessorsystem eine Mehrzahl von Prozessorkernen aufweist, wobei ein Datenelement ausschließlich einem ersten Kern der Mehrzahl von Prozessorkernen zum Ausführen eines atomaren Primitivs durch den ersten Kern zugewiesen wird. Der Cache-Controller ist konfiguriert für Empfangen einer Anforderung zum Zugreifen auf das Datenelement von einem zweiten Kern der Mehrzahl von Prozessorkernen, solange das Ausführen des atomaren Primitivs durch den ersten Kern nicht abgeschlossen ist; sowie als Reaktion auf ein Feststellen, dass eine andere Anforderung des Datenelements von einem dritten Kern der Mehrzahl von Prozessorkernen empfangen wird, bevor die Anforderung des zweiten Kerns empfangen wird, Zurücksenden einer Ablehnungsnachricht an den zweiten Kern, wobei die Ablehnungsnachricht an den zweiten Kern weiterhin anzeigt, dass eine andere Anforderung auf das atomare Primitiv wartet, andernfalls Senden einer Aufhebungsanforderung an den ersten Kern zum Aufheben eines exklusiven Zugriffs auf das Datenelement durch den ersten Kern; Empfangen einer Antwort vom ersten Kern, die eine positive Antwort auf die Aufhebungsanforderung anzeigt; und als Reaktion auf die positive Antwort auf die Aufhebungsanforderung vom ersten Kern, Antworten des Cache-Controllers an den zweiten Kern, dass die Daten für den Zugriff verfügbar sind.
  • In beispielhaften Ausführungsformen umfasst der dritte Kern des Prozessorsystems eine logische Schaltung zum Ausführen einer vordefinierten Anweisung, wobei der Cache-Controller konfiguriert ist, den Schritt des Feststellens als Reaktion auf das Ausführen der vordefinierten Anweisung durch die logische Schaltung durchzuführen.
  • Figurenliste
  • In den folgenden Ausführungsformen wird die Erfindung lediglich beispielhaft unter Bezugnahme auf die Zeichnungen ausführlich beschrieben, in denen:
    • 1 ein Beispiel für ein Mehrprozessorsystem gemäß den Ausführungsformen der vorliegenden Offenbarung zeigt.
    • 2A einen Ablaufplan eines Verfahrens zum Verarbeiten von Datenanforderungen mehrerer Prozessorkerne gemäß Ausführungsformen der vorliegenden Offenbarung zeigt.
    • 2B ein Blockschaubild ist, das ein Verfahren zum Verarbeiten von Datenanforderungen mehrerer Prozessorkerne gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 3 einen Ablaufplan eines Verfahrens gemäß Ausführungsformen der vorliegenden Offenbarung zum Implementieren einer Sperre für die Arbeitslastverteilung in einem Computersystem zeigt, das eine Mehrzahl von Prozessorkernen aufweist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung werden zum Zwecke der Veranschaulichung vorgestellt, sollen jedoch nicht erschöpfend oder auf die Ausführungsformen beschränkt sein. Für Fachleute ist offensichtlich, dass viele Änderungen und Abwandlungen möglich sind, ohne vom Anwendungsbereich und Erfindungsgedanken der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber Technologien auf dem Markt bestmöglich zu erläutern oder Fachleuten ein Verständnis zu ermöglichen.
  • Wenn ein bestimmter Prozessorkern in ein atomares Primitiv eintritt, kann die vorliegende Offenlegung verhindern, dass andere Prozessorkerne auf den bestimmten Prozessorkern warten müssen (z.B. durch ständiges Anfordern einer Sperre), bis er das atomare Primitiv durchlaufen hat. Die anderen Prozessorkerne können andere Aufgaben durchführen, während das atomare Primitiv ausgeführt wird. Dies kann eine effiziente Nutzung der Prozessorressourcen ermöglichen. Die Begriffe „Kern“ und „Prozessorkern“ werden hier austauschbar verwendet.
  • Das atomare Primitiv kann durch einen Speicherort und einen Satz von einer oder mehreren Anweisungen definiert sein. Der Satz von einer oder mehreren Anweisungen kann Zugriff auf den Speicherort haben. Der Speicherort kann mit einer Sperre verbunden sein, die den Zugang zu diesem Speicherort begrenzt. Um Zugang zum atomaren Primitiv zu erhalten, muss die Sperre angefordert werden. Sobald das atomare Primitiv angefordert wurde, wird es ausschließlich von einem Kern, der die Sperre angefordert hat, ausgeführt (d.h., der Anweisungssatz wird ausgeführt). Sobald die Sperre aufgehoben ist, bedeutet dies, dass der Kern das atomare Primitiv verlassen hat.
  • Gemäß einer Ausführungsform weist das Feststellen, dass die andere Anforderung des dritten Kerns vor der Anforderung des zweiten Kerns empfangen wird, ein Feststellen auf, dass der dritte Kern auf das Datenelement wartet. Dies kann beispielsweise durch Verwenden von Zuständen erfolgen, die Datenelementen zugehörig sind, wobei ein Zustand eines Datenelements anzeigen kann, dass ein bestimmter Kern auf das Datenelement wartet.
  • Gemäß einer Ausführungsform weist das Verfahren weiterhin Zurücksenden einer Ablehnungsnachricht für jede weitere empfangene Anforderung des Datenelements durch den Cache-Controller auf, während der dritte Kern noch auf das Datenelement wartet. Die weitere Anforderung kann von einem anderen Prozessorkern der Prozessorkerne empfangen werden. Zum Beispiel hat der erste Kern eine Sperre, und der dritte Kern wartet auf das Datenelement. Nicht nur wird der zweite Kern durch Empfangen einer Ablehnungsnachricht abgelehnt, sondern alle Kerne nach dem zweiten Kern würden ebenfalls abgelehnt, während der dritte Kern noch auf das Datenelement wartet.
  • Gemäß einer Ausführungsformen weist das Verfahren weiterhin Bereitstellen eines Cache-Protokolls auf, das mehrere mögliche Zustände des Cache-Controllers anzeigt, wobei jeder Zustand der mehreren Zustände jeweiligen Aktionen zugehörig ist, die vom Cache-Controller durchzuführen sind, wobei das Verfahren aufweist: Empfangen der Anforderung, wenn sich der Cache-Controller in einem ersten Zustand der mehreren Zustände befindet, Umschalten vom ersten Zustand in einen zweiten Zustand durch den Cache-Controller, sodass das Feststellen im zweiten Zustand des Cache-Controllers in Übereinstimmung mit Aktionen des zweiten Zustands durchgeführt wird, und Umschalten vom zweiten Zustand in einen dritten Zustand der mehreren Zustände, sodass das Zurücksenden im dritten Zustand in Übereinstimmung mit Aktionen durchgeführt wird, die dem dritten Zustand zugehörig sind, oder Umschalten vom zweiten Zustand in einen vierten Zustand der mehreren Zustände, sodass die Schritte des Sendens der Aufhebungsanforderung, des Empfangens und Antwortens im vierten Zustand in Übereinstimmung mit Maßnahmen durchgeführt werden, die dem vierten Zustand zugehörig sind.
  • Gemäß einer Ausführungsform zeigt das Cache-Protokoll weiterhin mehrere Datenzustände an. Der Datenstatus eines Datenelements gibt den Eigentumsstatus oder den Kohärenzstatus des Datenelements an. Der Datenzustand des Datenelements ermöglicht einen kohärenten Zugriff auf das Datenelement durch die mehreren Prozessorkerne. Das Verfahren weist auf: Zuweisen eines gegebenen Datenzustands der mehreren Datenzustände zum Datenelement, um anzuzeigen, dass das Datenelement zu dem atomaren Primitiv gehört und dass das Datenelement von einem anderen Kern angefordert wird und ein anderer Kern auf das Datenelement wartet, wobei das Feststellen, dass eine andere Anforderung des Datenelements vom dritten Kern empfangen wird, bevor die Anforderung des zweiten Kerns empfangen wird, ein Feststellen durch den Cache-Controller aufweist, dass das angeforderte Datenelement im gegebenen Datenzustand ist. So können beispielsweise Cache-Zeilen-Metadaten verwendet werden, um den Kohärenzstatus der im atomaren Primitiv verwendeten Datenelemente anzugeben.
  • Gemäß einer Ausführungsform weist das Empfangen der Anforderung Überwachen eines Bussystems auf, das den Cache-Controller und die Prozessorkerne verbindet, wobei das Zurücksenden der Ablehnungsnachricht Erzeugen einer Systembustransaktion aufweist, die die Ablehnungsnachricht anzeigt.
  • Gemäß einer Ausführungsform weist das Verfahren weiterhin auf, dass als Reaktion auf ein Feststellen, dass das atomare Primitiv abgeschlossen ist, das Datenelement an den wartenden dritten Kern zurückgesendet wird. Dies kann es dem dritten Prozessorkern ermöglichen, das angeforderte Datenelement zu empfangen, ohne wiederholte Anforderungen durchführen zu müssen. Der zweite Prozessorkern kann andere Aufgaben durchführen, nachdem er die Ablehnungsantwort empfangen hat. Dies kann die Leistung des Computersystems durch die effiziente Übertragung des atomaren Primitivs an den dritten Prozessor erhöhen und es dem zweiten Kern (und allen nachfolgenden Kernanforderungen) ermöglichen, andere Arbeiten durchzuführen.
  • Gemäß einer Ausführungsform weist das Verfahren weiterhin auf, dass der zweite Kern veranlasst wird, die Anforderung zum Zugreifen auf das Datenelement nach einer vordefinierten maximalen Ausführungszeit des atomaren Primitivs erneut zu senden. Das Veranlassen kann z.B. nach Senden der Ablehnungsnachricht durchgeführt werden. Dadurch kann verhindert werden, dass der zweite Prozessorkern in eine Schleife von wiederholten Anforderungen gerät, ohne eine zusätzliche Aufgabe durchzuführen.
  • Gemäß einer Ausführungsform weist das Zurücksenden der Ablehnungsnachricht an den zweiten Kern weiterhin auf: Veranlassen, dass der zweite Kern eine oder mehrere weitere Anweisungen ausführt, während das atomare Primitiv ausgeführt wird, wobei sich die weiteren Anweisungen von einer Anweisung zum Anfordern des Datenelements unterscheiden. Dies kann eine effiziente Nutzung der Prozessorressourcen ermöglichen, verglichen mit dem Fall, dass der zweite Kern auf den ersten Kern (oder ersten Kern und alle wartenden Kerne) warten muss, bis er das Ausführen des atomaren Primitivs abgeschlossen hat.
  • Gemäß einer Ausführungsform weist das Ausführen des atomaren Primitivs Zugreifen auf Daten auf, die vom ersten und dritten Kern gemeinsam genutzt werden, wobei es sich bei der empfangenen Anforderung um eine Anforderung zum Freigeben des Zugriffs auf die gemeinsam genutzten Daten durch den zweiten Kern handelt. Die Daten können zusätzlich mit dem zweiten Kern gemeinsam genutzt werden.
  • Gemäß einer Ausführungsform handelt es sich bei dem Datenelement um eine Sperre, die vom ersten Kern zum Ausführen des atomaren Primitivs angefordert wird, wobei das Feststellen, dass das Ausführen des atomaren Primitivs nicht abgeschlossen ist, ein Feststellen aufweist, dass die Sperre nicht verfügbar ist. Diese Ausführungsform kann nahtlos in bestehende Systeme integriert werden. Die Sperre kann zum Beispiel durch Verwenden einer regulären Speicheranweisung aufgehoben werden.
  • Gemäß einer Ausführungsform wird die mit dem Datenelement verbundene Cache-Zeile freigegeben, nachdem das Ausführen des atomaren Primitivs abgeschlossen ist.
  • Gemäß einer Ausführungsform wird das Datenelement in einem Cache des ersten Kerns zwischengespeichert. Bei dem Cache des ersten Kerns kann es sich um einen Daten-Cache oder einen Anweisungs-Cache handeln.
  • Gemäß einer Ausführungsform wird das Datenelement in einem Cache zwischengespeichert, den der erste und der zweite Kern gemeinsam nutzen. Der Cache kann zusätzlich mit dem dritten Kern gemeinsam genutzt werden. Bei dem Cache kann es sich um einen Daten-Cache oder einen Anweisungs-Cache handeln.
  • Gemäß einer Ausführungsform weist das Verfahren weiterhin Bereitstellen einer Prozessoranweisung auf, wobei das Empfangen der Anforderung das Ergebnis des Ausführens der Prozessoranweisung durch den zweiten Kern ist, wobei die Schritte des Feststellens und Zurücksendens als Reaktion auf ein Feststellen, dass die empfangene Anforderung durch die Prozessoranweisung ausgelöst wird, durchgeführt werden. Der dritte Kern kann auch konfiguriert sein, die Anforderung durch Ausführen der Prozessoranweisung zu senden.
  • Die Prozessoranweisung kann als Tentative Exclusive Load&Test (TELT) bezeichnet werden. Die TELT-Anweisung kann vom Kern auf dieselbe Weise wie eine Load&Test-Anweisung ausgegeben werden. Die TELT-Anweisung kann entweder die Cache-Zeile zurücksenden und einen Test durchführen oder eine Ablehnungsantwort erhalten. Bei der Ablehnungsantwort werden die Daten der Cache-Zeile nicht zurückgesendet und daher auch nicht in den Cache aufgenommen. Stattdessen wird die Ablehnungsantwort so behandelt, als wäre die Load&Test-Anweisung fehlgeschlagen. Die TELT-Anweisung kann vorteilhaft sein, da sie mit Stiff-Arming arbeiten kann, weil sie nicht blockierend ist (sie stellt eine Ablehnungsantwort bereit, ohne den Zustand einer Cache-Zeile zu ändern). Ein weiterer Vorteil kann darin bestehen, dass sie dem anfordernden Kern eine schnellere Antwort bereitstellen kann, sodass sie es anderen Kernen ermöglicht, an anderen Aufgaben zu arbeiten. Ein weiterer Vorteil ist, dass die TELT-Anweisung dem Eigentümer der Sperre die Cache-Zeile nicht stiehlt (d.h., es ist kein exklusiver Abruf nötig, bevor die Sperre aufgehoben wird).
  • Die TELT-Anweisung kann ein RX- oder RXE-Format wie die LOAD-Anweisung haben. Wenn die durch den zweiten Operanden der TELT-Anweisung angegebenen Daten verfügbar sind, werden sie in den ersten Operanden der TELT-Anweisung gestellt. Der Inhalt des ersten Operanden ist nicht spezifiziert, wenn die Daten nicht verfügbar sind. Die sich daraus ergebenden Zustandscodes der TELT-Anweisung können wie folgt aussehen: „0“ bedeutet, dass das Ergebnis gleich Null ist; „1“ bedeutet, dass das Ergebnis kleiner als Null ist; „2“ bedeutet, dass das Ergebnis größer als Null ist, und „3“ bedeutet, dass die Daten nicht verfügbar sind. In einer typischen Programmiersequenz wird das Ergebnis je nach Zustandscode später verarbeitet.
  • Die TELT-Anweisung kann als Teil der dem Prozessorsystem zugehörigen Befehlssatzarchitektur (instruction set architecture = ISA) bereitgestellt werden.
  • 1 zeigt ein Beispiel für ein Mehrprozessorsystem gemäß den Ausführungsformen der vorliegenden Offenbarung. Das Mehrprozessorsystem 100 weist mehrere Prozessorkerne 101A bis N auf. Die mehreren Prozessorkerne 101A bis N können sich beispielsweise auf demselben Prozessorchip befinden, z.B. auf einem Zentralprozessorchip (CP) von International Business Machines (IBM). Die mehreren Prozessorkerne 101A bis N können beispielsweise einen Cache 106 gemeinsam nutzen, der sich auf demselben Chip befindet. Das Mehrprozessorsystem 100 weist weiterhin einen Hauptspeicher 103 auf. Zur Vereinfachung der Beschreibung werden hier nur die Komponenten des Prozessorkerns 101A beschrieben; die anderen Prozessorkerne 101B bis N können eine ähnliche Struktur haben.
  • Der Prozessorkern 101A kann einen Cache 105 aufweisen, der dem Prozessorkern 101 zugehörig ist. Der Cache 105 dient zum Puffern von Speicherdaten, um die Prozessorleistung zu erhöhen. Bei dem Cache 105 handelt es sich um einen Hochgeschwindigkeitspuffer, der Cache-Zeilen von Speicherdaten enthält, die wahrscheinlich verwendet werden (z.B. ist der Cache 105 konfiguriert, Daten des Hauptspeichers 103 zwischenzuspeichern). Typische Cache-Zeilen sind 64, 128 oder 256 Byte Speicherdaten. Der Cache des Prozessorkerns speichert Metadaten für jede enthaltene Zeile, die die Adresse und den Eigentumsstatus angeben.
  • Der Prozessorkern 101A kann eine Anweisungsausführungspipeline 110 umfassen. Die Ausführungspipeline 110 kann mehrere Pipelinestufen umfassen, wobei jede Stufe eine logische Schaltung zum Durchführen von Operationen einer bestimmten Stufe in einem mehrstufigen Prozess enthält, der zum vollständigen Ausführen einer Anweisung erforderlich ist. Die Ausführungspipeline 110 kann eine Anweisungsabruf- und Decodiereinheit 120, eine Datenabrufeinheit 121, eine Ausführungseinheit 123 und eine Rückschreibeinheit 124 umfassen.
  • Die Anweisungsabruf- und Decodiereinheit 120 ist konfiguriert, eine Anweisung aus der Pipeline 110 abzurufen und die abgerufene Anweisung zu decodieren. Die Datenabrufeinheit 121 kann die zu verarbeitenden Datenelemente aus den Registern 111A bis N abrufen. Die Ausführungseinheit 123 kann üblicherweise Informationen über eine decodierte Anweisung empfangen (z.B. von der Anweisungsabruf- und Decodiereinheit 120) und Operationen an Operanden gemäß dem Opcode der Anweisung durchführen. Die Ausführungseinheit 123 kann eine logische Schaltung zum Ausführen von Anweisungen umfassen, die in der ISA des Prozessorkerns 101A angegeben sind. Die Ergebnisse des Ausführens können von der Schreibeinheit 124 entweder im Speicher 103, in den Registern 111A bis N oder in anderer Maschinenhardware (z.B. Steuerregistern) gespeichert werden.
  • Der Prozessorkern 101A kann weiterhin eine Registerdatei 107 aufweisen, die die dem Prozessorkern 101 zugehörigen Register 111A bis 111N aufweist. Bei den Registern 111A bis N kann es sich beispielsweise um Universalregister handeln, die jeweils eine bestimmte Anzahl von Bits umfassen können, um Datenelemente zu speichern, die von in der Pipeline 110 ausgeführten Anweisungen verarbeitet werden.
  • Der Quellcode eines Programms kann in eine Reihe von maschinenausführbaren Anweisungen kompiliert werden, die in einer dem Prozessorkern 101A zugehörigen ISA definiert sind. Wenn der Prozessorkern 101A mit dem Ausführen der ausführbaren Anweisungen beginnt, können diese maschinenausführbaren Anweisungen in der Pipeline 110 platziert werden, um sequenziell ausgeführt zu werden. Die Anweisungsabruf- und Decodiereinheit 120 kann eine in der Pipeline 110 platzierte Anweisung abrufen und eine der Anweisung zugehörige Kennung identifizieren. Die Anweisungskennung kann die empfangene Anweisung mit einer Schaltungsimplementierung der Anweisung verbinden, die in der ISA des Prozessorkerns 101A angegeben ist.
  • Die Anweisungen der ISA können zum Verarbeiten von im Speicher 103 und/oder in den Registern 111A bis N gespeicherten Datenelementen bereitgestellt werden. Eine Anweisung kann zum Beispiel ein Datenelement aus dem Speicher 103 in ein Register 111A bis N abrufen. Die Datenabrufeinheit 121 kann die zu verarbeitenden Datenelemente aus den Registern 111A bis N abrufen. Die Ausführungseinheit 123 kann eine logische Schaltung zum Ausführen von Anweisungen umfassen, die in der ISA des Prozessorkerns 101A angegeben sind. Nach Ausführen einer Anweisung zum Verarbeiten von Datenelementen, die von der Datenabrufeinheit 121 abgerufen wurden, kann die Schreibeinheit 124 die Ergebnisse ausgeben und in den Registern 111A bis N speichern.
  • Ein atomares Primitiv 128 kann aus einer oder mehreren Anweisungen gebildet werden, die in der ISA des Prozessorkerns 101A definiert sind. Das Primitiv 128 kann beispielsweise eine vom Prozessorkern ausgeführte Leseanweisung umfassen, und es ist gewährleistet, dass kein anderer Prozessorkern 101B bis N auf das am Speicherort, der durch die Leseanweisung gelesen wurde, gespeicherte Datenelement zugreifen und/oder es verändern kann, bis der Prozessorkern 101A das Ausführen des Primitivs abgeschlossen hat.
  • Die Prozessorkerne 101A bis N nutzen den Prozessor-Cache 106 für den Hauptspeicher 103 gemeinsam. Der Prozessor-Cache 106 kann von einem Cache-Controller 108 verwaltet werden.
  • 2A zeigt einen Ablaufplan eines Verfahrens zum Verarbeiten von Datenanforderungen mehrerer Prozessorkerne (z.B. 101A bis N) gemäß Ausführungsformen der vorliegenden Offenbarung. So wird beispielsweise einem ersten Prozessorkern (z.B. 101A) ausschließlich ein Datenelement zum Ausführen eines atomaren Primitivs (z.B. 128) zugewiesen. So kann das Datenelement beispielsweise durch das atomare Primitiv geschützt werden, um zu verhindern, dass zwei Prozesse den Inhalt des Datenelements gleichzeitig ändern. Nach dem Eintreten in das atomare Primitiv wird verhindert, dass andere Kerne auf die durch das atomare Primitiv geschützten Daten zugreifen, und ein Satz von einer oder mehreren Anweisungen wird ausgeführt (z.B. hat der Satz von Anweisungen Zugriff auf die geschützten Daten). Sobald der Anweisungssatz abgeschlossen ist, wird das atomare Primitiv verlassen. Das Eintreten in ein atomares Primitiv kann durch Anfordern einer Sperre und Verlassen des atomaren Primitivs durch Freigeben der Sperre erfolgen. Das Freigeben der Sperre kann z.B. durch eine Speicheranweisung aus dem Anweisungssatz ausgelöst werden. Der Anweisungssatz kann Teil des atomaren Primitivs sein.
  • In Schritt 201 kann der Cache-Controller von einem zweiten Kern (z.B. 101C oder 101N) eine Anforderung zum Zugreifen auf das Datenelement empfangen. Die Anforderung kann z.B. über ein Bussystem gesendet werden, das die Prozessorkerne und den Cache-Controller verbindet. Durch Überwachen des Bussystems kann der Cache-Controller die Anforderung des zweiten Prozessorkerns empfangen. Die vom zweiten Kern gesendete Anforderung kann durch das Ausführen der TELT-Anweisung durch den zweiten Kern ausgelöst werden. Der Cache (z.B. 106) kann beispielsweise eine Cache-Zeile aufweisen.
  • Das Ausführen des atomaren Primitivs durch den ersten Prozessorkern kann eine Leseanweisung veranlassen, einen Datenblock (d.h. ein Datenelement) von einem Speicherort abzurufen und eine Kopie des Datenblocks in der Cache-Zeile zu speichern, wodurch die Cache-Zeile dem ersten Prozessorkern zugewiesen wird. Der erste Prozessorkern kann dann mindestens eine Anweisung ausführen, während die Cache-Zeile ihm zugewiesen ist. Während die mindestens eine Anweisung ausgeführt wird, kann die Anforderung von Schritt 201 empfangen werden. Bei dem angeforderten Datenelement kann es sich z.B. um die Daten der Cache-Zeile handeln.
  • Beispielsweise kann ein Benutzer ein Programm erstellen, das Anweisungen aufweist, die vom zweiten Prozessorkern ausgeführt werden können. Das Programm weist die TELT-Anweisung auf. Die TELT-Anweisung ermöglicht es, eine Cache-Zeile zu laden, wenn diese verfügbar ist. Sobald die TELT-Anweisung vom zweiten Prozessorkern ausgeführt wurde, kann die Anforderung vom zweiten Prozessorkern ausgegeben werden. Wenn die angeforderten Daten verfügbar sind, können sie an den zweiten Prozessorkern zurückgesendet werden. Das Zurücksenden der Daten an den zweiten Prozessorkern kann beispielsweise so gesteuert werden, dass nur bestimmte Datentypen (z.B. schreibgeschützte Daten oder andere Datentypen) zurückgesendet werden.
  • Der Cache-Controller kann beispielsweise eine logische Schaltung aufweisen, die es dem Cache-Controller ermöglicht, gemäß einem vordefinierten Cache-Protokoll zu arbeiten. Das Cache-Protokoll kann mehrere mögliche Zustände des Cache-Controllers anzeigen, wobei jeder Zustand der mehreren Zustände jeweiligen Aktionen zugehörig ist, die vom Cache-Controller durchzuführen sind. Befindet sich der Cache-Controller beispielsweise in einem ersten der mehreren Zustände, prüft der Cache-Controller bei jeder Datenzugriffsanforderung eines Prozessorkerns der Prozessorkerne, ob es sich um eine Anforderung handelt, die durch die TELT-Anweisung ausgelöst wurde. Der Cache-Controller kann sich zum Beispiel in Schritt 201 im ersten Zustand befinden. Das Cache-Protokoll kann es dem Cache-Controller ermöglichen, die Kohärenz zu verwalten. Der Cache-Controller kann zum Beispiel die Cache-Daten und deren Kohärenz mit Hilfe von Metadaten verwalten. So kann beispielsweise auf jeder Ebene der Cache-Hierarchie auf die Datensicherung (kein Cache) verzichtet werden, indem ein Verzeichnis von Cache-Zeilen geführt wird, die in den Caches der unteren Ebene enthalten sind.
  • Beispielsweise kann die Anforderung für das Zugreifen auf das Datenelement eine gekennzeichnete Anforderung sein (z.B. ausgelöst durch die TELT-Anweisung), die anzeigt, dass es sich um eine Anforderung für Daten handelt, die im atomaren Primitiv verwendet werden, wobei der Cache-Controller eine logische Schaltung aufweist, die zum Erkennen der gekennzeichneten Anforderung konfiguriert ist. So kann der Cache-Controller nach Empfangen der Anforderung und Feststellen, dass die Anforderung durch die TELT-Anweisung ausgelöst wird, gemäß dem Cache-Protokoll in einen zweiten Zustand der mehreren Zustände springen oder wechseln. Im zweiten Zustand kann der Cache-Controller ermitteln (Abfrageschritt 203), ob ein anderer Prozessorkern auf das angeforderte Datenelement wartet. Der Cache-Controller speichert z.B. einen Zustand für die Cache-Zeilen, die er enthält, und kann den Zustand des angeforderten Datenelements zum Zeitpunkt der Anforderung angeben.
  • Als Reaktion auf das Feststellen (Abfrageschritt 203), dass eine andere Anforderung des Datenelements von einem dritten Kern (z.B. 101B) der Prozessorkerne vor Empfangen der Anforderung des zweiten Kerns empfangen wird, kann der Cache-Controller eine Ablehnungsnachricht erzeugen und die Ablehnungsnachricht in Schritt 205 an den zweiten Kern senden; andernfalls können die Schritte 207 bis 211 durchgeführt werden. Das Feststellen, dass die andere Anforderung des dritten Kerns vor der Anforderung des zweiten Kerns empfangen wird, kann durch Feststellen durchgeführt werden, dass sich das angeforderte Datenelement in einem Zustand befindet, der anzeigt, dass der dritte Kern auf das Datenelement wartet. Dieser Zustand kann weiterhin anzeigen, dass der erste Prozessorkern das Zieldatenelement exklusiv für sich hat, dass aber das Ausführen des atomaren Primitivs noch nicht abgeschlossen ist. Nach Durchführen des Abfrageschritts 203 kann der Cache-Controller gemäß dem Cache-Protokoll vom zweiten Zustand in einen dritten Zustand der mehreren Zustände umschalten, wobei die Ablehnungsnachricht durch Ausführen der dem dritten Zustand zugehörigen Aktionen an den zweiten Kern gesendet wird.
  • In Schritt 207 kann der Cache-Controller eine Aufhebungsanforderung (oder Anforderung zum gegenseitigen Aufheben) an den ersten Kern senden, um den exklusiven Zugriff auf das Datenelement durch den ersten Kern 101A aufzuheben. Beispielsweise kann der Cache-Controller nach Durchführen des Abfrageschritts 203 vom zweiten Zustand in einen vierten Zustand der mehreren Zustände des Cache-Protokolls wechseln. Der Cache-Controller kann konfiguriert sein, die Schritte 207 bis 211 durchzuführen, wenn er sich im vierten Zustand gemäß dem Cache-Protokoll befindet.
  • In Schritt 209 kann der Cache-Controller eine Antwort vom ersten Kern empfangen, die eine positive Antwort auf die Aufhebungsanforderung anzeigt. Die Antwort kann zum Beispiel über das Bussystem gesendet werden. Durch Überwachen des Bussystems kann der Cache-Controller die Antwort empfangen.
  • Als Reaktion auf die positive Antwort auf die Aufhebungsanforderung vom ersten Kern kann der Cache-Controller in Schritt 211 dem zweiten Kern antworten, dass das Datenelement für den Zugriff verfügbar ist. Die Antwort des Cache-Controllers an den zweiten Kern kann zum Beispiel über das Bussystem gesendet werden.
  • Die Schritte 201 bis 211 können durchgeführt werden, während das Ausführen des atomaren Primitivs durch den ersten Kern 101A noch nicht abgeschlossen ist.
  • 2B ist ein Blockschaubild, das ein Verfahren zum Verarbeiten von Datenanforderungen mehrerer Prozessorkerne (z.B. 101A bis N) gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Dem Prozessorkern 101A wird exklusiv ein Datenelement zum Ausführen eines atomaren Primitivs durch den Prozessorkern 101A zugewiesen.
  • Eine Anforderung (1) für das Datenelement wird von einem Prozessorkern 101B an den Cache-Controller gesendet, während der Prozessorkern 101A das atomare Primitiv ausführt. Da die am Cache-Controller empfangene Anforderung (1) die einzige ist, d.h., zum Zeitpunkt des Empfangens der Anforderung (1) wartet kein anderer Prozessorkern auf das Datenelement, wird als Reaktion auf das Empfangen der Anforderung des Datenelements vom Prozessorkern 101B vom Cache-Controller eine Aufhebungsanforderung (2) an den Prozessorkern 101A gesendet. Als Reaktion auf das Empfangen der Aufhebungsanforderung wird eine positive Antwort (3) vom Prozessorkern 101A an den Cache-Controller gesendet. Als Reaktion auf das Empfangen der positiven Antwort kann der Cache-Controller eine Antwort (4) senden, die dem dritten Kern 101B anzeigt, dass die angeforderten Daten für den Zugriff verfügbar sind. 2B zeigt weiterhin optionale Schritte, die durch den Prozessorkern 101A ausgelöst werden können. Da der Prozessorkern 101A möglicherweise erneut auf das Datenelement zugreifen muss, kann der Prozessorkern 101A eine Abrufanforderung (5) an den Cache-Controller senden, um Zugriff auf das Datenelement zu erhalten. Der Cache-Controller kann dann wie angegeben eine Aufhebungsanforderung (6) an den Prozessorkern 101B senden. Der Prozessorkern 101B kann dann auf die Aufhebungsanforderung eine positive Antwort (7) senden. Nach Empfangen der positiven Antwort kann der Cache-Controller dem Prozessorkern 101A antworten (8), dass die Daten für den Zugriff verfügbar sind. Der Prozessorkern 101A kann die Sperre freigeben, indem er eine Speicheranweisung (9) durchführt, die anzeigt, dass das Ausführen des Primitivs abgeschlossen ist. 2B zeigt weiterhin Anforderungen (A und C) des Datenelements, die von den Prozessorkernen 101C und 101N durch den Cache-Controller empfangen werden, während der Prozessorkern 101B auf das Datenelement wartet. Da der Prozessorkern 101B auf das Datenelement wartet, kann der Cache-Controller in diesem Fall eine Ablehnungsnachricht (B und D) an die Prozessorkerne 101C bzw. 101N senden.
  • 3 zeigt einen Ablaufplan eines Verfahrens gemäß Ausführungsformen der vorliegenden Offenbarung zum Implementieren einer Sperre für die Arbeitslastverteilung in einem Computersystem, das eine Mehrzahl von Prozessorkernen aufweist.
  • In Schritt 301 kann ein Initialisierungsprozessorkern 101C die TELT-Anweisung ausgeben, um die Verfügbarkeit einer Sperre zu prüfen, die mit einem atomaren Primitiv verbunden ist, das vom Zielprozessorkern 101A ausgeführt wird. Dies kann den Initialisierungsprozessorkern 101C veranlassen, in Schritt 303 eine bedingte Abrufanforderung für die Cache-Zeile an den Cache-Controller 108 zu senden. Als Reaktion auf das Empfangen der bedingten Abrufanforderung kann der Cache-Controller 108 ermitteln (Abfrageschritt 305), ob bereits ein anderer Kern auf die Cache-Zeile wartet.
  • Wenn festgestellt wird, dass ein anderer Kern (z.B. 101B) auf die Cache-Zeile wartet, kann der Cache-Controller in Schritt 307 eine Antwort (Ablehnungsnachricht) an den Initialisierungsprozessorkern 101C senden, die angibt, dass keine Daten verfügbar sind. In Schritt 309 kann auf dem Initialisierungsprozessorkern 101C ein Zustandscode anzeigen, dass die Daten nicht verfügbar sind.
  • Wenn festgestellt wird, dass kein anderer Kern auf die Cache-Zeile wartet, kann der Cache-Controller 108 in Schritt 311 eine bedingte Anforderung zum gegenseitigen Aufheben an den Zielkern 101A senden. In Abfrageschritt 313 kann ermittelt werden, ob der Zielkernzustand für eine Übertragung einer Cache-Zeile geeignet ist. Wenn dies der Fall ist, können die Schritte 317 bis 321 durchgeführt werden, andernfalls können die Schritte 315 bis 321 durchgeführt werden.
  • In Schritt 315 kann der Cache-Controller warten, bis der Zielkern das Aktualisieren der Daten (Cache-Zeile) abgeschlossen hat.
  • In Schritt 317 schreibt der Zielprozessorkern 101A eine geänderte Zeile (dirty line) zurück und sendet eine positive Antwort zum gegenseitigen Aufheben, wodurch der Zielprozessorkern 101A die Eigentümerschaft für die angeforderte Cache-Zeile abgibt. In Schritt 319 sendet der Cache-Controller 108 eine positive Antwort auf eine bedingte Abrufanforderung zusammen mit der Cache-Zeile an den jeweiligen Initialisierungsprozessorkern. Die Eigentümerschaft an der Cache-Zeile wird dem jeweiligen Initialisierungsprozessorkern übertragen. In Schritt 321 kann auf dem jeweiligen Initialisierungsprozessorkern ein Zustandscode anzeigen, dass die Daten verfügbar sind.
  • In einem anderen Beispiel wird ein Verfahren bereitgestellt, um eine Sperre zur Arbeitslastverteilung in einem Computersystem zu implementieren, das eine Mehrzahl von Prozessorkernen aufweist, wobei die Prozessorkerne einen Prozessor-Cache für einen Hauptspeicher gemeinsam nutzen und der Prozessor-Cache von einem Cache-Controller verwaltet wird. Das Verfahren weist auf: als Reaktion auf eine versuchsweise exklusive Lade- und Prüfanweisung für eine Hauptspeicheradresse sendet ein Prozessorkern eine bedingte Anforderung zum gegenseitigen Aufheben (cross invalidation) für die Hauptspeicheradresse an den Cache-Controller; dass der Cache-Controller als Reaktion auf eine bedingte Anforderung zum gegenseitigen Aufheben von einem Initialisierungsprozessorkern ermittelt, ob der Prozessor-Cache für den Zugriff durch den Initialisierungsprozessorkern verfügbar ist, und wenn der Prozessor-Cache nicht verfügbar ist, der Cache-Controller dem Initialisierungsprozessorkern antwortet, dass die Daten an der Hauptspeicheradresse nicht für den Zugriff verfügbar sind, und dass der Cache-Controller andernfalls eine Anforderung zum gegenseitigen Aufheben an den Zielprozessorkern sendet, der gegenwärtig Eigner der Cache-Zeile für die Hauptspeicheradresse ist; dass der Zielprozessorkern als Antwort auf die Anforderung zum gegenseitigen Aufheben vom Cache-Controller die geänderte Cache-Zeile zurückschreibt, falls er sie geändert hat, die Zuständigkeit für die Cache-Zeile freigibt und dem Cache-Controller mit einer positiven Anforderung zum gegenseitigen Aufheben antwortet; dass der Cache-Controller als Reaktion auf eine positive Anforderung zum gegenseitigen Aufheben vom Zielprozessorkern dem Initialisierungsprozessorkern antwortet, dass die Zieldaten für einen Zugriff verfügbar sind.
  • Verschiedene Ausführungsformen sind in den folgenden nummerierten Klauseln beschrieben.
  • 1. Verfahren für ein Computersystem, das eine Mehrzahl von Prozessorkernen aufweist, wobei ein Datenelement ausschließlich einem ersten Kern der Prozessorkerne zugewiesen ist, um ein atomares Primitiv durch den ersten Kern auszuführen; wobei, solange das Ausführen des atomaren Primitivs durch den ersten Kern nicht abgeschlossen ist, das Verfahren Empfangen einer Anforderung zum Zugreifen auf das Datenelement an einem Cache-Controller von einem zweiten Kern der Prozessorkerne aufweist; sowie als Reaktion auf ein Feststellen, dass eine andere Anforderung des Datenelements von einem dritten Kern der Prozessorkerne vor Empfangen der Anforderung des zweiten Kerns empfangen wird, Zurücksenden einer Ablehnungsnachricht an den zweiten Kern; wobei die Ablehnungsnachricht an den zweiten Kern weiterhin anzeigt, dass eine andere Anforderung auf das atomare Primitiv wartet, andernfalls Senden einer Aufhebungsanforderung an den ersten Kern zum Aufheben eines exklusiven Zugriffs auf das Datenelement durch den ersten Kern; Empfangen einer Antwort vom ersten Kern, die eine positive Antwort auf die Aufhebungsanforderung anzeigt; und als Reaktion auf die positive Antwort auf die Aufhebungsanforderung vom ersten Kern, Antworten des Cache-Controllers an den zweiten Kern, dass die Daten für den Zugriff verfügbar sind.
  • 2. Verfahren nach Klausel 1, wobei das Feststellen, dass die andere Anforderung des dritten Kerns vor der Anforderung des zweiten Kerns empfangen wird, ein Feststellen aufweist, dass der dritte Kern auf das Datenelement wartet.
  • 3. Verfahren nach Klausel 1 oder 2, das weiterhin Zurücksenden einer Ablehnungsnachricht für jede weitere empfangene Anforderung des Datenelements durch den Cache-Controller aufweist, während der dritte Kern noch auf das Datenelement wartet.
  • 4. Verfahren nach einer der vorherigen Klauseln, das weiterhin Bereitstellen eines Cache-Protokolls aufweist, das mehrere mögliche Zustände des Cache-Controllers anzeigt, wobei jeder Zustand der mehreren Zustände jeweiligen Aktionen zugehörig ist, die vom Cache-Controller durchzuführen sind, wobei das Verfahren aufweist: Empfangen der Anforderung, wenn sich der Cache-Controller in einem ersten Zustand der mehreren Zustände befindet, Umschalten durch den Cache-Controller vom ersten Zustand in einen zweiten Zustand, sodass das Feststellen im zweiten Zustand des Cache-Controllers in Übereinstimmung mit Aktionen des zweiten Zustands durchgeführt wird, und Umschalten vom zweiten Zustand in einen dritten Zustand der mehreren Zustände, sodass das Zurücksenden im dritten Zustand in Übereinstimmung mit Aktionen durchgeführt wird, die dem dritten Zustand zugehörig sind, oder Umschalten vom zweiten Zustand in einen vierten Zustand der mehreren Zustände, sodass die Schritte des Sendens der Aufhebungsanforderung, des Empfangens und Antwortens im vierten Zustand in Übereinstimmung mit Aktionen durchgeführt werden, die dem vierten Zustand zugehörig sind.
  • 5. Verfahren nach Klausel 4, wobei das Cache-Protokoll weiterhin mehrere Datenzustände anzeigt, wobei das Verfahren aufweist: Zuweisen eines gegebenen Datenzustands der mehreren Datenzustände zum Datenelement, um anzuzeigen, dass das Datenelement zu dem atomaren Primitiv gehört und dass das Datenelement von einem anderen Kern angefordert wird und ein anderer Kern auf das Datenelement wartet, wobei das Feststellen, dass eine andere Anforderung des Datenelements vom dritten Kern empfangen wird, bevor die Anforderung des zweiten Kerns empfangen wird, ein Feststellen durch den Cache-Controller aufweist, dass das angeforderte Datenelement im gegebenen Datenzustand ist.
  • 6. Verfahren nach einer der vorherigen Klauseln, wobei das Empfangen der Anforderung Überwachen eines Bussystems aufweist, das den Cache-Controller und die Prozessorkerne verbindet, wobei das Zurücksenden der Ablehnungsnachricht Erzeugen einer Systembustransaktion aufweist, die die Ablehnungsnachricht anzeigt.
  • 7. Verfahren nach einer der vorherigen Klauseln, das weiterhin aufweist, dass als Reaktion auf ein Feststellen, dass das atomare Primitiv abgeschlossen ist, das Datenelement an den dritten Kern zurückgesendet wird.
  • 8. Verfahren nach einer der vorherigen Klauseln, wobei das Zurücksenden der Ablehnungsnachricht an den zweiten Kern weiterhin aufweist: Veranlassen, dass der zweite Kern eine oder mehrere andere Anweisungen auszuführt, während das atomare Primitiv ausgeführt wird, wobei sich die anderen Anweisungen von einer Anweisung zum Anfordern des Datenelements unterscheiden.
  • 9. Verfahren nach einer der vorherigen Klauseln, wobei das Ausführen des atomaren Primitivs Zugreifen auf Daten aufweist, die vom ersten und zweiten Kern gemeinsam genutzt werden, wobei es sich bei der empfangenen Anforderung um eine Anforderung zum Freigeben des Zugriffs auf die gemeinsam genutzten Daten durch den zweiten Kern handelt.
  • 10. Verfahren nach einer der vorherigen Klauseln, wobei es sich bei dem Datenelement um eine Sperre handelt, die vom ersten Kern zum Ausführen des atomaren Primitivs erworben wird, wobei das Feststellen, dass das Ausführen des atomaren Primitivs nicht abgeschlossen ist, ein Feststellen aufweist, dass die Sperre nicht verfügbar ist.
  • 11. Verfahren nach einer der vorstehenden Klauseln, wobei die Cache-Zeile freigegeben wird, nachdem das Ausführen des atomaren Primitivs abgeschlossen ist.
  • 12. Verfahren nach einer der vorstehenden Klauseln, wobei das Datenelement in einem Cache des ersten Kerns zwischengespeichert wird.
  • 13. Verfahren nach einer der vorstehenden Klauseln 1 bis 11, wobei das Datenelement in einem Cache zwischengespeichert wird, der vom ersten und vom dritten Kern gemeinsam genutzt wird.
  • 14. Verfahren nach einer der vorstehenden Klauseln, das weiterhin Bereitstellen einer Prozessoranweisung aufweist, wobei das Empfangen der Anforderung das Ergebnis des Ausführens der Prozessoranweisung durch den zweiten Kern ist, wobei die Schritte des Feststellens und Zurücksendens als Reaktion auf ein Feststellen, dass die empfangene Anforderung durch die Prozessoranweisung ausgelöst wird, durchgeführt werden.
  • 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.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/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 eine Einheit 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 codierte 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. einen Lichtwellenleiter durchlaufende 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/Verarbeitungs-Einheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit 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/Verarbeitungs-Einheit 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 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 herkömmliche 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 entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten 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 Weitverkehrsnetzwerk (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, vor Ort 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.
  • 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, sodass 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, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel 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, sodass 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.

Claims (25)

  1. Verfahren für ein Computersystem, das eine Mehrzahl von Prozessorkernen aufweist, wobei ein Datenelement ausschließlich einem ersten Kern der Mehrzahl von Prozessorkernen zugewiesen ist, um ein atomares Primitiv durch den ersten Kern auszuführen, wobei, solange das Ausführen des atomaren Primitivs durch den ersten Kern nicht abgeschlossen ist, das Verfahren aufweist: Empfangen einer Anforderung zum Zugreifen auf das Datenelement an einem Cache-Controller von einem zweiten Kern der Mehrzahl von Prozessorkernen; und als Reaktion auf Feststellen, dass eine Anforderung für das Datenelement von einem dritten Kern der Mehrzahl von Prozessorkernen vor Empfangen der Anforderung vom zweiten Kern empfangen wird, Zurücksenden einer Ablehnungsnachricht an den zweiten Kern, die anzeigt, dass eine andere Anforderung auf das atomare Primitiv wartet, andernfalls: Senden einer Aufhebungsanforderung an den ersten Kern zum Aufheben eines exklusiven Zugriffs auf das Datenelement durch den ersten Kern; Empfangen einer Antwort vom ersten Kern, die eine positive Antwort auf die Aufhebungsanforderung anzeigt; und als Reaktion auf die positive Antwort auf die Aufhebungsanforderung vom ersten Kern, Antworten des Cache-Controllers an den zweiten Kern, dass die Daten für den Zugriff verfügbar sind.
  2. Verfahren nach Anspruch 1, wobei das Feststellen, dass die Anforderung vom dritten Kern vor der Anforderung des zweiten Kerns empfangen wird, ein Feststellen aufweist, dass der dritte Kern auf das Datenelement wartet.
  3. Verfahren nach Anspruch 1, das weiterhin Zurücksenden einer Ablehnungsnachricht für jede weitere empfangene Anforderung des Datenelements durch den Cache-Controller aufweist, während der dritte Kern noch auf das Datenelement wartet.
  4. Verfahren nach Anspruch 1, das weiterhin Bereitstellen eines Cache-Protokolls aufweist, das mehrere mögliche Zustände des Cache-Controllers anzeigt, wobei jeder Zustand der mehreren möglichen Zustände einer jeweiligen Aktion zugehörig ist, die vom Cache-Controller durchzuführen ist, wobei das Verfahren aufweist: Empfangen der Anforderung, wenn sich der Cache-Controller in einem ersten Zustand der mehreren möglichen Zustände befindet; Umschalten durch den Cache-Controller vom ersten Zustand in einen zweiten Zustand der mehreren möglichen Zustände, sodass das Feststellen im zweiten Zustand des Cache-Controllers in Übereinstimmung mit Aktionen des zweiten Zustands durchgeführt wird; und Umschalten vom zweiten Zustand in einen dritten Zustand der mehreren möglichen Zustände, sodass das Zurücksenden im dritten Zustand in Übereinstimmung mit Aktionen durchgeführt wird, die dem dritten Zustand zugehörig sind, oder Umschalten vom zweiten Zustand in einen vierten Zustand der mehreren möglichen Zustände, sodass die Schritte des Sendens der Aufhebungsanforderung, des Empfangens und des Antwortens im vierten Zustand in Übereinstimmung mit Aktionen durchgeführt werden, die dem vierten Zustand zugehörig sind.
  5. Verfahren nach Anspruch 4, wobei das Cache-Protokoll weiterhin mehrere Datenzustände anzeigt, wobei das Verfahren aufweist: Zuweisen eines gegebenen Datenzustands der mehreren Datenzustände zum Datenelement, um anzuzeigen, dass das Datenelement zu dem atomaren Primitiv gehört und dass das Datenelement von einem anderen Kern angefordert wird und ein anderer Kern auf das Datenelement wartet, wobei das Feststellen, dass eine andere Anforderung des Datenelements vom dritten Kern empfangen wird, bevor die Anforderung des zweiten Kerns empfangen wird, ein Feststellen durch den Cache-Controller aufweist, dass das angeforderte Datenelement im gegebenen Datenzustand ist.
  6. Verfahren nach Anspruch 1, wobei das Empfangen der Anforderung aufweist: Überwachen eines Bussystems, das den Cache-Controller und die Mehrzahl der Prozessorkerne verbindet, wobei das Zurücksenden der Ablehnungsnachricht Erzeugen einer Systembustransaktion aufweist, die die Ablehnungsnachricht anzeigt.
  7. Verfahren nach Anspruch 1, das weiterhin aufweist: als Reaktion auf das Feststellen, dass das atomare Primitiv abgeschlossen ist, Zurücksenden des Datenelements an den dritten Kern.
  8. Verfahren nach Anspruch 1, wobei das Zurücksenden der Ablehnungsnachricht an den zweiten Kern weiterhin aufweist: Veranlassen, dass der zweite Kern eine oder mehrere weitere Anweisungen auszuführt, während das atomare Primitiv ausgeführt wird, wobei sich die weiteren Anweisungen von einer Anweisung zum Anfordern des Datenelements unterscheiden.
  9. Verfahren nach Anspruch 1, wobei das Ausführen des atomaren Primitivs aufweist: Zugreifen auf Daten, die vom ersten und zweiten Kern gemeinsam genutzt werden, wobei die empfangene Anforderung eine Anforderung zum Freigeben des Zugriffs auf die gemeinsam genutzten Daten durch den zweiten Kern ist.
  10. Verfahren nach Anspruch 1, wobei es sich bei dem Datenelement um eine Sperre handelt, die vom ersten Kern zum Ausführen des atomaren Primitivs erworben wird, und wobei das Feststellen, dass das Ausführen des atomaren Primitivs nicht abgeschlossen ist, ein Feststellen aufweist, dass die Sperre nicht verfügbar ist.
  11. Verfahren nach Anspruch 1, wobei die Cache-Zeile freigegeben wird, nachdem das Ausführen des atomaren Primitivs abgeschlossen ist.
  12. Verfahren nach Anspruch 1, wobei das Datenelement in einem Cache des ersten Kerns zwischengespeichert wird.
  13. Verfahren nach Anspruch 1, wobei das Datenelement in einem Cache zwischengespeichert wird, der vom ersten und vom dritten Kern gemeinsam genutzt wird.
  14. Verfahren nach Anspruch 1, das weiterhin aufweist: Bereitstellen einer Prozessoranweisung, wobei das Empfangen der Anforderung das Ergebnis des Ausführens der Prozessoranweisung durch den zweiten Kern ist und wobei die Schritte des Feststellens und Zurücksendens als Reaktion auf Feststellen, dass die empfangene Anforderung durch die Prozessoranweisung ausgelöst wird, durchgeführt werden.
  15. Prozessorsystem, das einen Cache-Controller und eine Mehrzahl von Prozessorkernen aufweist, wobei ein Datenelement ausschließlich einem ersten Kern der Mehrzahl von Prozessorkernen zugewiesen ist, um ein atomares Primitiv durch den ersten Kern auszuführen, wobei, solange das Ausführen des atomaren Primitivs durch den ersten Kern nicht abgeschlossen ist, der Cache-Controller konfiguriert ist: von einem zweiten Kern der Mehrzahl von Prozessorkernen eine Anforderung zum Zugreifen auf das Datenelement zu empfangen; und als Reaktion auf Feststellen, dass eine Anforderung für das Datenelement von einem dritten Kern der Mehrzahl von Prozessorkernen vor Empfangen der Anforderung vom zweiten Kern empfangen wird, eine Ablehnungsnachricht an den zweiten Kern zurückzusenden, die anzeigt, dass eine andere Anforderung auf das atomare Primitiv wartet, andernfalls: Senden einer Aufhebungsanforderung an den ersten Kern zum Aufheben eines exklusiven Zugriffs auf das Datenelement durch den ersten Kern; Empfangen eine Antwort vom ersten Kern, die eine positive Antwort auf die Aufhebungsanforderung anzeigt; und als Reaktion auf die positive Antwort auf die Aufhebungsanforderung vom ersten Kern, Antworten des Cache-Controllers an den zweiten Kern, dass die Daten für den Zugriff verfügbar sind.
  16. Prozessorsystem nach Anspruch 15, wobei der dritte Kern eine Logikschaltung umfasst, um eine vordefinierte Anweisung auszuführen, wobei der Cache-Controller konfiguriert ist, den Schritt des Feststellens als Reaktion auf das Ausführen der vordefinierten Anweisung durch die Logikschaltung durchzuführen.
  17. Prozessorsystem nach Anspruch 15, wobei das Feststellen, dass die Anforderung vom dritten Kern vor der Anforderung des zweiten Kerns empfangen wird, ein Feststellen aufweist, dass der dritte Kern auf das Datenelement wartet.
  18. Prozessorsystem nach Anspruch 15, das weiterhin Zurücksenden einer Ablehnungsnachricht für jede weitere empfangene Anforderung des Datenelements durch den Cache-Controller aufweist, während der dritte Kern noch auf das Datenelement wartet.
  19. Prozessorsystem nach Anspruch 15, das weiterhin Bereitstellen eines Cache-Protokolls aufweist, das mehrere mögliche Zustände des Cache-Controllers anzeigt, wobei jeder Zustand der mehreren möglichen Zustände einer jeweiligen Aktion zugehörig ist, die vom Cache-Controller durchzuführen ist, wobei das Verfahren aufweist: Empfangen der Anforderung, wenn sich der Cache-Controller in einem ersten Zustand der mehreren möglichen Zustände befindet; Umschalten durch den Cache-Controller vom ersten Zustand in einen zweiten Zustand der mehreren möglichen Zustände, sodass das Feststellen im zweiten Zustand des Cache-Controllers in Übereinstimmung mit Aktionen des zweiten Zustands durchgeführt wird; und Umschalten vom zweiten Zustand in einen dritten Zustand der mehreren möglichen Zustände, sodass das Zurücksenden im dritten Zustand in Übereinstimmung mit Aktionen durchgeführt wird, die dem dritten Zustand zugehörig sind, oder Umschalten vom zweiten Zustand in einen vierten Zustand der mehreren möglichen Zustände, sodass die Schritte des Sendens der Aufhebungsanforderung, des Empfangens und des Antwortens im vierten Zustand in Übereinstimmung mit Aktionen durchgeführt werden, die dem vierten Zustand zugehörig sind.
  20. Prozessorsystem nach Anspruch 19, wobei das Cache-Protokoll weiterhin mehrere Datenzustände anzeigt, wobei das Verfahren aufweist: Zuweisen eines gegebenen Datenzustands der mehreren Datenzustände zum Datenelement, um anzuzeigen, dass das Datenelement zu dem atomaren Primitiv gehört und dass das Datenelement von einem anderen Kern angefordert wird und ein anderer Kern auf das Datenelement wartet, wobei das Feststellen, dass eine andere Anforderung des Datenelements vom dritten Kern empfangen wird, bevor die Anforderung des zweiten Kerns empfangen wird, ein Feststellen durch den Cache-Controller aufweist, dass das angeforderte Datenelement im gegebenen Datenzustand ist.
  21. Computerprogrammprodukt, das ein oder mehrere durch einen Computer lesbare Speichermedien aufweist, die gemeinsam Programmanweisungen speichern, die durch einen Prozessor oder eine programmierbare Schaltung ausführbar sind, um den Prozessor oder die programmierbare Schaltung zu veranlassen, ein Verfahren für ein Computersystem durchzuführen, das eine Mehrzahl von Prozessorkernen aufweist, wobei ein Datenelement ausschließlich einem ersten Kern der Mehrzahl von Prozessorkernen zugewiesen ist, um ein atomares Primitiv durch den ersten Kern auszuführen; wobei, solange das Ausführen des atomaren Primitivs durch den ersten Kern nicht abgeschlossen ist, das Verfahren aufweist: Empfangen einer Anforderung zum Zugreifen auf das Datenelement an einem Cache-Controller von einem zweiten Kern der Mehrzahl von Prozessorkernen; und als Reaktion auf Feststellen, dass eine Anforderung des Datenelements von einem dritten Kern der Mehrzahl von Prozessorkernen vor Empfangen der Anforderung vom zweiten Kern empfangen wird, Zurücksenden einer Ablehnungsnachricht an den zweiten Kern; wobei die Ablehnungsnachricht an den zweiten Kern weiterhin anzeigt, dass eine andere Anforderung auf das atomare Primitiv wartet, andernfalls Senden einer Aufhebungsanforderung an den ersten Kern zum Aufheben eines exklusiven Zugriffs auf das Datenelement durch den ersten Kern; Empfangen einer Antwort vom ersten Kern, die eine positive Antwort auf die Aufhebungsanforderung anzeigt; und als Reaktion auf die positive Antwort auf die Aufhebungsanforderung vom ersten Kern, Antworten des Cache-Controllers an den zweiten Kern, dass die Daten für den Zugriff verfügbar sind.
  22. Computerprogrammprodukt nach Anspruch 21, wobei das Feststellen, dass die Anforderung vom dritten Kern vor der Anforderung des zweiten Kerns empfangen wird, ein Feststellen aufweist, dass der dritte Kern auf das Datenelement wartet.
  23. Computerprogrammprodukt nach Anspruch 21, das weiterhin Zurücksenden einer Ablehnungsnachricht für jede weitere empfangene Anforderung des Datenelements durch den Cache-Controller aufweist, während der dritte Kern noch auf das Datenelement wartet.
  24. Computerprogrammprodukt nach Anspruch 21, das weiterhin Bereitstellen eines Cache-Protokolls aufweist, das mehrere mögliche Zustände des Cache-Controllers anzeigt, wobei jeder Zustand der mehreren möglichen Zustände einer jeweiligen Aktion zugehörig ist, die vom Cache-Controller durchzuführen ist, wobei das Verfahren aufweist: Empfangen der Anforderung, wenn sich der Cache-Controller in einem ersten Zustand der mehreren möglichen Zustände befindet; Umschalten durch den Cache-Controller vom ersten Zustand in einen zweiten Zustand der mehreren möglichen Zustände, sodass das Feststellen im zweiten Zustand des Cache-Controllers in Übereinstimmung mit Aktionen des zweiten Zustands durchgeführt wird; und Umschalten vom zweiten Zustand in einen dritten Zustand der mehreren möglichen Zustände, sodass das Zurücksenden im dritten Zustand in Übereinstimmung mit Aktionen durchgeführt wird, die dem dritten Zustand zugehörig sind, oder Umschalten vom zweiten Zustand in einen vierten Zustand der mehreren möglichen Zustände, sodass die Schritte des Sendens der Aufhebungsanforderung, des Empfangens und des Antwortens im vierten Zustand in Übereinstimmung mit Aktionen durchgeführt werden, die dem vierten Zustand zugehörig sind.
  25. Computerprogrammprodukt nach Anspruch 24, wobei das Cache-Protokoll weiterhin mehrere Datenzustände anzeigt, wobei das Verfahren aufweist: Zuweisen eines gegebenen Datenzustands der mehreren Datenzustände zum Datenelement, um anzuzeigen, dass das Datenelement zu dem atomaren Primitiv gehört und dass das Datenelement von einem anderen Kern angefordert wird und ein anderer Kern auf das Datenelement wartet, wobei das Feststellen, dass eine andere Anforderung des Datenelements vom dritten Kern empfangen wird, bevor die Anforderung des zweiten Kerns empfangen wird, ein Feststellen durch den Cache-Controller aufweist, dass das angeforderte Datenelement im gegebenen Datenzustand ist.
DE112020000843.6T 2019-05-09 2020-04-02 Ausführen mehrerer datenanforderungen von mehrkernprozessoren Granted DE112020000843T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/407,746 US20200356485A1 (en) 2019-05-09 2019-05-09 Executing multiple data requests of multiple-core processors
US16/407,746 2019-05-09
PCT/IB2020/053126 WO2020225615A1 (en) 2019-05-09 2020-04-02 Executing multiple data requests of multiple-core processors

Publications (1)

Publication Number Publication Date
DE112020000843T5 true DE112020000843T5 (de) 2021-11-11

Family

ID=73046032

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000843.6T Granted DE112020000843T5 (de) 2019-05-09 2020-04-02 Ausführen mehrerer datenanforderungen von mehrkernprozessoren

Country Status (6)

Country Link
US (1) US20200356485A1 (de)
JP (1) JP2022531601A (de)
CN (1) CN113767372A (de)
DE (1) DE112020000843T5 (de)
GB (1) GB2597884B (de)
WO (1) WO2020225615A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11750418B2 (en) * 2020-09-07 2023-09-05 Mellanox Technologies, Ltd. Cross network bridging
US11614891B2 (en) * 2020-10-20 2023-03-28 Micron Technology, Inc. Communicating a programmable atomic operator to a memory controller
CN114546927B (zh) * 2020-11-24 2023-08-08 北京灵汐科技有限公司 数据传输方法、核心、计算机可读介质、电子设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175837A (en) * 1989-02-03 1992-12-29 Digital Equipment Corporation Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits
JPH07262089A (ja) * 1994-03-17 1995-10-13 Fujitsu Ltd ロックアクセス制御方法および情報処理装置
US5682537A (en) * 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5913227A (en) * 1997-03-24 1999-06-15 Emc Corporation Agent-implemented locking mechanism
US7325064B2 (en) * 2001-07-17 2008-01-29 International Business Machines Corporation Distributed locking protocol with asynchronous token prefetch and relinquish
US7571270B1 (en) * 2006-11-29 2009-08-04 Consentry Networks, Inc. Monitoring of shared-resource locks in a multi-processor system with locked-resource bits packed into registers to detect starved threads
JP4613247B2 (ja) * 2007-06-20 2011-01-12 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
US7890555B2 (en) * 2007-07-10 2011-02-15 International Business Machines Corporation File system mounting in a clustered file system
CN101685406A (zh) * 2008-09-27 2010-03-31 国际商业机器公司 用于对数据结构的实例进行操作的方法和系统
US8850131B2 (en) * 2010-08-24 2014-09-30 Advanced Micro Devices, Inc. Memory request scheduling based on thread criticality
US9158597B2 (en) * 2011-07-08 2015-10-13 Microsoft Technology Licensing, Llc Controlling access to shared resource by issuing tickets to plurality of execution units
EP2771885B1 (de) * 2011-10-27 2021-12-01 Valtrus Innovations Limited Schaltbarer speicher zur unterstützung von atomaren operationen
CN102929832B (zh) * 2012-09-24 2015-05-13 杭州中天微系统有限公司 基于非写分配的高速缓存一致性的多核处理器数据传输系统
US20160306754A1 (en) * 2015-04-17 2016-10-20 Kabushiki Kaisha Toshiba Storage system
US11240334B2 (en) * 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
US9715459B2 (en) * 2015-12-22 2017-07-25 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US11157407B2 (en) * 2016-12-15 2021-10-26 Optimum Semiconductor Technologies Inc. Implementing atomic primitives using cache line locking
US10310811B2 (en) * 2017-03-31 2019-06-04 Hewlett Packard Enterprise Development Lp Transitioning a buffer to be accessed exclusively by a driver layer for writing immediate data stream
CN109684358B (zh) * 2017-10-18 2021-11-09 北京京东尚科信息技术有限公司 数据查询的方法和装置

Also Published As

Publication number Publication date
JP2022531601A (ja) 2022-07-07
CN113767372A (zh) 2021-12-07
GB202116692D0 (en) 2022-01-05
GB2597884B (en) 2022-06-22
US20200356485A1 (en) 2020-11-12
WO2020225615A1 (en) 2020-11-12
GB2597884A (en) 2022-02-09

Similar Documents

Publication Publication Date Title
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE112020000843T5 (de) Ausführen mehrerer datenanforderungen von mehrkernprozessoren
DE112005003874B3 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE112017001959T5 (de) Cachespeicher-Zugriff
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE112013002069T5 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112005003243T5 (de) System und Verfahren für die Cache-Kohärenz bei einem Cache mit unterschiedlichen Längen für die Cache-Orte
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102009031497A1 (de) Erfüllung der Speicher-Ordering-Anforderungen zwischen Partial-Write- und Non-Snoop-Zugriffen
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE112005002180T5 (de) Lösen von Cachekonflikten
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112006002908T5 (de) Technik für die Kommunikation und Synchronisation von Threads
DE102020101814A1 (de) Effiziente ausführung anhand von aufgabengraphen festgelegter arbeitslasten
DE112019001863T5 (de) Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen
DE112010004530T5 (de) Transaktionsaktualisierung bei Dynamischen Verteilten Arbeitslasten

Legal Events

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