Cómo acceder a la RAM para usarla con un FPGA para computación de alto rendimiento

Estoy explorando la idea de usar un FPGA para álgebra lineal. Me gustaría poder trabajar en matrices grandes (> 4 GB). Pero los FPGA modernos de gama alta tienen RAM del orden de megabytes.

Describa cómo puedo:

  • añadir chip de RAM externo
  • acceder y usar la RAM de una pc conectada

Cualquier otro comentario o comentario es bienvenido.

Actualmente tengo un Digilent basys2. Soy un principiante.

La selección del tipo de RAM puede afectar en gran medida el rendimiento de su sistema; elija cuidadosamente.
Dado que solo hay 16 E/S de uso general en esa placa, es probable que la interfaz con la memoria externa estilo PC sea un desafío y las únicas soluciones SPI que se me ocurren son mucho más pequeñas. Si bien el rendimiento será malo para el aprendizaje y la experimentación iniciales, es mejor que intente usar el puerto USB. Mirando el circuito, parece tener un AT90USB que al menos se encarga de algunas cosas del protocolo USB. Solo soy un novato en FPGA y esperaré a ver qué respuestas obtienes, pero creo que, en general, puede ser un poco más desafiante de lo que parece con esa placa.
En general, si está atascado con este tablero, no está en una buena posición para hacer este proyecto. Si está trabajando con tantos datos y la velocidad es importante, desea que la memoria esté en la misma placa que la FPGA, probablemente con una interfaz DDR2 o DDR3 entre ellos (pero no soy un experto en eso). Si la velocidad no importa, simplemente resuelva el problema en una PC y ahórrese la molestia de perder el tiempo con el FPGA.
¿Hay alguna razón por la que no usas una computadora con una tarjeta gráfica muy rápida? NVIDIA CUDA o algo similar.
@KevinChen Tengo tarjetas Nvidia Tesla CUDA. Soy estudiante de investigación en sistemas altamente heterogéneos. Un FPGA sería un experimento interesante para problemas que no se aplican bien a esa arquitectura.

Respuestas (1)

Por una variedad de razones, Digilent Basys2 y Xilinx Spartan-3E no funcionarán para usted.

Para esa cantidad de RAM, necesitará algo como DDR2 o DDR3 SDRAM funcionando a una velocidad de reloj bastante alta. Esto no es algo que simplemente pueda soldar en un prototipo de PCB. La PCB debe diseñarse para conectarse a la memoria, idealmente con la RAM ya soldada a la PCB. Si nunca ha diseñado un circuito de este tipo, le sugiero que obtenga una placa FPGA que ya tenga la RAM. Sin embargo, esto va a ser difícil, ya que todas las placas FPGA que vi (en 5 minutos de búsqueda) tenían mucho menos de 4 GB de RAM.

A continuación, necesita algo más nuevo que el Spartan-3/3A/3E. Si bien el S3 es un buen FPGA, la serie Spartan-6 tiene mucho más que ofrecerle. Tiene mucha más RAM interna (pero aún necesita RAM externa), muchos más bloques DSP48 y más lógica. Pero lo más importante, tiene una interfaz SDRAM mucho mejor que la que tiene el Spartan-3. Y por "mucho mejor", me refiero a "mucho más fácil de usar con éxito para un principiante". El controlador de memoria en el S6 es una IP dura, lo que para usted significa que es mucho más fácil lograr los estrictos requisitos de sincronización de la interfaz con SDRAM.

Pero controlar la SDRAM DDR2/DDR3 no es fácil. Xilinx tiene una herramienta llamada "Generador de interfaz de memoria", que se puede encontrar en Core Generator. Esto generará la lógica de la interfaz de memoria para usted y le brindará muchas funciones interesantes que le facilitarán la vida.

Una alternativa al Spartan-6 sería un Virtex-5 o cualquiera de las piezas de la serie 7. Todos estos tienen interfaces de memoria tan buenas o mejores que las del Spartan-6.

Esta placa basada en Virtex-7 tiene un zócalo para dos módulos SO-DIMM, lo que podría hacer que superes los 4 GB de RAM, pero es muy caro a US$5000.

También debo mencionar que si está haciendo esto porque quiere aprender sobre FPGA y electrónica, entonces apoyo sus esfuerzos. Pero si crees que esto de alguna manera va a ser más rápido que las PC estándar, entonces tengo malas noticias para ti. Por el dinero, es difícil vencer a una máquina de cuatro núcleos basada en Intel i7 con una tarjeta GPU razonable. Solo te advierto, en caso de que lo único que realmente te importe sea la velocidad matemática.

+1 por comentario sobre no vencer a una CPU/GPU moderna en matemáticas. ¡Hay una razón por la cual las supercomputadoras modernas están hechas con eso y no con FPGA!