WO2016046970A1 - Storage device - Google Patents

Storage device Download PDF

Info

Publication number
WO2016046970A1
WO2016046970A1 PCT/JP2014/075680 JP2014075680W WO2016046970A1 WO 2016046970 A1 WO2016046970 A1 WO 2016046970A1 JP 2014075680 W JP2014075680 W JP 2014075680W WO 2016046970 A1 WO2016046970 A1 WO 2016046970A1
Authority
WO
WIPO (PCT)
Prior art keywords
command
read
data
memory
controller
Prior art date
Application number
PCT/JP2014/075680
Other languages
French (fr)
Japanese (ja)
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/075680 priority Critical patent/WO2016046970A1/en
Publication of WO2016046970A1 publication Critical patent/WO2016046970A1/en

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
    • 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/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/16Protection against loss of memory contents

Definitions

  • the present invention relates to storage device control.
  • An SSD is a semiconductor storage device that uses a flash memory (hereinafter, FM) as a storage medium.
  • FM flash memory
  • many SSDs are equipped with a NAND type FM.
  • FM reads and writes data in units called pages. Since FM cannot directly overwrite a page, in order to store new data in a page where data has already been stored, it is necessary to erase the data once. Data erasure is performed on a collection of pages called a block. Further, a block aggregate called a die is built in the FM. When the FM receives a command such as read, write, or erase, it performs a certain processing time called chip busy time and performs an internal operation of the FM. In the meantime, reading, writing, erasing, etc. to other pages and other blocks in the same die cannot be executed. Therefore, when a data read request for a page of another block of the same die is generated while a block is being erased, the read request is waited until the block erase is completed.
  • a command such as read, write, or erase
  • FM chip busy time is about 0.1 ms for page read and about several ms for page write, whereas block erasing requires a very long time of about several tens of ms. Therefore, the response time to the FM read request is originally about 0.1 ms if there is no conflict with block erasure, but if it collides with the block erase processing, it will be delayed significantly to about a dozen ms. Therefore, an SSD equipped with an FM having such response characteristics also has a risk of causing a significant response delay in principle.
  • system response delay for example, system response delay to bid instructions
  • system response delay to bid instructions can lead to huge losses, so it is a number of response requirements for storage devices Some have severe restrictions such as ms or less.
  • ms or less In order to use the SSD in such an environment, it is necessary to avoid a read response delay due to collision with erasure and realize a stable low response of the SSD.
  • the collection read refers to a process of generating data of a certain SSD in a RAID group using data and parity held in another SSD.
  • an SSD controller that controls the SSD (hereinafter referred to as an SSD controller) must determine whether or not the collection read is necessary. For this purpose, it is necessary for the SSD controller to know whether or not the FM (strictly speaking, the die) to which the read request will be issued is currently executing the block erase process.
  • a general SSD adopts a mechanism for simultaneously queuing a plurality of commands to the FM. Therefore, it is difficult for the SSD controller to grasp which command being queued is currently being executed by the FM.
  • one of the representative storage devices and semiconductor storage devices of the present invention provides command execution information such as the type of command being executed (read, write, erase, etc.) and the expected end time of the command.
  • An interface for notifying the SSD controller is provided, the FM controller updates the command execution information when executing the queued command, and the SSD controller executes the access destination execution information in advance when reading data from the FM. , It is confirmed whether the read destination FM is currently being erased. If the read destination FM is not being erased, normal read is performed. If the read destination FM is being erased, correction read is performed.
  • FIG. 1 is a diagram showing an outline of the present invention.
  • FIG. 2 is a diagram illustrating a configuration example of the storage system 10000 including the storage apparatus 10 according to the first embodiment.
  • FIG. 3 is a diagram illustrating a configuration example of the SSD 700.
  • FIG. 4 is a diagram illustrating a configuration example of the FM controller 717 and the FM chip 780.
  • FIG. 5 is a diagram illustrating a configuration example of a parity group.
  • FIG. 6 is a diagram illustrating a configuration example of the FM command management table 71630.
  • FIG. 7 is a diagram illustrating a configuration example of the parity group management table 71640.
  • FIG. 8 is a sequence diagram showing an outline of tasks of the SSD controller 710.
  • FIG. 8 is a sequence diagram showing an outline of tasks of the SSD controller 710.
  • FIG. 9 is a sequence diagram showing an overview of S102 which is data write processing of the SSD controller.
  • FIG. 10 is a sequence diagram showing an overview of S103 which is a data read process of the SSD controller.
  • FIG. 11 is a sequence diagram showing an overview of S303, which is the collection read process of the SSD controller.
  • FIG. 12 is a sequence diagram showing an overview of S105, which is the garbage collection process of the SSD controller.
  • FIG. 13 is a sequence diagram showing an outline of tasks of the FM controller 717.
  • FIG. 14 is a sequence diagram showing the exchange between the SSD controller 710 and the FM controller 717 in the data read process of the SSD controller according to the second embodiment.
  • FIG. 15 is a diagram illustrating a configuration example of the FM controller 717 according to the third embodiment.
  • FIG. 16 is a diagram illustrating a configuration example of the erasing execution flag 900.
  • FIG. 17 is a sequence diagram illustrating an outline of tasks of the FM controller 717 according to the third embodiment.
  • the nonvolatile semiconductor storage medium included in the SSD is assumed to be a flash memory (FM).
  • the flash memory is assumed to be a type of flash memory that is read / written in units of pages, typically a NAND flash memory.
  • the flash memory may be another type of flash memory instead of the NAND type.
  • other types of non-volatile semiconductor storage media such as a phase change memory may be employed.
  • SSD controller when the processing is described with “SSD controller” as a subject, the operation is realized by a processor (for example, CPU (Central Processing Unit)) in the SSD controller executing various control programs. Therefore, “SSD controller” may be read as “processor or control program”.
  • management table or the like, but the various information may be expressed in a data structure other than a table. Further, the “management table” can be referred to as “management information” to indicate that it does not depend on the data structure. Further, the process may be described with “program” as the subject.
  • the program is executed by a processor, such as an MP (Micro Processor) or CPU, and performs a predetermined process. Since the processor performs processing while appropriately using storage resources (for example, a memory) and a communication interface device (for example, a communication port), the subject of the processing may be a processor.
  • the processor may have dedicated hardware in addition to the CPU.
  • the computer program may be installed on each computer from a program source.
  • the program source may be provided by, for example, a program distribution server or a storage medium.
  • each element for example, the controller can be identified by a number or the like, but other types of identification information such as a name may be used as long as the information can identify each element.
  • identification information such as a name may be used as long as the information can identify each element.
  • the same reference numerals are given to the same parts.
  • the present invention is not limited to the present embodiment, and any application examples that meet the idea of the present invention can be applied. Included in the scope. Further, unless specifically limited, each component may be plural or singular.
  • FIG. 1 is a diagram showing an outline of the present invention.
  • the SSD 700 is connected to a host device such as the host computer 30 and the storage controller 100 which is a controller of the storage device.
  • the SSD 700 includes an SSD controller 710 for controlling the entire SSD 700 and a plurality of flash memory (FM) chips 780a, 780b, 780c, and 780d.
  • the SSD controller 710 further includes a processor 713, a cache memory 716 for temporarily storing data, a parity operation circuit 718 for executing various parity operations such as XOR (Exclusive OR) and Galois, and an FM for controlling the FM. Controllers 717a, 717b, 717c, and 717d are included.
  • the SSD controller 710 controls the entire SSD 700 by the processor 713 executing various control programs.
  • the FM controllers 717a to 717d include FM command queues 719a to 719d for the processor 713 to queue commands for the FM, and execution information 720a to 720d for storing the command execution status of the FM controllers 717a to 717d. It has been.
  • the execution information 720a to 720d stores the type of command currently being executed for the FM (read / write / erase, etc.), its expected end time, and the like.
  • an erasing command (“EZ” in the figure) is queued in the FM controller 717a, and the command is executed on the FM chip 780a.
  • the execution information 720a stores, by the FM controller 717a, the FM chip 780a currently performing the erasing process when the FM controller 717a executes the erasing process and the expected end time.
  • the FM chips 780a to 780d are used in a RAID 5 configuration.
  • the FM chip 780a stores data 300
  • the FM chip 780b stores data 301
  • the FM chip 780c stores data 302.
  • the FM chip 780d stores a parity 303 generated by performing an XOR operation on the data 300 to 302. Therefore, one piece of data can be regenerated from the remaining data and parity.
  • the data 300 can be regenerated by performing an XOR operation on the data 301, the data 302, and the parity 303.
  • the RAID level may take various levels such as RAID 6 and RAID 1 in addition to RAID 5.
  • the internal operation when the SSD 700 receives a read request for data 300 from the host computer 30 or the storage controller 100 as a host device will be described.
  • the FM chip 780a is executing the erasing process
  • the processor 713 requests the FM controller 717a to read the data 300
  • the read command is waited until the erasing process being executed is completed.
  • the read process by the read command collides with the erase process (access or process conflict), and the read process is awaited, so that the response to the read command is greatly delayed.
  • the processor 713 in order to avoid the above influence (occurrence of response delay), the processor 713 first refers to the execution information 720a to determine whether or not the read command for the data 300 can be immediately executed. (S1). As a result of the reference, it can be seen that the FM chip 780a is currently being erased in the execution information 720a and that immediate access is impossible. Therefore, the processor 713 uses a normal read (hereinafter referred to as normal read) method for acquiring the data 300. Is changed to collection read (S2). The collection read refers to a process for generating data using parity.
  • the processor 713 reads the data 301, the data 302, and the parity 303 from the FM to the cache memory 716, and then inputs them to the parity calculation circuit 718 to generate the data 300.
  • the data 300 obtained in this way is returned to the host device.
  • the processor 713 to the SSD controller 710 performs control so that two or more erase commands are not issued simultaneously to a plurality of FMs constituting a parity group. That is, the processor 713 or the SSD controller 710 issues an erase command to only one FM among a plurality of FMs constituting the parity group, and after the erase command is completed, the erase command is issued to another FM of the parity group. Issue.
  • the SSD controller 710 can select the collection read and avoid the collision in the case where the read command collides with the erasure in the normal read, and can suppress the occurrence of the SSD response delay.
  • FIG. 2 is a diagram illustrating a configuration example of the storage system 10000 including the storage apparatus 10 according to the first embodiment.
  • the storage system 10000 includes a storage device 10 and a host computer 30.
  • the host computer 30 is an example of a host device that uses the storage device 10.
  • the host computer 30 is, for example, an application server.
  • the host computer 30 and the storage apparatus 10 communicate via a SAN (Storage Area Network) 20.
  • SAN Storage Area Network
  • another type of communication network for example, a LAN (Local Area Network)
  • one host computer 30 and one storage device 10 are provided, but at least one of them may be plural.
  • the host computer 30 executes control software (not shown) that issues a control command or the like to the storage apparatus 10, thereby issuing a control command or the like to the storage apparatus 10 for maintenance management.
  • the storage apparatus 10 includes a storage controller 100 and a disk box 110 connected to the storage controller 100.
  • the storage controller 100 controls the operation of the storage device 10.
  • the storage controller 100 includes a communication interface device, a memory, and a control device connected to them.
  • As the communication interface devices there are a host I / F 101 which is a front-end communication interface device and a disk I / F 107 which is a back-end communication interface device.
  • As a control device there is a processor (for example, CPU) 104.
  • the host I / F 101, the cache memory 103, the processor 104, and the disk I / F 107 are connected to the internal network 102 by a dedicated connection bus such as PCI (Peripheral Component Interconnect) (registered trademark), for example. Communication is possible via the internal network 102.
  • the cache memory 103 is connected to the internal network 102 by a dedicated connection bus such as DDR3 (Double Data Rate3).
  • the host I / F 101 is an interface for connecting the storage apparatus 10 to the SAN 20.
  • the internal network 102 is a network for connecting devices existing inside the storage apparatus 10.
  • the internal network 102 includes a switch. Instead of the internal network 102, ASICs (Application Specific Integrated Circuits) having an assist function such as a switch function, DMA (Direct Memory Access) transfer, and RAID calculation may be used.
  • ASICs Application Specific Integrated Circuits
  • DMA Direct Memory Access
  • the processor 104 controls the entire storage apparatus 10. There are a plurality of processors 104. In this case, the plurality of processors 104 can control the storage apparatus 10 in cooperation or sharing.
  • the cache memory 103 is an area for storing computer programs and data necessary for the processor 104 to control the storage apparatus 10.
  • the disk I / F 107 is an interface for connecting the storage controller 100 and the disk box 110.
  • the disk box 110 includes a plurality of different types of drives (for example, non-volatile physical storage media such as the HDD 111 and the SSD 700).
  • a RAID group is composed of the same type of drives. Each RAID group provides a logical volume as a user data storage space.
  • the HDD 111 and the SSD 700 are shown as the disks constituting the disk box 110, they may be configured only by the SSD 700.
  • the SSD 700 may be mounted as a storage medium in the host computer 30 or may be mounted as a cache device. Similarly, the SSD 700 may be connected to the internal network 102 as a part of the cache device of the storage apparatus 10.
  • FIG. 3 is a diagram illustrating a configuration example of the SSD 700.
  • the SSD 700 includes a plurality of flash memory chips 780 and an SSD controller 710 connected thereto.
  • the SSD controller 710 controls the operation of the SSD 700.
  • the SSD controller 710 includes a communication interface device, a memory, a control device connected thereto, and a hardware circuit that executes a parity operation.
  • the parity calculation function may be realized by software by the CPU.
  • a communication interface device there are a disk I / F 711 which is a front-end communication interface device and a flash memory (FM) controller 717 which is a back-end communication interface device.
  • the memory there is a cache memory 716.
  • There is a parity operation circuit as a hardware device that executes the parity operation. Note that the parity calculation function may be realized in software by the processor 713 executing a dedicated program.
  • the disk I / F 711, the processor 713, the cache memory 716, the FM controller 717, and the parity calculation circuit 718 are connected via an internal network 712.
  • the disk I / F 711 is connected to the disk I / F 107 of the storage controller 100 through a dedicated connection bus.
  • the internal network 712 is a network for connecting devices.
  • the internal network 712 may include a switch.
  • the internal network 712 may be replaced by ASICs having a switch function.
  • the processor 713 controls the entire SSD 700.
  • the cache memory 716 is an area for storing computer programs and data necessary for the processor 713 to control the SSD 700.
  • the cache memory 716 manages the logical-physical conversion table 71600 for managing the correspondence between logical addresses and physical addresses, the data cache area 71620 for caching user data, and the number of commands for the die in the flash memory chip 780.
  • the FM controller 717 is an interface for connecting the SSD controller 710 and the flash memory 780.
  • the SSD is a storage medium that includes a plurality of flash memories and a controller that controls them, and the external shape and the like are not limited to form factors.
  • a nonvolatile semiconductor memory such as a NOR type or a NAND type may be used.
  • MRAM Magneticoresistive random access memory
  • ReRAM resistance random access memory
  • FeRAM Feroelectric random access memory
  • Various semiconductor memories may be used.
  • FIG. 4 is a diagram illustrating a configuration example of the FM controller 717 and the FM chip 780.
  • FM chip 780 is constructed from a plurality of dies 781. Further, the die 781 is constructed by a plurality of blocks 782, and the block 782 is constructed by a plurality of pages 783.
  • the minimum unit of read / write in the flash memory is a page
  • the minimum unit of data erasure is a block.
  • a flash memory that has received a command such as read / write / erase transitions to a chip busy state. The time required for the internal processing of the flash memory is called chip busy time. The flash memory cannot process the next command until the chip busy state is completed.
  • the range of influence is die units. For this reason, while a certain die performs reading or writing on a certain page, it is impossible to execute access to other pages in the same die in parallel. Similarly, while erasing one block of a die, erasing another block in the same die cannot be performed.
  • the FM controller 717 has a die control unit 721 for controlling the die 781.
  • the die control unit 721 has a one-to-one correspondence with the die 781, but one die control unit 721 may control a plurality of dies 781.
  • the die control unit 721 includes a command queue 719 for the processor 713 to queue a command for the FM chip 780, and execution information 720 for notifying the processor 713 of information on the command being executed.
  • the command queue 719 includes a normal queue 7191 and a priority queue 7192, and the processor 713 can select a queuing destination according to the priority of the command.
  • the commands queued in the priority queue 7192 are executed before the commands queued in the normal queue 7191.
  • a collection read process can be executed in a short time by providing a policy such as queuing a read command for collection read in the priority queue and queuing other commands in the normal queue.
  • the execution information 720 has a command type 7201 and an expected end time 7202.
  • the command type 7201 the type of command currently being executed (read, write, erase, etc.) is input by the FM controller 717.
  • the FM controller 717 inputs an estimated time at which the command being executed ends. Since the standard value of the chip busy time is determined for each chip, the FM controller 717 can predict the end time by adding the chip busy time to the current time.
  • FIG. 5 is a diagram illustrating a configuration example of a parity group.
  • a parity group is a group of flash memories that form a RAID configuration.
  • the dies 781a, 781c, and 781e belong to the same parity group 800, and further include only the die # 0 controlled by each FM controller (717e, 717f, and 717g).
  • the dies 781b, 781d, and 781f belong to the same parity group 801, and further include only the die of the die # 1 controlled by each FM controller.
  • the dies 781g, 781h, and 781j belong to the same parity group 802, and further include only the die #N controlled by each FM controller.
  • the parity group is configured so that the same die is not shared among a plurality of parity groups.
  • the SSD controller 710 controls so that the total number of erase commands issued to the die within a certain parity group is 1 or less. This means that, for example, in the parity group 800, the total number of erase commands queued in the dies 781a, 781c, and 781e at a certain time becomes 1 or less. This is to ensure that when the normal read collides with the erase command and switches to the collection read, the collection read does not collide with the erase command.
  • FIG. 6 is a diagram illustrating a configuration example of the FM command management table 71630.
  • the FM command management table 71630 includes a parity group # 71631, a die # 71632, a command type 71633, FM controller (FMC) # 0 71634 to FMC # N 71737, and a total value 71638.
  • FMC FM controller
  • Parity group # 71631 is an identifier of a parity group and is a unique number.
  • the die # 71632 is an identifier of a die that forms the parity group.
  • the command type 71633 represents the type of a read / write / erase command queued in the die, and each command has attributes of “normal” and “priority”. “Normal” means the number of commands queued in the normal queue, and “priority” means the number of commands queued in the priority queue.
  • FMC # 0 71634 to FMC # N 71637 indicate the number of command queuing per FM controller.
  • the total value 71638 indicates the total value of the queued commands.
  • parity group # 800 is composed of dies of die # 0 belonging to FMC # 0 to FMC #N.
  • One read command for the normal queue is assigned to FMC # 0 and to FMC # 1. It shows that a total of five, two and two in FMC # N, are queued. Since there is one command queued in the other FMC 71636, the total value 71638 is six.
  • FIG. 7 is a diagram showing a configuration example of the parity group management table 71640.
  • the parity group management table 71640 includes a parity group # 71641, a stripe column # 71642, a type 71642, an FM controller (FMC) # 71644, a die # 71465, a block # 71646, and a page # 71647.
  • FMC FM controller
  • Parity group # 71641 is an identifier of the parity group and is a unique number.
  • a stripe column 71642 indicates a parity protection unit.
  • the type 71643 indicates the type of data and parity belonging to the stripe column.
  • FMC # 71644 to page # 71647 indicate which page of which FMC, which die, which block belongs to which data or page.
  • FIG. 8 is a sequence diagram showing an outline of tasks of the SSD controller 710.
  • the SSD controller 710 checks whether there is a read or write request from the host device (S100). If there is a request (S100: Yes), the SSD controller 710 determines the type (S101). If the type is a write request (S101: write), the SSD controller 710 executes a write process (S101: Yes). S102) (detailed in FIG. 12). Thereafter, the process proceeds to S104. On the other hand, when the determination result in S101 is a read request (S101: Read), the SSD controller 710 executes a read process (S103) (detailed in FIG. 10). Thereafter, the process proceeds to S104. On the other hand, if the determination result in S100 is no request (S100: No), the process proceeds to S104 as it is.
  • the SSD controller 710 determines whether garbage collection is necessary (S104). Since the flash memory is a write-once storage medium, it is necessary to retain a certain amount of erased blocks for writing write data in the SSD. Garbage collection is a process for generating erased blocks. Specifically, the SSD controller 710 generates a block that holds only invalid pages by moving and consolidating the valid pages scattered in the block to another block, and erases the block. Then, a new erased block is generated. When the determination result in S104 indicates that garbage collection is required (S104: Yes), the SSD controller 710 executes garbage collection (S105) (detailed in FIG. 12). Thereafter, the process proceeds to S106. On the other hand, if the determination result in S104 indicates that garbage collection is not required (S104: No), the process proceeds directly to S106.
  • the SSD controller 710 determines whether there is a request to stop the device (SSD700) (S106). When there is an apparatus stop request (S106: Yes), the SSD controller 710 ends a series of processes. On the other hand, when the determination result in S106 is that there is no stop request (S106: No), the SSD controller 710 returns the process to S100 and continues the series of processes.
  • FIG. 9 is a sequence diagram showing an outline of S102 which is the data write process of the SSD controller.
  • the SSD controller 710 stores the write data received from the host device in the cache memory 716 (S200), and notifies the host device of the end of the write process (S201). Next, the SSD controller 710 determines the storage destination parity group when the write data has accumulated to some extent in the cache memory 716 or when a certain time has elapsed since the write data is stored in the cache memory 716, and performs parity operation on the data. Input to the circuit 718 to generate parity data. At this time, the SSD controller 710 updates the parity group management table 71640 (S202).
  • the SSD controller 710 stores data and parity in each page.
  • the SSD controller 710 instructs the FM controller 717 to write data and parity, and after incrementing the number of queuing commands in the FM command management table 71630 (S203), The process ends.
  • FIG. 10 is a sequence diagram showing an overview of S103, which is a data read process of the SSD controller.
  • the SSD controller 710 identifies the access destination page and die from the read command received from the host device (S300), and determines whether the access destination die is executing the erase command or not in the command type 7201 in the execution information 720. (S301). As a result of the determination in S301, when the access destination die is executing the erase command (S301: Yes), the SSD controller 710 refers to the estimated end time 7202 in the execution information 720 until the command being executed ends. It is determined whether it takes a long time (S302). The case requiring a long time is, for example, a case where a time of several ms or more is expected to be completed. Note that the threshold for determination may be set by the user in the SSD according to the intended use. As a result of the determination in S302, when it takes time until the end (S302: Yes), the SSD controller 710 executes the collection read (S303) (detailed in FIG. 11), and ends the series of processes.
  • the SSD The controller 710 performs normal read processing as it is (S304) and ends a series of processing. In S304, the SSD controller 710 instructs the FM controller 717 to read data, and increments the number of queuing commands in the FM command management table 71630.
  • FIG. 11 is a sequence diagram showing an overview of S303, which is the collection read process of the SSD controller.
  • the SSD controller 710 refers to the parity group management table 71640, and instructs the FM controller 717 to read data other than the read target data and parity from the stripe column to which the read target data belongs to the cache memory 716. It is issued to (S400). Note that a read request may be queued in the priority queue 7192 in order to execute this process quickly.
  • the SSD controller 710 increments the number of queuing commands in the FM command management table 71630.
  • the SSD controller 710 inputs the data and parity read to the cache memory 716 to the parity calculation circuit 718, and generates read target data (S401). After the generated read target data is sent to the host device (S402), the SSD controller 710 ends a series of processes.
  • FIG. 12 is a sequence diagram showing an overview of S105, which is the garbage collection process of the SSD controller.
  • the SSD controller 710 confirms whether there is an erasable block (S500). As a result of the determination in S500, if there is no erasable block (S500: No), the process proceeds to S501, and the SSD controller 710 performs a data movement process for generating an erasable block (S501). Thereafter, the process proceeds to S502. On the other hand, if it is determined in S500 that there is an erasable block (S500: Yes), the process proceeds directly to S502.
  • the SSD controller 710 checks whether the total queuing number of erase commands in the parity group to which the erase target block belongs is less than 1 by referring to the FM command management table 71630 (S502). As a result of the determination in S502, if it is determined that the total queuing number of erase commands is less than 1 (S502: Yes), the process proceeds to S503, and the SSD controller 710 sets the block erase command of the parity group to 1 (S503), and a series of processing ends.
  • FIG. 13 is a sequence diagram showing an outline of the task of the FM controller 717.
  • the FM controller 717 selects a die to be processed and checks whether a command is queued in the priority queue of the die (S600). As a result of the determination in S600, if the command is not queued in the priority queue (S600: No), the FM controller 717 checks whether the command is queued in the normal queue (S601). If the command is queued in the priority queue as a result of the determination in S600 (S600: Yes), or if the command is queued in the normal queue as a result of the determination in S601 (S601: Yes), The process proceeds to S602. In step S602, the FM controller 717 executes the queued command and updates the execution information 720.
  • the FM controller 717 registers the execution command type in the command type 7201 and registers the expected end time in the expected end time 7202 (S602). Thereafter, the process proceeds to S603. On the other hand, as a result of the determination in S601, if the command is not queued in the normal queue, the process proceeds to S603 as it is.
  • the FM controller 717 checks the presence / absence of a completed command (S603). If there is an end command as a result of the determination in S603 (S603: Yes), the FM controller 717 performs a command end notification to the SSD controller 710 and clears the execution information 720 (S604). The process proceeds to S605. On the other hand, if the result of determination in S603 is that there is no end command (S603: No), the process proceeds directly to S605. In S605, the FM controller 717 confirms the presence / absence of its own stop request (S605), and if there is a stop request (S605: Yes), the series of processing ends. On the other hand, if there is no request to stop the FM controller 717 in S605, the FM controller 717 selects the next processing target die (S606), returns to S600 as it is, and continues a series of processes.
  • Example 2 In the first embodiment, a case has been described in which the execution information of the FM controller 717 is referred to determine execution of normal reading or correction reading before the SSD controller 710 performs reading.
  • the SSD controller 710 queues a read request to the FM controller 717, a collision occurs if the FM controller 717 is already executing an erasing process on the read target die.
  • the SSD controller 710 switches to the collection read.
  • FIG. 14 is a sequence diagram showing an exchange between the SSD controller 710 and the FM controller 717 in the data read process of the SSD controller according to the second embodiment.
  • the SSD controller 710 identifies the access destination page and die (S700), and performs normal read processing as shown in S304 (S701). Thereafter, the process proceeds to S706.
  • the FM controller 717 receives the read request (S702)
  • the FM controller 717 determines whether the access destination die is executing the erase command and requires time to finish (S703). If the result of the determination in S703 is affirmative (S703: Yes), the FM controller 717 notifies the SSD controller 710 that a collision with the erase command has occurred (S704).
  • the FM controller 717 notifies the SSD controller 710 of queuing OK (S705).
  • the SSD controller 710 checks an answer to the command queuing to the FM controller 717 (S706).
  • the SSD controller 710 executes a collection read process (S707), and ends a series of processes.
  • the SSD controller 710 ends the series of processes as it is.
  • the SSD controller 710 performs control so that the number of erase commands queued in each parity group is 1 or less.
  • the control is realized by the function of the FM controller 717 will be described.
  • the FM controllers 717 work together to control the number of erase commands executed for each parity group to be 1 or less.
  • the SSD controller 710 has an effect that commands can be freely queued to the FM controller 717.
  • FIG. 15 is a diagram illustrating a configuration example of the FM controller 717 according to the third embodiment. The difference from the first and second embodiments is that an erasing execution flag 900 is provided (details will be described with reference to FIG. 16).
  • the erasure in progress flag 900 is used to share information as to which FM controller is executing an erasure command between FM controllers.
  • the FM controller 717 that intends to execute the erasing process refers to this flag to first determine whether another FM controller 717 is already executing the erasing process. If no other FM controller 717 is in the erasing process, the FM controller 717 starts the erasing process (at this time, the FM controller 717 sets the erasing execution flag 900), and the other FM controller 717 performs the erasing process. In the case of the medium, the FM controller 717 postpones the execution of the erasing process. Therefore, the erasing execution flag 900 is shared by all FM controllers 717.
  • FIG. 16 is a diagram showing a configuration example of the erasing execution flag 900.
  • the erasing execution flag 900 includes a parity group # 9001, a die # 9002, and FMC # 0 9003 to FMC # N 9006.
  • Parity group # 9001 is an identifier of a parity group.
  • the die # 9002 is an identifier of a die that constitutes the parity group.
  • FMC # 0 9003 to FMC # N 9006 indicate which FMC is currently executing an erase command. Specifically, an FMC having a value “0” indicates that an erase command is not being executed, and an FMC having a value “1” indicates that an erase command is being executed.
  • parity group # 800 indicates that FMC # 1 is currently executing an erase command
  • parity group # 801 indicates that no FMC is currently executing an erase command
  • parity group # 802 is FMC # 1. 0 indicates that an erase command is currently being executed.
  • FIG. 17 is a sequence diagram showing an outline of tasks of the FM controller 717 according to the third embodiment.
  • the FM controller 717 selects a die to be processed and checks whether a command is queued in the priority queue of the die (S800). If the command is not queued in the priority queue as a result of the determination in S800 (S800: No), the FM controller 717 checks whether the command is queued in the normal queue (S801). If the command is queued in the priority queue as a result of the determination in S600 (S800: Yes), or if the command is queued in the normal queue as a result of the determination in S801 (S801: Yes), The process proceeds to S802. In S802, the FM controller 717 determines whether the command is an erase command (S802).
  • the process proceeds to S803, and the FM controller 717 refers to the erase execution flag 900 to determine whether the erase command can be executed (S803). . If the FM controller 717 determines in S803 that the erase command can be executed, the execution flag of the erase execution flag 900 is set (the value is changed from “0” to “1”) (S804). , The process proceeds to S805. On the other hand, if the FM controller 717 determines in S803 that the erase command cannot be executed, the process proceeds to S806.
  • the FM controller 717 checks whether there is a completed command (S806). If the end command is present as a result of the determination in S806 (S806: Yes), the FM controller 717 determines whether the command is an erase command (S807). If the result of determination in S807 is that the command is an erase command (S807: Yes), the FM controller 717 drops the execution flag of the erase execution flag 900 (changes the value from “1” to “0”). ) (S808), the process proceeds to S810. If the result of the determination in S807 is that the command is not an erase command (S807: No), the FM controller 717 proceeds to S810, performs command completion notification to the SSD controller 710, and clears the execution information 720.
  • S810 the process proceeds to S809.
  • S806 the result of determination in S806 is that there is no end command
  • processing proceeds directly to S809.
  • S809 the presence or absence of a stop request from the FM controller 717 is confirmed (S809). If there is a stop request (S809: Yes), the FM controller 717 ends a series of processes. On the other hand, when there is no stop request of the FM controller 717 in S809 (S809: No), the FM controller 717 selects the next processing target die (S811), the process returns to S800 as it is, and a series of Continue processing.
  • the SSD controller 710 does not need to control the number of erase commands to be queued to the FM controller 717, so that commands can be queued freely regardless of the command type.
  • the third embodiment has an effect that the determination process of S502 can be skipped (the determination is uniformly Yes) in the sequence of FIG.
  • the target of collision avoidance is not limited to the erase command, but may be applied to a write command or the like.
  • the present invention may be applied to avoid collision between an I / O request from a higher-level device and an SSD internal process such as garbage collection.
  • garbage collection is an operation of reading mirrored data from the FM.
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described. Further, a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment. Further, it is possible to add, delete, and replace other configurations for a part of the configuration of each embodiment.
  • Each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files for realizing each function may be stored in a memory, a recording device such as a hard disk or SSD, or a recording medium such as an IC card, SD card, or DVD.
  • a recording device such as a hard disk or SSD
  • a recording medium such as an IC card, SD card, or DVD.
  • control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.

Abstract

An SSD controller uses a plurality of flash memories in a RAID configuration and can generate, by collection using parity, data to be read if a specific flash memory cannot read data instantaneously. A flash memory controller has an interface for notifying the SSD controller of execution information about, for example, which command is currently being executed with respect to a flash memory. The SSD controller, upon receiving a read request from an upper-level device, refers to the execution information of the flash memory controller that controls a flash memory to be read, and, if the flash memory of the access destination is executing a separate command requiring a long time, e.g., an erase process, executes collection read and sends data to be read to the upper-level device.

Description

ストレージ装置Storage device
 本発明は、ストレージ装置の制御に関する。 The present invention relates to storage device control.
 HDD(Hard Disk Drive)に代わる新しい記憶装置として、SSD(Solid State Drive)のような高スループット、低レイテンシを特長とする半導体記憶装置が注目されている。SSDはFlash Memory(以下、FM)を記憶媒体として使用する半導体記憶装置であり、一般的に多くのSSDはNAND型のFMを搭載している。 As a new storage device replacing HDD (Hard Disk Drive), a semiconductor storage device featuring high throughput and low latency such as SSD (Solid State Drive) has been attracting attention. An SSD is a semiconductor storage device that uses a flash memory (hereinafter, FM) as a storage medium. Generally, many SSDs are equipped with a NAND type FM.
 FMは、ページ(Page)と呼ばれる単位でデータのリードやライトを行う。FMはページの上書きが直接出来ないため、既にデータを格納済みのページに新たなデータを格納するには、一度データを消去する必要がある。データの消去は、ブロック(Block)と呼ばれるページの集合体に対して実施される。さらに、FM内にはダイ(Die)と呼ばれるブロックの集合体が構築されている。なお、FMはリードやライト、消去などのコマンドを受領すると、チップビジー時間と呼ばれる一定の処理時間を費やして、FM内部の動作を行う。その間、同一ダイ内の他のページや他のブロックに対するリードやライト、消去などは実行できない。そのため、ダイがあるブロックの消去を行っている最中に、同一ダイの別ブロックのページに対するデータリード要求が発生した場合には、そのリード要求はブロック消去が完了するまで待たされることになる。 FM reads and writes data in units called pages. Since FM cannot directly overwrite a page, in order to store new data in a page where data has already been stored, it is necessary to erase the data once. Data erasure is performed on a collection of pages called a block. Further, a block aggregate called a die is built in the FM. When the FM receives a command such as read, write, or erase, it performs a certain processing time called chip busy time and performs an internal operation of the FM. In the meantime, reading, writing, erasing, etc. to other pages and other blocks in the same die cannot be executed. Therefore, when a data read request for a page of another block of the same die is generated while a block is being erased, the read request is waited until the block erase is completed.
 一般的に、FMのチップビジー時間は、ページリードは0.1ms程度、ページライトは数ms程度であるのに対し、ブロック消去には十数ms程度と非常に長い時間を要する。ゆえに、FMのリード要求に対するレスポンス時間は、ブロック消去とのぶつかりがなければ本来0.1ms程度であるが、ブロック消去処理とぶつかると十数ms程度にまで大幅に遅延することになる。ゆえに、このようなレスポンス特性を有するFMを搭載するSSDも、大幅なレスポンス遅延が発生するリスクを原理的に抱えていることになる。 In general, FM chip busy time is about 0.1 ms for page read and about several ms for page write, whereas block erasing requires a very long time of about several tens of ms. Therefore, the response time to the FM read request is originally about 0.1 ms if there is no conflict with block erasure, but if it collides with the block erase processing, it will be delayed significantly to about a dozen ms. Therefore, an SSD equipped with an FM having such response characteristics also has a risk of causing a significant response delay in principle.
 オンライン取引関係や証券取引関係などのエンタープライズ向けのシステムでは、システムの応答遅延(例えば、入札の指示に対するシステムの応答遅延)が、巨額の損失につながる恐れがあるため、ストレージ装置に対するレスポンス要件に数ms以下の様な、厳しい制約を設けているものがある。このような環境下でSSDを使用するには、消去とのぶつかりによるリードのレスポンス遅延を回避し、SSDの安定した低レスポンスを実現する必要がある。 In enterprise systems such as online trading and securities trading, system response delay (for example, system response delay to bid instructions) can lead to huge losses, so it is a number of response requirements for storage devices Some have severe restrictions such as ms or less. In order to use the SSD in such an environment, it is necessary to avoid a read response delay due to collision with erasure and realize a stable low response of the SSD.
 上記の実現手段として、複数のSSDを搭載したストレージ装置において、SSDをRAID(Redundant Array of Independent(or Inexpensive) Disks)構成で使用し、あるSSDのレスポンスが遅延しそうな時に、コレクションリードを実施することで、ストレージ装置のレスポンス遅延を回避するという技術がある(特許文献1)。なお、コレクションリードとは、RAIDグループ内のあるSSDのデータを、別のSSDで保持しているデータとパリティを用いて生成する処理を指す。 As a means of realizing the above, in a storage device equipped with multiple SSDs, use SSDs in a RAID (Redundant Array of Independent (or Inexpensive) Disks) configuration, and perform a collection read when the response of an SSD is likely to be delayed. Thus, there is a technique for avoiding a response delay of the storage apparatus (Patent Document 1). The collection read refers to a process of generating data of a certain SSD in a RAID group using data and parity held in another SSD.
米国出願第2013/0019057号明細書US application 2013/0019057
 上述のコレクションリード技術をSSD内に適用し、複数のFMをRAID構成で使用すれば、あるFMへのリード要求が内部の消去処理とぶつかった際にコレクションリードを行うことで、別のFMからリード対象のデータを生成できるため、レスポンス遅延を回避することが出来る。しかし、そのためにはコレクションリードの実施の要否を、SSDを制御するコントローラ(以下、SSDコントローラ)が判断せねばならない。そのためには、これからリード要求を発行する先のFM(厳密にはダイ)が、今現在ブロック消去処理を実行しているか否かを、SSDコントローラが把握する必要がある。 If the above-mentioned collection read technology is applied to an SSD and a plurality of FMs are used in a RAID configuration, when a read request to one FM collides with an internal erasing process, a collection read is performed, so that another FM can Since the data to be read can be generated, response delay can be avoided. However, for that purpose, a controller that controls the SSD (hereinafter referred to as an SSD controller) must determine whether or not the collection read is necessary. For this purpose, it is necessary for the SSD controller to know whether or not the FM (strictly speaking, the die) to which the read request will be issued is currently executing the block erase process.
 ただし、一般的なSSDは高いI/O処理性能を実現するために、FMに対して複数個のコマンドを同時にキューイングする仕組みを採用している。そのため、SSDコントローラは、キューイング中のどのコマンドが今現在FMで実行されているかを把握することは難しい。 However, in order to realize high I / O processing performance, a general SSD adopts a mechanism for simultaneously queuing a plurality of commands to the FM. Therefore, it is difficult for the SSD controller to grasp which command being queued is currently being executed by the FM.
 上記課題を解決するために、代表的な本発明のストレージ装置及び半導体記憶装置の一つは、実行中のコマンド種別(リード・ライト・消去など)や、その終了予想時刻などのコマンド実行情報をSSDコントローラに通知するためのインタフェースを設け、FMコントローラはキューイングされたコマンドを実行する時にコマンド実行情報を更新し、SSDコントローラは、FMからデータをリードする際に、事前にアクセス先の実行情報を参照し、リード先のFMが今現在消去中であるかを確認し、リード先のFMが消去中でなければ通常リードを、リード先のFMが消去中の場合はコレクションリードを実行する。 In order to solve the above problems, one of the representative storage devices and semiconductor storage devices of the present invention provides command execution information such as the type of command being executed (read, write, erase, etc.) and the expected end time of the command. An interface for notifying the SSD controller is provided, the FM controller updates the command execution information when executing the queued command, and the SSD controller executes the access destination execution information in advance when reading data from the FM. , It is confirmed whether the read destination FM is currently being erased. If the read destination FM is not being erased, normal read is performed. If the read destination FM is being erased, correction read is performed.
 データ読み出し処理と消去処理との競合による読み出し応答時間の遅延を低減できる。前述以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。 ・ Delay in read response time due to competition between data read processing and erase processing can be reduced. Problems, configurations, and effects other than those described above will become apparent from the following description of embodiments.
図1は、本発明の概要を示す図である。FIG. 1 is a diagram showing an outline of the present invention. 図2は、第1の実施例に係るストレージ装置10を含むストレージシステム10000の構成例を示す図である。FIG. 2 is a diagram illustrating a configuration example of the storage system 10000 including the storage apparatus 10 according to the first embodiment. 図3は、SSD700の構成例を示す図である。FIG. 3 is a diagram illustrating a configuration example of the SSD 700. 図4は、FMコントローラ717およびFMチップ780の構成例を示す図である。FIG. 4 is a diagram illustrating a configuration example of the FM controller 717 and the FM chip 780. 図5は、パリティグループの構成例を示す図である。FIG. 5 is a diagram illustrating a configuration example of a parity group. 図6は、FMコマンド管理テーブル71630の構成例を示す図である。FIG. 6 is a diagram illustrating a configuration example of the FM command management table 71630. 図7は、パリティグループ管理テーブル71640の構成例を示す図である。FIG. 7 is a diagram illustrating a configuration example of the parity group management table 71640. 図8は、SSDコントローラ710のタスクの概要を示すシーケンス図である。FIG. 8 is a sequence diagram showing an outline of tasks of the SSD controller 710. 図9は、SSDコントローラのデータライト処理であるS102の概要を示すシーケンス図である。FIG. 9 is a sequence diagram showing an overview of S102 which is data write processing of the SSD controller. 図10は、SSDコントローラのデータリード処理であるS103の概要を示すシーケンス図である。FIG. 10 is a sequence diagram showing an overview of S103 which is a data read process of the SSD controller. 図11は、SSDコントローラのコレクションリード処理であるS303の概要を示すシーケンス図である。FIG. 11 is a sequence diagram showing an overview of S303, which is the collection read process of the SSD controller. 図12は、SSDコントローラのガベージコレクション処理であるS105の概要を示すシーケンス図である。FIG. 12 is a sequence diagram showing an overview of S105, which is the garbage collection process of the SSD controller. 図13は、FMコントローラ717のタスクの概要を示すシーケンス図である。FIG. 13 is a sequence diagram showing an outline of tasks of the FM controller 717. 図14は、第2の実施例に係るSSDコントローラのデータリード処理において、SSDコントローラ710とFMコントローラ717とのやりとりを表すシーケンス図である。FIG. 14 is a sequence diagram showing the exchange between the SSD controller 710 and the FM controller 717 in the data read process of the SSD controller according to the second embodiment. 図15は、第3の実施例に係るFMコントローラ717の構成例を示す図である。FIG. 15 is a diagram illustrating a configuration example of the FM controller 717 according to the third embodiment. 図16は、消去実行中フラグ900の構成例を示す図である。FIG. 16 is a diagram illustrating a configuration example of the erasing execution flag 900. 図17は、第3の実施例に係るFMコントローラ717のタスクの概要を示すシーケンス図である。FIG. 17 is a sequence diagram illustrating an outline of tasks of the FM controller 717 according to the third embodiment.
 以下、図面を参照しながら実施の形態を説明する。以下の説明では、記憶装置がSSDであるとの前提に基づいた説明を行うが、SSDに含まれる不揮発半導体記憶媒体は、フラッシュメモリ(FM)であるとする。そのフラッシュメモリは、ページ単位でリード/ライトが行われる種類のフラッシュメモリ、典型的にはNAND型のフラッシュメモリであるとする。しかし、フラッシュメモリは、NAND型に代えて他種のフラッシュメモリでもよい。また、フラッシュメモリに代えて、他種の不揮発半導体記憶媒体、例えば相変化メモリなどが採用されてもよい。また、「SSDコントローラ」を主語として処理を説明している場合、その動作は、SSDコントローラ内部のプロセッサ(例えばCPU(Central Processing Unit))が種々の制御用プログラムを実行することで実現される。そのため、「SSDコントローラ」を「プロセッサもしくは制御用プログラム」と読み替えてもよい。 Hereinafter, embodiments will be described with reference to the drawings. In the following description, the description is based on the premise that the storage device is an SSD, but the nonvolatile semiconductor storage medium included in the SSD is assumed to be a flash memory (FM). The flash memory is assumed to be a type of flash memory that is read / written in units of pages, typically a NAND flash memory. However, the flash memory may be another type of flash memory instead of the NAND type. Further, instead of the flash memory, other types of non-volatile semiconductor storage media such as a phase change memory may be employed. Further, when the processing is described with “SSD controller” as a subject, the operation is realized by a processor (for example, CPU (Central Processing Unit)) in the SSD controller executing various control programs. Therefore, “SSD controller” may be read as “processor or control program”.
 なお、「管理テーブル」等の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。また、データ構造に依存しないことを示すために「管理テーブル」を「管理情報」と呼ぶことができる。また、「プログラム」を主語として処理を説明する場合がある。そのプログラムは、プロセッサ、例えば、MP(Micro Processor)やCPUによって実行されるもので、定められた処理をするものである。なお、プロセッサは、適宜に記憶資源(例えばメモリ)及び通信インタフェース装置(例えば、通信ポート)を用いながら処理を行うため、処理の主語がプロセッサとされてもよい。プロセッサは、CPUの他に専用ハードウェアを有していてもよい。コンピュータプログラムは、プログラムソースから各コンピュータにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアなどで提供されるものであってもよい。 Note that various information may be described in terms of “management table” or the like, but the various information may be expressed in a data structure other than a table. Further, the “management table” can be referred to as “management information” to indicate that it does not depend on the data structure. Further, the process may be described with “program” as the subject. The program is executed by a processor, such as an MP (Micro Processor) or CPU, and performs a predetermined process. Since the processor performs processing while appropriately using storage resources (for example, a memory) and a communication interface device (for example, a communication port), the subject of the processing may be a processor. The processor may have dedicated hardware in addition to the CPU. The computer program may be installed on each computer from a program source. The program source may be provided by, for example, a program distribution server or a storage medium.
 また、各要素、例えば、コントローラは番号などで識別可能であるが、各要素を識別可能な情報であれば、名前など他種の識別情報が用いられてもよい。本実施例の図及び説明において同一部分には同一符号を付与しているが、本発明が本実施例に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。また、特に限定しない限り、各構成要素は複数でも単数でも構わない。 In addition, each element, for example, the controller can be identified by a number or the like, but other types of identification information such as a name may be used as long as the information can identify each element. In the drawings and description of the present embodiment, the same reference numerals are given to the same parts. However, the present invention is not limited to the present embodiment, and any application examples that meet the idea of the present invention can be applied. Included in the scope. Further, unless specifically limited, each component may be plural or singular.
 図1は、本発明の概要を示す図である。 FIG. 1 is a diagram showing an outline of the present invention.
 ホストコンピュータ30や、ストレージ装置のコントローラであるストレージコントローラ100などの上位装置にSSD700が接続されている。SSD700は、SSD700全体を制御するためのSSDコントローラ710と、複数のフラッシュメモリ(FM)チップ780a、780b、780c、780dから構成されている。さらにSSDコントローラ710は、プロセッサ713、データを一時的に格納するめのキャッシュメモリ716、XOR(Exclusive OR)やガロアなど種々のパリティ演算を実行するためのパリティ演算回路718、FMを制御するためのFMコントローラ717a、717b、717c、717dを有している。なお、SSDコントローラ710はプロセッサ713が、各種の制御プログラムを実行することで、SSD700全体を制御している。 The SSD 700 is connected to a host device such as the host computer 30 and the storage controller 100 which is a controller of the storage device. The SSD 700 includes an SSD controller 710 for controlling the entire SSD 700 and a plurality of flash memory (FM) chips 780a, 780b, 780c, and 780d. The SSD controller 710 further includes a processor 713, a cache memory 716 for temporarily storing data, a parity operation circuit 718 for executing various parity operations such as XOR (Exclusive OR) and Galois, and an FM for controlling the FM. Controllers 717a, 717b, 717c, and 717d are included. The SSD controller 710 controls the entire SSD 700 by the processor 713 executing various control programs.
 FMコントローラ717a~717d内には、プロセッサ713がFMに対するコマンドをキューイングするためのFMコマンドキュー719a~719dと、FMコントローラ717a~717dのコマンド実行状況を格納するための実行情報720a~720dが備えられている。なお、実行情報720a~720dには、今現在FMに対して実行中のコマンドの種別(リード・ライト・消去など)や、その予想終了時間などが格納される。なお図では、FMコントローラ717aに、消去コマンド(図中の「EZ」)がキューイングされており、さらに、そのコマンドがFMチップ780aに対して実行されている様子を示している。なお、実行情報720aには、FMコントローラ717aが消去処理を実行した際に、今現在FMチップ780aが消去処理を行っていることと、その終了予想時刻が、FMコントローラ717aにより格納されている。 The FM controllers 717a to 717d include FM command queues 719a to 719d for the processor 713 to queue commands for the FM, and execution information 720a to 720d for storing the command execution status of the FM controllers 717a to 717d. It has been. The execution information 720a to 720d stores the type of command currently being executed for the FM (read / write / erase, etc.), its expected end time, and the like. In the figure, an erasing command (“EZ” in the figure) is queued in the FM controller 717a, and the command is executed on the FM chip 780a. The execution information 720a stores, by the FM controller 717a, the FM chip 780a currently performing the erasing process when the FM controller 717a executes the erasing process and the expected end time.
 なお、FMチップ780a~780dは、RAID5の構成で使用されており、FMチップ780aにはデータ300が、FMチップ780bにはデータ301が、FMチップ780cにはデータ302が格納されている。さらに、FMチップ780dにはデータ300~302をXOR演算することで生成されたパリティ303が格納されている。ゆえに、ある一つのデータは、残りのデータとパリティから再生成することが可能である。例えば、データ300は、データ301とデータ302およびパリティ303とをXOR演算することで再生成できる。なお、RAIDレベルは、RAID5以外にもRAID6やRAID1など種々のレベルをとってよい。 The FM chips 780a to 780d are used in a RAID 5 configuration. The FM chip 780a stores data 300, the FM chip 780b stores data 301, and the FM chip 780c stores data 302. Further, the FM chip 780d stores a parity 303 generated by performing an XOR operation on the data 300 to 302. Therefore, one piece of data can be regenerated from the remaining data and parity. For example, the data 300 can be regenerated by performing an XOR operation on the data 301, the data 302, and the parity 303. The RAID level may take various levels such as RAID 6 and RAID 1 in addition to RAID 5.
 以下では、SSD700が上位装置であるホストコンピュータ30や、ストレージコントローラ100から、データ300のリード要求を受け取った際の内部動作を説明する。ただし、FMチップ780aは消去処理を実行中のため、もしプロセッサ713がデータ300のリード要求をFMコントローラ717aに要求した場合には、リードコマンドは実行中の消去処理が終了するまで待たされることになる。すなわち、リードコマンドによるリード処理は消去処理とぶつかること(アクセスまたは処理の競合)で、リード処理が待たされるので、そのリードコマンドのレスポンスは大きく遅延する。 In the following, the internal operation when the SSD 700 receives a read request for data 300 from the host computer 30 or the storage controller 100 as a host device will be described. However, since the FM chip 780a is executing the erasing process, if the processor 713 requests the FM controller 717a to read the data 300, the read command is waited until the erasing process being executed is completed. Become. In other words, the read process by the read command collides with the erase process (access or process conflict), and the read process is awaited, so that the response to the read command is greatly delayed.
 本発明の実施形態では、上記の影響(レスポンス遅延の発生)を回避するため、プロセッサ713がまず、実行情報720aを参照し、データ300に対するリードコマンドが即座に実行可能であるか否かを判断する(S1)。参照の結果、実行情報720aにはFMチップ780aが現在消去中であり、即時アクセスが不可能であることが分かるので、プロセッサ713は、データ300の取得方法を通常のリード(以下、通常リード)からコレクションリードへと変更する(S2)。なお、コレクションリードとは、パリティを用いてデータを生成する処理を指す。そこでプロセッサ713は、データ301、データ302、パリティ303をFMからキャッシュメモリ716へと読み出し、次にそれらをパリティ演算回路718へと入力しデータ300を生成する。このようにして得られたデータ300を上位装置へと返却する。なお、本発明の実施形態では、プロセッサ713ないしSSDコントローラ710は、パリティグループを構成する複数のFMに対し同時に2つ以上の消去コマンドを発行しないように制御する。つまり、プロセッサ713ないしSSDコントローラ710は、パリティグループを構成する複数のFMの内、1つのFMだけに消去コマンドを発行し、その消去コマンドが終了した後、パリティグループの別のFMに消去コマンドを発行する。 In the embodiment of the present invention, in order to avoid the above influence (occurrence of response delay), the processor 713 first refers to the execution information 720a to determine whether or not the read command for the data 300 can be immediately executed. (S1). As a result of the reference, it can be seen that the FM chip 780a is currently being erased in the execution information 720a and that immediate access is impossible. Therefore, the processor 713 uses a normal read (hereinafter referred to as normal read) method for acquiring the data 300. Is changed to collection read (S2). The collection read refers to a process for generating data using parity. Therefore, the processor 713 reads the data 301, the data 302, and the parity 303 from the FM to the cache memory 716, and then inputs them to the parity calculation circuit 718 to generate the data 300. The data 300 obtained in this way is returned to the host device. In the embodiment of the present invention, the processor 713 to the SSD controller 710 performs control so that two or more erase commands are not issued simultaneously to a plurality of FMs constituting a parity group. That is, the processor 713 or the SSD controller 710 issues an erase command to only one FM among a plurality of FMs constituting the parity group, and after the erase command is completed, the erase command is issued to another FM of the parity group. Issue.
 以上の処理によりSSDコントローラ710は、通常リードではリードコマンドが消去とぶつかるケースにおいて、コレクションリードを選択しぶつかりを回避できるため、SSDのレスポンス遅延の発生を抑止することができる。 By the above processing, the SSD controller 710 can select the collection read and avoid the collision in the case where the read command collides with the erasure in the normal read, and can suppress the occurrence of the SSD response delay.
<実施例1>
 図2は、第1の実施例に係るストレージ装置10を含むストレージシステム10000の構成例を示す図である。ストレージシステム10000は、ストレージ装置10、及びホストコンピュータ30を備える。
<Example 1>
FIG. 2 is a diagram illustrating a configuration example of the storage system 10000 including the storage apparatus 10 according to the first embodiment. The storage system 10000 includes a storage device 10 and a host computer 30.
 ホストコンピュータ30は、ストレージ装置10を利用する上位装置の一例である。ホストコンピュータ30は、例えばアプリケーションサーバである。ホストコンピュータ30とストレージ装置10は、SAN(Storage Area Network)20を経由して通信する。SAN20に代えて、他種の通信ネットワーク(例えばLAN(Local Area Network))が採用されてもよい。なお、図では、ホストコンピュータ30及びストレージ装置10がそれぞれ1つであるが、それらのうちの少なくとも一方は複数でもよい。 The host computer 30 is an example of a host device that uses the storage device 10. The host computer 30 is, for example, an application server. The host computer 30 and the storage apparatus 10 communicate via a SAN (Storage Area Network) 20. Instead of the SAN 20, another type of communication network (for example, a LAN (Local Area Network)) may be employed. In the figure, one host computer 30 and one storage device 10 are provided, but at least one of them may be plural.
 ホストコンピュータ30は、ストレージ装置10に対して制御コマンド等を発行する制御ソフトウェア(図示省略)を実行することにより、制御コマンド等をストレージ装置10に発行し保守管理をする。ストレージ装置10は、ストレージコントローラ100と、ストレージコントローラ100に接続されたディスクボックス110とを有する。 The host computer 30 executes control software (not shown) that issues a control command or the like to the storage apparatus 10, thereby issuing a control command or the like to the storage apparatus 10 for maintenance management. The storage apparatus 10 includes a storage controller 100 and a disk box 110 connected to the storage controller 100.
 ストレージコントローラ100は、ストレージ装置10の動作を制御する。ストレージコントローラ100は、通信インタフェースデバイスと、メモリと、それらに接続された制御デバイスとを有する。通信インタフェースデバイスとして、フロントエンドの通信インタフェースデバイスであるホストI/F101と、バックエンドの通信インタフェースデバイスであるディスクI/F107がある。メモリとして、キャッシュメモリ103がある。制御デバイスとして、プロセッサ(例えばCPU)104がある。ホストI/F101と、キャッシュメモリ103と、プロセッサ104と、ディスクI/F107は、例えばPCI(Peripheral Component Interconnect)(登録商標)のような専用の接続バスで、内部ネットワーク102に接続されており、内部ネットワーク102を介して通信可能である。キャッシュメモリ103は、例えばDDR3(Double Data Rate3)のような専用の接続バスで、内部ネットワーク102に接続されている。 The storage controller 100 controls the operation of the storage device 10. The storage controller 100 includes a communication interface device, a memory, and a control device connected to them. As the communication interface devices, there are a host I / F 101 which is a front-end communication interface device and a disk I / F 107 which is a back-end communication interface device. There is a cache memory 103 as a memory. As a control device, there is a processor (for example, CPU) 104. The host I / F 101, the cache memory 103, the processor 104, and the disk I / F 107 are connected to the internal network 102 by a dedicated connection bus such as PCI (Peripheral Component Interconnect) (registered trademark), for example. Communication is possible via the internal network 102. The cache memory 103 is connected to the internal network 102 by a dedicated connection bus such as DDR3 (Double Data Rate3).
 ホストI/F101は、ストレージ装置10がSAN20と接続するためのインタフェースである。内部ネットワーク102は、ストレージ装置10の内部に存在するデバイス同士を接続するためのネットワークである。内部ネットワーク102は、スイッチを含む。内部ネットワーク102に代えて、スイッチ機能やDMA(Direct Memory Access)転送、RAID演算等のアシスト機能を有するASICs(Application Specific Integrated Circuit)を用いてもよい。 The host I / F 101 is an interface for connecting the storage apparatus 10 to the SAN 20. The internal network 102 is a network for connecting devices existing inside the storage apparatus 10. The internal network 102 includes a switch. Instead of the internal network 102, ASICs (Application Specific Integrated Circuits) having an assist function such as a switch function, DMA (Direct Memory Access) transfer, and RAID calculation may be used.
 プロセッサ104は、ストレージ装置10の全体を制御する。プロセッサ104は、複数存在する。この場合、複数のプロセッサ104が協同または分担してストレージ装置10を制御することもできる。キャッシュメモリ103は、プロセッサ104がストレージ装置10を制御するために必要なコンピュータプログラムやデータを記憶する領域である。 The processor 104 controls the entire storage apparatus 10. There are a plurality of processors 104. In this case, the plurality of processors 104 can control the storage apparatus 10 in cooperation or sharing. The cache memory 103 is an area for storing computer programs and data necessary for the processor 104 to control the storage apparatus 10.
 ディスクI/F107は、ストレージコントローラ100とディスクボックス110とを接続するためのインタフェースである。ディスクボックス110は、種類の異なるドライブ(例えば、HDD111、SSD700といった不揮発物理記憶媒体)を複数台備えている。種類の同じドライブでRAIDグループが構成される。そして、各RAIDグループから、ユーザデータの格納空間としての論理ボリュームが提供される。なお、図では、ディスクボックス110を構成するディスクとして、HDD111及びSSD700が示されているが、SSD700のみで構成してもよい。また、SSD700は、ホストコンピュータ30に記憶媒体として搭載されてもよいし、キャッシュ装置として搭載されてもよい。同様に、SSD700は、ストレージ装置10のキャッシュ装置の一部として、内部ネットワーク102に接続されてもよい。 The disk I / F 107 is an interface for connecting the storage controller 100 and the disk box 110. The disk box 110 includes a plurality of different types of drives (for example, non-volatile physical storage media such as the HDD 111 and the SSD 700). A RAID group is composed of the same type of drives. Each RAID group provides a logical volume as a user data storage space. In the figure, although the HDD 111 and the SSD 700 are shown as the disks constituting the disk box 110, they may be configured only by the SSD 700. The SSD 700 may be mounted as a storage medium in the host computer 30 or may be mounted as a cache device. Similarly, the SSD 700 may be connected to the internal network 102 as a part of the cache device of the storage apparatus 10.
 図3は、SSD700の構成例を示す図である。SSD700は、複数のフラッシュメモリチップ780とそれらに接続されたSSDコントローラ710とを有する。SSDコントローラ710は、SSD700の動作を制御する。 FIG. 3 is a diagram illustrating a configuration example of the SSD 700. The SSD 700 includes a plurality of flash memory chips 780 and an SSD controller 710 connected thereto. The SSD controller 710 controls the operation of the SSD 700.
 SSDコントローラ710は、通信インタフェースデバイスと、メモリと、それらに接続された制御デバイス、およびパリティ演算を実行するハードウェア回路とを有する。なお、パリティ演算機能はCPUがソフトウェアで実現してもよい。通信インタフェースデバイスとして、フロントエンドの通信インタフェースデバイスであるディスクI/F711と、バックエンドの通信インタフェースデバイスであるフラッシュメモリ(FM)コントローラ717がある。メモリとして、キャッシュメモリ716がある。制御デバイスとして、プロセッサ713がある。パリティ演算を実行するハードデバイスとして、パリティ演算回路がある。なお、パリティ演算機能は、プロセッサ713が専用のプログラムを実行することで、ソフトウェア的に実現してもよい。ディスクI/F711と、プロセッサ713と、キャッシュメモリ716と、FMコントローラ717と、パリティ演算回路718は、内部ネットワーク712を介してそれぞれ接続されている。 The SSD controller 710 includes a communication interface device, a memory, a control device connected thereto, and a hardware circuit that executes a parity operation. The parity calculation function may be realized by software by the CPU. As a communication interface device, there are a disk I / F 711 which is a front-end communication interface device and a flash memory (FM) controller 717 which is a back-end communication interface device. As the memory, there is a cache memory 716. There is a processor 713 as a control device. There is a parity operation circuit as a hardware device that executes the parity operation. Note that the parity calculation function may be realized in software by the processor 713 executing a dedicated program. The disk I / F 711, the processor 713, the cache memory 716, the FM controller 717, and the parity calculation circuit 718 are connected via an internal network 712.
 ディスクI/F711は、ストレージコントローラ100のディスクI/F107と専用の接続バスで接続されている。内部ネットワーク712は、デバイス同士を接続するためのネットワークである。内部ネットワーク712は、スイッチを含んでもよい。内部ネットワーク712を、スイッチ機能を有したASICsで代用してもよい。プロセッサ713は、SSD700全体を制御する。キャッシュメモリ716は、プロセッサ713がSSD700を制御するために必要なコンピュータプログラムやデータを記憶する領域である。キャッシュメモリ716には、論理アドレスと物理アドレスの対応を管理するための論物変換テーブル71600と、ユーザデータをキャッシュするためのデータキャッシュ領域71620と、フラッシュメモリチップ780内のダイに対するコマンド数を管理するためのFMコマンド管理テーブル71630と、パリティグループを管理するためのパリティグループ管理テーブル71640を有している。FMコントローラ717は、SSDコントローラ710とフラッシュメモリ780とを接続するためのインタフェースである。 The disk I / F 711 is connected to the disk I / F 107 of the storage controller 100 through a dedicated connection bus. The internal network 712 is a network for connecting devices. The internal network 712 may include a switch. The internal network 712 may be replaced by ASICs having a switch function. The processor 713 controls the entire SSD 700. The cache memory 716 is an area for storing computer programs and data necessary for the processor 713 to control the SSD 700. The cache memory 716 manages the logical-physical conversion table 71600 for managing the correspondence between logical addresses and physical addresses, the data cache area 71620 for caching user data, and the number of commands for the die in the flash memory chip 780. An FM command management table 71630 for managing the parity group, and a parity group management table 71640 for managing the parity group. The FM controller 717 is an interface for connecting the SSD controller 710 and the flash memory 780.
 本実施例において、SSDは、複数のフラッシュメモリと、それらを制御するコントローラとを備える記憶媒体であり、外観形状等がフォームファクタに限定されるものではない。また、フラッシュメモリには、NOR型やNAND型といった不揮発性の半導体メモリが使用されてよい。また、フラッシュメモリに代えて、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)や、抵抗変化型メモリであるReRAM(resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等の各種半導体メモリが使用されてもよい。 In this embodiment, the SSD is a storage medium that includes a plurality of flash memories and a controller that controls them, and the external shape and the like are not limited to form factors. For the flash memory, a nonvolatile semiconductor memory such as a NOR type or a NAND type may be used. Instead of flash memory, MRAM (Magnetoresistive random access memory) that is magnetoresistive memory, ReRAM (resistance random access memory) that is resistance change type memory, FeRAM (Ferroelectric random access memory) that is ferroelectric memory, etc. Various semiconductor memories may be used.
 図4は、FMコントローラ717およびFMチップ780の構成例を示す図である。 FIG. 4 is a diagram illustrating a configuration example of the FM controller 717 and the FM chip 780.
 FMチップ780は、複数個のダイ781から構築されている。さらにダイ781は複数個のブロック782より構築されており、ブロック782は複数個のページ783により構築されている。なお、フラッシュメモリにおけるリード・ライトの最小単位はページあり、データ消去の最小単位はブロックである。なお、リード・ライト・消去などのコマンドを受け付けたフラッシュメモリは、チップビジー状態に遷移する。上記、フラッシュメモリの内部処理に要する時間は、チップビジー時間と呼ばれる。なおフラッシュメモリは、チップビジー状態が完了するまで、次のコマンドを処理することは出来ない。その影響範囲はダイ単位である。そのため、あるダイが、あるページに対してリードやライトを実行している間、同一ダイ内の他のページに対するアクセスを並行して実行することはできない。同様に、あるダイのあるブロックに対して消去を行っている間には、同一ダイ内の別のブロックに対する消去は実行できない。 FM chip 780 is constructed from a plurality of dies 781. Further, the die 781 is constructed by a plurality of blocks 782, and the block 782 is constructed by a plurality of pages 783. Note that the minimum unit of read / write in the flash memory is a page, and the minimum unit of data erasure is a block. Note that a flash memory that has received a command such as read / write / erase transitions to a chip busy state. The time required for the internal processing of the flash memory is called chip busy time. The flash memory cannot process the next command until the chip busy state is completed. The range of influence is die units. For this reason, while a certain die performs reading or writing on a certain page, it is impossible to execute access to other pages in the same die in parallel. Similarly, while erasing one block of a die, erasing another block in the same die cannot be performed.
 また、FMコントローラ717は、ダイ781を制御するためのダイ制御部721を有している。ダイ制御部721は、ダイ781と1対1に対応しているが、一つのダイ制御部721が複数のダイ781を制御してもよい。ダイ制御部721は、プロセッサ713がFMチップ780に対するコマンドをキューイングするためのコマンドキュー719と、実行中コマンドの情報をプロセッサ713に通知するための、実行情報720を有する。 Further, the FM controller 717 has a die control unit 721 for controlling the die 781. The die control unit 721 has a one-to-one correspondence with the die 781, but one die control unit 721 may control a plurality of dies 781. The die control unit 721 includes a command queue 719 for the processor 713 to queue a command for the FM chip 780, and execution information 720 for notifying the processor 713 of information on the command being executed.
 コマンドキュー719には、通常キュー7191と優先キュー7192とがあり、プロセッサ713はコマンドの優先度に応じてキューイング先を選択することができる。なお、優先キュー7192にキューイングされているコマンドは、通常キュー7191にキューイングされているコマンドよりも先に実行される。例えば、コレクションリード用のリードコマンドを優先キューに、その他のコマンドを通常キューにキューイングする等のポリシーを設けることで、コレクションリード処理を短時間で実行することが出来る。 The command queue 719 includes a normal queue 7191 and a priority queue 7192, and the processor 713 can select a queuing destination according to the priority of the command. Note that the commands queued in the priority queue 7192 are executed before the commands queued in the normal queue 7191. For example, a collection read process can be executed in a short time by providing a policy such as queuing a read command for collection read in the priority queue and queuing other commands in the normal queue.
 また、実行情報720は、コマンド種別7201と終了予想時刻7202を有している。コマンド種別7201には、今現在実行されているコマンドの種別(リード・ライト・消去など)が、FMコントローラ717により入力される。また、終了予想時刻7202には、実行中のコマンドが終了する予想時刻がFMコントローラ717により入力される。チップビジー時間は、チップ毎に目安の値が決まっているため、FMコントローラ717は現在時刻にチップビジー時間を加算することで、終了時刻を予想することができる。 Also, the execution information 720 has a command type 7201 and an expected end time 7202. As the command type 7201, the type of command currently being executed (read, write, erase, etc.) is input by the FM controller 717. Further, at the estimated end time 7202, the FM controller 717 inputs an estimated time at which the command being executed ends. Since the standard value of the chip busy time is determined for each chip, the FM controller 717 can predict the end time by adding the chip busy time to the current time.
 図5は、パリティグループの構成例を示す図である。 FIG. 5 is a diagram illustrating a configuration example of a parity group.
 パリティグループとは、RAID構成を組むフラッシュメモリをグループ化したものである。図では、ダイ781a、781c、781eは同一のパリティグループ800に属しており、さらに各FMコントローラ(717e、717f、717g)が制御するダイ#0のダイのみで構成されている。同様に、ダイ781b、781d、781fは同一のパリティグループ801に属しており、さらに各FMコントローラが制御するダイ#1のダイのみで構成されている。ダイ781g、781h、781jは同一のパリティグループ802に属しており、さらに各FMコントローラが制御するダイ#Nのダイのみで構成されている。 A parity group is a group of flash memories that form a RAID configuration. In the figure, the dies 781a, 781c, and 781e belong to the same parity group 800, and further include only the die # 0 controlled by each FM controller (717e, 717f, and 717g). Similarly, the dies 781b, 781d, and 781f belong to the same parity group 801, and further include only the die of the die # 1 controlled by each FM controller. The dies 781g, 781h, and 781j belong to the same parity group 802, and further include only the die #N controlled by each FM controller.
 このように本発明の実施形態では、同一のダイが複数のパリティグループ間で共有されないように、パリティグループを構成する。さらに、SSDコントローラ710は、あるパリティグループ内でダイに対して発行する消去コマンドの総数が1以下となるように制御する。これは、例えばパリティグループ800において、ある時点でダイ781a、781c、781eにキューイングされた消去コマンドの総数が1個以下となることを意味している。なぜなら、通常リードが消去コマンドとぶつかり、コレクションリードに切り替えた際に、コレクション用のリードが消去コマンドとぶつからないことを保証するためである。 Thus, in the embodiment of the present invention, the parity group is configured so that the same die is not shared among a plurality of parity groups. Further, the SSD controller 710 controls so that the total number of erase commands issued to the die within a certain parity group is 1 or less. This means that, for example, in the parity group 800, the total number of erase commands queued in the dies 781a, 781c, and 781e at a certain time becomes 1 or less. This is to ensure that when the normal read collides with the erase command and switches to the collection read, the collection read does not collide with the erase command.
 図6は、FMコマンド管理テーブル71630の構成例を示す図である。
 FMコマンド管理テーブル71630は、パリティグループ#71631、ダイ#71632、コマンド種別71633、FMコントローラ(FMC)#0 71634からFMC#N 71637、および合計値71638を有する。
FIG. 6 is a diagram illustrating a configuration example of the FM command management table 71630.
The FM command management table 71630 includes a parity group # 71631, a die # 71632, a command type 71633, FM controller (FMC) # 0 71634 to FMC # N 71737, and a total value 71638.
 パリティグループ#71631は、パリティグループの識別子であり、ユニークな番号である。ダイ#71632は、当該のパリティグループを構成するダイの識別子である。コマンド種別71633は、当該のダイにキューイングされたリード・ライト・消去コマンドの種別を表しており、さらに、各コマンドには「通常」と「優先」の属性を持つ。なお、「通常」は通常キューにキューイングされたコマンド数を、また、「優先」は優先キューにキューイングされたコマンド数をそれぞれ意味する。FMC#0 71634からFMC#N 71637は、FMコントローラあたりのコマンドキューイング数を示す。合計値71638は、キューイングされたコマンドの合計値を示す。 Parity group # 71631 is an identifier of a parity group and is a unique number. The die # 71632 is an identifier of a die that forms the parity group. The command type 71633 represents the type of a read / write / erase command queued in the die, and each command has attributes of “normal” and “priority”. “Normal” means the number of commands queued in the normal queue, and “priority” means the number of commands queued in the priority queue. FMC # 0 71634 to FMC # N 71637 indicate the number of command queuing per FM controller. The total value 71638 indicates the total value of the queued commands.
 例えば図6では、パリティグループ#800は、FMC#0からFMC#Nに属する、ダイ#0のダイより構成されており、通常キューに対するリードコマンドは、FMC#0に1個、FMC#1に2個、FMC#Nに2個の合計5個がキューイングされていることを示している。なお、その他のFMC71636でのキューイングされているコマンドが1個存在するので、合計値71638は6個となる。 For example, in FIG. 6, parity group # 800 is composed of dies of die # 0 belonging to FMC # 0 to FMC #N. One read command for the normal queue is assigned to FMC # 0 and to FMC # 1. It shows that a total of five, two and two in FMC # N, are queued. Since there is one command queued in the other FMC 71636, the total value 71638 is six.
 図7は、パリティグループ管理テーブル71640の構成例を示す図である。 FIG. 7 is a diagram showing a configuration example of the parity group management table 71640.
 パリティグループ管理テーブル71640は、パリティグループ#71641、ストライプ列#71642、種別71643、FMコントローラ(FMC)#71644、ダイ#71465、ブロック#71646、ページ#71647を有する。 The parity group management table 71640 includes a parity group # 71641, a stripe column # 71642, a type 71642, an FM controller (FMC) # 71644, a die # 71465, a block # 71646, and a page # 71647.
 パリティグループ#71641は、パリティグループの識別子であり、ユニークな番号である。ストライプ列71642は、パリティの保護単位を示している。種別71643は、ストライプ列内に属するデータとパリティの種別を示している。FMC#71644からページ#71647は、当該のデータもしくはページが、どのFMCの、どのダイの、どのブロックに属する、どのページであるかを示している。 Parity group # 71641 is an identifier of the parity group and is a unique number. A stripe column 71642 indicates a parity protection unit. The type 71643 indicates the type of data and parity belonging to the stripe column. FMC # 71644 to page # 71647 indicate which page of which FMC, which die, which block belongs to which data or page.
 例えば図7では、パリティグループ#800には、0からNまでのN+1個のストライプ列が存在しており、その中のストライプ列#0には、データ1がFMC#1のダイ#0、ブロック#1内のページ#0に格納されており、データ2がFMC#2のダイ#0、ブロック#13内のページ#0に格納されており、データ1とデータ2から生成されたパリティがFMC#Nのダイ#0、ブロック#N内のページ#0に格納されていること示している。 For example, in FIG. 7, N + 1 stripe columns from 0 to N exist in the parity group # 800, and in the stripe column # 0, the data 1 is the die # 0 of FMC # 1, the block Stored in page # 0 in # 1, data 2 is stored in die # 0 of FMC # 2, page # 0 in block # 13, and the parity generated from data 1 and data 2 is FMC It is stored in die # 0 of #N and page # 0 in block #N.
 図8は、SSDコントローラ710のタスクの概要を示すシーケンス図である。 FIG. 8 is a sequence diagram showing an outline of tasks of the SSD controller 710.
 SSDコントローラ710は、上位装置からのリードやライトの要求の有無をチェックする(S100)。要求有りの場合(S100:Yes)は、SSDコントローラ710が、その種別を判断し(S101)、種別がライト要求である場合(S101:ライト)は、SSDコントローラ710が、ライト処理を実行する(S102)(図12で詳述)。その後、処理はS104へと進む。一方、S101の判定結果がリード要求である場合(S101:リード)は、SSDコントローラ710が、リード処理を実行する(S103)(図10で詳述)。その後、処理はS104へと進む。一方、S100の判定結果が要求無しの場合(S100:No)は、処理がそのままS104へと進む。 The SSD controller 710 checks whether there is a read or write request from the host device (S100). If there is a request (S100: Yes), the SSD controller 710 determines the type (S101). If the type is a write request (S101: write), the SSD controller 710 executes a write process (S101: Yes). S102) (detailed in FIG. 12). Thereafter, the process proceeds to S104. On the other hand, when the determination result in S101 is a read request (S101: Read), the SSD controller 710 executes a read process (S103) (detailed in FIG. 10). Thereafter, the process proceeds to S104. On the other hand, if the determination result in S100 is no request (S100: No), the process proceeds to S104 as it is.
 S104では、SSDコントローラ710が、ガベージコレクションが必要かどうかを判断する(S104)。フラッシュメモリは追記型の記憶媒体であるため、SSD内にはライトデータを書き込む為の消去済みブロックを、一定量保持しておく必要がある。ガベージコレクションは、消去済みブロックを生成するための処理である。具体的には、SSDコントローラ710が、ブロック内に点在する有効ページを別のブロックへ移動し集約することで、無効ページのみを保持するブロックを生成し、そのブロックに対して消去を行うことで、消去済みのブロックを新たに生成する。S104の判定結果がガベージコレクション要の場合(S104:Yes)は、SSDコントローラ710が、ガベージコレクションを実行する(S105)(図12で詳述)。その後、処理はS106へと進む。一方、S104の判定結果が、ガベージコレクション不要の場合(S104:No)は、処理はそのままS106へと進む。 In S104, the SSD controller 710 determines whether garbage collection is necessary (S104). Since the flash memory is a write-once storage medium, it is necessary to retain a certain amount of erased blocks for writing write data in the SSD. Garbage collection is a process for generating erased blocks. Specifically, the SSD controller 710 generates a block that holds only invalid pages by moving and consolidating the valid pages scattered in the block to another block, and erases the block. Then, a new erased block is generated. When the determination result in S104 indicates that garbage collection is required (S104: Yes), the SSD controller 710 executes garbage collection (S105) (detailed in FIG. 12). Thereafter, the process proceeds to S106. On the other hand, if the determination result in S104 indicates that garbage collection is not required (S104: No), the process proceeds directly to S106.
 S106では、SSDコントローラ710が、装置(SSD700)の停止要求の有無を判断する(S106)。装置の停止要求が有りの場合(S106:Yes)は、SSDコントローラ710は、一連の処理を終了する。一方、S106の判定結果が停止要求無しの場合(S106:No)は、SSDコントローラ710は、処理をS100に戻し、一連の処理を継続する。 In S106, the SSD controller 710 determines whether there is a request to stop the device (SSD700) (S106). When there is an apparatus stop request (S106: Yes), the SSD controller 710 ends a series of processes. On the other hand, when the determination result in S106 is that there is no stop request (S106: No), the SSD controller 710 returns the process to S100 and continues the series of processes.
 図9は、SSDコントローラのデータライト処理であるS102の概要を示すシーケンス図である。 FIG. 9 is a sequence diagram showing an outline of S102 which is the data write process of the SSD controller.
 SSDコントローラ710は、上位装置から受領したライトデータをキャッシュメモリ716に格納し(S200)、上位装置に対してライト処理の終了を通知する(S201)。次にSSDコントローラ710は、ライトデータがある程度キャッシュメモリ716内にたまったか、もしくはキャッシュメモリ716に格納してから一定の時間が経過した時点で、格納先のパリティグループを決定し、データをパリティ演算回路718に入力し、パリティデータを生成する。このとき、SSDコントローラ710は、パリティグループ管理テーブル71640の更新を行う(S202)。 The SSD controller 710 stores the write data received from the host device in the cache memory 716 (S200), and notifies the host device of the end of the write process (S201). Next, the SSD controller 710 determines the storage destination parity group when the write data has accumulated to some extent in the cache memory 716 or when a certain time has elapsed since the write data is stored in the cache memory 716, and performs parity operation on the data. Input to the circuit 718 to generate parity data. At this time, the SSD controller 710 updates the parity group management table 71640 (S202).
 次に、SSDコントローラ710は、データとパリティをそれぞれページに格納する。なお、ページの格納に際して、SSDコントローラ710は、FMコントローラ717に対して、データおよびパリティのライトを指示し、加えてFMコマンド管理テーブル71630のキューイングコマンド数をインクリメントしたのち(S203)、一連の処理を終了する。 Next, the SSD controller 710 stores data and parity in each page. When storing the page, the SSD controller 710 instructs the FM controller 717 to write data and parity, and after incrementing the number of queuing commands in the FM command management table 71630 (S203), The process ends.
 図10は、SSDコントローラのデータリード処理であるS103の概要を示すシーケンス図である。 FIG. 10 is a sequence diagram showing an overview of S103, which is a data read process of the SSD controller.
 SSDコントローラ710は、上位装置から受領したリードコマンドから、アクセス先のページとダイを特定し(S300)、アクセス先のダイが消去コマンドを実行中であるかを、実行情報720内のコマンド種別7201を参照することで確認する(S301)。S301の判断の結果、アクセス先のダイが消去コマンドを実行中の場合(S301:Yes)は、SSDコントローラ710は、実行情報720内の終了予想時刻7202を参照し、実行中のコマンドが終了までに長時間を要するかを判断する(S302)。長時間を要するケースとは、例えば終了までに数ms以上の時間経過が見込まれる場合である。なお、判断のための閾値は、ユーザが使用用途に応じてSSDに設定してもよい。S302の判断の結果、終了までに時間を要する場合(S302:Yes)は、SSDコントローラ710はコレクションリードを実行し(S303)(図11で詳述)、一連の処理を終了する。 The SSD controller 710 identifies the access destination page and die from the read command received from the host device (S300), and determines whether the access destination die is executing the erase command or not in the command type 7201 in the execution information 720. (S301). As a result of the determination in S301, when the access destination die is executing the erase command (S301: Yes), the SSD controller 710 refers to the estimated end time 7202 in the execution information 720 until the command being executed ends. It is determined whether it takes a long time (S302). The case requiring a long time is, for example, a case where a time of several ms or more is expected to be completed. Note that the threshold for determination may be set by the user in the SSD according to the intended use. As a result of the determination in S302, when it takes time until the end (S302: Yes), the SSD controller 710 executes the collection read (S303) (detailed in FIG. 11), and ends the series of processes.
 一方、S301の判断の結果、アクセス先のダイが消去コマンドを実行中でない場合(S301:No)や、S302の判断の結果、終了までに時間を要さない場合(S302:No)は、SSDコントローラ710は、そのまま通常のリード処理を行い(S304)、一連の処理を終了する。なお、S304では、SSDコントローラ710は、FMコントローラ717に対して、データリードを指示し、FMコマンド管理テーブル71630のキューイングコマンド数をインクリメントする。 On the other hand, if it is determined in S301 that the access destination die is not executing an erase command (S301: No), or if it is determined in S302 that no time is required until completion (S302: No), the SSD The controller 710 performs normal read processing as it is (S304) and ends a series of processing. In S304, the SSD controller 710 instructs the FM controller 717 to read data, and increments the number of queuing commands in the FM command management table 71630.
 図11は、SSDコントローラのコレクションリード処理であるS303の概要を示すシーケンス図である。 FIG. 11 is a sequence diagram showing an overview of S303, which is the collection read process of the SSD controller.
 SSDコントローラ710は、パリティグループ管理テーブル71640を参照し、リード対象データが所属するストライプ列から、リード対象データ以外のデータと、パリティとをキャッシュメモリ716にリードするための指示を、FMコントローラ717に対して発行する(S400)。なお本処理を迅速に実行するために、リード要求を優先キュー7192にキューイングしてもよい。またSSDコントローラ710は、FMコマンド管理テーブル71630のキューイングコマンド数をインクリメントする。 The SSD controller 710 refers to the parity group management table 71640, and instructs the FM controller 717 to read data other than the read target data and parity from the stripe column to which the read target data belongs to the cache memory 716. It is issued to (S400). Note that a read request may be queued in the priority queue 7192 in order to execute this process quickly. The SSD controller 710 increments the number of queuing commands in the FM command management table 71630.
 次に、SSDコントローラ710は、キャッシュメモリ716にリードした、データとパリティとを、パリティ演算回路718に入力し、リード対象データを生成する(S401)。そして生成したリード対象データを上位装置に送付したのち(S402)、SSDコントローラ710は、一連の処理を終了する。 Next, the SSD controller 710 inputs the data and parity read to the cache memory 716 to the parity calculation circuit 718, and generates read target data (S401). After the generated read target data is sent to the host device (S402), the SSD controller 710 ends a series of processes.
 図12は、SSDコントローラのガベージコレクション処理であるS105の概要を示すシーケンス図である。 FIG. 12 is a sequence diagram showing an overview of S105, which is the garbage collection process of the SSD controller.
 SSDコントローラ710は、消去可能なブロックが存在するかを確認する(S500)。S500の判断の結果、消去可能なブロックが無い場合(S500:No)は、処理がS501へと進み、SSDコントローラ710は、消去可能ブロックを生成するためのデータ移動処理を行い(S501)。その後、処理はS502へと進む。一方、S500の判断の結果、消去可能なブロックが存在する場合(S500:Yes)は、処理がそのままS502へと進む。 The SSD controller 710 confirms whether there is an erasable block (S500). As a result of the determination in S500, if there is no erasable block (S500: No), the process proceeds to S501, and the SSD controller 710 performs a data movement process for generating an erasable block (S501). Thereafter, the process proceeds to S502. On the other hand, if it is determined in S500 that there is an erasable block (S500: Yes), the process proceeds directly to S502.
 S502では、消去対象ブロックが所属するパリティグループ内の、消去コマンドの合計キューイング数が1未満であるかを、SSDコントローラ710は、FMコマンド管理テーブル71630を参照することで確認する(S502)。S502の判断の結果、消去コマンドの合計キューイング数が1未満であると判断した場合(S502:Yes)は、処理はS503に進み、SSDコントローラ710は、当該のパリティグループのブロック消去コマンドを1つキューイングし(S503)、一連の処理を終了する。一方、S502の判断の結果、消去コマンドの合計キューイング数が1以上であると判断した場合には(S502:No)、消去コマンドを新たにキューイングするとコレクションリード時に、消去コマンドとのぶつかりが発生する危険があるため、SSDコントローラ710は、消去コマンドのキューイングは実施せずに、そのまま一連の処理を終了する。 In S502, the SSD controller 710 checks whether the total queuing number of erase commands in the parity group to which the erase target block belongs is less than 1 by referring to the FM command management table 71630 (S502). As a result of the determination in S502, if it is determined that the total queuing number of erase commands is less than 1 (S502: Yes), the process proceeds to S503, and the SSD controller 710 sets the block erase command of the parity group to 1 (S503), and a series of processing ends. On the other hand, as a result of the determination in S502, if it is determined that the total queuing number of erase commands is 1 or more (S502: No), if a new erase command is queued, there will be a collision with the erase command during collection read. Since there is a risk of the occurrence, the SSD controller 710 ends the series of processes as it is without queuing the erase command.
 図13は、FMコントローラ717のタスクの概要を示すシーケンス図である。 FIG. 13 is a sequence diagram showing an outline of the task of the FM controller 717.
 FMコントローラ717は、処理の対象のダイを選択し、そのダイの優先キューにコマンドがキューイングされているかをチェックする(S600)。S600の判断の結果、優先キューにコマンドがキューイングされていない場合(S600:No)は、FMコントローラ717は通常キューにコマンドがキューイングされているかをチェックする(S601)。S600の判断の結果で優先キューにコマンドがキューイングされている場合(S600:Yes)、または、S601の判断の結果で通常キューにコマンドがキューイングされている場合(S601:Yes)には、処理はS602へと進む。S602では、FMコントローラ717は、キューイングされているコマンドの実行と、実行情報720の更新を行う。このとき、FMコントローラ717は、コマンド種別7201へ実行コマンド種別の登録と、終了予想時刻7202へ予想終了時刻の登録を行う(S602)。その後、処理はS603へと進む。一方、S601の判断の結果、通常キューにコマンドがキューイングされていない場合には、処理はそのままS603へと進む。 The FM controller 717 selects a die to be processed and checks whether a command is queued in the priority queue of the die (S600). As a result of the determination in S600, if the command is not queued in the priority queue (S600: No), the FM controller 717 checks whether the command is queued in the normal queue (S601). If the command is queued in the priority queue as a result of the determination in S600 (S600: Yes), or if the command is queued in the normal queue as a result of the determination in S601 (S601: Yes), The process proceeds to S602. In step S602, the FM controller 717 executes the queued command and updates the execution information 720. At this time, the FM controller 717 registers the execution command type in the command type 7201 and registers the expected end time in the expected end time 7202 (S602). Thereafter, the process proceeds to S603. On the other hand, as a result of the determination in S601, if the command is not queued in the normal queue, the process proceeds to S603 as it is.
 S603では、FMコントローラ717は、終了したコマンドの有無をチェックする(S603)。S603の判定の結果、終了コマンドが存在する場合(S603:Yes)には、FMコントローラ717は、SSDコントローラ710に対してコマンドの終了通知と、実行情報720のクリアを行い(S604)、処理がS605へ進む。一方、S603の判定の結果、終了コマンドが存在しない場合(S603:No)には、処理はそのままS605へと進む。S605では、FMコントローラ717は、自身の停止要求の有無を確認し(S605)、停止要求有りの場合(S605:Yes)には、一連の処理を終了する。一方、S605にてFMコントローラ717の停止要求が無い場合には、FMコントローラ717は、次の処理対象ダイを選択し(S606)、そのままS600へと戻って、一連の処理を継続する。 In S603, the FM controller 717 checks the presence / absence of a completed command (S603). If there is an end command as a result of the determination in S603 (S603: Yes), the FM controller 717 performs a command end notification to the SSD controller 710 and clears the execution information 720 (S604). The process proceeds to S605. On the other hand, if the result of determination in S603 is that there is no end command (S603: No), the process proceeds directly to S605. In S605, the FM controller 717 confirms the presence / absence of its own stop request (S605), and if there is a stop request (S605: Yes), the series of processing ends. On the other hand, if there is no request to stop the FM controller 717 in S605, the FM controller 717 selects the next processing target die (S606), returns to S600 as it is, and continues a series of processes.
<実施例2>
 第1の実施例では、SSDコントローラ710がリードを実施する前に、FMコントローラ717の実行情報を参照し、通常リードもしくはコレクションリードの実施を判断するケースを説明した。第2の実施例では、SSDコントローラ710がリード要求をFMコントローラ717に対してキューイングした際に、FMコントローラ717がリード対象のダイに対して既に消去処理を実行中の場合、ぶつかりが発生していることを通知するケースを説明する。そのぶつかり通知を受けて、SSDコントローラ710はコレクションリードに切り替える。
<Example 2>
In the first embodiment, a case has been described in which the execution information of the FM controller 717 is referred to determine execution of normal reading or correction reading before the SSD controller 710 performs reading. In the second embodiment, when the SSD controller 710 queues a read request to the FM controller 717, a collision occurs if the FM controller 717 is already executing an erasing process on the read target die. Explain the case of notifying. Upon receiving the collision notification, the SSD controller 710 switches to the collection read.
 図14は、第2の実施例に係るSSDコントローラのデータリード処理において、SSDコントローラ710とFMコントローラ717とのやりとりを表すシーケンス図である。 FIG. 14 is a sequence diagram showing an exchange between the SSD controller 710 and the FM controller 717 in the data read process of the SSD controller according to the second embodiment.
 SSDコントローラ710は、アクセス先のページとダイとを特定し(S700)、S304に示したような通常リード処理を実施する(S701)。その後、処理はS706へと進む。FMコントローラ717はリード要求を受領すると(S702)、アクセス先のダイが消去コマンドを実行中であり、かつ、終了までに時間を要するかを判断する(S703)。S703の判断の結果が肯定的である場合(S703:Yes)は、FMコントローラ717はSSDコントローラ710に対して消去コマンドとのぶつかりが発生していることを通知する(S704)。 The SSD controller 710 identifies the access destination page and die (S700), and performs normal read processing as shown in S304 (S701). Thereafter, the process proceeds to S706. When the FM controller 717 receives the read request (S702), the FM controller 717 determines whether the access destination die is executing the erase command and requires time to finish (S703). If the result of the determination in S703 is affirmative (S703: Yes), the FM controller 717 notifies the SSD controller 710 that a collision with the erase command has occurred (S704).
 一方、S703の判断の結果が否定的である場合(S703:No)は、FMコントローラ717はSSDコントローラ710に対してキューイングOKを通知する(S705)。S706では、SSDコントローラ710がFMコントローラ717へのコマンドキューイングに対する回答をチェックする(S706)。S706の判断の結果、消去とのぶつかりが発生している場合(S706:Yes)は、SSDコントローラ710はコレクションリード処理を実行し(S707)、一連の処理を終了する。一方、S706の判断の結果、消去とのぶつかりが発生していない場合(S706:No)は、SSDコントローラ710は、そのまま一連の処理を終了する。 On the other hand, when the result of the determination in S703 is negative (S703: No), the FM controller 717 notifies the SSD controller 710 of queuing OK (S705). In S706, the SSD controller 710 checks an answer to the command queuing to the FM controller 717 (S706). As a result of the determination in S706, if a collision with erasure has occurred (S706: Yes), the SSD controller 710 executes a collection read process (S707), and ends a series of processes. On the other hand, as a result of the determination in S706, if there is no collision with erasure (S706: No), the SSD controller 710 ends the series of processes as it is.
<実施例3>
 第1および第2の実施例では、SSDコントローラ710が、各パリティグループにキューイングする消去コマンド数が1以下になるように制御を行っていた。第3の実施例では、その制御をFMコントローラ717の機能により実現するケースについて説明する。具体的にはFMコントローラ717同士が連携して、各パリティグループの消去コマンド実行数が1以下となるように制御する。これにより、SSDコントローラ710はFMコントローラ717に対して、自由にコマンドをキューイングできるという効果を持つ。
<Example 3>
In the first and second embodiments, the SSD controller 710 performs control so that the number of erase commands queued in each parity group is 1 or less. In the third embodiment, a case where the control is realized by the function of the FM controller 717 will be described. Specifically, the FM controllers 717 work together to control the number of erase commands executed for each parity group to be 1 or less. As a result, the SSD controller 710 has an effect that commands can be freely queued to the FM controller 717.
 図15は、第3の実施例に係るFMコントローラ717の構成例を示す図である。第1および第2の実施例との違いは、消去実行中フラグ900を有する点である(詳細は図16で説明)。 FIG. 15 is a diagram illustrating a configuration example of the FM controller 717 according to the third embodiment. The difference from the first and second embodiments is that an erasing execution flag 900 is provided (details will be described with reference to FIG. 16).
 消去実行中フラグ900は、どのFMコントローラが消去コマンドを実行中であるかという情報を、FMコントローラ同士で共有するために使用する。消去処理を実行しようとするFMコントローラ717は、このフラグを参照して、他のFMコントローラ717がすでに消去処理を実施中であるか否かをまず判断する。他のFMコントローラ717が消去処理中でなければ当該のFMコントローラ717は消去処理を開始(このとき、当該のFMコントローラ717は消去実行中フラグ900を立てる)し、他のFMコントローラ717が消去処理中の場合は当該のFMコントローラ717は消去処理の実行を延期する。そのため、消去実行中フラグ900は、全てのFMコントローラ717から共有されている。 The erasure in progress flag 900 is used to share information as to which FM controller is executing an erasure command between FM controllers. The FM controller 717 that intends to execute the erasing process refers to this flag to first determine whether another FM controller 717 is already executing the erasing process. If no other FM controller 717 is in the erasing process, the FM controller 717 starts the erasing process (at this time, the FM controller 717 sets the erasing execution flag 900), and the other FM controller 717 performs the erasing process. In the case of the medium, the FM controller 717 postpones the execution of the erasing process. Therefore, the erasing execution flag 900 is shared by all FM controllers 717.
 図16は、消去実行中フラグ900の構成例を示す図である。 FIG. 16 is a diagram showing a configuration example of the erasing execution flag 900.
 消去実行中フラグ900は、パリティグループ#9001、ダイ#9002、FMC#0 9003からFMC#N 9006を有する。
 パリティグループ#9001は、パリティグループの識別子である。ダイ#9002は、当該のパリティグループを構成するダイの識別子である。FMC#0 9003からFMC#N 9006は、どのFMCが今現在消去コマンドを実行中であるかを示す。具体的には、値が「0」のFMCは消去コマンドを実行していないことを示しており、値が「1」のFMCは消去コマンドを実行中であることを示している。
 図16では、パリティグループ#800はFMC#1が現在消去コマンドを実行中であることを、パリティグループ#801はどのFMCも現在消去コマンドを実行していないことを、パリティグループ#802はFMC#0が現在消去コマンドを実行中であることをそれぞれ示している。
The erasing execution flag 900 includes a parity group # 9001, a die # 9002, and FMC # 0 9003 to FMC # N 9006.
Parity group # 9001 is an identifier of a parity group. The die # 9002 is an identifier of a die that constitutes the parity group. FMC # 0 9003 to FMC # N 9006 indicate which FMC is currently executing an erase command. Specifically, an FMC having a value “0” indicates that an erase command is not being executed, and an FMC having a value “1” indicates that an erase command is being executed.
In FIG. 16, parity group # 800 indicates that FMC # 1 is currently executing an erase command, parity group # 801 indicates that no FMC is currently executing an erase command, and parity group # 802 is FMC # 1. 0 indicates that an erase command is currently being executed.
 図17は、第3の実施例に係るFMコントローラ717のタスクの概要を示すシーケンス図である。 FIG. 17 is a sequence diagram showing an outline of tasks of the FM controller 717 according to the third embodiment.
 FMコントローラ717は、処理の対象のダイを選択し、そのダイの優先キューにコマンドがキューイングされているかをチェックする(S800)。S800の判断の結果、優先キューにコマンドがキューイングされていない場合(S800:No)は、FMコントローラ717は通常キューにコマンドがキューイングされているかをチェックする(S801)。S600の判断の結果で優先キューにコマンドがキューイングされている場合(S800:Yes)、または、S801の判断の結果で通常キューにコマンドがキューイングされている場合(S801:Yes)には、S802へと進む。S802では、FMコントローラ717が、そのコマンドが消去コマンドであるかを判断する(S802)。消去コマンドである場合(S802:Yes)は、処理がS803に進み、FMコントローラ717が、消去実行中フラグ900を参照することで、消去コマンドが実行可能であるか否かを判断する(S803)。S803にて、FMコントローラ717が、消去コマンドを実行可能であると判断した場合には、消去実行中フラグ900の実行フラグを立て(値を「0」から「1」に変更する)(S804)、S805へと進む。一方、S803にて、FMコントローラ717が、消去コマンドを実行できないと判断した場合には、処理がS806へと進む。 The FM controller 717 selects a die to be processed and checks whether a command is queued in the priority queue of the die (S800). If the command is not queued in the priority queue as a result of the determination in S800 (S800: No), the FM controller 717 checks whether the command is queued in the normal queue (S801). If the command is queued in the priority queue as a result of the determination in S600 (S800: Yes), or if the command is queued in the normal queue as a result of the determination in S801 (S801: Yes), The process proceeds to S802. In S802, the FM controller 717 determines whether the command is an erase command (S802). If it is an erase command (S802: Yes), the process proceeds to S803, and the FM controller 717 refers to the erase execution flag 900 to determine whether the erase command can be executed (S803). . If the FM controller 717 determines in S803 that the erase command can be executed, the execution flag of the erase execution flag 900 is set (the value is changed from “0” to “1”) (S804). , The process proceeds to S805. On the other hand, if the FM controller 717 determines in S803 that the erase command cannot be executed, the process proceeds to S806.
 S802の判断の結果、当該のコマンドが消去コマンドでない場合には(S802:No)、処理がS805へ進み、FMコントローラ717は、キューイングされているコマンドの実行と、実行情報720の更新を行う。このとき、FMコントローラ717は、コマンド種別7201へ実行コマンド種別の登録と、終了予想時刻7202へ予想終了時刻の登録を行う(S805)。その後、処理はS806へと進む。一方、S801の判断の結果、通常キューにコマンドがキューイングされていない場合には、処理はそのままS806へと進む。 As a result of the determination in S802, if the command is not an erase command (S802: No), the process proceeds to S805, and the FM controller 717 executes the queued command and updates the execution information 720. . At this time, the FM controller 717 registers the execution command type in the command type 7201 and registers the expected end time in the expected end time 7202 (S805). Thereafter, the process proceeds to S806. On the other hand, as a result of the determination in S801, if the command is not queued in the normal queue, the process proceeds directly to S806.
 S806では、FMコントローラ717が、終了したコマンドの有無をチェックする(S806)。S806の判定の結果、終了コマンドが存在する場合(S806:Yes)には、FMコントローラ717は、そのコマンドが消去コマンドであるかを判断する(S807)。S807の判断の結果、当該のコマンドが消去コマンドである場合(S807:Yes)は、FMコントローラ717は、消去実行中フラグ900の実行フラグを落とし(値を「1」から「0」に変更する)(S808)、S810へ進む。S807の判断の結果、当該のコマンドが消去コマンドで無い場合(S807:No)は、FMコントローラ717はS810へと進み、SSDコントローラ710に対してコマンドの終了通知と、実行情報720のクリアを行い(S810)、S809へ進む。一方、S806の判定の結果、終了コマンドが存在しない場合(S806:No)には、そのままS809へと進む。S809では、FMコントローラ717の停止要求の有無を確認し(S809)、停止要求有りの場合(S809:Yes)には、FMコントローラ717は一連の処理を終了する。一方、S809にてFMコントローラ717の停止要求が無い場合(S809:No)には、FMコントローラ717が、次の処理対象ダイを選択し(S811)、処理はそのままS800へと戻って、一連の処理を継続する。 In S806, the FM controller 717 checks whether there is a completed command (S806). If the end command is present as a result of the determination in S806 (S806: Yes), the FM controller 717 determines whether the command is an erase command (S807). If the result of determination in S807 is that the command is an erase command (S807: Yes), the FM controller 717 drops the execution flag of the erase execution flag 900 (changes the value from “1” to “0”). ) (S808), the process proceeds to S810. If the result of the determination in S807 is that the command is not an erase command (S807: No), the FM controller 717 proceeds to S810, performs command completion notification to the SSD controller 710, and clears the execution information 720. (S810), the process proceeds to S809. On the other hand, if the result of determination in S806 is that there is no end command (S806: No), processing proceeds directly to S809. In S809, the presence or absence of a stop request from the FM controller 717 is confirmed (S809). If there is a stop request (S809: Yes), the FM controller 717 ends a series of processes. On the other hand, when there is no stop request of the FM controller 717 in S809 (S809: No), the FM controller 717 selects the next processing target die (S811), the process returns to S800 as it is, and a series of Continue processing.
 以上の処理により、SSDコントローラ710は、FMコントローラ717にキューイングする消去コマンド数を制御する必要がなくなるため、コマンド種別関わらず自由にコマンドをキューイングできる。これにより第3の実施例では、図12のシーケンスにおいて、S502の判定処理をスキップできる(一律Yes判定となる)という効果を持つ。 By the above processing, the SSD controller 710 does not need to control the number of erase commands to be queued to the FM controller 717, so that commands can be queued freely regardless of the command type. As a result, the third embodiment has an effect that the determination process of S502 can be skipped (the determination is uniformly Yes) in the sequence of FIG.
 以上、本発明の実施形態では、リードコマンドが消去コマンドとぶつかること(アクセス競合の発生)による、レスポンス時間の遅延の影響を軽減することが出来る。なお、ぶつかり回避の対象は、消去コマンドだけに限らず、ライトコマンド等に適用してもよい。さらには、上位装置からのI/O要求と、ガベージコレクションなどのSSD内部の処理とのぶつかり回避に適用してもよい。また、RAID1やRAID10の様な、ミラーリング系のRAIDレベルを採用している場合には、コレクションリード処理はミラーリングされたデータをFMからリードする動作となる。 As described above, in the embodiment of the present invention, it is possible to reduce the influence of response time delay due to the read command colliding with the erase command (occurrence of access conflict). The target of collision avoidance is not limited to the erase command, but may be applied to a write command or the like. Furthermore, the present invention may be applied to avoid collision between an I / O request from a higher-level device and an SSD internal process such as garbage collection. When a mirroring RAID level such as RAID 1 or RAID 10 is adopted, the collection read process is an operation of reading mirrored data from the FM.
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。 In addition, this invention is not limited to the above-mentioned Example, Various modifications are included. The above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described. Further, a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment. Further, it is possible to add, delete, and replace other configurations for a part of the configuration of each embodiment. Each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit. Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
 各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置いてもよい。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。 Information such as programs, tables, and files for realizing each function may be stored in a memory, a recording device such as a hard disk or SSD, or a recording medium such as an IC card, SD card, or DVD. Further, the control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.
 30:ホストコンピュータ、100:ストレージコントローラ、104:プロセッサ、700:SSD、710:SSDコントローラ、713:プロセッサ、717:フラッシュメモリコントローラ、780:フラッシュメモリチップ 30: Host computer, 100: Storage controller, 104: Processor, 700: SSD, 710: SSD controller, 713: Processor, 717: Flash memory controller, 780: Flash memory chip

Claims (12)

  1.  上位装置からのデータを格納するストレージ装置において、
     格納したデータの消去回数に上限がある半導体記憶メモリで構成されたパリティグループを少なくとも1つ以上有する記憶部と、
     前記半導体記憶メモリへのリードコマンド、ライトコマンド及びデータ消去コマンドを処理し、1つ以上のコマンドを格納するコマンドキューを有するメモリコントローラと、
     前記メモリコントローラを含むストレージ装置全体を制御するプロセッサと、
    を備え、
     前記半導体記憶メモリへ実行されるコマンド種別とコマンド処理終了予定時刻を少なくとも含む実行情報を格納するメモリを前記メモリコントローラに設け、
     前記メモリに格納された実行情報を前記プロセッサが読み出し、当該読み出した実行情報に応じて当該メモリを有するメモリコントローラへのコマンドの発行を制御する
     ことを特徴とするストレージ装置。
    In the storage device that stores data from the host device,
    A storage unit having at least one parity group composed of a semiconductor storage memory having an upper limit on the number of times the stored data is erased;
    A memory controller having a command queue for processing a read command, a write command, and a data erasure command to the semiconductor memory and storing one or more commands;
    A processor for controlling the entire storage device including the memory controller;
    With
    A memory for storing execution information including at least a command type to be executed to the semiconductor memory and a command processing scheduled end time is provided in the memory controller;
    The storage apparatus, wherein the processor reads execution information stored in the memory, and controls issue of a command to a memory controller having the memory according to the read execution information.
  2.  請求項1記載のストレージ装置であって、
     データ消去コマンドが実行されている半導体メモリを含むパリティグループへのリードコマンドが前記プロセッサから発行された場合、当該半導体メモリ以外の同一パリティグループに属する別の半導体メモリのメモリコントローラがコレクションリードを行う
     ことを特徴とするストレージ装置。
    The storage device according to claim 1,
    When a read command to a parity group including a semiconductor memory in which a data erasure command is executed is issued from the processor, a memory controller of another semiconductor memory belonging to the same parity group other than the semiconductor memory performs collection read. A storage device.
  3.  請求項2記載のストレージ装置であって、
     前記コマンドキューは、前記コマンドが通常処理されるコマンドを格納する通常キューと優先処理されるコマンドを格納する優先キューとから構成され、
     消去コマンドが実行されている半導体メモリを含むパリティグループへリードコマンドが前記プロセッサから発行された場合は、当該リードコマンドを前記優先キューへ格納する
     ことを特徴とするストレージ装置。
    The storage device according to claim 2,
    The command queue is composed of a normal queue for storing a command for which the command is normally processed and a priority queue for storing a command for which priority processing is performed.
    A storage apparatus, wherein when a read command is issued from the processor to a parity group including a semiconductor memory in which an erase command is executed, the read command is stored in the priority queue.
  4.  請求項1記載のストレージ装置であって、
     前記半導体メモリは、最小のデータ消去単位であるブロックを1つ以上用いて構成されるダイを1つ以上有し、
     前記メモリコントローラは、
     前記ダイ毎に当該ダイへのコマンドの処理を制御するダイ制御部を有し、
     前記ダイ制御部毎に前記コマンドキュー情報と前記実行情報を格納し、
     前記ダイを2つ以上使用しパリティグループを構成し、
     データ消去中のダイを含むパリティグループへのリードコマンドが前記プロセッサから発行された場合、前記ダイ制御部が当該データ消去中のダイ以外のダイからコレクションリードを実行する
     ことを特徴とするストレージ装置。
    The storage device according to claim 1,
    The semiconductor memory has at least one die constituted by using at least one block which is a minimum data erasing unit,
    The memory controller is
    A die control unit that controls processing of commands to the die for each die,
    Store the command queue information and the execution information for each die control unit,
    Use two or more dies to form a parity group,
    When a read command to a parity group including a die whose data is being erased is issued from the processor, the die control unit executes a collection read from a die other than the die whose data is being erased.
  5.  請求項2記載のストレージ装置であって、
     データ消去コマンドが実行されているパリティグループで、
     コマンド処理終了予定時刻までの時間が予め格納された残消去時間の閾値より小さい場合は通常コマンドキューにリードコマンドを格納してコレクションリードでない通常リードを行い、大きい場合は優先コマンドキューにリードコマンドを格納してコレクションリードを行う
     ことを特徴とするストレージ装置。
    The storage device according to claim 2,
    In the parity group where the data erase command is executed,
    If the time until the scheduled command processing end time is smaller than the threshold value of the pre-stored remaining erase time, the read command is stored in the normal command queue and normal read that is not correction read is performed. A storage device that stores and performs collection reads.
  6.  請求項2記載のストレージ装置であって、
     データ消去コマンドが実行されているパリティグループで、消去コマンドが実行されている半導体メモリが2つ以上にならないよう前記メモリコントローラが制御する
     ことを特徴とするストレージ装置。
    The storage device according to claim 2,
    The storage device, wherein the memory controller controls the parity group in which the data erase command is executed so that the number of semiconductor memories in which the erase command is executed is not two or more.
  7.  上位装置からのデータを格納するストレージ装置において、
     格納したデータの消去回数に上限がある半導体記憶メモリで構成されたパリティグループを少なくとも1つ以上有する記憶部と、
     前記半導体記憶メモリへのリードコマンド、ライトコマンド及びデータ消去コマンドを処理し、1つ以上のコマンドを格納するコマンドキューを有するメモリコントローラと、
     前記メモリコントローラを含むストレージ装置全体を制御するプロセッサと、
    を備え、
     前記半導体記憶メモリへ実行されるコマンド種別とコマンド処理終了予定時刻を少なくとも含む実行情報を格納するメモリを前記メモリコントローラに設け、
     消去コマンドが実行されている半導体メモリを含むパリティグループへリードコマンドが前記プロセッサから発行された場合、当該消去コマンドを処理しているメモリコントローラが、消去コマンドとリードコマンドが競合している旨のコマンド競合通知を当該プロセッサに行う
     ことを特徴とするストレージ装置。
    In the storage device that stores data from the host device,
    A storage unit having at least one parity group composed of a semiconductor storage memory having an upper limit on the number of times the stored data is erased;
    A memory controller having a command queue for processing a read command, a write command, and a data erasure command to the semiconductor memory and storing one or more commands;
    A processor for controlling the entire storage device including the memory controller;
    With
    A memory for storing execution information including at least a command type to be executed to the semiconductor memory and a command processing scheduled end time is provided in the memory controller;
    When a read command is issued from the processor to the parity group that includes the semiconductor memory on which the erase command is being executed, the memory controller that processes the erase command indicates that the erase command and the read command are in conflict. A storage device that performs notification of contention to the processor.
  8.  請求項7記載のストレージ装置であって、
     データ消去コマンドが実行されている半導体メモリを含むパリティグループへリードコマンドが前記プロセッサから発行された場合、当該半導体メモリ以外の同一パリティグループに属する別の半導体メモリのメモリコントローラがコレクションリードを行う
     ことを特徴とするストレージ装置。
    The storage apparatus according to claim 7, wherein
    When a read command is issued from the processor to the parity group including the semiconductor memory on which the data erasure command is executed, the memory controller of another semiconductor memory belonging to the same parity group other than the semiconductor memory performs the collection read. A featured storage device.
  9.  請求項8記載のストレージ装置であって、
     前記メモリコントローラは、
     データ消去コマンドが実行されているパリティグループへのリードコマンド処理で、
     データ消去コマンド処理終了予定時刻までの時間が予め格納された残消去時間の閾値より大きい場合は前記コマンド競合通知を、小さい場合は前記コマンドキューへの前記リードコマンドを格納の許可通知を、前記プロセッサに実行する
     ことを特徴とするストレージ装置。
    The storage device according to claim 8, wherein
    The memory controller is
    In the read command processing to the parity group where the data erase command is executed,
    When the time until the scheduled end time of the data erasure command processing is larger than the threshold value of the remaining erasure time stored in advance, the command contention notification is notified. A storage apparatus characterized by being executed.
  10.  上位装置からのデータを格納するストレージ装置において、
     格納したデータの消去回数に上限がある半導体記憶メモリで構成されたパリティグループを少なくとも1つ以上有する記憶部と、
     前記半導体記憶メモリへのリードコマンド、ライトコマンド及びデータ消去コマンドを処理し、当該コマンドを格納するコマンドキューを有するメモリコントローラと、
     前記パリティグループへのデータ消去コマンドの実行情報を格納し前記メモリコントローラで共有する共有メモリと、
     を備え、
     前記メモリコントローラは消去コマンドを実行するパリティグループがデータ消去コマンド処理中であるかを前記共有メモリのデータ消去コマンドの実行情報を参照して判断し、データ消去コマンド処理中であれば、当該データ消去コマンド処理が終了するまで次のデータ消去コマンドを処理しないこと
     ことを特徴とするストレージ装置。
    In the storage device that stores data from the host device,
    A storage unit having at least one parity group composed of a semiconductor storage memory having an upper limit on the number of times the stored data is erased;
    A memory controller having a command queue for processing a read command, a write command, and a data erasure command to the semiconductor memory, and storing the command;
    A shared memory that stores execution information of a data erasure command to the parity group and is shared by the memory controller;
    With
    The memory controller determines whether a parity group that executes an erase command is being processed by a data erase command by referring to the execution information of the data erase command of the shared memory. A storage apparatus characterized in that the next data erasure command is not processed until the command processing is completed.
  11.  請求項10記載のストレージ装置であって、消去コマンドが実行されている半導体メモリを含むパリティグループへリードコマンドが前記プロセッサから発行された場合は、当該半導体メモリ以外の同一パリティグループに属する別の半導体メモリのメモリコントローラがコレクションリードを行う
     ことを特徴とするストレージ装置。
    11. The storage device according to claim 10, wherein when a read command is issued from the processor to a parity group including a semiconductor memory on which an erase command is executed, another semiconductor belonging to the same parity group other than the semiconductor memory A storage device in which a memory controller of a memory performs collection read.
  12.  請求項11記載のストレージ装置であって、
     前記半導体メモリは、最小のデータ消去単位であるブロックを1つ以上用いて構成されるダイを1つ以上有し、
     前記メモリコントローラは、
     前記ダイ毎に当該ダイへのコマンドの処理を制御するダイ制御部を有し、
     前記ダイ制御部毎に前記コマンドキュー情報と前記実行情報を格納し、
     前記ダイを2つ以上使用しパリティグループを構成し、
     データ消去中のダイを含むパリティグループへのリードコマンドが前記プロセッサから発行された場合、前記ダイ制御部が当該データ消去中のダイ以外のダイからコレクションリードを実行する
     ことを特徴とするストレージ装置。
    The storage apparatus according to claim 11, wherein
    The semiconductor memory has at least one die constituted by using at least one block which is a minimum data erasing unit,
    The memory controller is
    A die control unit that controls processing of commands to the die for each die,
    Store the command queue information and the execution information for each die control unit,
    Use two or more dies to form a parity group,
    When a read command to a parity group including a die whose data is being erased is issued from the processor, the die control unit executes a collection read from a die other than the die whose data is being erased.
PCT/JP2014/075680 2014-09-26 2014-09-26 Storage device WO2016046970A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/075680 WO2016046970A1 (en) 2014-09-26 2014-09-26 Storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/075680 WO2016046970A1 (en) 2014-09-26 2014-09-26 Storage device

Publications (1)

Publication Number Publication Date
WO2016046970A1 true WO2016046970A1 (en) 2016-03-31

Family

ID=55580529

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/075680 WO2016046970A1 (en) 2014-09-26 2014-09-26 Storage device

Country Status (1)

Country Link
WO (1) WO2016046970A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107145311A (en) * 2017-06-12 2017-09-08 郑州云海信息技术有限公司 A kind of I/O data processing method and system
US10528464B2 (en) 2016-11-04 2020-01-07 Toshiba Memory Corporation Memory system and control method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11191037A (en) * 1997-12-26 1999-07-13 Hitachi Ltd Data storage
US7945752B1 (en) * 2008-03-27 2011-05-17 Netapp, Inc. Method and apparatus for achieving consistent read latency from an array of solid-state storage devices
US20130019057A1 (en) * 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
JP2013200692A (en) * 2012-03-23 2013-10-03 Toshiba Corp Memory system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11191037A (en) * 1997-12-26 1999-07-13 Hitachi Ltd Data storage
US7945752B1 (en) * 2008-03-27 2011-05-17 Netapp, Inc. Method and apparatus for achieving consistent read latency from an array of solid-state storage devices
US20130019057A1 (en) * 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
JP2013200692A (en) * 2012-03-23 2013-10-03 Toshiba Corp Memory system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528464B2 (en) 2016-11-04 2020-01-07 Toshiba Memory Corporation Memory system and control method
CN107145311A (en) * 2017-06-12 2017-09-08 郑州云海信息技术有限公司 A kind of I/O data processing method and system
CN107145311B (en) * 2017-06-12 2020-06-19 苏州浪潮智能科技有限公司 IO data processing method and system

Similar Documents

Publication Publication Date Title
US9652156B2 (en) Host read command return reordering based on time estimation of flash read command completion
CN108292196B (en) Data writing method, device and computer readable storage medium
US10725865B2 (en) Storage unit and storage device
US9021178B2 (en) High performance path for command processing
US8380922B1 (en) Data storage device comprising host interface state machine blocking on target logical block address
US11720283B2 (en) Coherent access to persistent memory region range
US9098209B2 (en) Communication via a memory interface
US20150081967A1 (en) Management of storage read requests
KR20140013098A (en) Apparatus including memory system controllers and related methods
CN110895448B (en) Apparatus and method for managing valid data in a memory system
KR20140012175A (en) Apparatus including memory system controllers and related methods
JP2012137885A (en) Data storage device, memory control device and memory control method
US10901626B1 (en) Storage device
US20120221771A1 (en) Data storage system and data mapping method of the same
US20180157414A1 (en) Storage device and control method of the same
JP2009163647A (en) Disk array device
US20210263798A1 (en) Raid storage-device-assisted parity update data storage system
US11163501B2 (en) Raid storage multi-step command system
JP5987498B2 (en) Storage virtualization apparatus, storage virtualization method, and storage virtualization program
US10592113B2 (en) Method for transferring command from host to device controller and system using the same
TW201447750A (en) Coalescing memory access requests
WO2016046970A1 (en) Storage device
CN111356991A (en) Logical block addressing range conflict crawler
US11269559B2 (en) Data processing device
US20210191884A1 (en) Storage controller managing completion timing, and operating method thereof

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: 14902452

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14902452

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP