DE69413740T2 - Arbitrierungsverfahren zur Datenflusssteuerung durch ein E/A-Steuergerät - Google Patents

Arbitrierungsverfahren zur Datenflusssteuerung durch ein E/A-Steuergerät

Info

Publication number
DE69413740T2
DE69413740T2 DE69413740T DE69413740T DE69413740T2 DE 69413740 T2 DE69413740 T2 DE 69413740T2 DE 69413740 T DE69413740 T DE 69413740T DE 69413740 T DE69413740 T DE 69413740T DE 69413740 T2 DE69413740 T2 DE 69413740T2
Authority
DE
Germany
Prior art keywords
data
controller
shared resource
receive
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 - Fee Related
Application number
DE69413740T
Other languages
English (en)
Other versions
DE69413740D1 (de
Inventor
Gady Jerusalem Daniely
Kadangode K. Maynard Massachusetts 01754 Kamakrishnan
Aviad Jerusalem Wertheimer
Henry S. Andover Massachusetts 01581 Yang
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Application granted granted Critical
Publication of DE69413740D1 publication Critical patent/DE69413740D1/de
Publication of DE69413740T2 publication Critical patent/DE69413740T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/30Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal with priority control
    • 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/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Small-Scale Networks (AREA)
  • Bus Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

    GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft allgemein die Übertragung von Daten durch eine I/O-Steuerung eines Computersystems, und insbesondere einen Zuteilungsprozeß zum Zugreifen auf ein gemeinsam genutztes Betriebsmittel des Computers, um einen bidirektionalen Datenfluß durch die I/O-Steuerung zu ermöglichen.
  • HINTERGRUND DER ERFINDUNG
  • Eine I/O-Steuerung, wie beispielsweise eine Festplattensteuerung oder eine Netzwerksteuerung, bewegt typischerweise Daten zwischen einem Festplatten-Untersystem oder einem Netzwerk-Untersystem und anderen Einheiten eines Computersystems. Wenn hereinkommende Daten vom Untersystem empfangen werden, überträgt die Steuerung typischerweise die Daten zu einer Hauptspeichereinheit, um auf eine weitere Verarbeitung zu warten. Die Speichereinheit kann mit einem Systembus verbunden sein, der durch andere Einheiten des daran angeschlossenen Computers gemeinsam genutzt wird. Abgehende Daten, die von der Speichereinheit wiedergewonnen werden, werden nachfolgend durch die Steuerung zum Untersystem übertragen. Eine DMA-Funktion, die bei der Steuerung vorgesehen ist, leitet die Bewegung der Daten durch die Steuerung. Innerhalb der DMA- Funktion gibt es typischerweise eine Gruppe von Datenpfaden und eine Steuerfunktion, wobei die letztere oft durch eine Zustandsmaschine implementiert ist. Die Datenpfade und die Zustandsmaschine werden auch von den ankommenden und abgehenden Datenübertragungen gemeinsam genutzt. Folglich können der Hauptspeicher, der Systembus und die DMA-Funktion als gemeinsam genutzte Betriebsmittel betrachtet werden, die eine Zuteilung erfordern, um einen Zugriff zu erlangen, um Datenübertragungen in unterschiedlichen Richtungen zu bewirken.
  • Die Steuerung ist typischerweise für eine Halbduplex-Kommunikation mit dem Untersystem aufgebaut, d. h. sie kann zu einer gegebenen Zeit Daten entweder senden oder empfangen, aber nicht gleichzeitig. Jedoch kann die Steuerung für eine Vollduplex-Kommunikation aufgebaut sein, um gleichzeitig abgehende Daten und ankommende Daten zu empfangen. Für jeden Kommunikationstyp muß die Steuerung "Blöcke" von Daten zum und vom Untersystem senden und empfangen können. Ein Block von Daten kann eine feste Gruppe von Daten für die Festplatte oder ein festes Paket von Daten für das Netzwerk darstellen.
  • Vom Untersystem empfangene ankommende Daten werden mit Direktspeicherzugriffs-(DMA)-Übertragungen auf dem Bus durch die Steuerung und auf den Systembus bewegt. Eine DMA-Übertragung enthält typischerweise (1) eine Anfrage für einen Zugriff auf ein gemeinsam genutztes Betriebsmittel, der eine darauffolgende Zugriffsgewährung folgt, und (ii) einen "Burst" von Daten einer vorbestimmten Größe. Weil es beim Durchführen von Operationen mit anderen Einheiten des Computersystems besetzt sein kann, ist das gemeinsam genutzte Betriebsmittel nicht immer sofort zur Anwendung verfügbar. Die Zeit zwischen einer Ausgabe einer Anfrage zum Zugreifen auf das gemeinsam genutzte Betriebsmittel und einer Gewährung des Zugriffs zu jedem Betriebsmittel bildet eine "Latenzzeit" des Betriebsmittels. Typischerweise variiert diese Latenzzeit von System zu System in Abhängigkeit von den charakteristischen Eigenschaften des Betriebsmittels, z. B. dem Durchsatz des Systembusses und der Anzahl von mit dem Bus verbundenen Einheiten.
  • Eine bekannte Lösung für das Problem einer variablen Latenzzeit besteht im Vorsehen eines Pufferspeichers in der Steuerung, d. h. zwischen dem Untersystem und dem Systembus. Aufgrund der Kosten und der Entwurfsbeschränkungen ist die Größe des Pufferspeichers typischerweise klein. Beispielsweise kann dann, wenn eine Ethernet-Steuerung in einem Einzelchip implementiert ist, die Größe des Pufferspeichers zwischen 48-256 Bytes sein. Der Puffer kann damit fortfahren, Daten vom Untersystem zu empfangen, wenn noch kein Zugriff auf das gemeinsam genutzte Betriebsmittel gewährt worden ist. Wenn darauffolgend ein Zugriff zum Betriebsmittel gewährt wird, kann die Steuerung dann einen Burst von Daten vom Puffer übertragen. Es gibt natürlich die Möglichkeit eines Pufferüberlaufzustands, wenn ein Zugriff zum gemeinsam genutzten Betriebsmittel für ein Intervall nicht gewährt wird, das lang genug ist, daß der Puffer vollständig gefüllt wird.
  • Ein ähnliches Problem zeigt sich während einer Übertragung von abgehenden Daten zum Untersystem. Wenn einmal ein Zugriff zum Untersystem gewährt ist, muß ein Block von Daten, z. B. ein Paket, mit einer vorbestimmten Rate bzw. Geschwindigkeit zum Festplatten-Untersystem oder zum Netzwerk-Untersystem übertragen werden. Ein weiterer Pufferspeicher im Sendepfad der Steuerung speichert wenigstens eine begrenzte Menge von Daten, so daß ein stetiger Strom abgehender Daten weitermachen kann, wenn kein Zugriff zum gemeinsam genutzten Betriebsmittel gewährt worden ist. In diesem Fall gibt es die Möglichkeit eines Pufferunterlaufs, wenn der Puffer durch die Notwendigkeit vollständig geleert ist, Daten für die Dauer des Datenblocks mit einer festen Geschwindigkeit zu senden und auf das gemeinsam genutzte Betriebsmittel nicht zugegriffen werden kann.
  • Eine herkömmliche einfache Taktik zum Managen dieser Puffer stellt einen Empfang von Daten von den Untersystemen auf Kosten von Datensendungen zu ihnen sicher. Anders ausgedrückt wird dann, wenn gerade eine Empfangsoperation durchgeführt wird, eine Priorität zum Beenden jener Operation zugeteilt, d. h. dem Empfang eines vollständigen Blocks von Daten bei der Steuerung, bevor möglichen Sendeoperationen irgendeine Beachtung geschenkt wird. Darüber hinaus kann dann, wenn ein weiterer ankommender Block erkannt wird, bevor die Sendeoperation beginnt, die letztere Operation abgebrochen werden. Die Empfangsoperationen können somit die Steuerung vollständig monopolisieren, und Sendeoperationen können für unbestimmte Zeit verzögert werden, was in einem "Verhungern bzw. Verkümmern des Sendens" resultiert.
  • Eine weitere herkömmliche Technik wechselt lediglich zwischen Sende- und Empfangsoperationen, ohne die Statuszustände des gemeinsam genutzten Betriebsmittels und der Puffer zu berücksichtigen. Beispielsweise kann ein Senden zu einem Untersystem selbst dann initiiert werden, wenn auf das gemeinsam genutzte Betriebsmittel nicht zugegriffen werden kann und es eine nicht ausreichende Menge von Daten gibt, die im Puffer gespeichert sind, um Daten mit der erforderlichen stetigen Geschwindigkeit für die Dauer des Datenblocks zu senden. Die resultierende Pufferunterlaufsituation verschlechtert die Leistungsfähigkeit eines Sendens von Paketen, weil nur Fragmente des Pakets zum Untersystem gesendet werden können. Gleichermaßen kann ein Überlauf vom Puffer, der Daten vom Untersystem empfängt, häufiger sein, wenn eine einfache Wechseltaktik verwendet wird. Jede dieser Anordnungen zeigt den Nachteil, daß die Steuerung eine relativ lange Latenzzeit und einen niedrigen Durchsatz des gemeinsam genutzten Betriebsmittels verglichen mit der Datenübertragungsgeschwindigkeit der Steuerung nicht tolerieren kann. Folglich wird die Steuerung oder das System dazu entworfen, strenge Zeitanforderungen zum Zugreifen auf das Betriebsmittel zu erfüllen. Solche Beschränkungen erhöhen auch die Kosten und die Komplexität des Systems, während die Anzahl der Steuerungen begrenzt wird, die im System verwendet werden können.
  • Es ist daher offensichtlich, daß eine Notwendigkeit zum Ermöglichen eines effizienten Zugriffs auf das gemeinsam genutzte Betriebsmittel existiert, während die Puffer für eine Datenübertragung durch die Steuerung gemanagt werden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung in ihrer allgemeinen Form besteht in einem neuen Zuteilungsprozeß, wie er im Anspruch 1 angegeben ist. Die Erfindung besteht auch in einer Vorrichtung zum Zugreifen auf ein gemeinsam genutztes Betriebsmittel, wie beispielsweise einen Systembus, wie es allgemein im Anspruch 7 angegeben ist. Hierin nachfolgend ist ein Zuteilungsprozeß zum Zugreifen auf ein gemeinsam genutztes Betriebsmittel, wie beispielsweise einen Systembus, beschrieben, um einen bidirektionalen Datenfluß durch eine I/O-Steuerung zu ermöglichen, die mit einem Untersystem verbunden ist, wie beispielsweise einem lokalen Netzwerk, und eine mit dem Systembus verbundene Hauptspeichereinheit. Die Steuerung enthält eine Empfangs-Zustandsmaschine zum Managen ankommender Daten vom Netzwerk und eine Sende-Zustandsmaschine zum Managen abgehender Daten vom Hauptspeicher. Ein Zuteiler der Steuerung implementiert den Zuteilungsprozeß beim Gewähren eines Zugriffs der jeweiligen Zustandsmaschine zum Systembus.
  • Die Empfangs-Zustandsmaschine managt ein ankommendes Paket von Daten vom Netzwerk durch temporäres Speichern der Daten in einem Empfangspuffer. Wenn einmal ein Zugriff zum Systembus erhalten worden ist, werden die ankommenden Daten als eine Folge einzelner Bursts über den Systembus zum Hauptspeicher übertragen. Abgehende Datenbursts vom Hauptspeicher werden temporär im Sendepuffer gespeichert und darauffolgend als Paket auf das Netzwerk gesendet.
  • Der Zuteilungsprozeß ordnet jeder der Zustandsmaschinen eine Priorität für einen Zugriff auf den Systembus in Abhängigkeit von bestimmten Statusbedingungen zu, d. h. Anfragen der Steuerung. Diese Anordnung stellt sicher, daß die Zustandsmaschinen den Systembus auf eine effiziente Weise gemeinsam nutzen, um ihre jeweiligen Funktionen zum Initiieren eines ankommenden Datenbursts durchzuführen, d. h. eine Übertragung auf dem Systembus zum Hauptspeicher, wenn ein Paket vom Netzwerk empfangen wird, und zum Initiieren einer abgehenden Datenübertragung vom Speicher, wenn ein Paket zum Netzwerk gesendet wird. Die Statusanfragen enthalten folgendes: (i) ob eine oder beide der Zustandsmaschinen um einen Zugriff auf den Systembus streiten; (ii) ob die Steuerung für eine Vollduplex- oder eine Halbduplex-Kommunikation über das Netzwerk aufgebaut ist; (iii) den aktuellen Zustand der Sende- und Empfangs-Netzwerkanschlüsse der Steuerung; und (iv) die aktuellen Zustände der Empfangs- und Sendepuffer.
  • Eine Zuteilung, wie sie hierin beschrieben ist, wird für jede Übertragung auf dem Systembus durchgeführt. Zusätzlich ordnet dann, wenn zwei Pakete aufeinanderfolgend vom Netzwerk durch die Steuerung empfangen werden (oder zu ihm gesendet werden), der Zuteilungsprozeß gemäß der Erfindung die Priorität der Sende-Zustandsmaschine (oder der Empfangs-Zustandsmaschine) zum Zugreifen auf den Systembus für eine Übertragung zu, die zwischen den aufeinanderfolgen den Paketen liegt. Es sollte beachtet werden, daß die Menge an Daten, die während einer Übertragung auf dem Systembus transportiert werden, z. B. 64 Bytes, viel geringer als die Menge an Daten ist, die in einem Paket auf dem Netzwerk transportiert werden, z. B. 1500 Bytes. Diese Anordnung erhöht die Effizienz des Datenflusses durch die Steuerung durch Minimieren von sowohl einem Überlauf des Empfangspuffers während einer Empfangsoperation als auch einem Unterlauf des Sendepuffers während einer Sendeoperation, während ein Verkümmern eines Sendens verhindert wird.
  • Insbesondere dann, wenn entweder die Sende-Zustandsmaschine oder die Empfangs-Zustandsmaschine nach einem Zugriff auf den Systembus fragt, wird der anfragenden Zustandsmaschine ein Zugriff auf den Bus gewährt. Wenn die Empfangs- und die Sende-Zustandsmaschine beide um einen Zugriff auf den Systembus streiten, bestimmt der Kommunikationsmode, d. h. Halbduplex oder Vollduplex, welche Handlung durchgeführt wird.
  • Für Halbduplex-Kommunikationen wird dann, wenn nicht gerade ein Senden am Netzwerkanschluß durchgeführt wird, eine Priorität zur Empfangs-Zustandsmaschine zum Initiieren von ankommenden Datenübertragungen vom Empfangspuffer zum Hauptspeicher zugeteilt. Wenn gerade ein Senden am Netzwerkanschluß durchgeführt wird, dann führen die Zustandsmaschinen eine Zuteilung des Systembusses basierend auf dem aktuellen Besetztzustand der Sende- und Empfangspuffer durch.
  • Für Vollduplex-Kommunikationen wird dann, wenn gerade nur ein Senden durchgeführt wird, eine Priorität zur Sende-Zustandsmaschine zum Zuführen von Ausgangsdaten vom Hauptspeicher zum Sendepuffer zugeteilt. Wenn gerade nur ein Empfangen durchgeführt wird, wird eine Priorität zum Übertragen ankommender Daten vom Empfangspuffer zugeteilt. Wenn gerade weder ein Senden noch ein Empfangen am Netzwerk durchgeführt wird, und es gibt dennoch ausreichende Daten im Empfangspuffer, die in den Hauptspeicher zu bewegen sind, und es gibt Daten im Hauptspeicher, die in den Sendepuffer zu übertragen sind (und es gibt ausreichend Raum im Sendepuffer für diese späteren Daten), wird ein Zugriff zum Systembus wird durch eine "Round-Robin"-Zeitplanungstechnik bestimmt, die zwischen den Zustandsmaschinen in Abhängigkeit von der letzten Übertragung auf dem Systembus wechselt. Wenn Anfragen nach sowohl einem Senden zum als auch nach einem Empfangen vom Netzwerk anhängig sind, führen die Zustandsmaschinen eine Zuteilung zu dem System wiederum basierend auf dem aktuellen Besetztzustand ihrer jeweiligen Puffer durch.
  • Ein aktueller Besetztzustand der Sende- und Empfangspuffer enthält eine Bestimmung, ob vorbestimmte Besetztzustandskriterien für die jeweiligen Puffer erfüllt sind. Für den Empfangspuffer gibt es die Untersuchung, ob die Anzahl von leeren Datenbyte-Stellen größer als ein erster Schwellenpegel ist, und für den Sendepuffer beschäftigt sich die Untersuchung damit, ob die Menge an Daten, die im Sendepuffer sind, größer als ein zweiter Schwellenpegel ist. Wenn das Besetztzustandskriterien für einen dieser Puffer erfüllt ist und für den anderen nicht, wird der zum letzteren Puffer gehörenden Zustandsmaschine für sowohl den Halbduplex- als auch den Vollduplex-Kommunikationsmode eine Priorität zum Systembus gewährt bzw. zugeteilt. Für die übrigen Kombinationen wird der Sende-Zustandsmaschine eine Priorität zugeteilt, wenn die Steuerung für eine Halbduplex- Kommunikation aufgebaut ist und die Round-Robin-Zeitplanungstechnik für eine Vollduplex-Kommunikation gesendet wird.
  • Es ist zu beachten, daß das Zuteilungsverfahren und die Zuteilungsvorrichtung, wie sie hierin beschrieben sind, die Effizienz eines Datenflusses durch die Steuerung durch Minimieren eines Überlaufs des Empfangspuffers und eines Unterlaufs des Sendepuffers erhöht. Dies minimiert einen Paketverlust selbst unter Übergangsbedingungen einer relativ langen Systembus-Latenzzeit.
  • Die Zuteilungsanordnung minimiert auch die Wahrscheinlichkeit eines Verkümmerns eines Sendens unter einer schweren Belastung von Empfangs-Operationen vom Netzwerk, ohne die Latenzzeit zum Liefern eines empfangenen Pakets zum Hauptspeicher zu erhöhen.
  • Ein weiterer Vorteil besteht darin, daß ein System mit Steuerungen, die gemäß der Erfindung entworfen sind, viele derartige Steuerungen unterstützen kann, die mit einem Systembus gekoppelt sind. Der Systementwurf kann folglich in bezug auf eine Latenzzeit für einen Zugriff auf das gemeinsam genutzte Betriebsmittel entspannter sein.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ein detaillierteres Verstehen der Erfindung kann aus der folgenden Beschreibung der bevorzugten Ausführungsbeispiele erhalten werden, die anhand eines Beispiels angegeben und in Zusammenhang mit den beigefügten Zeichnungen zu verstehen sind, wobei:
  • Fig. 1 ein Blockdiagramm ist, das ein lokales Netzwerk darstellt, das durch eine I/O- Steuerung mit einem Systembus mit variabler Latenzzeit verbunden ist;
  • Fig. 2 ein Blockdiagramm der Steuerung der Fig. 1 ist; und
  • Fig. 3A-C Ablaufdiagramme sind, die den durch die Steuerung gemäß der Erfindung durchgeführten Zuteilungsprozeß detailliert zeigen.
  • DETAILLIERTE BESCHREIBUNG ILLUSTRATIVER AUSFÜHRUNGSBEISPIELE
  • Fig. 1 stellt ein Untersystem dar, wie beispielsweise ein fokales Netzwerk 12, das mit einem Knoten 13 verbunden ist, der eine I/O-Steuerung 20, einen Hauptspeicher 14, eine zentrale Verarbeitungseinheit (CPU) 16 und andere periphere Einheiten 18, wie beispielsweise Anschlußstellen, enthält, von denen alle durch einen Systembus 15 miteinander verbunden sind. Bei einem alternativen Ausführungsbeispiel der Erfindung, kann das Untersystem Massenspeichereinheiten verkörpern, wie beispielsweise ein Festplatten-Untersystem.
  • Für das Ausführungsbeispiel der Fig. 1 ist die Steuerung 20 durch einen bidirektionalen Pfad 17 mit dem Systembus 15 verbunden und ist mit dem Netzwerk-Untersystem 12 durch einen bidirektionalen Pfad 21 verbunden. Das Netzwerk-Untersystem verkörpert typischerweise eine Bus-Topologie zum Unterbringen einer Halbduplex-Datenkommunikation mit hoher Bandbreite unter Steuerungen anderer Knoten, die mit ihm verbunden sind. Jedoch kann die Steuerung 20 auch derart konfiguriert bzw. aufgebaut sein, daß sie eine Vollduplex-Kommunikation zwischen den mit dem Netzwerk gekoppelten Knoten zur Verfügung stellt.
  • Während einer Empfangsoperation werden Daten vom Netzwerk 12 in die Steuerung 20 übertragen, und werden möglicherweise zum Hauptspeicher 14 übertragen, um eine Verarbeitung abzuwarten. Eine Datenübertragung zwischen der Steuerung 20 und dem Hauptspeicher 14 wird gemäß einer Direktspeicherzugriffs- (DMA)-Übertragung auf dem Systembus 15 durchgeführt. Eine DMA-Übertragung enthält eine Anfrage nach einem Zugriff auf den Systembus, der eine darauffolgende Gewährung des Zugriffs folgt, und einen "Burst" von Daten einer vorbestimmten Größe. Während einer Sendeoperation werden aus dem Hauptspeicher 14 wiedergewonnene Daten von der Steuerung 20 zum Netzwerk 12 übertragen. Übertragungen von Daten zwischen dem Netzwerk 12 und der Steuerung 20 erfolgen mit einer festen Geschwindigkeit auf der Basis einzelner Pakete.
  • Im System der Fig. 1 und in den meisten typischen Systemen ist der Systembus 15 nicht immer sofort über einen Zugriff durch die Steuerung 20 verfügbar, um ein Lesen und ein Schreiben von Übertragungen im Hauptspeicher 14 durchzuführen. Der Bus 15 kann damit beschäftigt sein, andere Operationen durchzuführen, die andere Einheiten beteiligen, die mit ihm verbunden sind, oder eine andere Einheit kann gerade ein Lesen oder ein Schreiben einer Speicherübertragung durchführen. Folglich wird der Systembus 15 als gemeinsam genutztes Betriebsmittel des Systems angesehen (wie es der Hauptspeicher ist), und die Zeit dazwischen, wenn eine Anfrage zum Zugreifen auf den Systembus 15 ausgegeben wird und wenn ein Zugriff zum Bus gewährt wird, bildet eine "Latenzzeit" des Systembusses 15.
  • Zur Anpassung an die Bus-Latenzzeit enthält die in Fig. 2 gezeigte Steuerung 20 zwei FIFO-("First-In-First-Out")-Pufferspeicher. Vom Netzwerk 12 über eine Leitung 21 in die Steuerung 20 eintretende Daten laufen durch eine Netzwerk-Schnittstellenschaltung 22 und eine Empfangs-Zustandsmaschine 26 und dann in einen Empfangs-FIFO-Pufferspeicher ("Empfangspuffer 210") zur temporären Speicherung, bis die Steuerung einen Zugriff zum Systembus 15 erlangt, um eine Schreibübertragung im Speicher 14 durchzuführen. Danach laufen die Daten durch eine Systembus-Schnittstellenschaltung 24 und auf den Systembus 15 und werden zum Hauptspeicher 14 geschrieben. Zu sendende Daten werden vom Hauptspeicher 14 auf einen Zugriff zum Systembus durch die Steuerung 20 hin gelesen. Die abgehenden Daten laufen durch die Schnittstellenschaltung 24 und in einen Sende- FIFO-Pufferspeicher ("Sendepuffer 220"). Wenn die Steuerung einen Zugriff zum Netzwerk 12 erlangt, laufen die Daten durch eine Sende-Zustandsmaschine 28 und die Netzwerk-Schnittstellenschaltung 22 und auf das Netzwerk 12.
  • Die Netzwerk-Schnittstellenschaltung 22 kann eine herkömmliche Schnittstellenschaltung sein, die das Signal, die elektrischen und mechanischen Eigenschaften und Austauschschaltungen enthält, die zum Bilden einer Schnittstelle mit dem Netzwerk 12 nötig sind. Die Systembus-Schnittstellenschaltung 24 enthält die Datenpfadlogik und die physikalischen Verbindungen, die dazu nötig sind, sicherzustellen, daß der Knoten 13 die zeitlichen und elektrischen Eigenschaften erfüllt, die zum Kommunizieren auf dem Systembus 15 erforderlich sind.
  • Ein bidirektionaler Datenfluß durch die Steuerung 20 wird durch einen Zuteiler 25 gesteuert, der den Zustandsmaschinen einen Zugriff zum Systembus 15 gemäß einem nachfolgend beschriebenen Zuteilungsprozeß gewährt. Wie bei den Empfangs- und Sende-Zustandsmaschinen 26, 28 weist der Zuteiler 25 vorzugsweise Register und eine als sequentielle Logikschaltung konfigurierte Kombinationslogik auf. Die Zustandsmaschinen leiten den bidirektionalen Fluß von Daten zwischen dem Netzwerk und dem Systembus durch die Puffer der Steuerung.
  • Insbesondere initiiert die Sende-Zustandsmaschine eine Übertragung abgehender Datenbursts vom Hauptspeicher 14 mit einer Leseübertragung auf dem Systembus 15. Diese abgehenden Datenbursts werden temporär im Sendepuffer 220 gespeichert und darauffolgend auf das Netzwerk 12 gesendet. Die Empfangs-Zustandsmaschine managt ankommende Datenbursts vom Netzwerk und speichert die Daten temporär im Empfangspuffer 210. Ein Beispiel einer Funktion, die durch die Zustandsmaschinen durchgeführt wird, ist die Umwandlung eines seriellen Bitstroms von Daten zum/vom Netzwerk in Bytes nach/vor einem Speichern der Daten in den Puffern.
  • Auf ein Erfüllen eines vorbestimmten Schwellenpegels von im Empfangspuffer 210 empfangenen Daten hin und auf ein Erlangen eines Zugriffs zum Systembus 15 hin initiiert die Empfangs-Zustandsmaschine eine Übertragung eines Bursts von ankommenden Daten einer vorbestimmten Größe zum Hauptspeicher 14 als eine Schreibübertragung auf dem Systembus 15. Die Größe eines Bursts von Daten kann in Abhängigkeit von den Systembus-Eigenschaften variieren. Jedoch ist die Menge an Daten, die während eines Bursts auf dem Systembus übertragen werden, typischerweise viel kleiner als der Block von Daten, die, z. B. in einem Paket, auf dem Netzwerk übertragen werden. Wie es hierin beschrieben wird, müssen die Zustandsmaschinen einen Zugriff zum Systembus für jede Übertragung eines einzelnen Bursts von Daten auf dem Bus zuteilen.
  • Eine Aufgabe der Steuerung 20 besteht im Steuern eines bidirektionalen Datenflusses zwischen dem Systembus und dem Netzwerk auf eine derartige Weise, daß ein Verlust von Daten vermieden oder minimiert wird. Ein Datenverlust in einer Netzwerkumgebung ist nicht notwendigerweise fatal, und in der Tat wird ein gewisses Maß an Verlust trotz des Versuchs, jeden Verlust zu vermeiden, vorausgesetzt. Die meisten auf dem Netzwerk gesendeten Nachrichten erfordern eine Bestätigung, und eine Wiedergewinnung kann normalerweise durch Wiederholen der Nachricht bewirkt werden, bis sie ohne Fehler empfangen wird. Jedoch ist es wünschenswert, die Verwendung von System-Betriebsmitteln zu minimieren, die bei einer erneuten Sendung einer Nachricht beteiligt sind. Ein Paket von Daten wird zerstört, wenn der Sendepuffer 220 geleert wird, bevor die gesamte Nachricht vom Speicher 14 wiedergewonnen worden ist. Dies wird Unterlaufzustand genannt. Für einen Fluß in der Empfangsrichtung werden Daten dann verloren, wenn der Empfangspuffer 210 nicht schnell genug in den Hauptspeicher 14 geleert werden kann, um den ankommenden Fluß von Daten vom Netzwerk 12 unterzubringen. Dies wird Überlaufzustand genannt. Zum Aufrechterhalten von vom Netzwerk 12 empfangenen Daten führt die Steuerung 20 Schreibübertragungen zum Hauptspeicher 14 mit einer Geschwindigkeit durch, die durch die Latenzzeit des Systembusses, die Größe der Bursts von Daten, die in den Speicher geschrieben sind, wenn einmal ein Zugriff zum Bus gewährt worden ist, und durch die Datengeschwindigkeit des Netzwerkes 12 bestimmt wird.
  • Wie es hierin beschrieben ist, wird ein bidirektionaler Datenfluß durch den Zuteiler 25 gemäß einem Zuteilungsprozeß dynamisch gesteuert, der Sende- und Empfangs-Zustandsmaschinenanfragen zeitmäßig plant bzw. einteilt, so daß der kritischsten Anfrage ein Zugriff zum Systembus 15 gewährt wird. Den Anfragen werden in Abhängigkeit von bestimmten Zustandsbedingungen, d. h. Anforderungen, der Steuerung 20 unterschiedliche Prioritäten zugeordnet. Diese Anforderungen enthalten folgendes: (i) ob eine oder beide der Zustandsmaschinen um einen Zugriff auf den Systembus 15 streiten; (ii) ob die Steuerung für eine Vollduplex- oder eine Halbduplex-Kommunikation über das Netzwerk konfiguriert ist; (iii) den aktuellen Zustand der Sende- und Empfangs-Netzwerkanschlüsse; und (iv) den aktuellen Zustand der Empfangs- und Sendepuffer. Der Zuteiler 25 wird mit diesen Informationen über verschiedene Signale versorgt, die von den Zustandsmaschinen befördert werden. Diese Signale (die nachfolgend als aktiviert gezeigt sind), enthalten folgendes:
  • - Treq: eine Anfrage für den Systembus über eine Leitung 282 durch die Sende-Zustandsmaschine zum Senden von Daten;
  • - Rreq: eine Anfrage für den Systembus über eine Leitung 262 durch die Empfangs-Zustandsmaschine zum Empfangen von Daten;
  • - TxEN: eine Anzeige über eine Leitung 282, daß die Steuerung gegenwärtig Daten auf das Netzwerk sendet;
  • - RxEN: eine Anzeige über eine Leitung 262, daß die Steuerung gerade Daten vom Netzwerk empfängt;
  • - RxB> t1: eine Anzeige über eine Leitung 262, daß die Anzahl freier Byte- Stellen im Empfangspuffer größer als ein erster vorbestimmter Schwellenpegel ist; und
  • - TxB> t2: eine Anzeige über eine Leitung 282, daß die Menge an Daten im Sendepuffer größer als ein zweiter vorbestimmter Schwellenpegel ist.
  • Es sollte beachtet werden, daß die ersten und zweiten Schwellenpegel t1, t2 nicht denselben Wert haben müssen und in der Tat typischerweise unterschiedlich sind. Beispielsweise kann bei einem beispielhaften Ausführungsbeispiel der Erfindung t1 nahezu 170 Bytes sein, und t2 kann 72, 96, 128 oder 160 Bytes sein.
  • Der durch die Steuerung 20 gemäß der Erfindung verwendete Zuteilungsprozeß kann aus den Ablaufdiagrammen der Fig. 3A-3C besser verstanden werden. Gemäß Fig. 3A enthält der Zuteiler 25 ein Flag für "letztes Empfangen", das er als Einrichtung zum Bestimmen aktiviert oder deaktiviert, um zu ermitteln, welcher Zustandsmaschine zuletzt ein Zugriff zum Systembus gewährt wurde, um eine Übertragungsoperation zu initiieren. Auf eine Initialisierung der Steuerung hin wird das Flag für ein letztes Empfangen deaktiviert, und die Steuerung wird für einen spezifischen Mode einer Kommunikation konfiguriert, d. h. Vollduplex oder Halbduplex, über einen Hardware- oder Software-Schalter (Block 30). Der Zuteiler 25 bestimmt dann, ob die Sende-Zustandsmaschine nach einem Zugriff auf den Systembus 15 fragt (Block 32). Wenn es nicht so ist, wird die Empfangs- Zustandsmaschine untersucht, um zu sehen, ob sie nach einem Zugriff auf den Bus fragt (Block 34). Wenn die Empfangs-Zustandsmaschine eine Anfrage anhängig hat, wird ihr eine Priorität zum Zugreifen auf den Systembus für eine einzelne Übertragung auf den Bus gewährt, und das Flag für ein letztes Empfangen wird aktiviert (Block 36); danach wiederholt der Zuteiler die obige Untersuchung (Block 32). Wenn die Empfangs-Zustandsmaschine nicht nach dem Bus fragt, wiederholt der Zuteiler die obige Untersuchung (Block 32).
  • Wenn zu dieser Zeit die Sende-Zustandsmaschine nach einem Zugriff auf den Systembus fragt (Block 32), dann wird der Zustand der Empfangs-Zustandsmaschine untersucht (Block 40), und dann, wenn sie nicht nach dem Bus fragt, wird der Sende-Zustandsmaschine eine Priorität für die Übertragung eines Datenbursts auf dem Systembus gewährt, und das Flag für ein letztes Empfangen wird deaktiviert (Block 42); wiederum wiederholt der Zuteiler die obige Untersuchung (Block 32). Wenn beide Zustandsmaschinen um den Bus streiten, dann bestimmt der Kommunikationsmode, welche Handlung durchgeführt wird (Block 44).
  • Wenn die Steuerung für eine Halbduplex-Kommunikation konfiguriert ist (Fig. 3B), bestimmt der Zuteiler 25 zuerst, ob die Steuerung gerade Datenpakete zum Netzwerk sendet (Block 46). Wenn gerade kein Senden durchgeführt wird, bestimmt der Zuteiler, ob die empfangenen Daten für das Ende eines Empfangspakets sind (Block 47). Das "Ende-eines-Pakets" wird typischerweise durch einen Operation erfaßt, die z. B. Informationen zwischen der Steuerung und dem gemeinsam genutzten Betriebsmittel austauscht, was anzeigt, daß das Ende eines Pakets erreicht worden ist. Weil solche Operationen allgemein im Stand der Technik wohlbekannt sind, werden hierin keine Details einer spezifischen Operation zur Erfassung eines Endes-eines-Pakets beschrieben.
  • Wenn die empfangenen Daten nicht für das Ende eines Empfangs eines Pakets sind, wird eine Priorität zur Empfangs-Zustandsmaschine zum Übertragen ankommender Daten als Burst auf dem Systembus vom Empfangspuffer zugeteilt, und das Flag für ein letztes Empfangen wird aktiviert (Block 48). Wenn das Ende eines Empfangspakets erreicht worden ist, und zwar nach einer Beendigung der gegenwärtigen Empfangsanfrage, wird der Sende-Zustandsmaschine ein Zugriff auf den Bus für eine Übertragung gewährt, und das Flag für ein letztes Empfangen wird deaktiviert (Block 55). Es sollte beachtet werden, daß die Untersuchung auf ein Ende-eines-Pakets einmal für jedes Paket wahr ist, das vom Netzwerk empfangen (oder zu ihm gesendet) wird; wenn bei diesem Ereignis ein Rücksprung zum Block 32 erfolgt, wird der Sende-(oder der Empfangs-)Zustandsmaschine ein Zugriff zum Systembus für einen Burst von Daten während einer Busübertragung gewährt, die zwischen dem Empfang (dem Senden) aufeinanderfolgender Pakete liegt.
  • Wenn gerade ein Senden durchgeführt wird, dann Führen die Sende- und Empfangs-Zustandsmaschinen eine Zuteilung für den Systembus basierend auf dem aktuellen Besetztzustand der Sende- und Empfangspuffer durch (Block 50).
  • Genauer gesagt enthält ein aktueller Besetztzustand der Sende- und Empfangspuffer eine Bestimmung dessen, ob vorbestimmte Besetztzustandskriterien für die jeweiligen Puffer erfüllt sind. Für den Empfangspuffer erfolgt die Untersuchung, ob die Anzahl leerer Datenbyte-Stellen größer als der Schwellenpegel t1 ist (Block 52). Wenn dieses erste Kriterium nicht erfüllt ist, beschäftigt sich die nächste Untersuchung damit, ob die Menge an Daten, die im Sendepuffer sind, größer als der Schwellenpegel t2 ist (Block 54). Wenn dieses Kriterium erfüllt ist, dann wird der Empfangs-Zustandsmaschine eine Priorität zum Zugreifen auf den Systembus gewährt, und das Flag für ein letztes Empfangen wird aktiviert (Block 56). Ein Prioritätszugriff zum Systembus wird der Sende-Zustandsmaschine für alle übrigen Kombinationen der Besetztzustandskriterien zugeteilt, und das Empfangsflag wird deaktiviert (Block 55). Danach springt der Zuteiler zum Block 32 zurück.
  • Wenn die Steuerung für eine Vollduplex-Kommunikation konfiguriert ist (Fig. 3C), ist die erste durch den Zuteiler 25 durchgeführte Bestimmung wiederum, ob die Steuerung 20 gerade Datenpakete auf das Netzwerk 12 sendet (Block 58). Wenn gerade kein Senden durchgeführt wird, aber die Steuerung gerade Datenpakete vom Netzwerk empfängt (Block 60), untersucht der Zuteiler, ob das Ende eines Empfangspaketes erreicht worden ist (Block 62). Wenn es nicht erreicht worden ist, wird der Empfangs-Zustandsmaschine eine Priorität zum Zugreifen auf den Sy stembus für die nächste Übertragung auf dem Systembus gewährt, und das Flag für ein letztes Empfangen wird aktiviert (Block 64). Wenn das Ende eines Empfangspakets erreicht worden ist, und zwar nach einem Beenden der aktuellen Empfangsanfrage, wird der Sende-Zustandsmaschine ein Zugriff zum Bus gewährt, und das Flag für ein letztes Empfangen wird deaktiviert (Block 68).
  • Jedoch dann, wenn gerade kein Senden durchgeführt wird, und wenn die Empfangs-Zustandsmaschine gegenwärtig nicht freigegeben ist (Block 60), teilen die Zustandsmaschinen den Bus gemäß einer "Round-Robin"-Zeitplanungstechnik basierend auf dem Zustand des Flags für ein letztes Empfangen zu (Block 65), d. h. wenn das Flag für ein letztes Empfangen aktiviert ist, wird der Sende-Zustandsmaschine ein Zugriff zum Bus gewährt (Block 68), und wenn das Flag deaktiviert ist, wird der Empfangs-Zustandsmaschine eine Priorität zum Zugreifen auf den Bus gewährt (Block 64). Anders ausgedrückt weist die Round-Robin-Zeitplanung deshalb, weil es beim beispielhaften Ausführungsbeispiel, das hierin beschrieben ist, nur zwei Zustandsmaschinen gibt, die um den Systembus streiten, eine abwechselnde Priorität zwischen den Maschinen auf.
  • Wenn gerade ein Senden durchgeführt wird (Block 58) und die Steuerung nicht gerade Daten vom Netzwerk empfängt (Block 66), wird der Sende-Zustandsmaschine ein Prioritätszugriff zum Bus zugeteilt, um Ausgangsdaten zum Sendepuffer zuzuführen (Block 68), wenn das Ende eines Sendepakets nicht erreicht ist (Block 67); sonst wird der Empfangs-Zustandsmaschine nach einem Beenden der aktuellen Sendeanfrage eine Priorität zum Bus gewährt (Block 64). In jedem Fall wird das Flag für ein letztes Empfangen jeweils entweder deaktiviert oder aktiviert.
  • Wenn die Steuerung sowohl Daten zum Netzwerk sendet als auch Daten vom Netzwerk empfängt, sind die Zustandsmaschinen gerade bei einer Durchführung und teilen die Zustandsmaschinen den Systembus wiederum basierend auf dem aktuellen Besetztzustand der Sende- und Empfangspuffer zu (Block 70).
  • Insbesondere dann, wenn die Anzahl verfügbarer Datenbyte-Stellen im Empfangspuffer nicht größer als der Schwellenpegel t1 ist (Block 72) und die Menge an Daten, die im Sendepuffer sind, größer als der Schwellenpegel t2 ist (Block 74), bestimmt der Zuteiler 25, ob das Ende eines Empfangspakets erreicht worden ist (Block 62). Wenn es so ist, wird der Sende-Zustandsmaschine nach einer Beendigung der aktuellen Empfangsanfrage ein Zugriff zum Bus gewährt, und das Flag für ein letztes Empfangen wird deaktiviert (Block 68); wenn es nicht so ist, wird der Empfangs-Zustandsmaschine eine Priorität zum Zugreifen auf den Systembus gewährt, und das Flag für ein letztes Empfangen wird aktiviert (Block 64). Sonst, nämlich für irgendwelche der übrigen Besetztzustandskriterien-Kombinationen, führen die Sende- und Empfangs-Zustandsmaschinen ein Zuteilung gemäß einer Round-Robin-Zeitplanung basierend auf dem Zustand des Flags für ein letztes Empfangen durch (Block 65). Danach wird der Zuteilungsprozeß wiederholt (Rücksprung zum Block 32).
  • Die oben beschreiben Zuteilungsanordnung sorgt für eine dynamische Zeitplanung zwischen den Zustandsmaschinen für einen Prioritätszugriff auf ein gemeinsam genutztes Betriebsmittel, d. h. den mit dem Systembus gekoppelten Hauptspeicher, auf eine Weise, die einen Pufferüberlauf und -unterlauf minimiert, während ein Verkümmern eines Sendens verhindert wird. Zusätzlich kann der Zuteilungsprozeß mit einer Steuerung verwendet werden, die für entweder eine Halbduplex- oder eine Vollduplex-Operation auf einem lokalen Netzwerk konfiguriert ist.
  • Die vorangehende Beschreibung ist auf ein spezifisches Ausführungsbeispiel dieser Erfindung beschränkt worden. Es wird jedoch offensichtlich, daß Variationen und Modifikationen in bezug auf die Erfindung mit einem Erreichen einiger oder aller ihrer Vorteile durchgeführt werden können. Daher sollen alle derartigen Variationen und Modifikationen innerhalb des Schutzumfangs der beigefügten Ansprüche sein.

Claims (10)

1. In einem Computersystem ein Verfahren zum Managen eines bidirektionalen Datenflusses zwischen einem gemeinsam genutzten Betriebsmittel (15) und einem Untersystem durch eine I/O-Steuerung (20) mit einem Empfangspuffer (210) und einem Sendepuffer (220), wobei das Verfahren folgende Schritte aufweist:
Initiieren von entweder einer ankommenden Übertragung von Daten zum gemeinsam genutzten Betriebsmittel oder einer abgehenden Übertragung von Daten vom gemeinsam genutzten Betriebsmittel in Antwort auf Statusuntersuchungen der Steuerung, was folgendes aufweist:
(i) Bestimmen (32), ob Anfragen für entweder die ankommende Übertragung oder die abgehende Übertragung anhängig sind, und Initiieren der Übertragung der anhängigen Anfrage;
(ii) wenn jede der Anfragen anhängig ist, Bestimmen (40), ob entweder ein Senden oder ein Empfangen von Datenblöcken beim Untersystem anhängig ist, und Initiieren der ankommenden Übertragung; wenn das Senden nicht anhängig ist; und
(iii) wenn sowohl das Senden als auch das Empfangen anhängig ist, Bestimmen, ob Besetztkriterien für den Empfangspuffer und den Sendepuffer erfüllt sind, und dann, wenn die Besetztkriterien für den Empfangspuffer nicht erfüllt sind, aber für den Sendepuffer erfüllt sind, Initiieren (42) der ankommenden Übertragung, und dann, wenn die Besetztkriterien für den Empfangspuffer erfüllt sind, Initiieren (44) der abgehenden Übertragung,
wodurch das Verfahren die Effizienz eines Datenflusses durch die Steuerung durch Minimieren eines Überlaufens des Empfangspuffers und eines Unterlaufens des Sendepuffers und Verhindern eines Sendestaus erhöht.
2. Verfahren nach Anspruch 1, wobei die Statusuntersuchungen dann, wenn jede der Anfragen anhängig ist, weiterhin folgendes aufweisen:
Bestimmen (44), ob die Steuerung für entweder eine Vollduplex- oder eine Halbduplex-Kommunikation mit dem Untersystem konfiguriert ist.
3. Verfahren nach Anspruch 2, wobei die Statusuntersuchungen dann, wenn die Steuerung für eine Vollduplex-Kommunikation konfiguriert ist, weiterhin folgendes aufweisen:
Initiieren (58) entweder der ankommenden Übertragung oder der abgehenden Übertragung gemäß einer Round-Robin-Zeitplantechnik, wenn das Senden und das Empfangen nicht anhängig sind.
4. Verfahren zum Zugreifen auf ein gemeinsam genutztes Betriebsmittel eines Computers zum Ermöglichen eines bidirektionalen Datenflusses zwischen dem gemeinsam genutzten Betriebsmittel und einem Untersystem durch eine I/O-Steuerung, wobei die I/O-Steuerung einen Empfangspuffer und einen Sendepuffer enthält, wobei das Verfahren folgende Schritte aufweist:
Ausgeben entweder einer Empfangsanfrage zum Initiieren einer ankommenden Übertragung von Daten vom Empfangspuffer zum gemeinsam genutzten Betriebsmittel oder einer Sendeanfrage zum Initiieren einer abgehenden Übertragung von Daten vom gemeinsam genutzten Betriebsmittel zum Sendepuffer;
Zuordnen eines Prioritätszugriffs zum gemeinsam genutzten Betriebsmittel zu entweder der Empfangsanfrage oder der Sendeanfrage in Antwort auf eine Vielzahl von Statusuntersuchungen, die enthalten,
(i) ob die Sende- und Empfangsanfragen gegenwärtig anhängig sind;
(ii) ob die Steuerung entweder für eine Vollduplex- oder eine Halbduplex- Kommunikation mit dem Untersystem konfiguriert ist;
(iii) ob entweder ein Senden oder ein Empfangen von Daten beim Untersystem anhängig ist; und
(iv) ob vorbestimmte Besetztkriterien der Empfangs- und Sendepuffer erfüllt sind; und
Zugreifen auf das gemeinsam genutzte Betriebsmittel in Antwort auf die Statusuntersuchungen, um entweder den ankommenden Burst oder den abgehenden Burst bei dem gemeinsam genutzten Betriebsmittel zu initiieren.
5. Verfahren zum Zugreifen auf ein gemeinsam genutztes Betriebsmittel eines Computers zum Ermöglichen eines bidirektionalen Datenflusses durch eine Steuerung, die zwischen einem Untersystem und dem gemeinsam genutzten Betriebsmittel angeschlossen ist, wobei das Untersystem konfiguriert ist, um an einem großen Paket von Daten zu arbeiten, und wobei das gemeinsam genutzte Betriebsmittel konfiguriert ist, um an einem kleinen Burst von Daten zu arbeiten, wobei das Verfahren folgende Schritte aufweist:
Empfangen eines Pakets ankommender Daten vom Untersystem bei einem Empfangspuffer der Steuerung;
Senden eines Pakets abgehender Daten zum Untersystem von einem Sendepuffer der Steuerung;
Zuordnen eines Prioritätszugriffs zum gemeinsam genutzten Betriebsmittel entweder zu einer Empfangsanfrage zum Initiieren eines ankommenden Bursts von Daten vom Empfangspuffer zum gemeinsam genutzten Betriebsmittel oder zu einer Sendeanfrage zum Initiieren eines abgehenden Bursts von Daten vom gemeinsam genutzten Betriebsmittel zum Sendepuffer in Antwort auf Statusuntersuchungen der Steuerung; und
Zugreifen auf das gemeinsam genutzte Betriebsmittel in Antwort auf den Schritt zum Zuordnen einer Priorität, um entweder den ankommenden Burst oder den abgehenden Burst zu initiieren,
wodurch das Verfahren die Effizienz eines Datenflusses durch die Steuerung durch Minimieren eines Überlaufens des Empfangspuffers und eines Unterlaufens des Sendepuffers und Verhindern eines Sendestaus erhöht.
6. Verfahren nach Anspruch 5, wobei der Schritt zum Zuordnen einer Priorität folgende Schritte aufweist:
Bestimmen, ob die Anfragen zum Initiieren des ankommenden Bursts und des abgehenden Bursts anhängig sind; und
dann, wenn nur eine der Anfragen anhängig ist, Zuordnen eines Prioritätszugriffs zum gemeinsam genutzten Betriebsmittel zur anhängigen Anfrage;
Aktivieren eines Flags für ein letztes Empfangen, wenn die anhängige Anfrage eine Empfangsanfrage ist; und
Deaktivieren des Flags für ein letztes Empfangen, wenn die anhängige Anfrage eine Sendeanfrage ist.
7. Gerät zum Zugreifen auf ein gemeinsam genutztes Betriebsmittel (15) eines Computers zum Ermöglichen eines bidirektionalen Datenflusses durch eine Steuerung (20), die zwischen einem Untersystem (12) und einem gemeinsam genutzten Betriebsmittel (15) angeschlossen ist, wobei das Untersystem kon figuriert ist, um an einem großen Paket von Daten zu arbeiten, und wobei das gemeinsam genutzte Betriebsmittel konfiguriert ist, um an einem kleinen Burst von Daten zu arbeiten, wobei das Gerät folgendes aufweist:
eine Einrichtung (26) zum Empfangen eines Pakets ankommender Daten vom Untersystem bei einem Empfangspuffer der Steuerung;
eine Einrichtung (28) zum Senden eines Pakets abgehender Daten von einem Sendepuffer der Steuerung zum Untersystem;
eine Einrichtung (25) zum Zuordnen einer Priorität entweder zu einer Empfangsanfrage zum Initiieren eines ankommenden Bursts von Daten vom Empfangspuffer zum gemeinsam genutzten Betriebsmittel oder zu einer Sendeanfrage zum Initiieren eines abgehenden Bursts von Daten vom gemeinsam genutzten Betriebsmittel zum Sendepuffer in Antwort auf Statuszustände der Steuerung; und
eine Einrichtung zum Zugreifen auf das gemeinsam genutzte Betriebsmittel in Antwort auf die Einrichtung zum Zuordnen einer Priorität, um entweder den ankommenden Burst oder den abgehenden Burst zu initiieren,
wodurch das Gerät die Effizienz eines Datenflusses durch die Steuerung durch Minimieren eines Überlaufens des Empfangspuffers und eines Unterlaufens des Sendepuffers und Verhindern eines Sendestaus erhöht.
8. Gerät nach Anspruch 7, wobei die Zuordnungseinrichtung weiterhin eine Einrichtung enthält, um zu bestimmen, welcher Anfrage zuletzt ein Zugriff zum gemeinsam genutzten Betriebsmittel gewährt wurde, um entweder den ankommenden Burst oder den abgehenden Burst zu initiieren, wobei die Einrichtung zum Empfangen ankommender Daten eine erste Zustandsmaschine der Steuerung aufweist, wobei die Einrichtung zum Senden abgehender Daten eine zweite Zustandsmaschine der Steuerung aufweist, wobei die Einrichtung zum Zuordnen einer Priorität einen Zuteiler (25) der Steuerung aufweist.
9. Gerät nach Anspruch 7, wobei das gemeinsam genutzte Betriebsmittel ein Systembus (15) ist, wobei das gemeinsam genutzte Betriebsmittel eine mit einem Systembus gekoppelte Hauptspeichereinheit (24) ist.
10. Gerät nach Anspruch 7, wobei das Untersystem ein Festplatten-Untersystem ist, und wobei die Bestimmungseinrichtung ein Flag für ein letztes Empfangen ist.
DE69413740T 1993-03-26 1994-03-18 Arbitrierungsverfahren zur Datenflusssteuerung durch ein E/A-Steuergerät Expired - Fee Related DE69413740T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/037,287 US5546543A (en) 1993-03-26 1993-03-26 Method for assigning priority to receive and transmit requests in response to occupancy of receive and transmit buffers when transmission and reception are in progress

Publications (2)

Publication Number Publication Date
DE69413740D1 DE69413740D1 (de) 1998-11-12
DE69413740T2 true DE69413740T2 (de) 1999-06-24

Family

ID=21893521

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69413740T Expired - Fee Related DE69413740T2 (de) 1993-03-26 1994-03-18 Arbitrierungsverfahren zur Datenflusssteuerung durch ein E/A-Steuergerät

Country Status (3)

Country Link
US (1) US5546543A (de)
EP (1) EP0617368B1 (de)
DE (1) DE69413740T2 (de)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067408A (en) * 1993-05-27 2000-05-23 Advanced Micro Devices, Inc. Full duplex buffer management and apparatus
US5870609A (en) * 1993-12-17 1999-02-09 Xircom, Inc. Technique for bootstrapping executable code to an adapter
US5771356A (en) * 1995-01-04 1998-06-23 Cirrus Logic, Inc. Apparatus for controlling FIFO buffer data transfer by monitoring bus status and FIFO buffer thresholds
US5638535A (en) * 1995-05-15 1997-06-10 Nvidia Corporation Method and apparatus for providing flow control with lying for input/output operations in a computer system
JP3519182B2 (ja) * 1995-09-05 2004-04-12 株式会社日立製作所 情報処理システムおよびバスアービタならびにバス制御方法
US5829042A (en) * 1996-02-15 1998-10-27 Hewlett-Packard Company Prefetch operation for network peripheral device having shared memory
US6205486B1 (en) * 1996-07-26 2001-03-20 Accton Technology Corporation Inter-network bridge connector provided for dynamically prioritizing frame transmission adaptive to current network transmission-state
US5822538A (en) * 1996-11-20 1998-10-13 Advanced Micro Devices, Inc. Method and apparatus for prioritizing traffic in half-duplex networks by selecting delay intervals from fixed ranges
US5960174A (en) * 1996-12-20 1999-09-28 Square D Company Arbitration method for a communication network
US5898694A (en) * 1996-12-30 1999-04-27 Cabletron Systems, Inc. Method of round robin bus arbitration
US5943479A (en) * 1997-01-02 1999-08-24 Digital Equipment Corporation Method for reducing the rate of interrupts in a high speed I/O controller
US6032188A (en) * 1997-03-12 2000-02-29 Microsoft Corporation Method and system for controlling data flow
US6791979B1 (en) 1997-04-10 2004-09-14 Cisco Technology, Inc. Mechanism for conveying data prioritization information among heterogeneous nodes of a computer network
US5986714A (en) * 1997-06-10 1999-11-16 International Business Machines Corporation Method, apparatus and computer program product for selectively reducing bandwidth of real-time video data
US6078591A (en) * 1997-07-17 2000-06-20 Advanced Micro Devices, Inc. Apparatus and method for selectively modifying collision delay intervals based on a detected capture effect in half-duplex network
US6230219B1 (en) * 1997-11-10 2001-05-08 International Business Machines Corporation High performance multichannel DMA controller for a PCI host bridge with a built-in cache
US6081523A (en) * 1997-12-05 2000-06-27 Advanced Micro Devices, Inc. Arrangement for transmitting packet data segments from a media access controller across multiple physical links
US6330248B1 (en) * 1997-12-05 2001-12-11 Advanced Micro Devices, Inc. Arrangement for transmitting data packets from a media access controller across multiple physical links
US6192428B1 (en) * 1998-02-13 2001-02-20 Intel Corporation Method/apparatus for dynamically changing FIFO draining priority through asynchronous or isochronous DMA engines in response to packet type and predetermined high watermark being reached
US6098122A (en) * 1998-03-27 2000-08-01 International Business Machines Corporation Method and apparatus for adaptively blocking outgoing communication requests and adjusting the blocking factor according to the volume of requests being received in an information handling system
US6141350A (en) * 1998-04-17 2000-10-31 Advanced Micro Devices, Inc. Auto-negotiation using negative link pulses
US6115389A (en) * 1998-04-17 2000-09-05 Advanced Micro Devices, Inc. Auto-negotiation for multiple ports using shared logic
US6418538B1 (en) * 1998-07-06 2002-07-09 Intel Corporation Method and system for scheduling transactions over a half duplex link
US6665728B1 (en) * 1998-12-30 2003-12-16 Intel Corporation Establishing optimal latency in streaming data applications that use data packets
US7213061B1 (en) * 1999-04-29 2007-05-01 Amx Llc Internet control system and method
US6523098B1 (en) * 1999-12-22 2003-02-18 Intel Corporation Mechanism for efficient low priority write draining
US6697904B1 (en) * 2000-03-28 2004-02-24 Intel Corporation Preventing starvation of agents on a bus bridge
US7624156B1 (en) 2000-05-23 2009-11-24 Intel Corporation Method and system for communication between memory regions
US6877052B1 (en) * 2000-09-29 2005-04-05 Intel Corporation System and method for improved half-duplex bus performance
US6804736B2 (en) * 2000-11-30 2004-10-12 Hewlett-Packard Development Company, L.P. Bus access arbitration based on workload
US20020184381A1 (en) * 2001-05-30 2002-12-05 Celox Networks, Inc. Method and apparatus for dynamically controlling data flow on a bi-directional data bus
US20040210642A1 (en) * 2001-06-11 2004-10-21 Adisak Mekkittikul Method and system for caching data in a network node
GB2379523B (en) * 2001-09-05 2003-11-19 3Com Corp Shared memory system including hardware memory protection
US7487405B1 (en) * 2002-05-10 2009-02-03 Oracle International Corporation Method and mechanism for dynamically configuring logical paths of state machines
KR100480605B1 (ko) * 2002-07-25 2005-04-06 삼성전자주식회사 네트워크 제어기의 송신부 버퍼 및 수신부 버퍼를제어하는 방법 및 네트워크 제어기
US7065596B2 (en) * 2002-09-19 2006-06-20 Intel Corporation Method and apparatus to resolve instruction starvation
TWI313412B (en) * 2002-11-25 2009-08-11 Ibm Method and apparatus for intermediate buffer segmentation and reassembly
US6944728B2 (en) * 2002-12-23 2005-09-13 Intel Corporation Interleaving memory access
JP4366200B2 (ja) * 2004-01-29 2009-11-18 キヤノン株式会社 記録装置及び受信バッファ管理方法
US7533195B2 (en) * 2004-02-25 2009-05-12 Analog Devices, Inc. DMA controller for digital signal processors
WO2005096162A1 (ja) * 2004-03-18 2005-10-13 Matsushita Electric Industrial Co., Ltd. アービトレーション方法及び装置
US8245232B2 (en) * 2007-11-27 2012-08-14 Microsoft Corporation Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems
US9094343B1 (en) * 2008-11-13 2015-07-28 Qlogic, Corporation Method and system for taking a network port offline
US8127063B2 (en) * 2009-01-20 2012-02-28 Fisher-Rosemount Systems, Inc. Distributed equipment arbitration in a process control system
WO2011149482A1 (en) * 2010-05-28 2011-12-01 Hewlett-Packard Development Company, L.P. Storing data in any of a plurality of buffers in a memory controller
US8706936B2 (en) 2011-11-14 2014-04-22 Arm Limited Integrated circuit having a bus network, and method for the integrated circuit
US8972614B2 (en) * 2011-12-26 2015-03-03 Apple Inc. Half-duplex SATA link with controlled idle gap insertion
US8930965B1 (en) * 2012-02-28 2015-01-06 Marvell International Ltd Event-driven state-machine sequencer
US9811495B2 (en) * 2014-08-27 2017-11-07 Lattice Semiconductor Corporation Arbitration signaling within a multimedia high definition link (MHL 3) device
US9484004B2 (en) * 2015-02-17 2016-11-01 Freescale Semiocnductor, Inc. Display controller for display panel
JP7415345B2 (ja) * 2019-07-03 2024-01-17 オムロン株式会社 制御システム、サポート装置および設定プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60229160A (ja) * 1984-04-26 1985-11-14 Toshiba Corp マルチプロセツサシステム
US4727538A (en) * 1986-05-20 1988-02-23 American Telephone And Telegraph Company, At&T Bell Laboratories Information transfer method and arrangement
JPS6477339A (en) * 1987-09-18 1989-03-23 Nec Corp Collision detecting type lan terminal interface module
CA1322390C (en) * 1987-09-22 1993-09-21 Nec Corporation Star topology local area network
KR940002905B1 (en) * 1989-12-15 1994-04-07 Ibm Apparatus for conditioning priority arbitration in buffered direct memory addressing
US5255371A (en) * 1990-04-02 1993-10-19 Unisys Corporation Apparatus for interfacing a real-time communication link to an asynchronous digital computer system by utilizing grouped data transfer commands
EP0489504B1 (de) * 1990-11-30 1997-03-05 International Business Machines Corporation Bidirektionaler FIFO-Puffer zur Schnittstellenbildung zwischen zwei Bussen
US5276684A (en) * 1991-07-22 1994-01-04 International Business Machines Corporation High performance I/O processor
US5301274A (en) * 1991-08-19 1994-04-05 Multi-Tech Systems, Inc. Method and apparatus for automatic balancing of modem resources
US5440691A (en) * 1992-02-27 1995-08-08 Digital Equipment Corporation, Pat. Law Group System for minimizing underflowing transmit buffer and overflowing receive buffer by giving highest priority for storage device access
US5377184A (en) * 1992-03-02 1994-12-27 International Business Machines Corporation Method of controlling TWA link in a communications adapter by monitoring buffer fill levels
US5276681A (en) * 1992-06-25 1994-01-04 Starlight Networks Process for fair and prioritized access to limited output buffers in a multi-port switch

Also Published As

Publication number Publication date
EP0617368B1 (de) 1998-10-07
EP0617368A1 (de) 1994-09-28
DE69413740D1 (de) 1998-11-12
US5546543A (en) 1996-08-13

Similar Documents

Publication Publication Date Title
DE69413740T2 (de) Arbitrierungsverfahren zur Datenflusssteuerung durch ein E/A-Steuergerät
DE69131436T2 (de) Netzanpassungseinrichtung mit als logische FIFOs gestalteten Speichern zur Übertragung und Empfang von Datenpaketen
DE3751091T2 (de) Übertragungsprotokoll zwischen Prozessoren.
DE69108434T2 (de) Mehrgruppen-Signalprozessor.
DE69706443T2 (de) Adressenerzeugung und datenpfadarbitrierung für sram zur anpassung von mehreren übertragenen paketen
DE69131971T2 (de) Netzwerkanpassungseinrichtung mit Puffer und Mehrbeschreibungskreis
DE3851111T2 (de) Netzwerksystem mit Tokenprinzip-Zugriffsverfahren.
DE68927816T2 (de) Übertragungsprozessor für ein paketvermitteltes netzwerk
DE3586280T2 (de) Gesteuertes sternnetz.
EP0179936B1 (de) Verfahren und Einrichtung zur Steuerung einer Sammelleitung
DE68925571T2 (de) Vermittlungsnetzwerk für Speicherzugriff
DE69533680T2 (de) Verfahren und Vorrichtung zur dynamischen Bestimmung und Zuteilung von Zugriffsguoten für ein gemeinsames Betriebsmittel
DE69131477T2 (de) Netzwerkanpassungseinrichtung
DE60203057T2 (de) Effizienter Optimierungsalgorithmus für Speichergebrauch in Netzwerkanwendungen
DE4121446C2 (de) Terminal-Server-Architektur
DE69334171T2 (de) Verfahren und Vorrichtung zur Arbitrierung auf einen acyclischen gerichteten Graph
DE69735936T2 (de) Seriendatenschnittstellenverfahren und vorrichtung #
DE69936225T2 (de) Gleichzeitige serielle verbindung zur integrierung von funktionellen blöcken in eine integrierte schaltungsvorrichtung
DE69529381T2 (de) Warteschlangen-Arbitrierungsmechanismus für Datenverarbeitungssystem
DE69704344T2 (de) Anwendungsprogrammierungsschnittstelle für datenübertragung und busverwaltung über eine busstruktur
DE69521549T2 (de) Verfahren zur Verwaltung gemeinsamer Mittel mehrerer Verarbeitungseinheiten
DE69422750T2 (de) Serielles Bussystem
DE3850387T2 (de) Vorrichtung und verfahren zum zugriff eines knotens auf einen bus.
DE69021790T2 (de) Mehrstufiges Netz mit verteilter Steuerung.
DE69828980T2 (de) System und verfahren zur flusskontrolle für ein hochgeschwindigkeitsbus

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee