DE10219359B4 - Vorrichtung und Verfahren mit einem Queuemechanismus - Google Patents

Vorrichtung und Verfahren mit einem Queuemechanismus Download PDF

Info

Publication number
DE10219359B4
DE10219359B4 DE10219359A DE10219359A DE10219359B4 DE 10219359 B4 DE10219359 B4 DE 10219359B4 DE 10219359 A DE10219359 A DE 10219359A DE 10219359 A DE10219359 A DE 10219359A DE 10219359 B4 DE10219359 B4 DE 10219359B4
Authority
DE
Germany
Prior art keywords
register
data
sequence
elements
register elements
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
DE10219359A
Other languages
English (en)
Other versions
DE10219359A1 (de
Inventor
Siegfried Kay Hesse
Dale E. Astoria Gulick
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Priority to DE10219359A priority Critical patent/DE10219359B4/de
Priority to US10/283,733 priority patent/US6944725B2/en
Publication of DE10219359A1 publication Critical patent/DE10219359A1/de
Application granted granted Critical
Publication of DE10219359B4 publication Critical patent/DE10219359B4/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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

Vorrichtung mit einem Queuemechanismus, umfassend:
eine Datenspeichereinrichtung (200-270, 300, 1445, 1520) zum Speichern einer Vielzahl von Datenelementen, wobei die Datenspeichereinrichtung eine Vielzahl von Registerelementen (200-270) enthält, die jeweils wenigstens ein Datenelement speichern können, wobei die Vielzahl von Registerelementen eingerichtet ist, um eine Sequenz (300) von Registerelementen zu bilden; und
eine Steuereinrichtung (1500) zum Steuern der Datenspeichereinrichtung, um erste Daten in einem ersten Teil (200-230) der Sequenz von Registerelementen und zweite Daten in einem zweiten Teil (240-270) der Sequenz von Registerelementen zu speichern, wobei der erste Teil und der zweite Teil von variablen Längen sind und die Summe der variablen Längen gleich der Länge der Sequenz von Registerelementen ist,
wobei die Steuereinrichtung eingerichtet ist zum Steuern sowohl des ersten als auch des zweiten Teils der Sequenz von Registerelementen, um die jeweiligen Daten FIFO-mäßig zu speichern, und
wobei der erste und zweite Teil der Sequenz von Registerelementen jeweils...

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Die Erfindung betrifft allgemein Vorrichtungen und Verfahren mit Queuemechanismen und insbesondere Vorrichtungen mit gesteuerten Datenspeichereinrichtungen sowie entsprechende Verfahren zum Speichern einer Vielzahl von Datenelementen.
  • 2. Beschreibung des Standes der Technik
  • Übliche Motherboardlayouts umfassen eine Anzahl von Hardwarekomponenten einschließlich einer CPU (Central Processing Unit, zentrale Verarbeitungseinheit), einer Northbridge, einer Southbridge und einem Systemspeicher. Die Northbridge ist üblicherweise ein einzelner Chip in einem Core-Logic-Chipsatz, der den Prozessor mit dem Systemspeicher verbindet und z.B. mit AGP-Bussen (AGP: Accelerated Graphic Port) oder PCI-Bussen (PCI: Peripheral Component Interface). Die Southbridge ist gewöhnlich ein Chip in einem System-Core-Logic-Chipsatz zum Steuern des IDE-Busses (IDE: Integrated Drive Electronics) oder EIDE-Busses (EIDE: Enhanced IDE), des USB-Busses (USB: Universal Serial Bus), zum Bereitstellen einer Plug-and-Play-Unterstützung, zum Steuern einer PCI-ISA-Brücke (ISA: Industry Standard Architecture), zum Verwalten eines Tastatur/Maus-Controllers, zum Bereitstellen von Leistungsverwaltungsfeatures (Powermanagement) und zum Steuern anderer Peripheriegeräte. Für die Steuerung des USB-Busses enthalten Southbridges oft einen USB-Hostcontroller. Southbridges und Northbridges können auch in einem einzelnen Chip integriert sein.
  • In Computersystemen im Allgemeinen und in USB-Hostcontrollern im besonderen ist die Datenverwaltung eine wichtige Aufgabe, mit der umzugehen ist. Beispielsweise kann es Daten verschiedenen Typs geben, die behandelt werden müssen, und sogar bei Daten desselben Typs kann die Behandlung abhängig von einer aktuell durchzuführenden Funktion verschieden sein. Beispielsweise kann es Datenelemente geben, die nach einem periodischen Planungsschema aus dem Speicher gelesen oder in den Speicher geschrieben werden müssen, während andere Datenelemente in asynchroner Weise geholt oder geschrieben werden. Weiterhin kann es Daten geben, die sofort geholt werden müssen, wenn sie angefordert werden, während andere Daten im voraus geholt werden können (Prefetching).
  • Alle Daten, die geholt oder im voraus geholt werden oder die in den Speicher geschrieben werden müssen, werden üblicherweise in einer Art von Puffern gespeichert. Ein bekanntes Konzept solcher Puffer ist das der FIFO-Puffer (FIFO: First In First Out), die man sich als eine Sequenz von Registerelementen denken kann, die von einer Seite gefüllt werden und von der anderen Seite entleert werden. Solche Puffer können als eine Queue angesehen werden, da die Daten in Form einer Sequenz gespeichert werden.
  • Andere wohlbekannte Speicherobjekte sind doppelendige Queues, die durch mannigfaltige Funktionen manipuliert werden können, die es ermöglichen, Elemente entweder am Beginn der Queue, am Ende der Queue oder an irgendwelchen spezifischen Punkten innerhalb der Queue hinzuzufügen. Jedoch können solche Speicherobjekte noch den Nachteil aufweisen, dass sie gewöhnlicherweise nur für einen Datentyp und eine Art der Datenplanung geeignet sind. Das bedeutet, dass zwei separate Speichereinrichtungen bereitgestellt werden müssen, wenn es zu speichernde Datenelemente zweier Typen gibt.
  • Als ein Beispiel zeigt 1 den Fall, in dem Daten entweder periodisch oder asynchron zu speichern sind. Zu diesem Zweck gibt es zwei separate Speicherschaltungen 100 und 110, die FIFO-Puffer oder eine andere Art von Queues sein können. Zwei separate Puffer, wie in 1 gezeigt, sind jedoch nachteilig, da jeder Puffer auf dem integrierten Schaltkreischip Hardwareschaltungen in signifikantem Umfang erfordert. Dies führt zu erhöhten Schaltkreisentwicklungskosten und Schaltkreisherstellungskosten und macht es weiterhin schwieriger, die Schaltkreise auf eine kleinere Größe herunterzuskalieren.
  • DE 197 40 738 A1 offenbart ein Verfahren zum Wiederanordnen einer Liste der in einer untergeordneten Managementebene eines Kommunikationsnetzes aktiven Alarme. Auftretende Alarme werden in entsprechenden Speichern abhängig von der Priorität der Alarme gespeichert. Die Speicher können als physikalisch getrennte Bereiche oder als fortlaufender Speicherbereich implementiert werden. Zeiger geben den ältesten Eintrag in jedem Speicher an. Andere Zeiger sind Fortsetzungsindices, die einen ältesten Alarm in einem Speicher für Alarme angeben, die andere Speicher betreffen.
  • US 5,043,981 A erwähnt FIFO-Puffer sowie ein Speicherkapazitätsmanagement, das einen „fast voll"-Schwellenwert verwendet.
  • ÜBERSICHT ÜBER DIE ERFINDUNG
  • Der Erfindung liegt die Aufgabe zugrunde, eine Vorrichtung und ein Verfahren mit einem Queuemechanismus bereitzustellen, die Daten verschiedenen Typs oder verschiedener Planungsschemata in effizienter Weise behandeln können.
  • Diese Aufgabe wird durch die Gegenstände der unabhängigen Patentansprüche gelöst.
  • Bevorzugte Ausgestaltungen sind in den abhängigen Ansprüchen definiert.
  • In einer Ausgestaltung wird eine Vorrichtung bereitgestellt, die eine Datenspeichereinrichtung zum Speichern einer Vielzahl von Datenelementen und eine Steuereinrichtung zum Steuern der Datenspeichereinrichtung umfasst. Die Datenspeichereinrichtung enthält eine Vielzahl von Registerelementen, wobei jedes Registerelement wenigstens ein Datenelement speichern kann. Die Vielzahl von Registerelementen ist eingerichtet, um eine Sequenz von Registerelementen zu bilden. Die Steuereinrichtung ist eingerichtet, um die Datenspeichereinrichtung zu steuern, um erste Daten in einem ersten Teil der Sequenz von Registerelementen und zweite Daten in einem zweiten Teil der Sequenz von Registerelementen zu speichern. Der erste Teil und der zweite Teil sind von variabler Länge, wobei die Summe der variablen Längen gleich der Länge der Sequenz von Registerelementen ist.
  • In einer anderen Ausgestaltung wird ein integrierter Southbridge-Schaltkreischip bereitgestellt. Der Chip umfasst eine Datenspeicherschaltung zum Speichern einer Vielzahl von Datenelementen. Die Datenspeicherschaltung enthält eine Vielzahl von Registerelementen, wobei jedes Registerelement wenigstens ein Datenelement speichern kann. Die Vielzahl von Registerelementen ist eingerichtet, um eine Sequenz von Registerelementen zu bilden. Der Chip umfasst weiterhin eine Steuerschaltung zum Steuern der Datenspeicherschaltung, um erste Daten in einem ersten Teil der Sequenz von Registerelementen zu speichern und zweite Daten in einem zweiten Teil der Sequenz von Registerelementen. Der erste Teil und der zweite Teil sind von variabler Länge, wobei die Summe der variablen Längen gleich der Länge der Sequenz von Registerelementen ist.
  • In einer weiteren Ausgestaltung kann ein Verfahren zum Betreiben einer Datenspeichereinrichtung bereitgestellt werden, um eine Vielzahl von Datenelementen zu speichern. Die Datenspeichereinrichtung enthält eine Vielzahl von Registerelementen. Jedes Registerelement kann wenigstens ein Datenelement speichern. Die Vielzahl von Registerelementen ist eingerichtet, um eine Sequenz von Registerelementen zu bilden. Das Verfahren umfasst das Steuern der Datenspeichereinrichtung, um erste Daten in einem ersten Teil der Sequenz von Registerelementen zu speichern, und das Steuern der Datenspeichereinrichtung, um zweite Daten in einem zweiten Teil der Sequenz von Registerelementen zu speichern. Der erste Teil und der zweite Teil sind von variabler Länge und die Summe der variablen Längen ist gleich der Länge der Sequenz von Registerelementen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die beigefügten Zeichnungen sind in die Beschreibung eingefügt und bilden einen Teil derselben zum Zwecke der Erläuterung der Prinzipien der Erfindung. Die Zeichnungen sind nicht als die Erfindung nur auf die verdeutlichten und beschriebenen Beispiele beschränkend zu verstehen, wie die Erfindung gemacht und verwendet werden kann. Weitere Merkmale und Vorteile werden aus der folgenden und genaueren Beschreibung der Erfindung ersichtlich werden, wie in den beigefügten Zeichnungen erläutert, in denen:
  • 1 ein herkömmliches Schema des Speicherns von Daten in periodischer sowie in asynchroner Weise verdeutlicht;
  • 2 eine Datenspeichereinrichtung gemäß einer ersten Ausgestaltung verdeutlicht;
  • 3 eine Datenspeichereinrichtung gemäß einer zweiten Ausgestaltung verdeutlicht;
  • 4 ein Flussdiagramm ist, das den Hauptprozess des Betriebs der Datenspeichereinrichtungen gemäß einer Ausgestaltung verdeutlicht, wie sie in den 2 oder 3 gezeigt sind;
  • 5 ein Flussdiagramm ist, das die Initialisierung verdeutlicht, die in dem Prozess von 4 durchgeführt wird;
  • 6 ein Flussdiagramm ist, das den Prozess des Ladens periodischer Deskriptoren in dem Prozess von 4 verdeutlicht;
  • 7 ein Flussdiagramm ist, das den Prozess des Herausladens (Unloading) periodischer Deskriptoren in dem Prozess von 4 verdeutlicht;
  • 8 ein Flussdiagramm ist, das den Prozess des Ladens asynchroner Deskriptoren in dem Prozess von 4 verdeutlicht;
  • 9 ein Flussdiagramm ist, das den Prozess des Herausladens asynchroner Deskriptoren in dem Prozess von 4 verdeutlicht;
  • 10 ein Flussdiagramm ist, das den Grenzenaktualisierungsprozess, der in dem Prozess von 4 durchgeführt wird, verdeutlicht;
  • 11 ein Flussdiagramm ist, das einen Ladeprozess gemäß einer anderen Ausgestaltung verdeutlicht;
  • 12 ein Flussdiagramm ist, das den Herausladeprozess gemäß einer anderen Ausgestaltung verdeutlicht;
  • 13 die Hauptkomponenten eines USB-2.0-gemäßen Hostcontrollers gemäß einer Ausgestaltung verdeutlicht;
  • 14 ein Blockdiagramm ist, das die Komponenten des erweiterten Hostcontrollers verdeutlicht, der eine Komponente der Anordnung von 13 ist; und
  • 15 ein Blockdiagramm ist, das die Komponenten der DEQ-Einrichtung verdeutlicht, die in 14 gezeigt ist.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Die verdeutlichten Ausgestaltungen der vorliegenden Erfindung werden unter Bezugnahme auf die Zeichnungen beschrieben werden.
  • Wird nun auf die Zeichnungen und insbesondere auf 2 Bezug genommen, die eine Datenspeichereinrichtung gemäß einer Ausgestaltung verdeutlicht, so enthält die Datenspeichereinrichtung eine Vielzahl von Registerelementen 200-270, die in Form einer Sequenz angeordnet sind. Das bedeutet, dass es ein Registerelement 200 gibt, das ein erstes Ende der Sequenz bildet, und ein anderes Registerelement 240, das das andere Ende der Sequenz bildet. Jedes andere Registerelement 210-230, 250-270 hat genau zwei Nachbarregisterelemente. Diese Organisation kann physikalisch realisiert sein, was bedeutet, dass die Registerelemente auf dem Chip Seite an Seite liegen, oder logisch realisiert sein, was bedeutet, dass die Registerelemente in sequenzieller Weise adressierbar sind.
  • Jedes Registerelement 200-270 dient der Speicherung eines Datenelements. In einer anderen Ausgestaltung kann ein Registerelement mehr als ein Datenelement speichern. Ein Datenelement kann ein Transaktionselement sein.
  • In der Ausgestaltung von 2 werden Eingabedaten aus einem Speicherholvorgang bereitgestellt und Ausgabedaten an die USB-Transaktionsaufbaueinrichtung geliefert. Es gibt periodische und asynchrone Transaktionen und die periodischen Transaktionen werden von rechts nach links eingefüllt, während die asynchronen Transaktionen von links nach rechts eingefüllt werden. Die mittlere Linie stellt eine Grenze dar, die die Datenspeichereinrichtung in einen periodischen Teil und einen asynchronen Teil trennt. Die Grenze kann geändert werden, so dass die Länge des periodischen Teils sowie die Länge des asynchronen Teils variabel sind. Die Summe beider variabler Längen ist gleich der Länge der gesamten Sequenz.
  • Wie aus 2 ersichtlich ist, kann die Datenspeichereinrichtung als ein Doppelenden-Queuemechanismus mit zwei miteinander verbundenen Queues betrachtet werden. Somit wird ein Mechanismus bereitgestellt, der verwendet werden kann, um Daten verschiedenen Typs zu speichern oder Daten, die entweder einer periodischen oder einer asynchronen Planung unterliegen. Dies ermöglicht die gemeinsame Verwendung von Pufferraum und dessen Optimierung auf Grundlage der aktuellen Arbeitsbelastung. Darüber hinaus macht die Grenzenjustierung einen geschichtsbasierten Adaptionsmechanismus möglich und kann Fläche auf dem Chip einsparen.
  • Ausgehend von dem logischen Erscheinungsbild, wie es in 2 gezeigt ist, geht die Funktionalität der doppelendigen Queue über die einfacher FIFO-Puffer darin hinaus, dass sie es gestattet, im voraus geholte asynchrone Deskriptoren zu halten und dennoch in effizienter Weise jeglichen freien Raum zu verwenden, um periodische Deskriptoren im voraus zu holen.
  • Wird nun zu 3 übergegangen, die eine andere Ausgestaltung verdeutlicht, so wird die Steuerung des doppelendigen Queuemechanismus durch ein spezielles Indexregister 300 bewerkstelligt. Es gibt einen Indexregisterplatz für jeden Queueeintrag. Der Inhalt eines Indexregisterplatzes (bezeichnet durch die Zahlen 0 ... N-1) ist eine Basisadresse für einen Deskriptor innerhalb eines RAM (Random Access Memory, wahlfreier Zugriffsspeicher), bezeichnet mit den Buchstaben A ... D und R ... T. Der Kopf der periodischen Queue ist am Platz 0 des Indexregisters 300 gespeichert und der Kopf der asynchronen Queue liegt im Platz N-1. Wie in 3 gezeigt, würde der nächste in den RAM geladene periodische Deskriptor beginnend mit Adresse C gespeichert werden und der nächste asynchrone Deskriptor an der Adresse S. Somit können die Datenelemente, die in den Registerplätzen des Indexregisters 300 gespeichert werden, Zeiger (Pointer) auf einen RAM sein.
  • Die doppelendige Queue von 3 kann in zwei verschiedenen Moden betrieben werden: im Push-Margin-Modus (Randschiebemodus) und im Load-Limit-Modus (Schrankenlademodus). Im Load-Limit-Modus kann jede Seite wachsen, bis sie ihren maximalen Ladewert 320, 330 oder das Ende der anderen Seite erreicht. Somit können Queueeinträge zwischen MaxALoad 320 und MaxPLoad 330 für beide Typen verwendet werden. Das bedeutet, dass es im Load-Limit-Modus einen Überlapp der zwei Teile geben kann. Im Push-Margin-Modus ist es jeder Seite gestattet, nur so lange zu wachsen, bis sie auf die Grenze 310 trifft. Diese Treffer (Hits) während eines Mikrorahmens werden erfasst und verwendet, um die Grenze 310 innerhalb der durch MaxALoad 320 und MaxPLoad 330 gegebenen Schranken zu aktualisieren. Somit kann die Grenze 310 in diesem Fall auf planungsgeschichtlicher Grundlage angepasst werden.
  • Im folgenden wird der Betrieb der in den 2 und 3 gezeigten Datenspeichereinrichtung in weiteren Einzelheiten diskutiert werden, wobei von den in 3 gezeigten Parametern Verwendung gemacht wird: der Grenze 310, den maximalen Ladewerten MaxALoad 320 und MaxPLoad 330 und den aktuellen Ende-Zeigern P_Load 340 und A_Load 350.
  • Wird zunächst zu dem Flussdiagramm von 4 übergegangen, so beginnt der Hauptprozess des Betriebs der Datenspeichereinrichtung mit einer Initialisierung in Schritt 400. Ist die doppelendige Queue in Schritt 400 initialisiert worden, werden periodische und asynchrone Deskriptoren in den Schritten 410 bis 440 geladen und herausgeladen. Obwohl das Flussdiagramm von 4 eine bestimmte Abfolge der Schritte 410 bis 440 angibt, ist anzumerken, dass andere Abfolgen auch möglich sein können. Einige oder alle der Lade- und Herausladeschritte für jede Art von Deskriptoren können in einer anderen Ausgestaltung auch ineinandergreifend sein. Wie aus 4 ersichtlich ist, wird der Prozess in iterativer Weise durchgeführt, wobei jede Iteration einen Grenzenaktualisierungsschritt 450 enthält.
  • Wird zunächst der Initialisierungsprozess diskutiert, der in Schritt 400 des in 4 gezeigten Prozesses durchgeführt wird, so wird auf 5 Bezug genommen. Zunächst wird das Indexregister 300 mit Anfangswerten in Schritt 500 gefüllt. In einer Ausgestaltung können diese Werte einfach inkrementierte ganze Zahlen sein. Dann werden die Ende-Zeiger 340, 350 gesetzt, um auf die Köpfe beider Teile zu zeigen (Schritt 510). Das bedeutet, dass P_Load 340 anfänglich gesetzt wird, um auf Platz 0 des Indexregisters 300 zu zeigen, während A_Load 350 gesetzt wird, um auf Platz N-1 zu zeigen.
  • Es wird dann in Schritt 520 bestimmt, ob der Push-Margin-Modus oder der Load-Limit-Modus eingestellt ist. Wenn der Push-Margin-Modus eingestellt ist, werden die Grenzenwerte für periodische und asynchrone Deskriptoren in Schritt 550 auf denselben Anfangswert eingestellt. Wird die doppelendige Queue jedoch im Load-Limit-Modus betrieben, so wird der Grenzenwert für periodische Deskriptoren auf die minimale asynchrone Beladung in Schritt 530 eingestellt, während der Grenzenwert für asynchrone Deskriptoren auf das Maximum der asynchronen Beladung eingestellt wird (Schritt 540). Dann werden in den Schritten 560 und 570 Hitflags für sowohl periodische als auch asynchrone Deskriptoren heruntergesetzt. Wie unten in weiteren Einzelheiten beschrieben werden wird, sind Hitflags Anzeigemittel, die bei der Aktualisierung der Grenzen verwendet werden.
  • Wird nun zu 6 übergegangen, so wird der Prozess des Ladens periodischer Deskriptoren in weiteren Einzelheiten erläutert. Zunächst wird in Schritt 600 bestimmt, ob der periodische Ende-Zeiger 340 auf einen Registerplatz hinter dem Grenzenwert für periodische Deskriptoren zeigt. Wie aus der obigen Diskussion des Initialisierungsprozesses ersehen werden kann, ist der Grenzenwert eine Variable, die sowohl im Push-Margin-Modus als im Load-Limit-Modus verwendet wird, und somit können die Grenzenwerte für periodische und asynchrone Deskriptoren verschieden oder auch gleich sein. Wenn in Schritt 600 festgestellt wird, dass das periodische Ende die Grenze übersteigt, so wird in Schritt 610 das entsprechende Hitflag gesetzt. Andernfalls wird in Schritt 620 überprüft, ob der periodische Ende-Zeiger auf einen Registerplatz hinter dem zeigt, worauf der asynchrone Ende-Zeiger zeigt. Ist dies der Fall, so wird in Schritt 630 ein Bounce-Flag gesetzt. Andernfalls fährt der Prozess mit Schritt 640 des Lesens eines Registereintrags am Ende der periodischen Seite fort, d.h. am Registerelement, auf das P_Load 340 zeigt. Schließlich wird in Schritt 650 der periodische Ende-Zeiger P_Load 340 inkrementiert.
  • Das Herausladen periodischer Deskriptoren wird in weiteren Einzelheiten in 7 verdeutlicht. Zunächst wird der Deskriptor, der aktuell am Kopf der periodischen Seite gespeichert wird, in einem temporären Puffer in Schritt 700 zur späteren Verwendung gepuffert. Dann wird für jeden Eintrag der periodischen Seite der Inhalt des nächsten Eintrags in Schritt 710 kopiert. Somit ist das, was in Schritt 710 tatsächlich getan wird, eine Rotation nach links. Der periodische Ende-Zeiger P_Load 340 wird dann in Schritt 720 dekrementiert und der Deskriptor, der in Schritt 700 gepuffert wurde, wird in Schritt 730 an das Ende geschrieben.
  • Während die 6 und 7 Flussdiagramme zur Verdeutlichung des Ladeprozesses und Herausladeprozesses periodischer Deskriptoren zeigen, sind entsprechende Flussdiagramme zur Verarbeitung der asynchronen Deskriptoren in den 8 und 9 gezeigt. Diese Flussdiagramme sind im wesentlichen dieselben wie die oben diskutierten, jedoch sollte erwähnt werden, dass einige Modifikationen infolge des Umstandes anfallen, dass die asynchrone Queue in entgegengesetzter Richtung, verglichen mit der periodischen Queue, gefüllt wird. Somit müssen dort, wo die Zeiger der periodischen Queue dekrementiert worden waren, die entsprechenden Zeiger der asynchronen Seite inkrementiert werden. Wo in Schritt 710 der Inhalt des nächsten Eintrags kopiert wurde, um eine Rotation nach links durchzuführen, muss auf der asynchronen Seite der Inhalt des vorhergehenden Eintrags kopiert werden, wodurch die Daten nach rechts rotieren.
  • Wird nun zu 10 übergegangen, so wird eine Ausgestaltung des Grenzenaktualisierungsprozesses gezeigt, der im Schritt 450 des Flussdiagramms von 4 durchzuführen ist. Im Schritt 1000 wird der Betriebsmodus festgestellt. Wenn die doppelendige Queue im Load-Limit-Modus betrieben wird, können die Hitflags in Schritt 1090 direkt heruntergesetzt werden. Andernfalls, d.h. wenn die Datenspeichereinrichtung im Push-Margin-Modus betrieben wird, kann die weitere Verarbeitung davon abhängen, ob eines der periodischen und asynchronen Hitflags gesetzt ist.
  • Wenn in Schritt 1010 festgestellt wird, dass das periodische Hitflag gesetzt ist, wird eine Überprüfung durchgeführt, ob die aktuelle Grenze die minimale asynchrone Beladung erreicht (Schritt 1030). Wenn das periodische Hitflag gesetzt ist und die aktuelle Grenze das asynchrone Beladungsminimum erreicht, werden die Grenzenwerte im Schritt 1040 und ebenfalls die aktuelle Grenze im Schritt 1050 inkrementiert. Somit wird die Grenze auf einen höheren Wert aktualisiert, da es noch Raum zum Erhöhen der Grenzenwerte gab, ohne die minimale asynchrone Beladung zu überschreiten.
  • In den Schritten 1020, 1060, 1070 und 1080 wird der entsprechende Prozess für den Fall durchgeführt, dass das asynchrone Hitflag gesetzt ist. Sind die Grenzenwerte einmal aktualisiert, können die Hitflags im Schritt 1090 heruntergesetzt werden.
  • Während die 4 bis 10 eine Ausgestaltung des Betriebs der doppelendigen Queue verdeutlichen, wird eine andere Ausgestaltung nun unter Bezugnahme auf die 11 und 12 diskutiert werden. In dieser Ausgestaltung kann die periodische FIFO-Beladung die Mitte der Queue überkreuzen und auf die asynchrone Queue treffen, während die asynchrone FIFO-Beladung die Mitte nicht überkreuzen darf (vgl. 2). Weiterhin wird für alle wartenden asynchronen Transaktionen, die in der Queue gespeichert sind, über eine geschätzte Routenzeit (ETE; "estimated time enroute") Buch geführt.
  • Wird nun auf das Flussdiagramm von 11 Bezug genommen, so ist der Ladeprozess zum Laden periodischer und asynchroner Deskriptoren gezeigt. In Schritt 1100 wird festgestellt, ob die periodische Liste leer ist. Ist dies der Fall, so fährt der Prozess mit Schritt 1140 fort. Andernfalls friert der Prozess ein, bis die periodische Beladung unter dem asynchronen Kopf liegt (Schritt 1110). Dann wird im Schritt 1120 ein periodischer Deskriptor geholt und in Schritt 1130 das periodische Ende der doppelendigen Queue gefüllt. Der Prozess kehrt dann zu Schritt 1100 zurück.
  • Wenn in Schritt 1100 festgestellt wird, dass die periodische Liste leer ist, wird in Schritt 1140 überprüft, ob die gesamte geschätzte Zeit der asynchronen Beladung unterhalb der in dem Mikrorahmen übrigen Echtzeit liegt. Ist dies nicht der Fall, so kehrt der Prozess zu Schritt 1100 zurück. Andernfalls wird in Schritt 1150 überprüft, ob die asynchrone Beladung unter der Mitte der Queue liegt. Ist dies der Fall, so wird in Schritt 1160 ein asynchroner Deskriptor geholt und das asynchrone Ende der doppelendigen Queue in Schritt 1170 gefüllt, gefolgt von Schritt 1180 des Addierens der geschätzten Zeit (ETE) dieser Transaktion zu dem Zählwert der gesamten ETE. Der Prozess kehrt dann zu Schritt 1140 zurück.
  • Wird nun auf 12 Bezug genommen, so beginnt der Herausladeprozess der vorliegenden Ausgestaltung mit Schritt 1200 des Wartens auf den Mikrorahmenbeginn. Es wird dann in Schritt 1210 überprüft, ob die periodische Seite leer ist, und wenn dies nicht der Fall ist, wird in den Schritten 1220 und 1230 ein periodischer Deskriptor herausgeladen und die entsprechende Transaktion ausgeführt. Ist die periodische Seite leer, so wird überprüft, ob die verbleibende Echtzeit die geschätzte Zeit (ETE) des asynchronen Deskriptors übersteigt (Schritt 1240). Ist dies der Fall, so wird in den Schritten 1250 und 1260 ein asynchroner Deskriptor herausgeladen und die entsprechende Transaktion ausgeführt. Dann wird die geschätzte Zeit von der gesamten ETE subtrahiert (Schritt 1270). Wenn jedoch festgestellt wird, dass keine ausreichende Echtzeit übrig ist, so kehrt der Prozess zu Schritt 1200 zurück, um auf den nächsten Mikrorahmenbeginn zu warten.
  • In einer Ausgestaltung können die oben beschriebenen Prozesse von solcher Art sein, dass keine periodischen Transaktionen jenseits der 80%-Grenze eingeplant werden. Auch können die Prozesse eine adäquate Behandlung für Transmissionsfehler enthalten, die zu einer Situation führen können, in der nicht alle periodischen Transaktionen innerhalb der 80%-Grenze gesendet werden. Eine mögliche Lösung wäre die Detektion solcher Fälle und die Durchführung eines Flushs der periodischen Seite. Das bedeutet, dass die doppelendige Queue gesteuert werden kann, um den Füllzustand einer oder beider Teile der doppelendigen Queue unterhalb eines vorbestimmten Prozentwerts der variablen Länge des jeweiligen Teils zu halten. In einer anderen Ausgestaltung kann die doppelendige Queue gesteuert werden, um die variablen Längen beider Teile unterhalb eines vorbestimmten Prozentwerts der Länge der gesamten doppelendigen Queue zu halten.
  • Der oben in Verbindung mit den 11 und 12 diskutierte Prozess kann den Vorteil aufweisen, dass niemals bereits geholte asynchrone Transaktionen verworfen werden, wenn es noch genügend verbleibende Zeit in dem Mikrorahmen gibt. Stattdessen werden sie zu dem nächsten Mikrorahmen verschoben.
  • Wird nun zu 13 übergegangen, so ist ein USB-2.0-gemäßer Hostcontroller 1300 gemäß einer Ausgestaltung gezeigt. Wie aus der Figur ersichtlich ist, gibt es einen Hostcontroller 1320, der ein erweiterter Hostcontroller (EHC: Enhanced Host Controller) für die USB-2.0-Hochgeschwindigkeitsfunktionalität ist. Dieser Hostcontroller arbeitet in Übereinstimmung mit der EHCI-Spezifikation (EHCI: Enhanced Host Controller Interface) für USB 2.0. Auf der Software-Seite ist dem Hostcontroller 1320 ein spezifischer Hostcontrollertreiber (EHCD) zugeordnet.
  • Ferner gibt es Hostcontroller 1310 für Vollgeschwindigkeits- und Niedergeschwindigkeitsvorgänge. UHCI (Universal Host Controller Interface) oder OHCI (Open Host Controller Interface) sind zwei Industriestandards, die in dem universellen oder offenen Hostcontroller (UHC/OHC) 1310 zum Bereitstellen von USB-1.1-Hostcontrollerschnittstellen angewendet werden. Den Hostcontrollern 1310 sind universelle/offene Hostcontrollergeräte (UHCD/OHCD) auf der untersten Softwareebene zugewiesen.
  • In der Begleithostcontrollereinheit 1310 der vorliegenden Ausgestaltung gibt es zwei OHCI-gemäße Hostcontroller, OHC0 1330 und OHC1 1340. Diese Controller wickeln den gesamten USB-1.1-gemäßen Verkehr ab und können die Legacy-Tastaturemulation für Umgebungen enthalten, die nicht USB-gemäß sind.
  • Ein Port-Router 1350 kann bereitgestellt werden, um die physikalischen Portschnittstellen ihren jeweiligen Eignern zuzuweisen. Die Eignerschaft wird von EHC-Registern gesteuert und standardmäßig werden alle Ports auf die Begleithostcontroller geroutet, um zu ermöglichen, dass ein System mit nur USB-1.1-gemäßen Treibern funktioniert. Wenn ein USB-2.0-gemäßer Treiber in dem System vorhanden ist, wird er die Ports entweder einem Begleithostcontroller 1330, 1340 für Niedergeschwindigkeits- und Vollgeschwindigkeitsgeräte und -hubs (USB-1.1-Verkehr) oder dem EHC 1320 für Hochgeschwindigkeitsgeräte und -hubs zuweisen.
  • Das bedeutet, dass der in 13 gezeigte USB-2.0-Hostcontroller die EHCI-Spezifikation erfüllt und die Verwendung bestehender OHCI-USB-1.1-Hostcontroller mit der minimal notwendigen Abänderung ermöglicht, um eine Schnittstelle zu dem Port-Router-Block 1350 auszubilden, anstelle von physikalischen USB-1.1-Geräten.
  • Der USB-2.0-gemäße Hostcontroller von 13 kann als Hardwarearchitektur definiert sein, um einen EHCI-gemäßen Hostcontroller zur Integration in eine Southbridge zu implementieren. Der Hostcontroller sitzt dann zwischen den analogen USB-2-Eingabe/Ausgabe-Pins und einem Verbindungsschnittstellenmodul zum Ausbilden einer Schnittstelle in Upstream-Richtung zum Systemspeicher hin, z.B. zu einer Northbridge, wenn eine in dem System vorhanden ist. Diese Schnittstelle kann eine interne HyperTransportTM- Schnittstelle sein. Die HyperTransport-Technologie ist eine hochperformante Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung, um integrierte Schaltungen auf einem Motherboard miteinander zu verbinden. Sie kann signifikant schneller sein als ein PCI-Bus bei einer äquivalenten Anzahl von Pins. Die HyperTransport-Technologie ist entwickelt worden, um signifikant mehr Bandbreite bereitzustellen als gegenwärtige Technologien, um Low-Latency-Anworten zu verwenden, um eine niedrige Pinzahl bereitzustellen, um kompatibel mit Legacy-PC-Bussen zu sein, um auf neue Systemnetzwerkarchitekturbusse erweiterbar zu sein, um für Betriebssysteme transparent zu sein und um geringe Auswirkungen auf Peripherietreiber zu haben.
  • Somit wird in der Ausgestaltung von 13 ein HyperTransport-basierter USB-Hostcontroller bereitgestellt, in dem ein erweiterter Hostcontroller 1320 für die Bearbeitung des gesamten USB-Hochgeschwindigkeitsverkehrs verantwortlich ist sowie für die Steuerung der Eignerschaft für sich selbst und die Begleitcontroller 1310 über den Port-Router 1350. Nach einem Rücksetzen beim Einschalten oder einem softwaregesteuerten Rücksetzen des EHC 1320 kann er defaultmäßig einen Zustand aufweisen, in dem alle Ports von den Begleithostcontrollern 1310 besessen und gesteuert werden, alle Betriebsregister ihre jeweiligen Defaultwerte aufweisen und der EHC 1320 angehalten ist, d.h. er weder aus dem Systemspeicher Deskriptoren holt noch irgendeine USB-Aktivität herausgibt. Im Normalbetrieb kann der EHC 1320 isochrone und Interrupt-Transfers von einer periodischen Liste verarbeiten sowie den Großteil ("bulk") und die Steuerung von einer asynchronen Liste.
  • Jede Liste kann leer oder ihre Verarbeitung softwaregesteuert außer Kraft gesetzt sein.
  • Wird nun zu 14 übergegangen, so sind die Komponenten des erweiterten Hostcontrollers EHC 1320 in weiteren Einzelheiten gezeigt. Die Abwicklung des Datenverkehrs zu und von dem Systemspeicher wird durch den Stub 1400 bewerkstelligt. Der Stub 1400 weist die internen Quellen und Senken den jeweiligen HyperTransport-Strömen zu, d.h. Posted Requests, Non-Posted-Requests, Responses (Antworten). Der Stub 1400 arbitriert die interne HyperTransport-Schnittstelle zwischen allen internen Busmastern, d.h. der DMA-Empfangseinrichtung (DMA: Direct Memory Access) 1410, dem Deskriptorcache 1425, der Deskriptorverarbeitungseinrichtung 1430 und der DMA-Sendeeinrichtung 1450. Somit arbitriert der Stub 1400 zwischen dem Holen eines Deskriptors, dem Zurückschreiben von Deskriptoren, dem Empfangen von Daten und dem Senden von Daten.
  • Der Stub 1400 ist mit einem Registerfile 1405 verbunden, der die EHCI-Register enthält. In der vorliegenden Ausgestaltung speichern die EHCI-Register Daten bezüglich der PCI-Konfiguration, den Hostcontroller-Fähigkeiten und den Hostcontroller-Betriebsmoden.
  • Die Deskriptorverarbeitungseinrichtung 1430 ist mit dem Stub 1400 verbunden und besteht aus drei Untereinheiten: der Deskriptorholeinrichtung (DescrFetch) 1435, der doppelendigen Queue, die als Datenspeichereinrichtung agiert (DEQ) 1445, und der Transaktionsvervollständigungsmaschine (TACM) 1440. Die Deskriptorholeinrichtung 1435 bestimmt auf Grundlage von Timinginformationen und Registereinstellungen, welcher Deskriptor als nächster zu holen oder im voraus zu holen ist, und sendet die Anforderung an den Stub 1400 und/oder an den Deskriptorcache 1425. Wenn sie den Deskriptor empfängt, sendet sie ihn an die DEQ-Einrichtung 1445.
  • Die DEQ-Einrichtung 1445 hält die im voraus geholten Deskriptoren. Indem sie ein Speichermanagement durchführt, besteht ihre Hauptfunktion darin, eine Speicherkapazität bereitzustellen, um Speicherzugriffslegacies für Deskriptorholvorgänge zu mitteln.
  • Die Transaktionsvervollständigungsmaschine 1440 ist mit der Deskriptorholeinrichtung 1435 verbunden, um die Statusrückschreibung zu Deskriptoren zu verwalten. Zu diesem Zwecke ist die Transaktionsvervollständigungsmaschine 1440 mit dem Deskriptorcache 1425 verbunden.
  • Dieser Cache enthält Deskriptoren, die von der Deskriptorholeinrichtung 1435 für schnellen wiederholten Zugriff im voraus geholt worden sind. Die in dem Deskriptorcache 1425 gehaltenen Deskriptoren werden von der Transaktionsvervollständigungsmaschine 1440 aktualisiert und eventuell über den Stub 1400 in den Systemspeicher zurückgeschrieben. Der Deskriptorcache 1425 kann voll assoziativ mit Write-Through-Eigenschaften sein. Er kann ferner die Ersetzung der Inhalte jedes Mikrorahmens steuern.
  • Wie aus 14 ersichtlich ist, werden ferner eine DMA-Sendeeinrichtung 1450 und eine DMA-Empfangseinrichtung 1410 bereitgestellt. Die DMA-Sendeeinrichtung 1450 besteht aus einer Datenholeinrichtung (DataFetch) 1455 und einem Datensendepuffer (TxBuf) 1460. Die Datenholeinrichtung 1455 ist ein DMA-Lesebusmaster und überprüft die Einträge in der DEQ-Einrichtung 1445 der Deskriptor-Verarbeitungseinrichtung 1430. Die Datenholeinrichtung 1455 holt die entsprechenden Daten im voraus und leitet sie an den Datensendepuffer 1460 weiter.
  • Der Datensendepuffer 1460 kann ein FIFO-Puffer sein und seine Funktion entspricht der der DEQ-Einrichtung 1445 darin, dass er es ermöglicht, im voraus genügend Daten für herausgehende Transaktionen zu holen, um die Speichersystemlatency abzudecken.
  • Die DMA-Empfangseinrichtung 1410 besteht aus der Datenschreibeinrichtung (DataWrite) 1415, die als DMA-Schreibbusmastereinrichtung dient, um die empfangenen Daten, die in dem Datenempfangspuffer (RxBuf) 1420 gespeichert sind, an ihre jeweilige Stelle im Systemspeicher zu schieben. Der Datenempfangspuffer 1420 kann ein einfacher FIFO-Puffer sein.
  • Weiterhin wird eine Rahmentimingeinrichtung (FrameTiming) 1465 bereitgestellt, die die USB-Masterzeitreferenz ist. Ein Taktpuls der Rahmentimingeinrichtung entspricht einem ganzzahligen (z.B. 8 oder 16) Vielfachen der Hochgeschwindigkeits-USB-Bitzeiten. Die Rahmentimingeinrichtung 1465 ist mit der DEQ-Einrichtung 1445 und dem Paketbearbeitungsblock 1470 verbunden.
  • Der Paketbearbeitungsblock 1470 besteht aus einer Paketaufbaueinrichtung (PktBuild) 1485, die die notwendigen USB-Busvorgänge konstruiert, um Daten und Handshakes zu senden, und aus einem Paketdekodierer (PktDecode) 1475, der empfangene USB-Pakete zerlegt. Weiterhin wird eine Transaktionssteuereinrichtung (TaCtrl) 1480 bereitgestellt, die die Paketaufbaueinrichtung 1485 und den Paketdekodierer 1475 überwacht. Weiterhin umfasst die Paketbearbeitungseinrichtung 1470 eine CRC-Einrichtung (CRC: Cyclic Redundancy Check) 1490 zum Erzeugen und Überprüfen von CRC-Daten für gesendete und empfangene Daten.
  • Die Paketaufbaueinrichtung 1485 und der Paketdekodierer 1475 der Paketbearbeitungseinrichtung 1470 sind mit dem Root-Hub 1495 verbunden, der portspezifische Steuerregister, eine Verbindungsdetektionslogik und eine Streu/Einsammelfunktionalität für Pakete zwischen der Paketbearbeitungseinrichtung 1470 und dem Port-Router enthält.
  • Wird nun zu 15 übergegangen, so ist die in 14 gezeigte DEQ-Einrichtung 1445 in weiteren Einzelheiten gezeigt. Die gesamte doppelendige Queue wird von der Steuereinrichtung QCTRL 1500 gesteuert, die auch mit der Deskriptorholeinrichtung 1435, der Transaktionsvervollständigungsmaschine 1440 und der DMA-Sendeeinrichtung 1450 interagiert. Die Deskriptoren sind in dem Deskriptor-RAM (DESCRRAM) 1520 gespeichert. Die Datenspeichereinrichtung von 15 verfolgt auch die geschätzte Routenzeit (ETE) für die gespeicherten Deskriptoren. Die ETE-Werte werden in dem ETE-RAM 1510 parallel zu ihren Gegenparts in dem Deskriptor-RAM 1520 gespeichert. Der ETE-Akkumulator (ETE-ACCU)1530 speichert einen Wert, der die geschätzte Zeit angibt, um alle gegenwärtig in der Queue befindlichen Deskriptoren zu vervollständigen. Der Akkumulator wird um die geschätzte Zeit für jeden neu gespeicherten Deskriptor inkrementiert und um den ETE-Wert des Deskriptors dekrementiert, der als letzter entfernt wurde. Es kann weitere Einheiten 1540 und 1550 geben, um eine Schnittstelle zu anderen Einheiten des erweiterten Hostcontrollers zu bilden.
  • Während die Erfindung in Bezug auf die physikalischen Ausgestaltungen, die in Übereinstimmung damit konstruiert worden sind, beschrieben worden ist, wird Fachleuten ersichtlich sein, dass verschiedene Modifikationen, Variationen und Verbesserungen der vorliegenden Erfindung im Lichte der obigen Lehren und innerhalb des Umfangs der beigefügten Ansprüche gemacht werden können, ohne von der Idee und dem beabsichtigten Umfang der Erfindung abzuweichen. Zusätzlich sind solche Bereiche, in denen davon ausgegangen wird, dass sich Fachleute auskennen, hier nicht beschrieben worden, um die beschriebene Erfindung nicht unnötig zu verschleiern. Demgemäß ist zu verstehen, dass die Erfindung nicht durch die spezifisch verdeutlichten Ausgestaltungen, sondern nur durch den Umfang der beigefügten Ansprüche beschränkt wird.

Claims (46)

  1. Vorrichtung mit einem Queuemechanismus, umfassend: eine Datenspeichereinrichtung (200-270, 300, 1445, 1520) zum Speichern einer Vielzahl von Datenelementen, wobei die Datenspeichereinrichtung eine Vielzahl von Registerelementen (200-270) enthält, die jeweils wenigstens ein Datenelement speichern können, wobei die Vielzahl von Registerelementen eingerichtet ist, um eine Sequenz (300) von Registerelementen zu bilden; und eine Steuereinrichtung (1500) zum Steuern der Datenspeichereinrichtung, um erste Daten in einem ersten Teil (200-230) der Sequenz von Registerelementen und zweite Daten in einem zweiten Teil (240-270) der Sequenz von Registerelementen zu speichern, wobei der erste Teil und der zweite Teil von variablen Längen sind und die Summe der variablen Längen gleich der Länge der Sequenz von Registerelementen ist, wobei die Steuereinrichtung eingerichtet ist zum Steuern sowohl des ersten als auch des zweiten Teils der Sequenz von Registerelementen, um die jeweiligen Daten FIFO-mäßig zu speichern, und wobei der erste und zweite Teil der Sequenz von Registerelementen jeweils ein inneres und ein äußeres Ende aufweisen und die jeweiligen inneren Enden (230, 270) innerhalb der Sequenz von Registerelementen und die jeweiligen äußeren Enden (200, 240) am Anfang oder Ende der Sequenz von Registerelementen liegen, wobei die Steuereinrichtung eingerichtet ist zum Steuern sowohl des ersten als auch des zweiten Teils der Sequenz von Registerelementen, um hereinkommende Daten in den entsprechenden Teil am jeweiligen inneren Ende einzufüllen.
  2. Vorrichtung nach Anspruch 1, wobei die ersten Daten periodische Daten und die zweiten Daten asynchrone Daten sind und die Steuereinrichtung eingerichtet ist zum Steuern des ersten Teils in periodischer Weise und des zweiten Teils in asynchroner Weise.
  3. Vorrichtung nach Anspruch 2, wobei die ersten Daten und die zweiten Daten Datenelemente desselben Typs enthalten und die Datenelemente desselben Typs Transaktionselemente sind.
  4. Vorrichtung nach Anspruch 3, wobei die Steuereinrichtung eingerichtet ist zum Steuern der Datenspeichereinrichtung abhängig von einer geschätzten Dauer des Transfers, der von den Transaktionselementen dargestellt wird.
  5. Vorrichtung nach Anspruch 1, wobei die Datenelemente, die in den Registerelementen gespeichert sind, Zeiger auf entsprechende Stellen in einem wahlfreien Zugriffsspeicher sind.
  6. Vorrichtung nach Anspruch 1, wobei die Steuereinrichtung eingerichtet ist zum Holen der ersten und zweiten Daten aus einem Speicher.
  7. Vorrichtung nach Anspruch 1, wobei der erste und zweite Teil der Sequenz keinen Überlapp aufweisen.
  8. Vorrichtung nach Anspruch 1, wobei der erste und zweite Teil der Sequenz einen Überlapp von wenigstens einem Registerelement aufweisen.
  9. Vorrichtung nach Anspruch 1, weiterhin umfassend: ein erstes Adressenregister (310, 330), das ein erstes Registerelement identifiziert, das eine Grenze des ersten Teils der Sequenz von Registerelementen bildet, wobei sich der erste Teil von einer Seite (200) der Sequenz zu dem identifizierten ersten Registerelement erstreckt; und ein zweites Adressenregister (310, 320), das ein zweites Registerelement identifiziert, das eine Grenze des zweiten Teils der Sequenz von Registerelementen bildet, wobei sich der zweite Teil von der anderen Seite (240) der Sequenz zu dem identifizierten zweiten Registerelement erstreckt.
  10. Vorrichtung nach Anspruch 9, wobei die Steuereinrichtung in einem Modus betreibbar ist, in dem das erste Adressenregister (310) gleich dem zweiten Adressenregister (310) ist.
  11. Vorrichtung nach Anspruch 9, wobei die Steuereinrichtung in einem Modus betreibbar ist, in dem das identifizierte erste Registerelement gleich dem identifizierten zweiten Registerelement ist.
  12. Vorrichtung nach Anspruch 9, wobei die Steuereinrichtung in einem Modus betreibbar ist, in dem das erste Adressenregister (330) von dem zweiten Adressenregister (320) verschieden ist und sich das identifizierte erste Registerelement von dem identifizierten zweiten Registerelement unterscheidet.
  13. Vorrichtung nach Anspruch 9, wobei die Steuereinrichtung imstande ist, den Betrieb zwischen einem ersten und einem zweiten Modus umzuschalten, wobei in dem ersten Modus das erste Adressenregister (310) gleich dem zweiten Adressenregister (310) ist und in dem zweiten Modus das erste Adressenregister (330) von dem zweiten Adressenregister (320) verschieden ist.
  14. Vorrichtung nach Anspruch 9, weiterhin umfassend: ein drittes Adressenregister (340), das ein drittes Registerelement identifiziert, das den Füllstand des ersten Teils der Sequenz von Registerelementen angibt; und ein viertes Adressenregister (350), das ein viertes Registerelement identifiziert, das den Füllstand des zweiten Teils der Sequenz von Registerelementen angibt.
  15. Vorrichtung nach Anspruch 14, wobei: die Steuereinrichtung eingerichtet ist zum Setzen eines ersten oder zweiten Hitflags, wenn sie feststellt, dass der Füllstand des ersten oder zweiten Teils der Sequenz von Registerelementen jenseits der jeweiligen Grenze liegt; und die Steuereinrichtung eingerichtet ist zum Aktualisieren des Inhalts des ersten bzw. zweiten Adressenregisters, wenn das entsprechende Hitflag gesetzt ist.
  16. Vorrichtung nach Anspruch 14, wobei die Steuereinrichtung eingerichtet ist, um den Füllstand des ersten oder zweiten Teils der Sequenz von Registerelementen unterhalb eines vorbestimmten Prozentwerts der variablen Länge des jeweiligen Teils der Sequenz von Registerelementen zu halten.
  17. Vorrichtung nach Anspruch 16, wobei der vorbestimmte Prozentwert etwa 80% beträgt.
  18. Vorrichtung nach Anspruch 16, wobei die Steuereinrichtung eingerichtet ist zum Durchführen eines Flushs in einem der beiden Teile der Sequenz von Registerelementen, wenn sie feststellt, dass einer der Füllstände dabei ist, den vorbestimmten Prozentwert zu übersteigen.
  19. Vorrichtung nach Anspruch 1, wobei die Steuereinrichtung eingerichtet ist zum Steuern der Datenspeichereinrichtung, um die variablen Längen des ersten und zweiten Teils der Sequenz von Registerelementen unterhalb eines vorbestimmten Prozentwerts der Länge der Sequenz von Registerelementen zu halten.
  20. Vorrichtung nach Anspruch 1, wobei die ersten Daten und die zweiten Daten von verschiedenen Datentypen sind.
  21. Vorrichtung nach Anspruch 20, wobei die ersten Daten Transaktionselemente enthalten und die zweiten Daten aus einem Speicher gelesene oder in einen Speicher zu schreibende Daten sind.
  22. Vorrichtung nach Anspruch 1, nämlich ein USB-Hostcontroller (USB: Universal Serial Bus).
  23. Vorrichtung nach einem der Ansprüche 1 bis 22, wobei die Vorrichtung ein integrierter Southbridge-Schaltkreischip ist.
  24. Verfahren zum Betreiben einer Datenspeichereinrichtung (200-270, 300, 1445, 1520) mit einem Queuemechanismus, um eine Vielzahl von Datenelementen zu speichern, wobei die Datenspeichereinrichtung eine Vielzahl von Registerelementen (200-270) enthält, von denen jedes Registerelement wenigstens ein Datenelement speichern kann, wobei die Vielzahl von Registerelementen eingerichtet ist, um eine Sequenz (300) von Registerelementen zu bilden, wobei das Verfahren umfasst: Steuern der Datenspeichereinrichtung, um erste Daten in einem ersten Teil (200-230) der Sequenz von Registerelementen zu speichern; und Steuern der Datenspeichereinrichtung, um zweite Daten in einem zweiten Teil (240-270) der Sequenz von Registerelementen zu speichern; wobei der erste Teil und der zweite Teil von variablen Längen sind und die Summe der variablen Längen gleich der Länge der Sequenz von Registerelementen ist, wobei das Verfahren eingerichtet ist zum Steuern sowohl des ersten als auch des zweiten Teils der Sequenz von Registerelementen, um die entsprechenden Daten FIFO-mäßig zu speichern, und wobei sowohl der erste als auch der zweite Teil der Sequenz von Registerelementen ein inneres und ein äußeres Ende aufweisen und die jeweiligen inneren Enden (230, 270) innerhalb der Sequenz von Registerelementen und die jeweiligen äußeren Enden (200, 240) am Anfang oder Ende der Sequenz von Registerelementen liegen, wobei das Verfahren eingerichtet ist zum Steuern sowohl des ersten als auch des zweiten Teils der Sequenz von Registerelementen, um hereinkommenden Daten in den entsprechenden Teil am jeweiligen inneren Ende einzufüllen.
  25. Verfahren nach Anspruch 24, wobei die ersten Daten periodische Daten und die zweiten Daten asynchrone Daten sind und das Verfahren eingerichtet ist zum Steuern des ersten Teils in periodischer Weise und des zweiten Teils in asynchroner Weise.
  26. Verfahren nach Anspruch 25, wobei die ersten Daten und die zweiten Daten Datenelemente desselben Typs enthalten.
  27. Verfahren nach Anspruch 26, wobei die Datenelemente desselben Typs Transaktionselemente sind.
  28. Verfahren nach Anspruch 27, wobei das Verfahren eingerichtet ist zum Steuern der Datenspeichereinrichtung abhängig von einer geschätzten Dauer der Transfers, die von den Transaktionselementen dargestellt werden.
  29. Verfahren nach Anspruch 24, weiterhin umfassend: Holen der ersten und zweiten Daten aus einem Speicher.
  30. Verfahren nach Anspruch 24, wobei der erste und zweite Teil der Sequenz keinen Überlapp aufweisen.
  31. Verfahren nach Anspruch 24, wobei der erste und zweite Teil der Sequenz einen Überlapp von wenigstens einem Registerelement aufweisen.
  32. Verfahren nach Anspruch 24, weiterhin umfassend: Betreiben eines ersten Adressenregisters (310, 330), das ein erstes Registerelement identifiziert, das eine Grenze des ersten Teils der Sequenz von Registerelementen bildet, wobei sich der erste Teil von einer Seite (200) der Sequenz zu dem identifizierten ersten Registerelement erstreckt; und Betreiben eines zweiten Adressenregisters (310, 320), das ein zweites Registerelement identifiziert, das eine Grenze des zweiten Teils der Sequenz von Registerelementen bildet, wobei sich der zweite Teil von der anderen Seite (240) der Sequenz zu dem identifizierten zweiten Registerelement erstreckt.
  33. Verfahren nach Anspruch 32, wobei das erste Adressenregister (310) gleich dem zweiten Adressenregister (310) ist.
  34. Verfahren nach Anspruch 32, wobei das identifizierte erste Registerelement gleich dem identifizierten zweiten Registerelement ist.
  35. Verfahren nach Anspruch 32, wobei das erste Adressenregister (330) von dem zweiten Adressenregister (320) und das identifizierte erste Registerelement von dem identifizierten zweiten Registerelement verschieden ist.
  36. Verfahren nach Anspruch 32, weiterhin umfassend: Umschalten des Betriebs zwischen einem ersten und einem zweiten Modus, wobei in dem ersten Modus das erste Adressenregister (310) gleich dem zweiten Adressenregister (310) ist und in dem zweiten Modus das erste Adressenregister (330) von dem zweiten Adressenregister (320) verschieden ist.
  37. Verfahren nach Anspruch 32, weiterhin umfassend: Betreiben eines dritten Adressenregisters (340), das ein drittes Registerelement identifiziert, das den Füllstand des ersten Teils der Sequenz von Registerelementen angibt; und Betreiben eines vierten Adressenregisters (350), das ein viertes Registerelement identifiziert, das den Füllstand des zweiten Teils der Sequenz von Registerelementen angibt.
  38. Verfahren nach Anspruch 37, weiterhin umfassend: Setzen eines ersten oder zweiten Hitflags, wenn der Füllstand des ersten oder zweiten Teils der Sequenz von Registerelementen jenseits der jeweiligen Grenze liegt; und Aktualisieren des Inhalts des ersten bzw. zweiten Adressenregisters, wenn das entsprechende Hitflag gesetzt ist.
  39. Verfahren nach Anspruch 37, wobei das Verfahren eingerichtet ist zum Halten des Füllstand des ersten oder zweiten Teils der Sequenz von Registerelementen unter einem vorbestimmten Prozentwert der variablen Länge des jeweiligen Teils der Sequenz von Registerelementen.
  40. Verfahren nach Anspruch 39, wobei der vorbestimmte Prozentwert etwa 80% beträgt.
  41. Verfahren nach Anspruch 39, wobei das Verfahren eingerichtet ist zum Durchführen eines Flushs in dem ersten oder zweiten Teil der Sequenz von Registerelementen, wenn einer der Füllstände dabei ist, den vorbestimmten Prozentwert zu überschreiten.
  42. Verfahren nach Anspruch 24, wobei das Verfahren eingerichtet ist zum Steuern der Datenspeichereinrichtung, um die variablen Längen des ersten und zweiten Teils der Sequenz von Registerelementen unterhalb eines vorbestimmten Prozentwerts der Länge der Sequenz von Registerelementen zu halten.
  43. Verfahren nach Anspruch 24, wobei die ersten Daten und die zweiten Daten von verschiedenen Datentypen sind.
  44. Verfahren nach Anspruch 43, wobei die ersten Daten Transaktionselemente und die zweiten Daten Daten enthalten, die aus einem Speicher gelesen oder in einen Speicher zu schreiben sind.
  45. Verfahren nach Anspruch 24, nämlich zum Betreiben eines USB-Hostcontrollers (USB: Universal Serial Bus).
  46. Verfahren nach Anspruch 24, nämlich zum Betreiben eines integrierten Southbridge-Schaltkreischips.
DE10219359A 2002-04-30 2002-04-30 Vorrichtung und Verfahren mit einem Queuemechanismus Expired - Fee Related DE10219359B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE10219359A DE10219359B4 (de) 2002-04-30 2002-04-30 Vorrichtung und Verfahren mit einem Queuemechanismus
US10/283,733 US6944725B2 (en) 2002-04-30 2002-10-30 Reciprocally adjustable dual queue mechanism

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10219359A DE10219359B4 (de) 2002-04-30 2002-04-30 Vorrichtung und Verfahren mit einem Queuemechanismus

Publications (2)

Publication Number Publication Date
DE10219359A1 DE10219359A1 (de) 2003-11-27
DE10219359B4 true DE10219359B4 (de) 2007-05-03

Family

ID=29224931

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10219359A Expired - Fee Related DE10219359B4 (de) 2002-04-30 2002-04-30 Vorrichtung und Verfahren mit einem Queuemechanismus

Country Status (2)

Country Link
US (1) US6944725B2 (de)
DE (1) DE10219359B4 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050002642A1 (en) * 2003-05-01 2005-01-06 Yusuke Minagawa Dynamic buffer control for real-time system
TWI307008B (en) * 2003-08-14 2009-03-01 Via Tech Inc Computer system with power management and the method thereof
US20140089604A1 (en) * 2012-09-27 2014-03-27 Apple Inc. Bipolar collapsible fifo
US20140237195A1 (en) * 2013-02-20 2014-08-21 Apple Inc. N-dimensional collapsible fifo

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043981A (en) * 1990-05-29 1991-08-27 Advanced Micro Devices, Inc. Method of and system for transferring multiple priority queues into multiple logical FIFOs using a single physical FIFO
DE19740738A1 (de) * 1997-09-16 1999-03-18 Siemens Ag Verfahren zum Wiederanordnen einer Liste der in einer untergeordneten Managementebene eines Kommunikationsnetzes aktiven Alarme

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5381528A (en) * 1992-10-15 1995-01-10 Maxtor Corporation Demand allocation of read/write buffer partitions favoring sequential read cache
US5621898A (en) * 1994-11-29 1997-04-15 Compaq Computer Corporation Arbiter organization for serial bus transfers
US6044418A (en) * 1997-06-30 2000-03-28 Sun Microsystems, Inc. Method and apparatus for dynamically resizing queues utilizing programmable partition pointers
US6145061A (en) * 1998-01-07 2000-11-07 Tandem Computers Incorporated Method of management of a circular queue for asynchronous access
US6314494B1 (en) * 1999-04-15 2001-11-06 Agilent Technologies, Inc. Dynamically size configurable data buffer for data cache and prefetch cache memory
US6466579B1 (en) * 1999-05-28 2002-10-15 Network Equipment Technologies Inc. Bi-modal control system and method for partitioning a shared output buffer in a connection-oriented network connections device
US6801991B2 (en) * 2001-12-21 2004-10-05 Agere Systems Inc. Method and apparatus for buffer partitioning without loss of data
US6782461B2 (en) * 2002-02-25 2004-08-24 Intel Corporation Dynamically adjustable load-sharing circular queues

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043981A (en) * 1990-05-29 1991-08-27 Advanced Micro Devices, Inc. Method of and system for transferring multiple priority queues into multiple logical FIFOs using a single physical FIFO
DE19740738A1 (de) * 1997-09-16 1999-03-18 Siemens Ag Verfahren zum Wiederanordnen einer Liste der in einer untergeordneten Managementebene eines Kommunikationsnetzes aktiven Alarme

Also Published As

Publication number Publication date
US6944725B2 (en) 2005-09-13
DE10219359A1 (de) 2003-11-27
US20030204686A1 (en) 2003-10-30

Similar Documents

Publication Publication Date Title
DE10234991B4 (de) Hostcontrollerdiagnose für einen seriellen Bus
DE69324926T2 (de) Doppelte pufferungspeicherung zwischen dem speicherbus und dem expansionsbus eines rechnersystems
DE69027515T2 (de) Vorrichtung für Prioritätsarbitrierungskonditionierung bei gepufferter Direktspeicheradressierung
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE602004012106T2 (de) Multikanal-DMA mit gemeinsamem FIFO-Puffer
DE10394081B4 (de) Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher
DE69519926T2 (de) Verfahren und vorrichtung zum einhalten der transaktionssteuerung und zur unterstützung von verzögerten antworten in einer busbrücke
DE3889366T2 (de) Interface für ein Rechnersystem mit reduziertem Befehlssatz.
DE10234990B4 (de) Hostcontroller, Verfahren zum Betreiben, zugehöriges Southbridgebauelement und Computersystem zur Steuerung der Ersetzung im voraus geholter Deskriptoren in einem Cache
DE60304455T2 (de) Usb host controller
DE10239814B4 (de) Erweiterte Testmodusunterstützung für Hostcontroller
DE10213839A1 (de) DMA-Mechanismus für einen Hochgeschwindigkeitspaketbus
DE68928040T2 (de) Pufferspeichersubsystem für Peripheriesteuerungen und Verfahren
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE60025788T2 (de) Flexibles Mehrzweck-Ein/Ausgabesystem
DE69327374T2 (de) Datenverarbeitungsgerät mit verbessertem Datendurchfluss
DE102020130534A1 (de) System, Vorrichtung und Verfahren zum persistenten Umgehen mit Speicheranforderungen in einem System
DE69111764T2 (de) Übereinstimmungsprotokolle für Mehrprozessoren mit gemeinsam genutztem Speicher.
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE3788548T2 (de) Zugriffssteuerungssystem mit Programmodus.
DE69119149T2 (de) Struktur zur direkten Speicher-zu-Speicher-Übertragung
DE10224163B4 (de) Transaktionsdauermanagement in einem USB-Hostcontroller
DE602004008060T2 (de) Usb host controller mit speicher für transferdeskriptoren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

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

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

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20121101