Вы находитесь на странице: 1из 59

Universidade Federal de Pernambuco

Centro de Cincias Exatas e da Natureza


Departamento de Informtica

TRABALHO DE GRADUAO EM ENGENHARIA DA


COMPUTAO

TOLERNCIA A FALHAS
PARA

SISTEMAS EMBARCADOS

Autora: Ana Carla dos Oliveira Santos


Orientador: Srgio Vanderlei Cavalcante
Recife, junho de 2000

Resumo
Os sistemas de computao esto auxiliando cada vez mais as atividades das pessoas,
que passam a depender mais fortemente do desempenho desses sistemas. Dessa forma, torna-se
necessria a utilizao de mecanismos para lidar com os problemas que potencialmente possam
afetar o bom funcionamento dos sistemas. Tolerncia a falhas um desses mecanismos e procura
oferecer alternativas que permitam ao sistema manter o funcionamento desejado, mesmo na
ocorrncia de falhas.
Assim como os computadores pessoais, os sistemas embarcados tambm tm se tornado
mais utilizados nos ltimos anos, atingindo um grande nmero de usurios. Desse modo, os
sistemas embarcados devem oferecer confiabilidade no seu funcionamento, evitando o prejuzo
das pessoas que os utilizam e que, de alguma forma, dependem deles.
O objetivo deste trabalho consiste no estudo das tcnicas existentes para aplicao de
tolerncia a falhas e uma proposta de um modelo para utilizao de tais tcnicas para o
desenvolvimento de sistemas embarcados confiveis, analisando os aspectos de complexidade e
recursos envolvidos em cada tcnica.

Tolerncia a Falhas para Sistemas Embarcados

Agradeo primeiramente a Deus, pelo auxlio e conforto


nos momentos de dvida e angstia. Aos meus pais e minhas
irms, pelo apoio e confiana. Ao orientador, pelo incentivo,
dedicao

pela

ajuda

para

entender

os

conceitos

principalmente o funcionamento da placa XS40. Aos amigos,


pelos momentos de descontrao e de apoio. amiga Daniela
Ramalho, por me auxiliar na utilizao do Foundation e estar
sempre disponvel, apesar de to ocupada.
A todos vocs dedico este trabalho.
Ana Carla dos Oliveira Santos

Tolerncia a Falhas para Sistemas Embarcados

1 INTRODUO............................................................................................................................. 7

2 VISO GERAL DE TOLERNCIA A FALHAS...................................................................... 9


2.1 CONCEITOS BSICOS.....................................................................................................................9
2.1.1 TERMINOLOGIA............................................................................................................................9
2.1.2 CLASSIFICAO DE FALHAS......................................................................................................10
2.1.3 APLICAES PARA TOLERNCIA A FALHAS..............................................................................11
2.1.4 FASES DO PROCESSO DE TOLERNCIA A FALHAS......................................................................11
2.2 TIPOS DE REDUNDNCIA.............................................................................................................13
2.2.1 HARDWARE................................................................................................................................13
2.2.2 SOFTWARE..................................................................................................................................13
2.2.3 INFORMAO.............................................................................................................................13
2.2.4 TEMPO........................................................................................................................................13
3 VISO GERAL DO PROJETO DE SISTEMAS EMBARCADOS........................................ 14
3.1 DEFINIO...................................................................................................................................14
3.2 PROJETO DE SISTEMAS EMBARCADOS.......................................................................................15
3.2.1 PROCESSADORES DE PROPSITO NICO....................................................................................15
3.2.2 PROCESSADORES DE PROPSITO GERAL....................................................................................16
3.2.3 ASIP...........................................................................................................................................16
4 CLASSIFICAO DE TCNICAS DE TOLERNCIA A FALHAS................................... 18
4.1 CRITRIOS DE CLASSIFICAO..................................................................................................18
4.1.1 TIPO DE REDUNDNCIA UTILIZADA..........................................................................................18
4.1.2 MEIO DE IMPLEMENTAO........................................................................................................18
4.1.3 OBJETIVO...................................................................................................................................18
4.1.4 ASPECTOS GERAIS.....................................................................................................................19
4.1.5 ASPECTOS DA APLICAO EM SISTEMAS EMBARCADOS...........................................................19
4.2 TCNICAS ANALISADAS...............................................................................................................20
4

Tolerncia a Falhas para Sistemas Embarcados

4.2.1 NMR..........................................................................................................................................20
4.2.2 DUPLICAO COM COMPARAO (DUPLICATION WITH COMPARISON)....................................21
4.2.3 TMR (TRIPLE MODULAR REDUNDANCY)..................................................................................22
4.2.4 MID-VALUE SELECT...................................................................................................................23
4.2.5 FLUX-SUMMING..........................................................................................................................24
4.2.6 STANDBY SPARING.....................................................................................................................25
4.2.7 NMR COM SPARES.....................................................................................................................26
4.2.8 CDIGOS DE DETECO E CORREO DE ERROS......................................................................26
4.2.9 VERIFICAO DE CONSISTNCIA (CONSISTENCY CHECKS).......................................................28
4.2.10 VERIFICAO DE CAPACIDADE (CAPABILITY CHECKS ).........................................................29
4.2.11 N-VERSES..............................................................................................................................30
4.2.12 BLOCOS DE RECUPERAO (RECOVERY BLOCKS)..................................................................32
4.2.13 UTILIZAO DE DISPOSITIVOS ESPECFICOS............................................................................33
5 MODELO PARA APLICAO DE TOLERNCIA A FALHAS EM SISTEMAS
EMBARCADOS............................................................................................................................. 36
5.1 FASES DO PROJETO DE SISTEMAS EMBARCADOS......................................................................36
5.1.1 ESPECIFICAO DOS REQUISITOS..............................................................................................36
5.1.2 DECOMPOSIO EM MDULOS..................................................................................................37
5.1.3 IMPLEMENTAO.......................................................................................................................37
5.1.4 TESTES E VALIDAO................................................................................................................37
5.2 FASES ADICIONAIS PARA A APLICAO DE TOLERNCIA A FALHAS.......................................37
5.2.1 IDENTIFICAO DOS MDULOS CRTICOS.................................................................................38
5.2.2 IDENTIFICAO E ANLISE DAS PROVVEIS FALHAS...............................................................38
5.2.3 ESCOLHA DA(S) TCNICA(S) DE TOLERNCIA A FALHAS..........................................................39
5.2.4 SISTEMA DE INJEO DE FALHAS..............................................................................................40
5.3 O MODELO PROPOSTO................................................................................................................41
6 ESTUDO DE CASO.................................................................................................................... 43
6.1 APLICAO DO MODELO............................................................................................................43
6.1.1 ESPECIFICAO DE REQUISITOS.................................................................................................43
6.2 DECOMPOSIO EM MDULOS E IDENTIFICAO DOS MDULOS CRTICOS........................43
5

Tolerncia a Falhas para Sistemas Embarcados

6.2.1 IDENTIFICAO E ANLISE DAS PROVVEIS FALHAS...............................................................44


6.2.2 ESCOLHA DAS TCNICAS DE TOLERNCIA A FALHAS...............................................................44
6.2.3 IMPLEMENTAO.......................................................................................................................44
6.2.4 TESTES.......................................................................................................................................47
6.3 RESULTADOS OBTIDOS................................................................................................................48
6.4 DIFICULDADES ENCONTRADAS...................................................................................................48
7 CONCLUSES E TRABALHOS FUTUROS.......................................................................... 51

8 REFERNCIAS.......................................................................................................................... 53

9 APNDICE A UTILIZANDO A PLACA XS40-010E DA XESS ........................................ 55

Tolerncia a Falhas para Sistemas Embarcados

1 INTRODUO
Os sistemas de computao esto auxiliando cada vez mais as atividades das pessoas,
que passam a depender mais fortemente do desempenho desses sistemas. medida que mais
pessoas so beneficiadas pelas mquinas, mais prejuzo causado pelos problemas ocorridos no
funcionamento destas.
Dessa forma, torna-se necessria a utilizao de mecanismos para lidar com os problemas
que potencialmente possam afetar os sistemas. Tolerncia a falhas um desses mecanismos.
Diferente da preveno de falhas, tolerar as falhas do sistema, implica em reconhecer que as
falhas so inevitveis e oferecer alternativas que permitam ao sistema manter o funcionamento
desejado mesmo na ocorrncia de falhas. As falhas podem ter origem em erros de projeto ou de
implementao, desgaste do material ou colapsos na fonte de energia. Ainda que todo cuidado
tenha sido empregado, utilizando tcnicas formais de especificao e refinamento dos projetos e
verificao de que a implementao dos algoritmos est correta, o software depende do hardware
para executar suas funes, estando este sujeito ao desgaste fsico do material, que inevitvel.
Portanto para sistemas crticos, onde uma falha acarreta grandes prejuzos, um bom
mtodo de tolerncia a falhas deve ser empregado.
Assim como os computadores pessoais, os sistemas embarcados tambm tm se tornado
mais utilizados nos ltimos anos, afetando cada vez mais pessoas. Desde terminais bancrios de
caixas eletrnicos a aparelhos eletrodomsticos, diariamente as pessoas so beneficiadas pelos
servios que esse tipo de sistema oferece. Desse modo, os sistemas embarcados devem oferecer
confiabilidade no seu funcionamento, evitando o prejuzo das pessoas que utilizam os sistemas e
dependem deles.
Para se adquirir tolerncia a falhas, faz-se necessrio o uso de redundncia, seja ela de
componentes de software ou hardware, informaes ou tempo. E no caso dos sistemas
embarcados, onde no s o custo e o desempenho, mas atributos como volume, peso e consumo
de energia so cruciais para a viabilidade de seu desenvolvimento e utilizao, a aplicao de
tcnicas de tolerncia a falhas deve ser bem dosada.
O objetivo deste trabalho consiste no estudo das tcnicas existentes para aplicao de
tolerncia a falhas e uma proposta de modelo para utilizao de tais tcnicas para o

Tolerncia a Falhas para Sistemas Embarcados

desenvolvimento de sistemas embarcados confiveis, analisando os aspectos de complexidade e


recursos envolvidos em cada tcnica.
O captulo 2 trata dos conceitos bsicos da rea de tolerncia a falhas. No captulo 3,
encontra-se uma definio para sistemas embarcados e expe aspectos de desenvolvimento
destes. O captulo 4 dedicado s principais tcnicas de tolerncia a falhas, apresentando uma
classificao e analisando os aspectos do emprego de tais tcnicas no projeto de sistemas
embarcados. No captulo 5 proposto o modelo para a aplicao de tolerncia a falhas em
sistemas embarcados e um estudo de caso apresentado no captulo 6.

Tolerncia a Falhas para Sistemas Embarcados

2 VISO GERAL DE TOLERNCIA A FALHAS


Na busca de sistemas mais confiveis, alguns meios foram desenvolvidos para oferecer
mais confiana aos sistemas, entre eles est a tolerncia a falhas. Tendo em mente que falhas so
inevitveis, procura-se atribuir aos sistemas a capacidade de tolerar a ocorrncia de falhas
apresentando funcionamento desejado, ou pr-definido, evitando assim danos ao usurio. Para
isso, algum tipo de redundncia deve ser utilizado.

2.1 CONCEITOS BSICOS


2.1.1

TERMINOLOGIA
Na rea de tolerncia a falhas, os termos falha, erro e defeito apresentam diferentes

significados.
Uma falha uma condio fsica anmala, causada por erros de projeto, problemas de
fabricao ou distrbios externos. Erro a manifestao de uma falha no sistema, causando
disparidade nas respostas apresentadas que diferem do valor previsto. No necessariamente as
falhas presentes no sistema resultaro em erros. Falhas que no se manifestaram no sistema so
chamadas latentes. Defeito corresponde incapacidade de algum componente em realizar a
funo para o qual foi projetado.
Para o melhor entendimento, esses conceitos podem ser representados utilizando-se o
Modelo de Trs Universos, desenvolvidos por Avizienis[17]. O primeiro o Universo Fsico, que
compreende os dispositivos semicondutores, elementos mecnicos, fontes de energia, ou qualquer
outra entidade fsica. Uma falha ocorre nesse universo. O Universo da Informao compreende os
dados manipulados pelo sistema, e onde um erro pode ocorrer, em virtude da existncia de
alguma falha no Universo Fsico. O ltimo universo o Externo ou do Usurio. neste onde o
usurio final percebe que o sistema apresentou comportamento indesejado e, portanto, possui um
defeito.

