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

Serial ATA 3.0編その3



 さて、今回はいよいよSATA Revision 3.0の話である。SATA-IOは当初、遅くても2008年中にSATA 3.0の標準化を済ます予定だったが、実際にはスケジュールが大分遅延して2009年6月にリリースされることになった。この結果、SATA Revision 2.6→SATA Revision 3.0では単にスピードが6Gbpsに向上したという以上に、多くの項目が追加されることになった。一覧を示すと、まずECN(Engeneering Change Notice:PCI-SIGの場合は新機能もECNに含まれるが、SATA-IOではエラー修正のみ)では

・ECN001:Slimline Bump Correction
・ECN002:Bump Correction
・ECN003:State Name Corrections
・ECN004:ATA Log & Subcode reservations
・ECN006:fbaud/10 Jitter Parameter Removal
・ECN008:fbaud/500 Jitter Parameter Clarification
・ECN009:Correcting LBP references in the COMP data pattern and other locations
・ECN010:Power State Resume Speed
・ECN011:Data validity clarifications
・ECN012:Cable & Connector Retention
・ECN013:Section 13 Corrections
・ECN014:PACKET State Names
・ECN016:Long Term Frequency Accuracy and SSC Profile Tests for Transmitters
・ECN017:OOB Burst/Gap Duration Clarification
・ECN018:Figure 69 Pin Location Correction
・ECN019:Cable ISI Test Source Risetime
・ECN021:External plug height
・ECN022:Editorial cleanup - 8KB, IDENTIFY DEVICE
・ECN023:L-Key Opening Correction (Slimline Host Receptacle Connector)
・ECN024:Contact Current Rating procedure
・ECN025:Rise Time Measurements
・ECN026:Gen 3i TX TJ Measurement Location
・ECN027:Gen3i Rx Differential Return Loss Text Description and Figure Change:Clarification Only
・ECN028:Clarification of Test Patterns for Measurement Defined in 7.2 Electrical Specification
・ECN029:Addition of Pattern to the TX AC Common Mode Voltage (Gen3i) Measurement
・ECN031:Correction to ECN 004
・ECN032:Correction to TX AC Common Mode Voltage Table Value 'Units'
・ECN033:Definition of Terms
・ECN034:Corrections to Technical Proposal 005
・ECN035:Clarification of Words 76 to 79
・ECN036:LIF-SATA Clarifications
・ECN037:Changes made by Technical Integration Work Group
・ECN038:Key clarification and the following new features and enhancements

といった項目が含まれている。このECN自身はSATA-IOのサイトで個別に公開もされている。ECN027とか029のように、まだRevision 2.6に対するものにも関わらずGen 3の信号の取り扱いの規定が入っていたりするが、これはRevision 2.6の仕様をベースにGen 3の策定を行なう中で、ワーキンググループが必要と思われる修正を先行してECNの形で発行したものである。

 それとは別にTP(Technical Proposal:技術提案書)の形で仕様拡張も行なわれており、

・TP002:Gen3 register assignments
・TP004:NCQ Clarifications
・TP005:SATA Speed Indicator in ID String
・TP007:Automatic Partial to Slumber Transitions
・TP009:LIF Connector for 1.8" HDD for SATA Revision 2.6
・TP010:Serial ATA NCQ Streaming Command
・TP011:Serial ATA NCQ QUEUE MANAGEMENT Command
・TP012:Gen 1 Clock to Data Jitter Definition
・TP013:Connector for 7 mm slimline drives
・TP014:Allow READ LOG DMA EXT to Clear NCQ Error
・TP015:Remove Device Register from Signature
・TP016:Add Write-Read-Verify to SSP support
・TP017:Align SATA 2.6 with ATA8-ACS
・TP018:Specification Revisions For Gen3i

といった項目が並んでいる。もっとも、項目を見ておわかりのとおり、明確な機能追加としてはTP010のNCQ Streaming CommandとTP011のNCQ Queue Management程度で、後は機能面での追加というよりは不明確な項目の整理といった側面が強い。

 さて、では肝心のGen3はというと、これは純粋に3GT/sec→6GT/secに速度を倍にしただけである。PCIeではPHYの動作速度の制約などもあり、5GT/sec→10GT/secに移行するのを断念し、5GT/sec→8GT/secに速度を落とし、これを補うために8b/10bエンコードを128b/130bエンコードに変換する形でオーバーヘッドを減らして帳尻を合わせたが、SATAでは6GT/secでまだ余裕があると判断したためだろう。単純に速度を増やしただけで、特に新しい通信技術などは導入されていない。

 もちろん電気的特性に関しては、Gen1/Gen2よりも大分厳しくなっている部分もあり、たとえばジッターに関してはGen1/Gen2とは異なる測定方法が採用されており、さすがに信号速度が上がった分、マージンの確保が難しくなっていることを伺わせる。

 ただ、PCIe Gen3のように標準的なイコライザーなどの提示はなされず、あくまで「この基準を満たせばOK」という形になっている。なので実際の実装は各社に任されている形だが、主要なHDDベンダーやコントローラベンダーは、既に自社でこうした高速信号を扱うための回路を保持しており、しかも特許で固められている事は容易に想像ができる。なので、PCI-SIGと異なり、無理に標準化した回路を提示するのではなく、あくまで信号と測定方法の基準だけを示し、各社は自社の持つ回路をそのまま使えるように配慮したものだと想像できる。

 ところで上では「速度を倍にしただけ」と簡単に書いたが、実際にはもう少し差がある。元々SATAでは、Gen1/Gen2ではそれぞれ3種類の接続方式が規定されている。仕様では、それぞれ Gen1i/Gen1m/Gen1x/Gen2i/Gen2m/Gen2x と表現されている。ここで接尾語だが

i: 内部接続(Internal)用。ケーブルは1m以内
m: 短距離(Middle?)接続用。短いバックプレーンとか、限定サイズの外部ケーブル接続など。最大2m以内。eSATAで専ら利用される。
x: 長距離(Extreme?)接続用。2m以上の距離で利用。xSATAで専ら利用される。

と定められており、それでもiとmの電気的特性はほぼ一緒(微妙に異なるケースもある)だが、xに関しては明らかに異なっている。たとえばVdiffTX(TX Differential Output Voltage:送信側の電位差)について、最低は400mVppdで統一されているが、最大は

Gen1i/Gen1m:600mVppd
Gen2i/Gen2m:700mVppd
Gen1x/Gen2x:1,600mVppd

と異なっている(ちなみにGen3では最小240mVppd/最大900mVppd)。ほかにも違いはいくつかあり、このため規格に厳密に則るためには、ちゃんとレベル変換を途中で入れる必要がある。このあたりはちゃんと規格にも盛り込まれており、ケースの内部の接続用は通常のGen1/2/3iで済むが(写真1)、ケーブル経由で外部接続を行なう場合、ケーブルはGen1/2m、ケース内部はGen1/2/3iという形で信号のレベル変換を行なうことになる。

 さて問題はここからである。既にお気づきの読者もおられようが、Gen3では内部接続のGen3iのみが策定されており、eSATA向けのGen3mとかxSATA向けのGen3xは定義そのものが無い。これに関して1年半ほど前にSATA-IOに話を伺った限りでは「そもそもニーズが無い」ということで、少なくともその時点ではGen3m/Gen3xに関するワーキンググループなどは存在していないという話だった。ところが昨今では特にSSDの高速化に伴い、既にGen2を超える帯域を必要とするストレージが存在しており、こうしたデバイスの外部接続に向けてSATA Revision 3.1という形でGen3m/3xの策定に関して作業が進んでいるそうだ。

【写真1】これはSerial ATA Revision 3.0のFigure 5より抜粋。オンボードのSATAコネクタからSATAケーブル経由で接続する図【写真2】同じくFigure 10より抜粋。eSATAは概ねこの形で接続されることになる

 もっとも、もともと外部接続については、大量のHDDを搭載したストレージボックスを接続する場合に備え、2レーン/4レーンケーブルの仕様が定められていた。自作マーケットでこれを見かけるのはレア(一部のRAIDコントローラが、内蔵用2レーン/4レーン用のコネクタを搭載していた程度だ)ではあるが、これはGen1の頃から制定されていたものである。一般には写真3のように、最大4台のHDDを1つのコネクタで接続する場合に利用するが、適切なブリッジを経由して、4本のレーンを論理的に1本のレーンとして扱う事も当初から想定されている(もちろんこれにはブリッジのみならずホストコントローラ側の対応も必要になるから、どんなものでもこれが可能というわけではない)。もっと大規模な、たとえば8レーンとか16レーンといったものについては、この4レーンケーブルを複数使えば構築できるわけで、外部接続については当面3GT/secとなるGen2m/Gen2xが最高速のままであり、Gen3はあくまで内部接続のGen3iに限られているのが、現時点における従来との最大の相違点といえる。

【写真3】同じくFigure 45より抜粋。RAIDコントローラの場合、たとえば8台とか16台を接続できる場合、基板の上にSATAコネクタを16個搭載するのは収まりが悪い。そんな場合、4レーン用のコネクタにこのケーブルを組み合わせれば、コネクタの数をずっと減らすことができる【写真4】同じくFigure 9より抜粋。本来は4台以上のストレージを、ポートマルチプライヤーを使わずに接続する場合を想定しているが、このあたりはベンダーの実装に任されているので、ブリッジとホストコントローラが2/4レーンを同時に使っての一種のトランキングを行なうことは禁止されていない。なので理論上は、Gen1でも合計600MB/sec、Gen2では1.2GB/secの帯域が利用できることになる

 逆に、Gen1~Gen3で一切変わらないのが、コネクタとケーブルである。これに関しては、そもそも「Gen3の設計目標はGen1/Gen2との相互運用性だ」と2007年にKnut Grimsrud(SATA-IOの前President兼Chairman:現在はVice President)氏は述べており、この目標は最終的に達成された。コネクタ及びケーブルに関する仕様は仕様書の第6章に規定されており、このうち内部接続用のケーブルに関しては6.1の“Internal cables and connectors”にスペックが定められているが、ここにはスピードに関する記述は一切無く、つまりGen1i~Gen3iまで、全て同じスペックで動作することになっている(*1)。

 なぜこのような話を書くかといえば、実際にはこういった製品が発売されたりしているからだ。この根っこにあるのは、要するにSATAケーブルの中には、SATA-IOの定めるケーブルの要件を満たさないものが、広く出回っている事にある。特にSATAが普及した初期の頃のケーブルの中には、1.5GT/secではなんとか通信できても、6GT/secはおろか3GT/secでは全然無理、といったものがかなり紛れていたことは筆者も経験している。幸か不幸かSATAは接続の際に「Speed Negotiation」の機能を搭載しており、インターフェイスなりデバイスなりの本来の速度で接続できない場合は、速度を落として再接続を試みるという機能がある。なので、ほとんどの場合は1.5GT/secで接続が行なわれることになり、「一見繋がっているのだが性能が出ない」といった現象に見舞われることになる。

 残念ながらこうしたケーブルに起因する速度低下は外部から見てわかるものではないし、SATAのケーブルテスターは洒落にならない金額なので、一番確実なのはSSDあたりを接続して転送速度を測定する事になる。これでピークが300MB/secを超えていれば6GT/secで接続できるケーブルであり、300MB/secで頭打ちになっていればやや品質が悪く3GT/secどまり、150MB/secで頭打ちならば恐ろしく品質が悪いので1.5GT/secどまり、となるわけだ。

 この話は別に今に始まったわけではなく、Gen2の頃からこうした問題は出ていたが、SATA-IO自身はこれに関して特に動く予定は無いというか、たとえばコンプライアンステストを通った製品にロゴを付加するといったキャンペーンは(過去に販売したケーブルは使えない、と言っているのと同義語なので)むしろ相互運用性を損なう事になりかねないとしており、引き続きケーブルに関しては、ごちゃごちゃのままの環境が続くことになりそうである。


 最後に、今後の展開についてちょっと触れておきたい。SATA-IOの方は(先に述べた通り)現在Revision 3.1の策定を進めている最中だが、このSATAと互換性を持つSAS(Serial Attached SCSI)の方は一歩先を進んでおり、現在SAS-2.1とSAS-3.0の作業を進めている。

 元となるのは2009年4月にINCITSのTechnical Committee T10が策定したSerial Attached SCSI-2(SAS-2)で、最終的にはINCITS 457-2010として標準化がなされる予定だが、現状公開されているのはまだ正式採番が済む前のWorking DraftであるT10/1760-Dである(といっても中身は変わらないが)。このSAS-2では1.5/3/6GT/secで接続され、SATAと互換性のあるケーブルやコネクタを使い、電気的特性も互換のSCSI接続を定義している。要するにSASとSATAは電気的に全く一緒で、上位のプロトコルがSCSIなのかATAなのか、という事でしかない。RAIDコントローラの中にはSATA/SAS両対応の製品がいくつかあるが、それは電気的には全く共通だから実現したことでもある。

 さてこのSAS-2をベースに、プロトコル拡張(1つのデバイスで複数のSASポートを持つ、「Wide port」と呼ばれるデバイスのサポート、電源管理、「Active Cable」のサポート)などを追加したもので、現在T10のワークグループの中では仕様の承認が終わっており、現在はINCITSの承認待ちという段階である。このSAS-2.1では物理層の変更は一切無い。

 これに続き、現在もまだ仕様策定作業が続いているのがSAS-3.0である。こちらは12GT/secをターゲットにしたもので、当初は8b/10bエンコードのまま12GT/secとするほかに64b/66bエンコードに切り替えて10GT/secとする案も出ていたが、こちらは後方互換性を保ちにくいと判断されたためか廃案になっている。このSAS-3では最終的に24GT/secまでのヘッドルームを持たせるべきかどうかの検討も同時になされており、更には光ケーブルを使うことも検討課題に入っている。

 ただ、T10でのワーキングドキュメントを読む限り、難易度はPCIe Gen3の比では無いようで、高価格が許容されるサーバー向けのSASはともかく、低価格が要求されるSATAにこれを持ち込むことができるかどうかは現状未知数である。おそらく今年中にはSATA Revision 3.1の登場時期がもう少しはっきり確定すると思われるが、このあたりになればSATA-IOが今後どちらの方向に向かうのかはもう少し明確になるだろう。

 1つの方向性はSATA Revision 4.0という形で12GT/secを目指すことだ。しかしながら、そもそも現状でもSATA 3.0が必要なのはSSDに限られており、通常のHDDは(容量はともかく転送速度が)SATA 3.0で足りなくなるまでかなり時間が掛かりそうである。もう1つはSAS-2.1に倣って、Wide portデバイスを、例えばSATA 3.2といった形でサポートする事だろう。どちらかといえば後者の可能性が強いように筆者には思える。

(*1) 厳密に言えば、6.1.11の“Internal Multilane cables”で、確認事項の中に
“Performance supporting 1.5 Gbps and 3.0 Gbps.”
という記述があり、Gen3iに関しては言及がなされていない。これはGen3iでは写真3のようなMultlane cableが“Feature specific”(要するにオプション扱い)になっていることと関連する。Gen1i/Gen2iではこれのサポートはRequired(必須扱い)なので言及されているというわけだ。

バックナンバー

(2010年 7月 22日)

[Text by 大原 雄介]