US20150186052A1 - Storage device and data transmission control method thereof - Google Patents
Storage device and data transmission control method thereof Download PDFInfo
- Publication number
- US20150186052A1 US20150186052A1 US14/225,773 US201414225773A US2015186052A1 US 20150186052 A1 US20150186052 A1 US 20150186052A1 US 201414225773 A US201414225773 A US 201414225773A US 2015186052 A1 US2015186052 A1 US 2015186052A1
- Authority
- US
- United States
- Prior art keywords
- host
- storage device
- controlling unit
- frame transmission
- time period
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Definitions
- the present invention relates to a storage device and a control method thereof, and more particularly to a storage device using a SATA bus to connect with a host and a data transmission control method thereof.
- serial advanced technology attachment (SATA) bus is widely used as a connection bus between a storage device and a host of a computer system in order to replace the conventional integrated device electronics (IDE) bus.
- the storage device is for example a hard disc drive or a solid state drive.
- the SATA specifications comprise a SATA 1.0 specification, a SATA 2.0 specification and a STAT 3.0 specification.
- the data transmission speed of the SATA 1.0 specification is 1.5 Gbit/s
- the data transmission speed of the SATA 2.0 specification is 3 Gbit/s
- the data transmission speed of the SATA 3.0 specification is 6 Gbit/s. That is, with the increasing progress of the SATA specifications, the speed of transferring data between the host and the storage device is gradually increased.
- the SATA 3.0 specification further supports native command queuing (NCQ) in order to achieve better performance of transferring data between the host and the storage device.
- NCQ native command queuing
- the storage device that supports the NCQ may receive plural commands from the host. Moreover, the commands are not sequentially executed by the storage device in order. On the contrary, the storage device may rearrange the sequence of executing these commands according to the types of the commands and the storage positions of the data.
- the storage device that supports the NCQ may continuously receive 32 commands from the host and execute these commands in an out-of-order manner.
- the read data corresponding to the read commands are transmitted back from the storage device to the host.
- the host may issue a new read command to the storage device again. Since 32 read commands are ready to be executed by the storage device at any time, the reading performance of the storage device is largely enhanced.
- the host and the storage device intend to exchange data between each other simultaneously, the host has to postpone the frame transmission at first. That is, when the host and the storage device simultaneously issue a frame transmission request, the priority of the frame transmission of the storage device is higher than the priority of the frame transmission of the host.
- the contents of the frame may contain read data, write data or commands.
- the read data corresponding to the read commands are continuously transmitted back from the storage device to the host.
- the frame transmission requests from the host are almost postponed. Consequently, after the 32 read data are completely transmitted from the storage device to the host and no read commands are ready to be executed by the storage device, the frame transmission request can be successfully issued from the host and the new read command can be successfully transmitted to the storage device.
- An embodiment of the present invention provides a data transmission control method for a storage device.
- the storage device is in communication with a host through a SATA bus.
- the data transmission control method includes the following steps. Firstly, a X_RDY primitive is issued from the storage device to the host. After a R_RDY primitive from the host is received by the storage device, a first frame is transmitted to the host. After the first frame is completely transmitted and in a specified time period before a second frame is transmitted, plural SYNC primitives are issued from the storage device to the host. If the host does not issue the X_RDY primitive in the specified time period, the second frame is transmitted to the host.
- the storage device is in communication with a host through a SATA bus.
- the storage device includes a controlling unit, a flash memory, and a cache memory.
- the controlling unit is used for receiving plural read commands from the host and correspondingly transmitting plural read data to the host.
- the controlling unit implements plural frame transmission procedures to transmit the plural read data to the host.
- the flash memory is connected with the controlling unit.
- the cache memory is connected with the controlling unit. After a first frame transmission procedure is completed by the controlling unit and before a second frame transmission procedure is started by the controlling unit, the controlling unit waits for a specified time period. If a frame transmission request corresponding to a third frame transmission procedure is not issued from the host to the controlling unit in the specified time period, the second frame transmission procedure is implemented by the controlling unit after the specified time period.
- FIG. 1 is a schematic functional block diagram illustrating the connection between a solid state drive and a host according to an embodiment of the present invention
- FIG. 2 is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to the SATA specification;
- FIG. 3 is another schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to the SATA specification;
- FIG. 4 is a flowchart illustrating a data transmission control method for a solid state drive according to an embodiment of the present invention
- FIG. 5A is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to an embodiment of the present invention.
- FIG. 5B is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to another embodiment of the present invention.
- the present invention provides a storage device using a SATA bus to connect with a host.
- the present invention also provides a data transmission control method for the storage device.
- the storage device is illustrated by referring to a solid state drive. It is noted that the storage device is not restricted to the solid state drive.
- the storage device is a hard disc drive.
- FIG. 1 is a schematic functional block diagram illustrating the connection between a solid state drive and a host according to an embodiment of the present invention.
- both of the host 112 and the solid state drive 110 comply with the SATA 3.0 specification.
- the solid state drive 110 is a storage device that supports native command queuing (NCQ), and the host 112 also supports native command queuing (NCQ).
- the host 112 is in communication with a controlling unit 101 of the solid state drive 110 through a SATA bus 120 . Consequently, commands, write data or read data can be exchanged between the host 112 and the solid state drive 110 .
- the solid state drive 110 further comprises a cache memory 103 and a flash memory 105 .
- the controlling unit 101 is connected with the flash memory 105 and the cache memory 103 .
- the cache memory 103 is connected with the controlling unit 101 for temporarily storing the write data from the host 112 or temporarily storing the read data requested by the host 112 .
- the host 112 issues the write command
- the corresponding write data is temporarily stored into the cache memory 103 by the controlling unit 101 , and then the write data is transferred from the cache memory 103 to the flash memory 105 .
- the read data is retrieved from the flash memory 105 and temporarily stored into the cache memory 103 by the controlling unit 101 , and then the read data is transmitted from the cache memory 103 to the host 112 .
- FIG. 2 is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to the SATA specification. As shown in FIG. 2 , plural frames are transmitted from the solid state drive 110 to the host 112 .
- the primitives are also referred as original commands.
- the solid state drive 110 intends to transmit a data (e.g. a read data) to the host 112 . Consequently, the solid state drive 110 issues a X_RDY primitive to notify the host 112 that the frame transmission is ready.
- a data e.g. a read data
- the host 112 issues a R_RDY primitive to respond to the solid state drive 110 that the host 112 is ready to receive the frame.
- the solid state drive 110 issues a SOF primitive at the time point T 3 to notify the host 112 that the frame transmission is started.
- the interval from the time point T 3 to the time point T 5 indicates a complete frame transmission procedure of the solid state drive 110 .
- the solid state drive 110 transmits a data (DATA) or issues a HOLD primitive to stop the frame transmission according to the practical conditions.
- the host 112 continuously issues a R_IP primitive to notify the solid state drive 110 that the host 112 is receiving and processing the data from the solid state drive 110 .
- the solid state drive 110 issues an EOF primitive at the time point T 4 to notify the host 112 that the frame transmission is ended.
- the solid state drive 110 waits for the frame reception of the host 112 in the interval from the time point T 4 to the time point T 5 . While the host 112 is processing the frame, the host 112 continuously issues the R_IP primitive. While the solid state drive 110 waits for the host 112 to process the frame, the solid state drive 110 issues a WTRM primitive to wait for the frame termination of the host 112 . At the time point T 5 , the host 112 issues a R_OK primitive to notify the solid state drive 110 that the frame reception has no error. That is, at the time point T 5 , both of the host 112 and the solid state drive 110 confirm that the frame transmission procedure is successfully completed.
- the solid state drive 110 issues the X_RDY primitive again to notify the host 112 that the next frame transmission is ready. Meanwhile, the host 112 issues the SYNC primitive to notify the solid state drive 110 that no frame transmission is being implemented. Consequently, at the time point T 7 , the host 112 issues a R_RDY primitive to respond to the solid state drive 110 that the host 112 is ready to receive the next frame.
- the interval from the time point T 8 to the time point T 10 indicates another complete frame transmission procedure of the solid state drive 110 .
- the frame transmission procedure from the time point T 8 to the time point T 10 is similar to the frame transmission procedure from the time point T 3 to the time point T 5 , and is not redundantly described herein.
- FIG. 3 is another schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to the SATA specification. As shown in FIG. 3 , plural frames are transmitted from the solid state drive 110 to the host 112 , and plural data are intended to be transmitted from the host 112 to the solid state drive 110 .
- the solid state drive 110 intends to transmit a data (e.g. a read data) to the host 112 . That is, at the time point T 1 , the solid state drive 110 issues a X_RDY primitive to notify the host 112 . At the time point T 2 , the host 112 issues a R_RDY primitive to respond to the solid state drive 110 . At the time point T 3 , the solid state drive 110 issues a SOF primitive to notify the host 112 that the frame transmission is started.
- a data e.g. a read data
- the interval from the time point T 3 to the time point T 5 indicates a complete frame transmission procedure of the solid state drive 110 .
- the frame transmission procedure from the time point T 3 to the time point T 5 is not redundantly described herein.
- both of the host 112 and the solid state drive 110 confirm that the frame transmission procedure is successfully completed.
- the host 112 issues the X_RDY primitive to notify the solid state drive 110 that the frame transmission is ready.
- the solid state drive 110 also issues the X_RDY primitive again to notify the host 112 that the frame transmission is ready.
- the host 112 has to postpone the frame transmission according to the SATA 3.0 specification. Consequently, the frame transmission of the host 112 will be postponed, which is indicated as the dotted line. However, the frame transmission of the solid state drive 110 is continuously performed. Consequently, at the time point T 7 , the host 112 issues a R_RDY primitive to respond to the solid state drive 110 that the host 112 is ready to receive the next frame.
- the interval from the time point T 8 to the time point T 10 indicates another complete frame transmission procedure of the solid state drive 110 . That is, at the time point T 10 , the host 112 and the solid state drive 110 confirms again that the frame transmission procedure is successfully completed.
- the host 112 issues the X_RDY primitive to notify the solid state drive 110 that the frame transmission is ready.
- the solid state drive 110 also issues the X_RDY primitive again to notify the host 112 that the frame transmission is ready.
- the frame transmission of the host 112 is postponed. Under this circumstance, the host 112 is only able to receive the frame from the solid state drive 110 .
- the frame transmission of the host 112 is postponed.
- the frame transmission request can be successfully issued by the host 112 and the new read command can be successfully transmitted to the solid state drive 110 .
- the accessing performance of the solid state drive 110 is still unsatisfied.
- FIG. 4 is a flowchart illustrating a data transmission control method for a solid state drive according to an embodiment of the present invention.
- the data transmission control method is implemented by the controlling unit 101 .
- the solid state drive 110 After the solid state drive 110 is enabled and plural read data are intended to be transmitted back to the host 112 , the solid state drive 110 issues a X_RDY primitive to the host 112 (Step S 401 ). If a R_RDY primitive from the host 112 is not received by the solid state drive 110 (Step S 403 ), the solid state drive 110 continuously waits for the R_RDY primitive from the host 112 . Of course, the solid state drive 110 may issue the X_RDY primitive to the host 112 again.
- Step S 403 If the R_RDY primitive from the host 112 is received by the solid state drive 110 (Step S 403 ), the solid state drive 110 transmits a frame to the host 112 (Step S 405 ).
- the solid state drive 110 judges whether a next frame transmission is implemented (Step S 407 ). If the next frame transmission is not implemented by the solid state drive 110 , the flowchart is ended.
- the solid state drive 110 issues a SYNC primitive to the host 112 in a specified time period (Step S 411 ). Then, the step S 401 of issuing the X_RDY primitive to the host 112 is repeatedly executed.
- the solid state drive 110 may issue plural SYNC primitives to the host 112 .
- the solid state drive 110 issues the plural SYNC primitives in the specified time period, if the host 112 intends to implement one frame transmission, the host 112 may issue the X_RDY primitive to the solid state drive 110 in the specified time period. After the solid state drive 110 issues the R_RDY primitive to respond to the host 112 , the frame from the host 112 may be received by the solid state drive 110 . Under this circumstance, the next frame transmission of the solid state drive 110 is not implemented.
- the host 112 if the host 112 does not intend to implement the frame transmission, the host 112 also issues the plural SYNC primitives to the solid state drive 110 in the specified time period. After the specified time period, the solid state drive 110 may issue the X_RDY primitive to the host 112 again, and the next frame transmission may be started.
- FIG. 5A is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to an embodiment of the present invention. As shown in FIG. 5A , plural frames are transmitted from the solid state drive 110 to the host 112 , and plural data are transmitted from the host 112 to the solid state drive 110 .
- the solid state drive 110 intends to transmit a data (e.g. a read data) to the host 112 . That is, at the time point T 1 , the solid state drive 110 issues a X_RDY primitive to notify the host 112 . At the time point T 2 , the host 112 issues a R_RDY primitive to respond to the solid state drive 110 . At the time point T 3 , the solid state drive 110 issues a SOF primitive to notify the host 112 that the frame transmission is started.
- a data e.g. a read data
- the interval from the time point T 3 to the time point T 5 indicates a complete frame transmission procedure of the solid state drive 110 .
- the frame transmission procedure from the time point T 3 to the time point T 5 is not redundantly described herein.
- both of the host 112 and the solid state drive 110 confirm that the frame transmission procedure is successfully completed.
- the interval from the time point T 5 to the time point T 6 indicates the specified time period. That is, in the interval from the time point T 5 to the time point T 6 , the solid state drive 110 issues the SYNC primitive to the host 112 . At the time point T 6 , the host 112 issues the X_RDY primitive to the solid state drive 110 to notify the solid state drive 110 that the frame transmission is ready.
- the solid state drive 110 issues the R_RDY primitive to respond to the host 112 . Consequently, the interval from the time point T 8 to the time point T 10 indicates a complete frame transmission procedure of the host 112 . At the time point T 10 , both of the host 112 and the solid state drive 110 confirm that the frame transmission procedure is successfully completed.
- the solid state drive 110 issues the SYNC primitive to the host 112 . Consequently, the host 112 may issue the X_RDY primitive in the specified time period, the frame transmission of the host 112 may be successfully implemented in the interval from the time point T 8 to the time point T 10 . That is, in the interval from the time point T 8 to the time point T 10 , the solid state drive 110 is only able to receive the frame from the host 112 , but the frame transmission of the solid state drive 110 cannot be implemented.
- the solid state drive 110 intends to implement the next frame transmission.
- the solid state drive 110 issues the X_RDY primitive to the host 112 . Consequently, the frame transmission of the solid state drive 110 is implemented again.
- FIG. 5B is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to another embodiment of the present invention. As shown in FIG. 5B , plural frames are transmitted from the solid state drive 110 to the host 112 , but no data are transmitted from the host 112 to the solid state drive 110 .
- the solid state drive 110 intends to transmit a data (e.g. a read data) to the host 112 . That is, at the time point T 1 , the solid state drive 110 issues a X_RDY primitive to notify the host 112 . At the time point T 2 , the host 112 issues a R_RDY primitive to respond to the solid state drive 110 . At the time point T 3 , the solid state drive 110 issues a SOF primitive to notify the host 112 that the frame transmission is started.
- a data e.g. a read data
- the interval from the time point T 3 to the time point T 5 indicates a complete frame transmission procedure of the solid state drive 110 .
- the frame transmission procedure from the time point T 3 to the time point T 5 is not redundantly described herein.
- both of the host 112 and the solid state drive 110 confirm that the frame transmission procedure is successfully completed.
- the interval from the time point T 5 to the time point T 6 indicates the specified time period. That is, in the interval from the time point T 5 to the time point T 6 , the solid state drive 110 issues the SYNC primitive to the host 112 . Since the host 112 does not intend to transmit the data to the solid state drive 110 , the host 112 also issues the SYNC primitive to the solid state drive 110 in the interval from the time point T 5 to the time point T 6 .
- the solid state drive 110 Since the solid state drive 110 still intends to transmit a data to the host 112 , the solid state drive 110 issues the X_RDY primitive to the host 112 at the time point T 7 . At the time point T 8 , the host 112 issues the R_RDY primitive to respond to the solid state drive 110 .
- the interval from the time point T 9 to the time point T 11 indicates another complete frame transmission procedure of the solid state drive 110 .
- the frame transmission procedure from the time point T 9 to the time point T 11 is not redundantly described herein.
- both of the host 112 and the solid state drive 110 confirm that the frame transmission procedure is successfully completed.
- the interval from the time point T 11 to the time point T 12 indicates another specified time period.
- the solid state drive 110 waits for the frame transmission of the host 112 .
- the solid state drive 110 confirms that no frame transmission of the host 112 is implemented. Consequently, the solid state drive 110 issues the X_RDY primitive to implement the next frame transmission.
- the present invention provides a data transmission control method for a solid state drive. After one frame transmission is completed by the solid state drive 110 and in a specified time period before the next frame transmission is implemented, the solid state drive 110 issues plural SYNC primitives to the host 112 . Under this circumstance, since the host 112 has sufficient time to issue the X_RDY primitive, the host 112 has the opportunity to implement the frame transmission. Consequently, the accessing performance of the solid state drive 110 is largely enhanced.
- the specified time period may be determined according to the computing speed of the host 112 .
- the specified time period is about 100 ns ⁇ 1000 ns.
- the specified time period may be a fixed time period.
- the specified time period is dynamically adjusted to be increased or decreased according to the difference between the host 112 and the solid state drive 110 in order to achieve the optimal performance.
- the difference may be the transmitting speed difference or the computing speed difference between the host 112 and the solid state drive 110 .
- the specified time period is adjustable according to the settings of the controlling unit 101 .
Abstract
Description
- This application claims the benefit of People's Republic of China Application Serial No. 201310746726.5, filed Dec. 30, 2013, the subject matter of which is incorporated herein by reference.
- The present invention relates to a storage device and a control method thereof, and more particularly to a storage device using a SATA bus to connect with a host and a data transmission control method thereof.
- With increasing development of science and technology, a serial advanced technology attachment (SATA) bus is widely used as a connection bus between a storage device and a host of a computer system in order to replace the conventional integrated device electronics (IDE) bus. The storage device is for example a hard disc drive or a solid state drive.
- Generally, the SATA specifications comprise a SATA 1.0 specification, a SATA 2.0 specification and a STAT 3.0 specification. The data transmission speed of the SATA 1.0 specification is 1.5 Gbit/s, the data transmission speed of the SATA 2.0 specification is 3 Gbit/s, and the data transmission speed of the SATA 3.0 specification is 6 Gbit/s. That is, with the increasing progress of the SATA specifications, the speed of transferring data between the host and the storage device is gradually increased. Moreover, the SATA 3.0 specification further supports native command queuing (NCQ) in order to achieve better performance of transferring data between the host and the storage device.
- The storage device that supports the NCQ may receive plural commands from the host. Moreover, the commands are not sequentially executed by the storage device in order. On the contrary, the storage device may rearrange the sequence of executing these commands according to the types of the commands and the storage positions of the data.
- According to the SATA 3.0 specification, the storage device that supports the NCQ may continuously receive 32 commands from the host and execute these commands in an out-of-order manner.
- For example, if 32 read commands from the host are received by the storage device, after the sequence of the read commands are rearranged by the storage device, the read data corresponding to the read commands are transmitted back from the storage device to the host. After the execution of any read command is completed, the host may issue a new read command to the storage device again. Since 32 read commands are ready to be executed by the storage device at any time, the reading performance of the storage device is largely enhanced.
- However, the current SATA 3.0 specification still has some drawbacks. For example, after the read data is transmitted back from the storage device, it is difficult for the host to transmit a new read command to the storage device. The reasons will be illustrated as follows.
- According to the SATA 3.0 specification, while the host and the storage device intend to exchange data between each other simultaneously, the host has to postpone the frame transmission at first. That is, when the host and the storage device simultaneously issue a frame transmission request, the priority of the frame transmission of the storage device is higher than the priority of the frame transmission of the host. Moreover, the contents of the frame may contain read data, write data or commands.
- For example, after the 32 read commands are received by the storage device, the read data corresponding to the read commands are continuously transmitted back from the storage device to the host. During the process of continuously transmitting the 32 read data from the storage device to the host, the frame transmission requests from the host are almost postponed. Consequently, after the 32 read data are completely transmitted from the storage device to the host and no read commands are ready to be executed by the storage device, the frame transmission request can be successfully issued from the host and the new read command can be successfully transmitted to the storage device.
- From the above discussions, if there are no read commands to be executed by the storage device at any time, the reading performance of the storage device will be deteriorated. The transmission of the read command is presented herein for purpose of illustration and description only. It is noted that the same situations may be applied to the transmission of the write command and the write data.
- For increasing the accessing performance of the storage device according to the SATA specification, it is suitable to continuously provide the read commands to be executed by the storage device.
- An embodiment of the present invention provides a data transmission control method for a storage device. The storage device is in communication with a host through a SATA bus. The data transmission control method includes the following steps. Firstly, a X_RDY primitive is issued from the storage device to the host. After a R_RDY primitive from the host is received by the storage device, a first frame is transmitted to the host. After the first frame is completely transmitted and in a specified time period before a second frame is transmitted, plural SYNC primitives are issued from the storage device to the host. If the host does not issue the X_RDY primitive in the specified time period, the second frame is transmitted to the host.
- Another embodiment of the present invention provides a storage device. The storage device is in communication with a host through a SATA bus. The storage device includes a controlling unit, a flash memory, and a cache memory. The controlling unit is used for receiving plural read commands from the host and correspondingly transmitting plural read data to the host. The controlling unit implements plural frame transmission procedures to transmit the plural read data to the host. The flash memory is connected with the controlling unit. The cache memory is connected with the controlling unit. After a first frame transmission procedure is completed by the controlling unit and before a second frame transmission procedure is started by the controlling unit, the controlling unit waits for a specified time period. If a frame transmission request corresponding to a third frame transmission procedure is not issued from the host to the controlling unit in the specified time period, the second frame transmission procedure is implemented by the controlling unit after the specified time period.
- Numerous objects, features and advantages of the present invention will be readily apparent upon a reading of the following detailed description of embodiments of the present invention when taken in conjunction with the accompanying drawings. However, the drawings employed herein are for the purpose of descriptions and should not be regarded as limiting.
- The above objects and advantages of the present invention will become more readily apparent to those ordinarily skilled in the art after reviewing the following detailed description and accompanying drawings, in which:
-
FIG. 1 is a schematic functional block diagram illustrating the connection between a solid state drive and a host according to an embodiment of the present invention; -
FIG. 2 is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to the SATA specification; -
FIG. 3 is another schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to the SATA specification; -
FIG. 4 is a flowchart illustrating a data transmission control method for a solid state drive according to an embodiment of the present invention; -
FIG. 5A is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to an embodiment of the present invention; and -
FIG. 5B is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to another embodiment of the present invention. - The present invention provides a storage device using a SATA bus to connect with a host. The present invention also provides a data transmission control method for the storage device. Hereinafter, the storage device is illustrated by referring to a solid state drive. It is noted that the storage device is not restricted to the solid state drive. For example, in some other embodiments, the storage device is a hard disc drive.
-
FIG. 1 is a schematic functional block diagram illustrating the connection between a solid state drive and a host according to an embodiment of the present invention. In this embodiment, both of thehost 112 and thesolid state drive 110 comply with the SATA 3.0 specification. Moreover, thesolid state drive 110 is a storage device that supports native command queuing (NCQ), and thehost 112 also supports native command queuing (NCQ). - As shown in
FIG. 1 , thehost 112 is in communication with a controllingunit 101 of thesolid state drive 110 through aSATA bus 120. Consequently, commands, write data or read data can be exchanged between thehost 112 and thesolid state drive 110. - Moreover, the
solid state drive 110 further comprises acache memory 103 and aflash memory 105. The controllingunit 101 is connected with theflash memory 105 and thecache memory 103. - The
cache memory 103 is connected with the controllingunit 101 for temporarily storing the write data from thehost 112 or temporarily storing the read data requested by thehost 112. - For example, in case that the
host 112 issues the write command, the corresponding write data is temporarily stored into thecache memory 103 by the controllingunit 101, and then the write data is transferred from thecache memory 103 to theflash memory 105. Whereas, in case that thehost 112 issues the read command, the read data is retrieved from theflash memory 105 and temporarily stored into thecache memory 103 by the controllingunit 101, and then the read data is transmitted from thecache memory 103 to thehost 112. -
FIG. 2 is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to the SATA specification. As shown inFIG. 2 , plural frames are transmitted from thesolid state drive 110 to thehost 112. The primitives are also referred as original commands. - Before the time point T0, no frame transmission between the
host 112 and thesolid state drive 110 is implemented. Consequently, thehost 112 and thesolid state drive 110 issue SYNC primitives to each other to notify the other side that no frame transmission is being implemented. Moreover, if the SYNC primitive cannot be received by thehost 112 and thesolid state drive 110, it is assured that thehost 112 and thesolid state drive 110 is no longer in communication with each other through theSATA bus 120. - At the time point T1, the
solid state drive 110 intends to transmit a data (e.g. a read data) to thehost 112. Consequently, the solid state drive 110 issues a X_RDY primitive to notify thehost 112 that the frame transmission is ready. - At the time point T2, the
host 112 issues a R_RDY primitive to respond to thesolid state drive 110 that thehost 112 is ready to receive the frame. - According to the R_RDY primitive from the
host 112, the solid state drive 110 issues a SOF primitive at the time point T3 to notify thehost 112 that the frame transmission is started. - The interval from the time point T3 to the time point T5 indicates a complete frame transmission procedure of the
solid state drive 110. After the solid state drive 110 issues the SOF primitive, thesolid state drive 110 transmits a data (DATA) or issues a HOLD primitive to stop the frame transmission according to the practical conditions. Thehost 112 continuously issues a R_IP primitive to notify thesolid state drive 110 that thehost 112 is receiving and processing the data from thesolid state drive 110. After the data from thesolid state drive 110 is completely outputted and a cyclic redundancy check (CRC) value is issued, the solid state drive 110 issues an EOF primitive at the time point T4 to notify thehost 112 that the frame transmission is ended. - After the frame transmission of the
solid state drive 110 is ended, thesolid state drive 110 waits for the frame reception of thehost 112 in the interval from the time point T4 to the time point T5. While thehost 112 is processing the frame, thehost 112 continuously issues the R_IP primitive. While thesolid state drive 110 waits for thehost 112 to process the frame, the solid state drive 110 issues a WTRM primitive to wait for the frame termination of thehost 112. At the time point T5, thehost 112 issues a R_OK primitive to notify thesolid state drive 110 that the frame reception has no error. That is, at the time point T5, both of thehost 112 and thesolid state drive 110 confirm that the frame transmission procedure is successfully completed. - At the time point T6, the solid state drive 110 issues the X_RDY primitive again to notify the
host 112 that the next frame transmission is ready. Meanwhile, thehost 112 issues the SYNC primitive to notify thesolid state drive 110 that no frame transmission is being implemented. Consequently, at the time point T7, thehost 112 issues a R_RDY primitive to respond to thesolid state drive 110 that thehost 112 is ready to receive the next frame. The interval from the time point T8 to the time point T10 indicates another complete frame transmission procedure of thesolid state drive 110. The frame transmission procedure from the time point T8 to the time point T10 is similar to the frame transmission procedure from the time point T3 to the time point T5, and is not redundantly described herein. -
FIG. 3 is another schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to the SATA specification. As shown inFIG. 3 , plural frames are transmitted from thesolid state drive 110 to thehost 112, and plural data are intended to be transmitted from thehost 112 to thesolid state drive 110. - Before the time point T0, no frame transmission between the
host 112 and thesolid state drive 110 is implemented. Consequently, thehost 112 and thesolid state drive 110 issue SYNC primitives to each other. - In the interval from the time point T1 to the time point T3, the
solid state drive 110 intends to transmit a data (e.g. a read data) to thehost 112. That is, at the time point T1, the solid state drive 110 issues a X_RDY primitive to notify thehost 112. At the time point T2, thehost 112 issues a R_RDY primitive to respond to thesolid state drive 110. At the time point T3, the solid state drive 110 issues a SOF primitive to notify thehost 112 that the frame transmission is started. - The interval from the time point T3 to the time point T5 indicates a complete frame transmission procedure of the
solid state drive 110. The frame transmission procedure from the time point T3 to the time point T5 is not redundantly described herein. At the time point T5, both of thehost 112 and thesolid state drive 110 confirm that the frame transmission procedure is successfully completed. - At the time point T6, the
host 112 issues the X_RDY primitive to notify thesolid state drive 110 that the frame transmission is ready. At the same time, thesolid state drive 110 also issues the X_RDY primitive again to notify thehost 112 that the frame transmission is ready. - As previously described, the
host 112 has to postpone the frame transmission according to the SATA 3.0 specification. Consequently, the frame transmission of thehost 112 will be postponed, which is indicated as the dotted line. However, the frame transmission of thesolid state drive 110 is continuously performed. Consequently, at the time point T7, thehost 112 issues a R_RDY primitive to respond to thesolid state drive 110 that thehost 112 is ready to receive the next frame. - The interval from the time point T8 to the time point T10 indicates another complete frame transmission procedure of the
solid state drive 110. That is, at the time point T10, thehost 112 and thesolid state drive 110 confirms again that the frame transmission procedure is successfully completed. - At the time point T11, the
host 112 issues the X_RDY primitive to notify thesolid state drive 110 that the frame transmission is ready. At the same time, thesolid state drive 110 also issues the X_RDY primitive again to notify thehost 112 that the frame transmission is ready. Similarly, the frame transmission of thehost 112 is postponed. Under this circumstance, thehost 112 is only able to receive the frame from thesolid state drive 110. - From the above discussions of
FIG. 3 , if the read data is continuously transmitted back from thesolid state drive 110 to thehost 112, the frame transmission of thehost 112 is postponed. In other words, after all of the read data are completely transmitted from thesolid state drive 110 to thehost 112 and no read commands are ready to be executed bysolid state drive 110, the frame transmission request can be successfully issued by thehost 112 and the new read command can be successfully transmitted to thesolid state drive 110. In other words, the accessing performance of thesolid state drive 110 is still unsatisfied. -
FIG. 4 is a flowchart illustrating a data transmission control method for a solid state drive according to an embodiment of the present invention. The data transmission control method is implemented by the controllingunit 101. - After the
solid state drive 110 is enabled and plural read data are intended to be transmitted back to thehost 112, the solid state drive 110 issues a X_RDY primitive to the host 112 (Step S401). If a R_RDY primitive from thehost 112 is not received by the solid state drive 110 (Step S403), thesolid state drive 110 continuously waits for the R_RDY primitive from thehost 112. Of course, thesolid state drive 110 may issue the X_RDY primitive to thehost 112 again. - If the R_RDY primitive from the
host 112 is received by the solid state drive 110 (Step S403), thesolid state drive 110 transmits a frame to the host 112 (Step S405). - After the frame transmission is completed, the
solid state drive 110 judges whether a next frame transmission is implemented (Step S407). If the next frame transmission is not implemented by thesolid state drive 110, the flowchart is ended. - Whereas, if the
solid state drive 110 intends to implement the next frame transmission, the solid state drive 110 issues a SYNC primitive to thehost 112 in a specified time period (Step S411). Then, the step S401 of issuing the X_RDY primitive to thehost 112 is repeatedly executed. - In this embodiment, after one frame transmission is completed by the
solid state drive 110 and in the specified time period before the next frame transmission is implemented, thesolid state drive 110 may issue plural SYNC primitives to thehost 112. - Since the solid state drive 110 issues the plural SYNC primitives in the specified time period, if the
host 112 intends to implement one frame transmission, thehost 112 may issue the X_RDY primitive to thesolid state drive 110 in the specified time period. After the solid state drive 110 issues the R_RDY primitive to respond to thehost 112, the frame from thehost 112 may be received by thesolid state drive 110. Under this circumstance, the next frame transmission of thesolid state drive 110 is not implemented. - On the other hand, if the
host 112 does not intend to implement the frame transmission, thehost 112 also issues the plural SYNC primitives to thesolid state drive 110 in the specified time period. After the specified time period, thesolid state drive 110 may issue the X_RDY primitive to thehost 112 again, and the next frame transmission may be started. -
FIG. 5A is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to an embodiment of the present invention. As shown inFIG. 5A , plural frames are transmitted from thesolid state drive 110 to thehost 112, and plural data are transmitted from thehost 112 to thesolid state drive 110. - Before the time point T0, no frame transmission between the
host 112 and thesolid state drive 110 is implemented. Consequently, thehost 112 and thesolid state drive 110 issue SYNC primitives to each other. - In the interval from the time point T1 to the time point T3, the
solid state drive 110 intends to transmit a data (e.g. a read data) to thehost 112. That is, at the time point T1, the solid state drive 110 issues a X_RDY primitive to notify thehost 112. At the time point T2, thehost 112 issues a R_RDY primitive to respond to thesolid state drive 110. At the time point T3, the solid state drive 110 issues a SOF primitive to notify thehost 112 that the frame transmission is started. - The interval from the time point T3 to the time point T5 indicates a complete frame transmission procedure of the
solid state drive 110. The frame transmission procedure from the time point T3 to the time point T5 is not redundantly described herein. At the time point T5, both of thehost 112 and thesolid state drive 110 confirm that the frame transmission procedure is successfully completed. - In this embodiment, the interval from the time point T5 to the time point T6 indicates the specified time period. That is, in the interval from the time point T5 to the time point T6, the solid state drive 110 issues the SYNC primitive to the
host 112. At the time point T6, thehost 112 issues the X_RDY primitive to thesolid state drive 110 to notify thesolid state drive 110 that the frame transmission is ready. - At the time point T7, the solid state drive 110 issues the R_RDY primitive to respond to the
host 112. Consequently, the interval from the time point T8 to the time point T10 indicates a complete frame transmission procedure of thehost 112. At the time point T10, both of thehost 112 and thesolid state drive 110 confirm that the frame transmission procedure is successfully completed. - Obviously, in the specified time period from the time point T5 to the time point T6, the solid state drive 110 issues the SYNC primitive to the
host 112. Consequently, thehost 112 may issue the X_RDY primitive in the specified time period, the frame transmission of thehost 112 may be successfully implemented in the interval from the time point T8 to the time point T10. That is, in the interval from the time point T8 to the time point T10, thesolid state drive 110 is only able to receive the frame from thehost 112, but the frame transmission of thesolid state drive 110 cannot be implemented. - After the time point T10, the
solid state drive 110 intends to implement the next frame transmission. At the time point T11, the solid state drive 110 issues the X_RDY primitive to thehost 112. Consequently, the frame transmission of thesolid state drive 110 is implemented again. -
FIG. 5B is a schematic sequence diagram illustrating the transmission of the primitives of the link layers between the host and the solid state drive according to another embodiment of the present invention. As shown inFIG. 5B , plural frames are transmitted from thesolid state drive 110 to thehost 112, but no data are transmitted from thehost 112 to thesolid state drive 110. - Before the time point T0, no frame transmission between the
host 112 and thesolid state drive 110 is implemented. Consequently, thehost 112 and thesolid state drive 110 issue SYNC primitives to each other. - In the interval from the time point T1 to the time point T3, the
solid state drive 110 intends to transmit a data (e.g. a read data) to thehost 112. That is, at the time point T1, the solid state drive 110 issues a X_RDY primitive to notify thehost 112. At the time point T2, thehost 112 issues a R_RDY primitive to respond to thesolid state drive 110. At the time point T3, the solid state drive 110 issues a SOF primitive to notify thehost 112 that the frame transmission is started. - The interval from the time point T3 to the time point T5 indicates a complete frame transmission procedure of the
solid state drive 110. The frame transmission procedure from the time point T3 to the time point T5 is not redundantly described herein. At the time point T5, both of thehost 112 and thesolid state drive 110 confirm that the frame transmission procedure is successfully completed. - In this embodiment, the interval from the time point T5 to the time point T6 indicates the specified time period. That is, in the interval from the time point T5 to the time point T6, the solid state drive 110 issues the SYNC primitive to the
host 112. Since thehost 112 does not intend to transmit the data to thesolid state drive 110, thehost 112 also issues the SYNC primitive to thesolid state drive 110 in the interval from the time point T5 to the time point T6. - Since the
solid state drive 110 still intends to transmit a data to thehost 112, the solid state drive 110 issues the X_RDY primitive to thehost 112 at the time point T7. At the time point T8, thehost 112 issues the R_RDY primitive to respond to thesolid state drive 110. - The interval from the time point T9 to the time point T11 indicates another complete frame transmission procedure of the
solid state drive 110. The frame transmission procedure from the time point T9 to the time point T11 is not redundantly described herein. At the time point T11, both of thehost 112 and thesolid state drive 110 confirm that the frame transmission procedure is successfully completed. - The interval from the time point T11 to the time point T12 indicates another specified time period. In the interval from the time point T11 to the time point T12, the
solid state drive 110 waits for the frame transmission of thehost 112. After the time point T12, thesolid state drive 110 confirms that no frame transmission of thehost 112 is implemented. Consequently, the solid state drive 110 issues the X_RDY primitive to implement the next frame transmission. - From the above descriptions, the present invention provides a data transmission control method for a solid state drive. After one frame transmission is completed by the
solid state drive 110 and in a specified time period before the next frame transmission is implemented, the solid state drive 110 issues plural SYNC primitives to thehost 112. Under this circumstance, since thehost 112 has sufficient time to issue the X_RDY primitive, thehost 112 has the opportunity to implement the frame transmission. Consequently, the accessing performance of thesolid state drive 110 is largely enhanced. - In the above embodiments, the specified time period may be determined according to the computing speed of the
host 112. Generally, the specified time period is about 100 ns˜1000 ns. The specified time period may be a fixed time period. Alternatively, the specified time period is dynamically adjusted to be increased or decreased according to the difference between thehost 112 and thesolid state drive 110 in order to achieve the optimal performance. The difference may be the transmitting speed difference or the computing speed difference between thehost 112 and thesolid state drive 110. Moreover, the specified time period is adjustable according to the settings of the controllingunit 101. - While the invention has been described in terms of what is presently considered to be the most practical and preferred embodiments, it is to be understood that the invention needs not be limited to the disclosed embodiment. On the contrary, it is intended to cover various modifications and similar arrangements included within the spirit and scope of the appended claims which are to be accorded with the broadest interpretation so as to encompass all such modifications and similar structures.
Claims (9)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310746726 | 2013-12-30 | ||
CN201310746726.5A CN104750622B (en) | 2013-12-30 | 2013-12-30 | Storage device and its data transmission control method |
CN201310746726.5 | 2013-12-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
US9063660B1 US9063660B1 (en) | 2015-06-23 |
US20150186052A1 true US20150186052A1 (en) | 2015-07-02 |
Family
ID=53397111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/225,773 Active US9063660B1 (en) | 2013-12-30 | 2014-03-26 | Storage device and data transmission control method thereof |
Country Status (2)
Country | Link |
---|---|
US (1) | US9063660B1 (en) |
CN (1) | CN104750622B (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050210318A1 (en) * | 2004-03-22 | 2005-09-22 | Dell Products L.P. | System and method for drive recovery following a drive failure |
US20060095596A1 (en) * | 2004-11-03 | 2006-05-04 | Yung Lin C | Solution for consumer electronics control |
US7827320B1 (en) * | 2008-03-28 | 2010-11-02 | Western Digital Technologies, Inc. | Serial ATA device implementing intra-command processing by detecting XRDY primitive while in the XRDY state |
-
2013
- 2013-12-30 CN CN201310746726.5A patent/CN104750622B/en active Active
-
2014
- 2014-03-26 US US14/225,773 patent/US9063660B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050210318A1 (en) * | 2004-03-22 | 2005-09-22 | Dell Products L.P. | System and method for drive recovery following a drive failure |
US20060095596A1 (en) * | 2004-11-03 | 2006-05-04 | Yung Lin C | Solution for consumer electronics control |
US7827320B1 (en) * | 2008-03-28 | 2010-11-02 | Western Digital Technologies, Inc. | Serial ATA device implementing intra-command processing by detecting XRDY primitive while in the XRDY state |
Also Published As
Publication number | Publication date |
---|---|
CN104750622A (en) | 2015-07-01 |
CN104750622B (en) | 2018-02-02 |
US9063660B1 (en) | 2015-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8631188B1 (en) | Data storage device overlapping host data transfer for a write command with inter-command delay | |
US6839706B2 (en) | Block data storage within a computer network | |
EP3147792A1 (en) | Method for accessing nvme storage device, and nvme storage device | |
US9213500B2 (en) | Data processing method and device | |
US7454667B2 (en) | Techniques to provide information validation and transfer | |
AU2002322624A1 (en) | Block data storage within a computer network | |
EP2840576A1 (en) | Hard disk and data processing method | |
WO2006036572A2 (en) | A method and apparatus for using advanced host controller interface to transfer data | |
US9009444B1 (en) | System and method for LUN control management | |
US8601182B2 (en) | Data communication control device | |
US20210132858A1 (en) | Quality of Service (QOS) System and Method for Non-Volatile Memory Express Devices | |
US10671141B2 (en) | Storage device and method of controlling link state thereof | |
KR101196878B1 (en) | Hybrid raid controller | |
US8554976B2 (en) | Single pipe non-blocking architecture | |
US8891523B2 (en) | Multi-processor apparatus using dedicated buffers for multicast communications | |
US20100115152A1 (en) | Sending large command descriptor block (CDB) Structures in serial attached SCSI(SAS) controller | |
US6944733B2 (en) | Data storage using wireless communication | |
US9063660B1 (en) | Storage device and data transmission control method thereof | |
US10776033B2 (en) | Repurposable buffers for target port processing of a data transfer | |
EP2220820B1 (en) | Usage of persistent information unit pacing protocol in fibre channel communications | |
JP5715231B2 (en) | Interface conversion apparatus and interface conversion method | |
US20150242160A1 (en) | Memory system, control method of memory system, and controller | |
US20210294758A1 (en) | Systems and methods for queuing device management configuration requests | |
US20150301764A1 (en) | Hard Disk and Methods for Forwarding and Acquiring Data by Hard Disk | |
US8547985B2 (en) | Network interface controller capable of sharing buffers and buffer sharing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LITE-ON IT CORPORATION, TAIWAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LEE, YI-CHUNG;CHEN, YI-JEN;SIGNING DATES FROM 20140210 TO 20140211;REEL/FRAME:032528/0436 |
|
AS | Assignment |
Owner name: LITE-ON TECHNOLOGY CORPORATION, TAIWAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LITE-ON IT CORP.;REEL/FRAME:032892/0554 Effective date: 20140512 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: SOLID STATE STORAGE TECHNOLOGY CORPORATION, TAIWAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LITE-ON TECHNOLOGY CORPORATION;REEL/FRAME:051213/0875 Effective date: 20191204 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |