Serial ATA in the Microsoft Operating System Environment
This paper provides information about Serial Advanced Technology Attachment (ATA) support for the Microsoft Windows family of operating systems. It provides an overview of Serial ATA and guidelines for OEMs and independent hardware vendors (IHVs) that design systems and devices with Serial ATA support.
Serial Advanced Technology Attachment (ATA) is the newest consumer mass storage interconnect for the ATA command protocol. This paper provides information about Serial ATA and support for Serial ATA in the Microsoft Windows family of operating systems.
This paper is divided into the following three areas:
The first and second sections introduce the concepts of the new Serial ATA technology.
The third and fourth sections explain the level of support Microsoft has for the versions of Serial ATA in Microsoft operating systems and the corresponding "Designed for Windows" logo programs.
The fifth section addresses frequently asked questions, makes observations on industry activity, and makes recommendations for manufacturers of Serial ATA products.
This paper is intended as an introduction to Serial ATA with the Windows operating systems. It assumes an intermediate understanding of storage controllers and hard disk drives and familiarity with introductory driver concepts.
The first important thing to realize about Serial ATA is that it is not a new storage command protocol. As the name implies, Serial ATA is a new serial interconnect for storage devices that use the ATA command protocol. Until now using the ATA command protocol has implied using ATA's parallel interconnect and the wide ribbon cables, which can be found in almost every personal computer today. For the remainder of the document there will be a distinction made between the ATA command protocol and parallel ATA interconnect.
To get an appreciation for the significance of Serial ATA, we need to take a look at the current consumer storage industry. At the heart of the consumer storage industry is the ATA protocol. This is a stable and mature protocol that is now in its seventh revision. The ATA protocol has been extremely popular, is widely implemented, and has evolved over time to address the growing needs of storage in computing.
Although the parallel ATA transfer rate has increased by about a factor of 40 from the time it was first introduced over 20 years ago, it has otherwise remained unchanged. There have been advancements around interconnect technology since then. Serial ATA is a new interconnect that brings consumer storage up to par with some of the latest data transfer technologies.
The main differences between the serial interconnect and the parallel interconnect of ATA are as follows:
Serial ATA is point to point, meaning only one storage device can be connected to a single Serial ATA cable. Parallel ATA has a shared channel and can connect up to two storage devices on a single cable.
Serial ATA is faster. Currently Serial ATA transfers data at a rate of 150 megabytes (MB) per second and will likely advance to 300 MB and 600 MB per second in the near future.
Serial ATA has a thinner cable and a smaller connection that is keyed so they cannot be connected incorrectly, unlike some parallel ATA cables.
The benefits that the Serial ATA interconnect brings to ATA comes from its cable connector, its cabling, and its transfer speed. In the future, there may be new ATA commands that apply only to Serial ATA, but these will be extensions to the ATA command protocol and should not be construed as a Serial ATA command protocol. The next section examines how the new Serial ATA interconnect has taken shape since its introduction.
Serial ATA is defined by multiple specifications. At this time there are Serial ATA specifications that are in the process of being written. This section takes a quick look into the current finished specifications and their purpose, as well as the different flavors of Serial ATA controllers.
The core of Serial ATA is defined by the Serial ATA 1.0 Specification, which was published in August 2001. You can obtain a copy of this specification at http://www.sata-io.org . To make adoption easier for the new interconnect, the Serial ATA 1.0 Specification defines a special mode for Serial ATA controllers so that they emulate the behavior and configuration of the parallel ATA interconnect. In this Emulating Parallel ATA mode, Serial ATA controllers can leverage all the existing parallel ATA drivers and infrastructure of shipped Windows operating systems.
The Serial ATA 1.0 Specification also has new features that are not compatible with all existing parallel ATA drivers. Existing parallel ATA drivers do not comprehend any newly defined features and capabilities for which there are no equivalents in parallel ATA. Therefore, such software will not utilize any such new features. A controller that takes advantage of these new features is said to be operating in Native Serial ATA mode. A Serial ATA controller capable of doing both emulation and native modes cannot switch between Emulating Parallel ATA and Native Serial ATA modes while Windows is running.
Additional new Serial ATA extensions are defined in the Serial ATA II Specification, which was published in October 2002. You can obtain a copy of this specification at http://www.sata-io.org . Serial ATA II is not the next version of Serial ATA, nor is it a mode of Serial ATA like Emulating Parallel ATA and Native Serial ATA. Serial ATA II is a set of optional extensions and features for Serial ATA that are available to Serial ATA controllers and devices that operate in Native Serial ATA mode.
Finally, there are a few miscellaneous specifications that define additional optional new Serial ATA features for controllers that implement Native Serial ATA mode, but are not included in either the Serial ATA 1.0 or Serial ATA II specifications. The new specifications are outside the scope of this document.
Serial ATA 1.0 Features and Details
The Serial ATA 1.0 specification doesn't define new ATA commands; the majority of it focuses on defining the physical interconnect and signaling protocol for communicating over Serial ATA cables. The remainder of the document addresses Emulating Parallel ATA mode and the new features that can be implemented under Native Serial ATA mode.
Emulating Parallel ATA Mode
The Emulating Parallel ATA mode defines a transfer level equivalent of parallel ATA for Serial ATA controllers. In this mode, a Serial ATA controller can emulate master-only (device 0) parallel ATA or shared channel parallel ATA. In master-only parallel ATA emulation, the Serial ATA controller presents itself to the computer as a parallel ATA controller with only a single master storage device attached to a channel. In shared channel parallel ATA emulation, the controller uses two Serial ATA channels, each only attach to a single storage device, as a single parallel channel attaching two storage devices. Both forms of emulation work with Serial ATA controllers that use Windows parallel ATA (atapi.sys) drivers.
Beyond configuration emulation requirements, Emulating Parallel ATA mode restricts the controller from doing Native Serial ATA mode functionality described in the next section. Another notable distinction is that parallel ATA has many transfer modes each with a unique transfer speed associated with it. Serial ATA emulating Parallel ATA mode controllers also must support parallel ATA transfer modes, but its transfer speed is much faster then all parallel ATA transfer modes. While Serial ATA controllers operate at higher transfer speeds it is possible for them to claim to operate in slower parallel ATA transfer modes such as Programmed Input/Output (PIO).
Native Serial ATA Mode
The advanced features that can be utilized in native mode revolve around improvements to the Serial ATA interconnect. The feature that has generated the most interest in this area is hot plugging, which allows an end user to remove a storage device from a Serial ATA controller while a system is running. This is useful for RAID systems and notebook docking stations with built-in storage devices. However, hot plugging should not be attempted with a system's primary boot device.
Another improvement is finer grained power management. In addition to doing power management on Serial ATA storage devices, the Serial ATA controller itself can be managed so that unused parts of the controller can be put into lower power modes to conserve electricity.
Finally there are features for Serial ATA drivers. There are new control, error and status registers that allow the Serial ATA controller to pass information to the driver about Serial ATA specific features. Also the Serial ATA interconnect configures its own transfer rate so that the driver no longer needs to.
SATA II Features and Details
The most significant Native Serial ATA mode feature defined in Serial ATA II is native command queuing, which is optimized for Serial ATA and is much more efficient. The intention of the new queuing method is to improve performance by eliminating handshakes, allowing aggregating of interrupts, and reducing the interface transaction count.
Other optional features try to make Serial ATA more attractive in enterprise storage markets. The Enclosure Services feature allows a Serial ATA controller to communicate status and control commands to the enclosure processor of the storage system. Serial ATA II also defines signal constraints for using Serial ATA as a rack backplane and a mechanism for controlling staggered spin up.
Serial ATA Hardware Register Interface
The Serial ATA specifications do not define a full standard hardware register interface for Serial ATA drivers. Without a standard interface, Serial ATA controller manufacturers are tasked with the redundant work of creating their own proprietary interfaces. The result of this is the possibility of many different Serial ATA interfaces and the inability for Microsoft to create a driver that works commonly over all Serial ATA controllers.
The potential for many unique interfaces could cause the same challenges for Serial ATA that are seen in small computer system interface (SCSI) controllers. Currently one public committee led by Intel, the Advanced Host Controller Interface (AHCI) Contributor Group, is working to create a public specification for a Serial ATA interface. Microsoft is a member of the AHCI Contributor Group, and encourages all Serial ATA controller manufacturers to adopt AHCI.
Naming Conventions for Serial ATA Products
Serial ATA products will continue to be identified by speed and not by feature set or specification compliance. This is the parallel ATA naming convention. Already Serial ATA 1.5 gigabytes (GB) per second is available, and in the future there will also be Serial ATA 3 GB per second, Serial ATA 6 GB per second, and so on.
There is no mandatory distinction made between Serial ATA products that support different Serial ATA and Serial ATA II features. Many people will be tempted to incorrectly associate Serial ATA II with Serial ATA 3.0 GB per second, which hasn't been defined yet. This should not be done.
Also there is no distinction made between Serial ATA products that support either version of Emulating Parallel ATA mode or for Native Serial ATA mode.
Parallel Advanced Technology Attachment (ATA) controllers seen today come in two form factors: as components of chipsets and as discrete controller add-on cards. The great majority of parallel ATA controllers in chipsets can load drivers that are included with Windows while a smaller portion of add-on cards, usually PCI cards, can use drivers that are included with Windows.
Serial ATA controllers have been using and will likely continue to use, the same form factors as parallel ATA controllers. It is possible that many Serial ATA and parallel ATA controllers will be included in the same product to accommodate both Serial ATA and parallel ATA hard disk drives.
Like parallel ATA controllers, Windows support for Serial ATA controllers depends on the Serial ATA features implemented and the hardware register interface used by the controller.
Due to the changing shape of ATA storage in the personal computer and the introduction of new interconnects and hardware register interfaces, a new port/miniport model for drivers will be created for versions of Windows later than Windows Server 2003. This new port driver, named Ataport, will improve flexibility to accommodate the changing needs of the storage industry.
Microsoft's approach to ATA controller support has reflected the needs of the industry. The success of this approach is evident in the number of products supported by the parallel ATA driver that comes with Windows.
The consumer storage industry is growing and changing. It is evident from the number of SCSI miniport drivers on ATA controllers, the new emphasis on consumer RAID, and the momentum behind Serial ATA, that a more flexible driver model is needed to accommodate the industry.
The Ataport driver will have the latest ATA/ATAPI command set support. Additionally, it will be able to support both parallel ATA and Serial ATA configurations that include greater than two channels per controller and greater than two storage devices per channel. Finally, Ataport will provide a flexible miniport driver interface for independent hardware vendors (IHVs) to write miniport drivers for Ataport.
With the product introduction of Ataport, two miniports will be introduced. The first is a default miniport driver that will work with the current atapi.sys supported parallel ATA controllers. The second is a new miniport driver that will support the Advanced Host Controller Interface (AHCI) Serial ATA controllers.
Serial ATA Emulating Parallel ATA Mode Controller Support in the Windows Family of Operating Systems
A Serial ATA Emulating Parallel ATA mode controller can load and use parallel ATA drivers that are supported by Windows. By definition, all versions of Windows previous to Windows Server 2003 have Emulating Parallel ATA mode support.
Not all parallel ATA controllers are supported natively in a Windows distribution so there will be some Serial ATA Emulating Parallel ATA mode controllers that must have their manufacturer's drivers to work properly.
When Ataport is introduced in a future version of Windows, Microsoft plans to ship with a default miniport driver that will replace the current Windows ATA driver stack functionality and support all the same set of parallel ATA and Serial ATA Emulating Parallel ATA controllers supported today.
Native Serial ATA Mode Controller Support in Future Versions of Windows
Because Native Serial ATA mode controllers do not appear or act like parallel ATA controllers, they cannot use the Windows parallel ATA controller drivers, and thus, Windows Server 2003 and previous do not ship with drivers that support Native Serial ATA mode controllers.
Native Serial ATA mode controllers can be made to work with all existing versions of Windows as long as the controllers come with the appropriate drivers. With these drivers, Windows can be installed on and booted from Serial ATA storage devices in the same way many parallel ATA add-on controllers do currently.
When Ataport is introduced in a future version of Windows, Microsoft plans to ship a miniport driver for Ataport that will support AHCI Serial ATA controllers.
For a Serial ATA product to receive the "Designed for Windows" logo, a Serial ATA controller must pass the program for the Serial ATA mode it implements, Emulating Parallel ATA mode or Native Serial ATA mode. Products that implement both feature sets must pass both programs. Additionally there is a program for Serial ATA storage devices. There is no concept of emulation for a Serial ATA storage device.
Emulating Parallel ATA Mode Controller Program
The Windows Hardware Quality Labs (WHQL) group is already accepting Emulating Parallel ATA mode controller submissions for the "Designed for Windows" Logo Program. To qualify for the Emulating Parallel ATA mode program, a Serial ATA product must not implement any of the following:
Serial ATA native command queuing
Serial ATA power management
Port multiplier support
Port selector support
Enclosure management services
Serial ATA host adapter register interface
The purpose of this section is to outline some developing issues and opportunities around Serial ATA as a technology and as an industry.
Identifying Emulating Parallel ATA Mode and Native Serial ATA Mode Controllers
Driver support for Emulating Parallel ATA mode and Native Serial ATA mode controllers is separate and distinct as these modes appear as two different and unique ATA interconnects. There will be some Serial ATA controllers that will want to implement both Emulating Parallel ATA and Native Serial ATA modes on the same device, which is acceptable. It is not acceptable to use both modes at the same time in Windows. Additionally, loading parallel ATA drivers on a Serial ATA controller in Native Serial ATA mode and vice versa will have disastrous results.
The solution to identifying the Serial ATA mode problem is using the correct PCI Sub-Class code. Appendix D of the latest PCI specification lists all the Sub-Class codes for Base Class 01h, mass storage controllers. Sub-Class code 01h, IDE controller, should be used by Emulating Parallel ATA mode controllers. A new Sub-Class code 06h, Serial ATA controller, should be used by Native Serial ATA mode controllers.
Sub-Class codes should not be changed while Windows is running. Serial ATA controllers that wish to support both modes should provide a method during the system boot process, preferably in the BIOS, to allow a user to select Emulating Parallel ATA or Native Serial ATA modes.
Multiple Controllers in a System
Serial ATA will not instantly replace parallel ATA. For some time both types of controllers will exist on the same system at the same time. These coexisting controllers can be built into a system in one of two ways, both in the same chipset, or a Serial ATA controller added to a system with parallel ATA in the chipset. If both controllers are on the same chipset, it is imperative that they are created as separate PCI functions so that Windows interprets these devices as two separate controllers.
Another possible complication around multiple controllers comes from resource conflicts. Traditionally, parallel ATA controllers have operated as if on a legacy Industry Standard Architecture (ISA) bus, even when on a PCI bus. The PCI specification defines a mode that allows ATA controllers on PCI to use a predefined pair of interrupts and memory locations. Multiple ATA controllers in this PCI as ISA mode cause resource conflicts as both controllers try to use the same interrupts and memory locations.
Fortunately, ATA controllers can also operate in PCI Native mode. This allows the controller to be assigned an interrupt and memory range dynamically. The presence of multiple ATA controllers in a system implies that at least one of the controllers is using PCI Native mode to avoid resource conflicts.
The terminology around Native Serial ATA mode and PCI Native mode has caused confusion in the past. It is possible to have an Emulating Parallel ATA mode controller operate in PCI Native mode. Additionally, PCI Native mode doesn't imply Native Serial ATA mode support. For more information on PCI Native mode for ATA controllers go to http://msdn.microsoft.com/en-us/windows/hardware/gg463530.aspx.
Ultimately the ability to boot from a Serial ATA controller is dependent upon the abilities of the Serial ATA controller and BIOS. Windows has no limitations for booting from Serial ATA storage devices outside of driver availability. The caveats that apply here are the same for parallel ATA controllers.
For more details, see "The Different Modes of Serial ATA" and "Support for Serial ATA in Windows" sections earlier in this paper. Also, check with the controller manufacturer for details on boot support.
Note: Booting from a Native Serial ATA mode controller has been referred to as "true booting" in the past.
The Serial ATA cabling is thin and flexible and resembles USB or FireWire connectors and cabling. Additionally, Serial ATA storage devices can be hot-plugged just like USB and FireWire devices. Understandably, there is speculation that Serial ATA will also someday be used as an external connection like USB and FireWire.
Serial ATA must overcome two challenges before external Serial ATA connectors become external connectors; first, there is competition with other external buses, and second is the resiliency of the Serial ATA cables and connectors.
Both USB and FireWire are general purpose buses to which many types of devices attach. Serial ATA only connects to storage devices that are not used commonly as external devices as USB or FireWire devices are. If it is unlikely that a user will use a Serial ATA external port, it becomes an unnecessary expense.
The resiliency concerns come from the Serial ATA cables and connectors, which were not originally designed as external cables like USB and FireWire. It is unclear how well the cables will hold up outside of a protected enclosure. Additionally, it is unclear how well a Serial ATA connector will hold up to daily attaching and detaching. Finally, it is unknown how external electronics will affect the signal integrity of the Serial ATA cable.
The Serial ATA hot plug feature is implemented by the host controller, driver software, and storage device. On the personal computer, support for Serial ATA hot plugging can be implemented in the following two places:
In the Serial ATA controller driver. Since parallel ATA controllers do not support hot plugging and Serial ATA Emulating Parallel ATA mode controllers are likely to use parallel ATA controller drivers, Emulating Parallel ATA mode controllers must find another way to support the hot plug feature. The atapi.sys driver in Windows does not support hot plugging; however, it's likely that Native Serial ATA mode drivers will.
In the system firmware outside of Windows. Support from ACPI, BIOS, or a combination of the two can be used to trigger bus re-enumerations during a hot plug event. Check with the controller manufacturer for details on support for hot plugging.
The ATA command set support in a driver limits the addressable hard disk drive capacity. Because both Serial ATA and parallel ATA connections use the ATA commands, both Serial ATA and parallel ATA have the same capacity limitations.
Drivers that use the 28-bit logical block addressing (LBA) ATA commands are limited to 137gigabytes (GB). Drivers that use the new 48-bit LBA ATA commands are limited to 144 petabytes (PB). Examples are as follows:
Microsoft Windows XP Service Pack 1, Windows Server 2003, and later versions of Windows support 48-bit LBA ATA commands in the atapi.sys driver.
Windows XP (before Service Pack 1) and Windows 2000 Service Pack 3 or later support 48-bit LBA ATA commands in the atapi.sys driver, but support must be enabled by a registry key described in http://support.microsoft.com/default.aspx?scid=kb;en-us;303013.
All versions of Windows previous to Windows 2000 Service Pack 3 support 28-bit LBA ATA commands in the atapi.sys driver.
Any system that has a controller that doesn't use Microsoft's atapi.sys driver will have limitations dependent upon the driver's manufacturer.
Currently there is very little movement from CD-ROM and DVD-ROM drive manufacturers to adopt Serial ATA. The Serial ATA performance benefits to optical devices are not yet compelling and therefore Serial ATA adoption is often viewed as an unnecessary expense.
It is possible that Serial ATA will replace parallel ATA in personal computers in the future. If Serial ATA becomes dominant in the computer market, manufacturers of CD-ROM and DVD-ROM drives will have good reason to create product lines that support an interface other than parallel ATA.
The strongest candidates for a parallel ATA alternative are Serial ATA and USB 2.0. Both options have Windows support. Beyond cost, the biggest factor on which a new bus may be adopted is BIOS support for booting.
There is a hidden opportunity in the event of parallel ATA CD-ROM and DVD-ROM drives choosing a new storage interface. Currently CD-ROM and DVD-ROM drives do not have the ability to notify Windows of a media change. Windows is then required to poll the device to determine media status which prevents some types of power management for CD-ROM and DVD-ROM drives.
Right now neither Serial ATA nor USB has a standard method for media status notification. Microsoft encourages the industry to work toward creating standards for media status notification before CD-ROM drives are prepared to move to alternative interfaces.
Serial ATA Specifications
BIOS Settings for Native-Mode-Capable ATA Controllers
Microsoft Hardware and Driver Developer Information
Microsoft Windows Logo Program System and Device Requirements
Microsoft Windows XP Hardware Compatibility Test Kit, V. 11.1
If you have questions about the information in this paper, send email to firstname.lastname@example.org.
Advanced Host Controller Interface (AHCI)
A hardware register interface for Serial ATA controllers still under development.
Advanced Technology Attachment (ATA)
The command protocol used with the parallel ATA and Serial ATA interconnects.
Advanced Technology Attachment Packet Interface (ATAPI)
An extension to ATA that allows SCSI commands to be passed through with ATA commands. Commonly used by CD-ROM and DVD-ROM drives.
A Windows port driver, still under development, that support the ATA command protocol.
Logical abstraction for the parallel or Serial ATA cable.
The storage commands that tell storage devices what actions to take. Common examples are commands to read and write data.
Emulating Parallel ATA mode
A mode of behavior for a Serial ATA controller that allows the use of parallel ATA drivers.
The ability to remove or add a storage device while the system is still running.
Hardware Register Interface
The mechanism by which a driver can control a storage controller.
The hardware and cabling that transfer the storage commands.
The ability for a Serial ATA controller to act like a parallel ATA controller with a single storage device on its channel.
Native Serial ATA mode
A mode of behavior for a Serial ATA controller that is incompatible with parallel ATA drivers.
The 40 pin parallel interconnect for the ATA command protocol. This is present in almost every personal computer today.
PCI ISA mode
A mode of behavior that a PCI storage controller may ask the PCI bus to adopt, in which it acts like an ISA bus.
PCI Native mode
A mode of behavior in which the PCI bus normally operates.
A strategy used for reducing the work needed to develop a driver. The port contains common functionality useful to all drivers of a particular type and the miniport contains functionality specific to an individual or family of controllers.
Redundant Array of Independent Disks (RAID)
A feature of a controller designed to protect against hard drive failure or improve storage subsystem performance or both by making multiple hard drives act as a single hard drive.
The new serial interconnect for the ATA command protocol.
Small Computer System Interface (SCSI)
A storage command protocol separate from ATA, but commonly used by ATA to communicate with CD-ROM and DVD-ROM drives.
Shared Channel Emulation
The ability for a Serial ATA controller to act like a parallel ATA controller with a two storage device on its cable.
Antiquated. Previously used to refer to booting from a Native Serial ATA controller.