[H8-ML(307)] Re: Cで作成したプログラムの実行速度
From: M Sakurai <ji1nzl@xxxxxxxxxxxxxxx>
Date: 1999年09月15日(水)10時28分24秒
From: Kouhei Ito さん<kouhei@xxxxxxxxxxxxxxxx>
Subject: [H8-ML(303)] Cで作成したプログラムの実行速度
 こんにちは、こうへいさん

> それで、今まではアセンブラ一筋だったのですがCに浮気することになりました。
> そこで気になるのはサンプリング時間内にコントローラーが計算を終了して
> 制御対象に制御入力を出力できるかということです。
> 私は秋月のCコンパイラを使用していますが、プログラム上でのある過程がどのく
> らいの時間が掛かるのかを知る方法は無いものでしょうか?

秋月社のCコンパイラは、分かりませんが、商用のCコンパイラは、最適化が
非常に高度にされるようになっており、数年前に言われたアセンブラのほうが
速いどころか、コンパイラを使って最適化と高速アルゴリズムを採用すること
で、開発効率も良く、更に速度性能も良い結果が得られます。

実行時間の測定は、周知とは存じますが、ICEが便利です。が、使えない
場合は、ダイナミックステップの実行ステート数(クロック数)を
カウントして、1周期時間(動作クロック周波数の逆数)を掛けます。
さらに、CPUでのデコード、フェッチ、実行のパイプライン並列処理が
乱れることによるオーバーヘッド遅れ時間を考慮し、実用的には
10〜20%水増しした実行時間にする方法も使うことがあります。
大まかな時間を知りたい場合は、この計算方法で十分です。
(割込み処理が頻繁に入る場合は、さらにその時間を加味する。)

> 実際に計測できればいいのですがそのような機材はありません。
> おそらく吐き出されるマシン語のコードから概算時間を割り出すことができると
> 思うのですが・・・・
> 
> それに関連してですが、よくこの命令を実行するのには、何ステートかかると書
> かれていますがこのステートとは1ステート=1クロックといううことなのでし
> ょうか?

実質同じと考えて良いようです。H8のマニュアルでは、ステートという
語で記述されており、ちょっと昔は、クロックという語を使っていましたが、
最近のトレンドかな。

M Sakurai, ji1nzl@xxxxxxxxxxxxxxx

PS.
Linux/GNU VineLinux Free Version <- なかなかのGood 環境 Windows
より安定で、日本語化がかなり洗練され、使いやすくなった。

本屋さんでCDROM付きがいろいろでています。2500円くらい。お勧め。
(ただし、最新のパソコンでは走らないく、ちょっと前のもの
が良好)

DELL Optiplex XMT-590 (PC-AT compatible)
Pentium CPU freq = 90MHz,Bus freq = 60MHz
48Myte DRAM,1GB IDE HDD+2GB E-IDE HDD
SoundBlaster 16




スレッド概略
[表示中](起点)


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]