¿Son los FPGA tan poderosos como la cantidad de puertas que tienen?

7

Digamos que tengo un FPGA de 1 millón de puertas. He encontrado algunos procesadores en OpenCores que solo requieren 50k puertas. Entonces, ¿sería posible hacer, digamos, un procesador de 8 núcleos con un FPGA de este tipo? ¿O hay límites a los FPGA cuando se trata de implementar cosas masivamente paralelas?

Lo siento si suena nuevo, pero soy nuevo en FPGA.

    
pregunta Thomas O

6 respuestas

5

Sí, en principio. Aunque si desea que hablen entre sí, puede usar mucha más lógica para el arbitraje, la conmutación de bus, etc. y cuando se ejecutan buses alrededor del FPGA, muchas puertas y la capacidad de conexión pueden agotarse para el enrutamiento.

    
respondido por el mikeselectricstuff
8

Básicamente estás haciendo dos preguntas:

- "¿Son los FPGA tan poderosos como la cantidad de puertas que tienen?"

En realidad diría que la respuesta es "no". El tamaño le dice qué tan "grandes" son, pero no cuán "poderosos" son, porque:

  1. "poderoso" es muy subjetivo para su aplicación final.
  2. "poderoso" suele estar más asociado con el nodo de tecnología que con el tamaño del troquel (un dispositivo pequeño de la generación actual puede ser del mismo tamaño que uno de una generación anterior, ¿son igualmente "poderosos"?)

- Parafraseando: "¿Puedo dividir el número de" puertas "requeridas por el número de" puertas "totales y obtener el número de núcleos que podría caber en el dispositivo?"

La respuesta a esto también es "no". Esto se debe a que los FPGA tienen enrutamiento limitado, lo que significa que:

  1. A pesar de que puede haber suficientes recursos lógicos en el chip, el software no podrá enrutar tantos núcleos, especialmente si hay una sobrecarga de conectividad.
  2. Es probable que el diseño, en general, no cumpla con el rendimiento de tiempo del núcleo individual.

Otro problema es cómo manejar la E / S fuera del chip: ¿habrá suficiente ancho de banda y cantidad de E / S para suministrar / leer datos de esa cantidad de núcleos?

(Por cierto, estamos intentando iniciar un sitio SE dedicado a los FPGA ... considere su soporte ... enlace )

    
respondido por el Saar Drimer
4

Encontrará que los conteos de puertas son apenas estimaciones, en lugar de datos simples sobre los FPGA. Mirando más de cerca, los conteos de puertas anunciados incluirán cosas como el uso de porciones de RAM de bloque para la lógica, y la lógica que sintetice no se reducirá a un solo tipo de puerta estándar como si estuviera construyendo con nada más que puertas NAND de 2 entradas, ya que los bloques lógicos son un poco más complejos, normalmente con LUT con 4 o más entradas para cada registro.

Entonces, la pregunta real es qué tan eficientemente el software de síntesis puede asignar su diseño específico a su chip específico. Probablemente pueda hacer un procesador de 8 núcleos fácilmente: si los núcleos, y lo más importante de sus interconexiones, se adaptan bien al chip. Es muy posible que un diseño falle por falta de enrutamiento de la señal en lugar de por falta de lógica.

    
respondido por el Yann Vernier
2

Además de los periféricos en la matriz (que pueden hacer una gran diferencia en la "potencia" con elementos como el Bloqueo RAM, los multiplicadores integrados, etc.) y la velocidad de reloj / "cierre de tiempo", otro factor limitante de los FPGA es bastante a menudo el número de pines.

Claro, puedes poner 8 núcleos en un FPGA, pero luego tienes que conseguir que esos 8 núcleos hablen con el mundo exterior. Para empeorar las cosas, una vez que supera unos pocos cientos de pines, tiene que usar un paquete BGA, que es mucho más difícil diseñar un PCB para.

    
respondido por el ajs410
2

Sí, los FPGA son excelentes para implementar cosas masivamente paralelas. Muchas personas han puesto 8 o más CPU en un FPGA, no es simplemente "en principio".

Echa un vistazo a la imagen del plano en el artículo "Un sistema de 24 procesadores en el chip FPGA Design with Network on Chip" por Zhoukun WANG y Omar HAMMAMI.

Ese plano de planta hace que sea bastante obvio que ese FPGA en particular está bastante lleno de cosas. Los 24 núcleos de la CPU (cada uno de ellos es una CPU MicroBlaze de 32 bits con un total de 32 KByte de instrucciones locales y memoria de datos) llenan aproximadamente la mitad del FPGA (alrededor del perímetro). El enrutamiento entre los núcleos de la CPU y los 4 buses externos independientes prácticamente llena todo el resto del FPGA. (Cada uno de los buses externos tiene 64 bits de datos más algunas señales de control, lo que lleva a un módulo de memoria DDR2 independiente).

(Este IC en particular también incluye dos núcleos duros de CPU PowerPC 405 además del tejido FPGA - Zhoukun y Omar aparentemente no se molestaron en usarlos).

Como otras personas aquí han señalado, dividir "número de puertas en un FPGA" por "número de puertas en una CPU" es demasiado optimista. En este caso, 142,128 LUT en un Xilinx FPGA Virtex-4 FX140 dividido por aproximadamente 1000 LUT requeridos para un MicroBlaze de tamaño mínimo, da (optimistamente) 142 CPU por chip. Entonces, ¿está decepcionado de que aparentemente "solo" caben 24 CPU en esa estructura FPGA (sin contar los dos núcleos duros PowerPC 405 fuera de la estructura FPGA en ese IC)?

Un FPGA de 1 millón de compuertas dividido por una CPU de 50k compuertas da (de manera optimista) 20 CPU por chip. Creo que tendrás suerte si aprietas hasta 4 CPU en ese FPGA.

  

"Es asombroso lo que puedes exprimir   en estas partes si diseñas el   arquitectura de la máquina con cuidado para   explotar los recursos FPGA. A diferencia de,   hubo un articulo muy interesante   en un reciente EE Times por un compañero de   Automatización haciendo 6502 virtuales en   VHDL, luego sintetizándolas en   Arquitecturas FPGA arbitrarias.   A pesar de que el diseño 6502 se utiliza solamente   alrededor de 4000 "puertas ASIC" no lo hizo   encaja bastante en un XC4010, un llamado   "10,000 gate" FPGA. Eso es un doble problema   RISC de 32 bits debe caber, y un 4 MHz   6502 no, dice mucho   sobre síntesis VHDL vs. manual   Colocación, sobre arquitecturas heredadas.   contra los personalizados, y tal vez incluso   algo sobre CISC vs. RISC ... "   - Jan Gray

El Wikipedia: artículo "procesador de software" tiene más información sobre el empaquetado de múltiples CPU en un solo FPGA.

    
respondido por el davidcary
1

Sí, más o menos.

Además de las diferencias en los periféricos en la matriz (RAM, buffers de IO, etc.) También debe considerar el hecho de que diferentes FPGA están clasificados para diferentes velocidades de reloj.

Es posible que tengas dos FPGA de 500k gate, pero si uno tiene un reloj máximo de 50 MHz y el otro sube a 1 GHz, uno es claramente más poderoso que el otro.

Ahora, generalmente no es tan simple en el mundo real, ya que los FPGA están más limitados por los retrasos de propagación que la velocidad de reloj pura, pero los dispositivos diferentes tienen unidades lógicas más rápidas o más lentas, lo que cambia la complejidad de su lógica sin tener que usar búfer síncrono o problemas de metastabilidad de encuentro.

    
respondido por el Connor Wolf

Lea otras preguntas en las etiquetas