andreas-abel / uiCA

uops.info Code Analyzer
GNU Affero General Public License v3.0
230 stars 16 forks source link

Time of operations grows? #10

Closed chriselrod closed 3 years ago

chriselrod commented 3 years ago

For example,

    .intel_syntax noprefix
L64:
        vmovapd xmm4, xmm1
        vmulsd  xmm1, xmm2, xmm1
        vsubsd  xmm1, xmm1, xmm3
        vmulsd  xmm3, xmm1, qword ptr [rax + 8*rdx]
        vaddsd  xmm0, xmm0, xmm3
        inc     rdx
        vmovapd xmm3, xmm4
        cmp     rcx, rdx
        jne     L64
as -msyntax=intel cheb2.asm -o cheb2.o
uiCA.py cheb2.o -arch TGL -trace cheb2.html

executiontimeline

andreas-abel commented 3 years ago

I'm not sure what the question here is. Is it about the time between issuing and retirement? This time grows in your example because of the dependencies between successive loop iterations.

chriselrod commented 3 years ago

Okay, that makes sense. Sorry, I was naively expecting it to start at the asymptotic point, but it is more informative to start at iteration zero. The delta between dispatched and executed is of course remaining constant, and that's probably the most important metric to focus on.