USB Attached SCSI

USB Attached SCSI (UAS) ないしUSB Attached SCSI プロトコル (UASP) は、 ハードディスクドライブ (HDD)、ソリッドステートドライブ (SSD)、USBメモリなどのUSBストレージデバイスを用いてデータ転送を行うために使用されるコンピュータープロトコル。UASはUSBプロトコルに依存し、標準のSCSIコマンドセットを使用する。 UASを使用すると、従来のバルク転送 (BOT) ドライバーと比較して、一般的に高速にデータ転送が行える。 

UASはUSB 3.0の一部として導入されたが、従来のUSBに準拠するデバイスでも対応していれば使用可能である。

概要 
UASは、「UAS」仕様と呼ばれるT10「USB Attached SCSI」（T10 / 2095-D）と、USB「Universal Serial Bus Mass Storage Class - USB Attached SCSI Protocol (UASP)」仕様の2つの規格にわたって定義されている。UASの仕様は、 国際情報技術標準委員会 (INCITS) のT10技術委員会が開発・保守している。 また、SCSI Trade Association (SCSITA) が、UAS技術を推進している。USBマスストレージデバイスクラス (MSC) ワーキンググループは、UASPの仕様を開発・保守している。 USB Implementers Forum (USB-IF) はUASP技術を推進している。 

UASドライバーは通常、従来のバルク転送 (BOT) ドライバーと比較して、一般的に高速にデータ転送が行える。また、UASはUSB 3.0標準として追加されたが、互換性のあるハードウェアであれば、USB 2.0環境においても使用できる。 

SSDで使用する場合、UASはランダムな読み取り・書き込みにおいてはBOTよりもかなり高速だが、ネイティブSATA 3インターフェースの速度 (6 Gbps) を大きく下回っている。

ハードウェアサポート 
SemiAccurateによる2010年7月の簡単なハードウェアラウンドアップでは、 Gigabyte TechnologyがNEC/Renesasチップを使用しているボード用のUASドライバーを導入しており、少なくともハードウェアレベルでは、LucidPort USB 300およびUSB302、 Symwave SW6315、 Texas Instruments TUSB9260とVLI VL700コントローラーは完全にUASPをサポートしているが、ASMedia ASM1051とASM1051E、およびFujitsu MB86C30Aはサポートしていない。 

2011年8月のVR-Zoneによる比較パフォーマンスレビューでは、NEC/RenesasチップのみがUASドライバーを備えていると結論付けられている。同じルネサスのUASドライバー（Windows用）は、AMDのA70MおよびA75フュージョンコントローラーハブでも動作する。2011年10月には、ASMediaチップもドライバーのサポートを受けている（以前はハードウェア側でサポートしていた）。富士通は、UASをサポートするMB86C311Aのようなハイエンドチップをいくつかリストアップしている。 

インテルプラットフォームコントローラーハブ (PCH) によるサポートについては、MyCEの記事で「ネイティブのIntel USB3 UASPソリューションはWindows 8でのみサポートされている」「すべてのZ77マザーボードでサポートされているわけではない」「UASPの実装にはライセンスが必要であり、全マザーボードメーカーがコストを製品に転嫁している状況ではない」と書かれている。

オペレーティングシステムのサポート 
マイクロソフトは、UASのネイティブサポートをWindows 8以降に追加した。UASをサポートするドライブは、従来のUsbstor.sysではなくUaspstor.sysをロードする。Windows 8以降は、USB 2.0を介してのUASもデフォルトでサポートしている。UASのドライバーと製品は、 Windowsハードウェア認定キットを使用してマイクロソフトによって認定されている。 

AppleはOS X 10.8 Mountain LionにUASのネイティブサポートを追加した。UASを使用するドライブがシステム情報内に表示される。対応しているのに未ロードとして表示されているドライブは、従来のバルク転送 (BOT) モードで機能している。これは、ドライブのUSBコントローラ、MacのUSBポート、または接続されているUSBハブがUASPモードをサポートしていない場合に発生することがある。 

Linuxカーネルでは、バージョン3.15がリリースされた2014年6月8日以降、UASをサポートしている 。ただし、Ubuntu（v11.xx以降）などの一部のLinuxディストリビューションでは、UASプロトコルの実装に関する問題が発生している。一部のUAS非対応USB HDDでは、ドライブがオペレーティングシステムからマウントできない。回避策として modprobeのUASモジュールをブラックリストに登録する必要があるとされている。

達成された事項 
 USBマスストレージデバイスクラスのバルク転送 (BOT) の障害に直接対処するように設計 
 USBマスストレージデバイスのコマンドキューイングと順不同の完了を有効化 
 SCSIコマンドフェーズのソフトウェアオーバーヘッドを排除 
 SSDのTRIM (SCSIではUNMAP) 操作を有効化 
 最大64 Kのコマンドをキューに入れることが可能 
 SCSI SAM-4に準拠 
 USB 3.0 SuperSpeedおよびUSB 2.0 High-Speedバージョンでの定義 
 USB 3.0 SuperSpeed –ホストコントローラー (xHCI) ハードウェアサポート、アウトオブオーダーコマンドのソフトウェアオーバーヘッド排除 
 USB 2.0 High-speed– USB 2.0ドライブでのコマンドキューイングを大幅に有効化 
 UASの順不同の完了をサポートするために、ストリームをUSB 3.0 SuperSpeedプロトコルに追加 
 USB 3ホストコントローラー (xHCI) でストリームのハードウェアサポートを提供

参考文献

外部リンク 

 USB Attached SCSI Protocol (UASP) v1.0 and Adopters Agreement, 2009-06-24
 , 2013-03-04
 USB Attached SCSI (UAS) (data on t10.org)
 USB Attached SCSI Protocol (UASP) (PDF)

USB
SCSI