• Sonuç bulunamadı

Dispositivo criado em meados dos anos 80 pela empresa Xilinx (CHAN; MOURAD, 1994;

XILINX, ) com o objetivo de possibilitar o molde do hardware de acordo com a aplicação. O FPGA (Field Programmable Gate Array) ou mesmo Matriz de Portas Programáveis em Campo, é um tipo de circuito integrado reconfigurável contendo uma matriz de blocos lógicos, uma rede de interconexão (Switch Matrix) e um conjunto de blocos de entrada e saída. A capacidade dos FPGAs serem reprogramáveis é resultado da configurabilidade destes três elementos de tal forma que qualquer função computacional pode ser implementada (BOBDA, 2007).

Os FPGAs atuais apresentam recursos que permitem a construção de sistemas extrema- mente complexos em um único chip, pois várias estruturas heterogêneas, tais como blocos de memória, passaram também a ser encapsuladas permitindo acelerar uma variedade de aplica- ções. Além disso, uma vez que os circuitos integrados realizam tarefas diferentes utilizando a mesma área, os dispositivos reconfiguráveis podem aproveitar melhor sua densidade (DEHON,

2002).

Embora o custo de engenharia e o tempo de desenvolvimento de um FPGA apresente van- tagens quando comparado ao ASIC, projetos desenvolvidos com tecnologia VLSI, como pro- cessadores e memórias RAM utilizadas nos PCs, apresentam maior velocidade, densidade e complexidade. Contudo, tal tecnologia apresenta custos de produção extremamente elevados, tornando-se viável quando produzidos em larga escala (KUON; TESSIER; ROSE, 2008). A Fi-

gura 2.2 demonstra a relação entre PLDs3,FPGAs,ASICs e os projetos VLSI (HAMBLEN; HALL; FURMAN, 2008).

Outra relação importante que deve ser feita diz respeito à flexibilidade e desempenho das soluções implementadas. Soluções baseadas no computador de Von Neumann (NEUMANN; AS- PRAY; BURKS, 1987) possuem grande flexibilidade por serem capazes de computar qualquer

tipo de tarefa. Por esta razão a terminologia GPP pode também ser utilizada para descrever a máquina de Von Neumann. Estes computadores não apresentam desempenho muito elevado, pois não foram desenvolvidos para processar dados de forma paralela, além de manterem suas instruções fixas independente da aplicação que será utilizada. Desta forma a flexibilidade é alcançada, pois a aplicação se adapta ao hardware. (HAMBLEN; HALL; FURMAN, 2008)

Os ASICs possuem grande desempenho, pois sua programação é otimizada para cada apli- cação a ser desenvolvida, ou seja, cada instrução necessária à aplicação pode ser construída no próprio chip. Desta forma, o desempenho é obtido, pois o hardware é adaptado à aplicação. (HAMBLEN; HALL; FURMAN, 2008)

Os DSPs ou processadores de sinais digitais são utilizados em domínio específico e apre-

3Dispositivos Lógicos Programáveis Simples (PLDs), como Lógica de Matriz Programável (PAL) e Matrizes

2.1 GPP/ASIC/Computação Reconfigurável 32

Figura 2.2: Relações de mercado de lógica digital. Adaptado de (HAMBLEN; HALL; FURMAN, 2008)

sentam boa flexibilidade, porém são utilizados apenas por uma classe específica de aplicações que não exigem números elevados de operações por ciclo de clock. Já os dispositivos FPGAs alcançam alto grau de flexibilidade e performance, pois são programados através de ligações en- tre as portas formando multiplicadores, registos, somadores e assim por diante. Possibilitando sua utilização de forma generalizada, além de permitir elevado nível de performance (MEYER- BAESE, 2007). A Figura 2.3 demonstra a relação de flexibilidade e performance entres estes

dispositivos.

Como citado, um FPGA tem em sua composição principal três tipos de recursos, sendo estes: blocos lógicos, blocos de entrada e saída e chaves de interconexão programáveis, além do roteamento entre eles. A Figura 2.4 demonstra a estrutura básica de um FPGA.

Os blocos lógicos são responsáveis pelas funções lógicas implementadas. Alguns destes possuem recursos sequenciais tais como flip-flops ou registradores, conforme a Figura 2.5. A nomenclatura dada a estes dispositivos pode variar de acordo com o fabricante. A Xilinx chama seu Bloco Lógico de CLB (Configurable Logic Block), a Actel usa o termo LM (Logic Modules), já a Altera utiliza o termo LE (Logic Element) e Macrocell para diferentes séries fabricadas.

2.1 GPP/ASIC/Computação Reconfigurável 33

Figura 2.3: Relação entre flexibilidade e desempenho. Adaptado de (BOBDA, 2007)

através das conexões globais4como ilha5, linhas longas6, celular7e horizontal8(DESCHAMPS et

al., 2006). A Figura 2.6 apresenta a estrutura de uma Switch Matrix.

Os blocos de entrada e saída possuem buffers tristate para as saídas e um buffer para os sinais de entrada. (DESCHAMPS et al., 2006)

A técnica mais utilizada para a construção dos blocos lógicos programáveis é conhecida como Look-Up Table (LUT), que é uma estrutura lógica que implementa tabelas verdade de funções de k entradas. As entradas da função correspondem ao endereço enquanto a saída cor- responde ao conteúdo da memória. Uma LUT implementa todas as 22k funções lógicas de k entradas k ≥ 2. Desta forma uma LUT de 2 entradas é capaz de implementar todas as 16 fun- ções de 2 entradas. Estes blocos lógicos consistem em uma tabela verdade de k entradas, uma lógica de controle e uma parte sequencial que pode ser um flip-flop (LIMA, 1999). As LUTs uti-

lizam funções com poucas entradas e saídas implementadas em células de armazenamento. As células de armazenamento dos LUTs podem ser voláteis, o que caracteriza a perda do conteúdo armazenado em caso de falta de energia, sendo necessário que o FPGA seja programado toda vez que for energizado. Na Figura 2.7 é possível observar o exemplo de um circuito de uma

4Rede de interconexão formada em linhas e colunas que se ligam através de Switch Matrix. Esta rede interliga

os blocos lógicos e os blocos de E/S

5Os clusters lógicos são cercados por canais de roteamento verticais e horizontais segmentados 6São conexões que atravessam todo o circuito sem passar pelas switch matrix

7As conexões mais usadas são transformadas em locais entre clusters lógicos e somente um pequeno ou nenhum

através de segmentos de conexões longas

2.1 GPP/ASIC/Computação Reconfigurável 34

Figura 2.4: Estrutura básica de um FPGA. Adaptado de (PELO; TERROSO, 1998)

Figura 2.5: Bloco lógico programável. Adaptado de (DESCHAMPS et al., 2006)

2.1 GPP/ASIC/Computação Reconfigurável 35

Figura 2.6: Representação de uma Switch Box. Fonte: (PELO; TERROSO, 1998)

LUT e o seu uso para implementar uma função.

Figura 2.7: Implementação da lógica combinatória de uma LUT

A construção de sistemas embarcados tem se beneficiado com a evolução dos FPGAs, pois cada vez mais oferecem equilíbrio entre o desempenho e a flexibilidade (COMPTON; HAUCK, 2002). Outra área que se beneficia com a utilizações destes dispositivos é a computação de alto desempenho - ou High Performance Computing (HPC), já que proporcionam aumento consi- derável na capacidade computacional de forma a superar o obtido com os microprocessadores comuns, permitindo a criação de arquiteturas explicitamente paralelas e especializadas (HER- BORDT et al., 2007; BAXTER et al., 2007). As aplicações que exemplificam a necessidade desta

tecnologia são aquelas que tradicionalmente exigem alto poder de processamento como biologia molecular, dinâmica dos fluídos, aplicações financeiras, simulações diversas etc.

A programação em dispositivos FPGAs tradicionalmente respeita um fluxo de desenvol- vimento como apresentado na Figura 2.8. Inicialmente o circuito é desenvolvido, seja por diagramas esquemáticos e/ou linguagens de descrição de hardware. No processo de síntese é verificada a consistência do que foi programado, podendo em seu término ser realizada simu- lações comportamentais do sistema, onde serão verificadas se as funções foram implementadas

2.1 GPP/ASIC/Computação Reconfigurável 36 corretamente. Em seguida é realizada a implementação do projeto, ou seja, os elementos são posicionados e as ligações entre eles são roteadas, mapeando o circuito desenvolvido no dispo- sitivo alvo. Nesta fase do processo, as simulações se tornam mais reais, já que são consideradas as propriedades físicas do dispositivo. Logo é possível analisar o tempo de propagação do si- nal elétrico no meio e realizar simulações para avaliar o circuito projetado. Por fim, é gerado um arquivo de configuração para o dispositivo, chamado de bitstream, que pode ser enviado ao FPGA utilizando um cabo ou mesmo um dispositivo de armazenamento não volátil, o que viabiliza embarcar o aparato de configuração no mesmo sistema.

Figura 2.8: Fluxo de desenvolvimento para um FPGA. Adaptado de (QUARTUS, 2007)

Hoje existem diversas ferramentas para auxiliar no desenvolvimento de projetos em FPGA, seja em cada processo citado ou mesmo de forma global. Contudo, os fabricantes destes dis- positivos fornecem ferramentas que permitem realizar todos os processos necessários para a concepção do projeto, desde sua especificação, ao envio do arquivo de configuração ao FPGA.

2.1 GPP/ASIC/Computação Reconfigurável 37 das tecnologias de programação utilizadas como Antifuse9, EEPROM10 e SRAM11, são mos-

trados na Tabela 2.1. Na sequência, a Tabela 2.2 apresenta as principais características dos dispositivos mais recentes dos fabricantes Xilinx e Altera.

Fabricantes Tecnologia de Programação

Achronix Semiconductor Corp. SRAM

Actel Corp. Antifuse/EEPROM

Altera Corp. SRAM/EEPROM

Cypress Semiconductor Corp. SRAM

Integrated Circuit Technology (ICT) Corp. EEPROM

Lattice Semiconductor Corp. EEPROM

Quicklogic Corp. Antifuse

SiliconBlue Technologies Corp. SRAM

Xilinx Corp. SRAM/EEPROM

Tabela 2.1: Principais fabricantes de FPGA e componentes. Adaptado de (COSTA, 2007)

Virtex 7 Stratix V GS

Tecnologia 28nm 28nm

Células lógicas (Kgates) 285K a 2,443K 563K a 1,100K Memória Total (Mbits) 18M a 77M 32M a 34M

DSP 420 a 2,350 1,620 a 1,840

Transceiver (numero/Gbps) 72 / 13.112 27 / 12.5

Tabela 2.2: Comparação entre os modelos de placas das fabricantes de FPGA Xilinx e Altera. Adaptado de (ASSUMPÇÃO, 2010)

Com a evolução constante dos FPGAs, tem-se aprimorado a capacidade de introduzir em uma mesma pastilha um ou mais processadores, como é o caso de algumas famílias de FPGAs da Xilinx que possuem processadores hardcore PowerPC internamente, viabilizando uma nova abordagem que possibilite extrair os benefícios de ambas arquiteturas, permitindo que sistemas possam ser desenvolvidos de forma híbrida, com parte da aplicação em software e parte em hardware. A este tipo de abordagem da-se o nome de codesign.

Apesar da combinação híbrida de FPGA/processador ser ideal para o desenvolvimento de sistemas complexos, as otimizações destes sistemas a partir de linguagens de descrições de alto nível, ainda possuem muitas lacunas e precisam ser melhor exploradas.

9Antifuseou Anti-fusível é um dispositivo de dois terminais que quando programado se funde, criando então

uma conexão

10Electrically-Erasable Programmable Read-Only Memory - podem ser programadas reprogramadas várias

vezes eletricamente

Benzer Belgeler