DE60211006T2 - Peripherieschnittstellenschaltung für einen e/a-knoten eines computersystems - Google Patents

Peripherieschnittstellenschaltung für einen e/a-knoten eines computersystems Download PDF

Info

Publication number
DE60211006T2
DE60211006T2 DE60211006T DE60211006T DE60211006T2 DE 60211006 T2 DE60211006 T2 DE 60211006T2 DE 60211006 T DE60211006 T DE 60211006T DE 60211006 T DE60211006 T DE 60211006T DE 60211006 T2 DE60211006 T2 DE 60211006T2
Authority
DE
Germany
Prior art keywords
bus
packet
data
command
buffer
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
DE60211006T
Other languages
English (en)
Other versions
DE60211006D1 (de
Inventor
Tahsin Round Rock ASKAR
D. Larry Austin HEWITT
G. Eric Austin CHAMBERS
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/093,146 external-priority patent/US6725297B1/en
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE60211006D1 publication Critical patent/DE60211006D1/de
Publication of DE60211006T2 publication Critical patent/DE60211006T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Description

  • 1. Technisches Gebiet
  • Diese Erfindung betrifft die Eingabe/Ausgabe für ein Computersystem und betrifft insbesondere die Handhabung peripherer Transaktionen in einem Eingabe/Ausgabe-Knoten.
  • 2. Hintergrund der Erfindung
  • In einem typischen Computersystem kommunizieren ein oder mehrere Prozessoren mit Eingabe/Ausgabe- (I/O)-Einrichtungen über einen oder mehrere Busse. Die I/O-Einrichtungen können mit den Prozessoren über eine I/O-Brücke gekoppelt sein, die den Datenaustausch zwischen einem peripheren Bus, der mit den I/O-Einrichtung verbunden ist, und einem gemeinsam benutzten Bus erweitert, der mit den Prozessoren verbunden ist. Des weiteren kann die I/O-Brücke den Datenaustausch zwischen einem Speichersystem und den I/O-Einrichtungen oder dem Systemspeicher und den Prozessoren verwalten.
  • Viele Bussysteme weisen einige Nachteile auf. Beispielsweise erzeugen viele Geräte, die an einem Bus angeschlossen sind, ein relativ große elektrische Kapazität für Geräte, die Signale auf den Bus einspeisen. Des weiteren erzeugen viele Ankopplungspunkte auf einem gemeinsam genutzten Bus Signalreflektionen bei hohen Signalfrequenzen, die die Signalintegrität beinträchtigen. Folglich werden Signalfrequenzen auf dem Bus im Allgemeinen relativ gering gehalten, um die Signalintegrität auf einem akzeptablen Niveau zu halten. Die relativ geringen Signalfrequenzen reduzieren die Signalbandbreite und begrenzen damit das Leistungsverhalten der an den Bus angeschlossenen Einrichtungen.
  • Das Fehlen einer Anpassbarkeit an eine größere Anzahl an Einrichtungen ist ein weiterer Nachteil gemeinsamer Bussysteme. Die verfügbare Bandbreite eines gemeinsam genutzten Busses ist im Wesentlichen festgelegt (und kann abnehmen, wenn das Hinzufügen weiterer Geräte eine Reduzierung der Signalfrequenzen auf dem Bus hervorruft). Sobald die Bandbreiteerfordernisse der an den Bus angeschlossenen Einrichtungen (entweder direkt oder indirekt) die verfügbare Bandbreite des Busses übersteigen, werden Geräte häufig in ihrer Funktion unterbrochen, wenn ein Zugriff auf den Bus versucht wird, und das Gesamtleistungsverhalten des Computersystems mit dem gemeinsam benutzten Bus wird in aller Regel verringert. Ein Beispiel eines gemeinsam genutzten Busses, der von I/O- Einrichtungen verwendet wird, ist ein peripherer Kompontentenverbindungs- (PCI) Bus oder ein erweiterter PCI- (PCI-X) Bus.
  • In vielen I/O-Brückeneinrichtungen wird ein Zwischenspeichermechanismus angewendet, um eine Reihe von anhängigen Transaktionen von dem PCI-Bus für einen endgültigen Zielbus zu puffern. Jedoch kann das Zwischenspeichern Funktionsunterbrechungen auf dem PCI-Bus hervorrufen. Funktionsunterbrechungen können hervorgerufen werden, wenn eine Reihe Transaktionen in einer Warteschlange gepuffert werden, um auf das Weiterleiten zu einem Zielbus zu warten, und eine Funktionsunterbrechung in dem Zielbus auftritt, wodurch der Fortgang der Weiterleitung unterbrochen wird. Sodann trifft eine Transaktion, die die Beendigung der wartenden Transaktionen ermöglicht, an der Warteschlange ein und wird hinter den anderen Transaktionen gespeichert. Um die Funktionsunterbrechung aufzulösen, müssen die Transaktionen in der Warteschlange irgendwie umgeordnet werden, so dass die neu eingetroffene Transaktion vor den anhängigen Transaktionen gesendet wird. Um damit Situationen wie zuvor zu verhindern, schreibt die PCI-Busspezifikation eine Reihe von Umordnungsregeln vor, die die Handhabung und die Aneinanderordnung von PCI-Bustransaktionen regeln.
  • Um einige der Nachteile eines gemeinsam genutzten Busses zu überwinden, werden in einigen Computersystemen paketbasierte Kommunikationsabläufe zwischen Geräten oder Knoten angewendet. In derartigen Systemen können Knoten miteinander durch Austausch von Informationspaketen kommunizieren. Im Allgemeinen ist ein „Knoten bzw. Knotenpunkt" eine Einrichtung, die in der Lage ist, an Transaktionen bei Vorhandensein einer Verbindung teilzunehmen. Beispielsweise kann die Verbindung paketbasiert sein, und der Knoten kann ausgebildet sein, Pakete zu empfangen und zu senden. Im Allgemeinen ist ein „Paket" eine Kommunikation zwischen zwei Knoten: ein iniziierender oder "Quellen"-Knoten, der ein Paket sendet, und ein Bestimmungs- oder „Ziel"-Knoten, der das Paket empfängt. Wenn ein Paket den Zielknoten erreicht, nimmt der Zielknoten die von dem Paket transportierte Information auf und verarbeitet die Information intern. Ein Knoten, der auf einem Kommunikationsweg zwischen dem Quellenknoten und dem Zielknoten angeordnet ist, kann das Paket von dem Quellenknoten zu dem Zielknoten weiterreichen oder weiterleiten.
  • WO-A-9814015 offenbart eine serielle I/O-Steuerung mit mehreren Kanälen, in der jeder Kanal mehrere virtuelle Sendewege und Empfangswege aufweist. Pakete, die von den Kanälen empfangen werden, werden über einen internen Bus zu einem Prozessor weitergeleitet.
  • Ferner gibt es Systeme, die eine Kombination aus paketbasierter Kommunikation und busbasierter Kommunikation verwenden. Beispielsweise kann ein System mit einem PCI-Bus und einem Graphikbus, etwa einem AGP, verbunden sein. Der PCI-Bus kann mit einer Paketbusschnittstelle verbunden sein, die dann die PCI-Transaktionen in Pakettransaktionen zum Senden über einen Paketbus übersetzt. In gleicher Weise kann der Graphikbus mit einer AGP-Schnittstelle verbunden sein, die die AGP-Bustransaktionen in Pakettransaktionen übersetzt. Jede Schnittstelle kann mit einer Host-Brücke, die mit einem der Prozessoren verbunden ist, oder in einigen Fällen mit einer anderen peripheren Einrichtung kommunizieren.
  • In PCI-Einrichtungen, die Transaktionen initiieren, können die paketbasierten Transaktionen durch einige Regeln für die Reihenfolge, wie sie durch die PCI-Lokalbusspezifikationen vorgegeben sind, beschränkt sein. Das gleiche gilt für Pakettransaktionen, die für den PCI-Bus bestimmt sind. Diese Regeln für die Reihenfolge werden in den paketbasierten Transaktionen weiterhin befolgt, da Transaktionsunterbrechungen, die an einer Paketbusschnittstelle auftreten können, einen Stillstand auch an dieser Paketbusschnittstelle hervorrufen können. Dieser Stillstand kann weitere Unterbrechungen bis hinein in das Paketbusnetz verursachen. Ferner können AGP-Transaktionen auf einen Satz aus Transaktionsreihenfolgeregelungen folgen, um eine korrekte Zulieferung von Daten zu gewährleisten.
  • Abhängig von der Konfiguration der I/O-Knoten können Transaktionen über einen Knoten zu einem weiteren Knoten oder in einer Richtung zur Host-Brücke oder weg von der Host-Brücke geleitet werden. Alternativ können Transaktionen in den Paketverkehr an einem speziellen Knoten mittels einem peripheren Bus eingespeist werden, der lokal mit diesem Knoten verbunden ist. In jedem Falle kann eine periphere Schnittstellenschaltung, die die peripheren Transaktionen speichert und steuert, wenn die Transaktionen in den Kommunikationsweg eingespeist oder von dem Kommunikationsweg aufgenommen werden, vorteilhaft sein.
  • Überblick über die Erfindung
  • Gemäß einem Aspekt der Erfindung wird eine periphere Schnittstellenschaltung gemäß Anspruch 1 bereitgestellt. Weitere Ausführungsformen sind in den abhängigen Ansprüchen beschrieben.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist eine Blockansicht einer Ausführungsform eines Computersystems.
  • 2 ist eine Blockansicht einer Ausführungsform eines Eingabe/Ausgabe-Knotens.
  • 3 ist eine Blockansicht einer Ausführungsform einer peripheren Schnittstellenschaltung.
  • 4 ist eine Blockansicht einer Ausführungsform einer Pufferschaltung für wiederholtes Absenden nicht aufgegebener Pakete.
  • 5 ist ein Flussdiagramm, das die Handhabung einer Teilantwortkennung in einer Ausführungsform einer peripheren Schnittstellenschaltung beschreibt.
  • 6 ist eine Blockansicht einer Ausführungsform einer Pufferschaltung mit einer FIFO-Struktur mit Speicherfähigkeit.
  • 7 ist ein beispielhaftes Diagramm einer Ausführungsform einer Steuerschaltung und einer Speichereinheit.
  • 8 ist ein Flussdiagramm, das die abwärtsgerichtete Antworttransaktionsumordnungsfunktion einer Ausführungsform einer peripheren Schnittstellenschaltung zeigt.
  • 9 ist ein Flussdiagramm, das die Aufteilungsantwortfunktion einer Ausführungsform einer peripheren Schnittstellenschaltung zeigt.
  • 10 ist eine Blockansicht einer Ausführungsform einer peripheren Schnittstellenschaltung zur Anbindung an einen Graphikbus.
  • 11 ist eine Ansicht einer Ausführungsform einer peripheren Schnittstellenschaltung zur Handhabung von Graphikantworten.
  • 12 ist eine Ansicht einer Ausführungsform einer Vorrichtung zum Umordnungen von Graphikantworten.
  • 13 ist ein Flussdiagramm, das die Funktion einer Ausführungsform einer Transaktionsumordnungseinrichtung für Graphikantworten zeigt.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind dennoch spezielle Ausführungsformen beispielhaft in den Zeichnungen dargestellt und werden hierin detailliert beschrieben.
  • Art bzw. Arten zum Ausführen der Erfindung
  • 1 zeigt eine Blockansicht einer Ausführungsform eines Computersystems. Das Computersystem umfasst Prozessoren 10A und 10B, die jeweils durch einen kohärenten Paketbus 15 verbunden sind. Jeder Abschnitt des kohärenten Paketbusses 15 kann eine Punkt-zu-Punkt-Verbindung zwischen jedem der Prozessoren 10A bis D bilden. Obwohl vier Prozessoren gezeigt sind, die Punkt-zu-Punkt-Verbindungen bilden, ist zu beachten, dass ein andere Anzahl an Prozessoren verwendet werden kann und dass andere Arten an Bussen eine Verbindung unter diesen Prozessoren bilden können. Das Computersystem umfasst ferner drei I/O-Knoten, die als 20, 30 und 40 bezeichnet sind und die jeweils in einer Kette mittels I/O-Paketbussen 50B und 50C miteinander verbunden sind. Der I/O-Paketbus 50A ist zwischen dem Host-Knoten-Prozessor 10A und dem I/O-Knoten 20 angeschlossen. Der Prozessor 10A ist als ein Host-Knoten dargestellt, der eine Host-Brücke zur Kommunikation mit dem I/O-Paketbus 50A aufweisen kann. Die Prozessoren 108 bis 10D können ebenso Host-Brücken für die Kommunikation mit anderen I/O-Paketbussen (nicht gezeigt) enthalten. Die Kommunikationsverbindungen, die durch die I/O-Paketbusse 50A bis C gebildet werden, werden auch als Punkt-zu-Punkt-Verbindungen bezeichnet. Der I/O-Knoten 20 ist mit einem Paar aus peripheren Bussen 50A bis B verbunden. Der I/O-Knoten 30 ist mit einem Graphikbus 35 verbunden, während der I/O-Knoten 40 mit einem weiteren peripheren Bus 50 verbunden ist.
  • Die Prozessen 10A bis 10D sind jeweils anschauliche Beispiele für einen x86-Mikroprozessor, etwa eine Athlon-Mikroprozessor. Ferner kann ein Beispiel eines Paketbusses, etwa der I/O-Paketbus 50A bis 50C ein nicht kohärenter HyperTransport-Bus sein. Die peripheren Busse 25A bis B und der periphere Bus 45 sind anschauliche Beispiele eines üblichen peripheren Busses, etwa eines peripheren Komponentenverbindungs- (PCI) Bus oder eines erweiterten PCI- (PCI-X) Busses. Der Graphikbus 35 ist ein anschauliches Beispiel eines beschleunigten Graphikanschlusses (AGP). Selbstverständlich können andere Arten an Mikroprozessoren und andere Arten an peripheren Bussen verwendet werden.
  • Zu beachten ist, dass, obwohl drei I/O-Knoten gezeigt sind, die mit dem Host-Prozessor 10a verbunden sind, andere Ausführungsformen eine andere Anzahl an Knoten aufweisen können, und diese Knoten können in anderer Weise miteinander verbunden sein. Die in 1a dargestellte Kettentopologie ist zum einfacheren Verständnis gezeigt.
  • In der dargestellten Ausführungsform erhält die Host-Brücke des Prozessors 10A aufwärtsgerichtete Pakettransaktionen von abwärts angeordneten Knoten, etwa den I/O-Knoten 20, 30 oder 40. Alternativ kann die Host-Brücke des Host-Prozessors 10A Pakete abwärts zu Einrichtungen, etwa den peripheren Geräten (nicht gezeigt), senden, die beispielsweise an dem peripheren Bus 25A angeschlossen sind.
  • Während des Betriebs übersetzen die I/O-Knoten 20 und 40 die PCI-Bustransaktionen in aufwärts gerichtete Pakettransaktionen, die in den I/O-Strömen transportiert werden und können ferner abwärts gerichtete Pakettransaktionen in PCI-Bus-Transaktionen übersetzen. Alle Pakete, die aus anderen Knoten als der Host-Brücke des Prozessors 10A kommen, können in Aufwärtsrichtung zu der Host-Brücke des Prozessors 10A gelangen, bevor sie zu einem anderen Knoten weitergeleitet werden. Alle Pakete, die von der Host-Brücke des Prozessors 10A stammen, können in Abwärtsrichtung zu anderen Knoten, etwa den I/O-Knoten 20, 30 oder 40 laufen. Im hierin verwendeten Sinne bezeichnet „Aufwärtsrichtung bzw. aufwärtsgerichtet" den Paketverkehrstrom in Richtung der Hostbrücke des Prozessors 10A und „abwärtsgerichtet" bezeichnet den Paketverkehrstrom in Richtung weg von der Host-Brücke des Prozessors 10A. Der I/O-Strom kann durch eine Kennung, die als Einheiten-ID bezeichnet ist, gekennzeichnet werden. Zu beachten ist, dass die Einheiten-ID (Identität bzw. Kennung) ein Teil des Paketkopfbereichs sein kann oder eine andere ent sprechende Anzahl an Bits in einem Paket oder Paketen sein kann. Im hierin verwendete Sinne bezeichnet „I/O-Strom" alle Pakettransaktionen, die die gleiche Einheiten-ID enthalten und daher von dem gleichen Knoten stammen.
  • Zur besseren Darstellung sei angeführt, dass eine periphere Einrichtung auf dem peripheren Bus 45 eine Transaktion initiiert, die für eine periphere Einrichtung auf dem peripheren Bus 25 bestimmt ist. Die Transaktion kann zunächst in ein oder mehrere Pakete mit einer einzigartigen Einheiten-ID übersetzt werden und wird dann in Aufwärtsrichtung gesendet. Zu beachten ist, dass jedes Paket mit einer speziellen Information codiert werden kann, die das Paket kennzeichnet. Beispielsweise kann die Einheiten-ID in den Paketkopf codiert werden. Des weiteren kann die Art der Transaktion ebenso in dem Paketkopf angegeben werden. Jedem Paket ist eine Einheiten-ID zugeordnet, die den Ursprungsknoten kennzeichnet. Da der I/O-Knoten 20 Pakete zu einer peripheren Einrichtung auf dem peripheren Bus 25 von der Abwärtsrichtung aus weiterleiten kann, werden die Pakete von der Host-Brücke des Prozessors 10A in Aufwärtsrichtung gesendet. Die Host-Brücke des Prozessors 10A kann dann die Pakete in die Abwärtsrichtung mit einer Einheiten-ID der Host-Brücke des Prozessors 10A senden, bis der I/O-Knoten 20 das Paket erkennt und für die periphere Einrichtung auf dem peripheren Bus 25 in Anspruch nimmt. Der I/O-Knoten 20 kann dann die Pakete in periphere Bustransaktionen übersetzen und die Transaktionen zu der peripheren Einrichtung auf dem peripheren Bus 25 übertragen.
  • Wenn die Pakettransaktionen in Aufwärtsrichtung oder Abwärtsrichtung laufen, können die Pakete durch einen oder mehrere I/O-Knoten hindurchlaufen. Der Durchlauf wird manchmal auch als ein Tunnel bezeichnet und der I/O-Knoten wird manchmal als eine Tunnel-Einrichtung bezeichnet. Pakete, die von der Aufwärtsrichtung zur Abwärtsrichtung oder von der Abwärtsrichtung zur Aufwärtsrichtung gesendet werden, werden als „weitergeleiteter" Datenverkehr bezeichnet. Ferner wird ein Paketdatenverkehr, der von einem speziellen I/O-Knoten stammt und in den aufwärtsgerichteten Datenverkehr eingefügt wird, als „eingespeister" Datenverkehr bezeichnet.
  • Wie nachfolgend detaillierter beschrieben ist, kann der I/O-Knoten zur Beibehaltung der Verarbeitungsreihenfolgenregeln der diversen Busse, die mit einem I/O-Knoten verbunden sein können, eine Umordnung der Transaktionen sowie eine Paketpufferung bereitstellen. Der I/O-Knoten kann ferner eine Steuerungslogik enthalten, die den Paketstrom zu dem Tunnel von einem peripheren Gerät und von dem Tunnel zu einem peripheren Gerät steuert.
  • 2 ist eine Blockansicht einer Ausführungsform eines Eingabe/Ausgabe-Knotens. Der Eingabe/Ausgabe-Knoten 100 umfasst eine Sender/Empfänger-Schaltung 110 und eine Sender/Empfänger-Schaltung 120. Die Sender/Empfänger-Schaltungen 110 und 120 sind miteinander über einen I/O-Tunnel 140 verbunden. Die Sender/Empfänger-Schaltungen 110 und 120 können jeweils einen Sender und einen Empfänger (nicht gezeigt) aufweisen. Die Sender und Empfänger sind über den I/O-Tunnel 140 so verbunden, dass der Empfänger des Sender/Empfänger 110 mit dem Sender des Sender/Empfängers 120 und der Empfänger des Sender/Empfängers 120 mit dem Sender des Sender/Empfängers 110 verbunden ist. Der I/O-Tunnel 140 kann Befehls- und Datenbusse enthalten, die zum Weiterleiten des Paketdatenverkehrs über den I/O-Knoten 100 verwendet werden. Ferner umfasst der I/O-Knoten 100 eine periphere Schnittstellenschaltung 150, die ebenso mit den Sendern/Empfängern 110 und 120 über dem I/O-Tunnel 140 verbunden ist. Wie jedoch zuvor beschrieben ist, können Transaktionen, die von der peripheren Schnittstellenschaltung 150 stammen und dann in den I/O-Tunnel 140 eintreten, als eingespeiste Transaktionen bezeichnet werden. Der I/O-Knoten 100 umfasst ferner eine Tunnelsteuerungseinheit 130, die angeschlossen ist, die Transaktionen zwischen den Sendern/Empfängern 110 und 120 und der peripheren Schnittstelle 150 zu steuern. Der I/O-Knoten 100 ist ferner mit einem peripheren Bus 220 über die periphere Schnittstellenschaltung 150 verbunden.
  • In der dargestellten Ausführungsform sind die Sender/Empfänger 110 und 120 ein Teil zweier undirektionaler Kommunikationswege über den I/O-Tunnel 140. Da jeder der Kommunikationswege unidirektional ist, kann jeder Weg als der aufwärts gerichtete oder der abwärts gerichtete Strom verwendet werden. Somit kann der eingespeiste Datenverkehr von der peripheren Schnittstellenschaltung 150 jedem der Sender/Empfänger 110 und 120 zugeführt werden. Die Sender/Empfänger 110 und 120 können jeweils Pakettransaktionen in einem Empfangspuffer (nicht gezeigt) empfangen. Wenn jede Transaktion empfangen wird, kann ein Steuerungsbefehl erzeugt werden, der eine Teilmenge der in dem empfangenen Befehl enthaltenen Information beinhaltet. Der Steuerungsbefehl kann die Einheiten-ID des initiierenden Knotens, die Bestimmungsinformation, eine Datenzahl und eine Transaktionsart beinhalten, um einige Beispiele zu nennen. Zu beachten ist, dass der Steuerungsbefehl andere Informationen enthalten kann, oder einige der hier aufgeführten Infor mationen nicht enthalten muss. Der Steuerungsbefehl kann von den Sendern/Empfängern 110 und 120 zu der Tunnelsteuerungseinheit 130 gesendet werden. Die Tunnelsteuerungseinheit 130 bestimmt ferner, welche der empfangenen Transaktionen von einem entsprechenden Sender/Empfänger gesendet wird und kann dem Sender/Empfänger anzeigen, die Transaktion zu dem Ziel der Transaktion zu senden.
  • In der dargestellten Ausführungsform kann die periphere Schnittstellenschaltung 150 so aufgefasst werden, dass diese einen Abwärtsrichtungsabschnitt und einen Aufwärtsrichtungsabschnitt aufweist. Der Abwärtsrichtungsabschnitt kann abwärtsgerichtete Transaktionen handhaben, deren Ziel eine mit dem peripheren Bus 220 verbundene Einheit ist. Der Aufwärtsrichtungsabschnitt kann Transaktionen handhaben, die von Geräten stammen, die mit dem peripheren Bus 220 verbunden sind. Somit umfasst die periphere Schnittstellenschaltung 150 einen Abwärtsrichtungsbefehlspuffer 160 und einen Abwärtsrichtungsdatenpuffer 170, die jeweils mit dem I/O-Tunnel 140 über eine Tunnelschnittstellenlogik 155 verbunden sind. Der Abwärtsrichtungsbefehlspuffer 160 und der Abwärtsrichtungsdatenpuffer 170 sind jeweils mit dem peripheren Bus 220 über die Busschnittstellenschaltung 210 verbunden. Die periphere Schnittstellenschaltung 150 umfasst ferner einen Aufwärtsrichtungsbefehlspuffer 180 und einen Aufwärtsrichtungsdatenpuffer 190, die jeweils mit dem I/O-Tunnel 140 über die Tunnelschnittstellenlogik 155 verbunden sind. Der Aufwärtsrichtungsbefehlspuffer 180 und der Aufwärtsrichtungsdatenpuffer 190 sind ebenfalls jeweils mit dem peripheren Bus 220 über die Busschnittstellenschaltung 210 verbunden. Die periphere Schnittstellenschaltung 150 umfasst ferner eine Steuerungslogikeinheit 200, die sowohl mit dem Aufwärtsrichtungsbefehlspuffer 180 als auch mit dem Abwärtsrichtungsbefehlspuffer 160 verbunden ist.
  • Zu beachten ist, dass in der dargestellten Ausführungsform der periphere Bus 220 für eine Vielzahl üblicher peripher Busse beispielhaft dargestellt ist, etwa einen PCI-Bus, einen PCI-X-Bus und einen AGP-Bus, um nur einige Beispiele zu nennen. Des weiteren kann die Busschnittstellenschaltung 210 ferner eine Schaltung enthalten, um periphere Busbefehle von derartigen Bussen zu übersetzen. Ferner ist zu beachten, dass in einer speziellen Ausführungsform die Busschnittstellenschaltung 210 eine Busschnittstelle ist, etwa eine Compaq-Schnellanschluss für PCI-X- (CREX)-Schnittstelle. Schließlich ist zu beachten, dass in einigen Ausführungsformen der I/O-Knoten 100 mehr als eine periphere Schnittstellenschaltung (nicht gezeigt) aufweisen kann und dass der I/O-Knoten eine Verteilungslogik (nicht gezeigt) besitzen kann, die eine Verteilung der von jeder der peripheren Schnittstellenschaltungen gesendeten Befehle durchführt.
  • Transaktionen können von der Sender/Emfänger-Schaltung 110 oder 120 gesendet werden, in Abhängigkeit davon, welcher Sender/Empfänger als der Abwärtsrichtungsempfänger angeschlossen ist. Der Befehlsbereich der Transaktion kann in dem Abwärtsrichtungsbefehlspuffer 160 gespeichert werden und der Datenanteil der Transaktion kann in dem Abwärtsrichtungsdatenpuffer 170 gespeichert werden. Wenn in ähnlicher Weise eine Transaktion von der Busschnittstellenschaltung 210 gesendet wird, kann der Befehlsanteil der Transaktion in dem Aufwärtsrichtungsbefehlspuffer 180 gespeichert werden, und der Datenanteil der Transaktion kann in dem Aufwärtsrichtungsdatenpuffer 190 gespeichert werden. Die Steuerungslogikeinheit 200 ist ausgebildet, den Transport der Transaktionen zu und von der Busschnittstellenschaltung 210 und dem I/O-Tunnel 140 zu steuern.
  • Wie nachfolgend detaillierter beschrieben ist, erzeugt in Reaktion darauf, dass die periphere Schnittstellenschaltung 150 Transaktionen in Aufwärtsrichtung von dem peripheren Bus 220 empfängt, die Steuerungslogikeinheit 200 Steuerungsbefehle ähnlich zu den Steuerungsbefehlen, die von den Sendern/Empfängern 110 und 120 erzeugt werden. Die Steuerungslogikeinheit 200 kann ferner diese Steuerungsbefehle zu der Tunnelsteuerungseinheit 130 senden, so dass das Befehle in Aufwärtsrichtung in dem I/O-Tunnel 140 disponiert werden. Des weiteren kann die Steuerungslogikeinheit 200 eine Schaltung in der Abwärtsrichtung mit Signalen versorgen, die den Aufwärtsrichtungsbefehlen entsprechen, die es der Abwärtsrichtungsschaltung ermöglichen, die relative Reihenfolge der Abwärtsrichtungsantworttransaktionen beizubehalten.
  • In 3 ist eine Blockansicht einer Ausführungsform einer peripheren Schnittstellenschaltung gezeigt. Eine periphere Schnittstellenschaltung 350 umfasst einen Abwärtsrichtungsabschnitt 360 und eine Aufwärtsrichtungsabschnitt 450. Die periphere Schnittstellenschaltung 350 umfasst ferner eine Tunnelschnittstellenlogikeinheit 355, die mit einem I/O-Tunnel, etwa dem I/O-Tunnel 140 aus 2, verbunden ist. In dem Abwärtsrichtungsabschnitt 360 aus 3 ist die Tunnelschnittstellenlogik 355 auch mit einem Befehlspuffer 370 verbunden. Der Befehlspuffer 370 ist mit einer Markierungslogikeinheit 3809 verbunden. Die Markierungslogikeinheit 380 ist mit einem Befehlspuffer für virtuelle Kanäle 300 verbunden. Der Befehlspuffer 300 für virtuelle Kanäle ist mit einer Verteilungslogikeinheit 410 verbunden, die mit einer Busschnittstellenschaltung 470 verbunden ist. Der Befehlspuffer 300 für virtuelle Kanäle ist auch mit einer Wiederstartwarteschlange 420 für nicht aufgegebene Pakete (NP) und einer Warteschlange 430 für aufgeteilte Antworten verbunden. Die Tunnelschnittstellenlogik 355 ist ferner mit dem Datenpuffer 400 verbunden, der wiederum mit der Busschnittstellenschaltung 470 verbunden ist. Die Busschnittstellenschaltung 470 ist mit einem peripheren Bus 560 verbunden, der mit einer peripheren Einrichtung 565 verbunden ist.
  • In dem Aufwärtsrichtungsabschnitt 450 ist die Busschnittstellenschaltung 470 mit einem NP-Befehlspuffer 480, einer Analysierlogikeinheit 500 und einer Verzögerungstransaktionslogikschaltung 510 verbunden. Des weiteren ist die Busschnittstellenschaltung 470 mit einem Datenpuffer 550 verbunden. Der NP-Befehlspuffer 480 ist mit einem Steuerungsbefehlgenerator 520 und einer NP-Quellenmarkierungslogikeinheit 400 verbunden. Der Steuerungsbefehlgenerator 520 ist mit einem Befehlspuffer 530 für virtuelle Kanäle und der Tunnelschnittstellenlogik 355 verbunden. Der Befehlspuffer 530 für virtuelle Kanäle ist mit der Tunnelschnittstellenlogik 355 verbunden. Die periphere Schnittstellenschaltung 350 umfasst ferner eine Steuerungslogik und Speichereinheit 460, die mit der Warteschlange 430 für aufgeteilte Antworten und dem Datenpuffer 400 des Abwärtsrichtungsabschnitts 360 verbunden ist. Die Steuerungslogik- und Speichereinheit 460 ist ferner mit der NP-Quellenmarkierungslogik 490 und dem NP-Befehlspuffer 480 das Aufwärtsrichtungsabschnitts 450 verbunden. Ferner ist zu beachten, dass die periphere Schnittstellenschaltung 350 eine Duplizierungslogik 570 umfassen kann, die in der zuvor beschriebenen Weise funktionieren kann, um die zusätzlichen peripheren Busse, etwa den peripheren Bus 580, anzuschließen.
  • Im Allgemeinen gesagt, ist ein „virtueller Kanal" ein Kommunikationsweg zum Transportieren von Paketen zwischen diversen Verarbeitungsknoten. Jeder virtuelle Kanal ist ressourcenunabhänig von anderen virtuellen Kanälen (d. h. Pakete, die in einem virtuellen Kanal laufen, sind im Allgemeinen nicht im Hinblick auf das physikalische Übertragen durch die Anwesenheit oder Abwesenheit von Paketen in einem anderen virtuellen Kanal beeinflusst). Pakete werden auf der Grundlage der Paketart einem virtuellen Kanal zugeordnet. Pakete in dem gleichen virtuellen Kanal können physikalisch miteinander beim Senden in Konflikt geraten (d. h. Pakete in dem gleichen virtuellen Kanal können Ressourcenkonflikte hervorrufen), können jedoch nicht physikalisch mit dem Senden von Paketen in einem unterschiedlichen virtuellen Kanal in Konflikt stehen.
  • Gewisse Pakete können logisch mit andern Paketen in Konflikt geraten (d. h. aus Protokollgründen, Kohärenzgründen oder anderen derartigen Gründen kann ein Paket logisch mit einem weiteren Paket in Konflikt sein). Wenn ein erstes Paket aus logischen Gründen, Protokollgründen an seinem Bestimmungsknoten vor einem zweiten Paket an dessen Bestimmungsknoten eintreffen muss, ist es möglich, dass ein Computersystem einen Stillstand erleidet, wenn das zweite Paket physikalisch das Senden des ersten Pakets blockiert (durch Einnehmen von in Konflikt stehenden Ressourcen). Durch Zuordnen des ersten und des zweiten Pakets zu separaten virtuellen Kanälen und durch Einrichten des Übertragungsmediums innerhalb des Computersystems derart, dass Pakete in separaten virtuellen Kanälen nicht die gegenseitige Sendung blockieren können, kann ein unterbrechungsfreier Betrieb erreicht werden. Es ist zu beachten, dass die Pakete von unterschiedlichen virtuellen Kanälen über die gleiche physikalische Verbindung gesendet werden. Da jedoch ein Empfangspuffer vor dem Senden verfügbar ist, blockieren sich die virtuellen Kanäle nicht gegenseitig, selbst wenn diese gemeinsam genutzte Ressource verwendet wird.
  • Aus einem anderen Blickpunkt betrachtet, kann jede unterschiedliche Paketart (beispielsweise jede unterschiedliche Befehlscodierung) ihrem eigenen virtuellen Kanal zugeordnet werden, und somit werden in einer Ausführungsform separate Puffer für jeden virtuellen Kanal reserviert. Da separate Puffer für jeden virtuellen Kanal verwendet werden können, können Pakete von einem einzelnen virtuellen Kanal physikalisch nicht mit Paketen von einem weiteren virtuellen Kanal in Konflikt sein (da derartige Pakete in anderen Puffern angeordnet wurden).
  • Daher enthalten in der dargestellten Ausführungsform der Befehlspuffer für virtuelle Kanäle 390 und der Befehlspuffer für virtuelle Kanäle 530 jeweils drei separate FIFO-Abschnitte, die den drei Transaktionsarten entsprechen: aufgegeben, nicht aufgegeben und Antwort. Die Befehle werden in dem entsprechenden FIFO in der Reihenfolge angeordnet, in der sie empfangen wurden. Um jedoch die Regeln der Reihenfolge zu bewahren, die mit dem Bus oder der Geräteart verknüpft sind, die den ursprünglichen Befehl erzeugt haben, müssen die Transaktionen unter Umständen außer der Reihenfolge zwischen unterschiedlichen Arten an Transaktionen verarbeitet werden.
  • In einer Ausführungsform kann der Befehlspuffer 370 ein zwei-stufiger FIFO sein, der als ein Puffermechanismus für Befehle dient, die von dem I/O-Tunnel 140 aus 2 zu dem Befehlspuffer 390 für virtuelle Kanäle aus 3 gesendet werden. Wenn eine Transaktion in Abwärtsrichtung zu der peripheren Schnittstellenschaltung 350 gesendet wird, wird der Datenanteil der Transaktion in dem Datenpuffer 400 gespeichert, während der Befehlsanteil der Transaktion in dem Befehlspuffer für virtuelle Kanäle 390 gespeichert wird. Zunächst wird jedoch die Markierungslogik 380 konfiguriert, um einen Markierungswert zu erzeugen und diesen dem Befehl hinzuzufügen. Der Markierungswert entspricht der Reihenfolge des Empfangs des Befehls im Verhältnis zu anderen empfangenen Befehlen und kann in nachfolgenden Verteilungszyklen verwendet werden. Die Daten und Befehle können als zu dem gleichen Paket gehörend durch die Kopfinformation erkannt werden, die in den Paketen enthalten ist. Da ferner einige periphere Busse mit kleineren Taktgeschwindigkeiten als die interne Taktgeschwindigkeit des I/O-Knotens arbeiten, können Daten in den Datenpuffer 400 unter Anwendung der Datengeschwindigkeit des I/O-Knotens eingeladen und mit einer unterschiedlichen Datengeschwindigkeit ausgeladen werden, vorzugsweise mit der Taktgeschwindigkeit des peripheren Busses, der mit der Busschnittstellenschaltung 470 verbunden ist. Des weiteren können sowohl der Datenpuffer 400 als auch der Befehlspuffer 390 für virtuelle Kanäle so ausgebildet sein, um eine beliebige Logik in Aufwärtsrichtung zu benachrichtigen, wenn Datenspeicherraum nicht verfügbar ist.
  • Abhängig von der Art des Befehls (aufgegeben, nicht aufgegeben oder Antwort) wird der Befehl in einem entsprechenden FIFO für virtuelle Kanäle des Befehlspuffers 390 für virtuelle Kanäle gespeichert. Die Verteilungslogik 410 ist ausgebildet auszuwählen, welche Transaktion als erste, als zweite usw. unter den Transaktionen in dem Befehlspuffer für virtuelle Kanäle 390 verarbeitet wird. Der Befehlspuffer 390 für virtuelle Kanäle und die Verteilungslogikeinheit 410 können als eine Befehlsablauforganisationseinheit bzw. Disponiereinheit verstanden werden, da diese zusammen speichern und entscheiden, in welcher Reihenfolge Befehle verarbeitet werden. Beispielsweise muss ggf. ein aufgegebener Befehl, der in dem Befehlspuffer für virtuelle Kanäle 390 vor einem nicht aufgegebenen Befehl eintrifft, nach dem nicht aufgegebenen Befehl auf Grund der Regeln für die Reihenfolge, die von der Verteilungslogik 410 erstellt werden, verarbeitet werden. Die Verteilungslogik 410 kann ferner die Markierungswerte, die von der Markierungslogikeinheit 380 zugeordnet werden, während des Verteilungsprozesses verwenden.
  • Ferner können mehrere Antwortpakete dem gleichen Datenstrom oder der gleichen Datensequenz angehören, wenn diese von einer gemeinsamen Anforderungstransaktion, etwa einer Anforderung für einen Datenstrom, herrühren. Es kann notwendig sein, in Abhängigkeit von dem peripheren Bus, die Antwortpakete in der korrekten Reihenfolge innerhalb eines Datenstromes bereitzustellen, selbst wenn die Pakete von der Abwärtsrichtungslogik nicht in der Reihenfolge empfangen werden. Ferner kann es notwendig sein, die Teilübertragungen auf einen peripheren Bus in Reaktion auf eine Anforderung für einen Datenstrom auszuführen. Der Datenpuffer 400 kann Daten enthalten, die einen Teil des angeforderten Datenstromes bilden. Solange die Datensegmente, die den Bereich bilden, in der korrekten Reihenfolge sind, können diese zu dem peripheren Bus übertragen werden.
  • Die Steuerungslogik- und Speichereinheit 460 kann Speichereinheiten, etwa Register oder Speicher mit wahlfreiem Zugriff, und eine Logik zur Verwendung beim Zuführen der Daten beinhalten und wird nachfolgend detaillierter in Verbindung mit der Beschreibung der 7 erläutert.
  • Wie nachfolgend in Verbindung mit 8 und 9 detaillierter dargestellt ist, kann während der Verteilung, wenn eine aktuell ausgewählte Transaktion ein Antwortbefehl ist, eine Bestimmung durchgeführt werden, welche Daten, die mit dem Antwortbefehl verknüpft sind, in dem Datenpuffer 400 verfügbar sind. Wenn die Daten verfügbar sind, kann ein Buszyklus auf dem peripheren Bus 560 initiiert werden. Dies kann durch die Busschnittstellenschaltung 470 bewerkstelligt werden, die die Befehls- und Datenpakete empfängt und diese in Adressen-, Daten- und Steuersignale übersetzt, die für die Übertragung auf dem peripheren Bus 560 geeignet sind.
  • Wenn der aktuell ausgewählte Befehl ein nicht aufgegebener Befehl ist, etwa ein Lese- oder Schreibbefehl, kann abhängig von der Art des mit der Busschnittstellenschaltung 470 verbundenen peripheren Busses die periphere Einrichtung 565 beispielsweise eine der folgenden Handlungen durchführen: Akzeptieren und Verarbeiten des Befehls und Senden eines „Bearbeitung im Ziel fertig" – Zyklus oder eines Antwortzyklus mit allen angeforderten Daten, Setzen einer Wiederholungsindikation, Akzeptieren des Befehls und Setzen einer Indikation bzw. Kennung für eine aufgeteilte Antwort. Wie nachfolgend detaillierter in Verbindung mit der Beschreibung aus 4 dargestellt ist, wird die Wiederholungsindikation durch die periphere Einrichtung 565 gesetzt, der nicht aufgegebene Befehl kann von dem Befehlspuffer für virtuelle Kanäle 390 zurückgenommen und in der NP-Wiederholungswarteschlange 420 gespeichert werden. Wie nachfolgend detaillierter in Verbindung mit der Beschreibung aus 5 dargelegt ist, kann, wenn der periphere Bus 560 ein PCI-X-Bus ist und die aufgeteilte Antwort empfangen wird, der nicht aufgegebene Befehl von dem Befehlspuffer für virtuelle Kanäle 390 oder der NP-Wiederholungswarteschlange 420 zurückgenommen und in der Warteschlange 430 für aufgeteilte Antworten gespeichert werden.
  • In dem Aufwärtsrichtungsabschnitt 450 kann, wenn die periphere Einrichtung 565 einen Buszyklus auf dem peripheren Bus 560 initiiert, die Busschnittstellenschaltung 470 diesen Zyklus in Pakettransaktionen übersetzen, die Befehls- und Datenpakete enthalten können, wie dies zuvor beschrieben ist. Die Datenpakete können in dem Datenpuffer 550 gespeichert werden, während die Befehle in dem Befehlspuffer 530 für virtuelle Kanäle in den entsprechenden virtuellen Kanal gespeichert werden. Vor der Speicherung in dem Befehlspuffer 530 für virtuelle Kanäle und abhängig von der Art des Befehls kann die Analyselogik 500 den Befehl in eine Reihe kleinerer Befehle unterteilen. Wenn beispielsweise die periphere Einrichtung 565 einen nicht ausgegebenen Schreibbefehl als einen großen Block an Daten an einen Systemspeicher ausgibt, kann die Analysierlogik 500 eine Reihe von nicht aufgegebenen Schreibbefehlen für den gleichen Speicherblock erzeugen, jedoch in kleinere Blöcke unterteilt. Zu beachten ist, dass in einer Ausführungsform die Blöcke entlang den Cache-Speicherzeilengrenzen erzeugt werden können. Nachfolgend kann jeder der nicht ausgegebenen Befehle in dem Befehlspuffer 530 für virtuelle Kanäle gespeichert werden. Nicht aufgegebene Lesebefehle können ebenso in Abhängigkeit der Grenzen der Anforderungen im Hinblick darauf, ob die Transaktionen PCI oder PCI-X sind, aufgeteilt werden. In einer Ausführungsform kann die NP-Quellenmarkierungslogik 490 einen Markierungswert erzeugen, der von Logikschaltungen in Abwärtsrichtung verwendet werden kann, um zu bestimmen, mit welchem Datenstrom ein spezieller Antwortbefehl verknüpft ist. Wie ferner nachfolgend detaillierter in Verbindung mit der 6 bis 9 beschrieben ist, kann ein ursprünglicher nicht aufgegebener Befehl (beispielsweise vor dem Unterteilen) ebenso in dem NP-Befehlspuffer 480 bewahrt werden, um Information an die Logik innerhalb des Abwärtsrichtungsabschnitts 360 zu liefern. Die NP-Quellenmarkierungslogik 490 kann einen Markierungswert erzeugen, der mit jedem der aufwärts gerichteten nicht aufgegebenen Befehle verknüpft ist. In einer Ausführungsform werden Markierungswerte 0 bis 29 erzeugt. Es ist jedoch zu beachten, dass in anderen Ausführungsformen andere geeignete Zahlen der Markierungswerte erzeugt werden können.
  • Wenn Befehle in der Aufwärtsrichtung in dem Befehlspuffer 530 für virtuelle Kanäle gespeichert werden, erzeugt der Steuerungsbefehlgenerator 520 Steuerungsbefehle ähnlich zu den Steuerungsbefehlen, die von den Sendern/Empfängern 110 und 120 aus 2 erzeugt werden. In 3 kann der Steuerungsbefehlgenerator 520 auch jene Steuerungsbefehle über die Tunnelschnittstellenlogik 355 zu der Tunnelsteuerungseinheit 130 aus 2 senden, wodurch es möglich ist, dass Befehle in Abwärtsrichtung in dem I/O-Tunnel 140 disponiert werden. Die Tunnelschnittstellenlogik 355 der 3 enthält mehrere Pufferschaltungen für allgemeine Zwecke, wie sie zur Funktion einer Schnittstelle zwischen dem I/O-Tunnel 140 und der Logik innerhalb der peripheren Schnittstellenschaltung 350 erforderlich sind.
  • Die verzögerte Transaktionslogik 510 kann eine Schaltung enthalten, die in Verbindung mit der Busschnittstellenschaltung 470, der Logik in dem Abwärtsrichtungsabschnitt 360 und der I/O-Tunnellogik aus 2 zusammenarbeitet, um eine Wiederholungskennung bzw. Indikation an das periphere Gerät 565 auszugeben, dass eine Anforderung nicht unmittelbar abgearbeitet werden kann. Beispielsweise sendet die periphere Einrichtung 565 eine nicht aufgegebene Leseanforderung in Aufwärtsrichtung und der Kanal für nicht aufgegebene Transaktionen ist blockiert oder die Daten sind nicht bereit. Die verzögerte Transaktionslogik 510 kann der peripheren Einrichtung 565 anzeigen, dass die Anforderung aktuell nicht abgearbeitet werden kann und dass die Anforderung zu einem späteren Zeitpunkt erneut wiederholt werden soll.
  • 4 zeigt eine Blockansicht einer Ausführungsform einer Pufferschaltung für Wiederholung nicht aufgegebner Transaktionen. Eine Pufferschaltung für die erneute Wiederholung nicht aufgegebener Transaktionen (NP) 650 umfasst einen FIFO für Wiederholung nicht aufgegebener Transaktionen 660, der mit einer Aktualisierungsschaltung 670 für nicht aufgegebene Befehle verbunden ist.
  • In der dargestellten Ausführungsform kann der FIFO 660 für nicht aufgegebene Wiederholungen nicht aufgegebene Befehle speichern, die von einem Befehlspuffer für nicht aufgegebene Transaktionen empfangen werden, etwa dem Befehls-FIFO für nicht aufgegebene Transaktionen der Befehlspufferschaltung für virtuelle Kanäle 390 aus 3. Wie zuvor in Verbindung mit 3 beschrieben ist, kann in Reaktion auf eine Wiederholungsindikation, die in der peripheren Einrichtung 565 gesetzt wird, ein nicht aufgegebener Befehl von dem Befehlspuffer 390 für virtuelle Kanäle entfernt und in dem nicht aufgegebenen Wiederholungs-FIFO 664 aus 4 gespeichert werden.
  • Der nicht aufgegebene Wiederholungs-FIFO 660 kann ein FIFO-Besetztsignal setzen, wenn kein Speicherplatz verfügbar ist. Das Besetztsignal kann eine Angabe an die Verteilungslogik, etwa die Verteilungslogikschaltung 410 aus 3 liefern. Solang das Besetztsignal gesetzt ist, kann der nicht aufgegebene Befehls-FIFO der Befehlspufferschaltung für virtuelle Kanäle 390 nicht an Verteilungszyklen teilnehmen, wodurch ein Überlauf des nicht aufgegebenen Wiederholungs-FIFO 660 im Falle einer zusätzlichen Wiederholungsindikation vermieden wird.
  • Sobald der nicht aufgegebene Befehl in dem nicht aufgegebenen Wiederholungs-FIFO 660 gespeichert ist, können Befehle am Anfangsbereich des FIFO's 660 für nicht aufgegebene Wiederholungen an den Verteilungszyklen zusammen mit den Befehlen teilnehmen, die innerhalb der Befehlspufferschaltung 390 für virtuelle Kanäle aus 3 gespeichert sind. Wenn ein nicht aufgegebener Befehl, der am Anfang des FIFO's 660 aus 4 für nicht aufgegebene Wiederholungen gespeichert ist, in einem Verteilungszyklus ausgewählt wird, wodurch das Initiieren eines Buszyklus hervorgerufen wird und wiederum ein Wiederholungssignal von dem peripheren Bus 560 aus 3 gesetzt wird, kann die Aktualisierungsschaltung 670 aus 4 für nicht aufgegebene Befehle bewirken, dass der ausgewählte nicht aufgegebene Befehl von dem Anfangsbereich entfernt wird und zum hinteren Ende des FIFO's 660 für nicht aufgegebene Wiederholungen verschoben wird, um auf einen weiteren Verteilungszyklus zu warten, wenn dieser erneut den Anfang des FIFO's erreicht. Anders gesagt, der ausgewählte nicht aufgegebene Befehl kann in den FIFO zurückgeschrieben werden. Dies ist durch den gestrichelten Pfeil innerhalb der Aktualisierungsschaltung 670 für nicht aufgegebene Befehle gezeigt. Dieses erneute Versuchen bzw. Wiederholen des Zyklus kann mehrere Male auftreten und jedes Mal wird der Befehl in das Ende des FIFO's 660 für nicht aufgegebene Wiederholungen zurückgeschrieben.
  • Wenn die periphere Schnittstellenschaltung 350 aus 3 in dem PCI-Modus arbeitet, ist es möglich, dass der periphere Bus 560 aus 3 angibt, dass es einen teilweisen Ab schluss des nicht aufgegebenen Zyklus gab. Beispielsweise kann ein nicht aufgegebener Lesebefehl 10 Datensegmente anfordern. Die periphere Einrichtung 565 kann die Wiederholungsindikation setzen, aber mit 5 der 10 Datensegmente antworten, wodurch eine Antwort mit teilweise erfolgtem Abschluss gekennzeichnet ist. Bei Empfang einer Indikation für teilweise erfolgten Abschluss kann die Aktualisierungsschaltung für nicht aufgegebene Befehle 670 aus 4 den ausgewählten nicht aufgegebenen Befehl so modifizieren, dass eine neue Datenzahl und Adresse entsprechend den verbleibenden Datensegmenten bewahrt werden. In ähnlicher Weise können nicht aufgegebene Schreibbefehle teilweise abgeschlossen werden. Die Aktualisierungsschaltung für nicht aufgegebene Befehle 670 kann dann bewirken, dass der modifizierte nicht aufgegebene Befehl an dem Ende des aufgegebenen Wiederholungs-FIFO 660 gespeichert wird, wo der nicht aufgegebene Befehl einen weiteren Verteilungszyklus abwarten kann, wenn dieser den Anfang des FIFO's erreicht. Im hierin verwendeten Sinne und für anschauliche Zwecke soll der Anfang des FIFO's die Stelle in dem FIFO bezeichnen, in der Befehle ausgeladen oder gelesen werden können, und das Ende des FIFO's ist als die Speicherstelle bezeichnet, in der Befehle geschrieben und gespeichert werden können. Zu beachten ist ferner, dass, wenn Befehle aus dem nicht aufgegebenen Wiederholung-FIFO 660 ausgeladen werden, andere Befehle, die in dem nicht aufgegebenen Wiederholungs-FIFO 660 gespeichert sind, in der Reihenfolge nach oben wandern, in der sie ausgeladen werden. Es ist zu beachten, dass in anderen Ausführungsformen Befehle an den Anfang des FIFO's geschrieben und aus dem Ende des FIFO's ausgelesen werden können, wodurch die Aktualisierungsschaltung für nicht aufgegebene Befehle 670 Befehle an den Anfang des FIFO's schreiben kann.
  • 5 zeigt ein Flussdiagramm zum Beschreiben des Handhabens einer Indikation für eine Teilantwort bzw. eine Teilantwortindikation in einer Ausführungsform einer peripheren Schnittstellenschaltung. Es sei gemeinsam auf 3 und 5 verwiesen, wobei der Funktionsablauf im Schritt 431 in 5 beginnt und zum Schritt 432 weitergeht, in welchem ein nicht aufgegebner Befehl von dem Abwärtsrichtungsabschnitt 450 aus 3 empfangen und in dem FIFO für nicht aufgegebene Befehle des Befehlspuffers 390 für virtuelle Kanäle gespeichert wird. Im Schritt 433 aus 5 werden Verteilungszyklen ausgeführt und wenn der nicht ausgegebene Befehl ausgewählt ist, geht der Ablauf zum Schritt 434 weiter, während ansonsten die Verteilungszyklen weitergehen, bis der nicht aufgegebene Befehl ausgewählt ist. Somit wird im Schritt 434 der nicht aufgegebene Befehl ausgewählt und zur Übersetzungslogik gesendet, die beispielsweise in der Busschnittstellenschaltung 470 aus
  • 3 enthalten sein kann. Der nicht aufgegebene Befehl wird in einen entsprechenden Buszyklus umgewandelt, der für das Senden auf dem peripheren Bus 560 geeignet ist. Im Schritt 435 aus 5 wird der Buszyklus dann von der Busschnittstellenschaltung 470 aus 3 initiiert. Zu beachten ist, dass das Übersetzen und der Buszyklusinitiierungsprozess einen oder mehrere Zwischenschritte enthalten können, die von einer oder mehreren Schnittstellen an dem peripheren Bus ausgeführt werden, etwa der CREX-Schnittstelle (nicht gezeigt), die zuvor in Verbindung mit der Beschreibung der 2 erläutert ist. Der Ablauf geht nun zum Schritt 436 aus 5 weiter. Im Schritt 436 warten der Aufwärtsrichtungsabschnitt 450 und die Busschnittstellenschaltung 470 der 3 auf eine Indikation des Abschlusses von dem Zielgerät, etwa der peripheren Einrichtung 565, auf dem peripheren Bus 560. Wenn der nicht aufgegebene Befehl eine Leseanforderung war, kann die Abschlussindikation die Gesamtheit der geforderten Daten sein, einschließlich der Steuerungssignale, etwa ein „Zyklus fertig"-Signal, das angibt, dass alle angeforderten Daten vorhanden sind. Wenn der nicht aufgegebene Befehl eine Schreibanforderung war, kann die Abschlussindikation eine Nachricht über die Vervollständigung ohne sonstige Daten sein. Wenn eine Abschlussindikation empfangen wird, geht der Ablauf zum Schritt 437 aus 5 weiter. Im Schritt 437 wird dann, wenn der nicht aufgegebene Befehl ein Schreibbefehl war, der Aufwärtsrichtungsabschnitt 450 aus 3 einen Antwortbefehl, etwa „Ziel fertig"-Antwort zu dem anfordernden Knoten senden. Wenn der nicht aufgegebene Befehl ein Lesebefehl war, dann kann der Aufwärtsrichtungsabschnitt 450 einen Antwortbefehl einschließlich aller angeforderten Daten an den anfordernden Knoten weiterleiten. Die Funktionsbeschreibung endet im Schritt 438 aus 5.
  • Es sei wieder auf den Schritt 436 verwiesen; wenn die von dem peripheren Bus 560 aus 3 empfangene Antwort eine Vollständigkeit ausdrückende Nachricht ist, so kann diese eine Wiederholungsindikation sein, wie dies detailliert in Verbindung mit 4 erläutert ist. Die Antwort kann auch eine Indikation für eine Teilantwort sein, wobei im Schritt 439 aus 5 die Indikation der aufgeteilten Antwort empfangen wird. Im Schritt 440 wird der nicht aufgegebene Befehl in der Warteschlange 430 für aufgeteilte Antworten aus 3 in Reaktion auf die aufgeteilte Antwortindikation gespeichert. Der nicht aufgegebene Befehl kann Buszyklusinfonnationen, etwa die Busnummer, die Gerätenummer, eine Funktionsnummer, Anzahl und eine Identifizierungsnummer enthalten. Diese Information kann verwendet werden, um Antwortzyklen zu beanspruchen, die von dem Zielgerät empfangen werden. Im Schritt 441 aus 5 wird die empfangene aufgeteilte Antwort von Lesedaten begleitet, wenn der nicht aufgegebene Befehl ein Lesebefehl war. In diesem Falle wird der Antwortbefehl zu dem anfordernden Knoten zusammen mit verfügbaren Daten gesendet. Im Schritt 442 ist eine Nachricht, wenn die Fertigstellung der Aufteilung empfangen wird, diese eine Nachricht zur Vervollständigung der Aufteilung in Reaktion auf einen nicht aufgegebenen Schreibbefehl oder diese ist eine Nachricht für die Fertigstellung der Aufteilung einschließlich aller angeforderten Daten. Im Schritt 443 wird die Zyklusinformation über die Beendigung des Aufteilens mit nicht aufgegebenen Befehlen verglichen, die in der Warteschlange 430 aus 3 für aufgeteilte Antworten gespeichert sind. Sobald der entsprechende nicht aufgegebene Befehl bestimmt ist, geht der Ablauf zum Schritt 444 aus 5 weiter. Im Schritt 444 wird, wenn die Beendigung der Aufteilung eine Nachricht über die Beendigung der Aufteilung ist, ein Antwortbefehl, etwa eine „Ziel fertig"-Antwort, an den anfordernden Knoten gesendet. Wenn der nicht aufgegebene Befehl ein Lesebefehl war, dann kann der Aufwärtsrichtungsabschnitt 450 aus 3 einen Antwortbefehl einschließlich aller angeforderten Daten an den anfordernden Knoten senden. Im Schritt 445 aus 5 wird, sobald alle Daten empfangen sind oder eine Nachricht über die Beendigung der Aufteilung empfangen wird, der entsprechende nicht aufgegebene Befehl aus der Warteschlange für aufgeteilte Antworten 430 aus 3 beendet werden.
  • Es sei wieder auf Schritt 442 verwiesen; wenn eine Beendigung der Aufteilung nicht empfangen wird, geht der Ablauf zum Schritt 446 weiter, in welchem eine aufgeteilte Antwort empfangen wird. Der Ablauf geht dann zum Schritt 447 weiter, in welchem die Zyklusinformation der aufgeteilten Antwort mit nicht aufgegebenen Befehlen verglichen wird, die in der Warteschlange 430 aus 3 für aufgeteilte Antworten gespeichert sind. Sobald der entsprechende nicht aufgegebene Befehl bestimmt ist, geht der Ablauf zum Schritt 448 aus 5 weiter. Im Schritt 448 sendet der Aufwärtsrichtungsabschnitt 450 aus 3 einen Antwortbefehl einschließlich der verfügbaren Daten und der Information aus dem nicht aufgegebenen Befehl zu dem anfordernden Knoten. Der Ablauf geht zurück zum Schritt 442, um eine weitere Antwort abzuwarten. Es sei wieder auf Schritt 446 verwiesen; wenn eine aufgeteilte Antwort nicht empfangen wird, geht der Ablauf zurück zum Schritt 442, um eine weitere Antwort abzuwarten.
  • 6 zeigt eine Blockansicht einer Ausführungsform einer Pufferschaltung mit einer FIFO-Struktur für Pufferverfügbarkeit. Eine Pufferschaltung 680 enthält einen FIFO 685 für Pufferverfügbarkeit, der mit einem Befehlspuffer 690 für nicht aufgegebene Befehle verbunden ist. Der Pufferverfügbarkeits-FIFO 685 ist mit einer Schreiblogik 686 und einer Rücknahme- bzw. Beendigungslogik 687 verbunden.
  • Der Puffer 690 für nicht aufgegebene Befehle kann nicht aufgegebene Befehle entsprechend den Befehlen speichern, die von einem peripheren Bus, etwa dem peripheren Bus 560 aus 3 empfangen werden. Wie zuvor im Zusammenhang mit der Beschreibung aus 3 dargelegt ist, können aufwärtsgerichtete nicht aufgegebene Befehle zur Verwendung von der Rückwärtsrichtungsschaltung bewahrt werden, die Informnation benötigen kann, die in dem nicht aufgegebenen Befehl in Aufwärtsrichtung enthalten ist. Um das Speichern von Befehlen in dem Puffer 690 für nicht aufgegebene Befehle zu beschleunigen, kann der Pufferverfügbarkeits-FIFO zur nächsten verfügbaren Speicherstelle innerhalb des Puffers 690 für nicht aufgegebene Befehle zeigen.
  • Wenn der Puffer 690 für nicht aufgegebene Befehle leer ist, können Befehle sequenziell gespeichert werden, bis der Puffer 690 für nicht aufgegebene Befehle voll ist. In Abhängigkeit der Reihenfolge des Empfangens von Antworten, die mit den nicht aufgegeben Befehlen verknüpft sind, können die nicht aufgegebenen Befehle entfernt werden oder außer der Reihe abgeschlossen werden, wodurch „Löcher" oder freie Plätze entsprechend einem gewissen Muster zurückbleiben. Um daher neue Befehle in dem Puffer 690 für nicht aufgegebene Befehle speichern zu können, müssen die verfügbaren Speicherplätze unter Anwendung des Pufferverfügbarkeits-FIFO 685 überwacht werden.
  • In der dargestellten Ausführungsform enthält der Puffer 690 für nicht aufgegebene Befehle 8 Speicherplätze. Der Pufferverfügbarkeits-FIFO 685 enthält ebenso 8 Speicherplätze und jeder der 8 Speicherplätze innerhalb des Pufferverfügbarkeits-FIFO 685 kann drei Bitwerte speichern. Die in dem Pufferverfügbarkeits-FIFO 685 gespeicherten Werten entsprechen den Adressen der Speicherplätze innerhalb des Puffers 690 für nicht aufgegebene Befehle. Somit kann jeder 3-Bit-Wert als ein Index in den Puffer 690 für nicht aufgegebene Befehle verwendet werden. Zu beachten ist, dass in anderen Ausführungsformen eine andere geeignete Anzahl an Speicherplätzen und andere Bit-Zahlen verwendet werden können. Da der Pufferverfügbarkeits-FIFO 685 eine FIFO-Struktur aufweist, können Werte in der Reihenfolge ausgelesen werden, in der sie geschrieben wurden. Somit werden in der vorliegenden Ausführungsform die Werte an das Ende geschrieben und werden an Anfang des Pufferverfügbarkeits-FIFO 685 ausgelesen. Es ist jedoch zu beachten, dass in anderen Ausführungsformen die Begriffe Anfang und Ende in umgekehrter Reihenfolge verwendet werden können. Ferner ist zu beachten, dass in anderen Ausführungsformen Lese- und Schreibzeiger eingesetzt werden, um an die entsprechenden Speicherstellen innerhalb des Pufferverfügbarkeits-FIFO 685 zu zeigen.
  • Beim Initialisieren kann der Puffer 690 für nicht aufgegebene Befehle leer sein und somit sind alle Speicherplätze verfügbar. Der Pufferverfügbarkeits-FIFO 685 kann so initialisiert werden, dass die oberste Stelle des Pufferverfügbarkeits-FIFO 685 einen Indexwert entsprechend der Adresse des Speicherplatzes Null des Puffers 690 für nicht aufgegebene Befehle enthält. Die nächste Position in dem Pufferverfügbarkeits-FIFO 685 kann einen Indexwert enthalten, der dem Adressenplatz 1 entspricht, usw. Wenn somit ein nicht aufgegebener Befehl eintrifft, kann die Schreiblogik 686 den in dem obersten Platz des Pufferverfügbarkeits-FIFO 685 enthaltenen Wert lesen und nachfolgend bewirken, dass der Befehl an die Adresse des Speicherplatz 0 geschrieben wird. Wenn der Befehl gespeichert ist, werden alle Indexwerte, die in dem Pufferverfügbarkeits-FIFO 685 gespeichert sind, um eine Speicherstelle nach oben geschoben, so dass die Adresse der Position 1 an der obersten Position in dem Pufferverfügbarkeits-FIFO 685 steht.
  • Wenn ein spezieller Befehl in Abwärtsrichtung abgeschlossen und der entsprechende nicht aufgegeben Befehl, der in dem Puffer 690 für nicht aufgegebene Befehle gespeichert ist, nicht mehr benötigt wird, kann dieser aus dem Puffer 690 für nicht aufgegebene Befehle zurückgenommen werden. Somit macht der Puffer 690 für nicht aufgegebene Befehle die Position, an der der nicht aufgegebene Befehl gespeichert war, frei und stellt eine entsprechende Angabe an die Rücknahmelogik 687 zur Verfügung. Die Rücknahmelogik 687 kann bestimmen, wann die Speicherstelle verfügbar wird, um in Reaktion darauf zu bewirken, dass der der Adresse der verfügbaren Speicherstelle entsprechende Wert für den Pufferverfügbarkeits-FIFO 685 an die unterste Stelle des Pufferverfügbarkeits-FIFO 685 geschrieben wird. Somit enthält die oberste Position des Pufferverfügbarkeits-FIFO 685 den Indexwert, der der Adresse einer verfügbaren Speicherstelle entspricht, wenn verfügbare Speicherstellen vorhanden sind. Im Falle, dass es keine verfügbaren Speicherstellen in dem Puffer 690 für nicht aufgegebene Befehle gibt, wird die Schreiblogik 686 daran gehindert, dass sie bewirkt, dass Befehle in dem Puffer 690 für nicht aufgegebene Befehle gespeichert werden.
  • 7 zeigt eine beispielhafte Ansicht einer Ausführungsform der Steuerlogik- und Speichereinheit aus 3. Die Steuerlogik- und Speichereinheit 460 umfasst ein Pufferverfügbarkeitsregister 600, ein Kopfregister 610, ein „nächster Zeiger"-Register 620, ein Ende-Register 630 und ein Teilantwortzeigerregister 640.
  • In der dargestellten Ausführungsform enthält das Kopfregister 610 29 Bits, die den 29 möglichen Markierungswerten entsprechen, die von der NP-Quellenmarkierungslogikeinheit 490 aus 3 erzeugt werden. Das Kopfregister 610 wird verwendet, um anzuzeigen, welche Befehlspakete die ersten Befehlspakete ihrer entsprechenden Datenströme sind. Der Anschaulichkeit halber sind die Bits 0 und 3 gesetzt, um anzuzeigen, dass die Befehlspakete mit den Werten 0 und 3 Kopfpakete sind. Im hierin verwendeten Sinne bezeichnet ein Datenstrom eine beliebige Anzahl an Paketen in einer oder mehreren Paketsequenzen, die mit einer Datenanforderung verknüpft sind. Beispielsweise kann ein nicht aufgegebener Leseanforderungsbefehl in mehrere Lesebefehle aufgeteilt werden, die alle zu dem gleichen Datenstrom gehören. Für Datenströme, die mehr als ein Paket enthalten, können die Register „nächster Zeiger" 620 und das Enderegister 630 verwendet werden, um die Reihenfolge der verbleibenden Pakete in dem Datenstrom zu verfolgen.
  • Das Register „nächster Zeiger" 620 kann ebenso 29 Speicherstellen enthalten, wovon jede 5 Bits zum Beschreiben von zumindest von 29 Markierungswerten ausgebildet ist. Jede Stelle kann daher für einen der 29 Markierungswerte repräsentativ sein. Somit kann der in jeder Position des nächsten Zeigers 620 gespeicherte Wert verwendet werden, um auf die nächste Position innerhalb des Register „nächster Zeiger" 620 zu zeigen. Ferner repräsentiert der Wert, der in jeder Position gespeichert ist, auch einen Markierungswert des nächsten Pakets in einem speziellen Datenstrom. Somit kann eine Sequenz aus Werten, die innerhalb dem Register „nächster Zeiger" 620 gespeichert sind, auch verwendet werden, um die Reihenfolge einer Reihe von Paketen eines Datenstroms zu rekonstruieren oder zu verifizieren, die nicht in die Reihenfolgen empfangen werden, in der sie gesendet wurden.
  • Das Enderegister 630 kann ebenso 29 Bits enthalten, die jeweils der 29 Markierungswerten entsprechen. Das Enderegister 630 kann verwendet werden, um den Markierungswert anzugeben, der dem letzten Paket in einem speziellen Datenstrom entspricht. In der dargestellten Ausführungsform sind die Bits 2 und 5 gesetzt, wodurch angezeigt wird, dass die Befehlspakete mit den Markierungswerten 0 und 3 die Endpakete sind.
  • Zu beachten ist, dass, obwohl in der zuvor beschriebenen Ausführungsform ein Enderegister verwendet wird, um das letzte Paket in einem speziellen Datenstrom anzugeben, in anderen Ausführungsformen ein spezieller Wert in einer Speicherstelle des Registers „nächster Zeiger' 620 gespeichert werden kann. Der spezielle Wert kann dann kennzeichnend sein dafür, dass der der Stelle entsprechende Markierungswert, in der dieser gespeichert ist, einem letzten Paket in einem speziellen Datenstrom entspricht.
  • In der dargestellten Ausführungsform kann das Pufferverfügbarkeitsregister 600 auch 29 Bits enthalten, die jeweils den 29 Markierungswerten entsprechen. Das Pufferverfügbarkeitsregister 600 kann verwendet werden, um anzuzeigen, welche der Antworten, die mit einem speziellen Datenstrom verknüpft sind, bereits empfangen wurden. Beispielsweise sind die Datenpakete, die die Markierungswerte 3 und 4 enthalten, empfangen und in dem Datenpuffer, etwa dem Datenpuffer 400 aus 3 gespeichert. Folglich können die Bit-Zahlen 3 und 4 des Pufferverfügbarkeitsregisters 600 aus 7 angegeben, dass die Daten verfügbar sind, in dem diese gesetzt werden.
  • Der Teilantwortzeiger 640 kann ebenso 29 Positionen enthalten, die jeweils in der Lage sind, drei Bits zur Beschreibung von bis zu 8 Positionen innerhalb eines Puffers, etwa dem NP-Befehlspuffer 480 aus 3, zu beschreiben. Jeder 3-Bit-Wert kann als ein Indexwert verwendet werden, der einer Adresse einer Speicherstelle innerhalb des NP-Befehlspuffers 480 aus 3 entspricht. Somit kann der Teilantwortzeiger 640 verwendet werden, um anzuzeigen, welche Antwortbefehle mit einem ursprünglichen nicht aufgegebenen Befehl verknüpft sind, der in dem NP-Befehlspuffer 480 aus 3 gespeichert ist. Somit kann der Teilantwortzeiger 640 Fällen verwendet werden, in denen eine teilweise Übertragung von Daten zu einem peripheren Bus notwendig ist.
  • Es sollte beachtet werden, dass, obwohl es 29 Markierungswerte gibt, wie zuvor beschrieben ist, in anderen Ausführungsformen auch mehr oder weniger Markierungswerte verwendet werden können. Daher wird in der vorliegenden Erfindung auch berücksichtigt, dass das Kopfregister 610, der nächste Zeiger 620, das Enderegister 630, das Pufferverfügbarkeitsregister 600 und der Teilantwortzeiger 640 jeweils mehr oder weniger Bits enthalten können. Ferner ist zu berücksichtigen, dass die mit diesen Registern verknüpfte Logikschaltung in umgekehrter Form vorgegeben sein, so dass Bits zurückgesetzt werden können, anstelle diese zu setzen, um einen entsprechenden Markierungswert anzugeben.
  • Wie zuvor in Verbindung mit der Beschreibung der 3 dargelegt ist, kann es, wenn ein Buszyklus in nicht aufgegebene Paketbefehle durch die Busschnittstellenschaltung 470 übersetzt wird, mehrere Antwortpakete geben, die mit diesen nicht auf gegebenen Befehlspaket verknüpft sind. Ferner wurde erwähnt, das Antwortpakete von dem Abwärtsrichtungsabschnitt 360 außer der Reihenfolge empfangen werden können und dass die Reihenfolge der Pakete innerhalb eines Datenstroms in Abhängigkeit von der Art des peripheren Busses beibehalten werden kann. Wie nachfolgend detaillierter in Verbindung mit den Beschreibungen der 8 und 9 dargelegt ist, werden nicht aufgegebene Befehle von dem Aufwärtsrichtungsabschnitt 450 empfangen und Quellenmarkierungswerte werden von der NP-Quellenmarkierungslogikeinheit 490 für diese nicht aufgegebenen Befehle erzeugt. Anschließend können das Kopfregister 610, der nächste Zeiger 620, das Enderegister 630, das Pufferverfügbarkeitsregister 600 und das Teilantwortregister 640 in der Steuerlogik- und Speichereinheit 460 verwendet werden, um die korrekte Reihenfolge der Antworten innerhalb eines oder mehrerer Datenströme unter Anwendung der nicht aufgegebenen Quellenmarkierungswerte zu bewahren. Wenn ferner Antworten empfangen werden, kann die Steuerlogik- und Speichereinheit 460 verwendet werden, wenn eine Sequenz aus Daten, die einen Teil eines Datenstroms bildet, übertragen wird.
  • Es ist zu beachten, dass obwohl die dargestellte Ausführungsform Register für die Speicherung verwendet, es auch möglich ist, in anderen Ausführungsformen andere geeignete Arten an Speichereinrichtungen, etwa ein Speicher mit wahlfreiem Zugriff oder eine andere Art eines elektrisch löschbaren Nur-Lesespeichers zu verwenden, um nur einige Beispiele zu nennen.
  • 8 ist ein Flussdiagramm, das eine Transaktionsumordnung einer Ausführungsform der peripheren Schnittstellenschaltung 350 der 3 zeigt. Es wird nun kollektiv auf die 3, 7 und 8 verwiesen, wobei der Prozessablauf im Schritt 800 aus 8 beginnt und zum Schritt 810 weitergeht, in welchem ein nicht aufgegebener Befehl von dem Aufwärtsrichtungsabschnitt 450 aus 3 empfangen wird. Im Schritt 820 aus 8 entscheidet die Analysierlogik 500 aus 3, ob der nicht aufgegebene Befehl in mehrere nicht aufgegebene Befehle aufgeteilt werden soll, um die Erfordemisse des I/O-Tunnels in der Aufwärts richtung zu erfüllen. Wenn die Transaktionen PCI-Transaktionen sind, oder wenn die Transaktionen PCI-X-Transaktionen sind und der nicht aufgegebene Befehl nicht aufgeteilt werden muss, geht der Verfahrensablauf zum Schritt 830 aus 8 weiter, in welchem der nicht aufgegebene Befehl in dem NP-Befehlspuffer 480 aus 3 gespeichert wird. Im Allgemeinen werden PCI-Transaktionen nicht aufgeteilt. Beispielsweise kann eine nicht aufgegebene Leseanforderung durch die periphere Schnittstellenschaltung 350 aus 3 für eine Cache-Zeilengrenze gedacht sein. Jedoch sind die PCI-Transaktionen unter gewissen Bedingungen keineswegs von einer Aufteilung ausgeschlossen.
  • Der Funktionsablauf geht zum Schritt 840 aus 8 weiter, in welchem ein nicht aufgegebener Quellenmarkierungswert erzeugt wird und dem nicht aufgegebenen Befehl angefügt wird. Der Ablauf geht nun zum Schritt 842 weiter, in welchem das Kopfregister 610 aus 8 aktualisiert wird, indem das Bit gesetzt wird, das dem Quellenmarkierungswert entspricht, der gerade für den nicht aufgegebenen Befehl erzeugt wurde. Der Ablauf geht nun zum Schritt 850 aus 8 weiter, in welchem ein Steuerungsbefehl für den nicht aufgegebenen Befehl durch den Steuerbefehlgenerator 520 aus 3 erzeugt wird, und dieser wird an die I/O-Tunnelsteuerlogik zur Verteilung gesendet. Im Schritt 860 der 8 wird der nicht aufgegebene Befehl ebenso innerhalb des Befehlspuffers 530 aus 3 für virtuelle Kanäle gespeichert, um auf die Übertragung zu warten, und im Schritt 870 der 8 wird der nicht aufgegebene Befehl übertragen, wenn der entsprechende Steuerbefehl von der Verteilungsschaltung in der I/O-Tunnelsteuerlogik ausgewählt wird.
  • Es sei wieder auf den Schritt 820 der 8 verwiesen; wenn die Analyse des nicht aufgegebenen Befehls notwendig ist, geht der Ablauf zum Schritt 825 weiter, in welchem der nicht aufgegebene Befehl in mehrere nicht aufgegebene Befehle, die der gleichen Sequenz oder dem gleichen Datenstrom angehören, unterteilt. Im Schritt 835 wird der ursprüngliche nicht aufgegebene Befehl in dem NP-Befehlspuffer 480 der 3 gespeichert. Im Schritt 845 der 8 werden NP-Quellenmarkierungen für jeden der nicht aufgegebenen Befehle erzeugt, die gerade aus dem ursprünglichen Befehl erzeugt wurden. Der Ablauf geht nun zum Schritt 842 weiter, in welchem das Kopfregister 610, der nächste Zeiger 620, das Enderegister 630 und der Teilantwortzeiger aus 7 aktualisiert werden. Das Kopfregister 610 kann aktualisiert werden, indem das Bit gesetzt wird, das dem gerade für den ersten nicht aufgegebenen Befehl innerhalb der Sequenz erzeugten Markierungswert entspricht. Das Enderegister 630 kann aktualisiert werden, indem das Bit gesetzt wird, das für den letzten nicht aufgegebenen Befehl innerhalb des Datenstroms erzeugten Markierungswert entspricht.
  • Der nächste Zeiger 620 bzw. das Register für „den nächsten Zeiger" wird aktualisiert, indem die Markierungswerte der verbleibenden nicht aufgegebenen Befehle innerhalb der Sequenz eingeladen werden. Die Markierungswerte werden so eingeladen, dass jedes Paket in der Sequenz mit dem nächsten Paket in der Sequenz verknüpft ist. Beispielsweise kann ein gegebener Datenstrom aus drei Paketen aufgebaut sein. Die Pakete sind als 0, 1 und 2 angeordnet und werden somit als 0, 1 und 2 markiert. Daher wird das Bit 0 des Kopfregister 610 gesetzt und die Bits 1 und 2 werden zurückgesetzt, da lediglich ein Paket der Anfang bzw. der Kopf sein kann. Um die nächsten Pakete in dem Datenstrom zu verfolgen, werden die Positionen 0 und 1 des Registers des nächsten Zeigers 620 mit den Markierungswerten der nächsten zwei Pakete, d. h. 1 und 2 geladen. Da das Bit0 des Kopfregister 610 gesetzt ist, wird die Position des nächsten Zeigers 620 mit dem Markierungswert „1" gesetzt, der angibt, dass das Paket mit dem Markierungswert 1 das „nächste" Paket in dem Datenstrom ist. Ferner wird die Position 1 des nächsten Zeigers 620 mit dem Markierungswert „2" geladen, der angibt, dass das Paket mit dem Markierungswert 2 das „nächste" Paket in dem Datenstrom ist. Da das Paket 2 das letzte Paket in dem Datenstrom ist, wird dieses als Ende gekennzeichnet. Folglich wird das Bit 2 des Enderegisters 630 gesetzt. Zu beachten ist, dass, obwohl in der obigen Ausführungsform die Markierungswerte einer numerischen Sequenz (beispielsweise 0, 1 und 2) zugeordnet sind, in anderen Ausführungsformen die Markierungswerte auch einer beliebigen Reihenfolge zugeordnet sein können und dass die Markierungswerte so zugeordnet sein können, dass diese den verfügbaren Markierungswerten entsprechen. In anderen Ausführungsformen können mehr oder weniger Pakete in einem Datenstrom enthalten sein und somit können mehr oder weniger Markierungswerte verwendet werden.
  • Die mehreren nicht aufgegebenen Befehle, die einen Datenstrom bilden, können von der Abwärtsrichtungslogik in ungeordneter Reihenfolge empfangen werden, wodurch eine Verzögerung beim Senden zu dem anfordernden Gerät hervorgerufen wird. Diese Verzögerung kann bewirken, dass die periphere Schnittstellenschaltung 350 aus 3 eine Teilantwort für PCI-X-Transaktionen angibt. In einem derartigen Falle kann die Abwärtsrichtungslogik ein Erzeuger einer Reihe von Teilantwortzyklen werden, und ein Aufteilungsabschlusszyklus und Information, die in dem ursprünglichen nicht aufgegebenen Befehl enthalten ist und den mehreren nicht aufgegebenen Befehlen entspricht, kann erforderlich sein, um einen aufgeteilten Antwortzyklus und einen Busvervollständigungszyklus zu initiieren. Wie nachfolgend detaillierter in Verbindung mit 9 erläutert ist, wird das Teilantwortzeigerregister 640 aus 7 verwendet, um jede der mehreren Antworten eines speziellen Datenstromes mit den ursprünglichen nicht aufgegebenen Befehl, der in dem NP-Befehlspuffer 480 aus 3 gespeichert ist, zu verknüpfen. Folglich kann jede Position in dem Teilantwortzeigerregister 640 aus 7 einen NP-Quellenmarkierungswert eines entsprechenden Antwortbefehls repräsentieren. Jede Position kann mit einem Indexwert besetzt werden, der der Adresse einer Position innerhalb des NP-Befehlspuffers 480 aus 3 entspricht, an der der ursprüngliche nicht aufgegebene Befehl für diese Antwort gespeichert ist. In dem obigen Beispiel werden die Positionen 0, 1 und 2 innerhalb des Teilantwortzeigerregister 640 aus 7 mit dem Indexwert beschrieben, der der Adresse der Position innerhalb des NP-Befehlspuffers 480 aus 3 entspricht, in welchem der ursprüngliche nicht aufgegebene Befehl gespeichert ist.
  • Der Ablauf geht dann zum Schritt 850 aus 8 weiter, in welchem Steuerbefehle für jeden der mehreren nicht aufgegebenen Befehle erzeugt und an die I/O-Tunnelsteuerlogik gesendet werden. Ferner wird im Schritt 860 jeder der mehreren nicht aufgegebenen Befehle in dem Befehlspuffer für virtuelle Kanäle 530 aus 3 gespeichert, um auf die Sendung zu warten. Im Schritt 870 aus 8 wird jeder der mehreren nicht aufgegebenen Befehle übertragen, wenn der jeweilige entsprechende Steuerbefehl von der Verteilungsschaltung in der I/O-Tunnelsteuerlogik ausgewählt ist. Der Funktionsablauf endet im Schritt 880.
  • 9 zeigt ein Flussdiagramm, das den Vorgang der aufgeteilten Antwort der peripheren Schnittstellenschaltung 350 aus 3 zeigt. Es sei gemeinsam auf 3, 7 und 9 verwiesen, wobei der Ablauf im Schritt 900 aus 9 beginnt und zum Schritt 905 weitergeht, in welchem ein Antwortbefehl entsprechend einem aufwärts gerichteten nicht aufgegebenen Befehl durch den Abwärtsrichtungsabschnitt 360 aus 3 empfangen wird. Im Schritt 910 wird ein Datensegment, das mit dem Antwortbefehl verknüpft ist, in dem Datenpuffer 400 aus 3 gespeichert. In Reaktion auf das Empfangen des Datensegments wird das Pufferverfügbarkeitsregister 600 aus 7 aktualisiert, indem ein Bit gesetzt wird, das dem NP-Quellenmarkierungswert entspricht, der zusammen mit dem Antwortbefehl empfangen wurde. Der Ablauf geht nun zum Schritt 915 aus 9 weiter, in welchem der Zustand eines Bits in dem Kopfregister 610 aus 7, der dem Markierungswert des Antwort befehls entspricht, geprüft wird, um zu erkennen, ob der Befehl das Kopfpaket eines Datenstromes ist. Wenn der empfangene Antwortbefehl nicht ein Kopfpaket ist, dann geht der Ablauf zum Schritt 920 aus 9 weiter, in welchem der Befehl verworfen wird und der Ablauf geht zurück zum Schritt 905, um auf einen weiteren Antwortbefehl zu warten. Wenn der Befehlsbereich nicht der Kopf ist, kann dieser verworfen werden, da angenommen werden kann, dass es ein Kopfpaket gibt, das mit diesem Datenstrom verknüpft ist und es wird lediglich das Datensegment bewahrt. Es sei nun wieder auf den Schritt 915 verwiesen; wenn der Antwortbefehl ein Kopfpaket ist, geht der Ablauf zum Schritt 925 weiter, in welchem der Antwortbefehl einem Verteilungsmarkierungswert durch die Markierungslogik 380 der 3 zugeordnet und in dem Antwortkanal des Befehlspuffers für virtuelle Kanäle 390 gespeichert wird.
  • Im Schritt 930 aus 9 ermittelt die Verteilungslogik 410 aus 3 einen aktuell ausgewählten Befehl aus dem Befehlspuffer 390 für virtuelle Kanäle. Wenn der Antwortbefehl der nicht aktuell ausgewählte Befehl ist, bleibt der Ablauf im Schritt 930, wobei die Auswahl bzw. Verteilung weitergeht. Wenn andererseits der Antwortbefehl der aktuell ausgewählte Befehl ist, geht der Ablauf zum Schritt 935 weiter. Im Schritt 935 geht, wenn die Transaktionen PCI-Transaktionen sind und alle Datenpakete als verfügbar gelten, der Ablauf zum Schritt 940 weiter, in welchem das Kopfregister 610, der nächste Zeiger 620, das Enderegister 630 und das Pufferverfügbarkeitsregister 600 aus 7 aktualisiert werden, so dass die mit dem I/O-Strom verknüpften Markierungswerte von der NP-Quellenmarkierungslogik 490 aus 3 erneut verwendet werden. Ferner kann der ursprüngliche nicht aufgegebene Befehl aus dem NP-Befehlspuffer 430 aus 3 zurückgenommen werden. Im Schritt 945 der 9 wird ein Busabschlusszyklus einschließlich aller angeforderten Daten auf dem peripheren Bus 560 aus 3 initiiert.
  • Es sei wieder auf Schritt 935 verwiesen. Wenn die Transaktionen PCI-X-Transaktionen sind, dann geht der Ablauf zum Schritt 960 weiter, in welchem es notwendig sein kann zu bestimmen, welche mit diesem Datenstrom verknüpften Datenpakete verfügbar sind. Dies kann bewerkstelligt werden, indem die Kombination des nächsten Zeigers 620, des Enderegisters 630 und des Pufferverfügbarkeitsregisters 600 aus 7 geprüft wird. Wenn alle Datenpakete eingetroffen sind, geht der Ablauf zum Schritt 965 aus 9 weiter. Im Schritt 965 werden das Kopfregister 610, der nächste Zeiger 620, das Enderegister 630, das Pufferverfügbarkeitsregister 600 und das Teilantwortzeigerregister aus 640 aus 7 aktuali siert, so dass die mit dem Datenstrom verknüpften Markierungswerte erneut von der NP-Quellenmarkierungslogik 490 aus 3 verwendet werden können. Im Schritt 970 aus 9 wird ein Abschlusszyklus initiert, der anzeigt, dass alle Antwortdaten an die anfordernde Einrichtung gesendet sind. Um den Abschlusszyklus zu initiieren, wird die periphere Schnittstellenschaltung 350 aus 3 nunmehr das Quellengerät und kann einen geteilten Abschlusszyklus initiieren. Um den geteilten Abschlusszyklus zu initiieren, wird Information benötigt, die in dem ursprünglich nicht aufgegebenen Zyklus entsprechend dem aktuellen Antwortpaket, das in dem NP-Befehlspuffer 480 aus 3 gespeichert ist, vorhanden ist. Daher wird die Position, die dem Quellenmarkierungswert der aufgeteilten Antwort entspricht, aus dem Teilantwortzeigerregister 640 aus 7 ausgelesen. Die in dem ursprünglich nicht aufgegebenen Zyklus enthaltene Information wird abgerufen und der Teilabschlusszyklus wird initiiert. Ferner kann der ursprüngliche nicht aufgegebene Befehl aus dem NP-Befehlspuffer 430 aus 3 zurückgezogen werden.
  • Es sei wieder auf Schritt 960 verwiesen; wenn lediglich einige mit dem Datenstrom verknüpften Datenpakete eingetroffen sind und die verfügbaren Datenpakete erkannt sind, geht der Ablauf zum Schritt 975 weiter, in welchem das Kopfregister 610, der nächste Zeiger 610, das Pufferverfügbarkeitsregister 600 und der Teilantwortzeiger 640 aus 7 aktualisiert werden. Da jedoch nur einige der Datenpakete verfügbar sind, wird ein Teilantwortzyklus erzeugt. Die Teilantworttransaktion kann ein Befehlspaket und Datensegmente enthalten, die in dem Datenpuffer 400 aus 7 gespeichert sind, die zusammen eine Datensequenz ergeben, die einen Teil des Datenstroms bildet. Folglich werden das Kopfregister 610 und der nächste Zeiger 620 aus 9 aktualisiert, um einen neuen Kopf und nächste Pakete des Datenstromes wiederzugegeben. Im Schritt 985 wird ein Teilantwortbuszyklus auf dem peripheren Bus 560 aus 3 initiiert. Ähnlich zu dem obigen Falle kann Information erforderlich sein, die in dem ursprünglich nicht aufgegebenen Zyklus enthalten ist und dem aktuellen Antwortpaket entspricht, das in dem NP-Befehlspuffer 480 gespeichert ist, um den Teilantwortzyklus zu initiieren. Somit wird die Position, die dem Quellenmarkierungswert der aufgeteilten Antwort entspricht, aus dem Teilantwortzeigerregister 640 aus 7 ausgelesen. Die Information, die in dem ursprünglich nicht aufgegebenen Zyklus enthalten ist, wird ausgelesen und der Teilantwortzyklus wird initiiert. Im Gegensatz zu dem obigen Falle zur korrekten Initiierung eines Teilantwortbuszyklusses wird die Busschnittstellenschaltung 470 aus 3 über die Datenmenge in Kenntnis gesetzt, die in dem Teilantwortbefehl gesendet wird, indem die entsprechende Zahl in dem Datenzahlfeld des Paketes mit eingeschlossen wird. Die Zahl gibt die Anzahl an gesendeten Datenblöcken wieder. Zurückkehrend zum Schritt 960 aus 9 werden, wenn nachfolgende Antwortbefehle empfangen werden, die die verbleibenden Datenpakete enthalten, diese verbleibenden Datenpakete, die den verbleibenden Anteil des Datenstroms bilden, zu dem anfordernden Gerät unter Anwendung der zusätzlichen Teilantwortzyklen gesendet. Wenn der Rest der Daten gesendet ist, wird ein Teilabschlusszyklus initiiert und der ursprüngliche nicht aufgegebene Befehl kann aus dem NP-Befehlspuffer 430 aus 3 zurückgenommen werden. Die Funktionsbeschreibung endet im Schritt 950 aus 9.
  • 10 ist eine Blockansicht einer Ausführungsform einer peripheren Schnittstellenschaltung zur Verbindung mit einem Graphikbus. Eine periphere Schnittstellenschaltung 1000 umfasst einen Abwärtsrichtungsabschnitt 1010 und einen Aufwärtsrichtungsabschnitt 1020. Die periphere Schnittstellenschaltung 1000 umfasst ferner eine Tunnelschnittstelle 1030, die mit einem I/O-Tunnel, etwa dem I/O-Tunnel 140 aus 2, verbunden sein kann. In dem Abwärtsrichtungsabschnitt 1010 aus 10 ist die Tunnelschnittstelle 1030 ferner mit einem Befehlspuffer 1040 verbunden. Der Befehlspuffer 1040 ist mit einer Markierungslogikeinheit 1050 verbunden. Die Markierungslogikeinheit 1050 ist mit einem Befehlspuffer 1060 für virtuelle Kanäle verbunden. Der Befehlspuffer 1060 für virtuelle Kanäle ist mit einer Verteilungslogikeinheit 1070 verbunden, die mit einer Busschnittstellenschaltung 1080 verbunden ist. Die Tunnelschnittstelle 1030 ist ferner mit einem Datenpuffer 1100 verbunden, der wiederum mit der Busschnittstellenschaltung 1080 verbunden ist. Die Busschnittstellenschaltung 1080 ist mit einem Graphikbus 1090 verbunden, der mit einem Graphikadapter 1095 gekoppelt ist. In einer bevorzugten Ausführungsform ist der Graphikbus 1080 ein beschleunigter Graphikport- (AGP) Bus, obwohl in andere Ausführungsformen andere Arten an Graphikbussen verwendet werden können.
  • In dem Aufwärtsrichtungsabschnitt 1020 ist die Busschnittstellenschaltung 1080 mit einem NP-Befehlspuffer 1110 und mit einer Analysierlogik 1070 verbunden. Des weiteren ist die Busschnittstellenschaltung 1080 mit einem Datenpuffer 1150 verbunden. Der NP-Befehlspuffer 1110 ist mit einem Steuerbefehlgenerator 1140 und einer NP-Quellenmarkierungslogikeinheit 1120 verbunden. Der Steuerbefehlgenerator 1140 ist mit einem Befehlspuffer für virtuelle Kanäle 1160 und der Tunnelschnittstelle 1030 verbunden. Der Befehlspuffer 1160 für virtuelle Kanäle ist ferner mit der Tunnelschnittstelle 1030 verbunden. Die periphere Schnittstellenschaltung 1000 umfasst ferner eine Steuerlogik- und Speichereinheit 1130, die mit dem Datenpuffer 1100 des Abwärtsrichtungsabschnitts 1010 verbunden ist. Die Steuerlogik- und Speichereinheit 1130 ist ferner mit der NP-Quellenmarkierungslogik 1120 und dem NP-Befehlspuffer 1110 des Aufwärtsrichtungsabschnitts 1020 verbunden.
  • In der dargestellten Ausführungsform enthalten der Befehlspuffer 1060 für virtuelle Kanäle und der Befehlspuffer 1160 für virtuelle Kanäle jeweils drei separate FIFO-Abschnitte, die den drei Transaktionsarten entsprechen: aufgegeben, nicht aufgegeben und Antwort. Die Befehle werden in den entsprechenden FIFO in der Reihenfolge angeordnet, in der sie empfangen wurden. Um jedoch die Regeln hinsichtlich der Reihenfolge, die mit dem Bus oder der Geräteart verknüpft sind, die den ursprünglichen Befehl erzeugt haben, beizubehalten, können die Transaktionen in ungeordneter Weise zwischen unterschiedlichen Arten an Transaktionen verarbeitet werden. Dies kann durch die Befehlsorganisationsablaufeinheit bewerkstelligt werden, die in Kombination aus dem Befehlspuffer 1060 für virtuelle Kanäle und der Verteilungslogik 1070 aufgebaut ist.
  • In einer Ausführungsform ist der Befehlspuffer 1040 ein zweistufiger FIFO, der als ein Puffermechanismus für Befehle dient, die von dem I/O-Tunnel 1040 aus 2 zu dem Befehlspuffer 1090 aus 10 für virtuelle Kanäle gesendet wurden. Wenn eine Transaktion in Abwärtsrichtung zu der peripheren Schnittstellenschaltung 1000 gesendet wird, wird der Datenanteil der Transaktion in dem Datenpuffer 1100 gespeichert, während der Befehlsanteil der Transaktion in dem Befehlspuffer 1060 für virtuelle Kanäle gespeichert wird. Zunächst wird jedoch die Markierungslogik 1050 so konfiguriert, dass ein Markierungswert erzeugt und dem Befehl angehängt wird. Der Markierungswert kann der Reihefolge des Empfangens des Befehls im Verhältnis zu anderen empfangenen Befehlen entsprechen und kann in nachfolgenden Auswahl- bzw. Verteilungszyklen verwendet werden. Die Daten und der Befehl können so gekennzeichnet sein, dass sie als zu dem gleichen Paket gehörend erkennbar sind, mittels der Kopfinformation, die in den Paketen enthalten ist. Da ferner Graphikbusse bei einer Taktgeschwindigkeit laufen können, die langsamer ist als die interne Taktgeschwindigkeit des I/O-Knotens, können Daten in den Datenpuffer 1100 unter Anwendung der Taktgeschwindigkeit des I/O-Knotens eingeladen und mit einer anderen Taktgeschwindigkeit, vorzugsweise der Taktgeschwindigkeit des Graphikbusses, der mit der Busschnittstellenschaltung 1080 verbunden ist, ausgeladen werden. Ferner können sowohl der Datenpuffer 1100 und der Befehlspuffer 1060 für virtuelle Kanäle ausgebildet sein, um eine Logikschaltung in Aufwärtsrichtung in Kenntnis zu setzen, wenn Speicherplatz innerhalb des Puffers nicht verfügbar ist.
  • Da einige Graphikadapter ursprünglich unter Anwendung des PCI-Busses zur Kommunikation mit dem Systemspeicher eingerichtet werden, können Graphikadapter, etwa der Graphikadapter 1095 weiterhin eine PCI-Logik enthalten, die in der Lage ist, PCI-Bustransaktionen auf dem Graphikbus 1090 zu initiieren. Ferner können Konfigurationsbefehle, die von anderen Geräten, etwa einem Systemprozessor, initiiert wurden, an den Graphikadapter 1095 unter Anwendung eines PCI-Befehls über den Graphikbus 1090 gesendet werden. Somit kann zusätzlich zum Übersetzen von AGP-Buszyklen in Paketbefehle und Paketbefehle in AGP-Buszyklen die Busschnittstellenschaltung 1080 auch Paketbefehle in PCI-Buszyklen übersetzen, die für eine Übertragung auf dem Graphikbus 1090 geeignet sind.
  • Abhängig von der Art des Befehls (d. h. aufgegeben, nicht aufgegeben oder Antwort) wird der Befehl in einem entsprechenden FIFO für virtuelle Kanäle des Befehlpuffers 1060 für virtuelle Kanäle gespeichert, der in der Funktion ähnlich ist zu dem Abwärtsrichtungsabschnitts 360 aus 3. In 10 ist die Verteilungslogik 1070 ausgebildet, zwischen den Transaktionen in dem Befehlspuffer 1060 für virtuelle Kanäle auszuwählen, welche Transaktion als erstes, als zweites usw. verarbeitet wird. Die Verteilungslogik 1070 kann ferner die von der Markierungslogikeinheit 1050 gelesenen Markierungswerte während der Verteilungszyklen verwenden. Ferner können für PCI-Antworten mehrere Antwortpakete zum gleichen Datenstrom oder zur gleichen Sequenz gehören, wenn diese von einer gemeinsamen Anforderungstransaktion stammen. Es kann notwendig sein, die Antwortpakete, die zu einem gegebenen Datenstrom gehören, in der korrekten Reihenfolge auszuliefern, selbst wenn die Pakete von der Logik in Abwärtsrichtung in ungeregelter Reihenfolge empfangen werden. Diese Funktion kann ähnlich zu der Beschreibung sein, die in Verbindung mit der 9 für PCI-Antworten dargelegt ist.
  • Wie nachfolgend detaillierter in Verbindung mit der Beschreibung der 11 erläutert ist, wird eine AGP-Antwort, die von dem Abwärtsrichtungsabschnitt 1010 empfangen wird, nicht in dem Befehlspuffer 1060 für virtuelle Kanäle gespeichert und kann an den Verteilungszyklen nicht teilnehmen. Die AGP-Antwort umgeht stattdessen die Puffer innerhalb des Befehlspuffers 1060 für virtuelle Kanäle, und die mit dem Antwortbefehl verknüpften Daten können zu der Busschnittstelle 1080 gesendet werden. Da jedoch AGP-Antworten auch durch andere Regeln hinsichtlich der Reihenfolge geregelt sein können, kann die Steuerlogik- und Speichereinheit 1130 und Speichereinheiten enthalten, etwa Register zur Anwendung bei der Zuleitung von Paketen in der korrekten Reihenfolge, und dies wird nachfolgend detaillierter im Zusammenhang mit der Beschreibung der 12 erläutert.
  • Wenn der Graphikadapter 1095 eine AGP-Transaktion auf dem Graphikbus 1090 initiiert, übersetzt die Schnittstellenschaltung 1080 die Transaktion in Pakettransaktionen, die Befehlspakete und Datenpakete enthalten können, wie dies zuvor beschrieben ist. Die Datenpakete können in dem Datenpuffer 1150 gespeichert werden, während die Befehle in dem Befehlspuffer 1160 für virtuelle Kanäle in dem entsprechenden virtuellen Kanal gespeichert werden. Vor der Speicherung in dem Befehlspuffer 1160 für virtuelle Kanäle und abhängig von der Art des Befehls kann die Analyselogik 1170 den Befehl in eine Reihe kleinerer Befehle aufteilen. Wenn beispielsweise der Graphikadapter 1090 einen Auslesevorgang eines größeren Blocks an Daten aus dem Systemspeicher anfordert, kann die Analyselogik 1170 nicht aufgegeben Lesebefehle des gleichen Speicherblocks aber in kleineren Blöcken erzeugen. In einer Ausführungsform werden die Blöcke entlang der Cache-Speicherzeilengrenzen erzeugt. Nachfolgend wird jeder der neu erzeugten nicht aufgegebenen Befehle in dem Befehlspuffer 1160 für virtuelle Kanäle gespeichert und der ursprünglich nicht aufgegebene Befehl wird in dem NP-Befehlspuffer 1110 gespeichert.
  • In der dargestellten Ausführungsform erzeugt die NP-Quellenmarkierungslogik 1120 einen Markierungswert, der durch die Abwärtsrichtungslogik verwendet werden kann, um zu bestimmen, mit welchem Datenstrom ein spezieller Antwortbefehl verknüpft ist. Die NP-Quellenmarkierungslogik 490 erzeugt einen Markierungswert, der mit jedem der nicht aufgegebenen Befehle in Aufwärtsrichtung verknüpft ist. In einer Ausführungsform werden die Markierungswerte 0 bis 29 erzeugt. Es können jedoch in anderen Ausführungsformen auch andere geeignete Anzahlen an Markierungswerten erzeugt werden.
  • Wenn die Befehle in Aufwärtsrichtung in dem Befehlspuffer 1160 für virtuelle Kanäle gespeichert werden, erzeugt der Steuerbefehlgenerator 1140 Steuerbefehle ähnlich zu dem Steuerbefehlen, die von den Sendern/Empfängern 110 und 120 der 2 erzeugt werden. In 10 sendet der Steuerbefehlgenerator 1140 auch jene Steuerbefehle über die Tunnelschnittstelle 1030, um eine Steuereinheit, etwa die Tunnelsteuereinheit 130 aus 2 beispielsweise zu steuern, wodurch es möglich ist, dass die Befehle in Aufwärtsrichtung in dem I/O-Tunnel 140 disponiert werden. Die Tunnelschnittstelle 1030 aus 10 kann eine Pufferschaltung für allgemeine Zwecke enthalten, wie sie für die Bildung einer Schnittstelle zwischen dem I/O-Tunnel 140 und einer Logik in der peripheren Schnittstellenschaltung 1000 erforderlich ist.
  • 11 ist eine Ansicht einer Ausführungsform einer peripheren Schnittstellenschaltung zur Handhabung von Graphikantworten. Schaltungskomponenten, die jenen in 10 gezeigten Schaltungskomponenten entsprechen, sind der Einfachheit und der Klarheit mit gleichen Bezugszeichen belegt. Die periphere Schnittstellenschaltung umfasst einen Bypass- bzw. Umgehungsmechanismus 1200, der einen Datenpuffer 1100 umfasst, der mit der Busschnittstellenschaltung 1080 verbunden ist. Die Busschnittstellenschaltung 1080 umfasst einen FIFO-Puffer 1105, der mit einem Zielbus 1185 und einem Quellenbus 1182 verbunden ist. Der Quellenbus 1182 und der Zielbus 1185 sind mit einem Graphikbus 1090 verbunden. Der Umgehungsmechanismus 1200 umfasst ferner eine Befehlspufferschaltung für virtuelle Kanäle 1060, die mit einer Verteilungslogik 1070 verbunden ist. Die Verteilungslogik 1070 ist mit der Busschnittstellenschaltung 1080 verbunden. Des weiteren umfasst der Umgehungsmechanismus 1200 eine AGP-Umgehungsverbindung, die den Antwortkanal der Befehlspufferschaltung für virtuelle Kanäle 1060 und die Schnittstellenschaltung 1080 verbindet.
  • Wie zuvor mit Verbindung 10 erläutert ist, werden, wenn Antworten und Befehle in Abwärtsrichtung empfangen werden, diese in einem entsprechenden FIFO für virtuelle Kanäle der Befehlspufferspaltung für virtuelle Kanäle 1060 gespeichert. Wenn in 11 Verteilungszyklen aktuell ausgewählte Befehle bestimmen, können die mit einem aktuell ausgewählten Befehl verknüpften Daten in den FIFO-Puffer 1105 übertragen werden. Solange Daten in dem FIFO 1105 vorhanden sind, kann die Busschnittstelle 1080 Buszyklen initiieren, die für die Übertragung auf dem Graphikbus 1090 geeignet sind. Wenn die Buszyklen abgeschlossen sind und jeder aktuell ausgewählte Befehl der Befehlspufferschaltung für virtuelle Kanäle 1060 abgeschlossen ist, können die verbleibenden Befehle innerhalb eines vorgegebenen FIFO's für virtuelle Kanäle in Richtung zum Kopf dieses FIFO's verschoben werden. Schließlich kann jeder Befehl ausgelesen werden und an den Verteilungszyklen teilgenommen haben, sofern der Befehl nicht ein AGP-Antwortbefehl ist.
  • In der dargestellten Ausführungsform umfasst die Busschnittstellenschaltung 1080 zwei separate Busse: den Quellenbus 1182 und den Zielbus 1185. Der Quellenbus 1182 und der Zielbus 1185 werden von der Busschnittstelle 1080 verwendet, um Pakettransaktionen zwischen dem Graphikbus 1090 und einem Knoten in Aufwärtsrichtung zu transportieren. Der Zielbus 1182 wird verwendet, um Befehle zu transportieren, die von einer Graphikeinrichtung initiiert werden, die mit dem Graphikbus 1090 verbunden ist. Der Zielbus 1185 kann verwendet werden, um Befehle zu transportieren, die von anderen Geräten initiiert werden, die nicht auf dem Graphikbus 1090 sind, etwa einem Systemprozessor, um ein Beispiel zu nennen. In 11 enthalten der Quellenbus 1182 sowie der Zielbus 1185 jeweils einen Befehlskanal und einen Antwortkanal (nicht gezeigt). Der Befehlskanal des Quellenbusses kann verwendet werden, um Befehle zu transportieren, etwa nicht aufgegebene und aufgegebene Befehle, die von einer Einrichtung auf dem Graphikbus initiiert werden. Der Antwortkanal des Quellenbusses kann zum Transport von Antwortbefehlen verwendet werden, die von einer Einrichtung erzeugt wurden, die nicht an dem Graphikbus liegt, und die den aufgegebenen und nicht aufgegebenen Befehlen entsprechen, die von einer Einrichtung auf dem Graphikbus initiiert wurden. Ferner kann der Befehlskanal des Zielbusses verwendet werden, um Befehle, etwa aufgegebene und nicht aufgegebene Befehle, die von an dem Graphikbus nicht angeschlossene Geräte initiiert wurden, zu transportieren. Der Antwortkanal des Zielbusses kann verwendet werden, um Antwortbefehle zu übertragen, die von einem Gerät auf dem Graphikbus erzeugt wurden, die jedoch aufgegebenen und nicht aufgegebenen Befehlen entsprechen, die von einem Gerät initiiert wurden, das nicht an dem Graphikbus angeschlossen ist.
  • Da es zwei separate Busse gibt, die zur Übertragung von Transaktionen verwendet werden, werden AGP- und PCI-Antwortbefehle in Abwärtsrichtung von dem Antwortkanal des Quellenbusses 1182 übertragen, während aufgegebene und nicht aufgegebene Befehle in Abwärtsrichtung von dem Zielbus 1185 übertragen werden. Um ein Bespiel anzugeben: es werde eine AGP-Transaktion, etwa ein nicht aufgegebener Lesebefehl, von einer Graphikeinrichtung initiiert, die mit dem Graphikbus 1090 verbunden ist. Die Transaktion wird von der Busschnittstellenschaltung 1080 in Pakete umgesetzt und auf dem Befehlskanal des Quellenbusses 1182 zu dem Aufwärtsrichtungsabschnitt 1020 aus 10 übertragen, in welchem der Befehl zu einem Hostknoten (nicht gezeigt) für die Verarbeitung gesendet wird. Zu einer späteren Zeit wird eine AGP-Antwort entsprechend dem vorhergehenden AGP-Befehl von der Befehlspufferschaltung 1060 für virtuelle Kanäle empfangen. Auf Grund der Verfügbarkeit des Antwortkanals des Quellenbusses 1182 und des separaten Befehlskanals des Zielbusses 1187 wird die AGP-Antwort nicht in dem Antwortkanal der Befehlspufferschaltung 1060 für virtuelle Kanäle gespeichert und nimmt daher nicht an den Verteilungszyklen teil. Die AGP-Antwort kann den Antwortkanalpuffer des Befehlspuffers 1060 für virtuelle Kanäle umgehen und wird zu der Busschnittstellenschaltung 1090 gesendet. Alle anderen Arten an Befehlen, die innerhalb der Befehlspufferschaltung 1060 für virtuelle Kanäle gespeichert sind, können an Verteilungszyklen teilnehmen. Dies ist anders als bei PCI-Transaktionen, etwa einem nicht aufgegebenen Lesebefehl, der von einer Graphikeinrichtung initiiert wird, die mit dem Graphikbus 1090 verbunden ist. Die PCI-Antwort in Abwärtsrichtung, die zu einer späteren Zeit eintrifft, wird in dem Antwortkanalpuffer der Befehlspufferschaltung 1060 für virtuelle Kanäle gespeichert und nimmt an den Verteilungszyklen teil. Für die PCI-Antworten kann es notwendig sein, dass diese disponiert werden, da die PCI-Regeln für die Reihenfolge eine Umordnung der Transaktionen zwischen den Datenströmen dies zulassen und die AGP-Regeln für die Reihenfolge dies unter Umständen nicht zulassen.
  • 12 ist eine Ansicht einer Ausführungsform einer Vorrichtung zur Umordnung von Graphikantworten. Schaltungskomponenten, die jenen in 10 und 11 entsprechen, sind der Einfachheit halber und der Klarheit halber mit identischen Bezugszeichen belegt. Die Transaktionsumordnungsvorrichtung umfasst einen Datenpuffer 1100 mit einem Zeiger 1101 und einer Steuerlogik- und Speichereinheit 1130. Der Datenpuffer 1100 ist mit der Steuerlogik- und Speichereinheit 1130 und mit einer Busschnittstellenschaltung 1080 verbunden. Die Steuerlogik- und Speichereinheit 1130 umfasst eine Datenverfügbarkeitsspeichereinheit 1135. In der dargestellten Ausführungsform ist die Datenverfügbarkeitsspeichereinheit 1135 ein Register. Jedoch kann in anderen Ausführungsformen eine beliebige andere Speichereinheit, etwa beispielsweise ein Speicher mit wahlfreiem Zugriff, verwendet werden.
  • Wie zuvor erwähnt ist, können Graphikantworten, etwa AGP-Antworten, anders als PCI- und PCI-X-Antworten, lediglich zu der initiierenden Einrichtung in der Reihenfolge zurückgesendet werden, in der diese angefordert wurden, unabhängig davon, zu welchem Datenstrom sie gehören. Somit können AGP-Antworten in Abwärtsrichtung zu dem initiierenden Gerät in einer unterschiedlichen Reihenfolge gesendet werden, als sie von dem Datenpuffer 1100 empfangen werden. Beispielsweise wird eine erste Anforderung in Aufwärtsrich tung gesendet und ist mit einem ersten Datenstrom verknüpft. Daran schließt sich eine zweite Anforderung an, die mit einem zweiten Datenstrom verknüpft ist. Etwas später wird lediglich ein Teil der Antwortdatenpakete, die dem ersten Datenstrom entsprechen, empfangen und in dem Datenpuffer 1100 gespeichert. Jedoch werden alle Antwortdatenpakete des zweiten Datenstroms empfangen und in dem Datenpuffer 1100 gespeichert. Die Datenpakete von dem zweiten Datenstrom werden nicht gesendet, bis die verbleibenden Datenpakete aus dem ersten Datenstrom empfangen wurden und nachfolgend zu der Busschnittstelle 1080 zur Übersetzung in Buszyklen übertragen wurden.
  • In der dargestellten Ausführungsform kann der Datenpuffer 1100 eine Speichereinheit mit wahlfreiem Zugriff sein, die zumindest 29 Speicherplätze enthält, die den 29 Markierungswerten entsprechen, die den Befehlen von NP-Markierungslogik 1120 aus 10 zugeordnet sind. Wenn die Datenpakete jeweils eintreffen, können diese in einer Speicherstelle gespeichert werden, die dem Markierungswert des empfangenen Datenpakets entspricht. In 12 zeigt der Zeiger 1101 zu der Position, von der erwartet wird, dass diese die Daten des nächsten sequenziellen AGP-Datensegments enthält, das zu der Busschnittstelle 1080 zu senden ist. Des weiteren umfasst das Datenverfügbarkeitsregister 1135 mindestens 29 Bits, die den 29 Markierungswerten entsprechen, die den Befehlen von der NP-Markierungslogik 1120 aus 10 zugeordnet sind. Das Datenverfügbarkeitsregister 1125 aus 12 kann verwendet werden, um anzuzeigen, welche Datenpakete empfangen sind, während der Zeiger 1101 auf die nächste AGP-Antwortposition in dem Datenpuffer 1100 zeigt. Zur Veranschaulichung sei angenommen, dass Datenpakete mit dem Markierungswerten 1 und 27 empfangen werden. Die Datenpakete werden in den Positionen mit den Nummern 0, 1 und 27 innerhalb des Datenpuffers 1100 gespeichert. Folglich werden Bit-Nummern 1 und 27 des Datenverfügbarkeitsregisters 1135 gesetzt, wodurch angegeben wird, dass Daten verfügbar sind, während der Zeiger 1101 auf die Position zeigt, die dem Markierungswert 0 entspricht, d. h. die nächsten zu sendenden AGP-Daten. Obwohl beachtet werden sollte, dass in anderen Ausführungsformen das Datenverfügbarkeitsregister 1135 angibt, dass die Daten verfügbar sind, wenn die Bis zurückgesetzt sind. Folglich werden jedes Mal, wenn eine AGP-Antwort in Abwärtsrichtung empfangen wird, die entsprechenden Daten in dem Datenpuffer 1100 gespeichert, und das Datenverfügbarkeitsregister 1135 wird aktualisiert, um wiederzugeben, welche Datenpakete innerhalb des Datenpuffers 1100 gespeichert sind. Der Vorgang des Mechanismus aus 12 wird detaillierter in Verbindung mit 13 beschrieben.
  • 13 ist ein Flussdiagramm, das die Arbeitsweise einer Ausführungsform eines Transaktionsumordnungsmechanismus für Graphikantworten zeigt. Es sei auf die 10, 12 und 13 verwiesen, wobei der Ablauf im Schritt 1300 aus 13 beginnt. Im Schritt 1300 wird bei der Systeminitialisierung der Zeiger 1101 der 12 mit einem vorbestimmten Wert, etwa beispielsweise 0, initialisiert. In Verbindung mit der Initialisierung des Zeigers 1101 wird auch die NP-Markierungslogik 1120 aus 10 mit dem gleichen vorbestimmten Wert initialisiert, wodurch die Markierungslogik und der Zeiger synchronisiert werden. Somit zeigt der Zeiger 1101 aus 12 nunmehr auf die nächste Position in dem Datenpuffer 1100, aus der Daten ausgelesen werden. Folglich wird nach der Initialisierung die erste AGP-Antwort, die zu der Busschnittstellenschaltung 1080 gesendet wird, einen Markierungswert von Null aufweisen. Zu beachten ist, dass obwohl der Initialisierungswert, der in der vorliegenden Ausführungsform verwendet wird, Null ist, in anderen Ausführungsformen andere geeignete Initialisierungswerte verwendet werden können.
  • Im Schritt 1310 aus 13 werden AGP-Antwortbefehle von dem Abwärtsrichtungsabschnitt 1010 aus 10 empfangen und als AGP-Antworten durch ein oder mehrere kennzeichnende Bits in einem Befehlskopf, der mit der Antwort verknüpft ist, erkannt. Im Schritt 1320 aus 13 wird der Datenbereich der Antwort in einer Stelle des Datenpuffers 1100 aus 12 gespeichert, die dem Markierungswert der Antwort entspricht. Ferner wird das entsprechende Bit in dem Datenverfügbarkeitsregister 1135 gesetzt, so dass das Vorhandensein von Daten in dieser Speicherstelle in dem Datenpuffer 1100 angezeigt wird. Zu beachten ist, dass in anderen Ausführungsformen das entsprechende Bit in den Datenverfügbarkeitsregister 1125 zurückgesetzt werden kann, um die Anwesenheit von Daten anzugeben. Im Schritt 1330 aus 13 wird, da der Zeiger 1101 aus 12 auf die Position in dem Datenpuffer 1100 zeigt, aus dem die nächsten AGP-Antwortdaten ausgelesen werden, eine Indikation des Markierungswertes des neu empfangenen Datensegments an den Zeiger 1101 zugeleitet und mit einer Indikation von dem Datenverfügbarkeitsregister 1135 dahingehend verglichen, ob die Daten mit diesem Markierungswert verfügbar sind. Wenn keine derartige Übereinstimmung erkannt wird, wird der Befehlsanteil der Antwort verworfen und der Ablauf geht zurück zum Schritt 1310 aus 13. Es sei nun wieder auf Schritt 1330 verwiesen; wenn es eine Übereinstimmung gibt, dann geht der Ablauf zum Schritt 1314 weiter, in welchem die Daten, die in der Stelle gespeichert sind, auf die von dem Zeiger 1101 aus 12 gezeigt wird, aus dem Datenpuffer 1100 ausgelesen werden, und der Zeiger 1101 wird erhöht. Im Schritt 1350 aus 13 wird ein Buszyklus durch die Busschnittstellenschaltung 1080 aus 12 initiiert, wodurch die Antwortdaten zu der anfordernden Einrichtung gesendet werden.
  • Im Schritt 1360 aus 13 wird, da der Zeiger 1101 aus 12 erhöht wurde und nunmehr auf die Stelle in dem Datenpuffer 1100 zeigt, aus der die nächsten AGP-Antwortdaten ausgelesen werden können, eine entsprechende Markierungsindikation bereitgestellt und mit einer Indikation aus dem Datenverfügbarkeitsregister 1135 dahingehend verglichen, ob die Daten mit diesem Markierungswert verfügbar sind. Wenn es eine Übereinstimmung gibt, dann geht der Ablauf zurück zum Schritt 1340 aus 13, in welchem Daten aus dem Datenpuffer 1100 aus 12 ausgelesen werden, und der Zeiger 1101 wird erhöht. Wiederum wird im Schritt 1350 aus 13 ein Buszyklus durch die Busschnittstellenschaltung 1080 aus 12 initiiert, wodurch die nächsten Antwortdaten zu der anfordernden Einrichtung gesendet werden. Es sei wieder auf den Schritt 1360 aus 13 verwiesen; wenn es keine Übereinstimmung gibt, die angibt, dass die nächsten Daten nicht verfügbar sind, geht der Ablauf zurück zum Schritt 1310, um auf weitere AGP-Antworten zu warten.
  • Dieser Prozess kann für jede empfangene AGP-Antwort fortgesetzt werden. Wenn daher AGP-Antworten empfangen werden, und wenn die AGP-Antworten in einer anderen Reihenfolge empfangen werden, als sie ursprünglich angefordert wurden, kann jeder der nicht in der Reihenfolge vorliegenden Antwortbefehle verworfen werden und die Daten können gespeichert werden, um auf die AGP-Antwort zu warten, die in der richtigen Reihenfolge ist.
  • Diverse Variationen und Modifizierungen werden beim Studium der vorliegenden Anmeldung für den Fachmann offenkundig. Es ist daher beabsichtigt, dass folgenden Patentansprüche alle derartigen Variationen und Modifizierungen umfassen.
  • Industrielle Anwendbarkeit
  • Diese Erfindung ist im Allgemeinen auf Computersystemausgabe/eingabeeinrichtungen anwendbar.

Claims (10)

  1. Periphere Schnittstellenschaltung für einen Eingangs/Ausgangs-Knoten eines Computersystems, wobei die periphere Schnittstellenschaltung umfasst: eine erste Pufferschaltung (390), die angeschlossen ist, um Paketbefehle von einer Quelle zu empfangen, wobei jeder der Paketbefehle eine Teilmenge einer Information enthält, die in einer entsprechenden an der Quelle empfangenen Transaktion enthalten ist; wobei die erste Pufferschaltung mehrere erste Puffer aufweist, die jeweils einem entsprechenden virtuellen Kanal mehrerer virtueller Kanäle entsprechen und zur Speicherung ausgewählter Paketbefehle vorgesehen sind, die zu den entsprechenden virtuellen Kanal gehören, wobei jeder der mehreren virtuellen Kanäle einem entsprechenden Transaktionstyp entspricht; eine Busschnittstellenschaltung (490), die mit der ersten Pufferschaltung verbunden ist, wobei die Busschnittstellenschaltung ausgebildet ist, die in der ersten Pufferschaltung gespeicherten ausgewählten Paketbefehle in Befehle zu übersetzen, die zur Übertragung auf einem peripheren Bus (560) geeignet sind, und die Befehle, die zur Übertragung auf einem peripheren Bus geeignet sind, in Paketbefehle zu übersetzen; eine zweite Pufferschaltung (530), die angeschlossen ist, um die Paketbefehle von der Busschnittstellenschaltung zu empfangen, wobei die zweite Pufferschaltung mehrere zweite Puffer enthält, wovon jeder einem entsprechenden virtuellen Kanal der mehreren virtuellen Kanäle entspricht und zur Speicherung ausgewählter Paketbefehle dient, die zu dem entsprechenden virtuellen Kanal gehören.
  2. Periphere Schnittstellenschaltung nach Anspruch 1, die ferner eine Steuerlogikeinheit (460) umfasst, die mit der ersten Pufferschaltung und der zweiten Pufferschaltung verbunden und ausgebildet ist, das Übertragen der Paketbefehle zu und von der Busschnittstellenschaltung zu steuern.
  3. Periphere Schnittstellenschaltung nach Anspruch 2, die ferner eine Markierungslogikeinheit (490) umfasst, die mit der ersten Pufferschaltung verbunden und ausgebildet ist, die Paketbefehle zu empfangen und einen Markierungswert für jeden der Paketbefehle zu erzeugen, wobei der Markierungswert der Reihenfolge des Empfangs jedes der Paketbefehle in Relation zu anderen Paketbefehlen entspricht.
  4. Periphere Schnittstellenschaltung nach Anspruch 3, wobei die Markierungslogikeinheit ferner ausgebildet ist, den Markierungswert an jeden der Paketbefehle anzuhängen, bevor jeder der Paketbefehle in der ersten Pufferschaltung gespeichert wird.
  5. Periphere Schnittstellenschaltung nach Anspruch 4, die ferner eine Verteilungslogikeinheit (410) umfasst, die mit der ersten Pufferschaltung verbunden und ausgebildet ist, die Paketbefehle, die in den mehreren ersten Puffern gespeichert sind, abhängig von dem Markierungswert jedes der Paketbefehle zu verteilen.
  6. Periphere Schnittstellenschaltung nach Anspruch 5, die ferner eine erste Datenpufferschaltung (400) umfasst, die angeschlossen ist, um Paketdaten von der ersten Quelle zu empfangen, wobei die erste Datenpufferschaltung ausgebildet ist, Daten mit einer Taktrate des Eingangs/Ausgangs-Knotens zu empfangen, und wobei Daten von der ersten Datenpufferschaltung mit einer Taktrate des peripheren Busses abgerufen werden.
  7. Periphere Schnittstellenschaltung nach Anspruch 6, die ferner eine zweite Datenpufferschaltung (550) umfasst, die angeschlossen ist, Paketdaten von der Busschnittstellenschaltung zu empfangen, wobei die zweite Datenpufferschaltung ausgebildet ist, Daten mit einer Taktrate des peripheren Busses zu empfangen und wobei die Daten von der zweiten Datenpufferschaltung mit einer Taktrate des Eingangs/Ausgangs-Knotens abgerufen werden.
  8. Periphere Schnittstellenschaltung nach Anspruch 7, die ferner eine Steuerbefehlgeneratoreinheit (520) umfasst, die mit der zweiten Pufferschaltung verbunden und ausgebildet ist, einen Steuerbefehl für jeden der Paketbefehle, die von der Busschnittstellenschaltung empfangen werden, zu erzeugen, wobei jeder der Steuerbefehle eine Teilmenge jedes entsprechenden Paketbefehls enthält.
  9. Eingangs/Ausgangs-Knoten eines Computersystems mit: einer ersten Sender/Empfänger-Schaltung (110), die ausgebildet ist, einen ersten Paketbefehl über einen ersten Kommunikationsweg zu empfangen; einer zweiten Sender/Empfänger-Schaltung (120), die ausgebildet ist, einen zweiten Paketbefehl über einen zweiten Kommunikationsweg zu empfangen; und einer oder mehreren peripheren Schnittstellenschaltungen (150, 350) nach einem der vorhergehenden Ansprüche.
  10. Computersystem mit: einem oder mehreren Prozessoren (10A bis D); einem oder mehreren Eingangs/Ausgangs-Knoten (20, 30, 40) nach Anspruch 9, die miteinander und zu dem einen oder mehreren Prozessoren über einen Punkt-zu-Punkt-Paketbus (50A bis C) verbunden sind.
DE60211006T 2001-10-15 2002-08-22 Peripherieschnittstellenschaltung für einen e/a-knoten eines computersystems Expired - Lifetime DE60211006T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US97853401A 2001-10-15 2001-10-15
US978534 2001-10-15
US93146 2002-03-07
US10/093,146 US6725297B1 (en) 2001-10-15 2002-03-07 Peripheral interface circuit for an I/O node of a computer system
PCT/US2002/026884 WO2003034240A1 (en) 2001-10-15 2002-08-22 A peripheral interface circuit for an i/o node of a computer system

Publications (2)

Publication Number Publication Date
DE60211006D1 DE60211006D1 (de) 2006-06-01
DE60211006T2 true DE60211006T2 (de) 2006-11-30

Family

ID=26787193

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60211006T Expired - Lifetime DE60211006T2 (de) 2001-10-15 2002-08-22 Peripherieschnittstellenschaltung für einen e/a-knoten eines computersystems

Country Status (6)

Country Link
EP (1) EP1436709B1 (de)
JP (1) JP4391820B2 (de)
CN (1) CN100524264C (de)
DE (1) DE60211006T2 (de)
TW (1) TWI225989B (de)
WO (1) WO2003034240A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839784B1 (en) * 2001-10-15 2005-01-04 Advanced Micro Devices, Inc. Control unit of an I/O node for a computer system including a plurality of scheduler units each including a plurality of buffers each corresponding to a respective virtual channel
WO2004081805A1 (en) * 2003-03-10 2004-09-23 Uhs Systems Pty Ltd A dedicated communications system and interface
US7881303B2 (en) * 2006-12-13 2011-02-01 GlobalFoundries, Inc. Command packet packing to mitigate CRC overhead
JP5125885B2 (ja) * 2008-08-26 2013-01-23 セイコーエプソン株式会社 データ入出力装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5187780A (en) * 1989-04-07 1993-02-16 Digital Equipment Corporation Dual-path computer interconnect system with zone manager for packet memory
US5983291A (en) * 1996-09-24 1999-11-09 Cirrus Logic, Inc. System for storing each of streams of data bits corresponding from a separator thereby allowing an input port accommodating plurality of data frame sub-functions concurrently

Also Published As

Publication number Publication date
EP1436709B1 (de) 2006-04-26
TWI225989B (en) 2005-01-01
CN1639698A (zh) 2005-07-13
JP2005505856A (ja) 2005-02-24
WO2003034240A1 (en) 2003-04-24
DE60211006D1 (de) 2006-06-01
CN100524264C (zh) 2009-08-05
EP1436709A1 (de) 2004-07-14
JP4391820B2 (ja) 2009-12-24

Similar Documents

Publication Publication Date Title
DE112020002496T5 (de) System und verfahren zur erleichterung eines effizienten host-speicherzugriffs von einer netzwerkschnittstellensteuerung (nic)
EP0179936B1 (de) Verfahren und Einrichtung zur Steuerung einer Sammelleitung
DE69628512T2 (de) Kompakter, anpassbarer Uberbrückungs-/Leitweglenkungsvermittlungsschalter
DE60204061T2 (de) Verfahren und System zur Informationsübertragung über Mobilkommunikationsnetze
DE69233194T2 (de) Verfahren und vorrichtung für simultane paketbus.
DE69034133T2 (de) Kommunikationsgerät
DE3438410C2 (de)
DE3114816A1 (de) Schaltungsanordnung fuer eine datenverarbeitende anlage mit mehreren unterschiedlichen einheiten und einer prioritaetssteuerung
DE19531749A1 (de) Verkehrsgestaltungseinrichtung und Paket-Kommunikationsgerät
DE102014108457B3 (de) Netzwerkverteiler
DE60204794T2 (de) Mechanismus zur kennzeichnung und arbitrierung in einem eingabe/ausgabe knoten eines rechnersystems
DE102017219665A1 (de) Verfahren zum Bilden und zum Koordinieren von mindestens einem Fahrzeugverbund
DE112015006192T5 (de) Kommunikationsvorrichtung, Kommunikationsverfahren und Programm
DE69534171T2 (de) Verfahren und Vorrichtung für verbesserten Durchfluss in einem Vielfachknoten-Kommunikationssystem mit einem gemeinsamen Betriebsmittel
DE69636993T2 (de) Informationsverarbeitungssystem und Kommunikationsverfahren
DE102011122646B4 (de) Nachrichtenverlustverhinderung durch Verwendung von Sender- und Empfängerpuffern in durch ein Ereignis ausgelösten verteilten eingebetteten Echtzeitsystemen
DE60226167T2 (de) Computersystem-e/a-knoten
DE102018001574A1 (de) Master-Slave Bussystem und Verfahren zum Betrieb eines Bussystems
DE60211006T2 (de) Peripherieschnittstellenschaltung für einen e/a-knoten eines computersystems
DE102020111039A1 (de) Geräteunterstützung bestellte und unbestellte transaktionsklassen
EP1370952B1 (de) Kommunikationsverfahren zur realisierung von ereigniskanälen in einem zeitgesteuerten kommunikationssystem
DE60313746T2 (de) Verfahren zur netzwerkkommunikation mit einer chipkarte die asynchrone meldungen benutzt
DE60036121T2 (de) Hochgeschwindigkeitsverbindung für eingebettete Systeme in einem Rechnernetzwerk
BE1025127B1 (de) Kommunikationssystem zur seriellen Kommunikation zwischen Kommunikationsgeräten
DE102019125545B3 (de) Datenübertragungsverfahren, segment-telegramm und automatisierungskommunikationsnetzwerk

Legal Events

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

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8328 Change in the person/name/address of the agent

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