Академический Документы
Профессиональный Документы
Культура Документы
TOLERNCIA A FALHAS
PARA
SISTEMAS EMBARCADOS
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.
pela
ajuda
para
entender
os
conceitos
1 INTRODUO............................................................................................................................. 7
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
8 REFERNCIAS.......................................................................................................................... 53
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
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.
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
2.1.3
2.1.4
11
12
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.1
HARDWARE
Na redundncia de hardware so replicados componentes, unidades de memria, fontes
2.2.2
SOFTWARE
Na redundncia de software, ocorre a utilizao de verses distintas do mesmo software,
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
Funcionalidade especfica
Diferente dos computadores de propsito geral, que oferecem funes bsicas de
Limites
Os sistemas embarcados geralmente possuem muitas restries de projeto. Custo,
14
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.1
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
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
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
3.2.3
ASIP
Servindo como uma alternativa s duas abordagens anteriores, e procurando associar as
Hardware Dedicado
Boa
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
17
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
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
4.1.4
ASPECTOS GERAIS
4.1.5
19
NMR
A tcnica NMR (n-modular redundancy) consiste na utilizao de n mdulos, com mesma
Hardware - no caso de replicao de componentes fsicos, como unidades lgicaaritmticas, chips de mmoria...
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.
4.2.2
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
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.
4.2.3
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
4.2.5
FLUX-SUMMING
A tcnica consiste em utilizar a propriedade inerente dos sistemas de controle com
24
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
4.2.7
4.2.8
26
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.
27
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
28
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.
29
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
31
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.
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.
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
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:
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
35
qualquer
sistema
computacional,
os
sistemas
embarcados
devem
ser
5.1.1
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
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
37
5.2.1
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:
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
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
5.2.3
39
Tipo de Aplicao
Transmisso de Dados
Flux-Summing
Converso AD
Mid-value Select
Transaes Longas
Checkpointing
Watchdog
Computaes Complexas
Programao em N-verses
5.2.4
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:
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
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.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
6.2.1
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
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
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
[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.
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
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
48
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
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
51
52
8 REFERNCIAS
[1] Pradhan, D. K.; FAULT-TOLERANT COMPUTER SYSTEM DESIGN. Prentice Hall 1996
[2] Jansch-Prto, I.; Weber, T. S. RECUPERAO
EM
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
PERSPECTIVAS
MEFISTO
TOOL.
INJECTION INTO
VHDL
MODELS:
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
Corporation.
XS40,
XSP,
XS95
BOARD
USER
MANUAL.
1997-1999
URL:
http://www.xess.com
53
[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
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 .
TO
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.
54
LED de 7 segmentos.
Porta paralela.
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
56
57
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
esquema do circuito digital que deve ser utilizado para a leitura da memria est apresentado na
Figura 12.