WO2016071954A1 - 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 - Google Patents
半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 Download PDFInfo
- Publication number
- WO2016071954A1 WO2016071954A1 PCT/JP2014/079202 JP2014079202W WO2016071954A1 WO 2016071954 A1 WO2016071954 A1 WO 2016071954A1 JP 2014079202 W JP2014079202 W JP 2014079202W WO 2016071954 A1 WO2016071954 A1 WO 2016071954A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- command
- sub
- data
- area
- read
- Prior art date
Links
Images
Classifications
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Definitions
- the present invention generally relates to I / O (Input / Output) control of data for a semiconductor memory element.
- semiconductor memory elements for example, NAND Flash Memory
- the application destinations of semiconductor memory elements are expanding.
- an example of adopting a semiconductor memory device having a semiconductor memory element for example, SSD (Solid State Drive)) instead of HDD (Hard Disk Drive) is increasing.
- An SSD incorporates a plurality of semiconductor memory elements and controls the semiconductor memory elements in parallel, thereby realizing writing and reading (I / O processing) of a large amount of data in a short period of time (for example, Patent Documents). 1).
- SSDs that use higher-speed interfaces such as PCI-Express have been announced in place of low-speed HDD compatible interfaces such as SATA (Serial ATA).
- SATA Serial ATA
- higher I / O processing performance is desired. This is because if the internal I / O processing performance is low even if the interface is high speed, the internal I / O processing performance becomes a bottleneck. It is desired to improve the I / O processing performance regardless of whether the interface adopted by the SSD is high speed or not.
- the semiconductor memory device has a memory element group (one or more semiconductor memory elements) and a memory controller.
- a memory controller that processes at least a part of an I / O command when at least a part of the I / O command from the host device satisfies a predetermined condition; And one or more hardware logic circuits that process all of the I / O commands when the above condition is not satisfied.
- the processing performance bottleneck of the embedded processor that performs I / O processing is avoided, and high performance of the semiconductor memory device and shortening of the response time can be expected.
- FIG. 1 It is a figure which shows the internal structure of the flash memory (FM) module which concerns on embodiment.
- This is a part of the write command process and shows the write command reception process. This is the rest of the write command process and shows the write command response process.
- This is a part of the read command process and shows the read command reception process. This is the rest of the read command processing and shows the read command response processing.
- a logical-physical conversion table is shown.
- a block management table is shown. It is a flowchart of a subwrite hit command process. It is a flowchart of a sub read hit command process. It is a flowchart of a destage process. It is a flowchart of a reclamation process. An example of a high-order apparatus is shown. Another example of the host device is shown.
- information may be described by the expression “abc table”, but the information may be expressed by a data configuration other than the table. At least one of the “abc tables” can be referred to as “abc information” to indicate that it does not depend on the data configuration.
- the semiconductor memory element included in the semiconductor memory device is a non-volatile semiconductor memory element, and specifically, a flash memory (FM) such as NAND Flash Memory. Accordingly, it is assumed that the semiconductor memory device is a nonvolatile semiconductor memory device, specifically, an FM module.
- An FM module is an example of an FM device such as an SSD.
- Non-volatile semiconductor memory elements are not limited to FM, but include, for example, magnetoresistive random access memory (MRAM), resistance change memory (ReRAM), and random access memory (ferroRAM). random access memory) or the like. Further, a volatile semiconductor memory element may be employed instead of the nonvolatile semiconductor memory element.
- the FM is composed of a plurality of “physical blocks”, and each physical block is composed of a plurality of “physical pages”.
- the erase unit area is larger than the access unit area. Specifically, data is accessed (read and written) in physical page units, and data is erased in physical block units.
- a physical area is allocated in a predetermined unit (for example, a page unit or a block unit), but the range in which the physical block is allocated in the logical space. It can be called a “logical block”, and a range to which a physical page is allocated can be called a “logical page”.
- FM is a write-once type, specifically, when a logical page to which a physical page is allocated is a write destination, a new free physical page is allocated to the write destination logical page instead of the allocated physical page.
- Data is written to the physical page allocated to. For each logical page, the data written to the newly allocated physical page (latest data) is “valid data”, and the physical page to which valid data is written is “valid page”, which is allocated in the past.
- the data (past data) stored in the stored physical page is “invalid data”, and the physical page in which invalid data is written is “invalid page”.
- FIG. 1 is a diagram showing an internal configuration of the FM module 100.
- the FM module 100 includes an FM group that is a plurality (for example, 32) of FM 140, and an FM controller 110 connected to the plurality of FMs 140.
- the FM controller 110 includes a plurality of devices such as a processor 123, a RAM (Random Access Memory) 122, a data compressor (data compression / decompression unit) 116, a parity generator (parity generation unit) 115, a data cache 114, and an I / O interface. 118, FM interface 124, command external processing unit 119, command internal processing unit 120, copy DMA (Direct Memory Access) unit 121, cache hit determination unit 111, cache registration unit 112, command division unit 113, and switch 117. ing.
- a processor 123 such as a processor 123, a RAM (Random Access Memory) 122, a data compressor (data compression / decompression unit) 116, a parity generator (parity generation unit) 115, a data cache 114, and an I / O interface.
- the cache hit determination unit 111, the cache registration unit 112, the command division unit 113, the command external processing unit 119, and the command internal processing unit 120 are each hardware (hardware logic circuit) that executes a part of I / O processing. is there.
- hardware (hardware logic circuit) that executes a part of the I / O processing may be particularly referred to as “I / O hardware”.
- the “I / O processing” referred to in the present embodiment is processing of an I / O command from a higher-level device, and more specifically, write command processing (processing consisting of processing shown in FIG. 2 and processing shown in FIG. 3). ) And read command processing (processing consisting of the processing shown in FIG. 4 and the processing shown in FIG. 5).
- the “higher level device” is a device that transmits an I / O command to the FM module 100.
- the host computer 1300 is a host device.
- the storage controller 1201 is a host device.
- a plurality of FM modules 100 are connected to the storage controller 1201, respectively.
- the storage controller 1201 receives an I / O request from the host computer 1250, and based on the I / O request. Then, an I / O command is transmitted to the FM module 100.
- the host computer 1300 and the FM module 100 may communicate via a high-speed interface such as PCIe (PCI Express).
- PCIe PCI Express
- the storage controller 1201 and the FM module 100 may communicate with each other via a high-speed interface such as PCIe.
- the switch 117 includes a processor 123, a RAM 122, a data compressor 116, a parity generator 115, a data cache 114, an I / O interface 118, an FM interface 124, a cache hit determination unit 111, a cache registration unit 112, a command division unit 113, and an external command.
- a processing unit 119, a command internal processing unit 120, and a copy DMA unit 121 are connected.
- the switch 117 routes and transfers data between devices (elements) by an address (or ID).
- an address or ID
- the I / O interface 118 is a device connected to the host device.
- the I / O interface 118 can communicate with another device in the FM controller 110 via the switch 117.
- the I / O interface 118 receives an I / O command (write command / read command) from the host device.
- a logical address typically LBA (Logical Block Address)
- LBA Logical Block Address
- I / O destination write destination or read source
- write data data to be written according to the write command (hereinafter sometimes referred to as “write data”).
- the I / O interface 118 records the received write data in the RAM 122.
- the I / O interface 118 when the I / O interface 118 receives a command from the host device, the I / O interface 118 interrupts the processor 123 or notifies the storage area on the RAM 122 that is being polled by the processor 123 that the command has been received. Write.
- the processor 123 communicates with other devices of the FM controller 110 via the switch 117.
- the processor 123 controls the entire FM controller 110 based on the program and management table stored in the RAM 122. Further, the processor 123 monitors the entire FM controller 110 by periodic information acquisition (for example, polling of the RAM 122) and an interrupt reception function.
- the data cache 114 is an example of a temporary storage area, and temporarily stores data to be transferred in the FM controller 110.
- the data cache 114 is a buffer in which read data does not remain, but may be a storage area such as a cache memory in which read data remains.
- a plurality of FM interfaces 124 are provided in the FM controller 110, and I / O can be performed on the plurality of FMs 140 in parallel via the plurality of FM interfaces 124.
- One bus is connected to one FM interface 124, and two FMs 140 are connected to one bus.
- the FM interface 124 can independently control two FMs connected to the same bus by issuing a CE (Chip Enable) signal to the FM 140 of the I / O destination.
- the FM interface 124 operates in response to an I / O instruction (write instruction / read instruction) instructed by the processor 123 (or I / O hardware (for example, the command internal processing unit 120)).
- I / O instruction as information indicating the I / O destination, for example, a chip number (an identification number of FM 140), a block number (an identification number of a physical block in FM 140), and an identification number of a physical page in a physical block in FM 140 ) Is specified.
- the FM interface 124 transfers (writes) data read from the read source area (physical page in the FM 140) according to the read instruction to the data cache 114.
- the FM interface 124 reads data to be written from the data cache 114 and transfers (writes) the data to a write destination area (physical page in the FM 140) according to the write destination. If the FM interface 124 can transfer data to the upper apparatus without going through the data cache 114, the data read according to the read instruction is transferred to the upper apparatus without being stored in the data cache 114. It's okay.
- the FM interface 124 may include an ECC (Error Correction Code / Error Checking and Correction) generation circuit, an ECC data loss detection circuit, and an ECC correction circuit.
- ECC Error Correction Code / Error Checking and Correction
- the FM interface 124 may add ECC to the data and write the data to the FM 140. Further, when reading data, the FM interface 124 checks the data read from the FM 140 by the ECC data loss detection circuit, and performs data correction by the ECC correction circuit when data loss is detected. Good.
- the data compressor 116 has a function of processing a lossless compression algorithm, and has a plurality of types of algorithms and a compression level changing function.
- the data compressor (data compression / decompression unit) 116 reads data from the data cache 114 in accordance with an instruction from the processor 123 (or I / O hardware (for example, command internal processing unit 120)), and performs data by a lossless compression algorithm.
- a data decompression (decompression) operation which is a compression operation or an inverse conversion of data compression, is performed, and the result is written to the data cache again.
- the data compressor 116 may be implemented as hardware (logic circuit), or the same function may be realized by processing the compression / decompression program by the processor 123.
- the parity generator 115 has a parity generation function such as an XOR operation, an Even Odd operation, and a Reed-Solomon operation.
- the parity generator 115 reads data that is a parity generation target from the data cache 114 in accordance with an instruction from the processor 123 (or I / O hardware (for example, the command internal processing unit 120)). Alternatively, RAID 6 parity is generated.
- the cache hit determination unit 111 determines whether data in the I / O destination logical address range (for example, LBA range) designated by the I / O command from the host device is recorded in the cache area in the data cache 114. This hardware is determined by referring to the determination table.
- LBA range for example, LBA range
- the cache registration unit 112 operates when there is a write command from the host device, and updates the cache hit determination table in order to manage that the write data is stored in the cache in the data cache 114.
- the command division unit 113 is hardware that divides an I / O command from a host device into a plurality of sub I / O commands.
- the command division unit 113 divides the I / O command into LBA management units inside the FM module 100.
- an example in which an I / O command received from a higher-level device is divided will be described.
- a command to be divided is not limited to an I / O command from a higher-level device.
- the command external processing unit 119 is hardware that controls commands exchanged with the host device.
- the host device notifies the FM module 100 that a command has been created by accessing the register of the command external processing unit 119. Receiving the notification, the command external processing unit 119 acquires a command from the host device.
- the command external processing unit 119 notifies the host device of the completion notification of the command.
- the host device notifies that the completion notification has been received from the FM module 100 by accessing the register of the command external processing unit 119 (for example, by writing information indicating the completion notification received in the register).
- the command internal processing unit 120 is hardware that performs internal command processing of the FM module 100.
- the command internal processing unit 120 in the cache hit determination unit 111, when the request target area of the sub read command obtained by dividing the read command into the internal LBA management units is not registered in the cache, the sub read command Is converted to a command for the FM interface 124, and the FM interface 124 is notified that the command has been created.
- the copy DMA unit 121 is hardware that operates mainly when data in the data cache 114 is copied.
- the copy DMA unit 121 copies the data recorded in the storage area in the data cache 114 to another area in accordance with an instruction from the processor 123.
- the processing unit 119, the command internal processing unit 120, and the copy DMA unit 121 may each be configured in one semiconductor element as an ASIC (Application Specific Integrated Circuit) or FPBA (Field Programmable Gate Array), or a plurality of processing units. A configuration in which individual dedicated ICs (Integrated Circuits) are connected to each other may be used.
- the RAM 122 typically includes a volatile memory such as a DRAM (Dynamic Random Access Memory).
- the RAM 122 stores a management table of the FM 140 used in the FM module 100, a subcommand created by the command division unit, a transfer list including transfer control information used by the DMA, and the like. Note that the RAM 122 may include a part or all of the functions of the data cache 114 that stores data and may be used for data storage.
- the configuration of the FM module 100 according to the present embodiment has been described with reference to FIG.
- the FM module 100 on which the FM 140 is mounted will be described, but the mounted nonvolatile memory is not limited to the FM. Phase Change RAM, Resistance RAM, etc. may be used.
- the FM module 100 is equipped with a plurality of FMs 140 (chips), manages a storage area composed of a plurality of blocks (physical blocks) and a plurality of pages (physical pages 9).
- a logical space (logical area) is provided, and a physical area configured by the FM 140 is managed in a manner uniquely associated with an address space used only within the FM module 100.
- a physical area designation used only within the FM module 100 is specified.
- the address space is described as PBA (Physical Block Address)
- the FM controller 110 associates a plurality of PBAs with a plurality of LBAs (Logical Block Addresses) corresponding to the logical space (address space) provided to the host device. to manage.
- a logical-physical conversion table 600 which is a management table for managing correspondence of the FM module 100, will be described with reference to FIG.
- FIG. 6 shows a logical-physical conversion table 600.
- the logical-physical conversion table 600 may be stored in a storage area in the FM module 100, for example, the RAM 122.
- the logical-physical conversion table 600 has an LBA 601, a PBA 602, and a PBA length 603 for each LBA / PBA pair (association).
- LBA 601 indicates LBA
- PBA 602 indicates PBA
- PBA length 603 indicates the length of PBA.
- the length of the PBA varies depending on whether or not the data is compressed by the data compressor 116.
- the processor 123 or the I / O hardware logically converts the PBA and the PBA length corresponding to the LBA specified by the read command from the host device.
- the processor 123 or the I / O hardware stores the PBA corresponding to the LBA specified by the write command from the host device (that is, the pre-update data).
- PBA indicating the physical area that has been specified is specified from the logical-physical conversion table 600, and a PBA different from the specified PBA (PBA corresponding to one or more empty pages to which write data is written) and a PBA length are determined. .
- the processor 123 or the I / O hardware uses the determined PBA and PBA length in the corresponding field of the logical-physical conversion table 600 (the field corresponding to the LBA specified by the write command from the host device). ). With this operation, data in the logical area can be overwritten.
- LBAs belonging to the logical space provided by the FM module 100 are arranged in order for each predetermined size (4 KB in the present embodiment). Specifically, the logical space is divided into predetermined sizes, and an entry (record) exists in the table 600 for each unit logical area.
- the numerical value 1 in the LBA 601 means one sector of 512 bytes. This means that in this embodiment, the association between LBA and PBA is managed in units of 4 KB. Therefore, a unit that divides the logical space can also be called a management unit.
- a set (association) of a logical address such as LBA and a physical address such as PBA is limited to management in units of 4 KB. is not.
- the LBA may be managed in any unit.
- PBA 602 indicates the head PBA associated with the LBA.
- the PBA is managed every 512 bytes.
- a PBA value “XXX” is associated with the PBA associated with the LBA “0x000_0000_0000”.
- This PBA value is an address that uniquely indicates the storage area of the FM. Thereby, when LBA “0x000_0000_0000” is specified in the read command, PBA “XXX” is specified.
- the PBA “unallocated” is associated.
- PBA length “2” and the PBA “XXX” 4 KB data starting with the LBA “0x000_0000_0000” is compressed and stored in the 1 KB area from the PBA “XXX” to “XXX + 2”. I understand that.
- the FM module shown in the embodiment shows an example in which data is compressed and stored, but the present invention is not limited to this example. Data may not be compressed and stored. When data is not stored after being compressed, a column having a PBA length 603 is not necessary in the logical-physical conversion table 600.
- FIG. 7 shows a block management table 700.
- the block management table 700 is stored in a storage area in the FM module 100, for example, the RAM 122, and has, for example, a PBA 701, a chip number 702, a block number 703, and an invalid PBA amount 704 for each PBA having a predetermined size.
- PBA 701 indicates a physical area in the FM group. In the present embodiment, the PBA is managed by being divided into blocks. In FIG. 7, PBA 701 indicates the head address. For example, PBA “0x000_0000_0000” indicates a PBA range from “0x000_0000_0000” to “0x000_000F_FFFF”. 6 and 7 differ in the PBA expression format, but are the same in terms of PBA.
- Chip number 702 indicates the identification number of FM 140 (chip).
- a block number 703 indicates an identification number of a block (physical block).
- the invalid PBA amount 704 indicates an invalid PBA amount.
- the invalid PBA amount is the amount of the PBA area whose association with the logical space is released, that is, the total amount (total size) of invalid areas (invalid pages).
- the PBA area associated with the logical space is an effective area (effective page).
- the invalid PBA area is inevitably generated when a pseudo-overwrite is attempted to be realized in a non-volatile memory where data cannot be overwritten.
- the update data is written into another unwritten PBA area, and the PBA 602 and PBA length 603 of the logical-physical conversion table 600 are the start address of the write destination PBA area of the update data and the update data.
- the PBA length is updated.
- this invalid PBA amount (for example, the number of invalid pages) is counted for each block which is the minimum erase unit of FM, and a block with a large invalid PBA amount is preferentially reclaimed (in the case of reclamation).
- Source data physical block According to the example of FIG. 7, the invalid PBA amount of the block with the chip number “0” and the block number “0” is 160 KB.
- reclamation is performed for blocks whose invalid PBA amount is equal to or greater than the reclamation start threshold.
- valid data is moved from the valid PBA area (valid page) in the source block (block whose invalid PBA amount is equal to or greater than the reclamation start threshold) to another block.
- the valid PBA area is It becomes an invalid PBA area (that is, the entire area of the migration source block becomes an invalid PBA area), and then the erase process is performed on the migration source block.
- the source block becomes an empty block. Writing to the FM 140 occurs due to data movement (data copying) in reclamation.
- the FM controller 110 is moved by referring to the block management table 700 and preferentially selecting a block having a large invalid PBA amount 704 (including many invalid PBA areas) as an erasure process target (source block). The amount of data to be saved can be reduced.
- the management of the invalid PBA amount is management of the amount of the area whose association with the logical space is released, but the present invention is not limited to this management unit.
- the amount of invalid data may be managed in units of pages.
- the block management table 700 has been described above.
- the processing status is recorded in the command processing log 132 each time processing is performed.
- the processor can calculate the command processing log 132 to identify the failure location.
- the command processing log 132 is stored in, for example, the RAM 122 as shown in FIG.
- At least one of the command external processing unit 119, the command division unit 113, the cache hit determination unit 111, the cache registration unit 112, the command internal processing unit 120, and the copy DMA unit 121 detects a failure (for example, timeout). In this case, it has a function of interrupting the processor 123.
- the processor 123 that has received the interrupt identifies the failure location by analyzing the command processing log described above.
- FIG. 2 and 3 show the write command processing. Specifically, FIG. 2 shows a write command reception process which is a part of the write command process. FIG. 3 shows a write command response process that is the rest of the write command process.
- the command external processing unit 119 that has received the write command from the host device registers the received write command in the internal area (eg, register) of the unit 119.
- the command external processing unit 119 sets the state of the registered write command to a state waiting for reception of the completion notification.
- the command external processing unit 119 transfers the registered write command to the command dividing unit 113.
- the reason why the command external processing unit 119 registers the write command in the internal area is that the command external processing unit 119, which is hardware, sends a completion response to the host device (this is because the read command registration ( The same applies to FIG. 4). That is, the command external processing unit 119 manages whether a completion notification has been transmitted or not transmitted for each write command received by the command external processing unit 119.
- the write command to which the completion notification is transmitted may be deleted from the command external processing unit 119.
- the command division unit 113 that has received the write command from the command external processing unit 119 divides the write command into sub-write commands, and registers the sub-write commands in, for example, an internal area (for example, a register of the unit 113).
- the number of sub-write commands obtained from the write command is the quotient (quotient 0) obtained by dividing the size of the write data by the internal management unit (unit logical area of the logical space), in other words, the page size. In this case, 1) is sufficient.
- the command division unit 113 registers the correspondence relationship between the write command and the sub-write command, for example, in an internal area (for example, a register) of the unit 113.
- the correspondence relationship is, for example, a write command ID (eg, “A”) and a plurality of IDs (eg, “A-1”, “A-2”) respectively corresponding to a plurality of sub-write commands divided from the write command. , “A-3”, “A-4”).
- the ID of the write command may be an ID included in the write command from the host device, or may be an ID given by the FM controller 110 (for example, the command external processing unit 119 or the command division unit 113).
- the ID of the sub-write command may be an ID given based on the ID of the write command, for example, or may be an ID given by the FM controller 110 (for example, the command division unit 113).
- the command division unit 113 sets the state of each of the plurality of sub-write commands to a state of waiting for reception of a completion notification (response).
- the command division unit 113 transfers the divided sub-write commands to the cache registration unit 112, respectively.
- One sub-write command corresponds to writing of one sub-write data, and designates, for example, the write destination LBA of one sub-write data.
- the sub write data is a part of the write data, and has the same size as the internal management unit (page size), for example.
- One sub-write data is written in one page without straddling two or more pages.
- the reason why the command division unit 113 divides the write command into sub-write commands is that the storage state of the write data can be different for each internal management unit (each sub-write data).
- a cache hit data corresponding to the write destination LBA exists in the cache 114
- a cache miss data corresponding to the write destination LBA does not exist in the cache 114 are mixed for the data stored in the same page. Is to avoid. If all the data to be written is a cache miss, the processing by the processor 123 is unnecessary, but if at least a part of the data to be written is a cache hit, the processing by the processor 123 is required. Therefore, it is desirable to avoid a mixture of cache hits and cache misses for data stored on the same page.
- one sub-write data (4 KB data) is on the data cache 114, and the remaining three sub-write data (total 12 KB data) is one or more FM 140. It may be stored in In this case, for sub-write data stored in the data cache 114, a cache management table (not shown) needs to be updated.
- the cache management table may be the same information as the cache determination table.
- the sub-write data stored in the FM 140 the sub-write data may be registered in the cache 114, and the address of the cache area (one area in the cache 114) in which the sub-write data is stored is stored in the processor 123. There is no need to be notified.
- the state of the logical area (area corresponding to the sub-write data) can be different for each management unit (4 KB in the example). For this reason, in the present embodiment, a sub-write command for sub-write data that is data having the same size as the management unit is generated from the write command.
- the I / O hardware or processor 123 that has received the sub-write command need only control the state of a single sub-write command, and can process other sub-write commands in the write command that includes the sub-write command. There is no need to wait for completion. As a result, high performance is expected. Further, for the sub-write command in a situation where the processing of the processor 123 is unnecessary, the processing by the processor 123 becomes unnecessary, and as a result, the performance limitation due to the processor processing performance bottleneck can be reduced.
- the number of sub write commands may be 1, and the sub write command may be a write command.
- the command division unit 113 may transfer the write command from the command external processing unit 119 to the cache hit determination unit 111.
- the cache hit determination unit 111 that has received a plurality (or 1) of subwrite commands from the command division unit 113 performs a cache hit determination for each received subwrite command (corresponding to the LBA specified by the subwrite command). It is determined whether or not the sub-write data is registered in the cache 114). Specifically, for example, in this embodiment, the cache registration unit 112 registers the data in the cache 114, the cache hit determination unit 111 has a cache hit determination table (not shown), and cache hit The determination unit 111 refers to the cache hit determination table to determine whether or not the subwrite data targeted by the subwrite command is on the cache 114.
- the cache hit determination table may have, for example, a set of an address of a subcache area and an LBA (LBA belonging to a logical space) corresponding to data in the subcache area. If the LBA specified by the subwrite command is registered in such a cache hit determination table, it is a cache hit, and if the LBA specified by the subwrite command is not registered, it is a cache miss. .
- a cache hit is a state in which data associated with the LBA area (logical area) targeted by the subwrite command is stored in the data cache 114 instead of the FM 140.
- a cache miss is a state in which data associated with an LBA area (logical area) targeted by the subwrite command is stored in the FM 140 instead of the data cache 114.
- the sub write command determined as a cache hit by the cache hit determination unit 111 is subsequently managed as a sub write hit command.
- the subwrite hit command includes the address of the subcache area where the new subwrite data (subwrite data to be newly stored in the subcache area) is stored and the cache hit sub The address of the cache area (the sub-cache area in which old sub-write data (sub-write data updated by new sub-write data) is stored) is designated.
- the sub-write command determined as a cache miss by the cache hit determination unit 111 is managed as a sub-write miss command thereafter. Both the subwrite hit command and the subwrite command are transferred from the cache hit determination unit 111 to the cache registration unit 112.
- the cache registration unit 112 that has received the subwrite command (subwrite hit command and subwrite miss command) from the cache hit determination unit 111 performs the LBA (LBA belonging to the logical space) specified by the subwrite command for each subwrite command. ) Is registered in the cache hit determination table. Of the received subwrite commands, the cache registration unit 112 notifies only the subwrite hit command to the processor 123 and does not notify the processor 123 of the subwrite miss command.
- LBA LBA belonging to the logical space
- the processor 123 that has received the subwrite hit command performs control according to the subwrite hit command.
- the subwrite hit command includes the address of the subcache area (old subcache area) where the old subwrite data is stored and the address of the subcache area (new subcache area) where the new subwrite data is stored. It is specified.
- the processor 123 specifies the old sub-cache area based on the sub-write hit command and releases the specified cache area. Specifically, for example, the processor 123 deletes the association between the LBA specified by the subwrite hit command and the address of the old subcache area from the cache hit determination table.
- the processor 123 After the processing of the sub write hit command, the processor 123 notifies the command division unit 113 of the completion of the sub write hit command as shown in FIG. Further, the cache registration unit 112 registers the sub write data corresponding to the sub write miss command in the data cache 114, and then notifies the command division unit 113 of the completion of the sub write miss command.
- completion is notified when the sub-write data is stored in the data cache 114 instead of the FM 140, but the present invention is not limited to this example. For example, the completion may be notified to the command division unit 113 after the data of the sub-write command is written in the FM 140.
- the command division unit 113 holds the correspondence between the write command and the divided sub-write command.
- the command division unit 113 monitors completion of all the sub-write commands constituting the write command. Each time the command division unit 113 receives completion, the command division unit 113 sets the state of the sub-write command corresponding to the completion to completion reception. If there is a completion report from the processor for all the sub-write commands constituting the write command, the command division unit 113 notifies the command external processing unit 119 that the write command has been completed.
- the command external processing unit 119 that has received the command completion from the command division unit 113 transfers a write command completion notification to the host device.
- the completion notification (write command response) transferred to the host device may be a notification from the command division unit 113 or a notification generated by the command external processing unit 119.
- the command external processing unit 119 When the command external processing unit 119 receives a write command from the host device, it sets a timer for the write command (starts time measurement), and within a certain time after receiving the write command, the command dividing unit 113 If a completion notification is not received from, a time-out error may be notified to the host device.
- the command external processing unit 119 receives and holds a plurality of I / O commands from the host device, and may perform time monitoring with the above-described timer for each I / O command.
- the above is the write command processing in this embodiment.
- the write command processing when a plurality of sub-read commands respectively corresponding to a plurality of sub-write commands are stored in the cache 114, the completion of the write command is notified to the host device. This can be expected to speed up the write command processing.
- FIG. 4 and 5 show the read command processing. Specifically, FIG. 4 shows a read command reception process which is a part of the read command process. FIG. 5 shows the rest of the read command process and the read command response process.
- the command external processing unit 119 that has received the read command from the host device registers the received read command in the internal area (eg, register) of the unit 119.
- the command external processing unit 119 sets the status of the registered read command to a status of waiting for completion notification.
- the command external processing unit 119 transfers the registered read command to the command dividing unit 113.
- the command division unit 113 that has received the read command from the command external processing unit 119 divides the read command into sub-read commands, and registers the sub-read commands in an internal area (for example, a register of the unit 113).
- the number of sub-read commands obtained from the read command is the quotient obtained when the size of the read data (data read according to the read command) is divided by the internal management unit (page size) (when the quotient is 0). May be 1).
- the command division unit 113 registers the correspondence between the read command and the sub read command in, for example, an internal area (for example, a register) of the unit 113.
- the command division unit 113 sets the state of each of the plurality of sub-read commands to a state of waiting for reception of a completion notification (response).
- the command division unit 113 transfers each of the divided sub-read commands to the cache registration unit 112.
- One sub read command corresponds to reading of one sub read data, and designates, for example, an LBA from which one sub read data is read.
- the sub read data is a part of the read data and has the same size as the internal management unit (page size), for example.
- One sub read data is read from one page without straddling two or more pages.
- the reason why the command division unit 113 divides the read command into sub-read commands is that the storage state (cache hit / cache miss) differs for each management unit as in the case of the write command described above, and the read command There is a possibility that a plurality of pages (a plurality of read source pages) associated with the LBA area specified in (1) are dispersed in different FMs 140 connected to different FM interfaces.
- the FM controller 110 manages the correspondence between LBA and PBA for each L internal management unit, and even in a continuous LBA area, the actual data is distributed to a plurality of different FMs 140 (and data caches 114). There is a possibility. Therefore, in order to complete one read command, it may be necessary to control a plurality of FM interfaces 124 (or copy DMA units 121) in parallel. For this reason, the read command is divided into sub-read commands based on the internal management unit.
- the cache hit determination unit 111 that has received multiple (or 1) sub read commands from the command division unit 113 performs cache hit determination for each sub read command. Specifically, the cache hit determination unit 111 refers to the cache hit determination table to determine whether or not the sub read data targeted by the sub read command is on the cache 114.
- a cache hit is a state in which data associated with an LBA area (logical area) targeted by the sub read command is stored in the data cache 114 instead of the FM 140.
- a cache miss is a state in which data associated with an LBA area (logical area) targeted by the sub read command is stored in the FM 140 instead of the data cache 114.
- the sub read command determined as a cache hit by the cache hit determination unit 111 is thereafter managed as a sub read hit command.
- the cache hit determination unit 111 designates the address of the sub cache area where the cache hit occurs.
- the sub read command determined by the cache hit determination unit 111 as a cache miss is managed as a sub read miss command.
- the cache hit determination unit 111 selects the I / O command to which the sub read command is transferred depending on whether the sub read command is a sub read hit command or a sub read miss command.
- the sub read miss command is transferred to the command internal processing unit 120, and the sub read hit command is transferred to the processor 123.
- the reason for separating the notification I / O hardware of the sub read miss command and the sub read hit command is the difference in the occurrence frequency of the sub read miss and the sub read hit, and the complexity of the sub read hit processing.
- the difference in the frequency of occurrence of sub-read misses and sub-read hits depends on the ratio of the capacity of the data cache 114 to the capacity of the FM group (collection of a plurality of FMs 140), and the locality of the LBA specified by the host device to the FM module 100 To do.
- the difference between the capacity of the data cache 114 and the capacity of the FM group is extremely large. More specifically, for example, the capacity of the data cache 114 is several hundred MB (megabytes), and the capacity of the FM group is several TB (terabytes).
- most of the sub read commands obtained from the read command are sub read miss commands.
- the data cache 114 is a temporary storage area such as a buffer in which read data does not remain. desirable.
- the sub cache area that is the target area of the sub read hit command may be an area in which data is transferred from the data cache 114 to the FM 140 (hereinafter, this operation is referred to as destage) in order to write data to the FM 140. There is. If the destage processing does not consider the conflict with the sub read hit command processing, the sub cache area is released when the data transfer to the FM 140 is completed.
- the processor 123 performs complicated competition management of various operations performed by the FM controller 110. For example, in order to avoid a conflict between the sub read hit command process and the destage process, the processor 123 detects that “the sub cache area corresponding to the sub read hit command is the target of the destage process. ”Or“ Acquiring the lock of the sub cache area corresponding to the sub read hit command, and releasing the sub cache area in the destage processing executed in parallel (data is deleted from the sub cache area) Exclusive control, such as “cannot be performed”.
- the processor 123 By causing the processor 123 to process the sub read hit command, it is considered that the processing performance of the processor 123 becomes a bottleneck, and the read performance of the FM module 100 is lowered. In an environment where a small number of I / O patterns can be executed, the occurrence frequency of the sub read hit command is lower than the occurrence frequency of the sub read miss command, so that the performance degradation of the FM module can be reduced.
- the command internal processing unit 120 receives a sub read miss command from the cache hit determination unit 111. For each sub-read miss command, the command internal processing unit 120 identifies the PBA corresponding to the LBA specified by the sub-read miss command from the logical-physical conversion table 600, and sends the identified PBA to the FM interface 124 connected to the corresponding physical area. On the other hand, a command for reading data from the FM 140 is generated and transferred. Two or more FM interfaces 124 respectively connected to two or more read source physical areas (pages) respectively corresponding to two or more sub read miss commands can be activated in parallel.
- the processor 123 receives a sub read hit command from the cache hit determination unit 111.
- the processor 123 issues a command to the copy DMA unit 121 after performing exclusive control on the subcache area specified by the subread hit command. This is because the data in the sub-cache area is copied to the read buffer area (the area in which the read data is temporarily stored before the read data is transferred to the host device).
- the sub-cache area and the read buffer area are separate areas, but the data cache 114 and the read buffer area may be integrated, and in this case, the copy DMA unit 121 may be omitted.
- data read from the FM group by the read command is not registered in the data cache 114, but the present invention is not limited to this example.
- the sub read data read from the FM 140 may be transferred to the data cache 114, and the LBA specified by the read sub command may be registered in the cache hit determination table.
- data may be read from the sub-cache area instead of from the FM 140.
- the completion notification is transferred from the FM interface 124 and the copy DMA unit 121 that have been notified of the data transfer command as a result of the processing of the sub read command (sub read hit command and sub read miss command).
- the FM interface 124 that has completed the processing of the command for reading data from the FM 140 sends a completion notification including the sub read data specified by the sub read miss command and read from the FM 140.
- the command division unit 113 is notified.
- the copy DMA unit 121 that has completed the data transfer from the sub-cache area to the read buffer notifies the processor 123 that has issued a command to the copy DMA unit 121 of the transfer completion.
- the processor 123 that has received the completion notification from the copy DMA unit 121 performs exclusive control on the sub-cache area corresponding to the sub-read hit command, and then notifies the command division unit 113 of the completion of the sub-read hit command.
- the copy DMA unit 121 once notifies the processor 123 of completion, and the processor 123 that has received the notification notifies the command division unit 113 of completion, but the present invention is limited to this example. is not.
- the copy DMA unit 121 may notify the command division unit 113 and the processor 123 of the sub read hit command.
- the command division unit 113 is waiting for a completion notification for all of the plurality of sub-read commands created from a single read command. If there is no completion notification even when the timeout threshold is exceeded (if the completion notification is not received within a certain time after the sub-read command is issued), the command division unit 113 sends error information to the command processing log. Writing to 132 may interrupt the processor 123.
- the command division unit 113 that has received the completion notification from the FM interface 124 and the processor 123 receives the completion notification for all the sub-read commands constituting the read command, and then notifies the command external processing unit 119 of the completion of the read command. Forward.
- the command external processing unit 119 that has received the read command completion notification from the command division unit 113 transfers a completion notification notifying the host device that the read command processing has been completed.
- the completion notification (read command response) transferred to the host device may be a notification from the command division unit 113 or a notification generated by the command external processing unit 119.
- the completion notification transferred to the host device may include read data constituted by sub read data corresponding to all the sub read commands constituting the read command.
- the main processing of the processor 123 of this embodiment includes processing executed based on an I / O command from a higher-level device such as sub write hit command processing and sub read hit command processing, destage processing, and reclamation.
- processing internal processing
- destage processing and reclamation processing is not notified to the host device. Is a process that cannot be grasped.
- FIG. 8 is a flowchart of sub-write hit command processing.
- the processor 123 receives a subwrite hit command from the cache hit determination unit 111.
- the processor 123 specifies the old subcache area and the new subcache area from the received subwrite hit command.
- the processor 123 tries to acquire the lock of the sub-cache area specified in S801. In this step, the processor 123 attempts to acquire a lock based on the management table held by the FM controller 110.
- the processor 123 determines whether the lock has been acquired. If the lock cannot be acquired in this step, the processor 123 can determine that the sub-cache area specified in S801 is being used in another process, and until the use of the different process is terminated by transitioning to S802. Try to get a lock. On the other hand, if the lock has been acquired, the process proceeds to S804.
- the processor 123 acquires the management data of the hit sub area (sub cache area where the cache is hit).
- the processor 123 refers to the management data (including the LBA corresponding to the data stored in the hit sub area) acquired in S804, and determines whether the hit sub area is the old sub cache area. In the FM module 100, there is a possibility that the data in the hit sub area changes in another process. In S805, the processor 123 determines whether or not this area is the old sub cache area.
- the processor 123 releases the old sub-cache area. Thereby, the old sub-cache area can be handled as a sub-cache area in another process.
- the processor 123 registers the address of the new sub-cache area in the cache management table.
- the processor 123 releases the lock of the hit sub area.
- the released area can be handled as a sub-cache area in another process (for example, a destage process or a sub read hit command process).
- the processor 123 notifies the command division unit 113 that the subwrite hit command received in S801 has been completed.
- FIG. 9 is a flowchart of the sub-read hit command process.
- the processor 123 receives a sub read hit command from the cache hit determination unit 111.
- the processor 123 identifies the sub cache area from the received sub read hit command.
- the processor 123 tries to acquire the lock of the sub-cache area specified in S901.
- the processor 123 determines whether the lock has been acquired.
- the processor 123 acquires the management data of the hit sub area (sub cache area where the cache hit occurs).
- the processor 123 refers to the management data acquired in S904 (including the LBA corresponding to the data stored in the hit sub area), and the hit sub area stores the sub read data corresponding to the sub read hit command. It is determined whether or not it is a sub cache area. If the determination result in S905 is affirmative, the process proceeds to S906, and if the determination result in S905 is negative, the process proceeds to S910.
- the copy DMA unit 121 that copies the data in the hit sub area to the read buffer area. For this purpose, a command is generated and the copy DMA unit 121 is activated by transmitting the command to the copy DMA unit 121.
- the processor 123 receives a completion notification from the copy DMA unit 121 activated in S906. By receiving this completion notification, it is determined that the sub read data corresponding to the sub read hit command is stored in the read buffer area.
- a plurality of sub-read data respectively corresponding to a plurality of sub-read commands divided from the read command are stored in the read buffer area, and a command division unit that confirms completion of all the sub-read commands. 113 activates data transfer to the host device. Therefore, the data transfer process as the sub read hit command is completed when the sub read data is stored in the read buffer area.
- the processor 123 releases the lock of the hit sub area.
- the processor 123 notifies the command division unit 113 that the sub-read hit command received in S901 has been completed.
- the processor 123 registers the sub read hit command in the command internal processing unit 120 as a read miss command. This is because it has been determined that a cache miss has already occurred for the sub-read hit command received in S901, there is no sub-read data in the hit sub area, and the sub-read data is stored in the FM 140. In this case, the command internal processing unit 120 issues a command to the FM interface 124. The FM interface 124 notifies the command division unit 113 of the completion when the data transfer from the FM 140 to the read buffer area is completed by the FM interface 124. For this reason, the completion notification from the processor 123 to the command division unit 113 becomes unnecessary.
- FIG. 10 is a flowchart of the destage processing.
- Destage processing is started periodically.
- the destage opportunity is not limited regularly. For example, even if the processor 123 monitors the usage state of the data cache 114 and starts the destage processing to release the sub-cache area when the amount of the usable area of the data cache 114 is equal to or less than the threshold value. Good.
- the processor 123 selects a sub-cache area to be destaged.
- the processor 123 refers to the cache management table and selects a plurality (or 1) of sub-cache areas as destage targets.
- the LBA LBA belonging to the logical space
- the destage target data is acquired from the cache management table.
- the processor 123 tries to acquire each lock of the plurality of sub-cache areas selected as destage targets in S1001.
- the processor 123 determines whether the lock can be acquired.
- the processor 123 refers to a lock management table (not shown) indicating the relationship between the sub-cache area and the presence / absence of the lock, and whether the destage target area selected in S1001 can be occupied (locked). Determine.
- the process proceeds to S1001 in order to set another sub-cache area as the destage target area.
- the process proceeds to S1004.
- the processor 123 acquires management data of a plurality of destage target areas selected in S1001.
- the processor 123 confirms that the plurality of destage target areas selected in S1001 are valid.
- another process for example, a destage process performed by another core when the processor 123 is multi-core
- the processor 123 determines that the destage target area is valid by referring to the management data of the sub-cache area that acquired the lock. If it becomes valid, the process proceeds to S1006. On the other hand, if not valid, the process proceeds to S1001 in order to secure a destage target area.
- the processor 123 selects a destage destination FM area (physical area in the FM).
- the processor 123 refers to an internal management table (for example, the block management table 700 shown in FIG. 7) and determines a plurality of FM areas that are destage destinations (transfer destinations) of data in the sub-cache area.
- the processor 123 In S1007, the processor 123 generates and activates a write command for the FM interface 124 connected to the FM area selected in S1006.
- the processor 123 receives a completion notification from each of the plurality of FM interfaces 124 activated in S1006.
- the processor 123 updates the logical-physical conversion table 600.
- the processor 123 associates the LBA acquired in S1001 with the destage destination PBA area (FM area).
- the processor 123 releases the lock of the sub-cache area selected in S1001. After the lock is released, the released sub-cache area can be used in other processing such as sub write hit command processing and read hit command processing.
- FIG. 11 is a flowchart of the reclamation process.
- the processor 123 selects a PBA area (movement source block) to be reclaimed.
- the processor 123 refers to the block management table 700 and selects a block having a relatively large amount of invalid PBA as the movement source block. This is to reduce the amount of data moved in the reclamation process.
- the processor 123 specifies the LBA associated with the PBA area (block) selected in S1101 from the logical-physical conversion table 600.
- the correspondence relationship between the LBA and the PBA may be registered in the management table other than the logical-physical conversion table 600, and the LBA may be specified from the table.
- the processor 123 registers with the cache registration unit 112 the LBA specified in S1102 in the cache registration table and secures a sub-cache area for storing data associated with the LBA. Request.
- S1104 it is determined whether or not the processor 123 has requested the cache registration unit 112 in S1103. If the determination result in S1104 is affirmative, the process proceeds to S1105. If the determination result in S1104 is negative (for example, the reservation is not performed due to the exhaustion of the free subcache area), the process proceeds to S1103.
- the processor 123 acquires the lock of the sub cache area secured in S1103.
- the processor 123 In S1106, the processor 123 generates and activates a command for the corresponding FM interface 124 in order to transfer the valid data in the migration source block to the sub-cache area secured in S1103. As a result, valid data is transferred from the source block to the sub-cache area.
- the processor 123 specifies completion of the data transfer activated in S1106. With this completion, the valid data in the source block is stored in the subcache area. For this reason, the processing of the I / O command specifying the LBA associated with the migration source block can be handled by the data stored in the sub-cache area.
- the processor 123 deletes the pair of the PBA of the movement source block and the LBA associated therewith. This is because the valid data in the migration source block is stored in the sub-cache area in S1107.
- the processor 123 updates the block management table 700. Since the processor 123 deletes the LBA / PBA pair (association) in S1108, all the PBAs of the migration source block are invalid PBAs. Therefore, the processor 123 updates the block management table 700 and notifies another process that the migration source block can be erased. Although a detailed description is omitted, in this embodiment, an erasing job is operating in parallel with the reclamation process, and the job refers to the block management table 700 and all PBAs are invalid PBAs. The selected block is selected and the erase process is executed for the selected block.
- the processor 123 releases the lock of the sub cache area.
- the above is the reclamation process.
- the FM controller 110 stores both the reclamation data and the write data from the host device in the FM 140 by destage processing. For this reason, the reclamation process ends when the valid data in the source block is stored in the sub-cache area.
- the arbitration process is processed by the embedded processor 123.
- complicated processing can be described by software (computer program).
- the sub read miss command process and the sub write miss command process which are more frequently generated than the sub read hit command process and the sub write hit command process, can be improved in performance by processing only by hardware.
- the sub read miss command process can be processed at high speed without complicated hardware for performing the competing process, and the read command processing performance of the FM module 100 is improved.
- the sub write miss command can be processed at high speed without complicated hardware for performing the competing process, and the write response time to the host apparatus (response time for the write command process) can be shortened.
- a sub I / O command (sub write command / sub read command) is processed by hardware, if a failure occurs in processing by the hardware, a log (for example, a failure) Information) is recorded in the command processing log 132, and at the time of failure, it is possible to acquire at least one of a failure part (for example, hardware in which a failure has occurred) and a failure content from the embedded processor 123.
- the processor processes a command is determined according to a cache hit / miss.
- the criterion for determining whether or not the processor processes a command (subcommand) is not limited thereto. It's okay.
- the FM group includes a plurality of high-speed physical areas (for example, SLC (Single Level Cell) pages) and a plurality of low-speed physical areas (for example, MLC (Multi Level Cell) pages).
- the logical space (LBA range) is divided into a high-speed logical area to which a high-speed physical area is assigned and a low-speed logical area to which a low-speed physical area is assigned.
- the processing of the I / O command in which the LBA belonging to the high-speed logical area is designated is handled by the I / O hardware, not the processor 123, but the I / O command in which the LBA belonging to the low-speed logical area is designated. This processing may be performed by the processor 123 in addition to the I / O hardware.
- FM module 110 FM controller 140: FM
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)
- Computer Networks & Wireless Communication (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims (14)
- 上位装置からのI/O(Input/Output)コマンドの少なくとも一部が所定の条件を満たしている場合に前記I/Oコマンドの少なくとも一部を処理するプロセッサと、前記I/Oコマンドが前記所定の条件を満たしてない場合に前記I/Oコマンドの全てを処理する1以上のハードウェアロジック回路とを有するメモリコントローラと、
前記I/Oコマンドに従うI/O対象データの少なくとも一部であり前記メモリコントローラにより入出力されるデータを記憶する1以上の半導体記憶素子である記憶素子群と
を有する半導体メモリデバイス。 - 前記メモリコントローラが、一時記憶領域を有し、
前記I/Oコマンドの少なくとも一部が所定の条件を満たしている場合とは、前記I/O対象データの少なくとも一部が前記一時記憶領域に記憶されている場合である、
請求項1記載の半導体メモリデバイス。 - 複数のハードウェアロジック回路が、
前記I/Oコマンドを複数のサブI/Oコマンドに分割するハードウェアロジック回路であるコマンド分割ユニットと、
前記複数のサブI/Oコマンドの各々についてサブI/Oコマンドに従うサブI/O対象データが前記一時記憶領域に記憶されているか否かを判定するハードウェアロジック回路である判定ユニットと
を含み、
前記一時記憶領域にサブI/O対象データが記憶されていると判定されたサブI/Oコマンドが、前記プロセッサにより処理される、
請求項2記載の半導体メモリデバイス。 - 前記メモリコントローラが、上位蔵置に提供する論理空間が所定サイズで区分された単位論理領域毎に単位論理領域の論理アドレスと前記記憶素子群の物理アドレスとの対応関係を管理し、
前記コマンド分割ユニットは、前記所定サイズと同サイズのサブI/O対象データのI/OのためのサブI/Oコマンドに前記I/Oコマンドを分割する、
請求項3記載の半導体メモリデバイス。 - 前記記憶素子群は、複数の物理領域で構成されており、物理領域単位でデータが入出力されるようになっており、
前記コマンド分割ユニットは、物理領域サイズと同サイズのサブI/O対象データのI/OのためのサブI/Oコマンドに前記I/Oコマンドを分割する、
請求項3記載の半導体メモリデバイス。 - 前記メモリコントローラは、複数の記憶素子インターフェースを有し、
前記複数の記憶素子インターフェースの各々に、1以上の記憶素子が接続されており、
前記I/Oコマンドは、リードコマンドであり、
前記複数のサブI/Oコマンドは、それぞれ、複数のサブリードコマンドであり、
前記複数のハードウェアロジック回路が、2以上のサブリードコマンドにそれぞれ対応した2以上の物理領域にそれぞれ接続されている2以上の記憶素子インターフェースを、前記2以上の物理領域からそれぞれ並列に2以上のサブリードデータを読み出すよう、並列に起動するハードウェアロジック回路であるコマンド内部処理ユニットを含む、
請求項3記載の半導体メモリデバイス。 - 前記I/Oコマンドは、リードコマンドであり、
前記複数のサブI/Oコマンドは、それぞれ、複数のサブリードコマンドであり、
前記複数のハードウェアロジック回路が、登録されたサブリードコマンドに対応した物理領域からサブリードデータを読み出すハードウェアロジック回路であるコマンド内部処理ユニットを含み、
前記プロセッサは、サブリードコマンドの処理と並列に、前記一時記憶領域内のデータを削除又は変更し論理アドレスと物理アドレスの対応関係を更新することを含んだ処理である別処理を行うようになっており、
前記プロセッサは、サブリードデータが前記一時記憶領域に記憶されていると判定された後にそのサブリードデータが前記一時記憶領域に無いと判定された場合、そのサブリードデータに対応したサブリードコマンドを前記コマンド内部処理ユニットに登録する、
請求項3記載の半導体メモリデバイス。 - 前記I/Oコマンドは、ライトコマンドであり、
前記複数のサブI/Oコマンドは、それぞれ、複数のサブライトコマンドであり、
前記プロセッサは、サブライトコマンドの処理と並列に、前記一時記憶領域内のデータを削除又は変更し論理アドレスと物理アドレスの対応関係を更新することを含んだ処理である別処理を行うようになっており、
前記プロセッサは、前記サブライトコマンドに従うサブライトデータである新サブライトデータの格納先領域が前記一時記憶領域から確保されており且つ前記新サブライトデータにより更新されるサブライトデータである旧サブライトデータが前記一時記憶領域に記憶されている場合、前記旧サブライトデータが格納されている領域を前記一時記憶領域から解放する、
請求項3記載の半導体メモリデバイス。 - 前記複数のサブライトコマンドにそれぞれ対応した複数のサブリードコマンドが前記一時記憶領域に格納された場合に、前記1以上のハードウェアロジック回路のうちの所定のハードウェアロジック回路が、前記ライトコマンドの完了を前記上位装置に通知する、
請求項8記載の半導体メモリデバイス。 - 前記一時記憶領域は、バッファである、
請求項2記載の半導体メモリデバイス。 - 前記1以上のハードウェアロジック回路の各々が、処理の結果を示す情報をログ領域に出力し、
前記プロセッサが、障害が発生した場合に、前記ログ領域に記憶されている情報から、障害部位及び障害内容のうちの少なくとも一方を特定する、
請求項1記載の半導体メモリデバイス。 - 前記記憶素子群が、複数の高速物理領域と複数の低速物理領域とを含み、
前記メモリコントローラにより前記上位装置に提供される論理空間が、高速物理領域が割り当てられる論理領域である高速論理領域と、低速物理領域が割り当てられる論理領域である低速論理領域とに区分されており、
前記高速論理領域に属する論理アドレスが指定されたI/Oコマンドの処理を、前記1以上のハードウェアロジック回路の少なくとも1つが担当し前記プロセッサは担当せず、
前記低速論理領域に属する論理アドレスが指定されたI/Oコマンドの処理を、前記1以上のハードウェアロジック回路のうちの少なくとも1つに加え前記プロセッサが担当する、
請求項1記載の半導体メモリデバイス。 - 前記メモリコントローラは、上位装置からPCI-Expressに従いI/Oコマンドを受信する、
請求項1記載の半導体メモリデバイス。 - 複数の半導体メモリデバイスと、
ホスト計算機からのI/O要求に基づき前記複数の半導体メモリデバイスの少なくとも1つの各々にI/Oコマンドを送信するストレージコントローラと
を有し、
前記複数の半導体メモリデバイスの少なくとも1つの各々が、
前記ストレージコントローラからのI/Oコマンドの少なくとも一部が所定の条件を満たしている場合に前記I/Oコマンドの少なくとも一部を処理するプロセッサと、前記I/Oコマンドが前記所定の条件を満たしてない場合に前記I/Oコマンドの全てを処理する1以上のハードウェアロジック回路とを有するメモリコントローラと、
前記I/Oコマンドに従うI/O対象データの少なくとも一部であり前記メモリコントローラにより入出力されるデータを記憶する1以上の半導体記憶素子である記憶素子群と
を有する、
ストレージ装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/079202 WO2016071954A1 (ja) | 2014-11-04 | 2014-11-04 | 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 |
US15/518,289 US10310764B2 (en) | 2014-11-04 | 2014-11-04 | Semiconductor memory device and storage apparatus comprising semiconductor memory device |
JP2016557370A JP6306737B2 (ja) | 2014-11-04 | 2014-11-04 | 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/079202 WO2016071954A1 (ja) | 2014-11-04 | 2014-11-04 | 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016071954A1 true WO2016071954A1 (ja) | 2016-05-12 |
Family
ID=55908710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2014/079202 WO2016071954A1 (ja) | 2014-11-04 | 2014-11-04 | 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10310764B2 (ja) |
JP (1) | JP6306737B2 (ja) |
WO (1) | WO2016071954A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021152933A (ja) * | 2017-06-23 | 2021-09-30 | 華為技術有限公司Huawei Technologies Co., Ltd. | メモリアクセス技術およびコンピュータシステム |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452321B2 (en) * | 2015-01-23 | 2019-10-22 | Hitachi, Ltd. | Storage system and control method therefor |
US10474397B2 (en) * | 2017-06-13 | 2019-11-12 | Western Digital Technologies, Inc | Unified indirection in a multi-device hybrid storage unit |
US10534731B2 (en) * | 2018-03-19 | 2020-01-14 | Micron Technology, Inc. | Interface for memory having a cache and multiple independent arrays |
JP7131053B2 (ja) * | 2018-04-24 | 2022-09-06 | 富士通株式会社 | 記憶装置,情報処理プログラムおよび情報処理システム |
US10884659B2 (en) * | 2018-06-29 | 2021-01-05 | Micron Technology, Inc. | Host timeout avoidance in a memory device |
US10764455B2 (en) | 2018-12-31 | 2020-09-01 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
US10922038B2 (en) * | 2018-12-31 | 2021-02-16 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
KR20210101693A (ko) * | 2020-02-10 | 2021-08-19 | 삼성전자주식회사 | 스토리지를 포함하는 전자 장치 및 이를 이용한 스토리지로 파일 시스템의 디스카드 커맨드 전달 방법 |
JP7147805B2 (ja) * | 2020-03-26 | 2022-10-05 | 株式会社安川電機 | 生産システム、データ送信方法、及びプログラム |
KR20240029419A (ko) * | 2022-08-26 | 2024-03-05 | 삼성전자주식회사 | z스왑 가속을 위한 데이터 처리 장치 및 방법 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10275110A (ja) * | 1997-03-27 | 1998-10-13 | Internatl Business Mach Corp <Ibm> | ディスクドライブ装置及びその制御方法 |
JP2000020398A (ja) * | 1998-06-26 | 2000-01-21 | Toshiba Corp | ディスク記憶装置及び同装置に適用するディスクコントローラ |
JP2005071068A (ja) * | 2003-08-25 | 2005-03-17 | Renesas Technology Corp | 記憶装置 |
JP2010198407A (ja) * | 2009-02-26 | 2010-09-09 | Sony Corp | 情報処理装置、およびデータ記録制御方法、並びにプログラム |
JP2010204851A (ja) * | 2009-03-02 | 2010-09-16 | Hitachi Ltd | 記憶装置及び情報処理装置 |
JP2012234363A (ja) * | 2011-04-28 | 2012-11-29 | Toshiba Corp | メモリシステム |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8886869B2 (en) | 2011-02-02 | 2014-11-11 | Hitachi, Ltd. | Storage system and data control method therefor |
US9299455B2 (en) | 2012-03-06 | 2016-03-29 | Hitachi, Ltd. | Semiconductor storage device having nonvolatile semiconductor memory |
US8966164B1 (en) * | 2013-09-27 | 2015-02-24 | Avalanche Technology, Inc. | Storage processor managing NVME logically addressed solid state disk array |
-
2014
- 2014-11-04 WO PCT/JP2014/079202 patent/WO2016071954A1/ja active Application Filing
- 2014-11-04 JP JP2016557370A patent/JP6306737B2/ja not_active Expired - Fee Related
- 2014-11-04 US US15/518,289 patent/US10310764B2/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10275110A (ja) * | 1997-03-27 | 1998-10-13 | Internatl Business Mach Corp <Ibm> | ディスクドライブ装置及びその制御方法 |
JP2000020398A (ja) * | 1998-06-26 | 2000-01-21 | Toshiba Corp | ディスク記憶装置及び同装置に適用するディスクコントローラ |
JP2005071068A (ja) * | 2003-08-25 | 2005-03-17 | Renesas Technology Corp | 記憶装置 |
JP2010198407A (ja) * | 2009-02-26 | 2010-09-09 | Sony Corp | 情報処理装置、およびデータ記録制御方法、並びにプログラム |
JP2010204851A (ja) * | 2009-03-02 | 2010-09-16 | Hitachi Ltd | 記憶装置及び情報処理装置 |
JP2012234363A (ja) * | 2011-04-28 | 2012-11-29 | Toshiba Corp | メモリシステム |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021152933A (ja) * | 2017-06-23 | 2021-09-30 | 華為技術有限公司Huawei Technologies Co., Ltd. | メモリアクセス技術およびコンピュータシステム |
JP7162102B2 (ja) | 2017-06-23 | 2022-10-27 | 華為技術有限公司 | メモリアクセス技術およびコンピュータシステム |
US11681452B2 (en) | 2017-06-23 | 2023-06-20 | Huawei Technologies Co., Ltd. | Memory access technology and computer system |
Also Published As
Publication number | Publication date |
---|---|
JPWO2016071954A1 (ja) | 2017-08-10 |
JP6306737B2 (ja) | 2018-04-04 |
US10310764B2 (en) | 2019-06-04 |
US20170308319A1 (en) | 2017-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6306737B2 (ja) | 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 | |
US11216185B2 (en) | Memory system and method of controlling memory system | |
US9378135B2 (en) | Method and system for data storage | |
JP6000376B2 (ja) | 特性の異なる複数種類のキャッシュメモリを有する情報処理装置 | |
US10963175B2 (en) | Apparatus and method for searching valid data in memory system | |
JP2019133252A (ja) | メモリシステム | |
JP6017065B2 (ja) | ストレージシステム及びキャッシュコントロール方法 | |
CN110928807B (zh) | 用于检查存储器系统中的有效数据的设备和方法 | |
US11157402B2 (en) | Apparatus and method for managing valid data in memory system | |
US20150347310A1 (en) | Storage Controller and Method for Managing Metadata in a Cache Store | |
WO2016067328A1 (ja) | 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス | |
WO2013155368A1 (en) | Managing trim operations in a flash memory system | |
CN110825659B (zh) | 用于检查存储器系统中的块中的有效数据的设备和方法 | |
GB2495188A (en) | Buffer write in a solid state drive | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
KR102708925B1 (ko) | 메모리 시스템에서의 유효 데이터 체크 방법 및 장치 | |
JP4242245B2 (ja) | フラッシュrom制御装置 | |
JP6817340B2 (ja) | 計算機 | |
CN111857818A (zh) | 存储器系统和通过该存储器系统执行命令操作的方法 | |
JP5910596B2 (ja) | ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム | |
JP6018531B2 (ja) | 半導体メモリ装置 | |
JP2017134700A (ja) | 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム | |
JP6027479B2 (ja) | 半導体メモリ装置 | |
CN114637706A (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: 14905297 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2016557370 Country of ref document: JP Kind code of ref document: A |
|
WWE | Wipo information: entry into national phase |
Ref document number: 15518289 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: 14905297 Country of ref document: EP Kind code of ref document: A1 |