エンジニアコラム

世間によくあるWindows CEに対する疑問   

エンジニア・コラム

高根 英哉 さん [ コムラッド 代表取締役・マイクロソフト認定MVP ]

第5回:省電力のすすめ

これまでWindows CEに関する誤解などを中心に話を進めてきました。Windows CEだったから失敗したという例は意外に少なく、正しい情報を元に、開発のあるべき姿を守っていれば、そうは失敗しないということをお伝えしたかったのです。
その昔(と言ってもせいぜい7,8年前くらいですが)、Windows CEを使って何かを開発するとなると、大変な労力は強いられました。情報も少なかったですし、OSにできることも限られていました。そして何より、ほしいドライバが揃わないことが一番の問題点でした。ところが今は容易にWindows CE向けのドライバを見つけることができます。サンプル的な扱いであれ、無から開発する場合に比較して飛躍的に改善されています。その意味でBSPは開発するものから、利用するものに変化しつつあると言えるわけです。


BSPの完成度を上げる中で着目すべきキーワードがいくつかあります。「堅牢性」「パフォーマンス」「省電力」などなど。「堅牢性」については特筆するまでもなく、日本企業が一番神経を使うところです。たった一つの不具合も許さない姿勢は外国からみると異常なまでの神経質に映るようですが、それを守ってきたからこそ日本製品は世界で戦えるわけです。
「パフォーマンス」に関しても同じように注目する企業は多いでしょう。。ドライバが存在することでホッとしたのもつかの間、パフォーマンスが出ないため、さんざんドライバを改造したという話はよく聞きます。それでもペリフェラルベンダは自社のモジュールを採用してもらうために、最良のパフォーマンスが出るようなドライバを提供するケースが増えてきました。一昔前のように、パフォーマンス度外視では誰も採用してくれませんからね。その意味では更なるパフォーマンスチューニングは昔より難しくなってきました。


そして、今回テーマに挙げたいのは『省電力』です。省電力はBSPにとって実は重要なテーマだったりします。組込みはまだまだ電源が供給されるタイプのものが多いとはいえ、時代はケーブルレス。さまざまなものがバッテリー化されつつあります。そうなれば、当然バッテリーの利用時間は気になるところです。
Windows CEでも省電力モードはサポートされていますので、ドライバがそのモードに対応しているかは誰もが確認するでしょう。しかし、そこで安心してはいけないし、もっと踏み込んで省電力を考えてみるべきなのです。
OSが持つ省電力機能とは、使用していないときにきちんとsleepするというものです。つまり、使用しているからには、電力が消費されるのはしかたない。だから、使用していないときだけでも、電力を抑えたいという発想です。そもそも、消費電力に関してはハードウエアで決まってしまうので、BSPではなんともできないと考えがちです。しかし、本当にそうでしょうか?実はOSが持つ省電力機能以外にも、ドライバでできる省電力はたくさんあるし、それらを考え、実装することが、他社との差別化に繋がるのだと思います。


先に述べたようにペリフェラルベンダはパフォーマンスを重視してドライバを開発する傾向にあります。しかし、ハード性能がよくなってパフォーマンスがどんどん向上したとき、必要条件を追い抜いてしまうこともありえます。
WiFiなんかもいい例でしょう。私はプライベートではiPod touchを好んで使用します。このiPodにはWiFiが搭載されていますが、WiFiというのは電力食いで有名な周辺機器と言えます。音楽を聴いている分には数日はゆうにもつバッテリーも、WiFiを多用しながらだと、1日も危うい状態に陥ります。
このようなWiFiですが、電力はその電波出力によって変化します。そして、大概のWiFiドライバは、可能な限りパフォーマンスをよくするために電波出力を調整するようにドライバは開発されているのです。つまり、消費電力よりもパフォーマンスが優先されているわけです。しかし、組み込み開発の中ではWiFiを利用して、動画を送るわけでもネットにつなぐわけでもなく、少量のデータをサーバーに送れればいいだけのことも多々あるわけです。そのような場合、今日のWiFiはオーバースペックということになり、できるなら、パフォーマンスよりも省電力で動作するようにドライバを改造すべきなのだと思います。


また、CPUの動作クロックも同様です。CPUは年々高速化され、組込み機器のCPUもここ数年で数倍の速度になりました。しかし、すべての組込みがこれだけの動作クロックを必要としているわけではありません。
ある組込み機器のCPUが600MHzまでの動作クロックを保証していたとします。しかもこのCPUは動作クロックをさまざまに可変で使用できるものだったとするとき、本来シーンにあわせて動作クロックを変化させるべきなのだと思います。つまり、この機器は作業のほとんどをCPU使用率20%程度で賄えるなら、CPUの動作クロックを300MHzまで落として、CPU使用率を上げたほうが電力には効果的です。そして、もし、CPU使用率を100%まで押し上げるような動作に切り替わった時、はじめて動作クロックを600MHzに戻すなりの仕組みを作るわけです。


このように使用しながらも省電力を考えることはたくさんできるわけです。私の会社ではこの省電力に注目するようになって、いろいろなことがわかってきました。おそらく、パフォーマンスとならぶほどに省電力は重要なテーマになってくるでしょう。みなさんも、是非、省電力を自社のプロジェクトにあてはめて、再検証してみてください。