• No results found

As sondas de rede têm papel fundamental na proposta de adaptação de rotas. Eles são nú- cleos IP passivos, visto que não provocam reação ou notificação. Sua função é a de observação do estado de utilização de canais da rede e a resposta a requisições de leitura e escrita feitas direta-

mente a eles a partir de pacotes específicos que trafegam pelo canal virtual CTRL. Os resultados capturados a partir das sondas de rede dão suporte à adaptação de rotas, detalhado nas seções a seguir. As sondas de rede localizam-se nas portas de saída de cada roteador, conforme ilustra a Fi- gura 5.6. O número de sondas de rede por roteador é equivalente ao número de portas de saída do mesmo, sendo então cada sonda de rede dedicada à observação de apenas um canal. Cabe ressal- tar que a presença da sonda de rede não exige a inclusão de sinais adicionais à interface entre os roteadores, o que garante equivalência àquela interface empregada nas especificações da NoC Hermes com canais virtuais.

Figura 5.6 – Localização de uma sonda de rede em um roteador. Em destaque uma sonda de rede da porta

West de um roteador central.

Definiram-se dois conjuntos de sinais, visto que uma sonda de rede é um núcleo IP de ob- servação de transmissão e de resposta a requisições de leitura e escrita. A interface deste núcleo IP é delineada na Figura 5.7.

Figura 5.7 Interface da sonda de rede.

A sonda de rede possui uma interface de observação e uma de operação, sendo esta última a interface por onde são atendidas requisições de leitura e escrita. Já a interface de observação é

utilizada para capturar os eventos associados à transmissão de dados nos canais de rede. A inter- pretação dos eventos de transmissão é descrita a seguir, baseando-se na Figura 5.8.

Figura 5.8 - Sinais da interface de observação analisados pela sonda de rede da MoNoC.

Dois estados podem ser identificados em um canal, quais sejam: (i) livre ou (ii) ocupado. No primeiro estado, não há requisição de transmissão, logo o canal não está sendo utilizado, conforme representado no intervalo A (i.e. [t0; t2) ) da Figura 5.8. No segundo estado, uma transmissão é re-

quisitada, conforme representado na Figura 5.8 nos intervalos B, C e D (i.e. [t2; t6) ). Durante o esta-

do de ocupado, distingue-se dois subestados, nos quais (i) o canal estava ocupado, mas não trans- mitindo, ou (ii) o canal estava ocupado transmitindo. Neste último subestado, a transmissão de um dado pelo canal de transmissão realmente ocorre, correspondendo ao final dos intervalos B, C e D (i.e. t3, t5 e t6).

A observação da ocorrência dos estados de ocupado e do subestado ocupado transmitindo são contabilizadas pelas sondas de rede. O evento que caracteriza a ocupação do canal relaciona uma borda de subida do sinal de relógio e o sinal tx com valor lógico ‘1’. O evento que caracteriza uma transmissão relaciona a borda de subida do sinal de relógio, o sinal tx e o sinal crédito com valor lógico ‘1’. Avaliando-se a Figura 5.8, e considerando os eventos especificados, contabiliza-se 4 ocorrências do estado ocupado e 3 ocorrências da ocupado transmitindo algum dado. Os valores contabilizados são acumulados dentro de uma janela de observação, definida por um número limi- tado de ciclos de relógio. A janela de observação é configurada em tempo de projeto, mas também pode ser modificada em tempo de execução a partir da interface de operação das sondas de rede. Os valores contabilizados são armazenados de três diferentes formas por janela de observação, quais sejam: (i) o valor corrente, (ii) o último valor contabilizado e (iii) a média de ocorrência den- tro das janelas de observação. O valor corrente é definido pelo número de ocorrências dos estados anteriormente citados dentro da janela de observação em curso. O armazenamento do último va-

lor e a computação da média ocorre sempre que finda uma janela de observação.

A interface de operação permite que sejam alteradas configurações iniciais da sonda de re- de (i.e. operação de escrita), tal como o tamanho da janela de observação definido em número de ciclos de relógio. Esta interface também permite a captura dos valores contabilizados de eventos relacionados a ocupação e transmissão por um dado canal (i.e. operação de leitura). O sinal co-

mando, pertencente à interface de operação, é composto por 4 bits. O bit mais significativo indica

se é requisitada uma operação de leitura (‘1’) ou escrita (‘0’). A implementação atual permite a captura de até 6 tipos distintos de valores contabilizados pelas sondas de rede, resultante da rela- ção entre as contabilizações dos estados de ocupado/transmitindo com o tipo de observação des- tas informações, ou seja, se o é valor corrente ou se é o último valor avaliado ou se é a média. Quanto à escrita, duas operações são possíveis. A primeira diz respeito à atualização da janela de observação, conforme já citado. A segunda permite alterar os canais virtuais que devem ser consi- derados quando da contabilização da ocorrência de eventos de ocupação e transmissão. Por pa- drão, dado que adaptação de rotas ocorre apenas nos canais AdaptA e AdaptB conforme será visto a seguir, em tempo de projeto define-se que apenas os canais virtuais de prioridade média devem ser observados. As requisições de operação com a sonda de rede somente têm efeito se o sinal

habilita operação estiver com valor lógico ‘1’. Na MoNoC, as requisições de operação com as son-

das de rede são resultado da interpretação de pacotes especiais que trafegam pela rede, mais pre- cisamente pelo canal virtual CTRL.

Todo pacote que trafega pelo canal virtual CTRL e que tem por objetivo realizar operações com as sondas de rede contém no primeiro flit do corpo do pacote o bit menos significativo carre- gando o valor lógico ‘1’. A estrutura destes pacotes é ilustrada na Figura 5.9. O segundo bit menos significativo é reservado para a sinalização entre os mecanismos de adaptação de rota, sendo seu uso explorado nas próximas Seções. O comando, definido em 4 bits, fica armazenado entre os bits 5 e 2. No caso de uma operação de escrita, o dado encontra-se no próximo flit do corpo do pacote. No caso de uma leitura, o segundo flit contém um índice/endereço a ser utilizado pelo canal virtual CTRL para o controle no armazenamento do valor proveniente da operação requerida.

Corpo Cabeçalho 0 x F F F F ... 0 x 0 1 2 3 0 x 0 0 0 4 00 0 000 1 000 0 1 0 0 00 Comando 0 x 0 A 0 A ... 0 x 0 0 2 1 0 x 5 0 5 0 Requisita operação com o monitor de rede LSB

MSB

Figura 5.9 - Estrutura de um pacote para operação com as sondas de rede.

A fim de que não sejam alterados parâmetros de sondas de rede, deve-se garantir que o bit menos significativo do primeiro flit do corpo de um pacote que trafega pelo canal virtual CTRL, contenha valor lógico ‘0’. O objetivo do emprego deste tipo de operação (i.e. leitura e escrita) com as sondas de rede é de garantir uma forma genérica e básica de interação com os mesmos, pro- vendo mecanismos para sua programação, por exemplo.