WO2017168905A1 - メモリ制御装置、記憶装置および情報処理システム - Google Patents

メモリ制御装置、記憶装置および情報処理システム Download PDF

Info

Publication number
WO2017168905A1
WO2017168905A1 PCT/JP2016/089110 JP2016089110W WO2017168905A1 WO 2017168905 A1 WO2017168905 A1 WO 2017168905A1 JP 2016089110 W JP2016089110 W JP 2016089110W WO 2017168905 A1 WO2017168905 A1 WO 2017168905A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
data
command
read
write
Prior art date
Application number
PCT/JP2016/089110
Other languages
English (en)
French (fr)
Inventor
大久保 英明
中西 健一
Original Assignee
ソニー株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソニー株式会社 filed Critical ソニー株式会社
Priority to US16/086,833 priority Critical patent/US20190095136A1/en
Publication of WO2017168905A1 publication Critical patent/WO2017168905A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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/0683Plurality of storage devices

Definitions

  • This technology relates to a storage device.
  • the present invention relates to a memory control device, a storage device and an information processing system that control a plurality of types of memories having different performances, a processing method therefor, and a program for causing a computer to execute the method.
  • data can be written in a memory capable of high-speed reading in preparation for high-speed reading.
  • a memory that can be read at high speed may take a long time to write, and there is a risk that the performance of the storage system may be reduced in the execution of the write command.
  • the present technology has been devised in view of such a situation, and writing and reading are performed using a first memory and a second memory having a lower writing speed and a higher reading speed than the first memory.
  • the purpose is to perform both at high speed.
  • the present technology has been made to solve the above-described problems, and a first aspect thereof is a writing unit that writes write data related to the write command to the first memory when executing the write command.
  • a transfer unit for transferring the write data from the first memory to the second memory at a predetermined timing; and reading the read data with priority given to the second memory over the first memory when executing a read command.
  • a memory control device, a storage device, and an information processing system Thereby, while writing the write data to the first memory, transferring the data from the first memory to the second memory causes the second memory to be read with priority over the first memory.
  • the read unit reads from the second memory when the read data of the read command is stored in the second memory, and the read data is read from the second memory. If it is not stored in the memory, reading from the first memory may be performed.
  • the second memory has a lower writing speed than the first memory and a higher reading speed than the first memory.
  • the transfer unit may execute the transfer when receiving a data transfer command.
  • the transfer unit may execute the transfer when receiving a data transfer command.
  • the first aspect may further include a timer that counts an idle period during which the write command or the read command is not issued, and the transfer unit indicates that the idle period continues for a predetermined period. When the timer detects, the above transfer may be executed. This brings about the effect of transferring from the first memory to the second memory when the idle period continues.
  • the transfer unit may execute the transfer during a period in which data reading from the second memory does not occur.
  • the transfer unit may execute the transfer during a period in which data reading from the second memory does not occur.
  • the information processing apparatus further includes a progress information holding unit that holds the progress information of the transfer, and the transfer unit stores the progress information held in the progress information holding unit during the execution of the transfer. You may make it update. As a result, the progress information is maintained even when an interruption or the like occurs during the transfer. That is, in this case, when the transfer unit receives another command issued during the execution of the transfer, the transfer unit interrupts the transfer, and after the processing of the other command is completed, the transfer unit performs the transfer according to the progress information. You may make it resume.
  • the transfer unit may perform the above operation when the first memory is overwritten by another write command after the write data is transferred from the first memory to the second memory. It is good also as what has not been transferred. This brings about the effect of invalidating the transfer when overwriting occurs.
  • the transfer unit may perform the above operation when the first memory is overwritten by another write command after the write data is transferred from the first memory to the second memory.
  • the transferred write data and the write data related to the other write command are compared, and the write data related to the other write command is transferred from the first memory to the second memory only when they are different. May be. As a result, even when overwriting occurs, it is possible to suppress useless transfer when the data contents match.
  • the transfer unit may select data to be transferred from the first memory to the second memory based on an address related to the write command. In this first aspect, data to be transferred from the first memory to the second memory may be selected based on an address related to the read command. In the first aspect, the transfer unit selects data to be transferred from the first memory to the second memory based on an address specified in another command different from the write command and the read command. May be.
  • the present technology it is possible to perform both writing and reading at high speed by using the first memory and the second memory having a lower writing speed and a higher reading speed than the first memory. Can have an effect. Note that the effects described here are not necessarily limited, and may be any of the effects described in the present disclosure.
  • FIG. 1 is a diagram illustrating an overall configuration example of an information processing system according to an embodiment of the present technology. It is a figure showing an example of composition of host computer 100 in an embodiment of this art. It is a figure which shows an example of the hierarchical structure of the software which operate
  • FIG. 3 is a diagram illustrating an example of a page configuration of memory cell arrays 311 and 312 of the first memory 310 according to the embodiment of the present technology.
  • FIG. It is a figure showing an example of page composition of a memory cell array of the 2nd memory 320 in an embodiment of this art.
  • 3 is a flowchart illustrating an example of a processing procedure of a write command process according to the first embodiment of the present technology.
  • 12 is a flowchart illustrating an example of a processing procedure of a data arrangement information management table logical address update process according to the first embodiment of the present technology.
  • 3 is a flowchart illustrating an example of a processing procedure of data transfer processing according to the first embodiment of the present technology.
  • 3 is a flowchart illustrating an example of a processing procedure of a read command process according to the first embodiment of the present technology.
  • 12 is a flowchart illustrating an example of a processing procedure of high-speed reading processing (step S980) according to the first embodiment of the present technology.
  • 12 is a flowchart illustrating an example of a processing procedure of a data arrangement information management table logical address update process according to the first modification of the first embodiment of the present technology.
  • 12 is a flowchart illustrating an example of a processing procedure of a second memory data verify process in the first modification of the first embodiment of the present technology. It is a figure showing an example of composition of memory controller 200 in the 3rd modification of a 1st embodiment of this art.
  • 22 is a flowchart illustrating an example of a processing procedure of a data transfer process according to a fourth modification of the first embodiment of the present technology.
  • 12 is a flowchart illustrating a processing procedure example of a write command process according to the second embodiment of the present technology.
  • 12 is a flowchart illustrating an example of a processing procedure of a data arrangement information management table logical address update process according to the second embodiment of the present technology.
  • 12 is a flowchart illustrating an example of a processing procedure of read command processing according to the second embodiment of the present technology.
  • 12 is a flowchart illustrating an example of a processing procedure of logical address registration command processing according to the third embodiment of the present technology.
  • FIG. 1 is a diagram illustrating an overall configuration example of an information processing system according to an embodiment of the present technology.
  • This information processing system includes a host computer 100, a memory controller 200, a first memory 310, and a second memory 320.
  • the memory controller 200, the first memory 310, and the second memory 320 constitute a storage device 400.
  • the host computer 100 issues commands for requesting data read processing and write processing to the storage device 400.
  • the memory controller 200 communicates with the host computer 100 to receive commands, and executes data writing to the first memory 310 or the second memory 320 and data reading from the first memory 310 or the second memory 320. .
  • the memory controller 200 instructs to write the data received from the host computer 100 into the first memory 310 or the second memory 320.
  • the memory controller 200 receives a read command, the memory controller 200 reads data from the first memory 310 or the second memory 320 and transfers it to the host computer 100.
  • the read command and the write command in order to specify the data storage area to be accessed, the top logical address of the target area and the number of logical pages from the top logical address are used.
  • the storage area for reading and writing data in the storage device 400 is divided into logical pages every 512 bytes, and a logical address is uniquely assigned to each logical page.
  • the first memory 310 is a memory having a high writing speed.
  • As the first memory 310 for example, a resistance change type memory is assumed.
  • the access unit is 264 bytes, the time from receiving the read request to outputting the data (read busy time) is 2.5 microseconds, the time from receiving the write request to receiving the data and completing the write (write busy time) Assumes 10 microseconds.
  • the second memory 320 is a memory whose reading speed is lower than that of the first memory 310 while the writing speed is lower than that of the first memory 310.
  • a NOR flash memory is assumed as the second memory 320. Assume that the access unit is 2 bytes, the read busy time is 20 nanoseconds, and the write busy time is 19.1 microseconds.
  • FIG. 2 is a diagram illustrating a configuration example of the host computer 100 according to the embodiment of the present technology.
  • the host computer 100 includes a host processing unit 110, a host memory 120, and a controller interface 170. These are connected to each other by the host bus 190.
  • the host processing unit 110 controls the entire host computer 100.
  • the host processing unit 110 executes software stored in the host memory 120.
  • the host processing unit 110 operates using the host memory 120 as a code area and a data area.
  • the host memory 120 is a memory that stores a code area and a data area of software executed by the host processing unit 110.
  • the controller interface 170 is an interface that communicates with the memory controller 200.
  • the controller interface 170 is connected to the memory controller 200 and executes transmission of commands to the memory controller 200 and transmission / reception of data to / from the memory controller 200.
  • FIG. 3 is a diagram illustrating an example of a hierarchical structure of software that operates on the host computer 100 according to the embodiment of the present technology.
  • the application program 101, the host OS 102, and the device driver 103 are assumed from the upper layer of the software.
  • Application program 101 is the highest level software.
  • the application program 101 instructs the host OS 102 to read data from the storage device 400 or write data from the storage device 400, and receives a response from the host OS 102.
  • the host OS 102 is an OS (Operating System) that performs a bridge between the application program 101 and the device driver 103.
  • the host OS 102 instructs the device driver 103 to read data from the storage device 400 or write data from the storage device 400 and receives a response from the device driver 103.
  • the device driver 103 is software that controls hardware.
  • the device driver 103 instructs the memory controller 200 to read data from the storage device 400 or write data from the storage device 400, and receives a response from the memory controller 200.
  • FIG. 4 is a diagram illustrating a configuration example of the memory controller 200 according to the embodiment of the present technology.
  • the memory controller 200 includes a controller processing unit 210, a controller memory 220, a ROM 230, an ECC processing unit 240, a firmware loading unit 250, a host interface 270, a first memory interface 281 and a second memory interface 282. Is provided. These are connected to each other by a controller bus 290.
  • the controller processing unit 210 controls the entire memory controller 200.
  • the controller processing unit 210 executes firmware stored in the controller memory 220.
  • the controller processing unit 210 operates using the controller memory 220 as a code area and a data area.
  • the controller memory 220 is a memory that stores a code area and a data area of firmware executed by the controller processing unit 210.
  • the controller memory 220 is also used as an area for developing a table for managing user data. Details of these tables will be described later.
  • the ROM 230 is a read-only memory that stores firmware stored in the controller memory 220. This firmware includes a control task and a command execution task.
  • the ECC processing unit 240 generates an error correction code (ECC) stored in the first memory 310 and performs error correction processing on the data read from the first memory 310.
  • ECC error correction code
  • the firmware loading unit 250 reads firmware from the ROM 230 to the controller memory 220 when the storage device 400 is powered on.
  • the host interface 270 is an interface that communicates with the host computer 100.
  • the memory interface 281 is an interface that exchanges data with the first memory 310.
  • the memory interface 282 is an interface that exchanges data with the second memory 320.
  • a control task and a command execution task operate on the controller processing unit 210.
  • the command is decoded.
  • a command execution task is called to cope with the command. Process.
  • FIG. 5 is a diagram illustrating a functional configuration example of the controller processing unit 210 according to the embodiment of the present technology.
  • the controller processing unit 210 functions as, for example, a writing unit 211, a transfer unit 212, and a reading unit 213.
  • the writing unit 211 writes the write data related to the write command to the first memory 310 when executing the write command. Although the reading speed of the first memory 310 is lower than that of the second memory 320, the writing speed is higher than that of the second memory 320, so that the writing by the writing unit 211 can be performed at a high speed.
  • the transfer unit 212 transfers the write data stored in the first memory 310 from the first memory 310 to the second memory 320 at a predetermined timing.
  • the predetermined timing is assumed to be a timing at which a data transfer command is issued from the host computer 100.
  • the reading unit 213 reads the read data by giving priority to the second memory 320 over the first memory 310 when executing the read command. That is, when the read data of the read command is stored in the second memory 320, the read is performed from the second memory 320, and when the read data is not stored in the second memory 320, the read data is read from the first memory 310. I do. Although the second memory 320 has a lower writing speed than the first memory 310, the second memory 320 has a higher reading speed than the first memory 310. Therefore, when the read data is stored in the second memory 320, the second memory 320 has a higher speed. Can be read.
  • FIG. 6 is a diagram illustrating a configuration example of the first memory 310 according to the embodiment of the present technology.
  • the first memory 310 includes memory cell arrays 311 and 312, memory cell array controllers 321 and 322, address decoders 331 and 332, data buffers 341 and 342, and a controller interface 370.
  • the memory cell array control unit 321, the address decoder 331, and the data buffer 341 are connected to the memory cell array 311.
  • Memory cell array control unit 322, address decoder 332, and data buffer 342 are connected to memory cell array 312. These are connected to the controller interface 370 via the memory bus 390.
  • Memory cell arrays 311 and 312 are storage elements in which memory cells for storing data are integrated in an array.
  • the memory cell array is composed of two memory banks
  • the memory cell array 311 is referred to as bank # 0
  • the memory cell array 312 is referred to as bank # 1.
  • the memory cell array control units 321 and 322 execute control for the memory cell arrays 311 and 312.
  • Address decoders 331 and 332 are decoders that decode addresses for memory cell arrays 311 and 312.
  • Data buffers 341 and 342 are buffers for accessing the memory cell arrays 311 and 312.
  • the controller interface 370 is an interface that communicates with the memory controller 200.
  • Physical addresses are allocated to the memory cell arrays 311 and 312, and physical addresses are designated in the write request and read request to the first memory 310.
  • the configuration of the second memory 320 is basically the same as that of the first memory 310. However, the second memory 320 is not assumed to be a plurality of memory banks, and the second memory 320 is composed of one memory cell array.
  • the controller interface 370 determines whether the request received from the first memory interface 281 is a write request or a read request, and whether the request is bank # 0 or bank # 1.
  • the received write data is transferred from the controller interface 370 to the data buffer 341.
  • the physical address is input to the address decoder 331, and the memory cell array control unit 321 is instructed to execute writing.
  • the controller interface 370 notifies the first memory interface 281 of the end of the write request.
  • the controller interface 370 When the read request is for the bank # 0, the physical address is input to the address decoder 331 from the controller interface 370, and a read execution instruction is issued to the memory cell array control unit 321.
  • the controller interface 370 When the data read from the memory cell array 311 is transferred to the data buffer 341, the controller interface 370 is notified of the end of the read execution from the memory cell array control unit 321. As a result, the controller interface 370 transfers the data read from the data buffer 341 to the first memory interface 281 and ends the read request.
  • FIG. 7 is a diagram illustrating an example of a table group held in the controller memory 220 according to the embodiment of the present technology.
  • an address conversion table 221, unallocated physical page information 222, a transfer buffer 223, and a data arrangement information management table 224 are shown as a table group held in the controller memory 220.
  • the address conversion table 221, the unallocated physical page information 222, and the data arrangement information management table 224 are read from the first memory 310 and expanded in the controller memory 220 when the storage device 400 is powered on. These are saved from the controller memory 220 to the first memory 310 when the power of the storage device 400 is shut off.
  • the address conversion table 221, the unallocated physical page information 222, and the data arrangement information management table 224 are saved in the first memory 310. However, these are saved in the second memory 320. It may be.
  • the address conversion table 221 is a table that holds an address (physical address) of a physical page assigned to a logical address.
  • the field configuration of the address conversion table 221 will be described later.
  • the unallocated physical page information 222 holds addresses (physical addresses) of physical pages that are not used for data recording in the first memory 310 and the second memory 320, respectively.
  • the physical address value is acquired in ascending order.
  • the transfer buffer 223 is a buffer area for transferring data from the first memory 310 to the second memory 320.
  • the data arrangement information management table 224 is a table for managing data arrangement information in the second memory 320.
  • the field configuration of the data arrangement information management table 224 will be described later.
  • the data arrangement information management table 224 is an example of a progress information holding unit described in the claims.
  • FIG. 8 is a diagram illustrating a field configuration example of the address conversion table 221 according to the embodiment of the present technology.
  • the address conversion table 221 includes fields of “logical address”, “physical address” of “first memory”, and “physical address” of “second memory”.
  • the “physical address” indicates that the physical address assigned to the corresponding logical address is held, but “unassigned” is indicated when the corresponding logical address is not assigned.
  • the “physical address” of “second memory” indicates an address, it means that the data has been transferred from the first memory 310 to the second memory 320.
  • the number following “0x” means a hexadecimal number.
  • the size of the physical page of the first memory 310 is 264 bytes, and the data of one logical page is divided into two physical pages and stored. As the physical page allocated to one logical page, two physical pages having consecutive addresses are allocated. In the address conversion table 221, only a physical address having a small value is held among two consecutive physical pages.
  • the data of 528 bytes of one logical page is divided into two data of 264 bytes in the first half and 264 bytes in the second half.
  • the first 264 bytes are in a physical page having a small physical address, and the second half 264 bytes are physical in a physical address having a large value. Each page is saved.
  • the size of the physical page of the second memory 320 is 2 bytes, and the second memory 320 records data of 256 bytes from the top of the data of one logical page. For recording 256 consecutive bytes of data, 128 consecutive physical pages are allocated.
  • the address conversion table 221 holds only the physical address having the smallest value among the 128 consecutive physical pages.
  • the second memory 320 can also be recorded on physical pages where addresses are not continuous, as in the case of the first memory 310.
  • FIG. 9 is a diagram illustrating a field configuration example of the data arrangement information management table 224 according to the embodiment of the present technology.
  • the data arrangement information management table 224 includes fields of “first logical address”, “progress”, and “second memory physical address”.
  • the data size transferred from the first memory 310 to the second memory 320 is managed in units of physical pages in the second memory 320. If “Progress” is “0”, it means that any page has not been transferred. Here, the upper limit value of “progress” is assumed to be “128”.
  • FIG. 10 is a diagram illustrating an example of a page configuration of the memory cell arrays 311 and 312 of the first memory 310 according to the embodiment of the present technology.
  • Physical addresses are allocated to the memory cell arrays 311 and 312 every 264 bytes. Writing to the first memory 310 and reading from the first memory 310 are performed in units of physical pages of 264 bytes.
  • even addresses are allocated to the memory cell array 311, and odd addresses are allocated to the memory cell array 312.
  • the data written to one physical page is composed of 256-byte data and a redundant part attached to the data.
  • the redundant part is an 8-byte ECC. This ECC is added by the ECC processing unit 240 of the memory controller 200.
  • FIG. 11 is a diagram illustrating an example of a page configuration of the memory cell array of the second memory 320 according to the embodiment of the present technology.
  • a physical address is allocated to the memory cell array of the second memory 320 every 2 bytes. Writing and reading of data in the memory cell array of the second memory 320 are executed in units of 2-byte physical addresses.
  • FIG. 12 is a flowchart illustrating an example of a processing procedure of write command processing according to the first embodiment of the present technology.
  • This write command process is a process executed when the memory controller 200 receives a write command from the host computer 100. The following processing is executed in the command execution task.
  • the controller processing unit 210 divides the processing into logical address units based on the received top logical address and the number of logical pages (step S911).
  • One logical address is executed in one process. For example, when “0” is designated as the start address to be written and “1” is designated as the size, one process is performed. When “0” is designated as the first logical address to be written and “2” is designated as the size, the process is divided into two processes.
  • the controller processing unit 210 determines a logical address to be written (step S912).
  • the target logical address is determined in order from the first logical address to be written. For example, when “0” is designated as the first logical address to be written and “2” is designated as the data size, the logical address to be executed first is determined to be “0”. Then, the target logical address is determined to be “1”.
  • the controller processing unit 210 converts the logical address determined as the write target in step S912 into a physical address using the address conversion table 221 held in the controller memory 220 (step S913). At this time, when a physical address is assigned to the logical address selected in step S912, the physical address converted in the address conversion table 221 and the physical address obtained by incrementing the converted physical address are two. A physical address is obtained.
  • the controller processing unit 210 acquires two physical addresses that are unused and have consecutive values from the unallocated physical page information 222 (Step S1). S914). Unused physical addresses are selected in ascending order of value. At that time, the controller processing unit 210 updates the value of the physical address corresponding to the logical address selected in step S912 in the address conversion table 221 to a physical address having a smaller acquired physical address value.
  • the controller processing unit 210 receives 512-byte data from the host computer 100 via the host interface 270 (step S915).
  • the received 512-byte data is divided into the first half 256 bytes and the second half 256 bytes.
  • the ECC processing unit 240 adds an 8-byte error correction code to each (step S916).
  • the controller processing unit 210 designates the two physical addresses acquired in step S913 or S914, issues a write request twice to the first memory 310, and writes the data (step S917).
  • the controller processing unit 210 determines whether or not both of the two write requests issued in step S917 have ended normally (step S918). If the write request is not normally completed (step S918: No), the controller processing unit 210 notifies the host computer 100 that an error has occurred in the write command processing (step S922). When the write request ends normally (step S918: Yes), the controller processing unit 210 determines whether the total data size written to the first memory 310 by the write command processing matches the data size specified by the write command. Is determined (step S919). If the data size specified by the write command has not been written (step S919: No), the processing from step S912 is repeated.
  • step S919: Yes the controller processing unit 210 executes the data arrangement information management table logical address update process using the received head logical address as an input (step S930). That is, in the first embodiment, data to be transferred from the first memory 310 to the second memory 320 is selected based on the logical address of the write command.
  • controller processing unit 210 notifies the host computer 100 that the processing of the write command has been completed normally (step S921).
  • FIG. 13 is a flowchart illustrating a processing procedure example of the data arrangement information management table logical address update process (step S930) according to the first embodiment of the present technology.
  • This data arrangement information management table logical address update process is performed with a logical address as an input. The following processing is executed in the command execution task.
  • the controller processing unit 210 searches the “first logical address” in the data arrangement information management table 224 for a logical address that matches the input logical address (step S931). If there is no matching “first logical address” in the data arrangement information management table 224 (step S932: No), it means that the logical address is not registered in the data arrangement information management table 224. In this case, the controller processing unit 210 adds the input logical address to the “first logical address” in the data arrangement information management table 224 (step S933).
  • the controller processing unit 210 updates the value of “progress” corresponding to the “first logical address” that matches the input logical address of the data arrangement information management table 224 to “0” (step S934). This represents a state in which the data written to the first memory 310 by the write command process is not transferred to the second memory 320.
  • FIG. 14 is a flowchart illustrating an example of a processing procedure of data transfer processing according to the first embodiment of the present technology.
  • the host OS 102 or the application program 101 monitors a state (idle state) in which no input / output has occurred with respect to the storage device 400.
  • a state in which no input / output has occurred with respect to the storage device 400.
  • the host OS 102 or the application program 101 issues a data transfer command to the storage device 400 via the device driver 103 to instruct execution of data transfer processing.
  • the controller processing unit 210 takes a logical value in which the corresponding “progress” value is less than the maximum value among the logical addresses whose “first logical address” in the data arrangement information management table 224 is a valid value.
  • the address is searched (step S941). At this time, if the corresponding logical address does not exist (step S942: No), it is assumed that there is no data to be transferred to the second memory 320, and the data transfer process is terminated.
  • step S942 If there is data to be transferred (step S942: Yes), the controller processing unit 210 uses the control task to determine the logical value that maximizes the corresponding “progress” value among the logical addresses corresponding to the search result of step S941. An address is selected (step S943). At this time, if there are a plurality of maximum values, the logical address having the smallest value is selected in the data arrangement information management table 224.
  • the controller processing unit 210 converts the logical address selected in step S943 into a physical address using the address conversion table 221 by the control task (step S944).
  • the physical address acquired here is only the physical address having a small value among the physical addresses of the two first memories 310 corresponding to the logical address selected in step S943.
  • the controller processing unit 210 issues a read request to the first memory 310 by designating the physical address converted in step S944 by the control task. Then, the ECC processing unit 240 performs error correction on the read 264 byte data. Thus, 256 bytes of only the data part obtained are held in the transfer buffer 223 (step S945).
  • the controller processing unit 210 determines whether the host interface 270 has received a write command or a read command from the host computer 100 according to the command execution task (step S946). If the host interface 270 has received a write command or a read command (step S946: Yes), the data transfer process is terminated.
  • the controller processing unit 210 acquires a physical address in which data is not recorded in the second memory 320 from the unallocated physical page information 222 by the control task (step S951).
  • the controller processing unit 210 acquires, from the data arrangement information management table 224, the “progress” value n corresponding to the logical address selected in step S943 by the control task. Then, for the data of 2 bytes from the 2 ⁇ n-th byte from the top of the data held in the transfer buffer 223, the physical address acquired in step S951 is designated and a write request is issued to the second memory 320 ( Step S952). That is, even if the data transfer has been interrupted before that, the transfer is resumed from the position indicated by “progress”.
  • the controller processing unit 210 determines whether or not the write request in step S952 has ended normally by the control task (step S953). If the write request does not end normally (step S953: No), the processing after step S946 is repeated. When the write request is normally completed (step S953: Yes), the value “n” of “progress” corresponding to the logical address selected in step S943 is incremented, and the value of the data arrangement information management table 224 is updated ( Step S954).
  • step S955 determines whether or not the updated “progress” value matches the maximum value. If it does not match the maximum value (step S955: No), it is determined that the writing of the data in the transfer buffer 223 to the second memory 320 has not been completed, and the processing after step S946 is repeated.
  • step S955 If it matches the maximum value (step S955: Yes), the address conversion table 221 is updated assuming that the writing of the data in the transfer buffer 223 to the second memory 320 has been completed (step S956). That is, the controller processing unit 210 updates the value of the “physical address” corresponding to the logical address selected in step S943 in the address conversion table 221 to the physical address of the second memory 320 that has performed the writing by the control task. Then, the processing after step S941 is repeated.
  • FIG. 15 is a flowchart illustrating an example of a processing procedure of the read command processing according to the first embodiment of the present technology.
  • This read command process is a process executed when the memory controller 200 receives a read command from the host computer 100. The following processing is executed in the command execution task.
  • the controller processing unit 210 divides the processing into logical address units based on the received top logical address and the number of logical pages (step S961).
  • One logical address is executed in one process. For example, when “0” is designated as the head address to be read and “1” is designated as the size, one process is performed. If “0” is designated as the first logical address to be read and “2” is designated as the size, the process is divided into two processes.
  • the controller processing unit 210 determines whether or not the head logical address designated by the read command is registered in the “head logical address” of the data arrangement information management table 224 and the value of “progress” is the upper limit value. Is determined (step S962). If it is registered at the “first logical address” and the value of “progress” is the upper limit (step S962: Yes), it is determined that the target data exists in the second memory 320, and step S980 is performed. And S963 are executed. If it is not registered in the “first logical address” or if the value of “progress” is not the upper limit value (step S962: No), it is determined that the target data does not exist in the second memory 320, and step S980. And S963 are not executed.
  • step S962 If the target data exists in the second memory 320 (step S962: Yes), the controller processing unit 210 executes the high-speed reading process with the received head logical address as an input (step S980). Further, the controller processing unit 210 selects a logical address to be read (step S963). The target logical address is selected in order from the logical address following the first logical address to be read.
  • the controller processing unit 210 converts the logical address selected as the read target in step S963 into a physical address using the address conversion table 221 held in the controller memory 220 (step S964). At this time, when a physical address is assigned to the logical address selected in step S963, the physical address converted in the address conversion table 221 and the physical address obtained by incrementing the converted physical address are two. A physical address is obtained. Then, the controller processing unit 210 designates the two physical addresses converted in step S964, issues a read request to the first memory 310 twice, and reads 264 bytes of data twice. The ECC processing unit 240 performs error correction on each read data and then transfers 256-byte data twice to the host computer 100 except for the 8-byte error correction code (step S965). .
  • the controller processing unit 210 transfers data in which all 512 bytes are 0x00 to the host computer 100 (step S966).
  • the controller processing unit 210 determines whether the total data size read from the first memory 310 and transferred to the host computer 100 by the read command processing matches the data size specified by the read command (step S967). If the data size specified by the read command has not been read (step S967: No), the processing from step S963 is repeated.
  • step S967 When the reading of the data size specified by the read command is completed (step S967: Yes), the controller processing unit 210 notifies the host computer 100 that the processing of the read command is completed (step S975).
  • FIG. 16 is a flowchart illustrating an example of a processing procedure of the high-speed reading process (step S980) according to the first embodiment of the present technology. The following processing is executed in the command execution task.
  • the controller processing unit 210 acquires the physical address of the first memory 310 and the physical address of the second memory 320 corresponding to the input top logical address from the address conversion table 221 (step S981).
  • the acquired physical address of the first memory 310 is a physical address having a larger value among the two physical addresses corresponding to the head logical address.
  • the controller processor 210 designates the physical address of the first memory 310 and the physical address of the second memory 320 acquired in step S981 and issues a read request to each of the first memory 310 and the second memory 320 ( Step S982).
  • the controller processing unit 210 transfers the 2-byte data read from the second memory 320 to the host computer 100 (step S983).
  • the controller processing unit 210 determines whether or not the number of physical pages read from the second memory 320 has reached the upper limit value in the high-speed reading process (step S984). If the number of physical pages read from the second memory 320 is not the upper limit value (step S984: No), the controller processing unit 210 acquires the physical address of the second memory 320 from the address conversion table 221. (Step S985). Then, the controller processing unit 210 designates the physical address of the second memory 320 acquired in step S985, and issues a read request to the second memory 320 (step S986).
  • step S984 when the number of physical pages read from the second memory 320 reaches the upper limit (step S984: Yes), the controller processing unit 210 transmits the data read from the first memory 310 to the host computer. 100 (step S987). At this time, the ECC processing unit 240 performs error correction on the read 264-byte data. The controller processing unit 210 transfers 256-byte data excluding the 8-byte error correction code to the host computer 100.
  • writing is performed to the first memory 310 having a high writing speed, and then the first memory 310 starts when the storage device 400 is in an idle state.
  • Data is transferred to the second memory 320.
  • the read command processing data existing in the second memory 320 having a high reading speed is read from the second memory 320.
  • FIG. 17 is a flowchart illustrating a processing procedure example of the data arrangement information management table logical address update process (step S930) in the first modification of the first embodiment of the present technology.
  • the data arrangement information management table logical address update process in the first modification is different from the first embodiment in the case where there is a matching “first logical address” in the data arrangement information management table 224.
  • the second embodiment is the same as the first embodiment. That is, in the first modification, when there is a matching “first logical address” (step S932: Yes), the second memory data verify process (step S990) is executed.
  • FIG. 18 is a flowchart illustrating an example of a processing procedure of the second memory data verify process (step S990) in the first modification example of the first embodiment of the present technology.
  • the second memory data verify process is performed with the first logical address designated by the write command as an input.
  • the controller memory 220 includes a first memory verify buffer and a second memory verify buffer (not shown).
  • the controller processing unit 210 determines whether or not the value of “progress” corresponding to the first logical address received as an input is “0” in the data arrangement information management table 224 (step S991). If the value of “progress” is “0” (step S991: Yes), it is not necessary to perform comparison, so the second memory data verify process is terminated.
  • the controller processing unit 210 acquires, from the address conversion table 221, the physical address of the first memory 310 assigned to the head logical address received as an input (step S992). Also, the controller processing unit 210 acquires the physical address and progress value of the second memory 320 from the data arrangement information management table 224 (step S992).
  • the controller processing unit 210 issues a read request to the first memory 310 and the second memory 320 by designating the physical address acquired in step S992 (step S993).
  • the data read from the first memory 310 is 264 bytes of data read from one physical page.
  • the ECC processing unit 240 performs error correction and holds 256 bytes of only the data part in the first memory verify buffer.
  • the data read from the second memory 320 is data read from the physical pages of the number of progress values acquired in step S992, and is held in the second memory verify buffer.
  • the controller processing unit 210 compares the data held in the first memory verify buffer with the data held in the second memory verify buffer (step S994).
  • the data length at this time is the length corresponding to the number of pages of the progress value acquired in step S992. For example, if the progress value is N, the data is “N ⁇ 2” bytes.
  • the controller processing unit 210 determines whether or not the data up to the progress value in step S994 match (step S995). If the data up to the progress value match (step S995: Yes), the second memory data verify process is normally terminated. On the other hand, if the data up to the progress value does not match (step S995: No), the controller processing unit 210 sets the “first logical address” that matches the first logical address received as the input of the data arrangement information management table 224. Search for. Then, the controller processing unit 210 updates the corresponding “progress” value to “0” (step S996).
  • the start of the data transfer process is triggered by the issuance of a data transfer command from the host computer 100.
  • the third modification assuming that a timer is provided in the memory controller 200, the data transfer process is started using this timer as a trigger.
  • FIG. 19 is a diagram illustrating a configuration example of the memory controller 200 according to the third modification example of the first embodiment of the present technology.
  • the elapsed time after the end of the write command or read command is measured by the timer 219, and when the write command or read command is not received for a certain period, the data transfer process is performed assuming that the idle period continues. Start. Thereby, the data transfer process can be started without waiting for the issuance of the data transfer command from the host computer 100.
  • FIG. 20 is a flowchart illustrating an example of a processing procedure of data transfer processing according to the fourth modification example of the first embodiment of the present technology.
  • the data transfer process in the fourth modified example is different in that the processes in steps S947 to S949 are performed instead of step S946 in the first embodiment.
  • the controller processing unit 210 checks whether or not there is a read command or write command received by the command execution task and whether or not there is a read command or write command being executed by the command execution task by the control task ( Step S947). As a result, when there is a read command or a write command that is received or being executed (step S947: Yes), it is determined whether or not there is a write (overwrite) to the logical address selected in step S943. (Step S948). If there is overwriting (step S948: Yes), the value of “progress” in the data arrangement information management table 224 corresponding to the logical address selected in step S943 is updated to “0” (step S959), and step S941. The subsequent processing is repeated.
  • step S948 determines whether or not writing to the second memory 320 is possible (step S949).
  • the command being received or executed is a write command
  • the command being received or executed is a read command
  • the second memory It can be determined that writing to 320 is possible. At this time, the reading of the data of the head logical address is the target of high-speed reading, but the case where the reading is completed may be included.
  • Second Embodiment> In the first embodiment described above, the head logical address designated by the write command is registered in the data arrangement information management table 224. On the other hand, in the second embodiment, the head logical address designated by the read command is registered in the data arrangement information management table 224.
  • the basic configuration of the information processing system according to the second embodiment is the same as that of the first embodiment described above, and detailed description thereof is omitted.
  • FIG. 21 is a flowchart illustrating an example of a processing procedure of write command processing according to the second embodiment of the present technology.
  • the write command process in the second embodiment is basically the same as that in the first embodiment. That is, steps S811 to S819, S821 and S822 of the second embodiment are the same as steps S911 to S919, S921 and S922 of the first embodiment.
  • the data arrangement information management table logical address update process (step S830) of the second embodiment is different from that of the first embodiment as shown in the following figure.
  • FIG. 22 is a flowchart illustrating a processing procedure example of the data arrangement information management table logical address update process (step S830) according to the second embodiment of the present technology.
  • the data arrangement information management table logical address update process in the second embodiment is basically the same as that in the first embodiment. That is, steps S831, S832, and S834 of the second embodiment are the same as steps S931, S932, and S934 of the first embodiment.
  • the second embodiment is different in that step S933 of the first embodiment is omitted. That is, in the second embodiment, the “first logical address” of the data arrangement information management table 224 is not registered in the write command process.
  • FIG. 23 is a flowchart illustrating an example of a processing procedure of read command processing according to the second embodiment of the present technology.
  • the read command processing in the second embodiment is basically the same as that in the first embodiment. That is, steps S861 to S867, S875, and S880 of the second embodiment are the same as steps S961 to S967, S975, and S980 of the first embodiment.
  • the second embodiment is different from the first embodiment in that the processes of steps S871 to S874 are performed.
  • the controller processing unit 210 searches for a logical address that matches the input logical address from the “first logical address” in the data arrangement information management table 224 (step S871). If there is no matching “first logical address” in the data arrangement information management table 224 (step S872: No), it means that the logical address is not registered in the data arrangement information management table 224. In this case, the controller processing unit 210 adds the input logical address to the “first logical address” in the data arrangement information management table 224 (step S873). In addition, the controller processing unit 210 updates the value of “progress” corresponding to the “first logical address” that matches the input logical address of the data arrangement information management table 224 to “0” (step S874). This represents a state in which the data written to the first memory 310 by the write command process is not transferred to the second memory 320.
  • the head logical address designated by the read command can be registered in the data arrangement information management table 224.
  • the head logical address specified by the write command is registered in the data placement information management table 224
  • the head logical address specified by the read command is data placement. It was registered in the information management table 224.
  • the logical address specified by the dedicated command logical address registration command
  • the data arrangement information management table 224 it is assumed that the logical address specified by the dedicated command (logical address registration command) is registered in the data arrangement information management table 224.
  • the host computer 100 notifies the storage device 400 of a logical address at which data is read at a high speed by the logical address registration command when it is designated as the head logical address by the read command.
  • FIG. 24 is a flowchart illustrating a processing procedure example of logical address registration command processing according to the third embodiment of the present technology.
  • This logical address registration command process is a process executed when the memory controller 200 receives a logical address registration command from the host computer 100. The following processing is executed in the command execution task.
  • the controller processing unit 210 acquires the logical address received in the logical address registration command (step S711).
  • the controller processing unit 210 performs a data arrangement information management table logical address update process using the logical address acquired in step S711 as an input.
  • This data arrangement information management table logical address update process is the same as the data arrangement information management table logical address update process (step S830) in the second embodiment described above.
  • the controller processing unit 210 notifies the host computer 100 that the processing of the logical address registration command has been completed (step S713).
  • the write command process is the same as that of the second embodiment, and the read command process is the same as that of the first embodiment. Therefore, detailed description is omitted here.
  • the host computer 100 designates the value of the logical address to which the high-speed reading is applied by the dedicated command, but notifies the application of the high-speed reading in a specific unit by the dedicated command. May be.
  • the memory controller 200 arranges 256 bytes in the second memory 320 every 4 Kbytes, such as 0, 8, 16, and 20 as logical addresses.
  • the processing procedure described in the above embodiment may be regarded as a method having a series of these procedures, and a program for causing a computer to execute these series of procedures or a recording medium storing the program. You may catch it.
  • a recording medium for example, a CD (Compact Disc), an MD (MiniDisc), a DVD (Digital Versatile Disc), a memory card, a Blu-ray disc (Blu-ray (registered trademark) Disc), or the like can be used.
  • this technique can also take the following structures. (1) When executing a write command, a writing unit that writes write data related to the write command to the first memory; A transfer unit that transfers the write data from the first memory to the second memory at a predetermined timing; A memory control device comprising: a read unit that reads read data with priority given to the second memory over the first memory when executing a read command. (2) When the read data of the read command is stored in the second memory, the reading unit reads from the second memory, and the read data is not stored in the second memory The memory control device according to (1), wherein reading from the first memory is performed. (3) The memory control device according to (1) or (2), wherein the second memory has a lower writing speed than the first memory and a higher reading speed than the first memory.
  • the transfer unit When the transfer unit receives another command issued during the execution of the transfer, the transfer unit interrupts the transfer, and resumes the transfer according to the progress information after the processing of the other command is completed.
  • the memory control device according to (7).
  • the transfer unit is not transferred when the write data is transferred from the first memory to the second memory and the first memory is overwritten by another write command.
  • the memory control device according to any one of (1) to (8).
  • the transfer unit When the write data is overwritten in the first memory by another write command after the write data is transferred from the first memory to the second memory, the transfer unit The write data related to the other write command is compared with the write data related to the other write command, and the write data related to the other write command is transferred from the first memory to the second memory only when they are different from each other.
  • the memory control device according to any one of the above. (11) The memory control device according to any one of (1) to (10), wherein the transfer unit selects data to be transferred from the first memory to the second memory based on an address related to the write command. . (12) The memory control device according to any one of (1) to (10), wherein the transfer unit selects data to be transferred from the first memory to the second memory based on an address related to the read command. . (13) The transfer unit selects data to be transferred from the first memory to the second memory based on an address specified in another command different from the write command and the read command. (10) The memory control device according to any one of (10).
  • (14) a first memory; A second memory having a lower writing speed and a higher reading speed than the first memory; When executing a write command, a writing unit that writes write data related to the write command to the first memory; A transfer unit that transfers the write data from the first memory to the second memory at a predetermined timing; A storage device comprising: a reading unit that reads the read data with priority given to the second memory over the first memory when executing a read command.
  • a first memory A second memory having a lower writing speed and a higher reading speed than the first memory;
  • a host computer that issues commands relating to the first memory or the second memory;
  • a writing unit that writes write data related to the write command to the first memory;
  • a transfer unit that transfers the write data from the first memory to the second memory at a predetermined timing;
  • An information processing system comprising: a read unit that reads read data with priority given to the second memory over the first memory when executing a read command.

Abstract

第1メモリと、第1メモリよりも書込み速度は低速で読出し速度が高速な第2メモリとを利用して、書込みおよび読出しの両者を高速に行う。 書込み部は、ライトコマンドを実行する際にはライトコマンドに係るライトデータを第1メモリに書き込む。転送部は、所定のタイミングにおいてライトデータを第1メモリから第2メモリに転送する。読出し部は、リードコマンドを実行する際には第1メモリよりも第2メモリを優先してリードデータの読出しを行う。

Description

メモリ制御装置、記憶装置および情報処理システム
 本技術は、記憶装置に関する。詳しくは、性能の異なる複数種類のメモリを制御するメモリ制御装置、記憶装置および情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
 近年、ストレージシステムにおいては、性能の異なる複数種類のメモリを想定して、それぞれのメモリの特性を生かしたシステム構成が図られている。例えば、アクセスタイムの短いNVRAM(Non Volatile Random Access Memory)と、アクセスタイムの長いフラッシュメモリとを用いたシステムが提案されている(例えば、特許文献1参照。)。このシステムでは、データが高速で読み出されるように書き込む旨が指定された場合には、ライトデータのうちのNVRAM連続セクタ数のセクタがNVRAMに書き込まれ、残りのセクタがフラッシュメモリに書き込まれる。一方、データが高速で読み出されるように書き込む旨が指定されない場合には、ライトデータは全てフラッシュメモリに書き込まれる。
特開2013-142947号公報
 上述の従来技術では、高速読出しに備えて、高速読出し可能なメモリにデータを書き込んでおくことができる。その反面、高速読出し可能なメモリは書込みの際に時間を要する場合があり、ライトコマンドの実行においてストレージシステムとしてのパフォーマンスが低下するおそれがある。
 本技術はこのような状況に鑑みて生み出されたものであり、第1メモリと、第1メモリよりも書込み速度は低速で読出し速度が高速な第2メモリとを利用して、書込みおよび読出しの両者を高速に行うことを目的とする。
 本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、ライトコマンドを実行する際には上記ライトコマンドに係るライトデータを第1メモリに書き込む書込み部と、所定のタイミングにおいて上記ライトデータを上記第1メモリから第2メモリに転送する転送部と、リードコマンドを実行する際には上記第1メモリよりも上記第2メモリを優先してリードデータの読出しを行う読出し部とを具備するメモリ制御装置、記憶装置および情報処理システムである。これにより、ライトデータを第1メモリに書き込む一方で、第1メモリから第2メモリに転送しておくことにより、第1メモリよりも第2メモリを優先して読出しを行うという作用をもたらす。
 すなわち、この第1の側面において、上記読出し部は、上記リードコマンドのリードデータが上記第2メモリに記憶されている場合には上記第2メモリから読出しを行い、上記リードデータが上記第2メモリに記憶されていない場合には上記第1メモリから読出しを行うようにしてもよい。ここで、この第1の側面において、上記第2メモリは、上記第1メモリよりも書込み速度は低速で、上記第1メモリよりも読出し速度が高速である。
 また、この第1の側面において、上記転送部は、データ転送コマンドの発行を受けると上記転送を実行するようにしてもよい。これにより、データ転送コマンドを契機として第1メモリから第2メモリに転送するという作用をもたらす。
 また、この第1の側面において、上記ライトコマンドまたは上記リードコマンドの発行を受けないアイドル期間を計時するタイマをさらに具備し、上記転送部は、上記アイドル期間が所定期間継続している旨を上記タイマが検知すると上記転送を実行するようにしてもよい。これにより、アイドル期間の継続を契機として第1メモリから第2メモリに転送するという作用をもたらす。
 また、この第1の側面において、上記転送部は、上記第2メモリからのデータ読出しが発生しない期間に上記転送を実行するようにしてもよい。これにより、第2メモリからのデータ読出しが発生しない期間を契機として第1メモリから第2メモリに転送するという作用をもたらす。
 また、この第1の側面において、上記転送の進捗情報を保持する進捗情報保持部をさらに具備し、上記転送部は、上記転送の実行中に上記進捗情報保持部に保持される上記進捗情報を更新するようにしてもよい。これにより、転送の途中で中断などが生じた場合においても進捗情報を維持するという作用をもたらす。すなわち、この場合において、上記転送部は、上記転送の実行中に他のコマンドの発行を受けると上記転送を中断して、上記他のコマンドの処理が終了した後には上記進捗情報に従って上記転送を再開するようにしてもよい。
 また、この第1の側面において、上記転送部は、上記ライトデータが上記第1メモリから上記第2メモリに転送された後に他のライトコマンドによって上記第1メモリに上書きが発生した場合には上記転送がされていないものとしてもよい。これにより、上書きが発生した場合に転送を無効にするという作用をもたらす。
 また、この第1の側面において、上記転送部は、上記ライトデータが上記第1メモリから上記第2メモリに転送された後に他のライトコマンドによって上記第1メモリに上書きが発生した場合には上記転送されたライトデータと上記他のライトコマンドに係るライトデータとを比較して、両者が異なる場合のみ上記他のライトコマンドに係るライトデータを上記第1メモリから上記第2メモリに転送するようにしてもよい。これにより、上書きが発生した場合であってもデータの内容が一致しているときには無駄な転送を抑制するという作用をもたらす。
 また、この第1の側面において、上記転送部は、上記第1メモリから上記第2メモリに転送するデータを上記ライトコマンドに係るアドレスに基づいて選択してもよい。また、この第1の側面において、上記第1メモリから上記第2メモリに転送するデータを上記リードコマンドに係るアドレスに基づいて選択してもよい。また、この第1の側面において、上記転送部は、上記第1メモリから上記第2メモリに転送するデータを上記ライトコマンドおよび上記リードコマンドとは異なる他のコマンドにおいて指定されたアドレスに基づいて選択してもよい。
 本技術によれば、第1メモリと、第1メモリよりも書込み速度は低速で読出し速度が高速な第2メモリとを利用して、書込みおよび読出しの両者を高速に行うことができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における情報処理システムの全体構成例を示す図である。 本技術の実施の形態におけるホストコンピュータ100の構成例を示す図である。 本技術の実施の形態におけるホストコンピュータ100上で動作するソフトウェアの階層構造の一例を示す図である。 本技術の実施の形態におけるメモリコントローラ200の構成例を示す図である。 本技術の実施の形態におけるコントローラ処理部210の機能構成例を示す図である。 本技術の実施の形態における第1メモリ310の構成例を示す図である。 本技術の実施の形態におけるコントローラメモリ220に保持されるテーブル群の一例を示す図である。 本技術の実施の形態におけるアドレス変換テーブル221のフィールド構成例を示す図である。 本技術の実施の形態におけるデータ配置情報管理テーブル224のフィールド構成例を示す図である。 本技術の実施の形態における第1メモリ310のメモリセルアレイ311および312のページ構成の一例を示す図である。 本技術の実施の形態における第2メモリ320のメモリセルアレイのページ構成の一例を示す図である。 本技術の第1の実施の形態におけるライトコマンド処理の処理手順例を示す流れ図である。 本技術の第1の実施の形態におけるデータ配置情報管理テーブル論理アドレス更新処理の処理手順例を示す流れ図である。 本技術の第1の実施の形態におけるデータ転送処理の処理手順例を示す流れ図である。 本技術の第1の実施の形態におけるリードコマンド処理の処理手順例を示す流れ図である。 本技術の第1の実施の形態における高速読出し処理(ステップS980)の処理手順例を示す流れ図である。 本技術の第1の実施の形態の第1の変形例におけるデータ配置情報管理テーブル論理アドレス更新処理の処理手順例を示す流れ図である。 本技術の第1の実施の形態の第1の変形例における第2メモリデータベリファイ処理の処理手順例を示す流れ図である。 本技術の第1の実施の形態の第3の変形例におけるメモリコントローラ200の構成例を示す図である。 本技術の第1の実施の形態の第4の変形例におけるデータ転送処理の処理手順例を示す流れ図である。 本技術の第2の実施の形態におけるライトコマンド処理の処理手順例を示す流れ図である。 本技術の第2の実施の形態におけるデータ配置情報管理テーブル論理アドレス更新処理の処理手順例を示す流れ図である。 本技術の第2の実施の形態におけるリードコマンド処理の処理手順例を示す流れ図である。 本技術の第3の実施の形態における論理アドレス登録コマンド処理の処理手順例を示す流れ図である。
 以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
 1.第1の実施の形態(第2メモリにデータを配置するための情報をライトコマンドにより取得する例)
 2.第2の実施の形態(第2メモリにデータを配置するための情報をリードコマンドにより取得する例)
 3.第3の実施の形態(第2メモリにデータを配置するための情報を専用コマンドにより取得する例)
 <1.第1の実施の形態>
 [情報処理システムの構成]
 図1は、本技術の実施の形態における情報処理システムの全体構成例を示す図である。この情報処理システムは、ホストコンピュータ100と、メモリコントローラ200と、第1メモリ310と、第2メモリ320とから構成される。メモリコントローラ200、第1メモリ310および第2メモリ320は、記憶装置400を構成する。
 ホストコンピュータ100は、記憶装置400に対してデータのリード処理およびライト処理等を要求するコマンドを発行するものである。
 メモリコントローラ200は、ホストコンピュータ100と通信してコマンドを受信し、第1メモリ310または第2メモリ320へのデータ書込みおよび第1メモリ310または第2メモリ320からのデータ読出しを実行するものである。メモリコントローラ200は、ライトコマンドを受信した場合、ホストコンピュータ100から受信したデータを、第1メモリ310または第2メモリ320に書き込むよう指示する。また、メモリコントローラ200は、リードコマンドを受信した場合、第1メモリ310または第2メモリ320からデータを読み出してホストコンピュータ100に転送する。リードコマンドとライトコマンドにおいては、アクセス対象となるデータ記憶領域を指定するために、対象となる領域の先頭論理アドレスと、先頭論理アドレスからの論理ページ数とが用いられる。
 記憶装置400のデータの読出しおよび書込みを行うための記憶領域は、512バイト毎に論理ページに分割され、それぞれの論理ページに対して一意に論理アドレスが割り当てられている。
 第1メモリ310は、書込み速度が高速なメモリである。この第1メモリ310としては、例えば、抵抗変化型メモリが想定される。アクセス単位は264バイト、読出し要求受信からデータを出力するまでの時間(リードビジー時間)は2.5マイクロ秒、書込み要求受信からデータを受信して書込みが終了するまでの時間(ライトビジー時間)は10マイクロ秒を想定する。
 第2メモリ320は、第1メモリ310よりも書込み速度は低速でありながら、第1メモリ310よりも読出し速度が高速なメモリである。この第2メモリ320としては、例えば、NOR型フラッシュメモリが想定される。アクセス単位は2バイト、リードビジー時間は20ナノ秒であり、ライトビジー時間は19.1マイクロ秒を想定する。
 図2は、本技術の実施の形態におけるホストコンピュータ100の構成例を示す図である。このホストコンピュータ100は、ホスト処理部110と、ホストメモリ120と、コントローラインターフェース170とを備える。これらはホストバス190によって相互に接続される。
 ホスト処理部110は、ホストコンピュータ100全体の制御を行うものである。このホスト処理部110は、ホストメモリ120に格納されたソフトウェアを実行する。このホスト処理部110は、ホストメモリ120をコード領域およびデータ領域として使用して動作する。
 ホストメモリ120は、ホスト処理部110が実行するソフトウェアのコード領域およびデータ領域を記憶するメモリである。
 コントローラインターフェース170は、メモリコントローラ200との間のやりとりを行うインターフェースである。コントローラインターフェース170は、メモリコントローラ200と接続され、メモリコントローラ200に対するコマンドの送信、および、メモリコントローラ200とのデータの受送信を実行するものである。
 図3は、本技術の実施の形態におけるホストコンピュータ100上で動作するソフトウェアの階層構造の一例を示す図である。ここでは、ソフトウェアの上位階層からアプリケーションプログラム101、ホストOS102、および、デバイスドライバ103を想定する。
 アプリケーションプログラム101は、最上位階層のソフトウェアである。このアプリケーションプログラム101は、ホストOS102に対して、記憶装置400からのデータ読出し、または、記憶装置400からのデータ書込みを指示し、ホストOS102からの応答を受け取る。
 ホストOS102は、アプリケーションプログラム101とデバイスドライバ103との間の橋渡しを行うOS(Operating System)である。このホストOS102は、デバイスドライバ103に対して、記憶装置400からのデータ読出し、または、記憶装置400からのデータ書込みを指示し、デバイスドライバ103からの応答を受け取る。
 デバイスドライバ103は、ハードウェアを制御するソフトウェアである。このデバイスドライバ103は、メモリコントローラ200に対して、記憶装置400からのデータ読出し、または、記憶装置400からのデータ書込みを指示し、メモリコントローラ200からの応答を受け取る。
 図4は、本技術の実施の形態におけるメモリコントローラ200の構成例を示す図である。このメモリコントローラ200は、コントローラ処理部210と、コントローラメモリ220と、ROM230と、ECC処理部240と、ファームウェアロード部250と、ホストインターフェース270と、第1メモリインターフェース281と、第2メモリインターフェース282とを備える。これらはコントローラバス290によって相互に接続される。
 コントローラ処理部210は、メモリコントローラ200全体の制御を行うものである。このコントローラ処理部210は、コントローラメモリ220に格納されたファームウェアを実行する。このコントローラ処理部210は、コントローラメモリ220をコード領域およびデータ領域として使用して動作する。
 コントローラメモリ220は、コントローラ処理部210が実行するファームウェアのコード領域およびデータ領域を記憶するメモリである。また、コントローラメモリ220は、ユーザデータを管理するためのテーブルを展開するための領域としても使用される。これらテーブルの詳細については後述する。
 ROM230は、コントローラメモリ220に格納されるファームウェアを記憶する読出し専用メモリである。このファームウェアには、制御タスクやコマンド実行タスクが含まれる。
 ECC処理部240は、第1メモリ310に記憶するデータの誤り訂正符号(ECC:Error Correcting Code)を生成し、また、第1メモリ310から読み出したデータの誤り訂正処理を行うものである。
 ファームウェアロード部250は、記憶装置400に電源が投入されると、ROM230から、ファームウェアをコントローラメモリ220に読み出すものである。
 ホストインターフェース270は、ホストコンピュータ100との間のやりとりを行うインターフェースである。メモリインターフェース281は、第1メモリ310との間のやりとりを行うインターフェースである。メモリインターフェース282は、第2メモリ320との間のやりとりを行うインターフェースである。
 コントローラ処理部210上では、制御タスク、コマンド実行タスクが動作する。制御タスクにおいて、ホストコンピュータ100からコマンドを受信すると、そのコマンドをデコードする。そして、第1メモリ310または第2メモリ320からデータを読み出すリードコマンドや、第1メモリ310または第2メモリ320に対してデータを書き込むライトコマンドの場合には、コマンド実行タスクを呼び出して、対応する処理を行う。
 図5は、本技術の実施の形態におけるコントローラ処理部210の機能構成例を示す図である。コントローラ処理部210は、例えば、書込み部211、転送部212および読出し部213として機能する。
 書込み部211は、ライトコマンドを実行する際に、そのライトコマンドに係るライトデータを第1メモリ310に書き込む。第1メモリ310は、第2メモリ320よりも読出し速度は低速であるものの、第2メモリ320よりも書込み速度が高速であるため、書込み部211による書込みは高速に行うことができる。
 転送部212は、所定のタイミングにおいて、第1メモリ310に記憶されているライトデータを、第1メモリ310から第2メモリ320に転送する。この所定のタイミングとして、この第1の実施の形態では、ホストコンピュータ100からデータ転送コマンドの発行を受けたタイミングを想定する。
 読出し部213は、リードコマンドを実行する際に、第1メモリ310よりも第2メモリ320を優先してリードデータの読出しを行う。すなわち、リードコマンドのリードデータが第2メモリ320に記憶されている場合には第2メモリ320から読出しを行い、リードデータが第2メモリ320に記憶されていない場合には第1メモリ310から読出しを行う。第2メモリ320は、第1メモリ310よりも書込み速度は低速であるものの、第1メモリ310よりも読出し速度が高速であるため、リードデータが第2メモリ320に記憶されている場合には高速に読出しを行うことができる。
 図6は、本技術の実施の形態における第1メモリ310の構成例を示す図である。この第1メモリ310は、メモリセルアレイ311および312と、メモリセルアレイ制御部321および322と、アドレスデコーダ331および332と、データバッファ341および342と、コントローラインターフェース370とを備える。メモリセルアレイ制御部321、アドレスデコーダ331およびデータバッファ341は、メモリセルアレイ311と接続する。メモリセルアレイ制御部322、アドレスデコーダ332およびデータバッファ342は、メモリセルアレイ312と接続する。これらは、メモリバス390を介してコントローラインターフェース370と接続する。
 メモリセルアレイ311および312は、データを記憶するメモリセルをアレイ状に集積した記憶素子である。ここでは、2つのメモリバンクから構成されることを想定し、メモリセルアレイ311をバンク#0、メモリセルアレイ312をバンク#1と呼称する。ただし、メモリセルアレイは1つであってもよい。メモリセルアレイ制御部321および322は、メモリセルアレイ311および312に対する制御を実行するものである。アドレスデコーダ331および332は、メモリセルアレイ311および312に対するアドレスをデコードするデコーダである。データバッファ341および342は、メモリセルアレイ311および312にアクセスするためのバッファである。コントローラインターフェース370は、メモリコントローラ200との間のやりとりを行うインターフェースである。
 メモリセルアレイ311および312には、物理アドレスが割り振られ、第1メモリ310への書込み要求と読出し要求では、物理アドレスが指定される。
 なお、第2メモリ320の構成も第1メモリ310と基本的には同様である。ただし、第2メモリ320については複数のメモリバンクを想定せず、第2メモリ320は1つのメモリセルアレイから構成される。
 コントローラインターフェース370は、第1メモリインターフェース281から受信した要求が書込み要求であるか読出し要求であるか、要求がバンク#0であるかバンク#1であるかを判別する。
 バンク#0に対する書込み要求である場合は、コントローラインターフェース370から、データバッファ341には受信した書込みデータが転送される。そして、アドレスデコーダ331には物理アドレスが入力され、メモリセルアレイ制御部321には書込み実行の指示がされる。メモリセルアレイ制御部321からの書込み実行終了がコントローラインターフェース370に通知されると、コントローラインターフェース370は、第1メモリインターフェース281に書込み要求の終了を通知する。
 バンク#0に対する読出し要求である場合は、コントローラインターフェース370から、アドレスデコーダ331には物理アドレスが入力され、メモリセルアレイ制御部321に読出し実行の指示がされる。メモリセルアレイ311から読み出されたデータはデータバッファ341に転送されると、メモリセルアレイ制御部321からの読出し実行終了がコントローラインターフェース370に通知される。これにより、コントローラインターフェース370は、データバッファ341から第1メモリインターフェース281に読み出したデータを転送し、読出し要求を終了する。
 なお、ここではバンク#0に対する要求の処理について説明したが、バンク#1に対する要求の処理についても同様である。
 [コントローラメモリに保持されるテーブル群]
 図7は、本技術の実施の形態におけるコントローラメモリ220に保持されるテーブル群の一例を示す図である。ここでは、コントローラメモリ220に保持されるテーブル群として、アドレス変換テーブル221、未割当物理ページ情報222、転送バッファ223、および、データ配置情報管理テーブル224が示されている。
 アドレス変換テーブル221、未割当物理ページ情報222、および、データ配置情報管理テーブル224は、記憶装置400の電源投入時に、第1メモリ310から読み出されてコントローラメモリ220に展開される。また、これらは、記憶装置400の電源遮断時に、コントローラメモリ220から第1メモリ310に退避される。なお、ここでは、アドレス変換テーブル221、未割当物理ページ情報222、および、データ配置情報管理テーブル224が第1メモリ310に退避されることを想定したが、これらを第2メモリ320に退避するようにしてもよい。
 アドレス変換テーブル221は、論理アドレスに割り当てられた物理ページのアドレス(物理アドレス)を保持するテーブルである。このアドレス変換テーブル221のフィールド構成については後述する。
 未割当物理ページ情報222は、第1メモリ310および第2メモリ320のそれぞれにおいてデータの記録に使用されていない物理ページのアドレス(物理アドレス)を保持するものである。未割当物理ページ情報222から物理アドレスを取得する場合、物理アドレスの値が小さいアドレスから順に取得される。
 転送バッファ223は、第1メモリ310から第2メモリ320にデータを転送するためのバッファ領域である。
 データ配置情報管理テーブル224は、第2メモリ320におけるデータの配置情報を管理するためのテーブルである。このデータ配置情報管理テーブル224のフィールド構成については後述する。なお、データ配置情報管理テーブル224は、特許請求の範囲に記載の進捗情報保持部の一例である。
 図8は、本技術の実施の形態におけるアドレス変換テーブル221のフィールド構成例を示す図である。このアドレス変換テーブル221は、「論理アドレス」、「第1メモリ」の「物理アドレス」、および、「第2メモリ」の「物理アドレス」の各フィールドを備える。「物理アドレス」には、対応する論理アドレスに割り当てられた物理アドレスが保持されるが、対応する論理アドレスが割り当てられていない場合には「未割当」である旨が示される。「第2メモリ」の「物理アドレス」にアドレスが示されている場合には、第1メモリ310から第2メモリ320に転送済であることを意味する。なお、「0x」に続く数字は16進数を意味する。
 第1メモリ310の物理ページのサイズは、264バイトであり、1論理ページのデータは、2つの物理ページに分割されて保存される。1論理ページに割り当てられる物理ページは、アドレスが連続する2つの物理ページが割り当てられる。アドレス変換テーブル221では、連続する2つの物理ページのうち、値の小さい物理アドレスのみが保持される。1論理ページの528バイトのデータは、前半264バイトと後半264バイトの2つのデータに分割され、前半264バイトは値の小さい物理アドレスの物理ページに、後半264バイトは値の大きい物理アドレスの物理ページに、それぞれ保存される。
 なお、ここでは、アドレス変換テーブル221を簡単にするために、1論理ページのデータを、第1メモリ310においてアドレスが連続する2つの物理ページに分割して記録することを想定した。これに対して、アドレス変換テーブル221において1つの論理アドレスに2つの物理ページを対応させて記録することにより、アドレスが連続しない物理ページに割り当ててもよい。
 第2メモリ320の物理ページのサイズは、2バイトであり、第2メモリ320は、1論理ページのデータのうち、先頭から256バイト分のデータが記録される。連続する256バイトのデータの記録は、連続する128の物理ページが割り当てられる。アドレス変換テーブル221には、連続する128の物理ページのうち、値の最も小さい物理アドレスのみが保持される。
 なお、第2メモリ320についても、第1メモリ310の場合と同様に、アドレスが連続しない物理ページに記録することも可能である。
 図9は、本技術の実施の形態におけるデータ配置情報管理テーブル224のフィールド構成例を示す図である。このデータ配置情報管理テーブル224は、「先頭論理アドレス」、「進捗」、および、「第2メモリ物理アドレス」の各フィールドを備える。
 「先頭論理アドレス」には、ライトコマンドで指定された先頭論理アドレスが登録される。
 「進捗」には、第1メモリ310から第2メモリ320に転送済のデータサイズが、第2メモリ320の物理ページ数単位で管理される。「進捗」が「0」であれば、いずれのページも未転送の状態であることを意味する。ここでは、「進捗」の上限値は、「128」を想定する。
 「第2メモリ物理アドレス」には、「先頭論理アドレス」に登録されたアドレスのデータが転送されて保存された、アドレスの値が連続する第2メモリ320の物理ページのうち、先頭の物理アドレスが保持される。
 [メモリの記憶領域]
 図10は、本技術の実施の形態における第1メモリ310のメモリセルアレイ311および312のページ構成の一例を示す図である。
 メモリセルアレイ311および312には、264バイト毎に、物理アドレスが割り振られる。第1メモリ310に対する書込みおよび第1メモリ310からの読出しは、264バイトの物理ページ単位に実行される。
 物理アドレスのうち、偶数アドレスはメモリセルアレイ311に割り振られ、奇数アドレスはメモリセルアレイ312に割り振られる。
 1つの物理ページに書き込まれるデータは、256バイトのデータと、データに付属する冗長部とから構成される。この例において、冗長部は、8バイトのECCである。このECCは、メモリコントローラ200のECC処理部240において付加される。
 図11は、本技術の実施の形態における第2メモリ320のメモリセルアレイのページ構成の一例を示す図である。
 第2メモリ320のメモリセルアレイには、2バイト毎に、物理アドレスが割り振られる。第2メモリ320のメモリセルアレイにおけるデータの書込みと読出しは、2バイトの物理アドレスを単位として実行される。
 [情報処理システムの動作]
 図12は、本技術の第1の実施の形態におけるライトコマンド処理の処理手順例を示す流れ図である。このライトコマンド処理は、メモリコントローラ200がホストコンピュータ100からライトコマンドを受信した際に実行される処理である。以下の処理は、コマンド実行タスクにおいて実行される。
 コントローラ処理部210は、受信した先頭論理アドレスと論理ページ数に基づいて、論理アドレス単位に処理を分割する(ステップS911)。1回の処理で実行されるのは1論理アドレスである。例えば、ライト対象の開始アドレスとして「0」、サイズとして「1」が指定された場合は、1回の処理が行われる。また、ライト対象の先頭論理アドレスとして「0」、サイズとして「2」が指定された場合には、2回の処理に分割される。
 コントローラ処理部210は、ライト対象とする論理アドレスを決定する(ステップS912)。対象となる論理アドレスは、ライト対象の先頭論理アドレスから順番に決定される。例えば、ライト対象の先頭論理アドレスとして「0」、データサイズとして「2」が指定された場合、最初に処理を実行する論理アドレスは「0」に決定される。そして、次に対象となる論理アドレスは「1」に決定される。
 コントローラ処理部210は、ステップS912でライト対象として決定した論理アドレスを、コントローラメモリ220で保持しているアドレス変換テーブル221を使用して、物理アドレスに変換する(ステップS913)。このとき、ステップS912で選択された論理アドレスに、物理アドレスが割り当てられている場合は、アドレス変換テーブル221において変換される物理アドレスと、その変換された物理アドレスをインクリメントした物理アドレスとの2つの物理アドレスが取得される。
 一方、物理アドレスが割り当てられていないために物理アドレスが取得できなかった場合には、コントローラ処理部210は未割当物理ページ情報222から未使用で値が連続する2つの物理アドレスを取得する(ステップS914)。未使用の物理アドレスは値の小さいアドレスから順に選択される。その際、コントローラ処理部210は、アドレス変換テーブル221のうち、ステップS912で選択された論理アドレスに対応する物理アドレスの値を、取得した物理アドレスの値の小さい物理アドレスに更新する。
 コントローラ処理部210は、ホストインターフェース270を介して、ホストコンピュータ100から、512バイトのデータを受信する(ステップS915)。そして、受信した512バイトのデータは前半256バイトと後半256バイトとに分けられる。ECC処理部240は、それぞれに対して8バイトのエラー訂正コードを付加する(ステップS916)。
 コントローラ処理部210は、ステップS913またはS914において取得した2つの物理アドレスを指定して、第1メモリ310にライト要求を2回発行して、データを書き込む(ステップS917)。
 コントローラ処理部210は、ステップS917において発行した2回のライト要求が両方とも正常に終了したか否かを判定する(ステップS918)。ライト要求が正常に終了しなかった場合には(ステップS918:No)、コントローラ処理部210は、ライトコマンドの処理においてエラーが発生した旨をホストコンピュータ100に通知する(ステップS922)。ライト要求が正常に終了すると(ステップS918:Yes)、コントローラ処理部210は、ライトコマンド処理で第1メモリ310に書き込んだデータサイズの合計と、ライトコマンドで指定されたデータサイズとが一致するかを判定する(ステップS919)。ライトコマンドで指定されたデータサイズの書込みが済んでいない場合には(ステップS919:No)、ステップS912以降の処理を繰り返す。
 ライトコマンドで指定されたデータサイズの書込みが完了すると(ステップS919:Yes)、コントローラ処理部210は、受信した先頭論理アドレスを入力として、データ配置情報管理テーブル論理アドレス更新処理を実行する(ステップS930)。すなわち、この第1の実施の形態では、ライトコマンドの論理アドレスに基づいて、第1メモリ310から第2メモリ320に転送するデータが選択される。
 その後、コントローラ処理部210は、ライトコマンドの処理が正常に終了した旨をホストコンピュータ100に通知する(ステップS921)。
 図13は、本技術の第1の実施の形態におけるデータ配置情報管理テーブル論理アドレス更新処理(ステップS930)の処理手順例を示す流れ図である。このデータ配置情報管理テーブル論理アドレス更新処理は、論理アドレスを入力として処理が行われる。以下の処理は、コマンド実行タスクにおいて実行される。
 コントローラ処理部210は、入力された論理アドレスと一致する論理アドレスを、データ配置情報管理テーブル224の「先頭論理アドレス」から検索する(ステップS931)。データ配置情報管理テーブル224において一致する「先頭論理アドレス」が存在しない場合には(ステップS932:No)、データ配置情報管理テーブル224にその論理アドレスが登録されていないことを意味する。その場合、コントローラ処理部210は、データ配置情報管理テーブル224の「先頭論理アドレス」に、入力された論理アドレスを追加する(ステップS933)。
 コントローラ処理部210は、データ配置情報管理テーブル224の入力された論理アドレスが一致する「先頭論理アドレス」に対応する「進捗」の値を「0」に更新する(ステップS934)。これにより、ライトコマンド処理によって第1メモリ310に書き込まれたデータが第2メモリ320に転送されていない、という状態を表す。
 図14は、本技術の第1の実施の形態におけるデータ転送処理の処理手順例を示す流れ図である。ホストOS102またはアプリケーションプログラム101は、記憶装置400に対する入出力が発生していない状態(アイドル状態)を監視する。アイドル状態が一定期間続いている旨を検出すると、ホストOS102またはアプリケーションプログラム101は、デバイスドライバ103を介して、記憶装置400にデータ転送コマンドを発行して、データ転送処理の実行を指示する。
 コントローラ処理部210は、制御タスクによって、データ配置情報管理テーブル224の「先頭論理アドレス」が有効な値である論理アドレスのうち、対応する「進捗」の値が最大値未満となる値をとる論理アドレスを検索する(ステップS941)。このとき、該当する論理アドレスが存在しない場合は(ステップS942:No)、第2メモリ320に転送すべきデータが存在しないものとして、データ転送処理を終了する。
 転送すべきデータが存在する場合(ステップS942:Yes)、コントローラ処理部210は、制御タスクによって、ステップS941の検索結果に該当する論理アドレスのうち、対応する「進捗」の値が最大となる論理アドレスを選択する(ステップS943)。このとき、最大値が複数存在する場合には、データ配置情報管理テーブル224において最も値の小さい論理アドレスを選択する。
 コントローラ処理部210は、制御タスクによって、ステップS943で選択された論理アドレスを、アドレス変換テーブル221を使用して、物理アドレスに変換する(ステップS944)。ここで取得される物理アドレスは、ステップS943で選択された論理アドレスに対応する2つの第1メモリ310の物理アドレスのうち、値の小さい物理アドレスのみである。
 コントローラ処理部210は、制御タスクによって、ステップS944で変換した物理アドレスを指定して、第1メモリ310にリード要求を発行する。そして、読み出された264バイトデータに対してECC処理部240が誤り訂正を行う。これにより得られたデータ部のみの256バイトが、転送バッファ223に保持される(ステップS945)。
 コントローラ処理部210は、コマンド実行タスクによって、ホストインターフェース270が、ホストコンピュータ100からライトコマンドまたはリードコマンドを受信しているかを判定する(ステップS946)。ホストインターフェース270がライトコマンドまたはリードコマンドを受信している場合には(ステップS946:Yes)、データ転送処理を終了する。
 コントローラ処理部210は、制御タスクによって、未割当物理ページ情報222から、第2メモリ320においてデータの記録されていない物理アドレスを取得する(ステップS951)。
 コントローラ処理部210は、制御タスクによって、ステップS943で選択した論理アドレスに対応する「進捗」の値nをデータ配置情報管理テーブル224から取得する。そして、転送バッファ223に保持されているデータの先頭から2×nバイト目から2バイト分のデータについて、ステップS951で取得した物理アドレスを指定して、第2メモリ320にライト要求を発行する(ステップS952)。すなわち、それ以前にデータ転送が中断されていた場合であっても、「進捗」が示す位置から転送が再開される。
 コントローラ処理部210は、制御タスクによって、ステップS952のライト要求が正常に終了したか否かを判定する(ステップS953)。ライト要求が正常に終了しなかった場合には(ステップS953:No)、ステップS946以降の処理を繰り返す。ライト要求が正常に終了した場合には(ステップS953:Yes)、ステップS943で選択した論理アドレスに対応する「進捗」の値nをインクリメントして、データ配置情報管理テーブル224の値を更新する(ステップS954)。
 このとき、コントローラ処理部210は、更新された「進捗」の値が最大値と一致するかを判定する(ステップS955)。最大値と一致しない場合は(ステップS955:No)、転送バッファ223内のデータの第2メモリ320への書込みが未完了であるとして、ステップS946以降の処理を繰り返す。
 最大値と一致した場合は(ステップS955:Yes)、転送バッファ223内のデータの第2メモリ320への書込みが完了したものとして、アドレス変換テーブル221を更新する(ステップS956)。すなわち、コントローラ処理部210は、制御タスクによって、アドレス変換テーブル221における、ステップS943で選択された論理アドレスに対応する「物理アドレス」の値を、書込みを行った第2メモリ320の物理アドレスに更新して、ステップS941以降の処理を繰り返す。
 図15は、本技術の第1の実施の形態におけるリードコマンド処理の処理手順例を示す流れ図である。このリードコマンド処理は、メモリコントローラ200がホストコンピュータ100からリードコマンドを受信した際に実行される処理である。以下の処理は、コマンド実行タスクにおいて実行される。
 コントローラ処理部210は、受信した先頭論理アドレスと論理ページ数に基づいて、論理アドレス単位に処理を分割する(ステップS961)。1回の処理で実行されるのは1論理アドレスである。例えば、リード対象の先頭アドレスとして「0」、サイズとして「1」が指定された場合は、1回の処理が行われる。また、リード対象の先頭論理アドレスとして「0」、サイズとして「2」が指定された場合には、2回の処理に分割される。
 コントローラ処理部210は、リードコマンドで指定された先頭論理アドレスが、データ配置情報管理テーブル224の「先頭論理アドレス」に登録されており、かつ、「進捗」の値が上限値になっているか否かを判定する(ステップS962)。「先頭論理アドレス」に登録されており、かつ、「進捗」の値が上限値になっている場合には(ステップS962:Yes)、目的のデータが第2メモリ320に存在するとして、ステップS980およびS963を実行する。「先頭論理アドレス」に登録されていない、または、「進捗」の値が上限値になっていない場合には(ステップS962:No)、目的のデータが第2メモリ320に存在しないものとしてステップS980およびS963を実行しない。
 目的のデータが第2メモリ320に存在する場合(ステップS962:Yes)、コントローラ処理部210は、受信した先頭論理アドレスを入力として、高速読出し処理を実行する(ステップS980)。また、コントローラ処理部210は、リード対象とする論理アドレスを選択する(ステップS963)。対象となる論理アドレスは、リード対象の先頭論理アドレスに続く論理アドレスから順番に選択される。
 コントローラ処理部210は、ステップS963でリード対象として選択した論理アドレスを、コントローラメモリ220で保持しているアドレス変換テーブル221を使用して、物理アドレスに変換する(ステップS964)。このとき、ステップS963で選択された論理アドレスに、物理アドレスが割り当てられている場合は、アドレス変換テーブル221において変換される物理アドレスと、その変換された物理アドレスをインクリメントした物理アドレスとの2つの物理アドレスが取得される。そして、コントローラ処理部210は、ステップS964で変換した2つの物理アドレスを指定して、第1メモリ310にリード要求を2回発行し、264バイトのデータを2回読み出す。ECC処理部240は、読み出されたそれぞれのデータに対して誤り訂正を行った後、8バイトのエラー訂正コードを除き、256バイトのデータを2回、ホストコンピュータ100に転送する(ステップS965)。
 一方、物理アドレスが割り当てられていないために物理アドレスが取得できなかった場合には、コントローラ処理部210は、512バイト全てが0x00であるデータをホストコンピュータ100に転送する(ステップS966)。
 コントローラ処理部210は、リードコマンド処理で第1メモリ310から読み出してホストコンピュータ100に転送したデータサイズの合計と、リードコマンドで指定されたデータサイズとが一致するかを判定する(ステップS967)。リードコマンドで指定されたデータサイズの読出しが済んでいない場合には(ステップS967:No)、ステップS963以降の処理を繰り返す。
 リードコマンドで指定されたデータサイズの読出しが完了すると(ステップS967:Yes)、コントローラ処理部210は、ホストコンピュータ100にリードコマンドの処理が終了したことを通知する(ステップS975)。
 図16は、本技術の第1の実施の形態における高速読出し処理(ステップS980)の処理手順例を示す流れ図である。以下の処理は、コマンド実行タスクにおいて実行される。
 コントローラ処理部210は、入力とする先頭論理アドレスに対応する第1メモリ310の物理アドレスと第2メモリ320の物理アドレスをアドレス変換テーブル221から取得する(ステップS981)。取得される第1メモリ310の物理アドレスは、先頭論理アドレスに対応する2つの物理アドレスのうち、値の大きい物理アドレスとする。
 コントローラ処理部210は、ステップS981で取得した第1メモリ310の物理アドレスと第2メモリ320の物理アドレスとを指定して、リード要求を第1メモリ310と第2メモリ320のそれぞれに発行する(ステップS982)。
 コントローラ処理部210は、第2メモリ320から読み出された2バイトのデータをホストコンピュータ100に転送する(ステップS983)。
 コントローラ処理部210は、高速読出し処理において、第2メモリ320から読み出された物理ページ数が上限値になったか否かを判定する(ステップS984)。第2メモリ320から読み出された物理ページ数が上限値になっていない場合には(ステップS984:No)、コントローラ処理部210は、第2メモリ320の物理アドレスをアドレス変換テーブル221から取得する(ステップS985)。そして、コントローラ処理部210は、ステップS985で取得した第2メモリ320の物理アドレスを指定してリード要求を第2メモリ320に発行する(ステップS986)。
 一方、第2メモリ320から読み出された物理ページ数が上限値になった場合には(ステップS984:Yes)、コントローラ処理部210は、第1メモリ310からから読み出されたデータをホストコンピュータ100に転送する(ステップS987)。その際、ECC処理部240は、読み出された264バイトのデータに対して誤り訂正を行う。そして、コントローラ処理部210は、8バイトのエラー訂正コードを除いた256バイトのデータをホストコンピュータ100に転送する。
 このように、本技術の第1の実施の形態では、ライトコマンド処理においては書込み速度が高速な第1メモリ310に書込みが行われ、その後、記憶装置400がアイドル状態になると第1メモリ310から第2メモリ320にデータが転送される。そして、リードコマンド処理においては、読出し速度が高速な第2メモリ320に存在するデータについては第2メモリ320から読出しが行われる。これにより、高速な書込みと高速な読出しを両立することができる。
 [第1の変形例]
 上述の第1の実施の形態においては、ライトコマンド処理により第1メモリ310に上書きが生じた場合、第1メモリ310から第2メモリ320へのデータ転送を全てやり直すようになっていた。これに対し、この第1の変形例では、第1メモリ310に上書きされたデータと、第2メモリ320に転送済みのデータとを比較して、違いがある場合のみ第2メモリ320のデータを書き換えることを想定する。
 図17は、本技術の第1の実施の形態の第1の変形例におけるデータ配置情報管理テーブル論理アドレス更新処理(ステップS930)の処理手順例を示す流れ図である。
 この第1の変形例におけるデータ配置情報管理テーブル論理アドレス更新処理は、データ配置情報管理テーブル224において一致する「先頭論理アドレス」が存在する場合の処理が第1の実施の形態とは異なり、それ以外は第1の実施の形態と同様である。すなわち、この第1の変形例では、一致する「先頭論理アドレス」が存在する場合(ステップS932:Yes)、第2メモリデータベリファイ処理(ステップS990)が実行される。
 図18は、本技術の第1の実施の形態の第1の変形例における第2メモリデータベリファイ処理(ステップS990)の処理手順例を示す流れ図である。この第2メモリデータベリファイ処理は、ライトコマンドで指定された先頭論理アドレスを入力として処理を行う。なお、この第1の変形例では、コントローラメモリ220に、図示しない第1メモリベリファイバッファと第2メモリベリファイバッファとを備えるものとする。
 コントローラ処理部210は、データ配置情報管理テーブル224において、入力として受け付けた先頭論理アドレスに対応する「進捗」の値が「0」であるか否かを判定する(ステップS991)。「進捗」の値が「0」であれば(ステップS991:Yes)、比較を行う必要がないため、この第2メモリデータベリファイ処理を終了する。
 コントローラ処理部210は、入力として受け付けた先頭論理アドレスに割り当てられている第1メモリ310の物理アドレスをアドレス変換テーブル221から取得する(ステップS992)。また、コントローラ処理部210は、第2メモリ320の物理アドレスと進捗の値をデータ配置情報管理テーブル224から取得する(ステップS992)。
 コントローラ処理部210は、ステップS992で取得した物理アドレスを指定して、第1メモリ310と第2メモリ320にリード要求を発行する(ステップS993)。第1メモリ310から読み出されるデータは、1つの物理ページから読み出される264バイトのデータである。ECC処理部240は、誤り訂正を行い、データ部のみの256バイトを第1メモリベリファイバッファに保持する。第2メモリ320から読み出されるデータは、ステップS992で取得した進捗の値の数の物理ページから読み出されるデータであり、第2メモリベリファイバッファに保持される。
 コントローラ処理部210は、第1メモリベリファイバッファに保持されているデータと第2メモリベリファイバッファに保持されているデータとを比較する(ステップS994)。このときのデータ長は、ステップS992で取得した進捗の値のページ数分の長さである。例えば、進捗の値をNとすると、「N×2」バイト分のデータである。
 コントローラ処理部210は、ステップS994において進捗の値までのデータが一致したか否かを判定する(ステップS995)。進捗の値までのデータが一致する場合には(ステップS995:Yes)、正常にこの第2メモリデータベリファイ処理を終了する。一方、進捗の値までのデータが一致しない場合には(ステップS995:No)、コントローラ処理部210は、データ配置情報管理テーブル224の入力として受け付けた先頭論理アドレスと一致する「先頭論理アドレス」を検索する。そして、コントローラ処理部210は、該当する「進捗」の値を「0」に更新する(ステップS996)。
 これにより、第1メモリ310に上書きされたデータと第2メモリ320に転送済みのデータとが一致する場合には、第2メモリ320のデータの書き換えを省くことができる。
 [第2の変形例]
 上述の第1の変形例においては、第1メモリ310と第2メモリ320のデータを比較する際の処理として、データを第1メモリ310から読み出していた(ステップS993)。これに対し、この第2の変形例では、ライトコマンド処理の実行中に受信したデータを利用することを想定する。すなわち、ライトコマンド処理の実行の際に、メモリコントローラ200がホストコンピュータ100から受信した512バイトのデータのうち、256バイトを第1メモリベリファイバッファに保持しておく。そして、その保持されたデータと、第2メモリ320から読み出したデータとを比較する。これにより、第1メモリ310からの読出しを省くことができる。
 [第3の変形例]
 上述の第1の実施の形態では、データ転送処理の開始を、ホストコンピュータ100からのデータ転送コマンドの発行をトリガとしていた。これに対し、この第3の変形例では、メモリコントローラ200内部にタイマを備えることを想定して、このタイマをトリガとしてデータ転送処理を開始する。
 図19は、本技術の第1の実施の形態の第3の変形例におけるメモリコントローラ200の構成例を示す図である。このメモリコントローラ200では、ライトコマンドまたはリードコマンド終了後からの経過時間をタイマ219で計測し、一定期間ライトコマンドまたはリードコマンドを受信しない場合に、アイドル期間が継続しているものとしてデータ転送処理を開始する。これにより、ホストコンピュータ100からのデータ転送コマンドの発行を待つことなくデータ転送処理を開始することができる。
 [第4の変形例]
 上述の第1の実施の形態では、ホストコンピュータ100から受信したコマンドの有無に従ってデータ転送処理の可否を判断していたが、この第4の変形例では、第2メモリ320からのデータ読出しの有無によりデータ転送処理の可否を判断することを想定する。
 図20は、本技術の第1の実施の形態の第4の変形例におけるデータ転送処理の処理手順例を示す流れ図である。この第4の変形例におけるデータ転送処理は、第1の実施の形態のステップS946に代えて、ステップS947乃至S949の処理を行う点において異なっている。
 コントローラ処理部210は、コマンド実行タスクで受信されたリードコマンドまたはライトコマンドがあるか否か、および、コマンド実行タスクで実行中のリードコマンドまたはライトコマンドがあるか否かを、制御タスクによって調べる(ステップS947)。その結果、受信されたまたは実行中のリードコマンドまたはライトコマンドがある場合には(ステップS947:Yes)、ステップS943において選択された論理アドレスに対して書込み(上書き)があるか否かを判定する(ステップS948)。上書きがある場合には(ステップS948:Yes)、ステップS943で選択した論理アドレスに対応するデータ配置情報管理テーブル224の「進捗」の値を「0」に更新して(ステップS959)、ステップS941以降の処理を繰り返す。
 一方、上書きがない場合には(ステップS948:No)、コントローラ処理部210は、第2メモリ320に書込みが可能か否かを判定する(ステップS949)。この判定においては、例えば、受信または実行中のコマンドがライトコマンドの場合には、未書込みのデータサイズが1Kバイト以上であれば、第2メモリ320に書込みが可能と判定できる。また、例えば、受信または実行中のコマンドがリードコマンドの場合には、先頭論理アドレスのデータの読出しが高速読出し対象でなく、かつ、未読出しのデータサイズが4Kバイト以上であれば、第2メモリ320に書込みが可能と判定できる。なお、このとき、先頭論理アドレスのデータの読出しが高速読出し対象ではあるが、その読出しが完了している場合も含んでよい。
 このステップS949においては、第1メモリ310に対する書込みまたは読出しに必要な時間をコマンド実行タスクに問い合わせている。第1メモリ310に対する書込みまたは読出しを行っている間は、第2メモリ320へのアクセスが発生しないものとして、制御タスクがデータの書込みを行うことを想定している。例えば、ライトコマンドに対して、2バンク並列に書き込む場合、すなわち、2つの物理ページに同時に書込みを行う場合、1Kバイトデータのライトビジー時間は、10秒×2=20秒となり、第2メモリ320の1回の書込み時間19.1秒よりも長くなる。また、第1メモリ310の書込みにおいて、少なくとも20秒は第2メモリ320に対して読出し要求が発生しないものと想定している。一方、リードコマンドの場合、同様に4Kバイトの読出しには、2.5秒×8=20秒となり、第1メモリ310からの読出しにおいて、少なくとも20秒は第2メモリ320に対して読出し要求が発生しないものと想定している。
 なお、ここで説明した第1乃至第4の変形例は、以下の第2の実施の形態および第3の実施の形態においても同様に適用可能である。
 <2.第2の実施の形態>
 上述の第1の実施の形態においては、ライトコマンドで指定された先頭論理アドレスをデータ配置情報管理テーブル224に登録していた。これに対し、この第2の実施の形態では、リードコマンドで指定された先頭論理アドレスをデータ配置情報管理テーブル224に登録する。なお、この第2の実施の形態における情報処理システムの基本的構成は上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
 [情報処理システムの動作]
 図21は、本技術の第2の実施の形態におけるライトコマンド処理の処理手順例を示す流れ図である。この第2の実施の形態におけるライトコマンド処理は、基本的には上述の第1の実施の形態と同様である。すなわち、第2の実施の形態のステップS811乃至S819、S821およびS822は、第1の実施の形態のステップS911乃至S919、S921およびS922と同様である。一方、第2の実施の形態のデータ配置情報管理テーブル論理アドレス更新処理(ステップS830)は、次図に示すように第1の実施の形態とは異なっている。
 図22は、本技術の第2の実施の形態におけるデータ配置情報管理テーブル論理アドレス更新処理(ステップS830)の処理手順例を示す流れ図である。この第2の実施の形態におけるデータ配置情報管理テーブル論理アドレス更新処理は、基本的には上述の第1の実施の形態と同様である。すなわち、第2の実施の形態のステップS831、S832およびS834は、第1の実施の形態のステップS931、S932およびS934と同様である。一方、この第2の実施の形態においては、第1の実施の形態のステップS933が省かれている点で異なっている。つまり、この第2の実施の形態では、ライトコマンド処理においてデータ配置情報管理テーブル224の「先頭論理アドレス」の登録は行われない。
 図23は、本技術の第2の実施の形態におけるリードコマンド処理の処理手順例を示す流れ図である。この第2の実施の形態におけるリードコマンド処理は、基本的には上述の第1の実施の形態と同様である。すなわち、第2の実施の形態のステップS861乃至S867、S875およびS880は、第1の実施の形態のステップS961乃至S967、S975およびS980と同様である。一方、この第2の実施の形態では、ステップS871乃至S874の処理を行う点において、第1の実施の形態とは異なっている。
 コントローラ処理部210は、入力された論理アドレスと一致する論理アドレスを、データ配置情報管理テーブル224の「先頭論理アドレス」から検索する(ステップS871)。データ配置情報管理テーブル224において一致する「先頭論理アドレス」が存在しない場合には(ステップS872:No)、データ配置情報管理テーブル224にその論理アドレスが登録されていないことを意味する。その場合、コントローラ処理部210は、データ配置情報管理テーブル224の「先頭論理アドレス」に、入力された論理アドレスを追加する(ステップS873)。また、コントローラ処理部210は、データ配置情報管理テーブル224の入力された論理アドレスが一致する「先頭論理アドレス」に対応する「進捗」の値を「0」に更新する(ステップS874)。これにより、ライトコマンド処理によって第1メモリ310に書き込まれたデータが第2メモリ320に転送されていない、という状態を表す。
 このように、本技術の第2の実施の形態によれば、リードコマンドで指定された先頭論理アドレスをデータ配置情報管理テーブル224に登録することができる。
 <3.第3の実施の形態>
 上述の第1の実施の形態においてはライトコマンドで指定された先頭論理アドレスをデータ配置情報管理テーブル224に登録し、第2の実施の形態においてはリードコマンドで指定された先頭論理アドレスをデータ配置情報管理テーブル224に登録していた。これに対し、この第3の実施の形態では、専用コマンド(論理アドレス登録コマンド)で指定された論理アドレスをデータ配置情報管理テーブル224に登録することを想定する。
 ホストコンピュータ100は、リードコマンドで先頭論理アドレスとして指定した場合に高速にデータ読出しを行う論理アドレスを、論理アドレス登録コマンドによって記憶装置400に通知する。
 図24は、本技術の第3の実施の形態における論理アドレス登録コマンド処理の処理手順例を示す流れ図である。この論理アドレス登録コマンド処理は、メモリコントローラ200がホストコンピュータ100から論理アドレス登録コマンドを受信した際に実行される処理である。以下の処理は、コマンド実行タスクにおいて実行される。
 コントローラ処理部210は、論理アドレス登録コマンドにおいて受信した論理アドレスを取得する(ステップS711)。
 コントローラ処理部210は、ステップS711で取得した論理アドレスを入力としてデータ配置情報管理テーブル論理アドレス更新処理を行う。このデータ配置情報管理テーブル論理アドレス更新処理は、上述の第2の実施の形態におけるデータ配置情報管理テーブル論理アドレス更新処理(ステップS830)と同様である。
 コントローラ処理部210は、ホストコンピュータ100に論理アドレス登録コマンドの処理が終了したことを通知する(ステップS713)。
 なお、この第3の実施の形態では、ライトコマンド処理は上述の第2の実施の形態と同様であり、リードコマンド処理は上述の第1の実施の形態と同様である。したがって、ここでは詳細な説明は省略する。
 [第3の実施の形態の変形例]
 上述の第3の実施の形態においては、ホストコンピュータ100は、高速読出しを適用する論理アドレスの値を専用コマンドで指定していたが、特定の単位で高速読出しを適用することを専用コマンドで通知してもよい。例えば、4Kバイトを単位として専用コマンドで通知した場合、メモリコントローラ200は、論理アドレスを0、8、16、20のように、4Kバイト毎に、256バイトを第2メモリ320に配置する。
 なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
 また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
 なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
 なお、本技術は以下のような構成もとることができる。
(1)ライトコマンドを実行する際には前記ライトコマンドに係るライトデータを第1メモリに書き込む書込み部と、
 所定のタイミングにおいて前記ライトデータを前記第1メモリから第2メモリに転送する転送部と、
 リードコマンドを実行する際には前記第1メモリよりも前記第2メモリを優先してリードデータの読出しを行う読出し部と
を具備するメモリ制御装置。
(2)前記読出し部は、前記リードコマンドのリードデータが前記第2メモリに記憶されている場合には前記第2メモリから読出しを行い、前記リードデータが前記第2メモリに記憶されていない場合には前記第1メモリから読出しを行う
前記(1)に記載のメモリ制御装置。
(3)前記第2メモリは、前記第1メモリよりも書込み速度は低速で、前記第1メモリよりも読出し速度が高速である
前記(1)または(2)に記載のメモリ制御装置。
(4)前記転送部は、データ転送コマンドの発行を受けると前記転送を実行する
前記(1)から(3)のいずれかに記載のメモリ制御装置。
(5)前記ライトコマンドまたは前記リードコマンドの発行を受けないアイドル期間を計時するタイマをさらに具備し、
 前記転送部は、前記アイドル期間が所定期間継続している旨を前記タイマが検知すると前記転送を実行する
前記(1)から(3)のいずれかに記載のメモリ制御装置。
(6)前記転送部は、前記第2メモリからのデータ読出しが発生しない期間に前記転送を実行する
前記(1)から(3)のいずれかに記載のメモリ制御装置。
(7)前記転送の進捗情報を保持する進捗情報保持部をさらに具備し、
 前記転送部は、前記転送の実行中に前記進捗情報保持部に保持される前記進捗情報を更新する
前記(1)から(6)のいずれかに記載のメモリ制御装置。
(8)前記転送部は、前記転送の実行中に他のコマンドの発行を受けると前記転送を中断して、前記他のコマンドの処理が終了した後には前記進捗情報に従って前記転送を再開する
前記(7)に記載のメモリ制御装置。
(9)前記転送部は、前記ライトデータが前記第1メモリから前記第2メモリに転送された後に他のライトコマンドによって前記第1メモリに上書きが発生した場合には前記転送がされていないものとする
前記(1)から(8)のいずれかに記載のメモリ制御装置。
(10)前記転送部は、前記ライトデータが前記第1メモリから前記第2メモリに転送された後に他のライトコマンドによって前記第1メモリに上書きが発生した場合には前記転送されたライトデータと前記他のライトコマンドに係るライトデータとを比較して、両者が異なる場合のみ前記他のライトコマンドに係るライトデータを前記第1メモリから前記第2メモリに転送する
前記(1)から(8)のいずれかに記載のメモリ制御装置。
(11)前記転送部は、前記第1メモリから前記第2メモリに転送するデータを前記ライトコマンドに係るアドレスに基づいて選択する
前記(1)から(10)のいずれかに記載のメモリ制御装置。
(12)前記転送部は、前記第1メモリから前記第2メモリに転送するデータを前記リードコマンドに係るアドレスに基づいて選択する
前記(1)から(10)のいずれかに記載のメモリ制御装置。
(13)前記転送部は、前記第1メモリから前記第2メモリに転送するデータを前記ライトコマンドおよび前記リードコマンドとは異なる他のコマンドにおいて指定されたアドレスに基づいて選択する
前記(1)から(10)のいずれかに記載のメモリ制御装置。
(14)第1メモリと、
 前記第1メモリよりも書込み速度は低速で読出し速度が高速な第2メモリと、
 ライトコマンドを実行する際には前記ライトコマンドに係るライトデータを前記第1メモリに書き込む書込み部と、
 所定のタイミングにおいて前記ライトデータを前記第1メモリから前記第2メモリに転送する転送部と、
 リードコマンドを実行する際には前記第1メモリよりも前記第2メモリを優先してリードデータの読出しを行う読出し部と
を具備する記憶装置。
(15)第1メモリと、
 前記第1メモリよりも書込み速度は低速で読出し速度が高速な第2メモリと、
 前記第1メモリまたは前記第2メモリに関するコマンドを発行するホストコンピュータと、
 ライトコマンドを実行する際には前記ライトコマンドに係るライトデータを前記第1メモリに書き込む書込み部と、
 所定のタイミングにおいて前記ライトデータを前記第1メモリから前記第2メモリに転送する転送部と、
 リードコマンドを実行する際には前記第1メモリよりも前記第2メモリを優先してリードデータの読出しを行う読出し部と
を具備する情報処理システム。
 100 ホストコンピュータ
 101 アプリケーションプログラム
 102 ホストOS
 103 デバイスドライバ
 110 ホスト処理部
 120 ホストメモリ
 170 コントローラインターフェース
 190 ホストバス
 200 メモリコントローラ
 210 コントローラ処理部
 219 タイマ
 220 コントローラメモリ
 221 アドレス変換テーブル
 222 未割当物理ページ情報
 223 転送バッファ
 224 データ配置情報管理テーブル
 230 ROM
 240 ECC処理部
 250 ファームウェアロード部
 270 ホストインターフェース
 281 第1メモリインターフェース
 282 第2メモリインターフェース
 290 コントローラバス
 310 第1メモリ
 311、312 メモリセルアレイ
 320 第2メモリ
 321、322 メモリセルアレイ制御部
 331、332 アドレスデコーダ
 341、342 データバッファ
 370 コントローラインターフェース
 390 メモリバス
 400 記憶装置

Claims (15)

  1.  ライトコマンドを実行する際には前記ライトコマンドに係るライトデータを第1メモリに書き込む書込み部と、
     所定のタイミングにおいて前記ライトデータを前記第1メモリから第2メモリに転送する転送部と、
     リードコマンドを実行する際には前記第1メモリよりも前記第2メモリを優先してリードデータの読出しを行う読出し部と
    を具備するメモリ制御装置。
  2.  前記読出し部は、前記リードコマンドのリードデータが前記第2メモリに記憶されている場合には前記第2メモリから読出しを行い、前記リードデータが前記第2メモリに記憶されていない場合には前記第1メモリから読出しを行う
    請求項1記載のメモリ制御装置。
  3.  前記第2メモリは、前記第1メモリよりも書込み速度は低速で、前記第1メモリよりも読出し速度が高速である
    請求項1記載のメモリ制御装置。
  4.  前記転送部は、データ転送コマンドの発行を受けると前記転送を実行する
    請求項1記載のメモリ制御装置。
  5.  前記ライトコマンドまたは前記リードコマンドの発行を受けないアイドル期間を計時するタイマをさらに具備し、
     前記転送部は、前記アイドル期間が所定期間継続している旨を前記タイマが検知すると前記転送を実行する
    請求項1記載のメモリ制御装置。
  6.  前記転送部は、前記第2メモリからのデータ読出しが発生しない期間に前記転送を実行する
    請求項1記載のメモリ制御装置。
  7.  前記転送の進捗情報を保持する進捗情報保持部をさらに具備し、
     前記転送部は、前記転送の実行中に前記進捗情報保持部に保持される前記進捗情報を更新する
    請求項1記載のメモリ制御装置。
  8.  前記転送部は、前記転送の実行中に他のコマンドの発行を受けると前記転送を中断して、前記他のコマンドの処理が終了した後には前記進捗情報に従って前記転送を再開する
    請求項7記載のメモリ制御装置。
  9.  前記転送部は、前記ライトデータが前記第1メモリから前記第2メモリに転送された後に他のライトコマンドによって前記第1メモリに上書きが発生した場合には前記転送がされていないものとする
    請求項1記載のメモリ制御装置。
  10.  前記転送部は、前記ライトデータが前記第1メモリから前記第2メモリに転送された後に他のライトコマンドによって前記第1メモリに上書きが発生した場合には前記転送されたライトデータと前記他のライトコマンドに係るライトデータとを比較して、両者が異なる場合のみ前記他のライトコマンドに係るライトデータを前記第1メモリから前記第2メモリに転送する
    請求項1記載のメモリ制御装置。
  11.  前記転送部は、前記第1メモリから前記第2メモリに転送するデータを前記ライトコマンドに係るアドレスに基づいて選択する
    請求項1記載のメモリ制御装置。
  12.  前記転送部は、前記第1メモリから前記第2メモリに転送するデータを前記リードコマンドに係るアドレスに基づいて選択する
    請求項1記載のメモリ制御装置。
  13.  前記転送部は、前記第1メモリから前記第2メモリに転送するデータを前記ライトコマンドおよび前記リードコマンドとは異なる他のコマンドにおいて指定されたアドレスに基づいて選択する
    請求項1記載のメモリ制御装置。
  14.  第1メモリと、
     前記第1メモリよりも書込み速度は低速で読出し速度が高速な第2メモリと、
     ライトコマンドを実行する際には前記ライトコマンドに係るライトデータを前記第1メモリに書き込む書込み部と、
     所定のタイミングにおいて前記ライトデータを前記第1メモリから前記第2メモリに転送する転送部と、
     リードコマンドを実行する際には前記第1メモリよりも前記第2メモリを優先してリードデータの読出しを行う読出し部と
    を具備する記憶装置。
  15.  第1メモリと、
     前記第1メモリよりも書込み速度は低速で読出し速度が高速な第2メモリと、
     前記第1メモリまたは前記第2メモリに関するコマンドを発行するホストコンピュータと、
     ライトコマンドを実行する際には前記ライトコマンドに係るライトデータを前記第1メモリに書き込む書込み部と、
     所定のタイミングにおいて前記ライトデータを前記第1メモリから前記第2メモリに転送する転送部と、
     リードコマンドを実行する際には前記第1メモリよりも前記第2メモリを優先してリードデータの読出しを行う読出し部と
    を具備する情報処理システム。
PCT/JP2016/089110 2016-03-29 2016-12-28 メモリ制御装置、記憶装置および情報処理システム WO2017168905A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/086,833 US20190095136A1 (en) 2016-03-29 2016-12-28 Memory control device, storage device, and information processing system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016066030 2016-03-29
JP2016-066030 2016-03-29

Publications (1)

Publication Number Publication Date
WO2017168905A1 true WO2017168905A1 (ja) 2017-10-05

Family

ID=59962895

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/089110 WO2017168905A1 (ja) 2016-03-29 2016-12-28 メモリ制御装置、記憶装置および情報処理システム

Country Status (2)

Country Link
US (1) US20190095136A1 (ja)
WO (1) WO2017168905A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110214305B (zh) * 2017-12-29 2020-09-08 华为技术有限公司 一种数据访问方法及存储阵列
KR20210020694A (ko) * 2019-08-16 2021-02-24 에스케이하이닉스 주식회사 스토리지 장치, 스토리지 장치의 동작 방법, 스토리지 장치 및 스토리지 장치를 제어하는 호스트 장치를 포함하는 컴퓨팅 장치 및 그것의 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0414160A (ja) * 1990-05-07 1992-01-20 Tokyo Electric Co Ltd マイクロプロセッサ応用装置
JP2006236304A (ja) * 2004-10-27 2006-09-07 Sony Corp 記憶装置および情報処理システム
JP2010514017A (ja) * 2006-12-20 2010-04-30 モサイド・テクノロジーズ・インコーポレーテッド 揮発性メモリおよび不揮発性メモリを有するハイブリッド固体メモリシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787484A (en) * 1996-08-08 1998-07-28 Micron Technology, Inc. System and method which compares data preread from memory cells to data to be written to the cells
US6282675B1 (en) * 1997-08-06 2001-08-28 Macronix International Co., Ltd. Fault-tolerant architecture for in-circuit programming
US7406560B2 (en) * 2006-06-21 2008-07-29 Intel Corporation Using multiple non-volatile memory devices to store data in a computer system
EP3268865B1 (en) * 2015-06-26 2021-08-04 Hewlett Packard Enterprise Development LP Self-tune controller

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0414160A (ja) * 1990-05-07 1992-01-20 Tokyo Electric Co Ltd マイクロプロセッサ応用装置
JP2006236304A (ja) * 2004-10-27 2006-09-07 Sony Corp 記憶装置および情報処理システム
JP2010514017A (ja) * 2006-12-20 2010-04-30 モサイド・テクノロジーズ・インコーポレーテッド 揮発性メモリおよび不揮発性メモリを有するハイブリッド固体メモリシステム

Also Published As

Publication number Publication date
US20190095136A1 (en) 2019-03-28

Similar Documents

Publication Publication Date Title
JP6102632B2 (ja) 記憶制御装置、ホストコンピュータ、情報処理システムおよび記憶制御装置の制御方法
JP5929456B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2013142947A (ja) 記憶制御装置、記憶装置および記憶制御装置の制御方法
US20110060863A1 (en) Controller
CN103136067A (zh) 存储控制器、存储设备、信息处理系统以及存储控制方法
US20120290769A1 (en) Flash memory device, memory control device, memory control method, and storage system
JP6447629B2 (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
JP2012128815A (ja) メモリシステム
US20110029741A1 (en) Data management method and memory deivce
US20100232048A1 (en) Disk storage device
US8380920B2 (en) Flash storage device and data access method of flash memory
JP2014086062A (ja) 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
WO2017168905A1 (ja) メモリ制御装置、記憶装置および情報処理システム
JP6107625B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
JP6767653B2 (ja) 記憶装置、情報処理システム、記憶装置の起動方法及びプログラム
JP5193822B2 (ja) 追記型メモリデバイス
JP5845876B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
US20110167209A1 (en) Memory controller, nonvolatile storage device, accessing device, and nonvolatile storage system
US20100262763A1 (en) Data access method employed in multi-channel flash memory system and data access apparatus thereof
US20150067237A1 (en) Memory controller, semiconductor memory system, and memory control method
WO2015182439A1 (ja) 記憶装置、記憶システムおよび記憶装置の制御方法
JP2007249662A (ja) メモリカード及びメモリカードの制御方法
WO2019244417A1 (ja) 記憶制御装置、記憶装置および記憶制御方法
JP2013101455A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

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

Ref document number: 16897120

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 16897120

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP