[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:359

From: SASADA Koichi <ko1 atdot.net>
Date: Tue, 7 Dec 2004 13:52:58 +0900
Subject: [yarv-dev:359] Re: Stack caching

 ささだです。


MAEDA Atusi wrote:
> SASADA Koichi <ko1 atdot.net> writes:
> 
> 
>> はて、なんででしょうか? ほんと全然見当が付きません。
>>
>> あとは、Intel CPU のマイクロ命令への変換の過程でどうの、くら
>>いしか思いつきません。つまり、利用するローカル変数が多いと
>>Intel CPU は遅くなるとか?
> 
> 
> 何が起きてるのか測れないですかねえ。Performance-Monitoring Counter
> (PMC)使って。MSRだっけ。

 VTune で、そいつらを使った計測が簡単にできます。

 で、VC版 の結果を見てみたところ、retire 命令数は SC 版のほう
が小さいのですが、indirect jump における misprediction の数
が、SC 版のほうが多かったです。

 コンパイル時に吐くアセンブラを見ても、そんな要素はなさげだと
思ってたんですが、もしかしたら、そのアセンブラリストからさらに
最適化かけてるのかもしれません。

 dumpbin で逆アセンブルしてみるのも手なんですが、でかすぎて、
せめて行番号くらい出してくれないと読めません。なんかいい手ない
ですかね。


----

 gcc 版のほうですが、マシンを再起動したら SC ありのほうが速
かったです。いったい何が起こったんだろう。目の錯覚(ただのミ
ス)ではなかったと思いたいんですが、はて?


 で、首藤さんに言われてスタックキャッシュのための変数を

	register VALUE reg_a asm("esi");

みたいにしたら、もうちょっと速くなりました。

> cygwin/gcc 3.3.3
> yarv  1.782000   0.000000   1.782000 (  1.796000) direct threaded / SC
> yarv  2.000000   0.000000   2.000000 (  2.009000) direct threaded / SC なし
> yarv  2.562000   0.000000   2.562000 (  2.588000) switch/case / SC あり
> yarv  2.875000   0.000000   2.875000 (  2.918000) switch/case / SC なし

register VALUE reg_a asm("esi");
register VALUE reg_b asm("edi");

を指定すると:

> yarv  1.640000   0.000000   1.640000 (  1.719000) direct threaded / SC
> yarv  1.703000   0.000000   1.703000 (  1.735000) direct threaded / SC なし
> yarv  2.468000   0.000000   2.468000 (  2.483000) switch/case / SC あり
> yarv  3.062000   0.000000   3.062000 (  3.102000) switch/case / SC なし

素ruby
> ruby 15.468000   0.000000  15.468000 ( 15.533000)


 ちなみに、
 register VALUE reg_b asm("edi");
 みたいな指定は VC では無理ですかね?


-- 
// SASADA Koichi at atdot dot net
//

--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       354 2004-12-07 09:50 [ko1 atdot.net       ] Stack caching                           
       355 2004-12-07 10:10 ┣[ko1 atdot.net       ]                                       
       356 2004-12-07 10:46 ┣[shudo computer.org  ]                                       
       358 2004-12-07 13:43 ┃┗[ko1 atdot.net       ]                                     
       357 2004-12-07 10:57 ┗[maeda-yarv atusi.org]                                       
->     359 2004-12-07 13:52  ┗[ko1 atdot.net       ]