DE69730164T2 - Steuerung von speicherzugriffsanordnung in einem multiprozessorsystem - Google Patents

Steuerung von speicherzugriffsanordnung in einem multiprozessorsystem Download PDF

Info

Publication number
DE69730164T2
DE69730164T2 DE69730164T DE69730164T DE69730164T2 DE 69730164 T2 DE69730164 T2 DE 69730164T2 DE 69730164 T DE69730164 T DE 69730164T DE 69730164 T DE69730164 T DE 69730164T DE 69730164 T2 DE69730164 T2 DE 69730164T2
Authority
DE
Germany
Prior art keywords
memory
accesses
access
address
statement
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.)
Expired - Lifetime
Application number
DE69730164T
Other languages
English (en)
Other versions
DE69730164D1 (de
Inventor
Millind Mittal
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE69730164D1 publication Critical patent/DE69730164D1/de
Publication of DE69730164T2 publication Critical patent/DE69730164T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions

Description

  • STAND DER TECHNIK
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft das Gebiet der Prozessoren und im Besonderen eine Technik zum Vorsehen einer Speicherzugriffsanordnung in einer Mehrfachverarbeitungsumgebung.
  • 2. Beschreibung des Stands der Technik
  • Beim Betrieb eines Prozessors ist die Reihenfolge bzw. die Anordnung, in der Programmanweisungen ausgeführt werden, von entscheidender Bedeutung für den ordnungsgemäßen Betrieb des Prozessors. Während ältere Prozessoren die Operationen für einen Speicherzugriff in der Reihenfolge ausgeführt habe, in der die Befehle von einem Programm ausgeführt werden, können moderne bzw. höher entwickelte Prozessoren die Reihenfolge ändern, in der die Zugriffe auf den Speicher erfolgen, vorausgesetzt, dass der Prozessor einen Datensatz der ordnungsgemäßen Reihenfolge der Speicherzugriffe speichert. Die Technik für die Neuordnung der Speicherzugriffe (wie etwa der Lese- und Schreiboperationen aus einem bzw. in einen Speicher) ist besonders wünschenswert, da eine derartige Neuordnung bzw. Umordnung die Geschwindigkeit der Datenverarbeitung erhöhen kann. Wenn ein bestimmter Speicherzugriff zum Beispiel aus einem einer Vielzahl von Gründen ansteht, kann der Prozessor mit dem nächsten Zugriff fortfahren, wenn die Umordnung zulässig ist. Ansonsten muss der Prozessor warten, bis der aktuelle Zugriff abgeschlossen ist, bevor er mit dem nächsten Zugriff fortfahren kann. Somit ist ein signifikanter Leistungsvorteil gegeben, wenn Speicherzugriffe in einer anderen Reihenfolge ausgeführt werden können als der vom Programm vorausgesetzten Reihenfolge.
  • Somit kann in moderneren Prozessoren die Reihenfolge von "Lesevorgängen" und/oder "Schreibvorgängen" (die auch als "Ladevorgänge" und "Speichervorgänge" bezeichnet werden) aus/in einen Speicher in Bezug auf die tatsächliche Folge geändert werden, die durch die Ausführung von Programmanweisungen vorgesehen wird. Der Prozessor erhält wiederum die erforderliche Kontrolle aufrecht, so dass eine finale Reihenfolge bzw. Anordnung der verschiedenen Ergebnisse der Zugriffe mit den Programmanweisungen übereinstimmt. Dies gilt auch dann, wenn der Cache-Speicher oder die Cache-Speicher in Verbindung mit einem Hauptspeicher verwendet werden. In diesem Fall wird die Steuerung der Reihenfolge der Speicherzugriffe dadurch komplizierter gestaltet, dass die Position der gültigen Daten aufrechterhalten wird, wobei das Konzept insgesamt das gleiche ist.
  • Wenn jedoch mehrere Prozessoren (oder Vorrichtungen, die auf einen Speicher zugreifen können) verwendet werden, wobei ein bestimmter Speicher oder ein bestimmter Speicherabschnitt von mehr als einem Prozessor gemeinsam genutzt wird, weist ein Computersystem mit mehreren Prozessoren die weitere Einschränkung auf, dass sichergestellt werden muss, dass die Reihenfolge der Speicherzugriffe von einem Prozessor für die anderen Prozessoren sichtbar gemacht wird, gemäß der Reihenfolge bzw. der Anordnung der Programmanweisungen oder wenigstens gemäß dem gemeinsam genutzten Speicherplatz. Das heißt, wenn jeder einzelne Prozessor einen Datensatz der Umordnung der von ihm erzeugten Speicherzugriffe speichern kann, weiß bzw. wissen der bzw. die Prozessor(en) unter Umständen nicht, dass diese Umordnung erfolgt ist. Demgemäß muss ein Zugriff auf eine gemeinsam genutzte Speicherposition, die durch einen Prozessor in dem System erzeugt worden ist, von den anderen Prozessor(en) in der gleichen Reihenfolge verfolgt (sichtbar gemacht) werden, wie dies in dem Programm ausgeführt ist, sofern ein Mechanismus existiert, der eine Umordnung zulässt. Ansonsten besteht die Möglichkeit, dass es sich bei den von einem Prozessor erhaltenen Daten nicht um die von dem Programm benötigten gültigen Daten handelt.
  • Ein Mechanismus zur Steuerung der Zugriff auf einen Speicherbereich, der von mehreren Prozessoren gemeinsam genutzt wird, ist der Einsatz eines Semaphors (oder einer Flagge) als ein "Schlüssel" für den Zugang auf den gemeinsam genutzten Bereich. Bei diesem System kann ein Prozessor den Zugang in den gemeinsam genutzten Speicherbereich nur dann erlangen, wenn er einen Zugriff auf die "Sperre" bzw. das Schloss erhält, die bzw. das den gemeinsam genutzten Bereich regelt. Zu einem gegebenen Zeitpunkt wird nur einem Prozessor die Kontrolle über die Sperre gewährt. Wenn einem Prozessor durch Erfassen der Sperre der Zugang in den gemeinsam genutzten Speicherbereich gewährt wird, muss er den Semaphor so setzen, dass es verhindert wird, dass ein anderer Prozessor Zugang in den gemeinsam genutzten Bereich erhält, bis die Sperre freigegeben wird. Für gewöhnlich ist eine bestimmte Speicherposition als Sperre bezeichnet, und Werte, die an diese Speicherposition geschrieben werden, bestimmen die Zustände des Semaphors.
  • Unter Verwendung des vorstehend beschriebenen Sperrsystems ist die Neu- bzw. Umordnung von Zugriffen ein Problem, wenn die Zugriffe erfolgen, um die Sperre für den gemeinsam genutzten Speicherbereich zu erfassen oder freizugeben. Jeder Prozessor kann allgemein die Zugriffe auf den eigenen nicht gemeinsam genutzten Speicherbereich frei umordnen, da auf diesen Bereich durch keine anderen Prozessoren zugegriffen wird, und wobei diese Zugriffe auf einen nicht gemeinsam genutzten Speicherbereich nicht für die anderen Prozessoren in der richtigen Reihenfolge sichtbar gemacht werden müssen. Hiermit wird festgestellt, dass andere Vorrichtungen wie etwa Ein-Ausgabevorrichtungen ebenfalls die Kontrolle über die Anordnung der Zugriffe erfordern können. Die Regelung der Zugriffsanordnung ist von Bedeutung, wenn zwei Zugriffe in einer bestimmten Reihenfolge ausgeführt werden müssen. Somit ist die Anordnung der Zugriffe nur auf Speicherzugriffe beschränkt.
  • Die Visibilität bzw. Sichtbarkeit ist für einen Lesevorgang und einen Schreibvorgang wie folgt definiert. Ein Lesevorgang aus einer Adresse A durch einen Prozessor P1 ist dann für einen zweiten Prozessor P2 sichtbar, wenn ein Schreibvorgang in eine Adresse A durch P2 den von P1 gelesenen Wert nicht verändern kann. In ähnlicher Weise gilt ein Schreibvorgang in eine Adresse A durch den Prozessor P1 für einen zweiten Prozessor P2 sichtbar, wenn ein Lesevorgang aus der Adresse A, erteilt durch das Programm, den Wert von A nicht vor dem Schreibvorgang durch P1 zurückgeben kann.
  • Der Einsatz von Semaphoren zur Steuerung der Zugriffe auf den gemeinsam genutzten Speicherplatz kann geeignete Steuerungen vorsehen, wenn einem Prozessor der Zugang in den gemeinsam genutzten Bereich gelingt. Es besteht jedoch weiterhin ein Problem in Bezug auf die ordnungsgemäße Anordnung der Zugriff zum Erfassen und Freigeben der Sperre. Da zum Erfassen und Freigeben der Sperre Speicherzugriffe erforderlich sind, ist es für einen Prozessor möglich, die Zugriffe in Bezug auf dessen andere Speicherzugriffe umzuordnen, einschließlich der Speicherzugriffe auf den gemeinsam genutzten Speicherbereich. Da die Position der Sperre von den anderen Prozessoren in dem System gemeinsam genutzt wird, können die Zugriffe zum Erfassen und Freigeben der Sperre für die anderen Prozessoren nicht in der ordnungsgemäßen Folge im Verhältnis zu den Zugriffen auf den gemeinsam genutzten Bereich des Speichers sichtbar sein. Somit wird weiterhin ein gewisser Mechanismus benötigt, um die Anordnung bzw. Reihenfolge von Speicherzugriffen zum Erfassen und Freigeben der Sperre aufrechtzuerhalten, damit diese Zugriffe sichtbar gemacht werden.
  • Vorgesehen ist gemäß der vorliegenden Erfindung somit eine Technik zur Regelung der Anordnung der Speicherzugriffe in einem System mit mehreren auf einen Speicher zugreifenden Vorrichtungen, und wobei mehr als eine Vorrichtung auf eine gemeinsam genutzte Position in dem Speicher zugreifen können. Ferner sieht die erfindungsgemäße Technik eine Anordnung der Speicherzugriffe über eine Anweisungsunterstützung vor, ohne dass dafür Modifikationen in Bezug auf die bestehenden Lade- und Speicheranweisungen erforderlich sind, die für einen Zugriff auf den Speicher verwendet werden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Vorgesehen ist gemäß einem ersten Aspekt der vorliegenden Erfindung ein Computersystem gemäß dem gegenständlichen Anspruch 1.
  • Vorgesehen ist gemäß einem zweiten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen Anspruch 7.
  • Die vorliegende Erfindung beschreibt eine Technik zur Regelung der Anordnung bzw. der Reihenfolge der Speicherzugriffe in einem Mehrprozessorsystem, wobei eine Folge von Zugriffen zum Erfassen, Zugreifen auf und Freigeben eines gemeinsam genutzten Speicherbereichs strikt befolgt wird, und zwar unter Verwendung von zwei speziellen Anweisungen bzw. Befehlen zur Regelung der Reihenfolge der Speicherzugriffe. In einem Computersystem mit Mehrfachverarbeitung, in dem die Verarbeitungsvorrichtungen (wie etwa Prozessoren) die Zugriffe auf den Speicher umordnen können, muss die ordnungsgemäße Reihenfolge der Erfassung, des Zugriffs auf und der Freigabe des gemeinsam genutzten Speicherbereichs von jedem Prozessor beibehalten und für die anderen Prozessoren in der Programmanordnung sichtbar gemacht werden.
  • Die vorliegende Erfindung verwendet zwei Anweisungen, die als MFDA (Memory Fence Directional – Acquire) und MFDR (Memory Fence Directional – Release) bezeichnet sind, für die Regelung der Anordnung bzw. der Reihenfolge der Speicherzugriffe auf den gemeinsam genutzten Bereich. Wenn die MFDA-Anweisung in einem Programm auftritt, stellt sie sicher, dass alle vorherigen Zugriffe auf die spezifizierte Adresse (für gewöhnlich die einer Sperre zugeordnete Adresse, die einen Zugriff auf den bzw. die gemeinsam genutzte(n) Speicherposition(en) ermöglicht) für andere Prozessoren sichtbar werden, bevor zukünftige Zugriffe zugelassen werden. Wenn die MFDR-Anweisung in einem Programm auftritt, stellt sie sicher, dass alle vorherigen Zugriffe für andere Prozessoren sichtbar werden, bevor zukünftige Zugriffe auf die spezifizierte Adresse erfolgen.
  • Unter Verwendung der MFDA- und MFDR-Anweisungen als Synchronisierungspunkte zur Erfassung und Freigabe der einem gemeinsam genutzten Bereich zugeordneten Sperre sowie durch die Programmierung der Zugriffe auf den gemeinsam genutzten Bereich zwischen zwei Anweisungen werden die Reihenfolge des Erfassens, des Zugriffs und der Freigabe in Bezug auf den gemeinsam genutzten Bereich aufrechterhalten. In Bezug auf die anderen Bereiche, für die eine derartige Anordnung nicht erforderlich ist, können die Zugriffe einfach neu angeordnet werden, da die MFDA- und MFDR-Anweisungen die Einschränkungen in Bezug auf die Anordnung bzw. die Reihenfolge nur der spezifizierten Adresse auferlegen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • In den Zeichnungen zeigen:
  • 1 ein schematisches Blockdiagramm eines dem Stand der Technik entsprechenden Mehrprozessor-Computersystems mit mehreren Prozessoren, die mit einem Speicher gekoppelt sind, und wobei auf einen Abschnitt des Speichers durch mehr als einen Prozessor zugegriffen wird, wobei jedoch eine Sperre verwendet wird, um nur einem Prozessor den Zugriff auf den gemeinsam genutzten Speicherbereich zu gewähren;
  • 2 ein Blockdiagramm von Elementen eines der Prozessoren für das Computersystem aus 1;
  • 3 eine Ablauffolge von Programmschritten für den Prozessor aus 2, einschließlich der Zugriffe zum Erfassen und Freigeben der Sperre mit einer Regelung der Zugriffe auf den gemeinsamen genutzten Bereich des Speichers;
  • 4 ein Anordnungsschema für die Programmierschritte aus 3 bei der Verwendung eines Modells mit sequenzieller Konsistenz;
  • 5 ein Anordnungsschema für die Programmierschritte aus 3 bei der Verwendung eines Prozessorkonsistenzmodells;
  • 6 ein Anordnungsschema für die Programmierschritte aus 3 bei der Verwendung eines schwachen Konsistenzmodells;
  • 7 ein Anordnungsschema für die Programmierschritte aus 3 bei der Verwendung eines Freigabekonsistenzmodells;
  • 8 eine Implementierung der vorliegenden Erfindung in der Erfüllung des Freigabekonsistenzmodells aus 7 unter Verwendung von zwei direktionalen Anweisungen gemäß der vorliegenden Erfindung zum Vorsehen von Erfassungs- und Freigabe-Synchronisierungspunkten in Bezug auf die Zugriffe auf den gemeinsam genutzten Speicherbereich;
  • 9 eine Ablauffolge von Programmierschritten, wobei eine MFDA-Anweisung des bevorzugten Ausführungsbeispiels verwendet wird, um einen direktionalen Erfassungs-Synchronisierungspunkt zu erzeugen;
  • 10 eine Ablauffolge von Programmierschritten, wobei eine MFDR-Anweisung des bevorzugten Ausführungsbeispiels verwendet wird, um einen direktionalen Freigabe-Synchronisierungspunkt zu erzeugen; und
  • 11 ein Blockdiagramm eines Computersystems, wobei die MFDA- und MFDR-Anweisungen implementiert werden.
  • GENAUE BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • Beschrieben wird eine Technik zur Regelung der Anordnung bzw. der Reihenfolge der Speicherzugriffe in einem Mehrfachverarbeitungssystem. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten ausgeführt, wie etwa spezielle Anweisungen, Anweisungsformate, Bauteile wie etwa eine bestimmte Speicherart, Prozessorelemente, etc., um ein umfassendes Verständnis der vorliegenden Erfindung zu vermitteln. Der Fachmann auf dem Gebiet wird jedoch erkennen, dass die vorliegende Erfindung auch ohne die spezifischen Einzelheiten ausgeführt werden kann. In anderen Fällen wurde auf die genaue Beschreibung allgemein bekannter Techniken und Strukturen verzichtet, um die vorliegende Erfindung nicht unnötig zu verschleiern. Hiermit wird festgestellt, dass die vorliegende Erfindung als spezielle Anweisungen für einen Prozessor implementiert ist, wobei die Erfindung jedoch auch in anderen Anweisungsformaten ausgeführt werden kann.
  • Zum Verständnis des Anordnungssystems für den Speicherzugriff und die durch die vorliegende Erfindung vorgesehene Regelung müssen zuerst ein Mehrprozessorsystem und ein Anordnungsschema für den Speicherzugriff für den Einsatz in einem derartigen Mehrprozessorsystem verstanden werden. Demgemäß veranschaulicht die Abbildung aus 1 ein beispielhaftes Mehrprozessor-Computersystem 10, wobei eine Mehrzahl von Prozessoren 11 in dem System arbeitet. Die Veranschaulichung zeigt vier Prozessoren 11 (die mit P1 bis P4 gekennzeichnet sind), wobei die tatsächliche Anzahl der Prozessoren 11 von der jeweils gewählten Konfiguration abhängig ist. Alle Prozessoren 11 sind über einen Bus 13 mit einem Speicher 12 gekoppelt und speziell mit einem gemeinsam genutzten Speicherbereich 15 innerhalb des Speichers 12.
  • Hiermit wird festgestellt, dass für die Konfiguration des Speichers 12 eine Vielzahl von Möglichkeiten bestehen. Der Speicher 12 wird zum Speichern von Informationen (Daten und/oder Programmanweisungen) zur Verwendung durch die Prozessoren 11 verwendet. Im Allgemeinen werden Informationen durch die Prozessoren 11 aus dem Speicher 12"gelesen" ("geladen"), und Informationen werden ferner durch die Prozessoren in den Speicher 12"geschrieben" ("gespeichert"). Der allgemeine Zugriff auf den Speicher 12 durch jeden der Prozessoren 11 ist im Fach allgemein bekannt. Bei dem Speicher 12 kann es sich um eine Vielzahl von Speichern handeln, wie etwa RAM-Hauptspeicher (Direktzugriffsspeicher) und/oder eine Massenspeichervorrichtung wie etwa eine Festplatte. Es kann sich aber auch um einen Cache-Speicher handeln. In dem speziellen Beispiel greifen alle vier Prozessoren 11 auf den Speicher 12 zu, und wobei der Zugriff auf einen ausgewählten Bereich des Speichers 12, der als gemeinsam genutzter Bereich 15 bezeichnet wird, erfolgt durch alle vier Prozessoren. In dem Speicher 12 können sich auch weitere gemeinsam genutzte Bereiche befinden, wobei zwei oder mehr Prozessoren 11 auf diese gemeinsam genutzten Bereiche zugreifen können. Die nicht gemeinsam genutzten Bereiche des Speichers 12 sind allgemein nur für den Zugriff durch einen Prozessor 11 vorgesehen.
  • Wenn demgemäß durch nur einen Prozessor 11 auf Positionen in dem Speicher 12 zugegriffen wird, ist ausschließlich die Datenabhängigkeit von Belang. Wenn jedoch mehrere Prozessoren auf Positionen in dem Speicher zugreifen können, die als gemeinsam genutzte Positionen vorgesehen sind, wie etwa der gemeinsam genutzte Bereich 15, so muss eine zusätzliche Steuerung bzw. Regelung verwendet werden, um die Zugriffe zu steuern und zu begrenzen, so dass die von einem Prozessor verwendeten Daten nicht durch einen zweiten Prozessor korrumpiert werden. Eine Technik zur Implementierung einer derartigen Steuerung ist der Einsatz eines Semaphors bzw. einer Flagge. Für den Zugriff auf den gemeinsam genutzten Bereich wird der Semaphor (auch als Flagge, Sperre oder gemeinsam genutzte Variable bezeichnet) verwendet, so dass zu einem bestimmten Zeitpunkt nur ein Prozessor auf den gemeinsam genutzten Bereich zugreifen kann (zumindest in Bezug auf die Änderung des Werts der darin gespeicherten Informationen).
  • In der Abbildung aus 1 wird der Semaphor als Sperre (oder Sperrvariable) 16 verwendet, die zur Steuerung der Zugriff auf den gemeinsam genutzten Bereich 15 zugewiesen ist (wie dies durch die gestrichelte Linie 17 dargestellt ist). Die Sperre 16 ist eine bestimmte Speicherposition, die so zugewiesen wird, dass sie einen Wert aufweist, der der Implementierung von Zugriffen auf den gemeinsam genutzten Bereich 15 zugeordnet ist. Damit einer der Prozessoren 11 auf den gemeinsam genutzten Bereich 15 zugreifen kann, muss er somit zuerst auf die Sperre 16 zugreifen und den Zustand bzw. Status (Wert) der an der Sperrposition 16 gespeicherten Daten testen. In dem einfachsten Format können zwei Werte (zum Beispiel die Bitzustände 1 und 0) zugewiesen werden, um die Sperrzustände anzuzeigen.
  • Hiermit wird festgestellt, dass die tatsächlichen Sperrwerte und Sperrzustände für die Sperre 16 gemäß dem jeweiligen Design ausgewählt werden können, und wobei zahlreiche Variationen möglich sind, abweichend von dem hierin beschriebenen Beispiel. Ferner muss sich die Position der Sperre 16 nicht in dem Speicher 12 selbst befinden. Es ist auch möglich, dass andere Speicherzugriffsvorrichtungen (Vorrichtungen wie etwa Steuereinheiten für den direkten Speicherzugriff) den Zugriff auf den gemeinsam genutzten Speicherbereich 15 versuchen können. In diesen Fällen würden die Vorrichtungen eine ähnliche Funktionsweise wie die hierin beschriebenen Prozessoren 11 für die Erlangung eines Zugriffs auf den gemeinsam genutzten Bereich 15 aufweisen.
  • Der Zugriff auf den Speicher 12 durch die Prozessoren 11 zur Datenübertragung umfasst für gewöhnlich den Einsatz von Lade- und Speicheroperationen. Der Einsatz von Lade- und Speicheranweisungen für "Lese"- und "Schreib"-Operationen ist allgemein bekannt. Da sich die Sperre 16 in dem Beispiel an einem bestimmten Speicherplatz befindet, können ähnliche Lade-/Speichertyp-Operationen zum Lesen aus und Schreiben in die Sperre 16 verwendet werden. Eine Lese-Modifikations-Schreib-Operation unter Verwendung von Lade-/Speicheranweisungen (oder sonstiger spezieller Anweisungen) kann zum Erfassen der Sperre 16 verwendet werden. Eine Lese-Modifikations-Schreib-Operation würde den Sperrwert lesen, und falls der Wert einen Zustand mit einem verfügbaren Zugriff bezeichnet (kein anderer Prozessor kann zugreifen), so wird der Wert modifiziert und zurück an die Sperrposition geschrieben. Der modifizierte Wert bezeichnet einen gesperrten Zustand, so dass für den Fall, dass andere Prozessoren den Wert an der Sperrposition 16 lesen, der Zugriff nicht gewährt wird. Wenn der ursprüngliche Prozessor den gemeinsam genutzten Bereich 15 nicht mehr nutzen muss, schreibt er den ursprünglichen Wert zurück an die Sperrposition, wodurch der gemeinsam genutzte Bereich 15 freigegeben wird. Ein Beispiel für eine derartige Lese-Modifikations-Schreib-Anweisung für den Zugriff auf eine Sperre wird in dem U.S. Patent US-A-5.889.983.
  • In Bezug auf die Abbildung aus 2 sind die Grundelemente eines Prozessors dargestellt, die zur Ausführung der vorliegenden Erfindung erforderlich sind. Im Allgemeinen weist jeder Prozessor 11 eine Ausführungseinheit 18, eine Registerdatei 19 und eine Prefetch-/Decodierer-Einheit 20 auf. Die Ausführungseinheit 18 ist der Verarbeitungskern des Prozessors 11 zur Ausführung verschiedener Prozessoranweisungen. Die Registerdatei 19 ist eine Reihe von Allzweckregistern zum Speichern verschiedener von der Ausführungseinheit 18 benötigter Informationen. Modernere Systeme können mehr als eine Registerdatei aufweisen. Die Prefetch-/Decodierer-Einheit 20 erfasst Anweisungen von einer Speicherposition (bei der es sich um den Speicher 12 handeln kann), welche die Anweisungen eines Programms speichert, das ausgeführt wird, und sie decodiert diese Anweisungen zur Ausführung durch die Ausführungseinheit 18. In höher entwickelten Prozessoren, die eine Pipeline-Architektur verwenden, werden zukünftige Anweisungen vorab erfasst und decodiert, bevor die Anweisungen eigentlich benötigt werden, so dass der Prozessor nicht untätig ist, während er bei dem tatsächlichen Bedarf darauf wartet, dass die Anweisungen erfasst werden. Ein Speicher-Pipelinepuffer (Pufferspeicher) wird dazu verwendet die Speicherzugriffsoperationen zu speichern, die in der Pipeline für einen Speicherzugriff anstehen. Dieses allgemeine Konzept zum Speichern und Zurückziehen anstehender Zugriffe ist im Fach allgemein bekannt. Ein Beispiel wird in einer Patentanmeldung mit dem Titel "Apparatus And Method Of Maintaining Processor Ordering In A Multiprocessor System" von Nitin V. Sarangdhar beschrieben, das unter dem Aktenzeichen 08/177.259 am 4. Januar 1994 eingereicht wurde.
  • Die verschiedenen Einheiten des Prozessors 11 sind mit einer internen Busstruktur 23 gekoppelt. Eine Busschnittstelleneinheit (BIU) 22 sieht eine Schnittstelle zur Kopplung des internen Busses 23 mit dem externen Bus 13 vor. Hiermit wird festgestellt, dass die Struktur der Busse 13 und/oder 23 verschiedene Formen annehmen kann. Ferner wird hiermit festgestellt, dass der Prozessor 11 tatsächlich viel mehr Komponenten aufweist als die in der Abbildung aus 2 dargestellten Komponenten.
  • In Bezug auf die Abbildung aus 3 umfasst eine Programmablauffolge für einen der Prozessoren 11 (in diesem Beispiel den Prozessor P1) eine Folge von Speicherzugriffen, die mit A–K bezeichnet sind. Die Anordnung der Zugriffe A–K entsprechend der durch die Programmanweisungen vorausgesetzten Anordnung. Die Zugriffe E–H sind als Zugriffe auf den gemeinsam genutzten Bereich 15 aus den Abbildungen der 1 und 2 dargestellt. Das Erfassen der Sperre 16 muss somit erreicht werden, bevor der Zugriff E ausgeführt wird. In dem Beispiel wird der Zugriff D für die Erfassung der Sperre 16 verwendet. Nachdem die Zugriffe E–H auf den gemeinsam genutzten Bereich 15 abgeschlossen sind, wird der Zugriff I verwendet, um die Sperre 16 freizugeben. Danach werden die Zugriffe J–K ausgeführt.
  • Hiermit wird festgestellt, dass der Zugriff D zur Erfassung der Sperre 16 und der Zugriff I zum Freigeben der Sperre 16 jeweils durch eine Anweisung oder durch mehrere Anweisungen ausgeführt werden können. Es ist jedoch wichtig, dass die Ausführung als geordnete Operationen vorgenommen wird, so dass nach Beginn der Ausführung zur Erfassung oder zur Freigabe der Sperre 16 der jeweilige Betrieb nicht durch eine andere Anweisung unterbrochen wird. Allgemein wird der Einsatz einer Anweisung wie etwa einer Lese-Modifikations-Schreib-Anweisung für den Zugriff D und einer Anweisung für den Zugriff I bevorzugt.
  • Es ist zwingend erforderlich, dass die Programmieranordnung zur Erfassung der Sperre 16 unter Verwendung des gemeinsam genutzten Bereichs 15 und zur Freigabe der Sperre 16 für die anderen Prozessoren in der ordnungsgemäßen Reihenfolge wie für die Programmanordnung sichtbar gemacht wird. Sobald der gemeinsam genutzte Bereich 15 jedoch erfasst wird, kann der Prozessor die Zugriffe auf den gemeinsam genutzten Bereich 15 frei neu anordnen. Anders ausgedrückt müssen die Zugriffe E–H erfolgen, nachdem die Sperre 16 erfasst worden ist, und sie müssen vor der Freigabe der Sperre 16 abgeschlossen sein, um die Integrität des gemeinsam genutzten Bereichs 15 sicherzustellen.
  • Da eine Mehrzahl von Schemen für die Speicherzugriffsanordnung oder die Umordnung zur Verfügung stehen, ist es nützlich, relevante Zugriffsanordnungsschemen zu identifizieren, um zu bestimmen, ob etwaige dieser derart angepasst werden können, dass die gewünschten vorstehend genannten Eigenschaften erreicht werden. Somit werden nachstehend vier Modelle (mit der Bezeichnung "Konsistenzen") in Bezug auf die Abbildungen der 47 beschrieben. Die vier Modelle sind die Konsistenzen "sequentiell", "Prozessor", "schwach" und "Freigabe".
  • In Bezug auf die Abbildung aus 4 ist das Anordnungsmodell der sequentiellen Konsistenz gemäß der Anwendung auf eine Sequenz von Programmschritten aus 3 dargestellt. Das sequentielle Konsistenzmodell ist ein Modell für die Speicherzugriffsanordnung, das die Ausführung von Programmen auf verschiedenen Prozessoren erfordert, wenn eine gewisse Verschachtelung der Ausführung der Programme in einem Prozessor auftritt. Das Zugriffsmodell mit sequentieller Konsistenz ist erfüllt, wenn für jeden Prozessor keine Lese- oder Schreiboperationen im Verhältnis zu vorherigen Lese- oder Schreiboperationen neu angeordnet worden sind. Das heißt, eine Neuordnung der Speicherzugriffe ist gar nicht zulässig, und die Zugriffe A–K werden in der sequentiellen Programmanordnung ausgeführt. Die Neuordnung der Zugriffe ist beidem Modell der sequentiellen Konsistenz ohne Relevanz.
  • Die Abbildung aus 5 veranschaulicht das Anordnungsmodell der Prozessorkonsistenz. Das Prozessorkonsistenzmodell ist ein Modell zur Anordnung des Speicherzugriffs, das es voraussetzt, dass alle Zugriffe in Bezug auf einen Schreibvorgang in ein erstes Programm für ein zweites Programm in der gleichen Anordnung sichtbar werden, und zwar gemäß der Spezifikation in dem ersten Programm (was auch impliziert, dass Lesevorgänge aus dem zweiten Programm für das erste Programm in der gleichen Anordnung sichtbar werden, wie dies in dem zweiten Programm spezifiziert ist). Das Zugriffsmodell der Prozessorkonsistenz kann einfach dadurch implementiert werden, dass sich nur zukünftige Leseoperationen in Bezug auf Schreiboperationen außerhalb der Anordnung befinden dürfen.
  • Die Abbildung aus 5 zeigt das Anordnungsmodell der Prozessorkonsistenz ferner für die Zugriffe A–K. Da der Zugriff D für gewöhnlich mindestens eine Leseoperation voraussetzt, dürfen zukünftige Lese- und Schreiboperationen diese Grenze nicht überschreiten. Da der Zugriff I ferner für gewöhnlich eine Schreiboperation darstellt, müssen zuerst alle vorherigen Zugriffe sichtbar gemacht werden. Ein Lesezugriff (der hier als der Zugriff J dargestellt ist), kann jedoch neu angeordnet werden, um den Zugriff I zu transzendieren. Diese zukünftige Lese-Neuordnung ist zulässig, da sie die Voraussetzung der Beschränkung gemeinsam genutzter Zugriffe (E–H) innerhalb der Grenzen für die Sperrerfassung und die Sperrfreigabe nicht überschreiten, die durch die Zugriffe D und I erzeugt werden.
  • Hiermit wird festgestellt, dass jedes der beiden vorstehenden Konsistenzmodelle die Regelung über die Erfassungs- und Freigabeanordnung vorsehen kann, wobei die erforderlichen Restriktionen der Modelle jedoch für eine weniger dynamische Systemleistung sorgen. Obwohl jedes der beiden vorstehenden Modelle verwendet werden kann, um die Zugriffe für den gemeinsam genutzten Bereich anzuordnen, wird die Suche nach einem flexibleren Modell bevorzugt.
  • Eine schwache Konsistenz ist ein Modell zur Anordnung von Speicherzugriffen, das alle implizierten Anordnungsvoraussetzungen zwischen Lese- und Schreiboperationen beseitigt. Das Modell der schwachen Konsistenz setzt nur voraus, dass die Anordnung der Sichtbarkeit von Lese- und Schreiboperationen für ein Programm explizit durch das Programm an entsprechenden Synchronisierungspunkten durchgesetzt wird. Das schwache Konsistenzmodell ist in der Abbildung aus 6 dargestellt. Das Modell der schwachen Konsistenz erfordert es nicht, dass das Programm zwischen dem Erfassen und der Freigabe einer Sperre unterscheidet. Obwohl somit eine Sperre erforderlich ist, basiert das schwache Konsistenzmodell darauf, dass das Programm den Synchronisierungspunkt festlegt, wenn die Anordnung synchronisiert werden soll.
  • Die Abbildung aus 6 zeigt das Anordnungsmodell der schwachen Konsistenz mit Synchronisierungspunkten, die an den Zugriffspunkten der des Erfassens und der Freigabe der Sperre auftreten. Der erste Synchronisierungspunkt D' wird unmittelbar nach dem Zugriff D zur Erfassung der Sperre festgelegt. Der zweite Synchronisierungspunkt I' wird unmittelbar vor dem Zugriff I gesetzt, um die Sperr 16 freizugeben. Die Zugriffe A–D können auf jede Art und Weise neu angeordnet werden (wie dies durch die Pfeile 26 dargestellt ist), wobei sie den Synchronisierungspunkt D' jedoch nicht transzendieren können. Die Neuordnung des Zugriffs D mit vorherigen Zugriffen A–C ist zulässig, da die Zugriffe A–C nicht auf den gemeinsam genutzten Bereich 15 erfolgen. Der Synchronisierungspunkt D' gewährleistet, dass die Zugriffe E–H auftreten, nachdem die Sperre 16 erfasst worden ist. Die Neuordnung bzw. Umordnung zwischen den Zugriffen E–H ist zulässig (wie dies durch die Pfeile 27 dargestellt ist). Der zweite Synchronisierungspunkt I' gewährleistet, dass alle Zugriffe E–H auf den gemeinsam genutzten Bereich 15 abgeschlossen sind, bevor die Sperre 16 freigegeben wird. Demgemäß ist die Neuordnung der Zugriffe I–K (wie dies durch die Pfeile 28 dargestellt ist) zulässig, da die Zugriffe auf den gemeinsam genutzten Bereich 15 abgeschlossen worden sind.
  • Die Synchronisierungspunkte D' und I' dienen als eine Grenze bzw. Barriere, die jeden Zugriff über die Synchronisierungspunkte hinaus verhindert. Eine Möglichkeit, die Synchronisierung an den Punkten D' und I' zu erreichen, ist die Verwendung einer im Fach bekannten MF-Anweisung (MF als englische Abkürzung von Memory Fence). Die MF-Anweisung stellt sicher, dass eine harte und schnelle Trennung an den Synchronisierungspunkten erfolgt, so dass die ordnungsgemäße Anordnung in Bezug auf die Erfassung und Freigabe des gemeinsam genutzten Bereichs 15 aufrechterhalten wird. Ein Nachteil bei diesem Modell ist es jedoch, dass kein Zugriff die Synchronisierungsgrenze transzendiert.
  • Die Freigabekonsistenz ist eine bestimmte Implementierung des schwachen Speicheranordnungsmodells, wobei zwischen einer Erfassung und einer Freigabe der Sperre unterschieden wird. Das Freigabekonsistenzmodell ist erfüllt, wenn alle Zugriffe eines Prozessors nach dem Zugriff auf die Sperre zur Erfassung der gemeinsam genutzten Daten für andere Prozessoren nach dem Zugriff auf die Sperre sichtbar gemacht werden; und alle Zugriff eines Prozessors vor dem Zugriff auf die Sperre zur Freigabe der gemeinsam genutzten Daten werden für alle anderen Prozessoren vor dem Zugriff zur Freigabe der Sperre sichtbar gemacht.
  • Die Abbildung aus 7 veranschaulicht das Anordnungsmodell der Freigabekonsistenz mit einem Erfassungs-Synchronisierungspunkt und einem Freigabe-Synchronisierungspunkt. Während die Synchronisierungspunkte in dem schwachen Konsistenzmodell nicht zwischen verschiedenen Zugriffen unterscheiden, werden die Erfassungs- und Freigabe-Synchronisierungspunkte in dem Freigabe-Konsistenzmodell unterschieden. Unter Verwendung dieses Modells können die Zugriffe E–H auf den gemeinsam genutzten Bereich 15 somit innerhalb der Grenzen der Erfassungs- und Freigabe-Synchronisierungspunkte neu angeordnet werden (wie dies durch die Pfeile 29 dargestellt ist), wobei sie außerhalb dieser Grenzen jedoch nicht neu angeordnet werden können. Indem gewährleistet wird, dass sich die Zugriffe zum Erfassen und Freigeben der Sperre hinter den beiden Synchronisierungspunkten befinden, können die Zugriffe auf den gemeinsam genutzten Bereich 15 somit in Bezug auf die Zugriffe zum Erfassen und Freigeben der Sperre 16 nicht neu angeordnet werden.
  • Hiermit wird jedoch festgestellt, dass die Zugriffe außerhalb der Begrenzung (in dem Beispiel die Zugriffe A–C und J–K) in Bezug auf die Zugriffe zum Erfassen und Freigeben der Sperre nicht neu angeordnet werden können. Da diese Zugriffe nicht auf den gemeinsam genutzten Bereich 15 gerichtet sind, können sie in Bezug auf die Zugriffe auf den gemeinsam genutzten Bereich 15 neu angeordnet werden (wie dies durch die Pfeile 30 und 31 dargestellt ist). Da bestimmte Zugriffe die Synchronisierungsgrenzen transzendieren können, bietet das Freigabekonsistenzmodell die größte Flexibilität und den Vorteil einer besseren Leistung im Vergleich zu den anderen drei Konsistenzmodellen. Demgemäß betrifft das nachstehend beschriebene Ausführungsbeispiel eine Technik zum Vorsehen des Modells der Freigabekonsistenz zur Umordnung bzw. Neuordnung von Zugriffen.
  • Das bevorzugte Ausführungsbeispiel definiert zwei neue Anweisungen zur Verwendung in einer Anweisungsgruppenarchitektur für einen Prozessor. Die Anweisungen dienen dem primären Zweck des Vorstehens einer Kontrolle über die Anordnung in Bezug auf einen bzw. mehrere gemeinsam genutzten Bereich bzw. Bereiche eines Speichers, so dass Informationen in einem Mehrprozessorsystem nicht korrumpiert werden, ohne dabei jedoch die Umordnung der Zugriffe zu stark einzuschränken, so dass in dem System weiterhin eine signifikante Flexibilität verbleibt, um eine Neuordnung der Speicherzugriffe zu ermöglichen.
  • Die beiden neuen Anweisungen sind als eine Anweisung Memory Fence Directional – Acquire (MFDA) und eine Anweisung Memory Fence Directional – Release (MFDA) definiert. Hiermit wird festgestellt, dass es wichtig ist, welche Funktion jede Anweisung erfüllt und nicht der den Anweisungen verliehene Name. Die Namen der Anweisungen beschreiben jedoch die durch die MFDA- und MFDR-Anweisungen ausgeführten Funktionen. Jede der beiden Anweisungen (dargestellt in den Abbildungen der 811) ist durch einen Operationscode gefolgt von einer Adresse (ADDR) identifiziert. Die Adresse ADDR ist dem Adresspositionsbezeichner zur Identifikation des gemeinsam genutzten Bereichs 15 zugeordnet, und für gewöhnlich handelt es sich bei ADDR um die Adressposition (entweder vollständig oder Bytes) einer Adresse) der Sperre 16, wenn die vorstehend bereits beschriebene Semaphortechnik zur Steuerung der Zugriffe auf den gemeinsam genutzten Raum 15 verwendet wird.
  • Beispiele für das Anweisungsformat für die beiden Anweisungen sind:
    MFDA (ADDR) und MFDR (ADDR)
  • Hiermit wird ferner festgestellt, dass der ADDR-Wert auch indirekt gewonnen werden kann. Die MFDA- oder MFDR-Anweisung spezifiziert zum Beispiel ein Register (zum Beispiel ein Register in der Registerdatei 19), das den tatsächlichen ADDR-Wert aufweist.
  • Die beiden Anweisungen werden im Zusammenhang mit dem Vorsehen der Anforderungen des Modells der Freigabekonsistenz verwendet, wobei die vorliegende Erfindung einfach auch so konfiguriert werden kann, dass sie Vorkehrungen für die anderen Konsistenzmodelle trifft. Wie dies in der Abbildung aus 8 dargestellt ist, ist die MFDA-Anweisung nach der Anweisung zur Erfassung der Sperre 16 in dem Programm positioniert und in dem Schritt D'' (nach dem Zugriff D) dargestellt. Die MFDR-Anweisung ist vor der Anweisung zur Freigabe der Sperre 16 in dem Programm (in Schritt I) positioniert und in dem Schritt I'' dargestellt. Die Adresse ADDR ist der Adresse der Sperre 16 zugeordnet und in den Zugriffen zum Erfassen und Freigeben der Sperre 16 vorhanden.
  • Die MFDA-Anweisung, deren Operation in der Abbildung aus 9 näher dargestellt ist, bewirkt, dass alle vorherigen Zugriffe auf die spezifizierte Adresse ADDR für die anderen Prozessoren vor zukünftigen Zugriffen sichtbar werden. Indem ADDR der Adresse der Sperre 16 entspricht, gewährleistet die Anweisung MFDA, dass der Zugriff zum Erfassen der Sperre sichtbar gemacht wird, bevor mit den Zugriffen E–H in den gemeinsam genutzten Bereich 15 fortgefahren wird. Die MFDA-Anweisung fungiert nur als Synchronisierungsgrenze für Zugriffe mit der spezifizierten ADDR-Adresse. In dem Beispiel aus der Abbildung aus 8 wird er Zugriff D sichtbar gemacht, bevor mit den Zugriffen nach dem Zugriff D'' fortgefahren wird. Hiermit wird festgestellt, dass die vor der MFDA-Anweisung angeordneten Zugriffe (das heißt die Zugriffe A–C) die Reihenfolge in Bezug auf die MFDA-Anweisung nicht aufrechterhalten müssen, sofern die Zugriffe nicht auf die Adresse ADDR verweisen. Die Zugriffe A–C können somit neu angeordnet werden (auch in Bezug auf den Zugriff D) und die D'' MFDA-Grenze überschreiten. Der Zugriff D kann die D'' MFDA-Grenze jedoch nicht überschreiten. Somit wird nicht gegen die Anordnung zwischen dem Zugriff auf die Sperre 16 und Zugriffe auf den gemeinsam genutzten Bereich 15 verstoßen.
  • Die MFDR-Anweisung, deren Funktionsweise in der Abbildung aus 10 näher dargestellt ist, bewirkt, dass alle vorherigen Zugriffe für die anderen Prozessoren sichtbar werden, bevor zukünftige Zugriffe auf die spezifizierte Adresse ADDR erfolgen. Die MFDR-Anweisung gewährleistet somit, dass alle vor der MFDR-Anweisung angeordneten Zugriffe vor dem Zugriff zur Freigabe der Sperre sichtbar werden. Die MFDR-Anweisung fungiert als Synchronisierungsgrenze für nur die Zugriffe mit der spezifizierten Adresse ADDR. In dem Beispiel aus 8 werden somit alle Zugriffe vor dem Zugriff I sichtbar gemacht, bevor mit dem Zugriff I vor der Freigabe der Sperre fortgefahren wird. Hiermit wird jedoch festgestellt, dass nach der MFDR-Anweisung angeordnete Zugriffe, welche keinen Zugriff auf die ADDR (das heißt die Zugriffe J und K) spezifizieren, die Reihenfolge in Bezug auf die MFDR-Anweisung nicht aufrechterhalten müssen. Die Zugriffe J und K können somit neu angeordnet werden (auch in Bezug auf den Zugriff I) und die Grenze I'' überschreiten. Der Zugriff I kann die I'' MFDR-Grenze nicht überschreiten.
  • Gemäß der Implementierung in dem bevorzugten Ausführungsbeispiel sehen die MFDA- und MFDR-Anweisungen zwei direktionale Synchronisierungspunkte vor, um die Zugriffe auf den gemeinsam genutzten Bereich 16 zu begrenzen, der in Bezug auf die Zugriffe zum Erfassen und Freigeben der Sperre 16 nicht neu geordnet wird. Die Zugriffe auf den gemeinsam genutzten Bereich 15 können jedoch untereinander leicht neu angeordnet werden (Pfeile 29), und nicht dem gemeinsam genutzten Bereich 15 zugeordnete Zugriffe können die MFDA- und MFDR-Grenze leicht überschreiten (Pfeile 30 und 31).
  • Hiermit wird somit festgestellt, dass die MFDA- und MFDR-Anweisungen derart fungieren, dass sie die Anforderungen für das Freigabekonsistenzmodell vorsehen, welches die größte Flexibilität für die Anordnung der vier beschriebenen Konsistenzmodelle aufweist. Gemäß der Ausführung der vorliegenden Erfindung ist für die Speicherzugriffe (sowohl Lese- als auch Schreiboperationen) eine neue Anordnung des Speicherzugriffs zulässig, wobei eine direktionale Synchronisierung der Neuordnung beim Auftreten der MFDA- und MFDR-Anweisungen auferlegt wird, wobei die Neuordnungssynchronisierung jedoch auf eine bestimmte spezifizierte Adresse beschränkt ist.
  • In Bezug auf die Abbildung aus 11 ist ein Computersystem 40 dargestellt, das die vorliegende Erfindung implementiert. Das Computersystem entspricht im Wesentlichen dem in den Abbildungen der 1 und 2 dargestellten Computersystem 10, wobei es jedoch dabei die MFDA- und MFDR-Anweisungen des bevorzugten Ausführungsbeispiels implementiert. Demgemäß wird das Computersystem allgemein in einer Verarbeitungsumgebung implementiert, in der mehrere Prozessoren (oder andere Verarbeitungsvorrichtungen) verwendet werden, und wobei der Speicher 12 einen gemeinsam genutzten Speicherbereich oder eine entsprechende Position 15 aufweist. Die MFDA- und MFDR-Anweisungen sind in der Ausführungseinheit 18 des Prozessors 11 dargestellt, in der die Anweisungen ausgeführt werden.
  • In dem besonderen Beispiel wird der Pipeline-Speicherpuffer 21 verwendet, um anstehende Speicherzugriffe in der Pipeline zu speichern. Die MFDA-Anweisung kann bei der Ausführung alle anstehenden Zugriffe mit übereinstimmenden Adressen wie die spezifizierte Adresse ADDR identifizieren. Somit würde jeder anstehende Zugriff für ein Erfassen der Sperre in dem Puffer 21 identifiziert. Die vorstehend beschriebenen Einschränkungen setzen es ebenfalls voraus, dass der Zugriff für die Erfassung der Sperre aus dem Puffer 21 zurückgezogen wird (und sichtbar gemacht wird), bevor etwaige zukünftige Zugriffe ausgeführt werden.
  • Das gleiche gilt für die MFDR-Anweisung. Wenn diese Anweisung auftritt, können zukünftige Zugriffe fortfahren, bis ein Zugriff auftritt, der mit der spezifizierten Adresse übereinstimmt. An dieser Stelle werden alle anstehenden Zugriffe in dem Puffer 21 zurückgezogen, bevor zukünftige Zugriffe erfolgen können. Somit werden alle anstehenden Zugriffe auf den gemeinsam genutzten Bereich 15 sichtbar gemacht, bevor ein Zugriff zur Freigabe der Sperre erfolgt. Hiermit wird erneut deutlich betont, dass es sich bei der vorstehenden Beschreibung lediglich um ein Beispiel für die Implementierung der vorliegenden Erfindung handelt.
  • Das Format der MFDA- und MFDR-Anweisungen gemäß der Implementierung in dem bevorzugten Ausführungsbeispiel ermöglicht es, das diese Anweisungen ein ähnliches Format aufweisen wie Lade-/Speicher-Anweisungen (Lesen/Schreiben), so dass die MFDA- und MFDR-Anweisungen den gleichen Adresspfad und die gleiche Abhängigkeitslogik verwenden können wie die Lade- und/oder Speicheranweisungen für den Speicher. Die vorliegende Erfindung kann somit bei Bedarf leicht in modifizierte Lade- (für einen Zugriff), Speicher- (für eine Freigabe) und/oder andere Anweisungen integriert werden, an Stelle der Verwendung separater MFDA- und MFDR-Anweisungen. Das heißt, eine modifizierte Lade- und/oder Speicheranweisung kann die Funktionalität der MFDA- und MFDR-Anweisung aufweisen. Bei einer hybriden Anweisung kann die MFDA-Anweisung zum Beispiel mit der Zugriffsanweisung zur Erfassung der Sperre 16 kombiniert werden, und die MFDR-Anweisung kann mit der Zugriffsanweisung für die Freigabe der Sperre 16 kombiniert werden. Wenn hingegen separate MFDA- und MFDR- Anweisungen verwendet werden, so sind keine Änderungen in Bezug auf die bestehenden Lade-/Speicheranweisungen einer Anweisungsgruppenarchitektur erforderlich. Da die Anordnungssteuerung in Bezug auf den gemeinsam genutzten Bereich 15 durch die MFDA- und MFDR-Anweisungen (in Software) auferlegt wird, können zusätzlich sowohl die Anwendungs- als auch die Betriebssystemsoftware diese Steuerungen verwenden.
  • Hiermit wird somit festgestellt, dass es eine Vielzahl von Möglichkeiten gibt, um die Funktionsweise der beiden Anweisungen zu implementieren. Ferner kann das Anordnungsschema gemäß der vorliegenden Erfindung in einer Vielzahl von Speicherzugriffsschemen implementiert werden und ist nicht unbedingt nur auf die Prozessoren oder auf das Semaphorbeispiel hierin beschränkt. Es kann auch in einer Einprozessorumgebung implementiert werden. Beschrieben wird somit ein Schema zur Steuerung der Speicherzugriffsanordnung in einem System mit mehreren Speicherzugriffen und Mehrfachverarbeitung.

Claims (10)

  1. Computersystem, das eine Neuordnung von Zugriffen ermöglicht, wobei das System folgendes umfasst: einen Speicher, wobei gemeinsam genutzte Informationen darin an einer gemeinsam genutzten Position gespeichert werden können; eine Mehrzahl von Speicherzugriffsvorrichtungen, die mit dem genannten Speicher gekoppelt sind, und wobei die genannten Vorrichtungen auf die genannte gemeinsam genutzte Position zugreifen, indem sie diese erfassen; wobei jede Speicherzugriffsvorrichtung auf eine Ausführung einer ersten Anweisung ansprechen kann, die eine Erfassungsadresse spezifiziert, die der Erfassung der genannten gemeinsam genutzten Position zugeordnet ist, wobei die genannte Ausführung der genannten ersten Anweisung bewirkt, dass alle vorherigen Zugriffe nur auf die genannte Erfassungsadresse verweisen, bevor die genannte erste Anweisung sichtbar wird, bevor nach der genannten ersten Anweisung Speicherzugriffe zugelassen werden; und wobei jede Speicherzugriffsvorrichtung auf eine Ausführung einer zweiten Anweisung ansprechen kann, die eine Freigabeadresse spezifiziert, die der Freigabe einer gemeinsam genutzten Position zugeordnet ist, wobei die genannte Ausführung der genannten zweiten Anweisung bewirkt, dass alle vorherigen Zugriffe vor der genannten zweiten Anweisung sichtbar werden, bevor Zugriffe nach der genannten zweiten Anweisung zugelassen werden, die auf die genannte Freigabeadresse verweisen.
  2. Computersystem nach Anspruch 1, wobei jede der genannten Speicherzugriffsvorrichtungen auch andere Speicherzugriffe zulassen kann, die nicht auf die genannte Erfassungsadresse verweisen, für eine Neuordnung einer Programmanordnung in Bezug auf die genannte erste Anweisung.
  3. Computersystem nach Anspruch 2, wobei jede der genannten Speicherzugriffsvorrichtungen auch andere Speicherzugriffe zulassen kann, die nicht auf die genannte Freigabeadresse verweisen, für eine Neuordnung der genannten Programmanordnung in Bezug auf die genannte zweite Anweisung.
  4. Computersystem nach Anspruch 3, wobei die Zugriffe auf den genannten Speicher, die nach der genannten ersten Anweisung und vor der genannten zweiten Anweisung angeordnet sind, untereinander neu angeordnet werden können.
  5. Computersystem nach Anspruch 4, wobei die genannte Erfassungsadresse und die genannte Freigabeadresse übereinstimmen.
  6. Computersystem nach einem der vorstehenden Ansprüche, wobei die genannten Speicherzugriffsvorrichtungen Prozessoren umfassen.
  7. Verfahren zur Verwendung einer Gruppe aus zwei Anweisungen zum Aufrechterhalten einer Reihenfolge eines Zugriffs auf eine gemeinsam genutzte Position, so dass Zugriffsverweisungen und eine Erfassungsadresse sowie eine Freigabeadresse, die der Erfassung und der Freigabe der genannten gemeinsam genutzten Position zugeordnet sind, in einer Programmanordnung mit dem genannten Zugriff auf die genannte gemeinsam genutzte Position eingehalten werden, wobei das Verfahren die folgenden Schritte umfasst: Implementieren eines Speichers, wobei zumindest ein Abschnitt des genannten Speichers als die genannte gemeinsam genutzte Position zugewiesen werden kann; Implementieren einer Speicherzugriffsvorrichtung, die auf eine Ausführung einer ersten Anweisung anspricht, welche die genannte Erfassungsadresse spezifiziert, wobei die genannte erste Anweisung bewirkt, dass alle vorherigen Zugriffe nur auf die genannte Erfassungsadresse verweisen, bevor die genannte erste Anweisung sichtbar wird, bevor Speicherzugriffe nach der genannten ersten Anweisung zugelassen werden; Implementieren der genannten Speicherzugriffsvorrichtung, die auf eine Ausführung einer zweiten Anweisung anspricht, welche die genannte Freigabeadresse spezifiziert, wobei die genannte zweite Anweisung bewirkt, dass alle vorherigen Zugriffe vor der genannten zweiten Anweisung sichtbar werden, bevor Zugriffe zugelassen werden, die nach der genannten zweiten Anweisung auf die genannte Freigabeadresse verweisen.
  8. Verfahren nach Anspruch 7, wobei das genannte Computersystem mehr als eine Speicherzugriffsvorrichtung aufweist, und wobei auf die genannte gemeinsam genutzte Position in dem genannten Speicher durch mehr als eine der genannten Speicherzugriffsvorrichtungen zugegriffen wird.
  9. Verfahren nach Anspruch 7, wobei eine Sperrvariable einem Semaphor zugewiesen wird, um einen Eintrag in die genannte gemeinsam genutzte Position zu ermöglichen, und wobei zu einem bestimmten Zeitpunkt nur einer der genannten Speicherzugriffsvorrichtungen der Zugriff auf die genannte gemeinsam genutzte Position gewährt wird.
  10. Verfahren nach Anspruch 7, wobei die genannten Erfassungs- und Freigabeadressen identisch sind.
DE69730164T 1996-12-17 1997-12-12 Steuerung von speicherzugriffsanordnung in einem multiprozessorsystem Expired - Lifetime DE69730164T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US768775 1996-12-17
US08/768,775 US5860126A (en) 1996-12-17 1996-12-17 Controlling shared memory access ordering in a multi-processing system using an acquire/release consistency model
PCT/US1997/022876 WO1998027464A1 (en) 1996-12-17 1997-12-12 Controlling memory access ordering in a multi-processing system

Publications (2)

Publication Number Publication Date
DE69730164D1 DE69730164D1 (de) 2004-09-09
DE69730164T2 true DE69730164T2 (de) 2005-08-04

Family

ID=25083454

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69730164T Expired - Lifetime DE69730164T2 (de) 1996-12-17 1997-12-12 Steuerung von speicherzugriffsanordnung in einem multiprozessorsystem

Country Status (5)

Country Link
US (1) US5860126A (de)
EP (1) EP1008053B1 (de)
AU (1) AU5524198A (de)
DE (1) DE69730164T2 (de)
WO (1) WO1998027464A1 (de)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177560A (ja) * 1996-12-17 1998-06-30 Ricoh Co Ltd 記憶装置
US6173375B1 (en) * 1997-02-28 2001-01-09 Lucent Technologies Inc. Method for accessing a shared resource in a multiprocessor system
US6108757A (en) * 1997-02-28 2000-08-22 Lucent Technologies Inc. Method for locking a shared resource in multiprocessor system
US6088772A (en) * 1997-06-13 2000-07-11 Intel Corporation Method and apparatus for improving system performance when reordering commands
US6185662B1 (en) * 1997-12-22 2001-02-06 Nortel Networks Corporation High availability asynchronous computer system
US6088514A (en) * 1997-12-23 2000-07-11 Deltatrak, Inc. Environmental data logging system
US6587931B1 (en) * 1997-12-31 2003-07-01 Unisys Corporation Directory-based cache coherency system supporting multiple instruction processor and input/output caches
US6526481B1 (en) 1998-12-17 2003-02-25 Massachusetts Institute Of Technology Adaptive cache coherence protocols
US6636950B1 (en) 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
GB2345555A (en) * 1999-01-05 2000-07-12 Ibm Controlling device access in a network
WO2000065450A1 (en) * 1999-04-28 2000-11-02 Foreman Richard L Environmental data logging system
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
US6574749B1 (en) * 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
US6625701B1 (en) 1999-11-09 2003-09-23 International Business Machines Corporation Extended cache coherency protocol with a modified store instruction lock release indicator
US6629212B1 (en) * 1999-11-09 2003-09-30 International Business Machines Corporation High speed lock acquisition mechanism with time parameterized cache coherency states
US6629214B1 (en) 1999-11-09 2003-09-30 International Business Machines Corporation Extended cache coherency protocol with a persistent “lock acquired” state
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6594736B1 (en) * 2000-08-15 2003-07-15 Src Computers, Inc. System and method for semaphore and atomic operation management in a multiprocessor
US6502170B2 (en) * 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
US6948010B2 (en) * 2000-12-20 2005-09-20 Stratus Technologies Bermuda Ltd. Method and apparatus for efficiently moving portions of a memory block
KR100598668B1 (ko) * 2001-02-24 2006-07-13 인터내셔널 비지네스 머신즈 코포레이션 지연 시간이 적은 메모리 시스템 액세스
US6766413B2 (en) 2001-03-01 2004-07-20 Stratus Technologies Bermuda Ltd. Systems and methods for caching with file-level granularity
US6874102B2 (en) * 2001-03-05 2005-03-29 Stratus Technologies Bermuda Ltd. Coordinated recalibration of high bandwidth memories in a multiprocessor computer
DE10243446B4 (de) * 2002-09-19 2005-12-15 Celanese Chemicals Europe Gmbh Verfahren zur Herstellung von Aldehyden
US7814488B1 (en) * 2002-09-24 2010-10-12 Oracle America, Inc. Quickly reacquirable locks
CA2434280A1 (en) * 2003-07-03 2005-01-03 Zhong L. Wang Method and apparatus to guarantee type and initialization safety in multihreaded programs
US7529895B2 (en) * 2003-08-22 2009-05-05 International Business Machines Corporation Method for prefetching non-contiguous data structures
US8607241B2 (en) * 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
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
US7716403B2 (en) * 2005-09-30 2010-05-11 Rockwell Automation Technologies, Inc. Information technology integration with automation systems
WO2007083197A1 (en) * 2006-01-18 2007-07-26 Freescale Semiconductor Inc. Device having data sharing capabilities and a method for sharing data
US9336333B2 (en) * 2006-02-13 2016-05-10 Linkedin Corporation Searching and reference checking within social networks
US7949815B2 (en) * 2006-09-27 2011-05-24 Intel Corporation Virtual heterogeneous channel for message passing
US7877659B2 (en) * 2006-10-30 2011-01-25 International Business Machines Corporation Memory model for functional verification of multi-processor systems
US8479166B2 (en) * 2008-08-25 2013-07-02 International Business Machines Corporation Detecting locking discipline violations on shared resources
US20100064280A1 (en) * 2008-09-09 2010-03-11 International Business Machines Corporation Systems and methods for implementing test applications for systems using locks
US8108584B2 (en) 2008-10-15 2012-01-31 Intel Corporation Use of completer knowledge of memory region ordering requirements to modify transaction attributes
US8832712B2 (en) * 2009-09-09 2014-09-09 Ati Technologies Ulc System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system
US20110093745A1 (en) * 2009-10-20 2011-04-21 Aviad Zlotnick Systems and methods for implementing test applications for systems using locks
US8850166B2 (en) * 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US8869155B2 (en) * 2010-11-12 2014-10-21 International Business Machines Corporation Increasing parallel program performance for irregular memory access problems with virtual data partitioning and hierarchical collectives
US9158592B2 (en) 2011-05-02 2015-10-13 Green Hills Software, Inc. System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor
US9501332B2 (en) * 2012-12-20 2016-11-22 Qualcomm Incorporated System and method to reset a lock indication
US9607682B1 (en) * 2016-03-28 2017-03-28 Amazon Technologies, Inc. Address decoding circuit
US20190318229A1 (en) * 2018-04-12 2019-10-17 Advanced Micro Devices, Inc. Method and system for hardware mapping inference pipelines

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5208914A (en) * 1989-12-29 1993-05-04 Superconductor Systems Limited Partnership Method and apparatus for non-sequential resource access
US5168547A (en) * 1989-12-29 1992-12-01 Supercomputer Systems Limited Partnership Distributed architecture for input/output for a multiprocessor system
US5363498A (en) * 1990-02-09 1994-11-08 Hitachi, Ltd. Method of controlling shared data among computers
JP2511588B2 (ja) * 1990-09-03 1996-06-26 インターナショナル・ビジネス・マシーンズ・コーポレイション デ―タ処理ネットワ―ク、ロックを獲得させる方法及び直列化装置
EP0569605A1 (de) * 1992-05-06 1993-11-18 International Business Machines Corporation Verfahren zur Zugriffsverwaltung und -steuerung mehrerer Rechner auf gemeinsame Daten
US5623670A (en) * 1995-02-17 1997-04-22 Lucent Technologies Inc. Method and apparatus for crash safe enforcement of mutually exclusive access to shared resources in a multitasking computer system

Also Published As

Publication number Publication date
US5860126A (en) 1999-01-12
WO1998027464A1 (en) 1998-06-25
DE69730164D1 (de) 2004-09-09
EP1008053A1 (de) 2000-06-14
AU5524198A (en) 1998-07-15
EP1008053A4 (de) 2001-12-19
EP1008053B1 (de) 2004-08-04

Similar Documents

Publication Publication Date Title
DE69730164T2 (de) Steuerung von speicherzugriffsanordnung in einem multiprozessorsystem
DE2716051C2 (de) Datenverarbeitungsanlage mit einem oder mehreren Prozessoren mit mindestem einem Ein-/Ausgabekanal mit mehreren Unterkanälen und mit einer Speicheranordnung, bei der zum Speicherzugriff Schlüssel verwendet werden
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE2350884C2 (de) Adreßumsetzungseinheit
DE3151745C2 (de)
DE4237417C2 (de) Datenverarbeitungssystem
DE102013022405B3 (de) Schutz globaler Register in einem Multithreaded-Prozessor
DE3803759A1 (de) Cache-speicher zur verwendung in multiprozessor-systemen
EP1101163B1 (de) Programmgesteuerte einheit
DE3611223A1 (de) Verfahren und vorrichtung zum verhindern einer blockierung in einem datenbank-verwaltungssystem
DE69923658T2 (de) Dynamische speicherplatzzuordnung
DE1499182A1 (de) Elektrische Datenverarbeitungsanlage
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE3900248C2 (de) Verfahren zur schnellen Ablaufsteuerung digitaler Testmuster und Vorrichtung zur Durchführung des Verfahrens
DE4103093C2 (de) Verfahren zum Steuern eines Datenübertragungs-Pufferspeichers und Computersystem zum Durchführen dieses Verfahrens
DE19957594B4 (de) Verfahren zum Synchronisieren von threads eines Computerprogramms
EP0739509A1 (de) Anordnung mit master- und slave-einheiten
DE4114053A1 (de) Computersystem mit cachespeicher
EP0265636A1 (de) Multiprozessor mit mehreren mit Cache-Speichern ausgerüsteten Prozessoren und einem gemeinsamen Speicher
DE3639395A1 (de) Verfahren und vorrichtung zum uebertragen von daten in einem datenverarbeitungssystem mit einer vielzahl von prozessoren
WO2003048943A2 (de) Speicher für die zentraleinheit einer rechenanlage, rechenanlage und verfahren zum synchronisieren eines speichers mit dem hauptspeicher einer rechenanlage
DE19500626A1 (de) Programmierbare Steuerung und Verfahren zum Ändern ihrer Programmaufnahmefähigkeit
DE4029861A1 (de) Verfahren zum steuern mehrerer gemeinsamer speicher und system mit mehreren gemeinsamen speichern
DE19814359C2 (de) Interface-Einrichtung, Verfahren und Überwachungs-System zum Überwachen des Status einer Hardware-Einrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806