¿El procesamiento del número de punto fijo requiere hardware ASIC?

1

Recientemente comencé a profundizar en el DSP y encontré el término 'número de punto fijo'. La idea de un número de punto fijo es bastante simple y, como me parece a mí, sin embargo, tengo cierta curiosidad sobre cómo se llevan a cabo las operaciones de punto fijo.

¿Las operaciones de punto fijo son realizadas por procesadores con instrucciones para realizar operaciones de punto fijo? ¿O suele haber un chip dedicado?

¡Gracias!

    
pregunta Izzo

3 respuestas

5

Las operaciones de punto fijo se llevan a cabo como operaciones de enteros, posiblemente con cambios de bits para alinear las cosas. No se requiere un hardware especial para usar matemática de punto fijo, ciertamente no es un ASIC a menos que esté tratando de hacer algo muy especializado. El punto central del punto fijo es obtener algunos de los beneficios de la matemática de coma flotante sin la penalización de rendimiento, especialmente en las CPU que no admiten la matemática de coma flotante de hardware.

    
respondido por el alex.forencich
2

Estaba usando punto fijo en los días de Intel 386 cuando los procesadores no tenían hardware de punto flotante. Es una forma muy efectiva de usar unidades enteras para representar números con partes fraccionarias, ideal para procesamiento de audio y 3D de baja precisión.

Hagámoslo en la base 10. Supongamos que tenemos una unidad aritmética fija capaz de manejar 2x dígitos de cuatro dígitos decimales multiplicando a ocho, y desea calcular 4.2 * 3.14 (\ $ \ pi \ $ redondeado). Movemos el punto decimal dos espacios a la derecha, y nuestros operandos ahora son 0420 y 0314. Realice la multiplicación para obtener 00131880. Desplace el punto decimal hacia atrás cuatro espacios a la izquierda para obtener 13.188.

Es exactamente lo mismo en binario: si puede operar con números de 32 bits, entonces puede hacer un punto fijo con un desplazamiento del punto binario de 8 o 16 bits. Cada vez que haces una multiplicación, terminas incorporando el cambio de ambos argumentos, por lo que necesitas cambiar el resultado. Bitshifts son rápidos.

La suma y la resta son transparentes y no requieren cambios de bits adicionales.

(No hagas división, la división es difícil)

    
respondido por el pjc50
0

El punto fijo en los procesadores normales funciona perfectamente bien, siempre que (a) los anchos de palabra existentes (normalmente 8,16,32,64 bits) satisfagan sus necesidades, y (b) su lenguaje de programación lo admita directamente o (c) usted mismo realiza un seguimiento del punto binario.

Si necesita longitudes de palabras personalizadas, el compilador (si admite puntos fijos) usará el siguiente tipo más grande (o devuelva un error si no hay un tipo adecuado)

La opción (b), un idioma que admite puntos fijos, es la forma más fácil de hacerlo.

El código que genera solo utiliza las instrucciones de enteros, que pueden ser más eficientes que las instrucciones de punto flotante (y especialmente mucho más rápido que la emulación de FP en las CPU sin una FPU), y realiza un seguimiento del punto, cambiando cuando sea necesario.

Alternativamente, puede implementar su propio hardware en FPGA, no hay necesidad de ASIC. VHDL-2008 incorpora paquetes de punto fijo y flotante .

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas