redes de computadores - redundancia de redes - gilberto...

51
UNIVERSIDADE TUIUTI DO PARANÁ REDES DE COMPUTADORES - REDUNDÂNCIA DE REDES. CURITIBA 2014

Upload: vuongnguyet

Post on 20-Jan-2019

226 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDADE TUIUTI DO PARANÁ

REDES DE COMPUTADORES - REDUNDÂNCIA DE REDES.

CURITIBA

2014

GILBERTO JOSÉ BASSANI PACHECO

REDES DE COMPUTADORES - REDUNDÂNCIA DE REDES.

Monografia apresentada à diretoria de pós-graduação da Universidade Tuiuti do Paraná como quesito parcial para a obtenção do título de Especialista Lato Sensu em Redes de Computadores e Segurança de Redes – Administração e Gerência sob orientação do Prof.º Luiz Altamir Corrêa Junior.

CURITIBA

2014

AGRADECIMENTOS

Agradeço primeiramente a minha esposa Viviane por ter me suportado

e apoiado durante todo o período da Pós-Graduação. Foram muitos finais de semana de estudos e dedicação sem conseguir dar a atenção que ela merece. Obrigado também aos professores Marcelão, Luiz, Amaral e Angela pela dedicação com todos nós alunos.

DEDICATÓRIA

Dedico esse trabalho ao meu Pai, Gilberto Rosário Pacheco, que não se encontra mais entre nós, mas que tanto se esforçou para garantir os estudos para meus irmãos e eu. Tenho certeza que ele está muito feliz por mais essa etapa concluída em minha vida. Obrigado Pai e continue sempre nos abençoando.

RESUMO Este trabalho apresenta uma proposta de sistema de arquitetura com redundância de hardware do tipo ativa visando deixar o sistema com maior confiabilidade à presença de falhas no sistema e aumentando a confiabilidade, tendo como foco aplicações em sistemas embarcados. São descritos os procedimentos e arquitetura. Serão apresentados resultados teóricos e práticos que foram obtidos, onde foi observado o correto gerenciamento do sistema redundante. Os procedimentos adotados pelo sistema diante a inserção de falhas foram satisfatórios, sendo condizentes com os resultados teóricos esperados. Para tornar mais visível e compreensível as atividades nos subsistemas, será apresentada a modelagem utilizando redes de Petri, onde são modeladas inserções de falhas e procedimentos do gerenciamento da redundância. Palavras-chave: Redundância de redes. Softwares. Hardwares.

SUMÁRIO

INTRODUÇÃO ............................................................................................................ 7

CAPÍTULO I - BASES CONCEITUAIS ENVOLVENDO DEPENDABILIDADE .......... 9

1.1 CONFIABILIDADE (RELIABILITY) ...................................................................... 9

1.2 DISPONIBILIDADE (AVAILABILITY) ................................................................. 11

1.3 CONCEITUAÇÃO DE ERRO, FALHA, DEFEITO E PANE ................................ 11

1.4 DIAGRAMA DE BLOCOS DE CONFIABILIDADE (DBC) .................................. 13

CAPÍTULO II - SISTEMAS REDUNDANTES COM TOLERÂNCIA A FALHAS ...... 14

2.1 REDUNDÂNCIA DE INFORMAÇÃO .................................................................. 14

2.2 REDUNDÂNCIA TEMPORAL ............................................................................. 15

2.3 REDUNDÂNCIA DE SOFTWARE ...................................................................... 15

2.4 REDUNDÂNCIA DE HARDWARE ..................................................................... 17

2.4.1 REDUNDÂNCIA PASSIVA ............................................................................... 18

2.4.3 REDUNDÂNCIA HÍBRIDA ................................................................................ 20

2.4.4 REDUNDÂNCIA HOT-STANDBY E COLD-STANDBY .................................... 21

2.5 IMPACTO DO AMBIENTE NA CONFIGURAÇÃO E IMPLEMENTAÇÃO

DO SISTEMA ............................................................................................................ 22

CAPÍTULO III – PROPOSTA DO SISTEMA DE PROCESSAMENTO COM

REDUNDÂNCIA ATIVA DE HARDWARE ................................................................ 23

3.1 DEFINIÇÃO DE CLUSTER E HALF-CLUSTER NO SISTEMA PROPOSTO .... 23

3.2 PROPOSTA E DESCRIÇÃO DA ARQUITETURA ............................................. 24

3.2.1 FUNÇÃO DOS HALF-CLUSTERS ................................................................... 26

3.2.2 FUNÇÃO DA UNIDADE DE GERENCIAMENTO DA REDUNDÂNCIA ............ 26

3.2.3 FUNÇÃO DO BLOCO DE MULTIPLEXAÇÃO ................................................. 26

3.2.4 FUNÇÃO E DESCRIÇÃO DO CANAL DE ADMINISTRAÇÃO ......................... 27

3.2.5 FUNÇÃO E DESCRIÇÃO DO CANAL DE INTERCOMUNICAÇÃO ............... 28

3.2.6 FUNÇÃO E DESCRIÇÃO DO CANAL DE GERENCIAMENTO DA

REDUNDÂNCIA ........................................................................................................ 30

3.2.7 FUNÇÃO E DESCRIÇÃO DO CANAL DE MONITORAMENTO ...................... 31

3.3 MÁQUINA DE ESTADOS DOS HALF-CLUSTERS ........................................... 31

3.3.1 DESCRIÇÃO DO ESTADO DE BUSCA ........................................................... 32

3.3.2 DESCRIÇÃO DO ESTADO DE CERTIFICAÇÃO M E CERTIFICAÇÃO E ...... 33

3.3.3 DESCRIÇÃO DO ESTADO MESTRE .............................................................. 34

3.3.4 DESCRIÇÃO DO ESTADO ESCRAVO............................................................ 34

3.3.5 DESCRIÇÃO DO ESTADO INATIVO ............................................................... 35

3.3.6 CAUSAS PARA TRANSIÇÕES ........................................................................ 35

3.4 SISTEMAS MULTI-ESTADOS FUNCIONAIS (MULTI-LEVEL) ......................... 36

3.5 PROCESSO DE SINCRONIZAÇÃO DA MEMÓRIA REDUNDANTE ................ 38

3.5.1 DECLARAÇÃO DAS VARIÁVEIS COMO REDUNDANTES OU

INTERNAS AO PROCESSO ..................................................................................... 38

3.5.2 PONTOS DE SINCRONIZAÇÃO E SEU EMPREGO ...................................... 39

3.5.3 SINCRONISMOS CRÍTICOS E ESTENDIDOS E SEUS EMPREGOS ............ 39

3.6 SINALIZAÇÃO DE VERIFICAÇÃO (CHECK-POINT) ........................................ 41

3.7 MONITORAMENTO DO SISTEMA REDUNDANTE ........................................... 41

3.8 ATUALIZAÇÃO DE SOFTWARE ENTRE HALF-CLUSTERS ........................... 42

3.9 CONFIGURAÇÕES COLD-STANDBY E HOT-STANDBY ................................. 43

CONCLUSÃO ........................................................................................................... 44

REFERÊNCIAS ......................................................................................................... 45

ANEXO 1: NOMENCLATURA PARA ÁRVORE DE FALHAS ................................. 48

ANEXO 2: DESCRIÇÃO DO PROCESSADOR BLACKFIN 533 ............................. 48

7

INTRODUÇÃO

A atual tecnologia em sistemas embarcados torna possível a implementação

de sistemas de alto desempenho devido a evoluções na arquitetura e técnicas de

software empregadas nos processadores para tal finalidade (LENZI e SÃOTOME,

2005). Tais melhorias permitem respostas mais rápidas e eficientes pela

disponibilidade de recursos de hardware como memória cache e uma maior

interconectividade com o meio externo, com a possibilidade de diferentes padrões

de comunicação operando com elevadas taxas de transferência.

Entretanto para aplicações críticas, onde as falhas no sistema podem levar a

consequências catastróficas, a alta confiabilidade deve ser uma característica que

deve ser considerada tanto quanto ou mais importante que o desempenho do

sistema (SIEWIOREK e MCCLUSKEY, 1973).

Após uma análise qualitativa de aspectos como consumo de potência e

custo de implementação, optou-se por uma arquitetura com redundância de

hardware do tipo ativa com a utilização de dois processadores, tendo como foco o

aumento da confiabilidade do sistema.

Sendo assim, tem-se como objetivo propor e implementar uma arquitetura

com redundância de hardware do tipo ativa visando a tolerância a falhas e

aumentando a confiabilidade do sistema, tendo como foco aplicações em sistemas

embarcados.

O presente trabalho propõe uma arquitetura com tolerância a falhas do tipo

ativa, demonstrando procedimentos para detectar, localizar e contornar erros de

software e hardware, fazendo uma aplicação para validação de conceitos com o uso

do processador Blackfin 533. Demonstra meios para atingir aspectos desejáveis do

sistema, tais como alta disponibilidade e confiabilidade com alto desempenho

[Ric99].

É efetuado um estudo dos conceitos envolvendo a dependabilidade

(O’CONNOR, 2002), posteriormente com a definição de técnicas e métodos para

aplicação prática.

8

Atualmente a alta confiabilidade é uma característica desejável para as mais

diversas áreas de aplicação (YUA et al 2006). Na área industrial, por exemplo,

empresas como a Siemens, ABRockwell e Altus, possuem Controladores Lógicos

Programáveis (CLPs) que utilizam técnicas de redundância para aumentar a

confiabilidade do sistema. Entretanto em situações que envolvem fatores comerciais

e financeiros não há a intenção da difusão da tecnologia desenvolvida para o meio

acadêmico.

Este trabalho traz como contribuição a apresentação de uma arquitetura de

um sistema utilizando redundância de processadores embarcados com a finalidade

de aumentar a confiabilidade do sistema e possibilidade de aplicação em diferentes

áreas. Traz uma descrição dos métodos e técnicas empregadas nesta proposta.

9

CAPÍTULO I - BASES CONCEITUAIS ENVOLVENDO DEPENDABILIDADE

Sistemas de processamento e comunicação são caracterizados

principalmente pelos seguintes aspectos: dependabilidade, funcionalidade,

desempenho, segurança e custo (RICE et al, 1999).

A dependabilidade consiste na caracterização da qualidade do serviço

fornecido por um dado sistema e a confiança depositada nele (O’CONNOR, 2002).

Principais medidas de dependabilidade (AZEVEDO, 2007) são confiabilidade,

disponibilidade, segurança de funcionamento (safety), segurança (security),

mantenabilidade, testabilidade e comprometimento do desempenho (performability).

Neste capítulo serão abordados conceitos básicos envolvendo a

dependabilidade do sistema, definindo confiabilidade, disponibilidade, erro, falha,

defeito, pane e suas consequências.

1.1 Confiabilidade (Reliability)

A confiabilidade é a medida estatística de um determinado sistema

desempenhar as funções para as quais ele foi designado, em condições específicas

durante um intervalo de tempo pré-determinado (RANDELL et al, 1978).

Para caracterização da confiabilidade, são utilizadas medidas que são

normalmente determinadas estatisticamente através da observação do

comportamento dos componentes e dispositivos (WATTANAPONGSKOR e COIT,

2006). As principais medidas da confiabilidade estão apresentadas na Tabela 1.

Tabela 1: Aspectos para medida da confiabilidade.

Taxa de defeito – failure rate

Número esperado de defeitos em um dado

período de tempo, assumindo um valor constante

durante o tempo de vida útil do componente.

MTTF – mean time to failure Tempo esperado até a primeira ocorrência de

10

defeito

MTTR – mean time to repair Tempo médio para reparo do sistema

MTBF – mean time between failure Tempo médio entre as falhas do sistema

Fonte: (WEBER, 2007).

A taxa de defeito de determinado sistema varia de acordo com o tempo de

utilização do mesmo. A Figura 2 apresenta um gráfico que ilustra o comportamento

da taxa de defeitos de acordo com o tempo de utilização do sistema.

Figura 1: Gráfico da taxa de defeitos no decorrer do uso de determinado sistema

Fonte: (WEBER, 2007).

No início da utilização de um sistema, componentes fracos ou com defeitos

de fabricação causam defeitos fazendo com que o período inicial na utilização de um

sistema tenha uma taxa de defeitos mais elevada. Este período é comumente

definido como período de mortalidade infantil (AZEVEDO, 2006).

Posteriormente temos o período de vida útil do sistema, onde temos uma

taxa de defeitos praticamente constante.

Com o passar do tempo, os componentes do sistema vão ficando velhos e

degradados, fazendo com que a taxa de defeitos volte a subir. Este período é

definido como fase de envelhecimento.

11

1.2 Disponibilidade (Availability)

A disponibilidade é a capacidade de um sistema poder desempenhar as

funcionalidades para as quais foi designado em condições de uso e intervalo de

tempo definidos, tendo em vista sua confiabilidade e o suporte às manutenções

previstas do sistema (AVIZIENIS et al, 2004).

A manutenção é um aspecto muito importante para disponibilidade do

sistema, pois pode restaurar condições originais de funcionamento (ACHER e

FEINGOLD, 1984). Em sistemas onde procedimentos de manutenção não são

empregados, como por exemplo, aplicações em satélites, não é aplicado o conceito

de disponibilidade, mas se busca ter alta confiabilidade tendo em vista o alto valor

agregado.

1.3 Conceituação de Erro, Falha, Defeito e Pane

Aspectos como erro, falha, defeito e pane não possuem a mesma definição

apesar de estarem interligados. Segundo proposta de Weber (2007) que se baseia

nos trabalhos de Laprie (1985) e Avizienis et al (2004), a falha, o erro e o defeito

podem ser definidos conforme apresentado na Figura 2.

Figura 2: Ilustração para auxiliar na definição de falha, erro e defeito

Fonte: (WEBER, 2007).

Conforme a Figura 2 definimos cada aspecto da seguinte forma (AZEVEDO,

2006):

12

• A falha (fault) envolve fatores ligados ao meio físico, sendo relativo ao

que ocorreu fisicamente ao sistema. É o término da capacidade de

exercer as funcionalidades que lhe são requeridas.

• O erro (error) envolve fatores de informação, sendo um erro gerado na

informação decorrente da falha. É a diferença entre o valor que seria o

correto e o valor observado.

• O defeito (failure) é o que o usuário do sistema observa, que é a não

conformidade com as funcionalidades que são exigidas do sistema. É

um desvio de um sistema segundo as especificações e requisitos e

estabelecidos.

A pane não está apresentada na Figura 2, pois ela representa o estado em

que o sistema se encontra. Por exemplo, no caso de um módulo de memória

queimado, a falha é o dano físico ao componente, o erro são as informações

incorretas apresentadas num processo de leitura, o defeito é o cumprimento

incorreto da função que fazia uso dos dados do módulo e a pane é o estado em que

o módulo se encontra, neste caso, módulo queimado.

As falhas e panes podem ser classificadas de acordo com suas

consequências. Alguns dos principais tipos que um sistema pode apresentar são

(AZEVEDO, 2006):

• Falha/pane crítica: resulta em uma situação de risco ou dano físico

para quem opera o sistema.

• Falha/pane catastrófica: resulta na incapacidade completa de um item

realizar as funcionalidades que lhe são requeridas.

• Falha/pane relevante: Falha que deve ser considerada para

interpretação dos resultados operacionais ou de ensaios de

determinado sistema.

• Bug: defeito causado devido ao software do sistema.

13

1.4 Diagrama de Blocos de Confiabilidade (DBC)

O diagrama em blocos de confiabilidade (DBC) fornece um método formal

para a determinação da confiabilidade de um sistema e visualização do

envolvimento entre os itens que formam o sistema (O’CONNOR, 2002).

No DBC cada item é ilustrado na forma de um bloco que representa a

confiabilidade do item e seu envolvimento com outros itens, conforme apresentando

no exemplo da Figura 3.

Figura 3: Exemplo de Diagrama de Blocos de Confiabilidade (DBC) contendo cinco itens

14

CAPÍTULO II - SISTEMAS REDUNDANTES COM TOLERÂNCIA A FALHAS

Neste capítulo serão apresentados e definidos os diferentes tipos possíveis

de redundância, que pode ser de informação, temporal, de software ou de hardware.

Uma aplicação com redundância de hardware pode ter uma implementação

do tipo ativa, passiva ou híbrida, onde a reconfiguração do sistema em caso de falha

pode ser hotstandby ou cold-stanby.

2.1 Redundância de Informação

A redundância de informação consiste no envio ou armazenamento de bits

ou sinais para redundância da informação (WEBER, 2007).

A implementação da redundância de informação permite detectar erros nos

dados armazenados ou que estão sendo recebidos, tornando possível ao sistema

desconsiderar os dados falhos ou, dependendo da implementação, recuperar a

informação correta.

Um exemplo onde bits extras podem promover a recuperação dos dados

corrompidos é o uso de códigos ECC (error correction code). Este tipo de código

para correção de erros está sendo frequentemente usado em memórias e em

transferências de dados entre memórias e processadores (TIAN, 2006).

Outro exemplo de redundância de informação é quando na comunicação

entre dois dispositivos existem dois meios físicos pelos quais as informações são

enviadas. O receptor pode analisar a validade das informações e tomar atitudes

determinadas para cada situação.

A implementação deste tipo de redundância acarreta em um número maior

de bits, mas não aumenta a capacidade representativa destes bits, sendo esta uma

das desvantagens que este método apresenta.

15

2.2 Redundância Temporal

A redundância temporal consiste em repetir no tempo o processo de

computação de determinado procedimento (WEBER, 2007).

Uma das principais vantagens no uso deste método é o fato de não agregar

custo à implementação, pois dispensa a inserção de novos módulos de hardware. É

utilizado em sistema onde o tempo de processamento não é um fator crítico ou onde

o processador trabalha com períodos de ociosidade.

Na aplicação desta técnica, pode-se identificar os seguintes tipos de falhas

(WEBER, 2007):

• Falhas temporárias: Pode ser efetuada a mesma computação de dados

utilizando os mesmos dados de entrada. Caso os resultados não

coincidam, isto é uma forte indicação de uma falha transitória.

• Falhas permanentes: Pode ser efetuada a mesma computação de

dados utilizando modos diferentes, de forma que possa ser detectado,

por exemplo, um determinado bit de um barramento travado em nível

lógico alto ou baixo.

2.3 Redundância de Software

Um fator de grande influência na confiabilidade do sistema é a confiabilidade

do software, uma vez que a confiabilidade do sistema se dará pela soma das

confiabilidades de software e hardware (BASTANI e LEISS, 1987). A simples

replicação do código do software não é uma estratégia eficiente e útil para

implementar a redundância de software (WEBER, 2007)]. Se o código for

simplesmente replicado, o erro que se manifestou na primeira vez que o programa

foi executado, possivelmente irá se manifestar novamente em próximas execuções

que utilizem o mesmo código fonte (GOMMA e VIAJYKUMAR, 2005).

Um método para aumentar a confiabilidade utilizando a redundância de

software é o emprego da diversidade entre versões (LITTLEWOOD, 1996). Este

16

método consiste em mais de uma versão responsável pela mesma funcionalidade,

entretanto devem se diferenciar quanto ao programador, linguagem de

programação, utilização de ferramentas de programação ou método utilizado na

resolução.

Nos programas que possuem processos de desenvolvimento diferenciados,

os erros devem se manifestar de forma diferente em cada versão. As versões são

processadas e seus resultados comparados por um votador para identificação e

mascaramento de erros.

A Figura 4 apresenta um diagrama das versões que são processadas e seus

resultados enviados para o votador que definirá o resultado na saída deste sistema.

Figura 4:

Diagrama de blocos ilustrando a implementação de redundância de software com o uso da

diversidade e votador para a saída

Fonte: (WEBER, 2007).

Outra forma de empregar de forma eficiente a redundância de software é

através do emprego de técnicas com testes de aceitação do resultado gerado,

conforme apresentado na Figura 5.

17

Figura 5: Diagrama de blocos ilustrando a implementação de redundância de software com o uso de

teste de aceitação do resultado gerado

Fonte: (WEBER, 2007).

Nesta implementação, uma única versão é processada e seu resultado é

submetido a um teste de aceitação utilizando técnicas específicas para cada caso.

Se o resultado não passar pelo teste de aceitação, indicando erro de software, outra

versão é processada e seu resultado submetido ao teste de aceitação.

A principal vantagem do emprego desta forma é o tempo de processamento

que normalmente fica menor do que no processamento de todas as versões para

comparação.

Entretanto no uso desta técnica também é importante o uso da diversidade,

pois senão seriam corrigidos somente os casos onde o erro do software se deve ao

fato do programa ter sido corrompido de algum modo (WEBER, 2007).

2.4 Redundância de Hardware

A redundância de hardware consiste na replicação de componentes criando

novos nós no sistema, para que na ocorrência de falha de algum componente, o

componente redundante assuma as funcionalidades do que apresenta falhas (REIS,

2005). Pode ser empregada tanto em sistemas de grande porte, como em máquinas

industriais, como em subconjuntos, por exemplo, em chips de memórias (HUANG et

al, 2006).

18

Na redundância de hardware o aumento da confiabilidade é obtido através

de aumento do custo financeiro, que não existe na redundância temporal, pois não é

necessária a implementação de novo hardware. A redundância temporal, no entanto,

apresenta a desvantagem de causar uma degradação da performance do sistema

(SHARMA, 1994).

A redundância de hardware pode ser implementada utilizando os seguintes

métodos (LEU et al, 1990):

• Redundância passiva ou estática: Faz o mascaramento da falha, não

requer ação do sistema e não indica a falha.

• Redundância ativa ou dinâmica: Faz a detecção, localização da falha e

a recuperação das funcionalidades do sistema.

• Redundância híbrida: Combinação de aspectos da redundância

passiva com a ativa.

2.4.1 Redundância Passiva

Na redundância passiva, todos os módulos do sistema executam a mesma

tarefa. Um votador faz o mascaramento na ocorrência de alguma falha em algum

dos módulos (CAMARGO, 2001).

Cada módulo de hardware representa um nó do sistema redundante.

A Figura 6 apresenta um exemplo de redundância passiva utilizando três

módulos de hardware.

Figura 6: Diagrama de blocos ilustrando a implementação de redundância de hardware com o uso de

votador por maioria ou valor médio do resultado

Fonte: (WEBER, 2007).

19

O votador realiza uma função simples para verificar se algum dos módulos

apresentou resultado diferenciado da maioria, ou executa a média dos resultados

dos módulos. Não é função do votador indicar módulos com falhas, é efetuado

somente o mascaramento de possíveis falhas (CAMARGO, 2001).

O votador pode ser implementado em software ou em hardware e representa

um ponto crítico no sistema, pois havendo falha no votador o sistema todo vai falhar,

por este motivo deve possuir alta confiabilidade (KIM et al, 2005).

2.4.2 Redundância Ativa

A redundância ativa possui aspectos de gerenciamento e alocação não

presentes na redundância passiva (ROMERA et al, 2004). A implementação da

redundância ativa tem etapas de detecção, localização e recuperação. A detecção é

efetuada normalmente por duplicação de hardware e comparação, ou testes de

consistência, sendo seguida por etapas com procedimentos específicos a fim de

garantir o constante controle pelo sistema. A Figura 7 apresenta um diagrama

destas etapas.

Figura 7: Diagrama de blocos ilustrando as etapas em uma implementação de redundância de

hardware ativa

Fonte: (KOZENIESKI, 2006).

20

A ocorrência de falhas gera situações de erro, que são detectadas e

localizadas, adotando também procedimentos de confinamento, de forma que a

falha não atinja outras funcionalidades. Com a duplicação do hardware é criado dois

nós do sistema, propiciando dois caminhos para a realização das atividades

requisitadas ao sistema.

As técnicas para detecção e localização da falha são comumente testes de

temporização, watchdog timers, codificação, testes de consistência e diagnóstico.

Após a falha ser detectada, localizada e confinada, é feita a adequada

reconfiguração do hardware, garantindo o correto funcionamento.

A reconfiguração do hardware consiste no chaveamento para outro sistema

livre de falhas, podendo ser do tipo Cold standby ou Hot standby.

Com o sistema reconfigurado, há necessidade de passar do estado incorreto

atual, para um estado livre de falhas, utilizando técnicas de recuperação backward

error recover, que envolve o retorno do sistema a um ponto de recuperação seguro,

ou forward error recover, que consiste no avanço para um novo estado (WEBER,

2007).

2.4.3 Redundância Híbrida

A redundância híbrida consiste na utilização de técnicas da redundância

passiva, onde há um votador que analisa os resultados gerados pelos módulos e de

técnicas da redundância ativa, onde há processos de detecção e localização da

falha e reconfiguração (MATHUR, 1971).

A figura 8 apresenta um exemplo de diagrama de redundância híbrida

(SIEWIOREK e MCCLUSKEY, 1973).

21

Figura 5: Diagrama de blocos ilustrando uma implementação de redundância hibrida

Fonte: (SIEWIOREK e MCCLUSKEY, 1973).

No exemplo apresentado é utilizado um votador para comparações entre os

resultados dos três módulos em operação. É efetuada a detecção dos módulos com

