WO2017073127A1 - メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法 - Google Patents

メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法 Download PDF

Info

Publication number
WO2017073127A1
WO2017073127A1 PCT/JP2016/071997 JP2016071997W WO2017073127A1 WO 2017073127 A1 WO2017073127 A1 WO 2017073127A1 JP 2016071997 W JP2016071997 W JP 2016071997W WO 2017073127 A1 WO2017073127 A1 WO 2017073127A1
Authority
WO
WIPO (PCT)
Prior art keywords
write request
memory
write
data
request
Prior art date
Application number
PCT/JP2016/071997
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 US15/768,597 priority Critical patent/US11262936B2/en
Publication of WO2017073127A1 publication Critical patent/WO2017073127A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Definitions

  • the present technology relates to a memory controller, a storage device, an information processing system, and a memory control method.
  • the present invention relates to a memory controller, a storage device, an information processing system, and a memory control method for controlling a memory whose time required for writing is not constant, such as a nonvolatile memory.
  • a storage device constituted by a DRAM (Dynamic Random Access Memory) that is a volatile memory and a nonvolatile memory is used.
  • DRAM Dynamic Random Access Memory
  • NAND type flash memory, ReRAM (Resistance RAM), and the like can be cited as the nonvolatile memory.
  • Such a storage device is accessed for data by a command issued by the host computer of the information processing system.
  • high-speed access to the storage device is required.
  • a storage device using a DRAM a system for recording a history of commands issued to the DRAM in a memory controller has been proposed. In this system, the time required for data access is shortened by changing the order of newly issued commands based on the recorded history (see, for example, Patent Document 1).
  • the above-described prior art grasps a DRAM bank that is in a busy state such as precharge based on an issued command based on the history of the command, and gives priority to issuing a command to another bank for data access.
  • the time required is shortened.
  • the time required for precharge, writing, etc. is constant, and it is possible to predict the time to return from the busy state, so the command issue order can be easily changed, and writing, etc. is required. Time can be shortened.
  • the present technology has been created in view of such a situation, and an object thereof is to shorten the writing time in a storage device using a memory such as a nonvolatile memory in which the time required for writing is not constant.
  • the present technology has been made to solve the above-described problems.
  • the first aspect of the present technology provides a write request for requesting writing to each of a plurality of memory modules having different write times.
  • a memory controller including a selection unit that selects and outputs the write request, and a memory control method.
  • the memory module is a module for storing data, and is a module constituted by a single or a plurality of memory chips. This memory module is a module that can be accessed independently and can perform writing in parallel.
  • the busy state is a state in which a new write request cannot be executed to the memory module. Thereby, based on the memory state information indicating whether or not it is busy, one of the plurality of write request holding units for each of the memory modules is selected, and the write request is output.
  • the selection unit may select one of the plurality of write request holding units corresponding to the memory module that is not busy. As a result, the write request holding unit corresponding to the memory module that is not busy is selected, and the write request is output.
  • the write request holding unit may be constituted by a queue that puts the write request in first-in first-out.
  • the memory device further includes a memory state information holding unit that holds the memory state information, and the selection unit performs the plurality of write operations based on the memory state information held in the memory state information holding unit.
  • One of the request holding units may be selected. Thereby, the write request holding unit is selected based on the held memory state information, and the write request is output.
  • the data processing unit may further include a data processing unit that performs predetermined preprocessing on the write data related to the write request before being output to the memory module.
  • the pre-processing is processing executed before the write data is output to the memory module. This brings about the effect that predetermined preprocessing is performed on the write data.
  • the data processing unit may perform an encoding process for adding parity for error detection and error correction to the write data related to the write request as the predetermined preprocess. This brings about the effect that the encoding process of the write data is performed as the predetermined pre-process.
  • the data processing unit may perform a process of reading write data related to the write request from the host computer as the predetermined pre-process. As a result, the process of reading the write data is performed as the predetermined pre-process.
  • a data holding unit that holds the write data subjected to the predetermined preprocessing may be further provided. As a result, the write data subjected to the predetermined preprocessing is held.
  • the selection unit selects one of the plurality of write request holding units based on the memory state information when no write data is held in the data holding unit. May be. As a result, when write data that has undergone the predetermined pre-processing is not held in the data holding unit, one of the plurality of write request holding units is selected and a write request is output. Bring.
  • the selection unit selects one of the plurality of write request holding units corresponding to the memory module that is not busy, and there is no memory module that is not busy. In some cases, one of the plurality of write request holding units corresponding to the busy memory module may be selected. As a result, when the write data is not held in the data holding unit, the selection of the write request holding unit is performed by the selection unit, and when there is no memory module that is not busy, the busy memory This brings about the effect that one of the plurality of write request holding units corresponding to the module is selected.
  • the plurality of write request holding units hold the write request and write data related to the write request for each of the plurality of memory modules
  • the selection unit includes the memory state information. Based on the above, one of the plurality of write request holding units may be selected to output the write request and the write data. Thus, one of a plurality of write request holding units for each of the memory modules is selected based on the memory state information indicating whether or not the busy state is output, and the write request and the write data are output. .
  • a plurality of memory modules having different write times and a write request for requesting writing to each of the plurality of memory modules are held for each of the plurality of memory modules.
  • a plurality of write request holding units and one of the plurality of write request holding units are selected based on memory status information indicating whether each of the plurality of memory modules is busy, and the write request is output.
  • a storage device including a selection unit. Thereby, based on the memory state information indicating whether or not it is busy, one of the plurality of write request holding units for each of the memory modules is selected, and the write request is output.
  • a plurality of memory modules having different write times and a write request for requesting writing to each of the plurality of memory modules are held for each of the plurality of memory modules.
  • a plurality of write request holding units and one of the plurality of write request holding units are selected based on memory status information indicating whether each of the plurality of memory modules is busy, and the write request is output.
  • An information processing system comprising: a storage device including a selection unit to be executed; and a host computer that requests the storage device to perform the writing. Thereby, based on the memory state information indicating whether or not it is busy, one of the plurality of write request holding units for each of the memory modules is selected, and the write request is output.
  • composition of an information processing system in an embodiment of this art. It is a figure showing an example of composition of a memory module in an embodiment of this art. It is a figure showing an example of composition of memory controller 200 in a 1st embodiment of this art. It is a figure which shows the structural example of the write request management part 230 in 1st Embodiment of this technique. It is a figure showing an example of composition of write request control part 280 in a 1st embodiment of this art. It is a figure which shows an example of the process sequence of the write-in process in embodiment of this technique. It is a figure which shows an example of the process sequence of the process in the write request management part 230 in 1st Embodiment of this technique.
  • composition of memory controller 200 in a 4th embodiment of this art. It is a figure showing an example of composition of memory controller 200 in a 5th embodiment of this art. It is a figure showing an example of composition of write request management part 230 in a 5th embodiment of this art. It is a figure showing an example of composition of memory controller 200 in a 6th embodiment of this art. It is a figure showing an example of composition of memory device 300 in a modification of an embodiment of this art.
  • 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 in FIG. 1 includes a host computer 100, a memory controller 200, and a memory device 300. Note that the memory controller 200 and the memory device 300 constitute a storage device.
  • the host computer 100 performs various processes in the information processing system.
  • the host computer 100 issues a command such as writing or reading to the memory device 300 via the memory controller 200 to request writing and reading.
  • the signal line 109 is a signal line that electrically connects the host computer 100 and the memory controller 200.
  • the memory controller 200 controls the memory device 300.
  • the memory controller 200 interprets write and read commands issued from the host computer 100 and issues write and read requests based on the commands to the memory device 300.
  • the memory device 300 stores data. Based on the request issued from the memory controller 200, this data is accessed. At this time, data is transferred between the memory device 300 and the memory controller 200.
  • the memory device 300 includes a plurality of memory modules.
  • the memory module is a module for storing data, and is a module constituted by a single or a plurality of memory chips. It is assumed that the memory device 300 in the figure is composed of two memory modules. That is, the memory device 300 shown in the figure includes a memory module # 1 (310) and a memory module # 2 (320). These memory modules can be independently accessed, and writing can be performed in parallel.
  • the memory chip is assumed to be a memory chip constituted by ReRAM which is a nonvolatile memory.
  • This ReRAM is a semiconductor memory that stores data by reversibly changing the resistance value of a storage element arranged in a memory cell.
  • the data can be stored by associating the storage element in a high resistance state (High Resistance State: HRS) with the value “1” and the low resistance state (Low Resistance State: LRS) with the value “0”. .
  • HRS High Resistance State
  • LRS Low Resistance State
  • a process for changing the storage element from HRS to LRS is referred to as a set process
  • a process for changing the storage element from LRS to HRS is referred to as a reset process.
  • the signal line 309 is a signal line that electrically connects the memory controller 200 and the memory device 300.
  • the host computer 100 When the host computer 100 requests writing, the host computer 100 issues a write command and write data associated therewith to the memory controller 200.
  • the write command represents a command composed of an operation code representing writing, a write destination address, the number of write data, and an address of the write data in the storage area of the host computer 100.
  • the memory controller 200 generates a write request based on the write command, and issues a write data address to the host computer 100 to request transfer of the write data. Thereafter, the write data transferred from the host computer 100 to the memory controller 200 is output to the memory device 300 together with the write request.
  • the memory controller 200 designates one of the memory modules # 1 (310) and # 2 (320) as a memory module to be written.
  • the memory controller 200 performs address conversion for converting the write destination address included in the write command into the page address and the memory module number.
  • the memory module number is a number for designating the above-mentioned memory module # 1 (310) or the like.
  • the memory device 300 performs writing based on this request. Thereafter, the memory device 300 outputs the result of writing to the memory controller 200 as a response.
  • FIG. 2 is a diagram illustrating a configuration example of the memory module according to the embodiment of the present technology. This figure shows a configuration example of the memory module described in FIG. In the figure, “a” represents the configuration of the memory module 410 including the memory chip 411. “B” in the figure represents a configuration of the memory module 420 including the memory chips 421 and 422.
  • FIG. 3 is a diagram illustrating a configuration example of the memory controller 200 according to the first embodiment of the present technology.
  • the memory controller 200 includes a host interface 201, a write request generation unit 210, a data transfer control unit 221, and a write request management unit 230.
  • the memory controller 200 further includes a memory selection information generation unit 240, an ECC processing unit 222, a write request processing unit 260, a memory state information holding unit 270, a write request control unit 280, and a memory interface 202.
  • the data transfer control unit 221 and the ECC processing unit 222 constitute a data processing unit 220.
  • the host interface 201 is an interface for exchanging with the host computer 100.
  • the memory interface 202 is an interface for performing exchanges with the memory device 300.
  • the write request generator 210 interprets a write command issued by the host computer 100 and generates a write request.
  • the write request generator 210 performs the address conversion described above.
  • the data transfer control unit 221 controls transfer of write data.
  • the data transfer control unit 221 performs data transfer processing for reading write data from the host computer 100 based on the write data address in the storage area of the host computer 100 included in the write command. This data transfer process is performed based on a data transfer request output by a write request processing unit 260 described later.
  • the ECC processing unit 222 encodes write data.
  • encoding is a process of adding parity to write data to make an ECC code.
  • this parity for example, a parity generated using a BCH (Bose Chaudhuri Hocquenghem) code can be used.
  • the ECC processing unit 222 starts an encoding process for encoding the output write data.
  • the ECC processing unit 222 outputs a process end notification to a write request control unit 280 described later. Thereafter, the ECC processing unit 222 outputs the write data encoded based on the data output request output from the write request control unit 280 to the write request control unit 280.
  • the write request management unit 230 manages the write request generated by the write request generation unit 210.
  • the write request management unit 230 manages write requests as follows. First, the write request management unit 230 holds a plurality of write requests corresponding to each of the memory modules # 1 (310) and # 2 (320) included in the memory device 300. Next, the write request management unit 230 selects the held write request based on the memory selection information output from the memory selection information generation unit 240 described later, and writes it to the write request processing unit 260 described later. Output the request. The write request is output based on a request output request from the write request processing unit 260. Further, the write request management unit 230 outputs request holding information, which is information indicating whether or not a request is held, to the memory selection information generation unit 240. Details of the configuration of the write request management unit 230 will be described later.
  • the write request processing unit 260 performs processing for a write request.
  • the write request processing unit 260 issues a request output request to the write request management unit 230 based on the write request information output from the write request control unit 280 described later.
  • the write request processing unit 260 outputs the output write request to the write request control unit 280 and requests a data transfer request to the data transfer control unit 221. Issue.
  • the write request control unit 280 controls the issue of a write request.
  • the write request control unit 280 includes a write request buffer that holds a write request, and holds the write request output by the write request processing unit 260 in the write request buffer. Further, the write request control unit 280 outputs write request information to the write request processing unit 260.
  • the write request information is information indicating the state of the write request buffer, and is information indicating whether or not the write request is held in the write request buffer. Further, as described above, the write request control unit 280 issues a data output request to the ECC processing unit 222 based on the processing end notification output by the ECC processing unit 222.
  • the write data output from the ECC processing unit 222 and the write request held in the write request buffer are issued to the memory device 300. This issuance is performed via the memory interface 202.
  • the write request control unit 280 outputs request issue information, which is information about issue of the write request, to the memory state information holding unit 270 described later.
  • the write request control unit 280 When a response to the issued write request is input via the memory interface 202, the write request control unit 280 outputs this response to the memory state information holding unit 270. Details of the configuration of the write request control unit 280 will be described later.
  • the memory status information holding unit 270 holds status information of the memory modules # 1 (310) and # 2 (320) of the memory device 300.
  • the memory state information holding unit 270 holds memory state information that is information indicating whether or not the memory module # 1 (310) is in a busy state.
  • the busy state is a state in which processing is already executed in the memory module # 1 (310) and the like, and a new write request cannot be executed to these memory modules.
  • a state that is not busy is called an idle state.
  • the memory state information holding unit 270 determines whether or not it is busy based on the request issuance information and the response output from the write request control unit 280. Specifically, it is determined that a memory module that has issued a write request and has not output a response is in a busy state.
  • the memory state information holding unit 270 generates and holds memory state information and outputs the memory state information to the memory selection information generation unit 240.
  • the memory status information can be represented by 1-bit information for each of the memory modules # 1 (310) and # 2 (320), for example. The value can be expressed as a value “1” when the memory module is busy, and as a value “0” when the memory module is not busy.
  • the memory selection information generation unit 240 generates memory selection information.
  • the memory selection information generation unit 240 selects a memory module that issues a write request based on the request holding information output from the write request management unit 230 and the memory state information output from the memory state information holding unit 270. Next, the selection result is output to the write request management unit 230 as memory selection information.
  • the memory module is selected by selecting a memory module in which the request is held in the write request management unit 230 and is not busy.
  • the memory selection information can be represented by, for example, 1-bit information for each of the memory modules # 1 (310) and # 2 (320), similarly to the memory state information described above. The value “1” can indicate that the memory module is selected.
  • the memory selection information generation unit 240 selects any one memory module.
  • a selection method a method of selecting a plurality of memory modules in a predetermined order can be employed. For example, a method of selecting in order of memory module numbers can be employed. In this case, since the memory modules are accessed evenly, requests are selected in the order of issued commands. A method of selecting the memory module having the smallest memory module number can also be adopted. In this case, the memory module can be selected by simple processing.
  • the data processing unit 220 performs predetermined preprocessing on the write data.
  • the pre-processing is processing executed before the write data is output to the memory module.
  • the predetermined preprocessing for example, a transfer process of write data from the host computer and a process of encoding the write data can be performed.
  • the data processing unit 220 according to the first embodiment of the present technology includes a data transfer control unit 221 and an ECC processing unit 222, and performs predetermined preprocessing for transfer processing of write data from the host computer and encoding processing of the write data. Run as.
  • FIG. 4 is a diagram illustrating a configuration example of the write request management unit 230 according to the first embodiment of the present technology.
  • the write request management unit 230 includes a queue # 1 (233) and a queue # 2 (234), and a write request selection unit 231.
  • Queue # 1 (233) and queue # 2 (234) hold write requests.
  • the queues # 1 (233) and # 2 (234) correspond to the memory modules # 1 (310) and # 2 (320) included in the memory device 300 on a one-to-one basis, and write requests to these memory modules are issued. Retain each.
  • the queue # 1 (233) holds a write request for the memory module # 1 (310)
  • the queue # 2 (234) holds a write request for the memory module # 2 (320).
  • the write request management unit 230 includes the same number of queues as the memory modules included in the memory device 300.
  • queues # 1 (233) and # 2 (234) perform first-in first-out write requests. That is, the queues # 1 (233) and # 2 (234) are constituted by FIFO (First-In First-Out) memories. As a result, the write request corresponding to the previously issued write command is processed first, and the host computer 100 writes data in the intended order. Further, the queues # 1 (233) and # 2 (234) generate the above-described request holding information and output it to the memory selection information generation unit 240.
  • This request holding information can be represented by 1-bit information, for example. The value “1” can indicate that a write request is held in the queue.
  • the size of the request holding information output from the write request management unit 230 is 2 bits in total.
  • the above-described write request management unit 230 is configured to include queues # 1 (233) and # 2 (234), but is not limited to this configuration.
  • queues # 1 (233) and # 2 (234) instead of queues # 1 (233) and # 2 (234), a configuration including two storage devices that do not perform first-in first-out can be used to hold a write request. This storage device is an example of the write request holding unit described in the claims.
  • the write request selection unit 231 selects either one of the queues # 1 (233) or # 2 (234) and outputs the held write request.
  • the write request selection unit 231 selects queue # 1 (233) or # 2 (234), and selects the selected queue # 1 (233) or the like. retrieve write request from.
  • the write request selection unit 231 outputs the extracted write request to the write request processing unit 260.
  • the selection of the write request is performed based on the memory selection information output from the memory selection information generation unit 240.
  • the write request selection unit 231 is an example of a selection unit described in the claims.
  • FIG. 5 is a diagram illustrating a configuration example of the write request control unit 280 according to the first embodiment of the present technology.
  • the write request control unit 280 includes an output control unit 281 and a write request buffer 282.
  • the write request buffer 282 holds and outputs the write request output from the write request processing unit 260.
  • the write request buffer 282 is controlled by an output control unit 281 described later.
  • the output control unit 281 controls the output of a write request and write data.
  • the output control unit 281 controls the entire write request control unit 280.
  • the output control unit 281 generates and outputs write request information based on the state of the write request buffer 282.
  • This write request information can be represented by 1-bit information, for example.
  • the value “1” can indicate that the write request is held in the write request buffer 282.
  • the write request processing unit 260 issues a request output request to the write request management unit 230 when the write request information has the value “0”.
  • the output control unit 281 issues a data output request to the ECC processing unit in response to the input of the processing end notification from the ECC processing unit 222. Thereafter, when write data is output from the ECC processing unit 222, the output control unit 281 outputs a write request to the write request buffer 282 and outputs the write data. Thereafter, the output control unit 281 outputs request issue information.
  • FIG. 6 is a diagram illustrating an example of a processing procedure of a writing process according to the embodiment of the present technology. This figure shows the writing process performed in the ReRAM. As described above, writing is performed in units of pages. First, a set process is performed (step S901). Next, set verify processing is performed (step S902). This process is a process for determining whether or not the set process has been performed normally. As a result, when the set process has failed (step S903: No), the ReRAM determines whether or not the number of set process failures has reached a prescribed number (step S904). If the number of failures is less than the prescribed number (step S904: No), the ReRAM executes the processing from step S901 again. On the other hand, when the set process failure count has reached the specified count (step S904: Yes), the ReRAM ends the write process. In this case, the ReRAM outputs a response indicating that the writing has failed to the memory controller 200 as a response.
  • step S903 if the set process is successful in step S903 (step S903: Yes), the reset process is performed (step S905), and the reset verify process is performed (step S906).
  • This process is a process for determining whether or not the reset process has been performed normally.
  • the ReRAM determines whether or not the number of reset process failures has reached a predetermined number (step S908). If the number of failures is less than the prescribed number (step S908: No), the ReRAM executes the processing from step S905 again.
  • step S908: Yes the ReRAM ends the write process.
  • step S907 Yes
  • the ReRAM outputs a response indicating that the write is successful to the memory controller 200 and ends the write process.
  • the set process and the reset process are repeatedly executed according to the result of the verify process. For this reason, the time required for writing in the ReRAM changes.
  • FIG. 7 is a diagram illustrating an example of a processing procedure in the write request management unit 230 according to the first embodiment of the present technology.
  • the write request management unit 230 determines whether or not a write request has been input from the write request generation unit 210 (step S911).
  • the write request management unit 230 holds the write request in the target queue of queue # 1 (233) or # 2 (234) (step S915). Thereafter, the write request management unit 230 proceeds to the process of step S916.
  • step S911 determines whether a write request is input in step S911 (step S911: No). If a request output request has not been issued (step S912: No), the write request management unit 230 executes the processing from step S911 again. On the other hand, when a request output request has been issued (step S912: Yes), the write request selection unit 231 waits until memory selection information is input from the memory selection information generation unit 240 (step S913: No). .
  • step S913 When the memory selection information is input (step S913: Yes), the write request selection unit 231 selects queue # 1 (233) or # 2 (234) based on the memory selection information, and from the selected queue. retrieve write request. Then, the extracted write request is output to the write request processing unit 260 (step S914). Thereafter, the write request management unit 230 proceeds to the process of step S916.
  • step S916 queues # 1 (233) and # 2 (234) update the request holding information (step S916). Thereafter, the write request management unit 230 proceeds to the process of step S911.
  • FIG. 8 is a diagram illustrating an example of a processing procedure in the write request processing unit 260 according to the first embodiment of the present technology.
  • the write request processing unit 260 stands by until a free space is generated in the write request buffer 282 of the write request control unit 280 (step S921: No). This is determined based on the write request information output from the write request control unit 280.
  • the write request processing unit 260 requests the write request management unit 230 to output a write request (step S922). This is performed by issuing a request output request to the write request management unit 230.
  • step S923: No When a write request is input from the write request management unit 230 (step S923: Yes), the write request processing unit 260 outputs this write request to the write request control unit 280 (step S924).
  • step S925 the write request processing unit 260 requests the data transfer control unit 221 to transfer data (step S925). This is performed by issuing a data transfer request to the data transfer control unit 221. Thereafter, the write request processing unit 260 proceeds to the process of step S921.
  • FIG. 9 is a diagram illustrating an example of a processing procedure in the write request control unit 280 according to the first embodiment of the present technology.
  • the write request control unit 280 determines whether or not a response is input from the memory device 300 (step S931). When a response is input (step S931: Yes), the write request control unit 280 outputs the response to the memory state information holding unit 270, thereby transferring the response (step S939). Thereafter, the write request control unit 280 proceeds to the process of step S931 again.
  • step S931: No the write request control unit 280 determines whether a write request is input from the write request processing unit 260 (step S932). If a write request has been input (step S932: Yes), the write request buffer 282 holds the input write request (step S933). Thereafter, the write request control unit 280 proceeds to the process of step S941.
  • step S932 if no write request is input (step S932: No), the output control unit 281 determines whether the write request is held in the write request buffer 282 (step S934). When the write request is not held (step S934: No), the output control unit 281 proceeds to the process of step S931. On the other hand, when the write request is held (step S934: Yes), the output control unit 281 proceeds to the process of step S935.
  • step S935 the output control unit 281 determines whether a processing end notification is output from the ECC processing unit 222 (step S935). When the process end notification is not output (step S935: No), the output control unit 281 proceeds to the process of step S931. On the other hand, when the process end notification is output (step S935: Yes), the output control unit 281 requests the ECC processing unit 222 to output data (step S936). This is performed by issuing a data output request to the ECC processing unit 222. As a result, write data is output from the ECC processing unit 222. The output control unit 281 issues a write request held in the write request buffer 282 and outputs the write data output from the ECC processing unit 222.
  • step S937 These are output to the memory device 300 via the memory interface 202 (step S937).
  • step S938 outputs the request issuance information to the memory state information holding unit 270 (step S938). Thereafter, the output control unit 281 updates the write request information (step S941), and proceeds to the process of step S931.
  • FIG. 10 is a diagram illustrating an example of a write request process according to the first embodiment of the present technology. This figure shows the state of each unit when processing a write request in the memory controller 200.
  • a command input represents a write command issued by the host computer 100.
  • the queue # 1 request input and the queue # 2 request input represent write requests input to the queues # 1 (233) and # 2 (234) of the write request management unit 230, respectively.
  • the request holding information is expressed in binary notation of 2 bits, and the upper bit and the lower bit represent the request holding information of the queues # 2 (234) and # 1 (233), respectively.
  • the upper bits and the lower bits represent the states of the memory modules # 2 (320) and # 1 (310), respectively.
  • the upper bits and the lower bits represent selections for the memory modules # 2 (320) and # 1 (310), respectively. These initial states are all values “00”.
  • a write request buffer represents a write request held in the write request buffer 282.
  • Data transfer represents write data to be transferred by the data transfer control unit 221.
  • the ECC process represents write data to be encoded by the ECC processing unit 222.
  • the write request output and the write data output represent the write request and the write data output from the write request control unit 280, respectively. These correspond to the write request issued by the memory controller 200 and the accompanying write data.
  • the response input represents a response input by the memory device 300.
  • write commands # 1 to 4 are issued in order from the host computer 100.
  • commands # 1 and # 3 are write commands for memory module # 1 (310)
  • commands # 2 and # 4 are write commands for memory module # 2 (320).
  • Requests based on these commands are sequentially generated by the request generation unit 210 and held in the corresponding queues # 1 (233) and # 2 (234).
  • the request holding information changes from the value “00” to “01” (T1).
  • the write request is held in the queue # 2 (234)
  • the request holding information changes from the value “01” to “11” (T2).
  • the memory modules # 1 (310) and # 2 (320) are not busy, and the memory state information is a value “00”.
  • the write request selection unit 231 of the write request management unit 230 selects the queue # 1 (233).
  • the write request # 1 held in the selected queue # 1 (233) is transferred to the write request buffer 282 of the write request control unit 280 via the write request processing unit 260 and held there.
  • a data transfer process and an encoding process are sequentially performed on the write data # 1 corresponding to the write request # 1.
  • each bit of the memory selection information has a value “1” when the corresponding bit of the request holding information has the value “1” and the corresponding bit of the memory status information has the value “0”.
  • the request issuance information is output from the output control unit 281 of the write request control unit 280, and the memory state information changes to the value “01”. This indicates that the memory module # 1 (310) is busy. As a result, the memory selection information changes to the value “10”.
  • both the memory modules # 1 (310) and # 2 (320) are not busy, and the requests are held in both the queues # 1 (233) and # 2 (234).
  • the memory selection information generation unit 240 selects either queue # 1 (233) or # 2 (234), and stores the memory selection information. Generate.
  • the memory selection information is set to the value “01” at T1, and the output of the write request # 1 from the queue # 1 (233) has already started. For this reason, even if the request holding information changes in T2, the memory selection information can be kept at the value “01”.
  • queue # 2 (234) is selected based on the memory selection information.
  • Write request # 2 and write data # 2 are output by the same processing as T0 to T3.
  • the memory state information becomes the value “11”, and the memory selection information becomes the value “00”.
  • the memory controller 200 waits until a response is input from the memory device 300.
  • a response # 2 corresponding to the write request # 2 is input at T5
  • the memory state information changes to the value “01”
  • the memory selection information changes to the value “10”.
  • the queue # 2 (234) is selected, and the write request # 4 held in the queue # 2 (234) is transferred to and held in the write request buffer 282.
  • the request holding information changes to the value “01” (T6), and the memory selection information changes to the value “00”.
  • the data transfer process and the encoding process are sequentially executed on the write data # 4 corresponding to the write request # 4, and the write data # 4 subjected to the encoding process is output together with the write request # 4.
  • the memory state information changes to the value “00”, and the memory selection information changes to the value “01”. Thereafter, the memory state information changes to the value “10” with the start of output of the write request # 4 and the write data # 4.
  • write request # 3 and write data # 3 are output in the same manner as T3 to T4.
  • the write request held in the queue # 1 (233) is output to the memory module # 1 (310), and the request holding information changes to the value “00” (T9).
  • the memory selection information changes to the value “00”.
  • the memory status information changes to the value “11” with the output of the write request # 3.
  • the memory status information returns to the value “00” with the input of the response (not shown).
  • the write request to the memory module # 2 is preferentially selected and issued. This is because the memory module # 2 that is not busy is selected based on the memory state information. That is, when the time required for writing to the memory modules # 1 (310) and # 2 (320) is different, the order of the write requests based on the write command issued by the host computer 100 is changed and issued to the memory device 300. can do.
  • FIG. 11 is a diagram illustrating another example of the write request processing according to the first embodiment of the present technology. This figure is an example of the processing given for comparison with the processing described in FIG. 10, in which write requests corresponding to the order of the write commands input to the memory controller 200 are selected and issued to the memory 300. It is an example.
  • T0 to T4 are the same as the processing of T0 to T4 described in FIG.
  • the memory controller 200 waits until a response is input from the memory device 300.
  • response # 2 is input at T5
  • the memory state information changes to the value “01”.
  • the memory selection information remains the value “00” and does not change. This is because the queue # 2 (234) corresponding to the memory module # 2 is selected at T3, so that the memory selection information generation unit 240 continues until the memory module # 1 (310) to be selected next changes from the busy state to the idle state. This is to wait.
  • response # 1 is input at T6
  • the memory state information and the memory selection information change to values “00” and “01”, respectively.
  • queue # 1 (233) is selected, and write request # 3 and write data # 3 are output.
  • the request issue order cannot be appropriately changed, and a relatively long waiting time is generated. This increases the time required for processing a plurality of write requests.
  • the write request buffer is used.
  • the second embodiment of the present technology further includes a write data buffer.
  • the write data of the memory module in the busy state can be processed in advance, and the write data that has been processed can be held in the write data buffer. The time required to issue a request is expected to be shortened.
  • FIG. 12 is a diagram illustrating a configuration example of the memory controller 200 according to the second embodiment of the present technology.
  • the memory controller 200 in the figure is different from the memory controller 200 described in FIG. 3 in the following points.
  • the memory state information holding unit 270 outputs the memory state information to the memory selection information generation unit 240 and the write request control unit 280. Further, the write request control unit 280 outputs write data information described later to the memory selection information generation unit 240.
  • the memory selection information generation unit 240 selects a memory module that issues a write request based on the write data information, the memory state information, and the request holding information.
  • FIG. 13 is a diagram illustrating a configuration example of the write request control unit 280 according to the second embodiment of the present technology.
  • the write request control unit 280 includes an output control unit 284, a write request buffer 282, and a write data buffer 285.
  • the write data buffer 285 holds the write data that has been encoded by the ECC processing unit 222.
  • the write data buffer 285 is an example of the data holding unit described in the claims.
  • the output control unit 284 controls the write data buffer 285, generates write data information, and outputs it to the memory selection information generation unit 240.
  • the write data information is information indicating whether write data is held in the write data buffer 285.
  • This write data information can be represented by 1-bit information, for example.
  • a case where write data is held in the write data buffer 285 can be expressed as a value “1”, and a case where write data is not held can be expressed as a value “0”.
  • the output control unit 284 determines whether or not the corresponding memory module is busy, issues a write request, and outputs write data. This is performed based on the memory state information output from the memory state information holding unit 270.
  • the other configuration of the output control unit 284 is the same as the configuration of the output control unit 281 described with reference to FIG.
  • the memory selection information generation unit 240 in FIG. 12 selects the memory module based on the memory state information when the write data is not held in the write data buffer 285 based on the write data information generated by the output control unit 284 described above. I do. At this time, the memory selection information generation unit 240 can select a memory module as follows. First, the memory selection information generation unit 240 selects a memory module that is not busy among the memory modules whose write requests are held in the corresponding queue. If there is no corresponding memory module, the memory selection information generation unit 240 selects a busy memory module from among the memory modules whose write requests are held in the corresponding queue. Note that the selection method described in FIG. 3 can be used as the selection method when there are a plurality of selectable memory modules.
  • the memory selection information generation unit 240 in FIG. 12 selects a memory module that is busy, and generates and outputs memory selection information.
  • a write request corresponding to the memory module selected based on this is held in the write request buffer 282 of the write request control unit 280 from the write request management unit 230 via the write request processing unit 260.
  • the write request processing unit 260 issues a data transfer request, and the data transfer control unit 221 executes write data transfer processing. Thereafter, the write data is encoded by the ECC processing unit 222 and held in the write data buffer 285 of the write request control unit 280.
  • the output control unit 284 of the write request control unit 280 causes the memory device 300 to output the write request and write data held in the write request buffer 282 or the like. . If there is a memory module that is not busy, this memory module is selected and the corresponding write request is held in the write request buffer 282. Further, data transfer processing and encoding processing are performed on the corresponding write data, and the write data buffer 285 holds the data. Thereafter, these are immediately output to the memory device 300.
  • the memory controller 200 performs the data transfer process and the encoding process on the write data to the busy memory module in advance and holds the data in the write data buffer 285. be able to.
  • FIG. 14 is a diagram illustrating an example of a processing procedure of processing in the write request control unit 280 according to the second embodiment of the present technology.
  • the write request control unit 280 determines whether or not a response has been input (step S951). If a response is input (step S951: Yes), the write request control unit 280 transfers this response to the memory state information holding unit 270 (step S959). Thereafter, the write request control unit 280 proceeds to the process of step S951 again.
  • step S951: No the write request control unit 280 determines whether a write request is input from the write request processing unit 260 (step S952). If a write request has been input (step S952: Yes), the write request buffer 282 holds the input write request (step S953).
  • the write request control unit 280 updates the write request information (step S961), and proceeds to the process of step S951.
  • step S952 when a write request is not input (step S952: No), the output control unit 284 determines whether the write request is held in the write request buffer 282 (step S954). When the write request is not held (step S954: No), the output control unit 284 proceeds to the process of step S951. On the other hand, when the write request is held (step S954: Yes), the output control unit 284 determines whether a processing end notification is output from the ECC processing unit 222 (step S955). When the process end notification is output (step S955: Yes), the output control unit 284 requests the ECC processing unit 222 to output data (step S956). Next, the output control unit 284 holds the write data output from the ECC processing unit 222 in the write data buffer 285 (step S962). Thereafter, the output control unit 284 proceeds to the process of step S970.
  • step S955 when the process end notification is not output (step S955: No), the output control unit 284 skips the processes in steps S956 and S962, and proceeds to the process in step S970.
  • step S970 the output control unit 284 executes processing for issuing a write request and outputting write data (step S970). As a result, when the write data is held in the write data buffer 285 and the target memory module is not busy, a write request is issued and the write data is output. Thereafter, the output control unit 284 proceeds to the process of step S951.
  • FIG. 15 is a diagram illustrating an example of a processing procedure of a write request issuance and write data output process (step S970) according to the second embodiment of the present technology.
  • the output control unit 284 determines whether or not write data is held in the write data buffer 285 (step S975). If the write data is not held (step S975: No), the output control unit 284 ends the write request issuance and write data output processing.
  • the output control unit 284 determines whether or not the memory module that is the target of the write request is busy based on the memory state information (step S976). . When the target memory module is in the busy state (step S976: Yes), the output control unit 284 ends the write request issue and write data output processing. If the target memory module is not busy (step S976: No), the output control unit 284 issues a write request to the target memory module and outputs write data. These are output to the memory device 300 via the memory interface 202 (step S977). Next, the output control unit 284 outputs the request issuance information to the memory state information holding unit 270 (step S978), and updates the write request information and the write data information (step S979). Thereafter, the output control unit 284 ends the write request issue and write data output processing.
  • FIG. 16 is a diagram illustrating an example of a write request process according to the second embodiment of the present technology.
  • a write data buffer represents data held in the write data buffer 285.
  • write data information indicating the state of the write data buffer 285 is added.
  • the initial value of this write data information is the value “0”. Otherwise, the same notation as in FIG. 10 is used.
  • T0 to T2 in the figure is the same as T0 to T2 described in FIG.
  • the write data # 1 subjected to the encoding process in the ECC processor 222 is held in the write data buffer 285 (T3), and the write data information changes from the value “0” to “1”. As a result, the memory selection information changes from the value “01” to “00”. Thereafter, write request # 1 and write data # 1 are output.
  • the write data # 1 held in the write data buffer 285 is output, and the write data information changes to the value “0”. Further, since the request holding information and the memory state information are the values “11” and “01”, respectively, the memory selection information changes to the value “10”. Based on this, the write request # 2 is transferred from the queue # 2 (236) to the write request buffer 282, and then output. Similarly, the write data # 2 subjected to the data transfer process and the encoding process is transferred to the write data buffer 285 and then output. As a result, the memory state information changes to the value “11”. The memory selection information changes to the value “00” when the write data # 2 is held in the write data buffer 285.
  • the memory selection information generation unit 240 selects one of the memory modules.
  • a method of selecting in order of memory module numbers is employed. That is, the memory selection information generation unit 240 alternately selects the memory modules # 1 (310) and # 2 (320). Since the memory module # 2 (320) is selected in T4 to T5, the memory selection information generation unit 240 selects the memory module # 1 (310) and outputs the value “01” as the memory selection information.
  • the write request # 3 held in the queue # 1 (233) is transferred to the write request buffer 282 and held (T6).
  • the write data # 3 is subjected to data transfer processing and encoding processing, and is held in the write data buffer 285.
  • the memory state information changes to the value “10”, and write request # 3 and write data # 3 held in write request buffer 282 and write data buffer 285 respectively.
  • Output is started (T8). In this manner, the write data after the data transfer and encoding process is held in the write data buffer 285, so that the time from the input of response # 1 to the output of write request # 3 and write data # 3 Can be shortened.
  • the request holding information changes to the value “10” (T6). Further, when the write data # 3 subjected to the encoding process is held in the write data buffer 285, the memory selection information changes to the value “00”, and the output of the write request # 3 and the write data # 3 is started (T8). ), The memory status information returns to the value “11”.
  • the request holding information and the memory state information are the values “10” and “11”, respectively, so that the memory selection information changes to the value “10”.
  • write request # 4 and write data # 4 are selected and output.
  • the preprocessing of the write data in the busy memory module is terminated in advance.
  • the time required for issuing the write request after the memory module returns from the busy state to the idle state can be shortened.
  • each memory module includes a write data buffer.
  • FIG. 17 is a diagram illustrating a configuration example of the write request control unit 280 according to the third embodiment of the present technology.
  • the write request control unit 280 includes an output control unit 286, write request buffers # 1 (282) and # 2 (287), write data buffers # 1 (285) and # 2 (288), and a request selection unit 283. And a data selection unit 289.
  • Write request buffers # 1 (282) and # 2 (287) hold write requests. These write request buffers # 1 (282) and # 2 (287) hold write requests in a one-to-one correspondence with the memory modules # 1 (310) and # 2 (320), respectively.
  • Write data buffers # 1 (285) and # 2 (288) hold write data. These write data buffers # 1 (285) and # 2 (288) hold write data in a one-to-one correspondence with the memory modules # 1 (310) and # 2 (320), respectively.
  • the request selection unit 283 selects one of the write request buffers # 1 (282) and # 2 (287), reads out the write request, and outputs it.
  • the request selection unit 283 is controlled by the output control unit 286.
  • the data selection unit 289 selects one of the write data buffers # 1 (285) and # 2 (288), reads out the write data, and outputs it.
  • the data selection unit 289 is controlled by the output control unit 286.
  • the output control unit 286 holds the write request input from the write request processing unit 260 in either the write request buffer # 1 (282) or # 2 (287) according to the memory module that is issued. Similarly, the output control unit 286 holds the write data in either the write data buffer # 1 (285) or # 2 (288) according to the output destination memory module. Further, the output control unit 286 outputs write request information corresponding to the states of the write request buffers # 1 (282) and # 2 (287). This write request information is 1-bit information similar to the write request information described with reference to FIG. 5, and when write requests are held in both the write request buffers # 1 (282) and # 2 (287). The value is “1”. On the other hand, the output control unit 286 outputs 2-bit information corresponding to each of the write data buffer # 1 (285) or # 2 (288) as the write data information.
  • write request control unit 280 Other configurations of the write request control unit 280 are the same as the write request control unit 280 described with reference to FIG.
  • the memory selection information generation unit 240 selects a memory module as follows. First, the memory selection information generation unit 240 selects a memory module that is not busy among the memory modules in which the write data is not held in the corresponding write data buffer and the write request is held in the corresponding queue. When there is no corresponding memory module, the memory selection information generating unit 240 is a busy memory module in which the write data is not held in the corresponding write data buffer and the write request is held in the corresponding queue. Select. Note that the selection method described in FIG. 3 can be used as the selection method when there are a plurality of selectable memory modules.
  • the write request output from the queue # 1 (233) corresponding to the selected memory module is input to the write request control unit 280 via the write request processing unit 260.
  • the input write request is held in the corresponding write request buffer # 1 (282) or # 2 (287).
  • the write request processing unit 260 issues a data transfer request, and the data transfer control unit 221 executes the write data transfer process.
  • the write data on which the encoding processing by the ECC processing unit 222 has been executed is held in the corresponding write data buffer # 1 (285) or # 2 (288) of the write request control unit 280.
  • the held write request and write data are output to the memory device 300 via the memory interface 202 when the corresponding memory module changes from the busy state to the idle state.
  • FIG. 18 is a diagram illustrating an example of a processing procedure of a write request issue and write data output process (step S980) according to the third embodiment of the present technology.
  • the process shown in FIG. 14 is executed in place of the write request issue and write data output process (step S970) described in FIG.
  • the output control unit 286 determines whether or not write data is held in the write data buffer # 1 (285) (step S985). When the write data is not held (step S985: No), the output control unit 286 proceeds to the process of step S995.
  • step S985 If the write data is held (step S985: Yes), the output control unit 286 determines whether or not the memory module # 1 (310) is busy (step S986). When the memory module # 1 (310) is busy (step S986: Yes), the output control unit 286 proceeds to the process of step S995. When the memory module # 1 (310) is not busy (step S986: No), the output control unit 286 issues a write request to the memory module # 1 (310) and outputs write data (step S987). ). Next, the output control unit 286 outputs request issue information (step S988), updates the write request information and write data information (step S989), and proceeds to the process of step S995.
  • step S995 the output control unit 286 determines whether write data is held in the write data buffer # 2 (288) (step S995). If the write data is not held (step S995: No), the output control unit 286 ends the write request issuance and write data output processing.
  • step S995: Yes the output control unit 286 determines whether or not the memory module # 2 (320) is busy (step S996). When the memory module # 2 (320) is busy (step S996: Yes), the output control unit 286 ends the write request issue and write data output processing. If the memory module # 2 (320) is not busy (step S996: No), the output control unit 286 issues a write request to the memory module # 2 (320) and outputs write data (step S997). ). Next, the output control unit 286 outputs request issue information (step S998), updates the write request information and write data information (step S999), and ends the write request issue and write data output processing.
  • FIG. 19 is a diagram illustrating an example of a write request process according to the third embodiment of the present technology.
  • write request buffers # 1 and # 2 represent write requests held in write request buffers # 1 (282) and # 2 (287), respectively.
  • Write data buffers # 1 and # 2 represent the write data held in the write data buffers # 1 (285) and # 2 (288), respectively.
  • the write data information is expressed in binary notation of 2 bits, and the upper and lower bits represent the write data information of the write data buffers # 2 (288) and # 1 (285), respectively. Otherwise, the same notation as in FIG. 10 is used.
  • write commands # 1 to # 6 are issued in order from the host computer 100.
  • commands # 1, # 3, and # 5 are write commands for memory module # 1 (310)
  • commands # 2, # 4, and # 6 are write commands for memory module # 2 (320).
  • Requests based on these commands are sequentially generated by the request generation unit 210 and held in the corresponding queues # 1 (233) and # 2 (234).
  • the write data # 1 subjected to the data transfer process and the encoding process is held in the write data buffer # 1 (285) (T3), and the write data information changes to the value “01”.
  • the request holding information changes to the value “11” with the input of the write request to the queue # 2 (234) (T2).
  • the memory selection information changes to the value “10”
  • the write request # 2 is output from the queue # 2 (234) and held in the write request buffer # 2 (287), and the data is written to the write data # 2.
  • a transfer process and an encoding process are performed.
  • the write request # 1 and the write data # 1 held in the write request buffer # 1 (282) and the write data buffer # 1 (285), respectively, are output, and the write data information changes to the value “00”.
  • the write data # 2 subjected to the data transfer process and the encoding process is held in the write data buffer # 2 (288) (T4). Further, since the output of the write data # 1 held in the write data buffer # 1 (285) has been completed, the write data information changes to the value “10”, and the memory selection information changes to the value “01”. To do. As a result, the write request # 3 is output from the queue # 1 (233) and held in the write request buffer # 1 (282), and the data transfer process and the encoding process are performed on the write data # 3. On the other hand, the write request # 2 and the write data # 2 respectively held in the write request buffer # 2 (287) and the write data buffer # 2 (288) are output, and the write data information changes to the value “00”.
  • the write data # 3 subjected to the data transfer process and the encoding process is held in the write data buffer # 1 (285) (T5). Further, since the output of the write data # 2 held in the write data buffer # 2 (288) has been completed, the write data information changes to the value “01” and the memory selection information changes to the value “10”. To do. As a result, the write request # 4 is output from the queue # 2 (234) and held in the write request buffer # 2 (287), and the data transfer process and the encoding process are performed on the write data # 4. Thereafter, the write data # 4 subjected to these processes is held in the write data buffer # 2 (288) (T6). Since the write data is held in both the write data buffers # 1 (285) and # 2 (288), the write data information changes to the value “11”, and the memory selection information changes to the value “00”.
  • the write request # 5 is output from the queue # 1 (233) and held in the write request buffer # 1 (282), and the data transfer process and the encoding process are performed on the write data # 5.
  • the write request # 4 and the write data # 4 held in the write request buffer # 2 (287) and the write data buffer # 2 (288) are output, and the write data information changes to the value “00”.
  • the write data # 5 subjected to the data transfer process and the encoding process is held in the write data buffer # 1 (285) (T11). Further, since the output of the write data # 4 held in the write data buffer # 2 (288) has been completed, the write data information changes to the value “01” and the memory selection information changes to the value “10”. To do. As a result, the write request # 6 is output from the queue # 2 (234) and held in the write request buffer # 2 (287), and the data transfer process and the encoding process are performed on the write data # 6. On the other hand, the write request # 5 and the write data # 5 held in the write request buffer # 1 (282) and the write data buffer # 1 (285) are output, and the write data information changes to the value “00”.
  • the memory controller 200 arranges the write data buffer for each of the memory modules # 1 (310) and # 2 (320), and performs the writing in which the encoding process or the like is performed. Retain data.
  • the time from the input of the response to the issue of the write request and the output of the write data can be further shortened.
  • the write data buffer is provided for each memory module, and the preprocessing of the write data in the busy memory module is terminated in advance. Thereby, it is possible to further reduce the time required for issuing the write request after the memory module returns to the idle state.
  • a request is generated from a command issued by the host computer 100 and then held in a queue.
  • a command is held in a queue. Thereby, it can hold
  • FIG. 20 is a diagram illustrating a configuration example of the memory controller 200 according to the fourth embodiment of the present technology. Compared with the memory controller 200 illustrated in FIG. 3, the memory controller 200 in FIG. 3 does not have to include the write request generation unit 210. Further, a write command management unit 290 is provided instead of the write request management unit 230.
  • the write command management unit 290 manages write commands.
  • the write command management unit 290 holds and selects the write command instead of the write request, and outputs the write command to the write request processing unit 260. Further, the write command management unit 290 outputs command holding information instead of request holding information.
  • the write command management unit 290 is different from the write request management unit 230 described in FIG.
  • the other configuration of the write command management unit 290 is the same as the configuration of the write request management unit 230 described with reference to FIG.
  • the write command is an example of a write request described in the claims.
  • the write request processing unit 260 issues a command output request to the write command management unit 290 instead of the request output request. Further, the write request processing unit 260 generates a write request based on the write command output from the write command management unit 290 and outputs the write request to the write request control unit 280.
  • the other configuration of the write request processing unit 260 is the same as that of the write request processing unit 260 described in FIG.
  • the write request processing unit 260 in the figure performs processing for generating a write request based on the write command. This process can be performed in parallel with the data transfer process in the data transfer control unit 221. Further, since the write command issued from the host computer is held in the queue of the write command management unit 290, the write request generation processing in the write request generation unit 210 described in FIG. 3 can be omitted. Therefore, the write command can be held in the queue at high speed.
  • the write command can be held in the queue at high speed, and the write process in the memory controller 200 can be speeded up.
  • the memory controller 200 selects a write request to be issued to the memory 300 and then performs a transfer process from the host computer 100 for write data corresponding to the request.
  • write data is output together with a write command from the host computer 100, and the memory controller 200 holds these in a queue. Thereby, the write data transfer process after selecting the write request can be omitted, and the write request process in the memory controller 200 can be speeded up.
  • FIG. 21 is a diagram illustrating a configuration example of the memory controller 200 according to the fifth embodiment of the present technology. Compared with the memory controller 200 described with reference to FIG. 3, the memory controller 200 illustrated in FIG. 3 does not need to include the data transfer control unit 221.
  • the write data is output from the host interface 201 to the ECC processing unit 222 of the data processing unit 220 via the write request management unit 230.
  • FIG. 22 is a diagram illustrating a configuration example of the write request management unit 230 according to the fifth embodiment of the present technology.
  • the write request management unit 230 includes a queue # 1 (235) and a queue # 2 (236), and a write request selection unit 232.
  • Queue # 1 (235) and queue # 2 (236) hold write requests and write data.
  • the write request selection unit 232 selects a write request and write data.
  • the write request selection unit 232 outputs a write request to the write request processing unit 260 when a request output request is issued from the write request processing unit 260, and writes write data to the ECC processing unit 222 of the data processing unit 220. Output for.
  • the host computer 100 sends the write data to the memory controller 200 together with the write command. It is necessary to output.
  • the write data transfer process after selecting the write request can be omitted. Can be performed at high speed.
  • the memory selection information generation unit 240 generates memory selection information based on the request holding information and the memory state information. Based on the generated memory selection information, the write request selection unit 231 selects the queue # 1 (233) or the like. In contrast, in the sixth embodiment of the present technology, the write request selection unit 231 selects the queue # 1 (233) or the like based on the memory state information. Thereby, the process of the memory controller 200 can be simplified.
  • FIG. 23 is a diagram illustrating a configuration example of the memory controller 200 according to the sixth embodiment of the present technology.
  • the memory controller 200 shown in the figure does not need to include the memory selection information generation unit 240 as compared with the memory controller 200 described in FIG.
  • the write request management unit 230 in the figure selects a write request based on the memory state information output from the memory state information holding unit 270 and outputs the request to the write request processing unit 260.
  • the write request selection unit 231 included in the write request management unit 230 in the figure selects either queue # 1 (233) or # 2 (234) based on the memory state information, and outputs a write request. That is, the queue # 1 (233) or # 2 (234) corresponding to either the memory module # 1 (310) or # 2 (320) that is not busy is selected. When a write request is held in the selected queue # 1 (233) or the like, this write request is output from the queue # 1 (233) or the like.
  • the write request selection unit 231 outputs the output write request to the write request processing unit 260. On the other hand, when a write request is not output from the selected queue # 1 (233) or the like, the write request selection unit 231 can determine that the write request is not held in the queue # 1 (233) or the like. .
  • the write request selection unit 231 selects the queue # 1 (233) or the like based only on the memory state information, so that the memory selection information generation unit 240 can be omitted, and the processing of the memory controller 200 is simplified.
  • the memory device 300 configured by a plurality of memory chips is used.
  • the memory device 300 configured by a single semiconductor chip having a plurality of memory banks may be used.
  • the order of issuing write requests can be changed based on the busy state of the plurality of memory banks, and the write time can be shortened. Because.
  • FIG. 24 is a diagram illustrating a configuration example of the memory device 300 according to a modification of the embodiment of the present technology.
  • the memory device 300 includes a memory chip 430.
  • the memory chip 430 includes a memory bank # 1 (431) and a memory bank # 2 (432).
  • the memory bank # 1 (431) and the memory bank # 2 (432) can be independently accessed, and can accept write requests from the memory controller 200 individually.
  • Note that the memory bank # 1 (431) and the memory bank # 2 (432) are examples of the memory modules described in the claims.
  • 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.
  • a plurality of write request holding units for holding a write request for requesting writing to each of a plurality of memory modules having different write times;
  • a memory comprising: a selection unit that selects one of the plurality of write request holding units based on memory state information indicating whether each of the plurality of memory modules is busy or not and outputs the write request controller.
  • the selection unit selects one of the plurality of write request holding units corresponding to the memory module that is not busy.
  • the write request holding unit is configured by a queue that first-in first-out the write request.
  • (4) a memory state information holding unit for holding the memory state information;
  • the selection unit according to any one of (1) to (3), wherein the selection unit selects one of the plurality of write request holding units based on memory state information held in the memory state information holding unit.
  • Memory controller (5) The memory controller according to any one of (1) to (4), further including a data processing unit that performs predetermined preprocessing on the write data related to the write request before being output to the memory module .
  • (6) The memory controller according to (5), wherein the data processing unit performs encoding processing for adding parity for error detection and error correction to the write data related to the write request as the predetermined preprocessing.
  • the memory controller according to (5) wherein the data processing unit performs, as the predetermined preprocessing, a process of reading write data related to the write request from a host computer that has requested the writing.
  • the memory controller according to (5) further including a data holding unit that holds write data on which the predetermined preprocessing has been performed.
  • the selection unit according to (8) wherein the selection unit selects one of the plurality of write request holding units based on the memory state information when write data is not held in the data holding unit. Memory controller.
  • the selection unit selects one of the plurality of write request holding units corresponding to the memory module that is not busy, and is in a busy state when there is no memory module that is not busy.
  • the plurality of write request holding units hold the write request and write data related to the write request for each of the plurality of memory modules,
  • the selection unit selects one of the plurality of write request holding units based on the memory state information and outputs the write request and the write data according to any one of (1) to (10) The memory controller described.
  • a plurality of memory modules having different write times;
  • a plurality of write request holding units for holding a write request for writing to each of the plurality of memory modules for each of the plurality of memory modules;
  • a memory comprising: a selection unit that selects one of the plurality of write request holding units based on memory state information indicating whether each of the plurality of memory modules is busy or not and outputs the write request apparatus.
  • a storage device comprising: a selection unit that selects one of the plurality of write request holding units based on memory state information indicating whether or not each of the plurality of memory modules is in a busy state and outputs the write request When,
  • An information processing system comprising: a host computer that requests the writing to the storage device.
  • a memory control method comprising a selection procedure for selecting each memory module based on memory state information indicating whether it is busy or not and outputting the write request.

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)
  • Memory System (AREA)

Abstract

不揮発メモリ等の書込みに要する時間が一定でないメモリを使用した記憶装置において、書込み時間を短縮する。 複数の書込みリクエスト保持部と選択部とを備えるメモリコントローラにおいて、書込みリクエスト保持部は、書込みに要する時間がそれぞれ異なる複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを複数のメモリモジュール毎に保持する。選択部は、複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて複数の書込みリクエスト保持部のうちの1つを選択して書込みリクエストを出力させる。

Description

メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
 本技術は、メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
に関する。詳しくは、不揮発メモリ等の書込みに要する時間が一定でないメモリを制御するメモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法に関する。
 従来、情報処理システムにおいて、揮発メモリであるDRAM(Dynamic Random Access Memory)および不揮発メモリにより構成された記憶装置が使用されている。ここで、不揮発メモリとしてNAND型フラッシュメモリやReRAM(Resistance RAM)等を挙げることができる。このような記憶装置は、情報処理システムのホストコンピュータが発行したコマンドによりデータのアクセスが行われる。情報処理システムの処理能力を向上させるため、記憶装置に対する高速なアクセスが要求されている。例えば、DRAMを使用する記憶装置において、DRAMに対して発行されたコマンドの履歴をメモリコントローラにおいて記録するシステムが提案されている。このシステムでは、記録した履歴に基づいて、新たに発行するコマンドの順序を変更することにより、データのアクセスに要する時間を短縮している(例えば、特許文献1参照。)。
特開2014-154119号公報
 上述の従来技術は、発行されたコマンドによりプリチャージ等のビジー状態にあるDRAMのバンクをコマンドの履歴に基づいて把握し、他のバンクへのコマンド発行を優先して行うことによりデータのアクセスに要する時間を短縮するものである。DRAMでは、プリチャージや書込み等に要する時間が一定しており、ビジー状態から復帰するまでの時間の予測が可能であるため、容易にコマンドの発行順序を変更することができ、書込み等に要する時間を短縮することができる。
 これに対し、ReRAM等の不揮発メモリにおいては、書込みが正常に行われたか否かを判断するベリファイを行う必要がある。このベリファイの結果、書込みが正常に行われていないと判断された場合には、再度書込みが不揮発メモリにおいて行われる。このように、不揮発メモリにおいては、書込みに要する時間が一定値にならない。このような不揮発メモリを使用した記憶装置に上述の従来技術を適用すると、コマンド発行順序の適切な変更ができず、書込みに要する時間の短縮ができないという問題がある。
 本技術はこのような状況に鑑みて生み出されたものであり、不揮発メモリ等の書込みに要する時間が一定でないメモリを使用した記憶装置において、書込み時間を短縮することを目的とする。
 本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、書込みに要する時間がそれぞれ異なる複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを上記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部と、上記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて上記複数の書込みリクエスト保持部のうちの1つを選択して上記書込みリクエストを出力させる選択部とを具備するメモリコントローラおよびメモリの制御方法である。ここで、メモリモジュールとは、データを記憶するモジュールであり、単一のまたは複数のメモリチップ等により構成されたモジュールである。このメモリモジュールは、それぞれ独立したアクセスが可能であり、書込みを並列して行うことができるモジュールである。また、ビジー状態とは、メモリモジュールに対して新たな書込みリクエストを実行させることができない状態である。これにより、ビジー状態か否かを示すメモリ状態情報に基づいて、メモリモジュールの各々に対する複数の書込みリクエスト保持部のうちの1つが選択されて、書込みリクエストが出力されるという作用をもたらす。
 また、この第1の側面において、上記選択部は、ビジー状態ではない上記メモリモジュールに対応する上記複数の書込みリクエスト保持部のうちの1つを選択してもよい。これにより、ビジー状態でない上記メモリモジュールに対応する書込みリクエスト保持部が選択されて、書込みリクエストが出力されるという作用をもたらす。
 また、この第1の側面において、上記書込みリクエスト保持部は、上記書込みリクエストを先入れ先出しするキューにより構成されてもよい。これにより、早く入力された書込みリクエストから順に処理が行われるという作用をもたらす。
 また、この第1の側面において、上記メモリ状態情報を保持するメモリ状態情報保持部をさらに備え、上記選択部は、上記メモリ状態情報保持部に保持されたメモリ状態情報に基づいて上記複数の書込みリクエスト保持部のうちの1つを選択してもよい。これにより、保持されたメモリ状態情報に基づいて、書込みリクエスト保持部が選択されて書込みリクエストが出力されるという作用をもたらす。
 また、この第1の側面において、上記書込みリクエストに係る書込みデータに対して上記メモリモジュールに出力される前に所定の前処理を行うデータ処理部をさらに備えてもよい。ここで、前処理とは、書込みデータに対して上記メモリモジュールに出力される前に実行される処理である。これにより、書込みデータに対して所定の前処理が行われるという作用をもたらす。
 また、この第1の側面において、上記データ処理部は、上記書込みリクエストに係る書込みデータに誤り検出および誤り訂正のためのパリティを付加する符号化処理を上記所定の前処理として行ってもよい。これにより、書込みデータの符号化処理が上記所定の前処理として行われるという作用をもたらす。
 また、この第1の側面において、上記データ処理部は、上記書込みリクエストに係る書込みデータを上記ホストコンピュータから読み出す処理を上記所定の前処理として行ってもよい。これにより、書込みデータを読み出す処理が上記所定の前処理として行われるという作用をもたらす。
 また、この第1の側面において、上記所定の前処理が行われた書込みデータを保持するデータ保持部をさらに備えてもよい。これにより、上記所定の前処理が行われた書込みデータが保持されるという作用をもたらす。
 また、この第1の側面において、上記選択部は、上記データ保持部に書込みデータが保持されていない場合に上記メモリ状態情報に基づいて上記複数の書込みリクエスト保持部のうちの1つを選択してもよい。これにより、上記データ保持部に上記所定の前処理が行われた書込みデータが保持されていない場合に上記複数の書込みリクエスト保持部のうちの1つが選択されて、書込みリクエストが出力されるという作用をもたらす。
 また、この第1の側面において、上記選択部は、ビジー状態ではない上記メモリモジュールに対応する上記複数の書込みリクエスト保持部のうちの1つを選択し、ビジー状態ではない上記メモリモジュールが存在しない場合にはビジー状態の上記メモリモジュールに対応する上記複数の書込みリクエスト保持部のうちの1つを選択してもよい。これにより、上記データ保持部に書込みデータが保持されていない場合に上記選択部による上記書込みリクエスト保持部の選択が行われ、ビジー状態ではない上記メモリモジュールが存在しない場合に、ビジー状態の上記メモリモジュールに対応する上記複数の書込みリクエスト保持部のうちの1つが選択されるという作用をもたらす。
 また、この第1の側面において、上記複数の書込みリクエスト保持部は、上記書込みリクエストと当該書込みリクエストに係る書込みデータとを上記複数のメモリモジュール毎に保持し、上記選択部は、上記メモリ状態情報に基づいて上記複数の書込みリクエスト保持部のうちの1つを選択して上記書込みリクエストおよび上記書込みデータを出力させてもよい。これにより、ビジー状態か否かを示すメモリ状態情報に基づいて、メモリモジュールの各々に対する複数の書込みリクエスト保持部のうちの1つが選択されて、書込みリクエストおよび書込みデータが出力されるという作用をもたらす。
 また、本技術の第2の側面は、書込みに要する時間がそれぞれ異なる複数のメモリモジュールと、上記複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを上記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部と、上記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて上記複数の書込みリクエスト保持部のうちの1つを選択して上記書込みリクエストを出力させる選択部とを具備する記憶装置である。これにより、ビジー状態か否かを示すメモリ状態情報に基づいて、メモリモジュールの各々に対する複数の書込みリクエスト保持部のうちの1つが選択されて、書込みリクエストが出力されるという作用をもたらす。
 また、本技術の第3の側面は、書込みに要する時間がそれぞれ異なる複数のメモリモジュールと、上記複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを上記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部と、上記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて上記複数の書込みリクエスト保持部のうちの1つを選択して上記書込みリクエストを出力させる選択部とを備える記憶装置と、上記記憶装置に上記書込みを要求するホストコンピュータとを具備する情報処理システムである。これにより、ビジー状態か否かを示すメモリ状態情報に基づいて、メモリモジュールの各々に対する複数の書込みリクエスト保持部のうちの1つが選択されて、書込みリクエストが出力されるという作用をもたらす。
 本技術によれば、書込みに要する時間が一定でないメモリを使用した記憶装置において、書込み時間を短縮するという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における情報処理システムの構成例を示す図である。 本技術の実施の形態におけるメモリモジュールの構成例を示す図である。 本技術の第1の実施の形態におけるメモリコントローラ200の構成例を示す図である。 本技術の第1の実施の形態における書込みリクエスト管理部230の構成例を示す図である。 本技術の第1の実施の形態における書込みリクエスト制御部280の構成例を示す図である。 本技術の実施の形態における書込み処理の処理手順の一例を示す図である。 本技術の第1の実施の形態における書込みリクエスト管理部230における処理の処理手順の一例を示す図である。 本技術の第1の実施の形態における書込みリクエスト処理部260における処理の処理手順の一例を示す図である。 本技術の第1の実施の形態における書込みリクエスト制御部280における処理の処理手順の一例を示す図である。 本技術の第1の実施の形態における書込みリクエストの処理の一例を示す図である。 本技術の第1の実施の形態における書込みリクエストの処理の他の例を示す図である。 本技術の第2の実施の形態におけるメモリコントローラ200の構成例を示す図である。 本技術の第2の実施の形態における書込みリクエスト制御部280の構成例を示す図である。 本技術の第2の実施の形態における書込みリクエスト制御部280における処理の処理手順の一例を示す図である。 本技術の第2の実施の形態における書込みリクエスト発行および書込みデータ出力処理(ステップS970)の処理手順の一例を示す図である。 本技術の第2の実施の形態における書込みリクエストの処理の一例を示す図である。 本技術の第3の実施の形態における書込みリクエスト制御部280の構成例を示す図である。 本技術の第3の実施の形態における書込みリクエスト発行および書込みデータ出力処理(ステップS980)の処理手順の一例を示す図である。 本技術の第3の実施の形態における書込みリクエストの処理の一例を示す図である。 本技術の第4の実施の形態におけるメモリコントローラ200の構成例を示す図である。 本技術の第5の実施の形態におけるメモリコントローラ200の構成例を示す図である。 本技術の第5の実施の形態における書込みリクエスト管理部230の構成例を示す図である。 本技術の第6の実施の形態におけるメモリコントローラ200の構成例を示す図である。 本技術の実施の形態の変形例におけるメモリ装置300の構成例を示す図である。
 以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
 1.第1の実施の形態(書込みリクエストバッファを備える場合の例)
 2.第2の実施の形態(書込みリクエストバッファおよび書込みデータバッファを備える場合の例)
 3.第3の実施の形態(メモリモジュール毎に書込みデータバッファを備える場合の例)
 4.第4の実施の形態(書込みコマンドをキューに保持する場合の例)
 5.第5の実施の形態(書込みリクエストおよび書込みデータをキューに保持する場合の例)
 6.第6の実施の形態(メモリ状態情報に基づいてキューを選択する場合の例)
 7.変形例
 <1.第1の実施の形態>
 [情報処理システムの構成]
 図1は、本技術の実施の形態における情報処理システムの構成例を示す図である。同図の情報処理システムは、ホストコンピュータ100と、メモリコントローラ200と、メモリ装置300とを備える。なお、メモリコントローラ200およびメモリ装置300は、記憶装置を構成する。
 ホストコンピュータ100は、情報処理システムにおける各種の処理を行うものである。このホストコンピュータ100は、メモリコントローラ200を介して、メモリ装置300に対して書込みまたは読出し等のコマンドを発行し、書込みおよび読出しを要求する。信号線109は、ホストコンピュータ100とメモリコントローラ200とを電気的に接続する信号線である。
 メモリコントローラ200は、メモリ装置300を制御するものである。このメモリコントローラ200は、ホストコンピュータ100から発行された書込みおよび読出しコマンドを解釈し、これに基づく書込みおよび読出しリクエストをメモリ装置300に対して発行する。
 メモリ装置300は、データを記憶するものである。メモリコントローラ200から発行されたリクエストに基づいて、このデータに対するアクセスが行われる。この際、メモリ装置300とメモリコントローラ200との間でデータの転送が行われる。このメモリ装置300は、複数のメモリモジュールにより構成される。ここで、メモリモジュールとは、データを記憶するモジュールであり、単一のまたは複数のメモリチップ等により構成されたモジュールである。同図のメモリ装置300は、2個のメモリモジュールにより構成されることを想定する。すなわち、同図のメモリ装置300は、メモリモジュール#1(310)と、メモリモジュール#2(320)とを備える。これらのメモリモジュールは、それぞれ独立したアクセスが可能であり、書込みを並列して行うことができる。
 また、メモリチップには、不揮発メモリであるReRAMにより構成されたメモリチップを想定する。このReRAMは、メモリセルに配置された記憶素子の抵抗値を可逆的に変化させてデータの記憶を行う半導体メモリである。例えば、記憶素子が高抵抗の状態(High Resistance State:HRS)を値「1」に、低抵抗の状態(Low Resistance State:LRS)を値「0」に対応させてデータを記憶させることができる。逆に、HRSを値「0」に、LRSを値「1」に対応させることも可能である。また、記憶素子をHRSからLRSに変化させる処理をセット処理と称し、記憶素子をLRSからHRSに変化させる処理をリセット処理と称する。これらセット処理およびリセット処理を行うことによりメモリセルに対して所望のデータを書き込むことができる。なお、ReRAMは、ページを単位としてアクセスされる。このため、セット処理およびリセット処理についても、ページを単位として実行される。
 信号線309は、メモリコントローラ200とメモリ装置300とを電気的に接続する信号線である。
 ホストコンピュータ100は、書込みを要求する際に、書込みコマンドとこれに付随する書込みデータをメモリコントローラ200に対して発行する。ここで、書込みコマンドとは、書込みを表すオペコード、書込み先アドレス、書込みデータ数およびホストコンピュータ100の記憶領域における書込みデータのアドレスにより構成されたコマンドを表している。メモリコントローラ200は、書込みコマンドに基づいて書込みリクエストを生成するとともに、ホストコンピュータ100に対して書込みデータのアドレスを発行して書込みデータの転送を要求する。その後、ホストコンピュータ100からメモリコントローラ200に転送された書込みデータを書込みリクエストとともにメモリ装置300に対して出力する。この際、メモリコントローラ200は、メモリモジュール#1(310)および#2(320)のいずれかを書込み対象のメモリモジュールとして指定する。また、メモリコントローラ200は、書込みコマンドに含まれる書込み先アドレスをページのアドレスおよびメモリモジュール番号に変換するアドレス変換を行う。ここでメモリモジュール番号とは、上述のメモリモジュール#1(310)等を指定するための番号である。メモリ装置300は、このリクエストに基づいて書込みを行う。その後、メモリ装置300は、書込みの結果をレスポンスとしてメモリコントローラ200に対して出力する。
 [メモリモジュールの構成]
 図2は、本技術の実施の形態におけるメモリモジュールの構成例を示す図である。同図は、図1において説明したメモリモジュールの構成例を表したものである。同図におけるaは、メモリチップ411を備えるメモリモジュール410の構成を表したものである。同図におけるbは、メモリチップ421および422を備えるメモリモジュール420の構成を表したものである。
 [メモリコントローラの構成]
 図3は、本技術の第1の実施の形態におけるメモリコントローラ200の構成例を示す図である。このメモリコントローラ200は、ホストインターフェース201と、書込みリクエスト生成部210と、データ転送制御部221と、書込みリクエスト管理部230とを備える。また、メモリコントローラ200は、メモリ選択情報生成部240と、ECC処理部222と、書込みリクエスト処理部260と、メモリ状態情報保持部270と、書込みリクエスト制御部280と、メモリインターフェース202とをさらに備える。なお、データ転送制御部221およびECC処理部222は、データ処理部220を構成する。
 ホストインターフェース201は、ホストコンピュータ100との間のやり取りを行うインターフェースである。メモリインターフェース202は、メモリ装置300との間のやり取りを行うインターフェースである。
 書込みリクエスト生成部210は、ホストコンピュータ100が発行した書込みコマンドを解釈して書込みリクエストを生成するものである。また、書込みリクエスト生成部210は、上述したアドレス変換を行う。
 データ転送制御部221は、書込みデータの転送を制御するものである。このデータ転送制御部221は、書込みコマンドに含まれるホストコンピュータ100の記憶領域における書込みデータのアドレスに基づいて、ホストコンピュータ100から書込みデータを読み出すデータ転送処理を行う。このデータ転送処理は、後述する書込みリクエスト処理部260により出力されたデータ転送要求に基づいて行われる。
 ECC処理部222は、書込みデータの符号化を行うものである。ここで、符号化とは、書込みデータにパリティを付加してECC符号にする処理である。このパリティには、例えば、BCH(Bose Chaudhuri Hocquenghem)符号を使って生成されたパリティを使用することができる。ECC処理部222は、データ転送制御部221から書込みデータが出力されると、出力された書込みデータを符号化する符号化処理を開始する。符号化処理が終了した際、ECC処理部222は、後述する書込みリクエスト制御部280に対して処理終了通知を出力する。その後、ECC処理部222は、書込みリクエスト制御部280から出力されるデータ出力要求に基づいて符号化した書込みデータを書込みリクエスト制御部280に対して出力する。
 書込みリクエスト管理部230は、書込みリクエスト生成部210により生成された書込みリクエストを管理するものである。この書込みリクエスト管理部230は、次のように書込みリクエストの管理を行う。まず、書込みリクエスト管理部230は、メモリ装置300に含まれるメモリモジュール#1(310)および#2(320)のそれぞれに対応する複数の書込みリクエストを保持する。次に、書込みリクエスト管理部230は、後述するメモリ選択情報生成部240により出力されたメモリ選択情報に基づいて、この保持された書込みリクエストを選択し、後述する書込みリクエスト処理部260に対して書込みリクエストを出力する。この書込みリクエストの出力は、書込みリクエスト処理部260からのリクエスト出力要求に基づいて行われる。また、書込みリクエスト管理部230は、リクエストを保持しているか否かの情報であるリクエスト保持情報をメモリ選択情報生成部240に対して出力する。書込みリクエスト管理部230の構成の詳細については、後述する。
 書込みリクエスト処理部260は、書込みリクエストに対する処理を行うものである。この書込みリクエスト処理部260は、後述する書込みリクエスト制御部280から出力された書込みリクエスト情報に基づいて、書込みリクエスト管理部230に対してリクエスト出力要求を発行する。書込みリクエスト管理部230から書込みリクエストが出力されると、書込みリクエスト処理部260は、この出力された書込みリクエストを書込みリクエスト制御部280に対して出力するとともにデータ転送制御部221に対してデータ転送要求を発行する。
 書込みリクエスト制御部280は、書込みリクエスト発行の制御を行うものである。この書込みリクエスト制御部280は、書込みリクエストを保持する書込みリクエストバッファを備え、書込みリクエスト処理部260により出力された書込みリクエストをこの書込みリクエストバッファに保持する。また、書込みリクエスト制御部280は、書込みリクエスト情報を書込みリクエスト処理部260に対して出力する。ここで、書込みリクエスト情報とは、書込みリクエストバッファの状態を示す情報であり、書込みリクエストバッファに書込みリクエストが保持されているか否かを示す情報である。また、上述のように書込みリクエスト制御部280は、ECC処理部222が出力した処理終了通知に基づいて、データ出力要求をECC処理部222に対して発行する。その後、ECC処理部222から出力された書込みデータと書込みリクエストバッファに保持された書込みリクエストとをメモリ装置300に対して発行する。この発行は、メモリインターフェース202を介して行われる。この際、書込みリクエスト制御部280は、書込みリクエストの発行の情報であるリクエスト発行情報を後述するメモリ状態情報保持部270に対して出力する。
 発行された書込みリクエストに対するレスポンスがメモリインターフェース202を介して入力されると、書込みリクエスト制御部280は、このレスポンスをメモリ状態情報保持部270に対して出力する。書込みリクエスト制御部280の構成の詳細については、後述する。
 メモリ状態情報保持部270は、メモリ装置300のメモリモジュール#1(310)および#2(320)の状態の情報を保持するものである。このメモリ状態情報保持部270は、メモリモジュール#1(310)等がビジー状態にあるか否かを示す情報であるメモリ状態情報を保持する。ここで、ビジー状態とは、メモリモジュール#1(310)等において既に処理を実行している状態であり、これらメモリモジュールに対して新たな書込みリクエストを実行させることができない状態である。また、ビジー状態でない状態は、アイドル状態と称される。メモリ状態情報保持部270は、書込みリクエスト制御部280から出力されたリクエスト発行情報およびレスポンスに基づいてビジー状態か否かを判断する。具体的には、書込みリクエストが発行され、レスポンスを出力していないメモリモジュールをビジー状態にあると判断する。これに基づいて、メモリ状態情報保持部270は、メモリ状態情報を生成して保持するとともに、このメモリ状態情報をメモリ選択情報生成部240に対して出力する。メモリ状態情報は、例えば、メモリモジュール#1(310)および#2(320)毎の1ビットの情報により表すことができる。そして、メモリモジュールがビジー状態の時に値「1」、ビジー状態でない時に値「0」として表すことができる。
 メモリ選択情報生成部240は、メモリ選択情報を生成するものである。このメモリ選択情報生成部240は、書込みリクエスト管理部230から出力されたリクエスト保持情報とメモリ状態情報保持部270から出力されたメモリ状態情報とに基づいて書込みリクエストを発行するメモリモジュールを選択する。次に、この選択結果をメモリ選択情報として書込みリクエスト管理部230に対して出力する。メモリモジュールの選択は、書込みリクエスト管理部230にリクエストが保持され、ビジー状態でないメモリモジュールを選択することにより行われる。メモリ選択情報は、例えば、上述のメモリ状態情報と同様に、メモリモジュール#1(310)および#2(320)毎の1ビットの情報により表すことができる。そして、値「1」により当該メモリモジュールが選択されていることを表すことができる。
 選択可能なメモリモジュールが複数存在する場合、メモリ選択情報生成部240は、何れか1つのメモリモジュールを選択する。この選択の方法として、複数のメモリモジュールを所定の順序により選択する方法を採ることができる。例えば、メモリモジュール番号の順に選択する方法を採ることができる。この場合には、それぞれのメモリモジュールに対して均等にアクセスが行われるため、発行されたコマンドの順にリクエストが選択されることとなる。また、メモリモジュール番号が最も小さいメモリモジュールを選択する方法を採ることもできる。この場合には、簡便な処理によりメモリモジュールの選択が可能となる。
 データ処理部220は、書込みデータに対して所定の前処理を行うものである。ここで、前処理とは、書込みデータに対して上記メモリモジュールに出力される前に実行される処理である。この所定の前処理として、例えば、書込みデータのホストコンピュータからの転送処理および書込みデータの符号化処理を行うことができる。本技術の第1の実施の形態におけるデータ処理部220は、データ転送制御部221およびECC処理部222を備え、書込みデータのホストコンピュータからの転送処理および書込みデータの符号化処理を所定の前処理として実行する。
 [書込みリクエスト管理部の構成]
 図4は、本技術の第1の実施の形態における書込みリクエスト管理部230の構成例を示す図である。この書込みリクエスト管理部230は、キュー#1(233)およびキュー#2(234)と、書込みリクエスト選択部231とを備える。
 キュー#1(233)およびキュー#2(234)は、書込みリクエストを保持するものである。これらキュー#1(233)および#2(234)は、メモリ装置300に含まれるメモリモジュール#1(310)および#2(320)に1対1に対応し、これらのメモリモジュール対する書込みリクエストをそれぞれ保持する。例えば、キュー#1(233)はメモリモジュール#1(310)の書込みリクエストを保持し、キュー#2(234)はメモリモジュール#2(320)の書込みリクエストを保持する。このように、書込みリクエスト管理部230は、メモリ装置300に含まれるメモリモジュールと同数のキューを備える。
 これらキュー#1(233)および#2(234)は、書込みリクエストの先入れ先出しを行う。すなわち、キュー#1(233)および#2(234)は、FIFO(First-In First-Out)メモリにより構成される。これにより、先に発行された書込みコマンドに応じた書込みリクエストが先に処理され、ホストコンピュータ100において意図した順にデータの書込みが行われる。また、キュー#1(233)および#2(234)は、前述したリクエスト保持情報を生成し、メモリ選択情報生成部240に対して出力する。このリクエスト保持情報は、例えば、1ビットの情報により表すことができる。そして、値「1」により当該キューにおいて書込みリクエストが保持されていることを表すことができる。本技術の実施の形態のメモリコントローラ200は、2つのキュー#1(233)および#2(234)を備えるため、書込みリクエスト管理部230から出力されるリクエスト保持情報のサイズは、合計2ビットになる。なお、上述の書込みリクエスト管理部230は、キュー#1(233)および#2(234)を備える構成にしているが、この構成に限定されるものではない。例えば、キュー#1(233)および#2(234)の代わりに先入れ先出しを行わない2つの記憶装置を備える構成とし、書込みリクエストを保持させることもできる。なお、この記憶装置は、請求の範囲に記載の書込みリクエスト保持部の一例である。
 書込みリクエスト選択部231は、キュー#1(233)または#2(234)の何れか1つを選択し、保持された書込みリクエストを出力させるものである。この書込みリクエスト選択部231は、書込みリクエスト処理部260からのリクエスト出力要求が入力されると、キュー#1(233)または#2(234)の選択を行い、選択したキュー#1(233)等から書込みリクエストを取り出す。次に、書込みリクエスト選択部231は、取り出した書込みリクエストを書込みリクエスト処理部260に対して出力する。書込みリクエストの選択は、メモリ選択情報生成部240から出力されたメモリ選択情報に基づいて行われる。なお、書込みリクエスト選択部231は、請求の範囲に記載の選択部の一例である。
 [書込みリクエスト制御部の構成]
 図5は、本技術の第1の実施の形態における書込みリクエスト制御部280の構成例を示す図である。この書込みリクエスト制御部280は、出力制御部281と、書込みリクエストバッファ282とを備える。
 書込みリクエストバッファ282は、書込みリクエスト処理部260から出力された書込みリクエストを保持し、出力するものである。この書込みリクエストバッファ282は、後述する出力制御部281により制御される。
 出力制御部281は、書込みリクエストおよび書込みデータの出力を制御するものである。また、出力制御部281は、書込みリクエスト制御部280の全体を制御する。この出力制御部281は、書込みリクエストバッファ282の状態に基づく書込みリクエスト情報の生成および出力を行う。この書込みリクエスト情報は、例えば、1ビットの情報により表すことができる。そして、値「1」により書込みリクエストバッファ282に書込みリクエストが保持されていることを表すことができる。この場合、書込みリクエスト処理部260は、書込みリクエスト情報が値「0」の際に、書込みリクエスト管理部230に対してリクエスト出力要求を発行することとなる。また、出力制御部281は、ECC処理部222による処理終了通知の入力に応答し、データ出力要求をECC処理部に対して発行する。その後、ECC処理部222から書込みデータが出力されると、出力制御部281は、書込みリクエストバッファ282に対して書込みリクエストを出力させるとともに、書込みデータを出力する。その後、出力制御部281は、リクエスト発行情報を出力する。
 [不揮発メモリの書込み処理]
 図6は、本技術の実施の形態における書込み処理の処理手順の一例を示す図である。同図は、ReRAMにおいて行われる書込み処理を表したものである。前述のように、書込みは、ページを単位として行われる。まず、セット処理が行われる(ステップS901)。次に、セットベリファイ処理が行われる(ステップS902)。この処理は、セット処理が正常に行われたか否かを判断する処理である。この結果、セット処理が失敗した場合には(ステップS903:No)、ReRAMは、セット処理の失敗回数が規定の回数に達したか否かを判断する(ステップS904)。失敗回数が規定の回数未満の場合には(ステップS904:No)、ReRAMは、ステップS901からの処理を再度実行する。一方、セット処理の失敗回数が規定の回数に達した場合には(ステップS904:Yes)、ReRAMは、書込み処理を終了する。この場合、ReRAMは、書込みが失敗した旨をレスポンスとしてメモリコントローラ200に対して出力する。
 一方、ステップS903において、セット処理が成功した場合には(ステップS903:Yes)、リセット処理が行われ(ステップS905)、リセットベリファイ処理が行われる(ステップS906)。この処理は、リセット処理が正常に行われたか否かを判断する処理である。この結果、リセット処理が失敗した場合は(ステップS907:No)、ReRAMは、リセット処理の失敗回数が規定の回数に達したか否かを判断する(ステップS908)。失敗回数が規定の回数未満の場合には(ステップS908:No)、ReRAMは、ステップS905からの処理を再度実行する。一方、リセット処理の失敗回数が規定の回数に達した場合には(ステップS908:Yes)、ReRAMは、書込み処理を終了する。この場合においても、ReRAMは、書込みが失敗した旨のレスポンスをメモリコントローラ200に出力する。一方、ステップS907において、リセット処理が成功した場合には(ステップS907:Yes)、ReRAMは、書込みが成功した旨のレスポンスをメモリコントローラ200に対して出力し、書込み処理を終了する。
 このように、ReRAMの書込みにおいては、ベリファイ処理の結果に応じてセット処理およびリセット処理が繰返し実行される。このため、ReRAMにおける書込みに要する時間は、変化することとなる。
 [書込みリクエスト管理部の処理]
 図7は、本技術の第1の実施の形態における書込みリクエスト管理部230における処理の処理手順の一例を示す図である。まず、書込みリクエスト管理部230は、書込みリクエスト生成部210から書込みリクエストが入力されたか否かを判断する(ステップS911)。書込みリクエストが入力された場合は(ステップS911:Yes)、書込みリクエスト管理部230は、キュー#1(233)または#2(234)のうち対象のキューに書込みリクエストを保持させる(ステップS915)。その後、書込みリクエスト管理部230は、ステップS916の処理に移行する。
 ステップS911において、書込みリクエストが入力されていない場合には(ステップS911:No)、書込みリクエスト選択部231は、書込みリクエスト処理部260によりリクエスト出力要求が発行されたか否かを判断する(ステップS912)。リクエスト出力要求が発行されていない場合には(ステップS912:No)、書込みリクエスト管理部230は、ステップS911からの処理を再度実行する。一方、リクエスト出力要求が発行されていた場合には(ステップS912:Yes)、書込みリクエスト選択部231は、メモリ選択情報生成部240からメモリ選択情報が入力されるまで待機する(ステップS913:No)。メモリ選択情報が入力されると(ステップS913:Yes)、書込みリクエスト選択部231は、メモリ選択情報に基づいて、キュー#1(233)または#2(234)を選択し、選択されたキューから書込みリクエストを取り出す。そして、取り出した書込みリクエストを書込みリクエスト処理部260に対して出力する(ステップS914)。その後、書込みリクエスト管理部230は、ステップS916の処理に移行する。
 ステップS916において、キュー#1(233)および#2(234)は、リクエスト保持情報を更新する(ステップS916)。その後、書込みリクエスト管理部230は、ステップS911の処理に移行する。
 [書込みリクエスト処理部の処理]
 図8は、本技術の第1の実施の形態における書込みリクエスト処理部260における処理の処理手順の一例を示す図である。まず、書込みリクエスト処理部260は、書込みリクエスト制御部280の書込みリクエストバッファ282に空きが生じるまで待機する(ステップS921:No)。これは、書込みリクエスト制御部280から出力された書込みリクエスト情報に基づいて判断される。その結果、書込みリクエストバッファ282に空きが生じた場合には(ステップS921:Yes)、書込みリクエスト処理部260は、書込みリクエスト管理部230に書込みリクエストの出力を要求する(ステップS922)。これは、書込みリクエスト管理部230に対してリクエスト出力要求を発行することにより行われる。
 その後、書込みリクエスト処理部260は、書込みリクエストが入力されるまで待機する(ステップS923:No)。書込みリクエスト管理部230から書込みリクエストが入力されると(ステップS923:Yes)、書込みリクエスト処理部260は、この書込みリクエストを書込みリクエスト制御部280に対して出力する(ステップS924)。次に、書込みリクエスト処理部260は、データ転送制御部221に対してデータの転送を要求する(ステップS925)。これは、データ転送制御部221に対してデータ転送要求を発行することにより行われる。その後、書込みリクエスト処理部260は、ステップS921の処理に移行する。
 [書込みリクエスト制御部の処理]
 図9は、本技術の第1の実施の形態における書込みリクエスト制御部280における処理の処理手順の一例を示す図である。まず、書込みリクエスト制御部280は、メモリ装置300からレスポンスが入力されたか否かを判断する(ステップS931)。レスポンスが入力された場合には(ステップS931:Yes)、書込みリクエスト制御部280は、このレスポンスをメモリ状態情報保持部270に対して出力することにより、レスポンスを転送する(ステップS939)。その後、書込みリクエスト制御部280は、再度ステップS931の処理に移行する。一方、レスポンスが入力されていない場合には(ステップS931:No)、書込みリクエスト制御部280は、書込みリクエスト処理部260から書込みリクエストが入力されているか否かを判断する(ステップS932)。書込みリクエストが入力されていた場合には(ステップS932:Yes)、書込みリクエストバッファ282が、この入力された書込みリクエストを保持する(ステップS933)。その後、書込みリクエスト制御部280は、ステップS941の処理に移行する。
 ステップS932において、書込みリクエストが入力されていない場合には(ステップS932:No)、出力制御部281は、書込みリクエストバッファ282に書込みリクエストが保持されているか否かを判断する(ステップS934)。書込みリクエストが保持されていない場合には(ステップS934:No)、出力制御部281は、ステップS931の処理に移行する。一方、書込みリクエストが保持されている場合には(ステップS934:Yes)、出力制御部281は、ステップS935の処理に移行する。
 ステップS935において、出力制御部281は、ECC処理部222から処理終了通知が出力されているか否かを判断する(ステップS935)。処理終了通知が出力されていない場合には(ステップS935:No)、出力制御部281は、ステップS931の処理に移行する。一方、処理終了通知が出力されている場合には(ステップS935:Yes)、出力制御部281は、ECC処理部222に対してデータの出力を要求する(ステップS936)。これは、ECC処理部222にデータ出力要求を発行することにより行われる。これにより、ECC処理部222から書込みデータが出力される。出力制御部281は、書込みリクエストバッファ282に保持された書込みリクエストを発行し、ECC処理部222から出力された書込みデータを出力する。これらは、メモリインターフェース202を介してメモリ装置300に出力される(ステップS937)。次に、出力制御部281は、リクエスト発行情報をメモリ状態情報保持部270に対して出力する(ステップS938)。その後、出力制御部281は、書込みリクエスト情報を更新し(ステップS941)、ステップS931の処理に移行する。
 [書込みリクエスト処理]
 図10は、本技術の第1の実施の形態における書込みリクエストの処理の一例を示す図である。同図は、メモリコントローラ200における書込みリクエストを処理する際の各部の状態を表した図である。同図において、コマンド入力は、ホストコンピュータ100により発行された書込みコマンドを表す。キュー#1リクエスト入力およびキュー#2リクエスト入力は、それぞれ書込みリクエスト管理部230のキュー#1(233)および#2(234)に入力された書込みリクエストを表す。リクエスト保持情報は、2ビットの2進数表記としており、上位ビットおよび下位ビットがそれぞれキュー#2(234)および#1(233)のリクエスト保持情報を表す。同様に、メモリ状態情報は、上位ビットおよび下位ビットがそれぞれメモリモジュール#2(320)および#1(310)の状態を表す。メモリ選択情報は、上位ビットおよび下位ビットがそれぞれメモリモジュール#2(320)および#1(310)に対する選択を表す。これらの初期状態は、いずれも値「00」である。
 同図において、書込みリクエストバッファは、書込みリクエストバッファ282に保持された書込みリクエストを表す。データ転送は、データ転送制御部221による転送処理の対象の書込みデータを表す。ECC処理は、ECC処理部222による符号化処理の対象の書込みデータを表す。書込みリクエスト出力および書込みデータ出力は、それぞれ書込みリクエスト制御部280から出力された書込みリクエストおよび書込みデータを表す。これらは、メモリコントローラ200により発行された書込みリクエストとこれに付随する書込みデータに該当する。レスポンス入力は、メモリ装置300により入力されたレスポンスを表す。
 T0乃至T3において、ホストコンピュータ100から書込みコマンド#1乃至4が順に発行される。これらのコマンドのうち、コマンド#1および#3がメモリモジュール#1(310)に対する書込みコマンドであり、コマンド#2および#4がメモリモジュール#2(320)に対する書込みコマンドであることを想定する。リクエスト生成部210により、これらのコマンドに基づくリクエストが順に生成され、対応するキュー#1(233)および#2(234)に保持される。キュー#1(233)に書込みリクエストが保持されることにより、リクエスト保持情報が値「00」から「01」に変化する(T1)。同様に、キュー#2(234)に書込みリクエストが保持されることにより、リクエスト保持情報が値「01」から「11」に変化する(T2)。
 同図に表したように、初期状態では、メモリモジュール#1(310)および#2(320)はビジー状態ではなく、メモリ状態情報は値「00」である。この状態で、T1においてリクエスト保持情報が値「01」に変化することにより、メモリ選択情報が値「01」に変化する。これにより、書込みリクエスト管理部230の書込みリクエスト選択部231は、キュー#1(233)を選択する。選択されたキュー#1(233)に保持されていた書込みリクエスト#1が書込みリクエスト処理部260を経由して書込みリクエスト制御部280の書込みリクエストバッファ282に転送されて保持される。この書込みリクエスト#1に対応する書込みデータ#1に対してデータ転送処理および符号化処理が順に実行される。この符号化処理が終了した後、書込みリクエストバッファ282に保持されていた書込みリクエスト#1および符号化処理が行われた書込みデータ#1の出力が開始される。上述のように、メモリ選択情報の各ビットは、リクエスト保持情報の対応するビットが値「1」かつメモリ状態情報の対応するビットが値「0」のとき値「1」になる。
 この際、書込みリクエスト制御部280の出力制御部281からリクエスト発行情報が出力され、メモリ状態情報が値「01」に変化する。これは、メモリモジュール#1(310)がビジー状態にあることを表している。これにより、メモリ選択情報は、値「10」に変化する。なお、T2において、メモリモジュール#1(310)および#2(320)の両方がビジー状態でなく、キュー#1(233)および#2(234)の両方にリクエストが保持された状態になる。前述のように、選択可能なメモリモジュールが複数存在する場合には、メモリ選択情報生成部240は、キュー#1(233)または#2(234)の何れか一方を選択し、メモリ選択情報を生成する。なお、同図の例では、T1においてメモリ選択情報を値「01」とし、既にキュー#1(233)からの書込みリクエスト#1の出力を開始している。このため、T2においてリクエスト保持情報が変化した場合であっても、メモリ選択情報は値「01」のままにすることができる。
 T3乃至T4において、メモリ選択情報に基づいてキュー#2(234)が選択される。T0乃至T3と同様の処理により、書込みリクエスト#2および書込みデータ#2が出力される。この結果、メモリ状態情報は値「11」になり、メモリ選択情報は、値「00」になる。
 T4乃至T8において、メモリコントローラ200は、メモリ装置300からレスポンスが入力されるまで待機する。T5において、書込みリクエスト#2に対応するレスポンス#2が入力されると、メモリ状態情報が値「01」に変化し、メモリ選択情報が値「10」に変化する。これにより、キュー#2(234)が選択され、これに保持されていた書込みリクエスト#4が書込みリクエストバッファ282に転送されて保持される。これにより、リクエスト保持情報が値「01」に変化し(T6)、メモリ選択情報が値「00」に変化する。また、書込みリクエスト#4に対応する書込みデータ#4に対してデータ転送処理および符号化処理が順に実行され、この符号化処理が行われた書込みデータ#4が書込みリクエスト#4とともに出力される。
 一方、T7において、書込みリクエスト#1に対応するレスポンス#1が入力されるとメモリ状態情報は値「00」に変化し、メモリ選択情報は値「01」に変化する。その後、書込みリクエスト#4および書込みデータ#4の出力開始に伴い、メモリ状態情報は、値「10」に変化する。
 T8乃至T10において、T3乃至T4と同様に書込みリクエスト#3および書込みデータ#3が出力される。キュー#1(233)に保持されていた書込みリクエストがメモリモジュール#1(310)に出力されて、リクエスト保持情報が値「00」に変化する(T9)。これにより、メモリ選択情報は、値「00」に変化する。また、書込みリクエスト#3の出力に伴い、メモリ状態情報が値「11」に変化する。
 その後、レスポンスの入力に伴い、メモリ状態情報は、値「00」に戻る(不図示)。
 このように、後に発行された書込みリクエスト#2に対するレスポンス#2がレスポンス#1より先に入力された場合において、メモリモジュール#2に対する書込みリクエストが優先して選択されて、発行される。これは、メモリ状態情報に基づいて、ビジー状態でないメモリモジュール#2が選択されるためである。すなわち、メモリモジュール#1(310)および#2(320)の書込みに要する時間が異なる場合に、ホストコンピュータ100により発行された書込みコマンドに基づく書込みリクエストの順序を入れ換えてメモリ装置300に対して発行することができる。
 図11は、本技術の第1の実施の形態における書込みリクエストの処理の他の例を示す図である。同図は、図10において説明した処理と比較するために挙げた処理の例であり、メモリコントローラ200に入力された書込みコマンドの順に対応する書込みリクエストを選択し、メモリ300に対して発行する場合の例である。
 T0乃至T4は、図10において説明したT0乃至T4の処理と同様であるため、説明を省略する。
 T4乃至T8において、メモリコントローラ200は、メモリ装置300からレスポンスが入力されるまで待機する。T5において、レスポンス#2が入力されると、メモリ状態情報は、値「01」に変化する。しかし、メモリ選択情報は、値「00」のまま変化しない。これは、T3においてメモリモジュール#2に対応するキュー#2(234)が選択されたため、次に選択するメモリモジュール#1(310)がビジー状態からアイドル状態になるまでメモリ選択情報生成部240が待機するためである。T6において、レスポンス#1が入力されると、メモリ状態情報およびメモリ選択情報は、それぞれ値「00」および「01」に変化する。これにより、キュー#1(233)が選択され、書込みリクエスト#3および書込みデータ#3が出力される。
 T9において、キュー#2(234)が選択される。その後、書込みリクエスト#4および書込みデータ#4の出力が開始される。
 このように、メモリコントローラ200に入力された書込みコマンドの順に対応する書込みリクエストを選択して発行する方式では、リクエストの発行順序を適切に変更することができず、比較的長い待ち時間を生じる。このため、複数の書込みリクエストの処理に要する時間が長くなる。
 このように、本技術の第1の実施の形態では、複数のメモリモジュールのそれぞれについてビジー状態か否かを判断して書込みリクエストを発行する順序を変更する。これにより、書込みに要する時間が異なるメモリモジュールを使用した記憶装置の書込み時間を短縮することができる。
 <2.第2の実施の形態>
 上述の第1の実施の形態では、書込みリクエストバッファを使用していた。これに対し、本技術の第2の実施の形態では、書込みデータバッファをさらに備える。これにより、ビジー状態にあるメモリモジュールの書込みデータの処理を事前に行い、この処理が終了した書込みデータを書込みデータバッファに保持させることができる。リクエストの発行に要する時間の短縮が想定される。
 [メモリコントローラの構成]
 図12は、本技術の第2の実施の形態におけるメモリコントローラ200の構成例を示す図である。同図におけるメモリコントローラ200は、以下の点で、図3において説明したメモリコントローラ200と異なっている。メモリ状態情報保持部270は、メモリ状態情報をメモリ選択情報生成部240および書込みリクエスト制御部280に対して出力する。また、書込みリクエスト制御部280は、後述する書込みデータ情報をメモリ選択情報生成部240に対して出力する。メモリ選択情報生成部240は、この書込みデータ情報、メモリ状態情報およびリクエスト保持情報に基づいて書込みリクエストを発行するメモリモジュールを選択する。
 [書込みリクエスト制御部の構成]
 図13は、本技術の第2の実施の形態における書込みリクエスト制御部280の構成例を示す図である。この書込みリクエスト制御部280は、出力制御部284と、書込みリクエストバッファ282と、書込みデータバッファ285とを備える。
 書込みデータバッファ285は、ECC処理部222により符号化処理が行われた書込みデータを保持するものである。なお、書込みデータバッファ285は、請求の範囲に記載のデータ保持部の一例である。
 出力制御部284は、書込みデータバッファ285を制御するとともに書込みデータ情報を生成してメモリ選択情報生成部240に対して出力する。ここで、書込みデータ情報とは、書込みデータバッファ285に書込みデータが保持されているか否かを表す情報である。この書込みデータ情報は、例えば、1ビットの情報により表すことができる。そして、書込みデータバッファ285に書込みデータが保持されている場合を値「1」、保持されていない場合を値「0」として表すことができる。また、出力制御部284は、該当するメモリモジュールがビジー状態にあるか否かを判断して書込みリクエストを発行し、書込みデータを出力する。これは、メモリ状態情報保持部270が出力したメモリ状態情報に基づいて行われる。これ以外の出力制御部284の構成は図5において説明した出力制御部281の構成と同様であるため、説明を省略する。
 [メモリ選択処理]
 図12におけるメモリ選択情報生成部240は、上述の出力制御部284が生成した書込みデータ情報に基づいて、書込みデータバッファ285に書込みデータが保持されていない場合にメモリ状態情報に基づくメモリモジュールの選択を行う。この際、メモリ選択情報生成部240は、次のようにメモリモジュールの選択を行うことができる。まず、メモリ選択情報生成部240は、対応するキューに書込みリクエストが保持されたメモリモジュールのうちビジー状態でないメモリモジュールを選択する。これに該当するメモリモジュールが存在しない場合には、メモリ選択情報生成部240は、対応するキューに書込みリクエストが保持されたメモリモジュールのうちビジー状態のメモリモジュールを選択する。なお、選択可能なメモリモジュールが複数存在する場合の選択方法には、図3において説明した選択方法を使用することができる。
 上述したように、図12におけるメモリ選択情報生成部240は、ビジー状態でないメモリモジュールが存在しない場合に、ビジー状態のメモリモジュールを選択し、メモリ選択情報を生成して出力する。これに基づいて選択されたメモリモジュールに対応する書込みリクエストが書込みリクエスト管理部230から書込みリクエスト処理部260を経由して書込みリクエスト制御部280の書込みリクエストバッファ282に保持される。この際、書込みリクエスト処理部260によりデータ転送要求が発行され、データ転送制御部221により書込みデータの転送処理が実行される。その後、書込みデータは、ECC処理部222による符号化処理が行われて書込みリクエスト制御部280の書込みデータバッファ285に保持される。該当するメモリモジュールがビジー状態からアイドル状態になった際、書込みリクエスト制御部280の出力制御部284は、書込みリクエストバッファ282等に保持された書込みリクエストおよび書込みデータをメモリ装置300に対して出力させる。なお、ビジー状態でないメモリモジュールが存在する場合には、このメモリモジュールが選択され、対応する書込みリクエストが書込みリクエストバッファ282に保持される。また、対応する書込みデータについてデータ転送処理および符号化処理が行われ、書込みデータバッファ285に保持される。その後、これらは直ちにメモリ装置300に対して出力される。
 このように、本技術の第2の実施の形態のメモリコントローラ200は、ビジー状態のメモリモジュールへの書込みデータに対してデータ転送処理および符号化処理を事前に行い、書込みデータバッファ285に保持させることができる。
 [書込みリクエスト制御部の処理]
 図14は、本技術の第2の実施の形態における書込みリクエスト制御部280における処理の処理手順の一例を示す図である。まず、書込みリクエスト制御部280は、レスポンスが入力されたか否かを判断する(ステップS951)。レスポンスが入力された場合には(ステップS951:Yes)、書込みリクエスト制御部280は、このレスポンスをメモリ状態情報保持部270に転送する(ステップS959)。その後、書込みリクエスト制御部280は、再度ステップS951の処理に移行する。一方、レスポンスが入力されていない場合には(ステップS951:No)、書込みリクエスト制御部280は、書込みリクエスト処理部260から書込みリクエストが入力されているか否かを判断する(ステップS952)。書込みリクエストが入力されていた場合には(ステップS952:Yes)、書込みリクエストバッファ282が、この入力された書込みリクエストを保持する(ステップS953)。次に、書込みリクエスト制御部280は、書込みリクエスト情報を更新し(ステップS961)、ステップS951の処理に移行する。
 ステップS952において、書込みリクエストが入力されていない場合には(ステップS952:No)、出力制御部284は、書込みリクエストバッファ282に書込みリクエストが保持されているか否かを判断する(ステップS954)。書込みリクエストが保持されていない場合には(ステップS954:No)、出力制御部284は、ステップS951の処理に移行する。一方、書込みリクエストが保持されている場合には(ステップS954:Yes)、出力制御部284は、ECC処理部222から処理終了通知が出力されているか否かを判断する(ステップS955)。処理終了通知が出力されている場合には(ステップS955:Yes)、出力制御部284は、ECC処理部222に対してデータの出力を要求する(ステップS956)。次に、出力制御部284は、ECC処理部222から出力された書込みデータを書込みデータバッファ285に保持させる(ステップS962)。その後、出力制御部284は、ステップS970の処理に移行する。
 ステップS955において、処理終了通知が出力されていない場合には(ステップS955:No)、出力制御部284は、ステップS956およびステップS962の処理をスキップしてステップS970の処理に移行する。ステップS970において、出力制御部284は、書込みリクエストの発行および書込みデータの出力の処理を実行する(ステップS970)。これにより、書込みデータバッファ285に書込みデータが保持され、対象のメモリモジュールがビジー状態でない場合に、書込みリクエストの発行および書込みデータの出力が行われる。その後、出力制御部284は、ステップS951の処理に移行する。
 [書込みリクエスト発行および書込みデータ出力処理]
 図15は、本技術の第2の実施の形態における書込みリクエスト発行および書込みデータ出力処理(ステップS970)の処理手順の一例を示す図である。まず、出力制御部284は、書込みデータバッファ285に書込みデータが保持されているか否かを判断する(ステップS975)。書込みデータが保持されていない場合には(ステップS975:No)、出力制御部284は、書込みリクエスト発行および書込みデータ出力処理を終了する。
 書込みデータが保持されている場合には(ステップS975:Yes)、出力制御部284は、メモリ状態情報に基づいて、書込みリクエストの対象のメモリモジュールがビジー状態か否かを判断する(ステップS976)。対象のメモリモジュールがビシー状態の場合は(ステップS976:Yes)、出力制御部284は、書込みリクエスト発行および書込みデータ出力処理を終了する。対象のメモリモジュールがビジー状態でない場合は(ステップS976:No)、出力制御部284は、対象のメモリモジュールに対して書込みリクエストを発行し、書込みデータを出力する。これらは、メモリインターフェース202を介してメモリ装置300に出力される(ステップS977)。次に、出力制御部284は、リクエスト発行情報をメモリ状態情報保持部270に対して出力し(ステップS978)、書込みリクエスト情報および書込みデータ情報を更新する(ステップS979)。その後、出力制御部284は、書込みリクエスト発行および書込みデータ出力処理を終了する。
 これ以外のメモリコントローラ200における処理は図6乃至8において説明した処理と同様であるため、説明を省略する。また、これ以外のメモリコントローラ200の構成は図3において説明したメモリコントローラ200の構成と同様であるため、説明を省略する。
 [書込みリクエスト処理]
 図16は、本技術の第2の実施の形態における書込みリクエストの処理の一例を示す図である。同図において、書込みデータバッファは、書込みデータバッファ285に保持されたデータを表す。また、同図には、書込みデータバッファ285の状態を表す書込みデータ情報が追加されている。この書込みデータ情報の初期値は値「0」である。これ以外は、図10と同じ表記を使用する。
 同図のT0乃至T2の処理は、図10において説明したT0乃至T2と同様であるため説明を省略する。
 T2乃至T4において、ECC処理部222における符号化処理が行われた書込みデータ#1が書込みデータバッファ285に保持され(T3)、書込みデータ情報が値「0」から「1」に変化する。これにより、メモリ選択情報は値「01」から「00」に変化する。その後、書込みリクエスト#1および書込みデータ#1が出力される。
 T4乃至T5において、書込みデータバッファ285に保持されていた書込みデータ#1が出力されて、書込みデータ情報が値「0」に変化する。また、リクエスト保持情報およびメモリ状態情報がそれぞれ値「11」および「01」であるため、メモリ選択情報は値「10」に変化する。これに基づいて、書込みリクエスト#2がキュー#2(236)から書込みリクエストバッファ282に転送され、その後出力される。同様に、データ転送処理および符号化処理が行われた書込みデータ#2が書込みデータバッファ285に転送され、その後出力される。これにより、メモリ状態情報は、値「11」に変化する。なお、メモリ選択情報は、書込みデータ#2が書込みデータバッファ285に保持された際に値「00」に変化する。
 T5乃至T9において、メモリモジュール#1(310)および#2(320)の両方がビジー状態である(メモリ状態情報が値「11」)。また、キュー#1(233)および#2(234)の両方に書込みリクエストが保持されている(リクエスト保持情報が値「11」)。このような場合、図3において説明したように、メモリ選択情報生成部240は、何れか一方のメモリモジュールを選択する。本技術の第2の実施の形態においては、メモリモジュール番号の順に選択する方法を採用する。すなわち、メモリ選択情報生成部240は、メモリモジュール#1(310)および#2(320)を交互に選択する。T4乃至T5においてメモリモジュール#2(320)が選択されたため、メモリ選択情報生成部240は、メモリモジュール#1(310)を選択し、メモリ選択情報として値「01」を出力する。
 これにより、キュー#1(233)に保持されていた書込みリクエスト#3が書込みリクエストバッファ282に転送されて保持される(T6)。また、書込みデータ#3は、データ転送処理および符号化処理が行われ、書込みデータバッファ285に保持される。その後、T7においてレスポンス#1が入力されると、メモリ状態情報が値「10」に変化し、書込みリクエストバッファ282および書込みデータバッファ285にそれぞれ保持されていた書込みリクエスト#3および書込みデータ#3の出力が開始される(T8)。このように、データ転送および符号化処理を行った後の書込みデータを書込みデータバッファ285に保持させておくことにより、レスポンス#1の入力から書込みリクエスト#3および書込みデータ#3の出力までの時間を短縮することができる。
 一方、書込みリクエスト#3の転送により、リクエスト保持情報は値「10」に変化する(T6)。また、符号化処理が行われた書込みデータ#3が書込みデータバッファ285に保持された際にメモリ選択情報は値「00」に変化し、書込みリクエスト#3および書込みデータ#3の出力開始(T8)に伴いメモリ状態情報は値「11」に戻る。
 T9において、書込みデータ#3の出力が終了すると、リクエスト保持情報およびメモリ状態情報がそれぞれ値「10」および「11」であるため、メモリ選択情報は値「10」に変化する。これにより、書込みリクエスト#4および書込みデータ#4が選択されて出力される。
 このように、本技術の第2の実施の形態では、ビジー状態のメモリモジュールにおける書込みデータの前処理を事前に終了させる。これにより、メモリモジュールがビジー状態からアイドル状態に復帰した後の書込みリクエストの発行に要する時間を短縮することができる。
 <3.第3の実施の形態>
 上述の第2の実施の形態では、1つの書込みデータバッファを使用していた。これに対し、本技術の第3の実施の形態では、メモリモジュール毎に書込みデータバッファを備える。これにより、ビジー状態にあるそれぞれのメモリモジュールの書込みデータに対する事前の処理が可能になり、リクエストの発行に要する時間をさらに短縮することができる。
 [書込みリクエスト制御部の構成]
 図17は、本技術の第3の実施の形態における書込みリクエスト制御部280の構成例を示す図である。この書込みリクエスト制御部280は、出力制御部286と、書込みリクエストバッファ#1(282)および#2(287)と、書込みデータバッファ#1(285)および#2(288)と、リクエスト選択部283と、データ選択部289とを備える。
 書込みリクエストバッファ#1(282)および#2(287)は、書込みリクエストを保持するものである。これら書込みリクエストバッファ#1(282)および#2(287)は、それぞれメモリモジュール#1(310)および#2(320)に1対1に対応して書込みリクエストを保持する。
 書込みデータバッファ#1(285)および#2(288)は、書込みデータを保持するものである。これら書込みデータバッファ#1(285)および#2(288)は、それぞれメモリモジュール#1(310)および#2(320)に1対1に対応して書込みデータを保持する。
 リクエスト選択部283は、書込みリクエストバッファ#1(282)または#2(287)の何れか1つを選択し、書込みリクエストを読み出して出力するものである。このリクエスト選択部283は、出力制御部286により制御される。
 データ選択部289は、書込みデータバッファ#1(285)または#2(288)の何れか1つを選択し、書込みデータを読み出して出力するものである。このデータ選択部289は、出力制御部286により制御される。
 出力制御部286は、書込みリクエスト処理部260から入力された書込みリクエストを発行先のメモリモジュールに応じて書込みリクエストバッファ#1(282)または#2(287)の何れかに保持させる。同様に、出力制御部286は、書込みデータを出力先のメモリモジュールに応じて書込みデータバッファ#1(285)または#2(288)の何れかに保持させる。また、出力制御部286は、書込みリクエストバッファ#1(282)および#2(287)の状態に応じた書込みリクエスト情報を出力する。この書込みリクエスト情報は、図5において説明した書込みリクエスト情報と同様に1ビットの情報であり、書込みリクエストバッファ#1(282)および#2(287)の両方に書込みリクエストが保持されている場合に値「1」になる。一方、出力制御部286は、書込みデータ情報として、書込みデータバッファ#1(285)または#2(288)のそれぞれに対応する2ビットの情報を出力する。
 これ以外の書込みリクエスト制御部280の構成は図13において説明した書込みリクエスト制御部280と同様であるため、説明を省略する。
 [メモリ選択処理]
 本技術の第3の実施の形態におけるメモリ選択情報生成部240は、次のように、メモリモジュールを選択する。まず、メモリ選択情報生成部240は、対応する書込みデータバッファに書込みデータが保持されておらず対応するキューに書込みリクエストが保持されたメモリモジュールのうちビジー状態でないメモリモジュールを選択する。これに該当するメモリモジュールが存在しない場合には、メモリ選択情報生成部240は、対応する書込みデータバッファに書込みデータが保持されておらず対応するキューに書込みリクエストが保持されたビジー状態のメモリモジュールを選択する。なお、選択可能なメモリモジュールが複数存在する場合の選択方法には、図3において説明した選択方法を使用することができる。
 選択されたメモリモジュールに対応するキュー#1(233)等から出力された書込みリクエストは、書込みリクエスト処理部260を経由して書込みリクエスト制御部280に入力される。この入力された書込みリクエストは、対応する書込みリクエストバッファ#1(282)または#2(287)に保持される。この際、書込みリクエスト処理部260によりデータ転送要求が発行され、データ転送制御部221による書込みデータの転送処理が実行される。その後、ECC処理部222による符号化処理が実行された書込みデータは、書込みリクエスト制御部280の対応する書込みデータバッファ#1(285)または#2(288)に保持される。これら保持された書込みリクエストおよび書込みデータは、対応するメモリモジュールがビジー状態からアイドル状態になった際に、メモリインターフェース202を介してメモリ装置300に対して出力される。
 [書込みリクエスト発行およびデータ出力処理]
 図18は、本技術の第3の実施の形態における書込みリクエスト発行および書込みデータ出力処理(ステップS980)の処理手順の一例を示す図である。同図の処理は、図14において説明した書込みリクエスト発行および書込みデータ出力処理(ステップS970)に代えて実行される処理である。まず、出力制御部286は、書込みデータバッファ#1(285)に書込みデータが保持されているか否かを判断する(ステップS985)。書込みデータが保持されていない場合には(ステップS985:No)、出力制御部286は、ステップS995の処理に移行する。
 書込みデータが保持されている場合には(ステップS985:Yes)、出力制御部286は、メモリモジュール#1(310)がビジー状態か否かを判断する(ステップS986)。メモリモジュール#1(310)がビジー状態の場合は(ステップS986:Yes)、出力制御部286は、ステップS995の処理に移行する。メモリモジュール#1(310)がビジー状態でない場合は(ステップS986:No)、出力制御部286は、メモリモジュール#1(310)に対して書込みリクエストを発行し、書込みデータを出力する(ステップS987)。次に、出力制御部286は、リクエスト発行情報を出力し(ステップS988)、書込みリクエスト情報および書込みデータ情報を更新して(ステップS989)、ステップS995の処理に移行する。
 ステップS995において、出力制御部286は、書込みデータバッファ#2(288)に書込みデータが保持されているか否かを判断する(ステップS995)。書込みデータが保持されていない場合には(ステップS995:No)、出力制御部286は、書込みリクエスト発行および書込みデータ出力処理を終了する。
 書込みデータが保持されている場合には(ステップS995:Yes)、出力制御部286は、メモリモジュール#2(320)がビジー状態か否かを判断する(ステップS996)。メモリモジュール#2(320)がビジー状態の場合は(ステップS996:Yes)、出力制御部286は、書込みリクエスト発行および書込みデータ出力処理を終了する。メモリモジュール#2(320)がビジー状態でない場合は(ステップS996:No)、出力制御部286は、メモリモジュール#2(320)に対して書込みリクエストを発行し、書込みデータを出力する(ステップS997)。次に、出力制御部286は、リクエスト発行情報を出力し(ステップS998)、書込みリクエスト情報および書込みデータ情報を更新して(ステップS999)、書込みリクエスト発行および書込みデータ出力処理を終了する。
 これ以外のメモリコントローラ200における処理は図6乃至8および14において説明した処理と同様であるため、説明を省略する。また、これ以外のメモリコントローラ200の構成は図12において説明したメモリコントローラ200の構成と同様であるため、説明を省略する。
 [書込みリクエスト処理]
 図19は、本技術の第3の実施の形態における書込みリクエストの処理の一例を示す図である。同図において、書込みリクエストバッファ#1および#2は、それぞれ書込みリクエストバッファ#1(282)および#2(287)に保持された書込みリクエストを表す。書込みデータバッファ#1および#2は、それぞれ書込みデータバッファ#1(285)および#2(288)に保持された書込みデータを表す。また、書込みデータ情報は、2ビットの2進数表記としており、上位ビットおよび下位ビットがそれぞれ書込みデータバッファ#2(288)および#1(285)の書込みデータ情報を表す。これ以外は、図10と同じ表記を使用する。また、同図においては、ホストコンピュータ100から書込みコマンド#1乃至#6が順に発行される。コマンド#1、#3および#5がメモリモジュール#1(310)に対する書込みコマンドであり、コマンド#2、#4および#6がメモリモジュール#2(320)に対する書込みコマンドであることを想定する。リクエスト生成部210により、これらのコマンドに基づくリクエストが順に生成され、対応するキュー#1(233)および#2(234)に保持される。
 T0乃至T2において、キュー#1(233)に書込みリクエストが入力されることにより、メモリ選択情報は値「01」となり、書込みリクエスト#1がキュー#1(233)から出力されて書込みリクエストバッファ#1(282)に保持される。
 T2乃至T4において、データ転送処理および符号化処理が行われた書込みデータ#1が書込みデータバッファ#1(285)に保持され(T3)、書込みデータ情報が値「01」に変化する。一方、リクエスト保持情報は、キュー#2(234)への書込みリクエストの入力に伴い、値「11」に変化している(T2)。これにより、メモリ選択情報は値「10」に変化し、書込みリクエスト#2がキュー#2(234)から出力されて書込みリクエストバッファ#2(287)に保持され、書込みデータ#2に対してデータ転送処理および符号化処理が行われる。一方、書込みリクエストバッファ#1(282)および書込みデータバッファ#1(285)にそれぞれ保持されていた書込みリクエスト#1および書込みデータ#1が出力され、書込みデータ情報が値「00」に変化する。
 T4乃至T5において、データ転送処理および符号化処理が行われた書込みデータ#2が書込みデータバッファ#2(288)に保持される(T4)。また、書込みデータバッファ#1(285)に保持されていた書込みデータ#1の出力は終了しているため、書込みデータ情報は値「10」に変化し、メモリ選択情報は値「01」に変化する。これにより、書込みリクエスト#3がキュー#1(233)から出力されて書込みリクエストバッファ#1(282)に保持され、書込みデータ#3に対してデータ転送処理および符号化処理が行われる。一方、書込みリクエストバッファ#2(287)および書込みデータバッファ#2(288)にそれぞれ保持されていた書込みリクエスト#2および書込みデータ#2が出力され、書込みデータ情報が値「00」に変化する。
 T5乃至T11において、データ転送処理および符号化処理が行われた書込みデータ#3が書込みデータバッファ#1(285)に保持される(T5)。また、書込みデータバッファ#2(288)に保持されていた書込みデータ#2の出力は終了しているため、書込みデータ情報は値「01」に変化し、メモリ選択情報は値「10」に変化する。これにより、書込みリクエスト#4がキュー#2(234)から出力されて書込みリクエストバッファ#2(287)に保持され、書込みデータ#4に対してデータ転送処理および符号化処理が行われる。その後、これらの処理が行われた書込みデータ#4が書込みデータバッファ#2(288)に保持される(T6)。書込みデータバッファ#1(285)および#2(288)の両方に書込みデータが保持されるため、書込みデータ情報は値「11」に変化し、メモリ選択情報は値「00」に変化する。
 T7において、レスポンス#1が入力されると、書込みリクエストバッファ#1(282)および書込みデータバッファ#1(285)にそれぞれ保持されていた書込みリクエスト#3および書込みデータ#3の出力が開始される(T8)。同様に、T9において、レスポンス#2が入力されると、書込みリクエストバッファ#2(287)および書込みデータバッファ#2(288)にそれぞれ保持されていた書込みリクエスト#4および書込みデータ#4の出力が開始される(T10)。書込みデータバッファ#1(285)からの書込みデータ#3の出力により、書込みデータ情報は値「10」に変化し、メモリ選択情報は値「01」に変化する。これにより、書込みリクエスト#5がキュー#1(233)から出力されて書込みリクエストバッファ#1(282)に保持され、書込みデータ#5についてデータ転送処理および符号化処理が行われる。一方、書込みリクエストバッファ#2(287)および書込みデータバッファ#2(288)にそれぞれ保持されていた書込みリクエスト#4および書込みデータ#4が出力され、書込みデータ情報が値「00」に変化する。
 T11乃至T12において、データ転送処理および符号化処理が行われた書込みデータ#5が書込みデータバッファ#1(285)に保持される(T11)。また、書込みデータバッファ#2(288)に保持されていた書込みデータ#4の出力は終了しているため、書込みデータ情報は値「01」に変化し、メモリ選択情報は値「10」に変化する。これにより、書込みリクエスト#6がキュー#2(234)から出力されて書込みリクエストバッファ#2(287)に保持され、書込みデータ#6に対してデータ転送処理および符号化処理が行われる。一方、書込みリクエストバッファ#1(282)および書込みデータバッファ#1(285)にそれぞれ保持されていた書込みリクエスト#5および書込みデータ#5が出力され、書込みデータ情報が値「00」に変化する。
 このように、本技術の第3の実施の形態のメモリコントローラ200は、メモリモジュール#1(310)および#2(320)毎に書込みデータバッファを配置し、符号化処理等が行われた書込みデータを保持する。これにより、図12において説明したメモリコントローラ200と比較して、レスポンスの入力から書込みリクエストの発行および書込みデータの出力までの時間をより短縮することができる。
 このように、本技術の第3の実施の形態では、メモリモジュール毎に書込みデータバッファを備えて、ビジー状態のメモリモジュールにおける書込みデータの前処理を事前に終了させる。これにより、メモリモジュールがアイドル状態に復帰した後の書込みリクエストの発行に要する時間をさらに短縮することができる。
 <4.第4の実施の形態>
 上述の実施の形態では、ホストコンピュータ100により発行されたコマンドからリクエストを生成した後、キューに保持していた。これに対し本技術の第4の実施の形態では、コマンドをキューに保持する。これにより、コマンドからリクエストを生成する処理を経ずにキューに保持することができ、キューへの保持を高速に行うことができる。
 [メモリコントローラの構成]
 図20は、本技術の第4の実施の形態におけるメモリコントローラ200の構成例を示す図である。同図のメモリコントローラ200は、図3において説明したメモリコントローラ200と比較して、書込みリクエスト生成部210を備える必要はない。また、書込みリクエスト管理部230の代わりに書込みコマンド管理部290を備える。
 書込みコマンド管理部290は、書込みコマンドを管理するものである。この書込みコマンド管理部290は、書込みリクエストの代わりに書込みコマンドの保持および選択を行い、書込みリクエスト処理部260に対して書込みコマンドを出力する。また、書込みコマンド管理部290は、リクエスト保持情報の代わりにコマンド保持情報を出力する。これらの点で、書込みコマンド管理部290は、図3において説明した書込みリクエスト管理部230と異なる。これ以外の書込みコマンド管理部290の構成は図3において説明した書込みリクエスト管理部230の構成と同様であるため、説明を省略する。なお、書込みコマンドは、請求の範囲に記載の書込みリクエストの一例である。
 書込みリクエスト処理部260は、書込みコマンド管理部290に対してリクエスト出力要求の代わりにコマンド出力要求を発行する。また、書込みリクエスト処理部260は、書込みコマンド管理部290により出力された書込みコマンドに基づいて書込みリクエストを生成し、書込みリクエスト制御部280に対して出力する。これ以外の書込みリクエスト処理部260の構成は図3において説明した書込みリクエスト処理部260と同様であるため、説明を省略する。
 上述のように、同図の書込みリクエスト処理部260は、書込みコマンドに基づいて書込みリクエストを生成する処理を行う。この処理は、データ転送制御部221におけるデータ転送処理と平行して行うことができる。また、ホストコンピュータから発行された書込みコマンドを書込みコマンド管理部290のキューに保持するため、図3において説明した書込みリクエスト生成部210における書込みリクエストの生成処理を省略することができる。このため、書込みコマンドのキューへの保持を高速に行うことができる。
 これ以外のメモリコントローラ200の構成は図3において説明したメモリコントローラ200と同様であるため、説明を省略する。
 このように、本技術の第4の実施の形態によれば、書込みコマンドのキューへの保持を高速に行うことができ、メモリコントローラ200における書込み処理の高速化が可能になる。
 <5.第5の実施の形態>
 上述の実施の形態では、メモリコントローラ200は、メモリ300に発行する書込みリクエストを選択した後に当該リクエストに対応する書込みデータのホストコンピュータ100からの転送処理を行っていた。これに対し、本技術の第5の実施の形態では、ホストコンピュータ100から書込みコマンドとともに書込みデータが出力され、メモリコントローラ200は、これらをキューに保持する。これにより、書込みリクエストを選択した後の書込みデータの転送処理を省略し、メモリコントローラ200における書込みリクエストの処理を高速化することができる。
 [メモリコントローラの構成]
 図21は、本技術の第5の実施の形態におけるメモリコントローラ200の構成例を示す図である。同図のメモリコントローラ200は、図3において説明したメモリコントローラ200と比較して、データ転送制御部221を備える必要はない。また、書込みデータは、ホストインターフェース201から書込みリクエスト管理部230を介してデータ処理部220のECC処理部222に出力される。
 [書込みリクエスト管理部の構成]
 図22は、本技術の第5の実施の形態における書込みリクエスト管理部230の構成例を示す図である。この書込みリクエスト管理部230は、キュー#1(235)およびキュー#2(236)と、書込みリクエスト選択部232とを備える。
 キュー#1(235)およびキュー#2(236)は、書込みリクエストおよび書込みデータを保持するものである。
 書込みリクエスト選択部232は、書込みリクエストおよび書込みデータを選択するものである。この書込みリクエスト選択部232は、書込みリクエスト処理部260からリクエスト出力要求が発行された際に、書込みリクエストを書込みリクエスト処理部260に対して出力し、書込みデータをデータ処理部220のECC処理部222に対して出力する。
 上述のように、同図の書込みリクエスト管理部230は、書込みリクエストおよび書込みデータをキュー#1(235)等に保持するため、ホストコンピュータ100は、書込みコマンドとともに書込みデータをメモリコントローラ200に対して出力する必要がある。
 これ以外のメモリコントローラ200の構成は図3において説明したメモリコントローラ200と同様であるため、説明を省略する。
 このように、本技術の第5の実施の形態によれば、書込みリクエストともに書込みデータをキューに保持するため、書込みリクエストを選択した後の書込みデータの転送処理を省略することができ、書込みリクエストの処理を高速に行うことができる。
 <6.第6の実施の形態>
 上述の第1の実施の形態では、メモリ選択情報生成部240がリクエスト保持情報およびメモリ状態情報に基づいてメモリ選択情報を生成していた。そして、生成されたメモリ選択情報に基づいて、書込みリクエスト選択部231がキュー#1(233)等を選択していた。これに対し、本技術の第6の実施の形態では、書込みリクエスト選択部231がメモリ状態情報に基づいてキュー#1(233)等を選択する。これにより、メモリコントローラ200の処理を簡略化することができる。
 図23は、本技術の第6の実施の形態におけるメモリコントローラ200の構成例を示す図である。同図のメモリコントローラ200は、図3において説明したメモリコントローラ200と比較してメモリ選択情報生成部240を備える必要はない。また、同図の書込みリクエスト管理部230は、メモリ状態情報保持部270が出力したメモリ状態情報に基づいて書込みリクエストを選択し、書込みリクエスト処理部260に対して出力する。
 同図の書込みリクエスト管理部230に含まれる書込みリクエスト選択部231は、メモリ状態情報に基づいてキュー#1(233)または#2(234)の何れかを選択し、書込みリクエストを出力させる。すなわち、ビジー状態ではないメモリモジュール#1(310)または#2(320)の何れかに対応するキュー#1(233)または#2(234)が選択される。選択されたキュー#1(233)等に書込みリクエストが保持されている場合には、この書込みリクエストがキュー#1(233)等から出力されることとなる。書込みリクエスト選択部231は、この出力された書込みリクエストを書込みリクエスト処理部260に対して出力する。一方、選択されたキュー#1(233)等から書込みリクエストが出力されない場合は、書込みリクエスト選択部231は、当該キュー#1(233)等に書込みリクエストが保持されていないと判断することができる。
 これ以外のメモリコントローラ200の構成は図3において説明したメモリコントローラ200と同様であるため、説明を省略する。
 このように、書込みリクエスト選択部231においてメモリ状態情報のみに基づいてキュー#1(233)等を選択することにより、メモリ選択情報生成部240を省略することができ、メモリコントローラ200の処理を簡略化することができる。
 <変形例>
 上述の実施の形態では、複数のメモリチップにより構成されたメモリ装置300を使用していたが、複数のメモリバンクを有する単一の半導体チップにより構成されたメモリ装置300を使用してもよい。これら複数のメモリバンクが独立してアクセス可能である場合には、複数のメモリバンクのビジー状態に基づいて、書込みリクエストの発行の順序を変更することができ、書込み時間を短縮することが可能なためである。
 図24は、本技術の実施の形態の変形例におけるメモリ装置300の構成例を示す図である。このメモリ装置300は、メモリチップ430を備える。また、メモリチップ430は、メモリバンク#1(431)およびメモリバンク#2(432)を備える。これらメモリバンク#1(431)およびメモリバンク#2(432)は、それぞれ独立してアクセスが可能であり、メモリコントローラ200による書込みリクエストを個別に受け付け可能な構成である。なお、メモリバンク#1(431)およびメモリバンク#2(432)は、請求の範囲に記載のメモリモジュールの一例である。
 これ以外のメモリコントローラ200およびメモリ装置300の構成は本技術の第1の実施の形態におけるメモリコントローラ200およびメモリ装置300の構成と同様であるため、説明を省略する。
 上述のように、本技術の実施の形態では、複数のメモリモジュールのそれぞれについてビジー状態か否かを判断して書込みリクエストを発行する順序を変更する。これにより、書込み時間が異なるメモリモジュールを有する記憶装置における書込み時間の短縮が可能になる。
 なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
 また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
 なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
 なお、本技術は以下のような構成もとることができる。
(1)書込みに要する時間がそれぞれ異なる複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを前記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部と、
 前記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択して前記書込みリクエストを出力させる選択部と
を具備するメモリコントローラ。
(2)前記選択部は、ビジー状態ではない前記メモリモジュールに対応する前記複数の書込みリクエスト保持部のうちの1つを選択する前記(1)に記載のメモリコントローラ。
(3)前記書込みリクエスト保持部は、前記書込みリクエストを先入れ先出しするキューにより構成される前記(1)または(2)に記載のメモリコントローラ。
(4)前記メモリ状態情報を保持するメモリ状態情報保持部をさらに備え、
 前記選択部は、前記メモリ状態情報保持部に保持されたメモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択する
前記(1)から(3)のいずれかに記載のメモリコントローラ。
(5)前記書込みリクエストに係る書込みデータに対して前記メモリモジュールに出力される前に所定の前処理を行うデータ処理部をさらに備える前記(1)から(4)のいずれかに記載のメモリコントローラ。
(6)前記データ処理部は、前記書込みリクエストに係る書込みデータに誤り検出および誤り訂正のためのパリティを付加する符号化処理を前記所定の前処理として行う前記(5)に記載のメモリコントローラ。
(7)前記データ処理部は、前記書込みを要求したホストコンピュータから前記書込みリクエストに係る書込みデータを読み出す処理を前記所定の前処理として行う前記(5)に記載のメモリコントローラ。
(8)前記所定の前処理が行われた書込みデータを保持するデータ保持部をさらに備える前記(5)に記載のメモリコントローラ。
(9)前記選択部は、前記データ保持部に書込みデータが保持されていない場合に前記メモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択する前記(8)に記載のメモリコントローラ。
(10)前記選択部は、ビジー状態ではない前記メモリモジュールに対応する前記複数の書込みリクエスト保持部のうちの1つを選択し、ビジー状態ではない前記メモリモジュールが存在しない場合にはビジー状態の前記メモリモジュールに対応する前記複数の書込みリクエスト保持部のうちの1つを選択する前記(9)に記載のメモリコントローラ。
(11)前記複数の書込みリクエスト保持部は、前記書込みリクエストと当該書込みリクエストに係る書込みデータとを前記複数のメモリモジュール毎に保持し、
 前記選択部は、前記メモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択して前記書込みリクエストおよび前記書込みデータを出力させる
前記(1)から(10)のいずれかに記載のメモリコントローラ。
(12)書込みに要する時間がそれぞれ異なる複数のメモリモジュールと、
 前記複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを前記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部と、
 前記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択して前記書込みリクエストを出力させる選択部と
を具備する記憶装置。
(13)書込みに要する時間がそれぞれ異なる複数のメモリモジュールと、
 前記複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを前記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部と、
 前記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択して前記書込みリクエストを出力させる選択部と
を備える記憶装置と、
 前記記憶装置に前記書込みを要求するホストコンピュータと
を具備する情報処理システム。
(14)書込みに要する時間がそれぞれ異なる複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを前記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部のうちの1つを前記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて選択して前記書込みリクエストを出力させる選択手順を具備するメモリの制御方法。
 100 ホストコンピュータ
 200 メモリコントローラ
 201 ホストインターフェース
 202 メモリインターフェース
 210 書込みリクエスト生成部
 220 データ処理部
 221 データ転送制御部
 222 ECC処理部
 230 書込みリクエスト管理部
 231、232 書込みリクエスト選択部
 233~236 キュー
 240 メモリ選択情報生成部
 260 書込みリクエスト処理部
 270 メモリ状態情報保持部
 280 書込みリクエスト制御部
 281、284、286 出力制御部
 282、287 書込みリクエストバッファ
 283 リクエスト選択部
 285、288 書込みデータバッファ
 289 データ選択部
 290 書込みコマンド管理部
 300 メモリ装置
 310、320、410、420 メモリモジュール
 411、421、422、430 メモリチップ
 431、432 メモリバンク

Claims (14)

  1.  書込みに要する時間がそれぞれ異なる複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを前記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部と、
     前記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択して前記書込みリクエストを出力させる選択部と
    を具備するメモリコントローラ。
  2.  前記選択部は、ビジー状態ではない前記メモリモジュールに対応する前記複数の書込みリクエスト保持部のうちの1つを選択する請求項1記載のメモリコントローラ。
  3.  前記書込みリクエスト保持部は、前記書込みリクエストを先入れ先出しするキューにより構成される請求項1記載のメモリコントローラ。
  4.  前記メモリ状態情報を保持するメモリ状態情報保持部をさらに備え、
     前記選択部は、前記メモリ状態情報保持部に保持されたメモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択する
    請求項1記載のメモリコントローラ。
  5.  前記書込みリクエストに係る書込みデータに対して前記メモリモジュールに出力される前に所定の前処理を行うデータ処理部をさらに備える請求項1記載のメモリコントローラ。
  6.  前記データ処理部は、前記書込みリクエストに係る書込みデータに誤り検出および誤り訂正のためのパリティを付加する符号化処理を前記所定の前処理として行う請求項5記載のメモリコントローラ。
  7.  前記データ処理部は、前記書込みを要求したホストコンピュータから前記書込みリクエストに係る書込みデータを前記ホストコンピュータから読み出す処理を前記所定の前処理として行う請求項5記載のメモリコントローラ。
  8.  前記所定の前処理が行われた書込みデータを保持するデータ保持部をさらに備える請求項5記載のメモリコントローラ。
  9.  前記選択部は、前記データ保持部に書込みデータが保持されていない場合に前記メモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択する請求項8記載のメモリコントローラ。
  10.  前記選択部は、ビジー状態ではない前記メモリモジュールに対応する前記複数の書込みリクエスト保持部のうちの1つを選択し、ビジー状態ではない前記メモリモジュールが存在しない場合にはビジー状態の前記メモリモジュールに対応する前記複数の書込みリクエスト保持部のうちの1つを選択する請求項9記載のメモリコントローラ。
  11.  前記複数の書込みリクエスト保持部は、前記書込みリクエストと当該書込みリクエストに係る書込みデータとを前記複数のメモリモジュール毎に保持し、
     前記選択部は、前記メモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択して前記書込みリクエストおよび前記書込みデータを出力させる
    請求項1記載のメモリコントローラ。
  12.  書込みに要する時間がそれぞれ異なる複数のメモリモジュールと、
     前記複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを前記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部と、
     前記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択して前記書込みリクエストを出力させる選択部と
    を具備する記憶装置。
  13.  書込みに要する時間がそれぞれ異なる複数のメモリモジュールと、
     前記複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを前記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部と、
     前記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて前記複数の書込みリクエスト保持部のうちの1つを選択して前記書込みリクエストを出力させる選択部と
    を備える記憶装置と、
     前記記憶装置に前記書込みを要求するホストコンピュータと
    を具備する情報処理システム。
  14.  書込みに要する時間がそれぞれ異なる複数のメモリモジュールの各々に対して書込みを要求する書込みリクエストを前記複数のメモリモジュール毎に保持する複数の書込みリクエスト保持部のうちの1つを前記複数のメモリモジュールの各々についてビジー状態か否かを示すメモリ状態情報に基づいて選択して前記書込みリクエストを出力させる選択手順を具備するメモリの制御方法。
PCT/JP2016/071997 2015-10-30 2016-07-27 メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法 WO2017073127A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/768,597 US11262936B2 (en) 2015-10-30 2016-07-27 Memory controller, storage device, information processing system, and memory control method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015214609 2015-10-30
JP2015-214609 2015-10-30

Publications (1)

Publication Number Publication Date
WO2017073127A1 true WO2017073127A1 (ja) 2017-05-04

Family

ID=58631431

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/071997 WO2017073127A1 (ja) 2015-10-30 2016-07-27 メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法

Country Status (2)

Country Link
US (1) US11262936B2 (ja)
WO (1) WO2017073127A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019215763A (ja) * 2018-06-13 2019-12-19 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0444136A (ja) * 1990-06-11 1992-02-13 Nec Corp メモリアクセス制御装置
JP2001154913A (ja) * 1999-11-30 2001-06-08 Hitachi Ltd 主記憶制御装置
JP2014049091A (ja) * 2012-09-04 2014-03-17 Toshiba Corp 情報処理装置
JP2015511350A (ja) * 2012-01-26 2015-04-16 メモリー テクノロジーズ リミティド ライアビリティ カンパニー 不揮発性大容量メモリ・システムによるキャッシュ移動を提供するための装置および方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010654B2 (en) * 2003-07-24 2006-03-07 International Business Machines Corporation Methods and systems for re-ordering commands to access memory
US10817421B2 (en) * 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US20130205051A1 (en) * 2012-02-07 2013-08-08 Qualcomm Incorporated Methods and Devices for Buffer Allocation
US9256526B2 (en) * 2012-02-23 2016-02-09 National Taiwan University Flash memory storage system and access method
JP2014154119A (ja) 2013-02-14 2014-08-25 Ricoh Co Ltd メモリ制御装置及び半導体記憶装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0444136A (ja) * 1990-06-11 1992-02-13 Nec Corp メモリアクセス制御装置
JP2001154913A (ja) * 1999-11-30 2001-06-08 Hitachi Ltd 主記憶制御装置
JP2015511350A (ja) * 2012-01-26 2015-04-16 メモリー テクノロジーズ リミティド ライアビリティ カンパニー 不揮発性大容量メモリ・システムによるキャッシュ移動を提供するための装置および方法
JP2014049091A (ja) * 2012-09-04 2014-03-17 Toshiba Corp 情報処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019215763A (ja) * 2018-06-13 2019-12-19 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP7081321B2 (ja) 2018-06-13 2022-06-07 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US11262936B2 (en) 2022-03-01
US20190056884A1 (en) 2019-02-21

Similar Documents

Publication Publication Date Title
JP6950149B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
US10909031B2 (en) Memory system and operating method thereof
US20180052732A1 (en) Semiconductor device and semiconductor system
US10283216B2 (en) Data storage device and data maintenance method thereof
US10389380B2 (en) Efficient data path architecture for flash devices configured to perform multi-pass programming
JP6034183B2 (ja) 半導体記憶装置
JP5929456B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2014026712A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2013092854A (ja) 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
JP6891817B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP5853973B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
WO2016017321A1 (ja) メモリコントローラ、記憶装置、情報処理システム、および、メモリコントローラ制御方法
JP6711281B2 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
US20170177487A1 (en) Deterministic operation of storage class memory
CN103365783A (zh) 存储控制装置、存储装置、信息处理***和处理方法
WO2016035451A1 (ja) 記憶制御装置、記憶装置、および、記憶制御方法
JP6107625B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
WO2017073127A1 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
JP6493062B2 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
WO2017043140A1 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
WO2017010147A1 (ja) 不揮発メモリ、メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
WO2016056290A1 (ja) メモリコントローラ、メモリシステム、記憶装置、情報処理システムおよび記憶制御方法
US9104596B2 (en) Memory system
WO2018003244A1 (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: 16859364

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP