Virtual SATA port multiplier, virtual SATA device, SATA system and data transfer method in a SATA system

A virtual SATA port multiplier and a virtual SATA device are provided for a SATA system. The virtual SATA port multiplier uses a SATA physical layer for data transfer between it and a SATA host, and a non-physical layer for direct data transfer between it and the virtual SATA device. Since the data transfer between the virtual SATA port multiplier and the virtual SATA device is not carried out by way of SATA physical layers, no physical layer circuits are required accordingly, thereby reducing the manufacturing cost, power consumption and hardware size of the SATA system.

FIELD OF THE INVENTION

The present invention is related generally to the Serial Advanced Technology Attachment (SATA) data link interface and, more particularly, to the data transfer without through SATA physical layers in a SATA system.

BACKGROUND OF THE INVENTION

The SATA international organization defines a SATA data link interface which includes, from the bottom to the top in the communication architecture, a physical layer, a link layer, a transport layer, a command layer and an application layer. Sometimes the command layer and the application layer are combined into a single layer, known as a command and application layer or a command/application layer, or simply an application layer. The application layer is responsible for overall ATA command execution, including controlling Command Block Register accesses. The transport layer is responsible for placing control information and data to be transferred between a host and a device in a packet/frame, known as a Frame Information Structure (FIS). The link layer is responsible for taking data from the constructed frames, encoding or decoding each byte using 8b/10b, and inserting control characters such that the 10-bit stream of data may be decoded correctly. The physical layer is responsible for transmitting and receiving the encoded information as a serial data stream on the wire. For more details, readers are referred to “Serial ATA Specification, Rev. 2.5” and “AT Attachment with Packet Interface-6 (ATA/ATAPI-6)”.

FIG. 1illustrates the data transfer scheme in a SATA system which includes a SATA device to be accessed by a SATA host through a SATA port multiplier. After the SATA host gives a standard ATA command, data is transferred from the command and application layer100to the SATA port multiplier first, through the transport layer102, the link layer104and the physical layer106. The physical layer106of the SATA host transfers the data to the physical layer112of the SATA port multiplier by a SATA physical layer signal, and in the SATA port multiplier the data is further transferred from the physical layer112up to the transport layer108through the link layer110. As is well known, a SATA host is capable of accessing to up to fifteen SATA devices via a SATA port multiplier, and for which the transport layer of the SATA port multiplier will read the PM port field in the FIS in order to determine the target SATA device to receive the data. After determines the target SATA device, the transport layer108of the SATA port multiplier further transfers the data through the link layer110to the physical layer112, and the physical layer112transfers the data to the physical layer120of the SATA device by a physical layer signal. Then, in the SATA device, the data is further transferred to the command and application layer114through the link layer118and the transport layer116. As shown inFIG. 1, in a SATA system, the SATA port multiplier and the SATA device both are required to have a respective physical layer for data transfer between the SATA host and the SATA port multiplier, and between the SATA port multiplier and the SATA device, by SATA physical layer signals.

