en xeon, ¿addq requiere 2 ciclos de reloj?

en xeon, ¿addq requiere 2 ciclos de reloj?

¿Cuántos ciclos se requieren para agregar entradas largas en un xeon?

De las pruebas de cronometraje, parece que se necesitan 2 tics de reloj.

/proc/info dice

nombre del modelo: CPU Intel(R) Xeon(R) X5660 a 2,80 GHz

código c de muestra (loop.02.c)

unsigned long i, j=0;
for(i=0; i<(0xFFFFFFFF);i++)   j+=3;

código ensamblador

21:loop.02.c     **** for(i=0; i<(0xFFFFFFFF);i++) j+=3;
34                            .loc 1 21 0
35 001e 48C745F0              movq    $0, -16(%rbp)
35      00000000
36 0026 EB0A                  jmp     .L2
37                    .L3:
38 0028 488345F8              addq    $3, -8(%rbp)
38      03
39 002d 488345F0              addq    $1, -16(%rbp)
39      01
40                    .L2:
41 0032 B8FEFFFF              movl    $4294967294, %eax
41      FF
42 0037 483945F0              cmpq    %rax, -16(%rbp)
43 003b 76EB                  jbe     .L3

entonces el bucle ejecuta 5 instrucciones:addq addq movl cmpq jbe

el bucle itera 0xFFFFFFFF = 16^8 = 4294967296 = 4G veces

/usr/bin/time -f %e ./loop.02

produce 10,78 segundos, casi todos los cuales están en el bucle

4G*5 instrucciones/10,78 segundos = 1,85G instrucciones/seg

frente a los ciclos/seg anunciados de 2,80 GHz

para un promedio de 2,8/1,8 = 1,6 ciclos/instrucción

esa velocidad tiene sentido si, digamos, 2 de las 5 instrucciones del bucle toman 2 ciclos y las otras toman 1 ciclo.

¿Es esta la interpretación correcta de los resultados del cronometraje?

¿Dónde está una especificación del número de ciclos por instrucción?

información relacionada