AHCI and NVMe as interfaces for SATA Express Devices

Similar documents
AHCI and NVMe as Interfaces for SATA Express Devices - Overview

A Comparison of NVMe and AHCI

The Transition to PCI Express* for Client SSDs

SATA Express. PCIe Client Storage. Paul Wassenberg, SATA-IO

White Paper: M.2 SSDs: Aligned for Speed. Comparing SSD form factors, interfaces, and software support

SATA Evolves SATA Specification v3.2 FMS 2013

4 Port PCI Express 2.0 SATA III 6Gbps RAID Controller Card with HyperDuo SSD Tiering

PCI Express SATA III RAID Controller Card with Mini-SAS Connector (SFF-8087) - HyperDuo SSD Tiering

NVM Express TM Infrastructure - Exploring Data Center PCIe Topologies

2 Port PCI Express 2.0 SATA III 6Gbps RAID Controller Card w/ 2 msata Slots and HyperDuo SSD Tiering

3 Port PCI Express 2.0 SATA III 6 Gbps RAID Controller Card w/ msata Slot and HyperDuo SSD Tiering

PCI Express 2.0 SATA III RAID Controller Card with Internal Mini-SAS SFF-8087 Connector

QuickSpecs. PCIe Solid State Drives for HP Workstations

Scaling from Datacenter to Client

Enterprise SSD Interface Comparisons

Intel DPDK Boosts Server Appliance Performance White Paper

Transitioning to 6Gb/s SAS (Serial-Attached SCSI) A Dell White Paper

PCIe SSD 101. An Overview of Standards, Markets and Performance. Members of the SNIA Solid State Storage Initiative PCIe SSD Committee

The Evolution of Solid State Storage in Enterprise Servers

Solid State Drive Architecture

OCZ s NVMe SSDs provide Lower Latency and Faster, more Consistent Performance

IDE/ATA Interface. Objectives. IDE Interface. IDE Interface

HP Z Turbo Drive PCIe SSD

PCI Express Basics Ravi Budruk Senior Staff Engineer and Partner MindShare, Inc.

A+ Guide to Managing and Maintaining Your PC, 7e. Chapter 1 Introducing Hardware

4 Channel 6-Port SATA 6Gb/s PCIe RAID Host Card

PCI Express Impact on Storage Architectures. Ron Emerick, Sun Microsystems

Benefits of Solid-State Storage

Performance Beyond PCI Express: Moving Storage to The Memory Bus A Technical Whitepaper

NVMe TM and PCIe SSDs NVMe TM Management Interface

How To Test Nvm Express On A Microsoft I7-3770S (I7) And I7 (I5) Ios 2 (I3) (I2) (Sas) (X86) (Amd)

High-Performance SSD-Based RAID Storage. Madhukar Gunjan Chakhaiyar Product Test Architect

Computer Organization & Architecture Lecture #19

COS 318: Operating Systems. I/O Device and Drivers. Input and Output. Definitions and General Method. Revisit Hardware

I/O Virtualization Using Mellanox InfiniBand And Channel I/O Virtualization (CIOV) Technology

PCI Express IO Virtualization Overview

VTrak SATA RAID Storage System

760 Veterans Circle, Warminster, PA Technical Proposal. Submitted by: ACT/Technico 760 Veterans Circle Warminster, PA

Serial ATA technology

enabling Ultra-High Bandwidth Scalable SSDs with HLnand

PCI Express and Storage. Ron Emerick, Sun Microsystems

Performance Characteristics of VMFS and RDM VMware ESX Server 3.0.1

The Bus (PCI and PCI-Express)

The changes in each specification and how they compare is shown in the table below. Following the table is a discussion of each of these changes.

Storage Architectures. Ron Emerick, Oracle Corporation

Taking Linux File and Storage Systems into the Future. Ric Wheeler Director Kernel File and Storage Team Red Hat, Incorporated

Chapter Introduction. Storage and Other I/O Topics. p. 570( 頁 585) Fig I/O devices can be characterized by. I/O bus connections

SOLID STATE DRIVES AND PARALLEL STORAGE

