This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2017-057712, filed Mar. 23, 2017, the entire contents of which are incorporated herein by reference.
Embodiments described herein relate generally to a storage device.
In a memory device, for example, a semiconductor memory device having a nonvolatile semiconductor memory, miniaturization of semiconductor manufacturing process has advanced, and as a result, performance degradation has become a problem due to the increase in read time of data from memory cells and the increase in program time of data into memory cells.
Embodiments provide a storage device with improved performance.
In general, according to one embodiment, a storage device includes a command storage area in which a command is written, a command issuance notification area in which a notification that has a command has been issued is written, a nonvolatile storage device configured to store data, and a controller configured to control an access to the nonvolatile storage device in response to the command from a host. Upon detecting that a first command is written in the command storage area, the controller executes a first step required for execution of the first command before a notification that the first command has been issued is written in the command issuance notification area.
Hereinafter, a storage device according to some embodiments will be described with reference to the drawings. In the following description, elements having the same function and configuration are denoted by the same reference numerals.
A storage device 10 is connected to a host 20 for communication with the host 20. The storage device 10 includes a controller 100, a nonvolatile storage medium 200, and a buffer 300.
The controller 100 communicates with the host 20 and controls the entire operation of the storage device 10. The controller 100 is a semiconductor integrated circuit configured as an SoC (System-on-a-Chip), for example.
In the description of the present embodiment, the host 20 is a computer that supports an interface conforming to the NVMe (NVM Express®) standard, but the present disclosure is not limited thereto.
The host 20 uses, for example, an LBA (Logical Block Address) as a logical address when reading or writing data from/in the storage device 10. For example, the LBA is a logical address that is given a number starting from 0 and is assigned to a sector (having a size of, e.g., 512 B). In addition, the host 20 may use a key as a logical address. The storage device 10 associates the logical address with a physical address of the nonvolatile storage medium 200 using a logical-to-physical address conversion table (not illustrated).
The nonvolatile storage medium 200 stores data in a nonvolatile (i.e., non-transitory) manner. The nonvolatile storage medium 200 of this embodiment is a NAND flash memory, but is not limited thereto. For example, the nonvolatile storage medium 200 may be a nonvolatile semiconductor memory such as a three-dimensional structure flash memory, a NOR type flash memory, or an MRAM (Magneto-resistive Random Access Memory), or a disk medium such as a magnetic disk or an optical disc. In the following description, the nonvolatile storage medium 200 may be sometimes referred to as NAND memory 200.
The storage device 10 of the present embodiment has a 4-channel (Ch) NAND memory 200. The controller 100 may control the NAND memories 200, which are connected to the respective channels, in parallel. A plurality of NAND memories 200, that is, a plurality of memory chips, may be connected to one channel. Hereinafter, the NAND memories 200 connected to the respective channels will be referred to as NAND memories Ch0 to Ch3, respectively. The number of channels may be larger or smaller than four.
The buffer 300 stores data in a volatile (i.e., transitory) manner. The data stored in the buffer 300 includes (1) data received from the host 20, (2) data read from the NAND memory 200, and (3) information required by the controller 100 to control the storage device 10, and the like.
The buffer 300 of the present embodiment is a DRAM (Dynamic Random Access Memory), but may be other types of general-purpose memories such as an SRAM (Static Random Access Memory). The buffer 300 may be incorporated in the controller 100.
The controller 100 includes a CPU (Central Processing Unit) 110, a host interface (IF) control unit 120, a buffer control unit 140, and a memory interface (IF) control unit 160.
The CPU 110 controls the entire storage device 10 based on FW (Firmware).
The CPU 110 may not be incorporated in the controller 100, and may be a separate semiconductor integrated circuit. In addition, in the following description, some or all of the functions described to be executed by the FW may also be executed by dedicated HW (Hardware), and some or all of the functions described to be executed by HW may also be executed by the FW.
Returning back to
The host IF control unit 120 interprets and executes a command received from the host 20. A detailed configuration of the host IF control unit 120 will be described later.
The buffer control unit 140 performs control of write/read of data in/from the buffer 300, management of empty areas of the buffer 300, and the like.
The memory IF control unit 160 includes a plurality of NAND control units 162. The NAND control units 162 are respectively connected to the NAND memories Ch0 to Ch3 (hereinafter, sometimes referred to as NAND control units Ch0 to Ch3). The NAND control units 162 control operations such as write, read, erase, and so on of data with respect to the NAND memory 200.
Next, various units of data employed in the present embodiment will be described with reference to
As illustrated in
As illustrated in
As illustrated in
The size of each of these units is given byway of example, and is not limited thereto.
Next, the configuration of the NAND memory 200 according to the present embodiment will be described with reference to
The NAND memory 200 includes a page buffer 202 and a memory cell array 204. The page buffer 202 temporarily stores data. The memory cell array 204 stores data in a nonvolatile manner.
In the present embodiment, the size of the page buffer 202 is equal to the size of data of one physical page. That is, the size of the page buffer 202 is 16 clusters (64 kB). The data stored in the page buffer 202 may be written (also referred to as programmed) in the memory cell array 204 one physical page at a time. In addition, data read from the memory cell array 204 may be stored in the page buffer 202 one physical page at a time.
Next, an operation of read from the NAND memory 200 in the present embodiment will be described with reference to
As illustrated in
In order to request the NAND memory 200 to perform the read operation, the controller 100 issues a read request (S100). Next, the controller 100 inputs an address of a read target to the NAND memory 200 (S101). The NAND memory 200 reads the target data from the memory cell array 204 over time tR and stores the read data in the page buffer 202. Meanwhile, the NAND memory 200 asserts a BUSY signal to the controller 100.
When the BUSY signal is negated (i.e., no longer asserted), the controller 100 issues a data-out request to the NAND memory 200 (S102). Upon receiving the data-out request, the NAND memory 200 outputs the data stored in the page buffer 202 to the controller 100 (S103).
Next, an operation of write in the NAND memory 200 in the present embodiment will be described with reference to
As illustrated in
In order to request the NAND memory 200 to perform the write operation, the controller 100 issues a write request (S200). Next, the controller 100 inputs an address of a write target to the NAND memory 200 (S201). Next, the controller 100 writes the write data in the page buffer 202 (S202).
The NAND memory 200 writes the target data in the memory cell array 204 over time tProg. Meanwhile, the NAND memory 200 asserts a BUSY signal to the controller 100.
Next, the configurations of the host 20 and the host IF control unit 120 according to the present embodiment will be described with reference to
The host 20 includes a host controller 22, a host bridge 24, and a host memory 26.
The host controller 22 and the host memory 26 are connected to the host bridge 24.
The host controller 22 performs various controls for the host 20.
The host memory 26 stores data generated by the host controller 22, data exchanged with peripheral devices, and the like. The host memory 26 includes a first area and a second area. The first area includes a completion queue (CQ) 28. The completion queue 28 stores completion information of a command for which the storage device 10 has completed its execution. The completion queue 28 of the present embodiment includes eight areas (CQ #0 to CQ #7) for storing command completion information, but the present disclosure isnot limited thereto. The second area includes a host data buffer 30. The host data buffer 30 is used for data transfer with the storage device 10.
The host bridge 24 has an interface to which a peripheral device such as the storage device 10 is connected. An example of this interface may include an NVMe interface.
The host IF control unit 120 includes a host interface (IF) 122, a doorbell 124, a CQ Head pointer 126, an SQ Tail pointer 128, a command set monitoring unit 130, a submission queue (SQ) 132, and a command execution unit 134.
The host IF 122 is connected to the host bridge 24. The host IF 122 serves as an interface for access from the host 20 to the doorbell 124 and the submission queue 132.
The submission queue (SQ) 132 is configured with, for example, an SRAM. The submission queue 132 may be a DRAM or a register. The host 20 writes a command in the submission queue 132. That is, the submission queue 132 functions as a command storage area. Although the submission queue 132 of the present embodiment includes eight areas (SQ #0 to SQ #7) for storing commands, the present disclosure is not limited thereto.
The host 20 operates the CQ Head pointer 126 and the SQ Tail pointer 128 by writing the doorbell 124. Each of the CQ Head pointer 126 and the SQ Tail pointer 128 is configured with, for example, a register and a logic circuit such as an adder circuit, but is not limited thereto. The host 20 operates the CQ Head pointer 126 when receiving the command completion information. The host 20 operates the SQ Tail pointer 128 when issuing a command. Details thereof will be described later.
The command set monitoring unit 130 monitors write of a command in the submission queue 132. The command execution unit 134 executes a command based on a protocol adopted to a communication interface with the host 20. Further, the command execution unit 134 exchanges data with the buffer control unit 140.
The storage device 10 permits the host 20 to access the doorbell 124 and the submission queue 132.
The host 20 may access the doorbell 124 by accessing an address=0x1008 or an address=0x100C. The host 20 can operate the SQ Tail pointer 128 by accessing the address=0x1008. The address=0x1008 is also called an SQ Tail doorbell. The host 20 can operate the CQ Head pointer 126 by accessing the address=0x100C. The address=0x100C is also called a CQ Head doorbell.
The host 20 may access the first command area (SQ #0) of the submission queue 132 by accessing an address=0x10000. Similarly, the host 20 may access the second to eighth command areas (SQ #1 to SQ #7) of the submission queue 132 by accessing addresses=0x10040 to 0x101C0, respectively.
Next, issuance of a command from the host according to the present embodiment will be described with reference to
Next, command execution completion report to the host according to the present embodiment will be described with reference to
When the execution of a command is completed, the storage device 10 writes command completion information in the completion queue 28.
Upon receiving the notification of the interrupt, the host 20 reads the completion queue 28 to acquire the command completion information. Then, the host 20 operates the CQ Head pointer 126 by writing a value of the CQ Head pointer 126 in the CQ Head doorbell. Here, it is assumed that the host 20 writes in the CQ Head doorbell a value of the CQ Head pointer 126 to point to CQ #1. When the CQ Head pointer 126 indicates CQ #1, the storage device 10 can recognize that the host 20 has acquired the command completion information of CMD #0 stored in CQ #0.
Next, execution protocols of commands according to the present embodiment will be described with reference to
The host 20 issues a read command to the storage device 10 (S300). More specifically, the host 20 writes the read command in the submission queue 132. Next, the host 20 writes a value of the SQ Tail pointer 128 in the SQ Tail doorbell and notifies the storage device 10 of the issuance of the read command (S301). The read command includes a start LBA, the number of transfers, and an address of the host data buffer 30 that is to store read data.
The storage device 10 transfers the read data designated by the start LBA and the number of transfers to the host 20 (S302). At this time, the storage device 10 writes the read data in the host data buffer 30 corresponding to the address designated by the read command. When the write of the read data in the host data buffer 30 is completed, the storage device 10 writes completion information of the read command in the completion queue 28 (S303). Next, the storage device 10 notifies the host 20 of an interrupt (S304). Upon receiving the notification of the interrupt, the host 20 acquires the completion information of the read command from the completion queue 28. The host 20 writes a value of the CQ Head pointer 126 in the CQ Head doorbell and notifies the storage device 10 that the completion information of the read command has been acquired (S305).
The host 20 issues a write command to the storage device 10 (S310). More specifically, the host 20 writes the write command in the submission queue 132. Next, the host 20 writes a value of the SQ Tail pointer 128 in the SQ Tail doorbell and notifies the storage device 10 of the issuance of the write command (S311). The write command includes a start LBA, the number of transfers, and an address of the host data buffer 30 that stores write data.
The storage device 10 fetches the write data from the host data buffer 30 corresponding to the address designated by the write command (S312). When the fetch of the write data designated by the start LBA and the number of transfers is completed, the storage device 10 writes completion information of the write command in the completion queue 28 (S313). Next, the storage device 10 notifies the host 20 of an interrupt (S314). Upon receiving the notification of the interrupt, the host 20 acquires the completion information of the write command from the completion queue 28. The host 20 writes a value of the CQ Head pointer 126 in the CQ Head doorbell and notifies the storage device 10 that the completion information of the write command has been acquired (S315).
The host 20 issues a non-data command to the storage device 10 (S320). More specifically, the host 20 writes the non-data command in the submission queue 132. Next, the host 20 writes a value of the SQ Tail pointer 128 in the SQ Tail doorbell and notifies the storage device 10 of the issuance of the non-data command (S321).
When the operation specified by the non-data command is completed, the storage device 10 writes completion information of the non-data command in the completion queue 28 (S322). Next, the storage device 10 notifies the host 20 of an interrupt (S323). Upon receiving the notification of the interrupt, the host 20 acquires the completion information of the non-data command from the completion queue 28. The host 20 writes a value of the CQ Head pointer 126 in the CQ Head doorbell and notifies the storage device 10 that the completion information of the non-data command has been acquired (S324).
Next, a method of executing the read command according to the present embodiment will be described with reference to
As described with reference to
The host 20 issues a read command to the storage device 10 (S400). More specifically, the host 20 writes the read command in the submission queue 132.
By monitoring an address of access to the host IF 122, the command set monitoring unit 130 can detect that a command has been written in the submission queue 132. Upon detecting that the command has been written, the command set monitoring unit 130 notifies the host processing unit 114 that the command has been written. Upon receiving the notification, the host processing unit 114 acquires the command from the submission queue 132. The host processing unit 114 interprets the contents of the command and sends an instruction required for the operation of the read command to the host IF control unit 120 (more specifically, the command execution unit 134). Upon receiving the instruction, the host IF control unit 120 requests the memory IF control unit 160 to read data (S401).
Upon receiving the request, the memory IF control unit 160 outputs a read request and a read address to the NAND memory 200 (S402). After time tR, the NAND memory 200 outputs read data to the buffer control unit 140 (S403). The buffer control unit 140 stores the read data in the buffer 300.
When the host 20 writes the SQ Tail doorbell and operates the SQ Tail pointer 128, the read command becomes valid (S404). The command set monitoring unit 130 notifies the host processing unit 114 that the read command has been valid. Upon receiving the notification, the host processing unit 114 sends an instruction required for data read from the buffer 300 and for data transfer to the host 20 to the host IF control unit 120 (more specifically, the command execution unit 134). Upon receiving the instruction, the host IF control unit 120 requests the buffer control unit 140 to transfer the read data (S405). The host IF control unit 120 writes the read data read from the buffer 300 in the host data buffer 30 (S406).
Next, an execution procedure of a read command according to this embodiment will be described with reference to
The host IF control unit 120 monitors whether or not a read command is written in the submission queue 132 (S500). When the read command is written (Yes in S500), the host IF control unit 120 requests the memory IF control unit 160 to read data (S501) according to an instruction from the host processing unit 114.
Next, the host IF control unit 120 monitors whether or not the SQ Tail doorbell is written (S502). When the SQ Tail doorbell is written, that is, when the SQ Tail pointer 128 is operated and the read command becomes valid (Yes in S502), the buffer processing unit 116 checks whether or not the required read data is stored in the buffer 300 (S503). When storage of the read data in the buffer 300 is completed (Yes in S503), the host IF control unit 120 requests the buffer control unit 140 to read the read data from the buffer 300 according to an instruction from the host processing unit 114 (S504). Then, the host IF control unit 120 transfers the read data to the host 20 (S505).
According to the storage device of the first embodiment described above, since the read of data from the nonvolatile storage medium is started in advance before read command issuance notification, it is possible to improve the performance of the storage device.
A storage device 10 according to a second embodiment executes an execution step required for execution of a non-data command, for example, a flush command, before command issuance notification.
First, a flow of data in the storage device 10 at the time executing a write command will be described with reference to
The host 20 issues a write command to the storage device 10 (S600). More specifically, the host 20 writes the write command in the submission queue 132. Next, the host 20 writes a value of the SQ Tail pointer 128 in the SQ Tail doorbell and notifies the storage device 10 of the issuance of the write command (S601).
The storage device 10 fetches write data from the host data buffer 30 corresponding to an address designated by the write command (S602). The storage device 10 stores the fetched write data in the buffer 300 (S603). Further, the storage device 10 writes the write data stored in the buffer 300 in the NAND memory 200 (S604).
When writing of the write data in the NAND memory 200 by the number of transfers designated by the write command is completed, the storage device 10 writes completion information of the write command in the completion queue 28 (S605). When FUA=1, the completion information of the write command has to be written after writing the write data in the NAND memory 200.
A process up to write command issuance (S610 and S611) is the same as that in
The storage device 10 fetches write data from the host data buffer 30 corresponding to an address designated by the write command (S612). The storage device 10 stores the fetched write data in the buffer 300 (S613).
When storage of the write data in the buffer 300 by the number of transfers designated by the write command is completed, the storage device 10 writes completion information of the write command in the completion queue 28 (S614). When FUA=0, the completion information of the write command may be written before writing the write data in the NAND memory 200.
The write data stored in the buffer 300 is written in the NAND memory 200, for example, at the time of idling of the storage device 10 (S615).
Next, a method of executing a flush command according to the present embodiment will be described with reference to
The host 20 issues a flush command to the storage device 10 (S700). More specifically, the host 20 writes the flush command in the submission queue 132.
By monitoring an address of access to the host IF 122, the command set monitoring unit 130 can detect that a command has been written in the submission queue 132. Upon detecting that the command has been written, the command set monitoring unit 130 notifies the host processing unit 114 that the command has been written. Upon receiving the notification, the host processing unit 114 acquires the command from the submission queue 132. The host processing unit 114 interprets the contents of the command and sends an instruction required for the operation of the flush command to the host IF control unit 120 (more specifically, the command execution unit 134). Upon receiving the instruction, the host IF control unit 120 requests the memory IF control unit 160 to write the write data stored in the buffer 300 into the NAND memory 200 (S701).
Upon receiving the request, the memory IF control unit 160 outputs a write request and a write address to the NAND memory 200 (S702). Next, the memory IF control unit 160 requests the buffer control unit 140 to transfer the write data stored in the buffer 300. The buffer control unit 140 writes the write data stored in the buffer 300 into the NAND memory 200 (S703). The NAND memory 200 writes the write data in the memory cell array 204 over time tProg.
When the host 20 writes the SQ Tail doorbell and operates the SQ Tail pointer 128, the flush command becomes valid (S704). The command set monitoring unit 130 notifies the host processing unit 114 that the flush command has been valid. Upon receiving the notification, the host processing unit 114 confirms that the write of the write data into the NAND memory 200 has been completed. Then, the host processing unit 114 instructs the host IF control unit 120 to write completion information of the flush command in the host 20 (S705).
Next, with reference to
The host IF control unit 120 monitors whether or not a flush command is written in the submission queue 132 (S800). When the flush command is written (Yes in S800), the host IF control unit 120 requests the memory IF control unit 160 to write data according to an instruction from the host processing unit 114 (S801).
Next, the host IF control unit 120 monitors write in the SQ Tail doorbell (S802). When the SQ Tail doorbell is written, that is, when the SQ Tail pointer 128 is operated and the flush command becomes valid (Yes in S802), the host processing unit 114 checks whether or not the write of the write data as a flush target into the NAND memory 200 has been completed (S803). When the write of the write data is completed (Yes in S803), the host IF control unit 120 writes completion information of the flush command in the host 20 according to an instruction from the host processing unit 114 (S804).
According to the storage device of the second embodiment described above, since the operation of write in the nonvolatile storage medium is started in advance before command issuance notification for the flush command, it is possible to improve the performance of the storage device.
A storage device 10 according to a third embodiment executes an execution step required for execution of a write command before command issuance notification.
First, a read-modify-write process according to this embodiment will be described with reference to
As described above, the basic unit of data transfer between the controller 100 and the NAND memory 200 is a cluster, while the basic unit of data transfer between the host 20 and the storage device 10 is a sector.
Here, as illustrated in
In such a case, as illustrated in
Next, a method of executing the write command according to the present embodiment will be described with reference to
As described with reference to
The host 20 issues a write command in the storage device 10 (S1000). More specifically, the host 20 writes the write command in the submission queue 132.
By monitoring an access address to the host IF 122, the command set monitoring unit 130 can detect that a command has been written in the submission queue 132. Upon detecting that the command has been written, the command set monitoring unit 130 notifies the host processing unit 114 that the command has been written. Upon receiving the notification, the host processing unit 114 acquires the command from the submission queue 132. The host processing unit 114 interprets the contents of the command. When determining that a read-modify-write process is required, the host processing unit 114 sends an instruction required for the read-modify-write process to the host IF control unit 120 (more specifically, the command execution unit 134). Upon receiving the instruction, the host IF control unit 120 requests the memory IF control unit 160 to read data (S1001).
Upon receiving the request, the memory IF control unit 160 issues a read request and a read address to the NAND memory 200 (S1002). After time tR, the NAND memory 200 outputs read data to the buffer control unit 140 (S1003). The buffer control unit 140 stores the read data in the buffer 300.
When the host 20 writes the SQ Tail doorbell and operates the SQ Tail pointer 128, the write command becomes valid (S1004). The command set monitoring unit 130 notifies the host processing unit 114 that the write command has been valid. Upon receiving the notification, the host processing unit 114 instructs the host IF control unit 120 (more specifically, the command execution unit 134) to fetch data. Upon receiving the instruction, the host IF control unit 120 fetches the data from the host data buffer 30 (S1005).
The buffer control unit 140 stores the data fetched by the host IF control unit 120 in the buffer 300 (S1006). The buffer processing unit 116 merges the data stored in the buffer 300 in S1003 with the data stored in the buffer 300 in S1006 (S1007).
The memory IF control unit 160 outputs a write request and a write address to the NAND memory 200 (S1008). Next, the memory IF control unit 160 requests the buffer control unit 140 to transfer the merged data. The buffer control unit 140 writes the merged data stored in the buffer 300 into the NAND memory 200 (S1009).
Next, an execution procedure of a write command according to this embodiment will be described with reference to
The host IF control unit 120 monitors whether or not a write command is written in the submission queue 132 (S1100). When the write command is written (Yes in S1100), the host processing unit 114 determines whether or not a read-modify-write process is required (S1101).
When the read-modify-write process is required (Yes in S1101), the host IF control unit 120 requests the memory IF control unit 160 to read data (S1102) according to an instruction from the host processing unit 114.
Next, the host IF control unit 120 monitors write in the SQ Tail doorbell (S1103). When the SQ Tail doorbell is written, that is, when the SQ Tail pointer 128 is operated and the write command becomes valid (Yes in S1103), the host IF control unit 120 fetches write data from the host data buffer 30 according to an instruction from the host processing unit 114 (S1104).
Next, the buffer processing unit 116 checks whether or not data required for the read-modify-write process has been stored in the buffer 300 (S1105). When the storage of the required data in the buffer 300 is completed (Yes in S1105), the buffer processing unit 116 merges the data on the buffer 300 (S1106).
Then, the buffer processing unit 116 and the memory processing unit 118 respectively request the buffer control unit 140 and the memory IF control unit 160 to write the merged data in the NAND memory 200 (S1107).
On the other hand, when the read-modify-write process is not required (No in S1101), there is no process that can be performed in advance until the SQ Tail doorbell is written and the write command becomes valid. In this case, after the write command becomes valid (S1108), write data is fetched from the host data buffer 30 (S1109), and data is written in the NAND memory 200 (S1110).
According to the storage device of the third embodiment described above, since data required for the read-modify-write process begins to be read from the nonvolatile storage medium in advance before command issuance notification for a write command, it is possible to improve the performance of the storage device.
A storage device 10 according to a fourth embodiment performs an appropriate process when a command, for which execution has been started in advance before command issue notification, is rewritten.
In an example illustrated in
At this time, a case where the host 20 rewrites a command of SQ #0 into another command CMD #0′ is considered. In the case where said another command CMD#0′ is, for example, a read command or a non-data command, said another command CMD #0′ may be a read command designating an LBA different from CMD #0.
By monitoring an address of access to the host IF 122, the command set monitoring unit 130 can detect that a command stored in SQ #0 has been rewritten. Upon detecting that the command has been rewritten, the command set monitoring unit 130 notifies the host processing unit 114 that the command has been rewritten. Upon receiving the notification, the host processing unit 114 discards data corresponding to the CMD #0 stored in the buffer 300 (S1202).
The above description is similarly applied to discarding of the data stored in the buffer 300 for the read-modify-write described in the third embodiment.
In an example illustrated in
At this time, a case where the host 20 rewrites a command of SQ #0 into another command CMD #0′ is considered. In this case, the storage device 10 does not perform any special operation on the data. As described in the second embodiment, this is because the write data stored in the buffer 300 may be written into the NAND memory 200 not only according to the flush command, but also during the idling of the storage device 10. Further, this is because, when the data is invalidated, it is sufficient to invalidate the data on the logical-to-physical address conversion table.
In an example illustrated in
On the other hand, CMD #2 (write command) is stored in SQ #2. At this time, the host processing unit 114 does not start execution of a read command (CMD #3) stored in SQ #3 in advance. This is because the execution of the write command of CMD #2 may change the contents of data targeted by the read command of CMD #3. Note that when there is no overlap between the range of logical address specified by CMD #2 and the range of logical address specified by CMD #3, CMD #3 may be executed in advance.
According to the memory device of the fourth embodiment described above, since an appropriate process maybe performed when a command, for which execution has been started, is rewritten, it is possible to improve the performance of the storage device.
According to the storage device of at least one of the above-described embodiments, since the execution of an execution step required for command execution is started prior to reception of a command issue notification, it is possible to improve the performance of the storage device.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein maybe made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
Number | Date | Country | Kind |
---|---|---|---|
2017-057712 | Mar 2017 | JP | national |