Tolerncia a Falhas para Sistemas Embarcados

Figura 1 - Modelo dos Trs Universos

2.1.2

CLASSIFICAO DE FALHAS
As falhas podem ser classificadas quanto sua origem em[2]:

Fsicas
As falhas fsicas so causadas por fenmenos naturais como desgaste do material,
problemas de interconexo ou quaisquer outros que afetem a estrutura mecnica ou eletrnica do
sistema. As falhas fsicas podem ainda ser subclassificadas quanto durao em:
Permanentes uma vez que se manifestam sempre o faro.
Temporrias no-permanentes, podendo ser intermitentes, normalmente causadas pelo
processo de degradao do componente e que fatalmente se tornaro permanentes com o tempo;
ou transitrias, geralmente relacionadas interferncia de sistemas externos.
Humanas
As falhas humanas so aquelas introduzidas no sistema pela ao do homem. Podem ser
subdivididas em:
Falhas de Projeto so introduzidas na fase de projeto sistema.
Falhas de Interao ocorrem durante a interao dos usurios com o sistema. Considerase que as falhas nunca so introduzidas pelo usurio. Este apenas causaria a manifestao de
uma falha j existente no sistema, originadas por erros de projeto.

10

Tolerncia a Falhas para Sistemas Embarcados

2.1.3

APLICAES PARA TOLERNCIA A FALHAS


Os sistemas que devem apresentar caractersticas de tolerncia a falhas podem ser

categorizados em quatro reas de aplicaes[1]:


Longa Vida
So aplicaes que foram projetadas para estar em operao por um grande perodo.
considerado grande, um perodo que ultrapasse dez anos. Exemplos de aplicaes de Longa Vida
so os satlites e sondas espaciais.
Computao Crtica
talvez a categoria de aplicao onde a tolerncia a falhas mais aplicada.
Compreendem sistemas que, se apresentarem funcionamento inadequado, podem levar a
conseqncias catastrficas, seja pondo em risco vidas humanas, seja causando altos danos
materiais. Exemplos clssicos de aplicaes de Computao Crtica so os sistemas de controle
de trfego areo, sistemas de msseis teleguiados e de controle de indstrias qumicas.
Adiamento de Manuteno
So aplicaes cuja manuteno extremamente cara, inconveniente ou difcil de
executar. Para sistemas como esses deseja-se que a manuteno seja feita periodicamente e
enquanto isso, o sistema por si s consiga evitar e tratar as falhas que ocorram durante sua
execuo. Um exemplo de aplicao desse tipo o sistema de estaes de comutao telefnicas.
Alta Disponibilidade
So aplicaes cuja disponibilidade um fator crtico. Exemplos clssicos so os terminais
de caixa eletrnicos dos bancos.

2.1.4

FASES DO PROCESSO DE TOLERNCIA A FALHAS


Identifica-se vrias fases para o processo de tolerncia a falhas nos sistemas. As fases

sero mais bem detalhadas a seguir[2].


Deteco de Erros
A primeira fase do processo de tolerncia a falhas claramente a deteco de erros no
sistema. Todo o mecanismo de tolerncia a falhas empregado no sistema depender da eficincia
do seu mdulo de deteco de erros.

11

Tolerncia a Falhas para Sistemas Embarcados

O mdulo de deteco de erros deve observar o funcionamento do sistema sendo capaz


de perceber desvios de comportamento a partir da especificao inicial.
Existem algumas propriedades que um mecanismo ideal para deteco de erros deve
apresentar:
Independncia o mdulo de deteco de falhas no deve ser influenciado pela estrutura
interna do sistema, pois os erros existentes no sistema poderiam afetar tambm este mdulo.
Completo deve detectar todos os erros possveis.
Correto no pode considerar um comportamento esperado como um comportamento
anmalo, ou seja, sempre que um erro for detectado, pode-se ter certeza da existncia de falhas
no sistema.
Confinamento de Erros
Aps a deteco do erro, deve-se identificar o mdulo ou componente falho do sistema.
Com as passagens de informaes entre os mdulos e componentes, os erros podem propagar-se
pelo sistema. Assim, todo o fluxo de informao originado do mdulo ou componente falho deve
ser observado e as conseqncias das aes devem ser delimitadas, determinando as partes do
sistema que foram corrompidos pela manifestao da falha. Este o objetivo desta fase.
Recuperao de Erros
Detectado o erro e identificada sua extenso pelo sistema, as alteraes de estado devem
ser removidas para levar o sistema a um estado aceitvel evitando o mau funcionamento do
sistema futuramente.
Nesta fase, o sistema deve restabelecer um estado livre de erros aps uma falha. Existem
duas abordagens para a recuperao de erros:
Por avano se a natureza dos erros pode ser completamente avaliada, ento se pode
remover estes erros do estado do processo e habilit-lo a prosseguir.
Por retorno se no for possvel remover todos os erros do estado do processo, ento o
processo deve ser restaurado para um estado prvio livre de erros. Normalmente, so utilizados
checkpoints nessa fase.

12

Tolerncia a Falhas para Sistemas Embarcados

Tratamento de Falhas
Nas trs primeiras fases, o erro detectado, sua extenso avaliada e removido deixando o
sistema livre de erros. Isso pode ser suficiente se a causa do erro foi uma falha transitria. Se as
falhas forem permanentes, ento o mesmo erro poder ocorrer novamente em processamento
futuro. O objetivo desta fase, tambm conhecida como reconfigurao, identificar o componente
falho e remov-lo do sistema para no mais ser utilizado. O componente causador da falha pode
ter a granularidade variada, podendo corresponder a um chip ou a uma placa inteira, por exemplo.

2.2 TIPOS DE REDUNDNCIA


Dentre os principais tipos de redundncia, esto as de hardware, software, informaes e
tempo[1].

2.2.1

HARDWARE
Na redundncia de hardware so replicados componentes, unidades de memria, fontes

de alimentao, dentre outros, com a finalidade de deteco de erros ou reparo do sistema


transferindo as tarefas de um componente falho para outro redundante.

2.2.2

SOFTWARE
Na redundncia de software, ocorre a utilizao de verses distintas do mesmo software,

desenvolvidas a partir da mesma especificao, porm implementadas utilizando abordagens e


times de programao distintos.

2.2.3

INFORMAO
A redundncia de informaes consiste na duplicao dos dados ou armazenamento de

informao redundante, que poderia ser computada a partir dos dados j existentes, com a
finalidade de verificaes de consistncia, como ocorre nos cdigos de deteco e de correo de
erros.

2.2.4

TEMPO
A redundncia de tempo ocorre quando utiliza-se o mesmo componente ou mdulo do

sistema para duas computaes em diferentes instantes de tempo, detectando-se a ocorrncia de


falhas temporrias no sistema.
13

Tolerncia a Falhas para Sistemas Embarcados

3 VISO GERAL DO PROJETO DE SISTEMAS EMBARCADOS


3.1 DEFINIO
Tambm conhecidos como sistemas embutidos, os sistemas embarcados so sistemas
computacionais dedicados a realizar tarefas especficas em sistemas mais abrangentes,
geralmente coordenando as atividades de componentes mecnicos, eltricos e eletrnicos.
Uma estratgia para entender melhor o que so sistemas embarcados seria obter
exemplos e identificar as caractersticas comuns a sistemas deste tipo. Exemplos de sistemas
embarcados so encontrados em inmeros equipamentos em nossas casas, automveis e
escritrios. So fornos de microondas, calculadoras, mquinas de lavar roupa, videocassetes,
impressoras, sistemas de alarme, mecanismos de injeo de combustvel; todos esses
equipamentos possuem uma parte computacional utilizada para controlar suas funes mecnicas,
eltricas ou eletrnicas. A essa parte computacional, que interage com os outros dispositivos,
que se denomina sistema embarcado.
Algumas das caractersticas em comum dos sistemas embarcados, apresentadas em [6],
so:

Funcionalidade especfica
Diferente dos computadores de propsito geral, que oferecem funes bsicas de

processamento que, combinadas, permitem a execuo de vrios algoritmos distintos


utilizando o mesmo hardware, os sistemas embarcados possuem capacidade restrita de
processamento, geralmente executando o mesmo programa repetidas vezes.

Limites
Os sistemas embarcados geralmente possuem muitas restries de projeto. Custo,

performance, tamanho, energia consumida so as restries mais encontradas. Os sistemas


embarcados devem ser baratos, ocupar o menor espao fsico possvel, eficiente o bastante
para responder a interaes em tempo real e consumir o mnimo de energia para serem
abastecidos, por um longo tempo, por baterias tambm pequenas.

14

Tolerncia a Falhas para Sistemas Embarcados

Tempo real
A maioria dos sistemas embarcados deve responder a eventos produzidos por outros

dispositivos com os quais interage e, para muitos deles, um atraso nessa resposta pode ser
considerado uma falha no sistema. Dessa forma, muitos so sistemas de tempo real.

3.2 PROJETO DE SISTEMAS EMBARCADOS


Para o desenvolvimento de sistemas embarcados, algumas abordagens de implementao
podem ser utilizadas[6]. Nesta seo sero apresentadas as principais delas.

3.2.1

PROCESSADORES DE PROPSITO NICO


Uma abordagem para o projeto de sistemas embarcados a utilizao de um processador

especfico para a aplicao que se deseja implementar. Dessa forma, um circuito digital deve ser
projetado para executar exclusivamente as funcionalidades necessrias para o projeto.
Processadores de pequeno tamanho, boa performance e requerendo pouca energia podem ser
obtidos utilizando essa estratgia. Porm, o custo do projeto pode ser aumentado visto que o
tempo para o desenvolvimento do processador deve ser levado em conta. Alm disso, o custo por
unidade pode ser alto para uma produo em pouca quantidade e a flexibilidade do processador
muita baixa. Os processadores de propsito nico so tambm denominados hardware dedicado
ou poro de hardware do projeto.
FPGA
No desenvolvimento de hardware dedicado, torna-se necessria a implementao de
prottipos para testes e validao dos requisitos iniciais do projeto. Para a implementao do
prottipo pode-se mandar as especificaes do hardware para uma fbrica de chips, esperar o
tempo de fabricao e test-lo. Identificando erros no projeto, envia-se a especificao corrigida e
repete-se o processo. Essa prtica torna a implementao de hardware extremamente cara e
demorada. Para solucionar o problema da prototipao de circuitos integrados, foram
desenvolvidos os FPGAs (Field-Programmable Gate Arrays)[14].

FPGAs so dispositivos

contendo arrays de blocos lgicos cujas funes e conexes podem ser configuradas para
implementar uma funcionalidade especfica. Um FPGA pode ser reconfigurado inmeras vezes
pelo usurio, no caso o desenvolvedor do sistema embarcado, diminuindo assim o tempo e o custo
da implementao de prottipos.

15

Tolerncia a Falhas para Sistemas Embarcados

Vale ressaltar que os FPGAs servem apenas para a implementao de prottipos, pois
para a implementao final do sistema, a utilizao de FPGAs aumentaria o custo e o tamanho do
produto final por conta do hardware desnecessrio aplicao, existente no dispositivo, como as
portas lgicas que permaneceram desconectadas durante a configurao.

3.2.2

PROCESSADORES DE PROPSITO GERAL


Processadores de propsito geral so dispositivos que podem ser utilizados em vrias

aplicaes adquirindo a funcionalidade do programa carregado em sua memria. Assim, o tempo


para desenvolvimento do projeto pode ser reduzido, e a flexibilidade do sistema alta. O custo por
unidade baixo e a performance pode ser boa para certas aplicaes. O problema da utilizao
dessa abordagem de implementao que o hardware desnecessrio para o projeto, existente nos
processadores de propsito geral, impedem que o tamanho e a energia consumida sejam
minimizados.

Os processadores de propsito geral so tambm denominados a poro de

software do projeto.
Microcontroladores
Inserido na abordagem de utilizao de processadores de propsito geral, o uso de
microcontroladores muito utilizado na construo de sistemas embarcados. Segundo[7], os
microcontroladores, so componentes eletrnicos que integram, num nico chip, um processador e
vrios outros dispositivos como, conversores AD, memrias,

temporizadores, interface de

comunicao serial, etc.

3.2.3

ASIP
Servindo como uma alternativa s duas abordagens anteriores, e procurando associar as

vantagens de cada uma, existem os processadores para aplicaes especficas ou ASIP


(Application-Specific Instruction-set Processors). No to especfico quanto o hardware dedicado,
nem to abrangente como os processadores de propsito geral, um ASIP um processador que
pode ser aplicado para vrias instncias de uma classe de aplicaes que utilizam dispositivos em
comum. Podese entender um ASIP como um processador de propsito geral com apenas os
recursos necessrios quela classe de aplicaes, diminuindo, assim, o hardware desnecessrio
no produto final.
A Tabela 1 apresenta um resumo das vantagens e desvantagens da utilizao das
abordagens de hardware dedicado e de processadores de propsito geral.
Caractersticas
Performance

Hardware Dedicado
Boa

Processadores de Propsito Geral


Boa para algumas aplicaes
16

Tolerncia a Falhas para Sistemas Embarcados

Tamanho
Energia Consumida
Custo da unidade
Tempo de projeto
Flexibilidade

Menor
Menos
Baixo para grandes quantidades,
alto para pouca quantidade
Longo
Pouca

Maior
Mais
Baixo
Curto
Muita

Tabela 1 Caractersticas de abordagens para projeto de sistemas embarcados

17

Tolerncia a Falhas para Sistemas Embarcados

4 CLASSIFICAO DE TCNICAS DE TOLERNCIA A FALHAS


Nesta seo ser apresentada uma classificao de algumas tcnicas de tolerncia a
falhas em sistemas de computao. Sero apresentadas descries das tcnicas, descritos os
critrios de classificao, e analisada a viabilidade de aplicao de tais tcnicas para o
desenvolvimento de sistemas embarcados.

4.1 CRITRIOS DE CLASSIFICAO


4.1.1

TIPO DE REDUNDNCIA UTILIZADA


O ponto chave para obteno de sistemas mais confiveis o emprego de algum tipo de

redundncia. Os principais tipos de redundncia so [1]:

Redundncia de Hardware

Redundncia de Software

Redundncia de Informao

Redundncia de Tempo
Este critrio visa a identificao do tipo de redundncia empregado na utilizao da

tcnica.

4.1.2

MEIO DE IMPLEMENTAO
As tcnicas podem ser implementadas puramente por hardware, puramente por software

ou utilizando uma forma hbrida de implementao.

4.1.3

OBJETIVO
As tcnicas para aplicao de tolerncia a falhas aos sistemas possuem vrios objetivos.

Esses objetivos podem ser relacionados fase do processo de tolerncia a falhas na qual a
tcnica est inserida. Como fases do processo de tolerncia a falhas podemos listar[2]:

Mascaramento - Correo dinmica dos erros gerados pelo sistema. Desse modo o usurio
no percebe a ocorrncia de falhas.
18

Tolerncia a Falhas para Sistemas Embarcados

Deteco - Identificao de erros atravs da observao do sistema.

Confinamento - Isolamento do erro prevenindo a propagao deste no sistema.

Diagnstico - Identificao das causas do erro, ou seja localizar o mdulo ou componente em


falha.

Recuperao - Levar o sistema a um estado aceitvel para o prosseguimento da operao.

Reparo - Eliminao do mdulo ou componente em falha do sistema.


Esse critrio de classificao visa determinar o objetivo da utilizao da tcnica, ou seja,

em qual das fases do processo ela est inserida.

4.1.4

ASPECTOS GERAIS

Qualidade da Soluo Proposta


Esse critrio visa classificar a tcnica quanto sua eficincia atravs de uma anlise
qualitativa levando em considerao como o sistema ficar mais confivel atravs da utilizao da
tcnica.
Aplicaes Adequadas
Apesar de algumas tcnicas serem bem gerais e facilmente aplicveis a vrios tipos de
aplicaes, algumas das tcnicas apresentadas so adequadas para algum tipo de aplicao
especfico. Neste tpico, devem ser apresentados os tipos de aplicaes mais adequadas para a
utilizao da tcnica.

4.1.5

ASPECTOS DA APLICAO EM SISTEMAS EMBARCADOS


Nesse critrio sero expostos aspectos relacionados aplicao da tcnica aos sistemas

embarcados. Aspectos como adaptao da tcnica para o projeto de sistemas embarcados,


aumento de espao fsico e de memria, componentes adicionais utilizados para a implementao,
aumento de consumo de energia, dentre outros devero ser apresentados neste tpico da anlise.

19

Tolerncia a Falhas para Sistemas Embarcados

4.2 TCNICAS ANALISADAS


4.2.1

NMR
A tcnica NMR (n-modular redundancy) consiste na utilizao de n mdulos, com mesma

funcionalidade, realizando a mesma computao e utilizando-se um mecanismo de voto majoritrio


para a escolha da resposta correta. Essa tcnica considera que a probabilidade de mais de um
mdulo apresentar falhas durante a computao muito pequena e desse modo a confiabilidade
do sistema seria aumentada. Essa considerao exige que os mdulos sejam independentes no
que diz respeito s falhas.

Figura 2 Tcnica NMR (N-Modular Redundancy)

Tipo de Redundncia Utilizada


Essa tcnica pode utilizar dois tipos de redundncia:

Hardware - no caso de replicao de componentes fsicos, como unidades lgicaaritmticas, chips de mmoria...

Tempo - no caso de utilizar um mesmo componente, porm realizar o processamento


n vezes em instantes distintos.
H ainda a replicao de mdulos em software, porm essa tcnica conhecida

como Programao em N-Verses e ser discutida separadamente.


Meio de Implementao
A implementao pode ser feita por hardware, se os mdulos duplicados e o
comparador forem componentes de hardware; ou hbrida, no caso de os mdulos
duplicados serem implementados por software e a comparao ser feita por hardware.
20

Tolerncia a Falhas para Sistemas Embarcados

Objetivo
A tcnica permite a deteco e o mascaramento de falhas do sistema, dependendo
do nmero de mdulos utilizados.
Aspectos Gerais
Essa tcnica enfrenta o problema do ponto nico de falha (single-point-of-failure),
representado nesse caso pelo mecanismo de votao. A confiabilidade do sistema como
um todo estar limitada confiabilidade do componente votante, como mostrado pela
frmula abaixo[1].
R(t) = [1 - p1(t) . p2(t) . ... . pn(t)] . [1 - pv(t)],
onde pn(t) a probabilidade do mdulo n falhar no instante t , p v(t) a probabilidade
do votante falhar no instante t e R(t) a funo de confiabilidade do sistema.

Portanto, s conveniente a utilizao da tcnica se a confiabilidade do votante for


maior que a confiabilidade apresentada pelos mdulos separadamente.
A tcnica pode ser bem aplicada em um grande nmero de aplicaes sendo
provavelmente a mais utilizada das tcnicas de tolerncia a falhas.
Aspectos da Aplicao em Sistemas Embarcados
Para a aplicao em sistemas embarcados, essa tcnica pode ser bem utilizada.
Os recursos adicionais requeridos so o componente para voto por maioria, que, em
algumas variaes dessa tcnica, pode apresentarse com diferentes funcionalidades
desde um simples comparador a um componente mais sofisticado de ordenao de
sadas, como veremos mais adiante. Alm disso, um mtodo para sincronizao entre os
mdulos redundantes deve ser utilizado.

4.2.2

DUPLICAO COM COMPARAO (DUPLICATION WITH COMPARISON)


Tambm conhecida como 2MR, essa tcnica consiste em uma variao da NMR utilizando

apenas dois mdulos replicados. Pelo fato de receber apenas duas entradas, o mecanismo de voto
majoritrio nesse caso se resume a um comparador.
Abaixo sero descritos aspectos especficos dessa variao do NMR.

21

Tolerncia a Falhas para Sistemas Embarcados

Objetivo
Essa tcnica apenas permite a deteco de erros no sistema. No caso da
utilizao de redundncia de tempo para a implementao desta tcnica, apenas falhas
temporrias sero detectadas, j que o hardware utilizado para a computao ser o
mesmo, sendo variado apenas o instante de tempo em que a computao ser realizada.
Para utilizar essa abordagem na deteco de falhas permanentes, pode-se utilizar a
tcnica Alternating Logic, que consiste na utilizao de codificao da entrada e
decodificao da sada em uma das vezes em que a computao realizada, como
ilustrado na Figura 3. Desse modo, alm de detectar as falhas temporrias, ser possvel
detectar algumas falhas permanentes no componente utilizado. Essa tcnica, porm,
requer tempo e componentes adicionais para a codificao e decodificao.

Figura 3 Alternating Logic


Aspectos Gerais
A tcnica deve ser utilizada em aplicaes que no exijam muita disponibilidade,
sendo a computao abortada na ocorrncia de um erro, ou deve existir algum mtodo
auxiliar para detectar qual dos mdulos falhou e tratar o problema.
Aspectos da Aplicao em Sistemas Embarcados
A implementao dessa tcnica simples e pode ser aplicada facilmente a
sistemas embarcados. Um mecanismo de comparao de sadas requerido e os mdulos
redundantes devem estar sincronizados para que o componente detector de falhas no
indique falhas inexistentes devido a atraso na resposta de um dos mdulos.

4.2.3

TMR (TRIPLE MODULAR REDUNDANCY)


A utilizao de trs componentes para o clculo da computao e escolhendo a sada

atravs de voto majoritrio a forma mais utilizada da tcnica NMR.


22

Tolerncia a Falhas para Sistemas Embarcados

Objetivo
A partir de trs mdulos, possvel no apenas detectar, como tambm mascarar
as falhas.
Aspectos Gerais
A utilizao de mais de dois mdulos redundantes pode ser desejado em alguns
casos, tolerando que mais mdulos possam falhar sem que o sistema seja afetado. Porm,
preciso verificar os custos de tal procedimento. Quanto mais mdulos redundantes, maior
a complexidade do sistema de votao ou maior o tempo gasto nessa computao. Alm,
claro, do custo adicional com as rplicas, considerando fatores como: preo, espao
fsico e consumo de energia.

4.2.4

MID-VALUE SELECT
Essa tcnica pode ser considerada como uma variao do NMR na qual o sistema de

votao majoritria substitudo por um componente que escolhe a sada que apresenta valor
mdio dentre as demais sadas do sistema[1].
Aspectos Gerais
Essa tcnica especfica para situaes onde pequenas variaes de valores da
sada no so consideradas erro no sistema. Um exemplo disso so os sistemas de
converso analgico-digital, onde as sadas podem sempre diferir nos bits menos
significativos. A utilizao da tcnica TMR clssica neste caso no seria aplicvel j que
com muita freqncia acusaria erros inexistentes no sistema. Essa tcnica s pode ser
utilizada quando houver um nmero mpar de mdulos, tal que sempre uma sada seja a
que se encontra no meio entre os valores considerados.
Aspectos da Aplicao em Sistemas Embarcados
Muitos dos sistemas embarcados exigem converso anlogica-digital e digitalanalgica. Assim, essa tcnica pode ser muito til no projeto desses sistemas.
requerido um componente adicional para ordenao das sadas e escolha da
sada de valor mdio, alm dos mdulos redundantes.

23

Tolerncia a Falhas para Sistemas Embarcados

4.2.5

FLUX-SUMMING
A tcnica consiste em utilizar a propriedade inerente dos sistemas de controle com

realimentao (sistemas de controle de loop fechado) para a compensao de falhas. A


implementao desta tcnica consiste em utilizar mdulos redundantes e um transformador que
recebe as sadas dos mdulos como entrada, e sua sada proporcional soma das sadas dos
mdulos. Cada mdulo realimentado pela sada do transformador e desse modo a falha de um
dos mdulos percebida e compensada pelos demais[1].
Objetivo
A abordagem empregada com o objetivo de mascarar as falhas do sistema.
possvel tambm detectar uma falha em um dos mdulos, porm seria necessrio algum
mecanismo de localizao da falha para determinar qual dos mdulos apresentou falha, no
caso da necessidade de utilizao de tcnicas de reconfigurao.
Aspectos Gerais
Essa tcnica apresenta bons resultados visto que tolera tanto falhas totais (o
mdulo em falha deixa de produzir sada), quanto falhas parciais (o mdulo apresenta
sadas alteradas com aumento ou diminuio do valor correto) e ainda falhas transitrias,
causadas por distrbios externos, como interferncias eltricas.
Como exposto, essa abordagem prpria para utilizao em sistemas de controle
com realimentao.
Aspectos da Aplicao em Sistemas Embarcados
Sistemas de controle so muito encontrados em equipamentos de uso domstico e
mquinas industriais. Microondas, geladeira e ar-condicionado, para controle de
temperatura; estabilizadores, para controle de intensidade de corrente eltrica;
controladores de velocidade, em trens; todos esses exemplos possuem sistemas
embarcados e muitas dessas aplicaes so crticas, podendo uma falha gerar grande
prejuzo material ou por vidas em risco. Assim, a tcnica do Flux-Summing, especfica para
sistemas de controle com realimentao, pode ser utilizada.
Essa tcnica requer, alm da redundncia dos mdulos, um mecanismo de soma
dos sinais de sada. Cada mdulo deve tambm possuir uma funo que calcule a sada
que deve gerar tendo em vista a entrada (realimentao) recebida.

24

Tolerncia a Falhas para Sistemas Embarcados

4.2.6

STANDBY SPARING
Essa tcnica consiste em utilizar mdulos redundantes para a substituio do componente

em utilizao no caso em que este apresente falhas. Essa tcnica deve ser utilizada em conjunto
com algum mtodo para deteco de falhas, de modo que o sistema possa realizar a substituio
eficientemente. Duas abordagens podem ser utilizadas na implementao da tcnica: Hot Standby
Sparing ou Cold Standby Sparing. As duas abordagens diferem no fato de que na primeira, os
mdulos redundantes esto em funcionamento sincronizado com o mdulo em operao, enquanto
que na segunda, as rplicas esto desligadas at que haja a necessidade de uma substituio.
Existem vantagens e desvantagens quanto utilizao de uma ou outra abordagem. Manter os
mdulos sempre funcionando aumenta significativamente o consumo de energia do sistema. Por
outro lado, na tcnica Cold Standby Sparing, necessrio tempo adicional para inicializao das
rplicas[1].
Tipo de Redundncia Utilizada
utilizada redundncia de hardware.
Meio de Implementao
A tcnica pode ser implementada por hardware ou software. No caso de Cold
Standby Sparing, necessria a existncia de um mecanismo de inicializao que leve a
rplica redundante a um estado seguro prximo daquele onde houve falha.
Objetivo
Essa tcnica utilizada para a reconfigurao do sistema, utilizada em conjunto
com tcnicas para deteco e localizao de falhas.
Aspectos da Aplicao em Sistemas Embarcados
Para a aplicao em sistemas embarcados, a abordagem do Hot Standby Sparing
melhor aplicada, porque, no caso de Cold Standby Sparing, o tempo para inicializar o
mdulo redundante e lev-lo a um estado consistente pode interferir no ciclo de execuo
do sistema. Alm disso, a complexidade dessa operao pode ser grande, exigindo a
implementao de pontos de recuperao. A menos que a potncia seja um limite muito
crtico para o sistema, essa abordagem no deve ser utilizada.

25

Tolerncia a Falhas para Sistemas Embarcados

4.2.7

NMR COM SPARES


Combinando as tcnicas NMR e Standby Sparing, essa tcnica utiliza mdulos adicionais

para reconfigurao do sistema quando um dos N mdulos redundantes em funcionamento


apresenta falhas. Um dos problemas da utilizao de mdulos redundantes o consumo adicional
de energia. A utilizao de Cold Standby Sparing pode ser utilizada para suavizar esse problema.
Uma configurao 2MR com um mdulo redundante (spare), que ser apenas utilizado no caso de
haver discordncia entre as sadas dos mdulos em funcionamento, conhecida como a tcnica
Pair-and-a-Spare, e pode ser utilizada como uma alternativa para a 3MR no caso de o consumo de
energia ser um fator muito crtico no sistema em questo[1].
Objetivo
Essa tcnica utilizada para deteco de falhas e reconfigurao do sistema.
Aspectos da Aplicao em Sistemas Embarcados
Sendo uma combinao das tcnicas de Standby Spare e NMR, essa tcnica
apresenta-se semelhantes a estas duas em relao aos aspectos de seu emprego no
projeto de sistemas embarcados.

4.2.8

CDIGOS DE DETECO E CORREO DE ERROS


Os cdigos de deteco e correo erros vm sendo tratados j h muito tempo e

consistem na adio de informao redundante a conjunto de bits. A informao redundante


produto de alguma operao realizada sobre os dados j existentes. Realizando novamente a
operao e comparando o resultado com a informao redundante, pode-se detectar os erros.
Para a correo de erros, necessria a introduo do conceito de distncia de Hamming, entre
palavras de bits.
Distncia de Hamming o nmero de bits que diferem na mesma posio em duas
seqncias de igual tamanho. Assim, se, por exemplo, as seqncias de bits vlidas em um
determinado cdigo distanciam-se umas das outras por uma distncia de Hamming igual a trs,
pode-se recuperar a seqncia original, no caso da ocorrncia de erro em apenas um bit da
seqncia corrompida. Basta, para isso, substitu-la pela seqncia vlida com menor distncia de
Hamming em relao a esta e decodificar a informao.
Existem vrios cdigos de deteco e correo de erros. Dentre eles podemos listar:

26

Tolerncia a Falhas para Sistemas Embarcados

Duplicao Consiste em simplesmente duplicar a informao original. Duplica o nmero de


bits extra, e permite apenas a deteco de erros. No necessria nenhuma operao sobre a
informao, sendo a simplicidade sua principal vantagem.

Paridade Consiste em utilizar um bit de paridade para um conjunto de bits, indicando se a


quantidade de bits 1 na seqncia par(0) ou mpar(1). Muito utilizado em memrias de
sistemas computacionais, esse tipo de cdigo possui distncia de Hamming igual a 2 e
portanto permite apenas a deteco de erro.

Checksum Utiliza uma operao aritmtica sobre os dados, produzindo um dado redundante
que utilizado para a verificao. Para uma deteco mais robusta, a operao utilizada deve
ser complexa o bastante para que o dado redundante seja modificado sempre que ocorra erro
em algum dos bits do dado original e de forma a evitar que dois erros sejam mascarados,
gerando um checksum ainda vlido.

Hamming No cdigo de Hamming, bits redundantes so inseridos nas posies 2 n do dado


codificado e as demais posies so preenchidas pelos bits originais. Os bits redundantes so
obtidos da seguinte maneira:
-

isola-se os bits das posies de ordem M, tal que a decomposio de M em potncias de 2


contenha o algarismo referente posio do bit redundante.

calcula-se o bit de paridade dos bits isolados.


Assim, cada bit de dados ter sido utilizado para o clculo dos bits de verificao cuja

posio est contida em sua decomposio em potncias de 2. Ento um erro nico em


qualquer das posies de dados, alterar o valor dos bits redundantes que utilizaram o bit
corrompido em seu clculo. Dessa forma, para identificar a posio do bit corrompido, basta
somar as posies dos bits de verificao que esto alterados. Identificada a posio do erro, o
dado original pode ser facilmente recuperado.
Tipo de Redundncia Utilizada
utilizada redundncia de informao.
Meio de Implementao
Para utilizao da tcnica, deve ser implementados mecanismos para codificao
e decodificao dos dados. Esses mecanismos podem ser implementados tanto por
software quanto por hardware.

27

Tolerncia a Falhas para Sistemas Embarcados

Objetivo
Essa tcnica utilizada para deteco de erros e/ou mascaramento de falhas,
atravs da correo dinmica da informao corrompida.
Aspectos Gerais
A utilizao de cdigos de deteco e correo de erros uma tcnica muito geral
e flexvel. O desempenho dessa tcnica vai depender do cdigo de erro escolhido e do
grau de redundncia utilizado, como na tecnologia RAID[20], que apresenta vrios nveis
de redundncia para tolerar falhas em discos de armazenamento de dados.
Os cdigos de deteco e correo de erros so mais bem aplicados sobre dados
a serem transferidos de um componente ao outro, ou sobre dados armazenados em
memria, detectando falhas em dispositivos de comunicao e de armazenamento de
dados.
Aspectos da Aplicao em Sistemas Embarcados
Em sistemas embarcados envolvendo comunicao e transferncia de dados,
geralmente um cdigo de deteco ou correo de erros utilizado. Funes codificadoras
e decodificadoras poderiam ser oferecidas para auxiliar no projeto de tais sistemas. A
redundncia de informao requerida pela utilizao desta tcnica pode ser muito grande,
dependendo da escala na qual esta ser aplicada. Pode-se utilizar um bit de paridade por
byte lido de um chip de memria, ou um bit de paridade por cada coluna e linha deste
mesmo chip. A escolha da escala de aplicao da tcnica deve ser feita tendo em vista a
criticidade do sistema, a taxa de falhas esperada, e os recursos disponveis para a
implementao da tcnica.

4.2.9

VERIFICAO DE CONSISTNCIA (CONSISTENCY CHECKS)


Utilizando o conhecimento de caractersticas inerentes ao sistema (invariantes), essa

tcnica consiste em realizar verificaes em determinados pontos da computao, testando a


consistncia, ou seja, se os invariantes continuam sendo respeitados. Como exemplo de invariante
podemos citar o caso de uma varivel sempre conter um valor que pertena a um determinado
intervalo. Pode-se testar se o valor dessa varivel est no intervalo esperado[1].
Tipo de Redundncia Utilizada
As verificaes podem ser feitas tanto por hardware quanto por software.

28

Tolerncia a Falhas para Sistemas Embarcados

Meio de Implementao
A tcnica pode ser implementada por hardware, porm a implementao por
software bem mais utilizada. Um exemplo de verificao de consistncia que pode ser
feito por hardware a deteco de cdigo de instruo invlido.
Objetivo
Essa tcnica utilizada para a deteco de erros no sistema.
Aspectos Gerais
A tcnica aplicada a sistemas que possuam caractersticas imutveis durante sua
execuo. Nem sempre natural encontrar um invariante em um sistema computacional. A
identificao de um falso invariante e a utilizao dessa tcnica podem ocasionar a
deteco de falhas inexistentes. Identificado o invariante, a tcnica pode ser facilmente
implementada, no exigindo um grau elevado de redundncia.
Aspectos da Aplicao em Sistemas Embarcados
Em sistemas embarcados, essa tcnica utilizada pelo uso das interrupes de
violao de acesso, falhas no oscilador, variao na sada da fonte de energia, dentre
outras. Alm disso, se as sadas do sistema apresentam alguma regra de formao, podese implementar um componente que verifique se cada sada obedece a regra e assim
detectar sadas invlidas para o sistema.

4.2.10 VERIFICAO DE CAPACIDADE (CAPABILITY CHECKS )


Essa tcnica consiste em verificar a capacidade do sistema antes da execuo de alguma
tarefa ou simplesmente utilizar o tempo livre do processador para verificar o funcionamento dos
componentes do sistema. Pode-se verificar, por exemplo, se h quantidade de memria suficiente
para a execuo da tarefa, testar se no h falhas de comunicao entre os processadores de um
multicomputador, dentre outros[1].
Tipo de Redundncia Utilizada
utilizada redundncia de software.

29

Tolerncia a Falhas para Sistemas Embarcados

Meio de Implementao
A tcnica mais comumente implementada por software, atravs de rotinas
gerenciadas pelo sistema operacional, que so ativadas em intervalos em que o
processador est livre.
Objetivo
Essa tcnica tem o objetivo principal de detecco de falhas. Porm ela se
diferencia das demais pelo fato de no esperar que os erros ocorram e sim tentar descobrir
se existem falhas no sistema para evitar que estas venham a afetar seu funcionamento.
Aspectos Gerais
A tcnica mais aplicada para sistemas de software, que concorram com outros
sistemas para a utilizao de recursos como memria, tempo de processador, canais de
comunicao, etc.
Aspectos da Aplicao em Sistemas Embarcados
De um modo geral, essa tcnica no se aplica a sistemas embarcados crticos,
pois a necessidade de determinismo no tempo de computao das operaes exige que
seja identificada previamente a capacidade do sistema, no sendo desejvel sua
verificao dinmica. Alm disso, como os sistemas embarcados so dedicados a tarefas
bem especficas, na fase de projeto j possvel identificar a capacidade exigida para a
execuo do sistema, sendo os recursos alocados previamente e exclusivamente ao
sistema embarcado.

4.2.11 N-VERSES
A tcnica da programao em N-verses a verso de software da tcnica NMR. Consiste
na implementao de verses redundantes de programas ou funes dentro dos programas,
seguido de uma votao para saber qual das respostas, se houver discordncia entre os mdulos,
a correta. Como os erros de software so decorrentes de falhas de projeto, as vrias verses
devem apresentar diferentes projetos e implementaes, partindo de uma mesma especificao,
ou todos os mdulos cometeriam sempre os mesmos erros, sendo alimentados pelas mesmas
entradas. Assim, deve-se utilizar abordagens distintas para a resoluo do problema, ou diferentes
linguagens de programao, ou contratar times de programadores diferentes para o
desenvolvimento de cada mdulo[1,2].

30

Tolerncia a Falhas para Sistemas Embarcados

Figura 4 Programao em N-Verses

Tipo de Redundncia Utilizada


utilizada na tcnica a redundncia software. Os mdulos redundantes podem
executar em processadores independentes, ou dividir o mesmo processador sendo
executados seqencialmente, ou em regime de timesharing. Dependendo da abordagem
escolhida, a tcnica requer ainda redundncia de hardware ou de tempo.
Meio de Implementao
A tcnica deve ser implementada por software.
Objetivo
Essa tcnica, similar ao NMR, pode ser utilizada para deteco e mascaramento
de falhas. Tambm possvel a reconfigurao do sistema, utilizando blocos de
recuperao, que sero detalhados mais adiante.
Aspectos Gerais
A soluo proposta apresenta o mesmo desempenho que a NMR, se os
programas redundantes forem executados em paralelismo real. Desse modo, alm de
redundncia de software, seria necessrio hardware adicional para a utilizao da tcnica.
No caso da execuo seqencial (ou em timesharing) dos programas, a eficincia ficaria
comprometida. Alm disso, o custo de desenvolvimento para a implementao de software
redundante extremamente alto.
Devido ao alto custo de implementao, a tcnica deve ser utilizada apenas em
aplicaes de muita criticidade, de longa vida ou de difcil manuteno. Dependendo do

31

Tolerncia a Falhas para Sistemas Embarcados

tipo de aplicao, deve ser analisado o uso de redundncia de tempo ou de hardware, para
a utilizao da tcnica.
Aspectos da Aplicao em Sistemas Embarcados
Essa tcnica pode ser aplicada no desenvolvimento de sistemas embarcados
desenvolvendo verses distintas para o programa a ser carregado nos processadores de
propsito geral. Essa prtica porm, necessitaria da utilizao de redundncia de
processadores, aumentando assim o custo do projeto. Uma forma alternativa seria utilizar
redundncia de funes dentro de um mesmo programa, podendo utilizar o mesmo
processador em regime de timesharing, a redundncia neste caso seria de tempo e,
dependendo da aplicao, seria bem utilizada. Em caso de sistemas de tempo real
contudo, no seria aconselhvel a utilizao de redundncia de tempo, visto que o tempo
adicional na execuo poderia ser crtico para o sistema.

4.2.12 BLOCOS DE RECUPERAO (RECOVERY BLOCKS)


Nesta tcnica, so utilizadas N verses diferentes de um software, porm cada uma delas
possuindo um mecanismo de deteco de erros independente. Esse mecanismo, chamado de
testes de aceitao, pode ser uma combinao de verificaes de consistncia e capacidade. Um
dos mdulos, escolhido como primrio, ser posto em execuo at que apresente uma sada que
no passe no teste de aceitao, e outro mdulo seja posto em execuo, continuando esse
procedimento a menos que todas as verses sejam reprovadas em seus testes de aceitao.
Nesse ltimo caso, o sistema inteiro falha. Assumindo independncia de falhas entre os mdulos,
esse mtodo capaz de tolerar at N-1 falhas no sistema [18].
Tipo de Redundncia Utilizada
utilizada redundncia de software, para a implementao dos mdulos
redundantes, e de tempo, no caso de deteco de erro e repetio da operao utilizando
outro mdulo.
Meio de Implementao
A tcnica implementada por software.
Objetivo
Essa tcnica utiliza um mtodo de deteco de erros e serve para reconfigurao
do sistema, sendo desprezados os resultados obtidos por mdulos redundantes, que no
passarem nos testes de aceitao.
32

Tolerncia a Falhas para Sistemas Embarcados

Aspectos Gerais
Blocos de recuperao so melhor aplicados a sistemas com computaes muito
complexas e propensas a falhas de projeto.
Aspectos da Aplicao em Sistemas Embarcados
A maioria dos sistemas embarcados possui, em sua poro de software,
computaes simples. Assim, blocos de recuperao, de uma forma geral, no se aplicam
ao projeto de sistemas embarcados. Em sistemas de tempo real, onde o no cumprimento
de deadlines considerado falha no sistema, a utilizao dessa tcnica dificultaria o
clculo dos tempos de execuo das operaes, visto que teria que ser considerado
sempre o pior caso, ou seja, N-1 mdulos falham e portanto o tempo de execuo da
operao, em que foi aplicada a tcnica, teria que ser calculado como sendo a soma dos
tempos de execuo de todos os N mdulos redundantes. Dependendo do tempo para a
execuo dos mdulos, a utilizao dessa tcnica pode ser impraticvel.

4.2.13 UTILIZAO DE DISPOSITIVOS ESPECFICOS


Existem no mercado alguns dispositivos que auxiliam a implantao de tolerncia a falhas
em sistemas embarcados. A utilizao destes dispositivos pode ser considerada uma tcnica de
tolerncia a falhas. Estes dispositivos so representados por interrupes inerentes aos
microcontroladores e componentes externos, que acoplados ao sistema, permitem a deteco ou
correo de erros, ou qualquer outra estratgia presente no processo de obteno de tolerncia a
falhas.
Watchdog timer
Um Watchdog Timer um temporizador que deve ser periodicamente reiniciado pelos
processos do sistema de modo que, em situaes normais de execuo, nunca ocorrer overflow.
Portanto, um overflow no watchdog, indica a presena de falha no sistema e que alguma rotina de
exceo deve ser executada. As falhas detectadas pelo watchdog so relacionadas limites de
tempo de execuo, como por exemplo se uma tarefa ultrapassa o deadline em um sistema de
tempo real.
A operao executada pelo watchdog, na ocorrncia de uma falha, pode variar de acordo
com o sistema.

Normalmente, o watchdog reinicializa o sistema na ocorrncia de falhas, na

inteno de lev-lo a um estado consistente. Mas pode ser prefervel que o sistema seja
autodestrudo por se tratar de um sistema crtico cujo mal funcionamento poder trazer estragos

33

Tolerncia a Falhas para Sistemas Embarcados

ainda maiores. Um exemplo disso, foi o caso do Ariane 5, um foguete que explodiu segundos aps
seu lanamento por conta da ao do watchdog.
Existem vrias tcnicas para o uso de watchdogs. A mais simples reinici-lo aps algum
ciclo de atividades dos processos. Porm, se o procedimento em falha for exatamente o
responsvel por reiniciar o watchdog, pode ocorrer deste ser inicializado indevidamente como em
um loop, por exemplo. Na tentativa de solucionar este problema, pode-se utilizar um vetor onde
todos os processos indicam em uma posio do vetor, se j foi executado corretamente. A rotina
responsvel pela reinicializao do watchdog deve antes verificar se todos os processos que
deveriam ser executados realmente foram executados para s ento reinicializar o watchdog e
limpar novamente o vetor para mais um ciclo de execuo.
Interrupes de segurana
Alguns processadores implementam interrupes para preveno de falhas. Alguns
exemplos dessas interrupes so:

Power failure interruption


Essa interrupo deve ser disparada por um monitor da fonte de energia, quando esta

venha a apresentar decaimento indicando uma possvel falha ou apresentar comportamento


indesejvel como instabilidade e oscilaes. Esse mecanismo oferece algum tempo para o
sistema preparar-se para a falha. Nesse tempo, o sistema deve armazenar as variveis e o
estado de execuo para que volte a um estado consistente aps a recuperao da falha, ou
utilizar outra fonte de energia no caso da existncia de redundncia.

Oscilator failure interruption


Essa interrupo disparada quando o oscilador apresenta algum tipo de alterao de

freqncia. Essa interrupo pode ser utilizada de modo similar Power failure interruption

Power On Interruption
Essa interrupo disparada quando o sistema iniciado e a fonte de energia

ligada. H um intervalo em que a voltagem fica instvel e cheia de rudo, portanto o sistema
no deve comear sua execuo at que a fonte se estabilize. O sistema poderia interpretar o
rudo como algum cdigo de comando vlido, o que poderia lev-lo a um estado inconsistente.
Esse mecanismo de preveno de falhas deve bloquear o sistema at que haja estabilidade na
fonte de energia.

34

Tolerncia a Falhas para Sistemas Embarcados

Todas as interrupes apresentadas interrompem o processador mediante algum evento


que possa afetar o bom funcionamento do sistema. Dessa forma, o sistema pode preparar-se para
a situao iminente de falha, seja salvando o contexto da computao, ou reconfigurando o
sistema utilizando um meio alternativo de execuo.

35

Tolerncia a Falhas para Sistemas Embarcados

5 MODELO PARA APLICAO DE TOLERNCIA A FALHAS EM


SISTEMAS EMBARCADOS
5.1 FASES DO PROJETO DE SISTEMAS EMBARCADOS
Como

qualquer

sistema

computacional,

os

sistemas

embarcados

devem

ser

implementados seguindo um certo modelo de projeto. Um modelo simplificado para o projeto de


sistemas embarcados est representado na Figura 5.

Figura 5 Modelo para projeto de Sistemas Embarcados

O modelo apresenta algumas fases do projeto de sistemas embarcados. Apesar de


representadas no modelo acima numa ordem cronolgica, nada impede que durante o
desenvolvimento do projeto as fases sejam realizadas em paralelo ou que haja retornos no caso de
descoberta de erros durante uma fase anterior, como no modelo espiral de Engenharia de
Software.
As fases identificadas sero descritas a seguir.

5.1.1

ESPECIFICAO DOS REQUISITOS


Nesta fase devem ser descritos o objetivo do sistema e suas funcionalidades. Deve ser

definido o que o sistema deve realizar, como deve se comportar em determinadas situaes e
como ser a interao com o usurio. Nesta fase tambm sero identificados os aspectos no-

36

Tolerncia a Falhas para Sistemas Embarcados

funcionais do sistema como a performance que deve apresentar, as limitaes de custo, peso e
volume, bem como aspectos de segurana e confiabilidade.

5.1.2

DECOMPOSIO EM MDULOS
Dividindo o sistema em diferentes mdulos, torna-se mais fcil o entendimento de seu

funcionamento. Assim, nesta fase so identificados os mdulos do sistema e como estes interagem
entre si.

5.1.3

IMPLEMENTAO
Para a implementao dos mdulos, primeiramente necessrio identificar quais devero

ser implementados por hardware, quais sero implementados por software, quais dispositivos
disponveis no mercado poderiam ser utilizados. A deciso sobre o meio de implementao dos
mdulos deve ser tomada levando-se em considerao os aspectos no-funcionais da
especificao de requisitos. Assim, se necessrio para o sistema que este execute funes em
paralelismo real para atingir o requisito de performance, deve-se preferir a implementao por
hardware dos mdulos que realizaro tais funes. Funes muito complexas, que exigiriam
muitos recursos e esforo de projeto para a implementao por hardware, devem ser
desenvolvidos por software. Dispositivos comerciais que implementem as funes de um dos
mdulos podem ser utilizados, se, claro, houver garantia da eficincia destes.

5.1.4

TESTES E VALIDAO
Aps a implementao necessria a fase de testes. Nesta fase, atravs da utilizao do

sistema ou simulao, verifica-se se o sistema realmente fornece as sadas esperadas. Alm


disso, necessrio validar o sistema segundo sua especificao de requisitos, o que engloba
tambm os requisitos no-funcionais, como: performance, segurana, custo. Nesta fase, deve-se
ter meios de medir os requisitos no-funcionais verificando se estes obedecem especificao do
sistema.

5.2 FASES ADICIONAIS PARA A APLICAO DE TOLERNCIA A FALHAS


Para a aplicao de tolerncia a falhas no projeto de sistemas embarcados, algumas fases
devem ser adicionadas ao modelo apresentado. A seguir, sero apresentadas essas fases.

37

Tolerncia a Falhas para Sistemas Embarcados

5.2.1

IDENTIFICAO DOS MDULOS CRTICOS


Aps a decomposio do sistema em mdulos, devem ser identificados aqueles que

possuem maior aspecto crtico. A escolha dos mdulos crticos especfica para cada aplicao,
dependendo da especificao do sistema e de seus requisitos de segurana. Porm, em geral, so
considerados crticos os mdulos que:

apresentando falhas, podem por em risco todo o funcionamento do sistema;

sejam mais propensos ocorrncia de falhas, contendo processamento muito complexo,


ou transferncia de dados por meios no confiveis, por exemplo.
Sendo tolerncia a falhas implementada essencialmente por meio de redundncia, pode

tornar-se muito cara a aplicao dessa caracterstica a todos os mdulos do sistema. Obviamente,
se o sistema crtico o bastante para no caso de falha ocasionar uma catstrofe pondo em risco
vidas humanas ou uma perda financeira muito significativa, o investimento no mecanismo de
tolerncia a falhas deve possibilitar a aplicao de vrias tcnicas em vrios mdulos do sistema.
Normalmente, tolerncia a falhas apenas aplicada aos componentes mais crticos.

5.2.2

IDENTIFICAO E ANLISE DAS PROVVEIS FALHAS


Apesar de algumas tcnicas de tolerncia a falhas tratarem falhas no previstas, conhecer

as falhas que podem ocorrer durante a execuo do sistema pode ser de suma importncia para o
projeto de seu mecanismo de tolerncia a falha. Alm de identificar as falhas, deve-se tentar
analisar a freqncia da ocorrncia delas no sistema, pois essa medida determinar o grau de
redundncia utilizado para o tratamento dessas falhas, evitando-se redundncia desnecessria, o
que aumentaria o custo do projeto.
Como exemplo de como a identificao e anlise das falhas podem determinar a tcnica
utilizada para trat-las, apresentaremos o caso de uma transmisso de mensagem por uma rede
de computadores. Sabe-se que algumas das falhas que podem ocorrer na transmisso de dados
so perda total da mensagem, atraso no envio ou corrupo do contedo da mensagem. No caso
de perda da mensagem e atraso no envio, deve ser analisado qual o tempo necessrio para a
transmisso em situaes normais. Assim, pode-se utilizar um mecanismo de timeout com o tempo
limite um pouco superior ao tempo necessrio para a transmisso e solicitar um novo envio caso o
atraso ultrapasse esse limite. A identificao do tempo necessrio foi importante para evitar que o
sistema espere mais do que o necessrio para considerar que houve um erro, minimizando assim,
a redundncia de tempo utilizada por esta tcnica.

38

Tolerncia a Falhas para Sistemas Embarcados

J a corrupo do contedo da mensagem pode ser tratada pela utilizao de cdigo de


deteco e correo de erros. Nesse caso deve-se analisar a freqncia da ocorrncia de dados
corrompidos. Se, por exemplo, a probabilidade de ocorrer dois erros por mensagem for muito
pequena, de forma que a ocorrncia desse erro no ameace o requisito de confiabilidade do
sistema, deve-se utilizar um cdigo de erro que tolere apenas um erro por mensagem. A utilizao
de um cdigo de erro que tolerasse dois erros por mensagem seria um caso de redundncia
desnecessria de informao.

5.2.3

ESCOLHA DA(S) TCNICA(S) DE TOLERNCIA A FALHAS


Identificados os mdulos crticos e as possveis falhas, deve-se definir as tcnicas de

tolerncias a falhas a serem utilizadas no projeto do sistema embarcado em desenvolvimento.


Para a realizao dessa escolha, deve-se ter em mente as restries de custo, requisitos
de performance e confiabilidade do sistema.
O requisito de performance, juntamente com as restries de custo do projeto, pode definir
o meio para a implementao da tcnica; se por software, ou por hardware.
O requisito de confiabilidade pode determinar as estratgias utilizadas pelo mecanismo de
tolerncia a falhas: apenas detectar que houve falha; mascarar as falhas ocorridas; detectar e
recuperar o erro, voltando o sistema a um estado anterior consistente; ou detectar a falha,
recuperar o erro e reconfigurar o sistema, isolando o mdulo falho e excluindo-o da execuo do
sistema.
A escolha da melhor tcnica de tolerncia a falhas muito dependente da aplicao
devendo ser analisada caso a caso. Porm algumas tcnicas so especficas para certos tipos de
aplicaes. O conhecimento dessas tcnicas pode auxiliar na escolha da tcnica mais adequada
aos projetos de sistemas embarcados. A Tabela 2 resume a relao de algumas das tcnicas
analisadas na seo 4 a aplicaes s quais mais se adequam.

39

Tolerncia a Falhas para Sistemas Embarcados

Tipo de Aplicao

Tcnica de Tolerncia a Falhas

Transmisso de Dados

Cdigos de Deteco e Correo de Erros

Sistemas de Controle com Realimentao

Flux-Summing

Converso AD

Mid-value Select

Transaes Longas

Checkpointing

Sistemas de Tempo Real

Watchdog

Computaes Complexas

Programao em N-verses

Aplicaes de Alta Disponibilidade

Interrupes de segurana (power-failure


interruption, oscilator-failure nterruption)

Tabela 2 Relao entre Tipo de Aplicao e Tcnica mais adequada

5.2.4

SISTEMA DE INJEO DE FALHAS


Aps a identificao das tcnicas a serem utilizadas para o mecanismo de tolerncia a

falhas no sistema, deve-se pensar na maneira de como esse mecanismo ser testado. Para isso,
deve ser implementado um modo de injetar falhas no sistema, com o objetivo de observar seu
comportamento mediante a presena de tais falhas.
Existem duas abordagens para a injeo de falhas no sistema[22]. A primeira pela
simulao, em que as falhas so inseridas em um modelo do sistema e esse modelo simulado.
Na segunda, o sistema desenvolvido e utilizada alguma tcnica para injetar falhas no sistema e
ento os efeitos das falhas so observados.
As tcnicas de injeo de falhas podem ser divididas em intrusivas e no-intrusivas, de
acordo com o efeito que causam ao sistema destino (aquele no qual se pretende injetar as falhas).
As tcnicas no-intrusivas, apenas introduzem falhas no sistema, enquanto as intrusivas, afetam o
sistema de alguma outra maneira, alm da injeo de falhas, tomando tempo de processamento,
por exemplo[23].
Algumas caractersticas so desejveis em um sistema de injeo de falhas:

Interferncia mnima sobre o sistema destino

Fcil expansibilidade para novos tipos de falhas

Injeo de falhas determinstica


40

Tolerncia a Falhas para Sistemas Embarcados

Transparncia para a aplicao


Apesar de ser uma rea de estudo relativamente nova, existem algumas ferramentas para

a implementao de sistemas de injeo de falhas. O sistema MEFISTO[10] injeta falhas em


descries VHDL e permite sua simulao. A ferramenta FIST[11] (Fault Injection Security Tool) e
o projeto MARS utilizam radiao inica[12] e campos eletromagnticos, respectivamente, para
produzir falhas transitrias e aleatrias no interior de chips. H ainda o LFI (Laser Fault Injection)
que utiliza laser para introduo de falhas em chips em tempos especficos.
Em projetos mais simples, o sistema de injeo de falhas pode ser simplesmente uma
estratgia de modificar as entradas do sistema, observando se este reage como especificado.

5.3 O MODELO PROPOSTO


O modelo proposto na Figura 6, ilustra as fases do projeto de sistemas embarcados
considerando a introduo de mecanismos de tolerncia a falhas.

Figura 6 Modelo para aplicao de Tolerncia a Falhas a Sistemas Embarcados


O modelo apresenta trs sistemas distintos: o sistema embarcado em si, o mecanismo de
tolerncia a falhas e o sistema de injeo de falhas. Aps identificar os mdulos do sistema, devese fazer a identificao dos mdulos crticos, sendo essa uma fase exclusiva do mecanismo de
41

Tolerncia a Falhas para Sistemas Embarcados

tolerncia a falhas, assim como as duas fases seguintes. Escolhidas as tcnicas que sero
aplicadas ao sistema com o objetivo de tolerar s falhas, parte-se para a modelagem e
implementao do sistema embarcado e do mecanismo de tolerncia a falhas que devem ser feitos
no s em paralelo, mas em conjunto j que o mecanismo de tolerncia a falhas estar inserido no
sistema embarcado. O sistemas de injeo de falhas, poder ser desenvolvido paralelamente ao
sistema embarcado, para conferir a caracterstica desejvel de interferncia mnima no sistema
destino.
A fase de testes dever ser realizada aps a concluso das implementaes do sistema
em conjunto com o mecanismo de tolerncia a falhas e do sistema de injeo de falhas, pois
utilizar esse ltimo para testar o mecanismo de tolerncia a falhas aplicado no sistema.

42

Tolerncia a Falhas para Sistemas Embarcados

6 ESTUDO DE CASO
Ser apresentado nesta seo o desenvolvimento de um projeto simples de sistema
embarcado considerando aspectos de tolerncia a falhas. O exemplo a ser implementado bem
simples, pois o objetivo desta implementao analisar a aplicao de tolerncia a falhas no
sistema. Assim, ser dada nfase no mecanismo de tolerncia a falhas e no na aplicao em si.
A aplicao a ser implementada o controlador de um par de semforos de um
cruzamento de trnsito. O sistema necessita de um mecanismo de tolerncia a falhas j que seria
muito problemtico se, na ocorrncia de falhas, ambos os semforos sinalizassem para os carros
seguirem, podendo ocasionar muitos acidentes.

6.1 APLICAO DO MODELO


Nesta seo sero apresentadas as fases definidas pelo modelo proposto na seo 5,
aplicadas ao estudo de caso em questo.

6.1.1

ESPECIFICAO DE REQUISITOS
O sistema deve controlar os semforos do cruzamento de modo que o sinal verde dure 5

segundos e o sinal amarelo dure 1 segundo. O sistema nunca deve deixar que os dois sinais
fiquem verdes e deve possuir alguma forma de mostrar que ocorreu falha em seu processamento.
No caso da ocorrncia de falhas, o sistema deve mostrar sinal vermelho ou amarelo para os dois
cruzamentos, de forma que os motoristas percebam que o sistema de semforos est inativo.

6.2 DECOMPOSIO

EM

MDULOS

IDENTIFICAO

DOS

MDULOS

CRTICOS
O sistema sugerido muito simples no apresentando necessidade de sua diviso em
mdulos e consequentemente dispensando a identificao de mdulos crticos. O sistema inteiro
ser representado por um nico mdulo e este mdulo ser considerado crtico e sobre ele sero
aplicadas as tcnicas de tolerncia a falhas.

43

Tolerncia a Falhas para Sistemas Embarcados

6.2.1

IDENTIFICAO E ANLISE DAS PROVVEIS FALHAS


H algumas falhas provveis no sistema proposto. A temporizao do sistema pode ser

alterada devido ocorrncia de alguma falha. O sistema pode gerar sadas erradas, por conta de
erros no projeto ou alguma interferncia externa pode modificar o valor de algum bit. Alm disso, o
sistema pode simplesmente parar seu funcionamento, devido a desgaste fsico do material, por
exemplo, deixando de produzir as sadas.
A freqncia de ocorrncia das falhas no pode ser identificada imediatamente. Apenas
com a utilizao do sistema por algum tempo, poder ser extrada essa informao.

6.2.2

ESCOLHA DAS TCNICAS DE TOLERNCIA A FALHAS


O grau de confiabilidade exigido na especificao da aplicao indica somente que o

sistema deve ser capaz de avisar a ocorrncia de falhas em seu processamento, apresentando um
comportamento pr-definido que lhe garanta a segurana. Assim, a aplicao de uma tcnica para
deteco de falhas suficiente. Neste estudo de caso, duas tcnicas sero implementadas:
verificao de consistncia e duplicao com comparao. Cada tcnica ser aplicada em uma
abordagem diferente ao problema.

6.2.3

IMPLEMENTAO

Verificao de Consistncia
O sistema controla os dois semforos enviando trs bits para cada um deles. Cada bit
indica uma luz do semforo: verde, vermelha e amarela. Um dos invariantes desse sistema que
as duas luzes verdes nunca podem estar acesas ao mesmo tempo. O mecanismo de deteco de
falhas apenas verifica se os bits que indicam a luz verde nos dois semforos esto ativos
simultaneamente. Se estiverem, o mecanismo de deteco de erros modifica a sada deixando
apenas as luzes amarelas acesas e envia um sinal indicando que houve erro. O sistema continua
funcionando at que ocorra outro erro.
O mdulo de controle dos semforos foi implementado por software, utilizando um
microcontrolador 8031, enquanto que o mecanismo de deteco de falhas foi implementado por
hardware atravs da configurao de um FPGA.

44

Tolerncia a Falhas para Sistemas Embarcados

Figura 7 Estudo de Caso: Verificao de Consistncia


Duplicao com Comparao
O sistema controla os dois semforos enviando dois bits para cada um deles. O nmero de
bits foi reduzido por conta de limitaes no nmero de pinos disponveis para entrada e sada na
placa utilizada para a implementao do prottipo. Cada bit indica uma luz do semforo: verde e
vermelha. Entre uma luz verde e outra, o sistema mantm os dois sinais vermelhos acesos por 1
segundo, para manter a segurana e compensar a falta do sinal amarelo. Para a introduo do
mecanismo de tolerncia a falhas, foram utilizados dois mdulos idnticos do sistema e um
componente para realizar a comparao das sadas e detectar erros na execuo.
Os

mdulos

duplicados

foram

implementados

por

software,

utilizando

dois

microcontroladores 8031, enquanto que o mecanismo de deteco de falhas foi implementado por
hardware atravs da configurao de um FPGA.
Para essa abordagem foi necessrio controle de sincronismo entre os dois mdulos, para
garantir que ambos encontram-se no mesmo estado da execuo do programa. Para isso, foram
acrescentados um flag para cada mdulo redundante que indica que um novo dado foi enviado
para o mdulo de deteco de falhas. Recebendo esse sinal, o mdulo de deteco de falhas
aguarda a sinalizao do outro mdulo. Se o tempo para o segundo mdulo sinalizar que modificou
seus sinais de sada exceder um timeout, o sistema considerar que houve falha neste mdulo e
deve retornar as sadas que o mdulo que sinalizou primeiro enviou. Isso feito porque considerase que a probabilidade de ocorrer duas falhas simultaneamente nos dois mdulos muito pequena
e se um dos mdulos falhou, provavelmente o outro deve estar correto. Ainda assim, o sistema
deve sinalizar que houve erro, indicando que aquele resultado foi obtido apenas de um dos
mdulos e portanto possui credibilidade menor que os resultados obtidos da execuo dos dois
mdulos, comparao entre eles e constatao de que as duas sadas esto iguais.

45

Tolerncia a Falhas para Sistemas Embarcados

Se no houver timeout, o sistema compara as duas sadas. No caso de discordncia entre


os mdulos, o mecanismo de deteco de falhas no tem condies de descobrir qual dos dois
mdulos falhou para retornar a sada do outro mdulo. Ento, atendendo os requisitos de
segurana, o sistema coloca na sada os sinais que indicam que as duas luzes vermelhas dos dois
semforos devem ficar acesas.
No caso de no ocorrer falha alguma, o mdulo de deteco de falhas retorna as sadas de
um dos mdulos, j que estas so iguais.
Sempre aps retornar uma sada, o mdulo de deteco de erros, atravs do sinal
Continue, sinaliza aos dois microcontroladores

que eles podem continuar a execuo do

programa. Assim, a cada mudana na sada, os mdulos redundantes so sincronizados.


Os programas carregados nos dois microcontroladores so idnticos, mas poderiam ter
sido projetados independentemente, utilizando a tcnica de N-verses.

Figura 8 Estudo de Caso: Duplicao com Comparao


Ferramentas e Componentes Utilizados
Para a implementao das duas abordagens ao problema, foi utilizada a placa XS40-010e
da XESS Corporation. Essa placa possui um microcontrolador e um FPGA j conectados entre si.
Para a implementao da segunda abordagem, foram utilizados os microcontroladores de duas
placas, para implementao dos mdulos redundantes,

e o FPGA de uma delas, para a

implementao do componente de deteco de falhas. Maiores informaes sobre a utilizao da


XS40-010e podem ser obtidas no Apndice A.
Os componentes de hardware foram implementados utilizando a linguagem VHDL e a
ferramenta utilizada para gerar o arquivo de configurao do FPGA foi o Foundation, da Xinlinx
46

Tolerncia a Falhas para Sistemas Embarcados

[16]. A Figura 9 ilustra a montagem das conexes das duas placas, na implementao da tcnica
de duplicao com comparao.
Os programas dos microcontroladores foram implementados em linguagem C e compilados
utilizando a ferramenta Vision, da Keil Software.

Figura 9 Implementao do estudo de caso

6.2.4

TESTES
Para testar o sistema, foram utilizados mtodos bem simples de injeo de falhas.
Na tcnica de verificao de consistncia, o programa do microcontrolador foi modificado

para retornar sadas invlidas periodicamente. Esse um mtodo intrusivo de injeo de falhas,
mas foi utilizado por ser bastante simples.
No caso da duplicao com comparao, o mtodo utilizado para injetar falhas foi simular
as sadas do microcontrolador externo placa onde se encontra o FPGA, atravs do ProtoBoard.
Desse modo foi possvel simular falhas nas sadas de um dos mdulos e observar o
comportamento do sistema.

47

Tolerncia a Falhas para Sistemas Embarcados

6.3 RESULTADOS OBTIDOS


A partir da implementao desses estudos de caso, pode-se comparar a aplicao de duas
tcnicas de tolerncia a falhas. A aplicao da tcnica de Duplicao com Comparao mais
complexa e cara, envolvendo maior grau de redundncia e exigindo tempo de desenvolvimento
maior do que a aplicao da tcnica de Verificao de Consistncia. Entretanto, a abordagem com
duplicao permitiu que o sistema tolerasse o problema de parada de funcionamento de um dos
mdulos, detectando o erro e continuando sua execuo utilizando apenas o mdulo restante. A
Tabela 3 mostra uma comparao dos recursos utilizados, na configurao do FPGA, em cada um
dos estudos de caso implementados.

A tcnica de duplicao com comparao apresentou

necessidade de recursos 8 vezes maior, alm do mdulo redundante. Isso se explica pela
implementao do timeout e pela escolha mais elaborada dos sinais enviados aos semforos.
Tcnica
implementada
Verificao de
Consistncia
Duplicao com
Comparao

Nmero de CLBs
utilizados

Percentagem de CLBs
do FPGA

Total equivalente de
portas

1%

42

32

8%

558

Tabela 3 - Recursos utilizados para implementao dos estudos de caso


Um fato interessante que pde ser observado durante a implementao, foi que o
mecanismo de deteco de falhas, baseado na tcnica de duplicao com comparao, ajudou na
identificao de um erro de projeto no programa dos microcontroladores. Ocorria um problema de
acesso mtuo, por dois processos concorrentes, mesma varivel que era utilizada para computar
o tempo de espera entre o envio dos sinais. Dessa forma, um dos mdulos enviava dados bem
antes do tempo determinado e o sistema de deteco de falhas identificava um timeout. A falha era
intermitente e no teria sido percebida sem a utilizao do mecanismo de deteco de falhas.
Assim, mtodos de tolerncia a falhas no apenas permitem que os sistemas continuem seu
funcionamento mesmo na presena de falhas, mas tambm ajudam a eliminar falhas nos sistemas
durante a fase de testes.

6.4 DIFICULDADES ENCONTRADAS


Alm da pouca experincia da autora na rea de hardware, a utilizao da placa XS40010e apresentou-se como a maior dificuldade para a implementao da parte prtica do projeto. As
sees abaixo apresentaram as principais dificuldades encontradas na utilizao da placa.

48

Tolerncia a Falhas para Sistemas Embarcados

Pouca informao
O manual de utilizao das placas da famlia XS40 [13] omite vrias informaes
importantes para o funcionamento desta. Foi necessrio descobrir atravs de tentativas, que o
usurio deve ficar responsvel por implementar, no FPGA, um circuito para controle de leitura da
memria pelo microcontrolador. Alm disso, o clock do microcontrolador deve tambm ser gerado
pelo usurio, podendo ser utilizado o oscilador da placa, sendo necessrio fazer a ligao
externamente ou atravs do FPGA.
Poucos pinos para conexes externas
A placa XS40-010e possui muitos pinos para conexo com o FPGA. Porm a grande
maioria desses pinos esto conectados internamente com outros dispositivos da placa
(microcontrolador, memria RAM, LED de 7 segmentos, porta paralela, ...). Assim, ela possui
grande flexibilidade de interao entre os dispositivos da placa, mas pouca flexibilidade de conexo
com componentes externos placa, por conta da falta de pinos livres.
A menos que seja aplicada alta impedncia nos sinais de conexes entre os dispositivos
ou que estes sejam desabilitados, esses sinais no podem ser utilizados externamente, visto que
os dispositivos interferem na transmisso dos sinais conectados.
Como no foi descoberto, durante o desenvolvimento do projeto, uma maneira de colocar
sinais isolados em alta impedncia, sentiu-se falta de pinos disponveis para a implementao da
idia inicial do projeto. Foi necessrio, ento, diminuir o nmero de bits de entrada para o
dispositivo de deteco de falhas, quando foi utilizado um microcontrolador externo placa.
Erro no programa de download
Durante a implementao do projeto do controlador de semforos, foi observada uma falha
no programa que faz o download do arquivo HEX do PC para a memria SRAM da placa XS40010e.
Aps vrias tentativas, sem sucesso, de utilizao da placa, e testando o funcionamento de
cada componente separadamente, foi observado que o primeiro byte escrito na memria no
correspondia ao byte expresso no arquivo HEX que foi carregado na placa. Foi verificado tambm
que o primeiro byte era subscrito pelo ltimo byte, mas com o bit menos significativo sempre igual a
zero.
Como soluo para este problema, alm de entrar em contato com a XESS Corporation
notificando-os do fato observado, sempre que o programa era compilado, editava-se o arquivo no
49

Tolerncia a Falhas para Sistemas Embarcados

formato HEX colocando no ltimo byte, o cdigo da operao JMP que igual a 02H e que, como
possui o bit menos significativo igual a 0, no ser corrompida durante o download, quando for
escrita por cima do byte na primeira posio da memria.
Como o primeiro byte a ser escrito na memria, no arquivo HEX gerado pelo compilador da
Keil, era exatamente o 02H, aps o download, o arquivo ficaria intacto, com exceo de um byte
adicional no final do arquivo, mas que no causaria efeito nenhum ao programa j que este um
loop infinito e essa posio de memria nunca ser acessada.

50

Tolerncia a Falhas para Sistemas Embarcados

7 CONCLUSES E TRABALHOS FUTUROS


O resultado obtido deste trabalho foi um estudo amplo das tcnicas mais utilizadas para
aplicao de tolerncia a falhas em sistemas de computao em geral, tendo em vista a aplicao
destas para o projeto especfico de sistemas embarcados. Com o estudo e anlise das tcnicas,
concluiu-se que devido s limitaes inerentes ao projeto de sistemas embarcados a aplicao de
tcnicas de tolerncia a falhas deve ser bem dosada. Baseando-se nos requisitos de segurana
dos sistemas, deve-se procurar um compromisso entre estes requisitos e limitaes como as de
custo, tamanho e consumo de energia nos sistemas.
A exigncia de determinismo no tempo de execuo das operaes em sistemas
embarcados de tempo real, inviabilizam o emprego de certas tcnicas de tolerncia a falhas, que,
utilizando redundncia temporal, inserem no-determinismo no tempo de concluso das
operaes. Exemplos de tcnicas como essas so verificao de capacidade e blocos de
recuperao.
Foi proposto um modelo para a aplicao de tolerncia a falhas ao projeto de sistemas
embarcados. Este modelo precisa ser utilizado em mais estudos de caso para ser validado ou
modificado, se identificadas falhas ou aspectos a serem melhorados.
A implementao de algumas tcnicas de tolerncia a falhas a um sistema real, ainda que
bem simples, desenvolveu um conhecimento mais prtico e profundo, tanto no projeto de sistemas
embarcados, quanto na aplicao das tcnicas de tolerncia a falhas, sendo verificado no s o
aspecto conceitual da utilizao da tcnica, mas tambm aspectos prticos como a necessidade de
sincronizao dos mdulos redundantes.
Com o desenvolvimento da parte prtica do projeto, adquiriu-se experincia na utilizao
da placa XS40, que pode ser mais rapidamente utilizada em outros projetos do centro. Um manual
objetivo e claro, que, em conjunto com o manual disponibilizado pela Xess[13], pode facilitar na
utilizao da placa, est no apndice A deste documento.
No trabalho poderiam ter sido implementados um maior nmero de estudos de caso,
abrangendo mais tcnicas de tolerncia a falhas e possibilitando uma avaliao quantitativa. Alm
disso, poderia ter sido explorada a utilizao de FPGAs para a implementao de tcnicas de
reconfigurao, tirando proveito da possibilidade de configurao dinmica, que estes dispositivos
oferecem.

51

Tolerncia a Falhas para Sistemas Embarcados

Como continuao do trabalho, seria importante a implementao de um conjunto maior de


tcnicas de tolerncia a falhas em sistemas embarcados, identificando mais detalhadamente os
aspectos de utilizao de cada tcnica. Alm disso, poderia ser implementada uma biblioteca de
funes e componentes reutilizveis, para auxiliar na aplicao de tolerncia a falhas no projeto de
sistemas embarcados.
Com base na classificao e anlise das tcnicas apresentadas neste trabalho, um sistema
de apoio escolha das tcnicas de tolerncia falhas a serem aplicadas e insero automtica
dessas tcnicas ao projeto de sistemas embarcados pode ser futuramente desenvolvido.

52

Tolerncia a Falhas para Sistemas Embarcados

8 REFERNCIAS
[1] Pradhan, D. K.; FAULT-TOLERANT COMPUTER SYSTEM DESIGN. Prentice Hall 1996
[2] Jansch-Prto, I.; Weber, T. S. RECUPERAO

EM

SISTEMAS DISTRIBUDOS. XVI Jornada de

Atualizao em Informtica, XVII Congresso da Sociedade Brasileira de Computao. 1997


[3] Cechin, S. L.; MODELAGEM DE FALHAS. Instituto de Informtica - UFRGS. 1997.
[4] GRUPO

TOLERNCIA

DE

FALHAS

DA

UFRGS.

URL:

http://www.inf.ufrgs.br/gpesquisa/tf/tolerancia.html
[5] Piccoli,

L.;

CHECKPOINTS

SNCRONOS

URL:

http://www.inf.ufrgs.br/gpesquisa/tf/portugues/ensino/ckpt.html
[6] Vahid, F.; Givargis, T. EMBEDDED SYSTEM DESIGN: A UNIFIED HARDWARE/SOFTWARE
APPROACH Department os computer Science and Engineering University of Califrnia, 1999.
[7] Silveira, E. D.; MICROCONTROLADORES

AUTOMAO: PANORAMA ATUAL

PERSPECTIVAS

FUTURAS. URL: http://www.malbanet.com.br/professorelmo/microcon.htm


[8] EMBEDDED SYSTEMS PROGRAMMING. URL: http://www.embedded.com/
[9] Clark. J. A.; Pradhan. D. K.; FAULT-INJECTION: A METHOD FOR VALIDATING COMPUTER-SYSTEM
DEPENDABILITY . IEEE Computer, Vol. 28, No. 6, June 1995 Abstract.
[10] Jenn, E; Arlat, J; Rimen, M.; Ohlsson, J.; Karlsson, J. FAULT
THE

MEFISTO

TOOL.

INJECTION INTO

VHDL

MODELS:

Twenty-Fourth International Symposium on Fault-Tolerant Computing.

IEEE, 1994. p. 66-75.


[11] Reliable

Software

Technologies,

FAULT

INJECTION

SOFTWARE

TOOL.

URL:

http://www.rstcorp.com/FIST-demo/intro.html
[12] J. Karlsson et al. USING HEAVY-ION RADIATION

TO

VALIDATE FAULT-HANDLING MECHANISMS.

IEEE Micro, v.14, n.1, p.8-23, Feb. 1994.


[13] Xess

Corporation.

XS40,

XSP,

XS95

BOARD

USER

MANUAL.

1997-1999

URL:

http://www.xess.com

53

Tolerncia a Falhas para Sistemas Embarcados

[14] Brown, S. D.; Francis, R.J; Rose, J; Vranesic, Z. G. FIELD-PROGRAMMABLE GATE ARRAYS.
Kluwer Academic Publishers, 1992.
[15] KEILSOFTWARE EMBEDDED DEVELOPMENT TOOLS. URL: http://www.keil.com
[16] XILINX. URL: http://www.xilinx.com/
[17] Avizienis, A. THE FOUR-UNIVERSE INFORMATION SYSTEM MODEL
TOLERANCE, Proceedings of the 24

th

FOR

STUDY

OF

FAULT

Annual International Symposium on Fault-Tolerant

Computing Santa Monica, Califrnia 1982.


[18] Inacio,

C.

SOFTWARE

FAULT

TOLERANCE.

URL:

http://www.cs.cmu.edu/~koopman/des_s99/sw_fault_tolerance/index.html
[19] INTEL HEX FORMAT. URL: http://www.8052.com/tutintel.htm
[20] Stallings, W. COMPUTER ORGANIZATION

AND

ARCHITECTURE: DESIGNING

FOR

PERFORMANCE .

4th Edition - Prentice Hall 1996


[21] Avizeinis, A. THE N-VERSION APPROACH

TO

FAULT-TOLERANT SOFTWARE, IEEE Transactions

of Software Engineering, Vol. SE-11, No. 12 (December 1985), pp. 1491-1501.


[22] Slater,

R.

FAULT

INJECTION.

URL:

http://www.cs.cmu.edu/~koopman/des_s99/fault_injection/index.html
[23] Sotoma, I. AFIDS - ARQUITETURA

PARA

INJEO

DE

FALHAS

EM

SISTEMAS DISTRIBUDOS.

CPGCC, UFRGS, 1997

54

Tolerncia a Falhas para Sistemas Embarcados

9 APNDICE A UTILIZANDO A PLACA XS40-010E DA XESS


Esse apndice tem como objetivo mostrar a utilizao da Placa XS40-010e, fabricada pela
Xess Corporation [13] e utilizada na parte prtica deste trabalho.
Estrutura da Placa XS40-010e
A placa XS40-010e da Xess, utilizada para prottipo de sistemas envolvendo pores de
hardware e pores de software interagindo entre si.
Os principais recursos disponveis na
placa so:

FPGA de 20.000 portas, desenvolvido


pela Xilinx.

Microcontrolador Intel 8031.

LED de 7 segmentos.

Memria SRAM com 128KB.

Porta paralela.

Porta para mouse ou teclado PS/2

Porta para monitor VGA


A disposio desses recursos na placa

pode ser observada na Figura 10.

Figura 10
O FPGA o dispositivo central da placa. Nele se conectam todos os outros dispositivos e
os pinos externos da placa so, na maioria, pinos do FPGA. As principais conexes entre os
componentes da placa esto apresentadas na Figura 11.
Programando o Clock
A freqncia do oscilador da placa XS40-010e de 100MHz, porm possvel programlo para oscilar em freqncias menores. Para isso, utiliza-se o programa XSSETCLK disponvel no
pacote de software XSTOOLS que acompanha a placa. Para utilizar esse programa, preciso que
um shunt seja colocado no jumper J12. Para fazer isso, deve-se remover os cabos de fora e de
download, nessa ordem, colocar o shunt no jumper J12, e depois restaurar os cabos de download
e de fora, nessa ordem.
55

Tolerncia a Falhas para Sistemas Embarcados

Feito isso, j possvel executar o programa atravs da seguinte linha de comando:


C:/XSTOOLS/BIN>xssetclk XS40-010e 8
Pode-se utilizar qualquer nmero de 1 a 2048 que ser utilizado como divisor da freqncia
do oscilador. No exemplo acima, 8 far o clock oscilar numa freqncia aproximadamente igual a
12MHz.
Como o pacote de software XSTOOLS foi desenvolvido para vrias placas da famlia
XS40, necessrio indicar a placa que se est utilizando. Para isso, deve-se passar como
parmetro para o programa a string XS40-010e, observando que o programa faz diferena entre
maisculas e minsculas.
Aps executar o programa, o shunt deve ser removido do jumper J12. Ser necessrio
mais uma vez remover e restaurar os cabos de fora e download, observando a ordem em que isso
deve ser feito.

56

Tolerncia a Falhas para Sistemas Embarcados

57

Tolerncia a Falhas para Sistemas Embarcados

Utilizando o FPGA
Para configurar o FPGA, necessria a gerao de um arquivo no formato .BIT que pode
ser carregado na placa atravs da porta paralela, utilizando-se o programa XSLOAD, disponvel no
pacote de software XSTOOLS que acompanha a XS40-010e.
Para a gerao do arquivo .BIT, pode-se utilizar a ferramenta Foundation, desenvolvida
pela Xilinx e, portanto, compatvel com o FPGA existente na placa. Nesta ferramenta, cria-se
componentes atravs da descrio do hardware utilizando-se uma linguagem de descrio de
hardware, como VHDL, por exemplo. possvel tambm editar um circuito utilizando componentes
j implementados no programa, como portas AND, OR, flip-flop e etc., ou utilizando componentes
criados pelo usurio. Editado o circuito, pode-se fazer uma simulao deste na prpria ferramenta,
podendo verificar erros de projeto antes de carregar o hardware no FPGA. Para fazer a interao
do hardware carregado no FPGA, com os outros componentes da placa ou externos a ela, a
ferramenta permite que o usurio associe os sinais de entrada e sada de seu circuito aos pinos do
FPGA.
Gerado o arquivo .BIT, utiliza-se a seguinte linha de comando para configurar o FPGA da
placa:
C:/XSTOOLS/BIN>xsload arquivo.bit
Como alguns pinos do FPGA esto conectados a pinos do 8031, para utilizar apenas o
FPGA, necessrio desabilitar o microcontrolador para impedir que este cause qualquer efeito no
FPGA. Isto pode ser feito ativando o pino RST do 8031 atravs de sinal externo ou pela prpria
configurao do FPGA.
Da mesma forma, a memria SRAM tem alguns de seus pinos conectados ao FPGA e
tambm deve ser desabilitada se necessria a utilizao de algum desses pinos. Para desabilitar
a memria deve-se ativar o pino CE deste componente.
Utilizando o FPGA e o 8031
O FPGA e o microcontrolador j esto conectados entre si na placa XS40-010e. Porm, a
utilizao do microcontrolador no imediata. O programa XSLOAD pode ser chamado passando
alm do arquivo .BIT, um arquivo no formato HEX da Intel, contendo o programa a ser executado
pelo microcontrolador. Esse arquivo ser gravado na memria RAM da placa, mas para que o
microcontrolador possa ler as instrues que deve executar, necessrio que o usurio configure
o FPGA para implementar o hardware que controle a leitura da memria pelo microcontrolador. O

58

Tolerncia a Falhas para Sistemas Embarcados

esquema do circuito digital que deve ser utilizado para a leitura da memria est apresentado na
Figura 12.

Figura 12 Circuito para leitura da memria na placa XS40


No esquema mostrado na Figura 12, o componente OFD8 um flip-flop sncrono de 8 bits.
Os sinais de entrada s so passados para a sada do componente, na subida do clock. No circuito
apresentado, o sinal ALE (Address Latch Enable) do microcontrolador foi atribudo ao clock,
invertido, para que na sua descida, os sinais do microcontrolador que so utilizados para passar
tanto endereos de memria quanto dados, sejam armazenados no flip-flop, como endereos, e
possam posteriormente passar os dados diretamente do microcontrolador memria.
Alm disso, os clocks do 8031 e do FPGA so independentes e cabe ao usurio aplicar o
clock do microcontrolodor atravs de um oscilador externo, ou utilizando o oscilador da prpria
placa acrescentando essa ligao na configurao do FPGA. Dessa forma, observa-se que nunca
ser possvel utilizar apenas o microcontrolador na placa XS40-010e.
Para gerar o arquivo HEX, pode-se escrever o programa do microcontrolador utilizando a
linguagem assembly do 8031 e compilar o programa com o assembler ASM51, disponvel no
pacote de software que acompanha a placa XS40-010e. Uma forma alternativa e mais fcil para a
gerao do arquivo HEX a programao em linguagem C e utilizao de um compilador que gere
o arquivo HEX, como o compilador Vision da Keil Software[15], por exemplo.
59

Tolerncia a Falhas para Sistemas Embarcados

Вам также может понравиться