PCIe SATA 6G Raid Card

I/O Device and Drivers

BCDVideo TM offers HP's full portfolio of SAS drives meeting all these demands.

SCSI Standards and Technology Update: SAS and SCSI Express

Serial ATA and Serial Attached SCSI technologies

Emerging storage and HPC technologies to accelerate big data analytics Jerome Gaysse JG Consulting

Samsung Solid State Drive RAPID mode

PCI Express Impact on Storage Architectures and Future Data Centers. Ron Emerick, Oracle Corporation

Memory Channel Storage ( M C S ) Demystified. Jerome McFarland

Chapter 6, The Operating System Machine Level

How System Settings Impact PCIe SSD Performance

An Analysis of Wireless Device Implementations on Universal Serial Bus

SATA 6G PCIe Card User Manual Model: UGT-ST622

HP Smart Array Controllers and basic RAID performance factors

The IntelliMagic White Paper on: Storage Performance Analysis for an IBM San Volume Controller (SVC) (IBM V7000)

EDUCATION. PCI Express, InfiniBand and Storage Ron Emerick, Sun Microsystems Paul Millard, Xyratex Corporation

PCI SATA Controller Card Model: SY-PCI40010

SAN Conceptual and Design Basics

SQL Server 2014 Optimization with Intel SSDs

VMware Virtual SAN Hardware Guidance. TECHNICAL MARKETING DOCUMENTATION v 1.0

Solid State Storage in Massive Data Environments Erik Eyberg

RAID-01 (ciss) B mass storage driver release notes, edition 2

PCI IDE Controller. Specification. Revision 1.0

Intel Solid State Drive Toolbox

Accelerating Enterprise Applications and Reducing TCO with SanDisk ZetaScale Software

Intel Solid State Drive Toolbox

Configuration Maximums VMware Infrastructure 3

COMPUTER HARDWARE. Input- Output and Communication Memory Systems

Couchbase Server: Accelerating Database Workloads with NVM Express*

EX Port SATA3 RAID/HyperDuo PCIe(x2) Card

N /150/151/160 RAID Controller. N MegaRAID CacheCade. Feature Overview

Storage Class Memory Support in the Windows Operating System Neal Christiansen Principal Development Lead Microsoft

Host Memory Buffer (HMB) based SSD System. Forum J-31: PCIe/NVMe Storage Jeroen Dorgelo Mike Chaowei Chen

DELL SOLID STATE DISK (SSD) DRIVES

Broadcom Ethernet Network Controller Enhanced Virtualization Functionality

PCI Express Overview. And, by the way, they need to do it in less time.

A Close Look at PCI Express SSDs. Shirish Jamthe Director of System Engineering Virident Systems, Inc. August 2011

PCI Express SATA / esata 6Gb/s RAID Card User Manual

Flash for Databases. September 22, 2015 Peter Zaitsev Percona

SUPERTALENT PCI EXPRESS RAIDDRIVE PERFORMANCE WHITEPAPER

Agenda. Enterprise Application Performance Factors. Current form of Enterprise Applications. Factors to Application Performance.

Guide to SATA Hard Disks Installation and RAID Configuration

Server Forum Copyright 2014 Micron Technology, Inc

DIABLO TECHNOLOGIES MEMORY CHANNEL STORAGE AND VMWARE VIRTUAL SAN : VDI ACCELERATION

Technology Note. PCI Express

The SATA II PCIe RAID is an ultra high-speed two channel Serial ATA Generation II RAID controller for use in PCI Express enabled systems.

Flash 101. Violin Memory Switzerland. Violin Memory Inc. Proprietary 1

NVMe SSD User Installation Guide

Transcription:

AHCI and NVMe as interfaces for SATA Express Devices By Dave Landsman, SanDisk and Don Walker, Dell Revision 1.0 7/24/2012 Page 1

Table of Contents 1 Introduction... 3 2 SATA Express Interface Architecture... 4 3 AHCI And NVMe As SATA Express Device Interfaces... 5 4 AHCI Overview... 6 5 NVMe Overview... 8 6 Applications... 10 7 Driver Availability... 10 8 Summary... 10 9 References... 11 Page 2

