99
マイクロソフト、2021年にWindowsにDirectStorage APIを導入へ:NVMe SSDでゲームを高速化

マイクロソフトは今週、Xbox Velocityアーキテクチャを支えるDirectStorageアプリケーションプログラミングインターフェース(API)のプレビュー版を2021年にWindows 10開発者向けに提供すると発表しました。このAPIは、ストレージAPI関連のボトルネックを解消し、CPUの負荷を軽減することで、ゲームの読み込み時間を短縮し、パフォーマンスを向上させるように設計されていますが、クライアントPCでは、それ以上のメリットがあります。NVIDIAも、AmpereグラフィックスカードにNvidia RTX IOというブランドのこの技術を採用しています。 

高価なI/Oリクエスト 

(画像提供:Microsoft)

Microsoftによると、次期Xbox Series Xに搭載されるカスタムSSDは、1秒あたり35,000件を超える64KBのI/Oリクエストを生成し、ピークシーケンシャルリード速度2.4GB/秒を達成します。NVMeプロトコルと最新のSSDは、複数のキュー(キュー深度と呼ばれます)を同時に処理でき、各キューには多数のリクエストを含めることができます。しかし、ドライブの純粋なパフォーマンスは、計算式の一部に過ぎません。

既存のストレージAPIでは、アプリケーションはI/Oリクエストを順番に管理する必要があります。リクエストの送信、完了の待機、完了処理、そして次のリクエストへの処理です。数百のリクエストを生成する古いゲーム(主にハードドライブを想定して設計されていたため)では、大きなオーバーヘッドは発生せず、CPU時間をそれほど消費しませんでした。しかし、数万のリクエストを生成する今後のタイトルでは、オーバーヘッドが大きくなりすぎて、最新のシステムでは最新のSSDを最大限に活用できなくなったり、他のタスクにCPUパワーを割けなくなったりする可能性があります。 

さらに、現在のストレージ API では、アプリケーションによる I/O 要求とストレージ デバイスによる実際の実行の間にいくつかの「追加ステップ」(データ変換など) が発生するため、パイプライン全体のオーバーヘッドがさらに増加し​​ます。 

さらに、ゲーム アセット (テクスチャなど) の多くは圧縮されており、それらを解凍すると、ストレージと CPU/GPU 間のパイプラインがさらに複雑になります。

DirectStorageがお手伝いします

Microsoft の Xbox Velocity Architecture は、CPU サイクルをあまり使用せずにハイエンドの NVMe SSD をビジー状態に保ち、パイプライン全体を高速化するために現在発生している「余分なステップ」の数を減らすように特別に設計された DirectStorage API を使用します。 

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

(画像提供:サムスン)

Microsoft によれば、DirectStorage API は次のことが可能です。

  • リクエストごとの NVMe オーバーヘッドを削減します。
  • CPU 時間を節約するために、OS による介入をほとんど行わずに大量の I/O 要求を並列に送信します。
  • アプリケーションがすべての IO 完了に反応するのではなく、I/O 要求の完了の通知をいつ受け取るかをより細かく制御できるようにします。

DirectStorage APIはNVMeプロトコルを置き換えるものではありません。その目的は、CPUとプロトコルのオーバーヘッドを削減し、開発者がI/Oプロシージャを指定できるようにし、I/Oリクエストにおける不要な追加ステップを省略することです。 

実際、マイクロソフトは今年初め、Xbox Series XのDirectStorage APIにより、数万件のI/O操作のCPUオーバーヘッドを「単一コアのごく一部」まで削減できると発表しました。マイクロソフトが明らかにしなかったのは、どのようにしてこのような素晴らしい結果を達成したのか、そしてこれが膨大なI/O要求を伴う最良のシナリオなのか、それとも一般的に予想されるものなのかということです。  

これまで、AMD (Xbox One Series X SoC の開発元) は、Radeon Pro SSG グラフィック カードの GPU と 2 つの NVMe SSD 間のピアツーピア メッセージングを実験してきましたが、DirectStorage が p2p メッセージングと何らかの関係があるかどうかは不明です。 

PC 上の DirectStorage: ゲームを最優先に

これまでのところ、マイクロソフトは、DirectStorage API を Windows オペレーティング システムに導入し、2021 年にゲーム開発者に提供する計画のみを明らかにしています。これにより、基本的に将来の PC ゲームで、今後の Xbox ゲームと同じテクノロジを活用できるようになります。

(画像提供:Corsair Components)

 高解像度・高フレームレートで動作するように設計されたプレミアムファーストパーソンシューティングゲームは、現在、様々なシステムレベルで多数のボトルネックによってパフォーマンスが制限されていますが、MicrosoftのDirectStorageの恩恵を受けるでしょう。新しいAPIは、SSDからグラフィックカードへのデータ転送をパフォーマンスの観点からより安価に、より制御された方法で行うことで、オンボードVRAMの要件を軽減(あるいは少なくともその増加を抑制)する可能性があります。 

マイクロソフトにとって、ゲーム機で既にこの技術を完成させているため、まずはPCでゲーム向けにDirectStorageを有効にするのは当然のことです。しかし、PCにはゲーム以外のアプリケーションも存在し、より高速で管理しやすいストレージ性能を活用できることに留意することが重要です。 

ハードウェアサポート 

WindowsにDirectStorageを追加するということは、Microsoftが新しいAPIをサポートするハードウェアを確保する必要があることを意味します。API自体はNVMe SSD向けであり、NVMe対応ドライブは既に数多く存在します。一方、MicrosoftはすべてのNVMe SSDがDirectStorageをサポートするとは明言していませんが、「適切に構成された」NVMeドライブを搭載した特定のシステムでサポートされると主張しています。 

(画像提供:パトリオット)

Microsoft は新しい API の特殊性をすべてまだ公開していないため、そのサポートに NVMe 命令の特定のサブセットが必須になるのか (したがって、特定のファームウェアを搭載した特定のドライブが必要になるのか)、それとも SSD 以外にも何か必要なのかは不明です。

Nvidiaは、AmpereグラフィックカードにこのAPIを採用しました。Nvidiaによると、RTX IO機能は、標準的なハードドライブやストレージAPIと比較して、I/Oパフォーマンスを最大100倍高速化できるとのことです。 

まとめ

MicrosoftのDirectStorage APIは、現代のゲームシステムが実行する数万ものI/O操作におけるCPUオーバーヘッドを削減し、不要なデータ変換ステップを排除し、ゲーム開発者がストレージをより細かく制御できるようにすると言われています。これらはすべて、ロード時間を短縮し、GPUがSSDからより速くデータを処理できるようにすることで、仮想世界をより豊かにすることを目指しています。 

(画像提供:Adata)

データをプロセッサに近づけることは業界のトレンドであり、MicrosoftのDirectStorageもこの流れに沿っています。サーバーは階層型ストレージを使用することでパフォーマンスと機能を最大化できますが、ゲーム機やPCは通常、NVDIMM、頻繁に使用するデータ用のハイエンドPCIe SSD、コールドストレージ用の低速デバイスに対応していません。クライアントデバイスではこれらに対応できないため、PCの機能を向上させるには、デフォルトのストレージデバイスをより高速かつ効率的にする必要があります。 

マイクロソフトはDirectStorage APIの特徴やその目標達成方法についてまだ全て明らかにしていませんが、ゲーム開発者は2021年に新しいインターフェースを入手し、Xbox Velocity Engineの秘密が明らかになるでしょう。特に興味深いのは、DirectStorageがゲーム以外のアプリケーションのパフォーマンスを向上できるかどうかです。 

MicrosoftはDirectStorage APIがNVMe SSDを使用していると主張していますが、NVMe SSDを搭載したすべてのWindows PCが自動的にDirectStorageをサポートするわけではありません。同社はハードウェアパートナーと協力し、DirectStorageをサポートするAPIとコンポーネントの設計を完了させようとしています。 

DirectStorage はすでに Xbox Series X 向けのゲームで使用されているため、少なくとも一部のクロスプラットフォーム タイトルでも 2021 年後半 (というより 2022 年) 以降に PC 上の API が活用されるようになると想定するのが妥当でしょう。

出典: Microsoft DirectX 開発者ブログ