Escolar Documentos
Profissional Documentos
Cultura Documentos
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
FORTALEZA
2020
MOABE FERREIRA DOMINGOS
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)
BANCA EXAMINADORA
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.
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.
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
1.1 Motivação
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
1.2 Objetivos
1.3 Organização
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 é desfeito e 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
Figura 2 – Partícula de carga atingindo uma superfície de silício e gerando um pulso de corrente
Figura 3 – Efeito do raio cósmico à medida que células diminuem fisicamente de tamanho
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
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.
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).
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
3 CÓDIGOS CORRETORES
2k ≥ k + M + 1 (3.1)
M2N
2 ≥ (3.2)
N +1
tem início na determinação de uma matriz geradora G que é encontrada a partir da Equação 3.3
G = [Im Q] (3.3)
1 0 0 0 1 1 1
0 1 0 0 1 1 0
G(4, 7) = (3.4)
0 0 1 0 1 0 1
0 0 0 1 0 1 1
N = M·G (3.5)
Para exemplificar essa operação, pode-se considerar M = 1010 para o obter como
resultado
1 0 0 0 1 1 1
0 1 0 0 1 1 0
N= 1 0 1 0 · (3.6)
0 0 1 0 1 0 1
0 0 0 1 0 1 1
N= 0 1 0 1 0 1 0 (3.7)
27
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.
1
0
1 1 1 0 1 0 0 1
M= 1 1 0 1 0 1 0 · 0 (3.11)
1 0 1 1 0 0 1 0
1
0
0
M= 0 (3.12)
0
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.
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
em que i varia de 1 a 4.
Já os bits Pr são calculados da seguinte forma:
Por fim, a última linha será formada pelo bits de paridade de coluna gerados como
se segue:
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)
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ão houve 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
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
CbA02 = A0 ⊕ A2 (3.36)
CbA13 = A1 ⊕ A3 (3.37)
CbB02 = B0 ⊕ B2 (3.38)
CbB13 = B1 ⊕ B3 (3.39)
DbB02 = D0 ⊕ D2 (3.42)
DbB13 = D1 ⊕ D3 (3.43)
SP = P ⊕ RP (3.45)
– 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:
4 METODOLOGIA
A Figura 18 apresenta uma visão geral da solução proposta que é detalhada nas
seções seguintes.
4.1 TMS570LS0432
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.
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.
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
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
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 com a 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.
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.
5 RESULTADOS
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.
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
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óximos dos
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
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.
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
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.
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.
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.
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.
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
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.
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.
SMITH, E. Effects of realistic satellite shielding on see rates. Nuclear Science, IEEE
Transactions on, v. 41, p. 2396 – 2399, jan. 1995.
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.