¿Cómo cumplen los microprocesadores comerciales la sincronización con un reloj gigahertz?

8

Estoy teniendo problemas para hacer que un diseño FPGA relativamente simple (para un Altera Cyclone IV) cumpla con el tiempo para la lógica controlada por un reloj de 250 MHz. Esto me hace preguntarme cómo los microprocesadores comerciales (como el Intel Core i7) logran cumplir con el tiempo en las 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 para un FPGA?

    
pregunta Randomblue

2 respuestas

7

Los FPGAs en realidad no tienen "puertas" per se. Normalmente tienen tablas de consulta (LUT). Las LUT se implementan normalmente utilizando SRAM. Por ejemplo, los FPGA de Spartan 3 utilizan 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 manera que, por ejemplo, XOR de 2 entradas, tiene la 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 realmente tienen muchas, muchas puertas adicionales e innecesarias para realizar la misma función lógica. Si necesita FPGA para reprogramación y creación rápida de prototipos, ¡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, al mismo tiempo que hace lo mismo que hace el FPGA.

Los microprocesadores modernos también están segmentados. Por ejemplo, en un programa FPGA simple, un cálculo muy grande que involucra varias sumas y quizás algunas multiplicaciones y una comparación puede llevarse a cabo 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 cálculo grande se divide en partes, y cada pieza se ejecuta en un ciclo de reloj mucho más corto. Todavía toma aproximadamente la misma cantidad de tiempo para hacer el cálculo, pero la ventaja es que después de que se calcula la primera parte y el primer dato parcial se ha movido a la segunda pieza, la primera parte puede comenzar inmediatamente a procesar el segundo dato. El primer cálculo todavía tardará muchos ciclos en completarse, pero una vez que se realiza, se completará un nuevo cálculo durante cada ciclo de reloj.

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 la CPU tiene enrutamiento específico. FPGA puede ser canalizado, pero la CPU definitivamente está canalizada.

    
respondido por el ajs410
6

Ampliando el comentario de dwlech. Los procesadores tienen conexiones directas de cobre. Los FPGAs están interconectados a través de conexiones programables. También los procesadores ponen cosas críticas una al lado de la otra. Los FPGA también necesitan espacio para la SRAM que contiene la programación.

    
respondido por el Brian Carlton

Lea otras preguntas en las etiquetas