Dos de los conceptos más importantes en informática de los últimos años son las FPGA y ASIC. Estos chips tienen mucho que ver con las CPU y GPU, pero hay grandes diferencias de propósito y funcionamiento. ¿Estás preparado para saber más sobre uno de los componentes más fundamentales de los servidores y el alto rendimiento? Pues vamos a verlo.
Índice de contenidos
Pues bien, las FPGA y ASIC son chips que no están pensados para tareas de propósito general, sino que buscan el mayor rendimiento posible para implementar una tarea, operación o algoritmo concreto, evidentemente con la idea de superar con creces a una CPU o GPU. Vamos a ver las diferencias entre ambos.
Es decir, que podemos rediseñar la lógica de la FPGA tantas veces como queramos. Esto es algo totalmente imposible en una CPU o GPU, donde básicamente tendremos que diseñar programas que se adecúen a su funcionamiento lógico y su set de instrucciones. Ahí radica la gran ventaja de las FPGA y la libertad de uso que dan, pues una empresa que contase con FPGAs en sus servidores podría darles un uso muy específico para acelerar con fuerza la ejecución de una tarea crítica. Por ejemplo, una operación matemática compleja que en una CPU o GPU se ejecuta combinando operaciones simples se podría implementar de una forma más directa, específica y muchísimo más eficiente con una FPGA.
Para una CPU, se desarrolla software que se adecúe al hardware, lo que puede implicar muchas limitaciones. En una FPGA, se desarrolla hardware que se adecúe al software.
En la actualidad, el fabricante más importante de FPGA es Xilinx, compañía que ostenta más o menos la mitad de la cuota de mercado, no en vano fue la que inventó este tipo de dispositivos. Destacar que fue comprada recientemente por AMD, mientras que la mayor competidora de Xilinx, llamada Altera, ya había sido comprada por Intel (la competencia de AMD) en 2015.
Por ello, es esperable que empecemos a ver por parte de ambas compañías una mejor integración entre CPU, GPU y FPGA, optimizando los 3 elementos para que cada uno dé lo mejor de sí y obtener en conjunto una potencia espectacular. De hecho, Intel ya ha dado nombre a esta combinación: XPU.
Para programar una FPGA, hay varios tipos de lenguajes, entre los que destacan VDHL, Verilog y LabVIEW FPGA. Resulta de esperar que los ingenieros no se vayan a poner a dibujar esquemáticas ante un diseño tan complejo, pues se hace mediante texto. La cuestión es que estos no son lenguajes de programación como tales, sino que más bien sirven para describir cómo es el hardware que se va a implementar.
De hecho, cada vez que se alimenta (enciende, vaya) la FPGA esta vuelve a leer la memoria y se reprograma.
Entonces, a diferencia de una FPGA en la que nos llega de fábrica un chip sin programar que no hace nada pero que podemos diseñar para una aplicación concreta, en el caso de la ASIC el chip estará diseñado, creado y fabricado de antemano para realizar dicha acción.
Esto, en cierto modo, puede llevar a que pensemos que una CPU y GPU son una ASIC, pues tienen una arquitectura definida y no son reprogramables, pero es que las ASIC van mucho más allá en cuanto a lo específicas que son sus tareas, y al conocimiento concreto de qué datos van a recibir y qué ap
Una vez te hemos explicado para qué sirve cada una, vamos a reflexionar sobre las ventajas e inconvenientes de las FPGA frente a las ASIC, y viceversa.
No obstante, una FPGA va a consumir más energía por toda su cantidad de transistores innecesaria, y no llegará a alcanzar las cotas de rendimiento de una ASIC bien diseñada.
La conclusión de todo esto es que las FPGA son ideales para implementaciones versátiles, que impiden empezar a producir una ASIC en masa, o que simplemente no justifiquen esto último. Pero una ASIC nos dará el mayor rendimiento, no habrá desperdicios de lógica por el camino.
Con una FPGA podemos llegar a un nivel de personalización tal que podamos contratar un servicio en la nube con FPGA y usarlo, como si estuviésemos contratando un servidor dedicado, tal y como nos ofrece Microsoft (por ejemplo). Una empresa no necesita ni tener un centro de datos para usar una FPGA.
El concepto de desarrollo de estos productos es básicamente que las empresas empiecen programando una FPGA, pero encargando luego una eASIC con ese diseño, que será mucho más rápida y no tendrá lógica desperdiciada. Esto lo consiguen gracias a que se trabaje siempre bajo un «marco común» que se pueda pasar luego a la fabricación.
Vamos a ver ahora cuáles son las aplicaciones más comunes de las FPGA y las ASIC, todas ellas centradas en usos concretos en los que una CPU o GPU habría sido una peor idea, y la personalización y versatilidad de FPGA y ASIC se agradece.
¡Hay muchísimos más ámbitos que no hemosmencionado! Por ejemplo, Xilinx en sus FPGA habla de industria aeroespacial, defensa, automoción, electrónica de consumo, centros de datos, emulación y prototipado, industria, sanidad, test y medición, y comunicaciones.
En general, las FPGA y las ASIC se están volviendo prácticamente inevitables en los segmentos relacionados con los centros de datos. Las compañías que manejan cantidades ingentes de datos y necesitan aplicarles algoritmos concretos y tecnologías relacionadas con la inteligencia aritifical ven unos grandes aliados en este tipo de chips.
Desde luego, estos chips tan especiales no tienen un ámbito de uso universal. Y es que el hecho de diseñar todo un circuito específico para ejecutar una tarea concreta puede ser excesivamente ambicioso en muchas ocasiones, y tener más inconvenientes que ventajas.
Al fin y al cabo, el esfuerzo necesario para programar una FPGA o diseñar una ASIC es realmente alto, y en muchas empresas dedicar demasiados recursos de ingeniería a acelerar una tarea concreta puede no ser lo que se busque, o quizás dicha tarea podría cambiar demasiado, de manera que un cambio de software sería mucho menos traumático que rediseñar por completo una FPGA o encargar una ASIC nueva.
Las FPGA y ASIC son uno de los componentes más importantes de la computación de alto rendimiento, y cada vez están ganando una mayor popularidad. Estos se diferencian de una CPU o una GPU en que se diseñan para realizar aplicaciones muy específicas, como puede ser un tipo de operación matemática o ejecutar un algoritmo concreto.
FPGA son las siglas de Field Programmable Gate Array, y son básicamente conjuntos de puertas lógicas que podemos programar a medida tantas veces como queramos, prácticamente como si fuese desarrollar un software, pero consiguiendo un hardware específico pensado para realizar una tarea muy específica.
En cambio, una ASIC ya viene totalmente programada y diseñada a nivel lógico de fábrica, y son por ello todavía más específicas que una CPU.
Te recomendamos la lectura de nuestros artículos:
Como indicamos, la gran similitud entre estas es su grado de especialización, que eclipsa totalmente al de una CPU o GPU, que está diseñada para ser de propósito general, y cubrir todo tipo de tareas aunque no sea de la manera más eficiente. Otros beneficios que nos pueden dar son la paralización de operaciones que se puede conseguir según cómo sea el diseño. ¡Imaginad ejecutar un algoritmo entero en un solo ciclo de reloj, impensable en una CPU pero posible en una FPGA o ASIC!
De ahí viene el creciente interés en estos componentes que ha motivado la creación de este artículo. ¿Y tú qué opinas? ¿Crees que será más frecuente ver FPGA y ASIC?
Qualcomm anuncia nuevos SoC Snapdragon X, pero no se trata de una nueva generación, sino…
NVIDIA no solo da razones teóricas, sino fundamentos en forma de ofertas de todo GeForce…
Hace algunos meses salió una información que indicaba que las aceleradoras de IA Nvidia Blackwell…