WO2015145552A1 - 不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置 - Google Patents

不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置 Download PDF

Info

Publication number
WO2015145552A1
WO2015145552A1 PCT/JP2014/058134 JP2014058134W WO2015145552A1 WO 2015145552 A1 WO2015145552 A1 WO 2015145552A1 JP 2014058134 W JP2014058134 W JP 2014058134W WO 2015145552 A1 WO2015145552 A1 WO 2015145552A1
Authority
WO
WIPO (PCT)
Prior art keywords
read
option
memory
lead
memory area
Prior art date
Application number
PCT/JP2014/058134
Other languages
English (en)
French (fr)
Inventor
芳弘 及川
洋志 平山
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/058134 priority Critical patent/WO2015145552A1/ja
Priority to US15/122,669 priority patent/US9898201B2/en
Publication of WO2015145552A1 publication Critical patent/WO2015145552A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Definitions

  • the present invention generally relates to reading data from non-volatile memory.
  • Non-volatile memory device for example, a flash memory device having a plurality of chips (flash memory chips) is known. If the chip is miniaturized, the error rate tends to be high, and therefore the frequency of read retries tends to be high.
  • a technique relating to read retry is disclosed in Patent Document 1. According to Patent Document 1, a reference value for the number of read retries is set for each chip. If the number of read retries does not exceed the reference value for the read source chip, normal read is performed, and the read for the read source chip is read. If the number of retries exceeds the reference value, the retry read is performed at the voltage Vth that can be read by the last read retry.
  • a read option for example, a number
  • the flash memory device performs reading with the selected read option (strictly, the read method corresponding to the selected read option).
  • a read method for example, there is a change in the voltage Vth.
  • the non-volatile memory device has a non-volatile memory and a memory controller that reads the non-volatile memory using a read option.
  • the nonvolatile memory includes a plurality of memory area units (for example, dies described later), and each memory area unit includes a plurality of memory areas (for example, physical pages).
  • the memory controller holds management information in which a read option is recorded for each memory area unit that is a unit larger than the memory area that is a read unit.
  • the memory controller specifies a memory area unit including the read source memory area, selects a read option corresponding to the specified memory area unit, and executes a read on the read source memory area using the selected read option.
  • the read option corresponding to the memory area unit including the read source memory area in the non-volatile memory is selected, and the read is executed using the selected read option.
  • the frequency of occurrence of read retries can be reduced, thereby reducing the reduction in read performance.
  • Example 1 The outline
  • the structural example of FMPK30 is shown. 2 shows a configuration example of a storage apparatus according to the first embodiment. The connection of FM I / F46 and NAND-FM33 is shown. The structure of the FM chip 403 is shown. The structure of the successful read count management information 452 is shown. An example of read success count statistics is shown. An example of subtraction and addition of the number of successful reads is shown. 5 shows a flow of read processing according to Embodiment 1. Details of the processing of S901 of FIG. 9 are shown. An example of a condition judgment rule is shown. Details of the processing of S906 of FIG. 9 are shown. The structure of the structure table 256 is shown. The structure of the command used for the setting of the RR threshold is shown.
  • the RR threshold value setting screen is shown.
  • An example of the flow of processing performed by the RAID control program 251 is shown.
  • the flow of a 1st RR threshold value setting process is shown.
  • the process which FM control program 442 performs in FMPK30 is shown.
  • the structure of the flash device configuration information 443 is shown.
  • the structure of the RAID management table 254 is shown.
  • the structure of the blockage management table 255 is shown.
  • An example of a check response is shown.
  • An example of a special read request is shown.
  • FIG. 10 is a schematic diagram showing that a read mode specified by a special read request is prioritized over a read mode set by a mode select command.
  • count of having received the check response from the same FMPK30 reaches predetermined number is shown.
  • An example of the information showing whether additional retry is permitted for every combination of a RAID level and the blockage FMPK number is shown.
  • the flow of special read request generation processing is shown.
  • count of having received the check response from the same FMPK30 reaches predetermined number is shown.
  • An example of a branch indicating which of the processes shown in FIGS. 25 and 28 is executed is shown.
  • a flow of processing performed by the FM controller 32 of the FMPK 30 that has received the command is shown.
  • count of having received the check response from the same FMPK30 reaches predetermined number is shown.
  • the structure of the read command is shown.
  • the structure of an enqueue destination determination table is shown.
  • the structure of the 1st execution restriction table 3600 is shown.
  • the structure of the unit price table 3700 is shown.
  • the structure of the second execution restriction table 3800 is shown.
  • the structure of the accumulation counter table 3900 is shown.
  • An example of the enqueue control process of a synchronous RD command is shown.
  • summary of Example 2 is shown.
  • the structure of environment / option simple management information 4501 is shown.
  • 9 shows a flow of read processing according to the second embodiment.
  • kkk table or “kkk queue”, but the various types of information may be expressed using a data structure other than the table.
  • At least one of “kkk table” and “kkk queue” can be referred to as “kkk information” to indicate that it does not depend on the data structure.
  • identification numbers are used as identification information for various objects, but types of identification information other than identification numbers (for example, identifiers including alphabetic characters and codes) can also be used.
  • the process may be described with “program” as the subject, but the program is executed by a processor (for example, a CPU (Central Processing Unit)) so that a predetermined process can be appropriately performed.
  • a processor for example, a CPU (Central Processing Unit)
  • the subject of processing may be a processor (or a device such as a controller having the processor).
  • a process whose subject is a processor can be interpreted as being executed by executing one or more programs.
  • the processor may include a hardware circuit that performs part or all of the processing performed by the processor.
  • the computer program may be installed on each computer from a program source.
  • the program source may be, for example, a program distribution server or a storage medium.
  • the communication interface device may be abbreviated as “I / F”.
  • a flash memory device having a flash memory (hereinafter referred to as “FMPK” for short) is taken as an example of a nonvolatile memory device having a nonvolatile memory.
  • FMPK flash memory device having a flash memory
  • Other types of nonvolatile memory for example, MRAM (Magnetoresistive Random Access Memory) which is magnetoresistive memory, ReRAM (Resistance Random Access Memory) which is resistance change type memory, or FeRAM (Ferroelectric Random Access Memory) which is ferroelectric memory It is also possible to employ a nonvolatile memory device having a semiconductor memory).
  • the FMPK receives commands from the host device and executes processing.
  • the read command is referred to as “read request” and the write command is referred to as “write request”.
  • a read command issued in the FMPK is called a “read command”
  • a write command is called a “write command”.
  • FIG. 1 shows an outline of the first embodiment.
  • a flash memory package (hereinafter referred to as FMPK) 30 includes a NAND flash memory (hereinafter referred to as NAND-FM) 33 and a flash memory controller (hereinafter referred to as FM controller) 32 connected to the NAND-FM 33.
  • the FM controller 32 performs a read process in response to a read request from an upper apparatus (not shown) of the FMPK 30 or as part of an internal process that is performed independently (asynchronously) with a command from the upper apparatus.
  • the FM controller 32 executes a read process in response to a read request from the host device, the FM controller 32 sends a response including data read by the read process (a response including read target data according to the read request). The data is transmitted to the host device.
  • the FM controller 32 reads the NAND-FM 33 using a read option in the read process.
  • the FM controller 32 can manage the read success count statistics (for example, information indicating the relationship between the read option and the read success count) for each read environment, and can update the read success count statistics for each successful read.
  • the lead environment is defined by a combination of attribute values of a plurality (or one) of lead influence attributes (attributes defined as being able to influence the success or failure of the lead).
  • “success in reading” means that all error bits of the read data can be corrected (for example, correction can be made by ECC (Error Correcting Code)), and “read failure” The data could not be read (ie, the read data had so many error bits that it was not possible to correct all the error bits).
  • ECC Error Correcting Code
  • the FM controller 32 When reading from the NAND-FM 33, the FM controller 32 uses a read success count statistic corresponding to the read environment to which the read source area belongs, and a likely read option (typically a read option corresponding to the maximum read success count). ) And execute a read using the selected lead option.
  • the FM controller 32 each time the FM controller 32 reads from the NAND-FM 33, it selects a likely read option based on the read success count statistics of the read environment to which the read source area belongs, and reads according to the selected read option. Execute. For this reason, the frequency of occurrence of read retries can be reduced, thereby reducing the decrease in read performance.
  • FIG. 2 shows a configuration example of the FMPK30.
  • the FMPK 30 includes a NOR flash memory (hereinafter referred to as NOR-FM) 31, an FM controller 32, and a NAND-FM 33.
  • NOR-FM NOR flash memory
  • FM controller 32 FM controller
  • NAND-FM 33 NAND-FM
  • the NOR-FM 31 stores at least one of a program executed by the CPU 42 and information used by the CPU 42.
  • the NAND-FM 33 includes one or more NAND-FM chips.
  • the NAND-FM chip may be an SLC (Single Level Cell) type or an MLC (Multi Level Cell) type.
  • the NAND-FM 33 stores data in accordance with a write command issued by the FM controller 32 that has received a write request from the host device 20.
  • the FM controller 32 includes a CPU 42, a SAS (Serial Attached SCSI) I / F 41, a bus switch 43, a memory I / F 47, a low speed memory 45, a high speed memory 44, and an FM I / F 46.
  • SAS Serial Attached SCSI
  • the SAS I / F 41 is a communication interface device connected to the host device 20 and mediates data communication between the host device 20 and the part on the bus switch 43 side.
  • the SAS I / F 41 performs data communication with the host device 20 according to the SAS.
  • the host device 20 is a storage controller described later, but may be a computer such as a PC (Personal Computer) instead of the storage controller.
  • the bus switch 43 is connected to the CPU 42, the SAS I / F 41, the memory I / F 47, and the FM I / F 46, and relays data between these parts.
  • the memory I / F 47 is a communication interface device connected to the low-speed memory 45, and controls data input / output with respect to the low-speed memory 45.
  • the low-speed memory 45 is, for example, a DRAM (Dynamic Random Access Memory) or a nonvolatile memory, and stores various data used for processing by the CPU 42.
  • the low-speed memory 45 stores FM (flash memory) management information 451 and successful read count management information 452.
  • FM management information 451 stores information necessary for management of the NAND-FM 33.
  • the successful read count management information 452 is set and referenced from the flash memory control program 442, and holds the number of successful reads based on the management unit in the FMPK 30.
  • the management unit in the FMPK 30 will be described later.
  • the high-speed memory 44 is, for example, an SRAM (Static Random Access Memory) and is directly connected to the CPU 42.
  • the high speed memory 44 stores a program executed by the CPU 42.
  • the high-speed memory 44 stores a flash memory control program (hereinafter, FM control program) 442 and flash device configuration information 443.
  • the FM control program 442 performs control to receive and execute a command from the host device 20. Further, the FM control program 442 executes various processes related to the NAND-FM 33.
  • the flash device configuration information 443 includes a mode parameter and an RR threshold value (read retry count threshold value) set by the CPU 42 in response to an instruction from the host device (storage controller) 20.
  • FM I / F 46 is a communication interface device connected to NAND-FM 33 and controls data input / output to / from NAND-FM 33.
  • the configuration of FMPK30 is not limited to the configuration of FIG.
  • the NOR-FM 31 may not be provided, and the program or information in the NOR-FM 31 may be stored in at least one of the high speed memory 44 and the low speed memory 45.
  • one or more memories having the same performance may be employed instead of a plurality of memories having different performance such as the high speed memory 44 and the low speed memory 45.
  • FIG. 3 shows a configuration example of the storage apparatus according to the first embodiment.
  • the storage device 300 includes a storage controller 20 as an example of the host device 20, an FMPK 30, a SAS-HDD 302, and a SATA (Serial ATA) -HDD 301. At least one of the FMPK 30, the SAS-HDD 302, and the SATA-HDD 301 may be one or more.
  • a RAID (Redundant Array of Independent (or Inexpensive) Disks) group composed of a plurality of FMPKs 30, a RAID group composed of a plurality of SAS-HDDs 302, and a RAID composed of a plurality of SATA-HDDs 301.
  • RAID Redundant Array of Independent (or Inexpensive) Disks
  • the storage controller 20 includes a host I / F 21, a RAID control unit 22, a management I / F 25, and a back-end interface device (back-end I / F) 24.
  • the host I / F 21 is a communication interface device that mediates data exchange between the host computer (hereinafter referred to as host) 10 and the storage controller 20.
  • the host 10 inputs and outputs data used for processing to the storage controller 20.
  • the management I / F 25 is a communication interface device that mediates exchange of data with the management terminal 70.
  • the management terminal 70 is a computer and includes an input unit (for example, a keyboard and a pointing device) (not shown) that receives input from the administrator, and an output unit that outputs (typically displays) information to the administrator. (For example, a display device) (not shown).
  • the back end I / F 24 mediates data exchange with PDEVs such as the FMPK 30, the SAS-HDD 302, and the SATA-HDD 301.
  • the back end I / F 24 includes a SAS controller 241 and a SAS expander (hereinafter, expander) 242.
  • the expander 242 is an example of a switch device, can be connected to a plurality of PDEVs (30, 301, and 302), and mediates data exchange between the SAS controller 241 and the PDEV.
  • the SAS controller 241 performs data communication with the PDEV according to the SAS.
  • the RAID control unit 22 performs control for accessing the PDEV from the host 10.
  • the RAID control unit 22 includes a CPU 221, a cache memory 222, a timer 223, and a memory 224.
  • the cache memory 222 caches data input / output to / from the PDEV.
  • the timer 223 measures the passage of time.
  • the CPU 221 executes various processes using programs and data stored in the memory 224.
  • the memory 224 stores a program executed by the CPU 221 and data used by the CPU 221. Specifically, the memory 224 stores a RAID control program 251, a RAID management table 254, a blockage management table 255, and a configuration table 256.
  • the RAID control program 251 performs RAID control for the RAID group based on the RAID management table 254. Also, the RAID control program 251 refers to the block management table 255, and if there is a RAID group including the blocked FMPK 30, configures the RAID group with the number of retries according to the number of blocked FMPKs 30. Notify FMPK30.
  • the RAID control program 251 communicates with the management terminal 70. Further, the RAID control program 251 sets the retry count limit parameter of the FMPK 30 in accordance with system operation regulations.
  • the RAID control program 251 receives a command issue request from the RAID control program 251 and issues a command to the FMPK 30 via the back-end I / F 24 according to the request.
  • the RAID management table 254 is a table having information on the configuration of the RAID group.
  • the blockage management table 255 is a table having information indicating the state (normal or blocked) of the FMPK 30 constituting the RAID group.
  • the configuration table 256 is a table having numerical values (for example, the number of retries) for determining the operation of the storage controller 20.
  • the storage controller 20 and the PDEV communicate according to the SAS protocol, but the storage controller and the PDEV may communicate with each other using a protocol other than SAS (for example, PCIe (PCI-Express)).
  • a protocol other than SAS for example, PCIe (PCI-Express)
  • FIG. 4 shows the connection between the FM I / F 46 and the NAND-FM 33.
  • the NAND-FM 33 includes a plurality of NAND-FM chips (hereinafter referred to as FM chips) 403.
  • a plurality of flash memory access buses (hereinafter referred to as FM buses) 402 are connected to the FM I / F 46.
  • a plurality of FM chip groups 405 are connected to the plurality of FM buses 402, respectively.
  • Each FM chip group 405 includes two or more (or one) FM chips 403.
  • a plurality of FM chips 403 connected to different FM buses 402 are connected to the same CE (chip enable) line. The die can be activated by the CE signal flowing through the CE line.
  • the FM I / F 46 can access a desired FM chip 403 by selecting an FM bus number and a CE line number.
  • FIG. 5 shows the configuration of the FM chip 403.
  • the FM chip 403 is composed of first and second dies 501.
  • Each die 501 is composed of first and second planes 502.
  • Each plane 502 includes a plurality of blocks (physical blocks) 503, and each block 503 includes a plurality of pages (physical pages) 504.
  • data is input / output in units of pages, and data is erased in units of blocks.
  • the first plane 502 may include odd blocks (odd numbered blocks), and the second plane 502 may include even blocks (even numbered blocks).
  • Each block 503 includes two types of LSB (Least Significant bit / byte) pages (LSB1 page, LSB2 page) and two types of MSB (Most Significant bit / byte) pages (MSB1 page, MSB2 page).
  • Each page 504 is one of the above four types of pages.
  • the block configuration in FIG. 5 is an example, and the block configuration may depend on at least one of a chip and a manufacturer. There may be one type of LSB page or three or more types of pages. Similarly, there may be one type of MSB page or three or more types of MSB pages.
  • each FM chip, die, plane, block, and page is one management unit of the NAND-FM 33.
  • At least one of the number of dies included in one FM chip 403 and the number of planes included in each die is not limited to the above. Further, there is not necessarily a management unit such as a die and a plane.
  • FIG. 6 shows the configuration of the successful read count management information 452.
  • the read success count management information 452 has a success counter for each read option for each of a plurality of read environments.
  • the success counter represents the number of successful reads (reads from the NAND-FM 33) in the read environment and read option corresponding to the success counter.
  • Lead environment is defined by a plurality of attribute values respectively corresponding to a plurality (or one) of lead influence attributes.
  • “Lead influence attribute” is an attribute defined as being able to influence the success or failure of a lead.
  • the read influence attribute for example, the number of PEs (the number of times data is erased), the elapsed time (the time that has elapsed since the data was written to the first page of the block), the FM bus number (which FM bus is used for the read), CE number (which CE line leads from the selected FM chip), die number (which die 501 is the lead), plane number (which plane 502 is the lead), and , There is a page type (which page type corresponds to the lead). When the page type (MSB / LSB) is different, the characteristics of the page are generally different. Therefore, the difference in the page type can affect the success or failure of the read.
  • differences in the number of PEs, elapsed time, FM bus, CE line, die, and plane can also affect the success or failure of the read.
  • another type of lead influence attribute for example, at least one of temperature and process variation degree may be employed.
  • the read success count management information 452 further includes a selection option number, a MAX counter, and a MAX option number.
  • the “selected option number” is the number of a read option (set option) that has been set in the device (for example, NAND-FM 33) for the option management unit.
  • the option management unit is a management unit larger than a page which is a data read / write unit, and is a die according to the example of FIG.
  • the setting option of the option management unit to which the read source page of the lead belongs is used. Therefore, if the lead option selected for the lead is different from the setting option of the option management unit to which the lead page of the lead belongs, the setting option is changed to the selected lead option, and the changed setting option is changed. To read.
  • the option management unit may be any management unit as long as it is larger than the data read / write unit.
  • the “MAX counter” is the maximum value of two or more success counters respectively corresponding to predetermined two or more lead environments (for example, lead environments having the same attribute value of the lead influence attribute other than the lead option number). is there.
  • “MAX option number” is a read option number corresponding to a success counter having the same value as the MAX counter.
  • the FM control program 442 selects a read option for each read from the NAND-FM 33 and executes a read according to the selected read option. Specifically, for example, the FM control program 442 reads the read environment to which the read source page belongs, that is, the PE count range to which the PE count of the read source block (block including the read source page) belongs, Elapsed time, FM bus number to which the FM chip including the read source page is connected, CE line number to which the FM chip including the read source page is connected, die number including the read source page, read The number of the plane including the original page and the type of the read source page are specified from the FM management information 451.
  • the FM control program 442 selects a likely lead option from a plurality of lead options based on the number of successful read times for the identified lead environment.
  • the “read success count statistic” is, for example, a relationship between a plurality of read options and a plurality of success counters (values) as shown in FIG.
  • the read success count statistic (that is, the relationship between the read option and the success counter) may be different for each read environment.
  • the plausible lead option is, for example, a lead option corresponding to the largest success counter for the identified lead environment.
  • the FM control program 442 adds a value to the success counter corresponding to the read environment and the read option (for example, 1 is added).
  • the FM control program 442 determines the next most likely read option (eg, next largest success) based on the read success count statistics. Select the lead option corresponding to the counter and execute the read according to the selected lead option. Such read retry is performed until a predetermined condition (for example, the number of read retries is less than or equal to a predetermined number) is not satisfied, and when the predetermined condition is not satisfied, the process ends as an uncorrectable error.
  • a predetermined condition for example, the number of read retries is less than or equal to a predetermined number
  • the FM controller 32 reads from the NAND-FM 33, based on the read success count statistics (relationship between the read option and the read success count) of the read environment to which the read source page belongs, Select in advance and execute read according to the selected read option. For this reason, the frequency of occurrence of read retries can be reduced, thereby reducing the decrease in read performance. Also, with each successful read, the number of read successes corresponding to the lead option used during a successful read is updated, which improves the accuracy of the read success count stats, and therefore select when reading Expected to improve the appropriateness of the lead options that are likely to be.
  • the FM control program 442 subtracts the value from the success counter corresponding to the lead option (eg, 1 May be subtracted) (reference numeral 801 in FIG. 8).
  • the success counter of the lead option that has been successfully read can be relatively increased. This is because, when the lead according to the next most likely read option (for example, lead option 1) succeeds, the success counter corresponding to the lead option is added as described above (reference numeral 802 in FIG. 8). .
  • the subtraction of the success counter corresponding to the lead option at the time of the read failure may be performed each time the read fails, or the difference between the success option of the read option corresponding to the read failure and the next most likely read option success counter. May be performed when becomes less than a predetermined value.
  • the read is not limited to a normal read (a read according to a read request from the storage controller 20), but other types of read, for example, a reclamation read (a read generated during the reclamation process), a refresh read (a refresh process) Or at least one of asynchronous leads.
  • the “asynchronous read” is a read that occurs independently (asynchronously) with a read request from the storage controller 20. Any read may be performed by the FM control program 442.
  • the asynchronous lead there may be an inspection lead. In the inspection read, the number of error bits of the read data is detected, and the detected number of error bits is compared with each of predetermined one or more threshold values. The inspection lead will be described in more detail in the second embodiment.
  • the FM management information 451 is configured to be able to specify the read environment of the read source page. Specifically, for example, the FM management information 451 includes, for each page, the number of PEs (the number of times data is erased from the block including the page) and the elapsed time (after data is written to the first page of the block including the page). Elapsed time), FM bus number (number of FM bus to which FM chip including page is connected), CE number (number of CE line to which FM chip including page is connected), FM chip number (page FM chip number including a page number), die number (number of a die including page), plane number (number of a plane including page), and page type (page type).
  • the FM management information 451 may be updated by the FM control program 442 when predetermined processing (for example, deletion of data from the block) is performed by the FM control program 442.
  • FIG. 9 shows the flow of read processing.
  • the FM control program 442 reads the read environment (PE count, elapsed time, FM bus number, CE number, die number, plane number, etc.) corresponding to the read source page (for example, the page assigned to the read source logical address). (Page type) is specified from the FM management information 451, the read success count management information 452 (read success count statistics) is referenced using the specified read environment, and a likely read option is selected for the read environment (S901). ). Specifically, for example, as shown in FIG. 10, the FM control program 442 acquires a MAX option corresponding to the specified read environment from the read success count management information 452 (FIG. 10: S1001).
  • the FM control program 442 determines whether or not the lead option number selected in S901 matches the selected option number corresponding to the die (die including the read source page) in the specified lead environment (S902).
  • the FM control program 442 changes the setting option for the die including the read source page to the read option selected in S901 (S908).
  • the FM control program 442 performs a read using the read option selected in S901 (S903). In other words, the FM control program 442 transmits a read command for reading data from the page of the read source page to the FM chip including the read source page using the read option selected in S901, and the read command In response, the data in the read source page is received.
  • the FM control program 442 determines whether the read is successful (S904).
  • the successful read may be, for example, that data is received from the NAND-FM 33 within a predetermined time after the read command is issued to the NAND-FM 33 and the data is correct.
  • the FM control program 442 determines whether or not the condition is satisfied (S905). Whether or not the condition is satisfied follows, for example, the condition determination rule shown in FIG. According to the rule of FIG. 11, (condition: a) there is an unselected read option as a condition, (condition: b) the number of read retries (RR) in this read processing is less than or equal to the RR threshold, and (Condition: c) In this read process, the time after the first read command is issued may be less than the time limit.
  • the rule shown in FIG. 11 is an example, and the rule as to what the determination result of S905 will be when the conditions are satisfied is not limited to the rule shown in FIG. Further, the condition determination rule may be the same for all FMPKs 30 in the same RAID group, or the condition determination rule may be different for each FMPK 30.
  • the RR threshold and the time limit can be set from the storage controller 20 by a predetermined command (for example, the command shown in FIG. 14).
  • the FM control program 442 responds with an uncorrectable error for the read source page (S907), and ends the read process.
  • the FM control program 442 selects the most likely read option next to the read option selected in the previous round (S901 or S906) in this read process (S906).
  • the setting option is changed to the lead option selected in S906 (S908), and the read is executed using the changed setting option (S903).
  • the FM control program 442 for example, as shown in FIG. 12, the next largest success counter of the read option success counter selected immediately before (the largest success counter if none). Is identified from the read success count management information 452 (FIG. 12: S1201), and a read option number corresponding to the identified success counter is acquired from the read success count management information 452 (FIG. 12: S1202).
  • the FM control program 442 determines whether or not the success counter after the addition exceeds the MAX counter corresponding to the specified read environment (S910).
  • the FM control program 442 sets the MAX counter (MAX counter in the read success count management information 452) corresponding to the specified read environment to the success after the addition of S909.
  • the counter value is updated (S911), and the MAX option number corresponding to the specified read environment is updated to the read option number at the time of successful read (S912).
  • the FM control program 442 displays the selection option number corresponding to the specified read environment as the read option number when the read is successful. (S913).
  • the FM control program 442 may change the setting option of the die including the read source page in the read process to the MAX option after the update in S912.
  • S913 may be skipped if the selected option number corresponding to the identified read environment is the same as the read option number when the read is successful. Further, S902 and S908 are not provided, and S903 may be performed after S901.
  • the FM control program 442 may determine whether or not to perform the process of FIG. 10 based on whether or not the condition for performing the lead option optimization is satisfied. In the case of normal read, if the read option meaning normal read is not set in the NAND-FM 33, the read option may be set in S908.
  • a “non-readable page” is a page in which data cannot be read regardless of how many read retries are performed while switching the read option. If the read retry is repeatedly executed even though the read source page is a non-readable page, time is wasted and the read performance can be greatly reduced. There may be a case where it is preferable to restore data by the storage controller 20 rather than taking time for read retry. Conversely, there may be a case where it is preferable to read data from the read source page by repeating read retry as much as possible.
  • the number of retries corresponding to these situations is preferably different depending on at least one of the RAID level of the RAID group, the number of blocked FMPKs (blocked FMPKs) in the RAID group, and the presence or absence of redundancy. “Presence / absence of redundancy” is whether or not the same data can be read from another storage resource (for example, another RAID group) even if the data cannot be read from the RAID group. Whether or not there is a RAID group (or storage device 300) and a standby RAID group (or storage device 300).
  • Information indicating whether performance is important or not for each RAID group is managed by the storage controller 20 which is a higher-level device of the FMPK 30.
  • the storage controller 20 determines the RR threshold value of the FMPK based on whether or not the performance is important for the RAID group including the FMPK, the RAID level, the number of blocked FMPKs, and the presence or absence of redundancy.
  • the determined RR threshold is set in the FMPK.
  • the storage controller 20 performs setting for changing the RR threshold set in FMPK to the RR threshold corresponding to the number of blocked devices after the change. Thereby, the RR threshold value in FMPK30 can be set to a more appropriate value.
  • FIG. 13 shows the configuration of the configuration table 256.
  • the configuration table 256 includes a normal RR threshold table unit 1301, a reclamation RR threshold table unit 1302, a refresh RR threshold table unit 1303, and an asynchronous RR threshold table unit 1304.
  • Normal RR threshold is an RR threshold for normal reads (threshold for read retry count)
  • Reclaim RR threshold is an RR threshold for reclamation read
  • Refresh RR threshold is an RR for refresh read.
  • Asynchronous RR threshold is an RR threshold for asynchronous read.
  • the configuration of each table unit is the same. Specifically, each table unit has an RR threshold according to whether performance is important, RAID level, number of blocked FMPKs, and presence / absence of redundancy.
  • the normal RR threshold (normal while changing the lead option)
  • the threshold value of the number of read read retries may be a maximum value.
  • the maximum value is, for example, (X ⁇ 1), and X is the number of lead options. In such a case, it is necessary to read data even at the expense of read performance.
  • the normal RR threshold may be less than the maximum value.
  • the normal RR threshold value may be less than the maximum value if performance-oriented is set.
  • the RR threshold may be smaller than when performance emphasis is not set.
  • the reclamation RR threshold corresponding to performance emphasis may be higher than the normal RR threshold corresponding to performance emphasis. This is because the reclamation read is a read that is performed in the background as needed in the processing of a write request from the storage controller 20.
  • the RR threshold value may be the maximum value regardless of whether performance is important, the RAID level, the number of blocked FMPKs, and the presence or absence of redundancy. This is because the refresh read and the asynchronous read are both read in the background irrespective of (asynchronously) the read request (and write request) from the storage controller 20.
  • the storage controller 20 includes a configuration table 256, information indicating whether performance is important for each RAID group, information indicating a RAID level for each RAID group (for example, RAID management table 254), and the number of blocked FMPKs for each RAID group.
  • the normal RR threshold, the reclamation RR threshold, the refresh RR threshold, and the asynchronous RR threshold to be set in FMPK are determined based on the information (for example, the blockage management table 255) and the information indicating the presence / absence of redundancy for each RAID group. A command including those determined RR threshold values is transmitted to the FMPK.
  • FIG. 14 shows the configuration of commands used for setting the RR threshold.
  • the command used for setting the RR threshold is, for example, a mode select command according to SCSI.
  • a command other than the mode select command (for example, a vendor unique command) may be used as long as the mode parameter setting can be changed and referred to the FMPK.
  • Mode select commands include, for example, normal RR threshold (READ RETRY COUNT), reclamation RR threshold (RC READ RETRY COUNT), refresh RR threshold (RF READ RETRY COUNT), asynchronous RR threshold (ASYNC READ RETRY COUNT), read mode select (READ MODE SELECT) and time limit (RECOVERY TIME LIMIT) are included.
  • the mode select command may be transmitted before transmitting a read command for read processing.
  • the read mode select is a parameter indicating a read mode selected from a plurality of read modes (read option selection policies).
  • a first value (first read mode: a read option is selected based on the number of successful read statistics), a second value (second read mode: a read option with performance delay is selected), a first There are four types: 3 values (3rd read mode: select all read options sequentially (for example, for dynamic spare)) and 4 values (4th read mode: select 4th default read option) Good.
  • the “read option with performance delay” may be a read option corresponding to a read method that takes a long time to read itself but has a higher possibility of successful read by special processing inside the chip.
  • FIG. 15 shows an example of the RR threshold setting screen.
  • the RR threshold setting screen 1500 is a GUI (Graphical User Interface), and is provided to the management terminal 70 via the management I / F 25 by the management terminal communication program 252 and displayed on the output unit (not shown) of the management terminal 70. .
  • the administrator assigns various RR thresholds from the management terminal 70 to the storage controller 20 of the storage apparatus 300 via the RR threshold setting screen 1500 based on whether the performance is important, the RAID level, the presence / absence of redundancy, and the number of blocked FMPKs. Can be entered.
  • the various input RR threshold values are registered in the configuration table 256 by the management terminal communication program 252.
  • RR threshold values may be input and registered by a method other than the GUI, for example, a command format interface.
  • whether or not performance is emphasized may mean whether the performance priority is large or small.
  • the performance priority may be more than two levels (large or small).
  • RAID level instead of or in addition to the RAID level, other types of RAID configurations (for example, the number of FMPKs configuring a RAID group) may be employed.
  • At least one type of RR threshold value among a plurality of types of RR threshold values may be set in finer units.
  • at least one type of RR threshold value may be specified for each RAID group, or may be specified for each logical volume on which the RAID group is based.
  • at least one type of RR threshold may be set for each logical address range (for example, a range corresponding to a logical volume). That is, a plurality of RR thresholds of the same type that differ depending on the logical address range may be set in the FM controller 32 of one FMPK 30.
  • the FM controller 32 may control the number of read retries in the read process for the read source page based on the RR threshold value corresponding to the logical address range to which the logical address to which the read source page is assigned belongs.
  • the storage controller 20 transmits a command including the RR threshold value registered in the configuration table 256 (for example, the mode select command illustrated in FIG. 14) to the FMPK 30, and the FM controller 32 of the FMPK 30 receives the command.
  • a command (mode select command) designating a plurality of types of RR threshold values is at least one of whether the storage controller 20 places importance on performance for at least one RAID group, RAID level, presence / absence of redundancy, and the number of blocked FMPKs.
  • a mode select command specifying an RR threshold value corresponding to the changed attribute value may be transmitted to the FMPK 30 constituting the RAID group in which the change is detected.
  • a series of flows for setting the RR threshold will be described.
  • FIG. 16 shows an example of the flow of processing performed by the RAID control program 251.
  • the RAID control program 251 executes the first RR threshold value setting process when detecting the blockage or recovery of the FMPK 30 (S1601: True) (S1602).
  • the first RR threshold value setting process the RAID level of the RAID group including the blocked or recovered FMPK 30, the number of blocked FMPKs, whether or not performance is important, and the RR threshold value corresponding to the presence or absence of redundancy are blocked or recovered FMPK 30. Is set in each FMPK 30 of the RAID group including the.
  • the RAID control program 251 executes the second RR threshold setting process when performing a dynamic spare for the RAID group (S1601: False and S1603: True) (S1604).
  • a command including an RR threshold (for example, the maximum number of read retries) used at the time of dynamic spare is transmitted to each FMPK 30 of the RAID group in which dynamic spare is performed, and the RAID group In each FMPK 30, an RR threshold value used for dynamic spare is set.
  • the RAID control program 251 performs any necessary processing other than the first and second RR threshold value setting processing in cases other than the detection of blockage or recovery of the FMPK 30 and a dynamic spare (S1601: False and S1603: False). It performs (S1605). If no processing is required, S1605 may be skipped.
  • FIG. 17 shows the flow of the first RR threshold value setting process.
  • the RAID control program 251 is a block / recovery RG environment (specifically, a RAID level, the number of blocked FMPKs, whether performance is important, and whether redundancy is present) to which the RAID group including the blocked or recovered FMPK 30 belongs. ) Is specified from the RAID management table 254, the blockage management table 255, and the like (S1801).
  • the RAID control program 251 specifies various RR threshold values corresponding to the specified blockage / recovery RG environment from the configuration table 256, and specifies the various RR threshold values (normal RR threshold value, reclamation RR threshold value, refresh RR threshold value and asynchronous RR threshold value).
  • the mode select command including the time limit is generated, and the generated mode select command is transmitted to each FMPK 30 of the RAID group including the blocked or recovered FMPK 30 (S1802).
  • the RAID control program 251 ends the process when the command is normally completed for each FMPK 30 (S1803: True).
  • the RAID control program 251 executes S1802 again if the number of retries of the mode select command is less than the allowable value (S1804: True). The process executed again may be only command transmission in S1802. If the number of retries of the mode select command has reached the allowable value (S1804: False), the RAID control program 251 performs a predetermined failure process (S1805).
  • FIG. 18 shows processing performed by the FM control program 442 in the FMPK 30.
  • the FM control program 442 executes processing according to the command (S1902). For example, if the command is a read request from the storage controller 20, a normal read read process is executed. For example, if the command is an internal command that is an internally issued command, processing according to the internal command is executed. Examples of the internal command include a reclamation command, a refresh command, and an inspection command.
  • the FM control program 442 acquires various RR threshold values and time limit from the mode select command (S1903), and flushes the acquired various RR threshold values and time limit.
  • the device configuration information 443 is set (S1904).
  • the flash device configuration information 443 in which various RR threshold values and time limits are set is as shown in FIG. 19, for example.
  • the RR threshold is specified based on the RAID level, the number of blocked drives, etc.
  • the RAID level is specified from the RAID management table 254, and the number of blocked drives is specified from the blocking management table 255.
  • the RAID management table 254 represents a RAID group number, a RAID level, and a number of each PDEV (FMPK) constituting the RAID group for each RAID group.
  • the blocking management table 255 shows the number of blocked PDEVs (number of blocked FMPKs) and the status (normal, blocked, etc.) of each PDEV (FMPK) constituting the RAID group for each RAID group.
  • the state of the FMPK 30 may not be able to maintain the response performance defined in the FMPK 30.
  • the state in which the response performance cannot be maintained means, for example, that the time since the read command is issued exceeds the time limit and the number of read retries exceeds the default RR threshold It is a state corresponding to at least one.
  • the FMPK 30 It is considered that there is a higher probability that the state cannot be maintained.
  • the FM controller 32 (for example, the FM control program 442) returns a check response to a command (for example, a read request) from the storage controller 20 when the response performance defined in the FMPK 30 cannot be maintained. It has become.
  • the storage controller 20 that has received the check response controls whether or not to retransmit the read request to the FMPK 30.
  • the FMPK 30 starts a new read process. For this reason, at the FMPK 30, at least one of the read processing of the previous read command exceeds the time limit since the read command is issued and the read retry count exceeds the RR threshold. If one happens, it will be cancelled.
  • the FMPK 30 can issue a check response to the storage controller 20 and let the storage controller 20 determine whether to continue the process. For example, the storage controller 20 may determine whether or not to retransmit the read request to the FMPK 30 according to whether or not the number of check responses received is less than a predetermined value. For example, when the storage controller 20 receives a check response, the storage controller 20 has the FMPK 30 with data to be read from the FMPK 30 instead of resending the read request to the FMPK 30 that is the transmission source of the check response. Data may be recovered using data in another FMPK 30 in the RAID group.
  • the value of one or more predetermined items is set to a predetermined value.
  • Request sense response may be used.
  • the storage controller 20 may receive a request sense response from the FMPK 30 by transmitting auto sense to the FMPK 30, or may receive a request sense response from the FMPK 30 by transmitting a request sense command to the FMPK 30.
  • the read request is a normal read request.
  • a special read request may be made.
  • the special read request includes a read mode select (READ MODE SELECT), that is, a read including a parameter indicating a read mode selected from a plurality of read modes (read option selection policies). It is a request.
  • first read mode select a read option based on the number of successful read statistics
  • second read mode select a read option with performance delay
  • third value third read mode: select all read options sequentially (for example, for dynamic spare)
  • fourth value fourth default read option
  • the read mode can also be set by a mode select command as described above.
  • the read mode specified by the special read request has priority over the read mode set by the mode select command. For example, even if the first read mode is set to the FMPK 30 that has issued the check response by the mode select command, if the second read mode is specified in the special read request from the storage controller 20, the special read request is followed.
  • the read mode of the read process to be performed (normal read process) is the second read mode specified by the special read request. This is because the special read request is a command issued to the FMPK 30 when a check response is received from the FMPK 30, and the check response is issued from the FMPK 30 that cannot maintain the response performance as described above. .
  • the storage controller 20 resends a normal read request, and if the number of times the check response is received from the same FMPK 30 reaches the predetermined number, The process illustrated in FIG. 25 can be performed.
  • the storage controller 20 determines whether additional retry (read request retransmission) is permitted (S2701).
  • the determination in S2701 may be made based on the RAID configuration (for example, RAID level) for the RAID group including the source FMPK 30 of the check response, the number of blocked FMPKs, the presence or absence of redundancy, and the like. Specifically, for example, based on the information illustrated in FIG. 26, that is, information indicating a rule that defines whether or not additional retry is permitted (Yes) for each combination of the RAID level and the number of blocked FMPKs (No). In step S2701, the determination is made.
  • the information illustrated in FIG. 26 is stored in the memory 224 of the storage controller 20.
  • the storage controller 20 executes a predetermined uncorrectable error process (S2702). On the other hand, if the determination result in S2701 is true (S2701: True), the storage controller 20 generates a special read request for the check response transmission source FMPK30 by the special read request generation processing, and generates the generated special read in the FMPK30. A request is transmitted (S2703).
  • FIG. 27 shows the flow of special read request generation processing.
  • the storage controller 20 selects a read mode corresponding to the target RG environment at the time of generating the special read request (S2801), and generates a special read request in which a value indicating the selected read mode is set in the read mode select field (S2802). ).
  • the “target RG environment” is an environment to which the RAID group including the FMPK 30 of the check response transmission source (or command transmission destination) belongs. Specifically, for example, the RAID level, the number of blocked FMPKs, the presence or absence of redundancy, It may be at least one of performance priority and read / write frequency (the number of read requests and write requests received per unit time). In FIG. 27, a mode select command in which a longer timeout time is set is also generated. In S2703 of FIG.
  • the mode select command may be transmitted in addition to the special read request.
  • the read mode selected in S2801 may be the second read mode (select a read option with performance delay). This is because the “lead option with performance delay” is a lead option corresponding to a lead method that, as mentioned above, takes a long time to read itself but has a higher possibility of successful read by special processing inside the chip. .
  • FMPK30 that cannot process special read requests due to specifications or other reasons.
  • storage controller 20 that cannot generate a special read request due to specifications or another reason.
  • the read mode may be designated by the mode select command instead of the special read request.
  • the storage controller 20 resends a normal read request, and if the number of times that the check response is received from the same FMPK 30 reaches the predetermined number of times. For example, the process illustrated in FIG. 28 is performed.
  • the storage controller 20 determines whether an additional retry (read request retransmission) is permitted (S2901).
  • the determination in S2901 may be performed in the same manner as the determination in S2901.
  • the storage controller 20 executes a predetermined uncorrectable error process (S2902).
  • the storage controller 20 determines whether the determination result in S2901 is true (S2901: True)
  • the storage controller 20 generates a mode select command for the transmission source FMPK30 of the check response by the mode select command generation processing, and generates the generated mode select in the FMPK30.
  • a command is transmitted (S2903).
  • the read mode specified by the mode select command may also be a read mode corresponding to the target RG environment when the mode select command is generated.
  • the mode select command generated when the number of times the check response is received from the same FMPK 30 reaches a predetermined number may be the second read mode (select a read option with performance delay).
  • the storage controller 20 may select which command specifies the read mode to the FMPK 30.
  • various RR threshold values and time limits can be set by the mode select command.
  • the destination FMPK 30 of the command is in a read / write pending state (read request and write request are changed). (Non-processing state).
  • the special read request cannot set at least one of various RR thresholds and time limit, but the command destination FMPK 30 does not need to be in the read / write pending state. Therefore, when the storage controller 20 designates the read mode for the check response transmission source FMPK 30, as illustrated in FIG.
  • the storage controller 20 generates a special read request according to the target RG environment when the check response is received. If it is determined whether a select command is to be generated (S3001) and it is determined that a special read request is to be generated (S3001: True), the processing shown in FIG. 25 is performed and it is determined that a mode select command is to be generated (S3001: False). ), The process shown in FIG. 28 may be performed.
  • the read / write frequency of the target RG (the RAID group including the check response transmission source FMPK 30) is less than a predetermined value in the target RG environment when the check response is received, the generation of the mode select command is selected, and the target RG If the read / write frequency is greater than or equal to a predetermined value, generation of a special read request may be selected.
  • FIG. 30 shows the flow of processing performed by the FM controller 32 of the FMPK 30 that has received the command.
  • the FM controller 32 executes processing according to the command (S3102). If the command is a mode select command, processing in accordance with the mode select command is executed in S3102.
  • the FM controller 32 sets a read mode that has been set (for example, a past mode select command). In the set read mode), a read process (for example, a normal read process) is executed according to the read request (S3104).
  • the FM controller 32 uses the read mode specified by the special read request. Then, the read process is executed in accordance with the special read request (S3105).
  • the FM controller 32 performs a read using the setting option of the option management unit (die in this embodiment) to which the read source page belongs. If the probable lead option selected for the lead is different from the setting option for the die containing the read source page, the setting option is changed to the selected lead option (see S909 in FIG. 9). Need to perform a lead.
  • the lead environment may be different even for leads for the same option management unit. Therefore, there is a possibility that the setting option is frequently changed for a plurality of leads in the same option management unit. For example, as in the comparative example shown in FIG.
  • the read command queue (read command queue for the read source page in the FM chip belonging to the CE line) is managed for each CE line, the same CE line (for example, A plurality of read commands with different selected read options may be arranged in the read command queue of CE line 0).
  • the setting options are frequently changed (S909 in FIG. 9). Specifically, for example, to change a setting option, it is necessary to issue a command (for example, SetFeature) to change one to a plurality of (for example, four) options from the FM controller 32 to the FM (die). In the meantime, reading to the FM (die) cannot be executed.
  • a command for example, SetFeature
  • the lead option when the lead option is returned to the option number (for example, 0) indicating the normal lead for each lead, for example, the number of commands required for the option change for one lead. (For example, a maximum of 4 times) + Read (1 time) + The number of commands for returning the option to the initial state (for example, a maximum of 4 times).
  • the frequent occurrence leads to performance delay. Therefore, it is desirable to reduce the change (for example, up to 4 times) and return (for example, up to 4 times) as much as possible. Therefore, as in the present embodiment, it is effective to change the lead option if necessary without returning it.
  • the FM controller 32 optimizes the execution order of the read commands (reads). Specifically, a plurality of read commands having the same read option are successively executed for each read option. As a result, the frequency of change of setting options can be reduced.
  • a read command queue is provided for each read option.
  • the read option is set in a first unit (for example, for each die), and the read command queue is provided in a second unit (for example, for each CE line) that is larger than the first unit.
  • the read command queue for example, read commands are arranged in the order in which read commands are issued.
  • the FM controller 32 generates a read command, it corresponds to the read option selected for the read command and the CE line to which the FM chip 403 including the read source page specified by the read command is connected. Connect the generated read command to the read command queue.
  • the FM controller 32 selects a read option according to a predetermined rule, and continuously executes a plurality of read commands in the read command queue of the selected read option.
  • the predetermined rule may be, for example, that the lead option selected first may be the same lead option as the setting option (for example, lead option # 6), or the setting option after the last change is the most likely lead option for the CE line. Good.
  • the number of read commands that are continuously executed from one read command queue (in other words, the length of time that read commands are continuously executed from the read command) may be the same for all read options. However, it may be different depending on the lead option.
  • the predetermined rule is that a response time from receiving a read command to responding, the number of read commands connected to one read command queue, and an execution unit cost (work amount) corresponding to the read option. It may be based on at least one of them.
  • the predetermined queue unit is at least one of an FM bus, a die, and an FM chip instead of or in addition to the CE line.
  • the FM controller 32 may have a hard execution queue (for example, a queue on the high-speed memory 44) in units of queues (for example, for each CE line).
  • the FM controller 32 (for example, the CPU 42) loads, in queue units, read commands corresponding to the number of consecutively executed commands from each read command queue (read command queue of the same read option) into the hardware execution queue, and the FM controller 32 (for example, FM I / O).
  • F46 may execute the read commands in the order of arrangement in the hardware execution queue.
  • FIG. 33 shows the structure of the read command.
  • the read command includes “type”, read source information, “read option number”, “next pointer”, and the like.
  • the read source information is information for identifying the read source page, and includes, for example, “bus number”, “CE number”, “die number”, “block number”, and “page number”.
  • “Type” represents a lead type (for example, a normal lead or a reclamation lead).
  • “Bus number” represents the number of the FM bus to the FM chip including the read source page.
  • CE number represents the number of the CE line to the FM chip including the read source page.
  • the “die number” represents the die number including the read source page.
  • “Block number” represents the number of the block including the read source page.
  • “Page number” represents the number of the read source page.
  • “Lead option number” represents the number of the selected lead option.
  • the “next pointer” represents the connection destination of this read command.
  • FIG. 34 shows the configuration of the enqueue destination determination table.
  • the enqueue destination determination table 3500 represents an enqueue destination rule for a read command and the number of read commands connected to the read command queue (the number of read commands waiting for execution). This table 3500 may be stored in the high-speed memory 44, for example.
  • the enqueue destination rule is a combination of a bus number, a CE line number, a read option number, and an enqueue destination queue. A queue corresponding to the bus number, CE line number, and read option number in the read command is specified from the table 3500, and the read command is connected to the specified queue.
  • the enqueue destination may be determined by other methods such as condition determination.
  • the read command queue is classified for each read option, it is possible to execute a read command so that the number of setting option changes is minimized.
  • a read command queue prepared for each CE line and for each read option there may be a synchronous command queue and an asynchronous command queue.
  • a read command (synchronous RD command) issued in accordance with a read request from the host device is connected to the synchronous command queue.
  • the synchronous RD command is a normal read command in this embodiment.
  • Connected to the asynchronous command queue is a read command (asynchronous RD command) issued independently (asynchronously) with a read request from the host device.
  • the asynchronous RD command is a read command for reclamation read, refresh read, and asynchronous read.
  • the optimization of the execution order of the synchronous RD command must be executed so that data according to the read request can be responded within a certain time (response time limit) after receiving the read request from the host device.
  • the number of read commands continuously executed from the read command queue is a number determined based on the characteristics of the read option corresponding to the read command queue, for example, the following first and second It may be a number determined according to any of the viewpoints.
  • the maximum number of consecutively executed commands is the total number of read commands waiting to be executed (all read command queues) for each read option. Or the total number of read commands waiting for execution connected to all the read command queues connected to all read command queues).
  • a first execution restriction table 3600 shown in FIG. 35 is prepared. In the first execution restriction table 3600, the total number of read commands waiting to be executed and the maximum number of continuous execution commands for each read option (this number is such that the switching of the read option is not too early and the response time does not become long). Is preferably).
  • the defined maximum number of consecutive execution commands is determined based on the characteristics of the read option, and can respond to the read request within the response time limit (the upper limit of time from receiving the read request to responding). Value.
  • the table 3600 may be stored in the high speed memory 44, for example.
  • the FM controller 32 specifies the maximum number of consecutively executed commands in a read command queue of a certain read option based on the table 3600 and the number of read commands waiting to be executed. When the FM controller 32 continuously executes the read commands for the maximum number of specified continuous execution commands from the read command queue of the certain read option (or before that, there is no command connected to the queue). Switch to another read option and execute the read command from the read command queue of the read option after switching. According to the first aspect, it is possible to reduce the number of times the setting option is changed while guaranteeing that the read request is responded within the response time limit.
  • the maximum number of consecutively executed commands is the total number of read commands waiting to be executed for each read option, and the read response performance unit price for each read option (the response time of the read command or the time thereof) The value is determined based on the number of command queues to which at least one read command is connected.
  • the above lead option characteristic is the lead response performance unit price of the lead option.
  • the unit price table 3700 represents the read response performance unit price for each lead option.
  • the second execution restriction table 3800 records the total number of read commands waiting to be executed and the maximum response performance for each read option.
  • the maximum response performance is a value determined based on the unit price table 3700, the total number of read commands waiting to be executed, and the number of read command queues to which at least one read command is connected. Therefore, when the number of read command queues to which at least one read command is connected increases or decreases, the corresponding maximum response performance value is changed by the FM controller 32.
  • the maximum response performance may be an allowable residence time after the read command is loaded in the read command queue.
  • the FMPK 30 may have an initial value of the maximum response performance, and uses the stored maximum response performance unless changed by a predetermined command (for example, a mode select command) from the storage controller 20.
  • the maximum response performance can be dynamically changed, and the dynamic change can be performed by a predetermined command (for example, a mode select command) from the storage controller 20.
  • a predetermined command for example, a mode select command
  • the FM controller 32 changes the set maximum response performance to the maximum response performance in the predetermined command, and changes the maximum response performance after the change. This is applied to the read command remaining in the read command queue (or hardware execution queue).
  • the FM controller 32 may store the time when the predetermined command is received, and apply the changed maximum response performance to the read command that is started to be executed after that time.
  • the read response performance unit price for each read option may be “1”, and the maximum response performance recorded in the second execution restriction table 3800 may be the maximum number of continuous execution commands.
  • the enqueue (for example, enqueue to the hardware execution queue) may be controlled based on the read response performance unit price for each read option.
  • the read command is stored in the high-speed memory 44 without being connected to the queue, and may be enqueued based on the cumulative counter table 3900 illustrated in FIG.
  • the cumulative value of the read response performance unit price of the read command is recorded by the FM controller 32 for each FM bus and CE line (that is, for each FM chip).
  • FIG. 39 shows an example of the read command enqueue control process.
  • FIG. 39 shows a process in which the CPU 42 enqueues from the read command queue to the hardware execution queue managed by the FM I / F 46. That is, the CPU 42 reads the read command from the read command queue (see FIG. 32) into the hard execution queue for each CE line while referring to the tables in FIGS. 36 and 38 so as to be in time (maximum response performance). Optimally allocate.
  • the CPU 42 acquires the current option (current target option) (S4001).
  • the CPU 42 identifies the earliest read command (hereinafter referred to as the target command) among the read commands in the read command queue corresponding to the current option, and determines the bus number and CE number specified by the target command from the cumulative counter table 3900.
  • the corresponding accumulated value is specified (S4002).
  • the CPU 42 enqueues the target command in the hardware execution queue corresponding to the CE number specified by the target command (S4003).
  • the CPU 42 adds the read response performance unit price corresponding to the current option to the accumulated value specified in S4002 (S4004).
  • the number of read commands continuously executed from one read command queue based on the table 3700 illustrated in FIG. 36 and the table 3800 illustrated in FIG. 37 is similar to that of the table 3900 illustrated in FIG. It may be controlled based on a response time counter table (not shown).
  • the response time counter table the accumulated value of the response time of the read command may be recorded by the FM controller 32 for each FM bus and CE line (that is, for each FM chip).
  • the FM controller 32 may control the number of continuously executed commands based on the accumulated response time. For example, if the difference between the maximum response performance and the accumulated response time is less than the read response performance unit price for a certain read option, the FM controller 32 stops executing the command from the read command queue for that read option. You can switch to the lead option.
  • the read command queue shown in FIG. 32 and the hardware execution queue described above may be controlled by the hardware implementation under the FM controller 32 (particularly the FM I / F 46).
  • Example 2 will be described. At that time, differences from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified.
  • FIG. 40 shows an outline of the second embodiment.
  • the size of the successful read count management information 452 described in the first embodiment is considered large.
  • the size increases as the number of at least one of the PE count range or the elapsed time range increases.
  • the FM controller 32 holds environment / option simple management information 4501 which is simple information of the successful read count management information 452 instead of the successful read count management information 452.
  • the size of the environment / option simple management information 4501 is smaller than the size of the successful read count management information 452.
  • the environment / option simple management information 4501 is stored in the high speed memory 44 or the low speed memory 45.
  • the environment / option simple management information 4501 does not have a record for each PE count range and each elapsed time range, and does not have a successful read count.
  • FIG. 41 shows the configuration of the environment / option simple management information 4501.
  • a read option at the time of successful read is recorded for each die (more precisely, for each set of FM bus, CE line, and die). Specifically, when the read from the read source page is successful, the read option at the time of successful read is recorded in the environment / option simple management information 4501 for the die including the read source page.
  • the lead option recorded in the environment / option simple management information 4501 is referred to as “optimal lead option”. The optimum read option is recorded for each die, that is, in a unit larger than the lead unit (page unit).
  • the lead option that succeeds in reading from another second page for the same die is the second lead option. If there is, the second lead option is recorded instead of the first lead option for the same die.
  • the lead source is the first page again for the same die, the lead option at the time of the previous successful read is the first lead option, but the recorded lead option is the second lead option. The second lead option is used.
  • the FM controller 32 determines whether or not to apply the optimal read option instead of the default read option (S4601). If the determination result in S4601 is true, the FM controller 32 performs reading with the optimum read option corresponding to the read source die (the die including the read source page) (S4602). On the other hand, if the determination result in S4601 is false, the FM controller 32 reads from the read source page with the default read option. If the read in S4602 or S4603 fails, the lead option to be used is switched to another lead option, and reading is performed with the lead option after switching. For example, the lead options are switched in accordance with the lead option switching rules shown in FIG. According to the rule, for example, when the lead option 4 is used in the first lead, the lead option used next due to the read failure is the lead option 0.
  • the optimum option application determination may be performed in each read process after the FMPK 30 is turned on for the first time, but in this embodiment, it is performed in each read process after the FMPK 30 is turned off (after the power is turned on again). This is because the flash memory generally deteriorates the data retention characteristics of the physical block when left unplugged after power interruption.
  • the determination result of the optimal option application determination is true when the optimal option application condition is satisfied. That the optimum option application condition is satisfied means that all the sub-conditions (a) to (c) below are satisfied.
  • the lead is a lead in a period in which the inspection lead processing for the first round after the power interruption is performed.
  • An uncorrectable error has occurred on any page in the read source die.
  • the read source block (physical block including the read source page) is not a refreshed block after power interruption.
  • the lead is a lead in a period in which the inspection lead processing for the first round after the power interruption is performed.
  • the FM controller 32 performs inspection read processing at regular intervals (for example, one day) for the purpose of preventing an uncorrectable error of the NAND-FM 33 from occurring.
  • the inspection read process data is read from the inspection target page (at least one physical page) for each of all the physical blocks in the FMPK 30, and the number of error bits of the read data is checked. That is, “inspection lead” is a lead for one inspection target page, and “inspection lead processing” is a process including the inspection leads of all inspection target pages. “The inspection lead process makes one round” means that the inspection lead ends for each of all inspection target pages.
  • the “inspection lead processing for the first round after power interruption” means that inspection leads for all inspection target pages (for example, all inspection target pages in all physical blocks) after the power is turned on after power interruption. It means until the end.
  • the “inspection page” may be a physical page randomly selected for each physical block, or may be a predetermined type of page (for example, an MSB page) in each physical block.
  • Successful inspection read means that all error bits of data read with a predetermined read option can be corrected (for example, correction can be made by ECC (Error Correcting Code)).
  • ECC Error Correcting Code
  • the “predetermined lead option” used for each inspection lead is, for example, the same lead option as the default lead option (for example, lead option 0).
  • the FM controller 32 performs retry read on the same inspection target page, that is, read using another read option.
  • the FM controller 32 can manage each physical block as follows, for example, in the inspection read process. In other words, the FM controller 32 performs a refresh process on a physical block including an error-correctable page if there is at least one error-correctable page (a page to be inspected in which reading using any read option fails).
  • the physical block is managed as a lifetime block (non-reusable physical block).
  • the FM controller 32 refreshes the physical block including the retry successful page if there is no error-correctable page but there is a retry successful page (page where the retry read succeeded after the test read failed). Processing is performed, and the physical block is managed as an empty physical block (reusable physical block). Further, even if the inspection read is successful, the FM controller 32, if the number of error bits of the data read by the inspection read exceeds a certain threshold, applies to the physical block including the read source page of the inspection read. To perform refresh processing. For example, if the number of error bits of data that has been successfully inspected read exceeds a threshold A (for example, a life threshold), the FM controller 32 performs a refresh process on the physical block that includes the read source page of the inspected lead.
  • a threshold A for example, a life threshold
  • the physical block is managed as a lifetime block (non-reusable physical block). Further, for example, if the number of error bits of the data that has been successfully inspected and read is less than the threshold A but exceeds the threshold B (for example, the refresh threshold), the FM controller 32 includes the physical including the read source page of the inspection lead. The block is refreshed, and the physical block is managed as an empty physical block (a reusable physical block). In other words, according to this example, the physical block that is not subjected to the refresh process in the test read process succeeds in the test read for any page to be tested, and the number of error bits of the read data is a predetermined threshold value.
  • “Refresh processing” refers to data (especially valid data) read from a physical block, error-corrected, and the error-corrected data is transferred to another physical block (for example, a physical block having a smaller PE count than the source physical block). It is a process to move.
  • the migration destination physical block is allocated instead of the migration source physical block to the logical area (for example, logical block) to which the migration source physical block has been allocated.
  • the term “refreshed block” means a destination physical block that stores data moved by the refresh process.
  • the NAND-FM 33 is a write-once type, that is, if the logical area to which the physical page is allocated is the write destination, a new free physical is used instead of the allocated physical page in the write destination logical area (for example, logical page).
  • a page is allocated and data is written to the newly allocated physical page. For each logical area, the data written to the newly allocated physical page is “valid data”, the physical page to which valid data is written is “valid page”, and the physical page previously allocated The data stored in is “invalid data”, and the physical page in which invalid data is written is “invalid page”.
  • the inspection lead process described above makes one round. That is, the data stored in the physical block that failed to be read with the read option 0 has been moved to another physical block by the refresh process, so that the data read succeeds. Until the inspection read process is completed once, the success of reading is not guaranteed for all physical blocks. If the inspection read process is completed, it is not necessary to make full use of the retry read in the normal read (synchronous read) performed thereafter.
  • The tendency of error occurrence tends to be different for each die, that is, for each lead option setting unit. For example, physical blocks within the same die tend to degrade at similar speeds.
  • a die is a wafer portion taken (cut out) from a silicon wafer. The quality varies depending on the location on the silicon wafer.
  • a plurality of dies are packaged by a method such as BGA (Ball Grid Array), but the dies are physically separated and physically different as described above. Although there are a plurality of dies in the FMPK 30, the plurality of dies have different parts taken from the wafer, so that the characteristics (for example, error generation tendency) may vary.
  • sub-condition (b) is adopted. That is, even if an uncorrectable error has not occurred in the read source page itself, if an uncorrectable error has occurred in any page in the die including the read source page, the FM controller 32 changes the option. In other words, instead of the default lead option, the lead is read with the optimum lead option corresponding to the die including the read source page. As a result, it is possible to reduce leads that are likely to fail unless the lead option is changed. Therefore, performance is improved.
  • the refreshed block after power interruption is not a physical block left after power interruption. There is no need to lead with the optimal lead option.
  • sub-condition (c) is adopted.
  • the refresh process may be performed for normal reads (synchronous reads) (reads generated in response to a request from the host), reclamation reads, and the like in addition to the case where the inspection read fails.
  • FIG. 43 shows the flow of the optimum option application determination process.
  • the FM controller 32 determines whether or not the sub-condition (a) is satisfied, that is, whether or not the read source block (physical block including the read source page) is a physical block that has been inspected in the inspection read processing for the first round. Judgment is made (S4301).
  • the FM controller 32 determines whether the sub-condition (b) is satisfied, that is, either of the read source die (the die including the read source page). It is determined whether an uncorrectable error has occurred in the page (S4302). If an uncorrectable error has occurred in at least one of normal read (synchronous read), reclamation read, and refresh read for any page of the read source die, the determination result in S4302 is true. .
  • the FM controller 32 determines whether or not the sub condition (c) is satisfied, that is, whether or not the read source block is a refreshed block after power interruption. Is determined (S4303).
  • the FM controller 32 determines whether or not the further sub-condition (d) is satisfied, that is, the read source block Is not an open block (S4304).
  • the FM controller 32 determines to apply the optimum option. (S4305).
  • the FM controller 32 does not apply the optimum option. Is determined (S4306).
  • the optimal option application determination process can be said to be a determination logic as to whether a lead corresponds to case A or case B from one viewpoint.
  • “Case A” is a case where it is desired to avoid applying the optimum option.
  • the PE count data erasure count
  • the elapsed time the time elapsed since the data was written to the first page of the block
  • “Case B” is a case where the optimum option is to be applied, and is, for example, a case corresponding to at least one of a relatively large number of PEs and a relatively long elapsed time.
  • Case A has a high probability of error occurrence and can be read without applying the optimum lead option (it can be read with the default lead option 0 that is also used for the inspection lead). It corresponds to at least one of these. For this reason, it is desirable to avoid applying the optimal lead option.
  • Case B corresponds to at least one of a clear tendency of error occurrence and a high possibility that a read retry will occur when the default read option is used. For this reason, it is desirable to apply the optimum lead option.
  • the number of PEs is relatively small if an uncorrectable error has not occurred in the lead source die until the inspection lead processing makes one round after power interruption.
  • the default lead option (lead option to be selected first) is fixed to a predetermined lead option, for example, lead option 0. Since the lead option is fixed to the lead option 0, the simplified information illustrated in FIG. 41 is adopted as in the second embodiment rather than using the successful read count management information 452 in the first embodiment, and It is considered more efficient to determine the lead option to be used by logic.
  • the FM controller 32 associates each physical block with information (hereinafter referred to as a power failure flag) indicating a physical block that has undergone a power failure, and the physical block becomes a refreshed block after the power failure. In some cases, the power interruption flag associated with the physical block may be deleted.
  • each physical block is a refreshed block after power interruption can be determined based on the presence or absence of the power interruption flag.
  • the FM controller 32 manages the erase time for each physical block after the power interruption, and the physical block that has undergone the power interruption from the erase time of each physical block. Whether it is a block or not can be determined.
  • the PE count is relatively large and the elapsed time is relatively long. Are determined as candidates for at least one corresponding physical block.
  • the optimal option application determination process and the environment / option simple management information 4501 can increase the possibility of the first read being successful without the number of successful reads (success counter).
  • the sub condition (d) is as follows.
  • Open block is a physical block in which data is written up to an intermediate physical page (at least a physical block in which data is written on the first page but a free page still remains).
  • N is an integer of 2 or more
  • data is written up to the Xth page (X is an integer of 2 or more and smaller than N).
  • Y is a deteriorated (error occurrence rate is increased)
  • Y is 1). Or an integer). If all pages have been written, such characteristic deterioration does not occur.
  • the characteristic deterioration due to the open block does not depend on the characteristics of the entire die. Therefore, a read option that succeeds in reading in another block in the die does not always succeed, and even if data can be read from the open block with the optimal read option, it can be used in other blocks in the die. Is not limited. From this point of view, if the read source block is an open block, the FM controller 32 determines that the optimum option is not applied.
  • FIG. 44 shows the flow of read processing according to the second embodiment.
  • the FM controller 32 performs the optimum option application determination process shown in FIG. 43 (S4401).
  • the FM controller 32 identifies the optimum read option corresponding to the read source die from the environment / option simple management information 4501, and identifies the identified optimum lead. Set options for the lead die. On the other hand, if it is determined that the optimum option is not applied (S4401: False), the FM controller 32 sets the default read option 0 for the read source die.
  • the FM controller reads the read source page with the read option set for the read source die (S4404).
  • the FM controller 32 switches the lead option set for the read source die to another lead option according to the rule illustrated in FIG. 42 (S4406), and the read option after the switching Then, reading is performed (S4404).
  • the FM controller 32 checks whether or not the optimum option application is determined (S4407).
  • the reason for the check in S4407 is to avoid rewriting the optimum lead option corresponding to the read source die to the default lead option 0 when the optimum option is not applied. That is, when the optimum option is not applied, the lead option at the time of successful read may be the default lead option 0. However, when S4409 described later is performed, the optimum lead option corresponding to the read source die is the default lead option. It will be rewritten to 0.
  • the check in S4407 is for avoiding such a situation.
  • S4407 is a process for checking the result of S4401, and is not the process of FIG.
  • the FM controller 32 determines whether or not the read option at the time of successful read is different from the optimum read option specified in S4402 ( S4408). If the determination result in S4408 is true (S4408: True), the FM controller 32 records the read option at the time of successful read in the environment / option simple management information 4501 as the optimum read option corresponding to the read source die (S4409). ).
  • the setting of various RR threshold values and the command execution control for preventing frequent switching of setting options described in the first embodiment can be applied to the second embodiment.
  • the optimum option application condition may be satisfied when at least one of the sub-conditions (a) to (d) is satisfied.
  • S4301 (subcondition (a)) in FIG. 43 even during the period in which the inspection read processing for the first round after power interruption is being performed, the read source page is the inspection lead for the first round.
  • the determination result in S4301 may be false (S4301: False).
  • the FM controller 32 performs control using the successful read count management information 452 illustrated in FIG. If the memory capacity of the FM controller 32 is less than the threshold, control using the environment / option simple management information 4501 illustrated in FIG. 41 may be performed.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

 不揮発メモリデバイスが、不揮発メモリと、リードオプションを用いて不揮発メモリに対してリードを実行するメモリコントローラとを有する。不揮発メモリは、複数のメモリ領域ユニット(例えば後述のダイ)を含み、各メモリ領域ユニットが、複数のメモリ領域(例えばページ)を含む。メモリコントローラが、リード単位であるメモリ領域よりも大きな単位であるメモリ領域ユニット毎にリードオプションを記録した管理情報を保持する。メモリコントローラが、リード元メモリ領域を含んだメモリ領域ユニットを特定し、特定したメモリ領域ユニットに対応したリードオプションを選択し、選択したリードオプションを用いてリード元メモリ領域に対するリードを実行する。

Description

不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置
 本発明は、概して、不揮発メモリからのデータのリードに関する。
 不揮発メモリデバイスとして、例えば、複数のチップ(フラッシュメモリチップ)を有するフラッシュメモリデバイスが知られている。チップが微細化されていると、エラーの発生率が高い傾向があり、故に、リードリトライの頻度が高い傾向にある。リードリトライに関する技術が、特許文献1に開示されている。特許文献1によれば、チップ毎にリードリトライ回数の基準値が設定されており、リード元チップについてリードリトライの回数が基準値を超えていなければ、通常リードが実施され、リード元チップについてリードリトライ回数が基準値を超えていれば、直前回のリードリトライでリードできた電圧Vthでリトライリードが実施される。リードリトライでは、リードオプション(例えば番号)の選択が行われる。フラッシュメモリデバイスは、選択されたリードオプション(厳密には、選択されたリードオプションに対応したリード方式)でリードを行う。リード方式としては、例えば、電圧Vthの変更がある。リードリトライを行わない場合に、リードコマンドで、リードリトライを行わないことを意味するリードオプションが選択されてもよい。
US2011/0066899
 リードリトライを繰り返し実施するとリード性能が低下してしまう。特許文献1によれば、リード元チップについてリードリトライ回数が基準値を超えている場合に直前回のリードリトライでリードできたリードオプションでリードリトライが実施されるが、リードリトライ回数が基準値を超えている場合に直前回のリードオプションでリードリトライをしたからといってリードリトライに成功するとは限らない。
 この種の問題は、フラッシュメモリデバイス以外の不揮発メモリデバイスにもあり得る。
 不揮発メモリデバイスが、不揮発メモリと、リードオプションを用いて不揮発メモリに対してリードを実行するメモリコントローラとを有する。不揮発メモリは、複数のメモリ領域ユニット(例えば後述のダイ)を含み、各メモリ領域ユニットが、複数のメモリ領域(例えば物理ページ)を含む。メモリコントローラが、リード単位であるメモリ領域よりも大きな単位であるメモリ領域ユニット毎にリードオプションを記録した管理情報を保持する。メモリコントローラが、リード元メモリ領域を含んだメモリ領域ユニットを特定し、特定したメモリ領域ユニットに対応したリードオプションを選択し、選択したリードオプションを用いてリード元メモリ領域に対するリードを実行する。
 不揮発メモリにおけるリード元メモリ領域を含んだメモリ領域ユニットに対応したリードオプションが選択され、選択されたリードオプションを用いてリードが実行される。これにより、リードリトライの発生頻度を減らすことができ、以って、リード性能の低下を減らすことができる。
実施例1の概要を示す。 FMPK30の構成例を示す。 実施例1に係るストレージ装置の構成例を示す。 FM I/F46とNAND-FM33の接続を示す。 FMチップ403の構成を示す。 リード成功回数管理情報452の構成を示す。 リード成功回数統計の一例を示す。 リード成功回数の減算と加算の一例を示す。 実施例1に係るリード処理の流れを示す。 図9のS901の処理の詳細を示す。 条件判断規則の一例を示す。 図9のS906の処理の詳細を示す。 構成テーブル256の構成を示す。 RR閾値の設定に使用されるコマンドの構成を示す。 RR閾値設定画面を示す。 RAID制御プログラム251が行う処理の流れの一例を示す。 第1のRR閾値設定処理の流れを示す。 FMPK30においてFM制御プログラム442が行う処理を示す。 フラッシュデバイス構成情報443の構成を示す。 RAID管理テーブル254の構成を示す。 閉塞管理テーブル255の構成を示す。 チェック応答の一例を示す。 特殊リード要求の一例を示す。 モードセレクトコマンドで設定されたリードモードより特殊リード要求で指定されたリードモードが優先されることの模式図である。 同一FMPK30からチェック応答を受信した回数が所定回数に達した場合に行われる処理の第1の例を示す。 RAIDレベルと閉塞FMPK数との組合せ毎に追加リトライを許可するか否かを表す情報の一例を示す。 特殊リード要求生成処理の流れを示す。 同一FMPK30からチェック応答を受信した回数が所定回数に達した場合に行われる処理の第2の例を示す。 図25と図28のどちらの処理を実行するかの分岐の一例を示す。 コマンドを受信したFMPK30のFMコントローラ32により行われる処理の流れを示す。 リードコマンド実行の比較例を示す。 実施例1に係るリードコマンド実行の説明図である。 リードコマンドの構成を示す。 エンキュー先決定テーブルの構成を示す。 第1の実行制限テーブル3600の構成を示す。 単価テーブル3700の構成を示す。 第2の実行制限テーブル3800の構成を示す。 累積カウンタテーブル3900の構成を示す。 同期RDコマンドのエンキュー制御処理の一例を示す。 実施例2の概要を示す。 環境/オプション簡易管理情報4501の構成を示す。 実施例2に係るリードオプション切替えルールを示す。 実施例2に係る最適オプション適用判定処理の流れを示す。 実施例2に係るリード処理の流れを示す。
 以下、図面を参照して、幾つかの実施例を説明する。
 なお、以下の説明では、「kkkテーブル」又は「kkkキュー」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「kkkテーブル」及び「kkkキュー」のうちの少なくとも1つを「kkk情報」と呼ぶことができる。
 また、以下の説明では、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外種類の識別情報(例えば、英字や符号を含んだ識別子)も採用可能である。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェイスデバイス(例えば通信ポート)を用いながら行うため、処理の主語がプロセッサ(又はそのプロセッサを有するコントローラ等の装置)とされてもよい。逆に、プロセッサ(又はそのプロセッサを有するコントローラ等の装置)が主語となっている処理は、1以上のプログラムを実行することにより行われると解釈することができる。また、プロセッサは、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。コンピュータプログラムは、プログラムソースから各計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
 また、以下の説明では、通信インターフェイスデバイスを「I/F」と略記することがある。
 また、以下の説明では、不揮発メモリを有する不揮発メモリデバイスとして、フラッシュメモリを有するフラッシュメモリデバイス(以下、フラッシュメモリパッケージを略して「FMPK」と言う)を例に取るが、フラッシュメモリデバイスに代えて、他種の不揮発メモリ(例えば、磁気抵抗メモリであるMRAM(Magnetoresistive Random Access Memory)、抵抗変化型メモリであるReRAM(Resistance Random Access Memory)、或いは、強誘電体メモリであるFeRAM(Ferroelectric Random Access Memory)等の半導体メモリ)を有した不揮発メモリデバイスを採用することもできる。
 また、FMPKは、上位装置からコマンドを受けて処理を実行するが、以下、上位装置から受けるコマンドのうちリードコマンドを「リード要求」と言いライトコマンドを「ライト要求」と言う。一方、FMPK内で発行されるリードコマンドを「リードコマンド」と言いライトコマンドを「ライトコマンド」と言う。
 図1は、実施例1の概要を示す。
 フラッシュメモリパッケージ(以下、FMPK)30が、NANDフラッシュメモリ(以下、NAND-FM)33と、NAND-FM33に接続されたフラッシュメモリコントローラ(以下、FMコントローラ)32とを有する。FMコントローラ32は、FMPK30の上位装置(図示せず)からのリード要求に応答して、或いは、上位装置からのコマンドとは無関係(非同期)に行われる内部処理の一環として、リード処理を行う。FMコントローラ32は、上位装置からのリード要求に応答してリード処理を実行した場合、そのリード処理により読み出されたデータを含んだ応答(リード要求に従うリード対象のデータを含んだ応答)を、上位装置に送信するようになっている。
 FMコントローラ32は、リード処理において、リードオプションを用いてNAND-FM33に対するリードを行うようになっている。FMコントローラ32は、リード環境毎に、リード成功回数統計(例えば、リードオプションとリード成功回数との関係を表す情報)を管理し、リードの成功の都度にリード成功回数統計を更新することができる。リード環境は、複数(又は1つ)のリード影響属性(リードの成否に影響し得ると定義された属性)の属性値の組合せにより定義される。なお、本実施例において、「リードの成功」とは、リードされたデータの全てのエラービットを訂正できる(例えば、ECC(Error Correcting Code)により訂正できる)ことであり、「リードの失敗」とは、データをリードできなかった(すなわち、リードされたデータが全てのエラービットを訂正できないほどに多くのエラービットを有していた)である。
 FMコントローラ32は、NAND-FM33からのリードの際に、リード元領域が属するリード環境に対応したリード成功回数統計から、尤もらしいリードオプション(典型的には最大のリード成功回数に対応したリードオプション)を選択し、選択したリードオプションを用いてリードを実行する。
 このように、FMコントローラ32は、NAND-FM33からのリードの都度に、リード元領域が属するリード環境のリード成功回数統計を基に、尤もらしいリードオプションを予め選択し、選択したリードオプションに従いリードを実行する。このため、リードリトライの発生頻度を減らすことができ、以って、リード性能の低下を減らすことができる。
 以下、本実施例を詳細に説明する。
 図2は、FMPK30の構成例を示す。
 FMPK30は、NORフラッシュメモリ(以下、NOR-FM)31と、FMコントローラ32と、NAND-FM33とを有する。
 NOR-FM31は、CPU42により実行されるプログラム及びCPU42により使用される情報のうちの少なくとも一方を記憶する。NAND-FM33は、1以上のNAND-FMチップを含む。NAND-FMチップは、SLC(Single level Cell)型であってもよいしMLC(Multi Level Cell)型であってもよい。NAND-FM33には、上位装置20からライト要求を受けたFMコントローラ32が発行するライトコマンドに従いデータが格納される。
 FMコントローラ32は、CPU42と、SAS(Serial Attached SCSI) I/F41と、バススイッチ43と、メモリI/F47と、低速メモリ45と、高速メモリ44と、FM I/F46とを含む。
 SAS I/F41は、上位装置20に接続される通信インターフェイスデバイスであり、上位装置20とバススイッチ43側の部位との間のデータ通信を仲介する。SAS I/F41は、上位装置20とSASに従ってデータ通信を行う。上位装置20は、後述のストレージコントローラであるが、ストレージコントローラに代えて、PC(Personal Computer)のような計算機であってもよい。
 バススイッチ43は、CPU42、SAS I/F41、メモリI/F47、及びFM I/F46に接続され、これら部位の間のデータを中継する。
 メモリI/F47は、低速メモリ45と接続される通信インターフェイスデバイスであり、低速メモリ45に対するデータの入出力を制御する。
 低速メモリ45は、例えば、DRAM(Dynamic Random Access Memory)又は不揮発メモリであり、CPU42による処理に使用する各種データ等を記憶する。低速メモリ45は、FM(フラッシュメモリ)管理情報451と、リード成功回数管理情報452と記憶する。
 FM管理情報451は、NAND-FM33の管理に必要な情報を記憶する。リード成功回数管理情報452は、フラッシュメモリ制御プログラム442から設定及び参照され、リードが成功した回数を、FMPK30における管理単位を基に保持する。FMPK30における管理単位については、後述する。
 高速メモリ44は、例えば、SRAM(Static Random Access Memory)であり、CPU42と直接接続されている。高速メモリ44は、CPU42により実行されるプログラム等を記憶する。本実施例では、高速メモリ44は、フラッシュメモリ制御プログラム(以下、FM制御プログラム)442と、フラッシュデバイス構成情報443とを記憶する。FM制御プログラム442は、上位装置20からのコマンドを受信し、実行する制御を行う。また、FM制御プログラム442は、NAND-FM33に関する各種処理を実行する。フラッシュデバイス構成情報443は、上位装置(ストレージコントローラ)20からの指示を受けてCPU42により設定されたモードパラメータ及びRR閾値(リードリトライ回数の閾値)を有する。
 FM I/F46は、NAND-FM33と接続される通信インターフェイスデバイスであり、NAND-FM33に対するデータの入出力を制御する。
 FMPK30の構成は、図2の構成に限られない。例えば、NOR-FM31は無くてもよく、NOR-FM31内のプログラム又は情報は、高速メモリ44及び低速メモリ45のうちの少なくとも1つに格納されてよい。また、高速メモリ44及び低速メモリ45のように性能の異なる複数のメモリに代えて、性能が同じ1以上のメモリが採用されてよい。
 図3は、実施例1に係るストレージ装置の構成例を示す。
 ストレージ装置300は、上位装置20の一例としてのストレージコントローラ20と、FMPK30と、SAS-HDD302と、SATA(Serial ATA)-HDD301とを有する。FMPK30と、SAS-HDD302と、SATA-HDD301とのうちの少なくとも1つは、1以上であってもよい。本実施例では、複数のFMPK30で構成されたRAID(Redundant Array of Independent (or Inexpensive) Disks)グループと、複数のSAS-HDD302で構成されたRAIDグループと、複数のSATA-HDD301で構成されたRAIDグループがある。
 ストレージコントローラ20は、ホストI/F21と、RAID制御部22と、管理I/F25と、バックエンドインターフェイスデバイス(バックエンドI/F)24とを有する。
 ホストI/F21は、ホスト計算機(以下、ホスト)10とストレージコントローラ20との間のデータのやり取りを仲介する通信インターフェイスデバイスである。ホスト10は、ストレージコントローラ20に対して、処理に使用するデータの入出力を行う。
 管理I/F25は、管理端末70との間のデータのやり取りを仲介する通信インターフェイスデバイスである。管理端末70は、計算機であり、管理者からの入力を受け付ける入力部(例えばキーボード及びポインティングデバイス)(図示せず)と、管理者に対して情報を出力(典型的には表示)する出力部(例えば表示デバイス)(図示せず)とを有する。
 バックエンドI/F24は、FMPK30、SAS-HDD302及びSATA-HDD301といったPDEVとの間のデータのやり取りを仲介する。バックエンドI/F24は、SASコントローラ241と、SASエクスパンダ(以下、エクスパンダ)242とを有する。エクスパンダ242は、スイッチデバイスの一例であり、複数のPDEV(30、301及び302)と接続可能であり、SASコントローラ241と、PDEVとのデータのやり取りを仲介する。SASコントローラ241は、PDEVとの間でSASに従ってデータ通信を行う。
 RAID制御部22は、ホスト10からPDEVにアクセスするための制御を行う。RAID制御部22は、CPU221と、キャッシュメモリ222と、タイマ223と、メモリ224とを含む。キャッシュメモリ222は、PDEVに入出力するデータをキャッシュする。タイマ223は、時間経過を測定する。CPU221は、メモリ224が記憶するプログラムや、データを使用して、各種処理を実行する。
 メモリ224は、CPU221が実行するプログラムや、CPU221が使用するデータを記憶する。具体的には、メモリ224は、RAID制御プログラム251と、RAID管理テーブル254と、閉塞管理テーブル255と、構成テーブル256とを記憶する。
 RAID制御プログラム251は、RAID管理テーブル254を基にRAIDグループに対するRAID制御を行う。また、RAID制御プログラム251は、閉塞管理テーブル255を参照し、閉塞しているFMPK30を含んだRAIDグループがあれば、閉塞しているFMPK30の数に応じたリトライ回数を、そのRAIDグループを構成するFMPK30に通知する。また、RAID制御プログラム251は、管理端末70と通信を行う。また、RAID制御プログラム251は、システム動作の規定に従いFMPK30のリトライ回数制限パラメータの設定を行う。また、RAID制御プログラム251は、RAID制御プログラム251からコマンド発行の要求を受け、その要求に従い、バックエンドI/F24を経由しFMPK30へコマンドを発行する。
 RAID管理テーブル254は、RAIDグループの構成に関する情報を有するテーブルである。閉塞管理テーブル255は、RAIDグループを構成するFMPK30の状態(正常か閉塞か等)を表す情報を有するテーブルである。構成テーブル256は、ストレージコントローラ20の動作を決定するための数値(例えばリトライ回数)を有するテーブルである。
 本実施例では、ストレージコントローラ20とPDEVとがSASプロトコルに従い通信するが、ストレージコントローラとPDEVは、SAS以外のプロトコル(例えばPCIe(PCI-Express))で互いに通信してもよい。
 図4は、FM I/F46とNAND-FM33の接続を示す。
 NAND-FM33は、複数のNAND-FMチップ(以下、FMチップ)403を含む。
 FM I/F46に、複数のフラッシュメモリアクセスバス(以下、FMバス)402が接続されている。複数のFMバス402に、それぞれ、複数のFMチップ群405が接続されている。各FMチップ群405は、2以上(又は1つ)のFMチップ403を含んでいる。異なる複数のFMバス402に接続されている複数のFMチップ403が、同一のCE(チップイネーブル)ラインに接続されている。CEラインを流れるCE信号によりダイを有効にすることができる。
 FM I/F46は、FMバスの番号とCEラインの番号とを選択することで所望のFMチップ403にアクセスすることができる。
 図5は、FMチップ403の構成を示す。
 FMチップ403は、第1及び第2のダイ501で構成されている。各ダイ501は、第1及び第2のプレーン502で構成されている。各プレーン502は、複数のブロック(物理ブロック)503を有し、各ブロック503は、複数のページ(物理ページ)504で構成されている。FMチップ403では、ページ単位でデータが入出力され、ブロック単位でデータが消去される。第1プレーン502には、奇数ブロック(奇数番号のブロック)が含まれ、第2プレーン502には、偶数ブロック(偶数番号のブロック)が含まれていてよい。
 各ブロック503が、2種類のLSB(Least Significant bit/byte)ページ(LSB1ページ、LSB2ページ)と、2種類のMSB(Most Significant bit/byte)ページ(MSB1ページ、MSB2ページ)とを含むように、各ページ504が、上記4種類のページのうちのいずれかとされている。図5におけるブロック構成は、一例であり、ブロック構成は、チップ及びメーカのうちの少なくとも1つに依存してよい。LSBページのページは1種類であっても3種類以上であってもよく、同様に、MSBページも1種類であっても3種類以上であってもよい。
 なお、本実施例において、FMチップ、ダイ、プレーン、ブロック及びページは、それぞれ、NAND-FM33の1つの管理単位である。1つのFMチップ403が有するダイの数、及び、各ダイが有するプレーンの数のうちの少なくとも1つは、上記に限定されない。また、必ずしも、ダイ及びプレーンといった管理単位が無くてもよい。
 図6は、リード成功回数管理情報452の構成を示す。
 リード成功回数管理情報452は、複数のリード環境の各々について、リードオプション毎に成功カウンタを有する。成功カウンタは、その成功カウンタに対応したリード環境及びリードオプションでのリード(NAND-FM33からのリード)に成功した回数を表す。
 「リード環境」は、複数(又は1つ)のリード影響属性にそれぞれ対応した複数の属性値で定義される。
 「リード影響属性」は、リードの成否に影響し得ると定義された属性である。リード影響属性として、例えば、PE回数(データの消去回数)、経過時間(ブロックの先頭ページにデータが書き込まれてから経過した時間)、FMバス番号(どのFMバス経由のリードであるか)、CE番号(どのCEライン経由で選択されたFMチップからのリードであるか)、ダイ番号(どのダイ501からのリードであるか)、プレーン番号(どのプレーン502からのリードであるか)、及び、ページ種類(どのページ種類に該当するページからのリードであるか)がある。ページ種類(MSB/LSB)が違っているとページの特性が違っていることが一般的であり、そのため、ページ種類の違いは、リード成否に影響し得る。また、PE回数、経過時間、FMバス、CEライン、ダイ及びプレーン(偶数ブロック、奇数ブロック)の違いも、リード成否に影響し得る。図6に記載されているリード影響属性のうちの少なくとも1つに代えて又は加えて、他種のリード影響属性、例えば、温度及びプロセスばらつき度合のうちの少なくとも1つが採用されてもよい。
 リード成功回数管理情報452は、更に、選択オプション番号、MAXカウンタ及びMAXオプション番号を有する。「選択オプション番号」は、オプション管理単位についてデバイス(例えばNAND-FM33)に設定済のリードオプション(設定オプション)の番号である。オプション管理単位は、データのリード/ライト単位であるページより大きい管理単位であり、図6の例によればダイである。リードの時は、そのリードのリード元ページが属するオプション管理単位の設定オプションが用いられる。このため、リードについて選択されたリードオプションが、そのリードのリード元ページが属するオプション管理単位の設定オプションと違っていれば、設定オプションを選択されたリードオプションに変更し、変更後の設定オプションを用いてリードが実行される。オプション管理単位は、データのリード/ライト単位より大きい管理単位であればどのような管理単位でもよい。「MAXカウンタ」は、所定の2以上のリード環境(例えば、リードオプション番号以外のリード影響属性の属性値が同じ2以上のリード環境)にそれぞれ対応した2以上の成功カウンタのうちの最大値である。「MAXオプション番号」は、MAXカウンタと同じ値の成功カウンタに対応したリードオプション番号である。
 FM制御プログラム442は、NAND-FM33からのリードの都度に、リードオプションを選択し、選択したリードオプションに従うリードを実行する。具体的には、例えば、FM制御プログラム442は、リード元のページが属するリード環境、すなわち、リード元ブロック(リード元ページを含んだブロック)のPE回数が属するPE回数レンジ、リード元ブロックについての経過時間、リード元ページを含んだFMチップが接続されているFMバスの番号、リード元ページを含んだFMチップが接続されているCEラインの番号、リード元ページを含んだダイの番号、リード元ページを含んだプレーンの番号、及び、リード元ページの種類を、FM管理情報451から特定する。そして、FM制御プログラム442は、特定したリード環境についてのリード成功回数統計を基に、複数のリードオプションから尤もらしいリードオプションを選択する。「リード成功回数統計」は、例えば、図7に示すように、複数のリードオプションと複数の成功カウンタ(値)の関係である。リード成功回数統計(すなわち、リードオプションと成功カウンタの関係)は、リード環境毎に異なり得る。尤もらしいリードオプションは、例えば、上記特定されたリード環境について1番大きい成功カウンタに対応したリードオプションである。
 上記特定されたリード環境について上記選択されたリードオプションを用いたリードが成功した場合、FM制御プログラム442により、そのリード環境及びリードオプションに対応した成功カウンタに値が加算(例えば1が加算)される。
 上記特定されたリード環境について上記選択されたリードオプションを用いたリードが失敗した場合、FM制御プログラム442は、上記リード成功回数統計を基に、次に尤もらしいリードオプション(例えば、次に大きい成功カウンタに対応したリードオプション)を選択し、選択したリードオプションに従いリードを実行する。このようなリードリトライは、所定の条件(例えばリードリトライ回数が所定回数以下である)を満足しなくなるまで行われ、所定の条件が満足されなくなった場合、アンコレクタブルエラーとして処理が終了する。
 以上の通り、FMコントローラ32は、NAND-FM33からのリードの都度に、リード元ページが属するリード環境のリード成功回数統計(リードオプションとリード成功回数の関係)を基に、尤もらしいリードオプションを予め選択し、選択したリードオプションに従いリードを実行する。このため、リードリトライの発生頻度を減らすことができ、以って、リード性能の低下を減らすことができる。また、リードの成功の都度に、成功したリードの際に使用されたリードオプションに対応したリード成功回数が更新されるので、リード成功回数統計の正確性が向上し、故に、リードの際に選択される尤もらしいリードオプションの適切性の向上が期待できる。
 なお、上記特定されたリード環境について選択された尤もらしいリードオプション(例えばリードオプション0)に従うリードが失敗した場合、FM制御プログラム442により、そのリードオプションに対応した成功カウンタから値が減算(例えば1が減算)されてもよい(図8の参照符号801)。これにより、リードに成功したリードオプションの成功カウンタ(別の観点で言えば選択の優先度)を相対的により大きくすることができる。なぜなら、次に尤もらしいリードオプション(例えばリードオプション1)に従うリードが成功した場合、上述のように、そのリードオプションに対応した成功カウンタの加算が行われるからである(図8の参照符号802)。リード失敗時のリードオプションに対応する成功カウンタの減算は、リード失敗の都度に行われてもよいし、リード失敗に対応するリードオプションの成功カウンタと次に尤もらしいリードオプションの成功カウンタとの差が所定値未満になった場合に行われてもよい。
 また、リードは、通常リード(ストレージコントローラ20からのリード要求に従うリード)に限らず、他種のリード、例えば、リクラメーションリード(リクラメーション処理の際に発生するリード)、リフレッシュリード(リフレッシュ処理の際に発生するリード)、及び、非同期リードの少なくとも1つであってもよい。「非同期リード」とは、ストレージコントローラ20からのリード要求と無関係(非同期)に発生するリードである。いずれのリードも、FM制御プログラム442により行われてよい。非同期リードの一例として、検査リードがあってよい。検査リードでは、リードされたデータのエラービット数が検出され、検出されたエラービット数が所定の1以上の閾値の各々と比較される。検査リードについては、実施例2においてより詳細に記述する。
 また、FM管理情報451は、リード元のページのリード環境を特定できるような構成になっている。具体的には、例えば、FM管理情報451は、ページ毎に、PE回数(ページを含んだブロックのデータ消去回数)、経過時間(ページを含んだブロックの先頭ページにデータをライトしてからの経過時間)、FMバス番号(ページを含んだFMチップが接続されているFMバスの番号)、CE番号(ページを含んだFMチップが接続されているCEラインの番号)、FMチップ番号(ページを含んだFMチップの番号)、ダイ番号(ページを含んだダイの番号)、プレーン番号(ページを含んだプレーンの番号)、及び、ページ種類(ページの種類)を有してよい。FM管理情報451は、FM制御プログラム442により所定の処理(例えばブロックからのデータの消去)が行われた場合、FM制御プログラム442により更新されてよい。
 図9は、リード処理の流れを示す。
 FM制御プログラム442は、リード元のページ(例えば、リード元の論理アドレスに割り当てられているページ)に対応したリード環境(PE回数、経過時間、FMバス番号、CE番号、ダイ番号、プレーン番号及びページ種類)を、FM管理情報451から特定し、特定したリード環境を用いてリード成功回数管理情報452(リード成功回数統計)を参照し、そのリード環境について、尤もらしいリードオプションを選択する(S901)。具体的には、例えば、FM制御プログラム442は、図10に示すように、特定したリード環境に対応したMAXオプションを、リード成功回数管理情報452から取得する(図10:S1001)。
 FM制御プログラム442は、S901で選択したリードオプションの番号が、特定したリード環境におけるダイ(リード元ページを含んだダイ)に対応した選択オプション番号と一致するか否かを判断する(S902)。
 S902の判断結果が偽の場合(S902:False)、FM制御プログラム442は、リード元ページを含んだダイについての設定オプションを、S901で選択したリードオプションに変更する(S908)。
 S902の判断結果が真の場合(S902:True)、又は、S908の後、FM制御プログラム442は、S901で選択したリードオプションを用いてリードを実行する(S903)。すなわち、FM制御プログラム442は、S901で選択したリードオプションを用いて、リード元ページのページからデータをリードするためのリードコマンドを、リード元ページを含んだFMチップに送信し、そのリードコマンドに応答して、リード元ページ内のデータを受信する。
 FM制御プログラム442は、リードが成功か否かを判断する(S904)。リードが成功とは、例えば、リードコマンドをNAND-FM33に発行してから所定時間以内にNAND-FM33からデータを受信し、且つ、そのデータが正しいことでよい。
 S904の判断結果が偽の場合(S904:False)、つまりリード失敗の場合、FM制御プログラム442は、条件が満足されているか否かを判断する(S905)。条件が満足されているか否かは、例えば、図11に示す条件判断規則に従う。図11の規則によれば、条件として、(条件:a)未選択のリードオプションがあること、(条件:b)このリード処理におけるリードリトライ(RR)回数がRR閾値以下であること、及び、(条件:c)このリード処理において最初にリードコマンドを発行してからの時間が制限時間以下であること、がある。(条件:a)~(条件:c)の全てが偽の場合(すなわち、(条件:a)~(条件:c)のいずれも満たされていない場合)、S905の判断結果が偽となる。一方、(条件:a)~(条件:c)の少なくとも1つが真の場合(すなわち、(条件:a)~(条件:c)の少なくとも1つが満たされている場合)、S905の判断結果が真となる。(条件:a)が偽でも(つまり未選択のリードオプションが無くても)S905の判断結果が真となり得る設定になっている理由は、リード失敗時のリードオプションと同じリードオプションを使用した再度のリードに成功する可能性があるからである。なお、図11に示す規則は、一例であり、どんな条件が満たされている場合にS905の判断結果がどのようになるかの規則は、図11に示す規則に限定されない。また、条件判断規則は、同一のRAIDグループにおける全てのFMPK30において同じでもよいし、FMPK30によって条件判断規則が異なっていてもよい。また、上記RR閾値及び制限時間は、ストレージコントローラ20から所定のコマンド(例えば図14に示すコマンド)により設定可能である。
 S905の判断結果が偽の場合(S905:False)、FM制御プログラム442は、リード元ページについてアンコレクタブルエラーを応答し(S907)、リード処理を終了する。
 S905の判断結果が真の場合(S905:True)、FM制御プログラム442は、このリード処理において直前回(S901又はS906)に選択されたリードオプションの次に尤もらしいリードオプションを選択し(S906)、設定オプションを、S906で選択したリードオプションに変更し(S908)、変更後の設定オプションを用いてリードを実行する(S903)。なお、S906では、具体的には、例えば、FM制御プログラム442は、図12に示すように、直前回に選択されたリードオプションの成功カウンタの次に大きい成功カウンタ(無ければ最も大きい成功カウンタ)をリード成功回数管理情報452から特定し(図12:S1201)、特定した成功カウンタに対応したリードオプション番号をリード成功回数管理情報452から取得する(図12:S1202)。
 S904の判断結果が真の場合(S904:True)、つまりリード成功の場合、FM制御プログラム442は、リード成功時のリードオプション(S901又は直前のS906で選択されたリードオプション)に対応した成功カウンタに1を加算する(S909)。FM制御プログラム442は、加算後の成功カウンタが、上記特定されたリード環境に対応するMAXカウンタを超えたか否かを判断する(S910)。
 S910の判断結果が真の場合(S910:True)、FM制御プログラム442は、上記特定されたリード環境に対応するMAXカウンタ(リード成功回数管理情報452におけるMAXカウンタ)を、S909の加算後の成功カウンタの値に更新し(S911)、且つ、上記特定されたリード環境に対応するMAXオプション番号を、リード成功時のリードオプションの番号に更新する(S912)。
 S910の判断結果が偽の場合(S910:False)、又は、S911及び912の後、FM制御プログラム442は、上記特定されたリード環境に対応する選択オプション番号を、リード成功時のリードオプションの番号に更新する(S913)。なお、S910:Trueの場合のS913では、FM制御プログラム442は、このリード処理でのリード元ページを含んだダイの設定オプションを、S912の更新後のMAXオプションに変更してもよい。
 以上が、リード処理の説明である。なお、リード処理において、上記特定されたリード環境に対応する選択オプション番号と、リード成功時のリードオプションの番号が同じであれば、S913がスキップされてもよい。また、S902及びS908が無く、S901の次にS903が行われてもよい。また、本実施例では、常にリードオプション最適化が行われるのではなく、一定の条件でリードオプション最適化が行われてもよい。例えば、リードオプションの最適化を行わなくても良い条件が満たされている場合、常に通常リード(例えば、通常リードを意味するリードオプション(例えばオプション番号=0)を指定したリード)が行われてよい。S901では、FM制御プログラム442は、リードオプション最適化を行う条件が満たされているか否かを基に、図10の処理を行うか否かを決定してよい。通常リードの場合、通常リードを意味するリードオプションがNAND-FM33に未設定であれば、S908で、そのリードオプションが設定されてよい。
 ところで、リード不可ページが存在し得る。「リード不可ページ」とは、リードオプションを切り替えながらリードリトライを何回行ってもデータをリードできないページである。リード元ページがリード不可ページであるにも関わらずリードリトライを繰り返し実行すると、無駄に時間がかかりリード性能が大きく低下し得る。リードリトライに時間をかけるよりも、ストレージコントローラ20によりデータを復旧することが好ましい場合も存在し得る。逆に、できるだけリードリトライを繰り返しリード元ページからデータをリードすることが好ましい場合も存在し得る。これらの状況に応じたリトライ回数は、RAIDグループのRAIDレベルと、RAIDグループにおける閉塞FMPK(閉塞しているFMPK)の数と、冗長性の有無との少なくとも1つに応じて異なることが好ましい。なお、「冗長性の有無」とは、RAIDグループからデータをリードできなくても同じデータを別の記憶資源(例えば別のRAIDグループ)からデータをリードできるか否かであり、例えば、現用系のRAIDグループ(又はストレージ装置300)と待機系のRAIDグループ(又はストレージ装置300)が存在するか否かでよい。性能重視か否かをRAIDグループ毎に表す情報、RAIDレベルをRAIDグループ毎に表す情報(例えばRAID管理テーブル254)、閉塞FMPK数をRAIDグループ毎に表す情報(例えば閉塞管理テーブル255)、及び、冗長性の有無をRAIDグループ毎に表す情報が、FMPK30の上位装置であるストレージコントローラ20により管理されている。
 そこで、本実施例では、ストレージコントローラ20が、FMPKを含んだRAIDグループについて、性能重視か否か、RAIDレベル、閉塞FMPK数、及び、冗長性の有無に基づき、FMPKのRR閾値を決定し、決定したRR閾値を、そのFMPKに設定する。また、ストレージコントローラ20は、RAIDグループ内の閉塞デバイス数が変わった場合、FMPKに設定されているRR閾値を、変更後の閉塞デバイス数に対応したRR閾値に変更するための設定を行う。これにより、FMPK30でのRR閾値をより適切な値とすることができる。
 RR閾値に関する情報でありストレージコントローラ20により管理される情報として、ストレージコントローラ20が有する構成テーブル256がある。
 図13は、構成テーブル256の構成を示す。
 構成テーブル256は、通常RR閾値テーブル部1301、リクラメーションRR閾値テーブル部1302、リフレッシュRR閾値テーブル部1303、及び非同期RR閾値テーブル部1304を有する。「通常RR閾値」は、通常リードのRR閾値(リードリトライ回数の閾値)であり、「リクラメーションRR閾値」は、リクラメーションリードのRR閾値であり、「リフレッシュRR閾値」は、リフレッシュリードのRR閾値であり、「非同期RR閾値」は、非同期リードのRR閾値である。各テーブル部の構成は、同じである。具体的には、各テーブル部は、性能重視か否か、RAIDレベル、閉塞FMPK数、及び、冗長性の有無に応じたRR閾値を有する。
 例えば、テーブル部1301によれば、閉塞FMPK数がRAIDレベル上許容台数に達しており且つ性能重視が設定されていないケースでは、冗長性が無ければ、通常RR閾値(リードオプションを変更しながら通常リードのリードリトライを繰り返す回数の閾値)は、最大値でよい。最大値は、例えば、(X-1)であり、Xは、リードオプションの数である。このようなケースでは、リード性能を犠牲にしてでもデータをリードする必要があるからである。一方、同じケースでも、冗長性があれば、通常RR閾値は、最大値未満でよい。同様に、閉塞FMPK数がRAIDレベル上許容台数に達していても、性能重視が設定されていれば、通常RR閾値は、最大値未満でよい。性能重視が設定されている場合、性能重視が設定されていない場合よりも、RR閾値は小さくてよい。
 また、例えば、テーブル部1301及び1302によれば、性能重視に対応したリクラメーションRR閾値は、性能重視に対応した通常RR閾値より高くてよい。リクラメーションリードは、ストレージコントローラ20からのライト要求の処理において必要に応じてバックグランドで行われるリードだからである。
 また、例えば、テーブル部1303及び1304によれば、性能重視か否か、RAIDレベル、閉塞FMPK数、及び、冗長性の有無のいずれにも関係無く、RR閾値は最大値でよい。リフレッシュリード及び非同期リードは、いずれも、ストレージコントローラ20からのリード要求(及びライト要求)と無関係(非同期)にバックグラウンドで行われるリードだからである。
 ストレージコントローラ20は、構成テーブル256と、性能重視か否かをRAIDグループ毎に表す情報と、RAIDレベルをRAIDグループ毎に表す情報(例えばRAID管理テーブル254)と、閉塞FMPK数をRAIDグループ毎に表す情報(例えば閉塞管理テーブル255)と、冗長性の有無をRAIDグループ毎に表す情報とを基に、FMPKに設定する通常RR閾値、リクラメーションRR閾値、リフレッシュRR閾値及び非同期RR閾値を決定し、決定したそれらのRR閾値を含んだコマンドを、そのFMPKに送信する。
 図14は、RR閾値の設定に使用されるコマンドの構成を示す。
 RR閾値の設定に使用されるコマンドは、例えば、SCSIに従うモードセレクトコマンドである。FMPKに対してモードパラメータの設定変更及び参照ができるのであれば、モードセレクトコマンド以外のコマンド(例えば、ベンダユニークなコマンド)が使用されてもよい。
 モードセレクトコマンドは、例えば、通常RR閾値(READ RETRY COUNT)、リクラメーションRR閾値(RC READ RETRY COUNT)、リフレッシュRR閾値(RF READ RETRY COUNT)、非同期RR閾値(ASYNC READ RETRY COUNT)、リードモードセレクト(READ MODE SELECT)、及び、制限時間(RECOVERY TIME LIMIT)を含む。モードセレクトコマンドは、リード処理のためのリードコマンド送信前に送信されてよく、リードモードセレクトは、複数のリードモード(リードオプションの選択方針)から選択されたリードモードを表すパラメータである。そのパラメータの値として、例えば、第1値(第1リードモード:リード成功回数統計を基にリードオプションを選択)、第2値(第2リードモード:性能遅延を伴うリードオプションを選択)、第3値(第3リードモード:全てのリードオプションを順次選択(例えばダイナミックスペアのため))、及び、第4値(第4リードモード:第4デフォルトのリードオプションを選択)という4種類があってよい。なお、「性能遅延を伴うリードオプション」とは、リード自体に時間がかかるがチップ内部の特殊な処理でリード成功の可能性がより高いリード方式に対応したリードオプションでよい。
 図15は、RR閾値設定画面の一例を示す。
 RR閾値設定画面1500は、GUI(Graphical User Interface)であり、管理端末通信プログラム252により管理I/F25経由で管理端末70に提供され、管理端末70の出力部(図示せず)に表示される。管理者は、性能重視か否か、RAIDレベル、冗長性の有無、及び閉塞FMPK数を基に、各種RR閾値を、管理端末70からRR閾値設定画面1500経由でストレージ装置300のストレージコントローラ20に入力することができる。入力された各種RR閾値が、管理端末通信プログラム252により、構成テーブル256に登録される。
 なお、各種RR閾値は、GUI以外の方法、例えば、コマンド形式のインターフェイスにより入力及び登録されてよい。
 また、性能重視か否かは、換言すれば、性能優先度が大きいか小さいかという意味でよい。性能優先度は、2段階(大きいか小さいか)より多段階であってもよい。
 また、RAIDレベルに代えて又は加えて、他種のRAID構成(例えば、RAIDグループを構成するFMPKの数)も採用されてよい。
 また、複数種類のRR閾値のうちの少なくとも1種類のRR閾値は、より細かい単位で設定されてもよい。例えば、少なくとも1種類のRR閾値は、RAIDグループ毎に指定されてもよいし、RAIDグループの基になっている論理ボリューム毎に指定されてもよい。1つのFMPK30について、論理アドレス範囲(例えば論理ボリュームに対応した範囲)毎に少なくとも1種類のRR閾値が設定されてよい。つまり、1つのFMPK30のFMコントローラ32に、論理アドレス範囲によって異なる同種の複数のRR閾値が設定されてもよい。FMコントローラ32は、リード元ページが割り当てられている論理アドレスが属する論理アドレス範囲に対応したRR閾値を基に、そのリード元ページについてのリード処理において、リードリトライ回数を制御してよい。
 ストレージコントローラ20は、構成テーブル256に登録されているRR閾値を含んだコマンド(例えば図14が例示するモードセレクトコマンド)をFMPK30に送信し、FMPK30のFMコントローラ32が、そのコマンドを受信し、そのコマンド内のRR閾値を記憶する。複数種類のRR閾値を指定したコマンド(モードセレクトコマンド)は、ストレージコントローラ20が、少なくとも1つのRAIDグループについて、性能重視か否か、RAIDレベル、冗長性の有無、及び閉塞FMPK数の少なくとも1つの属性の値の変更を検出した場合に、その変更が検出されたRAIDグループを構成するFMPK30に対して、変更後の属性値に対応したRR閾値を指定したモードセレクトコマンドを送信してよい。以下、RR閾値設定の一連の流れの一例を説明する。
 図16は、RAID制御プログラム251が行う処理の流れの一例を示す。
 RAID制御プログラム251は、FMPK30の閉塞又は回復を検出した場合(S1601:True)、第1のRR閾値設定処理を実行する(S1602)。第1のRR閾値設定処理では、閉塞又は回復したFMPK30を含んでいるRAIDグループのRAIDレベル、閉塞FMPK数、性能重視か否か及び冗長性の有無に対応したRR閾値が、閉塞又は回復したFMPK30を含んでいるRAIDグループの各FMPK30に設定される。
 RAID制御プログラム251は、RAIDグループについてダイナミックスペアを行う場合(S1601:False、及び、S1603:True)、第2のRR閾値設定処理を実行する(S1604)。第2のRR閾値設定処理では、ダイナミックスペア時に使用されるRR閾値(例えばリードリトライ回数の最大値)を含んだコマンドが、ダイナミックスペアが行われるRAIDグループの各FMPK30に送信され、そのRAIDグループの各FMPK30に、ダイナミックスペア時に使用されるRR閾値が設定される。
 RAID制御プログラム251は、FMPK30の閉塞又は回復の検出、及び、ダイナミックスペア以外の場合(S1601:False、及び、S1603:False)、第1及び第2のRR閾値設定処理以外の何らかの必要な処理を行う(S1605)。特に処理が必要無ければS1605がスキップされてもよい。
 図17は、第1のRR閾値設定処理の流れを示す。
 RAID制御プログラム251は、閉塞又は回復したFMPK30を含んでいるRAIDグループが属する環境である閉塞/回復RG環境(具体的には、RAIDレベル、閉塞FMPK数、性能重視か否か及び冗長性の有無)を、RAID管理テーブル254及び閉塞管理テーブル255等から特定する(S1801)。
 RAID制御プログラム251は、特定した閉塞/回復RG環境に対応する各種RR閾値を構成テーブル256から特定し、特定した各種RR閾値(通常RR閾値、リクラメーションRR閾値、リフレッシュRR閾値及び非同期RR閾値)と、制限時間とを含んだモードセレクトコマンドを生成し、生成したモードセレクトコマンドを、閉塞又は回復したFMPK30を含んでいるRAIDグループの各FMPK30に送信する(S1802)。
 RAID制御プログラム251は、各FMPK30について正常にコマンドが終了した場合(S1803:True)、処理を終了する。
 一方、RAID制御プログラム251は、いずれかのFMPK30について異常が検出された場合(S1803:False)、モードセレクトコマンドのリトライ回数が許容値未満であれば(S1804:True)、S1802を再度実行する。再度実行される処理は、S1802のうちのコマンド送信のみでもよい。RAID制御プログラム251は、モードセレクトコマンドのリトライ回数が許容値に達していれば(S1804:False)、所定の障害処理を行う(S1805)。
 図18は、FMPK30においてFM制御プログラム442が行う処理を示す。
 FM制御プログラム442は、コマンドがモードセレクトコマンドでなければ(S1901:False)、そのコマンドに従う処理を実行する(S1902)。例えば、コマンドが、ストレージコントローラ20からのリード要求であれば、通常リードのリード処理が実行される。また、例えば、コマンドが、内部的に発行されたコマンドである内部コマンドであれば、内部コマンドに従う処理が実行される。内部コマンドとしては、例えば、リクラメーションコマンド、リフレッシュコマンド、検査コマンド等があってよい。
 FM制御プログラム442は、コマンドがモードセレクトコマンドであれば(S1901:True)、そのモードセレクトコマンドから各種RR閾値と制限時間とを取得し(S1903)、取得した各種RR閾値と制限時間を、フラッシュデバイス構成情報443に設定する(S1904)。各種RR閾値と制限時間が設定されたフラッシュデバイス構成情報443は、例えば図19に示す通りである。
 上述したように、RR閾値は、RAIDレベル及び閉塞ドライブ数等を基に特定され、RAIDレベルは、RAID管理テーブル254から特定され、閉塞ドライブ数は、閉塞管理テーブル255から特定される。RAID管理テーブル254は、例えば、図20に示すように、RAIDグループ毎に、RAIDグループ番号と、RAIDレベルと、RAIDグループを構成する各PDEV(FMPK)の番号とを表す。閉塞管理テーブル255は、例えば、図21に示すように、RAIDグループ毎に、閉塞PDEV数(閉塞FMPK数)と、RAIDグループを構成する各PDEV(FMPK)の状態(正常、閉塞等)とを表す。
 ところで、RAIDレベル及び閉塞ドライブ数等を基にRR閾値が調整されるようになっていても、FMPK30の状態が、FMPK30に規定されている応答性能を維持できない状態になることがあり得る。「応答性能を維持できない状態」とは、例えば、リードコマンドを発行してからの時間が上記制限時間を超えている、及び、リードリトライ回数が上記デフォルトのRR閾値を超えている、のうちの少なくとも1つに該当している状態である。FMPK30に予めデフォルトのRR閾値(初期値)が設定されていて、RAIDグループ内の閉塞FMPK数の増減等に関わらずデフォルトのRR閾値がストレージコントローラ20から設定及び変更されないケースでは、FMPK30が応答性能を維持できない状態になる確率がより高いと考えられる。
 そこで、FMコントローラ32(例えばFM制御プログラム442)は、FMPK30において規定されている応答性能を維持できない状態にある場合、ストレージコントローラ20からのコマンド(例えばリード要求)に対し、チェック応答を返すようになっている。チェック応答を受けたストレージコントローラ20は、リード要求をFMPK30に再送するか否か等を制御する。リード要求が再送された場合、FMPK30においては、新たなリード処理が開始されることになる。このため、FMPK30において、先のリードコマンドのリード処理について、リードコマンドを発行してからの時間が制限時間を超えている、及び、リードリトライ回数がRR閾値を超えている、のうちの少なくとも1つが生じていても、それがキャンセルされることになる。
 FMPK30は、応答性能を維持できない状態となった場合、チェック応答をストレージコントローラ20に出し、ストレージコントローラ20に、処理を継続するか否かの判断をまかせることができる。例えば、ストレージコントローラ20は、チェック応答の受信回数が所定値未満か否かに応じて、リード要求をFMPK30に再送するか否かを決定してよい。また、例えば、ストレージコントローラ20は、チェック応答を受けた場合には、チェック応答の送信元のFMPK30にリード要求を再送することに代えて、そのFMPK30からリードされるべきデータを、そのFMPK30を有するRAIDグループ内の他のFMPK30内のデータを用いて回復してもよい。これにより、FMPK30でのリードリトライの発生頻度を減らすこと(応答遅延の原因となるリードリトライの発生頻度を減らすこと)、及び、FMPK30でのアンコレクタブルエラーの発生頻度を減らすこと、の少なくとも一方を実現することが期待できる。
 なお、チェック応答は、例えば、図22に示すように、1又は複数の所定項目(例えば「Sense key」、「Additional sense code」、及び「Additional sense qualifier」)の値がそれぞれ所定値とされたリクエストセンス応答でよい。ストレージコントローラ20は、オートセンスをFMPK30に送信することでリクエストセンス応答をFMPK30から受信してもよいし、リクエストセンスコマンドをFMPK30に送信することでリクエストセンス応答をFMPK30から受信してもよい。
 また、同一FMPK30からチェック応答を受信した回数が所定回数(例えば所定回数は1以上の整数)に達した場合にストレージコントローラ20によりリード要求が再送される場合、そのリード要求は、通常のリード要求に代えて、特殊リード要求とされてよい。特殊リード要求は、例えば、図23に例示するように、リードモードセレクト(READ MODE SELECT)、すなわち、複数のリードモード(リードオプションの選択方針)から選択されたリードモードを表すパラメータを含んだリード要求である。リードモードセレクトの値として、例えば、第1値(第1リードモード:リード成功回数統計を基にリードオプションを選択)、第2値(第2リードモード:性能遅延を伴うリードオプションを選択)、第3値(第3リードモード:全てのリードオプションを順次選択(例えばダイナミックスペアのため))、及び、第4値(第4リードモード:第4デフォルトのリードオプションを選択)という4種類があってよい。
 なお、リードモードは、上述したように、モードセレクトコマンドにより設定可能でもある。本実施例では、図24に例示するように、モードセレクトコマンドで設定されたリードモードよりも、特殊リード要求で指定されるリードモードの方が優先される。例えば、チェック応答を出したFMPK30に、モードセレクトコマンドにより第1リードモードが設定されていても、ストレージコントローラ20からの特殊リード要求に第2リードモードが指定されていれば、その特殊リード要求に従い行われるリード処理(通常リードのリード処理)のリードモードは、その特殊リード要求で指定されている第2リードモードである。特殊リード要求は、FMPK30からチェック応答を受けた場合にそのFMPK30に対して発行されるコマンドであり、チェック応答は、上述したように、応答性能を維持できない状態にあるFMPK30から出されるからである。
 ストレージコントローラ20は、例えば、同一FMPK30からチェック応答を受信した回数が所定回数未満であれば、通常のリード要求を再送し、同一FMPK30からチェック応答を受信した回数が所定回数に達したならば、図25に例示する処理を行うことができる。
 すなわち、ストレージコントローラ20は、追加リトライ(リード要求の再送)が許可されるか否かを判断する(S2701)。S2701の判断は、チェック応答の送信元FMPK30を含んだRAIDグループについてのRAID構成(例えばRAIDレベル)、閉塞FMPK数及び冗長性の有無等を基に行われてよい。具体的には、例えば、図26に例示する情報、すなわち、RAIDレベルと閉塞FMPK数との組合せ毎に追加リトライを許可する(Yes)か否か(No)を定義した規則を表す情報を基に、S2701の判断が行われる。なお、図26に例示する情報は、ストレージコントローラ20のメモリ224に格納されている。
 S2701の判断結果が偽の場合(S2701:False)、ストレージコントローラ20は、所定のアンコレクタブルエラー処理を実行する(S2702)。一方、S2701の判断結果が真の場合(S2701:True)、ストレージコントローラ20は、特殊リード要求生成処理により、チェック応答の送信元FMPK30に対する特殊リード要求を生成し、そのFMPK30に、生成した特殊リード要求を送信する(S2703)。
 図27は、特殊リード要求生成処理の流れを示す。
 ストレージコントローラ20は、特殊リード要求生成時の対象RG環境に応じたリードモードを選択し(S2801)、選択したリードモードを表す値をリードモードセレクトのフィールドに設定した特殊リード要求を生成する(S2802)。「対象RG環境」とは、チェック応答送信元(又はコマンド送信先)のFMPK30を含んだRAIDグループが属する環境であり、具体的には、例えば、RAIDレベル、閉塞FMPK数、冗長性の有無、性能重視か否か、及び、リード/ライト頻度(単位時間当たりに受信するリード要求及びライト要求の数)、のうちの少なくとも1つでよい。図27では、より長いタイムアウト時間が設定されたモードセレクトコマンドの生成も行われ、図26のS2703では、特殊リード要求に加えて、そのモードセレクトコマンドも送信されてよい。S2801で選択されるリードモードは、第2リードモード(性能遅延を伴うリードオプションを選択)でよい。なぜなら、「性能遅延を伴うリードオプション」とは、前述したように、リード自体に時間がかかるがチップ内部の特殊な処理でリード成功の可能性がより高いリード方式に対応したリードオプションだからである。
 なお、仕様又は別の理由により特殊リード要求を処理できないFMPK30があり得る。又は、仕様又は別の理由により特殊リード要求を生成できないストレージコントローラ20があり得る。この場合、特殊リード要求ではなくモードセレクトコマンドによりリードモードが指定されてよい。
 すなわち、ストレージコントローラ20は、例えば、同一FMPK30からチェック応答を受信した回数が所定回数未満であれば、通常のリード要求を再送し、同一FMPK30からチェック応答を受信した回数が所定回数に達したならば、図28に例示する処理を行う。
 具体的には、ストレージコントローラ20は、追加リトライ(リード要求の再送)が許可されるか否かを判断する(S2901)。S2901の判断は、S2701の判断は、S2901の判断と同様に行われてよい。
 S2901の判断結果が偽の場合(S2901:False)、ストレージコントローラ20は、所定のアンコレクタブルエラー処理を実行する(S2902)。一方、S2901の判断結果が真の場合(S2901:True)、ストレージコントローラ20は、モードセレクトコマンド生成処理により、チェック応答の送信元FMPK30に対するモードセレクトコマンドを生成し、そのFMPK30に、生成したモードセレクトコマンドを送信する(S2903)。モードセレクトコマンドで指定されるリードモードも、モードセレクトコマンド生成時の対象RG環境に応じたリードモードでよい。例えば、同一FMPK30からチェック応答を受信した回数が所定回数に達した場合に生成されるモードセレクトコマンドは、第2リードモード(性能遅延を伴うリードオプションを選択)でよい。
 モードセレクトコマンドも特殊リード要求も生成し処理できるストレージコントローラ20及びFMPK30については、ストレージコントローラ20は、どちらのコマンドによりリードモードをFMPK30に指定するかを選択してよい。モードセレクトコマンドにより、リードモードだけでなく、各種RR閾値及び制限時間も設定することができるが、モードセレクトコマンドのためにそのコマンドの送信先FMPK30がリード/ライト保留状態(リード要求及びライト要求を処理しない状態)となる必要がある。一方、特殊リード要求は、各種RR閾値及び制限時間のうちの少なくとも一方を設定することができないが、コマンドの送信先FMPK30がリード/ライト保留状態となる必要は無い。そこで、ストレージコントローラ20は、チェック応答の送信元FMPK30に対してリードモードを指定する場合、図29に例示するように、チェック応答受信時の対象RG環境に応じて特殊リード要求を生成するかモードセレクトコマンドを生成するかを判断し(S3001),特殊リード要求を生成すると判断した場合(S3001:True)、図25に示した処理を行い、モードセレクトコマンドを生成すると判断した場合(S3001:False)、図28に示した処理を行ってよい。例えば、チェック応答受信時の対象RG環境において、対象RG(チェック応答送信元のFMPK30を含んだRAIDグループ)のリード/ライト頻度が所定値未満の場合、モードセレクトコマンドの生成が選択され、対象RGのリード/ライト頻度が所定値以上の場合、特殊リード要求の生成が選択されてもよい。
 図30は、コマンドを受信したFMPK30のFMコントローラ32により行われる処理の流れを示す。
 FMコントローラ32は、受信したコマンドがリード要求以外のコマンドの場合(S3101:False)、そのコマンドに従う処理を実行する(S3102)。コマンドがモードセレクトコマンドの場合、S3102では、モードセレクトコマンドに従う処理が実行される。
 FMコントローラ32は、受信したコマンドがリード要求であり、そのリード要求が通常リード要求であれば(S3101:True、及び、S3103:False)、設定済のリードモード(例えば、過去のモードセレクトコマンドにより設定されたリードモード)で、そのリード要求に従いリード処理(例えば通常リードのリード処理)を実行する(S3104)。
 一方、FMコントローラ32は、受信したコマンドがリード要求であり、そのリード要求が特殊リード要求であれば(S3101:True、及び、S3103:True)、その特殊リード要求で指定されているリードモードで、その特殊リード要求に従いリード処理を実行する(S3105)。
 上述したように、FMコントローラ32は、リード元ページが属するオプション管理単位(本実施例ではダイ)の設定オプションを用いてリードを実行する。もし、リードについて選択された尤もらしいリードオプションが、リード元ページを含んだダイの設定オプションと異なっている場合、その設定オプションを選択されたリードオプションに変更した後に(図9のS909を参照)、リードを実行する必要がある。同一のオプション管理単位についてのリードであってもリード環境が異なり得る。そのため、同一のオプション管理単位の複数のリードについて、設定オプションの変更が多発する可能性がある。例えば、図31に示す比較例のように、CEライン毎にリードコマンドキュー(CEラインに属するFMチップ内のリード元ページに対するリードコマンドのキュー)が管理されている場合、同一のCEライン(例えばCEライン0)のリードコマンドキューに、選択されたリードオプションの異なる複数のリードコマンドが並ぶことがある。この場合、並び順にリードコマンドを実行すると、設定オプションの変更(図9のS909)が多発する。具体的には、例えば、設定オプションの変更は、FMコントローラ32から、FM(ダイ)に対し、1個から複数(例えば4個)のオプションを変更するコマンド(例えばSetFeature)を発行する必要があり、その間、そのFM(ダイ)へのリードを実行できない。また、リードの度に、リードオプションを、通常リードを表すオプション番号(例えば0)に戻すと、オプションの変更が多発する状況下では、1つのリードに対し、例えば、オプション変更に必要なコマンド数(例えば最大4回)+リード(1回)+オプションを初期状態に戻す為のコマンド数(例えば最大4回)となる。それが多発することで、性能遅延につながる。そのため、変更(例えば最大4回)、戻す(例えば最大4回)を可能な限り削減することが望ましい。そこで、本実施形態にように、リードオプションは、戻さず、必要なら変更することが有効である。また、リードオプションの変更が多発する状況(例えば、電源断後、長期間電源投入されず、再度電源投入という状況)では、リトライリードが多発して、全てのダイでリードオプションの変更が発生することも考えられる。また、バス数、CEライン数及びダイ数が少ないFMPKでは、リトライリードが1回発生する事の影響はより大きくなると考えられる。また、リードオプションの変更をより適切に行うために、SetFeatureした結果をGetFeatureして確認することもあり、コマンド数が更に増加することがある。設定オプション変更の多発は、FMPK30の性能遅延の原因になる。
 そこで、本実施例では、FMコントローラ32がリードコマンド(リード)の実行順序を最適化する、具体的には、リードオプションが同一の複数のリードコマンドをリードオプション毎に連続して実行する。これにより、設定オプションの変更の発生頻度を減らすことができる。
 具体的には、図32に例示するように、各CEラインについて、リードコマンドキューが、リードオプション毎に設けられる。本実施形態では、リードオプションは第1の単位(例えばダイ毎)に設定され、リードコマンドキューは、第1の単位よりも大きい第2の単位(例えばCEライン毎)に設けられる。リードコマンドキューには、例えば、リードコマンドの発行順にリードコマンドが並ぶ。FMコントローラ32が、リードコマンドを生成する都度に、そのリードコマンドについて選択されたリードオプションと、そのリードコマンドで指定されるリード元ページを含んだFMチップ403が接続されているCEラインとに対応したリードコマンドキューに、生成したリードコマンドを接続する。FMコントローラ32は、各CEラインについて、所定の規則に従い、リードオプションを選択し、選択したリードオプションのリードコマンドキューにおける複数のリードコマンドを連続的に実行する。所定の規則は、例えば、最初に選択されるリードオプションが設定オプション(例えばリードオプション#6)と同じリードオプションでよいし、最後の変更後の設定オプションがCEラインについて一番尤もらしいリードオプションでもよい。また、1つのリードコマンドキューから連続的に実行されるリードコマンドの数(言い換えれば、リードコマンドから連続的にリードコマンドが実行される時間長)は、全てのリードオプションについて同一であってもよいし、リードオプションに応じて異なっていてもよい。また、所定の規則は、リードコマンドを受けてから応答するまでの応答時間と、1つのリードコマンドキューに接続されているリードコマンドの数と、リードオプションに対応した実行単価(仕事量)とのうちの少なくとも1つに基づいていてよい。
 なお、リードオプション毎のリードコマンドキューは、所定のキュー単位毎に存在するが、所定のキュー単位は、CEラインに代えて又は加えて、FMバス、ダイ及びFMチップのうちの少なくとも1つでよい。また、FMコントローラ32が、キュー単位で(例えばCEライン毎に)、更にハード実行キュー(例えば高速メモリ44上のキュー)を有してよい。FMコントローラ32(例えばCPU42)は、キュー単位で、各リードコマンドキュー(同一リードオプションのリードコマンドキュー)から連続実行コマンド数分のリードコマンドをハード実行キューに積み、FMコントローラ32(例えばFM I/F46)は、ハード実行キューにおける並び順でリードコマンドを実行してよい。
 図33は、リードコマンドの構成を示す。
 リードコマンドは、「種別」、リード元情報、「リードオプション番号」及び「次ポインタ」等を含む。リード元情報は、リード元ページを識別するための情報であり、例えば、「バス番号」、「CE番号」、「ダイ番号」、「ブロック番号」及び「ページ番号」を含む。「種別」は、リード種別(例えば、通常リード或いはリクラメーションリード)を表す。「バス番号」は、リード元ページを含んだFMチップへのFMバスの番号を表す。「CE番号」は、リード元ページを含んだFMチップへのCEラインの番号を表す。「ダイ番号」は、リード元ページを含んだダイの番号を表す。「ブロック番号」は、リード元ページを含んだブロックの番号を表す。「ページ番号」は、リード元ページの番号を表す。「リードオプション番号」は、選択されたリードオプションの番号を表す。「次ポインタ」は、このリードコマンドの接続先を表す。
 図34は、エンキュー先決定テーブルの構成を示す。
 エンキュー先決定テーブル3500は、リードコマンドのエンキュー先規則と、リードコマンドキューに接続されているリードコマンド数(実行待ちリードコマンド数)とを表す。このテーブル3500は、例えば高速メモリ44に格納されてよい。エンキュー先規則は、バス番号、CEライン番号及びリードオプション番号と、エンキュー先キューとの組合せである。リードコマンド中のバス番号、CEライン番号及びリードオプション番号に対応したキューがこのテーブル3500から特定され、特定されたキューにリードコマンドが接続される。なお、テーブル3500を用いてエンキュー先を決定することに代えて、条件判定等の他の方法によりエンキュー先が決定されてよい。
 リードコマンドキューは、リードオプション毎に分類されているため、設定オプションの変更回数が最少になるようにリードコマンドを実行することが可能である。CEライン毎及びリードオプション毎に用意されるリードコマンドキューとして、同期コマンドキュー及び非同期コマンドキューがあってよい。同期コマンドキューには、上位装置からのリード要求に従い発行されたリードコマンド(同期RDコマンド)が接続される。同期RDコマンドは、本実施例では通常リードのリードコマンドである。非同期コマンドキューには、上位装置からのリード要求とは無関係(非同期)に発行されたリードコマンド(非同期RDコマンド)が接続される。非同期RDコマンドは、本実施例ではリクラメーションリード、リフレッシュリード及び非同期リードのリードコマンドである。例えば同期RDコマンドの実行順序の最適化は、上位装置からリード要求を受けてから一定時間(応答時間リミット)内にリード要求に従うデータを応答できるように実行されなければならない。リードコマンドキュー(例えば同期コマンドキュー)から連続的に実行されるリードコマンドの数は、そのリードコマンドキューに対応するリードオプションの特性等に基づいて決まる数、例えば、以下の第1及び第2の観点のいずれかの観点に従い決まる数でよい。
 第1の観点によれば、リードコマンドキューについて、連続実行コマンド最大数(連続的に実行されるリードリードコマンドの最大数)が、リードオプション毎に、実行待ちリードコマンド総数(全てのリードコマンドキューに接続されている実行待ちのリードコマンドの総数、又は、全てのリードコマンドキューに接続されている実行待ちのリードコマンドの総数)とに応じて定義されている。具体的には、例えば、図35に示す第1の実行制限テーブル3600が用意される。第1の実行制限テーブル3600に、実行待ちリードコマンド総数と、リードオプション毎の連続実行コマンド最大数(この数は、リードオプションの切り替えが早すぎず、且つ、レスポンスタイムが長くならないような数であることが好ましい)とが定義されている。定義されている連続実行コマンド最大数は、リードオプションの特性に基づき決定され、応答時間リミット(リード要求を受けてから応答するまでの時間の上限)以内にリード要求に応答することができるような値である。テーブル3600は、例えば高速メモリ44に記憶されてよい。FMコントローラ32は、テーブル3600と、実行待ちリードコマンド数とを基に、或るリードオプションのリードコマンドキューの連続実行コマンド最大数を特定する。FMコントローラ32は、特定された連続実行コマンド最大数分のリードコマンドを連続して上記或るリードオプションのリードコマンドキューから実行した場合(或いは、その前にそのキューに接続されているコマンドが無くなった場合)、別のリードオプションに切り替え、切り替え後のリードオプションのリードコマンドキューからのリードコマンドを実行する。第1の観点によれば、応答時間リミット以内にリード要求に応答することを保証しつつ、設定オプションの変更の発生回数を減らすことができる。
 第2の観点によれば、リードコマンドキューについて、連続実行コマンド最大数が、リードオプション毎に、実行待ちリードコマンド総数と、リードオプション毎のリード応答性能単価(リードコマンドの応答時間又はその時間に基づいて決定された値)と、リードコマンドが少なくとも1つ接続されているコマンドキューの数とに応じて決まる。具体的には、上述のリードオプションの特性が、第2の観点では、リードオプションのリード応答性能単価であり、例えば、図36に示す単価テーブル3700及び図37に示す第2の実行制限テーブル3800が用意される。単価テーブル3700は、リードオプション毎のリード応答性能単価を表す。第2の実行制限テーブル3800は、実行待ちリードコマンド総数と、リードオプション毎の最大応答性能とが記録される。最大応答性能は、単価テーブル3700と、実行待ちリードコマンド総数と、リードコマンドが少なくとも1つ接続されているリードコマンドキューの数とに基づいて決定される値である。このため、リードコマンドが少なくとも1つ接続されているリードコマンドキューの数が増減すると、FMコントローラ32により、対応する最大応答性能の値が変更される。
 なお、個々のリードコマンドについて、最大応答性能は、リードコマンドがリードコマンドキューに積まれてからの許容滞留時間でよい。FMPK30は、最大応答性能の初期値を有していてよく、ストレージコントローラ20から所定コマンド(例えばモードセレクトコマンド)で変更されない限り、記憶している最大応答性能を使用する。
 最大応答性能は、動的に変更することが可能であり、動的な変更は、ストレージコントローラ20からの所定コマンド(例えばモードセレクトコマンド)により可能である。具体的には、例えば、FMコントローラ32は、実行中のリードコマンドを処理し終えてから、設定済の最大応答性能を、所定コマンド中の最大応答性能に変更し、変更後の最大応答性能を、リードコマンドキュー(又はハード実行キュー)に残っているリードコマンドに適用する。或いは、例えば、FMコントローラ32は、その所定コマンドを受信した時刻を記憶し、その時刻以降に実行開始されるリードコマンドについて、変更後の最大応答性能を適用してよい。
 テーブル3700及び3800は、例えば高速メモリ44に記憶されてよい。図36及び図37によれば、例えば、実行待ちリードコマンド総数「1024」且つリードオプション番号「2」であれば、最大応答性能「636」でありリード応答性能単価「53」なので、連続実行コマンド最大数は「12」(=636/53)である。なお、単価テーブル3700において、リードオプション毎のリード応答性能単価を「1」とし、第2の実行制限テーブル3800に記録される最大応答性能が連続実行コマンド最大数であってもよい。また、キューからのリードコマンド実行に加えて、エンキュー(例えばハード実行キューへのエンキュー)も、リードオプション毎のリード応答性能単価を基に制御されてよい。エンキューの制御では、リードコマンドは、例えば高速メモリ44に、キューに未接続の状態で記憶され、図38に例示する累積カウンタテーブル3900を基に、エンキューされてよい。テーブル3900は、FMバス及びCEライン毎に(つまりFMチップ毎に)、FMコントローラ32により、リードコマンドのリード応答性能単価の累積値が記録される。
 図39は、リードコマンドのエンキュー制御処理の一例を示す。図39は、CPU42が、リードコマンドキューから、FM I/F46が管理するハード実行キューにエンキューする処理である。すなわち、CPU42が、リードコマンドキュー(図32参照)から、時間内(最大応答性能)に間に合うように、図36及び図38のテーブルを参照しながら、CEライン別のハード実行キューに、リードコマンドを最適配分する。
 CPU42は、カレントオプション(現在の対象のオプション)を取得する(S4001)。
 CPU42は、カレントオプションに対応したリードコマンドキューにおけるリードコマンドのうち最先のリードコマンド(以下、対象コマンド)を特定し、累積カウンタテーブル3900から、対象コマンドで指定されているバス番号及びCE番号に対応した累積値を特定する(S4002)。CPU42は、対象コマンドを、対象コマンドで指定されているCE番号に対応したハード実行キューにエンキューする(S4003)。CPU42は、S4002で特定した累積値に、カレントオプションに対応したリード応答性能単価を加算する(S4004)。
 加算後の累積値が、実行待ちリードコマンド総数及びカレントオプションに対応した最大応答性能以下であれば(S4005:False)、CPU42は、再度S4002を行う。
 一方、加算後の累積値が、実行待ちリードコマンド総数及びカレントオプションに対応した最大応答性能を超えていれば(S4005)、CPU42は、テーブル3900における加算後の累積値をリセットし(例えば0に戻し)(S4006)、次のリードオプションをカレントオプションとする(S4007)。
 なお、図36に例示したテーブル3700及び図37に例示したテーブル3800に基づいて1つのリードコマンドキューから連続して実行されるリードコマンドの数も、図38に例示するテーブル3900と同様の構成の応答時間カウンタテーブル(図示せず)を基に制御されてよい。応答時間カウンタテーブルには、FMバス及びCEライン毎に(つまりFMチップ毎に)、FMコントローラ32により、リードコマンドの応答時間の累積値が記録されてよい。FMコントローラ32は、応答時間の累積値を基に、連続実行コマンド数を制御してよい。例えば、FMコントローラ32は、或るリードオプションについて、最大応答性能と応答時間累積値との差分がリード応答性能単価未満となった場合、そのリードオプションのリードコマンドキューからのコマンド実行を止め、別のリードオプションに切り替えてよい。これにより、リード応答性能単価と実際の応答時間に差が生じても応答時間リミットを保証しつつ設定オプションの変更回数を減らすことができる。また、図32に示したリードコマンドキューも前述したハード実行キューもFMコントローラ32(特にFM I/F46の配下とし、ハード実装で制御されてもよい。
 以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
 図40は、実施例2の概要を示す。
 実施例1で説明したリード成功回数管理情報452のサイズは大きいと考えられる。そのサイズは、PE回数範囲又は経過時間範囲のうちの少なくとも一方の数が増えると一層大きくなる。
 そこで、実施例2では、FMコントローラ32は、リード成功回数管理情報452に代えて、リード成功回数管理情報452の簡易的な情報である環境/オプション簡易管理情報4501を保持する。環境/オプション簡易管理情報4501のサイズは、リード成功回数管理情報452のサイズよりも小さい。環境/オプション簡易管理情報4501は、高速メモリ44又は低速メモリ45に格納される。環境/オプション簡易管理情報4501は、PE回数範囲毎及び経過時間範囲毎のレコードを有さず、且つ、リード成功回数も有さない。図41に、環境/オプション簡易管理情報4501の構成を示す。環境/オプション簡易管理情報4501には、ダイ毎に(正確には、FMバス、CEライ及びダイの組毎に)、リード成功時のリードオプションが記録される。具体的には、リード元ページからのリードに成功したときに、そのリード元ページを含んだダイについて、環境/オプション簡易管理情報4501に、リード成功時のリードオプションが記録される。以下、実施例2の説明では、環境/オプション簡易管理情報4501に記録されるリードオプションを、「最適リードオプション」と言う。なお、最適リードオプションは、ダイ毎、すなわち、リード単位(ページ単位)より大きい単位で記録される。このため、或るダイについて、第1ページからのリードに成功した第1リードオプションが記録されても、同一ダイについて、別の第2ページからのリードに成功したリードオプションが第2リードオプションであれば、同一ダイについて、第1リードオプションではなく第2リードオプションが記録される。そして、同一ダイについて、リード元が再び第1ページとなった場合には、前回のリード成功時のリードオプションは第1リードオプションであるが、記録されているリードオプションは第2リードオプションのため、第2リードオプションが使用される。
 実施例2に係るリード処理では、FMコントローラ32は、デフォルトのリードオプションではなく最適リードオプションを適用するか否かの最適オプション適用判定を行う(S4601)。S4601の判定結果が真の場合、FMコントローラ32は、リード元ダイ(リード元ページを含んだダイ)に対応した最適リードオプションでリードを行う(S4602)。一方、S4601の判定結果が偽の場合、FMコントローラ32は、デフォルトのリードオプションでリード元ページからリードを行う。S4602又はS4603のリードに失敗した場合には、使用されるリードオプションが別のリードオプションに切り替えられ切り替え後のリードオプションでリードが行われる。リードオプションの切り替えは、例えば、図42に示すリードオプション切替えルールに従って行われる。そのルールによれば、例えば、1回目のリードでリードオプション4が使用された場合、リード失敗により次に使用されるリードオプションは、リードオプション0である。
 最適オプション適用判定は、FMPK30の初めての電源投入後の各リード処理で行われてよいが、本実施例では、FMPK30の電断後(電源再投入後)の各リード処理で行われる。フラッシュメモリは、一般に、電断後、放置されると、物理ブロックのデータ保持特性が悪化するためである。
 最適オプション適用判定の判定結果は、最適オプション適用条件が満たされる場合に、真となる。最適オプション適用条件が満たされるとは、下記(a)乃至(c)の全てのサブ条件が満たされることである。
(a)リードが、電断後の1周目の検査リード処理が行われている期間におけるリードである。
(b)リード元ダイにおけるいずれかのページについてアンコレクタブルエラーが発生している。
(c)リード元ブロック(リード元ページを含む物理ブロック)が電断後のリフレッシュ済ブロックではない。
 以下、サブ条件(a)乃至(c)の各々について説明する。
 <サブ条件(a):リードが、電断後の1周目の検査リード処理が行われている期間におけるリードである。>
 FMコントローラ32は、NAND-FM33のアンコレクタブルエラーが発生するのを未然に防ぐ目的で、検査リード処理を、一定周期(例えば1日)毎に行うようになっている。検査リード処理では、FMPK30内の全ての物理ブロックの各々について、検査対象ページ(少なくとも1つの物理ページ)からデータをリードし、リードされたデータのエラービット数がチェックされる。つまり、「検査リード」は、1つの検査対象ページについてのリードであり、「検査リード処理」は、全ての検査対象ページの各々の検査リードを含んだ処理である。「検査リード処理が1周する」とは、全ての検査対象ページの各々について検査リードが終了することを意味する。従って、「電断後の1周目の検査リード処理」とは、電断後に電源が投入されてから全ての検査対象ページ(例えば全ての物理ブロック内の全ての検査対象ページ)について検査リードが終了するまでを意味する。「検査対象ページ」は、各物理ブロックについてランダムに選択された物理ページでもよいし、各物理ブロックにおける所定種類のページ(例えばMSBページ)であってもよい。検査リードの成功とは、所定のリードオプションでリードされたデータの全てのエラービットを訂正できる(例えば、ECC(Error Correcting Code)により訂正できる)ことであり、検査リードの失敗とは、所定のリードオプションでデータをリードできなかった(すなわち、所定のリードオプションでリードされたデータが全てのエラービットを訂正できないほどに多くのエラービットを有していた)である。
 各検査リードで使用される「所定のリードオプション」とは、例えば、デフォルトのリードオプションと同じリードオプション(例えばリードオプション0)である。FMコントローラ32は、検査リードに失敗した場合、同一の検査対象ページに対してリトライリード、すなわち、別のリードオプションを用いたリードを行う。FMコントローラ32は、検査リード処理において、各物理ブロックを例えば以下のように管理できる。すなわち、FMコントローラ32は、エラー訂正不可ページ(いずれのリードオプションを用いたリードも失敗となる検査対象ページ)が1つでもあれば、エラー訂正不可ページを含む物理ブロックに対してリフレッシュ処理を行い、且つ、その物理ブロックを、寿命ブロック(再使用不可の物理ブロック)として管理する。また、FMコントローラ32は、エラー訂正不可ページは無いがリトライ成功ページ(検査リードに失敗した後のリトライリードに成功したページ)が1つでもあれば、リトライ成功ページを含む物理ブロックに対してリフレッシュ処理を行い、且つ、その物理ブロックを、空き物理ブロック(再使用可の物理ブロック)として管理する。また、FMコントローラ32は、検査リードに成功したとしても、その検査リードによりリードされたデータのエラービット数が或る閾値を超えていたら、その検査リードのリード元ページを含んだ物理ブロックに対してリフレッシュ処理を行う。例えば、FMコントローラ32は、検査リードに成功したデータのエラービット数が閾値A(例えば寿命閾値)を超えていれば、その検査リードのリード元ページを含んだ物理ブロックに対してリフレッシュ処理を行い、且つ、その物理ブロックを、寿命ブロック(再使用不可の物理ブロック)として管理する。また、例えば、FMコントローラ32は、検査リードに成功したデータのエラービット数が閾値A未満であるが閾値B(例えばリフレッシュ閾値)を超えていれば、その検査リードのリード元ページを含んだ物理ブロックに対してリフレッシュ処理を行い、且つ、その物理ブロックを、空き物理ブロック(再使用可の物理ブロック)として管理する。つまり、この例によれば、検査リード処理においてリフレッシュ処理が行われない物理ブロックは、いずれの検査対象ページについても、検査リードに成功し、且つ、リードされたデータのエラービット数が所定の閾値以下である物理ブロックである。なお、これは、物理ブロックの管理の一例であり、検査リード処理での物理ブロックの管理は他の形態も採用できる。「リフレッシュ処理」とは、物理ブロックからデータ(特に有効データ)を読み出してエラー訂正し、エラー訂正したデータを別の物理ブロック(例えば、移動元の物理ブロックよりもPE回数の少ない物理ブロック)へ移動する処理である。リフレッシュ処理により、移動元物理ブロックが割り当てられていた論理領域(例えば論理ブロック)には、移動元物理ブロックに代えて移動先物理ブロックが割り当てられる。以下の説明において、「リフレッシュ済ブロック」という言葉は、リフレッシュ処理により移動されたデータを記憶する移動先物理ブロックを意味する。なお、NAND-FM33は、追記型、すなわち、物理ページが割り当てられている論理領域がライト先の場合、ライト先論理領域(例えば論理ページ)に、割当て済の物理ページに代えて新たに空き物理ページが割り当てられ、新たに割り当てられた物理ページにデータが書き込まれる。各論理領域について、新たに割り当てられた物理ページに書き込まれたデータは「有効データ」であり、有効データが書き込まれている物理ページは「有効ページ」であり、過去に割り当てられていた物理ページに格納されているデータは「無効データ」であり、無効データが書き込まれている物理ページは「無効ページ」である。
 上述した検査リード処理が1周すると、以下のことがいえる。すなわち、リードオプション0でのリードに失敗した物理ブロックに格納されていたデータはリフレッシュ処理により別の物理ブロックに移動されているので、データのリードが成功する。検査リード処理が1周するまでは、全ての物理ブロックについてリードの成功が保証されているわけではない。検査リード処理が終了していれば、その後に行われる通常リード(同期リード)等でリトライリードを駆使する必要がない。
 このような観点から、サブ条件(a)が採用されている。
 <サブ条件(b):リード元ダイにおけるいずれかのページについてアンコレクタブルエラーが発生している。>
 エラー発生の傾向が、ダイ毎、すなわちリードオプションの設定単位毎に異なる傾向がある。例えば、同一ダイ内の物理ブロックは同様の速度で劣化する傾向にある。具体的には、例えば、ダイは、シリコンウエハから採取された(切り出された)ウエハ部分である。シリコンウエハにおける場所によって、品質が異なる。複数のダイは、BGA(Ball Grid Array)等の方法でパッケージングされるが、ダイは物理的に分かれており、前述の通り、物理的に異なる。FMPK30に複数のダイがあるが、それら複数のダイは、ウエハから取られた部位が異なるので、特性(例えばエラー発生傾向)はバラつくことが考えられる。
 このような観点から、サブ条件(b)が採用されている。すなわち、リード元ページそれ自体にはアンコレクタブルエラーが発生していなくても、リード元ページを含むダイ内でいずれかのページでアンコレクタブルエラーが発生していたら、FMコントローラ32は、オプションを変えてリードする、すなわち、デフォルトのリードオプションではなく、リード元ページを含んだダイに対応した最適リードオプションでリードする。これにより、リードオプションを変えなければ失敗する可能性が高いリードを削減できる。よって、性能が向上する。
 <サブ条件(c):リード元ブロックが電断後のリフレッシュ済ブロックではない。>
 電断後のリフレッシュ済ブロックは、電断後に放置された物理ブロックでは無く、故に、
最適リードオプションでリードする必要が無い。
 このような観点から、サブ条件(c)が採用されている。なお、リフレッシュ処理は、検査リードに失敗した場合に加えて、通常リード(同期リード)(上位からの要求に伴い発生するリード)及びリクラメーションリード等に関しても行われてよい。
 以上が、最適オプション適用条件についての説明である。
 図43は、最適オプション適用判定処理の流れを示す。
 FMコントローラ32は、サブ条件(a)が満たされているか否か、すなわち、リード元ブロック(リード元ページを含む物理ブロック)が1周目の検査リード処理において検査済みの物理ブロックか否かを判断する(S4301)。
 S4301の判断結果が真の場合(S4301:True)、FMコントローラ32は、サブ条件(b)が満たされているか否か、すなわち、リード元ダイ(リード元ページを含んだダイ)のいずれかのページでアンコレクタブルエラーが発生しているか否かを判断する(S4302)。なお、リード元ダイのいずれかのページについて、通常リード(同期リード)、リクラメーションリード及びリフレッシュリードのうちの少なくとも1つについてアンコレクタブルエラーが発生していれば、S4302の判定結果が真となる。
 S4302の判断結果が真の場合(S4302:True)、FMコントローラ32は、サブ条件(c)が満たされているか否か、すなわち、リード元ブロックが電断後のリフレッシュ済ブロックではないか否かを判断する(S4303)。
 S4303の判断結果が真の場合(リード元ブロックが電断後のリフレッシュ済ブロックではない場合)、FMコントローラ32は、更なるサブ条件(d)が満たされているか否か、すなわち、リード元ブロックがオープンブロックではないか否かを判断する(S4304)。
 S4304の判断結果が真の場合(リード元ブロックがオープンブロックではない場合)、すなわち、全てのサブ条件(a)~(d)が満たされている場合、FMコントローラ32は、最適オプション適用を決定する(S4305)。
 一方、S4301~S4304のうちの少なくとも1つの判断結果が偽の場合、すなわち、サブ条件(a)~(d)のうちの少なくとも1つが満たされていない場合、FMコントローラ32は、最適オプション非適用を決定する(S4306)。
 最適オプション適用判定処理は、1つの観点によれば、リードがケースAとケースBのいずれのケースに該当するかの判定論理であるといえる。
 「ケースA」は、最適オプション適用を避けたいケースであり、例えば、PE回数(データの消去回数)が比較的少ない、及び、経過時間(ブロックの先頭ページにデータが書き込まれてから経過した時間)が比較的短い、のうちの少なくとも1つに該当するケースである。一方、「ケースB」は、最適オプション適用を行いたいケースであり、例えば、PE回数が比較的多い、及び、経過時間が比較的長い、のうちの少なくとも1つに該当するケースである。
 リードがケースAとケースBのいずれに該当するかを判定する理由は、以下の通りである。すなわち、ケースAは、エラー発生の傾向がはっきりしていない、及び、最適リードオプションを適用しなくてもリードできる(検査リードでも使用されるデフォルトのリードオプション0でリードできる)可能性は高い、のうちの少なくとも1つに該当する。このため、最適リードオプションの適用を避けることが望ましい。一方、ケースBは、エラー発生の傾向がはっきりしている、及び、デフォルトリードオプションを使用するとリードリトライが発生する可能性が高い、のうちの少なくとも1つに該当する。このため、最適リードオプションの適用が望ましい。
 例えば、電断後、検査リード処理が1周するまでの間、リード元ダイについてアンコレクタブルエラーが発生していなければ、PE回数が比較的少ないことが考えられる。電断後、経過時間が比較的長い場合に最適リードオプションが使用されるため、デフォルトのリードオプション(最初に選択すべきリードオプション)は、所定リードオプション、例えばリードオプション0に固定されている。リードオプションがリードオプション0に固定されているため、実施例1のリード成功回数管理情報452を使用するよりも、実施例2のように、図41に例示した簡易的な情報を採用し、且つ、使用するリードオプションを論理により決めることは、効率がより良いと考えられる。電断後のリフレッシュ済ブロックについては、PE回数が比較的少ない及び経過時間が比較的短い、のうちの少なくとも1つに該当するため、最適リードオプション(前回成功したリードで使用したリードオプション)ではなく、デフォルトのリードオプション0が使用される。なお、電断後のリフレッシュ済ブロックは、電断後にリフレッシュ処理されていない物理ブロックと比べると、経過時間が短いといえる。FMコントローラ32は、電断前に、各物理ブロックに、電断を経た物理ブロックを意味する情報(以下、電断フラグ)を関連付けておき、物理ブロックが電断後のリフレッシュ済ブロックとなった場合には、その物理ブロックに関連付いている電断フラグを消してよい。電断フラグの有無により、各物理ブロックが電断後のリフレッシュ済ブロックか否かを判別することができる。或いは、長期電断を経過した物理ブロックかどうかを判断するために、FMコントローラ32は、電断後の物理ブロック毎に消去時刻を管理し、各物理ブロックの消去時刻から、電断を経た物理ブロックか否かを判別できる。また、電断後、検査リード処理が1周するまでの間に、アンコレクタブルエラーが発生したダイ内の物理ブロックについては、PE回数が比較的多い、及び、経過時間が比較的長い、のうちの少なくとも1つの該当する物理ブロックの候補と判断される。
 以上の構成により、実施例1のようにリード成功回数(成功カウンタ)を使用しなくても、最適リードオプションの適用が望ましいか否かを判断できる。例えば、リードがケースBに該当する場合、リード時の状態は、エラー発生の傾向(特性の劣化の仕方の傾向)がある程度明確にわかっている状態であり、この状態であれば、最適リードオプション(前回成功したリードオプション)で成功する可能性が高い。このように、最適オプション適用判定処理と環境/オプション簡易管理情報4501とにより、リード成功回数(成功カウンタ)無しに、1回目のリードに成功する可能性を高くできる。
 なお、図43の判定処理において、更なるサブ条件(d)が設けられているが、サブ条件(d)については、以下の通りである。
 「オープンブロック」とは、途中の物理ページまでデータが書き込まれている物理ブロック(少なくとも先頭ページにデータがライトされているが空きページが未だ残っている物理ブロック)である。例えば、1つの物理ブロックがN個の物理ページ(Nは2以上の整数)で構成されていて、Xページ目までデータがライトされているとする(Xは2以上の整数且つNより小さい)。この場合、(X-Y)ページ目~Xページ目(最後にデータがライトされたページから前にYページ程度)の特性が悪くなる(エラー発生率が高くなる)傾向がある(Yは1以上の整数)。全ページにライト済みならこのような特性劣化は発生しない。そして、オープンブロックによる特性劣化は、ダイ全体の特性に依存するものではない。よって、ダイ内の他のブロックでリードに成功したリードオプションで成功するとは限らず、また、仮にオープンブロックから最適リードオプションでデータをリードできたとしても、ダイ内の他のブロックにも通用するとは限らない。このような観点から、リード元ブロックがオープンブロックであれば、FMコントローラ32は、最適オプション非適用と決定する。
 図44は、実施例2に係るリード処理の流れを示す。
 FMコントローラ32は、図43に示した最適オプション適用判定処理を行う(S4401)。
 S4401の結果、最適オプション適用が決定されたならば(S4401:True)、FMコントローラ32は、環境/オプション簡易管理情報4501から、リード元ダイに対応する最適リードオプションを特定し、特定した最適リードオプションを、リード元ダイについて設定する。一方、最適オプション非適用が決定されたならば(S4401:False)、FMコントローラ32は、デフォルトのリードオプション0を、リード元ダイについて設定する。
 FMコントローラは、リード元ダイについて設定されたリードオプションで、リード元ページに対するリードを行う(S4404)。リードに失敗した場合(S4405:Falase)、FMコントローラ32は、図42に例示したルールに従って、リード元ダイについて設定されているリードオプションを別のリードオプションに切り替え(S4406)、切り替え後のリードオプションでリードを行う(S4404)。
 リードに成功した場合(S4405:True)、FMコントローラ32は、最適オプション適用が決定されているか否かをチェックする(S4407)。S4407のチェックの理由は、最適オプション非適用の場合、リード元ダイに対応した最適リードオプションがデフォルトのリードオプション0に書き換えられてしまうことを避けるためである。すなわち、最適オプション非適用の場合、リード成功時のリードオプションはデフォルトのリードオプション0であることがあるが、後述のS4409が行われると、リード元ダイに対応した最適リードオプションがデフォルトのリードオプション0に書き換えられてしまう。S4407のチェックは、そのようなことが行われてしまうことを回避するためである。S4407は、S4401の結果をチェックする処理であって、図43の処理ではない。
 S4407の判定結果が真の場合(最適オプション適用の場合)(S4407:True)、FMコントローラ32は、リード成功時のリードオプションがS4402で特定した最適リードオプションと違っているか否かを判断する(S4408)。S4408の判断結果が真の場合(S4408:True)、FMコントローラ32は、リード成功時のリードオプションを、リード元ダイに対応した最適リードオプションとして、環境/オプション簡易管理情報4501に記録する(S4409)。
 S4407の判定結果が偽の場合(最適オプション非適用の場合)(S4407:False)、又は、S4408の判断結果が偽の場合(S4408:False)、リード処理が終了する。
 以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、実施例1で説明した各種RR閾値の設定、設定オプションの切り替えの頻発を防ぐためのコマンド実行制御等は、実施例2にも適用できる。また、例えば、実施例2において、サブ条件(a)乃至(d)のうちの少なくとも1つが満たされている場合に、最適オプション適用条件が満たされているとなってもよい。また、図43のS4301(サブ条件(a))については、電断後の1周目の検査リード処理が行われている期間中であっても、リード元ページがその1周目の検査リード処理での検査リードで成功済みのページであれば、S4301の判定結果は偽(S4301:False)でもよい。また、例えば、FMコントローラ32は、FMコントローラ32が有するメモリの容量(管理情報を記憶できる領域の容量)が閾値以上であれば、図6に例示したリード成功回数管理情報452を使用した制御を行い、FMコントローラ32が有するメモリの容量が閾値未満であれば、図41に例示した環境/オプション簡易管理情報4501を使用した制御を行うようにしてよい。
300…ストレージ装置

Claims (20)

  1.  不揮発メモリと、
     リードオプションを用いて前記不揮発メモリに対してリードを実行するメモリコントローラと
    を有し、
     前記不揮発メモリは、複数のメモリ領域ユニットを含み、
     各メモリ領域ユニットが、複数のメモリ領域を含み、
     前記メモリコントローラが、リード単位であるメモリ領域よりも大きな単位であるメモリ領域ユニット毎にリードオプションを記録した管理情報を保持し、
     前記メモリコントローラが、
      リード元メモリ領域を含んだメモリ領域ユニットを特定し、
      前記特定したメモリ領域ユニットに対応したリードオプションを選択し、
      前記選択したリードオプションを用いて前記リード元メモリ領域に対するリードを実行する、
    不揮発メモリデバイス。
  2.  前記管理情報が、複数のリード環境の各々についてリード成功回数統計を含み、
     各リード環境は、リードの成否に影響し得る1以上のリード影響属性の値の組合せにより定義されており、
     前記1以上のリード影響属性は、メモリ領域ユニットを含み、
     各リード成功回数統計は、リードオプション毎のリード成功回数を表し、
     前記メモリコントローラが、
      前記複数のリード環境のうちリード元メモリ領域が属するリード環境である対象リード環境を特定し、
      前記対象リード環境に対応したリード成功回数統計である対象統計を基に、前記複数のリードオプションのうちの尤もらしいリードオプションを選択し、
     前記選択したリードオプションは、前記選択した尤もらしいリードオプションであり、
     前記メモリコントローラが、リードに成功した場合、前記対象統計における、前記選択した尤もらしいリードオプションに対応するリード成功回数を増やす、
    請求項1記載の不揮発メモリデバイス。
  3.  前記不揮発メモリは、複数のメモリチップを有し、
     各メモリチップが、1以上のメモリ領域ユニットを有し、
     各メモリ領域ユニットは、2以上のメモリ領域を有し、リードオプションの設定単位であり、
     前記メモリコントローラと前記複数のメモリチップが複数のバスと複数のチップイネーブルラインに接続されており、
     前記メモリコントローラが、リード元メモリチップに接続されているバス及びチップイネーブルラインを選択することにより前記リード元メモリチップを選択するようになっており、且つ、選択されたリードオプションと、前記リード元メモリ領域を含んだメモリ領域ユニットについて設定済のリードオプションである設定オプションが異なっていれば、前記設定オプションを、前記選択されたリードオプションに変更し、変更後の設定オプションを用いてリードを実行するようになっており、
     各メモリ領域は、リード単位であるページであり、
     各メモリ領域ユニットは、複数のブロックを有し、
     各ブロックは、データ消去単位であり、複数のページを有し、
     各ページは、LSB(Least Significant bit/byte)とMSB(Most Significant bit/byte)のいずれかの種別に該当し、
     前記1以上のリード影響属性は、ブロックのデータ消去回数、ブロックの先頭ページにデータが書き込まれてからの経過時間、バス、チップイネーブルライン、メモリ領域ユニット及びページ種別のうちの少なくとも1つである、
    請求項2記載の不揮発メモリデバイス。
  4.  各メモリ領域ユニットは、奇数番のブロックを有する第1のメモリ領域サブユニットと、偶数番のブロックを有する第2のメモリ領域サブユニットとを有し、
     前記1以上のリード影響属性は、ブロックのデータ消去回数、ブロックの先頭ページにデータが書き込まれてからの経過時間、バス、チップイネーブルライン、メモリ領域ユニット、メモリ領域サブユニット及びページ種別のうちの少なくとも1つである、
    請求項3記載の不揮発メモリデバイス。
  5.  前記メモリコントローラが、選択されたリードオプションと、前記リード元メモリ領域を含んだメモリ領域ユニットについて設定済のリードオプションである設定オプションが異なっていれば、前記設定オプションを、前記選択されたリードオプションに変更し、変更後の設定オプションを用いてリードを実行するようになっており、
     リードの実行は、リードコマンドの発行及び実行を含み、
     前記メモリコントローラは、リードオプションが同一の複数のリードコマンドをリードオプション毎に連続して実行する、
    請求項1記載の不揮発メモリデバイス。
  6.  リード要求を送信する上位装置に接続されており、
     前記メモリコントローラは、前記上位装置からリード要求を受信し、前記リード要求に従いリードコマンドを発行及び実行し、前記リード要求に対する応答を前記上位装置に送信するようになっており、
     リードオプション毎に連続して実行されるリードコマンドの数は、前記上位装置に対する応答時間リミットと、実行待ちリードコマンドの総数と、リードオプションの特性とに応じた数である、
    請求項5記載の不揮発メモリデバイス。
  7.  前記メモリコントローラは、リードオプションが同一の複数のリードコマンドをリードオプション毎に管理することを、リードオプションの設定単位より大きな単位で行う、
    請求項5記載の不揮発メモリデバイス。
  8.  前記管理情報において、メモリ領域ユニット毎に記録されているリードオプションは、そのメモリ領域ユニットからの直前回のリードに成功したときに使用されたリードオプションである最適リードオプションであり、
     前記メモリコントローラは、リードが最適リードオプションの適用条件を満たすか否かを判定し、その判定結果が真の場合に、リード元メモリ領域を含んだメモリ領域ユニットに対応した最適リードオプションを前記管理情報から選択する、
    請求項1記載の不揮発メモリデバイス。
  9.  前記各メモリ領域ユニットは、複数のブロックを有し、
     各ブロックは、複数のページを有し、
     各ページは、リード単位であるメモリ領域であり、
     前記適用条件は、以下のサブ条件(a)~(d)、
    (a)リードが、電断後の1周目の検査リード処理が行われている期間におけるリードである、又は、リード元ページが、電断後の1周目の検査リード処理での検査リードに未だ成功していないページである、
    (b)リード元ページを含んだメモリ領域ユニットにおけるいずれかのページについてアンコレクタブルエラーが発生している、
    (c)リード元ページを含むブロックであるリード元ブロックが電断後のリフレッシュ済ブロックではない、及び、
    (d)前記リード元ブロックがオープンブロックではない、
    の少なくとも1つを満たすことであり、
     前記検査リードとは、データのエラービット数をチェックするためのリードであり、
     前記検査リード処理とは、全ての検査対象ページに対してそれぞれ検査リードを行う処理であり、
     前記リフレッシュ済ブロックとは、移動元ブロックからリードされエラー訂正されたデータの移動先ブロックであり、
     前記オープンブロックとは、途中のページまでデータが書き込まれているブロックである、
    請求項8記載の不揮発メモリデバイス。
  10.  リードが前記適用条件を満たすとは、前記サブ条件(a)乃至(c)の全てが満たされていることである、
    請求項9記載の不揮発メモリデバイス。
  11.  リードが前記適用条件を満たすとは、更に前記サブ条件(d)も満たされていることである、
    請求項10記載の不揮発メモリデバイス。
  12.  前記判定結果が偽の場合に、前記メモリコントローラは、デフォルトのリードオプションでリード元ページに対するリードを行うようになっており、
     前記検査リードで使用されるリードオプションは、前記デフォルトのリードオプションと同じである、
    請求項9記載の不揮発メモリデバイス。
  13.  前記メモリコントローラは、
      前記選択した最適リードオプションを用いたリードに失敗した場合、前記選択した最適リードオプションとは別のリードオプションでリード元メモリ領域に対するリードをリトライし、
      リトライしたリードに成功した場合、成功したリードで使用したリードオプションを、前記リード元メモリ領域を含んだメモリ領域ユニットに対応する最適リードオプションとして前記管理情報に記録する、
    請求項8記載の不揮発メモリデバイス。
  14.  複数の不揮発メモリデバイスで構成されたRAID(Redundant Array of Independent (or Inexpensive) Disks)グループと、
     前記RAIDグループを構成する各不揮発メモリデバイスにリード要求を送信するストレージコントローラと
    を有し、
     各不揮発メモリデバイスが、不揮発メモリと、リード要求に従い前記不揮発メモリに対してリードオプションを用いてリードを実行するメモリコントローラとを有し、
     前記不揮発メモリは、複数のメモリ領域ユニットを含み、
     各メモリ領域ユニットが、複数のメモリ領域を含み、
     前記メモリコントローラが、リード単位であるメモリ領域よりも大きな単位であるメモリ領域ユニット毎にリードオプションを記録した管理情報を保持し、
     前記メモリコントローラが、
      リード元メモリ領域を含んだメモリ領域ユニットを特定し、
      前記特定したメモリ領域ユニットに対応したリードオプションを選択し、
      前記選択したリードオプションを用いて前記リード元メモリ領域に対するリードを実行する、
    ストレージ装置。
  15.  前記ストレージコントローラは、複数のリード種別にそれぞれ対応した複数種類のリードリトライ回数閾値(RR閾値)を指定したコマンドである設定コマンドを、各不揮発メモリデバイスに送信し、
     前記メモリコントローラは、前記設定コマンドを受信し、前記設定コマンドで指定されている複数種類のRR閾値を記憶し、
     前記メモリコントローラは、リードに失敗した場合、前記リード元メモリ領域に対するリードの繰り返し回数が、前記複数種類のRR閾値のうちの前記リードの種別に対応した種類のRR閾値未満であれば、直前回のリードオプションとは別のリードオプションを選択し、選択したリードオプションを用いて前記リード元メモリ領域に対するリードを実行する、
    請求項14記載のストレージ装置。
  16.  各種RR閾値は、前記RAIDグループのRAID構成、前記RAIDグループの冗長性の有無、前記RAIDグループにおいて閉塞した不揮発メモリデバイスの数、及び、前記RAIDグループが性能重視か否か、のうちの少なくとも1つに基づいて決まる、
    請求項15記載のストレージ装置。
  17.  管理端末に接続されており、
     前記ストレージコントローラが、前記管理端末から各RR閾値を受け付けて記憶する、
    請求項15記載のストレージ装置。
  18.  前記設定コマンドは、更に、リードオプションの選択方針であるリードモードも指定し、
     各メモリコントローラは、受信した設定コマンドで指定されているリードモードに従いリードオプションを選択するようになっており、且つ、前記上位装置からのリード要求に対し所定のエラーが生じた場合に所定の応答を前記ストレージコントローラに送信するようになっており、
     前記ストレージコントローラは、前記所定の応答を受信した場合、前記受信したチェック応答の送信元のメモリコントローラに、リードモードを指定したリード要求である特殊リード要求を送信し、
     特殊リード要求を受信したメモリコントローラは、前記設定コマンドで指定されたリードモードより前記特殊リード要求で指定されたリードモードを優先する、
    請求項15記載のストレージ装置。
  19.  前記ストレージコントローラは、前記所定の応答を受信した場合、前記受信したチェック応答の送信元のメモリコントローラに、前記所定の応答を受信したときの状況に応じて、前記設定コマンドと、リードモードを指定したリード要求である特殊リード要求とのいずれかを選択して送信するようになっており、
     前記設定コマンドは、前記メモリコントローラによりリード要求の受け付けを保留することが必要とされるコマンドである、
    請求項15記載のストレージ装置。
  20.  前記管理情報において、メモリ領域ユニット毎に記録されているリードオプションは、そのメモリ領域ユニットからの直前回のリードに成功したときに使用されたリードオプションである最適リードオプションであり、
     前記メモリコントローラは、リードが最適リードオプションの適用条件を満たすか否かを判定し、その判定結果が真の場合に、リード元メモリ領域を含んだメモリ領域ユニットに対応した最適リードオプションを前記管理情報から選択する、
    請求項14記載のストレージ装置。
PCT/JP2014/058134 2014-03-24 2014-03-24 不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置 WO2015145552A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2014/058134 WO2015145552A1 (ja) 2014-03-24 2014-03-24 不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置
US15/122,669 US9898201B2 (en) 2014-03-24 2014-03-24 Non-volatile memory device, and storage apparatus to reduce a read retry occurrence frequency and prevent read performance from lowering

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/058134 WO2015145552A1 (ja) 2014-03-24 2014-03-24 不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置

Publications (1)

Publication Number Publication Date
WO2015145552A1 true WO2015145552A1 (ja) 2015-10-01

Family

ID=54194153

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/058134 WO2015145552A1 (ja) 2014-03-24 2014-03-24 不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置

Country Status (2)

Country Link
US (1) US9898201B2 (ja)
WO (1) WO2015145552A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111149083A (zh) * 2017-08-07 2020-05-12 铠侠股份有限公司 支持低延时操作的ssd架构
US11269549B2 (en) 2019-01-17 2022-03-08 Kioxia Corporation Storage device and command processing method

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10078448B2 (en) * 2015-07-08 2018-09-18 Samsung Electronics Co., Ltd. Electronic devices and memory management methods thereof
JP6677627B2 (ja) * 2016-12-20 2020-04-08 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびメモリアクセス方法
US10497447B2 (en) * 2017-06-29 2019-12-03 SK Hynix Inc. Memory device capable of supporting multiple read operations
CN109062511B (zh) * 2018-07-26 2021-12-17 浪潮电子信息产业股份有限公司 一种数据读取的方法以及相关装置
KR20200043814A (ko) * 2018-10-18 2020-04-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
TWI690928B (zh) * 2019-01-10 2020-04-11 慧榮科技股份有限公司 改善快閃記憶體之讀取重試的方法、控制器以及相關儲存裝置
US11404131B2 (en) * 2019-07-12 2022-08-02 Micron Technology, Inc. Decision for executing full-memory refresh during memory sub-system power-on stage

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000148604A (ja) * 1998-11-12 2000-05-30 Hitachi Ltd 記憶装置の制御方法
US20110066899A1 (en) * 2009-09-17 2011-03-17 Samsung Electronics Co., Ltd. Nonvolatile memory system and related method of performing erase refresh operation
JP2011100519A (ja) * 2009-11-06 2011-05-19 Toshiba Corp メモリシステム
JP2011238346A (ja) * 2011-06-16 2011-11-24 Sandisk Il Ltd フラッシュメモリ内のエラーから復旧するための方法
JP2013025821A (ja) * 2011-07-22 2013-02-04 Fusion-Io Inc ソリッドステート記憶媒体に関する設定パラメーターを判定するための装置、システム、及び方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7954037B2 (en) 2005-10-25 2011-05-31 Sandisk Il Ltd Method for recovering from errors in flash memory
WO2011094454A2 (en) 2010-01-27 2011-08-04 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000148604A (ja) * 1998-11-12 2000-05-30 Hitachi Ltd 記憶装置の制御方法
US20110066899A1 (en) * 2009-09-17 2011-03-17 Samsung Electronics Co., Ltd. Nonvolatile memory system and related method of performing erase refresh operation
JP2011100519A (ja) * 2009-11-06 2011-05-19 Toshiba Corp メモリシステム
JP2011238346A (ja) * 2011-06-16 2011-11-24 Sandisk Il Ltd フラッシュメモリ内のエラーから復旧するための方法
JP2013025821A (ja) * 2011-07-22 2013-02-04 Fusion-Io Inc ソリッドステート記憶媒体に関する設定パラメーターを判定するための装置、システム、及び方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111149083A (zh) * 2017-08-07 2020-05-12 铠侠股份有限公司 支持低延时操作的ssd架构
US11269549B2 (en) 2019-01-17 2022-03-08 Kioxia Corporation Storage device and command processing method

Also Published As

Publication number Publication date
US9898201B2 (en) 2018-02-20
US20170075574A1 (en) 2017-03-16

Similar Documents

Publication Publication Date Title
WO2015145552A1 (ja) 不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置
KR102487553B1 (ko) 리페어 가능한 휘발성 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US8756367B2 (en) Information processing device, external storage device, host device, relay device, control program, and control method of information processing device
CN107025185B (zh) 数据存储装置及其操作方法
US10120769B2 (en) Raid rebuild algorithm with low I/O impact
WO2016067328A1 (ja) 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス
CN111722793A (zh) 开放通道存储设备的操作方法
US20070294588A1 (en) Performing a diagnostic on a block of memory associated with a correctable read error
WO2017077624A1 (ja) 不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置
KR101468432B1 (ko) 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술
CN109960466B (zh) 存储器系统及其操作方法
KR20230142795A (ko) Zns 디바이스들에서의 상이한 기입 우선순위화
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
CN116954491A (zh) 用于存储控制器的操作方法和包括存储控制器的存储系统
CN111356991B (zh) 逻辑块寻址范围冲突爬虫
US11036493B2 (en) Memory system and operating method thereof
US10528289B2 (en) Data storage method for optimizing data storage device and its data storage device
KR101070511B1 (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
US10901866B2 (en) Failure detection and data recovery in a storage system
TWI648628B (zh) 避免讀取擾動的資料搬移方法以及使用該方法的裝置
CN115794535A (zh) 事件日志管理方法、控制器和存储装置
US10628067B2 (en) Memory system and operating method thereof
JP2019121129A (ja) 不揮発性メモリモジュール
CN108572920B (zh) 避免读取扰动的数据搬移方法以及使用该方法的装置
CN112084118A (zh) 数据存储装置及其操作方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14887443

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15122669

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14887443

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP