【第五回】 組込み機器のメモリコストを削減する
組込み機器をより小さく、より安くする
省メモリシステムを実現するには?
メモリ削減がコストダウンにつながる
組込み機器をより安く、より小さく設計するうえではメモリコストの削減が欠かせません。使用メモリを少なくすると、単純に部品点数や回路段数を減らせるだけでなく、故障率の低下や歩留まり向上につながります。また、消費電力が減るため、バッテリー搭載量の削減にもなるでしょう。結果として機器の生産コストを下げられるだけでなく、軽量化や省スペース化を実現するうえでも大きな要因を占めることになります。
プログラムのメモリ使用量を減らすためには、「静的メモリ(注1)削減」と「動的メモリ(注2)削減」の2つのアプローチが欠かせませんが、どちらも実際には簡単なものではありません。今回は、それぞれの特長を具体的に見ていくことにしましょう。

組込み機器におけるメモリ削減は、省電力化や歩留まりの向上といった効果も期待できる
システムに関する高度な知識が求められる「静的メモリ削減」
まず「静的メモリ削減」では、OSの不要なプロセスやモジュールを削除したり、プログラムのコードサイズ自体を小さくすることがポイントとなります。
たとえば、Linuxカーネルのコードサイズは最大構成で約3.5MBですが、最小構成ならば約200KBまで抑えることができます。同様にWindows Embedded も最大構成で約3.5MBですが、最小構成は約600KBです(下図参照)。OSによってスリム化の効率に差はありますが、システム構成を小さくするだけでもコードサイズを大幅に削減することが可能なのです。
システム自体のコードサイズを削減すれば、ROMやRAMの使用量をセーブできるだけでなく速度向上のメリットがありますし、不要なプロセスやモジュールを削除すれば品質向上やセキュリティ向上にも期待できます。とはいえ、システムの機能を削りすぎるとシステムそのものが動作しなくなるケースがあるため、実施にあたってはシステムコンポーネントに関する深い知識が欠かせません。また、ユーザーが必要とするプロセスやモジュールまで削除してしまうと、アプリケーションが動作しなくなってしまう恐れがあるため、アプリケーションが必要とする機能の依存関係を正確に把握する技術も求められます。

OSにより効率は異なるが、システム構成のチューニングによるコードサイズ削減の効果は大きい

システムコンポーネントに関する高度な知識がなければ、さまざまな問題を引き起こす可能性も
パフォーマンスの問題が発生しやすい「動的メモリ削減」
動的メモリ削減については、同時に使われない機能をDLL化することで、必要な時に必要な分だけメモリを使用する「モジュールの動的ロード/アンロード」と呼ばれる手法に加え、データ圧縮や共有メモリの使用などが一般的です。
ただし「モジュールの動的ロード/アンロード」は機能分割の範囲が適切でない場合、ロードやアンロードが頻繁に発生することでオーバーヘッドが大きくなり、速度が低下するという問題があります。またプログラムが使用するデータを圧縮保存しておき、必要なデータだけ展開して使用する手法は、圧縮/展開に時間がかかるだけでなくランダムアクセスにも対応できません。複数のプログラムが共通して利用するデータを共有メモリに配置する手法にも、データ更新時の整合性を維持するのが難しいという問題があり、ハードウェアやOSによるサポートが欠かせないでしょう。

動的メモリ削減では、いかにパフォーマンス低下を引き起こさないかが重要となる
メモリ削減の手法は案件ごとに異なる
このように、メモリ削減にはさまざまな手法がありますが、いずれも長所と弱点を併せ持っているため、組込み機器のCPU処理能力やPCB面積(注3)、要求されるリアルタイム性に応じて異なる戦略が求められます。特に動的メモリ削減に関しては、いったん組込み機器が完成してから行うと大きな修正コストが発生してしまうため、設計段階から作りこみが必要なだけでなく、システムの要件変更に影響を受けやすいという側面があります。静的メモリ削減に関しても、ここで取り上げたシステムコードのスリム化だけでなく、アプリケーション側にも同様なチューニングが必要となるなど、案件ごとに柔軟な対応が要求されるといえるでしょう。

メモリ削減は、上記3つのポイントを考慮しながら、設計段階から戦略的に実施していくことが求められる
【注釈】
| 注1 | 静的メモリ: | あらかじめプログラム上で確保されたメモリ領域 |
| 注2 | 動的メモリ: | プログラムの実行中、必要に応じてシステムから確保されるメモリ領域 |
| 注3 | PCB面積: | プリント基盤の面積 |
省メモリに関する問題を解決します
富士通ソフトウェアテクノロジーズでは、これまで培ってきた知識と経験により、お客様の省メモリに関するさまざまな問題についてお手伝いいたします。
生産コストの削減に、ぜひお役立てください。
【特長】
- さまざまな省メモリ要求に対応可能です
Windows、Linux など - 不要なプロセスやモジュールをスリム化します
不要なモジュールは、品質面やセキュリティ面でマイナスとなります。 - 当社独自の動的メモリ削減テクニックで、お客様のシステムを極限までチューニングいたします
当社におけるメモリ削減の事例
こんなトラブルでお困りではありませんか?
事例1 : 映像機器を製造するお客様の例
| Windows Embedded CE 6.0で動作していたが、開発ツールを使って機能選択を行なっていたため不要なモジュールが含まれ、メモリ効率が悪くなっていた。 |
| 開発ツールの出力結果を見直し、不要なファイルをリストアップして削除。 アプリケーションやミドルウェアをROM上ではなく、FLASHメモリ上のファイルシステムに構築した。 |
| ROMの使用量を約30%削減 |
事例2 : ネットワーク機器を製造するお客様の例
| 更なるRAM使用量の削減と起動の高速化(Linux搭載機器)が求められていた。 |
| 不要なカーネルモジュールとサービス、デーモンを削除した。 長年のUNIX/Linuxの開発経験に基づき、カーネルの内部構造やシステムコールの仕様、システムデーモンの機能や関連性を解析。各システムの処理時間を熟知していたことから、ギリギリのモジュール削除が可能になった。 |
| 性能を落とすことなく、RAM使用量を約8%削減 起動時間を40%短縮 |
関連リンク
- 先進の組込み技術を紹介「FST Embedded Flash」ページへもどる
お客様のデバイス企画・開発に役立つ先進の組込み技術についてご紹介します。
- 組込み開発トータルサービス
お客様の要望にお応えする最高の技術により、品質・コスト・納期を追求した組込みシステム開発をお約束します。 - 組込み関連のケーススタディ
お客様ごとの課題に合わせ、最適な解決策をご提供します。 - 当社が提供する組込みソリューション
組込みソフト開発のベストバートナーとして、新製品の研究/試作機開発から製品開発、サポートまで、お客様のPoC(Proof of Concept)に先進技術と高品質でお応えします。
