宇都宮大学 大学院地域創生科学研究科 工農総合科学専攻 横田・大津研究室

PearLab, Utsunomiya Univ.

Japanese/ English

シミュレーション時間の短縮

シミュレーションって何?

皆さんは「シミュレーション」という言葉を耳にしたことがあるでしょうか?
シミュレーションには『コンピュータなどを使用して模擬的に実験を行い、実際の場合と同じ結果を得ようとするもの。』(大辞泉)という意味があります。
自動車の衝突シミュレーションだとか、津波のシミュレーション、といった具合に様々な分野で使われています。
車を衝突させるとなるとお金がかかるし、津波の被害を調べるために実際に津波を発生させるわけにもいきませんよね。そういった実験の代わりに、シミュレーションが使われているのです。

当研究室でもプロセッサをシミュレートするプロセッサ・シミュレーションをガンガン使用しています。
実際にプロセッサを作るとなると様々なコストがかかります。そのため、「設計ミスで正しく動かないプロセッサが出来た。でもまた作り直せばいいや」とは気軽にはいきません。何か機能を修正する場合も同じで、作り直すために莫大な時間やお金がかかるのです。
そこでシミュレーションの出番です。シミュレーションを行うシミュレータはプログラムなので、実物をもう一度作り直すよりもはるかに簡単に修正が可能になるのです。

シミュレーションって便利!でも・・・

非常に便利なプロセッサ・シミュレーションですがモチロン欠点もあります。
プログラム(シミュレータ)の上でプログラムが実行されることになるので、実際のプロセッサで実行した場合よりも時間がかかります。

基本的にシミュレーションの実行速度と精度はトレードオフの関係があります。つまり、より完璧に再現しようとすると時間がかかり、逆に短時間でシミュレーションを行おうとすると再現率が低くなってしまうのです。
研究では高い精度のシミュレーションが求められます。つまり時間のかかるシミュレーションを行わなければならず、それが問題となっていました。

コード差分実行によるシミュレーション時間短縮法

そこでシミュレーションの高速化や時間短縮の方法について研究が行われています。
ここではコード差分実行によるシミュレーション時間短縮法について紹介します。

非常に時間のかかるシミュレーションですが、実はプログラムの一部のコードを実行した結果だけ知りたい、という場合が多々あります。つまり、プログラムを最初から最後まで全部する必要がなかったりします。
下の図を例としましょう。赤い部分がシミュレーションを行いたい部分です。本来であれば矢印の左側のように最初から最後までシミュレーションを行う必要がありました。
提案手法では、以前の結果を利用して、必要な赤い部分のみを実行いします。「今回のシミュレーション」と「以前のシミュレーション」の内容が以前と同じことを利用して、異なる部分のみを実行するのです。

簡単にいってしまうと、必要な部分だけシミュレーションを行おう、というものです。
以前のシミュレーションの状態を利用して、以前とは異なるコード部分のみのシミュレーションを行います。
これにより、ムダなシミュレーションが減り短時間でシミュレーションを行うことができるのです。