1 Introduction The Serial ATA (SATA ) storage interface has evolved almost unrecognizably from its beginnings as IDE/ATA (Parallel ATA - PATA) in the late 1980 s. SATA is now the most widely used hard disk drive (HDD) interface in the global storage market. SATA has held up incredibly well to the performance demands of HDDs; however, in 2009-2010, solid state drives (SSDs) began to outstrip the capabilities of even 3 rd generation SATA, with its 6Gb/s bandwidth. It was considered impractical to take the SATA interface above 6Gb/s, and so the client storage market needed a way forward to accommodate the huge base of legacy SATA devices, the still vibrant market for new SATA devices, including SATA-based SSDs, as well as to incorporate new classes of very high performance devices, such as PCI Express (PCIe)-based SSDs. SATA Express was created by SATA-IO in 2011 to enable a path beyond SATA 6Gb (see Why SATA Express ) for PCIe-based client SSD s. The hardware model of SATA Express is that a host can accept a legacy SATA device, or a SATA Express (PCIe) device, per figure 1. Figure 1 SATA Express HW System Overview While the SATA Express hardware model enables SATA and PCIe devices to be used in the same platform electro-mechanical environment, there is also the issue of the logical device interface. There are two standards-based choices for SATA Express device interface, the Advanced Host Controller Interface (AHCI) and NVM Express Page 3

(NVMe). This paper describes the relationship of the AHCI and NVMe interfaces, in the SATA Express environment, as PCIe device interfaces for SATA Express devices. It also provides some technical background and comparison of the performance aspects of both interfaces. 2 SATA Express Interface Architecture Figure 2 describes the SATA Express software architecture and how legacy SATA, SATA Express/AHCI, and SATA Express/NVMe relate to one another. Figure 2 SATA Express High Level Architecture In a legacy SATA implementation (left side of figure) the AHCI interface is implemented as a Host Bus Adapter (HBA), and often built into the host chip set. In this case, applications talk to the host side of the AHCI HBA via PCIe or an internal system bus. The device side of the HBA connects to the SATA device over the legacy SATA Link and PHY channel. Page 4

In a SATA Express case (right side of figure) two standard device interface options are possible, AHCI and NVMe. In both cases, the SATA Express device appears to the system as an attached PCIe device through the host s PCIe Root Complex Port. The difference is mainly in the device driver and, of course, the device controller in the device itself. In path (2) the PCIe endpoint, the SSD, appears to the system as an AHCI device and is accessed through the AHCI/SATA device driver, supported in nearly all client platforms by a standard in-box device driver. In path (3), the endpoint, the SSD, appears to the system as an NVMe device and is accessed through the NVMe device driver. Note that in the case of NVMe, the NVMe driver must be installed on the system with the device (see Driver Availability). 3 AHCI and NVMe as SATA Express Device Interfaces To compare AHCI and NVMe as device interfaces for SATA Express, it is necessary to provide some background on the evolution of AHCI. AHCI was originally created to provide a host controller interface to SATA hard disk drives (HDDs) enabling queuing, an asynchronous command-response mechanism, power management, a better architected application programming interface, and more. It was a significant improvement over the legacy SATA interface, which had evolved from IDE. As noted in Figure 2 (path 1) and shown here in figure 3, in a legacy SATA implementation, the AHCI interface is implemented as an HBA. As an HBA, the AHCI controller can support up to thirty two (32) ports (physical connections), each of which are exposed to the host via dedicated registers inside the HBA. Figure 3 AHCI as HBA Page 5

In contrast, when implemented as a SATA Express/AHCI device, the AHCI controller is integrated into the device, as shown in Figure 4. In the terms of the AHCI theory of operation, an AHCI controller in a SATA Express/AHCI device has a single physical host port. Figure 4 AHCI as SATA Express Device Controller When comparing NVMe and AHCI as interfaces for SATA Express devices, the comparison must be between NVMe and AHCI, as attached PCIe device controllers, not between NVMe as an attached PCIe device controller and AHCI as an (up to 32-port) HBA. In the following sections, all discussion of AHCI is as an attached PCIe device controller with a single AHCI port. 4 AHCI Overview The AHCI controller implemented in a SATA Express device is exposed to the host through a set of memory-mapped PCIe registers. The key device specific registers are: Capabilities registers - Describe support for optional features of the AHCI interface as well as optional features of the attached SATA devices. Examples of the former include 64 bit addressing and power state capabilities. Examples of the latter include queued commands, staggered spin-up, and SATA interface speeds. Configuration registers - Allow the host to configure the HBA s operational modes. Examples include enable/disable AHCI mode in the HBA, enable/disable interrupts, and reset HBA. Status registers - Report events and status, such as pending interrupts, implemented ports, timeout values, interrupt/command coalescing, and HBA readiness. Page 6

Port registers Used by the host to set up commands for the controller. As noted above, AHCI in a SATA Express device implements only one set of port registers. AHCI commands are processed using a series of data structures (Figure 5). In an AHCI HBA, a Command List is associated with each of the up to 32 ports in a device. In a SATA Express/AHCI device, which permits only a single port, only a single Command List is maintained. In all cases, each Command List can reference up to 32 individual commands. Commands are contained in structures called Command Tables. Figure 5 AHCI Command Data Structures Once host memory has been allocated for the Command List and Command Table, the Command Table is initialized with the command and other metadata associated with the command (e.g., Read or Write command, associated scatter/gather lists, etc). Prior to initializing the Command List and Command Table entries, host software (typically the AHCI driver) ensures that any previous commands occupying the Command List slot(s) have completed. The register operations needed to construct and launch a command cannot be cached; thus, a processor must generate a PCIe bus access any time a new read or write is performed. This overhead can be amortized over as many as 32 commands. Page 7

Overall, for an AHCI-based SATA Express device, the execution of a non-queued operation requires six (6) register accesses, and the execution of a queued operation requires nine (9) register accesses. Another aspect of AHCI is that a port s Command List and Command Table resources are not sharable between multiple threads. If two or more threads or processes wish to access the same device, then a mechanism (i.e., a lock, mutex, or other semaphore) must be used to coordinate access to the device. Such coordination takes place at a layer above the device interface. 5 NVMe Overview The register sets of an NVMe interface are conceptually very similar to those of AHCI: Capabilities and Configuration registers Declaring support for, and enabling of, features such as submission/completion queue size, arbitration mechanisms, and command sets supported. Status registers Enable reporting of global device controller status, such as transitional device states during an orderly shutdown and global error/exception conditions. Unlike AHCI, the NVMe architecture did not need to consider legacy interfaces and associated software stacks with which backward compatibility had to be maintained. This has allowed an interface design that is optimized to take advantage of those very characteristics that make NAND flash-based devices so attractive. Powerful Queuing Model a) The interface allows multiple command submission/completion pathways, or IO channels, based on submission/completion queue pairs. An IO channel is composed of one or more submission queues associated with a particular completion queue. b) Multiple submission and completion queues can be created dynamically. Up to 64K submission and completion queues can be supported, each up to 64K entries deep. c) Priorities can be assigned to queues. NVMe provides support for simple round robin, weighted round robin with urgent priority or a vendor-defined priority scheme. Page 8

Figure 6 NVMe Queuing/IO Channel Structure Efficient Transport a) The IU (Information Unit), the packet of information sent over the PCIe bus carrying commands and status, is of fixed size, supporting easy parsing of the information stream. b) Non-cacheable PCIe register reads/writes, used to move commands and status in and out of the command and status queues are kept to a minimum. c) Interrupts are distributed across completion queues, allowing processor cores and/or threads to avoid interruption by notifications that aren t part of their tasks- The at-hand. Simple-yet-powerful Devicee Model a) The command set is small, totaling only eight commands at this time. command set has been optimized to enhance the performance and expose the enhanced functionality of devices based on persistent memory technology. b) NVMe defines the concept of Namespace, a construct which enables the partitioning of the physical storage extent into multiple logical storage extents, each of which can be accessed independently of other logical extents. Each NVMe Namespace may have its own pathway, or IO channel, over which the host may access a Namespace. Namespaces allow the parallelism available in upper layers of today s platforms to be fully exploited in the storage system. Page 9

Overall, the NVMe interface requires only two (2) register accesses per command issue/completion cycle, avoiding locks on any queue or associated data structures. With this base of efficient IO, plus the powerful queuing model and features like Namespace, NVMe more fully exploits the hardware and software parallelism that has become an increasing part of today s platforms. 6 Applications Although significant amounts of performance data are not yet available this early in the NVMe life cycle, it is expected that any NVMe-based system, as well as most existing storage applications, will see measurable performance boosts over that of AHCI-based systems. Furthermore, the NVMe specification includes a number of advanced features that, while unlikely to be utilized in early application implementations, will yield additional performance improvements, over AHCI, once they've become widely accepted throughout the industry. 7 Driver Availability In today s client SATA platforms, the vast majority of which are Windows-based systems, the SATA software stack ships with Windows. Consequently, the SATA Express/AHCI solution, which utilizes legacy drivers and software, just works out of the box. Although NVMe was first defined in 2007 as the Non-volatile Host Controller Interface (NVMHCI) and the specification is mature, the ecosystem is still evolving and in-box Windows drivers are not yet available. However, standard Windows NVMe drivers are available at https://www.openfabrics.org/resources/developer-tools/nvme-windowsdevelopment.html, and vendors will ship drivers with their devices until NVMe is supported natively in Windows. Linux and VMware NVMe drivers are also available. Moreover, the University of New Hampshire Interoperability Laboratory recently added an NVMe compatibility program to begin testing devices and software for NVMe plug and play (see https://www.iol.unh.edu/services/testing/nvme/). 8 Summary The SATA/AHCI interface evolved to address the needs of high performance HDD devices and has served this use case ably, enabling SATA devices to be used ubiquitously from laptops to servers. The parallelism built into AHCI, while not fully enabling the parallelism available in today s host platforms, is more than sufficient for the relatively slower SATA devices it was intended to serve. SATA/AHCI is even sufficient for 1 st -generation SSD devices, especially in relatively lower-end mobile platforms, such as tablets and ultra-lite laptops. Page 10

However, in recognition of the evolution of storage requirements, and due to the technical challenges involved in taking the SATA PHY from its current maximum of 6Gb/s to 12Gb/s, SATA-IO chose to adopt PCIe, with its 8GT/s link and its multi-lane capability, as the physical interface for client storage. SATA Express hosts can interoperate electromechanically with both legacy SATA and SATA Express devices based on standard connectors now being defined, but system designers must also consider the choice of the NVMe or AHCI device interfaces. Both AHCI and NVMe bring advantages and costs as summarized in the table below. At a high level, AHCI brings compatibility, with attendant performance inefficiencies due to legacy architecture, and NVMe brings higher performance at the near term cost of inbox driver compatibility. Maximum Queue Depth Un-cacheable register accesses (2K cycles each) MXI-X and Interrupt Steering Parallelism & Multiple Threads Efficiency for 4KB Commands AHCI 1 command queue 32 commands per Q 6 per non-queued command 9 per queued command Single interrupt; no steering Requires synchronization lock to issue command Command parameters require two serialized host DRAM fetches NVMe 64K queues 64K Commands per Q 2 per command 2K MSI-X interrupts No locking Command parameters in one 64B fetch Driver Support Typically in-box Installed with device Together, the NVMe and AHCI device interfaces enable options for SATA Express devices that provide a path from the legacy SATA environment to a PCIe-based client SSD solution. 9 References 1) Why SATA Express (/technology/sataexpress.asp) Page 11

2) NVMe and AHCI A Technical Overview (www.sataio.org/technology/sataexpress.asp) 3) Serial ATA Revision 3.1 () 4) Serial ATA Advanced Host Controller Interface (AHCI) 1.3 (www.intel.com/content/www/us/en/io/serial-ata/ahci.html) 5) PCI Express Base Specification Revision 3.0 (www.pcisig.com) 6) NVM Express Revision 1.0c (www.nvmexpress.org) Page 12