強力な USB 3.0 サポート体制の構築

Windows を大きな "エコシステム" の一員として位置付けると、その役割の 1 つとして、新しいハードウェアに対するサポート体制の構築が重要になります。これはなかなか複雑なプロセスですので、まず、この記事では USB 3.0 のサポートについて取り上げます。USB 3.0 にはさまざまなメリットがありますので、皆さんも心待ちにしておられることと思います。またこれは、このブログで初めてのビデオ投稿でもあります。"エンジニアリング" のビデオですので作品としてのクオリティは高くありませんが、お伝えしたいことは表現できていると思います (ビデオは HTML5 で埋め込まれており、ダウンロードも可能です)。ビデオをご覧になると、ファイルをコピーする際のインジケーターが若干古いのが気になる方もいらっしゃるかもしれませんが (私もそうなのですが)、どうぞ今後にご注目ください。なお、この記事は、デバイス/ネットワーキング グループ プログラム管理ディレクター Dennis Flanagan が作成したものです。–Steven

USB 3.0 には、USB 2.0 の 10 倍のスループット速度と、バッテリ寿命を長く保つ電源管理という特徴があります。これらの利点を活かすために、世界で最も普及した PC インターフェイスが、ついにアップグレードされる局面を迎えました。2015 年までにすべての新しい PC に USB 3.0 ポートが装備され、2015 年だけで 20 億個を超える新しい SuperSpeed USB (USB 3.0) デバイスが販売されることになるでしょう。

図 1 - USB 3 の PC 市場予測
2011 年 6 月インスタット社調べ

図 2 - USB デバイス市場予測 (2011 年 6 月)
2011 年 6 月インスタット社調べ

USB 3.0 に投資しようという決断は簡単でしたが、それを実行に移しつつ既存の USB エコシステムを維持するという難問の解決は、容易ではありませんでした。今後間違いなく伸びてくる USB 3.0 ハードウェアに対応するには、改訂版の 3.0 規格に厳密に準拠した設計にする必要があります。しかしそれと同時に、依然として何十億個という旧 USB デバイスが存在することも事実であり、Windows ではこれらとの互換性を保っておく必要があります。では、1 つのソフトウェアが、進化しつつあるハードウェアで最新のテクノロジに対応するという要件も、世界中の家庭や職場に存在する 100 億個もの既存デバイスをきちんとサポートするという要件も満たすには、どうすればよいのでしょうか。

USB の歴史

1996 年に USB 標準化団体からリリースされた最初の USB 規格では、USB デバイスの速度として、LS (Low Speed、1.5 Mbps) および FS (Full Speed、12 Mbps) の 2 種類が定義されていました。当時、デバイスの "ホット プラグ" (リブートせずにデバイスを接続したり取り外したりできること) という考え方は画期的でした。また、USB では複数のデータ転送方式がサポートされていました。バルク転送はプリンターなど、大量のデータを送信してその後は関与しないタイプのデバイスを対象にしたもの、アイソクラナス転送はスピーカーなど、特定の順序で連続的にデータを受け取るデバイスを対象にしたもので、インタラプト転送はキーボードなど、必要時にのみデータを送信するデバイスを対象にしたものです。

1996 年の規格は、接続の複雑さを USB デバイスから PC に引き渡すものでもありました。これによって、デバイスの価格を安くし、実装も容易にすることができたのです。このような特徴を持つ USB は、最も魅力的な外部デバイス コネクタとして認識されるようになりました。その結果、各デバイス メーカーは USB を採用したばかりか、多種多様なデバイスをサポートするために、ソフトウェアとハードウェアをつなぐ共通のインターフェイスを規定しようとする標準化団体に参加しました。このような共通インターフェイスがあれば、クラス ドライバーという単一のソフトウェア ドライバーによって、あらゆるタイプのデバイスをサポートすることが可能になります。マイクロソフトでは、当初より USB のテクノロジと標準化団体を支持し、何年にもわたり多数の規格作成に協力してきました。Windows 95 OSR 2 には、USB 1.1 のサポートが組み込まれました。

2000 年には、新しく 480 Mbps の HS (High Speed) モードを盛り込んだ USB 2.0 規格が発表されました。残念なことに、このときのホスト コントローラー (PC をデバイスに接続するために使用するハードウェア) には、それより前のバージョンとの互換性がありませんでした。HS デバイスはすべてのコントローラーでサポートされていましたが、LS デバイスおよび FS デバイスは USB 2.0 コントローラーでサポートされませんでした。あらゆるタイプのデバイスをサポートするために、PC は 2 種類のコントローラーを搭載するか、USB 2.0 ハブを埋め込んで出荷しなければなりませんでした。Windows XP SP1 では、USB 2.0 機能を追加して、それまでのソフトウェア ドライバー スタックを強化しました。

USB 3 への道のり: 基盤となる強固な仕様の策定

マイクロソフトでは USB 標準化団体に積極的に参加し、支援を続けました。その結果、機能性と相互運用性を併せ持つ仕様が作成されました。USB Implementers Forum の他のメンバーと同様、私たちも、今まで以上に転送速度と電力効率に優れ、しかも USB 2.0 とは異なりハードウェアとソフトウェアの単一の組み合わせであらゆる USB デバイスに対応できる、新しい USB を望んでいました。

2008 年、USB 標準化団体は、新しい USB 3.0 規格をリリースしました。これには、新しいホスト コントローラーが含まれ、新しい "SuperSpeed" USB デバイス (5 Gbps) が定義されています。このコントローラーとデバイスの組み合わせは、理論上、最高で USB 2.0 の 10 倍の転送速度を実現するものです。たとえば、USB ストレージ ドライブにあるハイビジョン画質の映画をコピーする場合、USB 2.0 では 15 分ほどかかりますが、この新しい標準では約 80 秒以内にコピーが完了することになります。この規格では、ストレージ デバイスによる入出力処理の効率を高めた "ストリーム" という新しい転送方式も導入されました。

新しい規格では、USB 2.0 より 80% 高い給電能力が実現しました。これにより充電速度は向上し、外部 DVD ドライブなど電力消費量の多いデバイスに使用されていた Y 字ケーブルも不要になります。ただし、電源管理に関して考慮すべきことは、これだけではありません。モバイル コンピューティングの普及に伴い、昨今では、バッテリを長持ちさせるための工夫が PC に求められるようになりました。これを受け、USB 3.0 では、新しい省電力状態の導入およびタスク実行の高速化に加え、あらゆる機会をとらえて電源供給を止めることにより、従来のバージョンより電力効率を高めています。つまり、ノートブック PC ではバッテリ寿命が長くなり、デスクトップ PC では電力消費量が少なくなるのです。

しかしこの規格に関して何よりも大切なことは、新世代の USB への対応を保証しつつ、FS、LS、および HS のデバイスとの互換性が維持されるという点です。プラグに至るまで、下位互換性が確保されています。

ハードウェア業界との緊密なパートナーシップ

マイクロソフトで Windows の設計が始まり、最初の難関が訪れたのは、この規格の基盤が固まり始めたころでした。Windows 95 OSR2 から少しずつ修正を重ねてきた既存の USB ソフトウェアに更新を加えるべきか、それとも最新の設計原則に沿って新しいソフトウェアを開発すべきかという決断を迫られたのです。マイクロソフトの既存ソフトウェアとその動作に依存しているデバイスとそのドライバーは無数にあります。それを考えると、まったく新しい設計へと安易に移行するわけにはいきません。ではどうするか。答えはそのまま、"安易な移行は行わない" ということでした。これまでのインターフェイスや動作は維持し、あらゆるデバイスおよびドライバーが機能するように細心の注意を払いながら、新しいコントローラーに対応する新しい USB ソフトウェア スタックを開発することになったのです。以前のコントローラーのために、これまでのソフトウェア スタックも残すことにしました。

まったく新しい USB ソフトウェア スタックを開発するためには、とにかく早く作業に取りかかる必要がありました。ハードウェアが市場に出てくるまで待っていると、せっかく芽を出し始めた USB 3.0 エコシステムのサポートに間に合いません。そこで、実際の USB 3.0 デバイスが登場する前に "仮想のデバイス" を作って、作業に臨むことにしました。仮想デバイスとは、ポートやハブといった実際の物理的な USB ハードウェアをソフトウェアで再現したものです。

仮想デバイスの開発が進行している状態で、プロトタイプの設計が始まりました。ハブやデバイスを管理しつつ、エラー処理も行う必要があるため、USB ソフトウェアは複雑です。息の長い製品の開発を行うには、流れをビジュアル化および文書化する必要がありました。私たちは 3 つの大規模なフロー チャートを設計し、さらに、Visio ダイアグラムをソフトウェアに自動変換するコード ジェネレーターを開発しました。Microsoft Research と連携し、Zing と呼ばれるツールの改良も行いました。これは、ソフトウェア モデルのあらゆる側面を検証するためのツールです。

 
フローチャートとその設計者、Randy Aull と Vivek Gupta

開発の初期段階を終えた直後あたりに、最初の USB ホスト コントローラーが送られて来ました。そこでわかったのは、シミュレーションはスタート地点としては悪くないが、それだけでは不十分だということでした。実際のハードウェアを使うことで、誤っていた仮説やタイミングの問題など、実際に運用してみないとわからない問題を認識することができました。また、そこから先に進むには、新たなエコシステムを育成する必要があったのですが、これにはハードウェア パートナーとの強い協力関係が不可欠でした。互いに協力してプロトタイプを作成し、アイディアを交換し、技術的な論議を交わして、バグを報告し合う必要がありました。さらに、最終的な設計が決定される前に問題点を特定できるよう、緊密に協力するという姿勢を双方が持つ必要もありました。

USB 3.0 開発の進行と共に、私たちの連帯感も強まっていきました。ソフトウェアの成功は、対応するハードウェアの成功にかかっています。私たちはハードウェア業界のパートナーと共に、問題点を見つけ、ソリューションを開発し、新しい USB エコシステムの基盤を築いたのです。

我テストする、ゆえに我あり

PC 内部の USB 3.0 チップに対するサポート体制に注力するかたわらで、デバイス自体についても無視することはできませんでした。文字どおり、狭い "箱の中" にとらわれることなく考える必要がありました。何といっても、世界中に存在する USB デバイスの個数は、100 億を超えています。その中には、毎日のように使用されるものもあれば、ほこりにまみれているものもあるでしょうが、これらはすべて、もともと Windows PC につないで使用するように設計されたものなのです。互換性は、Windows から皆さんへの約束です。私たちのお客様にとって、既存のデバイスやドライバーが新バージョンの Windows でも動作するのは当然のこととなっています。この互換性へのこだわりは、Windows 8 という製品全体をとおして重要な優先事項であり続けています。

USB 互換性テストに、"総当たり" というアプローチは通用しません。既に存在するデバイスだけでも膨大な種類がありますし、これに加えて毎日のように新機種が登場するばかりか、テストしようにも既に入手できなくなっている古い機種も存在します。このため私たちは、優れたデバイス テスト戦略を作成する必要がありました。そこで、さまざまなデバイス統計を分析した後、デバイスを次の 3 つのカテゴリに大きく分類することになりました。

  1. 人気機種
    : 遠隔測定データで人気のあるデバイスを調べていくと、あるパターンが判明しました。それぞれのデバイス クラス (キーボード、Web カメラ、プリンター、ストレージなど) で一般に普及している製品は、一握りのメーカーから発売されている少数の主要製品ラインに限定されるのです。この発見を反映させた結果、全デバイスの 70 ~ 80% を数百種類のデバイスによって代表させることができました。テスターはこの作業を、数学用語を使って "同値分割法" と呼んでいます。
  2. チップセット
    : "人気機種" データだけに頼ると、まだかなりの割合のデバイスがテスト対象から取り残されることになります。そこで、実際の回路設計を詳しく見ることにしました。人間と同じように、デバイスも、外見に相当の違いがあっても中身はかなり似ているものです。すべての USB チップセットが正常動作することを確認できれば、これらを内蔵するデバイスも動作する可能性が高くなります。デバイスに埋め込まれているチップセットのメーカー数はそれほど多くないので、これらの USB IP を開発用ボードで表すことにしました。
  3. 注目度の高いデバイスや扱いの難しいデバイス
    : USB デバイスがサポート コール数の上位を占めることはあまりありません。そういったケースがあった場合、これらの問題が今後の Windows では解決しているようにする必要がありました。

USB に関する 10 年間の経験に 10 を超えるソースからの遠隔調査データを加え、膨大な量の調査やブレインストーミングを経て、USB の互換性に関する作業の対象は約 1,000 種類のデバイスに絞り込まれました。私たちはこれらに対し、Windows ラボで定期的にテストを行っています。まず、これらのデバイスを PC に接続したときに正しく認識されることを確認し、省電力のためにスリープと再開が正しく行われること、さらには、さまざまなストレス環境での耐性があることも確認します。遠隔測定データではデバイス全体の 90% が Windows が持つ 16 のクラス ドライバーによって動作していることが示されていますが、これらよりもカスタマイズ度の高いデバイスのために、専用のドライバーが可能時に Windows Update からシームレスにダウンロードされることを確認します (このシナリオのサポートには、デバイス メーカーの協力を要します)。USB 3.0 では完全な下位互換性が提供されているため、以前のドライバーは変更なく使用できます。

また、Microsoft USB Test Tool (MUTT) というカスタム ツールの構築にも、多額の投資が行われました。これは、過去何年間にもわたって観察を行ってきたあらゆるデバイスの動作をシミュレートするためのツールです。このツールの開発は、1 からすべて社内で行われ、身近なすばらしいデザイン ツール (というのは、冗談でも何でもなく MS ペイントなのですが) を使用して回路設計が行われました。次にファームウェアが開発され、内部的に使用される新しいテスト コンテンツが作成されました。そして MUTT が生まれました。これは USB サム ドライブに 1,000 種類のデバイスが搭載されているようなものだと思ってください。その後、この MUTT はハードウェア パートナーにも提供され、リリース前にそのメーカーのデバイスに問題がないか確認し、あれば解決するために使用されました。

図 4 - MUTT 設計者 David Hargrove (MUTT デバイスを手にして)
MUTT 設計者: David Hargrove (MUTT デバイスを手にして)

デモ ビデオ

USB 3.0 に関して最も重要な点は、USB に対するユーザーのとらえ方ではないかと思います。"USB の次のバージョン? 使えるのが普通じゃないの?" という認識が普通なのではないでしょうか。Windows 8 では、個々の USB デバイスがすべて、LS も、FS も、HS も、SuperSpeed も、当然のこととして動作する必要があるのです。私たちはこの意識を持ったうえで、最大限に強力で信頼性の高い USB スタックの提供に取り組んでいます。

では実際に、かなりの量のコピー タスクを USB 3.0 で行う様子を USB 2.0 と比較しながら見てみましょう。

この HTML5 ビデオは、お使いのブラウザーでサポートされていません。

ビデオがここに表示されない場合または再生できない場合は、高画質 MP4 または低画質 MP4 をダウンロードしてください。

--Dennis