DE10164455A1 - Verfahren zum Speichern eines Datenpakets - Google Patents
Verfahren zum Speichern eines DatenpaketsInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing 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:
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 3 stellt die Felder in einem Betriebsquellen-
Warteschlangenbezeichner dar, bei dem RID der Betriebsquellen-
Warteschlangenidentifizierer ist.
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
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
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
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.
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.
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)
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)
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 |
-
2001
- 2001-01-29 GB GB0230176A patent/GB2382899B/en not_active Expired - Fee Related
- 2001-01-29 GB GB0230171A patent/GB2382898B/en not_active Expired - Fee Related
- 2001-12-21 DE DE10164456A patent/DE10164456A1/de not_active Withdrawn
- 2001-12-21 DE DE10164455A patent/DE10164455A1/de not_active Withdrawn
- 2001-12-21 DE DE10164453A patent/DE10164453A1/de not_active Withdrawn
- 2001-12-26 JP JP2001393974A patent/JP2002236608A/ja active Pending
- 2001-12-26 JP JP2001393972A patent/JP2002261840A/ja active Pending
- 2001-12-26 JP JP2001393973A patent/JP2002278830A/ja active Pending
- 2001-12-28 US US10/035,002 patent/US20020129213A1/en not_active Abandoned
- 2001-12-28 US US10/032,806 patent/US20020156764A1/en not_active Abandoned
- 2001-12-28 US US10/035,000 patent/US6760795B2/en not_active Expired - Fee Related
- 2001-12-31 FR FR0117083A patent/FR2819069A1/fr not_active Withdrawn
- 2001-12-31 FR FR0117087A patent/FR2821454A1/fr not_active Withdrawn
- 2001-12-31 FR FR0117086A patent/FR2819090A1/fr not_active Withdrawn
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 |