US20120117303A1 - Metadata storage associated with flash translation layer - Google Patents
Metadata storage associated with flash translation layer Download PDFInfo
- Publication number
- US20120117303A1 US20120117303A1 US12/939,953 US93995310A US2012117303A1 US 20120117303 A1 US20120117303 A1 US 20120117303A1 US 93995310 A US93995310 A US 93995310A US 2012117303 A1 US2012117303 A1 US 2012117303A1
- Authority
- US
- United States
- Prior art keywords
- nand
- memory
- information
- array
- metadata
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- 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/7211—Wear leveling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- Subject matter disclosed herein relates to storing information via a flash translation layer.
- Electronic devices may include a NAND flash translation layer (FTL) between a file allocation table (FAT) file system, for example, and NAND-based flash memory, such as NAND or OneNANDTM, available from Samsung Electronics of Hwasung-City, Gyeonggi-Do, Korea.
- FTL may comprise a software sector manager to enable operation of NAND flash memory using standard FAT-based file systems.
- Such an FTL may include an application program interface (API), for example.
- Non-volatile memories such as NAND flash may store data or code without the need for a constant source of power. This capability is useful for portable applications such as digital cameras, MP3 players, PDA's, and data storage in mobile phones, for example.
- flash technology may require particular software to manage data. For this reason, FTL software may perform operations to manage embedded flash memory devices. With FTL software, a user need only use relatively simple file system commands to interact with a NAND flash memory device, for example.
- FIG. 1 is a schematic view of a hardware/software structure, according to an embodiment.
- FIG. 2 is a schematic view of a memory structure, according to another embodiment.
- FIG. 3 is a schematic view of a memory structure, according to yet another embodiment.
- FIG. 4 is a flow diagram of a memory write process, according to an embodiment.
- FIG. 5 is a flow diagram of a memory read process, according to an embodiment.
- FIG. 6 is a flow diagram of a memory delete process, according to an embodiment.
- FIG. 7 is a flow diagram of a memory wear-level process, according to an embodiment.
- FIG. 8 is a flow diagram of a memory format process, according to an embodiment.
- FIG. 9 is a schematic block diagram of a computing system and a memory device, according to an embodiment.
- a NAND flash translation layer may be used to at least partially manage operations of NAND or NAND-based devices, such as OneNANDTM device.
- a OneNANDTM device may comprise a memory that includes one or more NAND devices and is capable of exporting a different memory interface, such as a NOR-like interface, for example.
- An FTL may be included in a memory controller or a micro-controller, for example, or may comprise a portion of an operating system or may be distributed as a software stand alone component.
- an application may generate commands and/or addressing suitable for a hard disk drive or other memory device.
- a NAND FTL may translate such commands and/or addressing to be suitable for NAND flash memory.
- a process of translating such commands and/or addressing and performing a write operation of information to a NAND memory may result in generating metadata, error correction code (ECC), and/or markers associated with the information.
- ECC error correction code
- the information may be written to one portion of NAND memory and metadata, error correction code (ECC), and/or markers associated with the information may be written to another portion of NAND memory.
- the information may be written to a main area of NAND memory and metadata, error correction code (ECC), and/or markers associated with the information may be written to a spare area of the NAND memory.
- a relatively large portion of operations performed by NAND FTL may comprise operations to access (e.g., read/write) spare area of flash memory.
- a duration of time spent accessing memory may be referred to as busy time.
- Busy time to access memory in spare area of NAND flash memory may be substantially the same as time to access memory in a main area of NAND flash memory.
- NAND FTL may spend a relatively large amount of time accessing memory in a spare area of NAND memory to read/write metadata, error correction code (ECC), and/or markers, for example.
- ECC error correction code
- Embodiments included herein describe techniques to improve performance of NAND FTL and flash memory by writing metadata and/or markers to a memory type other than NAND, as described in detail below.
- Such other type of memory may have faster access times, at least for relatively small amounts of information (such as the case for metadata and/or markers, for example) to be read or written, than NAND memory.
- examples describe such other type of memory as comprising phase change memory (PCM), though it is understood that claimed subject matter is not limited to PCM.
- PCM phase change memory
- other types of memory that may be used to write metadata and/or markers may comprise nonvolatile memory such as NOR flash, cell trap NAND flash, EEPROM, and so on.
- writing information to NAND memory and to PCM may be performed in parallel or concurrent operations to further improve performance of flash FTL and flash memory.
- a process to operate NAND flash memory may include receiving a write request via a FTL to store information in a NAND memory array.
- Such information may be associated with metadata, which may be descriptive of one or more locations where the information is to be stored in the NAND memory array.
- metadata may comprise sector numbers, virtual block addresses, error correction code (ECC), bad block markers, and so on.
- ECC error correction code
- metadata may be written to a type of nonvolatile memory other than NAND memory.
- such other type of nonvolatile memory may be selected to have faster read/write speeds than NAND memory, at least for reading/writing relatively small amounts of information, as discussed in detail below. PCM is one example of such memory.
- information to be stored in NAND memory may have associated metadata that may be stored in another type of nonvolatile memory.
- a process to store information in NAND memory may be performed at the same time as a process to store associated metadata in another type of nonvolatile memory. An ability to concurrently perform such processes may result in NAND memory showing faster write-speeds.
- ECC of the information may be written to a spare area of NAND memory while other metadata may be written to another type of a nonvolatile memory device.
- a process such as that described above may involve a memory device comprising a NAND memory array to store information associated with a write request received via a FTL, and a nonvolatile memory being another type of memory than the NAND memory array.
- a nonvolatile memory may store metadata of the information.
- Such a FTL may write information in a main area of a NAND memory array and write metadata in a nonvolatile memory in a parallel process, for example.
- such a nonvolatile memory may comprise PCM.
- details of such a memory device and processes of operating such a memory device are merely examples, and claimed subject matter is not so limited.
- Embodiments such as those described above, may allow for improved performance of storing information in NAND memory by using PCM to store metadata. Though such embodiments may incorporate PCM, merely a relatively small amount of a PCM array may be used to store metadata. For example, less than four megabytes of PCM may be used for every one gigabyte of information to be stored in NAND memory, though claimed subject matter is not limited in this respect.
- information may be stored in multi-level cell (MLC) devices such as NAND flash.
- MLC devices may allow a limited number of times that memory array sectors or pages in the MLC devices may be programmed between two erase operations. Such a limited number of times, or number of operations (NOP), may be merely one. Such a device may then be referred to as a NOP-1 device, for example.
- NOP-1 device such a device may then be referred to as a NOP-1 device, for example.
- the number of program operations on a sector or page between erase operations need not be limited, thus allowing for a relatively easy and more efficient algorithm to ensure power loss data safety as part of a power loss recovery capability.
- such a power loss recovery capability may help to ensure that an unexpected power loss need not corrupt already-written data in a memory system while also helping to ensure that the memory system may operate correctly at a next power on event.
- techniques to provide such a power loss recovery capability may include writing markers and/or commits separately from data itself
- Some NAND or NAND-based devices may have a constraint related to the number of writes on a page between two block erase operations (e.g., NOP-1 devices). Accordingly, such devices may not be power loss safe by themselves. Moving such markers and/or commits to a PCM may overcome such a constraint, providing power loss recovery also for NOP-1 devices (such as for MLC devices).
- FIG. 1 is a schematic view of hardware/software structure 100 , according to an embodiment.
- a memory system may be operatively connected to a processor 140 hosting one or more applications 145 , for example.
- Such applications may initiate commands to access NAND memory 160 and/or PCM 170 to write and/or read information via FTL 110 .
- processor 140 may transmit/receive such commands to/from a file system 150 .
- file system 150 may comprise a computer file system architecture to provide a method of storing and/or organizing computer files and information stored in the computer files.
- file system 150 may be used to organize computer files into a database for storage, organization, manipulation, and/or retrieval by processor 140 .
- FTL 110 may comprise a NAND FTL to at least partially manage operations of NAND memory 160 and/or PCM 170 .
- applications 145 may generate commands and/or addressing suitable for addressing a hard disk drive (not shown) or other memory device.
- FTL 110 may translate such commands and/or addressing to be suitable for NAND flash memory 160 and/or PCM 170 .
- FTL 110 may include a flash abstraction layer (FAL) 120 and a hardware adaptation layer (HAL) 130 .
- FAL 120 may provide a relatively high-level abstraction of the physical organization of NAND memory 160 , emulating rewriting of memory sectors in hard disks by remapping new data to another location in the NAND memory array and marking a previous sector invalid.
- FAL 120 may perform one or more operations to maintain integrity of NAND memory 160 .
- FAL 120 may comprise bad block management (BBM) module 122 , wear-leveling module 124 , garbage collection module 126 , and translation module 128 , for example.
- BBM bad block management
- BBM module 122 may determine whether memory blocks in NAND memory 160 are bad and may hide such bad blocks from FAL 120 to prevent the FAL from accessing them.
- Bad blocks may comprise blocks of NAND memory that contain one or more invalid bits whose reliability is not guaranteed. Bad blocks may be present at the time a NAND memory is manufactured and/or shipped, or bad blocks may develop during the lifetime of the NAND memory, for example.
- Wear-leveling module 124 may monitor and spread the number of write cycles per block. Such a wear-leveling process may be useful for NAND memory, which may be programmed or erased reliably a limited number of times. Memories not involved with a wear-leveling algorithm may comprise blocks that are used at different rates. For example, blocks with relatively long-lived, static data need not endure as many write cycles as blocks involved with frequently-changed data. Wear Leveling module 124 may ensure that a NAND memory array is used substantially uniformly by monitoring and evenly distributing the number of erase cycles per block. Thus, for example, if a block is requested by translation module 128 , the wear leveling module 124 may allocate a least used block, though claimed subject matter is not so limited.
- FAL 120 may emulate rewriting sectors in hard disks by remapping new information to another location of a NAND memory array and marking a previous sector invalid. After some time, it may be necessary to free some invalid memory space to further allow new information to be written. To do this, FAL 120 may implement garbage collection module 126 , which may copy valid sectors of NAND memory into a new free area while erasing information in the old area.
- Translation module 128 may provide translation from virtual to physical addresses and convert logical operations into physical operations on NAND memory 160 . Translation module 128 may also handle exporting of operations available on storage media (e.g., write sector, read sector and format partitioning).
- FTL 110 may include a hardware adaptation layer (HAL) 130 to manage hardware functions of NAND memory 160 and/or PCM 170 .
- HAL 130 may comprise, among other things, a NAND driver 133 and a PCM driver 138 .
- HAL 130 need not include a PCM driver if, for example, other types of memory are used in hardware/software structure 100 .
- HAL 130 may also include ECC module 135 to detect and/or correct a particular number of errors in information to be written to or read from NAND memory 160 .
- ECC module 135 may encode such information to allow the ECC module to identify and/or correct errors in the information.
- FAL 120 may return a message to processor 140 indicating that an operation has failed.
- ECC module 135 may implement ECC code to allow for correction of 1-bit errors and/or to detect 2-bit errors for every 512 bytes of information.
- FIG. 2 is a schematic view of a NAND memory structure 200 , according to an embodiment.
- NAND memory 160 shown in FIG. 1 may comprise NAND memory structure 200 , though claimed subject matter is not so limited.
- NAND memory structure 200 may be partitioned into a main memory area 210 and a spare memory area 220 .
- NAND memory structure 200 may comprise NAND flash memory.
- NAND memory structure 200 may comprise a user-addressable memory space including such main and spare memory areas and/or one or more other memory areas, which may or may not be contiguous with one another, and may or may not reside on a single device.
- Main memory area 210 and spare memory area 220 may comprise independent addressable spaces that may be accessed by read, write, and/or erase processes, for example.
- main memory area 210 may comprise one or more sectors 212 of memory to store information.
- sectors may have a capacity to store two kilobytes of information, though claimed subject matter is not so limited.
- information may be written a sector at a time.
- Spare memory area 220 may be used to store metadata and/or ECC associated with information written to main memory area 210 .
- metadata and/or ECC may have a size of about twenty bytes for every two kilobytes of information (e.g., a size of a sector).
- metadata and/or ECC may be written to spare memory area 220 in a same operation (e.g., at the same time) that information is written to main memory area 210 .
- metadata and/or ECC may be written to spare memory area 220 in an operation separate and/or subsequent to an operation of writing information to main memory area 210 .
- write performance of NAND memory structure 200 may be relatively slow because the time it takes to write twenty bytes of metadata and/or ECC may be as long as the time it takes to write two kilobytes of information, for example.
- write operations may be performed on no less than a sector of NAND memory at a time, whether writing to main memory area 210 or spare memory area 220 .
- Another type of nonvolatile memory such as PCM for example, may be written to less than a sector at a time. Accordingly, as discussed in detail below, PCM may be incorporated to store metadata, resulting in improved performance of NAND write operations.
- FIG. 3 is a schematic view of a memory structure 300 , according to an embodiment.
- Memory structure 300 may comprise NAND memory 305 and secondary memory 330 , which may comprise PCM or other nonvolatile memory other than NAND memory.
- NAND memory 160 shown in FIG. 1 may comprise NAND memory 305 , though claimed subject matter is not so limited.
- secondary memory 330 comprises PCM 330 . It is understood, however, that any of a number of memory types may be used in place of PCM, and claimed subject matter is not limited in this respect.
- NAND memory 305 may be partitioned into a main memory area 310 and a spare memory area 320 .
- NAND memory 305 may comprise NAND flash memory.
- Main memory area 310 and spare memory area 320 may comprise independent addressable spaces that may be accessed by read, and/or write processes, for example.
- main memory area 310 may comprise one or more sectors 312 of physical memory to store information.
- sectors 212 in FIG. 2 such sectors may have a substantially uniform, predefined capacity to store information, though claimed subject matter is not so limited.
- Spare memory area 320 may be used to store ECC and/or bad block information.
- ECC may be associated with information written to main memory area 310
- bad block information may be descriptive of sectors 312 in NAND memory 305 , for example.
- markers may also be written to and maintained in PCM 330 .
- markers may comprise invalid block markers, delete sector markers, and/or markers resulting from write commit and/or erase commit to ensure that an erase operation of a particular block is completed, just to name a few examples.
- Markers may also include write commit, used to ensure that information written is valid during write operations, and invalid block markers to indicate that a particular block contains invalid information.
- such metadata may have a size of about twenty bytes for every two kilobytes of information (e.g., a size of a sector).
- metadata and/or markers may be written to PCM 330 in a same operation (e.g., at the same time) that information is written to main memory area 310 of NAND memory 305 .
- metadata and/or markers may be written to PCM 330 in an operation separate and/or subsequent to an operation to write information to main memory area 310 .
- write performance of memory structure 300 may be improved compared to write performance of memory structure 200 .
- write operations may be performed on no less than a sector of NAND memory 305 at a time, but write operations may be performed a byte at a time in PCM 330 , for example.
- introducing a secondary memory, such as PCM 330 to memory structure 300 to store metadata may result in improved write performance.
- PCM 330 secondary memory
- FIG. 4 is a flow diagram of a memory write process 400 , according to an embodiment.
- memory write process may be performed using memory structure 300 shown in FIG. 3 .
- a FTL such as FTL 110 shown in FIG. 1
- FTL may receive a write operation request to write information in NAND memory.
- Such an FTL may comprise at least a portion of write, erase, read, and/or format processes, for example, which may be performed by a processor, a memory controller, or by a dedicated micro-controller.
- Such a request for example, may originate from a processor connected to the FTL.
- the FTL may determine a free portion of NAND memory in which to write information of the write request.
- the FTL may determine ECC for the information to be written to NAND memory.
- ECC may be written to a spare area of NAND memory while associated information may be written to a main area of NAND memory.
- metadata associated with the information being written to NAND memory may be written to PCM in a parallel process. Process 400 may then proceed to oval 460 to end a write process.
- details of such a process are merely examples, and claimed subject matter is not so limited.
- FIG. 5 is a flow diagram of a memory read process 500 , according to an embodiment.
- memory read process may be performed using memory structure 300 shown in FIG. 3 .
- a FTL such as FTL 110 shown in FIG. 1
- the FTL may receive a read operation request to read information in NAND memory.
- a request for example, may originate from a processor operationally connected to the FTL.
- the FTL may determine a location of NAND memory from where to read information of the read request. Such determining may be based, at least in part, on an address that may accompany a read request.
- the FTL may read metadata from PCM.
- a location where such metadata is stored may be uniquely associated with the block and page number of an associated read request. Such a location may be calculated starting from a base address in PCM space, depending on the implementation. Of course, such details are merely examples. Other techniques or schema, which may be relatively complex, may be involved to calculate or determine location where metadata may be stored. For example, such schema may involve a variable number of bytes per page and/or additional bytes associated with a block or a set of blocks. In another example, such schema may involve associating different locations to the same page in different statuses or times, though claimed subject matter is not limited in this respect.
- information stored in a main area of NAND memory may be read and ECC associated with the information may be retrieved from a spare area of NAND memory. Process 500 may then proceed to oval 550 to end a read process. Of course, details of such a process are merely examples, and claimed subject matter is not so limited.
- FIG. 6 is a flow diagram of a memory delete process 600 , according to an embodiment.
- memory delete process may be performed using memory structure 300 shown in FIG. 3 .
- a FTL such as FTL 110 shown in FIG. 1 , for example, may receive a delete operation request to delete information in NAND memory.
- a request for example, may originate from a processor operationally connected to the FTL.
- the FTL may determine a location of NAND memory from where to delete information of the delete request. Such determining may be based, at least in part, on an address that may accompany a delete request.
- the FTL may set a delete flag or perform another process to indicate that a particular portion of NAND memory has been deleted.
- a delete flag for example, may be written as metadata in PCM.
- Process 600 may then proceed to oval 640 to end a delete process.
- details of such a process are merely examples, and claimed subject matter is not so limited.
- FIG. 7 is a flow diagram of a memory wear-level process 700 , according to an embodiment. Such a process may lead to substantially uniform usage of physical blocks in a NAND memory.
- a FTL such as FTL 110 shown in FIG. 1 , for example, may receive a wear-level operation request from a processor operationally connected to the FTL.
- FTL may initiate a wear-level process from time to time or on a scheduled basis, and claimed subject matter is not limited in this respect.
- Such a process may include relocating data stored in an initial portion of memory to another portion of memory. Accordingly, FTL may modify an address that identifies the initial portion of memory to an address that identifies the new portion of memory to contain the relocated data.
- a memory block X of information stored in a main area of NAND memory may be moved to a memory block Y in the main area of NAND memory, for example, as at block 720 .
- Metadata associated with the information moved from memory block X may be stored in PCM, as discussed above.
- such metadata may be moved from its present location in the PCM to another location in the PCM that corresponds to memory block Y.
- operations to write to the PCM may be performed to store new information mapping between a NAND memory and PCM locations.
- moving memory blocks of information in NAND and moving metadata associated with the information may be performed in parallel processes (e.g., performed at the same time), though claimed subject matter is not so limited.
- FTL may set a particular flag to indicate that memory block X is “invalid” so that the FTL may avoid writing new information to memory block X, at least for a particular time, for example.
- Such a flag may also indicate that memory block X no longer stores valid information.
- Such a flag may be written to and maintained by the PCM.
- relatively small amounts of data such as a flag, may be written to PCM, whereas writing to NAND memory may be performed in no less than sectors of data.
- NAND memory may be improved (e.g., time may be saved) by writing a flag to PCM instead of the NAND memory.
- Process 700 may then proceed to oval 750 to end a wear-level process.
- details of such a process are merely examples, and claimed subject matter is not so limited.
- FIG. 8 is a flow diagram of a memory format process 800 , according to an embodiment.
- FTL may perform such a process to erase all blocks or a contiguous area of memory in a NAND memory sequentially one block at a time.
- a counter x may be initially set to the number of the first block in the area to be erased, such as zero in the case described in process 800 .
- FTL may perform an operation to erase the x th block of NAND memory. If x comprises the initial value zero, such a block may be the first block of a memory device to be erased.
- metadata associated with the x-numbered block in the NAND memory may be generated and written to PCM.
- metadata may comprise the number of erases performed on a given block.
- relatively small amounts of data, such as metadata may be written to PCM, whereas writing to NAND memory may be performed in no less than blocks of data. Accordingly, performance of NAND memory may be improved (e.g., time may be saved) by writing metadata to PCM instead of the NAND memory.
- counter x may be incremented to a subsequent value.
- process 800 may end at oval 860 .
- process 800 may return to blocks 820 and 830 to erase the x-numbered block in the NAND memory and to generate metadata associated with the x-numbered block.
- process 800 may return to blocks 820 and 830 to erase the x-numbered block in the NAND memory and to generate metadata associated with the x-numbered block.
- FIG. 9 is a schematic diagram illustrating an exemplary embodiment of a computing system 900 including a memory device 910 .
- a computing device may comprise one or more processors, for example, to execute an application and/or other code.
- a computing device 904 may be representative of any device, appliance, or machine that may be configurable to manage memory device 910 .
- Memory device 910 may include a memory controller 915 and a memory 922 .
- computing device 904 may include: one or more computing devices and/or platforms, such as, e.g., a desktop computer, a laptop computer, a workstation, a server device, or the like; one or more personal computing or communication devices or appliances, such as, e.g., a personal digital assistant, mobile communication device, or the like; a computing system and/or associated service provider capability, such as, e.g., a database or data storage service provider/system; and/or any combination thereof.
- computing devices and/or platforms such as, e.g., a desktop computer, a laptop computer, a workstation, a server device, or the like
- personal computing or communication devices or appliances such as, e.g., a personal digital assistant, mobile communication device, or the like
- a computing system and/or associated service provider capability such as, e.g., a database or data storage service provider/system; and/or any combination thereof.
- computing device 904 may include at least one processing unit 920 that is operatively coupled to memory 922 through a bus 940 and a host or memory controller 915 .
- Processing unit 920 is representative of one or more circuits configurable to perform at least a portion of a data computing procedure or process.
- processing unit 920 may include one or more processors, controllers, microprocessors, microcontrollers, application specific integrated circuits, digital signal processors, programmable logic devices, field programmable gate arrays, and the like, or any combination thereof.
- Processing unit 920 may include an operating system configured to communicate with memory controller 915 .
- Such an operating system may, for example, generate commands to be sent to memory controller 915 over bus 940 .
- memory controller 915 may comprise an internal memory controller or an internal write state machine, wherein an external memory controller (not shown) may be external to memory device 910 and may act as an interface between the system processor and the memory itself, for example.
- Such commands may comprise read and/or write commands.
- Memory 910 is representative of any data storage mechanism.
- memory 922 may include primary memory 924 and/or a secondary memory 926 .
- Primary memory 924 may comprise NAND, for example, while secondary memory 926 may comprise a PCM. While illustrated in this example as being separate from processing unit 920 , it should be understood that all or part of primary memory 924 may be provided within or otherwise co-located/coupled with processing unit 920 .
- computing system 900 may comprise a memory device that includes an array of NAND memory cells and a FTL to receive a write request to store information in the array of NAND memory cells, determine metadata of the information, write the information in the array of NAND memory cells, and write the metadata in a nonvolatile memory other than the NAND memory array.
- Such other nonvolatile memory may comprise PCM, for example.
- System 900 may further include processor 920 to host one or more applications and to initiate the write request to the flash translation layer to provide access to the NAND memory cells in the memory device.
- Secondary memory 926 may include, for example, the same or similar type of memory as primary memory and/or one or more data storage devices or systems, such as, for example, a disk drive, an optical disc drive, a tape drive, a solid state memory drive, etc.
- secondary memory 926 may be operatively receptive of, or otherwise configurable to couple to, a computer-readable medium 928 .
- Computer-readable medium 928 may include, for example, any medium that can carry and/or make accessible data, code, and/or instructions for one or more of the devices in system 900 .
- Computing device 904 may include, for example, an input/output 932 .
- Input/output 932 is representative of one or more devices or features that may be configurable to accept or otherwise introduce human and/or machine inputs, and/or one or more devices or features that may be configurable to deliver or otherwise provide for human and/or machine outputs.
- input/output device 932 may include an operatively configured display, speaker, keyboard, mouse, trackball, touch screen, data port, etc.
- one or more portions of such memories may store digital signals representative of data and/or information as expressed by a particular state of the memories.
- an electronic signal representative of data and/or information may be “stored” in a portion of memory device by affecting or changing the state of such portions of memories to represent data and/or information as binary information (e.g., ones and zeros).
- binary information e.g., ones and zeros.
- such a change of state of the portion of memory to store a signal representative of data and/or information constitutes a transformation of memories to a different state or thing.
- details of such memories are merely examples, and claimed subject matter is not so limited.
- Embodiments described herein may include machines, devices, engines, or apparatuses that operate using digital signals.
- Such signals may comprise electronic signals, optical signals, electromagnetic signals, or any form of energy that provides information between locations.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Subject matter disclosed herein relates to storing information via a NAND flash translation layer.
Description
- 1. Field
- Subject matter disclosed herein relates to storing information via a flash translation layer.
- 2. Information
- Electronic devices may include a NAND flash translation layer (FTL) between a file allocation table (FAT) file system, for example, and NAND-based flash memory, such as NAND or OneNAND™, available from Samsung Electronics of Hwasung-City, Gyeonggi-Do, Korea. FTL may comprise a software sector manager to enable operation of NAND flash memory using standard FAT-based file systems. Such an FTL may include an application program interface (API), for example. Non-volatile memories such as NAND flash may store data or code without the need for a constant source of power. This capability is useful for portable applications such as digital cameras, MP3 players, PDA's, and data storage in mobile phones, for example. However, flash technology may require particular software to manage data. For this reason, FTL software may perform operations to manage embedded flash memory devices. With FTL software, a user need only use relatively simple file system commands to interact with a NAND flash memory device, for example.
- Non-limiting and non-exhaustive embodiments will be described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various figures unless otherwise specified.
-
FIG. 1 is a schematic view of a hardware/software structure, according to an embodiment. -
FIG. 2 is a schematic view of a memory structure, according to another embodiment. -
FIG. 3 is a schematic view of a memory structure, according to yet another embodiment. -
FIG. 4 is a flow diagram of a memory write process, according to an embodiment. -
FIG. 5 is a flow diagram of a memory read process, according to an embodiment. -
FIG. 6 is a flow diagram of a memory delete process, according to an embodiment. -
FIG. 7 is a flow diagram of a memory wear-level process, according to an embodiment. -
FIG. 8 is a flow diagram of a memory format process, according to an embodiment. -
FIG. 9 is a schematic block diagram of a computing system and a memory device, according to an embodiment. - Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of claimed subject matter. Thus, the appearances of the phrase “in one embodiment” or “an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in one or more embodiments.
- In an embodiment, a NAND flash translation layer (FTL) may be used to at least partially manage operations of NAND or NAND-based devices, such as OneNAND™ device. Such a OneNAND™ device may comprise a memory that includes one or more NAND devices and is capable of exporting a different memory interface, such as a NOR-like interface, for example. An FTL may be included in a memory controller or a micro-controller, for example, or may comprise a portion of an operating system or may be distributed as a software stand alone component. For example, an application may generate commands and/or addressing suitable for a hard disk drive or other memory device. A NAND FTL may translate such commands and/or addressing to be suitable for NAND flash memory. In an implementation, a process of translating such commands and/or addressing and performing a write operation of information to a NAND memory, for example, may result in generating metadata, error correction code (ECC), and/or markers associated with the information. Accordingly, the information may be written to one portion of NAND memory and metadata, error correction code (ECC), and/or markers associated with the information may be written to another portion of NAND memory. In a particular example, the information may be written to a main area of NAND memory and metadata, error correction code (ECC), and/or markers associated with the information may be written to a spare area of the NAND memory.
- In one implementation, a relatively large portion of operations performed by NAND FTL may comprise operations to access (e.g., read/write) spare area of flash memory. A duration of time spent accessing memory may be referred to as busy time. Busy time to access memory in spare area of NAND flash memory may be substantially the same as time to access memory in a main area of NAND flash memory. Thus, NAND FTL may spend a relatively large amount of time accessing memory in a spare area of NAND memory to read/write metadata, error correction code (ECC), and/or markers, for example. Embodiments included herein describe techniques to improve performance of NAND FTL and flash memory by writing metadata and/or markers to a memory type other than NAND, as described in detail below. Such other type of memory may have faster access times, at least for relatively small amounts of information (such as the case for metadata and/or markers, for example) to be read or written, than NAND memory. Herein, examples describe such other type of memory as comprising phase change memory (PCM), though it is understood that claimed subject matter is not limited to PCM. For example, other types of memory that may be used to write metadata and/or markers may comprise nonvolatile memory such as NOR flash, cell trap NAND flash, EEPROM, and so on. In particular embodiments, writing information to NAND memory and to PCM may be performed in parallel or concurrent operations to further improve performance of flash FTL and flash memory.
- In an embodiment, a process to operate NAND flash memory may include receiving a write request via a FTL to store information in a NAND memory array. Such information may be associated with metadata, which may be descriptive of one or more locations where the information is to be stored in the NAND memory array. For example, metadata may comprise sector numbers, virtual block addresses, error correction code (ECC), bad block markers, and so on. In one implementation, such metadata may be written to a type of nonvolatile memory other than NAND memory. In particular, such other type of nonvolatile memory may be selected to have faster read/write speeds than NAND memory, at least for reading/writing relatively small amounts of information, as discussed in detail below. PCM is one example of such memory. Thus, information to be stored in NAND memory may have associated metadata that may be stored in another type of nonvolatile memory. In one particular implementation, a process to store information in NAND memory may be performed at the same time as a process to store associated metadata in another type of nonvolatile memory. An ability to concurrently perform such processes may result in NAND memory showing faster write-speeds. In another particular implementation, ECC of the information may be written to a spare area of NAND memory while other metadata may be written to another type of a nonvolatile memory device.
- In one embodiment, a process such as that described above may involve a memory device comprising a NAND memory array to store information associated with a write request received via a FTL, and a nonvolatile memory being another type of memory than the NAND memory array. Such other type of memory may store metadata of the information. Such a FTL may write information in a main area of a NAND memory array and write metadata in a nonvolatile memory in a parallel process, for example. In an implementation, such a nonvolatile memory may comprise PCM. Of course, details of such a memory device and processes of operating such a memory device are merely examples, and claimed subject matter is not so limited.
- Embodiments, such as those described above, may allow for improved performance of storing information in NAND memory by using PCM to store metadata. Though such embodiments may incorporate PCM, merely a relatively small amount of a PCM array may be used to store metadata. For example, less than four megabytes of PCM may be used for every one gigabyte of information to be stored in NAND memory, though claimed subject matter is not limited in this respect.
- In an implementation, information may be stored in multi-level cell (MLC) devices such as NAND flash. Such MLC devices may allow a limited number of times that memory array sectors or pages in the MLC devices may be programmed between two erase operations. Such a limited number of times, or number of operations (NOP), may be merely one. Such a device may then be referred to as a NOP-1 device, for example. In one implementation, the number of program operations on a sector or page between erase operations need not be limited, thus allowing for a relatively easy and more efficient algorithm to ensure power loss data safety as part of a power loss recovery capability. For example, such a power loss recovery capability may help to ensure that an unexpected power loss need not corrupt already-written data in a memory system while also helping to ensure that the memory system may operate correctly at a next power on event. In an implementation, techniques to provide such a power loss recovery capability may include writing markers and/or commits separately from data itself Some NAND or NAND-based devices may have a constraint related to the number of writes on a page between two block erase operations (e.g., NOP-1 devices). Accordingly, such devices may not be power loss safe by themselves. Moving such markers and/or commits to a PCM may overcome such a constraint, providing power loss recovery also for NOP-1 devices (such as for MLC devices).
-
FIG. 1 is a schematic view of hardware/software structure 100, according to an embodiment. Such a memory system may be operatively connected to aprocessor 140 hosting one ormore applications 145, for example. Such applications may initiate commands to accessNAND memory 160 and/orPCM 170 to write and/or read information viaFTL 110. In one implementation,processor 140 may transmit/receive such commands to/from afile system 150. In such a case,file system 150 may comprise a computer file system architecture to provide a method of storing and/or organizing computer files and information stored in the computer files. For example,file system 150 may be used to organize computer files into a database for storage, organization, manipulation, and/or retrieval byprocessor 140.FTL 110 may comprise a NAND FTL to at least partially manage operations ofNAND memory 160 and/orPCM 170. For example,applications 145 may generate commands and/or addressing suitable for addressing a hard disk drive (not shown) or other memory device.FTL 110 may translate such commands and/or addressing to be suitable forNAND flash memory 160 and/orPCM 170. - In a particular implementation,
FTL 110 may include a flash abstraction layer (FAL) 120 and a hardware adaptation layer (HAL) 130. For example,FAL 120 may provide a relatively high-level abstraction of the physical organization ofNAND memory 160, emulating rewriting of memory sectors in hard disks by remapping new data to another location in the NAND memory array and marking a previous sector invalid. In addition,FAL 120 may perform one or more operations to maintain integrity ofNAND memory 160. For example,FAL 120 may comprise bad block management (BBM)module 122, wear-levelingmodule 124,garbage collection module 126, andtranslation module 128, for example.BBM module 122 may determine whether memory blocks inNAND memory 160 are bad and may hide such bad blocks fromFAL 120 to prevent the FAL from accessing them. Bad blocks may comprise blocks of NAND memory that contain one or more invalid bits whose reliability is not guaranteed. Bad blocks may be present at the time a NAND memory is manufactured and/or shipped, or bad blocks may develop during the lifetime of the NAND memory, for example. - Wear-leveling
module 124 may monitor and spread the number of write cycles per block. Such a wear-leveling process may be useful for NAND memory, which may be programmed or erased reliably a limited number of times. Memories not involved with a wear-leveling algorithm may comprise blocks that are used at different rates. For example, blocks with relatively long-lived, static data need not endure as many write cycles as blocks involved with frequently-changed data. Wear Levelingmodule 124 may ensure that a NAND memory array is used substantially uniformly by monitoring and evenly distributing the number of erase cycles per block. Thus, for example, if a block is requested bytranslation module 128, thewear leveling module 124 may allocate a least used block, though claimed subject matter is not so limited. -
FAL 120 may emulate rewriting sectors in hard disks by remapping new information to another location of a NAND memory array and marking a previous sector invalid. After some time, it may be necessary to free some invalid memory space to further allow new information to be written. To do this,FAL 120 may implementgarbage collection module 126, which may copy valid sectors of NAND memory into a new free area while erasing information in the old area.Translation module 128 may provide translation from virtual to physical addresses and convert logical operations into physical operations onNAND memory 160.Translation module 128 may also handle exporting of operations available on storage media (e.g., write sector, read sector and format partitioning). - As mentioned above,
FTL 110 may include a hardware adaptation layer (HAL) 130 to manage hardware functions ofNAND memory 160 and/orPCM 170. For example, in one implementation,HAL 130 may comprise, among other things, aNAND driver 133 and aPCM driver 138. In other implementations,HAL 130 need not include a PCM driver if, for example, other types of memory are used in hardware/software structure 100.HAL 130 may also includeECC module 135 to detect and/or correct a particular number of errors in information to be written to or read fromNAND memory 160.ECC module 135 may encode such information to allow the ECC module to identify and/or correct errors in the information. In a particular example, ifECC module 135 does not correct one or more errors successfully,FAL 120 may return a message toprocessor 140 indicating that an operation has failed. As an illustrative example,ECC module 135 may implement ECC code to allow for correction of 1-bit errors and/or to detect 2-bit errors for every 512 bytes of information. -
FIG. 2 is a schematic view of aNAND memory structure 200, according to an embodiment. For example,NAND memory 160 shown inFIG. 1 may compriseNAND memory structure 200, though claimed subject matter is not so limited.NAND memory structure 200 may be partitioned into amain memory area 210 and aspare memory area 220.NAND memory structure 200 may comprise NAND flash memory.NAND memory structure 200 may comprise a user-addressable memory space including such main and spare memory areas and/or one or more other memory areas, which may or may not be contiguous with one another, and may or may not reside on a single device.Main memory area 210 andspare memory area 220 may comprise independent addressable spaces that may be accessed by read, write, and/or erase processes, for example. In one implementation,main memory area 210 may comprise one ormore sectors 212 of memory to store information. For example, such sectors may have a capacity to store two kilobytes of information, though claimed subject matter is not so limited. For NAND memory, information may be written a sector at a time.Spare memory area 220 may be used to store metadata and/or ECC associated with information written tomain memory area 210. In a particular example, such metadata and/or ECC may have a size of about twenty bytes for every two kilobytes of information (e.g., a size of a sector). In one implementation, metadata and/or ECC may be written to sparememory area 220 in a same operation (e.g., at the same time) that information is written tomain memory area 210. On the other hand, in another implementation, metadata and/or ECC may be written to sparememory area 220 in an operation separate and/or subsequent to an operation of writing information tomain memory area 210. In this case, write performance ofNAND memory structure 200 may be relatively slow because the time it takes to write twenty bytes of metadata and/or ECC may be as long as the time it takes to write two kilobytes of information, for example. As mentioned above, write operations may be performed on no less than a sector of NAND memory at a time, whether writing tomain memory area 210 orspare memory area 220. Another type of nonvolatile memory, however, such as PCM for example, may be written to less than a sector at a time. Accordingly, as discussed in detail below, PCM may be incorporated to store metadata, resulting in improved performance of NAND write operations. -
FIG. 3 is a schematic view of amemory structure 300, according to an embodiment.Memory structure 300 may compriseNAND memory 305 andsecondary memory 330, which may comprise PCM or other nonvolatile memory other than NAND memory. For example,NAND memory 160 shown inFIG. 1 may compriseNAND memory 305, though claimed subject matter is not so limited. For illustrative reasons, the embodiment ofFIG. 3 will be described so thatsecondary memory 330 comprisesPCM 330. It is understood, however, that any of a number of memory types may be used in place of PCM, and claimed subject matter is not limited in this respect. As described forFIG. 2 above,NAND memory 305 may be partitioned into amain memory area 310 and aspare memory area 320.NAND memory 305 may comprise NAND flash memory.Main memory area 310 andspare memory area 320 may comprise independent addressable spaces that may be accessed by read, and/or write processes, for example. In one implementation,main memory area 310 may comprise one ormore sectors 312 of physical memory to store information. For example, as described above forsectors 212 inFIG. 2 , such sectors may have a substantially uniform, predefined capacity to store information, though claimed subject matter is not so limited.Spare memory area 320 may be used to store ECC and/or bad block information. In particular, such ECC may be associated with information written tomain memory area 310, and bad block information may be descriptive ofsectors 312 inNAND memory 305, for example. Meanwhile, metadata (such as that associated with garbage collection and/or wear-leveling for example) associated with information written tomain memory area 310 may be written to and maintained inPCM 330. In one implementation, markers may also be written to and maintained inPCM 330. Such markers, which may be generated if information is written tomain memory area 310, may comprise invalid block markers, delete sector markers, and/or markers resulting from write commit and/or erase commit to ensure that an erase operation of a particular block is completed, just to name a few examples. Markers may also include write commit, used to ensure that information written is valid during write operations, and invalid block markers to indicate that a particular block contains invalid information. - As mentioned above, such metadata (as well as markers) may have a size of about twenty bytes for every two kilobytes of information (e.g., a size of a sector). In one implementation, metadata and/or markers may be written to
PCM 330 in a same operation (e.g., at the same time) that information is written tomain memory area 310 ofNAND memory 305. On the other hand, in another implementation, metadata and/or markers may be written toPCM 330 in an operation separate and/or subsequent to an operation to write information tomain memory area 310. Because small amounts of data (e.g., twenty bytes) may be written toPCM 330 faster than would be the case for writing to NANDspare memory 320, write performance ofmemory structure 300 may be improved compared to write performance ofmemory structure 200. As mentioned above, write operations may be performed on no less than a sector ofNAND memory 305 at a time, but write operations may be performed a byte at a time inPCM 330, for example. Thus, introducing a secondary memory, such asPCM 330, tomemory structure 300 to store metadata may result in improved write performance. Of course, such details ofmemory structure 300 are merely examples, and claimed subject matter is not so limited. -
FIG. 4 is a flow diagram of amemory write process 400, according to an embodiment. In one example, memory write process may be performed usingmemory structure 300 shown inFIG. 3 . Atblock 410, a FTL, such asFTL 110 shown inFIG. 1 , for example, may receive a write operation request to write information in NAND memory. Such an FTL may comprise at least a portion of write, erase, read, and/or format processes, for example, which may be performed by a processor, a memory controller, or by a dedicated micro-controller. Such a request, for example, may originate from a processor connected to the FTL. As a result, atblock 420, the FTL may determine a free portion of NAND memory in which to write information of the write request. In addition to considering which portions of NAND memory are free, such a determination may be based, at least in part, on wear-leveling and/or bad block information, among other things. Atblock 430, the FTL may determine ECC for the information to be written to NAND memory. Atblock 440, such ECC may be written to a spare area of NAND memory while associated information may be written to a main area of NAND memory. In a particular implementation, atblock 450, metadata associated with the information being written to NAND memory may be written to PCM in a parallel process.Process 400 may then proceed to oval 460 to end a write process. Of course, details of such a process are merely examples, and claimed subject matter is not so limited. -
FIG. 5 is a flow diagram of amemory read process 500, according to an embodiment. In one example, memory read process may be performed usingmemory structure 300 shown inFIG. 3 . Atblock 510, a FTL, such asFTL 110 shown inFIG. 1 , for example, may receive a read operation request to read information in NAND memory. Such a request, for example, may originate from a processor operationally connected to the FTL. As a result, atblock 520, the FTL may determine a location of NAND memory from where to read information of the read request. Such determining may be based, at least in part, on an address that may accompany a read request. Atblock 530, the FTL may read metadata from PCM. A location where such metadata is stored may be uniquely associated with the block and page number of an associated read request. Such a location may be calculated starting from a base address in PCM space, depending on the implementation. Of course, such details are merely examples. Other techniques or schema, which may be relatively complex, may be involved to calculate or determine location where metadata may be stored. For example, such schema may involve a variable number of bytes per page and/or additional bytes associated with a block or a set of blocks. In another example, such schema may involve associating different locations to the same page in different statuses or times, though claimed subject matter is not limited in this respect. Atblock 540, information stored in a main area of NAND memory may be read and ECC associated with the information may be retrieved from a spare area of NAND memory.Process 500 may then proceed to oval 550 to end a read process. Of course, details of such a process are merely examples, and claimed subject matter is not so limited. -
FIG. 6 is a flow diagram of a memorydelete process 600, according to an embodiment. In one example, memory delete process may be performed usingmemory structure 300 shown inFIG. 3 . Atblock 610, a FTL, such asFTL 110 shown inFIG. 1 , for example, may receive a delete operation request to delete information in NAND memory. Such a request, for example, may originate from a processor operationally connected to the FTL. As a result, atblock 620, the FTL may determine a location of NAND memory from where to delete information of the delete request. Such determining may be based, at least in part, on an address that may accompany a delete request. Atblock 630, the FTL may set a delete flag or perform another process to indicate that a particular portion of NAND memory has been deleted. Such a delete flag, for example, may be written as metadata in PCM.Process 600 may then proceed to oval 640 to end a delete process. Of course, details of such a process are merely examples, and claimed subject matter is not so limited. -
FIG. 7 is a flow diagram of a memory wear-level process 700, according to an embodiment. Such a process may lead to substantially uniform usage of physical blocks in a NAND memory. Atblock 710, a FTL, such asFTL 110 shown inFIG. 1 , for example, may receive a wear-level operation request from a processor operationally connected to the FTL. In another implementation, FTL may initiate a wear-level process from time to time or on a scheduled basis, and claimed subject matter is not limited in this respect. Such a process may include relocating data stored in an initial portion of memory to another portion of memory. Accordingly, FTL may modify an address that identifies the initial portion of memory to an address that identifies the new portion of memory to contain the relocated data. In particular wear-level process 700, a memory block X of information stored in a main area of NAND memory may be moved to a memory block Y in the main area of NAND memory, for example, as atblock 720. Metadata associated with the information moved from memory block X may be stored in PCM, as discussed above. Atblock 730, such metadata may be moved from its present location in the PCM to another location in the PCM that corresponds to memory block Y. In one implementation, operations to write to the PCM may be performed to store new information mapping between a NAND memory and PCM locations. In one implementation of wear-level process 700, moving memory blocks of information in NAND and moving metadata associated with the information may be performed in parallel processes (e.g., performed at the same time), though claimed subject matter is not so limited. Atblock 740, FTL may set a particular flag to indicate that memory block X is “invalid” so that the FTL may avoid writing new information to memory block X, at least for a particular time, for example. Such a flag may also indicate that memory block X no longer stores valid information. Such a flag may be written to and maintained by the PCM. As discussed above, relatively small amounts of data, such as a flag, may be written to PCM, whereas writing to NAND memory may be performed in no less than sectors of data. Accordingly, performance of NAND memory may be improved (e.g., time may be saved) by writing a flag to PCM instead of the NAND memory.Process 700 may then proceed to oval 750 to end a wear-level process. Of course, details of such a process are merely examples, and claimed subject matter is not so limited. -
FIG. 8 is a flow diagram of amemory format process 800, according to an embodiment. For example, FTL may perform such a process to erase all blocks or a contiguous area of memory in a NAND memory sequentially one block at a time. Atblock 810, a counter x may be initially set to the number of the first block in the area to be erased, such as zero in the case described inprocess 800. Atblock 820, FTL may perform an operation to erase the xth block of NAND memory. If x comprises the initial value zero, such a block may be the first block of a memory device to be erased. In one implementation, in a parallel process, atblock 830, metadata associated with the x-numbered block in the NAND memory may be generated and written to PCM. In an example, such metadata may comprise the number of erases performed on a given block. As mentioned above forprocess 700, relatively small amounts of data, such as metadata, may be written to PCM, whereas writing to NAND memory may be performed in no less than blocks of data. Accordingly, performance of NAND memory may be improved (e.g., time may be saved) by writing metadata to PCM instead of the NAND memory. Atblock 840, counter x may be incremented to a subsequent value. Atdiamond 850, if counter x is greater than the number of blocks to be erased, then process 800 may end atoval 860. On the other hand, if counter x is less than the number of blocks to be erased, then process 800 may return toblocks -
FIG. 9 is a schematic diagram illustrating an exemplary embodiment of acomputing system 900 including amemory device 910. Such a computing device may comprise one or more processors, for example, to execute an application and/or other code. Acomputing device 904 may be representative of any device, appliance, or machine that may be configurable to managememory device 910.Memory device 910 may include amemory controller 915 and amemory 922. By way of example but not limitation,computing device 904 may include: one or more computing devices and/or platforms, such as, e.g., a desktop computer, a laptop computer, a workstation, a server device, or the like; one or more personal computing or communication devices or appliances, such as, e.g., a personal digital assistant, mobile communication device, or the like; a computing system and/or associated service provider capability, such as, e.g., a database or data storage service provider/system; and/or any combination thereof. - It is recognized that all or part of the various devices shown in
system 900, and the processes and methods as further described herein, may be implemented using or otherwise including hardware, firmware, software, or any combination thereof. Thus, by way of example but not limitation,computing device 904 may include at least oneprocessing unit 920 that is operatively coupled tomemory 922 through abus 940 and a host ormemory controller 915.Processing unit 920 is representative of one or more circuits configurable to perform at least a portion of a data computing procedure or process. By way of example but not limitation, processingunit 920 may include one or more processors, controllers, microprocessors, microcontrollers, application specific integrated circuits, digital signal processors, programmable logic devices, field programmable gate arrays, and the like, or any combination thereof.Processing unit 920 may include an operating system configured to communicate withmemory controller 915. Such an operating system may, for example, generate commands to be sent tomemory controller 915 overbus 940. In one implementation,memory controller 915 may comprise an internal memory controller or an internal write state machine, wherein an external memory controller (not shown) may be external tomemory device 910 and may act as an interface between the system processor and the memory itself, for example. Such commands may comprise read and/or write commands. -
Memory 910 is representative of any data storage mechanism. In an implementation,memory 922 may includeprimary memory 924 and/or asecondary memory 926.Primary memory 924 may comprise NAND, for example, whilesecondary memory 926 may comprise a PCM. While illustrated in this example as being separate fromprocessing unit 920, it should be understood that all or part ofprimary memory 924 may be provided within or otherwise co-located/coupled withprocessing unit 920. - In one embodiment,
computing system 900 may comprise a memory device that includes an array of NAND memory cells and a FTL to receive a write request to store information in the array of NAND memory cells, determine metadata of the information, write the information in the array of NAND memory cells, and write the metadata in a nonvolatile memory other than the NAND memory array. Such other nonvolatile memory may comprise PCM, for example.System 900 may further includeprocessor 920 to host one or more applications and to initiate the write request to the flash translation layer to provide access to the NAND memory cells in the memory device. -
Secondary memory 926 may include, for example, the same or similar type of memory as primary memory and/or one or more data storage devices or systems, such as, for example, a disk drive, an optical disc drive, a tape drive, a solid state memory drive, etc. In certain implementations,secondary memory 926 may be operatively receptive of, or otherwise configurable to couple to, a computer-readable medium 928. Computer-readable medium 928 may include, for example, any medium that can carry and/or make accessible data, code, and/or instructions for one or more of the devices insystem 900. -
Computing device 904 may include, for example, an input/output 932. Input/output 932 is representative of one or more devices or features that may be configurable to accept or otherwise introduce human and/or machine inputs, and/or one or more devices or features that may be configurable to deliver or otherwise provide for human and/or machine outputs. By way of example but not limitation, input/output device 932 may include an operatively configured display, speaker, keyboard, mouse, trackball, touch screen, data port, etc. - In the above description, numerous specific details are set forth to provide a thorough understanding of claimed subject matter. However, it will be understood by those skilled in the art that claimed subject matter may be practiced without these specific details. In other instances, methods, apparatuses, or systems that would be known by one of ordinary skill have not been described in detail so as not to obscure claimed subject matter.
- In the above description of various memories, one or more portions of such memories may store digital signals representative of data and/or information as expressed by a particular state of the memories. For example, an electronic signal representative of data and/or information may be “stored” in a portion of memory device by affecting or changing the state of such portions of memories to represent data and/or information as binary information (e.g., ones and zeros). As such, in a particular implementation, such a change of state of the portion of memory to store a signal representative of data and/or information constitutes a transformation of memories to a different state or thing. Of course, details of such memories are merely examples, and claimed subject matter is not so limited.
- The terms, “and,” “and/or,” and “or” as used herein may include a variety of meanings that will depend at least in part upon the context in which it is used. Typically, “and/or” as well as “or” if used to associate a list, such as A, B or C, is intended to mean A, B, and C, here used in the inclusive sense, as well as A, B or C, here used in the exclusive sense. Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of claimed subject matter. Thus, the appearances of the phrase “in one embodiment” or “an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in one or more embodiments. Embodiments described herein may include machines, devices, engines, or apparatuses that operate using digital signals. Such signals may comprise electronic signals, optical signals, electromagnetic signals, or any form of energy that provides information between locations.
- While there has been illustrated and described what are presently considered to be example embodiments, it will be understood by those skilled in the art that various other modifications may be made, and equivalents may be substituted, without departing from claimed subject matter. Additionally, many modifications may be made to adapt a particular situation to the teachings of claimed subject matter without departing from the central concept described herein. Therefore, it is intended that claimed subject matter not be limited to the particular embodiments disclosed, but that such claimed subject matter may also include all embodiments falling within the scope of the appended claims, and equivalents thereof.
Claims (20)
1. A method comprising:
receiving a write request via a flash translation layer to store information in a NAND or NAND-based memory array;
determining metadata of said information;
writing said information in said NAND or NAND-based memory array; and
writing said metadata in a second memory, said second memory comprising a type of nonvolatile memory other than that of said NAND or NAND-based memory array.
2. The method of claim 1 , further comprising:
determining an error correction code (ECC) of said information; and
writing said ECC in said NAND or NAND-based memory array.
3. The method of claim 1 , further comprising:
writing bad block information in said NAND or NAND-based memory array.
4. The method of claim 1 , wherein said writing said information in said NAND or NAND-based memory array and said writing said metadata in said second memory are performed concurrently with one another.
5. The method of claim 1 , wherein said second memory comprises phase change memory (PCM).
6. The method of claim 1 , wherein said metadata comprises sector numbers and/or virtual block addresses of said NAND or NAND-based memory array.
7. The method of claim 1 , wherein said NAND or NAND-based memory array comprises a multi-level NAND or NAND-based memory array.
8. The method of claim 5 , moving markers and/or commits to said PCM to provide power loss recovery on a NOP-1 device.
9. A memory device comprising:
a NAND or NAND-based memory array to store information associated with a write request received via a flash translation layer; and
a second memory comprising a type of nonvolatile memory other than that of said NAND or NAND-based memory array to store metadata of said information, wherein said flash translation layer is adapted to write said information in said NAND or NAND-based memory array and to write said metadata in said second memory in a parallel process.
10. The memory device of claim 9 , wherein said flash translation layer is further adapted to write an error correction code (ECC) of said information in said NAND or NAND-based memory array.
11. The memory device of claim 9 , wherein said flash translation layer is further adapted to write bad block information in said NAND or NAND-based memory array.
12. The memory device of claim 9 , wherein said second memory comprises phase change memory (PCM).
13. The memory device of claim 12 , wherein said flash translation layer comprises a NAND driver and a PCM driver.
14. The memory device of claim 9 , wherein said flash translation layer comprises hardware and/or software to manage bad blocks of said NAND or NAND-based memory array and to manage wear leveling of said NAND or NAND-based memory array.
15. The memory device of claim 9 , wherein said metadata comprises sector numbers and/or virtual block addresses of said NAND or NAND-based memory array.
16. A system comprising:
a memory device comprising at least one array of NAND memory cells, said memory device further comprising a flash translation layer to:
receive a write request to store information in said array of NAND memory cells;
determine metadata of said information;
write said information in said array of NAND memory cells; and
write said metadata in a second memory comprising a type of nonvolatile memory other than that of said array of NAND memory cells; and
a processor to host one or more applications and to initiate said write request to said flash translation layer to provide access to said array of NAND memory cells in said memory device.
17. The system of claim 16 , wherein said flash translation layer is adapted to:
determine an error correction code (ECC) of said information; and
write said ECC in said array of NAND memory cells.
18. The system of claim 16 , wherein said flash translation layer is adapted to:
write bad block information in said array of NAND memory cells.
19. The system of claim 16 , wherein said writing said information in said array of NAND memory cells and said writing said metadata in said second memory are performed concurrently with one another.
20. The system of claim 16 , wherein said metadata comprises sector numbers and/or virtual block addresses of said array of NAND memory cells.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/939,953 US20120117303A1 (en) | 2010-11-04 | 2010-11-04 | Metadata storage associated with flash translation layer |
US13/857,943 US8924638B2 (en) | 2010-11-04 | 2013-04-05 | Metadata storage associated with wear-level operation requests |
US14/536,333 US9152559B2 (en) | 2010-11-04 | 2014-11-07 | Metadata storage associated with wear-level operation requests |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/939,953 US20120117303A1 (en) | 2010-11-04 | 2010-11-04 | Metadata storage associated with flash translation layer |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/857,943 Continuation US8924638B2 (en) | 2010-11-04 | 2013-04-05 | Metadata storage associated with wear-level operation requests |
Publications (1)
Publication Number | Publication Date |
---|---|
US20120117303A1 true US20120117303A1 (en) | 2012-05-10 |
Family
ID=46020731
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/939,953 Abandoned US20120117303A1 (en) | 2010-11-04 | 2010-11-04 | Metadata storage associated with flash translation layer |
US13/857,943 Active US8924638B2 (en) | 2010-11-04 | 2013-04-05 | Metadata storage associated with wear-level operation requests |
US14/536,333 Active US9152559B2 (en) | 2010-11-04 | 2014-11-07 | Metadata storage associated with wear-level operation requests |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/857,943 Active US8924638B2 (en) | 2010-11-04 | 2013-04-05 | Metadata storage associated with wear-level operation requests |
US14/536,333 Active US9152559B2 (en) | 2010-11-04 | 2014-11-07 | Metadata storage associated with wear-level operation requests |
Country Status (1)
Country | Link |
---|---|
US (3) | US20120117303A1 (en) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120290781A1 (en) * | 2011-05-12 | 2012-11-15 | Seo Dong-Young | Nonvolatile memory device with increased endurance and method of operating the same |
US20120317377A1 (en) * | 2011-06-09 | 2012-12-13 | Alexander Palay | Dual flash translation layer |
US20140223082A1 (en) * | 2011-06-22 | 2014-08-07 | Samuel Charbouillot | Method of managing the endurance of non-volatile memories |
CN103984605A (en) * | 2013-02-08 | 2014-08-13 | 希捷科技有限公司 | Storing error correction code (ECC) data in a multi-tier memory structure |
US20140229654A1 (en) * | 2013-02-08 | 2014-08-14 | Seagate Technology Llc | Garbage Collection with Demotion of Valid Data to a Lower Memory Tier |
US9009566B2 (en) * | 2012-09-12 | 2015-04-14 | Macronix International Co., Ltd. | Outputting information of ECC corrected bits |
US9582213B2 (en) | 2013-02-21 | 2017-02-28 | Netapp, Inc. | Object store architecture for distributed data processing system |
US9734097B2 (en) | 2013-03-15 | 2017-08-15 | Micron Technology, Inc. | Apparatuses and methods for variable latency memory operations |
US9754648B2 (en) | 2012-10-26 | 2017-09-05 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US10078453B1 (en) * | 2017-03-15 | 2018-09-18 | Intel Corporation | Storage system, computer program product, and method for managing a hybrid memory device system |
US20190065114A1 (en) * | 2017-08-25 | 2019-02-28 | Toshiba Memory Corporation | Memory system |
US10318175B2 (en) * | 2017-03-07 | 2019-06-11 | Samsung Electronics Co., Ltd. | SSD with heterogeneous NVM types |
US10346312B2 (en) * | 2013-01-22 | 2019-07-09 | Seagate Technology Llc | Variable-size flash translation layer |
US10365835B2 (en) | 2014-05-28 | 2019-07-30 | Micron Technology, Inc. | Apparatuses and methods for performing write count threshold wear leveling operations |
US10860482B2 (en) | 2013-08-14 | 2020-12-08 | Micron Technology, Inc. | Apparatuses and methods for providing data to a configurable storage area |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150111692A (en) * | 2014-03-26 | 2015-10-06 | 삼성전자주식회사 | The operating method of memory controller and the memory system including it |
US9313651B2 (en) * | 2014-06-19 | 2016-04-12 | Kabushiki Kaisha Toshiba | Memory system and method of controlling memory system |
TWI553477B (en) * | 2015-06-12 | 2016-10-11 | 群聯電子股份有限公司 | Memory management method, memory control circuit unit and memory storage device |
US20170024140A1 (en) * | 2015-07-20 | 2017-01-26 | Samsung Electronics Co., Ltd. | Storage system and method for metadata management in non-volatile memory |
US9836232B1 (en) | 2015-09-30 | 2017-12-05 | Western Digital Technologies, Inc. | Data storage device and method for using secondary non-volatile memory for temporary metadata storage |
US10073732B2 (en) | 2016-03-04 | 2018-09-11 | Samsung Electronics Co., Ltd. | Object storage system managing error-correction-code-related data in key-value mapping information |
US10540274B2 (en) | 2016-03-29 | 2020-01-21 | Micron Technology, Inc. | Memory devices including dynamic superblocks, and related methods and electronic systems |
CN107728951B (en) * | 2017-10-24 | 2019-12-20 | 华中科技大学 | Wear leveling method and system based on PCM |
US11550709B2 (en) * | 2019-04-03 | 2023-01-10 | Macronix International Co., Ltd. | Memory device and wear leveling method for the same |
KR20210034711A (en) | 2019-09-20 | 2021-03-31 | 삼성전자주식회사 | Storage device selectively generating parity bits according to endurance of memory cell, and method thereof |
KR20210039075A (en) | 2019-10-01 | 2021-04-09 | 삼성전자주식회사 | Method of controlling initialization of nonvolatile memory device and memory system including nonvolatile memory device |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136509A1 (en) * | 2005-12-09 | 2007-06-14 | Msystems Ltd. | Method For Flash-Memory Management |
US20100011152A1 (en) * | 2008-07-11 | 2010-01-14 | Silicon Motion, Inc. | Data programming methods and devices |
US20100037005A1 (en) * | 2008-08-05 | 2010-02-11 | Jin-Kyu Kim | Computing system including phase-change memory |
US20100169543A1 (en) * | 2008-12-31 | 2010-07-01 | Joseph Edgington | Recovery for non-volatile memory after power loss |
US20100293317A1 (en) * | 2009-05-14 | 2010-11-18 | Emanuele Confalonieri | Pcm memories for storage bus interfaces |
US20100318718A1 (en) * | 2009-06-11 | 2010-12-16 | Sean Eilert | Memory device for a hierarchical memory architecture |
US20120030409A1 (en) * | 2010-07-30 | 2012-02-02 | Apple Inc. | Initiating wear leveling for a non-volatile memory |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005292865A (en) * | 2004-03-31 | 2005-10-20 | Hitachi Ltd | Storage system and backup method for storage system |
US8429329B2 (en) * | 2007-10-17 | 2013-04-23 | Micron Technology, Inc. | Serial interface NAND |
US8244959B2 (en) * | 2008-11-10 | 2012-08-14 | Atmel Rousset S.A.S. | Software adapted wear leveling |
US8589700B2 (en) * | 2009-03-04 | 2013-11-19 | Apple Inc. | Data whitening for writing and reading data to and from a non-volatile memory |
US8751903B2 (en) * | 2010-07-26 | 2014-06-10 | Apple Inc. | Methods and systems for monitoring write operations of non-volatile memory |
-
2010
- 2010-11-04 US US12/939,953 patent/US20120117303A1/en not_active Abandoned
-
2013
- 2013-04-05 US US13/857,943 patent/US8924638B2/en active Active
-
2014
- 2014-11-07 US US14/536,333 patent/US9152559B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136509A1 (en) * | 2005-12-09 | 2007-06-14 | Msystems Ltd. | Method For Flash-Memory Management |
US20100011152A1 (en) * | 2008-07-11 | 2010-01-14 | Silicon Motion, Inc. | Data programming methods and devices |
US20100037005A1 (en) * | 2008-08-05 | 2010-02-11 | Jin-Kyu Kim | Computing system including phase-change memory |
US20100169543A1 (en) * | 2008-12-31 | 2010-07-01 | Joseph Edgington | Recovery for non-volatile memory after power loss |
US20100293317A1 (en) * | 2009-05-14 | 2010-11-18 | Emanuele Confalonieri | Pcm memories for storage bus interfaces |
US20100318718A1 (en) * | 2009-06-11 | 2010-12-16 | Sean Eilert | Memory device for a hierarchical memory architecture |
US20120030409A1 (en) * | 2010-07-30 | 2012-02-02 | Apple Inc. | Initiating wear leveling for a non-volatile memory |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120290781A1 (en) * | 2011-05-12 | 2012-11-15 | Seo Dong-Young | Nonvolatile memory device with increased endurance and method of operating the same |
US20120317377A1 (en) * | 2011-06-09 | 2012-12-13 | Alexander Palay | Dual flash translation layer |
US20140223082A1 (en) * | 2011-06-22 | 2014-08-07 | Samuel Charbouillot | Method of managing the endurance of non-volatile memories |
US9286207B2 (en) * | 2011-06-22 | 2016-03-15 | Starchip | Method of managing the endurance of non-volatile memories |
US9009566B2 (en) * | 2012-09-12 | 2015-04-14 | Macronix International Co., Ltd. | Outputting information of ECC corrected bits |
US10885957B2 (en) | 2012-10-26 | 2021-01-05 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US10163472B2 (en) | 2012-10-26 | 2018-12-25 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US9754648B2 (en) | 2012-10-26 | 2017-09-05 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US10346312B2 (en) * | 2013-01-22 | 2019-07-09 | Seagate Technology Llc | Variable-size flash translation layer |
CN103984605A (en) * | 2013-02-08 | 2014-08-13 | 希捷科技有限公司 | Storing error correction code (ECC) data in a multi-tier memory structure |
KR20160105734A (en) * | 2013-02-08 | 2016-09-07 | 시게이트 테크놀로지 엘엘씨 | Storing error correction code(ecc) data in a multi-tier memory structure |
US20140229654A1 (en) * | 2013-02-08 | 2014-08-14 | Seagate Technology Llc | Garbage Collection with Demotion of Valid Data to a Lower Memory Tier |
KR102009003B1 (en) | 2013-02-08 | 2019-08-08 | 시게이트 테크놀로지 엘엘씨 | Storing error correction code(ecc) data in a multi-tier memory structure |
US20140229655A1 (en) * | 2013-02-08 | 2014-08-14 | Seagate Technology Llc | Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure |
US9582213B2 (en) | 2013-02-21 | 2017-02-28 | Netapp, Inc. | Object store architecture for distributed data processing system |
US10067890B2 (en) | 2013-03-15 | 2018-09-04 | Micron Technology, Inc. | Apparatuses and methods for variable latency memory operations |
US10740263B2 (en) | 2013-03-15 | 2020-08-11 | Micron Technology, Inc. | Apparatuses and methods for variable latency memory operations |
US9734097B2 (en) | 2013-03-15 | 2017-08-15 | Micron Technology, Inc. | Apparatuses and methods for variable latency memory operations |
US10860482B2 (en) | 2013-08-14 | 2020-12-08 | Micron Technology, Inc. | Apparatuses and methods for providing data to a configurable storage area |
US10365835B2 (en) | 2014-05-28 | 2019-07-30 | Micron Technology, Inc. | Apparatuses and methods for performing write count threshold wear leveling operations |
US11347402B2 (en) | 2014-05-28 | 2022-05-31 | Micron Technology, Inc. | Performing wear leveling operations in a memory based on block cycles and use of spare blocks |
US10318175B2 (en) * | 2017-03-07 | 2019-06-11 | Samsung Electronics Co., Ltd. | SSD with heterogeneous NVM types |
US10078453B1 (en) * | 2017-03-15 | 2018-09-18 | Intel Corporation | Storage system, computer program product, and method for managing a hybrid memory device system |
US20190065114A1 (en) * | 2017-08-25 | 2019-02-28 | Toshiba Memory Corporation | Memory system |
US10877692B2 (en) * | 2017-08-25 | 2020-12-29 | Toshiba Memory Corporation | Memory system |
Also Published As
Publication number | Publication date |
---|---|
US20150127892A1 (en) | 2015-05-07 |
US20130227206A1 (en) | 2013-08-29 |
US9152559B2 (en) | 2015-10-06 |
US8924638B2 (en) | 2014-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9152559B2 (en) | Metadata storage associated with wear-level operation requests | |
US11593259B2 (en) | Directed sanitization of memory | |
KR101528714B1 (en) | A method for operating a memory unit, and a memory controller | |
US9378135B2 (en) | Method and system for data storage | |
KR102663661B1 (en) | Apparatus and method for controlling data stored in memory system | |
US8239639B2 (en) | Method and apparatus for providing data type and host file information to a mass storage system | |
CN110928807B (en) | Apparatus and method for checking valid data in a memory system | |
US9904490B2 (en) | Solid-state mass storage device and method for persisting volatile data to non-volatile media | |
US10963175B2 (en) | Apparatus and method for searching valid data in memory system | |
US20150347291A1 (en) | Flash memory based storage system and operating method | |
US9141302B2 (en) | Snapshots in a flash memory storage system | |
US11157402B2 (en) | Apparatus and method for managing valid data in memory system | |
US10963160B2 (en) | Apparatus and method for checking valid data in block capable of storing large volume data in memory system | |
US20200089566A1 (en) | Apparatus for diagnosing memory system and operating method thereof | |
KR20140072639A (en) | Buffer managing method and therefore semiconductor storage device | |
KR20200122685A (en) | Apparatus and method for handling different types of data in memory system | |
KR102691776B1 (en) | Apparatus and method for providing multi-stream operation in memory system | |
Hsieh et al. | Adaptive ECC scheme for hybrid SSD’s | |
US8516194B2 (en) | Systems and methods for caching data with a nonvolatile memory cache | |
US10942848B2 (en) | Apparatus and method for checking valid data in memory system | |
Kuo et al. | Special issues in flash | |
US20200327064A1 (en) | Memory system, method of operating the same and data processing system | |
US11886741B2 (en) | Method and storage device for improving NAND flash memory performance for intensive read workloads | |
US8850160B2 (en) | Adaptive write behavior for a system having non-volatile memory | |
US11657000B2 (en) | Controller and memory system including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: NUMONYX B.V., SWITZERLAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CARANNANTE, PROCOLO;DI SENA, ANGELO;SALVATI, FABIO;AND OTHERS;REEL/FRAME:025317/0520 Effective date: 20101006 |
|
AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IDAHO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NUMONYX B.V.;REEL/FRAME:027126/0176 Effective date: 20110930 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |