SlideShare une entreprise Scribd logo
1  sur  24
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SULUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL
Tolerância a Falhas no Femto-Java:Tolerância a Falhas no Femto-Java:
Implementação baseada em Código ResidualImplementação baseada em Código Residual
CMP114 – Arquitetura e Projeto de Sistemas VLSI I
Júlio César Silvello (silvello@inf.ufrgs.br)
Professor: Flávio Rech Wagner
Julho/2004
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 1. Introdução
 2. Códigos Aritméticos
 3. FemtoJava Multiciclo
 A. Características Gerais
 B. Sistema de Interrupções
 C. SASHIMI
 4. Implementação de Self-Checking Adders
 A. Visão Geral
 B. Encoder
 C. mod_add
 D. Checker
 5. Tratamento de Falhas
 6. Conclusões e Trabalhos Futuros
RoteiroRoteiro
 Sistemas computacionais estão sujeitos a falhas
 A confiabilidade é uma aspecto essencial em sistemas críticos
 Controle automotivo
 Sistemas médicos
 Satélites (ambientes hostis)
 Teste online e circuitos self-checking podem aumentar a
confiabilidade de sistemas eletrônicos
 Erros são detectados logo que ocorrem
 Tratamento do erro pode ser feito mais rapidamente
 Custo associado
• Hadware adicional, desempenho, consumo de potência
1. Introdução1. Introdução
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 Unidades aritméticas são elementos essenciais em muitos sistemas
computacionais
 As operações aritméticas básicas são a adição e a subtração
 Multiplicação e divisão são implementadas através de iterações das
operações básicas e da operação de deslocamento
• Erros nessas operações se manifestam como erros nas operações básicas ou
como erros de controle
 Detecção de erros em operações aritméticas básicas  códigos aritméticos
1. Introdução1. Introdução
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
2. Códigos Aritméticos2. Códigos Aritméticos
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 São preservados em operações aritméticas básicas
 A soma ou subtração de um dado codificado resulta em um dado
corretamente codificado
 Permitem a detecção de falhas simples ou múltiplas, dependendo
da distância adotada (custo associado)
 Em operações aritméticas, a falha de 1 bit na entrada pode resultar
em diversos bits incorretos na saída
1 1 1 1
+ 0 0 0 0
0 1 1 1 1
1 1 1 1
+ 0 0 0 1
1 0 0 0 0
Entradas
Saída
2. Códigos Aritméticos2. Códigos Aritméticos
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 O dado codificado consiste de uma parte não codificada (dado
original) concatenado com um Check Symbol, que é uma função
do dado original
 X é um dado com m-bits
 C(X) é o Check Symbol, com a-bits
 C(X) = X mod A
 A = 2a
– 1 (ou seja, todos os a-bits em 1)
 X’(X) = <C(X), X>, dado codificado com (m+a)-bits
 f(X + Y) = <C(X) +A C(Y), X + Y>
- Código Residual
3. FemtoJava Multiciclo3. FemtoJava Multiciclo
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 Arquitetura de Pilha
 RAM e ROM integradas
 Portas de IO mapeadas em memória
 2 timers
 Mecanismo de tratamento de interrupções
 Interrupções para timers
 Interrupções externas (pinos)
A. Características Gerais
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
3. FemtoJava Multiciclo3. FemtoJava Multiciclo
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 A JVM não define mecanismos para manipulação de interrupções, mas o
FemtoJava Multiciclo provê sistema de interrupções, por ser uma característica
desejável em microcontroladores
 2 níveis de prioridades no tratamento de interrupções
 Os registradores que programam o sistema estão mapeados em memória RAM e
podem ser acessados através de bytecodes estendidos (load_idx e store_idx)
 Interrupções podem ser desabilitadas individualmente ou globalmente
 5 interrupções: INT0, TF0, INT1, TF1, SP1
B. Sistema de Interrupções
3. FemtoJava Multiciclo3. FemtoJava Multiciclo
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 O SASHIMI é um ambiente que permite a especificação em Java de um
microcontrolador FemtoJava dedicado a uma aplicação específica (ASIC)
 Há restrições impostas sobre a linguagem Java para que a especificação seja
sintetizável
 Basicamente o ambiente modifica o conteúdo da ROM, conjunto de instruções
disponíveis e o Bloco de Controle (FSM). O Bloco Operacional não é
modificado, mesmo que alguns componentes não sejam necessários para a
aplicação
 Existem classes Java auxiliares que permitem a programação e controle do
comportamento do sistema a ser modelado (ex.: FemtoJavaInterruptSystem)
C. SASHIMI
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 Substituição dos somadores do FemtoJava, por somadores com
self-checking online
 Falha é detectada imediatamente quando ocorre
 Implementação de baixo custo do Código Residual
 Sinalização de falhas através da INT0 (que deixou de estar
disponível para interrupções externas)
 Tratamento de falhas é feito por software, de acordo com a
especificação do usuário/projetista
 Flexibilidade no tratamento de falhas
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
+
+A
Encoder
Equality
checker
X
C(X)
Y
C(Y)
c
X + Y
Sinalização de
interrupção
(se diferentes)
Encoder
Encoder
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 Implementação de baixo custo do Encoder
 O encoder é responsável pela custosa operação (X mod A)
 No caso de A = 2a
