Cloud native EDA tools & pre-optimized hardware platforms
By Scott Knowlton, Sr. Staff Product Marketing Manager, Synopsys
SATA is the serial interface used in most of the disk drives in today’s PCs, laptops, set-top boxes and other digital home and digital office products. The SATA interface is widely accepted and adopted due to its high reliability and comparatively low cost--terabytes of hard disk storage can be purchased for less than $200. The low cost per megabyte of storage is perfect for the digital pictures, videos, movies and TV shows that consumers generate and store on their computers, mobile devices, and DVRs.
The SATA interface replaced the ATA parallel interface on disk drives to improve performance. The move from parallel data to serial data substantially increases data rates and performance; however, the serial interface uses a point-to-point connection. This point-to-point connection is between the SATA Host, which controls all of the disk drives in a system, and each of the SATA drives that are connected to it. Figure 1 shows an example of a host bus adapter (HBA) with a chip that contains a SATA Host:
Figure 1: Point-to-point connectivity—one drive per port
The host bus adapter in our example has four disk drives, which requires the SATA Host to provide at least four ports due to the point-to-point connectivity. Fewer than four drives can be connected to this Host, but the maximum number of drives that can be connected to the Host is four. What if the chip in the system that contains the SATA Host provides only one Host port? How would additional SATA drives be added to this system since the Host can connect only to one SATA drive? The answer lies in using a port multiplier. A SATA port multiplier changes the point-to-point relationship between the SATA Host and the disk drive by providing functionality for multiple drives to be connected to a single Host port, as shown in Figure 2.
Figure 2: SATA port multiplier connectivity—one port, multiple drives
A port multiplier offers the ability to cost-effectively increase the number of drives connected to a single SATA Host port. Without the availability of a port multiplier, a DVR that needs additional ports would have required a costly and time-consuming redesign and re-spin of the chip which contains the SATA Host to add more ports. By using a port multiplier, the SATA port can connect to multiple drives without changing the design.
A port multiplier enables up to 15 drives or devices to connect to each SATA Host port. Unfortunately, the bandwidth available to all of the drives is limited to the shared bandwidth of the SATA Host port at 1.5 Gbps, 3.0 Gbps or 6.0 Gbps. Even with the use of a port multiplier, each drive acts as if it is communicating directly to the Host, but the Host is aware that multiple drives are connected and must maintain the context for all of the drives. With each of the drives competing for the bandwidth and the Host context switching between the drives, it is critical to maximize the available bandwidth between the Host and the port multiplier. This is accomplished through the way the SATA Host “talks” to the port multiplier: command-based switching (CBS) or FIS (Frame Information Structure)-based switching (FBS) as shown in Figure 3.
Figure 3: Maximize bandwidth using CBS or FBS
The default communication method between the SATA Host and the port multiplier is CBS. CBS allows switching between devices at command boundaries and cannot issue commands to another disk until the command queue is completed for the current transactions. This is not a very efficient or balanced approach when multiple devices are connected to a port multiplier, and usually results in less than the full bandwidth of the link being used. It is also possible that a single device with a large data transfer could dominate the Host port for a long period of time, essentially “locking out” the other devices. Command-based switching requires fewer ASIC gates to implement and uses less power, so it is ideal if increasing storage capacity is more important than improving performance.
SATA FIS-based switching is an optional mode/feature used to communicate between a SATA Host and a port multiplier. FBS is a more efficient, performance-oriented technique for processing commands between the SATA Host and the port multiplier. FBS allows the Host controller to issue multiple commands that send and receive data simultaneously from any drive. The efficiency comes from interleaving the commands across the multiple devices connected to a port multiplier on the FIS boundaries instead of the command boundaries and uses an arbitration algorithm to ensure a balanced data flow. In addition, FBS allows aggregation of the reads, which results in throughput close to the total available bandwidth of link between the Host and port multiplier, giving better performance than when using CBS.
Port multipliers provide a simple, cost-effective way to add additional storage to an existing SATA Host. When using a port multiplier to add the drives, the user needs to decide between using command-based switching or FIS-based switching. This decision to use CBS or FBS is based on the need to increase storage capacity versus increasing performance.
Figure 4: Synopsys SATA AHCI Host Controller IP supports up to 120 SATA devices
The Synopsys SATA AHCI Host Controller IP from Synopsys supports both command-based switching and FIS-based switching to support the user’s SATA design requirements. The DesignWare SATA Host IP can support up to 8 ports and with each port multiplier servicing up to 15 separate devices, the DesignWare Host can support up to 120 SATA devices.