DE60215853T2 - Hochgeschwindigkeits-interchip-schnittstellenprotokoll - Google Patents

Hochgeschwindigkeits-interchip-schnittstellenprotokoll Download PDF

Info

Publication number
DE60215853T2
DE60215853T2 DE60215853T DE60215853T DE60215853T2 DE 60215853 T2 DE60215853 T2 DE 60215853T2 DE 60215853 T DE60215853 T DE 60215853T DE 60215853 T DE60215853 T DE 60215853T DE 60215853 T2 DE60215853 T2 DE 60215853T2
Authority
DE
Germany
Prior art keywords
write
data
read
pending
destination
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 - Lifetime
Application number
DE60215853T
Other languages
English (en)
Other versions
DE60215853D1 (de
Inventor
L. Robert PAYNE
R. David EVOY
A. Timothy PONTIUS
George Spatz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP BV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE60215853D1 publication Critical patent/DE60215853D1/de
Application granted granted Critical
Publication of DE60215853T2 publication Critical patent/DE60215853T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Description

  • 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.

Claims (15)

  1. Verfahren zur parallelen Datenkommunikation über einen Kommunikationskanal (110) zwischen einem Ursprungs-Ende (140) und einem Ziel-Ende (150), umfassend: – regelmäßiges Übermitteln von Informationen von dem Ursprungs-Ende (140) zu dem Ziel-Ende (150), einschließlich des Übermittelns von Leerpaketen von dem Ursprungs-Ende (140) zu dem Ziel-Ende (150) in Reaktion darauf, dass das Ziel-Ende (150) belegt ist, und während Zeiträumen, wo keine Befehle oder Daten oder Statusinformationen anstehend, – in Reaktion darauf, dass das Ziel-Ende (150) nicht belegt ist, von dem Ursprungs-Ende (140) zu dem Ziel-Ende (150): – sequenzielles Übermitteln von Lese- oder Schreibbefehlen (310, 210, 212) und, gemäß einem Schreibprotokoll, von anstehenden Schreibdaten (230), und – Übermitteln von Leerpaketen (326) während Zeiträumen, wo keine Befehle anstehen, und – in Reaktion darauf, dass das Ursprungs-Ende (140) nicht belegt ist, von dem Ziel-Ende (150) zu dem Ursprungs-Ende (140): – sequenzielles Übermitteln von anstehenden Schreib-Ende-Statusinformationen (250), und – sequenzielles Übermitteln von anstehenden Lesedaten und Lesestatusinformationspaketen (330, 340, 350) gemäß einem Leseprotokoll während Zeiträumen, wo keine Schreib-Ende-Statusinformationen (250) anstehen.
  2. Verfahren nach Anspruch 1, wobei das Schreibprotokoll des Weiteren enthält: – Übermitteln eines Schreibbefehls von dem Ursprungs-Ende (140), worauf der Reihe nach Schreibdaten (230) und eine Schreib-Ende-Mitteilung (240) folgen.
  3. Verfahren nach Anspruch 2, das des Weiteren das Übermitteln einer Schreib-Ende-Statusinformation von dem Ziel-Ende (150) in Reaktion auf eine Schreib-Ende-Mitteilung (240) enthält.
  4. Verfahren nach Anspruch 2, das des Weiteren das Übermitteln einer Schreibadresse (215) von dem Ursprungs-Ende unmittelbar im Anschluss an jeden Schreibbefehl (212) enthält.
  5. Verfahren nach Anspruch 2, das des Weiteren das Übermitteln von Byte-Aktivierungsinformationen von dem Ursprungs-Ende (140) enthält, die einem Abschnitt der Schreibdaten (220) vorangehen.
  6. Verfahren nach Anspruch 1, wobei Lesestatusinformationen (350) Lesevorgangs-Ende- und Fehlerinformationen enthalten.
  7. Verfahren nach Anspruch 1, wobei Informationen für eine Übertragung paketiert werden.
  8. Verfahren nach Anspruch 1, das des Weiteren das regelmäßige Übermitteln von Informationen von dem Ziel-Ende (150) zu dem Ursprungs-Ende (140) enthält, einschließlich des Übermittelns von Leerpaketen von dem Ziel-Ende (150) zu dem Ursprungs-Ende (140) in Reaktion darauf, dass das Ursprungs-Ende (140) belegt ist, und während Zeiträumen, wo keine Lesedaten (330) oder Lesestatusinformationen (340, 350) anstehen.
  9. Verfahren nach Anspruch 1, wobei Informationen von dem Ursprungs-Ende (140) zu dem Ziel-Ende (150) über einen ersten unidirektionalen Datenpfad (112) des Kommunikationskanals (110) übertragen werden und Informationen von dem Ziel-Ende zu dem Ursprungs-Ende über einen zweiten unidirektionalen Datenpfad (114) des Kommunikationskanals (110) übertragen werden.
  10. Datenkommunikationsanordnung (100) zur parallelen Datenkommunikation über einen Kommunikationskanal (110) von einem Ursprungs-Ende (140) zu einer Ziel-Ende (150), umfassend: – Mittel zum regelmäßigen Übermitteln von Informationen von dem Ursprungs-Ende (140) zu dem Ziel-Ende (150), einschließlich Mitteln, die darauf reagieren, dass das Ziel-Ende (150) belegt ist, zum Übermitteln von Leerpaketen von dem Ursprungs-Ende (140) zu dem Ziel-Ende (150) und wenn keine Befehle oder Daten oder Statusinformationen anstehen, – Mittel, die darauf reagieren, dass das Ziel-Ende (150) nicht belegt ist, und von dem Ursprungs-Ende (140) zu dem Ziel-Ende (150): – zum sequenziellen Übermitteln von Lese- oder Schreibbefehlen (310, 210) und, gemäß einem Schreibprotokoll, von anstehenden Schreibdaten (230), und – zum Übermitteln von Leerpaketen (326) während Zeiträumen, wo keine Befehle anstehen, und – Mittel, die darauf reagieren, dass das Ursprungs-Ende (140) nicht belegt ist, und von dem Ziel-Ende (150) zu dem Ursprungs-Ende (140): – zum sequenziellen Übermitteln von anstehenden Schreib-Ende-Statusinformationen (250), und – zum sequenziellen Übermitteln von anstehenden Lesedaten und Lesestatusinformationspaketen (330, 340, 350) gemäß einem Leseprotokoll während Zeiträumen, wo keine Schreib-Ende-Statusinformationen (250) anstehen.
  11. Anordnung nach Anspruch 10, die des Weiteren Mittel zum Übertragen eines Schreibbefehls von dem Ursprungs-Ende (140) enthält, worauf der Reihe nach Schreibdaten (230) und eine Schreib-Ende-Mitteilung (240) folgen.
  12. Anordnung nach Anspruch 10, die des Weiteren Mittel zum Übertragen einer Schreib-Ende-Statusinfonmation (250) von dem Ziel-Ende (150) in Reaktion auf eine Schreib-Ende-Mitteilung (240) enthält.
  13. Anordnung nach Anspruch 10, die des Weiteren Mittel zum regelmäßigen Übermitteln von Informationen von dem Ziel-Ende (150) zu dem Ursprungs-Ende (140) enthält, einschließlich des Übermittelns von Leerpaketen von dem Ziel-Ende (150) zu dem Ursprungs-Ende (140) in Reaktion darauf, dass das Ursprungs-Ende (140) belegt ist, und während Zeiträumen, wo keine Lesedaten (330) oder Lesestatusinformationen (340, 350) anstehen.
  14. Anordnung nach Anspruch 10, die des Weiteren enthält: Mittel (112, 114) zur gleichzeitigen kontinuierlichen unidirektionalen Informationsübertragung von dem Ursprungs-Ende (140) zu dem Ziel-Ende (150) und zur kontinuierlichen unidirektionalen Informationsübertragung von dem Ziel-Ende (150) zu dem Ursprungs-Ende (140).
  15. Datenkommunikationsanordnung (100) nach Anspruch 10, wobei: die Mittel zum regelmäßigen Übermitteln von Informationen von dem Ursprungs-Ende (140) zu dem Ziel-Ende (150) eine erste Datenprozessoranordnung (120) umfassen, die sich am Ursprungs-Ende (140) befindet und dafür geeignet ist, regelmäßig Informationen zu dem Ziel-Ende (150) zu übertragen und in Reaktion darauf, dass das Ziel-Ende (150) belegt ist, Leerpakete zu dem Ziel-Ende (150) zu übermitteln, wenn keine Befehle oder Daten oder Statusinformationen anstehen, – wobei die erste Datenprozessoranordnung (120) des Weiteren dafür geeignet ist, in Reaktion darauf, dass das Ziel-Ende nicht belegt ist: – an das Ziel-Ende der Reihe nach zu übertragen: – Lese- oder Schreibbefehle, und – anstehende Schreibdaten gemäß einem Schreibprotokoll, und – Leerpakete (326) während Zeiträumen zu übermitteln, wo keine Befehle anstehen, und – eine erste Datenprozessoranordnung, die sich am Ziel-Ende befindet und dafür geeignet ist, in Reaktion darauf, dass das Ursprungs-Ende nicht belegt ist: – zu dem Ursprungs-Ende (140) der Reihe nach anstehende Schreib-Ende-Statusinformationen zu übermitteln und – zu dem Ursprungs-Ende (140) der Reihe nach anstehende Lesedaten und Lesestatusinformationspakete gemäß einem Leseprotokoll während Zeiträumen zu übermitteln, wo keine Schreib-Ende-Statusinformationen anstehen.
DE60215853T 2001-11-29 2002-11-14 Hochgeschwindigkeits-interchip-schnittstellenprotokoll Expired - Lifetime DE60215853T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US997609 2001-11-29
US09/997,609 US6996106B2 (en) 2001-11-29 2001-11-29 High-speed interchip interface protocol
PCT/IB2002/004818 WO2003046731A2 (en) 2001-11-29 2002-11-14 High-speed interchip interface protocol

Publications (2)

Publication Number Publication Date
DE60215853D1 DE60215853D1 (de) 2006-12-14
DE60215853T2 true DE60215853T2 (de) 2007-09-06

Family

ID=25544207

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60215853T Expired - Lifetime DE60215853T2 (de) 2001-11-29 2002-11-14 Hochgeschwindigkeits-interchip-schnittstellenprotokoll

Country Status (7)

Country Link
US (1) US6996106B2 (de)
EP (1) EP1451698B1 (de)
JP (1) JP2005510798A (de)
AT (1) ATE344494T1 (de)
AU (1) AU2002348922A1 (de)
DE (1) DE60215853T2 (de)
WO (1) WO2003046731A2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058090B1 (en) * 2001-12-18 2006-06-06 Applied Micro Circuits Corporation System and method for paralleling digital wrapper data streams
US7602729B2 (en) * 2004-07-19 2009-10-13 Alcatel-Lucent Usa Inc. Slow-fast programming of distributed base stations in a wireless network
JP4799419B2 (ja) * 2004-10-20 2011-10-26 富士通株式会社 設定プログラム、設定方法、および設定装置
US8429356B2 (en) 2005-11-02 2013-04-23 Ati Technologies Ulc Write data mask method and system
JP4856695B2 (ja) * 2006-02-24 2012-01-18 富士通株式会社 データ転送装置、データ転送システム及びデータ転送装置の制御方法
US9341676B2 (en) 2011-10-07 2016-05-17 Alcatel Lucent Packet-based propagation of testing information
US10203897B1 (en) 2016-12-02 2019-02-12 Nutanix, Inc. Dynamic data compression
CN111522588B (zh) * 2020-04-16 2023-05-05 珠海泰芯半导体有限公司 一种基于swd协议的芯片运行交互方法及通信系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644593A (en) * 1994-09-02 1997-07-01 Microcom Systems, Inc. High performance communications interface
US6263385B1 (en) * 1997-10-20 2001-07-17 Advanced Micro Devices, Inc. PC parallel port structure partitioned between two integrated circuits interconnected by a serial bus
US6009488A (en) * 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US6611891B1 (en) * 1998-11-23 2003-08-26 Advanced Micro Devices, Inc. Computer resource configuration mechanism across a multi-pipe communication link
US6748442B1 (en) * 1998-12-21 2004-06-08 Advanced Micro Devices, Inc. Method and apparatus for using a control signal on a packet based communication link
US7003585B2 (en) * 2001-09-05 2006-02-21 Xerox Corporation High speed serial interface

Also Published As

Publication number Publication date
DE60215853D1 (de) 2006-12-14
US20030099238A1 (en) 2003-05-29
EP1451698A2 (de) 2004-09-01
WO2003046731A3 (en) 2004-06-10
AU2002348922A8 (en) 2003-06-10
JP2005510798A (ja) 2005-04-21
ATE344494T1 (de) 2006-11-15
AU2002348922A1 (en) 2003-06-10
EP1451698B1 (de) 2006-11-02
US6996106B2 (en) 2006-02-07
WO2003046731A2 (en) 2003-06-05

Similar Documents

Publication Publication Date Title
DE602004007674T3 (de) Integrierte Schaltung mit bimodalem Daten-Strobe
DE60205877T2 (de) Verfahren zur synchronisation der auslesezeit eines hochgeschwindigkeitsspeichers
DE3751514T2 (de) Adressieranordnung für RAM-Puffer-Steuereinrichtung.
DE69029003T2 (de) System für Übertragungssteuerung zwischen Parallelrechnern
DE19882418B4 (de) System einer quellensynchronen Schnittstelle zwischen Master- und Slave-Einrichtungen und zugehöriges Verfahren
DE69735936T2 (de) Seriendatenschnittstellenverfahren und vorrichtung #
DE102006035612B4 (de) Speicherpuffer, FB-DIMM und Verfahren zum Betrieb eines Speicherpuffers
DE4121446C2 (de) Terminal-Server-Architektur
EP0179936A1 (de) Verfahren und Einrichtung zur Steuerung einer Sammelleitung
DE112007002619T5 (de) Speichersteuerung mit einer Speicherverbindung mit zwei Betriebsmodi
DE112011103208T5 (de) Hochgeschwindigkeits-Speichersystem
DE10330812A1 (de) Halbleiterspeichermodul
DE10234934A1 (de) Antwortreihenwiederherstellungsmechanismus
DE4307449A1 (de)
DE102008030514A1 (de) Verfahren und Vorrichtung zur Anbindung von Speichervorrichtungen
DE60215853T2 (de) Hochgeschwindigkeits-interchip-schnittstellenprotokoll
DE10355583A1 (de) Gemeinsame Nutzung eines Speichers in einer Zentralsteuerung
DE102008052466A1 (de) Speichersystem mit erweiterter Speicherdichtefähigkeit
DE102019112628A1 (de) Dimm für speicherkanal mit hoher bandbreite
DE60017774T2 (de) Verfahren und vorrichtung zur unterstützung von mehrtaktübertragung in einem rechnersystem mit einer punkt-zu-punkt halb-duplex verbindung
DE69122520T2 (de) Vielfachbus-Systemspeicherarchitektur
DE60008662T2 (de) FIFO-System mit Schnittstelle mit veränderlicher Breite zum Hostprozessor
DE10214067B4 (de) Integrierter Schaltkreischip mit Hochgeschwindigkeitsdatenschnittstelle sowie zugehöriges Southbridgebauelement und Verfahren
EP2411921B1 (de) Schaltungsanordnungen und verfahren zur steuerung eines datenaustauschs in einer schaltungsanordnung
DE69403028T2 (de) Verfahren und Vorrichtung zur Steuerung der Auf-dem-Chip-Taktverschiebung

Legal Events

Date Code Title Description
8328 Change in the person/name/address of the agent

Representative=s name: EISENFUEHR, SPEISER & PARTNER, 10178 BERLIN

8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: NXP B.V., EINDHOVEN, NL