WO2015128955A1 - 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 - Google Patents
記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 Download PDFInfo
- Publication number
- WO2015128955A1 WO2015128955A1 PCT/JP2014/054643 JP2014054643W WO2015128955A1 WO 2015128955 A1 WO2015128955 A1 WO 2015128955A1 JP 2014054643 W JP2014054643 W JP 2014054643W WO 2015128955 A1 WO2015128955 A1 WO 2015128955A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- write
- compressed
- storage medium
- logical
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Definitions
- the present invention generally relates to storage control, for example, control for reducing the amount of data written to a storage medium in a storage device.
- a storage device generally includes a storage medium and a medium controller that controls I / O (Input / Output) of data with respect to the storage medium.
- I / O Input / Output
- an apparatus having a storage device for example, there is a storage apparatus or a host apparatus that performs data I / O to the storage apparatus.
- a batch erasable nonvolatile semiconductor memory As a storage medium, for example, a batch erasable nonvolatile semiconductor memory has been developed.
- An example of such a nonvolatile semiconductor memory is a flash memory.
- a flash memory (typically, a NAND flash memory) has a plurality of blocks, and each block has a plurality of pages. Data I / O is performed in page units, and data is erased in block units. The erase time is shorter than the write time. Therefore, the update of the recording data (written data) in the flash memory is generally performed as follows.
- the medium controller reads the recording data (data before updating) from the page, creates the updating data by reflecting the write target data in at least a part of the recording data, writes the updating data to the empty page, and records data Is invalidated (processing for disabling reference from the host device of the storage device). Then, when the empty page is exhausted, the media controller deletes the data from the blocks that are all invalid pages (invalidated pages), thereby setting the invalid pages as empty pages.
- Each page includes a plurality of (for example, 16) sectors. Since writing is performed in units of pages, it is necessary to rewrite one page including the sector even if only one sector is rewritten.
- Flash memory generally has a limit on the number of times data can be erased.
- a block in which the number of times of erasure has increased due to concentration of data rewriting cannot be erased and becomes unusable. For this reason, it is necessary to prevent the data erasure process from being concentrated on a specific block.
- data errors in the data in the page increase with time, so the media controller performs an operation called “refresh” that moves data that has passed for a certain time from writing to another page.
- a deduplication technique such as that disclosed in Patent Document 1 in order to shorten the data erasing time or reduce the number of times of erasing.
- the deduplication technique when a logical address provided to a host device and a physical address of an actual storage area are managed in association with each other, a plurality of logical address spaces (for example, logical pages) in which duplicate data is stored are stored. This is a technique for associating with one physical address space (for example, physical page) in which the data is stored.
- the deduplication technique the amount of data written to the storage medium can be reduced, and the life of the flash memory can be extended in a storage device using the flash memory as a storage medium.
- Patent Document 1 allocates one physical page to a plurality of logical pages having overlapping data, thereby reducing the write amount (the amount of data written to the flash memory). However, only a slight data update is performed on each of those logical pages, and the data in each update destination logical page is excluded from the object of deduplication. A new physical page in which is written is allocated. As a result, the amount of writing increases.
- This type of problem is not limited to logical pages that are deduplicated. For example, for a logical page that has not been deduplicated, update data is written to a new physical page (ie, the physical page is newly consumed) with only a slight data update for that logical page.
- this kind of problem is not limited to the flash memory, but may also be applied to other types of storage media that have a limited number of erasures (number of rewrites).
- An object of the present invention is to reduce the amount of writing to a storage medium of a storage device.
- the storage device has a storage medium and a medium controller that controls I / O to the storage medium and provides a logical space based on the storage medium to the host device.
- the logical space is composed of a plurality of logical areas. For each logical area, a reference data range exists on the storage medium.
- the medium controller receives a write command designating the write destination logical address from the host device, and reads the reference data from the reference data range corresponding to the write destination logical area to which the write destination logical address belongs.
- the medium controller creates differential data that is an exclusive OR of the first data that is the reference data and the second data that is either the data based on the write data according to the write command and the write data.
- the medium controller creates compressed difference data by compressing the difference data, writes the compressed difference data to the storage medium, and associates the difference data range, which is the range in which the compressed difference data is written, with the write destination logical area.
- the media controller receives a read command from the higher-level device that has the same logical area as the write destination logical area as the read source, the media controller and the difference associated with the read source logical area Based on the data, the read data according to the read command can be restored.
- the amount of writing in the storage medium in the storage device can be reduced, thereby extending the life of the storage medium.
- FIG. 1 shows a configuration of an FM module according to the embodiment.
- FIG. 2A shows a data format (plain text state) for a single allocation page.
- FIG. 2B shows the sector format (plaintext state) for the duplicate allocation page.
- FIG. 2C shows a code part format for the duplicate allocation page.
- FIG. 3 shows an example of a data write method to the flash memory and a data storage state.
- FIG. 4A shows an address conversion table.
- FIG. 4B shows a duplicate count table.
- FIG. 5 is a flowchart of the write command process.
- FIG. 6 is a flowchart of the entire write process for a single allocation page.
- FIG. 7 is a flowchart of partial write processing for a single allocation page.
- FIG. 8 is a flowchart of the entire write process for the duplicate allocation page.
- FIG. 9 is a flowchart of partial write processing for a duplicate allocation page.
- FIG. 10 is a conceptual diagram of the entire write process for a single allocation page.
- FIG. 11 is a conceptual diagram of partial write processing for a single allocation page.
- FIG. 12 is a conceptual diagram of the entire write process for the duplicate allocation page.
- FIG. 13 is a conceptual diagram of partial write processing for a duplicate allocation page.
- FIG. 14 shows a configuration of a computer system having the storage apparatus according to the embodiment.
- FIG. 15A shows two methods of forming user data for a single allocation page.
- FIG. 15B shows two methods of forming user data for the duplicate allocation page.
- FIG. 16 shows the configuration of the host.
- kkk table information may be described using the expression “kkk table”, but the information may be expressed using a data structure other than the table. In order to show that it does not depend on the data structure, the “kkk table” can be called “kkk information”.
- the communication interface device may be abbreviated as “I / F”, and the flash memory may be abbreviated as “FM”.
- FIG. 14 shows a configuration of a computer system having a storage apparatus according to the embodiment.
- the computer system includes a storage device 1400, a host (host computer) 1421, and a management computer 1420.
- the host 1421 may be connected to the storage apparatus 1400 via a communication network such as a SAN (Storage Area Network) 1410.
- the management computer 1420 may be connected to the storage apparatus 1400 via a communication network (not shown) such as a LAN (Local Area Network).
- the host 1421 and the management computer 1420 may be connected to the same communication network.
- the storage apparatus 1400 includes a plurality of FM modules 100 and a storage controller 1401 that controls I / O for the plurality of FM modules 100.
- the storage controller 1401 receives the command transmitted from the host 1421, interprets the command, and reads / writes data in the storage area of the storage apparatus 1400.
- the storage apparatus 1400 includes an HI / F (I / F that communicates with the host 1421) 1431, an SI / F (I / F that communicates with the FM module 100) 1451, and an MI / F (management computer 1420).
- (I / F) 1430 that communicates, a memory 1442, and a CPU 1441 connected thereto.
- the HI / F 1431 is an I / F that accepts an I / O request or a control command from the host 1421.
- the S-I / F 1451 is an I / F that transmits data and control commands to the FM module 100.
- the MI / F 1430 is an I / F that receives control commands and the like related to management and maintenance from the management computer 1420.
- the CPU 1441 functions as an arithmetic processing device, and has a function of controlling the operation of the entire storage device 1400 according to various programs, arithmetic parameters, and the like stored in the memory 1442. Specifically, for example, the CPU 1441 processes user data input / output (data I / O) between the storage apparatus 1400 and the host in accordance with an I / O request or the like from the host 1421, and sends the user to the FM module 100. A write command for writing data is issued to the FM module 100, and a read command for reading user data from the FM module 100 is issued to the FM module 100. In addition, the CPU 1441 creates a guarantee code (described later) for the user data received from the host 1421 and assigns it to the user data.
- a guarantee code (described later) for the user data received from the host 1421 and assigns it to the user data.
- the memory 1442 stores management information in addition to various programs and calculation parameters.
- the memory 1442 has a cache memory area.
- the cache memory area temporarily stores user data to be written to the FM module 100 and user data read from the FM module 100.
- the “user data” may be mainly read / write target data in accordance with a read / write request (I / O request) from the host 1421 for the storage controller 1401, and FM.
- a read / write request I / O request
- FM controller 103 see FIG. 1 in the module 100, data to be read / written according to a read / write command from the storage controller 1401 may be used.
- FIG. 14 six FM modules 100 are provided, but the number of FM modules 100 is not limited to this example.
- the internal configuration of the FM module 100 will be described later in detail with reference to FIG.
- the FM module 100 exists in the storage apparatus 1400.
- the present invention is not limited to this example, and the FM module 100 may exist outside the storage apparatus 1400.
- the host 1421 is connected to the storage apparatus 1400 via the SAN 1410, and transmits a data read / write request (I / O request) to the storage apparatus 1400.
- the host 1421 may be, for example, a personal computer, a workstation, or a main frame.
- a block protocol such as SCSI (Small Computer System Interface) may be used.
- the management computer 1420 may be, for example, a personal computer, a workstation, or a mainframe.
- the management computer 1420 may manage the storage device 1400 and the like.
- the host device of the FM module 100 is the storage controller 1401.
- the FM module includes a flash memory 105 including a plurality of FM chips, and an FM controller 103 that controls I / O for the flash memory 105.
- an example of features and handling of the flash memory 105 will be described.
- the flash memory 105 has a feature that the minimum erase unit is larger than the minimum write unit. Specifically, for example, the flash memory 105 (each FM chip) has a plurality of blocks (physical blocks), and each block has a plurality of (for example, 256) pages (physical pages). Data is erased in block units, and data is read and written in page units. The page size is 8640 bytes, for example.
- the flash memory 105 cannot directly overwrite data due to its characteristics. That is, when data is rewritten, the FM controller 103 saves other valid data stored in the block including the data to another block, and erases the data from the original block. Then, the FM controller 103 rewrites data by writing new data to the erased block in units of pages.
- the data rewriting process in the flash memory 105 involves erasing data in block units (physical block units).
- the time required for erasing one block of data in the flash memory 105 is longer than the time required for writing one page of data (for example, about one digit longer). Therefore, if data erasure for one block is executed every time in order to rewrite data for one page, the data rewriting performance of the flash memory 105 deteriorates. It is necessary to write data using an algorithm that can hide the time to erase data from the flash memory 105.
- each block of the flash memory 105 has a limited number of erasures. For example, an erase count of up to 10,000 times per block is guaranteed. In this case, when data rewriting concentrates on one block and the erase count of the block exceeds the guaranteed count (upper limit), data erase may not be possible, and the block becomes unusable thereafter. There is a problem that the number of usable blocks decreases. Therefore, it is necessary to perform the erase count leveling process by exchanging stored data between a block with a large erase count and a block with a small erase count so that the erase process for a specific block is not concentrated.
- the flash memory 105 has a feature that, for a page once written, data errors increase with time even if data is held.
- the FM controller 103 adds in advance a parity based on an error correction code (ECC) to data to be written on the page.
- ECC error correction code
- the FM controller 103 reads data that has passed a certain time after writing, corrects it using the parity while there are few data errors, and performs refresh processing to move the corrected data to another page. Even when this process is executed, the FM controller 103 needs to equalize the number of times of erasure and consider the influence on the performance.
- the FM controller 103 dynamically associates the logical address provided to the host device with the physical address of the actual storage area in order to conceal the erasure time and level the number of erasures.
- a conversion process from a logical address to a physical address is performed at the time of writing. That is, the host device may write data into the logical address space by dynamically changing the correspondence between the logical address provided to the host device and the physical address of the flash memory 105 by the FM controller 103.
- the FM controller 103 manages the address so that the host device does not need to be aware of the change of the physical address accompanying the additional writing to the unused page at the time of data writing.
- the deduplication technique is a technique for associating a plurality of logical address spaces in which duplicate data is stored with one physical address space in which the data is stored.
- the amount of writing in the flash memory 105 can be reduced by deduplication technology.
- format processing is considered as a case where application of the deduplication technique is considered effective.
- the storage controller 1401 executes format processing for the purpose of detecting the abnormal part and initializing stored data. Specifically, for example, the storage controller 1401 writes simple pattern data (for example, all-zero data in which all bits are “0”) in which specific values are continuous in all storage areas based on the FM module 100.
- the formatting process unnecessarily increases the number of rewrites in a storage medium such as the flash memory 105 where the number of rewrites is limited.
- the flash memory 105 employs a method of appending to unused pages for data rewriting, if the consumption of unused pages increases, data erasure processing that requires processing time must be executed frequently. Don't be.
- the format process is a process that reduces unused pages and impairs performance. Therefore, in this embodiment, the deduplication technology is applied to the FM module 100, thereby reducing the amount of data written, and thereby extending the life of the flash memory 105.
- the FM controller 103 checks the pattern of the data to be written or receives a notification from the storage controller 1401 (for example, the write command from the storage controller 1401 is set with a value that indicates the format. Therefore, it can be detected that the data to be written is data to be written by the formatting process.
- the storage apparatus 1400 can detect bit corruption that occurs in user data due to a hardware failure or the like, and user data writing to or reading from an illegal address caused by an internal control error or the like. Therefore, the storage controller 1401 divides the user data to be written into sector units (for example, one sector is 512 bytes) and consists of a plurality of sector data, and assigns a guarantee code of a predetermined length (for example, 16 bytes) to each. .
- the guarantee code includes a CRC (Cyclic Redundancy Check) calculated from each sector data in order for the CPU 1441 to detect garbled user data.
- the guarantee code may include related information (hereinafter, metadata) of user data that can be freely set by the storage apparatus vendor.
- the metadata includes, for example, information such as a logical storage location of user data in the computer system (specifically, for example, logical volume number and logical sector address), information such as user data update date and time, and It may be at least one of information such as a generation number of user data.
- the logical volume is a logical storage device provided to the host 1421 by the storage apparatus 1400. In the I / O request from the host 1421, the logical address of the logical volume is specified. One or more logical pages provided by each of the one or more FM modules 100 correspond to the area according to the logical address (area in the logical volume).
- the storage controller 1401 determines the logical address specified by the I / O command transmitted to the FM module 100 based on the logical address specified by the I / O request.
- the guarantee code value differs for each sector data, so even if the sector data has the same value, the guarantee code is different. There may be a problem that deduplication cannot be performed.
- the FM controller 103 first separates the sector data and the guarantee code from the user data including the guarantee code, and collects only the sector data (hereinafter referred to as the sector portion).
- a collection of only guarantee codes (hereinafter referred to as a code part), which is a target of data sharing at the time of deduplication, is managed separately from the sector part.
- the sector part and the code part are stored in the flash memory 105 as independent ones. Note that user data that is not subjected to de-duplication processing is stored in the flash memory 105 without being separated into a sector part and a code part.
- the logical page when the data of a physical page storing data for a certain logical page is shared as data for another logical page by performing deduplication processing, the logical page The page is referred to as a “duplicate assignment page”. In addition, when the data of a physical page storing data for a certain logical page is not shared as data for any other logical page, the logical page is referred to as a “single allocation page”. And
- the FM controller 103 further reduces the amount of writing in the flash memory 105 by compressing data stored in the flash memory 105 using a lossless compression algorithm.
- a lossless compression algorithm For example, the LZ77 algorithm is applied as the lossless compression algorithm.
- the data reduction effect by compression is high for data that includes a lot of long and continuous patterns having the same value (for example, zero).
- the FM module 100 includes a flash memory 105 composed of a plurality of FM chips, and an FM controller 103 that controls read / write with respect to the flash memory 105.
- the FM controller 103 includes a host I / F 102 connected to a host device (storage controller 1401), a DRAM (Dynamic Random Access Memory) 106 that is an example of a memory (for example, a volatile memory), and a controller main body connected to them. 101.
- the controller main body 101 includes a compression / decompression circuit 104 and an XOR circuit 107.
- the controller main body 101 may include a processor (microprocessor) that controls the host I / F 102, the flash memory 105, and the DRAM 106.
- the processor interprets a read / write command received through the upper I / F 102, transmits / receives read / write data, causes the compression / decompression circuit 104 to perform data compression / decompression, and causes the XOR circuit 107 to perform exclusive logic It is possible to execute sum calculation and to transfer data between the flash memory 105 and the DRAM 106.
- the host I / F 102 receives user data according to the write command issued from the host device from the host device, or transmits user data according to the read command issued from the host device to the host device.
- the compression / decompression circuit 104 may be an arithmetic unit implemented as hardware (logic circuit) in the FM controller 103, and reversibly convert plaintext (plaintext data) using a predetermined lossless transformation compression algorithm (for example, LZ77 algorithm).
- Compressed data can be created by compression, or original plaintext data can be created by decompressing the compressed data.
- the XOR circuit 107 may be an arithmetic unit implemented as hardware (logic circuit) in the FM controller 103, and can calculate exclusive OR of two pieces of data having the same size, and create data having the same size as those.
- the exclusive OR is an operation that creates 0 when there is an equal value at the same position of two data, and creates 1 when there is a different value. Therefore, the more similar the two data input to the XOR circuit 107, the more the data to be created becomes data that has a long zero value and includes many continuous patterns. Note that the amount of data can be greatly reduced by compressing such data using the above compression algorithm.
- the DRAM 106 temporarily stores write data received from the host device (data written to the flash memory 105) and read data transmitted to the host device (data read from the flash memory 105).
- the DRAM 106 functions as a write buffer that temporarily stores data to be written to the flash memory 105.
- the DRAM 106 functions as a read buffer that temporarily stores data read from the flash memory 105.
- the DRAM 106 functions as a transfer source of data compressed / decompressed by the compression / decompression circuit 104 and a transfer destination of compression / decompression result data (compressed data / plaintext data).
- the DRAM 106 functions as a transfer source of two data for which an exclusive OR is calculated by the XOR circuit 107 and a transfer destination of the creation result data by the XOR circuit 107.
- FIG. 2A shows a data format of plain text user data (plain text state user data) written on a single allocation page.
- the user data (Di, Gi) 200 including the guarantee code has a length of 8448 bytes in a plain text state and includes 16 512-byte sector data (201, 202, 203,..., 204), Byte guarantee codes (211, 212, 213,..., 214) are added.
- the FM controller 103 compresses the plain text user data of the single allocation page and writes the compressed user data (compressed user data) to the flash memory 105.
- the user data of the single allocation page is the user data itself
- the user data of the single allocation page is the reference data (8448 bytes) and the difference data ( 8448 bytes).
- the FM controller 103 compresses the user data itself and writes it in the flash memory 105.
- the FM controller 103 compresses the reference data and the difference data and writes them separately to the flash memory 105.
- the FM controller 103 decompresses the reference data and the difference data read from the flash memory 105 by the compression / decompression circuit 104 to return to the plain text state. It is necessary to create exclusive OR data of the state reference data and difference data from the XOR circuit 107.
- FIG. 15A is a conceptual diagram of two formation methods.
- the user data itself in the first forming method may also be referred to as “reference data”.
- the amount of writing in the flash memory 105 can be reduced by applying the second formation method to the user data of the single allocation page.
- the reason is as follows.
- the difference between user data before update and user data after update is only the 100th bit (only 1 bit).
- the reference data is user data before update
- the difference data is data in which the 100th bit is 1 and all the remaining bits are 0.
- the pre-update user data remains in the flash memory 105 as valid data
- the compressed differential data is further written as valid data.
- the difference data is data including a pattern having a long zero value and a continuous pattern
- the amount of difference data in the compressed state becomes very small.
- the total size of the compressed pre-update user data and the compressed differential data is smaller than the size of the compressed post-update user data.
- the write amount of the flash memory 105 can be reduced and the life of the flash memory 105 can be extended.
- FIG. 2B shows the data format of the plaintext sector part which is a sector part separated from the plaintext user data of the overlapping allocation page.
- the sector part Dj220 has a length of 8192 bytes in a plain text state and is composed of 16 pieces of 512-byte sector data (221, 222, 223,..., 224).
- FIG. 2C shows the data format of the plaintext code part separated from the plaintext user data on the duplicate allocation page.
- the code part Gj230 has a length of 256 bytes and is composed of 16 16-byte guarantee codes (231, 232, 233,..., 234).
- the flash memory 105 is written with a sector portion in which the plaintext sector portion according to the format of FIG. 2B is compressed and a plaintext code portion according to the format of FIG. 2C.
- the FM module 100 there are two formation methods for the sector portion of the overlapping allocation page.
- the sector part of the overlapping allocation page is the sector part itself separated from the user data.
- it is an exclusive OR of the reference data (8192 bytes) and the difference data (8192 bytes).
- the sector portion itself is compressed and written to the flash memory 105.
- the reference data and the difference data are compressed and written to the flash memory 105 separately.
- the FM controller 103 decompresses the reference data and the difference data read from the flash memory 105 by the compression / decompression circuit 104, respectively, and the exclusive OR data of the reference data and the difference data in the plaintext state Is created by the XOR circuit 107.
- the sector part of the overlapping allocation page is a sector part according to the first forming method
- the sector part itself is shared by a plurality of logical pages. That is, the sector part in the physical page allocated to the overlapping allocation page is shared by a plurality of logical pages (duplicated allocation page).
- FIG. 15B is a conceptual diagram showing how user data A and D to which the first forming method is applied and user data B and C to which the second forming method is applied share reference data, for example.
- the sector part itself in the first forming method is also referred to as reference data.
- the write amount of the flash memory 105 can be reduced. The reason is as follows.
- the difference between the sector portion of user data A and the sector portion of user data B is only the 100th bit (only 1 bit).
- the prior art including Patent Document 1
- the two are determined to be different data and are not managed as duplicate allocation pages, but are compressed separately and stored in the flash memory 105.
- the second forming method is applied to the sector portion of the user data B, so that the sector portion of the user data A becomes reference data, and the data in which the 100th bit is 1 and all the remaining bits are 0 This is the difference data B.
- the compressed reference data (sector portion) and the compressed difference data B are written in the flash memory 105.
- the difference data B is data including a pattern having a long zero value and a continuous pattern
- the size is very small.
- the amount of writing is smaller than when the sector portion of user data A and the sector portion of user data B are separately compressed and written to the flash memory 105.
- deduplication is applied not only when the sector portions of a plurality of logical pages completely match, but also when there are many portions matching the sector portions of the plurality of logical pages.
- the amount of writing to the flash memory 105 can be reduced, and the life of the flash memory 105 can be extended.
- the fill (pattern) means data (user data, sector part or code part), and the white paint means dummy data (null data).
- the FM controller 103 compresses the reference data and difference data according to the data format of FIG. 2A or FIG. 2B by the compression / decompression circuit 104 in order to reduce the writing amount of the flash memory 105.
- the size of the compressed data varies depending on the original plaintext data (structure of plaintext data). The size of data including many patterns having the same value continues to be reduced by compression, but the size of data including many random patterns may be increased by compression.
- the compressed data and the code portion according to the data format of FIG. 2C are temporarily stored in the write buffer on the DRAM 106 until being written to the flash memory 105 as shown on the left side of FIG.
- the FM controller 103 concatenates the compressed data in the write buffer to create data of the maximum size that does not exceed the page size 311 (concatenated). If the total data is less than the page size 311, dummy data is linked to the linked data to create data of the page size 311), and the created data is used as an unused page 305 ( For example, write to the physical page P4). Writing data in units of pages is sometimes called “page writing”. Parity (not shown) based on the error correction code is added to the page write data. In order to provide a parity write destination area, the physical page size (8640 bytes) of the flash memory 105 is larger than the size of one logical page (8448 bytes).
- the right side of FIG. 3 shows an example of a state in which compressed data and code portions are stored in the physical pages P0 to P3 (301, 302, 303, 304) of the flash memory 105.
- the reference data of the single allocation pages L0 and L6 and the difference data of the duplicate allocation page L4 are stored.
- the physical page P1 stores reference data shared by the duplicate allocation pages L1, L3, L4, and L7.
- difference data of the single allocation page L0 and reference data of the single allocation page L5 are stored.
- the physical page P3 stores the code portions of the overlapping allocation pages L1, L3, L4, and L7 and the reference data of the single allocation page L2.
- the address conversion table 400 in FIG. 4A holds information including a logical page address 410, a reference data storage destination 420, a difference flag 430, a difference data storage destination 440, a duplication flag 450, and a code part address 460 for each logical page. .
- the logical page address 410 is the top logical address of the logical page.
- the reference data storage location 420 is information including a physical address Pi [Ni] (page address Pi, sector number Ni) for storing reference data and a storage sector size.
- the difference flag 430 indicates whether there is a difference.
- the difference flag 430 is “OFF” (meaning no difference), and the logical page has applied the second formation method.
- the difference flag 430 is “ON” (meaning that there is a difference).
- the difference data storage destination 440 is information that is effective when the difference flag 430 is ON, and is information including a physical address Pi [Ni] (page address Pi, sector number Ni) for storing difference data and a storage sector size. is there.
- the duplication flag 450 indicates whether the logical page is applied with the deduplication technology. When the logical page is a single allocation page, the duplication flag 450 is “OFF” (meaning that the deduplication technique is not applied). When the logical page is a duplication allocation page, the duplication flag 450 is “ON”. (Meaning that deduplication technology is applied).
- the code part address 460 is valid information when the duplication flag 450 is “ON”, and includes information including a physical address Pi [Ni] (page address Pi, sector number Ni) for storing the code part of user data. It is. Since the size of the code part is 256 bytes and the storage sector size is fixed at 1, the code part address 460 may not include the storage sector size.
- the address conversion table 400 in FIG. 4A holds, for example, information according to the storage state shown on the right side of FIG. 3 (for example, information on logical pages L0 to L7).
- the logical page L0 is a single allocation page to which the second formation method is applied
- the logical pages L1, L3, and L7 are overlapping allocation pages to which the first formation method is applied, respectively.
- L2, L5, and L6 are each a single allocation page to which the first formation method is applied
- the logical page L4 is a duplicate allocation page to which the second formation method is applied.
- the duplication count table 470 of FIG. 4B holds information including a reference data address 480 and a shared count 490 for each reference data shared by a plurality of duplicate assignment pages.
- the reference data address 480 is information including a physical address Pi [Ni] (page address Pi, sector number Ni) for storing reference data.
- the sharing count 490 represents the number of logical pages (duplicate allocation pages) that share reference data.
- the FM controller 103 of the FM module 100 selects an optimum method for forming the update target user data by this processing in order to reduce the write amount of the flash memory 105.
- the FM controller 103 calculates the logical page address Lk to which the logical address Wa designated by the write command belongs (step 501). The FM controller 103 determines whether the duplication flag 450 corresponding to the calculated logical page address Lk is “OFF” or “ON” (step 502). If it is “OFF” (single allocation page), the process proceeds to step 503, and if it is “ON” (duplicate allocation page), the process proceeds to step 504.
- step 503 the FM controller 103 determines whether the number of write data sectors according to the write command is the page size (16 sectors) or smaller. If it is the page size, the FM controller 103 executes the entire write processing of the single allocation page in step 600. Otherwise, the FM controller 103 executes partial write processing of the single allocation page in step 700.
- step 504 the FM controller 103 determines whether the number of sectors of the write data written by the write command is the page size (16 sectors) or smaller. If it is the page size, the FM controller 103 executes the entire write processing of the duplicate allocation page in step 800. Otherwise, the FM controller 103 executes the partial write process for the duplicate allocation page in step 900.
- FIG. 10 shows the entire write process of the single allocation page.
- This process is a process of selecting a new formation method of the user data when the user data of the logical page Lk is updated to the write data Wd. That is, the first formation method is selected and the write data Wd is written as new reference data, or the second formation method is selected and the difference data from the write data Wd without changing the current reference data Whether to write is divided.
- Data 1010 is compressed data of the current reference data, and is stored in the flash memory 105. In order to create difference data of the second forming method, it is necessary to read and decompress the compressed data, and calculate (1040) an exclusive OR with the write data Wd.
- Data 1020 is compressed data of new reference data for the first forming method
- data 1030 is compressed data of difference data for the second forming method.
- the FM controller 103 selects a smaller write size to the flash memory 105. If the data 1020 is smaller, the FM controller 103 writes the data 1020 and selects the first formation method. If the data 1030 is smaller, the FM controller 103 writes the data 1030 and selects the second formation method. If the sizes are the same, the FM controller 103 writes the data 1020 and selects the first formation method. This is because in the second forming method, the reference data and the difference data must be read when the user data is read, and the read performance is inferior.
- the difference data includes many consecutive zero values and can be compressed to be smaller. Therefore, it is advantageous to select the second formation method. .
- the FM controller 103 When the FM controller 103 receives a read command for reading the write data Wd written by the method described with reference to FIG. 10 from the host device (storage controller 1401), the FM controller 103 based on the address conversion table 400.
- the write data Wd can be restored, and the write data Wd can be transmitted as read data to the host device.
- the restored write data Wd is (1) data generated by expanding the data 1020, or (2) differential data (new) obtained by expanding the data 1030 and the data 1010. This is an exclusive OR with reference data obtained by decompression.
- FIG. 11 shows a partial write process for a single allocation page.
- This process is a process of selecting a new method for forming the rewritten user data when a part of the user data of the logical page Lk is rewritten with the write data Wd. That is, the first formation method is selected and the rewritten user data is written as new reference data, or the second formation method is selected and the rewritten user data without changing the current reference data. Whether to write the difference data.
- Data 1110 is the compressed data of the current reference data
- data 1120 is the compressed data of the current differential data, both of which are stored in the flash memory 105.
- the FM controller 103 reads and expands the data 1110 and 1120, respectively, calculates the exclusive OR of the two (1150), and creates the current user data.
- the FM controller 103 rewrites a part of the current user data with the write data Wd to create new user data (1160), and calculates the exclusive OR of the new user data and the current reference data (1170). ) To create new difference data.
- Data 1130 is compressed data of new reference data for the first forming method
- data 1140 is compressed data of difference data for the second forming method.
- the FM controller 103 selects a smaller write size to the flash memory 105. If the data 1130 is smaller, the FM controller 103 writes the data 1130 and selects the first formation method. If the data 1140 is smaller, the FM controller 103 writes the data 1140 and selects the second formation method. If the sizes are the same, the FM controller 103 writes the data 1130 and selects the first formation method. This is because in the second forming method, the reference data and the difference data must be read when the user data is read, and the read performance is inferior.
- the smaller the size of the write data Wd (the smaller the rewrite amount), the more the new difference data contains many consecutive zero values and can be compressed to a smaller size. Therefore, the selection of the second formation method is advantageous.
- the FM controller 103 receives the write data Wd based on the address conversion table 400 when receiving a read command for the write data Wd written by the method described with reference to FIG.
- the data can be restored and the write data Wd can be transmitted as read data to the host device.
- the restored write data Wd is (1) partial data extracted from data generated by decompressing the data 1130, or (2) differential data (2) obtained by decompressing the data 1140. New) and the partial data extracted from the exclusive OR of the reference data obtained by expanding the data 1110.
- FIG. 12 shows the entire write process of the duplicate allocation page.
- This process is a process of selecting a new page type of the logical page Lk and a new formation method of the user data when the user data of the logical page Lk is updated to the write data Wd. That is, the first formation method of the single allocation page is selected and the write data Wd is written as new reference data, or the second formation method of the duplicate allocation page is selected and the current reference data is not changed. The difference data (difference data from the write data Wd) and the code part are written.
- Data 1210 is compressed data of the current reference data and is stored in the flash memory 105.
- the data 1210 is read and expanded, and the exclusive OR with the sector portion separated (1240) from the write data Wd is calculated (1250). There is a need.
- Data 1220 is compressed data of new reference data for the first formation method of the single allocation page
- data 1230 is compression data of differential data and write data for the second formation method of the duplicate allocation page. This is data in which a code part separated (1250) from Wd is connected.
- the FM controller 103 selects a smaller write size to the flash memory 105. When the data 1220 is smaller, the FM controller 103 writes the data 1220 and selects the first formation method of the single allocation page. If the data 1230 is smaller, the FM controller 103 writes the data 1230 and selects the second method for forming the duplicate allocation page. If the sizes are the same, the FM controller 103 writes the data 1220 and selects the first formation method of the single allocation page. This is because, in the second method for forming the duplicate allocation page, the reference data, the difference data, and the code part must be read when reading the user data, and the read performance is poor.
- the difference data includes more consecutive zero values and can be compressed smaller.
- the FM controller 103 receives the write data Wd based on the address conversion table 400 when receiving a read command for the write data Wd written by the method described with reference to FIG.
- the data can be restored and the write data Wd can be transmitted as read data to the host device.
- the restored write data Wd is (1) data generated by decompressing the data 1220, or (2) differential data (new) obtained by decompressing the compressed differential data in the data 1230. And the reference data obtained by expanding the data 1210, and the code part (new) of the data 1230.
- FIG. 13 shows a partial write process for a duplicate allocation page.
- This process is a process of selecting a new page type of the logical page Lk and a new formation method of the rewritten user data when a part of the user data of the logical page Lk is rewritten with the write data Wd. That is, select the first formation method of the single assignment page and write the rewritten user data as new reference data, or select the second formation method of the duplicate assignment page and change the current reference data Without writing, it is determined whether to write the difference data (the difference data with the rewritten user data) and the code part.
- the data 1310 is the compressed data of the current reference data
- the data 1320 is the compressed data of the current differential data
- the data 1330 is the current code part, and these are stored in the flash memory 105.
- the FM controller 103 calculates (1360) the exclusive OR of the reference data and the difference data that has been read and further expanded, and reads the exclusive OR data created by the calculation (1360).
- the code part is synthesized (1370) to create the current user data.
- the FM controller 103 rewrites a part of the current user data with the write data Wd to create new user data (1380), separates the new user data (1390), the current reference data, Is calculated (1300) to create new difference data.
- Data 1340 is compressed data of new reference data for the first forming method of the single allocation page
- data 1350 is compressed data of differential data and the new user for the second forming method of the duplicate allocation page. This is data in which a code part separated (1390) from data is connected.
- the FM controller 103 selects a smaller write size to the flash memory 105. If the data 1340 is smaller, the FM controller 103 writes the data 1340 and selects the first formation method of the single allocation page. If the data 1350 is smaller, the FM controller 103 writes the data 1350 and selects the second method for forming the duplicate allocation page. If the sizes are the same, the FM controller 103 writes the data 1340 and selects the first formation method of the single allocation page. This is because, in the second method for forming the duplicate allocation page, the reference data, the difference data, and the code part must be read when reading the user data, and the read performance is poor.
- the FM controller 103 receives the write data Wd based on the address conversion table 400 when receiving a read command for the write data Wd written by the method described with reference to FIG.
- the data can be restored and the write data Wd can be transmitted as read data to the host device.
- the restored write data Wd is (1) partial data extracted from data generated by decompressing the data 1340, or (2) obtained by decompressing the compressed differential data in the data 1350.
- the partial data extracted from the data composed of the exclusive OR of the difference data (new) and the reference data obtained by expanding the data 1310 and the code part (new) of the data 1350 is there.
- the FM controller 103 acquires the reference data storage destination 420 (physical address Px [Nx] and storage sector size Sx) corresponding to the logical page address Lk calculated in step 501 (step 601).
- the FM controller 103 reads the compressed reference data (compressed reference data) of the logical page Lk from the physical area represented by the reference data storage destination 420, and expands the compressed reference data to obtain the reference data (plaintext state). ) Is restored (step 602).
- the FM controller 103 creates the difference data of the logical page Lk by calculating the exclusive OR of the reference data of the logical page Lk (reference data restored in step 602) and the write data Wd. Compressed difference data is created by compressing the difference data (step 603).
- the FM controller 103 creates compressed write data by compressing the write data Wd (step 604).
- the FM controller 103 compares the size of the result data (compression difference data) in step 603 with the size of the result data (compression write data) in step 604, selects the smaller one, and writes it to the flash memory 105 (step 605). ). If the sizes are the same, the result data in step 604 is selected.
- step 603 When the result data of step 603 is selected, the user data of the logical page Lk is applied with the second forming method, so the FM controller 103 sets the difference flag 430 corresponding to the logical page Lk to “ON”.
- step 604 When the result data of step 604 is selected, the user data of the logical page Lk is applied to the first forming method, and therefore the difference flag 430 corresponding to the logical page Lk is set to “OFF” (step 606). .
- the FM controller 103 acquires the reference data storage destination 420 (physical address Px [Nx] and storage sector size Sx) corresponding to the logical page address Lk calculated in step 501 (step 701).
- the FM controller 103 reads the compressed reference data of the logical page Lk from the physical area represented by the reference data storage destination 420, and decompresses the compressed reference data to restore the reference data (plain text state) (step 702). .
- step 703 the FM controller 103 checks the difference flag 430 corresponding to the logical page Lk. If “OFF”, the process proceeds to step 704, and if “ON”, the process proceeds to step 705.
- step 704 since there is no difference data, the FM controller 103 sets the result data (restored reference data) in step 702 as the current user data of the logical page Lk, and transitions to step 708.
- step 705 the FM controller 103 obtains the differential data storage destination 440 (physical address Py [Ny] and storage sector size Sy) corresponding to the logical page address Lk in order to obtain the current differential data.
- the FM controller 103 reads the compressed differential data (compressed differential data) of the logical page Lk from the physical area represented by the differential data storage destination 440, and expands the compressed differential data to obtain differential data (plaintext state). Is restored (step 706).
- the FM controller 103 creates the current user data of the logical page Lk by calculating the exclusive logical sum of the reference data of the logical page Lk and the difference data (step 707). Thereafter, the process proceeds to step 708.
- Step 708 the FM controller 103 rewrites the portion of the address Wa designated by the write command with the write data Wd in the current user data of the logical page Lk, and creates new user data of the logical page Lk.
- the FM controller 103 creates new differential data of the logical page Lk by calculating an exclusive OR of the current reference data of the logical page Lk and the new user data, and compresses the new differential data Thus, compressed difference data is created (step 709).
- the FM controller 103 creates compressed user data by compressing new user data of the logical page Lk (step 710).
- the FM controller 103 compares the size of the result data (compression difference data) at step 709 with the size of the result data (compression user data) at step 710, selects the smaller one, and writes it to the flash memory 105 (step 711). ). If the sizes are the same, the result data of step 710 is selected.
- the user data of the logical page Lk is applied with the second forming method, and the FM controller 103 sets the difference flag 430 corresponding to the logical page address Lk to “ON”.
- the user data of the logical page Lk is applied to the first forming method, and the difference flag 430 corresponding to the logical page address Lk is set to “OFF” (712) ).
- the FM controller 103 acquires the reference data storage destination 420 (physical address Px [Nx] and storage sector size Sx) corresponding to the logical page address Lk calculated in step 501 (step 801).
- the FM controller 103 reads the compressed reference data of the logical page Lk from the physical area represented by the reference data storage destination 420, and decompresses the compressed reference data to restore the reference data (plain text state) (step 802). .
- the FM controller 103 creates differential data of the logical page Lk by calculating an exclusive OR of the reference data of the logical page Lk and the sector part separated from the write data Wd, and compresses the differential data.
- compressed difference data is created (step 803).
- the FM controller 103 sets the code part separated from the write data Wd as a new code part of the logical page Lk (step 804) and combines it with the result data (compression difference data) of step 803 (step 805).
- the FM controller 103 creates compressed write data by compressing the write data Wd (step 806).
- the FM controller 103 compares the size of the result data in step 805 (compressed differential data + new code part) with the size of the result data in step 806 (compressed write data), selects the smaller one, and writes it to the flash memory 105. (Step 807). If the sizes are the same, the result data in step 806 is selected.
- step 805 When the result data of step 805 is selected, the user data of the logical page Lk is applied with the second forming method, so the FM controller 103 sets the difference flag 430 corresponding to the logical page address Lk to “ON”. If the result data of step 806 is selected, the user data of the logical page Lk is applied to the first forming method, and therefore the difference flag 430 corresponding to the logical page address Lk is set to “OFF” (step) 808).
- the FM controller 103 acquires the reference data storage destination 420 (physical address Px [Nx] and storage sector size Sx) corresponding to the logical page address Lk calculated in step 501 (step 901).
- the FM controller 103 reads the compressed reference data (compressed reference data) of the logical page Lk from the physical area represented by the reference data storage destination 420, and expands the compressed reference data to obtain the reference data (plaintext state). ) Is restored (step 902).
- step 903 the FM controller 103 checks the difference flag 430 corresponding to the logical page Lk. If “OFF”, the process proceeds to step 904, and if “ON”, the process proceeds to step 906.
- step 904 the FM controller 103 acquires the code part address 460 (physical address Pz [Nz]) corresponding to the logical page Lk.
- the FM controller 103 reads the current code part of the logical page Lk from the physical area represented by the code part address 460, combines the code part with the reference data obtained in step 902, and then creates the logical page Lk. Current user data is created (step 905). Thereafter, the process proceeds to step 909.
- step 906 the FM controller 103 obtains the current difference data and code part, the difference data storage destination 440 (physical address Py [Ny] and storage sector size Sy) and code part address corresponding to the logical page Lk. 460 (physical address Pz [Nz]) is acquired.
- the FM controller 103 reads the compressed differential data of the logical page Lk from the physical area represented by the differential data storage destination 440, and decompresses the compressed differential data to restore the differential data (plain text state) (step 907). ).
- the FM controller 103 reads the code part of the logical page Lk from the physical area represented by the code part address 460 (Pz [Nz]) acquired in step 906, and excludes the reference data and difference data of the logical page Lk.
- the logical user is calculated and the current user data of the logical page Lk is created by synthesizing the code portion of the read logical page Lk with the calculation result (step 908). Thereafter, the process proceeds to step 909.
- step 909 the FM controller 103 rewrites the portion of the address Wa designated by the write command with the write data Wd in the current user data of the logical page Lk, and creates new user data of the logical page Lk.
- the FM controller 103 creates new differential data of the logical page Lk by calculating the exclusive OR of the current reference data of the logical page Lk and the sector part of the new user data, and compresses the differential data Thus, compressed difference data is created (step 910). Then, the FM controller 103 combines the result data (compressed difference data) with the code part separated from the new user data (step 911).
- the FM controller 103 creates compressed user data by compressing new user data of the logical page Lk (step 912).
- the FM controller 103 compares the size of the result data in step 911 (compressed differential data + code part) with the size of the result data in step 912 (compressed user data), selects the smaller one, and writes it to the flash memory 105. (Step 913). If the sizes are the same, the result data in step 912 is selected.
- step 911 When the result data of step 911 is selected, the user data of the logical page Lk is applied with the second forming method, and therefore the FM controller 103 sets the difference flag 430 corresponding to the logical page address Lk to “ON”. If the result data in step 912 is selected, the user data of the logical page Lk is applied to the first forming method, and the difference flag 430 corresponding to the logical page address Lk is set to “OFF” (step 914).
- step 505 the FM controller 103 determines whether the difference flag 430 of the logical page address Lk is set to “OFF” or “ON” in the last step of the entire write processing and partial write processing of the single allocation page. Check out. In the case of “OFF”, it means that the first forming method has been reached, and the process proceeds to Step 506. In the case of “ON”, it means that the second forming method has been reached, and the process proceeds to Step 508.
- step 506 the FM controller 103 updates the reference data storage destination 420 corresponding to the logical page address Lk to the physical address and storage sector size of the new reference data (compressed state) written to the flash memory 105. Then, the FM controller 103 invalidates the reference data before update remaining in the physical address Px [Nx] (step 507). This completes the write command process.
- step 508 the FM controller 103 updates the differential data storage destination 440 corresponding to the logical page address Lk to the physical address and storage sector size of the new differential data (compressed state) written to the flash memory 105. If the difference data before update is left in the physical address Py [Ny] (that is, if the difference flag 430 is ON before the write process), the FM controller 103 invalidates it. This completes the write command processing.
- step 509 the FM controller 103 determines whether the difference flag 430 of the logical page Lk is set to “OFF” or “ON” in the last step of the entire write process and partial write process of the duplicate allocation page. Investigate. In the case of “OFF”, it means that the first method for forming a single allocation page has been reached, and the process proceeds to step 510. In the case of “ON”, this means that the second method for forming a duplicate allocation page has been reached, and the process proceeds to step 514.
- step 510 the FM controller 103 updates the reference data storage destination corresponding to the logical page address Lk to the physical address and storage sector size of the new reference data (compressed state) written to the flash memory 105.
- the FM controller 103 in the duplication count table 470 The shared count value corresponding to the reference data is decremented by 1 (step 511). Further, if the value of the shared count becomes 0 by this subtraction, there is no logical page using the reference data before update anymore, so the FM controller 103 invalidates the reference data before update. (Step 512).
- the FM controller 103 changes the logical page Lk to a single allocation page by setting the duplication flag 450 corresponding to the logical page address Lk to “OFF” (step 513). This completes the write command processing.
- the FM controller 103 updates the differential data storage destination 440 corresponding to the logical page address Lk to the physical address and storage sector size of the new differential data (compressed state) written to the flash memory 105, and the logical page address.
- the code part address 460 corresponding to Lk is updated to the physical address of the new code part written in the flash memory 105, and the code part before update at the physical address Pz [Nz] is invalidated. If the difference data before update is left in the physical address Py [Ny] (that is, if the difference flag 430 is “ON” before the write process), the FM controller 103 determines the difference before the update. Also invalidate the data. This completes the write command processing.
- the user data before the update is not invalidated and the updated user data itself is not written, but the user data before and after the update is written.
- the compressed differential data which is the exclusive OR of is written.
- a method of creating differential data by exclusive OR is employed. This method is characterized in that even if a large number of updated parts are scattered in one physical page, it is not necessary to manage the position of each updated part one by one. Thereby, since the size of the management information regarding the difference can be reduced, there is an effect that the memory capacity can be saved.
- the data when there is no compression effect on data (at least one of the reference data and the difference data), the data may be written to the flash memory 105 in a plain text state. If the data is written in a plain text state, the read processing performance of the FM module 100 is improved because the decompression time can be reduced when the data is read.
- the FM controller 103 does not perform the subsequent compression process, and the flash memory Even if the difference data is not written to 105 and the difference flag 430 corresponding to the logical page Lk is set to “OFF” (the first forming method not using the difference data is selected), the write command processing is immediately finished. Good. Thereby, the write amount of the flash memory 105 can be reduced. Further, the time for compressing the differential data and the time for writing to the flash memory 105 can be reduced, and the write command processing performance of the FM module 100 is improved.
- the FM controller 103 determines the difference flag corresponding to the logical page Lk.
- the write command processing may be terminated without setting user data (update data) by setting 430 to “ON” (selecting the second forming method using difference data). That is, the write command process may be terminated without creating compressed user data and performing the comparison as described above.
- the FM controller 103 sets the difference flag 430 corresponding to the logical page Lk to “ON” (The write command processing may be completed without performing compression processing of user data (sector portion) by selecting a second formation method using difference data. That is, the write command process may be terminated without creating compressed user data and performing the comparison as described above.
- the FM controller 103 sets the difference flag 430 corresponding to the logical page Lk to “OFF” (The write command processing may be completed without selecting the first formation method that does not use the difference data and generating and compressing the difference data.
- the data size does not necessarily have to be compared on at least one of the single allocation page and the duplicate allocation page.
- the first formation method may be selected after the second formation method is selected a certain number of times, and then the second formation method may be selected again a certain number of times.
- the apparatus having the FM module 100 is not limited to the storage apparatus 1400, but may be a host 1421 as shown in FIG.
- the host 1421 (for example, a server device) may include an I / F 1604, an FM module 100, and a CPU 1602 connected to the I / F 1604 (the host 1421 may further include a storage device of a different type from the FM module 100 (for example, DRAM).
- the whole or a part of the FM module 100 may be used as a cache memory for data input / output by the host 1421.
- the CPU 1602 may be the host device of the FM module 100. Since the host 1421 may execute an application that frequently rewrites data in the cache memory, the FM module 100 according to the present embodiment that can reduce the write amount of the flash memory 105 is also effective for the host 1421.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
Claims (15)
- 上位装置に接続される記憶デバイスであって、
記憶媒体と、
前記記憶媒体に対するI/O(Input/Output)を制御し前記記憶媒体に基づく論理空間を前記上位装置に提供する媒体コントローラと
を有し、
前記論理空間は、複数の論理領域で構成されており、
各論理領域について基準データ範囲が前記記憶媒体に存在し、
前記媒体コントローラは、
ライト先論理アドレスを指定したライトコマンドを前記上位装置から受信し、
前記ライト先論理アドレスが属するライト先論理領域に対応した基準データ範囲から基準データをリードし、
前記基準データである第1データと、前記ライトコマンドに従うライトデータに基づくデータと前記ライトデータとのいずれかである第2データとの排他的論理和である差分データを作成し、
前記差分データを圧縮することにより圧縮差分データを作成し、
前記圧縮差分データを前記記憶媒体にライトし、
前記圧縮差分データがライトされた範囲である差分データ範囲を前記ライト先論理領域に関連付ける、
記憶デバイス。 - 前記媒体コントローラは、
前記第2データ又は前記第2データに基づくデータを圧縮することにより圧縮第2データを生成し、
前記圧縮第2データよりも前記圧縮差分データを含んだ第3データが小さければ、前記第3データを含む前記圧縮差分データを前記記憶媒体にライトし、
前記第3データは、前記圧縮差分データ、又は、前記第1データ内の1以上の保証コードであるコード部と前記圧縮差分データとで構成されたデータである、
請求項1記載の記憶デバイス。 - 前記媒体コントローラは、前記第3データよりも前記圧縮第2データが小さければ、前記第3データではなく前記圧縮第2データを前記記憶媒体にライトし、
前記媒体コントローラは、前記圧縮第2データを前記記憶媒体にライトする場合、前記ライト先論理領域の基準データ範囲を、前記ライト先論理領域に関連付けられている基準データ範囲から、前記圧縮第2データがライトされた範囲である圧縮第2データ範囲に更新する、
請求項2記載の記憶デバイス。 - 前記媒体コントローラは、前記圧縮第2データのサイズが前記第3データのサイズと同じであれば、前記第3データではなく前記圧縮第2データを前記記憶媒体にライトする、
請求項3記載の記憶デバイス。 - 前記媒体コントローラは、前記第3データを前記記憶媒体にライトし、且つ、前記ライト先論理領域に既に差分データ範囲が関連付けられている場合、前記ライト先論理領域の差分データ範囲を、前記ライト先論理領域に関連付けられている差分データ範囲から、前記第3データがライトされた範囲である第3データ範囲に更新する、
請求項2記載の記憶デバイス。 - 前記記憶媒体は、複数の物理領域で構成されており、物理領域単位でデータの入出力が行われるようになっており、
前記第1データは、物理領域単位の前記基準データであり、
前記第2データは、物理領域単位の前記ライトデータであり、
前記差分データは、物理領域単位の前記基準データと物理領域サイズの前記ライトデータとの排他的論理和である、
請求項1記載の記憶デバイス。 - 前記記憶媒体は、複数の物理領域で構成されており、物理領域単位でデータの入出力が行われるようになっており、
前記第1データは、物理領域単位の前記基準データであり、
前記第2データは、物理領域単位の更新後データであり、
物理領域単位の前記更新後データは、
物理領域単位の前記基準データと物理領域単位未満の前記ライトデータとに基づいて生成されたデータ、又は、
物理領域単位の前記基準データと前記ライト先論理領域に関連付けられている前記差分データとの排他的論理和により生成された物理領域単位の更新前データと、物理領域単位未満の前記ライトデータとに基づいて生成されたデータ、
であり、
前記差分データは、物理領域単位の前記基準データと物理領域単位の前記更新後データとの排他的論理和である、
請求項1記載の記憶デバイス。 - 前記記憶媒体は、複数の物理領域で構成されており、物理領域単位でデータの入出力が行われるようになっており、
前記ライト先論理領域を含む2以上の論理領域が同一の基準データ範囲に関連付けられており、
前記第1データは、物理領域単位のデータのうちの1以上の保証コード以外のデータ部である基準実データ部であり、
前記第2データは、物理領域単位の前記ライトデータのうちの1以上の保証コード以外のデータ部であるライト実データ部であり、
前記差分データは、前記基準実データ部と前記ライト実データ部との排他的論理和であり、
前記媒体コントローラは、前記圧縮差分データと、物理領域単位の前記ライトデータのうちの1以上の保証コードであるコード部とで構成された第3データを前記記憶媒体にライトする、
請求項1記載の記憶デバイス。 - 前記媒体コントローラは、
物理領域単位の前記ライトデータを圧縮することにより圧縮ライトデータを生成し、
前記圧縮ライトデータよりも前記第3データが小さければ、前記第3データを前記記憶媒体にライトし、
前記第3データよりも前記圧縮ライトデータが小さければ、前記第3データではなく前記圧縮ライトデータを前記記憶媒体にライトする、
請求項8記載の記憶デバイス。 - 前記記憶媒体は、複数の物理領域で構成されており、物理領域単位でデータの入出力が行われるようになっており、
前記ライト先論理領域を含む2以上の論理領域が同一の基準データ範囲に関連付けられており、
前記第1データは、物理領域単位のデータのうちの1以上の保証コード以外のデータ部である基準実データ部であり、
前記第2データは、物理領域単位の更新後データであり、
物理領域単位の前記更新後データは、
前記基準実データ部と、前記ライト先論理領域に関連付けられており前記記憶媒体に格納されている1以上の保証コードである格納コード部とで構成されたデータ、又は、
物理領域単位の暫定データと、物理領域単位未満の前記ライトデータとに基づいて生成されたデータ、
であり、
物理領域単位の前記暫定データは、前記基準実データ部と前記ライト先論理領域に関連付けられている前記差分データとの排他的論理和により生成された更新前データと、前記格納コード部とで構成されたデータであり、
前記差分データは、物理領域単位の前記更新後データのうちの1以上の保証コード以外のデータ部である更新後実データ部と、前記基準実データ部との排他的論理和であり、
前記媒体コントローラは、前記圧縮差分データと、物理領域単位の前記更新後データのうちの1以上の保証コードであるコード部とで構成された第3データを前記記憶媒体にライトする、
請求項1記載の記憶デバイス。 - 前記媒体コントローラは、
物理領域単位の前記更新後データを圧縮することにより圧縮更新後データを生成し、
前記圧縮更新後データよりも前記第3データが小さければ、前記第3データを前記記憶媒体にライトし、
前記第3データよりも前記圧縮更新後データが小さければ、前記第3データではなく前記圧縮更新後データを前記記憶媒体にライトする、
請求項10記載の記憶デバイス。 - 前記媒体コントローラは、前記差分データにおいて所定値の数が所定数以上であれば、前記第3データを前記記憶媒体にライトする、
請求項2記載の記憶デバイス。 - 前記媒体コントローラは、前記差分データが全て所定値で構成されたデータであれば、又は、前記ライトデータが所定パタンのデータであれば、前記圧縮第2データを前記記憶媒体にライトする、
請求項2記載の記憶デバイス。 - 記憶デバイスと、
前記記憶デバイスに対するI/Oを制御するプロセッサと
を有し、
前記記憶デバイスは、記憶媒体と、前記記憶媒体に対するI/Oを制御し前記記憶媒体に基づく論理空間を前記プロセッサに提供する媒体コントローラと
を有し、
前記論理空間は、複数の論理領域で構成されており、
各論理領域について基準データ範囲が前記記憶媒体に存在し、
前記媒体コントローラは、
ライト先論理アドレスを指定したライトコマンドを前記プロセッサから受信し、
前記ライト先論理アドレスが属するライト先論理領域に対応した基準データ範囲から基準データをリードし、
前記基準データである第1データと、前記ライトコマンドに従うライトデータに基づくデータと前記ライトデータとのいずれかである第2データとの排他的論理和である差分データを作成し、
前記差分データを圧縮することにより圧縮差分データを作成し、
前記圧縮差分データを前記記憶媒体にライトし、
前記圧縮差分データがライトされた範囲である差分データ範囲を前記ライト先論理領域に関連付ける、
装置。 - 記憶媒体に基づく空間であり複数の論理領域で構成された論理空間を上位装置に提供し、
ライト先論理アドレスを指定したライトコマンドを前記上位装置から受信し、
前記複数の論理領域に対応付けられている複数の基準データ範囲のうちの、前記ライト先論理アドレスが属するライト先論理領域に対応した基準データ範囲から、基準データをリードし、
前記基準データである第1データと、前記ライトコマンドに従うライトデータに基づくデータと前記ライトデータとのいずれかである第2データとの排他的論理和である差分データを作成し、
前記差分データを圧縮することにより圧縮差分データを作成し、
前記圧縮差分データを前記記憶媒体にライトし、
前記圧縮差分データがライトされた範囲である差分データ範囲を前記ライト先論理領域に関連付ける、
記憶制御方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/054643 WO2015128955A1 (ja) | 2014-02-26 | 2014-02-26 | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 |
US15/110,310 US10444992B2 (en) | 2014-02-26 | 2014-02-26 | Storage device, apparatus having storage device, and storage control method |
JP2016504903A JP6134857B2 (ja) | 2014-02-26 | 2014-02-26 | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/054643 WO2015128955A1 (ja) | 2014-02-26 | 2014-02-26 | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2015128955A1 true WO2015128955A1 (ja) | 2015-09-03 |
Family
ID=54008327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2014/054643 WO2015128955A1 (ja) | 2014-02-26 | 2014-02-26 | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10444992B2 (ja) |
JP (1) | JP6134857B2 (ja) |
WO (1) | WO2015128955A1 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018235149A1 (ja) * | 2017-06-20 | 2018-12-27 | 株式会社日立製作所 | ストレージ装置及び記憶領域管理方法 |
JP2019095913A (ja) * | 2017-11-20 | 2019-06-20 | 株式会社日立製作所 | ストレージシステム |
US10564848B2 (en) | 2016-04-13 | 2020-02-18 | Fujitsu Limited | Information storage device and method for deduplication |
JP2021068471A (ja) * | 2021-01-14 | 2021-04-30 | 株式会社日立製作所 | ストレージシステム |
US20220236870A1 (en) * | 2021-01-26 | 2022-07-28 | EMC IP Holding Company LLC | Method and system for compression in block-based storage systems |
US11481114B2 (en) | 2016-11-08 | 2022-10-25 | Hitachi, Ltd. | Storage apparatus and control method of storage apparatus |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170038978A1 (en) * | 2015-08-05 | 2017-02-09 | HGST Netherlands B.V. | Delta Compression Engine for Similarity Based Data Deduplication |
US11294588B1 (en) * | 2015-08-24 | 2022-04-05 | Pure Storage, Inc. | Placing data within a storage device |
US11625181B1 (en) | 2015-08-24 | 2023-04-11 | Pure Storage, Inc. | Data tiering using snapshots |
US9841918B2 (en) * | 2015-12-02 | 2017-12-12 | Samsung Electronics Co., Ltd. | Flash memory device including deduplication, and related methods |
US10282127B2 (en) | 2017-04-20 | 2019-05-07 | Western Digital Technologies, Inc. | Managing data in a storage system |
US10809928B2 (en) | 2017-06-02 | 2020-10-20 | Western Digital Technologies, Inc. | Efficient data deduplication leveraging sequential chunks or auxiliary databases |
US10503608B2 (en) | 2017-07-24 | 2019-12-10 | Western Digital Technologies, Inc. | Efficient management of reference blocks used in data deduplication |
JP2019057074A (ja) | 2017-09-20 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステム |
US10990565B2 (en) | 2019-05-03 | 2021-04-27 | EMC IP Holding Company, LLC | System and method for average entropy calculation |
US11138154B2 (en) | 2019-05-03 | 2021-10-05 | EMC IP Holding Company, LLC | System and method for offset-based deduplication |
US10963437B2 (en) * | 2019-05-03 | 2021-03-30 | EMC IP Holding Company, LLC | System and method for data deduplication |
US10733158B1 (en) | 2019-05-03 | 2020-08-04 | EMC IP Holding Company LLC | System and method for hash-based entropy calculation |
US10817475B1 (en) | 2019-05-03 | 2020-10-27 | EMC IP Holding Company, LLC | System and method for encoding-based deduplication |
US11068208B2 (en) * | 2019-10-29 | 2021-07-20 | EMC IP Holding Company LLC | Capacity reduction in a storage system |
US11144208B2 (en) * | 2019-12-23 | 2021-10-12 | Advanced Micro Devices, Inc. | Data compression system using base values and methods thereof |
TWI811674B (zh) * | 2021-05-06 | 2023-08-11 | 大陸商北京集創北方科技股份有限公司 | 快閃記憶體的操作方法、系統單晶片及資訊處理裝置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324485A (ja) * | 1992-05-20 | 1993-12-07 | Fujitsu F I P Kk | ファイル圧縮暗号処理装置 |
US6256232B1 (en) * | 2000-07-07 | 2001-07-03 | Institute For Information Industry | Data access method capable of reducing the number of erasing to flash memory and data patch and access device using the same |
JP2006065424A (ja) * | 2004-08-25 | 2006-03-09 | Nec Corp | データ記憶システム、データ記憶装置及びそれに用いる類似ファイル記録方法並びにそのプログラム |
JP2011034370A (ja) * | 2009-08-03 | 2011-02-17 | Fujitsu Ltd | メモリコントローラ |
JP2011505046A (ja) * | 2007-11-28 | 2011-02-17 | サンドフォース インコーポレイテッド | メモリの寿命を延長するためにメモリ内のスペア領域を増加させること |
JP2013532853A (ja) * | 2010-10-26 | 2013-08-19 | 株式会社日立製作所 | ストレージ装置及びデータ制御方法 |
-
2014
- 2014-02-26 JP JP2016504903A patent/JP6134857B2/ja not_active Expired - Fee Related
- 2014-02-26 WO PCT/JP2014/054643 patent/WO2015128955A1/ja active Application Filing
- 2014-02-26 US US15/110,310 patent/US10444992B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324485A (ja) * | 1992-05-20 | 1993-12-07 | Fujitsu F I P Kk | ファイル圧縮暗号処理装置 |
US6256232B1 (en) * | 2000-07-07 | 2001-07-03 | Institute For Information Industry | Data access method capable of reducing the number of erasing to flash memory and data patch and access device using the same |
JP2006065424A (ja) * | 2004-08-25 | 2006-03-09 | Nec Corp | データ記憶システム、データ記憶装置及びそれに用いる類似ファイル記録方法並びにそのプログラム |
JP2011505046A (ja) * | 2007-11-28 | 2011-02-17 | サンドフォース インコーポレイテッド | メモリの寿命を延長するためにメモリ内のスペア領域を増加させること |
JP2011034370A (ja) * | 2009-08-03 | 2011-02-17 | Fujitsu Ltd | メモリコントローラ |
JP2013532853A (ja) * | 2010-10-26 | 2013-08-19 | 株式会社日立製作所 | ストレージ装置及びデータ制御方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10564848B2 (en) | 2016-04-13 | 2020-02-18 | Fujitsu Limited | Information storage device and method for deduplication |
US11481114B2 (en) | 2016-11-08 | 2022-10-25 | Hitachi, Ltd. | Storage apparatus and control method of storage apparatus |
WO2018235149A1 (ja) * | 2017-06-20 | 2018-12-27 | 株式会社日立製作所 | ストレージ装置及び記憶領域管理方法 |
CN110199265A (zh) * | 2017-06-20 | 2019-09-03 | 株式会社日立制作所 | 存储装置和存储区域管理方法 |
CN110199265B (zh) * | 2017-06-20 | 2022-11-01 | 株式会社日立制作所 | 存储装置和存储区域管理方法 |
JP2019095913A (ja) * | 2017-11-20 | 2019-06-20 | 株式会社日立製作所 | ストレージシステム |
JP2021068471A (ja) * | 2021-01-14 | 2021-04-30 | 株式会社日立製作所 | ストレージシステム |
JP7017654B2 (ja) | 2021-01-14 | 2022-02-08 | 株式会社日立製作所 | ストレージシステム |
US20220236870A1 (en) * | 2021-01-26 | 2022-07-28 | EMC IP Holding Company LLC | Method and system for compression in block-based storage systems |
Also Published As
Publication number | Publication date |
---|---|
US20160328154A1 (en) | 2016-11-10 |
JPWO2015128955A1 (ja) | 2017-03-30 |
JP6134857B2 (ja) | 2017-05-24 |
US10444992B2 (en) | 2019-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6134857B2 (ja) | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 | |
US8799562B2 (en) | Storage apparatus and data control method for generating and storing format data and guarantee codes | |
US10664345B2 (en) | Physical page, logical page, and codeword correspondence | |
US10572187B2 (en) | Controller, data storage device, and computer program product | |
US9910748B2 (en) | Rebuilding process for storage array | |
JP5937697B2 (ja) | ストレージシステム | |
JP5026213B2 (ja) | ストレージ装置及びデータ重複排除方法 | |
CN110832590A (zh) | 在基于相变存储器的存储设备中减轻写入放大的方法和系统 | |
US9304685B2 (en) | Storage array system and non-transitory recording medium storing control program | |
JP6007332B2 (ja) | ストレージシステム及びデータライト方法 | |
WO2014170984A1 (ja) | ストレージシステム及び記憶制御方法 | |
JP6692448B2 (ja) | ストレージ装置及びストレージ装置の制御方法 | |
WO2015029230A1 (ja) | 記憶装置及びデータ制御方法 | |
KR101472797B1 (ko) | 데이터를 읽거나 쓰기 위한 방법 및 장치 | |
JP2020149195A (ja) | メモリシステム | |
WO2011118114A1 (ja) | 不揮発性記憶装置及びメモリコントローラ | |
US10846234B2 (en) | Storage control system and storage control method | |
JP6050794B2 (ja) | フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置 | |
WO2016051599A1 (ja) | メモリコントローラ及びデータ制御方法 | |
WO2018061161A1 (ja) | ストレージ装置およびその制御方法 | |
US11609844B2 (en) | Memory system with hierarchical tables | |
JP6163588B2 (ja) | ストレージシステム | |
US20190196900A1 (en) | Networked storage redundancy scheme | |
WO2015118680A1 (ja) | ストレージ装置 | |
WO2015196416A1 (zh) | 数据存储方法、装置和非易失性存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14884078 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2016504903 Country of ref document: JP Kind code of ref document: A |
|
WWE | Wipo information: entry into national phase |
Ref document number: 15110310 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 14884078 Country of ref document: EP Kind code of ref document: A1 |