DE112007003086T5 - Befehlspaketzusammenstellung zur Vermeidung des CRC-Aufwands - Google Patents

Befehlspaketzusammenstellung zur Vermeidung des CRC-Aufwands Download PDF

Info

Publication number
DE112007003086T5
DE112007003086T5 DE112007003086T DE112007003086T DE112007003086T5 DE 112007003086 T5 DE112007003086 T5 DE 112007003086T5 DE 112007003086 T DE112007003086 T DE 112007003086T DE 112007003086 T DE112007003086 T DE 112007003086T DE 112007003086 T5 DE112007003086 T5 DE 112007003086T5
Authority
DE
Germany
Prior art keywords
cell
error detection
packets
data
packet
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.)
Granted
Application number
DE112007003086T
Other languages
English (en)
Other versions
DE112007003086B4 (de
DE112007003086B8 (de
Inventor
William A. San Jose Hughes
Chen-ping Fremont Yang
Greggory D. Dan Jose Donley
Michael K. Sunnyvale Fertig
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.)
GlobalFoundries US Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE112007003086T5 publication Critical patent/DE112007003086T5/de
Publication of DE112007003086B4 publication Critical patent/DE112007003086B4/de
Application granted granted Critical
Publication of DE112007003086B8 publication Critical patent/DE112007003086B8/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • H04L1/0011Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding applied to payload information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0006Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format
    • H04L1/0007Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format by modifying the frame length
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems

Abstract

Knoten, der zur Ankopplung an eine Verbindung ausgebildet ist, wobei der Knoten umfasst:
eine Sendeschaltung, die ausgebildet ist, Pakete über die Verbindung zu senden, wobei jedes Paket eine oder mehrere Zellen aufweist; und
eine Zellendisponiereinheit, die mit der Sendeschaltung verbunden und ausgebildet ist, die durch die Sendeschaltung zu übertragenden Zellen zu disponieren, wobei die Zellendisponiereinheit ausgebildet ist, mindestens eine zu übertragende Fehlererkennungszelle zu disponieren, wobei die Fehlererkennungszelle ein vorhergehendes Paket abdeckt, und wobei, wenn ein zweites Paket für das Disponieren verfügbar ist, die Zellendisponiereinheit ausgebildet ist, Zellen des zweiten Pakets anstelle der Fehlererkennungszelle zu disponieren, und wobei die Fehlererkennungszelle das vorhergehende Paket und das zweite Paket abdeckt, wenn sie nachfolgend disponiert wird.

Description

  • Technisches Gebiet
  • Diese Erfindung betrifft das Gebiet der Verbindung elektrischer Systeme, etwa von Computersystemen.
  • Hintergrund
  • Elektronische Komponenten in Systemen (etwa integrierte Schaltungen und andere elektrische Bauelemente) treten miteinander in Verbindung über definierte Schnittstellen, etwa Verbindungen zwischen den einzelnen Komponenten. Die Daten werden über die Verbindungen üblicherweise in Bezug auf ein Signal übertragen. D. h., es werden Daten in Reaktion auf ein Taktsignal auf die Verbindung gelegt und abgegriffen. In der jüngeren Vergangenheit wurden Verbindungen mit doppelter Datenrate definiert, in denen Daten gemäß der ansteigenden Flanke und der abfallenden Flanke des Taktsignals auf die Leitung gelegt/und davon abgegriffen werden.
  • Die Frequenz des mit einer Verbindung verknüpften Taktsignals zusammen mit einer Breite (in Bits der übertragenen Daten) definiert die Bandbreite der Verbindung (die Datenmenge, die pro Einheitszeit übertragen wird). Eine Möglichkeit zur Vergrößerung der Bandbreite (und auch zur Verringerung der Verarbeitungszeit für größere Übertragungen) besteht darin, die Taktfrequenz zu erhöhen. Mit einer Vergrößerung der Frequenz steigt aber auch die Fehlerrate an, da Faktoren, etwa das Rauschen, die Taktunsicherheit, die Verzögerung, die Anstiegs- und Abfallzeiten, etc. ebenfalls zu wichtigen Faktoren in dem kürzeren Taktsignalzyklus werden. Anders ausgedrückt, die Daten sind auf der Verbindung für eine kürzere Zeitdauer vorhanden, und der Toleranzbereich für die Fehler wird daher geringer. Gleichzeitig steigt die Fehlerrate auf ein Niveau an, das die Zuverlässigkeit beeinflusst.
  • Um die erhöhte Fehlerrate zu vermeiden, kann eine Fehlererkennung (und möglicherweise Korrektur) auf der Verbindung eingerichtet werden. Beispielsweise wird häufig eine zyklische Redundanzprüfung (CRC) auf Verbindungen eingerichtet. Bei einer CRC ist jede Datenübertragung auf der Verbindung von einer CRC-Codierung begleitet, die aus den Daten erzeugt wird. Der Empfänger kann die gleiche CRC-Codierung erzeugen und kann die er zeugte CRC-Codierung mit der empfangenen Codierung zur Erkennung eines Fehlers vergleichen. Der Empfänger kann den Fehler an den Sender übertragen, der die Daten erneut übertragen kann oder andere Korrekturaktionen ergreifen kann.
  • Für relativ große Datenübertragungen beeinflusst das Hinzufügen der CRC-Codierung am Ende der Übertragung die Bandbreite nicht wesentlich (da die hinzugefügte Codierung klein ist im Vergleich zu den übertragenen Daten). Jedoch beeinflusst die CRC-Codierung die Verarbeitungszeit, da der Empfänger im Allgemeinen die gesamten Daten speichern muss, die durch die CRC abgedeckt sind, bis die CRC empfangen wird. Wenn die CRC angibt, dass die Daten korrekt sind, können die Daten weitergeleitet werden. In vielen Fällen sind die ersten Daten bei der Übertragung die kritischsten Daten (beispielsweise in Speichersystemen, in denen die Daten, die aktuell angefordert werden, zuerst übertragen werden, woran sich der Rest des Speicherblocks für die Speicherung anschließt). In derartigen Fällen ist eine Erhöhung der Verarbeitungszeit einer Reduzierung des Leistungsverhaltens gleichbedeutend.
  • Ferner sind in kohärenten Systemen viele der Übertragungen zwischen den einzelnen Komponenten relativ kurze Nachrichten (beispielsweise Sondierungsabfragen für die jüngsten Kopien der Daten, Sondierungsantworten, Angaben für die erfolgte Abarbeitung für die Quelle und das Ziel, etc.). Der Einfluss der CRC auf diese kleinen Nachrichten ist wesentlich, wodurch die Größe der Nachrichten um bis zu 100% (für eine Nachricht, die die gleiche Größe wie die CRC-Codierung besitzt) erhöht wird. Eine Zunahme der Größe von 50% oder 33% sind ebenfalls üblich. In kohärenten Systemen erfolgt eine große Zahl der Übertragungen über diese Verbindungen als derartige kleine Nachrichten, so dass die größere beanspruchte Bandbreite durch das Hinzufügen von CRC wesentlich ist.
  • Überblick über die Erfindung
  • In einer Ausführungsform ist ein Verarbeitungsknoten ausgebildet, sich an eine Verbindung anzukoppeln. Der Knoten umfasst eine Sendeschaltung, die ausgebildet ist, Pakete über die Verbindung zu übertragen, wobei jedes Paket eine oder mehrere Zellen umfasst. Der Knoten umfasst ferner eine Zellendisponiereinheit, die mit der Sendeschaltung verbunden und ausgebildet ist, Zellen für das Senden mittels der Sendeschaltung zu disponieren. Die Zellendisponiereinheit ist ausgebildet, mindestens eine Fehlererkennungszelle für das Sen den zu disponieren, wobei die Fehlererkennungszelle ein vorhergehendes Paket betrifft, und wenn ein zweites Paket für das Disponieren verfügbar ist, ist die Zellendisponiereinheit ausgebildet, Zellen des zweiten Pakets anstelle der Fehlererkennungszelle zu disponieren. Wenn die Fehlerkennungszelle nachfolgend disponiert bzw. für das Übertragen ausgewählt wird, ist sie für das vorhergehende Paket und das zweite Paket zuständig.
  • In einer weiteren Ausführungsform ist ein Knoten ausgebildet, um sich an eine Verbindung anzukoppeln und umfasst eine Paketdisponiereinheit, die ausgebildet ist, Pakete, die über die Leitung zu senden sind, zu disponieren; ferner ist eine Schnittstellenschaltung mit der Paketdisponiereinheit verbunden. Die Schnittstellenschaltung ist ausgebildet, die Pakete auf der Leitung zu übertragen und Fehlererkennungsdaten, die die Pakete abdecken, zu erzeugen. Die Fehlererkennungsdaten werden zwischen Paketen auf der Leitung übertragen, und die Schnittstellenschaltung ist ausgebildet, bis zu N Pakete mit einer einzelenen Übertragung an Fehlererkennungsdaten abzudecken (wobei N eine Ganzzahl größer oder gleich 2 ist). Die Anzahl der mit einer einzelnen Übertragung an Fehlererkennungsdaten abgedeckten Paketen wird durch die Schnittstellenschaltung in Abhängigkeit von der Verfügbarkeit von zu sendenden Paketen bestimmt.
  • In einer weiteren Ausführungsform ist ein Knoten ausgebildet, sich an eine Verbindung anzukoppeln und umfasst eine Paketdisponiereinheit, die ausgebildet ist, auf der Verbindung zu übertragende Pakete zu disponieren. Mit der Paketdisponiereinheit verbunden und zum Übertragen der Pakete auf der Leitung ausgebildet ist eine Schnittstellenschaltung, die ferner ausgebildet ist, Fehlererkennungsdaten, die die Pakete abdecken, zu erzeugen. Die Schnittstellenschaltung ist ausgebildet, den Betrag einer Bandbreite, die auf der Leitung benötigt wird, zu überwachen und eine Frequenz bzw. Häufigkeit des Sendens von Fehlererkennungsdaten auf der Verbindung auf der Grundlage der Größe der Bandbreite dynamisch zu variieren.
  • Kurze Beschreibung der Zeichnungen
  • Die folgende detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nunmehr kurz beschrieben werden.
  • 1 ist eine Blockansicht einer Ausführungsform eines Computersystems.
  • 2 ist eine Blockansicht einer Ausführungsform zweier in 1 gezeigter Knoten, die detaillierter dargestellt sind.
  • 3 ist eine Blockansicht zur Darstellung einer Ausführungsform von Steuerfeldern für ein Steuerregister.
  • 4 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform einer Zellendisponiereinheit, die in 2 gezeigt ist, darstellt, um eine Befehlszelle zu disponieren.
  • 5 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform einer in 2 gezeigten Zellendisponiereinheit darstellt, um eine Datenzelle zu disponieren.
  • 6 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform einer in 2 gezeigten Zellendisponiereinheit zeigt, um den CRC-Ablauf dynamisch zu variieren.
  • 7 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform eines Empfängers zeigt.
  • 8 ist eine Tabelle, die eine Ausführungsform der Steuercodierungen auf der Verbindungsleitung darstellt.
  • 9 ist eine Blockansicht, die Beispiele der in 8 gezeigten Codierungen darstellt.
  • 10 ist eine Tabelle, die eine weitere Ausführungsform von Steuercodierungen auf der Verbindungsleitung zeigt.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind dennoch spezielle Ausführungsformen beispielhaft in den Zeichnungen gezeigt und werden hierin detailliert beschrieben. Es sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte Beschreibung nicht beabsichtigen, die Erfindung auf die speziell offenbarte Form einzuschränken, sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente und Alternativen abdecken, die innerhalb des Grundgedankens und des Schutzbereichs der vorliegenden Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert ist.
  • Art bzw. Arten zum Ausführen der Erfindung
  • Die nachfolgende Beschreibung betrifft ein Computersystem, in welchem Fehlererkennungsdaten auf seinen Verbindungsleitungen eingerichtet sind. Jedoch kann ein beliebiges elektronisches System, das Daten auf Verbindungen zwischen Komponenten austauscht, für das Einrichten der hierin beschriebenen Funktionen verwendet werden. Im Allgemeinen umfasst eine Verbindung bzw. ein Verbindungskanal einen Kommunikationsweg von einer Komponente zu einer anderen. Die Verbindung kann bidirektional oder unidirektional in den diversen Ausführungsformen sein. Die Verbindung besitzt eine bestimmte Breite und es sind ein oder mehrere Taktzyklen mit der Verbindung verknüpft, so dass Daten auf die Verbindung gemäß den Taktsignalen gelegt werden. Ferner wird die CRC als ein Beispiel von Fehlererkennungsdaten verwendet. Im Allgemeinen wird die CRC als eine Kombination der Datenbits, die durch die CRC abgedeckt sind, gemäß einer vordefinierten Formel erzeugt, die sowohl von dem Sender als auch dem Empfänger angewendet wird. Es können jedoch beliebige Fehlererkennungsdaten verwendet werden. Im Allgemeinen umfassen die Fehlererkennungsdaten redundante Daten, die eine Erkennung (und optional eine Korrektur) von Fehlern in den gesendeten Daten ermöglichen. Beispielsweise können die Fehlererkennungsdaten auf der Grundlage der Parität erzeugt werden, oder können ähnlich sein zu diversen Fehlererkennungs-/Korrekturcodierungen (ECC), die in Speichersystemen verwendet werden, etwa solche, die Einzelbitfehler negieren und Doppelbitfehler erkennen. Es können auch ECC-Codierungen, die größere Anzahlen an Fehlern korrigieren und erkennen, verwendet werden. Fehlererkennungsdaten können basieren auf Hamming-Codierungen oder Reed-Solomon-Codierungen, um ein Beispiel zu nennen, oder auf anderen Codierungen, die zum Erkennen und/oder zum Korrigieren von Fehlern definiert werden. Eine Instanz an Fehlererkennungsdaten wird auch als eine „Abdeckung” eines Datensatzes bezeichnet. Die Fehlererkennungsdaten decken die Daten ab, wenn ein Fehler in den Daten unter Anwendung der Fehlererkennungsdaten erkennbar ist (obwohl die Fehlererkennungsdaten Grenzen besitzen, und somit ein eventuell ausreichend großer Fehler in den Daten nicht erkannt werden kann, selbst wenn die Fehlererkennungsdaten die fehlerhaften Daten abdecken).
  • In 1 ist eine Ausführungsform eines Computersystems 300 gezeigt. In der Ausführungsform aus 1 umfasst das Computersystem 300 mehrere Verarbeitungsknoten 312A, 312B, 312C und 312G. Jeder Verarbeitungsknoten ist an einen jeweiligen Speicher 314A314D über eine Speichersteuerung 316A316D gekoppelt, die in dem jeweiligen Verarbeitungsknoten 312A312D enthalten ist. Des weiteren umfassen die Verarbeitungsknoten 312A312D eine Schnittstellenschaltung, um eine Kommunikation zwischen dem Verarbeitungsknoten 312A312D zu ermöglichen. Beispielsweise enthält der Verarbeitungsknoten 312A eine Schnittstellenschaltung 318A zur Kommunikation mit dem Verarbeitungsknoten 312B, eine Schnittstellenschaltung 318B zur Kommunikation mit dem Verarbeitungsknoten 312C und eine Schnittstellenschaltung 318C zur Kommunikation mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise umfasst der Verarbeitungsknoten 312B Schnittstellenschaltungen 318D, 318E und 318F; der Verarbeitungsknoten 312C umfasst Schnittstellenschaltungen 318B, 318H und 318I; und der Verarbeitungsknoten 312D umfasst Schnittstellenschaltungen 318J, 318H und 318L. Der Verarbeitungsknoten 312D ist so angeschlossen, dass er mit mehreren Eingabe/Ausgabe-Einheiten (beispielsweise die Einheiten 320A320B in einer Prioritätskettenkonfiguration) über die Schnittstellenschaltung 318L kommunizieren kann. Andere Verarbeitungsknoten können mit anderen I/O-Einheitenin in ähnlicher Weise in Verbindung treten.
  • Die Verarbeitungsknoten 312A312D verwenden eine paketbasierte Schnittstelle für die Kommunikation zwischen den Verarbeitungsknoten. In der vorliegenden Ausführungsform ist die Schnittstelle als Gruppe aus unidirektionalen Leitungen bzw. Verbindungen eingerichtet (beispielsweise Verbindungen 324A werden verwendet, um Pakete von dem Verarbeitungsknoten 312A zu dem Verarbeitungsknoten 312B zu übertragen, und Verbindungen 324B werden verwendet, um Pakete von dem Verarbeitungsknoten 321B zu dem Verarbeitungsknoten 312A zu übertragen). Andere Gruppen aus Verbindungen 324C bis 324H werden verwendet, um Pakete zwischen anderen Verarbeitungsknoten auszutauschen, wie dies in 1 gezeigt ist. Im Allgemeinen kann jede Gruppe aus Verbindungen 324 eine oder mehrere Datenleitungen, eine oder mehrere Taktsignalleitungen entsprechend den Datenleitungen und eine oder mehrere Steuerleitungen aufweisen, die die Art des zu übertragenden Pakets angeben. Die Verbindung kann in einer mit dem Cache-Speicher kohärenten Weise zur Kommunikation zwischen Verarbeitungsknoten betrieben werden und kann in einer nicht kohärenten Weise zur Kommunikation zwischen einem Verarbeitungsknoten und einer I/O-Einheit betrieben werden (oder zwischen einer Busbrücke und einem I/O-Bus mit konventionellem Aufbau, etwa den peripheren Komponentenverbindung-(PCI)Bus oder den Bus mit industrieller Standardarchitektur (ISA)). Ferner kann die Verbindung in einer nicht-kohärenten Weise unter Anwendung einer Prioritätskettenstruktur zwischen I/O-Einheiten betrieben werden, wie dies gezeigt ist. Zu beachten ist, dass ein von einem Verarbeitungsknoten zu einem weiteren Verarbeitungsknoten zu übertragendes Paket durch einen oder mehrere dazwischen liegende Knoten geleitet werden kann. Beispielsweise kann ein Paket, das von dem Verarbeitungsknoten 312A zu dem Verarbeitungsknoten 312B übertragen wird, durch den Verarbeitungsknoten 312B oder den Verarbeitungsknoten 321C laufen, wie dies in 1 gezeigt ist. Es kann ein beliebiger Signalführungsalgorithmus verwendet werden. In anderen Ausführungsformen des Computersystems 300 können mehr oder weniger Verarbeitungsknoten als in der in 1 gezeigten Ausführungsform enthalten sein.
  • Im Allgemeinen werden die Pakete als eine oder mehrere Bitzeiten auf den Verbindungen 324 zwischen den Knoten ausgetauscht. Eine gegebene Bitzeit kann auf die ansteigende Flanke oder die abfallende Flanke des Taktsignals auf den jeweiligen Taktsignalleitungen bezogen werden. D. h., sowohl die ansteigende Flanke als auch die abfallende Flanke können für den Datenaustausch verwendet werden, so dass die Datenrate das Doppelte der Taktfrequenz ist (doppelte Datenrate oder DDR). Die Pakete können Anforderungspakete zum Initiieren von Transaktionen, Sondierungspakete bzw. Abfragepakete zur Beibehaltung der Cache-Kohärenz und Antwortpakete zum Reagieren auf Abfragen oder Sondierungen und Anforderungen (und zum Angeben des Abschlusses durch die Quelle/das Ziel einer Transaktion) enthalten. Einige Pakete können eine Datenbewegung angeben, und die bewegten Daten sind in den Datenbewegungspaketen enthalten. Beispielsweise enthalten Schreibanforderungen Daten. Sondierungsantworten mit „schmutzigen oder dirty” Daten und Leseantworten enthalten beide Daten. Somit kann im Allgemeinen ein Paket einen Befehlsbereich, der das Paket definiert, dessen Quelle und Bestimmung, etc. enthalten. Ein Paket kann optional einen Datenbereich aufweisen, der sich an den Befehlsbereich anschließt. Die Daten können die Größe eines Cache-Blockes besitzen, für kohärente Operationen, die zwischenspeicherbar sind, oder die Daten können kleiner sein (beispielsweise für Lese/Schreiboperationen, die nicht im Cache speicherbar sind).
  • Die Verarbeitungsknoten 312A312D enthalten zusätzlich zu einer Speichersteuerung und zur Schnittstellenlogik einen oder mehrere Prozessoren. Allgemein gesagt, kann ein Verar beitungsknoten zumindest einen Prozessor und optional eine Speichersteuerung zur Kommunikation mit einem Speicher und anderen Logikschaltungen nach Bedarf umfassen. Ein oder mehrere Prozessoren können eine integrierte Schaltung mit Chip-Multiprozessierung (CMP) oder Chip-Multistrangverarbeitung bzw. „Threading” (CMT) in dem Verarbeitungsknoten enthalten oder diese können den Verarbeitungsknoten bilden, oder der Verarbeitungsknoten kann eine beliebige gewünschte innere Struktur besitzen. Es kann ein beliebiger Grad an Integration oder es kann eine beliebige Anzahl diskreter Komponenten in einem Knoten verwendet sein. Andere Arten von Knoten enthalten eine beliebige gewünschte Schaltung und die Schaltung für die Kommunikation über die Verbindungen. Beispielsweise sind in einer Ausführungsform die I/O-Einheiten 320A320B I/O-Knoten.
  • Die Speicher 314A bis 314D umfassen beliebige geeignete Speichereinheiten. Beispielsweise umfasst ein Speicher 314A bis 314D einen oder mehrere RAMBUS DRAM's (RDRAM's), synchrone DRAM's (SDRAM's), DDR SDRAM's, statische RAM's, etc. Der Adressenraum des Computersystems 300 ist auf die Speicher 314A bis 314D aufgeteilt. Jeder Verarbeitungsknoten 312A312D enthält eine Speicherzuordnung, die verwendet wird, um zu bestimmen, welche Adressen welchen Speichern 314A314D zugeordnet sind, und somit welchem Verarbeitungsknoten 312A312D eine Speicheranforderung für eine spezielle Adresse zuzuleiten ist. In einer Ausführungsform ist der Kohärenzpunkt für eine Adresse innerhalb eines Computersystems 310 die Speichersteuerung 316A bis 316D, die mit dem Speicher verbunden ist, der Bytes entsprechend der Adresse enthält. Anders ausgedrückt, die Speichersteuerung 316A316D ist dafür verantwortlich sicherzustellen, dass jeder Speicherzugriff auf den jeweiligen Speicher 314A314D in einer mit dem Speicher kohärenten Weise erfolgt. Die Speichersteuerungen 316A316D umfassen Steuerschaltungen zur Verbindung mit den Speichern 314A314D. Des weiteren enthalten die Speichersteuerungen 316A316D Anforderungswarteschlangen bzw. Puffer, um Speicheranforderungen in einer Reihenfolge zu speichern.
  • Im Allgemeinen umfassen Schnittstellenschaltungen 318A318L eine Vielzahl von Puffern für das Empfangen von Paketen aus der Verbindung und für das Speichern von Paketen, die über die Verbindung zu senden sind. Das Computersystem 300 kann einen beliebigen geeigneten Flusssteuermechanismus zum Senden von Paketen anwenden. Beispielsweise speichert in einer Ausführungsform jede Schnittstellenschaltung 318 die Zahl jeder Art an Puffern innerhalb des Empfängers am anderen Ende der Verbindung, mit der die Schnitt stellenlogik verbunden ist. Die Schnittstellenlogik sendet kein Paket, sofern die empfangende Schnittstellenlogik nicht einen freien Puffer zur Speicherung des Pakets aufweist. Wenn ein empfangender Puffer nach Weiterleiten eines Pakets frei wird, sendet die empfangende Schnittstellenlogik eine Nachricht zu der sendenden Schnittstellenlogik, um anzuzeigen, dass der Puffer wieder verfügbar ist. Ein derartiger Mechanismus wird als „couponbasiertes” System bezeichnet.
  • Die I/O-Einheiten 320A320B sind beliebige geeignete I/O-Einheiten bzw. Geräte. Beispielsweise umfassen die I/O-Einheiten 320A320B Einheiten zur Kommunikation mit einem weiteren Computersystem, mit welchem die Einheiten verbunden sind (beispielsweise Netzwerkschnittstellenkarten oder Modems). Ferner können die I/O-Einheiten 320A, 320B Videobeschleuniger, Audio-Karten, Festplatten oder Diskettenlaufwerke oder Laufwerkssteuerungen, SCSI (Kleincomputersystemschnittstellen-)Adapter und Telefonkarten, Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB- oder Feldbusschnittstellenkarten umfassen. Des weiteren kann eine beliebige I/O-Einheit, die als eine Karte eingebettet ist, auch in Form einer Schaltung auf der Hauptplatine des Systems 300 ausgebildet sein und/oder kann als Software vorgesehen sein, die in einem Verarbeitungsknoten ausgeführt wird. Zu beachten ist, das der Begriff „I/O-Einheit” und der Begriff „peripheres Gerät” hierin als Synonym zu betrachten sind.
  • Ferner sind ein oder mehrere Prozessoren in einer mehr traditionellen Struktur eines Personalcomputers (PC) eingerichtet, der eine oder mehrere Schnittstellen der Prozessoren einer Brücke zu einer oder mehreren I/O-Zwischenverbindungen und/oder Speicher enthält.
  • In einer Ausführungsform sind die Verbindungen 324A324H mit der Hyper-Transport (HT) Spezifikation kompatibel, die von dem HT-Konsortium erstellt wurde, wobei speziell die Version 3 hier genannt sei. Das Protokoll auf den Verbindungen wird von der HT-Spezifikation modifiziert, um die Kohärenz auf den Verbindungen zu unterstützen, wie dies zuvor beschrieben ist. Jedoch können in anderen Ausführungsformen andere Verbindungen und ein entsprechendes beliebiges Protokoll dazu eingerichtet sein. Des weiteren können die hierin beschriebenen CRC-Techniken für nicht-kohärente Verbindungen ebenfalls verwendet werden.
  • In 2 ist eine Blockansicht einer Ausführungsform der Verarbeitungsknoten 312A312B gezeigt, wobei zusätzliche Details einer Ausführungsform der Knoten gezeigt sind. In der dargestellten Ausführungsform umfasst der Verarbeitungsknoten 312A die Schnittstellenschaltung 318, wie sie in 1 gezeigt ist, sowie eine Paketdisponiereinheit bzw. eine Paketauswahleinheit 24, einen Historienpuffer 26 und einen Prozessorkern 28. Insbesondere enthält die Schnittstellenschaltung 318A eine Empfängerschaltung 10, eine Sendeschaltung 12, eine Zellendisponiereinheit 14 (mit einem CRC-Generator 16), eine Zellenwarteschlange bzw. einen Zellenspeicher 18, einen Auslastungszähler 20 und ein oder mehrere Steuerregister 22. Der Empfänger 10 ist mit der Verbindung 324B verbunden, um Pakete von dem Verarbeitungsknoten 321B zu empfangen und ferner ist der Empfänger mit der Paketdisponiereinheit 24 verbunden. Das Steuerregister 22 und der Auslastungszähler 20 sind mit der Zellendisponiereinheit 14 verbunden, die ihrerseits mit der Sendeschaltung 12 und der Zellenwartenschlange 18 verbunden ist. Die Zellenwarteschlange 18 ist mit der Sendeschaltung 12 und der Paketdisponiereinheit 24 verbunden. Die Sendeschaltung 12 ist mit der Verbindung 324A verbunden, um Pakete zu dem Verarbeitungsknoten 312B zu übertragen. Die Paketdisponiereinheit 24 ist ferner mit dem Historienpuffer 24, dem Prozessorkern 24 und diversen anderen Paketquellen verbunden.
  • Der Verarbeitungsknoten 321B umfasst die Schnittstellenschaltung 318D, die in 1 gezeigt ist, sowie eine Paketdisponiereinheit 40, einen Datenpuffer 42 und einen Befehlspuffer 44. Die Schnittstellenschaltung 318D umfasst einen Bestätigungs-(Ack)Zähler 30, eine CRC-Prüfschaltung 32, einen Zellenwarteschlange- bzw. einen Zellenpuffer 34, eine Empfangsschaltung 36 und eine Sendeschaltung 38. Die Empfangschaltung 36 ist mit der Verbindung 324A, der Zellenwarteschlange 34 und der CRC-Prüfschaltung 32 verbunden. Die CRC-Prüfschaltung 32 ist mit dem Ack-Zähler 30 verbunden (der ferner mit dem Sender 38 verbunden ist) und ist mit der Zellenwartschlange 34 verbunden (die ferner mit der Paketdisponiereinheit 40, dem Datenpuffer 42 und dem Befehlspuffer 44 verbunden ist). Die Sendeschaltung 38 ist mit der Verbindung 324B verbunden.
  • Die Verbindung 324A ist detaillierter in 2 gezeigt und umfasst CAD[n:0], CTL[m:0] und CLK[m:0]. Die CAD-Leitungen übertragen Paketbitzeiten und die CLK-Leitungen enthalten eine oder mehrere Taktsignalleitungen, auf die die Bitzeiten überzogen sind. Die CTL-Leitungen geben die Art der in einer gegebenen Bitzeit übertragenen Daten an, wie dies nachfolgend detaillierter beschrieben ist. Es gibt n CAD-Leitungen, wobei n eine ganzzahli ge Potenz von zwei als Vielfaches von 8 – 1 ist. D. h. n kann 7, 15, 31, etc. sein. Somit werden Bytes mit einer Anzahl von der Größe einer Zweierpotenz von 2 über die CAD-Leitungen pro Bitzeit übertragen. Es gibt m CLK- und CTL-Leitungen, wobei m gleich n + 1 geteilt durch 8 ist. D. h., es gibt eine CLK-Leitung und eine CTL-Leitung pro Byte CAD. Die CLK-Leitung ist die Taktsignalreferenz für die entsprechenden 8 CAD-Leitungen.
  • Obwohl diverse Ausführungsformen unterschiedliche Breiten besitzen, wird die minimale Einheit des Datenaustausches auf der Leitung als eine Zelle definiert. D. h., es ist kein Paket auf der Leitung kleiner als eine einzelne Zelle und Pakete besitzen eine Länge von ganzzahligen Vielfachen von Zellen. Eine Zelle kann in den diversen Ausführungsformen eine beliebige Größe besitzen, aber diese beträgt 32 Bits (4 Bytes) in einer Ausführungsform. Wenn die Verbindung schmäler ist als eine Zelle wird beim Beginn des Übertragens einer Zelle der Rest dieser Zelle nacheinander übertragen. Beispielsweise sind eine 32 Bit-Zelle und eine 16 Bit-Verbindung eingerichtet und somit wird jede Zelle als zwei aufeinander folgende Bitzeiten auf den CAD-Leitungen übertragen. Die Paketdisponiereinheit 24 disponiert ein Paket für das Senden auf der Leitung 324A und kann die Zellen des Pakets zur Zellenwarteschlange 18 übertragen (oder kann veranlassen, dass die Zellen stets zu der Zellenwarteschlange 18 übertragen werden, wenn diese nicht in der Paketdisponiereinheit 24 gespeichert sind). Die Zellendisponiereinheit 14 kann Zellen aus der Zellenwarteschlange 18 für das Senden mittels der Sendeschaltung 12 disponieren bzw. auswählen. Im Allgemeinen werden Zellen eines Pakets während aufeinanderfolgender Bitzeiten ausgewählt bzw. disponiert, obwohl einige nicht-Datenbewegungspakete innerhalb der Daten eines vorhergehenden Datenbewegungspakets gemäß einer Ausführungsform disponiert werden können. Wenn eine Zelle disponiert wird, veranlasst die Zellendisponiereinheit 14 die Zellenwarteschlange 18, die Zelle an die Sendeschaltung 12 auszugeben, die die Zelle auf der Leitung 324A überträgt (mit geeigneten CTL-Leitungscodierungen). Wenn eine Zelle nicht disponiert ist, erzeugt die Zellendisponiereinheit 14 einen keine-Operation-(Noop)Befehl für das Senden. Der Noop-Befehl kann Pufferfreigabefelder gemäß einer Ausführungsform enthalten, um anzugeben, dass Puffer in dem Knoten 312A verfügbar sind, um Pakete von dem Knoten 312B zu empfangen. Die Pufferfreigabezahlen werden von der Schnittstellenschaltung 318A bewahrt, oder werden durch die Paketdisponiereinheit 24 in diversen Ausführungsformen bereitgestellt.
  • Die Zellendisponiereinheit ist ausgebildet, eine CRC für jedes Paket (unter Anwendung des CRC-Generators 14) zu erzeugen. Als Voreinstellung kann die Zellendisponiereinheit 14 die CRC für ein Paket am Ende dieses Paketes anhängen, so dass eine Fehlererkennung auf der Verbindung pro Paket ermöglicht wird. In einer Ausführungsform umfasst die CRC eine einzelne Zelle aus Daten, obwohl in anderen Ausführungsformen mehrere Zellen an CRC eingerichtet sein können. Nach dem Disponieren der letzten Zelle des Pakets kann die Zellendisponiereinheit 14 die CRC-Zelle bzw. Zellen disponieren.
  • In einer Ausführungsform ist die Schnittstellenschaltung 318A (und insbesondere die Zellendisponiereinheit 14) ausgebildet, zwei oder mehr Pakete zusammenzupacken bzw. zusammenzustellen und diese mit einer einzelnen CRC zu schützen. D. h., anstatt ein erstes Paket und dessen CRC und danach ein zweites Paket mit dessen separater CRC zu senden, kann die Zellendisponiereinheit 14 das erste Paket senden, woran sich das zweite Paket anschließt, woran sich ein einzelner Übertragungsvorgang für die CRC anschließt, die beide Pakete abdeckt. In einigen Ausführungsformen werden mehr als zwei Pakete zusammengestellt (beispielsweise bis zu N Paketen, wobei N eine Ganzzahl größer oder gleich zwei ist). Durch Zusammenstellen von Paketen für eine einzelne CRC-Übertragung kann der zusätzliche Aufwand für CRC-Übertragungen auf der Verbindung verringert werden, im Vergleich zu einer CRC die pro Paket stattfindet. Insbesondere für kleine Pakete kann die Verringerung des CRC-Aufwandes deutlich den Bandbreitenverbrauch auf der Leitung verringern. In einer Ausführungsform werden Pakete zusammengestellt, wenn ein Paket für das Senden verfügbar ist (beispielsweise in der Zellenwarteschlange 18) am oder in der Nähe des Endes der Übertragung der letzten Zelle des vorhergehenden Pakets. Insbesondere disponiert in einer Ausführungsform die Zellendisponiereinheit 14 die letzte Zelle eines Pakets und bestimmt, ob die CRC oder ein weiteres Paket zu disponieren bzw. zum Senden vorzusehen ist auf der Grundlage, ob eine Zelle oder Zellen des anderen Pakets in der Zellenwarteschlange 18 sind oder nicht.
  • In einer speziellen Ausführungsform ist die Zellendisponiereinheit 14 ausgebildet, Pakete zusammenzustellen, die jeweils einen Befehl enthalten, aber keine Daten enthalten (beispielsweise datenlose Pakete oder Pakete mit nur Befehlen). Da häufig Kommunikationsereignisse auf einer kohärenten Verbindung zur Bewahrung der Kohärenz auftreten, wobei dabei keine Daten enthalten sind, ist das Auftreten derartiger Pakete auf einer kohärenten Leitung sehr ausgeprägt (obwohl das Zusammenstellen auch auf einer nicht-kohärenten Verbindung eingerichtet werden kann). Auf einer kohärenten Verbindung enthalten z. B. nur-Befehl-Pakete Sondierungsanfragen, gewisse Sondierungsantworten, Leseanforderungen und Antworten über den Abschluss von Aktionen. In einer Ausführungsform umfassen nur-Befehl-Pakete 1 bis 3 Zellen, wobei dies von der Befehlsgröße und Adressengröße in dem System abhängt. Mit einer einzelligen CRT und zwei einzelligen Befehlen führt das Zusammenstellen lediglich zweier Pakete zusammen mit einer CRC-Übertragung zu einer 25% Verringerung des Bandbreitenbedarfs (von 4 Zellen auf 3 Zellen).
  • In einer Ausführungsform ist die Zellendisponiereinheit 14 ausgebildet, eine oder mehrere CRC-Teilübertragungen innerhalb eines Pakets einzufügen. Jede Teil-CRC deckt den Bereich des Pakets ab, der dem Einschub vorangeht (kumulativ in Bezug auf den Beginn des Pakets, selbst wenn andere Teil-CRC-Einschübe gemacht wurden). Beispielsweise können ein Befehlspaket und ein Datenpaket eine relativ große Länge besitzen und das Weiterleiten der ersten übertragenen Daten kann für das gesamte Leistungsverhalten wichtig sein. Durch Einfügen einer Teil-CRC nach den ersten Daten, die dann weitergeleitet werden, können die ersten Daten mit der Teil-CRC beim Empfänger geprüft und dann weitergeleitet werden. Wenn ein Fehler in einer späteren CRC erkannt wird, ist weiterhin bekannt, dass die weitergeleiteten Daten korrekt sind und diese können verwendet werden. Dieses Leistungsverhalten kann verbessert werden, wenn ein frühes Weiterleiten von Daten in einigen Ausführungsformen erlaubt ist.
  • In diversen Ausführungsformen werden sowohl die CRC-Zusammenstellung als auch die Teil-CRC-Einfügung oder nur ein Aspekt davon nach Bedarf realisiert.
  • Die CRC-Zusammenstellung bzw. das CRC-Packen und der CRC-Teileinschub sind in dem Steuerregister 22 programmierbar. Insbesondere kann das Zusammenstellen bzw. Packen und/oder das Einfügen freigegeben werden. Wenn mehr als ein Paket zusammengestellt wird, kann auch die maximale Zahl der zu zusammenstellenden Pakete einstellbar sein. Wenn mehrere Teil-CRC-Einfügepunkte innerhalb eines Pakets unterstützt werden, kann auch programmiert sein, welche Einfügepunkte zu verwenden sind.
  • In einer Ausführungsform wird das Paketzusammenstellen und die CRC-Teileinfügung dynamisch gesteuert. Im Allgemeinen kann die Disponiereinheit 14 die Größe der Bandbreite, die auf der Leitung 324A erforderlich ist, überwachen und kann die CRC-Übertragungen gemäß der Bandbreite einstellen. In einer Ausführungsform werden Zellen bei jeder Bitzeit auf der Leitung übertragen. Wenn es keine Zellen zu senden gibt, werden Noop-Befehle übertragen. Somit kann die Zellendisponiereinheit 14 Noop-Befehle als unverbrauchte Bandbreite und andere Zellen als benötigte Bandbreite (Paketzellen, CRC-Zellen, etc.) werten. Wenn der Bandbreitenverbrauch hoch ist (beispielsweise einen Schwellwert übersteigt), kann die CRC-Paketzusammenstellung (falls diese aktiviert ist) ausgeführt werden, um den CRC-Bandbreitenverbrauch zu verringern. Des weiteren kann die Teil-CRC-Einfügung temporär gestoppt werden (oder verringert, wenn mehrere CRC-Einfügungen ausgeführt werden). Die Bandbreite kann separat für die Steuerung der CRC-Paketzusammenstellung und für die Steuerung der Teil-CRC-Einfügung bei Bedarf gemessen werden.
  • In der gezeigten Ausführungsform wird der Auslastungszähler 20 verwendet, um die Bandbreite zu ermitteln. Der Zähler kann beispielsweise ein Sättigungszähler sein, der für jede nicht-Noop-Zelle erhöht wird und für jede Noop-Zelle herabgesetzt wird. Somit ist der Auslastungszähler eine Annäherung an den jüngsten Bandbreitenverbrauch. Auf Grundlage des Auslastungszählerwertes können die CRC-Paketzusammenstellung und Detail-CRC-Einfügung dynamisch variiert werden.
  • Die Empfangsschaltung 36 kann die Zellen von der Verbindung 324A empfangen. Auf der Grundlage von Codierungen der CTL-Leitungen und möglicherweise auf der Grundlage der Decodierung innerhalb der Zelle kann die Empfangsschaltung 36 bestimmen, dass die Zelle ein Befehl oder Daten in dem Paket repräsentieren (oder einen eingefügten Befehl, einen gepackten Befehl oder eine Teil-CRC). Die Empfangsschaltung 36 kann die empfangenen Zellen (und Decodier/Steuer-Daten) in der Zellenwarteschlange 34 speichern und kann die Zelle auch zu der CRC-Prüfschaltung 32 weitergeben. Schließlich wird eine CRC-Zelle empfangen und mit der durch die CRC-Prüfschaltung 32 erzeugten CRC verglichen, um einen Fehler zu erkennen, oder um die empfangenen Zellen als zulässig zu erklären. Wenn kein Fehler auftritt, kann die CRC-Prüfschaltung 32 der Zellenwarteschlange 34 mitteilen, die validierten Zellen weiterzuleiten. Des weiteren erhöht die CRC-Prüfschaltung 32 den Ack-Zähler 30, wenn ein vollständiges Paket ohne Fehler empfangen wurde. Der Wert des Ack-Zählers 30 kann den Verarbeitungsknoten 312A mittels der Sendeschaltung 38 als ein Ack-Paket auf der Leitung 324B zugeleitet werden, um erfolgreich empfangene Pakete zu bestätigen. Der Verarbeitungsknoten 312A kann gesendete Pakete behalten (beispielswei se über den Historienpuffer 26), bis bekannt ist, dass diese in korrekter Weise in dem Verarbeitungsknoten 312B empfangen wurden. Wenn das Ack-Paket empfangen wird (und mittels dem Empfänger 10 der Paketdisponiereinheit 24 zugeleitet ist), können die entsprechenden Pakete gelöscht werden.
  • Im Allgemeinen leitet die Schnittstellenschaltung 318D validierte Paketdaten zu einem Ziel weiter. Das Ziel kann ein internes Ziel sein (beispielsweise ein Prozessor oder eine andere Schaltung innerhalb des Knotens 312B) oder kann ein externes Ziel sein. Der erste Schritt beim Weiterleiten zu dem Ziel besteht darin, die Zellen in einen Befehlspuffer 44 oder einen Datenpuffer 42 zu schreiben (abhängig davon, ob die Zellen Befehlszellen oder Datenzellen sind). Die Schnittstellenschaltung 138D stellt ferner Information im Hinblick auf das Paket für die Paketdisponiereinheit 40 bereit, die nachfolgend das Paket zur Weiterleitung zu dem internen Ziel oder zur Weiterleitung über eine weitere Schnittstellenschaltung (in 2 nicht gezeigt) disponiert.
  • Wenn die CRC-Prüfschaltung 32 keinen Fehler erkennt, wird ein Ack-Paket, das den Fehler angibt und die Ack-Zählerzahl bereitstellt, die das letzte bekannte gültige Paket bezeichnet, mittels der Sendeschaltung 38 übermittelt. Die Paketdisponiereinheit 24 kann korrekt empfangene Pakete aus dem Historienpuffer 26 löschen und die verbleibenden Pakete zurück in die Paketdisponiereinheit 24 laden, so dass diese erneut gesendet werden. Insbesondere kann die Paketdisponiereinheit 24 entleert werden, die Schnittstellenschaltung 318A kann die Verbindung zurücksetzen und die Paketdisponiereinheit 24 kann damit beginnen, die in dem Historienpuffer 28 markierten Pakete erneut zu senden. In anderen Ausführungsformen wird eine Fehlerbehandlung in anderer Weise als durch automatisches erneutes Senden der mit Fehler empfangenen Pakete ausgeführt.
  • Des weiteren ist die Sendeschaltung 38 ausgebildet, Pufferfreigabebefehle zu senden, die die Empfangschaltung 10 an die Paketdisponiereinheit 24 weitergibt. Die Sendeschaltung 38 kann ferner Pakete senden, die von der Paketdisponiereinheit 40 ausgewählt bzw. disponiert sind (und die von unterschiedlichen Quellen, etwa einer der internen Quellen oder einer weiteren Schnittstellenschaltung des Knotens 312B empfangen wird), ähnlich zur Funktionsweise, die für die Paketdisponiereinheit 24 und die Schnittstellenschaltung 318A beschrieben ist. So können die Knoten 312A312B dahingehend symmetrisch sein, dass die Funktionen und die Schaltungen, die für jeden Knoten beschrieben sind, auch in den anderen Knoten vorgesehen sind. Der Einfachheit halber werden die Details nicht in beiden Knoten dargestellt. Auch andere Schnittstellenschaltungen 318B bis 318C und 318E bis 318L können zu den Schnittstellenleitungen 318A und 318D symmetrisch aufgebaut sein.
  • Im Allgemeinen empfängt die Paketdisponiereinheit 24 Pakete von diversen internen Quellen (beispielsweise dem Prozessorkern 28, der in 2 gezeigt ist, der Speichersteuerung 316A aus 1a, etc.), sowie von externen Quellen über diversen Schnittstellenschaltungen 318A bis 318C. Die Paketdisponiereinheit 24 speichert die Pakete direkt oder kann Indikatoren der Pakete speichern. Die eigentlichen Pakete können in verteilten Befehls- und Datenpuffern in den Knoten 312A gespeichert werden (beispielsweise ähnlich zu den Befehls- und Datenpuffern 42 und 44 in dem Verarbeitungsknoten 312B), und wenn ein Paket disponiert bzw. ausgewählt wird, werden die Paketdaten von den Befehls- und Datenpuffern, in denen diese gespeichert sind, bereitgestellt.
  • 3 ist eine Blockansicht einer Ausführungsform des Feldes in dem Steuerregister bzw. den Steuerregistern 22. In anderen Ausführungsformen können zusätzlich und/oder alternativ Daten im Vergleich zu den in 3 gezeigten Daten vorhanden sein. Einige Felder sind als Bits beschrieben, wobei diese jedoch Mehr-Bit-Felder in anderen Ausführungsformen repräsentieren können.
  • Die Felder in 3 enthalten ein Fähigkeitsbit 50, ein Packen-Freigabe-Bit 52, ein Einfüge-Freigabe-Bit 54, ein Einfüge-Steuerbit 56, ein dynamisches Packen-Freigabe-Bit 58 und ein dynamisches Packen-Freigabe-Bit 60. Optional können ein oder mehrere Schwellwertfelder vorgesehen sein (beispielsweise Schwellwertfelder 62 und 64).
  • Das Fähigkeitsbit 50 ist ein nur-Lese-Bit, das angibt, ob der Knoten in der Lage ist, eine CRC-Paketzusammenstellung oder eine Teil-CRC-Einfügung vorzunehmen. Die Software kann das Fähigkeitsbit 50 prüfen, um sicherzustellen, dass der Knoten in der Lage ist, die Operationen vor dem Freigeben der Funktionen auszuführen (unter Anwendung des Packen-Freigabe-Bits 52 und des Einfüge-Freigabe-Bits 54). In anderen Ausführungsformen werden separate Fähigkeitsbits für jede Art an Operationen bereitgestellt.
  • Das Einfüge-Steuerfeld 56 wird codiert, um zu steuern, welche Einfügepunkte in einem Paket Teil-CRC-Einfügungen erhalten sollen. In einer Ausführungsform wird der Datenbereich des Pakets in N gleich große Abschnitte (oder „Schläge”) unterteilt, wobei N eine ganze Zahl größer oder gleich zwei ist. Beispielsweise ist N in einer Ausführungsform gleich 4. Die Teil-CRC-Einfügung ist zwischen jedem Satz an Schlägen oder Abschnitten verfügbar, sowie zwischen dem Befehlsbereich und dem ersten Schlag bzw. Abschnitt. Insbesondere werden in einer Ausführungsform Codierungen unterstützt, die das Einfügen hervorrufen zwischen: (1) dem ersten und dem zweiten Schlag; (2) zwischen dem ersten und dem zweiten Schlag und dem Befehl und dem ersten Schlag; (3) zwischen dem ersten und dem zweiten Schlag, zwischen dem Befehl und dem ersten Schlag und zwischen dem zweiten und dem dritten Schlag; oder (4) zwischen dem ersten und dem zweiten Schlag, zwischen dem Befehl und dem ersten Schlag, zwischen dem zweiten und dem dritten Schlag; und zwischen dem dritten und vierten Schlag. Es kann eine weitere Kodierung des Einfüge-Steuerfeldes 56 bereitgestellt werden, um keine Einfügung anzugeben, und das Einfüge-Freigabebit 54 ist nicht notwendig. In einer weiteren Ausführungsform kann eine einzelne Kodierung für jeden möglichen Einfügepunkt verwendet werden, um eine Kombination von Einfügungen zuzulassen, oder es werden andere Kombinationen von Einfügungen unterstützt. In einer noch weiteren Ausführungsform wird lediglich eine Einfügung zwischen dem ersten und dem zweiten Schlag unterstützt, und es wird ein Einfüge-Freigabebit 54 ohne ein zusätzliches Steuerfeld bereitgestellt.
  • Wenn mehr als zwei Pakete für eine einzelne CRC-Übertragung gepackt werden, kann ein Packen-Steuerfeld vorgesehen sein, um die maximale Anwahl an zu zusammenstellenden Paketen zu steuern.
  • Das dynamische Packen-Freigabebit 58 und das dynamische Einfüge-Freigabebit 60 ermöglichen eine dynamische Änderung der CRC-Paketzusammenstellung und der Teil-CRC-Einfügungen gemäß dem Bandbreitenverbrauch. In einigen Ausführungsformen ist der Schwellwert, bei dem eine Änderung erfolgt, programmierbar, wobei ein oder mehrere Schwellwertfelder 62 und 64 verwendet werden. Beispielsweise werden unterschiedliche Schwellwerte für die CRC-Paketzusammenstellung und die Teil-CRC-Einfügung unterstützt. Unterschiedliche Schwellwerte können verwendet werden, um unterschiedliche Größen für die CRC-Paketzusammenstellung und/oder die Teil-CRC-Einfügungen zu steuern. Wenn beispielsweise Schwellwerte überschritten werden, werden immer weniger Teil-CRC-Einfügungen in einem Paket vorgenommen, wobei mit den Einfügungen immer später in dem Paket begonnen wird und dies nach vorne fortgeführt wird, wobei die Einfügung zwi schen dem ersten und dem zweiten Schlag als letztes entfernt wird (nach dem Entfernen der Einfügung zwischen dem Befehlsbereich und dem ersten Schlag). In anderen Ausführungsformen sind die Schwellwerte festgelegt.
  • 4 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform der Zellendisponiereinheit 14 in Reaktion auf das Disponieren einer Befehlszelle zeigt (d. h. einer Zelle, die ein Teil des Befehlsbereichs eines Pakets ist). Insbesondere ist in dieser Ausführungsform die Befehlszelle ein Teil eines datenlosen Pakets, obwohl in anderen Ausführungsformen die CRC-Paketzusammenstellung für Pakete unterstützt wird, die Daten sowie Befehlsbereiche enthalten. Die Blöcke sind in einer speziellen Reihenfolge zum besseren Verständnis dargestellt. Jedoch können auch andere Reihenfolgen verwendet werden.
  • Ferner können Blöcke teilweise mittels kombinatorischer Logikschaltungen in der Zellendisponiereinheit 14 ausgeführt werden. Blöcke, Kombinationen aus Blöcken oder der Ablauf als Ganzes können in Pipeline-Manier über mehrere Taktzyklen hinweg ausgeführt werden.
  • Wenn die disponierte Befehlszelle nicht die letzte Disponierzelle in dem Paket ist (Entscheidungsblock 70, Verzweigung „nein”), disponiert die Zellendisponiereinheit 14 die nächste Zelle in dem Befehl (Block 72). Wenn die disponierte Befehlszelle die letzte Befehlszelle in dem Paket ist (Entscheidungsblock 70, Verzweigung „ja”), und die CRC-Paketzusammenstellung mittels des Freigabebits 50 nicht aktiviert ist (Entscheidungsblock 74, Verzweigung „nein”), ist die maximale Anzahl an Paketen zusammengestellt (Entscheidungsblock 76, Verzweigung „ja”), oder die dynamische Steuerung ist aktiviert und gibt an, dass ein weiterer Befehl nicht gepackt werden soll (Entscheidungsblock 78, Verzweigung „nein”), und die Zellendisponiereinheit 14 disponiert die CRC-Zelle (Block 80). Wenn ferner kein weiterer Befehl (Cmd2) für das Disponieren verfügbar ist (Entscheidungsblock 83, Verzweigung „nein”), disponiert die Zellendisponiereinheit 14 die CRC-Zelle (80). Wenn die CRC-Zelle disponiert ist und gesendet wird, wird die akkumulierte CRC, die von dem CRC-Generator 16 bewahrt wird, erneut initialisiert, um das Akkumulieren der CRC für das nächste Paket zu beginnen.
  • Wenn ein weiterer Befehl verfügbar ist (Entscheidungsblock 82, Verzweigung „ja”) wird die erste Zelle des nächsten Befehls (Cmd2) disponiert (Block 84). D. h., die Entscheidung, ob ein Befehl zu packen ist, wird zu dem Zeitpunkt getroffen, in welchem die letzte Zelle des aktuellen Befehls in dieser Ausführungsform disponiert wird. Die Zellendisponiereinheit 14 wartet nicht auf einen weiteren Befehl, und fügt stattdessen die CRC an, ohne dass diese gepackt ist, wenn ein zweiter Befehl für das Zusammenstellen nicht verfügbar ist. In anderen Ausführungsformen wird bestimmt, ob zum Zeitpunkt des Disponieren der letzten Zelle des aktuellen Pakets oder in zeitlicher Nähe dazu oder zu einer anderen Zeit nach Bedarf ein Paket zusammen zu stellen ist.
  • In einer Ausführungsform stellt die Zellendisponiereinheit 14 den Befehl mit einem Noop-Befehl zusammen, selbst wenn das Paketzusammenstellen nicht aktiviert ist (oder dieses dynamisch aktuell deaktiviert ist), wenn der Noop-Befehl gerade gesendet wird (nicht gepackt mit einem vorhergehenden Befehl) und ein Befehl durch die Paketdisponiereinheit 24 disponiert ist. In diesem Falle kann die Verringerung der Verarbeitungszeit für einen Befehl realisiert werden, indem ein Befehl mit dem Noop-Befehl zusammengestellt wird, anstatt dass eine separate CRC für den Noop-Befehl vor dem neu disponierten Befehl gesendet wird.
  • Obwohl die vorangegangene Beschreibung den Betrieb der Zellendisponiereinheit 14 betrifft, kann die Funktionsweise der Schnittstellenschaltung 318A als Ganzes ähnlich sein, selbst wenn der innere Aufbau der Schnittstellenschaltung 318A sich von der Ausführungsform aus 2 unterscheidet. Beispielsweise werden Pakete für das Senden empfangen, wobei das Zusammenstellen auf der Grundlage der Verfügbarkeit eines weiteren zu sendenden Paketes bestimmt wird, und wobei die Steuerung auf der Grundlage des Bandbreitenverbrauchs, etc. dynamisch erfolgen kann.
  • 5 ist ein Flussdiagramm, in welchem die Funktionsweise einer Ausführungsform der Zellendisponiereinheit 14 in Reaktion auf das Disponieren einer Datenzelle gezeigt ist (d. h. einer Zelle, die ein Teil des Datenbereichs eines Pakets ist). Die Blöcke sind in einer speziellen Reihenfolge zum besseren Verständnis dargestellt. Es kann jedoch auch eine andere Reihenfolge verwendet werden. Des weiteren können Blöcke parallel durch kombinatorische Logikschaltungen in der Zellendisponiereinheit 14 ausgeführt werden. Blöcke, Kombinationen aus Blöcken oder der Ablauf als Ganzes können in Pipeline-Technik über mehrere Taktzyklen hinweg ausgeführt werden.
  • Wenn die disponierte Datenzelle die letzte Datenzelle in dem Paket ist (Entscheidungsblock 9, Verzweigung „ja”), disponiert die Disponiereinheit 14 die CRC-Zelle für das Übertragen (Block 92). In diesem Falle ist die CRC-Zelle die Zelle, die das gesamte Paket abdeckt, wie es über die Zellen des Pakets hinweg in vorhergehenden Zyklen angesammelt wurde. Die CRC kann ebenfalls in diesem Falle erneut initialisiert werden, um Vorbereitungen für das nächste Paket zu treffen. Wenn die disponierte Datenzelle nicht die letzte Datenzelle in dem Paket ist (Entscheidungsblock 90, Verzweigung „nein”), und die Teil-CRC-Einfügung mittels des Freigabebits 54 nicht aktiviert ist (Entscheidungsblock 94, Verzweigung „nein”), oder das Paket nicht an einem Einfügepunkt ist (Entscheidungsblock 96, Verzweigung „nein”), oder die dynamische Steuerung aktiviert ist und angibt, dass die Teil-CRC-Einfügung an diesem Punkt nicht ausgeführt werden soll (Entscheidungsblock 98, Verzweigung „nein”), disponiert die Disponiereinheit 14 die nächste Datenzelle (Block 100). Ansonsten disponiert die Zellendisponiereinheit 14 eine CRC-Zelle (Block 92). In diesem Falle ist die CRC-Zelle eine Teil-CRC-Einfügung, die das Paket bis zu dem aktuellen Punkt hin abdeckt. Die CRC wird in diesem Falle nicht erneut initialisiert. Das Datenpaket ist ggf. nicht an einem Einfügepunkt, wie dies durch den Entscheidungsblock 96 angegeben ist, wenn jeder Schlag mehr als eine Zelle enthält und die aktuelle Zelle nicht das Ende eines Schlags ist, oder wenn der aktuelle Einfügepunkt nicht über das Einfüge-Steuerfeld 56 aktiviert ist.
  • Obwohl die vorhergehende Beschreibung die Funktionsweise der Disponiereinheit 14 betrifft, kann die Funktionsweise der Schnittstellenschaltung 318a als Ganzes ähnlich sein, selbst wenn der innere Aufbau der Schnittstellenschaltung 318A sich von der Ausführungsform der 2 unterscheidet. Beispielsweise können Pakete für das Senden empfangen werden, die Teil-CRC-Einfügung kann ausgeführt werden, wenn diese aktiviert ist, die Steuerung kann dynamisch auf der Grundlage eines Bandbreitenverbrauchs erfolgen, etc..
  • 6 zeigt ein Flussdiagramm, das die Funktionsweise einer Ausführungsform der Zellendisponiereinheit 14 darstellt, um die Bandbreite zu überwachen und die CRC-Paketzusammenstellung und/oder die Teil-CRC-Einfügung dynamisch zu variieren. Die Blöcke sind in einer speziellen Reihenfolge zum besseren Verständnis dargestellt. Es kann jedoch auch eine andere Reihenfolge verwendet werden. Ferner können Blöcke parallel durch kombinatorische Logikschaltungen in der Zellendisponiereinheit 14 ausgeführt wer den. Blöcke, Kombinationen aus Blöcken oder der Ablauf als Ganzes können als Pipeline-Verfahren über mehrere Taktzyklen hinweg ausgeführt werden.
  • Wenn die Zellendisponiereinheit 14 ein neues Paket für das Senden disponiert (Entscheidungsblock 110, Verzweigung „ja”), erhöht die Zellendisponiereinheit 14 den Auslastungszähler 20 (Block 112). Wenn die Zellendisponiereinheit 14 ein Noop-Paket (Nop-Paket – Entscheidungsblock 114, Verzweigung „ja”), disponiert, verringert die Zellendisponiereinheit 14 den Auslastungszähler 20 (Block 116). Wie zuvor erläutert ist, kann der Auslastungszähler 20 ein sättigender Zähler sein. D. h., das Erhöhen des Zählers kann enden, wenn alle binären Einsen in dem Zähler 20 gesetzt sind (und ein nachfolgendes Inkrementieren ändert den Wert nicht, bis eine Dekrementierung auftritt und den Wert verringert), und ein Dekrementieren des Zählers erfolgt solange, bis alle binären Nullwerte in dem Zähler 20 gesetzt sind (und ein nachfolgendes Dekrementieren ändert den Wert nicht, bis ein Inkrementieren erfolgt und den Wert erhöht). Der Wert kann als eine Ganzzahl ohne ein Vorzeichen behandelt werden. Ein Noop-Paket kann als ein Noop-Paket definiert werden, das keine Pufferfreigabezahlen in einer Ausführungsform enthält, da derartige Noop-Pakete den einzigen Mechanismus zum Senden der Zahlen repräsentieren können. Zu beachten ist, dass die Blöcke 110 bis 116 unabhängig vom Rest des Flussdiagramms sind und die Überwachung des Bandbreitenverbrauchs für diese Ausführungsform repräsentieren.
  • Wenn der Auslastungszähler einen Schwellwert übersteigt (Entscheidungsblock 118, Verzweigung „ja”), wird der Bandbreitenverbrauch als hoch betrachtet. Folglich wird die Teil-CRC-Einfügung deaktiviert und die CRC-Paketzusammenstellung wird aktiviert, um Bandbreite einzusparen (Block 120). Wenn andererseits der Auslastungszähler den Schwellwert nicht übersteigt (Entscheidungsblock 118, Verzweigung „nein”), wird der Bandbreitenverbrauch als gering erachtet. Die Teil-CRC-Einfügung wird aktiviert, um ein früheres Weiterleiten an Daten zu ermöglichen, und die CRC-Paketzusammenstellung wird deaktiviert, um die Paketweiterleitungsverarbeitungszeit in diesem Falle zu verbessern, da die Bandbreite verfügbar ist und somit für zusätzliche CRC-Übertragung verwendet werden kann, ohne dass das Leistungsverhalten beeinflusst wird (Block 122).
  • Die Blöcke 118122 repräsentieren eine Teil der Entscheidungsblöcke 78 und 90 in den 4 bzw. 5. D. h., wenn die dynamische Steuerung aktiviert ist, bestimmen die Blöcke 118 bis 122, ob die dynamische Steuerung angibt, dass die CRC-Paketzusammenstellung oder die Teil-CRC-Einfügung zulässig ist. Der Block 120 entspricht dem Entscheidungsblock 78 mit der Verzweigung „ja” und dem Entscheidungsblock 90 in der Verzweigung „nein”). Der Block 122 entspricht dem Entscheidungsblock 78 mit der Verzweigung „nein” und dem Entscheidungsblock 90 mit der Verzweigung „ja”.
  • Wie zuvor erläutert ist, wird in einigen Ausführungsformen mehr als ein Schwellwert angewendet. Beispielsweise gibt es Schwellwerte, die der möglichen Kombination aus Teil-CRC-Einfügungen entsprechen. Wenn der Bandbreitenverbrauch ansteigt, wird die Anzahl der Teil-CRC-Einfügungen verringert, wobei mit jenen begonnen wird, die den kleinsten Gesamtwert hinzufügen (beispielsweise jene Einfügungen, die näher am Ende des Datenpaktes sind, woran sich die Einfügung anschließt zwischen dem Befehlsbereich und dem Datenbereich, und schließlich die Einfügung zwischen dem ersten und dem zweiten Datenschlag). Wenn in ähnlicher Weise mehr als zwei Pakete für die CRC zusammengestellt werden, können diverse Schwellwerte verwendet werden, um (bei Überschreiten der Schwellwerte) die Anzahl der Pakete zu erhöhen, die für die CRC zusammengestellt werden.
  • Obwohl die vorhergehende Beschreibung sich auf die Funktionsweise der Zellendisponiereinheit 14 bezieht, kann die Funktionsweise der Schnittstellenschaltung 218A als Ganzes ähnlich sein, selbst wenn der innere Aufbau der Schnittstellenschaltung 218A sich von der Ausführungsform der 2 unterscheidet. Beispielsweise kann der Bandbreitenverbrauch überwacht und dynamisch gesteuert werden auf der Grundlage des erfassten Bandbreitenverbrauchs.
  • Die Ausführungsform der 6 zeigt einen allgemeinen Mechanismus zum Variieren der Häufigkeit von CRC-Übertragungen in Abhängigkeit von der Größe der verbrauchten Bandbreite. Wenn der Bandbreitenverbrauch anwächst, wird die Frequenz bzw. Häufigkeit der CRC-Übertragungen verringert (beispielsweise durch Erhöhen der CRC-Paketzusammenstellung und/oder durch Verringern der Teil-CRC-Einfügungen). Wenn der Bandbreitenverlauf zurückgeht, wird die Häufigkeit der CRC-Übertragungen erhöht (etwa durch Unterbinden der CRC-Paketzusammenstellung und/oder durch Erhöhen der Teil-CRC-Einfügungen).
  • 7 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform der Schnittstellenschaltung 318D (und insbesondere der Empfängerschaltung 36 und der CRC-Prüfschaltung 32 für die dargestellte Ausführungsform, obwohl andere Ausführungsformen mit unterschiedlichen Strukturen verwendbar sind) zum Handhaben der gepackten CRC und der Teil-CRC-Einfügungen zeigt. Die Blöcke sind in einer speziellen Reihenfolge zum besseren Verständnis gezeigt. Jedoch kann eine andere Reihenfolge verwendet werden. Des weiteren können Blöcke parallel mittels Kombination durch Logikschaltungen in der Schnittstellenschaltung 318D und/oder der Empfängerschaltung 36/CRC-Prüfschaltung 32 ausgeführt werden. Blöcke oder Kombinationen aus Blöcken oder der Ablauf als Ganzes können in Pipeline-Manier über mehrere Taktzyklen hinweg ausgeführt werden.
  • Die Empfängerschaltung 36 decodiert die Steuerdaten aus den Steuerleitungen CTL[n:0] (möglicherweise über mehrere Bitzeiten hinweg, wenn eine Zelle für mehrere Bitzeiten hinweg empfangen wird), um zu bestimmen, welche Art an Zelle empfangen wird (Block 130). Wenn die Zelle eine Befehlszelle oder eine Datenzelle eines Pakets ist (Entscheidungsblock 132, Verzweigung „ja”), wird die Zelle in der Zellenwartschlange bzw. in dem Zellenpuffer 34 für die CRC-Validierung angeordnet (Block 134). Befehlszellen können teilweise decodiert werden, beispielsweise um den virtuellen Kanal zu ermitteln, der mit dem Paket verknüpft ist. Die CRC-Prüfschaltung 32 akkumuliert die CRC von der empfangenen bzw. den empfangenen Zellen (Block 136). Alternativ werden die Zellen in der Zellenwarteschlange 34 angeordnet und die CTL-Daten werden nach der Einordnung in der Warteschlange decodiert.
  • Wenn die Zelle keine Befehlszelle oder Datenzelle ist, ist die Zelle eine CRC-Zelle (Entscheidungsblock 132, Verzweigung „nein”). Die CRC-Prüfschaltung 32 vergleicht die CRC-Zelle mit der akkumulierten CRC, um zu bestimmen, ob ein Fehler erkannt wurde (Block 138). Die CRC kann eine Teil-CRC oder eine vollständige CRC sein. Wenn ein Fehler nicht erkannt wird (Entscheidungsblock 140, Verzweigung „nein”), werden die durch die CRC abgedeckten Befehls/Datenzellen von der Zellenwarteschlange 34 weitergeleitet (Block 142). Wenn die Weiterleitung eine Teilweiterleitung ist, da kein Fehler in einer Teil-CRC erkannt wird, zeichnet die Schnittstellenschaltung 318D auf, welche Daten weitergeleitet wurden (Block 144). Diese Information kann verwendet werden, wenn später in einem Paket ein Fehler erkannt wird, so dass bereits zuvor weitergeleitete Daten nicht erneut weitergeleitet werden müssen, wenn das Paket erneut gesendet wird. Wenn die Weiterleitung das Ende des Pakets ist, wird der Ack-Zähler 30 aktualisiert (Block 146), und die von der CRC-Prüfschaltung 32 akkumulierte CRT wird für das nächste Paket erneut initialisiert.
  • Wenn ein Fehler erkannt wird (Entscheidungsblock 140, Verzweigung „ja”), aktualisiert die CRC-Prüfschaltung 32 den Ack-Zähler 30, um das letzte erfolgreich empfangene Paket (Block 148) zu kennzeichnen, und die Sendeschaltung 38 gibt einen Fehler zusammen mit der Ack-Zählerzahl an den Knoten 312A zur Fehlerbearbeitung weiter (Block 150).
  • In diversen Ausführungsformen werden die CTL-Leitungen für eine Zelle in diversen Arten codiert. Beispielsweise zeigt 8 eine Ausführungsform des Codierens der CTL-Leitungen für eine 32-Bit-Zelle (so dass in dieser Ausführungsform vier CTL-Leitungen pro Zelle vorhanden sind). Des weiteren werden in dieser Ausführungsform bis zu 2 datenlose Pakete für die CRC-Abdeckung zusammengestellt.
  • Die CTL-Leitungen sind codiert als b”1111” für eine Befehlszelle und als b”0000” für eine Datenzelle, sofern dies in der Tabelle nicht anders gekennzeichnet ist. Die CRC für ein datenloses Paket (nur-Befehl-Paket) ist b”0011”. Die CTL-Leitungscodierung b”1100” besitzt zwei Bedeutungen. Diese kann entweder angeben, dass die Daten-CRC bereitgestellt wird (keine Teil-CRC-Einfügung, sondern die endgültige CRC, die an das Ende des Pakets angehängt ist), oder diese kann die letzte Zelle des ersten Befehls für gepackte Befehle anzeigen. Wenn somit die CTL-Codierung auf eine Befehlszelle folgt, ist die Zelle die letzte Zelle des ersten Befehls und wenn diese CTL-Codierung auf eine Datenzelle folgt, ist die Zelle die Daten-CRC. Ferner unterscheiden sich die Codierungen für Daten-CRC und die Befehls-CRC.
  • Die CTL-Leitungscodierung b”0111” besitzt ebenfalls zwei Bedeutungen. Diese ist entweder die erste Zelle eines Befehlspakets, d. h. sie ist in den Datenbereich eines weiteren Pakets eingefügt, oder dies ist die erste Zelle des zweiten Befehls eines Paares aus gepackten Befehlen. Daher kann die Bedeutung dieser Codierung auf der Grundlage davon unterschieden werden, ob die vorhergehende Codierung b”1100” war oder nicht. Des weiteren unterscheidet sich die Codierung für die erste Zelle eines gepackten Befehls von anderen Befehlszellen, was das Erkennen der ersten Zelle begünstigt. Ferner unterscheidet sich die Codierung für die letzte Zelle des ersten Befehls von anderen Befehlscodierungen.
  • Die CTL-Codierung b”1001” kann für eine Befehlszelle verwendet werden, die einer Teil-CRC-Einfügung vorausgeht nach dem Befehlsbereich des Pakets. Alternativ kann die Codierung b”1010” für eine Teil-CRC-Einfügung zwischen den Datenschlägen eines Pakets verwendet werden. Somit unterscheidet sich die Codierung, die angibt, dass die nächste Zelle eine CRC ist, von der Einfügung zwischen dem Befehlsbereich und dem Datenbereich im Vergleich zu Einfügungen zwischen den Datenschlägen bzw. Datenabschnitten. Schließlich gibt die CTL-Codierung b”1010” eine Teil-CRC-Zelle an. Somit unterscheidet sich die Codierung für eine Teil-CRC-Zelle von den Codierungen für eine Befehls-CRC und für eine Daten CRC sowie von anderen Datenzellen.
  • Die CTL-Codierungen, die in der Tabelle der 8 angegeben sind, sind so gewählt, dass das Auftreten von Fehlern auf den CTL-Leitungen reduziert wird, die Fehler beim Empfang von Paketen hervorrufen können. D. h., wenn ein Fehler auf einer CTL-Leitung auftritt, hat die Empfangsschaltung 26 eine höhere Wahrscheinlichkeit des Erkennens einer unzulässigen Sequenz aus CTL-Codierungen und kann somit einen Fehler für die Paketübertragung erkennen.
  • 9 ist eine Gruppe aus Beispielpaketen und der entsprechenden CTL-Codierungen für jede Zelle entsprechend den in 8 gezeigten Codierungen. Jede Zelle ist bezeichnet, und die CTL-Codierung geht in diesem Beispiel der Zelle voraus. Im Allgemeinen sind die Zellen eines Befehls mit „Cmd” bezeichnet, woran sich eine Zahl anschließt (die gleich ist für alle Zellen des Befehls), gefolgt von einem kleinen Buchstaben, um unterschiedliche Zellen des gleichen Befehls zu unterscheiden. Die Zellen von Daten sind als „Daten” bezeichnet, woran sich eine Zahl anschließt (die gleich ist für alle Zellen der gleichen Daten und die gleich ist für den entsprechenden Befehl), gefolgt von einem kleinen Buchstaben, um unterschiedliche Zellen der gleichen Daten zu unterscheiden.
  • Ein einzelnes (ungepacktes) datenloses Befehlspaket mit zwei Zellen (Cmd0a und Cmd0b) und die entsprechende CRC (CRC0) sind mit dem Bezugszeichen 160 dargestellt. Das Bezugszeichen 162 ist ein Beispiel eines Pakets mit zwei Befehlszellen (Cmd0a und Cmd9b) und zwei Datenzellen (Data0a und Data0b). Die entsprechende CRC folgt den Datenzellen (CRC0).
  • Mit dem Bezugszeichen 164 ist ein Paar aus gepackten Befehlspaketen dargestellt, wobei jedes Befehlspaket zwei Zellen besitzt. Die Befehlszellen für das erste Paket (Cmd0a und Cmd0b) gehen den Befehlszellen für das zweite Paket voraus (Cmd1a und Cmd1b) und gehen auch der CRC voraus, die beide Pakete (CRC0 + 1) abdeckt. Die CTL-Codierung für Cmd0b ist somit b”1100”, um die letzte Zelle des ersten Befehls anzugeben, und die CTL-Codierung für Cmd1a ist b”0111”, um die erste Zelle des zweiten Befehls anzugeben. Andere Befehlszellen besitzen die reguläre Befehlszellencodierung b”1111”. Die CRC-Zelle ist ebenfalls als b”0011” codiert, um die Befehls-CRC anzugeben. Das Bezugszeichen 166 ist ein Beispiel eines Paares aus gepackten Einzelzellenbefehlen, und daher besitzen keine Zellen die reguläre Befehlszellencodierung.
  • Bezugszeichen 168 bezeichnet ein Befehlspaket und ein Datenpaket (Cmd0 und Data0) mit zwei nur-Befehlpaketen, die in den Datenbereich des Pakets (Cmd1 und dessen CRC-Zelle CRC1, und Cmd2 und dessen CRC-Zelle CRC2) eingefügt sind. Wie gezeigt, ist die CTL-Codierung b”0111” und wird für die erste Zelle jedes Befehls Cmd1 und Cmd2 verwendet, um die Einfügung in den Daten anzuzeigen. In jedem Falle geht der Codierung b”0111” nicht die Codierung b”1100” voraus, und somit können die Befehle als Einfügungen in den Datenbereich des Pakets und nicht als gepackte Befehle erkannt werden.
  • Schließlich ist das Bezugszeichen 170 ein Beispiel eines Pakets mit Teil-CRC-Einfügungen (CRC01, CRC0b und CRC0c), die das Kennzeichen der nächsten Zelle als Teil-CRC mit Ausnahme der letzten CRC (CRC0) angeben.
  • 10 ist eine weitere Ausführungsform der Codierung der CTL-Leitungen für eine 32-Bit-Zelle und für vier CTL-Leitungen pro Zelle. In dieser Ausführungsform besitzt jede Bit-Position der CTL-Leitungen entsprechend der Zelle (Bits 0 bis 3) eine unterschiedliche Bedeutung. Die LCTL- und HCTL-Codierungen für die Bitpositionen 0 und 2 können die gleiche Bedeutung besitzen, wie sie in der HT-Spezifizierung festgelegt ist. Diese Bits bestimmen, ob eine Zelle eine Befehlszelle oder eine Datenzelle ist. Die Bitposition 1 wird für Befehlszellen codiert, so dass diese ein Paketbit ist. D. h., wenn das Bit 0 ist, ist die nächste verwendete Zelle eine weitere Befehlszelle. Wenn das Bit 1 ist, ist die nächste gesendete Zelle eine CRC für den Befehl. Die Bitposition 1 kann für Datenzellen so definiert sein, dass diese ein Einfügebit repräsentiert. Wenn das Bit 0 ist, ist die nächste eine weitere Datenzel le (oder eine eingefügte Befehlszelle). Wenn das Bit 1 ist, ist die nächste Zelle eine Teil-CRC-Einfügungszelle. Die Bitposition 3 ist reserviert.
  • Es werden diverse Variationen und Modifizierungen für den Fachmann bei einem vollständigen Studium der obigen Offenbarung ersichtlich. Es ist beabsichtigt, dass die folgenden Patentansprüche so interpretiert werden, dass alle derartigen Variationen und Modifizierungen mit eingeschlossen sind.
  • Industrielle Anwendbarkeit
  • Diese Erfindung kann generell auf Mikroprozessoren angewendet werden.
  • Zusammenfassung
  • In einer Ausführungsform umfasst ein Knoten eine Paketdisponiereinheit, die ausgebildet ist, auf einer Verbindung zu übertragende Pakete zu disponieren, und eine Schnittstellenschaltung, die mit der Paketdisponiereinheit verbunden und ausgebildet ist, die Pakete auf der Verbindung zu übertragen. Die Schnittstellenschaltung ist ausgebildet, Fehlererkennungsdaten, die die Pakete abdecken, zu erzeugen, wobei die Fehlererkennungsdaten zwischen Paketen auf der Verbindung übertragen werden. Die Schnittstellenschaltung ist ausgebildet, bis zu N Pakete mit einer einzelnen Übertragung von Fehlererkennungsdaten abzudecken, wobei N eine Ganzzahl größer gleich zwei ist. Die Anzahl an Paketen, die mit einer einzelnen Übertragung der Fehlererkennungsdaten abgedeckt werden kann, wird durch die Schnittstellenschaltung in Abhängigkeit von einer Verfügbarkeit von zu sendenden Paketen bestimmt, während in einer weiteren Ausführungsform die Schnittstellenschaltung ausgebildet ist, eine Häufigkeit der Übertragung der Fehlererkennungsdaten auf der Verbindung auf der Grundlage eines Betrages an Bandbreite, der verbraucht wird, dynamisch zu variieren.

Claims (20)

  1. Knoten, der zur Ankopplung an eine Verbindung ausgebildet ist, wobei der Knoten umfasst: eine Sendeschaltung, die ausgebildet ist, Pakete über die Verbindung zu senden, wobei jedes Paket eine oder mehrere Zellen aufweist; und eine Zellendisponiereinheit, die mit der Sendeschaltung verbunden und ausgebildet ist, die durch die Sendeschaltung zu übertragenden Zellen zu disponieren, wobei die Zellendisponiereinheit ausgebildet ist, mindestens eine zu übertragende Fehlererkennungszelle zu disponieren, wobei die Fehlererkennungszelle ein vorhergehendes Paket abdeckt, und wobei, wenn ein zweites Paket für das Disponieren verfügbar ist, die Zellendisponiereinheit ausgebildet ist, Zellen des zweiten Pakets anstelle der Fehlererkennungszelle zu disponieren, und wobei die Fehlererkennungszelle das vorhergehende Paket und das zweite Paket abdeckt, wenn sie nachfolgend disponiert wird.
  2. Knoten nach Anspruch 1, wobei die Zellendisponiereinheit, wenn ein oder mehrere zusätzliche Pakete für das Disponieren verfügbar sind, ausgebildet ist, Zellen des einen oder der mehreren weiteren Pakete zu disponieren, und wobei die Fehlererkennungszelle, wenn diese nachfolgend disponiert wird, ferner das eine oder die mehreren zusätzlichen Pakete abdeckt.
  3. Knoten nach Anspruch 1, wobei die Verbindung Leitungen zum Übertragen der Paketdaten und eine oder mehrere Steuerleitungen aufweist, und wobei die Sendeschaltung ausgebildet ist, Daten auf den Steuerleitungen zu codieren, um eine gegebene Zelle zu kennzeichnen, und wobei die Codierung für eine Fehlererkennungszelle sich von der Codierung für die erste Zelle des zweiten Pakets unterscheidet.
  4. Knoten nach Anspruch 3, wobei die Codierung für eine Befehlszelle sich von der Codierung der ersten Zelle des zweiten Pakets und von der Codierung der Fehlererkennungszelle unterscheidet.
  5. Knoten nach Anspruch 1, wobei die Fehlererkennungszelle zyklische Redundanzprüf-(CRC)Daten umfasst.
  6. Knoten nach Anspruch 1, wobei die Zellendisponiereinheit ausgebildet ist, dynamisch zu bestimmen, ob das zweite Paket oder die Fehlererkennungszelle zu disponieren ist, wobei dies von dem Betrag der Bandbreite, der auf der Leitung verbraucht wird, abhängt.
  7. Knoten nach Anspruch 6, wobei, wenn der Betrag der verbrauchten Bandbreite über einem Schwellwertpegel liegt, das zweite Paket disponiert wird und wobei, wenn der Betrag der verbrauchten Bandbreite unter einem Schwellwert liegt, die Fehlererkennungszelle disponiert wird.
  8. Knoten nach Anspruch 1, wobei das vorhergehende Paket und das zweite Paket jeweils einen Befehl und keine Daten aufweisen.
  9. Knoten nach Anspruch 1, wobei die Fehlererkennungszelle eine von mehreren Fehlererkennungszellen ist, die das vorhergehende Paket und das zweite Paket, wenn dieses disponiert ist, abdeckt.
  10. Knoten, der zur Ankopplung an eine Verbindung ausgebildet ist, wobei der Knoten umfasst: eine Paketdisponiereinheit, die ausgebildet ist, über die Verbindung zu sendende Pakete zu disponieren; und eine Schnittstellenschaltung, die mit der Paketdisponiereinheit verbunden und ausgebildet ist, die Pakete über die Verbindung zu übertragen, wobei die Schnittstellenschaltung ausgebildet ist, Fehlererkennungsdaten, die die Pakete abdecken, zu erzeugen, wobei die Fehlererkennungsdaten zwischen Paketen auf der Verbindung übertragen werden, wobei die Schnittstellenschaltung ausgebildet ist, bis zu N-Pakete mit einer einzelnen Übertragung an Fehlererkennungsdaten abzudecken, wobei N eine Ganzzahl größer oder gleich zwei ist, und wobei die Anzahl an Paketen, die mit einer einzelnen Übertragung an Fehlerkennungsdaten abgedeckt werden, von der Schnittstellenschaltung in Abhängigkeit von einer Verfügbarkeit von zu sendenden Paketen bestimmt wird.
  11. Knoten nach Anspruch 10, wobei die Schnittstellenschaltung ausgebildet ist, die Anzahl der Pakete, die durch eine einzelne Übertragung von Fehlererkennungsdaten abgedeckt sind, in Abhängigkeit von dem Betrag einer auf der Verbindung verbrauchten Bandbreite zu variieren.
  12. Knoten nach Anspruch 11, wobei, wenn der Betrag an verbrauchter Bandbreite kleiner ist als ein Schwellwert, die Anzahl der Pakete kleiner ist und wobei, wenn der Betrag an verbrauchter Bandbreite größer als ein Schwellwert ist, die Anzahl der Pakete größer ist.
  13. Knoten nach Anspruch 10, wobei die Pakete, die zusammengestellt werden, Befehle enthalten und Daten ausschließen.
  14. Verfahren mit: Disponieren von Paketen, die auf einer Verbindung zu übertragen sind; Erzeugen von Fehlererkennungsdaten, die die Pakete abdecken; und Übertragen der Pakete und Übertragen der Fehlererkennungsdaten zwischen Paketen auf der Verbindung, wobei eine einzelne Übertragung der Fehlererkennungsdaten auf der Verbindung bis zu N vorhergehende Pakete abdeckt, wobei N eine ganze Zahl größer oder gleich zwei ist, und wobei die Anzahl der durch eine einzelne Übertragung von Fehlererkennungsdaten abgedeckten Pakete abhängig von einer Verfügbarkeit von zu übertragenden Paketen bestimmt wird.
  15. Verfahren nach Anspruch 14, das ferner umfasst: dynamisches Variieren der Anzahl an Paketen, die durch eine einzelne Übertragung von Fehlererkennungsdaten abgedeckt sind, in Abhängigkeit von einem Betrag an Bandbreite, der auf der Verbindung verbraucht wird.
  16. Verfahren nach Anspruch 17, wobei, wenn der Betrag an verbrauchter Bandbreite kleiner als ein Schwellwert ist, die Anzahl an Paketen, die durch eine einzelne Übertragung von Fehlererkennungsdaten abgedeckt werden, kleiner wird und wobei, wenn der Betrag an verbrauchter Bandbreite größer als ein Schwellwert ist, die Anzahl an Paketen, die durch eine einzelne Übertragung an Fehlererkennungsdaten abgedeckt wird, größer wird.
  17. Verfahren nach Anspruch 14, wobei die Pakete, die zusammengestellt werden, Befehle enthalten und Daten ausschließen.
  18. Verfahren nach Anspruch 14, wobei die Fehlerkennungsdaten zyklische Redundanz Prüf-(CRC)Daten umfassen.
  19. Knoten, der zur Ankopplung an eine Verbindung ausgebildet ist, wobei der Knoten umfasst: eine Paketdisponiereinheit, die ausgebildet ist, auf der Verbindung zu übertragende Pakete zu disponieren; eine Schnittstellenschaltung, die mit der Paketdisponiereinheit verbunden und ausgebildet ist, die Pakete auf der Verbindung zu übertragen, wobei die Schnittstellenschaltung ausgebildet ist, Fehlererkennungsdaten zu erzeugen, die die Pakete abdecken, und wobei die Schnittstellenschaltung ausgebildet ist, einen Betrag an Bandbreite, der auf der Verbindung verbraucht wird, zu überwachen und eine Häufigkeit der Übertragung der Fehlererkennungsdaten auf der Verbindung auf der Grundlage des Betrags an Bandbreite dynamisch zu variieren.
  20. Knoten nach Anspruch 19, wobei, wenn der Betrag an verbrauchter Bandbreite kleiner als ein Schwellwert ist, die Häufigkeit der Übertragung höher ist, und wobei, wenn der Betrag an verbrauchter Bandbreite größer als ein Schwellwert ist, die Häufigkeit der Übertragung geringer ist.
DE112007003086.0T 2006-12-13 2007-12-13 Befehlspaketzusammenstellung zur Vermeidung des CRC-Aufwands Active DE112007003086B8 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/610,191 US7881303B2 (en) 2006-12-13 2006-12-13 Command packet packing to mitigate CRC overhead
US11/610,191 2006-12-13
PCT/US2007/025499 WO2008073494A1 (en) 2006-12-13 2007-12-13 Command packet packing to mitigate crc overhead

Publications (3)

Publication Number Publication Date
DE112007003086T5 true DE112007003086T5 (de) 2009-10-08
DE112007003086B4 DE112007003086B4 (de) 2021-04-15
DE112007003086B8 DE112007003086B8 (de) 2021-07-29

Family

ID=39186182

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112007003086.0T Active DE112007003086B8 (de) 2006-12-13 2007-12-13 Befehlspaketzusammenstellung zur Vermeidung des CRC-Aufwands

Country Status (8)

Country Link
US (2) US7881303B2 (de)
JP (1) JP2010514264A (de)
KR (1) KR20090099558A (de)
CN (1) CN101681277B (de)
DE (1) DE112007003086B8 (de)
GB (1) GB2457618A (de)
TW (1) TWI461899B (de)
WO (1) WO2008073494A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012013592A1 (de) * 2012-07-10 2014-01-30 Krohne Messtechnik Gmbh Verfahren zum Übertragen von Datenpaketen und entsprechendes System mit Datenquelle und Datensenke

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7881303B2 (en) * 2006-12-13 2011-02-01 GlobalFoundries, Inc. Command packet packing to mitigate CRC overhead
US7840873B2 (en) * 2006-12-13 2010-11-23 Globalfoundries Inc. Partial CRC insertion in data packets for early forwarding
US8205140B2 (en) * 2007-05-10 2012-06-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for the use of network coding in a wireless communication network
US8543756B2 (en) 2009-02-02 2013-09-24 Marvell World Trade Ltd. Solid-state drive command grouping
US8943236B1 (en) * 2011-06-21 2015-01-27 Netlogic Microsystems, Inc. Packet scheduling using a programmable weighted fair queuing scheduler that employs deficit round robin
CN102231687A (zh) * 2011-06-29 2011-11-02 华为技术有限公司 一种链路故障探测方法及装置
JP2016093296A (ja) * 2014-11-13 2016-05-26 日本光電工業株式会社 生体信号記録システム
US9565032B2 (en) * 2014-12-03 2017-02-07 Qualcomm Incorporated Monitoring and controlling bus ring performance
WO2016122463A1 (en) * 2015-01-27 2016-08-04 Hewlett Packard Enterprise Development Lp Correcting errors of a variable data payload
DE102017208826A1 (de) * 2017-05-24 2018-11-29 Wago Verwaltungsgesellschaft Mbh Eingebettete zyklische Redundanzprüfungswerte
US20200059437A1 (en) * 2018-08-20 2020-02-20 Advanced Micro Devices, Inc. Link layer data packing and packet flow control scheme
US11567831B2 (en) 2020-07-28 2023-01-31 Micron Technology, Inc. Generating a protected and balanced codeword
US11237906B1 (en) 2020-07-28 2022-02-01 Micron Technology, Inc. Generating a balanced codeword protected by an error correction code
US11494264B2 (en) * 2020-07-28 2022-11-08 Micron Technology, Inc. Generating a protected and balanced codeword
US11200112B1 (en) 2020-08-24 2021-12-14 International Business Machines Corporation Method and apparatus to reduce bandwidth overhead of CRC protection on a memory channel
CN115396344A (zh) * 2021-05-08 2022-11-25 华为技术有限公司 链路检测的方法、装置和设备

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0294533B1 (de) 1987-06-12 1994-01-19 International Business Machines Corporation Verfahren zum Schützen der Integrität von kodierten Signalen
US4937828A (en) 1988-11-04 1990-06-26 Westinghouse Electric Corp. High speed parallel CRC device for concatenated data frames
US5430738A (en) * 1991-01-31 1995-07-04 Pioneer Electronic Corporation Information transmission system for transmitting a digital information signal divided into packets with an information signal error diagnosis and correction function
JPH05115010A (ja) * 1991-10-22 1993-05-07 Canon Inc 画像復号化装置
AU7055594A (en) * 1993-06-07 1995-01-03 Tangible Domain Inc. Network link controller
US5617541A (en) 1994-12-21 1997-04-01 International Computer Science Institute System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets
US5745837A (en) * 1995-08-25 1998-04-28 Terayon Corporation Apparatus and method for digital data transmission over a CATV system using an ATM transport protocol and SCDMA
JP3340618B2 (ja) 1996-04-19 2002-11-05 松下電器産業株式会社 誤り検出方法
US6161207A (en) 1996-11-15 2000-12-12 Motorola, Inc. Communications unit and method of communicating having efficient packet acknowledgement
US5951707A (en) * 1997-06-27 1999-09-14 International Business Machines Corporation Method of partitioning CRC calculation for a low-cost ATM adapter
JP3580557B2 (ja) * 1997-08-01 2004-10-27 株式会社エヌ・ティ・ティ・ドコモ データ系列生成器、送信機、情報データ復号器、受信機、送受信機、データ系列生成方法、情報データ復号方法、および記録媒体
US6085253A (en) * 1997-08-01 2000-07-04 United Video Properties, Inc. System and method for transmitting and receiving data
US6148422A (en) * 1997-10-07 2000-11-14 Nortel Networks Limited Telecommunication network utilizing an error control protocol
US7185266B2 (en) 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US6111924A (en) * 1998-02-03 2000-08-29 Videoserver, Inc. Error-correction-code synchronization in a videoconferencing gateway
US6173431B1 (en) 1998-07-01 2001-01-09 Motorola, Inc. Method and apparatus for transmitting and receiving information packets using multi-layer error detection
FI108200B (fi) * 1998-09-14 2001-11-30 Nokia Mobile Phones Ltd Yhteyden vaihto matkaviestinverkkojen välillä
US6182267B1 (en) 1998-11-20 2001-01-30 Cisco Technology, Inc. Ensuring accurate data checksum
US6519259B1 (en) * 1999-02-18 2003-02-11 Avaya Technology Corp. Methods and apparatus for improved transmission of voice information in packet-based communication systems
US6330700B1 (en) * 1999-05-18 2001-12-11 Omnipoint Corporation Out-of-band forward error correction
US6633564B1 (en) * 1999-09-22 2003-10-14 Nortel Networks Limited Method and apparatus for inserting packets into a data stream
US6539503B1 (en) * 1999-11-23 2003-03-25 Hewlett-Packard Company Method and apparatus for testing error detection
JP4588201B2 (ja) * 1999-11-29 2010-11-24 パナソニック株式会社 無線通信システム
US6856628B1 (en) * 2000-10-26 2005-02-15 Motorola, Inc. Method and apparatus for tunneling packets in a packet data system
KR100612058B1 (ko) 2001-02-24 2006-08-14 인터내셔널 비지네스 머신즈 코포레이션 오버헤드가 없는 링크 레벨의 crc를 통한 결함 분리
US6950977B2 (en) 2001-03-15 2005-09-27 3G.Com, Inc. Mechanism for turbo decoding when CRC for partial blocks is provided
US7889742B2 (en) * 2001-09-29 2011-02-15 Qualcomm, Incorporated Method and system for improving data throughput
US8089940B2 (en) * 2001-10-05 2012-01-03 Qualcomm Incorporated Method and system for efficient and reliable data packet transmission
US6715055B1 (en) * 2001-10-15 2004-03-30 Advanced Micro Devices, Inc. Apparatus and method for allocating buffer space
WO2003034240A1 (en) * 2001-10-15 2003-04-24 Advanced Micro Devices, Inc. A peripheral interface circuit for an i/o node of a computer system
KR100460970B1 (ko) * 2002-01-10 2004-12-09 삼성전자주식회사 데이터 송수신 시스템 및 방법
US20040153935A1 (en) * 2002-07-19 2004-08-05 Niesen Joseph W. Reduced overhead CRC functionality for packets and link layer superframes
US7379467B1 (en) * 2003-05-08 2008-05-27 Cypress Semiconductor Corporation Scheduling store-forwarding of back-to-back multi-channel packet fragments
GB2416056B (en) * 2003-05-13 2006-08-23 Advanced Micro Devices Inc A system including a host connected to a plurality of memory modules via a serial memory interconnect
US7219294B2 (en) 2003-11-14 2007-05-15 Intel Corporation Early CRC delivery for partial frame
US7000048B2 (en) * 2003-12-18 2006-02-14 Intel Corporation Apparatus and method for parallel processing of network data on a single processing thread
US7324541B2 (en) * 2003-12-22 2008-01-29 Intel Corporation Switching device utilizing internal priority assignments
TW200529605A (en) * 2004-02-20 2005-09-01 Airgo Networks Inc Adaptive packet detection for detecting packets in a wireless medium
KR101058729B1 (ko) * 2004-05-19 2011-08-22 삼성전자주식회사 패킷 망을 이용하여 음성 서비스를 제공하는이동통신시스템에서 음성 패킷 데이터를 효율적으로처리하는 장치 및 방법
US7380169B2 (en) * 2004-09-24 2008-05-27 Intel Corporation Converting merge buffer system-kill errors to process-kill errors
US7801168B2 (en) * 2006-06-21 2010-09-21 Intel Corporation Systems and methods for multi-slotted power saving multiple polling in wireless communications
US7881303B2 (en) * 2006-12-13 2011-02-01 GlobalFoundries, Inc. Command packet packing to mitigate CRC overhead
US7840873B2 (en) * 2006-12-13 2010-11-23 Globalfoundries Inc. Partial CRC insertion in data packets for early forwarding

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012013592A1 (de) * 2012-07-10 2014-01-30 Krohne Messtechnik Gmbh Verfahren zum Übertragen von Datenpaketen und entsprechendes System mit Datenquelle und Datensenke
DE102012013592B4 (de) * 2012-07-10 2017-08-03 Krohne Messtechnik Gmbh Verfahren zum Übertragen von Datenpaketen und entsprechendes System mit Datenquelle und Datensenke

Also Published As

Publication number Publication date
USRE44487E1 (en) 2013-09-10
CN101681277B (zh) 2013-02-20
GB2457618A (en) 2009-08-26
CN101681277A (zh) 2010-03-24
US7881303B2 (en) 2011-02-01
GB0910329D0 (en) 2009-07-29
US20080148131A1 (en) 2008-06-19
TW200841168A (en) 2008-10-16
DE112007003086B4 (de) 2021-04-15
JP2010514264A (ja) 2010-04-30
KR20090099558A (ko) 2009-09-22
DE112007003086B8 (de) 2021-07-29
WO2008073494A1 (en) 2008-06-19
TWI461899B (zh) 2014-11-21

Similar Documents

Publication Publication Date Title
DE112007003086B4 (de) Befehlspaketzusammenstellung zur Vermeidung des CRC-Aufwands
DE60213616T2 (de) Eine allgemeine eingabe-/ausgabearchitektur, protokoll und entsprechende verfahren zur umsetzung der flusssteuerung
DE60207177T2 (de) System, welches zwei oder mehr Paketschnittstellen, einen Schalter, einen gemeinsamen Paket-DMA (Direct Memory Access)-Schaltkreis sowie einen L2 (Level 2) Cache aufweist
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE102018112790A1 (de) Sichere Doppelpufferung unter Verwendung sicherer verketteter DMA-Listen
DE112005001364T5 (de) Verarbeiten von Empfangsprotokolldateneinheiten
DE112008000736T5 (de) ECC-Implementierung in Komponenten ohne ECC
DE102007009909B4 (de) Verfahren zum Validieren einer atomaren Transaktion in einer Multikernmikroprozessorumgebung
US7840873B2 (en) Partial CRC insertion in data packets for early forwarding
DE112013005090T5 (de) Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit
DE112013007732T5 (de) PCI-Express-Erweiterungen
DE112018003355T5 (de) Techniken zum unterstützen mehrerer protokolle zwischen computersystemverbindungen
DE3114961A1 (de) Datenverarbeitungssystem
DE112006003298T5 (de) Durchführen einer auf einen Befehl auf Benutzerebene reagierenden zyklischen Redundanz-Prüfsummenoperation
EP2614438A1 (de) Verfahren zum bereitstellen eines wertes zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist
US20060282451A1 (en) Processing structured data
DE112010004006T5 (de) Zuverlässige kommunikationen in chipintegrierten netzwerken
DE112004002544B4 (de) Verfahren, System und Programm zur Identifizierung von Datenüberlauf
CN107197000B (zh) 静态动态混合缓存方法、装置及系统
US11341842B2 (en) Metering data management system and computer readable recording medium
DE102004042068B4 (de) Verfahren, computerlesbares Medium und System zum Handhaben eines fehlgeschlagenen Verbindungstrainings
EP1911213A1 (de) Flexray-kommunikationsbaustein, flexray-kommunikationscontroller und verfahren zur botschaftsübertragung zwischen einer flexray-kommunikationsverbindung und einem flexray-teilnehmer
CN103559673A (zh) 就诊闭环信息的组织系统和组织方法
DE10310055A1 (de) Systeme und Verfahren zum Erfassen und Kompensieren von Kleinblockdatenübertragungen
DE112004001248B4 (de) Mikroprozessor und Verfahren zum Ausführen einer index-behafteten Speicher-zu-Lade-Weiterleitung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8128 New person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,

R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: GLOBALFOUNDRIES U.S. INC., SANTA CLARA, US

Free format text: FORMER OWNER: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

R082 Change of representative

Representative=s name: GRUENECKER PATENT- UND RECHTSANWAELTE PARTG MB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 112007003817

Country of ref document: DE

R020 Patent grant now final