Como os microprocessadores comerciais atendem ao tempo com um relógio de gigahertz?

8

Estou tendo problemas para criar um projeto FPGA relativamente simples (para um Altera Cyclone IV) que atenda ao tempo para a lógica acionada por um relógio de 250 MHz. Isso me faz pensar como os microprocessadores comerciais (como o Intel Core i7) conseguem atingir o tempo nas frequências de clock mais do que uma ordem de magnitude maior.

Como os microprocessadores comerciais podem atingir o tempo de 3,8 GHz quando estou lutando a 250 MHz por um FPGA?

Randomblue
fonte
8
um FPGA e um processador são maçãs e laranjas. O fpga é construído a partir de módulos / células relativamente grandes que são interconectados. O compilador para o fpga não é melhor ou pior do que um compilador de software, o que significa que há muito espaço para melhorias no desempenho, seus sinais são roteados por todo o lado, através de células grandes / lentas, ocupando tempo. Um processador, por exemplo, é exatamente os portões necessários, sem roteamento extra (varredura e jtag de jtag bem), etc. O mesmo problema com o compilador, mas existem alguns compiladores de chips melhores (caros) por aí.
old_timer

Respostas:

7

Os FPGAs não têm "portas" em si. Eles normalmente têm tabelas de consulta (LUTs). Normalmente, as LUTs são implementadas usando SRAMs. Por exemplo, os FPGAs Spartan 3 usam SRAMs de 16 bits; isto é, quatro entradas de endereço produzem um sinal de saída. A "programação" é feita carregando a SRAM com um padrão de bits que representa a tabela verdade, de modo que, por exemplo, para XOR com 2 entradas, você possui o endereço 00 = saída 0, endereço 01 = saída 1, endereço 10 = saída 1, endereço 11 = saída 0.

Isso tudo significa que os FPGAs realmente têm muitos, muitos portais extras e desnecessários para executar a mesma função lógica. Se você precisa de FPGAs para reprogramação e prototipagem rápida, isso é ótimo! De fato, algumas pessoas implementam o design primeiro no FPGA, o depuram e depois passam para um ASIC, que será menor, mais rápido e consumirá menos energia, enquanto faz o mesmo que o FPGA.

Microprocessadores modernos também são canalizados. Por exemplo, em um programa FPGA simples, um cálculo muito grande envolvendo várias adições e talvez algumas multiplicações e uma comparação podem ser realizadas no mesmo ciclo de clock. Fazer todo esse trabalho em um ciclo de relógio significa que o ciclo do relógio deve ser longo. Em uma implementação em pipeline (que é possível implementar em FPGAs e geralmente é usada para obter o fechamento do tempo), o grande cálculo é dividido em partes, e cada parte é executada em um ciclo de relógio muito mais curto. Ainda leva aproximadamente a mesma quantidade de tempo para fazer o cálculo, mas a vantagem é que, depois que a primeira peça é calculada e o primeiro dado parcial foi movido para a segunda peça, a primeira peça pode começar imediatamente a processar o segundo dado. O primeiro cálculo ainda levará muitos ciclos para ser concluído,

Então, em poucas palavras, os FPGAs têm lógica genérica enquanto a CPU tem lógica específica. O FPGA possui roteamento genérico, enquanto a CPU possui roteamento específico. O FPGA pode ser canalizado, mas a CPU é definitivamente canalizada.

ajs410
fonte
6

Expandindo o comentário de dwlech. Os processadores têm conexões diretas de cobre. Os FPGAs são interconectados através de conexões programáveis. Além disso, os processadores colocam coisas críticas próximas umas das outras. Os FPGAs também precisam de espaço para a SRAM que mantém a programação.

Brian Carlton
fonte
3
Lembre-se de que os processadores de fornecedores como a Intel estão sendo executados na ponta da tecnologia, onde as trocas de velocidade e potência são o estado da arte. Também não é tarefa fácil "cumprir o tempo" em um núcleo de processador com vários gigahertz, mesmo com as vantagens específicas observadas por Brian Carlton.
Michael Karas
3
Apesar do que @Michael Karas ressalta, os FPGAs mais recentes também estão na ponta da tecnologia para as fábricas também.
9788 Brian