Hirdetés

Aktív témák

  • P.H.

    senior tag

    Két kódrészt az utolsó kódból - ellátva a megfelelő code-padding-gal - lemértem, a következők adódtak:

    2ND_STEP: 2.0 IPC
    @@2ND_STEP:
    lea ecx,[ebp-04h]
    mov edx,00FFFFFFh
    jmp @c2col
    @zeroincol:
    cmp edx,[esi]
    mov bl,[edi+eax+03h]
    sbb bl,00h
    jz @@DECIDE_NEXT_STEP
    @nx2mtx:
    sub esi,ebp
    add eax,04h
    jnz @zeroincol
    @c2col:
    mov esi,ecx
    add esi,[esp+__MTX]
    sub esi,ebp
    @check2col:
    add esi,04h
    add ecx,04h
    jz @@5TH_STEP
    cmp byte ptr [edi+ecx],00h
    mov eax,ebp
    jnz @check2col
    jmp @zeroincol

    5TH_STEP: 2.7 IPC
    @@5TH_STEP:
    lea ebx,[ebp+03h]
    mov esi,[esp+__MTX]
    @nx5row:
    mov eax,[edi+ebx-03h]
    sub ecx,edx
    xor eax,edx
    cmovs edx,ecx
    mov ecx,ebp
    @decrease_row_free:
    bt dword ptr [edi+ecx],00h
    mov al,[esi+03h]
    adc al,[edi+ebx]
    mov eax,00000000h
    cmovz eax,edx
    sub [esi],eax
    add esi,04h
    add ecx,04h
    jnz @decrease_row_free
    add ebx,04h
    js @nx5row

    Az elsőben elég gyakoriak az (ki)ugrások, a második szinte folyamatos lefutású (mátrixsoronként 1 elágazás-tévesztés van csak)
    K10.5-ön mérve:
    - az overall IPC 2.4 (nem végtelen ciklusban, ezért az tartalmazza a hívó algoritmus kb. 3x ekkora kódját is), ami 80% kihasználtsága a lehetséges maximumnak
    - a @@2ND_STEP 2.0 IPC, ami 66%-os kihasználtság
    - a @@5TH_STEP 2.7 IPC, ez 90% kihasználtság
    (Vajon ezeket az értékeket mennyiben befolyásolja, hogy a @@2ND_STEP sszámolós ciklusa 7 utasításos, a @@5TH:STEP-é pedig 9, ami passzol a K10.5 3 pipe-jához?)

    A @@2ND_STEP-en lehetne javítani, de ahhoz még +1 32 bites regiszter kellene, az meg nincs; 64 biten lesz :)

    [ Szerkesztve ]

    Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

Aktív témák