Descrevendo o Microcontrolador FemtoJava Pipeline em ArchC

Documentos relacionados
Microcontrolador FemtoJava Pipeline (Low Power)

FPGA & VHDL. Tutorial

Um Exemplo de Nível ISA: o IJVM. Pilhas. Pilhas. O Modelo de Memória da IJVM. Pilhas de Operandos. Nível ISA

FPGA & VHDL. Tutorial Aula 1. Computação Digital

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

Introdução à Computação: Máquinas Multiníveis

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

SSC510 Arquitetura de Computadores 1ª AULA

Capítulo 4 Nível da microarquitetura

Métodos de implementação de linguagens. Kellen Pinagé

Gerenciamento de memória

SEL-0415 Introdução à Organização de Computadores Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira

Arquitetura e Organização de Computadores

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 1 0 SEM/05 Teste 1 Unidade I DURAÇÃO: 50 MINUTOS

É um sinal elétrico periódico que é utilizado para cadenciar todas as operações realizadas pelo processador.

Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP. Aula 1 Introdução à Computação

AVALIAÇÃO DE DESEMPENHO EM UMA NOC DE UMA APLICAÇÃO DISTRIBUÍDA UTILIZANDO UM MIDDLEWARE JAVA

Introdução à Computação

Sistemas Operacionais I

Arquitetura e organização de computadores Uma visão geral

Organização de Sistemas de Computadores

O estudo da arquitectura de computadores efectua-se com recurso à Abstracção

Introdução. (Aula 2) Organização Estruturada de Computadores

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

14/3/2016. Prof. Evandro L. L. Rodrigues

Algoritmos Computacionais

Microprocessadores. São máquinas elétricas onde podemos armazenar instruções lógicas, aritméticas e de tomada de decisão;

Arquitetura de Computadores

INE5421 LINGUAGENS FORMAIS E COMPILADORES

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Aula Introdutória. Arquitetura e Organização de Computadores

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE DE CONTROLE E A INTERPRETAÇÃO DE INSTRUÇÕES. Prof. Dr. Daniel Caetano

CPU. Funções: Componentes: Processamento; Controle. UC (Unidade de Controle); Registradores; ALU s, FPU s etc. Arquitetura de Computadores 3

SSC0112 Organização de Computadores Digitais I

Introdução à Computação: Arquitetura von Neumann

Disciplina de. Organização de Computadores Digitais

PROGRAMAÇÃO I. Introdução

Arquitetura e Organização de Computadores

Compiladores I Prof. Ricardo Santos (cap 1)

Processadores para computação de alto desempenho

Arquitetura de Computadores. Revisão Volnys Bernal. Agenda. Revisão: Arquitetura de Computadores. Sobre esta apresentação

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE DE CONTROLE E A INTERPRETAÇÃO DE INSTRUÇÕES. Prof. Dr. Daniel Caetano

Arquitetura de Sistemas Digitais

Sistemas Operacionais Estrutura do Sistema Operacional. Arquiteturas do Kernel

2º Estudo Dirigido CAP 3

Aula 2 - Programação de Computadores - CI208 1/21

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

Organização e Arquitetura de Computadores I

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

FERRAMENTA DE PROFILING PARA PROCESSADORES SCHNEIDER, R. C. 1, NEVES, B. S. 1

Organização e Arquitetura de Computadores I

Aula 06 - Máquina Multinível e Von Neumann

Exercícios resolvidos (aula de 4 de Maio) Resolução:

Montador (assembler)

EA869 Pipeline. Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof.

Introdução aos Sistemas Operacionais

Sistemas Operacionais

Sumário. CAPÍTULO 1 Introdução 35. CAPÍTULO 2 Representação de Dados em Sistemas de Computação 73

Procedimentos. Sistemas de Computação

Capítulo 8: Memória Principal. Operating System Concepts 8 th Edition

Figura 01 Programa e Processo

sumário 1 bases numéricas 1 2 sistemas de numeração em computação introdução representação de números... 3

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

Projeto Lógico de Computadores. Profa. MSc. Carolina Melo Santana

Hardware e Software. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Sistemas Operacionais

Introdução ao Estudo dos Computadores

William Stallings Organização de computadores digitais. Capítulo 11 Estrutura e função da CPU

Organização de computadores. Aula 05

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Microcontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Organização de Computadores 2005/2006

1) Enumere e dê exemplo dos tipos de conflitos que podem ocorrer em um pipeline de instruções de um processador.

ESTUDO SOBRE O IMPACTO DOS PROCESSADORES HOSPEDEIROS SPARC V8 E NIOS II NO DESEMPENHO DA ARQUITETURA RECONFIGURÁVEL HÍBRIDA RoSA

INTRODUÇÃO A ARQUITETURA DE COMPUTADORES FELIPE G. TORRES

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Organização de Computadores 1

Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação

Adriano J. Holanda FAFRAM. 4 e 11 de maio de 2012

UM MÉTODO PARA COMPARAÇÃO ENTRE HARDWARE E SOFTWARE DAS FUNÇÕES CRC-16 E FDCT SCHNEIDER, R. F. ¹, RAMOS, F. L. L.¹

Introdução à Linguagem VHDL

Sistemas de Entrada e Saída

Arquitetura de Computadores

Arquitetura e Organização de Processadores. Aulas 06 e 07. Superescalaridade

Sistemas de Entrada e Saída

Arquitetura e Organização de Computadores

Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações. Medidas de desempenho

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Sistemas Operacionais. Rodrigo Rubira Branco

Sistemas Operacionais. Visão Geral

ENDEREÇAMENTO DE INSTRUÇÕES. Adão de Melo Neto

2ª Lista de Exercícios de Arquitetura de Computadores

Professor: Vlademir de Oliveira Disciplina: Microcontroladores e DSP. Memórias de Dados e de Programa

Arquitetura de Computadores. Processamento Paralelo

Transcrição:

Descrevendo o Microcontrolador FemtoJava Pipeline em ArchC UFRGS Programa de Pós graduação em Computação CMP 237 Arquitetura e Organização de Processadores Prof. 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...

Objetivos Nova instrução icabac R3000 ArchC Fj Multi Ciclo ArchC FJ Pipeline + ArchC Nova Instrução

ArchC ADL open source LSC UNICAMP Outras ADLs: MIMOLA, UDL/I, PRESSION, 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 back ends

ArchC Capacidade de descrição do conjunto de instruções Mono ciclo Multi ciclo Pipeline Hierarquia de memória Emulação de sistema operacional Simulação compilada...

ArchC

ArchC

ArchC

ArchC

Sobrecarga: behavior( )

Sobrecarga: behavior( )

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_instrucoesprocessador isa.cpp

ArchC aceita duas funções de comportamento independentes da arquitetura do projeto ac_behavior (begin) ac_behavior (end)

ArchC Simulator Generator

ArchC Compiled Simulator Generator

ArchC Assembler Generator

Versões ArchC

FemtoJava Unidade de processamento baseada em arquitetura de pilha Banco de Registradores Memórias RAM e ROM Pilha e registradores de controle 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 Prática Manual, artigos e monografias Instalação e testes Ferramentas geradas Simulações (Mips, Sparc V8) FemtoJava Dissertações: Ito, Beck e Moraes Manual: Sashimi (gerando VHDL) e CACO PS (.C e mifs) Esquemáticos

Metodologia Implementação Fluxo de projeto no ArchC Especificação Descrição Ac_ARCH.ac Descrição Ac_ISA isa.ac Top Down Pré Processador ArchC Modelo SystemC GCC Especificação Executável isa.cpp

Metodologia Implementação: Descrição ArchC 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 VHDL (Sashimi) Desc. CACO PS

Análise: Esquemático FJ Multi Ciclo

Análise: Esquemático 1 FJ Pipeline

Análise: Esquemático 2 FJ Pipeline

FemtoJava Pipeline: Busca de Instruções Barreira de Registradores

Selecionando Busca de Instrução

Detalhando Busca de Instrução

Busca de Instruções: Simplificação

FemtoJava Pipeline: Decodificação Barreira de Registradores

Selecionando Decodificação

Detalhando Decodificação

Decodificação: Simplificação

FemtoJava Pipeline: Busca de Operandos Barreira de Registradores

Selecionando Busca de Operandos

Detalhando Busca de Operandos

Busca de Operandos: Simplificação

FemtoJava Pipeline: Execução Barreira de Registradores

Selecionando Execução

Detalhando Execução

Execução: Simplificação

FemtoJava Pipeline: Estágios

Selecionando Escrita de Resultados

Detalhando Escrita de Resultados

Escrita de Resultados: Simplificação

Detalhes dos Registradores FemtoJava Principais IMAR: SP: atualizado no 3 estágio, é o ponteiro das variáveis locais RESULT_EC: atualizado o 3 estágio, é o ponteiro da pilha VARS: atualizado no primeiro estágio indica endereço de leitura da ROM atualizado no 4 estágio, indica o resultado da instrução PC: atualizado no 4 estágio

Registradores e Memórias CPU FJ Fila RAM Dados0 Dados1 Dados2 Dados3 ROM RB Inst0 Inst1 Inst2 Inst3 FRAME VARS V0 V1 V2 S0 S1 S2 PC IMAR VARS SP CONST POOL

Registradores e Memórias CPU FJ Fila RAM Dados0 Dados1 Dados2 Dados3 ROM RB Inst0 Inst1 Inst2 Inst3 FRAME VARS V0 V1 V2 S0 S1 S2 PC IMAR VARS SP CONST POOL

Registradores e Memórias CPU FJ Fila RAM Dados0 Dados1 Dados2 Dados3 ROM RB Inst0 Inst1 Inst2 Inst3 FRAME VARS V0 V1 V2 S0 S1 S2 PC IMAR VARS SP CONST POOL

Registradores e Memórias CPU FJ Fila RAM Dados0 Dados1 Dados2 Dados3 ROM RB Inst0 Inst1 Inst2 Inst3 FRAME VARS V0 V1 V2 S0 S1 S2 PC IMAR VARS SP CONST POOL

Registradores e Memórias CPU FJ Fila RAM Dados0 Dados1 Dados2 Dados3 ROM RB Inst0 Inst1 Inst2 Inst3 FRAME VARS V0 V1 V2 S0 S1 S2 PC IMAR VARS SP CONST POOL

Registradores e Memórias CPU FJ Fila RAM Dados0 Dados1 Dados2 Dados3 ROM RB Inst0 Inst1 Inst2 Inst3 FRAME VARS V0 V1 V2 S0 S1 S2 PC IMAR VARS SP CONST POOL

FemtoJava Pipeline + ArchC Estágios e Estados

iload ID

iload iadd ID ID

iload iadd invokestatic ID ID ID

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping immed = ROM[pc]; pc++; RAM[sp] = b

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 immed = ROM[pc]; pc++

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST4 b = a; a = pc; pc = immed; mar = sp ; novo pc

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST4 ST5 immed = ROM[pc]; pc++; RAM[sp] = b; sp ; immed = número de var

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST4 ST6 b = a; mar = sp = sp immed; ST5

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST4 ST7 ST6 RAM[sp] = b; a = frm; salvou PC ST5

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST8 ST4 ST7 ST6 b = a; mar = sp ; ST5

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST8 ST9 ST4 ST7 ST6 a = vars; RAM[sp] = b; salvou frm ST5

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST8 ST9 ST4 ST10 ST7 ST6 b = a; mar = sp ; ST5

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST8 ST9 ST4 ST10 ST11 ST7 ST6 ST5 frm = sp + 2; RAM[sp] = b; salvou vars e novo frm

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST8 ST9 ST4 ST10 ST11 ST7 ST6 ST12 mar = sp ; ST5

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST8 ST9 ST4 ST10 ST11 ST7 ST6 ST13 ST12 ST5 immed = ROM[pc]; pc++; vars = frm + immed; novo vars

iload iadd invokestatic iand ID ID ID

INT=0 ST0 ST1 ST2 Sleeping ST3 ST8 ST9 ST4 ST10 ST11 ST7 ST6 ST14 ST13 ST12 vars = vars + immed; ST5

iload iadd invokestatic iand ID ID ID ID

opcode=op_sleep INT=0 ST0 ST1 ST2 Sleeping cycles_ctrl=11 ST8 cycles_ctrl=01 ST9 ST10 ST11 cycles_ctrl=10 ST4 ST7 ST6 ST14 ST13 ST12 ST3 ST5

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 descobriu se dois recursos não documentados da linguagem ArchC AC_PC += AC_INSTR_SIZE/AC_FETCH_SIZE.

Abordagem FJ Funcional (mono ciclo) 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 (CACO PS 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 (mono ciclo) 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

FemtoJava + ArchC Implementação

Pipeline: femtojava.ac (1)

Pipeline: femtojava.ac (2)

Funcional: femtojava.ac

Pipeline e Funcional: femtojava_isa.ac

Pipeline: femtojava_isa.cpp

Funcional: femtojava_isa.cpp

Pipeline: femtojava_syscall.cpp

Funcional: femtojava_syscall.cpp

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 =85%; ID =85%; =50%; =70% e =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 Nº execução de cada instrução Tempo total de simulação 59k/s (Loop: FJ Funcional) 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 Compilado CACO PS (sim) CACO PS (Interpretado) Gera SystemC > VHDL

Consideração Documentação do FemtoJava: Incompleta Discrepância entre: Esquemáticos, VHDL e descrição do CACO PS 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 Arquitetura Pipeline do FJ sem separação clara de estágios Shashime em tempo de compilação ArchC não tem docuementação disso É 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 Fisicamente é na Execução = 5º estágio = 4º estágio Barreira de Registradores: Saber qual é barreira pela descrição do CACO PS 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 Abordagem didática para descrição de um modelo FJ Adaptações e resolução de problema encontrados Funcional (mono ciclo) 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.100 110, 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ós Graduaçã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 Auto Teste On Line para Processadores Embarcados. 2006. 157 f. Dissertação de Mestrado (Programa de Pós Graduação em Ciência da Computação) UFRGS, Porto Alegre, 2006. (4) VENNERS, B. Inside the Java Virtual Machine. New York, USA: McGraw Hill, 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.