DE602004008142T2 - Multiprozessor-"Write-Into-Cache"-System, das einen leistungsfähigen Zugang zu einer Vielzahl von Gatterworten enthält - Google Patents

Multiprozessor-"Write-Into-Cache"-System, das einen leistungsfähigen Zugang zu einer Vielzahl von Gatterworten enthält Download PDF

Info

Publication number
DE602004008142T2
DE602004008142T2 DE602004008142T DE602004008142T DE602004008142T2 DE 602004008142 T2 DE602004008142 T2 DE 602004008142T2 DE 602004008142 T DE602004008142 T DE 602004008142T DE 602004008142 T DE602004008142 T DE 602004008142T DE 602004008142 T2 DE602004008142 T2 DE 602004008142T2
Authority
DE
Germany
Prior art keywords
processor
cache
word
shared
gate
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
DE602004008142T
Other languages
English (en)
Other versions
DE602004008142D1 (de
Inventor
Wayne R. Phoenix Buzby
Charles P. Phoenix Ryan
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.)
Bull HN Information Systems Inc
Original Assignee
Bull HN Information Systems 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 Bull HN Information Systems Inc filed Critical Bull HN Information Systems Inc
Publication of DE602004008142D1 publication Critical patent/DE602004008142D1/de
Application granted granted Critical
Publication of DE602004008142T2 publication Critical patent/DE602004008142T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies

Landscapes

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

Description

  • Querverweis auf eine verwandte Anmeldung
  • Es wird Bezug genommen auf EP-A-1 465 078 , betitelt EQUAL ACCESS TO PREVENT GATEWORD DOMINANCE IN A MULTIPROCESSOR WRITE-INTO-CACHE ENVIRONMENT von Wayne R. Buzby et al.
  • Gebiet der Erfindung
  • Die Erfindung betrifft die Gestaltung von Multiprocessing und insbesondere ein Verfahren und eine Vorrichtung zum Steuern von Mehrfach-Tor-Wort-Erfassung in einer Multiprozessor-„Schreib-in-Zwischenspeicher" („Writeinto-Cache")-Umgebung. Im Spezielleren betrifft die Erfindung nicht nur das Vermeiden eines „Inbeschlagnahme"-Zustands ("hoggging" condition), in welchem ein bestimmter Prozessor nicht in der Lage ist, rechtzeitig ein Tor-Wort (Gateword) zu erfassen, welches einen Zugriff auf einen Prozess oder einen Datensatz steuert, sondern auch den effizienten Zugriff auf eine Mehrzahl von Tor-Worten. Im noch Spezielleren betrifft die Erfindung insbesondere eine deutliche Verbesserung der Systemeffizienz, wenn die Systemprozessoren um eine Mehrzahl von Tor-Worten konkurrieren.
  • Hintergrund der Erfindung
  • Ein Betriebssystem für eine Multiprozessor-Umgebung kann mehrere Prozesse aufweisen, welche gemeinsame Code-Elemente sind, die von allen Prozessoren genutzt werden. In ähnlicher Weise können mehrere Prozesse gemeinsame Datensätze, die von allen Prozessoren verwendet werden, gemeinsam nutzen. In einem Multiprozessor-System, welches eine „Schreib-in-Zwischenspeicher" („Write-into-Cache")-Architektur aufweist, werden Tor-Worte in einem Software-gesteuerten Prozess verwendet, um zu vermeiden, dass mehr als ein Prozessor gemeinsamen Code ausführt oder auf gemeinsam genutzte Daten zugleich zugreift. Ein einzigartiges Tor-Wort, welches einem gegebenen Prozess oder Datensatz zugeordnet ist, wird geprüft, um sicherzustellen, dass kein anderer gegenwärtig arbeitender Prozessor auf die Information zugreift, die ein gegebener Prozessor anfordert. Diese Vefahrensweise ist notwendig, um zu vermeiden, dass eine schädliche Aktivität auftritt, wenn ein Prozessor Daten zur gleichen Zeit ändert, zu der ein anderer Prozessor die Daten verwendet.
  • In einer Write-into-Cache-Architektur ist das Tor-Wort (gespeichert in einem Hauptspeicher vor der Inbetriebnahme oder vor dem Übergang zu einem anderen Job) für einen gegebenen Code oder gegebene Daten typischerweise von einem Prozessor zu einem anderen Prozessor transferiert worden, während geprüft wurde, ob das Tor-Wort GEÖFFNET (verfügbar gemacht) ist. Das erfordert das Übertragen von Daten zwischen eigenen Caches, die jedem Prozessor zugeordnet sind. Der Übertragungs-Prozess führt zu deutlichen Verzögerungen, wenn die kopierten Daten über Mehrfach-Stufen eines Caches übertragen werden müssen; beispielsweise über zwei eigene Caches und zwei gemeinsam genutzte Caches. Dadurch sind in modernen Multiprocessing-Systemen nicht alle Prozessoren gleichberechtigt gewesen, wenn es zu Datenübertragungs-Verzögerungen kommt. Je mehr Cache-Mechanismen ein gegebenes Tor-Wort durchlaufen muss, umso länger dauert es, bis das Tor-Wort am anfordernden Prozessor ankommt.
  • US 2002/087925 A1 (BULL HN INFORMATION SYSTEMS INC.), 4. Juli 2002 (04.07.2002) offenbart ein Multiprozessor-System, welches die gleiche Struktur aufweist, wie das System der unabhängigen Ansprüche, beispielsweise mindestens zwei Cluster, die einen gemeinsam genutzten Cache und zumindest zwei Prozessoren haben, wobei jeder Prozessor seinen eigenen Cache hat. Das Dokument offenbart weiterhin die Verwendung eines Semaphors zum Steuern des Zugriffs auf die gemeinsam genutzten Daten. Der Semaphor wird durch die Cache-Stufen übertragen.
  • Eine Prozess-Entscheidung kann nicht getroffen werden, bis ein übertragenes Tor-Wort eingeht und durch einen Prozessor, der den Zugriff auf den Code/die Daten anstrebt, welche von dem Tor-Wort geschützt werden, geprüft werden kann. Die Verzögerungen können so hoch sein, dass ein Prozessor mit langen Übertragungs-Verzögerungen in einem gegebenen Zustand das relevante Tor-Wort nicht rechtzeitig erfasst, bevor ein anderer Prozessor das Tor-Wort überschrieben (und dadurch „gesperrt") hat. Dieses unerwünschte Resultat wird gemeinhin „Inbeschlagnahme" genannt.
  • Verschiedene Schemata zum Umgang mit dem Inbeschlagnahme-Problem verwenden Software-Verzögerungen, bevor das Tor-Wort wieder geprüft wird, aber diese Verzögerungen sind ohne irgendeine Absicherung gemacht worden, dass eine Prozessor-Platine (die eine Mehrzahl von CPUs aufweist), welche das Tor-Wort gegenwärtig speichert, einer anderen „Tor-Wort-hungrigen"-Platine den Zugriff auf eine CPU überlässt. Andere Schemata verwenden Interrupts, um die Identität der Prozessor-Platine zu übertragen, welche gegenwärtig die Kontrolle über das Tor-Wort hat, so dass CPUs auf der gleichen Platine dies detektieren und dann länger verzögern, wobei CPUs auf einer anderen Platine (Tor-Wort-hungrigen-Platine) eine Chance gegeben wird, auf das Tor-Wort zuzugreifen. Noch andere Mechanismen verwenden einen dedizierten Prozessor, um eine Tor-Wort-Reihe zu erhalten, während noch andere Systeme Hardware in der Form von FIFO-Arrays oder, über Platinengrenzen hinweg, schnelle Logik verwenden, bei Versuchen, gleichberechtigten Zugriff auf Tor-Worte in einer Multiprozessor-Umgebung zu erzeugen.
  • Software-Syteme waren typischerweise auf Hardware angewiesen, um Steuerungen, die eine Schreib-oder-Umschreib-Methode des Zugriffs verwenden, den Tor-Wort-Zugriff zu ermöglichen. Spezielle Tor-Gebrauchsanleitungen verwendeten diesen Mechanismus, was ausreichend war, wenn Prozessoren in einem Multiprozessor-System im Wesentlichen die gleichen Zugriffszeiten innerhalb des Kontexts von Prozessortakt-Geschwindigkeiten hatten. Als aber Hardware-Designs komplexer wurden und Prozessor-Geschwindigkeiten sich erhöhten, wurde es auch schwieriger, die Schnittstellen-Geschwindigkeiten zu erreichen, welche notwendig sind, um die Tor-Wort-Zugriffs-Priorität ohne einen Systemsleistungs-Nachteil zu bewältigen. Die Zuständigkeit für einen Zugriff auf stark genutzte Tor-Worte ist allmählich mehr von Software-Mechanismen abhängig geworden, während Software-Designer zunehmend der Probleme gewahr werden, die als Resultat des Inbeschlagnahmes-Effekts auftreten können.
  • Die meisten Software-Techniken, welche zum Bewältigen des Inbeschlagnahmes-Problems eingesetzt werden, sind Software-Technik-Typen mit fester Verzögerung, welche den Zugriff auf ein Tor-Wort immer verzögern, ob eine Verzögerung benötigt wird oder nicht. Software-Techniken mit fester Verzögerung reduzieren eine Systemleistung deutlich und dieser Typ von Software-Techniken muss auf die System-Architektur abgestimmt werden und kann sogar auf verschiedene Tore innerhalb des Betriebssystems abgestimmt werden müssen.
  • US-A-6 047 316 (INTEL CORPORATION), 4. April 2000 (04.04.2000) offenbart ein Multiprozessor-System mit einem mehrstufigen Bus. Ein Semaphor wird verwendet, um einen Zugriff auf gemeinsam genutzte Daten zu steuern. Ein entfernter Prozessor, welcher versucht, den Semaphor zu erlangen, wird bevorzugt; eine Verzögerung wird eingestellt, während welcher dem lokalen Prozessor oder den lokalen Prozessoren nicht erlaubt wird, um den Semaphor zu konkurrieren.
  • Eine höchst effektive Lösung für das Inbeschlagnahme-Problem wird in EP-A-1 389 758 , betitelt: „Gateword Acquisition in a Multiprocessor Write-into-Cache Environment", offenbart und befindet sich im Besitz des gleichen Begünstigten wie die vorliegende Anmeldung. Die in EP-A-1 389 758 dargelegte Lösung erfordert allerdings die Erzeugung von mindestens einem und typischerweise zwei neuen Betriebssystem-Befehlen. Diese Anforderung hat bestimmte potentielle Nachteile. Programmierer müssen über die neuen Befehle informiert werden und deren Verwendung verstehen. Vorhandene Software muss überarbeitet werden, so dass die Befehl(e) aufgenommen werden, um von den Anti-Inbeschlagnahme-Vorteilen zu profitieren. Es sind möglicherweise nicht ausreichend viele ungenutzte Operationscodes in dem Befehlsatz vorhanden, oder sogar in der Hardware, um die neuen Befehle aufzunehmen.
  • Eine andere höchst effektive Lösung für das Inbeschlagnahme-Problem wird in EP-A-1 403 766 , betitelt: „Balanced Access to Prevent Gateword Dominance in a Multiprocessor Write-Into-Cache Environment", offenbart und beansprucht und befindet sich im Besitz des gleichen Begünstigten wie die vorliegende Anmeldung. In der in EP-A-1 403 766 dargestellten Lösung weist jeder Prozessor eine Tor-Kontroll-Markierung auf. Ein Tor-Wort-GESPERRT-Befehl richtet den Besitz des Tor-Worts in einem Prozessor ein und vermeidet, dass andere Prozessoren auf den Code/die geschützten Daten zugreifen, bis der eine Prozessor deren Verwendung abgeschlossen hat. Ein Tor-Wort-GEÖFFNET-Befehl sendet dann einen Tor-Wort-Interrupt, um die Markierung in jedem Prozessor zu setzen, verzögert lange genug, um sicherzustellen, dass die Markierungen alle gesetzt wurden, schreibt einen GEÖFFNET-Wert in das Tor-Wort und überträgt das Tor-Wort an einen Hauptspeicher. Ein Tor-Wort-Zugriffs-Befehl, der von einem anfordernden Prozessor ausgeführt wird, überprüft die Tor-Kontroll-Markierung des Prozessors und, falls diese gesetzt ist, startet der Tor-Wort-Zugriffs-Befehl eine feste Zeitverzögerung, nach welcher die normale Durchführung fortsetzt wird. Diese Lösung des Inbeschlagnahme-Problems schließt das Hinzufügen einer Markierung in jedem Prozessor und die Änderung von ÖFFNE-Befehlen und Tor-Wort-Befehlen ein, und es kann möglicherweise kein Platz in der Hardware und/oder in dem Befehlsatz sein, um diese Lösung zu implementieren.
  • Noch eine andere und höchst effektive Lösung des Inbeschlagnahme-Problems wird in EP-A-1 465 078 bezüglich der obigen Ausführungen dargelegt. In der in EP-A-1 465 078 offenbarten Lösung lesen alle Prozessoren das Tor-Wort zum Prüfen aus dem Hauptspeicher, anstatt aus dem eigenen Cache eines Prozessors, welcher die gewonnene Kontrolle des gemeinsamen Codes/der gemeinsamen Daten, die durch das Tor-Wort geschützt sind, hat. Dieser Prozess wird in einer sehr effizienten und zuverlässigen Weise ausgeführt. Dadurch haben alle Prozessoren gleichberechtigten Zugriff auf das Tor-Wort, weil ihre Hardware-Verzögerungen alle die gleichen sind.
  • Die in EP-A-1 465 078 offenbarte und beanspruchte Erfindung vermeidet die Inbeschlagnahme des Zugriffs auf ein einzelnes konkurrierendes Tor oder schwächt diese Inbeschlagnahme zumindest ab, aber in einem Multiprozessor-System ablaufende Mehrfach-Prozesse benötigen typischerweise eine Anzahl von Tor-Worten, wobei jedes Tor-Wort den Zugriff auf einen individuellen Code/auf individuelle Datensätze schützt. Dadurch wird, wenn ein bestimmter Prozessor Zugriff auf ein Tor-Wort will, was nicht in Konkurrenz zu irgendeinem beliebigen anderen Prozess steht, der Tor-Zugriff dieses Prozessors gemäß der in EP-A-1 465 078 offenbarten und beanspruchten Erfindung mit einer langen Verzögerung beaufschlagt, obwohl der Prozessor nicht um das gleiche Tor-Wort konkurrieren will.
  • Diese Tatsache begrenzt die Systemleistung in Systemen, die Mehrfach-Tor-Worte einsetzen. Ausführungsformen der vorliegenden Erfindung schwächen dieses Problem deutlich ab, wie aus der Erläuterung unten bezüglich der verschiedenen Figuren klar werden wird. Ferner wird dieses Ziel in einer Weise erreicht, welche leicht an alle Multiprozessor-Architekturen angepasst werden kann. Die Erfindung erreicht diese Ziele in einer relativ einfachen und höchst effektiven Weise.
  • Beschreibung der Zeichnungen
  • Der Gegenstand der Erfindung wird insbesondere in dem abschließenden Teil der Spezifikation herausgestellt und deutlich beansprucht. Die Erfindung kann allerdings, sowohl als Einrichtung, als auch als Arbeitsverfahren, am besten unter Bezugnahme auf die folgende Beschreibung in Verbindung mit den hinzugefügten Ansprüchen und den beiliegenden Zeichnungen verstanden werden, von denen:
  • 1 ein Blockdiagramm eines vereinfachten herkömmlichen Multiprozessor-Systems ist, das zum Definieren der Funktionen von bestimmten weit verbreiteten „Übertragungs"- und „Auslagerungs"-Operationen (manchmal werden andere Bezeichnungen verwendet) genutzt wird, die ausgeführt werden, indem Tor-Wort-Information zwischen Prozessoren und einem Hauptspeicher transferiert wird.
  • 2 ein Blockdiagramm von einem vereinfachten beispielhaften Multiprozessor-System ist, welches einen ersten Zustand zeigt, in welchem ein erster Prozessor einen Besitz eines Tor-Worts erlangt, das in einem Hauptspeicher gespeichert ist;
  • 3 ein Blockdiagramm von dem beispielhaften Multiprozessor-System ist, welches einen zweiten Zustand zeigt, in welchem ein zweiter Prozessor, welcher den gleichen gemeinsam genutzten Cache nutzt, wie der erste Prozessor, einen Besitz des Tor-Worts anstrebt;
  • 4 ein Blockdiagramm von dem beispielhaften Multiprozessor-System ist, das einen dritten Zustand zeigt, in welchem Prozessoren, die mit verschiedenen gemeinsam genutzten Caches verbunden sind, um einen Besitz des Tor-Worts konkurrieren;
  • 5A ein Blockdiagramm von dem beispielhaften Multiprozessor-System ist, welches Operationen während der Durchführung eines ersten Teils von einer Tor-Wort-Gebrauchsanleitung zeigt;
  • 5B eine Ansicht ähnlich zu 5A ist, die Operationen während der Durchführung von einem zweiten Teil einer Tor-Wort-Gebrauchsanleitung zeigt;
  • 5C eine Ansicht ähnlich zu den 5A und 5B, ist, die Operationen während der Durchführung eines dritten Teils von einer Tor-Wort-Gebrauchsanleitung zeigt; und
  • 6 eine Ansicht ähnlich zu den 5A, 5B und 5C ist, die Operationen während der Durchführung eines dritten Teils einer Tor-Wort-Gebrauchsanleitung zeigt;
  • 7 eine Ansicht ähnlich zu 6 ist, welche Operationen zeigt, wenn mehr als ein Prozessor um ein erstes Tor-Wort konkurriert und zumindest ein anderer Prozessor um ein zweites Tor-Wort konkurriert;
  • 8 ein stark abstrahiertes Blockdiagramm von einer ersten Zähler-Logik und Steuerschaltung/Firmware ist, die in jedem Prozessor gemäß einem ersten beispielhaften Ausführungsform der Erfindung enthalten sind; und
  • 9 ein stark abstrahiertes Blockdiagramm von einer zweiten Zähler-Logik und einer Steuerschaltung/Firmware ist, die in jedem Prozessor gemäß einer zweiten beispielhaften Ausführungsform der Erfindung enthalten sind; und
  • 10 ein stark abstrahiertes kombiniertes Timing-Diagramm/Flussdiagramm von Operationen ist, welche in dem Blockdiagramm von 7 stattfinden, wenn mehr als ein Prozessor um ein erstes Tor-Wort konkurriert und zumindest ein anderer Prozessor um ein zweites Datenwort konkurriert.
  • Definitionen:
  • Für ein volles Verständnis des Inbeschlagnahme-Problems und der Ausführungsformen der Erfindung ist es wichtig, zu verstehen, wie bestimmte „Übertragungs"- und „Auslagerungs"-Informations-Transfer-Operationen in Multiprozessor-Writeinto-Cache-Umgebungen ausgeführt worden sind. Entsprechend der Verwendung in dieser Beschreibung, ist ein „Datenwort" eine feste Anzahl von Bits, die Daten repräsentieren, wie diese im Speichersystem gespeichert sind. Ein „Block" ist eine feste Anzahl von Datenworten, welche zwecks Effizienz von Design und Arbeitsablauf transportiert werden, wenn auf Daten in dem Speichersystem zugegriffen wird.
  • Bezugnehmend auf 1 wird eine vereinfachte herkömmliche Multiprozessor-Write-into-Cache-Umgebung gezeigt. In dem Beispiel haben eine Mehrzahl von Prozessoren, CPUA 106, CPUB 108, CPUC 107 und CPUD 109, jeder einen eigenen Cache, PCA 106P, PCB 108P, PCC 107P bzw. PCD 109P. Die eigenen Caches PCA, PCB von CPUA bzw. CPUB sind miteinander und mit einem ersten gemeinsam genutzten Cache 104 (gemeinsam genutzten Cache AB) über einen ersten lokalen Bus 112 verbunden. In ähnlicher Weise sind die eigenen Caches PCC, PCD von CPUC bzw. CPUD miteinander und mit einem zweiten gemeinsam genutzten Cache 105 (gemeinsam genutzten Cache CD) über einen zweiten lokalen Bus 113 verbunden. Der gemeinsam genutzte Cache AB und der gemeinsame genutzte Cache CD haben jeder ein internes Verzeichnis, 104D, 105D, um den Inhalt bzw. Status von in den Caches gespeicherten Daten ausfindig zu machen. Der gemeinsam genutzte Cache AB und der gemeinsam genutzte Cache CD kommunizieren miteinander und mit einem Hauptspeicher 103 über einen Systembus 111.
  • Herkömmlicherweise sind die gemeinsam genutzten Caches 104 und 105 und die eigenen Caches 106P, 108P, 107P, 109P assoziativ eingestellt; beispielsweise können die gemeinsam genutzten Caches vier Stufen der Assoziierung haben und die eigenen Caches sechzehn Stufen der Assoziierung. Betrachten wir nun die folgenden Definitionen an einem Beispiel:
  • CPU-„Übertragung", gleicher gemeinsam genutzter Cache:
  • Wenn CPUA einen „modifizierten" (durch CPUA, nachdem CPUA den „Besitz” erlangt hat) Datenblock „X" innerhalb eines gegebenen Satzes aufweist, dann hat keine der anderen CPUs CPUB, CPUC, CPUD eine gültige Kopie des Blocks in ihrem eigenen Cache. Außerdem wird angenommen, dass der gemeinsam genutzte Cache AB einen Eintrag in sein Verzeichnis 104D hat, der zeigt, dass CPUA den Block X besitzt. Wenn CPUB nun eine Lese-Anforderung für Block X macht, dann sendet der gemeinsam genutzte Cache AB eine „Übertragungs"-Anforderung für Block X an CPUA. CPUA antwortet durch Senden einer Kopie von Block X an den gemeinsam genutzten Cache AB, welcher Block X an CPUB sendet. Der eigene Cache PCA setzt (in einem internen Verzeichnis in PCA, nicht gezeigt) für CPUA den „modifizierten" Indikator für Block X, um anzuzeigen, dass CPUA nicht länger die einzige gültige Kopie von Block X „besitzt". Außerdem wird das Verzeichnis 104D für den gemeinsam genutzten Cache AB aktualisiert, so dass gezeigt wird, dass CPUA nicht länger Block X besitzt, was bedeutet, dass PCA von CPUA nun nur eine Lesekopie hat.
  • CPU-„Übertragung", anderer gemeinsam genutzter Cache:
  • Wenn CPUA einen modifizierten Block „X" hat, dann hat keine von den anderen CPUs eine gültige Kopie dieses Blocks in ihrem entsprechenden eigenen Cache. Zusätzlich hat der gemeinsam genutzte Cache AB einen Eintrag in sein Verzeichnis 104D, welcher anzeigt, dass CPUA die einzige gültige Kopie von Block X hat. Wenn CPUC nun eine Lese-Anforderung für Block X macht, dann muss der gemeinsam genutzte Cache CD eine Lese-Anforderung auf dem Systembus 111 an alle Einheiten auf dem Bus machen, einschließlich des Hauptspeichers 103. Der gemeinsam genutzte Cache AB überprüft sein Verzeichnis 104D und ermittelt, dass CPUA die einzige gültig Kopie von Block X hat. In diesem Fall werden die Daten von CPUA zu dem gemeinsam genutzte Cache AB übertragen und dann über den Systembus 111 an den gemeinsam genutzte Cache CD und dann an PCC 107P, den eigenen Cache von CPUC, gesendet. Da die Daten schon auf dem Systembus 111 sind, werden sie auch in den Hauptspeicher 103 geschrieben. (Wenn ein gemeinsam genutzter Cache auf eine Lese-Anforderung antwortet, dann wird herkömmlicher Weise irgendeine parallele Lese-Antwort von dem Hauptspeicher in eine Schreib-Aktion im Speicher umgewandelt, so dass der Hauptspeicher mit der übertragenen Kopie aktualisiert wird.)
  • Wenn eine CPU-Anforderung für einen Datenblock eine übertragungs-Operation verursacht und diese CPU-Anforderung für eine Schreib-Aktion ist, dann benötigt die anfordernde CPU den Besitz des Blocks und hat schließlich die einzige gültige Kopie, wenn die CPU den Block modifiziert. In diesem Fall ist die übertragungs-Aktion auch eine Lösch-Aktion, so dass ein „übertragungs- und Löschungs"-Befehl auf alle Kopien von dem angeforderten Block in dem System angewandt wird. Wenn die anfordernde CPU den übertragenen Block überschreibt, markiert sie den Block als „modifiziert" und das Verzeichnis vom gemeinsam genutzten Cache der CPU zeigt der anfordernden CPU den Besitz des Blocks an.
  • CPU-„Auslagern” in den gemeinsam genutzten Cache:
  • Wenn CPUA einen modifizierten Datenblock X innerhalb eines Satzes hat, wo alle Stufen einen gültigen Eintrag aufweisen, dann wird, sollte CPUA eine Fehlstelle für eine nachfolgende Anforderung zum Erhalten des Datenblocks Y haben, dessen Adresse zu diesen Satz passt, eine Übertragungs-Anforderung für den fehlenden Block Y erzeugt. Wenn der fehlende Block Y ankommt, ist kein Platz in dem Satz verfügbar, da alle Einträge gültig sind. Durch herkömmliche Mittel (nicht gezeigt) wird Platz für den neuen Block Y durch Entfernen des „zu allerletzt verwendeten" (LRU, Least Recently Used) Blocks aus dem Satz bereitgestellt. Wenn der LRU-Block als modifiziert markiert ist, wobei er die einzige gültige Kopie in dem Speichersystem ist, muss der LRU-Block beibehalten werden, und deshalb wird der LRU-Block vom eigenem Cache in den gemeinsam genutzten Cache geschrieben („ausgelagert"). In dem Beispiel werden Block-X-Daten von CPUA zum gemeinsam genutzten Cache AB gesendet und der Verzeichniseintrag des gemeinsam genutzten Caches AB wird aktualisiert, so dass gezeigt wird, dass die Block-X-Daten durch den neuen Block ersetzt worden sind. Block X existiert nicht länger in PCA. Allerdings speichert der gemeinsam genutzte Cache AB den Block X, wobei Block X als gültig und nicht in CPU-Besitz markiert wird, bis der gemeinsam genutzte Cache AB den Block in den Hauptspeicher auslagern muss, so dass Platz innerhalb seines eigenen Satzes geschaffen wird.
  • „Auslagern" des gemeinsam genutzten Caches in den Hauptspeicher:
  • Es wird angenommen, dass CPUA einen modifizierten Block X hat und dass die Stufen des Verzeichniseintrags für Block X im gemeinsam genutzten Cache AB alle gültig sind. Wenn CPUB nun eine Lese-Anforderung oder Schreib-Anforderung für einen anderen Block Y erzeugt und es eine Fehlstelle gibt, sowohl in PCB als auch im gemeinsam genutzten Cache AB, in dem gleichen Satz wie Block X, muss der gemeinsam genutzte Cache AB eine Übertragungs-Anforderung auf dem Systembus senden, um Block Y zu erhalten, welcher von dem gemeinsam genutzten Cache CD oder dem Hauptspeicher kommen kann. Wenn die Auslagerungs-Bedingung (LRU) für den gemeinsam genutzten Cache AB den Block Y an den Ort von Block X leitet, dann muss Block X in den Hauptspeicher ausgelagert werden. Als erstes wird der gemeinsam genutzte Cache AB den modifizierten Block X von CPUA übertragen (und löschen) und dann die Daten für Block X zurück in den Hauptspeicher auslagern/schieben. Das schafft Raum im gemeinsam genutzten Cache AB für die von CPUB für Block Y angeforderten Daten.
  • Beschreibung der bevorzugten Ausführungsform(en)
  • Bezugnehmend auf die 2 bis 4 wird das „Inbeschlagnahme"-Problem im Detail erläutert. Zwei Prozessorpaare 6P, 8P und 7P, 9P werden auf zwei Schaltungsplatinen 1, 2 mit eigenen Caches der ersten Stufe 6C, 8C, 7C, 9C entsprechend dargestellt. Gemeinsam genutzte Caches der zweiten Stufe (gemeinsam genutzter Cache SHCAB 4, welcher den eigenen Caches PCA 6C, PCB 8C dient, und der gemeinsam genutzte Cache SHCCD 5, welcher den eigenen Caches PCC 7C, PCD 9C dient) werden zwischen den Platinen 1, 2 positioniert dargestellt, so dass die einer Write-into-Cache-Architektur innewohnenden Verzögerungen vergrößert werden. (In gegenwärtigen Systemen ist ein gemeinsam genutzter Cache typischerweise auf der gleichen Platine angeordnet wie der Prozessor oder die Prozessoren, denen er dient, und auf der Platine kann mehr als ein Prozessor angeordnet sein und denselben gemeinsam genutzten Cache verwenden. Ferner können in dichter gepackten Schaltkreis-Umgebungen mehrere gemeinsam genutzte Caches, von denen jeder einem oder mehr Prozessoren dient, auf der gleichen Platine angeordnet sein.)
  • Der Begriff „Write-into-Cache" definiert einen Caching-Prozess, welcher durch Vermeiden der Notwendigkeit, immer neu geschriebene Datenworte in den Hauptspeicher 3 zu senden, Zeit spart. In einer "Write-into-Cache"-Umgebung wird ein neu geschriebenes Datenwort innerhalb des eigenen Caches des Prozessors, der es geschrieben hat, gespeichert, und das ist die einzige gültige Kopie des Datenworts in der Speicherhierarchie. Alle veralteten Kopien in anderen Prozessoren werden für ungültig erklärt, wenn das Schreiben erfolgt. Eine Kopie des neu geschriebenen Datenworts kann durch irgendeinen beliebigen Prozessor, der einen Übertragungs-Prozess verwendet, beschafft werden. Das ändert den Status von allen Kopien des neu geschriebenen Datenworts von „gültig, modifiziert und im Besitz des Prozessors" in „gültig und modifiziert" oder „gültig", in Abhängigkeit davon, auf welche Platine das Datenwort übertragen wird. „Modifiziert" zeigt an, dass der Hauptspeicher 3 gegenwärtig keine gültige Kopie hat. Der Hauptspeicher 3 wird routinemäßig überschrieben mit der modifizierten Kopie und dadurch aktualisiert, wenn das Datenwort für neu hereinkommende Daten durch eine Auslagerungs-Operation ausgelagert werden muss.
  • Bezugnehmend insbesondere auf 2, beginnt ein potentieller Inbeschlagnahme-Konflikt, wenn ein erster Prozessor CPUA den Besitz eines Tor-Worts 10 einrichtet, welches er vom Hauptspeicher 3 über einen Systembus 11 und SHCAB 4 durch Durchführen von einer herkömmlichen Aktion, die zwischen Lesen und Umschreiben alterniert, erhalten hat, um das Tor-Wort 10 zu erlangen. Das Tor-Wort kann später nicht vom Hauptspeicher 3 erlangt werden, so lange, wie es anhaltende Konkurrenz um den Prozess oder die Daten gibt, deren Nutzung durch das gegebene Tor-Wort gesteuert wird. (Das Tor-Wort wird normalerweise zuerst im Hauptspeicher 3 beschafft, wie in einer Zusammenstellung von Umständen gezeigt wird, die zu Inbeschlagnahme führen.) Der Prozessor CPUA 6P prüft das Tor-Wort, das sich nun in seinem eigenen Cache PCA 6C befindet und SPERRT, wenn erlaubt (nicht als schon in Benutzung durch einen anderen Prozessor markiert), das Tor-Wort und führt den Tor-gesteuerten gemeinsamen Code aus oder verwendet die Tor-gesteuerten gemeinsam genutzten Daten, die durch das Tor-Wort geschützt werden.
  • Dadurch hat in 2 Prozessor CPUA den Besitz des gegebenen Tor-Wort erlangt; Prozessor CPUA hat die einzig gültige Kopie des Tor-Worts in der gesamten Speicherhierarchiesystem in seinen privaten Cache PCA 6C. SHCAP hat auch eine Kopie, aber sie ist als im Besitz durch CPUA markiert. CPUA fährt fort, den geschützte Code/die geschützten Daten auszuführen/zu nutzen, für welche CPUA das Tor-Wort gesperrt hat.
  • Bezugnehmend auf 3, muss CPUB 8P, wenn er auf den gleichen Code/die gleichen Daten zugreifen will, welche durch CPUA ausgeführt/verwendet werden; als Erstes die gegenwärtige Version des Tor-Worts lesen und prüfen. Zum Erlangen eines Zugriff zum Prüfen überträgt CPUB 8P („CPU-Übertragung, gleicher gemeinsam genutzter Cache") das Tor-Wort von SHCAB 4 auf den internen Bus 12 der Platine 1 und prüft es. (Die Platine 2 hat einen zugehörigen internen Bus 13.) CPUB hat nun eine Lese-Kopie und CPUA ist nicht länger der Besitzer. Der Status ist für das Tor-Wort in PCA, SHCAB und PCB in gültig geändert worden. Aber CPUB kann die geschützten Code/Daten noch nicht nutzen, darum wiederholt CPUB das Prüfen der gültigen Kopie, die CPUB in PCB speichert. Der Status ändert sich nicht, bis CPUA den geschützten Code/die geschützten Daten freigibt und das Tor-Wort als GEÖFFNET schreibt, so dass die Verwendung des geschützten Codes oder der geschützten Daten durch einen anderen Prozessor erlaubt wird. Der Status des Tor-Worts ändert sich in „gültig, modifiziert und in Besitz" und CPUB kann wieder Zugriff auf die neue Version des Tor-Worts erhalten, durch Übertragen einer Kopie von SHCAB in PCB über den internen Bus 12. Dieser Zugriffspfad hat sehr kurze Verzögerungen, weil es keine Notwendigkeit gibt, Information durch die gemeinsam genutzten Caches 4, 5 über den Systembus 11 zu transportieren,
  • In 4: Ein anderer Zustand wird gezeigt, in welchem CPUA noch den geschützten Code/die geschützten Daten verwendet, und CPUB fortfährt, das Tor-Wort in der Version, die sich in PCA befindet, zu prüfen. Nun muss CPUC 7P auf Platine 2 auch die Routine/Daten, die von diesem besonderen Tor-Wort geschützt sind, ausführen/verwenden. Der Zugriffspfad von CPUC zum Erhalten einer Kopie des Tor-Worts zum Prüfen erfordert eine deutlich längere Verzögerung. CPUC muss die Daten von PCA 6C durch SHCAB 4, Systembus 11 und SHACD 5 übertragen („CPU-Übertragung, anderer gemeinsam genutzter Cache"), während CPUC mit irgendeiner beliebigen anderen Systembus-Aktivität konkurriert, danach muss CPUC die Daten durch seinen eigenen Cache PCC 7C zum Prüfen übertragen. Nach dem ersten Lesen ist die Tor-Wort-Kopie in CPUC/PCC und in SHCCD platziert worden und der Status der Tor-Wort-Kopie ist geändert worden in „gültig"; CPUC wiederholt das Prüfen seiner eigenen Kopie des Tor-Worts. An dieser Stelle ist das Tor-Wort noch als GESPERRT markiert, weil CPUA das Verwenden des Tor-gesteuerten Codes/der Torgesteuerten Daten noch nicht beendet hat. Wenn CPUA das Verwenden des geschützten Codes/der geschützten Daten schließlich beendet, schreibt CPUA das Tor-Wort als GEÖFFNET. Der Status des Tor-Worts wird durch CPUA in „gültig, modifiziert und in Besitz" geändert.
  • An dieser Stelle hat CPUA die einzige aktualisierte Kopie des Tor-Worts in PCA. Nun beginnt die „Inbeschlagnahme". Sowohl CPUB auf Platine 1 als auch CPUC auf Platine 2 versuchen, das Tor-Wort zu erlangen. Allerdings kann CPUB das Datenwort von CPUA auf dem internen Bus 12 von Platine 1 übertragen, ohne den Systembus 11 zu nutzen, während die von CPUC versuchte Übertragung auf dem Systembus 11 und durch die Mechanismen der gemeinsam genutzten Cache-Schnittstellen, sowohl von SHCCD als auch von SHCAB, vonstatten gehen muss. CPUB „gewinnt" unter diesen Bedingungen immer. CPUB prüft das Tor-Wort, stellt fest, dass es GEÖFFNET ist, und SPERRT es, bevor CPUC eine Lese-Kopie des Tor-Worts zum Prüfen erlangen kann. Typischerweise versucht CPUA bei stark genutzten Toren wieder, das gleiche Tor-Wort zu erlangen, diesmal in Konkurrenz mit CPUC, und gewinnt, wegen des Handicaps von CPUC in dem Prozess. So geht es weiter, bis CPUC auf seinem Ablauf-Timer unterbrochen wird und den Prozess, der das Tor benötigt, abbricht. CPUC „gibt auf" und versucht es später wieder.
  • Es ist zu beobachten, dass eine Tor-Wort-geschützte Code-Routine einige einzigartige Eigenschaften hat. Die Tor-Wort-geschützte Code-Routine ist für die Verwendung durch einen Prozessor zu einer bestimmten Zeit vorgesehen; typischerweise werden einige zeitabhängige Daten verändert. Der Code der Tor-Wort-geschützten Routine ist kurz und Interrupt-geschützt, mit irgendeiner beliebigen festgelegten Zeitdauer, die ein Prozessor mit dem geschützten Code arbeiten kann. Das Betriebssystem verwendet Tor-Wort-geschützten Code ausgiebig; und als ein Resultat stehen mehrere Prozessoren immer in Konkurrenz um die Kontrolle eines gegebenen Tor-Worts. In den vorigen Write-into-Cache-Architekturen wird wiederholt auf das Tor-Wort zugegriffen und das Datenwort wird mit jedem Zugriff von eigenem Cache zu eigenem Cache übergeben. Irgendwelche beliebigen Verzögerungen in diesem Zugriffspfad, welche von einem gegebenen Prozessor einem anderen Prozessor aufgenötigt werden, verursachen eine unakzeptable Priorität, wo der Prozessor mit dem schnellsten Zugriffspfad einen Tor-Wort-Zugriff und damit die Kontrolle über die Tor-gesteuerte Routine in Beschlag nimmt. Tor-Wort-geschützte Daten haben ähnliche Charakteristika.
  • Das Vorangehende demonstriert das Inbeschlagnahme-Problem. Nun wird gezeigt, wie eine beispielhafte Ausführungsform der Erfindung, welche in Anmeldung Nr. 10/403,703 beschrieben und beansprucht ist, Inbeschlagnahme beseitigt.
  • Alle Prozessoren haben einen gemeinsamen Zugangsknoten zum Hauptspeicher 3, mit gleichberechtigten Prioritätsstufen, und diese herkömmliche Anordnung offeriert die Möglichkeit, das Inbeschlagnahme-Problem zu beseitigen, obwohl ein etwas langsamerer Hardware-Zugriff resultieren kann. Dieser langsamere Zugriff kann abgewogen werden gegen die erfahrungsgemäß viel größeren Verzögerungen beim Versuchen des Korrigierens der Inbeschlagnahme in irgendeiner beliebigen bekannten Form von Software- und/oder Hardware-Mechanismen für diesen Zweck (außer, in mancher Beziehung, für den Zweck der oben identifizierten früheren Lösungen, die in den ebenfalls anhängigen Anmeldungen erläutert werden, wobei die Lösungen für eine Verwendung in manchen Betriebssystem auch nicht brauchbar sind).
  • Die Ausführungsformen der Erfindungen, die in Anmeldung Nr. 10/403,703 beschrieben und beansprucht sind, ziehen Vorteil aus der Erkenntnis, dass Tor-Wort-Zugriff durch Multiprozessoren mit ungleichen Zugriffs-Verzögerungen in einer „Write-into-Cache"-Architektur beseitigt werden können, durch Schaffen des Tor-Worts von einem Prozessor-Cache in den Hauptspeicher 3, wann immer das Tor-Wort geschrieben wird. Diese Aktion muss stattfinden, wenn ein Tor-Wort GESPERRT ist und, was noch wichtiger ist, wenn ein Tor-Wort während des ÖFFNUNGS-Prozesses geschrieben wird.
  • Zum Implementieren dieses Features wird die Funktionalität der Tor-Gebrauchsanleitungen (wie auch immer sie in einem bestimmten System genannt werden) gegenüber den Äquivalenten gemäß dem Stand der Technik geändert. Diese Tor-Wort-Gebrauchsanleitungen lesen ein Tor-Wort, schützen es vor einem Zugriff durch das Lesen, prüfen es dann und überschreiben es. Durch Hinzufügen einer Auslagerungs-Operation zu der Tor-Wort-Gebrauchsanleitung gemäß dem Stand der Technik und auch Einrichten einer kurzen Verzögerung in allen Prozessoren, wobei versucht wird auf Tor-Worte zuzugreifen (um sicherzustellen, dass das Schreiben des Tor-Worts in den Hauptspeicher sicher abgeschlossen wird), werden die Effekte der Inbeschlagnahme beseitigt, wie es unter Bezugnahme auf die 5A, 5B, 5C und 6 gezeigt wird.
  • Bezugnehmend auf 5A wird eine erste Stufe des Ausführens einer LESE-Tor-Wort-Gebrauchsanleitung in einer beispielhaften Ausführungsform der Erfindung, die in Anmeldung Nr. 10/403,703 offenbart und beansprucht wird, dargestellt. In einer Weise ähnlich zu der oben in Verbindung mit 2 erläuterten Weise unternimmt der erste Prozessor CPUA 6P das Einrichten des Besitzes eines Tor-Worts 10, welches er vom Hauptspeicher 3 über dem Systembus 11, den gemeinsam genutzten Cache AB und den lokalen Bus 12 erhalten hat. CPUA prüft das Tor-Wort, das sich nun in PCA 6C befindet, und, wenn es GEÖFFNET ist (nicht als geschrieben markiert – wie schon in Verwendung durch einen anderen Prozessor), SPERRT CPUA das Tor-Wort in PCA und beginnt den Tor-gesteuerten gemeinsam genutzten Code auszuführen oder die Tor-gesteuerten gemeinsam genutzten Daten zu verwenden, welche durch das jeweilige Tor-Wort geschützt sind.
  • Die zweite Stufe (SPERREN) der Durchführung (unmittelbar auf die erste Stufe folgend) der LESE-Tor-Wort-Gebrauchsanleitung in einer beispielhaften Ausführungsform der Erfindung wird in 5B dargestellt. CPUA, die nun den Besitz des Tor-Worts erlangt und das Tor-Wort als GESPERRT markiert (geschrieben) hat, richtet zwei Operationen ein. Ein spezielles „Setze Verzögerungs-Markierungen"- oder „SYNC"-Interrupt-Signal wird gesendet, so dass die Verzögerungs-Markierungs DL 6D, 7D, 8D, 9D an alle Prozessoren gesetzt werden, um kurze Verzögerungen in jedem Prozessor zu starten, bevor ein Tor-Wort zum Prüfen durch irgendeinen Prozessor von Hauptspeicher 3 angefordert werden kann. Dann wird eine „CPU-Auslagerung zum gemeinsam genutzten Cache"-Operation durchgeführt (anstatt einer Übertragungs-Operation gemäß dem Stand der Technik). Das platziert eine gültige Kopie des Tor-Worts ohne angezeigten Besitz durch eine CPU im gemeinsam genutzten Cache AB.
  • Die unmittelbar folgende dritte Stufe der Durchführung von einer LESE-Tor-Wort-Gebrauchsanleitung, die in einer beispielhaften Ausführungsform der Erfindung in Anmeldung Nr. 107403,703 offenbart und beansprucht ist, wird in 5C dargestellt. Eine „'Auslagern' eines gemeinsam genutzten Caches in den Hauptspeicher"-Operation wird durchgeführt, um eine gegenwärtige Version des Tor-Worts, die noch als GESPERRT markiert ist, vom gemeinsam genutzten Cache AB in den Hauptspeicher zu übertragen. Wenn die lange Verzögerung Time-Out anzeigt, können alle Prozessoren in dem System gültige Kopien des Tor-Worts vom Hauptspeicher 3 lesen, aber auf ein Prüfen hin wird festgestellt, dass das Tor-Wort GESPERRT ist. Die Prozessoren, welche den Besitz des Tor- Worts anstreben, lesen und prüfen das Tor-Wort wiederholt, so wie es individuelle Prozessor-Operationen erlauben.
  • Wenn CPUA das Durchführen/die Verwendung des geschützten Codes/der geschützten Daten abschließt, schreibt CPUA das Tor-Wort, als GEÖFFNET markiert, in einer Weise ähnlich zu den in den 5B und 5C gezeigten Schritten. Eine kurze Verzögerung (welche kürzer als die vorige Verzögerung sein kann) wird durch Setzen der Verzögerungs-Markierungen DL eingerichtet und eine „CPU-´Auslagerung` in den gemeinsam genutzten Cache"-Operation wird durchgeführt, um eine gültige Kopie des Tor-Worts, die als „GEÖFFNET" markiert wird, im gemeinsam genutzten Cache AB zu platzieren. Dann wird eine „´Auslagerung` des gemeinsam genutzten Caches in den Hauptspeicher"-Operation durchgeführt, um das gültige Tor-Wort in den Hauptspeicher zu verschieben. Sobald die kurzen Verzögerungen enden, wird das Tor-Wort wieder gleichberechtigt für alle Prozessoren verfügbar, zum Lesen und Prüfen, sowie zum potentiellen Erlangen durch einen Prozessor.
  • Dadurch haben, wie in 6 gezeigt, alle Prozessoren gleichberechtigten Zugriff auf das im Hauptspeicher gespeicherte Tor-Wort zum Lesen und Prüfen, weil die Verzögerungen, die während solcher Lese-Operationen auftreten, bei allen Prozessoren gleich sind. Folglich treten Inbeschlagnahme-Zustände nie auf; und der erste Prozessor erlangt den Besitz, so dass festgestellt wird, dass das Tor-Wort im Hauptspeicher 3 GEÖFFNET ist, und fährt fort, wie oben beschrieben.
  • Beim Nutzen der Tor-Prüf(SZNC)- und Tor-Steuer(STC2)-Befehle zum Bewirken von Verzögerungen, welche Software-Tor-Wort-Konkurrenz vermeiden, kann aber der erste Prozessor selbst die Tor-Wort-Zugriffs-Leistung verringern. Das kann passieren, falls Verzögerungen eingestellt werden, wenn es keine Konkurrenz um einen Tor-Wort-Zugriff gibt. Zum Darstellen dieses Phänomens ist es hilfreich, den Ablauf der Prüf(SZNC)- und Tor(STC2)-Befehle durchzusehen.
  • Wenn mehrere Prozessoren versuchen, auf dasselbe Software-Tor-Wort zur gleichen Zeit zuzugreifen, erlangt einer die Kontrolle und sperrt das Tor. Alle verbleibenden Prozessoren warten dann hinter dem gesperrten Tor. Das bedeutet typischerweise, dass die verbleibenden Prozessoren den Tor-Prüf(SZNC)-Befehl wiederholen, und, wenn sie durch Prüfen des Inhalts feststellen, dass das Tor GESPERRT ist, mit einem bedingten Befehl transferieren oder zurück zum (SZNC)-Befehl gehen. Jeder Prozessor, der eine Tor-Warteschleife durchführt, hat eine Lese-Kopie des Tor-Worts in seinem Cache. Nachdem der ursprüngliche Prozessor das Tor-Wort mit den gesperrten Daten schreibt, hat sein Cache die einzig gültige Kopie des Tor-Worts. Der nächste Prozessor in Konkurrenz um das gleiche Tor-Wort, welcher den Zugriff versucht, bekommt eine Lese-Kopie des Datenworts. Der Besitz verbleibt nicht bei dem Prozessor, der ursprünglich das Tor mit einer Schreib-Operation gesperrt hat. Jeder Prozessor in Konkurrenz um das gleiche Tor (in einer Tor-Warteschleife) hat eine Nur-Lese-Kopie in seinem Cache, bis der ursprüngliche Prozessor das Tor-Wort mit der GEÖFFNET-Markierung schreibt.
  • Wenn der Prozessor, welcher das Tor-Wort gesperrt hat, das Tor-Wort mit einem Tor-Steuer(STC2)-Befehl öffnet, ist die Reihenfolge der Ereignisse wie folgt:
    • 1) Der Tor-Steuer(STC2)-Befehl sendet einen speziellen Interrupt (SYNC) an alle Prozessoren in dem System, um eine Markierung DL zu setzen, die eine feste Verzögerung bewirkt, wenn das nächste Mal der Tor-Prüf(SZNC)-Befehl ausgeführt wird. Das ist die lange Verzögerung.
    • 2) Nach dem Ausgeben des Interrupts verzögert (kurze Verzögerung) der Tor-Steuer(STC2)-Befehl lange genug, so dass alle Prozessoren in dem System den Interrupt empfangen.
    • 3) Alle Prozessoren empfangen den Interrupt. Das nächste Mal, wenn ein Prozessor einen Tor-Prüf(SZNC)-Befehl durchführt, prüft er zuerst den speziellen Interrupt, und wenn der spezielle Interrupt gesetzt ist, führt der Prozessor eine lange Verzögerung durch, bevor er mit der Durchführung des normalen Tor-Prüf(SZNC)-Befehls fortfährt. Diese lange Verzögerung vermeidet für die Dauer der langen Verzögerung, dass die konkurrierenden Prozessoren auf ihre Caches zugreifen. Das bringt Zeit für das Entfernen des Tor-Worts aus allen Caches und das Zurückbringen des Datenworts in den Speicher.
    • 4) Nach der kurzen Verzögerung aktualisiert der Tor-Steuer(STC2)-Befehl das Tor-Wort mit Daten, die als GEÖFFNET markiert sind, wie er es normalerweise tun würde. Der Prozessor, der das Tor-Wort mit einer Schreib-Aktion öffnet, hat nun die einzige gültige Kopie in seinem eigenen Cache. Das hat den Effekt des Ungültigmachens der Nur-Lese-Kopien des Tor-Worts in allen anderen Prozessoren in dem System.
    • 5) Der Tor-Steuer(STC2)-Befehl sendet einen zweiten speziellen Interrupt an seinen gemeinsam genutzten Cache. Das verursacht ein Entfernen des Tor-Worts, wobei es zurück in den Speicher gebracht wird. Das wird mit einer Übertragung getan und löscht den Block des Speichers, der das Tor-Wort enthält. Das bringt den Block zurück zum Speicher.
  • Diese Serie von Schritten ÖFFNET das Tor-Wort mit einer Schreib-Aktion und bringt das Tor-Wort zum Hauptspeicher, wo alle gemeinsam genutzten Caches eine gleichberechtigte Chance haben, Zugriff auf das Tor-Wort, um das sie konkurrieren, zu erhalten. Das wird durch Einrichten gleicher Verzögerungen in den Hardware-Strukturen erreicht, die beim Zugriff auf den Speicher verwendet werden.
  • Die in Anmeldung Nr. 10/403,703 offenbarte und beanspruchte Erfindung vermeidet die Inbeschlagnahme von einem Zugriff auf ein einzelnes Tor in einer Konkurrenzsituation oder schwächt die Inbeschlagnahme zumindest ab, aber Mehrfach-Prozesse, die in einem Multiprozessor-System ablaufen, erfordern typischerweise eine Anzahl von Tor-Worten, wobei jedes einen Zugriff auf individuellen Code/individuelle Datensätze schützt. Dadurch wird, wenn ein bestimmter Prozessor Zugriff auf ein Tor-Wort will, was nicht im Konkurrenz mit irgendeinem beliebigen anderen Prozess steht, der Tor-Zugriff dieses Prozessors mit einer vollen langen Verzögerung beaufschlagt, gemäß der in Anmeldung Nr. 10/403,703 offenbarten und beanspruchten Erfindung, obwohl der Prozessor nicht um das gleiche Tor-Wort konkurrieren will.
  • Wie beispielsweise in 7 gezeigt, werden ein Tor-Wort 1 10 und ein Tor-Wort 2 20 (es kann so viele Tor-Worte geben, wie für ein gegebenes System geeignet) im Hauptspeicher 3 gespeichert. Wenn, wie vorher beispielhaft beschrieben, CPUA 6P erfolgreich einen Zugriff auf ein Tor-Wort 1 erlangt hat, sendet Tor-Wort 1 den speziellen Interrupt (SYNC) an alle anderen Prozessoren in dem System, einschließlich CPUE 16P. Allerdings konkurriert CPUE nicht um Tor-Wort 1, aber um Tor-Wort 2 20. Gemäß den in der Anmeldung Nr. 10/403,703 offenbarten Ausführungsformen der Erfindung ist CPUE der langen Verzögerung genauso ausgesetzt, wie wenn CPUE um Tor-Wort 1 konkurrieren würde. Diese Tatsache bewirkt eine Begrenzung der Systemleistung in Systemen, welche Mehrfach-Tor-Worte verwenden. Ausführungsformen der vorliegenden Erfindung schwächen dieses Problem deutlich ab, wie aus der unten stehenden Erläuterung unter Bezugnahme auf die 8 und 9 klar wird.
  • Die Aufmerksamkeit wird nun auf 8 gelenkt, welche ein stark abstrahiertes Blockdiagramm von beispielhafter vereinfachter Zähler-Logik (Hardware oder Hardware/Firmware) darstellt, die in jedem Prozessor in dem System enthalten ist; wobei der in dem Beispiel diskutierte Prozessor CPUE 16P ist (7). Eine Sperre 16SDL wird durch ein SYNC(spezielles Interrupt)-Signal gesetzt, das durch einen Prozessor, beispielsweise CPUA 6P (7), gesendet wird, wobei der Prozessor den Besitz von Tor-Wort 1 während des vorher beschriebenen Durchführens von SZNC 1 erlangt hat. Diese Aktion startet der Verzögerungs-Zähler 16D von CPUE über eine UND-Gatter-Logik 16G2, wobei der Verzögerungszähler 16D durch den Systemtakt CLK inkrementiert wird (in diesem Beispiel), so dass die lange Verzögerung beginnt, wie oben beschrieben.
  • Zusätzlich setzt das SYNC Signal von dem Prozessor, welcher Tor-Wort 1 erlangt hat, noch eine andere Sperre 16L, um einen Eingang der UND-Gatter-Logik 16G1 zu aktivieren. Der Systemtakt CLK wird an einen anderen Eingang der UND-Gatter-Logik 16G1 angelegt, und ein Signal, das anzeigt, dass CPUE den Besitz eines Tor-Worts anstrebt (oder den Besitz eines Tor-Worts anstreben soll), wobei das Tor-Wort von Tor-Wort 1, Tor-Wort 2 in dem Beispiel verschieden ist, wird an noch einen anderen Eingang der UND-Gatter-Logik 16G1 angelegt. Folglich beginnt CLK, wenn die UND-Gatter-Logik 16G1 voll aktiviert ist, einen vorher zurückgesetzten Abbruch-Zähler 16TC zu inkrementieren. (Zu bemerken ist, dass das „CPUE STREBT EINEN BESITZ EINES TOR-WORTS VERSCHIEDEN VON TOR-WORT 1 AN"-Signal zu irgendeiner beliebigen Zeit zwischen dem Empfang des „SYNC(TOR-WORT 1)"-Signals und dem Time-Out des Verzögerungs-Zählers 16D ausgegeben werden kann.)
  • Angenommen, dass „CPUE STREBT BESITZ EINES TOR-WORTS VERSCHIEDEN VON TOR-WORT 1 AN" zu einer dazwischenliegenden Zeit ausgegeben wird, zählen der Abbruch-Zähler 16TC und der Verzögerungs-Zähler 16D synchron, aber der Abbruch-Zähler hat typischerweise einen niedrigeren Zählerstand, weil er später gestartet ist. Der momentane Zählerstand in dem Abbruchzähler 16TC wird fortwährend von dem momentanen Zählerstand in dem Verzögerungszähler 16D durch eine Substraktions-Logik 16S subtrahiert, so dass die Ausgabe der Subtraktionslogik, die momentane Differenz, an einen Eingangs-Satz des UND-Gatter-Logik-Arrays 16G3 angelegt wird, welches voll aktiviert ist, wann immer CPUE den Prozess startet, so dass das Tor-Wort 2 durch Starten einer SZNC 2-Operation 16SS abgefragt wird. Wenn die SZNC 2-Operation gestartet wird, wird eine Abbruch-Verzögerung 16TD (DL-TC) aufgerufen, und diese Abbruch-Verzögerung erlaubt CPUE, das Tor-Wort 2 zu prüfen, solange das Tor-Wort 1 noch GEÖFFNET ist, anstatt die volle lange Verzögerung abzuwarten. Die durchschnittliche verkürzte Verzögerung beträgt etwa die Hälfte der vollen langen Verzögerung. Die SCNZ 2-Operation setzt auch die Sperren 16L, 16SDL und die Zähler 16TC, 16D zurück. Es ist außerdem zu bemerken, dass der Abbruch-Zähler 16TC bis zu einem vorgegebenen maximalen Zählerstand läuft, bis er sich selbst und die Sperre 16L zurücksetzt, weil die SCNZ 2 16SS während der relevanten Zeitperioden nicht aufgerufen werden kann.
  • Eine zweite beispielhafte Ausführungsform der Zählerlogik wird in 9 gezeigt. Diese Ausführungsform ist von einfacherer Logik als die Ausführungsform, die in 8 gezeigt ist, wird einfacher in Hardware/Firmware implementiert, und ist ein direkter funktionaler Ersatz. Der in dem Beispiel diskutierte Prozessor ist wiederum CPUE 16P (7) und die Sperre 16L wird durch ein SYNC(spezielles Interrupt)-Signal gesetzt, welches durch einen Prozessor gesendet wird, beispielsweise CPUA 6P (7), welcher den Besitz von Tor-Wort 1 erhalten hat, während er SZNC 1 wie oben beschrieben ausgeführt hat. Diese Aktion aktiviert einen Eingang der UND-Gatter-Logik 16G1. Der Systemtakt CLK wird an einen anderen Eingang der UND-Gatter-Logik 16G1 angelegt, und ein Signal, welches anzeigt, dass CPUE den Besitz von einem Tor-Wort verschieden von Tor-Wort 1, Tor-Wort 2 in dem Beispiel anstrebt, wird an noch einen anderen Eingang zur UND-Gatter-Logik 16G1 angelegt, alles, wie in Verbindung mit der in 8 gezeigten Logik beschrieben. Wenn die UND-Gatter-Logik 16G1 voll aktiviert ist, dann CLK beginnt einen vorher zurückgesetzten modifizierten Abbruchzähler 16TCM zu inkrementieren.
  • Der modifizierte Verzögerungs-Zähler 16DM der Ausführungsform von 9 unterscheidet sich von dem Verzögerungs-Zähler 16D der Ausführungsform von 8 in zwei Aspekten: 1) steuert der Ausgang der UND-Gatter-Logik 16G2 einen Dekrementier-Eingang des Verzögerungs-Zählers 16DM an, so dass dieser mit jedem CLK-Puls herunterzählt, wenn die UND-Gatter-Logik 16G2 voll aktiviert ist; und 2) wird der Verzögerungs-Zählers 16DM wahlweise mit einem variablen Zählerstand von der modifizierten Subtraktionslogik 16SM beschickt, welche eine aktuelle Repräsentanz der Differenz zwischen einer gespeicherten langen Zählkonstante 16LCC und dem momentanen Zählerstand in dem Abbruch-Zähler 16TCM (LC-TC) ausgibt.
  • Der Verzögerungs-Zähler 16DM wird nach dem Start von SZNC 2 16SS mit (LC-TC) beschickt. Danach zählt er von dem eingegebenen Wert herunter, bis er Null erreicht, so dass ein entsprechendes Signal ausgegeben wird, welches SZNC erlaubt, zu enden. Folglich wird, wenn das SZNC 2 gestartet wird, eine verkürzte lange Verzögerung (LC-TC) aufgerufen, und diese verkürzte Verzögerung erlaubt CPUE, das Tor-Wort 2 zu prüfen, solange das Tor-Wort 1 GEÖFFNET ist, anstatt die volle lange Verzögerung abzuwarten.
  • Dadurch ist die Logik von 9 das direkte funktionale Äquivalent der Logik von 8, so dass die durchschnittliche verkürzte Verzögerung etwa die Hälfte der vollen langen Verzögerung beträgt. Die START SZNC 2 16SS-Operation setzt auch die Sperre 16L und den Abbruch-Zähler 16TCM zurück, um für eine nachfolgende Nutzung bereit zu sein.
  • Die mit diesen beispielhaften Ausführungsformen gewürdigten Vorteile der Erfindung (oder anderer funktional äquivalenter Ausführungsformen) können besser unter Bezugnahme auf das Timing-Diagramm gewürdigt werden, das in 10 gezeigt wird. Es wird angenommen, dass CPUA das Tor-Wort 1 geprüft hat, festgestellt hat, das es GEÖFFNET ist, und deshalb den Besitz übernommen hat, alles durch Ausführung einer SZNC 1(Tor-Prüfung von Tor-Wort 1)-Operation. CPUA SPERRT zunächst das Tor-Wort 1 und ruft dann den Tor-Steuerungs-Befehl STC2 1 zum Benutzen des Tor-gesteuerten Codes/der Tor-gesteuerten Daten, die durch das Tor-Wort 1 geschützt sind, auf. CPUA sendet dann das spezielle Interrupt/Synchronisations-Signal an alle Prozessoren in dem System. Wenn einer oder mehrere von CPUE, CPUC, CPUD die Ausführung von einem SZNC 1 (Tor-Prüfung von Tor-Wort 1) starten, nachdem CPUA Tor-Wort 1 GESPERRT hat, dann starten der eine oder mehrere Prozessoren jeder für den oben beschriebenen Zweck eine lange Verzögerung, bevor das Tor-Wort geprüft werden kann.
  • Allerdings unterliegt CPUE, welcher den Besitz des Tor-Worts 2 durch Ausführung eines SZNC 2-Befehls anstrebt, nur der verkürzten Verzögerung, wie oben in Verbindung mit den 8 und 9 beschrieben ist. Dadurch wird aus 10 ersichtlich, dass CPUE das Tor-Wort nicht später prüfen kann, als der früheste unter CPUE, CPUC, CPUD das Tor-Wort 1 prüfen kann, sondern typischerweise wesentlich eher. Folglich wird CPUE (oder irgendein anderer Prozessor, der um das Tor-Wort 2 konkurriert) durch die Aktionen von CPUA beim Starten der langen Verzögerungen in allen Prozessoren in dem System nicht benachteiligt.
  • Natürlich sind die Ausführungsformen der Erfindung nicht auf den Gebrauch von nur zwei Tor-Worten beschränkt. Irgendeine beliebige geeignete Anzahl von Tor-Worten kann in einem gegebenen System eingesetzt werden, so dass die Zeit, zu welcher irgendein beliebiger Prozessor irgendwelche beliebigen Tor-Worte prüfen kann, die (in dem Beispiel) verschieden von Tor-Wort 1 sind, in vorteilhafter Weise verkürzten Verzögerungen unterliegt, anstatt den langen Verzögerungen, die der Ausgabe des SYNC-Signals nicht standhalten, das (in dem Beispiel) durch CPUA an alle Prozessoren gesendet wird.
  • Die Struktur der Ausführungsformen der Erfindung, die in den 8 und 9 gezeigt werden, wurde zum Zweck der Klarheit beim Beschreiben der Erfindung gewählt. Fachleute werden verstehen, dass die Erfindung leicht in verschiedene Ausführungsformen implementiert werden kann, welche der gegenwärtigen logischen Struktur von gegebenen Prozessor-Designs entsprechen. Lediglich als Beispiel, können die Zähler 16D, 16TC (8) eingestellt und dann bis zu einem vorbestimmten Zählerstand, typischerweise Null, dekrementiert werden (negatives Inkrementieren). In einer anderen Variante können der Abbruch-Zähler entfernt und der Verzögerungs-Zähler von Quellen inkrementiert/dekrementiert werden, die äquivalent zu den Ausgängen von UND-Gatter-Logik 16G1 und UND-Gatter-Logik 16G2 sind, angesteuert von alternierenden halben Systemtakten, welche typischerweise in modernen Prozessoren verfügbar sind. Kurz gesagt, können die Basiskonzepte der Erfindung auf viele Weisen implementiert werden, die zur Verwendung in gegebenen Systemarchitekturen und in Prozessorlogik geeignet sind.
  • Indem die Prinzipien der Erfindung nun an einer illustrativen Ausführungsform erklärt wurden, sind für Fachleute sofort viele Modifikationen von Struktur, Anordnungen, Proportionen, der Elemente, Materialien und Komponenten ersichtlich geworden, welche in der praktischen Ausführung der Erfindung genutzt werden, wobei die Modifikationen insbesondere für spezielle Umgebungen und Arbeitsanforderung angepasst werden, ohne von diesen Prinzipien abzuweichen.

Claims (3)

  1. Multiprozessor-"Write-into-Cache"-Datenverarbeitungssystem, welches aufweist: A) einen Speicher (3); B) mindestens einen ersten gemeinsam genutzten Cache (4) und einen zweiten gemeinsam genutzten Cache (5); C) einen Systembus (11), welcher den Speicher (3) und den ersten gemeinsam genutzten Cache (4) sowie den zweiten gemeinsam genutzten Cache (5) verbindet; wobei das System dadurch gekennzeichnet ist, dass es ferner aufweist: D) mindestens einen ersten Prozessor (6P), einen zweiten Prozessor (8P), einen dritten Prozessor (7P) und einen vierten Prozessor (9P), wobei der erste Prozessor (6P) einen ersten eigenen Cache (6C), der zweite Prozessor (8P) einen zweiten eigenen Cache (8C), der dritte Prozessor (7P) einen dritten eigenen Cache (7C) und der vierte Prozessor (9P) einen vierten eigenen Cache (9C) aufweisen, wobei jeder von dem ersten Prozessor (6P), dem zweiten Prozessor (8P), dem dritten Prozessor (9P) und dem vierten Prozessor (9P) ein erstes Verzögerungsmittel und ein zweites Verzögerungsmittel aufweist; E) wobei der erste eigene Cache (6C) und der zweite eigene Cache (8C) mit dem ersten gemeinsam genutzten Cache (4) über einen ersten internen Bus (12) verbunden sind, und der dritte eigene Cache (7C) und der vierte eigene Cache (9C) mit dem zweiten gemeinsam genutzten Cache (5) über einen zweiten internen Bus (13) verbunden sind; F) eine Mehrzahl von Tor-Worten (10, 20), welche im Speicher (3) gespeichert sind, wobei jedes Tor-Wort (10, 20) über den Zugriff auf zu verschiedene gemeinsame Codesätzen/Datensätzen bestimmt, wobei jeder Codesatz/Datensatz von Prozessen, welche in einer Mehrzahl der Prozessoren (6P, 8P, 7P, 9P) ablaufen, gemeinsam genutzt wird; G) ein erstes Mittel für jeden gegebenen Prozessor (6P, 8P, 7P, 9P) zum Lesen und Testen von jedem der Tor-Worte (10, 20) durch Ausführen aufeinanderfolgender Auslagerungs-Operationen zwischen dem Speicher (3) und dem gemeinsam genutzten Cache (4, 5) des gegebenen Prozessors, sowie zwischen dem gemeinsam genutzten Cache (4, 5) des gegebenen Prozessors und dem eigenen Cache (6C, 8C, 7C, 9C); H) ein zweites Mittel für einen ersten gegebenen Prozessor (6P), welcher ein erstes getestetes Tor-Wort beschafft, welches als GEÖFFNET (d.h. offen zugänglich) im Speicher gespeichert ist, so dass das erste getestete Tor-Wort als GESPERRT (d.h. nicht offen zugänglich) in den eigenen Cache (6C) des Prozessors geschrieben wird, und danach aufeinanderfolgende Auslagerungs-Operationen ausgeführt werden, zwischen: 1) dem eigenen Cache (6C) des ersten gegebenen Prozessors und dem gemeinsam genutzten Cache (4) des ersten gegebenen Prozessors; und 2) dem gemeinsam genutzten Cache (4) des ersten Prozessors und dem Speicher (3), so dass der Block, welcher das erste Tor-Wort aufweist, aus dem gemeinsam genutzten Cache (4) des ersten Prozessors entfernt wird, wobei das erste getestete Tor-Wort als GESPERRT in den Speicher geschrieben wird; I) ein drittes Mittel, durch welches der erste gegebene Prozessor (6P) die ersten Verzögerungsmittel in allen Prozessoren startet, so dass erste Verzögerungen eingerichtet werden, so dass ein jeder beliebiger Prozessor vom Lesen und Testen des ersten Tor-Worts zeitweise abgehalten wird; J) ein viertes Mittel, welches, wenn der erste gegebene Prozessor (6P) die Nutzung des gemeinsamen Codes/der gemeinsamen Daten abschließt, über welche vom ersten getesteten Tor-Wort bestimmt wurde, das erste Tor-Wort als GEÖFFNET in seinen eigenen Cache schreibt, und danach aufeinanderfolgende Auslagerungs-Operationen ausgeführt werden, zwischen: 1) dem eigenen Cache (6C) des ersten gegebenen Prozessors und dem gemeinsam genutzten Cache (4) des ersten Prozessors; und 2) dem gemeinsam genutzten Cache (4) des ersten Prozessors und dem Speicher (3), so dass der Block, welcher das erste Tor-Wort aufweist, aus dem gemeinsam genutzten Cache (4) des ersten Prozessors entfernt wird und dabei das erste getestete Tor-Wort als GEÖFFNET in den Speicher geschrieben wird; K) ein fünftes Mittel zum Starten des zweiten Verzögerungsmittels in irgendeinem beliebigen Prozessor, welcher den Besitz eines Tor-Worts anstrebt, welches von dem ersten getesteten Tor-Wort verschieden ist; und L) ein sechstes Mittel zum Verkürzen der Verzögerung, welche durch das dritte Mittel in allen Prozessoren, welche den Besitz eines Tor-Worts anstreben, welches von dem ersten getesteten Tor-Wort verschieden ist, gestartet wurde, durch Subtrahieren der verstrichenen Verzögerungszeit, welche in dem zweite Verzögerungsmittel angezeigt wird, von der verstrichenen Verzögerungszeit, welche in dem ersten Verzögerungsmittel angezeigt wird.
  2. Verfahren, welches in einem Multiprozessor-"Write-into-Cache"-Datenverarbeitungssystem ausführbar ist, welches aufweist: einen Speicher (3); mindestens einen ersten gemeinsam genutzten Cache (4) und einen zweiten gemeinsam genutzten Cache (5); einen Systembus (11), welcher den Speicher (3) und den ersten gemeinsam genutzten Cache (4) sowie den zweiten gemeinsam genutzten Cache (5) verbindet; mindestens einen ersten Prozessor (6P), einen zweiten Prozessor (8P), einen dritten Prozessor (7P) und einen vierten Prozessor (9P), wobei der erste Prozessor (6P) einen ersten eigenen Cache (6C), der zweite Prozessor (8P) einen zweiten eigenen Cache (8C), der dritte Prozessor (7P) einen dritten eigenen Cache (7C) und der vierte Prozessor (9P) einen vierten eigenen Cache (9C) aufweisen, wobei der erste eigene Cache (6C) und der zweite eigene Cache (8C) mit dem zweiten gemeinsam genutzten Cache (4) verbunden sind, und der dritte eigene Cache (7C) und der vierte eigene Cache (9C) mit dem zweiten gemeinsam genutzten Cache (5) verbunden sind; wobei das Verfahren zum Vermeiden der Inbeschlagnahme eines ersten Tor-Worts entwickelt wurde, welches im Speicher (3) gespeichert ist, wobei das Tor-Wort über den Zugriff auf einen ersten gemeinsam genutzten Codesatz/Datensatz bestimmt, welcher von Prozessen gemeinsam genutzt wird, welche in einer Mehrzahl der Prozessoren ablaufen, während gleichzeitig irgendein beliebiger ungünstiger Effekt auf die Leistung von Prozessoren abgeschwächt wird, welche versuchen, auf ein von dem ersten Tor-Wort verschiedenes Tor-Wort zuzugreifen; dadurch gekennzeichnet, dass das Verfahren aufweist: A) wenn ein gegebener Prozessor (6P) versucht, auf den ersten gemeinsame Codesatz/Datensatz zuzugreifen, Auslesen des ersten Tor-Worts in den Cache (6C) des gegebenen Prozessors durch Ausführen aufeinanderfolgender Auslagerungs-Operationen zwischen: 1) dem Speicher (3) und dem gemeinsam genutzten Cache (4) des gegebenen Prozessors; und 2) dem gemeinsam genutzten Cache (4) des gegebenen Prozessors und dem eigenen Cache (6C) des gegebenen Prozessors; B) Testen des ersten Tor-Worts in dem eigenen Cache (6C) des gegebenen Prozessors auf eine GEÖFFNET-Bedingung; C) wenn festgestellt wird, dass das ersten Tor-Wort in dem eigenen Cache (6C) des gegebenen Prozessors als GEÖFFNET markiert ist, Schreiben des Tor-Worts als GESPERRT dorthinein, und danach Ausführen aufeinanderfolgender Auslagerungs-Operationen zwischen: 1) dem eigenen Cache (6C) des ersten gegebenen Prozessors und dem gemeinsam genutzten Cache (4) des ersten gegebenen Prozessors; und 2) dem gemeinsam genutzten Cache (4) des ersten gegebenen Prozessors und dem Speicher (3), so dass der Block, welcher das erste Tor-Wort aufweist, aus dem gemeinsam genutzten Cache (4) des ersten Prozessors entfernt wird und dabei das erste getestete Tor-Wort als GESPERRT in den Cache geschrieben wird; D) Starten einer ersten Verzögerung in allen Prozessoren, so dass zeitweise jeder beliebige Prozessor vom Lesen und Testen des ersten Tor-Worts abgehalten wird; E) wenn der erste Prozessor (6P) die Nutzung des ersten Codesatzes/Datensatzes abschließt, über welchen das erste Tor-Wort bestimmt, Schreiben des ersten Tor-Worts als GEÖFFNET in den eigenen Cache (6C) des Prozessors, und danach Ausführen von aufeinanderfolgenden Auslagerungs-Operationen, zwischen: 1) dem eigenen Cache (6C) des ersten gegebenen Prozessors und dem gemeinsam genutzten Cache (4) des ersten gegebenen Prozessors, und 2) dem gemeinsam genutzten Cache (4) des ersten Prozessors und dem Speicher (3), so dass der Block, welcher das erste Tor-Wort aufweist, aus dem gemeinsam genutzten Cache (4) des ersten Prozessors entfernt wird und dabei das erste getestete Tor-Wort als GEÖFFNET in den Speicher geschrieben wird; F) Starten einer zweiten Verzögerung in irgendeinem beliebigen Prozessor, welcher den Besitz des Tor-Worts anstrebt, welches von dem ersten Tor-Wort verschieden ist; G) Abbruch der in Schritt D) gestarteten Verzögerung in allen Prozessoren, welche den Besitz eines Tor-Worts anstreben, welches vom ersten Tor-Wort verschieden ist, durch Subtrahieren der verstrichenen Zeit, welche durch die zweite Verzögerung angezeigt wird, von der verstrichenen Zeit, welche durch die erste Verzögerung angezeigt wird.
  3. Verfahren gemäß Anspruch 2, dadurch gekennzeichnet, dass sich das Verfahren in dem Multiprozessor-"Write-into-Cache"-Datenverarbeitungssystem ausführen lässt, wobei der Prozessor (6P), der Prozessor (8P), der Prozessor (7P) und der Prozessor (9P) durch mindestens einen Prozessor (6P) ersetzt worden sind, welcher einen eigenen Cache (6C) aufweist, welcher mit jedem von dem ersten gemeinsam genutzten Cache (4) beziehungsweise dem zweiten gemeinsam genutzten Cache (5) verbunden ist.
DE602004008142T 2003-04-30 2004-01-16 Multiprozessor-"Write-Into-Cache"-System, das einen leistungsfähigen Zugang zu einer Vielzahl von Gatterworten enthält Expired - Lifetime DE602004008142T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US426409 2003-04-30
US10/426,409 US6973539B2 (en) 2003-04-30 2003-04-30 Multiprocessor write-into-cache system incorporating efficient access to a plurality of gatewords

Publications (2)

Publication Number Publication Date
DE602004008142D1 DE602004008142D1 (de) 2007-09-27
DE602004008142T2 true DE602004008142T2 (de) 2008-04-30

Family

ID=32990405

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004008142T Expired - Lifetime DE602004008142T2 (de) 2003-04-30 2004-01-16 Multiprozessor-"Write-Into-Cache"-System, das einen leistungsfähigen Zugang zu einer Vielzahl von Gatterworten enthält

Country Status (3)

Country Link
US (1) US6973539B2 (de)
EP (1) EP1475719B1 (de)
DE (1) DE602004008142T2 (de)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535365A (en) * 1993-10-22 1996-07-09 Cray Research, Inc. Method and apparatus for locking shared memory locations in multiprocessing systems
US5872980A (en) * 1996-01-25 1999-02-16 International Business Machines Corporation Semaphore access control buffer and method for accelerated semaphore operations
US6314499B1 (en) * 1997-11-14 2001-11-06 Lucent Technologies Inc. Non-preemptive memory locking mechanism in a shared resource system
US6401176B1 (en) * 1997-11-14 2002-06-04 Agere Systems Guardian Corp. Multiple agent use of a multi-ported shared memory
US6047316A (en) * 1997-12-12 2000-04-04 Intel Corporation Multiprocessor computing apparatus having spin lock fairness
SE521443C2 (sv) * 1999-11-11 2003-11-04 Svenska Rotor Maskiner Ab Skruvrotormaskin med organ för axiell påverkan av åtminstone en av rotorerna
US6754859B2 (en) * 2001-01-03 2004-06-22 Bull Hn Information Systems Inc. Computer processor read/alter/rewrite optimization cache invalidate signals
US6587926B2 (en) * 2001-07-12 2003-07-01 International Business Machines Corporation Incremental tag build for hierarchical memory architecture

Also Published As

Publication number Publication date
EP1475719A3 (de) 2005-03-02
US20040221107A1 (en) 2004-11-04
EP1475719B1 (de) 2007-08-15
DE602004008142D1 (de) 2007-09-27
US6973539B2 (en) 2005-12-06
EP1475719A2 (de) 2004-11-10

Similar Documents

Publication Publication Date Title
DE69729917T2 (de) Cachespeicherräumungsvorrichtung und hiermit versehenes Rechnersystem
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
EP0013737B1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE69733374T2 (de) Speichersteuerungsvorrichtung und -system
DE102013218370B4 (de) Akquirierung spekulativer Genehmigung für gemeinsam genutzten Speicher
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System
DE102007048507A1 (de) Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers
DE112005002180T5 (de) Lösen von Cachekonflikten
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE10316725B4 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE112006002237T5 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE10393727T5 (de) Prozessor-Cache-Speicher als RAM zur Ausführung von Boot-Code
DE4218003A1 (de) Sekundaeres cache-speichersystem
DE112005002402T5 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE112007000812T5 (de) Transaktionalspeicher in Out-of-Order-Prozessoren
DE3439302A1 (de) Speichersteuerungsvorrichtung
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE112016004301T5 (de) Vornehmen einer flüchtigen Fehleratomarität von Isolierungstransaktionen in einem nichtflüchtigen Speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition