Post on 06-Nov-2020
Desenvolvimento de Sistemas
Reconfiguráveis utilizando Handel-C
Por:Bruno PimentelJoel Arrais
Orientação:
Valery Sklyarov
23 de Abril de 2004
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 2
Field-Programmable Gate Array(FPGA)
- Reconfigurabilidade
- Combinar as vantagens da programação em software com o nível de performance do hardware dedicado
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 3
RC200Principais características:
Xilinx Virtex II FPGA-XC2V1000-4
Memória-2*4Mbytes ZBT SRAM
Ethernet-10/100 MAC
Vídeo-Vídeo composto (in/out)-S-Video (in/out)-VGA (out)-Camera (in)
Áudio
Bluetooth
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 4
Linguagem Handel-C
• Linguagem de alto nível baseada no ISO/ ANSI-C que permite o desenvolvimento de Sistemas Reconfiguráveis.
• Principais diferenças:– Flexibilidade no comprimento das variáveis;– Execução de código em paralelo;– Utilização de canais.
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 5
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 6
Vantagens do Handel-C• Elimina alguma da complexidade da
implementação em Hardware;• Menor custo de desenvolvimento;
• Portabilidade do código;• Facilidade na utilização de periféricos;• Garantias de tempos de execução;• Possibilidade de se utilizar diferentes domínios
de relógio.
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 7
Exemplo de Handel-C
a=1 b=2
canal=b
c=canal
a=0
unsigned int 1 a;unsigned int 2 b,c;
par{
a = 1;
canal ? C;
seq{
b=2;canal ! b;
}}a = 0;
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 8
• O código Handel-C éeditado no DK2.
O fluxo de trabalho
DK
ISE
FTU
Handel-C
EDIF
Bit stream
• O bit stream é transferido para a FPGA sendo esta reconfigurada
• No ISE é criado o bit stream a partir do ficheiro EDIF.
• O código é compilado pelo DK2 e é criado o ficheiro EDIF
FPGA
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 9
Plataform Developer’s Kit for DK (PDK)
RC200
Plataform Support Library
(PSL)
Programa em Handel-C
• Memória• Rato/Teclado• LEDs e Seven Segmentdisplays• Video in/out• SmartMedia• Switches e Botões• Audio in/out• Ethernet
Biblioteca que permite facilitar o acesso aos periféricos.
PDK
Dependente da plataforma.
RC100
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 10
Plataform Developer’s Kit for DK (PDK)
RC200
Plataform Support Library (PSL)
RC100
Plataform Abstration
Layer (PAL)
Programa em Handel-C• Memória• Rato/Teclado• LEDs e Seven Segmentdisplays• Video in/out• SmartMedia• Switches e Botões• Audio in/out• Ethernet
PDK
Outra
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 11
Demonstração
Exemplo simples em Handel-C
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 12
• Utilização de FPGA como co-processador
Especificação do projecto
>> Velocidade de processamento <<
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 13
Problema de SAT
1 0 - - - - - - -2 - 1 - - - - - -3 - - 0 - - - - -4 - - - 1 - - - -5 - - - - 0 - - -6 - - - - - 1 - -7 - - - - - - 0 -8 - 1 - - - - - -
A B C D E F G H
Encontrar um vector que seja ortogonal com todas as linhas da matriz
Vector: 1 0 1 0 1 0 1 -
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 14
Especificação do projecto
• Transferência de dados como bottleneckDuas abordagens:– Dados genéricos comprimidos/descomprimidos– Dados em formato especifico compactado
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 15
Primeira Abordagem
SAT solver
Dados originais
Compressão
Dados comprimidos
Resultados
Dados originais
Descompressão
Dados comprimidos
Resultados
Porta paralela ou Ethernet
RC200
PC Anfitrião
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 16
Segunda Abordagem
SAT solver
Resultados Resultados
Matriz noformato CS3M
Matriz noformato CS3M
Porta paralela ou Ethernet
RC200PC Anfitrião
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 17
Algoritmo de Compressão / Descompressão
• Características tidas em conta:– Eficiência;– Simplicidade;– Implementabilidade em hardware
de recursos limitados.
• Algoritmo adoptado:– Huffman (versão adaptativa).
• Adaptações incorporadas:– Mecanismo de remoção da
redundância em repetições consecutivas;
– Mecanismo limitador do tamanho da codificação dos símbolos.
01000011 01000010 01000011 010001000100010001000100B B CCCA
Ficheiro Original
01000010 01000011 01000100
A B C
1
Sequência de bits original
Caracter representado
Nº. de ocorrências não consecutivas 2 1
Tabela de Frequência
Árvore de Ordenação
C1
B2
A1
Tamanho da maior sequência de ocorrências consecutivas
11 3
B2
Árvore de Huffman:
Tabela de Codificação:
B B C C C
x 3C
A
1 00 1 01 11
Dados Comprimidos:
A1
C1
AC2
A1
C1
AC2
B2
ABC3
0
0
1
1
B2
A1
C1
AC2
a)
b)
c) d)
e) f)
g)
h)
201C
01B
000A
Nº de bitsp/ repet.CódigoCaracter
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 18
Compressão (desenvolvida em C++)
• Análise dos dados originais
• Geração da árvore de Huffman
• Exportação da árvore de Huffman
• Tradução e exportação dos dados comprimidos<Bit>::=0|1
<Simbolo>::=<Bit><Bit><Bit><Bit><Bit><Bit><Bit><Bit>
<TamanhoRepeticao>::=<Bit><Bit>
<Folha>::=<TamanhoRepetição><Simbolo>
<Ramo>::=0<Folha>|1<Ramo><Ramo>
<ArvoreHuffman>::=<Ramo>
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 19
Descompressão (desenvolvida em Handel-C)
• Importação da árvore de Huffman e geração da tabela de codificação;
• Reconstituição efectiva dos dados originais, tendo em conta:– Os símbolos explícitos;– Repetições consecutivas.
Parser daÁrvore deHuffman
Tradutor Código/Caracter
Ficheiro Descomprimido
Ficheiro Comprimido
Tabela deCodificação
Gestor de Leitura doFicheiro Comprimido
Gestor de Escrita noFicheiro Descomprimido
a) b)
c)
d)
g)
e)
h)
f)
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 20
Recursividade
• Adopção do modelo RHFSM(Recursive Hieraquichal Finite State Machine)[Sklyarov, 2004].
• Criação de primitivas para gestão das variáveis internas ao suporte do modelo:– HFSM_init();– HFSM_go_to();– HFSM_jump_to();– HFSM_end_module();– HFSM_state();– HFSM_done();
Stack deMódulos
Stack deEstados
Profundidade
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 21
Resultados das experiências relativas àCompressão/Descompressão de Huffman
24.50723.0248721.4830.07719.260256 × 1500
16.50615.3802301.1260.08712.940256 × 1000
4.0623.715600.3470.1053.310256 × 256
4.2603.8002200.4600.1393.310256 × 500
1.0600.943200.1170.130
12 %
0.903128 × 128
TTaC + TD
(ms)TD
(ms)TC
(ms)TTaC
(ms)Rácio
Recursosda FPGAutilizados
TT
(ms)Dimensões da Matriz(nº colunas × nº linhas)
TT – Tempo médio de Transmissão sem CompressãoTTaC – Tempo médio de Transmissão após CompressãoTC – Tempo médio de Compressão (no PC anfitrião)TD – Tempo médio de Descompressão (na placa RC200)
Dados utilizados: Matrizes ternárias no formato convencional
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 22
• Problemas da primeira abordagem:– Tempos globais de transferência são comprometedores;– Matrizes descomprimidas, no formato convencional,
implicam armazenamento considerável, na FPGA.
• Abordagem alternativa– Assume matrizes convertidas para SAT3;– Utiliza formato comprimido sem necessitar de
descompressão;– Permite operar sobre matrizes de maiores dimensões.
Mudança de Abordagem
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 23
Implementação da solução
GestorEthernet
SAT3Solver
Vector solução
RC200
FPGA
Controlador de Ethernet
EthernetPC Anfitrião
Linhasda Matriz
Block RAM
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 24
Formato Comprimido para Matrizes SAT3
NIA Índice 1 V 1 Índice 3 V 3Índice 2 V 2
2 bits 8 bits 1 bit 8 bits 1 bit 8 bits 1 bit
MUX 1
Más
cara
de
Col
unas
MUX 2 MUX 3
Necessita de 29 bits para cada linha de matrizes com até 256 colunas.
Máscara das colunas não dont-care activas da linha actual
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 25
Acesso às linhas da matriz
Máscara das colunas não dont-care activas
Índices das colunas não dont-care
Valores das colunas não dont-care
Linha ortogonal
Colunas activas todas a dont-care
Uma única coluna não dont-careÍndice da coluna não dont-careValor da coluna não dont-care
CircuitoCombinatório
Vector Solução Intermédia
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 26
Resultados das experiências relativas ao SAT3 Solver
Tempo médio deobtenção do resultado (s)
0.2640.0101454 %256 × 1500
0.1950.0070954 %256 × 1000
0.1490.0035754 %256 × 256
0.1270.0043830 %128 × 500
0.1040.0008730 %128 × 128
MatrizesIrresolúveis
MatrizesResolúveis
Recursos daFPGA
utilizados
Dimensões da Matriz(nº colunas × nº linhas)
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 27
Conclusões
• As FPGA’s conciliam a reconfigurabilidade típica em software e a performance que o hardwarededicado apresenta.
• O Handel-C permite aumentar a abstracção, permitindo, no entanto, um controlo de baixo nível e boa performance.
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 28
Conclusões
• Transmissão via Ethernet permite grande rapidez de transmissão com baixos custos.
• Foi implementada a versão adaptativa do algortimo de compressão/descompressão de Huffman.
• Para implementar a recursividade, adoptou-se o modelo RHFSM, para o qual, se criou uma biblioteca de primitivas de suporte.
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 29
Conclusões
• Utilizando um formato comprimido específico para matrizes SAT3 que pode ser interpretado sem descompressão, torna-se possível:– Um factor de compressão significativamente superior;– Albergar matrizes de maior tamanho na FPGA.
• A percentagem de recursos da FPGA utilizados pelo SAT3 Solver para 256 colunas permite prever a possibilidade de optimização para 512.
Desenvolvimento de Sistemas Reconfiguráveis utilizando Handel-C 30
Referências• [1] “RC200 Hardware and Instalation Manual”, Celoxica, 2003.• [2] “RC200 Platform Support Library Reference Manual”, Celoxica, 2003.• [3] “Handel-C Language Reference Manual”, Celoxica, 2002.• [4] “Archive compression tests”, [Online, em Janeiro de 2004]:
http://compression.ca/.• [5] “Lossless Data Compression”, [Online, em Janeiro de 2003]: http://www.data-
compression.com/lossless.html#huff.• [6] V. Sklyarov, “FPGA-based Implementation of Recursive Algorithms”, Elsevier
Journal Microprocessors and Microsystems, Abril, 2004.• [7]. “BNF Notation”, [Online, em Janeiro de 2003]: http://cui.unige.ch/db-
research/Enseignement/analyseinfo/AboutBNF.html.• [8] V. Sklyarov, “Hierarchical Finite-State Machines and Their Use for Digital Control”,
IEEE Transactions on VLSI Systems, 1999, Vol. 7, No 2, pp. 222-228.• [9] Web Course Tools para a disciplina de Computação Reconfigurável leccionada na
Universidade de Aveiro, [Online]: http://webct.ua.pt.