-
ALLGEMEINER STAND DER TECHNIK
-
1. Gebiet der Erfindung
-
Ausführungsformen
der vorliegenden Erfindung beziehen sich allgemein auf Schaltkreise
und Verfahren zur Durchführung
von massiv parallelen Berechnungen. Insbesondere beziehen sich Ausführungsformen
der Erfindung auf eine integrierte Schaltkreisarchitektur und zugehörige Verfahren,
die angepasst sind, Echtzeit-Physik-Simulationen zu erzeugen.
-
2. Beschreibung des Standes
der Technik
-
Neue
Entwicklungen auf dem Gebiet von Computerspielen haben ein zunehmendes
Verlangen nach ausgeklügelten
Echtzeit-Physik-Simulationen hervorgerufen. Relativ simple physik-basierte
Simulationen gibt es in einigen herkömmlichen Zusammenhängen schon
seit vielen Jahren. Eine primäre kommerzielle
Motivation für
die Entwicklung komplexer, physik-basierter Echtzeit-Simulationen
sind zurzeit jedoch topaktuelle Computerspiele.
-
Jede
visuelle Anzeige von Objekten und/oder Umgebungen, die gemäß einem
definierten Satz von physikalischen Einschränkungen (egal ob solche Einschränkungen
realistisch sind oder der Phantasie entspringen) interagieren, mag
allgemein als „physik-basierte" Simulation betrachtet
werden. Animierten Umgebungen und Objekten werden für gewöhnlich physikalische
Eigenschaften (zum Beispiel Masse, Größe, Ort, Reibung, Bewegungsattribute
usw.) zugewiesen, um danach gemäß dem definierten
Satz von physikalischen Einschränkungen
visuell interagieren zu können.
Alle animierten Objekte werden visuell unter Verwendung eines periodisch aktualisierten
Satzes von Daten, die von den zugewiesenen physikalischen Eigenschaften
und dem definierten Satz physikalischer Einschränkungen abgeleitet sind, von
einem Hostsystem angezeigt. Dieser Satz von Daten wird allgemein
im Folgenden als „Physikdaten" bezeichnet.
-
Computerspiele
enthalten herkömmlicherweise
in den Spielanwendungen ein gewisses Maß an physik-basierten Simulationsfähigkeiten.
Solche Simulationen basieren auf Software und werden mittels spezialisierter
Physik- Middleware
implementiert, die auf der CPU (zentralen Verarbeitungseinheit)
eines Hostsystems, wie zum Beispiel eines Pentium®, läuft. „Hostsysteme" schließen zum
Beispiel Personalcomputer-(PCs) und Konsolen-Spielsysteme ein.
-
Leider
sind Maßstab
und Leistung herkömmlicher
Physik-Simulationen aufgrund des Altzweck-Designs herkömmlicher
CPUs deutlich begrenzt. Angesichts einer Vielzahl anderer Verarbeitungsanforderungen
mangelt es herkömmlichen CPUs
an der Verarbeitungszeit, die zur Ausführung der komplexen Algorithmen
erforderlich ist, die zur Lösung
der mathematischen und logischen Operationen, die einer Physik-Simulation
zugrunde liegen, benötigt
werden. Das heißt,
eine physik-basierte Simulation wird durch Lösung eines Satzes komplexer mathematischer
und logischer Probleme erzeugt, die sich aus den Physikdaten ergeben.
Angesichts der typischen Menge an Physikdaten und der Komplexität und Anzahl
mathematischer und logischer Operationen, die mit einem "Physikproblem" verbunden sind,
ist eine effiziente Lösung
nicht einfach.
-
Der
allgemeine Mangel an verfügbarer CPU-Verarbeitungszeit
wird durch Hardware-Einschränkungen
verschärft,
die den Allzweck-Schaltkreisen eigen sind, aus denen sich herkömmliche CPUs
zusammensetzen. Solche Hardware-Einschränkungen
beinhalten eine ungeeignete Anzahl mathematischer/logischer Ausführungseinheiten
und Datenregister, einen Mangel an parallelen Ausführungsfähigkeiten
für mathematische/logische
Operationen und eine relativ begrenzte Bandbreite zu einem externen
Speicher. Einfach ausgedrückt,
die Architektur und Betriebsfähigkeiten
herkömmlicher CPUs
sind mit den Berechnungs- und Datenübertragungsanforderungen komplexer
physik-basierter Simulationen nicht gut korreliert. Dies gilt trotz
der Schnelligkeit und der superskalaren Eigenschaft vieler herkömmlicher
CPUs. Die zahlreichen Logikschaltkreise und vorausschauenden Fähigkeiten
herkömmlicher
CPUs können
die Nachteile einer Architektur nicht beheben, die durch eine relativ
begrenzte Anzahl an Ausführungseinheiten
und Datenregistern, einen Mangel an Parallelismus und eine ungeeignete Speicherbandbreite
gekennzeichnet ist.
-
Im
Gegensatz zu herkömmlichen
CPUs zeichnen sich so genannte Supercomputer, wie die von Cray® hergestellten
Computer, durch massiven Parallelismus aus. Während auf herkömmlichen CPUS
die Programme allgemein unter Einsatz von SISD-Operationen (SISD
= Single Instruction Single Data) ausgeführt werden, beinhalten Supercomputer ferner
für gewöhnlich eine
Anzahl von Vektor-Prozessoren, die SIMD-Operationen (SIMD = Single
Instruction- Multiple
Data) ausführen.
Die Vorteile von massiv parallelen Ausführungsfähigkeiten sind jedoch im Zusammenhang
mit Supercomputern mit den Nachteilen einer enormen Größe und hoher
Kosten verbunden. Praktische kommerzielle Überlegungen schließen den
Weg in Richtung physikalischer Implementierung herkömmlicher
Supercomputer weitgehend von vornherein aus.
-
Somit
konnte bisher das Problem, ausgeklügelte, physik-basierte Echtzeit-Simulationen
in Anwendungen aufzunehmen, die auf für den Verbraucher verfügbaren Hostsystemen
laufen, nicht gelöst werden.
Softwarebasierte Ansätze
zur Lösung
aller mit Ausnahme der einfachsten Physikprobleme haben sich als
ungeeignet erwiesen. Demzufolge wurde in mehreren verwandten und
gemeinsam übertragenen
US-Patentanmeldungen (Seriennummer 10/715,459; 10/715,370; und 10/715,440,
alle eingereicht am 19. November 2003), eine Hardware-basierte Lösung zur
Erzeugung und Aufnahme von physikbasierten Echtzeit-Simulationen
vorgeschlagen. Der Gegenstand dieser Anmeldungen wird durch Referenz
in die vorliegende Patentanmeldung eingefügt.
-
Wie
in den oben erwähnten
Anmeldungen beschrieben, beschränkt
die Frame-Rate der Hostsystem-Anzeige notwendigerweise die Größe und Komplexität der Physikprobleme,
die der physik-basierten Simulation zugrunde liegen, in Bezug auf
die Geschwindigkeit, mit der die Physikprobleme gelöst werden
können.
Wenn die Frame-Rate ausreicht, um eine Simulation in Echtzeit visuell
darzustellen, liegt somit bei der Konstruktion der Schwerpunkt auf
einer Erhöhung
der Datenverarbeitungsgeschwindigkeit. Die Datenverarbeitungsgeschwindigkeit
wird durch eine Kombination aus Datenübertragungsfähigkeit und
Geschwindigkeit, mit der die mathematischen/logischen Operationen
ausgeführt
werden, bestimmt. Die Geschwindigkeit, mit der die mathematischen/logischen
Operationen ausgeführt
werden, mag dadurch erhöht
werden, dass die Operationen schneller sequentiell ausgeführt werden,
und/oder dadurch, dass die Operationen in Teilsätze unterteilt werden und dass
ausgewählte
Teilsätze
anschließend
parallel ausgeführt
werden. Dementsprechend definieren Datenbandbreite-Überlegungen
und Ausführungsgeschwindigkeits-Anforderungen
zum großen
Teil die Architektur eines Systems, das angepasst ist, physik-basierte
Simulationen in Echtzeit zu erzeugen. Auch die Art der Physikdaten,
die verarbeitet werden, trägt
zur Definition einer effizienten Systemarchitektur bei.
-
Mehrere
beispielhafte architektonische Ansätze zur Bereitstellung der
von ausgeklügelten
Echtzeit-Physik-Simulationen benötigten
hohen Datenbandbreite und hohen Ausführungsgeschwindigkeit sind
in einer verwandten und gemeinsam übertragenen US-Patentanmeldung,
Seriennummer 10/839,155, eingereicht am 6. Mai 2004, offenbart, deren
Gegenstand durch Referenz in die vorliegende Patentanmeldung eingefügt ist.
Einer dieser Ansätze ist
beispielhaft in 1 der Zeichnungen dargestellt. Insbesondere
zeigt 1 eine Physik-Verarbeitungseinheit
(PPU) 100, die angepasst ist, eine großen Anzahl paralleler Berechnungen
für eine
physik-basierte Simulation auszuführen.
-
Die
PPU 100 führt
für gewöhnlich physik-basierte
Berechnungen im Rahmen einer Nebenanwendung aus, die an eine auf
einem Hostsystem parallel laufende Hauptanwendung gekoppelt ist.
Zum Beispiel mag die Hauptanwendung ein interaktives Spielprogramm
aufweisen, welches einen „Weltzustand" (zum Beispiel Positionen,
Einschränkungen usw.)
für eine
Kollektion visueller Objekte definiert. Die Hauptanwendung koordiniert
die Benutzereingabe/-ausgabe (I/O) für das Spielprogramm und führt fortlaufende
Aktualisierungen des Weltzustands durch. Die Hauptanwendung sendet
ferner Daten an die Nebenanwendung auf Basis der Benutzereingaben,
und die Nebenanwendung führt
Physik-basierte Berechnungen durch, um den Weltzustand zu modifizieren.
Während
die Nebenanwendung den Weltzustand modifiziert, sendet sie periodisch
und asynchron den modifizierten Weltzustand an die Hauptanwendung.
-
Die
verschiedenen Interaktionen zwischen den Neben- und Hauptanwendungen
werden für
gewöhnlich
dadurch implementiert, dass Daten in einen und aus einem Hauptspeicher,
der sich im Hostsystem oder in dessen Nähe befindet, und in verschiedene
und aus verschiedenen Speichern in der PPU-Architektur gelesen und geschrieben
werden. Somit ist richtiges Speichermanagement ein wichtiger Aspekt dieses
Ansatzes zur Erzeugung physik-basierter Simulationen.
-
Durch
Aufteilen der Arbeitslast auf die Haupt- und Nebenanwendung, so
dass die Nebenanwendung parallel und asynchron zur Hauptanwendung läuft, wird
die Implementierung und Programmierung der PPU sowie beider Anwendungen
deutlich vereinfacht. Durch diese Aufteilung kann zum Beispiel die Hauptanwendung
Aktualisierungen des Weltzustands bei Gelegenheit prüfen, ohne
sich der Zeitsteuerung der Nebenanwendung anpassen zu müssen.
-
Aus
der Perspektive der Systemebene betrachtet, kann die PPU 100 auf
verschiedene Weise implementiert werden. Zum Beispiel könnte sie
als Co-Prozessor-Chip
implementiert werden, der an ein Hostsystem wie eine herkömmliche
CPU angeschlossen ist. Oder sie könnte ebenso als Teil eines Prozessorkerns
in einem Doppelkernprozessor implementiert werden. Für einen
Fachmann sind tatsächlich
verschiedene Möglichkeiten
offensichtlich, wie die Funktionalität der PPU 100 in Hardware
implementiert werden kann. Überdies
wird der Fachmann auch erkennen, dass Hardware-/Software-Unterscheidungen
relativ willkürlich
sein können,
da Hardware-Fähigkeiten
oft in Software implementiert werden können, und umgekehrt.
-
Die
in 1 dargestellte PPU weist einen externen Speicher 102 hoher
Bandbreite, eine Datenverschiebungs-Engine (DME) 101, eine PPU-Steuer-Engine
(PCE) 103 und eine Mehrzahl von Vektorverarbeitungs-Engines
(VPEs) 105 auf. Jede der VPEs 105 weist eine Mehrzahl
von Vektorverarbeitungseinheiten (VPUs) 107 auf, die jeweils einen
primären
Speicher (L1) und eine VPU-Steuereinheit (VCU) 106 mit
einem sekundären
Speicher (L2) aufweisen. Die DME 101 stellt einen Datenübertragungspfad
zwischen dem externen Speicher 102 (und/oder einem Hostsystem 108)
und einer VPE 105 bereit. Das PCE 103 angepasst
ist, die Gesamtsteuerung der PPU und/oder eines Datenkommunikationsprozesses
zwischen der PPU 100 und dem Hostsystem 108 zentral
durchzuführen.
Das PCE 103 weist für
gewöhnlich
eine programmierbare PPU-Steuereinheit (PCU) 104 zum Speichern
und Ausführen
der PCE-Steuerungs- und Kommunikationsprogrammierung. Zum Beispiel
mag die PCU 104 einen MIPS64 5 Kf Prozessorkern von MIPS
Technologies Inc. aufweisen.
-
Jede
der VPUs 107 kann allgemein als eine „Datenverarbeitungseinheit" betrachtet werden,
die eine Gruppierung niedrigerer Ebene von mathematischen/logischen
Ausführungseinheiten
ist, wie zum Beispiel Gleitkomma-Prozessoren und/oder Skalar-Prozessoren.
Der primäre
Speicher L1 jeder VPU 107 wird allgemein zum Speichern
von Anweisungen und Daten verwendet, um verschiedene mathematische/logische
Operationen auszuführen.
Die Anweisungen und Daten werden für gewöhnlich unter Steuerung einer
entsprechenden der VCUs 106 an jede VPU 107 übertragen.
Jede VCU 106 implementiert einen oder mehrere funktionelle
Aspekte der Gesamt-Speichersteuerfunktion
der PPU. Zum Beispiel mag jede VCU 106 Befehle an die DME 101 ausgeben,
um für
verschiedene VPUs 107 Daten aus dem PPU-Speicher 102 abzurufen.
-
Wie
in Patentanmeldung Seriennummer 10/839,155 beschrieben, mag die
PPU, die in 1 dargestellt ist, jede beliebige
Anzahl von VPEs 105 enthalten, und jede VPE 105 mag
jede beliebige Anzahl von VPUs 107 enthalten. Die gesamte
Rechenfähigkeit
der PPU 100 ist jedoch nicht einfach durch die Anzahl der
VPEs und VPUs begrenzt. Zum Beispiel mag ungeachtet der Anzahl von
VPEs und VPUs die Arbeitsmenge, die jede VPE ausführen kann,
durch die Speicherbus-Bandbreite und die Datenabhängigkeiten
begrenzt sein. Außerdem
mag die VCU innerhalb jeder VPE mit zunehmender Anzahl an VPUs pro
VPE durch eine große
Anzahl von Speicherzugriffsbefehlen, die sie zwischen den VPUs und dem
externen Speicher 102 und/oder der PCU 104 auszuführen hat, überlastet
werden. Dies mag zur Folge haben, dass die VPUs 106 zum
Schluss nur noch leerlaufend auf Antwort von ihrer entsprechenden
VCU warten, wodurch wertvolle Rechenressourcen verschwendet werden.
-
Zusammenfassend
ist zu sagen, dass zwar durch Erhöhen der Komplexität einer
PPU-Architektur eine potentielle Erhöhung einer PPU-Leistung möglich sein
mag, dass aber andere Faktoren, wie zum Beispiel Ressourcenzuordnung
und Zeitsteuerungsprobleme, in gleichem Maße die Leistung in der komplexeren
Architektur beeinträchtigen
mögen.
-
KURZBESCHREIBUNG DER ERFINDUNG
-
Gemäß einer
erfindungsgemäßen Ausführungsform
weist ein integrierter Schaltkreis einen externen Speicher, einen
Steuerprozessor und eine Mehrzahl von parallel geschaltete VPEs
auf. Jede der VPEs weist vorzugsweise eine Mehrzahl von VPUs, eine
Mehrzahl von VCUs, eine DMA-Steuerung und eine VPE-Nachrichteneinheit
(VMU) auf, die einen Datenübertragungspfad
zwischen der Mehrzahl von VPUs, der Mehrzahl von VCUs, der DMA-Steuerung
und dem Steuerprozessor bereitstellt. Der integrierte Schaltkreis
weist ferner eine externe Speichereinheit (EMU) auf, die einen Datenübertragungspfad
zwischen dem externen Speicher, dem Steuerprozessor und der Mehrzahl
von VPEs bereitstellt.
-
Gemäß einer
weiteren erfindungsgemäßen Ausführungsform
weist eine PPU einen externen Speicher, der zumindest Physikdaten
speichert, eine PCE, die eine programmierbare PCU aufweist, und eine
Mehrzahl von parallel geschalteten VPEs auf. Jede der VPEs weist
eine Mehrzahl von VPUs, jeweils aufweisend eine Gruppierung von
mathematischen/logischen Einheiten, die angepasst sind, Berechnungen
an Physikdaten für
eine Physik-Simulation durchzuführen,
eine Mehrzahl von VCUs, ein DMA-Subsystem, aufweisend eine DMA-Steuerung, und
eine VMU auf, die angepasst ist, Nachrichten zwischen der Mehrzahl
von VPUs, der Mehrzahl von VCUs, dem DMA-Subsystem und der PCE zu übertragen.
Die PPU weist ferner eine EMU auf, die einen Datenübertragungspfad
zwischen dem externen Speicher, der PCE und der Mehrzahl von VPEs
bereitstellt.
-
Gemäß einer
weiteren erfindungsgemäßen Ausführungsform
wird ein Verfahren zum Betreiben eines integrierten Schaltkreises
bereitgestellt. Der integrierte Schaltkreis weist einen externen
Speicher, eine Mehrzahl von parallel geschalteten VPEs, welche jeweils
eine Mehrzahl von VPUs, eine Mehrzahl von VCUs und eine VMU aufweisen,
sowie eine EMU auf, die einen Datenübertragungspfad zwischen dem externen
Speicher und der Mehrzahl von VPEs bereitstellt. Das Verfahren weist
das Übertragen
einer Kommunikationsnachricht von einer VPU in einer ersten VPE
von der Mehrzahl von VPEs an eine virtuelle Kommunikationsnachrichten-Warteschlange
in der VMU der ersten VPE und das Übertragen der Kommunikationsnachricht
aus der virtuellen Kommunikationsnachrichten-Warteschlange an eine Zielort-Kommunikationsnachrichten-Empfangs-FIFO-Warteschlange
in einer VPU oder einer VCU der ersten VPE auf.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Im
Folgenden wird die Erfindung unter Bezugnahme auf mehrere in den
beigefügten
Zeichnungen dargestellte Ausführungsformen
beschrieben. In allen Zeichnungen bezeichnen gleiche Bezugsnummern
gleiche beispielhafte Elemente, Komponenten oder Schritte.
-
In
den Zeichnungen zeigt:
-
1 ein
Blockdiagramm, das eine herkömmliche
Physik-Verarbeitungseinheit
(PPU) darstellt;
-
2 ein
Blockdiagramm, das eine PPU gemäß einer
erfindungsgemäßen Ausführungsform darstellt;
-
3 ein
Blockdiagramm einer VPE gemäß einer
erfindungsgemäßen Ausführungsform;
-
4 eine
Darstellung einer Nachricht in der VPE, die in 3 gezeigt
ist;
-
5 ein
Blockdiagramm einer Ablaufsteuerung (scheduler) für ein Nachrichten-Warteschlangensystem
in der VPE, die in 3 gezeigt ist;
-
6 ein
Ablaufdiagramm, die eine typische Abfolge von Operationen zeigt,
die von der VPE 205, die in 3 gezeigt
ist, durchgeführt
werden, wenn eine Berechnung an Daten vorgenommen wird, die über eine
externe Speichereinheit empfangen werden;
-
7A verschiedene
alternative Ablaufsteuerungs- und Warteschlangenkonfigurationen,
die in der VPE, die in 3 gezeigt ist, verwendet werden könnten;
-
7B verschiedene
alternative Ablaufsteuerungs- und Warteschlangenkonfigurationen,
die in der VPE, die in 3 gezeigt ist, verwendet werden könnten;
-
8 ein
Blockdiagramm einer VPE gemäß einer
weiteren erfindungsgemäßen Ausführungsform;
-
9 ein
Ablaufdiagramm eines Verfahrens zur Übertragung einer Kommunikationsnachricht
zwischen einer VPU oder VCU in der VPE, die in 8 gezeigt
ist, gemäß einer
erfindungsgemäßen Ausführungsform;
und
-
10 ein
Ablaufdiagramm eines Verfahrens zur Durchführung einer DMA-Operation in
einer VPE aufgrund einer DMA-Anforderungsnachricht gemäß einer
erfindungsgemäßen Ausführungsform.
-
BESCHREIBUNG DER BEISPIELHAFTEN
AUSFÜHRUNGSFORMEN
-
Beispielhafte
Ausführungsformen
der Erfindung sind im Folgenden unter Bezugnahme auf die entsprechenden
Zeichnungen beschrieben. Diese Ausführungsformen werden als Lehrbeispiele
gezeigt. Der tatsächliche
Umfang der Erfindung ist mittels der beigefügten Ansprüche festgelegt.
-
Allgemein
gesprochen dienen die erfindungsgemäßen Ausführungsformen dem Zweck, die im
Zusammenhang mit parallelem Rechnen auftauchenden Probleme zu behandeln.
Zum Beispiel stellen mehrere erfindungsgemäße Ausführungsformen Mechanismen zum
Managen großer
Anzahlen gleichzeitiger Speichertransaktionen zwischen einer Sammlung
parallel arbeitender Datenverarbeitungseinheiten und einem externen
Speicher bereit. Andere erfindungsgemäße Ausführungsformen wiederum stellen
ein effizientes Kommunikationsmittel zwischen den Datenverarbeitungseinheiten
bereit.
-
Erfindungsgemäße Ausführungsformen
bemerken einen Bedarf, dass den verschiedenen Aspekte bezüglich Konstruktion,
Implementierung, Leistung und Programmierung auf einer hochspezialisierten
Hardware-Plattform gegeneinander aufzuwiegen sind. Beispielsweise
nimmt mit steigender Anzahl parallel geschalteter Komponenten, wie
zum Beispiel Vektorverarbeitungseinheiten, in der Plattform auch der
Netzwerkbetrieb zu, der erforderlich ist, um die Operation der Komponenten
und Datenübertragungen
zwischen den Komponenten zu koordinieren. Diese Anforderung an den
Netzwerkbetrieb macht wiederum die Programmierung komplexer. Des
Weiteren kann auch die Verwendung von VLIWs (Very Long Instruction
Words), Multi-Threading-Datenübertragungen
und Multi-Thread-Ausführung die
Komplexität
der Programmierung erhöhen. Überdies
mögen mit
dem Anstieg in der Anzahl von Komponenten die hinzugefügten Komponenten
eine Konkurrenzsituation bei den Ressourcen (zum Beispiel dem Bus)
verursachen. Selbst wenn die zusätzlichen
Komponenten den Gesamtdurchsatz der Hardware-Plattform erhöhen, könnte die
Antwortzeit (zum Beispiel die Speicherlatenz) für individuelle Komponenten
vermindert werden. Dementsprechend sind die Ausführungsformen der Erfindung
angepasst, einen Ausgleich zwischen diesen verschiedenen Trade-Offs
zu schaffen.
-
Im
Folgenden wird die Erfindung im Zusammenhang mit einer spezialisierten
Hardware-Plattform beschrieben, die angepasst ist, mathematische/logische
Operationen für
eine Echtzeit-Physik-Simulation durchzuführen. Die erfinderischen Konzepte
finden einfaches Anwenden auch in zahlreichen anderen Zusammenhängen. Zum
Beispiel sind verschiedene beschriebene Datenübertragungs-, Ablaufsteuerungs-
und Kommunikationsmechanismen einfach in anderen parallelen Rechenzusammenhängen, wie
in Grafikverarbeitung und Bildverarbeitung, anwendbar, um nur einige
zu nennen.
-
2 ist
ein Blockdiagramm einer PPU 200, die angepasst ist, eine
physik-basierte Simulation gemäß einer
beispielhaften erfindungsgemäßen Ausführungsform
durchzuführen.
Die PPU 200 weist eine externe Speichereinheit (EMU) 201,
eine PCE 203 und eine Mehrzahl von VPEs 205 auf.
Jede der VPEs 205 weist eine Mehrzahl von VCUs 206,
eine Mehrzahl von VPUs 207 und eine VPE-Nachrichteneinheit (VMU) 209 auf.
Die PCE 203 weist eine PCU 204 auf. Zu Darstellungszwecken
beinhaltet die PPU 200 acht (8) VPEs 205, die
jeweils zwei (2) VCUs 206 und acht (8) VPUs 207 beinhalten.
-
Die
EMU 201 ist zwischen die PCE 203, die VPEs 205,
ein Hostsystem 208 und einen externen Speicher 202 geschaltet.
Die EMU 201 weist für
gewöhnlich
einen Schalter auf, der angepasst ist, die Datenübertragungen zwischen den verschiedenen angeschlossenen
Komponenten zu ermöglichen. Zum
Beispiel erlaubt die EMU 201 Datenübertragungen von einer VPE
an eine andere VPE, zwischen der PCE 203 und den VPEs 205 sowie
zwischen dem externen Speicher 202 und den VPEs 205.
-
Die
EMU 201 kann auf verschiedene Weise implementiert werden.
Zum Beispiel weist die EMU 201 in einigen Ausführungsformen
einen Crossbarschalter auf. In anderen Ausführungsformen weist die EMU 201 einen
Multiplexer auf. In wiederum anderen Ausführungsformen weist die EMU 201 einen Crossbarschalter
auf, der durch eine Mehrzahl von Multiplexer implementiert ist.
Alle Daten, die durch eine EMU an eine VPE übertragen werden, sind in dieser
Beschreibung als EMU-Daten bezeichnet. Zusätzlich wird jeder externe Speicher,
der durch eine EMU an eine PPU angeschlossen ist, in dieser Beschreibung
als EMU-Speicher bezeichnet.
-
Der
Begriff DMA-Operation ("Direct
Memory Access" – Direktspeicherzugriff)
oder DMA-Transaktion bezeichnet jede Datenzugriffsoperation, an
der eine VPE, aber keine PCE 203 oder ein Prozessor im Hostsystem 208 beteiligt
ist. Zum Beispiel wird eine Lese- oder Schreiboperation zwischen
dem externen Speicher 202 und einer VPE oder zwischen zwei VPEs
als DMA-Operation bezeichnet. DMA-Operationen werden für gewöhnlich von
VCUs 206, VPUs 207 oder dem Hostsystem 208 eingeleitet.
Um eine DMA-Operation einzuleiten, sendet ein Initiator (zum Beispiel
eine VCU oder eine VPU) im Allgemeinen einen DMA-Befehl an eine
DMA-Steuerung (nicht dargestellt) über eine Folge von Warteschlangen.
Die DMA-Steuerung kommuniziert daraufhin auf der Grundlage des DMA-Befehls
mit verschiedenen Speichern in den VPEs 205 und dem externen
Speicher 202 oder dem Hostsystem 208, um Datenübertragungen
zwischen den verschiedenen Speichern zu steuern. Jede der VPEs 205 enthält für gewöhnlich ihre
eigene DMA-Steuerung, und Speicherübertragungen finden im Allgemeinen
innerhalb einer VPE oder über
die EMU 201 statt.
-
Jede
der VPEs 205 beinhaltet eine VPE-Nachrichteneinheit (VMU),
die angepasst ist, DMA-Übertragungen
zu und von den VCUs 206 und VPUs 207 zu ermöglichen.
Jede VMU weist für
gewöhnlich
eine Mehrzahl von DMA-Anforderungswarteschlangen
auf, die zum Speichern von DMA-Befehlen dienen, und eine Ablaufsteuerung,
die angepasst ist, die DMA-Befehle von den DMA-Anforderungswarteschlangen zu empfangen
und die DMA-Befehle an verschiedene Speicher in den VPEs 205 und/oder an
den externen Speicher 202 zu senden. Jede VMU enthält ferner
für gewöhnlich eine
Mehrzahl von Warteschlangen für
Kommunikationsnachrichten, die zum Senden von Kommunikationsnachrichten
zwischen den VCUs 206 und den VPUs 207 dienen.
-
Jede
der VPEs 205 richtet in der PPU 200 eine unabhängige „Rechenbahn" ein. Mit anderen Worten,
unabhängige
parallele Berechnungen und Datenübertragungen
können über jede
der VPEs 205 durchgeführt
werden. Die PPU 200 weist insgesamt acht (8) Rechenbahnen
auf.
-
Speicheranforderungen
und andere Datenübertragungen,
die durch die VPEs 205 hindurch laufen, werden im Allgemeinen über eine
Reihe von Warteschlangen und andere Hardware, die jeder VPE zugeordnet
ist, gemanagt. Zum Beispiel ist 3 ein Blockdiagram,
das eine beispielhafte VPE 205 zeigt, die eine Mehrzahl
von Warteschlangen und die zugehörige
Hardware zum Managen von Speicheranforderungen und anderen Datenübertragungen
enthält.
Zusammengenommen können
die Warteschlangen und die zugehörige
Hardware als eine Ausführungsform
einer VMU betrachtet werden, wie zum Beispiel jene, die in 2 dargestellt
sind.
-
In
der Ausführungsform
von 3 weist die VPE 205 VPUs 207 und
VCUs 206 auf. Jede VPU 207 weist einen Anweisungsspeicher
und einen Datenspeicher auf, die zusammen als lokale Speicher 501 dargestellt
sind. Vorzugsweise sind die VPUs 207 als Paare organisiert,
die sich den gleichen Anweisungsspeicher teilen. Jede VCU 207 weist
ebenfalls einen Datenspeicher und einen Anweisungsspeicher auf,
die gemeinsam als lokale Speicher 502 dargestellt sind.
-
Die
VPE 205 weist ferner eine DMA-Steuerung 503 auf,
die angepasst ist, Datenübertragungen zwischen
jedem der Speicher in der VPE 205 und den externen Speichern,
wie dem externen Speicher 202, zu ermöglichen. Die VPE 205 weist
ferner einen Zwischenspeicher (ISM) 505 auf, der angepasst
ist, verglichen mit den lokalen Speichern 501 und 502 relativ
große
Mengen von Daten zu speichern. Hinsichtlich seiner Struktur und
Funktion innerhalb einer traditionellen Hierarchie kann der ISM 505 als
ein Speicher der Ebene 2 gedacht werden, und die lokalen Speicher 501 und 502 können als
Speicher der Ebene 1 gedacht werden. Die DMA-Steuerung 201 ruft
im Allgemeinen Blöcke
(chunks) von EMU-Daten über
die EMU 201 ab und speichert die EMU-Daten im ISM 505.
Die EMU-Daten im ISM 505 werden dann an die VPUs 207 und/oder
die VCUs 206 übertragen,
um verschiedene Berechnungen durchzuführen, und alle EMU-Daten, die von den
VPUs 207 oder den VCUs 206 modifiziert wurden,
werden generell in den ISM 505 zurückkopiert, bevor sie über die
EMU 201 in einen Speicher, wie den externen Speicher 202,
zurück übertragen
werden.
-
Des
Weiteren weist die VPE 205 eine VPU-Nachrichten-Warteschlange 508,
eine VPU-Ablaufsteuerung 509, eine VCU-Nachrichten-Warteschlange 507 und
eine VCU-Ablaufsteuerung 506 auf. Die VPU-Nachrichten-Warteschlange 508 überträgt Nachrichten
von den VPUs 207 über
die Ablaufsteuerung 509 an die VCUs 206. Desgleichen überträgt die VCU-Nachrichten-Warteschlange 507 Nachrichten
von den VCUs 206 über
die Ablaufsteuerung 506 an die VPUs 207. Der Begriff „Nachricht" bedeutet hier lediglich
eine Einheit von Daten, vorzugsweise 128 Bytes. Eine Nachricht kann
zum Beispiel aus Anweisungen, Zeigern ("Pointers"), Adressen oder Operanden oder Ergebnissen
einer Berechnung aufweisen.
-
4 zeigt
ein einfaches Beispiel einer Nachricht, die von einer VCU an eine
VPU gesendet werden könnte.
Bezugnehmend auf 4 beinhaltet eine Nachricht
in der VPU-Nachrichten-Warteschlange 508 von 3 einen
Datentyp, einen Zeiger auf eine Ausgangsadresse in den lokalen Speichern 501, entsprechende
Größen für erste
und zweite Eingangsdaten und Zeiger auf die ersten und zweiten Eingangsdaten
im ISM 505. Wenn die VPU die Nachricht empfängt, kann
die VPU die Nachrichtendaten zur Erstellung eines DMA-Befehls benutzen,
um die ersten und zweiten Eingangsdaten von dem ISM 505 an
die Ausgangsadresse in den lokalen Speichern 501 zu übertragen.
-
Obwohl
die VPE 205 von 3 eine Warteschlange und Ablaufsteuerung
für die
VPUs 207 und eine Warteschlange und Ablaufsteuerung für die VCUs 206 enthält, kann
die Anzahl und Anordnung der Warteschlangen und Ablaufsteuerungen
variieren. Zum Beispiel mag jede VPU 207 oder VCU 206 ihre
eigene Warteschlange und Ablaufsteuerung oder sogar viele Warteschlangen
und Ablaufsteuerungen haben. Darüber
hinaus mögen
Nachrichten von mehr als einer Warteschlange in jede Ablaufsteuerung
eingegeben werden.
-
5 zeigt
eine beispielhafte Ausführungsform
der Ablaufsteuerung 506, die in 3 dargestellt
ist. Die Ausführungsform
von 5 wird vorzugsweise in Hardware implementiert,
um das Weiterleiten von Nachrichten von den VCUs an die VPUs zu
beschleunigen. Sie könnte
aber auch als Software implementiert sein.
-
Unter
Bezugnahme auf 5 weist die Ablaufsteuerung 506 einen
Logikschaltkreis 702 und eine Mehrzahl von Warteschlangen 703 auf,
die zu den VPUs 207 korrespondieren. Die Ablaufsteuerung 506 empfängt Nachrichten
von der VCU-Nachrichtenwarteschlange 507 und setzt die
Nachrichten auf Basis von Logik, die im Logikschaltkreis 702 implementiert
ist, in die Warteschlangen 703 ein. Danach werden die Nachrichten
in den Warteschlangen 703 an die VPUs 207 geschickt.
-
6 ist
ein Ablaufdiagramm, das eine typische Operationsfolge zeigt, die
die VPE 205 von 3 durchführt, wenn an EMU-Daten, die über die EMU 201 empfangen
wurden, eine Berechnung durchgeführt
wird. Beispielhafte Verfahrensschritte, die in 6 dargestellt
sind, sind im Folgenden in Klammern (XXX) angegeben, um sie von
beispielhaften Systemelementen, wie jenen, die in 1 bis 5 dargestellt
sind, unterscheiden zu können.
-
Bezugnehmend
auf 6 sendet eine der VCUs 206 einen EMU-Datenanforderungsbefehl
an die DMA-Steuerung 503, so dass die DMA-Steuerung 503 die
EMU-Daten in den ISM 505 kopiert (801). Die VCU 206 setzt
nun eine Arbeitsnachricht in ihre Nachrichten-Warteschlange 507 ein.
Die Nachricht wird von der Ablaufsteuerung an eine Eingangs-Warteschlange
einer VPU 207 geliefert. Nach Empfang der Nachricht wird
die VPU angewiesen, einen Befehl an die DMA-Steuerung 503 zu
senden, um die EMU-Daten aus dem ISM 505 in den lokalen Speicher 501 zu
laden (802). Anschließend
führen die
VPUs unter Verwendung der von dem ISM 205 geladenen Daten
Berechnungen durch (803). Dann sendet die VCU 206 einen
Befehl an die DMA 503, um die Ergebnisse der Berechnungen
aus dem lokalen Speicher 501 zurück in den ISM 505 zu
verschieben (804). Wenn alle Arbeitsnachrichten verarbeitet sind,
sendet die VCU 206 einen Befehl an die DMA-Steuerung 503,
um die Ergebnisse der Berechnungen aus dem ISM 205 in die
EMU 201 zu verschieben (805).
-
7 zeigt alternative Ablaufsteuerungs- und
Warteschlangen-Konfigurationen,
die in der in 3 dargestellten VPE 205 verwendet
werden könnten.
Insbesondere zeigt 7A eine Konfiguration, bei der
eine Eins-zu-Eins-Entsprechung
zwischen einer VCU 901 und einer Warteschlange und der
Ablaufsteuerung 902 und 903 besteht. Die Ablaufsteuerung 903 sendet
Nachrichten aus der Warteschlange 902 an zwei VPUs 904,
und die VPUs 904 wiederum senden Nachrichten an andere
VPUs und VCUs über
eine Warteschlange und eine Ablaufsteuerung 905 und 906. 7B zeigt
eine Konfiguration, bei der eine Eins-zu-Vielen-Entsprechung zwischen einer
VCU 911 und einer Mehrzahl von Warteschlangen und Ablaufsteuerungen 912 und 913 besteht.
In 7B sendet jede Ablaufsteuerung 913 Nachrichten
an eine von einer Mehrzahl von VPUs 914, und jede der VPUs 914 sendet
Nachrichten über
entsprechende Warteschlangen und Ablaufsteuerungen 915 und 916 zurück an die
VCU 911.
-
Die
Warteschlangen und Ablaufsteuerungen von 7 werden
im Allgemeinen zu Kommunikations- und Datenübertragungszwecken benutzt.
Diese und andere Warteschlangen und Ablaufsteuerungen könnten aber
auch für
andere Zwecke, wie zum Speichern und Wiederabrufen von Diagnosenachrichten, verwendet
werden.
-
8 zeigt
eine VPE gemäß einer
weiteren Ausführungsform
der vorliegenden Erfindung. Die in 8 dargestellte
VPU zeigt eine Möglichkeit
auf, wie ein Nachrichten-Wartenschlangensystem in der VPE implementiert
werden könnte,
und deshalb wurden verschiedene Verarbeitungselemente wie solche,
die zur Durchführung
von Berechnungen in den VPUs verwendet werden, der einfachen Darstellung wegen
weggelassen.
-
Die
VPE von 8 ist angepasst, zwei verschiedene
Nachrichtentypen zwischen ihren verschiedenen Komponenten weiterzuleiten.
Diese beiden Nachrichtentypen werden als „Kommunikationsnachrichten" und „DMA-Anforderungsnachrichten" bezeichnet. Eine
Kommunikationsnachricht weist eine Einheit von benutzerdefinierten
Daten auf, die zwischen zwei VPUs oder zwischen einer VPU und einer
VCU in der VPE weitergeleitet werden. Eine Kommunikationsnachricht
mag zum Beispiel Anweisungen, Datenanforderungen, Zeiger oder einen
beliebigen Datentyp enthalten. Eine DMA-Anforderungsnachricht dagegen weist
eine Einheit von Daten auf, die von einer VPU oder VCU verwendet
wird, um die Durchführung
einer DMA-Transaktion mittels einer DMA-Steuerung in der VPE anzufordern.
Zu Darstellungszwecken sei angenommen, dass jede in Verbindung mit 8 beschriebene
Kommunikations- und DMA-Anforderungsnachricht 128 Bits
von Daten aufweist.
-
Die
VPE von 8 weist eine Mehrzahl von VPUs 207,
eine Mehrzahl von VCUs 206, eine VMU 209 und ein
DMA-Subsystem 1010 auf. Nachrichten werden zwischen den
VCUs 206, den VPUs 207 und dem DMA-Subsystem 1010 über die
VMU 209 geleitet.
-
Die
VMU 209 weist einen ersten Speicher 1001, um Kommunikationsnachrichten
in eine Warteschlange zu stellen, und einen zweiten Speicher 1002 auf,
um DMA-Anforderungsnachrichten in eine Warteschlange zu stellen.
Die ersten und zweiten Speicher sind jeweils 256 × 128 Bit
Speicher und weisen jeweils einen Leseport und einen Schreibport auf.
Sowohl der erste als auch der zweite Speicher ist in 16 virtuelle
Warteschlangen unterteilt. Die virtuellen Warteschlangen im ersten
Speicher 1001 werden als virtuelle Kommunikationsnachricht-Warteschlangen
bezeichnet und die virtuellen Warteschlangen im zweiten Speicher 1002 werden
als virtuelle DMA-Anforderungs-Warteschlangen
bezeichnet.
-
Die
Konfiguration und Benutzung der virtuellen Warteschlangen ist benutzerdefiniert.
Die VMU 209 garantiert jedoch vorzugsweise, dass jede virtuelle
Warteschlange unabhängig
von jeder anderen virtuellen Warteschlange fungiert. Zwei virtuelle
Warteschlangen fungieren unabhängig
voneinander, wenn weder Benutzung noch Inhalt einer der virtuellen
Warteschlangen die andere virtuelle Warteschlange davon abhält, vorwärts zu schreiten.
-
Jede
virtuelle Warteschlange in den ersten und zweiten Speichern 1001 und 1002 ist
mit einer Kapazität
und einer Startadresse konfiguriert. Die Kapazität und Startadresse sind für gewöhnlich in Einheiten
von 128 Bits, das heißt
der Größe einer Nachricht,
spezifiziert. Zum Beispiel kann eine virtuelle Warteschlange mit
einer Kapazität
von zwei (2) zwei Nachrichten oder 256 Bits speichern. Wenn die Kapazität einer
virtuellen Warteschlange auf Null eingestellt ist, wird die Warteschlange
als inaktiv betrachtet. Die Kapazität aller aktiven Warteschlangen liegt
jedoch im Allgemeinen zwischen 2 und 256.
-
Jede
virtuelle Warteschlange wird ferner mit einer „Hochwasserstand-Belegungschwelle" konfiguriert, die
von eins (1) bis zur Kapazität
der virtuellen Warteschlange minus eins reichen kann. Wenn die in einer
virtuellen Warteschlange gespeicherte Datenmenge die Hochwasserstand-Belegungsschwelle überschreitet,
mag die virtuelle Warteschlange ein Signal erzeugen, um eine Änderung
im Verhalten der virtuellen Warteschlange anzuzeigen. Zum Beispiel mag
die virtuelle Warteschlange ein Interrupt an die PCE 203 schicken
um anzuzeigen, dass sie keine weiteren Daten mehr annehmen wird,
bis die Belegung unter die Hochwasserstand-Belegungsschwelle abgesunken
ist.
-
Jede
virtuelle Warteschlange kann auch für einen Betrieb in einem „Normalmodus" oder in einem „Ringpuffermodus" konfiguriert sein.
Im Ringpuffermodus wird die Hochwasserstand-Belegungsschwelle ignoriert,
und neue Daten können
jederzeit in die virtuelle Warteschlange gesetzt werden, auch wenn die
neuen Daten alte Daten überschreiben,
die in der virtuellen Warteschlange gespeichert wurden. Wenn alte
Daten in einer virtuellen Warteschlange von neuen Daten überschrieben
werden, werden für
gewöhnlich
ein Lese-Zeiger und ein Schreib-Zeiger in der virtuellen Warteschlange
verschoben, so dass der Lesezeiger auf die ältesten Daten in der virtuellen
Warteschlange zeigt und der Schreib-Zeiger auf die nächste Adresse
zeigt, an der Daten geschrieben werden.
-
Jede
virtuelle Kommunikationsnachricht-Warteschlange wird mit einem Satz
von Zielorten konfiguriert. Zum Beispiel enthalten in der VPE von 8 mögliche Zielorte
acht (8) VPUs 207, zwei (2) VCUs 205 und eine
PCE 203, also insgesamt elf (11) Zielorte. Die elf Zielorte
werden allgemein als Bitstring von elf (11) Bits kodiert, so dass
jede virtuelle Warteschlange so konfiguriert werden kann, dass sie
Nachrichten an jeden Teilsatz der elf Zielorte sendet.
-
Eine
Möglichkeit
zum Konfigurieren der verschiedenen Eigenschaften der virtuellen
Warteschlangen besteht im Speichern der Konfigurationsinformation
für jede
der virtuellen Warteschlangen in speicherkonformen (memory mapped)
Konfigurationsregistern. Die speicherkonformen Konfigurationsregister
werden für
gewöhnlich
auf einen Speicheradressraum der PCE 203 und einen Speicheradressraum
der VCUs 206 gemappt. Die VCUs 206 können auf
die darin gespeicherte Konfigurationsinformation zugreifen, die
virtuellen Warteschlangen werden jedoch vorzugsweise nur von der
PCE 203 konfiguriert.
-
Die
VPUs 207 und VCUs 206 weisen jeweils zwei (2)
FIFO-Warteschlangen
zum Empfangen von Nachrichten von der VMU 209 auf. Die
zwei FIFOs werden gemeinsam als „Empfangs-FIFOs" bezeichnet und enthalten
eine Empfangs-FIFO für
Kommunikationsnachrichten und eine Empfangs-FIFO für DMA-Fertigstellungsmitteilungen.
Jede Kommunikationsnachrichten-Empfangs-FIFO weist vorzugsweise eine 8-Einträge-mal-128-Bit-Warteschlange
auf, und jede DMA-Fertigstellungsmitteilungs-FIFO weist vorzugsweise
eine 32-Einträgemal-32-Bit-Warteschlange
auf.
-
Die
VPEs 207 und VCUs 206 verwenden beide eine Speicheranweisungs-STQ, um Nachrichten an
die VMU 209 zu senden, und eine Ladeanweisungs-LDQ um Nachrichten
aus den entsprechenden Empfangs-FIFOs zu lesen.
-
Wie
zuvor unter Bezugnahme auf 3 erklärt wurde,
können
sich Paare der VPUs 207 einen einzelnen physikalischen
Speicher teilen. Demgemäß können die
Empfangs-FIFOs für
jedes Paar von VPUs 207 in demselben physikalischen Speicher
implementiert werden. Wenn die Empfangs-FIFOs für ein Paar von VPUs 207 in
demselben physikalischen Speicher implementiert werden, mag es eine
Speicherkonkurrenzsituation zwischen den VPUs 207 geben,
wenn sie beide versuchen, Lade- und Speicheranweisungen zu dem Speicher
zu senden. Eine einfache Möglichkeit
zur Lösung
dieser Speicherkonkurrenzsituation besteht darin, einer VPU im VPU-Paar eindeutige
Priorität
gegenüber
der anderen VPU im Paar zu geben.
-
Wie
die virtuellen Warteschlangen in der VMU 209 fungieren
die Empfangs-FIFOs in jeder VPU unabhängig voneinander. Mit anderen
Worten, weder die Benutzung noch der Inhalt einer Empfangs-FIFO
kann verhindern, dass eine andere Empfangs-FIFO voranschreitet.
-
Genau
wie die virtuellen Warteschlangen in der VMU 209 weisen
auch die Kommunikationsnachrichten-Empfangs-FIFOs eine konfigurierbare
Hochwasserstand-Belegungsschwelle auf. Wenn die Belegung der Kommunikationsnachrichten-Empfangs-FIFO
die Hochwasserstand-Belegungsschwelle
erreicht, erzeugt die Kommunikationsnachrichten-Empfangs-FIFO eine Gegendruck-Anzeige,
um zu verhindern, dass weitere Nachrichten an die FIFO gesendet
werden. Die Hochwasserstand-Belegungsschwelle für eine Kommunikationsnachrichten-Empfangs-FIFO
liegt für
gewöhnlich
zwischen 1 und 5, mit einem Default von 5.
-
Wenn
alle Kommunikationsnachrichten-Empfangs-FIFOs, die als Zielorte
für eine
bestimmte virtuelle Kommunikationsnachrichten-Warteschlange konfiguriert
sind, ihre entsprechende Hochwasserstand-Belegungsschwelle erreichen,
wird die virtuelle Kommunikationsnachrichten-Warteschlange daran
gehindert, Kommunikationsnachrichten an diese Zielorte zu senden.
Demzufolge kann sich die virtuelle Kommunikationsnachrichten-Warteschlange füllen und
bewirken, dass weitere Versuche, Daten in die virtuelle Warteschlange
zu setzen, fehlschlagen.
-
Alle
Kommunikationsnachrichten innerhalb der virtuellen Kommunikationsnachrichten-Warteschlangen
sind geeignet, in FIFO-Reihenfolge an korrespondierende Kommunikationsnachrichten-Empfangs-FIFOs übertragen
zu werden. Die VMU 209 kann jedoch pro Taktzyklus nur eine
Kommunikationsnachricht an eine Empfangs-FIFO senden. Demgemäß ist in
der VMU 209 eine Ablaufsteuerung 1003 enthalten,
die für
Fairness zwischen den virtuellen Kommunikationsnachrichten-Warteschlangen
sorgt.
-
Die
Ablaufsteuerung 1003 plant für gewöhnlich Datenübertragungen
zwischen den virtuellen Kommunikationsnachrichten-Warteschlangen
und den Kommunikationsnachrichten-Empfangs-FIFOs gemäß einer
Rundlauf-("Round
Robin")Planungstechnik.
Gemäß dieser
Technik prüft
die Ablaufsteuerung jede virtuelle Kommunikationsnachrichten-Warteschlange
im Rundlauf. Wenn eine geprüfte
virtuelle Warteschlange nicht leer ist, und eine nächste Kommunikationsnachricht
in der virtuellen Warteschlange eine Zielort-Kommunikationsnachrichten-Empfangs-FIFO
aufweist, die ihre Hochwasserstand-Belegungsschwelle nicht überschritten
hat, sendet die Ablaufsteuerung die Kommunikationsnachricht an die
Zielort-Kommunikationsnachrichten-Empfangs- FIFO. Um eine effiziente Prüfung der
virtuellen Kommunikationsnachrichten-Warteschlangen zu erleichtern, behält die Ablaufsteuerung 1003 eine
Indikation der Zielort-Kommunikationsnachrichten-Empfangs-FIFO für die nächste Nachricht
in jeder Kommunikationsnachrichten-Virtuell-Warteschlange. Dies
ermöglicht
der Ablaufsteuerung 1003, effizient zu prüfen, ob
die Zielort-Kommunikationsnachrichten-Empfangs-FIFOs
sich oberhalb ihrer entsprechende Hochwasserstand-Belegungsschwelle
sind.
-
Wenn
alle Kommunikationsnachrichten-Virtuell-Warteschlangen leer sind
oder alle der entsprechenden Zielort-Kommunikationsnachrichten-Empfangs-FIFOs über ihrer
entsprechenden Hochwasserstand-Belegungsschwelle liegen, werden
keine Daten zwischen den virtuellen Kommunikationsnachrichten-Warteschlangen und
den Kommunikationsnachrichten-Empfangs-FIFOs übertragen. Andernfalls wird
eine von der Ablaufsteuerung 1003 ausgewählte Kommunikationsnachricht
vom Kopf einer der virtuellen Kommunikationsnachrichten-Warteschlangen
an das Ende einer der Kommunikationsnachrichten-Empfangs-FIFOs verschoben.
-
Die
virtuellen DMA-Anforderungsnachrichten-Warteschlangen im zweiten
Speicher 1002 empfangen DMA-Anforderungsnachrichten von
den VPUs 207 und den VCUs 206. Jede DMA-Anforderungsnachricht
weist für
gewöhnlich
128 Bits Information zusammen mit einer optionalen 32-Bit-DMA-Fertigstellungsmitteilung
auf. Die DMA-Anforderungsnachrichten werden über die virtuellen DMA-Anforderungsnachrichten-Warteschlangen
an einen Satz von DM-Anforderungs-FIFOs 1007 übertragen.
Die Reihenfolge, in der Nachrichten aus den virtuellen DMA-Anforderungsnachrichten-Warteschlangen übertragen
werden, wird von einer Ablaufsteuerung 1004 bestimmt.
-
DMA-Anforderungsnachrichten
in den DMA-Anforderungs-FIFOs 1007 werden zu einer DMA-Steuerung 1008 übertragen,
die DMA-Transaktionen auf Basis der DMA-Anforderungsnachrichten durchführt. Eine
typische DMA-Transaktion
weist zum Beispiel das Verschieben von Daten in und/oder aus verschiedenen
Speichern auf, die mit den VPUs 207 und/oder den VCUs 206 verknüpft sind.
Nach Abschluss einer DMA-Transaktion wird jede DMA-Fertigstellungsmitteilung,
die mit einer DMA-Anforderungsnachricht, die die DMA-Transaktion eingeleitet
hat, verknüpft
ist, von der DMA-Steuerung 1008 an eine DMA-Fertigstellungsmitteilungs-FIFO 1009 übertragen.
Danach wird die DMA- Fertigstellungsmitteilung
an eine DMA-Fertigstellungsmitteilungs-Empfangs-FIFO in einer der VPUs 207 oder
der VCUs 206 übertragen.
-
Zusätzlich zu
DMA-Anforderungsnachrichten mögen
die virtuellen DMA-Anforderungsnachrichten-Warteschlangen
auch ECN-Nachrichten (ECN = erweiterte Fertigstellungsmitteilungs-Nachrichten)
enthalten. Eine ECN-Nachricht ist eine 128-Bit Nachricht, die unmittelbar
nach einer DMA-Anforderungsnachricht
in eine virtuelle DMA-Anforderungsnachrichten-Warteschlange gesetzt wird. Die ECN-Nachricht
wird für
gewöhnlich anstelle
einer 32-Bit Fertigstellungsmitteilung verwendet. Die ECN-Nachricht
wird über
eine der virtuellen Kommunikationsnachrichten-Warteschlangen an
eine Kommunikationsnachrichten-Empfangs-FIFO geschickt, um anzuzeigen,
dass die DMA-Anforderungsnachricht an die DMA-Steuerung 1008 gesendet
wurde. Eine beispielhafte ECN-Nachricht ist in 8 durch
einen gestrichelten Pfeil dargestellt.
-
Die
ECN-Nachricht kann entweder nach Senden der DMA-Anforderungsnachricht an die DMA-Steuerung 1008 oder
nach Abschluss einer von der DMA-Anforderungsnachricht eingeleiteten DMA-Transaktion
an die virtuelle Kommunikationsnachrichten-Warteschlange gesendet
werden, abhängig
von dem Wert einer „Fence" Anzeige in der DMA-Anforderungsnachricht.
Wenn die „Fence" Anzeige auf einen
ersten Wert eingestellt ist, wird die ECN-Nachricht nach Senden
der DMA-Anforderungsnachricht an die DMA-Steuerung 1008 an
die virtuelle Kommunikationsnachrichten-Warteschlange gesendet.
Andernfalls wird die ECN-Nachricht nach Abschluss der DMA-Transaktion
an die virtuelle Kommunikationsnachrichten-Warteschlange gesendet.
-
Die
Ablaufsteuerung 1004 benutzt vorzugsweise einen Rundlauf-Planungsalgorithmus,
um die Reihenfolge, in der DMA-Anforderungsnachrichten aus den virtuellen
DMA-Anforderungsnachrichten-Warteschlangen an die DMA-Anforderungs-FIFOs 1007 übertragen
werden, zu bestimmen. Bei Einsatz des Rundlauf-Planungsalgorithmus liest
die Ablaufsteuerung 1004 während des aktuellen Taktzyklus
eine nächste
DMA-Anforderungsnachricht aus einer nicht leeren virtuellen DMA-Anforderungsnachrichten-Warteschlange.
Zum Auswählen der
nächsten
DMA-Anforderungsnachricht werden die nicht leeren virtuellen DMA-Anforderungsnachrichten-Warteschlangen
in aufeinanderfolgenden Taktzyklen in Rundlaufreihenfolge durchlaufen.
-
Die
nächste
DMA-Anforderungsnachricht wird während
des aktuellen Taktzyklus zu der DMA-Anforderungs-FIFO übertragen,
es sei denn, dass eine oder mehrere der folgenden Bedingungen erfüllt sind:
Alle DMA-Anforderungs-FIFOs 1007 sind voll;
die nächste
DMA-Anforderungsnachricht enthält eine
DMA-Fertigstellungsmitteilung,
die für
eine DMA-Fertigstellungsmitteilungs-Empfangs-FIFO, die voll ist, oder über ihrer
Hochwasserstand-Belegungsschwelle liegt, bestimmt ist; oder die
DMA-Anforderungsnachricht ist mit einer ECN-Nachricht verknüpft, und
die Zielort-Kommunikationsnachrichten-FIFO der ECN-Nachricht ist
voll.
-
Um
echte Unabhängigkeit
zwischen virtuellen Warteschlangen bereitzustellen, muss die VMU 209 verhindern,
dass die DMA-Fertigstellungsmitteilungs-FIFO 1009 das
Fortfahren der DMA-Steuerung 1008 blockiert. Die DMA-Fertigstellungsmitteilungs-FIFO 1009 mag
zum Beispiel die DMA-Steuerung 1008 blockieren, wenn die
VCUs 206 oder die VPUs 207 nur langsam ihre entsprechenden DMA-Fertigstellungsmitteilungs-Empfangs-FIFOs leeren
und dadurch bewirken, dass sich die DMA-Fertigstellungsmitteilungen
anhäufen.
Eine Möglichkeit
für die
VMU 209 zu verhindern, dass die DMA-Fertigstellungsmitteilungs-FIFO 1009 das
Fortfahren der DMA-Steuerung blockiert, besteht darin, eine DMA-Anforderungsnachricht,
die eine 32-Bit DMA-Fertigstellungsmitteilung
enthält,
daran zu hindern, dass sie aus ihrer virtuellen DMA-Anforderungs-Warteschlange
entfernt wird, es sei denn, dass eine DMA-Fertigstellungsmitteilungs-Empfangs-FIFO,
für die
die DMA-Fertigstellungsmitteilung
bestimmt ist, unter ihrer Hochwasserstand-Belegungsschwelle liegt.
-
Die
DMA-Steuerung 1008 kann verschiedene Arten von DMA-Transaktionen als
Reaktion auf verschiedene DMA-Anforderungsnachrichten durchführen. Zum
Beispiel verschieben manche DMA-Transaktionen Daten aus dem Anweisungsspeicher
einer VPU in den Anweisungsspeicher einer anderen VPU. Andere Transaktionen
senden Daten aus einem ISM 1011 an eine bestimmte Adresse
in den Datenspeichern mehrerer oder aller VPUs 207, wie
zum Beispiel der VPUs, die in 2 und 8 mit
dem Suffix "A" markiert sind. Wiederum
andere DMA Transaktionen senden Daten aus dem ISM 1011 an
die Anweisungsspeicher mehrerer oder aller VPUs 207.
-
Eine
andere Art von DMA-Transaktion, die durch eine DMA-Anforderungsnachricht
eingeleitet werden kann, ist eine atomare EMU DMA- Transaktion. Bei
atomaren EMU DMA-Transaktionen verschiebt die DMA-Steuerung 1008 Daten
zwischen dem ISM 1001 und einem EMU-Speicher 1012 mit Hilfe
von „Load-Locked" und „Store-Conditional" Semantiken. Insbesondere
können „Load-Locked" Semantiken zum Übertragen
von Daten aus dem EMU-Speicher 1012 an
den ISM 1011 verwendet werden, und „Store-Conditional" Semantiken werden zum Übertragen
von Daten aus dem ISM 1011 an den EMU-Speicher 1012 verwendet.
-
„Load-Locked" und „Store-Conditional" Semantiken beruhen
beide auf einem Mechanismus, bei dem eine Adresse im EMU-Speicher 1012 dadurch „verriegelt" wird, dass die Adresse
mit einem Identifizierer einer bestimmten virtuellen Warteschlange
innerhalb einer der VPEs 205 verknüpft wird. Von der virtuellen
Warteschlange, dessen Identifizierer mit der Adresse verknüpft ist,
sagt man, dass sie ein „Lock" auf der Adresse
hat. Wenn eine virtuelle Warteschlange ein Lock auf einer Adresse
hat, sagt man auch von der Adresse, dass sie „locked" (verriegelt) ist. Wenn ein anderer
Identifizierer mit der Adresse verknüpft wird, sagt man, dass die
virtuelle Warteschlange das Lock „verliert" oder „freigibt".
-
Eine
virtuelle Warteschlange bekommt für gewöhnlich ein Lock auf einer Adresse
im EMU-Speicher 1012, wenn eine DMA-Anforderungsnachricht aus
der virtuellen Warteschlange die DMA-Steuerung 1008 anweist,
eine Leseoperation aus dem EMU-Speicher 1012 in den ISM 1011 vorzunehmen. Eine
Leseopertion, bei der ein Lock auf einer Adresse erhalten wird,
wird als „Load-Locked" Operation bezeichnet.
Sobald die virtuelle Warteschlange das Lock hat, mag eine EMU-Steuerung
(nicht dargestellt) im EMU-Speicher 1012 eine Zeituhr starten. Die
Zeituhr ist für
gewöhnlich
konfiguriert eine begrenzte Zeitdauer zu haben. Wenn die Dauer auf
Null gesetzt ist, wird die Zeituhr nicht verwendet. Während die
Zeituhr läuft,
werden nachfolgende Leseoperationen an die Adresse im EMU-Speicher 1012 Adressen
weder entriegeln noch verriegeln. Die Verwendung der Zeituhr verringert
die Wahrscheinlichkeit des Zugriffs auf eine Adresse, die durch
eine DMA-Transaktion von einer ersten VPE verriegelt wurde, durch
eine DMA-Transaktion
einer anderen VPE.
-
Während die
Zeituhr nicht läuft,
geben nachfolgende Leseoperationen an die Adresse das alte Lock
frei und erstellen ein neues Lock. Mit anderen Worten, eine andere
virtuelle Warteschlangenkennung wird mit der Adresse assoziiert.
-
Eine „Store-Conditional" Operation ist eine Schreiboperation
aus dem EMU-Speicher 1012 in den ISM 1011, die
nur dann erfolgreich ist, wenn sie von einer virtuellen Warteschlange
stammt, die ein Lock auf einer Zieladresse der Schreiboperation
hat.
-
Wie
bei anderen DMA-Transaktionen, können
atomare EMU DMA-Transaktionen
durch DMA-Anforderungsnachrichten, die 32-Bit-DMA-Fertigstellungsmitteilungen
aufweisen, eingeleitet werden. Wenn jedoch eine Store-Conditional
Operation nicht erfolgreich ist, wird ein Bit in der korrespondierenden
DMA-Fertigstellungsmitteilung auf einen vorbestimmten Wert eingestellt,
um einer der VPUs 207 oder VCUs 206 diesen Ausfall
anzeigen.
-
Die 9 und 10 sind
Ablaufdiagramme, die Verfahren zum Senden von Nachrichten in einem
Schaltkreis, wie der in 8 dargestellten VPE, veranschaulichen.
Insbesondere veranschaulicht 9 ein Verfahren
zum Übertragen
einer Kommunikationsnachricht von einer VPU oder VCU an eine andere
VPU oder VCU in einer VPE gemäß einer
erfindungsgemäßen Ausführungsform,
und 10 veranschaulicht ein Verfahren zur Durchführung einer
DMA-Operation in einer VPE auf Basis einer DMA-Anforderungsnachricht
gemäß einer
erfindungsgemäßen Ausführungsform.
-
Unter
Bezugnahme auf 9 weist das Verfahren zum Übertragen
einer Kommunikationsnachricht von einer VPU oder VCU an eine andere
VPU oder VCU in einer VPE Folgendes auf: Als Erstes schreibt in
einem Schritt 1101 eine VPU oder VCU eine Kommunikationsnachricht
in eine von einer Mehrzahl von Kommunikationsnachrichten-Warteschlangen.
Als Nächstes
prüft in
einem Schritt 1102 eine Ablaufsteuerung die Belegung einer Zielort-Empfangs-FIFO
für die
Kommunikationsnachricht. Schließlich
wird in einem Schritt 1103, wenn die Belegung der Zielort-Empfangs-FIFO
unter einer vorherbestimmten Hochwasserstand-Belegungsschwelle liegt,
die Kommunikationsnachricht an die Zielort-Empfangs-FIFO übertragen.
-
Unter
Bezugnahme auf 10 weist ein Verfahren zur Durchführung der
DMA-Operation in einer VPE Folgendes auf: Als Erstes schreibt in
einem Schritt 1201 eine VPU oder VCU eine DMA-Anforderungsnachricht
in eine von eine Mehrzahl von DMA-Anforderungsnachrichten-Warteschlangen.
Als Nächstes
wird in einem Schritt 1202 die DMA-Anforderungsnachricht
aus der DMA-Anforderungsnachrichten-Warteschlange
an eine DMA-Anforderungs-FIFO übertragen.
Dann wird in einem Schritt 1203 die DMA-Anforderungsnachricht
an eine DMA-Steuerung übertragen
und die DMA-Steuerung führt
eine DMA-Operation
auf Basis der DMA-Anforderungsnachricht durch. Schließlich wird
in einem Schritt 1204 eine mit der DMA-Anforderungsnachricht
assoziierte DMA-Fertigstellungsmitteilung
an eine DMA-Fertigstellungsmitteilungs-Empfangs-FIFO in einer oder
in mehreren VPUs und/oder VCU innerhalb der VPE gesendet.
-
Die
obigen bevorzugten Ausführungsformen sind
Lehrbeispiele. Für
einen Durchschnittsfachmann ist offensichtlich, dass an den beispielhaften Ausführungsformen
verschiedene Änderungen
sowohl in der Form als auch in den Details vorgenommen werden können, ohne
vom Umfang der vorliegenden Erfindung, wie in den nachfolgenden
Ansprüche
definiert, abzuweichen.