Este documento descreve um sistema para geração automática de autómatos celulares em FPGA. O sistema permite ao utilizador especificar as características e regras de um autómato celular que é então implementado em hardware reconfigurável. Os resultados demonstram um speed-up significativo em relação à implementação em software, atingindo um paralelismo de 100%. Futuramente, pretende-se melhorar o mapeamento físico para aumentar o desempenho.
Geração Automática de Autómatos Celulares para FPGA
1. Geração Automática de Autómatos Celulares
para FPGA
Mestrando: André Costa Lima
Orientador: Prof. João Canas Ferreira
Dissertação de mestrado
Engenharia Eletrotécnica
e de Computadores
10 de Outubro de 2012
2. 10 de Outubro de 2012 2
Conteúdo
Autómatos celulares (AC)
• Conceito
• Origem, factos e aplicações
Motivação e objetivo
O sistema
• Resumo de funcionalidades
• Arquitetura de hardware
• Módulos constituintes
• Detalhes e funcionamento
• Células: arquitetura base e especificação da regra de transição
• Software de suporte
• Visão geral
• Gestão interna e interação com o utilizador
Resultados de implementação
• Lattice gases
• Regras 30 e 110 de Wolfram
• Greenberg-hastings
• Jogo da Vida
• HW vs. SW: speed-up
Conclusão e trabalho futuro
Demonstração
3. 10 de Outubro de 2012 3
Autómatos celulares: conceito
• Organização em células interligadas entre si
• Estrutura em 1D (linha), 2D (plano) ou 3D (cubo)
• Dimensão finita
• Condições fronteira – nula ou contínua
• Cada célula tem um estado: contínuo ou discreto
• Evolução temporal discreta – um instante traduz-se
numa iteração
• Atualização do estado no mesmo instante (sincronismo)
para toda a estrutura (paralelismo)
• O estado seguinte:
• Depende do estado atual das células de uma
vizinhança local (Moore, von Neumann)
• É determinado por uma função matemática ou
lógica (regra de transição) – operações a nível
local
• Existem propriedades, variantes e outras características
4. 10 de Outubro de 2012 4
Autómatos celulares: origem, factos e aplicações
• Conceito introduzido por John von Neumann
(anos 40) para modelar sistemas de auto-
reprodução
• Proposta original de Stanislaw Ulam de um
modelo discreto
• Em 1970, John Conway introduziu o “Jogo da
Vida”
• Edward Fredkin propôs autómatos celulares
de segunda ordem e estudou autómatos
celulares reversíveis
• Nos anos 80, Norman Margolus e Tommaso
Toffoli desenvolveram o CAM-6 (Cellular
Automata Machine) – sistema de hardware
dedicado
• Desde os anos 80, Stephen Wolfram estudou
e escreveu sobre autómatos celulares
unidimensionais (“A New Kind of Science”)
A versatilidade e poder
computacional, permite a
aplicação em diversas áreas:
• Música
• Geração de números aleatórios
(criptografia)
• Processamento de imagem
• Biologia
• Processos reação-difusão
• Simulação de tráfego
• Planeamento urbano
• Física
• Telecomunicações (códigos
corretores de erros)
• …
5. 10 de Outubro de 2012 5
Motivação e objetivo
Desenvolver um sistema de geração automática de autómatos celulares:
• O autómato é implementado em hardware reconfigurável (FPGA)
• Características e regras especificadas pelo utilizador
• Integração em templates Verilog
• Uma especificação traduz-se num bitstream
• Interação com uma aplicação de software (Java) de suporte
• Especificação
• FPGA Design Flow
• Controlo da operação
• Inicialização (estado inicial)
• Visualização (resultados)
• Para o utilizador: simples e intuitivo
Porquê FPGA?
Os autómatos celulares
• São maciçamente paralelos
• Sua natureza é discreta
• Mapeamento natural na arquitetura
de uma FPGA
Candidato ideal para
implementação nestas
plataformas!
6. 10 de Outubro de 2012 6
O sistema: resumo de funcionalidades
Especificação de características
• Vizinhança local – Moore ou von Neumann
• Condição fronteira – nula ou contínua
• Número de bits por célula – resolução de estado
• Dimensões – 1D ou 2D
Especificação das regras
• Regra de transição – operações lógicas e/ou aritméticas
• Heterogeneidade – em 2D, cada linha de células pode ter
uma regra diferente (simulação paralela de AC 1D)
Controlo da operação
• “Período” de simulação – número de iterações
• Modos de simulação – passo a passo ou run-through
7. 10 de Outubro de 2012 7
O sistema: arquitetura de hardware
• Máquina de estados para controlo geral
• Registo de sinais de controlo de operação no BRC
• Duas memórias BRAM (dual-port)
• Entrada e saída de dados
• Dois shift-registers para conversão de dados:
• Parallel-In Serial-Out (PISO)
• Serial-In Parallel-Out (SIPO)
• Controlo de fronteira (transferência e partilha de estado)
• Comunicação série com o PC (RS-232)
• Processador Microblaze:
• Controlo da transferência de dados entre HW e SW
• Implementa o protocolo de comunicação
• Processamento adicional – reprodução sonora
• Transferência de dados pelo barramento PLB (32-bit)
8. 10 de Outubro de 2012 8
O sistema: arquitetura de hardware
• Memórias enderaçadas ao byte
• Máquina de estados
• Sinais de controlo registados no BRC
• Para cada shift-register
• Cada andar tem 8 bits e armazena os bits de
estado de uma linha de células do AC
• O número de andares é dado por 𝒃 × (𝒄 𝟖)
• Restrição concetual para as dimensões
do AC
• O AC é carregado/lido linha a linha de/para memória
• Para cada linha que é lida
• Esta é guardada em memória, byte a byte
• O AC é deslocado de cima para baixo
• Após a leitura de todas as linhas, o AC mantém o estado
anterior
• As memórias são acedidas pelo MicroBlaze para
leitura e escrita
Uma iteração por ciclo de relógio!
9. 10 de Outubro de 2012 9
Células: arquitetura e especificação da regra
“row_𝒙.v” – template de lógicaTemplate de estrutura
10. 10 de Outubro de 2012 10
O sistema: software de suporte
1. Especificação das
características
2. Representação e
manipulação gráfica
3. Controlo de operação
4. Especificação das
regras
5. Informação de estado e
configuração da
aplicação
6. Informação de estado e
comunicação com o
hardware
• Gestão de bitstreams (execução de scripts)
• Gestão da arquitetura celular (uso dos templates)
• Gestão de paletes de cor
• Configuração da comunicação série
11. 10 de Outubro de 2012 11
O sistema: software de suporte
Configuração da aplicação
• Apenas os parâmetros da comunicação série
• Baudrate e porta COM
Especificação do AC
• Características – simples!
• Regras – textualmente
• Tags próprias para referenciar os bits das células, mas…
Abstração do utilizador
• Requer conhecimentos básicos de Verilog – especificação das regras
• Conversão automática de tags para os barramentos das células (templates de célula)
• Síntese e implementação dos circuitos – processo automático e transparente
• Não requer conhecimentos sobre fluxo de projeto para FPGA
• Execução de scripts (baseados em templates) em plano de fundo (linha de comandos)
• Geração de bitstream
• Ferramentas – XST, NGDBuild, MAP, PAR, (TRACE) e BitGen
• Download de bitstream
• Ferramentas – iMPACT
• Gestão automática de ficheiros de bitstream – diretório próprio
proj hw bit dir
.bit 1
.bit 2
.bit n
.bit.v
tmplte
script
.v
12. 10 de Outubro de 2012 12
Resultados: Lattice gases (2D)
• 4 bits/célula
• Vizinhança de von Neumann
• Fronteira contínua
• Aplicação: dinâmica de fluídos
Spartan-6 XC6SLX45 @ 66 Mhz
LUT – 27.288
FF – 56.576
13. 10 de Outubro de 2012 13
Resultados (1D): regras 30 (esq.) e 110 (dir.)
14. 10 de Outubro de 2012 14
Resultados: Greenberg-Hastings (2D)
• 4 bits/célula
• Vizinhança de Moore
• Fronteira contínua
• Aplicação: processos de reação-difusão
15. 10 de Outubro de 2012 15
Resultados: Jogo da Vida (2D)
• 1 bit/célula
• Vizinhança de Moore
• Fronteira contínua
Para fronteira nula
• Tempo de implementação superior
• Maior percentagem de LUTs
• Igual número de FFs
16. 10 de Outubro de 2012 16
HW vs. SW: speed-up – Jogo da Vida
Dimensões Iterações Software Hardware Speed-up
1E+05 0,0630 0,0015 42
1E+06 0,5940 0,015 40
1E+07 5,9840 0,15 40
1E+08 59,1720 1,5 39
1E+09 590,7030 15 39
1E+05 0,1090 0,0015 73
1E+06 1,1250 0,015 75
1E+07 11,0630 0,15 74
1E+08 110,8370 1,5 74
1E+09 1103,5000 15 74
1E+05 0,2660 0,0015 177
1E+06 2,5000 0,015 167
1E+07 24,9400 0,15 166
1E+08 251,8020 1,5 168
1E+09 2490,9310 15 166
32x32
40x40
56x56
Tempos de simulação (segundos)
• Em hardware, o tempo de simulação 𝑡 𝑠 não depende das
Características
Regras
Dimensões
Só depende da frequência do relógio 𝒇 𝑪𝑳𝑲 e do número de iterações 𝑰
𝑡 𝑠 = 𝐼
𝑓𝐶𝐿𝐾
Software
• XLife (open-source)
• Mantido até à data
Máquina de benchmark
• Intel Core 2 Quad Q9400 @ 2.66 GHz
• RAM – 4 GB
• L1 I/D Cache – 4 x 32 KB
• L2 Cache – 2 x 3 MB
• 56x56 ≈ 3 KB < 32 KB
17. 10 de Outubro de 2012 17
Conclusão e trabalho futuro
Objetivos inicialmente propostos foram cumpridos
O paralelismo efetivo da implementação é de 100%! – uma iteração por ciclo de relógio
Ainda assim…
• A implementação automática não permite controlo do mapeamento do AC
Consequência…
• Não é garantida a proximidade espacial física das células
• A distribuição de células nos CLBs e das interligações não é uniforme
• O mapeamento físico não é orientado à arquitetura da FPGA
• Redução do grau de compactação do AC e do desempenho
No futuro…
• Mapeamento manual das células nos CLBs e LUTs de forma a
• Melhorar o desempenho
• Maximizar a área de utilização – possivelmente, maiores dimensões do AC
• Procurar atingir o mesmo grau de paralelismo efetivo