1 puntos por GN⁺ 2024-04-08 | 1 comentarios | Compartir por WhatsApp

¿Hubo algún procesador que implementara una instrucción de raíz cuadrada entera?

  • Harris RTX 2000 Forth CPU ofrecía una instrucción de raíz cuadrada entera de múltiples etapas.
  • ENIAC usaba una calculadora especial de división/raíz cuadrada para realizar hasta 3 operaciones de raíz cuadrada por segundo.
  • La forma más eficiente de calcular una raíz cuadrada entera es usar iteración de Newton-Raphson para calcular el recíproco (1/√x) y luego multiplicarlo por el número original.
  • Instrucciones usadas en CPU y GPU modernas, como frsqrte y frsqrts de ARMv8, se utilizan para calcular una estimación inicial y refinar iterativamente la precisión.
  • Para calcular una raíz cuadrada entera se necesita un multiplicador entero preciso de amplio rango, pero la mayoría de las CPU no lo tenían.
  • La precisión es un factor importante, y la instrucción está separada para que el programador pueda ajustar el equilibrio entre precisión y velocidad.

Opinión de GN⁺

  • Las instrucciones de raíz cuadrada entera pueden ser útiles en ciertos campos de aplicación, especialmente en áreas como los cálculos de gráficos 3D.
  • Los procesadores que cuentan con este tipo de instrucción pueden hacer posibles operaciones de alta velocidad mediante algoritmos especiales, reduciendo así los cálculos complejos a nivel de software.
  • Sin embargo, muchos procesadores modernos no incorporan estas instrucciones, y en su lugar las implementan mediante bibliotecas de software o microcódigo.
  • El equilibrio entre precisión y velocidad es importante, y el programador debería poder ajustarlo según la situación.
  • Este artículo ofrece información interesante para quienes se interesan por la historia de la computación, y puede ser especialmente útil para personas interesadas en la programación de bajo nivel o el diseño de sistemas.

1 comentarios

 
GN⁺ 2024-04-08
Opiniones de Hacker News
  • La instrucción URSQRTE de AArch64 NEON

    • Calcula un inverso aproximado de la raíz cuadrada para un valor tratado como un entero de punto fijo de 32 bits, luego divide ese valor entre dos y lo limita al rango de 0 a 1-ε.
    • La instrucción FRSQRTE realiza una operación similar para números de punto flotante de 32 bits.
  • Posibilidad de calcularlo dentro de un solo ciclo de reloj

    • Es posible usando una tabla de búsqueda muy grande.
    • El tamaño de la tabla puede reducirse según la cantidad de compuertas lógicas en serie que puedan ejecutarse dentro de un ciclo de reloj.
  • Microcódigo de VAX

    • Se especula que VAX podría haber tenido capacidad para calcular raíces cuadradas.
  • Cálculo de raíces cuadradas con dispositivos electromecánicos

    • La Friden SRQ calcula raíces cuadradas usando solo suma y desplazamientos, sin componentes electrónicos.
    • Como el punto decimal debe ajustarse manualmente, técnicamente puede considerarse una operación entera.
  • Método para calcular la raíz cuadrada entera

    • Se puede obtener la raíz cuadrada entera usando la secuencia 1 + 3 + 5 + ... + (2k + 1).
  • Respuesta humorística sobre ENIAC

    • Se menciona que la respuesta "ENIAC" es graciosa.
  • Método aproximado para calcular la raíz cuadrada

    • Se puede calcular una raíz cuadrada aproximada reemplazando Log2(x) por el "número de leading zeroes".
  • Análisis de algoritmos de raíz cuadrada para fans del microprocesador 6502

    • Hay un análisis exhaustivo de algoritmos de raíz cuadrada para el microprocesador 6502.
  • La instrucción VSQRT de ARM VFP

    • ARM VFP incluye una instrucción de cálculo de raíz cuadrada llamada VSQRT.
  • Método muy aproximado para calcular la raíz cuadrada

    • Se puede obtener una raíz cuadrada aproximada desplazando los bits a la derecha la mitad de la posición del leading 1.
    • Este método es útil como estimación inicial para cálculos más precisos, como la iteración de Newton-Raphson.