古賀信哉
株式会社サムシングプレシャス
なにをいまさら( ´_ゝ`)
だいたい、前のバージョンで
SMP対応してたじゃん?
何が良くなったのか/
前は何が足りなかったのかを
お話しします。
社名 株式会社サムシングプレシャス
本社所在地 〒001-0010
北海道札幌市北区北10条西1丁目4-2
フォーレストビル2F
TEL/FAX:(011)-756-4080
支店・営業所所在地
設立 2003年11月(※2004年10月に株式...
札幌市在住
(株)サムシングプレシャス代表取締役
組み込み機器分野に軸足を置いたソフト屋
Microsoft MVP: Windows Embedded
http://mvp.microsoft.com/profiles/A3D3BFEA-8A...
Blog(古賀 信哉のWindows CE Blog)
http://www.stprec.co.jp/ceblog/author/koga/
Twitter
shkoga
SlideShare
http://www.slideshare.ne...
自社製品
“Armadillo” シリーズ用の BSP
MTP ホストドライバ(WEC/WinCE 用)
委託開発
自社製 BSP のカスタマイズ
ARM ターゲットのカーネル移植(BSP)
追加のデバイスドライバ
アプリケーション
※at ET 2012
※at ET 2012
どちらかといえば、
少量(<3,000)多品種の
製造に関わっています。
さて、本題。
x86/IA
Intel Atom (Clover Trail+)
AMD G-series
ARM
NVIDIA Tegra2/3/4
Qualcomm S3/4
Samsung Exynos 4/5
TI OMAP4, Freescale ...
マルチコアを活かすのは難しい
並行プログラミングの難しさ
アプリケーション開発者が普通に使えるもの
シングルコアを前提としたインフラ
~.NET CF 3.5
~Android 2.2, 2.x(Dalvik)
プラットフォームの肥大化
WEC...
マルチコアを活かすのは難しい
並行プログラミングの難しさ
アプリケーション開発者が普通に使えるもの
シングルコアを前提としたインフラ
~.NET CF 3.5
~Android 2.2, 2.x(Dalvik)
プラットフォームの肥大化
WEC...
この課題に、
どう対応したのか
マルチコアに関する主要な改善点
カーネル
.NET Compact Framework 3.9
C++11 対応
その他の改善点
カーネル
.NET Compact Framework 3.9
C/C++ コンパイラの強化
from Windo...
カーネル
カーネルスレッド
schdule.c の ciritical section の増加; 12 -> 14
排他制御
Slim Reader/Writer Lock の導入
ARMv7 命令の積極使用
DMB, DSB, etc.
.NET Compact Framework
VM (CLI) のスレッドをネイティブに(?)
参考: embedded 101 の Compact 2013 Ebook
“13.3 Managed Code Apps”
http://embe...
C++11 対応 (VS 2012)
スレッド標準ライブラリ
AMP(Accelerated Massive Parallelism)
PPL(Parallel Pattern Library)
C++11 の auto, smart poin...
カーネルの SMP 性能を改善
.NET CF と C++11 での
プログラミングを改善
カーネル
Snapshot Boot (> Andriod)
ハイバネーションの一種:
ユビキタス社の QuickBoot と似ている(?)
システム(OS + App)の起動時間を
数秒以内に抑えることが可能
(※要実装・チューニング)
ちな...
.NET Compact Framework 3.9
GC の改善
世代別 CG (> Android)
起動時間の短縮(shared server)
JIT コードのプロセス間共有 (> Android?)
C/C++ コンパイラの強化 (VS 2012)
auto-vectorization (and auto-parallization)
ARM コンパイラの VFP/Neon ネイティブサポート
C/C++ RunTime の整備
ARM の...
OS の起動時間を短縮
マネージドコードの
応答性改善・起動時間短縮
ネイティブコードの
高速化(コンパイラ改善)
仕組み
ハイバネーション + on demand loading
snapshot を作成して保存(ハイバネート)
起動:最低限必要な仮想空間イメージのみをロード
ブートローダと kernel の loader で対応
1.) 必須な領域のロー...
実装手順
実装ガイドがリファレンスに記載
サンプルコードもあり
詳細は Web で!
“Snapshot Boot Development (Compact 2013)”
http://msdn.microsoft.com/en-us/libr...
おまけ
WEC 2013 =
WEC 7 – many + α
インフラ
CPU アーキテクチャ
MIPS(and SH)
ARMv6 以下
ミドルウェア
色々…
標準シェル(explorer)
UPnP, MTP, etc.
ハンドヘルドデバイスや
STB 向けの機能は削除(?)
インフラ
CPU アーキテクチャ
MIPS(and SH)
ARMv6 以下
ミドルウェア
色々…
標準シェル(explorer)
UPnP, MTP, etc.
ハンドヘルドデバイスや
STB 向けの機能は削除(?)
大丈夫。
WEC 7 は...
Upcoming SlideShare
Loading in …5
×

組み込みでもマルチコア。WEC2013での対応

1,785 views

Published on

7/19 に日本マイクロソフト関西支店で開催された、国内の Windows Embedded MVP によるセミナー「真夏の組み込みWindows技術セミナー2013 西日本編 ~ Windows Embedded MVP が大阪に集結!」でのプレゼン資料。

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,785
On SlideShare
0
From Embeds
0
Number of Embeds
49
Actions
Shares
0
Downloads
6
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

組み込みでもマルチコア。WEC2013での対応

  1. 1. 古賀信哉 株式会社サムシングプレシャス
  2. 2. なにをいまさら( ´_ゝ`)
  3. 3. だいたい、前のバージョンで SMP対応してたじゃん?
  4. 4. 何が良くなったのか/ 前は何が足りなかったのかを お話しします。
  5. 5. 社名 株式会社サムシングプレシャス 本社所在地 〒001-0010 北海道札幌市北区北10条西1丁目4-2 フォーレストビル2F TEL/FAX:(011)-756-4080 支店・営業所所在地 設立 2003年11月(※2004年10月に株式会社へ組織変更) 資本金 1,450万円 従業員数 4名(常勤役員含む) 事業内容 コンピューターのソフトウェアの設計・開発、試作 ・情報家電向けミドルウェア ・組込み機器向けデバイスドライバ ・カーネル移植(WEC/WinCE)
  6. 6. 札幌市在住 (株)サムシングプレシャス代表取締役 組み込み機器分野に軸足を置いたソフト屋 Microsoft MVP: Windows Embedded http://mvp.microsoft.com/profiles/A3D3BFEA-8A25-4960-9870- 1FBE11FDCA28 使ってきたプログラミング言語 UtiLisp, Scheme, C++, C, Objective-C Java, ARM アセンブラ, C#, etc. 強い静的型付けの言語が好き: Eiffel の DbC は、設計手法で影響を受けた。
  7. 7. Blog(古賀 信哉のWindows CE Blog) http://www.stprec.co.jp/ceblog/author/koga/ Twitter shkoga SlideShare http://www.slideshare.net/ShinyaKoga
  8. 8. 自社製品 “Armadillo” シリーズ用の BSP MTP ホストドライバ(WEC/WinCE 用) 委託開発 自社製 BSP のカスタマイズ ARM ターゲットのカーネル移植(BSP) 追加のデバイスドライバ アプリケーション
  9. 9. ※at ET 2012
  10. 10. ※at ET 2012
  11. 11. どちらかといえば、 少量(<3,000)多品種の 製造に関わっています。
  12. 12. さて、本題。
  13. 13. x86/IA Intel Atom (Clover Trail+) AMD G-series ARM NVIDIA Tegra2/3/4 Qualcomm S3/4 Samsung Exynos 4/5 TI OMAP4, Freescale i.MX6 Dual/Quad OpenCL な GPU(GPGPU) も、 “組み込み”向けに導入され始めた。
  14. 14. マルチコアを活かすのは難しい 並行プログラミングの難しさ アプリケーション開発者が普通に使えるもの シングルコアを前提としたインフラ ~.NET CF 3.5 ~Android 2.2, 2.x(Dalvik) プラットフォームの肥大化 WEC 7 Android 3.0 以降 OS のブート時間や アプリケーションの起動時間が長い! 2.3 で GC が改善 3.0 で SMP 対応に
  15. 15. マルチコアを活かすのは難しい 並行プログラミングの難しさ アプリケーション開発者が普通に使えるもの シングルコアを前提としたインフラ ~.NET CF 3.5 ~Android 2.2, 2.x(Dalvik) プラットフォームの肥大化 WEC 7 Android 3.0 以降 OS のブート時間や アプリケーションの起動時間が長い! 2.3 で GC が改善 3.0 で SMP 対応に http://www.slideshare.net/ShinyaKoga/2012-0323spwce-devenvpublic
  16. 16. この課題に、 どう対応したのか
  17. 17. マルチコアに関する主要な改善点 カーネル .NET Compact Framework 3.9 C++11 対応 その他の改善点 カーネル .NET Compact Framework 3.9 C/C++ コンパイラの強化 from Windows Phone 7.x from Windows Automotive(?)
  18. 18. カーネル カーネルスレッド schdule.c の ciritical section の増加; 12 -> 14 排他制御 Slim Reader/Writer Lock の導入 ARMv7 命令の積極使用 DMB, DSB, etc.
  19. 19. .NET Compact Framework VM (CLI) のスレッドをネイティブに(?) 参考: embedded 101 の Compact 2013 Ebook “13.3 Managed Code Apps” http://embedded101.com/Compact2013eBook/Compact2013EbookContent/tabi d/143/ArticleId/89/language/en-US/13-3-Managed-Code-Apps.aspx
  20. 20. C++11 対応 (VS 2012) スレッド標準ライブラリ AMP(Accelerated Massive Parallelism) PPL(Parallel Pattern Library) C++11 の auto, smart pointersと合わせると、 C# ライクなコーディングが可能 (C++11 の auto は、C# の var に相当) 並行プログラミングの敷居を下げる改善
  21. 21. カーネルの SMP 性能を改善 .NET CF と C++11 での プログラミングを改善
  22. 22. カーネル Snapshot Boot (> Andriod) ハイバネーションの一種: ユビキタス社の QuickBoot と似ている(?) システム(OS + App)の起動時間を 数秒以内に抑えることが可能 (※要実装・チューニング) ちなみに:Armadillo-4x0 + WEC 7/WinCE 6.0 でも、6秒程度での起動が可能 (※20MB 程度の OS イメージの場合) 詳細は後述
  23. 23. .NET Compact Framework 3.9 GC の改善 世代別 CG (> Android) 起動時間の短縮(shared server) JIT コードのプロセス間共有 (> Android?)
  24. 24. C/C++ コンパイラの強化 (VS 2012) auto-vectorization (and auto-parallization) ARM コンパイラの VFP/Neon ネイティブサポート C/C++ RunTime の整備 ARM の ABI が、ようやく EABI になった! Windows RT の ARM コンパイラからの フィードバック(ref. MSDN’s Win8 blog) 逆に、Windows 8 の Power Management ドライバは Compact の SoC 対応の考え方を取り入れた?
  25. 25. OS の起動時間を短縮 マネージドコードの 応答性改善・起動時間短縮 ネイティブコードの 高速化(コンパイラ改善)
  26. 26. 仕組み ハイバネーション + on demand loading snapshot を作成して保存(ハイバネート) 起動:最低限必要な仮想空間イメージのみをロード ブートローダと kernel の loader で対応 1.) 必須な領域のロードと HW 初期化(ブートローダ) 2.) その後は on demand でロード(kernel の loader) non pageable な領域だけを先行ロード この領域を小さく抑えることが起動時間短縮に寄与
  27. 27. 実装手順 実装ガイドがリファレンスに記載 サンプルコードもあり 詳細は Web で! “Snapshot Boot Development (Compact 2013)” http://msdn.microsoft.com/en-us/library/dn169259.aspx Snapshot の取り方も載っています。
  28. 28. おまけ WEC 2013 = WEC 7 – many + α
  29. 29. インフラ CPU アーキテクチャ MIPS(and SH) ARMv6 以下 ミドルウェア 色々… 標準シェル(explorer) UPnP, MTP, etc. ハンドヘルドデバイスや STB 向けの機能は削除(?)
  30. 30. インフラ CPU アーキテクチャ MIPS(and SH) ARMv6 以下 ミドルウェア 色々… 標準シェル(explorer) UPnP, MTP, etc. ハンドヘルドデバイスや STB 向けの機能は削除(?) 大丈夫。 WEC 7 は、あと5年 (or 10年)は現役です!

×