A diferença do FPGA para um CPU em processamento de algoritmos

A principal diferença entre um CPU (Central Processing Unity) e um FPGA (Field Programmable Gate Array) é a flexibilidade na construção.

Um processador comum (CPU) processa instruções a nível do sistema operacional, e sua montagem é principiada em entender o Machine Code universal do da arquitetura particular do processador. Já um FPGA, não é necessário ter um interpretador de instruções universal, ele pode ser moldado dinamicamente para um fim específico, sendo assim, processando somente um algoritmo, tipo de instrução, etc.

Quando citamos em processamento de hash por softwares, lembramos que as instruções escritas no determinado algoritmo sempre passarão pelo CPU, no entanto, irá considerar o tempo de resposta da velocidade do mesmo, do sistema operacional, e todos os outros fatores que também utilizam o CPU para demais operações rotinárias.

Diferente de software, o processamento por hardware dedicado a aquele algoritmo, no caso um FPGA devidamente escrito, poderá ter um desempenho superior em relação ao CPU, uma vez que o FPGA é dedicado a somente aquele tipo de processamento, ele só irá esperar um tipo de entrada, e dele sairá somente um tipo de saída.

Um chip FPGA pode ser consistente de vários blocos de processamento (núcleos), e são configurados e manipulados pelo usuário. Portanto, ele pode ser manipulado para executar operações uniformes num curto período de tempo. Na maior parte das vezes, um FPGA bem configurado sempre é mais rápido que um processador convencional.

Na criptografia, o uso dedicado de determinado algoritmo dentro de um FPGA pode sim aumentar sua performance exponencialmente (quando bem configurado, também considerando a qualidade do chip), pois o chip estará adequadamente configurado a processar as instruções daquele algoritmo. Algoritmos para FPGA são escritos em VHDL.

Aqui está uma implementação do AES escrita em VHDL. Você pode pegar este código e configurar no seu próprio FPGA.

tl;dr

Por resumo, o FPGA é um processador de instruções dedicados a um (ou mais) algoritmos, escritos pelo próprio usuário. E por conta disso, ele processará as informações mais rapidamente do que um CPU convencional, como hashing de informações, por exemplo.

FPGA são moldáveis e flexíveis. CPU é universal, tratará qualquer instrução de Machine Code, e logo, por agregar tudo, terá uma performance inferior em relação ao FPGA, isso quando estiver comparando um algoritmo dedicado à ambos.

Como é possível algo ser mais rápido em software, CPU, do que num FPGA?

Uma má-implementação pode sim ser mais lenta do que num CPU em certos casos. Nisso, é bom considerar:

  • o processador que está comparando (a velocidade, qualidade, tamanho de cache);
  • a qualidade do chip FGPU e tamanho de instrução do mesmo;
  • como o algoritmo foi escrito por parte de software (CPU);
  • como o algoritmo foi escrito por parte de hardware (FGPU).

Em relação ao que foi citado acima, é uma questão de ambiente e desenvolvimento. É como perguntar como um algoritmo escrito na linguagem X pode ser melhor que na linguagem Y.

Quais seriam as dificuldades de um FPGA ser tão rápido quanto o CPU?

FPGA e CPU têm propósitos diferentes um do outro. O CPU visa ser algo central, onde todas instruções sejam passadas por ele. O FPGA visa ser limitado a somente um propósito, escrito pelo usuário. E nisso se enquadra também na questão do ambiente de utilização, bem como o porquê de sua utilização.


Mais informações e benchmarks:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *