Oculusは、Oculus Goに搭載された旧型のSnapdragon SoCが、VRに最適化された高性能プロセッサを搭載した現代のスマートフォンよりも優れたモバイルVR体験を実現する秘密の一部を公開しました。Oculus Goランタイムは、SoCパラメータを動的に調整することで、バッテリー消費を抑え、発熱を抑えながら、一定のパフォーマンスレベルを維持します。
昨年秋、OculusはOculus Goを発表しました。これは、Oculus Gear VRストアにあるすべてのコンテンツがプレイできる、199ドルのスタンドアロンVRヘッドセットです。このデバイスは、Snapdragon 821 SoC(Samsung Galaxy S7に搭載されているものと同じ)、WQHD(2560x1440)の高速スイッチングLCDスクリーン、そしてグレアを抑えてより鮮明な画像を提供するとされる「次世代」レンズを搭載しています。
OculusのCEO、ヒューゴ・バーラ氏は、Oculus GoをVRハードウェアの大量導入における「スイートスポット」と表現しました。コストの観点からこの考えに異論を唱えるのは難しいですが、古くなったSnapdragon 821がOculusが期待するような魅力的な体験を提供できるかどうかは疑問でした。
昨日、Oculus Goを初めて試用する機会に恵まれました。ほんの数分触っただけで、Oculusは何か新しいことを始めているという確信に至りました。しかし、当時OculusはGDCで開発コミュニティに向けて、Go HMDの魔法の秘密を解説している最中だったとは、知る由もありませんでした。
私たちが学んだことは次のとおりです
GDCのパネルセッションで、Oculusのエンジンインタラクションエンジニアであるレミ・パランドリ氏は、Oculus Goのフォームファクターとニーズに合わせてSnapdragon 821をどのように最適化したかを説明した。パランドリ氏は、スマートフォンのスリムなフォームファクターがQualcommのチップが出力できるパフォーマンスの上限を制限していると説明した。スマートフォンの場合、エンジニアは熱制限を遵守し、一日中使えるようにバッテリー寿命を最優先にする必要がある。しかし、Oculusはそのような制限に縛られることはない。
パランドリ氏は、SoCの場合、クロック速度を20%程度上げると、バッテリー消費が最大40%増加し、発熱も最大60%増加する可能性があると説明した。スマートフォンでは、こうした特性は許容できない。VRヘッドマウントディスプレイ(HMD)の場合、一日中装着することはまずないため、バッテリー駆動時間が短くても大きな問題にはならない。しかし、ヘッドセットが過熱するとサーマルスロットリングによるパフォーマンス低下を引き起こし、顔に装着すると不快なほど熱くなる可能性があるので、過熱は避けたい。
パランドリ氏によると、Goは一般的なスマートフォンよりもはるかに強力な冷却システムを搭載しており、これによりSnapdragonチップに搭載されたCPUとGPUのクロック速度を引き上げることができるという。パランドリ氏はGoの最終構成におけるパフォーマンス数値については詳細を明かさなかったが、Oculusはハードウェアの詳細については口を閉ざしている。しかし、Oculusの取り組みは冷却性能の向上とクロック速度の向上だけにとどまらず、バッテリー寿命の延長にも取り組んだ。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
動的パフォーマンス調整
Oculusはこれまで常に、開発者がゲームを最適化し、GPUとCPUをより効率的に活用するための手段を提供してきました。開発者は、CPUとGPUの両方について、それぞれ0から3までのパフォーマンス評価を設定できます。CPUとGPUのレベルを設定することで、コンポーネントが動作する最小クロックレートを指定できます。デフォルトでは、Oculusは両方のコンポーネントのパフォーマンスを2に設定しています(クロックレートはデバイスによって異なります)。開発者は、アプリにさらなるパワーが必要な場合は評価を上げ、CPUとGPUが十分に活用されていない場合は評価を下げることができます。
パランドリ氏によると、Oculusはほとんどの開発者がこの機能を有効に活用していないと判断したという。そのため、Oculus Go開発者向けに動的なパフォーマンス調整システムを開発した。このシステムはGPUとCPUを監視し、タスクに合わせてクロック速度を調整する。
ダイナミックパフォーマンス調整システムは、GPUとCPUを常に監視し、効率的に使用されていることを確認します。GPUの使用率が95%を超えると、システムは自動的にそのコンポーネントをオーバークロックし、フレーム落ちを回避します。逆に、GPUがアイドル状態の場合、ソフトウェアは自動的にGPUのクロック速度を下げ、電力を節約して発熱を抑えます。(ただし、発熱を最小限に抑えることに成功したかどうかは定かではありません。GDC 2018で最初に気づいたことの一つは、Goの発熱でした。)
CPUパフォーマンスの評価方法は若干異なります。シングルスレッドプロセスでは全体的な使用率が低くなるため、Oculusは平均使用率と最悪のコアパフォーマンスを監視し、適切なクロック速度調整を決定します。
開発者はCPUとGPUのパフォーマンスレベルを設定できるため、Oculusランタイムがクロック速度をそのレベル以下に下げるのを防ぐことができます。ただし、この設定によって、Oculusが必要に応じてコンポーネントをオーバークロックすることを防ぐことはできません。
パランドリ氏によると、新しいパフォーマンス最適化は開発中の新作ゲームだけに適用されるわけではない。Oculus Goヘッドセットで動作するあらゆるゲームで同じ機能が利用可能であり、既存のコンテンツはOculus Goヘッドセット上でよりスムーズかつ効率的に動作するはずだ。開発者は、動的なパフォーマンス最適化の恩恵を受けるためにアプリケーションをアップデートする必要すらない。パランドリ氏によると、開発者はコードを変更することで、Oculus Goが接続されているときにCPUとGPUのレベルをゼロに設定し、アプリケーションの効率をさらに向上させることができるという。
Oculus Go のパフォーマンス最適化についてさらに詳しく知りたい場合は、Oculus が Palandri の議論全体を投稿した Facebook で追加情報を見つけることができます。
ケビン・カルボットはTom's Hardwareの寄稿ライターで、主にVRとARのハードウェアを扱っています。彼は4年以上にわたりTom's Hardwareに寄稿しています。