Design and simulation of a RISC-V dual-core lockstep for fault tolerant systems - Viana, Rafael de Figueredo (2020)
Processadores embarcados são utilizados cada vez mais na indústria e em aplicações civis, como em dispositivos de aplicações críticas em segurança. O parâmetro crítico dos processadores, anteriormente performance, foi substituído pela necessidade da garantia de conﬁabilidade do sistema. Esta mudança de paradigma acarreta na utilização de técnicas para desenvolvimento de dispositivos tolerantes a falhas. Aplicações aeroespaciais e, mais recentemente, automotivas, são mais suscetíveis a falhas causadas pela incidência de radiação nos circuitos integrados que compõem os sistemas, devido à redução do tamanho do transistor e aumento da complexidade dos dispositivos. Neste contexto, o uso de FPGA (do inglês Field Programmable Gate Array) é atraente à indústria para implementação de sistemas seguros, devido a versatilidade e customização de designs nos dispositivos. Porém FPGA resistentes à radiação possuem alto custo de aquisição, além de serem desenvolvidas com tecnologia de circuitos integrados atrasada em relação a FPGA COTS (Commercial Off The Shelf). A ﬁm de aumentar a conﬁabilidade e segurança de sistemas implementados em FPGA COTS, este trabalho implementa uma arquitetura de Lockstep dual core (do termo inglês Dual Core Lockstep - DCLS) para processadores de arquitetura open-source RISC-V, utilizando o core RI5CY. Acreditamos que este é o primeiro trabalho que implementa uma arquitetura DCLS com CPUs RISC-V, executa uma rotina de injeção de falhas via software e avalia o overhead em software e hardware. Um framework de injeção de falha é proposto e implementado utilizando uma ferramenta aberta de simulação. O sistema é implementado em FPGA e o overhead em hardware do sistema é pequeno, chegando a 5.18% de utilização de área comparado com a área utilizada por um único core. O sistema alcança uma redução de frequência de clock de 18,5%, ao ser implementado em uma Kintex KC705. Os resultados da injeção de falhas indicam que o sistema é eﬁcaz na detecção de falhas nas saídas de cores, onde todos os erros visíveis foram detectados. Os testes de injeção de falha mostram a discrepância entre a injeção de falha transitória e permanente no Design Under Test - DUT devido a diferença de erros visíveis.