EP2377023B1 - Mapping address table maintenance in a memory device - Google Patents
Mapping address table maintenance in a memory device Download PDFInfo
- Publication number
- EP2377023B1 EP2377023B1 EP10700608.2A EP10700608A EP2377023B1 EP 2377023 B1 EP2377023 B1 EP 2377023B1 EP 10700608 A EP10700608 A EP 10700608A EP 2377023 B1 EP2377023 B1 EP 2377023B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- address table
- entry
- table cache
- pages
- gat
- 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.)
- Not-in-force
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Definitions
- This application relates generally to memory devices. More specifically, this application relates to maintenance of logical to physical mapping address tables in reprogrammable non-volatile semiconductor flash memory.
- Non-volatile memory systems such as flash memory
- Flash memory may be found in different forms, for example in the form of a portable memory card that can be carried between host devices or as a solid state disk (SSD) embedded in a host device.
- SSD solid state disk
- a host When writing data to a conventional flash memory system, a host typically writes data to, and reads data from, addresses within a logical address space of the memory system.
- the memory system then commonly maps data between the logical address space and the physical blocks or metablocks of the memory, where data is stored in fixed logical groups corresponding to ranges in the logical address space. Generally, each fixed logical group is stored in a separate physical block of the memory system.
- the memory system keeps track of how the logical address space is mapped into the physical memory but the host is unaware of this.
- the host keeps track of the addresses of its data files within the logical address space but the memory system generally operates without knowledge of this mapping.
- An address table in the memory system includes the mapping of the logical address space to the physical memory.
- the address table includes pages indicating the mapping of logical groups to physical blocks in the memory system.
- the address table may be updated with the pertinent mapping information.
- Some memory systems contain a cache to the address table to temporarily store changes to the address table when data is written. Writing to an address table cache instead of to the address table may save some time and write operation overhead.
- Memory systems with an address table cache may periodically synchronize the changed entries in the cache with the address table by updating the entire cache to the address table, regardless of the amount of actual changed entries in the cache.
- updating the entire address table with changed entries in the address table cache may negatively affect performance and delay other operations in the memory system. Pages in the address table may be unnecessarily rewritten if no changes were made.
- the flash memory cells used to store the address table may also be worn out prematurely when the entire address table is written.
- a method for maintaining an address table for mapping logical groups to physical addresses in a memory device.
- the method includes receiving a request to set an entry in the address table, where the entry maps a logical group to a physical address.
- the address table includes a plurality of pages.
- the method also includes determining whether the entry exists in an address table cache that stores changes to the address table and determining whether the address table cache meets a flushing threshold criteria. If the entry does not exist in the address table cache and the address table cache meets the flushing threshold criteria, a quantity of pages of the address table is selected. The quantity of pages selected is less than the total number of pages in the address table.
- the pages in the address table include changed and unchanged entries. Changed entries in the selected pages are flushed from the address table cache to the address table. The requested entry is allocated and set in the address table cache.
- the flushing threshold criteria may include the maximum capacity of the address table cache, and determining whether the address table cache meets the criteria includes determining whether the number of entries in the address table cache is at the maximum capacity of the address table cache.
- the flushing threshold criteria may include a threshold of changed entries, and determining wether the address table cache meets the criteria includes determining whether a number of changed entries in the pages of the address table exceeds the threshold of changed entries.
- Selecting the quantity of pages to flush in the address table may include selecting the pages with the greatest number of changed entries.
- selecting the quantity of pages to flush in the address table may include selecting the pages that have a number of changed entries above a predetermined threshold of changed entries.
- the quantity of pages selected to be flushed may be one.
- Flushing changed entries from the address table cache to the address table may include updating the entries in the address table with the changed entries in the address table cache.
- the method may further include updating the existing entry for the logical group in the address table cache if the entry already exists in the address table cache.
- the method may also include allocating and setting the entry for the logical group in the address table cache if the entry does not exist in the address table cache and the address table cache does not meet the flushing threshold criteria.
- the address table and/or the address table cache may be stored in one or more of a non-volatile memory or a random access memory.
- a memory device includes an address table for mapping logical groups to physical address in the memory device, an address table cache that stores changes to the address table, and a controller.
- the controller is configured to receive a request to set an entry in the address table, where the entry maps a logical group to a physical address.
- the address table includes a plurality of pages.
- the controller is also configured to determine whether the entry exists in an address table cache and determine whether the address table cache meets a flushing threshold criteria. If the controller determines the entry does not exist in the address table cache and that the address table cache meets the flushing threshold criteria, a quantity of pages of the address table is selected. The quantity of pages selected is less than the total number of pages in the address table.
- the pages in the address table include changed and unchanged entries.
- the controller flushes changed entries in the selected pages from the address table cache to the address table.
- the requested entry is allocated and set in the address table cache by the controller.
- the flushing threshold criteria may include the maximum capacity of the address table cache, and determining whether the address table cache meets the criteria includes the controller being configured to determine whether the number of entries in the address table cache is at the maximum capacity of the address table cache.
- the flushing threshold criteria may include a threshold of changed entries, and determining whether the address table cache meets the criteria includes the controller being configured to determine whether a number of changed entries in the pages of the address table exceeds the threshold of changed entries.
- Selecting the quantity of pages to flush in the address table may include selecting the pages with the greatest number of changed entries.
- selecting the quantity of pages to flush in the address table may include selecting the pages that have a number of changed entries above a predetermined threshold of changed entries.
- the quantity of pages selected to be flushed may be one.
- Flushing changed entries from the address table cache to the address table may include updating the entries in the address table with the changed entries in the address table cache.
- the controller may be further configured to update the existing entry for the logical group in the address table cache if the entry already exists in the address table cache.
- the controller may also be configured to allocate and set the entry for the logical group in the address table cache if the entry does not exist in the address table cache and the address table cache does not meet the flushing threshold criteria.
- the address table and/or the address table cache may be stored in one or more of a non-volatile memory or a random access memory.
- FIG. 1 illustrates the main hardware components of a memory system suitable for implementing embodiments of the invention.
- the memory system 20 typically operates with a host 10 through a host interface.
- the memory system is typically in the form of a memory card or an embedded memory system, such as a solid state disk (SSD) drive.
- the memory system 20 includes a memory 200 whose operations are controlled by a controller 100.
- the memory 200 comprises one or more array of non-volatile memory cells distributed over one or more integrated circuit chips.
- the controller 100 includes an interface 110, a processor 120, an optional coprocessor 121, ROM 122 (read only memory), RAM 130 (random access memory) and optionally programmable nonvolatile memory 124.
- the interface 110 has one component interfacing the controller to a host and another component interfacing to the memory 200.
- Firmware stored in nonvolatile ROM 122 and/or the optional nonvolatile memory 124 provides code for the processor 120 to implement the functions of the controller 100. Error correction codes may be processed by the processor 120 or the optional coprocessor 121.
- the controller 100 is implemented by a state machine (not shown). In yet another embodiment, the controller 100 is implemented within the host.
- FIG. 2 illustrates the memory being organized into physical groups of sectors (or metablocks) and managed by a memory manager of the controller, according to an embodiment.
- the memory 200 is organized into metablocks MB 0 , ..., MB i , where each metablock is a group of physical sectors S 0 , ..., S N - 1 , that are erasable together.
- the host 10 accesses the memory 200 when running an application under a file system or operating system.
- the host system addresses data in units of logical sectors where, for example, each sector may contain 512 bytes of data.
- an optional host-side memory manager may exist to perform lower level memory management at the host.
- the host 10 In most cases during read or write operations, the host 10 essentially issues a command to the memory system 20 to read or write a segment containing a string of logical sectors of data with contiguous addresses.
- a memory-side memory manager is implemented in the controller 100 of the memory system 20 to manage the storage and retrieval of the data of host logical sectors among metablocks of the flash memory 200.
- the memory manager contains a number of software modules for managing erase, read and write operations of the metablocks.
- the memory manager also maintains system control and directory data associated with its operations among the flash memory 200 and the controller RAM 130.
- FIGs. 3A(i) - 3A(iii) illustrate the mapping between a logical group and a metablock, according to an embodiment.
- the metablock of the physical memory has N physical sectors for storing N logical sectors of data of a logical group.
- FIG.3A(i) shows the data from a logical group LG i , where the logical sectors are in contiguous logical order 0, 1, ..., N-1.
- FIG. 3A(ii) shows the same data being stored in the metablock in the same logical order.
- the metablock when stored in this manner is said to be "sequential.”
- the metablock may have data stored in a different order, in which case the metablock is said to be "non-sequential" or "chaotic.”
- the metablock stores in its first location beginning with the data of logical sector k.
- the last logical sector N-1 wraps around to sector 0 and finally stores data associated with logical sector k - 1 in its last physical sector.
- a page tag is used to identify any offset, such as identifying the starting logical sector address of the data stored in the first physical sector of the metablock. Two blocks will be considered to have their logical sectors stored in similar order when they only differ by a page tag.
- FIG. 3B illustrates the mapping between logical groups and metablocks.
- Each logical group is mapped to a unique metablock, except for a small number of logical groups in which data is currently being updated. After a logical group has been updated, it may be mapped to a different metablock.
- the mapping information is maintained in a set of logical to physical directories, such as a group address table and group address table cache, as described below.
- FIG. 4 is a block diagram of the metablock management system as implemented in the controller and flash memory.
- the metablock management system comprises various functional modules implemented in the controller 100 and maintains various control data in tables and lists in the flash memory 200 and the controller RAM 130.
- the function modules implemented in the controller 100 includes an interface module 110 and a logical-to-physical address translation module 140.
- the interface 110 allows the metablock management system to interface with a host system.
- the logical to physical address translation module 140 maps the logical address from the host to a physical memory location.
- control data such as addresses, control and status information. Since much of the control data tends to be frequently changing data of small size, it cannot be readily stored and maintained efficiently in a flash memory with a large block structure.
- a hierarchical and distributed scheme may be employed to store the more static control data in the nonvolatile flash memory while locating the smaller amount of the more varying control data in controller RAM for more efficient update and access. In the event of a power shutdown or failure, the scheme allows the control data in the volatile controller RAM to be rebuilt quickly by scanning a small set of control data in the nonvolatile memory.
- the non-volatile flash memory 200 may store control data such as the group address table (GAT) 210 and the group address table cache (GAT Delta) 220.
- the GAT 210 keeps track of the mapping between logical groups of sectors and their corresponding metablocks.
- the GAT 210 contains one entry for each logical group, ordered sequentially according to logical address.
- the GAT 210 includes a plurality of pages with each page including entries defining metablock addresses for every logical group in the memory system.
- the GAT Delta 220 acts as a cache that is a list of changed entries in the mappings of the GAT 210.
- the GAT 210 and GAT Delta 220 are both stored in the flash memory 200. Flushing of changed entries from the GAT Delta 220 to the GAT 210 take place within the flash memory 200 in this embodiment.
- the RAM 130 may include a GAT Delta Copy 132.
- the GAT Delta Copy 132 may contain the same list of changed entries as in the GAT Delta 220.
- the controller may synchronize the GAT Delta Copy 132 and the GAT Delta 220 so that they contain the same information. This process is detailed more below in reference to FIG. 9 .
- FIGS. 5-7 illustrate the group address table (GAT) block 500 in (1) an initial state with an empty GAT Delta; (2) after logical groups are re-written with an updated GAT Delta; and (3) after the GAT Delta is partially flushed to the GAT.
- FIG. 8 is a flow diagram illustrating a method 800 of maintaining a group address table and group address table cache that map logical groups to physical addresses. Each of the steps described in FIG. 8 for the method 800 may be performed alone or in combination with other steps.
- FIG. 5 illustrates the group address table (GAT) block 500 in an initial state.
- the GAT block 500 includes a master index page 502 containing a free block list (FBL) 504, a GAT Delta 506, and a GAT 508 that includes a plurality of pages, where each page includes entries mapping metablock addresses for logical groups that have been written to.
- the FBL 504 lists available free blocks that may be later mapped to logical groups.
- the FBL 504 may be in the order the free blocks were previously allocated.
- the exemplary FBL 504 lists metablocks F, G, H, J, and K as free blocks.
- written logical groups are already assigned to physical metablocks in entries of the pages in the GAT 508.
- the exemplary GAT 508 in FIG. 5 includes Pages 0, 1, 2, and 3 that each has 416 entries corresponding to logical groups.
- the GAT Delta 506 is empty in the initial state because no changes have been made to the GAT 508 yet. In other words, in the initial state shown in FIG. 5 , the GAT 508 contains the most updated mapping for the logical groups to physical metablocks.
- FIG. 6 illustrates the GAT block 500 after data is re-written by the host.
- the old copy of the master index page 502 shown in FIG. 5 is not shown in FIG. 6 .
- a request to set an entry in the GAT 508 mapping a logical group to a physical metablock may be received at step 802 of the method 800 shown in FIG. 8 .
- the GAT Delta 506 may contain more recent mapping information than the GAT 508, the GAT Delta 506 is checked to see if the entry specified in the set request already exists at step 804. If the entry already exists at step 804, then it is updated with the new mapping information from the request at step 814.
- the corresponding page in the GAT 508 containing the logical group for the already existing entry may be updated immediately from the GAT Delta 506.
- a new entry may be allocated and set in the GAT Delta 506 for the logical group specified in the request.
- the entry may be allocated and set if a flushing threshold criteria is not met at step 806.
- the entry is allocated and set in the GAT Delta 506 based on the request at steps 812 and 814.
- the flushing threshold criteria includes the GAT Delta 506 reaching its maximum capacity, if one or more pages in the GAT 508 have a number of changed entries above a threshold, or after a certain time period has elapsed. Flushing threshold criteria may also include doing a preemptive flush if the master index page 502 is updated for other reasons.
- Another flushing threshold criteria may include a case when the GAT 508 is compacted.
- valid pages in the GAT 508 are copied from the compacted GAT block and the updated indices for the GAT 508 are written to the master index page 502.
- pages in the GAT 508 are copied and updated with changed entries from the GAT Delta 506.
- the GAT Delta 506 may be partially or fully flushed after compaction and updating of the GAT 508. At a minimum, in this compaction case, the GAT Delta 506 would no longer include any entries for the pages in the GAT 508 that were compacted.
- the GAT Delta 506 is not flushed and synchronized with the GAT 508.
- the host rewrites data to logical groups
- the corresponding physical metablock the data is written to is recorded in entries in the GAT Delta 506 at steps 812 and 814 instead of directly in the GAT 508.
- the host rewrites logical groups 410, 411, 520, 413, and 1101.
- a request to set entries for these logical groups may be received at step 802. Because the GAT Delta 506 is empty at step 804, the entries for these logical groups do not already exist in the GAT Delta 506 of FIG. 5 .
- the entries for the logical groups are allocated and set at steps 812 and 814. Following steps 812 and 814, the GAT Delta 506 is no longer empty and includes entries mapping logical groups 410, 411, 520, 413, and 1101 to physical metablocks F, G, H, J, and K, respectively.
- the memory controller writes the data for these blocks into free blocks F, G, H, J, and K, respectively, based on the available free blocks listed in FBL 504.
- FIG. 6 shows the superseded physical metablocks A, B, C, D, and E in the GAT 508 as grayed out. Because physical metablocks A, B, C, D, and E no longer contain valid data, the FBL 504 now lists these metablocks as free blocks.
- the master index page 502 that includes the FBL 504, GAT Delta 506 and GAT 508 may be updated in a single write operation and/or be contained within a single data structure.
- the master index page 502 may also include other information that is updated in the single write operation, e.g., update block information (e.g., logical groups that have been updated, block locations, and written length), pointers to active binary cache blocks, indices for pages of the GAT 508, wear leveling counters, and other information.
- update block information e.g., logical groups that have been updated, block locations, and written length
- pointers to active binary cache blocks indices for pages of the GAT 508, wear leveling counters, and other information.
- the master index page 502 provides a synchronous snapshot of the tables contained within and does not need to be entirely rewritten after every write to a page of the GAT 508.
- All physical block references in the master index page 502 are updated in the single write operation such that there are no lost blocks or double-referenced blocks. All physical blocks are referenced by the GAT 508, the master index page 502, or in control blocks (e.g., pointers to blocks in the GAT 508, binary cache blocks, etc.).
- control blocks e.g., pointers to blocks in the GAT 508, binary cache blocks, etc.
- the block may optionally be referenced in the update block information in the master index page 502.
- the block taken from the GBL 504 is then referenced by the GAT Delta 506 and the GAT 508.
- the reference for a block is changed in multiple places when a single write operation is performed on the master index page 502, e.g., in the FBL 504, where a new allocated block disappears and a new free block appears, and in the GAT 508 as a new reference. Therefore, instead of updating the FBL 504 and the FBL 508 at the same time using an atomic write operation with separate writes, a single write operation on the master index page 502 collectively updates the FBL 504, the GAT 508, block information, and the logical-to-physical table.
- FIG. 7 illustrates the GAT block 500 after a GAT update, including the old copy of the master index page 502 from FIG. 6 .
- the flushing threshold criteria may trigger a partial update of the GAT 508 with the corresponding changed entries from the GAT Delta 506. For example, as shown in the GAT block 500 of FIG. 7 , if (1) a request to set an entry in the GAT 508 mapping a logical group to a physical metablock is received at step 802; (2) the entry does not already exist in the GAT Delta 506 at step 804; and (3) the flushing threshold criteria is met at step 806, then a partial update of the GAT 508 occurs at steps 808 and 810. After the partial update of the GAT 508 occurs at steps 808 and 810, then the requested entry may be allocated and set in the GAT Delta 506 at steps 812 and 814, as described previously.
- the partial update of the GAT 508 includes a number of pages of the GAT 508 that are selected at step 808.
- the pages in the GAT 508 selected for updating at step 808 may be the pages with the greatest number of changed entries, or the pages that have a certain number of changed entries above a threshold.
- the pages selected may also be based on other criteria.
- the number of pages selected may be one or any number of pages less than the total number of pages in the GAT 508.
- GAT Page 0 has been selected at step 808 because it has the greatest number of changed entries relative to the other pages in the GAT 508, i.e., GAT Page 0 has three changed entries for logical groups 410, 411, and 413, while GAT Page 1 and 2 each have one changed entry each.
- the entries in the GAT 508 for these logical groups are updated with the entries from the GAT Delta at step 810 such that logical groups 410, 411, and 413 are now mapped to physical metablocks F, G, and, J, respectively, in the GAT 508.
- the previous GAT Page 0 mapping logical groups 410, 411, and 413 to physical metablocks A, B, and D, respectively is overwritten (shown grayed out in FIG. 7 ).
- the GAT Delta 506 in FIG. 7 contains entries for the remaining changed mappings for logical groups 520 and 1101 that had been set previously.
- the corresponding pages in the GAT 508 for logical groups 520 and 1101 are not updated because only GAT Page 0 was selected for flushing.
- FIG. 9 is a flow diagram illustrating a method 900 of maintaining a group address table cache in random access memory and flash memory in an embodiment.
- the method 900 may be implemented using the GAT Delta Copy 132 in the RAM 130 and the GAT Delta 220 in the flash memory 200, for example. Changes to the GAT Delta 220 may first be written to the GAT Delta Copy 132 and periodically synchronized with the GAT Delta 220 in the flash memory 200. Entries in the GAT Delta 220 in the flash memory 200 may then be flushed periodically to the GAT 210, also in the flash memory 200, as described above with reference to FIGS. 5-8 relating to the GAT block 500 and the method 800. Because the RAM 130 has quicker access and modification times relative to the flash memory 200, writing to the GAT Delta Copy 132 in RAM 130 may help to further increase performance of the overall memory system.
- an entry mapping a logical group to a physical metablock may be set or updated as in the method 800 described above.
- a request to set a GAT entry in the method 800 may conclude with (1) updating an existing GAT entry in the GAT Delta Copy 132 using steps 802, 804, and 814; (2) allocating and setting a GAT entry in the GAT Delta Copy 132 using steps 802, 804, 806, 812, and 814; or (3) selecting a GAT page to update, flushing changed entries from the GAT Delta to the GAT, and allocating and setting the new entry in the GAT Delta Copy 132 using steps 802 through 814.
- entries are written to the GAT Delta Copy 132 in RAM 130.
- the flushing of the GAT Delta Copy 132 to the GAT Delta 220 may occur, for example, when the number of blocks in the free block list (FBL) runs out.
- FBL free block list
- the FBL When the FBL is empty, it needs to be populated with more free blocks because new blocks can only be allocated from the FBL. If the FBL were left empty, it would not be possible to know which blocks to scan during initialization and to check if the blocks were recently used since the last control update.
- the FBL may be populated with blocks that were previously referenced by the GAT or update block information and have now become obsolete.
- the mapping entry for a logical group in the GAT Delta may point to a new physical block (which is obtained from the FBL).
- the mapping entry for the logical group in the GAT may still point to an old physical block that is now a free block.
- the FBL may be populated with free blocks in other tables, such as the spare GAT (SGAT), or from other partitions.
- step 902 If it is determined at step 902 that flushing is to occur, then the GAT Delta Copy 132 in RAM is synchronized with the GAT Delta 220 in flash memory. However, if it is determined at step 902 that the flushing is not to occur, then the method 900 returns to the method 800 to write further entries to the GAT Delta Copy 132 if subsequent requests to set GAT entries are received.
- a method and system to maintain an address table for mapping logical groups to physical addresses in a memory device includes receiving a request to set an entry in the address table and selecting and flushing a portion of entries from an address table cache to the address table, depending on the existence of the entry in the cache and whether the cache meets a flushing threshold criteria.
- the flushing threshold criteria includes whether the address table cache is full or if a page exceeds a threshold of changed entries.
- the address table and/or the address table cache may be stored in a non-volatile memory and/or a random access memory. Improved performance may result using this method and system due to the reduced overhead of the number of write operations and time needed to only partially flush changed entries in the address table cache to the address table.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
- This application relates generally to memory devices. More specifically, this application relates to maintenance of logical to physical mapping address tables in reprogrammable non-volatile semiconductor flash memory.
- Non-volatile memory systems, such as flash memory, have been widely adopted for use in consumer products. Flash memory may be found in different forms, for example in the form of a portable memory card that can be carried between host devices or as a solid state disk (SSD) embedded in a host device. When writing data to a conventional flash memory system, a host typically writes data to, and reads data from, addresses within a logical address space of the memory system. The memory system then commonly maps data between the logical address space and the physical blocks or metablocks of the memory, where data is stored in fixed logical groups corresponding to ranges in the logical address space. Generally, each fixed logical group is stored in a separate physical block of the memory system. The memory system keeps track of how the logical address space is mapped into the physical memory but the host is unaware of this. The host keeps track of the addresses of its data files within the logical address space but the memory system generally operates without knowledge of this mapping.
- An address table in the memory system includes the mapping of the logical address space to the physical memory. In particular, the address table includes pages indicating the mapping of logical groups to physical blocks in the memory system. When the host writes data to logical groups that have already been mapped, the address table may be updated with the pertinent mapping information.
- Some memory systems contain a cache to the address table to temporarily store changes to the address table when data is written. Writing to an address table cache instead of to the address table may save some time and write operation overhead. Memory systems with an address table cache may periodically synchronize the changed entries in the cache with the address table by updating the entire cache to the address table, regardless of the amount of actual changed entries in the cache. However, in a large memory system that may have over one hundred pages in the address table, updating the entire address table with changed entries in the address table cache may negatively affect performance and delay other operations in the memory system. Pages in the address table may be unnecessarily rewritten if no changes were made. The flash memory cells used to store the address table may also be worn out prematurely when the entire address table is written.
-
US 2007/101095 discloses a method according to the pre-characterising portion ofclaim 1. - In order to address the problems noted above, a method and system for maintaining an address table mapping logical groups to physical addresses is disclosed.
- According to a first aspect of the invention, a method is disclosed for maintaining an address table for mapping logical groups to physical addresses in a memory device. The method includes receiving a request to set an entry in the address table, where the entry maps a logical group to a physical address. The address table includes a plurality of pages. The method also includes determining whether the entry exists in an address table cache that stores changes to the address table and determining whether the address table cache meets a flushing threshold criteria. If the entry does not exist in the address table cache and the address table cache meets the flushing threshold criteria, a quantity of pages of the address table is selected. The quantity of pages selected is less than the total number of pages in the address table. The pages in the address table include changed and unchanged entries. Changed entries in the selected pages are flushed from the address table cache to the address table. The requested entry is allocated and set in the address table cache.
- In some embodiments, the flushing threshold criteria may include the maximum capacity of the address table cache, and determining whether the address table cache meets the criteria includes determining whether the number of entries in the address table cache is at the maximum capacity of the address table cache. In other embodiments, the flushing threshold criteria may include a threshold of changed entries, and determining wether the address table cache meets the criteria includes determining whether a number of changed entries in the pages of the address table exceeds the threshold of changed entries.
- Selecting the quantity of pages to flush in the address table may include selecting the pages with the greatest number of changed entries. Alternatively, selecting the quantity of pages to flush in the address table may include selecting the pages that have a number of changed entries above a predetermined threshold of changed entries. The quantity of pages selected to be flushed may be one. Flushing changed entries from the address table cache to the address table may include updating the entries in the address table with the changed entries in the address table cache.
- The method may further include updating the existing entry for the logical group in the address table cache if the entry already exists in the address table cache. The method may also include allocating and setting the entry for the logical group in the address table cache if the entry does not exist in the address table cache and the address table cache does not meet the flushing threshold criteria. The address table and/or the address table cache may be stored in one or more of a non-volatile memory or a random access memory.
- According to another aspect, a memory device includes an address table for mapping logical groups to physical address in the memory device, an address table cache that stores changes to the address table, and a controller. The controller is configured to receive a request to set an entry in the address table, where the entry maps a logical group to a physical address. The address table includes a plurality of pages. The controller is also configured to determine whether the entry exists in an address table cache and determine whether the address table cache meets a flushing threshold criteria. If the controller determines the entry does not exist in the address table cache and that the address table cache meets the flushing threshold criteria, a quantity of pages of the address table is selected. The quantity of pages selected is less than the total number of pages in the address table. The pages in the address table include changed and unchanged entries. The controller flushes changed entries in the selected pages from the address table cache to the address table. The requested entry is allocated and set in the address table cache by the controller.
- In some embodiments, the flushing threshold criteria may include the maximum capacity of the address table cache, and determining whether the address table cache meets the criteria includes the controller being configured to determine whether the number of entries in the address table cache is at the maximum capacity of the address table cache. In other embodiments, the flushing threshold criteria may include a threshold of changed entries, and determining whether the address table cache meets the criteria includes the controller being configured to determine whether a number of changed entries in the pages of the address table exceeds the threshold of changed entries.
- Selecting the quantity of pages to flush in the address table may include selecting the pages with the greatest number of changed entries. Alternatively, selecting the quantity of pages to flush in the address table may include selecting the pages that have a number of changed entries above a predetermined threshold of changed entries. The quantity of pages selected to be flushed may be one. Flushing changed entries from the address table cache to the address table may include updating the entries in the address table with the changed entries in the address table cache.
- The controller may be further configured to update the existing entry for the logical group in the address table cache if the entry already exists in the address table cache. The controller may also be configured to allocate and set the entry for the logical group in the address table cache if the entry does not exist in the address table cache and the address table cache does not meet the flushing threshold criteria. The address table and/or the address table cache may be stored in one or more of a non-volatile memory or a random access memory.
-
-
FIG. 1 illustrates the main hardware components of a memory system suitable for implementing embodiments of the invention. -
FIG. 2 illustrates the memory being organized into physical groups of sectors (or metablocks) and managed by a memory manager of the controller, according to an embodiment. -
FIG. 3A illustrates the mapping between a logical group and a metablock, according to an embodiment. -
FIG. 3B illustrates the mapping between logical groups and metablocks. -
FIG. 4 is a schematic block diagram of the metablock management system as implemented in the controller and flash memory. -
FIG. 5 illustrates the group address table block in an initial state. -
FIG. 6 illustrates the group address table block after data is re-written. -
FIG. 7 illustrates the group address table block after a group address table cache update. -
FIG. 8 is a flow diagram illustrating a method of maintaining a group address table and group address table cache that map logical groups to physical addresses. -
FIG. 9 is a flow diagram illustrating a method of maintaining a group address table cache in random access memory and flash memory. -
FIG. 1 illustrates the main hardware components of a memory system suitable for implementing embodiments of the invention. Thememory system 20 typically operates with ahost 10 through a host interface. The memory system is typically in the form of a memory card or an embedded memory system, such as a solid state disk (SSD) drive. Thememory system 20 includes amemory 200 whose operations are controlled by acontroller 100. Thememory 200 comprises one or more array of non-volatile memory cells distributed over one or more integrated circuit chips. Thecontroller 100 includes aninterface 110, aprocessor 120, anoptional coprocessor 121, ROM 122 (read only memory), RAM 130 (random access memory) and optionally programmablenonvolatile memory 124. Theinterface 110 has one component interfacing the controller to a host and another component interfacing to thememory 200. Firmware stored innonvolatile ROM 122 and/or the optionalnonvolatile memory 124 provides code for theprocessor 120 to implement the functions of thecontroller 100. Error correction codes may be processed by theprocessor 120 or theoptional coprocessor 121. In an alternative embodiment, thecontroller 100 is implemented by a state machine (not shown). In yet another embodiment, thecontroller 100 is implemented within the host. -
FIG. 2 illustrates the memory being organized into physical groups of sectors (or metablocks) and managed by a memory manager of the controller, according to an embodiment. Thememory 200 is organized into metablocks MB 0 , ..., MB i , where each metablock is a group of physical sectors S 0 , ..., S N-1 , that are erasable together. - The
host 10 accesses thememory 200 when running an application under a file system or operating system. Typically, the host system addresses data in units of logical sectors where, for example, each sector may contain 512 bytes of data. Also, it is usual for the host to read or write to the memory system in units of logical clusters, each consisting of one or more logical sectors. In some host systems, an optional host-side memory manager may exist to perform lower level memory management at the host. In most cases during read or write operations, thehost 10 essentially issues a command to thememory system 20 to read or write a segment containing a string of logical sectors of data with contiguous addresses. - A memory-side memory manager is implemented in the
controller 100 of thememory system 20 to manage the storage and retrieval of the data of host logical sectors among metablocks of theflash memory 200. In the preferred embodiment, the memory manager contains a number of software modules for managing erase, read and write operations of the metablocks. The memory manager also maintains system control and directory data associated with its operations among theflash memory 200 and thecontroller RAM 130. -
FIGs. 3A(i) - 3A(iii) illustrate the mapping between a logical group and a metablock, according to an embodiment. The metablock of the physical memory has N physical sectors for storing N logical sectors of data of a logical group.FIG.3A(i) shows the data from a logical group LGi, where the logical sectors are in contiguouslogical order FIG. 3A(ii) shows the same data being stored in the metablock in the same logical order. The metablock when stored in this manner is said to be "sequential." In general, the metablock may have data stored in a different order, in which case the metablock is said to be "non-sequential" or "chaotic." - There may be an offset between the lowest address of a logical group and the lowest address of the metablock to which it is mapped. In this case, the logical sector address wraps around as a loop from the bottom back to the top of the logical group within the metablock. For example, in
FIG. 3A(iii) , the metablock stores in its first location beginning with the data of logical sector k. When the last logical sector N-1 is reached, it wraps around tosector 0 and finally stores data associated with logical sector k-1 in its last physical sector. In the preferred embodiment, a page tag is used to identify any offset, such as identifying the starting logical sector address of the data stored in the first physical sector of the metablock. Two blocks will be considered to have their logical sectors stored in similar order when they only differ by a page tag. -
FIG. 3B illustrates the mapping between logical groups and metablocks. Each logical group is mapped to a unique metablock, except for a small number of logical groups in which data is currently being updated. After a logical group has been updated, it may be mapped to a different metablock. The mapping information is maintained in a set of logical to physical directories, such as a group address table and group address table cache, as described below. -
FIG. 4 is a block diagram of the metablock management system as implemented in the controller and flash memory. The metablock management system comprises various functional modules implemented in thecontroller 100 and maintains various control data in tables and lists in theflash memory 200 and thecontroller RAM 130. The function modules implemented in thecontroller 100 includes aninterface module 110 and a logical-to-physicaladdress translation module 140. Theinterface 110 allows the metablock management system to interface with a host system. The logical to physicaladdress translation module 140 maps the logical address from the host to a physical memory location. - During operation the metablock management system generates and works with control data such as addresses, control and status information. Since much of the control data tends to be frequently changing data of small size, it cannot be readily stored and maintained efficiently in a flash memory with a large block structure. A hierarchical and distributed scheme may be employed to store the more static control data in the nonvolatile flash memory while locating the smaller amount of the more varying control data in controller RAM for more efficient update and access. In the event of a power shutdown or failure, the scheme allows the control data in the volatile controller RAM to be rebuilt quickly by scanning a small set of control data in the nonvolatile memory.
- The
non-volatile flash memory 200 may store control data such as the group address table (GAT) 210 and the group address table cache (GAT Delta) 220. TheGAT 210 keeps track of the mapping between logical groups of sectors and their corresponding metablocks. TheGAT 210 contains one entry for each logical group, ordered sequentially according to logical address. TheGAT 210 includes a plurality of pages with each page including entries defining metablock addresses for every logical group in the memory system. TheGAT Delta 220 acts as a cache that is a list of changed entries in the mappings of theGAT 210. In one embodiment, theGAT 210 andGAT Delta 220 are both stored in theflash memory 200. Flushing of changed entries from theGAT Delta 220 to theGAT 210 take place within theflash memory 200 in this embodiment. - In some embodiments, the
RAM 130 may include aGAT Delta Copy 132. TheGAT Delta Copy 132 may contain the same list of changed entries as in theGAT Delta 220. Periodically, the controller may synchronize theGAT Delta Copy 132 and theGAT Delta 220 so that they contain the same information. This process is detailed more below in reference toFIG. 9 . -
FIGS. 5-7 illustrate the group address table (GAT) block 500 in (1) an initial state with an empty GAT Delta; (2) after logical groups are re-written with an updated GAT Delta; and (3) after the GAT Delta is partially flushed to the GAT.FIG. 8 is a flow diagram illustrating amethod 800 of maintaining a group address table and group address table cache that map logical groups to physical addresses. Each of the steps described inFIG. 8 for themethod 800 may be performed alone or in combination with other steps. -
FIG. 5 illustrates the group address table (GAT) block 500 in an initial state. TheGAT block 500 includes amaster index page 502 containing a free block list (FBL) 504, aGAT Delta 506, and aGAT 508 that includes a plurality of pages, where each page includes entries mapping metablock addresses for logical groups that have been written to. TheFBL 504 lists available free blocks that may be later mapped to logical groups. TheFBL 504 may be in the order the free blocks were previously allocated. InFIG. 5 , theexemplary FBL 504 lists metablocks F, G, H, J, and K as free blocks. - In an initial state of the memory system, written logical groups are already assigned to physical metablocks in entries of the pages in the
GAT 508. Theexemplary GAT 508 inFIG. 5 includesPages GAT Delta 506 is empty in the initial state because no changes have been made to theGAT 508 yet. In other words, in the initial state shown inFIG. 5 , theGAT 508 contains the most updated mapping for the logical groups to physical metablocks. -
FIG. 6 illustrates the GAT block 500 after data is re-written by the host. The old copy of themaster index page 502 shown inFIG. 5 is not shown inFIG. 6 . When data is written from the host, a request to set an entry in theGAT 508 mapping a logical group to a physical metablock may be received atstep 802 of themethod 800 shown inFIG. 8 . Because theGAT Delta 506 may contain more recent mapping information than theGAT 508, theGAT Delta 506 is checked to see if the entry specified in the set request already exists at step 804. If the entry already exists at step 804, then it is updated with the new mapping information from the request atstep 814. In some embodiments, if the entry already exists in theGAT Delta 506, the corresponding page in theGAT 508 containing the logical group for the already existing entry may be updated immediately from theGAT Delta 506. In other embodiments, if the entry already exists in theGAT Delta 506, a new entry may be allocated and set in theGAT Delta 506 for the logical group specified in the request. - However, if the entry does not already exist in the
GAT Delta 506 at step 804, the entry may be allocated and set if a flushing threshold criteria is not met atstep 806. In this case, the entry is allocated and set in theGAT Delta 506 based on the request atsteps GAT Delta 506 reaching its maximum capacity, if one or more pages in theGAT 508 have a number of changed entries above a threshold, or after a certain time period has elapsed. Flushing threshold criteria may also include doing a preemptive flush if themaster index page 502 is updated for other reasons. - Another flushing threshold criteria may include a case when the
GAT 508 is compacted. In one embodiment, when theGAT 508 is compacted, valid pages in theGAT 508 are copied from the compacted GAT block and the updated indices for theGAT 508 are written to themaster index page 502. In another embodiment, when theGAT 508 is compacted, pages in theGAT 508 are copied and updated with changed entries from theGAT Delta 506. In this compaction case, theGAT Delta 506 may be partially or fully flushed after compaction and updating of theGAT 508. At a minimum, in this compaction case, theGAT Delta 506 would no longer include any entries for the pages in theGAT 508 that were compacted. - Therefore, if the entry does not exist in the
GAT Delta 506 and the flushing threshold criteria is not met atstep 806, theGAT Delta 506 is not flushed and synchronized with theGAT 508. When the host rewrites data to logical groups, the corresponding physical metablock the data is written to is recorded in entries in theGAT Delta 506 atsteps GAT 508. For example, inFIG. 6 , the host rewriteslogical groups step 802. Because theGAT Delta 506 is empty at step 804, the entries for these logical groups do not already exist in theGAT Delta 506 ofFIG. 5 . In addition to the entries' non-existence in theGAT Delta 506, because the flushing threshold criteria for theGAT Delta 506 is not met atstep 806, the entries for the logical groups are allocated and set atsteps steps GAT Delta 506 is no longer empty and includes entries mappinglogical groups FBL 504. - The
logical groups GAT 508 still contains this original mapping, however, the entries for these logical groups in theGAT 508 are now superseded by the entries in theGAT Delta 506.FIG. 6 shows the superseded physical metablocks A, B, C, D, and E in theGAT 508 as grayed out. Because physical metablocks A, B, C, D, and E no longer contain valid data, theFBL 504 now lists these metablocks as free blocks. - The
master index page 502 that includes theFBL 504,GAT Delta 506 andGAT 508 may be updated in a single write operation and/or be contained within a single data structure. Themaster index page 502 may also include other information that is updated in the single write operation, e.g., update block information (e.g., logical groups that have been updated, block locations, and written length), pointers to active binary cache blocks, indices for pages of theGAT 508, wear leveling counters, and other information. Themaster index page 502 provides a synchronous snapshot of the tables contained within and does not need to be entirely rewritten after every write to a page of theGAT 508. - All physical block references in the
master index page 502 are updated in the single write operation such that there are no lost blocks or double-referenced blocks. All physical blocks are referenced by theGAT 508, themaster index page 502, or in control blocks (e.g., pointers to blocks in theGAT 508, binary cache blocks, etc.). When a block is taken from theFBL 504, the block may optionally be referenced in the update block information in themaster index page 502. The block taken from theGBL 504 is then referenced by theGAT Delta 506 and theGAT 508. The reference for a block is changed in multiple places when a single write operation is performed on themaster index page 502, e.g., in theFBL 504, where a new allocated block disappears and a new free block appears, and in theGAT 508 as a new reference. Therefore, instead of updating theFBL 504 and theFBL 508 at the same time using an atomic write operation with separate writes, a single write operation on themaster index page 502 collectively updates theFBL 504, theGAT 508, block information, and the logical-to-physical table. -
FIG. 7 illustrates the GAT block 500 after a GAT update, including the old copy of themaster index page 502 fromFIG. 6 . The flushing threshold criteria may trigger a partial update of theGAT 508 with the corresponding changed entries from theGAT Delta 506. For example, as shown in the GAT block 500 ofFIG. 7 , if (1) a request to set an entry in theGAT 508 mapping a logical group to a physical metablock is received atstep 802; (2) the entry does not already exist in theGAT Delta 506 at step 804; and (3) the flushing threshold criteria is met atstep 806, then a partial update of theGAT 508 occurs atsteps 808 and 810. After the partial update of theGAT 508 occurs atsteps 808 and 810, then the requested entry may be allocated and set in theGAT Delta 506 atsteps - Not all of the superseded entries in the
GAT 508 are updated when a partial update of theGAT 508 occurs. Instead, the partial update of theGAT 508 includes a number of pages of theGAT 508 that are selected atstep 808. The pages in theGAT 508 selected for updating atstep 808 may be the pages with the greatest number of changed entries, or the pages that have a certain number of changed entries above a threshold. The pages selected may also be based on other criteria. The number of pages selected may be one or any number of pages less than the total number of pages in theGAT 508. - When the flushing threshold criteria is met at
step 806 and a partial update is triggered, entries in theGAT Delta 506 for the selected pages of theGAT 508 are flushed to those pages of theGAT 508 at step 810. InFIG. 7 ,GAT Page 0 has been selected atstep 808 because it has the greatest number of changed entries relative to the other pages in theGAT 508, i.e.,GAT Page 0 has three changed entries forlogical groups GAT Page GAT 508 for these logical groups are updated with the entries from the GAT Delta at step 810 such thatlogical groups GAT 508. - The
previous GAT Page 0 mappinglogical groups FIG. 7 ). After the partial update of theGAT 508 is completed, theGAT Delta 506 inFIG. 7 contains entries for the remaining changed mappings forlogical groups GAT 508 forlogical groups only GAT Page 0 was selected for flushing. - By flushing a portion of the GAT Delta to the GAT instead of flushing the entire GAT Delta to the GAT, the number of write operations and the time taken up in the flushing process are reduced. For example, instead of flushing entries from the GAT Delta for all pages of a GAT (which may include one hundred or more pages) in a large memory system, only one page of the GAT will be updated with changed entries from a GAT Delta. The overall performance of the memory system may increase because less time and operations are needed to maintain the GAT address table.
-
FIG. 9 is a flow diagram illustrating amethod 900 of maintaining a group address table cache in random access memory and flash memory in an embodiment. Themethod 900 may be implemented using theGAT Delta Copy 132 in theRAM 130 and theGAT Delta 220 in theflash memory 200, for example. Changes to theGAT Delta 220 may first be written to theGAT Delta Copy 132 and periodically synchronized with theGAT Delta 220 in theflash memory 200. Entries in theGAT Delta 220 in theflash memory 200 may then be flushed periodically to theGAT 210, also in theflash memory 200, as described above with reference toFIGS. 5-8 relating to theGAT block 500 and themethod 800. Because theRAM 130 has quicker access and modification times relative to theflash memory 200, writing to theGAT Delta Copy 132 inRAM 130 may help to further increase performance of the overall memory system. - In
FIG. 9 , an entry mapping a logical group to a physical metablock may be set or updated as in themethod 800 described above. In other words, a request to set a GAT entry in themethod 800 may conclude with (1) updating an existing GAT entry in theGAT Delta Copy 132 usingsteps GAT Delta Copy 132 usingsteps GAT Delta Copy 132 usingsteps 802 through 814. However, instead of writing entries to theGAT Delta 220 inflash memory 200, as described above in reference toFIGS. 5-8 , entries are written to theGAT Delta Copy 132 inRAM 130. - After a request to set a GAT entry is fulfilled in the
method 800, it is determined whether to flush theGAT Delta Copy 132 to theGAT Delta 220 atstep 902. The flushing of theGAT Delta Copy 132 to theGAT Delta 220 may occur, for example, when the number of blocks in the free block list (FBL) runs out. When the FBL is empty, it needs to be populated with more free blocks because new blocks can only be allocated from the FBL. If the FBL were left empty, it would not be possible to know which blocks to scan during initialization and to check if the blocks were recently used since the last control update. - In one embodiment, the FBL may be populated with blocks that were previously referenced by the GAT or update block information and have now become obsolete. For example, the mapping entry for a logical group in the GAT Delta may point to a new physical block (which is obtained from the FBL). The mapping entry for the logical group in the GAT may still point to an old physical block that is now a free block. After the entry in the GAT Delta is flushed to the GAT such that the logical group in the GAT points to the new physical block, then the old physical block can be added to the FBL. In other embodiments, the FBL may be populated with free blocks in other tables, such as the spare GAT (SGAT), or from other partitions.
- If it is determined at
step 902 that flushing is to occur, then theGAT Delta Copy 132 in RAM is synchronized with theGAT Delta 220 in flash memory. However, if it is determined atstep 902 that the flushing is not to occur, then themethod 900 returns to themethod 800 to write further entries to theGAT Delta Copy 132 if subsequent requests to set GAT entries are received. - A method and system to maintain an address table for mapping logical groups to physical addresses in a memory device has been disclosed. The method includes receiving a request to set an entry in the address table and selecting and flushing a portion of entries from an address table cache to the address table, depending on the existence of the entry in the cache and whether the cache meets a flushing threshold criteria. The flushing threshold criteria includes whether the address table cache is full or if a page exceeds a threshold of changed entries. The address table and/or the address table cache may be stored in a non-volatile memory and/or a random access memory. Improved performance may result using this method and system due to the reduced overhead of the number of write operations and time needed to only partially flush changed entries in the address table cache to the address table.
Claims (15)
- A method of maintaining an address table (140, 210, 508) in a memory device, the address table (140, 210, 508) for mapping logical groups to physical addresses in the memory device (20), the method comprising:receiving a request to set an entry in the address table (140, 210, 508), the entry for mapping a logical group to a physical address in the memory device (20), where the address table (140, 210, 508) comprises a plurality of pages;CHARACTERISED BY:determining (804) whether the entry exists in an address table cache (220, 506) that stores changes to the address table (140, 210, 508);determining (806) whether the address table cache (220, 506) meets a flushing threshold criteria; andif the entry does not exist in the address table cache (220, 506) and the address table cache (220, 506) meets the flushing threshold criteria:selecting (808) a quantity of pages of the address table (140, 210, 508) less than the total number of pages in the address table (140, 210, 508), the pages comprising changed entries and unchanged entries;flushing (810) changed entries for the selected pages from the address table cache (220, 506) to the address table (140, 210, 508);allocating (812) the entry for the logical.group in the address table cache (220, 506); andsetting (814) the entry for the logical group in the address table cache (220, 506) based on the request.
- The method of claim 1, where:the flushing threshold criteria comprises a maximum capacity of the address table cache (220, 506); anddetermining whether the address table cache (220, 506) meets the flushing threshold criteria comprises determining whether a number of entries in the address table cache (220, 506) is at the maximum capacity of the address table cache (220, 506).
- The method of claim 1, where:the flushing threshold criteria comprises a threshold of changed entries; anddetermining whether the address table cache (220, 506) meets the flushing threshold criteria comprises determining whether a number of changed entries in the pages of the address table (140, 210, 508) exceeds the threshold of changed entries.
- The method of claim 1, where flushing comprises updating the entries in the address table (140, 210, 508) for the selected pages with the changed entries in the address table cache (220, 506).
- The method of claim 1, further comprising:if the entry exists in the address table cache (220, 506):updating the existing entry for the logical group based on the request:if the entry does not exist in the address table cache (220, 506) and the address table cache (220, 506) does not meet the flushing threshold criteria:allocating the entry for the logical group in the address table cache (220, 506); andsetting the entry for the logical group in the address table cache (220, 506) based on the request.
- The method of claim 1, where one or more of the address table (140, 210, 508) or the address table cache (220, 506) are stored in one or more of a non-volatile memory or a random access memory (130).
- A memory device, comprising:an address table (140, 210, 508) for mapping logical groups to physical address in the memory device (20);an address table cache (220, 506) that stores changes to the address table (140, 210, 508); anda controller (100) configured to:receive (802) a request to set an entry in the address table (140, 210, 508), the entry for mapping a logical group to a physical address in the memory device (20), where the address table (140, 210, 508) comprises a plurality of pages;CHARACTERISED IN THAT:the controller (100) is further configured to:determine (804) whether the entry exists in the address table cache (220, 506);determine (806) whether the address table cache (220, 506) meets a flushing threshold criteria; andif the entry does not exist in the address table cache (220, 506) and the address table cache (220, 506) meets the flushing threshold criteria:select (808) a quantity of pages of the address table (140, 210, 508) less than the total number of pages in the address table (140, 210, 508), the pages comprising changed entries and unchanged entries;flush (810) changed entries for the selected pages from the address table cache (220, 506) to the address table (140, 210, 508);allocate (812) the entry for the logical group in the address table cache (220, 506); andset (814) the entry for the logical group in the address table cache (220, 506) based on the request.
- The memory device of claim 7, where:the flushing threshold criteria comprises a maximum capacity of the address table cache (220, 506); anddetermining whether the address table cache (220, 506) meets the flushing threshold criteria comprises the controller configured to determine whether a number of entries in the address table cache (220, 506) is at the maximum capacity of the address table cache (220, 506).
- The memory device of claim 7, where:the flushing threshold criteria comprises a threshold of changed entries; anddetermining whether the address table cache (220, 506) meets the flushing threshold criteria comprises the controller configured to determine whether a number of changed entries in the pages of the address table (140, 210, 508) exceeds the threshold of changed entries.
- The memory device of claim 7, where selecting the quantity of pages comprises the controller configured to select the pages with the greatest number of changed entries.
- The memory device of claim 7, where selecting the quantity of pages comprises the controller configured to select the pages that have a number of changed entries above a predetermined threshold of changed entries.
- The memory device of claim 7, where the quantity of pages selected is one.
- The memory device of claim 7, where flushing comprises the controller configured to update the entries in the address table (140, 210, 508) for the selected pages with the changed entries in the address table cache (220, 506).
- The memory device of claim 7, where the controller is further configured to:if the entry exists in the address table cache (220, 506):update the existing entry for the logical group based on the request;if the entry does not exist in the address table cache (220, 506) and the address table cache (220, 506) does not meet the flushing threshold criteria:allocate (812) the entry for the logical group in the address table cache (220, 506); andset (814) the entry for the logical group in the address table cache (220, 506) based on the request.
- The memory device of claim 7, further comprising a non-volatile memory and a random access memory (130) and where one or more of the address table (140, 210, 508) or the address table cache (220, 506) are stored in one or more of the non-volatile memory or the random access memory (130).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/348,782 US8250333B2 (en) | 2009-01-05 | 2009-01-05 | Mapping address table maintenance in a memory device |
PCT/US2010/020027 WO2010078545A1 (en) | 2009-01-05 | 2010-01-04 | Mapping address table maintenance in a memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
EP2377023A1 EP2377023A1 (en) | 2011-10-19 |
EP2377023B1 true EP2377023B1 (en) | 2014-03-05 |
Family
ID=42040445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP10700608.2A Not-in-force EP2377023B1 (en) | 2009-01-05 | 2010-01-04 | Mapping address table maintenance in a memory device |
Country Status (5)
Country | Link |
---|---|
US (1) | US8250333B2 (en) |
EP (1) | EP2377023B1 (en) |
JP (1) | JP5571691B2 (en) |
KR (1) | KR20110117099A (en) |
WO (1) | WO2010078545A1 (en) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8891298B2 (en) | 2011-07-19 | 2014-11-18 | Greenthread, Llc | Lifetime mixed level non-volatile memory system |
US8244960B2 (en) * | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8040744B2 (en) * | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8700840B2 (en) | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
JP5570406B2 (en) * | 2010-12-14 | 2014-08-13 | 株式会社日立製作所 | Memory controller and data recording apparatus |
JP5295286B2 (en) * | 2011-02-23 | 2013-09-18 | 株式会社日立製作所 | Storage device and computer equipped with the same |
US9104327B2 (en) | 2011-05-17 | 2015-08-11 | Sandisk Technologies Inc. | Fast translation indicator to reduce secondary address table checks in a memory device |
US9473424B2 (en) * | 2011-09-19 | 2016-10-18 | Fujitsu Limited | Address table flushing in distributed switching systems |
US9727453B2 (en) * | 2013-03-14 | 2017-08-08 | Sandisk Technologies Llc | Multi-level table deltas |
US9275095B2 (en) | 2013-07-31 | 2016-03-01 | International Business Machines Corporation | Compressing a multi-version database |
US8838936B1 (en) * | 2013-11-27 | 2014-09-16 | NXGN Data, Inc. | System and method for efficient flash translation layer |
US9772781B2 (en) | 2013-11-27 | 2017-09-26 | Ngd Systems, Inc. | System and method for supporting atomic writes in a flash translation layer |
US9466383B2 (en) * | 2013-12-30 | 2016-10-11 | Sandisk Technologies Llc | Non-volatile memory and method with adaptive logical groups |
US9760295B2 (en) | 2014-09-05 | 2017-09-12 | Toshiba Memory Corporation | Atomic rights in a distributed memory system |
US9436615B2 (en) | 2014-10-03 | 2016-09-06 | Sandisk Technologies Llc | Optimistic data read |
US10055267B2 (en) * | 2015-03-04 | 2018-08-21 | Sandisk Technologies Llc | Block management scheme to handle cluster failures in non-volatile memory |
TWI534618B (en) * | 2015-07-13 | 2016-05-21 | 群聯電子股份有限公司 | Mapping table updating method, memory control circuit unit and memory storage device |
CN106372000B (en) * | 2015-07-20 | 2019-10-11 | 群联电子股份有限公司 | Map table updating method, memorizer control circuit unit and memory storage apparatus |
US9996473B2 (en) * | 2015-11-13 | 2018-06-12 | Samsung Electronics., Ltd | Selective underlying exposure storage mapping |
KR102611292B1 (en) | 2016-06-22 | 2023-12-11 | 에스케이하이닉스 주식회사 | Memory system and operating method of memory system |
US20180095788A1 (en) | 2016-10-04 | 2018-04-05 | Pure Storage, Inc. | Scheduling operations for a storage device |
EP3485362B1 (en) * | 2016-10-04 | 2021-08-11 | Pure Storage, Inc. | Maintaining data associated with a storage device related applications |
KR20180051706A (en) | 2016-11-07 | 2018-05-17 | 삼성전자주식회사 | Memory system performing error correction of address mapping table |
US10318421B2 (en) * | 2017-04-12 | 2019-06-11 | International Business Machines Corporation | Lightweight mechanisms for selecting infrequently executed methods for eviction from code cache |
TWI637651B (en) * | 2018-01-03 | 2018-10-01 | 和碩聯合科技股份有限公司 | Wireless hotspot operation method |
US10459839B1 (en) | 2018-05-02 | 2019-10-29 | International Business Machines Corporation | Accelerating garbage collection of flushed logical erase blocks in non-volatile memory |
US11094381B2 (en) * | 2019-06-02 | 2021-08-17 | Apple Inc. | Rapid restart protection for a non-volatile memory system |
US11194521B1 (en) | 2020-05-27 | 2021-12-07 | Western Digital Technologies, Inc. | Rate limit on the transitions of streams to open |
US11126378B1 (en) | 2020-05-27 | 2021-09-21 | Western Digital Technologies, Inc. | Rate limit on the transitions of zones to open |
EP4134826A1 (en) * | 2021-08-09 | 2023-02-15 | Giesecke+Devrient Mobile Security GmbH | Management of memory of a processing device |
KR102545175B1 (en) * | 2022-05-02 | 2023-06-20 | 삼성전자주식회사 | Operating method of memeory device including address table and memory controller thereof |
EP4276642A1 (en) * | 2022-05-09 | 2023-11-15 | Samsung Electronics Co., Ltd. | Computing system including cxl switch, memory device and storage device and operating method thereof |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5895488A (en) * | 1997-02-24 | 1999-04-20 | Eccs, Inc. | Cache flushing methods and apparatus |
US6377500B1 (en) * | 1999-11-11 | 2002-04-23 | Kabushiki Kaisha Toshiba | Memory system with a non-volatile memory, having address translating function |
US20040088474A1 (en) * | 2002-10-30 | 2004-05-06 | Lin Jin Shin | NAND type flash memory disk device and method for detecting the logical address |
US8041878B2 (en) | 2003-03-19 | 2011-10-18 | Samsung Electronics Co., Ltd. | Flash file system |
US7139864B2 (en) * | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7356651B2 (en) * | 2004-01-30 | 2008-04-08 | Piurata Technologies, Llc | Data-aware cache state machine |
US7509471B2 (en) | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
JP5076411B2 (en) * | 2005-11-30 | 2012-11-21 | ソニー株式会社 | Storage device, computer system |
US7711923B2 (en) * | 2006-06-23 | 2010-05-04 | Microsoft Corporation | Persistent flash memory mapping table |
TWM317043U (en) * | 2006-12-27 | 2007-08-11 | Genesys Logic Inc | Cache device of the flash memory address transformation layer |
TW200828014A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Flash memory management method with low RAM utilization |
US7721040B2 (en) * | 2007-01-18 | 2010-05-18 | Sandisk Il Ltd. | Method and system for facilitating fast wake-up of a flash memory system |
US8321652B2 (en) * | 2008-08-01 | 2012-11-27 | Infineon Technologies Ag | Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks |
-
2009
- 2009-01-05 US US12/348,782 patent/US8250333B2/en not_active Expired - Fee Related
-
2010
- 2010-01-04 KR KR1020117017069A patent/KR20110117099A/en not_active Application Discontinuation
- 2010-01-04 JP JP2011544640A patent/JP5571691B2/en not_active Expired - Fee Related
- 2010-01-04 WO PCT/US2010/020027 patent/WO2010078545A1/en active Application Filing
- 2010-01-04 EP EP10700608.2A patent/EP2377023B1/en not_active Not-in-force
Also Published As
Publication number | Publication date |
---|---|
EP2377023A1 (en) | 2011-10-19 |
WO2010078545A1 (en) | 2010-07-08 |
JP2012514794A (en) | 2012-06-28 |
JP5571691B2 (en) | 2014-08-13 |
US20100174869A1 (en) | 2010-07-08 |
US8250333B2 (en) | 2012-08-21 |
KR20110117099A (en) | 2011-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2377023B1 (en) | Mapping address table maintenance in a memory device | |
CN110678836B (en) | Persistent memory for key value storage | |
EP2742428B1 (en) | Cache management including solid state device virtualization | |
USRE45577E1 (en) | Method of writing to a flash memory including data blocks and log blocks | |
EP2965208B1 (en) | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive | |
US7698495B2 (en) | Computer system having logically ordered cache management | |
US9268682B2 (en) | Methods, devices and systems for physical-to-logical mapping in solid state drives | |
US9678676B2 (en) | Method for storage devices to achieve low write amplification with low over provision | |
US9489296B1 (en) | Methods, devices and systems for hardware-based garbage collection in solid state drives | |
US7395384B2 (en) | Method and apparatus for maintaining data on non-volatile memory systems | |
US9990277B2 (en) | System and method for efficient address translation of flash memory device | |
US20140068152A1 (en) | Method and system for storage address re-mapping for a multi-bank memory device | |
EP2530612A1 (en) | Mount-time unmapping of unused logical addresses in non-volatile memory systems | |
JP2005242897A (en) | Flash disk drive | |
US9507523B1 (en) | Methods, devices and systems for variable size logical page management in a solid state drive | |
KR101430097B1 (en) | Non-volatile memory and method for class-based update block replacement rules | |
US10083181B2 (en) | Method and system for storing metadata of log-structured file system | |
US20030046482A1 (en) | Data management in flash memory | |
KR100745163B1 (en) | Method for managing flash memory using dynamic mapping table | |
KR101020781B1 (en) | A method for log management in flash memory-based database systems | |
KR101114398B1 (en) | Address Translation and Multiple Block Deletion Method of Fusion Flash Memory Using Eraser Group Flash Translation Layer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20110705 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK SM TR |
|
DAX | Request for extension of the european patent (deleted) | ||
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
INTG | Intention to grant announced |
Effective date: 20130425 |
|
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
INTG | Intention to grant announced |
Effective date: 20130927 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK SM TR |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: REF Ref document number: 655294 Country of ref document: AT Kind code of ref document: T Effective date: 20140315 |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602010013939 Country of ref document: DE Effective date: 20140417 |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 655294 Country of ref document: AT Kind code of ref document: T Effective date: 20140305 |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: VDEP Effective date: 20140305 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: NO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140605 |
|
REG | Reference to a national code |
Ref country code: LT Ref legal event code: MG4D |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: CY Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: HR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: NL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140605 Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140705 Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: BE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602010013939 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140707 |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
26N | No opposition filed |
Effective date: 20141208 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602010013939 Country of ref document: DE Effective date: 20141208 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R119 Ref document number: 602010013939 Country of ref document: DE |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LU Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20150104 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20150801 Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20150131 Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20150131 |
|
REG | Reference to a national code |
Ref country code: FR Ref legal event code: ST Effective date: 20150930 |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: MM4A |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: FR Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20150202 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20150104 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140606 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SM Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 Ref country code: HU Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO Effective date: 20100104 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: TR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20180103 Year of fee payment: 9 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20140305 |
|
GBPC | Gb: european patent ceased through non-payment of renewal fee |
Effective date: 20190104 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: GB Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190104 |