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

[OSASK 1112] Re:alekto0 OK



光成です。

>  Pentium3/450Eがひどい値ですねえ。もう一桁あってもおかしくない
>です。うーん、単に写し間違えたとかだと助かるのですが・・・。

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

>  それと一応確認なのですが、これは「cntupc1」の結果ではなくて、
>「countup1」の結果なのですね?

名前が多くてどれだか分からなくなりましたが、alekto0に付属のuser.bin
です。COUNTUP1.BINと同じファイルサイズ1146byteなのでそうだと思います。

>Athlonの値も1ループ当たり2clocksに低下(K6シリーズとの比較)
>しているので、少し気になったのです。

これは仕方がないです。PentiumIII, Athlonはパイプラインがめちゃくちゃ
深くなっています。したがってこんなに短いループではその性能を出せません。
例えばひたすら128kByteのメモリを読み込みながら無意味な演算をする次の
ルーチンですらloopあたり8clockで実行します。(今試してみました)

void test1( char *buf, int size );
test1( buf, 128*1024 );
/* かかった時間は16766clk@Coppermine700MHz */
/* 1loopあたり 16766/(128*1024/64) = 8.18clk */

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