DE10164455A1 - Verfahren zum Speichern eines Datenpakets - Google Patents

Verfahren zum Speichern eines Datenpakets

Info

Publication number
DE10164455A1
DE10164455A1 DE10164455A DE10164455A DE10164455A1 DE 10164455 A1 DE10164455 A1 DE 10164455A1 DE 10164455 A DE10164455 A DE 10164455A DE 10164455 A DE10164455 A DE 10164455A DE 10164455 A1 DE10164455 A1 DE 10164455A1
Authority
DE
Germany
Prior art keywords
queue
blocks
field
packet
data
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
DE10164455A
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 DE10164455A1 publication Critical patent/DE10164455A1/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 Verfahren zum Speichern eines Datenpakets in einem Speicher, der in mehrere Speicherblöcke unterteilt ist, beinhaltet das Entfernen eines Kopfteils des Datenpakets in Paketfragmente, Speichern jedes Paketfragments in einem jeweiligen Speicherblock mit einem jeweiligen Kopfteil. Dann wird im Kopfteil des Speicherblocks, der das Paketfragment enthält, das dem Beginn des Restes des Datenpakets entspricht, ein "Paketbeginn"-Merker gesetzt.

Description

Diese Erfindung bezieht sich auf ein Verfahren zum Speichern eines Da­ tenpakets in einem Speicher, der in mehrere Speicherblöcke unterteilt ist.
Gemäß der Erfindung wird ein Verfahren zum Speichern eines Datenpa­ kets in einem Speicher bereitgestellt, der in mehrere Speicherblöcke unter­ teilt ist, wobei das Verfahren umfasst: Entfernen eines Kopfteils des Da­ tenpakets; Teilen des Restes des Datenpakets in Paketfragmente; Spei­ chern jedes Paketfragments in einem jeweiligen Speicherblock mit einem jeweiligen Kopfteil und Setzen eines "Paketstart"-Merkers in dem Kopfteil des Speicherblocks, der das Paketfragment enthält, das zum Start des Restes des Datenpakets gehört.
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 Warteschlangenverwaltersystem 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 erforderliche 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 (Portale 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 1 s (= -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 1 s (= -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 1 s (= -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 1 s (= -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 fetzten 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 Verbindungs-ID
2 Byte Protokoll/Service-Multiplexer
0 bis 65533 Byte Nutzinformationsdaten
Das L2CAP-Paket wird durch die USB-Hauptrechnerschnittstelle 11 in ein oder mehrere "Hauptrechnersteuerschnittstellen"(HCI)-Pakete eingegeben, wobei ein HCI-Paket das folgende Format aufweist:
12 Bit Verbindungskennung + 2 Bit Paketgrenze + 2 Bit Rundfunktyp
2 Byte Längenfeld
0 bis 65533 Byte Nutzinformationsdaten
Jedes HCI-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 (HCI-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 HCI- Pakets sind, extrahiert die Warteschlangennutzerschnittstelle 15 die ersten 4 Byte eines HCI-Paketkopfes und transferiert den Rest der Nutzinformati­ onsdaten zu dem QMS 10. Wenn ein USB-Paket der Beginn eines HCI- Pakets ist, werden die ersten zwei Byte des HCI-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 HCI-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 HCI- 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 HCI-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 HCI-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. HCI- Paketgrenzen müssen jedoch nicht aufrechterhalten werden. Daher kann ein Radiopaket aus einem Fragment eines HCI-Pakets bestehen, oder es kann mehrere HCI-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 HCI-Paketgrenzen befasst, zählt es, wie viele HCI-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, HCI- 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 HCI-Pakete bis zu einer L2CAP-Paketgrenze. Um dies durch­ zuführen, weist der Hauptrechner eine voreingestellte maximale HCI- 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 HCI-Paketgröße zu füllen. Der Hauptrechner baut dann unter Verwendung einer Verbindungs­ kennung, die mit der Warteschlange verknüpft ist, einen HCI-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 HCI-Pakete weiter in USB-Pakete unterteilt, wobei alle Datenpakete die gleiche USB-Adresse und den glei­ chen Endpunkt verwenden.

Claims (2)

1. Verfahren zum Speichern eines Datenpakets in einem Speicher, der in mehrere Speicherblöcke unterteilt ist, wobei das Verfahren beinhaltet:
Entfernen eines Kopfteils aus dem Datenpaket;
Unterteilen des Restes des Datenpakets in Paketfragmente;
Speichern jedes Paketfragments in einem jeweiligen Speicherblock mit ei­ nem jeweiligen Kopfteil; und
Setzen eines "Paketbeginn"-Merkers in dem Kopfteil des Speicher­ blocks, der das Paketfragment enthält, das dem Beginn des Restes des Datenpakts entspricht.
2. Verfahren nach Anspruch 1, bei dem der Kopfteil mehrere "Paketbe­ ginn"-Merker aufweist und das Verfahren des Weiteren das Setzen eines "Paketbeginn"-Merkers beinhaltet, der dem Pakettyp entspricht.
DE10164455A 2000-12-29 2001-12-21 Verfahren zum Speichern eines Datenpakets Withdrawn DE10164455A1 (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
DE10164455A1 true DE10164455A1 (de) 2002-07-25

Family

ID=26245499

Family Applications (3)

Application Number Title Priority Date Filing Date
DE10164456A Withdrawn DE10164456A1 (de) 2000-12-29 2001-12-21 Datenwarteschlangensystem
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

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE10164456A Withdrawn DE10164456A1 (de) 2000-12-29 2001-12-21 Datenwarteschlangensystem

Family Applications After (1)

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

Country Status (5)

Country Link
US (3) US20020129213A1 (de)
JP (3) JP2002236608A (de)
DE (3) DE10164456A1 (de)
FR (3) FR2819069A1 (de)
GB (2) GB2382899B (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 富士通株式会社 データ処理装置及びパケット判別方法
WO2004036381A2 (en) * 2002-10-18 2004-04-29 Broadcom Corporation System and method for receive queue provisioning
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 中兴通讯股份有限公司 计费服务器定时输出用户计费信息的方法
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
US7408875B2 (en) * 2004-04-09 2008-08-05 International Business Machines Corporation System and program product for actively managing central queue buffer allocation
US7555579B2 (en) * 2004-05-21 2009-06-30 Nortel Networks Limited Implementing FIFOs in shared memory using linked lists and interleaved linked lists
KR101110902B1 (ko) * 2004-08-31 2012-03-16 파나소닉 주식회사 정보 기록 매체 및 다중화 장치 및 복호화 장치
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 展讯通信(上海)有限公司 用户终端及其音频蓝牙播放方法、数字信号处理器
CN107209738B (zh) 2015-05-02 2020-01-10 慧与发展有限责任合伙企业 储存存储器直接访问
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
EP0273083B1 (de) * 1986-12-30 1993-10-06 International Business Machines Corporation 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
EP0502214B1 (de) * 1990-09-28 1998-07-22 Fujitsu Limited Nachrichtensteuerungsverfahren für ein datenkommunikationssystem
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
EP0673523B1 (de) * 1993-10-08 1999-02-10 International Business Machines Corporation Nachrichtenübertragung über ein netzwerk
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
DE69830834T2 (de) * 1998-01-20 2006-01-26 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
GB2382899A (en) 2003-06-11
FR2821454A1 (fr) 2002-08-30
DE10164453A1 (de) 2002-07-25
US20020129213A1 (en) 2002-09-12
FR2819069A1 (fr) 2002-07-05
GB2382898A (en) 2003-06-11
DE10164456A1 (de) 2002-08-01
GB2382898B (en) 2005-06-29
US20020133648A1 (en) 2002-09-19
US6760795B2 (en) 2004-07-06
FR2819090A1 (fr) 2002-07-05
JP2002236608A (ja) 2002-08-23
GB0230171D0 (en) 2003-02-05
GB2382899B (en) 2003-12-17
US20020156764A1 (en) 2002-10-24
JP2002261840A (ja) 2002-09-13
JP2002278830A (ja) 2002-09-27
GB0230176D0 (en) 2003-02-05

Similar Documents

Publication Publication Date Title
DE10164455A1 (de) Verfahren zum Speichern eines Datenpakets
DE60310255T2 (de) Skalierbarer datenzugang in einem beliebig grossen dokument
DE69929095T2 (de) Verwaltung eines durch eine Mehrzahl von Knoten benutzten Betriebsmittels
DE2913288C2 (de) Multiprozessoranlage mit einer Vielzahl von Prozessorbausteinen
DE19580990C2 (de) Verfahren und Einrichtung zum Ausführen verzögerter Transaktionen
DE69906604T2 (de) Rechnersystem und Verfahren zur Zuordnung von Speicherraum zu Kommunikationsportpuffern
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
DE60117150T2 (de) Verfahren und computerprogramm zum übertragen von inhalt aus einer quellendatenbank zu einer zieldatenbank
DE19839310C2 (de) Datensicherungsystem zum Sichern und Speichern von Daten, die von einer sich in einem Fahrzeug befindlichen Terminalvorrichtung verwendet werden, in einem Sicherungszentrum, das per Datenkommunikation mit dem Fahrzeug in Kontakt steht.
DE602005004508T2 (de) Speichersystem und Speichersteuerverfahren
DE10348326A1 (de) Permanentspeichervorrichtung, die an eine Kommunikationsverbindung angeschlossen ist
CH656729A5 (de) Schnittstellenschaltungsanordnung zur verbindung eines prozessors mit einem nachrichtenkanal.
DE2912738A1 (de) System mit direkter uebertragung zwischen subsystemen
DE102008055892A1 (de) Abspeichern von Abschnitten eines Datenübertragungsdeskriptors in einem gecachten und einem nicht gecachten Adressbereich
DE3751487T2 (de) Verfahren zur Steuerung eines Datenübertragungspuffers.
DE69923658T2 (de) Dynamische speicherplatzzuordnung
DE3853162T2 (de) Gemeinsamer intelligenter Speicher für die gegenseitige Verbindung von verteilten Mikroprozessoren.
DE69127399T2 (de) Verfahren zur automatischen Löschung vorübergehender Dokumentverbindungen in einem Datenverarbeitungssystem
DE1524102B2 (de) Elektronische, aus baueinheiten aufgebaute datenverarbeitungsmaschine
DE112004002043B4 (de) Verfahren, System und Programm zum Aufbau eines Pakets
DE3586447T2 (de) Kompression von binaerzahlen fuer ihre speicherung.
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