山田祥平のRe:config.sys

【特別編】モダンスタンバイの当たり前にスタンバイ完了

~レッツノートにモダンスタンバイを実装した男たち

 PCのあるべき姿を追求しようとしているMicrosoftのAlways Connected PC構想。Window 8の時代から模索が続いているが、今なおベンダーの開発者を悩ませ続けている。

 今回は、その1つの回答として、モダンスタンバイをレッツノートに実装した、パナソニックコネクテッドソリューションズ社モバイルソリューションズ事業部開発センターのエンジニアらに、その方向性を聞いてきた。

昔の名前は捨てました

モダンスタンバイ機の電源とスリープの設定画面。バッテリ駆動時のネットワーク接続に関する設定ができる

 モダンスタンバイは、かつて、Instant Goと呼ばれていた。さらにその前はConnected Standbyという呼称だった(Windows 10で実装されたモダンスタンバイを試す)。

 最初のConnected Standbyから、InstantoGoを経てモダンスタンバイに名前を変えた今も、PCがまるでスマートフォンのように、完全なスリープに落ちることなく通信を維持し、さまざまなバックグラウンドタスクを実行し続けながらも、省電力を実現するというコンセプトは変わっていない。

 InstantGoは、IntelのHaswellアーキテクチャ、つまり第4世代以降のCoreプロセッサに実装されている、S0iXという状態を利用して実現されている。

 これまでのS3スタンバイに対して、完全に稼働を停止してしまうのではなく、ネットワーク接続を維持し、必要な通信処理をOSが引き受けることで、スリープ状態でありながら、まるでずっと接続されていたかのように振る舞うことができる。

 スマートフォンは画面が消灯しているときにもずっと着信を待ち受け、バックグラウンドでさまざまな処理が行なわれている。それと同様の状態をPCでも実現しようというのがInstantGoだった。それが2013年頃の話だ。

 世界で最初のInstantGo機は当時ソニーのもとにあった「VAIO Duo 13」だった。パナソニックでも、「レッツノートMX3」にInstantGoを実装して2014年に製品化している。その当時の様子は過去に記事も書いた。

 あれから5年。今回は、レッツノートの新製品SV8シリーズにもモダンスタンバイが実装されて製品化された。

 SVシリーズといえば、まさにレッツノートの看板だ。12型液晶に光学ドライブ、PCに求められるであろう、ありとあらゆる要素をすべて詰め込みながら、1Kg前後の軽量ボディを実現している。

 企業ユーザーからの絶大な信頼を得ているレッツノートのシリーズだが、MX3がリリースされた2014年当時は、企業ユーザーからこの機能は歓迎されず、すぐに終息してしまっている。スリープ時に通信が続いているなど言語道断というのが、当時のシステム管理者の当たり前の考え方だったということだ。

接続維持が前提ではなくなった理由

 5年前と今は、PCに求められるものは違う。

 モダンスタンバイと名前を変えたConnected Standbyを、改めて最新のレッツノートに実装しようとしたのはなぜなのか。リーダーの白神和弘氏(開発センタープロジェクトマネジメント部プロジェクトマネジメント課主幹技師)、ハードウェア担当の山本竜矢氏(同ハード開発部ハード設計1課主任技師)、ソフトウェアリーダーの尾下功氏(同ソフト開発部ソフト設計2課主任技師)、そしてBIOSを担当した芦田優太氏(ソフト設計部ソフト設計1課)らが答えてくれた。

リーダーの白神和弘氏(開発センタープロジェクトマネジメント部プロジェクトマネジメント課主幹技師)
ソフトウェアリーダーの尾下功氏(同ソフト開発部ソフト設計2課主任技師)
BIOSを担当した芦田優太氏(ソフト設計部ソフト設計1課)
ハードウェア担当の山本竜矢氏(同ハード開発部ハード設計1課主任技師)

 まず、当時のInstantGo対応レッツノートであるMX3プレミアムエディション(CF-MX3HDXBP)を振り返ってみよう。この製品はInstantGoに対応するために、いくつかのペナルティを余儀なくされていた。通常のMX3に比べて、

  1. 有線LANは非対応。Ethernetコネクタは搭載されていない
  2. Wi-Fiは、IEEE 802.11a/b/g/nに対応。11acには非対応
  3. Windows 7へダウングレードできない
  4. vProテクノロジは搭載されない

 1と2は、InstantGo対応のNICがまだ存在しないことが原因だった。Wi-Fiについては、Broadcom 802.11a/b/g/n Wireless SDIO Adapterが使われていた。それが対応できる唯一のデバイスだったからだ。

 これによって

  1. スリープ中でのデータやアプリの自動更新
  2. スリープ中でもメールの受信やSkypeの着信を通知
  3. スリープ中の音楽再生に対応

 といった現象面での機能を実現していたのだ。

 ただし、対応ソフトウェアについてはいわゆるモダンアプリのみで、一般的なデスクトップアプリは、以前のようにスリープ時には眠りにつく。それがWindowsにおけるInstantGoの仕様だった。それはモダンスタンバイになった今も変わっていない。

 そもそもInstantGoは、0.3秒で復帰というのが究極の要件で、現象として接続が維持されていて、16時間でバッテリ消費5%以下という要件を満たせば、それはInstantGoだった。じつに曖昧な仕様だったのだ。

 さらにInstangGoでは、「スリープ中にはいかなるLEDも点灯していてはいけない」といった縛りもあった。当時のMX3開発陣は「最初にMicrosoftが要求した条件はハードルが高すぎたのではないかという想いもあります。たとえば、復帰時間の0.3秒などは、今0.5秒に緩和されています」と証言している。モダンスタンバイではそれがさらに緩和されている。

 尾下「いろいろな点が、以前と違い、要件ではなく推奨になっています。そして緩和されたところもたくさんあります」。

 芦田「6秒以内に復帰すればいいのです。ハードウェアドリップスの要件などが下がった結果です。プラットフォーム全体が省電力に入っているというピンが、ローになっていればそれでいいんです。それがモダンスタンバイ中の要件だといえます」。

 詳細な仕様を書いたドキュメントがないというのも、開発者らを苦しめる。誰もが見ることができるMicrosoftのドキュメントがHardware Dev Cnterサイトに置かれているが、これがモダンスタンバイの聖書であり、これがすべてだ。

 白神「システムがS0iX状態にあればそれがモダンスタンバイ状態だということです」。

 尾下「以前と大きく変わったとすれば、ネットワークの接続を維持しながらと、していない状態の両方がサポートされた点しょうか」。

 そうなのだ。モダンスタンバイは、

  • コネクテッド
  • ディスコネクテッド

 という2つの状態がサポートされている。設定アプリの「システム」では、電源とスリープについて各種の設定ができ、ノートPCの画面やスリープに繊維する時間を、バッテリ駆動時と電源接続時それぞれについて、指定することができる。

 モダンスタンバイ機には、この設定画面に「ネットワーク接続」という項目が用意され、「PCがバッテリー電源の使用中にスリープ状態になった場合は、ネットワークから切断する」に対して、

  • なし
  • 常時
  • Windowsで管理

 という3つの選択肢が用意されている。

 デフォルトは「なし」だ。わかりにくいがスリープ時にもネットワークから切断せずに接続を維持するということになる。つまり「切断なし」と解釈すればいい。

 そして「常時」はいつも切断する。これがディスコネクテッドスタンバイに相当する。つまりLTE-WANなどの常時接続機能が実装されているPCでも、スリープ時の通信を許可しない。

 「Windowsで管理」は、「なし」、つまり接続維持とほぼ同じだが、Windows OSからの指示に従うことになる。

 つまり、スリープ時に通信が維持されていても、いなくても、それはモダンスタンバイだということだ。

スタンバイ時の問題点も少なくない

 尾下「現在のSV8の実装では、今のところ、スリープ中にSkypeなどの着信があったとしても着信音は出ません。つまり、ユーザーはSkypeの着信に気がつくことができません。理由としては、サウンドの機能としてIntelのスマートサウンドテクノロジー(SST)を搭載すればいいのですが、レッツノートでは実績のあるHDオーディオを使っていますから、それができないのです」。

 芦田「かつてのInstantGoとは異なり、画面が消えただけではOS的にモダンスタンバイではありません。InstantGoでは画面消灯状態が、すなわちスタンバイ状態でしたが、モダンスタンバイでは消灯していても稼働しているという状態があります。

 ネットワークが維持されていることのメリットは、外部からのプッシュ通信を受信してユーザーにそれを知らせることができる点にありますが、スリープ時に音やLEDでそれができないのです」。

 白神「そもそもInstantGoで実現される機能の多くは、企業向けには邪魔でしかない機能ばかりでした。でも、モダンスタンバイの場合、ポイントはスリープからのウェイクが速くなるというメリットに注目してほしいのです」。

 確かにスリープからの復帰は速い。閉じていた液晶を開くと瞬時に液晶が点灯し、Windows Helloの顔認証でサインインし、直前に液晶を閉じたときの状態が再現される。ほんとうに瞬時だ。

 しかも、その時点でLTEでの接続はすでに完了している。というか30秒に一度はつないで接続を維持していたのだ。モバイルノートPCのユーザーにとって、この速さはうれしい。復帰するまでの1秒が待てないというのは決して大げさではない。1秒かかってはストレスが溜まりまくる。

 復帰へのトリガーは、従来のように液晶を開く、電源ボタンを押すといったことのほかに、ACアダプタを接続する、PDデバイスを接続するといった電源状態の遷移も含まれる。スリープ時にSkypeでメッセージが届いていれば、それはすでに受信されているし、数百通のメールが届いていても、すでにダウンロードされキャッシュ済みだ。

 もっとも、これができるのはモダンアプリだけなので、Win32アプリのOutlookはその恩恵にあずかれない。企業ユーザーがこんな機能はいらないというのもわからないでもない。

 SV8現行機での復帰時間は0.5秒くらいだろうか。残念ながら、LTE通信のためのSIMが装着されていると、復帰には倍の時間がかかるようだ。デバイスマネージャでLTEを無効にしてもだめなのに、SIMさえ装着されていなければ、まさに瞬時に復帰する。

 芦田「復帰に時間がかかるときは、ビデオかキーボードの割り込み処理に時間がかかっている可能性がありますね。Thunderboltが原因になっていることもあります。Intelのドライバを使っていますが、ここ3年くらいの間でドライバまわりはかなり固まってきましたね。

 いずれにしても、モダンスタンバイ時にはすべてのデバイスが省電力に入っていなければならないのですが、今回の開発でもその解析に時間がかかりました」。

 山本「モダンスタンバイに入っているのに消費電力が下がらないということがあるのです。その原因を突き止めるのはたいへんです」。

 芦田「ただ、最近は解析ツールが充実しています。IntelもSoCの解析ツールを用意してくれていますから、かなり効率的に開発ができます。でも、そのツールでもわからないことがあるんです。結局、ハードウェア的には、泥くさくジャンパーをとばして1つ1つ解析していくしかありません」。

 山本「苦労した思い出といえば、Gigabit Ethernetの機能はサブボードにあるのですが、きちんと実装しているのにデバイスが見えなくなることがありました。きちんと応答はするのですが、ドライバにその状態を返さないのです。消費電力を切り分けるときに、ハードウェアを切り離せばいいのですが、それではプラットフォーム全体としての評価ができません。

 だから人知れず電力を喰うデバイスは困ります。スリープに入る作法によっても振る舞いが違うのでやっかいです。いちばん厄介なデバイスといえば、Gigabit EthernetとThunderbolt 3でしょうか」。

 芦田「最初のThunderboltは実装するのがせいいっぱいでしたね。コントローラーの動的な省電力移行機能の実装に加えてモダンスタンバイの対応で、Intel側もほとんどフォローできない状態だったので、余計に大変でした」。

 山本「でもレッツノートが最初にやったということで、Intelからも高い評価をいただきました」。

 白神「あとは指紋認証とウェイクオンボイスでしょうか。すでに試作で指紋はやっています。セキュリティを担保したままPCを立ち上げて仕事にすぐに入れる製品を作るためのアプローチです」。

スマートフォンになりたいPC

 山本「結局、MicrosoftやIntelは、スマートフォンのようなPCの使い方を考えているんじゃないでしょうか。モダンスタンバイなら、今よりも、ずっと早くスリープに落ちるので、他人に見られては困るものをすぐに画面上から消してくれます。そして作業の再開時の立ち上げも素早くできます。

 つまり、頻繁にスリープの入り切りをする場合も、それが素早くできるのが大きなメリットです。企業ユーザーには受けないという議論があるかもしれませんが、これからのPCはそこが重要なのではないでしょうか」。

 白神「モダンスタンバイ非対応と対応機の違いの指標としては今のところ0.数秒しかありません。いろいろな足かせがあったために差は小さくなっています。これについては非対応機の復帰の速さも評価してほしいところです」。

 ちなみに、Microsoft Surfaceは、初代以来、ずっとモダンスタンバイに対応してきている。だが、その実装の難易度は、レッツノートとは比較にならないと、開発陣は口を揃える。

 尾下「Surfaceとは比較できないですよね。レッツノートの構成は複雑すぎますから。たとえば、Surfaceでは、HDDモデルがありませんから、その対応が遅れていました。レッツノートでは企業の要求に応じてあらゆるデバイスを内蔵しますから」。

 山本「LEDなどは最たるものですね。あとは、バッテリを外せるかどうかとかね。インジケータがないと、電力が瞬断してしまったときにもわからないですよね。だから、モダンスタンバイにLEDの点灯仕様がないというのは不親切だと感じています。でも、Microsoft的にはバッテリを外せるというのは想定外だったのかもしれません」。

 芦田「もちろんMicrosoftとも実装内容などについてはワークショップでいっしょに実装を考えたりもしているんです。HDDや光学ドライブのモダンスタンバイ対応などは、その典型です。具体的には光学ドライブの電源操作の振る舞いなどです。イジェクトボタンを押しただけで電源が入り続けてしまうんです」。

 白神「そしてプレーヤーアプリがスリープに入れなくしてしまうのです。レッツノートの音源ICを使っている以上、再生中はスリープできないのですが、現時点の実装では再生を一時停止してモダンスタンバイに移行します。実装として、それで正しいのかどうかは議論で決めるしかありません」。

 山本「モダンスタンバイの許容がとても広くなったのは確かで、InstantGoからは、かなりズレたところにいますよね。でも、その枠の外側にいろいろなことがあります。その中で理想を追求しなければなりません」。

 尾下「いずれにしてもドキュメントに書かれていないことが多すぎるんです。モダンスタンバイの対応、非対応でプリインンストールのパラメータを変えるのですが、それだけで挙動が変わってしまいます。その個別の現象に対応してしまうと、状況が変わって、何が正しいか正しくないかわからくなってしまうのです」。

 山本「現時点では、タッチパッドからモダンスタンバイを解除する機能は実装されていません。ここは本当はやりたかったところですね。次回は改善したいと考えています。正直なところ、これについてはあとから発覚したことなんです。結局、タッチパッドのベンダとのすりあわせが間に合いませんでした」。

 白神「プレシジョンパッドはオプショナルで、対応しなくてもいいということになっていますから。それにしてもすごく短い間でやった印象です。作業にかけたのは4~5ヶ月でしょうか。とにかく出荷前のギリギリまでかかって作りました。スタートしたのは9月くらいで、1月に出荷開始ですから」。

 白神「モダンスタンバイはセキュリティを担保したままいかに素早くPCを使えるようにするかがポイントです。それはすなわち情報がもれやすいということにつながるかもしれません。相反することですよね。でも、将来的なレッツノートはすべてモダンスタンバイになります。

 状況としてはコネクテッドは必須だからです。メールにしても、PCの起動後に受信が完了するまで分単位でかかるのはだめでしょう。だから今後は必須なんです。

 裏で通信が担保されているからこそのモダンスタンバイです。その一方で、通信が遮断されているところもあります。ローカルで完結してできなければならないことも多く、その足かせになってはいけません」。

 尾下「今後はIntelのSSTを載せていこうという方向で開発を進めます。そのころには、信頼性もさらに高まるでしょうし(笑)」。

 白神「じつは、SV7で使っていたコーデックと、SSTとの整合性をとるのに時間がかかっています。ほかには周辺デバイスとリンクしてインジケーションするなど、いろいろな体験を提供できるようになるはずです」。

 尾下「まだ、Windows 10のRS5は完全に対応しきれていない面もありますね。次の機能更新ではさらによくなるというものもあるようなので期待しています。たとえば、ディスコネクトスタンバイは、モダンスタンバイの新しいセールスポイントなのにコネクトしてしまうといった不具合などが解消されるはずです」。

 PCはスマートデバイスだ。IntelもMicrosoftもスマートフォンでは成功しなかったが、PCをスマートフォンにしたいという気持ちは今も強いのだろう。だから究極のモダンスタンバイを追いかけ続けているのかもしれない。レッツノートの開発陣も、きっと同じことを考えている。