Bonjour,
Connaissez-vous une table "officielle" qui regroupe la consommation en cycle d'horloge des instructions asm des processeurs intel ?
Je demande ça, pour une raison particulière.
J'effectue un test actuellement pour voir la consommation en cycle d'horloge de plusieurs lignes de codes dans un langage de plus haut niveau, exécutés sur une machine temps réel (mono-coeur).
Basiquement, je fais le test suivant :
getNbCycles n'est qu'une macro qui effectue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var64bits_1 = getNbCycles(); //instructions var64bits_2 = getNbCycles(); affichage(var64bits_2 - var64bits_1);
Dès lors, si j'effectue ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 RDTSC; sauvegarde_eax_edx;
J'obtiens en asm :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var64bits_1 = getNbCycles(); var64bits_2 = getNbCycles(); affichage(var64bits_2 - var64bits_1);
Ce qui m'étonne c'est que le résultat est de 84 cycles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 RDTSC; mov ebx, eax; mov ecx, edx; RDTSC; sbb...
Or un mov reg, reg ne devrait prendre que maximum 1 ou 2 cycles.. si j'ai bon souvenir...
Dès lors, l'instruction RDTSC prendrait-elle 80 cycle à elle seule ?
D'où ma question de départ : Connaissez-vous une table regroupant la consommation en cycle d'horloge des instructions asm des processeurs intel ?
Cela m'aiderait à comprendre le résultat.
Merci.
PS : Dsl, j'ai écris ce message assez rapidement.
Partager