Universidade Estadual de Campinas
Faculdade de Engenharia El´etrica e de Computa¸c˜ao Departamento de Sistemas e Controle de Energia
Laborat´orio de Sistemas Modulares Rob´oticos
Eberval Oliveira Castro
Multiprocessador em Eletrˆ
onica Reconfigur´
avel
para Aplica¸c˜
oes Rob´
oticas
Campinas
2007
Eberval Oliveira Castro
Multiprocessador em Eletrˆ
onica Reconfigur´
avel
para Aplica¸c˜
oes Rob´
oticas
Disserta¸c˜ao apresentada `a Comiss˜ao de P´os-gradua¸c˜ao da Faculdade de Engenharia El´etrica e de Computa¸c˜ao da Universidade Estadual de Campinas como parte dos requisitos para obten-¸c˜ao do t´ıtulo de Mestre em Engenharia El´etrica.
´
Area de concentra¸c˜ao: Automa¸c˜ao.
Orientador: Prof. Dr. Marconi Kolm Madrid
Campinas
2007
ii
FICHA CATALOGR ´AFICA ELABORADA PELA
BIBLIOTECA DA ´AREA DE ENGENHARIA E ARQUITETURA – BAE – UNICAMP
Castro, Eberval Oliveira
C279m Multiprocessador em eletrˆonica reconfigur´avel para aplica¸c˜oes rob´oticas / Eberval Oliveira Castro. –Campinas, SP: [s.n.], 2007.
Orientador: Marconi Kolm Madrid
Disserta¸c˜ao (Mestrado) – Universidade Estadual de Campinas, Faculdade de Engenharia El´etrica e de Computa¸c˜ao.
1. Rob´otica. 2. Processamento paralelo (Computadores). 3. Multiprocessadores. 4. Controle em tempo real. I. Madrid, Marconi Kolm. II. Universidade Estadual de Campinas. Faculdade de Engenharia El´etrica e de Computa¸c˜ao. III. T´ıtulo.
T´ıtulo em Inglˆes: Multiprocessor in reconfigurable electronics to robotical applications
Palavras-chave em Inglˆes: Robotics, Parallel processing, FPGA, Embedded multiprocessor, Real-time systems
´
Area de concentra¸c˜ao: Automa¸c˜ao
Titula¸c˜ao: Mestre em Engenharia El´etrica
Banca examinadora: Areolino de Almeida Neto, Jos´e Raimundo de Oliveira e Peter J¨urgen Tatsch
Data da defesa: 11/12/2007
v
Agradecimentos
A Deus, pela oportunidade de viver `
A minha fam´ılia, pelo incentivo e apoio
Ao meu orientador, Prof. Marconi K. Madrid, sou grato pela orienta¸c˜ao, paciˆencia e compa-nheirismo
Aos meus amigos ´Elio Almeida e sua fam´ılia, e Michel Zamboni e sua esposa Jane Madureira pelo ombro amigo nas horas dif´ıceis
Aos colegas de laborat´orio pelas enriquecedoras sugest˜oes
Aos companheiros de rep´ublica pela inesquec´ıvel amizade e incentivo A toda comunidade ADBar˜ao1 pelo suporte espiritual
A todos aqueles n˜ao citados anteriormente que, de alguma forma, contribu´ıram positivamente com este trabalho
Ao CNPq, pelo apoio financeiro.
1
ix
“Cada momento, cada segundo ´e de um valor infinito, pois ele ´e o representante de uma eterni-dade inteira”.
Resumo
A solu¸c˜ao de modelos dinˆamicos de robˆos em tempo real ´e um dos principais desafios da rob´otica. Este trabalho prop˜oe um multiprocessador de quatro n´ucleos fortemente acoplados, o SMM-4 (Sistema Multiprocessado Monol´ıtico), consistindo de uma arquitetura de proces-samento paralelo monol´ıtica sintetizada em FPGA para aplica¸c˜oes em controle de sistemas rob´oticos. Uma an´alise quantitativa e qualitativa ´e realizada em contraste a sistemas unipro-cessadores, evidenciando os ganhos obtidos atrav´es desta abordagem em FPGA. O SMM-4 foi desenvolvido no Laborat´orio de Sistemas Modulares Rob´oticos (LSMR/Unicamp) como uma das alternativas para o c´alculo das equa¸c˜oes dos modelos de robˆos em tempo real.
Palavras-chave: Rob´otica, Processamento Paralelo, FPGA, Multiprocessador Embu-tido, Sistemas de Tempo Real.
Abstract
The solution of robots’ dynamic models in real-time is one of major challenges of the robotics. This work presents a strongly coupled quad-core multiprocessor – the MMS-4 (Mo-nolithic Multiprocessor System) – consisting of a mo(Mo-nolithical parallel processing architecture synthesized on FPGA for applications on robotic control systems. A quantitative and quali-tative analysis is performed in contrast with uniprocessor systems for the purpose of evince the benefits obtained choosing this approach in FPGA. The MMS-4 was developed at Robotic Modular Systems Laboratory (LSMR/Unicamp) as an alternative to calculate the equations systems of robots’ models on real-time.
Keywords: Robotics, Parallel Processing, FPGA, Embedded Multiprocessor, Real-Time Systems.
xiii
Lista de Figuras
1.1 Desenvolvimento hist´orico das tecnologias envolvidas na rob´otica . . . 3
1.2 ASIMO na Consumer Electronics Show (CES) em Las Vegas . . . 4
1.3 N´umeros da ind´ustria estado-unidense de robˆos . . . 5
2.1 Tempos de ciclo de projeto . . . 10
2.2 PROM: arquitetura . . . 11
2.3 PLA: arquitetura . . . 12
2.4 PAL: arquitetura . . . 14
2.5 Arquitetura de um dispositivo GAL22v10 . . . 15
2.6 Macroc´elula de um dispositivo GAL22v10 . . . 16
2.7 CPLD: arquitetura . . . 17
2.8 FPGA: arquitetura t´ıpica . . . 20
3.1 Evolu¸c˜ao da computa¸c˜ao de alto desempenho . . . 30
3.2 Taxonomia de Duncan . . . 34
3.3 Topologias de rede de interconex˜ao . . . 37
3.4 Hipercubos . . . 38
4.1 Placa de desenvolvimento Altera DE2 . . . 50
4.2 Esquem´atico do SMM-4 no Quartus II . . . 52
4.3 SOPC Builder com a implementa¸c˜ao do SMM-4 . . . 53
4.4 Diagrama do SMM-4 . . . 54
4.5 Configura¸c˜ao dos tempos da SDRAM . . . 57
4.6 Relat´orio de processamento do Timing Analyser . . . 58
4.8 Fra¸c˜oes serial e paraleliz´avel do c´odigo da soma paralela de matrizes . . . 64
4.9 Tempos de execu¸c˜ao do algoritmo de soma de matrizes de diversos tamanhos e por diferentes n´umeros de processadores . . . 66
4.10 Tempos de execu¸c˜ao do algoritmo de produto de matrizes de diversos tamanhos e por diferentes n´umeros de processadores . . . 69
4.11 Aproxima¸c˜ao da fun¸c˜ao arco-tangente por raz˜ao de polinˆomios . . . 72
4.12 Tempos de execu¸c˜ao do algoritmo do arco-tangente em diferentes n´umeros de processadores . . . 74
A.1 Diagrama de blocos do Cyclone II EP2C20 . . . 94
A.2 Estrutura interna de um elemento l´ogico do Cyclone II . . . 95
A.3 Bloco de arranjo l´ogico . . . 97
A.4 Rede global de clock . . . 99
A.5 Bloco de controle de clock . . . 100
A.6 Malha de fase s´ıncrona . . . 101
A.7 Habilita¸c˜ao de clock de endere¸co . . . 104
A.8 Modos de mem´oria . . . 106
xv
Lista de Tabelas
2.1 Comparativo entre FPGAs de diferentes fabricantes . . . 24
3.1 Parˆametros topol´ogicos . . . 39
4.1 Tempos de FPGA e SDRAM . . . 58
4.2 Parˆametros passados ao compilador cruzado ELF GCC para Nios . . . 62
4.3 Fatores de speedup relativos observados para soma paralela de matrizes . . . . 67
4.4 Fatores de speedup relativos observados para produto paralelo de matrizes . . . 70
4.5 Coeficientes dos polinˆomios da aproxima¸c˜ao por express˜ao racional do arco-tangente . . . 72
4.6 . . . 75
A.1 Recursos dos elementos da fam´ılia Cyclone II . . . 93
A.2 Recursos de clock da fam´ılia Cyclone II . . . 99
A.3 Recursos de mem´oria na Fam´ılia Cyclone II . . . 103
Lista de Siglas
Sigla Descri¸c˜ao
A/D - Anal´ogico para Digital AMD - Advanced Micro Device
ANSI - American National Standards Institute API - Application Programming Interface ASIC - Application Specific Integrated Circuit ASIMO - Advanced Step in Innovative Mobility BFM - Bus Functional Model
BGA - Ball Grid Array
CAB - Configurable Analog Block CAM - Content-Addressable Memory CAS - Column Address Strobe
CCN - Completely Connected Network CFI - Commom Flash Interface CI - Circuito Integrado
CISC - Complex Instruction Set Computing CLB - Configurable Logic Block
CONLAN - CONsensus LANguage CRC - Cyclical Redundancy Check D/A - Digital para Anal´ogico DDR - Double Data Rate DDR2 - Double Data Rate 2
DIS - Draft International Standard DLL - Delay-Loked Loop
DPRAM - Dual-Port RAM DRAM - Dynamic RAM
DSP - Digital Signal Processor ECC - Error Correction Code
EDA - Electronic Design Automation
EEPROM - Electricaly Erasable and Programmable ROM ELF - Executable and Linking Format
FFT - Fast Fourier Transform (continua...)
xviii LISTA DE SIGLAS Sigla Descri¸c˜ao
FIFO - First-In First-Out
FIR - Finite Impulse Response
FPAA - Field Programmable Analog Array FPD - Field Programmable Device
FPGA - Field Programmable Gate Array FPLA - Field Programmable Logic Array GAL - Generic Array Logic
GCC - GNU C Compiler GCN - Global Clock Network GNU - GNU is Not Unix
HAL - Hardware Abstraction Layer HCPLD - High Capacity PLD
HDL - Hardware Description Language HSTL - High Speed Transmitter Logic I/O - Input/Output
IDE - Integrated Development Environment IEC - International Electrotechnical Commission IEEE - Institute of Electrical and Electronics Engineers IOE - Input/Output Element
IP - Intellectual Property IRQ - Interrupt Request
JTAG - Joint Test Action Group LAB - Logic Array Block LE - Logic Element
LED - Light-Emitting Diode LIFO - Last-In First-Out LM - Logic Module
LPM - Library of Parameterized Modules
LSMR - Laborat´orio de Sistemas Modulares Rob´oticos LUT - Look-Up Table
LVCMOS - Low-Voltage Complementary MOS LVDS - Low-Voltage Differential Signaling
LVPECL - Low-Voltage Positive Emitter Coupled Logic MAC - Media Access Control
MDAC - Multiplying type Digital-to-Analog Converter MIF - Memory Initialization File
MMI - Monolithic Memories Inc. MOS - Metal-Oxide-Semiconductor MPGA - Mask Programmable Gate Array MPLA - Mask Programmable Logic Array NRE - Non-Recurring Engineering OLMC - Output Logic MacroCell OTP - One-Time Programmable
Sigla Descri¸c˜ao
PC - Personal Computer
PCA - Programmable Capacitor Array PCI - Peripheral Component Interconnect PCI-X - PCI Extended
PFD - Phase-Frequency Detector PLA - Programmable Logic Array PLD - Programmable Logic Device PLL - Phase-Locked Loop
PROM - Programmable ROM PWM - Pulse Width Modulation QDRII - Quad Data Rate II RAM - Random Access Memory RIA - Robotic Industries Association RISC - Reduced Instruction Set Computing ROM - Read-Only Memory
RSDS - Reduced Swing Differential Signaling RTL - Register Transfer Level
SD - SecureDigital
SDRAM - Synchronous DRAM
SMM - Sistema Multiprocessado Monol´ıtico SO - Sistema Operacional
SoC - System-on-Chip
SOPC - System-On-a-Programmable-Chip SPI - Serial Peripheral Interface
SRAM - Static RAM
SSTL - Stub Series Terminated Logic
TSMC - Taiwan Semiconductor Manufacturing Company UART - (Universal Asynchronous Receiver/Transmitter) USB - Universal Serial Bus
VCO - Voltage-Controlled Oscillator
VHDL - VHSIC Hardware Description Language VHSIC - Very High Speed Integrated Circuit VLSI - Very Large Scale Integration
xxi
Lista de S´ımbolos
S´ımbolo Descri¸c˜ao
fIN - Freq¨uˆencia de entrada da malha de fase s´ıncrona
fREF - Freq¨uˆencia de referˆencia da malha de fase s´ıncrona
fV CO - Freq¨uˆencia de sa´ıda do oscilador controlado por tens˜ao
ck - Fator de divis˜ao do k-´ezimo contador p´os-escalador
fck - Freq¨uˆencia de sa´ıda do k-´ezimo contador p´os-escalador
t0 - Tempo inicial do contador de sa´ıda da malha de fase s´ıncrona
W - Tamanho do problema computacional
C(p) - Custo computacional em fun¸c˜ao do n´umero de processadores O(h(x)) - Cota superior assint´otica
g(v) - Grau de um n´o
∆ - Grau m´aximo da rede
σ(v1, v2) - Distˆancia entre os n´os v1 e v2 da rede
D - Diˆametro de rede
N - N´umero total de n´os da rede L - Custo topol´ogico
b - Fator de ramifica¸c˜ao do modelo topol´ogico em ´arvore p - N´umero de processadores de um sistema paralelo
T (p) - Tempo de execu¸c˜ao total da tarefa usando p processadores
Tm(p) - Tempo de execu¸c˜ao da fra¸c˜ao paralela da tarefa usando p processadores
Ts - Tempo de execu¸c˜ao da fra¸c˜ao serial da tarefa
γ - Fra¸c˜ao serial (n˜ao-paraleliz´avel) da tarefa S(p) - Fator de speedup
Tc - Tempo gasto em comunica¸c˜ao durante a execu¸c˜ao da tarefa
γi - i-´ezima fra¸c˜ao (paraleliz´avel ou n˜ao) da tarefa
si - Fator de speedup associado `a i-´ezima fra¸c˜ao da tarefa
SS(p) - Fator de scaled speedup em fun¸c˜ao do n´umero de processadores γe - Fra¸c˜ao serial da tarefa determinada experimentalmente
φ - Fator de multiprocessamento (MPF) ξ(p) - Eficiˆencia
R(p) - Redundˆancia (continua...)
S´ımbolo Descri¸c˜ao U(p) - Utiliza¸c˜ao
xxiii
Sum´
ario
Lista de Ilustra¸c˜oes xiii
Lista de Tabelas xv
Lista de Siglas xvii
Lista de S´ımbolos xxi
1 Introdu¸c˜ao 1
1.1 Vis˜ao Geral . . . 1
1.2 Objetivos . . . 6
1.3 Metodologia . . . 7
1.4 Estrutura do Trabalho . . . 7
2 Eletrˆonica Reconfigur´avel 9 2.1 Arranjo Anal´ogico Program´avel em Campo . . . 10
2.2 Dispositivo L´ogico Program´avel Simples . . . 11
2.2.1 A Mem´oria PROM . . . 11
2.2.2 Tecnologia PLA . . . 12
2.2.3 Tecnologia PAL . . . 13
2.2.4 Tecnologia GAL . . . 14
2.4 Arranjo de Portas Program´avel em Campo . . . 19
2.4.1 Surgimento do FPGA . . . 19
2.4.2 Arquitetura do FPGA . . . 20
2.4.3 Classifica¸c˜ao dos FPGAs . . . 21
2.4.3.1 Tecnologia de Programa¸c˜ao . . . 21 SRAM . . . 21 Antifus´ıvel . . . 21 Porta Flutuante . . . 22 2.4.3.2 Possibilidades de Configura¸c˜ao . . . 22 Program´aveis (OTPs) . . . 22 Reprogram´aveis . . . 23 2.4.3.3 Granularidade . . . 23 Granularidade Grossa . . . 23 Granularidade M´edia . . . 25 Granularidade Fina . . . 25
2.5 Linguagem de Descri¸c˜ao de Hardware . . . 25
2.5.1 N´ıveis de Abstra¸c˜ao . . . 25
2.5.1.1 N´ıvel de Portas . . . 26
2.5.1.2 N´ıvel de Transferˆencia de Registrador (RTL) . . . 26
2.5.1.3 N´ıvel Comportamental . . . 26
2.5.1.4 Modelo Funcional de Barramento (BFM) . . . 26
2.5.2 Desenvolvimento Hist´orico do VHDL . . . 27
3 Processamento Paralelo 29 3.1 Conceitos e Defini¸c˜oes . . . 30
3.2 An´alise Qualitativa: Classifica¸c˜oes . . . 31
SUM ´ARIO xxv
3.2.2 Taxonomia de Duncan . . . 32
3.2.3 Parˆametros Topol´ogicos . . . 35
Grau de um N´o . . . 35
Grau M´aximo de Rede . . . 35
Distˆancia . . . 35 Diˆametro de Rede . . . 35 Custo Topol´ogico . . . 35 Simetria . . . 35 Homogeneidade . . . 35 Regularidade . . . 35
3.2.4 Taxonomia de Redes de Interconex˜ao . . . 36
3.2.4.1 Topologias Est´aticas . . . 36 Troca Total . . . 36 Arranjo Linear . . . 36 Anel . . . 36 Estrela . . . 36 Arranjo Bidimensional . . . 37 ´ Arvore . . . 37 Hipercubo . . . 38 3.2.4.2 Topologias Dinˆamicas . . . 39 Barramento . . . 39 Comutador (Switch) . . . 39
3.3 An´alise Quantitativa: M´etricas . . . 39
3.3.1 Modelos Computacionais . . . 40
3.3.1.1 Modelo de Igual Dura¸c˜ao . . . 40
3.3.2 Fator de Speedup . . . 41
Fator de Speedup Relativo . . . 42
Fator de Speedup Real . . . 42
Fator de Speedup Absoluto . . . 42
3.3.3 M´etrica de Carga Fixa: Lei de Amdahl . . . 42
3.3.3.1 Lei de Amdhal Generalizada . . . 43
3.3.4 M´etrica de Tempo Fixo: Lei de Gustafson-Barsis . . . 43
3.3.5 M´etrica de Karp-Flatt . . . 44 3.3.6 Fator de Multiprocessamento (MPF) . . . 44 3.3.7 Eficiˆencia . . . 45 3.3.8 Redundˆancia . . . 45 3.3.9 Utiliza¸c˜ao . . . 46 3.3.10 Qualidade do Paralelismo . . . 46 3.3.11 M´etricas de Comunica¸c˜ao . . . 46
4 Descri¸c˜ao e An´alise do Projeto 49 4.1 Ambiente de Desenvolvimento . . . 50
4.1.1 Placa Altera™ DE2 . . . 50
4.2 Ferramentas de Software . . . 51
4.3 Arquitetura . . . 52
4.3.1 Unidades de Processamento . . . 56
4.3.2 Mem´oria . . . 57
4.3.3 Espa¸co de Endere¸camento . . . 60
4.4 Coordena¸c˜ao e Compartilhamento de Recursos . . . 61
4.4.1 Mutex . . . 61
4.4.2 Mailbox . . . 61
SUM ´ARIO xxvii
4.5.1 Opera¸c˜oes com Matrizes . . . 64
4.5.1.1 Soma de Matrizes . . . 64
4.5.1.2 Produto de Matrizes . . . 68
4.5.2 C´alculo do Arco-Tangente . . . 70
5 Resultados e Conclus˜oes 77 5.1 Resumo das Contribui¸c˜oes . . . 80
5.2 Sugest˜oes para Trabalhos Futuros . . . 80
Referˆencias 82 A Tecnologia Cyclone II 91 A.1 Vis˜ao Geral . . . 91
A.2 Arquitetura . . . 94
A.2.1 Elemento L´ogico . . . 94
A.2.1.1 Modos de Opera¸c˜ao . . . 96
Modo Normal . . . 96
Modo Aritm´etico . . . 96
A.2.2 Blocos de Arranjo L´ogico (LAB) . . . 97
A.2.2.1 Interconex˜oes do LAB . . . 97
A.2.2.2 Sinais de Controle do LAB . . . 98
A.2.3 Rede Global de Clock (GCN) . . . 98
A.2.3.1 Pinos de Clock Dedicados (CLK) . . . 100
A.2.3.2 Pinos de Clock de Prop´osito Duplo (DPCLK e CDPCLK) . . . 100
A.2.3.3 Blocos de Controle de Clock . . . 101
A.2.4 Malha de Fase S´ıncrona (PLL) . . . 101
A.2.5 Blocos de Mem´oria M4K . . . 103
A.2.5.2 Habilita¸c˜ao de Clock de Endere¸co . . . 105 A.2.5.3 Modos de Mem´oria . . . 105 A.3 Blocos Multiplicadores . . . 107 A.4 Particularidades do EP2C35 . . . 108
B C´odigo dos Programas 109
B.1 Soma Paralela de Matrizes . . . 109 B.2 Produto Paralelo de Matrizes . . . 115 B.3 C´alculo do Arco-Tangente . . . 121 ´Indice por Autor . . . 127
1
Cap´ıtulo 1
Introdu¸c˜
ao
1.1
Vis˜
ao Geral
Os grandes desafios no desenvolvimento de aplica¸c˜oes rob´oticas est˜ao nas limita¸c˜oes dos recur-sos computacionais (algoritmos e arquiteturas), recurrecur-sos de comunica¸c˜ao e sensores. Por ser este um campo de pesquisa multidisciplinar, est˜ao envolvidas diversas ´areas de conhecimento como Inteligˆencia Artificial, Computa¸c˜ao Paralela, F´ısica, Mecatrˆonica, dentre outras (KO-NOLIGE et al., 2005; RITTER et al., 2003; YAMANE et al., 2005; HIRAI et al., 2005; FEATHERSTONE; ORIN, 2000).
Uma das principais dificuldades encontradas pelos pesquisadores e desenvolvedores de so-lu¸c˜oes rob´oticas ´e o c´alculo dos modelos cinem´aticos e dinˆamicos em tempo real. O controle de sistemas rob´oticos geralmente exige uma grande carga computacional na solu¸c˜ao de seus modelos (INABA et al., 2000), em especial, o modelo dinˆamico que muitas vezes inviabiliza abordagens que fa¸cam uso de processamento seq¨uencial (FEATHERSTONE; ORIN, 2000). Desafio ainda maior ´e o c´alculo da dinˆamica inversa que ´e muito custoso tanto do ponto de vista anal´ıtico quanto computacional para robˆos com muitos graus de liberdade (ZHAO et al., 2005). No intuito de contornar tais dificuldades, diversas t´ecnicas tˆem sido aplicadas como o uso de inteligˆencia artificial e outros m´etodos heur´ısticos, mas a maior parte s˜ao solu¸c˜oes particulares e localizadas. Pesquisas em torno de solu¸c˜oes mais gerais tem sido rea-lizadas no LSMR na Faculdade de Engenharia El´etrica da Unicamp (MADRID, 1994; NICO-LATO, 2007; NOGUEIRA, 2001; JUNGBECK, 2001; DIAS, 1991; SILVEIRA-FILHO, 2002; GUARDIA-FILHO, 2005; GUARDIA-FILHO; NICOLATO; MADRID, 2004), que aponta-vam para a necessidade de solu¸c˜oes mais gerais e serviram de incentivo para que este trabalho fosse realizado.
O avan¸co das tecnologias de integra¸c˜ao de circuitos – VLSI – traz sistemas digitais cada vez mais complexos e velozes, tornando fact´ıvel a execu¸c˜ao de tarefas que h´a alguns anos atr´as n˜ao sairiam da prancheta dos projetistas de controle de robˆos (HONDA, 2007; GOCKLEY; SIMMONS; FORLIZZI, 2006). Pesquisas tˆem sido desenvolvidas no sentido de transpor tais barreiras utilizando multiprocessamento em FPGA (Field Programmable Gate Array -Arranjo de Portas Program´avel em Campo) (SUBRAMAINAN, 2003; BENINI; MICHELI, 2002). No Brasil, grupos de pesquisa tˆem apresentado arquiteturas paralelas utilizando ele-trˆonica reconfigur´avel (SILVA et al., 2004; ARAG ˜AO; ALMEIDA-JR; MARQUES, 2004). Propomos um sistema paralelo no qual seja poss´ıvel a implementa¸c˜ao do controle digital multin´ıvel aplicado `a rob´otica, balanceando o custo e a viabilidade tecnol´ogica de forma a atender necessidades tanto da ind´ustria quanto dos ambientes de pesquisa. O tema central deste trabalho ´e o desenvolvimento e an´alise desta arquitetura paralela sobre uma plataforma FPGA.
A figura 1.1 apresenta o desenvolvimento hist´orico dos sistemas mecˆanicos, el´etricos e eletrˆonicos, tecnologias que convergiram para o surgimento dos sistemas mecatrˆonicos. ´E importante notar que o controle digital s´o se tornou vi´avel em meados da d´ecada de 70 do s´eculo XX, muito embora a computa¸c˜ao digital j´a fosse uma realidade desde o final da segunda guerra mundial, durante a qual esta tecnologia teve sua expans˜ao principal incentivada pelo governo estado-unidense. O custo de fabrica¸c˜ao e manuten¸c˜ao dos sistemas digitais caiu drasticamente desde ent˜ao, levando os computadores digitais de custosos artefatos de guerra ao patamar de eletrodom´esticos. A rob´otica se beneficiou da universaliza¸c˜ao da inform´atica ao passo que permitiu a solu¸c˜ao, economicamente vi´avel e em tempo real, do c´alculo num´erico de equa¸c˜oes dinˆamicas.
No in´ıcio deste s´eculo podemos identificar sistemas rob´oticos not´aveis pela sua comple-xidade no que diz respeito ao modelo e `a computa¸c˜ao realizada em tempo real. O Honda ASIMO (Advanced Step in Innovative Mobility) (HONDA, 2007) ´e um bom exemplo. Man-tido pela empresa japonesa, o projeto desenvolve um human´oide com 34 graus de liberdade, capacidade para andar e correr, desviar-se de obst´aculos, al´em de habilidade para reconhecer faces, postura, gestos, sons e ambiente. A figura 1.2 apresenta uma foto deste robˆo japonˆes. Em particular, a complexidade envolvida na mobilidade de robˆos pode ser muito grande. Dentre os principais requisitos necess´arios para robˆos m´oveis podemos citar:
• Autonomia de teleopera¸c˜ao e controle; • Execu¸c˜ao de tarefas n˜ao repetitivas;
1.1. VIS ˜AO GERAL 3
Figura 1.1: Desenvolvimento hist´orico das tecnologias envolvidas na rob´otica (BISHOP, 2002).
Figura 1.2: ASIMO na Consumer Electronics Show (CES) em Las Vegas (HONDA, 2007). • Particularidades nos mecanismos de locomo¸c˜ao;
• Opera¸c˜ao em ambientes hostis (altos gradientes de temperatura, exposi¸c˜ao `a radia¸c˜ao, v´acuo, ilumina¸c˜ao vari´avel etc);
• Tolerˆancia a falhas (inclusive falhas do sistema e erros) e necessidade de recupera¸c˜ao devido a eventos n˜ao planejados.
O Instituto de Rob´otica da Universidade de Carnegie Mellon nos Estados Unidos mant´em projetos em diversas ´areas da rob´otica. Destaca-se um que visa desenvolver um robˆo com per-sonalidade (GOCKLEY; SIMMONS; FORLIZZI, 2006), capaz de interagir socialmente com seres humanos. Desafios como este tamb´em exigem uma grande carga computacional, pois demandam desde o processamento e s´ıntese da fala, at´e interpreta¸c˜ao de express˜oes corporais (inclusive faciais), tarefa esta que excede o simples processamento de imagens. Embora n˜ao seja nova a id´eia de autˆomatos com tais capacidades, o desenvolvimento tecnol´ogico ainda n˜ao nos permitiu chegar aos patamares de personagens citadas na fic¸c˜ao cient´ıfica da metade do s´eculo XIX (MELVILLE, 1856).
Arquiteturas paralelas espec´ıficas para aplica¸c˜oes rob´oticas tˆem sido desenvolvidas como ´e o caso da arquitetura de Nigam (NIGAM; LEE, 1985) que prop˜oe um controlador distri-bu´ıdo para robˆo PUMA. Uma outra proposta ´e o sistema desenvolvido por (ZHANG; PAUL,
1.1. VIS ˜AO GERAL 5
Figura 1.3: N´umeros da ind´ustria estado-unidense de robˆos (ROBOTICS. . . , 2007). 1991), que prop˜oe um m´etodo para a solu¸c˜ao da cinem´atica inversa implementado sobre uma arquitetura paralela. Pose citar ainda o Sistema H´ıbrido Multicontrolado (SHM-4) de-senvolvido por Ara´ujo para prop´ositos de controle industrial (ARA ´UJO, 1999) que utiliza topologia f´ısica hiperc´ubica, comunica¸c˜ao baseada em SPI (Serial Peripheral Interface - In-terface Perif´erica Serial) e unidades de processamento baseadas no microcontrolador HC11 da Motorola. Outro exemplo, o Responsive Processor, ´e um processador especializado para controle distribu´ıdo/paralelo (YAMASAKI, 2001) que integra um n´ucleo de processamento SPARC, interface de comunica¸c˜ao em tempo real (responsive link ), interface SDRAM, ge-rador de PWM (Pulse Width Modulation - Modula¸c˜ao por Largura de Pulso), conversores A/D e D/A al´em de diversos padr˜oes de E/S industriais (PCI, USB, MDAC etc.) em um ´
unico substrato. Embora tenham bons resultados, solu¸c˜oes que apresentam processadores fisicamente distantes tˆem problemas quando ´e necess´aria a troca de maiores quantidades de dados entre os processadores, principalmente devido `as limita¸c˜oes impostas por largura de banda e latˆencia de comunica¸c˜ao (EL-REWINI; ABD-EL-BARR, 2005). A integra¸c˜ao de multiprocessadores e perif´ericos atrav´es de redes em chip tem se mostrado uma boa solu¸c˜ao para estes problemas (WONG, 2004).
Para aplica¸c˜oes com escala anual de produ¸c˜ao superiores a 10 mil unidades, os ASICs (Application Specific Integrated Circuit - Circuito Integrado de Aplica¸c˜ao Espec´ıfica) possuem menor custo por unidade que os FPGAs. A figura 1.3 mostra as vendas (incluindo exporta-¸c˜oes) da ind´ustria estado-unidense de robˆos entre o primeiro trimestre de 2004 e o segundo trimestre do 20071. Os dados s˜ao da RIA (Robotic Industries Association - Associa¸c˜ao das
1
Ind´ustrias de Rob´otica) (ROBOTICS. . . , 2007).
Embora a ind´ustria mundial de robˆos tenha movimentado bilh˜oes de d´olares no ano passado, a escala de produ¸c˜ao n˜ao ´e t˜ao elevada pois o pre¸co m´edio de um robˆo, no mercado americano, ´e de 60 mil d´olares. A aplica¸c˜ao de FPGAs se justifica neste segmento do ponto de vista econˆomico uma vez que a escala de produ¸c˜ao anual, at´e o presente momento, n˜ao ultrapassa uma dezena de milhar de unidades (incluindo todos os modelos de robˆos) por fabricante. O uso de FPGAs traz ainda vantagens oriundas da prototipa¸c˜ao r´apida, na redu¸c˜ao do TTM (Time-To-Market - Tempo-at´e-o-Mercado) e baixo custo de NRE (Non-Recurring Engineering - Engenharia N˜ao-Recorrente) (HOHMANN, 2003).
Existem previs˜oes de crescimento exponencial da produ¸c˜ao de robˆos (impulsionado prin-cipalmente por aplica¸c˜oes dom´esticas) nos pr´oximos anos. Para escalas de produ¸c˜ao anual na ordem de dezenas ou centenas de milhares pode-se ainda lan¸car m˜ao de tecnologias como o ASIC estruturado que oferece portabilidade para projetos concebidos em FPGA (MOSHER; KIRK, 2007). A prototipa¸c˜ao e depura¸c˜ao podem ser feitas em FPGA e o projeto final ´e ent˜ao convertido para ASIC estruturado que possui, em rela¸c˜ao ao FPGA, menor custo por unidade em grande escala de produ¸c˜ao.
1.2
Objetivos
Tendo em vista o contexto apresentado, o objetivo geral deste trabalho ´e implementar um multiprocessador utilizando a tecnologia de FPGA com vista a aplica¸c˜oes rob´oticas. Os objetivos espec´ıficos s˜ao:
• Projetar e implementar uma arquitetura de processamento paralelo baseada em FPGA capaz de realizar algoritmos ´uteis em rob´otica em tempos da ordem de 10 ms;
• Avaliar a arquitetura desenvolvida sob os prismas da viabilidade t´ecnica e econˆomica;
• Comparar as abordagens de processamento serial e paralelo para aplica¸c˜oes rob´oticas, levantando os ganhos obtidos com a t´ecnica de processamento paralelo em detrimento da serial;
1.3. METODOLOGIA 7
1.3
Metodologia
A fim de alcan¸car tais objetivos tomamos como base a seguinte metodologia: • Buscar trabalhos j´a publicados nesta linha de pesquisa (revis˜ao bibliogr´afica);
• Aprofundar os conhecimentos e aprimorar as habilidades nas tecnologias de FPGA: recursos dispon´ıveis nos CIs dispon´ıveis e dom´ınio dos ambientes de desenvolvimento; • Estudar o processamento paralelo tanto do ponto de vista de hardware quanto de
soft-ware;
• Definir a topologia e o tipo de arquitetura a ser implementada; • Implementar o sistema paralelo em FPGA;
• Avaliar o desempenho da arquitetura;
• Implementar algoritmos utilizados em aplica¸c˜oes rob´oticas na forma paralela.
1.4
Estrutura do Trabalho
Este cap´ıtulo d´a uma vis˜ao geral do trabalho e sua contextualiza¸c˜ao tecno-mercadol´ogica. S˜ao apresentadas al´em das justificativas e motiva¸c˜ao, revis˜ao bibliogr´afica, objetivos gerais e espec´ıficos, metodologia e estrutura do trabalho.
No cap´ıtulo dois s˜ao descritas as tecnologias de eletrˆonica reconfigur´avel, sua classifica-¸c˜ao, os recentes avan¸cos atrav´es dos FPGAs, al´em da nova classe de dispositivos para projetos anal´ogicos conhecido como FPAA (Field Programmable Analog Array - Arranjo Anal´ogico Program´avel em Campo).
O cap´ıtulo trˆes d´a uma vis˜ao geral de processamento paralelo sob os pontos de vista de hardware e software, classifica¸c˜oes, m´etricas e para an´alise de sistemas.
No cap´ıtulo quatro ´e descrito o sistema paralelo desenvolvido, sua arquitetura e an´alise qualitativa e quantitativa. Testes de performance e comparativos atrav´es da implementa¸c˜ao de algoritmos utilizados em aplica¸c˜oes rob´oticas s˜ao apresentados.
O cap´ıtulo cinco discute os resultados obtidos, apresentando as conclus˜oes, resumo das contribui¸c˜oes e sugest˜oes para trabalhos futuros.
Foram inclu´ıdos dois apˆendices ao fim do trabalho com a finalidade de complementar, para o leitor interessado em maior profundidade, a informa¸c˜ao apresentada atrav´es de detalhes t´ecnicos do CI de FPGA utilizado no trabalho, no apˆendice A; al´em dos programas escritos em linguagem C utilizados nos testes, no apˆendice B.
9
Cap´ıtulo 2
Eletrˆ
onica Reconfigur´
avel
De forma geral, a eletrˆonica reconfigur´avel pode ser vista como uma tecnologia que com-bina a velocidade de opera¸c˜ao das solu¸c˜oes em hardware com a flexibilidade das solu¸c˜oes em software. Os dispositivos baseados em eletrˆonica reconfigur´avel s˜ao chamados de FPDs (Field-Programmable Devices - Dispositivos Program´aveis em Campo) (BROWN; ROSE, 1996). A palavra “field ” indica que a configura¸c˜ao do circuito pode ser feita pelo usu´ario final sem a necessidade da utiliza¸c˜ao dos recursos de ind´ustrias de fundi¸c˜ao de semiconduto-res (foundries). Os dispositivos baseados em eletrˆonica reconfigur´avel re´unem, em um ´unico chip, os componentes b´asicos de um sistema (digital ou anal´ogico) e uma forma de interco-nex˜ao program´avel entre eles. Isto possibilita projetar um sistema utilizando softwares de EDA (Electronic Design Automation - Automa¸c˜ao de Projeto Eletrˆonico) multin´ıvel. Estas plataformas de desenvolvimento implementam o projeto a partir da conex˜ao adequada dos elementos internos do dispositivo de eletrˆonica reconfigur´avel. Tal abordagem reduz drasti-camente os custo de NRE (Non-Recurring Engineering - Engenharia N˜ao-Recorrente) (HOH-MANN, 2003) para desenvolvimento de hardware atrav´es da redu¸c˜ao do tempo de ciclo do projeto (MUNDEN, 2005). A figura 2.1 mostra um comparativo entre os tempos do ciclo de projeto baseado em simula¸c˜ao e prototipa¸c˜ao.
A eletrˆonica reconfigur´avel possibilita a implementa¸c˜ao de sistemas bastante sofisticados e abriu espa¸co para o surgimento de arquiteturas de processamento que modificam sua es-trutura em tempo real, constituindo plataformas conhecidas como Sistemas de Computa¸c˜ao Reconfigur´avel (REISER et al., 1998).
Para a implementa¸c˜ao de circuitos anal´ogicos em eletrˆonica reconfigur´avel utiliza-se os FPAAs (Field Programmable Analog Arrays - Arranjos Anal´ogicos Program´aveis em Campo) enquanto que para aplica¸c˜oes digitais s˜ao utilizados os PLDs (Programmable Logic Device -Dispositivo L´ogico Program´avel). Os PLDs podem ser classificados quanto `a arquitetura
Figura 2.1: Tempos de ciclo de projeto (MUNDEN, 2005).
em trˆes tipos: SPLD (Simple Programmable Logic Device - Dispositivo L´ogico Program´avel Simples), CPLD (Complex Programmable Logic Device - Dispositivo L´ogico Program´avel Complexo) e FPGA (Field Programmable Gate Array - Arranjo de Portas Program´avel em Campo). Estes dois ´ultimos (CPLDs e FPGAs) podem ser referidos pelo acrˆonimo HCPLD (High Capacity PLD - PLD de Alta Capacidade) por possu´ırem alta capacidade l´ogica, ou seja, 600 portas l´ogicas ou mais. Existem ainda circuitos integrados h´ıbridos capazes de lidar tanto com sinais anal´ogicos quanto digitais1.
2.1
Arranjo Anal´
ogico Program´
avel em Campo
O FPAA ´e um CI para aplica¸c˜oes no dom´ınio anal´ogico. ´E um dispositivo program´avel que cont´em um grande n´umero de m´odulos chamados de CABs (Configurable Analog Blocks - Blocos Anal´ogicos Configur´aveis) e interconex˜oes program´aveis permitindo configura¸c˜oes arbitr´arias de circuitos anal´ogicos. Os recursos de cada CAB variam de fabricante para fabri-cante, mas tipicamente ´e composto por um amplificador operacional, arranjos de capacitores program´aveis (PCA - Programmable Capacitor Array) e arranjos de resistores program´aveis (necess´arios a circuitos de processamento cont´ınuo no tempo) ou chaves configur´aveis para circuitos chaveados. Os principais fabricantes de FPAAs da atualidade s˜ao Anadigm, Lat-tice Semiconductors, Sidsa, Zetex e Cypress. Uma das aplica¸c˜oes de FPAAs em rob´otica ´e a implementa¸c˜ao de hardware evolutivo com tolerˆancia a falhas (DERENSON; EST´EVES; LIPSON, 2005). No Laborat´orio de Sistemas Modulares Rob´oticos da Unicamp pesquisas tˆem sido desenvolvidas (FAZANARO, 2007) utilizando Arranjos Anal´ogicos Program´aveis
1
Teradyne Inc., Agilent Technologies e Cypress s˜ao os principais fabricantes destes dispositivos que s˜ao ainda pouco difundidos. Um dos modelos comerciais fabricado pela Cypress ´e PSoC™ (Programmable System-on-Chip - Sistema em Chip Program´avel).
2.2. DISPOSITIVO L ´OGICO PROGRAM ´AVEL SIMPLES 11
Figura 2.2: PROM: arquitetura. em Campo.
2.2
Dispositivo L´
ogico Program´
avel Simples
Os PLDs mais simples e com menor densidade s˜ao os SPLDs. Esta se¸c˜ao aborda estes dispositivos que serviram de base tecnol´ogica para produtos mais sofisticados como CPLDs e FPGAs.
2.2.1
A Mem´
oria PROM
O primeiro dispositivo program´avel utilizado para implementa¸c˜ao de fun¸c˜oes l´ogicas foi a PROM (Programmable Read-Only Memory - Mem´oria Program´avel S´o de Leitura), inven-tada pelo engenheiro de foguetes e cientista chinˆes, Wen Tsing Chow, em 1956 (CHOW; HENRICH, 1962). Uma PROM sai de f´abrica com todos os bits em n´ıvel l´ogico alto. A programa¸c˜ao ´e irrevers´ıvel e realiza-se por queima de fus´ıveis para os bits que se deseja alte-rar para n´ıvel l´ogico baixo. A PROM pode ser utilizada para implementar circuitos l´ogicos usando as linhas de endere¸cos como a entrada e as linhas de dados como a sa´ıda do circuito. A fun¸c˜ao l´ogica ´e mapeada como uma express˜ao na forma de soma-de-produtos. A figura 2.2 mostra a arquitetura de uma PROM de 3 entradas e 4 sa´ıdas. Neste caso, s˜ao necess´arios 32 fus´ıveis integrados no chip. Para uma PROM de n entradas e k sa´ıdas o n´umero necess´ario de fus´ıveis z(n, k) seria:
Figura 2.3: PLA: arquitetura.
z(n, k) = k.2n (2.1)
Da equa¸c˜ao ´e poss´ıvel notar que o n´umero de fus´ıveis integrados em uma PROM cresce exponencialmente com o aumento das linhas de entrada o que torna caro o emprego deste dispositivo para o mapeamento de fun¸c˜oes l´ogicas com muitas entradas. Al´em do mais, para fun¸c˜oes l´ogicas que podem ser expressas como soma de poucos mintermos a maior parte do circuito da PROM fica inutilizado, uma vez que ´e realizada decodifica¸c˜ao total na entrada (TOCCI; WIDMER, 2003). Pode-se notar que a PROM para implementa¸c˜ao de circuitos l´ogicos n˜ao ´e sempre eficiente, e portanto, ´e raramente utilizada com esta finali-dade (BROWN; ROSE, 1996).
2.2.2
Tecnologia PLA
Em 1972, a National Semiconductor Corporation introduziu no mercado o primeiro disposi-tivo criado especificamente para implementa¸c˜ao de circuitos l´ogicos – o PLA (Programmable Logic Array - Arranjo L´ogico Program´avel) DM7575. A figura 2.3 ilustra a arquitetura de um PLA de 3 entradas e 4 sa´ıdas. Ela possui dois n´ıveis de l´ogica, um plano AND (na entrada) e um plano OR (na sa´ıda), ambos program´aveis. A maior flexibilidade desta ar-quitetura resulta na possibilidade de mapear-se de forma mais eficiente fun¸c˜oes l´ogicas que possuam grande n´umero de entradas.
2.2. DISPOSITIVO L ´OGICO PROGRAM ´AVEL SIMPLES 13 esse motivo ´e freq¨uentemente chamado de MPLA (Mask Programmable Logic Array - Arranjo L´ogico Programado por M´ascara) e n˜ao pode ser considerado um FPD. Em 2 de junho de 1975 na EE Times, a Intersil anunciou um chip chamado IM5200. No mesmo ano, Ron Cline da Signetics Corporation desenvolveu o 825100. Estes dois dispositivos eram baseados na arquitetura do PLA, contudo podiam ser programados em campo, e portanto, passaram a ser referenciados pelo acrˆonimo FPLA (Field Programmable Logic Array - Arranjo L´ogico Programado em Campo) (PELLERIN; HOLLEY, 1991). Eles tinham finalidade inicial de substituir circuitos l´ogicos de acoplamento (glue logic) e por permitirem a programa¸c˜ao por parte do usu´ario, podem ser considerados FPDs.
Para um PLA com n entradas, k portas no plano AND e m sa´ıdas, temos que qualquer vari´avel de entrada (ou seu complemento) pode ser uma entrada de qualquer porta AND. Logo, qualquer porta no plano AND pode ser configurada para implementar um dos 3n
poss´ıveis termos-produtos2. A estrutura do PLA permite que qualquer termo-produto seja
conectado a qualquer porta OR. Esta caracter´ıstica ´e referida como “compartilhamento de termo-produto” (product-term-sharing) e permite que muitos elementos l´ogicos comuns sejam compartilhados entre os circuitos de sa´ıda (plano OR). Ao contr´ario da PROM, o n´umero de termos-produtos ´e limitado pelo plano AND, ou seja, uma fun¸c˜ao l´ogica poder´a ter no m´aximo k termos-produtos, o que torna a minimiza¸c˜ao das fun¸c˜oes uma etapa cr´ıtica na implementa¸c˜ao do projeto. Tal dispositivo permite implementar m fun¸c˜oes l´ogicas de n vari´aveis, cada fun¸c˜ao podendo ser composta pela soma de at´e k termos-produtos.
A opera¸c˜ao dos PLAs ´e, em geral, mais lenta que a das PROMs pelo fato e existirem dois arranjos program´aveis atrav´es dos quais os sinais devem se propagar. A presen¸ca de dois planos program´aveis tamb´em torna o custo de fabrica¸c˜ao de PLAs mais elevado que o das PROMs.
2.2.3
Tecnologia PAL
Em 1978, a empresa americana Monolithic Memories Inc. (MMI)3 lan¸cou no mercado o PAL
(Programmable Array Logic - L´ogica de Arranjo Program´avel). Este tipo de dispositivo da mesma forma que a PROM possui dois n´ıveis de portas l´ogicas: um plano AND e um plano OR. A diferen¸ca reside no fato de que, ao contr´ario do que acontece na PROM, as entradas das portas AND s˜ao program´aveis enquanto o plano OR possui conex˜oes fixas. Tal distin¸c˜ao
2
Isso se deve ao fato de existirem trˆes poss´ıveis configura¸c˜oes para a entrada no plano OR: verdadeiro, complemento ou desconectado.
3
A Monolithic Memories Inc. fundiu-se `a Advanced Micro Devices (AMD) em 1987 e tornou-se a divis˜ao de l´ogica program´avel em campo da AMD – Vantis Corporation. Em 1999, a AMD vendeu a unidade Vantis Corp. por 500 milh˜oes de d´olares para a Lattice Semiconductor (RISTELHUEBER, 1999).
Figura 2.4: PAL: arquitetura.
´e ilustrada na figura 2.4 na qual ´e apresentada a arquitetura e um PAL com trˆes entradas e quatro sa´ıdas. Dispositivos usando esta tecnologia podiam ser programados uma ´unica vez, da mesma forma que as PROMs.
Os PALs superaram as desvantagens de alto custo e baixa performance dos PLAs atrav´es da redu¸c˜ao a um ´unico plano program´avel. A perda de generalidade inserida pelas conex˜oes fixas do plano OR foram compensadas, em termos de mercado, com a produ¸c˜ao de variados tipos de PAL com diferentes quantidades de linhas de entrada, linhas de sa´ıda e diversos tamanhos de portas OR. As PALs possuem ainda flip-flops ligados `a sa´ıda das portas OR de forma que a implementa¸c˜ao de circuitos seq¨uenciais se torna poss´ıvel.
A maneira como o hardware digital era projetado foi profundamente afetada ap´os o lan¸camento dos PALs de forma que a estrutura deste dispositivo tornou-se a base para os PLDs em uso na atualidade (BROWN; ROSE, 1996).
2.2.4
Tecnologia GAL
Os FPDs ganharam um novo membro em 1985 com o lan¸camento do GAL (Generic Array Logic - L´ogica de Arranjo Gen´erico) pela Lattice Semiconductor, que foi uma evolu¸c˜ao direta da tecnologia PAL. Os dispositivos GAL utilizam uma matriz de EEPROM ao inv´es de fus´ıveis para selecionar as conex˜oes no plano AND. Desta forma, o diferencial pr´atico reside no fato de que o GAL pode ser apagado e reprogramado, ao contr´ario do PAL que pode ser programado uma ´unica vez.
2.2. DISPOSITIVO L ´OGICO PROGRAM ´AVEL SIMPLES 15
Figura 2.5: Arquitetura de um dispositivo GAL22v10 (LATTICE SEMICONDUCTOR CORP., 2006).
Figura 2.6: Macroc´elula de um dispositivo GAL22v10 (LATTICE SEMICONDUCTOR CORP., 2006).
A arquitetura GAL ´e constituida de um plano AND na entrada e o plano OR est´a em-butido num arranjo de OLMCs (Output Logic MacroCells - Macroc´elulas L´ogicas de Sa´ıda). A figura 2.5 mostra a estrutura interna do GAL22v10. ´E importante observar a presen¸ca de buffers de trˆes estados nas entradas e sa´ıdas do GAL, al´em de realimenta¸c˜ao das sa´ıdas para o plano AND tamb´em feito por interm´edio de buffers.
A figura 2.6 apresenta a macroc´elula de um GAL22v10 da Lattice. Dependendo da pro-grama¸c˜ao ela pode operar em modo registrado ou combinacional e a sa´ıda pode ser comple-mentada ou n˜ao. O GAL22v10 possui 10 macroc´elulas sendo que podem receber na entrada 8, 10, 14 ou 16 termos-produtos provenientes do plano AND.
2.3
Dispositivo L´
ogico Program´
avel Complexo
A ind´ustria pioneira na tecnologia de CPLDs foi a Altera atrav´es do lan¸camento do EPLC (Erasable Programmable Logic Device - Dispositivo L´ogico Apag´avel e Program´avel) em 1988. Tal dispositivo possibilita o projeto de sistemas relativamente maiores que os SPLDs, mas geralmente oferece menos recursos l´ogicos que os FPGAs. Os CPLDs possuem tipicamente 50 vezes a capacidade de um SPLD e sua arquitetura cl´assica mostra-se ineficiente para densidades maiores (GERICOTA, 2003).
A figura 2.7 mostra a arquitetura de um CPLD. Os dispositivos l´ogicos program´aveis complexos mais novos apresentam melhorias em rela¸c˜ao ao esquema cl´assico. A arquitetura do CPLD pode ser compreendida como muitos SPLDs conectados atrav´es de um arranjo
2.3. DISPOSITIVO L ´OGICO PROGRAM ´AVEL COMPLEXO 17
Figura 2.7: CPLD: arquitetura.
de conex˜oes program´aveis. Neste caso, estes SPLDs s˜ao ocasionalmente referenciados por “blocos l´ogicos”. Cada bloco l´ogico de um CPLD, por sua vez, inclui de oito a dezesseis macroc´elulas todas elas conectadas permanentemente entre si. A programa¸c˜ao do CPLD consiste, portanto, em conectar determinados blocos l´ogicos entre si para alcan¸car o resultado desejado.
A maior parte dos CPLDs cont´em macroc´elulas com uma fun¸c˜ao l´ogica combinacional na forma de soma-de-produtos al´em de um flip-flop opcional. Dependendo do CPLD, a fun¸c˜ao l´ogica pode suportar de quatro a dezesseis mintermos. Os CPLDs podem variar tamb´em quanto ao n´umero de portas l´ogicas e registradores de deslocamento. Isto possibilita que CPLDs com grande n´umero de portas l´ogicas possam ser usados no lugar de FPGAs. Uma outra especifica¸c˜ao do CPLD ´e o n´umero de mintermos que a macroc´elula ´e capaz de gerenciar.
Os CPLDs est˜ao dispon´ıveis em muitas op¸c˜oes de encapsulamento, fam´ılias l´ogicas, freq¨uˆencia m´axima de opera¸c˜ao, tens˜ao de alimenta¸c˜ao, corrente de opera¸c˜ao, corrente de standby e dissipa¸c˜ao de potˆencia. Podem ainda variar quanto a quantidade de mem´oria e os diferentes tipos de mem´oria suportados (AGRAWAL; CHENG, 2005), dentre os quais:
• ROM (Read-Only Memory - Mem´oria S´o de Leitura)
• DPRAM (Dual-Port RAM - RAM de Dupla Porta) (DALLAS, 2001)
• CAM (Content-Addressable Memory - Mem´oria Endere¸c´avel por Conte´udo) (PAGI-AMTZIS; SHEIKHOLESLAMI, 2006; KOHONEN, 1987)
• Mem´oria FIFO (First-In First-Out - Primeiro a Entrar, Primeiro a Sair) • Mem´oria LIFO (Last-In First-Out - ´Ultimo a Entrar, Primeiro a Sair)
Existem diversas especifica¸c˜oes de desempenho para CPLDs. Freq¨uˆencia interna de ope-ra¸c˜ao, atraso de propaga¸c˜ao e speed grade s˜ao alguns exemplos. O speed grade indica o atraso em nanosegundos (ns) atrav´es de uma macroc´elula do dispositivo. Um speed grade de -10, por exemplo, representa um atraso de 10ns atrav´es da macroc´elula. Claramente, quanto mais pr´oximo do zero estiver o speed grade, mais r´apido ser´a o dispositivo.
Alguns CPLDs incluem PLL (Phase-Locked Loop - Malha Fechada de Fase4) e DLL
(Delay-Loked Loop - Malha Fechada de Atraso) integradas conferindo poder para s´ıntese de variadas freq¨uˆencias de clock e permitindo seu uso em aplica¸c˜oes de SoC (System-on-Chip - Sistema em Chip). Os circuitos de gerenciamento de clock atrav´es da multiplica¸c˜ao de freq¨uˆencia possibilitam a gera¸c˜ao de sinais de clock internos de alta velocidade para amostra-gem de dados em aplica¸c˜oes de processamento digital de sinais. Al´em do mais, a utiliza¸c˜ao de PLLs e DLLs provˆe grande controle sobre os sinais de clock internos. Este ponto, em particu-lar, ´e cr´ıtico na integra¸c˜ao de sistemas que operam com diversos dom´ınios de clock (BENINI; MICHELI, 2002; HAMMOND; NAYFEH; OLUKOTUN, 1997).
Uma outra caracter´ıstica muito importante dos CPLDs ´e a temporiza¸c˜ao predit´ıvel que o torna uma excelente escolha para aplica¸c˜oes de controle de alto desempenho. Tipicamente os CPLDs possuem atrasos menores e mais previs´ıveis que os FPGAs e outros PLDs. Por serem baratos e apresentarem consumo de potˆencia relativamente baixo, os CPLDs s˜ao freq¨uente-mente usados em aplica¸c˜oes de baixo custo, aplica¸c˜oes port´ateis alimentadas por baterias e substitui¸c˜ao de l´ogicas aleat´orias (random logic) sofisticadas e circuitos de acoplamento (glue logic) mais complexos.
Os CPLDs podem ser encontrados em variadas densidades que v˜ao de 32 macroc´elulas nos modelos mais simples at´e 1700 macroc´elulas nos modelos de mais alta capacidade. A Xilinx oferece as s´eries CoolRunner e XC9500 de CPLDs com densidades entre 32 e 512 macroc´elulas, enquanto sua principal concorrente, a Altera, traz as s´eries MAX que podem chegar a 1700 macroc´elulas5.
4
Ou Malha de Fase S´ıncrona.
5
2.4. ARRANJO DE PORTAS PROGRAM ´AVEL EM CAMPO 19
2.4
Arranjo de Portas Program´
avel em Campo
Neste trabalho foi utilizada a tecnologia de FPGA (Field Programmable Gate Array) para a implementa¸c˜ao de uma arquitetura de processamento paralelo, logo o seu estudo ´e desen-volvido de forma mais detalhada para apresentar os fundamentos te´oricos necess´arios para a compreens˜ao do trabalho. O FPGA ´e um circuito integrado composto por blocos l´ogicos dispostos em forma de matriz, blocos de mem´oria, blocos de E/S e uma l´ogica de intercone-x˜ao program´avel, podendo conter ainda v´arios outros recursos como multiplicadores, PLLs, DLLs, circuitos de CRC (Cyclical Redundancy Check - Verifica¸c˜ao de Redundˆancia C´ıclica) e ECC (Error Correction Code - C´odigo de Corre¸c˜ao de Erro), al´em de variados tipos de mem´oria. A funcionalidade dos componentes de um FPGA assim como o seu roteamento, podem ser configurados via softwares de EDA.
2.4.1
Surgimento do FPGA
O primeiro chip de FPGA foi desenvolvido por Ross Freeman e Bernard Vonderschmitt em 1983. Estes dois, at´e ent˜ao engenheiros da Zilog Corp., fundaram a Xilinx Inc. em 1984, e no ano seguinte lan¸caram o primeiro chip de FPGA do mercado – o Xilinx XC2064™ (XILINX, 2007b). Este dispositivo pioneiro possu´ıa 1000 portas l´ogicas e representava uma forma revolucion´aria de l´ogica program´avel para a ´epoca. Na atualidade temos Altera, Xilinx, Lattice Semiconductor e Actel como os principais fabricantes de FPGA. Os quatro juntos representam 90% do mercado mundial enquanto QuickLogic, Atmel, Cypress, Motorola s˜ao alguns dos outros fabricantes que disputam a fatia restante (FPGA. . . , 2007; ALTERA, 2007a).
As ra´ızes hist´oricas do FPGA est˜ao nos CPLDs e MPGAs (Mask Programmable Gate Array - Arranjo de Portas Program´avel por M´ascara). Os FPGAs surgiram com o intuito de superar as dificuldades encontradas na fabrica¸c˜ao de FPDs de capacidades mais elevadas. A arquitetura dos CPLDs esbarrava na grande complexidade da matriz de interconex˜ao para dispositivos com grande capacidade l´ogica. Por este motivo, CPLDs n˜ao ultrapassaram a barreira das 512 macroc´elulas em um ´unico dispositivo t´ecnico-economicamente vi´avel. Por outro lado, a tecnologia de FPGA apresenta-se com uma revolucion´aria arquitetura de FPDs que oferece possibilidades muito maiores de expans˜ao devido `a t´ecnica de “conex˜ao segmentada” de blocos l´ogicos, diferenciando-se da “conex˜ao cont´ınua” utilizada nos FPDs precursores.
o valor apresentado ´e baseado em uma convers˜ao para o n´umero equivalente de macroc´elulas declarado pelo fabricante.
Figura 2.8: FPGA: arquitetura t´ıpica.
2.4.2
Arquitetura do FPGA
A figura 2.8 ilustra a arquitetura t´ıpica de um FPGA e suas trˆes estruturas b´asicas, a saber: os blocos l´ogicos, os blocos de E/S e as chaves de interconex˜ao.
O constituinte principal de um FPGA ´e o bloco l´ogico, pois nele s˜ao implementadas as fun¸c˜oes l´ogicas desejadas. Existem diferentes denomina¸c˜oes para “bloco l´ogico” dependendo do fabricante do dispositivo. A Xilinx denomina seu bloco l´ogico de CLB (Configurable Logic Block - Bloco L´ogico Configur´avel), a Actel referencia-o por LM (Logic Module - M´odulo L´ogico) e a Altera por LE (Logic Element - Elemento L´ogico). A estrutura interna dos blocos l´ogicos de um FPGA pode variar de um dispositivo para outro e a complexidade desta estrutura permite classific´a-los quanto `a granularidade.
Os blocos de E/S est˜ao dispostos fisicamente na regi˜ao perif´erica do substrato, podem ser programados como entrada, sa´ıda ou bidirecionais, permitindo acesso aos pinos de E/S de uso geral na parte externa do dispositivo atrav´es de um buffer.
2.4. ARRANJO DE PORTAS PROGRAM ´AVEL EM CAMPO 21 l´ogicos e blocos de E/S. O processo de escolha das conex˜oes a realizar ´e chamado de “rotea-mento”.
A funcionalidade do FPGA ´e definida atrav´es de comutadores el´etricos program´aveis cujas propriedades, tamanho, resistˆencia e capacitˆancia parasita definem a eficiˆencia e o desempenho do dispositivo (GERICOTA, 2003).
2.4.3
Classifica¸c˜
ao dos FPGAs
Os dispositivos FPGAs podem classificados, dentre outras formas, quanto `a tecnologia de programa¸c˜ao que empregam, quanto ao n´umero de configura¸c˜oes que permite e quanto `a gra-nularidade das estruturas internas. Cada uma destas formas ´e descrita nas se¸c˜oes seguintes.
2.4.3.1 Tecnologia de Programa¸c˜ao
Os FPGAs podem ser classificados quanto `a tecnologia de suas conex˜oes. Neste quesito encontra-se, atualmente, trˆes tipos de FPGAs que ser˜ao descritos a seguir.
SRAM: Os FPGAs baseados em mem´oria est´atica usam as c´elulas da mem´oria de configu-ra¸c˜ao como forma de implementa¸c˜ao da l´ogica desejada. As c´elulas encontram-se distribu´ıdas entre os blocos l´ogicos de forma a controlar a interliga¸c˜ao entre eles. Esta ´e a tecnologia de programa¸c˜ao mais utilizada em FPGAs de maior densidade de integra¸c˜ao. Os comutadores que possibilitam o estabelecimento de interliga¸c˜oes s˜ao chamados de PIPs (Programmable Interconnect Points - Pontos de Interconex˜ao Program´avel).
Antifus´ıvel: Antifus´ıveis s˜ao elementos program´aveis de dois terminais que quando sub-metidos a uma determinada tens˜ao (chamada tens˜ao de programa¸c˜ao), alteram de forma irrevers´ıvel o valor da sua impedˆancia que passa de um valor muito elevado a um valor muito baixo. A baixa resistˆencia de condu¸c˜ao e o tamanho reduzido fazem dos antifus´ıveis elemen-tos adequados para utiliza¸c˜ao como tecnologia de programa¸c˜ao de FPGAs. A programa¸c˜ao de dispositivos baseados nesta tecnologia ´e bem mais r´apida que nos dispositivos baseados em SRAM (GERICOTA, 2003 apud GREENE; HAMDY; BEAL, 1993). A tecnologia de an-tifus´ıvel ´e n˜ao-vol´atil, contudo tem as desvantagens de ser program´avel uma ´unica vez (OTP) e apresentar elevadas correntes de fuga atrav´es dos elementos n˜ao conectados.
Porta Flutuante: A tecnologia de programa¸c˜ao baseada em EEPROM (Electricaly Era-sable and Programmable ROM - ROM Apag´avel e Program´avel Eletricamente) e Flash ´e freq¨uentemente utilizada em CPLDs, embora possa ser encontrada esporadicamente aplicada em FPGAs. Uma c´elula de EEPROM ´e um transistor MOS (Metal-Oxide-Semiconductor - Metal- ´Oxido-Semicondutor) que armazena carga numa placa condutora eletricamente iso-lada (porta flutuante), localizada acima do canal do transistor. Quando carregada, a porta flutuante gera um campo el´etrico capaz de modificar a condutividade do canal. A carga da porta flutuante pode ser aumentada ou reduzida atrav´es da a¸c˜ao de um fenˆomeno de condu-¸c˜ao de corrente denominado efeito de tunelamento de Fowler-Nordheim (GERICOTA, 2003 apud CONSTANCIAS, 1998). Quando submetida a baixos n´ıveis de polariza¸c˜ao, a camada de ´oxido de sil´ıcio ´e uma excelente isolante, mas torna-se suficientemente condutora quando sujeita a uma tens˜ao de polariza¸c˜ao elevada6 (tens˜ao de programa¸c˜ao), levando `a passagem
de el´etrons que podem carregar ou descarregar a porta flutuante. Retirando-se a tens˜ao de programa¸c˜ao, o ´oxido volta a apresentar caracter´ısticas isolantes e a carga da porta flutuante fica retida podendo permanecer por muitos anos. Desta forma, a tens˜ao pode ser lida sem alterar a carga armazenada.
A tecnologia Flash ´e uma varia¸c˜ao da EEPROM e possui c´elulas que ocupam a metade da ´area de uma c´elula de EEPROM normal. O apagamento ´e mais simples e r´apido, contudo n˜ao ´e poss´ıvel a altera¸c˜ao de posi¸c˜oes de mem´oria individuais.
2.4.3.2 Possibilidades de Configura¸c˜ao
Quanto `a reconfigurabilidade, podemos classificar os dispositivos de FPGA em duas catego-rias: os OTP (One-Time Programmable - Program´avel uma ´Unica Vez) e os reconfigur´aveis (baseados em SRAM, EEPROM e Flash). As diferen¸cas b´asicas entre eles resultam da tec-nologia empregada na implementa¸c˜ao dos seus blocos l´ogicos e mecanismos de interconex˜oes internas (BROWN; ROSE, 1996), ou seja, da tecnologia de programa¸c˜ao empregada.
Program´aveis (OTPs): FPGAs OTP usam tecnologia baseada em antifus´ıveis para re-alizar conex˜oes (permanentes) no dispositivo. Neste caso, os blocos l´ogicos s˜ao semelhantes aos usados em CPLDs e SPLDs, contendo matrizes de portas l´ogicas e flip-flops. Os OTPs possuem tecnologia baseada em PROM. Os principais fabricantes desta categoria de FPGAs s˜ao Actel e QuickLogic.
6
2.4. ARRANJO DE PORTAS PROGRAM ´AVEL EM CAMPO 23 Reprogram´aveis: O FPGA reprogram´avel ´e a categoria dominante. A implementa¸c˜ao dos seus blocos l´ogicos se d´a usando uma LUT (Look-Up Table - Tabela de Consulta) baseada em SRAM (Static RAM - RAM Est´atica) no lugar de matrizes de portas l´ogicas. Fun¸c˜oes l´ogicas s˜ao implementadas atrav´es do mapeamento dos bits na SRAM. Esta tecnologia permite ao usu´ario reprogramar o chip de acordo com suas necessidades. Este tipo de FPGA precisa ser reprogramado toda vez que ´e reenergizado uma vez que a SRAM ´e uma mem´oria vol´a-til e apenas mant´em as informa¸c˜oes nela armazenadas enquanto o chip estiver alimentado. Por este motivo, uma mem´oria serial n˜ao vol´atil (SPROM) ´e requerida para reprogramar o FPGA a cada vez que ´e energizado. Este processo ´e conhecido tamb´em como “configura-¸c˜ao” ou “boot” do FPGA. A t´ecnica mais usual para realiz´a-lo emprega um tipo de mem´oria EEPROM especialmente desenvolvida para esta finalidade denominada mem´oria de configu-ra¸c˜ao. Pode-se utilizar alternativamente cart˜oes de mem´oria (cart˜oes SD, xD, CompactFlash etc.) ou mem´oria FLASH convencional associada a um CPLD para implementar os m´eto-dos de programa¸c˜ao propriet´arios de cada fabricante, e.g., o SelectMAP da Xilinx (XILINX, 2007a).
A volatilidade ´e uma caracter´ıstica dos FPGAs com tecnologia de programa¸c˜ao baseada em SRAM, contudo os modelos baseados em porta flutuante (EEPROM e Flash) mant´em a sua programa¸c˜ao mesmo ap´os a desenergiza¸c˜ao do dispositivo.
Tem-se grande vantagem na utiliza¸c˜ao de FPGAs reprogram´aveis quando se necessita realizar ajustes e corre¸c˜oes no projeto pois, neste caso, ´e suficiente a atualiza¸c˜ao da mem´oria de configura¸c˜ao. Por outro lado, quando se utiliza OTPs qualquer modifica¸c˜ao no projeto implica na substitui¸c˜ao do FPGA por um outro dispositivo virgem que possa ser programado com a nova configura¸c˜ao.
2.4.3.3 Granularidade
As arquiteturas de FPGA podem variar ainda com rela¸c˜ao `a complexidade das suas unida-des internas (gr˜aos). Este aspecto ´e denominado de “granularidade” ou “granulosidade” do dispositivo (GERICOTA, 2003). Os FPGAs podem ser de granularidade grossa, m´edia ou fina, como ser´a descrito a seguir.
Granularidade Grossa: S˜ao dispositivos que possuem gr˜aos grandes, ou seja, m´odulos estruturalmente complexos como unidades l´ogicas aritm´eticas, pequenos microprocessadores, mem´orias et cetera.
C A P ´I T U L O 2 : E L E T R ˆO N IC A R E C O N F IG U R ´A V E L
Fabricante Fam´ılia Tecnologia de
Programa¸c˜ao Granularidade
Capacidade
L´ogica (Portas)
Estruturas
Heterogˆeneas
Actel Axcellerator antifus´ıvel fina at´e 2M SRAM embutida
ProASIC Flash fina at´e 1M SRAM embutida
Altera Stratix III SRAM m´edia at´e 338K LEs SRAM embutida
Almel AT40K SRAM m´edia at´e 50K –
Lattice LatticeSC SRAM grossa at´e 900M RAM embutida
QuickLogic
pASIC3 antifus´ıvel m´edia at´e 75K –
Eclipse-II antifus´ıvel m´edia at´e 370K
SRAM e unidades computacionais
embutidas
Xilinx
XC4000XL SRAM m´edia at´e 180K –
Virtex-EM SRAM m´edia at´e 3M SRAM embutida
Virtex-II SRAM m´edia at´e 8M SRAM embutida
Virtex-II Pro SRAM m´edia –
SRAM, multiplicadores, processadores PowerPC, transmissores e receptores embutidos Tabela 2.1: Comparativo entre FPGAs de diferentes fabricantes
2.5. LINGUAGEM DE DESCRI ¸C ˜AO DE HARDWARE 25 Granularidade M´edia: M´odulos de gr˜aos m´edios s˜ao blocos l´ogicos com duas ou mais LUTs e dois ou mais flip-flops. Nesta classe est´a inclusa a maior parte das arquiteturas de FPGAs. Apresentam atrasos de interconex˜ao relativamente pequenos.
Granularidade Fina: S˜ao dispositivos constitu´ıdos de gr˜aos pequenos, i.e., m´odulos de pequena complexidade com blocos l´ogicos contendo uma fun¸c˜ao l´ogica de duas entradas ou um multiplexador e um flip-flop. FPGAs de granularidade fina fazem, em geral, melhor utiliza¸c˜ao dos recursos e permitem sua convers˜ao direta para ASIC, contudo requerem maior n´umero de interconex˜oes e possuem roteamento mais complexo.
Dentre todos os PLDs tratados anteriormente, os FPGAs s˜ao os que possuem a maior capacidade l´ogica da atualidade, sendo utilizados em diversos produtos industriais e de uso dom´estico.
A tabela 2.1 apresenta dados comparativos entre os principais dispositivos dispon´ıveis no mercado atual. S˜ao apresentados, de forma resumida, os principais recursos de cada modelo bem como a tecnologia em que s˜ao confeccionados.
2.5
Linguagem de Descri¸c˜
ao de Hardware
As linguagens de descri¸c˜ao de hardware (HDL) surgiram com a finalidade de documentar projetos de sistemas digitais. Em seguida foram usadas com a finalidade de simula¸c˜ao e nos ´ultimos vinte anos ´e not´avel sua populariza¸c˜ao em aplica¸c˜oes de s´ıntese de circuitos digitais em dispositivos l´ogicos program´aveis (BALCH, 2003). As duas principais linguagens de descri¸c˜ao de hardware da atualidade s˜ao Verilog e VHDL (VHSIC Hardware Description Language). Ambas incorporam padr˜oes internacionais da ind´ustria. Neste trabalho ´e dado um maior enfoque para a linguagem VHDL por ser uma linguagem altamente estruturada e fortemente tipada, tendo suas ra´ızes na linguagem ADA.
2.5.1
N´ıveis de Abstra¸c˜
ao
VHDL ´e uma linguagem multin´ıvel, ou seja, ela permite modelagem em v´arios n´ıveis de abstra¸c˜ao. A seguir ser˜ao brevemente descritos cada um dos poss´ıveis n´ıveis de descri¸c˜ao de modelos na linguagem VHDL.
2.5.1.1 N´ıvel de Portas
Este ´e o n´ıvel que provˆe o maior detalhamento para simula¸c˜ao de circuitos digitais e representa tamb´em o n´ıvel de abstra¸c˜ao mais baixo dentro do dom´ınio digital. Tanto para FPGAs quanto para ASICs, a biblioteca dos modelos em n´ıvel de portas ´e fornecida pelo vendedor ou foundry do componente. Devido `a grande quantidade de detalhes, a simula¸c˜ao tende a ser mais lenta que nos outros n´ıveis.
2.5.1.2 N´ıvel de Transferˆencia de Registrador (RTL - Register Transfer Level ) A forma mais discutida e praticada de modelagem HDL ´e em RTL (MUNDEN, 2005). Este n´ıvel ´e utilizado para projetar CIs como ASICs e FPGAs. Seu prop´osito ´e descrever o objetivo do projeto com detalhamento n˜ao t˜ao grande quanto no n´ıvel de portas, mas suficiente para ser compreendido por uma ferramenta de s´ıntese. A s´ıntese consiste em decompor a descri¸c˜ao RTL para o n´ıvel de portas de tal maneira que possa ser usada para criar o layout de um ASIC ou gerar o arquivo de configura¸c˜ao de um FPGA.
Embora o modelo RTL possa ser simulado, quando escrito para s´ıntese, n˜ao cont´em informa¸c˜oes sobre restri¸c˜oes de atraso nas porta e temporiza¸c˜ao. A simula¸c˜ao neste n´ıvel serve para a verifica¸c˜ao da funcionalidade do c´odigo, mas torna-se imprecisa. A precis˜ao necess´aria pode ser obtida simulando-se no n´ıvel de portas.
2.5.1.3 N´ıvel Comportamental
Ao contr´ario dos n´ıveis mais baixos, modelos neste n´ıvel possuem uma quantidade menor de detalhes, representando um n´ıvel mais alto de abstra¸c˜ao. O prop´osito do modelo compor-tamental ´e simular o que acontece nas interfaces de uma c´elula ou CI. Preocupa-se apenas com o que entra ou sai. A forma como o trabalho ´e realizado internamente n˜ao ´e levada em considera¸c˜ao neste n´ıvel.
O menor n´ıvel de detalhamento permite uma simula¸c˜ao muito mais r´apida que no RTL, contudo, o modelo neste n´ıvel n˜ao ´e sintetiz´avel.
2.5.1.4 Modelo Funcional de Barramento (BFM - Bus Functional Model ) Modelos funcionais de barramento s˜ao usualmente criados para partes muito complexas a ponto de um modelo comportamental se tornar muito custoso para se criar, ou muito lento para se avaliar. BFM tenta modelar a interface sem modelar a fun¸c˜ao do componente. Este
2.5. LINGUAGEM DE DESCRI ¸C ˜AO DE HARDWARE 27 modelo n˜ao ´e completo o bastante para simula¸c˜ao, mas serve para verificar se o componente est´a corretamente projetado em um sistema maior. Microprocessadores e DSPs (Digital Signal Processor - Processador Digital de Sinais) s˜ao exemplos de componentes para os quais se utiliza este n´ıvel de abstra¸c˜ao (MUNDEN, 2005).
2.5.2
Desenvolvimento Hist´
orico do VHDL
A linguagem VHDL foi criada com o intuito de descrever, simular e documentar hardware. Ap´os o surgimento dos dispositivos l´ogicos program´aveis e pelo fato do VHDL ter ampla aceita¸c˜ao, ela passou a servir tamb´em para projeto de novos dispositivos e sistemas digitais. Os itens abaixo descrevem o desenvolvimento hist´orico da linguagem VHDL.
• 1968: desenvolvem-se as primeiras linguagens de descri¸c˜ao de hardware. Dois anos depois j´a se sentia falta de padroniza¸c˜ao quanto `a sintaxe e semˆantica devido ao surgi-mento de diversas linguagens.
• 1973: nasce o projeto CONLAN (CONsensus LANguage) com o objetivo de definir formalmente uma linguagem de multin´ıvel.
• 1980: ´e lan¸cado o programa VHSIC (Very High Speed Integrated Circuit - Circuito Integrado de Velocidade Muito Alta). Neste mesmo ano, estima-se que 33 milh˜oes de d´olares foram investidos para o desenvolvimento direto de uma linguagem padronizada e suas ferramentas.
• 1983: no mˆes de julho, em parceria, Intermetrics, IBM e Texas Instruments vencem uma licita¸c˜ao do governo estado-unidense para desenvolver a linguagem VHDL. Ap´os uma d´ecada do surgimento do CONLAN seu relat´orio final foi publicado.
• 1985: em agosto foi entregue a vers˜ao final da linguagem: VHDL vers˜ao 7.2.
• 1986: o IEEE (Institute of Electrical and Electronics Engineers - Instituto de Enge-nheiros Eletricistas e Eletrˆonicos) designou uma comiss˜ao para padroniza¸c˜ao do VHDL. • 1987: foi lan¸cada a primeira padroniza¸c˜ao da linguagem (IEEE Std 1076-1987). • 1988: a linguagem VHDL torna-se um padr˜ao ANSI (American National Standards
Institute - Instituto Nacional Americano de Padr˜oes). Os primeiros softwares foram comercializados.
• 1991: iniciou-se um processo de ajuste do padr˜ao, cujo objetivo era a coleta e an´alise de requisitos, defini¸c˜ao dos objetivos e a especifica¸c˜ao das modifica¸c˜oes na linguagem.
• 1992: ocorre a avalia¸c˜ao e vota¸c˜ao das modifica¸c˜oes propostas.
• 1993: foi publicada uma revis˜ao do padr˜ao 1076 do IEEE chamado VHDL-93 (IEEE Std 1164-1993). A linguagem foi aceita pelo IEC (International Electrotechnical Com-mission - Comiss˜ao Eletrot´ecnica Internacional) como DIS (Draft International Stan-dard - Padr˜ao Internacional de Projeto).
• 1997: em dezembro deste ano foi publicado o manual de referˆencia da linguagem VHDL. • 2001: o padr˜ao VHDL foi revisado pelo IEEE novamente (IEEE Std 1364-2001) e
chamado de VHDL-2001.
Estes avan¸cos da eletrˆonica configur´avel somados `a evolu¸c˜ao de componentes eletrˆonicos de alt´ıssimo n´ıvel de integra¸c˜ao possibilitaram a embarca¸c˜ao de sistemas multiprocessados em um ´unico CI e, conseq¨uentemente, aplica¸c˜oes de processamento paralelo embutido.
29
Cap´ıtulo 3
Processamento Paralelo
Problemas cujo cˆomputo exige simula¸c˜oes complexas (previs˜oes meteorol´ogicas, dispers˜ao de polui¸c˜ao, biomecˆanica, dinˆamica molecular, turbulˆencia de fluidos ou sistemas de combust˜ao), ou que manipulam grandes quantidades de dados (genoma humano, ecossistemas, modela-gem de semicondutores e supercondutores, processamento de imagens ou renderiza¸c˜ao) s˜ao freq¨uentemente executados com o uso de processamento paralelo (GRAMA et al., 2003). Em geral, recorre-se a esta abordagem quando ´e necess´ario resolver problemas maiores ou mais complexos em um certo tempo cr´ıtico, ou quando se deseja reduzir o tempo de processamento de uma tarefa.
Nos ´ultimos 50 anos a computa¸c˜ao sofreu diversas modifica¸c˜oes e avan¸cos (DONGARRA et al., 2003; GRAMA et al., 2003; HINTON et al., 2001). Na segunda metade dos anos 70, a cria¸c˜ao das m´aquinas vetoriais marcou o in´ıcio da supercomputa¸c˜ao moderna (DONGARRA et al., 2003) e o uso da computa¸c˜ao antes da d´ecada de 80 era essencialmente militar e cient´ıfico. Dos anos 50 at´e os dias de hoje, o desenvolvimento do hardware de novos compu-tadores seguiu, em m´edia, a Lei de Moore (MOORE, 1965) no que se refere ao aumento da capacidade computacional. Percebe-se que a computa¸c˜ao de alto desempenho experimentou um crescimento logar´ıtmico de performance desde o seu surgimento. A figura 3.1 mostra a capacidade de processamento dos computadores de alto desempenho ao longo do tempo, as tecnologias dominantes por per´ıodo e os principais representantes de cada era da evolu¸c˜ao arquitetural.
Em sistemas rob´oticos, diversas tarefas necessitam de execu¸c˜ao em tempo real, ou seja, com restri¸c˜oes de tempo que se n˜ao forem atendidas ocasionam falhas no funcionamento (hard real-time) ou degrada¸c˜ao de performance (soft real-time) (LAPLANTE, 2004). A solu¸c˜ao de problemas desse tipo para robˆos de alto desempenho (geralmente mais de quatro graus de liberdade), quando implementada de forma seq¨uencial, exige freq¨uentemente hardware de
Figura 3.1: Evolu¸c˜ao da computa¸c˜ao de alto desempenho (CARRIJO; PAIVA, 2001). alto custo o que torna-se, muitas vezes, um fator proibitivo.
Uma alternativa para a solu¸c˜ao deste problema ´e a utiliza¸c˜ao de arquiteturas de proces-samento paralelo embutidas em FPGA. Este cap´ıtulo apresenta os princ´ıpios do paralelismo e a t´ecnica de processamento paralelo. Um enfoque especial ´e dado `as taxonomias e m´etricas de performance de redes.
3.1
Conceitos e Defini¸c˜
oes
Paralelismo: Estrat´egia de solu¸c˜ao de tarefas que consiste na decomposi¸c˜ao de uma tarefa em outras menores que possam ser realizadas de forma simultˆanea (AMDAHL, 1967). Processo: Programa em execu¸c˜ao.
Thread: Auto-replica¸c˜ao de um programa que passa a ser executado na forma de duas ou mais tarefas simultˆaneas ou pseudo-simultˆaneas, compartilhando o mesmo espa¸co de endere¸cos.
Computa¸c˜ao Paralela: Estrat´egia de computa¸c˜ao onde se divide o programa em processos a serem executados por diferentes processadores.
Sistema Paralelo: Combina¸c˜ao de uma arquitetura paralela e um algoritmo paralelo im-plementado sobre ela (KUMAR; GUPTA, 1994).