-
TECHNISCHES
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein Mehrprozessorsysteme und
im Besonderen ein System und ein Verfahren zur Unterbrechung eines
Zustands einer Lockstep-Sequenz
in einem Server, der mehrere Prozessoreinheiten aufweist.
-
STAND DER
TECHNIK
-
Moderne
Computeranwendungen implementieren zunehmend Highend-Aufgaben, die für deren
effiziente Ausführung
eine Mehrzahl von Prozessoren benötigen. Mehrprozessorsysteme
ermöglichen
die parallele Ausführung
mehrerer Aufgaben an zwei oder mehr Zentraleinheiten ("CPUs"). Ein typisches
Beispiel für
ein Mehrprozessorsystem ist unter anderem ein Netzwerkserver. Vorzugsweise
wird ein Mehrprozessorsystem unter Verwendung allgemein erhältlicher
Bauteile hergestellt, wie etwa dem Intel Pentium Pro Prozessor (auch
bekannt als "P6" Prozessor), PCI
E/A-Chipsätzen,
einer P6-Bustopologie und Standard-Speichermodulen wie etwa SIMMs
und DIMMs. Es gibt zahlreiche allgemein bekannte Architekturen für Mehrprozessorsysteme,
wie etwa das symmetrische Multiprocessing ("SMP"),
der uneinheitliche Speicherzugriff ("NUMA" als
englische Abkürzung
von Non-Uniform Memory Access), Cache-kohärentes NUMA ("CC-NUMA"), Clustered Computing
und Massiv-Parallelverarbeitung ("MMP" als
englische Abkürzung
von Massively Parallel Processing).
-
Ein
System für
das symmetrische Multiprocessing ("SMP")
weist zwei oder mehr identische Prozessoren auf, die einzeln als "Peers" Verarbeitungen ausführen (d.
h. keine Master-/Slave-Verarbeitung).
Jeder der Prozessoren (oder jede der CPUs) in einem SMP-System weisen
den gleichen Zugriff auf die Ressourcen des Systems auf, einschließlich des Speicherzugriffs.
Ein NUMA-System weist zwei oder mehr übereinstimmende Prozessoren
auf, die einen ungleichen Zugriff auf den Speicher aufweisen. NUMA
umfasst verschiedene unterschiedliche Architekturen, die aufgrund
ihrer uneinheitlichen Speicherzugriffslatenz in Gruppen. zusammengefasst
werden können,
einschließlich
replizierter Speichercluster ("RMC"), MPP und CC-NUMA.
In einem NUMA-System ist der Speicher für gewöhnlich in lokale Speicher unterteilt,
die nahe an Prozessoren platziert sind, sowie in entfernte Speicher,
die nicht nahe an einem Prozessor oder Prozessor-Cluster angeordnet sind. Gemeinsam genutzte
Speicher können
in einem der lokalen Speicher zugewiesen oder auf zwei oder mehr
lokale Speicher verteilt sein. In einem CC-NUMA-System nutzen mehrere
Prozessoren in einem einzigen Knoten einen einzelnen Speicher gemeinsam,
und die Cache-Kohärenz
wird unter Verwendung von Hardware-Techniken aufrechterhalten. Im Gegensatz
zu einem SMP-Modus verwendet ein CC-NUMA-System allerdings ein Kohärenzschema auf
Verzeichnisbasis an Stelle eines Snoopy-Busses, um die Kohärenz an
allen Prozessoren aufrechtzuerhalten. RMC und MPP weisen eine Mehrzahl
von Konten und Clustern auf und erhalten die Kohärenz durch Software-Techniken
aufrecht. RMC und MPP können
als NUMA-Architekturen
beschrieben werden, und zwar aufgrund der ungleichen Speicherlatenzen,
die der Software-Kohärenz
zwischen Knoten zugeordnet sind.
-
Alle
der vorstehend beschriebenen Mehrprozessorarchitekturen erfordern
eine bestimmte Art einer Cache-Kohärenz-Vorrichtung, die auf Hardware- oder
Softwareebene implementiert werden kann. Hochgeschwindigkeits-CPUs,
wie etwa der P6 Prozessor, verwenden einen internen Cache und für gewöhnlich einen externen
Cache zur Maximierung der CPU-Geschwindigkeit. Da ein SMP-System
für gewöhnlich nur
eine Kopie des Betriebssystems ausführt, muss die Kooperation der
CPUs und des Speichers die Datenkohärenz aufrechterhalten. In diesem Zusammenhang
bedeutet Kohärenz,
dass es zu jedem Zeitpunkt nur einen einzigen gültigen Wert für jedes
Datum gibt. Somit ist es erforderlich, die Kohärenz zwischen den CPU-Caches
und dem Hauptspeicher aufrechtzuerhalten.
-
Eine
beliebte Kohärenztechnik
verwendet einen "Snoopy-Bus" bzw. einen schnüffelnden
Bus. Jeder Prozessor erhält
dessen eigenen lokalen Cache aufrecht und "schnüffelt" (Snooping) auf dem
Bus in der Suche nach Lese- und Schreiboperationen zwischen anderen
Prozessoren und dem Hauptspeicher, die den Inhalt des eigenen Cache
beeinflussen können.
Wenn ein erster Prozessor versucht auf ein Datum in dem Hauptspeicher
zuzugreifen, das ein zweiter Prozessor modifiziert hat und in dessen
Cache speichert, unterbricht der zweite Prozessor den Speicherzugriff
des ersten Prozessors und schreibt den Inhalt des eigenen Cache
in den Speicher. Danach erfahren alle anderen Snoop-Prozessoren
auf dem Bus, einschließlich
des ersten Prozessors, von dem Auftreten des Schreibvorgangs auf
dem Bus und aktualisieren deren Cache-Zustandsinformationen zur
Aufrechterhaltung der Kohärenz.
-
Eine
weitere beliebte Kohärenztechnik
ist die "Cache-Kohärenz auf
Verzeichnisbasis".
Caching auf Verzeichnisbasis speichert den Zustand und die Position
jedes Datenblocks in dem Hauptspeicher. Für jede gemeinsam nutzbare Speicheradresszeile
existiert ein "Präsenz"-Bit für jeden
kohärenten
Prozessor-Cache
in dem System. Immer wenn ein Prozessor eine Datenzeile aus dem
Speicher für
dessen Cache anfordert, wird das Präsenz-Bit für diesen Cache in der Speicherzelle
gesetzt. Immer wenn einer der Prozessoren versucht, in diese Speicherzeile
zu schreiben, werden die Präsenz-Bits
dazu verwendet, die Cache-Zeilen
aller Caches ungültig
zu machen, die diese Speicherzeile vorher verwendet haben. Danach
werden alle Präsenz-Bits
für den
Prozessor zurückgesetzt
und das spezielle Präsenz-Bit
wird für den
Prozessor gesetzt, der in die Speicherzeile schreibt. Somit müssen sich
nicht alle Prozessoren auf einem gemeinsamen Snoop-Bus befinden,
da das Verzeichnis die Kohärenz
für die
einzelnen Prozessoren aufrechterhält.
-
Aus
der vorstehenden Beschreibung wird deutlich, dass von Zeit zu Zeit
zwei oder mehr Prozessoren versuchen, gleichzeitig auf Daten an
der gleichen Position zuzugreifen. Während dem normalen Betrieb
eines Mehrprozessorsystems kann dies dazu führen, dass einer oder mehrere
Prozessoren "wiederholt" werden. Das heißt, ein
Prozessor führt einen
Speicherzugriff auf einen bestimmten Speicherplatz aus und der Speicherzugriff
wird verweigert, da der Speicherplatz vorübergehend nicht verfügbar ist.
Wenn dies eintritt, versucht der Prozessor den Speicherzugriff erneut
innerhalb eines kurzen Zeitraums und ist für gewöhnlich beim wiederholten Zugriffsversuch
auf den Speicherplatz erfolgreich.
-
Es
ist allerdings bekannt, dass zwei oder mehr Prozessoren gelegentlich
in einem sich endlos wiederholenden Zyklus von Wiederholungsversuchen
festsitzen, wobei der Zugriff auf den gewünschten Speicherplatz zu keinem
Zeitpunkt gelingt. Dieser Zustand kann als "Lockstep-Sequenz" bezeichnet werden. Die Umstände, die
zu einer Lockstep-Sequenz führen,
sind komplex, und es können
aufgrund der komplexen Bauweise und der Anzahl der möglichen
Zustände
in dem System nur schwer Vorkehrungen dafür getroffen werden, das eine
Mehrprozessorkonstruktion nicht für einen Lockstep-Zustand anfällig ist.
Im Wesentlichen kann eine Lockstep-Sequenz als eine Gruppe von CPUs
erkannt werden, die versucht auf eine Datenzeile in dem Speicher
zuzugreifen, die durch eine andere CPU gesperrt worden ist, die
die Kontrolle über
diese Zeile aufweist. Jede der ausgesperrten CPUs wiederholt den
Zugriffsversuch auf die Zeile und ist dabei erfolglos, wodurch die
Ansetzung eines erneuten Zugriffsversuchs bewirkt wird. Das Sequentialisieren
der wiederholten Versuche durch die CPUs ist derart gegeben, dass
es verhindert wird, dass die CPU, welche die tatsächliche
Kontrolle bzw. Steuerung über
die Zeile aufweist, die Zeile entsperrt bzw. freigibt, da die Speichersteuereinheit
bzw. die Speichersteuerung immer damit beschäftigt ist, die Anforderungen
von Wiederholungsversuchen der ausgesparten CPUs abzuarbeiten.
-
In
diesem Fall erscheint es, als würde
der Bus ein starkes Verkehrsaufkommen verzeichnen, wobei viele der
CPUs wenn nicht sogar alle überhaupt
keine tatsächliche
Arbeit ausführen.
Stattdessen werden die durch das Mehrprozessorsystem ausgeführten Anwendungen
in dem jeweiligen Zustand "eingefroren". Wie dies bereits
vorstehend im Text erwähnt
worden ist, kann dieser Zustand nur schwer reproduziert und korrigiert
werden, und zwar aufgrund der Komplexität der Zeitsteuerung der Speicheranforderungen,
die diesen Zustand bewirken. Das Ergebnis ist es, dass viele Arte
von Mehrprozessorsystemen von Zeit zu Zeit gesperrt werden, und wobei
die Intervention bzw. der Eingriff durch eine Bedienungsperson erforderlich
ist, um den Zustand zu beheben. Dies führt zu zahlreichen Frustrationen und
verringert die insgesamt die Verarbeitungseffizienz des Systems.
-
Auf
dem Gebiet werden somit verbesserte Mehrprozessorsysteme benötigt, die
effektiver intermittierende eingefrorene Zustände verhindern können, die
eine Folge von Lockstep-Sequenzen
zwischen zwei oder mehr Prozessoren sind. Auf dem Gebiet werden
speziell Systeme, Schaltungen und Verfahren benötigt, die in der Lage sind,
einen Lockstep-Zustand innerhalb eines verhältnismäßig kurzen Zeitraums zu beheben,
und zwar ohne dass ein Eingriff durch eine Bedienungsperson erforderlich
ist.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
gemäß dem Stand
der Technik inhärent bestehenden
Probleme in Bezug auf Lockstep-Sequenzen werden durch die vorliegende
Erfindung behoben. Die gegenständlichen
Hauptansprüche
1 und 17 definieren entsprechend einen ersten und einen zweiten
Aspekt der vorliegenden Erfindung. Weitere Ausführungsbeispiele der vorliegenden
Erfindung sind in den anhängigen
Unteransprüchen
ausgeführt. In
einem Ausführungsbeispiel
der vorliegenden Erfindung ist ein Steuerkreis zur Verwendung in
einem Verarbeitungssystem vorgesehen, das eine Mehrzahl von Prozessoren
aufweist, die über
einen ersten gemeinsamen Bus mit einem Hauptspeicher gekoppelt sind,
wobei der Steuerkreis eine Lockstep-Sequenz von Speicheranforderungen
pertubiert, die von den Prozessoren empfangen werden. Der Steuerkreis
umfasst einen Speicheranforderungsgenerator, der mit dem ersten
gemeinsamen Bus gekoppelt werden kann, um mindestens eine Speicheranforderung
zu erzeugen, die in der Lage ist, die Lockestep-Sequenz der Speicheranforderungen
zu beenden bzw. zu unterbrechen.
-
In
einem Ausführungsbeispiel
der vorliegenden Erfindung wird die mindestens eine Speicheranforderung
pseudozufällig
erzeugt. In einem weiteren Ausführungsbeispiel
der vorliegenden Erfindung wird eine Dauer der mindestens einen
Speicheranforderung pseudozufällig
erzeugt. In einem weiteren Ausführungsbeispiel
wird eine derartige Speicheranforderung oder die Dauer einer derartigen
Speicheranforderung auf andere Art und Weise als pseudozufällig erzeugt.
-
In
anderen Ausführungsbeispielen
der vorliegenden Erfindung, wobei das Verarbeitungssystem ferner
eine Mehrzahl von E/A-Vorrichtungen
umfasst, die über
einen zweiten gemeinsamen Bus mit dem Hauptspeicher gekoppelt sind,
kann der Speicheranforderungsgenerator mit dem zweiten gemeinsamen Bus
gekoppelt werden und erzeugt ferner mindestens eine Speicheranforderung
auf dem zweiten gemeinsamen Bus, die in der Lage ist, eine zweite Lockstep-Sequenz
von Speicheranforderungen zu unterbrechen bzw. zu beenden, die von
den E/A-Vorrichtungen empfangen werden.
-
In
wiederum anderen Ausführungsbeispielen der
vorliegenden Erfindung wird die mindestens eine Speicheranforderung
auf dem zweiten gemeinsamen Bus pseudozufällig erzeugt. In weiteren Ausführungsbeispielen
der vorliegenden Erfindung wird eine Dauer der mindestens einen
Speicheranforderung auf dem zweiten gemeinsamen Bus pseudozufällig erzeugt.
Auch in diesem Fall kann eine derartige Speicheranforderung oder
eine Dauer einer derartigen Speicheranforderung auch auf andere
Art und Weise als pseudozufällig
erzeugt werden.
-
In
alternativen Ausführungsbeispielen
der vorliegenden Erfindung werden die mindestens eine Speicheranforderung
auf dem ersten gemeinsamen Bus und die mindestens eine Speicheranforderung auf
dem zweiten gemeinsamen Bus gleichzeitig erzeugt. In weiteren Ausführungsbeispielen
der vorliegenden Erfindung werden die mindestens eine Speicheranforderung
auf dem ersten gemeinsamen Bus und die mindestens eine Speicheranforderung
auf dem zweiten gemeinsamen Bus zu unterschiedlichen Zeitpunkten
erzeugt.
-
In
den vorstehenden Ausführungen
wurden die Merkmale und technischen Vorteile der vorliegenden Erfindung
grob beschrieben, so dass der Fachmann auf dem Gebiet die folgende
genaue Beschreibung der vorliegenden Erfindung leichter verstehen kann.
Nachstehend beschrieben werden weitere Merkmale und Vorteile der
vorliegenden Erfindung, die den Gegenstand der Ansprüche der
Erfindung bilden. Die vorstehend aufgeführte Funktionalität kann zum
Beispiel in Software, Hardware, Firmware oder als eine andere geeignete
Kombination aus mindestens zwei dieser Möglichkeiten implementiert werden.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Nachstehend
wird auf die folgende Beschreibung in Bezug auf die beigefügten Zeichnungen
verwiesen, um ein umfassenderes Verständnis der vorliegenden Erfindung
und deren Vorteilen zu vermitteln, wobei übereinstimmende Objekte/Elemente
in den Zeichnungen mit den gleichen Bezugsziffern bezeichnet sind.
In den Zeichnungen zeigen:
-
1 ein Blockdiagramm eines
beispielhaften Standard-High-Volume
("SHV") Computersystems
mit acht Prozessoren mit. symmetrischem Multiprocessing ("SMP"), das ein Paar hoch
entwickelter Speichersteuereinheiten gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung einsetzt;
-
2 ein Blockdiagramm eines
beispielhaften Pseudozufalls-Speicheranforderungsgenerators gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung; und
-
3 ein Flussdiagramm, das
einen beispielhaften Betrieb einer hoch entwickelten Steuereinheit
("AMC" als englische Abkürzung von
Advanced Memory Controller) darstellt, mit einem Speicheranforderungsgenerator
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
Der
folgende Text beschreibt die vorliegende Erfindung zwar in einem
symmetrischen Multiprocessing-System, wobei hiermit jedoch deutlich
festgestellt wird, dass dies lediglich Veranschaulichungszwecken
dient. Der Fachmann auf dem Gebiet wird erkennen, dass die Grundsätze bzw.
die Prinzipien der vorliegenden Erfindung zur Beseitigung von Lockstep-Zuständen auch
leicht in eine Vielzahl von Mehrprozessorsystemen integriert werden
können, zu
denen unter anderem NUMA, RMC, CC-NUMA, MPP und andere ähnliche
Systeme zählen.
Zusätzlich
bedeutet bzw. bedeuten der Ausdruck "zugeordnet" und Abwandlungen bzw. Variationen dieses
Ausdrucks gemäß der Verwendung
hierin etwas aufweisen, in etwas vorhanden, etwas verbinden, enthalten, in
etwas enthalten sein, verbinden mit, koppelt mit, übertragbar
bzw. kommunizierbar mit, zusammenwirken mit, verschachteln, eine
Eigenschaft von etwas sein, mit etwas verbunden sein, haben, eine
bestimmte Eigenschaft haben oder dergleichen.
-
In
erstem Bezug auf die Abbildung aus 1 veranschaulicht
diese ein Blockdiagramm eines beispielhaften Standard-High-Volume ("SHV") Computersystems
(das allgemein mit der Bezugsziffer 100 bezeichnet ist)
mit acht Prozessoren mit symmetrischem Multiprocessing ("SMP"), das ein Paar hoch entwickelter
Speichersteuereinheiten 115 einsetzt, und zwar gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Das SMP-System 100 weist zwei
separate Prozessorbausteine auf. Ein erster Baustein umfasst die
Prozessoren 105a–105d (nachstehend "CPU1" bis "CPU4"), die hoch entwickelte Steuereinheit 115a (nachstehend "AMC1"), den Speicher 120a und
das Verzeichnis 125a. Ein zweiter Baustein umfasst die
Prozessoren 105e–105h (nachstehend "CPU5" bis "CPU8"), die hoch entwickelte Speichersteuereinheit 115 (nachstehend "AMC2"), den Speicher 120b und
das Verzeichnis 125b. Die beiden Bausteine sind über einen
gemeinsamen E/A-Bus 130 miteinander verbunden.
-
In
dem ersten Baustein sind CPU1 bis CPU4 über den CPU-Bus 110a mit
AMC1 verbunden. In dem zweiten Baustein sind CPU5 bis CPU8 über den CPU-Bus 110b mit
AMC2 gekoppelt. In einem Ausführungsbeispiel
der vorliegenden Erfindung handelt es sich bei dem CPU-Bus 110 um
einen geteilten Transaktionsbus bzw. Split-Transaction-Bus mit hoher
Bandbreite, der mit einem Port bzw. Anschluss der AMC gekoppelt
ist. Der zweite Port der AMC ist mit dem E/A-Bus 130 gekoppelt.
Der E/A-Bus 130 ist über
E/A-Brücken 135a–135b (nachstehend E/A-Brücke 1 bis
E/A-Brücke 4) mit
vier PCI-Teilsystemen 140a bis 140d (nachstehend "PCI-Teilsystem 1" bis "PCI-Teilsystem 4") gekoppelt. Die
AMC1 und AMC2 steuern entsprechend den Zugriff auf den Speicher 120a und
den Speicher 120b. In einem Ausführungsbeispiel der vorliegenden
Erfindung handelt es sich bei dem Speicher 120a und dem Speicher 120b um
DRAM-Anordnungen, bei denen die Kohärenz durch den Einsatz von
Protokollen und einem Verzeichnis aufrechterhalten werden.
-
Das
SMP-System 100 implementiert ein hybrides Cache-Kohärenz-Schema zur Verfolgung
der Datenbewegungen zwischen und unter verschiedenen CPU-Caches,
den Speichern 120a und 120b sowie CPU1 bis CPU8.
Die CPU1 bis CPU4 enthalten Cache-Speicher (nachstehend entsprechend "Cache 1 bis Cache
4"). Die CPU5 bis
CPU8 enthalten Cache-Speicher (nachstehend entsprechend "Cache 5 bis Cache
8"). Bei den CPU-Cache-Speichern
kann es sich um interne oder externe Cache-Speicher handeln. Die
CPU1 bis CPU4 können
ein Bus-Snooping-Protokoll auf dem CPU-Bus 110a verwenden, um
die Kohärenz
untereinander und mit dem Speicher 120a aufrechtzuerhalten.
Wenn ein Prozessor verfügbare
Daten benötigt,
die "schmutzig" bzw. "verfälscht" (d. h. modifiziert)
in dem Cache-Speicher eines anderen Prozessors gespeichert sind,
tauschen die Prozessoren die Daten aus, anstatt auf die Speicher 120a und 120b zuzugreifen,
wodurch die Kohärenz
zwischen den Prozessoren aufrechterhalten bleibt.
-
Die
Kohärenz
zwischen den Hauptspeichern 120a und 120b und
dem Cache 1 bis Cache 8 wird durch eine Kombination aus zentralisierter/verteilter Cache-Kohärenz auf
Verzeichnisbasis aufrechterhalten. In den Verzeichnissen 125a und 125b identifiziert
eine Speicherzeilen-Statustabelle ("MLST"), welche
Gruppe von Prozessoren (d. h. CPU1 bis CPU4 oder CPUS bis CPU8),
die über
einen gemeinsamen Bus (d. h. den CPU-Bus 110a oder den CPU-Bus 110b)
gekoppelt sind, Speicherzeilen in den ihnen zugeordneten Cache-Speichern
aufweisen (d. h. Cache 1 bis Cache 4 oder Cache 5 bis Cache 8).
Wenn ein Prozessor Daten anfordert, identifiziert die Statustabelle,
wo sich die aktuellste oder aktuelle Kopie der Daten befindet. In
vorteilhafter Weise erfordert dieses Verfahren der Aufrechterhaltung
der Cache-Kohärenz
keine Ausführung
zusätzlicher
Arbeiten, bis ein Prozessor die Daten benötigt, die sich in einem Cache
befinden, auf den über
Snooping nicht zugegriffen werden kann.
-
In
einem bevorzugten Ausführungsbeispiel der
vorliegenden Erfindung umfassen alle Bauteile mit Ausnahme von AMC1
und AMC2 des SMP-Systems 100 Artikelchips bzw. allgemein
verfügbare Chips,
wodurch die Systemkosten so gering wie möglich gehalten werden. Zum
Beispiel kann es sich bei CPU1 bis CPU8 um Intel Pentium Pro Prozessoren
handeln, wobei der E/A-Bus 130 den PCI E/A-Chipsatz umfassen
kann, und wobei die CPU-Busse 110a und 110b und
der E/A-Bus 130 unter Verwendung der Pentium Pro Bus-Topologie
implementiert werden können.
Eine detailliertere Erörterung
der Betriebsweise des SMP-Systems 100 und im
Besonderen von AMC1 und AMC2 ist in der Offenbarung von WO-A-9825208
vorgesehen, mit dem Titel "COMPUTER
SYSTEM INCLUDING MULTIPLE SNOOPED, MULTIPLE MASTERED SYSTEM BUSSES
AND METHOD FOR INTERCONNECTING SAID BUSSES."
-
Wie
dies bereits vorstehend im Text beschrieben worden ist können Lockstep-Sequenzen
in Mehrprozessorsystemen auftreten, wie etwa in einem SMP-System 100.
Sie können
als Folge eines Versuchs auftreten, bei dem mehrere Prozessoren gleichzeitig
versuchen auf den Speicher 120a oder 120b zuzugreifen.
Dies kann auch als Folge dessen auftreten, dass mehrere PCI-Teilsysteme gleichzeitig versuchen
auf den Speicher 120a oder den Speicher 120b zuzugreifen.
Zu guter Letzt kann eine Lockstep-Sequenz auch als Folge des gleichzeitigen
Versuchs einer Kombination aus Prozessor und PCI-Teilsystemen auftreten,
auf den Speicher 120a oder den Speicher 120b zuzugreifen.
-
Das
vorliegende Ausführungsbeispiel überwindet
derartige Probleme unter Verwendung einer Schaltkreisanordnung,
die pseudozufällige
Speicheranforderungen mit hoher Priorität an den CPU-Bus 110,
den E/A-Bus 130 oder an beide Busse vorsieht. Die pseudozufällige Speicheranforderung
wird in die Lockstep-Sequenzen
der Speicheranforderungen eingefügt,
welche die CPUs und/oder die PCI-Teilsysteme anhalten. In einem
Ausführungsbeispiel
der vorliegenden Erfindung werden die pseudozufälligen Speicheranforderungen
durch Busanforderungsgeneratoren erzeugt, die vorübergehend
entweder den CPU-Bus 10 oder den E/A-Bus 130 anhalten,
wodurch es verhindert wird, dass die CPUs oder das E/A-Teilsystem
Speicheranforderungen an den entsprechenden Port bzw. Anschluss
der AMC mit zwei Anschlüssen
sendet. Durch die Perturbation der Zeitsteuerung der CPU-Speicheranforderungen und/oder
der PCI-Teilsystem-Speicheranforderungen riecht der pseudozufällige Speicherzugriff
aus, um die Lockstep-Sequenz zu unterbrechen. Die pseudozufälligen Speicheranforderungen
mit hoher Priorität
sind von verhältnismäßig kurzer
und pseudozufälliger
Dauer und können
dazwischen ausreichende Abstände
aufweisen, so dass bei der normalen Verarbeitung nur minimaler Overhead-Aufwand entsteht,
wenn keine Lockstep-Sequenzen
auftreten. Das vorliegende Ausführungsbeispiel
wirkt sich nur minimal auf die Speicherbandbreite aus, da der Speicher
zwei Anschlüsse
aufweist und den Zugriff an einem ersten Anschluss ermöglicht,
wenn eine pseudozufällige
Speicheranforderung an einem zweiten Anschluss aktiv ist.
-
Die
Abbildung aus 2 veranschaulicht
ein Blockdiagramm einer ABC 115 mit einem beispielhaften
Pseudozufalls-Speicheranforderungsgenerator 200 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Zusätzlich
zu dem Pseudozufalls-Speicheranforderungsgenerator 200 umfasst die
AMC 115 ferner eine CPU-Busschnittstelle 205, eine
E/A-Busschnittstelle 210 und
eine Speichersteuerungslogik 215. Die Speichersteuerung 215 steuert eine
Speicherzeilen-Statustabelle
("MLST") in dem Verzeichnis 125 und
erzeugt/steuert Kohärenztransaktionen
und eine DRAM-Steuereinheit
mit zwei Anschlüssen
bzw. Ports. Die Speicheranforderungen werden von dem E/A-Bus 130 und
von dem CPU-Bus 110 empfangen und zu der entsprechenden
Zeile in dem Speicher 120 geleitet.
-
Der
Speicheranforderungsgenerator 200 erzeugt Speicheranforderungen
mit hoher Priorität
sowohl auf dem CPU-Bus 110 als
auch dem E/A-Bus 130. Gemäß dem veranschaulichten Ausführungsbeispiel
führen
die Speicheranforderungen mit hoher Priorität keine signifikanten Handlungen
an dem Speicher aus und dienen lediglich zur Perturbation einer
etwaigen Lockup-Sequenz,
die auftreten kann, wenn die Speicheranforderung mit hoher Priorität auf dem
CPU-Bus 110 und/oder dem E/A-Bus 130 übermittelt
wird. Diese Speicheranforderungen mit hoher Priorität werden
pseudozufällig
unter Verwendung eines linearen, rückgekoppelten Schieberegisters ("LFSR") 220 erzeugt.
Die Zeitsteuerung des LFSR 220 ist derart, dass eine Speicheranforderung
mit hoher Priorität
aperiodisch nur einmal während
mehreren hundert Buszyklen bis vielleicht mehreren tausend Buszyklen
an dem CPU-Bus 110 und/oder dem E/A-Bus 130 erzeugt
wird. Die Länge
jeder Speicheranforderung mit hoher Priorität stellt ebenfalls eine pseudozufällig kleine
Anzahl von Buszyklen (für
gewöhnlich
ein bis sechzehn Buszyklen) dar. Somit sind die durch den Speicheranforderungsgenerator 200 erzeugten
Speicheranforderungen mit hoher Priorität nur für einen kleinen Teil des Gesamtaufkommens des
Busverkehrs auf dem CPU-Bus 110 und dem E/A-Bus 130 verantwortlich.
-
Der
beispielhafte Speicheranforderungsgenerator 200 weist eine
Steuerungslogik auf, die Speicheranforderungen mit hoher Priorität nur an
einen Bus wie etwa nur an den CPU-Bus 110 oder an beide Busse
senden kann. In einem Ausführungsbeispiel werden
die Speicheranforderungen mit hoher Priorität gleichzeitig an beide Busse
gesendet. In einem anderen Ausführungsbeispiel
umfasst das LFSR 220 zwei separate lineare, rückgekoppelte
Schieberegister, die unabhängige
Speicheranforderungen mit hoher Priorität unter Verwendung verschiedener
Zeitsteuerungsalgorithmen an dem CPU-Bus 110 und dem E/A-Bus 130 erzeugen.
Da die Speicheranforderungen mit hoher Priorität einzeln bzw. unabhängig voneinander
und sehr selten erzeugt werden, treten sie selten gleichzeitig an
beiden Anschlüssen
des Speichers mit zwei Anschlüssen
auf, wodurch die Auswirkungen auf die Speicherbandbreite insgesamt so
gering wie möglich
gehalten werden.
-
Die
Abbildung aus 3 veranschaulicht schließlich ein
Flussdiagramm, das den beispielhaften Betrieb einer modernen Speichersteuereinheit ("AMC" als englische Abkürzung für Advanced
Memory Controller) 115 darstellt, die einen Speicheranforderungsgenerator 200 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung aufweist. Der beispielhafte Betrieb zeigt
die Erzeugung von Speicheranforderungen mit hoher Priorität an dem CPU-Bus 110.
Hiermit wird festgestellt, dass die folgende Beschreibung des beispielhaften
Ausführungsbeispiels
gleichermaßen
für die
Erzeugung von Speicheranforderungen mit hoher Priorität an dem E/A-Bus 130 gilt.
-
Die
Ausgangssignale des LFSR 220 umfassen im Wesentlichen START
Signale und STOP Signale, die es bewirken, dass der Speicheranforderungsgenerator 200 Speicheranforderungen
mit hoher Priorität
an dem CPU-Bus 110 einleitet oder unterbricht bzw. beendet.
In der einfachsten Form kann es sich bei der Ausgabe des LFSR 220 um
eine Reihe von Impulsen mit pseudozufälligem Abstand mit pseudozufälligen Impulsbreiten
handeln (die zum Beispiel erneut eine Breite von ein bis sechzehn
Taktzyklen aufweisen können),
wobei die ansteigende Flanke jedes Impulses das START Signal darstellt, während es
sich bei der abfallenden Flanke jedes Impulses um das STOP Signal
handelt.
-
Der
Speicheranforderungsgenerator 200 empfängt in dem Verfahrensschritt 301 das
START Signal von dem LFSR 220. Der Speicheranforderungsgenerator 200 leitet
danach in dem Verfahrensschritt 302 an dem CPU-Bus 110,
eine Speicheranforderung mit hoher Priorität ein, welche Buszyklen in Anspruch
nimmt und es verhindert, dass die CPUs weitere Speicheranforderungen
an den entsprechenden Port der AMC 115 mit zwei Anschlüssen senden.
-
Nach
einem vergleichsweise kurzen folgenden Zeitraum empfängt der
Speicheranforderungsgenerator 200 in dem Verfahrensschritt 303 das STOP
Signal von dem LFSR 220. Daraufhin unterbricht bzw. beendet
der Speicheranforderungsgenerator 200 in dem Verfahrensschritt 304 die
aktive Speicheranforderung mit hoher Priorität an dem CPU-Bus 110.
Dies gibt den CPU-Bus 110 frei und ermöglicht es, dass die CPUs das
Senden von Speicheranforderungen an den entsprechenden Anschluss
der AMC 115 mit zwei Anschlüssen wieder aufnehmen. Zu diesem
Zeitpunkt ist die alte Zeitsteuerungsbeziehung der durch die CPUs
erzeugten Speicheranforderungen, die ursprünglich zu der Lockstep-Sequenz
geführt
hat, unterbrochen, und es ist unwahrscheinlich, dass die neue Zeitsteuerungsbeziehung
eine weitere Lockstep-Sequenz einleitet. Der das START Signal und
das STOP Signal einleitende Maschinenzyklus wird solange wiederholt,
wie die AMC 115 betrieben wird.
-
Hiermit
wird festgestellt, dass die im Zusammenhang mit den vorstehend genannten
pseudozufällig
erzeugten Impulsen beschriebenen Vorteile der vorliegenden Erfindung
alternativ in jedem Ausführungsbeispiel
ausgeführt
werden können,
das in der Lage ist, eine Lockstep-Sequenz von Speicheranforderungen
zu perturbieren, die von einer Anzahl von Prozessoren empfangen
werden. Zum Beispiel kann ein geeigneter "perturbierender" Impuls (der hierin allgemein als eine "Speicheranforderung" bezeichnet wird)
erzeugt werden, um derartige Lockstep-Sequenzen zu unterbrechen bzw. zu beenden,
wie etwa als Reaktion auf, auf der Basis von, abgeleitet von oder
erzeugt gemäß jeder
geeigneten angewandten mathematischen Theorie, ob zufällig bzw.
wahlfrei erzeugt oder nicht, einschließlich statistischer Verfahren,
stochastischer Modelle, der Chaostheorie, der Standardabweichung,
der Wahrscheinlichkeitstheorie, Permutationen und Kombinationen,
der Häufigkeit
oder dergleichen.