Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO CEARÁ CENTRO DE TECNOLOGIA DEPARTAMENTO DE ENGENHARIA DE TELEINFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE TELEINFORMÁTICA MESTRADO ACADÊMICO EM ENGENHARIA DE TELEINFORMÁTICA MOABE FERREIRA DOMINGOS FERRAMENTA PARA ANÁLISE E MONITORAMENTO DE ERROS EM MEMÓRIAS PROTEGIDAS POR ECC FORTALEZA 2020 MOABE FERREIRA DOMINGOS FERRAMENTA PARA ANÁLISE E MONITORAMENTO DE ERROS EM MEMÓRIAS PROTEGIDAS POR ECC Dissertação apresentada ao Curso de Mestrado Acadêmico em Engenharia de Teleinformática do Programa de Pós-Graduação em Engenharia de Teleinformática do Centro de Tecnologia da Universidade Federal do Ceará, como requisito parcial à obtenção do título de mestre em Engenharia de Teleinformática. Área de Concentração: Sinais e Sistemas Orientador: Prof. Dr. Jarbas Aryel Nu- nes da Silveira FORTALEZA 2020 Dados Internacionais de Catalogação na Publicação Universidade Federal do Ceará Biblioteca Universitária Gerada automaticamente pelo módulo Catalog, mediante os dados fornecidos pelo(a) autor(a) D716f Domingos, Moabe Ferreira. Ferramenta para análise e monitoramento de erros em memórias protegidas por ECC / Moabe Ferreira Domingos. – 2020. 62 f. : il. color. Dissertação (mestrado) – Universidade Federal do Ceará, Centro de Tecnologia, Programa de Pós- Graduação em Engenharia de Teleinformática, Fortaleza, 2020. Orientação: Prof. Dr. Jarbas Aryel Nunes da Silveira. 1. Códigos Corretores de Erro. 2. Memórias. 3. Tolerância a Falhas. I. Título. CDD 621.38 MOABE FERREIRA DOMINGOS FERRAMENTA PARA ANÁLISE E MONITORAMENTO DE ERROS EM MEMÓRIAS PROTEGIDAS POR ECC Dissertação apresentada ao Curso de Mestrado Acadêmico em Engenharia de Teleinformática do Programa de Pós-Graduação em Engenharia de Teleinformática do Centro de Tecnologia da Universidade Federal do Ceará, como requisito parcial à obtenção do título de mestre em Engenharia de Teleinformática. Área de Concentração: Sinais e Sistemas Aprovada em: 22 de dezembro de 2020 BANCA EXAMINADORA Prof. Dr. Jarbas Aryel Nunes da Silveira (Orientador) Universidade Federal do Ceará (UFC) Prof. Dr. Giovanni Cordeiro Barroso Universidade Federal do Ceará (UFC) Prof. Dr. Cesar Augusto Missio Marcon Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS) Este trabalho é inteiramente dedicado à minha família, que sempre me apoiou e incentivou. AGRADECIMENTOS Ao Prof. Dr. Jarbas Aryel Nunes da Silveira por me orientar em minha dissertação. Ao Prof. Dr. Paulo César Cortez, pela oportunidade e confiança na realização do mestrado e ao prof. Me. Ricardo Jardel Nunes da Silveira pelo apoio e incentivo Aos meus amigos, que me incentivaram e me deram forças para conseguir finalizar. Entre eles, mas não somente, a Alexandra Oliveira, a Marilene Freitas e a Gilderlane Ribeiro. Agradeço também a valiosas pessoas que me são caras por estarem presentes no decorrer dessa fase que se finaliza e por tantas outras. Aos meus amigos e colegas de laboratório, em especial Felipe Gaspar e Harinson Martins, pela ajuda e parceria nesse período, pois, sem dúvida, foram essenciais para conclusão deste trabalho . Aos professores participantes da banca, pelo tempo, sugestões e contribuições provi- das a este trabalho. Finalmente à CAPES, pelo apoio financeiro com a manutenção da bolsa de auxílio. "Transition is always a relief. Destination means death to me. If I could figure out a way to remain forever in transition, in the disconnected and unfamiliar, I could remain in a state of perpetual freedom." (David Wojnarowicz) RESUMO Devido ao encolhimento dos dispositivos integrados, memórias têm uma alta probabilidade de apresentar erros em múltiplos bits, corrompendo os dados armazenados, representando uma preocupação real para aplicações críticas, nas quais a confiabilidade dos dados é uma necessidade. Assim sendo, algumas técnicas são conhecidas e implementadas com a finalidade de atenuar esse real problema, entre as mais conhecidas e implementadas estão os códigos corretores de erros. Esses códigos implementam algoritmos que aumentam a confiabilidade da memória por meio de técnicas que permitem a identificação e, por vezes, a correção de falhas em células de memória. Entre os motivos que torna essa técnica tão utilizada está a baixa complexibilidade de sua implementação. No entanto, avaliar a eficácia desses códigos em nível de hardware pode ser uma atribuição difícil. Sendo assim, foi proposta a criação de uma ferramenta, denominada Memory Monitoring Software (MMS), que procura facilitar a análise desses códigos monitorando a execução de alguns códigos corretores de erros em Memória. A ferramenta ajuda a avaliar o desempenho desses códigos em memória de forma clara e objetiva, utilizando-se de gráficos e dados de comparação. Para tanto, são implementados alguns códigos (Hamming, CLC, CLC estendido e MRSC) no dispositivo microcontrolador TMS570LS0432. Entre os gráficos que a ferramenta disponibiliza está a da curva de correções que pode ser comparada junto com a quantidade de erros injetada. Apresenta, também, um comparativo de eficiência entre correções feitas em cada código, sendo uma ferramenta útil para a análise, ou mesmo estudo, de técnicas de proteção utilizadas em dispositivos, principalmente os ditos tolerantes a falhas. Palavras-chave: Códigos Corretores de Erro. Memórias. Tolerância a Falha. ABSTRACT Due to the shrinkage of the integrated devices, memories have a high probability of presenting multiple bit upset, corrupting the stored data, representing a real concern for critical applications, in which data reliability is a necessity. Therefore, some techniques are known and implemented in order to mitigate this real problem, among the best known and implemented are error-correcting codes. These codes implement algorithms that increase memory reliability through techniques that allow the identification and sometimes the correction of faults in memory cells. Among the reasons that make this technique so used are the low complexity of its implementation. However, assessing the effectiveness of these codes at the hardware level can be a difficult assignment. Therefore, I propose the creation of a tool that seeks to facilitate the analysis of these codes by monitoring the execution of some Error-Correcting Codes in Memory. The tool helps to evaluate the performance of these codes in memory in a clear and objective way, using graphs and comparison data. For that, some codes (Hamming, CLC, extended CLC and MRSC) are implemented in the microcontroller device TMS570LS0432. Among the graphics provided by the tool is the correction curve that can be compared with the number of errors injected. It also presents a comparative of efficiency between corrections made in each code. Being a useful tool for the analysis, or even study, of protection techniques used in devices, mainly the so-called fault tolerant. Keywords: Error Correcting Codes. Memory. Fault Tolerance. LISTA DE FIGURAS Figura 1 – Efeito causado pela passagem de um íon de alta energia em um transistor . . 19 Figura 2 – Partícula de carga atingindo uma superfície de silício e gerando um pulso de corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Figura 3 – Efeito do raio cósmico à medida que células diminuem fisicamente de tamanho 21 Figura 4 – Múltiplos bits induzidos por raio cósmico . . . . . . . . . . . . . . . . . . 21 Figura 5 – Blindagem Eletromagnética . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Figura 6 – Interleaving em memória . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Figura 7 – Ilustração de uma Redundância Modular Tripla . . . . . . . . . . . . . . . 24 Figura 8 – Matriz de estrutura do CLC para 16 bits . . . . . . . . . . . . . . . . . . . 29 Figura9 – Exemplo de codificação/decodificação CLC . . . . . . . . . . . . . . . . . 32 Figura 10 – Estrutura do código CLC, utilizando Hamming Estendido (8,13) para 16 bits 33 Figura 11 – Estrutura do código CLC, utilizando Hamming Estendido (2,6) para 16 bits 34 Figura 12 – Modelo de dados codificados MRSC . . . . . . . . . . . . . . . . . . . . . 35 Figura 13 – Descreve os principais elementos da operação de paridade do codificador MRSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Figura 14 – Regiões dos bits de dados do MRSC . . . . . . . . . . . . . . . . . . . . . 37 Figura 15 – Diagrama de blocos da decodificação MRSC . . . . . . . . . . . . . . . . . 38 Figura 16 – Exemplo de dado codificado com MRSC . . . . . . . . . . . . . . . . . . . 39 Figura 17 – Exemplo de dado decodificado com MRSC . . . . . . . . . . . . . . . . . . 39 Figura 18 – Visão geral da solução proposta . . . . . . . . . . . . . . . . . . . . . . . . 40 Figura 19 – Padrões de erros em células adjacentes . . . . . . . . . . . . . . . . . . . . 42 Figura 20 – Exemplo de padrões de erros em células adjacentes implementados e não implementados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Figura 21 – Rotina de codificação, inserção de erro e decodificação no microcontrolador 43 Figura 22 – Buffer de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Figura 23 – Armazenamento dos dados na base de dados . . . . . . . . . . . . . . . . . 44 Figura 24 – Interface do software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Figura 25 – Interface de controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Figura 26 – Barra de informação em tempo real . . . . . . . . . . . . . . . . . . . . . . 48 Figura 27 – Desempenho com todos os quatros ECC . . . . . . . . . . . . . . . . . . . 50 Figura 28 – Desempenho utilizando apenas CLC . . . . . . . . . . . . . . . . . . . . . 51 Figura 29 – Desempenho utilizando apenas CLC estendido . . . . . . . . . . . . . . . . 52 Figura 30 – Desempenho utilizando apenas MRSC . . . . . . . . . . . . . . . . . . . . 52 Figura 31 – Desempenho utilizando apenas Hamming . . . . . . . . . . . . . . . . . . 53 Figura 32 – Desempenho utilizando os 60 últimos minutos de dados . . . . . . . . . . . 53 Figura 33 – Desempenho utilizando os 120 últimos minutos de dados . . . . . . . . . . 54 Figura 34 – Desempenho utilizando os 240 últimos minutos de dados . . . . . . . . . . 54 Figura 35 – Desempenho utilizando os 360 últimos minutos de dados . . . . . . . . . . 55 LISTA DE TABELAS Tabela 1 – Posição de correção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Tabela 2 – Estados do Hamming Estendido (M, N+1) . . . . . . . . . . . . . . . . . . 28 Tabela 3 – Tabela de correção do CLC . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Tabela 4 – Critério para seleção de região . . . . . . . . . . . . . . . . . . . . . . . . 38 LISTA DE ABREVIATURAS E SIGLAS MMS Memory Monitoring Software SEE Single Event Effect SRAM Static Random Access Memory SBU Single Bit Upset SEC-DED Single Error Correction - Double Error Detection MBU Multiple Bit Upset ECC Error Correction Code RAM Random Access Memory TID Total Ionizing Dose SET Single Event Transient SEU Single Event Upset SEFI Single Event Functional Interrupt TMR Triple Modular Redundancy XOR Exclusive Or CLC Column-Line-Code MRSC Matrix Region Section Code IE Injetor de Erros CSV Comma Separated Values PDF Portable Document Format SUMÁRIO 1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3 Organização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 SINGLE EVENT EFFECTS . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.1 Conceitos básicos de SEE . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2 SEE em memórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.1 SBU e MBU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.2 Técnicas para proteção de memórias contra SEE . . . . . . . . . . . . . . 22 2.2.2.1 Blindagem eletromagnética . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.2.2 Interleaving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.2.3 Redundância Modular Tripla . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.2.4 Códigos Corretores de Erros . . . . . . . . . . . . . . . . . . . . . . . . . 23 3 CÓDIGOS CORRETORES . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.1 Código Hamming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.1.1 Codificação e Decodificação Hamming (4,7) . . . . . . . . . . . . . . . . . 25 3.1.2 Hamming Estendido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2 Código CLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2.1 Codificação e Decodificação CLC (16,40) . . . . . . . . . . . . . . . . . . 29 3.2.2 Exemplo de correção por CLC . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3 Código CLC Estendido . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.1 Codificação e Decodificação CLC Estendido . . . . . . . . . . . . . . . . . 33 3.4 Código MRSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.4.1 Codificação e decodificação MRSC . . . . . . . . . . . . . . . . . . . . . . 34 4 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1 TMS570LS0432 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2 Injeção de falhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3 Software de Monitoramento . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.3.1 Banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.3.2 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.3.2.1 Gráficos gerados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.3.2.2 Tabela de desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.3.2.3 Opções de controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.3.2.4 Código corretor de erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.2.5 Dados com indicação dos bits comprometidos . . . . . . . . . . . . . . . . 47 4.3.2.6 Barra de Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.1 Análise com todos os ECC . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.2 Análise dos ECC individualmente . . . . . . . . . . . . . . . . . . . . . . 51 5.3 Alteração do tempo de coleta de amostra . . . . . . . . . . . . . . . . . . 51 5.4 Relatório . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6 CONCLUSÕES E TRABALHOS FUTUROS . . . . . . . . . . . . . . . 56 REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 15 1 INTRODUÇÃO A ocorrência de Single Event Effect (SEE) acabou se tornando uma preocupação crucial para a confiabilidade dos dispositivos eletrônicos, principalmente quando se fala em circuitos críticos, tais como os utilizados em missões espaciais e dispositivos médicos (FER- REYRA et al., 2005; GURUN et al., 2012), e é ainda mais notável quando são expostos a ambientes contendo alta presença de radiação (HAZUCHA; SVENSSON, 2001), destacando uma preocupação principalmente com a Static Random Access Memory (SRAM) (KOHLER et al., 2017). A ionização direta ou recuo nuclear está entre as principais fontes de radiação responsáveis por afetar os circuitos integrados, provocando falhas transientes, especialmente nesses dispositivosde memória, que podem acarretar diminuição da confiabilidade dos sistemas (HENTSCHKE et al., 2002; NICOLAIDIS, 2011). Com isso, o uso de códigos corretores de erro é bastante utilizado em memórias a fim de tratar essas falhas transientes, tendo em vista seu baixo custo de implementação em relação a outras técnicas (CHEN; HSIAO, 1984) e levando em consideração as sérias consequências que um erro em uma aplicação crítica pode levar, se não tratado (LABEL et al., 2000). Um aspecto importante no desenvolvimento de sistemas que demandam alta confia- bilidade é, sem dúvida, sua validação. Para se alcançar uma certa confiança, qualquer sistema deve ser submetido a uma intensa validação. E o que leva à confiança no sistema é o teste (LITTLEWOOD, 1992). Uma das técnica que vem sendo reconhecida e aceita como método de validação de mecanismos de tolerância a falhas é a injeção de falhas. A injeção pode ser feita de diversas formas, dependendo do nível de abstração do sistema alvo e do tipo de falha injetada (MARTINS; AMBROSIO, 2003). Neste trabalho, foi empregada a injeção de falha por software, representado as falhas que podem ocorrer na memória. 1.1 Motivação A proteção de dispositivos de memória contra soft errors, que é um tipo de erro em que o sinal ou dado é alterado, é comumente assegurada pela ajuda de códigos de correção de erro causadas por uma simples mudança de status do bit, denominado Single Bit Upset (SBU), bem como por códigos de correção que detectam e corrigem um erro e, ao mesmo tempo, detectam um duplo erro, Single Error Correction - Double Error Detection (SEC-DED) (CHEN; HSIAO, 1984; HAMMING, 1950). Entretanto, esses códigos não conseguem corrigir múltiplos 16 erros (GHERMAN et al., 2011), isso porque quanto maior o nível de integração dos circuitos integrados, maior a frequência de ocorrências de falhas transientes múltiplas em memórias, também chamadas de Multiple Bit Upset (MBU) (CHUGG et al., 2005; RADAELLI et al., 2006). Dentre as possíveis técnicas capazes de tratar esse problema está a técnica de emba- ralhamento de bits - interleaving (CUI; ZHANG, 2013). Ela consiste em reordenar a informação em regiões diferentes de memória com a finalidade de dificultar a ocorrência de múltiplos erros em dados pertencentes a uma mesma mensagem armazenada. Contudo, esse método pode ocasionar um atraso relevante para os processos de escrita e leitura na memória, causando um de- caimento na performance do sistema (DUTTA; TOUBA, 2007). Tendo em vista esse empecilho, a utilização de robustos códigos corretores se faz necessário. Porém, deve-se atentar para que o código não comprometa em demasia os recursos do sistema computacional, ou seja, deve-se sempre procurar aumentar a detecção e correção de erros e diminuir seu custo computacional, pois esses critérios são importantes em aplicações críticas (SAKATA et al., 2007). Certas aplicações demandam um alto desempenho e confiabilidade do sistema, tais como os que envolvem dispositivos voltados para ambientes hostis. Um exemplo desses ambientes refere-se aos que são projetados para atuar em missões espaciais, um ambiente em que exige uma alta robustez dos dispositivos, impondo testes de integração completos antes de seu lançamento. Portanto, a validação da capacidade de um código de correção de erro, em inglês Error Correction Code (ECC), em nível de hardware se faz extremamente necessária. A escolha do ECC que atenda aos requisitos de robustez e confiança, aliada aos requisitos do projeto, demanda um exame de desempenho adequado. Assim, uma ferramenta que contribua para facilitar a extração e análise do desempenho de um ECC pode ser útil para melhorar o tempo de projeto. Como soluções para os problemas descritos, foi proposta a criação de um soft- ware, chamado Memory Monitoring Software (MMS), designado para ajudar na avaliação de performance de alguns ECC, checando a eficiência dos erros identificados e corrigidos, o qual é implementado para proteger um dispositivo de memória. A ferramenta foi desenvol- vida em Python e tem a implementação de alguns ECC embarcados em um microcontrolador TMS570LS0432. Para emular as falhas ocorridas na memória, um injetor de erros foi embarcado no dispositivo, de forma que padrões de falhas são injetados. Os códigos corretores de erros utilizados neste trabalho para proteger a Random 17 Access Memory (RAM) do microcontrolador foram: – Hamming Estendido; – CLC; – CLC Estendido; – MRSC. A ferramenta controla, a partir de sua interface gráfica, quais ECC serão utilizados, bem como outras formas de combinação, tendo em vista que a comparação dos resultados de performance também é um resultado a ser analisado. 1.2 Objetivos O objetivo deste trabalho é desenvolver uma ferramenta que analise a eficiência e a robustez dos códigos corretores de erros inseridos em dispositivos de memória, visando à detecção e à correção de erros em dados armazenados em memória RAM. Assim, a ferramenta recebe e trata os resultados obtidos, por meio de um canal de comunicação serial, de forma que sejam melhor apresentados esses dados sempre visando à simplisidade e a objetividade a fim de que os analistas venham a tomar decisões mais eficientes. 1.3 Organização Este trabalho estrutura-se da seguinte forma: No Capítulo 2, são apresentados conceitos básicos relativos aos SEE focando nos tipos mais importantes e que afetam as memórias, bem como as principais técnicas aplicadas em sua proteção. O Capítulo 3 apresenta os 4 códigos corretores de erros utilizados neste trabalho. No Capítulo 4, é mostrada a metodologia utilizada, bem como a estrutura do software proposto para análise dos ECC indicados por este trabalho. O Capítulo 5 descreve e discute os experimentos realizados, além de apresentar os resultados obtidos. Por fim, o Capítulo 6 apresenta as conclusões e os trabalhos futuros. 18 2 SINGLE EVENT EFFECTS A evolução das tecnologias aplicadas aos dispositivos integrados leva à redução das tensões de threshold com altas frequências de operações. Essa evolução trouxe maior suscetibilidade a falhas transientes e permanentes. Em um cenário que envolve aplicações críticas em ambientes hostis, tal qual no ambiente espacial, tornou as memórias mais propensas a interferências eletromagnéticas devido a partículas carregadas geradas pelas explosões solares (RADAELLI et al., 2006). Para ambientes espaciais, consideramos duas classes de efeitos causados por interfe- rências eletromagnéticas (LABEL et al., 1996): – Dose total ionizante ou Total Ionizing Dose (TID); – Eventos singulares ou Single Event Effects (SEE). TID é o efeito que causa a degradação a longo prazo dos circuitos eletrônicos devido ao acúmulo de carga depositada em um material . A mais, destaca-se que dispositivos eletrônicos sofrem efeitos de radiação de longo prazo, principalmente devido a elétrons e prótons (BARNABY, 2007). A proteção do dispositivo pode ajudar a diminuir esse efeito. Os elétrons podem ser atenuados de forma eficaz pela blindagem de alumínio, mesmo em altas energias. Entretanto, ele é ineficaz para os prótons de alta energia, que provocam falha permanente do dispositivo. SEE é o efeito transitório que é induzido pela invasão de uma única partícula carregada por meio do silício. É causado por uma única partícula carregada que atinge o material, ioniza-o e provoca um pulso de corrente, podendo causar falhas transientes ou permanentes (O’BRYAN et al., 2000; HEIJMEN, 2011). 2.1 Conceitos básicos de SEE Esses efeitos podem causar danos sérios aos dispositivos. Na Figura 1, pode-se observar que o íon de alta energia, ao incidir transversalmente em uma região sensível do transistor (Figura 1(a)), produz um desequilíbrio de cargas que induz a criação de um caminho com formato cilíndrico temporário, em que as cargas são rapidamente coletadas pelo campo elétrico dessa região (Figura 1(b)). O processo de coleção de cargas é chamado de drift. O funil formado é desfeitoe os íons resultantes são equilibrados pelo processo de difusão (Figura 1(c)). O gráfico da Figura 1 ilustra o comportamento do pulso de corrente gerado após o deslocamento 19 líquido das cargas e as respectivas correntes de deriva e de difusão. (BAUMANN, 2005). Figura 1 – Efeito causado pela passagem de um íon de alta energia em um transistor Fonte: (BAUMANN, 2005) Podemos dividir os eventos que causam o mau funcionamento dos componentes em : – Hard Errors; – Soft Errors. Os chamados Hard Errors causam um mau funcionamento permanente. Já os Soft Errors são temporários (HEIJMEN, 2011) e podem ser classificados como se segue: – Single Event Transient (SET). Quando partículas atingem circuitos podendo, assim, causar inversão de valor de tensão. Isso acontece quando uma partícula afeta uma porta da lógica combinacional do circuito, criando uma falha (LOVELESS et al., 2012). – Single Event Upset (SEU). São produzidas pela inversão ou alteração na lógica de bit único, do inglês bit-flip, da memória ou registrador. Quando uma partícula carregada atinge um elemento do circuito integrado resulta em uma trilha ionizada densa na região que, por sua vez, causa um pulso de corrente transiente (BESSOT, 1993). A Figura 2 ilustra esse evento. Observa-se que o evento SEU pode apresentar-se em 3 formas: – Single Bit Upset (SBU). Inversão de apenas 1 bit armazenado em uma célula de memória; – Multiple Bit Upset (MBU). Inversão de múltiplas células de memórias; – Single Event Functional Interrupt (SEFI). Coloca o dispositivo num tempo de interrupção temporária ou para um estado indefinido. É importante observar que, segundo pesquisas envolvendo efeitos de partículas de energia, a ocorrência de SEE podem ser observadas ao nível do mar, ao contrário do que se imaginava. Trabalhos envolvendo efeitos de partículas de energia em dispositivos aos níveis do 20 Figura 2 – Partícula de carga atingindo uma superfície de silício e gerando um pulso de corrente Fonte: (O’BRYAN et al., 2000) mar e atmosférico começaram a ser apresentados em meados da década de 1990 (EUGENE- NORMAND, 2011; HEIJMEN, 2011) e experimentos com memórias identificaram que no nível do mar é possível observar uma presença significativa de raios cósmicos capazes de causar falhas em memórias (O’GORMAN, 1994). Ou seja, tais efeitos devem ser levados em consideração não apenas em ambientes fora da atmosfera, mais suscetíveis a intercorrências eletromagnéticas, mas também em outros ambientes considerados menos hostis. 2.2 SEE em memórias As memórias estão entre os componentes eletrônicos com maior suscetibilidade de ocorrências de efeitos causados pelo impacto de partículas ionizadas (Baumann, 2002). No caso de ocorrências desse tipo, o impacto de uma única partícula pode acarretar falhas em todo um sistema. Nesta seção, são apresentados os principais SEE que afetam memórias em aplicações que são consideradas críticas. 2.2.1 SBU e MBU A ocorrência de upsets em bits de memória é algo que ocorre e, por consequência, se observa desde as primeiras aplicações críticas que envolvem tais dispositivos (GUENZER et al., 1982). Assim sendo, pela sua alta ocorrência, esse foi um dos principais objetos de estudo em aplicações espaciais, inclusive sendo considerado em projetos de desenvolvimento para 21 componentes ditos tolerantes a SEU (GUENZER et al., 1982). À medida que as tecnologias aplicadas aos circuitos foram diminuindo, essa mesma partícula de carga passou a afetar não somente uma, mas várias células fisicamente próximas. A Figura 3 mostra esse efeito. Por consequência, procurou-se identificar, por meio de estudos, os principais padrões de células que são diretamente afetadas durante essas ocorrências (RADAELLI et al., 2006). Figura 3 – Efeito do raio cósmico à medida que células diminuem fisicamente de tamanho Fonte: (LI et al., 2017) A Figura 4 representa a incidência de um raio cósmico, representado pela área sombreada, em um chip de memória. É possível ver na imagem que duas células são afetadas por esse raio. Por consequência, diminuindo o espaçamento físico entre essas células, uma maior quantidade seria afetada pelo mesmo raio. Figura 4 – Múltiplos bits induzidos por raio cósmico Fonte: (SATOH et al., 2000) 22 2.2.2 Técnicas para proteção de memórias contra SEE 2.2.2.1 Blindagem eletromagnética A blindagem eletromagnética é uma espécie de escudo protetor que impede a livre passagem das ondas eletromagnéticas com um material condutivo ou magnético, de modo que as cargas se depositem nele e não no componente ao qual se deseja proteger. A Figura 5 ilustra esse escudo protetor. Figura 5 – Blindagem Eletromagnética Fonte: Elaborado pelo autor. Uma blindagem robusta em dispositivo para missões espaciais possui impacto im- portante na diminuição de SEE (SMITH, 1995). Entretanto, observa-se que, apesar de uma blindagem eficiente, nêutrons passariam pelo condutor, acarretando problemas, logo tornando a técnica pouco eficiente (ARGYRIDES et al., 2010). 2.2.2.2 Interleaving A técnica de interleaving em memórias consiste no embaralhamento dos endereços de memória a fim de evitar a ocorrência de erros adjacentes na mesma palavra ou região de memória. A Figura 6 representa a técnica de interleaving em uma memória, em que é apresentado o entrelaçamento de quatro palavras (W0 a W3), cada uma composta por três bits. O entrelaçamento 23 faz com que cada bit da palavra seja afastado de três bits de outras palavras. As linhas em cinza associam os bits de cada palavra. Figura 6 – Interleaving em memória Fonte: Elaborado pelo autor. A técnica de interleaving é usada junto com códigos corretores de erros para diminuir as chances de múltiplos erros que se apresentam em memórias (RADAELLI et al., 2006; SATOH et al., 2000; LAI et al., 2010). 2.2.2.3 Redundância Modular Tripla A redundância modular tripla, do inglês Triple Modular Redundancy (TMR), é uma técnica de tolerância a falhas proposta por Von Neumann, aplicada em circuitos eletrônicos que consistem em replicar um componente eletrônico, ou seja, a unidade de hardware é triplicada, fazendo com que o trabalho seja feito em paralelo. Essas unidades geram entradas para um circuito de votação que decide, a partir do voto da maioria, uma saída. Ou seja, se um dos sistemas falhar, os outros dois podem estar corretos e mascarar o erro. Na Figura 7, observa-se o entrelaçamento de quatro palavras. A saída é feita a partir de uma votação da maioria, assim pode garantir a confiabilidade da informação. Entretanto, é importante ressaltar que a implementação de um TMR pode acarretar um aumento do custo tanto físico, quanto financeiro de um projeto. 2.2.2.4 Códigos Corretores de Erros Uma das técnicas que é mais utilizada em sistemas ditos tolerantes a falhas é o código de correção de erro, do inglês Error Correction Code (ECC). O ECC procura detectar e corrigir erros na informação utilizando operações lógicas. Essa técnica, comparada às anteriores, tem baixo custo de aplicação (CHEN; HSIAO, 1984). Cumpre destacar que essa técnica já 24 Figura 7 – Ilustração de uma Redundância Modular Tripla Fonte: Elaborado pelo autor. era utilizada em sistemas de transmissão de dados com o intuito de garantir a proteção e a confiabilidade dos dados (VARGHESE et al., 2013). Essa técnica, apesar de possuir vantagem em relação às outras, apresenta lógicas muito complexas, o que implica a utilização de muitos recursos de computação para operar. A mais, os impactos em área, potência e atraso podem prejudicar o desempenho do sistema em aplicações que, geralmente, já possuem recursos limitados (CARDARILLI et al., 2005). Como o foco deste trabalho se refere, entre outros, aos códigos corretores de erros, no próximo capítulo, são apresentados os ECC utilizados neste trabalho. 25 3 CÓDIGOS CORRETORES Códigos corretores de erros são algoritmos que possuem a finalidade de identificar e, eventualmente, corrigir erros que porventura tenhamocorrido na informação salva na memória. Atualmente, com o intuito de garantir a máxima fidelidade dessas informações, tem havido uma ampla utilização desses algoritmos nas mais diversas áreas, tais quais: aplicações espaciais, sistemas de telecomunicações, sistemas embarcados, entre outros. No caso específico dos sistemas embarcados, seu uso tem aumentado a cada dia, impulsionado principalmente pelo seu baixo custo de implementação em relação a outros métodos que garantem um sistema tolerante a falhas. 3.1 Código Hamming Richard Wesley Hamming desenvolveu um dos primeiros ECC para aplicação em sistemas computacionais. Chamado de Código Hamming Ham (M, N), seu algoritmo tem o objetivo principal de corrigir erros simples (HAMMING, 1950) e é caracterizado pelos pontos observados a seguir: – M representa o número de bits de dados, e N o número de bits totais; – N está definido por meio da equação N = M + k, em que k representa o número de bits de Hamming; – A distância do código de Hamming é 3, dessa forma ele detecta e corrige 1 erro; – Um código de Hamming precisa respeitar as relações apresentadas em 3.1 e 3.2. 2k ≥ k+M+1 (3.1) 2M ≥ 2 N N +1 (3.2) 3.1.1 Codificação e Decodificação Hamming (4,7) O código Hamming (4,7) é um algoritmo para correções de erros lineares, pois codifica 4 bits de dados em 7 bits, sendo os 3 bits a mais destinados à paridade. Seu algoritmo 26 tem início na determinação de uma matriz geradora G que é encontrada a partir da Equação 3.3 G = [ImQ] (3.3) Em que Im é uma matriz identidade quadrada de ordem 2m −m−1, Q é a matriz formada por 2m −m−1 colunas em que há dois ou mais vetores de peso dois ou superior, e m é o número de bits de verificação de paridade (MOREIRA; FARRELL, 2006), o qual, no caso específico, é 3. Logo, considerando os valores possíveis para os vetores de peso dois ou maior que dois, tem-se que Q corresponde: 000, 001, 010, 011, 100, 101, 110, 111, em que a matriz geradora será G(4,7) = ∣∣∣∣∣∣∣∣∣∣∣∣ 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 ∣∣∣∣∣∣∣∣∣∣∣∣ (3.4) Com a matriz geradora G é possível realizar o processo de codificação do vetor. Para realizar esse processo de decodificação, é necessário realizar o produto entre o vetor ao qual se deseja codificar M (1,4) e a matriz geradora G (4,7). N = M ·G (3.5) Para exemplificar essa operação, pode-se considerar M = 1010 para o obter como resultado N = ∣∣∣1 0 1 0∣∣∣ · ∣∣∣∣∣∣∣∣∣∣∣∣ 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 ∣∣∣∣∣∣∣∣∣∣∣∣ (3.6) N = ∣∣∣0 1 0 1 0 1 0∣∣∣ (3.7) 27 Já para decodificar a palavra codificada o processo deve validar a mensagem à procura de erros que porventura possam ter ocorrido, por exemplo, durante uma transmissão de dados. A Equação 3.8 apresenta a forma segundo a qual o algoritmo faz essa verificação. Basicamente, é o produto entre a matriz de paridade H e a mensagem codificada N, em que H é definido como 3.9. M = H ·NT (3.8) H = QT Im (3.9) Se o vetor resultante tiver como resultado apenas zeros, significa que a mensagem está íntegra. Caso contrário, ela estará comprometida, necessitando, assim, de correção, sendo que a correção se dará pela realização da operação Exclusive Or (XOR) entre a mensagem codificada e o vetor de correção apresentado na Tabela 1. Tabela 1 – Posição de correção H ·NT Vetor de correção 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 Fonte: Elaborado pelo autor. MCORRIGIDO = MCODIFICADA ⊕VCORREO (3.10) 28 A fim de exemplificar esse processo, temos M = ∣∣∣∣∣∣∣∣∣ 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 ∣∣∣∣∣∣∣∣∣ · ∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣ 1 0 1 0 0 1 0 ∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣ (3.11) M = ∣∣∣∣∣∣∣∣∣ 0 0 0 ∣∣∣∣∣∣∣∣∣ (3.12) 3.1.2 Hamming Estendido O código de Hamming Estendido (M, N+1) é formado pela adição de um bit em que o valor é obtido a partir da paridade entre os bits da mensagem. Essa adição da paridade incrementa sua distância de Hamming para 4, podendo corrigir 1 erro e tendo capacidade de detectar 2 erros. A Tabela 2 apresenta os estados a partir dos resultados de checagem. Tabela 2 – Estados do Hamming Estendido (M, N+1) Síndrome Bits de Hamming Síndrome Paridade Estado Sem Erro Sem Erro Sem Erro Sem Erro Erro Erro Simples na Paridade Erro Sem Erro Erro Simples Erro Erro Erro Duplo Fonte: Elaborado pelo autor. Vale ressaltar que a paridade consiste em adicionar um bit, chamado de bit de paridade, após ou antes da sequência de bits. O bit adicional é calculado a partir da operação XOR ⊕ entre os bits da mensagem original. Tomando como exemplo M = [1 0 0 0], temos: – Para M, o bit de paridade é calculado seguindo a fórmula 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1, obtendo, assim, a mensagem codificada 10001 Para a verificação de ocorrência de erros, é feito um novo cálculo do bit de paridade. Em seguida, é feita uma operação com a paridade armazenada. Em caso de operação resultar em 29 nulo, indicará que um erro foi detectado. 3.2 Código CLC O Column-Line-Code (CLC) (CASTRO et al., 2016; SILVA et al., 2017; SILVA et al., 2018) foi desenvolvido utilizando os conceitos de Hamming Estendido e Paridade, a fim de formar um código matricial capaz de corrigir múltiplos erros. O algoritmo utiliza uma tabela de correção que determina o tipo de erro que ele corrigirá, sendo a tabela gerada a partir do valor coletado das síndromes. 3.2.1 Codificação e Decodificação CLC (16,40) O código CLC (16,40) codifica 16 bits de dados para uma mensagem de 40 bits. A Figura 8 ilustra o formato de uma mensagem CLC codificada. Figura 8 – Matriz de estrutura do CLC para 16 bits Fonte: Elaborado pelo autor. Na Figura 8, tem-se 16 bits de dados (D), 12 bits de checagem (C), 4 bits de paridade da palavra (PR) e 8 bits de paridade da coluna. A disposição dos bits codificados foi orientada de acordo com o código Matrix (16,32) (COSTAS et al., 2007). Na codificação CLC, os bits de dados são divididos em grupos de 4 bits, sendo que esses grupos são codificados utilizando Hamming Estendido (4,8). A mais, é importante destacar que, nos bits gerados nesse algoritmo de codificação, obtemos os 3 bits de checagem C e 1 bit de paridade Pr. Por fim, a última linha da matriz será formada pelos bits de paridade da coluna ,utilizando a operação XOR, importante para detecção de padrões de erros mais complexos. 30 Para o cálculo dos bits de checagem, são utilizadas as relações: C0,3,6,9 = D4·(i−1)+2 ⊕D4·(i−1)+3 ⊕D4·(i−1)+4 (3.13) C1,4,7,10 = D4·(i−1)+1 ⊕D4·(i−1)+3 ⊕D4·(i−1)+4 (3.14) C2,5,8,11 = D4·(i−1)+1 ⊕D4·(i−1)+2 ⊕D4·(i−1)+4 (3.15) em que i varia de 1 a 4. Já os bits Pr são calculados da seguinte forma: Pri−1 = D4·(i−1)+1 ⊕D4·(i−1)+2 ⊕D4·(i−1)+3 ⊕C3·(i−1)+1 ⊕C3·(i−1)+2 ⊕C3·(i−1)+3 (3.16) Por fim, a última linha será formada pelo bits de paridade de coluna gerados como se segue: Pc0 = D0 ⊕D4 ⊕D8 ⊕D12 (3.17) Pc1 = D1 ⊕D5 ⊕D9 ⊕D13 (3.18) Pc2 = D2 ⊕D6 ⊕D10 ⊕D14 (3.19) Pc3 = D3 ⊕D7 ⊕D11 ⊕D15 (3.20) Pc4 =C0 ⊕C3 ⊕C6 ⊕C9 (3.21) 31 Pc5 =C1 ⊕C4 ⊕C7 ⊕C10 (3.22) Pc6 =C2 ⊕C5 ⊕C8 ⊕C11 (3.23) Pc7 = Pr0 ⊕Pr1 ⊕Pr2 ⊕Pr3 (3.24) Para o processo de decodificação do CLC é feito o cálculo das síndromes dos bits de redundância. Para tal, o primeiro passo é gerar as síndromes dos bits de checagem (SC), de paridade da coluna (SPc) e de paridade de linha (SPr), utilizando-se as Equações 3.25, 3.26 e 3.27 SC =C⊕RC (3.25) SPc = Pc⊕RPc (3.26) SPr = Pr⊕RPr (3.27) Em que RC, RPc e RPr correspondem ao recálculo dos bits C, Pc e Pr, utilizando os bits C na mensagem. As equações 3.25 e 3.26 são utilizadas para a detecção de erros nas linhas correspondentes. Além disso, a Equação 3.27 é calculada para utilização na detecção e correção de erros triplos em uma mesma linha. A Tabela 3 mostra a correção utilizada de acordo com os erros que ocorrerem em cada linha da matriz codificada pelo algoritmo CLC. Quando todos os bits de síndrome são 0, significa que nãohouve erros detectados. Já quando há valores de bits sendo 1, erros foram detectados, e a correção pode ser aplicada de acordo com a situação. 32 Tabela 3 – Tabela de correção do CLC SC SPr SPc Tipo de erro Método de correção 0 0 0 Sem erro Nenhum método aplicado 0 0 1 Erro detectado Nenhum método aplicado 0 1 0 Erro detectado Nenhum método aplicado 0 1 1 Erro triplo detectado SPc bits 1 0 0 Erro detectado Nenhum método aplicado 1 0 1 Número par de erros detectados SPc bits 1 1 0 Número ímpar de erros detectados Hamming 1 1 1 Número ímpar de erros detectados (Caso especial) Hamming/SPc Fonte: Elaborado pelo autor. 3.2.2 Exemplo de correção por CLC A seguir é exemplificado o algoritmo de codificação e decodificação CLC. Para tanto, foi utilizado o dado de exemplo 11001010111111102. A Figura 9(a) apresenta a matriz contendo os 16 bits de dados (D), os 12 bits de checagem (C), os 4 bits de paridade da palavra (Pr) e os 8 bits de paridade da coluna (Pc). Figura 9 – Exemplo de codificação/decodificação CLC Fonte: Elaborado pelo autor. Aplicando o algoritmo de decodificação detalhado na seção anterior obtém-se os resultados apresentados na Figura 9(b). O resultado indica um erro no bit da célula [0,0]. Não apenas isso, mostra que o algoritmo identificou esse erro, porém não conseguiu corrigir. Essa afirmação pode ser comprovada pelo padrão Sc, SPr, SPc = 010 que, sendo consultado na Tabela 3, indica ação. Portanto, o dado, que originalmente é CAFE16, foi corrompido. O algoritmo identifi- cou a alteração da palavra original, porém não pôde corrigi-la. Assim sendo, tendo em vista a impossibilidade de correção, o resultado final ficou sendo 4AFE16. 33 3.3 Código CLC Estendido Além do algoritmo CLC padrão, o qual realiza a correção ao verificar a síndrome apenas uma vez, tem-se o modo Estendido, que realiza uma dupla correção. Sendo assim, sua correção é dividida em duas partes, havendo a verificação de síndromes duas vezes, o que permite, com isso, a correção de padrões mais agressivos de erro. É importante evidenciar que o modo Estendido apresenta um acréscimo de custo para sua operação (SILVA, 2018). Diferente do CLC (16,40) apresentado na seção anterior, este utiliza o Hamming Estendido (8,13) ou Hamming Estendido (2,6) (SILVA, 2018). Utilizando o primeiro, obtém-se a estrutura apresentada na Figura 10. Já utilizando o segundo caso, obtém-se a estrutura de acordo com a Figura 11. Figura 10 – Estrutura do código CLC, utilizando Hamming Estendido (8,13) para 16 bits Fonte: Elaborado pelo autor. De forma geral, a adição do Hamming Estendido traz uma diminuição do custo geral de sintetização, tendo um potencial para aplicações críticas, mesmo o número de bits de redundância para a palavra de 16 bits sendo grande, o que o torna um fator de limite para determinadas aplicações, principalmente as que possuem limitados recursos (CASTRO et al., 2016). 3.3.1 Codificação e Decodificação CLC Estendido De forma semelhante, o mesmo algoritmo de codificação e correção de erros do CLC (16,40), que foi apresentado a Seção 3.2, é utilizado aqui, mudando apenas a matriz de estrutura do código. Ou seja, diferentemente do que foi apresentado na Seção 3.2.1, apenas a Figura 8 é substituída pelas estruturas apresentadas nas Figuras 10 ou 11, permanecendo as equações já apresentadas na seção anterior. 34 Figura 11 – Estrutura do código CLC, uti- lizando Hamming Estendido (2,6) para 16 bits Fonte: Elaborado pelo autor. 3.4 Código MRSC O Matrix Region Section Code (MRSC) é baseado em códigos bidimensionais (2D), como os códigos matrix , que visam a corrigir e detectar erros em múltiplos bits nas memórias (ARGYRIDES et al., 2010). O algoritmo codifica 16 bits de dados em 32 bits. Esse algoritmo analisa as síndromes dos bits de redundância, escolhendo uma das regiões a serem corrigida. Devido a certas características, o MRSC é adequado à correção de erros adjacentes. Entre essas características, podemos citar a capacidade de detectar alguns padrões de erros na mesma coluna e a correção de MBU agressivos de uma mesma região (SILVA et al., 2020). 3.4.1 Codificação e decodificação MRSC A Figura 12 mostra a estrutura codificada por MRSC de 32 bits de um dado. As células-dado são divididas em 4 grupos, sendo cada um com 4 bits. Também há 4 bits diagonai, e 4 bits de paridade e, por fim, 8 bits de checagem. 35 Figura 12 – Modelo de dados codificados MRSC Fonte: Elaborado pelo autor. Os 4 bits diagonais (Di) são calculados pelas equações abaixo: Di0 = A0 ⊕B1 ⊕C0 ⊕D1 (3.28) Di1 = A1 ⊕B0 ⊕C1 ⊕D0 (3.29) Di2 = A2 ⊕B3 ⊕C2 ⊕D3 (3.30) Di3 = A3 ⊕B2 ⊕C3 ⊕D2 (3.31) As células de bits de paridade (P), pelas equações que se seguem: P0 = A0 ⊕B0 ⊕C0 ⊕D0 (3.32) P1 = A1 ⊕B1 ⊕C1 ⊕D1 (3.33) P2 = A2 ⊕B2 ⊕C2 ⊕D2 (3.34) P3 = A3 ⊕B3 ⊕C3 ⊕D3 (3.35) 36 Já os bits de checagem (Cb), como se seguem: CbA02 = A0 ⊕A2 (3.36) CbA13 = A1 ⊕A3 (3.37) CbB02 = B0 ⊕B2 (3.38) CbB13 = B1 ⊕B3 (3.39) CbC02 =C0 ⊕C2 (3.40) CbA13 =C1 ⊕C3 (3.41) DbB02 = D0 ⊕D2 (3.42) DbB13 = D1 ⊕D3 (3.43) A Figura 13 descreve os principais elementos da operação de paridade do codificador MRSC. Para o processo de decodificação, pode-se dividir em 3 fases (SILVA et al., 2017) – A primeira fase é a estimativa da síndrome para os bits de redundância, a saber: as equações 3.44, 3.45 e 3.46: SDi = D1 ⊕RDi (3.44) 37 Figura 13 – Descreve os principais elementos da operação de paridade do codificador MRSC Fonte: (SILVA et al., 2017) SP = P⊕RP (3.45) SCb =Cb ⊕RCb (3.46) – Depois do cálculo da síndrome, uma das seguintes condições precisa ser satisfeita: A primeira, ambos os vetores SDi e SP precisam ter, ao menos, um valor igual a 1; A segunda, mas de um valor SCb igual a 1. Essas condições permitem a detecção de erros na região dos bits de dados; – Os bits de dados são divididos em 3 regiões com a finalidade de selecionar um grupo específico de bits para a operação de correção. A Figura 14 ilustra as 3 regiões: Figura 14 – Regiões dos bits de dados do MRSC Fonte: (SILVA et al., 2017) A Tabela 4 apresenta o grupo de equações com os critérios necessários para selecionar a região do MRSC. 38 Tabela 4 – Critério para seleção de região Região selecionada Critério para seleção Região 1 (SD1 +SD2 +P1 +P2) >(SD3 +SD4 +P3 +P4) Região 2 (SD1 +SD2 +P1 +P2) <(SD3 +SD4 +P3 +P4) Região 3 (SD1 +SD2 +P1 +P2) =(SD3 +SD4 +P3 +P4) Fonte: (SILVA et al., 2017) A Figura 15 representa, de forma resumida e ilustrada, o processo de decodificação do algoritmo MRSC. Figura 15 – Diagrama de blocos da decodificação MRSC Fonte: (SILVA et al., 2017) Nesta seção, são apresentados alguns exemplos que demonstram o algoritmo de decodificação MRSC. A mais, nas outras seções de exemplos, foi utilizado o dado de 16 bits contendo o padrão 1100101011111110. A Figura 16 exibe o dado codificado pelo código MRSC. A Figura 17 mostra uma falha ocorrendo na terceira coluna. Os valores de SDi, SP e SCb são mostrados na mesma figura. Note que SD123 e SP0 contém valores iguais a 1 e que a análise da Tabela 4 indica a região 1 dos dados da matriz os quais foram selecionados para correção de SCb. O terceiro passo, como pode ser visto na Figura 15, é realizar a operação XOR entre SCb e a região selecionada. Também na Figura 17 é apresentado o resultado desse processo. Pode-se observar que não foi possível corrigir o dado, sendo o resultado A4FE16. 39 Figura 16 – Exemplo de dado codificado com MRSC Fonte: Elaborado pelo autor. Figura 17 – Exemplo de dado decodificado com MRSC Fonte: Elaborado pelo autor. 40 4 METODOLOGIA No Capítulo 3, foram discutidos, em detalhes, os quatros códigos corretores de erros utilizados neste trabalho: Hamming, CLC, CLC Estendido e MRSC. Todos esses códigos fazem parte de uma das principais formas de proteção de memórias com SEE, em especial aqueles submetidos a ambientes de muita hostilidade e que precisam de uma alta confiabilidade. Neste capítulo, é apresentado o Memory MonitoringSoftware (MMS), que trabalha na análise desses códigos de maneira objetiva e de fácil apresentação. Cumpre destacar ainda que a simulação de inserção de falhas foi feita em um dispositivo de memória, no caso, a do microcontrolador TMS570LS0432. Figura 18 – Visão geral da solução proposta Fonte: Elaborado pelo autor. A Figura 18 apresenta uma visão geral da solução proposta que é detalhada nas seções seguintes. 4.1 TMS570LS0432 O dispositivo utilizado, neste trabalho, para inserir os códigos corretores de erros, bem como a emulação do injetor de falhas na memória, foi o TMS570LS0432. Ele foi esco- lhido por ser um microcontrolador utilizado para aplicações críticas, logo traz um ambiente de desenvolvimento propício para o estudo e para a validação da ferramenta proposta neste trabalho. O TMS570LS0432 é um microcontrolador de alto desempenho para sistemas de segurança. Sua arquitetura de segurança possui, entre outras características, ECC na memória flash e na SRAM, além de paridade nas memórias periféricas, bem como capacidade de loopback nos I/Os periféricos (TEXAS INSTRUMENTS INCORPORATED, 2012). 41 O microcontrolador possui uma CPU ARM Cortex-R4 que opera a 80 MHz além de 384kb de Memória Flash e 32kb de memória RAM (TEXAS INSTRUMENTS INCORPORA- TED, 2012). O microcontrolador é usado por meio do LaunchPadT M TMS570LS04 da Texas Instruments, que é um kit de desenvolvimento projetado para ajudar os usuários avaliar e iniciar o desenvolvimento com a plataforma de microcontrolador HerculesT M, este launchpad é uma plataforma de avaliação econômica baseada no TMS570LS04. 4.2 Injeção de falhas Uma rotina de injeção de falhas em memória foi projetada em linguagem C e embarcada em um microcontrolador com o intuito de validar o software proposto. Essa rotina foi desenvolvida considerando que a memória RAM do dispositivo estará sujeita a ocorrências de SEE, mas protegida por um dos diferentes ECC, o qual também foi implementado em linguagem C. Tendo a finalidade de estimar os desempenhos dos códigos em relação aos SEE, emulamos esses eventos por meio de um Injetor de Erros (IE). Antes de incorporar a rotina de teste, desabilitamos o SEC-DED interno do microcontrolador, para não haver interferência nos resultados dos ECC. Importante observar que o injetor foi pensado considerando os resultados observa- dos em pesquisas que mostram os padrões que mais ocorrem na memória. Esses padrões de ocorrências de SEE afetam células adjacentes em uma SRAM (RAO et al., 2014). O injetor de erros desenvolvido gera de 1 a 5 padrões de erros adjacentes, uma vez que esses padrões representam cerca de 98% dos erros mais comuns (RAO et al., 2014). A Figura 19 apresenta alguns exemplos de padrões de erro produzidos (a) e não produzidos (b) pelo IE, respectivamente. Após a rotina de injeção de erros, codificação e decodificação utilizando um dos ECC, um registro, com as informações do processo, é enviado via comunicação serial para ser lido, armazenado e analisado pela aplicação. Essa rotina de codificação, inserção de erro e decodificação é ilustrada de acordo com a Figura 21. Em que: – DO é o Dado original; – DC é o Dado codificado; – DCe é o Dado codificador adicionado de erro; – DD é o Dado decodificado. 42 Figura 19 – Padrões de erros em células adjacentes Fonte: (RAO et al., 2014) A rotina apresentada na Figura 21 gera um buffer seguindo o formato Comma Separated Values (CSV) em que cada coluna é separada por um “;”. A Figura 22 mostra um exemplo desse buffer, em que a primeira coluna informa o ECC utilizado, no caso o 1 representa CLC Estendido. A segunda coluna informa a quantidade de erros gerados, no exemplo foram 5. A terceira coluna traz o dado original em formato hexadecimal (0xCAFE). A quarta coluna é preenchida com o dado original no formato binário. A quinta coluna vem com o dado original já com os erros no formato binário. Na sexta coluna, traz o dado após passar pelo processo de decodificação. Na sétima coluna é informado o tempo gasto no processo de decodificação em milissegundos. Por fim, na oitava coluna, é informado apenas um valor indicando o fim do buffer. Esse buffer, após ser montado, é enviado via comunicação serial para o software que se encarrega em armazenar no banco de dados, podendo, assim, ser analisado pela ferramenta. 43 Figura 20 – Exemplo de padrões de erros em células adjacentes implementados e não implementados Fonte: Elaborado pelo autor. Figura 21 – Rotina de codificação, inserção de erro e decodificação no microcontrolador Fonte: Elaborado pelo autor. 44 Figura 22 – Buffer de dados Fonte: Elaborado pelo autor. 4.3 Software de Monitoramento Na seção anterior foram discutidos os processos para a geração dos dados a serem enviados pelo microcontrolador à interface. Nesta etapa, será vista a apresentação dos valores pela ferramenta propriamente dita. Portanto, o software desenvolvido controla, a partir do envio de comandos pelo barramento serial, o microcontrolador. Por exemplo, indica qual o tipo de erro a ser inserido e quais ECC serão utilizados. A seguir, serão apresentadas as etapas que são executadas pela ferramenta desen- volvida, denominada MMS. É importante começar descrevendo como esses dados, vindos do barramento serial, são armazenados para, em seguida, descrever os principais pontos da interface gráfica, seus gráficos e informações apresentados. 4.3.1 Banco de dados De forma a facilitar o trabalho de consulta e análise dos resultados, os dados que chegam por meio do canal de comunicação serial, em formato CSV, (Discutido na Seção 4.2) são armazenados primeiramente em Banco de Dados. Figura 23 – Armazenamento dos dados na base de dados Fonte: Elaborado pelo autor. A Figura 23 apresenta um pequeno fragmento da tabela de consulta do banco de 45 dados. Na figura, é possível observar os mesmos campos do buffer CSV com a adição da data de criação no banco. Essa data é importante para análises que envolvem tempos na interface. O campo “clc_code” representa o tipo de código corretor utilizado. Esse padrão é de conhecimento tanto pela aplicação quanto pelo microcontrolador. O campo “erros_inserted” informa a quantidade de erros que foram injetados. Essa informação é controlada pela aplicação. 4.3.2 Interface Nesta seção são apresentas as principais características da interface de controle da ferramenta MMS. A interface apresenta os resultados obtidos por meio da emulação de erros inseridos na memória do microcontrolador, como apresentado na Seção 4.2. A ferramenta foi desenvolvida utilizando a linguagem Python. Figura 24 – Interface do software Fonte: Elaborado pelo autor. Assim sendo, de posse dos valores gerados e armazenados na base, o MMS apresenta os resultados em gráficos e tabelas a fim de fornecer uma visão geral de como os ECC atuaram na proteção da RAM. A seguir, serão apresentados os principais pontos da interface. Esses pontos estão destacados na Figura 24. 46 4.3.2.1 Gráficos gerados São 4 os gráficos gerados, como pode ser observado na Figura 24, os quais serão descritos a seguir. O primeiro, localizado na parte superior esquerda, é o gráfico de barras contendo as proporções de acordo com a quantidade de erros. Como visto, na Figura 19 da sessão 4.2, são englobados de 1 a 5 erros, perfazendo os principais padrões de erros em células de memória adjacentes. Assim, esse gráfico representa essas quantidades. Na parte superior direita está o gráfico contendo a curva de acertos, ou seja, a porcentagem por meio da qual o algoritmo detecta e corrige o erro dependendo da quantidade de erros que forem inseridos. Esse gráfico pode conter todos os ECC ao mesmo tempo, de forma que a comparação se torne mais clara. O terceiro, localizado na parte inferior esquerda, refere-se a um gráfico em pizza, o qual apresenta das falhas corrigidas de acordo com a quantidade de erros. A intenção desse gráfico é apresentar a proporcionalidade de correções de acordo coma falha. Por fim, o quarto gráfico apresenta, tal qual o terceiro, o gráfico em pizza dos erros que não foram corrigidos. Desse gráfico pode-se ter uma ideia de quais tipos de erro menos se pode corrigir. 4.3.2.2 Tabela de desempenho Essa tabela apresenta o desempenho dos ECC quando comparados ao total de amostras. Ou seja, é possível observar quais estão atuando melhor em comparação com os demais. Em cada coluna, tem-se a porcentagem de correção (em verde) e de não correção (em vermelho), como visto na Figura 24. 4.3.2.3 Opções de controle Os gráficos e a tabela de desempenho podem ser configurados de acordo com alguns parâmetros de controle. Esses parâmetros podem mostrar detalhes específicos de uma quantidade de tempo, por exemplo, ou de um código específico, ou ainda de um tipo de erro. Assim, análises mais representativas poderão ser geradas de acordo com esses controles. A Figura 25 apresenta um exemplo que traz os campos de controle da interface configurados de forma a analisar apenas o CLC Estendido, tendo o limite de tempo configurado 47 para 30 minutos e como tipo único de erro os de tipo 3. O armazenamento dos dados no banco apenas se dá quando o botão START/STOP é acionado. Ele é o responsável por enviar os comandos para o microcontrolador. Figura 25 – Interface de controle Fonte: Elaborado pelo autor. 4.3.2.4 Código corretor de erro Durante a recepção do buffer CSV, a interface apresenta em tempo real o ECC que está sendo aplicado. Assim, essa barra tem a finalidade apenas de informar ao operador o código aplicado naquele exato momento. 4.3.2.5 Dados com indicação dos bits comprometidos A Figura 26 também traz a informação, em tempo de execução, do status dos bits de dados que foram corrigidos ou não. Caso ocorra de o ECC não ser capaz de corrigir um determinado erro, ele será apresentado nesta barra. A Figura 26 apresenta um exemplo dessas informações. Nela é possível ver que o código hamming não conseguiu corrigir alguns bits, os quais estão representados pela cor vermelha. 48 Figura 26 – Barra de informação em tempo real Fonte: Elaborado pelo autor. 4.3.2.6 Barra de Menus A barra de menus possui algumas funcionalidades da interface que podem ser utilizadas. Entre as mais importantes está a criação de um arquivo pdf contendo um pequeno relatório dos testes quando estiverem finalizados. Cumpre destacar que opções como fechar a aplicação e ajuda também podem ser encontradas nessa barra. 49 5 RESULTADOS Neste capítulo, serão apresentados os resultados dos experimentos gerados para analisar a ferramenta proposta. Os experimentos estão divididos em: – Análise com todos os ECC; – Análise com os ECC de forma individual; – Análise com alteração do período de amostra. 5.1 Análise com todos os ECC Como é possível observar na Figura 27, quando o usuário opta por analisar todos os ECC ao mesmo tempo, indicando no painel de controle a opção ALL, a ferramenta apresenta de forma aleatória o ECC e a quantidade de erro inseridos. Nesse cenário, 27% do total de 6319 amostras, submetidas aos códigos CLC Esten- dido, foram corrigidas; 26% e 25% dos códigos CLC e MRSC foram corrigidos, respectivamente e 20% do Hamming. Sendo, portanto, o Hamming a menor taxa de correção do universo de amostras e o CLC Estendido o maior. Além disso, o código Hamming possui a maior quantidade de amostras não corrigidas contra 22% do CLC Estendido e do MRSC e 21% do CLC. Assim, de forma geral, é possível inferir que o código Hamming obteve piores resultado de desempenho na correção. Analisando de forma particular como foram distribuídos os erros, pode-se inferir, pelos gráficos, que praticamente todos os cenários de erros foram contemplados quase que uniformemente. Essa afirmação pode ser corroborada pelo auxílio do gráfico superior esquerdo. Nele é possível observar que, do total de amostras, em média 1250 foram distribuídas para cada tipo. Ou seja, não houve uma preferência visível pelo padrão, sendo o resultado uniforme. Também pode-se afirmar que alguns códigos desempenham melhor ou pior a correção de acordo com a quantidade de erros inseridos. Isso pode ser claramente observado no gráfico superior direito em que se tem a curva de correção. Nesse cenário, em especial, pode-se concluir, apenas olhando o gráfico resultante, que os códigos CLC, CLC Estendido e MRSC foram ligeiramente melhores que o Hamming Estendido. Especificamente, não há muita diferença entre os algoritmos CLC, CLC Estendido e MRSC quando o padrão de erro contém apenas 1 ou 2 falhas. Essa diferença começa a ser mais nítida quando se aumenta a quantidade de erros. O reflexo dessas curvas pode ser também analisado quando se olha apenas para a 50 porcentagem de erros corrigidos ou não. Ou seja, quando se olha para o tipo de erro e não para o código corretor. Os gráficos inferiores esquerdo e direito têm esse objetivo. No primeiro, é possível destacar que 31,5% dos erros seguem o padrão SBU, ou seja, apenas um único bit de falha é corrigido, sendo, no cenário em questão, uma quantidade de 1299 amostras. Isso contra 29,7% no padrão 2, caindo para 19,2% no padrão 3 e tão somente 7,5% no padrão 5, o que claramente indica a dificuldade que os ECC têm em corrigir falhas mais complexas. Com relação ao tempo gasto para a decodificação em cada algoritmo, pode-se observar que o CLC Estendido é o que, em média, gasta mais para a sua decodificação, e o Hamming, o que gasta menos tempo. Na Figura 27, é possível ver essa diferença: 0,025ms, em média, para decodificar por meio do CLC Estendido, contra 0,009ms no Hamming. Isso pode ser explicado pela maior complexidade do primeiro em ao relação ao segundo. Logo, de forma geral, pode-se afirmar que nesse cenário o CLC Estendido foi o algoritmo que melhor atuou. Em contrapartida, ele é o algoritmo que leva mais tempo e, portanto, mais recursos do microcontrolador para a decodificação. Já o Hamming foi o menos eficaz, porém o mais rápido. Figura 27 – Desempenho com todos os quatros ECC Fonte: Elaborado pelo autor. 51 5.2 Análise dos ECC individualmente Quando se deseja analisar apenas um determinado ECC, individualmente, o painel de controle deve ser configurado de forma a refletir essa vontade. Como é possível observar nas imagens que se seguem, a ferramenta oferece a opção de analisar individualmente cada ECC. Observando-se os gráficos resultantes das Figuras 28, 29, 30 e 31, pode-se infe- rir as mesmas conclusões apresentadas na seção anterior. Contudo, é importante observar que as porcentagens de dados que obtiveram sucesso permanecem ligeiramente proporcionais, excetuando-se, apenas, o código Hamming devido a sua dificuldade em corrigir erros do tipo 2, ou seja, com 2 erros inseridos. Figura 28 – Desempenho utilizando apenas CLC Fonte: Elaborado pelo autor. 5.3 Alteração do tempo de coleta de amostra Uma outra opção oferecida ao operador para análise dos resultados é quando se deseja limitar o tempo de coleta de amostras. Ou seja, pode-se limitar as amostras dentro de um espaço de tempo determinado. Dependendo desse tempo pode-se chegar a resultados diferentes. Quanto maior o tempo limite e, como consequência, a quantidade de amostras, melhor é a análise. Ou seja, o resultado torna-se mais estável, sem muitas alterações. As figuras a seguir trazem um recorte temporal para exemplificar essa afirmação. A Figura 32 apresenta as amostras referentes aos 60 últimos minutos. É possível 52 Figura 29 – Desempenho utilizando apenas CLC estendido Fonte: Elaborado pelo autor. Figura 30 – Desempenho utilizando apenas MRSC Fonte: Elaborado pelo autor. afirmar que o gráfico da curva de correção ainda não é o que poderia se chamar de um estado estável, ou seja, as mudanças não são mais significativas a ponto de alterar muito o resultado. Mesmo assim, pode-se dizer que já apresenta semelhanças do que poderia ser uma quase estabilidade. Os resultados com 120 minutos de amostras coletadas estão mais próximosdos que se espera. Inclusive, as porcentagens são bastante semelhantes quando se compara com o resultado em que há 6319 amostras da Figura 27. 53 Figura 31 – Desempenho utilizando apenas Hamming Fonte: Elaborado pelo autor. Quando se olha para os resultados das Figuras 34 e 35 pode-se afirmar que uma certa estabilidade nos resultados foi atingida. Ou seja, a partir de uma tempo limite para coleta de amostras ou quantidade de amostras, os resultados não irão se alterar drasticamente pois já atingiram um certo grau de estabilidade. Figura 32 – Desempenho utilizando os 60 últimos minutos de dados Fonte: Elaborado pelo autor. 54 Figura 33 – Desempenho utilizando os 120 últimos minutos de dados Fonte: Elaborado pelo autor. Figura 34 – Desempenho utilizando os 240 últimos minutos de dados Fonte: Elaborado pelo autor. Também é interessante notar que a quantidade de amostras não interfere no tempo médio de decodificação gasto por cada algoritmo, sendo o CLC Estendido o mais lento, ou seja, 55 Figura 35 – Desempenho utilizando os 360 últimos minutos de dados Fonte: Elaborado pelo autor. 0,025ms e o Hamming o mais rápido, 0,009ms. Em contrapartida, ela interfere na eficácia dos códigos em relação ao demais. Por exemplo, o MRSC com 60 minutos de amostras obteve 30% de correções (Figura 32) e com 360 minutos de amostras obteve 26% (Figura 35). 5.4 Relatório A ferramenta oferece a opção de gerar um relatório Portable Document Format (PDF), contendo as principais informações relativas às análises geradas durante o monitoramento. O relatório gerado pela ferramenta contém informações como: – Cabeçalho; – Data; – Operador; – Tipo de código utilizado; – Quantidade total de amostras; – Quantidade de amostras corrigidas e não corrigidas; – Tempo médio de decodificação dos algoritmos. Esse relatório arquiva as informações obtidas durante a utilização da ferramenta. 56 6 CONCLUSÕES E TRABALHOS FUTUROS Este trabalho apresentou a criação da ferramenta de monitoramento de erros em memória chamada MMS, criada para auxiliar na análise dos dados gerados a partir da inserção de falhas em memória de um dispositivo desenvolvido para aplicações ditas tolerantes a falhas. O software facilita a avaliação de uma implementação ECC nos dispositivos de memória, sendo uma ferramenta para ser usada em pesquisas e em desenvolvimento de aplicações, envolvendo, por exemplo, computador de bordo em missões espaciais ou outros ambientes hostis. A va- lidação desse software foi feita adicionando códigos corretores de erros no microcontrolador TMS570LS0432, com a finalidade de proteger dados contidos na memória RAM. O MMS provou ter ferramentas capazes de apresentar, ao usuário, os resultados de desempenho de um código corretor de erro desejado. A estrutura proposta foi criada para facilitar o armazenamento dos logs dos testes realizados no microcontrolador TMS570LS0432, o qual é responsável pela inserção de erros, pela codificação e decodificação dos dados, utilizando quatro códigos corretores de erros, bem como pela sua análise simplificada e objetiva por meio de gráficos e tabelas gerados automaticamente e em tempo de execução. Foram realizados mais de 6 mil testes utilizando diferentes tipos de erros com padrões adjacentes mais encontrados em aplicações tolerantes a falha. Esses erros foram submetidos a 4 tipos diferentes de ECC, tendo o objetivo de detectar e corrigir as falhas. A partir de uma interface simples, a ferramenta proporciona ao pesquisador, mudar parâmetros que lhe atendam na busca de encontrar o ECC que mais esteja de acordo com o seu projeto ou simplesmente permite uma forma de comparação com outros códigos corretores de erros existentes. Especificamente com base nos resultados obtidos, pôde-se afirmar que o MRSC ob- teve melhores resultados comparando-o aos demais ECC. Entretanto, a depender dos parâmetros que vierem a ser configurados, poderão vir a obter resultados diferentes. Portanto, a ferramenta desenvolvida trouxe dinamicidade aos testes e as análises feitas, obtendo resultados, em tempo de execução, dos principais parâmetros que levam à escolha do ECC em projetos que exigem tolerância a falhas. Por fim, este trabalho atingiu seus objetivos que são a criação de uma ferramenta de monitoramento de memórias capaz de analisar, de forma clara e ojetiva, os resultados de erros inseridos de forma aleatória na memória de um microcontrolador e apresentar os resultados ao usuário, podendo tirar melhores conclusões sobre os códigos implementados. 57 REFERÊNCIAS ARGYRIDES, C.; REVIRIEGO, P.; PRADHAN, D.; MAESTRO, J. Matrix-based codes for adjacent error correction. Nuclear Science, IEEE Transactions on, v. 57, p. 2106 – 2111, set. 2010. BARNABY, H. Total-ionizing-dose effects in modern cmos technologies. Nuclear Science, IEEE Transactions on, v. 53, p. 3103 – 3121, jan. 2007. Baumann, R. The impact of technology scaling on soft error rate performance and limits to the efficacy of error correction. In: Digest. International Electron Devices Meeting,. [S. l.: s. n.], 2002. p. 329–332. BAUMANN, R. Radiation-induced soft errors in advanced semiconductor technologies. IEEE Transactions on Device and Materials Reliability, v. 5, p. 305–316, 2005. BESSOT, D. Conception de Deux Points Memoire Statiques CMOS durcis Contre L’effet des Aleas Logiques Provoques par L’environment Radiatif Spatial. [S. l.]: INPG, 1993. CARDARILLI, G. C.; OTTAVI, M.; PONTARELLI, S.; RE, M.; SALSANO, A. Fault tolerant solid state mass memory for space applications. Aerospace and Electronic Systems, IEEE Transactions on, v. 41, p. 1353 – 1372, nov. 2005. CASTRO, H. S.; SILVEIRA, J.; COELHO, A.; SILVA, F. G. A. e; MAGALHÃES, P. D. S.; LIMA, O. A. de. A correction code for multiple cells upsets in memory devices for space applications. 2016 14th IEEE International New Circuits and Systems Conference (NEWCAS), p. 1–4, 2016. CHEN, C.; HSIAO, M.-Y. Error-correcting codes for semiconductor memory applications: A state-of-the-art review. IBM Journal of Research and Development, v. 28, p. 124–134, mar. 1984. CHUGG, A.; MOUTRIE, M.; JONES, R. Broadening of the variance of the number of upsets in a read-cycle by mbus. Nuclear Science, IEEE Transactions on, v. 51, p. 3701 – 3707, jan. 2005. COSTAS, A.; HAMID, Z.; PRADHAN, D. Matrix codes: Multiple bit upsets tolerant method for sram memories. In: 22nd IEEE International Symposium on Defect and Fault Tolerance in VLSI Systems. Roma: [S. n.], 2007. p. 340–348. CUI, Y.; ZHANG, X. Research and implemention of interleaving grouping hamming code algorithm. In: . [S. l.: s. n.], 2013. p. 1–4. DUTTA, A.; TOUBA, N. Multiple bit upset tolerant memory using a selective cycle avoidance based sec-ded-daec code. In: . [S. l.: s. n.], 2007. p. 349–354. EUGENENORMAND. Single event effects in avionics and on the ground. International Journal of High Speed Electronics and Systems, nov. 2011. FERREYRA, P.; MARQUES, C.; FERREYRA, R.; GASPAR, J. Failure map functions and accelerated mean time to failure tests: New approaches for improving the reliability estimation in systems exposed to single event upsets. Nuclear Science, IEEE Transactions on, v. 52, p. 494 – 500, mar. 2005. 58 GHERMAN, V.; EVAIN, S.; AUZANNEAU, F.; BONHOMME, Y. Programmable extended sec-ded codes for memory errors. In: . [S. l.: s. n.], 2011. p. 140–145. GUENZER, C.; III, A. C.; SHAPIRO, P. Single event upsets in nmos microprocessors. Nuclear Science, IEEE Transactions on, v. 28, p. 3955 – 3958, jan. 1982. GURUN, G.; ZAHORIAN, J.; SISMAN, A.; KARAMAN, M.; HASLER, P.; DEGERTEKIN, F. An analog integrated circuit beamformer for high-frequency medical ultrasound imaging. IEEE transactions on biomedical circuits and systems, v. 6, p. 454–67, out. 2012. HAMMING, R. W. Error detecting and error correcting codes. Bell Syst. Tech. J, v. 29, n. 2, p. 147–160, 1950. HAZUCHA, P.; SVENSSON, C. Impact of cmos technology scaling on the atmospheric neutron soft error rate. Nuclear Science,IEEE Transactions on, v. 47, p. 2586 – 2594, jan. 2001. HEIJMEN, T. Soft Errors In Modern Electronic Systems. [S. l.: s. n.], 2011. 1-25 p. HENTSCHKE, R.; MARQUES, F.; KASTENSMIDT, F.; CARRO, L.; SUSIN, A.; REIS, R. Analyzing area and performance penalty of protecting different digital modules with hamming code and triple modular redundancy. p. 95– 100, fev. 2002. KOHLER, P.; POUGET, V.; WROBEL, F.; SAIGNE, F.; WANG, P.-X.; VASSAL, M.-C. Analysis of single-event effects in ddr3 and ddr3l sdrams using laser testing and monte-carlo simulations. IEEE Transactions on Nuclear Science, p. 1–1, dez. 2017. LABEL, K.; BARNES, C.; MARSHALL, P.; MARSHALL, C.; JOHNSTON, A.; REED, R.; BARTH, J.; SEIDLECK, C.; KAYALI, S.; O’BRYAN, M. A roadmap for nasa’s radiation effects research in emerging microelectronics and photonics. In: . [S. l.: s. n.], 2000. v. 5, p. 535 – 545 vol.5. LABEL, K.; GATES, M. M.; MORAN, A.; MARSHALL, P.; BARTH, J.; STASSINOPOULOS, E.; SEIDLECK, C.; DALE, C. Commercial microelectronics technologies for applications in the satellite radiation environment. 1996 IEEE Aerospace Applications Conference. Proceedings, v. 1, p. 375–390 vol.1, 1996. LAI, Y.-K.; CHEN, L.-F.; CHIOU, W.-C. A memory interleaving and interlacing architecture for deblocking filter in h.264/avc. Consumer Electronics, IEEE Transactions on, v. 56, p. 2812 – 2818, dez. 2010. LI, J.; REVIRIEGO, P.; XIAO, L.; ARGYRIDES, C. Extending 3-bit burst error-correction codes with quadruple adjacent error correction. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, v. 26, nov. 2017. LITTLEWOOD, B. The risk of software. In: Scientific American. [S. l.: s. n.], 1992. p. 62–75. LOVELESS, D.; KAUPPILA, J.; JAGANNATHAN, S.; BALL, D.; ROWE, J.; GASPARD, N.; ATKINSON, N.; BLAINE, R.; REECE, T.; AHLBIN, J.; HAEFFNER, T.; ALLES, M.; HOLMAN, W.; BHUVA, B.; MASSENGILL, L. On-chip measurement of single-event transients in a 45 nm silicon-on-insulator technology. IEEE Transactions on Nuclear Science, v. 59, p. 2748–2755, dez. 2012. MARTINS, E.; AMBROSIO, A. M. Testes de tolerância a falhas em sistemas de comunicação. In: VII Simpósio de Computadores Tolerantes a Falhas. [S. l.: s. n.], 2003. 59 MOREIRA, J.; FARRELL, P. Essentials of Error-Control Coding. The Atrium, Southern Gate, Chichester, West Sussex, England.: Wiley, 2006. 64-65 p. NICOLAIDIS, M. Soft Errors In Modern Electronic Systems. [S. l.: s. n.], 2011. O’BRYAN, M.; LABEL, K.; REED, R.; JR, J.; LADBURY, R.; BARTH, J.; KNIFFIN, S.; SEIDLECK, C.; MARSHALL, P.; MARSHALL, C.; KIM, H.; HAWKINS, D.; SANDERS, A.; CARTS, M.; FORNEY, J.; ROTH, D.; KINNISON, J.; NHAN, E.; SAHU, K. Radiation damage and single event effect results for candidate spacecraft electronics. In: . [S. l.: s. n.], 2000. p. 106 – 122. O’GORMAN, T. Effect of cosmic rays on the soft error rate of a dram at ground level. Electron Devices, IEEE Transactions on, v. 41, p. 553 – 557, maio 1994. RADAELLI, D.; PUCHNER, H.; WONG, S.; DANIEL, S. Investigation of multi-bit upsets in a 150 nm technology sram device. Nuclear Science, IEEE Transactions on, v. 52, p. 2433 – 2437, jan. 2006. RAO, P.; EBRAHIMI, M.; SEYYEDI, R.; TAHOORI, M. Protecting sram-based fpgas against multiple bit upsets using erasure codes. In: . [S. l.: s. n.], 2014. SAKATA, T.; HIROTSU, T.; YAMADA, H.; KATAOKA, T. A cost-effective dependable microcontroller architecture with instruction-level rollback for soft error recovery. In: . [S. l.: s. n.], 2007. p. 256–265. SATOH, S.; TOSAKA, Y.; WENDER, S. A. Geometric effect of multiple-bit soft errors induced by cosmic ray neutrons on dram’s. IEEE Electron Device Letters, v. 21, p. 310–312, 2000. SILVA, F.; ALCâNTARA, O.; FREITAS, W.; VARGAS, F.; SILVEIRA, J.; MARCON, C. An efficient, low-cost ecc approach for critical-application memories. In: . [S. l.: s. n.], 2017. p. 198–203. SILVA, F.; FREITAS, W.; SILVEIRA, J.; MARCON, C.; VARGAS, F. Extended matrix region selection code: An ecc for adjacent multiple cell upset in memory arrays. Microelectronics Reliability, v. 106, p. 113582, mar. 2020. SILVA, F.; MAGALHAES, W.; SILVEIRA, J.; FERREIRA, J. M.; MAGALHÃES, P. D. S.; LIMA, O. A. de; MARCON, C. Evaluation of multiple bit upset tolerant codes for nocs buffering. 2017 IEEE 8th Latin American Symposium on Circuits & Systems (LASCAS), p. 1–4, 2017. SILVA, F.; SILVEIRA, J.; SILVEIRA, J.; MARCON, C.; VARGAS, F.; LIMA, O. A. de. An extensible code for correcting multiple cell upset in memory arrays. Journal of Electronic Testing, v. 34, p. 417–433, 2018. SILVA, F. G. A. Um código extensível para correção de multiple bit upsets em memórias. Fortaleza- Ceará: UFC, 2018. SMITH, E. Effects of realistic satellite shielding on see rates. Nuclear Science, IEEE Transactions on, v. 41, p. 2396 – 2399, jan. 1995. TEXAS INSTRUMENTS INCORPORATED. TMS570LS0x32 16- and 32-BitRISC Flash Microcontroller. [S. l.], 2012. 60 VARGHESE, B.; SREELAL, S.; VINOD, P.; KRISHNAN, A. Multiple bit error correction for high data rate aerospace applications. In: . [S. l.: s. n.], 2013. p. 1086–1090. Folha de rosto Agradecimentos Resumo Abstract Sumário Introdução Motivação Objetivos Organização Single Event Effects Conceitos básicos de SEE SEE em memórias SBU e MBU Técnicas para proteção de memórias contra SEE Blindagem eletromagnética Interleaving Redundância Modular Tripla Códigos Corretores de Erros Códigos corretores Código Hamming Codificação e Decodificação Hamming (4,7) Hamming Estendido Código CLC Codificação e Decodificação CLC (16,40) Exemplo de correção por CLC Código CLC Estendido Codificação e Decodificação CLC Estendido Código MRSC Codificação e decodificação MRSC Metodologia TMS570LS0432 Injeção de falhas Software de Monitoramento Banco de dados Interface Gráficos gerados Tabela de desempenho Opções de controle Código corretor de erro Dados com indicação dos bits comprometidos Barra de Menus Resultados Análise com todos os ECC Análise dos ECC individualmente Alteração do tempo de coleta de amostra Relatório Conclusões e Trabalhos Futuros REFERÊNCIAS
Compartilhar