DE4442127A1 - Method for memory management of a flash memory - Google Patents

Method for memory management of a flash memory

Info

Publication number
DE4442127A1
DE4442127A1 DE4442127A DE4442127A DE4442127A1 DE 4442127 A1 DE4442127 A1 DE 4442127A1 DE 4442127 A DE4442127 A DE 4442127A DE 4442127 A DE4442127 A DE 4442127A DE 4442127 A1 DE4442127 A1 DE 4442127A1
Authority
DE
Germany
Prior art keywords
segments
block
occupied
marked
unmarked
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE4442127A
Other languages
German (de)
Inventor
Dieter Dipl Ing Kopp
Juergen Sienel
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.)
Alcatel Lucent Deutschland AG
Original Assignee
Alcatel SEL AG
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 Alcatel SEL AG filed Critical Alcatel SEL AG
Priority to DE4442127A priority Critical patent/DE4442127A1/en
Priority to DE59500128T priority patent/DE59500128D1/en
Priority to EP95100416A priority patent/EP0704803B1/en
Priority to AT95100416T priority patent/ATE149709T1/en
Priority to ES95100416T priority patent/ES2101584T3/en
Priority to US08/536,852 priority patent/US5933845A/en
Priority to JP25542395A priority patent/JPH08235880A/en
Publication of DE4442127A1 publication Critical patent/DE4442127A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/64Automatic arrangements for answering calls; Automatic arrangements for recording messages for absent subscribers; Arrangements for recording conversations
    • H04M1/65Recording arrangements for recording a message from the calling party
    • H04M1/6505Recording arrangements for recording a message from the calling party storing speech in digital form
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Description

Die Erfindung betrifft ein Verfahren zur Speicherverwaltung von Flash-Speicherbausteinen.The invention relates to a method for memory management of Flash memory chips.

Aus dem Stand der Technik sind, insbesondere in der Anwendung für digitale Anrufbeantworter, sogenannte Flash-Speicher bekannt. Ein Flash-Speicher ist ein kontinuierlicher, linearer Datenspeicher. Bei bekannten Flash-Speichern von z. B. der Firma INTEL gibt es einen 4-MBit-Speicher, der in sieben Blöcke unterschiedlicher Größe aufgeteilt ist. Bei Speichern von der Firma AMD wird eine Aufteilung in acht Blöcke vorgenommen. Der Flash-Speicher der Firma INTEL kann zu vier gleich großen Blöcken zusammengefaßt werden. Bei diesen beiden bekannten Flash-Speichern ist es nur möglich, blockweise zu löschen. Bei einer maximalen Abspeicherungszeit von z. B. 15 Minuten und einer Unterteilung in vier Blöcke bedeutet dies, daß pro Block mehr als 3 Minuten abgespeichert sind. Um einen ganzen Block zu löschen, müssen demnach alle Nachrichten, die in diesen 3 Minuten aufgesprochen wurden, entfernt werden. From the prior art, in particular in the application for digital answering machine, known as flash memory. On Flash memory is a continuous, linear data memory. In known flash memories of z. B. the company INTEL there a 4 MBit memory, which is divided into seven blocks of different sizes is divided. When saving from the company AMD is a Divided into eight blocks. The flash memory of the Company INTEL can be grouped into four equal blocks become. With these two known flash memories it is only possible to delete in blocks. At a maximum Storage time of z. B. 15 minutes and a subdivision into four blocks this means that per block more than 3 minutes are stored. To delete a whole block, you need to therefore, all the news recorded in these 3 minutes were removed.  

Nachteilig ist hierbei, daß alle Nachrichten gelöscht werden müssen und zusätzlich, daß jedes erneute Schreiben und Löschen eines Blocks die Lebensdauer des Speichers reduziert. Die meisten Flash-Speicher haben eine durchschnittliche Lebensdauer von 100 000 Schreib/Lösch-Zyklen pro Block.The disadvantage here is that all messages are deleted and in addition, that every rewriting and deleting a block reduces the life of the memory. Most Flash memories have an average lifespan of 100,000 write / erase cycles per block.

Es ist die Aufgabe der Erfindung, eine Flash-Speicherverwaltung vorzusehen, mit der eine hohe Auslastung des verfügbaren Speicherplatzes möglich ist.It is the object of the invention to provide flash memory management provide a high utilization of the available Storage space is possible.

Weitere Aufgabe der Erfindung ist es, neben der hohen Auslastung eine Flash-Speicherverwaltung vorzusehen, die anwenderfreundlich ist.Another object of the invention is, in addition to the high utilization to provide a flash memory management that is user friendly is.

Dies wird erfindungsgemäß gelöst durch die Lehre des Patentanspruchs 1, die Lehre des Patentanspruchs 11, die Lehre des Patentanspruchs 12, die Lehre des Patentanspruchs 13 und die Lehre des Patentanspruchs 17.This is achieved by the teachings of the invention Patent claim 1, the teaching of claim 11, the teaching of Patent claim 12, the teaching of claim 13 and the teaching of claim 17.

Vorteilhaft ist hierbei, daß die Schreib/Lösch-Zyklen in allen Blöcken Anwendung finden, so daß gerade das Löschen von Blöcken einer Optimierung unterliegt.The advantage here is that the write / erase cycles in all Blocks find application, so that just the deletion of blocks subject to optimization.

Des weiteren ist es vorteilhaft, daß durch das Optimieren durch Umkopieren innerhalb des Speichers die Zeit, in der der Speicher belegt ist und nicht mit einer neuen Nachricht beschrieben werden kann, sehr kurz gehalten wird.Furthermore, it is advantageous that by optimizing Copy inside the memory the time in which the memory is busy and not described with a new message can, is kept very short.

Weitere vorteilhafte Ausgestaltungen der Erfindung sind den Unteransprüchen zu entnehmen.Further advantageous embodiments of the invention are the Subclaims refer.

Im folgenden wird die Erfindung anhand der Figuren näher erläutert.In the following the invention will be explained in more detail with reference to FIGS.

Folgende Figuren zeigen:The following figures show:

Fig. 1 Ablaufdiagramm einer Speicheroptimierung, Fig. 1 flow chart of a tuning memory,

Fig. 2 schematische Darstellung einer Datei, Fig. 2 shows a schematic representation of a file,

Fig. 3a Beispiel für das Verschieben von Dateien, Fig. 3a Example of moving files

Fig. 3b Beispiel für das Löschen ganzer Blöcke, Fig. 3b Example of deleting whole blocks,

Fig. 3c Beispiel für das Kopieren von Dateien in andere Blöcke, Fig. 3c Example of copying files to other blocks,

Fig. 3d Beispiel für das Zwischenlagern von Dateien. Fig. 3d Example for the intermediate storage of files.

Im folgenden wird die Erfindung anhand von Fig. 1 näher erläutert.In the following the invention with reference to FIG. 1 will be explained in more detail.

Ein Flash-Speicher ist in eine Anzahl von Blöcken unterteilt. Diese Blöcke werden wiederum in eine Vielzahl von Segmenten unterteilt. Daten in Form von Dateien können, erfindungsgemäß an einem beliebigen Segment beginnend, segmentweise in dem Flash-Speicher abgespeichert werden. Zum Löschen dieser entsprechenden Dateien werden diese segmentweise markiert. Gelöscht werden kann aber nur blockweise.A flash memory is divided into a number of blocks. These blocks turn into a variety of segments divided. Data in the form of files can, according to the invention to starting from any segment, segment by segment Flash memory to be stored. To delete this corresponding files are marked segment by segment. But can be deleted only in blocks.

Als Beispiel wird im folgenden ein Flash-Speicher aufgeführt, der in vier Blöcke unterteilt ist. Als weitere Möglichkeit bietet sich ebenfalls an, einen Flash-Speicher in acht Blöcke oder aber auch in sechzehn Blöcke zu unterteilen. Dies ist abhängig von dem jeweiligen Halbleiterhersteller. Bei dem hier gewählten Beispiel mit vier Blöcken wird in einem ersten Schritt 1 ein aktueller Füllgrad des Flash-Speichers bestimmt. Dies erfolgt, indem die Anzahl der nicht belegten, belegten zum Löschen markierten und der belegten, nichtmarkierten Segmente eines jeden Blocks bestimmt wird. Der Füllgrad des einzelnen Blocks und der Füllgrad des gesamten Flash-Speichers führen dazu, daß nach dem Überschreiten einer Schwelle eine Speicheroptimierung vorgenommen werden soll. Hierbei kann die Schwelle ein empirisch ermittelter Wert sein, der z. B. vorn einstellbar ist. Es ist auch denkbar, je nach Füllgrad unterschiedliche, d. h. variable Schwellen, vorzugeben.As an example, below is a flash memory divided into four blocks. Another possibility is also to divide a flash memory in eight blocks or even in sixteen blocks. This depends on the respective semiconductor manufacturer. In the example selected here with four blocks, a current filling level of the flash memory is determined in a first step 1 . This is done by determining the number of unoccupied, occupied deletion marked and occupied unmarked segments of each block. The degree of filling of the individual block and the filling level of the entire flash memory cause memory to be optimized after a threshold has been exceeded. In this case, the threshold may be an empirically determined value, the z. B. front adjustable. It is also conceivable, depending on the degree of filling different, ie variable thresholds pretend.

Liegt der Füllgrad des Speichers oberhalb der Schwelle, liegt die Anforderung vor, den Speicher zu optimieren 2. Dies kann gemäß einer Ausgestaltung der Erfindung durch ein Verschieben von belegten nichtmarkierten Dateien in Richtung des jeweils nicht belegten Endes des Speichers erfolgen. Die in dem ursprünglichen Block verbleibenden, markierten Dateien werden dabei blockweise gelöscht. Für den Fall, daß eine Verschiebung der Dateien nicht möglich ist, kann in einem weiteren Schritt 4 ermittelt werden, ob ein ganzer Block existiert, in dem sich keine belegten nichtmarkierten Segmente befinden. Der ganze Block wird dann gelöscht.If the filling level of the memory is above the threshold, there is a requirement to optimize the memory 2 . This can be done in accordance with an embodiment of the invention by moving occupied unmarked files in the direction of each unoccupied end of the memory. The selected files remaining in the original block are deleted block by block. In the event that a displacement of the files is not possible, it can be determined in a further step 4 whether a whole block exists in which there are no occupied unmarked segments. The whole block is then deleted.

Für den Fall, daß sich kein Block in dem Flash-Speicher befindet, der ganz löschbar ist, wird derjenige Block ermittelt, in dem sich die kleinste Anzahl an belegten, nichtmarkierten Segmenten befindet. Diese belegten nichtmarkierten Segmente, die zu einer Datei dazugehören, werden dann in nichtbelegte Bereiche anderer Blöcke kopiert 5. Der zuvor ermittelte Block wird sodann gelöscht. Für den hier vorliegenden Fall ist vorausgesetzt, daß die Datei, die umkopiert wird, komplett in den nicht belegten Bereich hineinpaßt, also als Ganzes zusammenbleibt.In the event that there is no block in the flash memory which is completely erasable, the block in which there is the smallest number of occupied, unmarked segments is determined. These occupied unmarked segments associated with a file are then copied 5 to unused areas of other blocks 5 . The previously determined block is then deleted. For the present case, it is assumed that the file which is being copied completely fits into the unoccupied area, ie remains together as a whole.

Für den Fall, daß keine Möglichkeit existiert, Segmente in nicht belegte Bereiche anderer Blöcke umzukopieren, wird in einem nächsten Schritt 6 wiederum der Block ermittelt, in dem sich die kleinste Anzahl an belegten nichtmarkierten Segmenten befindet, woraufhin diese Segmente des ermittelten Blocks in einem markierten Bereich eines anderen Blocks zwischengespeichert werden. Danach wird der zuvor ermittelte Block als Ganzes gelöscht und die zwischengespeicherten Daten werden wieder in den nun vollständig unbelegten Block zurückgeschrieben.In the event that there is no possibility to copy segments into unoccupied areas of other blocks, in a next step 6 again the block is determined in which there is the smallest number of occupied unmarked segments, whereupon these segments of the determined block are in a marked one Cached area of another block. Thereafter, the previously determined block is deleted as a whole and the cached data are written back into the now completely empty block.

Für den Fall, daß erfindungsgemäß einer dieser vier Schritte 3, 4, 5, 6 zur Speicheroptimierung ausgeführt wird, wird wiederum der Füllgrad bestimmt und ein Schwellwertvergleich erfolgt 1.In the event that, according to the invention, one of these four steps 3, 4, 5, 6 is executed for memory optimization, the degree of filling is again determined and a threshold value comparison is carried out 1 .

Für den Fall, daß keiner dieser vorhergehenden Schritte ausgeführt wird, also eine Optimierung nicht möglich ist, wird in einem weiteren Schritt 7 eine Benutzerabfrage erfolgen. Hierbei wird der Benutzer gefragt nach denjenigen Dateien, die zusätzlich zum Löschen markiert werden sollen. Gibt der Benutzer darauf eine positive Antwort, also bestimmt löschbare Dateien, dann kann wiederum mit dem Schritt 1 fortgefahren werden. Für den Fall, daß der Benutzer kein weiteres Segment zu löschen wünscht, erfolgt ein Abbruch und keine neue Datei ist abspeicherbar.In the event that none of these previous steps is performed, so an optimization is not possible, in a further step 7, a user query will be made. Here, the user is asked for the files that are to be marked in addition to the deletion. If the user gives a positive response to this, that is to say, erasable files, then again step 1 can be continued. In the event that the user does not wish to delete another segment, an abort and no new file is stored.

Im folgenden wird anhand der Fig. 2 die schematische Darstellung einer Datei erläutert, die mehrere Segmente lang ist. Am Anfang einer jeden Datei I steht ein Dateianfangsetikett 00000, dieses ist beispielsweise mit Nullen besetzt. Als zweites II steht am Anfang jeder Datei ein Segmentanfangsetikett, z. B. 10000. Zu Beginn des zweiten Segmentes, welches noch zu der Datei zählt, steht zweimal ein Segmentanfangsetikett 10000. Dies wird für jedes weitere Segment der Datei in dieser Form ausgeführt. Für den Beginn einer neuen Datei I ist wieder ein neues Dateianfangsetikett 00000 vorgesehen. Somit ist eindeutig, wie lang eine existierende Datei ist.In the following, the schematic representation of a file is explained with reference to FIG. 2, which is a plurality of segments long. At the beginning of each file I is a file header 00000, this is for example filled with zeros. The second II is at the beginning of each file, a segment header, z. B. 10000. At the beginning of the second segment, which still counts to the file, there is twice a segment start label 10000. This is done for each additional segment of the file in this form. For the beginning of a new file I, a new file header 00000 is again provided. It is therefore clear how long an existing file is.

Des weiteren steht zum Beginn einer Datei in einem weiteren Bereich III z. B. die Gesamtlänge der existierenden Datei bis zu ihrem Ende. Wahlweise kann zusätzlich noch Datum, Jahreszahl und Uhrzeit des Eintrags der Datei eingetragen werden. Danach werden die zu speichernden Daten in dem verbleibenden Bereich oder in den verbleibenden Bereichen abgespeichert. Somit ist eindeutig festgelegt, welche Segmente belegt sind. Zum Markieren zum Löschen einer Datei wird z. B. in alle Segmentanfangsetiketten II ebenfalls keine Null eingetragen, also 00000. Somit steht eindeutig fest, daß die darin noch abgespeicherten Daten zum Löschen bereitstehen. In dem Segmentanfangsetikett II kann durch einen Code festgelegt werden, welche Form von Daten darin gespeichert sind. Zum Beispiel PCM-Daten oder ADPCM-Daten usw., was durch einen Code 01000 bzw. 00100 angegeben wird.Furthermore, there is the beginning of a file in another Area III z. For example, the total length of the existing file is up to their end. Optionally, additionally date, year and Time of entry of the file to be entered. After that will be  the data to be stored in the remaining area or in the stored remaining areas. Thus, it is clear determines which segments are occupied. To mark for deletion a file is z. B. in all segment preambles II likewise no zero registered, thus 00000. Thus stands clear determines that the data still stored therein is for deletion ready. In the segment preamble II can by a Code can be defined which form of data is stored therein are. For example, PCM data or ADPCM data, etc., what by a code 01000 or 00100 is specified.

Im folgenden wird (ohne Zeichnung) ein Programmodul für das Betreiben eines Flash-Speichers erläutert. Der Flash-Speicher ist ebenfalls in Blöcke unterteilt, welche wiederum in eine Vielzahl von Segmenten unterteilt sind. Es wird ebenfalls ein zulässiger Füllgrad des Flash-Speichers ermittelt, der sich auch aus der Anzahl von nichtbelegten, aus der Anzahl von belegten und zum Löschen markierten Segmenten und aus der Anzahl von belegten nichtmarkierten Segmenten eines jeden Blocks bestimmt. Eine Speicheroptimierung wird dann mittels folgender Steuerbefehle vorgenommen. Mittels eines Steuerbefehls wird veranlaßt, von Dateien belegte Segmente zu verschieben, und mittels eines weiteren Steuerbefehls wird ein Block mit den verbleibenden belegten, zum Löschen markierten Segmenten gelöscht. Für den Fall, daß dies nicht ausführbar ist, wird ein Block ermittelt, in dem sich keine belegten, nichtmarkierten Segmente befinden und, veranlaßt durch einen Steuerbefehl, wird dann der ganze Block gelöscht. Wenn dies ebenfalls nicht möglich ist, wird der Block ermittelt, in dem sich die kleinste Anzahl an belegten nichtmarkierten Segmenten befindet.In the following will be (without drawing) a program module for the Operating a flash memory explained. The flash memory is also divided into blocks, which in turn into a variety are divided by segments. It will also be a legal one Filling level of the flash memory determined, which is also from the Number of unoccupied, out of the number of occupied and to Delete selected segments and from the number of occupied unmarked segments of each block. A Memory optimization is then by means of the following control commands performed. By means of a control command is caused by Move files occupied segments, and by means of a Another control command is a block with the remaining occupied segments deleted for deletion. In the case, that this is not executable, a block is determined in which there are no occupied, unmarked segments and caused by a control command, then the whole block deleted. If this is also not possible, the block becomes determined, in which occupied the smallest number of unmarked segments is located.

Diese werden dann, veranlaßt durch einen weiteren Steuerbefehl, in markierte Segmente anderer Blöcke zwischengespeichert. Der Block wird gelöscht und nach dem Löschen werden die zwischengespeicherten Segmente wieder in dem Block rekonstruiert. Für den Fall, daß dies ebenfalls nicht erfüllbar ist, wird der Block ermittelt, in dem sich die kleinste Anzahl an belegten, nichtmarkierten Segmenten befindet. Hierin wird dann, veranlaßt durch einen Steuerbefehl, ein Umkopieren der belegten, nichtmarkierten Segmente vorgenommen. Dies erfolgt aber nur dann, wenn eine ganze Datei in einen freien Speicherbereich umkopiert werden kann. Auch hier wird für den Fall, daß keine dieser Optimierungen möglich ist, mit einem weiteren Steuerbefehl eine Benutzerabfrage veranlaßt, bei der der Benutzer zu löschende Dateien zusätzlich markieren kann.These are then, caused by another control command, in Cached segments of other blocks are cached. The block will be deleted and after deleting the  cached segments reconstructed again in the block. In the event that this is also not possible, the Block, in which the smallest number of occupied, unmarked segments is located. This is then initiated by a control command, a copying of the occupied, unmarked segments made. But this only happens when copying an entire file to a free space can be. Again, in the event that none of these Optimizations is possible with another control command User prompt causes the user to be deleted Additionally, you can mark files.

Eine breite Verwendung solcher Programmodule ist beispielsweise zur Speicherung von Sprachnachrichten in Anrufbeantwortern denkbar. Beispielsweise kann mit einem hier verwendeten Flash-Speicher eine Vielzahl von Nachrichten gespeichert werden, bis z. B. einer Dauer von 15 Minuten insgesamt. Häufig besteht hierbei der Wunsch, Nachrichten zu löschen und andere Nachrichten längere Zeit aufzubewahren.A broad use of such program modules is, for example for storing voice messages in answering machines conceivable. For example, with one used here Flash memory a variety of messages are stored to z. B. a duration of 15 minutes in total. Often exists the desire to delete messages and other messages to keep for a longer period of time.

Im folgenden wird anhand der Fig. 3a ein Ausführungsbeispiel näher erläutert. In dem hier gewählten Beispiel besitzt der Flash-Speicher vier Blöcke A, B, C, D. Markierte Bereiche von Segmenten, die zum Löschen bereitstehen, sind hierbei durch die kurzen vertikalen Stiche angezeigt (||||). Segmente, die nicht markiert sind, also weiterhin gespeichert bleiben sollen, sollen durch den langgezogenen horizontalen Strich gekennzeichnet werden. Die Reihenfolge von Dateien gleicher Art kann erfindungsgemäß durch das Auswerten von Zusatzinformationen, die am Anfang des ersten Segmentes einer Datei stehen (wie Datum, Uhrzeit), ausgewertet werden. In the following an embodiment will be explained in more detail with reference to FIG. 3a. In the example chosen here, the flash memory has four blocks A, B, C, D. Marked areas of segments that are ready to be erased are indicated by the short vertical stitches (||||). Segments that are not marked, that is, should continue to be saved, should be identified by the long horizontal bar. The sequence of files of the same kind can be evaluated according to the invention by evaluating additional information that is at the beginning of the first segment of a file (such as date, time).

In dem ersten Block A sind 5 unterschiedliche Dateien gespeichert 1, 2, 3, 4, 5. In dem zweiten Block B befindet sich lediglich das Ende der fünften Datei 5. Sollten nun z. B. die Dateien 2 und 4 zum Löschen markiert werden (vgl. Fig. 3a, 2′, 4′), so wird dann aus der Datei 3 die Datei 2 und aus der Datei 5 die Datei 3. In dem Fall, daß Dateien verschoben werden sollen Δt, werden die nichtmarkierten Dateien 1, 2, 3 zum Ende des Speichers in den vierten Block D hinverschoben. Die Kennzeichnung der Dateien wird, wie bereits erläutert, verändert. Aus 5 wird 3, aus 3 wird 2 und die 1 bleibt. So befinden sich die Dateien 1, 2, 3 nach dem Verschieben, von hinten aus gesehen in der Reihenfolge 3, 2, 1 in dem letzten Block D. Die markierten Dateien in dem ersten Block A werden nun in diesem Block gelöscht. Somit stehen wieder drei freie Blöcke zur erneuten Speicherung zur Verfügung A, B und C. Neue Nachrichten in Form von Dateien werden nun wieder in den Block A hineingeschrieben.In the first block A 5 different files are stored 1, 2, 3, 4, 5. In the second block B is only the end of the fifth file 5. Should now z. For example, if files 2 and 4 are marked for deletion (see Figures 3a, 2 ', 4'), then file 3 becomes file 2 and file 5 becomes file 3. In the case of files Δt, the unmarked files 1, 2, 3 are moved to the end of the memory in the fourth block D. The marking of the files is changed, as already explained. 5 becomes 3, 3 becomes 2 and 1 remains. Thus, the files 1, 2, 3 are after being moved, seen from the rear, in the order of 3, 2, 1 in the last block D. The marked files in the first block A are now deleted in this block. Thus, three free blocks are available for re-storage A, B and C. New messages in the form of files are now rewritten in the block A.

Im folgenden wird anhand der Fig. 3b das Löschen ganzer Blöcke erläutert. Es existieren verschiedene Dateien. Im Block A befinden sich fünf Dateien 2, 3, 4, 5, 6. Davon ist die Datei 3 zum Löschen markiert (3′). Im Block B befinden sich zwei Dateien 5 und 1, beide zum Löschen markiert (5′, 1′). Ansonsten ist der Block nicht belegt. Block C ist ebenfalls nicht belegt. Im Block D existieren Dateien 7, 8, die aufbewahrt werden sollen. Es wird nun festgestellt, daß der Block B löschbar ist. Zum Löschen kann z. B. der unbelegte Teil des Blocks ebenfalls markiert werden, woraufhin dann der Block gelöscht wird. Darauffolgend Δt befinden sich lediglich noch Daten in Block A und D. Dabei wurde 2 in 1, 4 in 2, 6 in 3, 7 in 4 und 8 in 5 geändert. Die Blöcke B und C sind frei.In the following, the erase of entire blocks will be explained with reference to FIG. 3b. There are several files. In block A there are five files 2, 3, 4, 5, 6. Of these, file 3 is marked for deletion (3 '). In block B there are two files 5 and 1, both marked for deletion (5 ', 1'). Otherwise the block is not occupied. Block C is also not occupied. In block D there are files 7, 8 which are to be kept. It will now be noted that block B is erasable. For deleting z. B. the blank part of the block are also marked, whereupon then the block is deleted. Following Δt there are only data in blocks A and D. Here, 2 in 1, 4 in 2, 6 in 3, 7 in 4 and 8 in 5 has been changed. Blocks B and C are free.

Im folgenden wird anhand der Fig. 3c das Kopieren von Dateien in andere Blöcke erläutert. Es wird ermittelt, welcher Block die geringste Anzahl an belegten, nichtmarkierten Segmenten aufweist. In diesem Fall ist dies der Block C. Die darin befindliche Datei 7, die nicht markiert ist, wird in den freien Bereich des Blockes B umkopiert (jetzt 4, nach dem Umnumerieren). Der verbleibende Bereich in C wird zum Löschen markiert, und somit (Δt) ist der Bereich wieder vollständig frei.In the following, the copying of files into other blocks is explained with reference to FIG. 3c. It is determined which block has the least number of occupied, unmarked segments. In this case, this is block C. The file 7 therein, which is not marked, is copied to the free area of block B (now 4, after renumbering). The remaining area in C is marked for deletion, and thus (Δt) the area is completely free again.

Im folgenden wird anhand der Fig. 3d ein Beispiel für das Zwischenlagern von Dateien erläutert.In the following, an example of the intermediate storage of files is explained with reference to FIG. 3d.

In dem hier vorliegenden Fall wird ebenfalls der Block ermittelt, in dem sich die geringste Anzahl an belegten, nichtmarkierten Segmenten befindet. Hier ist dies der Block C. Es wird versucht, die Datei 5 (nach Umnumerieren), die nicht markiert ist, um das Löschen des Blockes ausführen zu können, auszulagern. Es existiert kein unbelegter Bereich mehr, in dem die Datei umkopiert werden kann. Deshalb wird versucht, die Datei 5 im Bereich der zum Löschen markierten Datei 2 zwischenzuspeichern. Diese reicht nicht aus, und so wird der verbleibende Teil der Datei z. B. im Block B, in dem unbelegten (zwischen 3 und 5′), aber auch in dem markierten Bereich 5′ zwischengespeichert. Danach wird der Block gelöscht. Daraufhin (Δt) wird die Datei 5 in dem nunmehr "leeren" Block rekonstruiert.In the present case, the block is also determined, in which occupied the least number of unmarked Located segments. Here's the block C. It's trying the file 5 (after renumbering), which is not marked, to the Delete the block to be able to execute, outsource. It exists no more blank area where the file will be repackaged can. Therefore, the file 5 is tried in the area of the Delete cached file 2 to cache. This is not enough off, and so the remaining part of the file z. In block B, in the blank (between 3 and 5 '), but also in the marked one Area 5 'cached. After that, the block is deleted. Thereafter (Δt), the file 5 is in the now "empty" block reconstructed.

Die Aufzählung der hier genannten Fälle ist nur beispielhaft und erhebt keinerlei Anspruch auf Vollständigkeit.The enumeration of the cases mentioned here is only an example and makes no claim to completeness.

Im folgenden wird die Erfindung gemäß Patentanspruch 13 anhand des folgenden Beispiels erläutert.In the following the invention according to claim 13 using the following example explained.

Der Füllgrad des Flash-Speichers, der in vier Blöcke unterteilt ist, wird bestimmt, indem die Anzahl der nicht belegten die Anzahl der belegten, zum Löschen markierten und der belegten, nicht markierten Segmente eines jeden der vier Blöcke bestimmt wird. The fill level of the flash memory, which is divided into four blocks is determined by the number of unoccupied the number the occupied, marked for deletion and the occupied, not marked segments of each of the four blocks is determined.  

Überschreitet der Füllgrad eine Schwelle, wird der Block bestimmt, in dem sich die geringste Anzahl an belegten, nicht markierten Segmenten befindet.If the degree of filling exceeds a threshold, the block is determined in which the least number of occupied, unmarked Located segments.

In einem weiteren Schritt werden die belegten, nicht markierten Segmente verknüpft, um auf zum Löschen markierte Segmente eines weiteren Blocks überschrieben zu werden.In a further step, the occupied, unmarked Segments linked to segments marked for deletion to be overwritten further blocks.

Diese Aufbereitung ist im folgenden an einem Beispiel erläutert, in dem beliebige Daten ausgewählt wurden. Dem zugrunde lag, daß insbesondere bei Sprachdaten eine Gleichverteilung von 0 und 1 auftritt.This preparation is explained below using an example, in which any data was selected. It was based on that especially for speech data, an equal distribution of 0 and 1 occurs.

In dem weiteren Block befinden sich zum Löschen markierte Segmente, was bedeutet, daß noch Daten in den Segmenten eingeschrieben sind. Demnach lassen sich diese Daten beispielshaft folgendermaßen angeben, in hexadezimaler Darstellung und dualer Darstellung:In the other block are marked for deletion Segments, which means that there is still data in the segments are inscribed. Accordingly, this data can be exemplary specify, in hexadecimal and dual Presentation:

HEXHEX DUALDUAL 8 38 3 1000 00111000 0011 0 20 2 0000 00100000 0010 0 00 0 0000 00000000 0000 B AB A 1011 10101011 1010 5 75 7 0101 01110101 0111 1 A1 A 0001 10100001 1010 0 F0 F 0000 11110000 1111 E DE D 1110 11011110 1101 2 22 2 0010 00100010 0010 D 5D 5 1101 01011101 0101 D 2D 2 1101 00101101 0010 ·· ·· ·· ·· ·· ··

Die Daten des belegten, nicht markierten Segments sind beispielsweise:The data of the occupied, unmarked segment are for example:

HEXHEX DUALDUAL 1 51 5 0001 01010001 0101

Diese Daten gilt es zu überschreiben.This data should be overwritten.

Im folgenden werden die Daten der zum Löschen markierten Daten mittels einer logischen Verknüpfung, z. B. UND, mit den belegten nicht markierten Daten verknüpft.The following is the data of the data marked for deletion by means of a logical link, z. B. AND, with the occupied linked to unmarked data.

Daraus ergeben sich die verknüpften DatenThis results in the linked data

Somit sind die Daten aber noch nicht vollständig überschrieben worden, denn 0000 0001 entspricht nicht oder nur teilweise 0001 0101. Es werden demgemäß weitere Verknüpfungen notwendig, bis zum vollständigen Überschreiben.Thus, the data is not completely overwritten yet 0000 0001 is not or only partially 0001 0101. Accordingly, further links become necessary until for complete overwriting.

Daraus folgt, daß auf die folgenden Daten, die sich in dem zum Löschen markierten Segment befinden, eine erneute Verknüpfung, hier ebenfalls UND, angewendet wird.It follows that the following data, which is in the for Delete marked segment, re-link, here also AND, is applied.

Daraus folgt:It follows:

Dies liefert keinen Beitrag.This does not contribute.

Und weiterAnd further

Daraus folgt:It follows:

Und weiterAnd further

Daraus folgt:It follows:

Dies liefert einen Beitrag, entspricht aber auch zusammen mit den Gleichungen I, II und III noch nicht den vollständigen Daten von 0001 0101. This provides a contribution, but also corresponds with the Equations I, II and III are not yet the full data of 0001 0101.  

Und weiterAnd further

Daraus folgt:It follows:

Im folgenden wird in tabellarischer Form ein Überblick über die bisher überschriebenen Daten gegeben. Dabei stehen in der linken Spalte die Daten, die zu überschreiben sind, und in der mittleren Spalte die Daten, die durch die Verknüpfung überschrieben wurden. Die beiden rechten Spalte geben die entsprechenden hexadezimalen Zahlen an, wobei die äußerste rechte Spalte die noch zu codierenden Daten angibt.The following is a tabular overview of the given previously overwritten data. This is in the left Column the data to be overwritten, and in the middle Column the data that has been overwritten by the link. The two right-hand columns give the corresponding hexadecimal Numbers, with the rightmost column to be encoded Data indicates.

Bei der Gleichung (V) ergibt die logische Verknüpfung eine 15 0001 0101.In the equation (V), the logical operation gives a 15 0001 0101.

Tabelle 3 Table 3

Da aber bereits eine 0 1 0000 0001 mit der Gleichung (I) und eine 1 0 0001 0000 mit der Gleichung (V) überschrieben wurde, wird hier mit der Gleichung (V) nur noch eine 0 4 0000 0100 programmiert. Die Zahl der Gleichung (V) wird hierbei durch eine logische ODER-Verknüpfung oder durch Subtraktion ermittelt.But since already a 0 1 0000 0001 with the equation (I) and a 1 0 0001 0000 was overwritten by equation (V), is here with the equation (V) only a 0 4 0000 0100 programmed. The number of the equation (V) is here by a logical OR or determined by subtraction.

Des weiteren ergibt sich, daß ein Endekriterium ermittelt werden muß, um festzulegen, daß das Überschreiben beendet ist.Furthermore, it follows that an end criterion can be determined must to specify that the overwriting is completed.

Ein Endekriterium könnte folgendermaßen aussehen: Die wie vorab erläuterte logische Verknüpfung mit den folgenden zum Löschen markierten Daten ergibt:An end criterion could look like this: The as in advance explained logical association with the following for deletion marked data gives:

Daraus folgt:It follows:

Vergleicht man dies mit den in der Tabelle 5 eingetragenen Werten, stellt man fest, daß die Gleichung (VI) der Gleichung (IV) entspricht. Entsprechend wird festgestellt, daß sich an mindestens einer Bitposition erneut eine 1 befindet, was als Endekriterium dient.If one compares this with the values entered in Table 5, it is found that equation (VI) of equation (IV) equivalent. Accordingly, it is stated that at least a bit position is again a 1, which is the final criterion serves.

Ein weiteres Beispiel ergibt sich, wenn die belegten, nicht markierten Daten beispielsweise folgende sind:Another example arises when the occupied ones do not For example, tagged dates are:

HEXHEX DUALDUAL 0 00 0 0000 00000000 0000

Die zum Löschen markierten sind beispielsweise:The ones marked for deletion are, for example:

HEXHEX DUALDUAL 0 F0 F 0000 11110000 1111 E DE D 1110 11011110 1101 ·· ·· ·· ·· ·· ··

In der Verknüpfung, die der zuvor erläuterten entspricht, würde jede Verknüpfung mit 00 zu 00 führen. Aus diesem Grund muß das Endekriterium erweitert werden.In the link that corresponds to the one explained above, each would Link with 00 to 00 lead. For this reason, that must End criterion to be extended.

Festzustellen ist folgendes:It should be noted that:

Tabelle 6 Table 6

An den Bitpositionen 0, 2 und 3 der Daten der mittleren Spalte ist in beiden Fällen jeweils eine 1. Entsprechend wird festgelegt, daß, falls mehr als eine Bitposition mindestens zweimal eine 1 enthält, diese ein Byte mit 0 repräsentiert und somit das Endekriterium festlegt.At the bit positions 0, 2 and 3 of the data of the middle column is in each case a 1. Accordingly, it is determined that if more than one bit position contains a 1 at least twice, this one byte represents 0 and thus the end criterion sets.

Ein weiteres Beispiel ist mit den folgenden, zum Löschen markierten Daten (siehe Tab. 7) und den belegten, nicht markierten Daten gegeben (Tab. 8).Another example is the following, marked for deletion Data (see Tab. 7) and the occupied, unmarked data given (Table 8).

HEXHEX DUALDUAL 2 22 2 0010 00100010 0010 D 5D 5 1101 01011101 0101 D 2D 2 1101 00101101 0010 ·· ·· ·· ·· ·· ··

HEXHEX DUALDUAL 0 00 0 0000 00000000 0000

Die folgende Tabelle zeigt die Ergebnisse der logischen Verknüpfung:The following table shows the results of the logical link:

Tabelle 9 Table 9

Die dualen Werte der Gleichungen (VII) und (VIII) haben keine übereinstimmende Bitposition mit 1, woraus sich ergibt, daß kein Endekriterium erfüllt ist. Der Vergleich der Gleichung (IX) mit Gleichung (VIII) jedoch zeigt wieder übereinstimmende Bitpositionen, woraus wiederum ein Endekriterium erfüllt ist. The dual values of equations (VII) and (VIII) have none matching bit position with 1, with the result that no End criterion is met. The comparison of equation (IX) with Equation (VIII), however, shows again matching Bit positions, from which in turn an end criterion is fulfilled.  

Zusammenfassend ergeben die Daten aus der Tab. 1 nach dem Überschreiben:In summary, the data from Tab. 1 after the Overwrite:

Tabelle 10 Table 10

Die, wie vorab erläutert, so überschriebenen nicht markierten Daten werden, nachdem der Block gelöscht wurde, vorzugsweise wieder rekonstruiert. Durch die Löschung entsteht neuer freier Speicherplatz und es kann erneut Sprache aufgezeichnet werden.The unmarked data overwritten as explained above are preferably after the block has been deleted reconstructed. The deletion creates new freer Memory space and language can be recorded again.

Claims (19)

1. Verfahren zum Betreiben eines Flash-Speichers, der in Blöcke unterteilt ist, und dessen Blöcke in eine Vielzahl von Segmenten unterteilt werden, bei dem
  • - Daten in Form von Dateien mit einem beliebigen Segment, beginnend segmentweise, abgespeichert werden und zum Löschen entsprechende Dateien segmentweise markiert werden,
  • - ein aktueller Füllgrad des Flash-Speichers bestimmt wird (1), indem die Anzahl der belegten und zum Löschen markierten, der belegten, nicht markierten und der nicht belegten Segmente eines jeden Blocks bestimmt wird, und
  • - nach dem Überschreiten einer Schwelle des Füllgrades, eine Speicheroptimierung (2) vorgenommen wird.
A method of operating a flash memory, which is divided into blocks, and whose blocks are divided into a plurality of segments, in which
  • - data in the form of files with an arbitrary segment, beginning segment by segment, are stored and files corresponding to the deletion are marked segment by segment,
  • - A current filling level of the flash memory is determined ( 1 ) by the number of occupied and marked for deletion, the occupied, unmarked and unoccupied segments of each block is determined, and
  • - After exceeding a threshold of the degree of filling, a memory optimization ( 2 ) is made.
2. Verfahren und Anspruch 1, bei dem zur Speicheroptimierung belegte, nicht markierte Dateien in Richtung des jeweils nicht belegten Endes des Flash-Speichers verschoben werden (3), und die in den Blöcken verbleibenden, markierten Dateien blockweise gelöscht werden. 2. The method and claim 1, in which occupied for memory optimization, unmarked files in the direction of each unoccupied end of the flash memory are moved ( 3 ), and the remaining files in the blocks, marked files are deleted block by block. 3. Verfahren nach Anspruch 1 oder 2, bei dem zur Speicheroptimierung ermittelt wird, ob ein Block existiert, in dem sich keine belegten, nicht markierten Segmente befinden (4) und dieser dann gelöscht wird.3. The method of claim 1 or 2, wherein it is determined for memory optimization, if a block exists in which there are no occupied, unmarked segments ( 4 ) and this is then deleted. 4. Verfahren nach einem der Ansprüche 1 bis 3, bei dem zur Speicheroptimierung der Block ermittelt wird, in dem sich die kleinste Anzahl an belegten, nicht markierten Segmenten befindet und diese dann in nicht belegte Bereiche anderer Blöcke kopiert werden (5) und daß dann der zuvor ermittelte Block gelöscht werden kann.4. The method according to any one of claims 1 to 3, wherein the memory for optimizing the block is determined in which there is the smallest number of occupied, unmarked segments and these are then copied to unoccupied areas of other blocks ( 5 ) and then the previously determined block can be deleted. 5. Verfahren nach einem der Ansprüche 1 bis 4, bei dem zur Speicheroptimierung der Block ermittelt wird, in dem sich die kleinste Anzahl an belegten, nicht markierten Segmenten befindet und diese Segmente in einen markierten Bereich eines anderen Blocks zwischengespeichert werden (6), der zuvor ermittelte Block gelöscht wird, worin dann die zwischengespeicherten Daten rekonstruiert werden.5. The method according to any one of claims 1 to 4, wherein the memory for optimizing the block is determined in which there is the smallest number of occupied, unlabeled segments and these segments are cached in a marked area of another block ( 6 ), the previously determined block is deleted, wherein then the cached data are reconstructed. 6. Verfahren nach einem der Ansprüche 1 bis 5, bei dem, falls nach dem Überschreiten der Schwelle des Füllgrades keine Speicheroptimierung durchführbar ist, eine Benutzerabfrage erfolgt (7), bei der der Benutzer diejenigen Dateien angeben kann, die zusätzlich zum Löschen markiert werden sollen.6. The method according to any one of claims 1 to 5, wherein, if after the threshold of the filling level no memory optimization is feasible, a user query takes place ( 7 ), in which the user can specify the files to be marked in addition to the deletion , 7. Verfahren nach einem der Ansprüche 1 bis 6, bei der am Anfang jeder Datei ein Dateianfangsetikett (I) und ein Segmentanfangsetikett (II) definiert ist und bei dem in jedem weiteren dazugehörenden Segment zwei Segmentanfangsetiketten definiert sind. 7. The method according to any one of claims 1 to 6, wherein in the beginning Each file has a preamble (I) and a Segment Header (II) is defined and where in each further associated segment two segment starting labels are defined.   8. Verfahren nach Anspruch 7, bei der das Dateianfangsetikett mit Nullen besetzt wird, und über die Besetzung der Segmentanfangsetiketten die Art der gespeicherten Daten gekennzeichnet wird.8. The method of claim 7, wherein the preamble with Zeros is filled, and over the occupation of the Segment preambles the type of data stored is marked. 9. Verfahren nach Anspruch 8, bei dem die markierten Segmente mit Nullen in den Segmentanfangsetiketten gekennzeichnet werden.9. The method of claim 8, wherein the marked segments with Zeroes in the segment preambles. 10. Verfahren nach Anspruch 1, bei dem zur Kennzeichnung von Dateien gleicher Art Zusatzinformationen am Anfang des ersten Segments einer Datei eingefügt worden.10. The method of claim 1, wherein for the marking of Files of the same kind Additional information at the beginning of the first Segments of a file have been inserted. 11. Programmodul für das Betreiben eines Flash-Speichers, der in Blöcke unterteilt ist, und dessen Blöcke in eine Vielzahl von Segmenten unterteilt sind, wobei ein zulässiger Füllgrad des Flash-Speichers, der sich aus der Anzahl von nicht belegten, belegten und zum Löschen markierten Segmenten und belegten, nicht markierten Segmenten eines jeden Block bestimmt, ermittelt wird, und eine Speicheroptimierung dann mittels Steuerbefehlen vorgenommen wird, in dem mittels eines Steuerbefehls veranlaßt wird, von Dateien belegte Segmente zu verschieben und in dem mittels eines Steuerbefehls verbleibende belegte, zum Löschen markierte Segmente gelöscht werden, oder
indem ein Block ermittelt wird, in dem sich keine belegten und nicht markierten Segmente befinden, der dann, veranlaßt durch einen Steuerbefehl, gelöscht wird, oder
indem der Block ermittelt wird, in dem sich die kleinste Anzahl an belegten, nicht markierten Segmenten befindet, die dann, veranlaßt durch einen Steuerbefehl in nicht belegte Segmente anderer Blöcke kopiert werden, oder
indem der Block ermittelt wird, in dem sich die kleinste Anzahl an belegten, nicht markierten Segmenten befindet, welche dann, veranlaßt durch einen Steuerbefehl, in markierten Segmenten anderer Blöcke zwischengespeichert werden und dann nach dem Löschen des ermittelten Blocks wieder rekonstruiert werden, oder
indem ein weiterer Steuerbefehl eine Benutzerabfrage veranlaßt, bei der der Benutzer zu löschende Dateien markieren kann.
11. Program module for operating a flash memory, which is divided into blocks, and whose blocks are divided into a plurality of segments, wherein a permissible degree of filling of the flash memory, which consisted of the number of unoccupied, occupied and for deletion marked segments and occupied, unmarked segments of each block is determined, and a memory optimization is then made by means of control commands in which is caused by a control command to move files occupied by files and occupied in the remaining by means of a control command, for deletion marked segments are deleted, or
by determining a block in which there are no occupied and unmarked segments, which is then cleared, caused by a control command, or
by determining the block in which there is the smallest number of occupied, unmarked segments, which are then copied, by a control command, into unoccupied segments of other blocks, or
by determining the block in which there is the smallest number of occupied, unmarked segments, which are then latched in marked segments of other blocks, prompted by a control command, and then reconstructed after clearing the determined block, or
by another control command causing a user query in which the user can mark files to be deleted.
12. Verwendung des Programmoduls nach Anspruch 11 zur Speicherung von Sprachnachrichten, insbesondere in einem Anrufbeantworter.12. Use of the program module according to claim 11 for storage of voice messages, especially in an answering machine. 13. Verfahren zum Betreiben eines Flash-Speichers, der in Blöcke unterteilt ist und dessen Blöcke in eine Vielzahl von Segmenten unterteilt werden, bei dem
  • - nach dem Überschreiten einer Schwelle eines Füllgrades, der sich aus der Anzahl der belegten und zum Löschen markierten, der belegten, nicht markierten und der nicht belegten Segmente eines jeden Blocks bestimmt, der Block ermittelt wird, in dem sich die kleinste Anzahl an belegten, nicht markierten Segmenten befindet,
  • - und die belegten, nicht markierten Segmente dieses Blocks mittels einer Verknüpfung auf zum Löschen markierte Segmente eines weiteren Blocks überschrieben werden,
  • - und dann der zuvor ermittelte Block gelöscht werden kann.
13. A method of operating a flash memory, which is divided into blocks and whose blocks are divided into a plurality of segments, in which
  • - after exceeding a threshold of a degree of filling determined by the number of occupied and marked for deletion, occupied, unmarked and unoccupied segments of each block, the block in which the smallest number occupied, unmarked segments,
  • - and the occupied, unmarked segments of this block are overwritten by linking to segments marked for deletion of another block,
  • - and then the previously determined block can be deleted.
14. Verfahren nach Anspruch 13, bei dem die Verknüpfung erfolgt, dadurch, daß eine logische UND-Verknüpfung zwischen Daten der belegten, nicht markierten Segmente und Daten in den zum Löschen markierten Segmenten vorgenommen wird. 14. The method according to claim 13, wherein the linking takes place, in that a logical AND between data of the occupied, unmarked segments and data in the for deleting marked segments is made.   15. Verfahren nach Anspruch 13, bei dem die Verknüpfung derart erfolgt, daß eine logische ODER-Verknüpfung zwischen Daten der belegten, nicht markierten Segmente und Daten in den zum Löschen markierten Segmenten vorgenommen wird.15. The method of claim 13, wherein the linkage such takes place that a logical OR between data of the occupied, unmarked segments and data in the for deleting marked segments is made. 16. Verfahren nach einem der Ansprüche 14 oder 15, bei dem mindestens eine weitere logische Verknüpfung der Daten der belegten, nicht markierten Segmente mit Daten mindestens eines weiteren, zum Löschen markierten Segments bis zur Erfüllung eines Endekriteriums vorgenommen wird.16. The method according to any one of claims 14 or 15, wherein at least one more logical connection of the data of the occupied, unmarked segments with data of at least one other segments marked for deletion until the fulfillment of one Final criterion is made. 17. Verfahren nach Anspruch 16, bei dem sich das Endekriterium daraus bestimmt, daß in einem Segment in einer Bitposition die Wiederholung mindestens eines Bitwertes auftritt.17. The method of claim 16, wherein the end criterion from this determines that in a segment in a bit position the Repetition of at least one bit value occurs. 18. Verfahren nach einem der Ansprüche 13 bis 17, bei dem die überschriebenen Daten des weiteren Blocks in dem zuvor ermittelten, gelöschten Block wieder rekonstruiert werden.18. The method according to any one of claims 13 to 17, wherein the overwritten data of the other block in the previously determined, deleted block to be reconstructed again. 19. Programmodul für das Betreiben eines Flash-Speichers, der in Blöcke unterteilt ist, und dessen Blöcke in eine Vielzahl von Segmenten unterteilt sind, wobei ein zulässiger Füllgrad des Flash-Speichers, der sich aus der Anzahl von nicht belegten, belegten und zum Löschen markierten Segmenten und belegten, nicht markierten Segmenten eines jeden Blocks bestimmt, ermittelt wird, und eine Speicheroptimierung dann mittels Steuerbefehlen vorgenommen wird, in dem mittels eines Steuerbefehls veranlaßt wird, von Dateien belegte Segmente zu verschieben und in dem mittels eines Steuerbefehls verbleibende belegte, zum Löschen markierte Segmente gelöscht werden, oder
indem ein Block ermittelt wird, in dem sich keine belegten und nicht markierten Segmente befinden, der dann, veranlaßt durch einen Steuerbefehl, gelöscht wird, oder
indem der Block ermittelt wird, in dem sich die kleinste Anzahl an belegten, nicht markierten Segmenten befindet, die dann, veranlaßt durch einen Steuerbefehl, in nicht belegte Segmente anderer Blöcke kopiert werden, oder
indem der Block ermittelt wird, in dem sich die kleinste Anzahl an belegten, nicht markierten Segmenten befindet, welche dann, veranlaßt durch einen Steuerbefehl, in markierten Segmenten anderer Blöcke zwischengespeichert werden und dann nach dem Löschen des ermittelten Blocks wieder rekonstruiert werden, oder
indem der Block ermittelt wird, in dem sich die kleinste Anzahl an belegten, nicht markierten Segmenten befindet, welche dann in verknüpfter Form auf Daten in zum Löschen markierte Segmente eines weiteren Blocks überschrieben werden und/oder
indem ein weiterer Steuerbefehl eine Benutzerabfrage veranlaßt, bei der der Benutzer zu löschende Dateien markieren kann.
19. Program module for operating a flash memory, which is divided into blocks, and whose blocks are divided into a plurality of segments, wherein a permissible degree of filling of the flash memory, which consisted of the number of unoccupied occupied and for deletion memory segments and occupied, unmarked segments of each block is determined, and a memory optimization is then made by means of control commands in which is caused by a control command to move files occupied by files and occupied in the remaining by means of a control command, for deletion marked segments are deleted, or
by determining a block in which there are no occupied and unmarked segments, which is then cleared, caused by a control command, or
by determining the block in which there is the smallest number of occupied, unmarked segments, which are then copied, caused by a control command, into unoccupied segments of other blocks, or
by determining the block in which there is the smallest number of occupied, unmarked segments, which are then latched in marked segments of other blocks, prompted by a control command, and then reconstructed after clearing the determined block, or
by determining the block in which there is the smallest number of occupied, unmarked segments which are then overwritten in a linked form to data in segments of another block marked for deletion and / or
by another control command causing a user query in which the user can mark files to be deleted.
DE4442127A 1994-09-30 1994-11-26 Method for memory management of a flash memory Withdrawn DE4442127A1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
DE4442127A DE4442127A1 (en) 1994-09-30 1994-11-26 Method for memory management of a flash memory
DE59500128T DE59500128D1 (en) 1994-09-30 1995-01-13 Memory management method for a flash memory
EP95100416A EP0704803B1 (en) 1994-09-30 1995-01-13 Flash memory management method
AT95100416T ATE149709T1 (en) 1994-09-30 1995-01-13 METHOD FOR MEMORY MANAGEMENT OF A FLASH MEMORY
ES95100416T ES2101584T3 (en) 1994-09-30 1995-01-13 METHOD OF MANAGING AN INSTANT MEMORY.
US08/536,852 US5933845A (en) 1994-09-30 1995-09-29 Flash memory management method including shifting or copying data to other blocks to optimize storage space and allow entire blocks to be erased
JP25542395A JPH08235880A (en) 1994-09-30 1995-10-02 Memory management method of flash memory

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE4435042 1994-09-30
DE4442127A DE4442127A1 (en) 1994-09-30 1994-11-26 Method for memory management of a flash memory

Publications (1)

Publication Number Publication Date
DE4442127A1 true DE4442127A1 (en) 1996-04-04

Family

ID=6529658

Family Applications (2)

Application Number Title Priority Date Filing Date
DE4442127A Withdrawn DE4442127A1 (en) 1994-09-30 1994-11-26 Method for memory management of a flash memory
DE59500128T Expired - Fee Related DE59500128D1 (en) 1994-09-30 1995-01-13 Memory management method for a flash memory

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE59500128T Expired - Fee Related DE59500128D1 (en) 1994-09-30 1995-01-13 Memory management method for a flash memory

Country Status (1)

Country Link
DE (2) DE4442127A1 (en)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3202495A1 (en) * 1982-01-27 1983-08-04 Licentia Patent-Verwaltungs-Gmbh, 6000 Frankfurt Process and device for monitoring a critical number of erase and/or write cycles of an electrically erasable, programmable read-only memory
DE3517087A1 (en) * 1985-05-11 1986-11-13 Neumann Elektronik GmbH, 4330 Mülheim Method of increasing the maximum number of possible programming/erasing cycles on an electrically erasable programmable read-only memory (EEPROM) and device for carrying out the method
EP0542156A2 (en) * 1991-11-15 1993-05-19 ALCATEL ITALIA S.p.A. Method of updating data stored in storage locations of a storage unit, in particular of a flash EPROM
EP0548681A2 (en) * 1991-12-20 1993-06-30 Sharp Kabushiki Kaisha Recording and reproducing apparatus provided with a batch erasable nonvolatile semiconductor memory device for batch erasing of specific data group(s)
DE4312928A1 (en) * 1992-04-21 1993-10-28 Vaillant Joh Gmbh & Co Optimum utilisation system for EEPROM in machine operation register - divides memory into management block having address counter and information blocks having write cycle counter holding cyclically updated time information.
US5305276A (en) * 1991-09-11 1994-04-19 Rohm Co., Ltd. Non-volatile IC memory
US5341332A (en) * 1992-05-12 1994-08-23 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device capable of flash writing and method of flash writing

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3202495A1 (en) * 1982-01-27 1983-08-04 Licentia Patent-Verwaltungs-Gmbh, 6000 Frankfurt Process and device for monitoring a critical number of erase and/or write cycles of an electrically erasable, programmable read-only memory
DE3517087A1 (en) * 1985-05-11 1986-11-13 Neumann Elektronik GmbH, 4330 Mülheim Method of increasing the maximum number of possible programming/erasing cycles on an electrically erasable programmable read-only memory (EEPROM) and device for carrying out the method
US5305276A (en) * 1991-09-11 1994-04-19 Rohm Co., Ltd. Non-volatile IC memory
EP0542156A2 (en) * 1991-11-15 1993-05-19 ALCATEL ITALIA S.p.A. Method of updating data stored in storage locations of a storage unit, in particular of a flash EPROM
EP0548681A2 (en) * 1991-12-20 1993-06-30 Sharp Kabushiki Kaisha Recording and reproducing apparatus provided with a batch erasable nonvolatile semiconductor memory device for batch erasing of specific data group(s)
DE4312928A1 (en) * 1992-04-21 1993-10-28 Vaillant Joh Gmbh & Co Optimum utilisation system for EEPROM in machine operation register - divides memory into management block having address counter and information blocks having write cycle counter holding cyclically updated time information.
US5341332A (en) * 1992-05-12 1994-08-23 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device capable of flash writing and method of flash writing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
5-189000 A., P-1642,Nov. 17,1993,Vol.17,No.614 *
JP Patents Abstracts of Japan: 5-282889 A., P-1688,Febr. 7,1994,Vol.18,No. 74 *

Also Published As

Publication number Publication date
DE59500128D1 (en) 1997-04-10

Similar Documents

Publication Publication Date Title
EP0704803B1 (en) Flash memory management method
EP0703534B1 (en) Computer memory management system
DE2521436C3 (en) Information retrieval arrangement
EP0857345A1 (en) Process and circuit arrangement for storing dictations in a digital dictating machine
DE2551239C3 (en) Data processing system
DE3390315T1 (en) Adaptable division of a cache space into domains
DE2647574C2 (en) Device for processing data field segments of variable length, delimited by a start and end character, in a circular memory
DE602004008240T2 (en) Method for managing defective memory blocks in a non-volatile memory and non-volatile memory for carrying out the method
DE3804261C2 (en)
DE2801982A1 (en) PROCEDURE FOR EXCHANGE OF INFORMATION BETWEEN AN EXTERNAL MEMORY AND A WORKING MEMORY IN A TEXT PROCESSING SYSTEM
DE10192507B4 (en) Method and apparatus for the prediction of erase and write times of flash memories
DE4442127A1 (en) Method for memory management of a flash memory
EP1332501B1 (en) Memory management logic for expanding the utilization of read-only memories
DE2262059A1 (en) DICTATION DEVICE
EP1559111B1 (en) Method for operating a memory arrangement
DE1774212B2 (en) EN 20417 08/12/67 "37132 BEZ: DATA PROCESSING SYSTEM
EP1625592A1 (en) Device and method for treating a state of a memory
DE3541114C2 (en)
DE10128752A1 (en) Storage of data in computer memory, especially EEPROM or flash memory by writing data to memory in pages, whereby each page contains a value and a reference to the next page in the chain
DE19738712C2 (en) Non-volatile memory with memory cells combined into subblocks
DE10144077A1 (en) binary counter
DE10064649A1 (en) Interface for a memory and method for variably configuring a memory device
DE2351523C3 (en) Capacitive storage device for binary coded data
DE102005011477A1 (en) Instruction set producing method for automatic updating of vehicle`s data memory, involves arranging negative block of instructions in source contents in reference direction, and positive block of instructions in opposition to direction
DE2302379B2 (en) CIRCUIT ARRANGEMENT FOR PERFORMING SEQUENTIAL INPUT / OUTPUT OPERATIONS IN A DATA PROCESSING SYSTEM WORKING WITH VIRTUAL ADDRESSING

Legal Events

Date Code Title Description
OM8 Search report available as to paragraph 43 lit. 1 sentence 1 patent law
8139 Disposal/non-payment of the annual fee