イマドキの組み込みシステムに
ついて語ろう
Kinect から OpenCL まで


            株式会社サムシングプレシャス
                      古賀信哉
札幌市在住
 (株)サムシングプレシャス代表取締役
 組み込み機器分野に軸足を置いたソフト屋

Microsoft MVP: Windows Embedded
  http://mvp.microsoft.com/profiles/A3D3BFEA-8A25-4960-9870-
    1FBE11FDCA28


使ってきたプログラミング言語
 UtiLisp, Scheme, C++, C, Objective-C
 Java, ARM アセンブラ, C#, etc.
ET ロボコン北海道地区大会実行委員会
 モデル駆動開発(UML 設計記述と実機動作)
 役割:審査委員長&技術委員長(2011, 2012)


Device2Cloud コンテスト審査委員会
 http://www.d2c-con.com/

 センサー + CPU ボード + クラウドサービス
 役割:技術委員(長)

   どちらも、組み込みシステムに関する
   コンテスト
Arduino から Armadillo-800 EVA まで




Arduino Uno             Armadillo-800 EVA




                    NXTway-ET
                    (ET ロボコン)
Arduino: AVR 8bit MCU (16MHz)
• SRAM: 1~8KB, Flash: 8~128KB   (Uno has 2nd AVR 8bit for USBSer)




ET ロボコン: ARM7TDMI 32bit MCU (48MHz)
• with AVR 8bit MCU (8MHz)
• RAM: 64KB, Flash: 256KB


Armadillo-800 EVA: ARM Cortex-A9 (800MHz)
• with SH4A (600MHz), PowerVR SGX540      (within the package/die)
• RAM: 512MB, Flash: 8GB (eMMC)
プロセッサ (CPU) のクロックや
メモリ容量では、決まらない。
ちなみに・・・
僕の入社時の「配給」マシン:

          SPARC station SLC
          Fjitsu MB86901A/sun4c 20MHz
          RAM: 8MB/16MB
          diskless
単機能
「汎用」プラットフォームではない
 PC, スマートフォン, タブレット


メンテナンスのコストが高い
アップデートの工夫が必要
 ex. Mars path finder


大量製造
コストダウンの圧力が高い
POS 端末
 据置型、携帯型

ハンディターミナル
 宅配便、検針機

アーケードゲーム
キオスク端末
 x86 + Windows Embedded XP/Standard
工場のライン制御(eg. 計測機)

品川駅の自動販売機



ネットワークカメラ
ドライビングアシストコンソール




医療機器 (x86 + Linux, and GPU)
 「映像」カルテ用の録画/再生機
 遠隔地診断補助用の大量画像圧縮機
個々の要素技術は、他の分野と共通する
ものが多い
OS
 uITRON →Linux, Windows (for embedded)


プログラミング言語
 C/C++, Java/C#   (たまにアセンブラ)


インターネットアクセス
 デジタルTV、IoT
ET ロボコンの例
 コンテストの対象:組み込みに特化している
 わけではない


 Bluetooth 利用モデル
 クラウドコンピューティングとの相似性

 リソース制約と時間制約のある端末
 より豊富なリソースの「サーバ」
 サーバとの間の通信の隘路
適用される局面が違う→各々の重要さが
異なる。

信頼性     メンテナンスのコストが高い!



         大量製造:コストダウン圧力!
低消費電力
         (運用コストを含む)

ハードウェアのパフォーマンスを、最大限に
引き出す
ハードウェアの特性
SoC (System On Chip) 化
 様々な周辺機器コントローラが内蔵される
 CPU の演算能力よりも、I/O がボトルネック



グラフィクスはプロセッサ内蔵が普通に
 ノート PC やモバイル機と共通に
プロセッサのパフォーマンス向上




ARM 全盛
 PC; Windows タブレットでも!
クラウド連携
Android
Siri


画像処理能力の進化
デジタルカメラ
iPod touch/iPhone
Kinect
GPU コンピューティングの台頭
Android 端末の電池もたない問題



ソフトウェアアーキテクチャの共通化/
統一化の必要性
 電源管理のサブシステムとドライバフレーム
 ワーク
 Linaro
 Windows 8 での取り組み
高度なグラフィクス
組み込み機器用プロセッサ(SoC)のグラフィ
クス機能が強化
 Freescale i.MX3x, 5x, 6
 TI OMAP3, 4
 NVIDIA Tegra



組み込みプラットフォーム/OS のグラフィク
ス機能も強化
 OpenGL ES 2.0
 Flash, Silverlight for Embedded
CPU の省電力化
 SoC 化
 単純化(スーパースカラ/out-of-order)

CPU の並列化:周波数増大から並列度向上へ
 複数の ALU(ハイパースレッディング, SIMD)
 マルチコア化

CPU と GPU を同じダイに
 バス消費電力を抑える
 GPU の積極活用:CPU との性格の違いを活かす
NVIDIA Tesla 20 シリーズ
 Tesla M2050
  並列プロセッサコア:28, メモリ:3GB GDDR5


TSUBAME 2.0
 2010年11月のスパコン Top500 ランキング4位
  日本最速(※2011年6月に、京が1位に!)
 2010年11月の Green500 で2位
  IBM BlueGine/Q, 国立天文台 GRAPE-DR に次ぐ
 958.35 MFLOPS/W (1192TFLOPS)
  京:828.67, BlueGineQ: 1684.20
 ピーク時消費電力:1MW以下(京は 9.89MW)
典型的な構造                                  SIMD 型 ALU の列(8~16)




   AMD Radeon HD6970                             NVIDIA GeForce GTX580
出典: “Heterogeneous Computing with OpenCL (2012, Morgan Kaufmann)
大量の(並列動作)ALU と、単純な制御回路




   データ並列処理に、大きな威力を発揮
       浮動小数点演算
       プログラマブルシェーダを発展させたアーキテクチャ
出典: “Programming Massively Parallel Processors” (2010, Morgan Kaufmann)
ET ロボコンでの例

弊社の事例
 ダウンロード実行:アップデートの改善



Everything over HTTP, evertything over
JavaScript!
アプリケーションの開発効率の重要性
サービス進化への追随

JSX by DeNA とか
ジェスチャー
  マルチタッチのタッチパネル



NUI (Natural UI)
  組込み機器の、新しい使われ方
   手術中に PC を操作(Kinect)
デバイス単体ではない
クラウド上のサービスまで含めた、全体とし
てのアプリケーション/システム


サービスまで含めた製品づくり

大規模化するソフトウェア開発
労働集約から知識集約へ
ET ロボコン
 ソフトウェアの再利用促進
 知識集約のために


 モデル駆動開発
 大規模開発のリスク軽減


 プロダクトラインへ向かって
Device2Clolud コンテスト
 「新たなサービスを生みだす力を持ったデバ
 イスを!」

 組み込み開発/デバイスアプリケーション開
 発と、クラウド上のサービス開発を繋ぐ

OSC 2012 Hokkaido でのプレゼン資料