DE102008022080B4 - Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren - Google Patents

Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren Download PDF

Info

Publication number
DE102008022080B4
DE102008022080B4 DE102008022080A DE102008022080A DE102008022080B4 DE 102008022080 B4 DE102008022080 B4 DE 102008022080B4 DE 102008022080 A DE102008022080 A DE 102008022080A DE 102008022080 A DE102008022080 A DE 102008022080A DE 102008022080 B4 DE102008022080 B4 DE 102008022080B4
Authority
DE
Germany
Prior art keywords
memory
dma
data
vpus
messages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102008022080A
Other languages
English (en)
Other versions
DE102008022080A1 (de
Inventor
Monier Maher
Jean Pierre Bordes
Christopher Lamb
Sanjay J. Patel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102008022080A1 publication Critical patent/DE102008022080A1/de
Application granted granted Critical
Publication of DE102008022080B4 publication Critical patent/DE102008022080B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers

Abstract

Integrierter Schaltkreis, der auf einen externen Speicher zugreift, aufweisend:
a) einen Steuerprozessor;
b) eine Mehrzahl von parallel geschalteten Vektorverarbeitungs-Engines (VPEs) (205), wobei jede der VPEs (205) aufweist:
b1) eine Mehrzahl von Vektorverarbeitungs-Einheiten (VPUs) (207), wobei jede VPU eine Datenverarbeitungseinheit zum Ausführen mathematischer/logischer Operationen, einen lokalen Speicher (501) aufweisend einen Anweisungs- und einen Datenspeicher aufweist,
b2) eine Mehrzahl von VPU-Steuereinheiten (VCUs) (206), wobei jede VCU ebenfalls einen lokalen Speicher (502) aufweisend einen Anweisungs- und einen Datenspeicher aufweist und funktionelle Aspekte der Gesamt-Speichersteuerfunktion implementiert,
b3) einen Zwischenspeicher ISM (505), der im Vergleich zu den lokalen Speichern große Mengen von Daten speichern kann,
b4) eine Direct Memory Access (DMA)-Steuerung (503), die angepasst ist, um Datenübertragungen zwischen jedem der Speicher (501, 502, 505) in der VPE und dem externen Speicher zu ermöglichen,
c) wobei jede der VCU Steuereinheiten (206) weiter ausgebildet ist,
c1) einen Datenanforderungsbefehl...

Description

  • 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 Allzweck-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. Software-basierte 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 (US 2005/0086040 A1, US 2005/0075154 A1 und US 2005/0075849 A1) eine Hardware-basierte Lösung zur Erzeugung und Aufnahme von physik-basierten 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, US 2005/0251044 A1, 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 5Kf 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 US 2005/0251644 A1 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.
  • US 2005/0251644 A1 beschreibt eine Befehlssatzarchitektur für eine Verarbeitungseinheit, wobei eine Hierarchie mehrerer programmierbarer Speicher und eine verteilte Steuerung über Datenübertragungen implementiert sind.
  • US 7058750 B1 beschreibt ein Multiprozessorsystem aus zumindest einem Verarbeitungsmodul, zumindest einem I/O-Modul und einem Verbindungsnetzwerk, um das zumindest eine Verarbeitungsmodul mit dem zumindest einen Eingabe-/Ausgabe-Modul zu verbinden. Das Verbindungsnetzwerk weist zumindest zwei Bridges auf, um Vorgänge zwischen dem Eingabe-/Ausgabe-Modul und dem Verarbeitungsmodul zu senden und zu empfangen.
  • 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, einen Zwischenspeicher und eine DMA-Steuerung auf. Jede VPU weist einen lokalen Speicher auf, und jede VCU Steuereinheit ist ausgebildet, (i) einen Datenanforderungsbefehl für Daten des externen Speichers an die DMA-Steuerung zu senden, worauf die DMA-Steuerung die angeforderten Daten aus dem externen Speicher in den Zwischenspeicher kopiert, (ii) einen Befehl an die DMA-Steuerung zu senden, um die Ergebnisse der Berechnungen aus dem Zwischenspeicher in den externen Speicher zu verschieben, und (iii) einen Befehl an die DMA-Steuerung zu senden, um Ergebnisse der Berechnungen aus einem lokalen Speicher einer VPU in den Zwischenspeicher zu verschieben, und wobei jede VPU weiter ausgebildet ist, einen Befehl an die DMA-Steuerung zu senden, um Daten aus dem Zwischenspeicher in den lokalen Speicher der VPU zu verschieben. 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.
  • 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äge-mal-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.

Claims (9)

  1. Integrierter Schaltkreis, der auf einen externen Speicher zugreift, aufweisend: a) einen Steuerprozessor; b) eine Mehrzahl von parallel geschalteten Vektorverarbeitungs-Engines (VPEs) (205), wobei jede der VPEs (205) aufweist: b1) eine Mehrzahl von Vektorverarbeitungs-Einheiten (VPUs) (207), wobei jede VPU eine Datenverarbeitungseinheit zum Ausführen mathematischer/logischer Operationen, einen lokalen Speicher (501) aufweisend einen Anweisungs- und einen Datenspeicher aufweist, b2) eine Mehrzahl von VPU-Steuereinheiten (VCUs) (206), wobei jede VCU ebenfalls einen lokalen Speicher (502) aufweisend einen Anweisungs- und einen Datenspeicher aufweist und funktionelle Aspekte der Gesamt-Speichersteuerfunktion implementiert, b3) einen Zwischenspeicher ISM (505), der im Vergleich zu den lokalen Speichern große Mengen von Daten speichern kann, b4) eine Direct Memory Access (DMA)-Steuerung (503), die angepasst ist, um Datenübertragungen zwischen jedem der Speicher (501, 502, 505) in der VPE und dem externen Speicher zu ermöglichen, c) wobei jede der VCU Steuereinheiten (206) weiter ausgebildet ist, c1) einen Datenanforderungsbefehl für Daten des externen Speichers an die DMA-Steuerung zu senden, worauf die DMA-Steuerung (503) die angeforderten Daten des externen Speichers in den Zwischenspeicher (ISM) kopiert, c2) einen Befehl an die DMA-Steuerung (503) zu senden, um die Ergebnisse der Berechnungen aus dem Zwischenspeicher in den externen Speicher zu verschieben, und c3) einen Befehl an die DMA-Steuerung (503) zu senden, um Ergebnisse der Berechnungen aus dem lokalen Speicher (501) einer VPU (207) in den Zwischenspeicher (ISM) (505) zu verschieben, d) wobei jede der VPU Steuereinheiten (207) weiter ausgebildet ist, d1) einen Befehl an die DMA-Steuerung (503) zu senden, um Daten aus dem Zwischenspeicher (ISM) (505) in den lokalen Speicher (501) der VPU (207) zu verschieben.
  2. Integrierter Schaltkreis gemäß Anspruch 1, weiterhin aufweisend: eine erste Ablaufsteuerung (1003), die konfiguriert ist, um Übertragungen zwischen der Mehrzahl von VPUs (207) und der Mehrzahl von VCUs (206) zu planen; und eine zweite Ablaufsteuerung (1004), die konfiguriert ist, um Übertragungen von DMA-Anforderungen, die von der Mehrzahl von VPUs (207) und der Mehrzahl von VCUs (206) her empfangen werden, an die DMA-Steuerung (503) basierend auf Belegungsschwellwerten von DMA-Fertigstellungsmitteilungen-Empfangsanforderungen zu planen, um zu verhindern, dass DMA-Fertigstellungsmitteilungen die DMA-Anforderungen blockieren.
  3. Integrierter Schaltkreis gemäß Anspruch 1, weiterhin aufweisend: einen ersten Speicher (1001), der angepasst ist, Nachrichten, die von einer Mehrzahl von VPUs (207) und der Mehrzahl von VCUs (206) her empfangen werden, zu speichern, wobei die erste Ablaufsteuerung angepasst ist, Nachrichten aus einer Warteschlange des ersten Speichers (1001) zu entfernen und eine Reihenfolge zum Senden der aus der Warteschlange entfernten Nachrichten an eine Mehrzahl von VPUs (207) und die Mehrzahl von VCUs (206) zu bestimmen, und einen zweiten Speicher (1002), der mit jeder empfangenden VPU und VCU der Mehrzahl von VPUs und der Mehrzahl von VCUs assoziiert ist, in denen eingehende Nachrichten gespeichert sind.
  4. Integrierter Schaltkreis gemäß Anspruch 3, wobei der erste Speicher (1001) in eine erste Mehrzahl virtueller Warteschlangen unterteilt ist, die angepasst sind, Nachrichten von entsprechenden VPUs (207) zu empfangen; wobei die erste Ablaufsteuerung (1003) angepasst ist, eine Reihenfolge zum Entfernen von Nachrichten aus der ersten Mehrzahl virtueller Warteschlangen zu bestimmen; wobei der zweite Speicher (1002) in eine zweite Mehrzahl virtueller Warteschlangen unterteilt ist, die angepasst sind, Nachrichten von korrespondierenden VPUs (207) zu empfangen; und wobei der integrierte Schaltkreis ferner eine dritte Ablaufsteuerung aufweist, die angepasst ist, eine Reihenfolge zum Entfernen von Nachrichten aus der zweiten Mehrzahl virtueller Warteschlangen zu bestimmen.
  5. Integrierter Schaltkreis gemäß Anspruch 4, wobei jede der VPUs und VCUs innerhalb jeder VPE aufweist: eine erste Empfangswarteschlange, die angepasst ist, Nachrichten zu empfangen, die aus der ersten Mehrzahl virtueller Warteschlangen entfernt wurden; und eine zweite Empfangswarteschlange, die angepasst ist, Nachrichten zu empfangen, die aus der zweiten Mehrzahl virtueller Warteschlangen entfernt wurden.
  6. Physik-Verarbeitungseinheit (PPU), die auf einen externen Speicher, der mindestens Physikdaten speichert, zugreift, wobei die PPU einen integrierten Schaltkreis gemäß einem der Ansprüche 1 bis 5 aufweist.
  7. PPU gemäß Anspruch 6, wobei jede Nachricht eine Einheit von Daten aufweist, die eine oder mehrere Anweisungen, Zeiger, Adressen oder Operanden oder Ergebnisse einer Berechnung repräsentieren.
  8. PPU gemäß Anspruch 7, wobei das DMA-Subsystem ferner aufweist: eine Mehrzahl von DMA-Anforderungs-Warteschlangen, die angepasst sind, DMA-Anforderungsnachrichten aus den virtuellen DMA-Anforderungsnachrichten-Warteschlangen zu empfangen und die DMA-Anforderungsnachrichten an die DMA-Steuerung zu übertragen; und eine DMA-Fertigstellungsmitteilungs-Warteschlange, die angepasst ist, DMA-Fertigstellungsmitteilungen von der DMA-Steuerung zu empfangen und die DMA-Fertigstellungsmitteilung an die VCUs und VPUs zu übertragen.
  9. Verfahren zum Betreiben des integrierten Schaltkreises gemäß Anspruch 1, wobei das Verfahren aufweist: für jede VCU Steuereinheit (206): Senden eines Datenanforderungsbefehls für Daten des externen Speichers an die DMA-Steuerung, worauf die DMA-Steuerung (503) die angeforderten Daten von dem externen Speicher in den Zwischenspeicher (ISM) kopiert, Senden eines Befehls an die DMA-Steuerung (503), um die Ergebnisse der Berechnungen aus dem Zwischenspeicher in den externen Speicher zu verschieben, und Senden eines Befehls an die DMA-Steuerung (503), um Ergebnisse der Berechnungen aus dem lokalen Speicher (501) einer VPU (207) in den Zwischenspeicher (ISM) (505) zu verschieben, und für jede VPU (207), Senden eines Befehl an die DMA-Steuerung (503), um Daten aus dem Zwischenspeicher (ISM) (505) in den lokalen Speicher (501) der VPU (207) zu verschieben.
DE102008022080A 2007-05-10 2008-05-05 Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren Active DE102008022080B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/798,119 US7627744B2 (en) 2007-05-10 2007-05-10 External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US11/798,119 2007-05-10

Publications (2)

Publication Number Publication Date
DE102008022080A1 DE102008022080A1 (de) 2008-12-11
DE102008022080B4 true DE102008022080B4 (de) 2011-05-05

Family

ID=39537379

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008022080A Active DE102008022080B4 (de) 2007-05-10 2008-05-05 Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren

Country Status (7)

Country Link
US (1) US7627744B2 (de)
JP (1) JP4428485B2 (de)
KR (1) KR100932038B1 (de)
CN (1) CN101320360B (de)
DE (1) DE102008022080B4 (de)
GB (1) GB2449168B (de)
TW (1) TWI416405B (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8082289B2 (en) 2006-06-13 2011-12-20 Advanced Cluster Systems, Inc. Cluster computing support for application programs
US20080240324A1 (en) * 2007-03-27 2008-10-02 Microsoft Corporation Independent Dispatch of Multiple Streaming Queues Via Reserved Time Slots
US20100161914A1 (en) * 2008-12-23 2010-06-24 Eilert Sean S Autonomous memory subsystems in computing platforms
US8493979B2 (en) * 2008-12-30 2013-07-23 Intel Corporation Single instruction processing of network packets
US20100268904A1 (en) * 2009-04-15 2010-10-21 Sheffield Robert L Apparatus and methods for region lock management assist circuit in a storage system
US20100268743A1 (en) * 2009-04-15 2010-10-21 Hallyal Basavaraj G Apparatus and methods for tree management assist circuit in a storage system
US8131889B2 (en) * 2009-11-10 2012-03-06 Apple Inc. Command queue for peripheral component
CN101847093B (zh) * 2010-04-28 2013-09-04 中国科学院自动化研究所 具有可重构低功耗数据交织网络的数字信号处理器
CN101833441B (zh) * 2010-04-28 2013-02-13 中国科学院自动化研究所 并行向量处理引擎结构
US8407389B2 (en) * 2010-07-20 2013-03-26 International Business Machines Corporation Atomic operations with page migration in PCIe
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US9021146B2 (en) 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
SE537552C2 (sv) 2011-12-21 2015-06-09 Mediatek Sweden Ab Digital signalprocessor
CN102609245B (zh) * 2011-12-22 2014-09-17 中国科学院自动化研究所 一种两级运算架构的异构多核处理器
US9135081B2 (en) * 2012-10-26 2015-09-15 Nvidia Corporation Work-queue-based graphics processing unit work creation
US9268695B2 (en) 2012-12-12 2016-02-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Methods and structure for using region locks to divert I/O requests in a storage controller having multiple processing stacks
US9253096B2 (en) 2013-03-15 2016-02-02 International Business Machines Corporation Bypassing congestion points in a converged enhanced ethernet fabric
US9954781B2 (en) 2013-03-15 2018-04-24 International Business Machines Corporation Adaptive setting of the quantized congestion notification equilibrium setpoint in converged enhanced Ethernet networks
US9401857B2 (en) 2013-03-15 2016-07-26 International Business Machines Corporation Coherent load monitoring of physical and virtual networks with synchronous status acquisition
US9219689B2 (en) 2013-03-15 2015-12-22 International Business Machines Corporation Source-driven switch probing with feedback request
IN2013MU03527A (de) * 2013-11-08 2015-07-31 Tata Consultancy Services Ltd
IN2013MU03528A (de) * 2013-11-08 2015-07-31 Tata Consultancy Services Ltd
WO2016024508A1 (ja) 2014-08-12 2016-02-18 高田 周一 マルチプロセッサ装置
US9830275B2 (en) * 2015-05-18 2017-11-28 Imagination Technologies Limited Translation lookaside buffer
US11163490B2 (en) * 2019-09-17 2021-11-02 Micron Technology, Inc. Programmable engine for data movement
US11397694B2 (en) 2019-09-17 2022-07-26 Micron Technology, Inc. Memory chip connecting a system on a chip and an accelerator chip
US11416422B2 (en) 2019-09-17 2022-08-16 Micron Technology, Inc. Memory chip having an integrated data mover
TW202221502A (zh) * 2020-11-18 2022-06-01 財團法人工業技術研究院 作業系統之多執行緒追蹤方法與系統及應用其之電子裝置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251644A1 (en) * 2004-05-06 2005-11-10 Monier Maher Physics processing unit instruction set architecture
US7058750B1 (en) * 2000-05-10 2006-06-06 Intel Corporation Scalable distributed memory and I/O multiprocessor system

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5010477A (en) 1986-10-17 1991-04-23 Hitachi, Ltd. Method and apparatus for transferring vector data between parallel processing system with registers & logic for inter-processor data communication independents of processing operations
US5123095A (en) 1989-01-17 1992-06-16 Ergo Computing, Inc. Integrated scalar and vector processors with vector addressing by the scalar processor
US5966528A (en) 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
DE4390577T1 (de) 1992-02-18 1995-02-23 Apple Computer Programmiermodell für einen Coprozessor in einem Computersystem
US5664162A (en) 1994-05-23 1997-09-02 Cirrus Logic, Inc. Graphics accelerator with dual memory controllers
US5666497A (en) 1995-03-08 1997-09-09 Texas Instruments Incorporated Bus quieting circuits, systems and methods
US5796400A (en) * 1995-08-07 1998-08-18 Silicon Graphics, Incorporated Volume-based free form deformation weighting
US5818452A (en) * 1995-08-07 1998-10-06 Silicon Graphics Incorporated System and method for deforming objects using delta free-form deformation
US5765022A (en) 1995-09-29 1998-06-09 International Business Machines Corporation System for transferring data from a source device to a target device in which the address of data movement engine is determined
US6331856B1 (en) 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
JPH09161095A (ja) 1995-12-07 1997-06-20 Sega Enterp Ltd 画像処理装置
US6317819B1 (en) 1996-01-11 2001-11-13 Steven G. Morton Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction
KR100269106B1 (ko) 1996-03-21 2000-11-01 윤종용 멀티프로세서 그래픽스 시스템
US6058465A (en) 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5812147A (en) 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US5892691A (en) * 1996-10-28 1999-04-06 Reel/Frame 8218/0138 Pacific Data Images, Inc. Method, apparatus, and software product for generating weighted deformations for geometric models
JP3681026B2 (ja) 1997-03-27 2005-08-10 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および方法
US6324623B1 (en) 1997-05-30 2001-11-27 Oracle Corporation Computing system for implementing a shared cache
JPH1165989A (ja) 1997-08-22 1999-03-09 Sony Computer Entertainment:Kk 情報処理装置
US6223198B1 (en) 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
JP3597360B2 (ja) * 1997-11-17 2004-12-08 株式会社リコー モデリング方法および記録媒体
US6317820B1 (en) 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
JP3017986B1 (ja) 1998-11-26 2000-03-13 コナミ株式会社 ゲームシステムおよびコンピュータ読み取り可能な記憶媒体
JP2000222590A (ja) 1999-01-27 2000-08-11 Nec Corp 画像処理方法及び装置
KR100356919B1 (ko) * 1999-07-19 2002-10-19 한국전자통신연구원 메시지큐와 공유메모리를 결합 이용한 프로세스 간의 통신 방법
US6341318B1 (en) 1999-08-10 2002-01-22 Chameleon Systems, Inc. DMA data streaming
GB0005750D0 (en) 2000-03-10 2000-05-03 Mathengine Plc Image display apparatus and method
US6608631B1 (en) * 2000-05-02 2003-08-19 Pixar Amination Studios Method, apparatus, and computer program product for geometric warps and deformations
AU2001268702A1 (en) * 2000-06-22 2002-01-02 Auckland Uniservices Limited Non-linear morphing of faces and their dynamics
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
US6867770B2 (en) * 2000-12-14 2005-03-15 Sensable Technologies, Inc. Systems and methods for voxel warping
US6779049B2 (en) 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
DE10106023A1 (de) 2001-02-09 2002-08-29 Fraunhofer Ges Forschung Verfahren und Vorrichtung zur Kollisionserkennung von Objekten
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US7231500B2 (en) 2001-03-22 2007-06-12 Sony Computer Entertainment Inc. External data interface in a computer architecture for broadband networks
US6966837B1 (en) 2001-05-10 2005-11-22 Best Robert M Linked portable and video game systems
US7120653B2 (en) 2002-05-13 2006-10-10 Nvidia Corporation Method and apparatus for providing an integrated file system
US20040075623A1 (en) 2002-10-17 2004-04-22 Microsoft Corporation Method and system for displaying images on multiple monitors
US7200840B2 (en) 2002-10-24 2007-04-03 International Business Machines Corporation Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture
US20040193754A1 (en) 2003-03-27 2004-09-30 International Business Machines Corporation DMA prefetch
GB2399900B (en) * 2003-03-27 2005-10-05 Micron Technology Inc Data reording processor and method for use in an active memory device
US7075541B2 (en) 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20050086040A1 (en) 2003-10-02 2005-04-21 Curtis Davis System incorporating physics processing unit
TW200513959A (en) * 2003-10-02 2005-04-16 Ageia Technologies Inc Method for providing physics simulation data
WO2005074425A2 (en) 2004-01-22 2005-08-18 Ageia Technologies, Inc. Parallel lcp solver and system incorporating same
US7421303B2 (en) * 2004-01-22 2008-09-02 Nvidia Corporation Parallel LCP solver and system incorporating same
US7236170B2 (en) * 2004-01-29 2007-06-26 Dreamworks Llc Wrap deformation using subdivision surfaces
TWI257790B (en) * 2004-10-29 2006-07-01 Ind Tech Res Inst System for protocol processing engine
US7630388B2 (en) * 2005-05-04 2009-12-08 Arm Limited Software defined FIFO memory for storing a set of data from a stream of source data
US8149854B2 (en) * 2005-06-30 2012-04-03 Intel Corporation Multi-threaded transmit transport engine for storage devices
US7386636B2 (en) * 2005-08-19 2008-06-10 International Business Machines Corporation System and method for communicating command parameters between a processor and a memory flow controller
JP2007293533A (ja) * 2006-04-24 2007-11-08 Toshiba Corp プロセッサシステム及びデータ転送方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058750B1 (en) * 2000-05-10 2006-06-06 Intel Corporation Scalable distributed memory and I/O multiprocessor system
US20050251644A1 (en) * 2004-05-06 2005-11-10 Monier Maher Physics processing unit instruction set architecture

Also Published As

Publication number Publication date
US20080282058A1 (en) 2008-11-13
KR20080099823A (ko) 2008-11-13
CN101320360B (zh) 2012-03-21
TW200901028A (en) 2009-01-01
KR100932038B1 (ko) 2009-12-15
GB2449168A (en) 2008-11-12
JP4428485B2 (ja) 2010-03-10
TWI416405B (zh) 2013-11-21
GB2449168B (en) 2009-04-22
CN101320360A (zh) 2008-12-10
GB0808251D0 (en) 2008-06-11
JP2009037593A (ja) 2009-02-19
US7627744B2 (en) 2009-12-01
DE102008022080A1 (de) 2008-12-11

Similar Documents

Publication Publication Date Title
DE102008022080B4 (de) Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE60011797T2 (de) Ausführung von mehreren fäden in einem parallelprozessor
DE602004012106T2 (de) Multikanal-DMA mit gemeinsamem FIFO-Puffer
DE4227345C2 (de) Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem
DE102013208423B4 (de) Virtuelle Speicherstruktur für Coprozessoren, die Speicherallokationsbegrenzungen haben
DE602004008783T2 (de) Cache-crossbar-arbitrierung
DE102019104394A1 (de) Befehlssatzarchitektur zum ermöglichen von energieeffizientem rechnen für exascalearchitekturen
DE60006270T2 (de) Parallele prozessorarchitektur
DE102013016871A1 (de) Technik zur Steigerung der Effizienz in mehrsträngigen Verarbeitungseinrichtngen
DE102020122174A1 (de) Berechne-in/nahe speicher- (cim) schaltungsarchitektur für vereinheitlichte matrix-matrix- und matrix-vektor-berechnungen
DE112016006154T5 (de) Multi-Core-Kommunikationsbeschleunigung Mithilfe einer Hardware-Warteschlangenvorrichtung
DE102020126212A1 (de) Vorrichtungen, Verfahren und Systeme für Anweisungen eines Matrixoperationsbeschleunigers
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE102013200991A1 (de) Automatisches abhängige-Aufgabe-Anstoßen
DE102013208558A1 (de) Verfahren und System zur Verarbeitung verschachtelter Stream-Events
DE102013208554A1 (de) Verfahren und System zum Managen verschachtelter Ausführungsströme
DE112010003758T5 (de) Instruktionen zum Verwalten einer parallelen Cache-Hierarchie
DE102013202495A1 (de) Verfahren zur Durchführung von interaktivem Debugging auf nicht unterbrechbaren Graphikverarbeitungseinheiten
DE112005000706T5 (de) Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene
DE102009046847A1 (de) Mehrklassen-Daten-Cache-Verfahren
DE102013201178A1 (de) Steuern von Arbeitsverteilung für Verarbeitung von Tasks
DE112005002432B4 (de) Verfahren und Vorrichtung zum Bereitstellen eines Quellenoperanden für eine Instruktion in einem Prozessor
DE102007060806A1 (de) Rangbasierter Speicher-Lese/Schreib-Mikrobefehls-Scheduler
DE102013114351A1 (de) System und Verfahren für Hardware-Disponierung bedingter Barrieren und ungeduldiger Barrieren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R020 Patent grant now final

Effective date: 20110806

R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE