Warp!! の機能・仕様
組込み Linux 超高速起動ソリューション LINEOWarp!!
機能・仕様
Warp!! 起動
2 次記憶装置(Flash等)に確保したスナップショット領域に、アプリケーションを起動した状態でのシステムメモリおよびハードウェアの状態(レジスタの内容)のスナップショットイメージを保存しておき、電源オン時に保存したスナップショットイメージからシステムメモリを一挙に復元します。初期化コードの実行の軽減、メモリアクセスの軽減により、超高速起動を実現します。
スナップショット保存機能
電源オン時にスナップショットイメージ※1 からシステムメモリを一挙に復元することで高速起動を実現しています。このスナップショットの保存に組込み Linux ディストリビューターであるサイバートラスト / リネオならではのテクノロジーがあります。
- ターゲット単体でスナップショット保存が実行可能
- 製品に最適なスナップショット保存モードを選択可能
- 保存対象となるメモリサイズを縮小
実際に使用されているメモリのみを保存するため、搭載メモリサイズに依存しません。 - スナップショットの圧縮
約1/5 ~ 1/2 に圧縮可能( 圧縮率はスナップショットデータに依存)
- 保存対象となるメモリサイズを縮小
- IO との並列処理による高速処理を実現
- 高速圧縮保存モードをサポート
- 複数のスナップショットをサポート
- セパレートモード※2 で起動をさらに高速化
- SMP/AMP に対応可能
- SDRAM 全体を保存対象にすることが可能
- スナップショット保存先として様々なストレージに対応
RAM、NOR/NAND Flash、SD、eMMC、SATA、PATA
- ※1
- スナップショットとは
アプリケーションが起動した状態でのシステムメモリおよび H/W の状態(レジスタの内容)をイメージとしてキャプチャしたものです。スナップショットイメージは2次記憶装置(Flash 等)にスナップショット専用に確保した領域に保存されます。 - ※2
- セパレートモードとは
スナップショットの対象メモリを2つのグループに分割することで、電源投入直後に転送が必要なスナップショットの量を少なくする機能です。
3 つの起動方法を選択可能
ハイバネーションモード
電源オフ時の状態に復帰します。
高速起動モード
毎回同じスナップショットイメージから起動します。
Android モード
Android System の理想的な高速起動を実現します。
高速起動を可能にするだけでなくユーザの設定値の反映も可能です。
終了時に明示的な保存処理は不要です。
Multi-Core 対応
スナップショット分割保存
SoC のMulti-Core 化は今後ますます進むことが予測されますし、Storage 規格も SD3.0、eMMC4,5 以降では大幅に高速化が進みます。Warp!!5 ではこれらのメリットを起動高速化に最大限に活用できる仕組みとして、スナップショットの分割保存に対応しました。
Multi-Core
高速なストレージデバイス上にスナップショットをいくつかに分割して保存し、これらに CPU Core を割り当てて、Multi-Core で一挙にメモリを復元することが可能です。
Multi-Core / Multi-Storage
バスの干渉の少ない低速なストレージデバイスのいくつかにスナップショットを分割保存し、これらに CPU Core を割り当てて、Multi-Core で一挙にメモリを復元することで I/O の最適化が可能です。
User API の Multi-Core 利用
CPU Core をユーザスレッド専用に割り当てることで、効率的なシステムの初期化が可能になりました。例えば、サブシステムを複数抱えた複雑なシステムにおいて、各サブシステムとの同期合わせ等が Linux 起動前に実現可能です。
UserAPI サポート
ユーザスレッドにより、H/W の並列初期化や起動後に直ちに実行させたいアプリケーションを動作させることが可能です。また、Warp!! Software Development kit に UserAPI のサンプルプログラムが付属しています。
- Power On 後、早期段階でスナップショットの読出し伸長とユーザスレッドを並列実行
- ユーザは定期的に呼び出されるファンクションを設定し、例えば FPGA へデータ転送する DMA の再投入などの処理が可能
スナップショット Switch 機能
これまでスナップショット切り替えは bootloader レベルでのみ可能でしたが、kernel コマンドラインからスナップショット切り替えの指示が可能になりました。Exchange Mode では、ハイバネーションの様に最終状態を保存後、別のスナップショットに切り替えます。そのため複数の OS の状態を保ちながら、OS を切り替えることが可能です。一方 Overwrite Modeでは保存を行いませんので、高速で複数の OS を切り替えることができます。ただし切り替え後は常に初期起動状態となります。
システム条件
以下を必要とします。
- Hibernation Driver を格納する領域(ROM 64K)
ルートファイルシステム用の記憶領域以外にシステムメモリのスナップショットを保存する領域 - bootloader
- *Hibernation Driver の呼出の追加
- kernel
- *各種ドライバは、PM の Suspend/Resume の実装
*Hibernation Driver 呼び出し等の Warp!! 用パッチ適用