DE19861337B4 - Busverbindungssystem - Google Patents

Busverbindungssystem Download PDF

Info

Publication number
DE19861337B4
DE19861337B4 DE19861337A DE19861337A DE19861337B4 DE 19861337 B4 DE19861337 B4 DE 19861337B4 DE 19861337 A DE19861337 A DE 19861337A DE 19861337 A DE19861337 A DE 19861337A DE 19861337 B4 DE19861337 B4 DE 19861337B4
Authority
DE
Germany
Prior art keywords
information
bus
processing element
data
register
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
DE19861337A
Other languages
English (en)
Inventor
Roy R. Fort Collins Faget
Ronald D. Fort Collings Larson
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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
Priority claimed from US08/847,271 external-priority patent/US5911056A/en
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Priority to DE1998116153 priority Critical patent/DE19816153B4/de
Priority claimed from DE1998116153 external-priority patent/DE19816153B4/de
Application granted granted Critical
Publication of DE19861337B4 publication Critical patent/DE19861337B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/437Ring fault isolation or reconfiguration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40169Flexible bus arrangements
    • H04L12/40176Flexible bus arrangements involving redundancy
    • H04L12/40182Flexible bus arrangements involving redundancy by using a plurality of communication lines

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)

Abstract

Eine Schnittstellenschaltung, die in eine Gruppe aus Verarbeitungselementen, die in einem Ring verbunden sind, aufgenommen ist, umfasst ein Sicherheits-FIFO, um Informationen, die von der Schnittstellenschaltung empfangen werden, temporär zu speichern, wenn dieselbe eine Anzeige empfängt, dass dieselbe vorübergehend keine Informationen zu dem nächsten Verarbeitungselement in dem Ring weiterleiten soll. Wenn die Schnittstellenschaltung eine solche Anzeige empfängt, deaktiviert dieselbe ein abgehendes Bereitschaftssignal zu dem vorgelagerten Verarbeitungselement in dem Ring, wodurch bewirkt werden soll, dass das vorgelagerte Verarbeitungselement damit aufhört, Informationen zu senden. Sobald die Schnittstellenschaltung eine Anzeige empfängt, dass dieselbe wieder Informationen übertragen kann, wird der Inhalt des Sicherungs-FIFOs an den Ausgang der Schnittstelle freigegeben und möglicherweise mit Lesedaten aus dem Kern gemischt. Die Steuerung des Informationsflusses in das und aus dem Sicherungs-FIFO wird erreicht, indem Informationen in Einzel-Bitregistern in der Steuerlogik der ASIC-Schaltung gespeichert werden, in der die Schnittstellenschaltung implementiert ist, die den Inhalt der verschiedenen Register in dem Sicherungs-FIFO identifizieren.

Description

  • Diese vorliegende Erfindung betrifft ein Busverbindungssystem für digitale Pipeline-Datenübertragungen.
  • Computergraphiksysteme werden im allgemeinen zum Anzeigen graphischer Darstellungen von Objekten auf einem zweidimensionalen Anzeigebildschirm verwendet. Gegenwärtige Computergraphiksysteme können hochdetaillierte Darstellungen liefern und werden bei einer Vielzahl von Applikationen verwendet.
  • Bei typischen Computergraphiksystemen wird ein Objekt, das auf einem Anzeigebildschirm dargestellt werden soll, in eine Mehrzahl von Graphikgrundelementen (graphics primitives) aufgeteilt. Grundelemente sind Grundkomponenten eines Graphikbildes, wie z. B. Punkte, Linien, Vektoren und Polygone (z. B. Dreiecke). Typischerweise ist ein Hardware/Softwareschema implementiert, um die Graphikgrundelemente, die eine Ansicht eines oder mehrerer Objekte aufweisen, auf einem zwei-dimensionalen Anzeigebildschirm aufzubereiten (oder zu zeichnen).
  • Ein Hostcomputer liefert im allgemeinen Grundelementdaten, die die Grundelemente eines drei-dimensionalen Objekts, das aufbereitet werden soll, darstellen. Wenn das Grundelement beispielsweise ein Dreieck ist, kann der Hostcomputer das Dreieck bezüglich der x-, y-, z-Koordinaten und der Rot-, Grün-, Blau-Farbwerte (R-, G-, B-Farbwerte) jedes Scheitelpunkts definieren. Eine Aufbereitungshardware interpoliert die Grundelementdaten, um die Anzeigebildschirmpixel, die jedes Grundelement bilden, und die R-, G-, B-Farbwerte für jedes Pixel zu berechnen.
  • Die Grundkomponenten eines typischen Computergraphiksystems umfassen einen Geometriebeschleuniger, einen Rasterisierer und einen Rahmenpuffer. Das System kann ferner eine weitere Hardwarekomponenten, wie z. B. eine Texturabbildungshardware (die im folgenden beschrieben wird), umfassen. Der Geometriebeschleuniger empfängt von dem Hostcomputer eine Scheitelpunktkoordinate und Farbdaten für die Grundelemente, die ein Objekt bilden. Der Geometriebeschleuniger führt typischerweise bezüglich der Scheitelpunktkoordinatendaten (d.h. bezüglich der Bildschirmraumkoordinaten) Umformungen durch, zerlegt Vierecke in Dreiecke und kann weitere Funktionen, wie z. B. eine Helligkeitseinstellung, ein Abschneiden und ein Durchführen von Ebenengleichungsberechnungen für jedes Grundelement, durchführen. Das Ausgangssignal aus dem Geometriebeschleuniger, das als Aufbereitungsdatensignal bezeichnet wird, wird von dem Rasterisierer (und optional von einer Texturabbildungshardware) verwendet, um endgültige Bildschirmraumkoordinaten und RGB-Farbwerte für jedes Pixel, die die Grundelemente bilden, zu berechnen. Die Enddaten werden in dem Rahmenpuffer für eine Anzeige auf einem Anzeigebildschirm gespeichert. Einige Graphiksysteme weisen eine Pipeline-Struktur auf, derart, daß verschiedene Operationen (wie z. B. Transformationen, Interpolationen, usw.) gleichzeitig von unterschiedlichen Komponenten mit unterschiedlichen Objektgrundelementen durchgeführt werden.
  • Technisch ausgereiftere Systeme bieten optional eine Texturabbildung, so daß Objekte mit einem verbesserten Oberflächendetail angezeigt werden können. Eine Texturabbildung ist ein Verfahren, das ein Abbilden eines Quellenbildes, das als Textur bezeichnet wird, auf einer Oberfläche eines dreidimensionalen Objekts und daraufhin ein Abbilden des texturierten drei-dimensionalen Objekts auf den zweidimensionalen Graphikanzeigebildschirm beinhaltet, um das resultierende Bild anzuzeigen. Die Texturabbildung beinhaltet ein Verwenden eines oder mehrerer Punktelemente (Texel) einer Textur bei jedem Punktelement (Pixel) des angezeigten Abschnitts des Objekts, auf dem die Textur abgebildet wird. Texturabbildungshardwareteilsysteme umfassen typischerweise einen lokalen Speicher, der die Texturdaten speichert, die dem Abschnitt des Objekts, das aufbereitet wird, zugeordnet sind.
  • Graphiksysteme mit Pipeline-Struktur, d.h. insbesondere diejenigen, die eine datenintensive Texturabbildung bereitstellen, weisen gewöhnlicherweise komplexe Busstrukturen auf, auf denen Daten zwischen den verschiedenen Komponentenübermittelt werden, wobei häufig bezüglich der Systembandbreite ein Kompromiß eingegangen wird. Bei diesen Systemen ist es beispielsweise allgemein üblich, daß Datenwege (Busse) für bestimmte Datentypen und Operationen reserviert sind, wobei die Wege ansonsten ungenutzt bleiben. In Abwesenheit solcher reservierter Wege kann es notwendig sein, daß ein Hauptaufbereitungsbussystem mit Pipeline-Struktur geräumt werden muß, um bestimmte Operationen, wie z. B. ein Herunterladen von Texturdaten von dem Host in einen lokalen Texturabbildungsspeicher, durchzuführen. Die Busstruktur umfaßt außerdem häufig bei Systemen, die mehrere parallel-verbundene Chips aufweisen, einen getrennten Bus für jeden dieser Chips, wodurch die Systembandbreite weiter reduziert wird.
  • Die Systembandbreite steht in direkter Beziehung zu dem Systemverhalten. Aufgrund technischer Fortschritte sind die Hostprozessoren in der Lage, den Graphikaufbereitungschips die Grundelementdaten mit erhöhten Geschwindigkeiten bereitzustellen. Um eine Busstruktur an die verbesserte Technologie der Hostprozessoren anzugleichen, ist eine Busstruktur erforderlich, die in der Lage ist, Datenübertragungen mit einer hohen Bandbreite abzuwickeln.
  • Es sind verschiedene Übertragungs- und Netwerksystem im Stand der Technik bekannt, bei denen eine Kommunikation über eine Ringverbindungsstruktur oder einen Ringverbindungs-Bus stattfindet. Beispielsweise offenbart die EP 032211682 A ein Verbindungssystem für eine Multiprozessor-Struktur, bei der die Verareibungszellen in einer Ringkonfiguration auf einem Kommunikationsbus gekoppelt sind.
  • Aus der US 5,504,918 A ist ein Parallelverarbeitungssystem bekannt, bei dem die Prozessoren miteinander über ein Ringnetzwerk in Verbindung stehen.
  • In ähnlicher Weise ist aus der US 4,536,873 A ein Datenübertragungssystem bekannt, das eine Mehrzahl von Elementen aufweist, die miteinander durch Austauschen einer Steuernachricht entlang einer Ringstruktur kommunizieren.
  • Aus der GB 2226739 A ist ein Ringbussystem mit mehreren Schnittstellen und angeschlossenen Prozessoren bekannt, bei dem die Schnittstelleneinheiten in unterschiedlichen Betriebsarten konfiguriert werden können.
  • Aus der US 4,760,571 A sowie aus der EP 0685950 A2 sind Ringbussysteme bekannt, die Schnittstelleneinheiten aufweisen, welche jedoch nicht in unterschiedlichen Betriebsarten konfiguriert werden können.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein verbessertes Busverbindungssystem für ein Computergraphiksystem mit Pipeline-Struktur zu schaffen, bei dem die Systembandbreite maximiert wird.
  • Diese Aufgabe wird durch ein Busverbindungssystem gemäß Anspruch 1 gelöst.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden im folgenden unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 13 Blockdiagramme von Computergraphiksystemen mit Pipeline-Struktur, die die Busarchitektur der Erfindung verwenden;
  • 4 ein Blockdiagramm, das ein allgemeines Ausführungsbeispiel der Busarchitektur der Erfindung darstellt;
  • 5 ein Zeitablaufdiagramm, das die Betriebsphasen des bei der Erfindung verwendeten Systemtaktes zeigt;
  • 6 ein detaillierteres Blockdiagramm einer der in 4 gezeigten Schnittstellenschaltungen;
  • 7 ein Zeitablaufdiagramm, das zeigt, wie Adressen- und Dateninformationen in verschiedene Register, die bei der in 6 gezeigten Schnittstellenschaltung verwendet werden, getaktet werden können;
  • 8 ein Zeitablaufdiagramm, das die Verzögerung zwischen einem Zeitpunkt, wenn eine Schnittstellenschaltung deren gepuffertes Bereitschaftssignal (Buffered_Ready-Signal) zu einem in Verarbeitungsrichtung davor angeordneten Verarbeitungselement deaktiviert, und einem Zeitpunkt zeigt, wenn das in Verarbeitungsrichtung davor angeordnete Verarbeitungselement damit aufhört, Daten zu der Schnittstellenschaltung zu senden;
  • 9 ein Zeitablaufdiagramm, das die Verzögerung zwischen einem Zeitpunkt, wenn eine Schnittstellenschaltung deren Buffered_Ready-Signal zu einem in Verarbeitungsrichtung davor angeordneten Verarbeitungselement wieder aktiviert, und einem Zeitpunkt zeigt, wenn das in Verarbeitungsrichtung davor angeordnete Verarbeitungselement damit beginnt, gültige Daten zu der Schnittstellenschaltung zu senden;
  • 10 ein detaillierteres Blockdiagramm der gepufferten und ungepufferten Schreib-FIFOs, die in 6 dargestellt sind;
  • 11 ein Zeitablaufdiagramm, das die Beziehung zwischen verschiedenen Signalen zeigt, die verwendet werden, um die in 10 gezeigten gepufferten und ungepufferten Schreib-FIFOs zu steuern;
  • 12 ein detaillierteres Blockdiagramm der gepufferten und ungepufferten Lese-FIFOs, die in 6 gezeigt sind, wobei 12 ferner zeigt, wie diese FIFOs arbeiten können, wenn ein Verarbeitungselement in einer Umleitungsbetriebsart konfiguriert ist;
  • 13 ein detaillierteres Blockdiagramm der gepufferten und ungepufferten Lese-FIFOs, die in 6 gezeigt sind, wobei 13 zeigt, wie diese FIFOs arbeiten können, wenn kein Verarbeitungselement in einer Umleitungsbetriebsart konfiguriert ist; und
  • 14 ein Zeitablaufdiagramm, das die Beziehung zwischen verschiedenen Signalen darstellt, die verwendet werden, um die gepufferten und ungepufferten Lese-FIFOs zu steuern, die in 12 und 13 gezeigt sind.
  • 1. Systemüberblick
  • Die 13 sind Blockdiagramme, die unterschiedliche beispielhafte Ausführungsbeispiele von Computergraphiksystemen zeigen, die eine Busarchitektur und ein Datenübertragungsprotokoll gemäß der vorliegenden Erfindung verwenden. Jedes System weist eine unterschiedliche Anzahl von Komponenten auf und bietet folglich einen unterschiedlichen Leistungsgrad; zwei der gezeigten Systeme bieten ferner ein zusätzliches Texturabbildungsmerkmal. Es sollte offensichtlich sein, daß die gezeigten Systeme beispielhaft und auf keine Weise einschränkend sind, und daß ein beliebiges Datenübertragungssystem die Busarchitektur und das Datenübertragungsprotokoll der Erfindung verwenden könnte.
  • 1 zeigt das einfachste der drei Systeme. Wie gezeigt, umfaßt das System einen Hostcomputer 100, ein vorgelagertes Teilsystem 102 und ein Rahmenpufferteilsystem 104. Das vorgelagerte Teilsystem 102 empfängt von dem Hostcomputer 100 über einen Bus 101 die Grundelemente, die aufbereitet werden sollen. Die Grundelemente sind typischerweise durch x-, y-, z-Koordinatendaten, RGB-Farbdaten und Alpha-Mischdaten für jeden der bestimmten Abschnitte der Grundelemente, wie z. B. für die Dreieckscheitelpunkte, spezifiziert.
  • Daten, die die Grundelemente in drei Dimensionen darstellen, werden von dem vorgelagerten Teilsystem 102 über einen Bus 122, der Segmente 122A, 122B und 122C aufweist, an das Rahmenpufferteilsystem geliefert. Das Rahmenpufferteilsystem 104 interpoliert die Aufbereitungsdaten, die von dem vorgelagerten Teilsystem 102 empfangen werden, um die Pixel auf dem Anzeigebildschirm zu berechnen, der jedes Grundelement darstellen wird, und um die RGB-Farbwerte des resultierenden Objekts für jedes Pixel zu bestimmen. RGB-Farbsteuersignale für jedes Pixel werden jeweils über RGB-Leitungen 123 bereitgestellt, um die Pixel des Anzeigebildschirms (nicht gezeigt) zu steuern, um ein resultierendes Bild auf demselben anzuzeigen.
  • Bei dem in 1 gezeigten Ausführungsbeispiel umfaßt das vorgelagerte Teilsystem 102 eine Hostschnittstelle 106 und einen drei-dimensionalen Geometriebeschleuniger (3D-Geometriebeschleuniger) 110. Wie angemerkt empfängt die Hostschnittstelle 106 die x-, y-, z-Koordinaten und Farbgrundelementdaten über den Bus 101 von dem Hostcomputer 100. Diese Daten werden von der Hostschnittstelle 106 über einen Bus 108 an den Geometriebeschleuniger 110 geliefert. Der Geometriebeschleuniger 110 führt herkömmliche Geometriebeschleunigerfunktionen durch, woraus sich eine Aufbereitung der Daten für eine Anzeige ergibt. Diese Funktionen können eine drei-dimensionale Transformation, eine Helligkeitseinstellung, ein Abschneiden und perspektivische Unterteilungsoperationen ebenso wie eine Ebenengleichungserzeugung umfassen, die in einem Fließkommaformat durchgeführt wird. Die Aufbereitungsdaten werden von einem Geometriebeschleuniger 110 über einen Bus 112 an die Hostschnittstelle 106 geliefert, die die Aufbereitungsdaten neu formatiert, eine Gleitkomma-zu-Festkomma-Umwandlung durchführt und diese Daten über das Bussystem 122 an das Rahmenpufferteilsystem 104 liefert.
  • Bei diesem Ausführungsbeispiel umfaßt das Rahmenpufferteilsystem 104 zwei Rahmenpuffersteuerungen 114A und 114B, die jeweils einen synchronen Graphikspeicher mit wahlfreiem Zugriff (SGRAM; SGRAM = Synchronous Graphics Random Access Memory) 116A und 116B, ebenso wie einen Digital-Analog-Wandler für einen Speicher mit wahlfreiem Zugriff (RAMDAC; RAMDAC = Random Access Memory Digital-to-Analog Converter) 120 aufweisen. Sowohl die Rahmenpuffersteuerungen 114A und 114B als auch die Hostschnittstelle 106 sind mit dem Bussystem 122 verbunden. Bei diesem Ausführungsbeispiel umfaßt der Bus 122 drei Busse 122A, 122B und 122C, die zueinander identisch sind. Die Busarchitektur 122 und das zugeordnete Datenübertragungsprotokoll, die im folgenden detaillierter erörtert werden, bieten gegenüber im Stand der Technik bekannten Architekturen und Protokollen eine verbesserte Bandbreite.
  • Bei dem Ausführungsbeispiel von 1 empfängt jede Rahmenpuffersteuerung 114A und 114B Aufbereitungsdaten von der Hostschnittstelle 106. Jade Rahmenpuffersteuerung kann unterschiedliche, sich nicht-überlappende Segmente des Anzeigebildschirms steuern. Die Rahmenpuffersteuerungen können die Grundelementdaten interpolieren, um die Bildschirmanzeigepixelkoordinaten, die das Grundelement darstellen, und die entsprechenden Objekt-RGB-Farbwerte für jede Pixelkoordinate berechnen.
  • Die resultierenden Bildvideodaten, die von den Rahmenpuffersteuerungen 114A und 114B erzeugt werden, die die RGB-Werte für jedes Pixel umfassen, können in den entsprechenden SGRAMs 116A und 116B gespeichert werden. Die Videodaten können aus den SGRAM-Chips in die Rahmenpuffersteuerungen ausgelesen werden, neu formatiert werden, so daß dieselben von dem RAMDAC 120 abgewickelt werden können, und an das RAMDAC geliefert werden. Der RAMDAC 120 kann die digitalen Farbdaten wiederum in analoge RGB-Farbsteuersignale für jedes Pixel umwandeln, die über RGB-Leitungen 123 bereitgestellt werden, um eine Bildschirmanzeige (nicht gezeigt) zu steuern.
  • Die Hostschnittstelle 106 kann ferner über den Videobus 124 direkt mit dem RAMDAC 120 kommunizieren. Das System ist vorzugsweise ein System mit Pipeline-Struktur, derart, daß das Rahmenpufferteilsystem 104 ein erstes Grundelement verarbeiten kann, während das vorgelagerte Teilsystem 102 ein (zeitlich) nachfolgendes Grundelement verarbeitet.
  • Das Bussystem der vorliegenden Erfindung kann ferner bei dem in 2 gezeigten Graphiksystem verwendet werden. Das in 2 gezeigte System entspricht dem in 1 gezeigtem System, mit der Ausnahme, daß: (1.) zwei 3D-Geometriebeschleuniger 110A und 110B in dem vorgelagerten Teilsystem 102 aufgenommen sind, (2.) ein Texturabbildungsteilsystem 130 verwendet wird, und (3.) die Kapazität jedes SGRAM-Speichers 116A und 116B erhöht worden ist. Mit den zwei Geometriebeschleunigern 110A und 110B werden die Grundelementdaten den Geometriebeschleunigern gemäß dem Datenübertragungsprotokoll der Erfindung zugewiesen, das im folgenden detaillierter beschrieben wird.
  • Ein Texturabbildungsteilsystem 130 kann ein beliebiges Teilsystem sein, das Texturabbildungsoperationen ausführt und bei diesem exemplarischen Ausführungsbeispiel eine Texturabbildungsschaltung 132 und einen zugeordneten lokalen Cache-Speicher 134 umfaßt, der eine begrenzte Menge von Texturdaten speichert.
  • Bei diesem Ausführungsbeispiel umfaßt der Bus 122 Abschnitte 122A122D. Die Texturabbildungsschaltung 132 ist mit dem Bus 122 zwischen der Hostschnittstelle 106 und der Rahmenpuffersteuerung 114A verbunden. Während des Betriebs empfängt die Texturabbildungsschaltung 132, wie beide Rahmenpuffersteuerschaltungen 114A und 114B, Grundelementdaten auf dem Bus 122A. Die Daten können x-, y-, z-Objektpixelkoordinaten, Objekt-RGB-Farbwerte und S-, T-Texturkartenkoordinaten für zumindest einen Scheitelpunkt, und die Ebenengleichung des Grundelements (d. h. des Dreiecks) umfassen. Die Texturabbildungsschaltung 132 kann die x-, y-Pixelkoordinaten und die S-, T-Texturkoordinaten interpolieren, um die resultierenden Texturdaten für jedes Pixel zu berechnen. Die Texturdaten für jedes Pixel können jederzeit in dem Cache-Speicher 134 gespeichert werden. Falls dies durchgeführt wird, werden die Texturdaten aus dem Cache-Speicher 134 ausgelesen. Falls die benötigten Texturdaten zu diesem Zeitpunkt nicht in dem Cache-Speicher 134 vorhanden sind, werden die benötigten Texturdaten von dem Hostcomputer auf eine effiziente Art und Weise gemäß der vorliegenden Erfindung heruntergeladen, wie es im folgenden detaillierter beschrieben wird, ohne daß das Freimachen der Datenaufbereitungspipeline oder ein reservierter Texturdatenweg erforderlich ist.
  • Die Texturdaten für jedes Pixel können über einen Texel-Bus 136 an jede Rahmenpuffersteuerung 114A und 114B geliefert werden, in denen dieselben von jeder Rahmenpuffersteuerung auf einer Pixel-für-Pixel-Basis mit den Objekt-RGB-Farbwerten kombiniert werden.
  • Es sollte offensichtlich sein, daß das vorgelagerte Teilsystem 102, das Rahmenpufferteilsystem 104 und das Texturabbildungsteilsystem 130 beliebige gegenwärtig bekannte Teilsysteme oder auch erst später entwickelte Teilsysteme sein können. Zusätzlich weist jedes dieser Teilsysteme vorzugsweise eine Pipeline-Struktur auf und verarbeitet mehrere Grundelemente gleichzeitig. Während beispielsweise das Texturabbildungsteilsystem 130 und das Rahmenpufferteilsystem 104 Grundelemente verarbeiten, die vorher von dem vorgelagerten Teilsystem 102 bereitgestellt wurden, fährt das vorgelagerte Teilsystem 102 damit fort, neue Grundelemente zu verarbeiten, bis die Pipelines in diesen in Verarbeitungsrichtung danach angeordneten Teilsystemen voll werden.
  • Die Busarchitektur der vorliegenden Erfindung ist derart konfiguriert, daß unterschiedliche Typen von Graphikverarbeitungschips untereinander austauschbar in der Architektur angeordnet werden können. Das heißt, jeder Chip, der mit dem Bus 120 verbunden ist, könnte eine beliebige Graphikfunktion, wie z. B. eine Texturabbildung, eine Rahmenpuffersteuerung oder weitere dieser Funktionen, durchführen.
  • 3 ist ein Blockdiagramm, das ein weiteres Ausführungsbeispiel eines Graphiksystems zeigt, das die Busarchitektur der vorliegenden Erfindung verwendet. Bei dem System von 3 umfaßt ein vorgelagertes Teilsystem 102 drei 3D-Geometriebeschleuniger 110A, 110B und 110C; ein Rahmenpufferteilsystem 104 umfaßt vier Rahmenpuffersteuerungen 114A114D, wobei jede jeweils einen zugeordneten SGRAM-Speicher 116A116D aufweist; und ein Texturabbildungsteilsystem 130 umfaßt zwei Texturabbildungsschaltungen 132 und 133, die jeweils einen zugeordneten Cache-Speicher 134 und 135 aufweisen.
  • Über Bussegmente 122A–G der Busarchitektur 122 der vorliegenden Erfindung sind eine Hostschnittstelle 106, jede der Texturabbildungsschaltungen 132 und 133 und jede der Rahmenpuffersteuerungen 114A114D verbunden. Ein Texel-Bus 137 verbindet die Texturabbildungsschaltung 133 mit den Rahmenpuffersteuerungen 114C und 114D. Der Betrieb entspricht dem, der bezugnehmend auf 2 beschrieben wurde.
  • 2. Das Busverbindungssystem
  • Bezugnehmend nun auf 4 ist ein Blockdiagramm eines Busverbindungssystems 200 gemäß der vorliegenden Erfindung gezeigt. Das Busverbindungssystem, das verwendet werden kann, um mehrere Graphikchips (z. B. Rahmenpuffersteuerungen) zu verbinden, umfaßt mehrere Verarbeitungselemente 202, 222 und 242. Das Verarbeitungselement 202 ist über einen PCI-Bus 201 (PCI = Peripheral Component Interconnect = Peripheriekomponentenverbindung) schnittstellenmäßig mit einem externen Hostgerät (nicht gezeigt), z. B. mit einem PC, verbunden. Jedes der Verarbeitungselemente 202, 222 und 242 umfaßt vorzugsweise einen ASIC-Chip (ASIC = Application Specific Integrated Circuit = anwendungsspezifische integrierte Schaltung), wobei der Kern desselben als beliebige Graphikverarbeitungsvorrichtung, wie z. B. eine Rahmenpuffersteuerung, eine Texturabbildungsvorrichtung, usw., konfiguriert sein kann.
  • Beispiele von Systemen, die das Busverbindungsnetzwerk 200 verwenden könnten, sind in den 13 dargestellt. In 1 ist beispielsweise eine Hostschnittstelle 106 über den Bus 101 mit dem Hostcomputer 100 verbunden, wobei die Hostschnittstelle 106 in einem Ring mit den Rahmenpuffer steuerungen 114A und 114B verbunden ist. Folglich könnte bei diesem Beispiel das Verarbeitungselement 202 (4) der Hostschnittstelle 106 (1) entsprechen, der PCI-Bus 201 (4) könnte dem Bus 101 (1) entsprechen, und die Verarbeitungselemente 222 und 242 (4) könnten jeweils den Rahmenpuffersteuerungen 114A und 114B (1) entsprechen.
  • Wie es in 4 gezeigt ist, umfaßt jedes der Verarbeitungselemente 202, 222 und 242 einen Kernprozessor 204, 224 und 244, bzw. eine Schnittstellenschaltung 206, 226 und 246. Die Kernprozessoren jedes Verarbeitungselements können übereinstimmen oder sich unterscheiden, während die Schnittstellenschaltungen 206, 226 und 246 (vorzugsweise) identisch sind. Zwischen die Kernprozessoren 204, 224 und 244 und deren zugeordneten Schnittstellen 206, 226 und 246 sind mehrere asynchrone FIFO-Puffer (FIFOs; FIFO = first-in-first-out) 208, 210, 212, 214, 228, 230, 232, 234, 248, 250, 252 und 254 gekoppelt. Diese asynchronen FIFOs liefern gepufferte (d. h. Nicht-Prioritäts-) Informationswege und ungepufferte (d. h. Prioritäts-) Informationswege sowohl von den Schnittstellenschaltungen 206, 226 bzw. 246 zu den Kernprozessoren 204, 224 bzw. 244 als auch von den Kernprozessoren 204, 224 bzw. 244 zu den Schnittstellenschaltungen 206, 226 bzw. 246.
  • Der Unterschied zwischen gepufferten (d. h. Nicht-Prioritäts-) Informationen und ungepufferten (d. h. Prioritäts-) Informationen und die Verarbeitung jedes Informationstyps zwischen gepufferten (d. h. Nicht-Prioritäts-) und ungepufferten (d. h. Prioritäts-) Informationswegen wird im folgenden jeweils detaillierter erläutert. An diesem Punkt sollte es jedoch offensichtlich sein, daß zwei unterschiedliche Informationstypen unter Verwendung eines gemeinsam verwendeten Busses zwischen den Verarbeitungselementen übertragen werden können. Jedes Informationspaket wird (durch Setzen bestimmter Bits in Typfelddaten, die gleichzeitig mit denselben übertragen werden) entweder als gepufferte (d. h. Nicht-Prioritäts-) oder ungepufferte (d. h. Prioritäts-) Informa tionen identifiziert. Nachdem die Informationen von einer Schnittstellenschaltung empfangen worden sind, werden die Informationen, die als gepufferte Informationen identifiziert wurden, zu einem Speicherelement, das lediglich gepufferte Informationen aufnimmt, (d. h. zu einem Nicht-Prioritäts-Informationsspeicherelement) übertragen, wobei Informationen, die als ungepuffert identifiziert wurden, zu einem Speicherelement, das lediglich ungepufferte Informationen aufnimmt (d. h. zu einem Prioritäts-Informationsspeicherelement), übertragen werden.
  • Durch Steuern der Schnittstellenschaltungen in dem Ring, so daß ungepufferte (d. h. Prioritäts-) Informationen immer Vorrang gegenüber gepufferten (d. h. Nicht-Prioritäts-) Informationen haben, so daß jedoch Nicht-Prioritäts-Informationen in einem Informationsweg, der von dem ungepufferten (d. h. Prioritäts-) Informationsweg getrennt ist, gehalten werden, bis die ungepufferten (d. h. Prioritäts-) Informationen verarbeitet sind, werden deutliche Vorteile gegenüber Systemen bereitgestellt, bei denen ein Pipeline-Weg "geräumt" werden muß, bevor Prioritätsinformationen durch denselben weitergeleitet werden können.
  • Es sollte offensichtlich sein, daß, obwohl Prioritätsinformationen hierin als "ungepuffert" identifiziert werden, dieselben trotzdem durch Informationsspeicherelemente verarbeitet werden, und dieselben als solche tatsächlich in der allgemeinen Bedeutung des Wortes "gepuffert" sind. Trotzdem werden hierin Prioritätsinformationen als ungepuffert bezeichnet, da dieselben hinsichtlich der Nicht-Prioritäts-Informationen gewissermaßen ungepuffert sind.
  • Im folgenden wird weiter auf 4 Bezug genommen. Unter Verwendung beispielsweise des Verarbeitungselements 222 ist ein gepuffertes Schreib-FIFO (BW-FIFO; BW = buffered write) 228 (d. h. ein Nicht-Prioritäts-Schnittstellenausgabespeicherelement) zwischen eine Schnittstellenschaltung 226 und einen Kernprozessor 224 gekoppelt, um einen gepufferten (d. h. einen Nicht-Prioritäts-) Informationsweg von der Schnittstellenschaltung zu dem Kernprozessor bereitzustellen. Entsprechend ist ein ungepuffertes Schreib-FIFO (UW-FIFO; UW = unbuffered write) 230 (d. h. ein Prioritäts-Schnittstellenausgabespeicherelement) zwischen die Schnittstellenschaltung 226 und den Kernprozessor 224 gekoppelt, um einen ungepufferten (d. h. einen Prioritäts-) Informationsweg von der Schnittstellenschaltung zu dem Kernprozessor bereitzustellen. Zusätzlich ist ein gepuffertes Lese-FIFO (BR-FIFO; BR = buffered read) 232 (d.h. ein Nicht-Prioritäts-Schnittstelleneingangspeicherelement) zwischen den Kernprozessor 224 und die Schnittstellenschaltung 226 gekoppelt, um einen gepufferten (d. h. einen Nicht-Prioritäts-) Informationsweg zwischen dem Kernprozessor und der Schnittstellenschaltung bereitzustellen. Schließlich ist ein ungepuffertes Lese-FIFO (UR-FIFO; UR = unbuffered read) 234 (d. h. ein Prioritäts-Schnittstelleneingangspeicherelement) zwischen den Kernprozessor 224 und die Schnittstellenschaltung 226 gekoppelt, um einen ungepufferten (d. h. einen Prioritäts-) Informationsweg zwischen dem Kernprozessor und der Schnittstellenschaltung bereitzustellen. Die Anordnung und der Betrieb der beispielhaften Lese- und Schreib-FIFOs 228, 230, 232 und 234 wird im folgenden detaillierter dargestellt und beschrieben.
  • Die Verarbeitungselemente 202, 222 und 242 sind mittels eines unidirektionalen Busses, der die Bussegmente 250, 252 und 254 umfaßt, miteinander verbunden. Die Bussegmente 250, 252 und 254 des Verbindungsnetzwerks 200 weisen einen identischen Aufbau und eine identische Breite auf. Wie es dargestellt ist, verbinden die Bussegmente 250, 252 und 254 die Verarbeitungselemente 202, 222 und 242 in einem Ringformat, wobei das Bussegment 250 die Verarbeitungselemente 202 und 222 verbindet, das Bussegment 252 die Verarbeitungselemente 222 und 242 verbindet, und das Bussegment 254 die Verarbeitungselemente 242 und 202 verbindet. Auf diese Art und Weise werden Informationen von dem Verarbeitungselement 202 zu dem Verarbeitungselement 222 weitergeleitet, Informationen von dem Verarbeitungselement 222 zu dem Verarbeitungselement 242 weitergeleitet, und Informationen von dem Verarbeitungselement 242 zu dem Verarbeitungselement 202 zurückgebracht.
  • Durch die Verwendung der in 4 dargestellten Anordnung können Informationen zwischen dem externen Hostgerät und dem Verarbeitungselement 202 (über den PCI-Bus 201) ausgetauscht werden, wobei Informationen unidirektional von jedem der Verarbeitungselemente 202, 222 und 242 zu dem Verarbeitungselement, das demselben in dem Ring folgt, umlaufend weitergegeben werden. Diese umlaufende (kreisförmige) Anordnung liefert zwischen jedem benachbarten Paar von Verarbeitungselementen einfache Punkt-zu-Punkt-Verbindungen, derart, daß es lediglich erforderlich ist, daß der Ausgang jeder Schnittstelle den Eingang der Schnittstelle, die derselben in dem Ring folgt, ansteuert. Da jedes Verarbeitungselement lediglich eine Last ansteuert, werden Signalintegritätsprobleme minimiert, wodurch als Ergebnis eine hohe Busbandbreite erhalten werden kann.
  • Zusätzlich werden bei diesem Ausführungsbeispiel die Informationen, die von einem Element zu einem anderen übertragen werden, zusammen mit einem Taktsignal übertragen. Der Bedarf als solches, eine systemweite Taktsynchronisation bereitzustellen, wird beseitigt, wobei das Hinzufügen von zusätzlichen Verarbeitungselementen erreicht wird, indem lediglich ein neues Verarbeitungselement in den Ring eingesteckt wird. Das heißt, diese Übertragung des Taktsignals mit den Informationen ermöglicht es, daß die Anzahl der Elemente, die in den Bus aufgenommen sind, tatsächlich unbegrenzt ist, obwohl sich die Integrität des Taktsignals natürlich verschlechtert, wenn die Anzahl der Verarbeitungselemente in dem Ring erhöht wird.
  • Folglich ermöglicht das Ringverbindungssystem gemäß der Erfindung eine Erhöhung der Kommunikationsbandbreite mit einem Bus, der eine verringerte Breite aufweist. Ein hoher Durchsatz wird erreicht, indem Informationen über die Schnittstellen des Rings schnell weitergeleitet werden, während es ermöglicht wird, daß die Kernprozessoren jedes Elements Befehle asynchron von der Informationsübertragungsrate verarbeiten. Die Signalführungs- und Signalintegritätsprobleme werden reduziert, da die Busbreite reduziert und lediglich eine Last pro Bus vorhanden ist. Darüberhinaus können mit dem Taktsignal, das mit den Informationen in der Ringanordnung übertragen wird, ohne weiteres zusätzliche Verarbeitungselemente zu dem Ringnetzwerk hinzugefügt oder aus demselben gelöscht werden, ohne daß negative Auswirkungen für die Synchronisation des Systems auftreten. Aufgrund der geringen Zeitdauer, die jedes der Verarbeitungselemente erfordert, um Informationen aus dem Bus zu entnehmen, ergibt das Hinzufügen von zusätzlichen Verarbeitungselementen in den Ring lediglich einen zusätzlichen Taktzyklus pro hinzugefügtem Verarbeitungselement, wodurch eine minimale zusätzliche Verzögerung hervorgerufen wird.
  • 3. Die Busverbindung
  • Weiter bezugnehmend auf 4 besteht eine Funktion der Bussegmente 250, 252 und 254 darin, Informationspakete zwischen den Verarbeitungselementen 202, 222 und 242 zu übertragen. Gemäß einem Ausführungsbeispiel der Erfindung umfaßt ein vollständiges Informationspaket zwei unterschiedliche Abschnitte, wobei jeder Abschnitt 32 Informationsbits aufweist. Wenn die zwei Abschnitte jedes Informationspakets übertragen werden, werden dieselben zeitlich gemultiplext, so daß für jedes vollständige Paket, das übertragen wird, tatsächlich 64 Informationsbits zwischen den Verarbeitungselementen übertragen werden. Beispielsweise könnte ein erster Abschnitt eines Informationspakets eine 32-Bit-Adresse und ein zweiter Abschnitt des Pakets (der dem ersten Abschnitt unmittelbar folgt) ein 32-Bit-Patenwort aufweisen. Ferner weist gemäß diesem Ausführungsbeispiel jeder Abschnitt jedes vollständigen Informationspakets ein 9-Bit-Typ-Datenfeld auf, das demselben zugeordnet ist, wobei dieses 9-Bit-Typfeld gleichzeitig mit dem Informationspaket übertragen wird, dem dasselbe zugeordnet ist.
  • Jedes der Bussegmente 250, 252 und 254 weist 41 Busleitungen auf, die für die Übertragung von Informationen und Typdaten reserviert sind. Unter Verwendung beispielsweise des Bussegments 250 ist die Busleitung 250F, die 32 unterschiedliche Busleitungen umfaßt, für die unidirektionale Übertragung von 32 Informationsbits zwischen der Schnittstellenschaltung 206 und der Schnittstellenschaltung 226 reserviert, wobei die Busleitung 250E, die 9 unterschiedliche Busleitungen umfaßt, für eine unidirektionale Übertragung von 9 Typdatenbits zwischen der Schnittstellenschaltung 206 und der Schnittstellenschaltung 226 reserviert ist. Folglich sind während eines einzigen Taktzyklusses die Busleitungen 250E und 250F zusammen in der Lage, 9 Datentypbits und 32 Informationsbits zwischen den Verarbeitungselementen 202 und 222 zu übertragen. Vorzugsweise werden Halb-Pakete von Informationen und Datentypen (d. h. 32 Informationsbits und 9 Datentypbits) mit einer Rate von zumindest 200 MHz übertragen.
  • Wie es in 4 gezeigt ist, stellt jedes der Bussegmente 250, 252 und 254 gemeinsame Signale zwischen den Verarbeitungselementen bereit, das dieselben verbindet. Wieder unter Verwendung des Bussegments 250 umfassen beispielsweise diese Signale ein Taktsignal (CLK; CLK = Clock), das über die Busleitung 250A übertragen wird, ein gepuffertes Informationsbereitschaftssignal (B_Rdy; B_Rdy = buffered ready), das über die Busleitung 250B übertragen wird, und ein ungepuffertes Informationsbereitschaftssignal (U_Rdy; U_Rdy = unbuffered ready), das über die Busleitung 250C übertragen wird, und ein Besetztsignal (busy = besetzt bzw. beschäftigt), das über die Busleitung 250D übertragen wird, Typfeldsignale (Typ[8:0]), die über die Busleitungen 250E übertragen werden, und Informationsfeldsignale (Info[31:0]), die über die Busleitungen 250F übertragen werden. Die Taktsignale (CLK), Typfeldsignale (Typ[8:0]) und Informationsfeldsignale (Info [31:0]) werden in einer ersten Flußabwärtsrichtung von einem Verarbeitungselement (wie z. B. dem Verarbei tungselement 202) zu dem nächsten Verarbeitungselement (wie z. B. dem Verarbeitungselement 222) in dem Ring weitergeleitet. Die gepufferten Informationsbereitschaftssignale (B_Rdy) und die ungepufferten Informationsbereitschaftssignale (U_Rdy) ebenso wie die Besetztsignale (Busy) werden in einer umgekehrten Richtung (Aufwärtsrichtung) von einem zweiten Verarbeitungselement (wie z. B. dem Verarbeitungselement 222) an ein erstes Verarbeitungselement (wie z. B. das Verarbeitungselement 202) in dem Ring geliefert. Zwei dieser Signale in "Umkehrrichtung", d. h. das B_Rdy- und U_Rdy-Signal, werden verwendet, um den Informationsfluß zwischen den Verarbeitungselementen zu steuern, wie es detaillierter im folgenden beschrieben wird.
  • Das Besetztsignal wird verwendet, um anzuzeigen, ob beliebige der Chips auf dem Bus beschäftigt sind oder nicht. Ein Register in dem Hauptverarbeitungselement (Master Processing Element), das von dem Hostgerät gelesen werden kann, verfolgt, ob die Chips beschäftigt sind oder nicht. Auf diese Art und Weise kann das Hostgerät bestimmen, wann dasselbe in der Lage ist, bestimmte Operationen, die die Verarbeitungselemente betreffen, durchzuführen.
  • Ein deutlicher Vorteil des Busverbindungssystems 200 ist dessen Flexibilität. Das heißt, das Busverbindungssystem 200 kann eine beliebige Anzahl von Verarbeitungselementen ohne deutliche Verschlechterung der Signalintegrität oder Bandbreite verbinden, da das Taktsignal, wie es oben angemerkt wurde, mit den Daten übertragen wird, und lediglich eine Last mit jeder Quelle gekoppelt ist. Folglich ermöglicht die Busarchitektur der Erfindung, daß optionale Verarbeitungselemente hinzugefügt werden, um Funktionen, wie z. B. eine Texturabbildung, eine Bildverarbeitung, eine Volumenaufbereitung, durchzuführen, oder daß Standardverarbeitungselemente, wie z. B. Rasterisierer oder Rahmenpuffersteuerungseinrichtungen, für eine gesteigerte Leistungsfähigkeit oder eine gesteigerte Funktionalität hinzugefügt werden.
  • Ein weiterer Vorteil, der durch die Busstruktur bereitgestellt wird, besteht darin, daß durch (zeitliches) Multiplexen von zwei unterschiedlichen 32-Bit-Informationswörtern die Anzahl der Anschlußstifte, die erforderlich ist, um diese Informationen zwischen den Verarbeitungselementen auszutauschen, halb so groß wie die Anzahl ist, die erforderlich wäre, wenn die Informationspakete nicht derart gemultiplext würden. Die Geschwindigkeit des Busses, d. h. 200 MHz, ist groß genug, daß das Multiplexen der 32 Adressenbits und 30 Datenbits auf die oben beschriebene Art und Weise durchgeführt werden kann, während es noch möglich ist, daß die Graphikvorrichtung die Leistungsanforderungen erfüllt. Da die Anschlußstiftreduzierung im allgemeinen ein Hauptfaktor bei einem ASIC-Entwurf ist, liefert die Fähigkeit der Busstruktur, die Leistungsanforderungen mit einer halb so großen Anzahl von Anschlußstiften, die für eine Informationsübertragung reserviert sind, zu erfüllen, einen deutlichen Vorteil gegenüber Systemen, die eine größere Anzahl von Anschlußstiften verwenden, um dieselbe Informationsmenge zu übertragen.
  • Sowie sich jedoch die ASIC-Technologie verbessert und sich die verfügbare Anschlußstiftzahl erhöht, oder wenn Technologiefortschritte den Bedarf für eine schnellere Datenübertragungsrate vorschreiben sollten, kann der 41-Bit-Informationsweg ohne weiteres erweitert werden, derart, daß mehr Anschlußstifte für eine Informationsübertragung reserviert sein können, wobei die Bandbreite des Systems entsprechend erhöht werden kann. Ferner werden Verbesserungen bei der PC-Platinentechnologie und den I/O-Anschlußflächenentwürfen zweifelslos ermöglichen, daß die Busarchitektur 200 bei höheren Frequenzen läuft.
  • Wie es im vorhergehenden angemerkt wurde, sind die Bussegmente 250, 252 und 254 zusätzlich unidirektional. Unidirektionale Busse liefern im allgemeinen eine schnellere Datenübertragungsrate als bidirektionale Busse, da keine Verzögerungsperiode vorhanden ist, die der Umkehrung der Richtung des Busses zugeordnet ist. Da ferner kein Bedarf besteht, sowohl einen Sende- als auch einen Empfangsweg bereitzustellen und dieselben zu steuern, sind unidirektionale Busstrukturen typischerweise einfacher zu verwalten und erfordern eine einfachere Hardware.
  • 4. Die Verarbeitungselemente
  • Wie es im vorhergehenden erwähnt wurde, umfaßt jedes der Verarbeitungselemente von 4 einen Kernprozessor (beispielsweise den Kernprozessor 224), eine Reihe von Schreib- und Lese-FIFOs (beispielsweise die FIFOs 228, 230, 232 und 234) und eine Schnittstellenschaltung (beispielsweise die Schnittstellenschaltung 226), wobei die Kernprozessoren der Verarbeitungselemente nicht identisch sein müssen, wie es ferner im vorhergehenden erwähnt wurde. Beispielsweise umfaßt bei dem Ausführungsbeispiel von 4 der Kernprozessor 204 des Verarbeitungselements 202 eine Logik-Schaltung für eine schnittstellenmäßige Verbindung mit dem Host-PCI-Bus, die nicht in den anderen Kernprozessoren aufgenommen sein muß. Bei dem Beispiel von 4 ist das Verarbeitungselement 202 das Hauptverarbeitungselement in dem Ringnetzwerk 200, wobei dasselbe folglich, wie es im vorhergehenden erwähnt wurde, der Hostschnittstelle 106 in den 13 entsprechen könnte. Wie es im folgenden detaillierter beschrieben wird, verarbeitet das Verarbeitungselement 202 somit die Eingangssignalpakete auf eine ein wenig unterschiedliche Art und Weise als die anderen Verarbeitungselemente, die in dem Ring gekoppelt sind.
  • Die allgemeine Funktionsweise jedes der Verarbeitungselemente 202, 222 und 242 stellt sich hinsichtlich des Busverbindungsnetzwerks 200 wie folgt dar. Ein primäres Taktsignal wird in zwei Phasen, d. h. in eine Phase 1 (P1) und eine Phase 2 (P2), unterteilt. Wie es im vorhergehenden erwähnt wurde, können die Pakete, die über die Informationsleitungen (beispielsweise die Busleitungen 250F) übermittelt werden, z. B. gemultiplexte Adressen/Dateninformationen sein, wobei jedes Paket (bei einem beispielhaften Ausführungsbeispiel) 32 Adreßinformationsbits und 32 Dateninformationsbits (für eine Gesamtzahl von 64 Informationsbits pro Paket) aufweist. Folglich kann während einer Phase 1 (P1) ein Adressenabschnitt eines Pakets über die Informationsleitungen (beispielsweise die Leitungen 250F) übertragen werden, wobei während der Phase 2 (P2) der zugeordnete Datenabschnitt des Pakets über die Informationsleitungen übertragen werden kann.
  • Es sollte an diesem Punkt jedoch angemerkt werden, daß ein Informationspaket nicht unbedingt ein Adressenpaket, auf das ein Datenpaket folgt, aufweisen muß, sondern eine beliebige Kombination von Adressen- und Dateninformationen umfassen kann. Wie es beispielsweise im folgenden in Tabelle II gezeigt ist, kann ein Informationspaket ein Datenpaket aufweisen, auf das ein weiteres Datenpaket folgt, wenn eine Operation, wie z. B. eine Blockübertragung, durchgeführt wird. Ferner sollte angemerkt werden, daß ein Informationspaket nicht in zwei oder mehr getrennte Abschnitte gemultiplext werden muß, sondern alternativ als ein einzelnes Multi-Bit-paket übertragen werden kann, ohne von dem beabsichtigten Schutzbereich der Erfindung abzuweichen.
  • Jedes Informationspaket wird über einen Satz von Informationsleitungen (beispielsweise die Busleitungen 250F) von einer Schnittstellenschaltung (beispielsweise der Schnittstellenschaltung 226) empfangen. Alle Pakete, die von einem Verarbeitungselement empfangen werden, werden für eine Abwicklung zu dem Kernprozessor dieses Verarbeitungselements (beispielsweise zu dem Kernprozessor 224 des Verarbeitungselements 222) weitergeleitet. Jedes Verarbeitungselement weist eine eindeutige Basisadresse auf, die demselben zugeordnet ist, so daß beispielsweise während einer Leseoperation fünf Bits einer eintreffenden Adresse mit der Basisadresse des Verarbeitungselements verglichen werden können, um zu sehen, ob das Paket für dieses Verarbeitungselement vorgesehen ist.
  • Vorzugsweise werden sich alle identischen Verarbeitungselementtypen eine gemeinsame Basisadresse teilen, bzw. gemeinsam verwenden. Falls ein bestimmtes Paket ein Verarbeitungselement nicht betrifft, wird der Kernprozessor das Paket einfach ablegen. Andernfalls wird der Kernprozessor die Funktion durchführen, die durch das Paket vorgeschrieben ist. Falls das Paket beispielsweise ein Lese-Paket ist, wird der Kernprozessor (beispielsweise der Kernprozessor 224) die Informationen, die aus seinem Speicher (nach einer geringen Verzögerung) ausgelesen werden, zu der Schnittstellenschaltung, die demselben zugeordnet ist (beispielsweise zu der Schnittstellenschaltung 226), weiterleiten, so daß die Schnittstellenschaltung die Informationen zu den nachgelagerten Verarbeitungselementen (beispielsweise zu dem Verarbeitungselement 242) weiterleiten kann.
  • Ein Grund dafür, daß das Busverbindungssystem 200 in der Lage ist, mit einer hohen Frequenz zu arbeiten, besteht darin, daß jede Schnittstellenschaltung für jedes Verarbeitungselement (nicht das Hauptverarbeitungselement 202) Informationen für lediglich eine minimale Zeitdauer hält, bevor dieselben zu dem nächsten Verarbeitungselement in dem Ring weitergeleitet werden. Das heißt, sowie Informationen in jedes der Verarbeitungselemente 222 und 242 übertragen werden, gewinnt jede der Schnittstellenschaltungen 226 bzw. 246 die Informationen in einem Eingangsregister (nicht gezeigt) während eines ersten Taktzyklusses wieder und leitet dieselben zu einem Ausgangsregister (nicht gezeigt) während eines zweiten Taktzyklusses weiter, der dem ersten Taktzyklus folgt, wobei der zweite Taktzyklus der nächste nachfolgende Taktzyklus sein kann, jedoch nicht notwendigerweise sein muß. Folglich tritt bei einem Ausführungsbeispiel lediglich eine Latenzzeit von einem Taktzyklus auf, die bei jedem der Verarbeitungselemente 226 und 246 hervorgerufen wird. Folglich werden alle Pakete, die von einem Verarbeitungselement (nicht von dem Hauptverarbeitungselement 202) empfangen werden, durch dessen Schnittstellenschaltung zu dem nächsten Verarbeitungselement in dem Ring weitergeleitet.
  • Im Gegensatz dazu ist das Hauptverarbeitungselement konfiguriert, um in einer "Umleitungsbetriebsart" zu arbeiten, da dasselbe der Anfang und das Ende der Ringverbindung ist. Während der Umleitungsbetriebsart arbeitet die Schnittstellenschaltung 206 wie zwei unterschiedliche Hälften. Eine Eingangshälfte (einschließlich der Schreib-FIFOs 208 und 210) empfängt alle Adressen-/Dateninformationen von dem Ring und leitet die Informationen über den Kernprozessor 204 um, wobei eine Ausgangshälfte (einschließlich der Lese-FIFOs 212 und 214) neue Adressen-/Dateninformationen von dem Kernprozessor 204 empfängt und diese Informationen zu dem nächsten Verarbeitungselement in dem Ring weiterleitet. Folglich werden bei dem in 4 gezeigten Beispiel alle Informationen, die von der Schnittstellenschaltung 206 (in dem Hauptverarbeitungselement 202) empfangen werden, in das Kernelement 204 eingegeben, wobei die Informationen niemals direkt von dem Eingang der Schnittstelle 206 zu dem Ausgang derselben weitergeleitet werden, wie es auch jeweils bei den Schnittstellenschaltungen 226 und 246 der Fall ist. Die Ausgangshälfte ist in der Lage, Befehle von dem Hostprozessor (über den PCI-Bus) zu empfangen, diese Befehle weiterzugeben oder zu modifizieren (oder zusätzliche Befehle als Antwort auf dieselben zu erzeugen) und diese Befehle an den Ring weiterzuleiten.
  • Obwohl die Umleitungsbetriebsart im vorhergehenden beschrieben wurde, als ob dieselbe lediglich für das Hauptverarbeitungselement verwendet wird, ist es vorstellbar, daß dieselbe für andere Verarbeitungselemente in dem Ring als auch zum Bereitstellen einer gesteigerten Funktionalität verwendet werden kann. Beispielsweise kann die Umleitungsbetriebsart bei weiteren Verarbeitungselementen verwendet werden, um zu ermöglichen, daß diese Elemente Funktionen, wie z. B. eine Bildverarbeitung, durchführen. Während einer Bildverarbeitung werden im allgemeinen Daten in einen Kernprozessor geführt, manipuliert und aus dem Kernprozessor herausgeführt. Folglich werden die Daten, die von einem Kernprozessor emp fangen werden (wenn derselbe eine Bildverarbeitung durchführt), typischerweise derart gespeichert und verarbeitet, daß die Latenzzeit zwischen der Eingabe und der Ausgabe der Daten sehr lang sein kann. Zusätzlich kann die Datenmenge, die in den Kern eingegeben wird, sich von der Datenmenge unterscheiden, die denselben verläßt. Folglich kann durch ein Plazieren eines oder mehrerer der Verarbeitungselemente in dem Ring in der Umleitungsbetriebsart eine Bildverarbeitung mittels dieser Verarbeitungselemente ohne Verschlechterung des Gesamtverhaltens des Rings abgewickelt werden.
  • Die Umleitungsbetriebsart kann ferner beispielsweise verwendet werden, um zu ermöglichen, daß ein Verarbeitungselement einen digitalen Videodatenstrom zu einem Videodatenverarbeitungselement überträgt, das in Verarbeitungsrichtung nach dem übertragenden Verarbeitungselement angeordnet ist. Das oder die Verarbeitungselemente, die den digitalen Videodatenstrom zuführen, sollten immer in Verarbeitungsrichtung vor dem oder den Videodatenverarbeitungselementen angeordnet sein, die den digitalen Videodatenstrom empfangen. Um eine solche Funktion durchzuführen, plaziert das Hostgerät das digitale Videodatenverarbeitungselement in einer Umleitungsbetriebsart, indem ein Umleitungszustandshardwareregister (nicht gezeigt) in der Schnittstelle des digitalen Videoverarbeitungselements beschrieben wird. Auf der Verbindung sollten keine weiteren Operationen durchgeführt werden, nachdem das Videoverarbeitungselement in der Umleitungsbetriebsart plaziert wurde. Nachdem das Videoverarbeitungselement in der Umleitungsbetriebsart plaziert wurde, kann dasselbe Schreibvorgänge in einen Speicher oder in Überlagerungspuffer, in Bildpuffer oder Texturcache-Anordnungen in einem beliebigen der nachgelagerten Verarbeitungselemente in dem Ringbus erzeugen.
  • Die Umleitungsbetriebsart wird freigegeben, indem ein Umleitungszustandshardwareflag an jeder Schnittstellenschaltung, die "umgeleitet werden soll", gesetzt wird. Folglich ist bei dem in 4 gezeigten Beispiel das Umleitungszustandshard wareflag der Schnittstellenschaltung 206 permanent gesetzt, während die Umleitungszustandshardwareflags der Schnittstellenschaltungen 226 und 246 optional gesetzt sein können.
  • Da das Hauptverarbeitungselement 202 (in 4) eine Informationspaketkommunikation in dem Ringnetzwerk einleitet, liefert dasselbe ferner das Haupttaktsignal, das mit den Informationen weitergeleitet wird. Das heißt, daß zusätzlich zu der Konfiguration des Hauptverarbeitungselements 202, um in einer Umleitungsbetriebsart zu arbeiten, dasselbe ferner konfiguriert ist, um in einer "Hauptbetriebsart" (master mode) zu arbeiten. Ungeachtet dessen, ob die Verarbeitungselemente konfiguriert sind oder nicht, um in einer Hauptbetriebsart zu arbeiten, empfangen alle Verarbeitungselemente ein eintreffendes Taktsignal (In_CLK) von einem vorgelagerten Verarbeitungselement zusammen mit Informationen von diesem Verarbeitungselement. Dieses eintreffende Taktsignal In_CLK wird verwendet, um die Eingangsschaltungsanordnung der Schnittstellenschaltungen (die im folgenden beschrieben werden) zu takten. Die Verarbeitungselemente, d. h. ohne dem Verarbeitungselement 202, die nicht konfiguriert sind, um in einer Hauptbetriebsart zu arbeiten, verwenden ferner das eintreffende Taktsignal In_CLK, um die Ausgangsschaltungsanordnung der Schnittstellenschaltung (die im folgenden beschrieben wird) zu takten.
  • Da die Schnittstellenschaltung 206 konfiguriert ist, um in einer Hauptbetriebsart zu arbeiten, wird dieselbe derart gesteuert, daß deren Ausgangsschaltungsanordnung unter Verwendung eines Quellentaktsignals (Src_CLK; Src_CLK = source clock), das durch den Kernprozessor 204 erzeugt wird, und nicht unter Verwendung des eintreffenden Taktsignals (In_CLK) getaktet wird. Das Quellentaktsignal Src_CLK aus dem Kern eines "Haupt"-Verarbeitungselements wird folglich zusammen mit den Informationen aus dem Kern dieses Verarbeitungselements zu dem nächsten Verarbeitungselement in dem Ring weitergeleitet. Die Art und Weise, auf die entweder das Quellentaktsignal oder das eintreffende Taktsignal ausge wählt wird, um eine Zeitgebung für die Ausgangsschaltungsanordnung einer Schnittstellenschaltung bereitzustellen (abhängig davon, ob dieselbe konfiguriert ist, um in einer Hauptbetriebsart zu arbeiten oder nicht), ebenso wie die Erzeugung von geeigneten Zeitgebungssignalen von derselben, wird im folgenden detaillierter beschrieben.
  • Wie oben erwähnt, arbeiten die Verarbeitungselemente, die mit dem Hauptverarbeitungselement gekoppelt sind, im allgemeinen nicht in der Umleitungsbetriebsart. Folglich wird für alle Nicht-Hauptverarbeitungselemente (beispielsweise die Verarbeitungselemente 222 und 242) die Weiterleitung von Informationen von einem Verarbeitungselement zu einem weiteren in dem Ring weitgehend durch die Schnittstellenschaltung des Verarbeitungselements gesteuert (beispielsweise durch die Schnittstellenschaltungen 226 und 246). Beispielsweise unter Verwendung des Nicht-Hauptverarbeitungselements 222 empfängt der Kernprozessor 224 beispielsweise Informationen über asynchrone gepufferte Schreib- und ungepufferte Schreib-FIFOs (BW, UW) 228 und 230 und leitet Informationen, die aus dem Kernprozessor 224 gelesen werden, über asynchrone gepufferte Lese- und ungepufferte Lese-FIFOs (BR, UR) 232 und 234 zu dem Ausgang der Schnittstellenschaltung 226 weiter. Die FIFOs 228, 230, 232 und 234 werden als "asynchron" bezeichnet, da die gepufferten Schreib- und ungepufferten Schreib-FIFOs (BW, UW) 228 und 230 von der Schnittstellenschaltung 226 Informationen empfangen, und die gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR) 232 und 234 unter Verwendung eines ersten Taktsignals (das von der Schnittstellenschaltung 226 bereitgestellt wird) Informationen an die Schnittstellenschaltung 226 übertragen, während die gepufferten Schreib- und ungepufferten Schreib- FIFOs (BW, UW) 228 und 230 Informationen an den Kernprozessor 224 übertragen, und die gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR) 232 und 234 unter Verwendung eines zweiten Taktsignals (das von dem Kernprozessor 224 bereitgestellt wird), das eine unterschiedliche Frequenz als das erste Taktsignal aufweisen kann, Informationen von dem Kernprozessor 224 emp fangen. Da die Schnittstellenschaltung 226 und der Kernprozessor 224 mit unterschiedlichen Frequenzen arbeiten können, erleichtert die Verwendung von asynchronen FIFOs 228, 230, 232 und 234 folglich die Übertragung von Informationen zwischen den zwei Vorrichtungen.
  • Beispielsweise noch unter Verwendung des Verarbeitungselements 222 ist bei einem Ausführungsbeispiel jedes der FIFOs 228, 230, 232 und 234 in der Lage, 82 Bits (parallel) pro FIFO-Eingabe zu speichern. Der Grund für die Verwendung sowohl von gepufferten FIFOs (d. h. von Nicht-Prioritäts-Schnittstellenspeicherschaltungen) als auch von ungepufferten FIFOs (d. h. von Prioritäts-Schnittstellenspeicherschaltungen) in jedem der Schreib- und Lesewege wird im folgenden detaillierter beschrieben. An diesem Punkt sollte jedoch angemerkt werden, daß zwei unterschiedliche Informationswege, d. h. ein gepufferter (d. h. ein Nicht-Prioritäts-) Informationsweg und ein ungepufferter (d. h. ein Prioritäts-) Informationsweg in und aus dem Kernprozessor 224 bereitgestellt sind. Bei einem Ausführungsbeispiel entsprechen 41 der 82 parallelen Bits, die bei jeder Eingabe der gepufferten Schreib- und ungepufferten Schreib-FIFOs (BW, UW) 228 und 230 gespeichert werden, den 32 Informationsbits und 9 Typbits, die während der Phase 1 (P1) der Paketübertragung empfangen werden, wobei die anderen 41 Bits den 32 Informationsbits und den 9 Typbits entsprechen, die während der Phase 2 (P2) der Paketübertragung empfangen werden. Falls eine Funktion, z. B. eine Schreibfunktion, die eine Adresse und Daten erfordert, durchgeführt wird, wird folglich jede Puffereintragung eine 32-Bit-Adresse, ein 9-Bit-Typfeld, das der Adresse zugeordnet ist, 32 Datenbits und ein 9-Bit-Typfeld umfassen, das den Daten zugeordnet ist (das im allgemeinen ein Duplikat des Typfelds ist, das der Adresse zugeordnet ist). Bei einem Ausführungsbeispiel der Erfindung sollte jedes der gepufferten Schreib- und ungepufferten Schreib-FIFOs (BW, UW) 228 und 230 zumindest fünf Eintragungen tief sein, wobei jedes der Lese-FIFOs zumindest eine Eintragung tief sein sollte. Es sollte jedoch offensichtlich sein, daß die Anzahl der Eintragungen in jedem FIFO eingestellt werden kann, wie es von dem Kern erfordert wird.
  • Bei einem Ausführungsbeispiel ist das Taktsignal, das zwischen jedem Verarbeitungselement weitergeleitet wird, ein 200-MHz-Taktsignal. Jede Schnittstellenschaltung (beispielsweise die Schnittstellenschaltung 226) verwendet ein Zwei-Phasen-Taktsystem, wobei jede Phase mit einer halben externen Taktfrequenz arbeitet, d. h. jede Phase arbeitet bei diesem Ausführungsbeispiel mit 100 MHz. Im folgenden wird kurz auf 5 Bezug genommen. Es ist ein Zeitablaufdiagramm gezeigt, das die Beziehung zwischen dem eintreffenden Systemtaktsignal In_CLK (In_CLK = incoming clock) (von einem vorgelagerten Verarbeitungselement) und den zwei Taktphasen Phase 1 (P1) und Phase 2 (P2) darstellt, die an jeder der Schnittstellenschaltungen intern erzeugt werden. Es wird angemerkt, daß sich die Betriebsphase (d. h. P1 oder P2) für jede fallende Flanke des eintreffenden Systemtaktsignals In_CLK ändert. Aus Zeitgebungsgründen kann es erwünscht sein, ein komplementäres Systemtaktsignal und nicht das in 5 gezeigte Einphasentaktsignal zu verwenden. Aus Vereinfachungsgründen wird jedoch im folgenden lediglich ein Einphasentaktsignal beschrieben.
  • Wie im vorhergehenden erwähnt, wird ein Verarbeitungselement, wenn dasselbe nicht konfiguriert ist, um in einer Hauptbetriebsart zu arbeiten, das eintreffende Taktsignal In_CLK als abgehendes Taktsignal (Out_CLK; Out_CLK = out-going clock) übertragen, das mit den abgehenden Informationen übertragen wird. Folglich werden die intern erzeugten Phasen P1 und P2 für das abgehende Taktsignal Out_CLK, wenn dieselben nicht in einer Hauptbetriebsart konfiguriert sind, mit den intern erzeugten Phasen P1 und P2 für das eintreffende Taktsignal In_CLK identisch sein. Wenn ein Verarbeitungselement konfiguriert ist, um in einer Hauptbetriebsart zu arbeiten, wird dasselbe jedoch ein Quellentaktsignal Src_CLK von seinem Kern und nicht das eintreffende Taktsignal In_CLK verwenden, um Daten zu übertragen. Wenn sich ei ne Schnittstellenschaltung in einer Hauptbetriebsart befindet, wird dieselbe folglich ein Quellentaktsignal als ihr Ausgangstaktsignal Out_CLK übertragen, und um den Fluß der abgehenden Informationen zu steuern, wird dasselbe ein Zwei-Phasen-Taktgebungssystem erzeugen (das auch die Phasen P1 und P2 umfaßt), das dem in 5 gezeigten ähnelt (jedoch nicht identisch ist).
  • Bezugnehmend nun auf 6 ist ein detailliertes Blockdiagramm einer Schnittstellenschaltung 226 gezeigt. Da bei einem Ausführungsbeispiel die Schnittstellenschaltungen aller Verarbeitungselemente in dem Ring identisch sind, sollte es offensichtlich sein, daß die folgende Beschreibung der Schnittstellenschaltung 226 sowohl für die Schnittstellenschaltung 206 als auch 246 Anwendung findet. Wie es im vorhergehenden angemerkt wurde, kann jedoch die Schnittstellenschaltung 206 im allgemeinen lediglich in einer "Umleitungsbetriebsart" und einer "Hauptbetriebsart" arbeiten, wodurch sich deren Betrieb ein wenig von dem der Schnittstellenschaltungen 226 und 246 unterscheiden wird.
  • Wie es in 6 gezeigt ist, werden Typdaten und gemultiplexte Informatonspakete gleichzeitig an den Eingang der Schnittstellenschaltung 226 geliefert und in ein Eingangsregister 260 (d. h. ein Eingangsspeicherelement) gelatcht. Das Eingangsregister 260 kann in die Eingangs-Pads der Schnittstellenschaltung 226 aufgenommen oder alternativ extern an der Schnittstellenschaltung angeordnet sein. Wie es im vorhergehenden angemerkt wurde, ist die Logik in der Schnittstellenschaltung 226 unter Verwendung eines Zwei-Phasen-Taktsystems getaktet. Das eintreffende Taktsignal In_CLK wird an den Eingang einer Teile-durch-Zwei-Schaltung 295 geliefert, die Ausgangssignale, d. h. ein Schreibtaktsignal (Wr_CLK; Wr_CLK = write clock) und ein Phase-2-Taktsignal (P2_CLK), das das inverse Signal des Wr_CLK-Signals ist und folglich während der Phase P2 einen hohen Zustand aufweist, bereitstellt. Die Signale Wr_CLK und P2_CLK werden verwendet, um verschiedene Register in der Schnittstellenlogik zu steuern, wie es im folgenden beschrieben wird.
  • Das eintreffende Taktsignal In_CLK wird ferner an einen Eingang eines Multiplexers 299 geliefert. Der Multiplexer 299 empfängt ferner ein Quellentaktsignal Src_CLK von dem Kernprozessor 224 als zweites Eingangssignal. Wenn die Schnittstellenschaltung 224 konfiguriert ist, um in einer Hauptbetriebsart zu arbeiten, wird der Multiplexer 299 das Quellentaktsignal Src_CLK als sein Ausgangssignal auswählen, und wird das Quellentaktsignal Src_CLK als das Ausgangstaktsignal Out_CLK an den Ausgang der Schnittstellenschaltung 226 liefern. Umgekehrt, wenn die Schnittstellenschaltung nicht konfiguriert ist, um in der Hauptbetriebsart zu arbeiten, wird der Multiplexer 299 das Eingangstaktsignal In_CLK als sein Ausgangssignal auswählen und das Eingangstaktsignal In_CLK als das Aungangstaktsignal Out_CLK bereitstellen.
  • Das Ausgangssignal des Multiplexers 299 wird ferner an den Eingang einer Teile-durch-Zwei-Schaltung 297 geliefert, die ein Lesetaktsignal RD_CLK (RD_CLK = read clock) ebenso wie ein Signal (nicht gezeigt), das das inverse Signal des RD_CLK-Signals ist und für eine Ausgangssteuerung verwendet wird, an deren Ausgang bereitstellt. Wenn die Schnittstellenschaltung 226 nicht in der Hauptbetriebsart konfiguriert ist, sollten folglich das Schreibtaktsignal Wr_CLK und das Lesetaktsignal RD_CLK synchron sein, wobei beide das inverse Signal von P2_CLK sein sollten. Umgekehrt, wenn die Schnittstellenschaltung 226 in der Hauptbetriebsart konfiguriert ist, sollte das Lesetaktsignal RD_CLK lediglich durch das Quellentaktsignal Src_CLK angesteuert werden.
  • Gemäß einem Ausführungsbeispiel können die Taktsignale, die durch die Teile-durch-Zwei-Schaltungen 295 und 297 erzeugt werden, systemweit durch Hin- und Herschalten des Zustands eines einzigen Informationsbits auf einer der Informationsbusleitungen, z. B. Bit[31] der Busleitungen 250F (gezeigt in 4), und durch Synchronisieren der Ausgangssignale der Teile-durch-Zwei-Schaltungen 295 und 297 mit denselben synchronisiert werden.
  • Durch die Verwendung eines Durchgangswegs 261, der (über Multiplexer 270 und 282) zwischen dem Eingangsregister 260 und einem Ausgangsregister 300 (d. h. ein Ausgangsspeicherelement) angeordnet ist, ist die Schnittstellenschaltung 226 in der Lage, Informationspakete (und Typdaten) über deren Schaltungsanordnung in das Ausgangsregister 300 für eine Übertragung zu dem nächsten Verarbeitungselement schnell weiterzuleiten. Der Durchgangsweg 261 wird verwendet, wenn der Sicherungsweg (backup path) 290 (der im folgenden beschrieben wird) leer ist, und das nachgelagerte Verarbeitungselement (nicht gezeigt) ein Signal an die Schnittstellenschaltung 226 liefert, das anzeigt, daß dasselbe momentan in der Lage ist, Informationen zu empfangen. Falls jedoch das nachgelagerte Verarbeitungselement anzeigt, daß dasselbe nicht in der Lage ist, Informationen zu empfangen, werden die Informationen, die zu dem nachgelagerten Element weitergeleitet worden wären (falls dasselbe bereit gewesen ist, die Informationen zu empfangen), in Informationsspeicherelementen (z. B. Register) in dem Sicherungsinformationsweg 290 (der im folgenden beschrieben wird) gespeichert. Diese gesicherten Informationen müssen in den Informationsspeicherelementen des Sicherungsinformationswegs 290 zumindest so lange gespeichert werden, bis die Schnittstellenschaltung 226 damit aufhört, Informationen von einem vorgelagerten Verarbeitungselement (beispielsweise dem Verarbeitungselement 202 in 4) zu empfangen. Das vorgelagerte Verarbeitungselement wird damit aufhören, diese Informationen zu übertragen, indem das vorgelagerte Verarbeitungselement auf die Schnittstellenschaltung 226 anspricht, die an das vorgelagerte Verarbeitungselement ein Signal liefert, das dasselbe anweist, dessen Übertragung von Informationen anzuhalten.
  • 5. Kommunikationsprotokoll
  • Bei dem hierin beschriebenen Ausführungsbeispiel, wie es im vorhergehenden vorgestellt wurde, weisen die Informationspakete, die zwischen den Verarbeitungselementen übertragen werden, zwei Abschnitte auf. Beispielsweise kann der erste Abschnitt Adresseninformationen aufweisen, wobei der zweite Abschnitt Daten, die dieser Adresse zugeordnet sind, aufweisen kann. Zusätzlich ist jedem dieser zwei Abschnitte eines Informationspakets ein Typfeld zugeordnet. Bei einem Ausführungsbeispiel umfaßt das Typfeld 9 Bits und kann, wie es in Tabelle I gezeigt ist, folgendermaßen codiert sein:
  • Tabelle I
    Figure 00330001
  • Das Typfeld wird verwendet, um eine Anweisung an jedes der Verarbeitungselemente hinsichtlich dessen zu liefern, was mit den Informationen zu tun ist, die gleichzeitig mit demselben empfangen werden. Zwei Typfelder, die gemeinsam verwendet werden, sind die Register-Lese- und Register-Schreib-Typfelder. Ein Register-Schreib-Vorgang wird in zwei Schritten durchgeführt. Als erstes wird die Adresse während der Phase 1 (P1) über den Bus gesendet, wobei zweitens während der Phase 2 (P2) Daten gesendet werden. Für Register-Lese-Vorgänge wird die Adresse während der Phase 1 (P1) gesendet, wobei das Datenfeld, das während der Phase 2 (P2) gesendet wird, unbekannt ist. Nach einer kurzen Verzögerung werden die Daten, die aus dem Kernprozessor ausgelesen werden, in den vorher unbekannten Datenschlitz desselben Register-Lese-Pakets eingefügt und zu dem nächsten Verarbeitungselement in dem Ring weitergeleitet.
  • Zwei weitere gemeinsam verwendete Typfelder sind BIN-Lese- und BIN-Schreib-Anweisungen, die zum Lesen und Schreiben von BIN-Typdaten (d. h. Lese- und Schreibinformationen in spezifische Puffer, wie z. B. Überlagerungspuffer, Bildpuffer oder Texturcacheanordnungen) vorgesehen sind. Als weitere Typfeldoption können Blockübertragungsanweisungen verwendet werden, um große Datenblöcke zwischen einer Quelle und einem Zielort zu übertragen. Beispielsweise könnte ein großer Datenblock von einem Hostcomputer (über das Hauptverarbeitungselement) zu einem nachgelagerten Verarbeitungselement mittels Direktspeicherzugriffstechniken (DMA-Techniken; DMA = Direct Memory Access) übertragen werden. Zusätzlich können Ebenengleichungsanweisungen in das Typfeld aufgenommen werden, um Ebenengleichungsdaten zu den Registern für eine 3D-Aufbereitung zu übertragen. Schließlich werden sonstige Typanweisungen (Misc; Misc = miscellaneous = sonstig) verwendet, um spezielle Funktionen auf dem Bus zu implementieren. Beispielsweise könnte die Misc-Typanweisung verwendet werden, um einen Leseweg vor dem Durchführen eines anderen Operationstyps zu räumen.
  • Wie es aus der Tabelle I offensichtlich ist, verwenden einige Anweisungen gemeinsam Bits mit gemeinsamen Bedeutungen. Beispielsweise ist das Bit <8> des Typfelds ein "Gültig"-Bit, welches verwendet wird, um die Gültigkeit jedes der Abschnitte eines Informationspakets anzuzeigen. Falls das Gültigkeits-Bit eine "0" ist, werden die Bits <7:0> des Typfelds ignoriert. Zusätzlich wird das Bit <3> des Typfelds typischerweise verwendet, um zu identifizieren, ob ein gepufferter (d. h. ein Nicht-Prioritäts-) Informationsweg oder ein ungepufferter (d. h. ein Prioritäts-) Informationsweg verwendet werden sollte, um: (1.) Informationen von der Schnittstellenschaltung zu dem Kernprozessor zu übertragen, (2.) Informationen von dem Kernprozessor zu der Schnittstellenschaltung zu übertragen, oder (3.) Informationen in dem Sicherungsinformationsweg (der im vorhergehenden beschrieben wurde) zu halten. Weitere Details bezüglich gepufferter und ungepufferter Informationswege werden im folgenden bereitgestellt.
  • Wie es im vorhergehenden erwähnt wurde, werden Informationen in gemultiplexten Paketen auf dem Bus übertragen, wobei eine Hälfte jedes Informationspakets während jeder Phase des Taktsignals übertragen wird. Die folgende Tabelle II faßt die Informationen zusammen, die während der Phase 1 und 2 (P1 und P2) für die Operationstypen, die im vorhergehenden beschrieben und in Tabelle I aufgelistet sind, übertragen werden:
  • Tabelle II
    Figure 00350001
  • Bezugnehmend auf die 4 und 6 (und wieder unter Verwendung beispielsweise des Verarbeitungselements 222) wird, wie es in der Tabelle II gezeigt ist, der erste Abschnitt jedes Informationspakets von der Schnittstellenschaltung 226 während der Phase P1 (auf den Informationsleitungen 250F) empfangen, wobei der zweite Abschnitt jedes Pakets von der Schnittstellenschaltung 226 während der Phase P2 (auch auf den Informationsleitungen 250F) empfangen wird. Wie es in 6 gezeigt ist, umfaßt die Schnittstellenschaltung 226 ein Eingangsregister 260, ein P1-Register 262, ein P1WD-Register 264 und ein P2WD-Register 266. Das Eingangsregister 260 empfängt die eintreffenden Informationspakete (und deren zugeordnete Typdaten), wobei das P1-Register 262 sein Eingangssignal aus dem Ausgang des Eingangsregisters 260 empfängt. Zusätzlich empfängt das P1WD-Register 264 sein Eingangssignal aus dem Ausgang des P1-Registers 262, wobei das P2WD-Register sein Eingangssignal aus dem Ausgang des Eingangsregisters 260 empfängt.
  • Im folgenden wird nun kurz auf 7 Bezug genommen. Es ist ein Zeitablaufdiagramm ist gezeigt, das den Empfang verschiedener vollständiger Informationspakete durch die Schnittstellenschaltung 226 darstellt. Insbesondere zeigt dieses Zeitablaufdiagramm: (1.) den Zustand des eintreffenden Taktsignals (In_CLK), das auf der Busleitung 250A empfangen wird, (2.) die Informationen (Info[31:0]), die auf den Busleitungen 250F empfangen werden, (3) das Schreibtaktsignal (Wr_CLK), das aus der Teile-durch-Zwei-Schaltung 295 ausgegeben wird, und (4.) den Inhalt des Eingangsregisters 260 (IN_Reg; IN_Reg = input register), des P1-Registers 262 (P1_Reg) und der P1WD- und P2WD-Register 264 bzw. 266 (P1-/P2WD). Die Zustände der vorhergehenden Signale sind über einer Reihe von Übertragungszyklen T0–T3 dargestellt, wobei jeder der Übertragungszyklen T0–T3 eine erste Phase P1 und eine zweite Phase P2 umfaßt. Diese Signale sind für einen Vergleich in demselben Zeitmaßstab (horizontale Achse) dargestellt. Die Anordnung eines Signals über einem anderen gibt nicht an, daß ein Signal eine größere Amplitude als die anderen Signale aufweist.
  • Da ein Ausführungsbeispiel der hierin beschriebenen Erfindung unter Verwendung von ASIC-Schaltungen als den Verarbeitungselementen implementiert ist, kann die Steuerung des "Nächster-Zustand"-Inhalts jedes der einzelnen Informationsspeicherelemente, die in 6 gezeigt sind (d. h. wie der Inhalt der Informationsspeicherelemente während des nächsten getakteten Zustands aussieht), ebenso wie die Steuerung des Informationsflusses über die verschiedenen Multiplexer mittels einer Softwaresimulationssprache, wie z. B. Verilog, implementiert werden, und daraufhin mittels eines Synthesehilfsmittels, wie z. B. SynopsysTM, das auf einem Mehrzweckprozessor arbeitet, in eine Logikgatterschaltung umgewandelt werden. Die logischen Funktionen können alternativ in einer Software-Programm geschrieben und von einem Prozessor durchgeführt werden.
  • Wie es in 7 gezeigt ist, leitet ein Ausgangsregister eines vorgelagerten Verarbeitungselements beispielsweise eine Adresse ADR1 (d. h. einen Adressenabschnitt eines ersten Informationspakets) über die Busleitungen 250F während der Phase P1 des Übertragungszyklusses T1 weiter. Während der Phase P2 des Übertragungszyklusses T1 latcht die fallende Flanke des eintreffenden Taktsignals In_CLK die ADR1 (Adresse 1) in das Eingangsregister 260 der Schnittstellenschaltung 226. Während der Phase P1 zum Zeitpunkt T2 latcht die fallende Flanke des eintreffenden Taktsignals In_CLK den Datenabschnitt DATEN1 des ersten Informationspakets in das Eingangsregister 260. Dadurch bleibt das Eingangsregister 260 und die Schnittstellenschaltung 226 frei, um die ADR2 von einem vorgelagerten Verarbeitungselement während der nächsten fallenden Flanke des eintreffenden Taktsignals In_CLK (d. h. während der Phase 2 (P2) zum Zeitpunkt T2) zu empfangen. Die Typdaten werden von der Schnittstellenschaltung 226 (aus den Busleitungen 250E) auf eine identische Art und Weise empfangen. Folglich werden Informations- und Typ daten von der Schnittstellenschaltung 226 mit der Frequenz des eintreffenden Taktsignals In_CLK, d. h. mit ungefähr 200 MHz, empfangen.
  • Um die zwei Abschnitte jedes Informationspakets in ein paralleles 82-Bit-Wort (das zu dem Kernprozessor 224 weitergeleitet werden soll) zu demultiplexen, ist das Phase-P1-Register 262 bereitgestellt. Wenn die Informationen (und zugeordneten Typfelder) von der Schnittstellenschaltung 226 empfangen werden, wie es im vorhergehenden beschrieben wurde, wird das P1-Register 262 von einem Taktsignal mit halber Frequenz Wr_CLK gesteuert, um lediglich den ersten Abschnitt jedes Informationspakets zu latchen. Ferner werden die P1-/P2WD-Register 264/266 (zum Weiterleiten von Informationen an den Kernprozessor 224) von dem Taktsignal mit halber Frequenz P2_CLK (das das inverse Signal des Taktsignals mit halber Frequenz Wr_CLK ist) gesteuert, um gleichzeitig beide Abschnitte jedes Informationspakets zu latchen.
  • Insbesondere wird während der ansteigenden Flanke des Taktsignals mit halber Frequenz Wr_CLK der Inhalt des Eingangsregisters 260 in das P1-Register 262 gelatcht, wobei während der ansteigenden Flanke des Taktsignals mit halber Frequenz P2_CLK (die die fallende Flanke von Wr_CLK ist) der Inhalt des P1-Registers 262 in das P1WD-Register 264 gelatcht und der Inhalt des Eingangsregisters 260 in das P2WD-Register 266 gelatcht wird. Folglich speichern die P1-/P2WD-Register 264 und 266 nach der ansteigenden Flanke eines P2_CLK-Signals jeweils den ersten und zweiten Abschnitt eines Informationspakets. Während eines beliebigen Zeitpunkts vor der nächsten ansteigenden Flanke des P2_CLK-Signals (z. B. während der ansteigenden Flanke des nächsten Wr_CLK-Signals) werden die Informationen in den P1-/P2WD-Registern entweder in das asynchrone gepufferte (d. h. das Nicht-Prioritäts-) Schreib-FIFO (BW) 228 oder das asynchrone ungepufferte (d. h. das Prioritäts-) Schreib-FIFO (UW) 230 geladen, d. h. abhängig von den Werten bestimmter Bits in den Typfeldern, die dem Paket zugeordnet sind, wie es im folgenden detaillierter erklärt werden wird. Es gibt keine Filterung der Adressen/Daten- und Typinformationen, die von der Schnittstelle bereitgestellt werden. Folglich wird jedes Informationspaket, das an der Schnittstelle empfangen wird, zu dem Kernprozessor 224 weitergeleitet, der bestimmt, ob dieses Paket von Interesse ist oder nicht.
  • Im folgenden wird wieder auf 6 Bezug genommen. Alle eintreffenden gemultiplexten Informationspakete werden von dem Eingangsregister 260 während jeder fallenden Flanke des eintreffenden Taktsignals In_CLK (wie es im vorhergehenden angemerkt wurde) empfangen, wobei die Informationen entweder aus: (1.) dem Eingangsregister 260 (über den Durchgangsweg 261), (2.) dem Sicherungsinformationsweg 290 oder (3.) den gepufferten Lese- oder ungepufferten Lese- FIFOs (BR, UR) 232 oder 234 in das Ausgangsregister 300 (über einen oder mehrere der Multiplexer 270, 282 und 280) während den fallenden Flanken des Aungangstaktsignals Out_CLK (das dem Eingangstaktsignals In_CLK entspricht, wenn sich das Verarbeitungselement nicht in der Hauptkonfiguration befindet) getaktet werden. Folglich empfangen und übermitteln das Eingangsregister 260 und das Ausgangsregister 300, wenn dieselben nicht in der Hauptbetriebsart konfiguriert sind, Informationen während jeder fallenden Flanke des Eingangstaktsignals In_CLK, d. h. sowohl während des P1- als auch des P2-Übertragungszyklus. Da die Informationspakete in zwei Abschnitte (beispielsweise einen Adressenabschnitt und einen Datenabschnitt) gemultiplext sind, empfängt das Eingangsregister 260 den ersten Abschnitt jedes Informationspaketes, beispielsweise die Adresseninformationen, tatsächlich während der fallenden Flanke des Eingangstaktsignals In_CLK während der P2-Betriebsphase, und den zweiten Abschnitt des Informationspakets, beispielsweise die Dateninformationen, während der fallenden Flanke des Eingangstaktsignals In_CLK während einer P1-Betriebsphase (die der P2-Phase unmittelbar folgt, während der die Adresse in das Register 260 getaktet wurde). Entsprechend wird der erste Abschnitt jedes Informationspakets, das von der Schnittstellenschaltung 226 über tragen wird, mittels einer fallenden Flanke des Ausgangstaktsignals Out_CLK (die dem Eingangstaktsignal In_CLK entspricht, wenn sich das Verarbeitungselement nicht in der Hauptkonfiguration befindet) während einer P1-Betriebsphase in das Ausgangsregister 300 getaktet, wobei der zweite Abschnitt jedes übertragenen Informationspakets mittels einer fallenden Flanke des Ausgangstaktsignals Out_CLK während einer P2-Betriebsphase (die der P1-Phase unmittelbar folgt, während der der erste Abschnitt des Pakets in das Register 300 getaktet wurde) in das Ausgangsregister 300 getaktet wird.
  • Wenn das Verarbeitungselement, das dem Verarbeitungselement 222 nachgelagert ist (beispielsweise das Verarbeitungselement 242), anzeigt, daß es in der Lage ist, Informationen von dem Verarbeitungselement 222 zu empfangen, und das Verarbeitungselement 222 selbst nicht verzögert ist (beispielsweise, wenn dasselbe auf Lese-Informationen aus seinem Kernprozessor wartet), wird das Ausgangsregister 300 Informationen direkt aus dem Eingangsregister 260 (über den Durchgangsweg 261) empfangen, so daß ein Abschnitt eines Informationspakets (und dessen zugeordnete Typdaten) während jeder fallenden Flanke des Eingangstaktsignals In_CLK über die Schnittstellenschaltung 226 verschoben wird, wobei als Ergebnis des Vorhandenseins der Schnittstellenschaltung eine Latenzzeit von lediglich einem einzigen Taktzyklus verursacht wird.
  • 6. Sicherungsinformationswege
  • Falls das Verarbeitungselement, das dem Verarbeitungselement 222 nachgelagert ist, (beispielsweise das Verarbeitungselement 242) anzeigt, daß dasselbe momentan nicht in der Lage ist, Informationen von dem Verarbeitungselement 222 zu empfangen, oder falls das Verarbeitungselement 222 selbst verzögert ist (beispielsweise, wenn dasselbe auf Leseinformationen von seinem Kern wartet), werden die Informationsspei cherelemente in dem Sicherungsinformationsweg 290 (der im folgenden beschrieben wird) verwendet, um Informationen zu speichern, die in der Schnittstellenschaltung 226 gesichert wurden, während das Verarbeitungselement (beispielsweise das Verarbeitungselement 202), das dem Verarbeitungselement 222 nachgelagert ist, noch Daten sendet, d. h. bis das vorgelagerte Verarbeitungselement 202 auf eine Anzeige von dem Verarbeitungselement 222 anspricht, daß dasselbe gegenwärtig nicht in der Lage ist, Informationen zu akzeptieren. Das heißt, diese Sicherungsfunktion wird zumindest solange durchgeführt, bis die Schnittstellenschaltung 226 in der Lage ist, dem vorgelagerten Verarbeitungselement (z. B. dem Verarbeitungselement 202) zu signalisieren, damit aufzuhören, Informationen zu senden.
  • Wie es in 6 gezeigt ist, umfaßt der Sicherungsinformationsweg 290 einen gepufferten (d. h. einen Nicht-Prioritäts-) Informationssicherungsweg 292 und einen ungepufferten (d. h. einen Prioritäts-) Informationssicherungsweg 294. Der gepufferte Informationssicherungsweg 292 umfaßt wiederum gepufferte (d. h. Nicht-Prioritäts-) Sicherungswegspeicherelemente B0, B1, B2, B3, B4 und B5, wobei der ungepufferte Informationssicherungsweg 294 ungepufferte (d. h. Prioritäts-) Sicherungsspeicherelemente U0, U1, U2, U3, U4 und U5 umfaßt. Ferner sind in dem Sicherungsinformationsweg 290 Multiplexer 292A und 292B aufgenommen, die bei einem Ausführungsbeispiel angeordnet sind, um den Inhalt lediglich eines (oder keines) der gepufferten Sicherungswegspeicherelemente B4 und B5 und der ungepufferten Sicherungswegspeicherelemente U4 und U5 an einen der Eingänge des Multiplexers 270 zu liefern, mit dem die Ausgänge der Multiplexer 292A und 292B verbunden sind.
  • Ferner sind in 6 ein B_Rdy-Register (B_Rdy = buffered ready) 322, ein U_Rdy-Register (U_Rdy = unbuffered ready) 324, eine B_Rdy-Logikschaltung 326 und eine U_Rdy-Logikschaltung 328 gezeigt. Das B_Rdy-Register 322 empfängt ein eintreffendes gepuffertes Bereitschaftssignal (B_Rdy_In) von einem nachgelagerten Verarbeitungselement (über die B_Rdy- Logikschaltung 326), und liefert ein abgehendes gepuffertes Bereitschaftssignal (B_Rdy_Out) an ein vorgelagertes Verarbeitungselement. Entsprechend empfängt das U_Rdy-Register 324 ein eintreffendes ungepuffertes Bereitschaftssignal (U_Rdy_In) von einem nachgelagerten Verarbeitungselement (über die U_Rdy-Logikschaltung 328), und liefert ein abgehendes ungepuffertes Bereitschaftssignal (U_Rdy_Out) an ein vorgelagertes Verarbeitungselement. Die B_Rdy- und U_Rdy-Logikschaltungen 326 und 328 empfangen zusätzlich zu den eintreffenden B_Rdy_In- und U_Rdy_In-Signalen eine Reihe von weiteren Eingangssignalen, wobei beliebige derselben anzeigen können, daß das Verarbeitungselement 222 momentan nicht in der Lage ist, Informationen von einem vorgelagerten Verarbeitungselement zu empfangen. Jedes der B_Rdy- und U_Rdy-Register 322 und 324 wird während der ansteigenden Flanke des Wr_CLK-Signals getaktet.
  • Die nachgelagerten Verarbeitungselemente signalisieren den vorgelagerten Verarbeitungselementen, die Informationsübertragung anzuhalten, indem einfach deren abgehende gepufferte Bereitschaftssignale (B_Rdy_Out) (beispielsweise auf der Busleitung 250B) oder deren abgehende ungepufferte Bereitschaftssignale (U_Rdy_Out) (beispielsweise auf der Busleitung 250C) zu dem vorgelagerten Element deaktiviert werden. Die B_Rdy_Out- und U_Rdy_Out-Signale geben die jeweilige Fähigkeit des Verarbeitungselements 222 an, gepufferte (d. h. Nicht-Prioritäts-) Informationen und ungepufferte (d. h. Prioritäts-) Informationen zu empfangen. Weitere Erklärungen hinsichtlich der Verwendung und Steuerung von gepufferten und ungepufferten Informationen werden detailliert im folgenden vorgelegt.
  • Der Sicherungsinformationsweg 290 in 6 umfaßt drei Pufferungsstufen in jedem seiner gepufferten und ungepufferten Informationswege 292 und 294, um die maximale Informationsmenge aufzunehmen, die beispielsweise zwischen dem Zeitpunkt gesichert werden könnten, an dem die Schnittstellenschaltung 226 zuerst ein eintreffendes deaktiviertes B_Rdy_In-Signal von der nachgelagerten Schnittstellenschaltung 246 empfängt, und dem Zeitpunkt, an dem die Schnittstellenschaltung 226 tatsächlich damit aufhört, Informationen von der vorgelagerten Schnittstellenschaltung 206 zu empfangen (nachdem die Schnittstellenschaltung 226 deren abgehendes gepuffertes Bereitschaftssignal B_Rdy_Out zu der vorgelagerten Schnittstellenschaltung 206 deaktiviert hat).
  • Der Empfang entweder des eintreffenden B_Rdy_In- oder des U_Rdy_In-Signals durch die Schnittstellenschaltung 226 (aus einem nachgelagerten Verarbeitungselement) wird bewirken, daß die Schnittstellenschaltung 226 die Übertragung von Informationen des identifizierten Typs (d. h. entweder gepufferte oder ungepufferte Informationen) zu dem nachgelagerten Verarbeitungselement anhält und beliebige anhängige Informationen als auch beliebige Informationen in reservierte (vorgegebene) Puffer, die in dem Sicherungsinformationsweg 290 aufgenommen sind, speichert, die während der Zeitdauer zwischen dem Zeitpunkt, wenn die Schnittstellenschaltung 226 sein abgehendes B_Rdy_Out- oder U_Rdy_Out-Signal (zu einem vorgelagerten Verarbeitungselement) deaktiviert, und dem Zeitpunkt, wenn das vorgelagerte Verarbeitungselement tatsächlich damit aufhört, Informationen des identifizierten Typs zu senden. Folglich ist der Empfang eines deaktivierten eintreffenden B_Rdy_In- oder U_Rdy_In-Signals eine Anzeige dafür, daß das Verarbeitungselement, das das Signal empfängt, (sobald wie möglich) damit aufhören sollte, Informationen und Typdaten auf dessen Busleitungen für abgehende Informationen und Typdaten zu senden.
  • Sobald die Schnittstellenschaltung 226 ein deaktiviertes B_Rdy_In- oder U_Rdy_In-Signal von einem nachgelagerten Verarbeitungselement empfängt, wird dieselbe ihre Informationsübertragung lediglich anhalten, nachdem dieselbe damit fertig ist, ein beliebiges vollständiges Informationspaket zu senden, dessen Übermittlung bereits begonnen hatte, als dieselbe das Signal empfangen hat. Falls beispielsweise die Schnittstellenschaltung 226 ein deaktiviertes B_Rdy_In-Si gnal von der Schnittstellenschaltung 246 empfängt, genau nachdem eine Adresse (die einer Nicht-Prioritätsoperation zugeordnet ist) in das Ausgangsregister 300 getaktet worden ist, wird die Schnittstellenschaltung 226 folglich damit weitermachen, den Datenabschnitt des Informationspakets (der der vorher gesendeten Adresse zugeordnet ist) zu takten, bevor die Informationsübertragung zu dem nachgelagerten Verarbeitungselement 246 angehalten wird.
  • Es wird angemerkt, daß die Informationen, die zu dem Sicherungsweg 290 übertragen werden, ferner in das P1WD-Register 264 und das P2WD-Register 266 gelatcht und entweder zu dem gepufferten Schreib-FIFO (BW) 221 oder dem ungepufferten Schreib-FIFO (UW) 230 (abhängig davon, ob die Informationen gepuffert oder ungepuffert sind) übertragen werden, so daß sogar die "gesicherten" Informationen den Kern 224 erreichen werden (für den Fall, daß die Informationen den Kern betreffen).
  • Zur Vereinfachung wird sich die Beschreibung im folgenden lediglich auf die Verwendung und die Auswirkungen der B_Rdy_In- und B_Rdy_Out-Signale und die Verwendung des gepufferten Sicherungsinformationswegs 292 beziehen, obwohl es offensichtlich sein sollte, daß die Verfahren, die für eine temporäre Speicherung von gesicherten Informationen verwendet werden, sowohl für gepufferte als auch ungepufferte Informationen identisch sind.
  • Wenn Informationen (und Typdaten) in den gepufferten Sicherungsweg 292 übertragen werden, werden dieselben zuerst in die Register B4 und B5 geschrieben. Sobald die Register B4 und B5 voll sind, werden daraufhin eintreffende Informationen (und Typdaten) in die Register B2 und B3 geschrieben. Wenn die Register B2 und B3 voll sind, werden schließlich die eintreffenden Informationen (und Typdaten) in die Register B0 und B1 geschrieben. Wenn die Informationen (und Typdaten) in den gepufferten Sicherungsweg 292 übertragen werden, werden die Informationen (und Typdaten) aus dem P1-Re gister 262 zusätzlich immer in eines der Register B0, B2 oder B4 geschrieben, wobei die Informationen aus dem Eingangsregister 260 immer in eines der Register B1, B3 oder B5 geschrieben werden. Obwohl die Informationsübertragungswege von dem P1-Register 262 zu den gepufferten Sicherungsspeicherelementen B2 und B4, und von dem Eingangsregister 260 zu den gepufferten Sicherungsspeicherelementen B3 und B5 nicht explizit in 6 dargestellt sind, sollte es offensichtlich sein, daß diese Informationsübertragungswege trotzdem vorhanden sind, und daß die Eingänge in den gepufferten Sicherungsweg 292 Eingänge zu jedem Paar von gepufferten Sicherungsspeicherelementen (d. h. B0 und B1, B2 und B3, und B4 und B5) in dem gepufferten Sicherungsweg 292 darstellen sollen.
  • Die Informationen (und Typdaten) werden immer umgekehrt dazu, wie der gepufferte Sicherungsweg 292 gefüllt wird, aus den Registern B4 und B5 ausgelesen, wenn der gepufferte Sicherungsweg 292 geleert wird. Wenn die Register B4 und B5 leer sind, wird zusätzlich der Inhalt der Register B2 und B3 (falls vorhanden) in die Register B4 bzw. B5 verschoben, wobei der Inhalt der Register B0 und B1 (falls vorhanden) in die Register B2 bzw. B3 verschoben wird.
  • Wie es im vorhergehenden angemerkt wurde, kann eine Software-entworfene/Hardware-implementierte Logik verwendet werden, um den Inhalt der nächsten Stufe jedes der Register, die bei der Erfindung verwendet werden, zu steuern. Gemäß einem Ausführungsbeispiel werden anstelle des Überprüfens des Inhalts jedes der einzelnen Register in dem Sicherungsinformationsweg 290, der Typdaten enthält, ebenso wie der einzelnen Typdatenregister in dem P2-Register 262, um zu bestimmen, welche Informationen während des nächsten Taktzyklusses zu welcher Position in der Schaltung übertragen werden sollten, eine Reihe von separaten Einzel-Bit-Registern (d. h. inhaltsidentifizierende Speicherelemente), beispielsweise die Register 302, 304, 306, 308, 310, 312 und 314, die in dem Steuerregisterblock 320 aufgenommen sind, verwendet, um nachzuverfolgen, welcher Informationstyp in welchen Positionen in dem Sicherungsinformationsweg 290 vorhanden ist, als auch um nachzuverfolgen, welcher Informationstyp in dem P1-Register 262 vorhanden ist. Beispielsweise: (1.) das Einzelregister 302 kann verwendet werden, um anzuzeigen, ob die gepufferten Sicherungsregister B4 und B5 voll sind, (2.) das Einzelregister 304 kann verwendet werden, um anzuzeigen, ob die gepufferten Sicherungsregister B2 und B3 voll sind, (3.) das Einzelregister 306 kann verwendet werden, um anzuzeigen, ob die gepufferten Sicherungsregister B0 und B1 voll sind, (4.) das Einzelregister 308 kann verwendet werden, um anzuzeigen, ob das gepufferte Sicherungsregister B0 Informationen eines sonstigen Typs, die in demselben gespeichert sind, aufweist, (5.) das Einzelregister 310 kann verwendet werden, um anzuzeigen, ob das gepufferte Sicherungsregister B2 Informationen des sonstigen Typs, die in demselben gespeichert sind, aufweist, (6.) das Einzelregister 312 kann verwendet werden, um anzuzeigen, ob das gepufferte Sicherungsregister B4 Informationen eines sonstigen Typs, die in demselben gespeichert sind, aufweist, und (7.) das Einzelregister 314 kann verwendet werden, um anzuzeigen, ob das P1-Register 262 gepufferte Informationen des sonstigen Typs, die in demselben gespeichert sind, aufweist. Die Verwendung dieser Einzel-Bitregister vereinfacht die Steuerung der Schaltung und ermöglicht es, daß die Schaltung mit einer höheren Geschwindigkeit arbeiten kann, die sonst für einen Betrieb nicht möglich wäre.
  • Entsprechende Register (nicht gezeigt) können ferner in dem Steuerregisterblock 320 vorgesehen sein, um anzuzeigen, ob jedes der Sicherungsregister B0, B2 und B4, ebenso wie das P1-Register 262 weitere spezifische Informationsarten, die in denselben gespeichert sind, aufweist, wie z. B. eine Adresse, die mit der Basisadresse des Kerns dieses Verarbeitungselements übereinstimmt, eine Adresse eines BIN-Lesepakets oder eines Blockübertragungspakets (BltOb), wie es in der obigen Tabelle I definiert ist. Entsprechende Informationen sind ferner in den zusätzlichen Einzel-Bitregistern (nicht gezeigt) in dem Steuerregisterblock 320 (d. h. in inhaltsidentifizierenden Speicherelementen) gespeichert, um den Inhalt der ungepufferten (d. h. Prioritäts-) Sicherungsspeicherelemente, beispielsweise der Register, die in dem ungepufferten Sicherungsweg 294 enthalten sind, zu identifizieren. Zusätzlich werden die "typidentifizierenden" Einzel-Bitregister (nicht gezeigt) in dem Steuerregisterblock 320 verwendet, um zu identifizieren, ob das P1-Register 262 bestimmte Typen von gepufferten Informationen, beispielsweise gepufferte BltOb-Informationen, enthält, woraufhin dieselben verwendet, um zu identifizieren, ob dasselbe bestimmte Typen von ungepufferten Informationen, beispielsweise ungepufferte BltOb-Informationen, enthält.
  • Das B_Rdy_Out-Signal weist zwei Zustände auf; d. h. einen aktivierten Zustand, der anzeigt, daß das Verarbeitungselement, das das B_Rdy_Out-Signal überträgt, verfügbar ist, um Informationen aufzunehmen, und einen nicht-aktivierten Zustand, der anzeigt, daß das Verarbeitungselement nicht verfügbar ist, um Informationen aufzunehmen. Bei einem Ausführungsbeispiel entspricht der aktivierte Zustand einer logischen "1", wobei der deaktivierte Zustand einer logischen "0" entspricht.
  • Zusätzlich dazu, daß ein Verarbeitungselement sein abgehendes B_Rdy_Out-Signal zu einem vorgelagerten Verarbeitungselement als Antwort auf den Empfang eines deaktivierten eintreffenden B_Rdy_In-Signals von einem nachgelagerten Verarbeitungselement deaktiviert, kann ein Verarbeitungselement aus einer Vielzahl weiterer Gründe nicht in der Lage sein, Informationen aufzunehmen. Falls beispielsweise das gepufferte Schreib-FIFO (BW) 228 (d. h. ein Nicht-Prioritätsinformationsspeicherelement) innerhalb einer bestimmten Anzahl von Eintragungen voll wird (wie es detaillierter im folgenden erklärt wird), wird die B_Rdy-Logikschaltung 326 bewirken, daß das abgehende B_Rdy_Out-Signal (während des nächsten Wr_CLK-Takt) deaktiviert wird, um das vorgelagerte Verarbeitungselement von einer Übertragung von Informationen abzuhalten, wodurch sichergestellt wird, daß keine eingegebenen Informationen verloren gehen, da die Schnittstellenschaltung 226 keine weiteren Informationen empfangen kann. Ferner wird während einer Kernleseoperation, falls keine Lesedaten bereits vorhanden sind (beispielsweise aufgrund einer Vorableseoperation = Pre-Fetch-Operation), die B_Rdy-Logikschaltung 326 bewirken, daß das abgehende B_Rdy_Out-Signal (während des nächsten Wr_CLK-Takts) deaktiviert wird, wenn ein eintreffendes Informationspaket codiert ist, um eine Leseoperation aus dem Kern 224 durchzuführen. Diese Leseoperation kann ein Lesen eines oder mehrerer Kernregister oder ein Lesen eines Speicherelements (wie z. B. eines Rahmenpuffers), das mit dem Kern gekoppelt ist, umfassen.
  • Wenn ein Lesepaket (z. B. ein Register-Lese-Paket) empfangen wird, wenn keine vorab-gelesenen Daten (prefetched data) vorhanden sind, empfängt das Verarbeitungselement 222 eine Anzeige, daß dasselbe (sobald wie möglich) damit aufhören sollte, Informationen und Typdaten zu dem nachgelagerten Verarbeitungselement zu senden. Das heißt, ein Lesepaket, das von dem Verarbeitungselement 222 empfangen wird, bildet eine Anzeige, daß das Verarbeitungselement 222 (zusätzlich dazu, daß dem vorgelagerten Verarbeitungselement signalisiert wird, damit aufzuhören, Informationen zu senden) gegenwärtig (so bald wie möglich) damit aufhören sollte, Informationen und Typdaten zu dem nachgelagerten Verarbeitungselement zu senden, insofern das Verarbeitungselement 222 auf Informationen warten muß, die aus dessen Kern ausgelesen werden sollen, bevor diese Informationen (die mit der vorher empfangenen Adresse gemultiplext sind) zu dem nachgelagerten Verarbeitungselement übertragen werden können.
  • Wie es im vorhergehenden erwähnt wurde, tritt, wenn ein Auslesen von Kerndaten angefordert wird, eine geringe Verzögerungsperiode auf, sowie auf den Kernprozessor 224 zugegriffen wird, bevor die Lesedaten zurückgesendet werden. Die Daten werden entweder über das gepufferte Lese-FIFO (BR) 232 (d. h. über ein Nicht-Prioritäts-Schnittstelleneingangsspei cherelement) oder das ungepufferte Lese-FIFO (UR) 234 (d. h. über ein Prioritäts-Schnittstelleneingangsspeicherelement) aus dem Kern ausgelesen, wobei dies davon abhängt, ob die Daten gepuffert oder ungepuffert sind, wie es im folgenden erklärt wird. Die Daten aus diesen FIFOs werden daraufhin in eines von vier Informationshalteregistern, d. h. in die Informationshalteregister P1_OUT, P2_OUT, U_P1_OUT und U_P2_OUT (272, 274, 276 bzw. 278), eingelesen. Zur Vereinfachung wird im folgenden lediglich wieder das Lesen von gepufferten Daten beschrieben, wobei es jedoch offensichtlich sein sollte, daß das Lesen von ungepufferten Daten auf dieselbe Art und Weise durchgeführt wird (obwohl unterschiedliche Register verwendet werden).
  • Während der Verzögerungsperiode, wenn auf den Kernprozessor 224 zugegriffen wird, wird die Adresse des Lesevorgangs in einem Informationsspeicherelement innerhalb des Sicherungsinformationswegs 290 gespeichert, wobei das Verarbeitungselement 224 sein abgehendes B_Rdy_Out-Signal auf der Busleitung 250B deaktiviert, um dem vorgelagerten Verarbeitungselement zu signalisieren, damit aufzuhören, Informationen zu senden. Wenn die Daten von dem Kernprozessor 224 zurückgesendet werden, breiten sich dieselben durch das gepufferte Lese-FIFO (BR) 232 aus und werden in dem P2_OUT-Register 274 gespeichert. Sobald die wiedergewonnenen Daten in dem P2_OUT-Register 274 gespeichert sind, wird das B_Rdy_Out-Signal erneut aktiviert (wodurch angezeigt wird, daß das vorgelagerte Verarbeitungselement wieder Informationen senden darf), wobei die Adresse, die dem Lesevorgang entspricht, durch die Multiplexer 292A, 270 und 282 weitergeleitet und während der ansteigenden Flanke des nächsten P2_CLK-Signals ausgegeben wird. Die wiedergewonnenen Daten werden daraufhin (nach dem Durchlaufen der Multiplexer 280 und 282) während der ansteigenden Flanke des nächsten RD_CLK-Signals ausgegeben. Wenn ein Kernlesevorgang durchgeführt wird, kann somit das B_Rdy_Out-Signal verwendet werden, um die vorgelagerten Verarbeitungselemente vorübergehend anzuhalten, bis die Lesedaten verfügbar sind. Nachdem der Kernlesevorgang durchge führt ist, können folglich die Adresse und die Daten, die aus dieser Adresse wiedergewonnen werden, mit einer Verzögerungsperiode, die (im wesentlichen) lediglich durch die Verzögerung bestimmt ist, die der Kernleseoperation zugeordnet ist, synchron übertragen werden.
  • Bezugnehmend nun auf 8 ist ein Zeitablaufdiagramm dargestellt, das die Latenzzeit darstellt, die zwischen dem Zeitpunkt auftritt, wenn das abgehende B_Rdy_Out-Signal von dem Verarbeitungselement 222 deaktiviert wird, nachdem dasselbe beispielsweise ein Kernlesepaket empfangen hat, und dem Zeitpunkt, wenn das Verarbeitungselement 222 tatsächlich damit aufhört, Informationen von einem vorgelagerten Verarbeitungselement (beispielsweise dem Verarbeitungselement 202) zu empfangen. Diese Signale sind für einen Vergleich in demselben Zeitmaßstab (horizontale Achse) dargestellt. Die Anordnung eines Signals über einem anderen gibt nicht an, daß ein Signal eine größere Amplitude als die anderen Signale aufweist.
  • Wie gezeigt, werden während der Phase 1 (P1) und der Phase 2 (P2) jedes Übertragungszyklusses Adressen- bzw. Dateninformationen auf den Busleitungen 250F empfangen. Falls die Typinformationen, die einer während der Phase P1 des Übertragungszyklusses T1 gesendeten Adresse zugeordnet sind, anzeigen, daß eine Kernleseoperation durchgeführt werden soll, wird daraufhin während der Phase P2 des Übertragungszyklusses T1 das B_Rdy_Out-Signal deaktiviert. Wie es durch den hohen Zustand des Bits <8> des Typfelds (d. h. des Gültigkeitssignals) angezeigt ist, werden auf den Busleitungen 250F bis zum Ende des Übertragungszyklusses T2 andauernd gültige Adressen- und Dateninformationen empfangen. Die Zeitverzögerung zwischen dem Zeitpunkt, wenn das B_Rdy_Out-Signal während des Übertragungszyklusses T1 deaktiviert wird, und dem Zeitpunkt, wenn damit aufgehört wird, Informationen auf dem Bus während des Übertragungszyklusses T2 zu übertragen, ergibt eine Sicherung der Informationen an dem Verarbeitungselement 222.
  • Bezugnehmend nun auf 9 ist eine entsprechende Verzögerung zwischen dem Zeitpunkt, wenn das B_Rdy_Out-Signal durch das Verarbeitungselement 222 erneut aktiviert wird, und dem Zeitpunkt, wenn das Verarbeitungselement 222 wieder gültige Informationen von einem vorgelagerten Verarbeitungselement (beispielsweise dem Verarbeitungselement 202) empfängt, dargestellt. Diese Signale sind für einen Vergleich. in demselben Zeitmaßstab (horizontale Achse) dargestellt. Die Anordnung eines Signals über einem weiteren Signal gibt nicht an, daß ein Signal eine höhere Amplitude als die anderen Signale aufweist. Diese Zeitverzögerung ermöglicht es, daß Informationen in dem Sicherungsinformationsweg 290 aus dem Ausgangsregister 300 weitergeleitet werden, bevor neue Informationen von dem Eingangsregister 260 der Schnittstellenschaltung 226 empfangen werden.
  • Im folgenden wird wieder auf 6 Bezug genommen. Nun wird der Betrieb der Schnittstellenschaltung 226 beschrieben, nachdem dieselbe ein eintreffendes B_Rdy_In-Signal (von einem nachgelagerten Verarbeitungselement) empfangen hat, das deaktiviert worden ist. Ein erster Abschnitt eines eintreffenden Informationspakets (z.B. eine Adresse und Adressentypinformationen) wird an dem Eingang des Eingangsregisters 260 während der Phase P1 eines Übertragungszyklusses empfangen. Während der Phase P2 desselben Übertragungszyklusses wird der erste Abschnitt des Informationspakets in das Eingangsregister 260 gelatcht. Während der Phase P1 des nächsten Übertragungszyklusses werden die Informationen, die in dem Eingangsregister 260 gespeichert sind, in das P1-Register 262 geladen, wobei gleichzeitig ein zweiter Abschnitt des Informationspakets (beispielsweise Daten und Datentypinformationen) in das Eingangsregister 260 geladen wird. Beide Informationsabschnitte werden daraufhin während der nachfolgenden P2-Taktphase zu der ersten Stufe des gepufferten Sicherungswegs 292 (d. h. zu den Registern B4 und B5) weitergeleitet. Die Informationen werden von dem P1-Register 262 und dem Eingangsregister 260 fortgesetzt in nachfolgende Register (d. h. gepufferte Sicherungsspeicherelemente) in dem gepufferten Sicherungsweg 292 (während der nachfolgenden P2-Taktphasen) übertragen, bis der vorgelagerte Prozessor als Antwort auf die Schnittstellenschaltung 226, die ihr abgehendes B_Rdy_Out-Signal deaktiviert, mit der Übertragung aufhört.
  • Wenn die Schnittstellenschaltung 226 wieder bereit ist, um Informationen zu empfangen und/oder zu senden, wird deren abgehendes B_Rdy_Out-Signal aktiviert, wobei der Prozeß zum Leeren der Register in dem gepufferten Sicherungsweg 292 beginnt. Während der Phase 1 (P1) des ersten Übertragungszyklusses, nachdem das abgehende B_Rdy_Out-Signal erneut aktiviert worden ist, werden die Informationen aus dem Register B4 über die Multiplexer 292A, 270 und 282 weitergeleitet und in das Ausgangsregister 300 gelatcht. Während der Phase 2 (P2) desselben Übertragungszyklusses werden Informationen aus dem Register B5 über die Multiplexer 292A, 270 und 282 weitergeleitet und in das Ausgangsregister 300 gelatcht.
  • Während der Phase 1 (P1) und der Phase 2 (P2) des zweiten Übertragungszyklusses werden die Informationen aus den Registern B4 bzw. B5, die (falls vorhanden) aus den Registern B2 und B3 verschoben worden sind, zu dem Ausgangsregister 300 weitergeleitet. Als nächstes werden während der Phase 1 (P1) des dritten Übertragungszyklusses die Informationen aus dem Register B4, die (falls vorhanden) während des ersten Übertragungszyklusses aus dem Register B0 in das Register B2 und während des zweiten Übertragungszyklusses aus dem Register B2 in das Register B4 verschoben worden sind, über die Multiplexer zu dem Ausgangsregister 300 weitergeleitet. Ferner liefert während der Phase 1 (P1) des dritten Übertragungszyklusses ein vorgelagertes Verarbeitungselement (beispielsweise das Verarbeitungselement 202) einen ersten Abschnitt eines Informationspakets an den Bus 250. Folglich wird während der Phase 2 (P2) des dritten Übertragungszyklusses der erste Abschnitt des Informationspakets aus dem vorgelagerten Verarbeitungselement in das Register 260 gelatcht, wobei gleichzeitig die Informationen aus dem Register B5, die (falls vorhanden) während des ersten Übertragungszyklusses aus dem Register B1 in das Register B3 und während des zweiten Übertragungszyklusses aus dem Register B3 in das Register B5 verschoben worden sind, in das Ausgangsregister 300 gelatcht werden, wodurch der gepufferte Sicherungsweg 292 geleert wird.
  • Schließlich kann während der Phase 1 (P1) des vierten Übertragungszyklusses der zweite Abschnitt des Informationspakets aus dem vorgelagerten Verarbeitungselement zu demselben Zeitpunkt in das Eingangsregister 260 gelatcht werden, an dem der erste Abschnitt des Informationspakets (der im vorhergehenden in das Eingangsregister 260 gelatcht wurde) direkt über den Durchgangsweg 261 in das Ausgangsregister 300 weitergeleitet werden kann. Da der gepufferte Sicherungsweg 292 eine Größe aufweist, um die maximale Informationsmenge aufzunehmen, die möglicherweise in demselben gesichert werden kann, gehen keine Informationen verloren, wenn ein Verarbeitungselement den Betrieb anhält, wobei ein sehr schnellen Kommunikationsdurchsatz beibehalten wird.
  • 7. Die gepufferten und ungepufferten Informationswege
  • Im folgenden wird weiter auf 6 Bezug genommen. Wie es im vorhergehenden erklärt wurde, werden der erste und zweite Abschnitt jedes eintreffenden Informationspakets (ebenso wie dessen zugeordnetes Typfeld) jeweils in das P1-Register 262 und das Eingangsregister 260 (d. h. ein Eingangsspeicherelement) gelatcht, bevor dieselben jeweils in das P2WD-Register 266 und das P1WD-Register 264 gelatcht und zu dem Kernprozessor 224 des Verarbeitungselements 222 weitergeleitet werden. Beide Abschnitte jedes Informationspakets, die in das P1WD- und P2WD-Register 264 und 266 gelatcht werden, werden abhängig von dem Inhalt des Typfelds des ersten Abschnitts des Pakets entweder in das gepufferte Schreib-FIFO (BW) 228 (d. h. das Nicht-Prioritäts-Schnittstellenausgangsspeicher element) oder das ungepufferte Schreib-FIFO (UW) 230 (d.h. das Prioritäts-Schnittstellenausgangsspeicherelement) eingegeben. Das heißt, das Typfeld des ersten Abschnitts des Pakets, d. h. der Abschnitt, der in dem P1-Register 262 gespeichert ist, wird überprüft, um zu bestimmen, ob das Paket gemäß den Auflistungen in Tabelle I als gepuffert oder ungepuffert identifiziert wird.
  • Wie es in Tabelle I gezeigt ist, sollte das Paket, falls das Bit <7> dieses Typfelds eine "1" ist, immer zu dem gepufferten Schreib-FIFO (BW) 228 übertragen werden, wobei es, falls das Bit <7> eine "0" ist, von dem Wert des Bits <3> des Typfelds abhängt, ob das Paket zu dem gepufferten Schreib-FIFO (BW) 228 oder dem ungepufferten Schreib-FIFO (UW) 230 übertragen wird. Falls das Bit <3> des Typfelds des ersten Abschnitts eines Pakets eine "1" ist, sind bei einem Ausführungsbeispiel die Informationen ungepuffert, wobei umgekehrt, falls das Bit <3> eine "0" ist, die Informationen gepuffert sind.
  • Gemäß einem Ausführungsbeispiel wird nicht der Inhalt des Typfelds des P1-Registers 262 überprüft, um zu bestimmen, ob dasselbe gepufferte oder ungepufferte Informationen enthält, sondern zwei separate Einzel-Bit-Register (beispielsweise die Register 316 und 318 in dem Steuerregisterblock 320) werden verwendet, um nachzuverfolgen, ob das P1-Register 262 momentan gepufferte oder ungepufferte Informationen enthält. Beispielsweise kann das Register 316 verwendet werden, um anzuzeigen, ob das P1-Register 262 gegenwärtig gepufferte Informationen enthält, wobei das Register 318 verwendet werden kann, um anzuzeigen, ob das P1-Register 262 gegenwärtig ungepufferte Informationen enthält. Der Nächste-Zustand-Inhalt jedes der Register 316 und 318 kann bestimmt werden, indem das Typfeld der Informationen, die in dem Eingangsregister 260 gespeichert sind, überprüft wird, so daß das P1-Register 262 Eingangsinformationen empfangen wird, wobei die Register 316 und 318 Eingangssignale empfangen werden, die dem Typ des Informationseingangssignals in das P1-Register 262 während derselben Taktphase entsprechen.
  • Das gepufferte Schreib-FIFO (BW) 228 und das ungepufferte Schreib-FIFO (UW) 230 sind detaillierter in 10 dargestellt. Wie es gezeigt ist, umfaßt bei einem Ausführungsbeispiel jedes der gepufferten Schreib- und ungepufferten Schreib-FIFOs (BW, UW) 228 und 230 acht Eintragungen, um jeden der zwei Abschnitte eines Informationspakets zu speichern. Das heißt, jedes der gepufferten Schreib- und ungepufferten Schreib-FIFOs (BW, UW) 228 und 230 umfaßt acht Eintragungen, um folgendes zu speichern: (1.) Phase-1-Informationen und Typdaten (P1_WrInfo und P1_WrType) aus dem P1WD-Register 264, und (2.) Phase-2-Informationen und Typdaten (P2_WrInfo und P2_WrType) aus dem P1WD-Register 266. Das FIFO 228 umfaßt ferner eine Ladesteuerschaltung 227 und eine Entladesteuerschaltung 229, wobei das ungepufferte Schreib-FIFO (UW) 230 ferner eine Ladesteuerschaltung 231 und eine Entladesteuerschaltung 233 umfaßt.
  • Im folgenden wird kurz auf 11 Bezug genommen. Es ist ein Zeitablaufdiagramm dargestellt, das die Beziehung zwischen dem eintreffenden Taktsignal In_CLK, dem Schreibtaktsignal Wr_CLK aus der Teile-durch-Zwei-Schaltung 295 (die in 6 gezeigt ist) und dem P1_WrInfo- und P2_WrInfo-Signal (d. h. die Informationen, die in das FIFO 228 oder 230 aus den Registern 264 und 266 geschrieben worden sind) zeigt. Diese Signale sind für einen Vergleich in demselben Zeitmaßstab (horizontale Achse) dargestellt. Die Anordnung eines Signals über einem anderen Signal gibt nicht an, daß ein Signal eine höhere Amplitude als die anderen Signale aufweist. Wie es in 10 gezeigt ist, empfängt jede der Ladesteuerschaltungen 227 und 231 das Wr_CLK-Signal als Takteingangssignal. Die Ladesteuerschaltung 227 empfängt ferner ein gepuffertes Informationsladesignal (B_WrInfoLd), das ein Ergebnis der oben erklärten Überprüfung der Typbits ist, um zu identifizieren, ob die Informationen gepuffert oder ungepuffert sind. Die Ladesteuerschaltung 227 liefert ein gepuffertes Schreibvollsignal (B_WrFull), das aktiviert ist, wenn das gepufferte Schreib-FIFO (BW) 228 bis auf vier oder weniger Eintragungen voll ist, und das deaktiviert ist, wenn das gepufferte Schreib-FIFO (BW) 228 fünf oder mehr Eintragungen aufweist, die gefüllt werden können. Entsprechend empfängt die Ladesteuerschaltung 231 ein ungepuffertes Informationsladesignal (U_WrInfoLd), das ferner ein Ergebnis der oben erklärten Überprüfung der Typbits ist, um zu identifizieren, ob die Informationen gepuffert oder ungepuffert sind. Die Ladesteuerschaltung 231 liefert ein ungepuffertes Schreibvollsignal (U_WrFull), das aktiviert ist, wenn das ungepufferte Schreib-FIFO (UW) 230 bis auf vier oder weniger Eintragungen voll ist, und das deaktiviert ist, wenn das ungepufferte Schreib- (UW) FIFO 230 fünf oder mehr Eintragungen aufweist, die gefüllt werden können.
  • Jede der Entladesteuerschaltungen 229 und 233 empfängt ferner ein jeweiliges Kerntaktsignal und ein Entladesignal von dem Kern (das ermöglicht, daß der Kern Informationen aus den FIFOs mit der Kerntaktrate entladen kann, wenn eines der Entladesignale aktiviert ist), und liefert ein jeweiliges Leer-Signal an den Kern (das dem Kern anzeigt, daß das FIFO gegenwärtig keine Informationen aufweist, die in demselben gespeichert sind). Folglich kann der Kern auf die P1- und P2-Informationen und Typdaten (P1_Info, P1_Type, P2_Info und P2_Type) entweder aus dem gepufferten Schreib- oder dem ungepufferten Schreib-FIFO (BW, UW) 228 oder 230 mit einer Rate zugreifen, die zu der Taktrate asynchron ist, mit der diese FIFOs die Informationen und Typdaten von der Schnittstellenschaltung 226 empfangen.
  • In den 12 und 13 sind die asynchronen gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR) 232 und 234 detaillierter dargestellt. 12 zeigt, wie die gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR) 232 und 234 arbeiten könnten, wenn das Verarbeitungselement 222 in einer Umleitungsbetriebsart konfiguriert ist, wobei 13 zeigt, wie die gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR) 232 und 234 arbeiten könnten, wenn das Verarbeitungsele ment nicht in der Umleitungsbetriebsart konfiguriert ist (wie z. B. die in 6 gezeigte Konfiguration). Als erstes wird auf 12 Bezug genommen. Wenn das Verarbeitungselement 222 in einer Umleitungsbetriebsart konfiguriert ist, empfängt eines der gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR) 232 und 234, das ausgewählt wird, beide Abschnitte eines Informationspakets (d. h. Phase-1-Informationen (P1_Info) und Typdaten (P1_Type) und Phase-2-Informationen (P2_Info) und Typdaten (P2_Type)) von dem Kern zusammen mit einem Kerntaktsignal und einem Ladesignal, und liefert an den Kern ein "Voll"-Signal, um dem Kern anzuzeigen, wann ein jeweiliges der FIFOs voll ist. Bei dem gezeigten Beispiel ist sowohl das gepufferte Lese- als auch ungepufferte Lese-FIFO (BR, UR) 232 und 234 acht Eintragungen tief, wobei jedoch die notwendige Tiefe der Lese-FIFOs durch die Operationen bestimmt wird, die von dem Kern durchgeführt werden sollen.
  • Wie es in 12 gezeigt ist, liefert das gepufferte Lese-FIFO (BR) 232 beide Abschnitte eines gepufferten Informationspakets (d. h. Phase-1-Ausgangsinformationen (P1_OutInfo) und Typdaten (P1_OutType) und Phase-2-Ausgangsinformationen (P2_OutInfo) und Typdaten (P2_OutType)) an die Schnittstellenschaltung 226. Insbesondere werden die Phase-1-Ausgangsinformationen P1_OutInfo und Typdaten P1_OutType an das P1_Out-Register 272 geliefert, wobei die Phase-2-Ausgangsinformationen P2_OutInfo und Typdaten P2_OutType an das P2_Out-Register 274 geliefert werden. Entsprechend liefert das ungepufferte Lese-FIFO (UR) 234 beide Abschnitte eines ungepufferten Informationspakets an die Schnittstellenschaltung 226. Das heißt, die ungepufferten Phase-1-Ausgangsinformationen (P1_U_OutInfo) und Typdaten (P1_U_OutType) werden aus dem ungepufferten Lese-FIFO (UR) 234 an das U_P1_Out-Register 276 geliefert, wobei die ungepufferten Phase-2-Ausgangsinformationen (P2_U_OutInfo) und Typdaten (P2_U_OutType) aus dem ungepufferten Lese-FIFO (UR) 234 an das U_P2_Out-Register 278 geliefert werden.
  • Im folgenden wird nun auf 13 Bezug genommen. Wenn das Verarbeitungselement 222 nicht in einer Umleitungsbetriebsart konfiguriert ist, empfängt eines der gepufferten Lese- und ungepufferten Lese-FIFOs (BR; UR) 232 und 234, das ausgewählt ist, von dem Kern Informationen zusammen mit Maskendaten, die im folgenden erklärt werden und den Informationen zugeordnet sind. Wenn die Umleitungsbetriebsart nicht konfiguriert ist, sind die Typdaten, die jedem Abschnitt eines Informationspakets zugeordnet sind, nicht relevant und werden ignoriert. Das gepufferte Lese-FIFO (BR) 232 liefert an seinem Ausgang entweder die zwei Abschnitte eines gepufferten Informationspakets (d. h. entweder die gepufferten Phase-1-Ausgangsinformationen (P1_OutInfo) oder die gepufferten Phase-2-Ausgangsinformationen (P2_OutInfo)), als auch die Maskendaten (OutMask) aus dem Kern an die Schnittstellenschaltung 226. Insbesondere werden entweder die gepufferten Phase-1-Ausgangsinformationen P1_OutInfo oder die gepufferten Phase-2-Ausgangsinformationen P2_OutInfo an das P1_Out-Register 272 oder das P2_Out-Register 274 geliefert, wobei die 32 Bits der gepufferten Maskendaten (OutMask) an das Maskenregister 284 geliefert werden. Entsprechend liefert das ungepufferte Lese-FIFO (UR) 234 jeden Abschnitt eines ungepufferten Informationspakets als auch die ungepufferten Maskendaten (OutMask) von dem Kern an die Schnittstellenschaltung 226. Insbesondere werden entweder die ungepufferten Phase-1-Ausgangsdaten (P1_U_OutInfo) oder die ungepufferten Phase-2-Ausgangsdaten (P2_U_OutInfo) entweder an das U_P1_Out-Register 276 oder das U-P2_Out-Register 278 geliefert, wobei die ungepufferten Maskendaten (OutMask) an das Maskenregister 284 geliefert werden. Gemäß einem Ausführungsbeispiel wird lediglich ein einziges Bit der ungepufferten Maskendaten verwendet.
  • Die gepufferten Maskendaten (OutMask), die zu dem Maskenregister 284 übertragen werden (wenn gepufferte Informationen gelesen werden), werden verwendet, um eine selektive Maskierung oder ein "Bit-Slicing" (Bit-Teilung) der gepufferten Informationen, die aus dem Kern ausgegeben werden, durchzu führen. Auf diese Art und Weise wählt die 32-Bit-Maske gepufferte Informationen auf einer Bit-für-Bit-Basis entweder von: (1.) den gepufferten Informationen, die aus dem Kern ausgegeben werden, oder (2.) entweder den gepufferten Informationen, die durch den Durchgangsweg 261 fließen, oder den gepufferten Informationen, die aus dem Sicherungsinformationsweg 290 ausgelesen werden, aus. Das einzige Bit der ungepufferten Maskendaten (OutMask), das zu dem Maskenregister 284 übertragen wird (wenn ungepufferte Informationen ausgelesen werden), wird verwendet, um ein gesamtes 32-Bit-Informationswort aus einer der zwei gerade aufgelisteten Quellen auszuwählen. Es sollte angemerkt werden, daß alternativ 32 Bits der ungepufferten Maskendaten verwendet werden können, um die ungepufferten Informationen aus dem Kern selektiv "Bit-für-Bit" zu maskieren.
  • Im folgenden wird kurz auf 14 Bezug genommen. Es ist ein Zeitablaufdiagramm vorgestellt, das die Beziehung zwischen dem abgehenden Taktsignal Out_CLK, dem Lesetaktsignal RD_CLK aus der Teile-durch-Zwei-Schaltung 297 (gezeigt in 6) und den gepufferten Ausgangsinformationen aus einem der FIFOs 232 und 234 darstellt. Die gepufferten Ausgangsinformationen, d. h. P1_OutInfo und P2_OutInfo, aus dem gepufferten Lese-FIFO (BR) 232 sind als Beispiel dargestellt und könnten ebenso die ungepufferten Ausgangsinformationen P1_U_OutInfo und P2_U_OutInfo darstellen. Diese Signale sind für einen Vergleich in demselben Zeitmaßstab (horizontale Achse) dargestellt. Die Anordnung eines Signals über einem anderen gibt nicht an, daß ein Signal eine größere Amplitude als die anderen Signale aufweist.
  • In den 12 und 13 umfaßt das gepufferte Lese-FIFO (BR) 232 die Entladesteuerschaltung 235 und die Ladesteuerschaltung 237, wobei das ungepufferte Lese-FIFO (UR) 234 die Entladesteuerschaltung 239 und die Ladesteuerschaltung 234 umfaßt. Die Informationen und Maskendaten werden während eines Übergangs des Kerntaktsignals in eines der FIFOs geladen, wenn das Ladesignal zu einer der Ladesteuerschaltungen 237 oder 241 aktiviert ist, und werden während eines Übergangs des Taktsignals RD_CLK aus einem der FIFOs entladen, wenn entweder das gepufferte oder ungepufferte Entladesignal (B_OutInfoUnld oder U_OutInfoUnld) zu einer der Entladesteuerschaltungen 235 und 239 aktiviert ist. Die Signale B_Out-DatVal und U_OutDatVal aus den Entladesteuerschaltungen 235 bzw. 239 geben an, daß gepufferte oder ungepufferte Informationen bereit sind, um in ein entsprechendes der Leseregister 272, 274, 276 und 278 getaktet zu werden.
  • Wie es im vorhergehenden angemerkt wurde, können durch Steuern der FIFOs 228, 230, 232 und 234 und des Sicherungsinformationswegs 290, derart, daß ungepufferte (d. h. Prioritäts-) Informationen immer Vorrang vor gepufferten (d. h. Nicht-Prioritäts-) Informationen haben, zwei unterschiedliche Informationstypen durch eine Pipeline entlang eines einzigen Busses durchgelassen werden, ohne daß es erforderlich ist, daß beliebige Nicht-Prioritäts-Informationen, die in der Pipeline vorhanden sind, aus der Pipeline geräumt oder abgelegt werden, bevor die Prioritätsinformationen gesendet werden können. Das heißt, beliebige Nicht-Prioritätsinformationen, die in der Pipeline vorhanden sind, wenn ein Prioritätsinformationspaket in die Schnittstelle eintritt, können in einem der Nicht-Prioritäts-Informationsspeicherelemente in einem der Nicht-Prioritäts-Informationswege (d. h. in dem gepufferten Lese-FIFO (BR) 232, dem gepufferten Schreib-FIFO (BW) 228 oder dem gepufferten Sicherungsweg 292) stationär gehalten werden, bis die Prioritätsinformationen durch die Schnittstelle hindurchlaufen, woraufhin die Nicht-Prioritätsinformationen wieder übertragen werden können. Durch gemeinsames Verwenden sowohl des eintreffenden als auch abgehenden Busses einer Schnittstellenschaltung (beispielsweise der Schnittstellenschaltung 226) für zwei eindeutige und unabhängige Wege mit Pipelinestruktur und nicht durch Bereitstellen reservierter Wege entweder für die Prioritäts- oder die Nicht-Prioritäts-Informationen, werden deutliche Einsparungen bezüglich der Hardware und der ASIC-Anschlußstiftanzahl gegenüber im Stand der Technik bekannten Systemen realisiert, die lediglich Buslösungen mit Pipelinestruktur bereitstellen, die keine gemeinsame Verwendung der Betriebsmittel beinhalten.

Claims (6)

  1. Busverbindungssystem mit folgenden Merkmalen: einer Mehrzahl von Schnittstelleneinheiten (202, 222, 242), die mittels einer Busstruktur in einem Ring gekoppelt sind, wobei eine jeder der Mehrzahl von Schnittstelleneinheiten dazu angepasst ist, um mit einem entsprechenden Prozessor (204, 224, 244) gekoppelt zu werden, um Kommunikationssignale, die von der Schnittstelleneinheit empfangen werden, an den Prozessor zu liefern, und um Kommunikationssignale, die von dem Prozessor geliefert werden, an die Schnittstelleneinheit zu liefern, wobei die Busstruktur eine Mehrzahl von einzelnen Bussen umfasst, wobei ein jeder der Mehrzahl von einzelnen Bussen zwischen einer jeweiligen in Datenstromrichtung vorderen Schnittstelleneinheit (202, 222, 242) und einer in Datenstromrichtung hinteren Schnittstelleneinheit (202, 222, 242) gekoppelt ist, um als Ausgangsbus für die jeweils in Datenstromrichtung vordere Schnittstelleneinheit und als Eingangsbus für die jeweilige in Datenstromrichtung hintere Schnittstelleneinheit zu wirken; wobei wenigstens eine der Schnittstelleneinheiten (202, 222, 242) konfiguriert werden kann, um entweder in einer normalen Betriebsart oder in einer Umleitungsbetriebsart zu arbeiten, wobei während der normalen Betriebsart Kommunikationssignale, die von der wenigstens einen Schnittstelleneinheit an dem Eingangsbus der wenigstens einen Schnittstelleneinheit empfangen werden, sowohl zu dem Prozessor geleitet werden, der mit der wenigstens einen Schnittstelleneinheit gekoppelt ist, als auch durch die wenigstens eine Schnittstelleneinheit hindurch zu dem Ausgangsdatenbus der wenigstens einen Schnittstelleneinheit geleitet werden, ohne dass sie durch den Prozessor gelangen, der mit der wenigstens einen Schnittstelleneinheit gekoppelt ist; und wobei in der Umleitungsbetriebsart sämtliche Kommunikationssignale, die von der wenigstens einen Schnittstelleneinheit an dem Eingangsbus der wenigstens einen Schnittstelleneinheit empfangen werden, zu dem mit der wenigstens einen Schnittstelleneinheit gekoppelten Prozessor weitergeleitet werden und wobei sämtliche Kommunikationssignale, die von der wenigstens einen Schnittstelleneinheit an dem Ausgangsbus der wenigstens einen Schnittstelleneinheit bereitgestellt werden, zu dem Ausgangsbus der wenigstens einen Schnittstelleneinheit durch den mit der wenigstens einen Schnittstelleneinheit gekoppelten Prozessor geliefert werden.
  2. Busverbindungssystem nach Anspruch 1, bei dem jeder der Mehrzahl der einzelnen Busse identisch zu den anderen der Mehrzahl der einzelnen Busse ist.
  3. Busverbindungssystem nach Anspruch 1 oder 2, bei dem jede der Mehrzahl von Schnittstelleneinheiten konfiguriert werden kann, um entweder in einer normalen Betriebsart oder in einer Umleitungsbetriebsart zu arbeiten.
  4. Busverbindungssystem nach Anspruch 3, bei dem wenigstens eine erste der Mehrzahl von Schnittstelleneinheiten in dem Ring konfiguriert ist, um in der Umleitungsbetriebsart zu arbeiten, und wenigstens eine zweite der Mehrzahl von Schnittstelleneinheiten konfiguriert ist, um in der normalen Betriebsart zu arbeiten.
  5. Busverbindungssystem nach Anspruch 3, bei dem wenigstens eine der Mehrzahl von Schnittstelleneinheiten konfiguriert ist, um in der Umleitungsbetriebsart zu arbeiten.
  6. Busverbindungssystem nach Anspruch 4, bei dem der Prozessor, der mit der ersten der Mehrzahl von Schnittstelleneinheiten gekoppelt ist, an einen Host-Prozessor zum Kommunizieren mit dem Host-Prozessor gekoppelt ist.
DE19861337A 1997-05-01 1998-04-09 Busverbindungssystem Expired - Fee Related DE19861337B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE1998116153 DE19816153B4 (de) 1997-05-01 1998-04-09 Busverbindungssystem

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/847,271 US5911056A (en) 1997-05-01 1997-05-01 High speed interconnect bus
US08/847,271 1997-05-01
DE1998116153 DE19816153B4 (de) 1997-05-01 1998-04-09 Busverbindungssystem

Publications (1)

Publication Number Publication Date
DE19861337B4 true DE19861337B4 (de) 2007-03-08

Family

ID=37735780

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19861337A Expired - Fee Related DE19861337B4 (de) 1997-05-01 1998-04-09 Busverbindungssystem

Country Status (1)

Country Link
DE (1) DE19861337B4 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4760571A (en) * 1984-07-25 1988-07-26 Siegfried Schwarz Ring network for communication between one chip processors
GB2226739A (en) * 1988-12-29 1990-07-04 Intel Corp Node controller for local area network
EP0685950A2 (de) * 1994-06-03 1995-12-06 Philips Patentverwaltung GmbH Lokales, nach dem asynchronen Transfermodus (ATM) arbeitendes Netzwerk

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4760571A (en) * 1984-07-25 1988-07-26 Siegfried Schwarz Ring network for communication between one chip processors
GB2226739A (en) * 1988-12-29 1990-07-04 Intel Corp Node controller for local area network
EP0685950A2 (de) * 1994-06-03 1995-12-06 Philips Patentverwaltung GmbH Lokales, nach dem asynchronen Transfermodus (ATM) arbeitendes Netzwerk

Similar Documents

Publication Publication Date Title
US5911056A (en) High speed interconnect bus
DE69725057T2 (de) Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger
DE112014000938B4 (de) Verfahren und Vorrichtung zur Stromeinsparung in einer Anzeige-Pipeline durch Herunterfahren von inaktiven Komponenten
DE3689394T2 (de) Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor.
DE4226052C2 (de) Drucksteuerungsverfahren und -gerät, die eine Vielzahl von Prozessoren verwenden
DE3587750T2 (de) Peripheriegerät für Bildspeicher.
DE4132833A1 (de) Hierarchischer schaltungsintegrierter cache-speicher
DE69908765T2 (de) Verfahren und vorrichtung zur steuerung des datenflusses zwischen miteinander durch einen speicher verbundenen geräten
DE69736611T2 (de) Reorganisation von Speicherreferenzen für Pixel in einer seitenorientierten Speicherarchitektur
DE10030148A1 (de) Brückenvorrichtung
DE102016201686A1 (de) Bildsignalprozessor und vorrichtungen, die diesen umfassen
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE112013005044T5 (de) Ausführen von eingehenden PCIE-Schreiboperationen in einen Speicher und Partnereinrichtungen per Dualcast
US5909562A (en) Backup FIFO in-line storage
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
WO2005091131A2 (de) Computersystem zur elektronischen datenverarbeitung
US7629982B1 (en) Optimized alpha blend for anti-aliased render
DE102013018135A1 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE102014119048A1 (de) Ausführung von Verarbeitungsvorgängen in einer SIMD-Verarbeitungseinheit
DE19861337B4 (de) Busverbindungssystem
DE19816153B4 (de) Busverbindungssystem
DE19782017B4 (de) Verfahren und Computersystem zur Durchführung einer Burst-Leseoperation eines Bus-Masters aus einem Systemspeicher
DE4114053A1 (de) Computersystem mit cachespeicher
DE112022000318T5 (de) Gemeinsam genutzter steuerbus für grafikprozessoren
EP0803798A1 (de) Rechner-Anzeigesystem mit effizienter Übertragung von graphischen Daten zu einem graphischen Untersystem unter Verwendung von einem maskierten Direktbildspeicherzugriff

Legal Events

Date Code Title Description
Q172 Divided out of (supplement):

Ref document number: 19816153

Country of ref document: DE

Kind code of ref document: P

8110 Request for examination paragraph 44
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

AC Divided out of

Ref document number: 19816153

Country of ref document: DE

Kind code of ref document: P

AC Divided out of

Ref document number: 19816153

Country of ref document: DE

Kind code of ref document: P

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20141101