- ベストアンサー
クロックの求め方
CPUが3.2GhzのPentium4なのですが,四則演算一回の処理に1.4nsかかる時,この処理にかかるクロックは何クロックになるのでしょうか?たすきがけでできるというのを見て,1秒→3.2x10^9クロック,1.4x10^(-9)秒→?クロックなので3.2x1.4=4.48クロック,と自分なりにやってみたのですが…これで合っているのでしょうか?ひとつお願いします.
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
はじめまして。 CPUが3.2GhzのPentium4 ・・という部分はあまり関係ないのですね? 1.4nsが3.2GHzで何クロック?と言う意味なら 1.4/(1/3.2G)=1.4x3.2=4.48です。 ところで、現在のCPUの処理時間を見積もるのは極めて難しいです。 実際に膨大なデータを処理させて実測し見積もるほか手はないと思います。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
a+=1; を 1億回繰り返したとのことですが, アセンブリに落したときに inc eax が 1億個並んでいれば確かに 1億回の加算 (というかインクリメント) の時間がわかりますが, mov ecx, 100000000 inc eax loop -3 だと分岐に必要な時間も込みになりませんか? それはともかく, Pentium4 くらいになるとデコードにかなり時間がかかるんですが, inc や add の実行ステージは確か 0.5クロックだったような....
お礼
回答ありがとうございます.分岐ですか,考えもしませんでした.
- jacta
- ベストアンサー率26% (845/3158)
1.4nsというのはどうやって調べたのでしょうか? 四則演算一回といっても、加減算と乗除算ではかかる時間も違うはずです。 正確にクロック数を求めるには、命令セットを確認しながらになると思いますが、キャッシュのリプレースや割り込み等が発生した場合には、実際にかかる時間はもっと増えてしまいます。 最終的には何が知りたいのか、また3.2GHzのPentium4を使ったどんなハードウェアかによって、調べ方は変わってくると思います。
お礼
補足までつけていただきありがとうございました. 1.4nsは加算です.clock()で時間を計り,a+=1を1億回繰り返してから加算一回の時間を出しました.確かに乗除算したり,実数で計算させるとさらに時間がかかりました.言葉足らずですいませんでした.
お礼
なるほど,やはりその計算でよいのですね. ありがとうございました.