大原雄介の最新インターフェイス動向

Serial ATA 3.0編その2



 SATA-IOというかSerial ATA Working Groupが最初に制定したSerial ATA 1.0は、ハードウェアの構造が大きく変化するため、プロトコルに関してはほとんど従来のATA/ATAPI-5をそのまま継承したものになっている。この理由は簡単だ。

 実のところSerial ATAという規格を作ったからといって、直ちに市場のHDDがすべてSATAに切り替わるわけではない。したがって当初は混在環境となるのは必須だったし、このためにSATA/PATAのブリッジなどが利用されることが予想された。なので、プロトコルをいろいろいじってしまうと、SATA/PATAブリッジで単に電気レベルの変換のみならずプロトコル変換まで必要になってしまい、ブリッジの製造が難しくなるからだ。

 ただ、そうは言っても完全に1対1とはならないという実情がある。ATA/ATAPI-5で定義された信号は31本ある。このうちデータが16本、アドレスが3本、Cable Select/Chip Selectが3本、ほかに各種制御信号やDMA/Interrupt関係などもある。「では31というか、きりがいいから32bitということにして、これをシリアルで全部送ろう」という事にすると、えらく無駄が多くなる。

 Serial ATA 1.0は信号速度が1.5GT/sで、8b/10b変換を使っている関係で、実効転送速度は150MB/secということになっているが、これはあくまで帯域を全部データにあてて転送した場合で、データ以外に制御信号系なども同時に送るようにすると、実効転送速度は75MB/secにまで落ちてしまう計算になる。さすがにこれは使い物にならないので、Serial ATAでは独自のフレーム構造を定義し、コマンドとデータを多重化する形でこれに対処するようにしている。とはいえ、これはそれほど難しいものではなく、比較的容易にブリッジ類を実装できるものだった。

 そんなわけでSerial ATA 1.0は、大きな問題もなく立ち上がりはじめた。細かいところでは、Marvellの初期のSATAコントローラは、ATAPIデバイス接続時のハンドリングに若干問題があったりはしたが、当時はほとんどのATAPIデバイスがまだパラレルのままで、現実問題としてSATAポートに接続するケースはむしろ例外的だったから、大きな問題とはならなかった。

 チップセットでは、Intelが2003年にICH5でSATAを2ポート搭載し、また同時期に主要HDDベンダーも一斉にSATAモデルをリリースすることで、順調に市場が拡大していった。ちなみにこの時期、PATAモデルに比べてSATAモデルはやや割高に設定されていたが、それでもそれなりに製品が売れたのは、PATAでは得られない特徴があったからだ。

SATAケーブル(上)とPATAケーブル(下)_

 それは配線の柔軟性である。特にRAIDなどを組む場合、PATAだとスマートケーブルを使ってもまだケーブルはかなり太く、特に4chのRAIDカードとかを使うと、カード周辺の配線やエアフローにはかなり問題が生じるケースが多かった。またPATAの場合、ケーブル長は最大45.7cm(18inch)が許される最大長で、フルタワーとかサーバーケースでは「ケーブルが届かない」という話も頻発した。このため、規格外となる60cmオーバーのケーブルとかも販売されていたが、今度はデータ転送の安定性に問題が出るといった具合で、なかなかうまくいかなかった。

 ところがSATAではケーブル長は最大1mだし、ケーブルそのものも遥かに細く、フルタワーやサーバーケースでも配線やエアフローの問題が出にくくなる。これだけでも、ある種のユーザーにはPATAからSATAへ移行するには十分な動機だったと言える。また、続くICH6からはPATAポートの数が減らされ、ICH8からはPATAそのものが削除されるに至る。そのため、特にOEM向けの製品は早期にSATA HDDへの切り替えを余儀なくされ、これが結果的にSATAとPATAのコスト差を無くす大きな要因になったと思われる。

 ちなみに旧ATIやNVIDIA、VIAやSiSといった互換チップセットベンダーは引き続きPATAのサポートを行なっていたが、Intelから1~2年遅れてこちらも次第にサポートを減らし始める。ただICH8でPATAポートがなくなった時点でも、現実問題として光学ドライブのサポートが必要であり、このためオンボードでLPC/PCI/PCI Expressなどで接続されるPATAコントローラが別途搭載され、これに接続する形が自作マーケット向けには一般的だった。、一方OEM向けでは、同様に別途PATAコントローラを搭載するか、もしくは光学ドライブ側に外付けでSATA/PATAブリッジが搭載される形が多かった。

 そういった形でSerial ATA 1.0は比較的順調にリリースされたのだが、これに続くところで混乱が発生した。もともとSerial ATA 1.0の仕様の中には、次世代および次々世代におけるロードマップが簡単に記されていた。表1がその内容であるが、これに従えば第2世代は3Gbpsの転送速度(実効転送速度は300MB/sec)を持つ規格になるはずであった。実際ちゃんとそうなったのだが、その途中でちょっと変なことになったのだった。

【表1】Serial ATA 1.0リリース時の仕様

Generation 1Generation 2Generation 3
転送速度(8b側)1.2Gbps2.4Gbps4.8Gbps
転送速度(10b側)1.5Gbps3.0Gbps6.0Gbps
導入予定時期2001年中旬2004年中旬2007年中旬
コネクタ
Gen1と同じアップグレード可能
ケーブル
Gen1と同じアップグレード可能
信号互換性
Gen1と互換性ありGen2と互換性あり。多分
Gen1とも互換性あり

 Serial ATA Working Groupは2002年に次世代Serial ATAを検討するSerial ATA II Working Groupを発足させ、これが最終的に2004年9月にSATA-IOとなるわけだが、これに先立ち2003年9月にはDigital 1.1、Port Multiplier 1.1、Port Selector 1.0といった仕様を標準化する。Serial ATA Digital 1.1では

・Hot Plug実行時のAsynchronous Signal Recoveryのサポート(*1)
・ATAPIデバイスのメディア交換に伴うAsyncronous Notificationのサポート
・大きなデータ転送時のQueuingの最適化(いわゆるNCQ:Native Command Queuing)
・HDDのSATA非互換機能の無効化のサポート
・SAF-TE/SESマネジメントプロトコルのサポート
・I2Cのサポート

といった項目が追加されたほか、Port SelectorやPort Multiplierのサポートにより、1本のSATAポートに複数のHDDをぶら下げる事が可能になった。これらの仕様は、2003年1月に公開されたSerial ATA 1.0aに対するアップデートという形で公開されており、このSerial ATA 1.0a+Digital 1.1+Port Multiplier 1.1+Port Selector 1.0を併せたものをSerial ATA IIとして2004年8月に公開する。問題はこのSerial ATA IIは、Serial ATA Gen2と異なっていたことだ。つまり転送速度は1.5Gbpsを前提とした規格なのだ。もちろん仕様の中には「Gen 2の場合にはこうなる」と記述された箇所がいくつもあり、将来的にはGen 2に対応することを念頭に置いていたが、これはオプションという扱いであった。

(*1) Hot Plug/UnplugがSATAで正式にサポートされるのは、SATA Revision 2.5以降であり、これ以前についてはベンダーが独自にHot Plug/Unplugをサポートする形になっている。この項目も、ベンダーが独自にサポートすることを前提にした拡張である。

 その一方2004年4月に開催されたIDF BarcelonaでSerial ATA Working GroupはGen 2相当の3Gbpsの転送デモを行なっており、これ以後HDDベンダーなどから3Gbps対応を謳った製品が登場し始め、コントローラの側にも3Gbps対応製品が登場しはじめる。この結果、2004年後半からマーケットには、表2の様な4種類の製品が混在することになった。

【表2】3GbpsとNCQへの対応状況

SATA 1.0aSATA II
Genelation 11.5Gbps NCQなし1.5Gbps NCQあり
Generation 23Gbps NCQなし3Gbps NCQあり

 NCQ有り無しというのは、要するにSATA IIに本当に準拠しているか否かである。このうち、1.5GbpsでNCQなし(ピンク色)は、SATA Iなどと称されており、これはこれで問題ない。また3GbpsでNCQあり(緑色)はSATA IIと称されて販売されており、これも問題はない。問題は残る2つで、1.5GbpsながらNCQあり(黄色)は本来SATA IIとしては問題ない組み合わせなのだが、実はこれはあまり多く出回らなかった。そして、一番多いのが3GbpsでNCQなし(水色)のパターンである。これは本来SATA IIと称してはいけない製品なのだが、要するに「3Gbps対応だからSATA IIである」というロジックで勝手にベンダーがそう称して販売を行なっていた。

 加えてもう1つ問題だったのは、ソフトウェア側の対応である。Serial ATA 1.0/1.0aは基本的にATA/ATAPI-5と互換だから、ソフトウェアから見ればこれは単なるIDEとして扱うことが可能だし、事実最初はそういう形で利用された。これはこれでいいのだが、問題はNCQを初めとする機能拡張や、Gen 2で利用できる3Gbpsの転送速度を使いたい場合で、これらはATA/ATAPI-5と互換性がないから、そのままでは使えない。

 こうした機能拡張部分を使うためのソフトウェア側の対応がAHCI(Advanced Host Controller Interface)である。こちらはRevision 1.0が2004年2月にIntelよりリリースされており、前述したSATA IIの中にはこのAHCIの仕様も含むと一般には解釈される。

 もっとも初期のSATA IIの仕様の中を見ると、Referenceの項目にもAHCIの仕様が列挙されておらず、「Host Controller Registers and Hardware Requirements」という章で、AHCIが定義しているのとほぼ同じレジスタ構成が列挙されるという形になっている。実はAHCIはIntelが定めた規格なのでこうした形になっているわけだが、無償で公開されており、各コントローラベンダーはこのAHCIを利用して、これに準拠したドライバを提供している。

 ところが、そのAHCIのドライバが、当初は決して完成度が高くなかった。そもそも、SATA IIの拡張機能を使うためにはAHCIドライバが必要、という事そのものも余り周知されていなかったから、「SATA II対応なのに性能が出ない」とかいう話になった時に、「それが本当にSATA IIに対応しているものなのか?」という問題と「AHCIを使っているのか?」という問題の両方が絡む、きわめて複雑な状況に陥ってしまった。

 最終的にはこの混乱、HDDとコントローラの両方がGen 2かつSATA IIに対応した製品が普通に出回るようになったことで収束を見せたが、これに懲りたSATA-IOは、以後「SATA II」とか「SATA III」といった用語を使わない事を決める(http://www.serialata.org/developers/naming_guidelines.asp)。また仕様に関しても、転送速度と機能を別々の仕様で出したのがそもそもの混乱の原因だとして、両者を統合することにした。これが2005年10月にリリースされた、SATA Revision 2.5である。このSATA Revision 2.5は

・Serial ATA revision 1.0a
・Serial ATA II: Extensions to Serial ATA 1.0a revision 1.2
・Serial ATA II: Erectrical Specification 1.0
・Serial ATA II: Cable and Connectors Volume 1 revision 1.0
・Serial ATA II: Cable and Connectors Volume 2 revision 1.0
・Serial ATA II: Port Multiplier revision 1.2
・Serial ATA II: Port Selector revision 1.0

の各仕様と、いくつかのECN(Engeneering Change Notification:要するに間違いの修正である)をまとめて1つにしたものである。この段階では一切新しい機能は入っていない。このSATA Revision 2.5へのECNと、いくつかの新機能を追加したのが2007年3月にリリースされたSATA Revision 2.6となる。こちらでは

・Internal Slimline cable and connector
・Internal Micro SATA connector for 1.8" HDD
・Mini SATA Internal Multilane cable and connector
・Mini SATA External Multilane cable and connector
・NCQ Priority
・NCQ Unload
・Enhancements to the BIST Activate FIS
・Enhancements for robust reception of the Signature FIS

といった項目が追加されている。最初の4つは、より小型のフォームファクタ向けに新しいコネクタ/ケーブルを策定したという話で、最後の2つはHDD管理機能(というか、システム管理機能に対するレポーティング機能)を強化したという話で、残る2つがNCQの拡張である。

 もっとも、このSATA Revision 2.6に完全準拠したコントローラあるいはHDDは今のところ市場には出ていない。サーバ向けのSASドライブあるいはSASのコントローラの中にはFIS周りの拡張を取り込んだものもあるが、NCQの拡張はいろいろ実装が大変とあって、当分見送りになるようだ。おそらくはSATA 6Gbpsの製品が登場する頃には実装例も出てくるのではないかと想像される。ということで、次回はやっとSATA 6Gbpsの話である。

バックナンバー

(2009年 6月 30日)

[Text by 大原 雄介]