WO2016071954A1 - 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 - Google Patents

半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 Download PDF

Info

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
Application number
PCT/JP2014/079202
Other languages
English (en)
French (fr)
Inventor
彬史 鈴木
岡田 光弘
賢志 森下
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/079202 priority Critical patent/WO2016071954A1/ja
Priority to US15/518,289 priority patent/US10310764B2/en
Priority to JP2016557370A priority patent/JP6306737B2/ja
Publication of WO2016071954A1 publication Critical patent/WO2016071954A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary 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

半導体メモリデバイスが、記憶素子群(1以上の半導体記憶素子)と、メモリコントローラとを有する。メモリコントローラが、上位装置からのI/Oコマンドの少なくとも一部が所定の条件を満たしている場合にそのI/Oコマンドの少なくとも一部を処理するプロセッサと、そのI/Oコマンドが所定の条件を満たしてない場合にI/Oコマンドの全てを処理する1以上のハードウェアロジック回路とを有する。

Description

半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置
 本発明は、概して、半導体記憶素子に対するデータのI/O(Input/Output)の制御に関する。
 半導体記憶素子(例えばNAND Flash Memory)の製造プロセス微細化により、半導体記憶素子の適用先が広がっている。特に、サーバ等のエンタープライズ分野では、HDD(Hard Disk Drive)に代えて、半導体記憶素子を有する半導体メモリデバイス(例えば、SSD(Solid State Drive)を採用する例が増加している。
 SSDは、内部に複数の半導体記憶素子を搭載し、これら半導体記憶素子を並列に制御することで、短期間に大量のデータについての書き込みと読み出し(I/O処理)を実現する(例えば特許文献1)。
US2013/0238836
 近年、SATA(Serial ATA)等の低速なHDD互換インターフェースに代えて、PCI-Express等のより高速なインターフェースを採用したSSDが発表されている。高速なインターフェースを採用したSSDについては、より高いI/O処理性能が望まれる。なぜなら、インターフェースが高速でも内部のI/O処理性能が低いと、内部のI/O処理性能がボトルネックとなるからである。SSDが採用するインターフェースが高速であるか否かに関わらず、I/O処理性能の向上は望まれる。
 I/O処理性能の向上のためには、例えば、より多くの半導体記憶素子を並列に制御する必要がある。SSD内部の複数の半導体記憶素子の並列制御は、一般的に、SSD内部の組み込みプロセッサが行う。このため、SSD内の組み込みプロセッサの処理性能の限界によって並列制御可能な半導体記憶素子の数が制限され、SSDのI/O処理性能を制限してしまう事が考えられる。以下、SSD内の組み込みプロセッサの処理性能の限界によってSSDのI/O処理性能が制限されることを、「組み込みプロセッサ処理性能ネック」と記す。
 組み込みプロセッサ処理性能ネックの解消の方法として、例えばI/O処理を専用のハードウェアにて実行することが考えられる。しかし、専用ハードウェアは、動的にリソースを確保したり複雑な処理を実行したりすることが困難であり、さらには、ソフトウェア(コンピュータプログラム)のように改変が容易でなく、採用されるメモリ(例えば主記憶又は半導体記憶素子)の仕様の変更やメモリ構成の変化に対応できない場合が生じる。また、バグ発見時の修正がソフトウェアと比べて困難なことから開発リスクの増加というデメリットがある。
 SSDでは、搭載した半導体記憶素子の最小消去単位と最小書き込み単位が異なっていた場合(例えばNAND Flash Memory)、消去単位に含まれてしまうが消せないデータを退避させる(所謂リクラメーション)処理が必須となる。こうした制御では、退避するデータがなるべく少ない領域を消去処理対象の領域として選択する複雑な制御が必要となる。また、搭載した半導体記憶素子が書換え回数に制限を有する場合、SSDに搭載する複数の半導体記憶素子の領域ごとの書換え回数を平準化する(所謂ウェアレベリング)処理が必須となる。こうした制御では、領域毎の書換え回数を管理し、利用する領域を適切に選択する複雑な処理が必要となる。
 上記のリクラメーション、ウェアレベリング等の複雑な処理を行う、ハードウェアの設計は困難である。また、こうした制御は、半導体メモリデバイスに搭載する半導体記憶素子の種別により、大きく変化する。例えば、必要となるウェアレベリング制御の精度は、半導体記憶素子の劣化耐性により大きく異なる。このため、仮にウェアレベリングをハードウェアにて実装した場合、採用可能な半導体記憶素子の種別に制限が生じる可能性がある。
 一方、I/O処理をプロセッサにて実行する場合、コマンドの検知や各種制御をシリアルに行う必要があり、I/O処理に時間を要するという問題もある。
 半導体メモリデバイスが、記憶素子群(1以上の半導体記憶素子)と、メモリコントローラとを有する。メモリコントローラが、上位装置からのI/Oコマンドの少なくとも一部が所定の条件を満たしている場合にそのI/Oコマンドの少なくとも一部を処理するプロセッサと、そのI/Oコマンドが所定の条件を満たしてない場合にI/Oコマンドの全てを処理する1以上のハードウェアロジック回路とを有する。
 I/O処理を行う組み込みプロセッサの処理性能ネックが回避され、半導体メモリデバイスの高性能化と応答時間の短縮が期待できる。
実施形態に係るフラッシュメモリ(FM)モジュールの内部構成を示す図である。 ライトコマンド処理の一部でありライトコマンド受信処理を示す。 ライトコマンド処理の残りでありライトコマンド応答処理を示す。 リードコマンド処理の一部でありリードコマンド受信処理を示す。 リードコマンド処理の残りでありリードコマンド応答処理を示す。 論物変換テーブルを示す。 ブロック管理テーブルを示す。 サブライトヒットコマンド処理のフロー図である。 サブリードヒットコマンド処理のフロー図である。 デステージ処理のフロー図である。 リクラメーション処理のフロー図である。 上位装置の一例を示す。 上位装置の別の例を示す。
発明を実行するための形態
 以下、一実施形態を説明する。なお、本発明は、以下に説明する実施形態に限定されるものではない。
 なお、以下の説明では、「abcテーブル」の表現にて情報を説明することがあるが、情報は、テーブル以外のデータ構成で表現されていてもよい。データ構成に依存しないことを示すために「abcテーブル」のうちの少なくとも1つを「abc情報」と呼ぶことができる。
 また、以下の説明では、半導体メモリデバイスが有する半導体記憶素子は、不揮発性半導体記憶素子であり、具体的には、NAND Flash Memoryのようなフラッシュメモリ(FM)であるとする。従って、半導体メモリデバイスは、不揮発性半導体メモリデバイスであり、具体的には、FMモジュールであるとする。FMモジュールは、SSDのようなFMデバイスの一例である。不揮発性半導体記憶素子は、FMに限らず、例えば、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)、抵抗変化型メモリであるReRAM(resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等でもよい。また、不揮発性半導体記憶素子に代えて揮発性半導体記憶素子が採用されてもよい。
 また、以下の説明では、FMは、複数の「物理ブロック」で構成され、各物理ブロックは、複数の「物理ページ」で構成されているとする。また、アクセス単位領域よりも消去単位領域の方が大きい。具体的には、物理ページ単位でデータがアクセス(リード及びライト)され、物理ブロック単位でデータが消去される。また、FMモジュールが提供する論理空間(論理アドレス空間)には、物理領域が所定の単位(例えばページ単位又はブロック単位)で割り当てられるが、論理空間のうち、物理ブロックが割り当てられている範囲を「論理ブロック」と言い、物理ページが割り当てられている範囲を「論理ページ」と言うことができる。FMは、追記型、具体的には、物理ページが割り当てられている論理ページがライト先の場合、ライト先論理ページに、割当て済の物理ページに代えて新たに空き物理ページが割り当てられ、新たに割り当てられた物理ページにデータが書き込まれる。各論理ページについて、新たに割り当てられた物理ページに書き込まれたデータ(最新のデータ)は「有効データ」であり、有効データが書き込まれている物理ページは「有効ページ」であり、過去に割り当てられていた物理ページに格納されているデータ(過去のデータ)は「無効データ」であり、無効データが書き込まれている物理ページは「無効ページ」である。
 (1-1)FMモジュールの構成
 まず、図1を用いて、本実施形態に係るFMモジュール100の内部構成を説明する。
 図1は、FMモジュール100の内部構成を示す図である。
 FMモジュール100は、複数(例えば32)のFM140であるFM群と、複数のFM140に接続されたFMコントローラ110とを有する。FMコントローラ110は、複数のデバイス、例えば、プロセッサ123、RAM(Random Access Memory)122、データコンプレッサ(データ圧縮/解凍ユニット)116、パリティジェネレータ(パリティ生成ユニット)115、データキャッシュ114、I/Oインターフェース118、FMインターフェース124、コマンド外部処理ユニット119、コマンド内部処理ユニット120、コピーDMA(Direct Memory Access)ユニット121、キャッシュヒット判定ユニット111、キャッシュ登録ユニット112、コマンド分割ユニット113、及び、スイッチ117を備えている。キャッシュヒット判定ユニット111、キャッシュ登録ユニット112、コマンド分割ユニット113、コマンド外部処理ユニット119及びコマンド内部処理ユニット120が、それぞれ、I/O処理の一部を実行するハードウェア(ハードウェアロジック回路)である。以下、I/O処理の一部を実行するハードウェア(ハードウェアロジック回路)を、特に、「I/Oハードウェア」と呼んでよい。本実施形態で言う「I/O処理」とは、上位装置からのI/Oコマンドの処理であり、具体的には、ライトコマンド処理(図2に示す処理と図3に示す処理から成る処理)と、リードコマンド処理(図4に示す処理と図5に示す処理から成る処理)である。また、「上位装置」は、FMモジュール100にI/Oコマンドを送信する装置である。例えば、図12によれば、ホスト計算機1300が、上位装置である。また、例えば、図13によれば、ストレージコントローラ1201が、上位装置である。具体的には、ストレージ装置1200において、複数のFMモジュール100がそれぞれストレージコントローラ1201に接続されており、ストレージコントローラ1201が、ホスト計算機1250からI/O要求を受信し、そのI/O要求を基に、FMモジュール100にI/Oコマンドを送信する。図12において、ホスト計算機1300とFMモジュール100間は、PCIe(PCI Express)のような高速のインターフェース経由で通信してよい。図13において、ストレージコントローラ1201とFMモジュール100間も、PCIeのような高速のインターフェース経由で通信してよい。
 再び図1を参照する。スイッチ117には、プロセッサ123、RAM122、データコンプレッサ116、パリティジェネレータ115、データキャッシュ114、I/Oインターフェース118、FMインターフェース124、キャッシュヒット判定ユニット111、キャッシュ登録ユニット112、コマンド分割ユニット113、コマンド外部処理ユニット119、コマンド内部処理ユニット120及びコピーDMAユニット121が接続されている。スイッチ117は、デバイス(要素)間のデータをアドレス(又はID)によってルーティングし転送する。なお、本実施形態では、図1に示すように、単一のスイッチ117に各デバイスがスター状に接続された例について記すが、本発明は、この例に限定されるものではない。デバイス間が通信可能に接続されていればよい。
 I/Oインターフェース118は、上位装置と接続するデバイスである。I/Oインターフェース118は、スイッチ117を介してFMコントローラ110における別のデバイスと通信可能である。I/Oインターフェース118は、上位装置からI/Oコマンド(ライトコマンド/リードコマンド)を受信する。I/Oコマンドでは、I/O先(ライト先又はリード元)を表す論理アドレス(典型的にLBA(Logical Block Address))が指定されている。I/Oコマンドがライトコマンドの場合、I/Oインターフェース118は、ライトコマンドに従うライト対象のデータ(以下、「ライトデータ」と言うことがある)を受信する。I/Oインターフェース118は、受信したライトデータを、RAM122に記録する。また、I/Oインターフェース118は、上位装置からコマンドを受信した際に、プロセッサ123に割り込みを行うか、またはプロセッサ123がポーリングしているRAM122上の記憶領域にコマンドを受信したことを通知するデータを書き込む。
 プロセッサ123は、スイッチ117を介してFMコントローラ110の他のデバイスと通信する。プロセッサ123は、RAM122に記憶されているプログラム及び管理テーブルを基にFMコントローラ110全体を制御する。また、プロセッサ123は、定期的な情報取得(例えばRAM122に対するポーリング)、及び割り込み受信機能によって、FMコントローラ110全体を監視する。
 データキャッシュ114は、一時記憶領域の一例であり、FMコントローラ110における転送対象のデータを一時的に記憶する。本実施形態では、データキャッシュ114は、読み出されたデータが残らないバッファであるが、読み出されたデータが残るキャッシュメモリのような記憶領域でもよい。
 複数のFMインターフェース124がFMコントローラ110に設けられており、複数のFMインターフェース124を介して、並列に複数のFM140に対してI/Oを行うことができる。1のFMインターフェース124に、1のバスが接続されており、1のバスに、2のFM140が接続されている。本実施形態では、16のFMインターフェース124が、存在し、故に、16のバスが存在し、結果として、32のFMが存在する。FMインターフェース124は、I/O先のFM140にCE(Chip Enable)信号を出すことで、同一バスに接続された2のFMをそれぞれ独立して制御することができる。
 FMインターフェース124は、プロセッサ123(又はI/Oハードウェア(例えばコマンド内部処理ユニット120))より指示されるI/O指示(ライト指示/リード指示)に応じて動作する。I/O指示では、I/O先を表す情報として、例えば、チップ番号(FM140の識別番号)、ブロック番号(FM140における物理ブロックの識別番号)、(FM140における物理ブロック内の物理ページの識別番号)が指定されている。I/O指示がリード指示の場合、FMインターフェース124は、リード指示に従うリード元領域(FM140内の物理ページ)から読み出されたデータをデータキャッシュ114に転送する(書き込む)。I/O指示がライト指示の場合、FMインターフェース124は、ライト対象のデータをデータキャッシュ114から読み出し、そのデータを、ライト先に従うライト先領域(FM140内の物理ページ)に転送する(書き込む)。なお、FMインターフェース124が、データキャッシュ114を経由せずにデータを上位装置に転送可能である場合、リード指示に従い読み出されたデータは、データキャッシュ114に格納されることなく上位装置に転送されてよい。
 また、FMインターフェース124は、ECC(Error Correction Code / Error Checking and Correction)生成回路、ECCによるデータ損失検出回路、ECC訂正回路を有してよい。FMインターフェース124は、データ書き込みの際、データに対してECCを付加してFM140にデータを書き込んでよい。また、データ読み出しの際、FMインターフェース124は、ECCによるデータ損失検出回路によって、FM140から読み出されたデータを検査し、データ損失が検出された際には、ECC訂正回路によってデータ訂正を行ってよい。
 データコンプレッサ116は、可逆圧縮のアルゴリズムを処理する機能を有し、複数種のアルゴリズムや、圧縮レベルの変更機能を備える。データコンプレッサ(データ圧縮/解凍ユニット)116は、プロセッサ123(又はI/Oハードウェア(例えばコマンド内部処理ユニット120))からの指示に従って、データキャッシュ114からデータをリードし、可逆圧縮のアルゴリズムによりデータ圧縮演算もしくはデータ圧縮の逆変換であるデータ解凍(伸長)演算を行い、その結果を再度データキャッシュに書き込む。なお、データコンプレッサ116は、ハードウェア(ロジック回路)として実装されてもよいし、圧縮/解凍のプログラムをプロセッサ123で処理することで、同様の機能が実現されてもよい。
 パリティジェネレータ115は、XOR演算、Even Odd演算、リードソロモン演算等のパリティ生成機能を有している。パリティジェネレータ115は、プロセッサ123(又はI/Oハードウェア(例えばコマンド内部処理ユニット120))からの指示に従って、データキャッシュ114からパリティ生成対象となるデータをリードし、前述のパリティ生成機能により、RAID5又はRAID6のパリティを生成する。
 キャッシュヒット判定ユニット111は、上位装置からのI/Oコマンドで指定されたI/O先論理アドレス範囲(例えばLBA範囲)のデータがデータキャッシュ114内のキャッシュ領域に記録されているかを、キャッシュヒット判定テーブルを参照して判定するハードウェアである。
 キャッシュ登録ユニット112は、上位装置からライトコマンドがあった場合に動作し、ライトデータをデータキャッシュ114内のキャッシュに格納したことを管理するため、キャッシュヒット判定テーブルを更新する。
 コマンド分割ユニット113は、上位装置からのI/Oコマンドを複数のサブI/Oコマンドに分割するハードウェアである。コマンド分割ユニット113は、I/Oコマンドを、FMモジュール100内部のLBA管理単位に分割する。本実施形態では、上位装置から受信したI/Oコマンドを分割する例を説明するが、分割されるコマンドは、上位装置からのI/Oコマンドに限られない。
 コマンド外部処理ユニット119は、上位装置とやり取りするコマンドの制御を行うハードウェアである。上位装置は、コマンド外部処理ユニット119のレジスタにアクセスすることで、FMモジュール100に対するコマンドを作成したことを通知する。通知を受けたコマンド外部処理ユニット119は、上位装置よりコマンドを取得する。
 また、コマンド外部処理ユニット119は、上位装置からのコマンドが完了した際、そのコマンドの完了通知を上位装置に通知する。上位装置は、コマンド外部処理ユニット119のレジスタにアクセスすることで(例えば完了通知の受信を意味する情報をレジスタに書き込むことで)、FMモジュール100から完了通知を受信したことを通知する。
 コマンド内部処理ユニット120は、FMモジュール100の内部のコマンド処理を行うハードウェアである。コマンド内部処理ユニット120は、実施形態において、キャッシュヒット判定ユニット111にて、リードコマンドを内部のLBA管理単位に分割したサブリードコマンドのリクエスト対象領域が、キャッシュに登録されていない場合、サブリードコマンドをFMインターフェース124用のコマンドに変換し、FMインターフェース124にコマンドを作成したことを通知する。
 コピーDMAユニット121は、主にデータキャッシュ114のデータをコピーする際に動作するハードウェアである。コピーDMAユニット121は、プロセッサ123からの指示に従って、データキャッシュ114内の記憶領域に記録されているデータを他の領域にコピーする。
 以上説明した、スイッチ117、I/Oインターフェース118、プロセッサ123、データキャッシュ114、FMインターフェース124、データコンプレッサ116、パリティジェネレータ115、キャッシュヒット判定ユニット111、キャッシュ登録ユニット112、コマンド分割ユニット113、コマンド外部処理ユニット119、コマンド内部処理ユニット120、コピーDMAユニット121は、それぞれ、ASIC(Application Specific Integrated Circuit)やFPBA(Field Programmable Gate Array)として、一つの半導体素子内で構成してもよいし、複数の個別専用IC(Integrated Circuit)を相互に接続した構成であってもよい。
 RAM122は、典型的にはDRAM(Dynamic Random Access Memory)などの揮発性メモリが挙げられる。RAM122は、FMモジュール100内で用いられるFM140の管理テーブル、コマンド分割ユニットが作成するサブコマンド、DMAが用いる転送制御情報を含んだ転送リスト等を格納する。なお、RAM122は、データを格納するデータキャッシュ114の機能の一部または全てを含みデータ格納に用いる構成としてもよい。
 ここまで、図1を用いて、本実施形態に係るFMモジュール100の構成を説明した。なお、本実施形態では、図1に示すように、FM140を搭載したFMモジュール100について記述するが、搭載する不揮発性メモリは、FMに限定されるものではない。Phase Change RAMやResistance RAM等でもよい。
 (1-2)第1の管理テーブル:論物変換テーブル
 続いて、FMモジュール100が制御に用いる管理テーブルについて説明する。
 FMモジュール100は、複数のFM140(チップ)を搭載し、複数のブロック(物理ブロック)、複数のページ(物理ページ9により構成される記憶領域を管理し、上位装置に対しては、記憶領域として論理空間(論理領域)を提供する。FM140により構成される物理領域は、FMモジュール100内部のみで用いるアドレス空間に一意に対応づけて管理する。以下、このFMモジュール100内部のみで用いる物理領域指定用アドレス空間を、PBA(Physical Block Address)と記す。FMコントローラ110は、複数のPBAを、上位装置に提供する論理空間(アドレス空間)に対応した複数のLBA(Logical Block Address)に対応付けて管理する。
 FMモジュール100の対応付け管理用の管理テーブルである論物変換テーブル600について図6を用いて説明する。
 図6は、論物変換テーブル600を示す。
 論物変換テーブル600は、FMモジュール100内の記憶領域、例えばRAM122に格納されえちる。論物変換テーブル600は、LBA/PBAの組(対応付け)毎に、LBA601、PBA602及びPBA長603を有する。LBA601は、LBAを示し、PBA602は、PBAを示し、PBA長603は、PBAの長さを示す。PBAの長さは、データコンプレッサ116によりデータが圧縮されたか否か等により異なる。I/Oコマンドがリードコマンドの場合、プロセッサ123又はI/Oハードウェア(例えばコマンド内部処理ユニット120)は、上位装置からのリードコマンドで指定されるLBAに対応するPBA及びPBA長を論物変換テーブル600から特定し、特定したPBA及びPBA長に対応した物理領域(FM群における領域)から読み出す。I/Oコマンドがライトコマンドの場合、プロセッサ123又はI/Oハードウェア(例えばコマンド内部処理ユニット120)は、上位装置からのライトコマンドで指定されるLBAに対応するPBA(つまり更新前データが格納されている物理領域を示すPBA)を論物変換テーブル600から特定し、特定したPBAとは異なるPBA(ライトデータのライト先となる1以上の空きページに対応したPBA)とPBA長を決定する。プロセッサ123又はI/Oハードウェア(例えばコマンド内部処理ユニット120)は、決定したPBA及びPBA長を、論物変換テーブル600の該当箇所(上位装置からのライトコマンドで指定されるLBAに対応したフィールド)に記録する。この動作にて、論理領域上のデータの上書き可能とする。
 LBA601のカラムには、FMモジュール100が提供する論理空間に属するLBAが所定サイズ(本実施形態では4KB)ごとに順に並んでいる。具体的には、論理空間が所定サイズに区分されており、単位論理領域毎に、エントリ(レコード)がテーブル600に存在する。例えば、LBA601内の数値1は、512バイトの1セクタを意味する。これは、本実施形態では、LBAとPBAの対応付けが、4KB単位で管理されていることを意味する。このため、論理空間を分割する単位を管理単位と呼ぶこともできる。但し、本発明では、FMモジュール100のような半導体メモリデバイスについて、LBAのような論理アドレスとPBAのような物理アドレスとの組(対応付け)が4KB単位にて管理することに限定されるものではない。LBAは如何なる単位で管理されてもよい。
 PBA602は、LBAに対応付けられた先頭PBAを示す。本実施形態では、PBAは、512バイト毎に管理される。図6の例では、LBA「0x000_0000_0000」に対応付けられたPBAとして、[XXX」というあるPBA値が対応付けられている。このPBA値は、FMの記憶領域を一意に示すアドレスである。これにより、リードコマンドにLBA「0x000_0000_0000」が指定されていた場合、PBA「XXX」が特定される。LBAに対応付けられたPBAが無い場合(つまり、論理空間における空きの範囲については)、PBA「未割当」が対応付けられる。
 PBA長603は、データの実際のサイズをセクタ数(1セクタ=512バイト)で表現している。図6に示す例では、LBA「0x000_0000_0000」を開始アドレスとする4KB(論理空間としては8セクタ)のデータの長さは、PBA長「2」、512バイト×2セクタ=1KBの長さであることがわかる。従って、PBA長「2」とPBA「XXX」とから、LBA「0x000_0000_0000」を開始アドレスとする4KBのデータは、PBA「XXX」から「XXX+2」の1KBの領域に圧縮して格納されていることがわかる。
 なお、実施形態に示すFMモジュールは、データを圧縮して格納した例について示すが、本発明は、この例に限定されるものではない。データは圧縮して格納されていなくともよい。圧縮してデータを格納しない場合、論物変換テーブル600にPBA長603のカラムは不要である。
 (1-3)第2の管理テーブル:ブロック管理テーブル
 続いて、ブロック管理テーブルについて図7を用いて説明する。
 図7は、ブロック管理テーブル700を示す。
 ブロック管理テーブル700は、FMモジュール100内の記憶領域、例えばRAM122に格納されており、例えば所定サイズのPBA毎に、PBA701、チップ番号702、ブロック番号703及び無効PBA量704を有する。
 PBA701は、FM群における物理領域を示す。なお、本実施形態では、PBAは、ブロック単位で区分して管理される。図7では、PBA701は、先頭アドレスを示す。例えば、PBA「0x000_0000_0000」は、「0x000_0000_0000」~「0x000_000F_FFFF」のPBA範囲を示す。なお、図6と図7では、PBAの表現形式が異なっているが、PBAという点で同一である。
 チップ番号702は、FM140(チップ)の識別番号を示す。ブロック番号703は、ブロック(物理ブロック)の識別番号を示す。
 無効PBA量704は、無効PBA量を示す。無効PBA量とは、論理空間への対応付けを解除されたPBA領域の量、つまり、無効領域(無効ページ)の総量(総サイズ)である。逆に、論理空間への対応付けがなされているPBA領域は、有効領域(有効ページ)である。無効PBA領域は、データの上書きが不可能な不揮発性メモリにおいて、疑似的に上書きを実現しようとする際に必然的に生じるものである。具体的には、データ更新の際、他の未書き込みPBA領域に更新データを書き込み、論物変換テーブル600のPBA602とPBA長603が、更新データのライト先のPBA領域の先頭アドレスと、更新データのPBA長に更新される。従って、更新前データが格納されているPBA領域の論理空間への対応付けは解除される。本実施形態では、FMの最小消去単位であるブロック毎にこの無効PBA量(例えば無効ページ数)がカウントされ、無効PBA量が多いブロックが、優先的に、リクラメーション対象領域(リクラメーションの際のデータの移動元物理ブロック)として選択される。図7の例によれば、チップ番号「0」及びブロック番号「0」のブロックの無効PBA量は、160KBである。
 本実施形態では、無効PBA量がリクラメーション開始閾値以上となったブロックについて、リクラメーションが行われる。リクラメーションでは、移動元ブロック(無効PBA量がリクラメーション開始閾値以上となったブロック)内の有効PBA領域(有効ページ)から有効データが別のブロックに移動され、その結果、その有効PBA領域が無効PBA領域となり(つまり、移動元ブロックの全領域が無効PBA領域となり)、その後、移動元ブロックに対し消去処理が行われる。その結果として、移動元ブロックが空きブロックとなる。リクラメーションでのデータ移動(データコピー)によりFM140への書き込みが発生する。これにより、FM140の劣化が進展するとともに、データ移動動作としてFMモジュール100のプロセッサ123やバス帯域などのリソースが消費され性能低下の要因ともなる。このため、有効PBA領域内のデータの移動は可能な限り少ないことが望ましい。FMコントローラ110は、ブロック管理テーブル700を参照し、無効PBA量704の値が大きい(無効PBA領域を多く含む)ブロックを優先的に消去処理対象(移動元ブロック)として選択することで、移動されるデータの量を少なくすることができる。
 なお、本実施形態では、無効PBA量の管理が、論理空間への対応付けが解除された領域の量の管理であるが、本発明はこの管理単位に限定されるものではない。例えば、ページ数を単位として無効データの量が管理されてもよい。
 以上で、ブロック管理テーブル700について説明した。
 (1-4)ライトコマンド処理及びリードコマンド処理
 続いて、図2~図5を用いて、ライトコマンド処理とリードコマンド処理を説明する。なお、コマンド外部処理ユニット119、コマンド分割ユニット113、キャッシュヒット判定ユニット111、キャッシュ登録ユニット112、コマンド内部処理ユニット120、及び、コピーDMAユニット121の少なくとも1つの各々は、図2~図5に模式的に示すように、処理を行う度にコマンド処理ログ132に処理状況を記録する。この機能により、複数段階にわたるライトコマンド処理及びリードコマンド処理の各々において、障害が生じたときプロセッサがコマンド処理ログ132を算出することで、障害箇所を特定する事が可能となる。コマンド処理ログ132は、図1に示したように例えばRAM122に記憶される。
 また、コマンド外部処理ユニット119、コマンド分割ユニット113、キャッシュヒット判定ユニット111、キャッシュ登録ユニット112、コマンド内部処理ユニット120、及び、コピーDMAユニット121の少なくとも1つの各々は、障害を検知(例えばタイムアウト)した際に、プロセッサ123に割り込む機能を有している。割り込みを受けたプロセッサ123は、前述のコマンド処理ログを解析することで障害箇所を特定する。
 (1-4-1)ライトコマンド処理
 図2及び図3は、ライトコマンド処理を示す。具体的には、図2は、ライトコマンド処理の一部でありライトコマンド受信処理を示す。図3は、ライトコマンド処理の残りでありライトコマンド応答処理を示す。
 図2に示すように、上位装置からライトコマンドを受信したコマンド外部処理ユニット119が、受信したライトコマンドを、ユニット119の内部領域(例えばレジスタ)に登録する。コマンド外部処理ユニット119は、登録したライトコマンドの状態を、完了通知の受信待ちの状態とする。コマンド外部処理ユニット119は、コマンド分割ユニット113に、登録したライトコマンドを転送する。なお、コマンド外部処理ユニット119がライトコマンドを内部領域に登録する理由は、ハードウェアであるコマンド外部処理ユニット119が完了応答を上位装置に送信するためである(この理由は、リードコマンドの登録(図4参照)についても同様である)。すなわち、コマンド外部処理ユニット119にて、コマンド外部処理ユニット119が受信した各ライトコマンドについて、完了通知を送信済みか未送信かが管理される。完了通知が送信されたライトコマンドは、コマンド外部処理ユニット119から削除されてよい。
 コマンド外部処理ユニット119からライトコマンドを受信したコマンド分割ユニット113は、ライトコマンドをサブライトコマンドに分割し、サブライトコマンドを、例えば内部領域(例えばユニット113のレジスタ)に登録する。ここで、ライトコマンドから得られるサブライトコマンドの数は、ライトデータのサイズを、内部管理単位(論理空間の単位論理領域)、言い換えれば、ページサイズで除算することにより得られる商(商が0の場合は1)でよい。例えば、ライトコマンドに従うライトデータのサイズが16KBであり、内部管理単位(ページサイズ)が4KBの場合、得られるサブライトコマンドの数は、16/4=4でよい。コマンド分割ユニット113は、ライトコマンドとサブライトコマンドの対応関係を例えばユニット113の内部領域(例えばレジスタ)に登録する。対応関係は、例えば、ライトコマンドのID(例えば「A」)と、そのライトコマンドから分割された複数のサブライトコマンドにそれぞれ対応した複数のID(例えば「A-1」、「A-2」、「A-3」、「A-4」)との組でよい。ライトコマンドのIDは、上位装置からのライトコマンドに含まれているIDでもよいし、FMコントローラ110(例えばコマンド外部処理ユニット119又はコマンド分割ユニット113)により付与されたIDでもよい。サブライトコマンドのIDは、例えば、ライトコマンドのIDを基に付与されたIDでよく、また、例えば、FMコントローラ110(例えばコマンド分割ユニット113)により付与されたIDでよい。コマンド分割ユニット113は、複数のサブライトコマンドの各々について、状態を、完了通知(応答)の受信待ちの状態とする。コマンド分割ユニット113は、分割した複数のサブライトコマンドをそれぞれキャッシュ登録ユニット112に転送する。1つのサブライトコマンドは、1つのサブライトデータの書き込みに対応し、例えば、1つのサブライトデータのライト先のLBAを指定する。サブライトデータは、ライトデータの一部分であり、例えば、内部管理単位(ページサイズ)と同じサイズである。1つのサブライトデータは、2以上のページに跨らず、1つのページに書き込まれる。
 コマンド分割ユニット113にてライトコマンドをサブライトコマンドに分割する理由は、ライトデータの格納状態が内部管理単位毎(サブライトデータ毎)に格納状態が異なり得ることにある。言い換えれば、同一ページに格納されるデータについてキャッシュヒット(ライト先LBAに対応するデータがキャッシュ114に存在する)とキャッシュミス(ライト先LBAに対応するデータがキャッシュ114に存在しない)が混在することを避けることにある。ライト対象のデータの全てがキャッシュミスであれば、プロセッサ123による処理が不要であるが、ライト対象のデータが少なくとも一部でもキャッシュヒットであれば、プロセッサ123による処理が必要になってしまう。従って、同一ページに格納されるデータについてキャッシュヒットとキャッシュミスが混在することを避けることが望ましい。
 具体的には、例えば、16KBのライトデータのうち、1のサブライトデータ(4KBのデータ)はデータキャッシュ114上にあり、残りの3のサブライトデータ(合計12KBのデータ)は1以上のFM140に格納されていることがあり得る。この場合、データキャッシュ114に格納されているサブライトデータについては、キャッシュ管理テーブル(図示せず)の更新が必要となる。キャッシュ管理テーブルは、キャッシュ判定テーブルと同様の情報でもよい。一方、FM140に格納されているサブライトデータについては、サブライトデータがキャッシュ114に登録されればよく、サブライトデータが格納されているキャッシュ領域(キャッシュ114における一領域)のアドレスがプロセッサ123に通知される必要がない。このように、FMモジュール100内部では、管理単位(例では4KB)毎に、論理領域(サブライトデータに対応した領域)の状態が異なり得る。このため、本実施形態では、ライトコマンドから、管理単位と同サイズのデータであるサブライトデータについてのサブライトコマンドが生成される。サブライトコマンドを受信したI/Oハードウェア又はプロセッサ123は、単一のサブライトコマンドの状態のみを制御すればよく、そのサブライトコマンドを含んだライトコマンド内の別のサブライトコマンドの処理の完了を待つ必要がない。結果として、高性能化が期待される。また、プロセッサ123の処理が不要な状況のサブライトコマンドについて、プロセッサ123による処理が不要となり、結果として、プロセッサ処理性能ネックによる性能制限を軽減できる。
 なお、ライトデータのサイズが管理単位(ページサイズ)以下の場合、サブライトコマンドの数は1でよく、また、そのサブライトコマンドはライトコマンドでもよい。言い換えれば、ライトデータのサイズが管理単位(ページサイズ)以下の場合、コマンド分割ユニット113は、コマンド外部処理ユニット119からのライトコマンドをキャッシュヒット判定ユニット111に転送してよい。
 コマンド分割ユニット113から複数(又は1)のサブライトコマンドを受信したキャッシュヒット判定ユニット111は、受信したサブライトコマンド毎に、キャッシュヒット判定を行う(サブライトコマンドで指定されているLBAに対応したサブライトデータがキャッシュ114に登録されている否かを判定する)。具体的には、例えば、本実施形態では、キャッシュ登録ユニット112がデータのキャッシュ114への登録を行い、キャッシュヒット判定ユニット111が、キャッシュヒット判定テーブル(図示せず)を持っており、キャッシュヒット判定ユニット111は、このキャッシュヒット判定テーブルを参照することで、サブライトコマンドが対象とするサブライトデータがキャッシュ114上にあるかどうか判定する。キャッシュヒット判定テーブルは、例えば、サブキャッシュ領域のアドレスとそのサブキャッシュ領域内のデータに対応したLBA(論理空間に属するLBA)との組を有してよい。そのようなキャッシュヒット判定テーブルに、サブライトコマンドで指定されているLBAが登録されていれば、キャッシュヒットであり、サブライトコマンドで指定されているLBAが登録されていなければ、キャッシュミスである。サブライトコマンドについて、キャッシュヒットとは、そのサブライトコマンドが対象とするLBA領域(論理領域)に対応付けられたデータが、FM140ではなくデータキャッシュ114に格納されている状態である。サブライトコマンドについて、キャッシュミスとは、そのサブライトコマンドが対象とするLBA領域(論理領域)に対応付けられたデータが、データキャッシュ114ではなくFM140に格納されている状態である。キャッシュヒット判定ユニット111にて、キャッシュヒットと判定されたサブライトコマンドは、以降、サブライトヒットコマンドとして管理される。このサブライトヒットコマンドには、キャッシュヒット判定ユニットにより、新サブライトデータ(新たにサブキャッシュ領域に格納されることになるサブライトデータ)の格納先のサブキャッシュ領域のアドレスと、キャッシュヒットしたサブキャッシュ領域(旧サブライトデータ(新サブライトデータにより更新されるサブライトデータ)が格納されているサブキャッシュ領域)のアドレスとが指定される。一方、キャッシュヒット判定ユニット111にて、キャッシュミスと判定されたサブライトコマンドは、以降、サブライトミスコマンドとして管理される。サブライトヒットコマンドもサブライトコマンドも、キャッシュヒット判定ユニット111からキャッシュ登録ユニット112に転送される。
 キャッシュヒット判定ユニット111からサブライトコマンド(サブライトヒットコマンド及びサブライトミスコマンド)を受信したキャッシュ登録ユニット112は、サブライトコマンド毎に、サブライトコマンドで指定されているLBA(論理空間に属するLBA)をキャッシュヒット判定テーブルに登録する。キャッシュ登録ユニット112は、受信したサブライトコマンドのうち、サブライトヒットコマンドのみプロセッサ123に通知し、サブライトミスコマンドについては、プロセッサ123に通知しない。
 サブライトヒットコマンドを受信したプロセッサ123は、そのサブライトヒットコマンドに応じた制御を行う。サブライトヒットコマンドには、旧サブライトデータが記憶されているサブキャッシュ領域(旧サブキャッシュ領域)のアドレスと、新サブライトデータの格納先のサブキャッシュ領域(新サブキャッシュ領域)のアドレスとが指定されている。プロセッサ123は、サブライトヒットコマンドを基に旧サブキャッシュ領域を特定し、特定したキャッシュ領域を解放する。具体的には、例えば、プロセッサ123は、キャッシュヒット判定テーブルから、サブライトヒットコマンドで指定されているLBAと、旧サブキャッシュ領域のアドレスとの対応付けを削除する。
 サブライトヒットコマンドの処理の後、プロセッサ123は、図3に示すように、そのサブライトヒットコマンドの完了をコマンド分割ユニット113に通知する。また、キャッシュ登録ユニット112は、サブライトミスコマンドに対応したサブライトデータをデータキャッシュ114へ登録した後、サブライトミスコマンドの完了をコマンド分割ユニット113に通知する。なお、本実施形態では、サブライトデータをFM140ではなくデータキャッシュ114に格納した段階で完了が通知されるが、本発明は、この例に限定されるものではない。例えば、サブライトコマンドのデータがFM140に書き込まれた後に、完了がコマンド分割ユニット113に通知されてもよい。
 前述したように、コマンド分割ユニット113は、ライトコマンドと分割したサブライトコマンドの対応関係を保持している。コマンド分割ユニット113は、ライトコマンドを構成する全てのサブライトコマンドが完了することを監視している。コマンド分割ユニット113は、完了を受信する毎に、その完了に対応したサブライトコマンドの状態を、完了受信済みとする。ライトコマンドを構成する全てのサブライトコマンドについて、プロセッサから完了の報告が有った場合、コマンド分割ユニット113は、ライトコマンドが完了したことをコマンド外部処理ユニット119に通知する。
 コマンド分割ユニット113よりコマンド完了を受信したコマンド外部処理ユニット119は、上位装置に対して、ライトコマンドの完了通知を転送する。上位装置に転送される完了通知(ライトコマンドの応答)は、コマンド分割ユニット113からの通知でもよいし、コマンド外部処理ユニット119により生成された通知でもよい。
 なお、コマンド外部処理ユニット119は、上位装置からライトコマンドを受信した場合にそのライトコマンドについてタイマーをセットし(時間計測を開始し)、ライトコマンドを受信してから一定時間以内にコマンド分割ユニット113から完了通知が来なかった場合、タイムアウトエラーを上位装置に通知してよい。コマンド外部処理ユニット119は、複数のI/Oコマンドを上位装置から受信且つ保持しており、I/Oコマンド毎に前述のタイマーにて時間監視を行ってよい。
 以上が、本実施形態におけるライトコマンド処理である。ライトコマンド処理によれば、複数のサブライトコマンドにそれぞれ対応した複数のサブリードコマンドがキャッシュ114に格納された場合に、ライトコマンドの完了が上位装置に通知される。これにより、ライトコマンド処理の高速化が期待できる。
 (1-4-2)リードコマンド処理
 図4及び図5は、リードコマンド処理を示す。具体的には、図4は、リードコマンド処理の一部でありリードコマンド受信処理を示す。図5は、リードコマンド処理の残りでありリードコマンド応答処理を示す。
 図4に示すように、上位装置からリードコマンドを受信したコマンド外部処理ユニット119が、受信したリードコマンドを、ユニット119の内部領域(例えばレジスタ)に登録する。コマンド外部処理ユニット119は、登録したリードコマンドの状態を、完了通知の受信待ちの状態とする。コマンド外部処理ユニット119は、コマンド分割ユニット113に、登録したリードコマンドを転送する。
 コマンド外部処理ユニット119からリードコマンドを受信したコマンド分割ユニット113は、リードコマンドをサブリードコマンドに分割し、サブリードコマンドを内部領域(例えばユニット113のレジスタ)に登録する。ここで、リードコマンドから得られるサブリードコマンドの数は、リードデータ(リードコマンドに従い読み出されるデータ)のサイズを、内部管理単位(ページサイズ)で除算することにより得られる商(商が0の場合は1)でよい。例えば、リードコマンドに従うリードデータのサイズが16KBであり、内部管理単位(ページサイズ)が4KBの場合、得られるサブリードコマンドの数は、16/4=4でよい。コマンド分割ユニット113は、リードコマンドとサブリードコマンドの対応関係を例えばユニット113の内部領域(例えばレジスタ)に登録する。コマンド分割ユニット113は、複数のサブリードコマンドの各々について、状態を、完了通知(応答)の受信待ちの状態とする。コマンド分割ユニット113は、分割した複数のサブリードコマンドをそれぞれキャッシュ登録ユニット112に転送する。1つのサブリードコマンドは、1つのサブリードデータの読み出しに対応し、例えば、1つのサブリードデータのリード元のLBAを指定する。サブリードデータは、リードデータの一部分であり、例えば、内部管理単位(ページサイズ)と同じサイズである。1つのサブリードデータは、2以上のページに跨らず、1つのページから読み出される。
 コマンド分割ユニット113にてリードコマンドをサブリードコマンドに分割する理由は、前述のライトコマンドのときと同様に管理単位毎に格納状態(キャッシュヒット/キャッシュミス)が異なっていることに加え、リードコマンドで指定されるLBA領域に対応付けられている複数のページ(複数のリード元ページ)が、異なるFMインターフェースに接続された異なるFM140に離散している可能性にある。FMコントローラ110は、L内部管理単位毎に、LBAとPBAの対応関係を管理しており、連続するLBA領域であっても、実際のデータは異なる複数のFM140(及びデータキャッシュ114)に分散している可能性がある。このため、1つのリードコマンドを完了するためには、複数のFMインターフェース124(又はコピーDMAユニット121)を並列に制御する必要があり得る。このため、内部管理単位に基づきリードコマンドがサブリードコマンドに分割される。
 コマンド分割ユニット113から複数(又は1)からのサブリードコマンドを受信したキャッシュヒット判定ユニット111は、サブリードコマンド毎に、キャッシュヒット判定を行う。具体的には、キャッシュヒット判定ユニット111は、キャッシュヒット判定テーブルを参照し、サブリードコマンドが対象とするサブリードデータがキャッシュ114上にあるかどうか判定する。サブリードコマンドについて、キャッシュヒットとは、そのサブリードコマンドが対象とするLBA領域(論理領域)に対応付けられたデータが、FM140ではなくデータキャッシュ114に格納されている状態である。サブリードコマンドについて、キャッシュミスとは、そのサブリードコマンドが対象とするLBA領域(論理領域)に対応付けられたデータが、データキャッシュ114ではなくFM140に格納されている状態である。キャッシュヒット判定ユニット111にて、キャッシュヒットと判定されたサブリードコマンドは、以降、サブリードヒットコマンドとして管理される。サブリードヒットコマンドには、キャッシュヒット判定ユニット111が、キャッシュヒットしたサブキャッシュ領域のアドレスを指定する。一方で、キャッシュヒット判定ユニット111にて、キャッシュミスと判定されたサブリードコマンドは、以降、サブリードミスコマンドとして管理される。
 キャッシュヒット判定ユニット111は、サブリードコマンドがサブリードヒットコマンドであるかサブリードミスコマンドであるかに応じて、サブリードコマンドの転送先のI/Oコマンドを選択する。図4に示す例では、サブリードミスコマンドは、コマンド内部処理ユニット120に転送され、サブリードヒットコマンドは、プロセッサ123に転送される。
 本実施形態において、サブリードミスコマンドとサブリードヒットコマンドの通知先I/Oハードウェアを分ける理由は、サブリードミスとサブリードヒットの発生頻度の差と、サブリードヒット処理の複雑さにある。
 サブリードミスとサブリードヒットの発生頻度の差は、FM群(複数のFM140の集合)の容量に対するデータキャッシュ114の容量の割合、及び、上位装置がFMモジュール100に指定するLBAの局所性に依存する。例えば、本実施形態では、データキャッシュ114の容量とFM群の容量の差はきわめて大きい。より具体的には、例えば、データキャッシュ114の容量は数百MB(メガバイト)、FM群の容量は数TB(テラバイト)である。こうした構成において、LBAの局所性の低いリードリクエストが上位装置から受信された場合、リードコマンドから得られるサブリードコマンドの大半が、サブリードミスコマンドとなる。つまり、サブリードヒットコマンドはサブリードミスコマンドに比べてわずかしか生じないと予測される。このため、FMモジュール100のリード性能を高速化したいのであれば、サブリードミスコマンドを高速な専用ハードウェアにて処理する事が必要となる。言い換えれば、本実施形態では、キャッシュミスした方がリード性能の高速化が期待でき、この観点から、データキャッシュ114は、読み出されたデータが残らないバッファのような一時記憶領域であることが望ましい。
 なお、サブリードミスコマンドのみならずサブリードヒットコマンドについてもI/Oハードウェアにて処理する事がFMモジュール100の性能を向上させる観点からは望ましいとも考えられるが、サブリードヒットコマンドは、別処理と競合する可能性がある。例えば、サブリードヒットコマンドの対象領域であるサブキャッシュ領域は、FM140にデータを書き込む為に、データキャッシュ114からFM140にデータを転送(以降この動作をデステージと記す)中の領域である可能性がある。そして、仮に、デステージ処理がサブリードヒットコマンドの処理との競合を考慮しない場合、FM140へのデータ転送が終了した時点で、サブキャッシュ領域が解放される。このため、サブリードコマンドについてキャッシュヒットと判定された後、競合を考慮せずに処理が続行されると、サブキャッシュ領域からデータが削除された後、リードされる可能性が生じる。言い換えれば、サブリードヒットコマンドに対応したサブキャッシュ領域からのデータの読み出しの時点では、そのサブリードヒットコマンドに対応したデータが、サブキャッシュ領域には存在しない可能性が生じる。
 上記のような可能性を排除するため、本実施形態では、FMコントローラ110が行う各種動作の複雑な競合管理をプロセッサ123にて行う。例えば、サブリードヒットコマンドの処理とデステージの処理の競合を回避する為に、プロセッサ123が、「サブリードヒットコマンドに対応したサブキャッシュ領域はデステージ処理の対象になっていることを検知する。」、又は、「サブリードヒットコマンドに対応したサブキャッシュ領域のロックを取得し、並列で実行されているデステージ処理においてそのサブキャッシュ領域が解放されること(そのサブキャッシュ領域からデータが削除されること)を不可とする」等の排他制御を行う。
 上述の通り、競合の可能性があり複雑な排他制御が必要なサブリードヒットコマンドは、プロセッサ123に転送される。これにより、複雑な競合を管理するためのハードウェアを開発する必要が無く、バグの修正が困難なハードウェアの開発リスクを軽減し、開発期間を短縮する事が期待できる。
 サブリードヒットコマンドの処理をプロセッサ123に担わせることで、プロセッサ123の処理性能がネックとなりFMモジュール100のリード性能が低下する事が考えられるが、前述のとおり、上位装置がLBAの局所性の少ないI/Oパターンを実行し得る環境において、サブリードヒットコマンドの発生頻度は、サブリードミスコマンドの発生頻度と比較して少ないので、FMモジュールの性能低下を軽減できる。
 コマンド内部処理ユニット120は、キャッシュヒット判定ユニット111からサブリードミスコマンドを受信する。コマンド内部処理ユニット120は、サブリードミスコマンド毎に、サブリードミスコマンドが指定するLBAに対応したPBAを論物変換テーブル600から特定し、特定したPBAが該当する物理領域に接続されたFMインターフェース124に対して、FM140からデータをリードするコマンドを生成し転送する。2以上のサブリードミスコマンドにそれぞれ対応した2以上のリード元物理領域(ページ)にそれぞれ接続された2以上のFMインターフェース124をそれぞれ並列に起動できる。
 一方、プロセッサ123は、キャッシュヒット判定ユニット111からサブリードヒットコマンドを受信する。プロセッサ123は、サブリードヒットコマンドにて指定されるサブキャッシュ領域について排他制御を行った後、コピーDMAユニット121に対してコマンドを発行する。そのサブキャッシュ領域内のデータをリードバッファ領域(上位装置にリードデータを転送する前に、一旦リードデータを格納する領域)にコピーするためである。なお、本実施形態では、サブキャッシュ領域とリードバッファ領域が別々の領域であるが、データキャッシュ114とリードバッファ領域が一体であってもよく、その場合、コピーDMAユニット121は無くてもよい。
 また、本実施形態では、リードコマンドにてFM群から読み出されたデータがデータキャッシュ114に登録されないが、本発明はこの例に限定されるものではない。例えば、FM140から読み出されたサブリードデータがデータキャッシュ114に転送され、リードサブコマンドで指定されたLBAがキャッシュヒット判定テーブルに登録されてもよい。これにおり、頻繁にリード元となるLBA領域については、FM140からではなくサブキャッシュ領域からデータが読み出されてもよい。
 図4に示した動作にて、サブリードコマンド(サブリードヒットコマンド及びサブリードミスコマンド)の処理の結果、データ転送用のコマンドが通知されたFMインターフェース124とコピーDMAユニット121から完了通知が転送される。
 具体的には、図5に示すように、FM140からデータを読み出すコマンドの処理が完了したFMインターフェース124は、サブリードミスコマンドにて指定されFM140から読み出されたサブリードデータを含んだ完了通知を、コマンド分割ユニット113に通知する。
 また、サブキャッシュ領域からリードバッファへのデータ転送が完了したコピーDMAユニット121は、転送完了を、コピーDMAユニット121にコマンドを発行したプロセッサ123に通知する。そして、コピーDMAユニット121からの完了通知を受信したプロセッサ123は、サブリードヒットコマンドに対応したサブキャッシュ領域について排他制御を行った後、サブリードヒットコマンドの完了をコマンド分割ユニット113に通知する。なお、実施形態では、コピーDMAユニット121が完了を一旦プロセッサ123に通知し、その通知を受けたプロセッサ123が、コマンド分割ユニット113に完了を通知するが、本発明はこの例に限定されるものではない。例えば、コピーDMAユニット121がコマンド分割ユニット113とプロセッサ123にサブリードヒットコマンドを通知してもよい。
 コマンド分割ユニット113は、単一のリードコマンドより作成した複数のサブリードコマンドの全てについて完了通知を待っている。コマンド分割ユニット113は、タイムアウトの閾値を超過しても完了通知がない場合には(サブリードコマンドを発行してから一定時間以内に完了通知を受信しない場合には)、エラー情報をコマンド処理ログ132に書き込み、プロセッサ123に割り込みを行ってよい。
 FMインターフェース124及びプロセッサ123からの完了通知を受信したコマンド分割ユニット113は、リードコマンドを構成する全てのサブリードコマンドについて完了通知を受信した後、コマンド外部処理ユニット119に、リードコマンドの完了通知を転送する。
 コマンド分割ユニット113からリードコマンドの完了通知を受信したコマンド外部処理ユニット119は、上位装置に対してリードコマンド処理が完了したことを通知する完了通知を転送する。上位装置に転送される完了通知(リードコマンドの応答)は、コマンド分割ユニット113からの通知でもよいし、コマンド外部処理ユニット119により生成された通知でもよい。また、上位装置に転送される完了通知は、リードコマンドを構成する全てのサブリードコマンドにそれぞれ対応したサブリードデータにより構成されたリードデータを含んでもよい。
 (1-5)プロセッサ123の処理
 続いて、プロセッサ123の処理を説明する。本実施形態のプロセッサ123の主な処理としては、サブライトヒットコマンド処理及びサブリードヒットコマンド処理のように上位装置からのI/Oコマンドが基で実行される処理と、デステージ処理及びリクラメーション処理のように上位装置からのコマンドとは非同期に(独立して)実行される処理とがある。このうち、デステージ処理及びリクラメーション処理のように上位装置からのコマンドと非同期に実行される処理(内部処理)については、上位装置に完了が通知されず、故に、内部処理は、上位装置からは把握できない処理である。
 (1-5-1)プロセッサ123の処理:サブライトヒットコマンド処理
 プロセッサ123の処理として、まず、サブライトヒットコマンド処理について図8を用いて説明する。
 図8は、サブライトヒットコマンド処理のフロー図である。
 S801では、プロセッサ123が、キャッシュヒット判定ユニット111からサブライトヒットコマンドを受信する。ここで、プロセッサ123は、受信したサブライトヒットコマンドから旧サブキャッシュ領域及び新サブキャッシュ領域を特定する。
 S802では、プロセッサ123は、S801にて特定したサブキャッシュ領域のロック取得を試みる。このステップで、プロセッサ123は、FMコントローラ110が保持する管理テーブルを基に、ロック取得を試みる。
 S803では、プロセッサ123は、ロックが取得できたかを判定する。このステップにてロックが取得できない場合、プロセッサ123は、S801で特定されたサブキャッシュ領域が別処理にて利用中であると判断でき、S802に遷移することで、別処理の利用が終了するまで、ロック取得を試みる。一方で、ロックが取得できた場合、S804に遷移する。
 S804では、プロセッサ123が、ヒットサブ領域(キャッシュヒットしたサブキャッシュ領域)の管理データを取得する。
 S805では、プロセッサ123が、S804で取得した管理データ(ヒットサブ領域に格納されているデータに対応したLBAを含む)を参照し、ヒットサブ領域が旧サブキャッシュ領域か否かを判定する。FMモジュール100では、ヒットサブ領域内のデータが別処理にて変化する可能性があり、S805では、プロセッサ123は、この領域が旧サブキャッシュ領域であるか否かを判定する。
 S805の判定結果が肯定の場合(具体的には、ロックが取得されたヒットサブ領域に対応しているLBAが、サブライトヒットコマンドで指定されているLBAと同一の場合)、S806に遷移する。一方、S805の判定結果が否定の場合(具体的には、ロックが取得されたヒットサブ領域に対応しているLBAが、サブライトヒットコマンドで指定されているLBAと異なっている場合)、ヒットサブ領域が別処理によって旧サブキャッシュ領域ではなくなった場合であり、S807に遷移する。
 S806では、プロセッサ123が、旧サブキャッシュ領域を解放する。これにより、旧サブキャッシュ領域を、別処理においてサブキャッシュ領域として扱う事ができる。
 S807では、プロセッサ123が、新サブキャッシュ領域のアドレスを、キャッシュ管理テーブルに登録する。
 S808では、プロセッサ123が、ヒットサブ領域のロックを解放する。この解放処理により、解放された領域を、別処理(例えばデステージ処理又はサブリードヒットコマンド処理)においてサブキャッシュ領域として扱う事ができる。
 S809では、プロセッサ123が、S801にて受信したサブライトヒットコマンドが完了したことをコマンド分割ユニット113に通知する。
 以上が、サブライトヒットコマンド処理である。
 (1-5-2)プロセッサの処理:サブリードヒットコマンド処理
 続いて、サブリードヒットコマンド処理について図9を用いて説明する。
 図9は、サブリードヒットコマンド処理のフロー図である。
 S901では、プロセッサ123が、キャッシュヒット判定ユニット111からサブリードヒットコマンドを受信する。ここで、プロセッサ123は、受信したサブリードヒットコマンドからサブキャッシュ領域を特定する。S902では、プロセッサ123は、S901にて特定したサブキャッシュ領域のロック取得を試みる。S903では、プロセッサ123は、ロックが取得できたかを判定する。S904では、プロセッサ123が、ヒットサブ領域(キャッシュヒットしたサブキャッシュ領域)の管理データを取得する。S905では、プロセッサ123が、S904で取得した管理データ(ヒットサブ領域に格納されているデータに対応したLBAを含む)を参照し、ヒットサブ領域が、サブリードヒットコマンドに対応したサブリードデータを記憶しているサブキャッシュ領域か否かを判定する。S905の判定結果が肯定の場合、S906に遷移し、S905の判定結果が否定の場合、S910に遷移する。
 S906では、プロセッサ123が、S905にてヒットサブ領域にサブリードヒットコマンドに対応したサブリードデータが格納されていると判断された為、ヒットサブ領域内のデータをリードバッファ領域にコピーするコピーDMAユニット121用にコマンドを生成し、そのコマンドをコピーDMAユニット121に送信することでコピーDMAユニット121を起動する。
 S907では、プロセッサ123が、S906にて起動したコピーDMAユニット121から完了通知を受信する。この完了通知の受信により、サブリードヒットコマンドに対応したサブリードデータがリードバッファ領域に格納されたことが確定する。本実施形態のFMモジュール100では、リードコマンドから分割された複数のサブリードコマンドにそれぞれ対応した複数のサブリードデータがリードバッファ領域に格納され、全てのサブリードコマンドの完了を確認したコマンド分割ユニット113が、上位装置に対して、データ転送を起動する。このため、サブリードデータがリードバッファ領域に格納されたことをもって、サブリードヒットコマンドとしてのデータ転送処理は完了となる。
 S908では、プロセッサ123が、ヒットサブ領域のロックを解放する。S909では、プロセッサ123が、S901にて受信したサブリードヒットコマンドが完了したことをコマンド分割ユニット113に通知する。
 S910では、プロセッサ123が、ヒットサブ領域にサブリードヒットコマンドに対応したサブリードデータが格納されていないと判定されるため、ヒットサブ領域のロックを解放する。
 S911では、プロセッサ123が、サブリードヒットコマンドを、コマンド内部処理ユニット120にリードミスコマンドとして登録する。S901にて受信したサブリードヒットコマンドについて既にキャッシュミスが発生しており、ヒットサブ領域にサブリードデータが無くそのサブリードデータがFM140に格納されていると判定されたためである。この場合、コマンド内部処理ユニット120が、FMインターフェース124にコマンドを発行する。そして、FMインターフェース124によりFM140からリードバッファ領域へデータが転送されたことが完了した事をもって、FMインターフェース124がコマンド分割ユニット113に完了を通知する。このため、プロセッサ123からコマンド分割ユニット113への完了通知は不要となる。
 以上が、サブリードヒットコマンド処理である。
 (1-5-3)プロセッサ123の処理:デステージ処理
 続いて、デステージ処理について図10を用いて説明する。
 図10は、デステージ処理のフロー図である。
 デステージ処理は、定期的に起動される。なお、デステージ契機は定期的に限定されない。例えば、プロセッサ123が、データキャッシュ114の使用状況を監視し、データキャッシュ114の使用可能領域の量が閾値以下となった場合に、サブキャッシュ領域を解放するためにデステージ処理を起動してもよい。
 S1001では、プロセッサ123が、デステージ対象とするサブキャッシュ領域を選択する。プロセッサ123は、キャッシュ管理テーブルを参照し、複数(又は1)のサブキャッシュ領域をデステージ対象として選択する。ここでは、キャッシュ管理テーブルより、デステージ対象データに対応したLBA(論理空間に属するLBA)が取得される。
 S1002では、プロセッサ123は、S1001にてデステージ対象として選択した複数のサブキャッシュ領域の各々のロック取得を試みる。
 S1003では、プロセッサ123は、ロックの取得が可能かを判定する。プロセッサ123は、サブキャッシュ領域とロックの有無との関係を示すロック管理テーブル(図示せず)を参照し、S1001にて選択したデステージ対象領域が占有可能となった(ロックが取れた)かを判定する。ロックが取れたサブキャッシュ領域の量が一定量未満の場合、他のサブキャッシュ領域をデステージ対象領域とするため、S1001に遷移する。一方、ロックが取れたサブキャッシュ領域の量が一定量以上の場合、S1004に遷移する。
 S1004は、プロセッサ123が、S1001にて選択した複数のデステージ対象領域の管理データを取得する。
 S1005では、プロセッサ123が、S1001にて選択した複数のデステージ対象領域が有効であることを確認する。本実施形態では、S1001にてデステージ対象とした領域についてS1003にてロックを取得するまでの間に、別処理(例えばプロセッサ123がマルチコアの場合、他のコアが実施しているデステージ処理)によって解放されている可能性がある。プロセッサ123が、ロックを取得したサブキャッシュ領域の管理データを参照することで、デステージ対象領域が有効であることを判断する。有効となった場合、S1006に遷移する。一方、有効でなかった場合、デステージ対象の領域を確保する為に、S1001に遷移する。
 S1006では、プロセッサ123が、デステージ先FM領域(FM内の物理領域)の選択を行う。プロセッサ123が、内部の管理テーブル(例えば図7に示したブロック管理テーブル700)を参照し、サブキャッシュ領域のデータのデステージ先(転送先)となる複数のFM領域を決定する。
 S1007では、プロセッサ123が、S1006にて選択したFM領域に接続したFMインターフェース124に対してライト用のコマンドを生成し起動する。
 S1008では、プロセッサ123が、S1006にて起動した複数のFMインターフェース124の各々から完了の通知を受ける。
 S1009では、プロセッサ123が、論物変換テーブル600を更新する。プロセッサ123が、デステージ先のPBA領域(FM領域)に対して、S1001にて取得したLBAを対応付ける。
 S1010では、プロセッサ123が、S1001にて選択したサブキャッシュ領域のロックを解放する。このロック解放後、サブライトヒットコマンド処理及びリードヒットコマンド処理のような別処理において、その解放されたサブキャッシュ領域を利用可能である。
 以上が、デステージ処理である。
 (1-5-4)プロセッサの処理:リクラメーション処理
 続いて、図11を用いリクラメーション処理について説明する。
 図11は、リクラメーション処理のフロー図である。
 S1101では、プロセッサ123が、リクラメーション対象のPBA領域(移動元ブロック)を選択する。プロセッサ123は、ブロック管理テーブル700を参照し、相対的に無効PBA量の多いブロックを移動元ブロックとして選択する。リクラメーション処理において移動されるデータの量が少なくて済むようにするためである。
 S1102では、プロセッサ123が、S1101にて選択したPBA領域(ブロック)に対応付けられているLBAを、論物変換テーブル600から特定する。なお、論物変換テーブル600以外の管理テーブルにおいてLBAとPBAの対応関係が登録されていてそのテーブルからLBAが特定されてもよい。
 S1103では、プロセッサ123が、キャッシュ登録ユニット112に対し、S1102にて特定したLBAをキャッシュ登録テーブルに登録することとそのLBAに対応付けられたデータを格納するためのサブキャッシュ領域を確保することとを依頼する。
 S1104では、プロセッサ123が、S1103にてキャッシュ登録ユニット112に依頼したことが実行されたかを判定する。S1104の判定結果が肯定の場合、S1105に遷移し、S1104の判定結果が否定の場合(例えば、空きサブキャッシュ領域の枯渇のため確保が実施されなかった場合)、S1103に遷移する。
 S1105では、プロセッサ123が、S1103にて確保されたサブキャッシュ領域のロックを取得する。
 S1106では、プロセッサ123が、移動元ブロック内の有効データをS1103にて確保したサブキャッシュ領域に転送するために、該当するFMインターフェース124用のコマンドを生成し、起動する。これにより、移動元ブロックから有効データがサブキャッシュ領域に転送される。
 S1107では、プロセッサ123が、S1106にて起動したデータ転送の完了を特定する。この完了をもって、移動元ブロック内の有効データはサブキャッシュ領域に格納されたこととなる。このため、移動元ブロックに対応付けられたLBAを指定したI/Oコマンドの処理は、サブキャッシュ領域に格納されたデータにて対応可能となる。
 S1108では、プロセッサ123が、移動元ブロックのPBAとそれに対応付けられたLBAとの組を削除する。S1107にて移動元ブロック内の有効データがサブキャッシュ領域に格納されたためである。
 S1109では、プロセッサ123が、ブロック管理テーブル700を更新する。プロセッサ123が、S1108にてLBA/PBAの組(対応付け)を削除したことで、移動元ブロックの全PBAが無効PBAである。このため、プロセッサ123が、ブロック管理テーブル700を更新し、移動元ブロックが消去可能であることを別処理に通知する。詳細な説明は省略するが、本実施形態では、リクラメーション処理とは別に消去用のジョブも並行して動作しており、そのジョブが、ブロック管理テーブル700を参照し、全PBAが無効PBAとなっているブロックを選択しその選択したブロックについて消去処理を実行する。
 S1110では、プロセッサ123が、サブキャッシュ領域のロックを解放する。
 以上が、リクラメーション処理である。FMコントローラ110は、リクラメーション用のデータと上位装置からのライトデータを、ともにデステージ処理によりFM140に格納する。このため、移動元ブロック内の有効データがサブキャッシュ領域に格納された段階でリクラメーション処理の終了となる。
 以上が、FMモジュール100が実行する処理である。以上のとおり、デステージ処理、リクラメーション処理、サブライトヒットコマンド処理及びサブリードヒットコマンド処理の各処理にて処理領域の競合が想定される場合、その調停処理を組み込みプロセッサ123にて処理することで、複雑な処理をソフトウェア(コンピュータプログラム)にて記述可能となる。また、サブリードヒットコマンド処理及びサブライトヒットコマンド処理に比べて発生頻度の高いサブリードミスコマンド処理及びサブライトミスコマンド処理については、ハードウェアのみで処理することで高性能化が可能となる。結果、競合処理を行う複雑なハードウェアが無くとも、サブリードミスコマンド処理を高速に処理可能となり、FMモジュール100のリードコマンド処理性能が向上する。同様に、競合処理を行う複雑なハードウェアが無くともサブライトミスコマンドを高速に処理可能となり、上位装置へのライト応答時間(ライトコマンド処理の応答時間)を短縮できる。また、サブI/Oコマンド(サブライトコマンド/サブリードコマンド)をハードウェアにて処理する場合であっても、そのハードウェアによる処理において障害が発生した場合にはそのハードウェアによりログ(例えば障害情報)がコマンド処理ログ132に記録されるので、障害発生時に組み込みプロセッサ123から障害部位(例えば、障害が発生したハードウェア)及び障害内容の少なくとも一方の取得が可能となる。
 以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、実施形態では、キャッシュヒット/ミスに応じてプロセッサがコマンド(サブコマンド)を処理するか否かが決まるが、プロセッサがコマンド(サブコマンド)を処理するか否かの基準は、それに限らないでよい。例えば、FM群が、複数の高速物理領域(例えばSLC(Single Level Cell)のページ)と、複数の低速物理領域(例えばMLC(Multi Level Cell)のページ)とを含む。論理空間(LBA範囲)が、高速物理領域が割り当てられる論理領域である高速論理領域と、低速物理領域が割り当てられる論理領域である低速論理領域とに区分されている。この場合、高速論理領域に属するLBAが指定されたI/Oコマンドの処理は、I/Oハードウェアが担当しプロセッサ123は担当せず、低速論理領域に属するLBAが指定されたI/Oコマンドの処理は、I/Oハードウェアに加えてプロセッサ123も担当してもよい。
100:FMモジュール 110:FMコントローラ 140:FM

 

Claims (14)

  1.  上位装置からのI/O(Input/Output)コマンドの少なくとも一部が所定の条件を満たしている場合に前記I/Oコマンドの少なくとも一部を処理するプロセッサと、前記I/Oコマンドが前記所定の条件を満たしてない場合に前記I/Oコマンドの全てを処理する1以上のハードウェアロジック回路とを有するメモリコントローラと、
     前記I/Oコマンドに従うI/O対象データの少なくとも一部であり前記メモリコントローラにより入出力されるデータを記憶する1以上の半導体記憶素子である記憶素子群と
    を有する半導体メモリデバイス。
  2.  前記メモリコントローラが、一時記憶領域を有し、
     前記I/Oコマンドの少なくとも一部が所定の条件を満たしている場合とは、前記I/O対象データの少なくとも一部が前記一時記憶領域に記憶されている場合である、
    請求項1記載の半導体メモリデバイス。
  3.  複数のハードウェアロジック回路が、
      前記I/Oコマンドを複数のサブI/Oコマンドに分割するハードウェアロジック回路であるコマンド分割ユニットと、
      前記複数のサブI/Oコマンドの各々についてサブI/Oコマンドに従うサブI/O対象データが前記一時記憶領域に記憶されているか否かを判定するハードウェアロジック回路である判定ユニットと
    を含み、
     前記一時記憶領域にサブI/O対象データが記憶されていると判定されたサブI/Oコマンドが、前記プロセッサにより処理される、
    請求項2記載の半導体メモリデバイス。
  4.  前記メモリコントローラが、上位蔵置に提供する論理空間が所定サイズで区分された単位論理領域毎に単位論理領域の論理アドレスと前記記憶素子群の物理アドレスとの対応関係を管理し、
     前記コマンド分割ユニットは、前記所定サイズと同サイズのサブI/O対象データのI/OのためのサブI/Oコマンドに前記I/Oコマンドを分割する、
    請求項3記載の半導体メモリデバイス。
  5.  前記記憶素子群は、複数の物理領域で構成されており、物理領域単位でデータが入出力されるようになっており、
     前記コマンド分割ユニットは、物理領域サイズと同サイズのサブI/O対象データのI/OのためのサブI/Oコマンドに前記I/Oコマンドを分割する、
    請求項3記載の半導体メモリデバイス。
  6.  前記メモリコントローラは、複数の記憶素子インターフェースを有し、
     前記複数の記憶素子インターフェースの各々に、1以上の記憶素子が接続されており、
     前記I/Oコマンドは、リードコマンドであり、
     前記複数のサブI/Oコマンドは、それぞれ、複数のサブリードコマンドであり、
     前記複数のハードウェアロジック回路が、2以上のサブリードコマンドにそれぞれ対応した2以上の物理領域にそれぞれ接続されている2以上の記憶素子インターフェースを、前記2以上の物理領域からそれぞれ並列に2以上のサブリードデータを読み出すよう、並列に起動するハードウェアロジック回路であるコマンド内部処理ユニットを含む、
    請求項3記載の半導体メモリデバイス。
  7.  前記I/Oコマンドは、リードコマンドであり、
     前記複数のサブI/Oコマンドは、それぞれ、複数のサブリードコマンドであり、
     前記複数のハードウェアロジック回路が、登録されたサブリードコマンドに対応した物理領域からサブリードデータを読み出すハードウェアロジック回路であるコマンド内部処理ユニットを含み、
     前記プロセッサは、サブリードコマンドの処理と並列に、前記一時記憶領域内のデータを削除又は変更し論理アドレスと物理アドレスの対応関係を更新することを含んだ処理である別処理を行うようになっており、
     前記プロセッサは、サブリードデータが前記一時記憶領域に記憶されていると判定された後にそのサブリードデータが前記一時記憶領域に無いと判定された場合、そのサブリードデータに対応したサブリードコマンドを前記コマンド内部処理ユニットに登録する、
    請求項3記載の半導体メモリデバイス。
  8.  前記I/Oコマンドは、ライトコマンドであり、
     前記複数のサブI/Oコマンドは、それぞれ、複数のサブライトコマンドであり、
     前記プロセッサは、サブライトコマンドの処理と並列に、前記一時記憶領域内のデータを削除又は変更し論理アドレスと物理アドレスの対応関係を更新することを含んだ処理である別処理を行うようになっており、
     前記プロセッサは、前記サブライトコマンドに従うサブライトデータである新サブライトデータの格納先領域が前記一時記憶領域から確保されており且つ前記新サブライトデータにより更新されるサブライトデータである旧サブライトデータが前記一時記憶領域に記憶されている場合、前記旧サブライトデータが格納されている領域を前記一時記憶領域から解放する、
    請求項3記載の半導体メモリデバイス。
  9.  前記複数のサブライトコマンドにそれぞれ対応した複数のサブリードコマンドが前記一時記憶領域に格納された場合に、前記1以上のハードウェアロジック回路のうちの所定のハードウェアロジック回路が、前記ライトコマンドの完了を前記上位装置に通知する、
    請求項8記載の半導体メモリデバイス。
  10.  前記一時記憶領域は、バッファである、
    請求項2記載の半導体メモリデバイス。
  11.  前記1以上のハードウェアロジック回路の各々が、処理の結果を示す情報をログ領域に出力し、
     前記プロセッサが、障害が発生した場合に、前記ログ領域に記憶されている情報から、障害部位及び障害内容のうちの少なくとも一方を特定する、
    請求項1記載の半導体メモリデバイス。
  12.  前記記憶素子群が、複数の高速物理領域と複数の低速物理領域とを含み、
     前記メモリコントローラにより前記上位装置に提供される論理空間が、高速物理領域が割り当てられる論理領域である高速論理領域と、低速物理領域が割り当てられる論理領域である低速論理領域とに区分されており、
     前記高速論理領域に属する論理アドレスが指定されたI/Oコマンドの処理を、前記1以上のハードウェアロジック回路の少なくとも1つが担当し前記プロセッサは担当せず、
     前記低速論理領域に属する論理アドレスが指定されたI/Oコマンドの処理を、前記1以上のハードウェアロジック回路のうちの少なくとも1つに加え前記プロセッサが担当する、
    請求項1記載の半導体メモリデバイス。
  13.  前記メモリコントローラは、上位装置からPCI-Expressに従いI/Oコマンドを受信する、
    請求項1記載の半導体メモリデバイス。
  14.  複数の半導体メモリデバイスと、
     ホスト計算機からのI/O要求に基づき前記複数の半導体メモリデバイスの少なくとも1つの各々にI/Oコマンドを送信するストレージコントローラと
    を有し、
     前記複数の半導体メモリデバイスの少なくとも1つの各々が、
      前記ストレージコントローラからのI/Oコマンドの少なくとも一部が所定の条件を満たしている場合に前記I/Oコマンドの少なくとも一部を処理するプロセッサと、前記I/Oコマンドが前記所定の条件を満たしてない場合に前記I/Oコマンドの全てを処理する1以上のハードウェアロジック回路とを有するメモリコントローラと、
      前記I/Oコマンドに従うI/O対象データの少なくとも一部であり前記メモリコントローラにより入出力されるデータを記憶する1以上の半導体記憶素子である記憶素子群と
    を有する、
    ストレージ装置。

     
PCT/JP2014/079202 2014-11-04 2014-11-04 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 WO2016071954A1 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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