> Si les cycles n'ont pas la même durée, il se peut qu'on ait pas le même nombre de cycle.
Mais la fréquence d'un proc est telle que à chaque cycle - à chaque fois que l'horloge fait tic - le processeur se trouve dans un état stable et défini, chaque registre ayant une valeur bien définie.
Prenons un exemple d'un opération complexe : la division.
Admetons que l'algo de division soit capable de d'extraire 2 bits par cycle d'horloge.
Pour faire une division de 2 nombre de 32bits il faudra 16 cycles dans mon exemple.
Cette opération élémentaire prend un certain temps (électriquement ). disons 1 ns.
Si c'est l'opération la plus lente du processeur, c'est elle qui va déterminer la fréquence max de fonctionnement de proc. dans notre cas 1 Ghz.
La division s'effectuera en 16ns.
Si tu fais fonctionner le proc + rapidement, il risque de fonctionner correctement pour les autres opérations mais risque de planter lamentablement parce que le registre final dans lequel est inscrit le résultat de la division n'a pas été mis à jour à temps, et l'instruction suivante utilise se registre sans savoir s'il a été mis à jour (là encore y'a plein de subtilités).
Là, plusieurs possibilités pour accélérer ton proc:
1 - Faire une nouvelle révision du proc, raccourcir les pistes, réarranger les unités de calcul et gagner quelques pouillèmes de secondes sur l'opération la plus lente (qui ne s'executera qu'en 0,8 ns ce qui permettra de monter le proc à 1,25 GHz ( à conditions bien sûr qu'il n'y ait pas d'autres problèmes de synchronisation, de dégagement thermique, etc.)
La division s'effectuera en 13 ns
2 - Utiliser une autre méthode pour diviser. Par exemple un algo qui ne calcul qu'un seul bit par cycle mais qui tourne deux fois plus vite (0,5 ns). Du coup, il faudra 32 cycles pour avoir le résultat.
Si tu arrives à faire grimper la fréquence de ton proc à 2Ghz. Ta division s'effectuera toujours à la même vitesse (16 ns) mais le reste des opération ira nettement plus vite.