La llegada de la IA a los distintos campos ha modificado la forma de trabajar. Sin embargo, en el caso de la tecnología, la inteligencia artificial está llevando cambios aún más profundos. Y cuando se trata de las unidades de procesamiento que tienen que encargarse de procesar las cargas de trabajo de IA, más aún. Por ello, vamos a ver cómo esta tecnología está cambiando el diseño de las CPUs actuales.
CPU de propósito general, cada vez con menos carga
La CPU era el corazón y el cerebro del ordenador, un procesador de propósito general que se encargaba de todo tipo de cargas de trabajo en el pasado. Todo el software que se ejecutaba pasaba por ella necesariamente. Sin embargo, a medida que la tecnología avanzaba y las demandas de rendimiento aumentaban, se hizo evidente que la CPU no podía manejar eficientemente todas las cargas de trabajo por sí sola. Así comenzó la era de los aceleradores dedicados.
Una de las primeras cosas que vimos fue la aparición de los controladores DMA (Direct Memory Access), que evitaban que la CPU tuviera que intervenir cuando había accesos E/S, sin interrumpirla, y haciendo que estos controladores se encargasen de todo, descargando a la CPU de esta tarea que antes era atendida por la CPU.
Después, una de las cargas de trabajo que más pesadas eran para las CPUs era las aplicaciones gráficas, que aunque eran más primitivas en sus inicios y 2D, significaban ya una tarea compleja para los procesadores de la época. Por eso, se idearon los primeros aceleradores gráficos dedicados, es decir, lo que ahora conocemos como GPU o tarjeta gráfica. De este modo, la CPU podía delegar parte de la carga de trabajo a esta otra unidad, permitiéndole estar libre para otras tareas.
Originalmente diseñada para acelerar la creación de imágenes en un framebuffer destinado a la salida a una pantalla, sin embargo, con el paso del tiempo, la GPU se ha convertido en una parte integral de los sistemas informáticos modernos, y cada vez con mayores funciones y rendimiento en el renderizado. Incluso han ido integrando motores para la codificación y decodificación, como los AV1 de las últimas gráficas, quitando también esta carga de la CPU para mejorar el streaming o la edición de vídeo con este codec.
Ligado a este avance, también surgió la PPU (Physic Processing Unit), como las tarjetas de Ageia PhysX. En este caso, se presentó como una revolución para ayudar a la CPU y GPU. Por un lado la CPU se dedicaba a la lógica en los videojuegos, la GPU a renderizar gráficos, y la PPU se dedicaría a procesar todo lo referente a la física del juego. No obstante, este invento no duró mucho en el mercado, y terminó desapareciendo e integrándose en las GPUs.
Recientemente estamos viendo cómo se están incluyendo otras unidades adicionales en los SoCs, para acelerar ciertas cargas de trabajo, como pueden ser los DSP para el procesamiento digital de señal, la NPU (Neural Processing Unit) para cargas de IA y del que luego comentaré con más detalle, o los DSA (Domain-Specific Accelerator), que serán unidades especialmente dedicadas a acelerar tareas concretas, restando trabajo a la CPU. Estos DSA podrían encargarse del cifrado, evitando que la CPU se sobrecargue con esta tarea, entre otras muchas cosas. Y, de hecho, ya AMD e Intel están pensando en estos elementos para sus diseños para HPC, implementados gracias a los FPGA.
Precisamente, las cargas de IA cada vez más frecuentes en el software, están haciendo que las unidades como la NPU o las tensoriales TPUs (Tensor Processing Unit) para aprendizaje profundo de las GPUs sean cada vez más importantes y vitales para rendir bien con este tipo de cargas, quitando esta saturación a la CPU. Lo hemos visto en los SoCs para dispositivos móviles, como los Mediatek Dimensity/Helio, HiSilicon Kirin, Qualcomm Snapdragon, Samsung Exynos, y Apple A-Series, los cuales incluyen motores de aceleración de IA. Poco a poco han ido siendo más representativos, llegando también al escritorio, como los Apple M-Series y sus Neural Engine, seguidos por AMD con su Ryzen AI, y sumándose Intel en el último momento a esta tendencia de procesadores heterogéneos.
También te puede interesar conocer cuáles son las mejores CPUs del mercado
Inclusión de la NPU como acelerador dedicado
Como he comentado antes, la IA ha cambiado la forma de diseñar la CPU, con la integración de una NPU dedicada a acelerar este tipo de cargas que se usan en chatbots, procesamiento de imágenes para la webcam, entre otras aplicaciones.
Una NPU es un tipo de procesador diseñado específicamente para la ejecución eficiente de algoritmos de redes neuronales, una clase de IA que imita la forma en que los humanos aprenden. Las NPUs están optimizadas para realizar operaciones de coma flotante de baja precisión y enteros, que son comunes en las cargas de trabajo de IA.
TOPS, (Trillions or Tera Operations per Second) es una medida de rendimiento utilizada para las NPUs. Esta unidad se utiliza para indicar cuántas operaciones puede realizar una NPU en un segundo. Las operaciones a las que se refiere son generalmente operaciones de baja precisión (INT8 e INT4), que son comunes en las cargas de trabajo de la Inteligencia Artificial.
Estas unidades, que ahora han aparecido tímidamente en los procesadores x86 de Intel y AMD, cada vez serán más importantes, más poderosas, y ocuparán un mayor espacio en el silicio. Por tanto, pueden llegar a ser realmente complejas, tanto como los propios núcleos de CPU. Por tanto, habrá que ver cómo lidian los diseñadores con esto mediante chiplets separándolas de la CPU, o mediante empaquetados 3D para evitar que sean un lastre para el yield…
Te animo a comentar cualquier idea…