yarv-dev:348
From: Yukihiro Matsumoto <matz ruby-lang.org>
Date: Mon, 6 Dec 2004 09:06:04 +0900
Subject: [yarv-dev:348] Re: Operand unification
まつもと ゆきひろです In message "Re: [yarv-dev:346] Operand unification" on Mon, 06 Dec 2004 07:34:52 +0900, SASADA Koichi <ko1 atdot.net> writes: | そこで、自暴自棄になった私は、無駄な命令をどんどん突っ込んでみること |にしました。つまり、ある命令 A があったとき、A_1 、A_2、...のように、 |違う名前で同じ命令をどんどん突っ込んでみたのです(具体的には、ひとつの |命令につき、10 の無駄な命令を作りました)。ただし、無駄な命令は、何も |動作しない命令にしてみました(本当は、複製を複数作ろうとしたのだけれ |ど、プログラムをミスって(ボディ部を複製するのを忘れていて)エントリポ |イントだけになりました。replication も試してみたかったんですが)。する |とどうしたことでしょう。gcc でコンパイルした結果が、非常に高速になった |ではありませんか。(しつこいか) | | これは、gcc の場合だけだったのですが(VCではならず)、非常に不思議で |す。命令統合については、残念ながら、あんまり芳しい結果にはならなかった |のですが(でも、この命令を増やした後では少し速くなる(1.27 -> 1.17 |(sec)))、命令を凄く増加させることで、かなりの高速化が果たせました |(1.53->1.27(sec))。 | | かなり不思議です。 Anton Ertl (Vmgenの偉い人)がコードコピーでBTB (Branch target buffer)のミスが減ってパフォーマンスが上がるって論文を書いて たように思います。でも、今Googleしても見つかりません。IMVEの 論文だと思ってたけど、違うみたい。ACM SIGPLANのどこかだと思 うのですが。 今回の現象と関係あるかどうかは分かりません。 これかも↓ PLDI'03か。 http://www.eecg.toronto.edu/~steffan/carg/readings/optimizing-indirect-branch-prediction.pdf -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
346 2004-12-06 07:34 [ko1 atdot.net ] Operand unification 347 2004-12-06 08:55 ┣[ko1 atdot.net ] -> 348 2004-12-06 09:06 ┣[matz ruby-lang.org ] 349 2004-12-06 09:10 ┃┗[ko1 atdot.net ] 350 2004-12-06 11:25 ┗[shudo computer.org ] 351 2004-12-06 16:47 ┗[ko1 atdot.net ]