A HIGH PERFORMANCE, OPEN SOURCE SATA2 CORE
Ashwin A. Mendon, Bin Huang, and Ron Sass
Reconfigurable Computing Systems Lab
University of North Carolina at Charlotte
Charlotte, NC, USA
email: {aamendon,bhuang2,rsass}@uncc.edu
ABSTRACT
This paper describes the design and implementation of an
open source FPGA-based SATA2 core. It provides the abil-
ity to directly interface with hardware cores which is ben-
eficial for high performance and embedded computing ap-
plications. Additionally, the core has a bus interface and
DMA engine that makes it available to the operating sys-
tem through a Linux block device driver. Measurements
with solid state drives reveal that our FPGA-based imple-
mentation achieves performance close to the disks’ theoret-
ical peak. In contrast, we find that software overhead on
a modern Linux server prevents exploiting the full poten-
tial of these high speed storage devices. Native Command
Queueing is supported by the core and the performance re-
sults highlight its importance in the context of SSDs, espe-
cially for small block transfers. The small size of our SATA
core (1.5% of the logic resources on a Virtex-6 FPGA) indi-
cates that an on-chip RAID storage system is feasible.
1. INTRODUCTION
The introduction of high speed transceivers that can be con-
figured to be electrically compatible with industry standards,
such as SATA and SATA2, has enabled FPGAs to commu-
nicate with large, non-volatile storage devices. However,
commercial SATA cores have two shortcomings. First, they
are very expensive and, second, the cores are designed to
be accessed only from software. This may be sensible for
the simplest, most straight-forward System-on-a-Chip type
designs, but it limits the capabilities of directly interfacing
with FPGA-based cores.
This paper describes the design, implementation, and
performance measurements of an open source SATA2 core.
As coded, the SATA core can be used as the basis of a tra-
ditional “SATA chipset” for an operating system or used in
an unconventional way, such as the interface between an-
other hardware core and a non-volatile storage. This pro-
vides FPGA-based accelerators the ability to directly access
raw data from non-volatile storage. It also supports the abil-
ity to create FPGA-based filesystems in hardware [1,2]. The
latter is extremely important as non-volatile storage speed
and latencies are changing dramatically (flash-based designs
today and phase-change memory in the future) while the
software stack and microprocessor frequency are not. Be-
yond demonstrating the functionality of the core, this paper
quantifies the software overhead and demonstrates that this
penalty is substantial with current solid state drives. The
implementation also reveals that Native Command Queing
— which was developed to allow Winchester-style disks to
reorder outstanding requests — is also important to solid-
state drives, especially for small block transfers. Along with
the hardware core, which is available from OpenCores [3],
there is also an Open Source Linux block device driver ker-
nel module that makes the core available to the operating
system. Presently, the design supports the transceivers found
on Xilinx Virtex 5 and Virtex 6 parts.
The rest of the paper is organized as follows. In the
next section, the relevant aspects of the SATA standard are
explained along with related work. The design goals and
implementation details are presented in Section 3. In Sec-
tion 4, the performance of the core with multiple commodity
off-the-shelf drives (Winchester and Solid-State Drives) are
analyzed. This performance is compared to a commercial
SATA II host bus adaptor in a traditional microprocessor-
based system as well.
2. BACKGROUND
2.1. SATA Protocol
The SATA protocol is a computer bus standard for transfer-
ring data between a Host Bus Adapter (HBA) chipset and
a mass storage device [4]. SATA Gen 1 has a transmission
speed of 150 MB/s, which was increased to 300 MB/s in
SATA Gen 2. (The SATA Gen 3 specification is available
and supports speeds upto 600 MB/s. However, we do not
have access to FPGA devices compatible with SATA Gen 3
yet.) Serial ATA was designed to overcome a number of lim-
itations of parallel ATA. The improvements include a four-
wire point-to-point high-speed serial interface that supports
978-1-4673-2256-0/12/$31.00
c
2012 IEEE 421