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

[OSASK 1113] Re: alekto0 OK



  こんばんは、川合です。


Mitsunari Shigeo さんは 2000/09/01 17:02:48 の「[OSASK 1112] Re:
alekto0 OK」で書きました:

>写し間違えていました(笑)
>>Athlon 600 : 3004??kc/s
>>PIIIE  450 : 22272?kc/s
>でした。

  とても安心しました(笑)。

>>  それと一応確認なのですが、これは「cntupc1」の結果ではなくて、
>>「countup1」の結果なのですね?
>名前が多くてどれだか分からなくなりましたが、alekto0に付属のuser.bin
>です。COUNTUP1.BINと同じファイルサイズ1146byteなのでそうだと思います。

  わざわざ確認していただいてありがとうございます。ちなみに、サイ
ズで確認する以外にも、ウィンドウタイトルに表示される名前で区別で
きます。・・・が、実行するのは面倒ですね。

>>Athlonの値も1ループ当たり2clocksに低下(K6シリーズとの比較)
>>しているので、少し気になったのです。
>これは仕方がないです。PentiumIII, Athlonはパイプラインがめちゃくちゃ
>深くなっています。したがってこんなに短いループではその性能を出せません。

  どうもそのようです。

  しかし、本当にループが短いのが直接原因なのかは少し疑問に感じて
います。ループが短くても分岐予測がヒットすれば影響が無いような気
がします。ループが短いことよりも、前の演算結果をすぐに参照しよう
としていることがいけないのかもしれません。・・・しかし、これも僕
の勝手な推測で十分な証拠はありません。

  K6が立派だったので過信していました。すみません。

>proc test1
>        mov     edx,[esp+4]
>        mov     ecx,[esp+8]
>        shr     ecx,6
>lp:
>        movq    mm0,[edx]
>        add     edx,64
>        movq    mm1,[edx-56]
>        movq    mm2,[edx-48]
>        paddd   mm7,mm2
>        psubd   mm3,[edx-40]
>        paddd   mm7,mm3
>        movq    mm4,[edx-32]
>        paddd   mm7,mm4
>        psubd   mm5,[edx-24]
>        paddd   mm7,mm5
>        movq    mm6,[edx-16]
>        paddd   mm7,mm6
>        dec     ecx
>        movq    mm7,[edx-8]
>        jnz     .lp
>        emms
>        ret

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

proc test1
        mov     ecx,[esp+8]
        mov     edx,[esp+4]
        shr     ecx,6
lp:
        movq    mm0,[edx]
        movq    mm1,[edx+ 8]
        movq    mm2,[edx+16]
        dec     ecx
        paddd   mm7,mm2
        psubd   mm3,[edx+24]
        paddd   mm7,mm3
        movq    mm4,[edx+32]
        paddd   mm7,mm4
        psubd   mm5,[edx+40]
        paddd   mm7,mm5
        movq    mm6,[edx+48]
        paddd   mm7,mm6
        movq    mm7,[edx+56]
        lea     edx,[edx+64]
        jnz     .lp
        emms
        ret

  それにしてもこれを8クロックで処理するなんて、いい時代になりま
したねえ。・・・ん?でも、Pentium MMXでも僕のコードなら9クロック
くらいで回れるかも?(試していないので断言は出来ません)。それで
も、僕はその1クロックの差が偉大だと思います。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.or.jp
Homepage http://www.imasy.or.jp/~kawai/