DE3853256T2 - Parallele Pipelinerechner. - Google Patents

Parallele Pipelinerechner.

Info

Publication number
DE3853256T2
DE3853256T2 DE19883853256 DE3853256T DE3853256T2 DE 3853256 T2 DE3853256 T2 DE 3853256T2 DE 19883853256 DE19883853256 DE 19883853256 DE 3853256 T DE3853256 T DE 3853256T DE 3853256 T2 DE3853256 T2 DE 3853256T2
Authority
DE
Germany
Prior art keywords
output
fifo
input
computer
computers
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.)
Expired - Fee Related
Application number
DE19883853256
Other languages
English (en)
Other versions
DE3853256D1 (de
Inventor
David William Nuechterlein
Mark Anthony Rinaldi
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3853256D1 publication Critical patent/DE3853256D1/de
Application granted granted Critical
Publication of DE3853256T2 publication Critical patent/DE3853256T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

    Parallele Pipelinerechner
  • Die vorliegende Erfindung bezieht sich im allgemeinen auf parallele Rechner und insbesondere auf einen verbesserten Rechner mit einer parallelen und/oder Pipelinekonfiguration.
  • Computergrafik-Algorithmusverfahren stellen immer höhere Anforderungen an Rechnersysteme, beispielsweise Algorithmen für die komplexen Matrixmultiplikationen, die bei den Umwandlungen von Grafikdatenelementen eine Rolle spielen. Diese Anforderungen haben zu Überlegungen geführt, wie man Prozessoren, üblicherweise Mikroprozessoren, besser konfiguriert (parallel und/oder in Pipelinekonfiguration), so daß die Rechenleistung schneller und effektiver erfolgen kann.
  • Ein Geometrierechner zur Grafikverarbeitung wird beschrieben in "A VLSI Geometry Processor for Graphics", James Clark, Computer, July 1980, Seiten 59-68. Der in diesem Dokument beschriebene Rechner umfaßt eine ALU, drei Register und einen Stapel und ist so ausgelegt, daß er parallele Additionen, Subtraktionen und ähnliche Zweivariablenoperationen ausführt. Er ist auf die parallele Anordnung für Matrixmultiplikationen ausgerichtet. Die Programmierung und die Steuerung des im Artikel von Clark beschriebenen Rechners ist jedoch sehr komplex und erfordert eine externe Arbitrierungslogik.
  • EP-A-0201088 beschreibt einen parallelen Rechner, der eine Mehrheit an Prozessoren umfaßt, die an Datenleitungen angeschlossen sind, und der externe FIFO-Pufferspeicher verketten kann, so daß die Eingabe jedes Rechners in den FIFO-Puffer- speicher und die Ausgabe aus jedem FIFO-Pufferspeicher unabhängig von den Betriebsbedingungen der anderen Rechner ablaufen kann.
  • Eine Beschreibung der verdrahteten Logik ist beispielsweise in E J McCluskey: "Logic Design Principles", Prentice Hall, 1986, Seiten 142-144, enthalten. Es wird darauf hingewiesen, daß eine der wichtigsten Anwendungen der verdrahteten Logik zur Multiplexierung auf einen Bus dient.
  • Es ist ein Ziel der vorliegenden Erfindung, einen Rechner wie beispielsweise einen Mikroprozessor bereitzustellen, der parallel und/oder in Pipelineschaltung angeschlossen werden kann und der in der Ausführung komplexer mathematischer Operationen (beispielsweise Matrixmultiplikationen) im Vergleich zu Rechnern der bisherigen Technologie relativ leicht zu programmieren und zu steuern ist.
  • Gemäß der vorliegenden Erfindung wird ein Rechner bereitgestellt, der eine Mehrzahl an parallel miteinander verknüpften Prozessoren für den Empfang und die Verarbeitung eingegebener Daten umfaßt, wobei jeder Rechner eine arithmetische logische Einheit, einen FIFO-Ausgaberegisterstapel und ein Steuermittel umfaßt, dadurch charakterisiert, daß: die Rechner entsprechende Ausgabedatenleitungen besitzen, die so ausgerichtet und miteinander verknüpft sind, daß das Ergebnis der Verarbeitung der in einen einzelnen Rechner eingegebenen Daten am Ausgang der miteinander verknüpften Mehrzahl an Rechnern vorhanden ist, vorausgesetzt, die miteinander verbundenen Rechner (mit Ausnahme des genannten einzelnen Rechners) weisen an ihren Ausgabedatenleitungen einen vorbestimmten neutralen Wert auf; und daß das Steuermittel so ausgerichtet ist, daß es die eingegebenen Daten den einzelnen miteinander verknüpften Rechnern zuordnet, das Schreiben der Ergebnisse seiner Verarbeitung der eingegebenen Daten in seine dazugehörigen FIFO-Ausgaberegisterstapel steuert und im Zusammenhang mit dem Schreiben der Verarbeitungsergebnisse der einzelnen Rechner einen neutralen Wert in die dazugehörigen FIFO-Ausgaberegisterstapel der anderen Rechner schreibt, so daß der genannte vorbestimmte neutrale Wert an den Ausgabedatenleitungen der genannten anderen Rechner vorhanden ist, wenn auch die Ergebnisse der genannten Verarbeitung an den Ausgabedatenleitungen des Prozessors, der die Verarbeitung ausführt, vorhanden sind, wodurch die Ausgaben der miteinander verknüpften Rechner sequenziert werden, so daß zu einem beliebigen Zeitpunkt nicht mehr als ein Rechner an seinen Ausgabedatenleitungen die Ergebnisse seiner Verarbeitung von eingegebenen Daten aufweist.
  • Es wird bevorzugt, einen Rechner bereitzustellen, in dem die Eingaben der Mehrzahl der Rechner parallel an einen Eingabebus angeschlossen werden, und in dem die Ausgaben beispielsweise an ein verdrahtetes AND angeschlossen werden, wobei zusätzlich der Rechner Systemelemente zur Bereitstellung von Eingabedaten und Steuerdaten für einen Teil der Berechnung besitzt, die in einem Taktzyklus auf dem Eingabebus ausgeführt werden soll. Die Steuerdaten steuern jeden der Rechner, um entsprechend denjenigen Teil der Berechnung zu steuern, der dem jeweiligen Rechner zugeteilt wurde, und um in jeden Ausgabe-FIFO-Stapel das Ergebnis seiner Berechnung, oder aber einen neutralen Wert, beispielsweise eine logische "1" zu setzen, je nach seiner relativen Position in bezug auf die ausgeführte Berechnung, so daß die Rechner mehrere Berechnungen ausführen, und entweder ihren Teil der Berechnungsausgabe oder je nach dem eine "1" als ihre Ausgabe für den richtigen logischen Fluß zur Erzielung des endgültigen Ergebnisses setzen.
  • Die vorliegende Erfindung ermöglicht daher im Vergleich zu Konfigurationen der bisherigen Technologie eine beträchtliche Verbesserung des Kosten- und Geschwindigkeitsfaktors in parallelen Pipelinerechnern. Sie macht durch eine externe Arbitrierungslogik, die zu einer strikten Zeitteilungsmultiplexierung führt, mit Hilfe eines Bus-Master/Slave-Protokolls eine Steuerung mehrerer Rechner überflüssig.
  • Zur ausführlicheren Veranschaulichung der vorliegenden Erfindung folgt nun eine beispielhafte Beschreibung der vorliegenden Erfindung, wobei auf die folgenden begleitenden Zeichnungen Bezug genommen wird:
  • Figur 1 zeigt ein Blockdiagramm eines Rechners gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • Figur 2 zeigt ein Blockdiagramm eines einzelnen Rechners gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • Figuren 3A und 3B sind Darstellungen der Inhalte der Ausgabe- FIFOs mehrerer Rechner gemäß der vorliegenden Erfindung, die parallel miteinander verknüpft sind.
  • Figur 4 zeigt ein ausführlicheres Diagramm des Ausgabe-FIFOs des in Figur 2 dargestellten Rechners.
  • Figur 5 zeigt ein ausführlicheres Diagramm der Inhalte der Ausgabe-FIFO-Steuerungen des in Figur 4 dargestellten Ausgabe- FIFOs.
  • Figur 6 zeigt das Statusdiagramm und die nächsten Statusgleichungen für die in Figur 5 dargestellte Statusmaschine.
  • Figur 7 zeigt ein ausführlicheres Diagramm des Eingabe-FIFOs des in Figur 2 dargestellten Rechners.
  • Figur 8 zeigt die Inhalte der Eingabe-FIFO-Steuerungen des in Figur 7 dargestellten Eingabe-FIFOs.
  • Figur 8 ist ein auf Figur 1 basierendes Diagramm, das die Verbindung von vier Rechnern gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zeigt.
  • Figuren 10A und 10B sind Diagramme, die den Diagrammen der Figuren 3A und 3B ähneln.
  • Figuren 11A und 11B sind Diagramme, die den Diagrammen der Figuren 10A und 10B ähneln.
  • Figur 1 stellt einen Rechner 10 dar, der eine parallele Konfiguration sowie eine Pipelinekonfiguration der Rechner 12-28 umfaßt. Eine solche Rechnerkonfiguration ist beispielsweise dann wünschenswert, wenn mehrere Multiplikationen wie beispielsweise Matrixmultiplikationen ausgeführt werden sollen. Die Pipelineverarbeitung und die parallele Verarbeitung gestatten eine Multiplikation der Matrix in weniger Zyklen, als dies unter Verwendung eines einzelnen Rechners möglich ist.
  • Figur 2 ist ein Blockdiagramm eines Rechners gemäß einem Ausführungsbeispiel der vorliegenden Erfindung, bestehend aus einem Eingabe-FIFO 30, einem ALU 32, einem Ausgabe-FIFO 34 und einer mikroprogrammierten Steuereinheit ("MCU") 36. Diese Kombination bildet zusammen einen vollständigen einzelnen Rechner wie beispielsweise einen der Rechner 12-28 (Figur 1). Das wichtige an der vorliegenden Erfindung ist der Ausgabe- FIFO 34 und seine Anschlüsse innerhalb und außerhalb des Rechners, der dieses FIFO enthält.
  • Jeder dieser Rechner unterliegt der Steuerung seines MCU 36. Diese Art von Steuereinheit ist bekannt. Sie ist so konfiguriert, daß sie das Lesen der Daten von einem Eingabegerät aus, die Funktionen des ALU 32 und das Schreiben in ein Ausgabegerät steuern kann. Zusätzlich ist sie so konfiguriert, daß sie den Status der EMPTY-Leitung 38 vom Eingabe-FIFO 30 und der FULL-Leitung 40 vom Ausgabe-FIFO 34 testen und unter geeigneten Bedingungen auf der Grundlage des Status dieser Leitungen in Leerzyklen warten kann. Sie ist so konfiguriert, daß sie Leerzyklen erzeugt, wenn das Mikroprogramm versucht, entweder ein leeres Eingabe-FIFO 30 zu lesen oder ein volles Ausgabe- FIFO 34 zu beschreiben. Sie führt kontinuierlich Leerzyklen aus, bis ein anderer Rechner entweder Daten in seinen Eingabe- FIFO 30 stellt oder aus seinem Ausgabe-FIFO 34 holt.
  • Die Funktionen des ALU 32 im bevorzugten Ausführungsbeispiel umfaßt die Gleitkommamultiplikation und -addition, um eine Hochgeschwindigkeitsberechnung der Matrixmultiplikationsalgorithmen zu ermöglichen, da dies als eine wünschenswerte Anwendung betrachtet wird. Das Eingabe-FIFO 30 ermöglicht eine Pufferung, die einen reibungslosen Ablauf des Rechners insbesondere in der Pipelineanordnung unterstützt. Im Aufbau ähnelt es sehr dem Ausgabe-FIFO 34. Beide FIFOs werden nachfolgend ausführlich beschrieben.
  • Die anderen in Figur 2 dargestellten Leitungen, nämlich die DATA IN-Leitung 42, eine Schreibeingabe-FIFO-Leitung 44, die INPUT FIFO POSITION AVAILABLE-Leitung 46, die ALU CONTROL- Leitung 48, die CONDITION CODES-Leitung 50, die INPUT FIFO READ-Leitung 52, die OUTPUT FIFO WRITE-Leitung 54, die ALU BUS-Leitung 56, der INPUT FIFO BUS 58, die READ OUTPUT FIFO- Leitung 60 und die DATA OUT-Leitung 62 sind allesamt Standardleitungen mit implementierten Standardeigenschaften gemäß bekannten Verfahren in der bisherigen Technologie. OUTPUT FIFO DATA VALID 64 und HOLE-Leitung 66 werden nachfolgend aus führlicher beschrieben.
  • Vor einer Beschreibung der Operation des in Figur 2 gezeigten OUTPUT FIFO 34 wird eine kurze Beschreibung des Aufbaus eines "Lochs" geliefert. Eine ausführlichere Beschreibung der Operation eines "Lochs" folgt an späterer Stelle in diesem Dokument.
  • Die Figuren 3A und 3B sind Darstellungen der Inhalte der OUTPUT FIFOs 34A-D für die vier Rechner 12, 14, 16 bzw. 18. In diesen Diagrammen stellt der Buchstabe "H" ein Daten-"Loch", einen Platzhalter im FIFO-Register und keine Daten dar. Im bevorzugten Ausführungsbeispiel wird ein Loch erzeugt, indem alle "1" in diese Registerstelle geladen werden. Die Registerinhalte sind beispielsweise das Ergebnis einer ausgeführten Vektorberechnung, in der die Mengen X, Y, Z und W durch die entsprechenden Rechner 12-18 parallel berechnet werden. Diese Rechner sind so programmiert, daß ihre entsprechenden Ergebnisse sequenziell an ihren Ausgängen erscheinen.
  • In Figur 3A erscheint das Ergebnis der Berechnung des Werts X am Ausgang des FIFO 34A. An allen anderen OUTPUT FIFOs 34C-D erscheinen Löcher. Wie oben bereits angeführt wurde, sind die Ausgabetreiber der Ausgabe-FIFOs im bevorzugten Ausführungsbeispiel offene Kollektoren. Da es sich bei den Löchern um Daten-"1s" handelt, ist der Wert, der am Ausgabebus, an den alle Ausgabe-FIFOs angeschlossen sind, erscheint, der Wert X; die Inhalte der anderen Ausgabe-FIFOs spielen dabei keine Rolle.
  • Figur 3B zeigt die Inhalte dieser Ausgabe-FIFOs einen Zyklus später, wobei das Ergebnis der Y-Berechnung am Ausgang des OUTPUT FIFO 34B geliefert wird. An allen anderen OUTPUT FIFOs 34A, C, D erscheinen Löcher. Es ist auf diese Weise ersichtlich, wie durch das Laden der Löcher an geeigneten Stellen parallele Berechnungen ausgeführt und die Ergebnisse dieser Berechnungen sequenziell auf einen Ausgabebus, an den alle parallelen Rechner angeschlossen sind, gesetzt werden können.
  • Wir kehren nun zu Figur 2 zurück. Das OUTPUT FIFO 34 ist ein synchrones FIFO, weil es durch einen einzigen Systemtakt, der an jedes Rechnerelement geleitet wird, getaktet wird. Die Eingabeseite von OUTPUT FIFO 34 und die Ausgabeseite von OUTPUT FIFO 34 werden mit derselben Taktgeschwindigkeit betrieben. Figur 4 zeigt ausführlicher das OUTPUT FIFO 34 des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung. Das OUTPUT FIFO 34 wurde auf der Grundlage eines 8 x 32 Doppelport-RAM 70 sowie der erforderlichen Logik OUTPUT FIFO CONTROLS 72 zu dessen Steuerung aufgebaut. Dieser RAM 70 besitzt standardmäßig die READ ADDRESS-Eingabe 74, die WRITE ADDRESS-Eingabe 76 und die WRITE ENABLE-Eingabe 78, die durch die OUTPUT FIFO CONTROLS 72 bereitgestellt werden. Er ist in der Lage, in jedem Zyklus eine Schreib- und eine Leseoperation auszuführen. Der Eingabebus 80 ist die Ausgabe von 32 OR- Gattern 82 mit doppeltem Eingang. Die Eingaben an die 32 OR- Gatter 82 mit doppeltem Eingang sind die einzelnen Bits des 32bit-breiten ALU BUS 56, und allen 32 Gattern ist die HOLE- Leitung 66 gemeinsam. Im aktiven Zustand bewirkt die HOLE- Leitung 66, daß die Eingaben an den RAM 70 alle "1" sind. Der MCU 36 (Figur 2) verwendet diese Leitung, um den oben angeführten neutralen Wert zu erzeugen, der in das OUTPUT FIFO 34 geschrieben wird.
  • Die Leitungen des Ausgabebusses 84 von RAM 70 werden als Eingaben an die nicht-invertierenden offenen Kollektortreiber 86 angeschlossen. Die Ausgaben der Treiber 86 werden aus dem Rechner herausgenommen, um sie an die offenen Kollektortreiber der Ausgabe-FIFOs in anderen Rechnern anzuschließen, an die dieser Rechner parallel angeschlossen werden kann.
  • OUTPUT FIFO CONTROLS 72 erzeugt zusätzlich zur Schreibadresse, zur Leseadresse und zu den Schreibaktivierungssignalen, die bereits angeführt wurden, die Signale FULL und OUT_EMPTY. Die Signalleitung OUT_EMPTY 88 ist eine Eingabe an den invertierenden offenen Kollektortreiber 89, der aus diesem Rechner herausgenommen und parallel mit den Ausgaben der anderen invertierenden Treiber anderer Ausgabe-FIFOs in ähnlicher Weise an den oben beschriebenen DATA OUT BUS 62 angeschlossen wird.
  • OUTPUT FIFO CONTROLS 72 empfangen als Eingabe die READ OUTPUT FIFO-Leitung 60, die OUTPUT FIFO WRITE-Leitung 54 und die OUTPUT FIFO DATA VALID-Leitung 64. Die READ OUTPUT FIFO- Leitung 60 stammt von den Eingabe-FIFO-Steuerungen des Rechners in der nächsten Phase. Die OUTPUT FIFO WRITE-Leitung 54 wird im Innern dieses Rechners durch den MCU 36 (Figur 2) erzeugt. Das OUTPUT FIFO DATA VALID-Signal wird durch die DOT AND-Verbindung erzeugt, die an vorheriger Stelle beschrieben wurde. Es wird darauf hingewiesen, daß der Wert auf der OUTPUT FIFO DATA VALID-Leitung 64 nicht lediglich die Umkehr der OUT_EMPTY-Leitung 88 ist. Die Behauptung wird rückgängig gemacht, wenn EMPTY behauptet wird, die Behauptung gilt jedoch nur, wenn alle OUTPUT FIFOs, an die es parallel angeschlossen ist, versuchen, die Behauptung seiner entsprechenden internen EMPTY-Leitung aufgrund der DOT AND-Funktion des offenen Kollektortreibers rückgängig zu machen. Die OUTPUT FIFO DATA VALID-Leitung 64 zeigt, daß alle parallel angeschlossenen Ausgabe-FIFOs nicht leer sind.
  • Figur 5 zeigt die Inhalte der OUTPUT FIFO CONTROLS 72 (Figur 4). Diese enthalten die Schreibadreßlogik, die das Gatter 90, den THREE BIT INCREMENTER 92 und das THREE BIT WRITE-Register 94 umfaßt. Sie enthalten außerdem die Leseadreßlogik, die das Gatter 96, den THREE BIT INCREMENTER 98 und das READ-Register 100 enthält. Zusätzlich enthalten sie eine Statusmaschine, die den Dreibit-Komparator 102, die Gatter 104, das Einzelbit-Register 106 und das Einzelbit-Register 108 umfaßt. Figur 6 zeigt das Statusdiagramm und die nächsten Statusgleichungen für die Statusmaschine.
  • Wir gehen zurück zu Figur 4. Die READ- und WRITE-Adressen werden als Zeiger in den Doppelport-RAM 70 verwendet. Der READ-Zeiger befindet sich im Stapel ganz oben, der WRITE- Zeiger befindet sich im Stapel ganz unten. Die Zeiger werden in umlaufender Richtung inkrementiert (Das heißt, sie wickeln sich ab bis auf Null). Wenn die Zeiger jemals gleich sind, ist das FIFO entweder leer oder voll.
  • Die Statusmaschine zeichnet auf, in welchem Status sich die Zeiger befinden: 10 = leer, 00 = keines von beiden, 01 = voll. Zu Beginn werden die Zeiger gleich, und der Status wird durch einfache Logik (nicht dargestellt) auf den leeren Status gesetzt. Der leere Status blockiert Leseoperationen. Sobald ein WRITE auftritt, wird der WRITE-Zeiger inkrementiert. Dies bewirkt, daß die Behauptung rückgängig gemacht wird und der Status keines von beiden wird eingegeben.
  • Im Status keines von beiden sind Lese- und Schreiboperationen gestattet. Der Status keines von beiden wird aufrechterhalten, bis die Zeiger wieder gleich sind. Die INC-READ-Leitung 110, die anzeigt, daß ein READ aufgetreten ist, wird verwendet, um zu bestimmen, ob in den vollen Status gegangen oder in den leeren Status zurückgekehrt wird. Wenn die INC-READ-Leitung 110 nicht aktiv ist, bewegt sich der WRITE-Zeiger auf die Oberseite des Lesezeigers, was die voll-Bedingung bedeutet. In der voll-Bedingung werden Schreiboperationen blockiert. Sobald ein READ auftritt, wird erneut der Status keines von beiden eingegeben.
  • Figur 7 zeigt das INPUT FIFO 30 (Figur 2) des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung. Wie ersichtlich ist, ist das INPUT FIFO 30 mit dem OUTPUT FIFO 34 (Figur 4) nahezu identisch. Es befindet sich um einen Doppelport-RAM 270 und die geeignete Steuerlogik INPUT FIFO CONTROLS 272. Der Eingabebus des RAM ist der DATA-IN-Bus 42 vom vorherigen Pipelinerechner. Es gibt kein OR-Gatter wie beispielsweise das OR-Gatter 82 in Figur 4 zur Erzeugung eines neutralen Werts. Der OUTPUT-Bus 58 des RAM ist der Eingabebus des ALU 32 (siehe Figur 2). Der MCU 36 (Figur 2) stellt die READ INPUT FIFO- Leitung 52 bereit und besitzt eine IN_EMPTY-Leitung 38. Dies steht im Gegensatz zum OUTPUT FIFO (siehe Figur 4), wo die Verbindungen zur WRITE OUTPUT FIFO-Leitung 54 und zur OUT_FULL-Leitung 40 gehen. Die IN_EMPTY-Leitung 38 wird an den invertierenden offenen Kollektortreiber 284 angeschlossen. Die Ausgabe des offenen Kollektortreibers 284 ist die INPUT FIFO POSITION AVAIL-Leitung 46, die parallel an die anderen INPUT FIFO POSITION AVAIL-Leitungen an den anderen Prozessoren, die mit diesem parallel geschaltet sind, angeschlossen ist. Die Steuerlogik empfängt außerdem die WRITE INPUT FIFO-Leitung 44 als eine Eingabe. Diese Leitung kommt vom vorherigen Pipelineprozessor.
  • Figur 8 zeigt die Inhalte der INPUT FIFO CONTROLS 272 (Figur 7). Der einzige Unterschied zwischen den Steuerungen für das INPUT FIFO 30 und das OUTPUT FIFO 34 sind die Verbindungen zu den Gattern 90 und 96 des OUTPUT FIFO 34. Im INPUT FIFO 30 hat das Gatter 290 als Eingaben WRITE INPUT FIFO 44 und INPUT FIFO POSITION AVAIL 35. Gatter 296 hat READ INPUT FIFO-Leitung 52 und IN_EMPTY-Leitung 38 als Eingaben an die nichtinvertierenden und invertierenden Eingaben. Die anderen Leitungen liegen in Übereinstimmung mit der Darstellung. Der Rechner im bevorzugten Ausführungsbeispiel gemäß obiger Beschreibung ist insbesondere darauf ausgerichtet, vorzugsweise parallel mit anderen ähnlichen Rechnern betrieben zu werden. Es ist nur ein geringes Maß an Mikrocode erforderlich, um ihn zu unterstützen. Die Durchführung einer Koordinatenumwandlung ist ein sehr gutes Beispiel für den Vorteil von mehreren parallel angeordneten Rechnern gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung. In typischen Grafikkoordinatenumwandlungen wird die Koordinate als eine 1 mal 4 Matrix der Daten x, y, z, 1 dargestellt. Die Umwandlung wird durch Multiplikation dieser 1 mal 4 Matrix mit einer 4 mal 4 Matrix, der sogenannten Umwandlungsmatrix, ausgeführt. Hierfür sind 12 Multiplikationen und 9 Additionen erforderlich. Im bevorzugten Ausführungsbeispiel ist es möglich, 4 Rechner parallel zu verwenden, von denen jeder 4 Multiplikationen und 3 Additionen ausführt. Es ist möglich, dies in einer vollständigen Pipelineanordnung durchzuführen, so daß jeder Rechner ein neues Datenelement einliest und in jedem Zyklus ein neues Ergebnis erstellt. Jeder Rechner enthält eine einzelne Spalte der Umwandlungsmatrix in Registern in seinem ALU. In Parallelanordnung berechnet jeder Rechner das Ergebnis der eingehenden 1 mal 4 Matrix mal seiner 4 mal 1 Spaltenmatrix. Durch Sortieren der Ergebnisse in der richtigen Reihenfolge wird die umgewandelte Koordinate erstellt. In normalen Grafikanwendungen wird anstelle einer einzelnen Koordinate eine Liste von Eingabepunkten bereitgestellt. In die vier Rechner, die parallel angeordnet sind, kann ein konsekutiver Koordinatendatenstrom eingespeist werden, der aufrechterhalten werden kann, wenn in jedem Zyklus eine eingehende und eine ausgehende Datenübertragung stattfindet.
  • Die hierfür erforderliche Programmierunterstützung ist sehr logisch aufgebaut. Die Verwendung der Eingabe- und Ausgabe- FIFOs und ihrer transparenten Mikrocode-Leerzyklen vereinfacht die Synchronisation der Chips. Die einzige andere Unterstützung ist die Fähigkeit, im Ausgabe-FIFO ein "Loch" zu erzeugen. Um Chips parallel miteinander zu verbinden, verknüpft der Benutzer einfach einzeln die Eingabe- und Ausgabe-Pins miteinander. Dies umfaßt die Datenbusse sowie die FIFO Handshaking- Leitungen.
  • Figur 9 ist ein Diagramm, das auf Figur 1 basiert, das die Verbindung der vier parallelen Rechner 12-18 darstellt, die den Rechner 22 in einer Parallel-/Pipeline-Konfiguration versorgen. Im Interesse der Verdeutlichung wurden die Rechner 24- 28 von Figur 1 ausgelassen. Es wird darauf hingewiesen, daß ihre Eingaben und Ausgaben parallel in derselben Weise wie die Eingaben und Ausgaben der Rechner 12-18 angeschlossen sind. Die Ausgabetreiber besitzen eine 'dot ANDing'-Konstruktion. Wenn ein Rechner seine Ausgabe insgesamt hoch treibt, hat dies keine Auswirkung auf das Ergebnis der dot ANDs. Jeder andere Rechner, der niedrig treibt, bewirkt, daß das Ergebnis niedrig ist.
  • Es gibt einen Kontrollpunkt (Leitung 66, Figur 4), der den in den RAM 70 (Figur 4) gehenden Bus 62 dazu zwingt, daß er nur aus Einsen besteht. Hierbei handelt es sich um ein "Loch". Um erneut auf die Figuren 3A und 3B zu kommen und diese und den dazu gehörenden Text zu erweitern, zeigen die Figuren 10A und 10B die Inhalte der Ausgabe-FIFOs von vier Rechnern nach Abschluß einer Punktumwandlung. In Figur 10A sehen wir die vier FIFOs 34A-D mit den darin enthaltenen Daten. Der Rechner A hat ein berechnetes Ergebnis am unteren Ende von FIFO 34A. Die drei anderen Rechner B-D besitzen je ein Loch in ihren FIFOs 34B-D. Werden die Daten wie in Figur 10B ausgelesen, ist der zusammengesetzte Wert auf dem dot AND-Ausgabebus 620 das gewünschte Ergebnis des Rechners 1. Auf dieselbe Weise ordnet sich der Rest der Ergebnisse der verbleibenden Rechner 34B-D mit einem Loch in jedem zweiten Rechner an.
  • Die vorangehende Beschreibung impliziert, daß alle Rechner in Sperrschrittsynchronisation untereinander arbeiten müssen. Dies ist jedoch nicht nötig. Wie oben bereits angeführt wurde, werden die FIFO Handshake-Leitungen ebenfalls einer dot AND- Operation unterzogen. Die Leitungen von den vier INPUT FIFOs (30, Figur 2), die anzeigen, daß es mindestens eine offene Position im INPUT FIFO (Leitung 46, Figur 2, Figur 9) gibt, werden einer dot AND-Operation unterzogen. Auf der nächsten Stufe in der Pipeline sieht man, daß das AND je eine Position verfügbar hat. Das heißt: überall ist mindestens eine Position verfügbar. Auf dieselbe Weise wird die Ausgabe-FIFO Handshake- Leitung, die angibt, daß im OUTPUT FIFO (Leitung 64, Figur 2, Figur 9) mindestens ein gültiges Datenelement vorhanden ist, einer dot AND-Operation unterzogen. Von außen betrachtet sieht man den zusammengesetzten Wert der AND-Operation, der darin besteht, daß alle Rechner mindestens ein gültiges Datenelement besitzen.
  • Die Figuren 11A und 11B zeigen eine Situation, in der genau das ins Spiel kommt. Figur 11A zeigt zu einem sehr frühen Zeitpunkt in einer Routine den Status der vier OUTPUT FIFOs 34A-34D. Alle vier Rechner lesen Punkte ein und berechnen ihr Ergebnis, doch keiner ist noch damit fertig. Alle Rechner außer Rechner A haben mindestens ein Loch in ihr OUTPUT FIFO 34B-D gesetzt. Figur 11A zeigt die Bedingung der Leitung, die aus dem Ausgabe-FIFO kommt, das anzeigt, ob das FIFO mindestens ein gültiges Datenelement, das heißt den OFV-Status, besitzt. Die Rechner B-D versuchen, die Ausgabe-FIFO-Leitung mit den gültigen Daten hoch zu treiben. Der Rechner A versucht jedoch, sie niedrig zu treiben. Da es sich um eine dot AND- Operation handelt, ist die zusammengesetzte Leitung niedrig, weil eben eine der Leitungen niedrig ist. Dies verhindert, daß die externe Welt Daten aus einem der Chips entfernt. Dies gewährleistet, daß sich das erste Loch in den Rechnern B-D mit dem ersten Ergebnis ausrichtet, wie dies gewünscht wird. Das Eingabe-FIFO bleibt auf dieselbe Weise in Synchronisation.
  • Die Verwendung von Rechnern in Parallelanordnung ist nicht auf Punktumwandlungsalgorithmen beschränkt. Jeder beliebige Algorithmus, der in Bereiche aufgeteilt werden kann, die an einem gemeinsamen Eingabestrom arbeiten und eine bekannte Anzahl an Ergebnissen erzeugen, wäre anwendbar. Genau genommen ist es nicht einmal erforderlich, daß die Bereiche an gemeinsamen Daten arbeiten oder denselben Algorithmus auf die Daten anwenden. Da jeder Rechner einen eigenen Mikrocode besitzt, könnte der erste Rechner die ersten n Datenelemente lesen und den Rest des Eingabestroms ignorieren. Der zweite Rechner könnte die ersten n Datenelemente ignorieren, das nächste m einlesen und dann den Rest ignorieren usw. Die Algorithmen können unabhängig mit verschiedenen Pfadlängen laufen. Es ist lediglich erforderlich, daß jeder Rechner die Reihenfolge und die Anzahl der Ergebnisse von jedem zweiten Rechner, der parallel angeordnet ist, kennt, so daß er die richtige Anzahl an Löchern an die richtigen Positionen in seinem Ausgabe-FIFO setzen kann.

Claims (3)

1. Ein Rechner, der eine Mehrzahl an parallel miteinander verknüpften Prozessoren (12, 14, 16, 18) für den Empfang und die Verarbeitung eingegebener Daten umfaßt, wobei jeder Rechner eine arithmetische logische Einheit (32), einen FIFO-Ausgaberegisterstapel (34) und ein Steuermittel (36) umfaßt, dadurch charakterisiert, daß
die Rechner entsprechende Ausgabedatenleitungen besitzen, die so ausgerichtet und miteinander verknüpft sind, daß das Ergebnis der Verarbeitung der in einen einzelnen Rechner eingegebenen Daten am Ausgang der miteinander verknüpften Mehrzahl an Rechnern vorhanden ist, vorausgesetzt, die miteinander verbundenen Rechner (mit Ausnahme des genannten einzelnen Rechners) weisen an ihren Ausgabedatenleitungen einen vorbestimmten neutralen Wert auf; und
daß das Steuermittel so ausgerichtet ist, daß es die eingegebenen Daten den einzelnen miteinander verknüpften Rechnern zuordnet, das Schreiben der Ergebnisse seiner Verarbeitung der eingegebenen Daten in seine dazugehörigen FIFO-Ausgaberegisterstapel steuert und im Zusammenhang mit dem Schreiben der Verarbeitungsergebnisse des einzelnen Rechners einen neutralen Wert in die dazugehörigen FIFO-Ausgaberegisterstapel der anderen Rechner schreibt, so daß der genannte vorbestimmte neutrale Wert an den Ausgabedatenleitungen der genannten anderen Rechner vorhanden ist, wenn auch die Ergebnisse der genannten Verarbeitung an den Ausgabedatenleitungen des Prozessors, der die Verarbeitung ausführt, vorhanden sind, wodurch die Ausgaben der miteinander verknüpften Rechner sequenziert werden, so daß zu einem beliebigen Zeitpunkt nicht mehr als ein Rechner an seinen Ausgabedatenleitungen die Ergebnisse seiner Verarbeitung von eingegebenen Daten aufweist.
2. Ein Rechner gemäß Anspruch 1, bei dem die Eingaben (42, 44, 46) der genannten Mehrzahl an Prozessoren parallel an einen Eingabebus angeschlossen sind und deren Ausgaben parallel an einen Ausgabebus angeschlossen sind, wobei der Rechner des weiteren ein Mittel (36) aufweist, der die Eingabedaten und die Steuerdaten für die in einem Taktzyklus auf dem genannten Eingabebus auszuführende Verarbeitung bereitstellt, wobei die genannten Steuerdaten jeden der genannten Rechner so steuern, daß sie jeweils die Verarbeitung der eingegebenen Daten, die diesem Rechner zugeordnet werden, ausführen, und in dessen Ausgaberegisterstapel entweder das Ergebnis seiner Berechnung oder den genannten neutralen Wert für jeden Taktzyklus stellen, je nach dem, ob der Rechner die Verarbeitung für den genannten Taktzyklus ausführt oder nicht.
3. Ein Rechner gemäß Anspruch 1 oder 2, bei dem jeder der genannten Mehrzahl an Prozessoren einen Eingabe-FIFO-Puffer für den Empfang eingegebener Daten besitzt, wobei das genannte Steuermittel so ausgerichtet ist, einen Indikator, der anzeigt, ob der Eingabe-FIFO leer ist, und einen Indikator, der anzeigt, ob der Ausgabe-FIFO voll ist, zu testen und bei einem positiven Ergebnis in den Tests Leseoperationen vom Eingabe-FIFO bzw. Schreiboperationen in den Ausgabe-FIFO zu vermeiden.
DE19883853256 1987-10-30 1988-10-13 Parallele Pipelinerechner. Expired - Fee Related DE3853256T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11515087A 1987-10-30 1987-10-30

Publications (2)

Publication Number Publication Date
DE3853256D1 DE3853256D1 (de) 1995-04-13
DE3853256T2 true DE3853256T2 (de) 1995-09-14

Family

ID=22359580

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19883853256 Expired - Fee Related DE3853256T2 (de) 1987-10-30 1988-10-13 Parallele Pipelinerechner.

Country Status (3)

Country Link
EP (1) EP0314342B1 (de)
JP (1) JPH0697450B2 (de)
DE (1) DE3853256T2 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002046917A1 (en) * 2000-12-07 2002-06-13 Koninklijke Philips Electronics N.V. Digital signal processing apparatus
GB2430052A (en) * 2005-09-07 2007-03-14 Tandberg Television Asa CPU with a buffer memory directly available to an arithmetic logic unit
US11227925B2 (en) 2017-04-14 2022-01-18 Ptek Technology Co., Ltd. Semiconductor device and charging system using the same

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8002344A (nl) * 1980-04-23 1981-11-16 Philips Nv Multiprocessor systeem met gemeenschappelijke data/adres-bus.
JP2781550B2 (ja) * 1985-05-10 1998-07-30 株式会社日立製作所 並列処理計算機

Also Published As

Publication number Publication date
DE3853256D1 (de) 1995-04-13
JPH01124028A (ja) 1989-05-16
EP0314342A3 (en) 1990-10-17
EP0314342B1 (de) 1995-03-08
JPH0697450B2 (ja) 1994-11-30
EP0314342A2 (de) 1989-05-03

Similar Documents

Publication Publication Date Title
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69229244T2 (de) Multiprozessor mit effizienter Verwendung von Prozessoren mit unterschiedlichen Leistungseigenschaften
DE68927911T2 (de) Datenverarbeitungssystem
DE3789345T2 (de) Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen.
DE69030128T2 (de) Signalprozessor
DE69419524T2 (de) Sperrsynchronisierung für verteilte speicher-massivparallelrechner
DE69032381T2 (de) Vorrichtung und Verfahren für die kollektive Verzweigung in einem Mehrbefehlsstrommultiprozessor
DE69619885T2 (de) Datenverarbeitungsanordnung mit Koprozessor
DE2819571C2 (de)
DE3689394T2 (de) Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor.
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE69033444T2 (de) Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE3424962C2 (de)
DE3784050T2 (de) Ein paralleler datenprozessor.
DE1549523B2 (de) Datenverarbeitungsanlage
DE3248215A1 (de) Vektorprozessor
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE60226141T2 (de) Fifo-speicher system und verfahren dafür
DE2835095A1 (de) Gekoppeltes, mikroprogrammiertes prozessorsystem
DE3709675C2 (de)
DE69230626T2 (de) Informationsverarbeitungssystem mit der Fähigkeit zum Betreiben von mehreren Vektorpipelines in zwei unterscheidlichen Wirkungsweisen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee