Abstract— The constant reduction in the components size of integrated circuits, as well as higher operating frequencies, increases the vulnerability to internal and external noise sources. These noises can cause a failure in any component, affecting the operation of the system as a whole. Systems-on-Chip with dozens of cores are based on Networks-on-Chip (NoCs), and require networks that are able to detect and prevent a fault in leading to a system failure and an application malfunction. In this context, this work aims at evaluating solutions to increase the reliability and availability of a NoC by adding mechanisms for error detection and correction. Spatial and information redundancy techniques were applied in order to protect the network against Single Event Upset faults. The applied techniques ensured the correct operation of the NoC in the presence of faults, with low impact to the performance and with acceptable silicon costs.
Keywords— Systems-on-Chip, Networks-on-Chip, Fault Tolerance.
I. INTRODUÇÃO
EVOLUÇÃO das tecnologias de fabricação de circuitos tem permitido a implementação de sistemas completos em um único chip, incluindo processadores, controladores, periféricos e memórias. Tais sistemas são denominados sistemas integrados ou SoCs (Systems-on-Chip).
O projeto desses sistemas eletrônicos é complexo [1] e para atender a requisitos de mercado, especialmente quanto ao tempo de projeto, os componentes de um SoC devem ser baseados em modelos de hardware reutilizáveis, pré-projetados e pré-verificados, os quais são chamados núcleos ou cores [2].
A interconexão entre os núcleos de um SoC de baixa densidade é geralmente feita por meio de barramentos, pois são estruturas reutilizáveis, o que reduz custos e tempo de projeto. Porém, SoCs com várias dezenas de núcleos demandam arquiteturas com maior desempenho. Para atender à demanda desses SoCs, as Redes-em-Chip ou NoCs (Networks-on-Chip) [3] surgiram como solução de interconexão por serem reutilizáveis e oferecerem desempenho escalável e paralelismo em comunicação.
Conforme apresentado na Fig. 1, uma NoC é constituída por roteadores, que transferem pacotes entre os núcleos; por interfaces de rede, que realizam a comunicação entre os núcleos e a rede de forma transparente; e por enlaces, que
T. F. Pereira, Universidade do Vale do Itajaí, Brasil, [email protected] D. R. Melo, Universidade do Vale do Itajaí, Brasil, Universidade Federal de Santa Catarina, Brasil, [email protected]
E. A. Bezerra, Universidade Federal de Santa Catarina, Brasil, [email protected]
C. A. Zeferino, Universidade do Vale do Itajaí, Brasil, [email protected] Corresponding author: D. R. Melo
interligam os roteadores.
Figura 1. Componentes de uma Rede-em-Chip.
A redução das dimensões dos componentes dos circuitos integrados e o aumento da frequência de operação fazem com que a NoC, assim como os demais componentes de um SoC, estejam cada vez mais suscetíveis a fontes de ruído internas (e.g. crosstalk) e externas (e.g interferência eletromagnética, térmica, induzida por partículas alfa) [4]. Esses ruídos podem resultar em faltas em componentes da rede, sendo que uma falta pode produzir um erro, como, por exemplo, a inversão de um bit. Ao ocorrer uma falta em um roteador ou em um enlace da rede, as rotas baseadas no componente que sofreu a falta podem ser comprometidas e isso afetar o funcionamento do sistema como um todo, levando-o a falhar.
Muitos sistemas integrados requerem que seus componentes sejam tolerantes a diferentes tipos de falta, dependendo do ambiente operacional ao qual são submetidos. As faltas podem ser classificadas em três tipos de acordo com a sua duração [5]: transiente, intermitente e permanente. Uma falta transiente ocorre uma vez e não persiste. Por outro lado, uma falta permanente ocorre durante a fabricação, ou depois de certo tempo, e persiste por tempo indeterminado. Por fim, uma falta intermitente ocorre de forma repetida, mas não contínua, no mesmo local.
Uma NoC tolerante a faltas deve ser capaz de detectar uma falta e evitar que o erro resultante seja propagado e leve a uma falha do sistema e a um mal funcionamento da aplicação. Porém, prover confiabilidade em uma NoC implica em consequências diretas no desempenho da rede, bem como no custo de silício e no consumo de energia da aplicação. Isso ocorre, pois o provimento de confiabilidade é feito por meio do uso de redundância, pela replicação de circuitos já existentes e/ou acréscimo de novos circuitos [4].
Diferentes soluções para provimento de tolerância a faltas em NoCs são descritas na literatura. Em [6], é apresentada uma estratégia de teste global para detectar faltas decorrentes de crosstalk em NoCs com topologia em malha. Em [7], foi
T. F. Pereira, D. R.
Melo
, Student Member, IEEE, E. A. Bezerra, Member, IEEE and C. A. Zeferino, Member, IEEEMechanisms to Provide Fault Tolerance
to a Network-on-Chip
proposto um novo mecanismo para a detecção de erros de roteamento em uma NoC adaptativa/reconfigurável. Em [8], foram utilizadas tabelas de roteamento e roteadores sobressalentes para substituir roteadores faltosos em uma NoC com roteamento adaptativo. Em [9], foram empregados canais bidirecionais adaptáveis nos enlaces de uma NoC para prover tolerância a faltas nas comunicações entre os roteadores. Em [10], foi utilizada a técnica de Hamming para detecção de faltas permanentes e transientes em uma NoC sem memorização (bufferless). Em [11], foi proposto um mecanismo on-line e de tempo real para detecção de faltas, no qual as saídas dos módulos de controle da NoC são constantemente verificadas por erros com base nos valores de entrada. Em [12], é apresentada uma NoC tolerante a faltas que utiliza buffers QFC (Quad-Function Channel) para realizar adaptações dinâmicas em enlaces faltosos.
Nesse contexto, este artigo aborda o provimento de tolerância a faltas transientes em uma NoC considerando o seu uso em sistemas aeroespaciais. Tais sistemas são suscetíveis a faltas do tipo SEU (Single Event Upset), as quais são provenientes de uma partícula ionizante e efetuam uma mudança de estado não desejada [5]. A solução proposta consiste na proteção dos registradores dos roteadores da NoC e do campo de roteamento do pacote para evitar falhas de roteamento. São aplicadas técnicas de redundância espacial e de informação que permitem detectar e corrigir erros decorrentes das faltas abordadas. O trabalho busca identificar qual é o impacto da solução proposta no custo e no desempenho da rede. Para isso, a solução foi implementada e avaliada na NoC SoCIN (System-on-Chip Interconnection Network) [13] por meio da síntese em silício. Foram obtidos dados sobre o aumento de área de silício e da potência dissipada, bem como a redução da frequência máxima de operação em função dos circuitos adicionados.
Este artigo é organizado conforme segue. A Seção II discute técnicas para provimento de tolerância a faltas. A Seção III apresenta a arquitetura da SoCIN, enquanto a Seção IV descreve como as técnicas de tolerância a faltas foram aplicadas na rede SoCIN. Seguindo, são apresentados aspecto de implementação (Seção V) e de verificação (Seção VI). Continuando, a Seção VII discute os resultados experimentais, enquanto a Seção VIII apresenta as conclusões do trabalho.
II. TÉCNICASDETOLERÂNCIAAFALTAS Um sistema tolerante a faltas é aquele que, mesmo na presença de faltas, continua a progredir e nunca produz um resultado incorreto visível ao usuário. Para se implementar soluções de tolerância a faltas, é preciso aplicar técnicas que permitam detectar o erro decorrente da falta. Um sistema só é capaz de detectar um erro por meio do uso de redundância [5] e as técnicas de detecção de erros podem ser agrupadas em três classes: espacial, temporal e de informação.
A redundância espacial consiste na replicação parcial ou total de um ou mais componentes. Na redundância modular dupla (DMR – Dual Modular Redundancy), o módulo protegido é replicado uma vez e os dois módulos recebem as
mesmas entradas. Um módulo comparador analisa as saídas e sinaliza quando houver uma diferença entre eles, indicando o erro. Como a saída do sistema é a saída de um dos módulos, esta solução não recupera a informação correta. Já a redundância modular tripla (TMR – Triple Modular Redundancy) utiliza duas réplicas do módulo sob proteção e um comparador do tipo votador. Além de sinalizar um erro quando este é detectado, o votador é capaz de recuperar a informação correta analisando as saídas dos três módulos e escolhendo o valor apresentado pela maioria deles.
A redundância temporal requer que uma unidade execute uma mesma operação duas ou mais vezes e então compare os resultados. Nessa técnica, não há custo extra de hardware ou aumento da potência dissipada, se não for considerado o mecanismo de comparação. Sua desvantagem está na diminuição do desempenho, o qual, sem o uso de pipeline, é dividido pelo número de operações executadas.
A redundância de informação consiste na adição de bits redundantes para detectar quando um dado foi afetado por um erro. Para tal, utiliza-se uma técnica baseada em código de detecção de erro, a qual consiste em mapear um determinado número de bits da palavra de dados em um código de detecção. As técnicas mais comumente utilizadas são as de paridade, CRC (Cyclic Redundancy Check) e Hamming.
III. AREDESOCIN
A rede SoCIN é uma NoC parametrizável desenvolvida para prover comunicação intrachip escalável de baixo custo para sistemas integrados em um único chip. Essa rede utiliza uma topologia em malha 2-D e tem como bloco construtivo básico o roteador RASoC (Routing Architecture for SoC) [14], o qual é implementado como um bloco de hardware sintetizável e parametrizável. A parametrização do roteador RASoC permite ao projetista do sistema configurar a largura dos canais de comunicação e a profundidade dos seus buffers FIFO (First In, First Out) de modo a gerar uma rede com a melhor relação entre custo e desempenho necessária para a aplicação alvo. Entretanto, os mecanismos de comunicação que definem a forma como os dados são transferidos pela rede são fixos (ou seja, não parametrizáveis). O roteador RASoC utiliza controle de fluxo Handshake, memorização FIFO nos canais de entrada, roteamento fonte determinístico, chaveamento por pacotes do tipo Wormhole e arbitragem Round-Robin.
A rede SoCIN utiliza endereçamento baseado em coordenadas X e Y, sendo que o cabeçalho do pacote inclui a quantidade de deslocamento a ser feita em cada direção na rota entre a origem e o destinatário (Xoffset, Yoffset). Essa
informação é atualizada a cada roteador e analisada pelo roteador seguinte para determinar a porta de saída para encaminhar o pacote. Quando essa iguala-se a (0, 0), o pacote é entregue ao núcleo conectado ao roteador.Com o objetivo de conferir maior flexibilidade à SoCIN e ampliar seu espaço de projeto para encontrar a melhor relação entre custo e desempenho, em [15] foi desenvolvido um novo roteador que estende as características de parametrização do RASoC. Esse
novo roteador foi denominado ParIS (Parameterizable Interconnect Switch) e diferencia-se do RASoC por suportar a parametrização dos mecanismos de comunicação, oferecendo alternativas para implementação do controle de fluxo (Handshake ou Baseado em Créditos), da memorização (nos canais de entrada e de saída), do roteamento distribuído (determinístico ou parcialmente adaptativo) e da arbitragem (Round-Robin, estática ou randômica), sendo que outras técnicas podem ser facilmente adicionados ao roteador. Para suportar esse grau de parametrização, foram feitas atualizações na forma como é realizado o roteamento na SoCIN (dos nodos origem para os roteadores), o que implicou em mudanças no cabeçalho da rede. Ao invés da distância (offset) até o nodo destinatário, o cabeçalho passou a transportar as coordenadas do destinatário (Xdest, Ydest) e, em
cada roteador, o algoritmo de roteamento compara as suas coordenadas com as coordenadas do nodo destinatário. Se as coordenadas forem iguais, o pacote é entregue ao núcleo conectado ao roteador. Se não forem, então o pacote é encaminhado a um roteador vizinho por meio uma porta selecionada pelo algoritmo de roteamento após a comparação das coordenadas. Essa nova versão da SoCIN foi denominada SoCINfp (de fully parametrizable) e, apesar dos recursos adicionados, não possui mecanismos para provimento de tolerância a faltas, o que motivou o presente trabalho. A seguir, é apresentada a arquitetura da SoCINfp e são descritos o formato do pacote e as estruturas às quais foram aplicadas as técnicas de tolerância a faltas.
A. Arquitetura da SoCINfp
O formato do pacote utilizado pela rede SoCINfp é ilustrado na Fig. 2. Nesse formato, podem ser observados os flits (Flow Control Digit) do cabeçalho, da carga útil e do terminador, os quais são identificados pelos bits de enquadramento (bop – begin-of-packet e eop – end-of-packet). No cabeçalho, destaca-se o campo RIB (Routing Information Bits) com as coordenadas do destinatário (RIB.Xdest e
RIB.Ydest). Uma das soluções de tolerância a faltas aplicada
neste trabalho visou justamente proteger essa informação, conforme será descrito posteriormente.
Figura 2. Formato do pacote da SoCINfp.
B. Roteador ParIS
O roteador ParIS possui até cinco portas de comunicação bidirecionais, as quais são denominadas: L, N, E, S e W (ou seja: Local, North, East, South e West). Cada porta de comunicação é formada por dois canais unidirecionais: um de entrada (e.g. Lin) e um de saída (e.g. Lout), como pode ser
observado na Fig. 3, a qual é discutida a seguir.
Figura 3. Diagrama de blocos do roteador ParIS.
Cada canal é constituído de sinais de dado (din ou dout), de validação (val) e de retorno (ret), cujo significado varia conforme a técnica de controle de fluxo utilizada. Internamente, os canais de entrada e de saída são interconectados por crossbars de dado e de controle implementados por chaves comutadoras distribuídas, que conectam sinais de dado e de controle de fluxo (rok/rd e wok/wr). Além desses, há também sinais de requisição (req), concessão (gnt) e de estado (idle) relacionados ao escalonamento dos canais de entrada e de saída.
Cada canal de entrada é uma instância de um módulo formado pelos blocos IFC, FIFO, IC e IRS, os quais são responsáveis elas seguintes funções:
• IFC (Input Flow Control): regula o fluxo de flits que chegam ao canal de entrada do roteador;
• FIFO: armazena flits que ficam contidos no canal de entrada aguardando para serem encaminhados por um canal de saída do roteador;
• IC (Input Controller): detecta a presença de um cabeçalho de pacote na saída do FIFO, executa o algoritmo de roteamento e encaminha o pacote para a saída pertinente enviando uma requisição ao seu bloco OC; e
• IRS (Input Read Switch): conecta o sinal wok de um dos módulos de saída à entrada rd do FIFO de entrada. Os canais de saída são instâncias de um módulo formado pelos blocos ODS, OWS, OC, FIFO e OFC, os quais são responsáveis pelas tarefas a seguir:
• ODS (Output Data Switch): conecta a saída dout do FIFO de um canal de entrada à entrada din do FIFO do canal de saída;
• OWS (Output Write Switch): conecta a saída rok do FIFO de um canal de entrada à entrada wr do FIFO do canal de saída;
• OC (Output Controller): realiza a arbitragem de conflitos quanto dois ou mais canais de entrada requisitam o
mesmo canal de saída para encaminhar seus pacotes. Ao selecionar um canal de entrada, ele define o estado dos seus sinais de concessão (gnt), os quais comandam os blocos IRS, ODS e OWS necessários para estabelecer a conexão entre o canal selecionado e o FIFO de saída do mesmo módulo;
• FIFO: armazena flits que aguardam para serem encaminhados pelo canal de saída. Este FIFO é opcional, enquanto que o FIFO de entrada é obrigatório; e
• OFC (Output Flow Controller): regula o fluxo de flits que saem pelo canal de saída.
Este trabalho teve como objetivo prover tolerância a faltas de modo a assegurar o correto funcionamento dos mecanismos de roteamento, arbitragem e chaveamento no roteador ParIS. Além da proteção ao cabeçalho do pacote, já mencionado, também foram aplicadas técnicas para proteger os blocos IC e OC do roteador.
IV. TOLERÂNCIAAFALTASNAREDESOCINFP Alguns estudos anteriores sobre tolerância a faltas na rede SoCIN foram realizados em trabalhos de pesquisa. Em [16], foram implementadas técnicas para proteger o roteador RASoC da rede SoCIN contra faltas transientes dos tipos SEU e crosstalk. O autor propôs a utilização de uma abordagem híbrida de hardware e de software para prover tolerância a faltas nos roteadores. Essa abordagem consiste em modificações de hardware com a inclusão de um CRC no terminador para detectar erros na carga útil do pacote com um bit de Ack/Nack (confirmação/não confirmação) para solicitar retransmissão. Para resolver o problema no roteamento, foi utilizada a técnica de amostragem tripla. O autor comparou essa solução com uma totalmente baseada em hardware, na qual os enlaces são protegidos por uma amostragem tripla do dado recebido. Nessa, os FIFOs são protegidos por codificadores e decodificadores Hamming e os outros componentes do roteador (e.g. máquinas de estados) são protegidos via TMR. Os resultados mostraram que a solução híbrida apresenta a mesma taxa de cobertura de erros que a solução totalmente em hardware e possui um sobrecusto menor de silício e de potência.
Em [17], foram implementadas técnicas de tolerância a faltas baseadas em redundância da informação (Paridade e CRC) para proteger os enlaces da rede SoCIN contra faltas transientes do tipo crosstalk. No trabalho, foi implementado um módulo sabotador responsável por injetar faltas de crosstalk em um modelo de simulação da SoCIN em SystemC. Os experimentos confirmaram que as técnicas aplicadas são capazes de detectar e recuperar a rede de tais faltas.
O presente trabalho deriva dos estudos realizados em [16], porém, aplicando-se uma técnica de redundância espacial no roteador ParIS para proteger seus blocos de roteamento e de arbitragem. O trabalho também se diferencia por aplicar uma técnica de redundância de informação para proteger o campo
de roteamento (RIB) do cabeçalho. A implementação dessas técnicas no roteador ParIS é descrita a seguir.
A. Adicionando redundância espacial
A técnica de redundância espacial TMR foi aplicada ao roteador ParIS para proteger os registradores do bloco de roteamento (IC – Input Controller) e os registradores do bloco de arbitragem (OC – Output Controller) contra faltas do tipo SEU. Essas faltas podem alterar o estado dos registradores das instâncias desses blocos em cada porta do roteador, o que poderia resultar no estabelecimento de uma conexão errada ou no cancelamento equivocado de uma conexão existente. O primeiro erro seria resultante da ativação de um bit do registrador de saída do bloco IC (gerando uma nova requisição). Já o segundo erro poderia ser provocado pela desativação de um bit do registrador do bloco IC (cancelando uma requisição pré-ativada) ou de um bit do registrador do bloco OC (cancelando uma conexão já estabelecida).
A proteção dos registradores desses blocos contra faltas transientes do tipo SEU foi feita com o uso de redundância espacial pela aplicação de TMR.
1) Redundância espacial no bloco IC: Internamente, o bloco IC é constituído de uma função que executa o algoritmo de roteamento e seleciona um módulo de saída. Essa seleção é armazenada em um registrador (req_reg) que mantém o estado de todos os sinais de requisição (um para cada módulo de saída que pode ser requisitado). Em um dado momento, apenas uma requisição pode estar ativada (e.g. “0001”). Caso não haja nenhum pacote no FIFO, todos os bits do registrador estarão em ‘0’, sinalizando que nenhuma conexão foi solicitada. Além dos flip-flops, o registrador possui uma lógica de controle que detecta a presença do cabeçalho na saída do FIFO e o momento em que o terminador do pacote é encaminhado. A primeira condição identifica o momento em que o registrador req_reg deve armazenar a saída da função de roteamento (realizando a requisição), enquanto a segunda identifica o momento em que o registrador deve ser limpo (cancelando a requisição). A estrutura do bloco IC é ilustrada na Fig. 4.
Figura 4. Estrutura interna do bloco IC original.
Uma falta do tipo SEU em um flip-flop do registrador req_reg pode ativar ou cancelar uma requisição. No primeiro caso, isso significa solicitar o estabelecimento de uma conexão com o canal de saída correspondente. No segundo caso, significa cancelar uma requisição estabelecida previamente e, portanto, o envio do pacote. Esses dois erros podem levar o sistema a falhar, dado que as comunicações realizadas por meio daquele canal de entrada estariam comprometidas.
A solução de TMR adotada consistiu na instanciação de duas cópias adicionais do registrador e na inclusão de um circuito votador. Quando uma falta do tipo SEU ocorrer em um flip-flop de um dos três registradores, o votador irá selecionar o estado dos flip-flops de mesmo índice dos outros dois registradores, mascarando a ocorrência do erro. A estrutura do bloco IC com TMR é ilustrada na Fig. 5.
Figura 5. Estrutura interna do bloco IC com TMR.
2) Redundância espacial no bloco OC: Internamente, o bloco OC é constituído de um sub-bloco gerador de prioridades e um sub-bloco programável de codificação de prioridades. O primeiro define o critério de prioridade a ser aplicado em um ciclo de arbitragem, indicando qual requisição será a de maior prioridade. O codificador de prioridades, por sua vez, implementa uma lógica de seleção que aplica o critério de prioridade atual para selecionar uma das requisições e conceder a conexão ao bloco IC requisitante.
O gerador de prioridades é constituído de um circuito de controle e de um registrador, enquanto o codificador de prioridades é formado por um registrador associado a uma lógica de controle, conforme ilustrado na Fig. 6.
De forma similar ao que foi feito no bloco IC, todos os flip-flops do bloco OC foram replicados e conectados a votadores para protegê-lo contra faltas do tipo SEU, resultando na estrutura ilustrada na Fig. 7.
Bloco OC Gerador de Prioridades
Controle de Estado Flip-flops Lógica de controle Registrador Flip-flops Codificador Registrador Flip-flops Lógica de controle
Figura 6. Estrutura interna do bloco OC original.
A. Adicionando redundância de informação
O trabalho também se propôs a proteger a informação de roteamento (RIB) do pacote. O objetivo é evitar que, quando o pacote estiver armazenado na FIFO de entrada, uma falta do tipo SEU sobre um dos bits do campo RIB (que poderia mudar seu valor) leve ao roteamento incorreto do pacote.
Figura 7. Estrutura interna do bloco OC com TMR.
O campo RIB do cabeçalho foi replicado duas vezes e as três instâncias desse campo foram avaliadas por um módulo votador responsável por gerar um RIB válido quando ocorrer uma única falta SEU em um dado bit, ou múltiplas faltas em bits diferentes (Fig. 8). A redundância de informação implicou na ocupação de bits do cabeçalho que estavam disponíveis para protocolos de mais alto nível, os quais deverão ser implementados em um flit adicional, estendendo o tamanho do pacote. Por exemplo, considerando um campo RIB de 8 bits (para redes de até 16 × 16 roteadores), serão consumidos 16 bits adicionais com as suas duas réplicas.
RIB RIB RIB
Votador RIB
Figura 8. Redundância de informação aplicada ao campo RIB.
V. IMPLEMENTAÇÃO
As soluções apresentadas foram implementadas em VHDL e verificadas com o uso do simulador do ambiente Quartus II da Altera, versão 13.0 SP1.
Para a implementação da técnica de TMR, foi utilizado um votador para mascarar a incidência de uma falta simples. Na Fig. 9 é apresentado o código VHDL do votador de três entradas de 1 bit.
Um votador parametrizável com entradas com mais bits é implementado pela geração iterativa de múltiplas instâncias do votador de 1 bits. Esse componente (denominado voter) é então utilizado tanto na implementação do TMR dos blocos OC e IC, quanto na técnica de redundância de informação.
entity voter_cell is port( i_DIN0: in std_logic; i_DIN1: in std_logic; i_DIN2: in std_logic; i_ENA : in std_logic; o_DOUT: out std_logic);
end voter_cell;
architecture arch of voter_cell is
begin
o_DOUT <= (i_DIN0 and i_DIN1) or (i_DIN0 and i_DIN2) or (i_DIN1 and i_DIN2)
when (i_ENA='1') else '0';
end arch;
Figura 9. Código VHDL do votador de um bit.
A Fig. 10 apresenta o código VHDL referente à estrutura interna (arquitetura) do bloco IC com TMR (ilustrado previamente na Fig. 5). Nela, é possível observar: a função de roteamento (instância u_0) que determina a porta de saída a ser requisitada com a ativação de um dos sinais w_REQx; as três instâncias do registrador req_reg (u_1, u_2 e u_3) que armazenam cópias da saída da função de roteamento; e o votador (instância u_4) que define o valor da saída do bloco IC (ou seja, os sinais o_REQx).
architecture arch_tf of ic is
-- Omitida declaração dos sinais internos
begin
-- Função de roteamento u_0 : routing
port map(i_XDEST,i_YDEST,i_BOP,i_ROK,
w_REQL,w_REQN,w_REQE,w_REQS,w_REQW);
-- Instância 0 do req_reg u_1 : req_reg
port map(i_CLK,i_RST,i_ROK,i_RD,i_BOP,i_EOP, w_REQL,w_REQN,w_REQE,w_REQS,w_REQW, w_VOTER_DIN0(0),w_VOTER_DIN0(1), w_VOTER_DIN0(2),w_VOTER_DIN0(3), w_VOTER_DIN0(4)); -- Instância 1 do req_reg u_2 : req_reg
port map(i_CLK,i_RST,i_ROK,i_RD,i_BOP,i_EOP, w_REQL,w_REQN,w_REQE,w_REQS,w_REQW, w_VOTER_DIN1(0),w_VOTER_DIN1(1), w_VOTER_DIN1(2),w_VOTER_DIN1(3), w_VOTER_DIN1(4)); -- Instância 2 do req_reg u_3 : req_reg
port map(i_CLK,i_RST,i_ROK,i_RD,i_BOP,i_EOP, w_REQL,w_REQN,w_REQE,w_REQS,w_REQW, w_VOTER_DIN2(0),w_VOTER_DIN2(1), w_VOTER_DIN2(2),w_VOTER_DIN2(3), w_VOTER_DIN2(4)); -- Votador u_4 : voter
port map(w_VOTER_DIN0,w_VOTER_DIN1, w_VOTER_DIN2,w_VOTER_DOUT); -- Saídas do Bloco IC
o_REQL <= w_VOTER_DOUT(0); -- Req. porta L o_REQN <= w_VOTER_DOUT(1); -- Req. porta N o_REQE <= w_VOTER_DOUT(2); -- Req. porta E o_REQS <= w_VOTER_DOUT(3); -- Req. Porta S o_REQW <= w_VOTER_DOUT(4); -- Req. porta W
end arch_tf;
Figura 10. Código VHDL da arquitetura do bloco IC com TMR.
Códigos similares ao da Fig. 10 foram descritos para a
implementação da técnica de TMR no bloco OC, bem como da técnica de redundância de informação.
VI. VERIFICAÇÃO
Para avaliar o comportamento do roteador na presença de faltas, foram feitas modificações nos registradores do roteador ParIS, nos quais cada flip-flop foi substituído pelo circuito ilustrado na Fig. 11. Nesse circuito, a entrada de preset (i_PRE) emula o efeito de uma falta do tipo SEU e força o armazenamento de um valor 1. Já entrada de clear (i_CLR) também emula uma falta do tipo SEU, mas força o armazenamento do valor 0.
Figura 11. Módulo sabotador para emulação de faltas
A Fig. 12 apresenta o diagrama de formas de onda da simulação para verificação do bloco IC para faltas de preset. Nesse diagrama, estão listados os seguintes sinais: (i) CYCLES, identifica os ciclos simulados; (ii) i_CLK e i_RST, sinais de relógio e de reinício do sistema; (iii) PRE_REQ_REG_E, sinal de preset do registrador de requisição da porta de saída leste (derivado das entradas i_PRE[8..6]; e (iv) o_X_REQE, saída do registrador de requisição da porta de saída leste. Primeiramente, nos ciclos 1 a 6, é mostrado o funcionamento na ausência de faltas, quando não há nenhuma requisição para a porta leste. Entre os ciclos 7 e 21, são injetadas três faltas únicas sucessivas em diferentes registradores. O votador evita que essas faltas se propaguem na forma de uma requisição indevida, o que evidencia que o módulo é tolerante à presença de uma falta em apenas um dos seus registradores de requisição. Nesses casos, também não ocorrem requisições para a porta leste, mostrando que o módulo é tolerante à presença de uma falta em apenas um dos seus registradores de requisição. Por fim, entre os ciclos 22 e 39, são injetadas duas faltas simultâneas em diferentes registradores. Nos casos ilustrados, o bloco IC requisita a saída leste (o_X_REQE) de forma indevida, causando o funcionamento incorreto do roteador (falha).
Figura 12. Simulação do bloco IC.
A Fig. 13 mostra o diagrama de formas de ondas da verificação do bloco OC quando da ocorrência de faltas de
clear. Em especial, são verificados os registradores do codificador de prioridades que armazenam os sinais de concessão gerados pelo árbitro (GRANT_REG) e que são apresentados nas saídas de grant (o_G[3..0]). Na simulação, o circuito recebe uma requisição periódica (sinal i_R[0]) que, na ausência de outras requisições, deveria sempre ser selecionada com a ativação do sinal o_G[0] enquanto a requisição permanecer ativa. Na ausência de faltas (ciclos 5 a 8) e na ocorrência de uma única falta (ciclos 9 a 23), o circuito opera corretamente e o sinal o_G[0] permanece em 1 por três ciclos. Porém, na ocorrência de duas faltas simultâneas (ciclos 24 a 43), o sinal o_G[0] é baixado, o que leva ao cancelamento da conexão entre os canais de entrada (requisitante) e de saída (requisitado). Ou seja, ocorre uma falha.
Figura 13. Simulação do bloco OC.
Os registradores do gerador de prioridades do bloco OC foram verificados por meio de experimentos similares, confirmando que os modelos implementados atendem ao projeto realizado.
A Fig. 14 ilustra o diagrama da simulação para verificação da técnica de redundância de informação.
Figura 14. Simulação do circuito de redundância da informação.
Na simulação, um pacote com o seguinte conteúdo é recebido pelo canal i_DATA quando o sinal i_VAL está em nível 1 (no diagrama, apenas os três dígitos menos significativos de cada flit são visualizados):
• Cabeçalho: 0x100232323
• Corpo: 0x0AAAAAAAA • Terminador:0x2BBBBBBBB
O cabeçalho contém três cópias do endereço do destinatário (0x23), campo RIB. Como o roteador possui endereço 0x22, o roteamento deve selecionar e requisitar a porta de saída norte, ativando o sinal o_X_REQN, conforme pode ser visto nos ciclos 2 a 7. No intervalo entre os ciclos 14 a 16, é recebida uma réplica desse pacote em que é invertido o bit mais significativo da cópia mais à esquerda do campo RIB, a qual passa de 0x23 para 0x03. O circuito votador filtra essa falta e assegura que seja requisitada a porta de saída norte. Já nos ciclos 26 a 28, é recebida uma réplica do pacote em que são invertidos os bits mais significativos de duas cópias do campo RIB, com o cabeçalho igual a 0x100030323 (foram invertidos bits dos dígitos sublinhados). Devido a essa falta dupla, por maioria, o votador assume que o cabeçalho correto é 0x100030303 e o circuito de roteamento requisita a porta oeste ao invés da porta norte, ativando o sinal o_X_REQW. Isso resulta em uma falha de roteamento. Os experimentos realizados evidenciaram o correto funcionamento de todos os modelos implementados, demonstrando que a solução apresentada protege os registradores dos módulos IC e OC e o cabeçalho dos pacotes contra faltas únicas.
VII. RESULTADOS
Para obtenção das métricas de avaliação, os modelos VHDL foram sintetizados para uma tecnologia ASIC de 90nm (SAED) com o uso da ferramenta Design Compiler da Synopsys. As métricas adotadas após a síntese lógica e o mapeamento para a tecnologia alvo foram: (i) área de silício (expressa em µm²); (ii); potência total dissipada para uma dada frequência de operação (expressa em mW); e (iii) frequência máxima de operação (expressa em MHz).
Para fins de análise de sobrecusto e impacto na frequência de operação, cada implementação foi comparada com os resultados equivalentes do roteador ParIS original. Todas as implementações utilizaram a mesma configuração de mecanismos de comunicação e de frequência de relógio. A configuração utilizada no roteador ParIS foi a seguinte:
• Roteamento: XY;
• Controle de fluxo: Baseado em Créditos; • Árbitro: Round-Robin;
• Memorização: Buffers de profundidade 4 na entrada; • Tamanho da palavra de dados: 32 bits;
• Tamanho do campo de roteamento (RIB): 8 bits; e • Portas de comunicação ativas: Todas (L, N, E, S e W). Na ferramenta Design Compiler, foi utilizada a seguinte configuração para a obtenção das métricas:
• Atraso de relógio: 1 ns (40 MHz); • Período de relógio: 5 ns (200 MHz); • Atraso de entrada: 1 ns (40 MHz); • Atraso de saída: 1 ns (40 MHz); • Nome da biblioteca: saed90nm; e • Condição de operação: típica.
A. Área de silício
Na Tabela I, é apresentada a área de silício de cada solução implementada, identificando-se os custos relacionados à logica combinacional, à lógica sequencial e às ligações (conexões) entre os circuitos.
A Fig. 15 ilustra graficamente o sobrecusto das informações contidas na Tabela I, pela qual se pode chegar às conclusões a seguir.
Figura 15. Sobrecusto das técnicas de redundância.
O uso da técnica de redundância de informação resultou em um pequeno sobrecusto em área combinacional e de ligação, não apresentando sobrecusto de lógica sequencial, dado que sua implementação é puramente combinacional.
Com a técnica de redundância espacial, houve acréscimo em todas as áreas, mas a área combinacional teve um aumento mais significativo que as demais por conta do custo dos votadores, os quais são circuitos puramente combinacionais.
Já a combinação das duas técnicas apresentou o mesmo aumento de área sequencial apresentado pela técnica de redundância espacial, dado que a técnica de redundância de informação é puramente combinacional.
B. Potência dissipada
A Tabela II apresenta o aumento da dissipação de potência, em microwatts (µW) das soluções implementadas. Observa-se que a técnica de redundância de informação somada com a técnica de redundância espacial apresenta um sobrecusto de apenas 6,46%, enquanto o sobrecusto em área foi de 35,47%. O sobrecusto de potência da técnica de Redundância de Informação (3,28%) foi proporcionalmente menor em relação ao seu sobrecusto de área (5,46%).
C. Frequência de operação
As técnicas de redundância também impactam no caminho crítico dos circuitos do roteador e reduzem a frequência máxima de operação. Enquanto a implementação original pode operar a 250 MHz, o roteador com redundância de informação tem frequência máxima limitada a 210 MHz. Já o roteador com redundância espacial é limitado a operar em 200 MHz, assim como a implementação baseada na combinação das duas técnicas. Essa redução na frequência máxima de operação é aceitável se não afetar o atendimento dos requisitos de comunicação da aplicação alvo.
VIII. CONCLUSÕES
Neste trabalho, foram aplicadas técnicas de tolerância a faltas ao roteador ParIS para proteger a rede SoCINfp contra faltas do tipo SEU. A proteção dos mecanismos de roteamento e arbitragem foi feita por meio do uso de redundância espacial. Sua implementação consistiu na replicação dos módulos vulneráveis (registradores) e na adição de circuitos votadores. Como a técnica de redundância espacial não protege uma palavra cujo cabeçalho já tenha sido recebido com erro, foi também adotada uma técnica de redundância de informação para proteger o campo de roteamento. Os resultados mostram que as soluções implementadas são efetivas e apresentam impacto aceitável no custo e no desempenho do roteador.
Como contribuições deste trabalho, destacam-se o provimento de tolerância a faltas ao roteador ParIS e o uso da técnica de redundância de informação no cabeçalho, o que não foi identificado em trabalhos similares reportados na literatura.
Como trabalho futuro, propõe-se integrar as técnicas utilizadas neste trabalho com as técnicas adotadas por [17] para proteção dos enlaces da rede de modo a produzir uma implementação da rede SoCINfp mais robusta. Propõe-se ainda adicionar as técnicas de tolerância a faltas ao modelo SystemC de simulação da rede SoCINfp a fim de mensurar o impacto dos mecanismos de tolerância a faltas nas demais métricas de desempenho da rede (vazão e latência).
AGRADECIMENTOS
Os autores agradecem ao Conselho Nacional de Desenvolvimento Científico e Tecnológico – CNPq e à Coordenação de Aperfeiçoamento de Pessoal de Nível Superior – CAPES pelo apoio concedido por meio de bolsas de pós-graduação.
TABELA II
DISSIPAÇÃO DE POTÊNCIA DAS TÉCNICAS DE REDUNDÂNCIA
Implementação Potência Total (µW) Sobrecusto %
Original 2.134,70
Informação 2.204,80 3,28%
Espacial 2.224,30 4,20%
Informação + Espacial 2.272,50 6,46% TABELA I
ÁREA DAS IMPLEMENTAÇÕES DE REDUNDÂNCIA
Implementação Combinacional (µm²) Sequencial (µm²) Ligações (µm²) Total (µm²) Original 24.389,22 21.136,90 3.535,16 49.061,28 Informação 26.912,56 21.136,90 3.689,99 51.739,45 Espacial 32.263,37 26.915,33 4.475,15 63.653,85 Informação + Espacial 34.900,99 26.915,33 4.645,38 66.461,70
REFERÊNCIAS
[1] W. Wolf. Embedded Computing: “What is embedded computing?,” IEEE Computer, [S.l.], v. 35, n. 3, p. 136-137, Jan. 2002.
[2] R. K. Gupta and Y. Zorian. “Introducing core-based system design,” IEEE Design & Test of Computers, [S.1.], v. 14, n. 4, p. 15-25, Oct-Dec. 1997.
[3] A. Jantsch and H. Tenhunen, Eds, Networks on Chip. Boston: Kluwer Academic Publishers, 2003. 303p.
[4] D. Bertozzi, “The data link layer in NoC design,” in G. de Micheli e L. Benini, Networks-on-Chip: technology and tools. Amsterdam: Boston: Elsevier: Morgan Kaufmann Publishers, 2006.
[5] D. J. Sorin, Fault Tolerant Computer Architecture: Synthesis Lectures on Computer Architecture. Morgan & Claypool. 2009. 104p.
[6] M. Botelho, F. L. Kastensmidt, M. Lubaszewski, É. Cota and L. Carro, "A broad strategy to detect crosstalk faults in Network-on-Chip interconnects," 18th IEEE/IFIP International Conference on VLSI and System-on-Chip, Madrid, 2010, pp. 298-303.
[7] C. Killian, C. Tanougast, F. Monteiro and A. Dandache, "Online Routing Fault Detection for Reconfigurable NoC," International Conference on Field Programmable Logic and Applications, Milano, 2010, pp. 183-186.
[8] Y. C. Chang, C. T. Chiu, S. Y. Lin and C. K. Liu, "On the design and analysis of fault tolerant NoC architecture using spare routers," 16th Asia and South Pacific Design Automation Conference (ASP-DAC 2011), Yokohama, 2011, pp. 431-436.
[9] W. C. Tsai, D. Y. Zheng, S. J. Chen and Y. H. Hu, "A Fault-Tolerant NoC Scheme using bidirectional channel," 48th Design Automation Conference (DAC), ACM/EDAC/IEEE, New York, NY, 2011, pp. 918-923.
[10] C. Feng, Z. Lu, A. Jantsch, M. Zhang and Z. Xing, "Addressing Transient and Permanent Faults in NoC With Efficient Fault-Tolerant Deflection Router," in IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 21, no. 6, pp. 1053-1066, June 2013. [11] A. Prodromou, A. Panteli, C. Nicopoulos and Y. Sazeides, "NoCAlert:
An On-Line and Real-Time Fault Detection Mechanism for Network-on-Chip Architectures," 45th Annual IEEE/ACM International Symposium on Microarchitecture, Vancouver, BC, 2012, pp. 60-71.
[12] D. DiTomaso, A. Kodi and A. Louri, "QORE: A fault tolerant Network-on-Chip architecture with power-efficient quad-function channel (QFC) buffers," IEEE 20th International Symposium on High Performance Computer Architecture (HPCA), Orlando, FL, 2014, pp. 320-331. [13] C. A. Zeferino and A. A. Susin, “SoCIN: A Parametric and Scalable
Network-on-Chip,” 16th Symposium on Integrated Circuits and Systems Design (SBCCI), São Paulo. Proceedings Los Alamitos: IEEE CS Press, 2003. p. 169-174.
[14] C. A. Zeferino, M. E. Kreutz and A. A. Susin, “RASoC: A Router Soft-Core for Networks-on-Chip,” International Design Automation & Test in Europe (DATE) – Designer’s Forum, Paris. Proceedings Piscataway: IEEE Computer Society, 2004. p. 198-205.
[15] C. A. Zeferino, F. G. M. E. Santo and A. A. Susin, “ParIS: A Parameterizable Interconnect Switch for Networks-on-Chip,” 17th Symposium on Integrated Circuits and Systems, Porto de Galinhas. Proceedings New York: ACM Press, 2004. p. 204-209.
[16] A. P. Frantz, Designing fault tolerant NoCs to improve reliabitity on SoCs. Dissertação (Mestrado) – Programa de Pós-Graduação em Computação.Universidade Federal do Rio Grande do Sul, Porto Alegre, 2007.
[17] F. Veiga and C. A. Zeferino, “Implementation of techniques for fault tolerance in a Network-on-Chip,” 11th Symposium on Computing Systems (WSCAD-SCC), Petrópolis. Proceedings Los Alamitos: IEEE Computer Society, 2010. p. 80-87.
Thiago Felski Pereira é graduado em Ciência da
Computação (2008) e mestre em Computação Aplicada (2012) pela Universidade do Vale do Itajaí, Brasil. Atua como docente da Faculdade Avantis e do Centro de Ciências Tecnológicas da Terra e do Mar da Universidade do Vale do Itajaí. Seus tópicos de interesse são Projeto de Sistemas Digitais, Tolerância a Faltas e Microeletrônica.
Douglas Rossi de Melo é graduado em Engenharia de
Computação (2008) e mestre em Computação Aplicada (2012) pela Universidade do Vale do Itajaí, Brasil. Atualmente, cursa doutorado em Engenharia Elétrica na Universidade Federal de Santa Catarina, Brasil, e atua como docente do Centro de Ciências Tecnológicas da Terra e do Mar da Universidade do Vale do Itajaí. Suas áreas de interesse são Arquitetura de Sistemas de Computação e Projeto de Sistemas Digitais.
Eduardo Augusto Bezerra recebeu seu doutorado em
Engenharia de Computação pela University of Sussex (Space Science Centre), Inglaterra, em 2002. É professor do Departamento de Engenharia Elétrica da Universidade Federal de Santa Catarina, Brasil, desde 2010. Atuou na Faculdade de Informática da Pontifícia Universidade Católica do Rio Grande do Sul, Brasil, de 1996 a 2010. Seus interesses de pesquisa incluem Sistemas Embarcados, Aplicações Espaciais, Arquitetura de Computadores, Sistemas Reconfiguráveis, Teste de Hardware e Software, Tolerância a Faltas e Microcontroladores.
Cesar Albenes Zeferino recebeu seu doutorado em Ciência
da Computação pela Universidade Federal do Rio Grande do Sul, Brasil, em 2003, com estágio sanduíche na Université Pierre et Marie Curie, Paris, França. É professor do Centro de Ciências Tecnológicas da Terra e do Mar da Universidade do Vale do Itajaí, Brasil, desde 2002, onde coordena o Programa de Pós-Graduação em Computação e o Laboratório de Sstemas Embarcados e Distribuídos. Seus tópicos de interesse são Projeto de Circuitos Digitais, Sistemas Embarcados, Sistemas Integrados e Redes-em-Chip.