I have a piece of assembly code analyzed for Skylake in uiCA
Throughput (in cycles per iteration): 5.25
Bottleneck: Issue
The following throughputs could be achieved if the given property were the only bottleneck:
- DSB: 3.67
- Issue: 5.25
- Ports: 5.00
- Dependencies: 2.00
M - Macro-fused with previous instruction
┌───────────────────────┬────────┬───────┬───────────────────────────────────────────────────────────────────────┬───────┐
│ MITE MS DSB LSD │ Issued │ Exec. │ Port 0 Port 1 Port 2 Port 3 Port 4 Port 5 Port 6 Port 7 │ Notes │
├───────────────────────┼────────┼───────┼───────────────────────────────────────────────────────────────────────┼───────┤
│ 1 │ 1 │ 2 │ 0.51 1 0.49 │ │ push r15
│ 1 │ 1 │ 2 │ 1 1 │ │ push r14
│ 1 │ 1 │ 2 │ 0.27 1 0.73 │ │ push rbx
│ 1 │ 1 │ 1 │ 1 │ │ cmp esi, 0x63
│ │ │ │ │ M │ jnle 0x2a
│ 1 │ 1 │ │ │ │ mov rbx, rdi
│ 1 │ 1 │ 1 │ 0.2 0.31 0.36 0.13 │ │ movsxd r15, esi
│ 1 │ 1 │ 1 │ 1 │ │ lea r14, ptr [rip+0x21]
│ 1 │ 1 │ 1 │ 0.64 0.36 │ │ lea rsi, ptr [rbx+r15*1]
│ 1 │ 1 │ │ │ │ mov rdi, r14
│ 1 │ 1 │ │ │ │ xor eax, eax
│ 2 │ 2 │ 3 │ 0.58 0.24 1 0.42 0.76 │ │ call 0x5
│ 1 │ 1 │ 1 │ 0.47 0.53 │ │ lea rax, ptr [r15+0x2]
│ 1 │ 1 │ 1 │ 0.4 0.07 0.27 0.27 │ │ cmp r15, 0x62
│ 1 │ 1 │ │ │ │ mov r15, rax
│ 1 │ 1 │ 1 │ 1 │ │ jl 0xffffffffffffffe7
│ 1 │ 1 │ 1 │ 0.49 0.51 │ │ pop rbx
│ 1 │ 1 │ 1 │ 0.51 0.49 │ │ pop r14
│ 1 │ 1 │ 1 │ 0.49 0.51 │ │ pop r15
│ 2 │ 2 │ 9 │ 1.11 0.84 2 2 1 1.16 0.89 │ │ ret
├───────────────────────┼────────┼───────┼───────────────────────────────────────────────────────────────────────┼───────┤
│ 21 │ 21 │ 28 │ 2.29 3.33 3.73 4.29 5 2.67 3.71 2.98 │ │ Total
└───────────────────────┴────────┴───────┴───────────────────────────────────────────────────────────────────────┴───────┘
But I have no idea on what everything means (Googling also didn't give any useful stuff). So can someone explain me what each thing in the output means (Like what is DSB, Issue, Ports, Dependencies...), and how can I compare this code with another code?