¿Cómo funcionan los aceleradores de procesador?

TL; DR

Los aceleradores funcionan creando estructuras informáticas especiales para la carga de trabajo en lugar de utilizar múltiples instrucciones SW.

Versión larga

Para comprender cómo funcionan los aceleradores, debe comprender cómo se ejecutan las instrucciones básicas. Un buen ejemplo es la simple operación de multiplicación. Suponga que ALU dentro de su CPU no tiene un camino de datos multiplicador. Entonces, cada vez que se emite una instrucción de multiplicación, su compilador traduce hábilmente la instrucción de multiplicación en una serie de instrucciones de agregar y cambiar. Entonces, en lugar de completar la multiplicación en pocos ciclos de reloj, se requieren varios ciclos de reloj para agregar y cambiar. Como la multiplicación es una aplicación común, se agregó a la ruta de datos a medida que la computadora evolucionó

Ahora tomemos un caso para la aceleración de la carga de trabajo. Digamos que quieres acelerar la convolución. Entonces, cuando escriba la función de convolución en C, tendrá muchas operaciones de multiplicación, desplazamiento y transformación de datos. Ahora imagine que puede crear una ruta de datos o una estructura informática para este procesador interno para que pueda tener una instrucción de convolución en su conjunto de instrucciones. Entonces el compilador llama automáticamente a este hardware cada vez que haces una convolución. Pero la convolución no es una aplicación lo suficientemente común como para agregarla a un procesador.

Un enfoque es hacer su propio ASIC para que pueda colocar esto en una ranura PCIE y cada vez que se emite una instrucción de convolución los datos llegan a PCIE, completa la tarea y la devuelve a la CPU. (Así es como evolucionaron las tarjetas de sonido y las GPU)

Otro enfoque es tener una lógica flexible que pueda reconfigurar para que sea cualquier cosa (FPGA). En este caso, diseñe la ruta de datos para su carga de trabajo y la coloque en un FPGA (en una ranura PCIE)

El paquete de chips múltiples Intel Xeon combina FPGA y procesador Xeon en un solo paquete, lo que disminuye la latencia a FPGA.

Comenta si necesitas más aclaraciones

Es una pieza de hardware agregada a la CPU, ya sea como unidad periférica o como unidad funcional adicional, que acelera ciertas tareas. Las GPU comenzaron su vida como aceleradores de CPU para tareas gráficas. Todas las CPU de teléfonos celulares y tabletas hacen un uso intensivo de los aceleradores para tareas de audio, video, gráficos y redes que de otro modo consumirían demasiada energía.

El sistema de Nervana, que Intel se integrará de alguna manera en Xeon Phi, es un conjunto de multiplicadores y memorias de punto flotante rápido de baja precisión conectados por una red en chip. Básicamente es un acelerador para operaciones de tipo de red neuronal.

Lo que Intel está haciendo con Altera es más interesante, aunque se ha probado antes sin éxito. Están construyendo hardware configurable en la propia CPU, por lo que se puede programar, presumiblemente en software, para acelerar cualquier operación que se ajuste. No me queda claro para qué es la aplicación que Intel tiene en mente para esto: necesita algo computacionalmente intensivo, que no necesite demasiados datos, pero que no valga la pena construir un ASIC personalizado.

More Interesting

¿Debemos usar el ajuste fino en redes neuronales profundas? La precisión de la clasificación es del 100%, pero después de un ajuste fino, se convierte en el 95.7%, ¿cómo llega esto?

Como principiante en el procesamiento del lenguaje natural, ¿desde dónde debo comenzar?

¿Cómo se determina el tamaño del paso de actualización para el algoritmo de retropropagación ADADELTA?

¿Cuál es la diferencia entre agrupar sin PCA y agrupar con PCA?

¿Qué problemas actuales en robótica intentan resolver los investigadores con el aprendizaje automático?

¿Es más fácil construir un vehículo autónomo que un sistema de traducción automática a nivel humano?

¿Es el aprendizaje automático una mejor forma o técnica para comprender los datos y hacer pronósticos que las estadísticas?

¿Cuál es la diferencia entre el paralelismo del modelo y el paralelismo de datos?

¿Por qué la distribución previa no tiene mucho impacto en la distribución posterior cuando tenemos muchos datos?

¿Existe una relación entre la detección comprimida y las redes de yacimientos?

Como desarrollador web junior sin una sólida base matemática, ¿qué enfoques debo tomar para dominar el aprendizaje automático y aplicarlo al mundo empresarial? Acabo de empezar a estudiar la "Introducción al álgebra lineal" de Gilbert Strang.

¿Cuándo las funciones coercitivas tienen un minimizador?

¿Qué área de IA y aprendizaje profundo es útil para vehículos autónomos?

¿Qué es el algoritmo de cambio medio?

¿Por qué el gradiente en el punto mínimo no es igual a 0?