Sei sulla pagina 1di 10

Projeto de um Roteador com Roteamento Semi-Adaptativo

para Redes em Chip


Daniel dos Anjos Costa, Angelo Amancio Duarte

Departamento de Tecnologia – Universidade Estadual de Feira de Santana (UEFS) Feira


de Santana – BA – Brazil
daniel.dosanjos@gmail.com, angeloduarte@ecomp.uefs.br

Abstract. We propose and implement an architecture for a Network on a Chip


based on routers using a semi-adaptive routing algorithm. The circuit was
implemented in Verilog and tested using a testbench on System Verilog. The
semi-adaptative algorithm is capable of forwarding packets over the network,
and may even change their routing decisions to reflect changes in topology or
in traffic, which is useful in the implementation of fault tolerance capabilities
in routers. Besides the architectural details, this paper presents a simulation
of data transfer in a 3x3 torus network.

Resumo. Nós propusemos e implementamos uma arquitetura para Redes em


Chip baseada em roteadores usando um algoritmo de roteamento semi-
adaptativo. O circuito foi implementado em Verilog e testado em System
Verilog. O algoritmo semi-adaptativo é capaz de encaminhar pacotes através
da rede, e pode mudar as suas decisões de roteamento para refletir mudanças
na topologia e no tráfego, que é útil na implementação de recursos de
tolerância a falhas em roteadores. Além dos detalhes arquiteturais, este artigo
apresenta uma simulação de transferência de dados em uma rede toro 3x3.

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.2. Controle de Fluxo


Lida com a alocação dos recursos (filas e canais) necessários para uma mensagem
avançar pela rede, efetuando a regulação de tráfego nos canais [Culler 1999]. Serve,
para fazer o sincronismo entre dois roteadores durante uma transferência, ajustando a
taxa de saída de um roteador origem, à taxa de entrada de um roteador destino, evitando
a perda de dados durante a transmissão [Carrara 2004].
Uma das estratégias de controle de fluxo é a baseada em Slack Buffer. Nela o
buffer do receptor pode ser visto como um reservatório com marcas de nível alto e
baixo. Essas duas marcas indicam o limite máximo e o limite mínimo de
armazenamento, respectivamente. O emissor interrompe a transferência, quando recebe
um sinal indicando que o buffer do receptor alcançou o limite máximo, e retoma a
mesma, quando o buffer do receptor alcançar limite mínimo.

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 3. (a) Topologia toro-2d; (b) Portas de comunicação do roteador.


As mensagens foram divididas em flits de cabeçalho, carga útil e terminador,
pois a estratégia escolhida de chaveamento por pacote foi do tipo wormhole. Como a
informação de roteamento é incluída no flit de cabeçalho, os flits do conteúdo da
mensagem seguem os flits de cabeçalho através da rede, logo, os flits do conteúdo da
mensagem, ficam armazenados ao longo do trajeto, por essa razão, se diz que nessa
estratégia os flits trafegam em modo pipeline.
Cada flit contém 10 bits. O bit 9 e o bit 8 são os bits de enquadramento da
mensagem, conhecidos como bop (begin-of-packet) e eop (end-of-packet), simbolizando
o inicio e o fim da mensagem, respectivamente [ZEFERINO 2003]. No cabeçalho da
mensagem, os bits de 7 a 0, contém seu endereço de destino. Os bits de 7 a 4 indicam a
coordenada X, enquanto os de 3 a 0 indicam a coordenada Y, conforme ilustrado na
Figura 4a.
Na Figura 4b é ilustrada a organização dos bits durante a transmissão da carga
útil da mensagem. Nesse momento os bits bop e eop terão valor lógico “0”. No último
flit da mensagem, o bit eop tem nível lógico “1”, conforme ilustrado na Figura 4c.

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.

Figura 5. Visão em alto nível da arquitetura do roteador.


Em linhas gerais, o funcionamento do roteador é o seguinte: quando um
TERMINAL recebe uma mensagem a ser transferida, ele repassa o endereço de destino
(que está no cabeçalho da mensagem), para o ÁRBITRO DE ENTRADA, que pode
receber simultaneamente até cinco endereços. Este, por sua vez, armazena essa
informação temporariamente, e a repassa ao MÓDULO DE ROTEAMENTO.
Recebendo o endereço da mensagem, o MÓDULO DE ROTEAMENTO calcula uma
rota para o mesmo, decidindo para qual roteador vizinho a mensagem será enviado.
Depois que a rota é gerada, a mesma é informada ao ÁRBITRO DE SAÍDA, que por
sua vez armazena temporariamente essa rota até o canal de saída ficar liberado. Quando
o ÁRBITRO DE SAÍDA aloca uma saída, ele repassa essa informação para a MATRIZ
CROSSBAR que fará a conexão do canal de entrada com o de saída, permitindo o
tráfego dos dados.
3.1. MÓDULOS TERMINAIS
Os TERMINAIS são responsáveis pela comunicação com os roteadores vizinhos, o
controle de fluxo dos dados e o armazenamento temporário dos flits da mensagem. Cada
roteador tem 5 módulos TERMINAIS, quatro são interligados a outros módulos
TERMINAIS dos roteadores vizinhos (pelas portas norte, sul, leste e oeste) e o último é
ligado ao seu respectivo núcleo, pela porta local. Para realizar a transferência de
mensagens, inicialmente é feita a sincronização entres os módulos TERMINAIS dos
roteadores envolvidos, para então ocorrer o envio da mensagem.
O sincronismo entre os TERMINAIS é feito por dois sinais: VAL (sinal enviado
pelo roteador emissor, indicando que tem dado válido a ser transmitido) e ACK (sinal de
resposta do roteador receptor, indicando que está pronto para receber dados). Depois do
sincronismo, o roteador receptor aguarda a chegada do bit bop, que indica o inicio da
mensagem. O TERMINAL do roteador receptor armazena temporariamente os dados
válidos, enquanto espera pelo processo de definição da rota, para encaminhamento da
mensagem, feito pelo outros módulos do roteador. Caso o buffer do TERMINAL
receptor alcance o nível máximo, o sinal de ACK é desativado, indicando ao
TERMINAL emissor que a transmissão deve ser interrompida temporariamente. Para
retomar a transferência, o TERMINAL receptor reativa o sinal ACK. Essa estratégia de
controle de fluxo é conhecida como Slack Buffer, como mencionado na seção 2.2.
Outra função do módulo TERMINAL é identificar congestionamento na rede.
Esse módulo usa um contador de 8 bits ativado no momento que se inicia o sincronismo
entre os roteadores. Se o roteador receptor não responder a solicitação de transferência
antes que o contador atinja seu limite máximo, o TERMINAL emissor solicita uma
nova rota ao MÓDULO DE ROTEAMENTO. Caso esse processo se repita até que não
existam mais rotas para enviar a mensagem, esta será descartada.

3.2. MÓDULO ÁRBITRO DE ENTRADA


A principal função desse módulo é armazenar temporariamente os endereços das
mensagens e repassá-los (de um a um) ao MÓDULO DE ROTEAMENTO, pois ele
pode receber simultaneamente endereços dos 5 MÓDULOS TERMINAIS. Sua lógica
interna possui 5 registradores de 8 bits (um para cada TERMINAL de entrada), ligados
a uma única saída, por um multiplexador. A escolha de quem vai usar a saída, é feita
pelo mecanismo de arbitragem, usando uma política de arbitragem conhecida como
Round-Robin, descrita na seção 2.5. Essa estratégia foi utilizada, pela sua simplicidade
e, por ser livre de starvation.

3.3. MÓDULO DE ROTEAMENTO


É um dos módulos mais importantes do roteador, pois tem que gerar uma rota de destino
para a mensagem, a qual deverá estar livre de deadlock, além de gerar rotas alternativas
ou indicar o descarte da mensagem, evitando o livelock (seção 2.4). O algoritmo de
roteamento implementado para esse trabalho foi o west-first, que é semi-adaptativo e
livre de deadlock [Glass 1994].
O primeiro passo desse algoritmo é verificar se o endereço de destino da
mensagem é igual ao endereço local do roteador. Caso sejam iguais, o módulo conclui
que a mensagem chegou ao seu destino, e ela é encaminhada à saída do TERMINAL
LOCAL; se não forem iguais, prossegue o cálculo da rota. A idéia principal do
algoritmo west-first é sempre enviar primeiramente a mensagem na direção oeste
(roteador à esquerda), conforme as seguintes regras:
1. A mensagem tem que passar pela menor quantidade possível de roteadores até
seu destino.
2. A mensagem tem que entrar pelo TERMINAL LESTE ou LOCAL.
3. Não pode haver congestionamento assinalado ao TERMINAL OESTE.
Quando uma mensagem entra pelo TERMINAL LOCAL do roteador, ela pode
tomar qualquer direção, inclusive a direção oeste, pelo fato de ter acabado de entrar na
rede. Quando uma mensagem entra pelo TERMINAL LESTE do roteador, pode tomar a
direção oeste, pois foi direcionada por outro roteador para essa mesma direção.
Se as condições para enviar a mensagem ao TERMINAL OESTE não forem
satisfeitas a mesma, é roteada deterministicamente (tomando a direção leste, e depois
tomando as direções norte ou sul), sempre levando em conta quais TERMINAIS estão
congestionados, e o TERMINAL que a mensagem entrou (uma mensagem nunca pode
sair pelo mesmo TERMINAL que entrou). Caso o MÓDULO DE ROTEAMENTO não
encontre uma rota, ele a enviará para o canal de saída que estiver livre e sem
congestionamento (menos o TERMINAL de entrada da mensagem, o OESTE e o
LOCAL). Se não houverem opções de roteamento a mensagem será descartada.

3.4. MÓDULO ÁRBITRO DE SAÍDA


Esse módulo coordena a alocação dos canais de saída do roteador, pois muitas vezes,
mais de uma mensagem pode requerer simultaneamente uma mesma saída. O
ÁRBITRO DE SAÍDA recebe as rotas do MÓDULO DE ROTEAMENTO e as
armazena temporariamente enquanto aguarda os canais de saída ficarem livres. A rota
gerada pelo MÓDULO DE ROTEAMENTO indica ao ÁRBITRO DE SAÍDA, a
entrada que deve ser conectada ao canal de saída. Quando o ÁRBITRO DE SAÍDA
libera uma solicitação, ele envia um sinal ao TERMINAL de entrada solicitante,
indicando que pode iniciar a transferência e simultaneamente envia a rota para a
MATRIZ CROSSBAR efetuar a interconexão entre os canais de entrada e saída.
A escolha de quem vai usar a saída, é feita pelo mecanismo de arbitragem,
usando uma política de arbitragem conhecida como Round-Robin, descrita na seção 2.5.

3.5. MATRIZ CROSSBAR


A MATRIZ CROSSBAR tem a função de fazer a interconexão do canal de entrada de
dados com o canal de saída de dados. Sua função é organizar o chaveamento e
interromper imediatamente a conexão assim que a mensagem termina. Ela recebe do
ÁRBITRO DE SAÍDA a rota por onde a mensagem será enviada, e faz a ligação da
saída do buffer do TERMINAL de entrada, com o canal de saída solicitado.

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 6. Arquitetura do ambiente de simulação.


Nessa simulação introduzimos uma mensagem ao roteador (0, 1) com destino ao
roteador (2, 2) e, submetemos uma situação de congestionamento (cortando a
comunicação entre os envolvidos com o uso de portas tri-state) a oeste do roteador (0,
1) e leste do roteador (2, 1). Levando em consideração o congestionamento, a
mensagem seguirá uma direção alternativa a leste do roteador (0, 1) percorrendo o
roteador (1,1) até o roteador (2, 1), onde irá tomar a direção norte, até o roteador (2, 2).
A mensagem teve a seguinte seqüência de flits:
546 – 123 – 4 – 56 – 98 – 45 – 33 – 99 – 0 – 1 – 256
O cabeçalho da mensagem está direcionado ao roteador (2, 2), logo, tem
representação binária “1000100010” (546 em decimal), seguindo o padrão ilustrado na
Figura 3a da seção 3. O bit 9 e o bit 8 (do cabeçalho) são os bits de enquadramento da
mensagem: bop e eop. Do bit 7 ao bit 4 estão os bits da coordenada X e, do bit 3 ao 0 a
coordenada Y. O último flit da mensagem tem representação binária “0100000000”,
também seguindo o padrão do projeto (ilustrado na Figura 3c), em que o bit eop tem
valor lógico “1”.
Nas Figuras 7, 8, 9 e 10 podemos acompanhar o percurso da mensagem pela
rede, destacado de branco em cada uma das figuras. Na Figura 7, por volta de 1350ps,
vê-se que a mensagem entra na rede pelo TERMINAL LOCAL do roteador (0, 1), e saí
pelo TERMINAL LESTE por volta dos 2900ps.
Figura 7. Momento que a mensagem entra na rede, pelo TERMINAL LOCAL do roteador
(0, 1), e saí pelo TERMINAL LESTE.
Na Figura 8 podemos observar a entrada da mensagem no roteador (1, 1), pelo
TERMINAL OESTE e, sua saída pelo TERMINAL LESTE por volta do instante
4300ps.

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.

Concluiu-se com esses testes que os roteadores têm capacidade de transportar


mensagens aos seus destinos, mantendo a integridade dos seus dados.

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

Bastos, E. (2006) “Mercury: Uma Rede Intra-chip com Topologia Toro 2D e


Roteamento Adaptativo”,
http://www.pucrs.br/inf/pos/mestdout/dissertacoes/arquivos/ebastos.pdf
Carara, E. (2004) “Uma Exploração Arquitetural de Redes Intra-chip com Topologia
Malha e Modo de Chaveamento Wormhole”,
http://www.inf.pucrs.br/~noc/wiki3/lib/exe/fetch.php?media=docs:tc_carara.pdf
Culler, D. E., Singh, J. P. e Gupta, A. (1999) “Parallel Computer Architecture:
AHardware/Software Approach”, Ed. Morgan Kaufmann Publishers.
Glass, C. e Ni, L. (1994) “The Turn Model for Adaptive Routing”. In: Journal of
the Association for Computing Machinery, páginas 874-902.
Santos, F., Zeferino, C. A. e Susin, A. A. (2004) “Uma Arquitetura de Roteador
parametrizável para a Síntese de Redes-em-Chip”. In: IV Congresso Brasileiro de
Computação - CBComp páginas 269-274.
Tanembaum, A. S. (2000) “Sistemas Operacionais: projeto e implementação”,
Bookmam, 2ª ed..
Zeferino, C. (2003) “Redes-em-Chip: Arquiteturas e Modelos para Avaliação de Área e
Desempenho”,
http://www.inf.pucrs.br/~noc/wiki3/lib/exe/fetch.php?media=docs:tese_zeferino.pdf

Potrebbero piacerti anche