DE10164456A1 - Datenwarteschlangensystem - Google Patents

Datenwarteschlangensystem

Info

Publication number
DE10164456A1
DE10164456A1 DE10164456A DE10164456A DE10164456A1 DE 10164456 A1 DE10164456 A1 DE 10164456A1 DE 10164456 A DE10164456 A DE 10164456A DE 10164456 A DE10164456 A DE 10164456A DE 10164456 A1 DE10164456 A1 DE 10164456A1
Authority
DE
Germany
Prior art keywords
queue
identifier
blocks
data
memory
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.)
Withdrawn
Application number
DE10164456A
Other languages
English (en)
Inventor
Alistair Goudie
Colin Helliwell
Marcus Jones
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.)
Microsemi Semiconductor Ltd
Original Assignee
Zarlink Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GBGB0031761.0A external-priority patent/GB0031761D0/en
Application filed by Zarlink Semiconductor Ltd filed Critical Zarlink Semiconductor Ltd
Publication of DE10164456A1 publication Critical patent/DE10164456A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System (AREA)
  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)

Abstract

Ein Datenwarteschlangensystem beinhaltet mehrere Speicherblöcke, die in einem Speicher definiert sind, sowie eine Warteschlange, die eine Anzahl von Speicherblöcken beinhaltet, die jeweils eine Verkettung mit dem folgenden Block in der Datenwarteschlange aufweisen. Ein Warteschlangenbezeichner beinhaltet Identifizierer, die identifizieren: den letzten Block in der Warteschlange, die Speicherstelle, bei welcher die letzte Lesefestschreibung stattfand (und optional einen Offset von einer vorgegebenen Stelle in jenem Block), die Speicherstelle, bei welcher die letzte Schreibfestschreibung stattfand (und optional einen Offset von einer vorgegebenen Stelle in jenem Speicherblock), die Größe der Blöcke, die Speicherstelle, bei welcher der letzte Schreibvorgang stattfand, die Anzahl von nicht verwendeten Blöcken, die Anzahl von Blöcken, die zu lesende Daten enthalten, den Typ von Datenwarteschlange, die Speicherstelle, bei welcher der letzte Lesevorgang stattfand, und die Anzahl von Blöcken, die seit der letzten Lesefestschreibung gelesen wurden.

Description

