-
Die
hier besprochene Vorrichtung betrifft allgemein das Gebiet der Datenkommunikation
und insbesondere Verfahren und Anordnungen zum Übermitteln von Daten über eine
Hochgeschwindigkeitsschnittstelle zwischen IC-Chips.
-
Der
fortdauernde Bedarf an komplexeren Schaltkreisen hat beachtliche
Leistungen hervorgebracht, die durch die Herstellung extrem hochintegrierter
Schaltkreise auf kleinen Siliziumscheibenflächen realisiert worden sind.
Diese komplexen Schaltkreise werden oft als funktionsdefinierte
Blöcke
oder physikalisch definierte Chips entwickelt, die auf der Grundlage
einer Abfolge von Daten arbeiten und diese Daten anschließend zur
Weiterverarbeitung weiterleiten. Diese Kommunikation von solchen
physikalisch definierten Chips aus kann in kleinen oder in größeren Datenmengen
zwischen einzelnen diskreten Schaltkreisen, zwischen integrierten
Schaltkreisen ("ICs"), innerhalb desselben
Chips, zwischen ICs, die sich auf verschiedenen Chips befinden,
und zwischen räumlich
weiter auseinanderliegenden Kommunikationsschaltkreisanordnungen
und -systemen erfolgen. Unabhängig
von der Konfiguration erfordert die Kommunikation in der Regel genau
gesteuerte Schnittstellen, um zu gewährleisten, dass die Datenintegrität gewahrt
bleibt, und dass die Chipsetdesigns praktische Beschränkungen
hinsichtlich des Implementierungsraumes und der verfügbaren Betriebsleistung
berücksichtigen.
-
Mit
der zunehmenden Komplexität
von Schaltkreisen ist ein entsprechender Bedarf an einer Erhöhung der
Geschwindigkeit einhergegangen, mit der Daten zwischen den Schaltkreisblöcken und
zwischen IC-Chips übermittelt
werden. Viele dieser Hochgeschwindigkeitskommunikationsanwendungen
lassen sich mittels paralleler Datenverbindungsübertragung implementieren,
wobei mehrere Datenbits gleichzeitig über parallele Kommunikationswege gesendet
werden. Ein solches Verfahren der "parallelen Busleitung" ist ein allgemein
anerkannter Lösungsweg
zum Erreichen von Datenübertragungen mit
hohen Datenraten. Ein Beispiel für
eine solche Anwendung findet sich in der Schrift "ECHELON: Parallel
I/O Interface to the Neuron Chip",
im Internet abzurufen unter http://www.echelon.com/supportldocumentation/bulletin/005-0021-01.pdf
in der am 15.05.2003 vorgefundenen Fassung, wo eine bidirektionale
Parallelbusschnittstelle offenbart ist, die mit einen Token-basierten
Quittungsaustauschprotokoll für
ihre Datenkommunikation arbeitet. Ein weiteres Beispiel findet sich
um US-Patent
US 5729573 , wo
eine Kommunikationsarchitektur zwischen einem Datenkommunikationsgerät, d. h.
einem Computer, und einem Datenendgerät, d. h. einem Modem, offenbart
ist, die unter Verwendung eines Parallelports des Computers über eine
parallele Verbindung miteinander verbunden sind, über die
Daten entsprechend einem Quittungsaustausch-basierten Protokoll übermittelt
werden, das die Übermittlung
von Datenpaketen und Steuerungspaketen enthält.
-
Ein
typisches System könnte
eine Anzahl von Modulen (zum Beispiel einen oder mehrere zusammenwirkende
Chips) enthalten, die mit einer parallelen Datenkommunikationsleitung
verbunden sind und über
eine parallele Datenkommunikationsleitung kommunizieren, zum Beispiel
ein Prozessorchip, der über
ein Kabel mit einem Peripheriegerät, einem Hauptplatinenschaltkreis,
einer internen Busstruktur auf einem Chip, einer Interchip-Schnittstelle,
einer sonstigen Verbindung oder Kombinationen solcher Kommunikationsmedien
kommuniziert. Ein Sendemodul sendet Daten über einen Bus synchron mit
einem Takt in dem Sendemodul. Auf diese Weise bringen die Übergänge über die
parallelen Signalleitungen die Schaltkreise des Sendemoduls in eine
synchrone Beziehung miteinander und/oder mit dem Takt in dem Sendemodul.
Am anderen Ende der parallelen Datenverbindung werden die Daten
zusammen mit einem Taktsignal empfangen. Der empfangene Takt wird
in der Regel von dem Takt in dem Sendemodul abgeleitet oder ist
mit dem Takt in dem Sendemodul synchron. Die Rate, mit der die Daten über die
parallelen Signalleitungen weitergegeben werden, wird mitunter die
(parallele) "Busrate" genannt.
-
Das
Implementieren elektronischer Bauelemente unter Verwendung mehrerer
Schaltkreismodule, einschließlich
diskreter IC Chips, ist aus einer Vielzahl von Gründen sinnvoll.
Dementsprechend gestattet das Verbessern der Hardware und der zugehörigen Übertragungsprotokolle,
die zur Durchführung einer
Datenkommunikation über
parallele Busse verwendet werden, praktikablere und schnellere parallele
Busleitungsanwendungen, was wiederum direkt zu einer Befriedigung
der Nachfrage nach Hochgeschwindigkeitsschaltkreisen bei gleichzeitiger
Wahrung der Datenintegrität
führen
kann. Verschiedene Aspekte der vorliegenden Erfindung widmen sich
den oben angesprochenen Schwächen
und stellen darüber
hinaus Kommunikationsverfahren und -anordnungen bereit, die sich
auch für
andere Anwendungen eignen.
-
Die
Erfindung ist in den Ansprüchen
1 und 10 definiert.
-
Die
vorliegende Erfindung betrifft ein Verfahren und einen Schaltkreis
zum Übertragen
von Daten zwischen zwei Modulen (Funktionsblöcken), die durch einen parallelen
Datenkommunikationspfad miteinander verbunden sind. Die vorliegende
Erfindung ist in einer Anzahl von Implementierungen und Anwendungen
exemplifiziert, von denen einige im Weiteren in kurzer Form dargestellt
werden.
-
Gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung wird eine Hochgeschwindigkeitskommunikation über einen
parallelen Kommunikationskanal zwischen einem Ursprungs-Ende und
einem Ziel-Ende bereitgestellt. Das Protokoll beinhaltet das regelmäßige Senden von
Daten von dem Ursprungs-Ende zum Ziel-Ende, einschließlich des
Sendens von Leerdaten von dem Ursprungs-Ende, wenn das Ziel-Ende
belegt ist, und während
Zeiträumen,
wenn keine Befehle oder Daten oder Statusinformationen anstehen.
Wenn das Ziel-Ende nicht belegt ist, so werden Daten von dem Ursprungs-Ende zu dem Ziel-Ende
gesendet durch: sequenzielles Senden von Lese- oder Schreibbefehlen
und, gemäß einem
Schreibprotokoll, von anstehenden Schreibdaten; und andernfalls
Senden von Leerpaketen. Wenn das Ursprungs-Ende nicht belegt ist,
so werden Daten von dem Ziel-Ende zu dem Ursprungs-Ende gesendet
durch: sequenzielles Senden von anstehenden Schreib-Ende-Statusinformationen;
sequenzielles Senden von anstehenden Lesedaten und Lesestatusinformationen
gemäß einem Leseprotokoll
während
Zeiträumen,
wenn keine Schreib-Ende-Statusinformationen anstehen.
-
Die
obige Kurzdarstellung soll nicht jede veranschaulichte Ausführungsform
oder jede Implementierung der vorliegenden Erfindung beschreiben.
Die Figuren und die detaillierte Beschreibung, die folgen, exemplifizieren
diese Ausführungsformen
eingehender.
-
Die
Erfindung lässt
sich anhand des Studiums der folgenden detaillierten Beschreibung
verschiedener Ausführungsformen
der Erfindung in Verbindung mit den begleitenden Zeichnungen besser verstehen.
In den Zeichnungen ist Folgendes zu sehen:
-
1 ist
ein Blockschaubild, das eine Hochgeschwindigkeits-Interchip-Datenkommunikationsschnittstelle
mit einem Kommunikationsprotokoll gemäß einer beispielhaften Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
2 ist ein Zustandsschaubild, das ein Schreibprotokoll
gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
3 ist ein Zustandsschaubild, das ein Leseprotokoll
gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
4 ist
ein Zustandsschaubild, das ein Tunnelausgangs-Empfangs/Tunneleingangs-Sende-Protokoll
gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
5 ist
ein Zustandsschaubild, das ein Tunnelausgangs-Sende/Tunneleingangs-Empfangs-Protokoll
gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
6A ist
ein Zeitablaufschaubild, das eine Datenpaketflusssteuerung gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
6B ist
ein Zeitablaufschaubild, das eine Datenpaketflusssteuerung, die
Leerzeichen enthält, gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
Obgleich
sich die Erfindung für
verschiedene Modifikationen und alternative Formen anbietet, sind konkrete
Merkmale der Erfindung beispielhaft in den Zeichnungen gezeigt und
werden detailliert beschrieben. Es versteht sich jedoch, dass nicht
die Absicht besteht, die Erfindung auf die konkreten beschriebenen
Ausführungsformen
zu beschränken.
Im Gegenteil: Es besteht die Absicht, sämtliche Modifikationen, Äquivalente
und Alternativen zu erfassen, die in den Geltungsbereich der Erfindung
gemäß Definition
in den angehängten
Ansprüchen
fallen.
-
Es
wird davon ausgegangen, dass die vorliegende Erfindung auf Verfahren
und Anordnungen zum Übertragen
von Daten zwischen zwei Modulen (Funktionsblöcken) angewendet werden kann,
die durch einen parallelen Datenkommunikationspfad miteinander verbunden
sind. Es wurde festgestellt, dass sich die Erfindung besonders zur
Verwendung in Verbindung mit Hochgeschwindigkeitsdatenübertragungsanwendungen
eignet, die eine Wahrung der Datenintegrität erfordern oder aus der Wahrung
der Datenintegrität
einen Nutzen ziehen. Zu Beispielen für solche Anwendungen gehören unter
anderem SSTL (Stub Series Transceiver Logic), RSL (Rambus Signaling
Logic)-Schnittstellen, eng verwandte Anwendungen wie beispielsweise
solche, wo der parallele Datenkommunikationspfad die beiden Module auf
einem einzelnen Chip miteinander verbindet, und außerhalb
der Platine stattfindende Hochgeschwindigkeitskommunikation zwischen
Chips, die auf derselben Leiterplatte unmittelbar nebeneinander
liegen.
-
Weitere
beispielhafte Anwendungen sind in Verbindung mit den parallelen
Hochgeschwindigkeitskommunikationsimplementierungen beschrieben,
die in den oben angesprochenen Patentschriften offenbart sind. Obgleich
die vorliegende Erfindung nicht unbedingt auf solche Vorrichtungen
beschränkt
ist, gewinnt man ein Verständnis
der verschiedenen Aspekte der Erfindung am besten durch eine Besprechung
verschiedener Beispiele anhand dieser Anwendung.
-
1 veranschaulicht
eine beispielhafte Ausführungsform
einer parallelen Datenkommunikationsanordnung 110 gemäß der vorliegenden
Erfindung. Die Anordnung 100 enthält einen Prozessor-IC-Chip 120 und
einen peripheren IC-Chip 130, die über einen Hochgeschwindigkeits-Interchip-Datenkommunikationskanal
miteinander verbunden sind, beispielsweise eine Tunnelschnittstelle 110.
Der Prozessor 120 enthält
einen DRAM-Schaltkreis 125. Der
Tunnel 110 fungiert als ein Zwischenziel 156 und Zwischeninitiator 146,
wodurch ein Initiator 160 mit einem Ziel kommunizieren
kann, beispielsweise aufwärts
mit einem Hauptsystemspeicher kommunizieren kann, der sich auf einem
räumlich
abgesetzten Chip 125 befindet. Der Tunnel 110 enthält elektrische Datenpfade
und ist dafür
geeignet, Datenübertragungen
gemäß verschiedenen
Zeitablaufsteuerungs-, Codierungs- und Protokollverfahren zu implementieren.
Der Tunnel unterstützt
Streaming-Daten
mit hoher Bandbreite und ist als eine Punkt-zu-Punkt-Verbindung
konfiguriert. Ein Verbinden von mehr als zwei Bauelementen miteinander
erfordert ein Verketten von Tunnelverbindungen, was mehr als eine
Tunnelschnittstelle je Bauelement verlangt.
-
Der
Tunnel 110 in dem peripheren Chip 130 ist als
ein Ziel 156 für
weitere interne Bauelemente über
den internen Bus 170 verbunden, wodurch der Tunnel als
ein Zwischeninitiator in dem Tunnel für den peripheren Chip 130 fungieren
kann. Der Tunnel ist dafür
geeignet, die Funktion eines Zwischeninitiators 146 innerhalb
des Prozessor-Chips 120 auszuführen, wobei der DRAM 125 und
insbesondere die DRAM-Steuerung 128 das Ziel des Tunnels
bildet. Der Tunnel ist dafür
geeignet, für
den Initiator 160 in dem peripheren Chip 130 transparent
zu arbeiten und für
den peripheren Initiator 160 so zu erscheinen, als sei
er über
den lokalen Bus 170 mit der Zielschnittstelle in der DRAM-Steuerung 128 verbunden. Ein
(nicht gezeigter) Multiplexer und ein (nicht gezeigter) Busverwalter
werden erforderlichenfalls für die
Initiatorauswahl verwendet, wo der Tunnel ein Ziel unter mehrerer
Initiatoren ist. Verschiedene Datencodierungs- und -decodierungsverarbeitungsschaltkreise
werden optional mit der Tunnelkonfiguration verbunden oder in die
Tunnelkonfiguration integriert.
-
Der
Tunnel 110 hat ein Tunneleingangs-Ende 140 am
Prozessor-Chip 120 und ein Tunnelausgangs-Ende 150 am
Peripherie-Chip 130. Das Tunneleingangs-Ende 140 enthält eine
Sende-Seite 142 und eine Empfangs-Seite 144. Das
Tunnelausgangs-Ende 150 enthält eine Sende-Seite 152 und eine
Empfangs-Seite 154. Das Tunnelausgangs-Ende 150 am
peripheren Chip 130 dient dem Übertragen von Daten von (nicht
gezeigten) Streaming-Daten-Masters
in dem peripheren Chip, der mit dem Bus 170 verbunden ist,
zu dem Einheits-DRAM 125, der mit dem Prozessorkern verbunden
ist. Es können
zusätzliche
Initiatoren mit dem Tunnel über
den Bus 170 verbunden werden. Bei einer alternativen Implementierung
wird ein Tunnel dafür
verwendet, viele zusätzliche
Hochgeschwindigkeitsbandbreitenanforderungen zu unterstützen, wo
zum Beispiel zwei separate Prozessor-Chips eine einzelne DRAM-Steuerung gemeinsam
benutzen. Der Tunnel transportiert Anforderungen zum Lesen und Schreiben
von Daten von einem Ziel 156 in dem Tunnelausgangs-Ende 150 zu
einem Zwischeninitiator 146 in dem Tunneleingangs-Ende 140.
-
Der
Tunnel 110 enthält
zwei voneinander vollkommen unabhängige Kanäle, nämlich einen ersten Kanal 112 und
einen zweiten Kanal 114. Jeder Kanal überträgt in eine einzige Richtung,
wie durch die Pfeile angedeutet, die jeweils einen Kanal in 1 darstellen.
Jeder Kanal sendet konstant paketierte "Informationen" in der gezeigten Richtung, auch wenn
es sich bei den "Informationen" mitunter um Leerpakete
handelt. Die jeweiligen Kanäle
senden keine Irrformationen in eine Richtung, die der gezeigten
Richtung entgegengesetzt ist. Darum ist das Festlegen einer Priorität für einen
Kanal zwischen den beiden Enden des Kanals nicht erforderlich (zum Beispiel
hat das Sende-Ende immer "Priorität").
-
Bei
einer beispielhaften Implementierung ist der Tunnel 110 dafür geeignet,
Daten in 32-Bit-Werten zu senden (ein "32-Bit-Tunnel"). Bei einer anderen beispielhaften
Implementierung enthält
der Tunnel 110 eine Erweiterung und ist dafür geeignet, 64-Bit-Werte (einen "64-Bit-Tunnel") für bandbreitenkritische
Anwendungen zu senden. In der Regel werden die Daten für eine Übertragung
durch den Tunnel 110 paketiert. Gemäß einer konkreteren Implementierung
ist der Tunnel 110 dafür
geeignet, 32-Bit-Datennutzinformationen zu senden, die zu einem 36-Bit-Datenpaket
paketiert sind, wodurch das 36-Bit-Paket zum Beispiel von einem
Kennzeichner-Paket unterschieden werden kann. Kennzeichner-Pakete werden weiter
unten erläutert.
Der Tunnel 110 ist dafür
konfiguriert, das 36-Bit-Datenpaket
nach der Codierung des Paketes unter Verwendung von 48 echten Datenleitungen
zu senden. Der Tunnel 110 ist dafür geeignet, ein Kommunikationsprotokoll
zum Steuern des Datenflusses in dem parallelen Kommunikationskanal
zwischen dem Prozessor und dem peripheren Baustein zu verwenden.
Das Tunnelprotokoll enthält
ein Schreibproto koll und ein Leseprotokoll.
-
2A und 2B sind
Zustandsschaubilder, die ein Schreibprotokoll gemäß einem
Aspekt der vorliegenden Erfindung veranschaulichen. Die Zustände der
Zustandsschaubilder dieser Anmeldung werden im vorliegenden Text
anhand der Art der Informationen bezeichnet, die in diesem konkreten
Zustand gemäß dem Protokoll
der vorliegenden Erfindung übermittelt
werden. Es werden Schreibtransaktionen verwendet, um Daten von einem
Initiator zu einem Ziel zu übermitteln.
Byte-Spuren zum Schreiben werden anhand des letzten Abschnitts eines
Schreibbefehls oder eines optionalen gesendeten Schreib-Kennzeichner-Paketes
identifiziert.
-
Wenden
wir uns nun 2A zu. Eine Schreibtransaktion
beginnt immer damit, dass ein Befehlspaket 210 durch den
Tunnel geschickt wird. Für
einen 32-Bit-Tunnel
werden Schreibbefehlsinformationen zu einem Schreibbefehlspaket 212 gepackt,
und Adresseninformationen werden zu einem separaten Adresspaket 215 gepackt.
Das Adresspaket wird im Anschluss an das Schreibbefehlspaket übermittelt,
wie durch den Zustandspfeil 214 angedeutet. Ein 64-Bit-Tunnel
sendet Schreibbefehle und Adresseninformationen zusammen als ein
einzelnes Paket 210.
-
Auf
die Übermittlung
der Befehls- und Adresspakete folgt optional ein Schreib-Kennzeichner-Paket 220,
wie durch den Zustandspfeil 216 angedeutet. Das Schreib-Kennzeichner-Paket
enthält optional
Schreibbefehlsinformationen und wird in außergewöhnlichen Fällen verwendet, wo die Felder des
Schreibbefehlspaketes nicht alle erforderlichen Optionen mitteilen.
Wenn keine zusätzlichen Schreibbefehlsinformationen
benötigt
werden, beispielsweise wenn eine Steuerung von Byte-Aktivierungen
nicht erforderlich ist, so wird das Schreib-Kennzeichner-Paket vorzugsweise
nicht gesendet. Die Verwendung eines Schreib-Kennzeichner-Paketes
mit jeder Schreibdatenübertragung
ist weder effizient noch erforderlich.
-
Für einen
typischen Mehrdatenelement-Schreibvorgang wird ein Schreibdatenpaket 230 im
Anschluss an Adresseninformationen übermittelt, wie durch den Zustandspfeil 218 angedeutet. Als
ein allgemeines Szenario wird, wo Schreibbefehlsinformationen über die
gesamte Datenübertragung hinweg
konstant bleiben (zum Beispiel dieselbe Maske), ein Burst aus Schreibdatenpaketen 230 der
Reihe nach durch den Tunnel übermittelt,
wie durch den Zustandspfeil 232 angedeutet, bis ein einziges Schreibdatenpaket übrig bleibt.
Das letzte Schreibdatenpaket wird als ein letztes Schreibpaket 240 übermittelt.
Das letzte Schreibpaket wird einmal für jede Schreibtransaktion als
die letzte Datenübertragung
gesendet. Das letzte Schreibpaket, das letzte Element der Schreibdaten,
teilt der Empfangs-Seite 144 des Tunnel-Endes mit, dass
die Schreibtransaktion vollständig
ist, dass der Schreibvorgang im DRAM abgelegt werden kann und dass
abschließend im
Gegenzug ein Schreibstatus erwartet wird. Durch das Signalisieren
des letzten Schreibdatenelements braucht die Empfangs-Seite 144 nicht
die Schreibdatenelemente zu zählen,
die während
einer bestimmten Transaktion übertragen
werden.
-
Es
können
Byte-Aktivierungen zum selektiven Schreiben von Bytes verwendet
werden. Byte-Aktivierungen sind ein "anhaftendes" Feld. Oder anders ausgedrückt: Byte-Aktivierungen
bleiben in Kraft, bis sie anschließend modifiziert werden. Generell
werden Byte-Aktivierungen für
das erste Schreibdatenpaket in dem Schreibbefehlspaket und erforderlichenfalls
in dem optionalen Schreib-Kennzeichner-Paket gesetzt. Wenn ein Burstschreibvorgang,
beispielsweise in einen Speicher, ausgeführt wird, der immer dieselben
Bytes beschreibt, so bleiben die Byte-Aktivierungen, die in dem
Schreibbefehl gesetzt sind, in Kraft, und alle nachfolgenden Daten werden
unter Verwendung der anfänglichen
Byte-Aktivierungen geschrieben. Byte-Aktivierungen bleiben in Kraft,
bis ein neuer Schreibbefehl und/oder ein Schreib-Kennzeichner-Paket
gesendet wird. Wenn weitere Bearbeitungen von Byte-Aktivierungen
für nachfolgende
Datenpakete gewünscht
sind, so wird ein Schreib-Kennzeichner-Paket übermittelt, das dem vorgesehenen
Schreibdatenpaket vorangeht. Das Schreib-Kennzeichner-Paket 220 wird
zwischen Schreibdatenpakete 230 eingefügt, und zwar im Anschluss an
ein Schreibdatenpaket, auf das die modifizierten Byte-Aktivierungen
nicht angewendet werden sollen, wie durch den Zustandspfeil 234 angedeutet,
und vor einem Schreibdatenpaket, das kein letztes Schreibdatenpaket
ist und das das erste Schreibdatenpaket sein soll, auf das die modifizierten Byte-Aktivierungen angewendet
werden, wie durch den Zustandspfeil 236 angedeutet. Der
Zustandspfeil 238 zeigt an, dass ein Schreib-Kennzeichner-Paket auch
vor einem letzten Schreib-(Daten-) Paket 240 übermittelt
werden kann, um Schreib-Aktivierungen zu setzen. Der Zustandspfeil 242 zeigt
an, dass, wenn das letzte Datenpaket 240 keine Modifizierung von
Byte-Aktivierungen und somit kein vorangehendes Schreib-Kennzeichner-Paket
erfordert, das letzte Schreibpaket 240 im Anschluss an
die Übertragung des
letzten Schreibdatenpaketes 230 gesendet wird.
-
Nehmen
wir als eine beispielhafte Verwendung von Byte-Aktivierungen eine
lange Burstschreibtransaktion, die an einer Adresse beginnt und endet,
die nicht auf die Breite der Tunneldatenübertragungen ausgerichtet ist,
32 Bits in einer typischen Implemen tierung. Es werden drei Schreibmasken
benötigt,
von denen eine in dem Schreibbefehl enthalten ist und zwei über Schreib-Kennzeichner-Pakete übermittelt
werden. Die Paketsequenz ist folgende:
- (1)
Schreibbefehl- (und Address-) Paket, das Byte-Aktivierungen enthält, die
für das
erste Schreibdatenpaket gesetzt wurden;
- (2) Erstes Schreibdatenpaket;
- (3) Schreib-Kennzeichner-Paket, wobei alle Maskenbits aktiviert
sind;
- (4) Burst aus Schreibdatenpaketen;
- (5) Schreib-Kennzeichner-Paket, wobei die Maskenbits auf die
letzte Datenübertragung
eingestellt sind; und
- (6) letztes Schreibpaket.
-
Im
Allgemeinen folgt ein Schreib-Kennzeichner-Paket 230 nicht
unmittelbar auf ein Schreibbefehlspaket (nur, wenn zusätzliche
Schreibbefehlsinformationen, die nicht in dem Schreibbefehlspaket enthalten
sind, benötigt
werden). Zweidimensionale ("2D-") Übertragungen
sind eine Ausnahme von der Regel. Für bestimmte Übertragungen,
wie beispielsweise eine 2D-Übertragung,
folgt ein Schreib-Kennzeichner-Paket unmittelbar auf ein Schreibbefehlspaket
(zum Beispiel für
einen 64-Bit-Tunnel; für
einen 32-Bit-Tunnel folgt das Schreib-Kennzeichner-Paket 220 unmittelbar
auf das Adresspaket 215). Der Zustandspfeil 216 in 2A zeigt
des Weiteren den oben erwähnten
Zustandspfad für
einen 2D-Schreibvorgang.
-
Eine
2D-Übertragung
ist eine Übertragung, die
einen "zweidimensionalen" Datenblock mit einem einzigen
Befehl bewegt. Nehmen wir einen Datenblock, beispielsweise ein Digitalbild,
das 1000 Pixel breit und 1000 Pixel hoch ist. Ein Verfahren zum Speichern
des Bildes im Speicher ist, die oberste Zeile aus Pixeldaten an
ersten 1000 Speicherorten zu speichern, beispielsweise den Adressorten
0-999. Die nächste
Zeile aus Pixeldaten wird an den nächsten 1000 Speicherorten (zum
Beispiel 1000–1999) gespeichert,
und so weiter. Das zweidimensionale Bild wird in einem Block aus
Speicherorten gespeichert. Bestimmte Kompressionsalgorithmen (zum Beispiel
MPEG, JPEG usw.) werden an kleineren zweidimensionalen Abschnitten
des Bildes ausgeführt,
zum Beispiel einem Bereich von 8 × 8 Pixeln. Einer dieser Bildabschnitte
kann mittels acht Befehlen aus dem Speicher abgerufen werden, wobei
jeder Befehl eine Zeile aus acht Pixeln abruft. Alternativ wird
ein 2D-Befehl dafür
verwendet, alle 64 Pixel auf einmal anzufordern. In der Regel spezifiziert
ein 2D-Befehl eine Anzahl von Elementen (d. h. Pixeln) je Zeile,
eine Anzahl von Zeilen und einen Unterschied bei der Speicheradresse
zwischen jeder Zeile oder Strecke, 1000 in diesem Beispiel. Gemäß einem Aspekt
der vorliegenden Erfindung werden die Zeilenzählung und die Strecke in dem
Schreib- (oder Lese-) Kennzeichner-Paket übermittelt, das unmittelbar auf
das Schreibbefehlspaket für
2D-Übertragungen folgt.
-
Für einen
typischen Einzeldatenelement-Schreibvorgang werden die Schreibdaten über ein
letztes Schreibpaket 240 übermittelt, das unmittelbar
im Anschluss an Adresseninformationen übermittelt wird, wie durch
den Zustandspfeil 244 angedeutet.
-
Ein
Schreibstatuspaket 250 wird von einer Empfangs-Seite zu
einer Sende-Seite
des Tunnels zurückgesandt,
um ein Schreibtransaktion zu komplettieren, wie in 2B veranschaulicht.
Es können jederzeit
im Anschluss an die Übermittlung
des letzten Schreibpaketes zusätzliche
Schreibsequenzen und Lesebefehle von der Sende-Seite des Tunnels gesendet
werden. Ein Warten auf eine Rücksendung des
Schreibstatuspaketes ist nicht erforderlich. Wenn der Initiator
den Schreibbefehl zurückzieht,
wie es oft für
abgeschickte Schreibvorgänge
geschieht, so ist das Schreibstatuspaket möglicherweise nicht nützlich.
Jedoch muss das Schreibstatuspaket zurückgesandt werden, selbst wenn
es beim Empfang ignoriert wird. Es können ein oder mehrere Leerpakete zwischen
beliebigen der Zustände,
die in 2A veranschaulicht sind, eingefügt werden,
so wie es für
eine. ordnungsgemäße Flusssteuerung
und Pufferverwaltung erforderlich ist.
-
3A und 3B sind
Zustandsschaubilder, die ein Leseprotokoll gemäß einem Aspekt der vorliegenden
Erfindung veranschaulichen. Lesetransaktionen dienen dem Übermitteln
von Daten von einem Ziel zu einem Initiator. Byte-Spuren zum Lesen werden
durch den letzten Lesebefehl oder das versandte optionale Lese-Kennzeichner-Paket
identifiziert. Wie in 3A gezeigt, beginnt eine Lesetransaktion
immer mit einem Lesebefehlspaket 310, das durch den Tunnel
von dem Tunnelausgangs-Ende zu dem Tunneleingangs-Ende übermittelt
wird. Das Befehlspaket enthält
Informationen, dass eine Lesemarke gesetzt wird (zum Beispiel gleich "1"). Für
einen 64-Bit-Tunnel übermittelt
das Lesebefehlspaket 310 die Adresse und die Länge der Übertragung
für den Lesebefehl.
Für einen
32-Bit-Tunnel werden der Lesebefehlsabschnitt und der Adressabschnitt
separat gepackt und über
ein 32-Bit-Lesebefehlspaket 312 bzw. ein Adresspaket 315 versandt.
Das (Lese-) Adresspaket wird im Anschluss an das Lesebefehlspaket übermittelt,
wie durch den Zustandspfeil 314 angedeutet.
-
Ein
erweiterter Lesebefehl enthält
Informationen, die durch ein Lese-Kennzeichner-Paket 320 übermittelt
werden, das im Anschluss an ein Lesebefehlspaket gesendet wird.
Ein vollständiger
Lesebefehl (zum Beispiel 310) wird durch das Lesebefehlspaket übermittelt
und signalisiert, indem eine EXT-Marke auf "0" gesetzt
wird, oder alternativ, indem die EXT-Marke auf "1" gesetzt
wird, was signalisiert, dass ein erweiterter Lesebefehl und ein
Lese-Kennzeichner-Feld durch das nächste versandte Lese-Kennzeichner-Paket übermittelt
werden. Informationen, die ein Lese-Kennzeichner-Paket erforderlich
machen, werden überwiegend
in Verbindung mit speziellen Lesevorgängen verwendet, beispielsweise
mit einem 2D-Lesevorgang. Es wird, wenn benötigt, nur ein einziges Lese-Kennzeichner-Paket
je Lesetransaktion versandt. Es gibt keinen Mechanismus, um die
Byte-Aktivierungen je Lese- (-datenpaket-) Übertragung zu verändern, wie
es bei Schreib-(-datenpaket-) Übertragungen
der Fall ist.
-
Lesebefehle
werden von dem Tunnelausgangs-Ende zu dem Tunneleingangs-Ende übertragen.
Manchmal werden im Anschluss an die Übertragung des Lesebefehls
(und eines optionalen Lese-Kennzeichner-Paketes) zu einem Ziel Daten
von dem Ziel in der Richtung, die der Lesebefehl-Richtung entgegengesetzt
ist, zurückgesendet
(zum Beispiel von dem Tunneleingangs-Ende zurück zu dem Tunnelausgangs-Ende).
Lesedatenrücksendungen werden
rechtzeitig von der Übertragung
von Lesebefehlen getrennt. Leerpakete können gesendet werden, während die
Einleitung der eigentlichen Übertragung
von Lesedaten erwartet wird.
-
3B veranschaulicht
die Rücksendung von
Lesedaten von dem Tunneleingangs-Ende zurück zu dem Tunnelausgangs-Ende.
Gemäß einem Aspekt
der vorliegenden Erfindung können
ein oder mehrere Leerpakete 326 zwischen beliebigen der
Leseprotokollzustände
eingefügt
(d. h. versendet) werden, zum Beispiel im Anschluss an die Übertragung entweder
des Lesebefehlspaketes 310 oder des Lese-Kennzeichner-Paketes 320,
weil die Lesedatenrücksendung
rechtzeitig von Lesebefehlen getrennt wird. Lesedaten werden zu
einer variablen Menge von Lesedatenpaketen 330 gepackt
und enden immer entweder mit einem letzten Lesedatenpaket 340 oder
einem Statuspaket 350 am Ende der Transaktion. Sobald Lesedaten
für eine Übertragung
bereit sind, folgt auf den Ruhezustand die Übertragung eines Lesedatenpaketes 330,
wie durch den Zustandspfeil 328 angedeutet. Zusätzliche
Lesedatenpaketen werden, wie durch den Zustandspfeil 332 angedeutet,
nach Bedarf für
einen bestimmten Lesevorgang sequenziell übertragen. Eine normale, nicht-erweiterte Lesetransaktion
ohne Fehler endet mit einem letzten Lesepaket 340, wie
durch den Zustandspfeil 342 angedeutet. Lesetransaktionen,
die spezielle Vollendungscodes enthalten, zum Beispiel Lesefehler,
enden mit einem Statuspaket 350, wie durch den Zustandspfeil 339 angedeutet.
-
Wenn
eine Lesetransaktion nur eine einzige Lesedatenübertragung enthält und keinen
speziellen Vollendungscode, der ein Transaktionsende verlangt, über ein
Statuspaket 350 enthält,
so ist ein letztes Lesedatenpaket 340 die einzige substanzielle Übertragung
für die
gesamte Transaktion, wie durch den Zustandspfeil 322 angedeutet.
Der Zustandspfeil 324 in 3B zeigt
an, dass der Kommunikationsprozess von einer Übertragung des letzten Lesepaketes 340 in
den Ruhezustand zurückkehrt.
Die Zustandspfeile 344 und 346 zeigen nachfolgenden
Lesedatenübertragungen
an, die den Ruhezustand 326 umgehen. Gemäß einem
ersten Fall folgt ein neuer (Mehrpaket-) Lesevorgang auf die Übertragung
des letzten Lesepaketes 340 und wird durch ein Lesedatenpaket 330 eingeleitet.
Dieser Übergang
zwischen Lesevorgängen
ist durch den Zustandspfeil 344 angedeutet. Alternativ
enthält
ein nachfolgender Lesevorgang nur eine einzige Lesedatenübertragung
ohne einen speziellen Vollendungscode, und ein weiteres letztes
Lesedatenpaket 340 wird erneut als die einzige substanzielle Übertragung
für die
nachfolgende Lesetransaktion übertragen.
Aufeinanderfolgende letzte Lesedatenpaketübertragungen sind durch den
Zustandspfeil 346 angedeutet. Wenn eine Lesetransaktion
nur eine einzige Lesedatenübertragung
enthält, aber
auch einen speziellen Vollendungscode und damit ein Statuspaket 350 enthält, so ist
das Statuspaket 350 die einzige substanzielle Übertragung
für die gesamte
Transaktion, wie durch den Zustandspfeil 328 angedeutet.
Der Zustandspfeil 352 in 3B zeigt
an, dass der Kommunikationsprozess von einer Lesestatuspaketübertragung
in den Ruhezustand zurückkehrt.
-
4 ist
ein Zustandsschaubild, das die Zustandsübergänge eines Tunnelprotokolls
für eine Tunnelausgangs-Empfangs-/Tunneleingangs-Sende-Transaktion
gemäß einem
Aspekt der vorliegenden Erfindung veranschaulicht. Das Tunnelprotokoll kombiniert
die Lese- und Schreibprotokolle für integrierte Lese- und Schreib-Tunnelverkehrsoperationen.
Wenden wir uns den 1 und 4 zu. Die Hauptfunktion
der Tunnelseingangs-Sendeseite 142 ist
die Übertragung
von Lesedaten. Außerdem
sendet die Sende-Seite des Tunnelseingangs-Endes ein Schreibstatuspaket
für jede
Schreibtransaktion zurück.
Schreibstatuspakete werden mit einer höheren Priorität übertragen
als Lesedatenpaketen und können
zwischen jeweils zwei Zustände
des Leseabschnitts des Tunnelprotokolls eingefügt werden. Diese Fähigkeit
ist in 4 durch gestrichelte Doppel-Zustandspfeile 252, 254, 256 und 258 angedeutet,
die einen Umgehungspfad zu jedem durchgezogenen Zustandspfeil durch
eine Übertragung
eines Schreibstatuspaketes 250 bilden. Außerdem zeigt der
gestrichelte Zustandspfeil 255 an, dass mehrere Schreibstatuspakete 250 nacheinander
gesendet werden können.
-
Gemäß einem
Aspekt des Tunnelprotokolls der vorliegenden Erfindung können Leerpakete 326 an
jeder beliebigen Stelle in dem Zustandsschaubild von 4 eingefügt werden,
so wie es für
die Flusssteuerung benötigt
wird. Allerdings ist aus Gründen der
Einfachheit nicht jede Konfiguration eines Leerpaketübertragungszustandes
in dem Schaubild von 4 gezeigt.
-
Eine
Koordination von Lese- und Schreibübertragungen über den
Kanal 114 des Tunnels gemäß einer beispielhaften Implementierung
eines kombinierten Tunnelprotokolls wird über eine festgelegte Priorität erreicht,
die folgendermaßen
von der höchsten
zur geringsten Priorität
aufgelistet ist:
- (1) Senden von einem oder
mehreren Leerpaketen, wenn die Empfangs-Seite des Tunnelausgangs-Endes
belegt ist;
- (2) Senden von einem oder mehreren anstehenden Schreibstatuspaketen;
- (3) Senden von anstehenden Lesedaten, letzten Lesedaten und
(Lese-) Statuspaketen gemäß dem Leseprotokoll;
und
- (4) Senden von Leerpaketen.
-
Die
Empfangs-Seite des Tunnelausgangs-Endes ist als belegt dargestellt,
indem ein "T_RDS_BUSY" (Tunnel-Lesedaten/Status
belegt)-Signal auf "1" gesetzt wird. 5 ist
ein Zustandsschaubild, das beispielhafte Zustandsübergänge eines
Tunnelprotokolls für
eine Tunnelausgangs-Sende-/Tunneleingangs-Empfangs-Transaktion,
ebenfalls gemäß der vorliegenden
Erfindung, veranschaulicht. Die Sende-Seite 152 des Tunnelausgangs-Endes
sendet Lesebefehle, Schreibbefehle und Schreibdaten aus. Die Zustände in dem Schreibabschnitt 580 des
Zustandsschaubildes von 5 gehen so über, wie es oben für in 2 veranschaulichte, gleich-bezeichnete
Elemente beschrieben wurde. Die Zustände in dem Leseabschnitt 590 des
Zustandsschaubildes von 5 gehen so über, wie es oben für in 3 veranschaulichte, gleich-bezeichnete
Elemente beschrieben wurde.
-
Gemäß einem
Aspekt des Tunnelprotokolls der vorliegenden Erfindung werden, wenn
keine Befehle oder Schreibdaten anstehen, Zyklen von Leerpaketen
durch den Tunnel übertragen,
wie durch den eine Schleife bildenden Übergangspfad angedeutet, der
einschließlich
der Zustandspfeile 570 zu – und 575 von – der Übertragung
der Leerpakete 326 gebildet wird. Die Leerpakete 326 können an
jeder beliebigen Stelle in dem Zustandsschaubild von 5 eingefügt werden,
so wie es für
die Flusssteuerung erforderlich ist (zum Beispiel, wenn die Empfangs-Seite 144 des
Tunneleingangs-Endes voll oder fast voll ist). Aus Gründen der
Einfachheit ist in keiner der Figuren jede Konfiguration eines Leerpaketübertragungszustandes
in dem Schaubild von 5 gezeigt.
-
Eine
Koordination von Lese- und Schreibübertragungen durch den Tunnel
gemäß dem kombinierten
Tunnelausgangs-Sende-/Tunneleingangs-Empfangs-Tunnelprotokoll wird
durch eine festgelegte Priorität
erreicht, die folgendermaßen
von der höchsten
zur niedrigsten Priorität
aufgelistet ist:
- (1) Senden von einem oder
mehreren Leerpaketen, wenn die Empfangs-Seite des Tunneleingangs-Endes
belegt ist;
- (2) Senden aller anstehenden Befehle mit einer Priorität, die außerhalb
des Tunnels in einem (nicht gezeigten) Busverwalter festgelegt wird, und
wenn der Befehl ein Schreibbefehl ist, ebenfalls Senden der Schreibdaten;
- (3) Senden von Leerpaketen, wenn nichts anderes zu tun ist.
-
Die
Empfangs-Seite des Tunneleingangs-Endes ist als belegt dargestellt,
indem ein "T_ACW_BUSY" (Tunnel-Adress/Befehl/Schreib-Daten
belegt)-Signal auf "1" gesetzt wird.
-
Alle
Pakete eines Lesebefehls (zum Beispiel das Lesebefehlspaket, das
Adresspaket für
einen 32-Bit-Tunnel und das optional Lesevorgang-Kennzeichner-Paket)
werden in der in 5 gezeigten Reihenfolge versendet.
Nur Leerpakete können
zwischen die Lesebefehlspakete eingefügt werden. Gleichermaßen werden
alle Pakete einer Schreibtransaktion (zum Beispiel das Schreibbefehlspaket,
das Adresspaket für
einen 32-Bit-Tunnel,
das optionale Schreib-Kennzeichner-Paket, ein oder mehrere Schreibdatenpakete
und das letzte Schreibpaket) in der in 5 gezeigten
Reihenfolge versendet. Nur Leerpakete können zwischen die Schreibtransaktionspakete
zur Flusssteuerung eingefügt
werden.
-
Um
die komplexen Bedingungen zu vermeiden, zu denen es kommt, wenn
ein quellensynchrones Kommunikationssystem ein Ziel (d. h. einen
Bestimmungsort) zum Überlaufen
bringt, ist der Tunnel so konfiguriert, dass er nur dann Daten sendet,
wenn genügend
Platz in einem Empfangspuffer vorhanden ist, zum Beispiel eine First-in-First-out-Speicherstruktur
oder FIFO. Die höchste
Geschwindigkeit und Effizienz wird erreicht, wenn man neben der
Datenspeicherkapazität
des Empfangspuffers zusätzlich
die temporäre
Datenspeicherkapazität
des Kommunikationskanals selbst während der "Laufzeit" der Datenübertragung durch den Kommunikationskanal
nutzt. Die Zeit, die benötigt
wird, um ein "Voll"-Signal von dem Empfangspuffer
zu dem Sende-Ende zu senden, um einen Datenübertragungs-Stopp zu erreichen,
muss ebenfalls vorweggenommen und in die Zeitablaufsteuerung des
Sendens und Empfangens von Koordinationssignalen integriert werden.
Laufzeitverzögerungen
sind systemabhängig
und richten sich nach der physischen Länge des Kommunikationskanals.
Zum Beispiel dürfte
bei Verwendung einer Tunnelverbindung zwischen zwei Systemchips
auf einer gemeinsamen Platine eine wesentlich kürzere Laufzeitverzögerung zustande
kommen als bei einem System, das über Einsteckkarten verbunden
ist.
-
Gemäß einer
beispielhaften Implementierung der vorliegenden Erfindung führt die
Länge eines
Kommunikationskanals zu einer Ausbreitungsverzögerung von einer Nanosekunde
je 6 Inch Kommunikationskanal. Der Kommunikationskanal hat eine
maximale Länge
von 12 Inch, und darum werden 2 Nanosekunden (nS) Ausbreitungsverzögerung ab
dem Zeitpunkt, da am Ziel-Ende des Kommunikationskanals eine Empfangspuffermarke
gesetzt wird, bis zu dem Zeitpunkt, das das Signal das Sende-Ende
des Kommunikationskanals erreicht, erwartet. Gleichermaßen beträgt die Zeit,
die für
eine Übertragung
von Daten zu dem Ziel-Ende des Kommunikationskanals verstreicht,
ebenfalls 2 nS, was auf die Daten-"Laufzeit" zurückzuführen ist,
d. h. die Zeit, die Datensignale brauchen, um den Kommunikationskanal
zu durchqueren. Die Kommunikationskanal-Ausbreitungsverzögerung stellt praktisch 2 nS
Daten-"Speicher" in dem Kommunikationskanal
selbst zur Verfügung.
Darum beträgt
die Gesamtverzögerung
von einem Empfangspuffer, der ein "Fast-voll"-Signal sendet, bis zum Ende der Daten
innerhalb des Kommunikationskanals 4 nS.
-
Die
höchste Übertragungsrate
der hier besprochenen beispielhaften Implementierung ist 400 MHz,
was 2,5 nS je Taktzyklus entspricht. Die 4 nS Gesamtverzögerung werden
durch eine 2 Taktzyklen umfassende Verzögerung ausgeglichen. Bei Taktfrequenzen
von 200 MHz oder weniger wird eine einzelne Taktzyklusverzögerung benötigt, um
die Hin- und Zurück-Ausbreitungsverzögerungen
durch den Kommunikationskanal hindurch auszugleichen. Zusätzlich zu
den Kommunikationskanal-Ausbreitungsverzögerungen ist ein Kompensieren
von 3 zusätzlichen Taktzyklen
in Synchrontaktsystemen erforderlich. Ein zusätzlicher Taktzyklus in Kompensation
wird benötigt,
um eine Empfangspufferstatusmarke zu senden, wo die Statusmarke
synchron zum internen Takt erzeugt wird. Das empfangene Statusmarkensignal
ist ebenfalls um einen Taktzyklus verzögert. Die internen Statusmarken
in einem empfangenden Bauelement müssen die Taktdomänen ändern und
je nach den Metastabilitätshärtungskonfigurationen
noch einen oder zwei Taktzyklen an Verzögerung hinzufügen. Das
empfangende Bauelement ist das Bauelement, das die "Fast-voll"-Marke empfängt, im
Allgemeinen das Bauelement, das zu senden versucht, beispielsweise
entweder das Tunneleingangs-Sende-Ende 152 oder das Tunnelausgangs-Sende-Ende 142 in 1.
Darum beträgt
die Gesamttaktverzögerung
5 Taktzyklen, wobei 1 + 1 + 1 = 3 Taktzyklen der Taktlogik zurechenbar
sind und 2 zusätzliche
Taktzyklen der Kommunikationskanal-Ausbreitungsverzögerung zurechenbar
ist.
-
Gemäß einem
Aspekt der hier besprochenen beispielhaften Implementierung enthält ein Empfangspuffer
programmierbare "Voll"-Pegel, bei denen eine "Fast-voll"-Anzeige ergeht (zum Beispiel wird eine
Statusmarke gesetzt). Der Bereich, innerhalb dessen die "Fast-voll"-Anzeige programmierbar
ist, reicht von 4 bis 16 Reihen, die in jedem einzelnen Empfangspuffer übrig sind.
-
6A ist
ein beispielhaftes Zeitablaufschaubild, das eine Datenpaketflusssteuerung
von einem Tunnel 110 zu einem DRAM 125 gemäß einer beispielhaften
Ausführungsform
der vorliegenden Erfindung veranschaulicht. In der beispielhaften
Kommunikationstransaktion, die in 6A veranschaulicht
ist, verwendet der periphere Baustein 130 den Tunnel 110,
um auf den SDRAM 125 zuzugreifen. Die Kommunikationstransaktion
enthält
eine Folge von 3 Schreibvorgängen
(W1–W3),
3 Lesevorgängen (R1–R3), einem
vierten Schreibvorgang (W4), einem vierten Lesevorgang (R4) und
schließlich
einem fünften
Schreibvorgang (W5). Die Folge von Schreib- und Lesevorgängen, die
in den Tunnel hinein übermittelt
wird, ist in der obersten Teile 610 von 6A gezeigt.
Wie durch die Ausrichtung von Schreib- und Lesevorgängen in
der mittleren Zeile 620 von 6A angedeutet,
führt der
DRAM alle Anforderungen in desselben Reihenfolge aus, in der sie
am Tunnel-Sende-Ende gesendet bzw. angefordert werden. Ein Schreibvorgangs-Vollendungscode
wird an die Empfangs-Seite des Initiator-Tunnels zurückgesendet, nachdem jeder Schreibvorgang
im DRAM ausgeführt
wurde, um anzuzeigen, dass die Schreibaufgabe vollendet wurde. Die
relative Zeitablaufsteuerung dieser Schreibvorgangs-Vollendungscodes
sowie der Lesevorgänge
am Empfangs-Ende des Initiator-Tunnels ist in der untersten Zeile 630 von 6A veranschaulicht.
Senden und Empfangen hören
nicht auf. Darum werden alle Plätze,
die nicht in 6A bezeichnet sind, mit Übertragungen
von Leerpaketen (die aus Gründen
der Übersichtlichkeit nicht
gezeigt sind) gefüllt.
-
6B ist
ein beispielhaftes Zeitablaufschaubild, das eine Datenpaketflusssteuerung
von einem Tunnel zu einem DRAM mit Einfügung von Leerpaketen zum Ausgleichen
von belegten Empfangspuffern gemäß einer
beispielhaften Ausführungsform
der vorliegenden Erfindung veranschaulicht. Die Benennung und Abfolge
der Datenpakete in 6B ist identisch mit der Benennung
und Abfolge von 6A. Wie oben besprochen, hören das
Senden und Empfangen nicht auf. Darum werden alle Räume zwischen
Paketen, die nicht in 6B bezeichnet sind, mit den Übertragungen
von Leerpaketen gefüllt.
Aus Gründen
der Übersichtlichkeit
sind nur zwei Leerpakete, 640 und 650, konkret
in 6B gezeigt.
-
In
dem relativen Moment, der bei 690 angedeutet ist, sendet
der periphere Baustein zwei Schreibvorgänge W1 und W2 der Reihe nach
zu der Sende-Seite des Tunnelausgangs. In dem relativen Moment,
der bei 691 angedeutet ist, schreibt der DRAM W1. Der DRAM
kann mit dem Schreiben von W1 erst beginnen, wenn W1 vollständig durch
die Empfangs-Seite des Tunneleingangs empfangen wurde. In dem relativen
Moment, der bei 692 angedeutet ist, wird der Adress/Befehl/Schreib-Daten ("ACW")-Empfangspuffer voll, was zum Senden
des Leerpaketes 640 und zur Verzögerung der Vollendung von W3
führt.
In dem relativen Moment, der bei 693 angedeutet ist, vollendet
der DRAM W1 und beginnt W2. In dem relativen Moment, der bei 694 angedeutet
ist, ist die Übertragung
von W3 in den Tunnel vollständig.
In dem relativen Moment, der bei 695 angedeutet ist, sendet
der periphere Baustein vier Lesebefehle in den Tunnel. Da es sich
nur um Lesebefehle handelt, braucht jeder nur sehr wenig Pufferplatz.
In dem relativen Moment, der bei 696 angedeutet ist, beendet
die DRAM-Steuerung W3 und führt die
Lesevorgänge
R1, R2 und R3 durch. In dem relativen Moment, der bei 697 angedeutet
ist, wird R2 während
des Ablaufs in dem Tunnel angehalten, während auf der Tunnelausgangs-Empfangs-Seite des
Peripheriebausteins auf Empfangspufferplatz gewartet wird. Die DRAM-Daten
müssen
immer mit DRAM-Raten übertragen
werden, und die DRAM-Steuerung
kann niemals in einen Wartezustand versetzt werden.
-
Ein
einleitendes Bauelement kann eine Transaktion in dem Tunnel weder
abbrechen noch aussetzen. Zum Beispiel kann der Peripheriebaustein 130 oder
ein anderes Bauelement, das über den
Datenpfad 170 mit dem Ziel 156 des Tunnelsausgangs-Endes
verbunden ist, eine Speichertransaktion in dem Tunnel weder abbrechen
noch aussetzen.
-
Obgleich
die vorliegende Erfindung anhand verschiedener bestimmter beispielhafter
Ausführungsformen
beschrieben wurde, widmen sich verschiedene Aspekte der vorliegenden
Erfindung den oben erwähnten
Schwächen
und stellen darüber
hinaus Kommunikationsverfahren und -anordnungen bereit, die sich
auch für
andere Anwendungen eignen. Die vorliegende Erfindung darf nicht
als auf die oben beschriebenen konkreten Beispiele beschränkt betrachtet
werden. Verschiedenen Modifikationen, vergleichbare Verfahren sowie
zahlreiche Strukturen, auf die die vorliegende Erfindung Anwendung
finden kann, fallen in den Geltungsbereich der vorliegenden Erfindung.
Zum Beispiel leuchtet dem Fachmann ein, dass auch andere Kommunikationsanordnungen
akzeptabel sind und dass Mehrfachchip- oder Einzelchipanordnungen
unter Verwendung einer ähnlich aufgebauten
Einweg- oder Zweiweg-Schnittstelle zur Kommunikation zwischen den
Chipsatzanordnungen unter Verwendung eines Übertragungsprotokolls, wie es
im vorliegenden Text beschrieben wurde, implementiert werden können. Des
Weiteren sind dem Fachmann verschiedene zusätzliche Vorteile bewusst, die
realisiert werden, wenn man Implementierungen der vorliegenden Erfindung
mit einer oder mehreren der Ausführungsformen
kombiniert, die in den oben erwähnten
Patentschriften beschrieben sind. Solche Vorteile, Kombinationen,
weiteren Modifikationen und/oder Ergänzungen können realisiert bzw. vorgenommen
werden, ohne vom Geltungsbereich der vorliegender Erfindung abzuweichen,
und können
als ein Teil der beanspruchten Erfindung angesehen werden, die in
den angehängten
Ansprüchen
dargestellt ist.