DE112013000891T5 - Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten - Google Patents

Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten Download PDF

Info

Publication number
DE112013000891T5
DE112013000891T5 DE112013000891.2T DE112013000891T DE112013000891T5 DE 112013000891 T5 DE112013000891 T5 DE 112013000891T5 DE 112013000891 T DE112013000891 T DE 112013000891T DE 112013000891 T5 DE112013000891 T5 DE 112013000891T5
Authority
DE
Germany
Prior art keywords
instruction
load
lock
processor core
response
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.)
Ceased
Application number
DE112013000891.2T
Other languages
English (en)
Inventor
c/o IBM Corporation Williams Derek Edward
c/o IBM Corporation Guthrie Guy Lynn
c/o IBM Corporation Starke William
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 DE112013000891T5 publication Critical patent/DE112013000891T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

Eine Technik zum Verarbeiten einer Befehlsfolge, die einen Sperrbefehl, einen Ladebefehl vor dem Sperrbefehl und einen nachfolgenden Speicherzugriffsbefehl nach dem Sperrbefehl enthält, beinhaltet ein Feststellen, durch einen Prozessorkern, dass der Ladebefehl auf der Grundlage des Empfangs, durch den Prozessorkern, einer frühesten Antwort einer guten kombinierten Antwort für eine Leseoperation abgearbeitet ist, die dem Ladebefehl und Daten für den Ladebefehl entspricht. Wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls nicht vor dem Beenden des Sperrbefehls eingeleitet wird, beinhaltet die Technik ferner als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist, ein Einleiten, durch den Prozessorkern, des Ausführens des nachfolgenden Speicherzugriffsbefehls. Wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls vor dem Beenden des Sperrbefehls eingeleitet wird, beinhaltet die Technik ferner als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist, ein Unterbrechen, durch den Prozessorkern, des Verfolgens des nachfolgenden Speicherzugriffsbefehls im Hinblick auf ein Ungültigmachen.

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung bezieht sich allgemein auf ein Verbessern der Prozessorleistung und insbesondere auf ein Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten.
  • STAND DER TECHNIK
  • Ein herkömmliches symmetrisches Mehrprozessor-Computersystem (SMP-Computersystem) wie beispielsweise ein Server-Computersystem enthält mehrere Verarbeitungseinheiten, die alle mit einer Systemverbindung (system interconnect) verbunden sind, die üblicherweise einen oder mehrere Adress-, Daten- und Steuerbusse aufweist. Mit der Systemverbindung ist ein Systemspeicher verbunden, der die unterste Ebene von flüchtigen Speichereinheiten in dem Mehrprozessor-Computersystem darstellt und auf den alle Verarbeitungseinheiten für Lese- und Schreibzugriffe zugreifen können. Um die Latenzzeit beim Zugriff auf Befehle und Daten zu verringern, die sich in dem Systemspeicher befinden, wird jede Verarbeitungseinheit üblicherweise des Weiteren durch eine entsprechende Cachespeicher-Hierarchie mit mehreren Ebenen unterstützt, deren untere(n) Ebene(n) von einem oder mehreren Prozessorkernen gemeinsam genutzt werden kann bzw. können.
  • Es sind verschiedene Prozessorausgestaltungen vorgeschlagen und/oder umgesetzt worden, um die Leistung eines Datenverarbeitungssystems zu verbessern. Bei Prozessorausgestaltungen zum Beispiel, die schwache Speichermodelle implementieren, können die Befehle für ein Ausführen neu geordnet werden, solange bei den Operationen nicht die Einschränkung besteht, dass sie nicht außerhalb der Reihenfolge ausgeführt werden dürfen. Bei einer Technik zum Einschränken des Ausführens bestimmter Befehle werden Sperrbefehle (oder Synchronisierungsbefehle) verwendet, um ein Ausführen nachfolgender Lade- oder Speicherbefehle zu verhindern (d. h. Lade- oder Speicherbefehle nach einem Sperrbefehl), bis ein vorheriger Lade- oder Speicherbefehl oder solche Befehle (d. h. Lade- oder Speicherbefehle vor dem Sperrbefehl) erledigt ist bzw. sind.
  • Mit Bezug auf 8 sind vier verschiedene Fälle hinsichtlich der Verwendung eines Sperrbefehls (SYNC) möglich, um ein Ordnen von Speicherbefehlen (ST) und Ladebefehlen (LD) umzusetzen. In einem ersten Speichern-Speichern-Fall folgt einem Speicherbefehl an Adresse ”A” (ST A) vor einem Sperrbefehl (SYNC) ein Speicherbefehl an Adresse ”B” (ST B) nach dem Sperrbefehl (SYNC). In einem zweiten Speichern-Laden-Fall folgt einem Speicherbefehl an Adresse ”A” (ST A) vor einem Sperrbefehl (SYNC) ein Ladebefehl an Adresse ”B” (LD B) nach dem Sperrbefehl (SYNC). In einem dritten Laden-Laden-Fall folgt einem Ladebefehl an Adresse ”A” (LD A) vor einem Sperrbefehl (SYNC) ein Ladebefehl an Adresse ”B” (LD B) nach dem Sperrbefehl (SYNC). In einem vierten Laden-Speichern-Fall folgt einem Ladebefehl an Adresse ”A” (LD A) vor einem Sperrbefehl (SYNC) ein Speicherbefehl an Adresse ”B” (ST B) nach dem Sperrbefehl (SYNC).
  • Im ersten Fall hat der Sperrbefehl (SYNC) die Reihenfolge unter den Speicherbefehlen (ST A und ST B) aufrechterhalten, während die Befehlsfolge eine Prozessor-Pipeline durchlaufen hat. Im zweiten Fall wurde das Ausführen des Ladebefehls (LD B) nach dem Sperrbefehl (SYNC) verzögert, bis der Speicherbefehl (ST A) vor dem Sperrbefehl (SYNC) beendet war (oder der Ladebefehl (LD B) nach dem Sperrbefehl (SYNC) wurde früh ausgegeben und im Hinblick auf ein Ungültigmachen verfolgt, bis eine Bestätigung (ACK) für den Sperrbefehl (SYNC) von einem Speicherteilsystem bei einem Prozessorkern empfangen wurde). Im dritten Fall hat der Ladebefehl (LD B) nach dem Sperrbefehl (SYNC) gewartet, bis Daten für den Ladebefehl (LD A) vor dem Sperrbefehl (SYNC) empfangen wurden (oder der Ladebefehl (LD B) nach dem Sperrbefehl (SYNC) wurde früh gestartet und im Hinblick auf Ungültigmachen verfolgt, bis die Daten für den Ladebefehl (LD A) vor dem Sperrbefehl (SYNC) bei dem Prozessorkern empfangen wurden). Im vierten Fall wurde das Ausführen des Speicherbefehls (ST B) nach dem Sperrbefehl (SYNC) verzögert, bis Daten für den Ladebefehl (LD A) vor dem Sperrbefehl (SYNC) bei dem Prozessorkern empfangen wurden.
  • Bei herkömmlichen Ausführungen wurde ein Ladebefehl vor einem Sperrbefehl abgearbeitet, wenn Daten (für den Ladebefehl) an den Prozessorkern zurückgegeben wurden. Ein Speicherbefehl vor einem Sperrbefehl wurde demgegenüber bei herkömmlichen Ausführungen abgearbeitet, wenn eine Bestätigung (ACK) (für einen nachfolgenden Sperrbefehl) von einem Speicherteilsystem (z. B. einem L2-Cachespeicher) bei dem Prozessorkern empfangen wurde. Mit Bezug auf die Fälle 10 von 8 sind bei herkömmlichen Ausführungen Ladebefehle, die einem Sperrbefehl folgen, entweder spekulativ ausgeführt und im Hinblick auf ein Ungültigmachen verfolgt worden (wobei ungültig gemachte Ladebefehle erneut ausgeführt werden) oder (für den Fall, dass keine Verfolgungslogik zur Verfügung steht) ein Ausführen von Ladebefehlen nach dem Sperrbefehl verzögert worden, bis die Befehle (ST A oder LD A) vor dem Sperrbefehl wie oben dargelegt abgearbeitet waren. Mit Bezug auf die Fälle 12 von 8 wurde bei herkömmlichen Ausführungen ein Ausführen von Befehlen (LD B oder ST B), die einem Sperrbefehl folgen, verzögert, bis Daten für den Ladebefehl (LD A) von dem Prozessorkern empfangen wurden.
  • Nach dem Stand der Technik besteht somit Bedarf, das vorstehend beschriebene Problem zu lösen.
  • KURZDARSTELLUNG
  • Gemäß einem Aspekt der vorliegenden Offenbarung beinhaltet eine Technik zum Verarbeiten einer Befehlsfolge, die einen Sperrbefehl, einen Ladebefehl vor dem Sperrbefehl und einen nachfolgenden Speicherzugriffsbefehl nach dem Sperrbefehl enthält, ein Feststellen, durch einen Prozessorkern, dass der Ladebefehl auf der Grundlage des Empfangs, durch den Prozessorkern, einer frühesten Antwort einer guten kombinierten Antwort für eine Leseoperation abgearbeitet ist, die dem Ladebefehl und Daten für den Ladebefehl entspricht. Wenn ein Ausführen des nachfolgenden Speicherzugriffsbefehls nicht vor dem Beenden des Sperrbefehls eingeleitet wird, beinhaltet die Technik ferner als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist, ein Einleiten, durch den Prozessorkern, des Ausführens des nachfolgenden Speicherzugriffsbefehls. Wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls vor dem Beenden des Sperrbefehls eingeleitet wird, beinhaltet die Technik ferner als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist, ein Unterbrechen, durch den Prozessorkern, des Verfolgens des nachfolgenden Speicherzugriffsbefehls im Hinblick auf ein Ungültigmachen.
  • Von einem ersten Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Verfahren zum Verarbeiten einer Befehlsfolge bereit, die einen Sperrbefehl, einen Ladebefehl vor dem Sperrbefehl und einen nachfolgenden Speicherzugriffsbefehl nach dem Sperrbefehl enthält, wobei das Verfahren aufweist: Feststellen, durch einen Prozessorkern, dass der Ladebefehl auf der Grundlage des Empfangs, durch den Prozessorkern, einer frühesten Antwort einer guten kombinierten Antwort für eine Leseoperation abgearbeitet ist, die dem Ladebefehl und Daten für den Ladebefehl entspricht; wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls nicht vor dem Beenden des Sperrbefehls eingeleitet wird, Einleiten, durch den Prozessorkern, des Ausführens des nachfolgenden Speicherzugriffsbefehls als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist; und wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls vor dem Beenden des Sperrbefehls eingeleitet wird, Unterbrechen, durch den Prozessorkern, des Verfolgens des nachfolgenden Speicherzugriffsbefehls im Hinblick auf ein Ungültigmachen als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Datenverarbeitungssystem bereit, das so konfiguriert ist, dass es eine Befehlsfolge verarbeitet, die einen Sperrbefehl, einen Ladebefehl vor dem Sperrbefehl und einen nachfolgenden Speicherzugriffsbefehl nach dem Sperrbefehl enthält, wobei das Datenverarbeitungssystem aufweist: einen Cachespeicher; und einen Prozessorkern, der mit dem Cachespeicher verbunden ist, wobei das System ein Mittel aufweist zum: Feststellen, dass der Ladebefehl auf der Grundlage des Empfangs, durch den Prozessorkern, einer frühesten Antwort einer guten kombinierten Antwort für eine Leseoperation abgearbeitet ist, die dem Ladebefehl und Daten für den Ladebefehl entspricht; wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls nicht vor dem Beenden des Sperrbefehls eingeleitet wird, Einleiten, durch den Prozessorkern, des Ausführens des nachfolgenden Speicherzugriffsbefehls als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist; und wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls vor dem Beenden des Sperrbefehls eingeleitet wird, Unterbrechen, durch den Prozessorkern, des Verfolgens des nachfolgenden Speicherzugriffsbefehls im Hinblick auf ein Ungültigmachen als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Datenverarbeitungssystem bereit, das so konfiguriert ist, dass es eine Befehlsfolge verarbeitet, die einen Sperrbefehl, einen Ladebefehl vor dem Sperrbefehl und einen nachfolgenden Speicherzugriffsbefehl nach dem Sperrbefehl enthält, wobei das Datenverarbeitungssystem aufweist: einen Cachespeicher; und einen Prozessorkern, der mit dem Cachespeicher verbunden ist, wobei der Prozessorkern so konfiguriert ist, dass er feststellt, dass der Ladebefehl auf der Grundlage des Empfangs, durch den Prozessorkern, einer frühesten Antwort einer guten kombinierten Antwort für eine Leseoperation abgearbeitet ist, die dem Ladebefehl und Daten für den Ladebefehl entspricht; wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls nicht vor dem Beenden des Sperrbefehls eingeleitet wird, Einleiten, durch den Prozessorkern, des Ausführens des nachfolgenden Speicherzugriffsbefehls als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist; und wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls vor dem Beenden des Sperrbefehls eingeleitet wird, Unterbrechen, durch den Prozessorkern, des Verfolgens des nachfolgenden Speicherzugriffsbefehls im Hinblick auf ein Ungültigmachen als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Verarbeiten einer Befehlsfolge bereit, die einen Sperrbefehl, einen Ladebefehl vor dem Sperrbefehl und einen nachfolgenden Speicherzugriffsbefehl nach dem Sperrbefehl enthält, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium beinhaltet, das von einer Verarbeitungsschaltung gelesen werden kann und Befehle speichert, die von der Verarbeitungsschaltung ausgeführt werden, um ein Verfahren zum Durchführen der Schritte der Erfindung auszuführen.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogramm bereit, das auf einem computerlesbaren Medium gespeichert ist und in den internen Speicher eines digitalen Computers geladen werden kann, wobei das Computerprogramm Software-Codeteile aufweist, wenn das Programm auf einem Computer ausgeführt wird, um die Schritte der Erfindung durchzuführen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird nunmehr im Folgenden lediglich beispielhaft mit Bezug auf bevorzugte Ausführungsformen beschrieben, die in den folgenden Figuren veranschaulicht sind:
  • 1 ist ein Schaltbild eines maßgeblichen Teils einer Verarbeitungseinheit, die gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung konfiguriert ist;
  • 2 ist ein Schaubild eines maßgeblichen Teils eines beispielhaften Datenverarbeitungssystems, das gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung konfiguriert ist;
  • 3 ist ein Schaubild einer beispielhaften Operation mit einer Anforderungsphase, einer Teilantwortphase (Presp-Phase) und einer Phase mit einer kombinierten Antwort (Cresp), die gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung in dem Datenverarbeitungssystem von 2 ausgeführt wird;
  • 4 ist ein Schaubild einer beispielhaften Operation in dem Datenverarbeitungssystem von 2 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 5 ist ein Schaltbild eines maßgeblichen Teils eines Sektors eines L2-Cachespeichers von 1 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
  • 6 ist ein Ablaufplan eines beispielhaften Prozesses, der von einer Leseforderungsmaschine (read-claim (RC) machine) von 5 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung ausgeführt wird;
  • 7 ist ein Ablaufplan eines beispielhaften Prozesses, der von einer Logik zum Abarbeiten einer Lade-Neuordnungswarteschlange des Prozessorkerns verwendet wird, die in einer Lade-Speicher-Einheit (load-store unit, LSU) von 5 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung ausgeführt wird;
  • 8 ist ein Schaubild, das vier mögliche Fälle für das Verwenden eines Sperrbefehls (SYNC) veranschaulicht, um Speicherbefehle (ST) und Ladebefehle (LD) gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zu ordnen; und
  • 9 ist ein Ablaufplan eines beispielhaften Prozesses zum Aufheben einer Sperre, der von einer Logik zum Abarbeiten einer Lade-Neuordnungswarteschlange des Prozessorkerns der LSU von 5 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Für den Fachmann ist ersichtlich, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Aspekte der vorliegenden Erfindung können daher die Form einer Hardware-Ausführung oder einer Ausführung haben, bei der Software-(darunter Firmware, residente Software, Mikrocode usw.) und Hardware-Aspekte kombiniert sind, die allgemein hierin als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Aspekte der vorliegenden Erfindung können des Weiteren die Form eines Computerprogrammprodukts haben, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, die über einen darin enthaltenen computerlesbaren Programmcode verfügen.
  • Es können beliebige Kombinationen von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder eine geeignete Kombination davon handeln, ohne darauf beschränkt zu sein. Zu genauen Beispielen für das computerlesbare Speichermedium gehören wie folgt: eine tragbare Computer-Diskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein tragbarer Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination davon. Im Zusammenhang mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges physisches Medium handeln, das ein Programm enthalten oder speichern kann, welches von oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Befehlen verwendet wird.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit darin enthaltenem computerlesbarem Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen haben, darunter elektromagnetische, optische Formen oder eine geeignete Kombination davon, ohne darauf beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Befehlen übertragen, weitergegeben oder transportieren kann.
  • In einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines geeigneten Mediums übermittelt werden, das drahtlos, drahtgebunden, ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination davon sein kann, ohne darauf beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Operationen in Verbindung mit Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, zu denen eine objektorientierte Programmiersprache wie beispielsweise Java®, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache ”C” oder ähnliche Programmiersprachen gehören. Der Programmcode kann ganz auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder ganz auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über ein beliebiges Netzwerk mit dem Computer des Benutzers verbunden sein, zum Beispiel über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder es kann die Verbindung zu einem externen Computer hergestellt werden (beispielsweise über das Internet durch einen Internetdienstanbieter). Java und alle auf Java beruhende Warenzeichen und Logos sind Warenzeichen oder eingetragene Warenzeichen von Oracle und/oder seinen Tochterunternehmen.
  • Nachstehend werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf Ablaufplandarstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplandarstellungen und/oder der Blockschaltbilder sowie Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder in den Blockschaltbildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalrechners, Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass die Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten steuern kann, um auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsartikel einschließlich der Befehle erzeugen, die die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegte Funktion/Maßnahme umsetzen.
  • Die Computerprogrammbefehle können ferner in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von Funktionsschritten auszulösen, die auf dem Computer, in der anderen programmierbaren Vorrichtung oder den anderen Einheiten durchgeführt werden, um einen computerimplementierten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder in der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse bereitstellen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Datenverarbeitungssysteme, die schwache Speichermodelle nutzen, ermöglichen ein umfangreiches Neuordnen von Operationen und ermöglichen Speicheränderungsoperationen, um unterschiedliche Prozessoren auf nicht-atomare Weise zu beeinflussen (d. h., Speicheroperationen können sich zu unterschiedlichen Zeitpunkten auf verschiedene Prozessoren eines Mehrprozessor-Datenverarbeitungssystems auswirken). Bei Datenverarbeitungssystemen, die schwache Speichermodelle verwenden, ist es wünschenswert, Ordnung und Atomizität für bestimmte Speicherzugriffsoperationen bei allen Prozessoren eines Mehrprozessor-Datenverarbeitungssystems umzusetzen. Eine typische Vorgehensweise zum Umsetzen einer solchen Operationsordnung verwendet Sperrbefehle (Synchronisierungs- oder Begrenzungsbefehle (fence instructions)) in einer Befehlsfolge. Sperrbefehle erzwingen, dass Lade- und Speicherbefehle auf unterschiedlichen Seiten eines Sperrbefehls in Reihenfolge im System durchgeführt werden, und können die Atomizität von Speicherbefehlen unter bestimmten Umständen wiederherstellen. Das Ausführen von Sperrbefehlen ist ein kritischer Aspekt von Maschinen mit schwachem Speichermodell. Es ist somit wünschenswert, dass Sperrbefehle so wirksam wie möglich ausgeführt werden. Um eine Operationsordnung und Wiederherstellung der Atomizität zu erreichen, wartet ein Sperrbefehl auf den Eintritt bestimmter Ereignisse, um anzuzeigen, dass ein Lade- oder Speicherbefehl, der dem Sperrbefehl vorausgeht, ausreichend weit in einem Datenverarbeitungssystem fortgeschritten ist (d. h. abgearbeitet ist), bevor der Sperrbefehl beendet werden darf und Speicherzugriffsoperationen nach dem Sperrbefehl fortgesetzt werden dürfen.
  • Gemäß verschiedener Ausführungsformen der vorliegenden Offenbarung werden die bestimmten Mikroarchitektur-Ereignisse, auf die Sperrbefehle warten, verbessert, damit Befehlsfolgen mit Sperrbefehlen wirksamer verarbeitet werden können. Bei herkömmlichen Ausführungen wurde gewartet, bis Daten an einen Prozessorkern zurückgegeben wurden, um anzuzeigen, dass ein zu den Daten gehöriger Ladebefehl erledigt wurde. In vielen Fällen erzwingt ein Warten darauf, dass Daten eines Ladebefehls an einen Prozessorkern zurückgegeben werden, bevor eine Sperre aufgehoben wird, eine Verzögerung, die länger als notwendig ist und die daher das Ausführen einer Befehlsfolge, die den Ladebefehl enthält, durch den Prozessor verlangsamt. In aktuellen Ausführungen von Kohärenzprotokollen kann ein Kohärenzprotokoll eine Meldung einer kombinierten Antwort (Cresp) zurücksenden, dass ein Wert für einen Ladebefehl gebunden ist oder bestimmt wird, bevor die eigentlichen Daten für den Ladebefehl an einen Prozessorkern zurückgegeben werden. Gemäß der vorliegenden Offenbarung gilt ein Ladebefehl, der einem Sperrbefehl vorausgeht, nach dem frühesten Auftreten einer guten Cresp für den Ladebefehl oder Ausgangsdaten (d. h. an den anfordernden Prozessorkern zurückgegebene Daten) für den Ladebefehl als abgearbeitet, wodurch die von dem Sperrbefehl ausgeführte Sperre aufgehoben und ein Ausführen von Speicherzugriffsbefehlen nach dem Sperrbefehl fortgesetzt werden kann. In vielen Fällen wird die Cresp für den Ladebefehl vor den Ladedaten von dem Prozessorkern empfangen, das heißt, dass die Verarbeitung der Befehlsfolge im Vergleich zu vorherigen Ausführungen beschleunigt wird, bei denen eine Datenbasis zum Abarbeiten eines Ladebefehls benötigt wird, der einem Sperrbefehl vorangeht.
  • Wie zuvor erwähnt, kann ein Sperrbefehl verwendet werden, um ein Ordnen in vier Fällen umzusetzen: Laden-Laden, Laden-Speichern, Speichern-Laden und Speichern-Speichern. Gemäß der vorliegenden Offenbarung wird ein Ausführen von Befehlsfolgen mit Sperrbefehlen behandelt, die Ladebefehle ordnen, welche einem Sperrbefehl vorangehen. Es versteht sich, dass der Fall einer Speichern-Speichern-Ordnung keine Daten aufweist, die als Reaktion auf eine Speicheroperation vor einem Sperrbefehl zurückgegeben werden, und daher in der vorliegenden Offenbarung nicht behandelt wird. Auch der Fall einer Speichern-Laden-Ordnung ist nicht betroffen, da Ladebefehle, die nach einem Sperrbefehl auftreten, im Allgemeinen bereits spekulativ gestartet werden, bevor der Sperrbefehl beendet ist, und erneut gestartet werden, wenn die Umstände erfordern, dass der Ladebefehl nicht hätte früher ausgeführt werden sollen.
  • Gemäß der vorliegenden Offenbarung wird eine Laden-Laden-Ordnung erreicht, indem Ladebefehle, die vor und nach dem Sperrbefehl kommen, in einer beliebigen Reihenfolge ausgeführt werden können. Ladebefehle nach dem Sperrbefehl werden jedoch im Hinblick auf Vorgänge des Ungültigmachens verfolgt (bis der Sperrbefehl beendet ist), die anzeigen, dass eine von einem Ladebefehl nach dem Sperrbefehl referenzierte Position ihren Wert geändert hat. Zu diesem Zeitpunkt kann der Sperrbefehl beendet werden (und daher kann das Verfolgen jüngerer Ladebefehle nach dem Sperrbefehl aufhören), wenn ältere Ladebefehle vor dem Sperrbefehl ihre Daten empfangen haben und eine Synchronisierungsbestätigung (SYNC ACK) von dem Speicherteilsystem empfangen wurde (die anzeigt, dass die Speicherbefehle vor dem Sperrbefehl in Bezug auf alle Prozessoren ausgeführt wurden). In aktuellen Ausführungen werden Speicherbefehle, die nach einem Sperrbefehl auftreten, ebenfalls verzögert, bis der Sperrbefehl beendet ist. Da diese jüngeren Speicherbefehle den Systemzustand ändern, können die jüngeren Speicherbefehle im Gegensatz zu den jüngeren Ladebefehlen nicht gestartet werden, bis der Sperrbefehl beendet ist.
  • Anstatt auf Ausgangsdaten auf vorherigen Ladebefehlen zu warten, betrachtet ein Prozessorkern gemäß der vorliegenden Offenbarung einen älteren Ladebefehl als abgearbeitet, wenn entweder eine gute Cresp auftritt (eine gute Cresp zeigt an, dass der für die älteren Ladebefehle zurückzugebende Wert an den älteren Ladebefehl gebunden ist) oder wenn Daten zurückkehren. Wenn eine Leseforderungsmaschine (read-claim machine, RC-Maschine) eine gute Cresp für eine Leseoperation empfängt, sendet die RC-Maschine eine Meldung (z. B. auf einem Neuladebus (reload bus)) an den Prozessorkern, um anzugeben, dass eine gute Cresp für den gegebenen Ladebefehl aufgetreten ist. Der Prozessorkern verwendet dann die Cresp neben dem bestehenden Mechanismus zum Überwachen der Rückgabe von angeforderten Daten, um die Abhängigkeit des Sperrbefehls von dem Ladebefehl aufzuheben. In bestimmten Fällen kann die Cresp für einen Ladebefehl mehrere hundert Prozessorzyklen vor dem Rückgeben von Daten für den Ladebefehl auftreten. Wenn die Cresp vor den Daten zurückgesendet wird, wird die Prozessorleistung verbessert, indem die Abhängigkeit des Sperrbefehls (für diesen Ladebefehl) zu dem Zeitpunkt aufgehoben wird, an dem die Cresp empfangen wird.
  • Gemäß verschiedener Ausführungsformen der vorliegenden Offenbarung wird die Tatsache, dass ein Ladebefehl zum Zeitpunkt einer Cresp in Bezug auf alle Prozessoren in einem Datenverarbeitungssystem abgearbeitet wird (da der Wert, den der Ladebefehl zurücksendet, gebunden ist, wenn die Cresp zurückgesendet wird), genutzt, um die Verarbeitung einer Befehlsfolge zu beschleunigen. Wenn eine Cresp für einen Ladebefehl zum Beispiel von einem Prozessorkern empfangen wird, bevor Daten für den Ladebefehl von dem Prozessorkern empfangen werden, können Befehle nach dem Ladebefehl, die nach einem Sperrbefehl kommen, mit dem Ausführen beginnen, bevor die Daten für den Ladebefehl bei dem Prozessorkern ankommen.
  • Mit Bezug nunmehr auf die Figuren und insbesondere mit Bezug auf 1 ist ein Übersichts-Blockschaltbild einer beispielhaften Ausführungsform einer Verarbeitungseinheit 100 gemäß der vorliegenden Offenbarung veranschaulicht. Bei der dargestellten Ausführungsform ist die Verarbeitungseinheit 100 eine einzelne integrierte Schaltung mit zwei Prozessorkernen 102a, 102b zum unabhängigen Verarbeiten von Befehlen und Daten. Jeder Prozessorkern 102 enthält eine Befehlsablaufsteuerungseinheit (instruction sequencing unit, ISU) 104, um Befehle zum Ausführen abzurufen und zu ordnen, sowie eine oder mehrere Ausführungseinheiten 106 zum Ausführen von Befehlen. Zu den von den Ausführungseinheiten 106 ausgeführten Befehlen können zum Beispiel arithmetische Festkomma- und Gleitkommabefehle, logische Befehle und Befehle gehören, die einen Lese- und Schreibzugriff auf einen Speicherblock anfordern. Die Ausführungseinheiten 106 können zum Beispiel eine oder mehrere Gleitkommaeinheiten (floating-point units, FPU), eine oder mehrere Lade-Speicher-Einheiten (load-store units, LSU) und eine oder mehrere Ganzzahleinheiten (integer units, IU) beinhalten.
  • Die Operation jedes Prozessorkerns 102a, 102b wird von einer Mehrebenen-Hierarchie flüchtiger Speicher unterstützt, die auf ihrer untersten Ebene eine oder mehrere gemeinsam genutzte Systemspeicher 132 (von denen nur ein Speicher in 1 dargestellt ist) und auf ihren oberen Ebenen eine oder mehrere Cachespeicher-Ebenen aufweist. Wie dargestellt, enthält die Verarbeitungseinheit 100 eine integrierte Speicher-Steuereinheit (integrated memory controller, IMC) 124, die den Lese- und Schreibzugriff auf einen Systemspeicher 132 als Reaktion auf Anforderungen, die von den Prozessorkernen 102a, 102b empfangen werden, und Operationen, die von Snooper 126 in einer Verbindungsstruktur (nachstehend beschrieben) überwacht (snooped) werden, steuert.
  • Bei der veranschaulichten Ausführungsform enthält die Cachespeicher-Hierarchie der Verarbeitungseinheit 100 einen Durchspeicher-Cachespeicher 108 der Ebene eins (L1) in jedem Prozessorkern 102a, 102b und einen Cachespeicher 110 der Ebene zwei (L2), der von allen Prozessorkernen 102a, 102b der Verarbeitungseinheit 100 gemeinsam genutzt wird. Der L2-Cachespeicher 110 enthält einen L2-Bereich (array) und ein Verzeichnis 114, Master 112 und Snooper 116 und kann in mehrere Sektoren konfiguriert sein. Die Master 112 leiten Transaktionen in der Verbindungsstruktur ein und greifen als Reaktion auf eine Speicherzugriffsanforderung (und andere Anforderungen), die von den zugehörigen Prozessorkernen 102a, 102b empfangen werden, auf den L2-Bereich und das Verzeichnis 114 zu. Die Snooper 116 erkennen Operationen in der Verbindungsstruktur, stellen angemessene Antworten bereit und führen etwaige von den Operationen benötigte Zugriffe auf den L2-Bereich und das Verzeichnis 114 durch. Obgleich die veranschaulichte Cachespeicher-Hierarchie nur zwei Cachespeicher-Ebenen enthält, ist Fachleuten ersichtlich, dass alternative Ausführungsformen zusätzliche Ebenen (Ebene drei (L3), Ebene vier (L4) usw.) eines Inline- oder Umsetz-Cachespeichers auf einem Chip oder außerhalb eines Chips beinhalten können, die den Inhalt der oberen Cachespeicher-Ebenen vollständig enthalten, teilweise enthalten oder nicht enthalten können.
  • Wie weiterhin in 1 dargestellt ist, beinhaltet die Verarbeitungseinheit 100 eine integrierte Verbindungslogik 120, mit der die Verarbeitungseinheit 100 mit der Verbindungsstruktur als Teil eines größeren Datenverarbeitungssystems verbunden werden kann. Bei der dargestellten Ausführungsform unterstützt die Verbindungslogik 120 eine beliebige Zahl t1 von ”erstrangigen” Verbindungsleitungen, zu denen in diesem Fall die ankommenden und abgehenden ”Y”- und ”Z”-Verbindungsleitungen gehören. Die Verbindungslogik 120 unterstützt ferner eine beliebige Zahl t2 von zweitrangigen Verbindungsleitungen, die in 1 als ankommende und abgehende ”A”- und ”B”-Verbindungsleitungen bezeichnet werden. Mit diesen erst- und zweitrangigen Verbindungsleitungen kann jede Verarbeitungseinheit 100 mit bis zu t1/2 + t2/2 (in diesem Fall fünf) anderen Verarbeitungseinheiten 100 für einen bidirektionalen Datenaustausch verbunden werden. Die Verbindungslogik 120 enthält eine Anforderungslogik (mit ”R” bezeichnet) 121a, eine Teilantwortlogik (mit ”P” bezeichnet) 121b, eine Logik einer kombinierten Antwort (mit ”C” bezeichnet) 121c und eine Datenlogik (mit ”D” bezeichnet) 121d, um Informationen während verschiedener Operationsphasen zu verarbeiten und weiterzuleiten. Die Verbindungslogik 120 beinhaltet darüber hinaus ein Konfigurationsregister (mit ”CR” bezeichnet) 123, das eine Vielzahl von Modusbits enthält, die zum Konfigurieren der Verarbeitungseinheit 100 verwendet werden. Diese Modusbits enthalten vorzugsweise: (1) einen ersten Satz von einem oder mehreren Modusbits, der eine gewünschte Zuweisung von Informationen über Verbindungsleitungen für die erst- und zweitrangigen Verbindungsleitungen auswählt; (2) einen zweiten Satz von Modusbits, der angibt, welche der erst- und zweitrangigen Verbindungsleitungen der Verarbeitungseinheit 100 mit anderen Verarbeitungseinheiten 100 verbunden sind; und (3) einen dritten Satz von Modusbits, der eine programmierbare Dauer einer Schutzfenstererweiterung festlegt.
  • Jede Verarbeitungseinheit 100 enthält weiterhin eine Instanz einer Antwortlogik 122, die einen Teil eines verteilten Kohärenzmitteilungsmechanismus ausführt, der eine Cachespeicher-Kohärenz zwischen der Cachespeicher-Hierarchie der Verarbeitungseinheit 100 und derjenigen anderer Verarbeitungseinheiten 100 aufrechterhält. Jede Verarbeitungseinheit 100 enthält schließlich eine integrierte E/A-(Eingabe/Ausgabe-)Steuereinheit 128, die die Verbindung mit einer oder mehreren E/A-Einheiten wie beispielsweise der E/A-Einheit 130 unterstützt. Die E/A-Steuereinheit 128 kann Operationen ausgeben und als Reaktion auf Anforderungen der E/A-Einheit 130 Daten auf den ”X”-, ”Y”-, ”A”- und ”B”-Verbindungsleitungen empfangen.
  • Mit Bezug nunmehr auf 2 ist ein Blockschaltbild einer beispielhaften Ausführungsform eines Datenverarbeitungssystems 200 dargestellt, das gemäß der vorliegenden Erfindung aus mehreren Verarbeitungseinheiten 100 besteht. Wie dargestellt, beinhaltet das Datenverarbeitungssystem 200 acht Verarbeitungsknoten 202a0 bis 202d0 und 202a1 bis 202d1, die jeweils als ein Multi-Chipmodul (MCM) ausgeführt werden können, das ein Paket mit vier Verarbeitungseinheiten 100 aufweist. Die Verarbeitungseinheiten 100 in jedem Verarbeitungsknoten 202 sind wie gezeigt über die ”X”-, ”Y”- und ”Z”-Verbindungsleitungen der Verarbeitungseinheiten für eine Punkt-zu-Punkt-Datenübertragung verbunden. Jede Verarbeitungseinheit 100 kann weiterhin mit Verarbeitungseinheiten 100 in zwei unterschiedlichen Verarbeitungsknoten 202 über die ”A”- und ”B”-Verbindungsleitungen der Verarbeitungseinheiten für eine Punkt-zu-Punkt-Datenübertragung verbunden sein. Obgleich jedes Paar von ”X”-, ”Y”-, ”Z”-, ”A”- und ”B”-Verbindungsleitungen in 2 mit einem Doppelpfeil veranschaulicht ist, versteht sich, dass die Paare vorzugsweise (jedoch nicht notwendigerweise) als zwei einseitig ausgerichtete Verbindungsleitungen anstatt als eine bidirektionale Verbindungsleitung ausgeführt sind.
  • Allgemeine Ausdrücke zum Bilden der in 2 gezeigten Topologie können wie folgt lauten:
    Knoten[I][K].Chip[J].Verbindungsleitung[K] verbunden mit Knoten[J][K].Chip[I].Verbindungsleitung[K] für alle I ≠ J; UND
    Knoten[I][K].Chip[I].Verbindungsleitung[K] verbunden mit Knoten[I][NICHT K].Chip[I].Verbindungsleitung[NICHT K]; UND
    Knoten[I][K].Chip[I].Verbindungsleitung[NICHT K] verbunden entweder mit:
    Nichts für eine künftige Erweiterung vorgesehen; ODER
    Knoten[extra][nicht K].Chip[I].Verbindungsleitung[K], für den Fall, dass alle Verbindungsleitungen vollständig verwendet werden (d. h. neun 8-Wege-Knoten, die ein 72-Wege-System bilden); UND
    wobei I und J zu dem Satz {a, b, c, d} gehören, UND K zu dem Satz {0, 1} gehört.
  • Es können natürlich alternative Ausdrücke definiert werden, um andere funktional gleichwertige Topologien zu bilden. Darüber hinaus ist ersichtlich, dass die gezeigte Topologie repräsentativ, jedoch nicht umfassend, Topologien eines Datenverarbeitungssystems darstellt, die die vorliegende Erfindung ausführen, und dass andere Topologien möglich sind. Bei solchen alternativen Topologien kann die Anzahl von erstrangigen und zweitrangigen Verbindungsleitungen, die mit jeder Verarbeitungseinheit 100 verbunden sind, zum Beispiel eine beliebige Anzahl sein, und die Anzahl von Prozessorknoten 202 in jedem Rang (d. h. I) muss nicht der Anzahl von Prozessoreinheiten 100 pro Verarbeitungsknoten 100 (d. h. J) entsprechen.
  • Für Fachleute ist offensichtlich, dass das SMP-Datenverarbeitungssystem 100 viele zusätzliche nicht veranschaulichte Komponenten enthalten kann wie beispielsweise Verbindungsbrücken, nichtflüchtige Speicher, Anschlüsse für die Verbindung mit Netzwerken oder angeschlossenen Einheiten usw. Da solche zusätzlichen Komponenten zum Verständnis der vorliegenden Erfindung nicht notwendig sind, sind sie in 2 nicht veranschaulicht oder werden hierin nicht näher beschrieben.
  • Mit Bezug nunmehr auf 3 ist ein Zeit-Raum-Schaubild einer beispielhaften Operation in der Verbindungsstruktur des Datenverarbeitungssystems 200 von 2 dargestellt. Die Operation beginnt, wenn ein Master 300 (z. B. ein Master 112 eines L2-Cachespeichers 110 oder ein Master in einer E/A-Steuereinheit 128) eine Anforderung 302 in der Verbindungsstruktur ausgibt. Die Anforderung 302 enthält vorzugsweise mindestens einen Transaktionstyp, der einen gewünschten Zugriffstyp angibt, und eine Ressourcenkennung (z. B. eine reale Adresse), die eine Ressource angibt, auf die durch die Anforderung zugegriffen werden soll. Zu herkömmlichen Anforderungstypen gehören die nachstehend in Tabelle I aufgeführten Typen. TABELLE I
    Anforderung Beschreibung
    READ Fordert eine Kopie des Abbildes eines Speicherblocks für Abfragezwecke
    RWITM (Read-With-Intent-To-Modify) Fordert eine eindeutige Kopie des Abbildes eines Speicherblocks mit der Absicht, dieses zu aktualisieren (zu ändern) und fordert gegebenenfalls die Zerstörung anderer Kopien
    DCLAIM (Data Claim) Fordert die Berechtigung, eine vorhandene, lediglich zur Abfrage dienende Kopie des Speicherblocks zu einer eindeutigen Kopie mit der Absicht zu machen, diese zu aktualisieren (zu ändern), und fordert gegebenenfalls die Zerstörung anderer Kopien
    DCBZ (Data Cache Block Zero) Fordert die Berechtigung, eine neue eindeutige Kopie eines Speicherblocks zu erzeugen, unabhängig von seinem gegenwärtigen Zustand, und anschließend seinen Inhalt zu ändern; fordert gegebenenfalls die Zerstörung anderer Kopien
    CASTOUT Kopiert das Abbild eines Speicherblocks von einer höheren Speicherebene in eine niedrigere Speicherebene in Vorbereitung der Zerstörung der Kopie der höheren Ebene
    WRITE Fordert die Berechtigung, eine neue eindeutige Kopie eines Speicherblocks zu erzeugen, unabhängig von seinem gegenwärtigen Zustand, und das Abbild des Speicherblocks von einer höheren Speicherebene in eine niedrigere Speicherebene in Vorbereitung der Zerstörung der Kopie der höheren Ebene sofort zu kopieren
    PARTIAL WRITE Fordert die Berechtigung, eine neue eindeutige Kopie eines Teilspeicherblocks zu erzeugen, unabhängig von seinem gegenwärtigen Zustand, und das Abbild des Teilspeicherblocks von einer höheren Speicherebene in eine niedrigere Speicherebene in Vorbereitung der Zerstörung der Kopie der höheren Ebene sofort zu kopieren
  • Weitere Einzelheiten zu diesen Operationen und ein beispielhaftes Cachespeicher-Kohärenzprotokoll, das die wirksame Verarbeitung dieser Operationen ermöglicht, sind in der US-Patentschrift Nr. 7 774 555 zu finden.
  • Die Anforderung 302 wird von den Snooper 304 empfangen, beispielsweise den Snooper 116 der L2-Cachespeicher 110 und den Snooper 126 der IMCs 124, die in dem Datenverarbeitungssystem 200 verteilt sind. Im Allgemeinen überwachen die Snooper 116 im gleichen L2-Cachespeicher 110 wie der Master 112 der Anforderung 302 die Anforderung 302 mit einigen Ausnahmen nicht (d. h., es gibt im Allgemeinen keine Selbstüberwachung), da eine Anforderung 302 nur dann in der Verbindungsstruktur übermittelt wird, wenn die Anforderung 302 nicht intern von einer Verarbeitungseinheit 100 bearbeitet werden kann. Die Snooper 304, die Anforderungen 302 empfangen und verarbeiten, stellen jeweils eine Teilantwort 306 bereit, die die Antwort von mindestens diesem Snooper 304 auf die Anforderung 302 darstellt. Ein Snooper 126 in einer IMC 124 legt die bereitzustellende Teilantwort 306 zum Beispiel auf der Grundlage fest, ob der Snooper 126 für die Anforderungsadresse zuständig ist und ob ihm Ressourcen zur Bearbeitung der Anforderung zur Verfügung stehen. Ein Snooper 116 eines L2-Cachespeichers 110 kann seine Teilantwort 306 zum Beispiel auf der Grundlage der Verfügbarkeit seines L2-Cachespeicher-Verzeichnisses 114, der Verfügbarkeit einer Überwachungslogikinstanz in dem Snooper 116 zum Verarbeiten der Anforderung und des Kohärenzzustands in Verbindung mit der Anforderungsadresse in dem L2-Cachespeicher-Verzeichnis 114 festlegen.
  • Die Teilantworten 306 der Snooper 304 werden entweder stufenweise oder alle auf einmal von einer oder mehreren Instanzen der Antwortlogik 122 verbunden, um eine systemweite kombinierte Antwort (Cresp) 310 auf die Anforderung 302 festzulegen. Bei einer Ausführungsform, von der hierin ausgegangen wird, befindet sich die Instanz der Antwortlogik 122, die für ein Erzeugen der Cresp 310 zuständig ist, in der Verarbeitungseinheit 100, die den Master 300 enthält, der die Anforderung 302 ausgegeben hat. Die Antwortlogik 122 stellt die Cresp 310 dem Master 300 und den Snooper 304 über die Verbindungsstruktur bereit, um die systemweite Antwort (z. B. Erfolg, Fehler, erneuter Versuch usw.) auf die Anforderung 302 anzugeben. Wenn die Cresp 310 einen Erfolg der Anforderung 302 angibt, kann die Cresp 310 zum Beispiel eine Datenquelle für einen angeforderten Speicherblock angeben sowie einen Cachespeicher-Zustand, in dem der angeforderte Speicherblock von dem Master 300 zwischengespeichert werden soll, und ob ”Bereinigungs”-Operationen benötigt werden, die den angeforderten Speicherblock in einem oder mehreren L2-Cachespeichern 110 ungültig machen.
  • Als Reaktion auf einen Empfang der Cresp 310 führen einer oder mehrere der Master 300 und Snooper 304 üblicherweise eine oder mehrere Operationen aus, um die Anforderung 302 zu bearbeiten. Zu diesen Operationen können Bereitstellen von Daten für den Master 300, Ungültigmachen oder auf sonstige Weise Aktualisieren des Kohärenzzustands von Daten, die in einem oder mehreren L2-Cachespeichern 110 zwischengespeichert sind, Durchführen von Castout-Operationen, Zurückschreiben von Daten in einen Systemspeicher 132 usw. gehören. Ein angeforderter oder Zielspeicherblock kann vor oder nach dem Erzeugen der Cresp 310 durch die Antwortlogik 122 zu und von dem Master 300 übermittelt werden, wenn die Anforderung 302 dies fordert.
  • In der folgenden Beschreibung werden die Teilantwort 306 eines Snooper 304 auf eine Anforderung 302 und die von dem Snooper 304 als Reaktion auf die Anforderung 302 durchgeführten Operationen und/oder seine kombinierte Antwort 310 mit Bezug darauf beschrieben, ob dieser Snooper mit Bezug auf die von der Anforderung angegebene Anforderungsadresse ein höchster Kohärenzpunkt (Highest Point of Coherency, HPC), ein niedrigster Kohärenzpunkt (Lowest Point of Coherency, LPC) oder keines von beiden ist. Ein LPC ist hierin als eine Speichereinheit oder E/A-Einheit definiert, die als Datenablage für einen Speicherblock dient. Ist kein HPC für den Speicherblock vorhanden, verwaltet der LPC das wahre Abbild des Speicherblocks und ist berechtigt, Anforderungen zum Erzeugen einer zusätzlichen zwischengespeicherten Kopie des Speicherblocks zu gewähren oder abzulehnen. Für eine typische Anforderung bei der Ausführungsform eines Datenverarbeitungssystems der 1 und 2 ist der LPC die Speicher-Steuereinheit 124 für den Systemspeicher 132, der den referenzierten Speicherblock enthält. Ein HPC ist hierin als eine eindeutig identifizierte Einheit definiert, die ein wahres Abbild des Speicherblocks zwischenspeichert (der mit dem entsprechenden Speicherblock an dem LPC übereinstimmen kann) und berechtigt ist, eine Anforderung zum Ändern des Speicherblocks zu gewähren oder abzulehnen. Anschaulich dargestellt kann der HPC als Reaktion auf eine Operation, die den Speicherblock nicht ändert, dem Anforderer auch eine Kopie des Speicherblocks bereitstellen. Für eine typische Anforderung bei der Ausführungsform des Datenverarbeitungssystems der 1 und 2 ist der HPC daher gegebenenfalls ein L2-Cachespeicher 110. Obgleich andere Indikatoren verwendet werden können, um einen HPC für einen Speicherblock zu bestimmen, wird in einer bevorzugten Ausführungsform der vorliegenden Erfindung der HPC gegebenenfalls für einen Speicherblock unter Verwendung eines oder mehrerer ausgewählter Cachespeicher-Kohärenzzustände in dem L2-Cachespeicher-Verzeichnis 114 eines L2-Cachespeichers 110 festgelegt.
  • Weiterhin mit Bezug auf 3 ist der HPC gegebenenfalls zuständig für einen in einer Anforderung 302 referenzierten Speicherblock oder ist erforderlichenfalls bei Fehlen eines HPC der LPC des Speicherblocks als Reaktion auf eine Anforderung 302 vorzugsweise zuständig für den Schutz der Übertragung der Eigentümerschaft an einem Speicherblock. Bei dem in 3 dargestellten beispielhaften Szenario schützt ein Snooper 304n an dem HPC (oder bei Fehlen eines HPC der LPC) für den durch die Anforderungsadresse der Anforderung 302 spezifizierten Speicherblock die Übertragung der Eigentümerschaft an dem angeforderten Speicherblock an den Master 300 während eines Schutzfensters 312a, das von dem Zeitpunkt an, an dem der Snooper 304n seine Teilantwort 306 festlegt, bis zu dem Zeitpunkt, an dem der Snooper 304n die Cresp 310 empfängt, dauert, und während einer nachfolgenden Fenstererweiterung 312b, die sich über eine programmierbare Zeitdauer über den Empfang der Cresp 310 durch den Snooper 304n hinaus erstreckt. Während des Schutzfensters 312a und der Fenstererweiterung 312b schützt der Snooper 304n die Übertragung der Eigentümerschaft durch Bereitstellen von Teilantworten 306 auf andere Anforderungen, die dieselbe Anforderungsadresse angeben und die andere Master davon abhalten, die Eigentümerschaft zu erlangen (z. B. eine neu versuchte Teilantwort), bis die Eigentümerschaft erfolgreich an den Master 300 übertragen wurde. Der Master 300 initialisiert ebenfalls ein Schutzfenster 313, um seine Eigentümerschaft an dem in Anforderung 302 angeforderten Speicherblock nach dem Empfang einer kombinierten Antwort 310 zu schützen.
  • Da die Snooper 304 alle begrenzten Ressourcen zum Verarbeiten der oben beschriebenen CPU- und E/A-Anforderungen haben, sind verschiedene Ebenen von Teilantworten und entsprechenden Cresps möglich. Wenn ein Snooper 126 in einer Speicher-Steuereinheit 124, die für einen angeforderten Speicherblock zuständig ist, zum Beispiel eine Warteschlange zum Verarbeiten einer Anforderung zur Verfügung hat, kann der Snooper 126 mit einer Teilantwort reagieren, die angibt, dass er als LPC für die Anforderung fungieren kann. Wenn der Snooper 126 dagegen keine Warteschlange zum Verarbeiten der Anforderung zur Verfügung hat, kann der Snooper 126 mit einer Teilantwort reagieren, die angibt, dass er der LPC für den Speicherblock ist, die Anforderung jedoch im Augenblick nicht bearbeiten kann. Ähnlich kann ein Snooper 116 in einem L2-Cachespeicher 110 eine verfügbare Instanz der Überwachungslogik und Zugriff auf das L2-Cachespeicher-Verzeichnis 114 benötigen, um eine Anforderung zu verarbeiten. Findet kein Zugriff auf eine (oder beide) dieser Ressourcen statt, führt dies zu einer Teilantwort (und entsprechenden Cresp), die mitteilt, dass ein Bearbeiten der Anforderung aufgrund des Fehlens einer benötigten Ressource nicht möglich ist.
  • Wie weiterhin in 3 veranschaulicht ist, kann der Snooper 304n Daten (für einen Ladebefehl vor einem Sperrbefehl in einer Befehlsfolge) an den Master 300 zurückgeben (d. h. den Master 112 des L2-Cachespeichers 110), bevor oder nachdem der Master 300 eine Cresp (für den Ladebefehl) von der Antwortlogik 122 empfängt bzw. empfangen hat. Wenn der Master 300 gemäß der vorliegenden Offenbarung eine Cresp von der Antwortlogik 122 empfängt, bevor der Snooper 304n die Daten zurückgibt, gibt der Master 300 die Cresp an den Verarbeitungskern 102 zurück, der seinerseits den Ladebefehl abarbeitet und dem Sperrbefehl das Abarbeiten sowie den Lade- und Speicherbefehlen nach dem Sperrbefehl den Beginn des Ausführens erlauben kann, wenn das Ausführen der Befehle nach dem Sperrbefehl noch nicht eingeleitet wurde. Wenn das Ausführen von Ladebefehlen nach dem Sperrbefehl bereits von dem Prozessor 102 vor dem Empfang der Cresp oder der Daten eingeleitet wurde, unterbricht der Prozessorkern 102 die Verwendung der Ungültigmachungsverfolgungslogik für die ausführenden Ladebefehle, die in der Befehlsfolge nach dem Sperrbefehl kommen.
  • Mit Bezug nunmehr auf 4 ist ein Zeit-Raum-Schaubild eines beispielhaften Operationsflusses in dem Datenverarbeitungssystem 200 von 2 dargestellt. In diesen Figuren sind die verschiedenen Verarbeitungseinheiten 100 in dem Datenverarbeitungssystem 200 mit zwei Positionskennungen gekennzeichnet – einer ersten Kennung, die den Verarbeitungsknoten 202 kennzeichnet, zu dem die Verarbeitungseinheit 100 gehört, und einer zweiten Kennung, die die bestimmte Verarbeitungseinheit 100 in dem Verarbeitungsknoten 202 kennzeichnet. Die Verarbeitungseinheit 100a0c bezieht sich somit zum Beispiel auf die Verarbeitungseinheit 100c des Verarbeitungsknotens 202a0. Jede Verarbeitungseinheit 100 ist darüber hinaus mit einer Funktionskennung gekennzeichnet, die ihre Funktion in Bezug auf die anderen Verarbeitungseinheiten 100 angibt, die an der Operation beteiligt sind. Zu diesen Funktionskennungen gehören: (1) ein lokaler Master (LM), der die Verarbeitungseinheit 100 kennzeichnet, die die Operation erzeugt, (2) ein lokaler Netzknoten (hub) (LH), der eine Verarbeitungseinheit 100 kennzeichnet, die sich im selben Verarbeitungsknoten 202 wie der lokale Master befindet und die für das Übermitteln der Operation an einen anderen Verarbeitungsknoten 202 zuständig ist (ein lokaler Master kann auch ein lokaler Netzknoten sein), (3) ein entfernt angeordneter Netzknoten (RH), der eine Verarbeitungseinheit 100 kennzeichnet, die sich in einem anderen Verarbeitungsknoten 202 wie der lokale Master befindet und die für das Verteilen der Operation auf andere Verarbeitungseinheiten 100 in ihrem Verarbeitungsknoten 202 zuständig ist, und (4) ein entfernt angeordneter Endknoten (leaf) (RL), der eine Verarbeitungseinheit 100 kennzeichnet, die sich in einem anderen Verarbeitungsknoten 202 wie der lokale Master befindet und die kein entfernt angeordneter Netzknoten ist.
  • Wie in 4 dargestellt ist, besteht die beispielhafte Operation wie oben mit Bezug auf 3 beschrieben aus mindestens drei Phasen, nämlich einer Anforderungs-(oder Adress-)phase, einer Teilantwortphase (Presp-Phase) und einer Phase mit einer kombinierten Antwort (Cresp-Phase). Diese drei Phasen treten in der vorstehend aufgeführten Reihenfolge auf und überschneiden sich nicht. Die Operation kann zusätzlich eine Datenphase beinhalten, die sich optional mit einer beliebigen Phase von Anforderungsphase, Teilantwortphase und Phase mit einer kombinierten Antwort überschneiden kann.
  • Weiterhin mit Bezug auf 4 beginnt die Anforderungsphase, wenn ein lokaler Master 100a0c (d. h. die Verarbeitungseinheit 100c des Verarbeitungsknotens 202a0) ein synchronisiertes Rundsenden einer Anforderung, zum Beispiel einer Leseanforderung, an jeden der lokalen Netzknoten 100a0a, 100a0b, 100a0c und 100a0d in seinem Verarbeitungsknoten 202a0 durchführt. Es sei darauf hingewiesen, dass die Liste der lokalen Netzknoten einen lokalen Netzknoten 100a0c enthält, der auch der lokale Master ist. Diese interne Übermittlung kann vorteilhaft verwendet werden, um die Operation des lokalen Netzknotens 100a0c mit den lokalen Netzknoten 100a0a, 100a0b und 100a0d zu synchronisieren, so dass Zeitbeschränkungen einfacher eingehalten werden können.
  • Als Reaktion auf ein Empfangen der Anforderung übermittelt jeder lokale Netzknoten 100, der über seine ”A”- oder ”B”-Verbindungsleitungen mit einem entfernt angeordneten Netzknoten 100 verbunden ist, die Operation an seinen/seine entfernt angeordneten Netzknoten 100. Der lokale Netzknoten 100a0a führt somit keine Übermittlung der Operation auf seiner abgehenden ”A”-Verbindungsleitung durch, sondern übermittelt die Operation über seine abgehende ”B”-Verbindungsleitung an einen entfernt angeordneten Netzknoten in dem Verarbeitungsknoten 202a1. Die lokalen Netzknoten 100a0b, 100a0c und 100a0d übermitteln die Operation über ihre jeweiligen abgehenden ”A”- und ”B”-Verbindungsleitungen an entfernt angeordnete Netzknoten in den Verarbeitungsknoten 202b0 und 202b1, den Verarbeitungsknoten 202c0 und 202c1 bzw. den Verarbeitungsknoten 202d0 und 202d1. Jeder entfernt angeordnete Netzknoten 100, der die Operation empfängt, übermittelt die Operation seinerseits an jeden entfernt angeordneten Endknoten 100 in seinem Verarbeitungsknoten 202. Der entfernt angeordnete Netzknoten 100b0a übermittelt die Operation somit zum Beispiel an die entfernt angeordneten Endknoten 100b0b, 100b0c und 100b0d. Auf diese Weise wird die Operation wirksam an alle Verarbeitungseinheiten 100 in dem Datenverarbeitungssystem 200 rundgesendet, wobei eine Übermittlung über nicht mehr als drei Verbindungsleitungen verwendet wird.
  • Nach der Anforderungsphase kommt die Teilantwortphase (Presp-Phase). In der Teilantwortphase bewertet jeder entfernt angeordnete Endknoten 100 die Operation und stellt seinem jeweiligen entfernt angeordneten Netzknoten 100 seine Teilantwort auf die Operation bereit. Die entfernt angeordneten Endknoten 100b0b, 100b0c und 100b0d übermitteln ihre jeweiligen Teilantworten zum Beispiel an den entfernt angeordneten Netzknoten 100b0a. Jeder entfernt angeordnete Netzknoten 100 übermittelt seinerseits diese Teilantworten sowie seine eigene Teilantwort an einen entsprechenden Netzknoten der lokalen Netzknoten 100a0a, 100a0b, 100a0c und 100a0d. Die lokalen Netzknoten 100a0a, 100a0b, 100a0c und 100a0d rundsenden diese Teilantworten sowie ihre eigenen Teilantworten an jeden lokalen Netzknoten 100 in dem Verarbeitungsknoten 202a0. Es sei darauf hingewiesen, dass das Rundsenden der Teilantworten durch die lokalen Netzknoten 100 in dem Verarbeitungsknoten 202a0 aus Zeitgründen das Selbstrundsenden der eigenen Teilantworten durch jeden lokalen Netzknoten 100 beinhaltet.
  • Wie ersichtlich ist, kann ein Sammeln von Teilantworten auf die dargestellte Weise unterschiedlich ausgeführt werden. Es ist zum Beispiel möglich, eine individuelle Teilantwort von jedem anderen lokalen Netzknoten, entfernt angeordneten Netzknoten und entfernt angeordneten Endknoten zurück zu jedem lokalen Netzknoten zu übertragen. Für eine größere Wirksamkeit kann es alternativ wünschenswert sein, Teilantworten zu sammeln, wenn sie zurück zu den lokalen Netzknoten übertragen werden. Um sicherzustellen, dass die Folge jeder Teilantwort genau zurück zu den lokalen Netzknoten 100 übertragen wird, wird bevorzugt, dass die Teilantworten gegebenenfalls auf nicht-zerstörerische Weise gesammelt werden, indem zum Beispiel eine logische ODER-Funktion und eine Codierung verwendet werden, bei der keine maßgeblichen Informationen verloren gehen, wenn eine solche Funktion durchgeführt wird (z. B. eine One-Hot-Codierung).
  • Wie weiterhin in 4 gezeigt wird, übersetzt die Antwortlogik 122 bei jedem lokalen Netzknoten 100 in dem Verarbeitungsknoten 202a0 die Teilantworten der anderen Verarbeitungseinheiten 100, um eine kombinierte Antwort zu erhalten, die die systemweite Antwort auf die Anforderung darstellt. Die lokalen Netzknoten 100a0a bis 100a0d rundsenden anschließend die kombinierte Antwort an alle Verarbeitungseinheiten 100 auf denselben Verteilungspfaden wie sie für die Anforderungsphase verwendet werden. Die kombinierte Antwort wird demnach zuerst an die entfernt angeordneten Netzknoten 100 rundgesendet, die ihrerseits die kombinierte Antwort an jeden entfernt angeordneten Endknoten 100 in ihren jeweiligen Verarbeitungsknoten 202 übermitteln. Der lokale Netzknoten 100a0b übermittelt die kombinierte Antwort zum Beispiel an den entfernt angeordneten Netzknoten 100b0a, der seinerseits die kombinierte Antwort an die entfernt angeordneten Endknoten 100b0b, 100b0c und 100b0d übermittelt.
  • Wie vorstehend dargelegt, kann zum Bearbeiten der Operation eine zusätzliche Datenphase erforderlich sein. Wenn es sich bei der Operation um eine Operation des Lesetyps handelt, beispielsweise eine Lese- oder RWITM-Operation, kann der entfernt angeordnete Endknoten 100b0d den angeforderten Speicherblock zum Beispiel über die Verbindungsleitungen in dem lokalen Master 100a0c hinterlegen, die den entfernt angeordnete Endknoten 100b0d mit dem entfernt angeordneten Netzknoten 100b0a, den entfernt angeordneten Netzknoten 100b0a mit dem lokalen Netzknoten 100a0b und den lokalen Netzknoten 100a0b mit dem lokalen Master 100a0c verbinden. Wenn es sich bei der Operation dagegen um eine Operation des Schreibtyps handelt, beispielsweise eine Castout-Operation des Cachespeichers, bei der ein geänderter Speicherblock zurück in den Systemspeicher 132 des entfernt angeordneten Endknotens 100b0b geschrieben wird, wird der Speicherblock über die Verbindungsleitungen übermittelt, die den lokalen Master 100a0c mit dem lokalen Netzknoten 100a0b, den lokalen Netzknoten 100a0b mit dem entfernt angeordneten Netzknoten 100b0a und den entfernt angeordneten Netzknoten 100b0a mit dem entfernt angeordneten Endknoten 100b0b verbinden.
  • Das in 4 dargestellte Szenario ist natürlich nur ein Beispiel für die unzählig vielen möglichen Operationen, die gleichzeitig in einem Mehrprozessor-Datenverarbeitungssystem wie beispielsweise dem Datenverarbeitungssystem 200 gleichzeitig auftreten können.
  • Wie vorstehend mit Bezug auf 3 beschrieben wurde, wird die Kohärenz während der ”Übergabe” der Eigentümerschaft der Kohärenz an einem Speicherblock von einem Snooper 304n an einen anfordernden Master 300 beim möglichen Vorhandensein von anderen Mastern, die um die Eigentümerschaft an demselben Speicherblock konkurrieren, durch das Schutzfenster 312a, die Fenstererweiterung 312b und das Schutzfenster 313 aufrechterhalten. Das Schutzfenster 312a und die Fenstererweiterung 312b müssen zum Beispiel zusammen von ausreichender Dauer sein, um die Übertragung der Kohärenzeigentümerschaft an dem angeforderten Speicherblock an den gewinnenden Master (WM) 300 bei Vorhandensein einer konkurrierenden Anforderung von einem konkurrierenden Master (CM) zu schützen. Um sicherzustellen, dass das Schutzfenster 312a und die Fenstererweiterung 312b von ausreichender Dauer sind, um die Übertragung der Eigentümerschaft an dem angeforderten Speicherblock an den gewinnenden Master 300 zu schützen, ist die Latenzzeit des Datenaustauschs zwischen den Verarbeitungseinheiten 100 gemäß 4 vorzugsweise so eingeschränkt, dass folgende Bedingungen erfüllt werden: A_lat(CM_S) ≤ A_lat(CM_WM) + C_lat(WM_S) + ε, wobei A_lat(CM_S) die Adresslatenzzeit eines beliebigen konkurrierenden Master (CM) bis zu dem Snooper (S) 304n ist, dem die Kohärenz des angeforderten Speicherblocks gehört, A_lat(CM_WM) die Adresslatenzzeit eines beliebigen konkurrierenden Master (CM) bis zu dem ”gewinnenden” Master (WM) 300 ist, dem die Kohärenzeigentümerschaft von dem Snooper 304n zugesprochen wird, C_lat(WM_S) die Latenzzeit der kombinierten Antwort von dem Zeitpunkt an ist, an dem die kombinierte Antwort von dem gewinnenden Master (WM) 300 empfangen wird, bis zu dem Zeitpunkt, an dem die kombinierte Antwort von dem Snooper (S) 304n empfangen wird, dem der angeforderte Speicherblock gehört, und ε die Dauer der Fenstererweiterung 312b ist.
  • Wenn die vorstehend erwähnte Zeitbeschränkung, die bei einem System mit beliebiger Topologie Anwendung findet, nicht eingehalten wird, kann die Anforderung des konkurrierenden Master (1) von dem gewinnenden Master 300 empfangen werden, bevor der gewinnende Master 300 die Kohärenzeigentümerschaft übernimmt und das Schutzfenster 312b initialisiert, und (2) von dem Snooper 304n nach dem Ende des Schutzfensters 312a und der Fenstererweiterung 312b. In solchen Fällen stellen weder der gewinnende Master 300 noch der Snooper 304n der konkurrierenden Anforderung eine Teilantwort bereit, die den konkurrierenden Master daran hindert, die Kohärenzeigentümerschaft an dem Speicherblock zu übernehmen und nichtkohärente Daten aus dem Speicher zu lesen. Um diesen Kohärenzfehler zu vermeiden, kann die Fenstererweiterung 312b jedoch programmierbar auf eine beliebige Länge (ε) eingestellt werden (z. B. durch eine entsprechende Einstellung des Konfigurationsregisters (CR) 123), um Latenzzeitabweichungen oder die Mängel einer physischen Ausführung auszugleichen, die andernfalls die Zeitbeschränkung nicht einhalten können, die zur Aufrechterhaltung der Kohärenz eingehalten werden muss. Durch Lösen der oben vorgestellten Gleichung für ε kann somit die ideale Länge der Fenstererweiterung 312b für eine beliebige Ausführung festgelegt werden.
  • Zu der vorstehend erwähnten Zeitbeschränkung können mehrere Bemerkungen angeführt werden. Erstens hat die Adresslatenzzeit von dem konkurrierenden Master bis zu dem besitzenden Snooper 304a keine erforderliche Untergrenze, sondern muss eine Obergrenze haben. Die Obergrenze wird festgelegt, indem die erreichbare Latenzzeit im schlimmsten Fall unter Berücksichtigung unter anderem der maximal möglichen Oszillatordrift, der längsten Verbindungsleitungen, die Verarbeitungseinheiten 100 verbinden, der Höchstzahl von aufgelaufenen Blockierungen und des garantierten Durchsatzes im schlimmsten Fall ermittelt wird. Um sicherzustellen, dass die Obergrenze eingehalten wird, muss die Verbindungsstruktur ein nichtblockierendes Verhalten gewährleisten.
  • Zweitens hat die Adresslatenzzeit von dem konkurrierenden Master bis zu dem gewinnenden Master 300 keine erforderliche Obergrenze, sondern muss eine Untergrenze haben. Die Untergrenze wird festgelegt durch die erreichbare Latenzzeit im günstigsten Fall unter Berücksichtigung unter anderem des Fehlens von Blockierungen, der kürzest möglichen Verbindungsleitungen zwischen Verarbeitungseinheiten 100 und der langsamsten Oszillatordrift angesichts einer bestimmten statischen Konfiguration.
  • Obgleich jeder der gewinnenden Master 300 und konkurrierenden Master für eine gegebene Operation nur eine Zeitbegrenzung für seine jeweilige Anforderung hat, ist ersichtlich, dass eine beliebige Verarbeitungseinheit 100 im Verlauf der Operation bei einigen Operationen ein gewinnender Master und bei anderen Operationen ein konkurrierender (und verlierender) Master sein kann. Jede Verarbeitungseinheit 100 hat damit tatsächlich eine Obergrenze und eine Untergrenze für ihre Adresslatenzzeit.
  • Drittens hat die Latenzzeit der kombinierten Antwort von dem Zeitpunkt an, an dem die kombinierte Antwort erzeugt wird, bis zu dem Zeitpunkt, an dem die kombinierte Antwort von dem gewinnenden Master 300 berücksichtigt wird, keine erforderliche Untergrenze (die kombinierte Antwort kann zu einem beliebigen frühen Zeitpunkt bei dem gewinnenden Master 300 ankommen), sondern muss eine Obergrenze haben. Dagegen hat die Latenzzeit der kombinierten Antwort von dem Zeitpunkt an, an dem eine kombinierte Antwort erzeugt wird, bis zu dem Zeitpunkt, an dem die kombinierte Antwort von dem Snooper 304n empfangen wird, eine Untergrenze, aber keine erforderliche Obergrenze (obgleich eine Grenze beliebig festgelegt werden kann, um die Anzahl der gleichzeitig ausgeführten Operationen zu begrenzen).
  • Viertens gibt es keine Beschränkung bei der Latenzzeit der Teilantwort. Das heißt, da alle oben aufgeführten Bedingungen der Zeitbeschränkung sich auf die Anforderungs-/Adresslatenzzeit und die Latenzzeit der kombinierten Antwort beziehen, haben die Latenzzeiten der Teilantwort der Snooper 304 und des konkurrierenden Master bis zum gewinnenden Master 300 keine erforderlichen Ober- oder Untergrenzen.
  • Die erstrangigen und zweitrangigen Verbindungsleitungen, die die Verarbeitungseinheiten 100 verbinden, können auf vielfältige Weise ausgeführt werden, um die in 2 dargestellte Topologie zu erhalten und Zeitbeschränkungen einzuhalten. Bei einem bevorzugten Ausführungsbeispiel ist jede ankommende und abgehende erstrangige (”X”, ”Y” und ”Z”) Verbindungsleitung und jede ankommende und abgehende zweitrangige (”A” und ”B”) Verbindungsleitung als ein einseitig gerichteter 8-Byte-Bus ausgeführt, der eine Reihe von unterschiedlichen virtuellen Kanälen oder Tenure-Bereichen enthält, um Adress-, Daten-, Steuer- und Kohärenzinformationen zu übertragen.
  • Um mehrere gleichzeitige Speicherzugriffsanforderungen für zwischenspeicherbare Adressen wirksam zu verarbeiten, kann jeder L2-Cachespeicher 110 mit mehreren L2-Cachespeicher-Sektoren ausgeführt werden, die jeweils die Speicherzugriffsanforderungen für einen jeweiligen Satz von realen Speicheradressen verarbeiten. Mit Bezug nunmehr auf 5 ist ein genaueres Blockschaltbild eines beispielhaften L2-Cachespeicher-Sektors 110a gemäß der vorliegenden Offenbarung veranschaulicht. Wie in 5 gezeigt, enthält der L2-Cachespeicher-Sektor 110a einen Cachespeicher-Bereich (array) 502 und ein Verzeichnis 508 des Inhalts des Cachespeicher-Bereichs 502. Obgleich dies nicht ausdrücklich veranschaulicht ist, ist der Cachespeicher-Bereich 502 vorzugsweise mit einem einzelnen Leseanschluss und einem einzelnen Schreibanschluss ausgeführt, um die zur Ausführung des Cachespeicher-Bereichs 502 benötigte Chip-Fläche zu verringern.
  • Unter der Annahme, dass der Cachespeicher-Bereich 502 und das Verzeichnis 508 wie üblich assoziativ ausgeführt sind, werden Speicherplätze in dem Systemspeicher 132 unter Verwendung festgelegter Index-Bits in den (realen) Adressen des Systemspeichers auf bestimmte Kongruenzklassen in dem Cachespeicher-Bereich 502 abgebildet. Die in den Cachespeicher-Zeilen des Cachespeicher-Bereichs 502 gespeicherten bestimmten Speicherblöcke sind in dem Cachespeicher-Verzeichnis 508 aufgezeichnet, das einen Verzeichniseintrag für jede Cachespeicher-Zeile enthält. Obgleich dies in 5 nicht ausdrücklich dargestellt ist, verstehen Fachleute, dass jeder Verzeichniseintrag in dem Cachespeicher-Verzeichnis 508 verschiedene Felder enthält, zum Beispiel ein Kennungsfeld, das die reale Adresse des Speicherblocks identifiziert, die in der entsprechenden Cachespeicher-Zeile des Cachespeicher-Bereichs 502 vorgehalten wird, ein Zustandsfeld, das den Kohärenzzustand der Cachespeicher-Zeile angibt, und ein ”Am längsten nicht verwendet”-Feld (least recently used, LRU), das eine Ersatzreihenfolge für die Cachespeicher-Zeile in Bezug auf andere Cachespeicher-Zeilen in derselben Kongruenzklasse angibt.
  • Der L2-Cachespeicher-Sektor 110a enthält mehrere (z. B. 16) Leseforderungsmaschinen (RC-Maschinen) 512a bis 512n, um Lade-(LD-) und Speicher-(ST-)Anforderungen unabhängig und gleichzeitig zu bearbeiten, die von dem verbundenen Prozessorkern 102 empfangen werden. Zumindest einige RC-Maschinen 512 können als kleinere RC-Spezialmaschinen ausgeführt sein, die weniger als alle möglichen Arten von Speicherzugriffsanforderungen verarbeiten können, die von dem verbundenen Prozessorkern 102 empfangen werden. Im Allgemeinen verkleinert ein Ausführen von RC-Spezialmaschinen auf diese Weise die für RC-Maschinen 512 vorgesehene Chip-Fläche in der Verarbeitungseinheit 100 wesentlich.
  • Gemäß einem Aspekt der vorliegenden Offenbarung sind die RC-Maschinen 512 ferner so konfiguriert, dass sie Cresps (die von der lokalen Verbindung 514 empfangen werden) für Ladebefehle über einen Multiplexer M5, der von einer Zuteilungseinheit 505 (oder einer anderen Logik) über nicht dargestellte Auswahlleitungen gesteuert werden kann, an den Kern 102 zurückgeben. Wie in 5 dargestellt, enthält der Kern 102 auch eine Lade-Speicher-Einheit (LSU) 555 (z. B. eine der Ausführungseinheiten 106), die eine Lade-Neuordnungswarteschlange (load reorder queue, LRQ) 555a und eine LRQ-Abarbeitungslogik 555b beinhaltet. Die Abarbeitungslogik 555b der LSU 555 ist so konfiguriert, dass sie einen Eintrag für einen Ladebefehl (der vor einem Sperrbefehl in einer Befehlsfolge kommt) in die LRQ 555a einfügt und den Eintrag in der LRQ 555a als Reaktion auf ein Feststellen, dass der Ladebefehl abgearbeitet ist, als abgearbeitet kennzeichnet. Die LRQ-Abarbeitungslogik 555b kann zum Beispiel einen Eintrag in der LRQ 555a als abgearbeitet kennzeichnen, indem ein oder mehrere Bits des Eintrags bestätigt werden. Gemäß der vorliegenden Offenbarung ist ein Ladebefehl abgearbeitet, wenn der Prozessorkern 102 eine gute Cresp (von dem L2-Cachespeicher-Sektor 110a über den Multiplexer M5) für den Ladebefehl oder Daten (von dem L2-Cachespeicher-Sektor 110a über den Multiplexer M3) für den Ladebefehl empfängt.
  • Um entfernt angeordnete Speicherzugriffsanforderungen zu bearbeiten, die von anderen Prozessorkernen 102 als dem verbundenen Prozessorkern 102 kommen, enthält der L2-Cachespeicher-Sektor 110a mehrere Überwachungsmaschinen (snoop machines) 511a bis 511m. Jede Überwachungsmaschine 511 kann eine entfernt angeordnete Speicherzugriffsanforderung, die von einer lokalen Verbindung 514 ”überwacht” wird, unabhängig und gleichzeitig verarbeiten.
  • Wie ersichtlich ist, kann ein Bearbeiten von Speicherzugriffsanforderungen durch RC-Maschinen 512 ein Ersetzen oder Ungültigmachen von Speicherblöcken in dem Cachespeicher-Bereich 502 erforderlich machen. Der L2-Cachespeicher-Sektor 110a enthält dementsprechend CO-Maschinen (Castout-Maschinen) 510, die ein Entfernen und Zurückschreiben von Speicherblöcken aus dem Cachespeicher-Bereich 502 verwalten.
  • Die Zuteilungseinheit 505 des L2-Cachespeicher-Sektors 110a ist weiterhin so konfiguriert, dass sie die Multiplexer M1 bis M2 steuert, um das Verarbeiten von lokalen Speicherzugriffsanforderungen zu ordnen, die von dem verbundenen Prozessorkern 102 empfangen werden, sowie von entfernt angeordneten Anforderungen, die auf der lokalen Verbindung 514 überwacht werden. Speicherzugriffsanforderungen, einschließlich lokaler Lade- und Speicheroperationen und entfernt angeordneter Lese- und Schreiboperationen, werden gemäß der von der Zuteilungseinheit 505 umgesetzten Zuteilungsrichtlinien an eine Zuteilungs-Pipeline 506 weitergeleitet, wo jede Lese/Lade- und Speicheranforderung in Bezug auf das Verzeichnis 508 und den Cachespeicher-Bereich 502 über eine gegebene Anzahl von Zyklen hinweg verarbeitet wird.
  • Der L2-Cachespeicher-Sektor 110a enthält auch eine RC-Warteschlange 520 und eine CPI-Warteschlange (CPI = Castout Push Intervention) 518, die Daten jeweils zwischenspeichern, die in den Cachespeicher-Bereich 502 eingefügt und aus diesem entfernt werden. Die RC-Warteschlange 520 beinhaltet eine Reihe von Puffereinträgen, die jeweils einer bestimmten RC-Maschine 512 entsprechen, so dass jede zugeteilte RC-Maschine 512 Daten nur aus dem gekennzeichneten Puffereintrag abruft. Die CPI-Warteschlange 518 beinhaltet ebenfalls eine Reihe von Puffereinträgen, die jeweils einer bestimmten Maschine der Castout-Maschinen 510 und der Überwachungsmaschinen 511 entsprechen, so dass jede zugeteilte CO-Maschine 510 und jeder zugeteilte Snooper 511 Daten nur aus dem gekennzeichneten CPI-Puffereintrag abruft.
  • Jeder RC-Maschine 512 ist ferner ein jeweiliger Puffer von vielen RC-Daten-(RCDAT-)Puffern 522 zugewiesen, um einen Speicherblock zwischenzuspeichern, der aus dem Cachespeicher-Bereich 502 gelesen und/oder über den Neuladebus 523 von der lokalen Verbindung 514 empfangen wurde. Der jeder RC-Maschine 512 zugewiesene RCDAT-Puffer 522 besteht vorzugsweise aus Verbindungen und Funktionalitäten, die den Speicherzugriffsanforderungen entsprechen, die von den zugehörigen RC-Maschinen 512 bearbeitet werden können. Wie nachstehend näher beschrieben wird, haben einige, jedoch nicht alle, RCDAT-Puffer 522 einen zugehörigen Speicherdaten-Multiplexer M4, der als Reaktion auf nicht dargestellte, von der Zuteilungseinheit 505 erzeugte Auswahlsignale Datenbytes unter seinen Eingaben auswählt, um diese in dem RCDAT-Puffer 522 zwischenzuspeichern.
  • In Betrieb werden Prozessor-Speicheranforderungen mit einem Transaktionstyp (TTyp), realer Zieladresse und Speicherdaten von dem verbundenen Prozessorkern 102 in einer Speicherwarteschlange (STQ) 504 empfangen. Die STQ 504 enthält auch eine Sperrverarbeitungslogik (nicht separat veranschaulicht), um Sperrbefehle zu verarbeiten (bei denen es sich im Wesentlichen um spezielle Speicherbefehle handelt). Wenn ein Sperrbefehl einen Anfang der STQ 504 erreicht (d. h., alle Speicherbefehle vor dem Sperrbefehl haben die STQ 504 durchlaufen), sendet die Sperrverarbeitungslogik eine Bestätigung (ACK) an den Prozessorkern 102 zurück, der die Sperre wie hierin weiter beschrieben aufhebt (siehe 9). Von der STQ 504 werden die Speicherdaten über den Datenpfad 524 an den Speicherdaten-Multiplexer M4 übermittelt, und der Speichertyp und die Zieladresse werden an den Multiplexer M1 weitergeleitet. Der Multiplexer M1 empfängt auch Prozessor-Ladeanforderungen von dem Prozessorkern 102 und Verzeichnis-Schreibanforderungen von den RC-Maschinen 512 als Eingaben. Als Reaktion auf die nicht dargestellten, von der Zuteilungseinheit 505 erzeugten Auswahlsignale wählt der Multiplexer M1 eine seiner Eingabeanforderungen aus, die an den Multiplexer M2 weitergeleitet wird, der zusätzlich als Eingabe eine entfernt angeordnete Anforderung empfängt, die über einen entfernt angeordneten Anforderungspfad 526 von der lokalen Verbindung 514 empfangen wird. Die Zuteilungseinheit 505 legt einen Zeitplan für ein Verarbeiten von lokalen und entfernt angeordneten Speicherzugriffsanforderungen fest und erzeugt auf der Grundlage der Zeitplanung eine Abfolge von Auswahlsignalen 528. Als Reaktion auf die von der Zuteilungseinheit 505 erzeugten Auswahlsignale 528 wählt der Multiplexer M2 entweder die vom Multiplexer M1 empfangene lokale Anforderung oder die von der lokalen Verbindung 514 überwachte entfernt angeordnete Anforderung als die nächste zu verarbeitende Speicherzugriffsanforderung aus.
  • Eine von der Zuteilungseinheit 505 zum Verarbeiten ausgewählte Anforderung wird von dem Multiplexer M2 in die Zuteilungs-Pipeline 506 gestellt. Die Zuteilungs-Pipeline 506 ist vorzugsweise als eine Pipeline festgelegter Dauer ausgeführt, bei der jede von mehreren möglichen sich überschneidenden Anforderungen A, B, C usw. für eine zuvor festgelegte Anzahl von Taktzyklen verarbeitet wird. Die Zuteilungs-Pipeline 506 kann zum Beispiel jede Anforderung für vier Zyklen verarbeiten.
  • Während eines ersten Verarbeitungszyklus in der Zuteilungs-Pipeline 506 wird eine 1-Zyklus-Verzeichnis-Leseoperation unter Verwendung der Anforderungsadresse durchgeführt, um zu ermitteln, ob die Anforderungsadresse einen Treffer oder Fehltreffer in dem Verzeichnis 508 erzielt, und ob die Speicheradresse einen Treffer in Bezug auf den Kohärenzzustand des Speicherblocks in dem Verzeichnis 508 erzielt. Die Verzeichnisinformationen, die eine Treffer/Fehltreffer-Meldung und den Kohärenzzustand des Speicherblocks enthalten, werden in einem nachfolgenden Zyklus wie beispielsweise dem vierten Zyklus von dem Verzeichnis 508 an die Zuteilungs-Pipeline 506 zurückgegeben. Wie ersichtlich ist, wird im Allgemeinen keine Maßnahme in einem L2-Cachespeicher-Sektor 110a als Reaktion auf einen Fehltreffer in Bezug auf eine entfernt angeordnete Speicherzugriffsanforderung durchgeführt; solche entfernt angeordneten Speicheranforderungen werden daher auch aus der Zuteilungs-Pipeline 506 entfernt. Bei einem Treffer oder Fehltreffer in Bezug auf eine lokale Speicherzugriffsanforderung oder einem Treffer in Bezug auf eine entfernt angeordnete Speicherzugriffsanforderung bearbeitet der L2-Cachespeicher-Sektor 110a jedoch die Speicherzugriffsanforderung, was bei Anforderungen, die nicht vollständig in der Verarbeitungseinheit 100 bearbeitet werden können, zu einem Datenaustausch über eine Struktur-Steuereinheit 516 auf der lokalen Verbindung 514 führen kann.
  • Zu einem festgelegten Zeitpunkt während des Verarbeitens der Speicherzugriffsanforderung in der Zuteilungs-Pipeline 506 übermittelt die Zuteilungseinheit 505 die Anforderungsadresse über einen Adress- und Steuerpfad 530 an den Cachespeicher-Bereich 502, um eine Cachespeicher-Leseoperation des von der Anforderungsadresse spezifizierten Speicherblocks einzuleiten. Eine Cachespeicher-Leseoperation benötigt 2 Zyklen bei der beispielhaften Ausführungsform. Der aus dem Cachespeicher-Bereich 502 gelesene Speicherblock wird über den Datenpfad 542 an die Fehlerkorrekturcode-(ECC-)Logik 544 übermittelt, die den Speicherblock auf Fehler prüft und erkannte Fehler gegebenenfalls korrigiert. Für Prozessor-Ladeanforderungen wird der Speicherblock ebenfalls über einen Datenpfad 540 an den Ladedaten-Multiplexer M3 zum Weiterleiten an den verbundenen Prozessorkern 102 übermittelt.
  • Im letzten Zyklus der Verarbeitung einer Speicherzugriffsanforderung in der Zuteilungs-Pipeline 506 macht die Zuteilungs-Pipeline 506 eine Zuteilungsfestlegung. Die Zuteilungs-Pipeline 506 kann die Zuteilungsfestlegung zum Beispiel auf der Grundlage einer Reihe von Kriterien machen, darunter (1) ein Vorhandensein einer Adresskollision zwischen der Anforderungsadresse und einer vorherigen Anforderungsadresse, die aktuell von einer Castout-Maschine 510, Überwachungsmaschine 511 oder RC-Maschine 512 verarbeitet wird, (2) die Verzeichnisinformationen und (3) die Verfügbarkeit einer RC-Maschine 512 oder Überwachungsmaschine 511, um die Speicherzugriffsanforderung zu verarbeiten. Wenn die Zuteilungs-Pipeline 506 eine Zuteilungsfestlegung macht, dass die Speicherzugriffsanforderung zugeteilt werden soll, wird die Speicherzugriffsanforderung von der Zuteilungs-Pipeline 506 einer RC-Maschine 512 oder einer Überwachungsmaschine 511 zugeteilt. Wenn die Zuteilung der Speicherzugriffsanforderung fehlschlägt, wird der Fehler dem Anforderer (z. B. dem lokalen oder entfernt angeordneten Prozessorkern 102) durch eine Neuversuch-Antwort angezeigt. Der Anforderer kann anschließend die fehlgeschlagene Speicherzugriffsanforderung gegebenenfalls erneut versuchen.
  • Während eine RC-Maschine 512 eine lokale Speicherzugriffsanforderung verarbeitet, weist die RC-Maschine 512 einen Belegt-Zustand auf und steht nicht zum Bearbeiten einer anderen Anforderung zur Verfügung. Während eine RC-Maschine 512 einen Belegt-Zustand aufweist, kann die RC-Maschine 512 eine Verzeichnis-Schreiboperation durchführen, um den entsprechenden Eintrag des Verzeichnisses 508 gegebenenfalls zu aktualisieren. Die RC-Maschine 512 kann darüber hinaus eine Cachespeicher-Schreiboperation durchführen, um die entsprechende Cachespeicher-Zeile des Cachespeicher-Bereichs 502 zu aktualisieren. Eine Verzeichnis-Schreiboperation und eine Cachespeicher-Schreiboperation können von der Zuteilungseinheit 505 während eines beliebigen Intervalls zeitlich festgelegt werden, in dem die Zuteilungs-Pipeline 506 noch nicht bereits andere Anforderungen auf der Grundlage der festen Zeitplanung von Verzeichnis-Leseoperationen und Cachespeicher-Leseoperationen verarbeitet. Wenn alle Operationen für die gegebene Anforderung beendet sind, kehrt die RC-Maschine 512 in einen Nichtbelegt-Zustand zurück.
  • Es ist offensichtlich, dass die Zeitplanung von Operationen ohne feste Zeitplanung wie beispielsweise Verzeichnis-Schreiboperationen und Cachespeicher-Schreiboperationen die Zeitplanung anderer Operationen beeinflussen kann, darunter jene Operationen, die nach einem festen Zeitplan verarbeitet werden.
  • Mit Bezug auf 6 ist ein Ablaufplan eines beispielhaften Prozesses 600 veranschaulicht, der von einer RC-Maschine 512 ausgeführt wird, die gemäß einer Ausführungsform der vorliegenden Offenbarung konfiguriert ist. Bei Block 602 wird Prozess 600 eingeleitet, wobei die Steuerung zu diesem Zeitpunkt an Block 604 übergeht. Bei Block 604 gibt die RC-Maschine 512 als Reaktion auf einen Cachespeicher-Fehltreffer in Bezug auf die Zieladresse des Ladebefehls in dem Verzeichnis 508 eine Leseoperation in der Verbindungsstruktur aus, wobei die Leseoperation einem Ladebefehl entspricht (der in einer Befehlsfolge enthalten ist, die einen Sperrbefehl nach dem Ladebefehl enthält). Als Nächstes ermittelt die RC-Maschine 512 bei dem Entscheidungsblock 606, ob Daten für die Leseoperation zum Beispiel von einem anderen L2-Cachespeicher 110 oder Systemspeicher 132 empfangen wurden. Als Reaktion auf ein Feststellen der RC-Maschine 512, dass Daten für die Leseoperation bei Block 606 empfangen wurden, geht die Steuerung von Block 606 an Block 616 über, wo die Daten für die Leseoperation (über den Multiplexer M3) an einen verbundenen Prozessorkern 102 zurückgegeben werden. Als Reaktion darauf, dass keine Daten bei Block 606 für die Leseoperation empfangen wurden, geht die Steuerung von Block 606 an den Entscheidungsblock 608 über.
  • Bei Block 608 ermittelt die RC-Maschine 512, ob eine Cresp für die Leseoperation empfangen wurde. Als Reaktion darauf, dass keine Cresp für die Leseoperation bei Block 608 empfangen wurde, geht die Steuerung von Block 608 an Block 606 über. Als Reaktion darauf, dass eine Cresp für die Leseoperation bei Block 608 empfangen wurde, geht die Steuerung von Block 608 an den Entscheidungsblock 610 über. Bei Block 610 ermittelt die RC-Maschine 512, ob die für die Leseoperation empfangene Cresp ”gut” ist, das heißt, dass die von der Leseoperation angeforderten Daten zum Beispiel von einem anderen L2-Cachespeicher 110 oder Systemspeicher 132 in dem Datenverarbeitungssystem 200 bereitgestellt werden. Als Reaktion darauf, dass die Cresp bei Block 610 nicht gut ist, geht die Steuerung von Block 610 an Block 604 über, wo die Leseoperation erneut ausgegeben wird. Als Reaktion darauf, dass die Cresp bei Block 610 gut ist, geht die Steuerung von Block 610 an Block 612 über.
  • Bei Block 612 sendet die RC-Maschine 512 (über den Multiplexer M5) eine Meldung über eine gute Cresp an den Prozessorkern 102 zurück. Als Nächstes ermittelt die RC-Maschine 512 bei dem Entscheidungsblock 614, ob Daten für die Leseoperation empfangen wurden. Als Reaktion darauf, dass keine Daten für die Leseoperation bei Block 614 empfangen wurden, geht die Steuerung in einer Schleife zu Block 614. Als Reaktion darauf, dass Daten für die Leseoperation bei Block 614 empfangen wurden, geht die Steuerung von Block 614 an Block 616 über, wo die RC-Maschine 512 die von der Leseoperation angeforderten Daten an den Prozessorkern 102 zurückgibt. Nach Block 616 geht die Steuerung an Block 618 über, wo Prozess 600 endet, bis der RC-Maschine 512 eine andere Speicherzugriffsoperation zugewiesen wird.
  • Mit Bezug auf 7 ist ein Ablaufplan eines beispielhaften Prozesses 700 veranschaulicht, der von einer Abarbeitungslogik 555b einer Lade-Neuordnungswarteschlange des Prozessorkerns der LSU 555 gemäß einer Ausführungsform der vorliegenden Offenbarung ausgeführt wird. Der Prozess 700 wird bei Block 702 eingeleitet, wobei die Steuerung zu diesem Zeitpunkt an den Entscheidungsblock 704 übergeht. Bei Block 704 erzeugt die Abarbeitungslogik 555b der LSU 555 einen Warteschlangeneintrag in einer Lade-Neuordnungswarteschlange (LRQ) 555a der LSU 555 für einen Ladebefehl, der einem Sperrbefehl in einer Befehlsfolge vorausgeht. Als Nächstes ermittelt die Abarbeitungslogik 555b der LSU 555 bei dem Entscheidungsblock 706, ob die von dem Ladebefehl angeforderten Daten empfangen wurden. Als Reaktion auf ein Feststellen bei Block 706, dass die von dem Ladebefehl angeforderten Daten noch nicht empfangen wurden, geht die Steuerung an den Entscheidungsblock 708 über. Wenn bei Block 706 jedoch festgestellt wird, dass die von dem Ladebefehl angeforderten Daten empfangen wurden, geht die Steuerung an Block 710 über.
  • Bei Block 708 ermittelt die Abarbeitungslogik 555b der LSU 555, ob eine gute Cresp für den Ladebefehl empfangen wurde. Als Reaktion auf ein Feststellen bei Block 708, dass noch keine gute Cresp empfangen wurde, geht die Steuerung an Block 706 über. Als Reaktion auf ein Feststellen bei Block 708, dass eine gute Cresp empfangen wurde, geht die Steuerung an Block 710 über. Die Abarbeitungslogik 555b der LSU 555 kennzeichnet bei Block 710 den Eintrag für den Ladebefehl in der LRQ der LSU 555 als abgearbeitet. Nach Block 710 geht die Steuerung an Block 712 über, wo Prozess 700 endet.
  • Mit Bezug auf 9 ist ein Ablaufplan eines beispielhaften Prozesses 900 zum Aufheben einer Sperre (z. B. von der LSU 555 ausgeführt) veranschaulicht. Der Prozess 900 wird als Reaktion auf das Ausführen eines Sperrbefehls ausgeführt. Der Prozess 900 wird bei Block 902 eingeleitet, wobei die Steuerung zu diesem Zeitpunkt an den Entscheidungsblock 904 übergeht. Die Abarbeitungslogik 555b der LSU 555 ermittelt bei Block 904, ob alle Ladebefehle vor dem Sperrbefehl abgearbeitet wurden. Wenn nicht alle Ladebefehle vor dem Sperrbefehl abgearbeitet wurden, geht die Steuerung in einer Schleife zu Block 904. Als Reaktion darauf, dass alle Ladebefehle vor dem Sperrbefehl bei Block 904 abgearbeitet wurden, geht die Steuerung an den Entscheidungsblock 906 über. Die Abarbeitungslogik 555b der LSU 555 ermittelt bei Entscheidungsblock 906, ob alle Speicherbefehle vor dem Sperrbefehl abgearbeitet wurden, indem ermittelt wird, ob eine ACK für den gegebenen Sperrbefehl empfangen wurde. Wenn nicht alle Speicherbefehle vor dem Sperrbefehl abgearbeitet wurden, geht die Steuerung in einer Schleife zu Block 906. Als Reaktion darauf, dass alle Speicherbefehle vor dem Sperrbefehl bei Block 906 abgearbeitet wurden, geht die Steuerung an Block 908 über. Die Abarbeitungslogik 555b der LSU 555 beendet bei Block 908 die SYNC-Operation für den Sperrbefehl, wobei zu diesem Zeitpunkt das Ausführen von Speicherzugriffsbefehlen nach dem Sperrbefehl fortgesetzt werden kann. Nach Block 908 endet Prozess 900 bei Block 910.
  • Somit wurden hierin Techniken beschrieben, die die Prozessorleistung beim Ausführen einer Befehlsfolge, die einen Sperrbefehl enthält, vorteilhaft verbessern können. Wenn zum Beispiel eine gute kombinierte Antwort für einen Ladebefehl bei einem Prozessorkern empfangen wird, bevor Daten für den Ladebefehl bei dem Prozessorkern empfangen werden, kann der Sperrbefehl als Reaktion auf die gute kombinierte Antwort aufgehoben werden, was die Prozessorleistung in bestimmten Fällen um mehrere Hundert Zyklen verbessert.
  • Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaltbildern ein Modul, Segment oder einen Teil eines Codes darstellen, das/der eine oder mehrere ausführbare Befehle zur Umsetzung der festgelegten Logikfunktion(en) aufweist. Es ist ferner darauf hinzuweisen, dass die im Block angegebenen Funktionen bei einigen alternativen Ausführungen in einer anderen Reihenfolge als in den Figuren dargestellt ablaufen können. Zwei aufeinanderfolgend dargestellte Blöcke können zum Beispiel tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach entsprechender Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Des Weiteren ist darauf hinzuweisen, dass jeder Block der Blockschaltbilder und/oder der Ablaufplandarstellung sowie Kombinationen von Blöcken in den Blockschaltbildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, die die angegebenen Funktionen oder Maßnahmen durchführen, oder durch Kombinationen von spezieller Hardware und Computerbefehlen.
  • Die hierin verwendete Terminologie dient lediglich zum Zweck des Beschreibens von speziellen Ausführungsformen und soll die Erfindung nicht einschränken. Wie hierin verwendet, sollen die Singularformen ”ein/eine/einer/eines” und ”der/die/das” ebenfalls die Pluralformen umfassen, es sei denn, der Zusammenhang zeigt eindeutig etwas anderes auf. Es versteht sich ferner, dass die Ausdrücke ”aufweisen” und/oder ”aufweisend” (und ähnliche Ausdrücke wie enthalten/beinhalten, enthaltend/beinhaltend, haben usw.) ohne Einschränkung sind, wenn sie in dieser Beschreibung verwendet werden, die Anwesenheit von angegebenen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht die Anwesenheit oder Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Die entsprechenden Strukturen, Materialien, Maßnahmen und Äquivalente aller Mittel oder Schritt-plus-Funktion-Elemente in den nachfolgenden Ansprüchen sollen alle Strukturen, Materialien oder Maßnahmen zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen umfassen, wie dies speziell beansprucht wird. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung vorgestellt, soll jedoch nicht erschöpfend oder auf die Erfindung in der offenbarten Form beschränkt sein. Für Fachleute ist offensichtlich, dass viele Änderungen und Abwandlungen möglich sind, ohne vom Umfang und Gedanken der Erfindung abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erläutern und um anderen Fachleuten ein Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen Änderungen zu ermöglichen, wie sie für die jeweils beabsichtigte Verwendung geeignet sind.
  • Nachdem die Erfindung der vorliegenden Anmeldung somit im Einzelnen und mit Bezug auf bevorzugte Ausführungsformen davon beschrieben wurde, versteht sich, dass Änderungen und Abwandlungen möglich sind, ohne vom Umfang der in den beigefügten Ansprüchen definierten Erfindung abzuweichen.

Claims (18)

  1. Verfahren zum Verarbeiten einer Befehlsfolge, die einen Sperrbefehl, einen Ladebefehl vor dem Sperrbefehl und einen nachfolgenden Speicherzugriffsbefehl nach dem Sperrbefehl enthält, wobei das Verfahren aufweist: Feststellen, durch einen Prozessorkern, dass der Ladebefehl auf der Grundlage des Empfangs, durch den Prozessorkern, einer frühesten Antwort einer guten kombinierten Antwort für eine Leseoperation abgearbeitet ist, die dem Ladebefehl und Daten für den Ladebefehl entspricht; wenn ein Ausführen des nachfolgenden Speicherzugriffsbefehls nicht vor dem Beenden des Sperrbefehls eingeleitet wird, Einleiten, durch den Prozessorkern, eines Ausführens des nachfolgenden Speicherzugriffsbefehls als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist; und wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls vor dem Beenden des Sperrbefehls eingeleitet wird, Unterbrechen, durch den Prozessorkern, des Verfolgens des nachfolgenden Speicherzugriffsbefehls im Hinblick auf ein Ungültigmachen als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist.
  2. Verfahren nach Anspruch 1, das weiterhin aufweist: Einfügen, durch den Prozessorkern, eines Eintrags für den Ladebefehl in eine Lade-Neuordnungswarteschlange; und Kennzeichnen, durch den Prozessorkern, des Eintrags in der Lade-Neuordnungswarteschlange als abgearbeitet als Reaktion auf ein Feststellen durch den Prozessorkern, dass der Ladebefehl abgearbeitet ist.
  3. Verfahren nach einem der beiden vorherigen Ansprüche, wobei es sich bei dem nachfolgenden Speicherzugriffsbefehl um einen nachfolgenden Ladebefehl handelt.
  4. Verfahren nach einem der Ansprüche 1 bis 2, wobei es sich bei dem nachfolgenden Speicherzugriffsbefehl um einen nachfolgenden Speicherbefehl handelt.
  5. Verfahren nach einem der vorherigen Ansprüche, das weiterhin aufweist, dass der Prozessorkern die gute kombinierte Antwort für die Leseoperation, die dem Ladebefehl entspricht, vor dem Empfangen der Daten für den Ladebefehl empfängt.
  6. Verfahren nach einem der Ansprüche 1 bis 4, das weiterhin aufweist, dass der Prozessorkern die gute kombinierte Antwort für die Leseoperation, die dem Ladebefehl entspricht, nach dem Empfangen der Daten für den Ladebefehl empfängt.
  7. Verfahren nach einem der vorherigen Ansprüche, wobei der Sperrbefehl beendet wird, wenn alle Lade- und Speicherbefehle vor dem Sperrbefehl abgearbeitet sind.
  8. Datenverarbeitungssystem, das so konfiguriert ist, dass es eine Befehlsfolge verarbeitet, die einen Sperrbefehl, einen Ladebefehl vor dem Sperrbefehl und einen nachfolgenden Speicherzugriffsbefehl nach dem Sperrbefehl enthält, wobei das Datenverarbeitungssystem aufweist: einen Cachespeicher; und einen Prozessorkern, der mit dem Cachespeicher verbunden ist, wobei das System ein Mittel aufweist zum: Feststellen, dass der Ladebefehl auf der Grundlage des Empfangs, durch den Prozessorkern, einer frühesten Antwort einer guten kombinierten Antwort für eine Leseoperation abgearbeitet ist, die dem Ladebefehl und Daten für den Ladebefehl entspricht; wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls nicht vor dem Beendigen des Sperrbefehls eingeleitet wird, Einleiten, durch den Prozessorkern, eines Ausführens des nachfolgenden Speicherzugriffsbefehls als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist; und wenn das Ausführen des nachfolgenden Speicherzugriffsbefehls vor dem Beenden des Sperrbefehls eingeleitet wird, Unterbrechen, durch den Prozessorkern, des Verfolgens des nachfolgenden Speicherzugriffsbefehls im Hinblick auf ein Ungültigmachen als Reaktion auf ein Feststellen, dass der Sperrbefehl beendet ist.
  9. Datenverarbeitungssystem nach Anspruch 8, wobei das System weiterhin verwendbar ist, um: einen Eintrag für den Ladebefehl in eine Lade-Neuordnungswarteschlange einzufügen; und den Eintrag in der Lade-Neuordnungswarteschlange als Reaktion auf ein Feststellen, dass der Ladebefehl abgearbeitet ist, als abgearbeitet zu kennzeichnen.
  10. Datenverarbeitungssystem nach einem der Ansprüche 8 oder 9, wobei es sich bei dem nachfolgenden Speicherzugriffsbefehl um einen nachfolgenden Ladebefehl handelt.
  11. Datenverarbeitungssystem nach einem der Ansprüche 8 oder 9, wobei es sich bei dem nachfolgenden Speicherzugriffsbefehl um einen nachfolgenden Speicherbefehl handelt.
  12. Datenverarbeitungssystem nach einem der Ansprüche 8 bis 11, das weiterhin so verwendbar ist, dass der Prozessorkern die gute kombinierte Antwort für die Leseoperation, die dem Ladebefehl entspricht, vor dem Empfangen der Daten für den Ladebefehl empfängt.
  13. Datenverarbeitungssystem nach einem der Ansprüche 8 bis 11, das weiterhin so verwendbar ist, dass der Prozessorkern die gute kombinierte Antwort für die Leseoperation, die dem Ladebefehl entspricht, nach dem Empfangen der Daten für den Ladebefehl empfängt.
  14. Datenverarbeitungssystem nach einem der Ansprüche 8 bis 13, das weiterhin verwendbar ist, um den Sperrbefehl zu beenden, wenn alle Lade- und Speicherbefehle vor dem Sperrbefehl erledigt sind.
  15. Datenverarbeitungssystem nach einem der Ansprüche 8 bis 14, wobei es sich bei dem Cachespeicher um einen Cachespeicher der Ebene zwei handelt.
  16. Datenverarbeitungssystem nach Anspruch 15, wobei der Prozessorkern eine Lade-Speicher-Einheit enthält, die eine Lade-Neuordnungswarteschlange (LRQ) beinhaltet, und die LRQ für eine Abarbeitungslogik verwendbar ist, und wobei die Abarbeitungslogik der LRQ verwendbar ist, um: einen Eintrag für den Ladebefehl in die LRQ einzufügen; und den Eintrag in der LRQ als Reaktion auf ein Feststellen, dass der Ladebefehl abgearbeitet ist, als abgearbeitet zu kennzeichnen.
  17. Computerprogrammprodukt zum Verarbeiten einer Befehlsfolge, die einen Sperrbefehl, einen Ladebefehl vor dem Sperrbefehl und einen nachfolgenden Speicherzugriffsbefehl nach dem Sperrbefehl enthält, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Befehle speichert, die von der Verarbeitungsschaltung zum Durchführen eines Verfahrens nach den Ansprüchen 1 bis 7 ausgeführt werden.
  18. Computerprogramm, das auf einem computerlesbaren Medium gespeichert ist und in den internen Speicher eines digitalen Computers ladbar ist, wobei das Computerprogramm Software-Codeteile aufweist, wenn das Programm auf einem Computer ausgeführt wird, um das Verfahren nach einem der Ansprüche 1 bis 7 durchzuführen.
DE112013000891.2T 2012-02-08 2013-01-22 Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten Ceased DE112013000891T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/369,029 2012-02-08
US13/369,029 US8935513B2 (en) 2012-02-08 2012-02-08 Processor performance improvement for instruction sequences that include barrier instructions
PCT/IB2013/050538 WO2013118008A1 (en) 2012-02-08 2013-01-22 Processor performance improvement for instruction sequences that include barrier instructions

Publications (1)

Publication Number Publication Date
DE112013000891T5 true DE112013000891T5 (de) 2014-10-16

Family

ID=48903964

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000891.2T Ceased DE112013000891T5 (de) 2012-02-08 2013-01-22 Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten

Country Status (8)

Country Link
US (2) US8935513B2 (de)
CN (1) CN104106043B (de)
AU (1) AU2013217351B2 (de)
DE (1) DE112013000891T5 (de)
GB (1) GB2513509B (de)
IL (1) IL232812A (de)
SG (1) SG11201402452VA (de)
WO (1) WO2013118008A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9037669B2 (en) 2012-08-09 2015-05-19 International Business Machines Corporation Remote processing and memory utilization
US10152450B2 (en) * 2012-08-09 2018-12-11 International Business Machines Corporation Remote processing and memory utilization
US9058273B1 (en) 2013-12-20 2015-06-16 International Business Machines Corporation Frequency determination across an interface of a data processing system
US9495312B2 (en) 2013-12-20 2016-11-15 International Business Machines Corporation Determining command rate based on dropped commands
US20150331608A1 (en) * 2014-05-16 2015-11-19 Samsung Electronics Co., Ltd. Electronic system with transactions and method of operation thereof
CN108139903B (zh) * 2015-07-21 2019-11-15 安培计算有限责任公司 依dmb操作用加载/存储操作实施加载撷取/存储释放指令
GB2541400B (en) * 2015-08-17 2017-11-15 Advanced Risc Mach Ltd Tracing of exception handling events
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10223436B2 (en) * 2016-04-27 2019-03-05 Qualcomm Incorporated Inter-subgroup data sharing
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
CN107688853B (zh) 2016-08-05 2020-01-10 中科寒武纪科技股份有限公司 一种用于执行神经网络运算的装置及方法
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US11263143B2 (en) 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
US11204867B2 (en) * 2017-09-29 2021-12-21 Intel Corporation PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory
US10733103B2 (en) 2017-12-13 2020-08-04 International Business Machines Corporation Non-blocking directory-based cache coherence
US11119927B2 (en) 2018-04-03 2021-09-14 International Business Machines Corporation Coordination of cache memory operations
US10824567B2 (en) 2018-12-04 2020-11-03 International Business Machines Corporation Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead
US11507379B2 (en) * 2019-05-31 2022-11-22 Marvell Asia Pte, Ltd. Managing load and store instructions for memory barrier handling
US11194574B2 (en) * 2019-07-25 2021-12-07 Arm Limited Merging memory ordering tracking information for issued load instructions
US11449339B2 (en) * 2019-09-27 2022-09-20 Red Hat, Inc. Memory barrier elision for multi-threaded workloads
CN112579174B (zh) * 2020-12-05 2023-01-31 西安翔腾微电子科技有限公司 一种多周期双发射指令可发射的检测电路及方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07302200A (ja) * 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
DE69423206T2 (de) * 1994-04-28 2000-09-07 Hewlett Packard Co Rechnervorrichtung mit Mitteln zum Erzwingen der Ausführung von Befehlen in regelmässiger Folge
US5666506A (en) * 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
US5881264A (en) * 1996-01-31 1999-03-09 Kabushiki Kaisha Toshiba Memory controller and memory control system
US6029204A (en) * 1997-03-13 2000-02-22 International Business Machines Corporation Precise synchronization mechanism for SMP system buses using tagged snoop operations to avoid retries
US6088771A (en) * 1997-10-24 2000-07-11 Digital Equipment Corporation Mechanism for reducing latency of memory barrier operations on a multiprocessor system
US6122728A (en) * 1998-02-02 2000-09-19 Compaq Computer Corporation Technique for ordering internal processor register accesses
US6175930B1 (en) 1998-02-17 2001-01-16 International Business Machines Corporation Demand based sync bus operation
US6065086A (en) 1998-02-17 2000-05-16 International Business Machines Corporation Demand based sync bus operation
US6484230B1 (en) * 1998-09-28 2002-11-19 International Business Machines Corporation Method and system for speculatively processing a load instruction before completion of a preceding synchronization instruction
JP3858492B2 (ja) * 1998-12-28 2006-12-13 株式会社日立製作所 マルチプロセッサシステム
US6625720B1 (en) * 1999-08-17 2003-09-23 Nec Electronics, Inc. System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
US6963967B1 (en) 2000-06-06 2005-11-08 International Business Machines Corporation System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture
US6691220B1 (en) 2000-06-06 2004-02-10 International Business Machines Corporation Multiprocessor speculation mechanism via a barrier speculation flag
US6606702B1 (en) 2000-06-06 2003-08-12 International Business Machines Corporation Multiprocessor speculation mechanism with imprecise recycling of storage operations
US6609192B1 (en) 2000-06-06 2003-08-19 International Business Machines Corporation System and method for asynchronously overlapping storage barrier operations with old and new storage operations
US6625660B1 (en) * 2000-06-06 2003-09-23 International Business Machines Corporation Multiprocessor speculation mechanism for efficiently managing multiple barrier operations
US6728873B1 (en) 2000-06-06 2004-04-27 International Business Machines Corporation System and method for providing multiprocessor speculation within a speculative branch path
US6748518B1 (en) 2000-06-06 2004-06-08 International Business Machines Corporation Multi-level multiprocessor speculation mechanism
US6725340B1 (en) * 2000-06-06 2004-04-20 International Business Machines Corporation Mechanism for folding storage barrier operations in a multiprocessor system
US6460124B1 (en) * 2000-10-20 2002-10-01 Wisconsin Alumni Research Foundation Method of using delays to speed processing of inferred critical program portions
US6795878B2 (en) * 2000-12-11 2004-09-21 International Business Machines Corporation Verifying cumulative ordering of memory instructions
WO2005121948A1 (en) 2004-06-02 2005-12-22 Sun Microsystems, Inc. Method and apparatus for enforcing membar instruction semantics in an execute-ahead processor
US7680989B2 (en) * 2005-08-17 2010-03-16 Sun Microsystems, Inc. Instruction set architecture employing conditional multistore synchronization
TWI348652B (en) 2005-10-17 2011-09-11 Via Tech Inc Driver assisted asynchronous command processing
CN1952900A (zh) 2005-10-20 2007-04-25 中国科学院微电子研究所 可编程通用多核处理器芯片上处理器之间程序流同步方法
GB0623276D0 (en) * 2006-11-22 2007-01-03 Transitive Ltd Memory consistency protection in a multiprocessor computing system
US7991981B2 (en) * 2008-02-01 2011-08-02 International Business Machines Corporation Completion of asynchronous memory move in the presence of a barrier operation
US8285937B2 (en) * 2010-02-24 2012-10-09 Apple Inc. Fused store exclusive/memory barrier operation

Also Published As

Publication number Publication date
US9274856B2 (en) 2016-03-01
CN104106043A (zh) 2014-10-15
AU2013217351B2 (en) 2016-04-28
SG11201402452VA (en) 2014-06-27
IL232812A0 (en) 2014-07-31
IL232812A (en) 2017-06-29
AU2013217351A1 (en) 2014-08-14
GB2513509B (en) 2015-01-14
WO2013118008A1 (en) 2013-08-15
US20130205120A1 (en) 2013-08-08
GB2513509A (en) 2014-10-29
US20130205121A1 (en) 2013-08-08
CN104106043B (zh) 2017-09-08
US8935513B2 (en) 2015-01-13
GB201414381D0 (en) 2014-09-24

Similar Documents

Publication Publication Date Title
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69721891T2 (de) Deterministisches Kohärenzprotokoll für verteilten Multicache-Speicher
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE102007048507B4 (de) Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers
DE60215417T2 (de) Netzwerkschaltung
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE112017001959T5 (de) Cachespeicher-Zugriff
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE112013000889T5 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE112005002180T5 (de) Lösen von Cachekonflikten
DE102007012058A1 (de) Synchronisieren von Neuheitsinformation in einer inklusiven Cache-Hierarchie
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE60311302T2 (de) Verfahren und vorrichtung zur verriegelung von mehreren clustern
DE102013204414A1 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final