Abstract: | The always increasing number of computer-based safety-critical applications has intensified the research over fault tolerance techniques. While those systems are working, the probability of both permanent and transient faults happens due to the presence of all sort of interference. The common faults are those which affect data and/or modify the expected program execution flow. Thus, the use of techniques allowing detecting these type of faults presents them from propagating to system output. Basically, these techniques are categorized in two groups: software-based approaches and hardware-based approaches. Considering the above introduced, the goal of this work is to specify and to implement a hybrid approach, which combines software-based techniques and hardware-based ones, capable to detect run time data and algorithm control flow faults. It is settled around the techniques proposed in (REBAUDENGO, 2004) and (GOLOUBEVA, 2003). Nevertheless, the proposed approach implements part of its code-transformation rules via software and hardware. These redundant information is added to the software portion and consistency checks are implemented via hardware. Summary, we propose the development of an I-IP (infrastructure intellectual property) core, such as watchdog, to correctly execute the consistency checks concurrently to the application execution. In this work, three different versions of the I-IP were implemented in VHDL and analyzed by means of fault injection experiments. The first implemented version allows data fault detection and, as any prototype, has its limitations. The second version also detects data faults, but eliminates the problems of the former version. The third I-IP version adds the capability of detecting control flow faults to the previous versions of the I-IP. Finally, after implementing these three versions, a fourth version was specified. It adds dependability and robustness to the IIP by using Built-in Self-Test (BIST) techniques. The results obtained from evaluating the different I-IP core versions guarantee that the hybrid approach is efficient, because it features high fault coverage and surpasses the main problems present in software-based techniques proposed in the literature, such as, performance degradation and code/data memory overhead. Finally, this work is a partial result of a joint research project carried by the SiSC Group – PUCRS and CAD – Politecnico di Torino, under the scope of the Alfa Project (##AML/B7-311- 97/0666/II-0086-FI, from 2002 to 2005). Nos últimos anos, o crescente aumento do número de aplicações críticas baseadas em sistemas eletrônicos, intensificou a pesquisa sobre técnicas de tolerância à falhas. Durante o período de funcionamento destes sistemas, a probabilidade de ocorrerem falhas transientes e permanentes devido à presença de interferências dos mais variados tipos é bastante grande. Dentre as falhas mais freqüentes, salientam-se as falhas que corrompem os dados e as falhas que alteram o fluxo de controle do processador que executa a aplicação. Assim, a utilização de técnicas capazes de detectarem estes tipos de falhas evita que as mesmas se propaguem pelo sistema e acabem gerando saídas incorretas. Basicamente, estas técnicas são classificadas em dois grandes grupos: soluções baseadas em software e soluções baseadas em hardware. Neste contexto, o objetivo principal deste trabalho é especificar e implementar uma solução híbrida, parte em software e parte em hardware, capaz de detectar em tempo de execução eventuais falhas em dados e no fluxo de controle do algoritmo. Esta solução baseia-se nas técnicas propostas em (REBAUDENGO, 2004) e (GOLOUBEVA, 2003) e implementa parte de suas regras de transformação de código via software e parte via hardware. Assim, informações redundantes são agregadas ao código da aplicação e testes de consistência são implementados via hardware. Em resumo, este trabalho propõe o desenvolvimento de um núcleo I-IP (infrastructure intellectual property), tal como um watchdog, para executar os testes de consistência concorrentemente à execução da aplicação. Para isto, três versões diferentes do I-IP foram implementadas em linguagem de descrição de hardware (VHDL) e avaliadas através de experimentos de injeção de falhas.A primeira versão implementada provê a detecção de falhas em dados e, como todo protótipo, este também apresenta algumas restrições e limitações. A segunda versão também detecta falhas em dados, entretanto, supera todos os problemas da versão anterior. A terceira versão do I-IP agrega à versão anterior a capacidade de detectar falhas de fluxo de controle. Finalmente, após a implementação das versões anteriores, foi especificada uma quarta versão que agrega confiabilidade e robustez ao I-IP desenvolvido através da utilização de algumas técnicas de tolerância a falhas e da especificação de um auto-teste funcional. Os resultados obtidos a partir da avaliação das versões do I-IP garantem que a metodologia proposta neste trabalho é bastante eficiente, pois apresenta uma alta cobertura de falhas e supera os principais problemas presentes nas soluções baseadas em software propostas na literatura, ou seja, degradação de desempenho e maior consumo de memória. Finalmente, cabe mencionar que esta dissertação é o resultado parcial de atividades que fazem parte do escopo do Projeto Alfa (#AML/B7-311-97/0666/II-0086-FI) mantido entre os Grupos SiSC – PUCRS (Brasil) e CAD – Politecnico di Torino (Itália) no período de 2002-2005. |