– 1, essa operação pode ser implementada pelo
encadeamento de mod_adder`s de a-bits
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Palavra de 16 bits
mod_adder mod_adder
mod_adder
X mod A  Check Symbol, 4 bits
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 Implementação de MOD_ADDER
Adder
HAdder
input0
(4 bits)
input1
(4 bits)
carry_in
(1 bit)carry
(1 bit)
4 bits
input0 +A input1
(4 bits)
1 1 0 0
+A 0 1 1 0
0 0 0 1 1
Carry out é sempre 0 em
operações mod_adder
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 Implementação de Checker
NXOR
OR
input0
(4 bits)
input1
(4 bits)
4 bits
Checker
(1 bit)
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 Declaração dos componentes usa GENERICS, da mesma forma
que os Adders do FemtoJava já utilizavam
 Não requer modificações para outros tamanhos de operandos  8, 16, 32
bits
 Pode ser trivialmente adaptado para outras versões do FemtoJava, desde
que elas possuam sistema de interrupções
 As portas do Adder_residue são as mesmas do Adder do FemtoJava, só foi
inserido um sinal de interrupção a mais, que precisa ser conectado ao pino
da INT0
 Operação de subtração com código residual é feita da mesma
forma, pode ser vista como uma soma com entrada
complementada
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
5. Tratamento de Falhas5. Tratamento de Falhas
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 O tratamento de falhas é feito por software através da chamada de
Interrupção INT0 do FemtoJava
 O usuário ganha flexibilidade na decisão sobre o que fazer em caso de falha
 Uma das interrupções externas foi retirada, para uso no tratamento de falhas
• Esse problema pode ser corrigido através de modificação no Sistema de
Interrupções do FemtoJava, para contemplar uma nova categoria de
interrupções
• Chamadas de métodos para tratamento de interrupções têm endereços fixos na
memória (são executadas através de invokestatic). Mapeamento de memória
sofreria mudanças
 Aplicação não tem conhecimento do componente que falhou, o que dificulta
implementação de rollback de estágio
• Ainda assim a aplicação pode prover mecanismos para rollback
5. Tratamento de Falhas5. Tratamento de Falhas
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 Funcionamento:
 Um dos componentes sinaliza uma falha através do sinal INT0
 Execução da aplicação é interrompida e o Sistema de Interrupções do
FemtoJava é acionado
 Sistema de Interrupções desvia o fluxo de execução para endereço de
tratamento da interrupção INT0 (fixo na RAM)
 Método de tratamento da interrupção é executado através de um
invokestatic
 Sistema de Interrupções sinaliza término do tratamento da interrupção
através do sinal INTA
 Fluxo de execução é retomado
5. Tratamento de Falhas5. Tratamento de Falhas
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 Todas as interrupções do FemtoJava podem ser desabilitadas, individual ou
globalmente
 Nesse caso, todo o sistema de codificação e verificação de check symbol
continua ativo, mas nada é feito após a sinalização de falha
Registrador IE
Registrador IP
5. Tratamento de Falhas5. Tratamento de Falhas
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 No SASHIMI, a especificação do tratamento de falhas é feito
através da implementação do método
 public void int0Method()
 A habilitação das interrupções é feita através dos métodos
 FemtoJavaInterruptSystem.globalEnable();
 FemtoJavaInterruptSystem.enable(1);
6. Conclusões e Trabalhos Futuros6. Conclusões e Trabalhos Futuros
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 A validação foi parcial, através de injeção de falhas nos
componentes, mas precisaria ser mais ampla
 A validação não foi feita seguindo o fluxo SASHIMI completo (da
especificação Java ao microcontrolador)
 A implementação do Encoder não está genérica o suficiente para
ser utilizada com qualquer tamanho de palavra e de check symbol.
Especificamente só está adequada para dados com 4 vezes o
tamanho do check symbol
 A implementação do Equality Checker poderia ser melhorada,
pois é simples
6. Conclusões e Trabalhos Futuros6. Conclusões e Trabalhos Futuros
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 O sistema de interrupções poderia ser modificado para incluir uma
nova categoria de interrupções
 Implica em modificar o mapeamento de memória
 Implica em modificar o ambiente SASHIMI
 Implementação de verificação da RAM
 Código Residual não seria o mais adequado nesse caso
 Endereçamento dos componentes, para identificação desses no
tratamento de falhas
 Facilitaria rollback de estágio
 Implementação de Totally Self-Checking Checkers
Avizienis, A. (1971). “Arithmetic codes: Cost and effectiveness studies for application in digital systems design”,
IEEE Trans. Comput., Vol. C-20, No. 11, pp 1322-1331
Avizienis, A. (1973). “Arithmetic algorithms for error-coded operands”, IEEE Trans. Comput. Vol C-22, No. 16,
pp. 567-572
Mattos, Julio C. B.; Carro, Luigi. (2002). “Efficient Architecture for FPGA-based Microcontrollers”. Porto Alegre
Nikolos, D.; Paschalis, A.M.; Philokyprou, G. (1998). "Efficient design of totally self-checking checkers for all low-
cost arithmetic codes", In Computers, IEEE Transactions on , Volume: 37 , Issue: 7 , Pages:807 – 814
Mandelbaum, D. (1967). "Arithmetic codes with large distance", In Information Theory, IEEE Transactions on ,
Volume: 13 , Issue: 2 , pp. 237-242
Carro, L.; Mattos, J.C.B.;Krapf, R.C.; Spellmeier, G. (2002). “Manual do SASHIMI”, disponível em
http://www.inf.ufrgs.br/sashimi/
Bibliografia ConsultadaBibliografia Consultada
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual

Contenu connexe

En vedette

Mecanismo de falhas
Mecanismo de falhasMecanismo de falhas
Mecanismo de falhassm_carvalho
 
Trabalho tolerância a falhas e recuperação de desastres
Trabalho tolerância a falhas e recuperação de desastresTrabalho tolerância a falhas e recuperação de desastres
Trabalho tolerância a falhas e recuperação de desastresAnderson Zardo
 
MONOGRAFIA - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA ALTA DISPONI...
MONOGRAFIA - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA ALTA DISPONI...MONOGRAFIA - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA ALTA DISPONI...
MONOGRAFIA - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA ALTA DISPONI...Adriel Viana
 
Alta Disponibilidade
Alta DisponibilidadeAlta Disponibilidade
Alta Disponibilidadeelliando dias
 
Circuitos Aritmeticos
Circuitos AritmeticosCircuitos Aritmeticos
Circuitos Aritmeticostarcisioti
 
2. conceito de arquivo e de documento
2. conceito de arquivo e de documento2. conceito de arquivo e de documento
2. conceito de arquivo e de documentopedroapeixoto
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosFrederico Madeira
 
Como redigir a introdução e a conclusão de um trabalho escrito
Como redigir a introdução e a conclusão de um trabalho escritoComo redigir a introdução e a conclusão de um trabalho escrito
Como redigir a introdução e a conclusão de um trabalho escritoBiblioteca Escolar Ourique
 
The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017LinkedIn
 

En vedette (11)

05tolerancia
05tolerancia05tolerancia
05tolerancia
 
Mecanismo de falhas
Mecanismo de falhasMecanismo de falhas
Mecanismo de falhas
 
Trabalho tolerância a falhas e recuperação de desastres
Trabalho tolerância a falhas e recuperação de desastresTrabalho tolerância a falhas e recuperação de desastres
Trabalho tolerância a falhas e recuperação de desastres
 
MONOGRAFIA - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA ALTA DISPONI...
MONOGRAFIA - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA ALTA DISPONI...MONOGRAFIA - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA ALTA DISPONI...
MONOGRAFIA - ESTUDO DE VIABILIDADE DE SERVIDORES EM CLUSTER PARA ALTA DISPONI...
 
Modelo de falhas
Modelo de falhasModelo de falhas
Modelo de falhas
 
Alta Disponibilidade
Alta DisponibilidadeAlta Disponibilidade
Alta Disponibilidade
 
Circuitos Aritmeticos
Circuitos AritmeticosCircuitos Aritmeticos
Circuitos Aritmeticos
 
2. conceito de arquivo e de documento
2. conceito de arquivo e de documento2. conceito de arquivo e de documento
2. conceito de arquivo e de documento
 
Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas Distribuídos
 
Como redigir a introdução e a conclusão de um trabalho escrito
Como redigir a introdução e a conclusão de um trabalho escritoComo redigir a introdução e a conclusão de um trabalho escrito
Como redigir a introdução e a conclusão de um trabalho escrito
 
The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017
 

Similaire à Julio Silvello - Femtojava - Self Checking Adders

APOSTILA Trein. robô Fanuc portugues EMERSON EDUARDO RODRIGUES
APOSTILA Trein. robô Fanuc portugues EMERSON EDUARDO RODRIGUESAPOSTILA Trein. robô Fanuc portugues EMERSON EDUARDO RODRIGUES
APOSTILA Trein. robô Fanuc portugues EMERSON EDUARDO RODRIGUESEMERSON EDUARDO RODRIGUES
 
Robô Fanuc - Programação e Operação EMERSON EDUARDO RODRIGUES
Robô Fanuc - Programação e Operação EMERSON EDUARDO RODRIGUESRobô Fanuc - Programação e Operação EMERSON EDUARDO RODRIGUES
Robô Fanuc - Programação e Operação EMERSON EDUARDO RODRIGUESEMERSON EDUARDO RODRIGUES
 
07 tia portal hands on - dianosticos v11 -v1
07 tia portal   hands on - dianosticos v11 -v107 tia portal   hands on - dianosticos v11 -v1
07 tia portal hands on - dianosticos v11 -v1confidencial
 
18.ago esmeralda 15.00_321_cpfl paulista
18.ago esmeralda 15.00_321_cpfl paulista18.ago esmeralda 15.00_321_cpfl paulista
18.ago esmeralda 15.00_321_cpfl paulistaitgfiles
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 
Apostila clp (conceitos básicos)
Apostila clp (conceitos básicos)Apostila clp (conceitos básicos)
Apostila clp (conceitos básicos)jastro1984
 
Curso clp siemens
Curso clp siemensCurso clp siemens
Curso clp siemensSENAI SP
 
Apostila supervisorio indusoft ind371
Apostila supervisorio indusoft ind371Apostila supervisorio indusoft ind371
Apostila supervisorio indusoft ind371Sandra Rocha
 
Trabalho sobre software Vericut
Trabalho sobre software VericutTrabalho sobre software Vericut
Trabalho sobre software Vericutrbgalvao
 
Artigo Engenharia de Controle
Artigo Engenharia de ControleArtigo Engenharia de Controle
Artigo Engenharia de ControleTayara Crystina
 
Geração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGAGeração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGAAndré Costa Lima
 
Webinar: Explorando o SimulIDE - Simulador de Circuitos Eletrônicos Open Source
Webinar:  Explorando o SimulIDE - Simulador de Circuitos Eletrônicos Open SourceWebinar:  Explorando o SimulIDE - Simulador de Circuitos Eletrônicos Open Source
Webinar: Explorando o SimulIDE - Simulador de Circuitos Eletrônicos Open SourceEmbarcados
 
[CLASS 2014] Palestra Técnica - Marcelo Branquinho e Jan Seidl
[CLASS 2014] Palestra Técnica - Marcelo Branquinho e Jan Seidl[CLASS 2014] Palestra Técnica - Marcelo Branquinho e Jan Seidl
[CLASS 2014] Palestra Técnica - Marcelo Branquinho e Jan SeidlTI Safe
 
Firewall em Linux
Firewall em LinuxFirewall em Linux
Firewall em Linuxguest4e5ab
 

Similaire à Julio Silvello - Femtojava - Self Checking Adders (20)

APOSTILA Trein. robô Fanuc portugues EMERSON EDUARDO RODRIGUES
APOSTILA Trein. robô Fanuc portugues EMERSON EDUARDO RODRIGUESAPOSTILA Trein. robô Fanuc portugues EMERSON EDUARDO RODRIGUES
APOSTILA Trein. robô Fanuc portugues EMERSON EDUARDO RODRIGUES
 
Robô Fanuc - Programação e Operação EMERSON EDUARDO RODRIGUES
Robô Fanuc - Programação e Operação EMERSON EDUARDO RODRIGUESRobô Fanuc - Programação e Operação EMERSON EDUARDO RODRIGUES
Robô Fanuc - Programação e Operação EMERSON EDUARDO RODRIGUES
 
07 tia portal hands on - dianosticos v11 -v1
07 tia portal   hands on - dianosticos v11 -v107 tia portal   hands on - dianosticos v11 -v1
07 tia portal hands on - dianosticos v11 -v1
 
18.ago esmeralda 15.00_321_cpfl paulista
18.ago esmeralda 15.00_321_cpfl paulista18.ago esmeralda 15.00_321_cpfl paulista
18.ago esmeralda 15.00_321_cpfl paulista
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
Apostila clp (conceitos básicos)
Apostila clp (conceitos básicos)Apostila clp (conceitos básicos)
Apostila clp (conceitos básicos)
 
Curso clp siemens
Curso clp siemensCurso clp siemens
Curso clp siemens
 
Curso clp siemens
Curso clp siemensCurso clp siemens
Curso clp siemens
 
Apostila supervisorio indusoft ind371
Apostila supervisorio indusoft ind371Apostila supervisorio indusoft ind371
Apostila supervisorio indusoft ind371
 
Trabalho sobre software Vericut
Trabalho sobre software VericutTrabalho sobre software Vericut
Trabalho sobre software Vericut
 
Artigo Engenharia de Controle
Artigo Engenharia de ControleArtigo Engenharia de Controle
Artigo Engenharia de Controle
 
SO-10 Entrada e Saída: Software
SO-10 Entrada e Saída: SoftwareSO-10 Entrada e Saída: Software
SO-10 Entrada e Saída: Software
 
Geração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGAGeração Automática de Autómatos Celulares para FPGA
Geração Automática de Autómatos Celulares para FPGA
 
Automacao
AutomacaoAutomacao
Automacao
 
Webinar: Explorando o SimulIDE - Simulador de Circuitos Eletrônicos Open Source
Webinar:  Explorando o SimulIDE - Simulador de Circuitos Eletrônicos Open SourceWebinar:  Explorando o SimulIDE - Simulador de Circuitos Eletrônicos Open Source
Webinar: Explorando o SimulIDE - Simulador de Circuitos Eletrônicos Open Source
 
Mini aula de teste de software
Mini aula de teste de softwareMini aula de teste de software
Mini aula de teste de software
 
[CLASS 2014] Palestra Técnica - Marcelo Branquinho e Jan Seidl
[CLASS 2014] Palestra Técnica - Marcelo Branquinho e Jan Seidl[CLASS 2014] Palestra Técnica - Marcelo Branquinho e Jan Seidl
[CLASS 2014] Palestra Técnica - Marcelo Branquinho e Jan Seidl
 
02 so
02 so02 so
02 so
 
Netfilter + Iptables
Netfilter + IptablesNetfilter + Iptables
Netfilter + Iptables
 
Firewall em Linux
Firewall em LinuxFirewall em Linux
Firewall em Linux
 

Dernier

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Dernier (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Julio Silvello - Femtojava - Self Checking Adders

  • 1. UNIVERSIDADE FEDERAL DO RIO GRANDE DO SULUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL Tolerância a Falhas no Femto-Java:Tolerância a Falhas no Femto-Java: Implementação baseada em Código ResidualImplementação baseada em Código Residual CMP114 – Arquitetura e Projeto de Sistemas VLSI I Júlio César Silvello (silvello@inf.ufrgs.br) Professor: Flávio Rech Wagner Julho/2004
  • 2. FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  1. Introdução  2. Códigos Aritméticos  3. FemtoJava Multiciclo  A. Características Gerais  B. Sistema de Interrupções  C. SASHIMI  4. Implementação de Self-Checking Adders  A. Visão Geral  B. Encoder  C. mod_add  D. Checker  5. Tratamento de Falhas  6. Conclusões e Trabalhos Futuros RoteiroRoteiro
  • 3.  Sistemas computacionais estão sujeitos a falhas  A confiabilidade é uma aspecto essencial em sistemas críticos  Controle automotivo  Sistemas médicos  Satélites (ambientes hostis)  Teste online e circuitos self-checking podem aumentar a confiabilidade de sistemas eletrônicos  Erros são detectados logo que ocorrem  Tratamento do erro pode ser feito mais rapidamente  Custo associado • Hadware adicional, desempenho, consumo de potência 1. Introdução1. Introdução FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
  • 4.  Unidades aritméticas são elementos essenciais em muitos sistemas computacionais  As operações aritméticas básicas são a adição e a subtração  Multiplicação e divisão são implementadas através de iterações das operações básicas e da operação de deslocamento • Erros nessas operações se manifestam como erros nas operações básicas ou como erros de controle  Detecção de erros em operações aritméticas básicas  códigos aritméticos 1. Introdução1. Introdução FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
  • 5. 2. Códigos Aritméticos2. Códigos Aritméticos FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  São preservados em operações aritméticas básicas  A soma ou subtração de um dado codificado resulta em um dado corretamente codificado  Permitem a detecção de falhas simples ou múltiplas, dependendo da distância adotada (custo associado)  Em operações aritméticas, a falha de 1 bit na entrada pode resultar em diversos bits incorretos na saída 1 1 1 1 + 0 0 0 0 0 1 1 1 1 1 1 1 1 + 0 0 0 1 1 0 0 0 0 Entradas Saída
  • 6. 2. Códigos Aritméticos2. Códigos Aritméticos FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  O dado codificado consiste de uma parte não codificada (dado original) concatenado com um Check Symbol, que é uma função do dado original  X é um dado com m-bits  C(X) é o Check Symbol, com a-bits  C(X) = X mod A  A = 2a – 1 (ou seja, todos os a-bits em 1)  X’(X) = <C(X), X>, dado codificado com (m+a)-bits  f(X + Y) = <C(X) +A C(Y), X + Y> - Código Residual
  • 7. 3. FemtoJava Multiciclo3. FemtoJava Multiciclo FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  Arquitetura de Pilha  RAM e ROM integradas  Portas de IO mapeadas em memória  2 timers  Mecanismo de tratamento de interrupções  Interrupções para timers  Interrupções externas (pinos) A. Características Gerais
  • 8. FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
  • 9. 3. FemtoJava Multiciclo3. FemtoJava Multiciclo FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  A JVM não define mecanismos para manipulação de interrupções, mas o FemtoJava Multiciclo provê sistema de interrupções, por ser uma característica desejável em microcontroladores  2 níveis de prioridades no tratamento de interrupções  Os registradores que programam o sistema estão mapeados em memória RAM e podem ser acessados através de bytecodes estendidos (load_idx e store_idx)  Interrupções podem ser desabilitadas individualmente ou globalmente  5 interrupções: INT0, TF0, INT1, TF1, SP1 B. Sistema de Interrupções
  • 10. 3. FemtoJava Multiciclo3. FemtoJava Multiciclo FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  O SASHIMI é um ambiente que permite a especificação em Java de um microcontrolador FemtoJava dedicado a uma aplicação específica (ASIC)  Há restrições impostas sobre a linguagem Java para que a especificação seja sintetizável  Basicamente o ambiente modifica o conteúdo da ROM, conjunto de instruções disponíveis e o Bloco de Controle (FSM). O Bloco Operacional não é modificado, mesmo que alguns componentes não sejam necessários para a aplicação  Existem classes Java auxiliares que permitem a programação e controle do comportamento do sistema a ser modelado (ex.: FemtoJavaInterruptSystem) C. SASHIMI
  • 11. 4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  Substituição dos somadores do FemtoJava, por somadores com self-checking online  Falha é detectada imediatamente quando ocorre  Implementação de baixo custo do Código Residual  Sinalização de falhas através da INT0 (que deixou de estar disponível para interrupções externas)  Tratamento de falhas é feito por software, de acordo com a especificação do usuário/projetista  Flexibilidade no tratamento de falhas
  • 12. 4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual + +A Encoder Equality checker X C(X) Y C(Y) c X + Y Sinalização de interrupção (se diferentes) Encoder Encoder
  • 13. 4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  Implementação de baixo custo do Encoder  O encoder é responsável pela custosa operação (X mod A)  No caso de A = 2a – 1, essa operação pode ser implementada pelo encadeamento de mod_adder`s de a-bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Palavra de 16 bits mod_adder mod_adder mod_adder X mod A  Check Symbol, 4 bits
  • 14. 4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  Implementação de MOD_ADDER Adder HAdder input0 (4 bits) input1 (4 bits) carry_in (1 bit)carry (1 bit) 4 bits input0 +A input1 (4 bits) 1 1 0 0 +A 0 1 1 0 0 0 0 1 1 Carry out é sempre 0 em operações mod_adder
  • 15. 4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  Implementação de Checker NXOR OR input0 (4 bits) input1 (4 bits) 4 bits Checker (1 bit)
  • 16. 4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  Declaração dos componentes usa GENERICS, da mesma forma que os Adders do FemtoJava já utilizavam  Não requer modificações para outros tamanhos de operandos  8, 16, 32 bits  Pode ser trivialmente adaptado para outras versões do FemtoJava, desde que elas possuam sistema de interrupções  As portas do Adder_residue são as mesmas do Adder do FemtoJava, só foi inserido um sinal de interrupção a mais, que precisa ser conectado ao pino da INT0  Operação de subtração com código residual é feita da mesma forma, pode ser vista como uma soma com entrada complementada
  • 17. FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
  • 18. 5. Tratamento de Falhas5. Tratamento de Falhas FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  O tratamento de falhas é feito por software através da chamada de Interrupção INT0 do FemtoJava  O usuário ganha flexibilidade na decisão sobre o que fazer em caso de falha  Uma das interrupções externas foi retirada, para uso no tratamento de falhas • Esse problema pode ser corrigido através de modificação no Sistema de Interrupções do FemtoJava, para contemplar uma nova categoria de interrupções • Chamadas de métodos para tratamento de interrupções têm endereços fixos na memória (são executadas através de invokestatic). Mapeamento de memória sofreria mudanças  Aplicação não tem conhecimento do componente que falhou, o que dificulta implementação de rollback de estágio • Ainda assim a aplicação pode prover mecanismos para rollback
  • 19. 5. Tratamento de Falhas5. Tratamento de Falhas FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  Funcionamento:  Um dos componentes sinaliza uma falha através do sinal INT0  Execução da aplicação é interrompida e o Sistema de Interrupções do FemtoJava é acionado  Sistema de Interrupções desvia o fluxo de execução para endereço de tratamento da interrupção INT0 (fixo na RAM)  Método de tratamento da interrupção é executado através de um invokestatic  Sistema de Interrupções sinaliza término do tratamento da interrupção através do sinal INTA  Fluxo de execução é retomado
  • 20. 5. Tratamento de Falhas5. Tratamento de Falhas FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  Todas as interrupções do FemtoJava podem ser desabilitadas, individual ou globalmente  Nesse caso, todo o sistema de codificação e verificação de check symbol continua ativo, mas nada é feito após a sinalização de falha Registrador IE Registrador IP
  • 21. 5. Tratamento de Falhas5. Tratamento de Falhas FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  No SASHIMI, a especificação do tratamento de falhas é feito através da implementação do método  public void int0Method()  A habilitação das interrupções é feita através dos métodos  FemtoJavaInterruptSystem.globalEnable();  FemtoJavaInterruptSystem.enable(1);
  • 22. 6. Conclusões e Trabalhos Futuros6. Conclusões e Trabalhos Futuros FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  A validação foi parcial, através de injeção de falhas nos componentes, mas precisaria ser mais ampla  A validação não foi feita seguindo o fluxo SASHIMI completo (da especificação Java ao microcontrolador)  A implementação do Encoder não está genérica o suficiente para ser utilizada com qualquer tamanho de palavra e de check symbol. Especificamente só está adequada para dados com 4 vezes o tamanho do check symbol  A implementação do Equality Checker poderia ser melhorada, pois é simples
  • 23. 6. Conclusões e Trabalhos Futuros6. Conclusões e Trabalhos Futuros FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual  O sistema de interrupções poderia ser modificado para incluir uma nova categoria de interrupções  Implica em modificar o mapeamento de memória  Implica em modificar o ambiente SASHIMI  Implementação de verificação da RAM  Código Residual não seria o mais adequado nesse caso  Endereçamento dos componentes, para identificação desses no tratamento de falhas  Facilitaria rollback de estágio  Implementação de Totally Self-Checking Checkers
  • 24. Avizienis, A. (1971). “Arithmetic codes: Cost and effectiveness studies for application in digital systems design”, IEEE Trans. Comput., Vol. C-20, No. 11, pp 1322-1331 Avizienis, A. (1973). “Arithmetic algorithms for error-coded operands”, IEEE Trans. Comput. Vol C-22, No. 16, pp. 567-572 Mattos, Julio C. B.; Carro, Luigi. (2002). “Efficient Architecture for FPGA-based Microcontrollers”. Porto Alegre Nikolos, D.; Paschalis, A.M.; Philokyprou, G. (1998). "Efficient design of totally self-checking checkers for all low- cost arithmetic codes", In Computers, IEEE Transactions on , Volume: 37 , Issue: 7 , Pages:807 – 814 Mandelbaum, D. (1967). "Arithmetic codes with large distance", In Information Theory, IEEE Transactions on , Volume: 13 , Issue: 2 , pp. 237-242 Carro, L.; Mattos, J.C.B.;Krapf, R.C.; Spellmeier, G. (2002). “Manual do SASHIMI”, disponível em http://www.inf.ufrgs.br/sashimi/ Bibliografia ConsultadaBibliografia Consultada FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual