WO2018003244A1 - メモリコントローラ、メモリシステムおよび情報処理システム - Google Patents

メモリコントローラ、メモリシステムおよび情報処理システム Download PDF

Info

Publication number
WO2018003244A1
WO2018003244A1 PCT/JP2017/015412 JP2017015412W WO2018003244A1 WO 2018003244 A1 WO2018003244 A1 WO 2018003244A1 JP 2017015412 W JP2017015412 W JP 2017015412W WO 2018003244 A1 WO2018003244 A1 WO 2018003244A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
write
control unit
read
command
Prior art date
Application number
PCT/JP2017/015412
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 US16/311,100 priority Critical patent/US11029881B2/en
Priority to JP2018524909A priority patent/JP6992750B2/ja
Publication of WO2018003244A1 publication Critical patent/WO2018003244A1/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Definitions

  • This technology relates to a memory controller that controls a memory. More specifically, the present invention relates to a memory controller, a memory system, and an information processing system that generate requests for a plurality of memories based on commands issued from a computer.
  • a technique for speeding up memory access to a plurality of memories (for example, memory banks or dies) by changing the order of reading is known. For example, when there is a write request from the command issuer circuit, the memory command issue order is changed based on the past command issue history held in the command history buffer and two or more newly requested commands.
  • An apparatus to be changed has been proposed (see, for example, Patent Document 1).
  • the memory command issuance order is changed based on the command issuance history and the newly requested command.
  • a memory that requires processing such as generating an error correction code for write data
  • This technology was created in view of such a situation, and aims to appropriately determine the order of read access to the memory.
  • a first aspect of the present technology is a memory write control unit that generates a write request for one of a plurality of memories based on a write command from a computer. And a memory read control for generating a read request for one of the plurality of memories based on a read command from the computer according to a priority according to a data processing state of the write data related to the write request in the memory write control unit
  • the memory write control unit generates an error correction code generation unit that generates an error correction code for the write data, and generates the error correction code for the write data for each of the plurality of memories.
  • a busy signal generation unit that generates a busy signal indicating whether or not the data is in the data processing state, and the memory read control unit is generating the error correction code when the busy signal is among the plurality of memories.
  • the priority may be set higher. As a result, the read request is preferentially requested to the memory indicating that the error correction code is being generated.
  • the memory write control unit includes a data buffer that holds the write data in which the error correction code is generated, and an error correction code for the write data for each of the plurality of memories.
  • a ready signal generation unit that generates a ready signal indicating whether the data buffer has been prepared and is prepared in the data buffer as the data processing state, and the memory read control unit includes the memory read control unit of the plurality of memories.
  • the ready signal indicates that the error correction code has been generated, the priority may be set low. As a result, the read request is preferentially requested to a memory other than the memory for which the error correction code has been generated.
  • the memory read control unit includes a command queue that holds a read command from the computer, and a write queue for writing data related to the write request for each of the plurality of memories. Based on the read command selection unit that sets the priority according to the data processing state and selects a read command for any of the plurality of memories from the command queue according to the priority, and the selected read command You may make it provide the memory request address transmission part which produces
  • FIG. 3 is a diagram illustrating a configuration example of a memory control unit (memory write control unit) 250-2 according to the first embodiment of the present technology.
  • FIG. 3 is a diagram illustrating a configuration example of a memory control unit (memory read control unit) 250-1 according to the first embodiment of the present technology.
  • FIG. FIG. 3 is a diagram illustrating a configuration example of a memory control unit (memory read control unit) 250-1 according to the first embodiment of the present technology.
  • 10 is a diagram illustrating an example of a priority assignment rule for a read command by the read command selection unit 254-1 according to the first embodiment of the present technology.
  • 21 is a flowchart illustrating an example of a read command selection processing procedure by a read command selection unit 254-1 of the present technology. It is a comparative example for demonstrating the operation timing of the memory controller 200 in 1st Embodiment of this technique.
  • 6 is an operation timing example of the memory controller 200 according to the first embodiment of the present technology. It is a figure showing an example of a signal line of memory control engine 202 in a 2nd embodiment of this art. It is a figure showing an example of composition of memory control part (memory write control part) 250-2 in a 2nd embodiment of this art.
  • First Embodiment Example in which high priority is given to a read command for a memory die for which write data is being prepared
  • Second Embodiment Example in which a low priority is given to a read command for a memory die for which write data preparation is completed
  • FIG. 1 is a diagram illustrating a configuration example of an information processing system according to an embodiment of the present technology.
  • the information processing system includes a host computer 100, a memory controller 200, and a memory 300.
  • the memory controller 200 and the memory 300 constitute a memory system 400.
  • the host computer 100 issues commands for instructing the memory 300 to perform data read processing and write processing.
  • the host computer 100 includes a processor (not shown) that executes processing as the host computer 100 and a controller interface (not shown) for exchanging data with the memory controller 200.
  • the host computer 100 generally includes a data buffer.
  • the host computer 100 and the memory controller 200 are connected by a signal line 109.
  • the host computer 100 is an example of a computer described in the claims.
  • the memory controller 200 performs request control for the memory 300 in accordance with a command from the host computer 100.
  • the memory controller 200 and the memory 300 are connected by a signal line 309.
  • the memory 300 includes a control unit (not shown) and a memory cell array.
  • the control unit of the memory 300 accesses the memory cell according to a request from the memory controller 200.
  • the memory cell array of the memory 300 is a memory cell array composed of a plurality of memory cells, and stores one of two values for each bit, or stores one of multiple values for each plurality of bits. A large number of memory cells are arranged two-dimensionally (matrix).
  • This memory cell array is assumed to be a non-volatile memory (NVM) in which a page having a plurality of byte sizes is used as a read or write access unit and data can be overwritten without being erased.
  • NVM non-volatile memory
  • the memory 300 includes a plurality of nonvolatile memories (such as a die or a chip) and can be accessed independently.
  • FIG. 2 is a diagram illustrating a configuration example of the memory controller 200 according to the embodiment of the present technology.
  • the memory controller 200 includes a storage interface control unit 210, a processor 230, a RAM 240, and a memory control engine 201, which are interconnected by an I / O bus 220.
  • the storage interface control unit 210 is connected to the host computer 100 via the signal line 109 and exchanges with the host computer 100.
  • the storage interface control unit 210 includes a general-purpose bus used as an interface for storage, such as USB, SATA, and PCIe.
  • command queuing capable of simultaneously receiving a plurality of commands from the host computer 100 is supported. Thereby, a request for accessing the memory 300 is randomly transmitted to perform read access and write access.
  • the processor 230 performs processing necessary for the operation of the memory controller 200.
  • the RAM 240 is a memory that stores data and the like necessary for the operation of the memory controller 200. This RAM 240 is also used as a data buffer.
  • the memory control engine 201 performs request control for the memory 300.
  • the memory control engine 201 includes two memory control units 250-1 and 250-2, a connection switching unit 260, and a memory interface control unit 270.
  • the memory control units 250-1 and 250-2 each perform request control for the memory 300 independently.
  • the memory control unit 250-1 controls a read request to the memory 300 (hereinafter may be referred to as “memory read control unit”).
  • the memory control unit 250-2 controls a write request to the memory 300 (hereinafter may be referred to as “memory write control unit”).
  • the memory control unit 250-1 is connected to the I / O bus 220 via the signal line 229-1 and is connected to the connection switching unit 260 via the signal line 269-1.
  • the memory control unit 250-2 is connected to the I / O bus 220 via the signal line 229-2, and is connected to the connection switching unit 260 via the signal line 269-2.
  • the signal lines 229-1 and 229-2 may be collectively referred to as a signal line 229.
  • the signal lines 269-1 and 269-2 may be collectively referred to as a signal line 269.
  • connection switching unit 260 performs switching so that one of the memory control units 250-1 and 250-2 is connected to the memory 300.
  • the memory interface control unit 270 is connected to the connection switching unit 260 via the signal line 279 and exchanges data with the memory 300.
  • the bandwidth of the I / O bus 220 is larger than the read / write bandwidth of the memory 300. Therefore, it is assumed that the performance of the memory 300 determines the performance of the memory system 400.
  • FIG. 3 is a diagram illustrating an example of signal lines of the memory control engine 201 according to the first embodiment of the present technology.
  • the signal line 229 between the memory control unit 250 and the I / O bus 220 includes a command signal line, a data signal line, and a result signal line.
  • the signal line 269 between the memory control unit 250 and the connection switching unit 260 includes a connection request signal line, a request address (Req / Adr) signal line, a data (Data) signal line, and busy statuses 1 and 2 ( Busy / Status 1, 2) Includes signal lines.
  • a signal line 279 between the connection switching unit 260 and the memory interface control unit 270 includes a request address (Req / Adr) signal line, a data (Data) signal line, and a busy status (Busy / Status) signal line. Including.
  • the storage interface control unit 210 supplies a command issued from the host computer 100 to one of the two memory control units 250-1 or 250-2 according to the command.
  • Each of the memory control units 250 receives a command issued from the host computer 100 and independently generates a request for the memory 300 to perform control. As a result, the memory control unit 250 is operated in parallel to prevent the waiting time on the memory interface control unit 270 from occurring.
  • the memory control engine 201 is connected to the two memory dies # 1 (301) and the memory die # 2 (302) via the signal line 309. Which of the memory dies # 1 and # 2 is to be accessed is instructed by chip select signals CS1 and CS2 from the memory interface control unit 270.
  • the busy status 1 (Busy / Status1) signal line indicates the busy status of the memory die # 1
  • the busy status 2 (Busy / Status2) signal line indicates the busy status of the memory die # 2.
  • the memory control unit 250-1 controls a read request to the memory 300, and the memory control unit 250-2 controls a write request to the memory 300.
  • the memory control unit 250-2 performs data processing on the write data.
  • data processing for example, processing for generating an error correction code (ECC) for write data is assumed, but other processing such as encryption may be used.
  • ECC error correction code
  • the memory control unit 250-2 outputs the signal “enc_busy1” and the signal “enc_busy2” to the memory control unit 250-1.
  • the signal “enc_busy1” indicates whether an error correction code for write data relating to a write request for the memory die # 1 is being generated.
  • the signal “enc_busy2” indicates whether an error correction code for write data relating to a write request for the memory die # 2 is being generated.
  • Each of the memory control units 250-1 and 250-2 can perform request control on the memory dies # 1 and # 2 in parallel. That is, after the memory control unit 250-1 executes a read request to one of the memory dies # 1 and # 2, the request signal to the connection switching unit 260 is terminated, and the memory control unit 250-2 immediately sends the write request to the memory die # 1. It can be executed for the other of # 1 and # 2.
  • the memory control unit 250 receives and manages the Busy / Status signal from the memory interface control unit 270 for each of the memory dies # 1 and # 2.
  • the memory control unit 250 clears the write busy information.
  • the next write request is not transmitted to the memory dies # 1 and # 2 in the write busy state.
  • the memory control unit 250 outputs a connection request to the connection switching unit 260 in order to confirm the status information for the memory dies # 1 and # 2 in the write busy state, and after confirming the status information, Stop.
  • memory dies # 1 and # 2 are examples of the memory described in the claims.
  • FIG. 4 is a diagram illustrating a configuration example of the memory control unit (memory write control unit) 250-2 according to the first embodiment of the present technology.
  • the memory control unit 250-2 includes a decoder 252-2, a memory request address transmission unit 253-2, a bus data reception unit 254-2, an error correction code generation unit 255-2, and a memory data transmission unit 257-. 2 and a busy signal generator 258-2.
  • the decoder 252-2 is a decoder that interprets commands issued from the host computer 100. As a decoding result, for example, the signal “die1_sel” is asserted when the write command is for the memory die # 1, and the signal “die2_sel” is asserted when the write command is for the memory die # 2.
  • the memory request address transmission unit 253-2 transmits a request and an address to the memory 300 according to the decoding result by the decoder 252-2.
  • the memory request address transmission unit 253-2 outputs a connection request to the connection switching unit 260 prior to transmitting a request and an address.
  • the bus data receiving unit 254-2 receives write data from the I / O bus 220 and supplies it to the error correction code generating unit 255-2.
  • the error correction code generation unit 255-2 generates an error correction code (ECC) for the write data received by the bus data reception unit 254-2.
  • ECC error correction code
  • the error correction code generation unit 255-2 asserts the signal “enc_busy” when an error correction code is being generated for the write data supplied from the bus data reception unit 254-2. That is, the signal “enc_busy” indicates a “busy state” if an error correction code is being generated, and indicates an “idle state” if it is not being generated.
  • the memory data transmission unit 257-2 transmits write data and an error correction code to the memory 300.
  • the busy signal generation unit 259-2 generates a busy signal indicating whether or not an error correction code for write data related to a write request is being generated for each of the memory dies # 1 and # 2. That is, when the signal “enc_busy” indicates “busy state”, the signal “enc_busy1” is set to “busy state” and the signal “enc_busy2” is set to “idle state” if the signal “die1_sel” is asserted. In this case, if the signal “die2_sel” is asserted, the signal “enc_busy2” is set to “busy state”, and the signal “enc_busy1” is set to “idle state”. On the other hand, when the signal “enc_busy” indicates the “idle state”, the signals “enc_busy1” and “enc_busy2” are both set to the “idle state”.
  • FIG. 5 is a diagram illustrating a configuration example of the memory control unit (memory read control unit) 250-1 according to the first embodiment of the present technology.
  • the memory control unit 250-1 includes a command queue 251-1, a decoder 252-1, a memory request address transmission unit 253-1, and a read command selection unit 254-1.
  • the memory control unit 250-1 includes a memory data receiving unit 256-1, an error detection / correction unit 257-1, and a bus data transmission unit 258-1.
  • the command queue 251-1 is a memory that holds a read command issued from the host computer 100.
  • the command queue 251-1 holds read commands by the FIFO (first-in first-out) method for each of the memory dies # 1 and # 2 corresponding to the memory dies # 1 and # 2.
  • the command queue 251-1 asserts the signal “rcommand1” if the read command for the memory die # 1 is held, and asserts the signal “rcommand2” if the read command for the memory die # 2 is held. Since the read command is managed for each of the memory dies # 1 and # 2, the signal “rcommand1” and the signal “rcommand2” may be asserted at the same time.
  • the decoder 252-1 is a decoder that interprets a command issued from the host computer 100, similarly to the decoder 252-2. Similar to the memory request address transmission unit 253-2, the memory request address transmission unit 253-1 transmits a request and an address to the memory 300 according to the decoding result by the decoder 252-1.
  • the memory data receiving unit 256-1 receives the read data and error correction code read from the memory 300.
  • the error detection / correction unit 257-1 performs error detection and error correction using an error correction code for the read data received by the memory data reception unit 256-1.
  • the bus data transmission unit 258-1 transmits the read data output from the error detection / correction unit 257-1 to the I / O bus 220.
  • the read command selection unit 254-1 selects which read command out of the read commands held in the command queue 251-1 should be taken out and supplied to the decoder 252-1.
  • a signal “enc_busy1”, a signal “enc_busy2”, a signal “die_busy1”, a signal “die_busy2”, a signal “rcommand1”, and a signal “rcommand2” are input to the read command selection unit 254-1.
  • the signal “enc_busy1” and the signal “enc_busy2” are busy signals generated by the busy signal generation unit 258-2, and whether or not an error correction code is being generated for each of the memory dies # 1 and # 2. Indicates.
  • the signal “die_busy1” and the signal “die_busy2” are part of the Busy / Status signals of the memory dies # 1 and # 2, and indicate whether the memory dies # 1 and # 2 are busy.
  • the signal “rcommand1” and the signal “rcommand2” indicate for each memory die # 1 and # 2 whether or not there is a read command held in the command queue 251-1.
  • the read command selection unit 254-1 generates a priority for each of the memory dies # 1 and # 2 based on these input signals.
  • the read command selection unit 254-1 generates a control signal for taking out a command corresponding to one of the memory dies # 1 and # 2 from the command queue 251-1 according to the generated priority. That is, when a command corresponding to the memory die # 1 is taken out, the signal “fetch1” is asserted. On the other hand, when a command corresponding to the memory die # 2 is taken out, the signal “fetch2” is asserted. When neither command is taken out, neither the signal “fetch1” nor the signal “fetch2” is asserted.
  • the command queue 251-1 supplies a command corresponding to one of the memory dies # 1 and # 2 to the decoder 252-1 in accordance with the signal “fetch1” and the signal “fetch2” supplied from the read command selection unit 254-1. .
  • FIG. 6 is a diagram illustrating an example of a priority assignment rule for a read command by the read command selection unit 254-1 according to the first embodiment of the present technology.
  • the priority for each of the memory dies # 1 and # 2 is handled individually. Therefore, whether or not a read command for the memory die # 1 exists in the command queue 251-1 is determined based on the signal “rcommand1”. Whether or not a read command for the memory die # 2 exists in the command queue 251-2 is determined based on the signal “rcommand2”. Similarly, whether or not the memory die # 1 is busy is determined by a signal “die_busy1”, and whether or not the memory die # 2 is busy is determined by a signal “die_busy2”.
  • the determination criterion is whether or not write data for the memory die is being prepared as the data processing state of the write data.
  • a memory die that is a target of a command that gives priority is referred to as a “target memory die”.
  • the command queues 251-1 and 251-2 are collectively referred to as a command queue 251.
  • the priority is “medium” unless the target memory die is busy and write data for the target memory die is not being prepared.
  • the priority is “high”. That is, if write data is being prepared in the target memory die, the priority of the subsequent read command in the target memory die is set higher than usual. This is because if the write data is being prepared in the target memory die, write access is expected to start soon, so that the subsequent read access in the target memory die should be advanced in the meantime. Is intended.
  • FIG. 7 is a flowchart showing an example of a read command selection processing procedure by the read command selection unit 254-1 of the present technology.
  • the read command selection unit 254-1 assigns a priority to the read command according to the above-described assignment rule, with the memory die # 1 as the target memory die (step S911). Then, the read command selection unit 254-1 assigns a priority to the read command according to the above-described assignment rule with the memory die # 2 as the target memory die (step S912).
  • the read command selection unit 254-1 compares the priority of the read command for the memory die # 1 and the priority of the read command for the memory die # 2 (step S913). If the former priority is higher than the latter priority, or if both are equal (step S913: Yes), the read command selection unit 254-1 selects a read command for the memory die # 1 ( Step S914).
  • the read command selection unit 254-1 selects the read command for the memory die # 2 (step S916).
  • the read command selection unit 254-1 does not select a read command from the command queue 251 (step S917).
  • FIG. 8 is a comparative example for explaining the operation timing of the memory controller 200 according to the first embodiment of the present technology.
  • each command is issued from the host computer 100 in the order of a write command C1 for the memory die # 1, a read command C2 for the memory die # 2, and a read command C3 for the memory die # 1.
  • the memory write control unit 250-2 starts generating an error correction code in the error correction code generation unit 255-2. Thereafter, read commands C2 and C3 are issued.
  • the memory read control unit 250-1 since it is assumed that the memory read control unit 250-1 does not rearrange commands, the memory read control unit 250-1 first requests the memory die # 2 for a request regarding the read command C2. To do. Next, the memory read control unit 250-1 requests the memory die # 1 for a request regarding the read command C3.
  • the request for the read command C3 is delayed by the request for the read command C2, and the request for the request for the write command C1 is awaited by the completion of the request for the read command C3. Therefore, it can be seen that if the request related to the read command C3 is processed before the request related to the read command C2, waiting for the request related to the write command C1 is reduced.
  • FIG. 9 is an operation timing example of the memory controller 200 according to the first embodiment of the present technology.
  • the same command order as in the example of FIG. 8 is assumed, but it is shown that the time until the end of processing is shortened by rearranging the commands in the memory read control unit 250-1.
  • the memory read control unit 250-1 gives priority to each read command.
  • the memory dies # 1 and # 2 are in an idle state.
  • the priority of the read command C3 for the memory die # 1 is set to “high”.
  • the priority of the read command C2 for the memory die # 2 is set to “medium”.
  • the memory read control unit 250-1 compares the priorities of the read command C3 with respect to the memory die # 1 and the read command C2 with respect to the memory die # 2, selects the read command C3 with the higher priority first, and assigns it to the memory die # 1. A read request is requested. Next, the memory read control unit 250-1 selects the other read command C2, and requests a read request from the memory die # 2.
  • the busy state continues until the request for the read command C3 is completed, and during this time, the request for the request for the write command C1 is waited in the same manner as in the above example.
  • the completion timing of the request related to the read command C3 is early. Therefore, waiting for a request related to the write command C1 is reduced, and as a result, the time until the end of processing is shortened as compared with the above example.
  • a write access is started after a certain amount of time has elapsed in a memory die for which write data is being prepared, and a subsequent read command in the memory die is used.
  • a subsequent read command in the memory die is used.
  • the subsequent read access in the memory die can be advanced before the write access is started, and the time until the end of the entire process can be shortened.
  • Second Embodiment> In the first embodiment described above, it is assumed that the subsequent read access in the memory die for which write data is being prepared is prioritized. In the second embodiment, in addition to this, if the write data preparation is complete, it is assumed that the priority of the subsequent read access is set low. Note that the overall configuration of the information processing system is the same as that of the first embodiment described above, and a detailed description thereof will be omitted.
  • FIG. 10 is a diagram illustrating an example of signal lines of the memory control engine 202 according to the second embodiment of the present technology.
  • the signal “data_ready1” and the signal “data_ready2” are supplied from the memory control unit 250-2 to the memory control unit 250-1. This is different from the embodiment.
  • Other points are the same as those of the memory control engine 201 described with reference to FIG.
  • the signal “data_ready1” indicates whether or not the generation of the error correction code of the write data related to the write request for the memory die # 1 is completed. If the generation of the error correction code is completed, “completed state” is indicated, and if the generation of the error correction code is not completed, “incomplete state” is indicated. Similarly, the signal “data_ready2” indicates whether or not the generation of the error correction code of the write data related to the write request for the memory die # 2 is completed.
  • FIG. 11 is a diagram illustrating a configuration example of the memory control unit (memory write control unit) 250-2 according to the second embodiment of the present technology.
  • the memory control unit 250-2 of the second embodiment includes a data buffer 256-2 and a ready signal generation unit 259-2 in addition to the first embodiment described above.
  • the data buffer 256-2 is a buffer that holds the data correction code generated by the error correction code generation unit 255-2 together with the write data. By providing this data buffer 256-2, even if the corresponding memory die is busy, the error correction code generation unit 255-2 can generate a data correction code if the data buffer 256-2 has a free space. It becomes.
  • the data buffer 256-2 sets the signal “data_ready” to the “completed state” when the generation of the data correction code is completed and the write data and the data correction code are held. When this signal “data_ready” indicates “completion state”, it means that preparation is completed so that a write request can be requested immediately.
  • the ready signal generation unit 259-2 generates a ready signal indicating whether or not the generation of the error correction code of the write data related to the write request has been completed for each of the memory dies # 1 and # 2. That is, when the signal “data_ready” indicates “completed state”, if the signal “die1_sel” is asserted, the signal “data_ready1” is set to “completed state”, and the signal “data_ready2” is set to “uncompleted state”. . In this case, if the signal “die2_sel” is asserted, the signal “data_ready2” is set to “completed state” and the signal “data_ready1” is set to “unfinished state”. On the other hand, when the signal “data_ready” indicates “incomplete state”, the signals “data_ready1” and “data_ready2” are both set to “incomplete state”.
  • FIG. 12 is a diagram illustrating a configuration example of the memory control unit (memory read control unit) 250-1 according to the second embodiment of the present technology.
  • the memory control unit 250-1 of the second embodiment is different from the first embodiment described above in that the read command selection unit 254-1 further receives the signal “data_ready1” and the signal “data_ready2”. .
  • the read command selection unit 254-1 should extract any read command from the read commands held in the command queue 251-1 and supply it to the decoder 252-1. Select.
  • the read command selection unit 254-1 according to the second embodiment takes the above-mentioned first command in consideration of the states of the signal “data_ready1” and the signal “data_ready2” supplied from the data buffer 256-2. This is different from the embodiment.
  • FIG. 13 is a diagram illustrating an example of a priority assignment rule for the read command by the read command selection unit 254-1 according to the second embodiment of the present technology.
  • the priorities relating to each of the memory dies # 1 and # 2 are individually handled.
  • whether or not the write data preparation for the memory die # 1 is completed is determined by the signal “data_ready1”, and whether or not the write data preparation for the memory die # 2 is completed is determined by the signal “data_ready2”.
  • the data processing state of the write data is based on whether the write data for the memory die is being prepared and whether the preparation has been completed.
  • the priority is “medium” if the target memory die is not busy and the write data for the target memory die is neither ready nor ready. If the target memory die is not busy and write data for the target memory die is being prepared, the priority is “high”. This is the same as in the first embodiment described above.
  • the priority is “low” if the target memory die is not busy and the preparation of the write data for the target memory die is completed. In other words, if the preparation of write data is completed in the target memory die, the priority of the subsequent read command in the target memory die is set lower than normal. This is intended to give priority to read access other than the target memory die because write access is expected to start as soon as the write data is ready in the target memory die. Is.
  • the read command selection unit 254-1 selects a read command according to the priority set in this way. Since the read command selection processing procedure of the read command selection unit 254-1 in the second embodiment is the same as that in the first embodiment described with reference to FIG. 7, detailed description thereof is omitted.
  • FIG. 14 is a comparative example for explaining the operation timing of the memory controller 200 according to the second embodiment of the present technology.
  • each command is issued from the host computer 100 in the order of a write command C4 for the memory die # 1, a read command C5 for the memory die # 1, and a read command C6 for the memory die # 2. Further, it is assumed that the memory dies # 1 and # 2 are already busy by another request before the write command C4.
  • the memory write control unit 250-2 starts generating an error correction code in the error correction code generation unit 255-2. Thereafter, read commands C5 and C6 are issued.
  • the memory read control unit 250-1 waits for the end of the write access related to the write command C4, and then performs the read.
  • a request for the command C5 is made to the memory die # 1. Then, the memory read control unit 250-1 requests the memory die # 2 for a request regarding the read command C6.
  • the request related to the read command C5 is waited for and the request related to the read command C6 is transmitted. Therefore, the request related to the read command C6 is waited even though the memory die # 2 is in the idle state. ing. Therefore, it can be seen that if the request related to the read command C6 is processed before the request related to the read command C5, the time until the processing is completed is shortened.
  • FIG. 15 is an example of operation timing of the memory controller 200 according to the second embodiment of the present technology.
  • the same command order as in the example of FIG. 14 is assumed, but it is shown that the time until the end of processing is shortened by rearranging commands in the memory read control unit 250-1.
  • the write command C4 is issued and the memory write control unit 250-2 starts generating the error correction code in the error correction code generation unit 255-2.
  • the memory read control unit 250-1 does not give priority to any read command. Thereafter, the write data and the error correction code related to the write command C4 are held in the data buffer 256-2.
  • the memory read control unit 250-1 gives priority to the read commands C5 and C6. That is, for the memory die # 1, since the error correction code relating to the write command C4 has been generated and the signal “data_ready1” indicates “completed”, the priority of the read command C5 is set to “low”. For memory die # 2, no error correction code is generated, and the signal “enc_busy2” indicates “not ready”, so the priority of the read command C6 is set to “medium”.
  • the memory read control unit 250-1 compares the priorities of the read command C5 for the memory die # 1 and the read command C6 for the memory die # 2, selects the read command C6 having the higher priority first, and assigns it to the memory die # 2. A read request is requested. Thereafter, after the write access related to the write command C4 in the memory die # 1 is completed, the memory read control unit 250-1 selects the other read command C5 and requests a read request from the memory die # 1.
  • the write data preparation if the write data preparation is completed, it is estimated that a write request is immediately requested to the corresponding memory die, and the memory die Subsequent read commands are given low priority. As a result, read access in other memory dies can be advanced, and the time until the end of the entire process can be shortened.
  • the processing procedure described in the above embodiment may be regarded as a method having a series of these procedures, and a program for causing a computer to execute these series of procedures or a recording medium storing the program. You may catch it.
  • a recording medium for example, a CD (Compact Disc), an MD (MiniDisc), a DVD (Digital Versatile Disc), a memory card, a Blu-ray disc (Blu-ray (registered trademark) Disc), or the like can be used.
  • this technique can also take the following structures. (1) a memory write control unit that generates a write request for one of a plurality of memories based on a write command from a computer; A memory read control unit that generates a read request for any of the plurality of memories based on a read command from the computer according to a priority according to a data processing state in the memory write control unit of the write data related to the write request; A memory controller.
  • the memory write control unit An error correction code generator for generating an error correction code for the write data; A busy signal generation unit that generates a busy signal indicating whether the error correction code is being generated for the write data for each of the plurality of memories as the data processing state; The memory controller according to (1), wherein the memory read control unit sets the priority higher although the busy signal indicates that the error correction code is being generated among the plurality of memories.
  • the memory write control unit includes a data buffer that holds the write data in which the error correction code is generated; A ready signal generating unit that generates a ready signal indicating whether the error correction code has been generated for the write data for each of the plurality of memories and is prepared in the data buffer as the data processing state; Prepared, The memory controller according to (2), wherein the memory read control unit sets the priority low although the ready signal indicates that generation of the error correction code is completed among the plurality of memories.
  • the memory read control unit A command queue for holding read commands from the computer; For each of the plurality of memories, the priority according to the data processing state in the memory write control unit of the write data related to the write request is set, and any one of the plurality of memories from the command queue according to the priority
  • a read command selection unit for selecting a read command for A memory request address transmission unit that generates and transmits a read request and an address to any one of the plurality of memories based on the selected read command, according to any one of (1) to (3).
  • a memory write control unit that generates a write request for any of the plurality of memories based on a write command from a computer
  • a memory read control unit that generates a read request for any of the plurality of memories based on a read command from the computer according to a priority according to a data processing state in the memory write control unit of the write data related to the write request
  • a memory system comprising: (6) a plurality of memories; A computer, A memory write control unit that generates a write request for any of the plurality of memories based on a write command from the computer; A memory read control unit that generates a read request for any of the plurality of memories based on a read command from the computer according to a priority according to a data processing state in the memory write control unit of the write data related to the write request;
  • An information processing system comprising:

Landscapes

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

Abstract

メモリに対する読出しアクセスの順序を適切に判断する。 メモリシステムは、複数のメモリと、メモリコントローラとを備える。メモリコントローラは、メモリライト制御部と、メモリリード制御部とを備える。メモリライト制御部は、コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成する。メモリリード制御部は、ライトリクエストに係るライトデータのメモリライト制御部におけるデータ処理状態に応じた優先度によって複数のメモリのいずれかに対するリードリクエストをコンピュータからのリードコマンドに基づいて生成する。

Description

メモリコントローラ、メモリシステムおよび情報処理システム
 本技術は、メモリを制御するメモリコントローラに関する。詳しくは、コンピュータから発行されたコマンドに基づいて複数のメモリに対するリクエストを生成するメモリコントローラ、メモリシステムおよび情報処理システムに関する。
 複数のメモリ(例えば、メモリバンクまたはダイ)に対するメモリアクセスについて、読出しの順序を変更することにより高速化を図る技術が知られている。例えば、コマンド発行元回路から書込み要求があった際に、コマンド履歴バッファに保持された過去のコマンド発行履歴と、新たに要求された2つ以上のコマンドとに基づいて、メモリコマンドの発行順序を変更する装置が提案されている(例えば、特許文献1参照。)。
特開2014-154119号公報
 上述の従来技術では、コマンド発行履歴および新たに要求されたコマンドに基づいてメモリコマンドの発行順序を変更している。しかしながら、ライトデータについてエラー訂正コードを生成する等の処理を要するメモリにおいては、データの処理状態によってはメモリに対する読出しアクセスの順序について適切な判断を行えないおそれがある。すなわち、複数のメモリがアイドル状態であっても、データの処理状態によってはその後のメモリの状態は異なる可能性があり、いずれのメモリに対して先にリードアクセスを行うべきかを適切に判断できない場合がある。
 本技術はこのような状況に鑑みて生み出されたものであり、メモリに対するリードアクセスの順序を適切に判断することを目的とする。
 本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、上記ライトリクエストに係るライトデータの上記メモリライト制御部におけるデータ処理状態に応じた優先度によって上記複数のメモリのいずれかに対するリードリクエストを上記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部とを具備するメモリコントローラ、そのメモリコントローラを含むメモリシステムおよび情報処理システムである。これにより、ライトデータのデータ処理状態に応じた優先度によって複数のメモリのいずれかに対してリードリクエストを要求するという作用をもたらす。
 また、この第1の側面において、上記メモリライト制御部は、上記ライトデータについてエラー訂正コードを生成するエラー訂正コード生成部と、上記複数のメモリのそれぞれに対する上記ライトデータについて上記エラー訂正コードが生成中であるか否かを示すビジー信号を上記データ処理状態として生成するビジー信号生成部とを備え、上記メモリリード制御部は、上記複数のメモリのうち上記ビジー信号が上記エラー訂正コードの生成中である旨を示しているものの上記優先度を高く設定するようにしてもよい。これにより、エラー訂正コードの生成中である旨を示しているメモリに対して優先的にリードリクエストを要求するという作用をもたらす。
 また、この第1の側面において、上記メモリライト制御部は、上記エラー訂正コードが生成された上記ライトデータを保持するデータバッファと、上記複数のメモリのそれぞれに対する上記ライトデータについて上記エラー訂正コードの生成が完了して上記データバッファに準備されているか否かを示すレディ信号を上記データ処理状態として生成するレディ信号生成部とをさらに備え、上記メモリリード制御部は、上記複数のメモリのうち上記エラー訂正コードが生成完了している旨を上記レディ信号が示しているものの上記優先度を低く設定するようにしてもよい。これにより、エラー訂正コードが生成完了しているメモリ以外に対して優先的にリードリクエストを要求するという作用をもたらす。
 また、この第1の側面において、上記メモリリード制御部は、上記コンピュータからのリードコマンドを保持するコマンドキューと、上記複数のメモリのそれぞれについて上記ライトリクエストに係るライトデータの上記メモリライト制御部における上記データ処理状態に応じた上記優先度を設定してその優先度に従って上記コマンドキューから上記複数のメモリのいずれかに対するリードコマンドを選択するリードコマンド選択部と、上記選択されたリードコマンドに基づいて上記複数のメモリのいずれかに対してリードリクエストおよびアドレスを生成して送信するメモリリクエストアドレス送信部とを備えるようにしてもよい。これにより、リードコマンド選択部が設定した優先度に従ってリードリクエストを送信するという作用をもたらす。
 本技術によれば、メモリに対する読出しアクセスの順序を適切に判断することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における情報処理システムの一構成例を示す図である。 本技術の実施の形態におけるメモリコントローラ200の一構成例を示す図である。 本技術の第1の実施の形態におけるメモリ制御エンジン201の信号線の一例を示す図である。 本技術の第1の実施の形態におけるメモリ制御部(メモリライト制御部)250-2の構成例を示す図である。 本技術の第1の実施の形態におけるメモリ制御部(メモリリード制御部)250-1の構成例を示す図である。 本技術の第1の実施の形態のリードコマンド選択部254-1によるリードコマンドに対する優先度の付与規則例を示す図である。 本技術のリードコマンド選択部254-1によるリードコマンドの選択処理手順の一例を示す流れ図である。 本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミングを説明するための比較例である。 本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミング例である。 本技術の第2の実施の形態におけるメモリ制御エンジン202の信号線の一例を示す図である。 本技術の第2の実施の形態におけるメモリ制御部(メモリライト制御部)250-2の構成例を示す図である。 本技術の第2の実施の形態におけるメモリ制御部(メモリリード制御部)250-1の構成例を示す図である。 本技術の第2の実施の形態のリードコマンド選択部254-1によるリードコマンドに対する優先度の付与規則例を示す図である。 本技術の第2の実施の形態におけるメモリコントローラ200の動作タイミングを説明するための比較例である。 本技術の第2の実施の形態におけるメモリコントローラ200の動作タイミング例である。
 以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
 1.第1の実施の形態(ライトデータ準備中のメモリダイに対するリードコマンドに高い優先度を付与する例)
 2.第2の実施の形態(ライトデータ準備完了のメモリダイに対するリードコマンドに低い優先度を付与する例)
 <1.第1の実施の形態>
 [情報処理システムの構成]
 図1は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ100と、メモリコントローラ200と、メモリ300とから構成される。メモリコントローラ200およびメモリ300はメモリシステム400を構成する。
 ホストコンピュータ100は、メモリ300に対してデータのリード処理およびライト処理等を指令するコマンドを発行するものである。このホストコンピュータ100は、ホストコンピュータ100としての処理を実行する(図示しない)プロセッサと、メモリコントローラ200との間のやりとりを行うための(図示しない)コントローラインターフェースとを備える。また、ホストコンピュータ100は、一般的にはデータバッファを備える。ホストコンピュータ100とメモリコントローラ200との間は信号線109により接続される。なお、ホストコンピュータ100は、特許請求の範囲に記載のコンピュータの一例である。
 メモリコントローラ200は、ホストコンピュータ100からのコマンドに従って、メモリ300に対するリクエスト制御を行うものである。メモリコントローラ200とメモリ300との間は信号線309により接続される。
 メモリ300は、(図示しない)制御部およびメモリセルアレイを備える。このメモリ300の制御部は、メモリコントローラ200からのリクエストに従ってメモリセルへのアクセスを行う。メモリ300のメモリセルアレイは、複数のメモリセルからなるメモリセルアレイであり、ビット毎に2値の何れかの値を記憶するメモリセル、または、複数ビット毎に多値の何れかの値を記憶するメモリセルが2次元状(マトリクス状)に多数配列されている。このメモリセルアレイは、複数バイトサイズを有するページを読出しまたは書込みのアクセス単位とし、消去することなくデータの上書きが可能な不揮発性メモリ(NVM:Non-Volatile Memory)を想定する。また、メモリ300は、複数の不揮発性メモリ(ダイまたはチップ等)からなり、それぞれ独立してアクセスが可能であることを想定する。
 [メモリコントローラの構成]
 図2は、本技術の実施の形態におけるメモリコントローラ200の一構成例を示す図である。このメモリコントローラ200は、ストレージインターフェース制御部210と、プロセッサ230と、RAM240と、メモリ制御エンジン201とを備え、これらの間はI/Oバス220によって相互に接続される。
 ストレージインターフェース制御部210は、信号線109を介してホストコンピュータ100と接続し、ホストコンピュータ100との間のやりとりを行うものである。このストレージインターフェース制御部210は、具体的には、USB、SATAやPCIeなどの広くストレージ向けのインターフェースとして使用される汎用バスを含む。このストレージインターフェース制御部210の機能としては、ホストコンピュータ100からの複数のコマンドを同時に受信可能なコマンドキューイングをサポートする。これにより、メモリ300に対してアクセスするためのリクエストをランダムに送信して、リードアクセスおよびライトアクセスを行う。
 プロセッサ230は、メモリコントローラ200の動作に必要な処理を行うものである。RAM240は、メモリコントローラ200の動作に必要なデータ等を記憶するメモリである。このRAM240は、データバッファとしても利用される。メモリ制御エンジン201は、メモリ300に対するリクエスト制御を行うものである。
 メモリ制御エンジン201は、2つのメモリ制御部250-1および250-2と、接続切換部260と、メモリインターフェース制御部270とを備えている。
 メモリ制御部250-1および250-2(以下、メモリ制御部250と総称する場合がある。)は、各々が独立してメモリ300に対するリクエスト制御を行うものである。メモリ制御部250-1は、メモリ300に対するリードリクエストを制御する(以下、「メモリリード制御部」と呼称する場合がある。)。メモリ制御部250-2は、メモリ300に対するライトリクエストを制御する(以下、「メモリライト制御部」と呼称する場合がある。)。メモリ制御部250-1は、信号線229-1を介してI/Oバス220と接続し、信号線269-1を介して接続切換部260と接続する。メモリ制御部250-2は、信号線229-2を介してI/Oバス220と接続し、信号線269-2を介して接続切換部260と接続する。以下、信号線229-1および229-2を信号線229と総称する場合がある。また、信号線269-1および269-2を信号線269と総称する場合がある。
 接続切換部260は、メモリ制御部250-1および250-2の何れかをメモリ300に接続するよう切換えを行うものである。メモリインターフェース制御部270は、信号線279を介して接続切換部260に接続し、メモリ300との間のやりとりを行うものである。
 なお、I/Oバス220の帯域は、メモリ300のリードおよびライトの帯域よりも大きいことが前提である。したがって、メモリ300の性能がメモリシステム400の性能を律速することを想定する。
 図3は、本技術の第1の実施の形態におけるメモリ制御エンジン201の信号線の一例を示す図である。
 メモリ制御部250とI/Oバス220との間の信号線229は、コマンド信号線、データ信号線および結果信号線を含む。また、メモリ制御部250と接続切換部260との間の信号線269は、接続要求信号線、リクエストアドレス(Req/Adr)信号線、データ(Data)信号線、および、ビジーステータス1、2(Busy/Status1、2)信号線を含む。また、接続切換部260とメモリインターフェース制御部270との間の信号線279は、リクエストアドレス(Req/Adr)信号線、データ(Data)信号線、および、ビジーステータス(Busy/Status)信号線を含む。
 ストレージインターフェース制御部210は、ホストコンピュータ100から発行されたコマンドを、そのコマンドに応じて2つのメモリ制御部250-1または250-2のいずれかに供給する。メモリ制御部250の各々は、ホストコンピュータ100から発行されたコマンドを受け取り、それぞれ独立してメモリ300に対するリクエストを生成して制御を行う。これにより、メモリ制御部250を並行して動作させて、メモリインターフェース制御部270上で待ち時間が発生することを抑止する。
 メモリ制御エンジン201は、2つのメモリダイ#1(301)およびメモリダイ#2(302)と信号線309を介して接続する。メモリダイ#1および#2のいずれにアクセスするかは、メモリインターフェース制御部270からのチップセレクト信号CS1およびCS2により指示される。上述のビジーステータス1(Busy/Status1)信号線はメモリダイ#1のビジーステータスを示し、ビジーステータス2(Busy/Status2)信号線は、メモリダイ#2のビジーステータスを示す。
 上述のように、メモリ制御部250-1はメモリ300に対するリードリクエストを制御し、メモリ制御部250-2はメモリ300に対するライトリクエストを制御する。メモリ制御部250-2は、ライトデータについてデータ処理を行う。ここで、データ処理としては、例えば、ライトデータについてエラー訂正コード(ECC:Error Correcting Code)を生成する処理を想定するが、暗号化などの他の処理であってもよい。メモリ制御部250-2は、信号「enc_busy1」および信号「enc_busy2」をメモリ制御部250-1に出力する。信号「enc_busy1」は、メモリダイ#1に対するライトリクエストに係るライトデータのエラー訂正コードが生成中であるか否かを示す。エラー訂正コードが生成中であれば「ビジー状態」を示し、エラー訂正コードが生成中でなければ「アイドル状態」を示す。同様に、信号「enc_busy2」は、メモリダイ#2に対するライトリクエストに係るライトデータのエラー訂正コードが生成中であるか否かを示す。
 メモリ制御部250-1および250-2の各々は、メモリダイ#1および#2に対して並行してリクエスト制御を行うことができる。すなわち、メモリ制御部250-1がリードリクエストをメモリダイ#1および#2の一方に対して実行した後に、接続切換部260に対する要求信号を終了し、直ちにメモリ制御部250-2がライトリクエストをメモリダイ#1および#2の他方に対して実行可能である。
 そのために、メモリ制御部250は、メモリインターフェース制御部270からのBusy/Status信号を、メモリダイ#1および#2の各々について受信して管理するようになっている。メモリ制御部250は、書込みの完了を示すステータス情報をメモリダイ#1および#2から受信した際には、書込みビジー情報をクリアする。書込みビジー状態であるメモリダイ#1および#2に対しては、次の書込みリクエストを送信しない。また、メモリ制御部250は、書込みビジー状態であるメモリダイ#1および#2に対してステータス情報を確認するため、接続切換部260に接続要求を出力し、ステータス情報を確認後、その接続要求を停止する。
 なお、メモリダイ#1および#2は、特許請求の範囲に記載のメモリの一例である。
 図4は、本技術の第1の実施の形態におけるメモリ制御部(メモリライト制御部)250-2の構成例を示す図である。このメモリ制御部250-2は、デコーダ252-2と、メモリリクエストアドレス送信部253-2と、バスデータ受信部254-2と、エラー訂正コード生成部255-2と、メモリデータ送信部257-2と、ビジー信号生成部258-2とを備える。
 デコーダ252-2は、ホストコンピュータ100から発行されたコマンドを解釈するデコーダである。デコード結果として、例えば、ライトコマンドがメモリダイ#1に対するものである場合に信号「die1_sel」がアサートされ、ライトコマンドがメモリダイ#2に対するものである場合に信号「die2_sel」がアサートされるものとする。
 メモリリクエストアドレス送信部253-2は、デコーダ252-2によるデコード結果に従って、メモリ300に対してリクエストおよびアドレスを送信するものである。このメモリリクエストアドレス送信部253-2は、リクエストおよびアドレスを送信する際に、これに先立って接続切換部260に対して接続要求を出力する。
 バスデータ受信部254-2は、I/Oバス220からライトデータを受信して、エラー訂正コード生成部255-2に供給するものである。
 エラー訂正コード生成部255-2は、バスデータ受信部254-2が受信したライトデータについてエラー訂正コード(ECC)を生成するものである。このエラー訂正コード生成部255-2は、バスデータ受信部254-2から供給されたライトデータについてエラー訂正コードを生成中である場合に信号「enc_busy」をアサートする。すなわち、信号「enc_busy」は、エラー訂正コードを生成中であれば「ビジー状態」を示し、生成中でなければ「アイドル状態」を示す。
 メモリデータ送信部257-2は、ライトデータおよびエラー訂正コードをメモリ300に送信するものである。
 ビジー信号生成部259-2は、メモリダイ#1および#2の各々について、ライトリクエストに係るライトデータのエラー訂正コードが生成中であるか否かを示すビジー信号を生成するものである。すなわち、信号「enc_busy」が「ビジー状態」を示している場合、信号「die1_sel」がアサートされていれば信号「enc_busy1」を「ビジー状態」とし、信号「enc_busy2」を「アイドル状態」とする。また、この場合、信号「die2_sel」がアサートされていれば信号「enc_busy2」を「ビジー状態」とし、信号「enc_busy1」を「アイドル状態」とする。一方、信号「enc_busy」が「アイドル状態」を示している場合、信号「enc_busy1」および「enc_busy2」をともに「アイドル状態」とする。
 図5は、本技術の第1の実施の形態におけるメモリ制御部(メモリリード制御部)250-1の構成例を示す図である。このメモリ制御部250-1は、コマンドキュー251-1と、デコーダ252-1と、メモリリクエストアドレス送信部253-1と、リードコマンド選択部254-1とを備える。また、このメモリ制御部250-1は、メモリデータ受信部256-1と、エラー検出訂正部257-1と、バスデータ送信部258-1とを備える。
 コマンドキュー251-1は、ホストコンピュータ100から発行されたリードコマンドを保持するメモリである。このコマンドキュー251-1は、メモリダイ#1および#2のそれぞれに対応して、メモリダイ#1および#2毎にFIFO(先入れ先出し)方式によりリードコマンドを保持する。そして、このコマンドキュー251-1は、メモリダイ#1に対するリードコマンドが保持されていれば信号「rcommand1」をアサートし、メモリダイ#2に対するリードコマンドが保持されていれば信号「rcommand2」をアサートする。リードコマンドはメモリダイ#1および#2毎に管理されるため、信号「rcommand1」および信号「rcommand2」が同時にアサートされることもあり得る。
 デコーダ252-1は、デコーダ252-2と同様に、ホストコンピュータ100から発行されたコマンドを解釈するデコーダである。メモリリクエストアドレス送信部253-1は、メモリリクエストアドレス送信部253-2と同様に、デコーダ252-1によるデコード結果に従って、メモリ300に対してリクエストおよびアドレスを送信するものである。
 メモリデータ受信部256-1は、メモリ300から読み出したリードデータおよびエラー訂正コードを受信するものである。エラー検出訂正部257-1は、メモリデータ受信部256-1が受信したリードデータについて、エラー訂正コードによるエラー検出およびエラー訂正を行うものである。バスデータ送信部258-1は、エラー検出訂正部257-1から出力されたリードデータをI/Oバス220に送信するものである。
 リードコマンド選択部254-1は、コマンドキュー251-1に保持されたリードコマンドのうち、いずれのリードコマンドを取り出してデコーダ252-1に供給すべきかを選択するものである。このリードコマンド選択部254-1には、信号「enc_busy1」、信号「enc_busy2」、信号「die_busy1」、信号「die_busy2」、信号「rcommand1」および信号「rcommand2」が入力される。信号「enc_busy1」および信号「enc_busy2」は、上述のように、ビジー信号生成部258-2が生成するビジー信号であり、メモリダイ#1および#2毎にエラー訂正コードが生成中であるか否かを示す。信号「die_busy1」および信号「die_busy2」は、メモリダイ#1および#2のBusy/Status信号の一部であり、メモリダイ#1および#2毎にビジー状態にあるか否かを示す。信号「rcommand1」および信号「rcommand2」は、コマンドキュー251-1に保持されたリードコマンドが存在するか否かをメモリダイ#1および#2毎に示す。リードコマンド選択部254-1は、これら入力された信号に基づいて、メモリダイ#1および#2毎に優先度を生成する。
 そして、リードコマンド選択部254-1は、その生成した優先度に従って、メモリダイ#1および#2のいずれかに対応するコマンドをコマンドキュー251-1から取り出すための制御信号を生成する。すなわち、メモリダイ#1に対応するコマンドを取り出す場合には、信号「fetch1」をアサートする。一方、メモリダイ#2に対応するコマンドを取り出す場合には、信号「fetch2」をアサートする。なお、いずれのコマンドも取り出さない場合には、信号「fetch1」および信号「fetch2」のいずれもアサートしない。コマンドキュー251-1は、リードコマンド選択部254-1から供給された信号「fetch1」および信号「fetch2」に従って、メモリダイ#1および#2のいずれかに対応するコマンドをデコーダ252-1に供給する。
 [メモリコントローラの動作内容]
 図6は、本技術の第1の実施の形態のリードコマンド選択部254-1によるリードコマンドに対する優先度の付与規則例を示す図である。
 ここでは、メモリダイ#1および#2のそれぞれに関する優先度を個別に扱っている。したがって、メモリダイ#1に対するリードコマンドがコマンドキュー251-1に存在するか否かは信号「rcommand1」により判断する。そして、メモリダイ#2に対するリードコマンドがコマンドキュー251-2に存在するか否かは信号「rcommand2」により判断する。同様に、メモリダイ#1がビジー状態にあるか否かは信号「die_busy1」により判断し、メモリダイ#2がビジー状態にあるか否かは信号「die_busy2」により判断する。
 また、メモリダイ#1に対するライトデータが準備中か否かは信号「enc_busy1」により判断し、メモリダイ#2に対するライトデータが準備中か否かは信号「enc_busy2」により判断する。すなわち、この第1の実施の形態では、ライトデータのデータ処理状態として、メモリダイに対するライトデータが準備中か否かを判断基準とする。
 なお、以下の説明では、優先度を付与するコマンドの対象となるメモリダイを「対象メモリダイ」と称する。また、コマンドキュー251-1および251-2をコマンドキュー251と総称する。
 対象メモリダイに対するリードコマンドがコマンドキュー251に存在する場合、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中でなければ、優先度は「中」となる。一方、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中であれば、優先度は「高」となる。すなわち、対象メモリダイにおいてライトデータが準備中であれば、その対象メモリダイにおける後続のリードコマンドの優先度を通常よりも高く設定するものである。これは、対象メモリダイにおいてライトデータが準備中であれば、近いうちにライトアクセスが開始されることが予想されるため、それまでの間に対象メモリダイにおける後続のリードアクセスを先に進めておくことを意図したものである。
 対象メモリダイに対するリードコマンドがコマンドキュー251に存在する場合であっても、対象メモリダイがビジー状態であれば、そのリードコマンドは選択対象外であるため、優先度は付与しない。同様に、対象メモリダイに対するリードコマンドがコマンドキュー251に存在しない場合には、対象となるリードコマンドが存在しないことになるため、優先度は付与しない。
 図7は、本技術のリードコマンド選択部254-1によるリードコマンドの選択処理手順の一例を示す流れ図である。
 まず、リードコマンド選択部254-1は、メモリダイ#1を対象メモリダイとして、上述の付与規則に従ってリードコマンドに優先度を付与する(ステップS911)。そして、リードコマンド選択部254-1は、メモリダイ#2を対象メモリダイとして、上述の付与規則に従ってリードコマンドに優先度を付与する(ステップS912)。
 その結果、リードコマンド選択部254-1は、メモリダイ#1に対するリードコマンドの優先度とメモリダイ#2に対するリードコマンドの優先度とを比較する(ステップS913)。前者の優先度の方が後者の優先度よりも高い場合、または、両者が等しい場合には(ステップS913:Yes)、リードコマンド選択部254-1は、メモリダイ#1に対するリードコマンドを選択する(ステップS914)。
 一方、メモリダイ#2に対するリードコマンドの優先度の方が高い場合には(ステップS915:Yes)、リードコマンド選択部254-1は、メモリダイ#2に対するリードコマンドを選択する(ステップS916)。
 それ以外の場合には、いずれのリードコマンドにも優先度が付与されていないことになるため、リードコマンド選択部254-1は、コマンドキュー251からのリードコマンド選択を行わない(ステップS917)。
 [メモリコントローラの動作タイミング]
 図8は、本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミングを説明するための比較例である。この例では、ホストコンピュータ100から、メモリダイ#1に対するライトコマンドC1、メモリダイ#2に対するリードコマンドC2、メモリダイ#1に対するリードコマンドC3の順に、各コマンドが発行された例を示している。
 ライトコマンドC1が発行されると、メモリライト制御部250-2は、エラー訂正コード生成部255-2においてエラー訂正コードの生成を開始する。その後、リードコマンドC2およびC3が発行される。この比較例では、メモリリード制御部250-1においてコマンドの並び替えを行わないことを想定しているため、メモリリード制御部250-1は、先にリードコマンドC2に関するリクエストをメモリダイ#2に要求する。次に、メモリリード制御部250-1は、リードコマンドC3に関するリクエストをメモリダイ#1に要求する。
 メモリダイ#1においては、リードコマンドC3に関するリクエストが完了するまでビジー状態が続くため、その間、ライトコマンドC1に関するリクエストの要求は待たされる。リードコマンドC3に関するリクエストが完了した後に、ライトコマンドC1に関するリクエストがライトデータおよびそのエラー訂正コードとともにメモリダイ#1に送信される。そのライトコマンドの結果はメモリコントローラ200に返送され、さらにホストコンピュータ100に通知される。
 すなわち、この比較例では、リードコマンドC2に関するリクエストによってリードコマンドC3に関するリクエストが遅れ、このリードコマンドC3に関するリクエストの完了によってライトコマンドC1に関するリクエストの要求が待たされている。したがって、リードコマンドC2に関するリクエストよりもリードコマンドC3に関するリクエストを先に処理すれば、ライトコマンドC1に関するリクエストの待ちは軽減されることがわかる。
 図9は、本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミング例である。ここでは、図8の例と同様のコマンド順序を想定するが、メモリリード制御部250-1においてコマンドの並び替えを行うことにより、処理終了までの時間が短縮されることを示す。
 ライトコマンドC1が発行されて、メモリライト制御部250-2がエラー訂正コード生成部255-2においてエラー訂正コードの生成を開始する点については、上述の例と同様である。次に、コマンドキュー251に保持されているリードコマンドを選択する際に、メモリリード制御部250-1は、それぞれのリードコマンドに優先度を付与する。このとき、メモリダイ#1および#2はアイドル状態である。また、メモリダイ#1においては、エラー訂正コードの生成がされているため、メモリダイ#1に対するリードコマンドC3の優先度は「高」に設定される。一方、メモリダイ#2においては、エラー訂正コードの生成はされていないため、メモリダイ#2に対するリードコマンドC2の優先度は「中」に設定される。
 メモリリード制御部250-1は、メモリダイ#1に対するリードコマンドC3とメモリダイ#2に対するリードコマンドC2の優先度を比較して、優先度の高いリードコマンドC3を先に選択して、メモリダイ#1に対してリードリクエストを要求する。次に、メモリリード制御部250-1は、もう一方のリードコマンドC2を選択して、メモリダイ#2に対してリードリクエストを要求する。
 メモリダイ#1においては、リードコマンドC3に関するリクエストが完了するまでビジー状態が続くため、その間、ライトコマンドC1に関するリクエストの要求は、上述の例と同様に待たされる。ただし、この第1の実施の形態においては、リードコマンドC3に関するリクエストがリードコマンドC2に関するリクエストよりも先に処理されているため、リードコマンドC3に関するリクエストの完了タイミングは早い。したがって、ライトコマンドC1に関するリクエストの待ちは軽減され、結果として、上述の例よりも処理終了までの時間が短縮される。
 このように、本技術の第1の実施の形態では、ライトデータが準備中のメモリダイにおいてはある程度の時間が経過した後にライトアクセスが開始されるものと推定し、そのメモリダイにおける後続のリードコマンドに高い優先度を付与する。これにより、ライトアクセスが開始されるまでの間にそのメモリダイにおける後続のリードアクセスを先に進めて、全体の処理終了までの時間を短縮することができる。
 <2.第2の実施の形態>
 上述の第1の実施の形態では、ライトデータが準備中のメモリダイにおける後続のリードアクセスを優先して行うことを想定した。この第2の実施の形態では、これに加えて、ライトデータの準備が完了している状態であれば、逆に後続のリードアクセスの優先度を低く設定することを想定する。なお、情報処理システムとしての全体構成は上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
 [メモリコントローラの構成]
 図10は、本技術の第2の実施の形態におけるメモリ制御エンジン202の信号線の一例を示す図である。この第2の実施の形態のメモリ制御エンジン202では、メモリ制御部250-2からメモリ制御部250-1に対して、信号「data_ready1」および信号「data_ready2」を供給する点において、上述の第1の実施の形態と異なる。その他の点については、図3により説明したメモリ制御エンジン201と同様である。
 信号「data_ready1」は、メモリダイ#1に対するライトリクエストに係るライトデータのエラー訂正コードの生成が完了しているか否かを示す。エラー訂正コードが生成完了していれば「完了状態」を示し、エラー訂正コードが生成完了していなければ「未了状態」を示す。同様に、信号「data_ready2」は、メモリダイ#2に対するライトリクエストに係るライトデータのエラー訂正コードの生成が完了しているか否かを示す。
 図11は、本技術の第2の実施の形態におけるメモリ制御部(メモリライト制御部)250-2の構成例を示す図である。この第2の実施の形態のメモリ制御部250-2は、上述の第1の実施の形態に加え、データバッファ256-2およびレディ信号生成部259-2を備える。
 データバッファ256-2は、ライトデータとともにエラー訂正コード生成部255-2によって生成されたデータ訂正コードを保持するバッファである。このデータバッファ256-2を備えることにより、対応するメモリダイがビジー状態であってもデータバッファ256-2に空きがあれば、エラー訂正コード生成部255-2はデータ訂正コードを生成することが可能となる。このデータバッファ256-2は、データ訂正コードの生成が完了して、ライトデータおよびデータ訂正コードが保持されている場合に、信号「data_ready」を、「完了状態」にする。この信号「data_ready」が「完了状態」を示している場合には、ライトリクエストをすぐにでも要求することができるよう準備が完了していることを意味する。
 レディ信号生成部259-2は、メモリダイ#1および#2の各々について、ライトリクエストに係るライトデータのエラー訂正コードの生成が完了しているか否かを示すレディ信号を生成するものである。すなわち、信号「data_ready」が「完了状態」を示している場合、信号「die1_sel」がアサートされていれば信号「data_ready1」を「完了状態」とし、信号「data_ready2」を「未完了状態」とする。また、この場合、信号「die2_sel」がアサートされていれば信号「data_ready2」を「完了状態」とし、信号「data_ready1」を「未完了状態」とする。一方、信号「data_ready」が「未完了状態」を示している場合、信号「data_ready1」および「data_ready2」をともに「未完了状態」とする。
 図12は、本技術の第2の実施の形態におけるメモリ制御部(メモリリード制御部)250-1の構成例を示す図である。この第2の実施の形態のメモリ制御部250-1は、リードコマンド選択部254-1が、信号「data_ready1」および信号「data_ready2」をさらに受ける点において、上述の第1の実施の形態と異なる。
 リードコマンド選択部254-1は、上述の第1の実施の形態と同様に、コマンドキュー251-1に保持されたリードコマンドのうち、いずれのリードコマンドを取り出してデコーダ252-1に供給すべきかを選択する。その際、この第2の実施の形態のリードコマンド選択部254-1は、データバッファ256-2から供給された信号「data_ready1」および信号「data_ready2」の状態を加味する点において、上述の第1の実施の形態と異なる。
 [メモリコントローラの動作内容]
 図13は、本技術の第2の実施の形態のリードコマンド選択部254-1によるリードコマンドに対する優先度の付与規則例を示す図である。
 ここでは、上述の第1の実施の形態と同様に、メモリダイ#1および#2のそれぞれに関する優先度を個別に扱っている。上述の信号に加え、メモリダイ#1に対するライトデータの準備が完了しているか否かは信号「data_ready1」により判断し、メモリダイ#2に対するライトデータの準備が完了しているか否かは信号「data_ready2」により判断する。すなわち、この第2の実施の形態では、ライトデータのデータ処理状態として、メモリダイに対するライトデータが準備中か否か、および、その準備が完了しているか否かを判断基準とする。
 対象メモリダイに対するリードコマンドがコマンドキュー251に存在する場合、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中でもなく準備完了もしていなければ、優先度は「中」となる。また、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中であれば、優先度は「高」となる。これについては上述の第1の実施の形態と同様である。
 これに加え、この第2の実施の形態では、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータの準備が完了していれば、優先度は「低」となる。すなわち、対象メモリダイにおいてライトデータの準備が完了していれば、その対象メモリダイにおける後続のリードコマンドの優先度を通常よりも低く設定するものである。これは、対象メモリダイにおいてライトデータの準備が完了していれば、すぐにでもライトアクセスが開始されてビジー状態になることが予想されるため、対象メモリダイ以外のリードアクセスを優先することを意図したものである。
 なお、上述の第1の実施の形態と同様に、対象メモリダイに対するリードコマンドがコマンドキュー251に存在する場合であっても、対象メモリダイがビジー状態であれば、そのリードコマンドは選択対象外であるため、優先度は付与しない。同様に、対象メモリダイに対するリードコマンドがコマンドキュー251に存在しない場合には、対象となるリードコマンドが存在しないことになるため、優先度は付与しない。
 リードコマンド選択部254-1は、このようにして設定した優先度に従って、リードコマンドを選択する。この第2の実施の形態におけるリードコマンド選択部254-1のリードコマンドの選択処理手順は、図7において説明した上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
 [メモリコントローラの動作タイミング]
 図14は、本技術の第2の実施の形態におけるメモリコントローラ200の動作タイミングを説明するための比較例である。この例では、ホストコンピュータ100から、メモリダイ#1に対するライトコマンドC4、メモリダイ#1に対するリードコマンドC5、メモリダイ#2に対するリードコマンドC6の順に、各コマンドが発行された例を示している。また、ライトコマンドC4の前には、メモリダイ#1および#2は他のリクエストによって既にビジー状態になっていることを想定する。
 ライトコマンドC4が発行されると、メモリライト制御部250-2は、エラー訂正コード生成部255-2においてエラー訂正コードの生成を開始する。その後、リードコマンドC5およびC6が発行される。この比較例では、メモリリード制御部250-1においてコマンドの並び替えを行わないことを想定しているため、メモリリード制御部250-1は、ライトコマンドC4に関するライトアクセスの終了を待って、リードコマンドC5に関するリクエストをメモリダイ#1に要求する。そして、メモリリード制御部250-1は、次にリードコマンドC6に関するリクエストをメモリダイ#2に要求する。
 この比較例では、リードコマンドC5に関するリクエストの送信を待って、リードコマンドC6に関するリクエストを送信しているため、メモリダイ#2がアイドル状態であるのにもかかわらず、リードコマンドC6に関するリクエストが待たされている。したがって、リードコマンドC5に関するリクエストよりもリードコマンドC6に関するリクエストを先に処理すれば、処理終了までの時間が短縮されることがわかる。
 図15は、本技術の第2の実施の形態におけるメモリコントローラ200の動作タイミング例である。ここでは、図14の例と同様のコマンド順序を想定するが、メモリリード制御部250-1においてコマンドの並び替えを行うことにより、処理終了までの時間が短縮されることを示す。
 ライトコマンドC4が発行されて、メモリライト制御部250-2がエラー訂正コード生成部255-2においてエラー訂正コードの生成を開始する点については、上述の例と同様である。ただし、この時点ではメモリダイ#1および#2はともにビジー状態となっているため、メモリリード制御部250-1はいずれのリードコマンドにも優先度を付与しない。その後、ライトコマンドC4に関するライトデータおよびエラー訂正コードは、データバッファ256-2に保持される。
 メモリダイ#1および#2がアイドル状態になると、メモリリード制御部250-1はリードコマンドC5およびC6に優先度を付与する。すなわち、メモリダイ#1については、ライトコマンドC4に関するエラー訂正コードが生成完了し、信号「data_ready1」が「完了状態」を示しているため、リードコマンドC5の優先度は「低」に設定される。また、メモリダイ#2については、エラー訂正コードの生成はされておらず、信号「enc_busy2」が「準備なし」を示しているため、リードコマンドC6の優先度は「中」に設定される。
 メモリリード制御部250-1は、メモリダイ#1に対するリードコマンドC5とメモリダイ#2に対するリードコマンドC6の優先度を比較して、優先度の高いリードコマンドC6を先に選択して、メモリダイ#2に対してリードリクエストを要求する。その後、メモリリード制御部250-1は、メモリダイ#1におけるライトコマンドC4に関するライトアクセスが完了した後、もう一方のリードコマンドC5を選択して、メモリダイ#1に対してリードリクエストを要求する。
 これにより、メモリダイ#1におけるライトコマンドC4に関するライトアクセスと、メモリダイ#2におけるリードコマンドC6に関するリードアクセスとが並行して実行されるため、全体の処理終了までの時間が短縮される。
 このように、本技術の第2の実施の形態では、ライトデータの準備が完了している状態であれば、対応するメモリダイに対してライトリクエストがすぐに要求されると推定し、そのメモリダイにおける後続のリードコマンドには低い優先度を付与する。これにより、他のメモリダイにおけるリードアクセスを先に進めて、全体の処理終了までの時間を短縮することができる。
 なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
 また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
 なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
 なお、本技術は以下のような構成もとることができる。
