[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 1115] Re: alekto0 OK



光成です。

川合さん
>>写し間違えていました(笑)
>とても安心しました(笑)。

おさわがせして申し訳ありませんでした。

>  完全に脇道にそれますが、上記のプログラムを以下のようにするとAG
>Iによるストールが軽減できそうな気がします。

引き続き脇道にそれますが、それは正しくないです。
PentiumIIIには驚くべきことにAGIストールがありません。

かりに私の書いたコードをtestA, 川合さんがかかれたコードをtestBとすると
PIIIではtestAは8clock/loop, testBでは9clock/loopと余計に時間がかかっています。

私も今資料を理解しようとしている最中ですが、PIIIでは適当にコードを書いても
内部で適切な順序に並び変えられてしまうためP5とは最適化の手法が大幅に変わっ
ています。
#じゃあ、何故testBが遅いの?と言われると...ただいま勉強中。

>ん?でも、Pentium MMXでも僕のコードなら9クロックくらいで回れるかも?

psubd   mm3,[edx+24] などのread&modify命令が入ってるので遅くなりそうな
気がしますが、どうなのでしょうか。それから、
lea     edx,[edx+64]
jnz     .lp
がpairing実行されたら次のloopの先頭でやはりAGIストールを起こしそうな
気がします。

ちなみにAthlonでは(旧コアなのでメモリを小さく4096byteに変更して)
testA 6.8clk, testB 7.75clk (PIIIと同じ128 Kbyteでは約30clk)

K6III on TOWNSでは(やはりsize=4096)
testA 11.6clk, testB 12.6clk
でした。