x86命令の所要クロック計測スレ
■ このスレッドは過去ログ倉庫に格納されています
06931 ◆.MeromIYCE
2005/10/29(土) 10:46:36えーと、大変な間違いを犯していました。
"mov ax,[esi]" の "movをmovzxにしても全く同じ1000回ループ4680clk"とある。
馬鹿正直にmovをmovzxに変え、movzx ax,[esi] で測定していた。
本来はmovzx eax,word ptr [esi] と書くべきだった。
本当は、Dothanでmovzxは1μopでパーシャルストールのカウンタも反応しない。
movzxという命令に対する無知が原因です。
>>680、>>690、申し訳ないです。
>>690
上のコードは、4.6clk、6μop、パーシャルレジスタストール2[clk?]。
下のコードはそのP6の結果と同じでした。
確かにDothanではパーシャルレジスタが改善されている。
それから、パーシャルストールの値を見ると、P6ではクロック数を返すのだね。
Dothanでも多分クロック数だな。偶数が出ることが多い。
実際にストールしているわけではないので、きれいなクロック数になるのだろう。
まとめ。
Dothanではmovzxの振る舞いはP6と同じ。1μopで速い。
パーシャルレジスタの動作はP6と違い、μopが1つ余計に発行されストールは起きない。
ただしrdpmcで見るとパーシャルストールとしてカウントはされている。
ループ当たりのクロック数が4.6clkとか半端なのは2μop命令でデコードがきついのだろう。
■ このスレッドは過去ログ倉庫に格納されています