Diese Erfindung bezieht sich auf ein Datenwarteschlangensystem.
Gemäß der Erfindung wird ein Datenwarteschlangensystem bereitgestellt, das beinhaltet: mehrere Speicherblöcke, die in einem Speicher definiert sind; eine Datenwarteschlange mit einer Anzahl von Speicherblöcken, wo­ bei jeder nichtendseitige Speicherblock eine Verkettung zu dem folgenden Block in der Datenwarteschlange beinhaltet, sowie einem Warteschlan­ genbezeichner, der im Speicher gespeichert ist, wobei der Warteschlan­ genbezeichner beinhaltet: einen ersten Identifizierer, der den letzten Block in der Warteschlange identifiziert; einen zweiten Identifizierer, der die Spei­ cherstelle identifiziert, bei welcher die letzte Lesefestschreibung stattfand, und einen dritten Identifizierer, der die Speicherstelle identifiziert, bei wel­ cher die letzte Schreibfestschreibung stattfand.
Diese Erfindung ermöglicht, dass sowohl Hardware als auch Software mit dem Warteschlangensystem intrigieren, und insbesondere dem War­ teschlangenbezeichner. Diese Erfindung ermöglicht außerdem, dass eine Anzahl von Warteschlangen in dem Speicher aufgebaut wird, die nicht durch Hardware begrenzt ist.
In den Ausführungsformen findet eine Lesefestschreibung als Folge des Empfangs einer Bestätigung statt, dass kein Auslesen von Daten aus einer Warteschlange mehr erforderlich ist. In ähnlicher Weise findet eine Schreibfestschreibung als Folge des Empfangs einer Bestätigung statt, dass Daten, die in eine Warteschlange geschrieben wurden, zum Lesen zur Verfügung gestellt werden sollen.
Nunmehr werden Ausführungsformen der vorliegenden Erfindung lediglich beispielhaft unter Bezugnahme auf die begleitenden Zeichnungen be­ schrieben, von denen
Fig. 1 ein Warteschlangenverwaltersystem mit vier Warteschlangennut­ zern zeigt.
Bezugnehmend auf Fig. 1 ist ein Warteschlangenverwaltersystem 10 ge­ zeigt, das mit einem ersten bis vierten Warteschlangennutzer 11 bis 14 über je eine von einer ersten bis vierten Hardware-Warteschlangennutzer­ schnittstelle 15 bis 18 verbunden ist. Das Warteschlangenverwaltersystem 10 beinhaltet einen Hardware-Warteschlangenverwalterkern 19, der über eine Software-Schnittstelle 20 durch Software gesteuert wird. Der Warte­ schlangenverwalterkern 19 ist mit jeder der Warteschlangennutzer-Schnitt­ stellen 15 bis 18 über je eines von einem ersten bis vierten Warteschlan­ genportal 21 bis 24 und einen gemeinsamen Bus (nicht gezeigt) verbun­ den.
Die Software-Schnittstelle 20 ist für die Erzeugung und Auflösung von War­ teschlangen, für den Neuaufbau von Warteschlangen und für die Zufüh­ rung zu den Speicherblöcken verantwortlich, die in den Warteschlangen verwendet werden. Die Hauptaufgabe des Warteschlangenverwalterkerns 19 besteht in der Wiederzuweisung "verwendeter Blöcke" zurück an die Enden der Warteschlangen. Der Warteschlangenverwalterkern 19 beinhal­ tet außerdem einen Buszuteiler (nicht gezeigt), der steuert, wie und wann parallele Hardware- und Softwarefunktionen auf den Bus (nicht gezeigt) zugreifen können.
Die Warteschlangenportale 21 bis 24 stellen einen Zugriff auf die Warte­ schlangen bereit. Jedes Warteschlangenportal 21 bis 24 beinhaltet zwei Teile. Ein Teil kann dazu verwendet werden, in eine Warteschlange zu schreiben, der andere Teil kann dazu verwendet werden, aus einer Warte­ schlange zu lesen (jeder Teil kann auf verschiedene Warteschlangen zugreifen). Wenngleich lediglich vier Warteschlangenportale 21 bis 24 ge­ zeigt sind, gibt es keine Beschränkung für die Anzahl an Portalen, die ver­ wendet werden können. Die Haupteinschränkung für die Anzahl an Porta­ len ist die im ungünstigsten Fall durch diese erforderliche Busbandbreite.
Für jeden Warteschlangennutzer 11 bis 14 ist ein Warteschlangenportal 21 bis 24 erforderlich. Ein Warteschlangennutzer 11 bis 14 kann auf mehrere Warteschlangen zugreifen und kann gleichzeitig aus einer Warteschlange lesen, während er in eine andere Warteschlange schreibt. In diesem Fall bestehen die Aufgaben gleichzeitig, die Zugriffe auf den Bus werden je­ doch durch den Buszuteiler sequentiell durchgeführt. Jedes Mal jedoch, wenn ein Warteschlangennutzer 11 bis 14 aus einer anderen Warte­ schlange lesen oder in eine andere Warteschlange schreiben möchte, muss er deren Warteschlangenportal 21 bis 24 mitteilen, die momentanen Warteschlangenzeiger zu entladen und dann neue Warteschlangenzeiger zu laden.
Jeder Warteschlangennutzer 11 bis 14 ist eine Standard-Komponente oder -Funktion mit der Möglichkeit eines direkten Speicherzugriffs (DMA). Daher ist für jeden Warteschlangennutzer 11 bis 14 seine Warteschlangennutzer- Schnittstelle 15 bis 18 erforderlich, um DMA-Anforderungs- und Bestäti­ gungssignale in einen Standard-Satz von Signalen zu übersetzen, die von den Warteschlangenportalen 21 bis 24 erkannt werden. Bei einigen An­ wendungen ist dies eine einfache Signalübersetzung, während die Schnitt­ stelle 15 bis 18 bei anderen Anwendungen Daten hinzufügt oder entfernt, um in ein oder von einem anwendungsspezifischen Paketformat zu über­ setzen.
Der grundlegende Aufbaublock von asynchronen Warteschlangen ist ein Block eines Speichers mit wahlfreiem Zugriff (RAM) (nicht gezeigt). Die Menge an RAM, die für das Warteschlangenverwaltersystem 10 zur Verfü­ gung steht, ist in viele kleine Speicherblöcke der gleichen Größe auf­ gesplittet, um das zusätzliche Speichern der Speicher-"Blockgröße" mit je­ dem Speicherblock zu vermeiden. Alternativ können verschiedene Warte­ schlangen unterschiedliche Speicherblockgrößen verwenden, wenngleich dies die Software kompliziert machen würde, welche die Warteschlangen erzeugt und skaliert. In dieser Ausführungsform sind die Speicherblöcke 64 Byte lang.
Jeder Speicherblock beginnt mit einem "Verkettungsfeld", das einen Zeiger für die Adresse des Verkettungsfeldes des nächsten Speicherblocks dar­ stellt. Der von der Warteschlange verwendete Speicher besteht aus einer Anzahl von Speicherblöcken, die irgendwo in dem RAM verteilt sein kön­ nen und die durch Verkettungsfelder verkettet sind. Dieses Warteschlan­ genverwaltersystem 10 verwendet lediglich unidirektionale Verkettungsfel­ der, so dass das QMS über Blöcke hinweg nur vorwärts suchen kann. Wenn der momentane Block das letzte Glied in der Kette ist, enthält sein Verkettungsfeld überall Einsen (= 1). Alternativ können bidirektionale Verkettungsfelder verwendet werden, wenn auch mit zusätzlicher Komplexität und mit reduzierter Speichernutzungseffizienz.
Es gibt außerdem zwei ausführungsabhängige Einschränkungen. Die erste besteht darin, dass alle Speicherblöcke (und daher Verkettungsfelder) an einer geradzahligen Bytegrenze beginnen. Die zweite Einschränkung be­ steht darin, dass die maximale RAM-Größe 64 kByte beträgt. Diese zwei Einschränkungen bedeuten, dass das Verkettungsfeld in einem Buszyklus gelesen oder geschrieben werden kann.
Unmittelbar nach dem Verkettungsfeld befindet sich ein "Blocksteuerungs"- Feld. Dieses enthält ein Längenfeld, das anzeigt, wie viele Informations­ bytes momentan in dem Block gespeichert sind, sowie vier Steuerbits. Die vier höchstwertigen Bits (MSBs) des Blocksteuerfeldes bilden die Steuer­ bits, die Grenzen in dem Datenfluss anzeigen. Das Längenfeld ist in den niedrigstwertigen Bits (LSBs) des Blocksteuerfeldes gespeichert.
In Tabelle 1 ist ein Speicherblock gezeigt:
Tabelle 1
Viele Kommunikationssysteme gehen mit Paketen von Daten anstatt ei­ nem kontinuierlichen Datenstrom um. Das Warteschlangenverwaltersys­ tem 10 identifiziert mehrere Typen von Paketgrenzen durch Verwenden der vier Steuermerker in jedem Speicherblock. Diese Steuermerker sind die 4 MSBs des Blocksteuerfeldes. Wenn das höchstwertige Steuerbit ge­ setzt ist, bedeutet das, dass das erste Informationsbyte in dem Speicher­ block der Beginn eines Pakets ist. Die restlichen drei Steuerbits zeigen an­ dere Typen von Grenzen an. Das nächste MSB zeigt Transportpaketgren­ zen an, und das nächste Bit zeigt Anwendungspaketgrenzen an. Wenn die drei LSBs ohne das MSB verwendet werden, könnte das System nicht an­ zeigen, wo in dem Speicherblock die Grenze auftritt.
Wenn ein Warteschlangennutzer 11 bis 14 beim Schreiben in sein Warte­ schlangenportal 21 bis 24 in das MSB des Steuermerkers schreibt, hört das Warteschlangenportal auf, in den momentanen Speicherblock zu schreiben, und schiebt seine Zeiger (nicht gezeigt) zu dem Verkettungsfeld des nächsten Speicherblocks. Wenn ein Warteschlangennutzer 11 bis 14 ein Warteschlangenportal 21 bis 24 fragt, wie viele Bytes von Daten zur Verfügung stehen, führt der Warteschlangennutzer 11 bis 14 auch die er­ forderliche Anzahl an Bytes zu und bringt eine Maske an dem Steuerfeld an. Das Warteschlangenportal 21 bis 24 sucht dann durch die Warte­ schlange, bis es entweder den durch die Maske identifizierten Satz von Steuermerkern erreicht, es die erfoderliche Anzahl an Bytes findet oder es das Ende der verfügbaren Daten erreicht, je nachdem was zuerst auftritt.
Dieser Mechanismus ermöglicht, dass eine Steuerinformation in dem Da­ tenstrom am Beginn eines Datenpakets enthalten ist. Die Warteschlangen­ nutzer-Schnittstelle 15 bis 18, die nachfolgend die Daten aus der Warte­ schlange ausliest, kann dann die Steuerinformation extrahieren.
Wenn der Datenstrom ein kontinuierlicher Datenstrom ist, werden die Steuermerker nicht verwendet, d. h. sie sind stets null.
Eine übliche asynchrone Warteschlange weist eine definierte Anzahl an Speicherblöcken auf, die ihr zugewiesen sind. Wenn Daten schneller ab­ gearbeitet werden, als sie zu der Warteschlange hinzugefügt werden, wird die Warteschlange möglicherweise leer. Die der Warteschlange zugewie­ senen Blöcke sind ungenutzt, jedoch für andere Warteschlangen nicht ver­ fügbar. Währenddessen empfängt eine andere Warteschlange möglicher­ weise zu viele Daten. Die Warteschlange wird gefüllt, und dann muss der Sender entweder gestoppt werden, oder die Daten gehen verloren. Dieser Typ von Warteschlange wird als eine "einzelne Warteschlange" bezeichnet. Der Vorteil dieses Typs von Warteschlange liegt darin, dass die für eine Warteschlange verfügbaren Ressourcen definiert sind. In einem System, das Speicherblöcke nach Bedarf dynamisch neu zuweist, wenn eine War­ teschlange kaum zu leeren ist, kann es alle verfügbaren Speicherblöcke verwenden. In diesem Fall werden alle anderen Warteschlangen mögli­ cherweise gestoppt, da keine Speicherblöcke mehr verfügbar sind.
Das Warteschlangenverwaltersystem 10 unterstützt eine dynamische Speicherzuweisung unter Verwendung von "gruppierten Warteschlangen". Eine gruppierte Warteschlange besteht aus einer Anzahl von "Element- Warteschlangen" und einer "Ressourcen-Warteschlange". Die Element- Warteschlangen sind dasselbe wie einzelne Warteschlangen mit der Aus­ nahme, dass es einen Unterschied in der Anzahl von Ersatzblöcken gibt, die Element-Warteschlangen zugewiesen sind. Daten werden aus Ele­ ment-Warteschlangen gelesen und in diese geschrieben. Die Ressourcen- Warteschlange ist in Wirklichkeit eine verkettete Liste von Ersatzspeicher­ blöcken. Alle Element-Warteschlangen in einer gruppierten Warteschlange verwenden Speicherblöcke derselben Größe.
Wenn Speicherblöcke aus dem Kopf einer einzelnen Warteschlange frei­ gegeben werden, werden sie dem Ende der gleichen Warteschlange neu zugewiesen, solange es keine Anforderung gab, die Größe der Warte­ schlange zu reduzieren. Wenn Speicherblöcke aus dem Kopf einer Ele­ ment-Warteschlange freigegeben werden, werden sie üblicherweise der Ressourcen-Warteschlange zugewiesen. Während eine Element- Warteschlange nicht zum Schreiben geladen ist, weist sie keinerlei "leere Blöcke" auf. Das Ende der Element-Warteschlange zeigt zu dem gleichen Speicherblock, zu dem das letzte "festgeschriebene Schreiben" zeigt. Wenn ein Warteschlangenportal 21 bis 24 eine Element-Warteschlange zum Schreiben lädt, wird die Ressourcen-Warteschlange an das Ende der Element-Warteschlange angekoppelt, was dazu führt, dass alle Blöcke in der Ressourcen-Warteschlange zur Verfügung stehen. Wenn das Warte­ schlangenportal 21 bis 24 eine Element-Warteschlange entlädt (wobei es an diesem Punkt ein Festschreiben oder Verwerfen ausführt), werden jeg­ liche Ersatzspeicherblöcke aus der Element-Warteschlange entfernt und der Ressourcen-Warteschlange neu zugewiesen.
Die Haupteinschränkung dieses Systems besteht darin, dass lediglich in ein Element einer gruppierten Warteschlange zu einem jeweiligen Zeit­ punkt geschrieben werden kann, denn die gesamte Ressourcen- Warteschlange wird zu dem aktiven Element hinzugefügt. In den meisten Fällen schreibt ein einziges Warteschlangenportal 21 bis 24 in die gruppierte Warteschlange, und daher ist immer nur eine Element- Warteschlange zum Schreiben geladen. In der Theorie gibt es keine Be­ grenzung für die Anzahl an einzelnen oder gruppierten Warteschlangen, die erzeugt werden können. Die Haupteinschränkung sind die erforderli­ chen Speicherressourcen.
Der andere Typ von Warteschlange ist eine isochrone (ISO) Warteschlan­ ge. Isochrone Daten sind zeitkritische Daten, wie Telefonsprachdaten. Eine ISO-Warteschlange verwendet verschiedene Steuermechanismen, die durch unterschiedliche Hardware verwaltet werden. Ein Steuermechanis­ mus für eine ISO-Warteschlange kann eine zusätzliche Komponente oder eine alternative Komponente zu einem Warteschlangenportal 21 bis 24 sein. Eine ISO-Warteschlange verwendet einen einzigen sequentiellen Speicherblock anstelle der verketteten Speicherblöcke, die von asynchro­ nen Warteschlangen verwendet werden. Dieses Speichergebiet ist typi­ scherweise ziemlich klein, zum Beispiel 32 Byte bis 256 Byte. Eine ISO- Warteschlange stellt einen kleinen Pufferraum bereit, um Warteschlangen­ nutzer zu isolieren, die Daten jitterartig oder in einer diskontinuierlichen Weise erzeugen und/oder nutzen. Wenn eine ISO-Warteschlange voll wird, werden die ältesten Daten durch Überschreiben derselben getilgt. Dieser Typ von Warteschlange wird nicht verwendet, wenn die Datenintegrität wichtig ist. Wenn die Warteschlange leer oder effektiv leer wird, werden die Daten, die zuletzt aus der Warteschlange gelesen wurden, erneut gelesen.
Typischerweise sind isochrone Daten lineare Impulscodemodulati­ ons(PCM)-Daten, die Proben eines analogen Signals beinhalten, wie eine Stimmenaufzeichnung. In diesem Fall bestehen die erneut aus der Warte­ schlange gelesenen Daten aus einer Anzahl von Bytes von Daten, die, wenn sie in ein Audiosignal rekonstruiert werden, gleich oder ähnlich wie Klänge unmittelbar davor und danach klingen. Dies ist viel weniger be­ merkbar als eine Lücke in einem Audiosignal.
Wenn isochrone Daten solche Daten wie kontinuierliche Daten mit variab­ lem Modulationsdelta (CVSD) sind, werden spezielle Anordnungen getrof­ fen, um sicherzustellen, dass der Mittelwert des rekonstruierten Signals null bleibt, da ansonsten möglicherweise Sättigung oder digitaler Überlauf auftritt. Dieser Typ von Daten und dazu ähnliche Typen werden in einer von zwei Weisen angepasst. Erstens können die erneut gelesenen Daten verarbeitet werden, um einen Offset von null bereitzustellen. Es ist ersicht­ lich, dass es viele Weisen gibt, dies zu erreichen. Zweitens können Daten erzeugt werden, die einer Sequenz alternierender Inkremente und Dekre­ mente entsprechen, d. h. es wird ein kleines sinusförmiges Amplitudensig­ nal anstelle von Daten erzeugt, die erneut gelesen werden.
Wie vorstehend beschrieben, werden viele Speicherblöcke verkettet, um eine Kette von Blöcken zu bilden, in der eine Sequenz von Daten gespei­ chert ist. Ein Warteschlangenbezeichner ist ein Satz von Zeigern und Steuerfeldern, die steuern, wie die Kette von Blöcken verwendet und ver­ waltet wird. Die Warteschlangenbezeichner sind in einem anderen Spei­ cherteil gespeichert. Wenn die Software-Schnittstelle 20 eine Warte­ schlange erzeugt, erzeugt sie auch einen Warteschlangenbezeichner. Eine Warteschlange ist durch die Adresse des Beginns des entsprechenden Warteschlangenbezeichners identifiziert. Wenn ein Warteschlangennutzer 11 bis 14 durch ein Warteschlangenportal 21 bis 24 auf eine Warteschlan­ ge zugreift, stellt er die Adresse des Beginns des Bezeichners bereit, die hier im Folgenden als Warteschlangenidentifizierer (QID) bezeichnet wird.
Die einzelnen Warteschlangen und Element-Warteschlangen verwenden ähnliche Warteschlangenbezeichner. Dieser Typ von Warteschlangenbe­ zeichner besteht aus einer Anzahl von Unterbezeichnern und Zugriffsteu­ erbits. Die Ressourcen-Warteschlange verwendet eine vereinfachte Versi­ on eines Warteschlangenbezeichners. Die Zugriffsteuerbits in den War­ teschlangenbezeichnern stellen sicher, dass zu jedem beliebigen Zeitpunkt lediglich ein Warteschlangenportal oder die Software-Schnittstelle 20 ein Feld in dem Bezeichner modifizieren darf.
Tabelle 2 stellt die Felder in Bezeichnern von einzelnen Warteschlangen und Element-Warteschlangen dar und, wo das Feld im Speicher gespei­ chert wird, für eine asynchrone Warteschlange:
Tabelle 2
Tabelle 3 stellt die Felder in einem Betriebsquellen- Warteschlangenbezeichner dar, bei dem RID der Betriebsquellen- Warteschlangenidentifizierer ist.
Tabelle 3
In einem Betriebsquellen-Warteschlangenbezeichner ist das Sperrsteuer­ feld ein Feld mit einer Breite von einem Byte, das Bits zur Steuerung der Schreiberlaubnis zu anderen Feldern in dem Bezeichner enthält. Die Hardware beinhaltet eine nicht unterbrechbare Lese-Modifizier-Schreib- Sequenz, um sicherzustellen, dass lediglich eine Funktion (Portal 21 bis 24 oder Software-Schnittstelle 20) den Sperrwert zu irgendeinem gegebenen Zeitpunkt ändern kann. Die Sperrbitspalte in den zwei Tabellen zeigt an, welche Bits Zugriffe auf welche Felder steuern. Das Sperrbit 0 wird nur auf das Feld "zu entfernende Blöcke" angewendet. Das Sperrsteuerfeld kann modifiziert werden, während das Bit 0 gesetzt ist.
Das Feld "zu entfernende Blöcke" ist ein Feld mit einer Breite von einem Byte, das die Anzahl an Speicherblöcken anzeigt, die aus der Warte­ schlange entfernt werden sollten. Dies erfordert eine Zugriffssteuersperre, da es zwei Funktionen gibt, die den Wert modifizieren können. Die Soft­ ware-Schnittstelle 20 kann den Wert modifizieren, um die zu skalierende Wartenschlangenlänge anzufordern, und die Wiederzuweisungsfunktion dekrementiert dann den Wert, wenn Blöcke freigegeben werden.
Das Feld "zu entfernende Blöcke" ist nur für einzelne Warteschlangen und Ressourcen-Warteschlangen gültig - d. h. bei Element-Warteschlangen­ bezeichnern ist das Feld ungenutzt. Wenn Blöcke aus einer gruppierten Warteschlange zu entfernen sind, fordert die Software-Schnittstelle 20 an, dass sie aus der Ressourcen-Warteschlange anstatt aus den Element- Warteschlangen entfernt werden. Wenn das Feld "zu entfernende Blöcke" auf 255 gesetzt wird, werden alle Blöcke in der Warteschlange entfernt, wenn sie durch eine Wiederzuweisung gehen. Hierbei wird der Wert "zu entfernende Blöcke" nicht reduziert.
Das Feld "Blockgröße" ist ein Feld von 12 Bit, d. h. ausschließlich der vier Steuerbits, die anzeigen, wie viele Bytes an Information in die von der War­ teschlange verwendeten Speicherblöcke geschrieben werden können. Das Feld "Blockgröße" wird nur modifiziert, wenn die Warteschlange erzeugt wird. Während die Warteschlange aktiv ist, wird nur das Feld "Blockgröße" gelesen und erfordert daher keine Sperre. Die Element-Warteschlangen­ bezeichner definieren die "Blockgröße" der Ressourcen-Warteschlange, welche die gleiche für alle Elemente in einer gruppierten Warteschlange ist.
Anstelle des Feldes "Blockgröße" weisen Ressourcen-Warteschlangen ein Feld "Kopf von Blöcken" mit einer Wortbreite von 2 Byte auf. Das Feld "Kopf von Blöcken" enthält die Adresse des Speicherblocks am Kopf der Kette ungenutzter Blöcke. Wenn ein Warteschlangenportal 21 bis 24 eine Ele­ ment-Warteschlange lädt, sperrt es das Feld "Kopf von Blöcken" der zuge­ hörigen Ressourcen-Warteschlange. Dies stellt sicher, dass zu jedem be­ liebigen gegebenen Zeitpunkt lediglich eine Element-Warteschlange die zugehörige Ressourcen-Warteschlange verwenden kann. Das Warte­ schlangenportal koppelt dann die Ressourcen-Warteschlange an die Ele­ ment-Warteschlange an. Das Feld "Kopf von Blöcken" der Ressourcen- Warteschlange, das überall 1s (= -1) ist, zeigt an, dass die Ressourcen- Warteschlange leer ist. Wenn die Ressourcen-Warteschlange leer ist, gibt das Warteschlangenportal sofort die Ressourcen-Warteschlange durch Entsperren des "Kopfes von Blöcken" frei. Wenn die Ressourcen- Warteschlange beim Laden der Element-Warteschlange nicht leer ist, ak­ tualisiert ein Warteschlangenportal 21 bis 24 das Feld "Kopf von Blöcken" und löst die Sperre, wenn es eine Warteschlange entlädt. Wenn die Warte­ schlange entladen ist, wird das Feld "Kopf von Blöcken" überall mit 1s (= -1) geladen, wenn es keine Ersatzspeicherblöcke mehr gibt.
Das Feld "Ende der Blöcke" in einer einzelnen Warteschlange ist ein Feld mit einer Breite von einem Wort, das die Adresse des letzten Speicher­ blocks enthält, der zu der Warteschlange hinzuzufügen ist. Die Block- Wiederzuweisungsfunktion verwendet dieses Feld, um zu identifizieren, wo freigegebene Blöcke zurück an das Ende der Warteschlange gekoppelt werden sollten. Das Feld "Ende der Blöcke" zeigt zu dem Verkettungsfeld in dem Speicherblock am Ende der Warteschlange. Da die Wiederzuwei­ sungsfunktion die einzige Funktion ist, die das Feld "Ende der Blöcke" mo­ difiziert, ist eine Sperrsteuerung nicht erforderlich. Da alle einzelnen War­ teschlangen wenigstens einen Speicherblock enthalten müssen, ist das Feld "Ende der Blöcke" stets gültig.
Das Feld "Ende der Blöcke" in einer Ressourcen-Warteschlange ist dem "Ende der Blöcke" in einer einzelnen Warteschlange ähnlich. Eine Ressour­ cen-Warteschlange kann jedoch leer werden, was das Feld "Ende der Blö­ cke" ungültig machen würde. Der Ressourcenbezeichner beinhaltet daher ein Zugriffsteuerbit für das Feld "Ende der Blöcke". Wenn ein Warteschlan­ genportal 21 bis 24 eine Element-Warteschlange entladen möchte, sperrt es zuerst das Feld "Ende der Blöcke" im zugehörigen Ressourcen- Warteschlangenbezeichner und fährt dann mit der Entladeprozedur fort. Wenn die Entladeprozedur keine Ersatzblöcke aufweist, um sie zu der Ressourcen-Warteschlange zurückzuführen, schreibt sie überall 1s (= -1), sowohl in "Ende der Blöcke" als auch in "Kopf der Blöcke". Das Warte­ schlangenportal entsperrt dann sowohl das Feld "Kopf der Blöcke" als auch das Feld "Ende der Blöcke". Die Wiederzuweisungsfunktion sperrt stets das Feld "Ende der Blöcke", bevor sie wieder Blöcke auf die Ressourcen- Warteschlange zuweist.
Das Feld "leere Blöcke" ist ein Feld mit einer Breite von einem Byte, das die Anzahl an (ungenutzten) Ersatzblöcken am Ende einer einzelnen Warte­ schlange anzeigt, wenngleich einige der Blöcke möglicherweise durch ei­ nen nicht festgeschriebenen Schreibprozess verwendet werden, der noch geladen ist. Eine einzelne Warteschlange enthält ein Maximum von 255 Blöcken, die es möglich machen, auf das Feld "leere Blöcke" und das Feld "verwendete Blöcke" zusammen zuzugreifen. Der Wert in "leere Blöcke" multipliziert mit der "Blockgröße" ergibt eine gute Näherung für den Spei­ cherraum (RAM), der momentan verfügbar ist, wenngleich dies jeglichen Raum ausschließt, der in dem Block zur Verfügung steht, auf den "Block mit festgeschriebenem Ende" zeigt.
Die Felder "leere Blöcke" und "verwendete Blöcke" werden unter Verwen­ dung einer nicht unterbrechbaren Lese-Modifizier-Schreib-Sequenz anstatt der Verwendung eines Sperrbits modifiziert. Wenn ein Warteschlangenpor­ tal 21 bis 24 einen Schreibvorgang festschreibt, erhöht es den Wert in dem Feld "verwendete Blöcke" um die Anzahl an Blöcken, die festgeschrieben wird, und verkleinert den Wert in dem Feld "leere Blöcke" um die gleiche Menge. Wenn die Wiederzuweisungsfunktion einen Block zu einer Warte­ schlange hinzufügt, inkrementiert sie den Wert in "leere Blöcke".
Das Feld "leere Blöcke" von Element-Warteschlangenbezeichnern wird der "Schwellenwert verwendeter Blöcke" genannt. Wenn eine Element- Warteschlange zum Schreiben geladen wird, wird üblicherweise die Res­ sourcen-Warteschlange an die Element-Warteschlange gekoppelt. Wenn jedoch der Wert in dem Feld "verwendete Blöcke" größer als der Wert in dem Feld "Schwellenwert verwendeter Blöcke" ist, wird die Ressourcen- Warteschlange nicht an die Element-Warteschlange angehängt. Das Feld "Schwellenwert verwendeter Blöcke" kann dazu verwendet werden, zu ver­ hindern, dass ein Element einer gruppierten Warteschlange alle Ersatz­ speicherblöcke verwendet.
Der Schwellenwert wird nur angewendet, wenn die Warteschlange geladen ist. Wenn eine Element-Warteschlange mit der Ressourcen-Warteschlange geladen ist, kann sie eine beliebige Anzahl von Blöcken bis zu der Anzahl von Blöcken in der Ressourcen-Warteschlange festschreiben. Diese fest­ geschriebenen Blöcke werden zu dem Feld "verwendete Blöcke" hinzuge­ fügt, selbst wenn das Resultat größer als der "Schwellenwert verwendeter Blöcke" ist.
In gruppierten Warteschlangen wird ein einzelner Zähler "leere Blöcke" in der Ressourcen-Warteschlange gehalten. Das Feld "leere Blöcke" in einer Element-Warteschlange wird dazu verwendet, das Feld "Schwellenwert verwendeter Blöcke" zu speichern. Da die gruppierte Warteschlange mögli­ cherweise mehr Ersatzblöcke verfolgen muss, um mehrere Element- Warteschlangen zu bedienen, ist das Feld "leere Blöcke" im Ressourcen- Warteschlangenbezeichner 12 Bit lang anstatt 8 Bit.
Das Feld "leere Blöcke" wird unter Verwendung einer nicht unterbrechbaren Lese-Modifizier-Schreib-Sequenz aktualisiert. Wenn ein Warteschlangen­ portal einen Schreibvorgang festschreibt, erhöht es den Wert in dem Feld "verwendete Blöcke" des Element-Warteschlangenbezeichners um die An­ zahl an Blöcken, die festgeschrieben wird, und verkleinert das Feld "leere Blöcke" des Ressourcen-Warteschlangenbezeichners um den gleichen Be­ trag. Wenn die Wiederzuweisungsfunktion einen Block zu einer Warte­ schlange hinzufügt, inkrementiert sie den Wert in dem Feld "leere Blöcke" des Ressourcen-Warteschlangenbezeichners.
Das Feld "verwendete Blöcke" ist ein Feld mit einer Breite von einem Byte, das die Anzahl von Speicherblöcken in der Warteschlange anzeigt, die Da­ ten enthalten, die zu lesen und festzuschreiben sind. Wenn ein Warte­ schlangenportal einen Schreibvorgang festschreibt, erhöht es den Zähler "verwendeter Block" um die Anzahl von extra Blöcken, die hinzugefügt wer­ den (unter Verwendung einer nicht unterbrechbaren Lese-Modifizier- Schreib-Sequenz). Wenn ein Warteschlangenportal einen Lesevorgang festschreibt, wird die Anzahl an freigegebenen Blöcken von dem Wert in dem Feld "verwendete Blöcke" subtrahiert. Der Zähler "verwendeter Block" wird nicht direkt von dem Warteschlangenverwaltersystem 10 verwendet. Der Zähler "verwendeter Block" wird aufrechterhalten, so dass externe Steuerfunktionen überwachen und steuern können, wie viele Daten in einer Warteschlange gespeichert sind. Bei Element-Warteschlangen gibt es eine Komplikation dahingehend, dass eine Ressourcen-Warteschlange einer Element-Warteschlange mehr als 255 Blöcke zuführen kann. Dies bewirkt, dass der Zähler "verwendeter Block" überläuft, d. h. das erlaubte Maximum übersteigt.
Das Feld "Typ" ist ein Feld mit einer Breite von einem Wort, das zwischen einzelnen Warteschlangen und Element-Warteschlangen unterscheidet. Das Typ-Feld für einzelne Warteschlangen ist überall 1s (= -1). Jeder an­ dere Wert in dem Typ-Feld zeigt an, dass die Warteschlange eine Ele­ ment-Warteschlange ist. Für Element-Warteschlangen enthält das Typ- Feld die Adresse des zugehörigen Ressourcenidentifizierers (RID).
Das Typ-Feld wird als Teil des Schreib-Unterbezeichners behandelt, so dass es gesperrt ist, wenn ein Warteschlangenportal 21 bis 24 die Warte­ schlange zum Schreiben lädt. Es gibt zwei Gelegenheiten, zu denen in das Feld geschrieben wird. Wenn die Warteschlange erzeugt wird, setzt die Software-Schnittstelle 10 das Typ-Feld herauf. Wenn die Software- Schnittstelle 20 eine gruppierte Warteschlange auflösen möchte, löst sie alle mit Ausnahme einer der Element-Warteschlangen auf. Dann kettet sie mit der letzten Element-Warteschlange die Ressourcen-Warteschlange an die Element-Warteschlange und wandelt die Element-Warteschlange in eine einzelne Warteschlange um. Die Ressourcen-Warteschlange existiert nicht mehr, und die neu erzeugte einzelne Warteschlange kann in der glei­ chen Weise aufgelöst werden, in der andere einzelne Warteschlangen auf­ gelöst werden.
Das Feld "Block mit festgeschriebenem Ende" ist ein Feld mit einer Breite von einem Wort, das Teil des Zeigers ist, der die Stelle des letzten festge­ schriebenen Schreibvorgangs identifiziert. Das Feld "Block mit festge­ schriebenem Ende" enthält die Adresse des Beginns des Speicherblocks, in dem der festgeschriebene Schreibvorgang auftrat. Das Feld wird ge­ sperrt, wenn ein Warteschlangenportal 21 bis 24 eine Warteschlange zum Schreiben lädt. Das Warteschlangenportal 21 bis 24 lädt den festgeschrie­ benen Zeiger in ein Register für den Zeiger für das momentane Ende, der nur gültig ist, während die Warteschlange geladen wird. Während Schreib­ vorgänge auftreten, wird der Zeiger für das momentane Ende aktualisiert, der Zeiger für das festgeschriebene Ende wird jedoch nicht beeinflusst. Wenn dem Warteschlangenportal mitgeteilt wird, geschriebene Daten fest­ zuschreiben, lädt es den Zeiger für das momentane Ende in den Zeiger für das festgeschriebene Ende. Wenn dem Warteschlangenportal mitgeteilt wird, die geschriebenen Daten zu verwerfen, lädt es den Zeiger für das festgeschriebene Ende in den Zeiger für das momentane Ende. Wenn das Warteschlangenportal einen Schreib-Unterbezeichner entlädt, führt es stets zuerst entweder eine Festschreib- oder eine Verwerf-Operation durch. Dann wird, wenn der Schreib-Unterbezeichner entladen ist, das Schreibzugriffsteuerbit entsperrt.
Das Feld "Offset des festgeschriebenen Endes", das den zweiten Teil des Zeigers für das festgeschriebene Ende darstellt, ist ein Feld von 12 Bit, das ein Versatz vom Beginn des "Blocks mit festgeschriebenem Ende" ist (so­ weit nicht anderweitig definiert, sind die vier MSBs gleich null). Das Feld "Offset des festgeschriebenen Endes" ist im Wesentlichen das gleiche wie das Feld "Speicherblocklänge". Wann immer das Feld "Speicherblocklänge" aktualisiert wird, wird es mit dem Offset des momentanen Endes geladen. Das Feld "Offset des festgeschriebenen Endes" weist eine Auflösung von Bytes auf und schließt die vier Bytes an Steuerinformation am Beginn des Speicherblocks aus. Die Adresse, wo die letzte Schreib-Festschreibung auftrat, ist durch Feld "Block mit festgeschriebenem Ende" + 4 + Feld "Off­ set des festgeschriebenen Endes" gegeben. Alle Warteschlangenzeiger in dem Warteschlangenverwaltersystem 10 sind vorinkrementiert, so dass die Zeiger im statischen Zustand auf die letzte Schreibstelle anstatt auf die nächste Schreibstelle zeigen.
Das Feld "momentaner Kopfblock" ist ein Feld mit einer Breite von einem Wort, das Teil des Lese-Unterbezeichners ist. Anders als beim Schreib- Unterbezeichner kann der Lese-Unterbezeichner entladen werden, ohne einen Festschreib-/Verwerf-Vorgang auszuführen, da es länger dauern kann, eine Rückkopplung zu erhalten, um anzuzeigen, dass die Daten er­ folgreich aus dem Warteschlangenverwaltersystem 10 heraustransferiert wurden. In dem Fall einer empfangenen Information, die in das Warte­ schlangenverwaltersystem 10 geschrieben wurde, ist die Datenintegritäts­ überprüfung üblicherweise Teil des Datenstroms, und so wird die Überprü­ fung unmittelbar nach Empfang des Datenblocks durchgeführt. Daher ist der Zeiger für den momentanen Kopf ebenso gespeichert wie der Zeiger für den festgeschriebenen Kopf. Das Feld "momentaner Kopfblock" enthält die Adresse für den Beginn des Speicherblocks, in dem der letzte Lese­ vorgang auftrat.
Wenn ein Warteschlangenportal eine Warteschlange zum Lesen lädt, sperrt es das Zugriffsteuerbit für den Lese-Unterbezeichner. Dann lädt es den Zeiger für den momentanen Kopf in ein Register. Jegliche Lesevor­ gänge bewirken, dass nur der Registerwert aktualisiert wird, nicht der im RAM gespeicherte Wert. Wenn eine Lesefestschreibung auftritt, werden die Inhalte des Zeigerregisters für den momentanen Kopf in den Zeiger für den festgeschriebenen Kopf im RAM kopiert. Wenn eine Leseverwerfung auftritt, wird der Zeiger für den festgeschriebenen Kopf im RAM in das Zei­ gerregister für den momentanen Kopf kopiert. Wenn die Warteschlange entladen ist, wird das Zeigerregister für den momentanen Kopf in den Zei­ ger für den momentanen Kopf im RAM kopiert, und das Zugriffsteuerbit für den Lese-Unterbezeichner wird entsperrt. Eine Lesefestschreibung tritt auf, wenn eine Bestätigung empfangen wurde, dass die Daten erfolgreich transferiert wurden, und ansonsten findet eine Leseverwerfung statt.
Das Feld "Offset des momentanen Kopfes" ist der zweite Teil des Zeigers für den momentanen Kopf. Es ist ein Feld von 12 Bit, das ein Versatz vom Beginn des "momentanen Kopfblocks" ist. Das Feld "Offset des momenta­ nen Kopfes" weist eine Auflösung von Bytes auf und schließt die vier Bytes an Steuerinformation am Beginn eines Speicherblocks aus. Die Adresse, bei welcher der letzte Lesevorgang auftrat, ist durch Feld "momentaner Kopfblock" + 4 + Feld "Offset des momentanen Kopfes" gegeben.
Das Feld "Block mit festgeschriebenem Kopf" ist ein Feld mit einer Breite von einem Wort, das Teil des Lese-Unterbezeichners ist. Das Feld "Block mit festgeschriebenem Kopf" enthält die Adresse am Beginn des Speicher­ blocks, bei welcher die letzte Lesefestschreibung auftrat. Wenn ein Warte­ schlangenportal einen Lesevorgang festschreibt und es wenigstens einen Speicherblock gibt, der freigegeben werden kann, wird die Freigabeproze­ dur getriggert. Die Freigabeprozedur lädt den Warteschlangenidentifizierer und den Wert in dem Feld der Anzahl freizugebender Blöcke in den Beginn des Datenbereichs des Speicherblocks, auf den das Feld "Block mit fest­ geschriebenem Kopf" zeigt. Die Adresse in dem Feld "Block mit festge­ schriebenem Kopf" wird dann zu der Warteschlange freigegebener Blöcke geleitet, die für eine Wiederzuweisung bereit ist. Die Lesefestschreibpro­ zedur wird dann durch Kopieren des Zeigers für den momentanen Kopf in den Zeiger für den festgeschriebenen Kopf vervollständigt. Wenn eine Le­ severwerfung stattfindet, wird der Zeiger für den festgeschriebenen Kopf in den Zeiger für den momentanen Kopf kopiert.
Das Feld "Offset des festgeschriebenen Kopfes" ist der zweite Teil des Zei­ gers für den festgeschriebenen Kopf. Es ist ein Feld von 12 Bit, das ein Versatz vom Beginn des Blocks mit festgeschriebenem Kopf ist. Das Feld hat eine Auflösung von Bytes und schließt die vier Bytes an Steuerinforma­ tion am Beginn eines Speicherblocks aus. Die Adresse, bei welcher die letzte Lesefestschreibung stattfand, ist durch Feld "Block mit festgeschrie­ benem Kopf" + 4 + Feld "Offset des festgeschriebenen Kopfes" gegeben.
Das Feld "freizugebende Blöcke" ist ein Feld mit einer Breite von einem Byte, das die Anzahl an Blöcken verfolgt, die möglicherweise freigegeben werden, wenn eine Lesefestschreibung durchgeführt wird. Das Feld wird in ein Register transferiert, wenn die Warteschlange geladen wird. Wenn ein Lesevorgang verursacht, dass der Zeiger für den momentanen Kopf zu ei­ nem neuen Speicherblock weitergeht, wird das Register der freizugeben­ den Blöcke inkrementiert. Wenn eine Lesefestschreibung durchgeführt wird, wird das Register freizugebender Blöcke durch die Freigabeprozedur verwendet.
Am Ende entweder eines Festschreib- oder Verwerfvorgangs wird das Re­ gister freizugebender Blöcke auf null gesetzt. Wenn die Warteschlange entladen wird, wird das Register freizugebender Blöcke auf null zurückge­ setzt und in das Feld freizugebender Blöcke im RAM kopiert.
Der Segmentierungs- und Wiederaufbaumechanismus in dem (QMS) 10 beinhaltet ein Mittel zum Anzeigen von Paketgrenzen auf verschiedenen Kommunikationsprotokollebenen. Durch Speichern der Information in ei­ nem effizienten, generischen Format können Geräte, welche Warteschlan­ gen verwenden, Entscheidungen hinsichtlich Verbinden und Aufsplitten von Paketen ohne Kenntnis von verschiedenen Paketformaten treffen. Die vier höchstwertigen Bits (MSBs) des Felds "Blocksteuerung" werden dazu verwendet, Grenzen in dem Datenfluss anzuzeigen. Diese Bits werden im Folgenden als Steuerbits oder -merker bezeichnet.
Der Hauptzweck des QMS 10 besteht darin, Daten von einem Gerät zu einem anderen zu transferieren, wie von einer Hauptrechnerschnittstelle (nicht gezeigt) eines universellen seriellen Busses (USB) zu einem Radio- Sendeempfängermodul (nicht gezeigt). Die USB-Hauptrechnerschnittstelle kann den Warteschlangennutzer "A" 11 bilden, und das Radio- Sendeempfängermodul kann den Warteschlangennutzer "B" 12 bilden. Ein PC-Hauptrechner (nicht gezeigt) oder irgendein anderes Hauptrechnerge­ rät ist mit der USB-Hauptrechnerschnittstelle 11 verbunden. An der USB- Hauptrechnerschnittstelle 11 werden die Daten in den Nutzinformationsbe­ reich eines L2CAP-Pakets eingegeben, welches das folgende Format auf­ weist:
2 Byte Protokoll/Service-Multiplexer
0 bis 65533 Byte Nutzinformationsdaten
Das L2CAP-Paket wird durch die USB-Hauptrechnerschnittstelle 11 in ein oder mehrere "Hauptrechnersteuerschnittstellen" (HCl)-Pakete eingegeben, wobei ein HCl-Paket das folgende Format aufweist:
12 Bit Verbindungskennung + 2 Bit Paketgrenze + 2 Bit Rundfunktyp
2 Byte Längenfeld
0 bis 65533 Byte Nutzinformationsdaten
Jedes HCl-Paket wird dann in ein oder mehrere USB-Pakete geformt, wo­ bei ein USB-Paket besteht aus:
8 Bit Datentransfer-Sendeberechtigung, welche die Datenrichtung anzeigt
7 Bit Adresse + 4 Bit Endpunkt, um Bluetooth-Datenverbindung zu identifi­ zieren
5 Bit Prüfsumme
8 Bit Datentransferumschaltung (um sicherzustellen, dass keine Daten ver­ loren sind)
Nutzinformationsdaten HCl-Fragment
16 Bit Prüfsumme
Die extra USB-Information wird dazu verwendet, sicherzustellen, dass Da­ ten vom Hauptrechner korrekt transferiert werden, wird jedoch nicht ge­ speichert. Die extra USB-Information wird durch die USB- Hauptrechnerschnittstelle 11 extrahiert, welche die verbleibenden USB- Nutzinformationsdaten zu der Warteschlangennutzerschnittstelle 15 trans­ ferieren. Wenn die USB-Nutzinformationsdaten der Beginn eines HCl- Pakets sind, extrahiert die Warteschlangennutzerschnittstelle 15 die ersten 4 Byte eines HCl-Paketkopfes und transferiert den Rest der Nutzinformati­ onsdaten zu dem QMS 10. Wenn ein USB-Paket der Beginn eines HCl- Pakets ist, werden die ersten zwei Byte des HCl-Pakets von der Warte­ schlangennutzerschnittstelle 11 dazu verwendet, zu entscheiden, welche Warteschlange die Daten einspeichern soll. In den ersten zwei Byte sind 2 Bit enthalten, die anzeigen, wenn das HCl-Paket der Beginn oder die Fort­ setzung eines L2CAP-Pakets ist. Wenn es der Beginn eines L2CAP- Pakets ist, wird Bit 2 des Merkerfeldes von 4 Bit, das von dem QMS 10 aufrechterhalten wird, durch die Warteschlangennutzerschnittstelle 11 ge­ setzt. Das QMS 10 ist von dem Beginn verschiedener Pakete durch die USB-Hauptrechnerschnittstelle mittels der Verwendung vordefinierter An­ weisungscodes informiert. Wenn das USB-Paket den Beginn des HCl- Pakets enthält, wird Bit 3 des Merkerfeldes von 4 Bit, das von dem QMS aufrechterhalten wird, gesetzt. Wenn das USB-Paket eine Fortsetzung ei­ nes HCl-Pakets enthält, werden keine Merker gesetzt. Die Merker werden durch die vier Bit gebildet, die benachbart zu dem Feld Blockgröße in den Speicherblöcken sind, welche die Warteschlange bilden.
Wenn USB-Pakete transferiert werden, werden die Nutzinformationsdaten (ausschließlich der 4 Byte des Kopfes eines HCl-Pakets) in der Warte­ schlange gespeichert. Am Ende jeglichen guten USB-Pakettransfers wer­ den die Daten in der Warteschlange festgeschrieben. Wenn der Daten­ transfer versagt, werden die Daten verworfen.
Auf der Seite des Radio-Sendeempfängermoduls 12 der Warteschlange ist der Beginn einer L2CAP-Nachricht am Beginn eines Radiopakets. HCl- Paketgrenzen müssen jedoch nicht aufrechterhalten werden. Daher kann ein Radiopaket aus einem Fragment eines HCl-Pakets bestehen, oder es kann mehrere HCl-Pakete enthalten. Ein Radiopaket beginnt mit einem Feld von 2 Bit, das anzeigt, ob es der Beginn oder die Fortsetzung eines L2CAP-Pakets ist. Dann gibt es ein Flussbit (das anzeigt, ob das Radio Daten empfangen kann), sowie ein Feld mit einer Länge von entweder 5 Bit oder 9 Bit, abhängig von dem verwendeten Pakettyp. Wenngleich sich das Radio-Sendeempfängermodul 12 nicht mit HCl-Paketgrenzen befasst, zählt es, wie viele HCl-Pakete erfolgreich gesendet wurden und informiert den PC-Hauptrechner durch das QMS 10, wie viel mehr Pakete es herun­ terladen kann. Dank der Paketgrenzenmerker, die durch das Warteschlan­ genverwaltersystem 10 verwaltet werden, braucht das Radio-Sende­ empfängermodul nicht die Fähigkeit, HCl- und L2CAP-Pakete zu decodie­ ren.
Wenn das Radio-Sendeempfängermodul 12 Pakete empfängt, setzt es Bit 3 des Merkerfeldes von 4 Bit, das durch das QMS 10 aufrechterhalten wird, um den Beginn eines Radiopakets anzuzeigen, indem der geeignete Anweisungscode erzeugt wird. Wenn der Paketkopf anzeigt, dass dies der Beginn eines L2CAP-Pakets ist, wird auch Bit 2 gesetzt. Das Längenfeld des Radiopakets wird durch das Radio-Sendeempfängermodul verworfen. Die Nutzinformationsdaten werden in der Warteschlange gespeichert, die mit der Verbindung oder dem Kanal verknüpft ist, auf der/dem das Paket empfangen wurde.
Die Hauptrechnerseite der Warteschlange ignoriert Radiopaketgrenzen und erzeugt HCl-Pakete bis zu einer L2CAP-Paketgrenze. Um dies durch­ zuführen, weist der Hauptrechner eine voreingestellte maximale HCl- Paketgröße auf. Der Hauptrechner fragt das QMS 10, wie viele Daten von dem momentanen Zeiger zu entweder dem Ende der Warteschlange oder dem nächsten Punkt vorliegen, bei dem ein Feld von 2 Bit oder von 4 Bit gesetzt wird, oder bis es genug Daten gibt, um eine HCl-Paketgröße zu füllen. Der Hauptrechner baut dann unter Verwendung einer Verbindungs­ kennung, die mit der Warteschlange verknüpft ist, einen HCl-Paketkopf, sowie L2CAP-Beginn- oder Fortsetzungsmerker basierend auf den Steu­ ermerkern und das Längenfeld basierend darauf auf, wie viele Daten zur Verfügung stehen.
Für eine USB-Schnittstelle werden die HCl-Pakete weiter in USB-Pakete unterteilt, wobei alle Datenpakete die gleiche USB-Adresse und den glei­ chen Endpunkt verwenden.

Claims (11)

1. Datenwarteschlangensystem mit:
mehreren Speicherblöcken, die in einem Speicher definiert sind;
einer Datenwarteschlange mit einer Anzahl von Speicherblöcken, wobei je­ der nichtendseitige Speicherblock eine Verkettung zu dem folgenden Block in der Datenwarteschlange beinhaltet; und
einem Warteschlangenbezeichner, der im Speicher gespeichert ist, wobei der Warteschlangenbezeichner beinhaltet:
einen ersten Identifizierer, der den letzten Block in der Warteschlange iden­ tifiziert;
einen zweiten Identifizierer, der die Speicherstelle identifiziert, bei welcher die letzte Lesefestschreibung stattfand; und
einen dritten Identifizierer, der die Speicherstelle identifiziert, bei welcher die letzte Schreibfestschreibung stattfand.
2. Datenwarteschlangensystem nach Anspruch 1, bei dem der zweite Identifi­ zierer einen Identifizierer, der den Speicherblock identifiziert, in dem die letzte Lesefestschreibung stattfand, und einen weiteren Identifizierer bein­ haltet, der einen Offset von einer vorgegebenen Stelle in jenem Speicher­ block identifiziert.
3. Datenwarteschlangensystem nach irgendeinem vorhergehenden Anspruch, bei dem der dritte Identifizierer einen Identifizierer, der den Speicherblock identifiziert, in dem die letzte Schreibfestschreibung stattfand, und einen weiteren Identifizierer beinhaltet, der einen Offset von einer vorgegebenen Stelle in jenem Speicherblock identifiziert.
4. Datenwarteschlangensystem nach irgendeinem vorhergehenden Anspruch, bei dem der Warteschlangenbezeichner des Weiteren ein Sperrsteuerfeld beinhaltet, das anzeigt, ob eine Funktion einen Schreibzugriff auf die Da­ tenwarteschlange besitzt.
5. Datenwarteschlangensystem nach irgendeinem vorhergehenden Anspruch, bei dem der Warteschlangenbezeichner des Weiteren einen Identifizierer beinhaltet, der die Größe der Speicherblöcke identifiziert.
6. Datenwarteschlangensystem nach irgendeinem vorhergehenden Anspruch, bei dem der Warteschlangenbezeichner des Weiteren einen Identifizierer beinhaltet, der die Speicherstelle identifiziert, bei welcher der letzte Schreibvorgang stattfand.
7. Datenwarteschlangensystem nach irgendeinem vorhergehenden Anspruch, bei dem der Warteschlangenbezeichner des Weiteren einen Identifizierer beinhaltet, der die Anzahl an nicht verwendeten Blöcken identifiziert, die mit der Datenwarteschlange verknüpft sind.
8. Datenwarteschlangensystem nach irgendeinem vorhergehenden Anspruch, bei dem der Warteschlangenbezeichner des Weiteren einen Identifizierer beinhaltet, der die Anzahl an mit der Datenwarteschlange verknüpften Speicherblöcken identifiziert, die zu lesende Daten enthalten.
9. Datenwarteschlangensystem nach irgendeinem vorhergehenden Anspruch, bei dem der Warteschlangenbezeichner des Weiteren einen Identifizierer beinhaltet, der den Typ der Datenwarteschlange identifiziert.
10. Datenwarteschlangensystem nach irgendeinem vorhergehenden Anspruch, bei dem der Warteschlangenbezeichner des Weiteren einen Identifizierer beinhaltet, der die Speicherstelle identifiziert, bei welcher der letzte Lese­ vorgang stattfand.
11. Datenwarteschlangensystem nach irgendeinem vorhergehenden Anspruch, bei dem der Warteschlangenbezeichner des Weiteren einen Identifizierer beinhaltet, der die Anzahl an Speicherblöcken identifiziert, die seit der letz­ ten Lesefestschreibung gelesen wurden.
DE10164456A 2000-12-29 2001-12-21 Datenwarteschlangensystem Withdrawn DE10164456A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0031761.0A GB0031761D0 (en) 2000-12-29 2000-12-29 Data queues
GB0102278A GB2370661B (en) 2000-12-29 2001-01-29 Method of, and apparatus for, storing a data packet

Publications (1)

Publication Number Publication Date
DE10164456A1 true DE10164456A1 (de) 2002-08-01

Family

ID=26245499

Family Applications (3)

Application Number Title Priority Date Filing Date
DE10164455A Withdrawn DE10164455A1 (de) 2000-12-29 2001-12-21 Verfahren zum Speichern eines Datenpakets
DE10164453A Withdrawn DE10164453A1 (de) 2000-12-29 2001-12-21 Verfahren zum Verwalten von Daten
DE10164456A Withdrawn DE10164456A1 (de) 2000-12-29 2001-12-21 Datenwarteschlangensystem

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE10164455A Withdrawn DE10164455A1 (de) 2000-12-29 2001-12-21 Verfahren zum Speichern eines Datenpakets
DE10164453A Withdrawn DE10164453A1 (de) 2000-12-29 2001-12-21 Verfahren zum Verwalten von Daten

Country Status (5)

Country Link
US (3) US20020156764A1 (de)
JP (3) JP2002236608A (de)
DE (3) DE10164455A1 (de)
FR (3) FR2819069A1 (de)
GB (2) GB2382898B (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024662B2 (en) 2001-03-14 2006-04-04 Microsoft Corporation Executing dynamically assigned functions while providing services
US7302634B2 (en) * 2001-03-14 2007-11-27 Microsoft Corporation Schema-based services for identity-based data access
US7260646B1 (en) * 2002-01-25 2007-08-21 Palmsource, Inc. Method of software distribution among hand held computers via file sharing with link references to a web site for complete software versions
US9886309B2 (en) * 2002-06-28 2018-02-06 Microsoft Technology Licensing, Llc Identity-based distributed computing for device resources
JP3955512B2 (ja) * 2002-08-27 2007-08-08 富士通株式会社 データ処理装置及びパケット判別方法
EP1559022B1 (de) * 2002-10-18 2016-12-14 Broadcom Corporation System und verfahren zurempfangswarteschlangenprovisionierung
KR100528967B1 (ko) * 2002-12-18 2005-11-15 한국전자통신연구원 가변 길이의 패킷 저장을 위한 메모리 관리 장치 및 방법
US7080126B2 (en) * 2003-02-28 2006-07-18 Bea Systems, Inc. Computer program product for performing resource pool maintenance by maintaining resources in several deques
JP4041002B2 (ja) * 2003-03-24 2008-01-30 株式会社三菱東京Ufj銀行 データベース更新処理システム、データベース更新のための更新データ入力方法、更新データ処理方法、およびプログラム
CN1323513C (zh) * 2003-07-22 2007-06-27 中兴通讯股份有限公司 计费服务器定时输出用户计费信息的方法
US7408875B2 (en) 2004-04-09 2008-08-05 International Business Machines Corporation System and program product for actively managing central queue buffer allocation
US7349334B2 (en) * 2004-04-09 2008-03-25 International Business Machines Corporation Method, system and program product for actively managing central queue buffer allocation using a backpressure mechanism
US7555579B2 (en) * 2004-05-21 2009-06-30 Nortel Networks Limited Implementing FIFOs in shared memory using linked lists and interleaved linked lists
WO2006025338A1 (ja) * 2004-08-31 2006-03-09 Matsushita Electric Industrial Co., Ltd. 情報記録媒体並びに多重化装置および復号化装置
JP4311312B2 (ja) * 2004-09-10 2009-08-12 日本電気株式会社 時系列データ管理方法およびプログラム
US20070022231A1 (en) * 2005-07-25 2007-01-25 Rolf Fritz Method and System for Transferring a Stream of Data
JP4798495B2 (ja) * 2006-05-30 2011-10-19 日本電気株式会社 映像配信品質測定システム、装置および方法
US20080175442A1 (en) * 2007-01-22 2008-07-24 Dennis Megarry Method of displaying graphic images
US9720991B2 (en) * 2014-03-04 2017-08-01 Microsoft Technology Licensing, Llc Seamless data migration across databases
CN105743549B (zh) * 2014-12-10 2019-02-01 展讯通信(上海)有限公司 用户终端及其音频蓝牙播放方法、数字信号处理器
EP3230879B1 (de) 2015-05-02 2023-11-01 Hewlett Packard Enterprise Development LP Speicher mit direktem zugriff
US10210106B2 (en) 2017-03-15 2019-02-19 International Business Machines Corporation Configurable hardware queue management
US10795836B2 (en) 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
CN108462652B (zh) * 2017-07-31 2019-11-12 新华三技术有限公司 一种报文处理方法、装置和网络设备
DE102018220224A1 (de) * 2018-11-26 2020-05-28 Deutsche Bahn Ag Verfahren zum manipulationssicheren Speichern von Daten in einem elektronischen Speicher unter Verwendung einer verketteten Blockchain-Struktur

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3821703A (en) 1972-12-26 1974-06-28 Ibm Signal transferring
US4507760A (en) * 1982-08-13 1985-03-26 At&T Bell Laboratories First-in, first-out (FIFO) memory configuration for queue storage
US4949301A (en) * 1986-03-06 1990-08-14 Advanced Micro Devices, Inc. Improved pointer FIFO controller for converting a standard RAM into a simulated dual FIFO by controlling the RAM's address inputs
DE3689151D1 (de) * 1986-12-30 1993-11-11 Ibm Nicht-sperrender Warteschlangenmechanismus.
BE1000396A7 (fr) 1987-03-18 1988-11-22 Electronique Et Telecomm Bell Systeme de commutation.
EP0382699A3 (de) * 1989-02-07 1992-07-15 International Business Machines Corporation System und Verfahren zur Datenübertragung zwischen Prozessoren
US5249292A (en) * 1989-03-31 1993-09-28 Chiappa J Noel Data packet switch using a primary processing unit to designate one of a plurality of data stream control circuits to selectively handle the header processing of incoming packets in one data packet stream
US5016221A (en) * 1989-12-01 1991-05-14 National Semiconductor Corporation First-in, first-out (FIFO) memory with variable commit point
FR2660818B1 (fr) * 1990-04-06 1992-06-19 France Telecom Relais-commutateur de trames pour reseau numerique asynchrone.
IL96808A (en) * 1990-04-18 1996-03-31 Rambus Inc Introductory / Origin Circuit Agreed Using High-Performance Brokerage
WO1992006431A1 (en) * 1990-09-28 1992-04-16 Fujitsu Limited Message control method for data communication system
GB2267588B (en) * 1992-06-06 1996-03-20 Motorola Inc FIFO memory system
US5652879A (en) * 1993-05-12 1997-07-29 Apple Computer, Inc. Dynamic value mechanism for computer storage container manager enabling access of objects by multiple application programs
WO1995010805A1 (en) * 1993-10-08 1995-04-20 International Business Machines Corporation Message transmission across a network
US5687316A (en) * 1994-07-29 1997-11-11 International Business Machines Corporation Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data
US5696910A (en) * 1995-09-26 1997-12-09 Intel Corporation Method and apparatus for tracking transactions in a pipelined bus
US5870627A (en) * 1995-12-20 1999-02-09 Cirrus Logic, Inc. System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue
US6233637B1 (en) * 1996-03-07 2001-05-15 Sony Corporation Isochronous data pipe for managing and manipulating a high-speed stream of isochronous data flowing between an application and a bus structure
GB2330479B (en) 1997-10-15 2002-10-09 Motorola Inc Router and method for use in a communication system
US6377574B1 (en) * 1997-10-24 2002-04-23 Hitachi, Ltd. Packet switch and method for relaying management cells and data cells in a form of IP packet
US6061690A (en) * 1997-10-31 2000-05-09 Oracle Corporation Apparatus and method for storage of object collections in a database system
DE69837113T2 (de) * 1998-01-20 2007-06-06 Fujitsu Ltd., Kawasaki Datenspeicheranordnung und Steuerverfahren dafür
US6157635A (en) * 1998-02-13 2000-12-05 3Com Corporation Integrated remote data access and audio/visual conference gateway
US6115394A (en) * 1998-03-04 2000-09-05 Ericsson Inc. Methods, apparatus and computer program products for packet transport over wireless communication links
US6505255B1 (en) * 1999-04-29 2003-01-07 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Method for formatting and routing data between an external network and an internal network
US6389468B1 (en) * 1999-03-01 2002-05-14 Sun Microsystems, Inc. Method and apparatus for distributing network traffic processing on a multiprocessor computer
GB2350533B (en) 1999-05-28 2001-07-04 Mitel Corp Method to control data reception buffers for packetized voice channels
US6308238B1 (en) * 1999-09-24 2001-10-23 Akamba Corporation System and method for managing connections between clients and a server with independent connection and data buffers
US6532503B1 (en) * 2000-02-18 2003-03-11 3Com Corporation Method and apparatus to detect lost buffers with a descriptor based queue

Also Published As

Publication number Publication date
JP2002236608A (ja) 2002-08-23
US6760795B2 (en) 2004-07-06
JP2002278830A (ja) 2002-09-27
US20020133648A1 (en) 2002-09-19
FR2821454A1 (fr) 2002-08-30
FR2819090A1 (fr) 2002-07-05
GB2382898A (en) 2003-06-11
GB0230176D0 (en) 2003-02-05
US20020156764A1 (en) 2002-10-24
JP2002261840A (ja) 2002-09-13
GB0230171D0 (en) 2003-02-05
GB2382899B (en) 2003-12-17
DE10164453A1 (de) 2002-07-25
GB2382899A (en) 2003-06-11
FR2819069A1 (fr) 2002-07-05
US20020129213A1 (en) 2002-09-12
DE10164455A1 (de) 2002-07-25
GB2382898B (en) 2005-06-29

Similar Documents

Publication Publication Date Title
DE10164456A1 (de) Datenwarteschlangensystem
DE2913288C2 (de) Multiprozessoranlage mit einer Vielzahl von Prozessorbausteinen
DE69906604T2 (de) Rechnersystem und Verfahren zur Zuordnung von Speicherraum zu Kommunikationsportpuffern
DE60310255T2 (de) Skalierbarer datenzugang in einem beliebig grossen dokument
DE69929095T2 (de) Verwaltung eines durch eine Mehrzahl von Knoten benutzten Betriebsmittels
DE69024753T2 (de) Tragbarer, Ressourcen teilender Datei-Server, der gemeinsame Routines benutzt
DE69217664T2 (de) Multimedia-signalprozessor-rechnersystem
DE69834739T2 (de) Ausgleichen von daten die zwischen verschiedenen leitern fliessen die auf unterschiedlichen frequenzen operieren
DE602004003583T2 (de) System und Verfahren zum Datensichern bei Stromausfall
EP0703534B1 (de) Speicherverwaltungssystem eines Rechnersystems
DE69734432T2 (de) Verfahren und Vorrichtung zur Absendung von Clientverfahrenanrufen in einem Server Rechnersystem
DE602005004508T2 (de) Speichersystem und Speichersteuerverfahren
DE69733305T2 (de) System/Verfahren zur wirkungsvollen Übermittlung von Datenströmen in einem Multimediasystem
DE3751487T2 (de) Verfahren zur Steuerung eines Datenübertragungspuffers.
DE2856483A1 (de) Verbindungseinheit fuer datenverarbeitungssysteme
DE69923658T2 (de) Dynamische speicherplatzzuordnung
DE3853162T2 (de) Gemeinsamer intelligenter Speicher für die gegenseitige Verbindung von verteilten Mikroprozessoren.
DE102008055892A1 (de) Abspeichern von Abschnitten eines Datenübertragungsdeskriptors in einem gecachten und einem nicht gecachten Adressbereich
DE69127399T2 (de) Verfahren zur automatischen Löschung vorübergehender Dokumentverbindungen in einem Datenverarbeitungssystem
DE112011104491T5 (de) Pufferverwaltungsschema für einen Netzwerkprozessor
DE112004002043B4 (de) Verfahren, System und Programm zum Aufbau eines Pakets
DE60128993T2 (de) Mehrfachratenringpuffer und entsprechendes Betriebsverfahren
DE69126823T2 (de) Verfahren zur bedingten Löschung von Datenobjekten in einem Datenverarbeitungssystem
DE3136355A1 (de) Mikrocomputersystem
DE2912073A1 (de) Stapelspeicheranordnung zur kurzzeitigen speicherung von informationen bei nichtabsetzbarkeit dieser informationen in einem datenverarbeitungssystem

Legal Events

Date Code Title Description
8139 Disposal/non-payment of the annual fee