UNIVERSIDADE FEDERAL DO RIO GRANDE DO SULUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL
Tolerância a Falhas no Femto-Java:Toler...
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
 1. Introdução
...
 Sistemas computacionais estão sujeitos a falhas
 A confiabilidade é uma aspecto essencial em sistemas críticos
 Contro...
 Unidades aritméticas são elementos essenciais em muitos sistemas
computacionais
 As operações aritméticas básicas são a...
2. Códigos Aritméticos2. Códigos Aritméticos
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação...
2. Códigos Aritméticos2. Códigos Aritméticos
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação...
3. FemtoJava Multiciclo3. FemtoJava Multiciclo
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementaç...
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ç...
3. FemtoJava Multiciclo3. FemtoJava Multiciclo
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementaç...
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Códig...
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Códig...
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Códig...
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Códig...
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Códig...
4. Implementação de4. Implementação de Self-Checking AddersSelf-Checking Adders
FemtoJava – Implementação baseada em Códig...
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ç...
5. Tratamento de Falhas5. Tratamento de Falhas
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementaç...
5. Tratamento de Falhas5. Tratamento de Falhas
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementaç...
5. Tratamento de Falhas5. Tratamento de Falhas
FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementaç...
6. Conclusões e Trabalhos Futuros6. Conclusões e Trabalhos Futuros
FemtoJava – Implementação baseada em Código ResidualFem...
6. Conclusões e Trabalhos Futuros6. Conclusões e Trabalhos Futuros
FemtoJava – Implementação baseada em Código ResidualFem...
Avizienis, A. (1971). “Arithmetic codes: Cost and effectiveness studies for application in digital systems design”,
IEEE T...
Próximos SlideShares
Carregando em…5
×

Julio Silvello - Femtojava - Self Checking Adders

372 visualizações

Publicada em

Proposta de implementação de tolerância a falhas no processador Femtojava, baseada em implementação Self-check Adders

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
372
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Julio Silvello - Femtojava - Self Checking Adders

  1. 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. 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. 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. 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. 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. 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. 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. 8. FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
  9. 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. 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. 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. 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. 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. 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. 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. 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. 17. FemtoJava – Implementação baseada em Código ResidualFemtoJava – Implementação baseada em Código Residual
  18. 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. 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. 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. 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. 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. 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. 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

×