DE69413740T2 - Arbitrierungsverfahren zur Datenflusssteuerung durch ein E/A-Steuergerät - Google Patents
Arbitrierungsverfahren zur Datenflusssteuerung durch ein E/A-SteuergerätInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 30
- 239000000872 buffer Substances 0.000 claims description 90
- 238000012546 transfer Methods 0.000 claims description 31
- 238000004891 communication Methods 0.000 claims description 20
- 230000005540 biological transmission Effects 0.000 claims description 19
- 230000002457 bidirectional effect Effects 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 10
- 238000011835 investigation Methods 0.000 claims description 8
- 241001522296 Erithacus rubecula Species 0.000 claims description 4
- 230000003213 activating effect Effects 0.000 claims 1
- 239000000523 sample Substances 0.000 claims 1
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 208000037824 growth disorder Diseases 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/30—Handling 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling 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
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1993
- 1993-03-26 US US08/037,287 patent/US5546543A/en not_active Expired - Lifetime
-
1994
- 1994-03-18 DE DE69413740T patent/DE69413740T2/de not_active Expired - Fee Related
- 1994-03-18 EP EP94301949A patent/EP0617368B1/de not_active Expired - Lifetime
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 |