FIG. 2shows a standard SATA card reader200plugged to a SATA host202, in which for communications over the SATA architecture, the SATA host202needs a SATA physical layer circuit204, and the SATA port multiplier208of the card reader200also needs a SATA physical layer circuit210, with a SATA interface206therebetween. In the card reader200, for data transfer between the SATA port multiplier208and two SATA devices216and226, the SATA port multiplier208further needs two SATA physical layer circuits212and214, and the SATA devices216and226also need SATA physical layer circuits220and230respectively. When the SATA host202accesses to the SATA device216or226, the data sent out from the SATA physical layer circuit204of the SATA host202is received by the SATA physical layer circuit210of the SATA port multiplier208through the SATA interface206. Then, the SATA port multiplier208determines to transfer the data to the SATA device216or226according to the PM port field in the FIS, and either the SATA physical layer circuit212or214is selected to receive the data depending on which one of the SATA devices216and226is determined to be the target SATA device. In the SATA device216, a SATA controller218is used to receive the data through the SATA physical layer circuit220, and a memory card controller222is used to read from or write to a memory card connected to a memory card connecting interface224according to the output of the SATA controller218. Likewise, in the SATA device226, a SATA controller228is used to receive the data through the SATA physical layer circuit230, and a memory card controller232is used to read from or write to a memory card connected to a memory card connecting interface234according to the output of the SATA controller228. As illustrated inFIG. 1, the SATA port multiplier208and the SATA devices216and226all employ a SATA physical layer to transmit and receive data, and thus, as shown inFIG. 2, all input and output performed by the SATA port multiplier208rely on the SATA physical layer circuits210,212,214,220and230to transmit and receive the data. The card reader200accommodates two memory cards, and therefore three SATA physical layer circuits210,212and214are required in the SATA port multiplier208for transmitting and receiving data, and two SATA physical layer circuits220and230are required in the SATA devices216and226for transmitting and receiving data. As a result, the card reader200has to be equipped with five SATA physical layer circuits210,212,214,220and230. In this manner, for a SATA card reader capable of reading a number n of memory cards, a number 2n+1 of SATA physical layer circuits are required for data transfer.

Therefore, a need exists for a SATA system with reduced SATA physical layer circuits, in order to reduce the manufacturing cost, the power consumption and the hardware size.

SUMMARY OF THE INVENTION

Accordingly, it is an object of the present invention to provide a SATA port multiplier, a SATA device and a SATA system so as to reduce the required SATA physical layer circuits.

It is also an object of the present invention to provide a data transfer method in a SATA system with less SATA physical layer circuits.

According to the present invention, a virtual SATA port multiplier and a virtual SATA device carry out data transfer therebetween without through any SATA physical layers. Preferably, the virtual SATA port multiplier and the virtual SATA device are integrated on a same chip or arranged on a same printed circuit board, and the virtual SATA device does not have a SATA physical layer. The SATA port multiplier still has a SATA physical layer for data transfer between it and a SATA host by a physical layer signal, but carries out data transfer between it and the virtual SATA device by a non-physical layer signal through a SATA non-physical layer over the SATA physical layer. In the virtual SATA port multiplier, a link layer or a transport layer is selected to be the SATA non-physical layer for direct data transfer between the virtual SATA port multiplier and the virtual SATA device. In the virtual SATA device, the SATA non-physical layer for direct data transfer between the virtual SATA device and the virtual SATA port multiplier is a link layer, a transport layer or a command and application layer.

A SATA system according to the present invention communicates with a SATA host as the SATA specification defines. However, in the SATA system, direct data transfer is carried out between a virtual SATA port multiplier and a virtual SATA device by way of SATA non-physical layers, but not SATA physical layers, and hence the required SATA physical layer circuits in the SATA system is reduced, thereby reducing the manufacturing cost, the power consumption and the hardware size.

A data transfer method in a SATA system according to the present invention carries out direct data transfer between a first non-physical layer over a SATA physical layer and a second non-physical layer not over the SATA physical layer by a non-physical layer signal.

DETAIL DESCRIPTION OF THE INVENTION

As to the network technology, some approaches have been provided for removing some particular layers from a multiple-layer software and hardware architecture without influencing data transmission in a system.FIG. 3shows a Linux Ethernet system which includes a standard FTP client connected to a standard FTP server, andFIG. 4shows an alternative communication scheme if the FTP client and the FTP server both are set on a same personal computer. As shown inFIG. 3, the data transmission between a standard FTP client and a standard FTP server is achieved through the TCP layer300, IP layer302, Ethernet driver304and physical Ethernet chip306of the FTP client, and the physical Ethernet chip314, Ethernet driver312, IP layer310and TCP layer308of the FTP server. Yet, if the FTP client and the FTP server are set on a same personal computer, the Ethernet chips306and314as well as the physical Ethernet signals may be cancelled. Instead, a loop back is configured in the Ethernet drivers304and312so as to form loop back Ethernet drivers400and402, as shown inFIG. 4.

