DE19861337B4 - Busverbindungssystem - Google Patents
Busverbindungssystem Download PDFInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/42—Loop networks
- H04L12/437—Ring fault isolation or reconfiguration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40169—Flexible bus arrangements
- H04L12/40176—Flexible bus arrangements involving redundancy
- H04L12/40182—Flexible 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
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 - 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 - Aus der
US 4,760,571 A sowie aus derEP 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:
-
1 –3 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 in4 gezeigten Schnittstellenschaltungen; -
7 ein Zeitablaufdiagramm, das zeigt, wie Adressen- und Dateninformationen in verschiedene Register, die bei der in6 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 in6 dargestellt sind; -
11 ein Zeitablaufdiagramm, das die Beziehung zwischen verschiedenen Signalen zeigt, die verwendet werden, um die in10 gezeigten gepufferten und ungepufferten Schreib-FIFOs zu steuern; -
12 ein detaillierteres Blockdiagramm der gepufferten und ungepufferten Lese-FIFOs, die in6 gezeigt sind, wobei12 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 in6 gezeigt sind, wobei13 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 in12 und13 gezeigt sind. - 1. Systemüberblick
- Die
1 –3 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 Hostcomputer100 , ein vorgelagertes Teilsystem102 und ein Rahmenpufferteilsystem104 . Das vorgelagerte Teilsystem102 empfängt von dem Hostcomputer100 über einen Bus101 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 Bus122 , der Segmente122A ,122B und122C aufweist, an das Rahmenpufferteilsystem geliefert. Das Rahmenpufferteilsystem104 interpoliert die Aufbereitungsdaten, die von dem vorgelagerten Teilsystem102 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-Leitungen123 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 Teilsystem102 eine Hostschnittstelle106 und einen drei-dimensionalen Geometriebeschleuniger (3D-Geometriebeschleuniger)110 . Wie angemerkt empfängt die Hostschnittstelle106 die x-, y-, z-Koordinaten und Farbgrundelementdaten über den Bus101 von dem Hostcomputer100 . Diese Daten werden von der Hostschnittstelle106 über einen Bus108 an den Geometriebeschleuniger110 geliefert. Der Geometriebeschleuniger110 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 Geometriebeschleuniger110 über einen Bus112 an die Hostschnittstelle106 geliefert, die die Aufbereitungsdaten neu formatiert, eine Gleitkomma-zu-Festkomma-Umwandlung durchführt und diese Daten über das Bussystem122 an das Rahmenpufferteilsystem104 liefert. - Bei diesem Ausführungsbeispiel umfaßt das Rahmenpufferteilsystem
104 zwei Rahmenpuffersteuerungen114A und114B , die jeweils einen synchronen Graphikspeicher mit wahlfreiem Zugriff (SGRAM; SGRAM = Synchronous Graphics Random Access Memory)116A und116B , 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 Rahmenpuffersteuerungen114A und114B als auch die Hostschnittstelle106 sind mit dem Bussystem122 verbunden. Bei diesem Ausführungsbeispiel umfaßt der Bus122 drei Busse122A ,122B und122C , die zueinander identisch sind. Die Busarchitektur122 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 Rahmenpuffersteuerung114A und114B Aufbereitungsdaten von der Hostschnittstelle106 . 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 und114B erzeugt werden, die die RGB-Werte für jedes Pixel umfassen, können in den entsprechenden SGRAMs116A und116B gespeichert werden. Die Videodaten können aus den SGRAM-Chips in die Rahmenpuffersteuerungen ausgelesen werden, neu formatiert werden, so daß dieselben von dem RAMDAC120 abgewickelt werden können, und an das RAMDAC geliefert werden. Der RAMDAC120 kann die digitalen Farbdaten wiederum in analoge RGB-Farbsteuersignale für jedes Pixel umwandeln, die über RGB-Leitungen123 bereitgestellt werden, um eine Bildschirmanzeige (nicht gezeigt) zu steuern. - Die Hostschnittstelle
106 kann ferner über den Videobus124 direkt mit dem RAMDAC120 kommunizieren. Das System ist vorzugsweise ein System mit Pipeline-Struktur, derart, daß das Rahmenpufferteilsystem104 ein erstes Grundelement verarbeiten kann, während das vorgelagerte Teilsystem102 ein (zeitlich) nachfolgendes Grundelement verarbeitet. - Das Bussystem der vorliegenden Erfindung kann ferner bei dem in
2 gezeigten Graphiksystem verwendet werden. Das in2 gezeigte System entspricht dem in1 gezeigtem System, mit der Ausnahme, daß: (1.) zwei 3D-Geometriebeschleuniger110A und110B in dem vorgelagerten Teilsystem102 aufgenommen sind, (2.) ein Texturabbildungsteilsystem130 verwendet wird, und (3.) die Kapazität jedes SGRAM-Speichers116A und116B erhöht worden ist. Mit den zwei Geometriebeschleunigern110A und110B 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 Texturabbildungsschaltung132 und einen zugeordneten lokalen Cache-Speicher134 umfaßt, der eine begrenzte Menge von Texturdaten speichert. - Bei diesem Ausführungsbeispiel umfaßt der Bus
122 Abschnitte122A –122D . Die Texturabbildungsschaltung132 ist mit dem Bus122 zwischen der Hostschnittstelle106 und der Rahmenpuffersteuerung114A verbunden. Während des Betriebs empfängt die Texturabbildungsschaltung132 , wie beide Rahmenpuffersteuerschaltungen114A und114B , Grundelementdaten auf dem Bus122A . 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 Texturabbildungsschaltung132 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-Speicher134 gespeichert werden. Falls dies durchgeführt wird, werden die Texturdaten aus dem Cache-Speicher134 ausgelesen. Falls die benötigten Texturdaten zu diesem Zeitpunkt nicht in dem Cache-Speicher134 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 Rahmenpuffersteuerung114A und114B 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 Rahmenpufferteilsystem104 und das Texturabbildungsteilsystem130 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 Texturabbildungsteilsystem130 und das Rahmenpufferteilsystem104 Grundelemente verarbeiten, die vorher von dem vorgelagerten Teilsystem102 bereitgestellt wurden, fährt das vorgelagerte Teilsystem102 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 von3 umfaßt ein vorgelagertes Teilsystem102 drei 3D-Geometriebeschleuniger110A ,110B und110C ; ein Rahmenpufferteilsystem104 umfaßt vier Rahmenpuffersteuerungen114A –114D , wobei jede jeweils einen zugeordneten SGRAM-Speicher116A –116D aufweist; und ein Texturabbildungsteilsystem130 umfaßt zwei Texturabbildungsschaltungen132 und133 , die jeweils einen zugeordneten Cache-Speicher134 und135 aufweisen. - Über Bussegmente
122A –G der Busarchitektur122 der vorliegenden Erfindung sind eine Hostschnittstelle106 , jede der Texturabbildungsschaltungen132 und133 und jede der Rahmenpuffersteuerungen114A –114D verbunden. Ein Texel-Bus137 verbindet die Texturabbildungsschaltung133 mit den Rahmenpuffersteuerungen114C und114D . Der Betrieb entspricht dem, der bezugnehmend auf2 beschrieben wurde. - 2. Das Busverbindungssystem
- Bezugnehmend nun auf
4 ist ein Blockdiagramm eines Busverbindungssystems200 gemäß der vorliegenden Erfindung gezeigt. Das Busverbindungssystem, das verwendet werden kann, um mehrere Graphikchips (z. B. Rahmenpuffersteuerungen) zu verbinden, umfaßt mehrere Verarbeitungselemente202 ,222 und242 . Das Verarbeitungselement202 ist über einen PCI-Bus201 (PCI = Peripheral Component Interconnect = Peripheriekomponentenverbindung) schnittstellenmäßig mit einem externen Hostgerät (nicht gezeigt), z. B. mit einem PC, verbunden. Jedes der Verarbeitungselemente202 ,222 und242 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 den1 –3 dargestellt. In1 ist beispielsweise eine Hostschnittstelle106 über den Bus101 mit dem Hostcomputer100 verbunden, wobei die Hostschnittstelle106 in einem Ring mit den Rahmenpuffer steuerungen114A und114B verbunden ist. Folglich könnte bei diesem Beispiel das Verarbeitungselement202 (4 ) der Hostschnittstelle106 (1 ) entsprechen, der PCI-Bus201 (4 ) könnte dem Bus101 (1 ) entsprechen, und die Verarbeitungselemente222 und242 (4 ) könnten jeweils den Rahmenpuffersteuerungen114A und114B (1 ) entsprechen. - Wie es in
4 gezeigt ist, umfaßt jedes der Verarbeitungselemente202 ,222 und242 einen Kernprozessor204 ,224 und244 , bzw. eine Schnittstellenschaltung206 ,226 und246 . Die Kernprozessoren jedes Verarbeitungselements können übereinstimmen oder sich unterscheiden, während die Schnittstellenschaltungen206 ,226 und246 (vorzugsweise) identisch sind. Zwischen die Kernprozessoren204 ,224 und244 und deren zugeordneten Schnittstellen206 ,226 und246 sind mehrere asynchrone FIFO-Puffer (FIFOs; FIFO = first-in-first-out)208 ,210 ,212 ,214 ,228 ,230 ,232 ,234 ,248 ,250 ,252 und254 gekoppelt. Diese asynchronen FIFOs liefern gepufferte (d. h. Nicht-Prioritäts-) Informationswege und ungepufferte (d. h. Prioritäts-) Informationswege sowohl von den Schnittstellenschaltungen206 ,226 bzw.246 zu den Kernprozessoren204 ,224 bzw.244 als auch von den Kernprozessoren204 ,224 bzw.244 zu den Schnittstellenschaltungen206 ,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 Verarbeitungselements222 ist ein gepuffertes Schreib-FIFO (BW-FIFO; BW = buffered write)228 (d. h. ein Nicht-Prioritäts-Schnittstellenausgabespeicherelement) zwischen eine Schnittstellenschaltung226 und einen Kernprozessor224 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 Schnittstellenschaltung226 und den Kernprozessor224 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 Kernprozessor224 und die Schnittstellenschaltung226 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 Kernprozessor224 und die Schnittstellenschaltung226 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-FIFOs228 ,230 ,232 und234 wird im folgenden detaillierter dargestellt und beschrieben. - Die Verarbeitungselemente
202 ,222 und242 sind mittels eines unidirektionalen Busses, der die Bussegmente250 ,252 und254 umfaßt, miteinander verbunden. Die Bussegmente250 ,252 und254 des Verbindungsnetzwerks200 weisen einen identischen Aufbau und eine identische Breite auf. Wie es dargestellt ist, verbinden die Bussegmente250 ,252 und254 die Verarbeitungselemente202 ,222 und242 in einem Ringformat, wobei das Bussegment250 die Verarbeitungselemente202 und222 verbindet, das Bussegment252 die Verarbeitungselemente222 und242 verbindet, und das Bussegment254 die Verarbeitungselemente242 und202 verbindet. Auf diese Art und Weise werden Informationen von dem Verarbeitungselement202 zu dem Verarbeitungselement222 weitergeleitet, Informationen von dem Verarbeitungselement222 zu dem Verarbeitungselement242 weitergeleitet, und Informationen von dem Verarbeitungselement242 zu dem Verarbeitungselement202 zurückgebracht. - Durch die Verwendung der in
4 dargestellten Anordnung können Informationen zwischen dem externen Hostgerät und dem Verarbeitungselement202 (über den PCI-Bus201 ) ausgetauscht werden, wobei Informationen unidirektional von jedem der Verarbeitungselemente202 ,222 und242 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 Bussegmente250 ,252 und254 darin, Informationspakete zwischen den Verarbeitungselementen202 ,222 und242 zu übertragen. Gemäß einem Ausführungsbeispiel der Erfindung umfaßt ein vollständiges Informationspaket zwei unterschiedliche Abschnitte, wobei jeder Abschnitt32 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 und254 weist 41 Busleitungen auf, die für die Übertragung von Informationen und Typdaten reserviert sind. Unter Verwendung beispielsweise des Bussegments250 ist die Busleitung250F , die 32 unterschiedliche Busleitungen umfaßt, für die unidirektionale Übertragung von 32 Informationsbits zwischen der Schnittstellenschaltung206 und der Schnittstellenschaltung226 reserviert, wobei die Busleitung250E , die 9 unterschiedliche Busleitungen umfaßt, für eine unidirektionale Übertragung von 9 Typdatenbits zwischen der Schnittstellenschaltung206 und der Schnittstellenschaltung226 reserviert ist. Folglich sind während eines einzigen Taktzyklusses die Busleitungen250E und250F zusammen in der Lage, 9 Datentypbits und 32 Informationsbits zwischen den Verarbeitungselementen202 und222 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 Bussegmente250 ,252 und254 gemeinsame Signale zwischen den Verarbeitungselementen bereit, das dieselben verbindet. Wieder unter Verwendung des Bussegments250 umfassen beispielsweise diese Signale ein Taktsignal (CLK; CLK = Clock), das über die Busleitung250A übertragen wird, ein gepuffertes Informationsbereitschaftssignal (B_Rdy; B_Rdy = buffered ready), das über die Busleitung250B übertragen wird, und ein ungepuffertes Informationsbereitschaftssignal (U_Rdy; U_Rdy = unbuffered ready), das über die Busleitung250C übertragen wird, und ein Besetztsignal (busy = besetzt bzw. beschäftigt), das über die Busleitung250D übertragen wird, Typfeldsignale (Typ[8:0]), die über die Busleitungen250E übertragen werden, und Informationsfeldsignale (Info[31:0]), die über die Busleitungen250F ü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 tungselement202 ) zu dem nächsten Verarbeitungselement (wie z. B. dem Verarbeitungselement222 ) 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 Verarbeitungselement222 ) an ein erstes Verarbeitungselement (wie z. B. das Verarbeitungselement202 ) 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 Busverbindungssystem200 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 und254 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 Kernprozessor224 ), eine Reihe von Schreib- und Lese-FIFOs (beispielsweise die FIFOs228 ,230 ,232 und234 ) und eine Schnittstellenschaltung (beispielsweise die Schnittstellenschaltung226 ), 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 von4 der Kernprozessor204 des Verarbeitungselements202 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 von4 ist das Verarbeitungselement202 das Hauptverarbeitungselement in dem Ringnetzwerk200 , wobei dasselbe folglich, wie es im vorhergehenden erwähnt wurde, der Hostschnittstelle106 in den1 –3 entsprechen könnte. Wie es im folgenden detaillierter beschrieben wird, verarbeitet das Verarbeitungselement202 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 und242 stellt sich hinsichtlich des Busverbindungsnetzwerks200 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 Busleitungen250F ) ü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 Leitungen250F ) ü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 Schnittstellenschaltung226 ) empfangen. Alle Pakete, die von einem Verarbeitungselement empfangen werden, werden für eine Abwicklung zu dem Kernprozessor dieses Verarbeitungselements (beispielsweise zu dem Kernprozessor224 des Verarbeitungselements222 ) 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 Schnittstellenschaltung226 ), weiterleiten, so daß die Schnittstellenschaltung die Informationen zu den nachgelagerten Verarbeitungselementen (beispielsweise zu dem Verarbeitungselement242 ) 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 Hauptverarbeitungselement202 ) 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 Verarbeitungselemente222 und242 übertragen werden, gewinnt jede der Schnittstellenschaltungen226 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 Verarbeitungselemente226 und246 hervorgerufen wird. Folglich werden alle Pakete, die von einem Verarbeitungselement (nicht von dem Hauptverarbeitungselement202 ) 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-FIFOs208 und210 ) empfängt alle Adressen-/Dateninformationen von dem Ring und leitet die Informationen über den Kernprozessor204 um, wobei eine Ausgangshälfte (einschließlich der Lese-FIFOs212 und214 ) neue Adressen-/Dateninformationen von dem Kernprozessor204 empfängt und diese Informationen zu dem nächsten Verarbeitungselement in dem Ring weiterleitet. Folglich werden bei dem in4 gezeigten Beispiel alle Informationen, die von der Schnittstellenschaltung206 (in dem Hauptverarbeitungselement202 ) empfangen werden, in das Kernelement204 eingegeben, wobei die Informationen niemals direkt von dem Eingang der Schnittstelle206 zu dem Ausgang derselben weitergeleitet werden, wie es auch jeweils bei den Schnittstellenschaltungen226 und246 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 Schnittstellenschaltung206 permanent gesetzt, während die Umleitungszustandshardwareflags der Schnittstellenschaltungen226 und246 optional gesetzt sein können. - Da das Hauptverarbeitungselement
202 (in4 ) 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 Hauptverarbeitungselements202 , 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 Verarbeitungselement202 , 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 Kernprozessor204 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 und242 ) die Weiterleitung von Informationen von einem Verarbeitungselement zu einem weiteren in dem Ring weitgehend durch die Schnittstellenschaltung des Verarbeitungselements gesteuert (beispielsweise durch die Schnittstellenschaltungen226 und246 ). Beispielsweise unter Verwendung des Nicht-Hauptverarbeitungselements222 empfängt der Kernprozessor224 beispielsweise Informationen über asynchrone gepufferte Schreib- und ungepufferte Schreib-FIFOs (BW, UW)228 und230 und leitet Informationen, die aus dem Kernprozessor224 gelesen werden, über asynchrone gepufferte Lese- und ungepufferte Lese-FIFOs (BR, UR)232 und234 zu dem Ausgang der Schnittstellenschaltung226 weiter. Die FIFOs228 ,230 ,232 und234 werden als "asynchron" bezeichnet, da die gepufferten Schreib- und ungepufferten Schreib-FIFOs (BW, UW)228 und230 von der Schnittstellenschaltung226 Informationen empfangen, und die gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR)232 und234 unter Verwendung eines ersten Taktsignals (das von der Schnittstellenschaltung226 bereitgestellt wird) Informationen an die Schnittstellenschaltung226 übertragen, während die gepufferten Schreib- und ungepufferten Schreib- FIFOs (BW, UW)228 und230 Informationen an den Kernprozessor224 übertragen, und die gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR)232 und234 unter Verwendung eines zweiten Taktsignals (das von dem Kernprozessor224 bereitgestellt wird), das eine unterschiedliche Frequenz als das erste Taktsignal aufweisen kann, Informationen von dem Kernprozessor224 emp fangen. Da die Schnittstellenschaltung226 und der Kernprozessor224 mit unterschiedlichen Frequenzen arbeiten können, erleichtert die Verwendung von asynchronen FIFOs228 ,230 ,232 und234 folglich die Übertragung von Informationen zwischen den zwei Vorrichtungen. - Beispielsweise noch unter Verwendung des Verarbeitungselements
222 ist bei einem Ausführungsbeispiel jedes der FIFOs228 ,230 ,232 und234 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 Kernprozessor224 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 und230 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 und230 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 auf5 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 in5 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 Schnittstellenschaltung226 gezeigt. Da bei einem Ausführungsbeispiel die Schnittstellenschaltungen aller Verarbeitungselemente in dem Ring identisch sind, sollte es offensichtlich sein, daß die folgende Beschreibung der Schnittstellenschaltung226 sowohl für die Schnittstellenschaltung206 als auch246 Anwendung findet. Wie es im vorhergehenden angemerkt wurde, kann jedoch die Schnittstellenschaltung206 im allgemeinen lediglich in einer "Umleitungsbetriebsart" und einer "Hauptbetriebsart" arbeiten, wodurch sich deren Betrieb ein wenig von dem der Schnittstellenschaltungen226 und246 unterscheiden wird. - Wie es in
6 gezeigt ist, werden Typdaten und gemultiplexte Informatonspakete gleichzeitig an den Eingang der Schnittstellenschaltung226 geliefert und in ein Eingangsregister260 (d. h. ein Eingangsspeicherelement) gelatcht. Das Eingangsregister260 kann in die Eingangs-Pads der Schnittstellenschaltung226 aufgenommen oder alternativ extern an der Schnittstellenschaltung angeordnet sein. Wie es im vorhergehenden angemerkt wurde, ist die Logik in der Schnittstellenschaltung226 unter Verwendung eines Zwei-Phasen-Taktsystems getaktet. Das eintreffende Taktsignal In_CLK wird an den Eingang einer Teile-durch-Zwei-Schaltung295 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 Multiplexer299 empfängt ferner ein Quellentaktsignal Src_CLK von dem Kernprozessor224 als zweites Eingangssignal. Wenn die Schnittstellenschaltung224 konfiguriert ist, um in einer Hauptbetriebsart zu arbeiten, wird der Multiplexer299 das Quellentaktsignal Src_CLK als sein Ausgangssignal auswählen, und wird das Quellentaktsignal Src_CLK als das Ausgangstaktsignal Out_CLK an den Ausgang der Schnittstellenschaltung226 liefern. Umgekehrt, wenn die Schnittstellenschaltung nicht konfiguriert ist, um in der Hauptbetriebsart zu arbeiten, wird der Multiplexer299 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-Schaltung297 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 Schnittstellenschaltung226 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 Schnittstellenschaltung226 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 und297 erzeugt werden, systemweit durch Hin- und Herschalten des Zustands eines einzigen Informationsbits auf einer der Informationsbusleitungen, z. B. Bit[31] der Busleitungen250F (gezeigt in4 ), und durch Synchronisieren der Ausgangssignale der Teile-durch-Zwei-Schaltungen295 und297 mit denselben synchronisiert werden. - Durch die Verwendung eines Durchgangswegs
261 , der (über Multiplexer270 und282 ) zwischen dem Eingangsregister260 und einem Ausgangsregister300 (d. h. ein Ausgangsspeicherelement) angeordnet ist, ist die Schnittstellenschaltung226 in der Lage, Informationspakete (und Typdaten) über deren Schaltungsanordnung in das Ausgangsregister300 für eine Übertragung zu dem nächsten Verarbeitungselement schnell weiterzuleiten. Der Durchgangsweg261 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 Schnittstellenschaltung226 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 Sicherungsinformationsweg290 (der im folgenden beschrieben wird) gespeichert. Diese gesicherten Informationen müssen in den Informationsspeicherelementen des Sicherungsinformationswegs290 zumindest so lange gespeichert werden, bis die Schnittstellenschaltung226 damit aufhört, Informationen von einem vorgelagerten Verarbeitungselement (beispielsweise dem Verarbeitungselement202 in4 ) zu empfangen. Das vorgelagerte Verarbeitungselement wird damit aufhören, diese Informationen zu übertragen, indem das vorgelagerte Verarbeitungselement auf die Schnittstellenschaltung226 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:
- 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:
- Bezugnehmend auf die
4 und6 (und wieder unter Verwendung beispielsweise des Verarbeitungselements222 ) wird, wie es in der Tabelle II gezeigt ist, der erste Abschnitt jedes Informationspakets von der Schnittstellenschaltung226 während der Phase P1 (auf den Informationsleitungen250F ) empfangen, wobei der zweite Abschnitt jedes Pakets von der Schnittstellenschaltung226 während der Phase P2 (auch auf den Informationsleitungen250F ) empfangen wird. Wie es in6 gezeigt ist, umfaßt die Schnittstellenschaltung226 ein Eingangsregister260 , ein P1-Register262 , ein P1WD-Register264 und ein P2WD-Register266 . Das Eingangsregister260 empfängt die eintreffenden Informationspakete (und deren zugeordnete Typdaten), wobei das P1-Register262 sein Eingangssignal aus dem Ausgang des Eingangsregisters260 empfängt. Zusätzlich empfängt das P1WD-Register264 sein Eingangssignal aus dem Ausgang des P1-Registers262 , wobei das P2WD-Register sein Eingangssignal aus dem Ausgang des Eingangsregisters260 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 Schnittstellenschaltung226 darstellt. Insbesondere zeigt dieses Zeitablaufdiagramm: (1.) den Zustand des eintreffenden Taktsignals (In_CLK), das auf der Busleitung250A empfangen wird, (2.) die Informationen (Info[31:0]), die auf den Busleitungen250F empfangen werden, (3) das Schreibtaktsignal (Wr_CLK), das aus der Teile-durch-Zwei-Schaltung295 ausgegeben wird, und (4.) den Inhalt des Eingangsregisters260 (IN_Reg; IN_Reg = input register), des P1-Registers262 (P1_Reg) und der P1WD- und P2WD-Register264 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 Busleitungen250F 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 Eingangsregister260 der Schnittstellenschaltung226 . 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 Eingangsregister260 . Dadurch bleibt das Eingangsregister260 und die Schnittstellenschaltung226 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 Schnittstellenschaltung226 (aus den Busleitungen250E ) auf eine identische Art und Weise empfangen. Folglich werden Informations- und Typ daten von der Schnittstellenschaltung226 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-Register262 bereitgestellt. Wenn die Informationen (und zugeordneten Typfelder) von der Schnittstellenschaltung226 empfangen werden, wie es im vorhergehenden beschrieben wurde, wird das P1-Register262 von einem Taktsignal mit halber Frequenz Wr_CLK gesteuert, um lediglich den ersten Abschnitt jedes Informationspakets zu latchen. Ferner werden die P1-/P2WD-Register264 /266 (zum Weiterleiten von Informationen an den Kernprozessor224 ) 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-Register262 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-Registers262 in das P1WD-Register264 gelatcht und der Inhalt des Eingangsregisters260 in das P2WD-Register266 gelatcht wird. Folglich speichern die P1-/P2WD-Register264 und266 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 Kernprozessor224 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 Eingangsregister260 während jeder fallenden Flanke des eintreffenden Taktsignals In_CLK (wie es im vorhergehenden angemerkt wurde) empfangen, wobei die Informationen entweder aus: (1.) dem Eingangsregister260 (über den Durchgangsweg261 ), (2.) dem Sicherungsinformationsweg290 oder (3.) den gepufferten Lese- oder ungepufferten Lese- FIFOs (BR, UR)232 oder234 in das Ausgangsregister300 (über einen oder mehrere der Multiplexer270 ,282 und280 ) 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 Eingangsregister260 und das Ausgangsregister300 , 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 Eingangsregister260 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 Register260 getaktet wurde). Entsprechend wird der erste Abschnitt jedes Informationspakets, das von der Schnittstellenschaltung226 ü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 Ausgangsregister300 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 Register300 getaktet wurde) in das Ausgangsregister300 getaktet wird. - Wenn das Verarbeitungselement, das dem Verarbeitungselement
222 nachgelagert ist (beispielsweise das Verarbeitungselement242 ), anzeigt, daß es in der Lage ist, Informationen von dem Verarbeitungselement222 zu empfangen, und das Verarbeitungselement222 selbst nicht verzögert ist (beispielsweise, wenn dasselbe auf Lese-Informationen aus seinem Kernprozessor wartet), wird das Ausgangsregister300 Informationen direkt aus dem Eingangsregister260 (über den Durchgangsweg261 ) empfangen, so daß ein Abschnitt eines Informationspakets (und dessen zugeordnete Typdaten) während jeder fallenden Flanke des Eingangstaktsignals In_CLK über die Schnittstellenschaltung226 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 Verarbeitungselement242 ) anzeigt, daß dasselbe momentan nicht in der Lage ist, Informationen von dem Verarbeitungselement222 zu empfangen, oder falls das Verarbeitungselement222 selbst verzögert ist (beispielsweise, wenn dasselbe auf Leseinformationen von seinem Kern wartet), werden die Informationsspei cherelemente in dem Sicherungsinformationsweg290 (der im folgenden beschrieben wird) verwendet, um Informationen zu speichern, die in der Schnittstellenschaltung226 gesichert wurden, während das Verarbeitungselement (beispielsweise das Verarbeitungselement202 ), das dem Verarbeitungselement222 nachgelagert ist, noch Daten sendet, d. h. bis das vorgelagerte Verarbeitungselement202 auf eine Anzeige von dem Verarbeitungselement222 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 Schnittstellenschaltung226 in der Lage ist, dem vorgelagerten Verarbeitungselement (z. B. dem Verarbeitungselement202 ) zu signalisieren, damit aufzuhören, Informationen zu senden. - Wie es in
6 gezeigt ist, umfaßt der Sicherungsinformationsweg290 einen gepufferten (d. h. einen Nicht-Prioritäts-) Informationssicherungsweg292 und einen ungepufferten (d. h. einen Prioritäts-) Informationssicherungsweg294 . Der gepufferte Informationssicherungsweg292 umfaßt wiederum gepufferte (d. h. Nicht-Prioritäts-) Sicherungswegspeicherelemente B0, B1, B2, B3, B4 und B5, wobei der ungepufferte Informationssicherungsweg294 ungepufferte (d. h. Prioritäts-) Sicherungsspeicherelemente U0, U1, U2, U3, U4 und U5 umfaßt. Ferner sind in dem Sicherungsinformationsweg290 Multiplexer292A und292B 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 Multiplexers270 zu liefern, mit dem die Ausgänge der Multiplexer292A und292B 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-Logikschaltung326 und eine U_Rdy-Logikschaltung328 gezeigt. Das B_Rdy-Register322 empfängt ein eintreffendes gepuffertes Bereitschaftssignal (B_Rdy_In) von einem nachgelagerten Verarbeitungselement (über die B_Rdy- Logikschaltung326 ), und liefert ein abgehendes gepuffertes Bereitschaftssignal (B_Rdy_Out) an ein vorgelagertes Verarbeitungselement. Entsprechend empfängt das U_Rdy-Register324 ein eintreffendes ungepuffertes Bereitschaftssignal (U_Rdy_In) von einem nachgelagerten Verarbeitungselement (über die U_Rdy-Logikschaltung328 ), und liefert ein abgehendes ungepuffertes Bereitschaftssignal (U_Rdy_Out) an ein vorgelagertes Verarbeitungselement. Die B_Rdy- und U_Rdy-Logikschaltungen326 und328 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 Verarbeitungselement222 momentan nicht in der Lage ist, Informationen von einem vorgelagerten Verarbeitungselement zu empfangen. Jedes der B_Rdy- und U_Rdy-Register322 und324 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 Busleitung250C ) zu dem vorgelagerten Element deaktiviert werden. Die B_Rdy_Out- und U_Rdy_Out-Signale geben die jeweilige Fähigkeit des Verarbeitungselements222 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 in6 umfaßt drei Pufferungsstufen in jedem seiner gepufferten und ungepufferten Informationswege292 und294 , um die maximale Informationsmenge aufzunehmen, die beispielsweise zwischen dem Zeitpunkt gesichert werden könnten, an dem die Schnittstellenschaltung226 zuerst ein eintreffendes deaktiviertes B_Rdy_In-Signal von der nachgelagerten Schnittstellenschaltung246 empfängt, und dem Zeitpunkt, an dem die Schnittstellenschaltung226 tatsächlich damit aufhört, Informationen von der vorgelagerten Schnittstellenschaltung206 zu empfangen (nachdem die Schnittstellenschaltung226 deren abgehendes gepuffertes Bereitschaftssignal B_Rdy_Out zu der vorgelagerten Schnittstellenschaltung206 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 Schnittstellenschaltung226 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 Sicherungsinformationsweg290 aufgenommen sind, speichert, die während der Zeitdauer zwischen dem Zeitpunkt, wenn die Schnittstellenschaltung226 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 Schnittstellenschaltung226 ein deaktiviertes B_Rdy_In-Si gnal von der Schnittstellenschaltung246 empfängt, genau nachdem eine Adresse (die einer Nicht-Prioritätsoperation zugeordnet ist) in das Ausgangsregister300 getaktet worden ist, wird die Schnittstellenschaltung226 folglich damit weitermachen, den Datenabschnitt des Informationspakets (der der vorher gesendeten Adresse zugeordnet ist) zu takten, bevor die Informationsübertragung zu dem nachgelagerten Verarbeitungselement246 angehalten wird. - Es wird angemerkt, daß die Informationen, die zu dem Sicherungsweg
290 übertragen werden, ferner in das P1WD-Register264 und das P2WD-Register266 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 Kern224 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 Sicherungsweg292 übertragen werden, werden die Informationen (und Typdaten) aus dem P1-Re gister262 zusätzlich immer in eines der Register B0, B2 oder B4 geschrieben, wobei die Informationen aus dem Eingangsregister260 immer in eines der Register B1, B3 oder B5 geschrieben werden. Obwohl die Informationsübertragungswege von dem P1-Register262 zu den gepufferten Sicherungsspeicherelementen B2 und B4, und von dem Eingangsregister260 zu den gepufferten Sicherungsspeicherelementen B3 und B5 nicht explizit in6 dargestellt sind, sollte es offensichtlich sein, daß diese Informationsübertragungswege trotzdem vorhanden sind, und daß die Eingänge in den gepufferten Sicherungsweg292 Eingänge zu jedem Paar von gepufferten Sicherungsspeicherelementen (d. h. B0 und B1, B2 und B3, und B4 und B5) in dem gepufferten Sicherungsweg292 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 Sicherungsweg292 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-Register262 , 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 Register302 ,304 ,306 ,308 ,310 ,312 und314 , die in dem Steuerregisterblock320 aufgenommen sind, verwendet, um nachzuverfolgen, welcher Informationstyp in welchen Positionen in dem Sicherungsinformationsweg290 vorhanden ist, als auch um nachzuverfolgen, welcher Informationstyp in dem P1-Register262 vorhanden ist. Beispielsweise: (1.) das Einzelregister302 kann verwendet werden, um anzuzeigen, ob die gepufferten Sicherungsregister B4 und B5 voll sind, (2.) das Einzelregister304 kann verwendet werden, um anzuzeigen, ob die gepufferten Sicherungsregister B2 und B3 voll sind, (3.) das Einzelregister306 kann verwendet werden, um anzuzeigen, ob die gepufferten Sicherungsregister B0 und B1 voll sind, (4.) das Einzelregister308 kann verwendet werden, um anzuzeigen, ob das gepufferte Sicherungsregister B0 Informationen eines sonstigen Typs, die in demselben gespeichert sind, aufweist, (5.) das Einzelregister310 kann verwendet werden, um anzuzeigen, ob das gepufferte Sicherungsregister B2 Informationen des sonstigen Typs, die in demselben gespeichert sind, aufweist, (6.) das Einzelregister312 kann verwendet werden, um anzuzeigen, ob das gepufferte Sicherungsregister B4 Informationen eines sonstigen Typs, die in demselben gespeichert sind, aufweist, und (7.) das Einzelregister314 kann verwendet werden, um anzuzeigen, ob das P1-Register262 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-Register262 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 Steuerregisterblock320 (d. h. in inhaltsidentifizierenden Speicherelementen) gespeichert, um den Inhalt der ungepufferten (d. h. Prioritäts-) Sicherungsspeicherelemente, beispielsweise der Register, die in dem ungepufferten Sicherungsweg294 enthalten sind, zu identifizieren. Zusätzlich werden die "typidentifizierenden" Einzel-Bitregister (nicht gezeigt) in dem Steuerregisterblock320 verwendet, um zu identifizieren, ob das P1-Register262 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-Logikschaltung326 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 Schnittstellenschaltung226 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-Logikschaltung326 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 Kern224 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 Verarbeitungselement222 empfangen wird, bildet eine Anzeige, daß das Verarbeitungselement222 (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 Verarbeitungselement222 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 Sicherungsinformationswegs290 gespeichert, wobei das Verarbeitungselement224 sein abgehendes B_Rdy_Out-Signal auf der Busleitung250B deaktiviert, um dem vorgelagerten Verarbeitungselement zu signalisieren, damit aufzuhören, Informationen zu senden. Wenn die Daten von dem Kernprozessor224 zurückgesendet werden, breiten sich dieselben durch das gepufferte Lese-FIFO (BR)232 aus und werden in dem P2_OUT-Register274 gespeichert. Sobald die wiedergewonnenen Daten in dem P2_OUT-Register274 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 Multiplexer292A ,270 und282 weitergeleitet und während der ansteigenden Flanke des nächsten P2_CLK-Signals ausgegeben wird. Die wiedergewonnenen Daten werden daraufhin (nach dem Durchlaufen der Multiplexer280 und282 ) 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 Verarbeitungselement222 deaktiviert wird, nachdem dasselbe beispielsweise ein Kernlesepaket empfangen hat, und dem Zeitpunkt, wenn das Verarbeitungselement222 tatsächlich damit aufhört, Informationen von einem vorgelagerten Verarbeitungselement (beispielsweise dem Verarbeitungselement202 ) 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 Busleitungen250F 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 Verarbeitungselement222 . - Bezugnehmend nun auf
9 ist eine entsprechende Verzögerung zwischen dem Zeitpunkt, wenn das B_Rdy_Out-Signal durch das Verarbeitungselement222 erneut aktiviert wird, und dem Zeitpunkt, wenn das Verarbeitungselement222 wieder gültige Informationen von einem vorgelagerten Verarbeitungselement (beispielsweise dem Verarbeitungselement202 ) 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 Sicherungsinformationsweg290 aus dem Ausgangsregister300 weitergeleitet werden, bevor neue Informationen von dem Eingangsregister260 der Schnittstellenschaltung226 empfangen werden. - Im folgenden wird wieder auf
6 Bezug genommen. Nun wird der Betrieb der Schnittstellenschaltung226 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 Eingangsregisters260 während der Phase P1 eines Übertragungszyklusses empfangen. Während der Phase P2 desselben Übertragungszyklusses wird der erste Abschnitt des Informationspakets in das Eingangsregister260 gelatcht. Während der Phase P1 des nächsten Übertragungszyklusses werden die Informationen, die in dem Eingangsregister260 gespeichert sind, in das P1-Register262 geladen, wobei gleichzeitig ein zweiter Abschnitt des Informationspakets (beispielsweise Daten und Datentypinformationen) in das Eingangsregister260 geladen wird. Beide Informationsabschnitte werden daraufhin während der nachfolgenden P2-Taktphase zu der ersten Stufe des gepufferten Sicherungswegs292 (d. h. zu den Registern B4 und B5) weitergeleitet. Die Informationen werden von dem P1-Register262 und dem Eingangsregister260 fortgesetzt in nachfolgende Register (d. h. gepufferte Sicherungsspeicherelemente) in dem gepufferten Sicherungsweg292 (während der nachfolgenden P2-Taktphasen) übertragen, bis der vorgelagerte Prozessor als Antwort auf die Schnittstellenschaltung226 , 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 Sicherungsweg292 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 Multiplexer292A ,270 und282 weitergeleitet und in das Ausgangsregister300 gelatcht. Während der Phase 2 (P2) desselben Übertragungszyklusses werden Informationen aus dem Register B5 über die Multiplexer292A ,270 und282 weitergeleitet und in das Ausgangsregister300 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 Ausgangsregister300 weitergeleitet. Ferner liefert während der Phase 1 (P1) des dritten Übertragungszyklusses ein vorgelagertes Verarbeitungselement (beispielsweise das Verarbeitungselement202 ) einen ersten Abschnitt eines Informationspakets an den Bus250 . Folglich wird während der Phase 2 (P2) des dritten Übertragungszyklusses der erste Abschnitt des Informationspakets aus dem vorgelagerten Verarbeitungselement in das Register260 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 Ausgangsregister300 gelatcht werden, wodurch der gepufferte Sicherungsweg292 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 Eingangsregister260 gelatcht wurde) direkt über den Durchgangsweg261 in das Ausgangsregister300 weitergeleitet werden kann. Da der gepufferte Sicherungsweg292 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-Register262 und das Eingangsregister260 (d. h. ein Eingangsspeicherelement) gelatcht, bevor dieselben jeweils in das P2WD-Register266 und das P1WD-Register264 gelatcht und zu dem Kernprozessor224 des Verarbeitungselements222 weitergeleitet werden. Beide Abschnitte jedes Informationspakets, die in das P1WD- und P2WD-Register264 und266 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-Register262 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 Register316 und318 in dem Steuerregisterblock320 ) werden verwendet, um nachzuverfolgen, ob das P1-Register262 momentan gepufferte oder ungepufferte Informationen enthält. Beispielsweise kann das Register316 verwendet werden, um anzuzeigen, ob das P1-Register262 gegenwärtig gepufferte Informationen enthält, wobei das Register318 verwendet werden kann, um anzuzeigen, ob das P1-Register262 gegenwärtig ungepufferte Informationen enthält. Der Nächste-Zustand-Inhalt jedes der Register316 und318 kann bestimmt werden, indem das Typfeld der Informationen, die in dem Eingangsregister260 gespeichert sind, überprüft wird, so daß das P1-Register262 Eingangsinformationen empfangen wird, wobei die Register316 und318 Eingangssignale empfangen werden, die dem Typ des Informationseingangssignals in das P1-Register262 während derselben Taktphase entsprechen. - Das gepufferte Schreib-FIFO (BW)
228 und das ungepufferte Schreib-FIFO (UW)230 sind detaillierter in10 dargestellt. Wie es gezeigt ist, umfaßt bei einem Ausführungsbeispiel jedes der gepufferten Schreib- und ungepufferten Schreib-FIFOs (BW, UW)228 und230 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 und230 umfaßt acht Eintragungen, um folgendes zu speichern: (1.) Phase-1-Informationen und Typdaten (P1_WrInfo und P1_WrType) aus dem P1WD-Register264 , und (2.) Phase-2-Informationen und Typdaten (P2_WrInfo und P2_WrType) aus dem P1WD-Register266 . Das FIFO228 umfaßt ferner eine Ladesteuerschaltung227 und eine Entladesteuerschaltung229 , wobei das ungepufferte Schreib-FIFO (UW)230 ferner eine Ladesteuerschaltung231 und eine Entladesteuerschaltung233 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-Schaltung295 (die in6 gezeigt ist) und dem P1_WrInfo- und P2_WrInfo-Signal (d. h. die Informationen, die in das FIFO228 oder230 aus den Registern264 und266 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 in10 gezeigt ist, empfängt jede der Ladesteuerschaltungen227 und231 das Wr_CLK-Signal als Takteingangssignal. Die Ladesteuerschaltung227 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 Ladesteuerschaltung227 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 Ladesteuerschaltung231 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 Ladesteuerschaltung231 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) FIFO230 fünf oder mehr Eintragungen aufweist, die gefüllt werden können. - Jede der Entladesteuerschaltungen
229 und233 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 oder230 mit einer Rate zugreifen, die zu der Taktrate asynchron ist, mit der diese FIFOs die Informationen und Typdaten von der Schnittstellenschaltung226 empfangen. - In den
12 und13 sind die asynchronen gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR)232 und234 detaillierter dargestellt.12 zeigt, wie die gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR)232 und234 arbeiten könnten, wenn das Verarbeitungselement222 in einer Umleitungsbetriebsart konfiguriert ist, wobei13 zeigt, wie die gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR)232 und234 arbeiten könnten, wenn das Verarbeitungsele ment nicht in der Umleitungsbetriebsart konfiguriert ist (wie z. B. die in6 gezeigte Konfiguration). Als erstes wird auf12 Bezug genommen. Wenn das Verarbeitungselement222 in einer Umleitungsbetriebsart konfiguriert ist, empfängt eines der gepufferten Lese- und ungepufferten Lese-FIFOs (BR, UR)232 und234 , 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 und234 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 Schnittstellenschaltung226 . Insbesondere werden die Phase-1-Ausgangsinformationen P1_OutInfo und Typdaten P1_OutType an das P1_Out-Register272 geliefert, wobei die Phase-2-Ausgangsinformationen P2_OutInfo und Typdaten P2_OutType an das P2_Out-Register274 geliefert werden. Entsprechend liefert das ungepufferte Lese-FIFO (UR)234 beide Abschnitte eines ungepufferten Informationspakets an die Schnittstellenschaltung226 . 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-Register276 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-Register278 geliefert werden. - Im folgenden wird nun auf
13 Bezug genommen. Wenn das Verarbeitungselement222 nicht in einer Umleitungsbetriebsart konfiguriert ist, empfängt eines der gepufferten Lese- und ungepufferten Lese-FIFOs (BR; UR)232 und234 , 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 Schnittstellenschaltung226 . Insbesondere werden entweder die gepufferten Phase-1-Ausgangsinformationen P1_OutInfo oder die gepufferten Phase-2-Ausgangsinformationen P2_OutInfo an das P1_Out-Register272 oder das P2_Out-Register274 geliefert, wobei die 32 Bits der gepufferten Maskendaten (OutMask) an das Maskenregister284 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 Schnittstellenschaltung226 . 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-Register276 oder das U-P2_Out-Register278 geliefert, wobei die ungepufferten Maskendaten (OutMask) an das Maskenregister284 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 Durchgangsweg261 fließen, oder den gepufferten Informationen, die aus dem Sicherungsinformationsweg290 ausgelesen werden, aus. Das einzige Bit der ungepufferten Maskendaten (OutMask), das zu dem Maskenregister284 ü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-Schaltung297 (gezeigt in6 ) und den gepufferten Ausgangsinformationen aus einem der FIFOs232 und234 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 und13 umfaßt das gepufferte Lese-FIFO (BR)232 die Entladesteuerschaltung235 und die Ladesteuerschaltung237 , wobei das ungepufferte Lese-FIFO (UR)234 die Entladesteuerschaltung239 und die Ladesteuerschaltung234 umfaßt. Die Informationen und Maskendaten werden während eines Übergangs des Kerntaktsignals in eines der FIFOs geladen, wenn das Ladesignal zu einer der Ladesteuerschaltungen237 oder241 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 Entladesteuerschaltungen235 und239 aktiviert ist. Die Signale B_Out-DatVal und U_OutDatVal aus den Entladesteuerschaltungen235 bzw.239 geben an, daß gepufferte oder ungepufferte Informationen bereit sind, um in ein entsprechendes der Leseregister272 ,274 ,276 und278 getaktet zu werden. - Wie es im vorhergehenden angemerkt wurde, können durch Steuern der FIFOs
228 ,230 ,232 und234 und des Sicherungsinformationswegs290 , 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 Sicherungsweg292 ) 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 Schnittstellenschaltung226 ) 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)
- 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. - Busverbindungssystem nach Anspruch 1, bei dem jeder der Mehrzahl der einzelnen Busse identisch zu den anderen der Mehrzahl der einzelnen Busse ist.
- 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.
- 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.
- Busverbindungssystem nach Anspruch 3, bei dem wenigstens eine der Mehrzahl von Schnittstelleneinheiten konfiguriert ist, um in der Umleitungsbetriebsart zu arbeiten.
- 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.
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)
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 |
-
1998
- 1998-04-09 DE DE19861337A patent/DE19861337B4/de not_active Expired - Fee Related
Patent Citations (3)
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 |