PRESS RELEASE (技術)
2012年3月13日
株式会社富士通研究所
CPUの動作を実時間精度で忠実に再現できる世界最高速のシミュレーション技術を開発
超高速シミュレーションにより、複雑化する電子機器システムの開発を加速
株式会社富士通研究所(注1)は、携帯電話や電子機器のCPUなどで広く使われているARMコア(注2)を利用したシステムを対象に、シミュレーション実行時にハードウェア上での動作を実時間精度で忠実に再現(サイクル動作)できる、世界最高速のシミュレーション技術を開発しました。
ARMコアを用いたシステムの開発は近年、飛躍的に複雑になっており、システムの動作が設計通りであるかの事前検証や、OSやアプリケーションなどのソフトウェア開発において、より高速で、かつ、よりハードウェアに忠実で精度の高いシミュレーションの技術が求められています。今回、シミュレーションの高速実行基盤であるJITコンパイル方式(注3)をベースにサイクル動作シミュレーションを低負荷でおこなう技術を開発することにより、標準PC上の環境でOSを含むARMマルチコアシステムのサイクル動作シミュレーションを従来比100倍高速となる100MHz以上で行うことが可能になりました。ハードウェア上での実時間動作との誤差も約±5%であり、精度の高いシミュレーションを高速に実行することができます
本技術により、広く普及が進むARMコアを採用したシステムの開発期間をスピードアップすることが可能となり、多様な機器やシステム開発への応用が期待されます。
本技術の詳細は、3月12日(月曜日)からドイツ・ドレスデンで開催される国際会議「DATE 2012(Design, Automation & Test In Europe)」にて発表いたしました。
開発の背景
ARMコアは、携帯電話や電子機器のCPUとして世の中のさまざまな機器やシステムで利用されています。こうした機器やシステムはこの10年で飛躍的に複雑化していますが、競争に打ち勝つために開発期間(Time to Market)は短くなる一方です。限られた開発期間の中で使い易さや品質も追及しなければならないため、新しい機器やシステムを短期間で開発するための支援技術が必須となっています。
図1 携帯電話を例とした開発背景
課題
ARMコアを用いたシステムの開発においては、開発期間を削減するためにシステムの動作が設計通りであるかを事前に検証するためのシミュレーションが使われており、高速かつ、よりハードウェアに忠実で精度の高いシミュレーション技術が必要となっています。
ARMコアを高速にシミュレーションするには、JAVAなどで使われるJITコンパイル方式と呼ばれるシミュレーション技術を使うのが一般的です。しかし、JITコンパイル方式は時間情報を忠実に再現するには不向きなため、サイクル動作のシミュレーションが必要な場合は、これまでのJITコンパイル方式よりも数百倍遅いシミュレーション技術を利用するしかありませんでした。
開発した技術
今回、ARMコア向けとして、JITコンパイル方式並みに高速でありながら、かつ高精度なサイクル動作シミュレーション技術を開発しました。これにより、標準PC上の環境でOSを含むARMマルチコアシステムのサイクル動作シミュレーションを従来比100倍高速となる100MHz以上で動作することが可能になりました。ハード上での実時間動作との誤差も約±5%であり、精度の高いシミュレーションを高速に実行することができます。
開発した技術の特長は以下の通りです。
- サイクル精度のJITコンパイル技術
ハード上での実時間レベルの動作を忠実かつ高速に再現するために、従来のJITコンパイル方式に最適に適合する実時間計算アルゴリズムを開発しました。
図2は従来のJITコンパイル方式の処理の流れです。ARMの実行プログラムはベーシックコードと呼ばれるブロック単位でパソコン上のx86(注4)の実行プログラムに翻訳され、実行プロセスにてそのプログラムが実行されます。ここでx86の実行プログラムはメモリにキャッシュされ、その後、キャッシュにヒットする限りは翻訳プロセスを繰り返さずに実行プロセスのみで再実行が可能です。JITコンパイル方式では機能レベルのコードに限定されるため、命令あたりのコード数が少なく負荷も軽くなります。また一般的にキャッシュのヒット率が高いため高速な実行が可能となります。
図3は、JITコンパイル方式に今回の実時間計算アルゴリズムをどのように融合させたかを示します。単純にサイクル動作のコードを生成した場合、機能レベルのコードに限定されるJITコンパイル方式に比べて、時間情報を含むため、命令あたりのコード数が機能コードだけの場合に比べて数百倍となり、実行スピードも数百倍遅くなってしまいます。そこで今回、実時間計算を、(1)予測に基づく静的な時間解析、(2)静的解析に基づく単純な時間加算、(3)予測ミス時の動的な時間補正とに分離し、それぞれをJITコンパイルの翻訳プロセスと実行プロセスに適切に割り振ることにより、この問題を解決しました。翻訳部分がキャッシュに見つかり、かつ、(1)の静的な時間解析時に設定したどのタイミングで命令が実行されるかの予測が成立する限りは、(2)の時間の差分を単純に加減算する軽い処理のみが繰り返されるため、高速な実時間計算が可能です。(1)の予測が成立しなかった場合は、(3)の時間解析が実行され時間補正が行われます。そして、未翻訳部分を検出した場合は、翻訳プロセスにて新たな翻訳処理として(1)の時間解析処理が行われます。(1)、(3)の処理は時間解析のため処理が重くなりますが、全体を通して数%程度しか参照されないため、結果として実行遅延を低く抑えることが可能となりました。
- マルチコア対応技術
ARMコアはマルチコア化が急速に進んでおり、サイクル動作シミュレーション技術もマルチコアに対応します。今回のサイクル精度のJITコンパイル技術は各コアでそれぞれ別々に実時間計算を行うことができるため、各コアの負荷が均等になるような負荷分散が可能となり、マルチコアでも速度劣化の少ない高速なサイクル動作シミュレーションが可能です。
図2 一般的なJITコンパイル処理の流れ
図3 今回の実時間動作シミュレーション込みのJITコンパイル処理の流れ
図4 開発した技術の特徴
効果
本技術により、広く普及が進むARMコアを採用する電子機器やシステムの開発スピード向上が期待されます。
今後
シミュレーションのさらなる高速化・高精度化と、対応するARMコア種の拡大を進めており、ARMコアを利用したより幅広いシステムの開発へも応用していく予定です。
商標について
記載されている製品名などの固有名詞は、各社の商標または登録商標です。
以上
注釈
- 注1 株式会社富士通研究所:
- 代表取締役社長 富田達夫、本社 神奈川県川崎市。
- 注2 ARM:
- ARM Limitedの登録商標。
- 注3 JITコンパイル方式:
- ソースコードやバイトコードを逐次解釈するのではなく、プログラム実行前にネイティブコード(CPUが直接実行できるマシン語)に変換してから実行することで処理速度を上げる方式。
- 注4 x86:
- Intel社が開発したマイクロプロセッサのアーキテクチャー。
- 注5 FPGA:
- Field Programmable Gate Arrayの略で、書き換え可能な論理ゲートが格子状に並ぶセミカスタムLSI。
- 注6 ESL:
- Electronic System Levelの略で、ハードウェア記述言語のRTL(Register Transfer Level)よりも抽象度の高いレベルでモデル化を行う手法。
- 注7 QEMU:
- オープンソースの仮想CPUエミュレータ。
本件に関するお問い合わせ
株式会社富士通研究所
ITシステム研究所 デザインイノベーション研究部
044-754-8830(直通)
fsim_arm@ml.labs.fujitsu.com
プレスリリースに記載された製品の価格、仕様、サービス内容、お問い合わせ先などは、発表日現在のものです。その後予告なしに変更されることがあります。あらかじめご了承ください。