2. CADRE THÉORIQUE
2.4. L A PART IDENTITAIRE DE L ’ APPRENTISSAGE
O presente projeto tem como objetivo apresentar uma estratégia de roteamento adapta- tiva que reduz o congestionamento da uma rede NoC. A plataforma utilizada para este projeto foi a plataforma Innity, como é detalhado no capítulo 2.4. A gura 4.3 apresenta como estão distribuídos os componentes da plataforma.
Figura 4.3 Plataforma Innity 1
Observe que a rede é formada por núcleos de processamento, que são apresentados
na imagem como core, por roteadores, que são representados na imagem por um círculo preenchido por um x, e por dispositivos de entrada e saída, que são representados pelo DMA, UART, Timer e controlador de interrupção APIC. Esta plataforma difere das plataformas utilizadas nos trabalhos apresentados no capítulo 3, pois os trabalhos [9] e [8] utilizaram somente a rede NoC desenvolvida em VHDL e o trabalho [4] utiliza uma plataforma MPSoc híbrida com processadores e memórias acoplados a rede NoC. O núcleo de processamento da plataforma Innity é apresentada na gura 4.4.
Figura 4.4 Núcleo de Processamento Innity2
de interrupções para os LAPICs (Local Advanced PICS), que são responsáveis por in- terromper o processador. O barramento exclusivo para interrupções garante uma maior escalabilidade ao sistema com o tempo de resposta por interrupção conhecido. Por m, a arquitetura possui um barramento de periféricos conectado diretamente aos processado- res, onde todos os periféricos (TIMER e UART) estão conectados. Estes periféricos são mapeados em memória. A coerência é realizada com a utilização de diretórios, sendo um para cada banco de memória. Os diretórios armazenam estado e a localização dos dados por ele gerenciados. Por m, cada núcleo possui o seu banco de memória que, em con- junto com outros bancos, formam a memória do sistema, formando um endereço global para os bancos. A cache L2 e a memória são compartilhadas por todos os núcleos através da NoC [19]. Como pode ser visualizado na gura 4.3 a NoC realiza a conexão entre os núcleos de processamento e para realizar a tradução da mensagem para um formato que a rede possa encaminhar é utilizada a interface de rede que foi apresentada na seção 2.4.4.1.
Para o desenvolvimento deste projeto a interface de rede apresentada na seção 2.4.4.1 foi modicada. Foi adicionado a numeração dos pacotes nas threads cacheIN e dorectoryIN, para que fosse possível ordenar os pacotes que trafegam na rede, dado que o protocolo de cache precisa que os dados estejam na seqüencia que foram enviados e o algoritmo adap- tativo não garante esta ordem. A interface de rede após as alterações pode ser observada na gura 4.5. Também foi adicionado um módulo que é responsável pela ordenação dos pacotes, o reorder buer. Este módulo recebe o pacote de dados vindo do roteador e verica a numeração do pacote. Caso esteja na ordem, encaminha o dado para a thread
SoCIN que faz a tradução dos sinais para procotolo de tal forma que o processador possa processar. Senão, o pacote é armazenado no buer de reordem até que o próximo pacote que está na ordem chegue ao reorder buer. Observe que todo o pacote é armazenado no buer de reordem, caso ele não esteja na ordem.
Cada reorder buer possui para cada roteador da rede, com a exceção do próprio rote- ador, um buer de reordem dedicado.O trabalhos apresentados no capítulo 3 também possuem buer de reordem localizados na interface de rede.
Figura 4.5 Interface de Rede Innity Modicada
Para que fosse possível manter a ordem dos pacotes e assim a coerência de cache ser mantida, o pacote que trafega na rede NoC foi alterado para conter a numeração do pacote. O novo formato do pacote é apresentado na gura 4.6.
Fazendo a comparação com o pacote anterior que trafegava na rede, apresentado na seção 2.4.4.2, as modicações foram: adição do it que corresponde a numeração do pacote e adição do campo congestionamento no espaço do campo HLP no cabeçalho do pacote. Foi adicionado o campo congestionamento no cabeçalho do pacote, este campo está representado po CS X (status de congestionamento X - sigla em inglês) e CS Y (status de congestionamento Y - sigla em inglês) na gura 4.6.
O campo CS X representa o congestionamento global e é armazenado em 3 bits, já o campo CS Y representa o congestionamento local e é armazenado em 3 bits. Observe que
Figura 4.6 Novo Formato Pacote NoC
os sinais que fazem a ligação entre os roteadores são representados com 3 bits, mas isto só é possível, porque o tamanho do buer de entrada dos roteadores é 4, então no pior caso, com o buer totalmente lotado, só é necessário a representação do valor 4 (0,1,2,3 e 4), que pode ser realizado com 3 bits. Caso o buer de entrada do roteador seja ampliado, estes bits que representam o congestionamento local precisam ser ampliados de tal forma que se consiga representar os novos valores possíveis. O pacote utilizado pelo roteador ParIS permite o aumento do número de its que compõem o cabeçalho, desta forma, o aumento do número bits para a representação não será um empecilho para a utilização desta técnica. O congestionamento local é obtido analisando a quantidade de pacotes que estão armazenadas dentro do buer de entrada de cada porta dos roteadores vizinhos ao roteador. A gura 4.7 apresenta um exemplo da conexão dos sinais utilizados no cálculo do congestionamento local.
O sinais CS Saida (CS saidaNorte, CS saidaSul, CS saidaLeste e CS saidaOeste) re- presentam os valores de quantos pacotes estão armazenados no buer de entrada de cada porta de entrada do roteador, já os sinais CS Vizinho (CS VizinhoNorte, CS VizinhoSul, CS VizinhoLeste, CS VizinhoOeste), representam os valores de quantos pacotes estão ar- mazenados no buer de entrada de cada porta de entrada dos vizinhos do roteador, como por exemplo, o CS VizinhoNorte que corresponde a saída enviada pelo roteador que está
Figura 4.7 Sinais Utilizados para Cálculo do Congestionamento Local
conectado a porta norte do roteador e o valor enviado por este sinal corresponde a quan- tidade de pacotes que estão armazenados no buer de entrada da porta de entrada deste roteador vizinho. Observe que a porta local, que está conectada à interface de rede, não possui nenhum destes sinais e não participa do cálculo do congestionamento local. Isto ocorre porque na porta local está conectada a interface de rede que possui um buer de reordenação para os pacotes fora de ordem. Se os pacotes estiverem na ordem, a inter- face de rede começará o processamento do dado imediatamente, desta forma não se faz necessário o armazenamento do pacote no buer do roteador.
O congestionamento global corresponde aos valores de congestionamento de cada um dos roteadores que o pacote passou até chegar ao seu destino. Assim, este valor corresponde a uma visão global do congestionamento a que o pacote foi submetido. O valor deste congestionamento é escrito no cabeçalho do pacote e dividido em dois campos, como já foi apresentado anteriormente. O valor de CS Y é obtido pelo seguinte cálculo:
representado em 2 bits e para isto é necessário a utilização de uma tabela de conversão como poder ser observado na seção 3.3.2.4. Esta forma de representação reduz o número de bits utilizados, mas não apresenta o valor a que o congestionamento está e sim um intervalo. Esta representação por ser mínima, diculta os cálculos do congestionamento e necessita da utilização de números fracionários. Portanto, neste trabalho foram utilizados mais bits para representar o congestionamento, mas o cálculo do congestionamento ca mais simples e utiliza somente inteiros.
Para a representação do congestionamento CS X, que equivale ao congestionamento glo- bal dentro de uma região, é necessário compreender a divisão da rede.
A rede NoC foi dividida nas regiões: nordeste, sudeste, noroeste e sudoeste e desta forma o congestionamento pode ser mensurado por regiões. Este conceito foi obtido do trabalho [9], e para Daneshtalab o valor do congestionamento global é utilizado para escolher qual o pacote que será enviado primeiro no roteador. Para este trabalho, o valor do conges- tionamento global serve para dar uma visão mais geral do congestionamento da rede ao algoritmo de roteamento. Para o cálculo do congestionamento global foi adicionado ao roteador uma tabela onde são adicionados os valores de congestionamento por área. A atualização dos valores de congestionamento por área é realizado fazendo-se a média entre o valor preexistente na tabela com valor obtido do cabeçalho do pacote que chegou. Esta tabela foi adicionada no módulo IC do roteador ParIS. Na tabela 4.1 é apresentado um exemplo de como a tabela armazena os valores.
Tabela 4.1 Exemplo de Quadro de Congestionamento Área Valor do Conges- tiona- mento Nordeste 2 Noroeste 1 Sudeste 0 Sudoeste 3
pois algumas áreas já possuem valores de congestionamento diferentes de zero. A região Sudoeste é a mais congestionada, pois possui o valor 3 como valor de congestionamento global. Com o entendimento das regiões é possível avaliar o cálculo do congestionamento CS X, observe a equação (4.2):
CSX = (CGN ordeste + CGSudeste + CGN oroeste + CGSudoeste)/4 (4.2) O algoritmo utilizado para atualizar a tabela de congestionamento global será apre- sentado na seção 4.4. Para que o pacote chegue ao seu destino nal é necessário que os roteadores encaminhem a mensagem até que a mesma chegue ao roteador que está acoplado a interface de rede a que o pacote se destina. O algoritmo responsável por esta atividade é o algoritmo de roteamento e neste trabalho foi utilizado o algoritmo Odd- Even, que é um algoritmo adaptativo. O funcionamento deste algoritmo é apresentado na seção 4.3. Como os algoritmos adaptativos fornecem como resposta várias rotas que o pacote pode seguir, neste trabalho foi utilizado como critério de escolha a rota gerada pelo algoritmo Odd-Even, o qual minimiza o congestionamento global e local da rede. Assim o roteamento decidirá o melhor caminho baseado nas características da rede. O cálculo utilizado para a obtenção do congestionamento utilizado como critério de escolha do algoritmo Odd-Even é apresentado na seção 4.4.1. A rede SoCINfp que utiliza o rotea- dor ParIS, já possuía o algoritmo Odd-Even implementado, portanto só foram necessários
Adição das portas de comunicação com os roteadores vizinhos; No módulo FIFO de entrada do roteador ParIs:
Escrita do valor de congestionamento global no cabeçalho do pacote.
Os módulos internos do roteador ParIS foram apresentados na seção 2.4.3. Nesta seção é possível observar o diagrama e onde foram realizadas cada uma destas alterações.