US20150277786A1 - Method, device, and program for managing a flash memory for mass storage - Google Patents

Method, device, and program for managing a flash memory for mass storage Download PDF

Info

Publication number
US20150277786A1
US20150277786A1 US14/432,373 US201314432373A US2015277786A1 US 20150277786 A1 US20150277786 A1 US 20150277786A1 US 201314432373 A US201314432373 A US 201314432373A US 2015277786 A1 US2015277786 A1 US 2015277786A1
Authority
US
United States
Prior art keywords
written
data
flash memory
sectors
erased
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.)
Abandoned
Application number
US14/432,373
Other languages
English (en)
Inventor
Lars Rostock
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.)
Unify GmbH and Co KG
Original Assignee
Unify GmbH and Co KG
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 Unify GmbH and Co KG filed Critical Unify GmbH and Co KG
Assigned to UNIFY GMBH & CO. KG reassignment UNIFY GMBH & CO. KG ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ROSTOCK, LARS
Publication of US20150277786A1 publication Critical patent/US20150277786A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Definitions

  • Embodiments provide methods for managing a flash memory that is comprised by a communication device that can be connected to a host and onto which data to be stored are written for mass storage.
  • the invention further pertains to a computer program product for executing such a method.
  • Mass storage devices can be a USB memory stick (USB: Universal Serial Bus), memory cards, e.g., for digital cameras, mobile telephones, or multi-media playback devices, or in the form of an SSD (SSD: Solid State Disk).
  • a mass storage device includes a unit with the function of a memory controller and one or more non-volatile memory chips.
  • Memory chips can be so-called flash EEPROM (Electrically Erasable Programmable Read-Only Memory) semiconductor memories, which need no power supply to maintain stored information.
  • flash types which differ depending on the architecture and memory method chosen. Architecture hereinafter is understood to mean the arrangement of storage cells in the memory chip. The chosen memory method hereinafter is understood to mean the number of voltage levels used for storage within a storage cell. Examples of flash types are NOR Flash, NAND SLC (Single-Level Cell), or NAND MLC (Multi-Level Cell).
  • the storage units to be written to must first be erased. Erasing the individual storage units, each of which includes at least one storage cell for storing one bit that can have the logical value “0” or “1”, is possible only in areas larger than the written areas, so called blocks, also called erase blocks.
  • a block hereinafter is defined as the smallest volume in bytes on the flash memory that can be erased only as a unit.
  • One block includes 2 z bytes (z>13). Typical block sizes for storing data in kbytes are 8, 16, 32, 64, 128, or 256 kb.
  • the unit for writing to or writing on storage cells of the flash memory that is smaller than a block is defined as the smallest volume in bytes on the flash memory that can only be written as a unit.
  • the size of the blocks, also called erase units, and of the write units depends on the type and size of the flash EEPROM.
  • a NOR flash has block sizes between 8 kb and 256 kb, typically 64 kb, wherein a write unit is 1 byte.
  • Smaller NANO flash memories are available with a block size of 16 kb for a write unit of one page with 512 bytes.
  • Larger NAND flash memories with 128, 512, or 2048 kb block sizes use pages with a (page) size of 2, 4, or 8 kb.
  • the maximum possible number of erase and write operations per unit is limited according to technical factors and depends on the type of flash memory. Erasing sets the individual bits in the memory chip to the value of “1,” while writing sets the bits to the value of “0.” In order to achieve uniform “wear” and lifespans of the individual memory locations, all bits are programmed to the value of “0” before erasing, so that they can then be set to the value of “1” when erasing occurs. Thus, smaller NAND flash memories are written in write units with 512 bytes while only erased in blocks of 16,384 bytes (16 kb).
  • the smallest data volume used by the host or host system when writing depends on the size of a sector, which is defined as the smallest unit processed all at once in a host's or host system's file system.
  • a working memory and/or flash memory is able to process, at least in principle, a sub-area of this smallest unit of a sector.
  • Sectors include memory sizes of 2 z bytes with z>3, typically 512 bytes.
  • USB mass storage device such as a USB memory stick
  • flash memories If one wishes to equip a USB mass storage device, such as a USB memory stick, with flash memories, one encounters the aforementioned problem of asymmetrical memory sizes for erasing and writing, because common file systems, such as FAT (File Allocation Table), FAT32, etc., use sectors with a 512 byte size, which corresponds to the size of the write unit in a smaller NAND flash memory.
  • FAT Fe Allocation Table
  • OSI 7-layer model Open Systems Interconnection Reference Model
  • TEM command see WO 2012/062233
  • the mass memory function can be implemented without difficulty.
  • the separate memory controller of the mass storage device with the aforementioned expensive control method and a table used to link the addressed logical units on the interface to the host with the physical units used in the flash memory can be omitted.
  • FIG. 1 shows a communication device 2 that is connected to a host 1 and on which a flash memory 9 as a mass storage device is used not as the main data storage system but as an auxiliary system.
  • the communication device has an operator terminal in the form of a keyboard 3 , wherein indicated operating statuses of the communication device 2 are displayed to a user on a display 4 . Entries of commands via the keyboard and/or other operating elements as well as displays of the operating status of the communication device 2 on the display 4 represent the main function of the communication device 2 .
  • the flash memory 9 is used on the communication device 2 , for example, to store configuration data and/or voice-dependent text that are to be displayed on the display 4 .
  • display text in different languages e.g., German, English, French, etc.
  • display text in different languages can be placed in the flash memory 9 , wherein a user chooses a certain language, such as German, when configuring the communication device 2 .
  • the display texts in the languages other than German are then stored on the flash memory 9 as a mass storage device, although they are not used in that configuration.
  • FIG. 2 shows a simplified implementation of the function of a mass storage devices.
  • the “NOR Flash” flash memory 9 has no memory controller of its own, but instead is managed through a main processor 6 , also called a CPU (Central Processing Unit).
  • the main processor 6 receives commands intended for the flash memory 9 from the host 1 and performs reading, writing, or erasing operations. To establish the functionality of the main processor 6 , it is connected to a program memory 8 and a working memory 7 , for example RAM (Random Access Memory).
  • the display 4 and keyboard 3 are connected to the main processor 6 .
  • the host 1 is connected to the main processor 6 through a host interface 5 , which in the case of the communication device 2 shown in FIG. 2 is located in the communication device 2 .
  • the storage units and/or memory areas/memory sectors on the flash memory 9 addressed by the host 1 are addressed directly on the flash memory 9 without converting logical into physical units.
  • sectors of the file system on the host 1 i.e., sectors on the host 1 , that should be written into the flash memory 9 are written to the positions in the flash memory 9 where the host 1 has provided for these sectors to be written.
  • a simple method for storing the data from the host 1 in the flash memory 9 is shown at various points in time in the direction of the arrow designated “t” in FIG. 3 .
  • a block 10 of the flash memory 9 there are storage units in the form of memory sectors S 1 to SN, in each of which one sector 1 to N is saved at a point in time t 1 .
  • the sectors 1 to N from block 10 stored in the storage units S 1 to SN, are copied 11 into the working memory 7 .
  • the sectors 1 to N stored in the block 10 at the point in time t 1 are saved into the working memory 7 at a point in time t 2 .
  • the block 10 in which the new sector SS 1 to be stored is located, must be erased before this sector SS 1 is written to.
  • the data from the storage units that are not affected by writing in the block 10 that is to be written to must not be changed and must remain stored.
  • the data in the form of sectors 1 to 10 from the complete block 10 are loaded 11 into the working memory 7 .
  • the working memory 7 is changed 13 at point in time t 4 by having the new sector SS 1 written to it.
  • the block 10 is erased 12 at point in time t 3 .
  • the blocks 10 in step 12 are erased, only erased storage units with erased storage cells SG remain in the block.
  • the completely erased block 10 is programmed 14 with the data stored in the working memory 7 , including the new sector SS 1 .
  • the block 10 is thus programmed with the data content from sectors 1 to N, wherein one of the sectors is replaced by the new sector SS 1 .
  • N represents not only the last sector in block 10 but also the number of sectors in the storage units S 1 to SN per block 10 to be programmed.
  • the operations “copy the sectors 1 to N to the working memory 7 , 11 ” and “program the new sector SS 1 in the working memory 7 , 13 ” take only a fraction of the time needed for the operations “erase block 10 , 12 ” and “program the sectors 1 to N in the block 10 , 14 .”
  • the operations 11 and 13 can thus be omitted.
  • FIG. 1 a typical communication device that includes a flash memory 9 ,
  • FIG. 2 the typical communication device shown in FIG. 1 , wherein the flash memory is managed by a main processor that is connected to a host through an interface,
  • FIG. 3 a typical method for storing a sector in a flash drive
  • FIGS. 4 a and 4 b a typical method for storing multiple sectors in a flash memory
  • FIGS. 5 a and 5 b a first embodiment of the invented method for storing multiple consecutive sectors in a flash memory
  • FIGS. 6 a and 6 b another embodiment of the invented method for storing specific sectors of a host in a flash memory
  • FIGS. 7 a and 7 b another exemplary embodiment of the invented method for rewriting specific sectors of a host in a flash memory by means of inversion
  • FIGS. 8 a and 8 b each shows a table for comparing the methods illustrated in FIGS. 4 to 7 , referencing the number of erasure operations ( FIG. 8 a ) and referencing the number of programming operations ( FIG. 8 b ).
  • FIGS. 4 a and 4 b show the case in which multiple sectors SS 2 , SS 3 are written by the host 1 into block 10 of the flash memory 9 .
  • the status of the block 10 is assumed to be as of the point in time t 5 according to FIG. 3 .
  • the sectors 1 to N are recopied 11 from the block 10 to the working memory 7 , so the memory status in the working memory 7 at the point in time t 6 corresponds to the point of time t 4 according to FIG. 3 .
  • the block 10 is erased again at the point in time t 7 , so that all of the storage units exist in the block 10 as erased storage units SG.
  • the new sector SS 2 is programmed 13 next to the new sector SS 1 in the working memory 7 , wherein at the point in time t 8 in the working memory 7 , the new sectors SS 1 and SS 2 are stored and replace the previously stored sectors of the sectors 1 to N.
  • the sectors 1 to N including the new sectors SS 1 and SS 2 , are programmed 14 , 15 into the erased block 10 , so that at the point in time t 9 the block 10 contains the new sectors SS 1 and SS 2 together with the sectors 1 to N, see FIG. 4 b .
  • the total content of the block 10 is copied 11 back into the working memory 7 , and after that the block 10 is completely erased at the point in time t 11 .
  • the stored content of the working memory 7 at the point in time t 10 including the new sectors SS 1 and SS 2 , is increased when the new sector SS 3 is stored at the point in time t 12 .
  • three of these sectors are replaced by the new sectors SS 1 to SS 3 .
  • the storage content of the working memory 7 is programmed 14 , 15 by programing the updated sectors 1 to N in the erased block 10 , wherein in the block 10 the sectors 1 to 10 are programmed, including the new sectors SS 1 to SS 3 in place of three sectors out of the sectors 1 to N. If the host 1 wants to write multiple sectors 1 to N into the flash memory 9 , the steps shown in FIG. 3 must be repeated for each of the sectors SS 1 , SS 2 , SS 3 to SSN to be written.
  • each of the storage units S 1 to SN matches the size of each of the sectors 1 to N, for a sector size of 512 bytes and a block size of 16 kb the following numbers result for the operations required for storage:
  • FAT file allocation table
  • intermediate memories in which data to be written are first stored until they are later written to the flash memory. If, in the interim period between storage and writing of the flash drive, additional data to be written for the same block arrive in the intermediate memory, these data can be combined with the temporarily stored data, and the affected block only has to be erased and written once.
  • FIGS. 4 a and 4 b Another alternative for preventing numerous block erasures and sector programming procedures as shown in FIGS. 4 a and 4 b , consists in the use of complex file systems such as the TFFS (True Flash File System).
  • TFFS True Flash File System
  • data are distributed in the flash memory such that erasure and rewriting are not necessary until the affected block contains no data, i.e., is not in use.
  • the logical allocation of the data to the actual physical storage location in the flash memory is accomplished using translation tables.
  • a block cannot be erased until all 10 data in the block are marked as “expired.” Erasure then occurs, if the memory controller that contains and operates the translation table is not busy with reading, erasing, and writing operations.
  • An objective of the invention is to provide a method for managing a flash memory, with which data from a host can be stored easily and efficiently in the flash memory.
  • the number of erasure and writing operations required for storage should be reduced without the need to use an intermediate memory and/or separate memory controller with a translation table.
  • the flash memory is divided into blocks that contain storage units.
  • a written storage unit can only be rewritten if all storage units in the block of the storage unit to be written to are erased before the storage unit is written to.
  • the flash memory is managed in such a way that at least some of the storage units to be written to, whose data are the same after writing as they were before writing, are neither erased nor written to, and at least some of the erased and to be written storage units, whose data are different after writing compared to before writing, are written to with the data to be stored without re-erasing.
  • Such management of the flash memory is made possible by using the flash memory as an auxiliary system of the communication device, wherein a separate memory controller is not necessary. Execution of the invented method also does not require an intermediate memory and/or memory controller with a translation table. Management of the flash memory therefore does not require any information about the logical content of the host's data to be written other than the bit level, in which the individual data bits can have a content with the value “0” or “1.” One byte consists of eight bits.
  • Each bit can have the value of “0” or “1.”
  • the eight bits of an erased byte all have the value of “1,” so that the byte has the binary value of “11111111.”
  • This value corresponds in binary notation to the value “0b11111111” or in hexadecimal notation to the value “0xFF.” It is therefore possible for management of the flash memory to be based simply on whether data to be written have bytes with a value unequal to “0xFF.”
  • This information can result from analysis of values at the level of individual bits, i.e., at the bit level. Alternatively or additionally, this information can result at the level of individual bytes, i.e., at the byte level.
  • the flash memory management must therefore be based simply on distinguishing whether the value of each byte of data to be written differs from the value of each byte of the erased and to be written storage units. If the data to be written differ from the values of the individual bytes of the data in the erased storage units, re-erasure of the storage units can be eliminated and the data can be written in the storage units to be written to. However, if the data to be written do not differ from the data in the storage units to be written to, storage in the storage units to be written to can be omitted, because the values of the individual bytes of the storage units to be written to are the same as the values of the individual bytes of the data to be written to the storage units.
  • a flash memory can be a Flash EEPROM semiconductor memory, for example. Flash memory types such as NOR Flash, NAND-SLC, or NAND-MLC can be used as Flash memories.
  • the communication device can be a computer, mobile telephone, tablet PC, PDA (Personal Digital Assistant), smart phone, or other communication device that contains the flash memory.
  • the flash memory can be used as an auxiliary system, thereby eliminating an intermediate memory or memory controller, as in the communication device shown in FIGS. 1 and 2 , for example, or can be used as the main system of a communication device, wherein an available intermediate memory and/or memory controller is included as a separate assembly.
  • the communication device cannot be a terminal, but rather the communication terminal itself can act as a server, in the form of a desktop PC or laptop, for example. Because, for data that are the same after writing as before writing, neither erasure nor writing to the storage units to be written to occurs, and because, for all or part of erased and to be written storage units, re-erasure is eliminated and only data that differ from the data on all or a portion of the erased storage units are written, unnecessary erasure and/or writing operations are eliminated. In this way the number of erasure and writing/programming operations needed to store data in the flash memory is reduced, which is expressed in a lower reaction time for storage and an increased lifespan of the flash memory.
  • any delay of the erasure and/or writing operations is limited to comparing the content of the data to be written with the content of the storage units to be written to at the individual byte level, and an intermediate memory and/or a memory controller separate from the main processor of the communication device can be eliminated, the response time for storing data is reduced, maximizing the overall performance of the flash memory.
  • the communication device is connected to the host via an interface, and information about the volume of data to be transferred from the host to the flash memory is called up by the communication device from the interface and used to manage the flash memory.
  • the host's interface has information about the volume of data to be transferred from the host to the flash memory. These data are called up from the interface and used to manage the flash memory, wherein storage units that will not have new data written to them in a writing process, after erasure of the block in the flash memory will not be rewritten with the data stored in the storage unit, but rather will be left in erased status until the new data are to be written to the storage units in a later writing process.
  • Using the information contained in the interface regarding the volume of data to be stored it is then possible, by means of a writing process, to reserve storage units that are erased for the arrival of new data, so that they are not overwritten with data already stored in the storage unit.
  • the information about the data to be transferred from the host to the flash memory is in a mass storage protocol, in particular a USB mass storage protocol.
  • the mass storage protocol has information, for example, about how many of the host's sectors in the flash memory need to be written to. This information is passed on to a writing function of the flash memory. The writing function then prevents just-erased storage units from being written to with data that will be overwritten in a subsequent writing process. These storage units thus remain in erased status, so that only new data are programmed in the flash memory, without having to re-erase the storage units to be programmed before new data are written to them.
  • the information about the data to be transferred from the host to the flash memory is specifically in a USB mass storage protocol. The information is therefore in the host's interface independently of any intermediate memory or memory controller.
  • information about the number of consecutive storage units to be written to, in which the data to be transferred are to be written is provided by the interface.
  • the interface With the information about the number of storage units to be written to consecutively, adjacent areas of a block on a flash memory to be written with new data can be held or reserved for consecutive writing operations. Because the size of the data content of a sector belonging to the host must be known in the interface for transferring the data, the number of storage units to be written to consecutively can be calculated just from the volume of sectors to be written to in the flash memory.
  • additional information about a number of storage units following the first storage unit is provided by the interface.
  • the host wants to write to a certain number of sectors in the flash memory, whose size corresponds to that of a certain number of storage cells in a storage unit
  • the host gives the command via the interface to the flash memory to write to the first sector in the flash memory with the additional information that when there are M sectors to be written to, M ⁇ 1 sectors remain after them.
  • the block of the flash memory in which the first sector is to be written to a portion of the storage cells in the storage unit of the block must be erased before the sector is written, because only complete blocks can be erased.
  • the data from the storage units that are not affected by writing as part of a writing process in this block must not be changed during the writing process and must remain stored.
  • the data from the entire block are temporarily stored, for example in a working memory of the communication device, the data to be written are attached to the temporarily stored data by replacing a portion of the temporarily stored data, the entire block in the flash memory is erased and reprogrammed with the temporarily stored data that include the data to be written.
  • data that must remain unchanged are programmed into the flash memory, i.e., the sectors before the first sector S, as well as the sectors starting with the sector S+M, wherein the first sector S itself, which already contains new data, is also programmed.
  • data to be written that are transferred by the host into at least one storage unit of a block in the flash memory are inverted before the at least one storage unit is written.
  • the value “0xFF” can be generated by inversion, which corresponds to the value of erased, unwritten storage units in the flash memory. The inversion causes every bit with the value of “0” to be transformed to the value of “1” and vice versa.
  • unused areas of the file system that have the value “0x00” become areas with the value “0xFF.” Because the value “0xFF” of a byte in the flash memory corresponds to the erased, not written status, the unused areas of the file system must no longer be programmed after the inversion. Only when the content of the file system in this area is changed and contains values other than “0x00” must this area also be programmed in the flash after the inversion. Then, however, no erasure is necessary before programming, because the erased area still contains the erased bytes with the value “0xFF” and can be overwritten without prior erasure.
  • the value “0” corresponds to the hexadecimal value “0x00,” wherein, for example, both copies of a file allocation table FAT have the value “ 0 ” at the unused locations.
  • Unused parts of the file system are often written to without being changed.
  • writing means an erasure and new programming of the storage units.
  • By inverting the unused areas of the file system the value of these areas is inverted into the value of erased, unwritten areas of the flash memory. Because of this adaptation of the values of unused areas of the file system to the values of erased storage units, programming of these areas is no longer necessary.
  • This exemplary embodiment therefore includes an additional reduction of erasure and/or writing operations.
  • the data for all storage units are inverted.
  • This embodiment has the disadvantage that, for used areas of the file system that do not have the value “0x00,” one must invert in order to be able to use these data when reading from the flash memory.
  • the exemplary embodiment has the advantage that the flash memory requires no information about the logical content of the data to be stored.
  • the “data inversion” operation like the operations “copy sectors 1 to N,” 11 , see FIGS. 3 , 4 a , and 4 b and “program new sectors in the working memory, 13 , see FIGS. 3 , 4 a , and 4 b ,” is omitted, because they require only a fraction of the time needed to erase the block 12 and program the block 14 .
  • unused bytes of the host's data that are to be written to the flash drive have the hexadecimal value 0x00 when placed in the interface, have the hexadecimal value 0xFF of an erased byte in the flash memory after inversion, and, instead of writing the hexadecimal value 0xFF into an erased storage unit, the erased storage unit is kept in its erased status without re-erasing.
  • this invention also includes a computer program product for executing such a method.
  • the computer program product can consist of software, for example.
  • the computer program product can be stored as binary data on a floppy disk, DVD, CD-ROM, or memory card.
  • the computer program product can also consist of printed source code.
  • the invention also includes a communication device on which the computer program product is installed.
  • the communication device has the corresponding functions and advantages of the invented method for managing a flash memory and can be a desktop PC, laptop, server, landline telephone, mobile telephone, smart phone, or tablet PC.
  • the host to which the communication device can be connected can be a server or another host.
  • the host can be a group and/or network of networkable computers in the form of a host system.
  • the host can also be on the Internet or an Ethernet.
  • FIGS. 5 to 8 For better illustration, a scale or true proportional representation is not used in the figures. Unless specifically stated otherwise, the same reference numbers in the figures denote the same components with the same meaning as the references mentioned in FIGS. 1 to 4 b that have already been discussed.
  • FIGS. 5 a and 5 b show the invented method in a first embodiment in which multiple consecutive sectors SSN, SS 1 N, SSMN are to be stored in the block 10 of the flash memory 9 .
  • sectors 1 to N are stored in the storage units S 1 to SN of block 10 .
  • the sectors 1 to N are copied 11 into the working memory 7 , so that at the point in time t 2 , the sectors 1 to N are stored in the working memory 7 .
  • the block 10 is entirely erased, so that each of the storage units S 1 to SN is in erased status SG.
  • the steps of the method from the points in time t 1 to t 3 are the same as those shown in FIG. 3 .
  • M sectors are to be programmed by the host 1 into the flash memory 9 . These M sectors are divided into the sector S new, SSN, the sector S+1 new, SS 1 N, additional sectors, and the sector S+M- 1 new, SSMN, wherein M is a whole number. Instead of writing only the first sector SSN to be written to the working memory, as shown in FIG. 3 at point in time t 4 , through the interface 5 the first sector SSN to be written and a piece of information IN 1 are sent to the communication device 2 , indicating that M ⁇ 1 sectors to be written to the flash memory 9 are still to come.
  • the communication device 2 or the controller of the flash memory 9 thereby use the piece of information IN 1 , that M ⁇ 1 sectors remain to be written into the flash memory 9 , for writing to the block 10 in such a way that the sectors SS 1 N to SSMN not yet written to the block 10 of the flash memory 9 are reserved as the erased area SSG in the block 10 .
  • the working memory 7 is written to with the next sector S+1 new, SS 1 N, to be written, wherein through the interface 5 , together with the next sector SS 1 N to be written, the piece of information IN 2 has been sent to the communication device 2 indicating that M ⁇ 2 sectors remain to be written to the block 10 .
  • the piece of information IN 2 is sent to the controller of the flash memory 9 , which is managed by the main processor 6 in the communication device 2 shown in FIG. 2 . Therefore, only the new sector S+1 new, SS 1 N, is programmed 24 into the block 10 , whereby the block 10 has stored the second new sector SS 1 N together with the first new sector SSN at the point in time t 23 . According to the chronological sequence that is represented in FIGS.
  • the method for storing individual new sectors continues from the interface 5 to the working memory 7 and from there to the block 10 , as shown by the indication “etc.” and the arrow 25 in FIG. 5 a .
  • this sector is stored 21 into the working memory 7
  • the last new sector S+M ⁇ 1 new, SSMN, to be stored in the flash memory 9 is stored in the last remaining storage unit, which is in erased status SG, in the area of erased units SSG.
  • the reserved erased area SSG is allocated in such a way that this erased area is adequate for all of the M sectors to be written to the block 10 .
  • it is necessary to send only the piece of information IN 1 , that M ⁇ 1 sectors remain to be written to the memory, while the piece of information IN 2 , indicating that M ⁇ 2 sectors are to be written to the flash memory 9 can be omitted.
  • the host 1 wants to write a certain number of consecutive sectors M into the flash memory 9 , and these sectors to be written are all to be written to storage units of a block 10 , then the block 10 in the flash memory 9 has to be erased once and N storage units have to be programmed into the flash memory 9 . If the consecutive sectors are distributed to multiple blocks, as is the case when the sum of the numbers S and M is greater than the number N of storage units in the block, then all blocks B that are to be used for storage must be erased once, and BxN sectors are to be programmed into the flash memory 9 . In this regard it is assumed that the data volume of one storage unit corresponds to the data volume of one sector.
  • FIGS. 6 a and 6 b show the invented method in a further embodiment, in which specific sectors of the host 1 will be written into the flash memory 9 . As illustrated in FIGS.
  • the block 10 which at point in time t 1 includes the sectors 1 to N in the storage units S 1 to SN, is entirely copied 11 into the working memory 7 , and then the block 10 is entirely erased at point in time t 3 , so that all storage units S 1 to SN in the block 10 are then in erased status SG.
  • the host 1 wants to write a FAT or a list with M sectors into the flash memory 9 .
  • the host issues a command through the interface 5 to the controller of the flash memory 9 to write the first of the M sectors, which includes a first sub-area SA and a second sub-area U, to the block 10 with the additional information IN 1 , indicating that M ⁇ 1 sectors remain to be stored.
  • the piece of information IN 1 added to the sub-areas SA and U of the first sector to be written is generated by the interface 5 using information from the host 1 on how many sectors are to be written.
  • the data contained in the sub-areas SA and U to be stored, of the first sector to be stored are inverted 31 .
  • the first sub-area SA of the first sector to be written is inverted into the first sub-area SAI, wherein the unused second sub-area of the first sector U to be stored, which contains the hexadecimal value 0x00, inverts into the second sub-area G of the first sector to be written, which after the inversion has the hexadecimal value 0xFF.
  • the first sector to be written, inverted in this manner is then programmed into the working memory 7 as the inverted first sub-area SAI and as the second inverted sub-area G at the point in time t 30 .
  • the sectors 1 to S ⁇ 1, the inverted sector S to be written with the sub-areas SAI and G and the sectors S+M to N are programmed 32 into the block 10 .
  • the data that must remain unchanged are programmed into the flash memory 9 , which involves all sectors that precede the sector S, as well as the sectors that follow the sector S+M, as well as the first sector to be written itself, which contains the new inverted data.
  • the block 10 which contains the unchanged sectors 1 to S ⁇ 1 and S+M to N, there is an erased area SMG available for the host's additional sectors to be stored.
  • the first sector to be stored only data that differ from the value 0xFF for erased data in the storage units of the block 10 are stored in the block 10 . Then only the first sub-area of the first sector to be stored, SAI, is stored in the block 10 , and the second inverted sub-area G of the first sector to be stored is not programmed into the block 10 , because its value matches the content of the erased storage units 0xFF.
  • the second sector S 1 L that follows the first sector to be written is a so-called “empty” sector, because the data in this sector contain unused bytes with the value of 0, which corresponds to the hexadecimal value of 0x00.
  • the sector S 1 L is inverted 31 and stored in the working memory 7 as the inverted sector S 1 L 1 . Additionally, the interface sends the piece of information IN 2 , indicating that M- 2 sectors remain to be stored in the flash memory 9 , to the controller of the flash memory 9 . Because the second sector S 1 L 1 to be written after inversion has only the hexadecimal value 0xFF, which matches the content of the storage units in the erased status SG of the erased area SMG, this sector is not programmed 34 into the block 10 . Instead, the block is in the same status at the point in time t 33 as at the point in time t 31 . Because the content of erased storage units matches the content of the second sector S 1 L 1 to be written, no data content is lost by not programming the inverted second sector S 1 L 1 to be written.
  • subsequent sectors are transferred from the host 1 to the interface 5 , they are programmed into the already erased area SMG in the flash memory 9 only if they contain data that differ from unused data with the value of 0, which corresponds to the hexadecimal value of 0x00.
  • these sectors are “empty,” i.e., contain only bytes with 0x00, due to inversion these areas become areas in which all bytes contain the value of 0xFF, which correspond to the content of erased storage units in the erased area SMG of the flash memory.
  • These “empty” sectors are therefore not programmed into the flash memory.
  • the last sector S 1 ML to be stored is also a sector that contains only unused bytes with the value of 0.
  • this sector is the inverted sector S 1 MLI with the value 0xFF in the working memory 7 at the point in time t 34 .
  • the inverted last sector S 1 MLI to be written has the same data content as the erased area SMG in the block 10 , there is no programming step for writing the sector S 1 MLI to the block 10 , 36 .
  • the erased storage range S 1 MLG of the erased area SMG matches the data content of the last inverted sector S 1 MLI to be written.
  • a programming step is omitted according to the invention, because the data in erased storage units and the inverted data from sectors with unused data match each other.
  • a reverse inversion is necessary, which is another inversion, but the time and calculation effort for the inversion is negligible compared to the time and calculation effort for programming and can be disregarded.
  • FIGS. 7 a and b illustrate another embodiment of the invented method, in which specific sectors of the host 1 are repeatedly written into the flash memory 9 .
  • the initial status of the block 10 is assumed to be the status at the point in time t 33 as shown in FIGS. 6 a and 6 b .
  • M sectors are to be written into the flash memory 9 again.
  • the first sector to be written includes a first sub-area SA and a second sub-area BE, as well as a second sector S 1 N to be written.
  • the additional sectors to be written are so-called “empty” sectors, which contain only unused data.
  • the last “empty” sector to be written is the sector S+M- 1 , S 1 ML.
  • the interface After sending the sectors to be written to the interface 5 , 37 , the interface sends the first sector to be written with the sub-areas SA and BE as well as the piece of information IN 1 , indicating that M ⁇ 1 sectors remain to be written, to the controller of the flash memory. Then the first sector to be stored, with the sub-areas SA and BE, is inverted and stored in the working memory 7 at the point in time t 35 as inverted sub-areas SAI and BEI.
  • the second sub-area BEI is programmed into the block 10 as the rest of the first sector S to be written, wherein no erasure of the storage units of the block 10 is necessary, 39 .
  • the previously erased area STG in the block 10 is replaced by the inverted second sub-area of the first sector to be written BEI.
  • the second sector S 1 N to be written is read 40 from the file system of the host 1 and sent to the controller of the flash memory by the interface 5 , together with the piece of information IN 2 , indicating that M ⁇ 2 sectors remain to be stored.
  • this sector is stored as the inverted sector S 1 NI in the working memory 7 at the point in time t 37 .
  • the second sector to be stored is programmed in inverted form S 1 NI into the previously erased area SMB of the block 10 .
  • the inverted sub-areas of the first sector to be written, SAI, BEI, and the inverted second sector to be written S 1 NI are programmed into the block 10 .
  • this last sector S 1 ML is a so-called “empty” sector, which, after inversion, 31 , is programmed into the working memory at the point in time t 38 as an inverted sector S 1 MLI.
  • the block 10 includes additionally only the inverted second sub-area BEI of the first sector to be written and the inverted second sector S 1 NI to be written.
  • the exemplary embodiment shown in FIGS. 7 a and b illustrates the case in which the host wants to update a FAT or list in such a way that portions with existing data remain unchanged and additional data are added into previously erased areas.
  • the areas of the block 10 that remain unchanged are occupied by the sectors 1 to S ⁇ 1 and S+M to N.
  • the erased area that is to be occupied by additional data is the area SMG. Because the data already located in the flash memory 9 are partially unchanged, but instead only previously erased areas are written with new data, the block 10 of the flash memory 9 does not need to be entirely erased before being written to.
  • the data from the entire block 10 are loaded into the working memory 7 , the data transferred by the host for the sectors to be written are placed into the working memory 7 after inversion and are not programmed into the flash memory 9 unless they differ from the erased areas of the flash memory. In the exemplary embodiment from FIGS.
  • FIG. 8 a shows an overview in table form of the number of erasure operations 50 for the method as executed in FIGS. 4 to 7 , 51 . It is assumed that one block has 32 storage units capable of storing one sector each. It is therefore assumed that 32 sectors can be stored in one block. For a 4-kb file, which means 8 sectors and is stored in 2 blocks, 52 , the usual method as executed in FIG. 4 involves 4 to 8 erasure operations, 12 , in each of which one block is to be erased entirely. The reason for this is that, even when programming only one individual sector in the block, the entire block first has to be erased. In contrast to what is shown in FIG. 4 , when executing the invented method as in FIGS.
  • the block in which data are to be written is erased only once. Because the 8 sectors are to be written to 2 blocks, only 2 erasures, 54 , 56 , of entire blocks are required, as compared to 8 erasures, 53 . This means that the number of erasure operations for writing 8 sectors into 2 blocks, 52 , with the invented method is only 25% of the entire block erasure operations required with the usual method.
  • a file allocation table FAT with 30 sectors to 2 blocks, wherein 20 sectors out of the 30 sectors to be written are occupied by unused data, i.e., are “empty,” 58 , with the usual method as in FIG. 4 , erasure of entire blocks is required 30 times.
  • FIG. 8 b shows an overview in table form of the number of operations to program data into the working memory 7 in the block 10 of the flash memory 9 , 65 , using the method as executed in FIGS. 4 to 7 , 51 .
  • the programming operation here corresponds to step 14 in FIGS. 4 a and 4 b and to steps 22 , 24 , 26 in FIGS. 5 a and 5 b .
  • the programming operations further correspond to step 32 in FIG. 6 a and to steps 38 , 41 in FIG. 7 a .
  • FIG. 8 a of a 4-kb file meaning 8 sectors, to be written to 2 blocks, 52 , assuming that 32 sectors can be written to one block as shown in FIG.
  • 64 programming operations compared to 960 programming operations as in the method in FIG. 4 corresponds to a ratio of 6.66%, 75 .
  • An even greater reduction in programming operations results from comparing the usual method shown in FIG. 4 with the invented method from FIGS. 6 and 7 . Because 16 sectors out of the 30 sectors to be written contain unused data and 20 sectors in the block 10 exist as erased storage units, 16 of which remain as erased storage units after the expansion of the file allocation table, only 4 of the erased storage units with data that differ from unused data must be programmed, 76 . This corresponds to a ratio of 0.42% of required programming operations compared to the usual method.
  • the invented method and the computer program product for executing the invented method even without a memory controller to manage the flash memory, information is available about the volume of data to be written to the flash memory. With the information on the volume of data to be written, the storage units required to write the data can be reserved as erased units until the data are written, so that entire-block erasure operations can be eliminated.
  • existing file systems FAT/FAT32 can have unused areas of the sectors to be written with the same value, which after inversion of the values of the unused areas corresponds to the value of erased unwritten storage cells in a block. Therefore, when writing sectors that contain unused data, there is no need to program these unused data to the flash memory after they are inverted. In this way, the number of required erasure and programming operations is reduced, which increases the speed of writing data to the flash memory as well as the lifespan of the flash memory.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)
US14/432,373 2012-11-21 2013-11-15 Method, device, and program for managing a flash memory for mass storage Abandoned US20150277786A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102012022728.0A DE102012022728A1 (de) 2012-11-21 2012-11-21 Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens
DE102012022728.0 2012-11-21
PCT/EP2013/003447 WO2014079550A1 (de) 2012-11-21 2013-11-15 VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2013/003447 A-371-Of-International WO2014079550A1 (de) 2012-11-21 2013-11-15 VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/672,373 Continuation US10509570B2 (en) 2012-11-21 2017-08-09 Method, device, and program for managing a flash memory for mass storage

Publications (1)

Publication Number Publication Date
US20150277786A1 true US20150277786A1 (en) 2015-10-01

Family

ID=49680967

Family Applications (2)

Application Number Title Priority Date Filing Date
US14/432,373 Abandoned US20150277786A1 (en) 2012-11-21 2013-11-15 Method, device, and program for managing a flash memory for mass storage
US15/672,373 Active 2034-10-02 US10509570B2 (en) 2012-11-21 2017-08-09 Method, device, and program for managing a flash memory for mass storage

Family Applications After (1)

Application Number Title Priority Date Filing Date
US15/672,373 Active 2034-10-02 US10509570B2 (en) 2012-11-21 2017-08-09 Method, device, and program for managing a flash memory for mass storage

Country Status (6)

Country Link
US (2) US20150277786A1 (zh)
EP (1) EP2923261B1 (zh)
KR (1) KR101700720B1 (zh)
CN (1) CN104995595B (zh)
DE (1) DE102012022728A1 (zh)
WO (1) WO2014079550A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9690661B2 (en) 2014-10-13 2017-06-27 Silicon Motion, Inc. Non-volatile memory devices and controllers
US10037164B1 (en) * 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US20190065055A1 (en) * 2017-08-25 2019-02-28 Silicon Motion, Inc. Data Storage Method for Optimizing Data Storage Device and its Data Storage Device
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
CN110647507A (zh) * 2019-09-12 2020-01-03 苏州浪潮智能科技有限公司 一种文件系统写状态确定方法、装置、电子设备及介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5804584B1 (ja) 2014-10-30 2015-11-04 ウィンボンド エレクトロニクス コーポレーション Nand型フラッシュメモリのプログラム方法
JP6875808B2 (ja) * 2016-09-09 2021-05-26 キヤノン株式会社 情報処理装置
CN106161657A (zh) * 2016-09-18 2016-11-23 深圳震有科技股份有限公司 一种基于智能手机的短信批量智能收发实现方法及系统
US11514027B2 (en) * 2019-06-07 2022-11-29 Sap Se Paged hybrid LOBs

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060123166A1 (en) * 2004-12-07 2006-06-08 Cisco Technology, Inc., A Corporation Of California Method and system for controlling transmission of USB messages over a data network between a USB device and a plurality of host computers
US20080065813A1 (en) * 2006-09-08 2008-03-13 Yan Li Methods in a pseudo random and command driven bit compensation for the cycling effects in flash memory
US20100287427A1 (en) * 2007-12-27 2010-11-11 Bumsoo Kim Flash Memory Device and Flash Memory Programming Method Equalizing Wear-Level

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
FR2711831B1 (fr) * 1993-10-26 1997-09-26 Intel Corp Procédé et circuit de mémorisation et de hiérarchisation d'ordres d'effacement dans un dispositif de mémoire.
US5559988A (en) * 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
KR100645540B1 (ko) * 2005-08-22 2006-11-14 삼성전자주식회사 플래시메모리의 데이터 관리 장치 및 방법
WO2012062233A1 (de) 2010-11-08 2012-05-18 Hyperstone Gmbh Verfahren zur freigabe nicht länger benötigter speicherbereiche auf nichtflüchtigen speichermedien
US8391086B2 (en) * 2011-03-04 2013-03-05 Elpida Memory, Inc. Mask-write apparatus for a SRAM cell

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060123166A1 (en) * 2004-12-07 2006-06-08 Cisco Technology, Inc., A Corporation Of California Method and system for controlling transmission of USB messages over a data network between a USB device and a plurality of host computers
US20080065813A1 (en) * 2006-09-08 2008-03-13 Yan Li Methods in a pseudo random and command driven bit compensation for the cycling effects in flash memory
US20100287427A1 (en) * 2007-12-27 2010-11-11 Bumsoo Kim Flash Memory Device and Flash Memory Programming Method Equalizing Wear-Level

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Peacock (USB in a nutshell - Chapter 4 - Endpoint types, http://www.beyondlogic.org/usbnutshell/usb4.shtml, published 6-24-2011) *
Peacock (USB in a nutshell - Chapter 4 - Endpoint types, http:www.beyondlogic.org/usbnutshell/usb4.shtml, published 6-24-2011 *

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10268546B2 (en) 2014-10-13 2019-04-23 Silicon Motion, Inc. Non-volatile memory devices and controllers
US9690661B2 (en) 2014-10-13 2017-06-27 Silicon Motion, Inc. Non-volatile memory devices and controllers
US10936207B2 (en) 2016-06-29 2021-03-02 EMC IP Holding Company LLC Linked lists in flash memory
US10353820B2 (en) 2016-06-29 2019-07-16 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US11182083B2 (en) 2016-06-29 2021-11-23 EMC IP Holding Company LLC Bloom filters in a flash memory
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10318201B2 (en) * 2016-06-29 2019-06-11 EMC IP Holding Company LLC Flash interface for processing datasets
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10353607B2 (en) 2016-06-29 2019-07-16 EMC IP Holding Company LLC Bloom filters in a flash memory
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10521123B2 (en) 2016-06-29 2019-12-31 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US11113199B2 (en) 2016-06-29 2021-09-07 EMC IP Holding Company LLC Low-overhead index for a flash cache
US11106586B2 (en) 2016-06-29 2021-08-31 EMC IP Holding Company LLC Systems and methods for rebuilding a cache index
US10037164B1 (en) * 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US11106362B2 (en) 2016-06-29 2021-08-31 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US11106373B2 (en) 2016-06-29 2021-08-31 EMC IP Holding Company LLC Flash interface for processing dataset
US10528289B2 (en) * 2017-08-25 2020-01-07 Silicon Motion, Inc. Data storage method for optimizing data storage device and its data storage device
US20190065055A1 (en) * 2017-08-25 2019-02-28 Silicon Motion, Inc. Data Storage Method for Optimizing Data Storage Device and its Data Storage Device
CN110647507A (zh) * 2019-09-12 2020-01-03 苏州浪潮智能科技有限公司 一种文件系统写状态确定方法、装置、电子设备及介质

Also Published As

Publication number Publication date
KR20150089042A (ko) 2015-08-04
DE102012022728A1 (de) 2014-05-22
EP2923261A1 (de) 2015-09-30
CN104995595A (zh) 2015-10-21
WO2014079550A1 (de) 2014-05-30
US20170336992A1 (en) 2017-11-23
US10509570B2 (en) 2019-12-17
EP2923261B1 (de) 2023-03-08
KR101700720B1 (ko) 2017-01-31
CN104995595B (zh) 2019-03-08

Similar Documents

Publication Publication Date Title
US10509570B2 (en) Method, device, and program for managing a flash memory for mass storage
CN109144888B (zh) 存储器系统
EP3686728A1 (en) Data writing method and storage device
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
US20180260317A1 (en) Method for managing the copying and storing of data in garbage collection, memory storage device and memory control circuit unit using the same
KR20200064499A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US20170039141A1 (en) Mapping table updating method, memory storage device and memory control circuit unit
EP2200045A1 (en) Method of updating contents of a multibit flash memory
US9146691B2 (en) Method for managing commands in command queue, memory control circuit unit and memory storage apparatus
US20080282024A1 (en) Management of erase operations in storage devices based on flash memories
US20130103889A1 (en) Page-buffer management of non-volatile memory-based mass storage devices
CN111459844B (zh) 数据储存装置及用于存取逻辑至物理地址映射表的方法
US9058256B2 (en) Data writing method, memory controller and memory storage apparatus
JP2005242897A (ja) フラッシュディスク装置
US20190095100A1 (en) Block Clearing Method
US9619380B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
US9383929B2 (en) Data storing method and memory controller and memory storage device using the same
CN106445401B (zh) 表格更新方法、存储器储存装置及存储器控制电路单元
CN107943710B (zh) 存储器管理方法及使用所述方法的存储控制器
JP2009205689A (ja) フラッシュディスク装置
JP2019148913A (ja) メモリシステム
JP2012014400A (ja) 半導体メモリ装置および半導体メモリシステム
JP2004326165A (ja) メモリ制御装置およびメモリ制御方法
US20100077131A1 (en) Updating control information in non-volatile memory to control selection of content
JP2007233838A (ja) メモリシステムの制御方法

Legal Events

Date Code Title Description
AS Assignment

Owner name: UNIFY GMBH & CO. KG, GERMANY

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ROSTOCK, LARS;REEL/FRAME:036654/0971

Effective date: 20150921

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION