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