-
Diese
Erfindung bezieht sich auf einen Speichercontroller und ein Speichersteuerverfahren,
die auf ein Multiprozessorsystem angewendet werden, und insbesondere
auf einen Speichercontroller und auf ein Speichersteuerverfahren,
die die durch ein Speicherbankverfahren gespeicherte Daten synchronisieren.
-
Multiprozessorsysteme
wurden mit einem Speichercontroller vorgesehen, der den gemeinsam genutzten
Hauptspeicher vom Speicherbanktyp verwaltet und steuert und der
Zugriffsanweisungen (einschließlich
Daten und Adressen) auf eine Out-of-Order-Art (ungeordnetete Reihenfolge)
oder auf eine Weak-Order-Art (schwach geordnete Reihenfolge) ausführt.
-
Der
Speichercontroller umfasst nicht nur die Funktion des unabhängigen Steuerns
jedes einem unabhängigen
Speicherbereich entsprechenden Bankspeichers, sondern ebenfalls
die Funktionen des vorübergehenden
Ersetzens der Synchronisation auf eine Weak-Order-Art mit der Synchronisation auf
eine Strong-Order-Art. Die sich auf einen derartigen Synchronisationsvorgang
beziehenden Verfahren werden wie folgt grob eingeteilt.
-
Ein
erstes Verfahren ist derart, dass ein Pufferspeicher mit einer Zuerst-hinein/Zuerst-hinaus-Funktion
(FIFO-Funktion)
für den
Adressenvorgang verwendet wird, und die von den Prozessoren ausgegebenen
Zugriffsanweisungen in der Reihenfolge ausgeführt werden, in der die Adressenvorgänge angenommen
wurden. Bei diesem Verfahren sei angenommen, dass bei dem System
der Adressenbus von dem Datenbus getrennt ist.
-
Hier
bedeutet der Adressenvorgang den Betrieb des Adressenbusses.
-
Ein
zweites Verfahren ist derart, dass eine Managementtabelle, genannt
Scoreboard, den Fortschritt des Vorgangs (den Betriebszustand von
Zugriffsanweisungen) in Einheiten eines unabhängigen Steuerbereichs des Speichers
(Bankspeichereinheiten) verwaltet. Bei diesem Verfahren wird, sobald
ein Synchronisationsvorgang ausgeführt wurde, die Annahme eines
Adressenvorgangs verweigert, bis der vorhergehende Vorgang abgeschlossen
wurde. D.h., der Synchronisationsprozess wird durch Wiederholen
des Synchronisationsvorgangs gewährleistet.
-
Da
das zweite Verfahren die Latenzzeit bei einem Lesevorgang (Lesezugriffsvorgang)
verkürzt, der
nach einem Schreibvorgang (Speicherschreibzugriffsvorgang) ausgeführt wurde,
und den Speicherverwendungswirkungsgrad verglichen mit dem ersten
Verfahren erhöht,
verbessert es den Durchsatz des Systems im tatsächlichen Betrieb.
-
Diese
Verfahren weisen jedoch die folgenden Probleme auf. Das erste Verfahren
gewährleistet die
Ausführung
eines Synchronisationsvorgangs durch Verwenden eines Pufferspeichers
mit einer FIFO-Funktion für
den Adressenbetrieb. Auf dem System werden jedoch Datenvorgänge (der
Betrieb des Datenbusses) nicht immer in der Reihenfolge von Adressenvorgängen ausgeführt. Daher
verursacht die Unabgeschlossenheit der Datenvorgänge einen Zustand, bei dem
alle FIFO-Puffer für
den Adressenvorgang verwendet werden, sodass ein Zustand, bei dem
die Annahme eines Adressenvorgangs verweigert (wiederholt) wird,
wahrscheinlich auftritt. Außerdem
weist das erste Verfahren dadurch einen Nachteil auf, dass, wenn
der Datentransfer von dem vorhergehenden Schreibvorgang nicht beendet wurde,
alle anschließenden
Lesevorgänge
nicht ausgeführt
werden können,
was zu einer größeren Latenzzeit
bei dem Lesevorgang führt.
-
Das
zweite Verfahren verwaltet den Zustand von Vorgängen durch die Verwendung einer
Managementtabelle, sodass es einen Speicherzugriffsvorgang auf eine
Out-of-Order-Art oder auf eine Weak-Order-Art durchführen kann.
Sobald jedoch die Vorgänge
einmal synchronisiert wurden, können
die anschließenden
Vorgänge
(oder die Vorgänge,
die die Synchronisationsbedingungen erfüllen) nicht ausgeführt werden,
bis der vorhergehende Vorgang mit Erfolg abgeschlossen wurde, was
zu dem Problem führt,
dass der Zusatzaufwand des Systems bei dem Synchronisationsprozess
erhöht
wird.
-
Kourosh
Gharachorloo u.a.: "Memory
Consistency and Event Ordering in Scalable Shared-Memory Multiprocessors", Computer Architecture
News, Association for Computer Machinery, New York, USA, Band 19,
Nr. 2, 1. Juni 1990 (1990-06-01), Seiten 15 bis 26, XP000134800
ISSN: 0163-5964 offenbart einen Controller gemäß dem Oberbegriff von Anspruch
1 und ein Verfahren, wie es in dem Oberbegriff von Anspruch 8 beschrieben
ist.
-
Die
Aufgabe der Erfindung besteht darin, einen Speichercontroller und
ein Speichersteuerverfahren bereitzustellen, die imstande sind,
den Zusatzaufwand beim Synchronisieren einer Speicherzugriffsanweisung
bei einem Multiprozessorsystem zu verringern.
-
Diese
Aufgabe wird durch einen Speichercontroller gemäß Anspruch 1 und durch ein
Verfahren gemäß Anspruch
8 erreicht. Die abhängigen
Ansprüche
sind auf weitere vorteilhafte Aspekte der Erfindung gerichtet.
-
Die
Erfindung bezieht sich auf einen Speichercontroller, der insbesondere
auf ein Multiprozessorsystem angewendet wird, auf ein System mit
einer Managementtabelle zum Verwalten des Fortschritts eines Speicherzugriffvorgangs
(dem Betriebszustand einer Zugriffsanweisung), um den Zusatzaufwand beim
Ausführen
eines Synchronisationsvorgangs zu verringern, der eine hohe Ausführungspriorität aufweist.
-
Die
Managementtabelle hält
Synchronisationsflags, die gemäß der Annahme
von Synchronisationsvorgängen
eingestellt sind, zusätzlich
zu den Betriebscodes und Adressen der angenommenen Zugriffsanweisungen.
Wenn ein Zugriffsvorgang von einem Prozessor angenommen wird, setzt
der Speichercontroller den Betriebscode und die Adresse in der Managementtabelle
und setzt das Synchronisationsflag zurück. Zur Zeit, wenn der Speichercontroller einen
Synchronisationsvorgang annimmt, setzt er ein Synchronisationsflag.
Nach Abschluss der Ausführung
des Synchronisationsvorgangs setzt er das Synchronisationsflag zurück. Mit
einem derartigen Verfahren kann ein anschließender Vorgang scheinbar angenommen
werden, was die denm Vorgang anforderdernde Einheit hindert, die
Anforderung zu wiederholen, was den Zusatzaufwand des Systems verringert.
-
Außerdem wird
die Erfindung auf einen Speichercontroller angewendet, der einen
Speicher mit einer Mehrzahl von unabhängig steuerbaren Speicherbereichen,
wie beispielsweise ein Speicherbanksystem, steuert. Eine Managementtabelle
wird für
jeden Speicherbereich (jeden Bankspeicher) bereitgestellt, zeigt
den Zustand des Fortschritts jedes Vorgangs und hält die ausführbaren
Bedingungen für jeden
Vorgang. Außerdem
umfasst die Managementtabelle Einträge für Synchronisationsflags, die
verwendet werden, um die Vorgänge,
die vor der Ausführung
eines Synchronisationsvorgangs ausgeführt werden, von denjenigen
zu unterscheiden, die nach der Ausführung des Synchronisationsvorgangs
ausgeführt
werden. Die Managementtabelle ermöglicht eine Prüfung, um
zu sehen, ob die Vorgänge
vor der Ausführung
des Synchronisationsvorgangs abgeschlossen wurden, und nimmt anschließende Vorgänge sogar
an, wenn der Synchronisationsvorgang nicht abgeschlossen wurde,
wodurch die den Vorgang anforderende Einheit daran gehindert wird,
die Anforderung zu wiederholen. Wenn ein anschließender Synchronisationsvorgang
stattfindet, bevor die Ausführung
des aktuellen Synchronisationsvorgangs abgeschlossen wurde, wird
die Annahme der Anforderung für
einen anschließenden
Synchronisationsvorgang verweigert, und dann wird die Anforderung wiederholt.
-
Diese
Erfindung kann vollständiger
aus der folgenden ausführlichen
Beschreibung in Verbindung mit den begleitenden Zeichnungen verstanden
werden, in denen zeigen:
-
1 ein
Blockdiagramm eines erfindungsgemäßen Computersystems;
-
2 ein
Konzeptdiagramm, um zu helfen, die Struktur eines Scoreboard gemäß einer
ersten Ausführungsform
der Erfindung zu erläutern;
-
3 ein
Blockdiagramm eines Speichercontrollers der ersten Ausführungsform;
-
4 ein
Ablaufdiagramm, um zu helfen, den Betrieb der ersten Ausführungsform
zu erläutern;
-
5A und 5B Ablaufdiagramme
für den
Betrieb des Speichercontrollers der ersten Ausführungsform zu der Zeit, zu
der er eine Speicherzugriffsanweisung empfangen hat;
-
6 ein
Ablaufdiagramm für
den Bestimmungsprozess für
die Ausgabe einer Anweisung bei der Bankausführungseinheit der ersten Ausführungsform;
-
7A bis 7C Beispiele
von zwei Scoreboards und der Synchronisationsabschlusstabelle bei
der ersten Ausführungsform;
-
8A bis 8C Beispiele
der beiden Scoreboards und des Synchronisationsabschlusstabelle
bei der ersten Ausführungsform;
-
9A bis 9C Beispiele
der beiden Scoreboards und der Synchronisationsabschlusstabelle
bei der ersten Ausführungsform;
-
10A bis 10C Beispiele
der beiden Scoreboards und der Synchronisationsabschlusstabelle
bei der ersten Ausführungsform;
-
11A bis 11C Beispiele
der beiden Scoreboards und der Synchronisationsabschlusstabelle
bei der ersten Ausführungsform;
-
12A bis 12C Beispiele
der beiden Scoreboards und der Synchronisationsabschlusstabelle
bei der ersten Ausführungsform;
-
13A bis 13C Beispiele
der beiden Scoreboards und der Synchronisationsabschlusstabelle
bei der ersten Ausführungsform;
-
14A bis 14C Beispiele
der beiden Scoreboards und der Synchronisationsabschlusstabelle
bei der ersten Ausführungsform;
-
15A bis 15C Beispiele
der beiden Scoreboards und der Synchronisationsabschlusstabelle
bei der ersten Ausführungsform;
-
16A bis 16C Beispiele
der beiden Scoreboards und der Synchronisationsabschlusstabelle
bei der ersten Ausführungsform;
-
17 ein
Konzeptdiagramm, um zu helfen, die Struktur einer Scoreboard gemäß einer
zweiten Ausführungsform
der Erfindung zu erläutern;
-
18 ein
Ablaufdiagramm für
den Bestimmungsprozess für
die Ausgabe einer Anweisung bei der Ausführungsbankeinheit der zweiten
Ausführungsform;
-
19A und 19B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
zweiten Ausführungsform;
-
20A und 20B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
zweiten Ausführungsform;
-
21A und 21B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
zweiten Ausführungsform;
-
22A und 22B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
zweiten Ausführungsform;
-
23A und 23B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
zweiten Ausführungsform;
-
24 ein
Konzeptdiagramm, um zu helfen, die Struktur einer Scoreboard gemäß einer
dritten Ausführungsform
der Erfindung zu erläutern;
-
25 ein
Ablaufdiagramm für
den Betrieb des Speichercontrollers zu der Zeit, zu der er eine Speicherzugriffsanweisung
bei der dritten Ausführungsform
empfangen hat;
-
26 ein
Ablaufdiagramm für
den Bestimmungsprozess für
die Ausgabe einer Anweisung bei der Ausführungsbankeinheit der dritten
Ausführungsform;
-
27A und 27B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
dritten Ausführungsform;
-
28A und 28B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
dritten Ausführungsform;
-
29A und 29B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
dritten Ausführungsform;
-
30A und 30B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
dritten Ausführungsform;
-
31A und 31B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
dritten Ausführungsform;
-
32A und 32B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
dritten Ausführungsform;
-
33A und 33B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
dritten Ausführungsform;
-
34 ein
Konzeptdiagramm, um zu helfen, die Struktur einer Scoreboard gemäß einer
vierten Ausführungsform
der Erfindung zu erläutern;
-
35 ein
Ablaufdiagramm für
den Bestimmungsprozess für
die Ausgabe einer Anweisung bei den Ausführungsbankeinheiten der vierten
Ausführungsform;
-
36A und 36B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
vierten Ausführungsform;
-
37A und 37B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
vierten Ausführungsform;
-
38A und 38B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
vierten Ausführungsform;
-
39A und 39B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
vierten Ausführungsform;
-
40A und 40B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
vierten Ausführungsform;
-
41A und 41B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
vierten Ausführungsform;
-
42A und 42B Beispiele
der Scoreboard und der Synchronisationsabschlusstabelle bei der
vierten Ausführungsform;
-
43 ein Konzeptdiagramm, um zu helfen, die Struktur
einer Scoreboard gemäß einer
fünften Ausführungsform
der Erfindung zu erläutern;
-
44 ein Ablaufdiagramm für den Betrieb des Speichercontrollers
zu der Zeit, zu der er eine Speicherzugriffsanweisung bei der fünften Ausführungsform
empfangen hat;
-
45 ein Ablaufdiagramm für den Bestimmungsprozess für die Ausgabe
einer Anweisung bei den Ausführungsbankeinheiten
der fünften
Ausführungsform;
-
46 Beispiele der Scoreboard und der Synchronisationsabschlusstabelle
bei der fünften Ausführungsform;
-
47 Beispiele der Scoreboard und der Synchronisationsabschlusstabelle
bei der fünften Ausführungsform;
-
48 Beispiele der Scoreboard und der Synchronisationsabschlusstabelle
bei der fünften Ausführungsform;
-
49 Beispiele der Scoreboard und der Synchronisationsabschlusstabelle
bei der fünften Ausführungsform;
-
50 Beispiele der Scoreboard und der Synchronisationsabschlusstabelle
bei der fünften Ausführungsform;
-
51 Beispiele der Scoreboard und der Synchronisationsabschlusstabelle
bei der fünften Ausführungsform;
-
52 Beispiele der Scoreboard und der Synchronisationsabschlusstabelle
bei der fünften Ausführungsform;
-
53 Beispiele der Scoreboard und der Synchronisationsabschlusstabelle
bei der fünften Ausführungsform;
-
54 ein Konzeptdiagramm, um zu helfen, die Struktur
einer Scoreboard gemäß einer
sechsten Ausführungsform
der Erfindung zu erläutern;
-
55 ein Konzeptdiagramm, um zu helfen, die Struktur
einer Scoreboard gemäß einer
siebten Ausführungsform
der Erfindung zu erläutern;
-
56 ein Konzeptdiagramm, um zu helfen, die Struktur
einer Scoreboard gemäß einer
achten Ausführungsform
der Erfindung zu erläutern;
-
57 ein Konzeptdiagramm, um zu helfen, die Struktur
einer Scoreboard gemäß einer
neunten Ausführungsform
der Erfindung zu erläutern;
und
-
58 ein Konzeptdiagramm, um zu helfen, die Struktur
einer Scoreboard gemäß einer
zehnten Ausführungsform
der Erfindung zu erläutern.
-
Hier
werden nachstehend Ausführungsformen
der Erfindungen mit Bezug auf die begleitenden Zeichnungen erläutert.
-
1 ist
ein Blockdiagramm eines erfindungsgemäßen Computersystems. 2 ist
ein Konzeptdiagramm, um zu helfen, die Struktur einer Scoreboard
in Verbindung mit einer ersten Ausführungsform der Erfindung zu
erläutern. 3 ist
ein Blockdiagramm eines Speichercontrollers der ersten Ausführungsform. 4 ist
ein Ablaufdiagramm, um zu helfen, den Betrieb der ersten Ausführungsform
zu erläutern.
-
(Systemkonfiguration)
-
Wie
in 1 gezeigt, ist das System der Erfindung ein Multiprozessorsystem,
das eine Mehrzahl von Prozessoren 1 aufweist und einen
Speicher hat, der eine Speicherbankstruktur aufweist, die aus einer Mehrzahl
von Bankspeichern BM0 bis BM3 als ein gemeinsam genutzter Hauptspeicher
aufgebaut ist.
-
Jeder
Prozessor 1 gibt eine Zugriffsanweisung an einen Speichercontroller 10 über eine
mit einem Prozessorbus 2 verbundene Busschnittstelleneinheit 3 aus.
Bei dem Prozessorbus 2 ist ein Datenbus 2A von
einem Adressenbus 2B getrennt. Mit dem Prozessorbus 2 ist
ein E/A-Controller 4 verbunden, der mit E/A-Vorrichtungen,
wie beispielsweise einer Festplatteneinheit (HDD) 5 und
einer LRN-Schnittstelle 6, verbunden ist.
-
Wenn
sie eine Speicherzugriffsanweisung von dem Prozessor 1 empfängt, transferiert
die Busschnittstelleneinheit 3 diese an den Speichercontroller 10.
Der Speichercontroller 10 umfasst eine Scoreboard (Managementtabelle) 11 zum
Verwalten des Zugriffsvorgangs, der einer Zugriffsanweisung für jeden
der Bankspeicher BM0 bis BM3 entspricht, und eine Synchronisationsabschlusstabelle 12.
Der Speichercontroller umfasst eine 4-Wege-Verschachtelungsfunktion, um jeden Bankspeicher
BM0 bis BM3 als einen Speicherbereich in dem unabhängigen Steuerbereich
zu steuern.
-
(Struktur der Scoreboard)
-
Der
Speichercontroller 10 umfasst die Scoreboard 11,
die als eine Managementtabelle dient, und die Synchronisationsabschlusstabelle 12,
wie in 2 gezeigt ist. Wenn angenommen wird, dass Speicherbereiche,
die als Einheiten eines unabhängigen
Steuerbereichs wirken, Bankspeicher sind, wird die Scoreboard 11 für jeden
Satz einer Mehrzahl von Bankspeichern BM0 bis BM3 bereitgestellt.
Es kann einen Fall geben, in dem jeweils der Speicherbereich 0 bis
Speicherbereich 3 statt dem Speicherbereich BM0 bis BM3 verwendet
wird.
-
Die
Scoreboard 11 ist eine Tabelle, die nicht nur den Zustand
des Fortschritts eines Vorgangs (den Betriebszustand einer Zugriffsanweisung),
sondern ebenfalls die ausführbaren
Bedingungen für
jeden Vorgang zeigt. Die Scoreboard 11 umfasst Einträge für Synchronisationsflags
(SYNC-Flags), die verwendet werden, um die vor der Ausführung eines Synchronisationsvorgangs
ausgeführten
Vorgänge von
denen zu unterscheiden, die nach der Ausführung der Synchronisationsvorgangs
ausgeführt
werden. Die Synchronisationsabschlusstabelle 12 ist eine
Tabelle (SYNC-Abschluss),
die zeigt, ob der Synchronisationsvorgang in jedem der Speicherbereiche
0 bis 3 abgeschlossen wurde oder nicht.
-
Die
Scoreboard 11 der vorliegenden Ausführungsform ist aus Scoreboards 100, 110, 120, 130 zusammengesetzt,
die den vier unabhängigen Speicherbereichen
0 bis 3 entsprechen. Jede Scoreboard umfasst eine Eintragsnummer
(Nr.) 102, einen Betriebscode 103, eine Adresse 104,
ein Abschlussflag 105, das den Abschluss eines Vorgangs
angibt, ein Flag 106, das angibt, dass ein Vorgang ausgeführt werden
kann, ein gültiges
Flag 107, das angibt, dass ein Eintrag gültig ist,
und ein Synchronisationsflag (SYNC-Flag) 101.
-
Die
Eintragsnummer 102 wird verwendet, um Einträge in der
Scoreboard zu unterscheiden. Der Betriebscode 103 ist ein
Eintrag, um den Typ eines Vorgangs zu halten, den der Prozessor 1 anfordert (z.B.
bedeutet „Lesen" einen Lesevorgang
und „Schreiben" einen Schreibvorgang).
Die Adresse 104 ist ein Eintrag zum Halten einer Speicheradresse,
auf die zuzugreifen ist. Das Abschlussflag 105 gibt an, dass
die Ausgabe des Vorgangs abgeschlossen wurde. Bei dem gültigen Flag 107 wird
ein Flag V (Valid; gültig)
gesetzt, wenn der entsprechende Eintrag gültig ist, und ein Flag I (Invalid;
ungültig)
gesetzt, wenn der entsprechende Eintrag ungültig ist. Mit anderen Worten
wird der dem Flag V entsprechende Eintrag, der in der Zukunft ausgegeben,
und der dem Flag I entsprechende Eintrag ist ein leerer Eintrag,
der nicht ausgegeben wird.
-
Eine
Bankausführungseinheit
(durch die Ziffer 108 im Speicherbereich 0 angegeben), die für jede Scoreboard
bereitgestellt wird, erzeugt nicht nur die Adresse des Eintrags,
der von der relevanten Scoreboard ausgewählt wird, die DRAM Adresse (dynamische
RAM-Adresse), die den Bankspeicher bildet, und Speichersteuersignale
einschließlich
RAS und CAS, sondern führt
ebenfalls Prozesse durch, einschließlich der Ausgabe von Einträgen, die
später erläutert werden.
Die Bankausführungseinheiten 108, 118, 128 und 138,
die an den Scoreboards 100, 110, 120 bzw. 130 bereitgestellt
werden, sind mit der Synchronisationsabschlusstabelle verbunden.
-
Das
Synchronisationsflag (SYNC-Flag) ist normalerweise auf „0" gesetzt (zurückgesetzt).
In der Synchronisationsabschlusstabelle 12 wird ein Synchronisationsabschlussflag
(SYNC-Abschluss) für
jeden der unabhängigen
Speicherbereiche 0 bis 3 bereitgestellt, und dieses ist normalerweise
auf „0" gesetzt, was den
Abschluss der Synchronisation bedeutet.
-
Der
Speichercontroller 10 setzt, wenn ein Synchronisationsvorgang
von einem Prozessor 1 empfangen wird, die Synchronisationsflags
für alle gültigen Einträge, die
in den Scoreboards 100, 110, 120, 130 gesetzt
sind, auf „1" und hält die Flags
für die
ungültigen
Einträge
auf „0". Zu diesem Zeitpunkt werden
die Synchronisationsabschlussflags in der Synchronisationsabschlusstabelle 12 für die Speicherbereiche
mit gültigen
Einträgen
auf „1" gesetzt, wohingegen
die Synchronisationsabschlussflags für die Speicherbereiche, die
keine gültigen
Einträge
aufweisen (d.h. es gibt keinen Vorgang, der auf Ausführung wartet)
auf „0" gehalten werden.
-
Wenn
ein anschließender
Vorgang, der von einem Synchronisationsvorgang unterschiedlich ist, angenommen
wird, wird das Synchronisationsflags in der Scoreboard auf „0" gesetzt, wodurch
der angenommene Vorgang von den Vorgängen vor dem Synchronisationsvorgang
unterschieden wird. Das Synchronisationsabschlussflag in der Synchronisationsabschlusstabelle 12 wird
auf „0" zu der Zeit gesetzt, zu
der der letzte Vorgang, für
den das Synchronisationsflag auf „1" gesetzt ist, von dem entsprechenden Speicherbereich
verschwunden ist. So lange wie mindestens eines der Synchronisationsabschlussflags
in der Synchronisationsabschlusstabelle 12 für jeden
Speicherbereich auf „1" ist, erlaubt die
Scoreboard nur, dass der Vorgang, dessen Synchronisationsflag auf „1" ist, ausgeführt wird.
-
(Erste Ausführungsform)
-
Hier
wird nachstehend der Betrieb der ersten Ausführungsform mit Bezug auf 3 und 4 kurz
beschrieben.
-
Wie
zuvor beschrieben, steuert der Speichercontroller 10 der
Ausführungsform
die Bankspeicher BM0 bis BM3, die den vier Speicherbereichen 0 bis
3 entsprechen, mit der Hilfe der 4-Wege-Verschachtelungsfunktion.
Der Speichercontroller 10 umfasst, wie in 3 gezeigt,
Ausführungseinheiten 108, 118, 128, 138 und
Scoreboards 100, 110, 120, 130,
die jeweils unabhängig
für die
Bankspeicher BM0 bis BM3 bereitgestellt werden. Bei den Scoreboards 100, 110, 120 und 130 von 3 und
wird ein gültiges
Flag durch „Val", ein Ausgabefreigabeflag durch „En" und ein Synchronisationsflag
durch „SYNC" dargestellt.
-
Wie
in 4 gezeigt, transferiert die Busschnittstelleneinheit 3 nach
Empfangen einer Speicherzugriffsanweisung von dem Prozessor 2 diese an
den Speichercontroller 10 (Schritt S1). Der Speichercontroller 10 führt, wenn
ein Speicherzugriffsvorgang auf einen der Speicherbereiche 0 bis
3 empfangen wird, einen Eintrag in der relevanten Scoreboard durch
(Schritt S2).
-
Wie
in 3 gezeigt, werden bei der Ausführungsform die Speicheradressen
in Bankspeicher BM0 bis BM3 in Einheiten von vier Bytes aufgeteilt. Genauer
gesagt werden die Speicherbereiche den Bankspeichern BM0 bis BM3
in Einheiten von vier Bytes zugeteilt, die mit vier Bits (0, 4,
8, 10) auf der niederwertigsten Bitseite jeder Adresse starten. Zweckmäßigerweise
wird angenommen, dass die Anzahl von Einträgen, die in jeder Scoreboard
eingetragen werden können,
gleich vier ist.
-
Der
Controller 10 setzt das Synchronisationsflag in jeder Scoreboard
auf „0" zu der Zeit, zu
der ein Zugriffsvorgang in die Scoreboard eingetragen wird (Schritt
S3). Zu dieser Zeit werden, wenn ein Synchronisationsvorgang angenommen
wird, die Synchronisationsflags für alle gültigen Einträge auf „1" zu dieser Zeit gesetzt
(Schritte S4 und S5). Insbesondere ist der Eintrag, dessen Synchronisationsflag auf „1" ist, ein Eintrag,
der vor der Ausgabe des Synchronisationsvorgangs ausgeführt wurde,
was bedeutet, dass der Eintrag früher als ein Eintrag auszuführen ist,
dessen Synchronisationsflag auf „0" gesetzt ist.
-
3 zeigt
einen Fall, in dem ein Synchronisationsvorgang mit zwei gültigen Einträgen (ein
Eintrag, dessen gültiges
Flag Val auf „V" ist) in der Scoreboard 100 für die Bank
BM0, einem gültigen Eintrag
in der Scoreboard 110 für
die Bank BM1, keinem gültigen
Eintrag in der Scoreboard 120 für die Bank BM2 und keinem gültigen Eintrag
in der Scoreboard 130 für
die Tafel BM3 angenommen wurde. Genauer gesagt ändern sich in den Scoreboards 100, 110 die
Synchronisationsflags (SYNC), deren gültiges Flag Val auf „V" ist, von „0" in „1", und die Einträge, deren
gültiges
Flag Val „I" ist, bleiben auf „0" (bleiben unverändert).
-
Zur
gleichen Zeit wird, was die Synchronisationsabschlussflags (SYNC-Abschluss)
betrifft, die den einzelnen Speicherbereichen 0 bis 3 in der Synchronisationsabschlusstabelle 12 entsprechen,
die Werte, die dem Speicherbereich 0 (Bank BM0) und dem Speicherbereich
1 (Bank BM1) entsprechen, die gültigen
Einträge
aufweisen, ändern
sich von „0" in „1", wohingegen die
Werte, die dem Speicherbereich 2 (Bank BM2) und dem Speicherbereich
2 (Bank BM3) entsprechen, die keinen gültigen Eintrag aufweisen, bleiben
unverändert
auf „0".
-
Außerdem wird
in den Scoreboards 100, 110 beim Eintrag Nr. 1 für die Bank BM0 und Eintrag
Nr. 0 für
die Bank BM1 das Augabe-Freigabeflag En freigegeben (JA) oder ausführbar, was
den Vorgang (Lesezugriff) auf die jeweilige ausführbare Adresse ermöglicht (Schritt
S6 und S7).
-
Nachdem
alle Zugriffsvorgänge
der Ausführungseinheiten
E0, E1 abgeschlossen wurden, setzt der Controller 10 die
Freigabeflags En und die Synchronisationsflags auf „NEIN" oder „0" zurück (Schritte
S8 und S9). Zu dieser Zeit wird, weil ein Eintrag, dessen Synchronisationsflag
auf „1" gesetzt wurde, von
der der Bank BM1 entsprechenden Scoreboard 110 verschwindet,
das entsprechende Synchronisationsabschlussflag in der Synchronisationsabschlusstabelle 12 ebenfalls
auf „0" zurückgesetzt.
-
Wenn
ein anschließender
Speicherzugriffsvorgang angefordert wird, wird ein Synchronisationsflag
von „0" in die Scoreboard
für den
Speicherbereich eingetragen, der der Zugriffsanweisung entspricht.
Der neue anschließende
Vorgang wird nämlich
von dem Synchronisationsvorgang unterschieden, dessen Synchronisationsflag
auf „1" vor dem Synchronisationsvorgang
gesetzt wurde. Außerdem wird,
wenn ein zweiter Synchronisationsvorgang bei dem in 3 gezeigten
Zustand angefordert wird, weil es ein Eintrag (Speicherbereiche
0, 1) gibt, dessen Synchronisationsabschlussflag nicht auf „0" in der Synchronisationsabschlusstabelle 12 besetzt
ist, die Annahme des zweiten Synchronisationsvorgangs verweigert,
und der Synchronisationsvorgang wird wiederholt. Wenn alle Synchronisationsflags
auf „0" gesetzt sind, bedeutet
dies, dass der Synchronisationsvorgang abgeschlossen wurde. Daher
kann die Synchronisationsabschlusstabelle 12 in diesem
Fall weggelassen werden.
-
Als
nächstes
wird der Betrieb der ersten Ausführungsform
in weiterem Detail erläutert.
-
Zuerst
wird die Verarbeitung in dem Fall, in dem eine Speicherzugriffsanweisung
durch die CPU 1 bei der ersten Ausführungsform ausgegeben wurde,
mit Bezug auf 5 erläutert.
-
Die
durch die CPU 1 ausgegebene Speicherzugriffsanweisung wird
an die Busschnittstelleneinheit 3 über den Bus 2 gesendet.
Die Busschnittstelleneinheit 3 transferiert die empfangene
Speicherzugriffsanweisung zu dem Speichercontroller 10 (Schritt
S11).
-
Wenn
die empfangene Speicherzugriffsanweisung eine Speicherzugriffsanweisung
verschieden von einer Synchronisationsanweisung ist, wählt der
Speichercontroller 10 die entsprechende Scoreboard aus
den Scoreboards 100, 110, 120, 130 auf der
Grundlage der Adresse der empfangenen Speicherzugriffsanweisung
aus. Außerdem
wählt der Speichercontroller 10 einen
Eintrag, dessen gültiges Flag
auf „I" (ein leerer Eintrag)
gesetzt ist, aus allen Einträgen
auf der ausgewählten
Scoreboard aus. Danach trägt
der Speichercontroller 10 die transferierte Speicherzugriffsanweisung
in den ausgewählten
Eintrag ein (Schritt S12).
-
Beim
Eintragen der Speicherzugriffsanweisung trägt der Speichercontroller 10 nicht
nur den Betriebscode und die Adresse der Speicherzugriffsanweisung
ein, sondern setzt ebenfalls das gültige Flag auf „V" für den Eintrag,
in den die Anweisung eingetragen wird, und setzt das Synchronisationsflag
auf „0" zurück.
-
Beim
Empfangen einer Synchronisationsanweisung von der Busschnittstelleneinheit 3 setzt
der Speichercontroller 10 die Synchronisationsflags für alle Einträge auf „1", deren in der ausgewählten Scoreboard
eingetragenes gültiges
Flag auf „V" gesetzt wurde.
-
Außerdem wählt der
Speichercontroller 10 unter der Steuerung der Bankausführungseinheit 108, 118, 128, 138 einen
Eintrag aus der Scoreboard aus und gibt die Anweisung in dem Eintrag
aus.
-
Wenn
der bei Schritt S12 eingetragene Eintrag (Speicherzugriffsanweisung)
ausgewählt
und die Anweisung in dem Eintrag ausgegeben wurde (Schritt S13,
JA), wird das Freigabeflag in dem ausgewählten Eintrag auf „NEIN" gesetzt (Schritt
S14). Die ausgegebene Speicherzugriffsanweisung wird von der Busschnittstelleneinheit
3, dem Speichercontroller 10 und den Bankausführungseinheiten
ausgeführt.
-
Nachdem
die Verarbeitung der Speicherzugriffsanweisung abgeschlossen wurde,
setzt der Speichercontroller 10 das gültige Flag, das in dem Eintrag
für die
ausgeführte
Speicherzugriffsanweisung gespeichert ist, in der Scoreboard auf „I" und setzt das Synchronisationsflag
auf „0" zurück (Schritt S15).
Durch diese Prozesse wird der Eintrag freigesetzt, bei dem die ausgeführte Speicherzugriffsanweisung
eingetragen wurde.
-
Durch
die oben beschriebene Verarbeitung wird die durch die CPU 1 gesendete
Speicherzugriffsanweisung ausgeführt.
-
Als
nächstes
wird der Prozess zum Ausgeben von Anweisungen bei jeder der Bankausführungseinheiten 108, 118, 128 und 138,
die bereitgestellt werden, um den Scoreboards 100, 110, 120, bzw. 130 zu
entsprechen, mit Bezug auf 6 beschrieben.
-
Hinsichtlich
des Eintrags, in den die auszugebende Speicherzugriffsanweisung
in der Scoreboard eingetragen wurde, bestimmt die Bankausführungseinheit
zuerst, ob das gültige
Flag für
den relevanten Eintrag auf „I" ist oder nicht (Schritt
S21). Wenn das gültige
Flag für
den relevanten Eintrag auf „I" ist, bestimmt die
Bankausführungseinheit,
dass die Speicherzugriffsanweisung bei dem relevanten Eintrag nicht
ausgegeben werden kann, weil der relevante Eintrag ungültig ist
(Schritt S22).
-
Wenn
das gültige
Flag für
den relevanten Eintrag auf „V" ist (Schritt S21,
NEIN), bestimmt die Bankausführungseinheit,
ob das Freigabeflag für
den relevanten Eintrag auf „NEIN" ist oder nicht (Schritt S23).
Wenn das Freigabeflag für
den relevanten Eintrag auf „NEIN" ist, bestimmt die
Bankausführungseinheit,
dass die Anweisung in dem relevanten Eintrag bereits ausgegeben
wurde oder nicht die Bedingungen zum Ausgeben erfüllt sind,
und gibt die Speicherzugriffsanweisung in dem relevanten Eintrag nicht
aus (Schritt S24).
-
Wenn
das Freigabeflag für
den relevanten Eintrag auf „JA" ist (Schritt S23,
NEIN), bestimmt die Bankausführungseinheit,
ob das Element „SYNC-ABSCHLUSS" Nullen für alle Bereiche
in der Synchronisationsabschlusstabelle 12 aufweist oder nicht
(Schritt S25). Da der Zustand, bei dem das Element „SYNC-ABSCHLUSS" Nullen für alle die
Bereiche aufweist, bedeutet, dass keine Synchronisationsanweisung
durch die CPU 1 gesendet wurde, bestimmt die Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag ausgegeben
werden kann (Schritt S26).
-
Wenn
das Element „SYNC-ABSCHLUSS" eine 1 für jeden
der Bereiche in der Synchronisationsabschlusstabelle 12 aufweist
(Schritt S25, NEIN), bestimmt die Bankausführungseinheit, ob das Synchronisationsflag
für den
relevanten Eintrag auf „0" ist oder nicht (Schritt
S27). Wenn das Synchronisationsflag für den relevanten Eintrag auf „0" ist, weil die Anweisung
in dem relevanten Eintrag eine Speicherzugriffsanweisung ist, die
in die Scoreboard eingetragen wurde, nachdem der Speichercontroller 10 eine Synchronisationsanweisung
empfangen hat, gibt die Ausführungseinheit
die Speicherzugriffsanweisung nicht aus (Schritt S28).
-
Wenn
das Synchronisationsflag auf „1" ist (Schritt S27,
NEIN), weil die in den relevanten Eintrag eingetragene Speicherzugriffsanweisung
eine Speicherzugriffsanweisung ist, die eingetragen wurde, bevor
eine Synchronisationsanweisung gesendet wurde, bestimmt die Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag ausgegeben
werden kann (Schritt S29). Nachdem die obige Bestimmungsverarbeitung
an allen Einträgen
der Scoreboard durchgeführt
wurde, wählt
die Bankausführungseinheit
einen Eintrag aus einem oder mehreren ausgebbaren Einträgen aus und
führt die
Ausgabeverarbeitung des relevanten Eintrags durch.
-
Als
nächstes
wird die Verarbeitung der Speichercontroller 10 bei der
ersten Ausführungsform
zu der Zeit erläutert,
zu der die CPU 1 die folgenden Anweisungen in aufsteigender
Reihenfolge sendet:
- (1) Schreiben 12380
- (2) Lesen 246824
- (3) Lesen 67830
- (4) SYNC
- (5) Lesen abc70
-
7A bis 16C zeigen die Datenelemente, die in die für den Bereich
1 bereitgestellte Scoreboard 110, in die für den Bereich
0 bereitgestellte Scoreboard 100 und in die Synchronisationsabschlusstabelle 12 eingetragen
wurden.
-
In 7A bis 16C hält
das Element, das „FREIGEBEN/SPERREN
AUSGEBEN" der Anweisung
in jedem Eintrag angibt, derartige Information, wie es das Bestimmungsergebnis
der Bankausführungseinheit
in 6 darstellt, wie folgt: (a) entspricht dem Bestimmungsergebnis
bei Schritt S22 von 6; (b) entspricht dem Bestimmungsergebnis bei
Schritt S24; (x) entspricht dem Bestimmungsergebnis bei Schritt
S26; (c) entspricht dem Bestimmungsergebnis bei Schritt S28; und
(y) entspricht dem Bestimmungsergebnis bei Schritt S29. Dies macht
es leichter, den Vorgang zu verstehen. Tatsächlich muss das Element jedoch
nur Information halten, die gerade „FREIGEBEN/SPERREN AUSGEBEN" einer Anweisung
angibt.
-
7A bis 7C zeigen
die Anfangszustände
der Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12.
Daher sind alle Einträge in
den Scoreboards 100, 110 unbenutzt (leer). In
allen Einträgen
unter dem Element „FREIGEBEN/SPERREN
AUSGEBEN" auf den
Scoreboards 100, 110 wurden Daten, die SPERREN
AUSGEBEN angeben, eingetragen. Dies entspricht (a), was bedeutet,
dass die Einträge
ungültig
sind, wenn die Bankausführungseinheiten 108, 118 die
Verarbeitung von 6 ausführen. Folglich gibt es keinen
Eintrag, der ausgegeben werden kann.
-
8A bis 8C zeigen
die Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem die Anweisung (1) „Schreiben 12380" von der Busschnittstelleneinheit 3 transferiert wurde.
Der Speichercontroller 10 wählt den leeren Eintrag Nr.
0 aus der Scoreboard 100 aus, die dem Bereich 0 entspricht.
Der Bereich 0 ist den vorbestimmten Adressen zugewiesen, die eine
Adresse 12380 aufweist, die durch die Anweisung „Schreiben 12380" zugewiesen ist.
Der Speichercontroller 10 gibt diese Anweisung in den ausgewählten Eintrag ein.
Die Scoreboard 110 weist keinen ausgebbaren Eintrag auf,
wohingegen der Eintrag Nr. 0 auf der Scoreboard 100 ausgegeben
werden kann.
-
9A bis 9C zeigen
die Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 danach die Anweisung
(2) „Lesen
246824" empfangen hat.
Der Speichercontroller 10 wählt den leeren Eintrag Nr.
0 aus der Scoreboard 110 für den Bereich 1 aus, die der
Adresse der Anweisung „Lesen
246824" entspricht,
und gibt die Anweisung in den Eintrag ein. Der Eintrag Nr. 0 auf
jeder Scoreboard 100, 110 kann ausgegeben werden.
-
10A bis 10C zeigen
die Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 danach die Anweisung
(3) „Lesen
67830" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
1 aus der Scoreboard 100 für den Bereich 0 aus, der der
Adresse der Anweisung „Lesen
67830" entspricht,
und gibt die Anweisung in den Eintrag ein. Der Eintrag Nr. 0 und
der Eintrag Nr. 1 auf der Scoreboard 100 und der Eintrag
Nr. 0 auf der Scoreboard 110 können ausgegeben werden.
-
11A bis 11C zeigen
die Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem die Bankausführungseinheit 108 den
Eintrag Nr. 0 aus den ausgebbaren Einträgen aus der Scoreboard 100 ausgewählt und den
Eintrag ausgegeben hat. Beim Eintrag Nr. 0 unter dem Element „FREIGEBEN/SPERREN
AUSGEBEN" auf der
Scoreboard 100 wurde Information, die „SPERREN AUSGEBEN" angibt, eingetragen.
Dies entspricht (b), was bedeutet, dass die Anweisung bereits ausgegeben
wurde. Der Eintrag Nr. 0 an jeder der Scoreboards 100, 110 kann
ausgegeben werden.
-
12A bis 12C zeigen
die Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 die Synchronisationsanweisung
(4) „SYNC" von der Busschnittstelleneinheit 3 empfangen
hat. Beim Eintrag Nr. 0 und Eintrag Nr. 1 auf der Scoreboard 100 und
Eintrag Nr. 0 auf der Scoreboard 100 unter dem Element „SYNC" wird „1" gesetzt. Beim Eintrag Nr.
0 auf der Scoreboard 100 und dem Eintrag Nr. 0 auf der
Scoreboard 110 unter dem Element „FREIGEBEN/SPERREN AUSGEBEN", wurde Information,
die „FREIGEBEN
AUSGEBEN" angibt,
eingetragen. Dies entspricht (y), was bedeutet, dass die Anweisung
eine Anweisung ist, die eingetragen wurde, bevor die Synchronisationsanweisung
eingetragen wurde. In den Einträgen,
die dem Bereich 0 und dem Bereich 1 in der Synchronisationsabschlusstabelle 12 entsprechen,
wurde ebenfalls „1" gesetzt.
-
13A bis 13C zeigen
die Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 12 danach die Anweisung
(5) „Lesen
abcd70" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
2 aus der Scoreboard 100 für den Bereich 0 aus, der der
Adresse der Anweisung „Lesen abcd70" entspricht, und
gibt die Anweisung in den Eintrag ein. Nur der Eintrag Nr. 1 auf
der Scoreboard 100 kann ausgegeben werden.
-
14A bis 14C zeigen
die Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem die Bankausführungseinheit 108 den
ausgebbaren Eintrag Nr. 1 auf der Scoreboard 100 auswählt und
den Eintrag ausgibt, und die Bankausführungseinheit 118 den
ausgebbaren Eintrag Nr. 1 auf der Scoreboard 110 auswählt und
den Eintrag ausgibt. Bei jedem der ausgegebenen Einträge unter
dem Element „En" wird „JA" in „NEIN" geändert.
-
15A bis 15C zeigen
die Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem die Anweisung im Eintrag Nr. 1 auf der Scoreboard 100 abgeschlossen wurde.
Im Eintrag Nr. 0 und Eintrag Nr. 1 unter dem „Val" auf der Scoreboard 100 wird „V" in „I" geändert, und
unter dem Element „SYNC" werden diese Einträge auf „0" zurückgesetzt.
Der dem Bereich 0 in der Synchronisationsabschlusstabelle 12 entsprechende Eintrag
wird auf „0" zurückgesetzt.
-
16A und 16C zeigen
die Scoreboards 100, 110 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem die Anweisung im Eintrag Nr. 0 auf der Scoreboard 110 abgeschlossen wurde.
Im Eintrag Nr. 0 unter dem Element „Val" auf der Scoreboard 110 wird „V" in „I" geändert, und
unter dem Element „SYNC" wird der Eintrag
auf „0" zurückgesetzt.
Der dem Bereich 1 in der Synchronisationsabschlusstabelle 12 entsprechende
Eintrag wird auf „0" zurückgesetzt.
-
Die
oben beschriebenen Prozesse ermöglichen,
dass der Speichercontroller 10 einen derartigen Prozess
verhindert, der die Synchronisationsanweisung ignoriert, wenn der
Eintrag Nr. 2 (Anweisung (5)), der in der Scoreboard 100 vor
dem Eintrag Nr. 1 (Anweisung (3)) auf der Scoreboard 100 eingetragen wurde,
oder der Eintrag Nr. 0 (Anweisung (2)) auf der Scoreboard 110,
der vor der Annahme der Synchronisationsweisung (4) „SYNC" eingetragen wurde, ausgewählt und
ausgegeben wurde, ausgeführt
wird.
-
(Zweite Ausführungsform)
-
Wie
in 17 gezeigt, ist eine zweite Ausführungsform
der Erfindung derart, dass ein Eintrag 160 für die Synchronisationsbedingungen
zu einer Synchronisationsabschlusstabelle 12 hinzugefügt wird.
Der Eintrag 160 ist ein Element, das die Synchronisationsbedingung
für eine
Anforderung von der gleichen Anforderungseinrichtung (Prozessor)
oder für
die gleiche Adresse angibt (hier sei die Bedingung für die gleiche
Adresse angenommen). Die verbleibende Systemstruktur und die Konfiguration
des Speichercontrollers 10 sind die gleichen wie die bei der
ersten Ausführungsform.
-
Die
oben beschriebene Struktur erreicht die Funktion des Ausführens einer
anschließenden
Anweisung (anschließender
Vorgang), die die Synchronisationsbedingung nicht erfüllt, ohne
durch den Synchronisationsvorgang beeinflusst zu werden. Bei einem
Vorgang, der die Synchronisationsbedingung erfüllt, wird der Vorgang, der
nach dem Synchronisationsvorgang ausgeführt wird, daran gehindert,
früher als
der Vorgang ausgeführt
zu werden, der vor dem Synchronisationsvorgang ausgeführt wurde.
Bei einem Vorgang, der die Synchronisationsbedingung nicht erfüllt, wird
ein normaler Vorgang (ein Prozess auf eine Out-of-Order-Art oder
ein Prozess auf eine Weak-Order-Art) ausgeführt. Wenn ein anschließender Synchronisationsvorgang
angefordert wird, bevor die Synchronisation abgeschlossen wurde,
wird die Annahme des anschließenden
Synchronisationsvorgangs verweigert, und der Synchronisationsvorgang wird
wiederholt.
-
Hier
wird nachstehend die zweite Ausführungsform
mit Bezug auf 17 kurz beschrieben.
-
Die
zweite Ausführungsform
ist durch Hinzufügen
des Synchronisationsbedingungseintrags 160 zu der Synchronisationsabschlusstabelle 12 gekennzeichnet.
Bei dem Eintrag 160 wurde eine Synchronisationsbedingung
gesetzt. Beispielsweise kann die Synchronisationsbedingung „bis sämtliche
Schreibvorgänge
abgeschlossen wurden" oder „bis alle
Lese- und Schreibvorgänge
abgeschlossen wurden" sein.
-
Bei
der zweiten Ausführungsform
wird ein Synchronisationsvorgang unter der Synchronisationsbedingung,
dass „anschließende Lese-
und Schreibvorgänge
gesperrt werden, bis alle Lese- und Schreibvorgänge mit Bezug auf die gleiche
Art und Weise abgeschlossen wurden" in einem System angenommen, das einen
Vorgang (inkohärenten
Vorgang) definiert, der nicht die Reihenfolge gewährleistet,
in der die Daten von der gleichen Adresse gelesen und in die gleiche
Adresse geschrieben werden, und einen Vorgang (kohärenter Vorgang),
der die Reihenfolge gewährleistet.
-
Der
Speichercontroller 10 führt
einen inkohärenten
Vorgang (Speicherzugriff) auf eine Out-of-Order-Art (ein Prozess
ungeordneter Reihenfolge) vollständig
unabhängig
von anderen Vorgängen
aus, bis ein Synchronisationsvorgang ausgegeben wurde. Wenn ein
Synchronisationsvorgang ausgegeben wird, werden die Synchronisationsflags (SYNC-Flags)
in allen in der Scoreboard eingetragenen gültigen Einträgen wie
bei der ersten Ausführungsform
auf „1" gesetzt. Auf ähnliche
Weise werden die Synchronisationsabschlussflags (SYNC-Abschluss) in der
Synchronisationsabschlusstabelle 12, die der Scoreboard
mit gültigen
Einträgen
entspricht, ebenfalls auf „1" gesetzt.
-
In
dem Zustand von 17 werden, da die Scoreboard 100 im
Speicherbereich 0 und die Scoreboard 110 im Speicherbereich 1 gültige Einträge aufweist,
die Synchronisationsabschlussflags in der Synchronisationsabschlusstabelle 12 auf „1" gesetzt. Außerdem werden,
da die Scoreboard 120 im Speicherbereich 2 und Scoreboard 130 im
Speicherbereich 3 keinen gültigen
Eintrag aufweist, die relevanten Synchronisationsabschlussflags
auf „0" beibehalten.
-
Die
Synchronisationsflags in den gültigen Einträgen in den
Speicherbereichen 0 und 1 werden auf „1" gesetzt, und die Synchronisationsflags
in den ungültigen
Einträgen
werden auf „0" gehalten. Zur gleichen
Zeit werden in dem Eintrag 160 für die Synchronisationsbedingung
in der Synchronisationsabschlusstabelle 12 die Synchronisationsbedingung, dass „anschließende Lese-
und Schreibvorgänge
gesperrt sind, bis alle Lese- und Schreibvorgänge mit Bezug auf die gleiche
Adresse abgeschlossen wurden",
eingetragen.
-
Unter
der Synchronisationsbedingung wird ein anschließender Lesevorgang nicht ausgegeben, wenn
ein Eintrag, dessen Synchronisationsflag auf „1" ist, die gleiche Adresse aufweist,
und wird ausgegeben, wenn der Eintrag nicht die gleiche Adresse aufweist.
In diesem Fall können,
nachdem der Synchronisationsvorgang der Scoreboard, die der Adresse
entspricht, abgeschlossen wurde, und der Eintrag, dessen Synchronisationsflag
auf „1" ist, verschwunden
ist, die Einträge,
die in der Scoreboard eingetragen und in diese einzugeben sind,
ausgegeben werden, sobald die Ausgabebedingungen erfüllt wurden, ungeachtet
dessen, ob der Synchronisationsvorgang in einer anderen Scoreboard
abgeschlossen wurde. In diesen Bereichen kann nämlich der Speicherzugriff unter
den gleichen Bedingungen ausgeführt
werden, als ob es keinen Synchronisationsvorgang gibt.
-
Wie
bei der ersten Ausführungsform
wird, wenn mindestens eines der Synchronisationsabschlussflags in
der Synchronisationsabschlusstabelle 12 auf „1" (im Verlauf des Synchronisationsprozesses)
ist, die Annahme eines zweiten Synchronisationsvorgangs verweigert
und der Synchronisationsvorgang wiederholt. Wenn alle Synchronisationsflags auf „0" gesetzt sind, bedeutet
dies, dass alle Synchronisationsvorgänge abgeschlossen wurden. Daher
kann die Synchronisationsabschlusstabelle 12 weggelassen
werden.
-
Als
nächstes
wird der Betrieb der zweiten Ausführungsform in weiterem Detail
erläutert.
-
Die
Verarbeitung in dem Fall, in dem eine Speicherzugriffsanweisung
durch die CPU 1 bei der zweiten Ausführungsform ausgegeben wurde,
ist der Verarbeitung bei der ersten Ausführungsform von 17 ähnlich,
sodass eine ausführliche
Erläuterung
der zweiten Ausführungsform
weggelassen wird. Als nächstes
wird der Prozess der Ausgabe von Anweisungen bei jeder der Bankausführungseinheiten 108, 118, 128 und 138,
die bereitgestellt werden, um den Scoreboards 100, 110, 120 bzw. 130 zu
entsprechen, mit Bezug auf 18 beschrieben.
-
Hinsichtlich
des Eintrags, bei dem die auszugebende Speicherzugriffsanweisung
auf der Scoreboard eingetragen wurde, bestimmt die Bankausführungseinheit
zuerst, ob das gültige
Flag für
den relevanten Eintrag auf „I" ist oder nicht (Schritt
S31). Wenn das gültige
Flag für
den relevanten Eintrag auf „I" ist, bestimmt die
Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag nicht
ausgegeben werden kann, weil der relevante Eintrag ungültig ist
(Schritt S32).
-
Wenn
das gültige
Flag für
den relevanten Eintrag auf „V" ist (Schritt S31,
NEIN), bestimmt die Bankausführungseinheit,
ob das Ausgabeflag für
den relevanten Eintrag auf „NEIN" ist oder nicht (Schritt S33).
Wenn das Ausgabeflag für
den relevanten Eintrag auf „NEIN" ist, bestimmt die Bankausführungseinheit,
dass die Anweisung in dem relevanten Eintrag bereits ausgegeben
wurde, und gibt die Speicherzugriffsanweisung in dem relevanten
Eintrag nicht aus (Schritt S34).
-
Wenn
das Ausgabeflag für
den relevanten Eintrag auf „JA" ist (Schritt S33,
NEIN), bestimmt die Bankausführungseinheit,
ob das Element „SYNC-ABSCHLUSS" Nullen für alle Bereiche
in der Synchronisationsabschlusstabelle 12 aufweist oder nicht
(Schritt S35). Da der Zustand, bei dem das Element „SYNC-ABSCHLUSS" Nullen für alle Bereiche aufweist,
bedeutet, dass keine Synchronisationsanweisung durch die CPU 1 gesendet
wurde, bestimmt die Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag ausgegeben
werden kann (Schritt S36).
-
Wenn
das Element „SYNC-ABSCHLUSS" eine 1 für irgendeinen
der Bereiche in der Synchronisationsabschlusstabelle 12 aufweist
(Schritt S35, NEIN)), bestimmt die Bankausführungseinheit, ob der Eintrag
die Synchronisationsbedingung erfüllt oder nicht (Schritt S37).
Wenn der Eintrag die Synchronisationsbedingung in der Synchronisationsabschlusstabelle 12 nicht
erfüllt,
bestimmt die Bankausführungseinheit,
dass der Synchronisationsanweisungprozess nicht notwendig ist, und
die Speicherzugriffsanweisung in dem relevanten Eintrag kann ausgeführt werden
(Schritt S38).
-
Wenn
der Eintrag die Synchronisationsbedingungen erfüllt (Schritt S37, JA), bestimmt
die Bankausführungseinheit,
ob das Synchronisationsflag für
den relevanten Eintrag auf „0" ist oder nicht (Schritt
S39). Wenn das Synchronisationsflag für den relevanten Eintrag auf „0" ist, weil die Anweisung
in dem relevanten Eintrag eine Speicherzugriffsanweisung ist, die
in der Scoreboard eingetragen wurde, nachdem der Speichercontroller 10 eine
Synchronisationsanweisung empfangen hat, gibt die Bankausführungseinheit
die Speicherzugriffsanweisung nicht aus (Schritt S40).
-
Wenn
das Synchronisationsflag auf „1" ist (Schritt S39,
NEIN), weil die in dem relevanten Eintrag eingetragene Speicherzugriffsanweisung
eine Speicherzugriffsanweisung ist, die eingetragen wurde, bevor
eine Synchronisationsanweisung gesendet wurde, bestimmt die Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag ausgegeben
werden kann (Schritt S41).
-
Als
nächstes
wird die Verarbeitung des Speichercontrollers 10 bei der
zweiten Ausführungsform zu
der Zeit erläutert,
zu der die CPU 1 die folgenden Anweisungen in aufsteigender
Reihenfolge sendet:
- (1) Lesen 12380
- (2) SYNC
- (3) Schreiben 67830
- (4) Schreiben 12380
-
19A bis 23B zeigen
die Datenelemente, die in die für
den Bereich 0 bereitgestellten Scoreboard 100 eingetragen
wurden, und die Synchronisationsabschlusstabelle 12.
-
Hier
wird angenommen, dass die Bedingung, dass „ein anschließender Lese-
und Schreibvorgang gesperrt wird, bis alle Lese- und Schreibvorgänge mit Bezug
auf die gleiche Adresse abgeschlossen wurden", als Synchronisationsbedingung bestimmt
wird. Dies bedeutet, dass, wenn eine Anweisung mit Bezug auf die
gleiche Adresse vor einer SYNC-Anweisung (das Synchronisationsflag
ist auf „1") bei einem anschließenden Vorgang
(das Synchronisationsflag ist „0") in dem Verlauf
der Verarbeitung der Synchronisationsanweisung existiert, kann die
Anweisung ausgegeben werden, wohingegen, wenn eine derartige Anweisung
nicht existiert, die Anweisung ausgegeben werden kann.
-
In 19A bis 23B hält das Element, das „FREIGEBEN/SPERREN
AUSGEBEN" der Anweisung
in jedem Eintrag gibt, derartige Information, wie das Bestimmungsergebnis
der Bankausführungseinheiten
in 18 darstellt, wie folgt: (a) entspricht dem Bestimmungsergebnis
bei Schritt S32 von 18; (b) entspricht dem Bestimmungsergebnis
bei Schritt S34; (x) entspricht dem Bestimmungsergebnis bei Schritt
S36; (c) entspricht dem Bestimmungsergebnis bei Schritt S40; (y)
entspricht dem Bestimmungsergebnis bei Schritt S41. Die macht es leichter,
den Vorgang zu verstehen. Tatsächlich
muss das Element lediglich Information halten, die gerade „FREIGEBEN/SPERREN
AUSGEBEN" einer
Anweisung angibt.
-
19A und 19B zeigen
die Anfangszustände
der Scoreboard 100 und der Synchronisationsabschlusstabelle 12.
Daher sind alle Einträge
in der Scoreboard 100 unbenutzt (leer). In allen Einträgen unter
dem Element „FREIGEBEN/SPERREN AUSGEBEN" auf der Scoreboard 100 wurden
Daten, die Ausgabe sperren angeben, eingetragen. Dies entspricht
(a), was bedeutet, dass die Einträge ungültig sind, wenn die Bankausführungseinheit 108 die Verarbeitung
von 18 ausführt.
Folglich gibt es keinen Eintrag, der ausgegeben werden kann.
-
20A und 20B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem eine Anweisung (1) „Lesen 12380" von der Busschnittstelleneinheit 3 transferiert wurde.
Hier wählt
der Speichercontroller 10 den leeren Eintrag Nr. 0 aus
der Scoreboard 100 für
den Bereich 0 aus, der der Adresse der Anweisung „Lesen 12380" entspricht, und
gibt die Anweisung in den Eintrag ein. Der Eintrag Nr. 0 auf der
Scoreboard 100 kann ausgegeben werden.
-
21A und 21B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 die Synchronisationsanweisung
(2) „SYNC" empfangen hat. Der
Speichercontroller 10 setzt das Synchronisationsflag in
dem gültigen
Eintrag („V" unter dem Element „Val") auf „1" auf der Scoreboard 100.
Der Speichercontroller 10 setzt ebenfalls das Synchronisationsflag
in dem Eintrag, der dem Bereich 0 entspricht, d.h. das Synchronisationsflag
wird von „0" in „1" geändert. Der
Eintrag Nr. 0 kann durch die Bankausführungseinheit 108 ausgegeben
werden.
-
22A und 22B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 danach die Anweisung
(3) „67380
schreiben" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
1 aus der Scoreboard 100 aus, der dem Bereich 0 entspricht.
Der Bereich 0 wird den vorbestimmten Adressen zugewiesen, die eine
Adresse umfassen, die durch die Anweisung „67380 schreiben" zugewiesen ist.
Der Speichercontroller 10 gibt die Anweisung in den ausgewählten Eintrag
ein. Der Eintrag Nr. 0 und der Eintrag Nr. 1 auf der Scoreboard 100 können ausgegeben
werden.
-
23A und 23B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 danach die Anweisung
(4) „Schreiben
12380" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
2 aus der Scoreboard 100 für den Bereich 0 aus, der der
Adresse der Anweisung „Schreiben 12380" entspricht, und
gibt die Anweisung in den Eintrag ein. Nur der Eintrag Nr. 0 und
der Eintrag Nr. 1 auf der Scoreboard 100 können ausgegeben
werden. Der Grund dafür
ist, dass die eingetragene Anweisung (4), eine Schreibanweisung,
der gleichen Adresse wie die der bereits eingetragenen Anweisung
(1) zugeordnet ist, sodass die Schreibanweisung die Synchronisationsbedingung
erfüllt,
was verhindert, dass die Anweisung (4) ausgegeben wird.
-
(Dritte Ausführungsform)
-
Eine
dritte Ausführungsform
der Erfindung ist ein System, das die Funktion des gleichzeitigen
Verarbeitens einer Mehrzahl von Synchronisationsanweisungen erreicht,
und das einen Speichercontroller 10 mit Scoreboards, die
mit Synchronisationsflags (SYNC-Flags) von mehreren Ebenen ausgestattet ist,
und eine Synchronisationsabschlusstabelle, die mit Synchronisationsabschlussflags
(SYNC-Abschluss) von mehreren Ebenen ausgestattet ist, umfasst.
Bis alle Synchronisationsebenen verwendet werden, wird ein anschließender Synchronisationsvorgang
nicht wiederholt.
-
Bei
der dritten Ausführungsform
wird der Synchronisationsprozess in der Reihenfolge ausgeführt, in
der der Synchronisationsvorgang ausgeführt wird. Genauer gesagt werden
in einem Fall, in dem drei Synchronisationsvorgänge A, B und C angenommen wurden,
diese in der folgenden Reihenfolge ausgeführt: die Vorgänge, die
vor dem Synchronisationsvorgang A angenommen wurden, die Vorgänge, die zwischen
den Synchronisationsvorgängen
A und B angenommen wurden, der Vorgang, der zwischen Synchronisationsvorgängen B und
C angenommen wurde, und der Vorgang, der nach dem Synchronisationsvorgang
C angenommen wurde. Um diese Funktion zu erreichen, werden Flags,
die vorhergehende Synchronisationsvorgänge angeben, in der Synchronisationsabschlusstabelle 12 bereitgestellt. Beispielsweise
wird ein vorhergehender Synchronisationsvorgang neben B in der Synchronisationsabschlusstabelle 12 mit
B mit Bezug auf A und C markiert. „Null" wird vor A gesetzt, um anzugeben, dass es
keinen vorhergehenden Synchronisationsvorgang gibt. Wenn A abgeschlossen
wurde, werden den Bs, die dem Synchronisationsvorgang vorhergehen, „Null" gegeben. Auf ähnliche
Weise wird, wenn der vorhergehende Synchronisationsvorgang abgeschlossen
wurde, dem vorhergehenden Synchronisationsvorgang des Eintrags „Null" gegeben, wodurch
die obige Funktion erreicht wird.
-
Hier
wird nachstehend die dritte Ausführungsform
kurz mit Bezug auf 24 beschrieben.
-
Hier
wird angenommen, dass das Synchronisationsflag 102 vier
Ebenen 0 bis 3 für
jeden Eintrag aufweist. Es wird angenommen, dass das Synchronisationsabschlussflag
für jeden
Eintrag (der jeweils den Speicherbereichen 0 bis 3 entspricht) in
der Synchronisationsabschlusstabelle 12, vier Ebenen aufzuweist.
Ein Synchronisationslesezeiger (SYNC-Lesezeiger) 161 gibt an, welche
Ebene ausgeführt
wird. Ein Synchronisationsschreibzeiger 162 gibt eine Synchronisationsebene
an, die ausgeführt
wird, nachdem die durch den Synchronisationslesezeiger 161 angegebene
Ebene ausgeführt
ist.
-
Da
der Synchronisationsvorgang in der Reihenfolge der Annahme verarbeitet
wird, werden diese Zeiger 161 und 162 auf die
gleiche Art und Weise wie ein gewöhnlicher FIFO-Puffer gesteuert.
Jede Scoreboard gibt nur Vorgänge
aus, deren Synchronisationsflag, das dem durch den Lesezeiger 161 spezifizieren
Synchronisationsvorgang entspricht, auf „1" ist. Wenn in allen Bänken der
Eintrag der durch den Spezifikationslesezeiger 161 spezifizierten
Ebene verschwunden ist, wird der Zeiger um Eins inklementiert.
-
Wenn
alle Synchronisationsabschlussflags in der Synchronisationsabschlusstabelle 12 auf „0" sind, wurden alle
Synchronisationsvorgänge
abgeschlossen, und alle Synchronisationsflags in allen Scoreboards 100, 110, 120 und 130 sind
auf „0". Daher wird ein
Vorgang gemäß den Regeln
ausgegeben, die in dem Fall befolgt werden, in dem keine Synchronisation
verwendet wird. Zu der Zeit, zu der ein Synchronisationsvorgang
empfangen wird, wird, wenn mindestens eine
der Synchronisationsebenen nicht verwendet wird, der Synchronisationsvorgang angenommen,
ohne wiederholt zu werden, und ein normaler Synchronisationsprozess
wird ausgeführt. Wenn
alle Synchronisationsebenen verwendet werden, wird ein anschließender Synchronisationsvorgang
wiederholt.
-
24 zeigt
einen Fall, in dem ein Synchronisationsvorgang angenommen wird,
wobei die Synchronisationsebene 3 benutzt wird, die Synchronisationsebenen
0, 1 und 2 unbenutzt sind, Scoreboards 100, 110, 120 in
Speicherbereichen 0, 1 und 2 gültige Einträge aufweisen,
und die Scoreboard 130 im Speicherbereich 3 keinen gültigen Eintrag
aufweist. Die Ebenen 1 und 2 aller einzelner Synchronisationsflags
sind auf „0" gesetzt und unbenutzt.
Was die Ebene 3 betrifft, ist nur das Synchronisationsflag für den Eintrag
Nr. 1 im Speicherbereich 0 auf „1", und alle Synchronisationsflags in
den anderen Speicherbereichen sind auf „0". Dies bedeutet, dass es nur einen Eintrag
Nr. 0 in dem Speicherbereich 0 gibt, der in dem Fall der Vorgänge vor
der Ausgabe des Synchronisationsvorgangs von Ebene 3 unbenutzt ist.
-
Der
Synchronisationslesezeiger 161 in der Synchronisationsabschlusstabelle 12 gibt
an, dass die Ebene 3 gegenwärtig
bearbeitet wird. Ein neuer Synchronisationsvorgang wird in Ebene
0, die durch den Synchronisationsschreibzeiger 162 spezifiziert wird,
in der Synchronisationsabschlusstabelle 12 eingetragen.
Der Synchronisationsschreibzeiger wird um 1 inkrementiert, wobei
die Ebene 1 angegeben wird.
-
Außerdem wird „1" in der Ebene 0 der
Synchronisationsflags für
die 0-tigen Einträge
in den einzelnen Scoreboards gesetzt. In 24 werden
die gültigen
Einträge
in den Speicherbereich 0, 1 und 2 auf „1" gesetzt. Zur gleichen Zeit wird „1" in der Ebene 0 in
der Synchronisationsabschlusstabelle gesetzt, die den Speicherbereichen
0, 1 und 2 entspricht, was bedeutet, dass die Synchronisation der Ebene
0 nicht abgeschlossen wurde. Danach wird, da die Synchronisationsebene
3 in 24 verarbeitet wird, ein Vorgang nicht ausgegeben,
bis ein Vorgang für
den Eintrag Nr. 0 im Speicherbereich 0 ausgegeben wird. Wenn der
Eintrag Nr. 0 im Speicherbereich 0 ausgegeben wurde, wurde die Synchronisation
der Ebene 3 abgeschlossen, sodass die Ebene 3 im Speicherbereich
0 in der Synchronisationsabschlusstabelle 12 auf „0" zurückgesetzt
wird. Da der Synchronisationslesezeiger 161 um 1 inkrementiert wird,
wobei die Ebene 0 angegeben wird, werden Vorgänge, deren Synchronisationsflag
von Ebene 0 auf „1" gesetzt ist, in
Folge ausgegeben, wodurch ermöglicht
wird, dass der Synchronisationsprozess von Ebene 0 ausgeführt wird.
Wenn alle Synchronisationsflags jeder Ebene auf „0" sind, wurden die Synchronisationsvorgänge der
Ebene abgeschlossen. Daher kann die Synchronisationsabschlusstabelle 12 weggelassen
werden.
-
Als
nächstes
wird der Betrieb der dritten Ausführungsform in weiteren Detail
erläutert.
-
Zuerst
wird die Verarbeitung in dem Fall, in dem eine Speicherzugriffsanweisung
durch die CPU 1 in der dritten Ausführungsform ausgegeben wurde, mit
Bezug auf 25 erläutert.
-
Die
durch die CPU 1 ausgegebene Speicherzugriffsanweisung wird
an die Busschnittstelleneinheit 3 über den Bus 2 gesendet.
Die Busschnittstelleneinheit 3 transferiert die empfangene
Speicherzugriffsanweisung zu dem Speichercontroller 10 (Schritt
S51).
-
Wenn
die empfangene Speicherzugriffsanweisung eine Speicherzugriffsanweisung
verschieden von einer Synchronisationsanweisung ist, wählt der
Speichercontroller 10 die entsprechende Scoreboard aus
den Scoreboards 100, 110, 120, 130 auf der
Grundlage der Adresse der empfangenen Speicherzugriffsanweisung
aus. Außerdem
wählt der Speichercontroller 10 einen
Eintrag aus, dessen gültiges
Flag auf „1" (ein leerer Eintrag)
von allen Einträgen
auf dem ausgewählten
Scoreboard gesetzt ist. Danach trägt der Speichercontroller 10 die
transferierte Speicherzugriffsanweisung in den ausgewählten Eintrag
ein (Schritt S52).
-
Wenn
die Speicherzugriffsanweisung eingetragen wird, trägt der Speichercontroller 10 nicht
nur den Vorgangscode und die Adresse der Speicherzugriffsanweisung
ein, sondern setzt ebenfalls das gültige Flag auf „V" für den Eintrag,
in den die Anweisung eingetragen ist, und setzt die Synchronisationsflags
0, 1, 2 und 3 auf „0" zurück.
-
Wenn
eine Synchronisationsanweisung von der Busschnittstelleneinheit 3 empfangen
wird, setzt der Speichercontroller 10 das Synchronisationsflag
n (n = 0/1/2/3) entsprechend dem SYNC-Schreibzeiger für alle Einträge auf „1", dessen in der ausgewählten Scoreboard
eingetragenes gültiges
Flag auf „V" gesetzt wurde.
-
Außerdem wählt unter
der Steuerung der Bankausführungseinheiten 108, 118, 128, 138 der Speichercontroller 10 einen
Eintrag aus der Scoreboard aus und gibt die Anweisung in dem Eintrag aus.
-
Wenn
der bei Schritt S52 eingetragene Eintrag (Speicherzugriffsanweisung)
ausgewählt
und die Anweisung in dem Eintrag ausgegeben wurde (Schritt S53,
JA), wird das ausgebbare Flag für
den ausgewählten
Eintrag auf „NEIN" gesetzt (Schritt S54).
Die ausgegebene Speicherzugriffsanweisung wird durch die Busschnittstelleneinheit 3,
den Speichercontroller 10 und die Bankausführungseinheiten ausgeführt.
-
Nachdem
die Verarbeitung der Speicherzugriffsanweisung abgeschlossen wurde,
setzt der Speichercontroller 10 das in dem Eintrag für die ausgeführte Speicherzugriffsanweisung
in der Scoreboard gespeicherte gültige
Flag auf „1" und setzt die Synchronisationsflags
0, 1,2 und 3 auf „0" zurück (Schritt
S55). Durch diese Prozesse wird der Eintrag, in den die ausgeführte Speicherzugriffsanweisung eingetragen
wurde, freigesetzt.
-
Durch
die oben beschriebene Verarbeitung wird die durch die CPU 1 gesendete
Speicherzugriffsanweisung ausgeführt.
-
Als
nächstes
wird der Prozess des Ausgebens von Anweisungen bei jeder der Bankausführungseinheiten 108, 118, 128 und 138,
die bereitgestellt werden, um den Scoreboards 100, 110, 120 bzw.
130 zu entsprechen, mit Bezug auf 26 beschrieben.
-
Hinsichtlich
des Eintrags, in den die auszugebende Speicherzugriffsanweisung
auf der Scoreboard eingetragen wurde, bestimmt die Bankausführungseinheit
zuerst, ob das gültige
Flag für
den relevanten Eintrag auf „I" ist oder nicht (Schritt
S61). Wenn das gültige
Flag den relevanten Eintrag auf „I" ist, bestimmt die Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag nicht
ausgegeben werden kann, weil der relevante Eintrag ungültig ist
(Schritt S62).
-
Wenn
das gültige
Flag für
den relevanten Eintrag auf „V" ist (Schritt S61,
NEIN), bestimmt die Bankausführungseinheit,
ob das Ausgabeflag für
den relevanten Eintrag auf „NEIN" ist oder nicht (Schritt S63).
Wenn das Ausgabeflag für
den relevanten Eintrag auf „NEIN" ist, bestimmt die
Bankausführungseinheit,
dass die Anweisung in dem relevanten Eintrag bereits ausgegeben
wurde oder ist nicht mit den Bedingungen der Ausgabe zufrieden,
und gibt die Speicherzugriffsanweisung in dem relevanten Eintrag
nicht aus (Schritt S64).
-
Wenn
das Ausgabeflag für
den relevanten Eintrag auf „JA" ist (Schritt S63,
NEIN), bestimmt die Bankausführungseinheit,
ob das Element „SYNC-ABSCHLUSS", das durch den SYNC-Lesezeiger angegeben
wird, Nullen für
alle Bereiche in der Synchronisationsabschlusstabelle 12 aufweist
oder nicht (Schritt S65). Da der Zustand, wobei das Element „SYNC-ABSCHLUSS" Nullen für alle Bereiche aufweist,
bedeutet, dass eine Synchronisationsanweisung nicht durch die CPU 1 gesendet
wurde, bestimmt die Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag ausgegeben
werden kann (Schritt S66).
-
Wenn
das Element „SYNC-ABSCHLUSS" eine 1 für irgendeinen
der Bereiche in der Synchronisationsabschlusstabelle 12 aufweist
(Schritt S65, NEIN), bestimmt die Bankausführungseinheit, ob das durch
den SYNC-Lesezeiger angegebene Synchronisationsflag auf „0" ist oder nicht,
unter den Synchronisationsflags 0 bis 3 für den relevanten Eintrag (Schritt
S67). Wenn das durch den SYNC-Lesezeiger angegebene Synchronisationsflag
auf „0" ist, weil die Anweisung
in dem relevanten Eintrag eine Speicherzugriffsanweisung ist, die
in die Scoreboard eingetragen wurde, nachdem der Speichercontroller 10 eine Synchronisationsanweisung
empfangen hat, gibt die Bankausführungseinheit
die Speicherzugriffsanweisung nicht aus (Schritt S68).
-
Wenn
das durch den SYNC-Lesezeiger angegebene Synchronisationsflag auf „1" ist (Schritt S68,
NEIN), weil die in den relevanten Eintrag eingetragene Speicherzugriffsanweisung
eine Speicherzugriffsanweisung ist, die eingetragen wurde, bevor eine
Synchronisationsanweisung gesendet wurde, bestimmt die Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag ausgegeben
werden kann (Schritt S69).
-
Als
nächstes
wird die Verarbeitung des Speichercontrollers 10 bei der
dritten Ausführungsform
zu der Zeit erläutert,
zu der die CPU 1 die folgenden Anweisungen in aufsteigender
Reihenfolge sendet:
- (1) Lesen 12380
- (2) SYNC
- (3) Schreiben 67830
- (4) SYNC
- (5) Schreiben abc80
-
27A bis 33B zeigen
die Datenelemente, die in die Scoreboard 100 eingetragen
wurden, die für
den Bereich 0 bereitgestellt wurde, und die Synchronisationsabschlusstabelle 12.
-
In 27A bis 33B hält das Element, das „FREIGEBEN/SPERREN
AUSGEBEN" der Anweisung
in jedem Eintrag angibt, derartige Information, wie das Bestimmungsergebnis
der Bankausführungseinheiten
in 26 darstellt, wie folgt: (a) entspricht dem Bestimmungsergebnis
bei Schritt S62 von 26; (b) entspricht dem Bestimmungsergebnis
bei Schritt S64; (x) entspricht dem Bestimmungsergebnis bei Schritt
S66; (c) entspricht dem Bestimmungsergebnis bei Schritt S68; (y)
entspricht dem Bestimmungsergebnis bei Schritt S69. Dies macht es leichter,
den Betrieb zu verstehen, tatsächlich
muss jedoch das Element nur Information halten, die lediglich „FREIGEBEN/SPERREN
AUSGEBEN" einer
Anweisung angibt.
-
27A und 27B zeigen
die Anfangszustände
der Scoreboard 100 und die Synchronisationsabschlusstabelle 12.
Daher sind alle Einträge
in der Scoreboard 100 unbenutzt (leer). In allen Einträgen unter
dem Element „FREIGEBEN/SPERREN AUSGEBEN" auf der Scoreboard 100 wurden
Daten, die SPERREN AUSGEBEN angeben, enigetragen. Dies entspricht
(a), was bedeutet, dass die Einträge ungültig sind, wenn die Bankausführungseinheit 108 die
Verarbeitung von 18 ausführt. Folglich gibt es keinen
Eintrag, der ausgegeben werden kann.
-
28A und 28B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem die Anweisung (1) „Lesen 12380" von der Busschnittstelleneinheit 3 transferiert wurde.
Hier wählt
der Speichercontroller den leeren Eintrag Nr. 0 aus der Scoreboard 100 für den Bereich 0
aus, der der Adresse der Anweisung „Lesen 12380" entspricht, und
gibt die Anweisung in den Eintrag ein. Der Eintrag Nr. 0 auf der
Scoreboard 100 kann ausgegeben werden.
-
29A und 29B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 die Synchronisationsanweisung
(2) „SYNC" empfangen hat. Der
Speichercontroller 10 setzt das Synchronisationsflag 0
in dem gültigen
Eintrag („V" unter dem Element „Val") auf „1" auf der Scoreboard 100.
Eine „1" wird in dem SYNC-Schreibzeiger
in der Synchronisationsabschlusstabelle 12 gesetzt. Eine „1" wird in dem SYNC-Abschlussflag
0 für den
Bereich 0 gesetzt. Der Eintrag, den die Bankausführungseinheit 108 ausgeben
kann, ist der Eintrag Nr. 0.
-
30A und 30B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle in
dem Fall, in dem der Speichercontroller 10 danach die Anweisung
(3) „67380
schreiben" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
0 aus der Scoreboard 100 aus, der dem Bereich 0 entspricht,
der vorbestimmten Adressen zugewiesen ist. Die vorbestimmten Adressen
umfassen eine Adresse, die durch die Anweisung „63780" zugewiesen ist. Nach einer Weile trägt der Speichercontroller 10 die
Anweisung in den ausgewählten
Eintrag ein. Der Eintrag Nr. 0 und der Eintrag Nr. 1 auf der Scoreboard 100 können ausgegeben
werden.
-
31A und 31B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 die zweite Synchronisationsanweisung
(4) „SYNC" empfangen hat. Der
Speichercontroller 10 setzt das Synchronisationsflag 1,
das dem SYNC-Schreibzeiger entspricht, in der Synchronisationsabschlusstabelle 12 auf „1" unter den Synchronisationsflags 3 für den gültigen Eintrag
(„V" unter dem Element „Val") auf der Scoreboard 100.
Danach wird eine „2" in dem SYNC-Schreibzeiger
in der Synchronisationsabschlusstabelle 12 gesetzt. Eine „1" wird in dem SYNC-Abschlussflag 1 für den Bereich
0 gesetzt. Der Eintrag, den die Bankausführungseinheit 108 ausgeben
kann, ist der Eintrag Nr. 0.
-
32A und 32B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 100 danach die
Anweisung (5) „Schreiben
abcd80" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
2 aus der Scoreboard 100 aus, der dem Bereich 0 entspricht,
der vorbestimmten Adressen zugewiesen ist. Die vorbestimmten Adressen
umfassen eine Adresse, die durch die Anweisung „Schreiben abc80" zugewiesen ist.
Der Speichercontroller 10 trägt die Anweisung in den ausgewählten Eintrag ein.
Nur der Eintrag Nr. 0 auf der Scoreboard 100 kann ausgegeben
werden. Dies ist so, weil die eingetragenen Anweisungen in dieser
Reihenfolge ausgegeben werden: (1), (3) und (5).
-
33A und 33B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem die Bankausführungseinheit 108 die
Anweisung im Eintrag Nr. 0 ausgibt. Bei der Scoreboard 100 wird
das Element „Val" auf „I", das Element „En" auf „NEIN" und beide SYNC-Flags
0 und 1 werden auf „0" zurückgesetzt.
Dies setzt den Eintrag Nr. 0 frei. Außerdem wird in der Synchronisationsabschlusstabelle 12 der
SYNC-Lesezeiger auf „1" gesetzt und das
SYNC-Abschlussflag
0 für den Bereich
0 auf „0" zurückgesetzt.
-
Die
oben beschriebenen Prozesse ermöglichen
die Verarbeitung in der ordnungsgemäßen Reihenfolge, in der die
Anweisungen ausgegeben werden, sogar wenn mehr als eine Synchronisationsanweisung
gesendet wurde.
-
(Vierte Ausführungsform)
-
Wie 34 gezeigt,
ist eine vierte Ausführungsform
der Erfindung derart, dass eine Synchronisationsabschlusstabelle,
wobei unabhängige
Synchronisationsbedingungen für
jede Ebene eingestellt werden können,
in einem Speichercontroller 10 bereitgestellt werden, der
Scoreboards, die mit Synchronisationsflags (SYNC-Flags) von mehreren
Ebenen ausgestattet sind, und eine Synchronisationsabschlusstabelle,
die mit Synchronisationsabschlussflags (SYNC-Abschluss) um mehreren
Ebenen ausgestattet sind, aufweist. Die vierte Ausführungsform führt den
Abschluss der Synchronisationsprozesse in einem Prozess auf eine
Out-of-Order-Art
aus, wodurch die Funktion des Verringerns des Zusatzaufwandes des
Synchronisationsprozesses erreicht wird. Bis alle Synchronisationsebenen
verwendet werden, wird ein anschließender Synchronisationsvorgang
nicht wiederholt.
-
Mit
anderen Worten ist die vierte Ausführungsform derart, dass Synchronisationsbedingungen
von mehreren Ebenen zu der dritten Ausführungsform hinzugefügt werden.
Mit einer derartigen Struktur wird im Fall unterschiedlicher Synchronisationsbedingungen,
der gleiche Vorgang wie bei der zweiten Ausführungsform ausgeführt, und
dem vorhergehenden Synchronisationsvorgang wird „Null" gegeben. Im Fall der gleichen Synchronisationsbedingungen
(z.B. Synchronisation durch den gleichen Prozessor oder Synchronisation
mit Bezug auf die gleiche Adresse) wird ein vorhergehender Synchronisationsvorgang
eingestellt, und der gleiche Vorgang wie bei der dritten Ausführungsform
wird ausgeführt. Dem
gemäß wird im
Fall unabhängiger
Synchronisationsbedingungen eine Synchronisation auf eine Out-of-Order-Art
durchgeführt,
was zu einer Abnahme in dem Zusatzaufwand des Synchronisationsprozesses
führt.
-
Hier
wird nachstehend die vierte Ausführungsform
mit Bezug auf 34 kurz erläutert.
-
Wie
in 34 gezeigt, weist die dritte Ausführungsform
eine Synchronisationsabschlusstabelle 12 auf, die mit einer
Synchronisationsbedingungstabelle 163 ausgestattet ist,
die Synchronisationsbedingungen (in diesem Fall SA, die die gleiche
Adresse angibt) für
jede der Synchronisationsebenen 0 bis 3 angibt. Dies ermöglicht,
dass unabhängige
Synchronisationsvorgänge
unabhängig
ausgeführt
werden.
-
Bei
der vierten Ausführungsform
hat, wenn die Synchronisationsbedingung ist, dass Lesen und Schreiben
in die gleiche Adresse ist, die Synchronisationsbedingung nichts
mit den anderen Speicherbereichen zu tun. Beispielsweise können, wenn
im Fall des Lesens und Schreibens der Daten von und in einer Adresse
(z.B. Adresse 100) im Speicherbereich 0 ein Synchronisationsvorgang
ausgegeben wurde, die Speicherbereiche 1, 2 und 3 unter den gleichen
Bedingungen betrieben werden, als wenn es keinen Synchronisationsvorgang
gibt. In diesem Fall, wenn ein Synchronisationsvorgang mit Bezug auf
eine Adresse (z.B. Adresse 1008) im Speicherbereich 2 ausgegeben
wurde, kann er unabhängig
von dem Synchronisationsvorgang verarbeitet werden, der zuvor an
den Speicherbereich 0 ausgegeben wurde.
-
Die
Vorgänge,
die sich von der Anwendung der Synchronisationsbedingung auf die
einzelnen Ebenen unterscheiden, sind die gleichen, wie die bei der
dritten Ausführungsform.
In dem Zustand von 34 wird SA, das angibt, dass „die gleiche
Adresse" als die
Synchronisationsbedingung verwendet wird, für die Synchronisationsbedingungen
0 und 3 eingestellt. Da der Speicherbereich 3 die Synchronisationsbedingung
nicht erfüllt,
kann ein Vorgang, der danach ankam, ohne Warten auf den Abschluss
der Synchronisation eines anderen Speicherbereichs ausgeführt werden.
Wenn die Synchronisationsbedingungen 3 „für alle Adressen" ist, kann ein Eintrag im
Speicherbereich 3 zu der Zeit ausgegeben werden, zu der die Synchronisationsbedingung
3 abgeschlossen wurde. Wenn alle Synchronisationsebenen für jede Ebene
auf „0" sind, wurde die
Synchronisation dieser Ebene abgeschlossen. Daher kann die Synchronisationsabschlusstabelle
weggelassen werden.
-
Wie
oben beschrieben, wenn die vierte Ausführungsform auf einen Speichercontroller
mit einer Speicherbankstruktur angewendet wird, kann der Synchronisationsprozess
unabhängig
auf einer Bankgrundlage in einem Fall durchgeführt werden, in dem sich die
Synchronisationsbedingungen von Bank zu Bank unterscheiden.
-
Als
nächstes
wird der Betrieb der vierten Ausführungsform in weiterem Detail
erläutert.
-
Die
Verarbeitung in dem Fall, in dem eine Speicherzugriffsanweisung
durch die CPU 1 bei der vierten Ausführungsform ausgegeben wurde,
ist der Verarbeitung bei der dritten Ausführungsform von 25 ähnlich,
sodass eine ausführliche
Erläuterung
der vierten Ausführungsform
weggelassen wird.
-
Als
nächstes
wird der Prozess des Ausgebens von Anweisungen bei jeder der Bankausführungseinheiten 108, 118, 128 und 138,
die bereitgestellt werden, um den Scoreboards 100, 110, 120 bzw. 130 zu
entsprechen, mit Bezug auf 35 beschrieben.
-
Hinsichtlich
des Eintrags, in dem die auszugebende Speicherzugriffsanweisung
auf der Scoreboard eingetragen wurde, bestimmt die Bankausführungseinheit
zuerst, ob das gültige
Flag für
den relevanten Eintrag auf „V" gesetzt ist oder
nicht (Schritt S71). Wenn das gültige
Flag für
den relevanten Eintrag auf „I" gesetzt ist, bestimmt
die Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag nicht
ausgegeben werden kann, weil der relevante Eintrag ungültig ist
(Schritt S72).
-
Wenn
das gültige
Flag den relevanten Eintrag auf „V" ist, (Schritt S71, JA), bestimmt die Bankausführungseinheit,
ob das Freigeabeflag für den
relevanten Eintrag auf „JA" gesetzt ist oder
nicht (Schritt S73).
-
Wenn
das Freigabeflag für
den relevanten Eintrag auf „NEIN" gesetzt ist (Schritt
S73, NEIN), bestimmt die Bankausführungseinheit, dass die Speicherzugriffsanweisung
in dem relevanten Eintrag nicht mit den Bedingungen der Ausgabe
erfüllt
wurden oder bereits ausgegeben wurde. Als ersteren Zustand gibt
es Fälle,
in denen, wenn die Speicherschreibanweisung ausgeführt wird,
Schreibdaten nicht zu dem Speichercontroller transferiert wurden oder
ein Schnüffler
keine Antwort auf die Speicherschreibanforderung bestimmt. Als letzteren
Zustands gibt es Fälle,
in denen, wenn die Speicherleseanweisung ausgeführt wird, die Leseanforderung
nicht an das D-RAM transferiert wurde, sondern die angeforderten
Lesedaten den Speichercontroller nicht erreicht haben. Als Ergebnis
gibt die Bankausführungseinheit
die Speicherzugriffsanweisung in dem relevanten Eintrag nicht aus
(Schritt S74).
-
Wenn
das Freigabeflag für
den relevanten Eintrag auf „JA" gesetzt ist (Schritt
S73, JA), bestimmt die Bankausführungseinheit,
ob alle „SYNC-ABSCHLUSS
EINTRÄGE" aller Synchronisationsebenen
auf „0" in der Synchronisationsabschlusstabelle 12 gesetzt
sind oder nicht (Schritt S75). Da der Zustand, bei dem alle „SYNC-ABSCHLUSS
EINTRÄGE" auf „0" gesetzt sind, bedeutet,
dass der Synchronisationsvorgang beendet ist, der sich auf den der
Bankausführungseinheit
entsprechenden Bereich bezieht, bestimmt die Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag ausgegeben
werden kann (Schritt S76).
-
Wenn
ein oder mehrere „SYNC-ABSCHLUSS
EINTRAG" auf „1" an allen Synchronisationsebenen
in der Synchronisationsabschlusstabelle 12 gesetzt sind
(Schritt S75, NEIN), wird die Bestimmung davon, dass die Speicherzugriffsanweisung ausgegeben
werden kann oder nicht, basierend auf den folgenden Schritten S77
bis S84 ausgeführt. Eine
Schleife, wie in 35 durch Schritte S78, S80, S82
und S84 gezeigt ist, ist eine Verarbeitung zum Bestimmen, dass die
Speicherzugriffsanweisung in der Reihenfolge der Synchronisation
ausgegeben werden kann oder nicht. Tatsächlich werden die obigen Schritte
parallel zu der Implementierung der Hardware der vierten Ausführungsform
ausgeführt. Das
heißt,
die Implementierung der Hardware benötigt nicht den Zeiger (Zeiger „j") für die Arbeit.
Der Zeiger „j" wird in 35 lediglich
zwecks der Beschreibung des Ablaufdiagramms gezeigt, und der Zeiger „j" wird in 34 nicht
gezeigt.
-
Die
Bankausführungseinheit
liest die erste ausgegebene Synchronisationsbedingung, um die Reihenfolge
der Synchronisationsbedingungen zu bestimmen, die noch nicht ausgeführt wurden
(Schritt S77). Eine erste Synchronisationsbedingung der noch nicht
ausgeführten
Synchronisationsbedingungen wird durch den SYNC-Lesezeiger 162 angegeben.
Bei dem Schritt S77 der 37 wird der
durch den SYNC-Lesezeiger 162 angegebene Wert in dem Zeiger „j" für die Arbeit
eingestellt.
-
Nachdem
die letzte ausgegebene Synchronisationsbedingung gelesen ist, bestimmt
die Bankausführungseinheit,
dass die SYNC-Flags auf der Synchronisationsebene „j" der Einträge in der Scoreboard
jeweils auf „1" gesetzt sind (Schritt
S78). Wenn das SYNC-Flag des relevanten Eintrags auf „1" gesetzt ist (Schritt
S78, JA), kann die Speicherzugriffsanweisung des relevanten Eintrags
ausgeführt werden,
da die Speicherzugriffsanweisung vor der Synchronisationsanweisung
der Synchronisationsebene „j" ausgegeben (Schritt
S79).
-
Wenn
das SYNC-Flag des relevanten Eintrags nicht auf „1" gesetzt ist (Schritt S78, NEIN), bestimmt
die Bankausführungseinheit,
ob der relevante Eintrag eine Synchronisationszielanweisung auf
der Synchronisationsebene „j" ist oder nicht (Schritt
S80). D.h., es wird bestimmt, ob der relevante Eintrag mit der SYNC-Bedingung
der SYNC-Ebene „j" übereinstimmt oder nicht. Wenn
der relevante Eintrag eine Synchronisationsanweisung ist (Schritt
S80, JA), kann die Speicherzugriffsanweisung des relevanten Eintrags
nicht ausgeführt
werden (Schritt S81).
-
Wenn
der relevante Eintrag keine Synchronisationsanweisung ist (Schritt
S80, NEIN), bestimmt die Bankausführungseinheit, ob eine Synchronisationsebene,
die nach der Synchronisationsebene „j" auszuführen ist, mit der durch den
SYNC-Schreibzeiger 162 angegebenen Synchronisationsebene
koinzidiert oder nicht. Der Zustand, bei der die der Synchronisationsebene „j" folgende Synchronisationsebene
mit der durch den SYNC-Schreibzeiger 162 angegebenen Synchronisationsebene
koinzidiert, bedeutet, dass die der Synchronisationsebene „j" folgende Synchronisationsebene
eine letzte Synchronisationsebene ist. Da der relevante Eintrag
nicht mit der letzten Synchronisationsbedingung erfüllt wird, kann
die Speicherzugriffsanweisung des relevanten Eintrags ausgeführt werden
(Schritt S83).
-
Wenn
die Synchronisationsebene, die nach der Synchronisationsebene „j" auszuführen ist,
nicht mit der durch den SYNC-Schreiber 162 angegebenen
Synchronisationsebene koinzidiert, wird eine anschließende Synchronisationsebene
untersucht, da die der Synchronisationsebenen „j" folgende Synchronisationsebene keine
letzte Synchronisationsebene ist. In 3 wird der
Arbeitszeiger „j" inkrementiert (Schritt
S84). Schritt S84 kann durchgeführt
werden, sodass die Speicherzugriffsanweisung des relevanten Eintrags
nicht ausgeführt
werden kann, um die Schleifeverarbeitung der Schritte S78, S80,
S82 und S84 wegzulassen.
-
Bei
der vierten Ausführungsform
kann eine Abhängigkeitstabelle,
die den Verschiedenheiten der Synchronisationsebenen entspricht,
für jeden
Eintrag in der Scoreboard durchgeführt werden. Die Abhängigkeitstabelle
gibt an, dass eine solche Adressenkoinzidenz und der gleiche Prozessor
verarbeitet werden (Koinzidenz der Prozessorkennung). In diesem Fall
vergleicht, wenn eine transferierte Anweisung in der Scoreboard
eingetragen wird, die Bankausführungseinheit
eine Adresse und eine Prozessorkennung mit den beiden anderen Einträgen der
Scoreboard. ... Flag wird in der Tabelle an dem relevanten Eintrag
gesetzt, wenn eine Koinzidenz auftritt. Das gültige Flag wird andernfalls
gelöscht.
Bei dieser Modifikation sei angenommen, dass N1 die Anzahl von Einträgen der
Scoreboard angibt, wobei die Anzahl von Komparatoren gleich der
Ordnung von N1 ist.
-
Bei
der Modifikation wird die Verarbeitung, die sich auf die Synchronisation
bei der Bestimmung der Speicherzugriffsausgabe bezieht, nachstehend beschrieben.
Zuerst werden die Reihenwerte der Abhängigkeitstabelle NOR-verknüpft (#1).
Die Werte aller Bereiche auf der SYNC-Abschlusstabelle werden an den jeweiligen
Synchronisationsbedingungen ODER-verknüpft (#2). Das logische NOR
in #1 und das logische ODER in #2 werden UND-verknüpft (#3).
An sämtlichen
Synchronisationsbedingungen werden alle logische UND in #3 ODER-verknüpft (#4).
-
Die
in der SYNC-Abschlusstabelle gespeicherten Werte werden ODER-verknüpft (#5).
Wenn das logische ODER in #5 gleich „0" ist, ist, da die Synchronisation nicht
ausgeführt
wurde, die Bedingung für
die Ausführung
das logische UND zwischen dem „Val"-Flag und dem „En"-Flag. Wenn das logische
ODER in #5 gleich „1" ist, ist, da die
Synchronisation ausgeführt
wurde, die Bedingung für
die Ausführung
das logischen UND zwischen dem logischen UND zwischen „Val" und „En" und dem logischen ODER
in #4.
-
Schließlich werden
das logische ODER in #4, das „En"-Flag und das „Val"-Flag UND-verknüpft (#6). Es ist der ausgebbare
Eintrag, dessen Ergebnis der logischen UND-Operation in #6 gleich „1" ist.
-
Als
nächstes
wird die Verarbeitung des Speichercontrollers 10 bei der
vierten Ausführungsform zu
der Zeit erläutert,
zu der die CPU 1 die folgenden Anweisungen in aufsteigender
Reihenfolge sendet:
- (1) Lesen 12380
- (2) SYNC
- (3) Schreiben 67830
- (4) Schreiben 12380
- (5) SYNC
- (6) Schreiben abcd80
-
36A bis 42B zeigen
die in der Scoreboard 100 eingetragenen Datenelemente,
die für
den Bereich 0 bereitgestellt werden, und die Synchronisationsabschlusstabelle 12.
-
Es
sei angenommen, dass die Synchronisationsbedingung die gleiche wie
die bei der zweiten Ausführungsform
ist.
-
In 36A bis 42B hält das Element, das "FREIGEBEN/SPERREN
AUSGEBEN" der Anweisung
bei jedem Eintrag angibt, derartige Information, wie sie das Bestimmungsergebnis
der Bankausführungseinheiten
in 35 darstellt, wie folgt: (a) entspricht dem Bestimmungsergebnis
bei Schritt S72 von 35; (b) entspricht dem Bestimmungsergebnis
bei Schritt S73; (x) entspricht dem Bestimmungsergebnis bei Schritt
S75; (y) entspricht dem Bestimmungsergebnis bei Schritt S78; (c)entspricht
dem Bestimmungsergebnis bei Schritt S80; und (z) entspricht dem
Bestimmungsergebnis bei Schritt S82. Dies macht es leichter, den
Vorgang zu verstehen. Tatsächlich
muss das Element nur die Information halten, die gerade „FREIGEBEN/SPERREN
AUSGEBEN" einer
Anweisung angibt.
-
36A und 36B zeigen
die Anfangszustände
der Scoreboard 100 und die Synchronisationsabschlusstabelle 12.
Daher sind alle Einträge
in der Scoreboard unbenutzt (leer). In allen Einträgen unter
dem Element „FREIGEBEN/SPERREN
AUSGEBEN" auf der
Scoreboard 100 wurden Daten, die „SPERREN AUSGEBEN" angeben, eingetragen. Dies
entspricht (a), was bedeutet, dass die Einträge ungültig sind, wenn die Bankausführungseinheit 108 die
Verarbeitung von 35 ausführt. Folglich gibt es keinen
Eintrag, der ausgegeben werden kann.
-
37A und 37B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem die Anweisung (1) „Lesen 12380" von der Busschnittstelleneinheit 3 transferiert würde. Hier
wählt der
Speichercontroller 10 den leeren Eintrag Nr. 0 aus der
Scoreboard 100 für
den Bereich 0 aus, der der Adresse der Anweisung „Lesen 12380" entspricht, und
trägt die
Anweisung in den Eintrag ein. Der Eintrag Nr. 0 auf der Scoreboard 100 kann
ausgegeben werden.
-
38A und 38B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 die Synchronisationsanweisung
(2) „SYNC" empfangen hat. Der
Speichercontroller 10 setzt das Synchronisationsflag 0
in dem gültigen
Eintrag („V" unter dem Element „Val") auf „1" auf der Scoreboard 100.
Eine „1" wird in dem SYNC-Schreibzeiger
in der Synchronisationsabschlusstabelle 12 gesetzt. Das
dem Bereich 0 entsprechende SYNC-Abschlussflag 0 wird auf „1" gesetzt. Der Eintrag,
den die Bankausführungseinheit 108 ausgeben
kann, ist der Eintrag Nr. 0.
-
39A und 39B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 danach die Anweisung
(3) „67380
schreiben" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
1 aus der Scoreboard 100 für den Bereich 0 aus, der der
Adresse der Anweisung „67380
schreiben" entspricht,
und trägt
den Eintrag in dem Eintrag ein. Der Eintrag Nr. 0 und der Eintrag
Nr. 1 auf der Scoreboard 100 können ausgegeben werden können.
-
40A und 40B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 4 in
dem Fall, in dem der Speichercontroller 10 danach die Anweisung
(4) „Schreiben
12380" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
2 aus der Scoreboard 100 für den Bereich 0 aus, der der
Adresse der Anweisung „Schreiben 12380" entspricht, und
trägt die
Anweisung in den Eintrag ein. Nur der Eintrag Nr. 0 und der Eintrag
Nr. 1 auf der Scoreboard 100 können ausgegeben werden.
-
41A und 41B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 die zweite Synchronisationsanweisung
(5) „SYNC" empfangen hat. Der
Speichercontroller 10 setzt das Synchronisationsflag 1,
das dem SYNC-Schreibzeiger entspricht, in der Synchronisationsabschlusstabelle 12 auf „1" unter den Synchronisationsflags
0 bis 3 für den
gültigen
Eintrag („V" unter dem Element „Val") auf der Scoreboard 100.
Danach wird eine „2" in dem SYNC-Schreibzeiger
in der Synchronisationsabschlusstabelle 12 gesetzt. Das
SYNC-Abschlussflag 1
für den
Bereich 0 wird auf „1" gesetzt. Die Einträge, die
die Bankausführungseinheit 108 ausgeben
kann, sind nur der Eintrag Nr. 0 und der Eintrag Nr.1
-
42A und 42B zeigen
die Scoreboard 100 und die Synchronisationsabschlusstabelle 12 in
dem Fall, in dem der Speichercontroller 10 danach die Anweisung
(6) „Schreiben
abcd80" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
3 aus der Scoreboard 100 für den Bereich 0 aus, der der
Adresse der Anweisung „Schreiben abcd80" entspricht, und
trägt die
Anweisung in den Eintrag ein. Hier wird eine „2" in dem SYNC-Schreibzeiger in der Synchronisationsabschlusstabelle 12 gesetzt.
Das SYNC-Abschlussflag
1 für den
Bereich 0 wird auf „1" gesetzt. Die Einträge, die
die Bankausführungseinheit 108 ausgeben
kann, sind nur der Eintrag Nr. 0 und der Eintrag Nr. 1.
-
Die
oben beschriebenen Prozesse ermöglichen,
das der Speichercontroller nicht nur eine Mehrzahl von Anweisungen
annehmen sondern ebenfalls eine Speicherzugriffsanweisung gemäß der vorbestimmten
Synchronisationsbedingung ausgeben kann.
-
(Fünfte Ausführungsform)
-
Eine
fünfte
Ausführungsform
der Erfindung ist derart, dass bei dem Speichercontroller 10 der ersten
Ausführungsform
die Synchronisationsabschlusstabelle weggelassen wird und die Synchronisationsflags von den Scoreboards 11 entfernt
werden.
-
Genauer
gesagt werden bei der fünften
Ausführungsform
die Synchronisationsbedingungen auf alle Vorgänge (ohne Rücksicht auf die Synchronisation)
angewendet. Wenn Vorgänge
mit der Bedingung für
einen Synchronisationsvorgang (für
die gleiche Anforderung oder die gleiche Adresse) ausgeführt werden,
werden nur die Vorgänge,
die die Synchronisationsbedingungen erfüllen, immer ausgeführt, ohne
Rücksicht
auf die Ausführung
der Synchronisation. Dies ermöglicht
nicht nur, dass die Synchronisationsflags und die Synchronisationsabschlussflags weggelassen
werden können,
sondern verhindert ebenfalls, dass ein Vorgang nach der Synchronisationsanweisung
wiederholt wird, wodurch die Verarbeitungsfähigkeit des Systems verbessert
wird. Die fünfte
Ausführungsform
ist besonders wirksam, wenn die Bedingungsbestimmung auf eine Weak-Order-Art und
nicht auf eine Out-of-Order-Art durchgeführt wird. D.h., da es bei einem
gewöhnlichen
System ausreicht, die Reihenfolge zu gewährleisten, mit der auf die
gleiche Adresse zugegriffen wird, ist die fünfte Ausführungsform wirksam. Um die
fünfte
Ausführungsform
zu implementieren, wird die Reihenfolge, in der auf die gleiche
Adresse (ein Teil der Adresse kann verglichen werden) zugegriffen
wird, nicht geändert
oder ein Mittel, um zu verhindern, dass die Reihenfolge des Schreibens
und Schreibens und die Reihenfolge des Lesens und Schreibens (Reihenfolgeflags
später
erläutert)
geändert
wird, wird benötigt.
-
Hier
wird nachstehend die fünfte
Ausführungsform
mit Bezug auf 43 kurz erläutert.
-
Wie
in 43 gezeigt, werden bei der fünften Ausführungsform die Synchronisationsbedingungen
auf alle Vorgänge
angewendet. Die Synchronisationsflags und die Synchronisationsabschlusstabelle werden
eliminiert. Einträge
für Reihenfolgeflags 103, die
vorhergehende Vorgänge
angeben, werden zu den Scoreboards 100, 110, 120 und 130 hinzugefügt.
-
Wenn
ein vorhergehender Vorgang beispielsweise die gleiche Adresse aufweist,
wird die Eintragsnummer des vorhergehenden Vorgangs in dem Eintrag
gesetzt. Wenn der vorhergehende Vorgang ausgegeben oder ungültig gemacht
wurde, wird das Reihenfolgeflag ungültig gemacht (–), um zu
ermöglichen,
dass ein Vorgang ausgegeben werden kann.
-
Beispielsweise
wird in einem Fall, in dem alle Synchronisationsvorgänge für „das Lesen
und Schreiben der Daten von und in die gleiche Adresse" sind, wenn Zugriff
auf die gleiche Adresse bereits zu der Zeit eingetragen wurde, zu
der ein Vorgang in den Eintrag geschrieben wird, wird die Eintragsnummer
als ein Reihenfolgeflag gesetzt. Wenn mehr als ein Zugriff auf die
gleiche Adresse eingetragen wurde, wird die Eintragsnummer des zuletzt
eingetragenen Zugriffs als ein Reihenfolgeflag gesetzt.
-
Solange
wie der vorhergehende Vorgang oder das Reihenfolgeflag gültig ist,
kann der relevante Eintragsvorgang nicht ausgegeben werden. Wenn der
vorhergehende Vorgang verarbeitet wurde, wird das Reihenfolgeflag
für den
anschließenden
Eintrag gelöscht,
und der anschließende
Eintrag kann ausgegeben werden. Wenn ein Eintrag aus einem Grund gelöscht wird,
nachdem er eingetragen wurde, hindert das Lassen des Eintrags als
NOP die Speichervorrichtung daran, durch Löschung verriegelt zu werden.
-
43 zeigt einen Fall, in dem ein Synchronisationsprozess
immer mit Bezug auf die gleiche Adresse ausgeführt wird. Beispielsweise weisen
im Speicherbereich 0 vier der gültigen
Einträge
Zugriff auf die gleiche Adresse auf. Bei der fünften Ausführungsform wird ein vorhergehender
Vorgang an der gleichen Adresse durch ein Reihenfolgeflag spezifiziert,
vorausgesetzt, dass die Synchronisation immer mit Bezug auf die
gleiche Adresse ausgeführt
wird.
-
Im
Zustand von 43 greifen die Einträge Nr.1,
Nr. 0, Nr. 7 und Nr. 5 auf die gleiche Adresse in Folge zu. Obwohl
der Eintrag Nr. 0 als ein Busvorgang abgeschlossen wurde, wurde
der Eintrag Nr. 1 in einem Reihenfolgeflag als ein vorhergehender
Vorgang eingetragen, sodass der Eintrag Nr. 0 nicht ausgegeben werden
kann, bis die Verarbeitung des Eintrags Nr. 1 abgeschlossen wurde.
Auf ähnliche
Weise kann der Eintrag Nr. 7 nicht ausgegeben werden, bis die Verarbeitung
des Eintrags Nr. 0 abgeschlossen wurde. Der Eintrag Nr. 5 kann nicht
ausgegeben werden, bis die Verarbeitung des Eintrags Nr. 7 abgeschlossen
wurde. Dies gewährleistet,
dass die Einträge
in dieser Reihenfolge ausgeführt
werden: Eintrag Nr. 1, Eintrag Nr. 0, Eintrag Nr. 7 und Eintrag
Nr. 5.
-
Da
der Busvorgang nicht abgeschlossen wurde, kann der Eintrag Nr. 7
gelöscht
werden. Wenn der Eintrag Nr. 7 gelöscht wurde, dann wird der Vorgang
von „Schreiben" in „Nop" geändert, anstatt
dass das gültige
Flag in dem Eintrag in „I" geändert wird, was
verhindert, dass die Löschung
des sperrenden Eintrags Nr. 5 für
immer ausgegeben wird.
-
Als
nächstes
wird der Betrieb der fünften Ausführungsform
in weiterem Detail erläutert.
-
Zuerst
wird die Verarbeitung in dem Fall, in dem eine Speicherzugriffsanweisung
durch die CPU 1 bei der fünften Ausführungsform ausgegeben wurde,
mit Bezug auf 44 erläutert.
-
Die
durch die CPU 1 ausgegebene Speicherzugriffsanweisung wird
an die Busschnittstelleneinheit 3 über dem Bus 2 gesendet.
Die Busschnittstelleneinheit 3 transferiert die empfangene
Speicherzugriffsanweisung an den Speichercontroller 10 (Schritt S91).
-
Wenn
die empfangene Speicherzugriffsanweisung eine Speicherzugriffsanweisung
verschieden von einer Synchronisationsanweisung ist, wählt der
Speichercontroller 10 die entsprechende Scoreboard aus
den Scoreboards 100, 110, 120 und 130 auf
der Grundlage der Adresse der empfangenen Speicherzugriffsanweisung
aus. Außerdem
wählt der Speichercontroller 10 einen
Eintrag, dessen gültiges Flag
auf „I" (einen leeren Eintrag)
gesetzt ist, aus allen Einträgen
auf dem ausgewählten
Scoreboard aus. Danach trägt
der Speichercontroller 10 die transferierte Speicherzugriffsanweisung
in den ausgewählten
Eintrag ein (Schritt S92).
-
Beim
Eintragen des Speicherzugriffsanweisung trägt der Speichercontroller 10 nicht
nur den Betriebscode und die Adresse der Speicherzugriffsanweisung
ein, sondern setzt ebenfalls das gültige Flag auf „V".
-
Gemäß der Synchronisationsbedingung
bestimmt der Speichercontroller 10, ob ein Vorgang, der sich
auf die Speicherzugriffsanweisung in dem relevanten Eintrag oder
einen zu synchronisierenden Vorgang auf der Scoreboard bezieht,
existiert oder nicht (Schritt S93). Wenn ein zu synchronisierender Vorgang
existiert, wird der Speichercontroller 10 die Eintragsnummer
des (vorhergehenden) zuletzt eingetragenen, zu synchronisierenden
Vorgangs in dem Reihenfolgeflag eintragen (Schritt S94). Wenn ein
zu synchronisierender Vorgang nicht existiert, macht der Speichercontroller 10 das
Reihenfolgeflag für
den relevanten Eintrag ungültig
(Schritt S95).
-
Wenn
der (vorhergehende) Vorgang, der durch den in dem Reihenfolgeflag
des Eintrags eingetragene Eintragsnummer angegeben wird, abgeschlossen
wurde, wird das Reihenfolgeflag ungültig gemacht (Schritt S96).
-
Außerdem wählt unter
der Steuerung der Bankausführungseinheiten 108, 118, 128, 138 der Speichercontroller 10 einen
Eintrag aus der Scoreboard aus und gibt die Anweisung in dem Eintrag
aus (Schritt S97).
-
Wenn
der eingetragene Eintrag (Speicherzugriffsanweisung) ausgewählt wurde
und die Anweisung in dem Eintrag ausgegeben wurde (Schritt S97, JA),
wird das ausgebbare Flag für
den ausgewählten Eintrag
auf „NEIN" gesetzt (Schritt
S98). Die ausgegebene Speicherzugriffsanweisung wird durch die Busschnittstelleneinheit 3,
den Speichercontroller 10 und die Bankausführungseinheiten
ausgeführt.
-
Nachdem
die Verarbeitung der Speicherzugriffsanweisung abgeschlossen wurde,
setzt der Speichercontroller 10 nicht nur in dem Eintrag
für die ausgeführte Speicherzugriffsanweisung
gespeicherte gültige
Flag in der Scoreboard auf „I", sondern setzt ebenfalls
den Eintrag frei, bei dem die ausgeführte Speicheranweisung eingetragen
wurde (Schritt S99). Wenn das Eintragsflag, existiert, das den verarbeiteten
Eintrag angibt, wird der Speichercontroller 10 das Reihenfolgeflag
ungültig
machen.
-
Durch
die oben beschriebene Verarbeitung wird die durch die CPU 1 gesendete
Speicherzugriffsanweisung ausgeführt.
-
Als
nächstes
wird der Prozess des Ausgebens von Anweisungen bei jeder der Bankausführungseinheiten 108, 118, 128 und 138,
die bereitgestellt werden, um den Scoreboards 100, 110, 120 bzw. 130 zu
entsprechen, mit Bezug auf 45 beschrieben.
-
Hinsichtlich
des Eintrags, bei dem die auszugebende Speicherzugriffsanweisung
auf der Scoreboard eingetragen wurde, bestimmt die Bankausführungseinheit
zuerst, ob das gültige
Flag für
den relevanten Eintrag auf „I" ist oder nicht (Schritt
S101). Wenn das gültige
Flag für
den relevanten Eintrag auf „I" ist, bestimmt die
Bankausführungseinheit,
dass die Speicherzugriffsanweisung in dem relevanten Eintrag nicht
ausgegeben werden kann, weil der relevante Eintrag ungültig ist
(Schritt S102).
-
Wenn
das gültige
Flag für
den relevanten Eintrag auf „V" ist (Schritt S101,
NEIN), bestimmt die Bankausführungseinheit,
ob das Ausgabeflag für
den relevanten Eintrag auf „NEIN" ist oder nicht (Schritt S103).
Wenn das Ausgabeflag für
den relevanten Eintrag auf „NEIN" ist, bestimmt die
Bankausführungseinheit,
dass die Anweisung in dem relevanten Eintrag bereits ausgegeben
wurde oder nicht mit den Bedingungen der Ausgabe erfüllt wird,
und gibt die Speicherzugriffsanweisung in dem relevanten Eintrag
nicht aus (Schritt S104).
-
Wenn
das Ausgabeflag für
den relevanten Eintrag auf „JA" gesetzt ist (Schritt
S103, NEIN), bestimmt die Bankausführungseinheit, ob das Reihenfolgeflag
ungültig
ist oder nicht (Schritt S105). Wenn das Reihenfolgeflag ungültig ist,
bedeutet dies, dass der Synchronisationsprozess nicht benötigt wird
oder dass der vorhergehende Prozess des relevanten Eintrags abgeschlossen
wurde, sodass die Bankausführungseinheit
bestimmt, dass die Speicherzugriffsanweisung in dem relevanten Eintrag
ausgegeben werden kann (Schritt S106).
-
Wenn
das Reihenfolgeflag nicht ungültig
ist (Schritt S105, NEIN), bedeutet dies, dass der Synchronisationsprozess im
Gange ist oder dass auf den vorhergehenden Prozess des relevanten
Eintrags gewartet wird, sodass die Bankausführungseinheit bestimmt, dass
die Speicherzugriffsanweisung in dem relevanten Eintrag nicht ausgegeben
werden kann (Schritt S107).
-
Als
nächstes
wird die Verarbeitung des Speichercontrollers 10 bei der
fünften
Ausführungsform zu
der Zeit erläutert,
zu der die CPU 1 die folgenden Anweisungen in aufsteigender
Reihenfolge sendet.
- (1) Lesen 12380
- (2) Schreiben 67830
- (3) Schreiben 12380
- (4) Lesen 12380
- (5) Lesen abcd70
-
46 bis 53 zeigen
die in der Scoreboard eingetragenen Datenelemente, die für den Bereich
0 bereitgestellt wurden, und die Synchronisationsabschlusstabelle 12.
-
Es
sei angenommen, dass die Synchronisationsbedingung ist, dass „eine Lese/Schreib-Anweisung
mit Bezug auf die gleiche Adresse ausgegeben werden kann, nachdem
der vorhergehende Prozess abgeschlossen wurde". Dies ist die Bedingung, dass, wenn
die vorhergehende Speicherzugriffsanweisung mit Bezug auf die gleiche
Adresse existiert, eine Lese/Schreibanweisung mit Bezug auf die
gleiche Adresse immer ohne Rücksicht
auf die Synchronisationsanweisung nicht ausgegeben werden kann,
wohingegen, wenn die vorhergehende Speicherzugriffsanweisung nicht
existiert, die Lese/Schreib-Anweisung ausgegeben werden kann.
-
In 46 bis 53 hält das Element,
das „FREIGEBEN/SPERREN
AUSGEBEN der Anweisung in jedem Eintrag" angibt, derartige Information, wie
das Bestimmungsergebnis der Bankausführungseinheiten in 45 darstellt, wie folgt: (a) entspricht dem Bestimmungsergebnis
bei Schritt S102 von 45; (b) entspricht dem Bestimmungsergebnis
bei Schritt S104; (w) entspricht dem Bestimmungsergebnis bei Schritt
S106; und (d) entspricht dem Bestimmungsergebnis bei Schritt S107.
Dies macht es leichter, den Vorgang zu verstehen. Tatsächlich muss
das Element jedoch nur Information halten, die lediglich „FREIGEBEN/SPERREN
AUSGEBEN" eine Anweisung
angibt.
-
46 zeigt den Anfangszustand der Scoreboard 100.
Daher sind alle Einträge
in der Scoreboard 100 unbenutzt (leer). In allen Einträgen unter dem
Element „FREIGEBEN/SPERREN
AUSGEBEN" auf der
Scoreboard 100 wurden Daten, die SPERREN AUSGEBEN angeben,
eingetragen. Dies entspricht (a), was bedeutet, dass die Einträge ungültig sind,
wenn die Bankausführungseinheit 108 die Verarbeitung
von 45 ausführt. Folglich gibt es keinen
Eintrag, der ausgegeben werden kann.
-
47 zeigt die Scoreboard 100 in dem Fall, in
dem die Anweisung (1) „Lesen
12380" von der Busschnittstelleneinheit 3 transferiert
wurde. Hier wählt
der Speichercontroller 10 den leeren Eintrag Nr. 0 aus
der Scoreboard 100 für
den Bereich 0 aus, der der Adresse der Anweisung „Lesen
12380" entspricht,
und trägt
die Anweisung in den Eintrag ein. Der Eintrag Nr. 0 auf der Scoreboard
kann ausgegeben werden.
-
48 zeigt die Scoreboard 100 in dem Fall, in
dem der Speichercontroller 10 danach die Anweisung (2) „67380
schreiben" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
1 aus der Scoreboard 100 für den Bereich 0 aus, der der
Adresse der Anweisung „63780
schreiben" entspricht,
und trägt
die Anweisung in den Eintrag ein. Der Eintrag Nr. 0 und der Eintrag
Nr. 1 auf der Scoreboard 100 können ausgegeben werden.
-
49 zeigt die Scoreboard 100 in dem Fall, in
dem der Speichercontroller 10 danach die Anweisung (3) „Schreiben
12380" empfangen
hat. Der Speichercontroller 10 wählt den Eintrag 3 aus
der Scoreboard 100 für
den Bereich 0 aus, der der Adresse der Anweisung „Schreiben
12380" entspricht,
und trägt
die Anweisung in den Eintrag ein. Da die Adresse 12380 die gleiche
wie die Adresse für
die Speicherzugriffsanweisung beim Eintrag Nr. 0 ist, wird das Flag
(Daten), das den Eintrag Nr. 0 angibt, als das Reihenfolgeflag für den Eintrag
Nr. 2 gesetzt. Nur der Eintrag Nr. 0 und der Eintrag Nr. 1 auf der
Scoreboard 100 können
gemäß der Synchronisationsbedingung
ausgegeben werden.
-
50 zeigt die Scoreboard 100 in dem Fall, in
dem der Speichercontroller 10 die Anweisung (4) „Lesen
12380" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
3 aus der Scoreboard 100 für den Bereich 0 aus, der der
Adresse der Anweisung „Lesen
12380" entspricht,
und trägt
die Anweisung in den Eintrag ein. Weil die Adresse 12380 die gleiche
wie die Adresse für
die Speicherzugriffsanweisung beim Eintrag Nr. 0 und Eintrag Nr. 2
ist, wird das Flag (Daten), das den letzten eingetragenen Eintrag
Nr. 2 angibt, als das Reihenfolgeflag für den Eintrag Nr. 3 gesetzt.
Gemäß der Synchronisationsbedingung
können
nur der Eintrag Nr. 0 und der Eintrag Nr. 1 auf der Scoreboard 100 ausgegeben
werden.
-
51 zeigt die Scoreboard 100 in dem Fall, in
dem die Bankausführungseinheit 108 den
Eintrag Nr. 0 auf der Scoreboard 100 auswählt und
die Anweisung (1) „Lesen
12380" ausgegeben
wird. Der Speichercontroller 10 setzt den Eintrag Nr. 0
unter dem Element „En" auf „NEIN" auf der Scoreboard 100 und
setzt den Eintrag Nr. 0 frei. Nur der Eintrag Nr. 1 auf der Scoreboard 100 kann
ausgegeben werden.
-
52 zeigt die Scoreboard 100 zu der Zeit, zu
der die Verarbeitung der ausgegebenen Anweisung (1) „Lesen
12380" abgeschlossen
wurde. Der Speichercontroller 10 macht das Reihenfolgeflag
für den
Eintrag Nr. 2 auf der Scoreboard 100 ungültig. Daher
können
nur der Eintrag Nr. 1 und der Eintrag Nr. 2 auf der Scoreboard 100 ausgegeben
werden.
-
53 zeigt die Scoreboard 100 in dem Fall, in
dem der Speichercontroller 10 die Anweisung (5) „Lesen
abcd70" empfangen
hat. Der Speichercontroller 10 wählt den leeren Eintrag Nr.
0 aus der Scoreboard 100 für den Bereich 0 aus, der der
Adresse der Anweisung „Lesen
abcd70" entspricht,
und trägt
die Anweisung in dem Eintrag ein. Nur der Eintrag Nr. 0, der Eintrag
Nr. 1 und der Eintrag Nr.2 können
auf der Scoreboard 100 ausgegeben werden.
-
Die
vorher beschriebenen Prozesse ermöglichen, dass der Speichercontroller 10 eine
Speicherzugriffsanweisung gemäß der vorbestimmten
Synchronisationsbedingung auswählen
und ausgeben kann.
-
(Sechste Ausführungsform)
-
Wie
in 54 gezeigt, ist eine sechste Ausführungsform
der Erfindung derart, dass der gesamte Speicherbereich oder der
Speichersteuerbereich von einer einzigen Scoreboard 200 verwaltet
und keine Synchronisationsabschlusstabelle verwendet wird. Mit anderen
Worten ist die sechste Ausführungsform ein
System, das den Zustand von Vorgängen
in den einzelnen Speicherbereichen zusammen verwaltet, wohingegen
die erste Ausführungsform
ein System ist, das die einzelnen Speicherbereiche verteilt verwaltet.
Der Grundvorgang ist der gleiche wie der bei der ersten Ausführungsform.
-
Wie
in 54 gezeigt, verwendet ein Speichercontroller 10 der
sechsten Ausführungsform
die einzige Scoreboard 200, um den Zustand des Betriebs jeder der
Bankspeicher BM0 bis BM3 zu verwalten, und erzeugt Steuersignale
für vier
Speicherbereiche 0 bis 3. Wenn ein Synchronisationsvorgang ausgegeben
wird, wird ein Flag, das angibt, dass er ein Vorgang vor der Synchronisation
ist, auf „1" als ein Synchronisationsflag 201 gesetzt,
wodurch er von einem Vorgang nach der Synchronisation unterschieden
wird.
-
Außerdem wird
ein Synchronisationsabschlussflag auf „1" in einer Synchronisationsabschlusstabelle 240 gesetzt,
bis der Synchronisationsprozess abgeschlossen wurde, wodurch die
Annahme eines anschließenden
Synchronisationsvorgangs verweigert wird und veranlasst wird, dass
die Synchronisationsvorgänge
wiederholt werden. Wenn bei der einzigen Scoreboard die Synchronisationsflags 200 auf „0" für alle Einträge sind,
bedeutet dies, dass die Synchronisation abgeschlossen wurde. Daher kann
die Synchronisationsabschlusstabelle 240 weggelassen werden.
-
(Siebente Ausführungsform)
-
Wie
in 55 gezeigt, ist eine siebente Ausführungsform
der sechsten Ausführungsform ähnlich derart,
dass eine einzige Scoreboard 200 verwendet wird, um den
Zustand des Betriebs der einzelnen Speicherbereiche zusammen zu
verwalten, und eine Synchronisationsabschlusstabelle 240,
bei der ein Synchronisationsflag 241 und eine Synchronisationsbedingung 242 für alle einzelnen
Einträge
eingestellt sind, wird bereitgestellt.
-
Genauer
gesagt wird bei der siebenten Ausführungsform ein Synchronisationsprozess
(ein Prozess mit starker Reihenfolge) nur an den Vorgängen ausgeführt, die
die Synchronisationsbedingung 242 erfüllen (hier die gleiche Adresse
SA), wohingegen ein normaler Prozess auf eine Out-of- Order-Art oder ein
Prozess auf eine Weak-Order-Art an den Vorgängen ausgeführt wird, die die Synchronisationsbedingung
nicht erfüllen.
-
Die
siebente Ausführungsform
unterscheidet sich von der sechsten Ausführungsform dadurch, dass die
Synchronisationsbedingung 242 zu den Synchronisationsabschlusstabelle 240 hinzugefügt wird,
wie in 55 gezeigt ist. Daher unterscheidet sich
die siebente Ausführungsform
von der sechsten Ausführungsform
nur in dem kollektiven Managementverfahren. Der Grundbetrieb der
siebenten Ausführungsform
ist der gleiche wie der der zweiten Ausführungsform.
-
Bei
der siebenten Ausführungsform
ist es ebenfalls notwendig, wenn die Synchronisationsabschlusstabelle 24 weggelassen
wird, einen Synchronisationsvorgang in die Scoreboard 200 einzugeben und
zu bestimmen, ob die Synchronisationsbedingung jedes Mal erfüllt wird
oder nicht, wenn ein anschließender
Vorgang ankommt. Zu der Zeit, zu der der anschließende Vorgang
eingetragen wird, wird ein Synchronisationsflag 201 in
der Scoreboard 200 gesetzt. Die Verwendung des Synchronisationsflags, die
drei Zustände „vor der
Synchronisation", „nach der
Synchronisation" und „ohne Rücksicht
auf die Synchronisation" definieren,
erleichtert die Steuerung. Der Abschluss der Synchronisation kann
aus dem Verschwinden der Einträge
für „vor der
Synchronisation" in
der Scoreboard bestimmt werden.
-
(Achte Ausführungsform)
-
Wie
in 56 gezeigt, ist eine achte Ausführungsform
der Erfindung der sechsten Ausführungsform ähnlich derart,
dass eine einzige Scoreboard 200 verwendet wird, um den
Zustand des Betriebs der einzelnen Speicherbereiche zusammen zu
verwalten, und die Einträge
der Synchronisationsflags von mehreren Ebenen werden wie bei der
dritten Ausführungsform eingetragen.
Bei der achten Ausführungsform
kann ebenfalls, wenn nur eine Scoreboard 200 verwendet
wird, eine Synchronisationsabschlusstabelle 240 weggelassen
werden.
-
Wie
in 56 gezeigt, ist die achte Ausführungsform derart, dass die
Einträge
für Synchronisationsflags 202 von
mehreren Ebenen in der Scoreboard 200 bereitgestellt werden,
um den mehreren Synchronisationsebenen zu entsprechen. Der ausführliche
Betrieb der achten Ausführungsform
ist der gleiche wie der bei der dritten Ausführungsform. Genauer gesagt
wird bei der achten Ausführungsform angenommen,
dass das Synchronisationsflag 202 vier Ebenen 0 bis 3 für jeden
Eintrag aufweist. Es wird ebenfalls angenommen, dass das Synchronisationsabschlussflag
in der Synchronisationsabschlusstabelle 240 vier Ebenen
aufweist. Ein Synchronisations-Lesezeiger (SYNC-Lesezeiger) 261 gibt
an, welche Ebene ausgeführt
wird, und ein Synchronisationsschreibzeiger 262 gibt die
nächste
Synchronisationsebene an.
-
Wenn
die Synchronisationsabschlusstabelle 240 weggelassen wird,
wird ein Synchronisationsvorgang in die Scoreboard eingetragen,
und jedes Mal, wenn ein anschließender Vorgang ankommt, wird
bestimmt, ob die Synchronisationsbedingung erfüllt ist oder nicht. Zu der
Zeit, zu der der anschließende
Vorgang eingetragen wird, wird ein Synchronisationsflag 202 gesetzt.
In diesem Fall erleichtert die Verwendung von Synchronisationsflags,
die die drei Zustände „vor der
Synchronisation", „nach der
Synchronisation" und „ohne Rücksicht
auf die Synchronisation" definieren,
die Steuerung. Der Abschluss der Synchronisation kann aus dem Verschwinden
der Einträge
für „vor der
Synchronisation" in
der Scoreboard bestimmt werden.
-
(Neunte Ausführungsform)
-
Wie
in 57 gezeigt, ist eine neunte Ausführungsform
der Erfindung der sechsten Ausführungsform ähnlich derart,
dass eine einzige Scoreboard 200 verwendet wird, um den
Zustand des Betriebs der einzelnen Speicherbereiche zusammen zu verwalten,
und eine Synchronisationsabschlusstabelle 240, die mit
Einträgen 263 versehen
ist, die Synchronisationsbedingungen (in diesem Fall die gleiche
Adresse SA) für
jede der Synchronisationsebenen 0 bis 3 angeben, wird wie bei der
vierten Ausführungsform
bereitgestellt.
-
Genauer
gesagt ist die neunte Ausführungsform
derart, dass die Einträge 263,
die eine Mehrzahl von Synchronisationsbedingungen angeben, in der Synchronisationsabschlusstabelle 240 gemäß den mehreren
Synchronisationsebenen bereitgestellt werden. Der detaillierte Betrieb
der neunten Ausführungsform
ist der gleiche wie der bei der vierten Ausführungsform.
-
Wenn
die Synchronisationsabschlusstabelle 240 weggelassen wird,
wird ein Synchronisationsvorgang in die Scoreboard eingetragen,
und jedes Mal, wenn ein anschließender Vorgang ankommt, wird
bestimmt, ob die Synchronisationsbedingung erfüllt ist oder nicht. Zu der
Zeit, zu der der anschließende
Vorgang eingetragen wird, wird ein Synchronisationsflag 202 gesetzt.
In diesem Fall erleichtert die Verwendung des Synchronisationsflags,
die die drei Zustände „vor der
Synchronisation", „nach der
Synchronisation",
und „ohne
Rücksicht
auf die Synchronisation" definieren,
die Steuerung. Der Abschluss der Synchronisation kann aus dem Verschwinden
der Einträge
für „vor der
Synchronisation" in
der Scoreboard bestimmt werden.
-
(Zehnte Ausführungsform)
-
Wie
in 58 gezeigt, ist eine zehnte Ausführungsform
der Erfindung der sechsten Ausführungsform ähnlich derart, dass
eine einzige Scoreboard 200 verwendet wird, um den Zustand
des Betriebs der einzelnen Speicherbereiche zusammen zu verwalten,
und die Synchronisationsbedingungen werden auf alle Vorgänge (ohne
Rücksicht
auf Synchronisation) angewendet. Bei der zehnten Ausführungsform
werden ebenfalls, wenn Vorgänge
ausgeführt
werden, die die Bedingung für
einen Synchronisationsvorgang (für
die gleiche Anforderung oder die gleiche Adresse) aufweisen, nur
die Vorgänge,
die die Synchronisationsbedingungen erfüllen, ohne Rücksicht
auf die Ausführung
der Synchronisation immer ausgeführt.
Dies ermöglicht
nicht nur, dass die Synchronisationsflags und die Synchronisationsabschlussflags
weggelassen werden, sondern verhindert ebenfalls, dass Vorgänge nach
der Synchronisationsanweisung wiederholt werden, wodurch die Verarbeitungsfähigkeit
des Systems verbessert wird.
-
Genauer
gesagt ist, wie in 58 gezeigt, die zehnte Ausführungsform
derart, dass die Synchronisationsbedingungen auf alle Vorgänge angewendet
werden, die Synchronisationsflags und Synchronisationsabschlusstabelle
weggelassen werden, und die Einträge für Reihenfolgeflags 203,
die vorhergehende Vorgänge
angeben, zu der Scoreboard 200 hinzugefügt werden. Wenn ein vorhergehender
Vorgang beispielsweise die gleiche Adresse aufweist, wird die Eintragsnummer
des vorhergehenden Vorgangs in den Einträgen eingestellt. Wenn der vorhergehende
Vorgang ausgegeben wurde oder ungültig gemacht wurde, wird das
Reihenfolgeflag ungültig gemacht
(–), um
zu ermöglichen,
dass ein Vorgang ausgegeben wird. Der detaillierte Betrieb der zehnten Ausführungsform
ist der gleiche wie der der fünften Ausführungsform.
-
Wie
bisher ausführlich
mit der Erfindung ausführlich
erläutert
wurde, macht es die Verwendung einer Managementtabelle in einem
auf ein Multiprozessorsystem angewendeten Speichercontroller möglich, nicht
nur den Zustand des Speicherzugreifens zu verwalten, sondern ebenfalls
einen anschließenden
Vorgang (oder einen Vorgang, der die Synchronisationsbedingungen
erfüllt)
anscheinend anzunehmen, wenn ein Synchronisationsvorgang ausgeführt wird.
Daher ist es möglich,
die Einheit, die einen anschließenden
Vorgang anfordert, am Wiederholen der Anforderung zu hindern, was
zu einer Abnahme in dem Zusatzaufwand des Systems bei dem Synchronisationsprozess
führt.