Tengo problemas para hacer que un diseño FPGA relativamente simple (para un Altera Cyclone IV) cumpla con el tiempo para la lógica impulsada por un reloj de 250 MHz. Esto hace que me pregunte cómo los microprocesadores comerciales (como el Intel Core i7) logran cumplir con el tiempo en frecuencias de reloj más de un orden de magnitud superior.
¿Cómo pueden los microprocesadores comerciales cumplir con la sincronización a 3,8 GHz cuando estoy luchando a 250 MHz por un FPGA?
Los FPGA en realidad no tienen "puertas" per se. Por lo general, tienen tablas de consulta (LUT). Los LUT generalmente se implementan utilizando SRAM. Por ejemplo, los FPGA Spartan 3 usan SRAM de 16 bits; es decir, cuatro entradas de dirección producen una señal de salida. La "programación" se realiza cargando la SRAM con un patrón de bits que representa la tabla de verdad, de modo que, por ejemplo, para XOR de 2 entradas, tiene dirección 00 = salida 0, dirección 01 = salida 1, dirección 10 = salida 1, dirección 11 = salida 0
Todo esto significa que los FPGA en realidad tienen muchas, muchas puertas adicionales e innecesarias para realizar la misma función lógica. Si necesita FPGA para la reprogramabilidad y la creación rápida de prototipos, ¡entonces esto es genial! De hecho, algunas personas implementan el diseño primero en el FPGA, lo depuran y luego pasan a un ASIC, que será más pequeño, más rápido y consumirá menos energía, todo mientras hace lo mismo que hace el FPGA.
Los microprocesadores modernos también están canalizados. Por ejemplo, en un programa FPGA simple, se puede realizar un cálculo muy grande que involucra varias sumas y tal vez algunas multiplicaciones y una comparación en el mismo ciclo de reloj. Hacer todo este trabajo en un ciclo de reloj significa que el ciclo de reloj debe ser largo. En una implementación canalizada (que es posible implementar en FPGA y se usa a menudo para lograr el cierre de tiempo), el gran cálculo se divide en partes, y cada parte se ejecuta en un ciclo de reloj mucho más corto. Todavía lleva aproximadamente la misma cantidad de tiempo hacer el cálculo, pero la ventaja es que después de calcular la primera parte y el primer dato parcial se ha movido a la segunda parte, la primera parte puede comenzar a procesar inmediatamente la segunda parte. El primer cálculo aún tardará muchos ciclos en completarse, pero una vez hecho,
Entonces, en pocas palabras, los FPGA tienen una lógica genérica mientras que la CPU tiene una lógica específica. FPGA tiene enrutamiento genérico mientras que CPU tiene enrutamiento específico. FPGA puede estar canalizado, pero la CPU definitivamente está canalizada.
Ampliando el comentario de Dwlech. Los procesadores tienen conexiones directas de cobre. Los FPGAs están interconectados a través de conexiones programables. Además, los procesadores colocan elementos críticos uno al lado del otro. Los FPGA también necesitan espacio para la SRAM que contiene la programación.
viejo contador de tiempo