The SATA physical layers may not be required between a SATA port multiplier and a SATA device for data transfer therebetween, in particular, when they are integrated on a same chip or arranged on a same printed circuit board.FIG. 5shows a direct data transfer scheme between a SATA port multiplier and a SATA device according to the present invention. In this system, the SATA port multiplier and the SATA device carry out data transfer therebetween without through any SATA physical layers, and for this reason they are called virtual SATA port multiplier and virtual SATA device. For more details, the interfaces for the SATA layers in the virtual SATA port multiplier and the virtual SATA device are also shown inFIG. 5. The virtual SATA port multiplier still has a SATA physical layer514for data transfer between it and a SATA host, and the communications therebetween is the same as the SATA specification defines. After the SATA host gives a standard ATA command, data is transferred from the command and application layer500to the virtual SATA port multiplier through the transport layer502, the link layer504and the SATA physical layer506of the SATA host, and the SATA physical layer506of the SATA host transfers the data to the SATA physical layer514of the virtual SATA port multiplier. In the virtual SATA port multiplier, as for data transfer over a standard SATA architecture, the data received by the SATA physical layer514is transferred up to the transport layer510through the link layer514, and the transport layer510determines to transfer the data to which SATA device according to the PM port field in the FIS. However, after the target SATA device is determined, the data transfer between the virtual SATA port multiplier and the virtual SATA device is accomplished directly by way of a non-physical layer signal. In the virtual SATA port multiplier, one non-physical layer in the upper layers522over the SATA physical layer514is selected for the data transfer between the SATA port multiplier and the virtual SATA device by the non-physical layer signal, and a corresponding non-physical layer in the upper layers524of the virtual SATA device is selected for this data transfer. Therefore, the virtual SATA device needs no SATA physical layer, and in the hardware circuit, no physical layer circuits are required for data transmission and receiving between the virtual SATA port multiplier and the virtual SATA device. To a time-proven reliable SATA device, the improvement for the reduction of manufacturing cost, power consumption and hardware size can be achieved by simply removing the SATA physical layer circuits in the hardware and without any change to the software. Therefore, time and resources consumed by repeated verification can be saved.

As shown inFIG. 6, the link layer512of the virtual SATA port multiplier and the link layer520of the virtual SATA device are selected for direct data transfer between the virtual SATA port multiplier and the virtual SATA device, and the non-physical layer signal for this direct data transfer is the link layer signal. Alternatively, the link layer signal may be sent through the interfaces513and521as indicated by the dotted line, since the interfaces513and521may have the link layer signal or others to be converted into the link layer signal.FIG. 7shows another embodiment, in which the virtual SATA device does not have a physical layer and a link layer, and the non-physical layer signal for direct data transfer between the virtual SATA port multiplier and the virtual SATA device is the transport layer signal that is sent directly between the transport layers510and518, or between the interfaces511and519instead, as the dotted line indicates.FIG. 8provides a further embodiment, in which the non-physical layer signal for direct data transfer between the virtual SATA port multiplier and the virtual SATA device is also the transport layer signal, but is sent from the transport layer510directly or through the interface509to the command and application layer516of the virtual SATA device. If the proven reliable software and hardware are not taken into consideration, the most cost-effective and reasonable way to construct a new SATA device is to make the transport layer510of the virtual SATA port multiplier read the PM port field in the data directly. When the PM port field indicates that the data are to be transferred to the virtual SATA port multiplier, the transport layer510transfers the data to the command and application layer508of the virtual SATA port multiplier. When the PM port field indicates that the data are to be transferred to the virtual SATA device, the transport layer510transfers the data to the command and application layer516of the virtual SATA device. In this embodiment, the virtual SATA port multiplier and the virtual SATA device may use a same processor for dramatically reducing the complexity and cost. It would be understood that the direct data transfer between the virtual SATA port multiplier and the virtual SATA device is not limited to the cases shown inFIGS. 6-8. For instance, the data may be transferred from the transport layer510of the virtual SATA port multiplier to the command and application layer516of the virtual SATA device through the interface517in the virtual SATA device. As illustrated in the above embodiments, the more upper layer in the virtual SATA device is selected for data transfer between the virtual SATA port multiplier and the virtual SATA device, the more portion of the virtual SATA device is saved. For example, the virtual SATA device shown inFIG. 8only needs the command and application layer516. However, even for a standard SATA device which has the full four or five SATA layer structure, the present invention is also applicable, if one SATA non-physical layer in the SATA device is selected for direct data transfer between the SATA device and a virtual SATA port multiplier by a non-physical layer signal. In this case, the SATA device is also a virtual SATA device of the present invention, since it carries out direct data transfer by a non-physical layer signal through a SATA non-physical layer.

Although the data transfer from the SATA host to the virtual SATA device is detail illustrated in the above embodiments, it is obvious that the data transfer from the virtual SATA device to the SATA host can be easily deduced. In other embodiments, the interfaces509,511,513,517,519and521may be integrated in the corresponding SATA layers, i.e., the command and application layers, the transport layers and the link layers.

For further details,FIG. 9provides a card reader600employing a virtual SATA port multiplier608and two virtual SATA devices612and620according to the present invention. In this system, the data sent out from the SATA physical layer circuit604of a SATA host602is received by the SATA physical layer610of the virtual SATA port multiplier608through a SATA interface606, as in a standard SATA system. However, since the virtual SATA port multiplier and the virtual SATA devices612and620directly transfer the data therebetween by non-physical layer signals, the virtual SATA port multiplier608needs no SATA physical layer circuits for data transfer to the virtual SATA devices612and620, and the virtual SATA devices612and620also need no SATA physical layer circuits for data transfer from the virtual SATA port multiplier608. In the virtual SATA device612, a non-physical layer in a virtual SATA controller614is used to receive data directly from a non-physical layer in the virtual SATA port multiplier608, and a memory card controller616is used to read from or write to a memory card connected to a memory card connecting interface618according to the output of the virtual SATA controller614. In the virtual SATA device620, a non-physical layer in a virtual SATA controller622is used to receive data from a non-physical layer in the virtual SATA port multiplier608, and a memory card controller624is used to receive read from or write to a memory card connected to a memory card connecting interface626according to the output of the virtual SATA controller622. After the virtual SATA port multiplier608determines to transfer the data to the virtual SATA device612or620, the data are directly transferred to the non-physical layer of the virtual SATA device612or620from the non-physical layer of the virtual SATA port multiplier608. In this manner, even for a SATA card reader capable of accommodating a number n of memory cards, merely one SATA physical layer circuit610is required for data transfer between the card reader600and the SATA host602. Compared with a conventional card reader requiring 2n+1 physical layer circuits for accommodating n memory cards, the card reader600greatly reduces the SATA physical layer circuits, thereby reducing the manufacturing cost, the power consumption and the hardware size.

The conventional card reader200ofFIG. 2could use the physical layer circuits212,214,220and230to report whether memory cards are inserted into the memory card connecting interfaces224and234. In the card reader600ofFIG. 9, the virtual SATA port multiplier608and the virtual SATA devices612and620can communicate about whether memory cards are inserted by detecting the register values in the memory card connecting interfaces618and626, or by electrically coupling signals628from the memory card connecting interfaces618and626to the virtual SATA port multiplier608. In some other embodiments, the virtual SATA port multiplier608may determine whether memory cards are inserted by detecting the register values in the memory card controllers616and624or the signals from the memory card controllers616and624to the virtual SATA port multiplier608.