DE112022003146T5 - Datenverarbeitungssystem mit Mastern, die sich an Agenten mit unterschiedlichen Wiederholungsverhaltensweisen anpassen - Google Patents

Datenverarbeitungssystem mit Mastern, die sich an Agenten mit unterschiedlichen Wiederholungsverhaltensweisen anpassen Download PDF

Info

Publication number
DE112022003146T5
DE112022003146T5 DE112022003146.8T DE112022003146T DE112022003146T5 DE 112022003146 T5 DE112022003146 T5 DE 112022003146T5 DE 112022003146 T DE112022003146 T DE 112022003146T DE 112022003146 T5 DE112022003146 T5 DE 112022003146T5
Authority
DE
Germany
Prior art keywords
mode
memory access
request
master
access request
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.)
Pending
Application number
DE112022003146.8T
Other languages
English (en)
Inventor
Derek E. Williams
Alexander Michael Taft
Guy L. Guthrie
Bernard C. Drerup
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 DE112022003146T5 publication Critical patent/DE112022003146T5/de
Pending legal-status Critical Current

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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Retry When Errors Occur (AREA)

Abstract

Ein Datenverarbeitungssystem weist eine Mehrzahl von Snoopern, eine einen Master aufweisende Verarbeitungseinheit und eine Systemstruktur auf, die in einer zum Datenaustausch fähigen Weise den Master und die Mehrzahl von Snoopern verbindet. Der Master stellt einen Wiederholungsbetriebsmodus für eine Verbindungsfunktion in einer von alternativen ersten und zweiten Betriebsmodi ein. Der erste Betriebsmodus gehört zu einem ersten Snooper-Typ, und der zweite Betriebsmodus gehört zu einem davon unterschiedenen zweiten Snooper-Typ. Der Master gibt eine Speicherzugriffsanforderung der Verbindungsfunktion auf der Systemstruktur des Datenverarbeitungssystems aus. Auf der Grundlage eines Empfangens einer kombinierten Antwort, die einer systemweiten Kohärenzantwort auf die Anforderung entspricht, verzögert der Master ein Intervall mit einer vom Wiederholungsbetriebsmodus abhängigen Dauer und gibt danach die Speicherzugriffsanforderung auf der Systemstruktur erneut aus.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf Datenverarbeitung und insbesondere auf Verbessern einer Datenverarbeitungsleistung durch Anpassen des Verhaltens von Mastern an Busagenten mit unterschiedlichen Wiederholungsverhaltensweisen.
  • Ein herkömmliches symmetrisches Mehrprozessor (SMP)-Computersystem wie beispielsweise ein Server-Computersystem weist mehrere Verarbeitungseinheiten auf, die alle über eine Systemverbindung verbunden sind, die üblicherweise einen oder mehrere Adress-, Daten- und Steuerbusse aufweist. Mit der Systemverbindung ist ein Systemspeicher verbunden, der der niedrigsten Ebene eines gemeinsam genutzten Speichers in dem Mehrprozessor-Computersystem entspricht und auf den im Allgemeinen von allen Verarbeitungseinheiten für einen Lese- und Schreibzugriff zugegriffen werden kann. Um die Zugriffslatenz auf im Systemspeicher liegende Anweisungen und Daten zu verringern, wird jede Verarbeitungseinheit üblicherweise des Weiteren von einer jeweiligen vertikalen Mehrebenen-Cache-Hierarchie unterstützt, deren untere Ebene(n) von einem oder mehr Prozessorkernen gemeinsam genutzt werden können.
  • Da mehrere Prozessorkerne einen Schreibzugriff auf einen selben Speicherblock (z.B. Cache-Zeile oder-Sektor) anfordern können und da zwischengespeicherte Speicherblöcke, die geändert werden, nicht sofort mit dem Systemspeicher synchronisiert werden, setzen die Cache-Hierarchien von Mehrprozessor-Computersystemen üblicherweise ein Cache-Kohärenzprotokoll um, um unter den verschiedenen „Ansichten“ von Inhalten des Speichersystems der verschiedenen Prozessorkerne zumindest einen erforderlichen Mindestgrad an Kohärenz sicherzustellen. Der erforderliche Mindestgrad an Kohärenz wird vom ausgewählten Speicherkonsistenzmodell bestimmt, das Regeln für das ersichtliche Ordnen und die Sicherbarkeit von Aktualisierungen des verteilten gemeinsam genutzten Speichers definiert. In allen Speicherkonsistenzmodellen im Kontinuum zwischen schwachen Konsistenzmodellen und starken Konsistenzmodellen erfordert Cache-Kohärenz mindestens, nachdem eine Verarbeitungseinheit auf eine Kopie eines Speicherblocks zugreift und anschließend auf eine aktualisierte Kopie des Speicherblocks zugreift, dass die Verarbeitungseinheit nicht erneut auf die alte („abgestandene“) Kopie des Speicherblocks zugreifen kann.
  • Ein Cache-Kohärenzprotokoll definiert üblicherweise einen Satz von Kohärenzzuständen, die in Verbindung mit zwischengespeicherten Kopien von Speicherblöcken gespeichert werden, sowie die Ereignisse, die Übergänge zwischen den Kohärenzzuständen auslösen, und die Kohärenzzustände, zu denen Übergänge ausgeführt werden. Kohärenzprotokolle können im Allgemeinen in auf einem Verzeichnis beruhende oder auf Schnüffeln („Snooping“) beruhende Protokolle unterteilt werden. Bei auf einem Verzeichnis beruhenden Kohärenzprotokollen wahrt ein gemeinsames zentrales Verzeichnis die Kohärenz, indem Zugriffe auf Speicherblöcke durch die Caches gesteuert und Kopien der in den verschiedenen Caches gehaltenen Speicherblöcke aktualisiert oder ungültig gemacht werden. Dagegen setzen auf Snooping beruhende Kohärenzprotokolle ein verteiltes Gestaltungsparadigma um, bei dem jeder Cache ein privates Verzeichnis seiner Inhalte führt, die Systemverbindung auf Speicherzugriffsanforderungen überwacht („abschnüffelt“), die auf im Cache gehaltene Speicherblöcke ausgerichtet sind, und auf die Speicherzugriffsanforderungen reagiert, indem er sein privates Verzeichnis aktualisiert und, sofern erforderlich, (eine) Kohärenznachricht(en) und/oder seine Kopie des Speicherblocks überträgt.
  • Zu den Cache-Zuständen des Kohärenzprotokolls können beispielsweise diejenigen des bekannten MESI (Modified, Exclusive, Shared, Invalid)-Protokolls oder einer Variante davon gehören. Das MESI-Protokoll ermöglicht es, eine Cache-Zeile von Daten einem von vier Zuständen zuzuordnen: „M“ („Modified“, geändert), „E“ („Exclusive“, ausschließlich), „S“ („Shared“, gemeinsam genutzt) oder „I“ („Invalid“, ungültig). Der Zustand „Modified“ gibt an, dass ein Speicherblock nur in dem Cache gültig ist, der den geänderten Speicherblock enthält, und dass der Speicherblock nicht mit dem Systemspeicher übereinstimmt. Der Zustand „Exclusive“ gibt an, dass der zugehörige Speicherblock mit dem Systemspeicher übereinstimmt und dass der zugehörige Cache der einzige Cache in dem Datenverarbeitungssystem ist, der den zugehörigen Speicherblock enthält. Der Zustand „Shared“ gibt an, dass der zugehörige Speicherblock im zugehörigen Cache und möglicherweise in einem oder mehr anderen Caches liegt und dass alle Kopien des Speicherblocks mit dem Systemspeicher übereinstimmen. Der Zustand „Invalid“ gibt schließlich an, dass die Daten und das zu einem Kohärenzgranul gehörende Adresskennzeichen beide ungültig sind.
  • Bei auf Snooping beruhenden Kohärenzprotokollen ist es üblich, dass Caches und andere Busagenten, die an Funktionen auf der Verbindung beteiligt sind, auf eine auf der Verbindung geschnüffelte Anforderung durch Bereitstellen einer individuellen Kohärenzantwort reagieren. Diese individuellen Kohärenzantworten werden dann kombiniert oder anderweitig verarbeitet, um eine endgültige systemweite Kohärenzantwort auf die Anforderung zu festzulegen, die beispielsweise angeben kann, ob ein Erfolg für die Anforderung zulässig ist oder ob sie wiederholt werden muss, eine Datenquelle, die dafür zuständig ist, dem anfordernden Cache eine Ziel-Cache-Zeile von in der Anforderung gekennzeichneten Daten zu liefern, einen Kohärenzzustand der Ziel-Cache-Zeile in einem oder mehr auf die Anforderungen folgenden Caches usw.
  • Aus der vorliegenden Offenbarung wird ersichtlich, dass an einem auf Snooping beruhenden Kohärenzprotokoll beteiligte Busagenten je nach Aufbau und Funktion jedes solchen Busagenten viele unterschiedliche Wiederholungsverhaltensweisen aufweisen können. Beispielsweise stellt ein Busagent wie z.B. eine Speichersteuereinheit für ein Speichersystem üblicherweise eine individuelle Wiederholungskohärenzantwort für eine Anforderung, die auf eine Adresse ausgerichtet ist, für die der Busagent zuständig ist, nur bereit, wenn der Busagent die Anforderung nicht bearbeiten kann, beispielsweise aufgrund einer Kollision mit einer früheren Anforderung mit derselben Zieladresse oder fehlender Kapazität zum Empfangen und Verarbeiten der Anforderung. Andere Busagenten wie beispielsweise eine Busbrücke können ein anderes Wiederholungsverhalten aufweisen, bei dem der Busagent eine Wiederholungsantwort für eine Anforderung, die auf eine Adresse ausgerichtet ist, für die der Busagent zuständig ist, nicht nur aufgrund von Kollisionen und fehlender Kapazität bereitstellt, sondern auch aufgrund der Notwendigkeit, dass der Busagent eine Verarbeitung als Reaktion auf die Anforderung ausführt, beispielsweise durch Ausgeben einer entsprechenden Anforderung an einen sekundären Bus vor dem Bestätigen der Anforderung, wenn sie am primären Bus erneut vorgelegt wird.
  • KURZE ZUSAMMENFASSUNG
  • Aus der vorliegenden Offenbarung wird ersichtlich, dass in Datenverarbeitungssystemen nach dem Stand der Technik ein Busagent, der Anforderungen auf der Systemverbindung (hier als Master bezeichnet) einleitet, sein Verhalten nicht je nach den unterschiedlichen Wiederholungsverhaltensweisen der verschiedenen Busagenten anpasst, die ein Ziel einer Anforderung sein können. Infolgedessen kann der Master die begrenzte Bandbreite der Systemverbindung auf ineffiziente Weise in Anspruch nehmen, indem er zu viele Anforderungen ausgibt oder indem er Anforderungen als Reaktion auf Wiederholungskohärenzantworten zu oft ausgibt.
  • In mindestens einer Ausführungsform passt ein Master einer Anforderung auf einer Systemverbindung eines Datenverarbeitungssystems sein Verhalten als Reaktion auf eine Wiederholungskohärenzantwort auf der Grundlage eines Busagententyps an, der ein Ziel der Anforderung ist.
  • In mindestens einer Ausführungsform weist ein Datenverarbeitungssystem eine Mehrzahl von Snoopern, eine einen Master aufweisende Verarbeitungseinheit und eine Systemstruktur auf, die in einer zum Datenaustausch fähigen Weise den Master und die Mehrzahl von Snoopern verbindet. Der Master stellt einen Wiederholungsbetriebsmodus für eine Verbindungsfunktion in einem von alternativen ersten und zweiten Betriebsmodi ein. Der erste Betriebsmodus gehört zu einem ersten Snooper-Typ, und der zweite Betriebsmodus gehört zu einem davon verschiedenen zweiten Snooper-Typ. Der Master gibt eine Speicherzugriffsanforderung der Verbindungsfunktion auf der Systemstruktur des Datenverarbeitungssystems aus. Auf der Grundlage eines Empfangens einer kombinierten Antwort, die einer systemweiten Kohärenzantwort auf die Anforderung entspricht, verzögert der Master ein Intervall mit einer vom Wiederholungsbetriebsmodus abhängigen Dauer und gibt danach die Speicherzugriffsanforderung auf der Systemstruktur erneut aus.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
    • 1 ist ein Übersichts-Blockschaltbild eines Datenverarbeitungssystems gemäß einer Ausführungsform;
    • 2 ist ein detaillierteres Blockschaltbild einer Speichersteuereinheit und einer Busbrücke eines beispielshaften Datenverarbeitungssystems gemäß einer Ausführungsform;
    • 3 ist ein Zeit-Raum-Schaubild einer beispielhaften Funktion auf der Systemverbindung des Datenverarbeitungssystems von 1;
    • 4 veranschaulicht eine beispielhafte Datenverweildauer auf einer Systemverbindung eines Datenverarbeitungssystems gemäß einer Ausführungsform;
    • 5 ist ein detaillierteres Blockschaltbild eines L2-Cache von 1 gemäß einer Ausführungsform;
    • 6 ist ein Übersichts-Logikablaufplan von einem beispielhaften Prozess, durch den eine Zuteilungslogik einer Speichersteuereinheit eine Anforderung verarbeitet, die auf der Systemverbindung gemäß einer Ausführungsform empfangen wurde;
    • 7 ist ein Übersichts-Logikablaufplan von einem beispielhaften Prozess, durch den ein Busagent einer Speichersteuereinheit eine Anforderung verarbeitet, die auf der Systemverbindung gemäß einer Ausführungsform empfangen wurde;
    • 8 ist ein Übersichts-Logikablaufplan von einem beispielhaften Prozess, durch den eine Zuteilungslogik einer Busbrücke eine Anforderung verarbeitet, die auf der Systemverbindung gemäß einer Ausführungsform empfangen wurde;
    • 9 ist ein Übersichts-Logikablaufplan von einem beispielhaften Prozess, durch den ein Busagent einer Busbrücke eine Anforderung verarbeitet, die auf der Systemverbindung gemäß einer Ausführungsform empfangen wurde;
    • 10 ist ein Übersichts-Logikablaufplan von einem beispielhaften Prozess, durch den ein Master Anforderungen auf der Systemverbindung eines Datenverarbeitungssystems gemäß einer Ausführungsform ausgibt;
    • 11 ist ein Übersichts-Logikablaufplan von einem beispielhaften Prozess, durch den ein zu einem Master von Funktionen der Systemstruktur eines Datenverarbeitungssystems gehörender Prädiktor einen Betriebsmodus des Masters gemäß einer Ausführungsform festlegt; und
    • 12 stellt einen beispielhaften Entwurfsprozess gemäß einer Ausführungsform dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Nunmehr bezugnehmend auf die Figuren, und insbesondere unter Bezugnahme auf 1, wird ein Übersichts-Blockschaltbild von einer beispielshaften Ausführungsform eines Mehrprozessor-Datenverarbeitungssystems 101 gemäß einer Ausführungsform veranschaulicht. In der dargestellten Ausführungsform weist das Datenverarbeitungssystem 101 mehrere mit einer Systemstruktur verbundene Datenverarbeitungseinheiten 100 auf. In dem veranschaulichten Beispiel handelt es sich bei jeder Verarbeitungseinheit 100 um eine einzelne integrierte Schaltung, die zwei oder mehr Prozessorkerne 102a, 102b zum unabhängigen Verarbeiten von Anweisungen und Daten aufweist. (Selbstverständlich kann in anderen Ausführungsformen die Anzahl der Prozessorkerne 102 verschieden sein.) Jeder Prozessorkern 102 weist eine Anweisungs-Sequenzierungseinheit (instruction sequencing unit, ISU) 104 zum Abrufen und Ordnen von Anweisungen zum Ausführen und eine oder mehrere Ausführungseinheiten 106 zum Ausführen von Anweisungen auf. Die Ausführungseinheiten 106 können beispielsweise eine oder mehrere Gleitkommaeinheiten (floating-point units, FPUs), eine oder mehrere Lade-Speicher-Einheiten (load-store units, LSUs) und eine oder mehrere Ganzzahleinheiten (integer units, IUs) usw. aufweisen. Zu den von den Ausführungseinheiten 106 ausgeführten Anweisungen können beispielsweise arithmetische Fest- und Gleitkommaanweisungen, logische Anweisungen und Anweisungen gehören, die einen Lese- und/oder Schreibzugriff auf einen Speicherblock erfordern. Die Ausführungseinheiten 106 sind mit Registern 107 verbunden, die neben anderen Daten vorübergehend Quelloperanden und Zieloperanden von Anweisungen puffern, die von den Ausführungseinheiten 106 ausgeführt werden.
  • Die Funktion jedes Prozessorkerns 102 wird von einer Mehrebenen-Speicherhierarchie unterstützt, die auf ihrer untersten Ebene einen oder mehrere gemeinsam genutzte Systemspeicher 132 aufweist (von denen nur einer in 1 gezeigt ist). Jeder Systemspeicher 132 wird von einer zugehörigen integrierten Speichersteuereinheit (integrated memory controller, IMC) 124 gesteuert, die einen Lese- und Schreibzugriff auf den Systemspeicher 132 als Reaktion auf Anforderungen auf einer Verbindungstruktur steuert, die einen lokalen Bus 115 innerhalb der Verarbeitungseinheit 100 und einen Systembus 130 aufweist.
  • Die Mehrebenen-Speicherhierarchie weist zusätzlich auf ihren oberen Ebenen eine vertikale Speicherhierarchie auf, die eine oder mehrere Cache-Ebenen aufweist. In der veranschaulichenden Ausführungsform weist die vertikale Cache-Hierarchie einer Verarbeitungseinheit 100 einen Durchspeicher-Cache der Ebene eins (level one, L1) 108 in jedem Prozessorkern 102a und einen Cache der Ebene zwei (level two, L2) 110 auf, der gemeinsam von allen Prozessorkernen 102 der Verarbeitungseinheit 100 genutzt wird. (In anderen Ausführungsformen kann jeder Prozessorkern 102 seinen eigenen privaten L2-Cache 110 besitzen.) Die veranschaulichte Cache-Hierarchie weist zwar nur zwei Cache-Ebenen auf, für den Fachmann wird jedoch verständlich sein, dass alternative Ausführungsformen zusätzliche Ebenen (z.B. Ebene drei (level three, L3), Ebene vier (level four, L4) usw.) eines On-Chip- oder Off-Chip-Cache in In-Line- oder Look-Aside-Ausführung aufweisen können, die in Bezug auf die Inhalte der oberen Cache-Ebenen vollständig einschließend, teilweise einschließend oder nichteinschließend sein können.
  • Wie in 1 weiterhin gezeigt, weist die Verarbeitungseinheit 100 eine integrierte Verbindungslogik 120 auf, durch die der lokale Bus 115 der Verarbeitungseinheit 100 mit dem Systembus 130 verbunden werden kann, um einen Teil der Verbindungsstruktur eines größeren Mehrprozessor-Datenverarbeitungssystems zu bilden. Die Verbindungslogik 120 weist eine Anforderungslogik (bezeichnet mit „R“ für „request“) 121a, eine partielle Antwortlogik (bezeichnet mit „P“) 121b, eine kombinierte Antwortlogik (bezeichnet mit „C“ für „combined“) 121c und eine Datenlogik (bezeichnet mit „D“) 121d zum Verarbeiten und Weiterleiten von Daten in unterschiedlichen Funktionsphasen auf der Verbindungsstruktur auf.
  • Jede Verarbeitungseinheit 100 kann auch eine Busbrücke 126 aufweisen, die die Verbindung eines möglicherweise nichtkohärenten, entfernt angeordneten Datenverarbeitungssystems 134 unterstützt, und eine integrierte E/A (Eingabe/Ausgabe)-Steuereinheit 128, die die Anbindung von einer oder mehreren E/A-Einheiten wie beispielsweise der E/A-Einheit 136 unterstützt. Für den Fachmann wird verständlich sein, dass das Datenverarbeitungssystem 101 viele zusätzliche nicht veranschaulichte Komponenten aufweisen kann, beispielsweise nichtflüchtigen Speicher, Anschlüsse zum Verbinden von Netzwerken oder angebundenen Einheiten usw. Da solche zusätzlichen Komponenten zum Verständnis der vorliegenden Erfindung nicht notwendig sind, werden sie in 1 nicht veranschaulicht oder hier weiter erörtert. Es sollte allerdings auch verständlich sein, dass die durch die vorliegende Erfindung bereitgestellten Verbesserungen auf Datenverarbeitungssysteme vielfältiger Architekturen anwendbar sind und in keiner Weise auf die in 1 veranschaulichte verallgemeinerte Architektur eines Datenverarbeitungssystems beschränkt sind.
  • Nunmehr bezugnehmend auf 2 wird dort ein detaillierteres Blockschaubild einer Speichersteuereinheit 124 und einer Busbrücke 126 eines beispielhaften Datenverarbeitungssystems 101 gemäß einer Ausführungsform dargestellt. In dem veranschaulichten Beispiel weist jede aus IMC 124 und Busbrücke 126 eine jeweilige Instanz einer Zuteilungslogik 200 oder 210 auf, die die Verbindungsstruktur auf Anforderungen überwacht, die reale Zieladressen spezifizieren, für die die jeweils zugehörige aus IMC 124 und Busbrücke 126 verantwortlich ist. Zusätzlich weist jede aus IMC 124 und Busbrücke 126 einen oder mehrere Agenten auf, die über die Systemstruktur empfangene Anforderungen bedienen. Beispielsweise weist die IMC 124 Speicheragenten (memory agents, MA) 202a-202m zum unabhängigen und gleichzeitigen Bedienen von Anforderungen zum Lesen von Speicherblöcken aus dem und Speichern von Speicherblöcken in den zugehörigen Systemspeicher 132 auf. In ähnlicher Weise weist die Busbrücke 126 Busagenten (bus agents, BA) 212a-212k zum unabhängigen und gleichzeitigen Überbrücken verschiedener Arten von Anforderungen zwischen dem entfernt angeordneten System 134 und der Systemstruktur des Datenverarbeitungssystems 101 auf.
  • 2 veranschaulicht weiterhin, dass ein Systemspeicher 132 eine Seitenrahmentabelle 220 speichert, die eine Mehrzahl von Seitentabelleneinträgen (page table entries, PTEs) 222 aufweist, um Adressen aus dem von den Prozessorkernen 102 verwendeten Raum effektiver Adressen (effective address, EA) in den Raum realer Adressen (real address, RA) zu übersetzen, der von L2-Caches 110, IMCs 124 und Busbrücken 126 verwendet wird. In der veranschaulichten Ausführungsform weist jeder PTE 222 ein Feld „Gültig“ (valid) 224 auf, das angibt, ob der Inhalt des PTE 222 gültig ist, ein Feld EA 226, das eine EA einer Speicherseite angibt, ein Feld RA 228, das die entsprechende RA der Speicherseite angibt, und ein Feld „Seitenberechtigung“ (page permission, PP) 230, das Zugriffsberechtigungen für die Speicherseite angibt (z.B. nur Lesen, Lesen-Schreiben usw.). In einigen Ausführungsformen kann ein PTE 222 wahlweise ein Feld „Typ“ (T) 232 aufweisen, das einen Typ einer Einheit angibt, der die RA zugewiesen ist. In mindestens einer Ausführungsform gibt ein Feld „Typ“ 232 mindestens zwei Typen an, „fortschreitende“ Einheiten, beispielsweise die Busbrücke 126, und „nichtfortschreitende“ Einheiten, beispielsweise die IMC 124, wie weiter unten erörtert.
  • Nunmehr bezugnehmend auf 3 wird dort ein Zeit-Raum-Schaubild einer beispielhaften Verbindungsfunktion auf der Systemstruktur des Datenverarbeitungssystems 101 von 1 dargestellt. Die Verbindungsfunktion beginnt, wenn ein Master 300 (z.B. eine Read-Claim (RC)-Maschine 512 eines L2-Cache 110 (siehe z.B. 5) oder ein Master innerhalb einer E/A-Steuereinheit 128) eine Anforderung 302 auf der Verbindungsstruktur ausgibt. Die Anforderung 302 weist vorzugsweise mindestens einen Transaktionstyp auf, der einen Typ des gewünschten Zugriffs angibt, und eine Ressourcenkennung (z.B. reale Zieladresse), die eine Ressource angibt, auf die von der Anforderung zuzugreifen ist. Zu den allgemein üblichen Anforderungstypen gehören die nachstehend in Tabelle I dargelegten. TABELLE I
    Anforderung Beschreibung
    READ Fordert eine Kopie des Abbilds eines Speicherblocks für Abfragezwecke an
    RWITM (Read-With-Intent-To-Modify) Fordert eine eindeutige Kopie des Abbilds eines Speicherblocks mit der Absicht an, ihn zu aktualisieren (ändern), und fordert die Vernichtung anderer Kopien an, sofern vorhanden
    DCLAIM (Data Claim) Fordert Befugnis an, eine bestehende Nur-Abfrage-Kopie eines Speicherblocks zu einer eindeutigen Kopie zu befördern, mit der Absicht, sie zu aktualisieren (ändern), und fordert die Vernichtung anderer Kopien an, sofern vorhanden
    DCBZ (Data Cache Block Zero) Fordert Befugnis an, eine neue eindeutige Kopie eines Speicherblocks ohne Berücksichtigung seines gegenwärtigen Zustands zu erstellen und seine Inhalte anschließend zu ändern; fordert Vernichtung anderer Kopien an, sofern vorahnden
    CASTOUT Kopiert das Abbild eines Speicherblocks von einer höheren Speicherebene auf eine niedrigere Speicherebene in Vorbereitung auf das Vernichten der Kopie auf der höheren Ebene
    WRITE Fordert Befugnis an, eine neue eindeutige Kopie eines Speicherblocks ohne Berücksichtigung seines gegenwärtigen Zustands zu erstellen und sofort das Abbild des Speicherblocks von einer höheren Speicherebene auf eine niedrigere Speicherebene zu kopieren in Vorbereitung auf das Vernichten der Kopie auf der höheren Ebene
    PARTIAL WRITE Fordert Befugnis an, eine neue eindeutige Kopie eines partiellen Speicherblocks ohne Berücksichtigung seines gegenwärtigen Zustands zu erstellen und sofort das Abbild des partiellen Speicherblocks von einer höheren Speicherebene auf eine niedrigere Speicherebene zu kopieren in Vorbereitung auf das Vernichten der Kopie auf der höheren Ebene
  • Die Anforderung 302 wird von Snoopern 304 (z.B. in L2-Caches 110, IMCs 124 und Busbrücken 126) empfangen, die im gesamten Datenverarbeitungssystem 101 verteilt sind. Mit einigen Ausnahmen schnüffeln die Snooper 304 im selben L2-Cache 110 wie der Master 300 von Anforderung 302 im Allgemeinen nicht die Anforderung 302 (d.h. es gibt im Allgemeinen kein Selbstschnüffeln), da eine Anforderung 302 auf der Verbindungsstruktur nur übertragen wird, wenn die Anforderung 302 nicht intern von einer Verarbeitungseinheit 100 bedient werden kann. Die Snooper 304, die Anforderungen 302 empfangen und verarbeiten, stellen jeweils eine partielle Antwort (partial response, Presp) 306 bereit, die der Antwort mindestens dieses Snooper 304 auf die Anforderung 302 entspricht. Ein Snooper innerhalb einer IMC 124 oder einer Busbrücke 126 ermittelt die bereitzustellende partielle Antwort 306 beispielsweise auf der Grundlage dessen, ob die IMC 124 oder die Busbrücke 126 für die Anforderungsadresse verantwortlich ist, ob die reale Zieladresse der Anforderung mit einer vorherigen Anforderung kollidiert und ob die IMC 124 oder die Busbrücke 126 Ressourcen besitzt (darunter z.B. ein Agent in Ruhe 202 oder 212), die zum Bedienen der Anforderung verfügbar sind. Ein L2-Cache 110 kann seine partielle Antwort 306 beispielsweise auf der Grundlage der Verfügbarkeit einer Snoop-Maschine 511 zum Bearbeiten der Anforderung, der Verfügbarkeit seines L2-Cache-Verzeichnisses 508 (siehe z.B. 5) und des zu der realen Zieladresse im L2-Cache-Verzeichnis 508 gehörenden Kohärenzzustands festlegen.
  • Die partiellen Antworten 306 der Snooper 304 werden logisch entweder stufenweise oder alle gleichzeitig von einer oder mehreren Instanzen der kombinierten Antwortlogik 121c kombiniert, um eine systemweite kombinierte Antwort (combined response, Cresp) 310 auf die Anforderung 302 festzulegen. In einer Ausführungsform, die hier nachfolgend angenommen wird, ist die für ein Erzeugen von Cresp 310 verantwortliche Instanz der kombinierten Antwortlogik 121c in der Verarbeitungseinheit 100 angeordnet, die den Master 300 enthält, der die Anforderung 302 ausgegeben hat. Die kombinierte Antwortlogik 121c stellt Cresp 310 für den Master 300 und die Snooper 304 über die Verbindungsstruktur bereit, um die systemweite Kohärenzantwort (z.B. Erfolg, Fehlschlag, Wiederholung usw.) auf die Anforderung 302 anzugeben. Wenn Cresp 310 einen Erfolg von Anforderung 302, angibt, kann Cresp 310 beispielsweise eine Datenquelle für einen Zielspeicherblock von Anforderung 302 angeben, einen Kohärenzzustand, in dem der angeforderte Speicherblock vom Master 300 (oder anderen Caches) zwischenzuspeichern ist, und ob „Aufräum“-Funktionen erforderlich sind, die den angeforderten Speicherblock in einem oder mehreren Caches ungültig machen.
  • Als Reaktion auf Empfangen von Cresp 310 führen ein oder mehrere Master 300 und Snooper 304 üblicherweise einen oder mehrere zusätzliche Schritte zum Bedienen der Anforderung 302 aus. Zu diesen zusätzlichen Schritten können Liefern von Daten an den Master 300, Ungültigmachen oder anderweitig Aktualisieren des Kohärenzzustands von in einem oder mehreren L2-Caches 110 zwischengespeicherten Daten, Zurückschreiben von Daten in einen Systemspeicher 132 usw. gehören. Wenn dies von der Anforderung 302 angefordert wird, kann ein angeforderter oder ein Zielspeicherblock vor oder nach dem Erzeugen von Cresp 310 durch die kombinierte Antwortlogik 121c zum oder vom Master 300 übertragen werden.
  • In der folgenden Beschreibung werden die partielle Antwort 306 eines Snoopers 304 auf eine Anforderung 302 und die vom Snooper 304 als Reaktion auf die Anforderung 302 ausgeführten Schritte und/oder seine kombinierte Antwort 310 unter Bezugnahme darauf beschrieben, ob es sich bei diesem Snooper bezogen auf die von der Anforderung angegebene Anforderungsadresse (Zieladresse) um einen höchsten Kohärenzpunkt (Highest Point of Coherency, HPC), einen niedrigsten Kohärenzpunkt (Lowest Point of Coherency, LPC) oder keinen von beiden handelt. Ein LPC ist hier als eine Speichereinheit oder E/A-Einheit definiert, die als Datenablage für einen Speicherblock dient. Wenn kein HPC für den Speicherblock vorhanden ist, enthält der LPC das wahre Abbild des Speicherblocks und besitzt die Befugnis, Anforderungen zum Erzeugen einer zusätzlichen zwischengespeicherten Kopie des Speicherblocks stattzugeben oder sie abzulehnen. Für eine typische Anforderung in der Ausführungsform eines Datenverarbeitungssystems von 1 ist der LPC die Speichersteuereinheit 124 für den Systemspeicher 132, der den referenzierten Speicherblock enthält. Ein HPC ist hier als eine eindeutig gekennzeichnete Einheit definiert, die ein wahres Abbild des Speicherblocks (der mit dem entsprechenden Speicherblock am LPC übereinstimmen kann, dies aber nicht muss) zwischenspeichert und die Befugnis besitzt, einer Anforderung zum Ändern des Speicherblocks stattzugeben oder sie abzulehnen. In beschreibender Weise kann der HPC auch eine Kopie des Speicherblocks für einen Anforderer als Reaktion auf eine Funktion bereitstellen, die den Speicherblock nicht ändert. Für eine typische Anforderung in der Ausführungsform eines Datenverarbeitungssystems von 1 ist der HPC, sofern überhaupt vorhanden, somit ein L2-Cache 110. Zum Bezeichnen eines HPC für einen Speicherblock können zwar auch andere Indikatoren verwendet werden, eine bevorzugte Ausführungsform der vorliegenden Erfindung bezeichnet den HPC, sofern überhaupt vorhanden, jedoch für einen Speicherblock durch Verwenden eines (mehrerer) ausgewählter Cache-Kohärenzzustand (-zustände) innerhalb des Cache-Verzeichnisses eines L2-Cache 110.
  • Weiterhin bezugnehmend auf 3 ist der HPC, sofern überhaupt vorhanden, für einen in einer Anforderung 302 referenzierten Speicherblock oder, wenn kein HPC vorhanden ist, der LPC des Speicherblocks vorzugsweise dafür verantwortlich, das Übertragen der Kohärenzeignerschaft eines Speicherblocks, sofern erforderlich, als Reaktion auf eine Anforderung 302 zu schützen. In dem in 3 gezeigten beispielhaften Szenario schützt ein Snooper 304n am HPC (oder, wenn kein HPC vorhanden ist, am LPC) für den durch die Anforderungsadresse von Anforderung 302 spezifizierten Speicherblock das Übertragen der Kohärenzeignerschaft des angeforderten (Ziel-) Speicherblocks zum Master 300 während eines Schutzfensters 312a, das sich von dem Zeitpunkt, an dem der Snooper 304n seine partielle Antwort 306 ermittelt, so weit erstreckt, bis der Snooper 304n Cresp 310 empfängt, und während einer anschließenden Fenstererweiterung 312b, die eine programmierbare Zeit über das Empfangen von Cresp 310 durch den Snooper 304n hinaus erweitert. Während des Schutzfensters 312a und der Fenstererweiterung 312b schützt der Snooper 304n das Übertragen der Kohärenzeignerschaft des Zielspeicherblocks vom Snooper 304n auf den Master 300 durch Bereitstellen partieller Antworten 306 (z. B. partielle Wiederholungsantworten) auf andere Anforderungen, die dieselbe Anforderungsadresse spezifizieren. Solche partiellen Antworten 306 hindern andere Master am Erlangen der Kohärenzeignerschaft des Zielspeicherblocks, bis die Kohärenzeignerschaft erfolgreich vom Snooper 304n auf den Master 300 übertragen wurde. Nach dem Empfangen einer kombinierten Antwort 310 kann der Master 300, sofern erforderlich, gleichfalls ein Schutzfenster 313 einleiten, um sein Erwerben der Kohärenzeignerschaft des Zielspeicherblocks zu schützen. Das Schutzfenster 313 stellt sicher, dass ein beliebiger Master, der anschließend den Zielspeicherblock anfordert, einen neuen, vom Master 300 erstellten Wert des Zielspeicherblocks statt eines veralteten Werts erhält.
  • Bestimmte Snooper 304, wie z.B. die IMC 124, die Busbrücke 126, die E/A-Steuereinheit 128, werden im Allgemeinen einem oder mehreren jeweiligen Bereichen realer Speicheradressen zugewiesen, für die die Snooper letztendlich verantwortlich sind, wenn kein Snooper für ein Zwischenspeichern vorhanden ist. Infolgedessen können diese Snooper 304 gemeinsam als „LPC-Snooper“ bezeichnet werden. Für einen beliebigen gegebenen Bereich realer Speicheradressen ist höchstens ein LPC-Snooper verantwortlich. Der (die) Bereich(e) realer Speicheradressen, für die ein LPC-Snooper 304 verantwortlich ist, können beispielsweise von einem Betriebssystem oder einer Hypervisor-Software festgelegt werden, das bzw. die in geeigneter Weise eine Basisadressregister (BAR)-Einrichtung im LPC-Snooper 304 konfiguriert. Für den Fachmann wird verständlich sein, dass die Antworten von LPC-Snoopern 304 auf Anforderungen 302, die auf der Systemstruktur geschnüffelt werden, erhebliche Unterschiede aufweisen. Wenn die Zuteilungslogik 210 der Busbrücke 126 eine Anforderung 302 zum Verarbeiten eines der BAs 212 annimmt, gibt die Busbrücke 126 weiterhin eine partielle Antwort „Wiederholen“ 306 aus, um den Master 300 zu zwingen, die Anforderung 302 zu einem späteren Zeitpunkt erneut auszugeben. Während sie die erneut ausgegebene Anforderung (die erneut wiederholt werden kann) erwartet, führt die Busbrücke 126 Verarbeitungsvorgänge aus, damit die Anforderung 302 zu dem Punkt fortschreitet, an dem die erneut ausgegebene Anforderung sofort auf der Systemstruktur erfüllt werden kann, beispielsweise durch Ausgeben einer entsprechenden Anforderung an das entfernt angeordnete System 134. Die LPC-Snooper 304, die auf diese Weise arbeiten, werden hier als „fortschreitende“ Snooper bezeichnet und können als solche in wahlfreien Feldern „Typ“ 232 der PTEs 222 für reale Adressen gekennzeichnet werden, die diesen LPC-Snoopern 304 zugewiesen sind.
  • Wenn die Zuteilungslogik 200 der IMC 124 eine Anforderung 300 zum Verarbeiten dagegen von einem der MAs 202 annimmt, gibt die IMC 124 keine partielle Antwort „Wiederholen“ aus, sondern gibt stattdessen eine partielle Antwort 306 aus, die die Anforderung 302 bestätigt. Unter der Annahme, dass kein L2-Cache 110 eine partielle Antwort 306 bereitstellt, die die Verantwortung zum Bedienen der Anforderung 302 angibt, kann der Master 300 der Anforderung 302 infolgedessen erwarten, dass die IMC 124 die Anforderung 302 bedient, ohne dass der Master 300 die Anforderung 302 erneut auszugeben braucht. Die LPC-Snooper 304, die auf diese Weise arbeiten, werden hier als „nichtfortschreitende“ Snooper bezeichnet und können als solche in wahlfreien Feldern „Typ“ 232 der PTEs 222 für reale Adressen gekennzeichnet werden, die diesen LPC-Snoopern 304 zugewiesen sind..
  • Nunmehr bezugnehmend auf 4 wird dort eine beispielhafte Datenverweildauer auf einer Systemstruktur des Datenverarbeitungssystems 101 gemäß einer Ausführungsform dargestellt. In diesem Beispiel werden Daten, die von einem LPC-Snooper 304 an einen Master 300 als Reaktion auf eine Anforderung 302 auszutauschen sind, in einer oder mehreren Datenverweildauern 400 auf der Systemverbindung ausgetauscht, die den Systembus 130 und den lokalen Bus 115 aufweist. Jede Datenverweildauer 400 weist wahlweise zusätzlich zu möglichen herkömmlichen „Gültig“ (valid)- und Datenfeldern 402, 406 ein Feld „Fortschreitend“ (progressing, P) 404 auf, das angibt, ob eine Datenverweildauer 400 von einem fortschreitenden LPC-Snooper oder einem nichtfortschreitenden LPC-Snooper übertragen wurde.
  • Nunmehr bezugnehmend auf 5 wird dort ein detaillierteres Blockschaltbild eines beispielhaften L2-Cache 110 gemäß einer Ausführungsform veranschaulicht. Wie in 5 gezeigt, weist der L2-Cache 110 ein Cache-Array 502 und ein Verzeichnis 508 der Inhalte des Cache-Array 502 auf. Dies ist zwar nicht ausdrücklich veranschaulicht, das Cache-Array 502 wird jedoch vorzugsweise mit nur einem Leseanschluss und nur einem Schreibanschluss umgesetzt, um die Fläche eines Einzelschaltkreises zu verringern, die zum Umsetzen des Cache-Array 502 benötigt wird.
  • Unter der Annahme, dass das Cache-Array 502 und das Verzeichnis 508, wie herkömmlicherweise üblich, satzassoziativ sind, werden Speicherpositionen im Systemspeicher 132 unter Verwendung vorab festgelegter Indexbits innerhalb der (realen) Adressen des Systemspeichers auf bestimmte Kongruenzklassen innerhalb des Cache-Array 502 abgebildet. Die in den Cache-Zeilen des Cache-Array 502 gespeicherten bestimmten Speicherblöcke werden im Cache-Verzeichnis 508 aufgezeichnet, das einen Verzeichniseintrag für jede Cache-Zeile enthält. In 5 wird dies zwar nicht ausdrücklich dargestellt, für den Fachmann wird jedoch verständlich sein, dass jeder Verzeichniseintrag im Cache-Verzeichnis 508 verschiedene Felder aufweist, beispielsweise ein Tag-Feld, das die in der entsprechenden Cache-Zeile des Cache-Array 502 enthaltene reale Adresse des Speicherblocks kennzeichnet, ein Statusfeld, das den Kohärenzzustand der Cache-Zeile angibt, und mindestens ein Feld „am längsten nicht verwendet“ (least recently used, LRU), das eine Ersetzungsreihenfolge für die Cache-Zeile in Bezug auf andere Cache-Zeilen in derselben Kongruenzklasse angibt.
  • Der L2-Cache 110 weist mehrere (z.B. 16 oder 32) Read-Claim (RC)-Maschinen 512a-512n zum unabhängigen und gleichzeitigen Bedienen von Lade (load, LD)- und Speicher (store, ST)-Anforderungen auf, die vom verbundenen Prozessorkern 102 empfangen werden. Zusätzlich weist der L2-Cache 110 mehrere (z.B. 16 oder 32) Snoop-Maschinen 511a-511m auf, um Speicherfernzugriffsanforderungen zu bedienen, die von anderen Prozessorkernen 102 als dem verbundenen Prozessorkern 102 ausgehen. Jede Snoop-Maschine 511 kann unabhängig und gleichzeitig eine Speicherfernzugriffsanforderung bearbeiten, die von einer lokalen Verbindung 514 „geschnüffelt“ wird. Wie verständlich sein wird, kann ein Bedienen von Speicherzugriffsanforderungen durch den L2-Cache 110 das Ersetzen oder Ungültigmachen von Speicherblöcken im Cache-Array 502 erfordern. Dementsprechend weist der L2-Cache 110 CO (castout)-Maschinen 510a-510n auf, die das Entfernen und Zurückschreiben von Speicherblöcken aus dem Cache-Array 502 verwalten.
  • Der L2-Cache 110 weist auch eine RC-Warteschlange (englisch „queue“) 520 und eine CPI (castout push intervention)-Warteschlange 518 auf, die Daten puffern, die in das Cache-Array 502 eingefügt bzw. daraus entfernt werden. Die RC-Warteschlange 520 weist eine Anzahl von Puffereinträgen auf, die einzeln jeweils einer bestimmten der RC-Maschinen 512 entsprechen, sodass jede RC-Maschine 512, die zugeteilt wird, Daten nur aus dem angegebenen Puffereintrag abruft. In ähnlicher Weise weist die CPI-Warteschlange 518 eine Anzahl von Puffereinträgen auf, die einzeln jeweils einer bestimmten der Castout-Maschinen 510 und Snoop-Maschinen 511 entsprechen, sodass jede CO-Maschine 510 und jeder Snooper 511, die bzw. der zugeteilt wird, Daten nur aus dem jeweils angegebenen CPI-Puffereintrag abruft.
  • Jeder RC-Maschine 512 ist auch jeweils einer von mehreren RC-Daten (RCDAT)-Puffern 522 zum Puffern eines Speicherblocks zugewiesen, der aus dem Cache-Array 502 gelesen und/oder von der lokalen Verbindung 514 über einen Neuladebus 523 empfangen wurde. Der jeder RC-Maschine 512 zugewiesene RCDAT-Puffer 522 ist vorzugsweise mit Verbindungen und einer Funktionalität aufgebaut, die den Speicherzugriffsanforderungen entspricht, die von der zugehörigen RC-Maschine 512 bedient werden können. Mindestens einige der RCDAT-Puffer 522 weisen einen zugehörigen Speicherdatenmultiplexer M4 auf, der Datenbytes unter seinen Eingaben zum Puffern im RCDAT-Puffer 522 als Reaktion auf nicht veranschaulichte, von einem Arbiter 505 erzeugte ausgewählte Signale auswählt.
  • Der L2-Cache 110 weist zusätzlich einen Arbiter 505 auf, der zum Steuern von Multiplexern M1-M2 konfiguriert ist, um das Verarbeiten lokaler Speicherzugriffsanforderungen zu ordnen, die vom verbundenen Prozessorkern 102 empfangen werden, sowie Fernanforderungen, die auf der lokalen Verbindung 514 geschnüffelt werden. Speicherzugriffsanforderungen, darunter lokale Lade- und Speicherfunktionen und entfernt ausgeführte Lese- und Schreibfunktionen, werden gemäß der vom Arbiter 505 umgesetzten Arbitrierungsrichtlinie an eine Zuteilungs-Pipeline 506 weitergeleitet, wo jede Lese/Lade- und Speicheranforderung in Bezug auf das Verzeichnis 508 und das Cache-Array 502 über eine gegebene Anzahl von Zyklen verarbeitet wird.
  • Der L2-Cache 110 stellt zusätzlich Unterstützung für unteilbare Aktualisierungen durch den (die) zugehörigen Prozessorkern(e) 102 durch das Umsetzen einer Reservierungslogik 512 bereit, die Reservierungen verfolgt, die von unteilbaren Ladeanforderungen (z. B. Laden und Reservieren (load-and-reserve, LARX)) festgelegt werden, um sicherzustellen, das entsprechende unteilbare Speicheranforderungen (z.B. bedingtes Speichern (store-conditional, STCX)) nur erfolgreich abgeschlossen werden, wenn die reservierten Cache-Zeilen seit dem Festlegen der Reservierungen nicht geändert wurden (d.h. wenn die relevante Reservierung noch gültig ist). In einer typischen Ausführungsform weist eine Reservierungslogik 513 für jeden Thread ein jeweiliges Reservierungsadressregister auf, das die Basisadresse einer Cache-Zeile spezifiziert, für die eine Reservierung festgelegt ist, und ein Reservierungs-Flag, das angibt, ob die Reservierung für die spezifizierte Cache-Zeile noch gültig ist.
  • Im Betrieb werden Prozessorspeicheranforderungen, die einen Transaktionstyp (transaction type, ttype), eine reale Zieladresse und Speicherdaten aufweisen, vom verbundenen Prozessorkern 102 in einer Speicherwarteschlange (store queue, STQ) 504 empfangen. Aus der STQ 504 werden die Speicherdaten an Speicherdatenmultiplexer M4 über einen Datenpfad 524 übertragen, und der Speichertyp und die Zieladresse werden an den Multiplexer M1 übergeben. Der Multiplexer M1 empfängt auch Prozessorladeanforderungen als Eingaben vom Prozessorkern 102 und Verzeichnisschreibanforderungen von den RC-Maschinen 512. Als Reaktion auf nicht veranschaulichte, vom Arbiter 505 erzeugte ausgewählte Signale wählt der Multiplexer M1 eine aus seinen Eingabeanforderungen zum Weiterleiten an den Multiplexer M2 aus, der zusätzlich als Eingabe eine Fernanforderung empfängt, die von der lokalen Verbindung 514 über einen Fernanforderungspfad 526 empfangen wird. Der Arbiter 505 plant lokale und entfernt auszuführende Speicherzugriffsanforderungen zum Verarbeiten und erzeugt auf der Grundlage des Planens eine Abfolge ausgewählter Signale 528. Als Reaktion auf vom Arbiter 505 erzeugte ausgewählte Signale 528 wählt der Multiplexer M2 entweder die vom Multiplexer M1 empfangene lokale Anforderung oder die von der lokalen Verbindung 514 geschnüffelte entfernt auszuführende Anforderung als die nächste zu verarbeitende Speicherzugriffsanforderung aus.
  • Eine vom Arbiter 505 zum Verarbeiten ausgewählte Anforderung wird vom Multiplexer M2 in die Zuteilungs-Pipeline 506 gestellt. Die Zuteilungs-Pipeline 506 wird vorzugsweise als Pipeline mit fester Dauer umgesetzt, bei der jede der mehreren möglichen überlappenden Anforderungen A, B, C usw. über eine vorab festgelegte Anzahl von Taktzyklen verarbeitet wird. Die Zuteilungs-Pipeline 506 kann jede Anforderung beispielsweise über vier Zyklen verarbeiten.
  • Während eines ersten Verarbeitungszyklus innerhalb der Zuteilungs-Pipeline 506 wird ein Verzeichnislesevorgang von 1 Zyklus unter Verwendung der Anforderungsadresse ausgeführt, um zu ermitteln, ob die Anforderungsadresse im Verzeichnis 508 einen Treffer oder Fehler ergibt, und, wenn die Speicheradresse einen Treffer ergibt, um den Kohärenzzustand des Speicherblocks im Verzeichnis 508 zu ermitteln. Die Verzeichnisdaten, zu denen eine Angabe bezüglich Treffer/Fehler und der Kohärenzzustand des Speicherblocks gehören, werden vom Verzeichnis 508 an die Zuteilungs-Pipeline 506 in einem anschließenden Zyklus, beispielsweise dem vierten Zyklus, zurückgegeben. Wie verständlich sein wird, werden in einem L2-Cache 110 im Allgemeinen keine Schritte als Reaktion auf einen Fehler bei einer entfernt auszuführenden Speicherzugriffsanforderung unternommen; solche entfernt auszuführenden Speicheranforderungen werden dementsprechend aus der Zuteilungs-Pipeline 506 verworfen. Für den Fall eines Treffers oder Fehlers bei einer lokalen Speicherzugriffsanforderung oder eines Treffers bei einer entfernt auszuführenden Speicherzugriffsanforderung wird der L2-Cache 110 jedoch die Speicherzugriffsanforderung bedienen, was für Anforderungen, die nicht vollständig innerhalb der Verarbeitungseinheit 100 bedient werden können, eine Datenübertragung auf der lokalen Verbindung 514 über eine Struktursteuereinheit 516 nach sich ziehen kann.
  • Zu einem vorab festgelegten Zeitpunkt während des Verarbeitens der Speicherzugriffsanforderung in der Zuteilungs-Pipeline 506 überträgt der Arbiter 505 die Anforderungsadresse an das Cache-Array 502 über einen Adress- und Steuerpfad 530, um einen Cache-Lesevorgang des von der Anforderungsadresse spezifizierten Speicherblocks einzuleiten. In der beispielhaften Ausführungsform dauert ein Cache-Lesevorgang 2 Zyklen. Der Speicherblock-Lesevorgang aus dem Cache-Array 502 wird über einen Datenpfad 542 an eine Fehlerkorrekturcode-Logik (error correcting code, ECC) 544 übertragen, die den Speicherblock auf Fehler prüft und, sofern möglich, etwaige erkannte Fehler korrigiert. Für Prozessorladeanforderungen wird der Speicherblock auch an einen Ladedaten-Multiplexer M3 über einen Datenpfad 540 übertragen, um ihn an den verbundenen Prozessorkern 102 weiterzuleiten.
  • Im letzten Zyklus des Verarbeitens einer Speicherzugriffsanforderung in der Zuteilungs-Pipeline 506 nimmt die Zuteilungs-Pipeline 506 eine Zuteilungsfestlegung vor. Die Zuteilungs-Pipeline 506 kann beispielsweise die Zuteilungsfestlegung auf der Grundlage einer Anzahl von Kriterien vornehmen, darunter (1) das Vorhandensein einer Adresskollision zwischen der Anforderungsadresse und einer vorherigen Anforderungsadresse, die aktuell von einer Castout-Maschine 510, Snoop-Maschine 511 oder RC-Maschine 512 verarbeitet wird, (2) die Verzeichnisdaten und (3) die Verfügbarkeit einer RC-Maschine 512 (für eine lokale Anforderung des verbundenen Prozessorkerns 102) oder Snoop-Maschine 511 (für eine geschnüffelte Anforderung eines entfernt angeordneten Prozessorkerns), um die Speicherzugriffsanforderung zu verarbeiten. Wenn die Zuteilungs-Pipeline 506 eine Zuteilungsfestlegung vornimmt, dass die Speicherzugriffsanforderung zuzuteilen ist, wird die Speicherzugriffsanforderung von der Zuteilungs-Pipeline 506, wie jeweils geeignet, an eine RC-Maschine 512 oder eine Snoop-Maschine 511 zugeteilt. Wenn die Zuteilung der Speicherzugriffsanforderung fehlschlägt, wird der Fehlaschlag dem Anforderer (z.B. dem lokalen oder entfernt angeordneten Prozessorkern 102) durch eine Wiederholungsantwort gemeldet. Sofern erforderlich, kann der Anforderer anschließend die fehlgeschlagene Speicherzugriffsanforderung wiederholen.
  • Während eine RC-Maschine 512 eine lokale Speicherzugriffsanforderung verarbeitet, weist die RC-Maschine 512 einen Zustand „ausgelastet“ auf und ist nicht zum Bedienen einer anderen Anforderung verfügbar. Während eine RC-Maschine 512 einen Zustand „ausgelastet“ aufweist, kann die RC-Maschine 512 einen Verzeichnisschreibvorgang ausführen, um den relevanten Eintrag des Verzeichnisses 508, sofern erforderlich, zu aktualisieren. Die RC-Maschine 512 kann zusätzlich einen Cache-Schreibvorgang ausführen, um die relevante Cache-Zeile des Cache-Array 502 zu aktualisieren. Ein Verzeichnisschreibvorgang und ein Cache-Schreibvorgang können vom Arbiter 505 während eines beliebigen Intervalls geplant werden, in dem die Zuteilungs-Pipeline 506 nicht bereits andere Anforderungen gemäß dem festgelegten Planen von Verzeichnisschreibvorgängen und Cache-Lesevorgängen verarbeitet. Wenn alle Funktionen für die gegebene Anforderung abgeschlossen wurden, kehrt die RC-Maschine 512 zu einem nicht ausgelasteten Zustand zurück. Es wird verständlich sein, dass das Planen von Funktionen ohne festen Zeitplan, wie beispielsweise Verzeichnisschreibvorgänge und Cache-Schreibvorgänge, Auswirkungen auf das Planen anderer Funktionen haben kann, darunter diejenigen, die gemäß einem festen Zeitplan verarbeitet werden.
  • Das von den CO-Maschinen 510, SN-Maschinen 511 und RC-Maschinen 512 ausgeführte Verarbeiten kann erfordern, dass eine Anforderung auf der Systemstruktur ausgegeben wird. Beispielsweise können die CO-Maschinen 510 CO-Anforderungen ausgeben, die RC-Maschinen 512 können unter anderem Anforderungen des Lesetyps und des Speichertyps ausgeben, und die SN-Maschinen 511 können Push-Anforderungen ausgeben. Anforderungen der CO-Maschinen 510, SN-Maschinen 511 und RC-Maschinen 512 werden zum Darstellen auf der Systemstruktur von einem Arbiter 557 geordnet.
  • In einigen Ausführungsformen kann der L2-Cache 110 einen wahlfreien L2-Prädiktor 525 aufweisen. Wie weiter unten unter Bezugnahme auf 11 beschrieben, kann der L2-Prädiktor 525 zum Festlegen des Betriebsmodus einer RC-Maschine 512 genutzt werden, die im Datenaustausch mit einem LPC-Snooper steht. In diesem Beispiel weist der L2-Prädiktor 525 einen Zähler 527 und ein Flag für „fortschreitend“ (progressing, P) 529 auf, wie weiter unten erörtert. In anderen alternativen Ausführungsformen kann der L2-Cache 110 eine Basisadressregister (BAR)-Einrichtung 559 aufweisen, die einen oder mehrere reale Adressbereiche (einem) fortschreitenden LPC-Snooper(n) (und somit einen fortschreitenden Betriebsmodus der RC-Maschinen 512) und/oder einen oder mehrere reale Adressbereiche (einem) nichtfortschreitenden LPC-Snooper(n) (und somit einen nichtfortschreitenden Betriebsmodus der RC-Maschinen 512) zuweist.
  • Nunmehr bezugnehmend auf 6 wird dort ein Übersichts-Logikablaufplan von einem beispielhaften Prozess dargestellt, durch den die Zuteilungslogik 200 einer integrierten Speichersteuereinheit (integrated memory controller, IMC) 124 (oder ein beliebiger anderer nichtfortschreitender Kohärenzagent) eine Anforderung verarbeitet, die auf der Systemstruktur eines Datenverarbeitungssystems 101 gemäß einer Ausführungsform empfangen wird. Der Prozess von 6 beginnt in Block 600 und fährt dann mit Block 602 fort, der die Zuteilungslogik 200 der IMC 124 veranschaulicht, die auf der Systemverbindung auf Empfangen einer Anforderung überwacht, die eine reale Zieladresse spezifiziert, für die die IMC 124 verantwortlich ist. Die Zuteilungslogik 200 der IMC 124 kann eine Verantwortung der IMC 124 für die reale Zieladresse der geschnüffelten Anforderung unter Bezugnahme auf eine nicht veranschaulichte BAR-Einrichtung ermitteln. Als Reaktion darauf, dass die Zuteilungslogik 200 der IMC 124 auf der Systemverbindung ein Empfangen einer Anforderung erkennt, die eine reale Zieladresse spezifiziert, für die die IMC 124 verantwortlich ist, ermittelt die Zuteilungslogik 200 der IMC 124 in Block 604, ob die in Block 602 erkannte Anforderung mit der realen Zieladresse einer zuvor empfangenen Anforderung, die aktuell von einem der MAs 202 verarbeitet wird, kollidiert (d.h. eine übereinstimmende reale Zieladresse spezifiziert). Wenn dem so ist, stellt die Zuteilungslogik 200 eine partielle Antwort „Wiederholen“ bereit, wie in Block 608 dargestellt. Unter der Annahme, dass kein L2-Cache 110 eine partielle Antwort bereitstellt, die seine Verantwortung zum Bedienen der Anfrage angibt, veranlasst die in Block 608 bereitgestellte partielle Antwort „Wiederholen“, dass eine Cresp „Wiederholen“ erzeugt wird, die ihrerseits den Master der Anforderung veranlasst, die Anforderung anschließend erneut auszugeben. Im Anschluss an Block 608 kehrt der Prozess von 6 zu Block 602 zurück.
  • Beim Zurückkehren zu Block 604 ermittelt die Zuteilungslogik 200, wenn die Zuteilungslogik 200 eine negative Feststellung vornimmt, zusätzlich in Block 606, ob ein MA 202 aktuell zum Verarbeiten der in Block 602 erkannten Anforderung verfügbar ist. Wenn nicht, geht der Prozess zu Block 608 über, der beschrieben wurde. Wenn die Zuteilungslogik 200 jedoch in Block 606 feststellt, dass ein MA 202 aktuell zum Verarbeiten der geschnüffelten Anforderung verfügbar ist, teilt die Zuteilungslogik 200 die Anforderung einem verfügbaren der MAs 202 zum Verarbeiten zu, wie weiter unten unter Bezugnahme auf 7 (Block 610) beschrieben. Die Zuteilungslogik 200 gibt zusätzlich eine partielle Antwort „Bestätigen“ (acknowledge, Ack) auf der Systemverbindung aus, die angibt, dass die Anforderung empfangen und von der IMC 124 zum Verarbeiten angenommen wurde (Block 612). Danach kehrt der Prozess zu Block 602 zurück.
  • Nunmehr bezugnehmend auf 7 wird dort ein Übersichts-Logikablaufplan von einem beispielhaften Prozess dargestellt, durch den ein MA 202 einer IMC 124 eine Anforderung verarbeitet, die auf der Systemstruktur des Datenverarbeitungssystems 101 gemäß einer Ausführungsform empfangen wird. Instanzen des veranschaulichten Prozesses können gleichzeitig von MAs 202a-202m ausgeführt werden.
  • Der Prozess von 7 beginnt in Block 700 mit und fährt dann mit Block 702 fort, der einen MA 202 veranschaulicht, der in einem Ruhezustand bleibt, bis er eine von der zugehörigen Zuteilungslogik 200 zugeteilte Anforderung empfängt, beispielsweise in Block 610 von 6. Als Reaktion auf Empfangen einer Anforderung von der Zuteilungslogik 200 geht der MA 202 von einem Ruhezustand in einen aktiven Zustand über und überwacht auf Empfangen der zu der Anforderung gehörenden Cresp (Block 704). Als Reaktion auf Empfangen der zu der Anforderung gehörenden Cresp ermittelt der MA 202 in Block 706, ob die Cresp angibt, dass der MA 202 die Anforderung verarbeiten soll. Wenn nicht, geht der Prozess von 7 zu Block 712 über, der weiter unten beschrieben wird. Wenn der MA 202 jedoch in Block 706 feststellt, dass die Cresp angibt, dass der MA 202 die Anforderung verarbeiten soll, verarbeitet der MA 202 die Anforderung beispielsweise durch Zugreifen auf eine Kopie des durch die reale Zieladresse der Anforderung gekennzeichneten Speicherblocks oder durch Aktualisieren des durch die reale Zieladresse gekennzeichneten Speicherblocks mit vom Master bereitgestellten Daten (Block 708). Wie in Block 710 angegeben, gibt der MA 202, sofern erforderlich, als Reaktion auf die Anforderung Daten an den Master zurück. Eine beliebige vom MA 202 auf der Systemstruktur ausgegebene Datenverweildauer 400, die auf die Anforderung reagierende Daten transportiert, weist vorzugsweise ein Feld P 404 auf, das zurückgesetzt wird, um anzugeben, dass es sich bei dem die Anforderung bedienenden LPC-Snooper um einen nichtfortschreitenden Snooper handelt. Danach wird der MA 202 freigegeben, um in einen Ruhezustand zurückzukehren (Block 712), und der Prozess von 7 endet in Block 714.
  • Nunmehr bezugnehmend auf 8 wird dort ein Übersichts-Logikablaufplan von einem beispielhaften Prozess dargestellt, durch den die Zuteilungslogik 210 einer Busbrücke 126 (oder ein beliebiger anderer fortschreitender LPC) eine Anforderung verarbeitet, die auf der Systemstruktur des Datenverarbeitungssystems 101 gemäß einer Ausführungsform empfangen wird.
  • Der Prozess von 8 beginnt in Block 800 und fährt dann mit Block 802 fort, der die Zuteilungslogik 210 der IMC 124 veranschaulicht, die auf der Systemverbindung auf Empfangen einer Anforderung überwacht, die eine reale Zieladresse spezifiziert, für die die Busbrücke 126 verantwortlich ist. Die Zuteilungslogik 210 der Busbrücke 126 kann eine Verantwortung der Busbrücke 126 für die reale Zieladresse der geschnüffelten Anforderung unter Bezugnahme auf eine nicht veranschaulichte BAR-Einrichtung ermitteln. Als Reaktion darauf, dass die Zuteilungslogik 210 auf der Systemverbindung ein Empfangen einer Anforderung erkennt, die eine reale Zieladresse spezifiziert, für die die Busbrücke 126 verantwortlich ist, ermittelt die Zuteilungslogik 210 in Block 804, ob die in Block 602 erkannte Anforderung mit der realen Zieladresse einer zuvor empfangenen Anforderung, die aktuell von einem der BAs 212 verarbeitet wird, kollidiert (d.h. eine übereinstimmende reale Zieladresse spezifiziert). Wenn dem so ist, fährt der Prozess mit Block 812 fort, der weiter unten beschrieben wird. Wenn die Zuteilungslogik 210 in Block 804 jedoch eine negative Feststellung vornimmt, ermittelt die Zuteilungslogik 210 in Block 806 zusätzlich, ob ein BA 212 aktuell zum Verarbeiten der in Block 802 erkannten Anforderung verfügbar ist. Wenn nicht, geht der Prozess zu Block 808 über, der weiter unten beschrieben wird. Wenn die Zuteilungslogik 210 jedoch in Block 806 feststellt, dass ein BA 212 aktuell zum Verarbeiten der geschnüffelten Anforderung verfügbar ist, teilt die Zuteilungslogik 210 die Anforderung einem verfügbaren der BAs 212 zum Verarbeiten zu, wie weiter unten unter Bezugnahme auf 9 (Block 810) beschrieben. Als Reaktion auf Empfangen der Anforderung kann der BA 212, dem die Anforderung zugeteilt wurde, ein wenig vorläufiges Verarbeiten ausführen, beispielsweise Ausgeben einer Anforderung an das entfernt angeordnete System 134, aber er schließt das Verarbeiten nicht ab. Dieses vorläufige Verarbeiten ermöglicht dem BA 212, später sofort die Anforderung vollständig abzuschließen, wenn sie bei einem anschließenden Versuch erneut vorgelegt wird. Danach geht der Prozess zu Block 808 über, der die Zuteilungslogik 210 beim Bereitstellen einer partiellen Antwort „Wiederholen“ und einer partiellen Antwort LPC_P darstellt. Die partielle Antwort LPC_P (die durch Zusichern eines zusätzlichen Bit in der gleichen partiellen Antwort, die „Wiederholen“ angibt, bereitgestellt werden kann) gibt an, dass es sich bei dem LPC-Snooper, der die partielle Antwort bereitstellt, um einen fortschreitenden LPC-Snooper handelt. Die in Block 808 bereitgestellte partielle Antwort „Wiederholen“ veranlasst, dass eine Cresp „Wiederholen“ erzeugt wird, die ihrerseits den Master der Anforderung veranlasst, die Anforderung anschließend erneut auszugeben. Aufgrund des Zusicherns der partiellen Antwort LPC_P gibt die erzeugte Cresp „Wiederholen“ auch an, dass es sich bei dem LPC um einen fortschreitenden Agenten gehandelt hatte. Das Fehlen der zusätzlichen Angabe in der Cresp „Wiederholen“ (in 6 und 7) bedeutet, dass es sich bei dem LPC um einen nichtfortschreitenden Agenten handelt. Es sollte beachtet werden, dass die Zuteilungslogik 210 die partiellen Antworten „Wiederholen“ und LPC_P in Block 808 unabhängig davon bereitstellt, ob die in Block 802 erkannte Anforderung einem BA 212 zum Bearbeiten zugeteilt wird.
  • Nunmehr bezugnehmend auf Block 812 ermittelt die Zuteilungslogik 210, ob der Master der in Block 802 erkannten Anforderung derselbe Master ist, der die zuvor empfangene Anforderung ausgegeben hatte, für die eine Kollision erkannt wurde. Diese Feststellung kann beispielsweise unter Bezugnahme auf die in den Anforderungen enthaltenen jeweiligen Master-Tags getroffen werden. Als Reaktion auf eine negative Feststellung in Block 812 geht der Prozess zu Block 808 über, der beschrieben wurde. Wenn die Zuteilungslogik 212 jedoch in Block 812 eine Feststellung trifft, dass die in Block 802 erkannte Anforderung vom selben Master wie die vorherige noch anhängige Anforderung stammt, für die eine Kollision erkannt wurde, ermittelt die Zuteilungslogik 210 in Block 814, ob der BA 212, dem die vorherige Anforderung zugeteilt wurde, nun zum Verarbeiten der erneut ausgegebenen Anforderung bereit ist. Wenn nicht, kehrt der Prozess zu Block 808 zurück, der beschrieben wurde. Wenn die Zuteilungslogik 210 jedoch in Block 814 feststellt, dass der BA 212 zum Verarbeiten der Anforderung bereit ist, meldet die Zuteilungslogik 210 dem BA 212, das Verarbeiten der Anforderung auszuführen, wie in Block 816 gezeigt. Die Zuteilungslogik 210 stellt zusätzlich eine partielle Bestätigungsantwort „Ack“ bereit, die angibt, dass die Anforderung verarbeitet werden kann, und eine partielle Antwort LPC_P, die angibt, dass es sich bei dem LPC-Snooper um einen fortschreitenden Snooper handelt (Block 818). Auf der Grundlage dieser partiellen Antworten wird für die Anforderung eine andere Cresp als „Wiederholen“ erzeugt, was bedeutet, dass der Master ein erneutes Ausgeben der Anforderung beendet. Die Cresp gibt für den Master zusätzlich an, dass es sich bei dem für das Bedienen der Anforderung verantwortlichen Kohärenzagenten um einen fortschreitenden Agenten gehandelt hatte. Im Anschluss an Block 818 kehrt der Prozess von 8 zu Block 802 zurück, der beschrieben wurde.
  • Nunmehr bezugnehmend auf 9 wird dort ein Übersichts-Logikablaufplan von einem beispielhaften Prozess dargestellt, durch den ein BA 212 einer Busbrücke 126 (oder ein beliebiger anderer fortschreitender Agent) eine Anforderung verarbeitet, die auf der Systemstruktur des Datenverarbeitungssystems 101 gemäß einer Ausführungsform empfangen wird. Instanzen des veranschaulichten Prozesses können gleichzeitig von den BAs 212a-212k ausgeführt werden.
  • Der Prozess von 9 beginnt in Block 900 mit und fährt dann mit Block 902 fort, der einen BA 212 veranschaulicht, der in einem ausgelasteten Zustand bleibt und auf ein Signal von der zugehörigen Zuteilungslogik 210 überwacht, beispielsweise in Block 810 von 8, dass er mit dem Verarbeiten der Anforderung beginnen soll, beispielsweise durch Weiterleiten einer entsprechenden Anforderung an das entfernt angeordnete System 134 oder das Datenverarbeitungssystem 101, und das Verarbeiten bis zu einem Punkt fortsetzen soll, an dem die Anforderung vom BA 212 bei einem anschließenden erneuten Vorlegen der Anforderung unmittelbar erfüllt werden kann, wie in Block 910 gezeigt (weiter unten erörtert). Als Reaktion auf Empfangen eines Signals zum Beginnen mit dem Verarbeiten der Anforderung der Zuteilungslogik 210 überwacht der BA 212 auf der Systemstruktur des Datenverarbeitungssystems 101 auf Empfangen der Cresp, die zu der anfangs angenommenen Anforderung gehört (Block 904). Als Reaktion auf Empfangen der zu der anfangs angenommenen Anforderung gehörenden Cresp ermittelt der BA 212 in Block 906, ob die Cresp angibt, dass der BA 212 die Anforderung verarbeiten soll. Wenn nicht, geht der Prozess von 9 zu Block 918 über, der weiter unten beschrieben wird. Wenn der BA 212 jedoch in Block 906 feststellt, dass die Cresp angibt, dass der BA 212 die Anforderung verarbeiten soll, verarbeitet der BA 212 die Anforderung, bis er in der Lage ist, die Anforderung auf der Systemstruktur des Datenverarbeitungssystems 101 unmittelbar vollständig auszuführen, beispielsweise durch Zugreifen auf eine Kopie des durch die reale Zieladresse der Anforderung gekennzeichneten Speicherblocks oder durch Vorbereiten auf ein Ausgeben einer Aktualisierung an den durch die reale Zieladresse gekennzeichneten Speicherblock mit von dem Master bereitgestellten Daten (Block 908).
  • Im Anschluss an Block 908 ermittelt der BA 212 in Block 910, ob eine vom selben Master ausgegebene übereinstimmende Anforderung über die Systemstruktur empfangen wurde, wie in Block 816 von 8 gemeldet. Wenn dem so ist, geht der Prozess zu Block 914 über, der weiter unten beschrieben wird. Wenn der BA 212 jedoch keine übereinstimmende Anforderung in Block 910 erkennt, ermittelt der BA 212 in Block 912, ob das Zeitlimit der an den BA 212 zugeteilten Anforderung überschritten wurde (d.h., dass sie vom Master nicht innerhalb eines gegebenen Zeitraums erneut vorgelegt wurde). Wenn nicht, kehrt der Prozess zu Block 910 zurück. Wenn der BA 212 jedoch in Block 912 feststellt, dass das Zeitlimit der Anforderung überschritten wurde, geht der Prozess zu Block 918 über, der weiter unten beschrieben wird.
  • Nunmehr bezugnehmend auf Block 914 gibt der BA 212 als Reaktion auf Erkennen einer vom selben Master ausgegebenen übereinstimmenden Anforderung, die nun unmittelbar erfüllt werden kann, von der Anforderung benötigte Daten, sofern vorhanden, an den Master zurück, wie in Block 914 gezeigt. Jede vom BA 212 auf der Systemstruktur ausgegebene Datenverweildauer 400, die auf die Anforderung reagierende Daten transportiert, weist vorzugsweise ein Feld P 404 auf, das gesetzt wird, um anzugeben, dass es sich bei dem die Anforderung bedienenden LPC-Snooper um einen fortschreitenden Snooper handelt. Der BA 212 führt zusätzlich das Verarbeiten an der Anforderung gemäß dem für die Systemstruktur umgesetzten Busprotokoll (Block 916) vollständig aus und wird dann freigegeben, um in einen Ruhezustand zurückzukehren (Block 918). Der Prozess von 9 dann in Block 920.
  • Nunmehr bezugnehmend auf 10 wird dort ein Übersichts-Logikablaufplan von einem beispielhaften Prozess dargestellt, durch den ein Master Anforderungen auf der Systemstruktur eines Datenverarbeitungssystems 101 gemäß einer Ausführungsform ausgibt. Instanzen des veranschaulichten Prozesses können gleichzeitig von mehreren über das Datenverarbeitungssystem 101 verteilten Mastern 300 ausgeführt werden. Zum Erleichtern des Verständnisses wird 10 in Bezug auf ein beispielhaftes Betriebsszenario beschrieben, bei dem es sich bei dem Master 300 um eine RC-Maschine 512 handelt.
  • Der Prozess von 10 beginnt in Block 1000 beispielsweise als Reaktion auf Zuteilen einer RC-Maschine 512, um eine Speicherzugriffsanforderung des zugehörigen Prozessorkerns 102 zu bedienen. Der Prozess kann dann mit Block 1002 fortfahren, der veranschaulicht, dass die RC-Maschine 512 ihren Betriebsmodus einstellt, um ihr Verhalten entweder für einen fortschreitenden LPC-Snooper oder einen nichtfortschreitenden LPC-Snooper zu optimieren. In einer ersten Ausführungsform, in der PTEs 222 wahlweise Felder „Typ“ 232 aufweisen, zieht die RC-Maschine 512 den zu der realen Zieladresse der Speicherzugriffsanforderung gehörenden PTE 222 zu Rate und stellt ihren Betriebsmodus so ein, dass ihr Verhalten auf der Grundlage des Felds „Typ“ 232 des relevanten PTE entweder für einen fortschreitenden oder nichtfortschreitenden LPC-Snooper optimiert wird. In einer alternativen zweiten Ausführungsform, in der der L2-Cache 110 die BAR-Einrichtung 559 aufweist, zieht die RC-Maschine 512 die BAR-Einrichtung 559 zu Rate und stellt ihren Betriebsmodus so ein, dass ihr Verhalten auf der Grundlage dessen, ob die BAR-Einrichtung 559 die reale Zieladresse der Anforderung mit einem fortschreitenden oder nichtfortschreitenden LPC in Verbindung bringt, entweder für einen fortschreitenden oder einen nichtfortschreitenden LPC-Snooper optimiert wird. In einer alternativen dritten Ausführungsform kann die RC-Maschine 512 ihren Betriebsmodus in Block 1002 standardmäßig auf einen Betriebsmodus mit nichtfortschreitendem LPC einstellen und aktualisiert den Betriebsmodus dann erst in einem zweiten Durchgang durch Block 1002 auf der Grundlage eines Werts, der von der Cresp des ersten Ausgebens der Speicherzugriffsanforderung auf der Systemstruktur angegeben wird. Wie verständlich sein wird, kann die Cresp-Logik 121c den anzugebenden geeigneten Modus auf der Grundlage des Vorhandenseins der partiellen Antwort LPC_P in der vom LPC-Snooper bereitgestellten Presp (wie weiter oben unter Bezugnahme auf die Blöcke 808 und 816 von 8 beschrieben) und/oder des Nichtvorhandenseins der partiellen Antworte LPC_P in der vom LPC-Snooper bereitgestellten Presp (wie weiter oben unter Bezugnahme auf die Blöcke 608 und 612 von 6 beschrieben) ermitteln. In einer alternativen vierten Ausführungsform stellt die RC-Maschine 512 ihren Betriebsmodus unter Bezugnahme auf den vom Flag P 529 des wahlfreien L2-Prädiktors 525 angegebenen Betriebsmodus ein. Ein beispielhafter Prozess, durch den der L2-Prädiktor 525 das Flag P 529 einstellt, wird weiter unten ausführlich unter Bezugnahme auf 11 beschrieben.
  • Im Anschluss an Block 1102 geht der Prozess von 10 zu Block 1004 über, der die RC-Maschine 512 veranschaulicht, die beispielsweise auf der Grundlage der Ergebnisse der im Verzeichnis 508 durchgeführten Suche und des Typs der Speicherzugriffsanforderung ermittelt, ob die Speicherzugriffsanforderung von dem die RC-Maschine 512 enthaltenden L2-Cache 110 bedient werden kann, ohne eine Anforderung auf der Systemstruktur auszugeben. Wenn nicht, geht der Prozess zu Block 1006 über, der weiter unten beschrieben wird. Wenn die RC-Maschine 512 in Block 1004 eine bestätigende Feststellung trifft, fährt der Prozess mit Block 1012 fort, der die RC-Maschine 512 beim Bedienen der Anforderung unter Verwendung eines anderen, möglicherweise herkömmlichen Verarbeitens veranschaulicht. Der Prozess geht dann zu Block 1032 über, der weiter unten beschrieben wird.
  • Block 1006 veranschaulicht die RC-Maschine 512 beim Ausgeben einer Speicherzugriffsanforderung auf der Systemstruktur des Datenverarbeitungssystems 101. Die RC-Maschine 512 überwacht dann auf Empfangen der Cresp der Speicherzugriffsanforderung über die Systemstruktur (Block 1008). In Block 1010 ermittelt die RC-Maschine 512, ob die Cresp der Speicherzugriffsanforderung angibt, dass die Speicherzugriffsanforderung von einem anderen L2-Cache 110 des Datenverarbeitungssystems 101 erfüllt werden kann. Wenn dem so ist, geht der Prozess zu Block 1012 über, der beschrieben wurde. Wenn die RC-Maschine 512 in Block 1010 jedoch eine negative Feststellung trifft, fährt der Prozess mit Block 1020 fort. Block 1020 veranschaulicht die RC-Maschine 512 beim Ermitteln, ob es sich bei der Cresp der Speicherzugriffsanforderung um eine Cresp „Wiederholen“ handelt. Wenn dem so ist, geht der Prozess zu Block 1024 über, der weiter unten beschrieben wird. Wenn nicht, führt die RC-Maschine 512 das Verarbeiten der Speicherzugriffsanforderung vollständig aus, beispielsweise durch Bereitstellen angeforderter Daten für Prozessorkern 102 usw. (Block 1022). Der Prozess fährt dann mit Block 1032 fort, der weiter unten beschrieben wird.
  • In Block 1024 ermittelt die RC-Maschine 512, ob die Speicherzugriffsanforderung abgebrochen werden kann. In einer Ausführungsform stellt die RC-Maschine 512 in Block 1024 beispielsweise fest, dass die auf der Systemstruktur ausgegebene Speicherzugriffsanforderung abgebrochen werden kann, wenn es sich bei der vom zugehörigen Prozessorkern 102 empfangenen Anforderung um eine Vorableseanforderung handelt und wenn sie anderweitig feststellt, dass die auf der Systemstruktur ausgegebene Speicherzugriffsanforderung nicht abgebrochen werden kann. Als Reaktion auf ein Feststellen in Block 1024, dass die Speicherzugriffsanforderung abgebrochen werden kann, geht der Prozess zu Block 1030 über, der weiter unten beschrieben wird. Als Reaktion auf ein Feststellen in Block 1024, dass die auf der Systemstruktur ausgegebene Speicherzugriffsanforderung nicht abgebrochen werden kann, geht der Prozess zu Block 1026 über, der die RC-Maschine 512 beim Abwarten eines Verzögerungsintervalls mit einer Dauer veranschaulicht, die auf dem anfangs in Block 1002 eingestellten Betriebsmodus beruht. In einer bevorzugten Ausführungsform ist die jeweilige Dauer für den fortschreitenden und den nichtfortschreitenden Betriebsmodus unterschiedlich. Die Dauer des Verzögerungsintervalls für den nichtfortschreitenden Modus kann beispielsweise auf eine Dauer eingestellt werden, nach der erwartet würde, dass ein MA 202 verfügbar wird. Die Dauer des Verzögerungsintervalls für den fortschreitenden Modus kann beispielsweise so eingestellt werden, dass sie größer ist als die durchschnittliche Latenz von an das entfernt angeordnetes System 134 ausgegebenen Anforderungen. Es sollte verständlich sein, dass die Dauer des Verzögerungsintervalls in verschiedenen unterschiedlichen Umsetzungen entweder für den fortschreitenden oder den nichtfortschreitenden Modus länger als diejenige des anderen Betriebsmodus sein kann. Der Prozess kehrt dann zu Block 1002 zurück, der in einer bevorzugten Umsetzung den Betriebsmodus in der dritten Ausführungsform nur möglicherweise aktualisiert; diese nutzt die Cresp des ersten Ausgebens der Speicherzugriffsanforderung, um den bevorzugten Betriebsmodus der RC-Maschine 512 zu bestimmen.
  • Nunmehr bezugnehmend auf Block 1030 ermittelt die RC-Maschine 512, ob die Speicherzugriffsanforderung, die abgebrochen werden kann, eine Cresp „Wiederholen“ einem Schwellenwert entsprechende Male empfangen hat, wobei der Schwellenwert von dem in Block 1002 festgelegten Betriebsmodus abhängt. In einer bevorzugten Ausführungsform ist der Schwellenwert für den fortschreitenden Betriebsmodus höher und für den nichtfortschreitenden Modus niedriger. Als Reaktion auf ein Feststellen in Block 1030, dass eine Speicherzugriffsanforderung eine Cresp „Wiederholen“ nicht die einem relevanten Schwellenwert entsprechenden Male empfangen hat, geht der Prozess zu Block 1026 über, der beschrieben wurde. Wenn die RC-Maschine 512 in Block 1030 feststellt, dass die Speicherzugriffsanforderung eine Cresp „Wiederholen“ die einem Schwellenwert für ihren Betriebsmodus entsprechenden Male empfangen hat, bricht die RC-Maschine 512 andernfalls die Speicherzugriffsanforderung ab. Dementsprechend wird die RC-Maschine 512 freigegeben, um in einen Ruhezustand zurückzukehren (Block 1032), und der Prozess von 10 endet in Block 1034.
  • Nunmehr bezugnehmend auf 11 wird dort ein Übersichts-Logikablaufplan von einem beispielhaften Prozess dargestellt, durch den ein zu einem Master gehörender Prädiktor einen Betriebsmodus des Maters gemäß einer Ausführungsform festlegt. Der veranschaulichte Prozess kann beispielsweise von einem L2-Prädiktor 525 zum Einstellen des Betriebsmodus für die RC-Maschinen 512 eines L2-Cache 110 in Block 1002 von 10 gemäß der weiter oben erörterten vierten Ausführungsform genutzt werden. In der nachfolgend beschriebenen beispielhaften Ausführungsform weist der L2-Prädiktor 525 einen Sättigungszähler 527 auf, der darauf beschränkt ist, einen nichtnegativen Wert aufzuweisen, und ein Flag für „fortschreitend“ (progressing, P) 529, das gesetzt wird, um einen fortschreitenden Betriebsmodus anzugeben, und das andernfalls zurückgesetzt wird, um einen nichtfortschreitenden Betriebsmodus anzugeben.
  • Der Prozess von 11 beginnt in Block 1100 und fährt dann mit Block 1102 fort, der den L2-Prädiktor 525 beim Initialisieren des Zählers 527, beispielsweise auf null, und Setzen des Flag P 529 zum Angeben eines fortschreitenden Betriebsmodus veranschaulicht. In Block 1104 überwacht der L2-Prädiktor 525 auf Empfangen einer Datenverweildauer 400 durch den L2-Cache 110. Als Reaktion auf Empfangen einer Datenverweildauer ermittelt der L2-Prädiktor 525 unter Bezugnahme auf das Feld „fortschreitend“ 404 der Datenverweildauer 400, ob die Datenverweildauer 400 von einem fortschreitenden LPC-Snooper (Block 1106) empfangen wurde. Wenn dem so ist, setzt der L2-Prädiktor 525 den Zählwert des Zählers 527 zurück und setzt das Flag P 529 so, dass es den fortschreitenden Betriebsmodus angibt (Block 1108). Der Prozess kehrt dann zu Block 1104 zurück, der beschrieben wurde. Wenn der L2-Prädiktor 525 jedoch in Block 1106 feststellt, dass die Datenverweildauer 400 von einem nichtfortschreitenden LPC-Snooper empfangen wurde, setzt der L2-Prädiktor 525 den Zähler 527 in einer sättigenden Weise herauf (Block 1110). In Block 1112 ermittelt der L2-Prädiktor 525, ob der Zählwert des Zählers 527 eine Schwelle erfüllt (d.h. größer als sie oder gleich wie sie ist). Wenn nicht, kehrt der Prozess zu Block 1104 zurück, der beschrieben wurde. Wenn der L2-Prädiktor 525 in Block 1112 jedoch feststellt, dass der Zählwert des Zählers 527 die Schwelle erfüllt, setzt der L2-Prädiktor 125 das Flag „fortschreitend“ (progressing, P) 529 zurück, um den nichtfortschreitenden Betriebsmodus anzugeben (Block 1114). Im Anschluss an Block 1114 kehrt der Prozess von 11 zu Block 1104 zurück, der beschrieben wurde.
  • Nunmehr bezugnehmend auf 12 wird dort ein Blockschaltbild eines beispielhaften Entwurfsablaufs 1200 dargestellt, der beispielsweise beim Entwerfen, Simulieren, Prüfen, Anordnen und Herstellen einer Logik integrierter Halbleiterschaltungen (ICs) verwendet wird. Der Entwurfsablauf 1200 weist Prozesse, Maschinen und/oder Mechanismen zum Verarbeiten von Entwurfsstrukturen oder Einheiten zum Erzeugen logisch oder anderweitig funktionsmäßig gleichwertiger Darstellungen der Entwurfsstrukturen und/oder Einheiten auf, die weiter oben beschrieben wurden und hier gezeigt sind. Die vom Entwurfsablauf 1200 verarbeiteten und/oder erzeugten Entwurfsstrukturen können auf maschinenlesbaren Übertragungs- oder Speichermedien codiert werden, um Daten und/oder Anweisungen aufzunehmen, die, wenn sie auf einem Datenverarbeitungssystem ausgeführt oder anderweitig verarbeitet werden, eine logisch, strukturell, mechanisch oder anderweitig funktionsmäßig gleichwertige Darstellung von Hardwarekomponenten, Schaltungen, Einheiten oder Systemen erzeugen. Zu Maschinen gehören, ohne auf diese beschränkt zu sein, beliebige in einem IC-Entwurfsprozess verwendete Maschinen, beispielsweise beim Entwerfen, Herstellen oder Simulieren einer Schaltung, Komponente, Einheit oder eines Systems. Zu Maschinen können beispielsweise gehören: Lithographiemaschinen, Maschinen und/oder Ausrüstung zum Erzeugen von Masken (z.B. Elektronenstrahlschreiben), Computer oder Ausrüstung zum Simulieren von Entwurfsstrukturen, beliebige Vorrichtungen, die im Herstellungs- oder Prüfprozess verwendet werden, oder beliebige Maschinen zum Programmieren funktionsmäßig gleichwertiger Darstellungen der Entwurfsstrukturen in ein beliebiges Medium (z.B. eine Maschine zum Programmieren einer programmierbaren Gatteranordnung).
  • Der Entwurfsablauf 1200 kann abhängig von der Art der Darstellung, die entworfen wird, unterschiedlich sein. Ein Entwurfsablauf 1200 zum Aufbauen eines anwendungsspezifischen IC (application specific IC, ASIC) kann sich von einem Entwurfsablauf 1200 zum Entwerfen einer Standardkomponente oder von einem Entwurfsablauf 1200 zum Instanziieren des Entwurfs in eine programmierbare Anordnung unterscheiden, beispielsweise eine programmierbare Gatteranordnung (programmable gate array, PGA) oder eine vor Ort programmierbare Gatteranordnung (field programmable gate array, FPGA), die von Altera® Inc. oder Xilinx® Inc. angeboten wird.
  • 12 veranschaulicht mehrere solche Entwurfsstrukturen, darunter eine Eingabeentwurfsstruktur 1020, die vorzugsweise von einem Entwurfsprozess 1210 verarbeitet wird. Bei der Entwurfsstruktur 1220 kann es sich um eine Entwurfsstruktur für logische Simulation handeln, die vom Entwurfsprozess 1210 erzeugt und verarbeitet wird, um eine logisch gleichwertige funktionale Darstellung einer Hardwareeinheit zu erzeugen. Die Entwurfsstruktur 1220 kann auch oder alternativ Daten und/oder Programmanweisungen aufweisen, die, wenn sie vom Entwurfsprozess 1210 verarbeitet werden, eine funktionale Darstellung der physischen Struktur einer Hardwareeinheit erzeugen. Unabhängig davon, ob sie funktionale und/oder strukturelle Entwurfsmerkmale darstellt, kann die Entwurfsstruktur 1220 unter Verwendung von elektronischer computergestützter Konstruktion (electronic computer-aided design, ECAD) erzeugt werden, wie sie beispielsweise von einem Kernentwickler/-konstrukteur umgesetzt wird. Wenn sie auf einer maschinenlesbaren Datenübertragung, einer Gatteranordnung oder einem Speichermedium codiert wird, kann auf die Entwurfsstruktur 1220 von einem oder mehreren Hardware- und/oder Softwaremodulen innerhalb des Entwurfsprozesses 1210 zugegriffen und sie kann verarbeitet werden, um eine elektronische Komponente, eine Schaltung, ein Elektronik- oder Logikmodul, eine Vorrichtung, eine Einheit oder ein System wie die hier gezeigten zu simulieren oder anderweitig funktional darzustellen. Die Entwurfsstruktur 1220 an sich kann Dateien oder andere Datenstrukturen aufweisen, darunter von Menschen und/oder Maschinen lesbaren Quellcode, kompilierte Strukturen und von einem Computer ausführbare Codestrukturen, die, wenn sie von einem Entwurfs- oder Simulations-Datenverarbeitungssystem verarbeitet werden, Schaltungen oder andere Ebenen eines Hardware-Logikentwurfs simulieren oder anderweitig darstellen. Solche Datenstrukturen können Entwurfseinheiten mit einer Hardwarebeschreibungssprache (hardware-description language, HDL) oder andere Datenstrukturen aufweisen, die anderen HDL-Entwurfssprachen niedrigerer Ebene entsprechen und/oder damit kompatibel sind, wie beispielsweise Verilog und VHDL, und/oder Entwurfssprachen höherer Ebene wie beispielsweise C oder C++.
  • Der Entwurfsprozess 1210 verwendet und nimmt vorzugsweise Hardware- und/oder Softwaremodule auf zum Synthetisieren, Übersetzen oder anderweitig Verarbeiten eines hinsichtlich Entwerfen/Simulieren funktionalen Äquivalents der hier gezeigten Komponenten, Schaltungen, Einheiten oder logischen Strukturen, um eine Netzliste 1280 zu erzeugen, die Entwurfsstrukturen wie die Entwurfsstruktur 1220 enthält. Die Netzliste 1280 kann beispielsweise kompilierte oder anderweitig verarbeitete Datenstrukturen aufweisen, die eine Liste von Drähten, diskreten Komponenten, Logikgattern, Steuerschaltungen, E/A-Einheiten, Modellen usw. darstellen, die die Verbindungen zu anderen Elementen und Schaltungen in einem Entwurf integrierter Schaltungen beschreiben. Die Netzliste 1280 kann unter Verwendung eines iterativen Prozesses synthetisiert werden, in dem die Netzliste 1280 abhängig von Entwurfsspezifikationen und Parametern für die Einheit ein oder mehrere Male erneut synthetisiert wird. Wie bei anderen hier beschriebenen Entwurfsstrukturarten kann die Netzliste 1280 auf einem maschinenlesbaren Medium aufgezeichnet oder in eine programmierbare Gatterordnung programmiert werden. Bei dem Medium kann es sich um ein nichtflüchtiges Speichermedium wie beispielsweise ein magnetisches oder optisches Plattenlaufwerk, eine programmierbare Gatteranordnung, einen CompactFlash oder einen anderen Flash-Speicher handeln. Zusätzlich oder alternativ kann es sich bei dem Medium um einen Systemspeicher oder Cache oder um Pufferplatz handeln.
  • Der Entwurfsprozess 1210 kann Hardware- und Softwaremodule zum Verarbeiten einer Vielzahl von Eingabedatenstrukturtypen, darunter die Netzliste 1280, aufweisen. Solche Datenstrukturtypen können sich beispielsweise in Bibliothekelementen 1230 befinden und einen Satz üblicherweise verwendeter Elemente, Schaltungen und Einheiten aufweisen, darunter Modelle, Anordnungen und symbolische Darstellungen für eine bestimmte Herstellungstechnologie (z.B. unterschiedliche Technologieknoten, 32 nm, 45 nm, 90 nm usw.). Die Datenstrukturtypen können weiterhin Entwurfsspezifikationen 1240, Kennzeichnungsdaten 1250, Verifizierungsdaten 1260, Entwurfsregeln 12120, und Prüfdatendateien 1285 aufweisen, die Eingabeprüfmuster, Ausgabeprüfergebnisse und weitere Prüfdaten aufweisen können. Der Entwurfsprozess 1210 kann weiterhin beispielsweise Standardprozesse der mechanischen Konstruktion wie beispielsweise Spannungsanalyse, thermische Analyse, Simulieren mechanischer Ereignisse, Prozesssimulation für Arbeitsschritte wie Gießen, Formen und Formpressen usw. aufweisen. Ein Fachmann auf dem Gebiet der mechanischen Konstruktion kann den Umfang möglicher Werkzeuge und -anwendungen für mechanische Konstruktion verstehen, die im Entwurfsverfahren 1210 verwendet werden, ohne vom Geltungsbereich der Erfindung abzuweichen. Der Entwurfsprozess 1210 kann auch Module zum Durchführen von Entwurfsprozessen für Standardschaltungen aufweisen, beispielsweise Zeitsteuerungsanalyse, Verifizieren, Kontrollieren von Entwurfsregeln, Platzier- und Wegführungsfunktionen usw.
  • Der Entwurfsprozess 1210 verwendet logische und physische Entwurfswerkzeuge wie beispielsweise Kompilierfunktionen und Werkzeuge zum Aufbauen von Simulationsmodellen und nimmt diese auf, um die Entwurfsstruktur 1220 zusammen mit einigen oder allen der dargestellten unterstützenden Datenstrukturen neben beliebigen zusätzlichen mechanischen Konstruktionen oder Daten (sofern zutreffend) zu verarbeiten, um eine zweite Entwurfsstruktur 1290 zu erzeugen. Die Entwurfsstruktur 1290 befindet sich auf einem Speichermedium oder einer programmierbaren Gatteranordnung in einem Datenformat, das zum Austauschen von Daten mechanischer Einheiten und Strukturen verwendet wird (z.B. Daten, die in einem IGES-, DXF-, Parasolid XT-, JT-, DRG- oder einem beliebigen anderen geeigneten Format zum Speichern oder Wiedergeben solcher mechanischen Entwurfsstrukturen geeignet sind). Ähnlich wie die Entwurfsstruktur 1220 weist die Entwurfsstruktur 1290 vorzugsweise eine oder mehrere Dateien, Datenstrukturen oder andere auf einem Computer codierte Daten oder Anweisungen auf, die sich auf einem Übertragungs- oder Datenspeichermedium befinden und die, wenn sie von einem ECAD-System verarbeitet werden, eine logische oder anderweitig funktionsmäßig gleichwertige Form von einer oder mehreren der Ausführungsformen der hier gezeigten Erfindung erzeugen. In einer Ausführungsform kann die Entwurfsstruktur 1290 ein kompiliertes, ausführbares HDL-Simulationsmodel. aufweisen, das funktionsmäßig die hier gezeigten Einheiten simuliert.
  • Die Entwurfsstruktur 1290 kann auch ein Datenformat verwenden, das zum Austauschen von Anordnungsdaten von integrierten Schaltungen verwendet wird, oder ein symbolisches Datenformat (z.B. Daten, die in einer GDSII (GDS2)-, GL1-, OASIS-Datei, Kartendateien oder einem beliebigen anderen zum Speichern solcher Entwurfsdatenstrukturen geeigneten Format gespeichert sind). Die Entwurfsstruktur 1290 kann Daten wie beispielsweise symbolische Daten, Kartendateien, Prüfdatendateien, Entwurfsinhaltdateien, Herstellungsdaten, Anordnungsparameter, Drähte, Metallebenen, Durchkontaktierungen, Formen, Daten für die Wegführung durch die Herstellungsanlage sowie beliebige weitere Daten aufweisen, die von einem Hersteller oder einem anderen Konstrukteur/Entwickler benötigt werden, um eine Einheit oder Struktur wie oben beschrieben und hier gezeigt zu erzeugen. Die Entwurfsstruktur 1290 kann dann mit einem Stadium 1295 fortfahren, in dem die Entwurfsstruktur 1290 beispielsweise: mit der Steuerbandfreigabe fortfährt, zum Herstellen freigegeben wird, für ein Maskenhaus freigegeben wird, an ein anderes Entwurfsunternehmen gesendet wird, an den Kunden zurückgesendet wird usw.
  • Wie hier beschrieben, weist ein Datenverarbeitungssystem in mindestens einer Ausführungsform eine Mehrzahl von Snoopern, eine einen Master aufweisende Verarbeitungseinheit und eine Systemstruktur auf, die in einer zum Datenaustausch fähigen Weise den Master und die Mehrzahl von Snoopern verbindet. Der Master stellt einen Wiederholungsbetriebsmodus für eine Verbindungsfunktion in einer von alternativen ersten und zweiten Betriebsmodi ein. Der erste Betriebsmodus gehört zu einem ersten Snooper-Typ, und der zweite Betriebsmodus gehört zu einem davon unterschiedenen zweiten Snooper-Typ. Der Master gibt eine Speicherzugriffsanforderung der Verbindungsfunktion auf der Systemstruktur des Datenverarbeitungssystems aus. Auf der Grundlage eines Empfangens einer kombinierten Antwort, die einer systemweiten Kohärenzantwort auf die Anforderung entspricht, verzögert der Master ein Intervall mit einer vom Wiederholungsbetriebsmodus abhängigen Dauer und gibt danach die Speicherzugriffsanforderung auf der Systemstruktur erneut aus.
  • Verschiedene Ausführungsformen wurden zwar in besonderer Weise gezeigt und beschrieben, für den Fachmann wird jedoch verständlich sein, dass daran verschiedene Änderungen in Form und Einzelheiten vorgenommen werden können, ohne vom Geltungsbereich der anhängenden Ansprüche abzuweichen, und dass diese alternativen Umsetzungen alle im Geltungsbereich der anhängenden Ansprüche liegen. Beispielsweise wurden Aspekte zwar in Bezug auf ein Computersystem beschrieben, das Programmcode ausführt, der die Funktionen der vorliegenden Erfindung steuert, es sollte jedoch verständlich sein, dass die vorliegende Erfindung alternativ als Programmprodukt umgesetzt werden kann, das eine computerlesbare Speichereinheit aufweist, die Programmcode steuert, der von einem Datenverarbeitungssystem verarbeitet werden kann. Die computerlesbare Speichereinheit kann flüchtigen oder nichtflüchtigen Speicher, eine optische oder magnetische Platte oder dergleichen aufweisen. In der hier verwendeten Weise ist eine „Speichereinheit“ jedoch ausdrücklich so definiert, dass sie nur gesetzliche Herstellungsprodukte enthält und ein Signalmedium an sich, vorübergehende Ausbreitungssignale an sich und Energie an sich ausgeschlossen sind.
  • Das Programmprodukt kann beispielsweise Daten und/oder Anweisungen aufweisen, die, wenn sie ausgeführt oder anderweitig auf einem Datenverarbeitungssystem verarbeitet werden, eine logisch, strukturell oder anderweitig funktionsmäßig gleichwertige Darstellung (darunter ein Simulationsmodell) von hier offenbarten Hardwarekomponenten, Schaltungen, Einheiten oder Systemen erzeugen. Solche Daten und/oder Anweisungen können Entwurfseinheiten mit einer Hardwarebeschreibungssprache (hardware-description language, HDL) oder andere Datenstrukturen aufweisen, die anderen HDL-Entwurfssprachen niedrigerer Ebene entsprechen und/oder damit kompatibel sind, wie beispielsweise Verilog und VHDL, und/oder Entwurfssprachen höherer Ebene wie beispielsweise C oder C++. Die Daten und/oder Anweisungen können weiterhin auch ein Datenformat verwenden, das zum Austauschen von Anordnungsdaten von integrierten Schaltungen verwendet wird, oder ein symbolisches Datenformat (z.B. Daten, die in einer GDSII (GDS2)-, GL1-, OASIS-Datei, Kartendateien oder einem beliebigen anderen zum Speichern solcher Entwurfsdatenstrukturen geeigneten Format gespeichert sind).

Claims (19)

  1. Verfahren zum Verarbeiten von Daten in einem Datenverarbeitungssystem, das eine Verarbeitungseinheit umfasst, die einen Master, eine Mehrzahl von Snoopern und eine Systemstruktur aufweist, die in einer zum Datenaustausch fähigen Weise mit dem Master und der Mehrzahl von Snoopern verbunden ist, wobei das Verfahren umfasst: dass der Master einen Wiederholungsbetriebsmodus für eine Verbindungsfunktion in einer von alternativen ersten und zweiten Betriebsmodi einstellt, wobei der erste Betriebsmodus zu einem ersten Snooper-Typ gehört und der zweite Betriebsmodus zu einem davon unterschiedenen zweiten Snooper-Typ gehört; dass der Master eine Speicherzugriffsanforderung der Verbindungsfunktion auf der Systemstruktur des Datenverarbeitungssystems ausgibt; und dass der Master auf der Grundlage eines Empfangens einer kombinierten Antwort, die einer systemweiten Kohärenzantwort auf die Anforderung entspricht, ein Intervall mit einer vom Wiederholungsbetriebsmodus abhängigen Dauer verzögert und danach die Speicherzugriffsanforderung auf der Systemstruktur erneut ausgibt.
  2. Verfahren nach Anspruch 1, wobei: die Speicherzugriffsanforderung eine Zieladresse spezifiziert; die Zieladresse einen zugehörigen Seitentabelleneintrag aufweist, der ein Feld „Typ“ aufweist; und das Einstellen Einstellen des Wiederholungsbetriebsmodus auf der Grundlage des Felds „Typ“ in dem Seitentabelleneintrag umfasst.
  3. Verfahren nach Anspruch 1, wobei: die Speicherzugriffsanforderung eine Zieladresse spezifiziert; die Verarbeitungseinheit eine Basisadressregistereinrichtung aufweist, die bestimmte Adressen dem ersten Betriebsmodus zuweist und andere Adressen dem zweiten Betriebsmodus zuweist; und das Einstellen Einstellen des Wiederholungsbetriebsmodus unter Verwendung der Basisadressregistereinrichtung umfasst.
  4. Verfahren nach Anspruch 1, wobei: das Einstellen Aktualisieren des Wiederholungsbetriebsmodus auf der Grundlage einer in der kombinierten Antwort bereitgestellten Angabe umfasst.
  5. Verfahren nach Anspruch 1, wobei: die Verarbeitungseinheit einen Modusprädiktor aufweist, der auf der Grundlage von Datenquellen aktualisiert wird, die von früheren Speicherzugriffsanforderungen zurückgegeben wurden; und das Einstellen Einstellen des Wiederholungsbetriebsmodus unter Verwendung des Modusprädiktors umfasst.
  6. Verfahren nach Anspruch 1, das weiterhin umfasst: dass der Master eine Wiederholungsschwelle zum Abbrechen der Speicherzugriffsanforderung auf einen von mehreren unterschiedlichen Werten auf der Grundalge des Wiederholungsbetriebsmodus einstellt; und dass der Master die Speicherzugriffsanforderung auf der Grundlage einer Anzahl kombinierter Wiederholen-Antworten für die Speicherzugriffsanforderung abbricht, die die Wiederholungsschwelle für den eingestellten Wiederholungsbetriebsmodus erfüllen.
  7. Verarbeitungseinheit, die aufweist: einen Prozessorkern; Verbindungslogik, die so konfiguriert ist, dass sie die Verarbeitungseinheit mit einer Systemstruktur eines Mehrprozessor-Datenverarbeitungssystems verbindet; eine mit dem Prozessorkern gekoppelte Cache-Hierarchie, wobei die Cache-Hierarchie einen Master aufweist, der so konfiguriert ist, dass er durchführt: Einstellen eines Wiederholungsbetriebsmodus für eine Verbindungsfunktion in einer von alternativen ersten und zweiten Betriebsmodi, wobei der erste Betriebsmodus zu einem ersten Snooper-Typ gehört und der zweite Betriebsmodus zu einem davon unterschiedenen zweiten Snooper-Typ gehört; Ausgeben einer Speicherzugriffsanforderung der Verbindungsfunktion auf der Systemstruktur des Datenverarbeitungssystems; und auf der Grundlage eines Empfangens einer kombinierten Antwort, die einer systemweiten Kohärenzantwort auf die Anforderung entspricht, Verzögern eines Intervalls mit einer vom Wiederholungsbetriebsmodus abhängigen Dauer und danach erneutes Ausgeben der Speicherzugriffsanforderung auf der Systemstruktur.
  8. Verarbeitungseinheit nach Anspruch 7, wobei: die Speicherzugriffsanforderung eine Zieladresse spezifiziert; die Zieladresse einen zugehörigen Seitentabelleneintrag aufweist, der ein Feld „Typ“ aufweist; und das Einstellen Einstellen des Wiederholungsbetriebsmodus auf der Grundlage des Felds „Typ“ in dem Seitentabelleneintrag umfasst.
  9. Verarbeitungseinheit nach Anspruch 7, wobei: die Speicherzugriffsanforderung eine Zieladresse spezifiziert; die Verarbeitungseinheit eine Basisadressregistereinrichtung aufweist, die bestimmte Adressen dem ersten Betriebsmodus zuweist und andere Adressen dem zweiten Betriebsmodus zuweist; und das Einstellen Einstellen des Wiederholungsbetriebsmodus unter Verwendung der Basisadressregistereinrichtung umfasst.
  10. Verarbeitungseinheit nach Anspruch 7, wobei: das Einstellen Aktualisieren des Wiederholungsbetriebsmodus auf der Grundlage einer in der kombinierten Antwort bereitgestellten Angabe umfasst.
  11. Verarbeitungseinheit nach Anspruch 7, wobei: die Verarbeitungseinheit einen Modusprädiktor aufweist, der auf der Grundlage von Datenquellen aktualisiert wird, die von früheren Speicherzugriffsanforderungen zurückgegeben wurden; und das Einstellen Einstellen des Wiederholungsbetriebsmodus unter Verwendung des Modusprädiktors umfasst.
  12. Verarbeitungseinheit nach Anspruch 7, wobei der Master weiterhin so konfiguriert ist, dass er durchführt: dass der Master eine Wiederholungsschwelle zum Abbrechen der Speicherzugriffsanforderung auf einen von mehreren unterschiedlichen Werten auf der Grundalge des Wiederholungsbetriebsmodus einstellt; und dass der Master die Speicherzugriffsanforderung auf der Grundlage einer Anzahl kombinierter Wiederholen-Antworten für die Speicherzugriffsanforderung abbricht, die die Wiederholungsschwelle für den eingestellten Wiederholungsbetriebsmodus erfüllen.
  13. Mehrprozessor-Datenverarbeitungssystem, das aufweist: mehrere Verarbeitungseinheiten nach Anspruch 7; und die Systemverbindung, die mehrere Verarbeitungseinheiten verbindet.
  14. In einer maschinenlesbaren Speichereinheit materiell verkörperte Entwurfsstruktur zum Entwerfen, Herstellen oder Prüfen einer integrierten Schaltung, wobei die Entwurfsstruktur aufweist: eine Verarbeitungseinheit, die aufweist: einen Prozessorkern; Verbindungslogik, die so konfiguriert ist, dass sie die Verarbeitungseinheit mit einer Systemstruktur eines Mehrprozessor-Datenverarbeitungssystems verbindet; eine mit dem Prozessorkern gekoppelte Cache-Hierarchie, wobei die Cache-Hierarchie einen Master aufweist, der so konfiguriert ist, dass er durchführt: Einstellen eines Wiederholungsbetriebsmodus für eine Verbindungsfunktion in einer von alternativen ersten und zweiten Betriebsmodi, wobei der erste Betriebsmodus zu einem ersten Snooper-Typ gehört und der zweite Betriebsmodus zu einem davon unterschiedenen zweiten Snooper-Typ gehört; Ausgeben einer Speicherzugriffsanforderung der Verbindungsfunktion auf der Systemstruktur des Datenverarbeitungssystems; und auf der Grundlage eines Empfangens einer kombinierten Antwort, die einer systemweiten Kohärenzantwort auf die Anforderung entspricht, Verzögern eines Intervalls mit einer vom Wiederholungsbetriebsmodus abhängigen Dauer und danach erneutes Ausgeben der Speicherzugriffsanforderung auf der Systemstruktur.
  15. Entwurfsstruktur nach Anspruch 14, wobei: die Speicherzugriffsanforderung eine Zieladresse spezifiziert; die Zieladresse einen zugehörigen Seitentabelleneintrag aufweist, der ein Feld „Typ“ aufweist; und das Einstellen Einstellen des Wiederholungsbetriebsmodus auf der Grundlage des Felds „Typ“ in dem Seitentabelleneintrag umfasst.
  16. Entwurfsstruktur nach Anspruch 14, wobei: die Speicherzugriffsanforderung eine Zieladresse spezifiziert; die Verarbeitungseinheit eine Basisadressregistereinrichtung aufweist, die bestimmte Adressen dem ersten Betriebsmodus zuweist und andere Adressen dem zweiten Betriebsmodus zuweist; und das Einstellen Einstellen des Wiederholungsbetriebsmodus unter Verwendung der Basisadressregistereinrichtung umfasst.
  17. Entwurfsstruktur nach Anspruch 14, wobei: das Einstellen Aktualisieren des Wiederholungsbetriebsmodus auf der Grundlage einer in der kombinierten Antwort bereitgestellten Angabe umfasst.
  18. Entwurfsstruktur nach Anspruch 14, wobei: die Verarbeitungseinheit einen Modusprädiktor aufweist, der auf der Grundlage von Datenquellen aktualisiert wird, die von früheren Speicherzugriffsanforderungen zurückgegeben wurden; und das Einstellen Einstellen des Wiederholungsbetriebsmodus unter Verwendung des Modusprädiktors umfasst.
  19. Entwurfsstruktur nach Anspruch 14, wobei der Master weiterhin so konfiguriert ist, dass er durchführt: dass der Master eine Wiederholungsschwelle zum Abbrechen der Speicherzugriffsanforderung auf einen von mehreren unterschiedlichen Werten auf der Grundalge des Wiederholungsbetriebsmodus einstellt; und dass der Master die Speicherzugriffsanforderung auf der Grundlage einer Anzahl kombinierter Wiederholen-Antworten für die Speicherzugriffsanforderung abbricht, die die Wiederholungsschwelle für den eingestellten Wiederholungsbetriebsmodus erfüllen.
DE112022003146.8T 2021-08-04 2022-05-27 Datenverarbeitungssystem mit Mastern, die sich an Agenten mit unterschiedlichen Wiederholungsverhaltensweisen anpassen Pending DE112022003146T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/394,195 US11556472B1 (en) 2021-08-04 2021-08-04 Data processing system having masters that adapt to agents with differing retry behaviors
US17/394,195 2021-08-04
PCT/CN2022/095765 WO2023010975A1 (en) 2021-08-04 2022-05-27 Data processing system having masters that adapt to agents with differing retry behaviors

Publications (1)

Publication Number Publication Date
DE112022003146T5 true DE112022003146T5 (de) 2024-04-04

Family

ID=84922839

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022003146.8T Pending DE112022003146T5 (de) 2021-08-04 2022-05-27 Datenverarbeitungssystem mit Mastern, die sich an Agenten mit unterschiedlichen Wiederholungsverhaltensweisen anpassen

Country Status (4)

Country Link
US (1) US11556472B1 (de)
DE (1) DE112022003146T5 (de)
GB (1) GB2623724A (de)
WO (1) WO2023010975A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230176956A1 (en) * 2021-12-08 2023-06-08 Hcl Technologies Limited Method and system for performing dataload protocol operation testing in an avionics unit

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687795B2 (en) * 2000-12-20 2004-02-03 International Business Machines Corporation Data processing system and method of communication that reduce latency of write transactions subject to retry
US6763434B2 (en) * 2000-12-30 2004-07-13 International Business Machines Corporation Data processing system and method for resolving a conflict between requests to modify a shared cache line
US20030137519A1 (en) 2002-01-22 2003-07-24 Nazanda Rima M. Method and apparatus to handle multiple requests to different memory agents
US7818388B2 (en) * 2005-10-07 2010-10-19 International Business Machines Corporation Data processing system, method and interconnect fabric supporting multiple planes of processing nodes
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US20070266126A1 (en) * 2006-04-13 2007-11-15 Clark Leo J Data processing system and method of data processing supporting ticket-based operation tracking
US8117401B2 (en) * 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US9529712B2 (en) 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types
US20130262736A1 (en) 2012-03-30 2013-10-03 Ati Technologies Ulc Memory types for caching policies
US9606922B2 (en) * 2013-03-01 2017-03-28 International Business Machines Corporation Selection of post-request action based on combined response and input from the request source
US10117892B2 (en) * 2013-08-29 2018-11-06 Allergan, Inc. Devices and methods for reducing the appearance of cellulite
GB2525577A (en) * 2014-01-31 2015-11-04 Ibm Bridge and method for coupling a requesting interconnect and a serving interconnect in a computer system
EP3055775B1 (de) 2014-12-14 2019-08-21 VIA Alliance Semiconductor Co., Ltd. Richtlinien für cacheersatz unter berücksichtigung des speicherzugrifftyps
US20180357001A1 (en) 2015-12-16 2018-12-13 Hewlett Packard Enterprise Development Lp Allocate memory based on memory type request
US10157134B2 (en) 2016-04-11 2018-12-18 International Business Machines Corporation Decreasing the data handoff interval for a reserved cache line based on an early indication of a systemwide coherence response
US10599577B2 (en) 2016-05-09 2020-03-24 Cavium, Llc Admission control for memory access requests
US10346342B1 (en) 2017-03-07 2019-07-09 Amazon Technologies, Inc. Uniform memory access architecture
KR20190040607A (ko) * 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10296230B1 (en) 2017-12-22 2019-05-21 Advanced Micro Devices, Inc. Scheduling memory requests with non-uniform latencies
KR20190078133A (ko) * 2017-12-26 2019-07-04 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US10649922B2 (en) 2018-08-06 2020-05-12 Apple Inc. Systems and methods for scheduling different types of memory requests with varying data sizes
US10719441B1 (en) 2019-02-12 2020-07-21 Advanced Micro Devices, Inc. Using predictions of outcomes of cache memory access requests for controlling whether a request generator sends memory access requests to a memory in parallel with cache memory access requests
US11232033B2 (en) 2019-08-02 2022-01-25 Apple Inc. Application aware SoC memory cache partitioning
US11119855B2 (en) 2019-10-24 2021-09-14 International Business Machines Corporation Selectively storing parity data in different types of memory
US10970215B1 (en) * 2019-12-03 2021-04-06 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
US11157409B2 (en) * 2019-12-17 2021-10-26 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests
CN112131063B (zh) 2020-09-29 2023-10-24 中国银行股份有限公司 重试方法及装置、计算机设备及计算机可读存储介质

Also Published As

Publication number Publication date
US11556472B1 (en) 2023-01-17
GB2623724A (en) 2024-04-24
WO2023010975A1 (en) 2023-02-09
US20230040617A1 (en) 2023-02-09

Similar Documents

Publication Publication Date Title
DE112017001959T5 (de) Cachespeicher-Zugriff
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE102013204417B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE112019000629B4 (de) Koordination von cacheoperationen
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69027253T2 (de) Multiprozessor-Cachespeichersystem
DE112011103433B4 (de) Verfahren, System und Programm zum Steuern von Cache-Kohärenz
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112005002180T5 (de) Lösen von Cachekonflikten
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE112005002268T5 (de) Verfahren und Vorrichtung für eine vorwärtslaufende Victim-Auswahl zum Verringern eines unerwünschten Ersatzverhaltens in inklusiven Caches
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
DE10232926A1 (de) Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen
US20200174931A1 (en) Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead
DE102016222041A1 (de) Ungültigmachen eines umsetzungseintrags in einem multithread-datenverarbeitungssystem
DE68926878T2 (de) Verfahren zur Speicherung in nichtausschliessende Cachespeicherzeilen in Mehrprozessoranordnungen
DE112020005147B4 (de) Cache-snooping-modus, der einen kohärenzschutz für bestimmte anforderungen erweitert
DE112022003146T5 (de) Datenverarbeitungssystem mit Mastern, die sich an Agenten mit unterschiedlichen Wiederholungsverhaltensweisen anpassen
DE102021108478B4 (de) Vorrichtung und Steuerung zur Cache-Verzeichnis-CAM-Fehlererkennung und - Korrektur
EP4066119B1 (de) Cache-snooping-modus zur erweiterung des kohärenzschutzes für bestimmte anfragen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R084 Declaration of willingness to licence