Por que a exponenciação não é implementada por hardware?

5

Por que não há operações de exponenciação em hardware, mesmo que muitos idiomas tenham operadores internos para isso?

É porque mesmo as implementações de hardware precisariam usar o mesmo algoritmo que o software (ou seja, nenhuma implementação de hardware poderia ser significativamente mais eficiente), ou porque raramente é usado, ou outro motivo?

    
por user1358 24.12.2013 / 09:53
fonte

2 respostas

5

Para inteiros, as únicas operações de exponenciação normalmente presentes no hardware são os turnos, << e >> (na linguagem C), que multiplicam por poderes exponenciais de dois. Para qualquer outra coisa com inteiros, você fica sem bits para representar as coisas muito rapidamente para que seja útil; no momento em que você resolveu esse problema, você pode não ter suporte de hardware especial, pois também precisou lidar com o gerenciamento de memória e outras coisas caras.

Não conheço muito bem o hardware de ponto flutuante, mas a exponenciação de hardware faz mais sentido, já que você tem o intervalo numérico para torná-lo razoável. (Meu google-fu indica que alguém parece estar vendendo o layout de hardware para tornar isso possível ...)

    
por 24.12.2013 / 10:37
fonte
1

Algumas máquinas (especialmente microcontroladores) incluem hardware para acelerar multiplicações de precisão estendida (512+ bits), e tal hardware ajudará inerentemente com exponenciação (útil para coisas como cifras RSA). O hardware para acelerar a exponenciação precisa (além de acelerar a multiplicação) é raro porque o desempenho com ou sem esse hardware será dominado pelo tempo necessário para fazer as multiplicações constituintes.

Se alguém não precisa de resultados precisos, pode-se elevar os números de ponto flutuante para qualquer potência desejada computando o log da base, multiplicando-o pelo expoente, e elevando e àquele poder ; muitas unidades de ponto flutuante incluem hardware para agilizar todas as três etapas.

    
por 24.12.2013 / 20:35
fonte