De maneira simplista, podemos dizer que um FPGA (Field-Programmable Gate Array) é um circuito integrado que pode ser reprogramado. Para entender melhor esse conceito, vamos rapidamente comparar "hardware" de "software".
Normalmente um "hardware" é aquela parte do sistema que vem de fábrica pronta e nada (ou quase nada) se muda. Ela tem uma performance excelente, mas pouca flexibilidade. Já o "software" é aquilo que se coloca sobre o hardware para detalhar melhor o que se deseja.
Uma impressora, por exemplo, tem o seu hardware (processador, memória, cartucho, etc.) e nele se carrega um software que vai definir as funcionalidades. Assim o software é flexível porém tem menos performance do que as tarefas realizadas em hardware. Porém o fabricante da impressora não pode fabricar o equipamento apenas com funcionalidades em hardware, pois se houver algum bug ou necessidade de adicionar um novo recurso, a impressora teria que ser trocada.
Dessa forma cada fabricante deve definir que recursos realiza em hardware (melhor performance, porém menos flexível) ou em software. É um equilíbrio delicado.
Muito bem, o FPGA é um conceito misto. Ele é hardware e tem a performance de hardware, porém ele pode ser reprogramado. Então ele consegue o melhor dos mundos.
Repare que quando você faz uma atualização de um switch ou roteador, você está realizando a troca do software que fica armazenado na memória não volátil (normalmente, uma memória flash). Assim quando você liga o switch ou roteador ele carrega esse software (o tempo de boot) e começa a trabalhar. O FPGA é algo totalmente diferente disso.
No FGPA efetivamente temos um processador, um circuito integrado, que pode ter seu comportamento alterado e com alta performance.
Para que serve um switch com FPGA?
O conceito que está surgindo é ter FPGA dentro de switchs, principalmente para desafogar tarefas de servidores, firewalls, etc.
Ou seja, o switch seria programado para fazer parte das tarefas do servidor. Por exemplo processamento de SSL, decodificação de vídeo, etc. Assim parte do processamento seria realizado no servidor e outra parte no switch.
Uma outra aplicação seria integração com firewalls, no qual parte do processamento das regras sejam realizadas pelo switch.
Em todos esses casos o FPGA dentro do switch teria uma performance muito melhor do que utilizando os mecanismos tradicionais de ASIC e/ou software.
Mas ai surge a questão: porque colocar o FPGA no switch e não diretamente no servidor, firewall ou roteador? Isso é possível, porém existem algumas vantagens em se fazer isso no switch, tais como:
Eu não creio que os switchs FPGA sejam capazes de substituir a flexibilidade dos servidores ou a complexidade dos firewalls, mas é bem provável que sejam parte integrante dos data-centers do futuro, desafogando um pouco do trabalho e aumentando a performance desses equipamentos.
Twitter
Me siga para ser informado dos próximos posts:
http://www.twitter.com/mlrodrig
Normalmente um "hardware" é aquela parte do sistema que vem de fábrica pronta e nada (ou quase nada) se muda. Ela tem uma performance excelente, mas pouca flexibilidade. Já o "software" é aquilo que se coloca sobre o hardware para detalhar melhor o que se deseja.
Uma impressora, por exemplo, tem o seu hardware (processador, memória, cartucho, etc.) e nele se carrega um software que vai definir as funcionalidades. Assim o software é flexível porém tem menos performance do que as tarefas realizadas em hardware. Porém o fabricante da impressora não pode fabricar o equipamento apenas com funcionalidades em hardware, pois se houver algum bug ou necessidade de adicionar um novo recurso, a impressora teria que ser trocada.
Dessa forma cada fabricante deve definir que recursos realiza em hardware (melhor performance, porém menos flexível) ou em software. É um equilíbrio delicado.
Muito bem, o FPGA é um conceito misto. Ele é hardware e tem a performance de hardware, porém ele pode ser reprogramado. Então ele consegue o melhor dos mundos.
Repare que quando você faz uma atualização de um switch ou roteador, você está realizando a troca do software que fica armazenado na memória não volátil (normalmente, uma memória flash). Assim quando você liga o switch ou roteador ele carrega esse software (o tempo de boot) e começa a trabalhar. O FPGA é algo totalmente diferente disso.
No FGPA efetivamente temos um processador, um circuito integrado, que pode ter seu comportamento alterado e com alta performance.
Para que serve um switch com FPGA?
O conceito que está surgindo é ter FPGA dentro de switchs, principalmente para desafogar tarefas de servidores, firewalls, etc.
Ou seja, o switch seria programado para fazer parte das tarefas do servidor. Por exemplo processamento de SSL, decodificação de vídeo, etc. Assim parte do processamento seria realizado no servidor e outra parte no switch.
Uma outra aplicação seria integração com firewalls, no qual parte do processamento das regras sejam realizadas pelo switch.
Em todos esses casos o FPGA dentro do switch teria uma performance muito melhor do que utilizando os mecanismos tradicionais de ASIC e/ou software.
Mas ai surge a questão: porque colocar o FPGA no switch e não diretamente no servidor, firewall ou roteador? Isso é possível, porém existem algumas vantagens em se fazer isso no switch, tais como:
- o switch se conecta com todos os elementos da rede. Assim várias soluções diferentes (roteador, firewall, servidor, etc.) podem usar o mesmo FGPA.
- o switch está na frente de todo o tráfego. Dessa forma ele sempre terá acesso aos pacotes que necessita da maneira mais eficiente possível.
Eu não creio que os switchs FPGA sejam capazes de substituir a flexibilidade dos servidores ou a complexidade dos firewalls, mas é bem provável que sejam parte integrante dos data-centers do futuro, desafogando um pouco do trabalho e aumentando a performance desses equipamentos.
Me siga para ser informado dos próximos posts:
http://www.twitter.com/mlrodrig
Comentários