1 pontos por GN⁺ 2024-04-08 | 1 comentários | Compartilhar no WhatsApp

Já existiu algum processador que implementasse uma instrução de raiz quadrada inteira?

  • O Harris RTX 2000 Forth CPU oferecia uma instrução de raiz quadrada inteira em múltiplas etapas.
  • O ENIAC realizava até 3 operações de raiz quadrada por segundo usando um divisor/calculador de raiz quadrada dedicado.
  • A forma mais eficiente de calcular a raiz quadrada inteira é usar a iteração de Newton-Raphson para calcular o recíproco (1/√x) e depois multiplicá-lo pelo número original.
  • Instruções usadas em CPUs e GPUs modernas, como frsqrte e frsqrts do ARMv8, são empregadas para calcular uma estimativa inicial e refinar iterativamente a precisão.
  • Para calcular a raiz quadrada inteira, é necessário um multiplicador de inteiros preciso em uma ampla faixa, algo que a maioria das CPUs não possui.
  • A precisão é um fator importante, e as instruções são separadas para que o programador possa equilibrar precisão e velocidade.

Opinião do GN⁺

  • Uma instrução de raiz quadrada inteira pode ser útil em aplicações específicas, especialmente em áreas como cálculos gráficos 3D.
  • Processadores com esse tipo de instrução podem viabilizar operações de alta velocidade por meio de algoritmos especiais, reduzindo cálculos complexos no nível de software.
  • No entanto, muitos processadores modernos não embutem esse tipo de instrução e, em vez disso, a implementam por bibliotecas de software ou microcódigo.
  • O equilíbrio entre precisão e velocidade é importante, e o programador deve poder ajustá-lo conforme a situação.
  • Este artigo traz informações interessantes para quem se interessa pela história da computação, especialmente para pessoas voltadas a programação de baixo nível ou projeto de sistemas.

1 comentários

 
GN⁺ 2024-04-08
Comentários do Hacker News
  • A instrução URSQRTE do AArch64 NEON

    • Calcula um inverso aproximado da raiz quadrada para um valor tratado como um inteiro de ponto fixo de 32 bits, reduz esse valor pela metade e o limita ao intervalo de 0 a 1-ε.
    • A instrução FRSQRTE realiza uma operação semelhante para números de ponto flutuante de 32 bits.
  • Possibilidade de cálculo em um único ciclo de clock

    • É possível usando uma tabela de consulta muito grande.
    • O tamanho da tabela pode ser reduzido dependendo do número de portas lógicas seriais que podem ser executadas dentro do ciclo de clock.
  • Microcódigo do VAX

    • Há a suposição de que o VAX teria alguma capacidade de cálculo de raiz quadrada.
  • Cálculo de raiz quadrada com dispositivo eletromecânico

    • O Friden SRQ calcula a raiz quadrada usando apenas adição e deslocamento, sem componentes eletrônicos.
    • Como o ponto decimal precisa ser ajustado manualmente, tecnicamente isso pode ser visto como uma operação inteira.
  • Método para calcular raiz quadrada inteira

    • É possível obter a raiz quadrada inteira usando a sequência 1 + 3 + 5 + ... + (2k + 1).
  • Resposta bem-humorada sobre o ENIAC

    • É mencionado que a resposta "ENIAC" foi engraçada.
  • Método aproximado para calcular raiz quadrada

    • É possível calcular uma raiz quadrada aproximada substituindo Log2(x) por "número de leading zeroes".
  • Análise de algoritmo de raiz quadrada para fãs do microprocessador 6502

    • Há uma análise detalhada de um algoritmo de raiz quadrada para o microprocessador 6502.
  • Instrução VSQRT do ARM VFP

    • O ARM VFP tem uma instrução de cálculo de raiz quadrada chamada VSQRT.
  • Método muito aproximado para calcular raiz quadrada

    • É possível obter uma raiz quadrada aproximada deslocando os bits para a direita em metade da posição do leading 1.
    • Esse método é útil como estimativa inicial para cálculos mais precisos, como a iteração de Newton-Raphson.