2.4 REDES-EM-CHIP
2.4.1 A rede SoCINfp
A rede SoCIN (ZEFERINO; SUSIN, 2003) foi originalmente baseada no roteador RASoC (Router Architecture for SoC) (ZEFERINO; KREUTZ; SUSIN, 2004). Este roteador é um soft-core VHDL que pode ser customizado em relação às suas dimensões físicas, como o tamanho dos canais e a profundidade dos buffers, o que permite adequar o seu custo e o seu desempenho às necessidades da aplicação alvo. Entretanto, este nível de parametrização é muito limitado, por isso, foi especificada uma segunda versão da rede SoCIN. Essa nova versão amplia as alternativas de parametrização, permitindo a escolha das técnicas utilizadas na entrega de pacotes como:
roteamento, arbitragem e controle de fluxo. Para dar suporte a essas novas características, foi desenvolvido outro roteador chamado ParIS (Parameterizable Interconnection Switch) que assim como o roteador RASoC, também é um soft-core VHDL. A rede passou então a ser denominada SoCINfp (fully parameterizable) (ZEFERINO; SANTO; SUSIN, 2004).
O modelo VHDL da rede SoCIN permite tanto a síntese em hardware, como a simulação da rede para avaliação do seu desempenho. No entanto, conforme Zeferino et al., (2007), a simulação de redes descritas em VHDL pode apresentar elevado custo computacional, tornando-se inviável para redes de grande dimensões. Além disso, a simulação baseada unicamente em modelos VHDL é limitada ao subconjunto do VHDL suportado pela ferramenta de desenvolvimento utilizada.
Visando solucionar esse problema, foi realizada a modelagem do roteador ParIS e da rede SoCIN em SystemC RTL7 – Register Transfer Level (ZEFERINO et al., 2007).
2.4.1.1 Arquitetura da rede SoCINfp
A rede SoCINfp é uma NoC que utiliza uma topologia em malha (mesh) 2-D. Cada roteador possui uma porta de comunicação, denominada Local ou L, à qual pode ser conectado um núcleo ou um subsistema. Possui também de duas a quatro portas de comunicação para conexão com roteadores vizinhos, conforme a posição do roteador na rede. Essas portas são chamadas de North (Norte), East (Leste), South, (Sul) e West (Oeste), ou, simplesmente, N, E, S e W. Os roteadores são endereçados por um sistema de coordenadas XY (Coluna, Linha) conforme ilustrado na Figura 8.
Figura 8. Arquitetura da rede SoCIN.
Fonte: Zeferino et al., (2007).
Quando um núcleo (ou nodo) conectado a um roteador deseja enviar um pacote a um núcleo conectado a outro roteador, ele deve incluir as coordenadas do destinatário (e as suas) no cabeçalho do pacote para que os roteadores da rede possam definir o caminho a ser tomado (e para que o destinatário saiba quem enviou o pacote) (ZEFERINO et al., 2007).
7 RTL (Regiser Transfer Level) é a modelagem em um nível de abstração em que todos os registradores do projeto e a lógica combinacional entre eles são explícitamente especificados.
A rede SoCINfp utiliza chaveamento de pacotes do tipo wormhole, no qual a mensagem é enviada por meio de pacotes que são compostos por flits. Um flit (Flow Control Unit) é a menor unidade sob a qual o controle de fluxo pode operar. Os pacotes são compostos por um número ilimitado de flits, cada flit possui n+2 bits, onde n corresponde aos dados e os 2 bits restantes indicam o início e fim do pacote, conforme ilustrado na Figura 9. O primeiro flit é aquele em que o campo bop é igual a 1 e corresponde ao cabeçalho do pacote. Esse cabeçalho é composto por dois campos básicos: RIB (Routing Information Bits) e HLP (Higher Level Protocol). O RIB transporta informações usadas por cada roteador na realização do encaminhamento do pacote (contém as coordenadas de destino). O HLP é reservado para implementação de protocolos acima da camada de rede e não é usado pelos roteadores. Após o cabeçalho, os flits restantes compõem a carga útil (payload) do pacote, que tem tamanho ilimitado. O último flit da carga útil tem o campo eop igual a 1, o que define esse flit como o fim do pacote (ZEFERINO; SANTO; SUSIN, 2004).
Figura 9. Formato do pacote SoCINfp.
Fonte: Zeferino, Santo e Susin (2004).
O enlace de comunicação da rede SoCINfp, ilustrado na Figura 10, é composto por dois canais ponto-a-ponto do tipo simplex em oposição, cada um contendo n bits de dados e 2 bits de enquadramento. O controle de fluxo é realizado utilizando 2 fios adicionais associados aos sinais val e ret. O significado do sinal ret varia de acordo com a abordagem utilizada para controle de fluxo. Para a técnica de handshake, ele significa o aviso de que um dado está sendo enviado. Para a técnica baseada em créditos, significa uma posição liberada no buffer de entrada do receptor, e um crédito sendo retornado ao emissor. O emissor só pode enviar flits se o buffer do receptor não estiver cheio. O monitoramento do estado do buffer é realizado utilizando um contador que é inicializado com o valor igual à capacidade do buffer. O contador é decrementado quando um flit é
enviado e incrementado quando o crédito é retornado, indicando que o flit foi consumido pelo receptor. Se o contador for igual a zero, o buffer do receptor está cheio (Ibidem).
Figura 10. Formato do enlace da rede SoCINfp.
Fonte: Zeferino, Santo e Susin (2004).
2.4.1.2 Arquitetura do roteador ParIS
O roteador ParIS é um soft-core VHDL composto por uma biblioteca de blocos parametrizados e pré-projetados, incluindo diferentes implementações para cada técnica usada na troca de mensagens do tipo wormhole. Essas técnicas incluem: roteamento, controle de fluxo, arbitragem e memorização. Possui até 5 portas de comunicação compatíveis com o enlace da rede SoCINfp nomeadas L, N, S, E e W. Conforme já discutido, a porta L (Local) é reservada para conectar um núcleo ou um subsistema à rede e as demais portas são reservadas para conexão com os outros roteadores (ZEFERINO; SANTO; SUSIN, 2004).
A estrutura do roteador ParIS é distribuída de forma que cada porta de comunicação possui dois módulos: input channel (in) e output channel (out) em que os principais componentes são implementados. Na Figura 11, é ilustrada a organização do roteador ParIS tendo como exemplo as portas L e W. Na ilustração, são apresentados os canais de entrada (Lin, Win) e de saída (Lout, Wout), respectivamente. As próximas subseções descreverão com detalhes os blocos construtivos do roteador ParIS (Ibidem).
Figura 11. Organização do roteador ParIS.
Fonte: Zeferino, Santo e Susin (2004).
Controle de fluxo (IFC e OFC)
Os blocos de controle de fluxo regulam o tráfego de flits na interface do roteador realizando a tradução entre o protocolo de controle de fluxo do enlace e a técnica de controle de fluxo utilizada internamente pelo roteador. Dois blocos estão relacionados a essa tarefa (ZEFERINO; SANTO;
SUSIN, 2004):
IFC (Input Flow Controller): regula o tráfego de entrada de flits para os canais de entrada;
OFC (Output Flow Controller): regula o tráfego de saída de flits para os canais de saída.
FIFO Buffers
Os buffers são usados para armazenar flits de pacotes que estão temporariamente bloqueados dentro do roteador aguardando serem encaminhados. O uso de buffers é obrigatório nas portas de entrada e opcional nas portas de saída. A rede SoCIN utiliza elementos de memorização do tipo buffers FIFO (First-In First-Out), que compreende a alternativa mais simples e de menor custo.
Nesse tipo de implementação cada buffer possui um espaço de memória fixo em que os dados são lidos na mesma ordem em que são escritos (ZEFERINO, 2003, p. 45).
Escalonamento: roteamento e arbitragem
O escalonamento faz a distribuição de recursos dentro do roteador. São dois os tipos de controle (ZEFERINO; SANTO; SUSIN, 2004):
IC (Input Controller): realiza o escalonamento do canal de saída para um canal de entrada, ou seja: (i) analisa o cabeçalho dos pacotes que chegam associados ao buffer de entrada; (ii) executa o algoritmo de roteamento; e (iii) envia uma requisição (req) ao canal de saída selecionado solicitando o estabelecimento de uma conexão. O algoritmo de roteamento utilizado pode ser determinístico ou adaptativo. No roteamento determinístico, existe um único caminho permitido entre um determinado par emissor- receptor e, dessa forma, uma única porta de saída a ser utilizada pelo roteador ao encaminhar um pacote recebido. Já no roteamento adaptativo, podem existir caminhos alternativos utilizados para contornar pontos de congestionamento na rede. Por isso, o estado dos canais de saída precisa ser considerado, para então selecionar aquele que será requisitado no encaminhamento do pacote ao seu destinatário. Uma vez que a conexão requisitada é estabelecida, o bloco IC monitora a entrega do terminador do pacote (útimo flit) para baixar a sua requisição e solicitar o cancelamento da conexão pelo canal de saída;
OC (Output controller): Realiza o escalonamento de um canal de entrada para um canal de saída, ou seja: (i) realiza a arbitragem das requisições recebidas dos blocos IC selecionando uma delas com base em uma política de escalonamento; (ii) emite um sinal de permissão (grant) para confirmar a conexão e comandar as chaves que conectam o canal de entrada selecionado para o canal de saída; e (iii) baixa o sinal de ociosidade (idle) indicando que o canal não está mais disponível para uso (esta informação é considerada pelo bloco IC quando utilizar um algoritmo de roteamento adaptativo).
Quando a requisição é selecionada, a conexão entre os canais de entrada e de saída é estabelecida e mantida até que o bloco IC baixe a sua requisição (após a transferência do terminador do pacote). Quando isto ocorre, o bloco OC cancela a conexão e reativa o sinal de ociosidade (idle).
Crossbar distribuído (chaves ODS, OWS e IRS)
O roteador ParIS possui um crossbar distribuídos com múltiplas chaves que realizam a comutação de canais interconectando dados e sinais de controle de fluxo dos canais de entrada e saída sob o comando dos sinais de permissão (grants) emitidos pelos blocos OC. São três os tipos de chaves (ZEFERINO; SANTO; SUSIN, 2004):
ODS (Output Data Switch): conecta o buffer do canal de entrada selecionado pelo bloco OC com o buffer do canal de saída associado. Ou seja, realiza a conexão necessária para a transferência de dados entre os canais de entrada e de saída;
OWS (Output Write Switch): conecta o sinal de status (rok) do buffer do canal de entrada selecionado pelo bloco OC com o sinal de comando (wr) associado ao buffer de saída deste bloco. Ou seja, realiza parte da conexão necessária para regulação do tráfego interno entre os canais de entrada e de saída;
IRS (Input Read Switch): conecta o sinal de status (wok) do buffer do canal de saída requisitado e concedido ao sinal de comando (rd) do buffer de entrada associado. Ou seja, realiza a segunda parte da conexão necessária para regulação do tráfego interno entre os canais de entrada e de saída
Os buffers ODS e OWS de um dado canal de saída são comandados pelo sinal de permissão emitido pelo bloco OC associado. Entretanto, o bloco IRS de um dado canal de entrada é comandado pelo sinal de permissão emitido pelos blocos OC de todos os canais de saída que o canal de entrada permite requisitar (Ibidem).
Matriz de conexões
O bloco CPM (Crosspoint Matrix) é responsável por guiar o compilador de síntese VHDL para que ele implemente apenas as conexões permitidas pelo algoritmo de roteamento utilizado.
Dada uma estrutura de conexões permitidas pelo algoritmo selecionado, o bloco CPM vai amarrar em zero apenas as requisições e sinais de permissão relacionadas com as conexões proibidas, enquanto conecta diretamente os sinais associados com as conexões permitidas. Na Figura 12 é representada a matriz de cruzamentos de pontos para dois algoritmos de roteamento suportados pelo roteador ParIS: em (a) o roteamento XY (determinístico) em (b) o roteamento WF (parcialmente adaptativo) e em (c) para facilitar o entendimento das conexões é ilustrada a localização das portas de comunicação no roteador (ZEFERINO; SANTO; SUSIN, 2004).
Figura 12. Matriz de cruzamentos para roteamentos: (a) XY; (b) WF (West-First).
Fonte: Zeferino, Santo e Susin (2004).
Para o roteamento XY (Figura 12(a)), apenas 16 conexões representadas por círculos são permitidas. Por exemplo, é proibido para um canal de entrada de uma dada porta de comunicação requisitar o canal de saída da mesma porta. Além do mais, não é permitido ao canal de entrada na direção Y (Nine Sin) requisitar o canal de saída na direção X (Eoute Wout). O número de círculos em cada coluna da (Figura 12(a)) corresponde ao número de entradas nos blocos ODS e OWS associadas aos canais de saída. Por outro lado, o número de círculos em cada linha corresponde ao número de entradas no bloco IRS associadas com o canal de entrada (Ibidem).
O esquema de roteamento WF (West-First) é menos restritivo, pois permite conectar canais de entrada na direção Y paraEout(círculos preenchidos em cinza na Figura 12 (b)), mas não para Wout. Isso pode melhorar a utilização do canal, entretanto causa aumento nos custos de roteamento por conta do incremento do número de portas nas chaves associadas com as conexões Y para Eout (Ibidem).