PatentDe  


Dokumentenidentifikation DE69733374T2 27.04.2006
EP-Veröffentlichungsnummer 0000788054
Titel Speichersteuerungsvorrichtung und -system
Anmelder Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa, JP
Erfinder Kurosawa, Yasuhiko, 1-1 Shibaura 1-chome, Tokyo 105, JP
Vertreter Henkel, Feiler & Hänzel, 81675 München
DE-Aktenzeichen 69733374
Vertragsstaaten DE, FR, GB
Sprache des Dokument EN
EP-Anmeldetag 30.01.1997
EP-Aktenzeichen 971014675
EP-Offenlegungsdatum 06.08.1997
EP date of grant 01.06.2005
Veröffentlichungstag im Patentblatt 27.04.2006
IPC-Hauptklasse G06F 13/16(2006.01)A, F, I, 20051017, B, H, EP

Beschreibung[de]

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.


Anspruch[de]
  1. Speichercontroller (10) zum Steuern eines Speichers als Reaktion auf den Empfang von Speicherzugriffsanweisungen als ungeordnete oder schwach geordnete Anweisungen und von mindestens einer Synchronisationsanweisung als eine stark geordnete Anweisung, wobei der Speichercontroller umfasst:

    eine Anweisungs-Managementtabelle (11) mit einer Mehrzahl von Einträgen, die Information speichern, die den Fortschritt der Ausführung der empfangenen Speicherzugriffsanweisungen zeigt, wobei jede der Mehrzahl von Einträgen mindestens ein Synchronisationsflag (101) aufweist, das angibt, ob eine entsprechende Speicherzugriffsanweisung vor der Synchronisationsanweisung empfangen wurde;

    ferner gekennzeichnet durch

    ein Mittel (10) zum Ausführen der empfangenen Speicherzugriffsanweisungen durch Ausführen von Speicherzugriffsanweisungen, die nach der Synchronisationsanweisung empfangen wurden, nachdem die Ausführungen aller Speicherzugriffsanweisungen, die vor der Synchronisationsanweisung empfangen wurde, beendet wurden, basierend auf der Information der Einträge einschließlich der Synchronisationsflags (101).
  2. Speichercontroller gemäß Anspruch 1, ferner gekennzeichnet durch. ein Mittel zum sequentiellen Empfangen jeder der ausgegebenen Speicherzugriffsanweisung, zum Registrieren jeder empfangenen Speicherzugriffsanweisung in der Anweisungs-Managementtabelle (11) und zum Einstellen eines entsprechenden Synchronisationsflags (101) für jede der empfangenen Speicherzugriffsanweisungen, wobei das Synchronisationsflag angibt, dass die Speicherzugriffsanweisungen nicht vor der Synchronisationsanweisung empfangen wurde.
  3. Speichercontroller gemäß Anspruch 2, ferner gekennzeichnet durch ein Mittel zum Empfangen der Synchronisationsanweisung und zum Ändern aller Synchronisationsflags (101) der Speicherzugriffsanweisungen, die in der Anweisungs-Managementtabelle (11) registriert sind, um anzugeben, dass die Speicherzugriffsanweisungen vor der Synchronisationsanweisung empfangen wurden.
  4. Speichercontroller gemäß Anspruch 1, dadurch gekennzeichnet, dass jede der Mehrzahl von Einträgen in der Anweisungs-Managementtabelle (11) ferner ein Abschlussflag (105) umfasst, das angibt, ob die Ausführung einer entsprechenden Speicherzugriffsanweisung abgeschlossen wurde.
  5. Speichercontroller gemäß Anspruch 1, ferner gekennzeichnet durch eine Synchronisationsabschlusstabelle (12) mit einer Mehrzahl von Einträgen, die Information für die Speicherzugriffsanweisungen speichern, die vor der Synchronisationsanweisung empfangen wurden, wobei jede der Mehrzahl von Einträgen ein Synchronisationsabschlussflag aufweist, das angibt, ob die Ausführung einer entsprechenden Speicherzugriffsanweisung, die vor der Synchronisationsanweisung empfangen wurde, abgeschlossen wurde.
  6. Speichercontroller gemäß Anspruch 5, dadurch gekennzeichnet, dass die Synchronisationsabschlusstabelle (12) ferner einen Eintrag umfasst, der Information (160) speichert, die einen Zustand zum Ausführen der vor der Synchronisationsanweisung empfangenen Speicherzugriffsanweisung angibt.
  7. Speichercontroller gemäß Anspruch 1, dadurch gekennzeichnet, dass jede der Mehrzahl von Einträgen in der Anweisungs-Managementtabelle (11) ferner ein Flag (106) aufweist, das angibt, ob eine entsprechende Speicherzugriffsanweisung ausführbar ist.
  8. Speichersteuerverfahren zur Verwendung bei einem Computersystem mit einem Speichercontroller (10) zum Steuern eines Speichers als Reaktion auf das Empfangen von Speicherzugriffsanweisungen als ungeordnete oder schwach geordnete Anweisungen und von mindestens einer Synchronisationsanweisung als eine stark geordnete Anweisung, wobei der Speichercontroller eine Anweisungs-Managementtabelle (11) mit einer Mehrzahl von Einträgen umfasst, die Information speichern, die den Fortschritt der Ausführung der empfangenen Speicherzugriffsanweisungen zeigt, wobei das Verfahren folgende Schritte umfasst:

    Veranlassen, dass jede der Mehrzahl von Einträgen mindestens ein Synchronisationsflag (101) aufweist, das angibt, ob eine entsprechende Speicherzugriffsanweisung vor der Synchronisationsanweisung empfangen wurde;

    ferner gekennzeichnet durch:

    Ausführen der empfangenen Speicherzugriffsanweisungen durch Ausführen von Speicherzugriffsanweisungen, die nach der Synchronisationsanweisung empfangen wurden, nachdem die Ausführungen aller Speicherzugriffsanweisungen, die vor der Synchronisationsanweisung empfangen wurden, abgeschlossen wurden, basierend auf der Information der Einträge einschließlich der Synchronisationsflags (101).
  9. Verfahren gemäß Anspruch 8, ferner gekennzeichnet durch die Schritte eines sequentiellen Empfangens jeder der ausgegebenen Speicherzugriffsanweisungen, Registrierens jeder empfangenen Speicherzugriffsanweisung in der Anweisungs-Managementtabelle und Setzens eines entsprechenden Synchronisationsflags, das angibt, dass die Speicherzugriffsanweisung nicht vor der Synchronisationsanweisung empfangen wurde.
  10. Verfahren gemäß Anspruch 9, ferner gekennzeichnet durch die Schritte eines Empfangens der Synchronisationsanweisung und Änderns aller Synchronisationsflags (101) der in der Anweisungs-Managementtabelle (11) registrierten Speicherzugriffsanweisungen, um anzugeben, dass die Speicherzugriffsanweisungen vor der Synchronisationsanweisung empfangen wurden.
  11. Verfahren gemäß Anspruch 8, dadurch gekennzeichnet, dass jede der Mehrzahl von Einträgen in der Anweisungs-Managementtabelle (11) ferner ein Abschlussflag (105) aufweist, das angibt, ob die Ausführung einer entsprechenden Speicherzugriffsanweisung abgeschlossen wurde.
  12. Verfahren gemäß Anspruch 8, dadurch gekennzeichnet, dass der Speichercontroller ferner eine Synchronisationsabschlusstabelle (12) mit einer Mehrzahl von Einträgen aufweist, die Information für die Speicherzugriffsanweisungen speichern, die vor der Synchronisationsanweisung empfangen wurden, wobei jede der Mehrzahl von Einträgen ein Synchronisationsabschlussflag aufweist, das angibt, ob die Ausführung einer entsprechenden Speicherzugriffsanweisung, die vor der Synchronisationsanweisung empfangen wurde, abgeschlossen wurde.
  13. Verfahren gemäß Anspruch 12, dadurch gekennzeichnet, dass die Synchronisationsabschlusstabelle (12) ferner einen Eintrag aufweist, der Information (160) speichert, die eine Bedingung zum Ausführen der Speicherzugriffsanweisung angibt, die vor der Synchronisationsanweisung empfangen wurde.
  14. Verfahren gemäß Anspruch 8, dadurch gekennzeichnet, dass jede der Mehrzahl von Einträgen in der Anweisungs-Managementtabelle (11) ferner ein Flag (106) aufweist, das angibt, ob eine entsprechende Speicherzugriffsanweisung ausführbar ist.
Es folgen 41 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com