[go: up one dir, main page]

DE60128993T2 - Mehrfachratenringpuffer und entsprechendes Betriebsverfahren - Google Patents

Mehrfachratenringpuffer und entsprechendes Betriebsverfahren Download PDF

Info

Publication number
DE60128993T2
DE60128993T2 DE60128993T DE60128993T DE60128993T2 DE 60128993 T2 DE60128993 T2 DE 60128993T2 DE 60128993 T DE60128993 T DE 60128993T DE 60128993 T DE60128993 T DE 60128993T DE 60128993 T2 DE60128993 T2 DE 60128993T2
Authority
DE
Germany
Prior art keywords
value
buffer
ring buffer
data
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60128993T
Other languages
English (en)
Other versions
DE60128993D1 (de
Inventor
Raphael Apfeldorfer
Emmanuel Neuville
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.)
Nortel Networks France SAS
Original Assignee
Nortel Networks France SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nortel Networks France SAS filed Critical Nortel Networks France SAS
Application granted granted Critical
Publication of DE60128993D1 publication Critical patent/DE60128993D1/de
Publication of DE60128993T2 publication Critical patent/DE60128993T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Communication Control (AREA)
  • Shift Register Type Memory (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf Ringpuffer und Verfahren zum Betreiben derselben, speziell für Anwendungen in Telekommunikationssystemen und -verfahren und in Computern, spezieller ausgedrückt in denen, in welchen Mehrfachraten-Daten empfangen und zeitweise gespeichert werden müssen. Beispielsweise können derartige Anwendungen digitales Signalverarbeiten (DSP), Kanalentzerrung, Kanalcodierung, Verschachtelung, Kompression, Verschlüsselung, Sprachcodieren und -decodieren etc. beinhalten.
  • HINTERGRUND DER ERFINDUNG
  • Es gibt viele Anwendungen in der Telekommunikation, bei welchen Daten bei unterschiedlichen Datenraten empfangen werden, z.B. wenn Sprachnachrichten, Video, Daten, Fax unkomprimiert oder komprimiert übertragen werden. Die "Multimedia-Revolution" erfordert die Übertragung und den Empfang einer breiten Vielfalt von Datentypen, Formaten und Raten. Derartige Daten werden häufig durch Algorithmen verarbeitet, welche das zeitweise Speichern oder Puffer der Daten erfordern, während diese Verarbeitung ausgeführt wird. Sobald sie verarbeitet sind, wird die gesamte Aufzeichnung der Daten vom Speicher gelöscht oder mit den nächsten Daten, welche zu verarbeiten sind, überschrieben.
  • Eine Art des Pufferns derartiger Daten geschieht in einem Ringpuffer. Hardware-Lösungen für derartige Puffer haben einen hohen Grad an Hochwertigkeit erreicht. Diese Lösungen basierend häufig auf einer MODULO-Arithmetik für das Berechnen der Adressen im Speicher, da eine derartige Arithmetik sehr effizient in einem digitalen System ausgeführt werden kann. Wenn man sich jedoch mit Daten beschäftigt, welche bei unterschiedlichen Datenraten ankommen können, gibt es ein Problem, wie man die Größe der Speicher optimieren kann, welche für das Puffer der Daten benutzt werden. Die dritte Generation der mobilen Telekommunikationssysteme, wie z.B. UMTS, erfordert Vielfachrate-Datenverarbeitung, wobei die Datenrate sich möglicherweise mit jedem Rahmen verändert. Die Transportkanäle sind die Übertragungsdienste, welche durch die Ebene 1 zu MAC und höheren Ebenen angeboten werden. Die Schwierigkeit beim Implementieren einer physikalischen UMTS-Ebene besteht darin, dass Transportkanäle hochvariable Raten besitzen, welche sich bei jedem Rahmen ändern können (10 ms). Dies erfordert ein sehr anpassungsfähiges Speicher-Management. Das Grundband-Modem muss Datenpakete mit veränderlicher Größe entsprechend Transportkanälen mit veränderlicher Rate speichern. Nichtsdestotrotz ist das Modem aufgrund der Funkbandbreite begrenzt. Beispielsweise muss es eine endliche Anzahl N von 384 kbps-Transportkanälen oder alternativ 3 × N 128 kbps-Kanäle oder 32 × N 12 kbps-Kanäle bearbeiten. Der Speicher muss optimiert werden, um all diese Fälle effektiv zu bearbeiten.
  • Eine Lösung dieses Problems wird in der US 6,005,898 vorgeschlagen. Die Rate wird konstant gehalten, sofern die Verarbeitungsschaltung betroffen ist, indem die Signale für niedrige Datenraten dupliziert werden, so dass die Verarbeitungsschaltung die gleiche Datenrate unabhängig von der empfangenen Datenrate empfängt. Diese bekannte Technik nutzt den Zeitunterschied, um Extrabits bei niedrigen Datenraten zu liefern, welche helfen können, die Signalqualität zu verbessern. Jedoch besitzt diese Technik den Nachteil, dass die volle Datenrate unabhängig von der empfangenen Datenrate benutzt wird. Der Leistungsverbrauch mobiler Telefone ist wichtig für die Batterielebensdauer. Der Leistungsverbrauch von datenintensiven Verarbeitungsaufgaben ist in breitem Maße abhängig von den Speicherzugriffen. Da das Benutzen der maximalen Datenrate zu jeder Zeit das Benutzen einer Maximalanzahl von Datenzugriffen bedeutet, um irgendwelche der Daten zu verarbeiten, ist diese Lösung nicht bezüglich des Leistungsverbrauches, der Speichernutzung oder der Kosten (Speicher mit zu großer Größe) optimiert.
  • Ein anderes Verfahren besteht darin, eine Vielzahl von Speichern zu liefern und einen Speichertyp für jede Datenrate zu nutzen. Diese Technik gebraucht den Speicher ineffizient, da ein Teil des Speichers für lange Zeitperioden untätig sein kann, bis eine spezielle Datenrate benutzt wird. Falls der benutzte Speicher ein RAM ist, welcher eine kontinuierliche Auffrischung benötigt, dann ist der Leistungsverbrauch nicht optimal. In der US 5,659,698 wird eine Lösung für dieses Problem vorgeschlagen. Sie liefert einen Ringpuffer, welcher durch zwei unterschiedliche Datengrößen adressiert werden kann. Eine erste Größe ist durch einen Offset und eine zweite Größe durch eine Gleitadresse bestimmt. Diese Technik besitzt einen Nachteil, wenn die Datenrate sehr stark variiert. In diesem Fall können die Daten zum Beginn des Ringpuffers umherkreisen gelassen werden und Daten überschreiben, welche noch benötigt werden. In der '698 wird speziell dargestellt, dass die durch die Gleitadresse behandelten Daten wenig oder keine Chance zum Erreichen des Endes des Puffers besitzen sollten. Um dies zu verhindern, kann ein großer Puffer benutzt werden, dann jedoch ist das Gebrauchen des Speichers nicht optimal.
  • Es besteht eine Notwendigkeit für ein optimaleres Gestalten des Ringpuffers, welches einen besseren Nutzen des Speicherraumes in sich vereinigt und den Leistungsverbrauch optimiert, während es auch in der Lage ist, sich effizient mit den Daten zu beschäftigen, welche bei unterschiedlichen Datenraten ankommen.
  • Eine Aufgabe der vorliegenden Erfindung besteht darin, einen Ringpuffer und ein Verfahren zum Betreiben desselben zu liefern, welches eine verbesserte Optimierung des Leistungsnutzens und der Speichergröße besitzt.
  • Eine andere Aufgabe der vorliegenden Erfindung besteht darin, einen Ringpuffer und ein Verfahren zum Betreiben desselben zu liefern, welches eine verbesserte Leistungsfähigkeit für das zeitliche Speichern von Daten bei veränderlichen Datenraten besitzt.
  • ZUSAMMENFASSUNG DER VORLIEGENDEN ERFINDUNG
  • Die vorliegende Erfindung liefert ein Verfahren zum Speichern von Daten in einem Ringpuffer, definiert durch Anspruch 1.
  • Vorzugsweise weist das Verfahren ferner die Schritte auf: Speichern eines fünften Referenzwertes, welcher für den zyklischen Zustand des Ringpuffers repräsentativ ist. Vorzugsweise ist der fünfte Wert ein Boolescher Wert. Das Verfahren beinhaltet vorzugsweise den Schritt des Verhinderns des Schreibens der Daten in den Ringpuffer, abhängig von dem Wert des fünften Wertes. Typischerweise besitzt der Boolesche Wert des fünften Wertes einen von zwei binären Werten, und der fünfte Wert ändert sich von einem Binärwert zu einem anderen, wenn der Wert entweder des dritten und vierten Wertes sich so verändert, dass er die Adresse des Endes des Ringpuffers durchlässt. Im Falle eines Inkrementierens des Puffers kann der Schritt des Schreibens der Daten in den Ringpuffer durch die folgende Wahrheitstabelle bestimmt werden:
    zweiter Wert > dritter Wert > vierter Wert fünfter Wert = ein Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden
    dritter Wert < vierter < zweiter Wert fünfter Wert = anderer Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden
    vierter Wert = dritter Wert fünfter Wert = ein Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden
    vierter Wert = dritter Wert fünfter Wert = anderer Binärwert Puffer ist voll und keine Speicherorte können zugewiesen werden
  • Für einen dekrementierenden Ringpuffer wird eine ähnliche Tabelle angewendet. Typischerweise werden die Daten, welche in dem Ringpuffer zu speichern sind, wenigstens bei einer ersten und einer zweiten Datenrate empfangen, und ein Betrag an Speicherraum wird in dem Ringpuffer entsprechend der Datenrate zugewiesen. Der Puffer kann in jedem geeigneten Speicher implementiert werden, jedoch speziell auf einem Direktzugriffsspeicher (RAM) auf dem Chip oder außerhalb des Chips. Typischerweise wird der Ringpuffer in einem Mobiltelekommunikationssystem benutzt.
  • Die vorliegende Erfindung liefert einen Ringpuffer, welcher einen Adressgenerator besitzt, definiert durch Anspruch 10.
  • Der Ringpuffer kann auch einen fünften Speicherort aufweisen, welcher einen fünften Referenzwert speichert, welcher für den zyklischen Zustand des Ringpuffers repräsentativ ist. Die Speichersteuerung ist vorzugsweise geeignet, das Schreiben von Daten in den Ringpuffer abhängig von dem Wert des fünften Wertes zu verhindern. Typischerweise besitzt der fünfte Wert einen von zwei Binärwerten, und die Speichersteuerung ist geeignet, den fünften Wert von einem Binärwert zu einem anderen zu verändern, wenn sich der Wert entweder des dritten oder des vierten Wertes so ändert, dass er die Adresse des Endes des Ringpuffers durchlässt. Falls der Puffer ein inkrementierender Puffer ist, kann die Speichersteuerung geeignet sein, das Schreiben von Daten in den Ringpuffer zuzulassen, wie dies durch die folgende Wahrheitstabelle bestimmt ist:
    zweiter Wert > dritter Wert > vierter Wert fünfter Wert = ein Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden
    dritter Wert < vierter < zweiter Wert fünfter Wert = anderer Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden
    vierter Wert = dritter Wert fünfter Wert = ein Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden
    vierter Wert = dritter Wert fünfter Wert = anderer Binärwert Puffer ist voll und keine Speicherorte können zugewiesen werden
  • Typischerweise werden die Daten, welche in dem Ringpuffer zu speichern sind, bei wenigstens einer ersten und einer zweiten Datenrate empfangen und die Speichersteuerung ist geeignet, einen Betrag an Speicherraum in dem Ringpuffer entsprechend der Datenrate zuzuweisen.
  • Die vorliegende Erfindung kann auch ein Mobil-Telekommunikationssystem liefern, welches einen Ringpuffer, wie oben beschrieben, aufweist. Der Ringpuffer kann in jedem Bauteil des Systems beinhaltet sein, wie z.B. in einem oder mehreren mobilen oder stationären Benutzergeräten eines Basisstation-Transceivers, einem Zwischenverstärker, einer Funkvermittlungsstelle.
  • Ein Ringpuffer entsprechend der vorliegenden Erfindung gestattet das effektive Implementieren von Nachrichten variabler Größe, um Daten in Echtzeitumgebung zu übertragen und zu empfangen.
  • Die vorliegende Erfindung wird nun mit Bezug auf die folgenden Zeichnungen beschrieben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt einen Nachrichtenraum entsprechend einer Ausführungsform der vorliegenden Erfindung zum Speichern von Daten in einem Ringpuffer.
  • 2 zeigt den Anfangszustand eines Ringpuffers entsprechend der Erfindung.
  • 3 und 4 zeigen den Ringpuffer der 2 zu späteren Zeiten.
  • 5, 6A und 6B zeigen schematische Flussdiagramme der Adressensteuerung entsprechend den Ausführungsformen der vorliegenden Erfindung.
  • 7 zeigt die Initialisierschritte für einen Ringpuffer entsprechend der vorliegenden Erfindung.
  • 8 zeigt ein Beispiel der Anwendung der vorliegenden Erfindung für das Vielfachrate-Datenpuffern.
  • 9 ist eine schematische Darstellung einer Software-Lösung, welche einen eingebetteten Mikroprozessor entsprechend einer Ausführungsform der vorliegenden Erfindung nutzt.
  • BESCHREIBUNG DER ERLÄUTERNDEN AUSFÜHRUNGSFORMEN
  • Die vorliegende Erfindung wird mit Bezug auf bestimmte Ausführungsformen und Zeichnungen beschrieben, jedoch ist die vorliegende Erfindung nicht darauf begrenzt, sondern nur durch die Ansprüche. Speziell kann die vorliegende Erfindung ebenso gut in Hardware oder Software implementiert werden. Die vorliegende Erfindung wird hauptsächlich mit Bezug auf Mobilfunktelekommunikationssysteme beschrieben, jedoch ist die vorliegende Erfindung nicht auf diese beschränkt. Im Folgenden wird das Inkrementieren eines Ringpuffers beschrieben, jedoch wird ein Fachmann würdigen, dass die vorliegende Erfindung nicht darauf begrenzt ist, sondern ebenso das Dekrementieren von Ringpuffern beinhaltet. Mit Bezug auf das Adressieren von Speicherorten in einem Puffer ist die vorliegende Erfindung nicht auf irgendein spezielles Verfahren begrenzt, z.B. relatives Adressieren, absolutes Adressieren.
  • Ein Gesichtspunkt der vorliegenden Erfindung begründet sich auf das Implementieren eines Ringpuffers, welcher die oben erwähnten Probleme löst, speziell für Vielfachrate-Daten. Die vorliegende Erfindung bezieht sich auf das Puffer von Daten in einem Ringpuffer 20, welcher eine vorteilhafte Verwendung in einem Mobiltelekommunikationssystem finden kann, z.B. in einem Mobiltelefon oder in einer Basisstation. Die Zuordnung von Raum in dem Puffer wird entsprechend Ausführungsformen der vorliegenden Erfindung in Form des Speicherns von Nachrichten 10 (siehe 1) in dem Ringpuffer beschrieben. Die Nachrichten 10 sind Teil des Ringpuffers 20, welcher die Speicherfläche abgrenzt, welche für die Systemaufgaben zugeordnet werden kann. Eine Nachricht 10 trägt ein Datenteil 6, welches die Information enthält, welche in dem Echtzeitsystem, z.B. UMTS, übertragen wird. Innerhalb eines Senders oder Empfängers oder einem anderen Verarbeitungsgerät wird sie zwischen unterschiedlichen Aufgaben ausgetauscht, welche die Verarbeitung der Information durchführen. Jede Nachricht 10 hat einen header bzw. Nachrichtenkopf 1, welcher ihren Status 2 und ihre Größe 4 besitzt. Das Statusfeld kann mehrere Werte annehmen, z.B. FREI, BENUTZT oder ENDE. Wenn eine Nachricht dem Speicher zugewiesen wird (Daten werden eingelesen), geht dessen Status von FREI auf BENUTZT über. Wenn er freigemacht wird, geht er von BENUTZT auf FREI über. Der EMD-Wert wird benutzt, um anzuzeigen, dass es keine Nachricht unterhalb dieser Position gibt und dass die nächsten Nachrichten am Beginn des Puffers zuzuweisen sind. Optional kann ein Steuerwort 8 am Ende einer zugewiesenen Nachricht 10 zugewiesen werden, um zu prüfen, dass eine Nachricht tatsächlich mit der spezifizierten Größe gefüllt wurde und dass der Pufferinhalt nicht verfälscht ist. Entweder kann das Kontrollwort 8 oder die header-1-Information oder beide von diesen genutzt werden, um die Datenintegrität zu prüfen. Ein Überfließen am Beginn oder am Ende einer Nachricht wird eine Verfälschung der Daten auslösen, welche durch das Überwachen des Steuerwortes und/oder des Nachrichtenkopfes bestimmt werden kann. Dies kann optional während der gesamten Lebensdauer einer speziellen Nachricht durchgeführt werden. Dieses Überwachen des Nachrichtenkopfs und/oder Steuerwortes kann einen Gesichtspunkt des Datenschutzes innerhalb des Puffers aufweisen, welches ein Gesichtspunkt der vorliegenden Erfindung ist.
  • Der Ringpuffer 20 wird durch das Warten von Zeigern gesteuert, welche im Speicher gespeichert sind, z.B. in Registern oder ähnlichen Speicheroten gespeichert, welche freie und benutzte Flächen in dem Ringpuffer 20 abgrenzen (siehe 2). Die Speichersteuerung kann durch ein getrenntes Steuergerät ausgeführt werden oder kann in Software als Teil eines Computerprogramms implementiert sein. Im Folgenden wird Bezug auf Zeiger und Register genommen, jedoch ist die vorliegende Erfindung nicht darauf begrenzt, noch wird erwartet, dass die vorliegende Erfindung durch die Art des Speichergebrauchens begrenzt ist, z.B. EEPROM, SRAM, noch in welcher Weise das Managen und Adressieren des Speichers implementiert ist. In Systemen, welche keine Zeiger und/oder Register benutzen, sind äquivalente Steuereinrichtungen im Allgemeinen vorgesehen, z.B. Handles, welche in geeigneter Weise gespeichert werden können, z.B. auf einem Stapel oder in einem getrennten Speicher.
  • Vorzugsweise werden fünf Register oder Speicherorte benutzt, um die Adress-Steuerdaten für den Ringpuffer zu speichern.
  • Register 1 enthält einen Zeiger des Wertes pBegin bzw. pBeginn, welcher auf den Beginn der Adresse 11 des Ringpuffers 20 zeigt.
  • Register 2 enthält einen Zeiger des Wertes pRead bzw. pLese, welcher auf den Beginn eines Leseabschnitts 12 des Ringpuffers 20 zeigt.
  • Register 3 enthält einen Zeiger des Wertes pWrite bzw. pSchreibe, welcher auf den Beginn der Adresse 13 eines Schreibe-Abschnitts des Ringpuffers 20 zeigt.
  • Register 4 enthält einen Zeiger des Wertes pEnd bzw. pEnde, welcher auf eine Adresse 14 am Ende des Ringpuffers zeigt.
  • Register 5, FlagLoop bzw. Kennungsschleife, enthält einen Zeiger eines Booleschen Wertes 15, z.B. WAHR oder FALSCH.
  • Der Wert ändert sich jedesmal, wenn pRead oder pWrite am Ende des Ringpuffers durchlauft, und wird zum Beginn des Puffers in einer Umkreisungs-Prozedur zurückgeschickt.
  • Wie in 2 gezeigt wird, enthält am Beginn der Puffer 20 nur eine FREI-Nachricht, welche anzeigt, dass die gesamte Fläche bereit ist, zugeordnet zu werden, wobei bei der Adresse pRead gestartet wird, welche an diesem Zeitpunkt die gleiche Adresse wie pBegin und pWrite besitzt.
  • Wie schematisch in 3 gezeigt wird, ist während der Lebensdauer der Puffer aus zwei Teilen aufgebaut. Ein Teil 16 enthält FREI-Nachrichten, welche, wie in der Figur gezeigt wird, Bereiche von Adressen pWrite bis pEnd und pBegin bis pRead besitzt, wenn FlagLoop = FALSCH ist. Wenn eine neue Nachricht benötigt wird (ein neuer Raum im Speicher erforderlich ist), wird eine Fläche durch Speichern der Werte des Statusfeldes 2, des Größenfeldes 4 der Nachricht und optional des Steuerwortfeldes 6 beginnend bei der aktuellen pWrite-Adresse zugewiesen. Auch weist ein Teil 17 BENUTZTE Nachrichten auf (d.h. zugewiesene und gespeicherte Daten), welche von den Adressen pRead zu pWrite reichen, wenn FlagLoop = FALSCH ist. Wenn eine Nachricht freigegeben wird, wird der Status auf FREI gesetzt. Wenn die Nachricht, welche mit der Adresse pRead beginnt, freigegeben ist, wird die Adresse pRead zu der nächsten BENUTZTEN Nachricht bewegt, und das relevante Register wird mit dem neuen Adresswert aktualisiert. Der Wert von pRead zeigt weiterhin auf die erste BENUTZTE Nachricht des Abschnitts. In diesem Beispiel besitzt FlagLoop den Wert FALSCH, was bedeutet, dass die Adresse pWrite noch nicht die Endadresse des Puffers (pEnd) erreicht hat.
  • Wenn einige weitere Nachrichten zugewiesen wurden, ändert sich der Wert von pWrite, wobei auf Adressen gezeigt wird, welche näher an dem Ende des Ringpuffers sind, jedoch immer auf eine FREIE Nachrichtenfläche. Wenn die nächsten Nachrichten, welche zuzuweisen sind, in pWrite resultieren, welches unterhalb der Adresse pEnd des Puffers ankommt, setzen sie das Statusfeld der letzten Nachricht auf ENDE und starten das Schreiben am Beginn des Puffers 20 für die nächste Nachricht, wie dies in 4 gezeigt wird, so dass sie umherkreisen, wie dies im Allgemeinen für einen Ringpuffer erforderlich ist. FlagLoop ändert sich auf WAHR bei jedem Umherkreisen von pWrite; und FlagLoop ändert sich auf FALSCH für jedes Umherkreisen von pRead.
  • Entsprechend einem Gesichtspunkt der vorliegenden Erfindung wird diese Umherkreisungsprozedur vorzugsweise in einer sicheren Weise gesteuert, um das Überschreiben von Daten, welche noch nicht verbraucht wurden, d.h. welche noch erforderlich sind, zu verhindern. Diese Datensicherheitseinrichtung kann durch die Kombination von FlagLoop, der pWrite- und pRead-Register und eines Steueralgorithmus vorgesehen sein, welcher die zyklische Speicherzuweisungsnutzung eines Ringspeichers berücksichtigt. Wenn pWrite größer als pEnde werden würde, wird pWrite zurück zu pBegin gebracht und FlagLoop wird auf WAHR gesetzt. Daher besitzt FlagLoop den Wert WAHR, wenn pRead näher am Ende des Ringpuffers ist als pWrite. FlagLoop hat den Wert FALSCH, wenn pRead näher am Beginn des Ringpuffers ist als pWrite. Zwei Steuerfälle treten auf. Falls FlagLoop auf FALSCH gesetzt ist und pRead den Anschluss an pWrite findet, dann ist der gesamte Puffer frei. Wenn FlagLoop den Wert WAHR und pWrite den Anschluss an pRead findet, hat der Puffer keine Speicherorte zum Zuordnen mehr frei. In diesem Fall wird die nächste Nachricht in einem anderen Ringpuffer gespeichert, z.B. durch das Schaffen eines Puffers entsprechend der Routine 200 (7), oder wird missachtet, wenn kein neuer oder vorhandener Puffer verfügbar ist. In dem speziellen Fall, dass pRead auf die gleiche Adresse wie pBegin zeigt und pWrite noch nicht das Ende des Puffers erreicht hat, wird dann FlagLoop auf FALSCH gesetzt. Wenn eine neue Nachricht pWrite unterhalb von pEnd übernehmen würde, muss pWrite auf die Adresse pBegin am Beginn des Puffers zeigen, um mit dem Schreiben einer neuen Nachricht zu beginnen. Um dies durchzuführen, muss es umherkreisen, und FlagLoop wird auf WAHR geändert. Wenn pWrite pRead entspricht und FlagLoop auf WAHR gesetzt ist, dann ist der Speicher voll und keine weiteren Daten können in den Ringpuffer geschrieben werden. Oben Stehendes kann als ein neuer Algorithmus zusammengefasst werden, welcher durch die folgende Wahrheitstabelle festgelegt ist (unter der Annahme, dass ein inkrementierender Puffer benutzt wird):
    pEnd > pWrite > pRead FlagLoop = FALSCH Speicher ist frei und kann zugeordnet werden
    pWrite < pRead < pEnd FlagLoop = WAHR Speicher ist frei und kann zugeordnet werden
    pWrite = dritter pRead FlagLoop = FALSCH Speicher ist frei und kann zugeordnet werden
    pWrite = pRead FlagLoop = WAHR Speicher ist voll
  • Die vorliegende Erfindung beinhaltet jegliche Routine, welche gleich zu einer Implementierung der obigen Wahrheitstabelle oder irgendeines Gerätes ist, welches diese Routine ausführt.
  • Es wird vorzugsweise Sicherheit geliefert, um sicherzustellen, dass pWrite nicht pRead überspringen kann. Dies wird mit Bezug auf die Routinen 100, 150, 160 und 200 in den 5, 6A, 6B, 7 beschrieben. Die Routine 200 der 7 wird einmal bei der Schaffung eines Ringpuffers aufgerufen. Die Routine 100 der 5 wird bei jeder Nachrichtenzuweisung aufgerufen. Die Hauptroutine 150 der 6A wird aufgerufen, wenn eine Nachrichtenzuordnung in einem Nicht-Umlauf oder einem "Nicht-Umherkreisen" durchgeführt wird, wohingegen der Sprungbefehl des Schrittes 106 aufgerufen wird, wenn eine Nachrichtenzuweisung mit einem Umherkreisen erforderlich ist. Die Routine 160 der 6B wird aufgerufen, wenn eine Nachricht freigegeben ist.
  • Als Erstes wird ein Ringpuffer entsprechend der Routine 200 initialisiert, und der Algorithmus wird zu 5 durchgelassen. Mit Bezug auf 5 wird der Anfangsschritt 102 pWrite einem zeitlichen Wert pWritetemp gleichgesetzt, welcher später benutzt werden wird, wenn eine zukünftige gültige pWrite-Adresse bestimmt wird. Es wird dann bestimmt, ob der vierte Zustand der Tabelle 1 existiert. Dies kann mit dem Starten eines ersten Schrittes 104 durchgeführt werden, in welchem bestimmt wird, ob der aktuelle FlagLoop-Wert FALSCH ist. Falls JA, dann kann die Prozedur mit dem Schritt 112 fortfahren. Falls NEIN, dann ist FlagLoop = WAHR, und in dem nächsten Schritt 106 wird bestimmt, ob die Zuordnung des Speicherraumes für die nächsten Daten pWrite unterhalb von pRead annimmt. Es ist allgemein bekannt, einen Offset zu nutzen, um eine neue Adresse zu berechnen – siehe z.B. US 5,659,698 . Dieser Offset wird durch den Betrag an Daten bestimmt, welche in einer Nachricht zusätzlich zu irgendwelchen zusätzlichen Feldern zu Puffern ist, z.B. headers bzw. Nachrichtenköpfe. Wenn beispielsweise eine neue Nachricht bei einer Datenrate D1 zu speichern ist, wird jede Puffernachricht eine Anzahl von Speicherzuordnungen O1 erfordern. Dieser Wert O1 kann in einem Register oder einem ähnlichen Speicherort gespeichert werden oder könnte während des Umlaufes berechnet werden. Im vorliegenden Fall ist der Wert von O1 gleich einem header und die Größe der Speicherzuordnung, welche für die Daten plus irgendwelcher zusätzlicher oder optionaler Felder durchzuführen ist, wie z.B. einem Steuerwort 8. Wenn bestimmt wird, ob ausreichend Speicherraum verfügbar ist, muss Speicherraum für zwei Nachrichtenköpfe zuge lassen sein: einer für die gegenwärtige neue Nachricht und einer für die nächste neue Nachricht nach der aktuellen neuen. Es muss einen Speicherraum nicht nur für die gegenwärtige neue Nachricht geben, sondern auch zum Initialisieren der nächsten Nachricht. Deshalb wird im Schritt 106 der aktuelle Wert für pWritetemp durch den Offset O1 plus einem header vermehrt (oder in einem Dekrementierpuffer dekrementiert), und dieser neue Wert wird mit dem aktuellen pRead (FlagLoop = WAHR) verglichen. Wenn pWritetemp + Öl + header pRead übersteigt, dann gibt es ungenügend Raum in dem Puffer, und die Routine 100 geht hinaus, um einen anderen Puffer zu finden, oder zur Routine 200, um einen neuen zu schaffen, oder die Daten werden verworfen. Falls pWritetemp + O1 + header pRead nicht überschreitet, wird pWrite auf pWritetemp + O1 im Schritt 110 gesetzt, und die Routine kehrt zum neuen Wert von pWrite zurück. Die Daten können dann in die Nachricht geschrieben werden.
  • Im Schritt 112 wird der aktuelle Wert von pWritetemp um den Offset O1 und einen header vergrößert und dieser Wert mit pEnd (FlagLoop = FALSCH) verglichen. Falls pWritetemp + O1 + header pEnd überschreitet, wird eine Umherkreise-Prozedur erforderlich, und die Routine 100 geht im Schritt 114 hinaus zur Routine 150 (Speicherzuordnung) in 6A. Falls pWritetemp + O1 + header kleiner als pEnd ist, dann ist kein Umherkreisen erforderlich und die Prozedur bewegt sich zum Schritt 110, wobei pWritetemp + O1 gleich dem neuen aktuellen pWrite gemacht wird. Die neuen Daten können gespeichert werden. Die Routine geht dann zu ENDE 116 und erwartet einen neuen Schreibbefehl.
  • Die Routine 150 wird nun mit Bezug auf 6A beschrieben, wobei ein inkrementierender Puffer angenommen wird. In einem ersten Schritt 152 wird der Wert von pWritetemp auf pBegin gesetzt (wobei das Umherkreisen von pWrite vorbereitet wird). Im Schritt 153 wird pWrttetemp um O1 und einen header vergrößert, und es wird bestimmt, ob dieser neue Wert größer als der aktuelle pRead ist. Falls JA, gibt es nicht genügend Speicher in dem Puffer, keine Zuordnung ist möglich, und die Routine 150 geht zu einem anderen Puffer oder der Routine 200 oder die Daten werden im Schritt 154 verworfen. Falls NEIN, wird das aktuelle pWrite mit pRead im Schritt 155 verglichen. Falls pWrite nicht gleich dem aktuellen pRead ist, dann hat pRead nicht Anschluss an pWrite gefunden. Dies ist ein Zeichen dafür, dass pWrite im Prozess des Umherkreisens steckt, wohingegen dies für pRead nicht zutrifft, und in diesem Fall wird FlagLoop auf WAHR im Schritt 156 gesetzt und die Routine fährt mit dem Schritt 158 fort.
  • Falls im Schritt 155 bestimmt wird, dass das aktuelle pWrite gleich pRead ist, dann hat pRead Anschluss an pWrite gefunden und der Puffer ist vollständig leer. In diesem Fall wird pRead gleich pBegin im Schritt 157 gesetzt. Dies bedeutet auch, dass sowohl pRead als auch pWrite ein Umherkreisen zur gleichen Zeit durchgeführt haben und sich FlagLoop nicht ändert. Ebenso ist die aktuelle Nachricht (an der Stelle, auf welche das aktuelle pWrite zeigt) die letzte Nachricht in dem Puffer, und der Status dieser Nachricht wird auf ENDE im Schritt 158 gesetzt. Im Schritt 159 kehrt die Routine zum Schritt 110 in Routine 100 zurück, pWritetemp + O1 wird auf das neue pWrite gesetzt, und die Daten werden in dem Speicher gespeichert.
  • Bewegungen von pRead werden mit Bezug auf die Routine 160 und 6B und einen inkrementierenden Puffer beschrieben. In einem ersten Schritt 162 wird bei einer Nachricht, welche freizugeben ist, der Status auf FREI gesetzt. Im Schritt 163 wird bestimmt, ob pRead auf die Nachricht zeigt, welche freizugeben ist. Falls nicht, dann liegt die Nachricht in dem Körper des zugeordneten Speichers in dem Puffer, und diese Nachricht kann ohne ein Verändern von pRead freigegeben werden. Die Prozedur geht zu ENDE 163 und erwartet die nächste Nachricht, welche freizugeben ist. Falls JA, wird die Nachricht freigegeben und pRead zeigt nun auf diese Nachricht, welche freigegeben wurde, d.h. sie besitzt den FREI-Status, wie er in Schritt 161 eingestellt wird. In den nächsten Verfahrensschritten muss die Routine pRead zur nächsten Nachricht mit einem BENUTZT-Status bewegen oder, falls es keine derartige Nachricht gibt, pRead zu pBegin zurückschicken.
  • Es wird im Schritt 165 bestimmt, ob pRead nicht gleich pWrite ist, und pRead zeigt auf eine FREIE Nachricht. In dem vorliegenden Fall besitzt die Nachricht einen FREI-Status, und vorausgesetzt, pWrite ist nicht gleich pRead, wird pRead im Schritt 168 an den Beginn der nächsten Nachricht nach dieser Frei-Nachricht gebracht. D.h., pRead wird zu dem aktuellen Wert von pRead + O1 gebracht. Im Schritt 169 wird bestimmt, ob pRead nun auf eine Nachricht mit einem ENDE-Status zeigt. Falls ja, dann muss pRead ein Umherkreisen ausführen, und pRead wird auf pBegin gesetzt und FlagLoop wird auf FALSCH im Schritt 170 gesetzt. Falls NEIN im Schritt 169 oder nachdem der Schritt 170 ausgeführt wurde, kehrt die Routine zu Schritt 165 zurück, wobei sie nach einer Nachricht sucht, welche keinen FREI-Status hat oder wenn pRead pWrite erreicht hat. Wenn beim Zurückkehren zu Schritt 165 pRead noch auf eine FREI-Nachricht zeigt und pRead nicht gleich pWrite ist, muss pRead weiter durch Wiederholen der Schritte 168 bis 170 bewegt werden.
  • Falls im Schritt 165 NEIN vorhanden ist, gibt es zwei Möglichkeiten. Diese werden im Schritt 166 bestimmt. Falls pRead = pWrite, dann ist der Puffer leer und die Anfangseinstellungen können im Schritt 167 eingestellt werden und die Routine geht zu ENDE 163 und erwartet die nächste Nachricht, welche freizugeben ist. Falls im Schritt 166 NEIN, zeigt pRead nicht auf eine FREI-Nachricht, d.h. es zeigt auf die erste BENUTZTE Nachricht, die ihm begegnet ist. Die Routine verlässt pRead bei diesem Wert und geht heraus zu ENDE 163 und erwartet den nächsten Befehl, um eine Nachricht freizugeben.
  • Die Routine 200 wird nun mit Bezug auf 7 beschrieben. Im Schritt 202 wird ein neuer Puffer im Speicher initialisiert, und pWrite wird = pRead = pBegin gesetzt und FlagLoop = FALSCH im Schritt 203. Im Schritt 204 kehrt diese Routine zurück zum Schritt 101 der Routine 100 (5).
  • Ein praktisches Beispiel der Anwendung der vorliegenden Erfindung wird nun mit Bezug auf 8 beschrieben. Nehme man an, dass eine integrierte Schaltung, welche eine Datenverarbeitung ausführt, auf die 2 Kanäle zugreifen kann, welche Daten auf den physikalischen UMTS-Kanälen bei dem Spreizfaktor (SF) 4 oder 4 Kanäle bei SF8 oder 8 Kanäle bei SF16 tragen. In diesem Beispiel unterscheiden sich die Kanäle nur durch die Datenrate, welche sie benutzen:
    1 Kanal bei SF4 benötigt bis zu 2400 Bytes pro Rahmen für den Speicherraum
    1 Kanal bei SF8 benötigt bis zu 1200 Bytes pro Rahmen für den Speicherraum
    1 Kanal bei SF16 benötigt bis zu 600 Bytes pro Rahmen des Speicherraums
  • So können, wenn ein SF4-Kanal geschlossen wird, zwei SF8-Kanäle oder SF16-Kanäle geöffnet werden.
  • Zu einer gegebenen Rahmenzeit nehme man an, dass 4 Kanäle auf dieser integrierten Schaltung (IC) aktiv sind und eine Echtzeitverarbeitungsaufgabe A Daten zu einer anderen Empfangsaufgabe B sendet. Die Annahme bei dem Echtzeitsystem besteht darin, dass Nachrichten, welche durch die Aufgabe A gesendet werden, nicht öfter als einmal für jeden UMTS-Rahmen (10 ms) gesendet werden und dass sie wenigstens einmal bei jedem Rahmen emp fangen und freigegeben werden. Dies bedeutet, dass alle Daten, welche während eines Rahmens empfangen werden, durch den nächsten Rahmen verbraucht werden.
  • Die Kanäle können deaktiviert werden, und neue Kanäle können geschaffen werden, sobald die gesamte Datenrate, welche durch den IC bearbeitet wird, nicht größer als 2 SF4 ist, mit den Äquivalenten, welche zuvor gegeben wurden. In einem Szenario, welches typisch für den Betrieb eines Breitbandzell-Telekommunikationssystems sein kann, können, nach der Anfangssituation, wo 4 SF8-Kanäle aktiv sind, diese Ereignisse stattfinden:
    Kanal 1 ist deaktiviert
    zwei SF8-Kanäle werden geschaffen: 1a und 1b
    Kanal 3 und 4 sind deaktiviert
    ein neuer Kanal 3 wird bei SF4 geschaffen.
  • Die erste Situation bei einem herkömmlichen Puffer wird betrachtet. Da es keinen Schutz der Daten gibt, welche in dem Puffer beim Umherkreisen zugeordnet sind, müssen die Kommunikationskanäle unterschiedliche Ringpuffer benutzen. Da sich die Datenrate eines gegebenen Kanals erhöhen kann, ist es notwendig, die Puffer auf das Maximum, welches von einem Kanal benötigt wird, zu dimensionieren. Ein Puffer, welcher geschaffen ist, einen SF4-Kanal handzuhaben, kann für einen SF8-Kanal benutzt werden, und ein Puffer, welcher für einen SF8-Kanal geschaffen ist, kann für einen SF16-Kanal benutzt werden. Der notwendige Speicher, um die Kanäle in dem IC handzuhaben, ist:
    2 SF4: 2 × 2400 = 4800 Bytes
    2 SF8: 2 × 1200 = 2400 Bytes
    4 SF16: 4 × 600 = 2400 Bytes
    Insgesamt: 9600 Bytes
  • Mit Bezug auf 8 werden im Falle eines Ringpuffers entsprechend einer der Ausführungsformen der vorliegenden Erfindung alle Kanäle, sogar wenn sie Daten bei unterschiedlichen Datenraten tragen, in den gleichen Ringpuffer gegeben. In 8 gibt pW pWrite wieder und pR gibt pRead wieder. Die Fläche, welche diesem Puffer zugeordnet ist, ist gleich dem Speicher für 2 SF4-Kanäle, so dass 2 × 2400 Bytes = 4800 Bytes sind. Wie in 8 in den Schritten 1, 2, 3 und 4 gezeigt wird, ordnet die Aufgabe A erfolgreich vier Bereiche zu, um die Daten für den SF8-Kanal 1 (1200 B), 2, 3 und 4 zu speichern. Der Ringpuffer ist dann voll, und da pRead = pWrite und FlagLoop = FALSCH ist, kann kein weiterer Speicher zugeordnet werden (Schutzmechanismus). Im Schritt 5 wird der Kanal 2 durch die Aufgabe B bearbeitet, und dessen zugeordneter Speicherbereich wird freigegeben. Man beachte, dass Bereiche in jedem Fall freigegeben werden können. Löcher werden in dem Speicher zurückgelassen, aber das Echtzeitsystem stellt sicher, dass sie aufgrund des Freigebens aller Daten innerhalb einer Rahmenzeitdauer natürlich in freie Bereiche gewandelt werden. Im Schritt 6 wird der Kanal 1 bearbeitet, und sein Bereich wird freigegeben. An diesem Punkt nehme man an, dass der Kanal 1 deaktiviert wird und dass zwei andere Kanäle aufgestellt werden: SF16-Kanal 1a und 1b. Man beachte, dass Kanäle mit variabler Rate gehandhabt bzw. behandelt werden, sobald der Puffer den Gesamtbetrag des zugeordneten Speichers behandeln kann. Im Schritt 7 sendet die Aufgabe A neue Daten an den Kanal 2. Man beachte, dass es immer möglich ist, Speicher für diesen Kanal zuzuordnen, da angenommen wird, dass neue Daten nur mit 1 UMTS-Rahmen nach jeweiligen vorherigen Daten gesandt werden können. Deshalb müssen die Kanal-1-Daten bereits freigegeben worden sein, wenn der Kanal-2-Bereich zugewiesen wird. Beim Schritt 8 sendet die Aufgabe A Daten auf den Kanälen 1a und 1b. Beim Schritt 9 und 10 gibt die Aufgabe Daten der Kanäle 3 und 4 frei, und diese zwei Kanäle werden deaktiviert. Beim Schritt 11 wird ein neuer Kanal bei SF4 geschaffen: 3a. Die Aufgabe A sendet Daten auf den Kanälen 3a.
  • Entsprechend besteht der Speicher, welcher entsprechend der vorliegenden Erfindung benutzt wird, aus 4800 Bytes, wohingegen 9600 Bytes mit herkömmlichen Ringpuffern erforderlich sind. Der Fachmann wird würdigen, dass der Nutzen der vorliegenden Erfindung in einem oder mehreren des Folgenden liegt:
    • – geringerer Gebrauch des Speichers,
    • – höhere Flexibilität, um Kanäle hinzufügen (z.B. falls 16 SF32 gehandhabt werden müssen, müssen bei herkömmlichen Systemen Puffer hinzugefüngt werden, jedoch nicht bei den Ausführungsformen der vorliegenden Erfindung).
  • Im Gegensatz zu herkömmlichen Implementierungen ist es möglich, Speicher der genau benötigten Größe zuzuordnen. Diese vorliegende Erfindung gestattet es, einen einzelnen Puffer für alle Raten zu benutzen. Dies ist ein beträchtlicher Vorteil, da N 384 kbps-Transportkanäle oder 32 × N 12 kbps-Kanäle den gleichen Betrag an Speicher erfordern, jedoch mit mehr oder weniger Nachrichten. Die zu bestimmende Größe besteht in der Gesamtgröße, und somit wird der Speicher optimal benutzt, indem nur erforderlich ist, einen Ringpuffer der exakten Größe zu reservieren, welche genutzt werden wird. Die Speicherzuordnungsfunktion kann leicht erhalten werden: Sie ist der verfügbare Bereich an Speicher zwischen pWrite und pRead (oder pRead zu pEnd + pBegin zu pWrite, falls FlagLoop WAHR ist).
  • Die vorliegende Erfindung kann in Hardware oder zum Beispiel Software implementiert werden, wobei eine Verarbeitungsmaschine, wie z.B. ein Mikroprozessor oder eine programmierbare logische Einrichtung (PLD), wie z.B. ein PLA (programmierbares logisches Feld), ein PAL (programmierbare Feldlogik), ein FPGA (feldprogrammierbares Gate-Feld) genutzt werden kann.
  • Ein Beispiel einer derartigen Schaltung 40 wird mit Bezug auf 9 für einen Mobilfunk-Telefonempfänger/-sender beschrieben. Diese Grundbandschaltung 40 kann so wie ein VLSI-Chip um einen eingebetteten Mikroprozessor 30 aufgebaut sein, z.B. ein ARM7TDMI-Kern, welcher von ARM Ltd., UK, gestaltet ist, welcher auf einem einzelnen Chip mit den anderen gezeigten Komponenten synthetisiert sein kann. Ein Null-Wartezustand-SRAM-Speicher 22 kann auf einem Chip, ebenso wie auf einem Cache-Speicher 24, vorgesehen sein. Verschiedene E/A-(Eingangs/Ausgangs-)Interfaces 25, 26, 27 können vorgesehen sein, z.B. UART, USB, I2C-Bus-Interfaces, sowie ein E/A-Auswähler 28. FIFO-Puffer 32 können benutzt werden, um den Prozessor 30 von dem Datentransfer über diese Interfaces zu entkoppeln. Ein Zähler/Zeitgeber-Block 34 kann ebenso wie eine Unterbrechungssteuerung 36 vorgesehen sein. Das Interface für das Radiofrequenzteil wird durch den Block 42 vorgesehen, welches das Multiplexen und Demultiplexen der Vielfachnutzer-Grundbanddatenrahmen ebenso wie das Übertragen zu und das Empfangen von dem Radiofrequenz-Leistungsmodul 44 handhaben kann. Die vom Block 42 empfangenen Grundbanddaten werden zu dem Prozessor 30 für das Weiterverarbeiten geführt. Software-Programme können in einem internen ROM (Festwertspeicher) 46 gespeichert werden. Ein Zugriff auf einen externen Speicher kann über ein externes Bus-Interface 38 mit Adress-, Daten- und Steuerungsbussen vorgesehen werden. Die verschiedenen Blöcke der Schaltung 40 sind über gewöhnliche Busse 31 miteinander verbunden.
  • Der Ringpuffer-Steuerungsmechanismus der vorliegenden Erfindung kann als Software implementiert werden, um auf einem Prozessor 30 zu laufen. Der Ringpuffer kann in einem SRAM-Speicher 22 unter der Steuerung des Prozessors 30 implementiert sein. Die oben beschriebenen Prozeduren können als Computerprogramme in einer gewöhnlichen Computersprache, wie z.B. C, geschrieben sein und dann für den speziellen Prozessor in der eingebetteten Ausführung kompiliert sein. Beispielsweise kann für den eingebetteten ARM-Kern VLSI, welcher oben beschrieben ist, die Software in C geschrieben sein und dann unter Benutzung des ARM-C-Compilers und des ARM-Assemblers kompiliert werden.
  • Während die Erfindung mit Bezug auf bevorzugte Ausführungsformen gezeigt und beschrieben wurde, wird von Fachleuten verstanden werden, dass verschiedene Änderungen oder Modifikationen in der Gestaltung und im Detail durchgeführt werden können, ohne vom Umfang und dem Geist dieser Erfindung abzuweichen. Beispielsweise ist ein Problem bei Schemata des Speichermanagements die Speicherfragmentierung. Diese tritt auf, wenn Nachrichten innerhalb des zugewiesenen Bereiches (zwischen pRead und pWrite) freigegeben werden, jedoch nicht nahtlos. Einige Löcher treten in dem Bereich auf, und der pRead-Zeiger wird nicht vorwärts bewegt, bis die Nachricht, auf welche er zeigt, freigegeben ist. Einiger Speicherraum ist nicht verfügbar, sogar wenn er nicht benutzt wird. Dieses Problem kann durch eine <<Speicherbereinigung>>-Funktion oder durch ein Defragmentierprogramm gelöst werden, welches FREI-Bereiche in einem größeren, welcher für andere Nachrichten verfügbar ist, verketten würde. Dies würde weiteres Verarbeiten und ein Speichermanagement erfordern, welches Zeit für das Defragmentieren des Speichers zulassen muss. Jedoch sind die Ausführungsformen der Erfindung, welche oben veröffentlicht ist, nahezu optimal, da die Datenströme, welche verarbeitet werden, flüchtig sind, was bedeutet, dass sie eine begrenzte Lebensdauer in dem Echtzeitsystem besitzen. Diese Ausführungsformen werden in dem Sinne optimiert, dass, wenn Nachrichten auf einer Seite des Puffers zugeordnet sind, die nachfolgenden Nachrichten auf der anderen Seite freigegeben sind, da Daten in der begrenzten Zeit von einem Rahmen auf dem Funk-Interface zu übertragen sind. Dies führt zu Implementierungen, welche auf die Real-Time-Charakteristika der Information, welche zu verarbeiten ist, angewendet werden, d.h. Information von bekannter begrenzter Lebensdauer und hochvariabler Datenrate. Ferner wurde auf Adresswerte Bezug genommen, welche im Speicher gespeichert sind. Diese Werte können entsprechend jeglicher Art von Adressenreferenzbildung sein und das Spezifizieren von Adressen mit Hilfe von Offsets und einer Basisadresse beinhalten.
  • Während die Erfindung mit Bezug auf bevorzugte Ausführungsformen gezeigt und beschrieben wurde, wird von Fachleuten verstanden werden, dass verschiedene Veränderungen und Modifikationen in der Art und im Detail durchgeführt werden können, ohne vom Umfang und vom Geist dieser Erfindung abzuweichen, wie sie in den angefügten Ansprüchen definiert sind. Beispielsweise müssen in Ausführungsformen der vorliegenden Erfindung, welche von zusätzlichen Feldern einer Nachricht für beispielsweise ein Steuerwort 8 Gebrauch machen, zeitweilige Pufferadressen, wie z.B. pWritetemp, durch zusätzlichen Speicher inkrementiert sein, welcher für das zusätzliche Feld (die zusätzlichen Felder) z.B. durch die Daten, 2 × headers (Nachrichtenköpfe) und das zusätzliche Feld (die zusätzlichen Felder) in den Schritten, wie z.B. 106, 112, 153, und durch die Daten, 1 × header (Nachrichtenkopf) und das zusätzliche Feld (die zusätzlichen Felder) in den Schritten, wie z.B. 110 und 168, erforderlich ist.

Claims (16)

  1. Verfahren zum Speichern von Daten in einem Ringpuffer in einem Speicher, welcher aufweist: Erzeugen einer Adresse für einen Ringpuffer in einem Speicher durch: Speichern eines ersten Referenzwertes (11), welcher für eine Beginn-Adresse des Ringpuffers repräsentativ ist; Speichern eines zweiten Referenzwertes (14), welcher für eine End-Adresse des Ringpuffers repräsentativ ist; Speichern eines dritten Referenzwertes (13), welcher für eine aktuelle Schreib-Adresse des Ringpuffers repräsentativ ist; Speichern eines vierten Referenzwertes (12), welcher für eine aktuelle Lese-Adresse des Ringspeichers repräsentativ ist; Schützen von Daten, welche in den Speicherorten innerhalb des Ringpuffers gespeichert sind, um zu verhindern, dass gespeicherte Daten durch weitere Daten überschrieben werden, wobei das Verfahren gekennzeichnet ist durch die Schritte von: Schreiben der Daten in den Ringpuffer als eine Nachricht (10), welche ein Statusfeld (2) besitzt, welches anzeigt, dass ein Bereich des Speichers durch die Nachricht gerade benutzt wird, und Freigeben eines Bereichs des Speichers, welcher durch eine Nachricht besetzt ist, indem das Statusfeld (2) eingestellt wird, um den Bereich des Speichers als frei anzuzeigen, wobei das Freigeben unabhängig von einer Reihenfolge des Datenschreibens ist.
  2. Verfahren nach Anspruch 1, welches ferner den Schritt aufweist von: Speichern eines fünften Referenzwertes, welcher für den zyklischen Zustand des Ringpuffers repräsentativ ist.
  3. Verfahren nach Anspruch 2, wobei der fünfte Wert ein Boolescher Wert ist.
  4. Verfahren nach Anspruch 2 oder 3, welches ferner den Schritt des Verhinderns des Datenschreibens in den Ringpuffer abhängig von dem Wert des fünften Wertes aufweist.
  5. Verfahren nach einem der Ansprüche 2 bis 4, wobei der Boolesche Wert des fünften Wertes einen von zwei binären Werten besitzt und der fünfte Wert sich von einem binären Wert zu einem anderen ändert, wenn sich der Wert entweder des dritten oder vierten Wertes so ändert, dass er die Adresse zum Ende des Ringpuffers übergibt.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei der Puffer ein inkrementierender Puffer ist, wobei es ferner den Schritt des Datenschreibens in den Ringpuffer aufweist, wie es durch die folgende Wahrheitstabelle bestimmt ist: zweiter Wert > dritter Wert > vierter Wert fünfter Wert = ein Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden dritter Wert < vierter < zweiter Wert fünfter Wert = anderer Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden vierter Wert = dritter Wert fünfter Wert = ein Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden vierter Wert = dritter Wert fünfter Wert = anderer Binärwert Puffer ist voll und keine Speicherorte können zugewiesen werden
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei die Daten, welche in dem Ringpuffer zu speichern sind, bei wenigstens einer ersten und einer zweiten Datenrate empfangen werden.
  8. Verfahren nach Anspruch 7, welches ferner den Schritt des Zuordnens eines Betrages an Speicherraum in dem Ringpuffer entsprechend der Datenrate aufweist.
  9. Verfahren nach einem der Ansprüche 1 bis 8, wobei der Ringpuffer in einem Mobiltelekommunikationssystem benutzt wird.
  10. Ringpuffer, welcher einen Adressengenerator zum Erzeugen einer Adresse für den Ringpuffer in einem Speicher besitzt, welcher aufweist: einen ersten Speicherort, welcher einen ersten Referenzwert (11) speichert, welcher repräsentativ für eine Beginn-Adresse des Ringpuffers ist; einen zweiten Speicherort, welcher einen zweiten Referenzwert (14) speichert, welcher repräsentativ für eine End-Adresse des Ringpuffers ist; einen dritten Speicherort, welcher einen dritten Referenzwert (13) speichert, welcher für eine aktuelle Schreib-Adresse des Ringpuffers repräsentativ ist; einen vierten Speicherort, welcher einen vierten Referenzwert (12) speichert, welcher für eine aktuelle Lese-Adresse des Ringpuffers repräsentativ ist; und ein Speichersteuerung zum Schützen der in den Speicherorten gespeicherten Daten innerhalb des Ringpuffers, um zu verhindern, dass gespeicherte Daten durch weitere Daten überschrieben werden, wobei der Ringpuffer charakterisiert ist durch: eine Einrichtung zum Schreiben von Daten in den Ringpuffer als eine Nachricht (10), welche ein Statusfeld (2) besitzt, welches anzeigt, dass ein Bereich des Speichers, welcher durch die Nachricht besetzt ist, gerade benutzt wird, und eine Einrichtung zum Freigeben eines Bereichs des Speichers, welcher durch eine Nachricht besetzt ist, indem das Statusfeld (2) eingestellt wird, um anzuzeigen, dass der Bereich des Speichers frei ist, wobei das Freigeben unabhängig von einer Reihenfolge des Datenschreibens ist.
  11. Ringpuffer nach Anspruch 10, welcher ferner aufweist: einen fünften Speicherort, welcher einen fünften Referenzwert speichert, welcher für den zyklischen Zustand des Ringpuffers repräsentativ ist.
  12. Ringpuffer nach Anspruch 11, wobei die Speichersteuerung geeignet ist, das Schreiben von Daten in den Ringpuffer abhängig von dem Wert des fünften Wertes zu verhindern.
  13. Ringpuffer nach Anspruch 12, wobei der fünfte Wert einen von zwei Binärwerten besitzt und die Speichersteuerung geeignet ist, den fünften Wert von einem Binärwert zu einem anderen zu tauschen, wenn der Wert entweder des dritten und vierten Wertes sich ändert, um so die Adresse zum Ende des Ringpuffers zu übergeben.
  14. Ringpuffer nach Anspruch 13, wobei der Puffer ein inkrementierender Puffer ist und die Speichersteuerung geeignet ist, das Schreiben von Daten in den Ringpuffer, wie durch die folgende Wahrheitstabelle bestimmt, zu gestatten: zweiter Wert > dritter Wert > vierter Wert fünfter Wert = ein Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden dritter Wert < vierter < zweiter Wert fünfter Wert = anderer Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden vierter Wert = dritter Wert fünfter Wert = ein Binärwert Puffer besitzt freie Speicherorte und diese können zugewiesen werden vierter Wert = dritter Wert fünfter Wert = anderer Binärwert Puffer ist voll und keine Speicherorte können zugewiesen
  15. Ringpuffer nach einem der Ansprüche 10 bis 14, wobei die Daten, welche in dem Ringpuffer zu speichern sind, wenigstens bei einer ersten und einer zweiten Datenrate empfangen werden und das Speichersteuergerät geeignet ist, einen Betrag des Speicherraumes in dem Ringpuffer entsprechend der Datenrate zuzuordnen.
  16. Mobiltelekommunikationssystem, welches einen Ringpuffer entsprechend einem der Ansprüche 10 bis 15 aufweist.
DE60128993T 2001-02-06 2001-02-06 Mehrfachratenringpuffer und entsprechendes Betriebsverfahren Expired - Fee Related DE60128993T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP01400293A EP1229437B1 (de) 2001-02-06 2001-02-06 Mehrfachratenringpuffer und entsprechendes Betriebsverfahren

Publications (2)

Publication Number Publication Date
DE60128993D1 DE60128993D1 (de) 2007-08-02
DE60128993T2 true DE60128993T2 (de) 2008-02-28

Family

ID=8182616

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60128993T Expired - Fee Related DE60128993T2 (de) 2001-02-06 2001-02-06 Mehrfachratenringpuffer und entsprechendes Betriebsverfahren

Country Status (4)

Country Link
US (1) US6807589B2 (de)
EP (1) EP1229437B1 (de)
AT (1) ATE365345T1 (de)
DE (1) DE60128993T2 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7747143B2 (en) * 2001-01-15 2010-06-29 Fast Forward Video, Inc. Digital video recorder
US7124241B1 (en) * 2003-05-07 2006-10-17 Avago Technologies General Ip (Singapore) Pte.Ltd. Apparatus and methodology for a write hub that supports high speed and low speed data rates
US7269697B1 (en) * 2003-05-07 2007-09-11 Avago Technologies General Ip (Singapore) Pte. Ltd. Apparatus and methodology for an input port scheduler
TWI221615B (en) * 2003-05-09 2004-10-01 Benq Corp A method for detecting memory accessing error
US7406090B2 (en) * 2003-06-30 2008-07-29 Intel Corporation Managing a buffer for media processing
US7493103B2 (en) * 2004-07-22 2009-02-17 International Business Machines Corporation Method and apparatus to transfer data and detect weak signals
WO2006079986A2 (en) * 2005-01-31 2006-08-03 Nxp B.V. Data processing system and method for memory defragmentation
US7689739B2 (en) * 2005-07-11 2010-03-30 Via Technologies, Inc. Spread spectrum receiver, apparatus and method of a circular buffer for multirate data
US20080066066A1 (en) * 2006-09-08 2008-03-13 Macpherson Michael B Task queue suitable for processing systems that use multiple processing units and shared memory
US7890834B2 (en) * 2007-06-20 2011-02-15 Motorola Mobility, Inc. Apparatus comprising a circular buffer and method for assigning redundancy versions to a circular buffer
WO2009083027A1 (en) * 2007-12-27 2009-07-09 Nokia Corporation Method and system for managing data in a memory
US8566491B2 (en) 2011-01-31 2013-10-22 Qualcomm Incorporated System and method for improving throughput of data transfers using a shared non-deterministic bus
CN102830663A (zh) * 2012-04-09 2012-12-19 常州明成翔锐环保科技有限公司 基于视频调试的环境监控装置
US20140101761A1 (en) 2012-10-09 2014-04-10 James Harlacher Systems and methods for capturing, replaying, or analyzing time-series data
US10310773B2 (en) * 2014-03-21 2019-06-04 GM Global Technology Operations LLC Systems and methods for retaining data in a memory
US20150268877A1 (en) * 2014-03-21 2015-09-24 GM Global Technology Operations LLC Systems and methods for recording data in a memory
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4692893A (en) * 1984-12-24 1987-09-08 International Business Machines Corp. Buffer system using parity checking of address counter bit for detection of read/write failures
US4888739A (en) * 1988-06-15 1989-12-19 Cypress Semiconductor Corporation First-in first-out buffer memory with improved status flags
US5325487A (en) * 1990-08-14 1994-06-28 Integrated Device Technology, Inc. Shadow pipeline architecture in FIFO buffer
US5537552A (en) * 1990-11-27 1996-07-16 Canon Kabushiki Kaisha Apparatus for selectively comparing pointers to detect full or empty status of a circular buffer area in an input/output (I/O) buffer
US5426756A (en) * 1992-08-11 1995-06-20 S3, Incorporated Memory controller and method determining empty/full status of a FIFO memory using gray code counters
US5363485A (en) * 1992-10-01 1994-11-08 Xerox Corporation Bus interface having single and multiple channel FIFO devices using pending channel information stored in a circular queue for transfer of information therein
US5506809A (en) * 1994-06-29 1996-04-09 Sharp Kabushiki Kaisha Predictive status flag generation in a first-in first-out (FIFO) memory device method and apparatus
US6101329A (en) * 1997-02-18 2000-08-08 Lsi Logic Corporation System for comparing counter blocks and flag registers to determine whether FIFO buffer can send or receive data
US5923900A (en) * 1997-03-10 1999-07-13 International Business Machines Corporation Circular buffer with n sequential real and virtual entry positions for selectively inhibiting n adjacent entry positions including the virtual entry positions

Also Published As

Publication number Publication date
ATE365345T1 (de) 2007-07-15
US6807589B2 (en) 2004-10-19
DE60128993D1 (de) 2007-08-02
EP1229437B1 (de) 2007-06-20
US20040039867A1 (en) 2004-02-26
EP1229437A1 (de) 2002-08-07

Similar Documents

Publication Publication Date Title
DE60128993T2 (de) Mehrfachratenringpuffer und entsprechendes Betriebsverfahren
DE69029872T2 (de) Programmierbare Datenpaket-Pufferspeicher-Vorrangsanordnung
DE69818141T2 (de) Verfahren und Vorrichtung zur dynamischen Verwaltung von Kommunikationspuffern mit Paketvermittlungsdaten für einen Drucker
DE60127742T2 (de) Paketstrom-Kontrollvorrichtungen und -Kontrollmethoden
DE60203057T2 (de) Effizienter Optimierungsalgorithmus für Speichergebrauch in Netzwerkanwendungen
DE69625631T2 (de) Datenpuffer
DE69930855T2 (de) Verfahren und vorrichtung zur durchführung einer deterministischen speicherzuordnungsantwort in einem computer-system
DE69432798T2 (de) Verfahren und vorrichtung zur transformierung einer serie von datenpaketen mit hilfe von datenkompression
DE10164456A1 (de) Datenwarteschlangensystem
EP0905921A2 (de) Ringspeicher für eine TDMA-Datenübertragungsstation
DE69924217T2 (de) Puffer-Speicher für mehrere Datenkommunikationskanäle
DE602004008712T2 (de) Speicherbandbreiten-Steuereinrichtung
DE69917639T2 (de) Anordnung zur verarbeitung von sonet- oder SDH-DS0-Rahmen zur Kanalzurordnung
EP3903189A1 (de) Verfahren zum übertragen einer nachricht in einem rechensystem sowie rechensystem
DE10015683B4 (de) Datenübertragungsspeicher
DE4040248C1 (de)
DE69013327T2 (de) Pakete-/schnelle-pakete-vermittlung für sprache und daten.
EP1081599A2 (de) Multiprozessorsystem
DE19841447A1 (de) Verfahren zum Übertragen von Daten über mehrere Schnittstellen
DE69923041T2 (de) Einrichtung für Datenübertragung, Verfahren und Rechnerprogrammprodukt zur Durchführung eines Datenkommunikationsprotokolls mit einer effizienten Bildung von Datagrammen
DE102004052692A1 (de) Verfahren zur Übermittlung von in Form von Datenpaketen zur Verfügung stehenden Daten
DE112004000101B4 (de) Verfahren und Vorrichtung zur Bearbeitung eines empfangenen &#34;Virtual Concatenation&#34;-Rahmens mit einem Speicheradressierungsschema, um Verzögerungen an den Grenzen zwischen benachbarten synchronen Nutzlastrahmenstrukturen zu vermeiden
EP2151762B1 (de) Speicherverwaltung in einem portablen Datenträger
EP1531397A1 (de) Vorrichtung zur Verwaltung eines virtuellen Heap-Speichers sowie zugehörige Verfahren
DE60036521T2 (de) Verfahren und Gerät zur Anzeige von erweiterten Zeichen für die Auffrischung von Teletextseiten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee