1 points par GN⁺ 2024-04-08 | 1 commentaires | Partager sur WhatsApp

Y a-t-il déjà eu des processeurs implémentant une instruction de racine carrée entière ?

  • Le Harris RTX 2000 Forth CPU proposait une instruction de racine carrée entière à plusieurs étapes.
  • ENIAC utilisait un diviseur/calculateur de racine carrée spécialisé permettant d’effectuer jusqu’à 3 opérations de racine carrée par seconde.
  • La méthode la plus efficace pour calculer une racine carrée entière consiste à utiliser des itérations de Newton-Raphson pour calculer l’inverse (1/√x), puis à le multiplier par la valeur d’origine.
  • Des instructions utilisées sur les CPU et GPU modernes, comme frsqrte et frsqrts d’ARMv8, servent à calculer une estimation initiale puis à améliorer itérativement la précision.
  • Calculer une racine carrée entière nécessite un multiplicateur entier précis sur une large plage, dont la plupart des CPU ne disposent pas.
  • La précision est un facteur important, et les instructions sont séparées afin de permettre aux programmeurs d’ajuster l’équilibre entre précision et vitesse.

L’avis de GN⁺

  • Une instruction de racine carrée entière peut être utile dans certains domaines d’application, en particulier pour des calculs comme ceux de la 3D.
  • Les processeurs qui disposent de telles instructions peuvent permettre des calculs rapides grâce à des algorithmes spécialisés, réduisant ainsi la complexité au niveau logiciel.
  • Cependant, de nombreux processeurs modernes n’intègrent pas ce type d’instruction et l’implémentent plutôt via des bibliothèques logicielles ou du microcode.
  • L’équilibre entre précision et vitesse est essentiel, et il doit pouvoir être ajusté selon le contexte.
  • Cet article offre des informations intéressantes pour les personnes qui s’intéressent à l’histoire de l’informatique, en particulier à la programmation bas niveau ou à la conception de systèmes.

1 commentaires

 
GN⁺ 2024-04-08
Avis Hacker News
  • L’instruction URSQRTE d’AArch64 NEON

    • Elle calcule une approximation de l’inverse de la racine carrée pour une valeur considérée comme un entier à virgule fixe sur 32 bits, réduit ensuite cette valeur de moitié, puis la borne dans l’intervalle de 0 à 1-ε.
    • L’instruction FRSQRTE effectue une opération similaire pour les nombres à virgule flottante sur 32 bits.
  • Possibilité d’un calcul en un seul cycle d’horloge

    • C’est possible avec une très grande table de correspondance.
    • La taille de la table peut être réduite selon le nombre de portes logiques en série pouvant être traversées dans un cycle d’horloge.
  • Microcode VAX

    • Supposition que le VAX devait disposer d’une capacité de calcul de racine carrée.
  • Calcul de racine carrée avec un dispositif électromécanique

    • Le Friden SRQ calcule les racines carrées uniquement avec des additions et des décalages, sans composants électroniques.
    • Comme le point décimal doit être ajusté manuellement, on peut techniquement le considérer comme une opération entière.
  • Méthode de calcul de racine carrée entière

    • On peut obtenir une racine carrée entière en utilisant la suite 1 + 3 + 5 + ... + (2k + 1).
  • Réponse humoristique sur l’ENIAC

    • Il est mentionné que la réponse « ENIAC » est amusante.
  • Méthode d’approximation de la racine carrée

    • On peut approximer une racine carrée en remplaçant Log2(x) par le « nombre de zéros de tête ».
  • Analyse d’algorithmes de racine carrée pour les fans du microprocesseur 6502

    • Il existe une analyse approfondie d’algorithmes de racine carrée pour le microprocesseur 6502.
  • L’instruction VSQRT d’ARM VFP

    • ARM VFP dispose d’une instruction de calcul de racine carrée appelée VSQRT.
  • Méthode très grossière de calcul de racine carrée

    • On peut obtenir une approximation grossière de la racine carrée en décalant les bits vers la droite de la moitié de la position du bit de poids fort à 1.
    • Cette méthode est utile comme estimation initiale pour des calculs plus précis, comme l’itération de Newton-Raphson.