USB Attached SCSI

Last updated

USB Attached SCSI (UAS) or USB Attached SCSI Protocol (UASP) is a computer protocol used to move data to and from USB storage devices such as hard drives (HDDs), solid-state drives (SSDs), and thumb drives. UAS depends on the USB protocol, and uses the standard SCSI command set. Use of UAS generally provides faster transfers compared to the older USB Mass Storage Bulk-Only Transport (BOT) drivers.

Contents

UAS was introduced as part of the USB 3.0 standard, but can also be used with devices complying with the slower USB 2.0 standard, assuming use of compatible hardware, firmware and drivers. UAS was developed to address the shortcomings of the original USB Mass Storage Bulk-Only Transport protocol, i.e., an inability to perform command queueing or out-of-order command completions. To support these features, the Bulk Streaming Protocol was added to the USB3 specification, and Streams support was added to the USB host controller interface (Extensible Host Controller Interface).

An M.2 (2242) solid-state-drive (SSD) connected into USB 3.0 adapter and connected to computer. M.2 2242 SSD connected into USB 3.0 adapter.jpg
An M.2 (2242) solid-state-drive (SSD) connected into USB 3.0 adapter and connected to computer.

Overview

UAS is defined across two standards, the T10 "USB Attached SCSI" (T10/2095-D) referred to as the "UAS" specification, and the USB "Universal Serial Bus Mass Storage Class - USB Attached SCSI Protocol (UASP)" specification. The T10 technical committee of the International Committee for Information Technology Standards (INCITS) develops and maintains the UAS specification; the SCSI Trade Association (SCSITA) promotes the UAS technology. The USB mass-storage device class (MSC) Working Group develops and maintains the UASP specification; the USB Implementers Forum, Inc. (USB-IF) promotes the UASP technology.

UAS drivers generally provide faster transfers when compared to the older USB Mass Storage Bulk-Only Transport (BOT) protocol drivers. [1] [2] [3] Although UAS was added in the USB 3.0 standard, it can also be used at USB 2.0 speeds, assuming compatible hardware. [4]

When used with an SSD, UAS is considerably faster than BOT for random reads and writes given the same USB transfer rate. The speed of a native SATA 3 interface is 6.0 Gbit/s. When using a USB 3.0 link (5.0 Gbit/s), which is slower than a SATA3 link, the performance will be limited by the USB link. However, USB has continued to improve its transfer rates, with USB4 reaching 80 Gbit/s. Many UAS drives are implemented using a SATA 3 drive attached through a SATA to UAS bridge, which limits the a UAS drive to the native SATA transfer rate, however a native USB UAS SSD can take full advantage of higher USB transfer rates.

The UAS standard (ANSI INCITS 471-2010 and ISO/IEC 14776-251:2014) has been superseded so it should be referred to as UAS-1. A UAS-2 project was started by T10 but cancelled. That effort was resurrected as UAS-3 which is now a published standard (INCITS 572-2021). Apart from being based on later versions of other SCSI standards (e.g. SAM-6 and SPC-6 (both under development)) the technical author described the changes between UAS-1 and UAS-3 as follows: "allow the device to switch data transfers from one command to another before the current command is complete".

Hardware support

USB controller/hub

A brief hardware roundup in July 2010 by SemiAccurate found that Gigabyte Technology had introduced working UAS drivers for their boards using NEC/Renesas chips. [1]

A comparative performance review by VR-Zone in August 2011, concluded that only the NEC/Renesas chips had UAS working drivers. [5] The same Renesas UAS driver (for Windows) also works with AMD's A70M and A75 Fusion Controller Hubs, [6] the USB part of which was co-developed by AMD and Renesas. [7] In October 2011, ASMedia USB controllers chips had gained driver support as well (they had support on the hardware side before). [8]

As for support by Intel Platform Controller Hub (PCH), an article in MyCE notes: "The native Intel USB3 UASP solution is only supported under Windows 8. To further complicate matters, not all Z77 motherboards support USB3 UASP. A license is required to implement UASP, and not all motherboard manufacturers are prepared to pass on the extra cost of this license to the end user." [9]

A few Allwinner Technology SoCs feature UAS support over USB 2.0 in Linux. [10]

Storage devices

Of USB/SATA bridges, "the LucidPort USB300 and USB302, Symwave SW6315, Texas Instruments TUSB9261 and the VLI VL700 controllers all support UASP, while as far as we could find, the ASMedia ASM1051 and ASM1051E as well as the Fujitsu MB86C30A doesn't." [1]

Fujitsu lists some higher-end chips like the MB86C311A that do support UAS. [11] ASMedia 1053-s and 1153 support UAS. [10]

Silicon Motion's SM232x family of USB Flash Drive (UFD) controllers [12] offers full USB 3.2 UAS performance, reaching data transfer speeds of up to 2 Gbyte/s.

Operating system support

Microsoft added native support for UAS to Windows 8. [13] Drives supporting UAS load Uaspstor.sys instead of the older Usbstor.sys. [14] Windows 8 supports UAS by default over USB 2.0 as well. [15] UAS drivers and products are certified by Microsoft using the Windows Hardware Certification Kit. [16]

Apple added native support for UAS to OS X 10.8 Mountain Lion; drives using UAS show up in System Information → Software → Extensions as IOUSBAttachedSCSI (or IOUSBMassStorageUASDriver, depending on the version of OS X) "Loaded: Yes". [17] Drives listed with "Loaded: No" are defaulting to the older, slower Bulk Only Transport (BOT) mode. This may occur if the drive's USB controller, the Mac's USB port, or any attached USB hub doesn't support UASP mode.

The Linux kernel has supported UAS since 8 June 2014 when the version 3.15 was released. [18] However, some distributions of Linux such as Ubuntu (from v11.xx onwards) have reported issues with some misbehaving hardware. [19] The kernel has a built-in blacklist for devices with "quirks" defined in unusual_uas.h. [20] Temporary additional quirks can be added via procfs or kernel command line (usb-storage.quirks). [21]

FreeBSD does not support UAS as of August 2018. [22]

On older operating systems that do not support UAS class, a UAS device may be run in USB Mass Storage Bulk-Only Transport mode for compatibility.

Goals

See also

Related Research Articles

<span class="mw-page-title-main">Device driver</span> Software interface to attached devices

In computing, a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton. A driver provides a software interface to hardware devices, enabling operating systems and other computer programs to access hardware functions without needing to know precise details about the hardware being used.

<span class="mw-page-title-main">SCSI</span> Set of computer and peripheral connection standards

Small Computer System Interface is a set of standards for physically connecting and transferring data between computers and peripheral devices, best known for its use with storage devices such as hard disk drives. SCSI was introduced in the 1980s and has seen widespread use on servers and high-end workstations, with new SCSI standards being published as recently as SAS-4 in 2017.

<span class="mw-page-title-main">SATA</span> Computer bus interface for storage devices

SATA is a computer bus interface that connects host bus adapters to mass storage devices such as hard disk drives, optical drives, and solid-state drives. Serial ATA succeeded the earlier Parallel ATA (PATA) standard to become the predominant interface for storage devices.

A disk array controller is a device that manages the physical disk drives and presents them to the computer as logical units. It almost always implements hardware RAID, thus it is sometimes referred to as RAID controller. It also often provides additional disk cache.

<span class="mw-page-title-main">Native Command Queuing</span>

In computing, Native Command Queuing (NCQ) is an extension of the Serial ATA protocol allowing hard disk drives to internally optimize the order in which received read and write commands are executed. This can reduce the amount of unnecessary drive head movement, resulting in increased performance for workloads where multiple simultaneous read/write requests are outstanding, most often occurring in server-type applications.

The Advanced Host Controller Interface (AHCI) is a technical standard defined by Intel that specifies the register-level interface of Serial ATA (SATA) host controllers in a non-implementation-specific manner in its motherboard chipsets.

<span class="mw-page-title-main">Serial Attached SCSI</span> Point-to-point serial protocol for enterprise storage

In computing, Serial Attached SCSI (SAS) is a point-to-point serial protocol that moves data to and from computer-storage devices such as hard disk drives and tape drives. SAS replaces the older Parallel SCSI bus technology that first appeared in the mid-1980s. SAS, like its predecessor, uses the standard SCSI command set. SAS offers optional compatibility with Serial ATA (SATA), versions 2 and later. This allows the connection of SATA drives to most SAS backplanes or controllers. The reverse, connecting SAS drives to SATA backplanes, is not possible.

<span class="mw-page-title-main">USB mass storage device class</span> USB device class for drives

The USB mass storage device class is a set of computing communications protocols, specifically a USB Device Class, defined by the USB Implementers Forum that makes a USB device accessible to a host computing device and enables file transfers between the host and the USB device. To a host, the USB device acts as an external hard drive; the protocol set interfaces with a number of storage devices.

<span class="mw-page-title-main">Solid-state drive</span> Computer storage device with no moving parts

A solid-state drive (SSD) is a solid-state storage device. It provides persistent data storage using no moving parts.

<span class="mw-page-title-main">Disk buffer</span>

In computer storage, disk buffer is the embedded memory in a hard disk drive (HDD) or solid state drive (SSD) acting as a buffer between the rest of the computer and the physical hard disk platter or flash memory that is used for storage. Modern hard disk drives come with 8 to 256 MiB of such memory, and solid-state drives come with up to 4 GB of cache memory.

<span class="mw-page-title-main">VirtualBox</span> Open-source x86 virtualization application

Oracle VM VirtualBox is a hosted hypervisor for x86 virtualization developed by Oracle Corporation. VirtualBox was originally created by InnoTek Systemberatung GmbH, which was acquired by Sun Microsystems in 2008, which was in turn acquired by Oracle in 2010.

<span class="mw-page-title-main">JMicron</span>

JMicron Technology Corporation is a Taiwan based fabless technology design house based in Hsinchu, Taiwan. As a manufacturer of integrated circuits, they produce controller chips for bridge devices.

<span class="mw-page-title-main">USB 3.0</span> Third major version of the Universal Serial Bus standard

Universal Serial Bus 3.0, marketed as SuperSpeed USB, is the third major version of the Universal Serial Bus (USB) standard for interfacing computers and electronic devices. It was released in November 2008. The USB 3.0 specification defined a new architecture and protocol, named SuperSpeed, which included a new lane for a new signal coding scheme providing full-duplex data transfers that physically required five additional wires and pins, while preserving the USB 2.0 architecture and protocols and therefore keeping the original four pins and wires for the USB 2.0 backward-compatibility, resulting in nine wires in total and nine or ten pins at connector interfaces. The new transfer rate, marketed as SuperSpeed USB (SS), can transfer signals at up to 5 Gbit/s with nominal data rate of 500 MB/s after encoding overhead, which is about 10 times faster than High-Speed. USB 3.0 Type-A and B connectors are usually blue, to distinguish them from USB 2.0 connectors, as recommended by the specification. and by the initials SS.

<span class="mw-page-title-main">Intel Rapid Storage Technology</span> Computer storage device

Intel Rapid Storage Technology (RST) is a driver SATA AHCI and a firmware-based RAID solution built into a wide range of Intel chipsets. Currently also is installed as a driver for Intel Optane temporary storage units.

In computing the SCSI RDMA Protocol (SRP) is a protocol that allows one computer to access SCSI devices attached to another computer via remote direct memory access (RDMA). The SRP protocol is also known as the SCSI Remote Protocol. The use of RDMA makes higher throughput and lower latency possible than what is generally available through e.g. the TCP/IP communication protocol.

SCSI / ATA Translation (SAT) is a set of standards developed by the T10 subcommittee, defining how to communicate with ATA devices through a SCSI application layer. The standard attempts to be consistent with the SCSI architectural model, the SCSI Primary Commands, and the SCSI Block Commands standards.

A trim command allows an operating system to inform a solid-state drive (SSD) which blocks of data are no longer considered to be "in use" and therefore can be erased internally.

NVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer's non-volatile storage media usually attached via the PCI Express bus. The initial NVM stands for non-volatile memory, which is often NAND flash memory that comes in several physical form factors, including solid-state drives (SSDs), PCIe add-in cards, and M.2 cards, the successor to mSATA cards. NVM Express, as a logical-device interface, has been designed to capitalize on the low latency and internal parallelism of solid-state storage devices.

<span class="mw-page-title-main">LIO (SCSI target)</span> Open-source version of SCSI target

In computing, Linux-IO (LIO) Target is an open-source implementation of the SCSI target that has become the standard one included in the Linux kernel. Internally, LIO does not initiate sessions, but instead provides one or more Logical Unit Numbers (LUNs), waits for SCSI commands from a SCSI initiator, and performs required input/output data transfers. LIO supports common storage fabrics, including FCoE, Fibre Channel, IEEE 1394, iSCSI, iSCSI Extensions for RDMA (iSER), SCSI RDMA Protocol (SRP) and USB. It is included in most Linux distributions; native support for LIO in QEMU/KVM, libvirt, and OpenStack makes LIO also a storage option for cloud deployments.

<span class="mw-page-title-main">SATA Express</span> Computer device interface

SATA Express is a computer bus interface that supports both Serial ATA (SATA) and PCI Express (PCIe) storage devices, initially standardized in the SATA 3.2 specification. The SATA Express connector used on the host side is backward compatible with the standard SATA data connector, while it also provides two PCI Express lanes as a pure PCI Express connection to the storage device.

References

  1. 1 2 3 Lars-Göran Nilsson (2010-07-30). "Gigabyte adds UASP support to its USB 3.0 motherboards". SemiAccurate. Retrieved 2014-01-19.
  2. Andrew Ku (2012-06-19). "USB Attached SCSI (UAS): Enabling Even Better USB 3.0 Performance - Faster USB 3.0 Performance: Examining UASP And Turbo Mode". Tomshardware.com. Retrieved 2014-01-19.
  3. Sandler, Steve (2012-03-18). "What's the Difference Between USB UASP And BOT | Embedded content from". Electronic Design. Retrieved 2014-01-20.
  4. Lars-Göran Nilsson (2010-08-11). "Gigabyte's UASP USB 3.0 Driver Boosts USB 2.0 Performance". SemiAccurate. Retrieved 2014-01-19.
  5. TeamVR (August 23, 2011). "USB 3.0 Speed Tests: 7-Way Host Controllers Roundup - Page 1 of 11". Vr-zone.com. Retrieved 2014-01-19.
  6. "USB to SATA3 bridge supports UASP". Electronics Eetimes. Retrieved 2014-01-20.
  7. Lars-Göran Nilsson (2011-03-23). "AMD's A75 and A70M FCH gains USB-IF approval". SemiAccurate. Retrieved 2014-01-20.
  8. TeamVR on October 14, 2011 1:23 am (2014-01-10). "Asus launches USB 3.0 speed booster, UASP support for ASMedia". Vr-zone.com. Retrieved 2014-01-20.{{cite web}}: CS1 maint: numeric names: authors list (link)
  9. "Beyond USB3, with UASP". Myce.com. Retrieved 2014-01-20.
  10. 1 2 "USB/UAS". linux-sunxi.org. Retrieved 30 May 2023.
  11. "USB 3.0-SATA Bridge ICs : Fujitsu Global". Fujitsu.com. Retrieved 2014-01-20.
  12. "Silicon Motion Launches World's Fastest Single Chip Controller For External Portable SSDs". ir.siliconmotion.com. Retrieved 2023-08-28.
  13. Jerome Myers (2012-10-25). "New USB 3.0 Support Built-In to Windows 8". Plugable. Retrieved 2014-01-20.
  14. "USB in Windows - FAQ (Windows Drivers)". Msdn.microsoft.com. 2013-11-16. Retrieved 2014-01-20.
  15. USB Attached SCSI (UAS) Best Practices for Windows 8, page 6
  16. "USB 2.0 & 3.0 SCSI Compliance test for UAS on EHCI (LOGO)". Msdn.microsoft.com. 2013-07-26. Retrieved 2014-01-20.
  17. fortysomethinggeek (2013-04-03). "Fortysomething Geek: OSX Mountain Lion 10.8 UAS UASP USB Attach SCSI drivers". Fortysomethinggeek.blogspot.com. Retrieved 2014-01-20.
  18. "Phoronix: USB Attached SCSI (UAS) Is Now Working Under Linux".
  19. "UAS Ubuntu Bug-Report". bugs.launchpad.net. 2011-10-05. Retrieved 2019-08-17.
  20. Torvalds, Linus (28 May 2023). "torvalds/linux: unusual_uas.h" . Retrieved 28 May 2023.
  21. "The kernel's command-line parameters — The Linux Kernel documentation". www.kernel.org.
  22. "Is FreeBSD-current XHCI 1.1 compliant?". lists.freebsd.org. 2018-08-28.
  23. New API allows apps to send "TRIM and Unmap" hints to storage media