falha para que sejam inabilitados através do sistema que faz o chaveamento entre

os módulos, fazendo com que outro módulo reserva assuma as funcionalidades do

módulo que apresentou falha (SIEWIOREK e MCCLUSKEY, 1973).

A arquitetura deste exemplo tem características de redundância passiva,

onde é feita a votação entre os resultados, e características da redundância ativa,

por fazer a detecção de falha e reconfiguração com o uso de módulos reserva,

sendo assim uma redundância do tipo híbrida.

2.4.4 Redundância Hot-standby e Cold-standby

Quando a redundância de hardware utilizada for ativa ou hibrida a

reconfiguração do sistema em caso de falhas pode ser do tipo hot-standby ou cold-

standby (WEBER, 2007).

22

A reconfiguração é definida como hot-standby quando o dispositivo

redundante está sempre energizado e pronto para assumir as funcionalidades. Este

tipo de reconfiguração apresenta como principal vantagem a rápida reconfiguração

do sistema para um estado funcional no caso de falha no módulo que estava

controlando o sistema.

A reconfiguração é definida como cold-standby quando o dispositivo

redundante necessita ser energizado, ou realizar procedimentos para inicialização.

Esse tipo de reconfiguração é indicado para sistemas onde este período em que o

sistema não se encontrará funcional não é crítico. A principal vantagem é a redução

do consumo de energia e o aumento da vida útil do dispositivo redundante.

2.5 Impacto do Ambiente na Configuração e Implementação do Sistema

O ambiente onde a implementação é efetuada tem um grande impacto na

configuração para administração da redundância. Até mesmo para arquiteturas de

memoria simples e algoritmos bastante simples, em ambientes mais complexos será

necessária uma eficiente administração para correta atuação da redundância no

sistema (CALTON et al, 1990).

Recentemente, o modelo de Hughes para falhas de hardware e Eckhardt e

Lee para modelos de erros de software propõem que o ambiente operacional afeta a

probabilidade de um dado componente vir a falhar (MARSEGUERRA et al, 1999).

Sendo assim, o ambiente é um objeto de estudo que deve ser analisado para que a

implementação da redundância tenha os resultados pretendidos.

23

CAPÍTULO III – PROPOSTA DO SISTEMA DE PROCESSAMENTO COM

REDUNDÂNCIA ATIVA DE HARDWARE

Neste capítulo será apresentada a proposta de um sistema redundante,

descrevendo a arquitetura e procedimentos propostos para a implementação de

redundância ativa de hardware.

São descritas a seguir as possíveis configurações e estados do sistema

proposto. As funcionalidades e aspectos da implementação dos canais utilizados na

proposta são explanados, onde dispositivos de hardware, como processador e

memórias, não são definidos, mas sim a metodologia para aplicação.

3.1 Definição de Cluster e Half-cluster no Sistema Proposto

A utilização de clusters é uma estratégia emergente na área da engenharia

para o aumento da performance ou confiabilidade do sistema (YUA, 2006), podendo

ser utilizada para processamentos paralelos (YANG e PARASHAR, 2007) ou de

forma a criar redundâncias aumentando a confiabilidade (SHARMA, 1994).

Na proposta apresentada neste trabalho, o cluster é definido como um

sistema contendo dois processadores. O objetivo no uso do cluster é o aumento da

confiabilidade do sistema através da aplicação de técnicas de redundância de

hardware.

O cluster possui estruturas funcionais independentes para cada processador

denominadas nós do sistema, isto é, cada processador pode exercer sua função

independente do estado funcional do outro. Cada processador possui memórias não

compartilhadas e sistemas necessários para atuação com a mínima dependência

funcional do subsistema formado pelo outro processador.

O cluster possui então dois subsistemas independentes com estruturas

funcionais próprias chamadas de half-clusters conforme ilustrado no diagrama de

blocos da figura 6.

24

Figura 6: Diagrama ilustrando o cluster formado por dois half-clusters.

3.2 Proposta e Descrição da Arquitetura

No Capítulo II, foram apresentadas as bases teóricas para compreensão das

diferentes categorias e tipos de redundância e conceitos envolvendo confiabilidade

do sistema. Neste capítulo, será apresentada a proposta de um sistema redundante

descrevendo sua arquitetura demonstrando as interconexões entre os subsistemas.

Os procedimentos para controle, métodos utilizados e análise da implementação são

de suma importância para que os resultados pretendidos sejam atingidos (LLOYD e

LIPOW, 1962).

Na proposta, são utilizados os conceitos de cluster e half-cluster descritos,

onde o sistema redundante como um todo deve possuir como principais

características (BODSBERG e HOKSTAD, 1996):

• Alta confiabilidade;

• Alta capacidade para processamento embarcado;

• Baixo consumo;

• Possibilidade de uso tanto como hot-standby como cold-standby;

• Configurável para diferentes meios de atuação.

25

Tendo em vista as características descritas, o sistema proposto possui

redundância ativa de hardware e possibilidade de configuração dinâmica entre hot-

standby e cold-standby.

São utilizados dois half-clusters, gerando dois nós no sistema, uma Unidade

de Gerenciamento da Redundância e um bloco de multiplexação. A Figura 7

apresenta a arquitetura proposta, mostrando os subsistemas e suas interconexões.

Figura 7: Proposta demonstrada em diagrama de blocos ilustrando a arquitetura do sistema com redundância de hardware com seus subsistemas e suas interconexões

Nos tópicos a seguir será apresentada a descrição e funcionalidades dos

blocos ilustrados na Figura 7 e posteriormente os canais de comunicação

responsáveis pelas interconexões entre os blocos.

26

3.2.1 Função dos Half-clusters

Conforme já definido, cada half-cluster é uma unidade de processamento

com estruturas funcionais próprias. Um half-cluster atua como Mestre do sistema,

com a função de processar as funcionalidades requeridas pelo sistema, efetuando

leituras de dados e atuações no meio externo.

Define-se aqui meio externo, o conjunto de sistemas que estão diretamente

ligados ao sistema redundante, tais como sistemas de sensores e atuadores.

O outro half-cluster atua no sistema como Escravo, tendo a função de

monitorar o Mestre e manter as variáveis redundantes do sistema atualizadas em

sua memória, para que na ocorrência de alguma falha no Mestre, o Escravo possa

assumir a condição de Mestre. O objetivo é que na ocorrência de falha em um half-

cluster as funcionalidades no sistema sejam mantidas.

3.2.2 Função da Unidade de Gerenciamento da Redundância

A Unidade de Gerenciamento da Redundância gerencia a comunicação dos

halfclusters com o meio externo.

Sua função consiste em analisar as informações de cada half-cluster, definir

o Mestre e proporcionar a sua interação com o Meio Externo. O procedimento

adotado pela Unidade de Gerenciamento da Redundância é verificar inicialmente se

há um Mestre e um Escravo atuando e permitir a atuação somente do Mestre. Se

esta condição não for satisfeita, o gerenciador deve verificar os eventos que se

sucederam em cada half-cluster para eleger como Mestre aquele que apresentar

maior probabilidade de correto funcionamento.

3.2.3 Função do Bloco de Multiplexação

O Bloco de Multiplexação é um item opcional no sistema que deve ser

implementado se houver necessidade. Sua função é fornecer um meio mais amplo

27

de interação do sistema com o meio externo. Atua canalizando as entradas e saídas

de dados analógicos ou digitais para o half-cluster definido como Mestre pela

Unidade de Gerenciamento da Redundância.

Pode ser usado para fornecer um número maior de vias de comunicação ou

fornecer vias com características não supridas pela Unidade de Gerenciamento da

Redundância.

3.2.4 Função e Descrição do Canal de Administração

O Canal de Administração é utilizado para comunicação entre os half-

clusters, criando os mecanismos para a interação de forma que possam monitorar

um ao outro, definir o Mestre e sinalizar sinais de estados.

A figura 8 ilustra as linhas de comunicação presentes no Canal de

Administração

Figura 8: Ilustração das linhas de comunicação presentes no Canal de Administração e sua classificação quanto ao fluxo de dados.

O Canal de Administração é destinado à comunicação de sinais

responsáveis pela administração da redundância que ocorre entre os half-clusters.

28

A administração da redundância consiste nos processos pelos quais os half-

clusters fazem o diagnóstico de falhas e definições de Mestre e Escravo.

As Linhas de Estado têm a função de informar o estado em que o half-

cluster se encontra e as Linhas de Verificação têm a função de verificar o estado do

outro half-cluster.

As Linhas de Sinalização são utilizadas em conjunto com o Canal de

Intercomunicação garantindo a correta interação entre os half-clusters na

transferência de dados.

A Linha de Vivo é uma sinalização manipulada pelo Mestre e avaliada pelo

Escravo, com a finalidade de observar anomalias no Mestre. A linha é utilizada para

envio de sinais no decorrer do programa, permitindo ao Escravo perceber, por

exemplo, travamentos no halfcluster Mestre.

A Linha de Requisição pode ser manipulada pelos dois half-clusters. Em

situação estável de funcionamento (um Mestre e um Escravo funcionais), os dois

half-clusters não forçam nenhum valor sobre a linha, fazendo somente a leitura.

Havendo algum diagnóstico de falha, o half-cluster que determinou a falha sinaliza

na Linha de Requisição um pedido para verificação de estado.

O half-cluster que lê a requisição verifica o estado do outro. Se o half-cluster

que fez a requisição estiver como Mestre, o que leu a requisição altera seu estado

para Escravo.

Entretanto se estiver em outro estado que não Mestre, o que leu a requisição

altera seu estado atual para Mestre do sistema.

As condições para mudança de estado nos half-clusters e procedimentos de

diagnósticos serão abordados no decorrer deste capítulo.

3.2.5 Função e Descrição do Canal de Intercomunicação

O canal de Intercomunicação faz a comunicação entre os half-clusters com a

finalidade de transmitir variáveis redundantes do sistema. O barramento utilizado na

29

implementação deste canal deve ter altas taxas de transferência para não prejudicar

de forma considerável o desempenho do sistema.

A função do canal é criar os meios para que o half-cluster que estiver

atuando no estado de Escravo atualize os valores de variáveis relevantes. A

finalidade desta atualização é para que em uma possível inversão de estados entre

o Escravo e o Mestre, esta mudança de Mestre do sistema seja o mais transparente

possível ao Meio Externo.

Outra funcionalidade que pode ser atribuída a este canal é o envio do estado

atual do half-cluster, função também atribuída ao Canal de Administração, criando

uma redundância de informação aumentando a confiabilidade na interação entre os

half-clusters.

A figura 9 apresenta o barramento com a direção do fluxo de dados e as

principais informações contidas nesta transmissão.

Figura 9: Ilustração do barramento no Canal de Intercomunicação, sua classificação quanto ao fluxo de dados e principais componentes presentes na transmissão e recepção.

O Mestre do sistema sempre atuará neste barramento enviando dados e o

Escravo sempre atuará os recebendo, trabalhando em conjunto com as Linhas de

Sinalização do Canal de Administração.

30

3.2.6 Função e Descrição do Canal de Gerenciamento da Redundância

O canal de Gerenciamento da Redundância tem como principal função criar

os meios para que a Unidade de Gerenciamento da Redundância possa analisar os

estados e os eventos de cada half-cluster. Através destas informações é definido

para assumir como Mestre do sistema o half-cluster que se mostrar apto a exercer

corretamente as funcionalidades exigidas.

Também gerencia o fluxo de dados de entrada e saída do meio externo para

o Mestre.

A Figura 10 apresenta o Canal de Gerenciamento da Redundância com a

direção do fluxo de dados em relação à Unidade de Gerenciamento da Redundância

e as principais informações contidas neste barramento.

Figura 10: Ilustração do barramento no Canal de Gerenciamento da Redundância, sua classificação quanto ao fluxo de dados e principais componentes presentes no barramento.

O procedimento adotado pela Unidade de Gerenciamento da Redundância é

de verificar inicialmente se há um Mestre e um Escravo presentes no sistema. Se

31

esta condição não for satisfeita, a Unidade de Gerenciamento da Redundância

verifica a palavra de controle, que indicará o half-cluster que deve ser definido como

Mestre do sistema.

A palavra de controle é acessada e modificada a cada requisição executada.

O último half-cluster que executar uma requisição e proceder com o correto

protocolo de escrita da palavra de controle é que define o Mestre que atuará no

sistema.

3.2.7 Função e Descrição do Canal de Monitoramento

O Canal de Monitoramento tem por objetivo informar o diagnóstico de falhas,

estados ou procedimentos adotados no sistema.

Disponibiliza os meios para que sistemas permitam ao usuário visualizar

informações diversas, como por exemplo, para que a ocorrência de falhas possa ser

observada e os estados dos half-clusters possam ser visualizados de forma rápida

sem a execução de protocolos de comunicação de maior complexidade.

Pode ser utilizado para visualização das informações de forma local, onde

algum dispositivo de visualização seria instalado próximo ao sistema, ou de forma

remota, onde estas informações seriam enviadas via algum sistema de transmissão

externo ao sistema redundante.

Tem a característica de ser utilizado na implementação de componentes

passivos em relação ao sistema, isto é, não são enviadas informações ou

configurações para o sistema redundante através deste canal.

3.3 Máquina de Estados dos Half-clusters

A Figura 11 apresenta os estados que um half-cluster pode assumir e as

possíveis transições entre eles. É importante ressaltar que esta descrição por

máquina de estados é relativo aos estados de cada half-cluster e não faz referência

ao sistema redundante como um todo.

32

Figura 11: Ilustração da Máquina de Estados dos half-clusters, demonstrando os estados e as transições.

Os half-clusters propostos neste trabalho possuem três estados definidos

com o objetivo de serem apenas temporários (Busca, Certificação M e Certificação

E) e três estados que podem ser permanentes (Mestre, Inativo e Escravo).

Nos tópicos a seguir descreve-se os estados dos half-clusters e

posteriormente as transições apresentadas na Figura 11.

3.3.1 Descrição do Estado de Busca

O estado de Busca tem sua duração máxima bem definida de acordo com

sua implementação, desde que todo o sistema redundante esteja funcional.

Tem como objetivo determinar se o half-cluster será Mestre ou Escravo no

sistema. O half-cluster verifica se já há outro no estado de Certificação M, se houver

vai para o estado de Certificação E. Se não encontrar nenhum no estado de

Certificação M, vai para este estado.

De modo a facilitar a tomada de decisão e dar tempo ao sistema como um

todo se acomodar em um estado estável, deve-se atribuir um tempo de aguardo

antes da busca por outro halfcluster na rede, preferencialmente com valores

diferenciados entre os dois half-clusters presentes.

33

3.3.2 Descrição do Estado de Certificação M e Certificação E

Após o estado de Busca, enquanto um dos half-clusters está no estado de

Certificação M, indicando a intenção de se tornar Mestre, o outro estará no estado

de Certificação E, indicando a intenção de se tornar Escravo. Só mudarão para o

estado posterior após os rocedimentos de certificação do core, memória e rede de

comunicação entre eles.

No caso de somente um dos half-clusters ser energizado, este entrará no

estado de Certificação M, e só passará ao estado de Mestre quando encontrar outro

half-cluster no estado de Certificação E, de modo a julgar o sistema redundante apto

a iniciar suas atividades.

Caso esteja no estado de Certificação E, mas não receber o pacote de

validação do funcionamento da rede dentro de um determinado tempo especificado,

vai para o estado de Escravo e logo depois faz uma requisição e assume como

Mestre.

Após assumirem os estados de Mestre ou Escravo, podem voltar

esporadicamente aos estados de Certificação M ou E, entretanto neste caso

também há um tempo limite de aguardo pelo Escravo, de modo a não permitir que o

Mestre tenha o risco de ficar travado em um processo de certificação.

A validação do funcionamento da rede é efetuado enviando via canal de

Intercomunicação, valores conhecidos do Mestre para o Escravo. O Escravo recebe

e analisa os dados, validando a correta transmissão.

São executados processamentos através de operações matemáticas com

respostas conhecidas de forma a validar o funcionamento do core do processador.

Para validação da memória, são realizados processos de escrita de valores

pré-determinados na memória e posteriormente lidos, verificando a presença de

alguma falha na memória.

Os processos de validação apresentam um método simples e prático para

diagnóstico da rede entre os half-clusters, memória e core do processador.

34

3.3.3 Descrição do Estado Mestre

Neste estado o programa principal está executando, realizando as atividades

que são exigidas do sistema redundante. O estado de Mestre é continuamente

sinalizado através do Canal de Administração. Após um tempo definido ou através

da chamada da função, ocorrem sincronizações de memória redundante

transmitidas do Mestre para o Escravo. O processo de sincronização de memória

redundante será explanado no item 3.5.

O Mestre do sistema envia sinalizações pela linha Vivo do Canal de

Administração.

Estando no estado de Mestre o half-cluster pode ir para os estados de

Certificação M, Escravo ou Inativo.

No caso de ocorrer um autodiagnostico de falha no processo de Certificação

M, após retornar ao estado de Mestre, seu estado é alterado para Escravo ou Inativo

e é efetuada uma requisição para o Escravo assumir como Mestre.

3.3.4 Descrição do Estado Escravo

O half-cluster Escravo se comunica com o Mestre através dos Canais de

Intercomunicação e de Administração e informa seu estado de Escravo. Recebe

assincronamente valores de variáveis relativos ao processo de sincronização de

memória redundante, fazendo a verificação do correto envio dos dados e

armazenamento.

Tem por responsabilidade verificar as sinalizações de Vivo e analisar o

tempo máximo determinado entre as rotinas de sincronizações, detectando

anomalias no número de sinalizações de Vivo, tempo para sincronização ou erros de

transmissão.

Quando o half-cluster encontra-se neste estado, os dados enviados do meio

externo não terão efeito, uma vez que as entradas não serão lidas e

preferencialmente devem estar em alta impedância se tal recurso for disponível.

35

3.3.5 Descrição do Estado Inativo

É um estado que não pode ser alterado sem uma rotina de reset de

hardware ou desligando o half-cluster e voltando a ligá-lo. Entretanto é aconselhável

que sejam tomados os devidos procedimentos de manutenção caso possível..

Este estado indica que o half-cluster foi considerado pelo sistema, incapaz

de realizar as atividades necessárias ao sistema com o nível de confiabilidade

desejado.

O half-cluster vai para o estado inativo quando são observadas anomalias no

sistema que podem comprometer a confiabilidade, por não estar em condições de

assumir como Escravo (por exemplo: desligado ou completamente travado) ou por

estar passando por um processo de atualização de software efetuado pelo Mestre.

3.3.6 Causas para Transições

As transições entre os estados podem ter causas variadas, podem ocorrer

de forma já esperada, como na transição entre estados com o objetivo de serem

temporários, ou de forma inesperada no decorrer da vida útil do sistema.

As causas para as transições entre os estados descritas na Figura 11 são:

• Transições “a” e “b”: Ocorrem depois de concluída a busca por algum

Mestre no sistema. Vai ocorrer a transição “a” caso nenhum Mestre

tenha sido detectado e caso contrário a transição “b” vai ocorrer.

• Transições “c” e “d”: Ocorrem após os processos de Certificação da

rede, da memória e do core do processador terem sido concluídos.

• Transições “e” e “f”: Ocorrem pela chamada do processo de

certificação no decorrer do programa principal ou por definição de um

tempo fixo para execução deste processo.

• Transição “g”: Ocorre quando há uma requisição do Escravo para que

o Mestre altere seu estado ou quando são detectadas falhas na

36

memória ou no core do processador no estado de Certificação M. Pode

ser originada também devido a problemas em sistemas externos ao

sistema redundante.

• Transição “h”: Ocorre quando o Escravo não recebe nenhuma rotina de

sincronismo de memória redundante em um tempo determinado,

quando o número de sinalizações de Vivo indicam anomalias, quando o

código de verificação não é condizente com o valor das variáveis

redundantes enviadas pelo Mestre ou quando na rotina de Certificação

E é detectado problema nos dados transferidos pela rede.

• Transição “i”: Ocorre quando um número determinado de

requerimentos de alteração para o estado de Escravo é atingido ou na

detecção de falhas no estado de Certificação M. Pode ser originada

também devido a problemas em sistemas externos ao sistema

redundante.

• Transição “j”: Ocorre na detecção de falhas no estado de Certificação

E.

3.4 Sistemas Multi-estados funcionais (multi-level)

A teoria tradicional de confiabilidade assume que os componentes de um

sistema podem ter dois estados funcionais, falha ou funcional. Entretanto, muitos

sistemas reais podem operar em situações onde o estado do sistema não é de

funcionamento perfeito nem de completo defeito. Estes sistemas são designados

como sistemas multiestados (TIAN e ZUO, 2006).

Um ponto importante a salientar é que neste tópico é explanada a questão

de estados funcionais do sistema e subsistemas e não o estado do sistema descrito

na máquina de estados da Figura 11.

O emprego desta técnica permite melhorar o gerenciamento do sistema,

podendo atribuir aos componentes ou subsistemas outros estados de funcionamento

além de funcional e não funcional, de forma a criar uma gama de atitudes e

procedimentos mais adequados para cada situação.

37

Na proposta deste trabalho, o sistema redundante envolvendo os

subsistemas internos de unidade de gerenciamento de redundância e os half-

clusters terá definidos os seguintes estados de regime permanente:

• Plenamente Funcional: Todos os subsistemas encontram-se funcionais

e nenhuma falha de processamento ou comunicação foi detectada.

• Funcional Degradado: O sistema é funcional e exerce todas as

atividades, entretanto um dos half-clusters foi considerado em falha,

portanto o sistema opera corretamente, mas sem redundância entre os

half-clusters.

• Falha: O sistema não consegue mais exercer as funcionalidades que

lhe são exigidas. Os dois half-clusters e/ou a Unidade de

Gerenciamento de Redundância estão com falha.

A técnica de sistema multi-estágio também se aplica ao subsistema dos half-

clusters.

Para cada half-cluster foram definidos os seguintes estados funcionais

possíveis:

• Desconfigurado: Ocorre quando o software do half-cluster não está de

acordo com o previsto ou é inexistente. Neste estado, o half-cluster

pode tornar-se funcional desde que seja reprogramado.

• Falha: O half-cluster está incapaz de exercer as funcionalidades que

lhe são exigidas.

• Atenção: O half-cluster pode assumir como Mestre ou Escravo do

sistema, entretanto encontra-se em um estado de atenção, pois

anomalias já foram percebidas, tais como já ter sido requisitado em

algum momento que o Escravo assumisse o estado de Mestre ou teve

um pedido do Escravo para sair do estado de Mestre.

• Ativo: O half-cluster pode exercer todas as atividades a ele requisitadas

estando plenamente funcional.

38

O sistema estará no estado de plenamente funcional com os dois half-

clusters no estado Ativo ou Atenção, funcional degradado com pelo menos um half-

cluster no estado Ativo ou Atenção e em Falha quando nenhum half-cluster estiver

no estado Ativo ou Atenção.

3.5 Processo de Sincronização da Memória Redundante

O processo de sincronização de memória consiste em transmitir do half-

cluster Mestre para o Escravo, dados de variáveis relevantes ao sistema. Na

ocorrência do half-cluster Escravo assumir a condição de Mestre, o processo deve

ter continuidade com o menor nível de variações perceptíveis ao meio externo.

3.5.1 Declaração das Variáveis como Redundantes ou Internas ao Processo

Devem ser declaradas como redundantes as variáveis onde a constante

atualização é importante. As variáveis que, no caso do Mestre falhar, não

necessitem estar atualizadas no Escravo para que este assuma o controle podem

ser declaradas como internas ao processo.

A correta declaração das variáveis do programa é essencial para o

desempenho e confiabilidade do sistema. A classificação exige conhecimento dos

processos em que se está atuando, do código e de suas funcionalidades.

A regra para correta declaração destas variáveis, é: “Todas as variáveis que

após processos de sincronização podem sofrer alterações e exercer influências nas

decisões posteriores, devem ser declaradas como redundantes para garantir a

continuidade prevista”.

39

3.5.2 Pontos de Sincronização e seu Emprego

Os pontos de sincronização consistem na determinação da localização das

chamadas dos processos de sincronização dentro do código principal. Em cada

ponto de sincronização será adicionada uma chamada para a função responsável

pelo processo de sincronização, onde o ponto de sincronização pode estar explícito

na forma sequencial do programa ou na forma de interrupções do sistema.

Como regra, temos que: “Devem ser adicionados pontos de sincronização

em condições de tomada de decisões que possam acarretar consequências críticas

ou relevantes ao sistema ou na alteração de dados de saída críticos ou relevantes

ao processo”.

A definição do que são consequências críticas e dados relevantes ao

processo, deve ser feita após uma análise do processo controlado e suas

implicações. Por exemplo, uma perda temporária ou parcial nas funcionalidades do

sistema pode não ser uma consequência crítica para um computador pessoal, mas

pode ter consequências críticas em um computador que regula a pressão cardíaca

de um paciente durante uma operação.

3.5.3 Sincronismos Críticos e Estendidos e seus Empregos

O processo de sincronismo anteriormente definido, como forma de aumentar

o desempenho e dinamismo do sistema, foi dividido em duas etapas denominadas

Processo de Sincronismo Crítico e Processo de Sincronismo Estendido.

No procedimento de Sincronismo Crítico, são atualizadas no half-cluster

Escravo as variáveis de influência crítica ao processo que está sendo controlando.

Desta forma, havendo a necessidade do half-cluster Escravo assumir como Mestre,

essas variáveis estarão com seus valores atualizados, podendo assumir o controle

do processo de forma confiável. Definimos estas variáveis como sendo variáveis de

nível 1.

40

O procedimento de Sincronismo Estendido ocorre com uma frequência

menor que o procedimento de Sincronismo Crítico. Este procedimento consiste em

atualizar no half-cluster

Escravo as variáveis de nível 1 e também as variáveis que no caso do

Escravo assumir, o fato de não estarem corretamente atualizadas não causará

consequências críticas ao processo apesar de serem relevantes na tomada de

decisões. Definimos estas variáveis como sendo variáveis de nível 2.

A figura 12 ilustra como as variáveis de nível 1 e nível 2 estão armazenadas

na memória e quais são usadas em cada processo de sincronização. A região de

memória de nível 1 mais a de nível 2 formam a região definida como memória

redundante.

Figura 12: Ilustração do mapeamento de memória, mostrando as regiões definidas de nível 1 e 2, apresentando as regiões de atuação dos procedimentos de sincronismo.

A fragmentação do processo de sincronização em dois processos distintos

torna possível que Sincronizações Estendidas sejam efetuadas com menor

frequência, melhorando o desempenho. Assim somente as variáveis que necessitam

de uma maior frequência de atualização, são utilizadas no processo de

Sincronizações Críticas, permitindo que sejam mais dinâmicas e melhorando a

relação entre a confiabilidade e a performance desejada.

41

O uso de Sincronizações Críticas e Estendidas exige uma análise do

processo que está sendo controlado para que no esforço de aumentar a

performance do sistema não seja comprometida a confiabilidade do mesmo.

3.6 Sinalização de verificação (check-point)

É uma sinalização que é efetuada por meio de um pulso enviado via Canal

de Administração pela linha de Vivo.

A sinalização é sempre enviada do half-cluster Mestre para o Escravo

através da chamada no programa de uma função que terá a finalidade de gerar um

pulso na linha de Vivo.

A chamada da função de sinalização de verificação não deve ser

implementada através do uso da técnica de interrupções, já que o canal Vivo tem

como finalidade fornecer os meios para que o Escravo possa detectar anomalias ou

falhas no Mestre através do número de sinalizações de verificação recebidas num

intervalo de tempo definido. Por exemplo, no caso do Mestre estar travado em

determinada posição do programa, se as sinalizações de Vivo forem implementadas

via interrupções de Timer, as sinalizações continuarão a ser geradas, o que não

ocorre se forem utilizadas chamadas de uma sub-rotina para geração da sinalização

de Vivo.

Ao final do período definido, o escravo analisa o número de sinais de

verificação recebidos, aprova ou reprova o Mestre adotando os procedimentos

condizentes e zera o contador de sinalizações.

3.7 Monitoramento do Sistema Redundante

O Monitoramento do Sistema Redundante recebe informações de estados e

processos do sistema ou de subsistemas.

42

Através do monitoramento, o usuário pode observar atividades e estado do

sistema, podendo ser implementado de forma local através de um Canal de

Monitoramento ou remotamente através do envio de informações a outros sistemas.

3.8 Atualização de Software entre Half-clusters

A possibilidade de atualização do software dos half-clusters não é segundo

esta proposta um aspecto indispensável, entretanto é uma característica desejável

ao sistema por aumentar a disponibilidade do sistema.

A implementação das estruturas para tal processo poderia fornecendo ao

sistema as seguintes vantagens:

• Atualização do software por novas versões fornecendo novas

funcionalidades e corrigindo possíveis bugs de software;

• Eliminaria a necessidade de desativar o half-cluster e até mesmo um

manuseio de circuitos e conexões para novas programações;

• Confere a possibilidade de atualizações ao sistema, que podem ser

requisitadas por um usuário local ou remoto.

É aconselhável que o processo de atualização seja acionado por

combinação de sinalizações das linhas de Requisição e Vivo do Canal de

Administração, sendo que o envio do novo software poderá ser feito pelo Canal de

Intercomunicação.

Caso os dispositivos de hardware adotados na implementação não

possibilitem que o processo ocorra de tal maneira, novas estruturas de Interconexão

poderão ser criadas.

O processo de atualização sempre se dará do Mestre atualizando o Escravo

que poderá permanecer neste estado durante o processo ou passar para o estado

de Inativo. Após a conclusão do processo, o half-cluster que sofreu a atualização

retornará ao sistema no estado de Escravo.

43

Para atualização do half-cluster que está atuando como Mestre do sistema,

primeiramente deve ser feita a requisição para que o Escravo assuma a condição de

Mestre e posteriormente efetuar a atualização.

3.9 Configurações Cold-standby e Hot-standby

Tendo em vista as definições de Cold-standby e Hot-standby expostas no

capítulo II, a proposta de arquitetura apresenta a possibilidade de o sistema ser

implementado e configurado tanto no modo Cold-standby quando no modo Hot-

standby.

Para os diferentes modos possíveis de implementação, teríamos então os

seguintes aspectos de implementação:

• Hot-standby: O half-cluster redundante está preparado para assumir

como Mestre a qualquer instante, recebendo constantes sincronismos

de memória e com um monitoramento contínuo de falhas no Mestre.

Neste modo temos o dois half-clusters atuando continuamente

garantindo rápida detecção de falhas e reconfigurações de estados.

• Cold-standby: O half-cluster redundante não está preparado para

assumir imediatamente, necessitando de ser energizado ou de algum

processo de inicialização. Os processos de sincronização devem ser

efetuados, entretanto, com pouca frequência. O sistema redundante

pode ser acionado pelas Linhas de Sinalização do Canal de

Administração. A detecção de falhas no Mestre pelo Escravo irá

funcionar da mesma forma que no modo hot-standby, entretanto com

uma latência maior.

44

CONCLUSÃO

Neste trabalho propôs-se apresentar de forma detalhada uma arquitetura

para processamento embarcado com redundância de hardware e tolerância a falhas

onde seriam apresentados os procedimentos para o correto gerenciamento da

redundância e a implementação prática ficaria desvinculada de hardware específico.

A motivação de tal estudo reside no fato de que atualmente altos níveis de

confiabilidade em sistemas embarcados é uma característica desejável para

diversas áreas de aplicação, tais como industriais e espaciais. Desta forma este

trabalho fornece meios para que possam ser efetuadas aplicações utilizando os

procedimentos e arquitetura de hardware redundante descritos, ajustando as

configurações para o meio físico, hardware utilizado e necessidades específicas de

cada aplicação.

Para valores de confiabilidade exemplificados para os subsistemas, foram

obtidos resultados satisfatórios para avaliação estatística do impacto do uso da

redundância proposta sobre a confiabilidade do sistema implementado. Através da

análise da árvore de eventos e diagrama em blocos de confiabilidade, para valores

exemplificados foi obtido um aumento de 93% para 98% na confiabilidade do

sistema pelo utilização da redundância de hardware. Em uma análise por árvore de

falhas também com valores exemplificados a diminuição na ocorrência de

determinada falha foi de 60%.

Com os resultados deste trabalho, apresenta-se um caso de sucesso na

proposta e implementação de um sistema de processamento embarcado de

arquitetura com redundância de hardware ativa tolerante a falhas. Foram atingidos

resultados práticos satisfatórios e correspondentes às avaliações teóricas efetuadas.

45

REFERÊNCIAS

ANALOG DEVICES. ADSP-BF533 blackfin processor instruction set. Norwood, 2003.

ANALOG DEVICES. ADSP-BF533 blackfin processor hardware reference. Norwood, 2005.

ASCHER, H.; FEINGOLD, H. Repairable systems reliability. [S.l.]: Marcel Dekker, 1984. v.7

AVIZIENIS, A. et al. Basic concepts and taxonomy of dependable and secure computing. IEEE Transactions on Dependable and Secure Computing, v. 1, n. 1, p.11-33, 2004.

AZEVEDO, I. A. Confiabilidade de componentes e sistema. São José dos Campos: Instituto Tecnológico de Aeronáutica, 2007. Apostila EA-160

BASTANI, B. F.; LEISS, E. L. On the overal reliability of hardware/software systems. In: FALL JOINT COMPUTER CONFERENCE ON EXPLORING TECHNOLOGY, 1987, Dallas. Proceedings... Los Alamitos: IEEE, 1987.

BODSBERG, L.; HOKSTAD, P. Transparent reliability model for fault-tolerant safety systems. Reliability Engineering and System Safety, v.55, n.1, p. 25-38, 1997.

CALTON, P.; KORZ, L. F.; CHEN, S. Valued redundancy. Management of replicated data. Proceedings, Workshop on the, p.76-78, IEEE 1990.

CAMARGO, J. B. et al. Quantitative analysis methodology in safety-critical microprocessor applications. Reliability Engineering and System Safety, v. 74, n. 1, p. 53-62, oct. 2001.

GOMAA, M. A.; VIJAYKUMAR T. N. Opportunistic transient-fault detection. In: INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE, 32., 2005, Madison. Proceedings... Madison: IEEE, 2005.

HUANG, Y.; CHANG, D.; JIN-FU, L. A built-in redundancy-analysis scheme for selfrepairable rams with two-level redundancy. In: IEEE INTERNATIONAL SYMPOSIUM ON DEFECT AND FAULT-TOLERANCE IN VLSI SYSTEMS, 21., Praga. Proceedings... Praga: IEEE, 2006.

KIM, H.; LEE, H.; LEE, K. The design and analysis of AVTMR (all voting triple modular redundancy) and dual–duplex system. Reliability Engineering and System Safety, v. 88, n. 3, p. 291-300, jun 2005.

KOZENIESKI, N. J.; SAOTOME, O.; OLIVEIRA N. Sistema de controle e processamento embarcado com arquitetura redundante tolerante a falhas de software e hardware. In: CONGRESSO BRASILEIRO DE AUTOMÁTICA, 16., Salvador, 2006. Anais... Salvador: SBA/UFBA/DEE, 2006.

LAPRIE, J. Dependable computing and fault tolerance concepts and terminology, Faulttolerant computing. In: International Symposium on Fault-Tolerant Computing Highlights from Twenty-Five Years'., 1985.

LENZI, Karlo G.; SAOTOME, Osamu. Implementação de funções matemáticas de pontoflutuante de alto desempenho em uma plataforma DSP ponto-fixo. Sociedade Brasileira de Computação, IV WPerformance, 2005.

46

LEU, D.; BASTANI, F. B.; LEISS, E. L. The effect of statically and dynamically replicated components on system reliability. IEEE Transactions on Computers, v. 39, n. 2, p.209-216, Jun. 1990.

LITTLEWOOD, B. The impact of diversity upon common mode failures. Reliability Engineering and System Safety, v.51, n.1, p.101-113, 1996.

LLOYD, D. K.; LIPOW, M. Reliability: management, methods, and mathematics. Englewood Cliffs: Prentice-Hall, 1962. (Space Technology Series)

MARSEGUERRA, M.; PADOVANI, E.; ZIO, E. The impact of the operating environment on the design of redundant configurations. Reliability Engineering and System Safety, v.62, n.2, p.155-160, 1999.

MATHUR, F. P. On reliability modeling and analysis of ultrareliable fault-tolerant digital systems. IEEE Transactions On Computers, v. c20, n.11, p.1376-1382. Nov., 1971.

MORAES, C. C.; CASTRUCCI, P. L. Engenharia de automação industrial. Rio de Janeiro: LTC, 2001.

O’CONNOR, P. D. T. Practical reliability engineering. 4.ed. New York: John Wiley & Sons, 2002.

PATTERSON, D. A; HENNESSY, J. L Computer Architecture: a quantitative approach. Amsterdam: Morgan Kaufmann, 2002.

RANDELL, B.; LEE, P. A.; TRELEAVEN P. C. Reliability issues in computing system design. ACM Computing Surveys, v. 10, n. 2, p.132-165, Jun. 1978.

REIS G. A. et al. Design and evaluation of hybrid fault-detection systems. In: INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE, 32., 2005, Madson. Proceedings... Madson: IEEE, 2005.

RICE, W. F.; CASSADY, C. R.; WISE, T. R. Simplifying the solution of redundancy allocation problems. In: ANNUAL RELIABILITY AND MAINTAINABILITY SYMPOSIUM, 1999, Washington, DC. Proceedings... Washington, DC: IEEE, 1999.

ROMERA, R.; VALDÉS, J. E.; ZEQUEIRA, R. I. Active-redundancy allocation in systems. IEEE Transactions on Reliability, v. 53, n. 3, p.313-318, Sept. 2004.

SCHAD, V. R. Diagnostic des pannes dans les systèmes. Toulouse: Cepadues, 1975.

SHARMA, N. K. Fault-tolerance of a MIN using hybrid redundancy. In: ANNUAL SIMULATION SYMPOSIUM, 27., 1994, La Jolla. Proceedings... La Jolla: IEEE, 1994.

SIEWIOREK, D. P.; MCCLUSKEY, E. J. An iterative cell switch design for hybrid redundancy. IEEE Transactions on Computers, v.C-22, n. 3, p. 290-297, Mar. 1973.

SU, S. Y. H.; DUCASSE, E. A Hardware redundancy reconfiguration scheme for tolerating multiple module failures. IEEE Transactions On Computers, v. c-29, n. 3, p.254-258, mar., 1980.

TIAN, Z.; ZUO, M. J. Redundancy allocation for multi-state systems using physical programming and genetic algorithms. Reliability Engineering and System Safety, v.91, n.9, p.975-976, 2006.

47

WATTANAPONGSKOR, N.; COIT, D. W. Fault-tolerant embedded system design and optimization considering reliability estimation uncertainty. Reliability Engineering and System Safety, v.92, n.4, p.395-407, 2006.

WEBER, S. T. Um roteiro para exploração dos conceitos básicos de tolerância a falhas. Disponível em: < www.inf.ufrgs.br/~taisy/disciplinas/textos/Dependabilidade.pdf.> Acesso em: 28 nov. 2013.

YANG, P. et al. Reconfigurable parallel sorting and load balancing on a beowulf cluster: heterosort. London: Springer-Verlag, 2000. (Lecture Notes in Computer Science, v. 1800)

YANG, T. L.; PARASHAR, M., JIN, H. Cluster comput. Integration, the VLSI Journal, v.40, n. 2, p. 61, 2007.

YUA, H. et al. Reliability optimization of a redundant system with failure dependencies. Reliability Engineering and System Safety, v.92 n. 4 p. 395-407, 2006.

YUNA, W. Y.; SONGA, Y. M.; KIM, H. Multiple multi-level redundancy allocation in series systems. Reliability Engineering and System Safety, 2006. v.92, n. 3, p. 308-313, 2007.

48

Anexo 1: Nomenclatura Para Árvore de Falhas

Figura A.1: Nomenclatura usada para árvore de falhas

Fonte: (AZEVEDO, 2006).

Anexo 2: Descrição do Processador Blackfin 533

Para as implementações, foi utilizado o processador Blackfin 533 da Analog

Devices.

49

O Blackfin é um processador de 16 bits, ponto fixo [Ana03B]. Opera em

freqüências de até 750 MHz e combina uma MAC dupla, conjunto de instruções

RISC (Reduced Instruction Set Computing) e possibilidade de instrução única de

dados múltiplos (SIMD) (Single Instruction Stream – Multiple Data) (PATTERSON e

HENNESSY, 2002). O processador Blackfin é capaz de unir o melhor, tanto de

micro-controladores quanto de DSPs.

O núcleo do processador contém 2 multiplicadores de 16 bits, 2

acumuladores de 40 bits, duas unidades lógicas aritméticas de 40 bits (ALUs), um

deslocador de 40 bits e quatro ALUs de 8 bits para vídeo (ANALOG DEVICES,

2005), conforme Figura A.2.

Figura A.2: Ilustração da arquitetura do core do processador Blackfin 533

Fonte: (ANALOG DEVICES, 2003).

Ao núcleo do processador estão conectados os periféricos, tais como,

Parallel Peripheral Interface (PPI), Serial Ports (SPORTs), Serial Peripheral Interface

(SPI), Timers de uso geral, Universal Asynchronous Receiver Transmitter (UART),

Real Time Clock (RTC), Watchdog Timer e Programmable Flag Registers (PFs)

(ANALOG DEVICES, 2003), apresentados na Figura A.3.

50

Figura A.3: Ilustração das conexões do núcleo no processador Blackfin 533

Fonte: (ANALOG DEVICES, 2003).