Descrevendo o Microcontrolador FemtoJava Pipeline em...
-
Upload
trinhthuan -
Category
Documents
-
view
216 -
download
0
Transcript of Descrevendo o Microcontrolador FemtoJava Pipeline em...
Descrevendo o Microcontrolador FemtoJava Pipeline em ArchC
UFRGSPrograma de Pósgraduação em Computação
CMP 237 Arquitetura e Organização de ProcessadoresProf. Dr. Flávio Rech Wagner¹
Aluno: Dieison Antonello Deprá²
Paulo Roberto Miranda Meirelles³{flavio¹,dadepra²,prmmeirelles³}@inf.ufrgs.br
Outline
● Objetivos● ArchC● FemtoJava● Metodologia● Análise FemtoJava + ArchC
– Barreira de Registradores– Detalhamento Registradores– Comportamente Pipeline + Estados
● Implementação FemtoJava + Archc● Estatísticas, Considerações, OBS, Sugestões ...
ArchC
● ADL “open source”– LSC – UNICAMP– Outras ADLs: MIMOLA, UDL/I, EXPRESSION, LISA, ISDL, nML, AIDL
● Baseada no SystemC– SystemC é uma linguagem de descrição de hardware
● Exploração de novas arquiteturas● Gerar novas ferramentas de softwares
– Assemblers, simuladores ou backends
ArchC
● Capacidade de descrição do conjunto de instruções● Monociclo● Multiciclo● Pipeline● Hierarquia de memória● Emulação de sistema operacional● Simulação compilada ...
ArchC
● Descrição dos elementos da arquitetura – Lista recursos arquiteturais como os módulos do
armazenamento e estrutura pipeline– AC_ARCH:
● arquiteturaProcessador.ac● Descrição do Conjunto de Instruções
– nomes, formatos, tamanhos, informação de decodificação para cada instrução;
– AC_ISA: ● conjunto_formato_instrucoesProcessador_isa.ac● comportamento_instrucoesProcessadorisa.cpp
ArchC
● aceita duas funções de comportamento – independentes da
arquitetura do projeto
– ac_behavior (begin)– ac_behavior (end)
FemtoJava
● Unidade de processamento baseada em arquitetura de pilha– Banco de Registradores
● Pilha e registradores de controle● Memórias RAM e ROM
– Fisicamente distintas e utilizam espaços de endereçamento separados
– Configurável com a aplicação– Não tem Cache
● Uso da técnica de forwarding
FemtoJava
● Implementa um subconjunto de instruções da JVM– Consistente com a especificação da JVM
● Registradores para armazenar elementos da pilha– ganho de desempenho– redução na área ocupada em FPGA– processamento realizado simultaneamente aos acessos à
memória● FPGA como o componente alvo para síntese
Metodologia
● ArchC– Estudo Teórico
● Manual, artigos e monografias– Prática
● Instalação e testes● Ferramentas geradas● Simulações (Mips, SparcV8)
● FemtoJava– Dissertações: Ito, Beck e Moraes– Manual:
● Sashimi (gerando VHDL) e CACOPS (.C e mifs)– Esquemáticos
Metodologia
● Implementação– Fluxo de projeto no ArchC
● Top Down
Descrição Ac_ISA
Descrição Ac_ARCH
.ac isa.cppisa.ac
PréProcessador ArchC
Modelo SystemC
GCC
Especificação Executável
Especificação
Metodologia
● Implementação: – Tamanhos: Palavra e Fetch– Mem. RAM e ROM– Registradores (tamanho)– Estágios– Barreira de Registradores– Instruções
● Conjunto, formatos, tipos, compostamentos (geral, tipos e específico)
– Pilha ...– Descrição Funcional
PicoJava
Esquemático 2
Esquemático 1 Desc. CACOPS
VHDL (Sashimi)
Descrição ArchC
Detalhes dos Registradores FemtoJava
● “Principais”– IMAR:
● atualizado no primeiro estágio indica endereço de leitura da ROM– SP:
● atualizado o 3 estágio, é o ponteiro da pilha– VARS:
● atualizado no 3 estágio, é o ponteiro das variáveis locais– RESULT_EXEC:
● atualizado no 4 estágio, indica o resultado da instrução– PC: atualizado no 4 estágio
V1V2
V0
FRAMEVARS
S1S0
S2
Inst3Inst2
Inst0Inst1
Dados3Dados2
Dados0Dados1
RAM ROMRB
PC
SP
IMAR
CONST POOL
VARS
CPU FJFila
Registradores e Memórias
V1V2
V0
FRAMEVARS
S1S0
S2
Inst3Inst2
Inst0Inst1
Dados3Dados2
Dados0Dados1
RAM ROMRB
PC
SP
IMAR
CONST POOL
VARS
CPU FJFila
Registradores e Memórias
V1V2
V0
FRAMEVARS
S1S0
S2
Inst3Inst2
Inst0Inst1
Dados3Dados2
Dados0Dados1
RAM ROMRB
PC
SP
IMAR
CONST POOL
VARS
CPU FJFila
Registradores e Memórias
V1V2
V0
FRAMEVARS
S1S0
S2
Inst3Inst2
Inst0Inst1
Dados3Dados2
Dados0Dados1
RAM ROMRB
PC
SP
IMAR
CONST POOL
VARS
CPU FJFila
Registradores e Memórias
V1V2
V0
FRAMEVARS
S1S0
S2
Inst3Inst2
Inst0Inst1
Dados3Dados2
Dados0Dados1
RAM ROMRB
PC
SP
IMAR
CONST POOL
VARS
CPU FJFila
Registradores e Memórias
V1V2
V0
FRAMEVARS
S1S0
S2
Inst3Inst2
Inst0Inst1
Dados3Dados2
Dados0Dados1
RAM ROMRB
PC
SP
IMAR
CONST POOL
VARS
CPU FJFila
Registradores e Memórias
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WBOF EX WB
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WB
ST4
ST5
ST3
ST1 ST2 SleepingST0
INT=0
immed = ROM[pc]; pc++; RAM[sp] = b; sp; immed = número de var
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WB
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WBOF EX WB
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WBOF EX WBOF EX WB
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WB
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WB
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WB
ST4
ST5ST6
ST11
ST9
ST8
ST3
ST7
ST1 ST2 SleepingST0
ST10
INT=0
frm = sp + 2; RAM[sp] = b; salvou vars e novo frm
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WB
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WB
ST4
ST5ST6
ST11
ST12
ST9
ST8
ST3
ST7
ST1 ST2 SleepingST0
ST10
ST13
INT=0
immed = ROM[pc];pc++; vars = frm + immed; novo vars
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WB
iload
iadd
iand
invokestatic
IF ID OF EX WB
IF ID OF EX WB
IF ID OF EX WB
IF
ID OF EX WB
OF EX WBOF EX WB
OF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WBOF EX WB
ST4
ST5ST6
ST11
ST12
ST9
ST8
ST3
ST7
ST1 ST2 SleepingST0
opcode=op_sleep
ST10
ST13
ST14
cycles_ctrl=11
cycles_ctrl=10cycles_ctrl=01
INT=0
Abordagem FJ Pipeline
● Mecanismo de controle de separação da memória RAM (dados) e memória ROM (instruções ou programa)– modificando os arquivos gerados pelo ArchC (systemC)
● rotina de carga de memória de dados antes do início da inicialização● Mecanismo de gerenciamento de pilha não documentado
na especificação do ArchC– implementação de um banco de registradores apontado por um
registrador SP (Stack Pointer) que marca o topo da pilha– sem controle de estouro de pilha
Abordagem FJ Pipeline
● FemtoJava possuir tamanaho de palavra e tamanho de instrução variável– Incremento do PC
● sempre dado em relação ao tamanho da palavra– Analisando o código systemC descobriuse dois recursos não
documentados da linguagem ArchC● AC_PC += AC_INSTR_SIZE/AC_FETCH_SIZE.
Abordagem FJ Funcional (monociclo)
● Imlementação de todos os opcodes definidos pela arquitetura (com exceção do tratamento de portas)– simulador em systemC gerado plea ArchC– simulador executável– geração de um montador assembly
● Testes de algoritmos (CACOPS e Sashimi)– arquivos ram.mif e rom.mif– carga do arquivo de inicialização da memória de dados– alteração da descrição systemC
Abordagem FJ Funcional (monociclo)
● Avaliação das funcionalidades– programa não estava começando a execução no endereço
inicial correto– montador assembly não estava gerando código adequado– arquivos de entrada para a simulação
● ram.mif e rom.mif● Programa ficava em loop infinito/Falhas de seguimentação
– falhas na atribuição de valores aos registradores de controle da pilha e PC
● getStatic, putStatic e inovokStatic (solucionados)● continua em loop infinito
Estatísticas da Codificação Pipeline
● femtojava.ac = 52 linhas● femtojava_isa.ac = 287 linhas● femtojava_isa.cpp = 3423 linhas● femtojava_syscall.cpp = 132 linhas● femtojava_utils.h = 293 linhas● 63 instruções descritas
– IF =85%; ID =85%; – OF =50%; EX=70% e WB=60%
Estatísticas da Codificação Funcional
● femtojava.ac = 30 linhas● femtojava_isa.ac = 277 linhas● femtojava_isa.cpp = 1667 linhas● femtojava_syscall.cpp = 86 linhas● femtojava_utils.h = 305 linhas
Estatísticas Geradas pelo ArchC
● Nº instruções executadas– 59k/s (Loop: FJ Funcional)
● Nº execução de cada instrução● Tempo total de simulação
– máquina local: (final inicial)● Tempo estimado de execução
– Base de acesso o hardware● 20 ns x chamadas (recursos)
– reconfigurável ● Dump dos dispositivos de armazenamento
Outras características do ArchC
● Não faz análise de potência– CACOPS (sim)
● Compilado– CACOPS (Interpretado)
● Gera SystemC > VHDL
Consideração
● Documentação do FemtoJava:– Incompleta– Discrepância entre:
● Esquemáticos, VHDL e descrição do CACOPS● ArchC não descreve (sem exemplos) alguns recursos
avançados– Recursos específico de Pilha
● Resolvido com RB e SP– Memória Principal separadas entre dados e programas– Portas de comunicação com periféricos
Consideração
● OBSs sobre FemtoJava– Memórias de dados préinicializada
● Shashime em tempo de compilação● ArchC não tem docuementação disso
– Arquitetura Pipeline do FJ sem separação clara de estágios● É Pipeline, porém trabalha, para cada instrução, com núm.
Variável de ciclo no mesmo estágio– Execução e Acesso a memória no mesmo estágio
● Não tem bloco de acesso à memória no esquemático do FJ
Consideração
● Cálculo do Incremento do PC:– No esquemático é na Escrita de Resultados
● WB = 5º estágio– Fisicamente é na Execução
● EX = 4º estágio● Barreira de Registradores:
– Saber qual é barreira pela descrição do CACOPS– Mas saber o tamanho da barreira pelo VHDL
Sugestão de Trabalhos
● ArchC– Descrição de recursos funcionais
● ex.: somador vinculado ao estágio do pipeline● setar sinais de controle
● FemtoJava– Documentação e esquemáticos em conformidade com os
códigos VHDL.● Facilitaria a utilização didática● Diminuiria o tempo para a curva de aprendizado● Menos tempo despendido com análise da arquitetura = mais tempo
para produção científica;
Contribuições
● Aproximadamente 75% da descrição do FemtoJava Pipeline em ArchC– Adaptações e resolução de problema encontrados
● Abordagem didática para descrição de um modelo FJ– Funcional (monociclo)
● Funcionalidade não especificadas no ArchC encontradas
● Pontos de melhoria para esquemáticos e especificação para o FemtoJava
Referências
(1) ITO, S. A.; CARRO, L.; JACOBI, R. P. Making Java Work for Microcontroller Applications. IEEE Design & Test of Computers, [S.l.], v.18, n.5, p.100110, Sep./Oct. 2001.
(2) BECK, Antonio Carlos S. Uso da Técnica VLIW para Aumento de Performance e Redução do Consumo de Potência em Sistemas Embarcados Baseados em Java. 2004. 118 f. Dissertação de Mestrado (Programa de PósGraduação em Ciência da Computação) UFRGS, Porto Alegre, maio de 2004.
(3) MORAES, Marcelos de Souza. STEP: Planejamento, Geração e Seleção de AutoTeste OnLine para Processadores Embarcados. 2006. 157 f. Dissertação de Mestrado (Programa de PósGraduação em Ciência da Computação) UFRGS, Porto Alegre, 2006.
(4) VENNERS, B. Inside the Java Virtual Machine. New York, USA: McGrawHill, 1998.(5) Sashimi Manual do usuário: Versão 0.9. UFRGS, Janeiro de 2006.(6) Rigo, Azevedo and Araujo,The ArchC Archicteture Description Language
Technical Report Intitute of Computation, State University of Campinas, Brazil, June 2003.
(7) Rigo, Azevedo and Araujo The ArchC Language Reference Manual, vs 1.5, June 2005.
Referências
(8)SystemC Community. Disponível em http://www.systemc.org.(9)Martin, G. SystemC and the future of design languages: opportunities for users and research. Integrated Circuits and Systems Design, 2003. SBCCI 2003. Proceedings. 16th Symposium on.(10)Daniel Carlos Casarotto, Jose Otavio Carlomagno Filho. Geração Automática de Montadores a Partir de ArchC: Um Estudo de Caso com o PowerPC 405. 2004. Trabalho de Conclusao de Curso em Barachel em Ciência da Computação, UFSC.(11)Felipe Camilo e Silva Martins,Wesley Tambani da Silva. A linguagem de descrição de arquitetura ArchC. Unicamp ...(12)Alexandro Baldassin , Paulo C. Centoducatte. Geracao Automatica de Montadores para Modelos de Arquiteturas Escritos em ArchC. Unicamp ...(13)http://www.gnu.org/software/bison/. The Bison Parser Generator.(14)http://www.gnu.org/software/flex/. The Flex Lexical Analyser Generator.