“Sí” es fácil, “cómo” es difícil y depende del problema.
Un ejemplo simple son las operaciones vectoriales. En arquitecturas Intel, las instrucciones SIMD (SSE2) pueden funcionar con palabras de 128 bits. Estas palabras pueden dividirse en dos números de coma flotante de 64 bits, cuatro números de coma flotante de 32 bits, ocho enteros de 16 bits o dieciséis enteros de 8 bits. Entonces, por ejemplo, si solo necesita 8 bits de datos, puede realizar 16 operaciones de este tipo en paralelo, obteniendo 8 veces el rendimiento de hacer el mismo cálculo en cantidades de 64 bits.
Uno podría imaginar una arquitectura que también le permita operar en tamaños irregulares (sin potencia de dos), aunque no conozco ningún ejemplo práctico.
- ¿Qué significa que un problema en informática sea NP completo?
- ¿Podemos probar P = NP 'P versus NP problem'?
- ¿Cómo se relacionan los cierres del lenguaje de programación con el cierre en matemáticas?
- Si tengo un número (ej .: n = 28), ¿existe una fórmula cerrada para saber cuántos son los pares ordenados de números enteros (a, b) de manera que [matemáticas] a \ cdot b = n [/ matemáticas]?
- Si eligiera un número al azar en la recta numérica, ¿tendría mayores posibilidades de ser racional o irracional?
Incluso en una arquitectura sin paralelización explícita, puede obtener cierta paralelización de cantidades de 3 bits a través de técnicas de software. Agregar en paralelo es fácil. La multiplicación paralela por la misma cantidad también es fácil. La multiplicación paralela por diferentes cantidades es algo más difícil, pero se pueden usar técnicas de golpes de bits o algo de álgebra para implementarlo.
Por ejemplo, [matemáticas] (a2 ^ {32} + b 2 ^ {16} + c) (d2 ^ {8} + e2 ^ {4} + f) = ad2 ^ {40} + ae2 ^ {36} + af2 ^ {32} + bd2 ^ {24} + be2 ^ {20} + bf2 ^ {16} + cd2 ^ {8} + ce2 ^ {4} + cf [/ matemáticas]
Entonces, si todos los resultados no son más de 4 bits, podemos leer cualquier multiplicación por pares que necesitemos.
Las funciones como extraer raíces cuadradas o calcular funciones trigonométricas utilizan rutinas que producen unos pocos bits a la vez, por lo que es beneficioso terminarlos antes de tiempo si se necesitan pocos bits. Esto es fácil en software; No sé de nuevo de ninguna arquitectura de hardware que permita especificar.
Un peligro al tratar de proporcionar muchos anchos de bits diferentes en hardware de propósito general es que puede interferir con las ganancias deseadas en eficiencia, debido a la lógica de control adicional. Sin embargo, en un FPGA, los sumadores y multiplicadores pueden hacerse exactamente tan grandes como sea necesario para el problema en cuestión.