Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. Introdução
As novas tecnologias de fabricação de circuitos integrados têm permitido o projeto de
sistemas completos em um único chip, os quais são denominados Systems-on-Chip
(SoCs). A metodologia de projeto dos SoCs baseia-se no reuso de blocos previamente
projetados e verificados, denominados núcleos (core) ou blocos de propriedade
intelectual (IP Blocks). Atualmente, são utilizadas duas abordagem para interconexão
dos IP Blocks: canais ponto-a-ponto dedicados e canais multiponto compartilhados, este
último também denominado de barramento [ZEFERINO 2003].
As arquiteturas de comunicação baseadas em barramento, que estão na maioria
dos SoCs, se tornam ineficientes para interligar dezenas ou centenas de núcleos
[ZEFERINO 2003]. Uma solução para esse problema é o uso de Redes em Chips ou
Networks-on-Chip (NoCs), que oferecem melhor desempenho e eficiência na
comunicação.
As NoCs consistem em arranjos de roteadores e enlaces, que interligam os
núcleos SoCs permitindo que estes se comuniquem através do envio e do recebimento
de mensagens pela rede. Uma das vantagens das NoCs é o uso do paralelismo na
comunicação, que utiliza os mesmos conceitos das redes de interconexão para
computadores paralelos.
Dentro desse amplo contexto, este artigo apresenta a construção de um roteador
para redes em chip com roteamento semi-adaptativo. O algoritmo semi-adaptativo
permite alterações em tempo-real nas decisões de roteamento para refletir mudanças na
topologia ou no tráfego. Com base nessa solução proposta pode-se evoluir para a criação
de um roteador tolerante a falhas.
O roteador implementado foi desenvolvido em Verilog (linguagem de descrição
de hardware) e seus testes foram feitos em SystemVerilog (linguagem de
desenvolvimento, verificação e testbench de hardware). O resultado final do trabalho
foi testado individualmente em uma rede com topologia toróide 3x3. O software de
simulação foi o ModelSim ALTERA STARTER EDITION 6.4a, da Mentor Graphics
Corporation.
Este texto está dividido da seguinte maneira: a segunda seção contém uma breve
fundamentação teórica sobre as arquiteturas de rede em chip; na seção três explicamos
como a arquitetura do roteador foi implementada; a seção quatro apresenta os testes
funcionais do roteador e uma simulação de transferência de dados; e a seção cinco as
considerações finais sobre o trabalho.
2. Redes em Chip
As redes em chip são compostas por componentes de processamento (núcleos) e
chaveamento (roteadores). Por exemplo, na rede ilustrada na Figura 1a podemos ver os
componentes de chaveamento (representado na figura pela letra R), que possuem
ligações para quatro outros dispositivos de chaveamento vizinhos, e para um núcleo
local (representado na figura pela letra N). Os núcleos são responsáveis pela execução
das tarefas do sistema (cores ou IP Blocks), enquanto os componentes de chaveamento
são responsáveis pela transferência de mensagens entre os núcleos.
Em uma rede em chip, os roteadores e os núcleos são interligados por meio de
canais ponto a ponto unidirecionais e assíncronos [ZEFERINO 2003]. Os canais são fios
que transportam o conteúdo da mensagem e os sinais de sincronismo. Cada mensagem é
constituída por três partes: um cabeçalho, o corpo da mensagem, e por fim um
terminador. O cabeçalho contém informações que ajudarão no encaminhamento da
mensagem pela rede. O corpo da mensagem é o conteúdo que deve ser transferido
(conhecido também como carga útil ou payload), e o terminador sinaliza o final da
mensagem, conforme ilustrado na Figura 1b.
Figura 1. (a) Ilustração de uma rede em chip; (b) Estrutura de uma mensagem.
Uma rede em chip pode ser caracterizada pela sua topologia e pelos mecanismos
de comunicação, que definem a forma como as mensagens serão transferidas pela rede.
Os principais mecanismos são: chaveamento, controle de fluxo, memorização,
roteamento e arbitragem.
2.1. Chaveamento
É o mecanismo interno do roteador, que define a forma pela qual os dados são
transferidos de um canal de entrada para um dos seus canais de saída. Existem dois
métodos utilizados para essa transferência: chaveamento por circuito e chaveamento por
pacotes. No método chaveamento por circuito, é estabelecido um caminho completo
entre o roteador de origem e o roteador de destino, antes de iniciar do envio da
mensagem [BASTOS 2006]. No método de chaveamento por pacotes inicia-se o envio
da mensagem sem estabelecer um caminho completo, e no decorrer do percurso o
caminho vai sendo construído.
2.3. Memorização
Nas arquiteturas com chaveamento por pacotes, o roteador deve garantir o
armazenamento temporário das mensagens destinadas às saídas que já estejam sendo
utilizadas, por outras mensagens. Para o caso ideal todos os roteadores teriam
capacidade de armazenamento infinita, garantindo que nenhuma mensagem fosse
bloqueada por outra enquanto sua saída não fosse liberada. Todavia, a memória do
roteador é limitada, e o bloqueio da mensagem pode ser inevitável.
A organização dos buffers dentro do roteador tem um impacto significativo no
seu desempenho. Há várias estratégias de memorização, dentre os quais se podem
destacar o armazenamento na entrada. Esse tipo de armazenamento consiste em inserir
buffers independentes em cada uma das portas de entrada do roteador [BASTOS 2006].
Uma das estratégias mais simples e de menor custo é a FIFO. Os buffers têm
características de fila, ou seja, os dados são escritos e lidos na mesma ordem.
2.4. Roteamento
É o processo que determina para qual roteador vizinho a mensagem deve ser enviada.
Um dos objetivos mais importantes, em relação ao algoritmo de roteamento, é evitar
problemas de livelock e deadlock. O livelock ocorre quando a mensagem mantém-se
trafegando permanentemente pela rede, porque os canais necessários para que ele
chegue ao roteador de destino estão sempre indisponíveis [ZEFERINO 2003]. O
deadlock ocorre quando há uma dependência cíclica na rede, ou seja, quando uma
mensagem requer o uso de outro canal já alocado a outra mensagem, podendo levar até
a paralisação da rede [TANENBAUM 2000].
Além dos problemas citados acima, um algoritmo para redes em chip deve ter
baixo custo, pois quanto menor o custo menor será o espaço que ocupará em uma
pastilha de silício. Podemos destacar quatro algoritmos: algoritmo XY, West-first,
North-last e o Negative-first. O algoritmo XY é determinístico, ou seja, ele direciona a
mensagem inicialmente na direção X, e depois na direção Y (nunca ao contrário). Os
outros algoritmos apresentados são semi-adaptativos [Glass 1994]. Os três algoritmos
funcionam de maneira semelhante, diferenciando-se nas suas direções proibidas. Na
Figura 2 podemos ver as mudanças de direção aceitas (setas continuas), e as não aceitas
(setas pontilhadas) pelos algoritmos.
Figura 2. (a) Algoritmo XY; (b) Algoritmo west-first; (c) Algoritmo north-last; (d) Algoritmo
negative-first.
Os algoritmos de roteamento utilizam coordenadas cartesianas de duas
dimensões. Cada roteador possui um endereço físico único, conhecido como coordenada
fonte e, no cabeçalho das mensagens, as coordenadas destino, representadas
respectivamente por: (XF, YF) e (XD, YD).
2.5. Arbitragem
O processo de arbitragem decide quais entradas utilizarão o recurso compartilhado a
cada instante. Em um roteador geralmente os recursos compartilhados são as saídas,
pois, muitas vezes, mais de uma entrada pode requerer simultaneamente uma mesma
saída. O mecanismo de arbitragem tem que possuir um critério de escolha para evitar
que uma entrada nunca seja selecionada para utilizar o canal requisitado, problema que é
conhecido como starvation [SANTOS 2004], [BASTOS 2006].
Uma das políticas mais simples é a Round-Robin, que utiliza um esquema de
prioridades dinâmicas baseado em uma fila circular, onde todas as requisições tem o
mesmo nível de prioridade e todas serão atendidas. O árbitro Round-Robin recebe n
requisições e muda o critério de prioridades a cada arbitragem realizada (e não a cada
ciclo de relógio). Uma requisição selecionada só poderá novamente ser selecionada,
depois de decorrer todo o ciclo de arbitragem.
3. Desenvolvimento
O roteador foi construído para ser utilizado em uma topologia toróide de 2 dimensões,
ilustrada na Figura 3a. Cada roteador tem dez portas (cinco de entrada e cinco de saída),
denominados Norte, Sul, Leste, Oeste e Local, conforme ilustrado na Figura 3b.
Figura 4. Arrumação dos bits da mensagem para: (a) o cabeçalho; (b) o conteúdo da
mensagem; (c) e o terminador.
O roteador implementado é formado por cinco grandes módulos, conforme
ilustrado na Figura 5: TERMINAIS, ÁRBITRO DE ENTRADA, MÓDULO DE
ROTEAMENTO, ÁRBITRO DE SAÍDA e MATRIZ CROSSBAR.
4. Testes Funcionais
Em todo o processo de construção do roteador houve uma preocupação com o
funcionamento correto de cada módulo individualmente, e em conjunto dentro do
roteador. Por essa razão confeccionamos testes de unidade (dos módulos TERMINAIS,
ROTEAMENTO, ÁRBITRO DE SAÍDA e MATRIZ CROSSBAR), testes individuais
do roteador e testes de roteadores em uma rede toro 3x3. Os testes de validação total do
roteador ainda não foram concluídos, pois para realizar tal teste é necessário aplicar 2136
possibilidades de entradas diferentes ao roteador, ter um mecanismo de controle e
validação dos resultados.
Nesse artigo apresentaremos uma simulação de transferência de uma mensagem
por uma rede 3x3. Para essa simulação foi desenvolvido um ambiente (em
SystemVerilog) simulando nove roteadores interligados na topologia toro-2D, conforme
ilustrado na Figura 6. Nos TERMINAIS LOCAIS de cada roteador, foram acoplados
SIMULADORES DE TERMINAL, simulando um núcleo ligado ao roteador. Eles
fazem o monitoramento da simulação.
Figura 8. Momento que a mensagem entra pelo TERMINAL OESTE do roteador (1, 1), e saí
pelo TERMINAL LESTE.
A Figura 9 ilustra a entrada da mensagem pelo TERMINAL OESTE, do
roteador (2, 1), e sua saída pelo TERMINAL NORTE por volta de 5700ps.
Figura 9. Momento que a mensagem entra pelo TERMINAL OESTE do roteador (2, 1), e saí
pelo TERMINAL NORTE.
Por fim, a Figura 10 ilustra a entrada da mensagem pelo TERMINAL SUL, do
roteador (2, 2), e a sua saída da rede pelo TERMINAL LOCAL por volta de 7200ps.
Figura 10. Momento que a mensagem entra pelo TERMINAL SUL do roteador (2, 2), e saí
da rede pelo TERMINAL LOCAL.
5. Considerações Finais
O objetivo desse trabalho foi o desenvolvimento de um código em Verilog de um
roteador para redes em chip com algoritmo semi-adaptativo. Esse roteador tem
capacidade de adaptar a rota dos pacotes caso exista um congestionamento na rede.
Utilizamos um MÓDULO DE ROTEAMENTO com algoritmo de classificação sem-
adaptativo acoplado a módulos auxiliares para armezenamento de dados e interconexão
entre canais de transmissão de dados.
Além dos módulos responsáveis pelo roteamento, construímos os módulos
responsáveis pela comunicação de roteadores vizinhos (conhecidos como
TERMINAIS), utilizando buffers no modelo FIFO, juntamente com Controle de Fluxo
Baseado em Slack Buffer (seção 3.1). O módulo que coordena a alocação dos canais de
saída (ÁRBITRO DE SAIDA) e o módulo que é responsável em fazer a interconexão
dos canais de entrada com os de saída (MATRIZ CROSSBAR). No MÓDULO DE
ROTEAMENTO, foi utilizado o algoritmo west-first, que tem por característica ser
semi-adaptativo e livre de deadlook (seção 3.3).
Neste artigo citamos os testes realizados na validação parcial (já desenvolvido) e
o teste de validação total (em desenvolvimento) do roteador. Também apresentamos
uma simulação de transferência de um pacote pela rede toro-2D 3x3.
Todo o projeto do roteador ocupou 1145 unidades lógicas e alcançou 121.68
MHz de freqüência para o clock do sistema. A simulação foi feita com a família Stratix
II, com o dispositivo EP2S15F484C3 na ferramenta Quartus II versão 9.0 da Altera.
Trabalhos de pesquisa referentes à continuidade deste Trabalho de Conclusão, a
serem desenvolvidos, compreendem a conclusão e execução do teste de validação total
do roteador; a implementação da estratégia de Canais Virtuais à rede, para reduzir o
congestionamento na rede; e implementar o projeto em uma FPGA para testar melhor
seu comportamento em hardware. Outra possibilidade que está nos planos futuros é
evoluir para o desenvolvimento de um roteador com característica de tolerância a falhas
em seus componentes.
Referencias