(1)コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
 前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備するメモリコントローラ。
(2)前記メモリライト制御部は、
 前記ライトデータについてエラー訂正コードを生成するエラー訂正コード生成部と、
 前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードが生成中であるか否かを示すビジー信号を前記データ処理状態として生成するビジー信号生成部とを備え、
 前記メモリリード制御部は、前記複数のメモリのうち前記ビジー信号が前記エラー訂正コードの生成中である旨を示しているものの前記優先度を高く設定する
前記(1)に記載のメモリコントローラ。
(3)前記メモリライト制御部は、前記エラー訂正コードが生成された前記ライトデータを保持するデータバッファと、
 前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードの生成が完了して前記データバッファに準備されているか否かを示すレディ信号を前記データ処理状態として生成するレディ信号生成部とをさらに備え、
 前記メモリリード制御部は、前記複数のメモリのうち前記エラー訂正コードが生成完了している旨を前記レディ信号が示しているものの前記優先度を低く設定する
前記(2)に記載のメモリコントローラ。
(4)前記メモリリード制御部は、
 前記コンピュータからのリードコマンドを保持するコマンドキューと、
 前記複数のメモリのそれぞれについて前記ライトリクエストに係るライトデータの前記メモリライト制御部における前記データ処理状態に応じた前記優先度を設定してその優先度に従って前記コマンドキューから前記複数のメモリのいずれかに対するリードコマンドを選択するリードコマンド選択部と、
 前記選択されたリードコマンドに基づいて前記複数のメモリのいずれかに対してリードリクエストおよびアドレスを生成して送信するメモリリクエストアドレス送信部とを備える
前記(1)から(3)のいずれかに記載のメモリコントローラ。
(5)複数のメモリと、
 コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
 前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備するメモリシステム。
(6)複数のメモリと、
 コンピュータと、
 前記コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
 前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備する情報処理システム。
 100 ホストコンピュータ
 200 メモリコントローラ
 201、202 メモリ制御エンジン
 210 ストレージインターフェース制御部
 220 I/Oバス
 230 プロセッサ
 240 RAM
 250-1 メモリ制御部(メモリリード制御部)
 250-2 メモリ制御部(メモリライト制御部)
 251-1 コマンドキュー
 252-1、252-2 デコーダ
 253-1、253-2 メモリリクエストアドレス送信部
 254-1 リードコマンド選択部
 254-2 バスデータ受信部
 255-2 エラー訂正コード生成部
 256-1 メモリデータ受信部
 256-2 データバッファ
 257-1 エラー検出訂正部
 257-2 メモリデータ送信部
 258-1 バスデータ送信部
 258-2 ビジー信号生成部
 259-2 レディ信号生成部
 260 接続切換部
 270 メモリインターフェース制御部
 300 メモリ
 301、302 メモリダイ
 400 メモリシステム

Claims (6)

  1.  コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
     前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
    を具備するメモリコントローラ。
  2.  前記メモリライト制御部は、
     前記ライトデータについてエラー訂正コードを生成するエラー訂正コード生成部と、
     前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードが生成中であるか否かを示すビジー信号を前記データ処理状態として生成するビジー信号生成部とを備え、
     前記メモリリード制御部は、前記複数のメモリのうち前記ビジー信号が前記エラー訂正コードの生成中である旨を示しているものの前記優先度を高く設定する
    請求項1記載のメモリコントローラ。
  3.  前記メモリライト制御部は、
     前記エラー訂正コードが生成された前記ライトデータを保持するデータバッファと、
     前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードの生成が完了して前記データバッファに準備されているか否かを示すレディ信号を前記データ処理状態として生成するレディ信号生成部とをさらに備え、
     前記メモリリード制御部は、前記複数のメモリのうち前記エラー訂正コードが生成完了している旨を前記レディ信号が示しているものの前記優先度を低く設定する
    請求項2記載のメモリコントローラ。
  4.  前記メモリリード制御部は、
     前記コンピュータからのリードコマンドを保持するコマンドキューと、
     前記複数のメモリのそれぞれについて前記ライトリクエストに係るライトデータの前記メモリライト制御部における前記データ処理状態に応じた前記優先度を設定してその優先度に従って前記コマンドキューから前記複数のメモリのいずれかに対するリードコマンドを選択するリードコマンド選択部と、
     前記選択されたリードコマンドに基づいて前記複数のメモリのいずれかに対してリードリクエストおよびアドレスを生成して送信するメモリリクエストアドレス送信部とを備える
    請求項1記載のメモリコントローラ。
  5.  複数のメモリと、
     コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
     前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
    を具備するメモリシステム。
  6.  複数のメモリと、
     コンピュータと、
     前記コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
     前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
    を具備する情報処理システム。
PCT/JP2017/015412 2016-06-29 2017-04-17 メモリコントローラ、メモリシステムおよび情報処理システム WO2018003244A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/311,100 US11029881B2 (en) 2016-06-29 2017-04-17 Memory controller, memory system, and information processing system
JP2018524909A JP6992750B2 (ja) 2016-06-29 2017-04-17 メモリコントローラ、メモリシステムおよび情報処理システム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016129012 2016-06-29
JP2016-129012 2016-06-29

Publications (1)

Publication Number Publication Date
WO2018003244A1 true WO2018003244A1 (ja) 2018-01-04

Family

ID=60785333

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/015412 WO2018003244A1 (ja) 2016-06-29 2017-04-17 メモリコントローラ、メモリシステムおよび情報処理システム

Country Status (3)

Country Link
US (1) US11029881B2 (ja)
JP (1) JP6992750B2 (ja)
WO (1) WO2018003244A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556420B2 (en) * 2021-04-06 2023-01-17 Macronix International Co., Ltd. Managing error correction coding in memory systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000067574A (ja) * 1998-08-21 2000-03-03 Mitsubishi Electric Corp 半導体記憶装置
JP2005525652A (ja) * 2002-05-14 2005-08-25 マイクロン テクノロジー インコーポレイテッド アウトオブオーダdramシーケンサ
WO2013014841A1 (ja) * 2011-07-22 2013-01-31 パナソニック株式会社 データ処理装置およびデータ処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014154119A (ja) 2013-02-14 2014-08-25 Ricoh Co Ltd メモリ制御装置及び半導体記憶装置
US9442662B2 (en) * 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000067574A (ja) * 1998-08-21 2000-03-03 Mitsubishi Electric Corp 半導体記憶装置
JP2005525652A (ja) * 2002-05-14 2005-08-25 マイクロン テクノロジー インコーポレイテッド アウトオブオーダdramシーケンサ
WO2013014841A1 (ja) * 2011-07-22 2013-01-31 パナソニック株式会社 データ処理装置およびデータ処理方法

Also Published As

Publication number Publication date
US20200310681A1 (en) 2020-10-01
US11029881B2 (en) 2021-06-08
JP6992750B2 (ja) 2022-01-13
JPWO2018003244A1 (ja) 2019-04-18

Similar Documents

Publication Publication Date Title
US9304691B2 (en) Memory system and bank interleaving method
US9021178B2 (en) High performance path for command processing
KR102249416B1 (ko) 메모리 시스템 및 메모리 시스템의 구동 방법
US20150006794A1 (en) Apparatus and method for controlling multi-way nand flashes by using input-output pins
US9304952B2 (en) Memory control device, storage device, and memory control method
KR20160013351A (ko) 데이터 저장 장치 및 그것의 데이터 처리 방법
US20150253992A1 (en) Memory system and control method
JP2012128644A (ja) メモリシステム
JP2007087388A (ja) メモリコントローラ及びそれを含んだデータ処理システム
JP5414656B2 (ja) データ記憶装置、メモリ制御装置及びメモリ制御方法
US20170160952A1 (en) Memory controller, memory system, and information processing system
KR20160031099A (ko) 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 가비지 컬렉션 방법
KR102366512B1 (ko) 논리 블록 어드레싱 범위 충돌 크롤러
WO2018003244A1 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
US11307798B2 (en) Storage device and method for performing macro command
JP6004463B2 (ja) 記憶装置及びその制御方法
JP2013137624A (ja) データ記憶装置、メモリ制御装置及び方法
US11029878B2 (en) Information processing system
JP4978373B2 (ja) プログラマブルコントローラ、そのcpuモジュール
JP4936088B2 (ja) ディスクアレイ装置、ディスクアレイシステム、及びキャッシュ制御方法
WO2017073127A1 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
CN108536475B (zh) 完整编程命令处理方法与装置
US8166228B2 (en) Non-volatile memory system and method for reading and storing sub-data during partially overlapping periods
JP5216719B2 (ja) 情報処理装置および制御装置
US10566062B2 (en) Memory device and method for operating the same

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2018524909

Country of ref document: JP

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

Ref document number: 17819611

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

Country of ref document: EP

Kind code of ref document: A1