DE102015209486A1 - FIFO Speicher mit im Betrieb veränderbarem Speicherbereich - Google Patents
FIFO Speicher mit im Betrieb veränderbarem Speicherbereich Download PDFInfo
- Publication number
- DE102015209486A1 DE102015209486A1 DE102015209486.3A DE102015209486A DE102015209486A1 DE 102015209486 A1 DE102015209486 A1 DE 102015209486A1 DE 102015209486 A DE102015209486 A DE 102015209486A DE 102015209486 A1 DE102015209486 A1 DE 102015209486A1
- Authority
- DE
- Germany
- Prior art keywords
- new
- pointer
- base
- memory
- fifo 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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/08—Methods 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, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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/10—Methods 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
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
- G06F5/14—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/06—Indexing scheme relating to groups G06F5/06 - G06F5/16
- G06F2205/063—Dynamically variable buffer size
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/06—Indexing scheme relating to groups G06F5/06 - G06F5/16
- G06F2205/066—User-programmable number or size of buffers, i.e. number of separate buffers or their size can be allocated freely
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/12—Indexing scheme relating to groups G06F5/12 - G06F5/14
- G06F2205/126—Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
Die Erfindung geht aus von einem FIFO Speicher mit veränderbarem Speicherbereich, wobei der FIFO Speicher als linearer Speicher ausgestaltet ist, wobei der FIFO Speicher als Ringbuffer konfiguriert ist, wobei der FIFO Speicher eine Zustandsmaschine aufweist, welche einen unteren Zeiger (base), einen oberen Zeiger (top), einen Schreibzeiger (wr) und einen Lesezeiger (rd) beinhaltet, wobei der FIFO Speicher einen aktuell zugewiesenen Speicherbereich enthält, dessen untere Grenze durch den unteren Zeiger (base) und dessen obere Grenze durch den oberen Zeiger (top) definiert ist, wobei der Schreibzeiger (wr) die aktuelle Schreibadresse und der Lesezeiger (rd) die aktuelle Leseadresse definiert. Der Kern der Erfindung besteht darin, dass die Zustandsmaschine einen neuen unteren Wert (new_base) und einen neuen oberen Wert (new-top) zur Definition eines zukünftig zugewiesenen Speicherbereichs beinhaltet, dessen untere Grenze durch den neuen unteren Wert (new_base) und dessen obere Grenze durch den neuen oberen Wert (new_top) definiert ist, und die Zustandsmaschine derart ausgestaltet ist, dass in einem Lesebetrieb und/oder einem Schreibbetrieb des FIFO Speichers durch Verschieben des unteren Zeigers (base) auf den neuen unteren Wert (new_base) und/oder durch Verschieben des oberen Zeigers (top) auf den neuen oberen Wert (new_top) der zugewiesene Speicherbereich des FIFO Speichers veränderbar ist.
Description
- Stand der Technik
- Die Erfindung geht aus von einem FIFO Speicher mit veränderbarem Speicherbereich, wobei der FIFO Speicher als linearer Speicher ausgestaltet ist, wobei der FIFO Speicher als Ringbuffer konfiguriert ist, wobei der FIFO Speicher eine Zustandsmaschine aufweist, welche einen unteren Zeiger base, einen oberen Zeiger top, einen Schreibzeiger wr und einen Lesezeiger rd beinhaltet, wobei der FIFO Speicher einen aktuell zugewiesenen Speicherbereich enthält, dessen untere Grenze durch den unteren Zeiger base und dessen obere Grenze durch den oberen Zeiger top definiert ist, wobei der Schreibzeiger wr die aktuelle Schreibadresse und der Lesezeiger rd die aktuelle Leseadresse definiert.
- Ein FIFO wird üblicherweise als Ringbuffer mit einer festen Größe realisiert und kann eine bestimmte Anzahl an Datenelementen enthalten:
http://en.wikipedia.org/wiki/Circular_buffer - Wenn mehr Speicher benötigt wird, als für den Ringbuffer konfiguriert ist, gibt es zwei Methoden, dies zu behandeln:
- 1. Neue Datenelement können nicht in den Ringbuffer aufgenommen werden.
- 2. Neue Datenelemente werden in den Ringbuffer geschrieben, nach dem älteste Elemente aus dem Buffer gelöscht werden.
- Dabei verliert man entweder neue Daten (1.) oder Datenhistorie (2.) Wenn beide Methoden nicht akzeptabel sind, muss der Buffer vergrößert werden.
- Die meisten Verfahren zum Verändern von FIFO-Größen beziehen sich auf Softwareimplementierungen, in denen Buffer im Speicher neu allokiert werden, bzw. der Bufferinhalt von einem kleinen in einen größeren Buffer umkopiert werden. Hierbei werden Mechanismen verwendet, die in einer HW-Implementierung nicht zur Verfügung stehen, bzw. ineffizient und aufwendig sind.
- Eine andere Lösung im Stand der Technik verwendet im Speicher einen Standardbereich und einen Erweiterungsbereich. Wenn das FIFO vergrößert werden soll, werden Daten erst in den Erweiterungsbereich geschrieben, um dann beim nächsten Durchlauf diesen Bereich in den Standardbereich mit zu integrieren.
http://blog.labix.org/2010/12/23/efficient-algorithm-for-expanding-circular-buffers - Aufgabe der Erfindung
- Die Erfindung soll ermöglichen,
- 1. dass ein FIFO im laufenden Betrieb vergrößert oder verkleinert werden kann.
- 2. Dabei soll der bestehende Speicherbereich nach unten oder oben erweitert oder verkleinert werden.
- 3. Datenelemente, die im Speicher enthalten sind, sollen nicht verloren gehen und sollen weiterhin in der gleichen Reihenfolge ein/ausgelesen werden können.
- Vorteile der Erfindung
- Die Erfindung geht aus von einem FIFO Speicher mit veränderbarem Speicherbereich, wobei der FIFO Speicher als linearer Speicher ausgestaltet ist, wobei der FIFO Speicher als Ringbuffer konfiguriert ist, wobei der FIFO Speicher eine Zustandsmaschine aufweist, welche einen unteren Zeiger base, einen oberen Zeiger top, einen Schreibzeiger wr und einen Lesezeiger rd beinhaltet, wobei der FIFO Speicher einen aktuell zugewiesenen Speicherbereich enthält, dessen untere Grenze durch den unteren Zeiger base und dessen obere Grenze durch den oberen Zeiger top definiert ist, wobei der Schreibzeiger wr die aktuelle Schreibadresse und der Lesezeiger rd die aktuelle Leseadresse definiert. Der Kern der Erfindung besteht darin, dass die Zustandsmaschine Werte new_base und new_top zur Definition eines zukünftig zugewiesenen Speicherbereichs beinhaltet, dessen untere Grenze durch den Wert new_base und dessen obere Grenze durch den Wert new_top definiert ist, und die Zustandsmaschine derart ausgestaltet ist, dass in einem Lesebetrieb und/oder einem Schreibbetrieb des FIFO Speichers durch Verschieben des unteren Zeigers base auf den Wert new_base und/oder durch Verschieben des oberen Zeigers top auf den Wert new_top der zugewiesene Speicherbereich des FIFO Speichers veränderbar ist.
- Erfindungsgemäß wird also am oberen und unteren Ende des Speicherbereichs jeweils ein Zeiger (base, top) und einen Schattenzeiger (neuer Wert: new_base, new_top) vorgesehen, mit denen der neue geänderte Speicherbereich erst definiert und zu einem geeigneten Zeitpunkt fixiert wird.
- Eine vorteilhafte Ausgestaltung der Erfindung sieht vor, dass der FIFO Speicher einen freien Bereich aufweist, in dem keine ungelesenen Daten vorliegen, und die Zustandsmaschine derart ausgestaltet ist, dass für das Setzen des unteren Zeigers base und/oder des oberen Zeigers top auf die Werte new_base und/oder new_top ein Zeitpunkt ausgewählt wird, an dem sowohl der alte als auch der neue Wert des Zeigers im freien Bereich liegen.
- Eine vorteilhafte Ausgestaltung der Erfindung sieht vor, dadurch gekennzeichnet, dass die Zustandsmaschine derart ausgestaltet ist, dass das Verschieben des oberen Zeigers top auf den Wert new_top erfolgt, wenn der Lesezeiger rd = base ist.
- Eine vorteilhafte Ausgestaltung der Erfindung sieht vor, dass die Zustandsmaschine derart ausgestaltet ist, dass das Verschieben des unteren Zeigers base auf den Wert new_base erfolgt, wenn der Schreibzeiger wr = top ist.
- Vorteile
-
- 1. Realisierung in HW mit beschränkten Mittel (insb. Speicher) möglich
- 2. Betrieb des FIFOs kann aufrecht erhalten werden, während die Größenveränderung stattfindet
- 3. Echtzeitanforderungen bzgl. Schreiben und Lesen können eingehalten werden, da das FIFO nicht für evtl. Kopiervorgänge beim Verändern der Größe blockiert werden muss.
- Besonders vorteilhaft lässt sich die Erfindung im Kontext eines Smartphones mit Android-Betriebssystem, und dort für das sog. Batching der Sensordaten einsetzen. Es kommen dort mehrere FIFOs für die verschiedenen Sensoren zum Einsatz. Die Erfindung ermöglicht, den Speicher für jeden dieser FIFOs im laufenden Betrieb zu vergrößern oder zu verkleinern, bzw. Speicher für benötigte oder nicht mehr benötigte FIFOs bereitzustellen bzw. in andere FIFOs zu reintegrieren.
- Im Unterschied zum oben beschriebenen Stand der Technik ist die vorliegende Erfindung effizienter, da sie das Pointer-Management für den Erweiterungsbereich vermeidet und ein Vergrößern im Vorfeld (d.h. vor dem Volllaufen des Speichers) erlaubt, bevor der Standardbereich ausgeschöpft wurde.
- Eine wichtige Forderung von Android, dass beim Modus-Umschalten im Betrieb alle Sensoren ihre Daten weiterhin kontinuierlich liefern sollen, wird eingehalten, da durch das Verändern der Größe keine Daten verloren gehen.
- Zeichnung
-
1 zeigt einen FIFO Speicher mit einem zugewiesenen Speicherbereich, mit einem zusammenhängenden belegten Bereich und einem geteilten freien Bereich. -
2 zeigt einen FIFO Speicher mit einem zugewiesenen Speicherbereich, mit einem geteilten belegten Bereich und einem zusammenhängenden freien Bereich. -
3 zeigt einen erfindungsgemäßen FIFO Speicher im Betrieb, wobei der Lesezeiger rd = base ist und wobei der obere Zeiger top verkleinert oder vergrößert werden kann. -
4 zeigt einen erfindungsgemäßen FIFO Speicher im Betrieb, wobei der Schreibzeiger wr = top ist und wobei der untere Zeiger base verkleinert oder vergrößert werden kann. - Ausführungsbeispiele
- Wie in der klassischen Implementierung eines FIFOs wird der Ringbuffer fest in einem linearen Speicher allokiert und seine Grenzen durch zwei Adresszeiger base und top definiert. Weiterhin gibt es einen Adresszeiger wr für die Position, ab der neue Datenelemente eingefügt werden und einen Adresszeiger rd für die Position, ab der Datenelemente ausgelesen werden.
- • Bei der Initialisierung werden 1. base auf das untere Ende des Speicherbereichs gesetzt, und 2. top auf das obere Ende des Speicherbereichs gesetzt. 3. Der Schreibzeiger wr und der Lesezeiger rd werden auf base gesetzt
- • Neue Datenelemente werden bei der aktuellen Adresse von wr in den Speicher geschrieben. 1. danach wird wr inkrementiert 2. wenn wr den Wert von top erreicht, wird wr auf base gesetzt (wrap-around)
- • Datenelemente werden von der Adresse rd ausgelesen. 1. Danach wird rd inkrementiert 2. Wenn rd den Wert top erreicht, wird rd auf base gesetzt (wrap-around)
-
1 zeigt einen FIFO Speicher mit einem zugewiesenen Speicherbereich, mit einem zusammenhängenden belegten Bereich und einem geteilten freien Bereich. -
2 zeigt einen FIFO Speicher mit einem zugewiesenen Speicherbereich, mit einem geteilten belegten Bereich und einem zusammenhängenden freien Bereich. - Das FIFO ist dadurch gekennzeichnet, dass es in dem Speicherbereich einen Teil gibt, der aktuelle Daten enthält und somit belegt ist (in den Figuren schraffiert gekennzeichnet) und einem anderen Teil, der frei ist (nicht schraffiert). Abhängig von der aktuellen Position der Zeiger wr und rd können folgende Fälle auftreten:
- 1. wr > rd: der belegte Bereich liegt zusammenhängend im Speicherbereich (
1 ) - 2. wr < rd: der belegte Bereich ist in 2 Teile aufgeteilt: einer am unteren Ende und einer am oberen Ende des Speicherbereichs. (
2 ) - 3. wr = rd: in diesem Sonderfall ist der FIFO leer er kann für die weitere Betrachtung wie der Fall wr > rd behandelt werden.
- Um die Größenveränderung oder Lageveränderung des FIFOs zu ermöglichen, werden erfindungsgemäß die Adresszeiger new_base und new_top eingeführt, welche die Zielgröße oder auch die neue Lage des FIFOs nach der Veränderung enthalten. (siehe
1 ) - Ein Verändern der Speicherbereichsgrenzen base und top ist nur möglich, wenn die Position der neuen Zeiger new_base und new_top außerhalb des belegten Bereiches liegen. Während Daten in das FIFO geschrieben und aus dem FIFO gelesen werden, verschiebt sich der freie Bereich in entgegengesetzter Richtung zum belegten Bereich. Der Algorithmus basiert darauf, dass für das Verändern der Zeiger base und top ein Zeitpunkt ausgewählt wird, an dem sowohl der alte als auch der neue Wert des Zeigers im freien Bereich liegen.
- Ein Vergrößern des FIFOs ist generell möglich. Ein Verkleinern ist allerdings nur möglich, wenn der Füllstand des FIFOs kleiner oder gleich der neuen Größe des FIFOs ist. Ist der Füllstand größer, so ist ein Verkleinern des FIFOs zu diesem Zeitpunkt nicht möglich. Für die Behandlung dieses Falles werden in Variante 3 mögliche Ausführungen beschrieben.
- Verändern von top und/oder base:
-
- 1. Die Anforderung der Veränderung von top wird durch Setzen von new_top auf einen Wert ungleich top mitgeteilt. Alternativ oder gleichzeitig wird die Veränderung von base durch setzen von new_base auf einen Wert ungleich base mitgeteilt.
- 2. Das Schreiben und Lesen von Datenelemente setzt sich fort wie bisher. Bei jedem Update von rd oder wr wird geprüft: • WENN (rd == base) (siehe Zeichnung 3) • WENN (new_top > wr): top wird auf den Wert new_top gesetzt • SONST: verändern von Top derzeit nicht möglich • WENN (wr = top) (siehe Zeichnung 4) • WENN (new_base < rd): base wird auf den Wert von new_base gesetzt • SONST: Verändern von base derzeit nicht möglich
- 3. Die Vergrößerung ist abgeschlossen, wenn top == new_top und base == new_base
-
3 zeigt einen erfindungsgemäßen FIFO Speicher im Betrieb, wobei der Lesezeiger rd = base ist und wobei der obere Zeiger top verkleinert oder vergrößert werden kann. - Durch die Wahl des Zeitpunktes für das Verändern von top (wenn rd den Wert base erreicht) ist sichergestellt, dass der obere Bereich des FIFOs ungenutzt ist und der neue Wert von top nicht die Kontinuität des FIFO-Inhaltes verletzt.
- New_top1 und new_top2 zeigen die Fälle des Vergrößerns und Verkleinerns von top.
- Analog dazu wird durch die Wahl des Zeitpunktes für das Verändern von base sichergestellt, dass der untere Bereich des FIFOs ungenutzt ist.
4 zeigt hierzu einen erfindungsgemäßen FIFO Speicher im Betrieb, wobei der Schreibzeiger wr = top ist und wobei der untere Zeiger base verkleinert oder vergrößert werden kann. - Variante 1 (Alternative zur Basisvariante)
- Statt mit inkrementierenden Zeigern wr und rd kann das FIFO alternativ auch mit dekrementierenden Zeigern implementiert werden. Dies ist allgemeingültig für jedes FIFO und gilt auch für dieses FIFO, allerdings müssen die Zeitpunkte und die Reihenfolge der Zeigerupdates entsprechend angepasst werden.
- Variante 2 (Verbesserung der Basisvariante)
- Gegenüber der einfachen Regelung (update der Zeiger beim nächsten Wraparound) gibt es auch die Möglichkeit, das Update der Zeiger sofort durchzuführen, wenn bestimmt Bedingungen der Lese- und Schreibzeiger erfüllt sind. Insbesondere ist hier relevant, ob der Zeiger wr unterhalb oder oberhalb von rd steht, d.h. ob über den Wraparound-Bereich hinweg gültige Daten gespeichert sind.
- 1. Die Anforderung der Veränderung von top wird durch Setzen von new_top auf einen Wert ungleich top mitgeteilt. Alternativ oder gleichzeitig wird die Veränderung von base durch setzen von new_base auf einen Wert ungleich base mitgeteilt.
- 2. WENN(wr > rd) • WENN (new_top > wr): top wird auf den Wert von new_top gesetzt • WENN (new_base < rd): base wird auf den Wert von new_base gesetzt SONST: (Rückfall auf die Basisvariante) Das Schreiben und Lesen von Datenelemente setzt sich fort wie bisher. Bei jedem Update von rd oder wr wird geprüft: • WENN (rd == base) • WENN (new_top > wr): top wird auf den Wert new_top gesetzt • SONST: verändern von top derzeit nicht möglich • WENN (wr = top) • WENN (new_base < rd): base wird auf den Wert von new_base gesetzt • SONST: Verändern von base derzeit nicht möglich
- 3. Die Vergrößerung ist abgeschlossen, wenn top == new_top und base == new_base
- Der Vorteil dieser Variante besteht darin, dass ein Verändern der Größe bei Erfüllung der Bedingungen schneller abgeschlossen werden kann.
- Variante 3 (Erweiterung der Basisvariante oder der Varianten 1-2)
- Oben wurde beschrieben, dass ein Verkleinern des FIFO nur möglich ist, wenn der Füllstand des FIFOs kleiner oder gleich der neuen Größe des FIFOs ist. Ist dies nicht der Fall, so gibt es die folgenden Möglichkeiten:
- 1. Statt auf eine erfolgreiche Verkleinerung zu warten, die eventuell nie auftritt, kann der Algorithmus alternativ so gestaltet werden, dass beim nächsten Umlauf der Zeiger das FIFO weniger als gefordert verkleinert wird und die erreichte Verkleinerung zurückgemeldet wird.
- 2. Es werden so viele alte Werte im FIFO verworfen, bis ein Verkleinern möglich ist
- 3. Es werden so lange keine neuen Werte in das FIFO geschrieben, bis der Füllstand klein genug ist, um ein Verkleinern zu ermöglichen (Verwerfen von neuen Werten)
- 4. Die Anforderung der Verkleinerung bleibt bestehen, bis der Füllstand des FIFOs klein genug ist
- Bezugszeichenliste
-
-
- base
- unterer Zeiger
- top
- oberer Zeiger
- wr
- Schreibzeiger
- rd
- Lesezeiger
- new_base
- neuer unterer Wert
- new_top
- neuer oberer Wert
- ZITATE ENTHALTEN IN DER BESCHREIBUNG
- Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
- Zitierte Nicht-Patentliteratur
-
- http://en.wikipedia.org/wiki/Circular_buffer [0002]
- http://blog.labix.org/2010/12/23/efficient-algorithm-for-expanding-circular-buffers [0006]
Claims (4)
- FIFO Speicher mit veränderbarem Speicherbereich, – wobei der FIFO Speicher als linearer Speicher ausgestaltet ist, – wobei der FIFO Speicher als Ringbuffer konfiguriert ist, – wobei der FIFO Speicher eine Zustandsmaschine aufweist, welche einen unteren Zeiger (base), einen oberen Zeiger (top), einen Schreibzeiger (wr) und einen Lesezeiger (rd) beinhaltet, – wobei der FIFO Speicher einen aktuell zugewiesenen Speicherbereich enthält, dessen untere Grenze durch den unteren Zeiger (base) und dessen obere Grenze durch den oberen Zeiger (top) definiert ist, – wobei der Schreibzeiger (wr) die aktuelle Schreibadresse und der Lesezeiger (rd) die aktuelle Leseadresse definiert, dadurch gekennzeichnet, dass – die Zustandsmaschine einen neuen unteren Wert (new_base) und einen neuen oberen Wert (new-top) zur Definition eines zukünftig zugewiesenen Speicherbereichs beinhaltet, dessen untere Grenze durch den neuen unteren Wert (new_base) und dessen obere Grenze durch den neuen oberen Wert (new_top) definiert ist, und – die Zustandsmaschine derart ausgestaltet ist, dass in einem Lesebetrieb und/oder einem Schreibbetrieb des FIFO Speichers durch Verschieben des unteren Zeigers (base) auf den neuen unteren Wert (new_base) und/oder durch Verschieben des oberen Zeigers (top) auf den neuen oberen Wert (new_top) der zugewiesene Speicherbereich des FIFO Speichers veränderbar ist.
- FIFO Speicher mit veränderbarem Speicherbereich nach Anspruch 1, dadurch gekennzeichnet, dass der FIFO Speicher einen freien Bereich aufweist, in dem keine ungelesenen Daten vorliegen, und die Zustandsmaschine derart ausgestaltet ist, dass für das Setzen des unteren Zeigers base und/oder des oberen Zeigers top auf den neuen unteren Wert (new_base) und/oder den neuen oberen Wert (new_top) ein Zeitpunkt ausgewählt wird, an dem sowohl der bisherige als auch der neue Wert des Zeigers im freien Bereich liegen.
- FIFO Speicher mit veränderbarem Speicherbereich nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Zustandsmaschine derart ausgestaltet ist, dass das Verschieben des oberen Zeigers (top) auf den neuen oberen Wert (new_top) erfolgt, wenn der Lesezeiger (rd) = base ist.
- FIFO Speicher mit veränderbarem Speicherbereich nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Zustandsmaschine derart ausgestaltet ist, dass das Verschieben des unteren Zeigers (base) auf den neuen unteren Wert (new_base) erfolgt, wenn der Schreibzeiger (wr) = top ist.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102015209486.3A DE102015209486A1 (de) | 2015-05-22 | 2015-05-22 | FIFO Speicher mit im Betrieb veränderbarem Speicherbereich |
US15/157,989 US9996318B2 (en) | 2015-05-22 | 2016-05-18 | FIFO memory having a memory region modifiable during operation |
CN201610341074.0A CN106168927B (zh) | 2015-05-22 | 2016-05-20 | 具有在运行中可变的存储区域的fifo存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102015209486.3A DE102015209486A1 (de) | 2015-05-22 | 2015-05-22 | FIFO Speicher mit im Betrieb veränderbarem Speicherbereich |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102015209486A1 true DE102015209486A1 (de) | 2016-11-24 |
Family
ID=57231863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102015209486.3A Pending DE102015209486A1 (de) | 2015-05-22 | 2015-05-22 | FIFO Speicher mit im Betrieb veränderbarem Speicherbereich |
Country Status (3)
Country | Link |
---|---|
US (1) | US9996318B2 (de) |
CN (1) | CN106168927B (de) |
DE (1) | DE102015209486A1 (de) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
CN110704021B (zh) * | 2019-09-29 | 2022-03-15 | Oppo广东移动通信有限公司 | 异步先进先出数据处理方法、装置、电子装置及计算机可读存储介质 |
US20220413715A1 (en) * | 2021-06-24 | 2022-12-29 | Intel Corporation | Zero-redundancy tag storage for bucketed allocators |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3486498B2 (ja) * | 1996-01-10 | 2004-01-13 | キヤノン株式会社 | バッファ管理方法及びそれを用いた印刷装置 |
US7196710B1 (en) * | 2000-08-23 | 2007-03-27 | Nintendo Co., Ltd. | Method and apparatus for buffering graphics data in a graphics system |
US20020078317A1 (en) * | 2000-12-19 | 2002-06-20 | Matsushita Electric Industrial Co., Ltd. | First-in, first-out (FIFO) memory with moving boundary |
US6654856B2 (en) * | 2001-05-15 | 2003-11-25 | Microsoft Corporation | System and method for managing storage space of a cache |
US6801991B2 (en) * | 2001-12-21 | 2004-10-05 | Agere Systems Inc. | Method and apparatus for buffer partitioning without loss of data |
JP2004071103A (ja) * | 2002-08-08 | 2004-03-04 | Sharp Corp | 自己同期型fifoメモリ装置 |
US7546423B2 (en) * | 2003-09-02 | 2009-06-09 | Sirf Technology, Inc. | Signal processing system control method and apparatus |
US7519788B2 (en) * | 2004-06-04 | 2009-04-14 | Micron Technology, Inc. | System and method for an asynchronous data buffer having buffer write and read pointers |
CN100449504C (zh) * | 2005-01-05 | 2009-01-07 | 华为技术有限公司 | 一种基于bitmap表的缓存管理方法 |
US20060184719A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct data file storage implementation techniques in flash memories |
EP1962181A4 (de) * | 2005-12-02 | 2010-05-26 | Panasonic Corp | Puffersteuereinrichtung und pufferspeicher |
CN100517498C (zh) * | 2006-05-25 | 2009-07-22 | 深圳市恒扬科技有限公司 | 一种无读取延迟的先进先出存储器 |
CN100487678C (zh) * | 2006-08-23 | 2009-05-13 | 晶天电子(深圳)有限公司 | 带有闪存控制器的电子数据闪存卡 |
CN101281489B (zh) * | 2007-04-03 | 2010-05-26 | 中兴通讯股份有限公司 | 一种先进先出存储器实现方法及装置 |
US8127199B2 (en) * | 2007-04-13 | 2012-02-28 | Rgb Networks, Inc. | SDRAM convolutional interleaver with two paths |
CN104597805A (zh) * | 2014-12-09 | 2015-05-06 | 北京临近空间飞艇技术开发有限公司 | 一种基于fifo实现循环移位寄存器的系统及方法 |
-
2015
- 2015-05-22 DE DE102015209486.3A patent/DE102015209486A1/de active Pending
-
2016
- 2016-05-18 US US15/157,989 patent/US9996318B2/en active Active
- 2016-05-20 CN CN201610341074.0A patent/CN106168927B/zh active Active
Non-Patent Citations (1)
Title |
---|
http://blog.labix.org/2010/12/23/efficient-algorithm-for-expanding-circular-buffers |
Also Published As
Publication number | Publication date |
---|---|
CN106168927B (zh) | 2021-07-27 |
US20160342390A1 (en) | 2016-11-24 |
US9996318B2 (en) | 2018-06-12 |
CN106168927A (zh) | 2016-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69500074T2 (de) | Modulo-adressierter Pufferspeicher | |
DE1499193C3 (de) | Speicher-Adressierschaltung | |
DE69229716T2 (de) | Schaltungsarchitektur zum mehrkanaligen DMA-Betrieb | |
DE102013014168B4 (de) | Kachel-basiertes verschachteln und entschachteln für digitale signalverarbeitung | |
DE3500804A1 (de) | Unterbrechungssteuerkreis | |
DE2431379A1 (de) | Datenverarbeitungseinrichtung | |
DE102015209486A1 (de) | FIFO Speicher mit im Betrieb veränderbarem Speicherbereich | |
DE2747146A1 (de) | Datenverarbeitungsanlage | |
DE2364254B2 (de) | Schaltungsanordnung fuer datenverarbeitende geraete | |
DE1774870B2 (de) | Einrichtung zur Adressierung einer Speicherzelle eines Speichers in einer Datenverarbeitungsanlage | |
DE2718551A1 (de) | Adressenumsetzvorrichtung in einer datenverarbeitungsvorrichtung | |
DE112016001451T5 (de) | Techniken für das Anzeigen von Layouts und Übergangslayouts von Sätzen von Inhaltselementen in Reaktion auf Touch-Eingaben von Benutzern | |
DE1524898A1 (de) | Datenspeicher fuer Datenverarbeitungsanlagen zur gleichzeitigen Entnahme mehrerer Worte | |
EP3087464B1 (de) | Navigationsvorrichtung und verfahren zur darstellung eines navigationsbaums an einem anzeigegerät | |
DE2235883C3 (de) | Datenverarbeitungseinrichtung | |
DE2017246A1 (de) | Verfahren und Einrichtung zum Er mitteln des Konturverlaufes eines spal tenweise abgetasteten Schriftzeichens | |
DE2556357A1 (de) | Adressiereinrichtung | |
DE2210333B2 (de) | Speicheranordnung mit Schieberegistern | |
DE10107102B4 (de) | Verfahren und Anordnung zur Instruktionswortgenerierung bei der Ansteuerung von Funktionseinheiten in einem Prozessor | |
DE2750126B2 (de) | ||
DE102018113615A1 (de) | Verfahren zur Darstellung von Daten auf einem mobilen Endgerät | |
DE2000608A1 (de) | Schaltungsanordnung fuer eine Nachrichtenverarbeitungs-,insbesondere fuer eine Nachrichtenvermittlungsanlage | |
DE10128752A1 (de) | Verfahren zur Ablage von Daten in einen Speicherbaustein | |
DE102009047377A1 (de) | Verfahren und Routenberechnungsgerät zur stochastischen Berechnung einer Fahrtroute | |
DE102006014690A1 (de) | Speicherverwaltung von Chipkarten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed |