Les processeurs modernes sont synchronisés: chaque opération prend un certain nombre de cycles d'horloge. Les concepteurs du processeur déterminent la durée d'un cycle d'horloge. Il y a deux considérations à prendre en compte: premièrement, la vitesse du matériel, mesurée par exemple en tant que retard d'une seule porte NAND. Cela dépend de la technologie utilisée et des compromis tels que la vitesse par rapport à la consommation d'énergie. Il est indépendant de la conception du processeur. Deuxièmement, les concepteurs décident que la durée d’un cycle d’horloge est égale à n retards d’une porte NAND unique, n pouvant être de 10, 30 ou de toute autre valeur.
Ce choix n limite la complexité des opérations pouvant être traitées en un cycle. Il y aura des opérations qui peuvent être effectuées dans 16 cas, mais pas dans 15 délais NAND. Donc, choisir n = 16 signifie qu'une telle opération peut être effectuée dans un cycle, choisir n = 15 signifie que cela ne peut pas être fait.
Les concepteurs choisiront n pour que de nombreuses opérations importantes puissent être effectuées en un, voire deux ou trois cycles. n sera choisi localement optimal: si vous remplaciez n par n-1, la plupart des opérations seraient un peu plus rapides, mais certaines (celles qui ont vraiment besoin de n délais NAND complets) seraient plus lentes. Si peu d'opérations ralentissaient, de sorte que l'exécution globale du programme est en moyenne plus rapide, vous auriez choisi n-1. Vous auriez aussi pu choisir n + 1. Cela ralentit un peu la plupart des opérations, mais si vous avez beaucoup d'opérations qui ne peuvent pas être effectuées dans n délais mais qui peuvent être effectuées dans des délais n + 1, le processeur sera globalement plus rapide.
Maintenant, votre question: Ajouter et soustraire sont des opérations tellement courantes que vous voulez pouvoir les exécuter en un seul cycle. En conséquence, peu importe que AND, OR etc. puisse s'exécuter plus rapidement: ils ont encore besoin de ce cycle. Bien entendu, l’unité "calculatrice" ET, OU, etc. a beaucoup de temps pour se tordre les pouces, mais cela ne peut être réglé.
Notez que la question de savoir si une opération peut être effectuée dans un délai de l'ordre de n retards NAND est ou non: un ajout, par exemple, peut être effectué plus rapidement en étant un peu intelligent, encore plus rapide en étant très intelligent, toujours un peu plus rapidement en investissant des quantités extraordinaires de matériel Enfin, un processeur peut combiner très rapidement des circuits très coûteux, un peu plus lents et moins chers. Il est donc possible de réaliser une opération assez rapidement en y consacrant plus d'argent.
Vous pouvez maintenant rendre la vitesse d'horloge si élevée / le cycle si court que seules les opérations de bits simples sont exécutées dans un cycle et tout le reste deux ou plus. Cela ralentirait probablement le processeur. Pour les opérations qui prennent deux cycles, il y a généralement une surcharge à déplacer une instruction incomplète d'un cycle à l'autre, donc deux cycles ne signifie pas que vous avez deux fois plus de temps pour l'exécution. Donc, pour faire l'addition en deux cycles, vous ne pouvez pas doubler la vitesse d'horloge.