Algoritmos FPGAs dominan CPUs en


Durante la mayor parte de mi vida, he programado CPUs; y aunque para la mayoría de los algoritmos, el tiempo de ejecución de big-Oh sigue siendo el mismo en CPUs / FPGAs, las constantes son bastante diferentes (por ejemplo, se desperdicia mucha potencia de CPU barajando datos; mientras que para FPGAs a menudo se limita a la computación).

Me gustaría aprender más sobre esto anyone cualquiera sabe de buenos libros / documentos de referencia / tutoriales que tratan el tema de:

En qué tareas dominan las FPGAs las CPU (en términos de puras velocidad) en qué tareas dominan las FPGAs las CPU (en términos de trabajo por jule)

Nota: comunidad wiki marcada

Author: anon, 2010-05-26

4 answers

[sin enlaces, solo mis reflexiones]

FPGAs son esencialmente intérpretes para hardware! La arquitectura es como ASICS dedicado, pero para obtener un desarrollo rápido, y se paga un factor de ~10 en frecuencia y un [no sé, al menos 10?] factor en la eficiencia energética.

Así que tome cualquier tarea donde HW dedicado puede masivamente superar a las CPU, divida por la FPGA 10/[?] factores, y probablemente todavía tendrá un ganador. Cualidades típicas de tales tareas:

  • Oportunidades masivas para paralelismo fino.
    (Hacer 4 operaciones a la vez no cuenta; 128 sí.)
  • Oportunidad para canalización profunda.
    Esto también es una especie de paralelismo, pero es difícil aplicarlo a un tarea única, por lo que ayuda si puede obtener muchas tareas separadas para trabajar en paralelo.
  • (Mayormente) Rutas fijas de flujo de datos.
    Algunos muxes están bien, pero los accesos aleatorios masivos son malos, porque tú no puedo paralelizarlos. Pero ver a continuación sobre los recuerdos.
  • Alto ancho de banda total para muchos recuerdos pequeños.
    FPGAs tienen cientos de pequeñas (O (1KB)) memorias internas (BlockRAMs en lenguaje Xilinx), así que si puede particionar uso de memoria en muchos buffers independientes, se puede disfrutar de un datos ancho de banda que las CPU nunca soñaron.
  • Ancho de banda externo pequeño (comparado con el trabajo interno). La tarea ideal FPGA tiene pequeñas entradas y salidas, pero requiere un mucho trabajo interno. De esta manera, su FPGA no morirá de hambre esperando I/O. (Cpu ya sufren de hambre, y aliviar con cachés muy sofisticados (y grandes), incomparables en FPGAs.) Es perfectamente posible conectar un gran ancho de banda de E/S a un FPGA (~1000 pines hoy en día, algunos con SERDESes de alta tasa) - pero hacer eso requiere un tablero personalizado diseñado para tal ancho de banda; en la mayoría de los escenarios, su E / S externa será una embotellamiento.
  • Bastante simple para HW (también conocido como buena partición SW/HW).
    Muchas tareas consisten en un 90% de lógica de pegamento irregular y solo 10% trabajo duro ("kernel" en el sentido DSP). Si pones todo eso en un FPGA, desperdiciarás un área preciosa {[4] } en una lógica que no trabajo la mayor parte del tiempo. Idealmente, quieres toda la suciedad para ser manejado en SW y utilizar completamente el HW para el kernel. ( Las CPU"Soft-core" dentro de FPGAs son una forma popular de empacar lenta lógica irregular en el área media, si no se puede descargar a una CPU real.)
  • Las manipulaciones de bits extraños son un plus.
    Cosas que no se asignan bien a los conjuntos de instrucciones de CPU tradicionales, como el acceso no alineado a bits empaquetados, funciones hash, codificación & compresión... Sin embargo, no sobreestimes el factor que esto da usted-la mayoría de los formatos de datos y algoritmos que encontrará ya tienen ha sido diseñado para ir fácil en conjuntos de instrucciones de CPU, y CPUs mantener adición especializada instrucciones para multimedia.
    Un montón de Punto flotante específicamente es un menos porque ambos Las CPU y las GPU las crujen en silicio dedicado extremadamente optimizado. (Los llamados FPGA" DSP " también tienen muchas unidades mul/add dedicadas, pero AFAIK estos sólo hacen enteros?)
  • Los requisitos de baja latencia / tiempo real son un plus.
    El hardware realmente puede brillar bajo tales demandas.

EDITAR: Varias de estas condiciones-esp. flujos de datos fijos y muchos separados tareas en las que trabajar - también habilita el corte de bits en las CPU, lo que nivela un poco el campo.

 33
Author: Beni Cherniavsky-Paskin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-02 00:50:32

Bueno, la nueva generación de piezas Xilinx acaba de anunciar brag 4.7 TMACS y la lógica de propósito general a 600MHz. (Estos son básicamente Virtex 6s fabbed en un proceso más pequeño.)

En una bestia como esta si puede implementar sus algoritmos en operaciones de punto fijo, principalmente multiplicar, sumar y restar, y aprovechar tanto el paralelismo Ancho como el paralelismo canalizado, puede comer la mayoría de los PC vivos, en términos de potencia y procesamiento.

Se puede hacer flotando en estos, pero habrá un éxito de rendimiento. Los bloques DSP contienen un MACC de 25x18 bits con una suma de 48 bits. Si puede salirse con la suya con formatos excéntricos y omitir algunos de la normalización de punto flotante que normalmente se produce todavía puede eek a cabo una carga de camión de rendimiento de estos. (es decir, Use la entrada de 18 Bits como punto fijo estrecho o flotador con una mantissia de 17 bits, en lugar de la normal de 24 bits.) Los flotadores dobles van a comer una gran cantidad de recursos, por lo que si lo necesita, probablemente lo hará mejor en una PC.

Si sus algoritmos se pueden expresar en términos de operaciones de suma y resta, entonces la lógica de propósito general en estos se puede utilizar para implementar millones de adders. Cosas como los algoritmos line/circle/yadda/yadda/yadda de Bresenham son MUY buenos para los diseños FPGA.

SI necesitas división... EH... es doloroso, y probablemente va a ser relativamente lento a menos que pueda implementar sus divisiones como se multiplica.

Si necesita muchas funciones trigonométricas de alta precisión, no es así mucho... Una vez más se puede hacer, pero no va a ser bonito o rápido. (Al igual que se puede hacer en un 6502.) Si usted puede hacer frente con solo el uso de una tabla de búsqueda en un rango limitado, entonces su oro!

Hablando del 6502, un 6502 demo coder podría hacer cantar una de estas cosas. Cualquiera que esté familiarizado con todos los viejos trucos matemáticos que los programadores solían usar en la máquina de la vieja escuela como esa seguirá aplicándose. Todos los trucos que el programador moderno te dice " deja que la libaria haga por ti" son los tipos de cosas que usted necesita saber para implementar matemáticas en estos. Si usted puede encontrar un libro que habla de hacer 3d en un 68000 basado en Atari o Amiga, discutirán mucho de cómo implementar cosas en integer solamente.

EN REALIDAD, cualquier algoritmo que se pueda implementar usando tablas de búsqueda será muy adecuado para FPGAs. No solo tiene blockrams distribuidos a través de la pieza, sino que las celdas lógicas se pueden configurar como LUTS y mini de varios tamaños RAM.

Puede ver cosas como manipulaciones de bits fijos como GRATIS! Es simplemente manejar por enrutamiento. Los cambios fijos o las inversiones de bits no cuestan nada. Las operaciones de broca dinámicas, como el cambio por una cantidad variable, costarán una cantidad mínima de lógica y se pueden hacer hasta que las vacas vuelvan a casa.

La mayor parte tiene 3960 multiplicadores! Y 142.200 rebanadas que cada uno puede ser una víbora de 8 bits. (4 Luts de 6 bIts por segmento u 8 Luts de 5 bits por segmento dependiendo de la configuración.)

 9
Author: NoMoreZealots,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-16 11:19:53

Elige un algoritmo SW gnarly. Nuestra empresa se gana la vida con la aceleración HW de SW algo.

Hemos hecho implementaciones de HW de motores de expresión regular que harán 1000 de conjuntos de reglas en paralelo a velocidades de hasta 10 Gb/seg. El mercado objetivo para eso son los enrutadores donde anti-virus e ips/ids pueden ejecutarse en tiempo real a medida que los datos se transmiten sin ralentizar el enrutador.

Hemos hecho codificación de vídeo HD en HW. Solía tomar varias horas de tiempo de procesamiento por segundo de película para convertirlo a HD. Ahora podemos hacerlo casi real-time...it se necesitan casi 2 segundos de procesamiento para convertir 1 segundo de película. Netflix ha utilizado nuestro HW casi exclusivamente para su producto video on demand.

Incluso hemos hecho cosas simples como cifrado y descifrado RSA, 3DES y AES en HW. Hemos hecho zip/unzip simple en HW. El mercado objetivo para eso es para cámaras de video de seguridad. El gobierno tiene una gran cantidad de cámaras de video que generan enormes flujos de tiempo real datos. Que zip en tiempo real antes de enviarlo a través de su red, y luego descomprimirlo en tiempo real en el otro extremo.

Otra compañía para la que trabajé solía hacer receptores de radar usando FPGA. Ellos tomaban muestras de los datos del radar enemigo digitalizados directamente de varias antenas diferentes, y desde el delta del tiempo de llegada, averiguaban qué dirección y qué tan lejos está el transmisor enemigo. Heck, incluso podríamos comprobar la modulación no deseada en el pulso de las señales en el FPGA para averiguar la huella de los transmisores específicos, para que pudiéramos saber que esta señal proviene de un sitio SAM ruso específico que solía estar estacionado en una frontera diferente, para que pudiéramos rastrear los movimientos de armas y las ventas.

Intenta hacer eso en el software!! :-)

 5
Author: SDGator,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-01 21:00:03

Para velocidad pura: - Paralizable queridos - DSP, por ejemplo, filtros de vídeo - Datos móviles, por ejemplo, DMA

 1
Author: Brian Carlton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-26 17:38:36