Top

Cargando cosas bonitas...

Recargar...

La Tecnología FPGA: futuro y beneficios principales


Una FPGA (viene del inglés Field Programmable Gate Array) es un dispositivo programable que en su interior contiene celdas de lógica cuya interconexión y funcionalidad puede ser configurada mediante un lenguaje descriptivo. La lógica programable puede llevar a cabo desde funciones muy sencillas como las que reproduce una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip.

En el segundo curso de la carrera de Ingeniería Informática que estoy estudiando, estamos utilizando FPGAs. En la asignatura de Tecnología y Organización de Computadores las utilizamos para realizar las prácticas. Las prácticas consisten en mediante un lenguaje de descripción llamado VHDL, implementemos diversos sistemas. Hemos descrito sistemas combinacionales sencillos, máquinas de estados y redes iterativas. Sin embargo, en la última actividad implementaremos sistemas más complejos con memoria. Concretamente, utilizamos la FPGA Spartan-3 de Xilinx y para sintetizar los circuitos utilizamos también la herramientas ISE de Xilinx.

Adaptación hardware del videojuego homónimo proyectada sobre una Spartan-3 de Xilinx conectada a un monitor VGA y a un teclado PS2. El circuito está especificado en VHDL y sintetizado con Xilinx ISE.

El silicio reprogramable tiene la misma capacidad de ajustarse que un software que se ejecuta en un sistema basado en procesadores, pero no está limitado por el número de núcleos disponibles. A diferencia de los procesadores, las FPGAs de manera paralela realizan diferentes operaciones, por lo que éstas no tienen que competir por los mismos recursos. Cada tarea de procesos independientes se asigna a una sección dedicada de la placa, y puede ejecutarse de manera autónoma sin ser afectada por otros bloques de lógica. Como consecuencia, el rendimiento de una parte de la aplicación no se ve afectado cuando se incorporan otros procesos.

fpga-connected

Programación de FPGAs

En la FPGA no se realiza programación tal cual como se realiza en otros dispositivos como DSP, CPLD o microcontroladores. La FPGA tiene celdas que se configuran con una función específica ya sea como memoria (FLIP-FLIP tipo D), como multiplexor o con una función lógica tipo AND, OR, NAND, XOR. La tarea del “programador” es describir el hardware que tendrá la placa. Como resultado, la labor del “programador” es únicamente definir la función lógica que realizará cada uno de los CLB, seleccionar el modo de trabajo de cada IOB e interconectarlos.

El diseñador cuenta con la gran ayuda de entornos de desarrollo destinados al diseño de sistemas a implementarse en una FPGA. El diseño normalmente es realizado haciendo uso de un lenguaje de programación especial. Estos lenguajes son conocidos como HDL o Hardware Description Language (lenguajes de descripción de hardware). Los HDLs más utilizados son:

  • VHDL (este es el que utilizamos en la Facultad de Informática)
  • Verilog
  • ABEL

Beneficios principales del uso de FPGAs

  • Rendimiento – Gracias al paralelismo del hardware, las FPGAs superan la potencia de cómputo de los procesadores digitales de señales (DSPs). El controlar entradas y salidas (E/S) a nivel de hardware ofrece tiempos de respuesta más rápidos.
  • Tiempo en llegar al mercado – Esta tecnología ofrece flexibidad y capacidades de rápido desarrollo de prototipos para enfrentar los retos de que un producto se libere tarde al mercado. Es posible probar una idea o un diseño y verificarlo en hardware sin tener que pasar por el largo proceso de fabricación. Se pueden implementar cambios en un diseño en cuestión de horas en vez de semanas.
  • Precio – La propia naturaleza programable del silicio implica que no haya precio de fabricación o largos tiempos de ensamblado. Los requerimientos de un sistema van cambiando con el tiempo, y el precio de cambiar incrementalmente lo diseños FPGA es insignificante al compararlo con el precio de implementar cambios en un sistema no reprogramable.
  • Fiabilidad – Los circuitos de un FPGA son una implementación segura de la ejecución de un programa. Los sistemas basados en procesadores frecuentemente implican varios niveles de abstracción para auxiliar a programar las tareas y compartir los recursos entre procesos múltiples. El software a nivel driver se encarga de administrar los recursos de hardware y el sistema operativo administra la memoria y el ancho de banda del procesador. El núcleo de un procesador sólo puede ejecutar una instrucción a la vez, y los sistemas basados en procesadores están siempre en riesgo de que sus tareas se obstruyan entre sí. Los FPGAs, que no necesitan sistemas operativos, minimizan los retos de fiabilidad con ejecución paralela y hardware preciso dedicado a cada tarea.
  • Mantenimiento a largo plazo – Los chips FPGA, al ser programables, son capaces de mantenerse al tanto con modificaciones a futuro que pudieran ser necesarias. Mientras el producto o sistema se va desarrollando, se le puede implementar mejoras funcionales sin la necesidad de invertir tiempo rediseñando el hardware o modificando el diseño de la placa.

Aplicaciones

Las aplicaciones donde más comúnmente se utiliza el silicio reprogramable incluyen a los sistemas de procesamiento digital de señales, radio definido por software, sistemas aeroespaciales y de defensa, sistemas de imágenes para medicina, sistemas de visión para computadoras, reconocimiento de voz, bioinformática, emulación de hardware de computadora, entre otras muchas. Como se puede observar, hay una popularización de su uso sobre todo en aquellas aplicaciones que necesiten de un alto grado de paralelismo.

¿Son las FPGAs el futuro del descifrado de contraseñas y de la supercomputación?

Las FPGAs pueden acelerar las tareas de simulación, encriptación y el desencriptación, minería de Bitcoin, e incluso pueden ser utilizadas para averiguar contraseñas por fuerza bruta. Muchas de estas tareas son realizadas en GPUs o tarjetas gráficas utilizando lenguajes de programación como CUDA o OpenCL. Las tarjetas gráficas de hoy en día son bastante rápidas, y ejecutar programas en una GPU puede acelerar tareas que requieran grandes cantidades de datos y procesos paralelos.

Por ejemplo, tarjetas gráficas aún corriendo a una frecuencia de más de 1GHz con miles de procesadores, siguen siendo superadas por las placas FPGA que incluso consumen menos energía y corren a una frecuencia mucho menor.

En cuanto al descifrado de contraseñas, el CEO de ElcomSoft Vladmir Katalov afirmó que una FPGA tiene una capacidad de procesamiento equivalente a “más de 2000 procesadores de dos núcleos”, con un consumo mucho menor. La prensa incluso llegó a comparar el rendimiento al descifrar claves WPA-PSK de un AMD 5970 que alcanza los 103.000 intentos por segundo, mientras una FPGA es capaz de alcanzar 1.756.800 intentos por segundo. Estos números tampoco hay que tomárselos al pie de la letra, siguen siendo revelaciones de la prensa.

A corto plazo, la tecnología FPGA, no reemplazará tu procesador o tarjeta gráfica. Pero es interesante el hecho de que el hardware reprogramable pueda ofrecer un rendimiento bastante mayor al que ofrecen las tarjetas gráficas de alta gama.

Fuentes:


1 Comentario

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *