3 points par GN⁺ 2025-03-04 | 1 commentaires | Partager sur WhatsApp
  • En 1993, Intel a lancé le processeur Pentium haute performance
    • En analysant les circuits du Pentium, on a découvert un circuit complexe destiné à multiplier par 3
    • Ce circuit fait partie de l’unité de multiplication en virgule flottante du Pentium, qui multiplie des nombres sur 64 bits en base octale
  • Nécessité de la multiplication en base octale
    • La multiplication binaire est simple en théorie, mais lente
    • Le Pentium effectue les multiplications en base octale afin de réduire la taille du circuit et d’augmenter la vitesse
    • La multiplication en base octale est complexe, car il faut multiplier par des chiffres de 0 à 7
  • Algorithme de Booth et circuit ×3
    • L’algorithme de Booth est utilisé pour optimiser la multiplication
    • Le circuit ×3 doit être traité comme un cas particulier dans la multiplication en virgule flottante
    • Ce circuit doit fonctionner rapidement et utilise des techniques comme le carry lookahead pour maximiser les performances
  • Carry lookahead et additionneur à préfixe parallèle
    • L’additionneur carry lookahead calcule tous les bits de retenue en parallèle afin d’accélérer l’addition
    • Un additionneur à préfixe parallèle est utilisé pour implémenter le carry lookahead par blocs de 8 bits
    • L’algorithme de Kogge-Stone est utilisé pour minimiser la latence et organiser efficacement le circuit
  • Additionneur carry-select
    • L’additionneur carry-select exécute deux additions en parallèle et fournit immédiatement le résultat une fois la retenue déterminée
    • Le Pentium utilise un additionneur carry-select pour chaque bloc de 8 bits dans le circuit ×3
  • Driver de sortie BiCMOS
    • La sortie du circuit ×3 nécessite un courant élevé, et le procédé BiCMOS est utilisé pour réduire le délai du signal
    • Le BiCMOS combine CMOS et transistors bipolaires pour offrir de hautes performances
  • Conclusion
    • Le circuit ×3 du Pentium repose sur une conception complexe et utilise davantage de transistors que les microprocesseurs du passé
    • C’est un exemple qui montre à quel point la complexité des processeurs a augmenté

1 commentaires

 
GN⁺ 2025-03-04
Commentaire Hacker News
  • Dans l’émulation d’ordinateurs ternaires, il existe une méthode pour transformer la division par des puissances de 3 en décalages de bits et additions

    • 1/3 peut être exprimé comme 1/2 - 1/2(1/3)
    • En répétant cela à l’infini, on peut exprimer 1/3 = -(-1/2)^N
    • Cela fonctionne aussi avec n’importe quelle paire de puissances de 2 et de 3
    • Cela permet de construire, en temps constant, des circuits de division par une constante uniquement avec des additionneurs et des soustracteurs
  • Le processeur des jeux d’arcade Cinematronics possède deux accumulateurs de 12 bits

    • L’instruction de multiplication effectue un décalage sur une valeur de 24 bits puis additionne le contenu mémoire
    • Huit multiplications sont exécutées à la suite pour obtenir un résultat sur 24 bits
    • Cela servait principalement aux multiplications de matrices 2x2 pour faire tourner les coordonnées des objets du jeu
    • Au milieu des années 1970, il atteignait un débit maximal de 5 MIPS avec des composants de la série 7400
  • Peter Kogge a obtenu son doctorat à Stanford et, en tant qu’IBM Fellow, est la personne qui a inventé le CPU multicœur

  • Dans le calcul d’adresses, multiplier par 3 est une opération courante

    • On peut l’effectuer en un seul cycle avec l’instruction LEA
    • C’était donc un bon choix d’y consacrer du budget en transistors
  • Dans un multiplicateur, il existe une méthode qui consiste à multiplier par 8 puis soustraire 1 au lieu de multiplier par 7

    • Cela ressemble à un circuit de carry lookahead
    • On peut écrire 7 = 8-1, 6 = 8-2, 5 = 8-3, 4 = 8-4
  • Le multiplicateur ×3 contient environ 9 000 transistors, soit plus que le microprocesseur Z80 de 1976

    • Cela montre l’énorme croissance de la complexité des processeurs
    • Aujourd’hui, nous avons atteint les limites de la technologie des semi-conducteurs en silicium, et il faut désormais travailler plus intelligemment
  • Un multiplicateur Booth radix-8 nécessite un circuit x3

    • C’est un compromis surface/performance pour pousser le fmax
  • 8086 : 29,000

    • 386 : 275,000
    • 486 : 1.2 million
    • Pentium : 3.1 million
    • La NSA s’y est impliquée après 2000
  • L’inconvénient de la multiplication radix-8 est que la multiplication par des nombres de 0 à 7 est complexe

    • Multiplier par 2 revient à décaler les bits d’un cran vers la gauche
    • Multiplier par 4 revient à décaler les bits de deux crans vers la gauche
    • Multiplier par 7 peut se faire en multipliant par 8 puis en soustrayant 1
    • ×3 peut être calculé comme la somme de 2x et 1x, ou comme la différence entre 4x et 1x
    • Si l’on sait calculer facilement ×6, on peut obtenir ×3 en décalant cette valeur vers la droite