¿Reemplazar ALU con la tabla de búsqueda? [cerrado]

1

Descargo de responsabilidad: Entonces, obviamente esta es una pregunta tonta y quiero comenzar diciendo que no quiero discutir los costos financieros de esto, ya que estoy consciente de que la memoria caché de la CPU es costosa. Como esto no se ha hecho suficientemente obvio, esto es PADELAMENTE ACADÉMICO, NO PARA LA IMPLEMENTACIÓN. Piensa "experimento mental"

Me he estado preguntando si sería posible calcular previamente todo el trabajo que haría una ALU y almacenar los resultados en una tabla de búsqueda.

Para este ejemplo específico, he estado mirando un subconjunto de instrucciones de las que la ALU es responsable en una arquitectura MIPS que es "AND, OR, add, sub, slt, NOR".

En esta arquitectura, estas operaciones tardarían 4 bits en codificarse, lo que llamaremos control, ya que solo hay 6 operaciones. Además, tendríamos que tomar dos valores de 32 bits como entrada y devolver un valor de 32 bits como salida junto con 3 banderas de 1 bit. (Los detalles se enumeran en aquí )

En un nivel realmente alto, usaríamos el control de 4 bits, junto con las dos entradas de 32 bits para devolver el resultado de 32 bits y las banderas de 3 1 bits. Entonces, ¿no podría cada control actuar como un desplazamiento de nuestra memoria caché y usar los valores de entrada para indexar en nuestra búsqueda? Incluso podríamos extraer más memoria para las operaciones que tienen la propiedad conmutativa (1 + 2 = 2 + 1)

Soy consciente de que es una pregunta ridícula, pero tenía curiosidad por saber si alguien tenía alguna idea. Tal vez podría ser más rápido? Si no es así, ¿quizás usar menos electricidad o generar menos calor? Por lo menos es interesante.

    
pregunta Greg Hilston

4 respuestas

9

Una sola tabla de búsqueda de 32 bits x 32 bits a 32 bits requeriría una cantidad insostenible de espacio:

$$ 2 ^ {32} \ times 2 ^ {32} \ times 32 = 2 ^ {69} \ approx \ mathrm {5.9 \ quintillion \ bits} $$

Esto es completamente imposible de construir. Un solo microchip puede almacenar 2 bits 40 (~ 128 GB); necesitaría más de 500 millones de estos para almacenar la tabla de búsqueda completa. (Reducir a la mitad el tamaño explotando simetrías como a+b=b+a todavía deja el tamaño en el rango inverosímil.)

Sin embargo, si desea considerar las implicaciones sobre el calor / energía y la velocidad:

  • Si asumimos generosamente que cada uno de los más de 500 millones de microchips consume 1 mA a 3.3 V, está considerando un consumo de energía total de aproximadamente 1.8 MW. (Sí, eso es megawatts.)

  • Si asumimos que cada uno de esos chips tiene un grosor de 2x2 cm y 0.5 cm (incluida la placa de circuito), y que no requieren ningún otro circuito de soporte, el dispositivo resultante será aproximadamente un cubo de 10 metros. Toma luz unos 34 nanosegundos para cruzar 10 metros; incluso si asumimos que uno de estos chips no necesita tiempo para buscar un resultado, esto limitaría la velocidad de dicho dispositivo a aproximadamente 292 MHz.

respondido por el duskwuff
5

La conclusión es que una tabla de búsqueda está formada por puertas lógicas, y siempre se necesitan menos puertas para implementar los tipos de operaciones de ALU de las que está hablando directamente en lugar de usar una tabla de búsqueda .

Entonces, no importa cuánto avance la tecnología, nunca tiene sentido usar tablas de búsqueda sobre lógica directa usando la misma tecnología .

Los FPGA son un caso especial debido a la forma en que se utilizan. En primer lugar, la reconfigurabilidad es su característica más importante, y en segundo lugar, las pequeñas tablas de búsqueda que utilizan (generalmente de 16 × 1 a 64 × 1) son muy rápidas, más rápidas que la lógica de interconexión y otros detalles que contribuyen a su configurabilidad.

    
respondido por el Dave Tweed
0

A nivel de 32 bits, no es práctico. Pero se produjo una gran emoción en 1985, cuando se propuso la matemática de 5 bits para el procesamiento de imágenes en memoria.

Al tomar log (pixel_magnitude) y almacenar eso, el rango dinámico era bueno y debería ocurrir una detección real de los bordes.

Nunca lo construimos. Después de todo, ¿quién querría realizar matemáticas de 5 bits en una memoria?

    
respondido por el analogsystemsrf
-1

Para aumentar la velocidad, para acceder a la tabla de consulta se necesitará un ciclo de reloj que agilizará la ejecución, pero muchas arquitecturas modernas como ARM y AVR ejecutan las instrucciones en un solo ciclo, por lo que el problema es todo lo necesario. bits no te ganaría mucho. Además, para crear todos los bits requeridos, ya sea que estén implementados como SRAM o DRAM, tendría que usar un nodo de tecnología bastante pequeño que daría como resultado una corriente de fuga elevada y, por lo tanto, un alto consumo de energía. Nuevamente, si implementara su tabla de consulta en flash, acceder a flash es un funcionamiento lento en comparación con lo que algunos núcleos de CPU pueden ejecutar de nuevo, negando cualquier ganancia de velocidad.

    
respondido por el Kvegaoro

Lea otras preguntas en las etiquetas