ProcesadoresTutoriales

Qué son las FPGA y ASIC y en qué se diferencian de una CPU o GPU

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.

FPGA y ASIC

Introducción: la necesidad de unos chips de procesamiento personalizados

Todos conocemos a los procesadores (CPU) y las tarjetas gráficas (GPU) como las unidades de procesamiento fundamentales de un ordenador. Particularmente, ambas se usan con mucha intensidad en servidores, centros de datos, investigación, inteligencia artificial… En esos campos, se requiere una gran capacidad computacional y la máxima eficiencia posible, donde las CPUs contarán con una pequeña cantidad de núcleos muy potentes geniales para hacer distintas tareas, mientras que las GPU tienen miles, siendo lo mejor para ejecutar cálculos en paralelo y operaciones de coma flotante.

Estas diferencias en propósito están muy bien aprovechadas, y a día de hoy el rendimiento que ofrecen las CPU y las GPU para estas tareas es inmenso. Sin embargo, el hecho de que ambos componentes tengan un propósito general implica que no van a procesar siempre las tareas con la mayor eficiencia, pero estarán preparados para ejecutar todo tipo de operaciones. Esto choca con la idea de antes de buscar el mayor rendimiento computacional posible.

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.

Definiendo las FPGA

FPGA son las siglas de Field Programmable Gate Array, en español conjunto de puertas lógicas programable en campo. La característica principal de estos chips es que nos permiten programar y reconfigurar cualquier circuito integrado con unos requisitos mínimos (que quepa en su interior, por ejemplo). Básicamente, las FPGA están compuestas en su interior por una matriz de puertas lógicas que ejecutan operaciones binarias básicas (AND, OR, etc). Hasta aquí la descripción es aplicable a una CPU, pero la cuestión es que en una FPGA estas puertas no vienen interconectadas de fábrica, de tal forma que se puede diseñar cómo serán sus conexiones para funcionar de una manera u otra, de ahí que hayamos dicho que podemos programar cualquier circuito y hacerlas funcionar para una tarea muy específica.

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.

Ojo, porque realmente la estructura de la FPGA no se compondrá únicamente de lógica programable, y si se da a entender esto es por pura simplificación. Realmente, lo programable será solo una parte, pues luego contará con distintas interfaces y componentes pensados para la interconexión, procesamiento auxiliar, capacidades de red, memoria, etc. Por ello, siempre habrá FPGA muy distintas entre sí, y aunque se puedan programar siempre habrá modelos pensados para ciertas aplicaciones y tareas en específico, que tendrán unas partes auxiliares más adecuadas a su uso dirigido.

paralelizacion fpgaUsar una FPGA también nos resultará ventajoso en cuanto a la paralelización de las operaciones. Aunque tengamos varios núcleos, el funcionamiento de una CPU es secuencial, de tal forma que la ejecución de un programa se basa en ir una a una por todas sus instrucciones a cada ciclo de reloj. En cambio, podemos diseñar una FPGA con la cantidad de caminos de datos paralelos que queramos, pudiendo llegar a conseguir ejecutar todo un algoritmo en un único ciclo de reloj, pues todas sus operaciones se podrían realizar a la vez en vez de dividirse en instrucciones secuenciales, algo impensable en una CPU de propósito general.

AMD podría comprar Xilinx y sus FPGA por 30.000 millones de dólares

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.

¿Cómo se programan las FPGA?

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.

Cada cliente básicamente tendrá que aprender a trabajar con la arquitectura concreta de la FPGA, que estará claramente descrita por el fabricante, y con esto podrá empezar a hacer su diseño. Una vez hecho, se compilará y se cargará en la memoria EEPROM de la FPGA.

De hecho, cada vez que se alimenta (enciende, vaya) la FPGA esta vuelve a leer la memoria y se reprograma.

Definiendo las ASIC

asicASIC son las siglas de Application-Specific Integrated Circuit, es decir, circuito integrado de aplicación específica. Tal y como su nombre indica, son chips diseñados de forma específica para un uso muy concreto.

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

Resumen de ventajas e inconvenientes de una FPGA y ASIC

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.

FPGA XilinxPor una banda, una FPGA es muchísimo más versátil en cuanto a sus posibilidades. Si quieres una ASIC para tu empresa, tendrás que contar con todas las capacidades de diseño de un fabricante específicamente para ti. En cambio, para el caso de una FPGA, tan solo tendrás que contratar a un pequeño equipo o incluso a un solo desarrollador que prepare su programación.

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.

Intel eASIC, intentando aúnarlo todo

Dentro de este contexto hemos de mencionar las eASIC, desarrolladas por la compañía homónima, pero que fue adquirida por Intel hace un par de años. Los dispositivos Intel eASIC básicamente intentan combinar el rendimiento de una ASIC con el tiempo de diseño de una FPGA, en lo que ellos denominan una «ASIC estructurada«.

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.

Casos de uso más comunes

FPGA Xilinx

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.

  • Comencemos por un ejemplo muy específico: el motor de búsqueda Bing, de Microsoft, comenzó a aprovechar las FPGA de Altera (Intel) hace un par de años, para potenciar sus algoritmos de aprendizaje profundo y comprensión de lectura. Su poder les permite incrementar notablemente la calidad de las búsquedas a la par que mantienen un buen rendimiento. Hoy en día, tanto Microsoft como Google usan FPGA y ASICs en todos lados.
  • Todo tipo de procesos de inferencia de inteligencia artificial en general. Se puede conseguir una latencia inalcanzable con una CPU o GPU, eliminar cuellos de botella y evitar la necesidad de tener sets de datos grandes para alcanzar un buen ritmo de rendimiento.
  • La minería de criptomonedas es uno de los campos estrella de las ASIC, y de hecho las ha llevado a alcanzar su popularidad. Es también un ejemplo muy representativo de sus beneficios, ya que muchos mineros dejaron de usar GPU para centrarse en ASICs, que solo servían para su propósito de minado, pero eran mucho más rápidas y eficientes.
  • Otras áreas financieras donde se requiera una latencia ultra-baja, pensad en una gran empresa o fondo analizando el mercado bursátil.
  • En el ámbito de la comunicación en general: estos chips pueden diseñarse para conectarles directamente interfaces de red sin necesidad de controladoras o tarjetas intermedias, haciéndolos fundamentales como las nuevas redes 5G. También para codificación y procesado de vídeo.

¡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.

Dónde no se usará una FPGA o una ASIC

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.

También podemos pensar en la computación doméstica, que donde nos importa mucho más la ejecución de muchas tareas distintas que su eficiencia, y evidentemente no parece que nuestro ordenador vaya a apoyarse en una FPGA o ASIC nunca. Ojo, porque sí las podemos encontrar en algunos dispositivos. Por ejemplo, los monitores con NVIDIA G-Sync HDR usan una FPGA Intel Altera Arria 10 GX 480 en su interior, si bien no es un ejemplo precisamente cotidiano debido al precio de estos.

Palabras finales y conclusión sobre las FPGA y ASIC

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.

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?

Breixo Gómez

Apasionado del Hardware, exigente con la calidad de los productos. Intento aprender lo máximo cada día. No dudes en dejarme cualquier duda o sugerencia en los comentarios ;)
Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en info@profesionalreview.com
Botón volver arriba