4.2 Pipelines d'instructions

Supposons qu'un CPU prenne 3 cycles pour une multiplication de paire. Combien de temps prendra-t-il pour multiplier n paires ? Nous pourrions dire 3 n cycles. Il est possible de réduire ce nombre.

La multiplication aura lieu dans une ligne de production. Nous pouvons avoir plus d'une paire de nombres en calcul en même temps. Dans ce cas, les multiplications prendront n + 2 cycles.

plop

Notre but, pour atteindre cette vitesse, est de garder le pipeline rempli.

Dans une architecture avec pipelines, il est préférable d'avoir le moins possible de branches.

Moins de branches :

1
2
3
do i=start,end
    a(i) = b * c(i)
end do

Moins de multiplications :

1
2
3
4
5
6
7
8
9
do i=start,end
    if( c(i) == 0 )
        a(i) = 0
    else if( c(i) == 1 )
        a(i) = b
    else
        a(i) = b * c(i)
    end if
end do