DE112006002237T5 - Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem - Google Patents

Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem Download PDF

Info

Publication number
DE112006002237T5
DE112006002237T5 DE112006002237T DE112006002237T DE112006002237T5 DE 112006002237 T5 DE112006002237 T5 DE 112006002237T5 DE 112006002237 T DE112006002237 T DE 112006002237T DE 112006002237 T DE112006002237 T DE 112006002237T DE 112006002237 T5 DE112006002237 T5 DE 112006002237T5
Authority
DE
Germany
Prior art keywords
addresses
address
count
command
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112006002237T
Other languages
English (en)
Other versions
DE112006002237B4 (de
Inventor
Mitchell K. Austin Alsup
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE112006002237T5 publication Critical patent/DE112006002237T5/de
Application granted granted Critical
Publication of DE112006002237B4 publication Critical patent/DE112006002237B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control 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/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/3017Runtime instruction translation, e.g. macros
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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

Landscapes

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

Abstract

Verfahren mit:
Anfordern eines exklusiven Zugriffs auf eine vorgegebene Speicherressource durch einen Prozessor (18A, 18B), wobei die Anforderung eine oder mehrere Adressen enthält, die mit der vorgegebenen Speicherressource verknüpft sind;
Vergleichen jeder der einen oder mehreren Adressen mit jeder Adresse von mehreren Gruppen aus Adressen, wobei jede Adresse der mehreren Gruppen aus Adressen einer jeweiligen Speicherressource entspricht, für die einer Anforderungseinheit ausschließlicher Zugriff gewährt wurde; und
in Reaktion darauf, dass eine Adresse der einen oder mehreren Adressen mit einer Adresse der mehreren Gruppen aus Adressen übereinstimmt, Zurückgeben eines Zählwertes, der mit der übereinstimmenden Adresse verknüpft ist, wobei der Zählwert kennzeichnend ist für eine Anzahl an Anforderungseinheiten, die im Hinblick auf die übereinstimmende Adresse in Konkurrenz zueinander stehen.

Description

  • Hintergrund der Erfindung
  • Technisches Gebiet
  • Diese Erfindung betrifft im Mikroprozessoren und betrifft insbesondere die Prozesssynchronisierung zwischen Prozessoren in einem Mehrprozessorensystem.
  • Hintergrund der Erfindung
  • Das Leistungsvermögen von modernen Mikroprozessoren hat sich stetig und in den vergangenen 10 Jahren dramatisch verbessert. Zu einem gewissen Grade werden die Leistungssteigerungen der größeren Arbeitsfrequenz und ferner einer Technik zugeordnet, die als tiefes Vektorverarbeiten bzw. tiefe Pipelineverarbeitung bekannt ist. Allgemein gesagt, betrifft die tiefe Pipelineverarbeitung bzw. Vektorverarbeitung das Verwenden von Befehlsvektorverfahren mit vielen Stufen, wobei jede Stufe weniger arbeitet, wodurch die gesamte Vektorverarbeitungskette bei einer höheren Geschwindigkeit arbeiten kann. Diese Technik hat sich in der Industrie gut bewährt. Jedoch gibt es Nachteile im Hinblick auf eine erhöhte Frequenz und die tiefe Vektorarbeitung bzw. Pipelineverarbeitung. Beispielsweise können die Taktsignalverzögerung und die Leistungsaufnahme bei hoher Arbeitsfrequenz beträchtlich sein. Die physikalischen Grenzen, die durch das thermische Budget auf Systemebene auferlegt werden, und die zunehmende Schwierigkeit bei der Handhabung der Taktsignalverzögerung sind Zeichen dafür, dass die praktischen Grenzen der Technik unmittelbar bevorstehen. Daher wird in der Industrie nach einer Leistungssteigerung gesucht, wobei andere Techniken eingesetzt werden. Eine Art an Technologie zur Steigerung der Leistung ist die Verwendung von Prozessoren mit mehreren Kernen und insbesondere die Mehrfachverarbeitung.
  • Wenn Computersysteme Mehrfachverarbeitungsschemata mit immer mehr Prozessoren (beispielsweise Verarbeitungskerne) verwenden, wird die Anzahl der anfordernden Einheiten, die einander stören können oder die auf die gleichen Speicherdaten zugreifen, sich in einem Maße erhöht, so dass konventionelle Verfahren zur Prozesssynchronisierung nicht mehr ausreichend sind. Wenn beispielsweise eine geringe Anzahl an Prozessoren eine Ressource beanspruchen, bieten einfache Verriegelungsstrukturen ein adäquates Leistungsverhalten für kritische Abschnitte der Codierung. Beispielsweise können verriegelte Arithmetikoperationen in Speicherquellen ausreichend sein. Wenn das Ausmaß der Mehrfachverarbeitung anwächst, sind diese einfachen Schemata zunehmend weniger effizient. Zu diesem Zweck enthalten modernere Prozessoren Zusätze für den Befehlssatz, wozu Hardwaresynchronisierungsgrundelemente (beispielsweise CMPXCHG, CMPXCHG8B und CMPXCHG16B) gehören, die auf einer atomaren Aktualisierung einer einzelnen Speicherstelle beruhen. Jedoch wird nunmehr der Bereich beschritten, in welchem selbst diese Hardwaregrundelemente nicht mehr den Grad an Leistung bereitstellen, die in Hochleistungsmultiprozessoren mit einer großen Anzahl an Prozessoren erforderlich ist.
  • In vielen konventionellen Prozessoren werden Synchronisierverfahren auf der Grundlage eines optimistischen Modells eingesetzt. D. h., beim Betrieb in einer Multiprozessorumgebung sind diese konventionellen Prozessoren so gestaltet, dass diese unter der Annahme arbeiten, dass sie eine Synchronisierung erreichen können, indem wiederholt die Synchronisationscodierung abgearbeitet wird, bis keine Störung mehr erkannt wird, und anschließend erklären die Prozessoren, dass eine Synchronisierung erreicht ist. Diese Art der Synchronisierung kann zu einer unerwünschten Zeitverschwendung führen, insbesondere wenn viele Prozessoren dies bei dem gleichen Synchronisierereignis versuchen, da nicht mehr als ein einzelner Prozessor zu einer gegebenen Zeit erfolgreich ist. Daher sind andere Synchronisierverfahren wünschenswert.
  • Überblick über die Erfindung
  • Es sind diverse Ausführungsformen eines Verfahrens zum Bereitstellen einer selbstinitiierenden Synchronisierung in einem Computersystem offenbart. In einer Ausführungsform umfasst das Verfahren: Anfordern eines ausschließlichen Zugriffs auf eine gegebene Speicherressource durch einen Prozessor. Die Anforderung kann eine oder mehrere Adressen enthalten, die mit der gegebenen Speicherressource verknüpft sind. Das Verfahren umfasst ferner das Vergleichen jeder Adresse in der Anforderung mit jeder Adresse in mehreren Adressensätzen bzw. Gruppen aus Adressen Jede Adresse in den Adressensätzen entspricht einer jeweiligen Speicherressource, für die eine Anforderungseinheit den ausschließlichen Zugriff erhalten soll. In Reaktion, dass eine Adresse der einen oder mehreren Adressen mit einer Adresse der mehreren Adressensätze übereinstimmt, die einem weite ren Prozessor oder Prozessoren bereits zugewiesen ist, umfasst das Verfahren das Zurückgeben eines Zählwertes, der mit dem Satz mit der übereinstimmenden Adresse verknüpft ist. Der Zählwert gibt die Anzahl der Anforderungseinheiten an, die um die übereinstimmende Adresse(n) im Wettbewerb sind.
  • In einer speziellen Ausführungsform umfasst das Verfahren das Zurückgeben eines Durchgangszählwertes von 0 in Reaktion, dass keine Adresse der einen oder mehreren Adressen mit einer Adresse in den mehreren Adressensätzen übereinstimmt.
  • In einer weiteren Ausführungsform umfasst ein Computersystem einen oder mehrere Prozessoren, die miteinander und mit einem oder mehreren Speichern verbunden sind. Jeder der Prozessoren führt Befehle aus, um einen exklusiven Zugriff auf eine gegebene Speicherressource anzufordern. Die Anforderung enthält eine oder mehrere Adressen, die mit der gegebenen Speicherressource verknüpft sind. Das Computersystem umfasst ferner eine Synchronisierverteileinheit, die jede der Adressen in der Anforderung mit jeder Adresse in mehreren Adressensätzen vergleicht. Jede Adresse in den mehreren Adressensätzen entspricht einer jeweiligen Speicherressource, auf die eine Anforderungseinheit exklusiven Zugriff hat. Die Synchronisierverteilungseinheit gibt einen Zählwert zurück, der mit dem Satz verknüpft ist, der die übereinstimmende Adresse aufweist, in Reaktion darauf, dass eine Adresse der einen oder mehreren Adressen mit einer Adresse der mehreren Adressensätze übereinstimmt. Der Zählwert ist kennzeichnend für eine Anzahl an Anforderungseinheiten, die um die überreinstimmende Adresse im Wettbewerb liegen.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist eine Blockansicht einer Ausführungsform eines Computersystems.
  • 2 ist eine Blockansicht, in der weitere Details einer Ausführungsform eines Verarbeitungsknotens aus 1 gezeigt sind.
  • 3 ist ein Flussdiagramm, das die Funktion einer Ausführungsform des in 1 und 2 gezeigten Computersystems zeigt.
  • 4 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform des in 1 und 2 gezeigten Computersystems in Reaktion auf das Empfangen einer Kohärenzinvalidierungsanfrage beschreibt.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind dennoch spezielle Ausführungsformen beispielhaft in den Zeichnungen gezeigt und sind im Weiteren detailliert beschrieben. Es sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte Beschreibung nicht beabsichtigen, die Erfindung auf die spezielle offenbarte Form einzuschränken, sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente und Alternativen abdecken, die innerhalb des Grundgedankens und Schutzbereichs der vorliegenden Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert ist. Zu beachten ist, dass der Begriff "kann" in dieser Anmeldung durchgängig in einem „möglichen" Sinne (d. h., hat die Möglichkeit zu, ist in der Lage zu) anstatt im Sinne von ist erforderlich (d. h. muss) verwendet ist.
  • Art bzw. Arten zum Ausführen der Erfindung
  • Um den Aufbau von leistungsfähigen Synchronisierverfahren in Software zu ermöglichen, wird ein Satz aus Befehlen, der als eine fortschrittliche Synchronisierungseinrichtung bezeichnet wird, verwendet. Die Einrichtung kann den Aufbau einer nicht-blockierenden Synchronisierung, einer wartefreien Synchronisierung, eines Transaktionsspeichers zusammen mit dem Aufbau diverser Formen von Vergleichs- und Austauschgrundeinheiten ermöglichen, die typischerweise beim Aufbau dieser Verfahren eingesetzt werden. Die Einrichtung erlaubt das Ausbilden (in Software) einer großen Vielfalt an Synchronisiergrundeinheiten.
  • Ferner kann die fortschrittliche Synchronisiereinrichtung Software zur Programmierung einer großen Vielfalt an Synchronisierarten ermöglichen. Jede Synchronisierart kann direkt angeben: Die Cache-Zeilen, die für einen erfolgreichen Abschluss erforderlich sind, einen Sequenzpunkt, an dem der Fehler den Steuerungsablauf umlenken können, einen Datenmodifizierabschnitt, an dem das Ergebnis des erfolgreichen kritischen Abschnitts ausgeführt wird, und einen Sequenzpunkt, an dem der Erfolg für den Rest des Systems sichtbar ist, so dass die gesamte Sequenz aus Befehlen als atomar erscheint.
  • Somit kann die Funktion der fortschrittlichen Synchronisiereinrichtung das Erhalten und Freigeben mehrerer Cache-Zeilen mit Schreiberlaubnis, die mit einem kritischen Abschnitt verknüpft sind, im Wesentlichen gleichzeitig aus der Sicht durch andere Prozessoren/Kerne ermöglichen. Dieser Prozess wird als eine Linearisierung bezeichnet. Nach der Datennahme können diverse Modifizierungen ausgeführt werden, bevor eine andere interessierte Partei eine der Modifizierungen an einer der spezifizierten mehreren Cache-Zeilen beobachtet. Zwischen der Datennahme bzw. in Besitznahme der Daten und der Freigabe dürfen keine anderen Prozessoren diese gleichen Zeilen manipulieren (beispielsweise eine Schreiberlaubnis besitzen). Ein ähnliches Verfahren könnte ausgeführt sein, indem keine Nachrichten „Quelle fertig" für die zugehörigen Zeilen gesendet wird, wodurch gleichzeitige Zugriffe vermieden werden. Jedoch führen diese Lösungen zu einer gegenseitigen Blockade und/oder einer aktiven Blockierung oder zu Laufzeitfehlern. Somit umfasst ein Computersystem Prozessoren und Prozessorkerne, die die fortschrittliche Synchronisiereinrichtung einrichten, wie dies nachfolgend beschrieben ist.
  • 1 zeigt eine Ausführungsform eines Computersystems 100. Das Computersystem 100 umfasst mehrere Verarbeitungsknoten 312A, 312B, 312C und 312D. Jeder Verarbeitungsknoten 312A bis 312D ist mit einem entsprechenden Speicher 314A bis 314D über eine Speichersteuerung 316A bis 316D verbunden, die in jedem entsprechenden Verarbeitungsknoten 312A bis 312D vorgesehen ist. Des weiteren enthalten die Verarbeitungsknoten 312A bis 312D eine Schnittstellenlogik (IF), die zu Kommunikation zwischen den Verarbeitungsknoten 312A bis 312D verwendet wird. Beispielsweise enthält der Verarbeitungsknoten 312A eine Schnittstellenlogik 318A zur Kommunikation mit dem Verarbeitungsknoten 312B, eine Schnittstellenlogik 318B zur Kommunikation mit dem Verarbeitungsknoten 312C und eine dritte Schnittstellenlogik 318C zur Kommunikation mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise enthält der Verarbeitungsknoten 312B Schnittstellenlogiken 318D, 318E und 318F; der Verarbeitungsknoten 312C enthält Schnittstellenlogiken 318G, 318H und 318I; und der Verarbeitungsknoten 312D enthält Schnittstellenlogiken 318J, 318K und 318L. Der Verarbeitungsknoten 312D ist ausgebildet, mit mehreren Eingabe/Ausgabe-Geräten (beispielsweise die Geräte 320A bis 320B in einer Prioritätskettenanordnung) über die Schnittstellenlogik 318L zu kommunizieren. Andere Verarbeitungsknoten können mit anderen I/O-Geräten in ähnlicher Weise in Verbindung treten. Prozessoren können diese Schnittstelle verwenden, um auf Speicher zuzugreifen, die mit anderen Prozessoren in dem System verknüpft sind. Es ist zu beachten, dass eine Kompo nente, die eine Bezugszahl gefolgt von einem Buchstaben zugewiesen hat, im Allgemeinen auch lediglich durch die Zahl allein bezeichnet wird, wenn dies angebracht ist. Wenn beispielsweise im Allgemeinen auf die Verarbeitungsknoten verwiesen wird, wird der Ausdruck Verarbeitungsknoten 312 verwendet.
  • Die Verarbeitungsknoten 312 implementieren eine paketbasierte Verbindung für die Kommunikation zwischen den Verarbeitungsknoten. In der dargestellten Ausführungsform wird die Verbindung als Gruppen aus unidirektionalen Leitungen (beispielsweise ihren Leitungen 324A zum Senden von Paketen von dem Verarbeitungsknoten 321A zu dem Verarbeitungsknoten 312B und Leitungen 324B zum Senden von Paketen von dem Verarbeitungsknoten 312B zu dem Verarbeitungsknoten 312A verwendet). Es werden andere Leitungsgruppen 324C bis 324H verwendet, um Pakete zwischen anderen Verarbeitungsknoten auszutauschen, wie in 1 gezeigt ist. Im Allgemeinen enthält jede Gruppe aus Leitungen 324 eine oder mehrere Datenleitungen, eine oder mehrere Taktleitungen entsprechend den Datenleitungen und eine oder mehrere Steuerleitungen, die die Art des übertragenen Pakets angegeben. Die Verbindung kann mit einer mit dem Cache-kohärenten Weise zur Kommunikation zwischen dem Verarbeitungsknoten betrieben werden oder in einer nicht-kohärenten Weise zur Kommunikation zwischen einem Verarbeitungsknoten und einem I/O-Gerät (oder einer Busbrücke für einen I/O-Bus mit konventionellem Aufbau, etwa dem PCI-Bus oder ISA-Bus).
  • Des weiteren kann die Verbindung in einer nicht-kohärenten Weise unter Anwendung einer Prioritätskettenstruktur zwischen den I/O-Geräten betrieben werden, wie dies gezeigt ist (beispielsweise 320A und 320B). Zu beachten ist, dass in einer beispielhaften Ausführungsform die Verbindung als eine kohärente Hypertransport-Verbindung oder eine nicht-kohärente Hypertransportverbindung eingerichtet wird, obwohl in anderen Ausführungsformen auch andere Verbindungen möglich sind.
  • Die I/O-Geräte 320A bis 320B sind beliebige geeignete I/O-Geräte. Beispielsweise umfassen die I/O-Geräte 320A bis 320B Geräte für Kommunikation mit einem weiteren Computersystem, mit dem die Geräte verbunden sind (beispielsweise Netzwerkschnittstellenkarten oder Modems). Ferner können die I/O-Geräte 320A bis 320B Videobeschleuniger, Audiokarten, Festplatten oder Diskettenlaufwerte oder Laufwerkssteuerungen, SCSI (Kleincomputersystemschnittstellen-) Adapter und Telefonkarten, Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB oder Feldbusschnittstellenkarten umfassen. Zu beachten ist, dass der Begriff „I/O-Gerät bzw. Eingabe/Ausgabe-Gerät" und der Begriff „peripheres Gerät" hierin gleichbedeutend verwendet sind.
  • Die Speicher 314A bis 314D umfassen beliebige geeignete Speichereinrichtungen. Beispielsweise umfasst ein Speicher 314A bis 314D einen oder mehrere RAMBUS DRAM's (RDRAM's), synchrone DRAM's (SDRAM's), DDR SDRAM's, statische RAM, etc. Der Speicheradressenraum des Computersystems 300 ist auf die Speicher 314A bis 314D aufgeteilt. Jeder Verarbeitungsknoten 312A bis 312D besitzt eine Speicherkarte, die verwendet wird, um zu bestimmen, welche Adressen welchen Speichern 314A bis 314D zugeordnet sind, um somit ist festgelegt, welchem Verarbeitungsknoten 312A bis 312D eine Speicheranforderung für eine spezielle Adresse zuzuleiten ist. Die Speichersteuerungen 316A bis 316D enthalten eine Steuerschaltung zur Kommunikation mit den Speichern 314A bis 314D. Des weiteren enthalten die Speichersteuerungen 316A bis 316D Anforderungswarteschlangen zum Aufreihen von Speicheranforderungen. Die Speicher 314A bis 314D können eine Codierung speichern, die von den Prozessoren ausführbar ist, um damit die Funktion einzurichten, wie sie in den vorhergehenden Abschnitten beschrieben ist.
  • Zu beachten ist, dass ein von einem Verarbeitungsknoten zu einem weiteren zu sendendes Paket durch eine oder mehrere Zwischenknoten laufen kann. Beispielsweise kann ein von dem Verarbeitungsknoten 312A zu dem Verareitungsknoten 312A zu dem Verarbeitungsknoten 312D zu sendendes Paket durch den Verarbeitungsknoten 312B oder dem Verarbeitungsknoten 312C laufen, wie dies in 1 gezeigt ist. Es kann ein beliebiger geeigneter Weiterleitungsalgorithmus eingesetzt werden. In anderen Ausführungsformen des Computersystems 100 sind mehr oder weniger Verarbeitungsknoten verwendet, als dies in der Ausführungsform der 1 gezeigt ist. Im Allgemeinen werden die Pakete als eine oder mehrere Bitseiten auf den Leitungen 324 zwischen den Knoten übertragen. Eine Bitzeit kann die ansteigende oder abfallende Flanke des Taktsignals auf den entsprechenden Taktleitungen sein. Die Pakete können Befehlspakete zum Initiieren von Transaktionen, Sondierungs- bzw. Abfragepakete für das Beibehalten der Cache-Kohärenz und Antwortpakete aus entsprechenden Anfragen und Befehlen sein.
  • In einer Ausführungsform enthalten die Verarbeitungsknoten 312 zusätzlich einen oder mehrere Prozessorkerne (in 2 gezeigt). Zu beachten ist, dass die Prozesskerne in je dem Verarbeitungsknoten über interne paketbasierte Verbindungen, die in einer Cache-kohärenten Weise betrieben werden, in Verbindung treten können. Des weiteren ist zu beachten, dass Prozessorkerne und die Verarbeitungsknoten 312 so ausgebildet sein können, dass sie einige (oder alle) der Speicher 314 gemeinsam nutzen.
  • In einer Ausführungsform ist in einem oder mehreren der Prozessorkerne die x86-Architektur eingerichtet, obwohl auch andere Architekturen möglich und hierin mit eingeschlossen sind. Eine Befehlsdecodierlogik in jedem der diversen Prozessorkerne ist ausgebildet, Befehle zu markieren, die eine LOCK- bzw. Verriegelungspräfix verwenden. Wie ferner nachfolgend beschrieben ist, kann die Prozessorkernlogik Hardware enthalten (in 2 gezeigt), die eine Erkennung der mit dem „verriegelten" Befehlen verknüpften Markierungen ermöglicht. Diese Hardware ermöglicht die Verwendung des LOCK-Befehlspräfix, um kritische Abschnitte an Codierung als Teil der fortschrittlichen Synchronisiereinrichtung zu kennzeichnen.
  • Um die Auswirkungen der Störungen zu verringern, die durch versuchtes Zugreifen von mehr als einem Prozessor auf die gleiche Speicherreferenzen (beispielsweise kritische Abschnitte der Codierung) hervorgerufen werden, ist die fortschrittliche Synchronisiereinrichtung und die zugehörige Hardware in dem Computersystem 100 eingerichtet. Wie nachfolgend detaillierter beschrieben ist, verwendet die fortschrittliche Synchronisiereinrichtung neue Befehle und verwendet Hardware, etwa eine Synchronisierverteilung (in 2 gezeigt), die mit der Cache-kohärenten Vernetzung verbunden ist. Wie in 2 gezeigt ist, ist die Synchronisierverteileinheit 230 mit einer Nordbrückeneinheit 290 eines Verarbeitungsknotens 312 verbunden, wodurch die Synchronisierverteileinheit explizite Adressen beobachten kann, die mit Transaktionen der fortschrittlichen Synchronisiereinrichtung jedes Knotens verknüpft sind. Die Synchronisierverteileinheit kann an einer beliebigen Stelle in den kohärenten Bereich des Verbindungsnetzwerkes angeordnet sein. Zu beachten ist, dass obwohl eine einzelne Synchronisierverteileinheit gezeigt ist, dass, wenn ein System für die Unterstützung mehrerer virtueller Maschinen ausgelegt ist, und diese virtuellen Maschinen tatsächlich den physikalischen Speicher nicht gemeinsam benutzen, mehrere Synchronisierverteileinheiten ausgebildet sein können, um die Synchronisieraufgabe auf mehrere Verteileinheiten aufzuteilen.
  • Zu beachten ist, dass der Begriff „kritischer Abschnitt" durchgängig in diesem Dokument verwendet wird. Ein „kritischer Abschnitt" bezeichnet einen Abschnitt an Codierung, der in der fortschrittlichen Synchronisiereinrichtung verwendet wird, und der einen oder mehrere Speicherreferenzbefehle, die mit einem LOCK-Präfix versehen sind, einen Befehl „Datennahme bzw. Acquire" und ein Befehl „Freigabe" enthält, der den kritischen Abschnitt beendet. In einer Ausführungsform gibt es drei Stufen für jeden kritischen Abschnitt: 1) Angeben der Adresse bzw. der Adressen der Cache-Zeile bzw. Zeilen, die während des kritischen Abschnitts erforderlich sind (beispielsweise Eintritt in den kritischen Abschnitt), 2) die erforderlichen Aktivitäten, um diese Cache-Zeilen zu erhalten, 3) atomares Modifizieren der Daten des kritischen Abschnitts, 4) Freigeben der Cache-Zeilen für das System. Insbesondere die Codierung des kritischen Abschnitts erscheint so, als ob diese von interessierten Beobachtern atomar ausgeführt wird. Die erste Phase kann als die Spezifizierungsphase bezeichnet werden, während die dritte Phase häufig als die atomare Phase bezeichnet wird.
  • In diversen Ausführungsformen darf die Software „einfache" arithmetische und logische Manipulationen an den Daten zwischen dem Lesen und Modifizieren der Daten des kritischen Abschnitts ausführen, solang die einfachen arithmetischen Operationen beim Ausführen keine Ausnahmebehandlungen hervorrufen. Wenn eine Datenmanipulation eine Ausnahmebehandlung innerhalb eines kritischen Abschnitts hervorruft, kann die atomare Abarbeitung dieses kritischen Abschnitts nicht garantiert werden. Die Software des kritischen Abschnitts sollte einen Fehler im atomaren Verhalten erkennen und damit in geeigneter Weise umgehen, wie dies nachfolgend beschrieben ist.
  • Im Allgemeinen verwendet die fortschrittliche Synchronisiereinrichtung ein abgeschwächtes Speichermodell und operiert lediglich auf den Daten, die im Cache-Speicher ablegbar sind. Dieses abgeschwächte Speichermodell verhindert, dass die fortschrittliche Synchronisiereinrichtung Taktzyklen verschwendet, um auf diverse Prozessoren und das Lehren von Speicherpuffern zu warten, bevor ein kritischer Abschnitt ausgeführt wird. Wenn jedoch die Software ein standardmäßiges starkes PC-Speichermodell benötigt, kann die Software LFENSE, SFENSE oder MFENSE-Befehle unmittelbar vor dem Befehl „Freigabe" einfügen, um eine standardmäßige PC der Speicherordnung zu gewährleisten. Für den Fall der Verwendung einer auf den Cache anwendbaren Synchronisierung, um Zugriffe auf nicht im Cache-Speicher ablegbare Daten zu ermöglichen, stellt ein SFNENSE-Befehl zwischen dem letzten verriegelten Schreibbefehl und dem „Freigabe"-Befehl sicher, dass die nicht in Cache ablegbaren Daten global sichtbar sind, bevor die auf dem Cache anwendbaren Synchronsierungsdaten in einem anderen Prozessor sichtbar sind. Dies erlaubt eine maximale Überlappung von Zugriffen mit Cache-Zwischenspeicherung bei minimaler Leistungseinbuße.
  • In diversen Ausführungsformen umfasst die Schnittstellenlogik 318A bis 318L eine Vielzahl an Puffern zum Empfangen von Paketen aus der Verbindung und zur Speicherung der Pakete, die über die Verbindung zu senden sind. Das Computersystem 100 verwendet einen geeigneten Ablaufsteuerungsmechanismus zum Übermitteln von Paketen. Zusätzlich zu den Schnittstellenlogiken 318A bis 318L enthält jeder Verarbeitungsknoten entsprechende Pufferschnittstelleneinheiten (BIU) 220 (in 2 gezeigt), die die Funktion ermöglichen, eine selbstinitiierende Synchronisierung durchzuführen. Wie beispielsweise nachfolgend beschrieben wird, ist die BIU 220 für jene speziellen Adressen ausgebildet, die mit einem fortschrittlichen Synchronisierereignis verknüpft sind, und ist ferner ausgebildet, diese Adressen der Synchronisierverteileinheit 230 in Reaktion auf das Ausführen eines "Datennahme bzw Acquire"-Befehls zuzuführen. Die BIU 220 ist ferner ausgebildet, zu bestimmen, ob die von der Synchronisierverteileinheit 230 erhaltene Antwort angibt, dass die Adressen eine Störung hervorrufen. Abhängig davon, ob die Antwort angibt, dass die Adressen nicht ohne gegenseitige Störung sind, kann die BIU 220 den anfordernden Prozessorkern über einen Fehler informieren, indem ein Fehlerzahlwert an ein Register innerhalb des Prozessorkerns 18 gesendet wird und indem eine vollständige Nachricht an die Synchronisierverteileinheit 230 gesendet wird, oder wenn eine Störungsfreiheit garantiert ist, wird das Ausführen des kritischen Abschnitts zugelassen und es wird gewartet, bis die Nachricht auf Abgeschlossenheit an die Synchronisierverteileinheit 230 gesendet wird.
  • 2 ist eine Blockansicht, die detailliertere Aspekte von Ausführungsformen des Verarbeitungsknotens 312A und der Synchronisierverteileinheit 230 aus 1 zeigt. Gemäß 2 umfasst der Verarbeitungsknoten 312A Prozessorkerne 18A und 18n, wobei n eine beliebige Anzahl an Prozessorkernen repräsentiert. Da in den diversen Ausführungsformen die Prozessorkerne im Wesentlichen gleich sind, werden detaillierte Aspekte des Prozessorkerns 18 hier im Weiteren beschrieben. Wie gezeigt, sind die Prozessorkerne 18A und 18n mit der Busschnittstelleneinheit 220 verbunden, die mit einer Nordbrückeneinheit 200 verbunden ist, die wiederum mit der Speichersteuerung 316A, der Hypertransport- Schnittstellenlogik 318A bis 318C und auch mit der Synchronisierverteileinheit 230 über ein Paar aus unidirektionalen Leitungen 324I bis 324J verbunden ist.
  • Der Prozessorkern 18A enthält eine Hardware, die zum Ausführen von Befehlen ausgebildet ist. Insbesondere enthält der Prozessorkern 18A wie dies für viele Prozessoren typisch ist, eine oder mehrere Befehlsausführungsvektorverarbeitungen bzw. Pipelines mit einer Zahl von Pipeline-Stufen, Speicherstufen und einer Steuerung und einem Adressenübersetzungsmechanismus (wovon lediglich relevante Bereiche der Kürze halber gezeigt sind). Folglich enthält, wie dies gezeigt ist, der Prozessorkern 18A einen Befehlscache-Speicher der Ebene 1 (L1), eine Vorabhollogik und eine Verzweigungsvorhersagelogik. Da diese Blöcke eng mit dem Befehlscache-Speicher gekoppelt sind, sind sie zusammen als Block 250 dargestellt. Der Prozessorkern 18A enthält ferner einen Datencache-Speicher 207 der Ebene L1. Der Prozessorkern 18A umfasst ferner einen Befehlsdecodierer 255 und eine Befehlsausgabe- und Steuereinheit 256 ist ausgebildet, Befehle von dem Befehlsdecodierer 255 zu empfangen und Operationen an eine Disponiereinheit 259 bzw. Ablauforganisationseinheit auszugeben. Ferner ist die Befehlsausgabe- und Steuereinheit 256 mit einem Mikrocodierungs-Nur-Lese-Speicher (MROM) (nicht gezeigt) verbunden. Die Disponiereinheit 259 ist ausgebildet, ausgegebene Operationen von der Befehlsausgabe- und Steuereinheit 256 zu empfangen und Operationen an Ausführungseinheiten 260 auszugeben. In diversen Ausführungsformen enthalten die Ausführungseinheiten 260 eine beliebige Anzahl von Ganzzahlausführungseinheiten und Gleitkommaeinheiten. Ferner enthält der Prozessorkern 18A einen TLB 206 und eine Lade/Schreib-Einheit 270. Zu beachten ist, dass in alternativen Ausführungsformen ein chipinterner L2-Cache-Speicher vorgesehen sein kann (obwohl dies nicht gezeigt ist).
  • Der Befehlsdecodierer 255 ist ausgebildet, Befehle in Operationen umzuwandeln, die direkt decodiert oder indirekt decodiert werden unter Anwendung von Operationen, die in den MROM gespeichert sind. Der Befehlsdecodierer 255 kann gewisse Befehle in Operationen decodieren, die in der Ausführungseinheiten 260 auszuführen sind. Einfache Befehle können einer einzelnen Operation entsprechen, während in anderen Ausführungsformen komplexere Befehle mehreren Operationen entsprechen. In einer Ausführungsform enthält der Befehlsdecodierer 255 mehrerer Decodierer (nicht gezeigt), um gleichzeitig Befehle zu decodieren. Jeder Befehl kann in einen Satz aus Steuerwerten in mehreren Stufen ausgerichtet und decodiert werden, abhängig davon, ob die Befehle zuerst zu dem MROM geleitet werden. Diese Steuerwerte können in einem Befehlsstrom zur Befehlsausgabe- und Steuereinheit 257 zusammen mit Operandenadressinformationen und Versetzungs- oder unmittelbaren Daten geleitet werden, die in dem Befehl enthalten sein können. Wie nachfolgend beschrieben ist, kann der Befehlsdecodierer die Adresse mit einer Marke kennzeichnen, wenn ein Speicherreferenzbefehl ein „LOCK"- bzw. ein „Verriegelungs"-Präfix enthält.
  • Die Lade/Schreibeinheit 270 ist ausgebildet, eine Schnittstelle zwischen den Ausführungseinheiten 260 und den Datencache-Speicher 207 zu bilden. In einer Ausführungsform enthält die Lade/Schreibeinheit 270 Lade/Schreibpuffer mit diversen Speicherstellen für Daten und Adresseninformationen für anhängige Ladeoperationen und Schreiboperationen. Die dargestellte Ausführungsform enthält LS1 205, IS 209, physikalische LS2 210 und Datenspeicherung 211. Ferner enthält der Prozessorkern 18A eine Markierungslogik 208 und ein Markierungsbit 213.
  • In einer Ausführungsform wird ein kritischer Abschnitt auf eine von zwei Arten verarbeitet: deterministisch oder optimistisch. Die Wahl des Ausführens beruht auf der Konfiguration der fortschrittlichen Synchronisiereinrichtung auf den Zustand einer Vorhersageeinheit für kritische Abschnitte, wie dies detailliert nachfolgend beschrieben ist. In diversen Ausführungseinheiten kann das Basiseingabe/Ausgabe-System (BIOS), das Betriebssystem (OS) oder eine virtuelle Speicherverwaltung (VMM) den Arbeitsmodus der fortschrittlichen Synchronisiereinrichtung konfigurieren. Beim Betrieb in den deterministischen Ausführungsmodus werden die durch die verriegelten Speicherreferenzbefehle spezifizierten Adressen gebündelt und als Ganzes zu der Synchronisierverteileinheit 230 zum Untersuchen auf Störungen hin gesendet. Die Cache-Zeilendaten werden dann erhalten und der kritische Abschnitt wird ausgeführt (wie dies zugelassen ist). Wenn im Gegensatz in dem optimistischen Synchronisiermodus gearbeitet wird, wird keine Störung angenommen, und der kritische Abschnitt wird ausgeführt (wobei die Synchronisierverteileinheit 230 umgegangen wird), und wenn ein anderer Prozessor diesen kritischen Abschnitt stört, wird diese Störung erkannt und der Prozessor geht zurück zum „Beschaffen"- bzw. "ACQUIRE"-Befehl und führt den Steuerablauf von der atomaren Phase weg.
  • Um den deterministischen Modus einzurichten, verwendet die fortschrittliche Synchronisiereinrichtung die Synchronisierverteileinheit 230. Wie zuvor beschrieben ist, prüft die Synchronisierverteileinheit 230 alle physikalischen Adressen, die mit einer Synchronisieranfor derung verknüpft sind, und wertet den Satz aus Adressen als zulässig „befunden" oder als Fehler (d. h. weist diese zurück) auf der Grundlage davon, ob ein anderer Prozessorkern oder eine andere Anforderungseinheit auf diesen Adressen operiert oder diese angefordert hat, wenn diese gerade angesprochen werden. Somit ermöglicht die Synchronisierverteileinheit 230 den Aufbau einer Software, die selbstinitiativer Weise Störungen vermeidet. Wenn eine Störung durch die Synchronisierverteileinheit 230 erkannt wird, reagiert die Synchronisierverteileinheit 230 auf eine Anforderung mit einem Fehlerstatus mit einer einzigartigen Zahl (beispielsweise einem Zählwert 233) auf einen anfordernden Prozessorkern. In einer Ausführungsform gibt der Zählwert die Anzahl der Anforderungseinheiten an, die im Wettbewerb stehen für die eine oder mehreren Speicherressourcen, die angefordert werden. Die Software kann diese nun verwenden, um in selbstinitiierender Weise eine Störung in nachfolgenden Durchlaufen des kritischen Abschnitts zu vermeiden, indem diese Nummer verwendet wird, um eine andere Ressource auszuwählen, um damit einen Zugriff auf einen kritischen Abschnitt zu unternehmen.
  • Wie folglich in 2 gezeigt ist, enthält die Synchronisierverteileinheit 230 einen Speicher 232 mit einer Reihe von Einträgen. Jeder der Einträge speichert eine oder mehrere physikalische Adressen von Anforderungen, die aktuell bearbeitet werden. In einer Ausführungsform enthält jeder Eintrag bis zu acht physikalische Adressen, die als eine einzelne 64-Byte-Anforderung übermittelt werden. Des weiteren kann der Eintrag der Synchronisierverteileinheit den Zählwert 233 enthalten, der allen Adressen in dem Eintrag entspricht. Wie zuvor beschrieben ist, gibt der Zählwert die Anzahl der Anforderungseinheiten (d. h. Störer) an, die um eine der Adressen in einem kritischen Abschnitt im Wettbewerb zueinander stehen. Wenn die Synchronisierverteileinheit 230 einen Satz an Adressen empfängt, prüft eine Vergleichseinheit 231 in der Synchronisierverteileinheit 230 im Hinblick über eine Übereinstimmung zwischen jeder Adresse in dem Satz und allen Adressen in dem Speicher 232. Wenn es keine Übereinstimmung gibt, ist die Synchronisierverteileinheit 230 ausgebildet, eine positive Antwort auszugeben, indem ein zulässiger Zählwert zurückgegeben wird und die Adressen dem Speicher 232 abgelegt wurden. In einer Ausführungsform ist der zulässige Zählwert 0, obwohl ein beliebiger anderer geeigneter Zählwert verwendet werden kann. Wenn es jedoch eine Adressenübereinstimmung gibt, kann die Synchronisierverteileinheit 230 den Zählwert 233, der mit dem Satz aus Adressen verknüpft ist und die übereinstimmende Adresse enthält, erhöhen, und dem Zählwert dann als Teil einer negativen Antwort zurückgeben. Zu beachten ist, dass die Vergleichseinheit 231 nur eine Struktur zum Ver gleichen sein kann, die auf diverse Arten eingerichtet ist, wie dies gewünscht ist. Des weiteren wird in einer weiteren Ausführungsform jede in dem Speicher 232 gespeicherte Adresse mit einem entsprechenden Wert verknüpft. Der Zählwert ist kennzeichnend für die Anzahl der Anforderungseinheiten (d. h. Störer), die zueinander im Wettbewerb für eine der entsprechenden Adressen in einem kritischen Abschnitt stehen.
  • In der dargestellten Ausführungsform enthält die Busschnittstelleneinheit (BIU) 220 eine Zählwertvergleichsschaltung 221, einen verriegelten Zeilenpuffer (LLB) 222 und eine Vorhersageeinheit 223. Die BIU 220 umfasst ferner diverse andere Schaltungen zum Senden und Empfangen von Transaktionen von den diversen Komponenten, mit der diese verbunden ist, wobei diese jedoch der Einfachheit halber nicht gezeigt sind. Die BIU 220 ist ausgebildet, einen Satz aus Adressen, die mit einem kritischen Abschnitt verknüpft sind, von dem LLB 222 zu der Synchronisierverteileinheit 230 in Reaktion auf das Ausführen eines „ACQUIRE"-Befehls zu senden. Des weiteren ist die Vergleichsschaltung 221 ausgebildet, den Zählwert, der von der Synchronisierverteileinheit 230 zurückgegeben wird, zu prüfen, wenn der Zählwert ein zulässiger Zählwert (beispielsweise Null) oder ein einen Fehler anzeigender Zählwert ist. Zu beachten ist, dass der SBB 22 unter Anwendung einer beliebigen Art an Speicherstruktur eingerichtet werden kann. Beispielsweise kann dieser Teil eines bestehenden Speicheradressenpuffers (MAB) oder nach Bedarf eine separate Einheit sein.
  • Wie zuvor beschrieben ist, werden, wenn der Prozessorkern 18 in dem deterministischen Synchronisiermodus arbeitet, mit einem kritischen Abschnitt verknüpfte Adressen während des Befehlsdecodierens markiert unter Anwendung des LOCK-Präfix. Insbesondere werden Speicherreferenzen, die explizit in fortschrittlichen Synchronisiercodierungssequenzen teilhaben, unter Anwendung des LOCK-Präfix mit einem geeigneten MOV-Befehl kennzeichnet. Verriegelte Ladebefehle können die folgende Form aufweisen: LOCK MOVx reg, [B + I·s + DISP].
  • Insbesondere wird ein regulärer Speicherlesebefehl zu einem speziellen Befehl gemacht, indem das LOCK-Präfix hinzugefügt wird. Dies veranlasst die BIU 220, die zugehörige markierte physikalische Adresse in dem LLB 222 zu sammeln, wenn die Adresse durch den L1-Cache-Speicher (und TLB 206) geht. Ferner wird die Speicherzugriffsstärke verringert, um auf die Zeile (im Falle eines Cache-Fehltreffers) ohne Schreiberlaubnis (ReadS, not ReadM oder Read) zuzugreifen. Der Ladebefehl wird nicht aus dem LS2 heraus abgeschlossen, bis der „ACQUIRE"-Befehl aus der Synchronisierverteileinheit 230 zurückgegeben wird.
  • Obwohl die Anforderung der BIU 320 (an die Synchronisierverteileinheit 230) auf eine Antwort wartet, führt der LLB 222 eine Überwachung im Hinblick auf Sondierungsanforderungen mit durchlässiger Struktur durch, und wenn eine (oder mehrere) auftreten, wird veranlasst, dass der ACQUIRE-Befehl ein negatives Resultat besitzt, selbst wenn die Synchronisierverteileinheit 230 ein erfolgreiches Ergebnis zurückgibt. Das LOCK-Präfix veranlasst keine spezielle Verriegelung des Cache-Speichers oder des Busses, sonder bietet einfach eine geeignete Markierung, die speicherbasierten MOV-Befehlen hinzugefügt wird. Verriegelte Befehle zum Verschieben von Werten in einem Register (die ansonsten auch als verriegelte Ladeoperationen bezeichnet werden) werden normal bis hinab zur Datencache-Pipeline verarbeitet.
  • Folglich wird während der Adressenübersetzung jede lineare Adresse in dem linearen Adressenbereich des LS 209 gespeichert. Die entsprechenden physikalischen Adressen werden in dem TLB 206 und in dem physikalischen LS2 210 abgelegt, während die entsprechenden Daten in dem Datencache-Speicher 207 und dem Daten LS2 211 gespeichert werden. Die Markierungslogik 208 erkennt die LOCK-Präfixmarkierung, die während des Decodierens erzeugt wurde, und erzeugt ein zusätzliches Markierungsbit 213, wodurch jede derartige Adresse als Teil eines kritischen Abschnitts gekennzeichnet wird. Jede verriegelte Ladeoperation, die ein Fehltreffer in dem Daten-Cache-Speicher ist, erhält ihre Cache-Zeilendaten über die Speicherhierarchie mit einer Aufrufstruktur für „Lesen bei gemeinsamen Zugriff", wobei jedoch die Schreiberlaubnis geprüft wird.
  • Wenn der Prozessorkern 18 in einem deterministischen Synchronisiermodus betrieben wird, wie zuvor beschrieben ist, werden mit einem kritischen Abschnitt verknüpfte Adressen während der Befehlsdecodierung unter Anwendung des LOCK-Präfix markiert. Insbesondere werden Speichervorabholreferenzen, die explizit Teil von fortschrittlichen Synchronisiercodierungssequenzen sind, unter Anwendung des LOCK-Präfix mit einem geeigneten Befehl „PREFETCHW" markiert. Diese Art an verriegelten Ladebefehlen besitzen die folgende Form: LOCK PREFETCHW [B + I·s + DISP].
  • Somit wird ein regulärer Speicher-PREFETCHW-Befehl zu einem speziellen Befehl gemacht, indem ein LOCK-Präfix angefügt wird. Dies bewirkt, dass die BIU 220 die zugehörige markierte physikalische Adresse für den LLB 222 markiert, wenn die Adresse für einen L1-Cache-Speicher (und TLB 206) läuft. Des weiteren wird die Speicherzugriffsstärke verringert, um einen tatsächlichen Zugriff auf die Zeile zu vermeiden. Der Befehl PREFETCHW wird nicht aus dem LS2 heraus abgeschlossen, bis der Befehl „ACQUIRE" aus der Synchronisierverteileinheit 230 zurückgegeben wird. Diese Befehle können verwendet werden, um Cache-Zeilen anzusprechen, die Teil des kritischen Abschnitts sind und die Daten erfordern (beispielsweise einen Zeiger), um andere Daten abzurufen, die ebenfalls in dem kritischen Abschnitt benötigt werden. Am Ende der Spezifizierungsphase wird ein Befehl „ACQUIRE" verwendet, um die BIU 220 darüber zu informieren, dass alle Speicherreferenzadressen für den kritischen Abschnitt in LLB 222 gespeichert sind.
  • Der Befehl „ACQUIRE" besitzt die Form: ACQUIRE reg, imm8
  • Der Befehl „ACQUIRE" prüft, ob die Anzahl der verriegelten Speicherreferenzbefehle gleich dem unmittelbaren Wert in dem Befehl „ACQUIRE" ist. Wenn diese Prüfung ein nicht korrektes Ergebnis liefert, wird der Befehl „ACQUIRE" mit einem Fehlercode beendet, ansonsten veranlasst der Befehl „ACQUIRE" die BIU 220, alle in dem LLB 222 gespeicherten Adressen an die Synchronisierverteileinheit 230 zu senden. Dieser Befehl „sieht aus" wie ein Speicherreferenzbefehl auf dem Datenpfad, so dass der Zählwert, der von der Synchronisierverteileinheit 230 zurückgegeben wird, verwendet werden kann, um zu bestätigen (oder abzulehnen), dass auf alle Zeilen ohne Störung zugegriffen werden kann. Für diesen „Lade"-Befehl ist keine Adresse notwendig, da es nur eine einzelne Synchronisierverteileinheit 230 pro virtueller Maschine oder pro System geben kann. Das in dem Befehl „ACQUIRE" angegebene Register ist das Zielregister des Prozessorkerns 18.
  • In einer Ausführungsform beinhaltet die Struktur eine verriegelten Ladeoperation bei einer Sondierungsanfrage die Überwachung der Lage für eine Sondierungsanforderung mit Ungültigerklärung (beispielsweise Probe Inv oder Probe ReadM). Wenn für eine Steile eine Sondierung mit „Ungültigerklärung" erkannt wird, gibt die LS1- oder LS2-Warteschlange einen Fehlerstatus zurück, ohne dass auf den Abschluss der Leseoperation gewartet wird. Es kann ein allgemeiner Fehler (#GP) erzeugt werden, wenn die Anzahl der verriegelten Ladeoperationen eine Mikroarchitekturgrenze übersteigt. Wenn ein Befehl „ACQUIRE" ein unzulässiges Ergebnis zurückgibt, dann wird der Zählwert der verriegelten Ladeoperationen auf Null zurückgesetzt. Wenn die Adresse nicht für einen Speicher mit Rückschreibeigenschaft ist, erzeugt der Befehl einen Seitenfehler (#PF) oder einen #GP-Fehler oder der Befehl „ACQUIRE" kann so abgearbeitet werden, das ein negatives Ergebnis erhalten wird (wenn dieser nachfolgend angetroffen wird).
  • Es wird erwartet, dass einige kritische Abschnitte eine Reihe von arithmetischen Entscheidungen oder Steuerablaufentscheidungen aufweisen, um zu berechnen, welche Datenmodifizierungen geeignet sind (falls welche vorhanden sind). Jedoch sollte die Software dafür sorgen, dass diese Arten an Befehlen niemals eine tatsächliche Sonderbehandlung hervorrufen. In einer Ausführungsform werden arithmetische Befehle und Speicherreferenzbefehle in den SSE-Registern (XMM) oder in den Registern für Allgemeinzwecke (beispielsweise EAX, etc.) oder in den MMX- oder x87-Registern verarbeitet.
  • Wie zuvor beschrieben ist, erachtet die Synchronisierverteileinheit 230 die Anforderung gesammelt als zulässig oder zeichnet diese gesammelt als unzulässig. Wenn die Synchronisierverteileinheit 230 die Anforderung als unzulässig einstuft, kann die Antwort für die BIU 220 bezeichnet werden als „Synchronisationsverteilfehler nach ACQUIRE", wobei das Null-Bit gesetzt ist (beispielsweise RFLAGS.ZF). Wie zuvor beschrieben ist, enthält die von der Synchronisierverteileinheit 230 zurückgegebene Antwort den Zählwert 233, der die Anzahl der Störer kennzeichnet. Die Software kann diesen Zählwert verwenden, um künftige Störungen zu reduzieren, wie dies zuvor beschrieben ist. Der Zählwert 233 von der Synchronisierverteileinheit 230 kann einem allgemeinen Register (nicht gezeigt) in den Prozessorkern 18 zugeführt werden und kann auch zum Setzen von Bedingungscodierungen verwendet werden. Wenn die Synchronisierverteileinheit 230 die Anforderung weitergibt, kann die Rückantwort für die BIU 220 einen zulässigen Zählwert (beispielsweise Null) enthalten.
  • Wenn in einer Ausführungsform die Synchronisierverteiladressenspeicher 232 voll ist, wird die Anforderung mit einem negativen Zählwert, etwa Minus eins (–1) zurückgegeben. Dies gibt der Software, die in dem Prozessorkern abgearbeitet wird, ein Mittel, um eine Überlas tung in dem System zu erkennen und zu ermöglichen, dass die Software keine weiteren Anforderungen an die Synchronisierverteileinheit 230 für eine gewisse Zeitdauer sendet. Beispielsweise kann die Software andere Aufgaben abarbeiten oder kann einfach eine gewisse Zeit verstreichen lassen, bevor ein erneuter Synchronisierversuch unternommen wird.
  • Wenn der Zählerwert Null ist, (was bedeutet, dass keine Störungen von der Synchronisierverteileinheit 230 beobachtet werden), führt der Prozessorkern 18 die Befehle in dem kritischen Abschnitt aus und bearbeitet die Daten in den Cache-Zeilen nach Bedarf. Wenn die Datenbearbeitung abgeschlossen ist, wird ein „RELEASE"- bzw. Freigabe-Befehl ausgeführt, der das Ende des kritischen Abschnitts anzeigt. In einer Ausführungsform ermöglicht der „RELEASE"-Befehl, dass alle modifizierten Daten im Wesentlichen gleichzeitig sichtbar sind, indem die „RELEASE"-Nachricht an die Synchronisierverteileinheit 230 gesendet wird, wodurch die zugehörigen Cache-Zeilen für das System wieder verfügbar sind.
  • Wie zuvor beschrieben ist, kann ein kritischer Codierungsabschnitt einen oder mehrere Speicherreferenzbefehle mit dem LOCK-Präfix aufweisen, woran sich der „ACQUIRE"-Befehl anschließt. Des weiteren folgt ein bedingter Sprungbefehl nach dem „ACQUIRE"-Befehl, so dass die Codierung den kritischen Abschnitt verlassen kann, sollte die Synchronisierverteileinheit 230 eine Codierung „Fehler nach ACQUIRE" ausgeben oder eine Sondierungsanfrage mit Ungültigerklärung erkannt werden, bevor auf die Cache-Zeilen zugegriffen wird. In derartigen Ausführungsformen kann auf den bedingten Sprungbefehl ein Freigabebefehl folgen. Im Folgenden sind zwei kritische Codierungsabschnitte gezeigt, um zwei Arten kritischer Abschnitte beispielhaft darzustellen. Zu beachten ist, dass die folgenden Codesegmente lediglich Beispiele für Diskussionszwecke sind. Zu beachten ist, dass andere Ausführungsformen möglich sind und hierin mit eingeschlossen sind.
  • Das folgende erste beispielhafte Codesegment zeigt das Entfernen eines Elements in einer doppelt vernetzten Liste, wobei dies unter Anwendung des Freigabebefehls erfolgt.
  • Figure 00180001
  • Figure 00190001
  • Das folgende beispielhafte Codesegment zeigt das Einfügen eines Elements in eine doppelt vernetzte Liste, wobei ebenfalls der Freigabebefehl bzw. „RELEASE"-Befehl verwendet wird.
  • Figure 00190002
  • In einer Ausführungsform unterstützt die fortschrittliche Synchronisiereinrichtung zwei Arten von Fehler, d. h. „Fehler nach ACQUIRE" und einen „Fehler für Anforderungseinheit" bzw. „Fait-to-REQUESTOR". Der "Fehler nach ACQUIRE" bewirkt, dass der „ACQUIRE"-Befehl abgeschlossen wird, wobei das Null-Bit gesetzt ist (beispielsweise RFLAGS.ZF), so dass der nachfolgende bedingte Sprungbefehl den Steuerablauf von Schaden hervorrufenden Befehlen in der atomaren Phase weg führen kann. Die Synchronisierverteilung mit „Fehler nach ACQUIRE" bei gesetztem Null-Bit (beispielsweise RFLAGS.ZF) ist ein Fehler der Art „Fehler nach ACQUIRE". Eine andere Art ist ein Prozessor- „Fehler nach ACQUIRE". In einer Ausführungsform kommunizieren währen des Ausführens kritischer Abschnitte die Prozessorkerne durch Beobachten von Speichertransaktionen. Diese Beobachtungen können bei den „ACQUIRE"-Befehl eines ausführenden Prozessorkerns sichtbar gemacht werden. Insbesondere während der Zeit zwischen dem Beginn des Sammelns von Adressen, die für einen kritischen Abschnitt erforderlich sind und der Antwort der Synchronisierverteileinheit 230 überwacht der Prozessorkern 18 alle jene Adressen auf kohärente Ungültigkeitserklärungsanfragen (beispielsweise Sondierung bzw. Anfrageanforderung mit Ungültigerklärung). Wenn beliebige Zeilen als Ungültig erklärt werden, wird die Antwort der Synchronisierverteileinheit 230 ignoriert und der „ACQUIRE-Befehl" kann zu einem Fehler führen, wobei das Null-Bit gesetzt ist (beispielsweise RFLAGS.ZF).
  • Der Fehler „Fehler für Anforderungseinheit" kann als eine „Sondierungs"-Antwort gesendet werden, wenn es einen Cache-Treffer für eine Zeile gibt, die im Hinblick auf eine Störung geprüft wurde und von der Synchronisierverteileinheit 230 als zulässig erkannt wurde. Eine „Fehler für Anforderungseinheit"-Antwort verursacht eine „Fehler nach ACQUIRE" in dem anfordernden Prozessor, wenn dieser aktuell einen kritischen Abschnitt gemäß der fortschrittlichen Synchronisiereinrichtung verarbeitet, oder dadurch wird bewirkt, dass die BIU des anfordernden Prozessors diese Speicheranforderung erneut ausgibt, wenn diese nicht den kritischen Abschnitt verarbeitet. Die BIU 220 kann ausgebildet sein, einen „Fehler nach ACQUIRE" in Reaktion auf das Empfangen einer Sondierungsanfrage mit Ungültigkeitserklärung zu bewirken, bevor eine Nachricht von der Synchronisierverteileinheit 230 über ein positives Ergebnis erhalten wird.
  • Sobald die Adressen des kritischen Abschnitts übernommen sind, erhält ein Prozessorkern 18, der seine Adressen von der Synchronisierverteileinheit 230 erhalten hat, exklusiven Zugriff auf jede Cache-Zeile (beispielsweise Schreiberlaubnis), wenn Speicherreferenzbefehle in der atomaren Phase verarbeitet werden. Nachdem eine zulässige Cache-Zeile eintrifft, greift der Prozessorkern 18 auf diese Cache-Zeile dauerhaft zu und verhindert, dass andere Prozessorkerne die Zeile verwenden, indem auf kohärente Ungültigkeitserklärungsanfragen mit „Fehler für Anforderungseinheiten"-Antworten reagiert wird. Zu beachten ist, dass eine „Fehler für Anforderungseinheit" auch als eine Negativbestätigung (NAK) bezeichnet werden kann.
  • Wie zuvor beschrieben ist, wird, wenn ein Prozessor eine „Fehler für Anforderungseinheit" Nachricht empfängt und gleichzeitig in einer fortschrittlichen Synchronisierbefehlssequenz teilnimmt, diese Befehlssequenz veranlasst, dass sie bei dem „ACQUIRE"-Befehl mit einem negativen Ergebnis reagiert. In diesem Falle wird der nachfolgende bedingte Sprung genommen und der Schaden hervorrufende Teil der Speicherreferenzbefehle in dem kritischen Abschnitt wird vermieden. Wenn jedoch ein Prozessor eine „Fehler für Anforderungseinheit" Nachricht empfängt und nicht in einer fortschrittlichen Synchronisierbefehlssequenz teilnimmt, kann die BIU des anfordernden Prozessors die ursprüngliche Speichertransaktion erneut anfordern. Somit ermöglicht die abgelaufene Zeitdauer zwischen dem Senden der „Fehler für Anforderungseinheit" Nachricht und dem nachfolgenden Eintreffen der nächsten kohärenten Sondierungsanfrage mit Ungültigkeitserklärung in dem als zulässig erklärten kritischen Abschnitt ein weiteres Voranschreiten des Prozessors mit einer garantierten Zustimmung der Synchronisierverteileinheit. Die Sicherstellung des weiteren Fortschritts ermöglicht es, dass die fortschrittliche Synchronisiereinrichtung unter einer Konkurrenzsituation effektiver ist als aktuell bestehende Synchronisiermechanismen. Somit können früher oder später der kritische Abschnitt und die störende Speicherreferenz ausgeführt werden (beispielsweise keine einseitige Blockierung oder eine gegenseitige Blockade).
  • Wie zuvor erläutert ist, kann das Leistungsverhalten des Prozessors, der in der fortschrittlichen Synchronisiereinrichtung teilnimmt, optimiert werden, indem eine Vorhersageeinheit 223 für kritische Abschnitte eingesetzt wird. Ursprünglich kann die Vorhersageeinheit 223 so eingerichtet sein, dass diese vorhersagt, dass keine Störung während des Ausführens eines kritischen Abschnitts erwartet wird. In diesem Modus verwendet der Prozessorkern 18 für gewöhnlich die Synchronisierverteileinheit 230 nicht. Stattdessen kann der Prozessorkern 18 die verriegelten Speicherreferenzen aufzeichnen und kann diese im Hinblick auf kohärente Sondierungsanfragen mit Ungültigkeitserklärung überprüfen, um eine gegenseitige Störung zu erkennen. Wenn das Ende des kritischen Abschnitts erreicht wird, bevor eine gegenseitige Störung erkannt wird, hat keine interessierte dritte Partei die Aktivität des kritischen Abschnitts „gesehen" und diese wurde ausgeführt, als ob sie in atomarer Weise ausgeführt wird. Diese Eigenschaft ermöglicht es, dass die fortschrittliche Synchronisiereinrichtung im Hinblick auf Prozessortaktzyklen vergleichbar ist mit aktuell existierenden Synchronisiermechanismen, wenn keine Konkurrenzsituation beobachtet wird.
  • Wenn insbesondere eine gegenseitige Störung erkannt wird, kann der Prozessorkern 18 einen Fehlerstatus für den „ACQUIRE"-Befehl erzeugen und die nachfolgende bedingte Verzweigung ändert den Steuerablauf so, dass diese aus dem kritischen Abschnitt herausführt, und setzt die Vorhersageeinheit zurück, so dass diese einen deterministischen Modus voraussagt. Wenn der nächste kritische Abschnitt erkannt wird, wird der Decodierer voraussagen, dass eine gegenseitige Störung auftreten könnte und verarbeitet den kritischen Abschnitt unter Anwendung der Synchronisierverteileinheit 230 (wenn diese aktiviert ist).
  • In einer Ausführungsform arbeitet die fortschrittliche Synchronisiereinrichtung unter Verwendung von fehljustierten Datenpunkten, solange diese Punkte nicht die Cache-Zeilen bilden, die nicht Teil des eigentlichen kritischen Abschnitts sind. Die Software darf Synchronisierelemente besitzen, die sich über die Cache-Zeilengrenzen hinweg erstrecken, solange alle Cache-Zeilen, die derart betroffen sind, als Teil des Eintrags des kritischen Abschnitts erkannt werden. Wenn ein Datenelement von einer Cache-Zeile in eine weitere Cache-Zeile reicht, die nicht Teil der Synchronisationskommunikation ist, erkennt der Prozessor keinen Fehler in der atomaren Handhabung und gibt auch keinen Mangel an atomaren Verhalten bekannt.
  • Der Zugriff auf Daten des kritischen Abschnitts kann von der Anwesenheit dieser Daten im Hauptspeicher abhängen. Alle Zeilen, die für den kritischen Abschnitt erforderlich sind, werden vor Eintritt in den kritischen Abschnitt abgerufen und jegliche Zugriffsrechte oder Seitenfehlerproblem können erkannt werden, wenn die verriegelten Ladeoperationen oder die verriegelten Befehle „PREFETCHW" vor dem Eintritt in den kritischen Abschnitt ausgeführt werden. Wenn eine der Eingangsadressen einen Fehler annimmt, wird der nachfolgende „ACQUIRE"-Befehl zu einem Fehler führen. Nach dem Eintritt in den kritischen Abschnitt ruft der Prozessor einen Fehler in dem „ACQUIRE"-Befehl hervor, wenn ein Befehl eine Sonderbehandlung bewirkt, und der nachfolgend bedingte Strom führt den Programmablauf weg von dem kritischen Abschnitt.
  • Wenn der Decodierer des Prozessorkerns 18 einen Interrupt annehmen muss, wird in einer Ausführungsform dafür gesorgt, dass der „ACQUIRE"-Befehl zu einem Fehler führt, wobei das Null-Bit gesetzt ist (beispielsweise RFLAGS.ZF) und der Interrupt wird beim „ACQUIRE"-Befehl genommen.
  • Zu beachten ist, dass in Ausführungsformen, in denen die Synchronisierverteileinheit 230 mit einer Nordbrückeneinrichtung innerhalb des Hypertransportnetzes verbunden ist, die Synchronisierverteileinheit 230 einer vorbestimmten und/oder reservierten Knotenkennung bzw. ID zugeordnet erhält, die keine andere Komponente aufweist. Diese Zuordnung kann zum Zeitpunkt des Hochlaufens mittels des BIOS beispielsweise durchgeführt werden. In den obigen Ausführungsformen kann der Zählwert als ein 64-Wert zurückgegeben werden, obwohl auch andere Werte möglich sind.
  • 3 ist ein Flussdiagramm, das die Funktionsweise der Ausführungsformen des Computersystems beschreibt, die in 1 und 2 gezeigt sind. Es sei gemeinsam auf 1 bis 3 verwiesen; zu Beginn werden im Block 405 Adressen von Cache-Zeilen, die aktuell bearbeitet werden oder auf die als Teil eines kritischen Abschnitts aktuell zugegriffen wird, in einer Liste bewahrt (beispielsweise innerhalb des LLB 222). Beispielsweise speichert die Synchronisierverteileinheit 230 die Adressen, die einem kritischen Abschnitt entsprechen, als eine Gruppe innerhalb eines Eintrags des Adressenspeichers 232. In einer Ausführungsform enthält jeder Eintrag des Adressenspeichers 232 auch einen Zählwert, der mit der gesamten Gruppe aus Adressen verknüpft ist, die darin gespeichert sind (Block 410). Wie zuvor beschrieben ist, ist der Zählwert kennzeichnend für die Anzahl der Wettbewerber (d. h. gegenseitigen Störer) für jede Adresse in der Gruppe. In einer weiteren Ausführungsform speichert die Synchronisierverteileinheit 230 eine Anzahl an Zählwerten in jedem Eintrag, so dass jede Adresse in dem Eintrag einen zugeordneten Zählwert besitzt.
  • Wenn ein Prozessor oder Prozessorkern, der die fortschrittliche Synchronisiereinrichtung implementiert hat, einen atomaren Zugriff auf eine oder mehrere Cache-Zeilen anfordert, erscheint die Anforderung in Form eines kritischen Codierungsabschnitts. Beispielsweise kann, wie zuvor beschrieben ist, zur Sicherstellung der vollständigen Beendigung von Befehlen in einer atomaren Weise (wie sich dies für einen Betrachter von außen ergibt) ein kritischer Abschnitt die Verwendung von verriegelten MOV-Befehlen enthalten, woran sich ein „ACQUIRE"-Befehl und ein Freigabe-Befehl bzw. „RELEASE"-Befehl anschließt (Block 415). Folglich wird die Gruppe aus Adressen, die angefordert wird, im Hinblick auf gegenseitige Störungen überprüft. In einer Ausführungsform wird die Gruppe aus Adressen mit allen Adressen innerhalb des Adressenspeichers 232 verglichen (Block 420). In den zuvor beschriebenen Ausführungsformen bewirken die verriegelten MOV-Befehle, dass die Ad ressen markiert werden. Die Markierung veranlasst, dass die BIU 220 jede markierte Adresse in dem LLB 222 speichert. Der „ACQUIRE"-Befehl veranlasst die BIU 220, die gesamte Gruppe aus Adressen in dem LLB 222 zur Synchronisierverteileinheit 230 in Form eines nicht im Cache speicherbaren Schreibbefehls zu senden, der 64 Bytes an physikalischen Adressendaten beinhaltet. Die Synchronisierverteileinheit 230 vergleicht die Gruppe aus Adressen mit allen Adressen in dem Speicher 232.
  • Wenn es eine Übereinstimmung für eine Adresse gibt (Block 425), wird der mit der übereinstimmenden Adresse verknüpft Zählwert erhöht (Block 455) und der neu Zählwert wird an die BIU 220 als Teil einer Fehlerantwort auf die nicht im Cache speicherbaren Schreiboperation (Block 460) zurückgegeben, die 64 Bits an Antwortdaten enthält. Des weiteren verwirft die Synchronisierverteileinheit 230 die Gruppe aus Adressen bei einem Fehler. Die BIU 220 sendet den Fehler-Zählwert an das Register des anfordernden Prozessors/Kerns, der ebenfalls Bedingungscodierungsflaggen setzen kann. Als Folge kann der anfordernde Prozessor/Kern den Zählwert verwenden, um eine weitere Gruppe aus Speicherressourcen in nachfolgenden Operationen auszuwählen (Block 465) und um eine gegenseitige Störung in seinen nachfolgenden Synchronisierversuch zu vermeiden. Der Funktionsablauf geht dann weiter wie zuvor im Block 415 beschrieben ist.
  • Es sei auf Block 425 verwiesen; wenn es keine übereinstimmende Adresse im Speicher 232 gibt, gibt die Synchronisierverteileinheit 230 einen Zählwert für ein erfolgreiches Ergebnis (beispielsweise Null) an die BIU 220 zurück (Block 430). Des weiteren speichert die Synchronisierverteileinheit 230 die Gruppe aus Adressen in einem Eintrag des Speichers 232 (Block 435). Die BIU 220 sendet den Zählwert entsprechend dem erfolgreichen Ergebnis an das anfordernde Prozessor/Kern-Register, das in dem „ACQUIRE"-Befehl spezifiziert ist. Der anfordernde Prozessor/Kern kann die Daten in den angeforderten Adressen manipulieren oder anderweitig darauf operieren (Block 440). Wenn die Operation nicht abgeschlossen ist (Block 445), sendet die BIU 220 keine Nachricht über die Vollständigkeit an die Synchronisierverteileinheit 230. Wenn die Operation in den kritischen Abschnitt abgeschlossen ist, etwa, wenn der „RELEASE"-Befehl bzw. Freigabe-Befehl ausgeführt ist, sendet die BIU 220 eine Nachricht über die Vollständigkeit an die Synchronisierverteileinheit 230. Bei Empfang der Nachricht über die Vollständigkeit gibt die Synchronisierverteileinheit 230 die entsprechenden Adressen aus dem Speicher 232 frei, wodurch diese Adressen an das System zur Verwendung an einen weiteren Prozessor/Kern freigegeben werden (Block 450). Ferner aktualisiert die Lade/Schreibeinheit 270 den Datencache-Speicher für alle Befehle in diesem kritischen Abschnitt, die abgeschlossen sind.
  • Wie zuvor beschrieben ist, wenn eine Kohärenzungültigkeitsanfrage bzw. Sondierung eine Adresse in dem kritischen Abschnitt während des Abarbeitens des kritischen Abschnitts trifft, kann die Antwort auf diese Sondierungsanfrage von dem Zustand der Verarbeitung dese kritischen Abschnitts abhängen (d. h. ob die Cache-Zeilen beansprucht wurden oder nicht). 4 ist ein Flussdiagramm, das die Funktionsweise der Ausführungsformen der 1 und 2 beschreibt, wenn eine Kohärenzungültigkeitserklärungssondierungsanfrage empfangen wird.
  • Es sei gemeinsam auf die 1 bis 4 verwiesen; zu Beginn wird im Block 505 aus 4 eine Sondierungsanfrage mit Ungültigkeitserklärung empfangen und diese trifft eine Adresse in einem kritischen Abschnitt in der Lade/Schreibeinheit 270. Wenn die angeforderten Zeilen erfolgreich beansprucht wurden (Block 510) (beispielsweise wird eine Kohärenzungültigkeitssondierungsanfrage empfangen, nachdem die Synchronisierverteileinheit 230 einen Erfolg anzeigenden Zählwert bereitgestellt hat, und die Gruppe aus Adressen in dem Speicher 232 gespeichert hat), sendet die BIU 220 eine „Fehler für Anforderungseinheit" Antwort als eine Reaktion auf die Sondierungsanfrage (Block 515). In dem anfordernden Prozessorkern sollte diese „Fehler für Anforderungseinheit"-Antwort einen Fehler des „ACQUIERE"-Befehls hervorrufen, wenn der Prozessorkern bei der Bearbeitung eines kritischen Abschnitts war, oder es sollte ein erneutes Versuchen der Adressen bewirken, wenn dies nicht der Fall ist.
  • Es sei wieder auf Block 510 verwiesen, wenn die angeforderten Zeilen erhalten wurden, kann der Prozessorkern einen Zählwert, der von der Synchronisierverteileinheit 230 empfangen wird, ignorieren (Block 520). Die Lade/Schreibeinheit 270 benachrichtigt die Befehlsausgabe- und Steuereinheit 257, dass es einen Sondierungsanfragetreffer gibt (beispielsweise Prb-Treffer-Signal) und das ein „Fehler nach ACQUIRE") auftritt. Somit wird der „ACQUIRE-Befehl veranlasst, einen Fehler zu folgen, wie dies zuvor beschrieben ist. Für einen ausstehenden Beobachter führt der „ACQUIRE"-Befehl einfach zu einem Fehler.
  • Zu beachten ist, dass das zuvor beschriebene Computersystem 100 einen Verarbeitungsknoten aufweist, die einen oder mehrere Prozessorkerne enthalten, hierin auch berücksich tigt ist, dass in anderen Ausführungsformen die fortschrittliche Synchronisiereinrichtung und die zugehörige Hardware unter Anwendung von eigenständigen Prozessoren oder einer Kombination aus Verarbeitungsknoten und einzelnen Prozessoren bei Bedarf eingerichtet werden können. In derartigen Ausführungsformen enthält jeder einzelne Prozessor die gesamte zuvor beschriebene Hardware oder einen Teil davon und ist in der Lage, die Befehle auszuführen, die Teil der fortschrittlichen Synchronisiereinrichtung sind. Die Begriffe „Prozessor und Prozessorkern können in gewisser Weise anonym verwendet werden, mit Ausnahme, wenn spezielle Unterschiede verwiesen ist.
  • Codierungen und/oder Daten, die die in den vorhergehenden Abschnitten beschriebene Funktionen vermitteln, können auch auf einem Computer zugreifbaren/lesbaren Medium vorgesehen werden. Allgemein gesagt, ein computerzugreifbares/lesbares Medium enthält ein beliebiges Medium, auf das ein Computer während der Verwendung zugreifen kann, um damit Befehle und/oder Daten für den Computer bereitzustellen. Beispielsweise gehören zu einem Medium, auf das ein Computer zugreifen kann, Speichermedien, etwa magnetische oder optische Medien, beispielsweise Disketten (in Form von festmontierten oder entfernbaren), CD-ROM oder DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW, flüchtige und nicht-flüchtige Speichermedien (RAM), beispielsweise synchrone dynamische RAM (SDRAM), RAMBUS DRAM (RDRAM), statische RAM (SRAM), etc., ROM; Flash-Speicher, nicht-flüchtige Speicher (beispielsweise Flash-Speicher), über die auf eine periphere Schnittstelle zugegriffen werden kann, etwa einer universellen seriellen Bus- (USB) Schnittstelle, etc. sowie Medien, auf die über Übertragungsmedien oder Signale, etwa elektrische, elektromagnetische oder digitale Signale zugegriffen werden kann, die über ein Kommunikationsmedium, etwa ein Netzwerk und/oder eine drahtlose Verbindung übertragen werden.
  • Obwohl die Ausführungsformen in großen Detail beschrieben sind, können zahlreiche Variationen und Modifizierungen für den Fachmann ersichtlich werden, sobald er die obige Offenbarung vollständig dotiert hat. Es ist beabsichtigt, dass die folgenden Patentansprüche so interpretiert werden, dass alle derartigen Variationen und Modifizierungen mit erfasst werden.
  • Industrielle Anwendbarkeit:
  • Diese Erfindung ist allgemein auf Mikroprozessoren anwendbar.
  • Zusammenfassung
  • Ein Verfahren zum Bereitstellen einer selbstinitiierenden Synchronisierung in einem Computersystem (100) umfasst, dass ein Prozessor (18A, 18B) exklusiven Zugriff auf eine vorgegebene Speicherressource (314A bis 314D) anfordert. Die Anforderung enthält eine oder mehrere Adressen, die mit der vorgegebenen Speicherressource verknüpft sind. Das Verfahren umfasst ferner das Vergleichen jeder der Adressen in der Anforderung mit jeder Adresse in mehreren Gruppen aus Adressen. Jede Adresse in den Gruppen aus Adressen entspricht einer jeweiligen Speicherressource, für die eine Anforderungseinheit exklusiven Zugriff besitzt. Des weiteren umfasst das Verfahren in Reaktion darauf, dass eine Adresse der einen oder der mehreren Adressen mit einer Adresse in den mehreren Gruppen aus Adressen übereinstimmt, dass ein Zählwert (233) zurückgegeben wird, der mit dem Satz verknüpft ist, der die übereinstimmende Adresse enthält. Der Zählwert gibt die Anzahl an Anforderungseinheiten an, die im Hinblick auf die übereinstimmende Adresse in Konkurrenz zueinander stehen.

Claims (10)

  1. Verfahren mit: Anfordern eines exklusiven Zugriffs auf eine vorgegebene Speicherressource durch einen Prozessor (18A, 18B), wobei die Anforderung eine oder mehrere Adressen enthält, die mit der vorgegebenen Speicherressource verknüpft sind; Vergleichen jeder der einen oder mehreren Adressen mit jeder Adresse von mehreren Gruppen aus Adressen, wobei jede Adresse der mehreren Gruppen aus Adressen einer jeweiligen Speicherressource entspricht, für die einer Anforderungseinheit ausschließlicher Zugriff gewährt wurde; und in Reaktion darauf, dass eine Adresse der einen oder mehreren Adressen mit einer Adresse der mehreren Gruppen aus Adressen übereinstimmt, Zurückgeben eines Zählwertes, der mit der übereinstimmenden Adresse verknüpft ist, wobei der Zählwert kennzeichnend ist für eine Anzahl an Anforderungseinheiten, die im Hinblick auf die übereinstimmende Adresse in Konkurrenz zueinander stehen.
  2. Verfahren nach Anspruch 1, das ferner umfasst: Zurückgeben eines Zählwerts mit erfolgreichem Ergebnis mit dem Wert Null in Reaktion darauf, dass keine Adresse der einen oder mehreren Adressen mit einer Adresse in den mehreren Gruppen aus Adressen übereinstimmt.
  3. Verfahren nach Anspruch 1, das ferner umfasst: Verwenden des Zählwertes um zu bestimmen, ob ein anderer Prozessor exklusiven Zugriff auf eine andere Speicherressource besitzt.
  4. Verfahren nach Anspruch 1, wobei Anfordern eines exklusiven Zugriffs umfasst: Ausführen einer oder mehrerer verriegelter Speicherreferenzbefehle mit einem „LOCK"-Präfix, wobei das „LOCK"-Präfix bewirkt, dass Adressen, die mit den verriegelten Speicherreferenzbefehlen verknüpft sind, mit einem oder mehreren Indikationsbits während der Befehlsdecodierung markiert werden.
  5. Verfahren nach Anspruch 4, wobei Anfordern des exklusiven Zugriffs ferner umfasst: Ausführen eines „ACQUIRE"-Befehls, der bewirkt, dass jede der einen oder mehreren Adressen für die vorgegebene Speicherressource mit jeder Adresse der mehreren Gruppen aus Adressen verglichen wird.
  6. Verfahren nach Anspruch 4, das ferner umfasst: Speichern der mit den verriegelten Speicherreferenzbefehlen verknüpften Adressen in einem Prozessorpuffer und in Reaktion auf das Ausführen des „ACQUIRE"-Befehls, Senden aller Adressen in dem Prozessorpuffer, so dass diese verglichen werden.
  7. Computersystem (100) mit: einem oder mehreren Prozessoren (18A, 18B), die miteinander und mit einem oder mehreren Speicher (314A bis 314D) verbunden sind, wobei jeder der Prozessoren ausgebildet ist, Befehle zum Anfordern eines ausschließlichen Zugriffs auf eine vorgegebene Speicherressource auszuführen, wobei die Anforderung eine oder mehrere Adressen, die mit der vorgegebenen Speicherressource verknüpft sind, enthält; und einer Verteilungseinheit (230), die ausgebildet ist, jede der einen oder mehreren Adressen mit jeder Adresse von mehreren Gruppen aus Adressen zu vergleichen, wobei jede Adresse der mehreren Gruppen aus Adressen einer jeweiligen Speicherressource entspricht, für die einer Anforderungseinheit ausschließlicher Zugriff gewährt wurde; wobei die Verteileinheit ausgebildet ist, einen Zählwert (233), der mit der Gruppe verknüpft ist, die die übereinstimmende Adresse enthält, in Reaktion darauf zurückzugeben, dass eine Adresse der einen oder der mehreren Adressen mit einer Adresse in den mehreren Gruppen aus Adressen übereinstimmt, wobei der Zählwert kennzeichnend ist für eine Anzahl an Anforderungseinheiten, die im Hinblick auf die übereinstimmende Adresse miteinander in Konkurrenz stehen.
  8. Computersystem nach Anspruch 7, wobei die Verteileinheit ferner ausgebildet ist, einen ein erfolgreiches Ergebnis anzeigenden Zählwert von 0 in Reaktion darauf zurückzugeben, dass keine Adresse der einen oder mehreren Adressen mit einer Adresse in den mehreren Gruppen aus Adressen übereinstimmt.
  9. Computersystem nach Anspruch 7, wobei jeder der einen oder mehreren Prozessoren ferner ausgebildet ist, den Zählwert zu verwenden, um zu bestimmen, ob ein anderer Prozessor exklusiven Zugriff auf eine andere Speicherressource besitzt.
  10. Computersystem nach Anspruch 7, wobei jeder des einen oder der mehreren Prozessoren ferner ausgebildet ist: einen oder mehrere Speicherreferenzbefehle mit einem „LOCK"-Präfix auszuführen, wobei das „LOCK"-Präfix bewirkt, dass mit dem verriegelten Speicherreferenzbefehlen verknüpfte Adressen mit einer oder mehreren Indikationen während der Befehlsdecodierung markiert werden; einen „ACQUIRE"-Befehl auszuführen, der bewirkt, dass jede der einen oder der mehreren Adressen der vorgegebenen Speicherressource mit jeder Adressen der mehreren Gruppen aus Adressen verglichen wird.
DE112006002237.7T 2005-08-23 2006-08-23 Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem Active DE112006002237B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US71054805P 2005-08-23 2005-08-23
US60/710,548 2005-08-23
PCT/US2006/033192 WO2007025112A1 (en) 2005-08-23 2006-08-23 Method for proactive synchronization within a computer system

Publications (2)

Publication Number Publication Date
DE112006002237T5 true DE112006002237T5 (de) 2008-06-19
DE112006002237B4 DE112006002237B4 (de) 2023-04-06

Family

ID=37607137

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006002237.7T Active DE112006002237B4 (de) 2005-08-23 2006-08-23 Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem

Country Status (7)

Country Link
US (6) US20070050563A1 (de)
JP (1) JP5103396B2 (de)
KR (1) KR101369441B1 (de)
CN (1) CN101297270A (de)
DE (1) DE112006002237B4 (de)
GB (1) GB2445294B (de)
WO (1) WO2007025112A1 (de)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007025112A1 (en) * 2005-08-23 2007-03-01 Advanced Micro Devices, Inc. Method for proactive synchronization within a computer system
US7681020B2 (en) * 2007-04-18 2010-03-16 International Business Machines Corporation Context switching and synchronization
US20090125519A1 (en) * 2007-11-13 2009-05-14 Intel Corporation Device, system, and method for regulating software lock elision mechanisms
US8108610B1 (en) * 2008-10-21 2012-01-31 Nvidia Corporation Cache-based control of atomic operations in conjunction with an external ALU block
US8135926B1 (en) * 2008-10-21 2012-03-13 Nvidia Corporation Cache-based control of atomic operations in conjunction with an external ALU block
US8108557B2 (en) * 2009-01-22 2012-01-31 Hewlett-Packard Development Company, L.P. System and method for measuring clock skew on a network
US8316368B2 (en) * 2009-02-05 2012-11-20 Honeywell International Inc. Safe partition scheduling on multi-core processors
US9727508B2 (en) * 2009-04-27 2017-08-08 Intel Corporation Address learning and aging for network bridging in a network processor
US9384063B2 (en) * 2009-06-18 2016-07-05 Microsoft Technology Licensing, Llc Eliding synchronization in a concurrent data structure
WO2011022114A1 (en) 2009-08-20 2011-02-24 Rambus Inc. Atomic memory device
US8307198B2 (en) * 2009-11-24 2012-11-06 Advanced Micro Devices, Inc. Distributed multi-core memory initialization
US20110208921A1 (en) * 2010-02-19 2011-08-25 Pohlack Martin T Inverted default semantics for in-speculative-region memory accesses
US8793471B2 (en) * 2010-12-07 2014-07-29 Advanced Micro Devices, Inc. Atomic program verification
US9122476B2 (en) 2010-12-07 2015-09-01 Advanced Micro Devices, Inc. Programmable atomic memory using hardware validation agent
US8788794B2 (en) * 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
KR20120101761A (ko) * 2011-03-07 2012-09-17 삼성전자주식회사 캐시 페이즈 검출기 및 프로세서 코어
US10061618B2 (en) * 2011-06-16 2018-08-28 Imagination Technologies Limited Scheduling heterogenous computation on multithreaded processors
US9037838B1 (en) * 2011-09-30 2015-05-19 Emc Corporation Multiprocessor messaging system
TWI454922B (zh) * 2011-12-19 2014-10-01 Phison Electronics Corp 記憶體儲存裝置及其記憶體控制器與資料寫入方法
CN104025027B (zh) * 2011-12-30 2017-08-15 英特尔公司 结构访问处理器、方法、系统和指令
US9430391B2 (en) * 2012-03-29 2016-08-30 Advanced Micro Devices, Inc. Managing coherent memory between an accelerated processing device and a central processing unit
US9086957B2 (en) 2012-08-02 2015-07-21 International Business Machines Corporation Requesting a memory space by a memory controller
CN103020003A (zh) * 2012-12-31 2013-04-03 哈尔滨工业大学 面向多核程序确定性重演的内存竞争记录装置及其控制方法
KR102020358B1 (ko) * 2013-03-14 2019-11-05 삼성전자 주식회사 단말 및 그 단말에서 애플리케이션 동기화 방법
US9146885B2 (en) * 2013-05-17 2015-09-29 Analog Devices, Inc. Parallel atomic increment
US10229043B2 (en) 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
US9256553B2 (en) * 2014-03-26 2016-02-09 International Business Machines Corporation Transactional processing based upon run-time storage values
US9262343B2 (en) * 2014-03-26 2016-02-16 International Business Machines Corporation Transactional processing based upon run-time conditions
CN104035888B (zh) * 2014-06-11 2017-08-04 华为技术有限公司 一种缓存数据的方法及存储设备
US9710381B2 (en) 2014-06-18 2017-07-18 International Business Machines Corporation Method and apparatus for cache memory data processing
US9740614B2 (en) * 2014-06-27 2017-08-22 International Business Machines Corporation Processor directly storing address range of co-processor memory accesses in a transactional memory where co-processor supplements functions of the processor
US9619386B2 (en) 2015-01-29 2017-04-11 Kabushiki Kaisha Toshiba Synchronization variable monitoring device, processor, and semiconductor apparatus
US9513960B1 (en) 2015-09-22 2016-12-06 International Business Machines Corporation Inducing transactional aborts in other processing threads
US10261827B2 (en) 2015-10-29 2019-04-16 International Business Machines Corporation Interprocessor memory status communication
US9563467B1 (en) 2015-10-29 2017-02-07 International Business Machines Corporation Interprocessor memory status communication
US9916179B2 (en) 2015-10-29 2018-03-13 International Business Machines Corporation Interprocessor memory status communication
US9760397B2 (en) 2015-10-29 2017-09-12 International Business Machines Corporation Interprocessor memory status communication
US9772874B2 (en) * 2016-01-29 2017-09-26 International Business Machines Corporation Prioritization of transactions based on execution by transactional core with super core indicator
US20170300427A1 (en) * 2016-04-18 2017-10-19 Mediatek Inc. Multi-processor system with cache sharing and associated cache sharing method
RU2623806C1 (ru) * 2016-06-07 2017-06-29 Акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы" (АО НПЦ "ЭЛВИС") Способ и устройство обработки стереоизображений
US10237198B2 (en) 2016-12-06 2019-03-19 Hewlett Packard Enterprise Development Lp Shared-credit arbitration circuit
US10721185B2 (en) 2016-12-06 2020-07-21 Hewlett Packard Enterprise Development Lp Age-based arbitration circuit
US10452573B2 (en) 2016-12-06 2019-10-22 Hewlett Packard Enterprise Development Lp Scripted arbitration circuit
US10944694B2 (en) * 2016-12-06 2021-03-09 Hewlett Packard Enterprise Development Lp Predictive arbitration circuit
US11157407B2 (en) * 2016-12-15 2021-10-26 Optimum Semiconductor Technologies Inc. Implementing atomic primitives using cache line locking
US10223186B2 (en) * 2017-02-01 2019-03-05 International Business Machines Corporation Coherency error detection and reporting in a processor
US10776282B2 (en) 2017-12-15 2020-09-15 Advanced Micro Devices, Inc. Home agent based cache transfer acceleration scheme
US10693811B2 (en) 2018-09-28 2020-06-23 Hewlett Packard Enterprise Development Lp Age class based arbitration
US10796399B2 (en) 2018-12-03 2020-10-06 Advanced Micro Devices, Inc. Pixel wait synchronization
CN109933543B (zh) * 2019-03-11 2022-03-18 珠海市杰理科技股份有限公司 Cache的数据锁定方法、装置和计算机设备
CN110490581B (zh) * 2019-07-18 2022-09-30 拉货宝网络科技有限责任公司 一种分布式系统临界数据资源更新方法及系统
US20220100504A1 (en) * 2020-09-25 2022-03-31 Advanced Micro Devices, Inc. Shared data fabric processing client reset system and method
US11740973B2 (en) * 2020-11-23 2023-08-29 Cadence Design Systems, Inc. Instruction error handling
US11972117B2 (en) * 2021-07-19 2024-04-30 EMC IP Holding Company LLC Selecting surviving storage node based on environmental conditions
US11892972B2 (en) * 2021-09-08 2024-02-06 Arm Limited Synchronization mechanisms for a multi-core processor using wait commands having either a blocking or a non-blocking state

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4574350A (en) 1982-05-19 1986-03-04 At&T Bell Laboratories Shared resource locking apparatus
US4725946A (en) 1985-06-27 1988-02-16 Honeywell Information Systems Inc. P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment
US5142676A (en) 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
CA2045791A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch performance in high speed processor
US5285528A (en) * 1991-02-22 1994-02-08 International Business Machines Corporation Data structures and algorithms for managing lock states of addressable element ranges
US5613139A (en) * 1994-05-11 1997-03-18 International Business Machines Corporation Hardware implemented locking mechanism for handling both single and plural lock requests in a lock message
JP4086259B2 (ja) * 1995-08-04 2008-05-14 株式会社東芝 通信システム
US5968157A (en) * 1997-01-23 1999-10-19 Sun Microsystems, Inc. Locking of computer resources
US6343338B1 (en) * 1997-04-01 2002-01-29 Microsoft Corporation System and method for synchronizing disparate processing modes and for controlling access to shared resources
US6219751B1 (en) * 1998-04-28 2001-04-17 International Business Machines Corporation Device level coordination of access operations among multiple raid control units
US6182186B1 (en) * 1998-06-30 2001-01-30 Sun Microsystems, Inc. Method and apparatus that utilizes lock states to lock resources
US6389519B1 (en) * 1999-07-19 2002-05-14 Ati International Srl Method and apparatus for providing probe based bus locking and address locking
US6651088B1 (en) * 1999-07-20 2003-11-18 Hewlett-Packard Development Company, L.P. Method for reducing coherent misses in shared-memory multiprocessors utilizing lock-binding prefetchs
KR100331565B1 (ko) * 1999-12-17 2002-04-06 윤종용 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6604162B1 (en) * 2000-06-28 2003-08-05 Intel Corporation Snoop stall reduction on a microprocessor external bus
US6678772B2 (en) * 2000-12-19 2004-01-13 International Businesss Machines Corporation Adaptive reader-writer lock
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US7325064B2 (en) * 2001-07-17 2008-01-29 International Business Machines Corporation Distributed locking protocol with asynchronous token prefetch and relinquish
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US20060218556A1 (en) * 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US6986005B2 (en) * 2001-12-31 2006-01-10 Hewlett-Packard Development Company, L.P. Low latency lock for multiprocessor computer system
US7089371B2 (en) * 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
US6721816B1 (en) * 2002-02-27 2004-04-13 Advanced Micro Devices, Inc. Selecting independently of tag values a given command belonging to a second virtual channel and having a flag set among commands belonging to a posted virtual and the second virtual channels
US7685583B2 (en) * 2002-07-16 2010-03-23 Sun Microsystems, Inc. Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory
US7814488B1 (en) * 2002-09-24 2010-10-12 Oracle America, Inc. Quickly reacquirable locks
US20040068607A1 (en) * 2002-10-07 2004-04-08 Narad Charles E. Locking memory locations
US7117481B1 (en) * 2002-11-06 2006-10-03 Vmware, Inc. Composite lock for computer systems with multiple domains
US7162589B2 (en) * 2002-12-16 2007-01-09 Newisys, Inc. Methods and apparatus for canceling a memory data fetch
US7290105B1 (en) * 2002-12-16 2007-10-30 Cisco Technology, Inc. Zero overhead resource locks with attributes
US7080209B2 (en) * 2002-12-24 2006-07-18 Intel Corporation Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
US7269717B2 (en) * 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US20040268046A1 (en) * 2003-06-27 2004-12-30 Spencer Andrew M Nonvolatile buffered memory interface
US20050120185A1 (en) * 2003-12-01 2005-06-02 Sony Computer Entertainment Inc. Methods and apparatus for efficient multi-tasking
US8332483B2 (en) * 2003-12-15 2012-12-11 International Business Machines Corporation Apparatus, system, and method for autonomic control of grid system resources
US7210019B2 (en) * 2004-03-05 2007-04-24 Intel Corporation Exclusive access for logical blocks
US20050283783A1 (en) * 2004-06-22 2005-12-22 Desota Donald R Method for optimizing pipeline use in a multiprocessing system
JP4287799B2 (ja) * 2004-07-29 2009-07-01 富士通株式会社 プロセッサシステムおよびスレッド切り替え制御方法
US7406625B2 (en) * 2004-08-17 2008-07-29 International Business Machines Corporation Protecting a code range in a program from breakpoints
US20060095685A1 (en) * 2004-11-03 2006-05-04 Bonola Thomas J System and method to coordinate access to a sharable data structure using deferred cycles
US7454570B2 (en) * 2004-12-07 2008-11-18 International Business Machines Corporation Efficient memory update process for on-the-fly instruction translation for well behaved applications executing on a weakly-ordered processor
US7797704B2 (en) * 2005-03-30 2010-09-14 Hewlett-Packard Development Company, L.P. System and method for performing work by one of plural threads using a lockable resource
WO2007025112A1 (en) * 2005-08-23 2007-03-01 Advanced Micro Devices, Inc. Method for proactive synchronization within a computer system

Also Published As

Publication number Publication date
US7627722B2 (en) 2009-12-01
GB0802809D0 (en) 2008-03-26
US20070050560A1 (en) 2007-03-01
US7552290B2 (en) 2009-06-23
JP5103396B2 (ja) 2012-12-19
US20070050562A1 (en) 2007-03-01
US20070067529A1 (en) 2007-03-22
GB2445294B (en) 2009-01-21
CN101297270A (zh) 2008-10-29
WO2007025112A1 (en) 2007-03-01
US20070050559A1 (en) 2007-03-01
US7606985B2 (en) 2009-10-20
KR101369441B1 (ko) 2014-03-04
US20070050563A1 (en) 2007-03-01
GB2445294A (en) 2008-07-02
US20070050561A1 (en) 2007-03-01
DE112006002237B4 (de) 2023-04-06
JP2009506436A (ja) 2009-02-12
US7636819B2 (en) 2009-12-22
KR20080038435A (ko) 2008-05-06

Similar Documents

Publication Publication Date Title
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE102010051477B4 (de) Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE112009000344B4 (de) Zugriffsrechte auf eine Speicher-Map
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE102018003221A1 (de) Unterstützung gelernter Sprungprädiktoren
DE112006001698T5 (de) Grundfunktionen zum Verbessern von Thread-Level Spekulation
DE102009061252B3 (de) Vorrichtung, Verfahren und System zur Verarbeitung einer Transaktion auf einem PCI-Bus mittels eines Root-Komplexes
DE112013005086T5 (de) Kohärenzprotokoll für Hochleistungszwischenverbindung
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE102016219651A1 (de) Für Vorabzugriff unempfindlicher transaktionsgebundener Speicher
DE112009005006T5 (de) Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
DE102013200503A1 (de) Virtualisierungs-Support zum Speichern und Wiederherstellen von Zuständen einer Sprungvorhersage-Logik
DE112005001515T5 (de) Verfahren und Vorrichtung zur spekulativen Ausführung von nicht kollisionsbehafteten Sperrbefehlen
DE112012005727T5 (de) Kombinierte "Cache einfügen und sperren"-Operation
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE102009032076A1 (de) Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE102009031497A1 (de) Erfüllung der Speicher-Ordering-Anforderungen zwischen Partial-Write- und Non-Snoop-Zugriffen
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R018 Grant decision by examination section/examining division
R020 Patent grant now final