wec2013の高速起動download.microsoft.com/download/9/f/1/9f14fa12-2746-4b10... · 2018-10-16 ·...

14
1 © Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved. 株式会社 日立超LSIシステムズ 組込プラットフォーム設計部 2014/04/25 伊藤 優 WEC2013の高速起動 スナップショットブートの全貌 © Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved. 1 はじめに 組み込みデバイス起動時間もその一つです。電源を入れたの ち、24時間、365日の間、電源を落とさない場合もあれば、頻 繁に電源OFF/ONを繰り返す製品もあります。 たとえば自動車向け製品のように、常にコールドブートを、た だし短い起動時間を要求されるようなシステムも存在します。 CE CoreではWindows Automotive 5.0 / 5.5で提供されてきた Snapshot Bootが、Windows Embedded Compact 2013で採用さ れました。本セッションでは、Snapshot Bootの概要と、実装の ためのポイントについて説明をします。

Upload: others

Post on 02-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

1

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

株式会社 日立超LSIシステムズ組込プラットフォーム設計部

2014/04/25

伊藤 優

WEC2013の高速起動スナップショットブートの全貌

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved. 1

はじめに

• 組み込みデバイス起動時間もその一つです。電源を入れたのち、24時間、365日の間、電源を落とさない場合もあれば、頻繁に電源OFF/ONを繰り返す製品もあります。

• たとえば自動車向け製品のように、常にコールドブートを、ただし短い起動時間を要求されるようなシステムも存在します。

• CE CoreではWindows Automotive 5.0 / 5.5で提供されてきたSnapshot Bootが、Windows Embedded Compact 2013で採用されました。本セッションでは、Snapshot Bootの概要と、実装のためのポイントについて説明をします。

Page 2: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

2

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

1. 自己紹介2. ブート時間短縮のアプローチ3. Snapshotブートの実装4. Snapshot取得位置と起動時間5. より高速なSnapshotブートへのアプローチ

2

Contents

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved. 3

1. 自己紹介

Page 3: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

3

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

自己紹介

4

• スピーカー:伊藤 優– 所属:株式会社日立超LSIシステムズ

– Microsoft MVP(Windows Embedded)

• あれ?アキタ電子システムズでは?– 2014年4月1日に日立超LSIシステムズとアキタ電子システムズは合

併しました。

– Windows Embeddedサポートチームはそのまま日立超LSIシステムズの所属となり、従来通りの対応をしています。

• 新しいコンタクト先:[email protected]

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved. 5

2. ブート時間短縮のアプローチ

Page 4: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

4

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

ブート方式と起動時間

6

ブート方式起動時間

OSイメージの配置

CPUの遷移SDRAMの

状態デバイス初期化

メモ

コールドブート

× NOR Flash停止 Power

On クリア 要

NOR Flash上でプ

ログラムを実行することで起動時間を短縮できる。

× NAND Flash 停止 PowerOn

クリア 要実行イメージをRAMにコピーする必要がある。

× 外部ストレージ停止 Power

Onクリア 要

ウォームブート × NOR Flash 動作 Reset 保持 一部要 一般に実行イメージはRAM上

に展開された状態でリブートする。

△ RAM 動作 Reset 保持 一部要

サスペンド/リジューム

◎ RAM SleepResume

保持 一部要

起動は非常に速いが、スタンバイ時には電流を消費する。

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

WEC2013起動シーケンス

7

CPU, SDRAM初期化

OSイメージコピー

OS起動、デバイスドライバ初期化

アプリケーション起動

Power ON

起動ステップ 所要時間短縮の可否

前提条件等

CPU, SDRAM初期化 <0.1s No

OSイメージコピー 2.0s Yes OSイメージサイズ:64MB転送速度:32MB/s

OS起動、デバイスドライバ初期化

3.0s Yes デバイス初期化、スレッド起動、ワークエリア初期化、等

アプリケーション起動 5.0s Yes プロセスロード、起動

合計 10.0s Yes

Page 5: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

5

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

起動時間短縮に向けた様々なアプローチ

8

• Multiple XIPによるロード時間の短縮

• デバイスドライバ初期化処理のバイパス

• デバイスドライバ初期化処理の並列化

Nk.bin

NORフラッシュ

Nk.bin

RAM

CopyNk2.bin

NORフラッシュ RAM

Copy

Nk1.bin

Nk2.bin

Nk.binを分割し、最初に動作するNk1.binをXIP(Execute In Plase)実行で、NORフラッシュ上で動作させる。

XXX_Init

MultipleXIP化

デバイス初期化初期化をバイパス

XXX_Init XXX_Open

デバイス初期化+

ドライバロード時のデバイス初期化をバイパスし、Open呼び出しで初期化を行う。

XXX_Init

デバイス初期化初期化を並列化

XXX_Init

CreateThread Thread

デバイス初期化

デバイス初期化処理をThread化し、XXX_Initをごく短時間で終わらせる。

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved. 9

3. Snapshotブートの実装

Page 6: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

6

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

Windows Automotive:Fast Cold Bootガイド

10

• 引用元URLhttp://msdn.microsoft.com/ja-jp/library/dd362296.aspx

• 対応OS:Windows Automotive 5.0 / 5.5処理内容 高速化メソッド 高速化の内容

HDD/NAND Flash から

DRAM へのプログラム

コピー

イメージ多段ロード プログラム コピー時間を分割し、最

初にかかるロード時間を短縮

OS ワークエリアの初期

DRAM クリア スレッド メモリ初期化処理を分割し、最初の初期化時間を短縮

ユーザー データ

(レジストリ) 初期化

Hive-based Registry レジストリ初期時間を短縮したレジストリ管理方式

OS/アプリの起動 Snapshot Boot OS/アプリの初期化後の状態を復元

することで、定型初期化シーケンスをスキップ

デバイス ドライバの

ロード

Application Launcher ドライバ ロード処理の並列化/分割

化により、CPU のアイドル時間を排除

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

WEC2013:Snapshot Boot Development

11

• 引用元URLhttp://msdn.microsoft.com/en-us/library/dn169259.aspx

• Snapshotブートを利用するために– 標準のインターフェイスを使用し、サスペンド/リジュームを実装する。

– 予約されたRAMエリアを除き、Snapshotを取得する。

– Snapshotのサイズは最大500MBまで。

– Snapshotもメモリページロードをサポートすることで、大きなSnapshotでも起動時間を短縮することが期待できる。

• 要求項目– 電源管理機能を実装する:BSPにはSYSGEN_PMを含む。

– Snapshotを保存するために必要な記憶領域をBootloaderが使用できること。

– ドライバはPowerUp()、PowerDown()、またはIOCTLPowerSetによる電源管理機能をサポートすること。

どうでもいい話ですが、WEC2013の情報は英語サイトにしか記載がありません。注意。

Page 7: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

7

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

Snapshot Bootの概念

12

Power On

H/W初期化(最低限)

Snapshotイメージ展開

Resume処理ジャンプ

PowerUp

デバイスの再初期化

システムリジューム

システム起動

SnapshotImage

Storage Device

SnapshotImage

SDRAM

Expand & Copy

Resume

1. 電源投入 コールドブート

2. H/Wを初期化する(最低限)

3. Snapshotイメージ展開(Storage Device RAM)

4. PowerUpシーケンスに移行し、システムをリジュームする

5. Snapshotを取得した位置からシステムが動作する

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

Snapshotの取得

13

IOCTL_KLIB_MAKESNAP

Snapshotの取得

OEMGetSnapshotRegions()

メモリ仕様の通知(Opt.)

OEMTakeCPUSnapshot()

CPU状態の保存

OEMCompressSnapshot()

Snapshotの圧縮(Opt.)

OEMPrepareSnapshot()

Snapshot用ストレージの準備

OEMWriteSnapshot()

Snapshotをストレージに保存

システムのサスペンド/リジューム機能を利用し、Snapshotを取得 不揮発性メモリへ保存する一連の処理開始をシステムに要求する。

CPUコンテキスト、OS RAM以外にSnapshotに含めるべき領域(ドライバグローバル領域など)の存在を問い合わせるためのコールバック関数。

OEM固有の情報(CPUコンテキスト等)をSnapshotとして取得するためのコールバック関数。

Snapshot取得後にイメージを圧縮するために呼び出されるコールバック関数。

Snapshotを不揮発性メモリに書き込む直前に呼び出されるコールバック関数。不揮発性メモリの初期化などの準備を実装する。

不揮発性メモリにSnapshotを書き込むコールバック関数。引数で指定されたオフセット、サイズに従い不揮発性メモリにデータを書き込む処理を実装する。

Page 8: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

8

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

Snapshotからの起動

14

OEM Bootloader code

Snapshotからのブートを判定

SnapRestore()

Snapshotの読込みと展開

OEMReadSnapshot()

Snapshotの読込み

OEM CPU Snapshot restore code

CPUコンテキストのリストア

OEMSnapshotResume()

ハードウェアの再初期化

最小のBootloaderでSnapshotブートかを判定し、Snapshotからの起動を選択する。

SnapshotをRAMにロードし、そのイメージを復元する。

本コールバック関数は、Bootloader、OS双方で同じ機能を必要とする。Bootloaderでは不揮発性メモリからSnapshotを読み込む。OSではPageableで読み込む場合に使用する。

OEM固有の情報(CPUコンテキスト等)をリストアする。

BootloaderからOSに実行制御が切り替わった直後に呼び出されるコールバック関数。コールドブートと同等のハードウェア初期化を行う。OEMInit()を再利用することも可。

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

メモリレイアウト

15

• Snapshotブートに対応したメモリレイアウト

SNAP_BUF

NK

RAM

BootloaderでSnapshotをロード展開するためのバッファ。与えられたサイズに合わせてロードするため、サイズに制限は特にない。

Snapshotから展開されたNK領域。OSのコードはすべてここに含まれる。

Page 9: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

9

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

不揮発性メモリへのSnapshotの配置

16

• 使用する不揮発性メモリの仕様に合わせ、Snapshotを配置す

る。ファイルシステムを使用する場合は、そのファイルシステムをアクセスする機能を実装することが求められる。– NORフラッシュ

– NANDフラッシュ

– eMMC– SD Card

• SnapshotブートはBootloaderで不揮発性メモリをアクセスする

ため、ファイルシステムを必要とするデバイスの場合、Bootloaderにファイルシステムを実装することが必要。- WEC2013:CE Boot Framework Filesystemサポート(FAT, BinFS) ブロックデバイスサポート(IDE、Flash Memories) BinFSサポート

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

修正・確認のポイント

17

目的 対象ファイル等 修正・確認ポイント

メモリレイアウト Config.bib Snapshot Bootに合わせたMEMORYセクションの変更。

Snapshotブート関数 GetSnapshotState Snapshotの状態を示す。TSnapState GetSnapshotState (void);

SnapChkSum メモリのチェックサムを求める。

SnapRestore OEMが準備した読込み関数を使用して、Snapshotをリストアする。

コールバック関数 関数 OEMPrepareSnapshot()OEMWriteSnapshot()OEMTakeCPUSnapshot()OEMSnapsotResume()OEMCompressSnapshot()GetOEMRamTable()OEMReadSnapshot()

オブジェクトストアの最適化

OEMCalcFSPages OEMCompressSnapshot()のランレングス圧縮方式を

採用した場合、オブジェクトストアの領域は圧縮率が極めてよくない。OEMCalcFSPages()で、オブジェクト

ストアを必要最小限にすることが望ましい。

Page 10: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

10

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

Snapshotブートの起動時間

18

CPU, SDRAM初期化

OSイメージコピー

Snapshotコピー

リジューム処理

SnapshotブートPower ON

起動ステップ 所要時間 前提条件等

CPU, SDRAM初期化 <0.1s

OSイメージコピー 2.0s OSイメージサイズ:64MB転送速度:32MB/s

Snapshotコピー 2.0s Snapshotサイズ:64MB転送速度:32MB/s

リジューム処理 1.5s PowerUpシーケンス

合計 5.5s 標準ブートに対し4.5sの短縮

CPU, SDRAM初期化

OSイメージコピー

OS起動、デバイスドライバ初期化

アプリケーション起動

標準ブートPower ON

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

Snapshotの取得位置の決定

19

• Snapshotの取得位置により起動時間は変わる

• Snapshotブートは、そのサイズと動作開始位置により、起動時間が変化する。– 最初に必要なアプリケーション:Snapshotに含める。

– 必要に応じて起動するアプリケーション:Snapshotに含めない。

• Snapshot取得位置を適切に決定することが、ブート時間短縮のポイント。

取得位置Snapshot

イメージサイズOS起動時間

OS起動後のアプリケーション動作開始時間

OS起動直後 小 速い 遅い

一部のアプリケーション起動後

中 普通 普通

全てのアプリケーション起動後

大 遅い 速い

Page 11: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

11

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved. 20

4. より高速なSnapshotブートへのアプローチ

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

OSイメージの分割

21

• BinFS対応システムの構成が大きくなり、OSイメージを不揮発性メモリからRAMへコピーする時間が大きい場合。– BinFSを導入、1st NK(Tiny)と2nd NK(Pageable)に分割する手法。

– 1st NKの読込みが速く、2nd NKの読込みではページ単位で読み込んでいくため、起動時間の短縮が期待できる。

Page 12: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

12

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

BinFS対応メモリマップ

22

SNAP_BUF

CHAIN

RAM

BootloaderでSnapshotをロード展開するためのバッファ。与えられたサイズに合わせてロードするため、サイズに制限は特にない。

CHAIN/1st NK/2nd NKはすべて隣接させる

1st NK(Tiny)

2nd NK(Pageabe) RAMエリアと2nd NKがオーバーラップしても動作には影響しない。

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

Snapshot読込みの高速化

23

• Pageable SnapshotSnapshotのサイズが大きく、不揮発性メモリからRAMから読出し、展開・コピーする時間がかかる場合。– 動作に必要となったメモリページからロードしていく事で、Snapshot全

体を読み込むことなくシステムの起動時間短縮を図る。

– 1st Nk:BinFS立ち上げに最低限必要なモジュール/データで構成されたOSイメージ。

– Pageable Nk:1st Nk以外のモジュール/データにより構成されるOSイメージ。

SNAP_BUF

CHAIN

RAM

1st NK(Tiny)

2nd NK(Pageabe)2nd Nk

不揮発性メモリ

必要なメモリページから読み込んでいく。

Page 13: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

13

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

最後に

24

• ブート時間の短縮はシステムごとに要求時間、実装の手法、方法が異なります。

• WEC2013では、WA5.0/5.5で自動車向けに提供されたSnapshotブートを汎用組み込みシステム向けに活用することが可能になりました。

• 日立超LSIシステムズでは、自動車向けSnapshotブートの実

装経験を通じ、様々なシステムの起動時間短縮の対応が可能です。

• ブート時間の短縮でお困りのお客様は、お気軽にご相談ください。

© Hitachi ULSI Systems Co., Ltd. 2014. All rights reserved.

株式会社 日立超LSIシステムズ

組込プラットフォーム設計部

スナップショットブートの全貌WEC2013の高速起動

2014/04/25

伊藤 優

END

Page 14: WEC2013の高速起動download.microsoft.com/download/9/F/1/9F14FA12-2746-4B10... · 2018-10-16 · 処理内容 高速化メソッド 高速化の内容 hdd/nand flash から dram

14