DE60217221T2 - Ein-Chip System zur Paketverarbeitung - Google Patents

Ein-Chip System zur Paketverarbeitung Download PDF

Info

Publication number
DE60217221T2
DE60217221T2 DE60217221T DE60217221T DE60217221T2 DE 60217221 T2 DE60217221 T2 DE 60217221T2 DE 60217221 T DE60217221 T DE 60217221T DE 60217221 T DE60217221 T DE 60217221T DE 60217221 T2 DE60217221 T2 DE 60217221T2
Authority
DE
Germany
Prior art keywords
packet
memory
cache
block
memory controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60217221T
Other languages
English (en)
Other versions
DE60217221D1 (de
Inventor
Mark D. Menlo Park Hayter
Shailendra S. San Jose Desai
Daniel W. Menlo Park Dobberpuhl
Kwong-Tak A. Cupertino Chui
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.)
Broadcom Corp
Original Assignee
Broadcom Corp
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 Broadcom Corp filed Critical Broadcom Corp
Publication of DE60217221D1 publication Critical patent/DE60217221D1/de
Application granted granted Critical
Publication of DE60217221T2 publication Critical patent/DE60217221T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3018Input queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die vorliegende Erfindung betrifft das Gebiet der Verarbeitung und insbesondere – aber nicht ausschließlich – Paketverarbeitung, Vernetzung, und ein Ein-Chip-System.
  • Die Vernetzung von Computersystemen und anderen elektronischen Vorrichtungen setzt sich auf allen Ebenen des Netzes immer mehr durch. Computersysteme in Büros und manchmal sogar Haushalten werden in lokalen Netzen (LANs) vernetzt. Geografisch entfernte Computersysteme können in Weitbereichsnetzen (WANs) vernetzt werden. Das Internet kann als ein Beispiel für ein WAN angesehen werden.
  • Typischerweise kommunizieren Systeme auf einem Netz mit einander unter Verwendung von Paketen. Das Paket weist einen Header und Daten auf. Der Header identifiziert die Sende- und Empfangssysteme und kann andere Informationen wie etwa die Länge des Paketes, einen Pakettyp usw. aufweisen. Je nach der Topologie des Netzes kann es nötig sein, dass Pakete von dem Sendesystem zu dem Empfangssystem geroutet werden. Routing beinhaltet im Allgemeinen eine oder mehr Vorrichtungen in dem Netz, welche das Paket überprüfen, um seinen Zielort zu bestimmen und das Paket an eine andere Vorrichtung zu übertragen, bis das Paket an der Zielvorrichtung ankommt. Zusätzlich können Pakete während der Übertragung überprüft werden, um Merkmale wie etwa Quality of Service (QoS), Cache-Speichern von Informationen usw. zur Verfügung zu stellen. Daher ist eine leistungsfähige Paketverarbeitung für die Leistungsfähigkeit des Netzes insgesamt von entscheidender Wichtigkeit.
  • Es wird ein beispielhaftes Paketverarbeitungssystem beschrieben. Ein Prozessor, ein Cache-Speicher, ein Speichercontroller und mindestens eine Paketschnittstellenschaltung können in eine einzelne integrierte Schaltung integriert sein. Bei einer beispielhaften Implementierung kann das Design die Integrierung nutzen, um eine enge Kopplung zwischen dem Prozessor, dem Cache-Speicher, dem Speichercontroller und der Paketschnittstellenschaltung zu bilden. Beispielsweise können Interrupts eng mit dem Prozessor gekoppelt werden und dabei eine geringe Latenzzeit zu dem Interrupt sowie einen Zugriff auf Interrupt-Status-/Ursachenregister mit einer geringen Latenzzeit besitzen. Die Speicherkohärenz unter den Vorrichtungen kann aufrechterhalten werden, was die Latenzzeit, bis ein Schreiben durch eine Vorrichtung für andere Vorrichtungen sichtbar wird, reduzieren kann. Die Speicherkohärenz und der Zugriff mit geringer Latenzzeit auf Speicher durch die Paketschnittstellenschaltung kann eine enge Kopplung für Deskriptoren zur Verfügung stellen, die verwendet werden, um Paketdaten zu speichern.
  • Bei einer beispielhaften Ausführungsform (die in integrierten oder nicht integrierten Systemen verwendet werden kann) ist die Paketschnittstellenschaltung dazu konfiguriert, eine Zuweisung im Cache-Speicher eines Teils eines empfangenen Paketes zu veranlassen. Insbesondere kann der Teil Bytes umfassen, von denen erwartet wird, dass sie von den Prozessoren verarbeitet werden, während die übrigen Paketdaten im Speicher gespeichert werden können. Die Prozessoren können auf Cache-Speicher-Latenzzeiten für Zugriff auf die Paketdaten treffen, und eine Belastung des Cache-Speichers durch Daten, auf die von den Prozessoren nicht zugegriffen wird, kann vermieden werden.
  • Bei einer beispielhaften Ausführungsform (die in integrierten oder nicht integrierten Systemen verwendet werden kann) kann der Speichercontroller so konfiguriert sein, dass er Speichertransaktionen selektiv blockiert. Insbesondere kann der Speichercontroller mindestens zwei Blocksignale – eines für die Paketschnittstellenschaltung und eines für andere Vorrichtungen – implementieren. Die Blocksignale können zum Steuern der Initiierung von Speichertransaktionen verwendet werden, wenn sich die Eingabewarteschlange des Speichercontrollers dem vollen Zustand annähert. Insbesondere kann das Blocksignal für die anderen Vorrichtungen aktiviert werden, wenn die Warteschlange noch übrige Einträge hat (z.B. bei einem Füllungsgrad von 75%, obgleich der Schwellwert auf jedes Niveau programmiert werden kann), um die Latenzzeit zu reduzieren, auf die Lese-Speichertransaktionen von der Paketschnittstellenschaltung (zum Lesen von Paketdaten, die auf der externen Paketschnittstelle übertragen werden sollen) treffen können, wenn sich die Warteschlange mit Transaktionen füllt. Bei einigen Ausführungsformen kann ein Misserfolg des kontinuierlichen Übertragens eines vollen Paketes auf der externen Paketschnittstelle dazu führen, dass die Paketübertragung fehlschlägt und eine Übertragungswiederholung durchgeführt werden muss. Durch Verringern der Latenzzeit kann die Wahrscheinlichkeit verringert werden, dass darauf folgende Cache-Speicherblöcke des Paketes bei Bedarf in der Paketschnittstellenschaltung nicht verfügbar sind.
  • Allgemein gesprochen wird eine beispielhafte Vorrichtung in Betracht gezogen, die folgendes aufweist: einen Prozessor, der mit einer Zwischenverbindung gekoppelt ist; einen Cache-Speicher, der mit der Zwischenverbindung gekoppelt ist; einen Spei chercontroller, der mit der Zwischenverbindung gekoppelt ist; und eine Paketschnittstellenschaltung, welche Pakete von einer Paketschnittstelle empfängt und veranlasst, dass die Pakete zum Speichern auf der Zwischenverbindung übertragen werden. Der Prozessor, der Cache-Speicher, der Speichercontroller und die Paketschnittstellenschaltung sind in ein einzelnes Halbleitersubstrat integriert. Der Prozessor kann programmiert sein, um die von der Paketschnittstelle empfangenen Pakete zu verarbeiten.
  • Ferner wird ein beispielhaftes Verfahren in Betracht gezogen. Ein Paket wird von einer Paketschnittstelle in einer Paketschnittstellenschaltung empfangen. Das Paket wird zum Speichern auf einer Zwischenverbindung übertragen, mit der ein Cache-Speicher, ein Speichercontroller und ein Prozessor gekoppelt sind. Der Prozessor, der Cache-Speicher, der Speichercontroller und die Paketschnittstellenschaltung sind in ein einzelnes Halbleitersubstrat integriert.
  • Die Schrift EP 0 498 201 beschreibt eine einschlägige Adapterarchitektur mit großer Bandbreite, die einen Paketspeicher aufweist. Pakete, die an einem Anschluss eintreffen, werden in dem Paketspeicher gespeichert. Eine Paketspeicherschnittstelle speichert ein empfangenes Paket zusammen mit einer Datenheader-Steuerinformation in den Paketspeicher.
  • Die Schrift US 5 778 414 beschreibt eine Rahmenverarbeitungs-Engine zum Empfangen und Verarbeiten eines Datenrahmens mit einem Header und einer Nutzlast.
  • Es ist eine Aufgabe der vorliegenden Erfindung, eine Vorrichtung und ein Verfahren zum engen Koppeln von Interrupts mit dem Prozessor zur Verfügung zu stellen, mit einer geringen Latenzzeit zu dem Interrupt sowie einem Zugriff mit geringer Latenzzeit auf Interrupt-Status-/Ursachenregister.
  • Diese Aufgabe wird durch eine Vorrichtung gemäß den Angaben in dem unabhängigen Patentanspruch 1, ein Trägermedium (Patentanspruch 9), ein Computerprogramm (Patentanspruch 14) und ein Computerprogramm-Trägermedium (Patentanspruch 15) gelöst.
  • Vorteilhafte Ausführungsformen der Erfindung sind in den Unteransprüchen definiert.
  • Die nachfolgende ausführliche Beschreibung soll nur beispielhaft sein und bezieht sich auf die beigefügte Zeichnung, von der nun eine kurze Beschreibung gegeben wird.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Systems.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Paketes.
  • 3 ist ein Diagramm, welches das Vormerken ("targeting") von Paketheader-Daten in dem L2-Cachespeicher veranschaulicht.
  • 4 ist ein Zeitablaufdiagramm, das eine Ausführungsform des Vormerkens von Paketheader-Daten in dem L2-Cachespeicher veranschaulicht.
  • 5 ist ein Blockdiagramm einer Ausführungsform von Deskriptoren für eine in 1 gezeigte Paketschnittstellenschaltung.
  • 6 ist ein Ablaufdiagramm zur Veranschaulichung des Betriebs einer Ausführungsform der in 1 gezeigten Paketschnittstellenschaltung während des Paketempfangs.
  • 7 ist ein Ablaufdiagramm zur Veranschaulichung des Betriebs einer Ausführungsform eines Prozessors, der unterbrochen wurde.
  • 8 ist ein Blockdiagramm einer Ausführungsform verschiedener Einheiten aus 1, welches zwischen den Einheiten vorgesehene Blocksignale zum Blockieren der Initiierung von Transaktionen veranschaulicht.
  • 9 ist ein Ablaufdiagramm zur Veranschaulichung des Betriebs einer Ausführungsform des in 8 gezeigten Speichercontrollers zum Aktivieren der Blocksignale.
  • 10 ist ein Blockdiagramm einer Ausführungsform eines Trägermediums.
  • Während die Erfindung verschiedenen Modifikationen und alternativen Formen zugänglich ist, werden konkrete Ausführungsformen davon beispielhaft in der Zeichnung gezeigt und werden vorliegend ausführlich beschrieben. Es dürfte jedoch verständlich sein, dass die Zeichnung und deren ausführliche Beschreibung nicht dazu bestimmt sind, die Erfindung auf die besondere beschriebene Form zu einzuschränken, sondern es ist im Gegenteil beabsichtigt, dass die Erfindung alle Modifikationen, Äquivalente und Alternativen abdeckt, die in den Schutzbereich der vorliegenden Erfindung fallen.
  • Unter Bezugnahme auf 1 ist dort ein Blockdiagramm einer Ausführungsform eines Systems 10 gezeigt. Andere Ausführungsformen sind möglich und werden in Betracht gezogen. Bei der Ausführungsform von 1 weist das System 10 Prozessoren 12A12B, einen L2-Cachespeicher 14, einen Speichercontroller 16, eine Ein/Ausgabe (I/O)-Bridge 20, eine Gruppe von Paketschnittstellenschaltungen 22A22C und einen Interrupt-Mapper 28 auf. Das System 10 kann einen Bus 24 aufweisen, der die verschiedenen Komponenten des Systems 10 unter einander verbindet. Wie in 1 veranschaulicht ist, sind die Prozessoren 12A12B, der L2-Cachespeicher 14, der Speichercontroller 16 und die I/O-Bridge 20 jeweils mit dem Bus 24 gekoppelt. Somit können alle Prozessoren 12A12B, der L2-Cachespeicher 14, der Speichercontroller 16 und die I/O-Bridge 20 jeweils ein Agent auf dem Bus 24 für die veranschaulichte Ausführungsform sein. Der Interrupt-Controller 28 ist auch mit dem Bus 24 gekoppelt gezeigt, um mit den Prozessoren 12A12B zu kommunizieren (die Prozessoren 12A12B können z.B. Status-/Ursachenregister in dem Interrupt-Controller 28 lesen). Die I/O-Bridge 20 ist mit den Paketschnittstellenschaltungen 22A22C gekoppelt, die ferner mit jeweiligen Bitübertragungsschicht-Schaltungen (PHYs) 30A30C gekoppelt sind. Der Interrupt-Mapper 28 ist so gekoppelt, dass er Interrupts für die Prozessoren 12A12B zur Verfügung stellt, und ist ferner so gekoppelt, dass er Interrupt-Anforderungen von den Paketschnittstellenschaltungen 22A22C (die Kopplung der Paketschnittstellenschaltung 22A ist beispielhaft in 1 veranschaulicht) und von anderen Vorrichtungen in dem System 10 (nicht gezeigt) empfängt. Der L2-Cachespeicher 14 ist mit dem Speichercontroller 16 gekoppelt, der ferner mit einem Speicher 26 gekoppelt ist. Die Paketschnittstellenschaltung 22A ist in 1 in mehr Detail gezeigt, und die Paketschnittstellenschaltungen 22B22C können ähnlich konfiguriert sein. Insbesondere weist die Paketschnittstellenschaltung 22A in der Ausführungsform von 1 eine Tx/Rx-Steuerschaltung 32, einen Rx-FIFO 34, einen Tx-FIFO 36, einen DMA-Controller 38 und ein oder mehr Deskriptor-Konfigurationsregister 40 auf, sowie ein Konfigurationsregister 42, das einen L2-Sollwert speichert. Der DMA-Controller 38 ist mit der Tx/Rx-Steuerschaltung 32, dem Rx-FIFO 34, dem Tx-FIFO 36, den Deskriptor Konfigurationsregistern 40 und dem Konfigurationsregister 42 gekoppelt. Die Tx/Rx-Steuerschaltung 32 ist ferner mit dem Tx-FIFO 36 und dem Rx-FIFO 34 gekoppelt.
  • Bei einer Implementierung können das System 10 (das bei der dargestellten Ausführungsform durch den gestrichelten Kasten begrenzt ist, welcher die Prozessoren 12A12B, den L2-Cachespeicher 14, den Speichercontroller 16, den Interrupt-Mapper 28, die I/O-Bridge 20, die Paketschnittstellenschaltungen 22A22C und den Bus 24 umschließt) in eine einzelne integrierte Schaltung in einer Ein-Chip-Systemkonfiguration integriert sein. Das System 10 kann so entworfen sein, dass es die Integration mittels enger Kopplung der Komponenten nutzt, um eine leistungsfähige Paketverarbeitung zur Verfügung zu stellen. Konkret gesprochen können die Prozessoren 12A12B, der L2-Cachespeicher 14, der Speichercontroller 16 und die Paketschnittstellenschaltungen 22A22C (durch die I/O-Bridge 20) eng mit empfangen Paketen gekoppelt werden, diese verarbeiten, und die Pakete weiter leiten (falls nötig).
  • Die enge Kopplung kann sich auf mehrere Weisen zeigen. Beispielsweise können die Interrupts eng gekoppelt sein. Eine I/O-Vorrichtung (z.B. die Paketschnittstellenschaltungen 22A22C) kann einen Interrupt anfordern, der (über den Interrupt-Mapper 28) auf einen der Prozessoren 12A12B gemappt wird. Die Übertragung des Interrupt zu dem Prozessor kann schnell sein, da die Signale mit der Taktfrequenz der integrierten Schaltung übertragen werden können, welche das System 10 umfasst (im Gegensatz zu der Zwischenverbindung von separaten integrierten Schaltungen). Wenn der Prozessor 12A12B die Interrupt Service Routine ausführt, werden typischerweise ein oder mehr Statusregister in dem Interrupt-Mapper 28 und/oder der unterbrechenden Vorrichtung gelesen. Diese Statusregister-Lesevorgänge können mit einer relativ geringen Latenzzeit über den Bus 24 und die I/O-Bridge 20 stattfinden (z.B. im Vergleich mit einem peripheren Bus mit hoher Latenzzeit wie etwa PCI). Die Latenzzeit der Statusregister-Lesevorgänge kann bei einigen Ausführungsformen eine oder mehr Größenordnungen weniger betragen als die eines peripheren Busses wie etwa PCI.
  • Eine weitere Auswirkung der engen Kopplung kann die Verwendung von Hardwarebasierter Speicherkohärenz unter den integrierten Vorrichtungen sein. Der Bus 24 kann kohärente Transaktionen unterstützen, so dass im Cache gespeicherte Kopien von Daten in den Agenten (und im Falle der I/O-Bridge 20 in den mit diesem Agent gekoppelten Vorrichtungen) auf geeignete Weise gehandhabt werden, so dass ein Lesevorgang von bestimmten Daten die neueste Aktualisierung für die bestimmten Daten erhält. Die erzwungene Kohärenz kann die enge Kommunikation zwischen den Vorrichtungen verbessern, da von einer Vorrichtung durchgeführte Aktualisierungen schnell für die Vorrichtungen sichtbar sind, welche die aktualisierten Daten lesen.
  • Eine Paketverarbeitung kann in dem System 10 im Allgemeinen wie folgt stattfinden: Eine Paketschnittstellenschaltung 22A22C kann ein Paket von der externen Schnittstelle 44A44C an die Paketschnittstellenschaltung (z.B. die Schnittstelle von den PHY-Schaltungen 30A30C) empfangen. Die Paketschnittstellenschaltung ist mit einem oder mehr Deskriptoren versehen, welche Datenpuffer im Speicher für das Speichern von Paketen angeben, und wählt einen Deskriptor für das Paket. Die Paketschnittstellenschaltung leitet das Paket per DMA (direkter Speicherzugriff) in den Speicher durch die I/O-Bridge 20 und den Speichercontroller 16. Wenn das Paket vollständig ist (bzw. wenn bei einigen Ausführungsformen mehrere Pakete vollständig sind), kann die Paketschnittstellenschaltung einen der Prozessoren 12A12B unterbrechen. Als Alternative können einer oder beide der Prozessoren 12A12B die Statusinformationen in den Deskriptoren überwachen. Die Paketschnittstellenschaltungen können die Deskriptoren aktualisieren, wenn ein Paket vollständig ist, und die Prozessoren 12A12B können die Aktualisierung erfassen, da die Transaktion zum Aktualisieren des Deskriptors kohärent ist. Der Prozessor 12A12B verarbeitet das Paket oder die Pakete und kann, falls gewünscht, das Paket (durch eine der Paketschnittstellenschaltungen 22A22C oder eine andere I/O-Vorrichtung oder Schnittstelle) erneut übertragen. Das System 10 kann auch Pakete im Ansprechen auf Anwendungen erzeugen, die auf den Prozessoren 12A12B laufen, und diese Pakete können ebenso übertragen werden. Um ein Paket durch eine der Paketschnittstellenschaltungen zu übertragen, kann der Prozessor 12A12B das Paket in einen von der gewünschten Paketschnittstellenschaltung verwendeten Deskriptor kopieren, und ein Statusbit in dem Deskriptor kann geändert werden, um anzuzeigen, dass das Paket für die Übertragung bereit ist. Da die Änderung kohärent ist, kann die Paketschnittstellenschaltung die Änderung schnell empfangen und kann mit dem Übertragen des Pakets beginnen.
  • Die Tx/Rx-Steuerschaltung 32 kann eine Media Access Controller (MAC)-Schaltung gemäß der Ethernet-Spezifikation aufweisen. Insbesondere bei einer Implementierung kann die Tx/Rx-Steuerschaltung 32 den MAC-Teil der Institute for Electrical und Electronic Engineers (IEEE)-Spezifikation 802.3 für Raten von 10 Megabits, 100 Megabit/s und 1 Gigabit/s erfüllen. Bei einer Implementierung kann die Tx/Rx-Steuerschaltung 32 auch konfigurierbar sein, um als ein generischer Paketempfänger/-sender zu arbeiten. Beispielsweise kann der Anfang oder das Ende von Paketen unter Verwendung von Steuersignalen an der externen Schnittstelle 44A44C markiert werden, und die zwischen aufeinander folgenden Anfängen oder Enden übertra genen Daten können als ein Paket behandelt werden. Eine Implementierung schließlich kann es ermöglichen, dass die drei Paketschnittstellenschaltungen 22A22C als zwei 16Bit-Paketempfänger/-sender betrieben werden.
  • Die Schnittstelle zwischen jeder Paketschnittstellenschaltung 22A22C und externen Vorrichtungen (Bezugszeichen 44A44C in 1) können die Media Independent Interface (MII) oder die Gigabit MII (GMII)-Schnittstellen zu den PHY-Schaltungen 30A30C sein. Als Alternative kann die externe Schnittstelle eine generische Paketschnittstelle sein, in der entweder der Anfang oder das Ende von Paketen unter Verwendung von Steuersignalen markiert wird. Bei wieder einer anderen Alternative können die drei externen Schnittstellen als zwei breitere Paketschnittstellen betrieben werden (z.B. die vorausgehend erwähnten 16Bit-Schnittstellen). Die Paketschnittstellenschaltungen können konfigurierbar sein (z.B. während des Rücksetzens), um die Schnittstelle in einer beliebigen der erwähnten Betriebsarten zu betreiben.
  • Die Paketschnittstellenschaltung 22A ist für eine Ausführungsform in 1 ausführlicher veranschaulicht. Wie bereits erwähnt wurde, können die anderen Paketschnittstellenschaltungen 22B22C auf ähnliche Weise konfiguriert sein. Die Tx/Rx-Steuerschaltung 32 kann die Schaltungen zum Implementieren einer Ethernet MAC-Operation aufweisen und kann ferner Schaltungen zum Implementieren der generischen Paketschnittstellen aufweisen, wie vorausgehend beschrieben wurde. Der Rx-FIFO 34 ist ein first-in, first-out Puffer zum Empfangen von Paketen von der Schnittstelle 44A zum Speichern im Speicher. Der Tx-FIFO 36 ist auf ähnliche Weise ein FIFO zum Empfangen von Paketen aus dem Speicher für die Übertragung auf der Schnittstelle 44A. Im Allgemeinen kann jeder der FIFOs 34 und 36 eine Mehrzahl von Einträgen zum Speichern von Paketdaten aufweisen (die einen Header, die Datennutzlast und einen Trailer umfassen können). Die FIFOs sind möglicherweise nicht groß genug, um ein ganzes Paket auf einmal zu speichern, können aber im Allgemeinen verwendet werden, um das System 10 von den Leitungsraten der externen Schnittstelle 44A von dem Bus 24 abzupuffern. Während Paketdaten an der Schnittstelle 44A empfangen werden, speichert die Tx/Rx-Steuerschaltung 32 die Daten im Allgemeinen in dem Rx-FIFO 34. Zusätzlich liest die Tx/Rx-Steuerschaltung 32 Daten aus dem Tx-FIFO 36 für die Übertragung an der Schnittstelle 44A aus.
  • Der DMA-Controller 38 ist dazu vorgesehen, die Paketdaten zu und von dem Speicher (und/oder dem L2-Cachespeicher 14) zu übertragen. Die Deskriptor-Konfigura tionsregister 40 lokalisieren die Deskriptoren, die der Paketschnittstellenschaltung 22A zugeordnet sind. Jeder Deskriptor weist einen Zeiger auf mindestens einen Datenpuffer im Speicher auf (einen reservierten Bereich im Speicher, der dem Deskriptor durch Software zugewiesen ist, welche auf den Prozessoren 12A12B läuft). Der Deskriptor kann auch Statusinformationen aufweisen, die dem Datenpuffer entsprechen. Der DMA-Controller leitet Daten per DMA zu dem Tx-FIFO 36 (für die Übertragung an der Schnittstelle 44A) von einem Datenpuffer, der ein zu übertragendes Paket speichert, und leitet Daten per DMA von dem Rx-FIFO 34 zu einem Datenpuffer im Ansprechen auf das Empfangen von Paketen. Der DMA weist eine oder mehr Transaktionen auf dem Bus 24 auf. Der Bus 24 kann so konfiguriert sein, dass er bis zu einen Cache-Speicherblock Daten pro Transaktion überträgt, so dass die Anzahl von Transaktionen pro Paket von der Anzahl der Cache-Speicherblöcke in dem Paket abhängt. Im Allgemeinen kann der DMA-Controller 38 es ermöglichen, dass ein Cache-Speicherblock von Paketdaten sich in dem Rx-FIFO 34 ansammelt, und kann dann eine Transaktion auf dem Bus 24 initiieren, um den Cache-Speicherblock zu übertragen. Wenn das letzte Byte eines Paketes empfangen wurde und ein unvollständiger Cache-Speicherblock übrig bleibt, kann der DMA-Controller 38 den unvollständigen Cache-Speicherblock übertragen (z.B. als einen weniger-als-Cache-Speicherblock übertragen oder zuerst durch Lesen des Blocks, Modifizieren des Blocks mit den empfangenen Daten, und Schreiben des Cache-Speicherblocks zurück in den Speicher). Auf ähnliche Weise, falls der Tx-FIFO 36 genügend freie Einträge aufweist, um einen Cache-Speicherblock eines in der Übertragung befindlichen Paketes zu speichern, kann der DMA-Controller 38 eine Transaktion zum Lesen des nächsten Cache-Speicherblocks des Paketes und Speichern des Blocks in dem Tx-FIFO 36 initiieren.
  • Für empfangene Pakete kann die Tx/Rx-Steuerschaltung 32 so konfiguriert sein, dass sie den Anfang des Paketes in dem Rx-FIFO 34 anzeigt. Bei einer Implementierung kann der Rx-FIFO 34 beispielsweise Statusinformationen für jeden Eintrag aufweisen. Die Statusinformationen können anzeigen, ob der Eintrag der Anfang eines Paketes ist. Als Alternative kann die Rx/Tx Steuerschaltung 32 direkt mit dem DMA-Controller 38 kommunizieren, um anzuzeigen, welche Einträge der Anfang eines Paketes sind.
  • Der DMA-Controller 38 kann bei einer Ausführungsform so konfiguriert sein, dass er einen Teil eines empfangenen Paketes zum Speichern im L2-Cachespeicher 14 vor merkt. Konkret gesprochen kann es wünschenswert sein, dass der Header eines Paketes in dem L2-Cachespeicher 14 gespeichert wird, während die Datennutzlast im Speicher gespeichert werden kann. Der Prozessor 12A12B, der das Paket verarbeitet, kann typischerweise an den Header-Informationen operieren, und kann nicht an der Datennutzlast operieren. Falls der Header in dem L2-Cachespeicher 14 gespeichert ist, kann die Latenzzeit reduziert sein, die der Prozessor 12A12B beim Lesen des Headers erfährt. Während viele Paketverarbeitungsfunktionen nur Zugriff auf den Header erfordern können, wird es üblicher, beim Verarbeiten eines Paketes einen Teil der Datennutzlast ebenfalls zu verarbeiten (z.B. um komplexere Merkmale wie etwa Web-Caching zu versuchen). Daher kann es wünschenswert sein, auch einen Teil der Datennutzlast eines Paketes im L2-Cachespeicher 14 zu speichern. Es kann jedoch wünschenswert sein, Teile des Paketes zu speichern, an denen nicht von den Prozessoren 12A12B im Speicher operiert wird, um zu verhindern, dass der L2-Cachespeicher 14 mit Daten belastet wird, auf die von den Prozessoren 12A12B nicht zugegriffen wird. Somit umfasst die Paketschnittstellenschaltung 22A das Konfigurationsregister 42, das mit einer Größe des Teils am Anfang eines Paketes programmiert wird, das im L2-Cachespeicher 14 gespeichert werden soll. Die übrigen Bytes können im Speicher gespeichert werden. Zusätzliche Details bezüglich des Speicherns eines Teils des Paketes im L2-Cachespeicher 14 werden weiter unten angegeben. Es wird angemerkt, dass zwar die Größe des Teil des Paketes, der im L2-Cachespeicher 14 gespeichert werden soll, bei der dargestellten Ausführungsform in das Konfigurationsregister 42 programmiert werden kann, dass die Größe aber nach Wunsch bei anderen Ausführungsformen in der Hardware festgelegt sein kann. Die Größe kann als eine Anzahl von Bytes (die der DMA-Controller 38 in eine Anzahl von Cache-Speicherblöcken konvertieren kann, welche die Bytes umfassen), eine Anzahl von Cache-Speicherblöcken usw. programmiert werden.
  • Wie bereits erwähnt wurde, kann es sein, dass der Tx-FIFO 36 nicht groß genug ist, um ein gesamtes Paket für die Übertragung zu speichern. Um ein Paket zu übertragen, kann der DMA-Controller 38 Transaktionen zum Lesen der Paketdaten aus dem Speicher durchführen und kann die Daten in dem Tx-FIFO 36 speichern. Wenn der DMA-Controller 38 den Tx-FIFO 36 füllt, kann der DMA-Controller 38 weitere Transaktionen verzögern, bis die Tx/Rx-Steuerschaltung 32 genügend Daten aus dem Tx-FIFO 36 heraus transferiert, um Platz für einen anderen Cache-Speicherblock der Paketdaten zu schaffen. Sobald auf dem Ethernet ein Paket mit der Übertragung beginnt (und falls es keine Paketkollisionen gibt), wird das Paket kontinuierlich über tragen. Falls das Paket nicht kontinuierlich übertragen werden kann, wird es vom Empfänger fallen gelassen und muss erneut übertragen werden. Somit kann es wünschenswert sein, zu verhindern, dass der Tx-FIFO 36 leer wird, bis das Paket vollständig übertragen wurde.
  • In einigen Fällen kann die Kombination aus Wettbewerb um den Bus 24 und der Anzahl von Speichertransaktionen, die im Speichercontroller 16 aufgereiht sind, den DMA-Controller 38 lange genug verzögern, damit der Tx-FIFO 36 leer wird. Um diesem Effekt zumindest teilweise entgegen zu wirken, kann der Speichercontroller 16 selektiv Transaktionen von anderen Agenten blockieren, wenn sich der Eingangspuffer des Speichercontrollers 16 dem vollen Zustand annähert. Beispielsweise kann das System 10 ein Transaktionsblockierverfahren anwenden, bei dem der Speichercontroller 16 mindestens zwei Blocksignale verwendet: eines für die Paketschnittstellenschaltungen 22A22C und ein anderes für die anderen Agenten. Die Blocksignale werden verwendet, um die Ausgabe neuer Transaktionen an den Speichercontroller zu blockieren (z.B. weil der Eingangspuffer des Speichercontrollers voll ist). Eine Quelle, die ein aktiviertes Blocksignal von dem Speichercontroller 16 empfängt, ist daran gehindert, Transaktionen an den Speichercontroller 16 zu initiieren. Die Quelle kann eine Arbitration für den Bus unterbinden, wenn die Quelle nur Speichertransaktionen durchzuführen hat.
  • Das Blocksignal an die anderen Agenten kann aktiviert werden, bevor der Eingangspuffer tatsächlich voll ist (z.B. wenn der Puffer zu ca. 75% voll ist), wodurch die anderen Agenten abgehalten werden und es den Paketschnittstellenschaltungen 22A22C ermöglicht wird, die Durchführung von Transaktionen an den Speichercontroller 16 fortzusetzen, wenn sich der Speichercontroller 16 mit Transaktionen füllt, die abgearbeitet werden müssen. Das Blocksignal für die Paketschnittstellenschaltungen 22A22C wiederum kann aktiviert werden, wenn der Eingangspuffer annähernd voll ist. Die Verwendung von separaten Blocksignalen kann den Effekt haben, dass die maximale Latenzzeit verringert wird, welche die Paketschnittstellenschaltungen 22A22C erfahren, wenn der Speichercontroller 16 große Anzahlen von Anforderungen empfängt. Da ferner die anderen Agenten eine Arbitration unterbinden können, wenn sie nur Speichertransaktionen durchzuführen haben, kann die Verwendung der Blocksignale den Effekt haben, dass es den Paketschnittstellenschaltungen 22A22C ermöglicht wird, den Arbitrationsmechanismus zu umgehen und während solcher Zeiten mehr Busbandbreite auf dem Bus 24 zu erhalten, als der Fall wäre, wenn es allen anderen Agenten erlaubt wäre zu arbitrieren. Beispielsweise wenn der Arbitrationsmechanismus ein Round-Robin-Prioritätsverfahren wäre (bei dem die Arbitrationspriorität eines Agenten zu der niedrigsten Priorität geändert wird, wenn der Agent die Arbitration für den Bus 24 gewinnt, und der Agent, der die höchste Priorität anfordert, die Arbitration gewinnt), kann den Paketschnittstellenschaltungen 22A22C der Bus einmal gewährt werden und dann nicht mehr wieder gewährt werden, bis der Bus jedem anderen arbitrierenden Agenten gewährt worden ist. Diese zusätzliche Latenzzeit könnte den Tx-FIFO 36 weiterhin veranlassen, sich vor dem Abschluss des Transfer eines Paketes zu entleeren. Da alle anderen arbitrierenden Agenten (wenn sie nur Speichertransaktionen durchzuführen haben) eine Arbitration im Ansprechen auf das Blocksignal unterbinden, das sie von dem Speichercontroller empfangen, umgehen die Paketschnittstellenschaltungen 22A22C effektiv die Arbitration und können die Arbitration häufiger gewinnen.
  • Bei einer Ausführungsform kann der DMA-Controller einen oder mehr DMA-Sendekanäle und einen oder mehr DMA-Empfangskanäle aufweisen. Die Größe des Teils des Paketes, das im L2-Cachespeicher 14 gespeichert werden soll, kann auf einer Kanal-um-Kanal-Basis programmierbar sein Falls gewünscht, kann jeder Kanal ferner mit separaten Gruppen von Deskriptoren über die Deskriptor-Konfigurationsregistern 40 versehen werden.
  • Es wird angemerkt, dass zwar Ethernet MACs bei der vorliegenden Ausführungsform verwendet werden, dass aber andere Ausführungsformen jeglichen Typ von Paketschnittstelle unterstützen können. Beispielsweise unterstützen die oben erwähnten Ausführungsformen bei einigen Betriebsarten eine generische Paketschnittstelle. Andere Paketschnittstellen können X.25, Frame Relay, Asynchronous Transfer Mode (ATM) usw. umfassen. Somit werden Ausführungsformen des Systems 10 erwogen, die jeglichen Typ von Paketschnittstellenschaltung umfassen. Eine Paketschnittstellenschaltung ist eine Schaltung, die dazu konfiguriert ist, Pakete von einer Paketschnittstelle zu empfangen und die Pakete zum Verarbeiten zu speichern. Bei verschiedenen Implementierungen können Paketschnittstellen Pakete auf der Grundlage von vorgegebenen Filterkriterien (z.B. Adressen) filtern, Overhead aus den Paketdaten entfernen, der dem Pegel der Paketschnittstellenschaltung entspricht (z.B. den MAC-Overhead), das Paket auf Fehler überprüfen (z.B. CRC-Fehler, Größenfehler usw.).
  • Der Interrupt-Mapper 28 kann jeglichen Mappingmechanismus anwenden. Bei einer Ausführungsform kann der Interrupt-Mapper 28 ein Maskierbit und ein Mapregister für jede Interrupt-Anforderung und für jeden Prozessor 12A12B aufweisen. Das Maskierbit zeigt an, ob der Interrupt für den bestimmten Prozessor 12A oder 12B, maskiert ist und das Mapregister zeigt an, auf welche der Interrupt-Leitungen auf dem bestimmten Prozessor 12A oder 12B die Interrupt-Anforderung gemappt ist. Falls eine Ausführungsform der Prozessoren 12A12B nur eine Interrupt-Leitung aufweist, können die Mapregister gelöscht werden. Im Allgemeinen, wenn eine Interrupt-Anforderung empfangen wird und nicht maskiert ist, aktiviert der Interrupt-Mapper 28 das Interrupt-Signal gemäß den Angaben im Mapregister auf den Prozessor 12A oder 12B.
  • Die Prozessoren 12A12B können für jede Befehlssatzarchitektur entworfen sein und können Programme ausführen, die für diese Befehlssatzarchitektur geschrieben sind. Veranschaulichende Befehlssatzarchitekturen können die MIPS-Befehlssatzarchitektur (einschließlich der MIPS-3D und MIPS MDMX anwendungsspezifischen Erweiterungen), die von Intel Corp. entwickelten Befehlssatzarchitekturen IA-32 oder IA-64, die PowerPC-Befehlssatzarchitektur, die Alpha-Befehlssatzarchitektur, die ARM-Befehlssatzarchitektur, oder jegliche andere Befehlssatzarchitektur umfassen. Während das System 10, das in 1 gezeigt ist, zwei Prozessoren aufweist, können andere Ausführungsformen nach Wunsch einen Prozessor oder mehr als zwei Prozessoren aufweisen.
  • Der L2-Cachespeicher 14 ist ein Hochgeschwindigkeits-Cachespeicher. Der L2-Cachespeicher 14 wird als "L2" bezeichnet, weil die Prozessoren 12A12B internen Level 1 ("L1")-Cache-Speicher verwenden können. Falls in den Prozessoren 12A12B keine L1-Cachespeicher enthalten sind, kann der L2-Cachespeicher 14 ein L1-Cachespeicher sein. Wenn ferner mehrere Caching-Level in den Prozessoren 12A12B enthalten sind, kann der L2-Cachespeicher 14 ein Cache-Speicher mit einem anderen Level als L2 sein. Der L2-Cachespeicher 14 kann jegliche Organisation verwenden, einschließlich direkt abbildende, satzassoziative und vollassoziative Organisationen. Bei einer bestimmten Implementierung kann der L2-Cachespeicher 14 ein satzassoziativer Cache-Speicher (allgemein N-fach, wobei N eine ganze Zahl ist, obgleich bei einer Implementierung ein 4-Weg-Cachespeicher verwendet werden kann) mit 32Byte-Cache-Speicherblöcken sein. Ein satzassoziativer Cache-Speicher ist ein Cache-Speicher, der in mehreren Sätzen angeordnet ist, wobei jeder Satz zwei oder mehr Einträge aufweist. Ein Teil der Adresse (der "Index") wird dazu verwendet, einen der Sätze auszuwählen (d.h. jede Codierung des Index wählt einen anderen Satz). Die Einträge in dem gewählten Satz sind verfügbar, um den Cache-Speicherblock zu speichern, auf den durch die Adresse zugegriffen wird. Jeder der Einträge in dem Satz wird als ein "Weg" des Satzes bezeichnet. Derjenige Teil der Adresse, der nach dem Entfernen des Index (und des Versatzes in dem Cache-Speicherblock) übrig bleibt, wird als "Tag" bezeichnet und wird in jedem Eintrag gespeichert, um den Cache-Speicherblock in diesem Eintrag zu identifizieren. Die gespeicherten Tags werden mit dem entsprechenden Tagteil der Adresse einer Speichertransaktion verglichen, um zu bestimmen, ob die Speichertransaktion in dem Cache-Speicher ein Treffer oder ein Fehlschlag ist, und wird dazu verwendet, den Weg zu wählen, auf welchem der Treffer erfasst wird (falls ein Treffer erfasst wird).
  • Der Speichercontroller 16 ist dazu konfiguriert, im Ansprechen auf Speichertransaktionen, die auf dem Bus 24 empfangen wurden, auf den Speicher 26 zuzugreifen. Der Speichercontroller 16 empfängt ein Treffersignal vom L2-Cachespeicher 14, und falls ein Treffer im L2-Cachespeicher 14 für eine Speichertransaktion erfasst wird, reagiert der Speichercontroller 16 nicht auf diese Speichertransaktion. Andere Ausführungsformen können den L2-Cachespeicher 14 nicht aufweisen, und der Speichercontroller 16 kann auf jede Speichertransaktion reagieren. Falls ein Fehlschlag von dem L2-Cachespeicher 14 erfasst wird, oder die Speichertransaktion nicht im Cache speicherbar ist, kann der Speichercontroller 16 auf den Speicher 26 zugreifen, um die Lese- oder Schreiboperation durchzuführen. Der Speichercontroller 16 kann dazu entworfen sein, auf jeglichen von einer Vielzahl von Speichertypen zuzugreifen. Beispielsweise kann der Speichercontroller 16 für Synchronous Dynamic Random Access-Speicher (SDRAM) und insbesondere für Double Data Rate (DDR)-SDRAM entworfen sein. Als Alternative kann der Speichercontroller 16 für DRAM, Rambus DRAM (RDRAM), SRAM oder jegliche andere geeignete Speichervorrichtung entworfen sein.
  • Die I/O-Bridge 20 verbindet die Paketschnittstellenschaltungen 22A22C (und potenziell eine oder mehr andere I/O-Vorrichtungen oder I/O Schnittstellen) mit dem Bus 24. Die I/O-Bridges 20 können dazu dienen, die elektrische Last auf dem Bus 24 zu reduzieren. Im Allgemeinen führt die I/O-Bridge 20 Transaktionen auf dem Bus 24 für die Paketschnittstellenschaltungen 22A22C durch und leitet Transaktionen, welche die Paketschnittstellenschaltungen 22A22C vormerken, von dem Bus 24 auf diese Paketschnittstellenschaltung 22A22C weiter. Auf ähnliche Weise kann die I/O-Bridge 20 Transaktionen zu oder von anderen I/O-Vorrichtungen oder Schnittstellen routen, mit denen sie gekoppelt ist. Bei einer Implementierung kann eine zweite I/O-Bridge (nicht gezeigt) eine Bridge zu einer PCI Schnittstelle und zu einem Lightning Data Transport (LDT) I/O-Fabric sein, das von Advanced Micro Devices, Inc. entworfen wurde. Die LDT-Schnittstelle wird auch als die HyperTransport-Schnittstelle bezeichnet, obgleich LDT vorliegend verwendet werden kann. Der PCI-Bus und das LDT-Fabric können außerhalb des Systems 10 zum Anschließen von PCI- oder LDT-peripheren Vorrichtungen vorgesehen sein. Andere I/O-Vorrichtungen/Schnittstellen (einschließlich der Paketschnittstellenschaltungen 22A22C) können von der I/O-Bridge 20 überbrückt werden. Die anderen I/O-Schnittstellen (nicht gezeigt) können eine oder mehr serielle Schnittstellen, Personal Computer Memory Card International Association (PCMCIA)-Schnittstellen usw. umfassen.
  • Der Bus 24 kann bei einer Ausführungsform ein Split Transaction-Bus sein. Der Bus 24 kann bei einer Ausführungsform ein verteiltes Arbitrationsverfahren anwenden. Bei einer Ausführungsform kann der Bus 24 pipelined sein. Der Bus 24 kann jegliche geeignete Signalgebungstechnik anwenden. Beispielsweise kann bei einer Ausführungsform eine Differentialsignalgebung für die Hochgeschwindigkeits-Signalübermittlung verwendet werden. Andere Ausführungsformen können jegliche andere Signalgebungstechnik (z.B. TTL, CMOS, GTL, HSTL usw.) anwenden.
  • Es wird angemerkt, dass das System 10 (und insbesondere die Prozessoren 12A12B, der L2-Cachespeicher 14, der Speichercontroller 16, die Paketschnittstellenschaltungen 22A22C, die I/O-Bridge 20, der Interrupt-Mapper 26 und der Bus 24) bei der oben beschriebenen Ausführungsform zwar auf eine einzelne integrierte Schaltung als eine Ein-Chip-Systemkonfiguration integriert sein können, dass aber andere Ausführungsformen eine oder mehr der Vorrichtungen als separate integrierte Schaltungen implementieren können. Bei einer anderen Konfiguration kann der Speicher 26 ebenfalls integriert sein. Als Alternative können eine oder mehr der Komponenten als separate integrierte Schaltungen implementiert sein, oder nach Wunsch können alle Komponenten separate integrierte Schaltungen sein. Jegliches Integrationsniveau kann verwendet werden.
  • Es wird angemerkt, dass die veranschaulichte Ausführungsform zwar einen Split Transaction-Bus mit separater Arbitration für die Adress- und Datenbusse anwendet, dass aber andere Ausführungsformen Non-Split Transaction-Busse anwenden können, die mit einer einzigen Arbitration für Adresse und Daten arbitriert werden, und/oder einen Split Transaction-Bus, bei dem der Datenbus nicht ausdrücklich arbitriert ist. Entweder ein zentrales Arbitrationsverfahren oder ein verteiltes Arbitrationsverfahren kann gemäß der Entwurfswahl verwendet werden. Falls gewünscht, kann der Bus 24 ferner nicht pipelined sein. Während bei der vorliegenden Ausführungsform ein geteilter Bus verwendet wird, kann bei anderen Ausführungsformen jegliche Art von Zwischenverbindung verwendet werden (z.B. Kreuzschienenverbindungen, Punkt-zu-Punkt-Verbindungen in einer Ring-, Stern- oder jeglichen anderen Topologie, Maschen, Cube o. dgl.). Im Allgemeinen ist eine Zwischenverbindung jede Art von Kommunikationsmedium.
  • Es wird angemerkt, dass 1 zwar die Paketschnittstellenschaltungen 22A22C als mittels der I/O-Bridge 20A mit dem Bus 24 gekoppelt veranschaulicht, dass aber andere Ausführungsformen, falls gewünscht, Paketschnittstellenschaltungen 22A22C aufweisen können, die direkt mit dem Bus 24 gekoppelt sind. Ferner kann die Anzahl von Paketschnittstellenschaltungen 22A22C je nach Wunsch von einer bis zu vielen variiert werden.
  • Der vorliegend verwendete Ausdruck Transaktion bezieht sich auf eine Kommunikation zwischen zwei oder mehr Agenten auf einer Zwischenverbindung (z.B. dem Bus 24). Ein Agent, der die Transaktion initiiert, kann der anfordernde Agent oder die Quelle sein, und ein Agent, der auf die Transaktion anspricht, ist ein antwortender Agent oder ein antwortendes Ziel. Der Ausdruck "Speichertransaktion" bezieht sich auf eine Kommunikation zwischen einer Vorrichtung und dem Speichersystem. Die Speichertransaktion umfasst eine Adresse, welche ein Speicherstelle in dem Speicher identifiziert. Bei der veranschaulichten Ausführungsform wird die Speichertransaktion auf dem Bus 24 an den Speichercontroller 16 übertragen (und kann von dem L2-Cachespeicher 14 an Stelle des Speichercontrollers 16 abgearbeitet werden). Speichertransaktionen können Lesetransaktionen (einen Transfer von Daten vom Speicher zur Vorrichtung) und Schreibtransaktionen (einen Transfer von Daten von der Vorrichtung zum Speicher) umfassen. Allgemeiner noch kann eine Lesetransaktion ein Transfer von Daten von einem Ziel der Transaktion zu der Quelle (bzw. dem Ini tiator) der Transaktion sein, und eine Schreibtransaktion kann ein Transfer von Daten von einer Quelle der Transaktion zu dem Ziel der Transaktion sein.
  • Unter Bezugnahme auf 2 ist dort ein Blockdiagramm eines beispielhaften Paketes 50 gezeigt. Andere Ausführungsformen sind möglich und werden in Betracht gezogen. Bei der Ausführungsform von 2 umfasst das Paket 50 einen Header 52, eine Datennutzlast 54 und einen optionalen Trailer 56. Jeder von dem Header 52, der Datennutzlast 54 und dem Trailer 56 kann jegliche Anzahl von Bytes aufweisen. Der Header 52 ist in einer auseinander gezogenen Ansicht für ein Ethernet Paket gezeigt, das verwendet wird, um ein Transportsteuerungsprotokoll/Internetprotokoll (TCP/IP)-Paket zu übertragen, und umfasst einen Ethernet-Header 58, einen IP-Header 60 und einen TCP-Header 62.
  • Der Header 52 beschreibt das Paket 50, damit der Empfänger des Paketes das Paket richtig interpretieren kann. Beispielsweise kann der Header eines oder mehr der folgenden aufweisen: Quell- und Bestimmungsadressen für das Paket, die Größe des Paketes, die Größe des Headers, und Status-/Steuerinformationen für das Paket. Die Status-/Steuerinformationen können Fehlerprüfinformationen, Prioritätsinformationen, Pakettyp usw. umfassen.
  • Wie in der auseinander gezogenen Ansicht veranschaulicht ist, kann der Header 52 tatsächlich mehrere Header umfassen, die verschiedenen Schichten der Networking Protocol Suite entsprechen. Im Allgemeinen können in jeder Schicht zusätzliche Informationen verwendet werden, um das Paket zu beschreiben. Die zusätzlichen Informationen verkapseln die Informationen von den höheren Schichten, so dass eine Kommunikation auf dieser Schicht das Format der Informationen von den höheren Schichten nicht zu wissen braucht.
  • Bei dem Beispiel von 2 umfasst der Header 52 den Ethernet-Header 58 mit 14 Bytes, den IP-Header 60 mit 20 Bytes, und den TCP-Header 62 mit 20 Bytes. Daher kann der Header 52 bei diesem Beispiel 54 Bytes groß sein. Der Ethernet-Header 58 kann zwei 6Byte-Ethernet-Adressen (eine Quelladresse und eine Bestimmungsadresse) und ein Längenfeld mit zwei Bytes aufweisen. Der IP-Header 60 kann zwei 4Byte-IP-Adressen (wiederum Quell- und Bestimmungsadresse) sowie eine Vielzahl anderer Informationen einschließlich der Länge sowohl des Headers als auch des IP-Pakets, eine IP-Versionsnummer, einen Typ von Dienstfeld, ein Identifikationsfeld, ein Fragment Offset, ein Time to Live-Feld, ein Protokollfeld und eine Header-Prüfsumme aufweisen. Optional können zusätzliche Optionsfelder vorgesehen sein (welche die Größe des IP-Headers 60 vergrößern). Der TCP-Header 62 kann Quell- und Bestimmungsanschlussnummern, eine Sequenznummer, welche das Paket in einer Sequenz von Paketen identifiziert, eine Bestätigungsnummer, eine Headerlänge, einen Satz von Flagbits, eine Prüfsumme, einen Urgent Pointer und eine Fenstergröße aufweisen. Der TCP-Header kann nach Wunsch wiederum optional erweitert werden, um zusätzliche Optionen für ein Paket zu enthalten.
  • Je nach der durchzuführenden Paketverarbeitung kann der Prozessor 12A oder 12B an einem Teil des Headers, dem gesamten Header, oder sogar dem gesamten Header und einem Teil der Datennutzlast operieren. Wenn das Paket beispielsweise einfach auf einem Ethernet geroutet wird, kann an dem Ethernet-Header 58 operiert werden. Wenn das Paket auf einem IP-Netz geroutet wird (d.h. das System 10 ist Teil eines IP-Routers), kann sowohl an dem Ethernet-Header 58 als auch an dem IP-Header 60 operiert werden, oder nur an dem IP-Header 60 kann operiert werden, usw.
  • Die Datennutzlast 54 sind die mit dem Paket übertragenen Daten. Bei einigen Paketen kann die Datennutzlast 54 nicht enthalten sein. Beispielsweise sind einige TCP-Pakete Bestätigungspakete, die gesendet werden, um den Empfang eines vorherigen Paketes zu bestätigen. Ein solches Paket braucht keine Daten zu enthalten.
  • Der optionale Trailer 56 kann ähnlich wie der Header 52 zusätzliche Paketbeschreibungsinformationen enthalten. Beispielsweise können Ethernet-Pakete einen Cyclical Redundancy Check (CRC)-Wert in dem Trailer 56 enthalten.
  • Es wird angemerkt, dass das veranschaulichte Paket 50 zwar ein Ethernet-Paket ist, das ein TCP/IP-Paket trägt, dass aber andere Ethernet-Pakete andere Typen von Daten tragen können. Ferner können andere Typen von Paketen das TCP/IP-Paket verkapseln.
  • Es wird angemerkt, dass das Beispiel von 3 zwar den gesamten Header im L2-Cachespeicher 14 und die gesamte Datennutzlast im Speicher 26 veranschaulicht, dass aber andere Beispiele einen Teil des im L2-Cachespeicher 14 gespeicherten Header aufweisen können (z.B. falls dieser Teil nicht in dem L2-Zählwert enthalten ist, der in die Paketschnittstellenschaltungen 22A22C programmiert ist), oder einige der im L2-Cachespeicher 14 gespeicherten Daten (z.B. falls erwartet wird, dass die Daten verarbeitet werden, ist der Header des Paketes kleiner als andere Pakete, oder die Daten befinden sich in dem gleichen Cache-Speicherblock wie der Header).
  • Unter Bezugnahme auf 3 ist dort ein Blockdiagramm gezeigt, das ein Beispiel für das Vormerken des Paketheaders im L2-Cachespeicher 14 veranschaulicht. In 3 sind der Prozessor 12A, der L2-Cachespeicher 14, der Speicher 26 und die Paketschnittstellenschaltung 22A veranschaulicht. Es werden Pfeile verwendet, um den Fluss von Informationen zwischen den in 3 gezeigten Blöcken zu veranschaulichen. Zwei Cache-Speicherblock-Speicherstellen 70 und 72 sind im L2-Cachespeicher 14 veranschaulicht, und zwei Speicherstellen (mit der Größe eines Cache-Speicherblocks) 74 und 76 sind in dem Speicher 26 veranschaulicht.
  • Bei dem Beispiel von 3 empfängt die Paketschnittstellenschaltung 22A ein Paket, das von dem System 10 verarbeitet werden soll. Die Paketschnittstellenschaltung 22A ist bei diesem Beispiel dazu programmiert (unter Verwendung des Konfigurationsregisters 42), die ersten zwei Cache-Speicherblöcke des Paketes im L2-Cachespeicher 14 (und die übrigen Blöcke des Paketes in dem Speicher 26) zu speichern. Wenn die ersten zwei Cache-Speicherblöcke des Paketes übertragen werden, veranlasst die Paketschnittstellenschaltung 22A daher, dass die Cache-Speicherblöcke im L2-Cachespeicher 14 (Pfeil 78) gespeichert werden. Im Allgemeinen liefert die Paketschnittstellenschaltung 22A Informationen in den Transaktionen, um anzuzeigen, welche Cache-Speicherblöcke im L2-Cachespeicher 14 gespeichert werden sollen. Ein Beispiel ist nachfolgend in 4 gezeigt. Der L2-Cachespeicher 14 speichert die Blöcke (gezeigt als "Header" in 3).
  • Beim Übertragen der übrigen Cache-Speicherblöcke des Paketes gibt die Paketschnittstellenschaltung 22A nicht an, dass die Cache-Speicherblöcke im L2-Cachespeicher (Pfeil 80) gespeichert werden sollen. Der Speicher 26 speichert die übrigen Blöcke (gezeigt als "Daten" in 3).
  • Im Anschluss an die Übertragung des Paketes an den Speicher kann die Paketschnittstellenschaltung 22A den Prozessor 12A unterbrechen. Als Alternative kann die Paketschnittstellenschaltung 22A den dem Paket entsprechenden Deskriptor aktualisieren, um anzuzeigen, dass das Paket vollständig ist, und der Prozessor 12A kann den Deskriptor abfragen, um die Aktualisierung zu erfassen. In jedem dieser Fälle kann der Prozessor 12A das Paket verarbeiten. Da derjenige Teil des Paketes, von dem erwartet wird, das der Prozessor an ihm operiert, 14 während des DMA des Paketes durch die Paketschnittstellenschaltung 22A in den L2-Cachespeicher gespeichert wird, kann der Prozessor 12A auf L2-Cachespeichertreffer für den Zugriff auf die Paketdaten treffen (Pfeil 82). Die Latenzzeit der Zugriffe kann somit verkürzt werden, was zu einer insgesamt kürzeren benötigten Zeit für die Verarbeitung des Paketes führen kann.
  • Wie bereits erwähnt wurde, liefert die Paketschnittstellenschaltung 22A Informationen bei den Transaktionen zum Übertragen eines empfangenen Paketes an den Speicher, welche angeben, welche der Cache-Speicherblöcke im L2-Cachespeicher 14 gespeichert werden sollen und welche nicht. Konkret gesprochen kann ein während der Adressphasen der Transaktionen übertragenes Steuersignal (im Nachfolgenden als L2CA bezeichnet) als die Angabe verwendet werden. Andere Ausführungsformen können Befehlsinformationen oder jegliche andere Signalgebung verwenden, um die Angabe zu übertragen, oder können die Angabe während anderer Phasen der Transaktion übertragen. Während der Adressphase der ersten N Transaktionen eines Paketes (wobei N durch den Wert im Konfigurationsregister 42 bestimmt ist) kann die Paketschnittstellenschaltung 22A das L2CA-Signal aktivieren, um den L2-Cachespeicher 14 zu veranlassen, die Daten zu speichern. Während der übrigen Transaktionen kann die Paketschnittstellenschaltung 22A das L2CA-Signal deaktivieren.
  • Der L2-Cachespeicher 14 spricht auf das L2CA-Signal für eine Transaktion folgendermaßen an: Wenn der Cache-Speicherblock ein Fehlschlag im L2-Cachespeicher 14 ist und das L2CA-Signal aktiviert ist, weist der L2-Cachespeicher 14 eine Cache-Speicherblock-Speicherstelle zu, um den Cache-Speicherblock zu speichern. Im Allgemeinen kann die Zuweisung das Auswählen einer Cache-Speicherblock-Speicherstelle zum Speichern des Blocks, das Entfernen des gegenwärtig darin gespeicherten Blocks (falls vorhanden), und das Aktualisieren der Cache-Speicherblock-Speicherstelle mit dem Cache-Speicherblock umfassen. Bei einer Ausführungsform kann der Speichercontroller 16 den Speicher 26 nicht mit den dem L2-Cachespeicher 14 zugewiesenen Cache-Speicherblöcken aktualisieren, obgleich der Speicher 26 bei anderen Ausführungsformen auch aktualisiert werden kann. Falls andererseits der Cache-Speicherblock ein Fehlschlag im L2-Cachespeicher 14 ist und das L2CA-Signal deaktiviert ist, kann der L2-Cachespeicher 14 keinen Speicher für den Cache-Speicherblock zuweisen. Der Cache-Speicherblock kann in diesem Fall von dem Speichercontroller 16 nur im Speicher 26 gespeichert werden. Somit kann eine Cache-Speicherbelastung bei Daten vermieden, bei denen es nicht wahrscheinlich ist, dass von dem Prozessor 12A12B während der Verarbeitung des Paketes auf sie zugegriffen wird. Falls der Cache-Speicherblock ein Treffer im L2-Cachespeicher 14 ist, wird bei der vorliegenden Ausführungsform die den Treffer darstellende Cache-Speicherblock-Speicherstelle mit den während der Transaktion übertragenen Daten aktualisiert (unabhängig davon, ob das L2CA-Signal aktiviert oder deaktiviert ist).
  • Es wird angemerkt, dass ein Signal als aktiviert definiert werden kann, wenn es auf einer ersten Spannung angetrieben wird, die für eine logische Eins steht, oder als Alternative, wenn es auf einer zweiten Spannung angetrieben wird, die für eine logische Null steht. Das Signal kann als deaktiviert definiert sein, wenn es auf dem Pegel angetrieben wird, der dem aktivierten Pegel entgegengesetzt ist. Bei Ausführungsformen, bei denen eine Differentialsignalgebung verwendet wird, ist das Signal aktiviert, wenn ein erstes von dem Differentialpaar niedriger als das zweite ist, und ist deaktiviert, wenn das zweite von dem Differentialpaar niedriger als das erste ist.
  • Unter Bezugnahme auf 4 ist dort ein Zeitablaufdiagramm gezeigt, das mehrere Adressphasen von Transaktionen veranschaulicht, die von der Paketschnittstellenschaltung 22A (konkret von dem DMA-Controller 38 durch die I/O-Bridge 20) durchgeführt werden, um ein Paket zu übertragen. Es sind mehrere Taktzyklen des Taktsignals CLK gezeigt, das dem Bus 24 entspricht. Jeder Taktzyklus ist oben in 4 benannt (CLK0, CLK1 usw.). Phasen der Taktzyklen sind durch vertikale gestrichelte Linien begrenzt.
  • 4 veranschaulicht ein Beispiel, bei dem die ersten fünf Cache-Speicherblöcke eines empfangenen Pakets an den Speicher/L2-Cachespeicher übertragen werden. Die während der Adressphasen der fünf Transaktionen übertragenen Adressen sind horizontal von dem Etikett "Addr" veranschaulicht. Der Befehl für die Transaktion ist horizontal von dem Etikett "CMD" veranschaulicht. Für jede Transaktion ist der Befehl ein Schreiben. Konkret gesprochen kann der Befehl ein Schreiben mit Devalidieren sein, wodurch veranlasst wird, dass alle im Cache gespeicherten Kopien des Cache-Speicherblocks devalidiert werden (außer im L2-Cachespeicher 14, der tätig ist, um die Latenzzeit des Speichers 26 zu verringern und keinem spezifischen Agen ten zugeordnet ist). Falls im Cache gespeicherte Kopien des Cache-Speicherblock in Agenten-Cache-Speichern vorhanden sind, sind die Daten veraltet, da die Daten mit den Paketdaten überschrieben werden. Das L2CA-Signal schließlich ist horizontal von dem Etikett L2CA veranschaulicht. Das L2CA-Signal ist bei dieser Ausführungsform als aktiviert hoch und deaktiviert niedrig veranschaulicht.
  • Bei diesem Beispiel ist die Paketschnittstellenschaltung 22A dazu programmiert (über das Konfigurationsregister 42), die ersten zwei Cache-Speicherblöcke eines empfangenen Paketes im L2-Cachespeicher 14 zu speichern. Somit aktiviert die Paketschnittstellenschaltung 22A das L2CA-Signal für die ersten zwei Transaktionen, um das empfangene Paket auf dem Bus 24 zu übertragen, und deaktiviert das L2CA-Signal für die übrigen Transaktionen. Es wird angemerkt, dass die Paketschnittstellenschaltung 22A programmiert sein kann, keinen der Cache-Speicherblöcke im L2-Cachespeicher, einen der Cache-Speicherblöcke, oder mehr als zwei der Cache-Speicherblöcke zu speichern, gemäß dem Teil des Paketes, von dem erwartet wird, dass es von den Prozessoren 12A12B verarbeitet wird.
  • Die erste Transaktion ist der erste Cache-Speicherblock des Paketes (Taktzyklus CLK0). Die Adresse der Transaktion ist die Adresse des Datenpuffers, der im Ansprechen auf den Empfang des Paketes von dem Deskriptor ausgewählt wird (Adresse "A" in 4 – Bezugszeichen 90). Da die erste Transaktion der erste Cache-Speicherblock des Paketes ist, wird zusätzlich das L2CA-Signal für diese Transaktion aktiviert (Bezugszeichen 92). Der L2-Cachespeicher 14 weist eine Cache-Speicherblock-Speicherstelle zum Speichern des durch Adresse "A" adressierten Cache-Speicherblocks zu, falls die Adresse ein Fehlschlag ist, oder aktualisiert den Cache-Speicherblock, falls die Adresse ein Treffer ist. Auf ähnliche Weise ist die zweite Transaktion der zweite Cache-Speicherblock des Paketes und wird daher unmittelbar an dem ersten Cache-Speicherblock des Paketes in dem Speicherraum gespeichert. Daher ist die Adresse der zweiten Transaktion die Adresse "A + 1 ", wobei "A + 1" die Adresse "A" plus einen Cache-Speicherblock ist. Die zweite Transaktion ist in Taktzyklus CLK1 gezeigt (Bezugszeichen 94). Das L2CA-Signal ist auch für die zweite Transaktion aktiviert, wodurch veranlasst wird, dass der Block im L2-Cachespeicher 14 gespeichert wird.
  • Die übrigen drei Transaktionen an aufeinander folgenden Cache-Speicherblöcken (Adressen "A + 2", "A + 3 ", und "A + 4" an den Bezugszeichen 98, 100 bzw. 102) sollen nicht im L2-Cachespeicher 14 zugewiesen werden. Daher wird das L2CA-Signal für diese Transaktionen deaktiviert (Bezugszeichen 104, 106 bzw. 108). Falls die Adressen zufällig einen Treffer im L2-Cachespeicher 14 darstellen, aktualisiert der L2-Cachespeicher 14 mit dem Cache-Speicherblock. Wenn die Adressen jedoch einen Fehlschlag im L2-Cachespeicher darstellen, werden die Cache-Speicherblöcke von dem Speichercontroller 16 im Speicher 26 gespeichert, und der L2-Cachespeicher 14 wird nicht aktualisiert. Während der L2-Cachespeicher den Cache-Speicherblock für einen Cache-Speichertreffer aktualisiert, falls das L2CA-Signal deaktiviert ist, können andere Ausführungsformen, falls gewünscht, den Cache-Speicherblock devalidieren, wenn das L2CA-Signal deaktiviert ist.
  • Es wird angemerkt, dass Adressphasen bei der dargestellten Ausführungsform während einer Phase des Taktsignals CLK vorkommen (z.B. während der hohen Phase des Taktsignals, obgleich auch die niedrige Phase verwendet werden kann). Bei der veranschaulichten Ausführungsform können Signale auf dem Bus 24 während einer Phase des Taktzyklus angetrieben werden, und die andere Phase kann im Leerlauf sein. Genauer gesagt kann die andere Phase bei einer Ausführungsform dazu verwendet werden, die Differentialsignalleitungen vorzuladen. Somit können die Signalleitungen im Ansprechen auf eine Flanke des Taktsignals CLK (z.B. die ansteigende Flanke) antreiben und können die Signalleitungen im Ansprechen auf die abfallende Flanke abtasten. Andere Ausführungsformen können wie viele externe Busse im Ansprechen auf die gleichen Flanke antreiben und abtasten, oder können an beiden Flanken des Taktes antreiben und abtasten, wie etwa quellsynchrone Entwürfe. Das L2CA-Signal ist während der niedrigen Phase des Taktes in 4 gepunktet gezeigt, um anzugeben, dass es während dieser Phase nicht aktiv angetrieben wird (and vorgeladen werden kann).
  • Es wird angemerkt, dass in 4 zwar aufeinander folgende Taktzyklen zum Übertragen von Cache-Speicherblöcken eines Paketes gezeigt sind, dass jedoch andere Transaktionen allgemein zwischen jeder Cache-Speicherblocktransaktion (z.B. von anderen Agenten auf dem Bus 24) vorkommen können. Ferner können Verzögerungen zwischen Cache-Speicherblock-Transaktionen auftreten, während die aufeinander folgenden Cache-Speicherblöcke von der Paketschnittstellenschaltung 22A empfangen werden. Somit brauchen die Transaktionen nicht aufeinander folgend stattzufinden, wie in 4 gezeigt ist.
  • Nachdem die in 4 veranschaulichten fünf Transaktionen abgeschlossen sind (unter der Annahme keiner weiteren Transaktionen, und dass die Adressen A, A + 1, A + 2, A + 3 und A + 4 auf verschiedene Cache-Speicherblock-Speicherstellen im L2-Cachespeicher 14 mappen), würden dann die den Adressen A und A + 1 entsprechenden Cache-Speicherblöcke im Cache gespeichert. Die Adressen A + 2, A + 3 und A + 4 können im Cache gespeichert werden, wenn sie vor dem Taktzyklus CLK0 im Cache gespeichert wurden, aber im Ansprechen auf die in 4 veranschaulichten Transaktionen nicht zugewiesen wurden.
  • Unter Bezugnahme auf 5 ist ein Blockdiagramm einer Ausführungsform eines Satzes von Deskriptoren gezeigt, der einem DMA-Controller 38 zugewiesen ist. Andere Ausführungsformen sind möglich und werden in Betracht gezogen. In 5 sind Konfigurationsregister 40A, 40B, 40C und 40D gezeigt sowie ein Satz von Deskriptoren 110 (einschließlich der Deskriptoren 110A, 110B, 110C, 110D und 110E). Der Deskriptor 110D ist in mehr Detail gezeigt. Es ist auch ein von dem Deskriptor 110D angezeigter Datenpuffer 112 in 5 gezeigt.
  • Die Konfigurationsregister 40A40D können Teil der in 1 gezeigten Konfigurationsregister 40 sein. Das Konfigurationsregister 40A speichert eine Deskriptorbasisadresse, welche einen Speicherbereich angibt, der die Deskriptoren 110 speichert. Das Konfigurationsregister 40B speichert einen Deskriptorzählwert, der die Gesamtanzahl von Deskriptoren angibt. In Kombination mit der Deskriptorbasisadresse kann der Deskriptorzählwert das Ausmaß des Speicherbereichs angeben, der die Deskriptoren speichert. Bei dieser Ausführungsform sind die Deskriptoren als ein Ring angeordnet. Der nächste Deskriptor in dem Ring, der von der Paketschnittstellenschaltung 22A verwendet wird, ist durch die gegenwärtige Deskriptoradresse angegeben, die im Konfigurationsregister 40C gespeichert ist. Ein gegenwärtiger Deskriptorzählwert (der im Konfigurationsregister 40D gespeichert ist) gibt die Anzahl von Deskriptoren an, die gegenwärtig für die Verwendung durch die Paketschnittstellenschaltung 22A verfügbar sind. Die Paketschnittstellenschaltung 22A kann keine Deskriptoren anwenden, abgesehen von den Deskriptoren zwischen dem gegenwärtigen Deskriptor und dem von dem gegenwärtigen Deskriptorzählwert angegebenen Deskriptor.
  • Im Allgemeinen kann der Ring von Deskriptoren 110 durch Software erstellt werden, die auf dem System 10 ausgeführt wird, und kann der Paketschnittstellenschaltung 22A durch Aktualisieren der Konfigurationsregister 40 zugewiesen werden. Ähnliche Ringe von Deskriptoren können den anderen Paketschnittstellenschaltungen 22B22C zugewiesen werden. Ein separater Satz von Deskriptoren 110 kann jedem DMA-Kanal innerhalb jeder Paketschnittstellenschaltungen 22A22C zugewiesen werden. Beispielsweise kann bei einer Ausführungsform jeder DMA-Controller 38 zwei DMA-Empfangskanäle (zum Übertragen empfangener Pakete an den Speicher) und zwei DMA-Sendekanäle (zum Übertragen von Paketen von dem Speicher zu der Paketschnittstellenschaltung) aufweisen. Somit können Sätze von Konfigurationsregistern ähnlich den Konfigurationsregistern 40A40D für jeden DMA-Kanal enthalten sein.
  • Der Deskriptor 110D ist in mehr Detail gezeigt, und andere Deskriptoren können ähnlich sein. Der Deskriptor 110D weist eine Flag (Bezugszeichen 114), eine Paketgröße (Bezugszeichen 116), eine Datenpuffergröße (Bezugszeichen 118) und einen Datenpufferzeiger (Bezugszeichen 120) auf. Der Datenpufferzeiger 120 ist die Adresse eines Datenpuffers, in den die Paketdaten gespeichert werden sollen. Die Datenpuffergröße 118 ist die Größe des Datenpuffers. Die Paketgröße 116 ist die Größe des in dem Datenpuffer 112 gespeicherten Paketes (und möglicherweise in Datenpuffern nachfolgender Deskriptoren, falls die Paketgröße größer als die Datenpuffergröße ist, wie nachfolgend in mehr Detail beschrieben ist). Die Flag 114 ist eine Angabe darüber, ob ein Paket in dem Datenpuffer 112 ist oder nicht. Beispielsweise kann die Flag 114 ein Bit sein, das angibt, dass der Deskriptor ein Paket speichert, wenn es gesetzt ist, und das angibt, dass der Deskriptor kein Paket speichert, wenn es nicht gesetzt ist. Als Alternative können der gesetzte und nicht gesetzte Zustand des Bit auf die entgegengesetzte Weise definiert sein.
  • Es wird angemerkt, dass zwar die veranschaulichte Ausführungsform einen Ring von Deskriptoren 110 zeigt, dass aber andere Ausführungsformen die Deskriptoren auf andere Weisen anordnen können. Beispielsweise kann eine Verknüpfungsliste von Deskriptoren verwendet werden. Bei einer solchen Ausführungsform kann die Deskriptorbasisadresse in dem Konfigurationsregister 40A der Kopf der Verknüpfungsliste sein, und der Deskriptorzählwert in dem Konfigurationsregister 40B kann die Anzahl von Deskriptoren in der Verknüpfungsliste sein. Die gegenwärtige Deskriptoradresse in dem Konfigurationsregister 40C kann auf den gegenwärtige Deskriptor in der Verknüpfungsliste weisen, und der gegenwärtige Deskriptorzählwert in dem Konfigurationsregister 40D kann, beginnend mit dem gegenwärtigen Deskriptor, die Anzahl von Deskriptoren in der Verknüpfungsliste angeben, die für die Verwendung durch die Paketschnittstellenschaltung 22A verfügbar sind. Da die Mitglieder einer Verknüpfungsliste nicht in benachbarten Adressen gespeichert zu werden brauchen, können die Deskriptoren ein zusätzliches Zeigerfeld (zusätzlich zu dem in 5 gezeigten Datenpufferzeiger 120) aufweisen, um auf den nächsten Deskriptor zu weisen. Bei einer konkreten Ausführungsform kann das System sowohl den Ring als auch die Verknüpfungslistenmodi unterstützen. Bei einer solchen Ausführungsform kann der zweite Zeiger dazu verwendet werden, im Ringmodus auf einen zweiten Datenpuffer zu weisen (d.h. die Deskriptoren können jeweils zwei Datenpuffer angeben).
  • Es wird angemerkt, dass je nach Wunsche zusätzlich zu den in 5 gezeigten Informationen eine Vielzahl von anderen Informationen in den Deskriptoren 110 enthalten sein kann. Beispielsweise können Statusinformationen, während des Empfangs erfasste Fehler usw. für empfangene Pakete enthalten sein.
  • Unter Bezugnahme auf 6 wird als nächstes ein Ablaufdiagramm gezeigt, das den Betrieb der Paketschnittstellenschaltung 22A (oder einer jeden der anderen Paketschnittstellenschaltungen 22B22C) während des Empfangs eines Paketes von der externen Paketschnittstelle zum Verarbeiten in dem System 10 veranschaulicht. Andere Ausführungsformen sind möglich und werden in Betracht gezogen. Die in 6 gezeigten Blöcke sind für ein vereinfachtes Verständnis in einer bestimmten Reihenfolge veranschaulicht, jedoch kann je nach Wunsch jede andere Reihenfolge verwendet werden.
  • Die Paketschnittstellenschaltung 22A erfasst, ob ein Anfang eines Paketes an der Paketschnittstelle 44A empfangen wird oder nicht (Entscheidungsblock 130). Falls kein Anfang eines Paketes empfangen wird, kann die Paketempfang-Logikschaltung im Leerlauf sein. Je nach der Betriebsart kann ein Anfang eines Paketes auf eine Vielzahl von Weisen erfasst werden. Wenn die Paketschnittstellenschaltung 22A als Ethernet-MAC arbeitet, wird der Anfang eines Paketes gemäß der Ethernet-Spezifikation erfasst. Wenn die generische Paketschnittstelle verwendet wird, können Steuersignale, welche den Anfang des Paketes (oder das Ende des vorherigen Paketes) markieren, zum Erfassen des Anfangs eines Pakets verwendet werden.
  • Wenn ein Anfang eines Paketes empfangen wird, wählt die Paketschnittstellenschaltung 22A (insbesondere der DMA-Controller 38) den nächsten Deskriptor 110, an den das Paket übertragen wird (Block 132). Der von der gegenwärtigen Deskriptoradresse angegebene Deskriptor wird ausgewählt. Die Paketschnittstellenschaltung 22A sammelt Paketbytes in dem Rx-FIFO 34 (Block 134), bis mindestens ein Cache-Speicherblock für die Übertragung bereit ist (Entscheidungsblock 136). Falls gewünscht, kann die Paketschnittstellenschaltung 22A bei einigen Ausführungsformen warten, bis mehr als ein Cache-Speicherblock für die Übertragung bereit ist.
  • Falls ein Cache-Speicherblock für die Übertragung bereit ist, überträgt der DMA-Controller 38 den Cache-Speicherblock zu dem Speicher 26 oder dem L2-Cachespeicher 14. Genauer gesagt bestimmt der DMA-Controller, ob die in dem Konfigurationsregister 42 angegebene Anzahl von Cache-Speicherblöcken (gemessen ab dem Anfang des Paketes) übertragen wurde oder nicht im Hinblick auf das Paket, das empfangen wird (Entscheidungsblock 138). Der DMA-Controller 38 kann die Anzahl von übertragenen Blöcken auf einem bestimmten DMA-Empfangskanal verfolgen, um zu bestimmen, ob die Anzahl von angegebenen Cache-Speicherblöcken schon übertragen wurde, und kann den Zählwert mit der angegebenen Anzahl von Blöcken vergleichen. Als Alternative kann der DMA-Controller 38 einen Zähler mit der Anzahl von angegebenen Cache-Speicherblöcken initialisieren und den Zähler dekrementieren, während Blöcke übertragen werden.
  • Wenn die Anzahl von übertragenen Cache-Speicherblöcken immer noch weniger als oder gleich dem L2-Zählwert ist (Entscheidungsblock 138), überträgt der DMA-Controller 38 den Cache-Speicherblock in einer Transaktion mit dem L2CA-Signal aktiviert (Block 140). Wenn andererseits die Anzahl von übertragenen Blöcken größer als der L2-Zählwert ist, überträgt der DMA-Controller den Cache-Speicherblock in einer Transaktion mit dem L2CA-Signal deaktiviert (Block 142).
  • Die Paketschnittstellenschaltung 22A ist auch dazu konfiguriert, das Ende des Paketes zu erfassen (Entscheidungsblock 144). Das Paketende kann durch die Länge des Paketes angegeben werden (bei Ethernet-Paketen in dem Paket angegeben) oder kann von Steuersignalen angegeben werden (wie etwa bei der generischen Paketschnittstelle). Wenn das Ende des Paketes nicht erfasst wird, kann die Paketschnittstellenschaltung 22A bestimmen, ob das Ende des Datenpuffers erreicht worden ist (Entscheidungsblock 146). Die von den Deskriptoren angegebenen Datenpuffer können oder können nicht groß genug sein, um das gesamte Paket zu enthalten. Wenn die Datenpuffer so groß wie das größte Paket sind, kann die von dem Entscheidungs block 146 dargestellte Prüfung weg gelassen werden. Wenn das Ende des Datenpuffers erreicht worden ist (wie durch die Datenpuffergröße 118 in dem Deskriptor angegeben ist), kann der DMA-Controller 38 den nächsten Deskriptor auswählen und damit beginnen, das Paket in dem Datenpuffer zu speichern, der von diesem Deskriptor angegeben wird (Block 132). Wenn andererseits das Ende des gegenwärtigen Datenpuffers nicht erreicht worden ist, kann die Paketschnittstellenschaltung 22A mit dem gegenwärtigen Datenpuffer fortfahren.
  • Wenn das Ende des Paketes erreicht worden ist, kann der DMA-Controller 38 den Deskriptor aktualisieren (Block 148). Konkret gesprochen kann der DMA-Controller 38 die Paketgröße 116 aktualisieren, um die Größe des Paketes in dem von dem Deskriptor angegebenen Datenpuffer anzugeben. Zusätzlich kann der DMA-Controller 38 das Flagbit 114 setzen, um anzugeben, dass das Paket in dem Datenpuffer für die Verarbeitung verfügbar ist. Wie bereits erwähnt wurde, kann ein Paket bei einigen Ausführungsformen je nach der Größe einen oder mehr Datenpuffer einnehmen, die einem oder mehr Deskriptoren entsprechen. Bei einer Ausführungsform kann der erste Deskriptor, der für das Paket gewählt wird, aktualisiert werden, wenn mehr als ein Deskriptor verwendet wird.
  • Der DMA-Controller 38 kann zusätzlich das Konfigurationsregister 40C aktualisieren, um den nächsten unbenutzten Deskriptor anzugeben, und kann den gegenwärtigen Deskriptorzählwert in dem Konfigurationsregister 40D dekrementieren, um die Verwendung von einem oder mehr Deskriptoren zum Speichern des Paketes zu reflektieren. Falls der gegenwärtige Deskriptorzählwert Null ist (oder unter einem Schwellwert liegt, je nach der Ausführungsform), kann der DMA-Controller 38 den Prozessor unterbrechen, damit mehr Deskriptoren für die Verwendung validiert werden.
  • Optional kann die Paketschnittstellenschaltung 22A einen Prozessor unterbrechen (Block 150). Der Prozessor kann dadurch in Kenntnis gesetzt werden, dass das Paket für die Verarbeitung verfügbar ist. Als Alternative können die Prozessoren die Deskriptoren periodisch abfragen, was dem Erfassen durch DMA-Empfangskanäle entspricht, ob das Flagbit gesetzt ist.
  • Es wird angemerkt, dass die Paketschnittstellenschaltung 22A bestimmte Fehlerprüfungen an empfangenen Paketen durchführen kann (z.B. Erfassung einer Paketkolli sion an dem empfangenen Paket, CRC-Fehler usw.), was in 6 nicht veranschaulicht ist. Falls ein Paketfehler erfasst wird, kann das Paket fallen gelassen werden, und der Fehler kann (bei einigen Ausführungsformen) geloggt werden.
  • Es wird angemerkt, dass die Erfassung von Paketanfang und -ende und die Akkumulation von Paketdaten von der Tx/Rx-Steuerschaltung 32 unabhängig und parallel zu der Deskriptorverwaltung und dem Übertragen von Blöcken durchgeführt werden kann, die von dem DMA-Controller 38 behandelt werden können. Die in 6 gezeigten Blöcke können somit eine vereinfachte Ansicht zur Veranschaulichung der L2-Cachespeicherzuweisung sein.
  • Unter Bezugnahme auf 7 ist als nächstes ein Ablaufdiagramm zur Veranschaulichung des Betriebs eines Prozessors 12A12B im Ansprechen auf seine Unterbrechung gezeigt. Andere Ausführungsformen sind möglich und werden in Betracht gezogen. Es wird angemerkt, dass die Blöcke von 7 in Software implementiert werden können, die auf dem Prozessor 12A12B läuft (z.B. eine Interrupt Service Routine), als Hardware, oder als eine Kombination von diesen. Während die gezeigten Blöcke für ein vereinfachtes Verständnis in einer bestimmten Reihenfolge veranschaulicht sind, können andere Reihenfolgen verwendet werden.
  • Der Prozessor liest eine oder mehr Ressourcen in dem System 10, um die Quelle des Interrupt zu bestimmen (Block 160). Beispielsweise kann der Interrupt-Mapper 28 ein Quellenregister umfassen, das die Quelle eines Interrupt angibt. Falls die Quelle nicht eine Paketschnittstellenschaltung (oder PIC in 7) (Entscheidungsblock 162) ist, kann der Prozessor innerhalb der Interrupt-Verarbeitung auf jegliche beliebige Weise fortfahren (Block 164). Wenn die Quelle eine Paketschnittstellenschaltung ist, kann der Prozessor ferner ein Paketschnittstellenschaltung-Ursachenregister lesen, um die Ursache für den Interrupt zu bestimmen (Block 166). Das Ursachenregister könnte sich je nach Wunsch in dem Interrupt-Mapper 28 oder in der Paketschnittstellenschaltung 22A22C befinden.
  • Falls die Ursache für den Interrupt eine andere ist, als dass ein oder mehr Pakete für die Verarbeitung bereit sind (Entscheidungsblock 168), kann der Prozessor die anderen Ursachen auf jede beliebige Weise verarbeiten (Block 170). Eine Ursache kann beispielsweise sein, dass die Paketschnittstellenschaltung alle verfügbaren Deskriptoren verwendet hat (oder weniger als eine Schwellwertanzahl von Deskriptoren für die Verwendung übrig hat). Der Prozessor kann Datenpuffer zuweisen, Deskriptoren in der Gruppe von Deskriptoren, die der Paketschnittstellenschaltung (und dem DMA-Kanal in der Paketschnittstellenschaltung) zugewiesen sind, auf die Datenpuffer weisen, und die Konfigurationsregister 40 aktualisieren, um die zugewiesenen Datenpuffer und aktualisierten Deskriptoren zu reflektieren. Bei einer Ausführungsform wird der gegenwärtige Deskriptorzählwert aktualisiert, indem die Anzahl von neu hinzugefügten Deskriptoren in das Konfigurationsregister 40D geschrieben wird. Der DMA-Controller 38 kann die Anzahl im Ansprechen auf das Schreiben zu dem gegenwärtigen Deskriptorzählwert hinzufügen. Eine Vielzahl von anderen Ursachen für einen Interrupt durch die Paketschnittstellenschaltungen kann nach Wunsch unterstützt werden.
  • Falls die Ursache für den Interrupt ist, dass ein oder mehr Pakete bereit sind, kann der Prozessor den Deskriptor lesen, der das Paket speichert (oder den Anfang des Paketes speichert, falls Datenpuffer von mehr als einem Deskriptor zum Speichern des Paketes verwendet werden), um die Adresse des Anfangs des Paketes zu erhalten (Block 172). Beispielsweise kann der Prozessor das Konfigurationsregister 40C lesen und in Rückwärtsrichtung durch den Ring nach dem ersten Deskriptor suchen, der ein gesetztes Flagbit 114 aufweist. Als Alternative kann die Paketschnittstellenschaltung die Deskriptoradresse des ersten für die Verarbeitung bereiten Deskriptors in ein Register liefern, das von dem Prozessor gelesen werden kann. Bei wieder einer anderen Alternative kann der Prozessor das Deskriptorbasisadresse-Register 40A lesen und in Vorwärtsrichtung suchen, bis ein Deskriptor mit einem gesetzten Flagbit 114 lokalisiert wird. Der Prozessor kann das von dem Deskriptor lokalisierte Paket verarbeiten (Block 174). Wenn das L2CA-Signal dazu verwendet wurde, einen Teil des Paketes während der Übertragung von der Paketschnittstellenschaltung zu dem L2-Cachespeicher 14/Speicher 26 in den L2-Cachespeicher 14 zuzuweisen, kann der Prozessor L2-Cachespeicher auf Treffer für den zu verarbeitenden Teil des Paketes stoßen, was die Latenzzeit des Zugriffs auf das Paket verringern kann (und daher auch die Leistungsfähigkeit der Paketverarbeitung verbessern kann).
  • Wie bereits erwähnt wurde, wenn eine bestimmte Paketschnittstellenschaltung 22A22C ein Paket von dem System 10 an der Paketschnittstelle überträgt, kann die Übertragung des Paketes fehlschlagen (das Paket kann von dem Empfänger fallen gelassen werden und eine Übertragungswiederholung erfordern), falls das Paket an der Paketschnittstelle nicht kontinuierlich übertragen wird. Eine mögliche Quelle für eine Verzögerung bei der Übertragung des Paketes, welche zu einem Fehlschlag bei der Übertragung führen kann, ist die Latenzzeit beim Auslesen des Paketes aus dem Speicher. Die Latenzzeit kann teilweise auf Transaktionen zurückgehen, die von anderen Agenten initiiert werden (z.B. den Prozessoren 12A12B, dem L2-Cachespeicher 14 zum Entfernen von Rückkopien, oder Lese-/Schreibtransaktionen anderer I/O-Vorrichtungen). Ferner können die Paketschnittstellenschaltungen während Zeiten einer starken Konkurrenz um den Bus 24 durch die Round Robin-Prioritätsmethode für die Arbitration verzögert werden. Der Speichercontroller 16 kann ein anderes Blocksignal für die Paketschnittstellenschaltungen 22A22C als für die anderen Agenten implementieren, um das Problem das Fallenlassens übertragener Pakete zu mildern. Genauer gesagt können die Blocksignale bei einer Ausführungsform Teil eines allgemeinen Blockierverfahrens für eine Flusssteuerung auf dem Bus 24 sein, wie in 8 veranschaulicht ist. Als Alternative können andere Ausführungsformen, falls gewünscht, Blocksignale nur vom Speichercontroller 16 implementieren. Eine Beschreibung des allgemeinen Blockierverfahrens folgt.
  • Im Allgemeinen können die Prozessoren 12A12B, der L2-Cachespeicher 14 und/oder die I/O-Bridge 20 Transaktionen auf dem Bus 24 initiieren. Das System 10 unterstützt verschiedene Typen von Transaktionen auf dem Bus 24, einschließlich Speichertransaktionen (wie vorausgehend beschrieben) und I/O Transaktionen, welche eine I/O-Vorrichtung (z.B. eine durch die I/O-Bridge 20 oder eine andere, nicht gezeigte I/O-Bridge gekoppelte Vorrichtung) vormerken. Jeder von den Prozessoren 12A12B, dem L2-Cachespeicher 14, dem Speichercontroller 16 oder der I/O-Bridge 20 kann ein Teilnehmer an den Transaktionen sein. Im Allgemeinen liegt die "Teilnahme" eines Agenten an einer Transaktion vor, wenn von dem Agenten während der Transaktion eine Aktion erforderlich ist, damit die Transaktion ordnungsgemäß abgeschlossen wird. Der Agent nimmt an einer Transaktion "nicht teil", falls von dem Agenten während der Transaktion keine Aktion erforderlich ist, damit die Transaktion ordnungsgemäß abgeschlossen wird. Auf ähnliche Weise ist der Agent ein "Teilnehmer" an der Transaktion, wenn es erforderlich ist, dass der Agent während der Transaktion eine Aktion unternimmt, damit die Transaktion ordnungsgemäß abgeschlossen wird. Ein Agent wird selbst dann als ein Teilnehmer an einer bestimmten Transaktion bezeichnet, wenn diese Transaktion noch nicht auf dem Bus 24 initiiert worden ist, falls dieser Agent während der bestimmten Transaktion eine Aktion ergreifen würde, sobald diese bestimmte Transaktion durchgeführt wird. Der Agent ist ein "Nichtteilnehmer" an der Transaktion, falls es nicht erforderlich ist, dass der A gent während der Transaktion eine Aktion ergreift, damit die Transaktion ordnungsgemäß abgeschlossen wird. Ein Agent wird selbst dann als ein Nichtteilnehmer an einer bestimmten Transaktion bezeichnet, wenn diese Transaktion noch nicht auf dem Bus 24 initiiert worden ist, falls dieser Agent während der bestimmten Transaktion keine Aktion ergreifen würde, sobald diese bestimmte Transaktion durchgeführt wird. Der durch die Transaktion vorgemerkte Agent nimmt an der Transaktion teil. Zusätzlich können andere Agenten an verschiedenen Transaktionen teilnehmen. Beispielsweise können die Prozessoren 12A12B (und bei einigen Ausführungsformen die I/O-Bridge 20) an kohärenten Speichertransaktionen teilnehmen, indem sie eine Aktion ergreifen, um die Kohärenz sicher zu stellen (z.B. Snooping von internen Cache-Speichern und Angeben des Ergebnisses des Snoop). Der L2-Cachespeicher 14 kann an Cache-speicherbaren Speichertransaktionen teilnehmen, indem er bestimmt, ob die Transaktion ein Treffer ist, und im Ansprechen auf die Transaktion die Daten liefert oder die darin gespeicherten Daten aktualisiert. Gemäß der vorliegenden Verwendung bezieht sich der Ausdruck "Snoop" oder "Snooping" auf die Überprüfung eines Cache-Speichers, um zu bestimmen, ob Daten, die einer von einer Transaktion betroffenen Speicherstelle entsprechen, in dem Cache-Speicher vorhanden sind, und das Signalisieren des Zustands der Daten, um sicher zu stellen, dass die Kohärenz der Daten gewahrt bleibt.
  • Ein adressierbarer Bereich des Systems 10 ist durch die Größe der Adressen definiert, die auf dem Bus 24 übertragen werden können. Der adressierbare Bereich kann in mehrere Adressräume unterteilt sein, einschließlich eines Speicheradressraums und verschiedener I/O-Adressräume. Bei dieser Ausführungsform kann der Adressraum, der die Adresse einer Transaktion enthält, den Typ der Transaktion identifizieren. Somit gibt eine Adresse in dem Speicheradressraum an, dass die Transaktion eine Speichertransaktion ist, und die Adresse identifiziert eine vorgemerkte Speicherstelle in dem Speicher 26 (weshalb der Speichercontroller 16 und der L2-Cachespeicher 14 auf die Transaktion ansprechen können, und die Prozessoren 12A12B durch Snooping an der Transaktion teilnehmen können). Eine Adresse in den I/O-Adressräumen gibt an, dass die Transaktion eine I/O-Transaktion und die Adresse eine I/O-Vorrichtung vormerkt. Die I/O-Vorrichtungen können Paketschnittstellenschaltungen 22A22C, andere I/O-Vorrichtungen, oder durch die I/O-Bridge 20 mit dem Bus 24 gekoppelte Schnittstellen, und jegliche durch andere I/O-Bridges (nicht gezeigt) oder Schnittstellen gekoppelte Vorrichtungen aufweisen. Jeder der I/O Adressräume kann der I/O-Bridge zugeordnet werden, mit der die entsprechende I/O-Vorrichtung oder Bridge gekoppelt ist.
  • Während Adressräume verwendet werden, um zu bestimmen, welcher Typ von Transaktion durchgeführt wird (und das Ziel der Transaktion zu bestimmen), können andere Ausführungsformen diese Attribute auf andere Weisen bestimmen. Beispielsweise können verschiedene Instruktionen verwendet werden, um verschiedene Typen von Transaktionen zu veranlassen oder um verschiedene Vorrichtungen vorzumerken. Steuersignale auf dem Bus können verwendet werden, um das Ziel zu identifizieren.
  • Unter Bezugnahme auf 8 ist dort ein Blockdiagramm gezeigt, das zusätzliche Details einer Ausführungsform der Prozessoren 12A12B, des L2-Cachespeichers 14, des Speichercontrollers 16 und der I/O-Bridge 20 veranschaulicht. 8 veranschaulicht auch eine Ausführungsform einer bestimmten Zwischenverbindung zwischen den oben erwähnten Agenten. Andere Ausführungsformen sind möglich und werden in Betracht gezogen. Bei der Ausführungsform von 8 weist der Prozessor 12A eine Anforderungsschaltung 230A, eine Blockschaltung 232A, eine Ausgabewarteschlange 234A und eine Eingabewarteschlange 236A auf. Die Anforderungsschaltung 230A ist gekoppelt, um ein Blocksignal von jedem anderen Agenten auf dem Bus 24 zu empfangen (spezifisch das Block_MC1-Signal von dem Speichercontroller 16), und ist mit der Ausgabewarteschlange 234A gekoppelt. Die Blockschaltung 232A ist mit der Eingabewarteschlange 236A gekoppelt und dazu konfiguriert, ein Block_P0-Signal zu erzeugen. Der Prozessor 12B weist eine ähnliche Gruppe von Elementen auf, einschließlich der Anforderungsschaltung 230B, der Blockschaltung 232B, der Ausgabewarteschlange 234B und der Eingabewarteschlange 236B. Die I/O-Bridge 20 ist auch auf ähnliche Weise konfiguriert und weist die Anforderungsschaltung 230C, die Blockschaltung 232C, die Ausgabewarteschlange 234C und die Eingabewarteschlange 236C auf. Der L2-Cachespeicher 14 kann auch auf ähnliche Weise konfiguriert sein und eine Anforderungsschaltung 230E, eine Blockschaltung 232E, eine Ausgabewarteschlange 234E und eine Eingabewarteschlange 236E aufweisen. Der Speichercontroller 16 weist eine Blockschaltung 232D und eine Eingabewarteschlange 236D sowie ein Konfigurationsregister 238 auf. Die Blockschaltung 232D ist mit der Eingabewarteschlange 236D und dem Konfigurationsregister 238 gekoppelt.
  • Im Allgemeinen erfasst jeder Agent die Transaktionen, bei der dieser Agent ein Teilnehmer ist. Die Transaktionen werden in der Eingabewarteschlange 236A236E dieses Agenten erfasst. Der Agent kann die Transaktion aus seiner Eingabewarteschlange 236A236E entnehmen, um die Transaktion zu verarbeiten. Die Größe jeder Eingabewarteschlange 236A236E kann eine Größe (d.h. die Anzahl von bestimmten Einträgen) auf der Grundlage der erwarteten Latenzzeit zum Verarbeiten der Transaktionen in dem teilnehmenden Agenten und der Anzahl von zusätzlichen, während dieser Latenzzeitperiode erwarteten Transaktionen usw. besitzen. Es ist typischerweise nicht wünschenswert, eine Warteschlange mit genügend Einträgen vorzusehen, um die maximale Anzahl von Transaktionen zu speichern, die stattfinden könnten, da häufig viele der Warteschlangeneinträge ungenutzt bleiben und somit Schaltungsfläche in dem Agenten vergeuden würden. Daher können die Eingabewarteschlangen für die wahrscheinlichste Anzahl von Transaktionen während gewöhnlicher Transaktionsabfolgen bemessen sein, und die Warteschlange kann in einigen Fällen voll werden. Beispielsweise tendieren I/O-Transaktionen zu einer längeren Latenzzeit als Speichertransaktionen, kommen aber auch tendenziell weniger oft vor. Daher kann die Eingabewarteschlange 236C relativ wenige Einträge aufweisen. Andererseits können Speichertransaktionen mit einer geringeren Latenzzeit häufiger vorkommen, und daher können die Eingabewarteschlangen 236A236B und 236E eine größere Anzahl von Einträgen aufweisen. Jede der Eingabewarteschlangen 236A236E kann jedoch voll werden, weshalb der die volle Eingabewarteschlange enthaltende Agent möglicherweise nicht in der Lage ist, an zusätzlichen Transaktionen teil zu nehmen, bis Eingabewarteschlangeneinträge für das Speichern zusätzlicher Transaktionen frei sind.
  • Die Blockschaltungen 232A232E sind vorgesehen, um zu bestimmen, ob die entsprechende Eingabewarteschlange 236A236E voll wird, und um ein Blocksignal zu erzeugen, falls die entsprechende Eingabewarteschlange 236A236E voll wird. Bei der veranschaulichten Ausführungsform erzeugt jede Blockschaltung 232A232E ein separates Blocksignal wie folgt: Die Blockschaltung 232A erzeugt Block_P0; die Blockschaltung 232B erzeugt Block_P1; die Blockschaltung 232C erzeugt Block_IO; die Blockschaltung 232D erzeugt Block_MC1 und Block_MC2; und die Blockschaltung 232E erzeugt Block_L2. Das Blocksignal kann aktiviert werden, um anzugeben, dass der entsprechende Agent für die Teilnahme an zusätzlichen Transaktionen nicht verfügbar ist, und deaktiviert werden, um anzugeben, dass der entsprechende Agent für die Teilnahme an zusätzlichen Transaktionen verfügbar ist.
  • Jeder anfordernde Agent (z.B. die Prozessoren 12A12B, die I/O-Bridge 20 und der L2-Cachespeicher 14) weist eine Anforderungsschaltung 230A230E auf, die Blocksignale, sowie eine Ausgabewarteschlange 234A234E. Der anfordernde Agent kann Transaktionen, die auf dem Bus 24 initiiert werden sollen, in die entsprechende Ausgabewarteschlange 234Am234E setzen. Die Anforderungsschaltungen 230A230E sind mit den jeweiligen Ausgabewarteschlangen 234A234E gekoppelt und bestimmen, ob es dem entsprechenden Agenten erlaubt ist, Transaktionen aus der jeweiligen Ausgabewarteschlange im Ansprechen auf die Blocksignale auf dem Bus 24 zu initiieren. Genauer gesagt blockiert die Anforderungsschaltung 230A230E die Initiierung einer ersten Transaktion in der entsprechenden Ausgabewarteschlange 234A234E, wenn irgendein Agent, der ein Teilnehmer an der ersten Transaktion ist, sein Blocksignal aktiviert. Somit kann die Quelle einer jeden Transaktion selektiv die Initiierung der Transaktion in Abhängigkeit davon blockieren oder nicht blockieren, ob der/die andere(n) Teilnehmer an der Transaktion gegenwärtig zu einer Teilnahme in der Lage ist/sind. Bei der veranschaulichten Ausführungsform kann der L2-Cachespeicher 14 ein anfordernder Agent nur für Speicherraumtransaktionen sein, und kann daher nur die für Speichertransaktionen verwendeten Signale empfangen (z.B. Block_P0, Block_P1, und Block_MC1). Andere Ausführungsformen können das Block_IO-Signal ebenfalls aufweisen (z.B. wenn die I/O-Bridges vorübergehend Daten Cache-speichern können und daher Speichertransaktionen aufspüren können).
  • Auf diese Weise werden Transaktionen, die nicht abgeschlossen werden können, weil ein teilnehmender Agent nicht in der Lage ist, teilzunehmen, nicht auf dem Bus 24 initiiert. Andererseits ist es zugelassen, dass Transaktionen, für die kein Teilnehmer ein Blocksignal aktiviert, auf dem Bus 24 initiiert werden. Mit anderen Worten, eine gegebene Transaktion wird nicht von einem Agenten blockiert, der ein Nichtteilnehmer an dieser Transaktion ist. Daher können Transaktionen auf Grund der Granularität des Blockierens (wobei z.B. jeder Agent unabhängig seine Fähigkeit zur Teilnahme anzeigt), selbst dann durchgeführt werden, wenn ein nicht-teilnehmender Agent diese Transaktionen blockiert.
  • Die Anforderungsschaltungen 230A230E können die Initiierung von Transaktionen auf eine Anzahl von Weisen blockieren. Wenn beispielsweise ein Blocksignal für einen teilnehmenden Agenten aktiviert wird, bevor der entsprechende Agent die Arbitration von dem Bus 24 gewinnt, um die blockierte Transaktion durchzuführen, kann die Anforderungsschaltung 230A230E die Arbitration (oder eine weitere Arbitration) unterbinden, um die blockierte Transaktion durchzuführen, bis das Blocksignal deaktiviert ist. Falls gewünscht, kann der entsprechende Agent arbitrieren, um andere, nicht-blockierte Transaktionen durchzuführen. Wenn andererseits das Blocksignal nicht aktiviert wird, bevor der entsprechende Agent die Arbitration gewinnt, kann die Anforderungsschaltung 230A230E den Agenten dazu veranlassen, eine ungültige Befehlscodierung auf dem Bus anzusteuern. In diesem Fall wird die Bandbreite nicht gewahrt, aber die Transaktion wird nicht durchgeführt, weshalb kein Neuversuch der Transaktion stattfindet.
  • Während die meisten der in 8 veranschaulichten Teilnehmer ein einzelnes Blocksignal erzeugen, weist der Speichercontroller 16 zwei Blocksignale auf: Block_MC1 und Block_MC2. Die Anforderungsschaltungen 230A, 230B, und 230E sind jeweils gekoppelt, um das Block_MC1-Signal zu empfangen, und die Anforderungsschaltung 230C ist gekoppelt, um das Block_MC2-Signal zu empfangen. Bei einigen Ausführungsformen (z.B. Ausführungsformen, bei denen die I/O-Bridge 20 mit anderen I/O-Vorrichtungen gekoppelt ist), kann die Anforderungsschaltung 230C auch gekoppelt sein, um das Block_MC1-Signal zur Verwendung beim Blockieren von Anforderungen von den anderen I/O-Vorrichtungen zu empfangen.
  • Jede der Anforderungsschaltungen 230A230E verwendet das von dem Speichercontroller 16 empfangene Blocksignal, um Speichertransaktionen zu blockieren (falls das Blocksignal aktiviert ist). Somit können die Prozessoren 12A12B und der L2-Cachespeicher 14 Speichertransaktionen blockieren, wenn das Block_MC1-Signal aktiviert ist, während die I/O-Bridge 20 Transaktionen blockieren kann, wenn das Block_MC2-Signal aktiviert ist. Somit können andere Agenten blockiert werden, und es kann den Paketschnittstellenschaltungen 22A22C ermöglicht werden, das Initiieren von Speichertransaktionen fortzusetzen, indem der Speichercontroller 16 das Block_MC1-Signal aktiviert und das Block_MC2-Signal deaktiviert. Insbesondere kann das Block_MC1-Signal aktiviert werden, wenn die Anzahl von Transaktionen in der Eingabewarteschlange 236D einen ersten Schwellwert übersteigt, und das Block_MC2-Signal kann aktiviert werden, wenn die Eingabewarteschlange 236D voll wird (oder voll ist), ähnlich den anderen Blocksignalen von den anderen Agenten. Im Allgemeinen kann der erste Schwellwert weniger als die Anzahl von Transaktionen in der Eingabewarteschlange 236D sein, bei der das Block_MC2-Signal aktiviert wird.
  • Bei einer Ausführungsform kann der Schwellwert zum Aktivieren des Block_MC1-Signals in dem Konfigurationsregister 238 programmierbar sein. Das Konfigurationsregister 238 kann eine Angabe des ersten Schwellwerts speichern. Die Angabe kann die Anzahl von Einträgen sein, die für das Speichern von Transaktionen frei sein müssen, bevor das Block_MC1-Signal deaktiviert wird, die Anzahl von Einträgen, die, wenn sie durch Transaktionen besetzt sind, die Aktivierung des Block_MC1-Signals veranlassen, ein Prozentsatz der Gesamtanzahl von Einträgen, welche die Aktivierung oder Deaktivierung des Block_MC1-Signals veranlassen, usw. Falls gewünscht, kann der erste Schwellwert als Alternative festgelegt sein.
  • Wie bereits erwähnt wurde, kann eine Blockschaltung 232A232E das entsprechende Blocksignal aktivieren, wenn die entsprechende Eingabewarteschlange 236A236E voll wird. Genauer gesagt kann die Blockschaltung 232A232E das entsprechende Blocksignal aktivieren, wenn die Anzahl von freien (gegenwärtig unbenutzten) Einträgen auf einen vorgegebenen Schwellwert abfällt. Der Schwellwert kann Null sein, wenn das Blocksignal früh genug erzeugt werden kann, um jegliche nachfolgende Transaktion zu blockieren, die eine Teilnahme durch den entsprechenden Agenten erfordern kann. Bei einer Ausführungsform sind Arbitration und Transaktionsinitiierung jedoch pipelined. Daher kann die Initiierung einer Transaktion, die den letzten freien Eingabewarteschlangeneintrag füllen würde, parallel mit der Arbitration für eine Transaktion stattfinden, die ebenfalls einen Eingabewarteschlangeneintrag in diesem Agenten erfordern würde. Somit kann der Schwellwert bei einer solchen Ausführungsform Eins sein. Im Ansprechen auf eine Transaktion, welche den vorletzten freien Warteschlangeneintrag füllt und einen Warteschlangeneintrag frei lässt, aktiviert die entsprechende Blockschaltung 232A232E ihr Blocksignal.
  • Es wird angemerkt, dass jede der Eingabewarteschlangen 236A236E eine geeignete Anzahl von Einträgen aufweisen kann, die von der Anzahl von Einträgen in anderen Eingabewarteschlangen 236A236E verschieden sein kann. Auf ähnliche Weise kann jede der Ausgabewarteschlangen 234A234E eine geeignete Anzahl von Einträgen aufweisen, die von der Anzahl von Einträgen in anderen Ausgabewarteschlangen 234A234E verschieden sein kann.
  • Es wird ferner angemerkt, dass sich die oben stehende Beschreibung zwar auf Szenarios mit vollen Eingabewarteschlangen als Ursache für die Nichtverfügbarkeit zur Teilnahme bei zusätzlichen Transaktionen bezieht, dass es aber nach Wunsch bei einem gegebenen Agenten andere Ursachen dafür geben kann, dass er für die Teilnahme an zusätzlichen Transaktionen nicht verfügbar ist. Die Blocksignale können wie vorausgehend beschrieben auch für solche Szenarios verwendet werden.
  • Unter Bezugnahme auf 9 ist als nächstes ein Ablaufdiagramm gezeigt, das den Betrieb einer Ausführungsform des in 8 gezeigten Speichercontrollers 16 veranschaulicht. Andere Ausführungsformen sind möglich und werden in Betracht gezogen. Die in 9 gezeigten Blöcke sind für ein vereinfachtes Verständnis in einer bestimmten Reihenfolge veranschaulicht. Es kann jedoch jede Reihenfolge verwendet werden. Konkret gesprochen sind die Blöcke 180 und 182 als Gruppe und die Blöcke 184 und 186 als Gruppe unabhängig und können in jeder Reihenfolge oder parallel ausgeführt werden. Konkret gesprochen kann die kombinatorische Logikschaltung in dem Speichercontroller 16 die Gruppen parallel ausführen.
  • Falls die Anzahl von Transaktionen in der Eingabewarteschlange 236D größer als der in dem Konfigurationsregister 238 (Entscheidungsblock 180) eingestellte Schwellwert ist, aktiviert der Speichercontroller 16 das Block_MC1-Signal (Block 182). Ansonsten ist das Block_MC1-Signal deaktiviert. Auf äquivalente Weise kann die Prüfung in Block 180 sein, dass die Anzahl von freien Einträgen in der Eingabewarteschlange 236D weniger als der im Konfigurationsregister 238 eingestellte Schwellwert ist.
  • Wenn die Eingabewarteschlange 236D voll ist (oder voll wird, wie vorausgehend beschrieben wurde) (Entscheidungsblock 184), aktiviert der Speichercontroller das Block_MC2-Signal (Block 186). Ansonsten ist das Block_MC2-Signal deaktiviert.
  • Unter Bezugnahme auf 10 ist dort als nächstes ein Blockdiagramm eines Trägermediums 300 mit einer Datenbank gezeigt, das repräsentativ für das System 10 ist. Allgemein gesprochen kann ein Trägermedium Speichermedien wie etwa magnetische oder optische Medien, z.B. Disk oder CD-ROM, flüchtige oder nichtflüchtige Speichermedien wie etwa RAM (z.B. SDRAM, RDRAM, SRAM usw.), ROM usw., sowie Übertragungsmedien oder Signale wie etwa elektrische, elektromagnetische oder digitale Signale aufweisen, die über ein Kommunikationsmedium wie etwa ein Netz und/oder eine drahtlose Verbindung übertragen werden.
  • Im Allgemeinen kann die Datenbank des auf dem Trägermedium 300 getragenen Systems 10 eine Datenbank sein, die von einem Programm direkt oder indirekt gelesen und verwendet werden kann, um die Hardware herzustellen, welche das System 10 aufweist. Beispielsweise kann die Datenbank eine Behavioral Level-Beschreibung oder Register-Transfer Level (RTL)-Beschreibung der Hardware-Funktionalität in einer High Level-Entwurfssprache (HDL) wie etwa Verflog oder VHDL sein. Die Beschreibung kann von einem Synthesetool gelesen werden, das die Beschreibung synthetisieren kann, um eine Netlist zu erzeugen, die eine Liste von Gates von einer Synthesebibliothek aufweist. Die Netlist weist eine Gruppe von Gates auf, die ebenfalls die Funktionalität der Hardware darstellen, welche das System 10 aufweist. Die Netlist kann dann platziert und geroutet werden, um einen Datensatz zu erzeugen, der auf Masken anzuwendende geometrische Formen beschreibt. Die Masken können dann in verschiedenen Halbleiterherstellungsschritten verwendet werden, um eine Halbleiterschaltung oder Halbleiterschaltungen herzustellen, die dem System 10 entsprechen. Als Alternative kann die Datenbank auf dem Trägermedium 300 auf Wunsch die Netlist (mit oder ohne die Synthesebibliothek) oder der Datensatz sein.
  • Während das Trägermedium 300 eine Darstellung des Systems 10 trägt, können andere Ausführungsformen nach Wunsch eine Darstellung eines jeglichen Teils des Systems 10 tragen, einschließlich jeder Gruppe von Agenten (z.B. der Prozessoren 12A12B, des L2-Cachespeichers 14, des Speichercontrollers 16 und/oder der I/O-Bridge 20), Paketschnittstellenschaltungen 22A22C oder Teile davon, den Bus 24 usw. Die oben erwähnten Datenbanken können eine Schaltung aufweisen, die einen Mechanismus für das System 10 oder Teile davon definiert.
  • Zahlreiche Variationen und Modifikationen ergeben sich für den Fachmann bei einer gründlichen Würdigung der oben stehenden Beschreibung. Es ist beabsichtigt, dass die nachfolgenden Patentansprüche so interpretiert werden, dass sie alle solchen Variationen und Modifikationen mit umfassen.
  • Soweit vorausgehend beschriebene Ausführungsformen der Erfindung zumindest teilweise unter Verwendung einer Software-gesteuerten programmierbaren Verarbeitungsvorrichtung wie etwa eines Digitalen Signalprozessors, Mikroprozessors, anderer Verarbeitungsvorrichtungen, eines Datenverarbeitungsgeräts oder Computersystems implementierbar sind, dürfte es ersichtlich sein, dass ein Computerprogramm oder Programmelement zum Konfigurieren einer programmierbaren Vorrichtung, eines programmierbaren Geräts oder Systems zum Implementieren der vorausgehend beschriebenen Verfahren, Mechanismen und/oder Module als ein Aspekt der vorliegenden Erfindung in Betracht gezogen wird. Das Computerprogramm oder Programmelement kann als Quellcode ausgeführt sein und einer Kompilierung für die Implementierung auf einer Verarbeitungsvorrichtung, einem Gerät oder System unterzogen werden, oder kann beispielsweise als Objektcode ausgeführt sein. Für den Fachmann dürfte problemlos ersichtlich sein, dass der Ausdruck Computer/Rechner in seiner grundlegenden Bedeutung programmierbare Vorrichtungen wie die oben erwähnten, sowie Datenverarbeitungsgeräte und Computersysteme mit umfasst.
  • Auf geeignete Weise ist das Computerprogramm oder Programmelement auf einem Trägermedium in einer durch eine Maschine oder Vorrichtung lesbaren Form gespeichert, z.B. in Festkörperspeicher, optischem oder magneto-optischem Speicher wie etwa einer lesbaren und/oder beschreibbaren Disk, z.B. einer CD und einer DVD, oder Magnetspeicher wie Disc oder Band, und die Verarbeitungsvorrichtung verwendet das Programm, Programmelement oder einen Teil davon, um es für den Betrieb zu konfigurieren. Das Computerprogramm oder Programmelement kann von einer entfernten Quelle geliefert werden, die in einem Kommunikationsmedium wie etwa einem elektronischen Signal ausgeführt ist, einschließlich Funkfrequenzträgerwelle oder optischer Trägerwelle. Solche Trägermedien werden ebenfalls als Aspekte der vorliegenden Erfindung in Betracht gezogen.
  • Im Hinblick auf die voraus gegangene Beschreibung bestimmter Ausführungsformen der Erfindung dürfte es für einen Fachmann ersichtlich sein, dass verschiedene Hinzufügungen, Modifikationen und Alternativen dazu vorgesehen werden können.
  • Im Hinblick auf die beigefügten Patentansprüche können Merkmale aus Unteransprüchen mit Merkmalen aus den nebengeordneten Ansprüchen kombiniert werden, und Merkmale aus jeweiligen nebengeordneten Ansprüchen können auf geeignete Weise und nicht nur in den in den Ansprüchen aufgezählten konkreten Kombinationen kombiniert werden.
  • Um Unsicherheiten zu vermeiden, sollte der Ausdruck "aufweisend", der in der Beschreibung und den Patentansprüchen verwendet wird, nicht so ausgelegt werden, dass er ausschließlich "bestehend aus" bedeutet.

Claims (16)

  1. Vorrichtung (10), welche aufweist: einen Prozessor (12A, 12B), der mit einer Zwischenverbindung (24) gekoppelt ist; einen Cache-Speicher (14), der mit der Zwischenverbindung (24) gekoppelt ist; einen Speichercontroller (16), der mit der Zwischenverbindung (24) gekoppelt ist; und eine Paketschnittstellenschaltung (22A, 22B, 22C), welche Pakete (50) von einer Paketschnittstelle (44A, 44B, 44C) empfängt und veranlasst, dass die Pakete (50) zum Speichern auf der Zwischenverbindung (24) übertragen werden; wobei der Prozessor (12A, 12B) für das Verarbeiten der von der Paketschnittstelle (44A, 44B, 44C) empfangenen Pakete (50) programmierbar ist, dadurch gekennzeichnet, dass der Prozessor (12A, 12B), der Cache-Speicher (14), der Speichercontroller (16) und die Paketschnittstellenschaltung (22A, 22B, 22C) in ein einzelnes Halbleitersubstrat integriert sind; die Paketschnittstellenschaltung (22A, 22B, 22C), im Ansprechen auf das Empfangen eines Paketes (50) von der Paketschnittstelle (44A, 44B, 44C), dazu konfiguriert ist, zu veranlassen, dass ein erster Abschnitt des Paketes (50) im Cache-Speicher (14) gespeichert wird, und ein restlicher Abschnitt des Paketes (50) in einem Speicher (26) gespeichert wird, mit dem der Speichercontroller (16) gekoppelt ist; und der Speichercontroller (16) so gekoppelt ist, dass er ein erstes Blocksignal für die Paketschnittstellenschaltung (22A, 22B, 22C) und ein zweites Blocksignal für andere, mit der Zwischenverbindung (24) gekoppelte Vorrichtungen zur Verfügung stellt, und wobei die Initiierung von Speichertransaktionen von der Paketschnittstellenschaltung (22A, 22B, 22C) auf der Zwischenverbindung (24) im Ansprechen auf eine Aktivierung des ersten Blocksignals gesperrt ist, und wobei die anderen Vorrichtungen so konfiguriert sind, dass sie die Initiierung von Speichertransaktionen auf der Zwischenverbindung (24) im Ansprechen auf eine Aktivierung des zweiten Blocksignals sperren.
  2. Vorrichtung nach Anspruch 1, wobei der erste Abschnitt mindestens einen Abschnitt eines Headers (52) des Paketes (50) aufweist.
  3. Vorrichtung nach Anspruch 1 oder 2, wobei die Paketschnittstellenschaltung (22A, 22B, 22C) ein Konfigurationsregister (40) aufweist, das für das Speichern einer Größe des ersten Abschnitts des Paketes (50) programmierbar ist.
  4. Vorrichtung nach einem der Ansprüche 1 bis 3, wobei die Paketschnittstelle (44A, 44B, 44C) einen Ethernet Media Access Controller aufweist.
  5. Vorrichtung nach einem der Ansprüche 1 bis 4, wobei der Speichercontroller (16) eine Eingabewarteschlange mit einer Mehrzahl von Einträgen für Transaktionen aufweist, und wobei der Speichercontroller (16) dazu konfiguriert ist, das zweite Blocksignal im Ansprechen darauf zu aktivieren, dass eine Anzahl der Mehrzahl von Einträgen, die verfügbar sind, weniger als eine erste Anzahl ist.
  6. Vorrichtung nach Anspruch 5, wobei der Speichercontroller (16) ferner dazu konfiguriert ist, das erste Blocksignal im Ansprechen darauf zu aktivieren, dass die Anzahl der Mehrzahl von Einträgen, die verfügbar sind, weniger als eine zweite Anzahl beträgt, wobei die zweite Anzahl weniger als die erste Anzahl beträgt.
  7. Vorrichtung nach Anspruch 5 oder 6, wobei der Speichercontroller (16) ein Konfigurationsregister aufweist, das für das Speichern einer Angabe der ersten Anzahl programmierbar ist.
  8. Vorrichtung nach einem der Ansprüche 1 bis 7, wobei die Paketschnittstellenschaltung (22A, 22B, 22C) mit der Zwischenverbindung (24) durch eine Busbrücke (20) gekoppelt ist.
  9. Trägermedium (300) zum Tragen von einer oder mehr Datenbanken, welches die Vorrichtung (10) nach einem der Ansprüche 1 bis 8 darstellt und durch ein Programm zum Herstellen von Hardware, welche die Vorrichtung (10) aufweist, lesbar ist.
  10. Verfahren, welches umfasst: Empfangen eines Paketes (50) von einer Paketschnittstelle (44A, 44B, 44C) in einer Paketschnittstellenschaltung (22A, 22B, 22C); und Übertragen des Paketes (50) zum Speichern auf einer Zwischenverbindung (24), mit der ein Cache-Speicher (14), ein Speichercontroller (16) und ein Prozessor (12A, 12B) gekoppelt sind; dadurch gekennzeichnet, dass der Prozessor (12A, 12B), der Cache-Speicher (14), der Speichercontroller (16) und die Paketschnittstellenschaltung (22A, 22B, 22C) in ein einzelnes Halbleitersubstrat integriert sind; wobei das Verfahren ferner die Schritte umfasst: Speichern eines ersten Abschnitts des Paketes (50) in dem Cache-Speicher (14) im Ansprechen auf den Empfang des Paketes (50) von der Paketschnittstelle (44A, 44B, 44C); Speichern eines restlichen Abschnitts des Paketes (50) in einem Speicher (26), mit dem der Speichercontroller (16) gekoppelt ist; Vorsehen durch den Speichercontroller (16) eines ersten Blocksignals für die Paketschnittstellenschaltung (22A, 22B, 22C) und eines zweiten Blocksignals für andere Vorrichtungen, die mit der Zwischenverbindung (24) gekoppelt sind; Sperren der Initiierung von Speichertransaktionen auf der Zwischenverbindung (24) von der Paketschnittstellenschaltung (22A, 22B, 22C) im Ansprechen auf eine Aktivierung des ersten Blocksignals; und Sperren der Initiierung von Speichertransaktionen auf der Zwischenverbindung (24) durch die anderen Vorrichtungen im Ansprechen auf eine Aktivierung der zweiten Blockangabe.
  11. Verfahren nach Anspruch 10, wobei der erste Abschnitt mindestens einen Abschnitt eines Headers (52) des Paketes (50) aufweist.
  12. Verfahren nach Anspruch 11, welches ferner die Aktivierung des zweiten Blocksignals durch den Speichercontroller (16) im Ansprechen darauf umfasst, dass eine Anzahl einer Mehrzahl von Einträgen in einer Eingabewarteschlange des Speichercontrollers (16), die verfügbar sind, weniger als eine erste Anzahl beträgt.
  13. Verfahren nach Anspruch 12, welches ferner die Aktivierung des ersten Blocksignals durch den Speichercontroller (16) im Ansprechen darauf umfasst, dass die Anzahl der Mehrzahl von Einträgen, die verfügbar sind, weniger als eine zweite Anzahl beträgt, wobei die zweite Anzahl weniger als die erste Anzahl beträgt.
  14. Computerprogramm mit maschinen- oder computerlesbaren Programmelementen, das zum Konfigurieren eines Computers betreibbar ist, um eines der Verfahren der Ansprüche 10 bis 13 zu implementieren.
  15. Computerprogramm-Trägermedium (300), das dazu konfiguriert ist, ein Computerprogramm nach Anspruch 14 zu tragen.
  16. Computerprogramm-Trägermedium (300) nach Anspruch 15, wobei der Träger mindestens eines aus der folgenden Gruppe von Medien aufweist: ein Signal einschließlich eines optischen, elektronischen oder HF-Trägersignals, oder Magnetplatte oder -band, Festkörperspeicher, eine optische lesbare und/oder beschreibbare Platte, eine Compact Disk (CD) und eine Digital Versatile Disk (DVD).
DE60217221T 2001-05-18 2002-05-20 Ein-Chip System zur Paketverarbeitung Expired - Lifetime DE60217221T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US861188 1986-05-09
US09/861,188 US7287649B2 (en) 2001-05-18 2001-05-18 System on a chip for packet processing

Publications (2)

Publication Number Publication Date
DE60217221D1 DE60217221D1 (de) 2007-02-15
DE60217221T2 true DE60217221T2 (de) 2007-10-04

Family

ID=25335122

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60217221T Expired - Lifetime DE60217221T2 (de) 2001-05-18 2002-05-20 Ein-Chip System zur Paketverarbeitung

Country Status (3)

Country Link
US (2) US7287649B2 (de)
EP (1) EP1261173B1 (de)
DE (1) DE60217221T2 (de)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748466B2 (en) * 2001-06-29 2004-06-08 Intel Corporation Method and apparatus for high throughput short packet transfers with minimum memory footprint
US6741497B2 (en) * 2001-08-30 2004-05-25 Micron Technology, Inc. Flash memory with RDRAM interface
US7062609B1 (en) * 2001-09-19 2006-06-13 Cisco Technology, Inc. Method and apparatus for selecting transfer types
US6947971B1 (en) * 2002-05-09 2005-09-20 Cisco Technology, Inc. Ethernet packet header cache
US7269752B2 (en) * 2002-06-04 2007-09-11 Lucent Technologies Inc. Dynamically controlling power consumption within a network node
US8015303B2 (en) 2002-08-02 2011-09-06 Astute Networks Inc. High data rate stateful protocol processing
US7769893B2 (en) * 2002-10-08 2010-08-03 Koninklijke Philips Electronics N.V. Integrated circuit and method for establishing transactions
US7814218B1 (en) 2002-10-17 2010-10-12 Astute Networks, Inc. Multi-protocol and multi-format stateful processing
US8151278B1 (en) 2002-10-17 2012-04-03 Astute Networks, Inc. System and method for timer management in a stateful protocol processing system
US20060146853A1 (en) * 2004-12-30 2006-07-06 Nokia Corporation System and method for sending related data over a digital broadcast system
AU2003263408A1 (en) * 2003-09-10 2005-03-29 Nokia Corporation Method and system for establishing a data link layer protocol on a physical layer port connection
US7571216B1 (en) * 2003-10-02 2009-08-04 Cisco Technology, Inc. Network device/CPU interface scheme
US7826614B1 (en) 2003-11-05 2010-11-02 Globalfoundries Inc. Methods and apparatus for passing initialization vector information from software to hardware to perform IPsec encryption operation
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US7185147B2 (en) * 2003-12-12 2007-02-27 Intel Corporation Striping across multiple cache lines to prevent false sharing
WO2005065035A2 (en) * 2004-01-08 2005-07-21 Wisair Ltd. Distributed and centralized media access control device and method
US7533154B1 (en) 2004-02-04 2009-05-12 Advanced Micro Devices, Inc. Descriptor management systems and methods for transferring data of multiple priorities between a host and a network
US7783769B2 (en) * 2004-03-31 2010-08-24 Intel Corporation Accelerated TCP (Transport Control Protocol) stack processing
US7864790B2 (en) * 2004-05-17 2011-01-04 Realtek Semiconductor Corp. Method and apparatus for improving the management of data packets
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
ATE535078T1 (de) 2004-07-23 2011-12-15 Citrix Systems Inc Verfahren und system zur sicherung von zugriff aus der ferne auf private netze
US7724657B2 (en) 2004-07-23 2010-05-25 Citrix Systems, Inc. Systems and methods for communicating a lossy protocol via a lossless protocol
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US20060129709A1 (en) * 2004-12-09 2006-06-15 International Business Machines Corporation Multipurpose scalable server communication link
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
WO2006106476A1 (en) * 2005-04-07 2006-10-12 Koninklijke Philips Electronics N. V. Network-on-chip environment and method for reduction of latency
US7480747B2 (en) * 2005-06-08 2009-01-20 Intel Corporation Method and apparatus to reduce latency and improve throughput of input/output data in a processor
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
US7707361B2 (en) * 2005-11-17 2010-04-27 Apple Inc. Data cache block zero implementation
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
US8301839B2 (en) * 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US20070280293A1 (en) * 2006-06-06 2007-12-06 Broadcom Corporation System and method for implementing video streaming over IP networks
US7730264B1 (en) * 2006-09-25 2010-06-01 Intel Corporation Adaptively reducing memory latency in a system
US8259576B2 (en) * 2007-03-23 2012-09-04 Intel Corporation Method and apparatus for performing interrupt coalescing
US20080240103A1 (en) * 2007-03-30 2008-10-02 Andreas Schmidt Three-port ethernet switch with external buffer
US7793032B2 (en) * 2007-07-11 2010-09-07 Commex Technologies, Ltd. Systems and methods for efficient handling of data traffic and processing within a processing device
KR20090012901A (ko) * 2007-07-31 2009-02-04 삼성전자주식회사 시스템 온 칩에서 재정의 가능한 디스크립터 장치 및 방법
US9146892B2 (en) * 2007-10-11 2015-09-29 Broadcom Corporation Method and system for improving PCI-E L1 ASPM exit latency
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US7921275B2 (en) * 2008-02-01 2011-04-05 International Business Machines Corporation Method for enabling direct prefetching of data during asychronous memory move operation
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
JP5102917B2 (ja) 2008-02-22 2012-12-19 株式会社日立製作所 ストレージ装置及びアクセス命令送信方法
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
WO2012100984A1 (en) * 2011-01-28 2012-08-02 Napatech A/S An apparatus and a method for receiving and forwarding data packets
JP5939489B2 (ja) * 2011-03-10 2016-06-22 マーベル ワールド トレード リミテッド 非任意ネットワークに用いるデータブロックシステム
US9104531B1 (en) * 2011-11-14 2015-08-11 Marvell Israel (M.I.S.L.) Ltd. Multi-core device with multi-bank memory
US9219693B2 (en) 2012-02-22 2015-12-22 Marvell World Trade Ltd. Network devices with time aware medium access controller
US9960872B2 (en) 2012-03-08 2018-05-01 Marvell International Ltd. Systems and methods for performing a soft-block of a queue based on a size of a remaining period of a guard band
US9882823B2 (en) 2012-03-08 2018-01-30 Marvell World Trade Ltd. Systems and methods for blocking transmission of a frame in a network device
FR2989489B1 (fr) * 2012-04-16 2015-11-27 Commissariat Energie Atomique Systeme et procede de gestion d'une coherence de caches dans un reseau de processeurs munis de memoires caches.
CN104620548B (zh) 2012-09-11 2018-02-27 马维尔国际贸易有限公司 用于根据ieee 802.1 qbv传输分组的方法和装置
US9203806B2 (en) 2013-01-11 2015-12-01 Centripetal Networks, Inc. Rule swapping in a packet network
MY180992A (en) * 2013-03-13 2020-12-15 Intel Corp Memory latency management
US9563586B2 (en) * 2013-04-11 2017-02-07 Apple Inc. Shims for processor interface
US10885583B2 (en) * 2013-12-19 2021-01-05 Chicago Mercantile Exchange Inc. Deterministic and efficient message packet management
US9823864B2 (en) 2014-06-02 2017-11-21 Micron Technology, Inc. Systems and methods for throttling packet transmission in a scalable memory system protocol
US11729144B2 (en) 2016-01-04 2023-08-15 Centripetal Networks, Llc Efficient packet capture for cyber threat analysis
US11422968B2 (en) * 2020-03-09 2022-08-23 Infineon Technologies LLC Methods, devices and systems for high speed serial bus transactions
US11316823B2 (en) 2020-08-27 2022-04-26 Centripetal Networks, Inc. Methods and systems for efficient virtualization of inline transparent computer networking devices
JP2022048644A (ja) * 2020-09-15 2022-03-28 富士通株式会社 半導体装置及び転送方法
US11362996B2 (en) 2020-10-27 2022-06-14 Centripetal Networks, Inc. Methods and systems for efficient adaptive logging of cyber threat incidents
US20220197813A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Application programming interface for fine grained low latency decompression within processor core
WO2023022722A1 (en) * 2021-08-19 2023-02-23 Zeku, Inc. Apparatus and method of block-based graphics processing in a system-on-a-chip

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463424A (en) * 1981-02-19 1984-07-31 International Business Machines Corporation Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes
US4433378A (en) * 1981-09-28 1984-02-21 Western Digital Chip topography for MOS packet network interface circuit
US4760571A (en) * 1984-07-25 1988-07-26 Siegfried Schwarz Ring network for communication between one chip processors
US5367643A (en) 1991-02-06 1994-11-22 International Business Machines Corporation Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
US5974508A (en) * 1992-07-31 1999-10-26 Fujitsu Limited Cache memory system and method for automatically locking cache entries to prevent selected memory items from being replaced
US5640399A (en) * 1993-10-20 1997-06-17 Lsi Logic Corporation Single chip network router
US5914955A (en) * 1993-10-20 1999-06-22 Lsi Logic Corporation Switched network hub on a chip
US5668809A (en) * 1993-10-20 1997-09-16 Lsi Logic Corporation Single chip network hub with dynamic window filter
US5802287A (en) * 1993-10-20 1998-09-01 Lsi Logic Corporation Single chip universal protocol multi-function ATM network interface
US5887187A (en) * 1993-10-20 1999-03-23 Lsi Logic Corporation Single chip network adapter apparatus
US5546546A (en) * 1994-05-20 1996-08-13 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
US5666514A (en) * 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
US5737748A (en) * 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
EP0760979A1 (de) * 1995-03-27 1997-03-12 International Business Machines Corporation Busstruktur für ein multiprozessorsystem
EP0748087A1 (de) 1995-06-09 1996-12-11 International Business Machines Corporation Zugriffsteuerungssystem eines gemeinsamen Pufferspeichers
US5887146A (en) * 1995-08-14 1999-03-23 Data General Corporation Symmetric multiprocessing computer with non-uniform memory access architecture
US6373846B1 (en) * 1996-03-07 2002-04-16 Lsi Logic Corporation Single chip networking device with enhanced memory access co-processor
US5778414A (en) * 1996-06-13 1998-07-07 Racal-Datacom, Inc. Performance enhancing memory interleaver for data frame processing
US5893150A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. Efficient allocation of cache memory space in a computer system
US5991817A (en) * 1996-09-06 1999-11-23 Cisco Systems, Inc. Apparatus and method for a network router
US6209020B1 (en) * 1996-09-20 2001-03-27 Nortel Networks Limited Distributed pipeline memory architecture for a computer system with even and odd pids
US6202125B1 (en) * 1996-11-25 2001-03-13 Intel Corporation Processor-cache protocol using simple commands to implement a range of cache configurations
US5829025A (en) * 1996-12-17 1998-10-27 Intel Corporation Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction
US5908468A (en) * 1997-10-24 1999-06-01 Advanced Micro Devices, Inc. Data transfer network on a chip utilizing a multiple traffic circle topology
US6111859A (en) * 1997-01-16 2000-08-29 Advanced Micro Devices, Inc. Data transfer network on a computer chip utilizing combined bus and ring topologies
US6266797B1 (en) * 1997-01-16 2001-07-24 Advanced Micro Devices, Inc. Data transfer network on a computer chip using a re-configurable path multiple ring topology
US6185630B1 (en) * 1997-02-14 2001-02-06 Advanced Micro Devices, Inc. Device initializing system with programmable array logic configured to cause non-volatile memory to output address and data information to the device in a prescribed sequence
US6018763A (en) * 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6092137A (en) * 1997-11-26 2000-07-18 Industrial Technology Research Institute Fair data bus arbitration system which assigns adjustable priority values to competing sources
US6151662A (en) * 1997-12-02 2000-11-21 Advanced Micro Devices, Inc. Data transaction typing for improved caching and prefetching characteristics
US6279087B1 (en) * 1997-12-22 2001-08-21 Compaq Computer Corporation System and method for maintaining coherency and improving performance in a bus bridge supporting write posting operations
US6202129B1 (en) * 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
GB2341460B (en) * 1998-05-19 2003-02-19 Lsi Logic Corp Method and apparatus for arbitrating between requests for access to a shared resource
US6098064A (en) * 1998-05-22 2000-08-01 Xerox Corporation Prefetching and caching documents according to probability ranked need S list
US6215497B1 (en) * 1998-08-12 2001-04-10 Monolithic System Technology, Inc. Method and apparatus for maximizing the random access bandwidth of a multi-bank DRAM in a computer graphics system
US6272522B1 (en) 1998-11-17 2001-08-07 Sun Microsystems, Incorporated Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
US6425060B1 (en) * 1999-01-05 2002-07-23 International Business Machines Corporation Circuit arrangement and method with state-based transaction scheduling
US6480489B1 (en) 1999-03-01 2002-11-12 Sun Microsystems, Inc. Method and apparatus for data re-assembly with a high performance network interface
US6269427B1 (en) * 1999-03-18 2001-07-31 International Business Machines Corporation Multiple load miss handling in a cache memory system
US6332179B1 (en) * 1999-08-19 2001-12-18 International Business Machines Corporation Allocation for back-to-back misses in a directory based cache
US6349365B1 (en) * 1999-10-08 2002-02-19 Advanced Micro Devices, Inc. User-prioritized cache replacement
US6438651B1 (en) * 1999-11-01 2002-08-20 International Business Machines Corporation Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer
US6262594B1 (en) * 1999-11-05 2001-07-17 Ati International, Srl Apparatus and method for configurable use of groups of pads of a system on chip
US6526462B1 (en) * 1999-11-19 2003-02-25 Hammam Elabd Programmable multi-tasking memory management system
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6751704B2 (en) * 2000-12-07 2004-06-15 International Business Machines Corporation Dual-L2 processor subsystem architecture for networking system
US6748495B2 (en) * 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US6574708B2 (en) * 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation

Also Published As

Publication number Publication date
US7287649B2 (en) 2007-10-30
US20020174252A1 (en) 2002-11-21
US20020174255A1 (en) 2002-11-21
EP1261173A3 (de) 2005-01-05
US7320022B2 (en) 2008-01-15
EP1261173A2 (de) 2002-11-27
DE60217221D1 (de) 2007-02-15
EP1261173B1 (de) 2007-01-03

Similar Documents

Publication Publication Date Title
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE60207210T2 (de) System mit Schnittstellen, einem Schalter und einer Speicherbrücke mit cc-numa (cache-coherent non-uniform memory access)
DE60204213T2 (de) Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken
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
DE60215417T2 (de) Netzwerkschaltung
DE60203469T2 (de) System mit Schnittstellen und einem Schalter für die Trennung von kohärentem und nichtkohärentem Datenpaketverkehr
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE60115795T2 (de) Adaptiver Wiederholungsmechanismus
DE69823483T2 (de) Mehrfachkopiewarteschlangestruktur mit einem suchbaren cachespeicherbereich
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE112020002496T5 (de) System und verfahren zur erleichterung eines effizienten host-speicherzugriffs von einer netzwerkschnittstellensteuerung (nic)
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69334165T2 (de) Netzwerkanpassungseinrichtung mit hauptrechnerunterbrechung und indikationsverwaltung
DE69233194T2 (de) Verfahren und vorrichtung für simultane paketbus.
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE69838387T2 (de) Verfahren und vorrichtung in einem paketenleitweglenkungsschalter um den zugriff zu einem gemeinsamen speicher auf verschiedenen datenraten zu steuern
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE19982854B4 (de) Verfahren und Einrichtung zum Minimieren von Leerlaufbedingungen eines asynchronen Sendefifos und von Überlaufbedingungen eines Empfangsfifos
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE69819303T2 (de) Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren
DE69919114T2 (de) Verfahren und Vorrichtung zur Netzwerküberlastkontrolle
DE60203358T2 (de) Systeme, welche Paketschnittstellen und Paket-DMA (Direct Memory Access) Schaltkreise beinhalten, um Paketströme zu teilen und zusammenzusetzen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M