-
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.