...

パソコンのCPUクロックがGHzを越え

by user

on
Category: Documents
7

views

Report

Comments

Transcript

パソコンのCPUクロックがGHzを越え
Prologue
今後の組み込みシステム開発で重要なツールの一つ
シミュレータ / エミュレータによる
イマドキの組み込み開発
編集部
ルします.Android エミュレータは ARM 命令を実行し,さらに
1
シミュレータとエミュレータ
CPU 命令の実行だけでなく Android が動作するハードウェアを
模 擬します. よっ て Android エミュ レー タで動 作したバイナ
近年,パソコンの CPU クロックが GHz を越え,それまでは難
リ・イメージはそのまま Android 端末の実機でも動作します.
しかったシミュレータ / エミュレータが実用的な速度で動くよう
iOS シミュ レー タは,ARM 命 令(iPhone に搭 載されている
になってきました.これを使って,組み込みシステムをシミュ
CPUはARM系)
を実行しているわけではありません.iOSシミュ
レータ / エミュレータで開発する動きが出てきました.本特集で
レータで走らせたいプログラムは,iOS シミュレータが動作する
はシミュレータ / エミュレータを使った組み込みシステム開発に
システムの CPU のネイティブな命令(実際には x86 系命令)にコ
ついて解説します.
ンパイルしてから実行します.よって iOS シミュレータで走らせ
…と,その前に,シミュレータ / エミュレータとは何なのか,
たバイナリ・イメージは,そのままでは実機で動作しません.
あらためて考えてみましょう.
実機で動かすためには,ARM 用に再コンパイルする必要があり
● シミュレータ?エミュレータ?
ます.
「シミュレータ」と「エミュレータ」,あなたはどのように使い
● 実機の再現性
分けていますか? 特集に入る前に,まずはこの二つの用語に
いずれにせよ,実機とシミュレータ / エミュレータ上では,ど
ついて整理しておきましょう.この二つの用語を理解するのに
うしても違いが発生します.どの程度実機に近いかを示す指標
ちょ うどよい比 較 事 例が,「Android エミュ レー タ 」
( 図 1)と
として,再現性という言葉が使われます.一般的にシミュレー
「iOS シミュレータ」
(図 2)です.比較を表 1 に示します.
タの再現性は,エミュレータよりは劣るといわれています.
Android エミュレータで実行できるのはあくまで ARM 命令の
しかし iOS シミュレータはかなりの実機再現性を持っており,
実行バイナリなので,プログラムを ARM 用にクロス・コンパイ
Android エミュレータより実機に近いともいわれます.これは
iPhone が,ハードウェアからソフトウェアまで一貫して Apple
社 1 社で開発されているため,という理由もあります.
● シミュレータとエミュレータの使い分け
実際のところ,シミュレータとエミュレータの使われ方は少
し混乱しているように見受けられます.用語の使い分けを考え
る上で,その源流をさかのぼってみましょう.
そもそも,コンピュータで別のコンピュータのソフトウェア
を実行したいという要求は 1960 年代のメイン・フレーム IBM
System/360 の時代に生まれました.参考文献(1)によると,
『それまでは,ある計算機のために書かれたプログラムをその
ままの形で別の計算機で処理するのには,シミュレーション法,
すなわちソフトウェアによって処理する方法が取られていたが,
図 1 Android エミュ レー タの画
面例
図 2 iOS シミュレータの画面例
表 1 「Android エミュレータ」と「iOS シミュレータ」の比較
Android エミュレータ
実行バイナリ
ARM 命令
実機とのバイナリ互換性
互換性あり
実行速度 / 重さ
重い
iOS シミュレータ
x86 命令
互換性なし
(再コンパイルが必要)
軽い
Android は ARM 以外の CPU でも動作するが,ここでは ARM に限定する
24
シミュレータ,エミュレータ
これでは処理速度が著しく低下する.そこで,これをハードウェ
ア,ソフトウェアの組み合わせによって効率良く処理するよう
にしたのがエミュレーションであり,ハードウェアの部分は主
としてマイクロプログラムを変更あるいは追加することによって
実現するものである.』
とあります.マイクロプログラムとは,当時の CPU ではやった
方式で,乗算や除算などの複雑なアセンブリ命令を,内部的に
は複数の単純に置き換えて実行するものです(ただし,その「単
純な命令」はソフトウェアからは見えない内部処理になってい
May 2012
Prologue
シミュレータ / エミュレータによるイマドキの組み込み開発
くだん
る)
.件の System/360 は旧機種と新機種の間でソフトウェアの
RX などの CPU の機械語命令を逐一 x86 の機械語に翻訳しつつ,
互換性がなかったため,生み出されたのがエミュレーションと
実行していくものです.そのため,前者と比較して速度が落ち
いう手法です.とはいえ,
ますが,エミュレータさえ作ればどんな CPU のプログラムでも
『小型機ではマイクロプログラムだけで処理されるものもある
動かすことができます.
が,一般には語長や処理装置の構成の違いのため,マイクロプ
ログラムだけで行うのは実際的でなく,ソフトウェアも使用さ
れている.』
と,だんだん定義があやふやになってきています.フル ICE(In-
3
1
なぜ組み込み開発で
エミュレータを使うのか
Circuit Emulator)はハードウェアを使って CPU のふりをするこ
では,なぜ組み込み開発でエミュレータが使われるようになっ
とから間違いなくエミュレータですが,JTAG-ICE などはそもそ
てきたのでしょ うか? エミュ レー タを使 っ た組み込みソフト
もエミュ レー ショ ンしていませんし,Android エミュ レー タ
ウェア開発の利点を次に示します.
は高速化のためにハードウェアを使っていないのが遅い原因だ
● ハードウェアが完成していなくてもソフトウェアの開発
し… 注 1.
pro
が進められる
以上を踏まえて本特集では,特集タイトルこそ「シミュレータ」
たとえ試作基板であっても,ハードウェアの製作には時間が
と題しましたが,x86 系 CPU を搭載したパソコン上で,x86 系以
かかります.エミュレータなどを使わない開発の場合は,試作
外の CPU の命令バイナリを実行するということで「エミュレー
基板ができあがってこないと,その上で動作するソフトウェア
タ」という用語を使うことにします.
の開発を始められませんでした.しかしエミュレータを使うと,
App
1
2
App
2
ハードウェア開発と並行してソフトウェア開発を進められます
2
エミュレータの動作による違い
(図 3)
.
● ハードウェアをプログラマの人数分用意しなくてもよい
読者の皆さんも既に VMware や VirturalBox といったソフト
複数人数で行う開発の場合,開発者の人数分だけ試作基板を
ウェアを使って,Windows 上で Ubuntu を動かしたりしている
用意するのが難しい場合が多々あります.そのようなとき,ど
と思います.
うしてもハードウェアとして実機が必要なデバイス・ドライバ
このように,「パソコン上で,違う OS やハードウェアのソフ
などの担当者にのみ試作基板を使ってもらい,上位アプリケー
トウェアを動かす」というのが漠然としたエミュレータのイメー
ションの担当者にはエミュレータを使ってもらうと,分担して
ジです.しかし,これらのエミュレータは技術的に幾つかに分
ソフトウェア開発を進められます.
類できます.
● エラー処理ルーチンの動作確認
● CPU をエミュレーションするかどうか
外部との通信部分にはエラーが発生しやすい箇所です.その
これらエミュレータを分類する上での一番大きな違いは CPU
ため通信ドライバ部分には,エラー処理ルーチンを埋め込むの
のエミュ レー ショ ンをするかどうかです. 例えば VMware や
が一般的です.しかし開発の現場では実際にはなかなかエラー
Xenは,エミュレータ本体がx86上のWindowsやLinuxで動作し,
が発生しないものです(そもそも,そう簡単にエラーが発生する
その上で x86 のプログラムが動きます.それに対し,QEMU や
場合は,通信インターフェースの物理層に問題がある).
Bochs などは x86 上の Windows や Linux で動 作し, その上で
エミュレータを使った開発では,普段は発生しにくいエラー
ARM や RX などの「x86 以外の」プログラムが動作します.ここ
をあえて発生させる処理をエミュレータ内に埋め込み,ソフト
3
4
App
3
5
6
が大きな違いです.
7
前者は x86 上で x86 のプログラムを動作させることから,高速
な動作が期待できます.これらの場合,エミュレータ本体が動
ハードウェアの開発
く OS(ホスト OS)の上で別の OS(ゲスト OS)を動かすことが目
開発期間
的が大半です.
(a)ハードウェアの完成後にソフトウェアを開発する場合
後者は CPU のエミュレーションを行うことにより,x86 とは
命令体系の全然違う ARM や RX などの CPU のプログラムを動
ハードウェアの開発
かすことができます.CPU のエミュレーションとは,ARM や
注 1:Appendix 1 で解説するが,QEMU は dyngen によりアセンブリ 1 命令
をマイクロオペレーションと呼ばれる手法により,複数の命令に変換し
ながら実行している.この動作が「マイクロプログラムを使ってエミュ
レーションする」というエミュレータの定義と似ている.
May 2012
ソフトウェアの開発
図 3 ハー ドウェ ア
とソフトウェ
ア開発期間
ソフトウェアの開発
開発期間
(b)ハードウェアとソフトウェアを同時に開発する場合
25
特集 ARM,RX,SH-2をシミュレータで再現!最新実機レス開発
ウェアによるエラー処理が正しく行われるかどうかを確認すると
● CPU のみのエミュレーションだけでは不完全
いう使い方も可能です.
組み込みシステムの世界では,CPU のみを再現しても不完全
● クリティカルな処理のステップ実行
です.組み込みシステムにはスイッチ入力や LCD 表示,モータ
割り込み処理に代表されるようなクリティカルな部分は,バ
制御などさまざまな I/O 装置がつながります.これらの周辺機
グが紛れ込みやすい処理の代表です.このような部分は,ステッ
能も再現しなければ,組み込み開発の世界でエミュレータを使
プ実行により一つ一つ状態を確認して実行できるとよいのです
う意味はなくなります.
が,実機ではそうもいかないときがあります.実機上で CPU を
具体的には,I/O ポートの再現が必要です.現在の CPU はメ
止めることはできても,周辺機能まで停止させることはできな
モリマップド I/O 方式なので,特定のアドレスに特定の値を書き
いのが一般的です.
込むことにより,端子を‘L’レベルにして LED を点灯させたり,
例えばタイマ割り込み処理の場合は,デバッガでブレークを
逆に特定のアドレスから値を読み込むことにより,Ethernet コ
かけた後,変数の状態などをウォッチしている間に,タイマ・
ントローラからデータを受け取れるようになります.このような
コントローラのカウント・レジスタの内容はどんどんカウント
しくみも必要になるのです.
アップしてしまい,ブレークしたときの状態を参照することが
できません.
エミュレータの場合は,周辺機能も含めて止めることができ
るので,ブレークしたときのタイマ・カウンタの値を参照でき
ます.
5
シミュレータ / エミュレータが
使われている組み込みシステム開発分野
ここでは,実際に組み込みシステム開発分野で使われている
シミュレータやエミュレータを見てみましょう.
4
組み込みで使われるエミュレータ
● ハードウェア開発の世界ではシミュレータ
・ FPGA によるハードウェア開発
● x86 系以外の CPU が多用される世界
個人レベルですぐにでも体験できる,シミュレータが重宝す
パソコンの CPU が x86 系一色になってしまったのに対し,組
る分野といえば,FPGA を使ったハードウェア開発でしょう.
み込み機器では x86 系以外のさまざまな CPU が使われています.
評価版の FPGA 開発ツールとともに,ベンダ / デバイス / 回路規
携帯電話や携帯ゲーム機をはじめとした多彩な機器で使われて
模限定版のシミュレータを使うことができます.
いる ARM,車載系で強い V850,ディジタル家電など高性能が
・ ASIC などの大規模ハードウェア開発
要求される分野に使われる MIPS,携帯電話基地局など高速大
大 規 模な ASIC(Application Specific Integrated Circuit)な
容量のデータを扱う分野で使われる PowerPC などです.もちろ
どの開発では,数千万から億の単位の開発費が必要になります.
ん x86 系も Atom の登場やパソコンをそのまま流用した組み込み
デバイスができあがり,動作させてみてから設計ミスに気が付い
機器などで使われていますが,組み込み機器全体の中では一部
たのでは困ります.そこで回路設計にミスがないか,シミュレー
です.
ションを重ねて入念にチェックします.
そのため,組み込み機器でエミュレータを使うには,x86 以外
これらロジック回路のシミュレーションでは ModelSim などの
の CPU をエミュレーションするタイプのエミュレータがほぼ必
シミュレータがよく使われます(図 4)
.
須になります.
● ソフトウェア開発でも使われる
ソフトウェア開発でもシミュレータ / エミュレータは使われま
す.有名どころでは冒頭で紹介した Android エミュレータや iOS
シミュレータがあります.
本特集では,オープン・ソースのエミュレータとして QEMU
を大きく取り上げます.第 1 章から第 3 章までは,QEMU をベー
スとして ARM や SH-2 などの CPU と限定的な周辺機能をエミュ
レーションできるツールを取り上げ,RTOS や Linux などを起
動させてみます.
また QEMU 以外のオープン・ソース・ソフトウェアとして,
第 6 章では SkyEye,第 7 章では Xen のシミュレータとしての応
用事例について紹介しています.
さらに,マイコン向け統合開発環境にシミュレータ機能が搭
図 4 ModelSim のシミュレーション画面例
26
載されているものもあります. 第 4 章では IAR Systems 社の
May 2012
Prologue
シミュレータ / エミュレータによるイマドキの組み込み開発
pro
1
App
1
図 5 MATLAB/Simulink の画面例
写真 1 次号付属 FM3
マイコン基板
2
IAR Embedded Workbench を,Appendix 3 では KEIL 社(ARM
社)の MDK ARM(μVision)を,第 5 章ではルネサス エレクト
App
ロニクスの High-performance Embedded Workshop のシミュ
2
レータ機能について紹介します.
ちなみに,IAR Embedded Workbench や High-performance
3
Embedded Workshop では,JTAG デバッガなどを使って実機
を接続してのデバッグをエミュレータ,実機を接続せずにソフ
トウェアだけで実行する場合をシミュレータと呼んで区別する
ようです.
● ハー ドウェ アとソフトウェ アを連 携したシミュ レー
ション
今後はさらに,ハードウェアとソフトウェアを連携したシミュ
レーションが重要になってくるでしょう.
4
図 6 FM3 マイコン対
応エミュ レー タ
の GUI ア プ リ
ケーション
App
・ CPU を内蔵した SoC システム開発
このような分 野では, 参 考 文 献(3)で紹 介している MAT
単に回 路 規 模が大きなハー ドウェ アだけでなく, 昨 今では
LAB/Simulink がよく使われます(図 5)
.
SoC(System on a Chip)と呼ばれる CPU を内蔵して 1 チップで
● 次号付属 FM3 マイコン基板向けプログラムが走る!
システムを構 成できるデバイスの開 発が増えてきています.
本誌で推奨したいエミュレータのメリットとして,組み込み
ASIC 数個分+ CPU という構成になるので,ハードウェア規模
システム開発の入門用途があります.そこで Appendix 2 では,
だけでも巨大なところに,さらにソフトウェアも絡んできます.
次号本誌付属 FM3 マイコン基板(写真 1)に対応した FM3 マイ
また開発した SoC にバグそのものはなかったとしても,思っ
コン基板エミュレータを用意し,最も基本的な組み込みプログ
たような性能が出ない…という場合もあります.SoC の内部バス
ラムである LED 点滅制御プログラムを実行できます(図 6).
が,CPU の命令アクセスとデータ転送で帯域を奪い合う形にな
り,CPU が待たされてしまうことがあるためです.性能が要求
される場合は SoC 内部に複数のバスを配置し,CPU とデータ転
送とで独立してバスが使える構成にする必要があります.しか
し,やみくもにバスを増やすとコストアップの要因になります.
このあたりを,シミュレータを使って検討するという使い方が,
参考文献(2)で紹介されています.
・アルゴリズム開発
ディジタル信号処理など,アルゴリズム・レベルから開発す
る場合があります.さらに処理性能も要求される場合,どこま
での処理をハードウェアで行うか,どこから先をソフトウェア
に担当させるか,悩ましい問題にぶち当たります.
May 2012
参考文献
(1)相磯 秀夫,飯塚 肇,坂村 健;ダイナミック・アーキテクチャ,
bit 1980 年 8 月号臨時増刊,共立出版,1980.
(2)川原 常盛,竹本 正志,大塚 聡史;ハードウェア / ソフトウェア
協 調 設 計 が 容 易 な Electronic System Level 設 計 に つ い て,
Interface 2009 年 6 月号,CQ 出版社.
(3)特集 手を動かし実践する! MATLAB プログラミング,画像処理
や電力制御から,行列演算 & モデルベース設計を学ぶ,Interface
2011 年 12 月号,CQ 出版社.
(4)特集 組み込み C プログラミングを基本から攻略する!,プログラ
ムはどう動く?シミュレータを使って体験しよう!,Interface
2009 年 4 月号,CQ 出版社.
(5)特集 シミュレータと実機で学ぶ組み込み Linux 入門,ビルド環境
の構築からデバイス・ドライバの作成まで,Interface 2009 年 10
月号,CQ 出版社.
27
3
5
6
7
Fly UP