This chapter covers the basic operational characteristics of the storage software stack. Whereas previous sections have concentrated on how to physically connect SATA devices and their architectureassociated protocols, this chapter addresses the most common method to create a SATA-based host implementation. Topics include the following:

 Storage I/O Stack ○ I/O manager ○ File system, volume manager, and volumes ○ Class and miniport drivers ○ Hardware: PCI bus, HBAs, and Devices

 SATA and SATA Express architectures ○ SATA protocol layers ○ PCIe protocol layers

 SATA configurations  The Advanced Host Channel Interface (AHCI) Specification, which has been implemented in

all SATA applications since 20 05  System memory structure:

○ General status and control ○ Table of Command Lists

 HBA configuration registers  PCI Header and Configuration Space  Memory registers

○ Generic ○ Port control

 Port register map  HBA Memory Space Usage  Port memory usage

○ Received FIS structure ○ Command List

Storage I/O must traverse many layers of software and hardware stacks as seen in Figure 10.1.