WO2022158120A1 - コントローラ、不揮発性記憶装置、および、制御方法 - Google Patents

コントローラ、不揮発性記憶装置、および、制御方法 Download PDF

Info

Publication number
WO2022158120A1
WO2022158120A1 PCT/JP2021/043549 JP2021043549W WO2022158120A1 WO 2022158120 A1 WO2022158120 A1 WO 2022158120A1 JP 2021043549 W JP2021043549 W JP 2021043549W WO 2022158120 A1 WO2022158120 A1 WO 2022158120A1
Authority
WO
WIPO (PCT)
Prior art keywords
command
signal processing
data
read
unit
Prior art date
Application number
PCT/JP2021/043549
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 ソニーセミコンダクタソリューションズ株式会社
Publication of WO2022158120A1 publication Critical patent/WO2022158120A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Definitions

  • This technology relates to controllers. More specifically, the present invention relates to a controller that controls nonvolatile memory, a nonvolatile memory device, and a control method.
  • non-volatile memory In recent information processing systems, non-volatile memory (NVM: Non-Volatile Memory) is sometimes used as an auxiliary storage device or storage.
  • This non-volatile memory is broadly classified into flash memory, which supports data access in large units, and non-volatile random access memory (NVRAM: Non-Volatile RAM), which enables high-speed random access in small units.
  • NVRAM Non-Volatile RAM
  • a typical example of flash memory is a NAND flash memory.
  • examples of nonvolatile random access memory include ReRAM (Resistance RAM), PCRAM (Phase-Change RAM), MRAM (Magnetoresistive RAM), and the like.
  • Commands for accessing non-volatile memory are generally registered in a queue and retrieved in order according to the FIFO (First In, First Out) method.
  • FIFO First In, First Out
  • a memory controller has been proposed that reconfigures the sequence matrix when there is a possibility of conflicts or delays, then registers commands in a queue, takes them out in order, and executes them (see, for example, Patent Document 1). .).
  • This technology was created in view of this situation, and aims to reduce latency in the controller that registers commands in the queue.
  • a management unit for registering in the command queue in association with a valid flag indicating whether or not it is possible comprising: a first signal processing unit that updates the valid flag corresponding to a command; and a control unit that reads and executes an executable command indicated by the valid flag from the command queue based on the identification information, and its control method. This brings about the effect of reducing the latency.
  • the first signal processing may include processing for generating an error correction code from data. This brings about the effect of encoding the data.
  • the device may further include a second signal processing section that performs second signal processing on the read data read from the nonvolatile memory. This brings about the effect that the second signal processing is performed at the time of reading.
  • the second signal processing may include processing for correcting errors in the data based on the error correction code. This brings about the effect of correcting data errors.
  • an execution determination unit may be further provided for determining whether the command is executable and whether the corresponding identification information is the oldest for each of the registered commands. This has the effect of executing executable commands in order.
  • the nonvolatile memory includes a predetermined number of banks, and the execution determination unit determines whether the command is executable, the bank to be accessed is not busy, and the bank is not busy. It may be determined whether or not the identification information to be stored is the oldest. This has the effect of executing executable commands in order.
  • the management unit associates the identification information, the command, the valid flag, and an atomic flag indicating whether or not to continuously execute the next received command, and performs the above is registered in the command queue, and the execution determination unit determines whether or not the command is executable and whether or not the next received command is to be continuously executed, and the next received command is not to be continuously executed In this case, it may be determined whether the corresponding identification information is the oldest. This brings about the effect that the two commands are executed consecutively.
  • a second signal processing unit that performs second signal processing on the read data read from the nonvolatile memory, and a background processing generator that starts predetermined background processing. You may further comprise a part. This brings about an effect that background processing is executed.
  • the background processing includes processing in which the control unit executes a read command for reading out read data from a predetermined address, second signal processing for the read data, and second signal processing for the read data.
  • a first signal processing for generating write data from the data after the signal processing of 2; and processing for the control unit to execute a refresh command for writing the write data after the first signal processing to the address. can be anything. This brings about the effect of error recovery.
  • the first aspect further comprises an execution-waiting command measuring unit that measures the number of commands waiting to be executed among the commands registered in the command queue, and the management unit measures the measurement result of the command measuring unit.
  • the registration of the above command may be suspended based on this. This has the effect of reducing latency.
  • the command measurement unit predicts the latency based on the number of commands, and notifies the host computer that the predicted value exceeds the threshold when the predicted value exceeds the threshold. may notify you. This brings about the effect of suppressing the latency seen from the host computer.
  • a second aspect of the present technology includes a nonvolatile memory, a command queue, identification information of a command for accessing the nonvolatile memory, the command, and a valid flag indicating whether or not the command is executable. and a management unit for registering the data in the command queue in association with each other, and performing first signal processing on the data written by the command, and updating the valid flag corresponding to the command after completion of the first signal processing. and a controller for reading and executing an executable command indicated by the valid flag from the command queue based on the identification information. This has the effect of reducing the latency of commands for accessing the nonvolatile memory device.
  • FIG. 6 is a flowchart illustrating an example of NVM busy completion processing according to the first embodiment of the present technology; It is a timing chart which shows an example of operation of a nonvolatile memory device in a 1st embodiment of this art.
  • 1 is a block diagram showing a configuration example of an information processing system when encoding data in the first embodiment of the present technology;
  • FIG. It is a flow chart which shows an example of writing processing in a 1st embodiment of this art.
  • It is a flow chart which shows an example of read-out processing in a 1st embodiment of this art.
  • FIG. 7 is a timing chart showing an example of the operation of the memory controller in the first comparative example
  • FIG. 11 is a timing chart showing an example of operation of a memory controller in a second comparative example
  • FIG. It is a block diagram showing an example of 1 composition of an information processing system in a 2nd embodiment of this art. It is a flow chart which shows an example of execution judging processing in a 2nd embodiment of this art. It is a timing chart which shows an example of operation of a memory controller in a 2nd embodiment of this art. It is a block diagram showing an example of 1 composition of an information processing system in a 3rd embodiment of this art. It is a figure which shows one structural example of the command queue in 3rd Embodiment of this technique.
  • FIG. 1 It is a flow chart which shows an example of command registration processing in a 3rd embodiment of this art. It is a flow chart which shows an example of execution judging processing in a 3rd embodiment of this art. It is a timing chart which shows an example of operation of a non-volatile memory device in a 3rd embodiment of this art. It is a flow chart which shows an example of write-in processing in a 3rd embodiment of this art. It is a block diagram showing an example of 1 composition of an information processing system in a 4th embodiment of this art. It is a figure which shows one structural example of the command queue in 4th Embodiment of this technique. It is a flow chart which shows an example of background processing in a 4th embodiment of this art. FIG.
  • FIG. 14 is a flowchart showing an example of BG (Back Ground) processing command registration processing according to the fourth embodiment of the present technology
  • FIG. It is a block diagram which shows one structural example of the non-volatile memory device in 5th Embodiment of this technique.
  • FIG. 17 is a flowchart showing an example of registration suspension determination processing according to the fifth embodiment of the present technology;
  • FIG. 1 is a block diagram showing a configuration example of an information processing system according to a first embodiment of the present technology.
  • This information processing system comprises a host computer 100 and a non-volatile storage device 150 .
  • the nonvolatile memory device 150 comprises a memory controller 200 and NVM300.
  • the host computer 100 controls the nonvolatile storage device 150. This host computer 100 issues a command and supplies the command, address and data to the nonvolatile memory device 150 via the signal line 109 . The host computer 100 also receives data from the nonvolatile storage device 150 .
  • the command is for accessing the NVM 300, and includes, for example, a write command for instructing writing of data and a read command for instructing reading of data.
  • a command from the host computer 100 is also called a host command.
  • a logical address or the like is used as the address from the host computer 100 .
  • the memory controller 200 controls the NVM 300.
  • This memory controller 200 comprises a host interface 210 , an ID management section 220 , a signal processing section 230 , a command queue 240 , an execution determination section 250 , an NVM control section 260 , an NVM interface 270 and a signal processing section 280 .
  • a data buffer that holds data, a command buffer that holds commands, and the like are omitted in FIG.
  • the memory controller 200 is an example of the controller described in the claims.
  • the host interface 210 exchanges commands, addresses and data between the host computer 100 and the ID management section 220 and signal processing section 280 .
  • the host interface 210 supplies commands, addresses and data from the host computer 100 to the ID management section 220 .
  • the host interface 210 also supplies data from the signal processing unit 280 to the host computer 100 via the signal line 109 .
  • SATA Serial Advanced Technology Attachment
  • PCI Express PCI Express
  • the ID management unit 220 issues identification information (ID: IDentification data) indicating the order in which commands are received and issued, and registers them in the command queue 240 together with commands and valid flags.
  • ID IDentification data
  • the valid flag is a flag indicating whether or not the command is executable.
  • the ID management unit 220 decodes a command from the host computer 100, and if it is a write command, controls the signal processing unit 230 to execute predetermined signal processing.
  • the signal processing unit 230 performs predetermined signal processing on data written by a write command.
  • This signal processing includes, for example, processing for generating an ECC (Error-Correcting Code) from data.
  • ECC Error-Correcting Code
  • This ECC contains data and parity for correcting errors in the data.
  • the ECC is held in a data buffer (not shown) as write data.
  • the ID management unit 220 is an example of the management unit described in the claims.
  • the signal processing unit 230 updates the valid flag corresponding to the write command in the command queue 240 after completing the signal processing for the data.
  • the signal processing unit 280 is an example of the first signal processing unit described in the claims.
  • the execution determination unit 250 refers to the command queue 240 and determines for each registered command whether the command is executable and the corresponding ID is the oldest.
  • the execution determination section 250 supplies the determination result to the NVM control section 260 .
  • the NVM control unit 260 reads commands from the command queue 240 based on the determination result of the execution determination unit 250 and executes them.
  • the NVM control unit 260 When executing a write command (host command), the NVM control unit 260 issues a command to instruct the NVM 300 to write, and supplies it to the NVM interface 270 together with the corresponding address and write data. Commands issued by the NVM control unit 260 are also called memory commands. A physical address is used as an address from the memory controller 200 .
  • the NVM control unit 260 issues a command (memory command) to instruct the NVM 300 to read, and supplies it to the NVM interface 270 together with the corresponding address.
  • a command memory command
  • the NVM control unit 260 is an example of the control unit described in the claims.
  • the NVM interface 270 exchanges commands, addresses and data between the NVM control unit 260 and signal processing unit 280 and the NVM 300 .
  • This NVM interface 270 supplies commands, addresses and write data from the signal processing unit 280 to the NVM 300 via the signal line 209 .
  • the NVM interface 270 also supplies read data from the NVM 300 to the signal processing unit 280 .
  • the signal processing unit 280 performs predetermined signal processing on read data read from the NVM 300 .
  • This signal processing includes, for example, processing for correcting data errors using ECC.
  • the signal processing unit 280 supplies the processed data to the host interface 210 .
  • the NVM 300 writes write data and reads read data under the control of the memory controller 200 .
  • FIG. 2 is a diagram showing a configuration example of the command queue 240 according to the first embodiment of the present technology.
  • the command queue 240 is provided with a plurality of entries to which entry numbers such as "0" to "255" are assigned. Each entry has columns of "ID”, "command”, “page address”, “data buffer address”, “valid flag” and "execution flag”.
  • the "ID” column holds the issued ID. For example, the older the order of reception, the smaller the ID issued.
  • the "command” column holds commands such as write commands and read commands. "Write” in the figure indicates a write command, and "read” indicates a read command.
  • the "page address” column holds the address of the NVM 300 to be accessed.
  • the "data buffer address” column holds addresses in the data buffer where write data and read data are stored.
  • a valid flag of "0” or “1” is held in the "valid flag” column. For example, “1” is retained when the command is executable, and “0” is retained when the command is not executable.
  • the “execution flag” column holds an execution flag of “0” or “1”. For example, “1” is held when the command execution is started by the NVM control unit 260, and "0" is held before the start.
  • registering in the command queue 240 means having any entry hold various valid information (such as an ID).
  • a registration means to invalidate various information held in any entry.
  • FIG. 3 is a flowchart illustrating an example of command registration processing according to the first embodiment of the present technology. This command registration process is executed by the ID management section 220 and the signal processing section 230 for each command from the host computer 100 .
  • the ID management unit 220 determines whether or not there is an empty space in the command queue 240 (step S901). If there is no space (step S901: No), the ID management unit 220 waits (step S902) and repeats step S901. Commands received while waiting are held in the command buffer.
  • step S901 If there is space (step S901: Yes), the ID management unit 220 issues an ID indicating the order of reception of the received commands (step S903) and registers them in the command queue 240 (step S904).
  • the ID management unit 220 decodes the registered command and determines whether or not the command is a write command (step S905). If it is a write command (step S905: Yes), the signal processing unit 230 executes signal processing on the data corresponding to the write command (step S906). At the time of registration, "0" is set to the valid flag corresponding to the write command.
  • step S905 If it is a read command (step S905: No), the ID management unit 220 sets the valid flag corresponding to the read command to "1" (step S907). After step S906, the signal processing unit 230 updates the valid flag corresponding to the write command to "1" (step S907). After step S907, ID management unit 220 and signal processing unit 230 terminate the command registration process.
  • FIG. 4 is a flowchart showing an example of execution determination processing according to the first embodiment of the present technology. This execution determination process is repeatedly executed by the execution determination unit 250 at a constant cycle.
  • “Start” is set to, for example, the smallest entry number in the command queue 240, and "End” is set to the largest entry number.
  • the execution determination unit 250 sets the value of "Start” to the variable "Entry” and sets a null value to the variable "Return” (step S911). Then, the execution determination unit 250 determines whether or not "Entry.Valid” is "1" and "Entry.Exec” is "0" (step S912). Here, “Entry.Valid” indicates the value of the valid flag in the entry indicated by “Entry”. “Entry.Exec” indicates the value of the execution flag in the entry indicated by "Entry”.
  • step S912 When “Entry.Valid” (valid flag) is “1” and “Entry.Exec” (execution flag) is “0” (step S912: Yes), the execution determination unit 250 sets the variable "Return is a null value (step S913).
  • step S913 the execution determination unit 250 determines whether "Entry.ID” is smaller than “Return.ID” (step S914).
  • Entry.ID indicates the ID in the entry indicated by “Entry.”
  • Return.ID indicates the ID in the entry indicated by "Return”.
  • step S913 If “Return” is a null value (step S913: Yes), or if "Entry.ID” is smaller than “Return.ID” (step S914: Yes), the execution determination unit 250 sets "Entry ” is set (step S915).
  • step S912 If “Entry.Valid” is “0” or “Entry.Exec” is “1” (step S912: No), the execution determination unit 250 increments the value of "Entry” (step S916).
  • step S914 If “Entry.ID” is greater than or equal to "Return.ID” (step S914: No), or after step S915, the execution determination unit 250 also executes step S916. Then, the execution determination unit 250 determines whether or not "Entry” has reached "End” (step S917).
  • step S917: No If “Entry” has not reached “End” (step S917: No), the execution determination unit 250 repeats step S912 and subsequent steps. When “Entry” reaches “End” (step S917: Yes), the execution determination unit 250 sets "Return” to the variable "EXEC” (step S918), and terminates the execution determination process.
  • FIG. 5 is a flowchart showing an example of command execution processing according to the first embodiment of the present technology. This command execution process is executed by the NVM control unit 260 each time the execution determination process is executed.
  • the NVM control unit 260 acquires the execution determination result (that is, "EXEC") (step S921), and determines whether the NVM interface 270 is free (step S922). If there is no space in the NVM interface 270 (step S922: No), the NVM control unit 260 waits (step S923) and repeats step S922.
  • EXEC execution determination result
  • step S922 If the NVM interface 270 is free (step S922: Yes), the NVM control unit 260 reads the command and page address in the entry indicated by "EXEC" and transmits them to the NVM 300 (step S924).
  • the NVM control unit 260 determines whether or not there is write data corresponding to the transmitted command (step S925). If there is corresponding write data (step S925: Yes), the NVM control unit 260 transmits the write data to the NVM 300 (step S926).
  • step S925: No If there is no corresponding write data (step S925: No), or after step S926, the NVM control unit 260 updates the execution flag in the entry indicated by "EXEC" to "1" (step S927), and executes the command. End the process.
  • FIG. 6 is a flowchart showing an example of NVM busy completion processing according to the first embodiment of the present technology. This NVM busy completion process is executed by the NVM control unit 260 and the signal processing unit 280 after the power is turned on.
  • the NVM control unit 260 monitors the NVM interface 270 (step S931) and determines whether or not the NVM busy is completed (step S932).
  • NVM busy indicates read busy after sending a read command or write busy after sending a write command. If the NVM busy is not completed (step S932: No), the NVM control unit 260 repeats step S931 and subsequent steps.
  • step S932 When the NVM busy is completed (step S932: Yes), the NVM control unit 260 determines whether the completed NVM busy is read busy (step S933).
  • step S933: Yes the signal processing unit 280 performs signal processing on the read data (step S934). If it is write busy (step S933: No), the NVM control unit 260 checks whether there is a write error (step S935). When a write error occurs, rewriting or notification to the host computer 100 is performed.
  • step S934 the signal processing unit 280 deletes the registration of the corresponding read command (step S936). Also, after step S935, the NVM control unit 260 deletes the registration of the corresponding write command (step S936). After step S936, the NVM control unit 260 repeats step S931 and subsequent steps.
  • FIG. 7 is a timing chart showing an example of the operation of the nonvolatile memory device 150 according to the first embodiment of the present technology.
  • a indicates the operation for executing the read command
  • b in the figure indicates the operation for executing the write command.
  • the memory controller 200 has transmitted the read command and the page address of the read destination to the NVM 300 during the period from timing T0 to T1.
  • the NVM 300 starts transmitting read data to the memory controller 200 at timing T2 after the read busy period has passed.
  • the memory controller 200 transmits the write command and the page address of the write destination within the period of timings T0 to T1, and the write data during the period of timings T1 to T2. is assumed to have been sent.
  • the NVM 300 starts sending Ack or Nck to the memory controller 200 at timing T3 after the write busy period has passed. Ack indicates a positive acknowledgment when there is no write error, and Nck indicates a negative acknowledgment when a write error occurs.
  • FIG. 8 is a block diagram showing a configuration example of an information processing system when encoding data according to the first embodiment of the present technology.
  • the signal processing section 230 has an ECC generation processing section 231 and the signal processing section 280 has an error correction processing section 281 .
  • the ECC generation processing unit 231 generates ECC from data to be written.
  • the error correction processing unit 281 corrects data errors using ECC.
  • FIG. 9 is a flowchart showing an example of write processing according to the first embodiment of the present technology. This write process is executed by the nonvolatile memory device 150 when a write command is received from the host computer 100 .
  • the ECC generation processing unit 231 in the memory controller 200 generates ECC from the data to be written (step S941).
  • the memory controller 200 executes the write command (step S942) and determines whether or not a write error has occurred (step S943).
  • step S943: No the memory controller 200 notifies the host computer 100 of the path (step S944). If a write error occurs (step S943: Yes), the memory controller 200 notifies the host computer 100 of failure (step S945). After step S944 or S945, the nonvolatile memory device 150 ends the write process.
  • FIG. 10 is a flowchart showing an example of read processing according to the first embodiment of the present technology. This read processing is executed by the nonvolatile memory device 150 when a read command is received from the host computer 100 .
  • the memory controller 200 executes the read command (step S951).
  • the error correction processing unit 281 in the memory controller 200 performs error correction on the read data (step S952), and determines whether the error can be corrected (step S953). If the error can be corrected (step S953: Yes), the error correction processing unit 281 corrects the error (step S954). If the error cannot be corrected (step S953: No), the error correction processing unit 281 notifies the host computer 100 of the read error (step S955). After step S954 or S955, the nonvolatile memory device 150 ends the read processing.
  • FIG. 11 is a timing chart showing an example of the operation of the memory controller 200 according to the first embodiment of the present technology. It is assumed that the host interface 210 receives commands in the order of read command, write command, read command, and read command after timing T0.
  • the ID management unit 220 issues IDs of "0", “1", “2”, and “3” in order of reception, and registers each command in the command queue 240 in order.
  • "Read 0", “Write 1", “Read 2”, and “Read 3” in the figure indicate read commands or write commands with IDs of "0", "1", “2” and “3”.
  • Rectangles in the command queue 240 indicate command registration periods. At the time of registration, the valid flag of each read command is set to "1", and the valid flag of each write command is set to "0".
  • the signal processing unit 230 starts the process of generating ECC at timing T2. When this process is completed, the valid flag of the write command is updated to "1".
  • the NVM control unit 260 executes the read command with ID "0" at timing T2, and the signal processing unit 280 starts error correction of the read data at timing T4 after the read busy period has passed.
  • the read command with ID "0" is deleted from the command queue 240 at timing T2.
  • the write command is registered in the command queue 240, but the ECC has not been generated at this point, and its valid flag remains "0". That is, the write command cannot be executed. Therefore, the NVM control unit 260 executes the read command with the valid flag of "1" and the oldest ID of "2".
  • the signal processing unit 280 starts error correction of the read data. The read command with ID "2" is deleted from the command queue 240 at timing T5.
  • the NVM control unit 260 executes the write command.
  • the write command is deleted from the command queue 240 at timing T6.
  • the NVM control unit 260 executes the remaining read command with ID "3".
  • the signal processing unit 280 starts error correction of the read data.
  • the read command with ID "3" is deleted from the command queue 240 at timing T7.
  • the latency of the write command is the period from timing T1 to T7
  • the latency of the read command with ID "2" is the period from timing T2 to the completion of error correction immediately after timing T5.
  • FIG. 12 is a timing chart showing an example of the operation of the memory controller 200 in the first comparative example. The order in which commands are received is the same as in FIG.
  • the NVM control unit 260 executes the read command with ID "0" at timing T2. From timings T2 to T5, the ECC generation process is not completed, and the next write command cannot be executed. Therefore, the NVM control unit 260 executes the write command after waiting until the timing T6 when the process is completed.
  • the NVM control unit 260 executes the next read command with ID "2". Then, at timing T8 when the read busy period has passed, the NVM control unit 260 executes the remaining read command with ID "4".
  • FIG. 13 is a timing chart showing an example of the operation of the memory controller 200 in the second comparative example. The order in which commands are received is the same as in FIG.
  • the NVM control unit 260 preferentially executes the read command with ID "2" at timing T5.
  • the ECC generation process is completed and the write command can be executed, but in the second comparative example, the read command is prioritized as described above. Therefore, the NVM control unit 260 preferentially executes the read command with ID "3".
  • the NVM control unit 260 executes the remaining write commands.
  • the latency of the read command is made smaller than that of the first comparative example, and the latency of the write command is made smaller than that of the second comparative example. be able to.
  • the effect is likely to be exhibited.
  • the memory controller 200 registers a command in a queue in association with an execution flag and an ID, and executes an executable command based on the ID. Command latency can be reduced.
  • the execution determination unit 250 performs determination based on the ID, valid flag, and execution flag. It is necessary to know whether or not The execution determination unit 250 of the second embodiment differs from that of the first embodiment in that determination is made based on the ID, valid flag, execution flag, and bank state.
  • FIG. 14 is a block diagram showing a configuration example of an information processing system according to the second embodiment of the present technology.
  • a signal processing unit 230 according to the second embodiment includes an ECC generation processing unit 231 and an ECC generation processing unit 232 .
  • a signal processing unit 280 according to the second embodiment includes an error correction processing unit 281 and an error correction processing unit 282 .
  • NVM 300 also includes multiple banks, such as banks 0-15.
  • the ECC generation processing unit 231 and the ECC generation processing unit 232 operate in parallel, and can individually perform ECC generation processing for two data in different write destination banks.
  • the error correction processing section 281 and the error correction processing section 282 also operate in parallel, and error correction can be individually performed for two pieces of read data in different read destination banks.
  • FIG. 15 is a flowchart showing an example of execution determination processing according to the second embodiment of the present technology.
  • the execution determination process of the second embodiment differs from that of the first embodiment in that step S961 is further executed.
  • step S912 When “Entry.Valid” is “1” and “Entry.Exec” is “0” (step S912: Yes), the execution determination unit 250 determines that the access destination bank corresponding to "Entry” is It is determined whether it is busy (step S961).
  • step S961: No If the bank is not busy (step S961: No), the execution determination unit 250 executes step S913 and subsequent steps, and if the bank is busy (step S961: Yes), the execution determination unit 250 executes step S916 and subsequent steps. .
  • the execution determination unit 250 determines whether the command is executable, the bank to be accessed is not busy, and the corresponding ID is the oldest. As a result, latency can be reduced in an information processing system having a plurality of banks.
  • FIG. 16 is a timing chart showing an example of the operation of the memory controller 200 according to the second embodiment of the present technology. It is assumed that the host interface 210 receives commands in the order of write command, read command, read command, write command and read command after timing T0.
  • the ID management unit 220 issues IDs of "0”, “1”, “2”, “3”, and “4" in order of reception, and registers each command in the command queue 240 in order. It is also assumed that commands with IDs "0", “1” and “4" access “bank 0" and the remaining commands access "bank 1".
  • the ECC generation processing unit 231 After timing T1, the ECC generation processing unit 231 generates ECC from the data corresponding to ID "0", and after timing T4, the ECC generation processing unit 232 generates ECC from the data corresponding to ID "3".
  • the NVM control unit 260 executes the next read command with ID "1".
  • the NVM control unit 260 executes the next read command with ID "2".
  • the read command for ID "1" is busy, but the read command for ID "2" can be executed in parallel because the banks to be accessed are different.
  • the NVM control unit 260 executes the write command with ID "0". Although the read is busy for ID "2", the write command for ID "0" can be executed in parallel because the banks to be accessed are different.
  • the NVM control unit 260 executes the write command with ID "3".
  • the write command for ID "0" is in a write busy state, but the write command for ID "3" can be executed in parallel because the banks to be accessed are different.
  • the NVM control unit 260 executes the next read command corresponding to ID "4".
  • the execution determination unit 250 further determines whether or not the bank to be accessed is busy. can do.
  • the memory controller 200 transmits the write command and the read command to the NVM 300 for execution, but two commands can be executed consecutively at this time.
  • the memory controller 200 of the third embodiment differs from that of the first embodiment in that it uses an atomic flag to specify whether or not two commands are to be executed consecutively.
  • FIG. 17 is a block diagram showing a configuration example of an information processing system according to the third embodiment of the present technology.
  • mask data is input to the signal processing section 230 .
  • This mask data indicates which bits NVM 300 should mask.
  • to mask means to exclude the bit indicated by the mask data from the write target.
  • the information processing system treats the error bit as a defective bit and retains the position of the defective bit. Then, the information processing system (for example, memory controller 200 or NVM 300) generates mask data for masking the defective bit.
  • the memory controller 200 continuously transmits mask data corresponding to the address and write data to the NVM 300 . Then, the NVM 300 writes the write data by excluding (that is, masking) the defective bit indicated by the mask data from the write target.
  • FIG. 18 is a diagram showing a configuration example of the command queue 240 according to the third embodiment of the present technology.
  • the command queue 240 of this third embodiment differs from that of the first embodiment in that an atomic flag is further held.
  • This atomic flag indicates whether or not to cause the NVM 300 to continuously execute commands with the next ID. For example, the atomic flag is set to "1" if the command with the next ID is to be executed continuously, and is set to "0" if it is not to be executed continuously.
  • the host computer 100 of the third embodiment transmits a mask command to the memory controller 200 when it is necessary to mask defective bits.
  • the memory controller 200 registers the mask command in the command queue 240 together with an atomic flag of "1".
  • the host computer 100 If there is a bit to be masked in the page address "10", the host computer 100 successively transmits a mask command and a write command specifying that address.
  • the memory controller 200 issues an ID such as "1”, registers the mask command in the command queue 240, and sets the atomic flag to "1". Then, the memory controller 200 issues the next ID “2” and registers the write command with the atomic flag of “0” in the command queue 240 .
  • FIG. 19 is a flowchart showing an example of command registration processing according to the third embodiment of the present technology.
  • the command registration process of the third embodiment differs from that of the first embodiment in that steps S962 to S964 are further executed.
  • step S905 the signal processing unit 230 determines whether the command is a mask command (step S962). If it is a mask command (step S962: Yes), the signal processing unit 230 updates the atomic flag corresponding to the command to "1" (step S963). Then, signal processing is executed for the data corresponding to the write command of the next ID (step S964).
  • step S962 If it is not a mask command (step S962: No), or after step S964, the signal processing unit 230 executes step S907.
  • FIG. 20 is a flowchart showing an example of execution determination processing according to the third embodiment of the present technology.
  • the execution determination process of the third embodiment differs from that of the first embodiment in that steps S965 and S966 are further executed.
  • execution determination unit 250 determines that "Entry.Atomic” is “1”. It is determined whether or not (step S965).
  • Entry.Atomic indicates the value of the atomic flag in the entry indicated by "Entry”.
  • step S966: Yes the execution determination unit 250 executes step S915.
  • step S966: No the execution determination unit 250 executes step S916 and subsequent steps.
  • FIG. 21 is a timing chart showing an example of the operation of the nonvolatile memory device 150 according to the third embodiment of the present technology. It is assumed that the memory controller 200 transmits the mask command and page address during the period of timing T0 to T1, and transmits the write command and page address, mask data and write data during the period of timing T1 to T2. . In this case, the NVM 300 starts sending Ack or Nck to the memory controller 200 at timing T3 after the write busy period has passed.
  • the NVM control unit 260 can refer to the flag to continuously execute the mask command and the write command.
  • FIG. 22 is a flowchart showing an example of write processing according to the third embodiment of the present technology.
  • the writing process of this third embodiment differs from that of the first embodiment in that steps S946 and S947 are further executed.
  • the memory controller 200 generates mask data when a defective bit occurs (step S946). Also, the ECC generation processing unit 231 generates an ECC (step S941). Then, when the mask data is generated, the memory controller 200 executes the mask command (step S947), and executes step S942 and subsequent steps.
  • the second embodiment can also be applied to the third embodiment.
  • the ID management unit 220 registers the atomic flag in the command queue 240, so the NVM control unit 260 continuously executes the mask command and the write command. be able to.
  • the memory controller 200 exchanges data between the host computer 100 and the NVM 300, but can also execute processing such as refresh in the background.
  • the memory controller 200 of the fourth embodiment differs from that of the first embodiment in that processing is performed in the background.
  • FIG. 23 is a block diagram showing a configuration example of an information processing system according to the fourth embodiment of the present technology.
  • the information processing system according to the fourth embodiment differs from that according to the first embodiment in that the memory controller 200 further includes a background process generator 290 .
  • the background processing generation unit 290 executes refresh processing and the like as background processing.
  • This refresh process is a process of reading and writing back data from an address when an error occurs at that address.
  • FIG. 24 is a diagram showing a configuration example of the command queue 240 according to the fourth embodiment of the present technology.
  • the command queue 240 of this fourth embodiment differs from that of the first embodiment in that an atomic flag is further held.
  • the background process generation unit 290 of the third embodiment continuously issues a read command and a refresh command specifying that address.
  • This refresh command is a command that instructs to write back the data read by the immediately preceding read command.
  • the memory controller 200 issues an ID such as "1”, registers the read command in the command queue 240, and sets the atomic flag to "1". The memory controller 200 then issues the next ID “2” and registers the refresh command with the atomic flag of “0” in the command queue 240 .
  • FIG. 25 is a flowchart showing an example of background processing in the fourth embodiment of the present technology. This background processing is executed by the nonvolatile storage device 150 when an error occurs in the NVM 300 .
  • the NVM control unit 260 in the memory controller 200 executes a read command for the refresh target address (step S971).
  • the error correction processing unit 281 in the memory controller 200 performs error correction on the read data (step S972), and determines whether or not the error can be corrected (step S973). If the error can be corrected (step S973: Yes), the error correction processing unit 281 corrects the error (step S974). If the error cannot be corrected (step S973: No), the error correction processing unit 281 detects a read error (step S975).
  • the ECC generation processing unit 231 in the memory controller 200 generates ECC from the error-corrected data (step S976).
  • the NVM control unit 260 executes the refresh command from the memory controller 200 (step S977), and determines whether or not a write error has occurred (step S978).
  • step S978: No the NVM control unit 260 determines a pass (step S979). If a write error occurs (step S978: Yes), the NVM control unit 260 determines a failure (step S980). After step S979 or S980, the nonvolatile memory device 150 terminates the background processing.
  • the error can be recovered by the memory controller 200 performing refresh processing.
  • FIG. 26 is a flowchart showing an example of BG processing command registration processing according to the fourth embodiment of the present technology. This BG processing command registration processing is executed for each command when the background processing generation unit 290 issues a read command and a refresh command.
  • the ID management unit 220 determines whether or not there is space in the command queue 240 (step S982). If there is no space (step S982: No), the ID management unit 220 waits (step S983) and repeats step S982.
  • step S982 If there is space (step S982: Yes), the ID management unit 220 issues an ID for the issued command (step S984) and registers it in the command queue 240 (step S985).
  • the ID management unit 220 decodes the registered command and determines whether or not the command is a refresh command (step S986). If it is a refresh command (step S986: Yes), the signal processing unit 230 performs signal processing on the data corresponding to the refresh command (step S987).
  • step S986 If it is a read command (step S986: No), the ID management unit 220 sets the atomic flag corresponding to the read command to "1" (step S988). Also, after step S987 or S988, the memory controller 200 sets the valid flag corresponding to the command to "1" (step S989). End command registration processing.
  • the memory controller 200 performs the refresh process, so an error occurring in the NVM 300 can be recovered.
  • the host computer 100 accesses the NVM 300 having multiple banks.
  • commands waiting to be executed may occur due to bank busy, and the host computer 100 cannot grasp how long commands are waiting.
  • the memory controller 200 of the fifth embodiment differs from the second embodiment in that it measures the number of commands waiting to be executed and predicts the latency.
  • FIG. 27 is a block diagram showing a configuration example of an information processing system according to the fifth embodiment of the present technology.
  • the information processing system according to the fifth embodiment differs from that according to the second embodiment in that the memory controller 200 further includes an execution waiting command measurement unit 295 .
  • the execution-waiting command counting unit 295 measures the number of commands waiting to be executed among the commands registered in the command queue 240 even though the valid flag is "1" (that is, executable). The execution waiting command measurement unit 295 also predicts the latency from the number of commands measured, and controls the ID management unit 220 to suspend command registration when the predicted value exceeds the threshold.
  • FIG. 28 is a flowchart showing an example of registration suspension determination processing according to the fifth embodiment of the present technology. This registration pause determination process is executed at regular intervals by the execution waiting command measurement unit 295 and the ID management unit 220 .
  • the execution-waiting command counting unit 295 refers to the command queue 240 and measures the number of commands whose valid flag is "1" and whose execution flag is "0" as the number of commands waiting to be executed (step S991).
  • the execution-waiting command measurement unit 295 predicts command latency based on the number of execution-waiting commands (step S992), and determines whether or not the predicted value exceeds a predetermined threshold (step S993).
  • Equation 2 T + (number of read commands waiting to be executed) x Tr + (number of write commands waiting to be executed) x Tw Equation 2
  • Tr is the average execution time of read commands
  • Tw is the average execution time of write commands.
  • T is the average execution time of commands being executed
  • Tr is set when a read command is being executed
  • Tw is set when a write command is being executed.
  • step S993: No If the predicted value is equal to or less than the threshold (step S993: No), the ID management unit 220 continues command registration (step S994). If the predicted value exceeds the threshold (step S993: Yes), the ID management unit 220 suspends command registration (step S995). The execution waiting command measurement unit 295 also notifies the host computer 100 that the estimated latency value exceeds the threshold (step S996). After step S994 or S996, the execution waiting command measurement unit 295 and the ID management unit 220 repeat step S991 and subsequent steps.
  • latency can be reduced by pausing command registration in step S995 to reduce the number of commands waiting to be executed.
  • the latency seen from the host computer 100 can be suppressed to a certain level or less. Also, if the specifications are such that a timeout occurs when the waiting time for a command on the host computer 100 side exceeds the upper limit, the timeout can be suppressed by adjusting the threshold.
  • the memory controller 200 notifies the host computer 100 when the predicted value of latency exceeds the threshold, it may also notify the host computer 100 when the number of commands waiting for execution exceeds a predetermined value. can. As a result, the host computer 100 can predict the latency before sending a command and determine whether or not to send the next command.
  • the memory controller 200 notifies the host computer 100 when the predicted value of latency exceeds the threshold. can be suppressed to
  • the processing procedure described in the above embodiment may be regarded as a method having a series of procedures, and a program for causing a computer to execute the series of procedures or a recording medium for storing the program You can catch it.
  • this recording medium for example, CD (Compact Disc), MD (MiniDisc), DVD (Digital Versatile Disc), memory card, Blu-ray disc (Blu-ray (registered trademark) Disc), etc. can be used.
  • the present technology can also have the following configuration.
  • a command queue a management unit that associates identification information of a command for accessing a nonvolatile memory with the command and a valid flag indicating whether or not the command is executable, and registers the command in the command queue; a first signal processing unit that performs first signal processing on data written by the command, and updates the valid flag corresponding to the command after completion of the first signal processing; and a controller that reads and executes an executable command indicated by the valid flag from the command queue based on the identification information.
  • the first signal processing includes processing for generating an error correction code from data.
  • controller according to (2) further comprising a second signal processing unit that performs second signal processing on the read data read from the nonvolatile memory.
  • the second signal processing includes processing for correcting an error in the data based on the error correction code.
  • Any one of (1) to (4) above further comprising an execution determination unit that determines for each of the registered commands whether the command is executable and the corresponding identification information is the oldest.
  • controller as described in (6) the non-volatile memory has a predetermined number of banks; The controller according to (5), wherein the execution determination unit determines whether the command is executable, the bank to be accessed is not busy, and the corresponding identification information is the oldest.
  • the management unit associates the identification information, the command, the valid flag, and an atomic flag indicating whether or not the next received command is to be executed successively, and registers them in the command queue;
  • the execution determination unit determines whether or not the command is executable and the next received command is to be executed continuously.
  • the controller according to (5) or (6), which determines whether the identification information is the oldest.
  • a second signal processing unit that performs second signal processing on the read data read from the nonvolatile memory;
  • the controller according to any one of (1) to (7) above, further comprising a background process generator that starts a predetermined background process.
  • the background processing includes a process in which the control unit executes a read command for reading read data from a predetermined address; second signal processing for the read data; first signal processing for generating write data from the data after the second signal processing;
  • the controller according to (8), further comprising a process in which the control unit executes a refresh command for writing the write data after the first signal processing to the address.
  • (10) further comprising an execution-waiting command measuring unit that measures the number of commands waiting for execution among the commands registered in the command queue;
  • the controller according to any one of (1) to (9), wherein the management section suspends the registration of the command based on the measurement result of the command measurement section.
  • the command measuring unit predicts the latency based on the number of commands, and notifies the host computer that the predicted value exceeds the threshold when the predicted value exceeds the threshold (10) Controller as described.
  • (13) a management procedure for registering in a command queue the identification information of a command for accessing a nonvolatile memory, the command, and a valid flag indicating whether or not the command is executable, in association with each other; a first signal processing procedure for performing a first signal processing on data written by the command, and updating the valid flag corresponding to the command after completion of the first signal processing; and a control procedure for reading and executing an executable command indicated by the valid flag from the command queue based on the identification information.
  • host computer 150 nonvolatile storage device 200 memory controller 210 host interface 220 ID management unit 230, 280 signal processing unit 231, 232 ECC generation processing unit 240 command queue 250 execution determination unit 260 NVM control unit 270 NVM interface 281, 282 error correction Processing unit 290 Background processing generation unit 295 Waiting command measurement unit 300 NVM

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

コマンドをキューに登録するコントローラにおいて、レイテンシを小さくする。 管理部は、不揮発性メモリにアクセスするためのコマンドの識別情報とコマンドとコマンドが実行可能か否かを示す有効フラグとを対応付けてコマンドキューに登録する。第1の信号処理部は、コマンドにより書き込まれるデータに対して第1の信号処理を行って第1の信号処理の完了後にコマンドに対応する有効フラグを更新する。制御部は、有効フラグが示す実行可能なコマンドを識別情報に基づいてコマンドキューから読み出して実行する。

Description

コントローラ、不揮発性記憶装置、および、制御方法
 本技術は、コントローラに関する。詳しくは、不揮発性メモリを制御するコントローラ、不揮発性記憶装置、および、制御方法に関する。
 近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ(NVM:Non-Volatile Memory)が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistance RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。
 不揮発性メモリにアクセスするためのコマンドは、一般にキューに登録され、FIFO(First In, First Out)方式で順に取り出される。例えば、コンフリクトや遅延が発生する可能性がある場合にシーケンスマトリックスの再構成を行い、その後にコマンドをキューに登録し、順に取り出して実行するメモリコントローラが提案されている(例えば、特許文献1参照。)。
特開2008-204487号公報
 上述の従来技術では、シーケンスマトリックスの再構成により、コンフリクトや遅延の回避を図っている。しかしながら、上述のメモリコントローラでは、実行順によっては、コマンド実行時のレイテンシが大きくなることがある。例えば、データを書き込む際に誤り訂正符号の生成処理などを行う場合、その処理の完了まで次のコマンドが実行できずに、レイテンシが増大するおそれがある。
 本技術はこのような状況に鑑みて生み出されたものであり、コマンドをキューに登録するコントローラにおいて、レイテンシを小さくすることを目的とする。
 本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、コマンドキューと、不揮発性メモリにアクセスするためのコマンドの識別情報と上記コマンドと上記コマンドが実行可能か否かを示す有効フラグとを対応付けて上記コマンドキューに登録する管理部と、上記コマンドにより書き込まれるデータに対して第1の信号処理を行って上記第1の信号処理の完了後に上記コマンドに対応する上記有効フラグを更新する第1の信号処理部と、上記有効フラグが示す実行可能なコマンドを上記識別情報に基づいて上記コマンドキューから読み出して実行する制御部とを具備するコントローラ、および、その制御方法である。これにより、レイテンシが小さくなるという作用をもたらす。
 また、この第1の側面において、上記第1の信号処理は、データから誤り訂正符号を生成する処理を含むものであってもよい。これにより、データが符号化されるという作用をもたらす。
 また、この第1の側面において、上記不揮発性メモリから読み出されたリードデータに対して第2の信号処理を行う第2の信号処理部をさらに具備してもよい。これにより、読出しの際に第2の信号処理が行われるという作用をもたらす。
 また、この第1の側面において、上記第2の信号処理は、上記誤り訂正符号に基づいて上記データの誤りを訂正する処理を含むものであってもよい。これにより、データの誤りが訂正されるという作用をもたらす。
 また、この第1の側面において、コマンドが実行可能であり、かつ、対応する上記識別情報が最も古いか否かを上記登録されたコマンドごとに判定する実行判定部をさらに具備してもよい。これにより、実行可能なコマンドが順に実行されるという作用をもたらす。
 また、この第1の側面において、上記不揮発性メモリは、所定数のバンクを備え、上記実行判定部は、コマンドが実行可能であり、かつ、アクセス先の上記バンクがビジーでなく、かつ、対応する上記識別情報が最も古いか否かを判定してもよい。これにより、実行可能なコマンドが順に実行されるという作用をもたらす。
 また、この第1の側面において、上記管理部は、上記識別情報と上記コマンドと上記有効フラグと、次に受信したコマンドを連続して実行するか否かを示すアトミックフラグとを対応付けて上記コマンドキューに登録し、上記実行判定部は、コマンドが実行可能であり、かつ、次に受信したコマンドを連続して実行するか否かを判定し、次に受信したコマンドを連続して実行しない場合には、対応する上記識別情報が最も古いか否かを判定してもよい。これにより、2つのコマンドが連続して実行されるという作用をもたらす。
 また、この第1の側面において、上記不揮発性メモリから読み出されたリードデータに対して第2の信号処理を行う第2の信号処理部と、所定のバックグラウンド処理を開始させるバックグラウンド処理生成部とをさらに具備してもよい。これにより、バックグラウンド処理が実行されるという作用をもたらす。
 また、この第1の側面において、上記バックグラウンド処理は、所定のアドレスからリードデータを読み出すためのリードコマンドを上記制御部が実行する処理と、上記リードデータに対する第2の信号処理と、上記第2の信号処理後のデータからライトデータを生成する第1の信号処理と、上記第1の信号処理後のライトデータを上記アドレスに書き込むためのリフレッシュコマンドを上記制御部が実行する処理とを含むものであってもよい。これにより、エラーが回復されるという作用をもたらす。
 また、この第1の側面において、上記コマンドキューに登録されたコマンドのうち実行待ちのコマンド数を計測する実行待ちコマンド計測部をさらに具備し、上記管理部は、上記コマンド計測部の計測結果に基づいて上記コマンドの登録を休止してもよい。これにより、レイテンシが削減されるという作用をもたらす。
 また、この第1の側面において、上記コマンド計測部は、上記コマンド数に基づいてレイテンシを予測し、予測値が所定の閾値を超える場合には上記予測値が上記閾値を超える旨をホストコンピュータに通知してもよい。これにより、ホストコンピュータから見たレイテンシが抑制されるという作用をもたらす。
 また、本技術の第2の側面は、不揮発性メモリと、コマンドキューと、上記不揮発性メモリにアクセスするためのコマンドの識別情報と上記コマンドと上記コマンドが実行可能か否かを示す有効フラグとを対応付けて上記コマンドキューに登録する管理部と、上記コマンドにより書き込まれるデータに対して第1の信号処理を行って上記第1の信号処理の完了後に上記コマンドに対応する上記有効フラグを更新する第1の信号処理部と、上記有効フラグが示す実行可能なコマンドを上記識別情報に基づいて上記コマンドキューから読み出して実行する制御部とを備えるコントローラとを具備する不揮発性記憶装置である。これにより、不揮発性記憶装置にアクセスするためのコマンドのレイテンシが小さくなるという作用をもたらす。
本技術の第1の実施の形態における情報処理システムの一構成例を示すブロック図である。 本技術の第1の実施の形態におけるコマンドキューの一構成例を示す図である。 本技術の第1の実施の形態におけるコマンド登録処理の一例を示すフローチャートである。 本技術の第1の実施の形態における実行判定処理の一例を示すフローチャートである。 本技術の第1の実施の形態におけるコマンド実行処理の一例を示すフローチャートである。 本技術の第1の実施の形態におけるNVMビジー完了処理の一例を示すフローチャートである。 本技術の第1の実施の形態における不揮発性記憶装置の動作の一例を示すタイミングチャートである。 本技術の第1の実施の形態における、データを符号化する際の情報処理システムの一構成例を示すブロック図である。 本技術の第1の実施の形態における書込み処理の一例を示すフローチャートである。 本技術の第1の実施の形態における読出し処理の一例を示すフローチャートである。 本技術の第1の実施の形態におけるメモリコントローラの動作の一例を示すタイミングチャートである。 第1の比較例におけるメモリコントローラの動作の一例を示すタイミングチャートである。 第2の比較例におけるメモリコントローラの動作の一例を示すタイミングチャートである。 本技術の第2の実施の形態における情報処理システムの一構成例を示すブロック図である。 本技術の第2の実施の形態における実行判定処理の一例を示すフローチャートである。 本技術の第2の実施の形態におけるメモリコントローラの動作の一例を示すタイミングチャートである。 本技術の第3の実施の形態における情報処理システムの一構成例を示すブロック図である。 本技術の第3の実施の形態におけるコマンドキューの一構成例を示す図である。 本技術の第3の実施の形態におけるコマンド登録処理の一例を示すフローチャートである。 本技術の第3の実施の形態における実行判定処理の一例を示すフローチャートである。 本技術の第3の実施の形態における不揮発性記憶装置の動作の一例を示すタイミングチャートである。 本技術の第3の実施の形態における書込み処理の一例を示すフローチャートである。 本技術の第4の実施の形態における情報処理システムの一構成例を示すブロック図である。 本技術の第4の実施の形態におけるコマンドキューの一構成例を示す図である。 本技術の第4の実施の形態におけるバックグラウンド処理の一例を示すフローチャートである。 本技術の第4の実施の形態におけるBG(Back Ground)処理コマンド登録処理の一例を示すフローチャートである。 本技術の第5の実施の形態における不揮発性記憶装置の一構成例を示すブロック図である。 本技術の第5の実施の形態における登録休止判定処理の一例を示すフローチャートである。
 以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
 1.第1の実施の形態(有効フラグをコマンドキューに登録する例)
 2.第2の実施の形態(有効フラグをコマンドキューに登録し、バンクビジーか否かを判断する例)
 3.第3の実施の形態(アトミックフラグ、有効フラグをコマンドキューに登録する例)
 4.第4の実施の形態(有効フラグをコマンドキューに登録し、バックグラウンド処理を行う例)
 5.第5の実施の形態(有効フラグをコマンドキューに登録し、実行待ちコマンド数を測定する例)
 <1.第1の実施の形態>
 [情報処理システムの構成例]
 図1は、本技術の第1の実施の形態における情報処理システムの一構成例を示すブロック図である。この情報処理システムは、ホストコンピュータ100および不揮発性記憶装置150を備える。不揮発性記憶装置150は、メモリコントローラ200およびNVM300を備える。
 ホストコンピュータ100は、不揮発性記憶装置150を制御するものである。このホストコンピュータ100は、コマンドを発行して、そのコマンド、アドレスやデータを不揮発性記憶装置150に信号線109を介して供給する。また、ホストコンピュータ100は、不揮発性記憶装置150からデータを受け取る。ここで、コマンドは、NVM300にアクセスするためのものであり、例えば、データの書込みを指示するライトコマンドや、データの読出しを指示するリードコマンドを含む。ホストコンピュータ100からのコマンドは、ホストコマンドとも呼ばれる。ホストコンピュータ100からのアドレスとして、論理アドレスなどが用いられる。
 メモリコントローラ200は、NVM300を制御するものである。このメモリコントローラ200は、ホストインターフェース210、ID管理部220、信号処理部230、コマンドキュー240、実行判定部250、NVM制御部260、NVMインターフェース270および信号処理部280を備える。なお、同図においては、データを保持するデータバッファや、コマンドを保持するコマンドバッファなどは、省略されている。
 なお、メモリコントローラ200は、特許請求の範囲に記載のコントローラの一例である。
 ホストインターフェース210は、ホストコンピュータ100と、ID管理部220および信号処理部280との間で、コマンド、アドレスやデータをやり取りするものである。ホストインターフェース210は、ホストコンピュータ100からのコマンド、アドレスやデータをID管理部220に供給する。また、ホストインターフェース210は、信号処理部280からのデータをホストコンピュータ100に信号線109を介して供給する。ホストインターフェース210として、例えば、SATA(Serial Advanced Technology Attachment)、PCI Expressなどを利用することができる。
 ID管理部220は、コマンドの受信順や発行順を示す識別情報(ID:IDentification data)を発行し、コマンドや有効フラグとともにコマンドキュー240に登録するものである。ここで、有効フラグは、コマンドが実行可能か否かを示すフラグである。
 また、ID管理部220は、ホストコンピュータ100からのコマンドをデコードし、ライトコマンドである場合に信号処理部230を制御して所定の信号処理を実行させる。
 信号処理部230は、ライトコマンドにより書き込まれるデータに対して所定の信号処理を実行するものである。この信号処理は、例えば、データからECC(Error-Correcting Code)を生成する処理を含む。このECCは、データと、そのデータの誤りを訂正するためのパリティとを含む。また、ECCは、ライトデータとしてデータバッファ(不図示)に保持される。なお、ID管理部220は、特許請求の範囲に記載の管理部の一例である。
 また、信号処理部230は、データに対する信号処理の完了後に、コマンドキュー240内のライトコマンドに対応する有効フラグを更新する。なお、信号処理部280は、特許請求の範囲に記載の第1の信号処理部の一例である。
 実行判定部250は、コマンドキュー240を参照して、コマンドが実行可能であり、かつ、対応するIDが最も古いか否かを、登録されたコマンドごとに判定するものである。この実行判定部250は、判定結果をNVM制御部260に供給する。
 NVM制御部260は、実行判定部250の判定結果に基づいて、コマンドキュー240からコマンドを読み出して実行するものである。
 ライトコマンド(ホストコマンド)の実行の際にNVM制御部260は、NVM300に書込みを指示するコマンドを発行し、対応するアドレスおよびライトデータとともにNVMインターフェース270に供給する。NVM制御部260が発行するコマンドは、メモリコマンドとも呼ばれる。また、メモリコントローラ200からのアドレスとして物理アドレスが用いられる。
 また、リードコマンド(ホストコマンド)の実行の際にNVM制御部260は、NVM300に読出しを指示するコマンド(メモリコマンド)を発行し、対応するアドレスとともにNVMインターフェース270に供給する。なお、NVM制御部260は、特許請求の範囲に記載の制御部の一例である。
 NVMインターフェース270は、NVM制御部260および信号処理部280と、NVM300との間で、コマンド、アドレスやデータをやり取りするものである。このNVMインターフェース270は、信号処理部280からのコマンド、アドレスやライトデータをNVM300に信号線209を介して供給する。また、NVMインターフェース270は、NVM300からのリードデータを信号処理部280に供給する。
 信号処理部280は、NVM300から読み出されたリードデータに対して所定の信号処理を行うものである。この信号処理は、例えば、ECCを用いて、データの誤りを訂正する処理を含む。信号処理部280は、処理後のデータをホストインターフェース210に供給する。
 NVM300は、メモリコントローラ200の制御に従って、ライトデータの書込みや、リードデータの読出しを行うものである。
 [コマンドキューの構成例]
 図2は、本技術の第1の実施の形態におけるコマンドキュー240の一構成例を示す図である。このコマンドキュー240には、「0」乃至「255」などのエントリ番号が割り当てられた複数のエントリが設けられる。エントリのそれぞれには、「ID」、「コマンド」、「ページアドレス」、「データバッファアドレス」、「有効フラグ」および「実行フラグ」の欄が設けられる。
 「ID」の欄には、発行されたIDが保持される。例えば、受信順が古いほど、小さなIDが発行される。「コマンド」の欄には、ライトコマンドやリードコマンドなどのコマンドが保持される。同図の「ライト」は、ライトコマンドを示し、「リード」は、リードコマンドを示す。「ページアドレス」の欄には、アクセス先のNVM300のアドレスが保持される。「データバッファアドレス」の欄には、ライトデータやリードデータの格納先のデータバッファ内のアドレスが保持される。
 「有効フラグ」の欄には、「0」または「1」の有効フラグが保持される。例えば、コマンドが実行可能である場合に「1」が保持され、実行可能でない場合に「0」が保持される。「実行フラグ」の欄には、「0」または「1」の実行フラグが保持される。例えば、NVM制御部260によりコマンドの実行が開始された場合に「1」が保持され、開始前の場合に「0」が保持される。
 以下、コマンドキュー240に「登録する」とは、いずれかのエントリに、有効な各種の情報(IDなど)を保持させることを意味する。また、登録を「削除する」とは、いずれかのエントリに保持された各種の情報を無効にすることを意味する。
 [メモリコントローラの動作例]
 図3は、本技術の第1の実施の形態におけるコマンド登録処理の一例を示すフローチャートである。このコマンド登録処理は、ID管理部220および信号処理部230により、ホストコンピュータ100からのコマンドごとに実行される。
 ID管理部220は、コマンドキュー240に空きがあるか否かを判断する(ステップS901)。空きがない場合(ステップS901:No)、ID管理部220は、待機し(ステップS902)、ステップS901を繰り返す。待機中に受信されたコマンドは、コマンドバッファに保持される。
 空きがある場合(ステップS901:Yes)、ID管理部220は、受信したコマンドについて、その受信順を示すIDを発行し(ステップS903)、コマンドキュー240に登録する(ステップS904)。
 また、ID管理部220は、登録したコマンドをデコードし、そのコマンドがライトコマンドであるか否かを判断する(ステップS905)。ライトコマンドである場合(ステップS905:Yes)、信号処理部230は、ライトコマンドに対応するデータに対して信号処理を実行する(ステップS906)。なお、登録の際に、ライトコマンドに対応する有効フラグには「0」が設定されるものとする。
 リードコマンドである場合(ステップS905:No)、ID管理部220は、そのリードコマンドに対応する有効フラグに「1」を設定する(ステップS907)。また、ステップS906の後に信号処理部230は、ライトコマンドに対応する有効フラグを「1」に更新する(ステップS907)。ステップS907の後にID管理部220および信号処理部230は、コマンド登録処理を終了する。
 図4は、本技術の第1の実施の形態における実行判定処理の一例を示すフローチャートである。この実行判定処理は、実行判定部250により一定の周期で繰り返し実行される。同図において、「Start」には、例えば、コマンドキュー240において、最も小さいエントリ番号が設定され、「End」には、最も大きなエントリ番号が設定される。
 実行判定部250は、変数「Entry」に「Start」の値を設定し、変数「Return」にヌル値を設定する(ステップS911)。そして、実行判定部250は、「Entry.Valid」が「1」であり、かつ、「Entry.Exec」が「0」であるか否かを判断する(ステップS912)。ここで、「Entry.Valid」は、「Entry」の示すエントリ内の有効フラグの値を示す。「Entry.Exec」は、「Entry」の示すエントリ内の実行フラグの値を示す。
 「Entry.Valid」(有効フラグ)が「1」であり、かつ、「Entry.Exec」(実行フラグ)が「0」である場合(ステップS912:Yes)、実行判定部250は、変数「Return」がヌル値であるか否かを判断する(ステップS913)。
 変数「Return」がヌル値でない場合(ステップS913:No)、実行判定部250は、「Entry.ID」が「Return.ID」より小さいか否かを判断する(ステップS914)。ここで、「Entry.ID」は、「Entry」の示すエントリ内のIDを示す。「Return.ID」は、「Return」の示すエントリ内のIDを示す。
 「Return」がヌル値の場合(ステップS913:Yes)、または、「Entry.ID」が「Return.ID」より小さい場合(ステップS914:Yes)、実行判定部250は、「Return」に「Entry」を設定する(ステップS915)。
 「Entry.Valid」が「0」、または、「Entry.Exec」が「1」である場合(ステップS912:No)、実行判定部250は、「Entry」の値をインクリメントする(ステップS916)。
 「Entry.ID」が「Return.ID」以上の場合(ステップS914:No)、または、ステップS915の後にも実行判定部250は、ステップS916を実行する。そして、実行判定部250は、「Entry」が「End」に達したか否かを判断する(ステップS917)。
 「Entry」が「End」に達する前の場合(ステップS917:No)、実行判定部250は、ステップS912以降を繰り返す。「Entry」が「End」に達した場合(ステップS917:Yes)、実行判定部250は、変数「EXEC」に「Return」を設定し(ステップS918)、実行判定処理を終了する。
 同図に例示した処理により、登録されたコマンドごとに、そのコマンドが実行可能であり、かつ、対応するID(受信順や発行順)が最も古いか否かが判定される。「EXEC」は、実行可能であり、かつ、対応するIDが最も古いコマンドが保持されたエントリを示す。この「EXEC」の値は、実行判定結果としてNVM制御部260へ出力される。
 図5は、本技術の第1の実施の形態におけるコマンド実行処理の一例を示すフローチャートである。このコマンド実行処理は、実行判定処理が実行されるたびに、NVM制御部260により実行される。
 NVM制御部260は、実行判定結果(すなわち、「EXEC」)を取得し(ステップS921)、NVMインターフェース270に空きがあるか否かを判断する(ステップS922)。NVMインターフェース270に空きがない場合(ステップS922:No)、NVM制御部260は、待機し(ステップS923)、ステップS922を繰り返す。
 NVMインターフェース270に空きがある場合(ステップS922:Yes)、NVM制御部260は、「EXEC」の示すエントリ内のコマンドおよびページアドレスを読み出し、NVM300に送信する(ステップS924)。
 そして、NVM制御部260は、送信したコマンドに対応するライトデータがあるか否かを判断する(ステップS925)。対応するライトデータがある場合(ステップS925:Yes)、NVM制御部260は、そのライトデータをNVM300に送信する(ステップS926)。
 対応するライトデータがない場合(ステップS925:No)、または、ステップS926の後にNVM制御部260は、「EXEC」の示すエントリ内の実行フラグを「1」に更新し(ステップS927)、コマンド実行処理を終了する。
 図6は、本技術の第1の実施の形態におけるNVMビジー完了処理の一例を示すフローチャートである。このNVMビジー完了処理は、NVM制御部260および信号処理部280により、電源投入後に実行される。
 NVM制御部260は、NVMインターフェース270を監視し(ステップS931)、NVMビジーが完了したか否かを判断する(ステップS932)。ここで、NVMビジーは、リードコマンド送信後のリードビジー、あるいは、ライトコマンド送信後のライトビジーを示す。NVMビジーが完了していない場合(ステップS932:No)、NVM制御部260は、ステップS931以降を繰り返す。
 NVMビジーが完了した場合(ステップS932:Yes)、NVM制御部260は、完了したNVMビジーがリードビジーであるか否かを判断する(ステップS933)。
 リードビジーである場合(ステップS933:Yes)、信号処理部280は、リードデータに対する信号処理を行う(ステップS934)。ライトビジーである場合(ステップS933:No)、NVM制御部260は、ライトエラーの有無を確認する(ステップS935)。ライトエラーが生じた場合には、再度の書込みや、ホストコンピュータ100への通知が行われる。
 ステップS934の後に、信号処理部280は、対応するリードコマンドの登録を削除する(ステップS936)。また、ステップS935の後に、NVM制御部260は、対応するライトコマンドの登録を削除する(ステップS936)。ステップS936の後に、NVM制御部260は、ステップS931以降を繰り返す。
 図7は、本技術の第1の実施の形態における不揮発性記憶装置150の動作の一例を示すタイミングチャートである。同図におけるaは、リードコマンドを実行する際の動作を示し、同図におけるbは、ライトコマンドを実行する際の動作を示す。
 同図におけるaに例示するように、メモリコントローラ200は、タイミングT0乃至T1の期間内に、リードコマンドと、読出し先のページアドレスとをNVM300に送信したものとする。この場合に、リードビジーの期間が経過したタイミングT2において、NVM300は、メモリコントローラ200へのリードデータの送信を開始する。
 また、同図におけるbに例示するように、メモリコントローラ200は、タイミングT0乃至T1の期間内に、ライトコマンドと、書込み先のページアドレスとを送信し、タイミングT1乃至T2の期間内にライトデータを送信したものとする。この場合に、ライトビジーの期間が経過したタイミングT3において、NVM300は、メモリコントローラ200へのAckまたはNckの送信を開始する。Ackは、ライトエラーの無い場合の肯定応答を示し、Nckは、ライトエラーの生じた場合の否定応答を示す。
 図8は、本技術の第1の実施の形態における、データを符号化する際の情報処理システムの一構成例を示すブロック図である。例えば、信号処理部230は、ECC生成処理部231を備え、信号処理部280は、誤り訂正処理部281を備える。
 ECC生成処理部231は、書込み対象のデータからECCを生成するものである。誤り訂正処理部281は、ECCを用いてデータの誤りを訂正するものである。
 図9は、本技術の第1の実施の形態における書込み処理の一例を示すフローチャートである。この書込み処理は、ホストコンピュータ100からのライトコマンドを受信した際に、不揮発性記憶装置150により実行される。
 メモリコントローラ200内のECC生成処理部231は、書込み対象のデータからECCを生成する(ステップS941)。メモリコントローラ200は、ライトコマンドを実行し(ステップS942)、ライトエラーが生じたか否かを判断する(ステップS943)。
 ライトエラーが生じていない場合(ステップS943:No)、メモリコントローラ200は、ホストコンピュータ100にパスを通知する(ステップS944)。ライトエラーが生じた場合(ステップS943:Yes)、メモリコントローラ200は、ホストコンピュータ100にフェイルを通知する(ステップS945)。ステップS944またはS945の後に不揮発性記憶装置150は、書込み処理を終了する。
 図10は、本技術の第1の実施の形態における読出し処理の一例を示すフローチャートである。この読出し処理は、ホストコンピュータ100からのリードコマンドを受信した際に、不揮発性記憶装置150により実行される。
 メモリコントローラ200は、リードコマンドを実行する(ステップS951)。メモリコントローラ200内の誤り訂正処理部281は、リードデータの誤り訂正を行い(ステップS952)、誤りを訂正可能か否かを判断する(ステップS953)。誤りを訂正可能である場合(ステップS953:Yes)、誤り訂正処理部281は、その誤りを訂正する(ステップS954)。誤りを訂正可能でない場合(ステップS953:No)、誤り訂正処理部281は、リードエラーをホストコンピュータ100に通知する(ステップS955)。ステップS954またはS955の後に、不揮発性記憶装置150は、読出し処理を終了する。
 図11は、本技術の第1の実施の形態におけるメモリコントローラ200の動作の一例を示すタイミングチャートである。タイミングT0以降にリードコマンド、ライトコマンド、リードコマンドおよびリードコマンドの順でホストインターフェース210がコマンドを受信したものとする。
 ID管理部220は、受信順に「0」、「1」、「2」、「3」のIDを発行し、コマンドのそれぞれを順にコマンドキュー240に登録する。同図における「リード0」、「ライト1」、「リード2」、「リード3」は、IDが「0」、「1」、「2」、「3」のリードコマンドまたはライトコマンドを示す。また、コマンドキュー240内の矩形は、コマンドの登録期間を示す。登録の際にリードコマンドのそれぞれの有効フラグが「1」に設定され、ライトコマンドの有効フラグが「0」に設定される。
 信号処理部230は、タイミングT2においてECCを生成する処理を開始する。この処理の完了時にライトコマンドの有効フラグが「1」に更新される。
 NVM制御部260は、タイミングT2にID「0」のリードコマンドを実行し、リードビジーの期間が経過したタイミングT4に信号処理部280が、リードデータの誤り訂正を開始する。ID「0」のリードコマンドはタイミングT2でコマンドキュー240から削除される。
 タイミングT5では、ライトコマンドがコマンドキュー240に登録されているが、この時点ではECCが生成されておらず、その有効フラグが「0」のままである。すなわち、ライトコマンドを実行することができない。このため、NVM制御部260は、有効フラグが「1」で、かつ、最も古いID「2」のリードコマンドを実行する。リードビジーの期間が経過したタイミングT6に信号処理部280が、リードデータの誤り訂正を開始する。ID「2」のリードコマンドはタイミングT5でコマンドキュー240から削除される。
 ID「2」のリードビジーが完了したタイミングT6において、ECCの生成処理が完了し、有効フラグが「1」に更新されている。すなわち、ライトコマンドは、実行可能である。このため、NVM制御部260は、そのライトコマンドを実行する。ライトコマンドはタイミングT6でコマンドキュー240から削除される。
 ライトビジーの期間が経過したタイミングT7でNVM制御部260は、残りのID「3」のリードコマンドを実行する。リードビジーの期間が経過したタイミングT8に信号処理部280が、リードデータの誤り訂正を開始する。ID「3」のリードコマンドはタイミングT7でコマンドキュー240から削除される。
 同図において、ライトコマンドのレイテンシは、タイミングT1からT7までの期間であり、ID「2」のリードコマンドのレイテンシは、タイミングT2からタイミングT5直後の誤り訂正の完了時までの期間である。
 ここで、有効フラグを用いず、IDの順(すなわち、受信順)にコマンドを実行する構成を第1の比較例として想定する。
 図12は、第1の比較例におけるメモリコントローラ200の動作の一例を示すタイミングチャートである。コマンドの受信順は、図11と同様である。
 NVM制御部260は、タイミングT2にID「0」のリードコマンドを実行する。タイミングT2からT5の時点では、ECCの生成処理が完了しておらず、次のライトコマンドを実行することができない。このため、NVM制御部260は、その処理が完了するタイミングT6まで待ってからライトコマンドを実行する。
 ライトビジーの期間が経過したタイミングT7でNVM制御部260は、次のID「2」のリードコマンドを実行する。そして、リードビジーの期間が経過したタイミングT8でNVM制御部260は、残りのID「4」のリードコマンドを実行する。
 次に、有効フラグを用いず、原則としてIDの順(すなわち、受信順)にコマンドを実行するものの、リードコマンドを優先して実行する構成を第2の比較例として想定する。
 図13は、第2の比較例におけるメモリコントローラ200の動作の一例を示すタイミングチャートである。コマンドの受信順は、図11と同様である。
 NVM制御部260は、タイミングT5にID「2」のリードコマンドを優先して実行する。そのリードビジーの期間が完了したタイミングT6では、ECCの生成処理が完了してライトコマンドも実行可能であるが、第2の比較例では、前述のようにリードコマンドが優先される。このため、NVM制御部260は、ID「3」のリードコマンドを優先して実行する。そのリードビジーの期間が経過したタイミングT7でNVM制御部260は、残りのライトコマンドを実行する。
 図11と図12とを比較すると、第1の比較例では、ECCの生成処理の完了を待ってからID「2」、「3」のリードコマンドを実行するため、これらのリードコマンドのレイテンシが大きくなってしまう。
 また、図11と図13とを比較すると、第2の比較例では、ECCの生成処理の完了後も、残りのリードビジーの終了を待ってからライトコマンドを実行するため、ライトコマンドのレイテンシが大きくなってしまう。
 図11に例示したように実行可能なコマンドをIDに基づいて実行することにより、第1の比較例よりもリードコマンドのレイテンシを小さくし、第2の比較例よりもライトコマンドのレイテンシを小さくすることができる。特に、信号処理部230の処理内容が異なるコマンドが混在したり、変化したりする場合に、効果を発揮しやすい。
 このように、本技術の第1の実施の形態によれば、メモリコントローラ200は、実行フラグおよびIDと対応付けてコマンドをキューに登録し、実行可能なコマンドをIDに基づいて実行するため、コマンドのレイテンシを小さくすることができる。
 <2.第2の実施の形態>
 上述の第1の実施の形態では、実行判定部250が、ID、有効フラグおよび実行フラグに基づいて判定を行っていたが、NVM300内に複数のバンクがある場合、アクセス先のバンクがビジーか否かを把握する必要がある。この第2の実施の形態の実行判定部250は、ID、有効フラグおよび実行フラグと、バンクの状態とに基づいて判定する点において第1の実施の形態と異なる。
 図14は、本技術の第2の実施の形態における情報処理システムの一構成例を示すブロック図である。第2の実施の形態の信号処理部230は、ECC生成処理部231およびECC生成処理部232を備える。第2の実施の形態の信号処理部280は、誤り訂正処理部281および誤り訂正処理部282を備える。また、NVM300は、バンク0乃至15などの複数のバンクを備える。
 ECC生成処理部231およびECC生成処理部232は、並列して動作し、書込み先のバンクの異なる2つのデータについて個別にECCの生成処理を行うことができる。誤り訂正処理部281および誤り訂正処理部282も並列して動作し、読出し先のバンクの異なる2つのリードデータについて個別に誤り訂正を行うことができる。なお、ECC生成処理部を3つ以上設けることもできる。また、誤り訂正処理部を3つ以上設けることもできる。
 図15は、本技術の第2の実施の形態における実行判定処理の一例を示すフローチャートである。この第2の実施の形態の実行判定処理は、ステップS961をさらに実行する点において第1の実施の形態と異なる。
 「Entry.Valid」が「1」であり、かつ、「Entry.Exec」が「0」である場合(ステップS912:Yes)、実行判定部250は、「Entry」に対応するアクセス先のバンクがビジーであるか否かを判断する(ステップS961)。
 バンクがビジーでない場合(ステップS961:No)、実行判定部250は、ステップS913以降を実行し、バンクがビジーである場合(ステップS961:Yes)、実行判定部250は、ステップS916以降を実行する。
 同図に例示したように、コマンドが実行可能であり、かつ、アクセス先のバンクがビジーでなく、かつ、対応するIDが最も古いか否かを実行判定部250が判断する。これにより、バンクが複数の情報処理システムにおいてレイテンシを小さくすることができる。
 図16は、本技術の第2の実施の形態におけるメモリコントローラ200の動作の一例を示すタイミングチャートである。タイミングT0以降にライトコマンド、リードコマンド、リードコマンド、ライトコマンドおよびリードコマンドの順でホストインターフェース210がコマンドを受信したものとする。
 ID管理部220は、受信順に「0」、「1」、「2」、「3」、「4」のIDを発行し、コマンドのそれぞれを順にコマンドキュー240に登録する。また、ID「0」、「1」および「4」のコマンドのアクセス先は「バンク0」であり、残りのコマンドのアクセス先は「バンク1」であるものとする。
 タイミングT1以降においてECC生成処理部231は、ID「0」に対応するデータからECCを生成し、タイミングT4以降においてECC生成処理部232は、ID「3」に対応するデータからECCを生成する。
 タイミングT3の時点では、ECCの生成処理が完了しておらず、ID「0」に対応するライトコマンドを実行することができない。このため、NVM制御部260は、次のID「1」のリードコマンドを実行する。
 また、タイミングT4の時点では、ECCの生成処理が完了しておらず、ID「3」に対応するライトコマンドを実行することができない。このため、NVM制御部260は、次のID「2」のリードコマンドを実行する。ID「1」についてリードビジー中であるが、ID「2」のリードコマンドは、アクセス先のバンクが異なるため、並列して実行することができる。
 タイミングT6において、ECCの生成処理が完了しているため、NVM制御部260はID「0」のライトコマンドを実行する。ID「2」についてリードビジー中であるが、ID「0」のライトコマンドは、アクセス先のバンクが異なるため、並列して実行することができる。
 そして、タイミングT8において、ECCの生成処理が完了しているため、NVM制御部260はID「3」のライトコマンドを実行する。ID「0」についてライトビジー中であるが、ID「3」のライトコマンドは、アクセス先のバンクが異なるため、並列して実行することができる。また、タイミングT9においてNVM制御部260は、次のID「4」に対応するリードコマンドを実行する。
 このように、本技術の第2の実施の形態によれば、アクセス先のバンクがビジーであるか否かを実行判定部250がさらに判断するため、バンクが複数の情報処理システムにおいてレイテンシを小さくすることができる。
 <3.第3の実施の形態>
 上述の第1の実施の形態では、ライトコマンドやリードコマンドをメモリコントローラ200がNVM300に送信して実行させていたが、この際に2つのコマンドを連続して実行させることもできる。この第3の実施の形態のメモリコントローラ200は、2つのコマンドを連続して実行させるか否かをアトミックフラグにより指定する点において第1の実施の形態と異なる。
 図17は、本技術の第3の実施の形態における情報処理システムの一構成例を示すブロック図である。この第3の実施の形態の情報処理システムにおいて、信号処理部230には、マスクデータが入力される。このマスクデータは、NVM300がマスクすべきビットを示す。ここで、「マスクする」とは、マスクデータの示すビットを書込み対象から外すことを意味する。
 例えば、情報処理システムは、ライトエラーやリードエラーが生じた際に、そのエラーの生じたビットを不良ビットとして、その不良ビットの位置を保持しておく。そして、情報処理システム(例えば、メモリコントローラ200やNVM300)は、その不良ビットをマスクするためのマスクデータを生成する。メモリコントローラ200は、不良ビットのあるアドレスにライトデータを書き込む際に、そのアドレスに対応するマスクデータと、ライトデータとを連続してNVM300に送信する。そして、NVM300は、マスクデータの示す不良ビットを書込み対象から外して(すなわち、マスクして)、ライトデータを書き込む。
 図18は、本技術の第3の実施の形態におけるコマンドキュー240の一構成例を示す図である。この第3の実施の形態のコマンドキュー240は、アトミックフラグがさらに保持される点において第1の実施の形態と異なる。このアトミックフラグは、次のIDのコマンドをNVM300に連続して実行させるか否かを示す。例えば、次のIDのコマンドを連続して実行させる場合にアトミックフラグに「1」が設定され、連続して実行させない場合に「0」が設定される。
 例えば、第3の実施の形態のホストコンピュータ100は、不良ビットのマスクが必要な場合にマスクコマンドをメモリコントローラ200に送信する。メモリコントローラ200は、そのマスクコマンドを、「1」のアトミックフラグとともにコマンドキュー240に登録する。
 ページアドレス「10」にマスクするビットがある場合、ホストコンピュータ100は、そのアドレスを指定するマスクコマンドおよびライトコマンドを連続して送信する。メモリコントローラ200は、ID「1」などを発行し、マスクコマンドをコマンドキュー240に登録してアトミックフラグを「1」にする。そして、メモリコントローラ200は、次のID「2」を発行し、「0」のアトミックフラグとともにライトコマンドをコマンドキュー240に登録する。
 図19は、本技術の第3の実施の形態におけるコマンド登録処理の一例を示すフローチャートである。この第3の実施の形態のコマンド登録処理は、ステップS962乃至S964をさらに実行する点において第1の実施の形態と異なる。
 登録したコマンドがライトコマンドでない場合(ステップS905:No)、信号処理部230は、そのコマンドがマスクコマンドであるか否かを判断する(ステップS962)。マスクコマンドである場合(ステップS962:Yes)、信号処理部230は、そのコマンドに対応するアトミックフラグを「1」に更新する(ステップS963)。そして、次のIDのライトコマンドに対応するデータに対して信号処理を実行する(ステップS964)。
 マスクコマンドでない場合(ステップS962:No)、または、ステップS964の後に、信号処理部230は、ステップS907を実行する。
 図20は、本技術の第3の実施の形態における実行判定処理の一例を示すフローチャートである。この第3の実施の形態の実行判定処理は、ステップS965およびS966をさらに実行する点において第1の実施の形態と異なる。
 「Entry.Valid」が「1」であり、かつ、「Entry.Exec」が「0」である場合(ステップS912:Yes)、実行判定部250は、「Entry.Atomic」が「1」であるか否かを判断する(ステップS965)。ここで、「Entry.Atomic」は、「Entry」の示すエントリ内のアトミックフラグの値を示す。
 Entry.Atomic」が「0」である場合(ステップS965:No)、実行判定部250は、ステップS913以降を実行する。Entry.Atomic」が「1」である場合(ステップS965:Yes)、実行判定部250は、「(Entry+1).Exec」が「0」であるか否かを判断する(ステップS966)。
 「(Entry+1).Exec」が「0」である場合(ステップS966:Yes)、実行判定部250は、ステップS915を実行する。「(Entry+1).Exec」が「1」である場合(ステップS966:No)、実行判定部250は、ステップS916以降を実行する。
 図21は、本技術の第3の実施の形態における不揮発性記憶装置150の動作の一例を示すタイミングチャートである。メモリコントローラ200は、タイミングT0乃至T1の期間内に、マスクコマンドおよびページアドレスを送信し、タイミングT1乃至T2の期間内にライトコマンドおよびページアドレスと、マスクデータおよびライトデータとを送信したものとする。この場合に、ライトビジーの期間が経過したタイミングT3において、NVM300は、メモリコントローラ200へのAckまたはNckの送信を開始する。
 図20および図21に例示したように、アトミックフラグがコマンドキュー240に登録されるため、NVM制御部260は、そのフラグを参照してマスクコマンド、ライトコマンドを連続して実行することができる。
 図22は、本技術の第3の実施の形態における書込み処理の一例を示すフローチャートである。この第3の実施の形態の書込み処理は、ステップS946およびS947をさらに実行する点において第1の実施の形態と異なる。
 メモリコントローラ200は、不良ビットが生じた際に、マスクデータを生成する(ステップS946)。また、ECC生成処理部231は、ECCを生成する(ステップS941)。そして、メモリコントローラ200は、マスクデータを生成した際に、マスクコマンドを実行し(ステップS947)、ステップS942以降を実行する。
 なお、第3の実施の形態に第2の実施の形態を適用することもできる。
 このように、本技術の第3の実施の形態によれば、ID管理部220がアトミックフラグをコマンドキュー240に登録するため、NVM制御部260は、マスクコマンド、ライトコマンドを連続して実行することができる。
 <4.第4の実施の形態>
 上述の第1の実施の形態では、メモリコントローラ200は、ホストコンピュータ100とNVM300との間でデータをやり取りしていたが、リフレッシュなどの処理をバックグラウンドで実行することもできる。この第4の実施の形態のメモリコントローラ200は、バッググラウンドで処理を行う点において第1の実施の形態と異なる。
 図23は、本技術の第4の実施の形態における情報処理システムの一構成例を示すブロック図である。この第4の実施の形態における情報処理システムは、メモリコントローラ200が、バックグラウンド処理生成部290をさらに備える点において第1の実施の形態と異なる。
 バックグラウンド処理生成部290は、リフレッシュ処理などをバックグラウンド処理として実行させるものである。このリフレッシュ処理は、あるアドレスでエラーが生じた際に、そのアドレスからデータを読み出して書き戻す処理である。
 図24は、本技術の第4の実施の形態におけるコマンドキュー240の一構成例を示す図である。この第4の実施の形態のコマンドキュー240は、アトミックフラグがさらに保持される点において第1の実施の形態と異なる。
 例えば、第3の実施の形態のバックグラウンド処理生成部290は、ページアドレス「10」でエラーが生じた際に、そのアドレスを指定するリードコマンドおよびリフレッシュコマンドを連続して発行する。このリフレッシュコマンドは、直前のリードコマンドにより読み出されたデータの書き戻しを指示するコマンドである。
 メモリコントローラ200は、ID「1」などを発行し、リードコマンドをコマンドキュー240に登録してアトミックフラグを「1」にする。そして、メモリコントローラ200は、次のID「2」を発行し、「0」のアトミックフラグとともにリフレッシュコマンドをコマンドキュー240に登録する。
 図25は、本技術の第4の実施の形態におけるバックグラウンド処理の一例を示すフローチャートである。このバックグラウンド処理は、NVM300でエラーが生じた際に不揮発性記憶装置150により実行される。
 メモリコントローラ200内のNVM制御部260は、リフレッシュ対象のアドレスについてリードコマンドを実行する(ステップS971)。メモリコントローラ200内の誤り訂正処理部281は、リードデータの誤り訂正を行い(ステップS972)、誤りを訂正可能か否かを判断する(ステップS973)。誤りを訂正可能である場合(ステップS973:Yes)、誤り訂正処理部281は、その誤りを訂正する(ステップS974)。誤りを訂正可能でない場合(ステップS973:No)、誤り訂正処理部281は、リードエラーを検出する(ステップS975)。
 そして、メモリコントローラ200内のECC生成処理部231は、誤り訂正後のデータからECCを生成する(ステップS976)。NVM制御部260は、メモリコントローラ200からのリフレッシュコマンドを実行し(ステップS977)、ライトエラーが生じたか否かを判断する(ステップS978)。
 ライトエラーが生じていない場合(ステップS978:No)、NVM制御部260は、パスと判定する(ステップS979)。ライトエラーが生じた場合(ステップS978:Yes)、NVM制御部260は、フェイルと判定する(ステップS980)。ステップS979またはS980の後に不揮発性記憶装置150は、バックグラウンド処理を終了する。
 同図に例示するように、メモリコントローラ200がリフレッシュ処理を行うことにより、エラーを回復することができる。
 図26は、本技術の第4の実施の形態におけるBG処理コマンド登録処理の一例を示すフローチャートである。このBG処理コマンド登録処理は、バックグラウンド処理生成部290によりリードコマンドおよびリフレッシュコマンドが発行された際に、それぞれのコマンドについて実行される。
 ID管理部220は、コマンドキュー240に空きがあるか否かを判断する(ステップS982)。空きがない場合(ステップS982:No)、ID管理部220は、待機し(ステップS983)、ステップS982を繰り返す。
 空きがある場合(ステップS982:Yes)、ID管理部220は、発行されたコマンドについてIDを発行し(ステップS984)、コマンドキュー240に登録する(ステップS985)。
 また、ID管理部220は、登録したコマンドをデコードし、そのコマンドがリフレッシュコマンドであるか否かを判断する(ステップS986)。リフレッシュコマンドである場合(ステップS986:Yes)、信号処理部230は、リフレッシュコマンドに対応するデータに対して信号処理を実行する(ステップS987)。
 リードコマンドである場合(ステップS986:No)、ID管理部220は、そのリードコマンドに対応するアトミックフラグに「1」を設定する(ステップS988)。また、ステップS987またはS988の後にメモリコントローラ200は、コマンドに対応する有効フラグを「1」にし(ステップS989)。コマンド登録処理を終了する。
 なお、第4の実施の形態に、第2の実施の形態や第3の実施の形態をさらに適用することができる。
 このように本技術の第4の実施の形態によれば、メモリコントローラ200がリフレッシュ処理を行うため、NVM300で生じたエラーを回復することができる。
 <5.第5の実施の形態>
 上述の第2の実施の形態では、ホストコンピュータ100は、複数のバンクを備えるNVM300にアクセスしていた。しかし、第2の実施の形態では、ECCの生成後もバンクビジーにより実行待ちのコマンドが生じることがあり、ホストコンピュータ100は、どの程度、コマンド待ちが生じているかを把握することができない。この第5の実施の形態のメモリコントローラ200は、実行待ちコマンド数を測定し、レイテンシを予測する点において第2の実施の形態と異なる。
 図27は、本技術の第5の実施の形態における情報処理システムの一構成例を示すブロック図である。この第5の実施の形態における情報処理システムは、メモリコントローラ200が実行待ちコマンド計測部295をさらに備える点において第2の実施の形態と異なる。
 実行待ちコマンド計測部295は、コマンドキュー240に登録されたコマンドのうち、有効フラグが「1」(すなわち、実行可能)にも関わらず、実行待ちのコマンド数を計測するものである。また、実行待ちコマンド計測部295は、計測したコマンド数からレイテンシを予測し、その予測値が閾値を超える際にID管理部220を制御してコマンドの登録を休止させる。
 図28は、本技術の第5の実施の形態における登録休止判定処理の一例を示すフローチャートである。この登録休止判定処理は、実行待ちコマンド計測部295およびID管理部220により、一定の周期で実行される。
 実行待ちコマンド計測部295は、コマンドキュー240を参照して、有効フラグが「1」、かつ、実行フラグが「0」のコマンド数を実行待ちコマンド数として計測する(ステップS991)。実行待ちコマンド計測部295は、実行待ちコマンド数に基づいて、コマンドのレイテンシを予測し(ステップS992)、予測値が所定の閾値を超えるか否かを判断する(ステップS993)。
 ここで、予測値は、例えば、次の式により算出される。
  (予測値)=(1+実行待ちコマンド数)
        ×(平均コマンド実行時間)     ・・・式1
 あるいは、式1の代わりに次の式を用いて予測値を算出することもできる。
  (予測値)=T+(実行待ちのリードコマンド数)×Tr
         +(実行待ちのライトコマンド数)×Tw…式2
上式において、Trは、リードコマンドの平均実行時間であり、Twは、ライトコマンドの平均実行時間である。Tは、実行中のコマンドの平均実行時間であり、リードコマンドの実行中の場合にTrが設定され、ライトコマンドの実行中の場合にTwが設定される。
 予測値が閾値以下の場合(ステップS993:No)、ID管理部220は、コマンドの登録を継続する(ステップS994)。予測値が閾値を超える場合(ステップS993:Yes)、ID管理部220は、コマンドの登録を休止する(ステップS995)。また、実行待ちコマンド計測部295は、レイテンシの予測値が閾値を超える旨をホストコンピュータ100に通知する(ステップS996)。ステップS994またはS996の後に実行待ちコマンド計測部295およびID管理部220は、ステップS991以降を繰り返す。
 ホストコンピュータ100から見た場合、コマンドキュー240上で実行待ちする時間もレイテンシに加算される。このため、同図に例示したように、ステップS995でコマンド登録を休止して実行待ちコマンド数を減らすことにより、レイテンシを削減することができる。
 また、同図に例示したように、予測値が閾値を超えた際にホストコンピュータ100に通知することにより、ホストコンピュータ100から見たレイテンシを一定以下に抑制することができる。また、ホストコンピュータ100側のコマンドの待ち時間が上限を超えたときにタイムアウトする仕様であった場合、閾値を調整することにより、タイムアウトを抑制することができる。
 なお、メモリコントローラ200は、レイテンシの予測値が閾値を超えたときに、ホストコンピュータ100に通知しているが、実行待ちのコマンド数が所定値を超えたときにホストコンピュータ100に通知することもできる。これにより、ホストコンピュータ100側でコマンドの送信前にレイテンシを予測し、次のコマンドを送信するか否かを判断することができる。
 なお、第5の実施の形態に、第3の実施の形態や第4の実施の形態を適用することもできる。
 このように本技術の第5の実施の形態によれば、レイテンシの予測値が閾値を超えた際にメモリコントローラ200がホストコンピュータ100に通知するため、ホストコンピュータ100から見たレイテンシを、一定以下に抑制することができる。
 なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
 また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
 なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
 なお、本技術は以下のような構成もとることができる。
(1)コマンドキューと、
 不揮発性メモリにアクセスするためのコマンドの識別情報と前記コマンドと前記コマンドが実行可能か否かを示す有効フラグとを対応付けて前記コマンドキューに登録する管理部と、
 前記コマンドにより書き込まれるデータに対して第1の信号処理を行って前記第1の信号処理の完了後に前記コマンドに対応する前記有効フラグを更新する第1の信号処理部と、
 前記有効フラグが示す実行可能なコマンドを前記識別情報に基づいて前記コマンドキューから読み出して実行する制御部と
を具備するコントローラ。
(2)前記第1の信号処理は、データから誤り訂正符号を生成する処理を含む
前記(1)記載のコントローラ。
(3)前記不揮発性メモリから読み出されたリードデータに対して第2の信号処理を行う第2の信号処理部をさらに具備する
前記(2)記載のコントローラ。
(4)前記第2の信号処理は、前記誤り訂正符号に基づいて前記データの誤りを訂正する処理を含む
前記(3)記載のコントローラ。
(5)コマンドが実行可能であり、かつ、対応する前記識別情報が最も古いか否かを前記登録されたコマンドごとに判定する実行判定部をさらに具備する
前記(1)から(4)のいずれかに記載のコントローラ。
(6)前記不揮発性メモリは、所定数のバンクを備え、
 前記実行判定部は、コマンドが実行可能であり、かつ、アクセス先の前記バンクがビジーでなく、かつ、対応する前記識別情報が最も古いか否かを判定する
前記(5)記載のコントローラ。
(7)前記管理部は、前記識別情報と前記コマンドと前記有効フラグと、次に受信したコマンドを連続して実行するか否かを示すアトミックフラグとを対応付けて前記コマンドキューに登録し、
 前記実行判定部は、コマンドが実行可能であり、かつ、次に受信したコマンドを連続して実行するか否かを判定し、次に受信したコマンドを連続して実行しない場合には、対応する前記識別情報が最も古いか否かを判定する
前記(5)または(6)に記載のコントローラ。
(8)前記不揮発性メモリから読み出されたリードデータに対して第2の信号処理を行う第2の信号処理部と、
 所定のバックグラウンド処理を開始させるバックグラウンド処理生成部と
をさらに具備する前記(1)から(7)のいずれかに記載のコントローラ。
(9)前記バックグラウンド処理は、
 所定のアドレスからリードデータを読み出すためのリードコマンドを前記制御部が実行する処理と、
 前記リードデータに対する第2の信号処理と、
 前記第2の信号処理後のデータからライトデータを生成する第1の信号処理と、
 前記第1の信号処理後のライトデータを前記アドレスに書き込むためのリフレッシュコマンドを前記制御部が実行する処理と
を含む
前記(8)記載のコントローラ。
(10)前記コマンドキューに登録されたコマンドのうち実行待ちのコマンド数を計測する実行待ちコマンド計測部をさらに具備し、
 前記管理部は、前記コマンド計測部の計測結果に基づいて前記コマンドの登録を休止する
前記(1)から(9)のいずれかに記載のコントローラ。
(11)前記コマンド計測部は、前記コマンド数に基づいてレイテンシを予測し、予測値が所定の閾値を超える場合には前記予測値が前記閾値を超える旨をホストコンピュータに通知する
前記(10)記載のコントローラ。
(12)不揮発性メモリと、
 コマンドキューと、前記不揮発性メモリにアクセスするためのコマンドの識別情報と前記コマンドと前記コマンドが実行可能か否かを示す有効フラグとを対応付けて前記コマンドキューに登録する管理部と、前記コマンドにより書き込まれるデータに対して第1の信号処理を行って前記第1の信号処理の完了後に前記コマンドに対応する前記有効フラグを更新する第1の信号処理部と、前記有効フラグが示す実行可能なコマンドを前記識別情報に基づいて前記コマンドキューから読み出して実行する制御部とを備えるコントローラと
を具備する不揮発性記憶装置。
(13)不揮発性メモリにアクセスするためのコマンドの識別情報と前記コマンドと前記コマンドが実行可能か否かを示す有効フラグとを対応付けてコマンドキューに登録する管理手順と、
 前記コマンドにより書き込まれるデータに対して第1の信号処理を行って前記第1の信号処理の完了後に前記コマンドに対応する前記有効フラグを更新する第1の信号処理手順と、
 前記有効フラグが示す実行可能なコマンドを前記識別情報に基づいて前記コマンドキューから読み出して実行する制御手順と
を具備する制御方法。
 100 ホストコンピュータ
 150 不揮発性記憶装置
 200 メモリコントローラ
 210 ホストインターフェース
 220 ID管理部
 230、280 信号処理部
 231、232 ECC生成処理部
 240 コマンドキュー
 250 実行判定部
 260 NVM制御部
 270 NVMインターフェース
 281、282 誤り訂正処理部
 290 バックグラウンド処理生成部
 295 実行待ちコマンド計測部
 300 NVM

Claims (13)

  1.  コマンドキューと、
     不揮発性メモリにアクセスするためのコマンドの識別情報と前記コマンドと前記コマンドが実行可能か否かを示す有効フラグとを対応付けて前記コマンドキューに登録する管理部と、
     前記コマンドにより書き込まれるデータに対して第1の信号処理を行って前記第1の信号処理の完了後に前記コマンドに対応する前記有効フラグを更新する第1の信号処理部と、
     前記有効フラグが示す実行可能なコマンドを前記識別情報に基づいて前記コマンドキューから読み出して実行する制御部と
    を具備するコントローラ。
  2.  前記第1の信号処理は、データから誤り訂正符号を生成する処理を含む
    請求項1記載のコントローラ。
  3.  前記不揮発性メモリから読み出されたリードデータに対して第2の信号処理を行う第2の信号処理部をさらに具備する
    請求項2記載のコントローラ。
  4.  前記第2の信号処理は、前記誤り訂正符号に基づいて前記データの誤りを訂正する処理を含む
    請求項3記載のコントローラ。
  5.  コマンドが実行可能であり、かつ、対応する前記識別情報が最も古いか否かを前記登録されたコマンドごとに判定する実行判定部をさらに具備する
    請求項1記載のコントローラ。
  6.  前記不揮発性メモリは、所定数のバンクを備え、
     前記実行判定部は、コマンドが実行可能であり、かつ、アクセス先の前記バンクがビジーでなく、かつ、対応する前記識別情報が最も古いか否かを判定する
    請求項5記載のコントローラ。
  7.  前記管理部は、前記識別情報と前記コマンドと前記有効フラグと、次に受信したコマンドを連続して実行するか否かを示すアトミックフラグとを対応付けて前記コマンドキューに登録し、
     前記実行判定部は、コマンドが実行可能であり、かつ、次に受信したコマンドを連続して実行するか否かを判定し、次に受信したコマンドを連続して実行しない場合には、対応する前記識別情報が最も古いか否かを判定する
    請求項5記載のコントローラ。
  8.  前記不揮発性メモリから読み出されたリードデータに対して第2の信号処理を行う第2の信号処理部と、
     所定のバックグラウンド処理を開始させるバックグラウンド処理生成部と
    をさらに具備する請求項1記載のコントローラ。
  9.  前記バックグラウンド処理は、
     所定のアドレスからリードデータを読み出すためのリードコマンドを前記制御部が実行する処理と、
     前記リードデータに対する第2の信号処理と、
     前記第2の信号処理後のデータからライトデータを生成する第1の信号処理と、
     前記第1の信号処理後のライトデータを前記アドレスに書き込むためのリフレッシュコマンドを前記制御部が実行する処理と
    を含む
    請求項8記載のコントローラ。
  10.  前記コマンドキューに登録されたコマンドのうち実行待ちのコマンド数を計測する実行待ちコマンド計測部をさらに具備し、
     前記管理部は、前記コマンド計測部の計測結果に基づいて前記コマンドの登録を休止する
    請求項1記載のコントローラ。
  11.  前記コマンド計測部は、前記コマンド数に基づいてレイテンシを予測し、予測値が所定の閾値を超える場合には前記予測値が前記閾値を超える旨をホストコンピュータに通知する
    請求項10記載のコントローラ。
  12.  不揮発性メモリと、
     コマンドキューと、前記不揮発性メモリにアクセスするためのコマンドの識別情報と前記コマンドと前記コマンドが実行可能か否かを示す有効フラグとを対応付けて前記コマンドキューに登録する管理部と、前記コマンドにより書き込まれるデータに対して第1の信号処理を行って前記第1の信号処理の完了後に前記コマンドに対応する前記有効フラグを更新する第1の信号処理部と、前記有効フラグが示す実行可能なコマンドを前記識別情報に基づいて前記コマンドキューから読み出して実行する制御部とを備えるコントローラと
    を具備する不揮発性記憶装置。
  13.  不揮発性メモリにアクセスするためのコマンドの識別情報と前記コマンドと前記コマンドが実行可能か否かを示す有効フラグとを対応付けてコマンドキューに登録する管理手順と、
     前記コマンドにより書き込まれるデータに対して第1の信号処理を行って前記第1の信号処理の完了後に前記コマンドに対応する前記有効フラグを更新する第1の信号処理手順と、
     前記有効フラグが示す実行可能なコマンドを前記識別情報に基づいて前記コマンドキューから読み出して実行する制御手順と
    を具備する制御方法。
PCT/JP2021/043549 2021-01-21 2021-11-29 コントローラ、不揮発性記憶装置、および、制御方法 WO2022158120A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021007805 2021-01-21
JP2021-007805 2021-01-21

Publications (1)

Publication Number Publication Date
WO2022158120A1 true WO2022158120A1 (ja) 2022-07-28

Family

ID=82549658

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/043549 WO2022158120A1 (ja) 2021-01-21 2021-11-29 コントローラ、不揮発性記憶装置、および、制御方法

Country Status (1)

Country Link
WO (1) WO2022158120A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012234363A (ja) * 2011-04-28 2012-11-29 Toshiba Corp メモリシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012234363A (ja) * 2011-04-28 2012-11-29 Toshiba Corp メモリシステム

Similar Documents

Publication Publication Date Title
JP6950149B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP5942781B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP5853906B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
EP2800097B1 (en) Storage control device, storage device, information processing system, and processing methods therefor
JP2013142947A (ja) 記憶制御装置、記憶装置および記憶制御装置の制御方法
JP6686892B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP6102632B2 (ja) 記憶制御装置、ホストコンピュータ、情報処理システムおよび記憶制御装置の制御方法
JP6447629B2 (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
JP2013222315A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
CN103793335B (zh) 存储控制设备、存储设备、信息处理系统及存储控制方法
JP5867264B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP2014174659A (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
WO2022158120A1 (ja) コントローラ、不揮発性記憶装置、および、制御方法
JP6107625B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
JP6497395B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP6493062B2 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
WO2017168905A1 (ja) メモリ制御装置、記憶装置および情報処理システム
JP5845876B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
WO2017073127A1 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
JP2014013635A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
WO2015182439A1 (ja) 記憶装置、記憶システムおよび記憶装置の制御方法
WO2019244417A1 (ja) 記憶制御装置、記憶装置および記憶制御方法
WO2017043140A1 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP2013114521A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21921222

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP