• Nenhum resultado encontrado

Um Canal de Comunicação Inter-FPGAs com Módulo de Detecção de Erro

N/A
N/A
Protected

Academic year: 2021

Share "Um Canal de Comunicação Inter-FPGAs com Módulo de Detecção de Erro"

Copied!
104
0
0

Texto

(1)

“Um Canal de Comunicação Inter-FPGAs

com Módulo de Detecção de Erro”

Por

Lucas Torquato de Melo

Dissertação de Mestrado

Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br www.cin.ufpe.br/~posgraduacao

(2)

Centro de Informática

Pós-graduação em Ciência da Computação

Lucas Torquato de Melo

“Um Canal de Comunicação Inter-FPGAs

com Módulo de Detecção de Erro”

Trabalho apresentado ao Programa de Pós-graduação em Ciência da Computação do Centro de Informática da Univer-sidade Federal de Pernambuco como requisito parcial para obtenção do grau de Mestre em Ciência da Computação.

Orientador: Prof. Dr. Manoel Eusébio de Lima

(3)

Catalogação na fonte

Bibliotecária Alice Maria dos Santos Costa, CRB 4-711

Melo, Lucas Torquato de.

Um canal de comunicação inter-FPGA’s com módulo de detecção de erro. – Recife: O Autor, 2014. 102 f.: fig., tab.

Orientador: Manoel Eusébio de Lima.

Dissertação (Mestrado) - Universidade Federal de Pernambuco. CIN. Ciência da Computação, 2014.

Inclui referências.

1. Engenharia de computador. 2. Arranjos de lógica

programável em campo. 3. VHDL (Linguagem descritiva de hardware). 4. Circuítos integrados digitais I. Lima, Manoel Eusébio de. (orientador). II. Título.

(4)

Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco, sob o títuloUm Canal de Comunicação Inter-FPGAs com Módulo de De-tecção de Erro, orientada pelo Prof. Prof. Dr. Manoel Eusébio de Lima e aprovada pela banca examinadora formada pelos professores:

———————————————————————– Prof. Abel Guilhermino da Silva Filho

Centro de Informática/UFPE

———————————————————————– Prof. Remy Eskinazi Sant’Anna

UPE

———————————————————————– Prof. Manoel Eusébio de Lima

Centro de Informática/UFPE

RECIFE 2014

(5)

À Deus À minha família

(6)

Agradecimentos

Primeiramente agradeço a Deus por ter me dado o dom da vida, pela honra de servir em sua obra, pela saúde me concedida, e pelas forças que tenho recebido para superar os obstáculos em minha caminhada e atingir meus objetivos. Sem dúvida foi por Sua graça que hoje concluo minhas atividades acadêmicas relacionadas ao mestrado.

Agradeço a minha família por estar tão presente em minha vida, pelos ensinamentos e valores me passados, por minha educação; sou grato a Deus pela felicidade de viver em uma família tão abençoada. Agradeço o apoio e a compreensão de vocês nesse período em que fiquei distante. Tenham certeza que na esperança de um retorno vitorioso, sempre levei todos no olhar.

Ao professor Dr. Manoel Eusébio que com sua simplicidade e carisma pode me guiar ao longo do mestrado para que os objetivos traçados fossem alcançados. Foi uma honra tê-lo conhecido e acima de tudo trabalhar com um ótimo profissional que abriu as portas para essa grande oportunidade.

Devo também parte da felicidade dessa conclusão de mestrado ao apoio de minha Ana, que mesmo tendo entrado a pouco tempo em minha vida, já tem se tornado uma companheira presente. Essa conquista também é sua, Ana.

À toda equipe do laboratório HPCIN e Sísmica os quais não apenas se dedicaram a me ajudar nos problemas encontrados, mas tornaram-se amigos e companheiros de trabalho, os quais quero ter sempre presentes ao longo de minha vida profissional.

A Severino José, Gilliano Gino e ao professor Dr. Abel Guilhermino pelos todos os trabalhos paralelos realizados, foi uma grande satisfação ter conhecido vocês e poder contribuir para que as atividades acadêmicas colocadas fossem desempenhadas com sucesso. É apenas o início de uma grande jornada de trabalho ao lado de vocês.

À Joelma e Marcelo que indiretamente ajudaram bastante no desenvolvimento desse trabalho tornando os dias de trabalho no laboratório mais descontraídos e fornecendo todo suporte necessário para que as atividades fossem realizadas.

Um agradecimento especial a Victor Medeiros e Silvio Santana, que tanto se dispuseram a colaborar na solução dos problemas encontrados ao decorrer das atividades e se dedicarem para que o êxito dessa dissertação fosse atingido.

Ao Professor Pablo Viana que ainda hoje participa das minhas atividades acadêmicas, pelas oportunidades de participação em projetos de pesquisa, pelo companherismo e ajuda no meu amadurecimento como pesquisador e profissional.

A todos os professores membros do curso de Ciência da Computação do Centro de Informática que contribuiram para minha formação com a disponibilidade de informação e conhecimento.

(7)

Por fim e não menos importante, um agradecimento a todos meus amigos de minha terra natal, grandes amigos pela fé que sempre fizeram o possível para estarem presentes nessa etapa tão importante, ajudando e fazendo com que eu pudesse perceber o belo horizonte que está sendo traçado com as escolhas que tenho tomado.

(8)

Resumo

A busca por aumento de desempenho de sistemas computacionais é cada vez maior em empresas e pesquisas científicas. Essa necessidade existe por conta do surgimento de aplicações complexas que necessitam de um grande poder computacional para serem executadas eficientemente. A utilização de arquiteturas alternativas como FPGAs nesse contexto têm sido realizada com o intuito de prover excelente desempenho na execução dessas aplicações. Atualmente, sistemas envolvendo múltiplos FPGAs são utilizados em diversas aplicações científicas. A tendência é que em tais sistemas sejam desenvolvidos de forma a permitir escalabilidade de dispositivos, possibilitando que mais FPGAs possam fazer parte da arquitetura e aumentando o desempenho. Para que esses sistemas possam funcionar de forma eficiente, utilizando paralelamente recursos existentes nos FPGAs, uma comunicação eficiente deve existir entre os FPGAs disponíveis na plataforma. Geralmente esse tipo de comunicação, em FPGAs de última geração, se dá por meio de interfaces tipo LVDS (Sinalização Diferencial de Baixa Tensão) e por meio de transceptores e receptores. A sinalização LVDS permite o envio de sinais em alta velocidade através de um par diferencial de fios paralelos. A utilização desse recurso permite que a transmissão de dados entre os dispositivos possa ser realizada de forma mais eficiente, possibilitando uma comunicação mais segura contra interferências eletromagnéticas. Outro fator importante é que o roteamento que interconecta os pinos LVDS na plataforma deve ser desenvolvido com precisão para evitar instabilidades na comunicação. Infelizmente, muitas plataformas disponíveis no mercado não observam tais restrições, limitando a taxa de transferência no barramento. Este trabalho apresenta um canal de comunicação inter-FPGAs baseado em uma interface DDR voltado para esse tipo de plataforma. Esta abordagem promove uma comunicação estável entre esses dispositivos sem a utilização de pinos LVDS. Um módulo de detecção de erro também foi desenvolvido para garantir a integridade das transferências e corrigir possíveis erros no barramento. O canal foi validado em uma plataforma comercial. Os resultados de síntese e desempenho são apresentados nesse trabalho bem como os estudos de caso envolvidos.

Palavras-chave: Canal de comunicação. Inter-FPGA. Barramento estável. CRC e LVDS. Barramento paralelo. Transceptores e receptores.

(9)

Abstract

The demand for increased performance of computing systems is growing in companies and scientific researches. This need exists because of the emergence of complex applications which require massive computational power to run efficiently. In this context, the use of alternative architectures such as FPGAs have been performed in order to provide excellent performance of those applications. Nowadays, systems involving multiple FPGAs are used in various scientific applications. The trend is that such systems are designed to allow scalability of devices, enabling that more FPGAs are used in architecture, increasing the performance. In order to these systems works efficiently in parallel using resources in FPGAs, an efficient communication must exist between the FPGAs available on the platform. Usually this type of communication in advanced FPGAs, is done by interfaces LVDS (Low Voltage Differential Signaling) and using transceivers and receivers. The LVDS signaling allows the sending of signals at high speed through a differential pair of wires. Using this feature, the transmission of data between devices can be performed more efficiently, allowing a more secure communications against electromagnetic interferences. Another important factor is that the routing that interconnects the LVDS pins on the platform should be developed accurately to avoid instabilities in communication. Unfortunately, many platforms available in the market do not observe such constraints, limiting the throughput of the bus. This work presents an inter-FPGAs communication channel based on a DDR interface to this kind of platform. This approach promotes a stable communication between these devices without the use of pins LVDS. An error detection module is also designed to ensure the integrity of transmissions and correct any errors on the bus. The channel has been validated on a commercial platform. The synthesis results and performance are presented in this work as well as case studies involved.

Keywords: Communication channel. Inter-FPGA. Stable bus. CRC and LVDS. Parallel Bus. Transceivers and receivers.

(10)

Lista de Figuras

1.1 Diagrama da arquitetura PC de Von Neumman . . . 16

1.2 Arquiteturas Multi-Core e GPGPU . . . 18

2.1 Arquitetura PARAMNet-3 . . . 22

2.2 Arquitetura do transmissor . . . 23

2.3 Arquitetura do receptor . . . 24

2.4 Arquitetura base do transmissor e receptor . . . 25

2.5 Arquitetura chAdapt . . . 26

2.6 Arquitetura do sistema com dois FPGAs Stratix II . . . 27

2.7 Diagrama de tempo oversampling . . . 28

2.8 Estrutura do pacote . . . 29

2.9 Diagrama da arquitetura de comunicação . . . 30

3.1 Diagrama flexibilidade x desempenho de diversas tecnologias . . . 34

3.2 Arquitetura de um FPGA . . . 36

3.3 Arquitetura de uma ALM da fabricante Altera . . . 37

3.4 Diagrama de uma plataforma genérica com um FPGA . . . 38

3.5 Supercomputador Reconfigurável Novo-G . . . 39

3.6 Topologia MESH . . . 40

3.7 Topologia CROSSBAR . . . 41

3.8 Sistema LVDS . . . 42

3.9 Exemplo de cálculo de checksum CRC . . . 44

3.10 Barramento de Sistema Simples . . . 45

3.11 Buffer tri-state . . . 46

3.12 Protocolo handshake em barramento assíncrono . . . 48

3.13 Transmissão em um barramento paralelo . . . 49

3.14 Transmissão em um barramento serial . . . 50

4.1 GiDEL PROCStarIII . . . 52

4.2 Diagrama da GiDEL PROCStarIII . . . 53

4.3 Diagrama da GiDEL PROCStarIII (Por FPGA individualmente) . . . 54

4.4 Fluxo de projeto do ProcWizard . . . 56

5.1 Principais sinais do canal de comunicação . . . 59

5.2 Diagrama da arquitetura do Transceptor . . . 60

5.3 Sinais do módulo CRC_GEN . . . 63

(11)

5.5 Diagrama de comunicação com sucesso na transmissão . . . 64

5.6 Diagrama de comunicação com falha na transmissão . . . 65

5.7 Arquitetura do módulo Trans_PHY . . . 66

5.8 Divisão de dados na entrada do módulo ALTDDIO . . . 67

5.9 Saída de dados do módulo ALTDDIO . . . 67

5.10 Saída de dados do módulo Trans_CTRL . . . 68

5.11 Fluxograma de transmissão de pacotes . . . 70

5.12 Diagrama da arquitetura do Receptor . . . 71

5.13 Arquitetura do módulo Recv_PHY . . . 72

5.14 Janela válida de dados ideal no recebimento . . . 73

5.15 Fluxograma de configuração de PLL - Transceptor . . . 74

5.16 Fluxograma de configuração de PLL - Receptor . . . 75

5.17 Sinais do módulo CRC_CHK . . . 77

5.18 Fluxograma de verificação CRC . . . 78

5.19 Sinais do módulo Recv_CTRL . . . 79

5.20 Fluxograma de recebimento de pacotes . . . 81

6.1 Diagrama do sistema desenvolvido para análise de desempenho . . . 83

6.2 Diagrama do sistema de hardware desenvolvido . . . 84

6.3 Diagrama do sistema de geração de erros . . . 87

6.4 Reflexões de traços sísmicos . . . 91

(12)

Lista de Tabelas

2.1 Resultados de desempenho da arquitetura chAdapt . . . 26

2.2 Tabela com principais características dos trabalhos relacionados . . . 31

3.1 Tabela verdade de um buffer tri-state . . . 46

6.1 Resultados obtidos com frequência de 50 MHZ . . . 85

6.2 Resultados obtidos com frequência de 100 MHZ . . . 85

6.3 Resultados obtidos com frequência de 120 MHZ . . . 86

6.4 Resultados obtidos com frequência de 150 MHZ . . . 86

6.5 Teste de erros com frequência de 100 Mhz e quantidade de dados transferidos igual a 633,30GB . . . 87

6.6 Tabela comparativa de trabalhos relacionados . . . 89

6.7 Resultados de Síntese - Transceptor . . . 91

6.8 Resultados de Síntese - Receptor . . . 91

6.9 Resultados da Modelagem Sísmica com um FPGA (400x216x216) . . . 94

6.10 Resultados da Modelagem Sísmica com três FPGAs (400x216x216) . . . 94

(13)

Lista de Abreviaturas

CPU Central Processing Unit

FPGA Field Programmable Gate Array

GPGPU General Purpose Graphics Processing Unit

PC Personal Computer

CUDA Compute Unified Device Architecture

LUTs Look-up Table

LVDS Low Voltage Differential Signaling

DDR Double Data Rate

SDR Single Data Rate

CRC Cyclic Redundancy Check

SPC Single Particle Check

MGTs Multi-Gigabit Transceivers

UART Universal Synchronous Receiver/Transmitter

FIFOs First In, First Out

JTAG Joint Test Action Group

CCMs Custom Computing Machines

ASICs Application Specific Integrated Circuit

CIs Circuito Integrado

DSPs Digital Signal Processor

ASIPs Application Specific Instruction Processor

HDL Hardware Description Language

HPC High Performance Computing

CLB Configurable Logic Block

ALM Adaptative Logic Module

LAB Logic Array Block

USB Universal Serial Bus

PCB Printed Circuit Board

LDPC Low Density Parity Check

(14)

Sumário

1 Introdução 15 1.1 Objetivos . . . 20 1.2 Organização da Dissertação . . . 21 2 Trabalhos Relacionados 22 2.1 Considerações Finais . . . 30 3 Fundamentação Teórica 32 3.1 Hardware Reconfigurável . . . 32 3.1.1 FPGAs . . . 34 3.2 Sistemas Multi-FPGAs . . . 37 3.3 LVDS . . . 41 3.4 Método CRC . . . 42 3.5 Barramentos de Comunicação . . . 44

3.5.1 Barramentos Seriais e Paralelos . . . 49

3.6 Considerações Finais . . . 49

4 Plataforma Multi-FPGA GiDEL PROCStarIII 51 4.1 GiDEL PROCStarIII . . . 51

4.2 Conectividade da Plataforma . . . 53

4.3 GiDEL ProcWizard . . . 55

4.4 Considerações Finais . . . 57

5 Barramento de Comunicação 58 5.1 Módulo de transmissão - Transceptor . . . 59

5.1.1 Transceptor - Módulo de geração CRC . . . 62

5.1.2 Transceptor - Módulo de camada física . . . 65

5.1.3 Transceptor - Módulo de controle . . . 68

5.2 Módulo de recepção - Receptor . . . 71

5.2.1 Receptor - Módulo de geração CRC . . . 76

5.2.2 Receptor - Módulo de controle . . . 79

5.3 Considerações Finais . . . 81

6 Estudos de caso 82 6.1 Estudo de caso 1 - Avaliação de desempenho do canal de comunicação . . . 82

(15)

14

6.1.2 Cenário 2 - Análise de Desempenho com frequência de 100 Mhz . . . . 85

6.1.3 Cenário 3 - Análise de Desempenho com frequência de 120 Mhz . . . . 85

6.1.4 Cenário 4 - Análise de Desempenho com frequência de 150 Mhz . . . . 86

6.1.5 Cenário 5 - Análise de Desempenho com testes de erros . . . 86

6.1.6 Análise dos resultados e estudo comparativo . . . 88

6.2 Estudo de caso 2 - Avaliação do canal de comunicação com uma aplicação sísmica 91 6.2.1 Modelagem 3D com uma FPGA (400x216x216) . . . 93

6.2.2 Modelagem 3D com três FPGAs (400x216x216) . . . 94

6.2.3 Modelagem 3D com três FPGAs (1000x432x432) . . . 96

6.3 Considerações Finais . . . 96

7 Conclusões e Trabalhos Futuros 98

(16)

1

Introdução

O aumento da densidade de transistores em circuitos integrados possibilitou que cada vez mais aplicações complexas pudessem ser implementadas nestes dispositivos. O aumento gradativo da capacidade de processamento destes circuitos permite que aplicações possam ser processadas com mais eficiência em diversas áreas do conhecimento humano.

Uma grande variedade de aplicações existentes abrange o campo científico. Nesse contexto, podem ser destacadas aplicações de Processamento de Sinais e imagem, Genética, Geofísica, Bioinformática, Problemas Matemáticos, Simulações Financeiras, Criptografia, dentre inúmeras THEOCHARIDES et al.(2013) ARAYA-POLO et al.(2011) MA et al.(2012).

A maioria destas aplicações possui em seu processamento a manipulação de uma enorme quantidade de dados. Essa manipulação é feita, em geral, por rotinas que processam de forma massiva operações aritméticas sobre os dados de entrada. As rotinas que são executadas influen-ciam diretamente no desempenho desses sistemas, desde que, dependendo do tipo de dados e a plataforma computacional, seu processamento pode ser custoso em tempo de execução e por conseguinte inviabilizar seu uso.

Sistemas cada vez mais poderosos têm sido desenvolvidos ao longo dos últimos anos para atender a demanda de processamento nesse contexto. A finalidade de tais sistemas é poder prover meios eficientes a execução dessas aplicações de forma a obter-se um menor tempo para se atingir os resultados esperados. Dentre os sistemas existentes, os supercomputadores e clusters têm tido um destaque nesses cenários. Estes supercomputadores e clusters são em geral implementados por núcleos de processamento multi-cores, que em uma arquitetura paralela otimizam substancialmente o desempenho de execução de algoritmos complexos, os quais podem ser particionados e distribuídos em módulos de processamento, assim como seus dados. Geralmente estas opções ainda são as arquiteturas mais utilizadas em projetos dessas super máquinas. Estas arquiteturas utilizam o modelo de processamento Von Neummann STALLINGS

(2002) como representado na figura 1.1.

O modelo Von Neummann possui como característica ter o acesso ao conteúdo da memória de forma sequencial, fazendo com que cada instrução da aplicação seja executada uma após outra pelo processador. Desse modo, tarefas que não possuem dependência de dados e que

(17)

16

Figura 1.1: Diagrama da arquitetura PC de Von Neumman

poderiam ser executadas paralelamente acabam ficando ociosas, prejudicando o desempenho do sistema. Esse fenômeno é conhecido como "Gargalo de Von Neummann"BACKUS(1978). Aplicações que processam grandes quantidades de dados são altamente prejudicadas quando executadas nesse tipo de arquitetura. isso ocorre porque o grau de paralelismo de suas operações não é explorado, impedindo que uma alta eficiência do desempenho seja atingida. Outro aspecto a destacar é que esses processadores possuem um conjunto de instruções fixa não possibilitando muitas vezes a otimização da execução das rotinas da aplicação.

A evolução dessa arquitetura trouxe à tona os processadores multi-core, os quais são baseados em um conjunto de núcleos na mesma pastilha de silício. Embora seja notável um desempenho significativo neste tipo de arquitetura, ainda assim o paralelismo nao é explorado de forma eficiente, uma vez que cada núcleo do processador ainda executa as instruções de forma sequencial. Dessa forma, a eficiência do desempenho é condicionada a quantidade de núcleos existentes no processador. Como citado, uma arquitetura bastante poderosa que utiliza a arquitetura PC para executar aplicações é a dos Supercomputadores. Supercomputadores são máquinas dotadas de grande número de processadores e quantidades de memória elevadas tendo como principais características uma grande capacidade de processamento, forte acoplamento e um alto custo.

é altamente desejável que os resultados do processamento das aplicações citadas acima sejam obtidos com o menor tempo de execução possível. Assim, surge a necessidade de se investigar a possibilidade da utilização de tecnologias alternativas para o processamento dessas aplicações.

Uma possível solução para otimização de execução nesse cenário seria a utilização de clusters, que consistem em uma associação de PCs. Um cluster pode ser definido como um aglomerado de computadores conectados entre si que funcionam como uma única máquina. Neste tipo de arquitetura, cada componente é chamado de nó. Cada nó é responsável por processar uma parte do problema em questão. Um nó gerenciador é responsável por dividir o problema em partes menores e distribuí-las para os componentes do cluster. Todos os nós executam as operações simultaneamente e retornam os dados para o nó gerenciador, que é

(18)

responsável por associar todos os resultados. Desse modo, os nós cooperam entre si para atingir um determinado objetivo comum.

De acordo com Tanenbaum TANEMBAUM(2007) o uso de clusters para processamento é uma alternativa atrativa porque além de oferecer um modelo de comunicação simples, é possível obter um alto desempenho da aplicação dependendo do modo utilizado na interconexão entre os computadores. Entre os modelos de clusters mais conhecidos, se destaca o Beowulf BEOWULF CLUSTER - THE OFFICIAL WEBSITE(Acessado em 2014), que é um modelo de cluster de desempenho escalável, baseado em hardware comum, rede privada, e com uma estrutura montada sobre o sistema operacional Linux.

Apesar de ser uma possível solução, é importante notar que nesse tipo de sistema existe a grande possibilidade de diversos nós ficarem ociosos durante a execução de alguma operação. isso ocasiona um consumo de energia ineficiente nesse tipo de sistema. Diversas pesquisas se preocupam em desenvolver técnicas e propor métodos para esse tipo de problema e podem ser encontradas em TERZOPOULOS; KARATZA(2013) LIU; DUAN; DU(2012).

Um outro tipo de arquitetura que pode ser avaliada é o grid computacional. Ele é carac-terizado por Tanembaum como um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente TANEMBAUM A. S. E STEEN MAARTEN

(2007). O objetivo é criar uma organização virtual robusta, dinâmica e escalável capaz de compartilhar e agregar recursos de forma a disponibilizá-los como serviços. A computação com grid computacional é um paradigma que também é muito utilizado em atividades de pesquisas científicas que demandam um alto processamento GREEN; WANG; ALAM(2013a) GREEN; WANG; ALAM(2013b).

No entanto, atualmente, novas arquiteturas têm sido sugeridas, desta feita, dispositivos que trabalham como co-processadores de alto desempenho. Dentre elas, podemos relacionar as GPGPUs (General Purpose Graphic Processing Unit) e FPGAs (Field Programmable Gate Arrays). A arquitetura GPGPU teve uma rápida identificação como dispositivo capaz de efetuar processamento paralelo de propósito geral, o que a levou a uma posição de destaque no que se refere a processadores de alto desempenho. A criação da arquitetura CUDA da NViDiA

NVIDIA CUDA ARCHITECTURE(Acessado em 2014) por exemplo, deu a programadores a oportunidade de desenvolver suas próprias aplicações paralelas para que sejam executadas nas GPGPUs. Pesquisas realizadas com essa tecnologia para aceleração e ganho de performance na execução de algoritmos podem ser avaliadas em MENEZES et al.(2012) PAPADOPOULOS et al.(2013).

Uma GPGPU é composta por várias unidades de processamento (cores) otimizadas para executar diversas operações aritméticas. Juntamente, no mesmo sistema, elementos de memória também são encontrados conectados a essas unidades de processamento por meio de um barramento de alta velocidade. A figura 1.2 mostra a arquitetura de uma GPGPU em comparação com uma arquitetura multi-core.

(19)

18

Figura 1.2: Arquiteturas Multi-Core e GPGPU

um excelente desempenho em termos de velocidade de execução. Embora seja uma arquitetura extremamente paralela, ainda existem desafios relacionados ao acesso à memória externa e consumo de energia. Outro fator que merece destaque é que os núcleos de processamento de uma GPGPU possuem uma arquitetura de processamento fixa, baseada no modelo Von Neummann, ou seja, em cada núcleo, o processamento é sequencial.

Atualmente uma tecnologia bastante explorada para soluções de alto desempenho é o dispositivo lógico FPGA. Os FPGAs são uma categoria de hardware reconfigurável que permitem serem programados para executarem operações específicas. Diferentemente da arquitetura Von Neummann, essa tecnologia dispõe de elementos tais como LUTs, DSPs e multiplexadores, que possibilitam que o algoritmo da aplicação seja implementado de forma customizada em seus blocos lógicos. Dessa forma, é possível definir uma arquitetura de hardware dedicada para a execução de uma aplicação, ou parte dela. Outro fator que torna o FPGA atrativo para soluções de alto desempenho, é que eles são dispositivos reconfiguráveis, ou seja, eles permitem que sua lógica digital seja alterada inúmeras vezes, inclusive em tempo real de execução. Adicionalmente, alguns trabalhos relatam que FPGAs consomem menos energia quando comparado com CPUs e GPGPUs executando as mesmas aplicações SILVA et al.(2013) KESTUR; DAVIS; WILLIAMS

(2010).

Geralmente um dispositivo lógico FPGA é utilizado como um co-processador do sistema. As rotinas sequenciais não críticas do algoritmo são executadas por uma CPU host, e as rotinas

(20)

em que se pode extrair o maior grau de paralelismo são implementadas no dispositivo lógico FPGA. Uma das estratégias adotadas nesse tipo de abordagem, é a de desenvolvimento de elementos de processamento (PEs) que implementam a execução de operações aritméticas do algoritmo, otimizando o paralelismo. A estratégia consiste em instanciar diversos PEs na arquitetura de forma que todos executem as operações simultaneamente, aumentando ainda mais o desempenho. Outra estratégia seria utilizar os recursos dos FPGAs para realizar tarefas diferentes, mas simultâneas, de forma a otimizar o tempo de execução.

O uso de FPGAs para processamento de alto desempenho vem sendo foco de pesquisas científicas nos últimos anos. Diversos trabalhos relatam com sucesso o uso de FPGAs para acele-rar aplicações e obtenção de speedups significativos quando comparado com implementações em apenas CPUs CHEN; SINGH(2013) HEGNER; SINDHOLT; NANNARELLI(2012).

Sistemas envolvendo múltiplos FPGAs são uma realidade atualmente e os esforços estão sendo voltados para a utilização desse paradigma no campo da computação de alto desempenho visto os benefícios que essa tecnologia oferece. O grupo de pesquisa CHREC da Universidade da Califórnia desenvolveu recentemente um supercomputador reconfigurável chamado Novo-G, que consiste em um cluster escalável de FPGAs para executar programas científicos. Cada nó do sistema é composto por um computador intel Xeon e plataformas multi-FPGAs para co-processamento. De acordo com os resultados de desempenho apresentados pelo grupo ao utilizar esse sistema executando problemas científicos, excelentes speedups puderam ser obtidos com essa abordagem GEORGE; LAM; STITT(2011). é importante ressaltar que a utilização de mais de um dispositivo lógico FPGA no mesmo sistema pode aumentar ainda mais seu desempenho.

Para o desenvolvimento de sistemas baseados em diversos FPGAs como o citado acima, geralmente utilizam-se plataformas multi-FPGAs acopladas a CPUs hosts conectadas e funci-onando como um cluster. Esse tipo de plataforma tem sido alvo de diversas áreas no campo científico como prototipação de MPSoCs, aceleração de algoritmos e criptografia TANG; MEH-REZ; TUNA(2012) SANO; HATSUDA; YAMAMOTO(2013). Geralmente, sistemas com essa configuração são baseados na implementação de diversas arquiteturas específicas ou PEs distribuídos entre os FPGAs. Dessa forma, aumenta-se o desempenho da aplicação com a utilização de vários dispositivos. Níveis de escalabilidade também podem ser alcançados já que novos dispositivos lógicos podem ser acrescentados ao sistema.

Para que esses sistemas possam funcionar de forma eficiente, utilizando paralelamente recursos existentes nos FPGAs, uma comunicação estável deve existir entre os FPGAs disponíveis na plataforma. Essas plataformas dispõem de barramentos que interconectam os dispositivos presentes, e é por meio deles que os dados podem trafegar por todo o sistema. é importante que o barramento de comunicação que interliga os dispositivos seja bem projetado para evitar erros de transferência de informações. Torna-se necessário portanto, um funcionamento estável do barramento de comunicação entre os FPGAs para prover o funcionamento seguro do sistema.

(21)

20 1.1. OBJETIVOS transceptores e receptores embutidos nos FPGAs. Também é de extrema importância que os dispositivos também tenham suporte a interfaces tipo LVDS LOW-VOLTAGE DIFFERENTIAL SIGNALING (LVDS). Esse tipo de sinalização permite o envio de sinais em alta velocidade atra-vés de um par diferencial de fios paralelos. A utilização desse recurso permite que a transmissão de dados entre os dispositivos possa ser realizada de forma mais eficiente, possibilitando uma comunicação mais segura contra interferências eletromagnéticas. Dispositivos da família Stratix da Altera, por exemplo, possuem cerca de 116 canais LVDS disponíveis em cada dispositivo além de possuirem transceptores e receptores embutidos no dispostivo. Estas configurações possibilitam que barramentos alcancem taxas de transferências na ordem Gbps como é o caso dos FPGAs da família Virtex, da Xilinx XILINX, INC.(Acessado em 2014) e Stratix V, da ALTERA ALTERA CORPORATION(Acessado em 2014).

1.1 Objetivos

O trabalho apresentado nesta dissertação visa o desenvolvimento de um canal dedicado de comunicação síncrono, independentemente do uso da interface LVDS. Esse canal de comunicação é voltado para plataformas que possuem dispositivos FPGAs sem pinagem especial, tipo LVDS, bem como, para plataformas onde a pinagem LVDS dos FPGAs não foi utilizada para confecção do barramento. Apesar de alguns FPGAs possuirem os transceptores e receptores, os mesmos não podem ser utilizados caso a pinagem LVDS não esteja disponível para a transmissão. A proposta é prover um canal de comunicação estável inter-FPGA com boas taxas de transferência e que seja capaz de se auto-recuperar em caso de falha na transmissão, mantendo a estabilidade do sistema e tornando todo o fluxo de processamento transparante para o usuário. Para garantir uma boa taxa de transmissão, o transceptor é baseado em uma interface DDR e para assegurar a integridade dos dados foram desenvolvidos módulos de detecção de erro baseados na geração e verificação CRC. O canal será desenvolvido utilizando-se a linguagem Verilog e recursos disponíveis no software Quartus ii da ALTERA QUARTUS II SOFWARE(Acessado em 2014). A plataforma multi-FPGA alvo será uma da fabricante Gidel, a PROCStariii GIDEL PROCSTARIII(Acessado em 2014). Apesar do canal ser desenvolvido levando em consideração essa plataforma, o mesmo foi criado de forma a ser flexível, podendo dessa forma ser utilizado por outros sistemas. Um outro fator que merece destaque é que o canal desenvolvido será capaz de se auto-recuperar em casos de falha. A implantação do canal em uma plataforma multi-FPGA não impede que erros possam acontecer no barramento por motivos já mencionados anteriormente. Diante disso, é necessário desenvolver uma estratégia para manter a estabilidade do canal mesmo com incidências de erros no canal. Adotou-se assim a criação de um sistema capaz de detectar e de corrigir possíveis erros no barramento, mantendo a estabilidade e funcionamento do canal de comunicação de forma transparente para as aplicações que estejam utilizando o sistema.

Foram desenvolvidos alguns exemplos de uso do barramento para validar a proposta. O desempenho atingido no canal é mensurado e comparado com dados apresentados nos trabalhos

(22)

da seção trabalhos relacionados.

1.2 Organização da Dissertação

Esta dissertação é distribuída em 7 capítulos. O primeiro capítulo introduz o tema e logo em seguida os objetivos do trabalho são apresentados. No segundo capítulo é relacionado os trabalhos pesquisados que serviram de apoio para o desenvolvimento dessa dissertação. Ao final do segundo capítulo, uma tabela especificando as principais características de cada trabalho é apresentada. No terceiro capítulo a fundamentação teórica que embasa a pesquisa é apresentada e discutida. O quarto capítulo foi reservado para a apresentação em detalhes da plataforma Gidel PROCStariii, utilizada nos experimentos. No capítulo cinco é apresentado canal de comunicação inter-FPGAs desenvolvido. No capítulo seis, são apresentados exemplos de aplicações com o barramento, resultados e discussão final. Por fim, no capítulo sete, a conclusão e trabalhos futuros são apresentados.

(23)

22 22 22

2

Trabalhos Relacionados

Alguns trabalhos têm sido realizados com diferentes abordagens no desenvolvimento de barramentos de comunicação com o objetivo de prover interfaces de transmissão de dados inter-FPGAs. A maioria das abordagens utilizadas são baseadas em transmissores e receptores que utilizam os recursos LVDS das plataformas.

Em GODBOLE; BATTH; RAMASWAMY(2010) os autores desenvolveram um canal de comunicação de alta velocidade Inter-FPGA baseado em recursos LVDS. O projeto apresentado é baseado em um transmissor e um receptor que são instanciados em cada FPGA para realizar as transferências de dados. Os autores relatam que foi possível alcançar taxas de transferências na ordem de Mbps em cada via de comunicação do sistema. O canal é composto por 18 vias de comunicação e cada uma delas atinge uma taxa de transmissão de até 625 Mbps. A figura 2.1 apresenta o diagrama de cada plataforma e suas conexões.

Figura 2.1: Arquitetura PARAMNet-3

O canal foi projetado para um cluster de alta performance chamado PARAMNet-3. Esse cluster é composto por plataformas multi-FPGAs com dispositivos Virtex-4 da Xilinx.

Em cada FPGA foram implementadas 3 portas de conectividade para interligar outros nós do cluster, chamadas de BPs e FPs. Essas portas foram desenvolvidas utilizando os MGTs (transceivers de alta velocidade) disponíveis nos FPGAs. Para a comunicação inter-FPGA, o canal proposto foi implementado em cada dispositivo de forma a prover uma comunicação com

(24)

taxa de 10 Gbps (utilizando as 18 vias de comunicação). A comunicação entre os FPGAs foi necessária para que os pacotes de dados que trafegam no cluster pudessem ser roteados de forma mais eficiente. O diagrama da arquitetura do transmissor é exibida na figura 2.2.

Figura 2.2: Arquitetura do transmissor

O transmissor é composto por um módulo de controle (controller), um módulo serializa-dor/deserializador de saída (OSERDES), e buffers com suporte LVDS (IBUF e OBUF). O módulo controller é responsável por gerenciar o envio de dados para o barramento de comunicação. O módulo SERDES recebe dados de 4 bits paralelos em sua entrada e os envia para o barramento de forma serializada. Os buffers IBUF e OBUF implementam os drivers LVDS de entrada e saída de dados. Alguns dos mesmos componentes do transmissor também compõem o receptor e sua arquitetura é exibida na figura 2.3.

O receptor por sua vez, é formado por um módulo de controle (controller), um módulo serializador/deserializador de entrada (ISERDES), um módulo de atraso de sinais (IDELAY e IDELAYCTRL), um deslocador (BITSLIP) e buffers com suporte LVDS (IBUF e OBUF). O módulo IDELAY é responsável por atrasar o sinal de dados de entrada, de forma a sincronizar a transmissão com o relógio gerado pelo transmissor. O módulo IDELAYCTRL contém as definições de atrasos para o módulo IDELAY. O módulo controller gerencia todo o recebimento de dados e indica para o transmissor se o canal está sincronizado e pronto para o recebimento de dados. Também é de sua responsabilidade configurar o atraso do módulo IDELAY para o devido alinhamento de janela de dados válida na entrada do receptor. O módulo ISERDES recebe os sinais serializados e os encaminha para o módulo BITSLIP que fica encarregado de gerar a saída de 4 bits paralelos.

O canal de comunicação funciona inicialmente com a transmissão de uma codificação padrão de 2 bits para alinhamento da janela válida de dados. O receptor capta essa codifição e alinha a janela válida de dados através da configuração do tempo de atraso de sinal no módulo

(25)

24

Figura 2.3: Arquitetura do receptor

IDELAY. Após o alinhamento, o receptor indica para o transmissor que a transferência de dados pode ser iniciada. Os dados a serem transmitidos possuem 72 bits de largura. Esse dado é divido em pacotes de 4 bits e são recebidos pelo módulo OSERDES. Cada pacote então é serializado é encaminhado para uma das vias LVDS do buffer OBUF para ser enviado. Dezoito vias de transmissão são utilizadas totalizando os 72 bits do dado a ser enviado. O receptor capta os dados do barramento e os encaminha para a deserialização nos módulos ISERDES e BITSLIP. O relógio utilizado no receptor é de 312.5 MHz e está sincronizado com o transmissor.

Os autores também implementaram um teste de erros para o barramento com a finalidade de validá-lo. Eles desenvolveram um test engine pra gerar erros no canal. Este engine é responsável por testar as trilhas LVDS e duas instâncias foram implementadas em cada FPGA. O ambiente de testes é formado por um processador PowerPC executando uma aplicação que se comunica com a arquitetura por meio de uma interface UART. é possível configurar parâmetros de teste e visualizar estatísticas na aplicação.

Os autores apresentam como resultados a implementação com sucesso do canal de comunicação. Cada linha de transmissao foi capaz de atingir uma taxa de transmissão de 625 Mbps de dados, totalizando cerca de 10 Gbps de taxa quando utilizadas as 18 vias de comunicação.

Em ROMOTH et al.(2012) é apresentada uma solução para otimização de comunica-ção inter-FPGAs utilizando um canal de adaptacomunica-ção. O trabalho relata que existem diferentes necessidades nos projetos baseados em multi-FPGAS, largura do barramento de comunicação, transmissão ponto-a-ponto ou LVDS, são algumas das opções que poderiam ser parametrizadas no canal de comunicação de forma simples. Cada plataforma possui características próprias e quase sempre, ao migrar-se o projeto para uma outra, é necessário fazer modificações no projeto

(26)

e alterar a arquitetura para se adaptar às mudanças necessárias conforme a plataforma alvo. Diante disso, os autores do trabalho propõem um canal parametrizável capaz de se auto-adaptar a arquitetura alvo, abstraindo do usuário a necessidade de alterar o seu projeto inicial.

Ela é baseada em uma abordagem com tamanho de barramento de comunicação para-metrizável, possibilidade de uso direcional ou bi-direcional e com relógio sincronizado com o transceptor. A arquitetura também suporta comunicação ponto-a-ponto ou LVDS e interface de transmissão SDR ou DDR. Os autores também destacam que é possível utilizar os módulos SERDES dos FPGAs e que não foram utilizados os MGTs nessa abordagem. A arquitetura básica utilizada pelos autores é apresentada na figura 2.4.

Figura 2.4: Arquitetura base do transmissor e receptor

Como pode ser visto, a arquiteturas em ambos FPGAs é idêntica. Ela é composta por FIFOs de entrada e saída de dados (TX-FIFO e RX-FIFO), um módulo de controle (FLOW_CTRL) e um módulo de camada física (PHY). Os dados a serem transmitidos são colocados nas FIFOs TX-FIFO. O módulo FLOW_CTRL é responsável por controlar o envio dos dados e o módulo PHY implementa de fato a transmissão destes dados no barramento. No módulo PHY estão presentes FIFOs de envio e recebimento de dados do barramento, que também são chamadas de RX-FIFO e TX-FIFO destacadas no topo da figura 2.4.

O canal de adaptação, chamado chAdapt, é uma modificação da arquitetura básica apresentada. Ele é formado por um módulo em hardware que auto-configura a transmissão de acordo com as características da plataforma. Para que isso aconteça, inicialmente a transmissão de uma sequência padrão de 10 bits de treinamento ocorre de forma repetida entre transmissor e receptor para identificação de possíveis atrasos na comunicação. Nesse mesmo tempo todos os controles de conexão são otimizados e o alinhamento do relógio é realizado através do ajuste dinâmico de sua fase. A figura 2.5 exibe o diagrama da arquitetura do chAdapt.

O módulo chAdapt contém uma sequência de 10 bits de treinamento que é transmitida pelos módulos para ajuste de fase de relógio e de delays. Esse módulo é responsável por configurar os parâmetros da comunicação. Cada pacote de configuração fica armazenado no módulo LB-MUX composto por um multiplexador que dispõe dos parâmetros de configurações

(27)

26

Figura 2.5: Arquitetura chAdapt

possíveis. O barramento local (Local_Bus) interliga esses módulos para que as configurações em ambos FPGAs sejam realizadas independentemente da estabilização do canal. Mesmo que a plataforma utilizada não possua um barramento local para comunicação entre os dispositivos, pode-se ser utilizar o módulo JTAG-VIO-2-LB que implementa um canal de comunicação via JTAG entre os FPGAs.

De forma semelhante à arquitetura básica, o módulo PHY é responsável por implementar o envio e recebimento de dados no barramento. O canal proposto foi testado em plataformas de prototipação rápida da família RAPTOR RAPTOR MODULES(Acessado em 2014). Diversos módulos contendo FPGAs diferentes puderam ser analisados. Os dispositivos Spartan-3A, Spartan-6, Virtex-4 e Vixtex-5 foram combinados de diversas formas para que o canal de comunicação pudesse ser avaliado em diferentes situações. A tabela 2.1 a seguir exibe os principais resultados obtidos após a introdução do módulo chAdapt no sistema de comunicação.

Tabela 2.1: Resultados de desempenho da arquitetura chAdapt

Plataforma Mbit/s (1 Via) Tipo Interface Frequência

Spartan-3 320 DDR (LVDS) 160 Mhz

Spartan-6 320 DDR (LVDS) 160 Mhz

Spartan-6 to Virtex-4 140 SDR (SE) 140 Mhz

Virtex-5 1500 DDR (LVDS) 750 Mhz

Como pode ser visto, o canal de comunicação chAdapt foi testado em diversas configura-ções e os resultados mostram que diferentes taxas de transferência foram alcançadas. Destaca-se nesse momento que o uso de interfaces com LVDS permite que taxas de transferência maiores possam ser obtidas. A combinação dos FPGAs Spartan-6 e Virtex-4 obteve um resultado inferior as demais combinações. Os autores relatam que não foi possível atingir uma frequência de relógio maior que 140 Mhz devido as instabilidades na comunicação e que para a configura-ção foi utilizada uma comunicaconfigura-ção SE (Single-Ended ou ponto-a-ponto) sem uso de interfaces LVDS. As demais combinações que fizeram uso de interfaces LVDS, puderam atingir resultados muito significativos. A combinação Virtex-5 e Virtex-5 por exemplo, alcançou uma taxa de

(28)

transferência de 1.500 Mbits a uma frequência de 750 Mhz.

Em SANO et al.(2010), os autores propõem uma arquitetura escalável baseada em FPGA para implementação de máquinas computacionais dedicadas e reconfiguráveis, chama-das CCMs HARTENSTEIN; BECKER; KRESS (1996). O intuito é prover uma arquitetura eficiente em termos de alto-desempenho e consumo de energia para módulos CCMs voltados para simulações científicas. A implementação foi realizada em uma plataforma multi-FPGA DN7000k10PCI DINI BIG FPGA BOARD DN7000K(Acessado em 2014) a qual possui três FPGAs Stratix Altera II. Para que fosse possível o tráfego de dados entre os dispositivos, os auto-res desenvolveram um canal de comunicação baseado nos transceptoauto-res e receptoauto-res embarcados dos FPGAs. A figura 2.6 apresenta uma visão da arquitetura completa.

Figura 2.6: Arquitetura do sistema com dois FPGAs Stratix II

Cada FPGA possui um módulo de comunicação composto por um tranceptor TX e um receptor RX com interface LVDS. Cada unidade conta com serializadores e deserializadores que implementam 8 vias de comunicação entre os dispositivos. Uma taxa de 4.98 Gbps pode ser atingida com o canal utilizado resultando em cerca de 622 Mbits por via.

Diferentemente dos trabalhos anteriores que apresentaram canais de comunicação inter-FPGA, os trabalhos a seguir se preocupam com outras variantes importantes como a estabilidade e recuperação de erros em transmissões envolvendo circuitos digitais. Para garantir ainda mais a integridade dos dados em uma comunicação digital, alguns autores propoem soluções baseadas em métodos de recuperação de dados em caso de falhas. é de extrema importância que exista uma confiabilidade na transmissão de dados por meio de um barramento de comunicação. Por isso, os trabalhos a seguir foram analisados com o intuito de embasar os métodos de correção de erros utilizados no projeto dessa dissertação.

O trabalho apresentado em PANG et al.(2010), apresenta um mecanismo de recuperação de dados para comunicações seriais de alta velocidade. Para tanto, foi utilizado um método chamado de oversampling. Basicamente esse método consiste em gerar amostragens do sinal a ser transmitido utilizando vários relógios com fases diferentes. A figura 2.7 apresenta, em forma de diagrama de tempo, o conceito envolvido nesse método.

(29)

28

Figura 2.7: Diagrama de tempo oversampling

De acordo com o diagrama, quatro amostras do sinal a ser transmitido podem ser capturadas. Percebe-se que existe um relógio padrão (clk) e três com fases diferentes (clk90, clk180, clk270). Essa estratégia permite que o sinal possa ser transmitido com segurança, uma vez que pode ser escolhido qual domínio de relógio que melhor valoriza a janela de dados válida do sinal. Para que isso aconteça, é necessário detectar a transição da borda do sinal que está sendo transmitido. A detecção é realizada pela comparação dos relógios adjacentes com o relógio padrão. Detectado o momento em que a transição acontece, os autores selecionam o domínio de relógio mais apropriado para o envio do sinal de acordo com algumas políticas definidas. Dessa forma, é possível recuperar o sinal transmitido quando necessário. Ao final, os autores apresentam uma estrutura de testes que é formada por um transmissor e por um receptor. De acordo com os resultados, percebe-se que o método proposto é praticável na recuperação de dados em transmissões seriais.

Em ANTON et al.(2009), outra abordagem para detecção de erros em comunicações digitais é apresentada. O trabalho consiste na utilização de códigos CRC para checagem de erros em transmissões seriais entre dispositivos digitais. Os autores utilizaram uma string binária que representa o polinômio utilizado na geração do código CRC composta por 33 bits. Cada elemento da string representa um grau de x. O número 1 indica que o grau x referente a posição da string existe no polinômio. Da forma semelhante, o número 0 irá indicar que o grau x daquela posição não existe no polinômio. Essa string é armazenada em um registrador paralelo de 33 bits e indica ao gerador CRC qual o polinômio que será usado. O gerador é composto basicamente de operadores lógicos como o XOR e registradores de deslocamento. O circuito desenvolvido foi testado com mensagens de tamanho de 2048 bits sendo transmitidas entre dois computadores equipados com plataformas FPGA Altium Live Design ALTIUM(Acessado em 2014). O circuito desenvolvido foi capaz de suportar taxas de transferência de até 300 Mbits a uma frequência de 300 MHz.

O último trabalho dessa seção propõe uma arquitetura de comunicação redundante para conexões seriais de alta velocidade ELLSWORTH et al.(2011). A idéia principal do trabalho é poder utilizar um segundo canal de comunicação caso o principal falhe. é destacado inicialmente que falhas em mecanismos de comunicação utilizando-se MGTs causado por soft-erros (erros

(30)

provenientes de alguma falha do sistema digital) são objetos de pesquisa em diversos grupos como por exemplo o Xilinx XRTC XILINX RADIATION TEST CONSORTIUM(Acessado em 2014). Os autores ressaltam que a presença de um soft erro em uma transmissão pode acarretar em perdas de muitos kylobytes de dados, bem como, a falha em um link de comunicação. é discutido também que poucos trabalhos têm sido feitos com o propósito de prover uma arquitetura confiável de transmissão serial de alta-velocidade. Muitos protocolos existem com a finalidade de manter uma comunicação confiável em face a proteção contra ruídos, mas poucos são desenvolvidos levando-se em consideração alguma falha no mecanismo de comunicação. é neste cenário que o autor propõe uma arquitetura confiável para este tipo de problema.

A arquitetura desenvolvida é composta por um canal duplo de comunicação baseado em um protocolo chamado Aurora Protocol AURORA PROTOCOL SPECIFICATION(2010). Ele foi implementado em um módulo que é responsável pela comunicação de dados utilizando os MGTs disponíveis no FPGA e sua principal vantagem é a otimização da quantidade de lógica utilizada. Esse módulo também suporta uma transmissão realizada por meio de pacotes e a estrutura utilizada é a seguinte:

Figura 2.8: Estrutura do pacote

A estrutura é composta por campos que denotam suas funções. O campo Packet indica o número do pacote; o campo User Data, o dado a ser transmitido e o CRC, um campo com a codificação CRC que valida o pacote.

A arquitetura desenvolvida é exibida na figura 2.9 por meio de um diagrama de blocos. Como pode ser visto, a arquitetura é idêntica em ambos FPGAs. O dado a ser transmitido (data_in) é encaminhado para o módulo CRC, Frame Generator que é responsável por gerar a codificação CRC e montar o pacote a ser transmitido. Logo em seguida, o pacote é enviado para os dois módulos Aurora para serem transmitidos pelo barramento. A recepção acontece também por esse módulo, que logo ao receber o pacote, o encaminha para o módulo CRC Check. é importante notar que são dois módulos de checagem de erros, um para cada módulo Aurora. O CRC Check gera o checksum correspondente do pacote e o verifica para validação do mesmo. Após a validação, o dado é encaminhado para o módulo Align & Vote. Nesse momento, a comparação entre os dados é realizada. Os dados são alinhados e verificados para identificação de corretude entre eles. Se houver sucesso na verificação o dado é disponibilizado para o usuário por meio do multiplexador data out. Existe também o caso de algum pacote ser recebido indevidamente, ou uma recepção inesperada acontecer. Nesse caso, se houver um pacote recebido que estiver sendo esperado e se validado em algum dos dois canais, ele será o disponibilizado para o usuário. Caso alguma falha aconteça no recebimento, ela irá ser reportada por meio do sinal erros.

(31)

30 2.1. CONSIDERAÇÕES FINAIS

Figura 2.9: Diagrama da arquitetura de comunicação

2.1 Considerações Finais

Este capítulo abordou os trabalhos relacionados que apoiaram o desenvolvimento dessa dissertação. Inicialmente três artigos relacionados diretamente com implementações de barra-mentos de comunicação são explanados, bem como os resultados de cada uma em termos de desempenho nas transmissões. Os três que sucedem são relacionados com métodos de detec-ção/correção de erros em transferências de dados em sistemas digitais. A tabela 2.2 da página a seguir resume as principais características dos barramentos de comunicação apresentados nos três primeiros artigos desse capítulo. Como visto, altas taxas de transferência entre os dispositivos estão diretamente ligadas ao uso de interfaces especiais LVDS. A conexão ponto-a-ponto (SE) entre dispositivos Spartan-6 apresentada no trabalho ROMOTH et al.(2012) mostrou-se com taxas de transferência inferiores as demais. Um dos principais motivos para que isso ocorresse foi justamente o não uso de interfaces de transmissão apropriadas. Outra característica relevante a ser destacada é que os barramentos citados não possuem um modo de recuperação de dados em caso de falhas. No caso da transmissão ponto-a-ponto citada acima, os autores destacaram que não foi possível aumentar a frequência de operação devido a instabilidades na conexão. Desta forma, a implementação de um sistema de recuperação de dados em caso de falhas na transmissão poderia se tornar uma possível solução para este tipo de problema. Diante dessas características, o presente trabalho de dissertaçao se preoucupou em desenvolver uma solução capaz de manter o barramento de comunicação estável nessas situações.

(32)

2.1 . C O N SI D E R A Ç Õ E S FI N A IS

Trabalho Dispositivos Mbit/s (1 Via) Tipo Interface Frequência Detecção de erros

ROMOTH et al.(2012) Spartan-3 320 DDR (LVDS) 160 Mhz Não

Spartan-6 320 DDR (LVDS) 160 Mhz Não

Spartan-6 to Virtex-4 140 SDR (SE) 140 Mhz Não

Virtex-5 1500 DDR (LVDS) 750 Mhz Não

GODBOLE; BATTH; RAMASWAMY(2010) Virtex-4 625 DDR (LVDS) 312.5 Mhz Não

(33)

32 32 32

3

Fundamentação Teórica

Este capítulo apresenta uma introdução sobre Hardware Reconfigurável e plataformas multi-FPGAs. Em seguida, apresenta os conceitos básicos sobre a tecnologia LVDS e descreve algumas técnicas para correções de erros baseadas em verificação CRC, método escolhido para manter a estabilidade no canal de comunicação desenvolvido nessa dissertação. Por fim, uma discursão sobre as características principais de barramentos é realizada.

3.1 Hardware Reconfigurável

As duas abordagens tradicionais de arquiteturas de computadores são referentes aos processadores de propósito geral e aos dispositivos de propósito específico. Os processadores de propósito geral contêm instruções que tratam o processamento de vários tipos de aplicações, tendo inerente a si uma alta flexibilidade, uma vez que são capazes de executar qualquer tipo de software. Esses processadores permitem que programas sejam desenvolvidos de forma simplificada por meio de uma série de ferramentas disponíveis. Qualquer modificação na estrutura do programa pode ser feita facilmente bastando incorporar a alteração no código e recompilar a aplicação. Essas características somadas são as que fazem os processadores de propósitos geral atraentes do ponto de vista da flexibilidade. Entretanto, quando passa-se a considerar apenas uma aplicação de uso específico, essa tecnologia não é capaz de atingir os melhores resultados em termos de performance. Isso se dájustamente pelo fato de ser uma tecnologia genérica com um conjunto de instruções fixo.

Quando uma aplicação passa a exigir mais da capacidade que um processador de propó-sito geral pode oferecer, é interessante recorrer a tecnologias alternativas com a finalidade de encontrar um meio ideal para a execução com mais desempenho. Nesse contexto, a computação paralela é uma alternativa que pode solucionar este problema. A aplicação principal agora passa a ser decomposta em problemas menores que serão processados pelos diversos componentes da arquitetura podendo atingir ótimos resultados. Entretanto, a aplicação ainda assim precisa ter uma estrutura compatível com esse modelo de computação. Outro fator a ser considerado é que o uso de diversos componentes de processamento podem acarretar numa sobrecarga (overhead)

(34)

de comunicação no sistema.

Uma outra tecnologia mais adequada para processamento de aplicações específicas com desempenho é a de dispositivos de propósito específico. Estes dispositivos, mais conhecidos como ASICs, são utilizados para realizar operações específicas de forma otimizada em um sistema digital. Geralmente realizam poucas computações e são produzidos em larga escala. Pode-ser projetar uma arquitetura de hardware dedicada que otimize a execução de uma determinada aplicação e logo em seguida, fabricar um ASIC que implemente esse hardware. é importante ressaltar que o custo de projeto e de fabricação envolvidos em um projeto de um ASIC é muito elevado. Somente justifica-se a adoção dessa tecnologia como solução, caso a quantidade de dispositivos a serem produzidos seja elevada. Quando o número de CIs a serem fabricados é grande, o custo inicial é amortizado visto que grande parcela do custo se dána fase de confecção das máscaras do dispositivo.

Como visto, os dispositivos ASICs fornecem recursos otimizados para a executação de tarefas específicas possibilitando um alto desempenho, porém, têm seu custo de fabricação muito elevado: um conjunto de máscaras para um ASIC de 90 nm custa cerca de 1 milhão de dólares

GARCIA et al.(2006). Além de que, funcionam apenas para uma aplicação em específico, ao contrário dos processadores de propósito geral. Os processadores de propósito geral, apesar de sua ampla utilização e flexibilidade, em comparação com os dispositivos ASIC, perdem em desempenho.

Outra categoria que merece destaque ainda nesse contexto é a de processadores de aplicações específicas, como por exemplo os ASIPs e DSPs Essa categoria de dispositivos detêm de instruções ou características para a execução otimizada de um conjunto de aplicações. Eles permitem dessa forma obter-se uma maior flexibilidade em relacao ao emprego de seu uso com um melhor desempenho quando comparado com os processadores de propósito geral. Portanto, é uma categoria que é intermediária entre os processadores de propósito geral e processadores de propósito específico em termos de flexibilidade de desempenho. Os DSPs por exemplo, contêm uma série de instruções otimizadas para execução de operações voltadas para processamento de sinais, principalmente para operações envolvendo ponto flutuante. O diagrama apresentado na figura 3.1 exibe essas categorias de processadores relacionando-os com as métricas relativas a flexibilidade e desempenho.

Com a proposta de permitir a flexibilidade de um processador de propósito geral e um alto desempenho que um dispositivo ASIC proporciona, surgem as arquiteturas de Hardware Reconfigurável.

Para DeHon ANDRE DEHON(2007), o elemento chave da computação reconfigurável é a sua capacidade inovadora para realizar cálculos em hardware para aumentar o desempe-nho, mantendo a flexibilidade de uma solução em software. Ela também é conhecida como computação configurável ou computação costumizável, uma vez que muitas das técnicas de desenvolvimento são vistas como personalizações computacionais para aplicações específicas

(35)

34 3.1. HARDWARE RECONFIGURÁVEL

Figura 3.1: Diagrama flexibilidade x desempenho de diversas tecnologias

O Hardware Reconfigurável torna possível a criação de arquiteturas de hardware dedi-cadas a diferentes aplicações de acordo com a necessidade do usuário. Esta possibilidade de customização permite que a computação reconfigurável seja promissora para aplicações que necessitem de alto desempenho, tais como arquiteturas paralelas, aplicações de processamento de vídeos/imagens, pesquisas e ordenação de dados, aplicações de tempo real, criptografia e comunicação wireless, por exemplo. A demanda computacional de aplicacões atuais e a baixa eficiência dos paradigmas existentes na execução dessas aplicações são alguns dos fatores que tornam a computação reconfigurável objeto de estudo em empresas e universidades.

Dentre as categorias de hardware reconfigurável, destacam-se os FPGAs, que são circui-tos integrados dotados de portas lógicas configuráveis. O trabalho apresentado nessa dissertação envolve a tecnologia FPGA para o desenvolvimento do canal de comunicação inter-FPGA.

3.1.1 FPGAs

A maioria dos circuitos integrados (ASICs) existentes são compostos por estruturas lógicas fixas. Uma vez fabricados, terão suas funcionalidades atribuídas de forma definitiva, impossibilitando a alteração do algoritmo implementado. Caso sejam identificados erros no algoritmo após a fabricação, um novo processo de criação de máscaras e uma nova fabricação do dispositivo seria necessária, aumentando assim o custo do projeto final.

Um FPGA é um circuito integrado formado por um conjunto blocos lógicos programá-veis (configuráprogramá-veis) conectados através de interconexões também configuráprogramá-veis MAXFIELD

(2004). Após sua fabricação, estes dispositivos podem ser configurados mais de uma vez. Aqui, diferentemente dos ASIC, percebemos que um FPGA pode ser programado de forma a adaptar-se a uma aplicação através da configuração de suas portas lógicas. Isto é feito mediante uma

(36)

linguagem HDL.

Os FPGAs tornaram-se uma opção atraente para o projeto de sistemas digitais, uma vez que possuem alta flexibilidade e proporcionam aumento de performance na execução de tarefas devido a possibilidade do desenvolvimento de arquiteturas extremamente paralelas. Além disso, prometem um baixo consumo de energia e grande aplicabilidade em soluções que necessitem de alto desempenho. Outro aspecto que merece destaque, é o de que pode-se ter circuitos integrados executando algoritmos ou aplicações com um custo muito reduzido se comparado aos dispositivos ASICs, porém, em menor escala.

Atualmente FPGAs vêm sendo empregados na solução de problemas em diversas áreas, entre elas, podemos destacar:

? Aplicações de alto desempenho (HPC) ? Medicina

? Automobilística ? Segurança

? Processamento Imagem/Vídeo ? Comunicação Wireless

? Espaço Aéreo e Defesa

Entre os fabricantes de FPGA que existem, dois merecem destaque por serem os maiores do mercado, a Xilinx XILINX, INC.(Acessado em 2014) e a ALTERA ALTERA CORPORA-TION(Acessado em 2014). Além de fabricantes, as duas trabalham no segmento de soluções baseadas em dispositivos lógicos programáveis. Essencialmente, um FPGA pode ser descrito como um arranjo condensado de blocos de portas lógicas, flip-flops e sinais de interface, que também são conhecidos como hierarquia de interconexões configuráveis. A arquitetura básica de um FPGA pode ser vista na figura 3.2.

Um FPGA possui em sua arquitetura 3 componentes básicos:

? Blocos de entrada e saída (I/O Blocks) ? Blocos Lógicos (Logic Blocks)

? Matriz de Interconexões Programáveis

Em um FPGA, as funções lógicas são definidas dentro dos blocos lógicos. Quando os blocos lógicos são relativamente simples, a arquitetura é denominada grão fino (fine-graned). Quando são maiores e mais complexos, a arquitetura é denominada grão grosso (coarse-graned). Os blocos de entrada e saída estão na borda da estrutura e proporcionam acesso individualmente

(37)

36 3.1. HARDWARE RECONFIGURÁVEL

Figura 3.2: Arquitetura de um FPGA

selecionável de entrada, saída ou bidirecional ao mundo externo. A matriz de interconexões programáveis provê as interconexões de blocos lógicos e as conexões de entrada e saída.

A fabricante Xilinx, chama os blocos lógicos de seus dispositivos FPGA de CLB, enquanto a ALTERA de LAB. A plataforma multi-FPGA utilizada nesse trabalho possui dispositivos da fabricante ALTERA.

Cada FPGA possui milhares de blocos lógicos. No caso dos FPGAs da fabricante Xilinx esses blocos lógicos são constituídos por slices, os quais possuem uma determinada quantia de células lógicas. Alguns FPGAs da Xilinx possuem dois slices por bloco lógico, outros, possuem quatro. Os FPGAs da fabricante ALTERA possuem os blocos lógicos formados por unidades chamadas ALM, os menores componentes lógicos da arquitetura. A figura 3.3 apresenta a arquitetura de uma ALM.

As ALMs são as menores unidades lógicas existentes em um FPGA. Basicamente são compostas por LUTs, registradores (Flip-Flops), somadores (adders) e multiplexadores. As LUTs funcionam como pequenas memórias RAM assumindo um determinado estado após serem programadas e geralmente possuem poucas entradas. As funções lógicas são implementadas a partir da programação das LUTs.

Como um FPGA é composto por milhares de células lógicas, podemos implementar desde circuitos básicos como somadores, multiplexadores ou registradores, até os mais complexos, como um processador com a arquitetura Von Neumann por exemplo, desde que, a quantidade de portas lógicas do FPGA possa suportar o circuito. Desta forma, os FPGAs podem ser utilizados para a implementação de praticamente qualquer sistema digital.

(38)

embarca-Figura 3.3: Arquitetura de uma ALM da fabricante Altera

dos dentro de si que facilitam o desenvolvimento de projetos e otimizam diversas operações, tais como:

? Gerenciamento de clock - Permite que o controle da fase frequência do relógio clock

seja realizado. é possível multiplicar, dividir ou mudar as fases de entrada.

? Blocos de memória - Permite que FIFOs e outros recursos que necessitem de memória

possam ser implementados com os blocos de memória embarcados no dispositivo.

? Blocos DSP - Em dispositivos mais avançados é comum encontrarmos somadores e

multiplicadores de 18 x 18 bits que otimizam operações de ponto fixo.

? Hard processors - Alguns FPGAs possuem processadores embutidos em sua

arquite-tura, é o caso do PowerPC que é disponibilizado em alguns dispositivos da fabricante Xilinx. Esses FPGAs são capazes de rodar sistemas operacionais embarcados com o uso desses processadores.

? Transceptores Gigabit - Possibilidade do uso de serializadores/deserializadores para

envio de dados em alta taxa de transmissão.

3.2 Sistemas Multi-FPGAs

Como visto anteriormente, o uso de componentes reconfiguráveis em sistemas de com-putação possibilita através de seu paralelismo intrínseco e customização de funções um aumento substancial de desempenho na execução de aplicações aritméticas. Estes dispositivos têm como uma de suas principais vantagens a flexibilidade de sua programação e reconfiguração, o que per-mite uma customização rápida de novos sistemas no mesmo hardware reduzindo custos e tempo

(39)

38 3.2. SISTEMAS MULTI-FPGAS de desenvolvimento para o usuário. Outra vantagem é que estes, diferentemente dos ASICs, conseguem combinar a flexibilidade de configuração da lógica digital com os benefícios de uma implementação em hardware. Além disso, é importante ressaltar que a eficiência energética de tais dispositivos é bem superior em alguns casos, quando comparado com outras arquiteturas como CPU e GPGPU.

Para simplificar a produção de projetos baseados em FPGAs, a indústria começou a fabricar plataformas que servem de suporte para o desenvolvimento de sistemas envolvendo esses dispositivos. Essas plataformas são de extrema importância no projeto de sistemas digitais envol-vendo hardware reconfigurável. Com elas é possível concentrar-se apenas no desenvolvimento a nível de implementação da arquitetura. Após o projeto concluído, o bistream gerado pode ser configurado no FPGA por meio de barramentos de comunicação disponíveis na plataforma como por exemplo, o JTAG ou PCIex. O diagrama de uma plataforma genérica com um FPGA e seus periféricos é apresentada na figura 3.4.

Figura 3.4: Diagrama de uma plataforma genérica com um FPGA

Além de facilitar o processo de configuração do FPGA essas plataformas dispõem de uma série de recursos utilizáveis no projeto tais como: Memórias Flash ou SDRAM, conectores para cartão SD, suporte a placas de expansão, sockets de memória, conversores digital/analógico (DAC), pinos de entrada e saída dentre outros. Todos esses recursos geralmente são acessíveis pelo FPGA por meio de barramentos disponíveis na plataforma. Pode-se então desenvolver projetos de hardware considerando a utilização de tais recursos disponíveis. Outro benefício relevante, é que a grande variedade de plataformas existentes que atendem a finalidades diferentes, permite aos engenheiros e projetistas desenvolverem seus projetos e testá-los nessas plataformas antes de partirem para a fabricação do produto final.

Com o surgimento de aplicaçoes cada vez mais complexas, muitas vezes um dispositivo lógico não é suficiente para permitir a implementação completa do sistema digital. Faz-se

(40)

necessário nesse caso, que o sistema seja dividido em partições que serão alocadas em mais de um componente.

Diante dessa necessidade, logo tornou-se necessário o uso de mais de um dispositivo FPGA em sistemas de alto desempenho. Quanto mais dispositivos disponíveis, mais lógica pode ser usada e consequentemente sistemas mais robustos podem ser construídos. De igual modo, aplicações que necessitam de lógica superior à disponível em um único componente podem ser implementadas. Tipicamente, nesses casos, todos os dispositivos do sistema irão atuar como um só.

Em face a essa demanda, a indústria começou a disponibilizar no mercado plataformas de computação reconfigurável com mais de um dispositivo FPGA acoplado. Essas plataformas podem ser usadas indepedententes de um PC host, ou acoplado a ele. Nesse último caso, que é o mais comum, a plataforma é conectada ao PC por meio de uma interface PCIex. é possível dessa forma ter um sistema híbrido baseado em múltiplos FPGAs e um PC host. Essa característica também torna o sistema escalável, existindo a possibilidade da montagem de um cluster de FPGAs com a finalidade de aumentar ainda mais o poder computacional de todo o sistema. Atualmente jáexistem sistemas com essa configuração, tal como o supercomputador reconfigurável Novo-G, desenvolvido na Universidade da Califórnia pelo grupo de pesquisa CHREC NSF CENTER FOR HIGH-PERFORMANCE RECONFIGURABLE COMPUTING

(Acessado em 2014).

Figura 3.5: Supercomputador Reconfigurável Novo-G

O Novo-G (figura 3.5) é composto por 384 FPGAs divididos entre os clusters da arqui-tetura. Cada cluster é formado por um processador quad-core Nehalem Xeon e possui duas plataformas multi-FPGAs, cada uma com quatro dispositivos. Além disso, possui três terabytes de memória RAM acoplados as plataformas. As plataformas multi-FPGAs utilizadas são da fabricante GiDEL, totalizando 48 plataformas PROCStarIV e 48 plataformas PROCStarV GI-DEL LTD.(Acessado em 2014). Atualmente, esse computador executa uma série de aplicações científicas, principalmente na área de bio-informática e processamento de imagens. Outro fator a

Referências

Documentos relacionados

Discussion The present results show that, like other conditions that change brain excitability, early environmental heat exposure also enhanced CSD propagation in adult rats.. The

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

- Remover as pastilhas usadas e retornar todo o parafuso de regulagem em seguida montar uma pastilha nova do lado da roda, empurrando com a mão a pinça no sentido do cilindro de

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Desta maneira, observando a figura 2A e 2C para os genótipos 6 e 8, nota-se que os valores de captura da energia luminosa (TRo/RC) são maiores que o de absorção (ABS/RC) e

Nos tempos atuais, ao nos referirmos à profissão docente, ao ser professor, o que pensamos Uma profissão indesejada por muitos, social e economicamente desvalorizada Podemos dizer que

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Feitiço do Segredo: deposita um segredo numa pessoa de confiança, essa pessoa fica deposita um segredo numa pessoa de confiança, essa pessoa fica sendo o "Fiel do sendo o