2. M˙IKROS¸ER˙IT ANTENLER
2.4. Ac¸ıklı˘gı Daralan Yarık Antenler (ADYA)
2.4.1. Ac¸ıklı˘gı do˘grusal daralan yarık antenler (ADODYA)
Na etapa de programação, um novo pacote foi desenvolvido, contendo apenas a sequencia de instruções que a aplicação dataflow vai executar, de modo que, o pacote trafega pela rede IPNoSys, programando cada RPU. Quando o pacote de instruções chegar nas RPUs, estas não o executam, apenas armazenam com o tipo de instrução que estiver no cabeçalho do pacote. Com isso, as RPUs ficam programadas para executar os dados que chegarem ao pacote de dados.
Supondo que uma aplicação tenha 10 instruções, e para executar essa aplicação será necessário injetar o pacote com as operações dessas instruções. Na Figura 16(2º) o pacote é injetado inicialmente no canto superior esquerdo, sua primeira instrução vai programar a 1ª RPU, identificou que é uma operação de subtração, Figura16(3º). Então, programa na memória da RPU, que ela deve executar operações de subtração. Depois, descarta a instrução do pacote, e encaminha o pacote para a próxima instrução.
42 Figura 16. Etapa de Programação da rede IPNoSys Dataflow - Parte1
A Figura16(4º), mostra que a 2ª RPU vai executar operações de soma, pois a instrução do pacote de programação tinha o operando para realizar adição. Em seguida, retira a instrução corrente, e encaminha o pacote para configurar a próxima RPU. Todo o processo de programação da rede IPNoSys para conseguir executar a aplicação com 10 instruções é apresentado nas Figuras 16, 17 e 18.
43 Figura 17. Etapa de Programação da rede IPNoSys Dataflow - Parte2
44 Figura 18. Etapa de Programação da rede IPNoSys Dataflow - Parte3
Quando o pacote de programação chegar ao fim, Figura 18(12º), as 10 RPUs estarão programadas, aguardando o pacote com os dados. Essa etapa será explicada na seção de execução.
4.3. EXECUÇÃO
Na etapa de execução, um novo pacote foi desenvolvido, contendo apenas os dados das instruções que a rede IPNoSys dataflow vai executar, já que as RPUs necessárias para execução da aplicação já estão programadas, aguardando pelos dados. A Figura 19(1º) apresenta o pacote de execução sendo injetado, em seguida, Figura 19(2º), os dados são executados na 1ªRPU, ou seja, os dados são os operandos necessários para ocorre a operação de subtração que aquela RPU esta programada para executar.
45 Figura 19. Etapa de Execução da rede IPNoSys Dataflow – Parte1
Todo o processo de execução de uma aplicação dataflow com 10 instruções na rede IPNoSys DataFlow é apresentado nas Figuras 19, 20 e 21. Percebe-se pelas figuras, que cada dado contido no pacote de execução passa pela RPU sendo executado, utilizando as instruções contidas na memória de cada RPU, e cada dado é executado 10 vezes, como se fosse um laço que executa 10 instruções 10 vezes.
46 Figura 20. Etapa de Execução da rede IPNoSys Dataflow – Parte2
47
5. RESULTADOS
Uma solução para melhorar o desempenho dos processadores é a construção de software e hardware que permitam a exploração da execução de tarefas em paralelo, aumentando o desempenho geral do sistema. Segundo (DUNCAN, 1990), entre as diversas maneiras de se implementar o paralelismo em computadores, as arquiteturas baseadas em fluxo de dados parecem ser uma excelente alternativa para ajudar as arquiteturas usuais em aplicações especificas com processamento intenso de dados.
A IPNoSys proporciona um paralelismo em nível de instrução, pois ela possui vários roteadores com poder de processamento: dentro de cada processador há uma ULA. As aplicações ideais para aproveitar esse paralelismo em nível de instrução, são as aplicações SDF.
Para avaliar a rede IPNoSys foi preciso comparar como seria a execução de uma aplicação SDF com paralelismo em nível de pacotes e como seria sua execução em nível de instruções. Na execução em nível de instrução, as n instruções de uma aplicação executam n vezes, como se estivessem dentro de um laço.
5.1. AVALIAÇÃO
As simulações deste trabalho foram realizadas na rede, utilizando o simulador SystemC da rede IPNoSys. Todos os códigos das aplicações foram descritas na Linguagem de Descrição de Pacotes e submetidos ao assembler da IPNoSys. O assembler gerou o código objeto da aplicação, que foi utilizado como entrada do simulador gerando os resultados.
O primeiro experimento apresenta a quantidade de ciclos necessários para executar instruções, variando a quantidade de instruções presente em cada pacote e a quantidade de instruções executadas em cada RPU. Percebe-se nos gráficos das FIGURAS 22 e 23, com relação ao tempo de execução, que o desempenho da aplicação se mantém praticamente constante quando o número de instruções por pacote cresce até 8, independente do número de instruções executadas em cada RPU, e do número de pacotes presente na rede. A partir do número de instruções por pacote com valor 16, o tempo de execução vai crescendo cada vez que o tamanho do pacote é aumentado.
Com relação aos resultados apresentados a seguir, o desempenho da rede não aumenta quando o paralelismo é incrementado. Com o aumento dos pacotes, a quantidade de ciclos gastos continua constante para a mesma configuração. A performance da rede é estável, apresentando crescimento de ciclos linear em função da variação de instruções.
48 Figura 22. Tempo de Execução da Aplicação SDF: (a) 1 Pacote; (b) 2 Pacotes
49 Figura 23. Tempo de Execução da Aplicação SDF: (a) 3 Pacotes; (b) 4 Pacotes
50 O impacto da potência dissipada pode ser verificado nos gráficos das Figuras 24 e 25, variando o número de pacotes que são injetados na rede IPNoSys, a quantidade de instruções executadas em cada RPU e a quantidade de instruções presente nos pacotes. Nas execuções para as versões até 16 instruções por pacotes, a potência é sempre menor que 1, independente do número de pacotes percorrendo a rede e da quantidade de instruções executadas em cada RPU. Logo, quando se tem a mesma configuração, a potência dissipada em todos os testes apresenta crescimento linear.
51 Figura 25. Potência da Rede IPNoSys: (a) 3 Pacotes; (b) 4 Pacotes.
52 Observa-se que a estimação de potência encontrada nos experimentos acima de 32 instruções tem um aumento proporcionalmente muito mais significativo que aquelas dissipadas, pelos experimentos com menos de 32 instruções por pacotes.
Percebe-se, também que a potência é praticamente a mesma entre as implementações sequenciais e entre as paralelas, pois a quantidade de total de potência é determinada pela potência dissipada nas RPUs, e não apenas pela transmissão do pacote pela rede. E com o aumento de pacotes, a quantidade de energia gasta não cresce linearmente em função do número de instruções, em razão do crescimento linear apresentado pelos resultados.
Os resultados serviram para comprovar que a execução localizada aumenta o desempenho, pois ocorre uma menor comunicação, pois tal procedimento permite que as próximas instruções continuem sendo executadas na mesmo RPU, enquanto não é permitido transmitir o pacote. Quando ocorre a execução localizada, a IPNoSys tem a execução dos pacotes em nível de instrução. Tanto que foi analisado, que ao aumentar o número de instruções por RPU, ocorre ganho de desempenho, pois existe uma menor quantidade de comunicação entre os componentes da rede IPNoSys.
Como foi observado que a execução da IPNoSys é sequencial queremos aproveitar o potencial de paralelismo na rede, para fazer o paralelismo à nível de instrução. Não só a nível de pacotes como é na original. E para aproveitar o paralelismo da rede IPNoSys e o paralelismo a nível de execução é interessante que a aplicação seja a SDF. Para comprovar o ganho de desempenho das aplicações SDF, executadas como paralelismo à nível de instrução, será feita uma analise, de maneira analítica como equações baseadas na tese de Zeferino (ZEFERINO, 2003).
5.2 RESULTADOS ANALÍTICOS
Nesta sessão são apresentados modelos analíticos baseados em (ZEFERINO, 2003), para a estimativa de desempenho de arquiteturas de comunicação para a rede IPNoSys. As equações foram desenvolvidas para calcular de maneira analítica, latência em redes em chip, que são quantos ciclos leva para executar instruções dos pacotes.
Tomando como base as equações de (ZEFERINO, 2003), foi possível modificá-la para medir latência na rede IPNoSys. Ou seja, as equações foram adaptadas para IPNoSys original com paralelismo à nível de pacotes e a IPNoSys SDF com paralelismo à nível de instruções, onde elas serão demonstradas e comparadas.
Para obter as equações que propiciam o modelo de latência é preciso avaliar o tempo de transferência do pacote e o de arbitragem (Ta). A equação da latência, ao transmitir com
um pacote com f flits no barramento é expressa da seguinte maneira:
Tpct,bus = Ta + (Tbus X f) (7.1) Considerando que o barramento ajusta um clock para transmitir cada flit de um pacote
53 da IPNoSys, onde sua largura é igual a largura do seu canal de comunicação (Wdata). DUA, 97
apresenta um modelo para a estimativa da latência em NoCs baseadas no chaveamento
wormhole, que foi utilizado para obter um modelo de latência com carga zero para as redes de
interconexão. Onde, a latência alcançada ao transmitir um pacote com f flits entre a fonte e o destino separados por d enlaces do tipo RPU-RPU com canal de dados igual a Wdata em (7.2).
tpct,wormhole = (tr + ts + tw) x d + max(ts,tw) x [M/Wdata] (7.2)
Considerando que a primeira expressão é composta pela soma dos clocks de três tempos (tr, ts e tw) vezes d, com ela é possível calcular a latência para transferir o cabeçalho do pacote. Onde o primeiro tempo, tr, representa o tempo que o roteador demora para realizar o escalonamento do pacote. O atraso para transmissão dos pacotes, ocasionado pelos canais existentes nos roteadores, é dado pelo tempo, ts. O último tempo, tw, associa os atrasos para transmissão dos pacotes pelos canais de enlaces.
Observa-se em (7.2), uma expressão max(ts,tw) que indica o máximo entre os atrasos de propagação dos pacotes. O último termo, [M/Wdata], onde M é o tamanho do pacote, que indica o número de flits do pacote e, W é a largura do canal de comunicação, que é a mesma quantidade bits que cada flit apresenta.
De acordo, com o algoritmo spiral complement é aceitável alcançar o número de enlaces, d, desde a fonte até o destino. Então, é necessário adaptar a equação (7.2) para estimar em alto nível o desempenho em comunicação da rede IPNoSys.
A equação (7.2), será adaptada para a IPNoSys original. De posse da equação adaptada para IPNoSys original, ela será adaptada para possibilitar a captura do paralelismo à nível de instrução da IPNoSys SDF, onde será possível obter além do tempo gasto para transmitir o pacote, o tempo gasto para executar cada instrução contida nos pacotes.
A equação encontrada foi derivada de uma equação que calcula o tempo para transmitir a mensagem entre fonte e destino, na rede. Como a rede IPNoSys já é também processamento, no instante em que for adaptada uma equação, o resultado da equação, vai indicar o tempo necessário para transmissão do pacote e, além disso, indica o tempo da execução da aplicação, pois ao transmitir a mensagem a aplicação também está sendo executada.
Na IPNoSys original, o número de enlaces d, é a distancia da origem até o destino que pode ser encontrado em função do tamanho da rede, do tamanho do pacote e do roteamento
spiral complement, quando ocorre o auto bloqueio e inicio da execução localizada. Com esses
dados, será possível saber em quantas RPUs o pacote vai passar e qual RPU o pacote vai terminar. Enquanto que o destino na IPNoSys com paralelismo à nível de instrução, é onde inicia a execução localizada que vai variar de acordo com o tamanho da rede. Nessa forma, também será encontrado o paralelismo máximo em função do tamanho da rede, pois quando ocorre o bloqueio a execução fica localizada e não vai existir mais roteadores no caminho, ou
54 seja, não vai existir mais transmissão do pacote entras RPUs. O limite de paralelismo máximo é alcançado quando não houver mais transmissão dos pacotes pelas RPUs e sua execução começar a ser localizada.
No flit da IPNoSys tem código de operação e dado, assumindo que o tamanho do flit é a quantidade de bits do código das operação e dado, que é o tamanho total que é a largura do canal. Cada flit, que corresponde uma instrução e seus operandos, leva um ciclo para executar. As duas IPNoSys executam instruções da mesma maneira e o tempo que cada uma leva para executar cada instrução é o mesmo, a diferença é como o pacote flui pela rede e, apresenta ou não paralelismo à nível de instrução, pois em vez de ter uma instrução executando em sequencia, são executados as instruções em paralelo.
Considerando, a mesma configuração da rede IPNoSys que utiliza dimensões 4x4, devido ao algoritmo de roteamento spiral complement. Para encontrar o número de enlaces,
d, foi determinado que r é o tamanho da rede (ou seja, r = 4), o refinamento na rede inteira
será verificada na equação (7.3). Observa-se que o maior número possível de RPUs que uma rede 4x4 permite pode ser encontrado pela equação abaixo.
despiral = (1 x r + (2 x (r -1)) + (4 x (r - 2)) + (4 x (r - 3))) (7.3)
A Figura 26 ilustra como foi feita a equação que verifica a quantidade máxima de RPUs que o pacote percorre para completar todo o espiral da rede com topologia 4x4.
A equação (7.3) foi adaptada para obter a equação (7.4), onde é calculado o número mínimo de RPUs que um pacote pode percorrer para que já inicie a execução localizada, onde ocorre o bloqueio da rede por ele mesmo. Observa-se na FIGURA 27 que o d, em situações em que ocorre bloqueio, é igual a quantidade de RPUs percorridos até ele se bloquear.
dbloqueio = (1 x r + (2 x (r -1)) + (3 x (r -2))) (7.4)
Em situações onde a quantidade de flits do pacote for menor que dbloqueio, o valor de d vai ser a quantidade de flits do pacote, ou seja, podendo ser encontrado por [M/Wdata], onde
M é o tamanho do pacote e, W é a largura do canal de comunicação, que a mesma quantidade
bits que cada flit apresenta.
Como se quer comparar o paralelismo original da IPNoSys, que é a nível de pacotes com o paralelismo à nível de instrução, a utilização de apenas um pacote já é o suficiente para analisar o seu auto bloqueio.
A equação utilizada para encontrar o tempo de execução do pacote na IPNoSys original (7.5) e na IPNoSys Data Flow (7.6) são as seguintes:
t = [((tr + ts + tw) * D + (max(ts,tw)))] * ((M/W) -1) (7.5)
55 Figura 26. Quantidade de RPUs percorrido no Spiral Complement
Os resultados que serão apresentados a seguir demonstram o ganho de desempenho da IPNoSys Data Flow devido ao paralelismo à nível de instrução obtido, permitindo que uma instrução possa ser executada várias vezes, apenas seguindo o caminho de execução. Ao contrário, da IPNoSys original, onde uma instrução só consegue ser executada várias vezes, se ela for várias vezes reinjetada.
56 Figura 27. Roteamento com bloqueio da rede
A FIGURA 28 mostra o gráfico dos resultados analíticos de uma aplicação SDF, executando na IPNoSys original e a mesma aplicação, executando na IPNoSys com paralelismo à nível de instrução. No eixo vertical à esquerda, é mostrado o número de ciclos para a entrega dos pacotes e, o eixo horizontal apresenta o número de instruções contida em cada pacote.
57 Figura 28. Desempenho estimado para variações da Rede IPNoSys 4x4
Nota-se, que na IPNoSys Data Flow é consumido menos ciclos para a execução de todas as instruções, independente da quantidade de instruções contidas no pacote. Para obtenção desse gráfico, os parâmetros utilizados foram: tr, ts e tw = 1, Wdata=32 bits e M = 2,
4, 8, 16, 32, 64, 128 e 254 instruções por pacotes.
No gráfico da figura 28, é possível verificar que foram gastos mais ciclos na IPNoSys original, do que na IPNoSys dataflow para executar a mesma quantidade de instruções, isso ocorre porque o modelo de execução da IPNoSys dataflow utiliza o paralelismo a nível de instruções, onde as instruções são executadas em paralelo, como se fosse um pipeline. Enquanto, as instruções na IPNoSys original apresenta um modelo de execução, onde as instruções são executadas de maneira sequencial, provocando um gasto enorme de tempo para executar a mesma quantidade de instruções.
Considerando, a configuração da rede IPNoSys que utiliza dimensões 6x6. Para encontrar o número de enlaces, d, foi determinado que r é o tamanho da rede (ou seja, r = 6), o refinamento na rede inteira será verificada na equação (7.7). Observa-se que o maior número possível de RPUs que uma rede 6x6 permite pode ser encontrado pela equação abaixo.
despiral = (1 x r + (2 x (r - 1)) + (4 x (r - 2)) + (4 x (r - 3)) + (4 x (r - 4 )) + (4 x (r - 5))) (7.7) Para a rede em chip com topologia 6x6, o d para situações em que ocorre bloqueio é igual a quantidade de RPUs percorridos até ele se bloquear. A mesma equação apresentada em (7.4) é utilizada, a diferença que o valor de r, não é mais 4, e sim, 6. Os resultados
58 analíticos da comparação das estimativas de latência para as redes IPNoSys Original e Data
Flow são mostrados na FIGURA 29.
Figura 29. Desempenho estimado para variações da Rede IPNoSys 6x6
Segundo as equações 7.5 e 7.6 que foram mostradas anteriormente, foi possível descobrir o tempo gasto para um pacote ser executado na IPNoSys original (7.5) e na IPNoSys Data Flow (7.6). Com isso, pode-se perceber na figura 27 uma comparação entre a IPNoSys desse modelo de execução que foi proposto, e a IPNoSys original.
Como pode ser observado, ocorreu um ganho de desempenho para IPNoSys dataflow, independente da quantidade de instruções presente no pacote inserido na rede para execução, devido a paralelismo baseado em instruções presente na IPNoSys dataflow. Ou seja, se existir 64 instruções no pacote, elas serão executadas em sequencial na IPNoSys original, enquanto que na IPNoSys dataflow elas será executadas em paralelo, proporcionando uma redução, de aproximadamente, 10 mil ciclos, como verificado na gráfico da figura 29.
59
6. CONSIDERAÇÕES FINAIS
6.1. CONCLUSÕES
Devido ao surgimento dos processadores com múltiplos núcleos, esforços para tornar viável o aumento das taxas de desempenho focam em arquiteturas que conseguem explorar o paralelismo. Como consequência, diversas pesquisas foram feitas para solucionar problemas derivados da inserção de vários núcleos no único chip. Segundo a literatura, foi preciso estudar novas abordagens de arquitetura em oposição às soluções tradicionais de interconexão.
As Networks on Chip tem se apresentado como a principal alternativa de comunicação dos núcleos de processamento e outros periféricos nos processadores many core, pois exploram desempenho em um contexto paralelo, com vários núcleos disponíveis. E um dos principais motivos de queda de desempenho são as próprias redes de interconexão. À medida que são intensamente usadas, elas causam contenções e atrasos de pacotes, tal latência acarreta no aumento do tempo necessário para executar uma determinada aplicação. No mesmo sentido, é preciso que a NoC apresente uma arquitetura e uma largura de banda que privilegie a vazão de pacotes.
Durante o estudo das arquiteturas de comunicação, observou-se que a rede IPNoSys apresenta um aumento de desempenho significativo em relações as outras NoCs, devido a junção das funções de comunicação e processamento em um único sistema. Também foi realizado um estudo a respeito do contexto do trabalho, com definições e classificações das principais variações do MoC Data Flow.
Devido as suas propriedades particulares, a rede IPNoSys foi utilizada para executar aplicações orientadas a dados. Essas aplicações foram escolhidas após um estudo dos diferentes comportamentos dos modelos de computação a fluxo de dados. Disso, buscou-se analisar a desempenho mediante a execução de aplicações puramente orientadas a dados.
Os experimentos possuem tamanhos diversificados em relação a quantidade de instruções e de pacotes, para poder avaliar os fins da computação na rede IPNoSys. Além dessas alterações, também foram realizados testes variando o número de instruções executadas em cada RPU.
A modificação da arquitetura da rede IPNoSys foi proposta, através da utilização do paralelismo à nível de instrução. A modificação foi possível devido à rede possuir vários roteadores interligados e dentro de cada um deles tem uma ULA para execução das operações entre os dados das instruções do pacote.
Os testes de simulação de desempenho e potência desenvolvidos neste trabalho permitiram obtenção de resultados conclusivos a respeito da execução de aplicações orientada à dados na rede IPNoSys. Foi possível observar com o aumento de pacotes, que a quantidade de ciclos gastos continua constante para a mesma configuração. O desempenho na rede é estável, apresentando crescimento de ciclos lineares em função da variação de instruções. A potência total dissipada em todos os testes apresentou crescimento linear para a mesma configuração. Logo, com o aumento de pacotes, a quantidade de energia gasta não cresce
60 linearmente em função do número de instruções, pois a execução localizada aumenta o desempenho devido a uma menor comunicação. Ou seja, foi observado um ganho elevado de desempenho, pois várias instruções executam em paralelo e quando maior a rede, mais instruções executam em paralelo, até o limite que o pacote se auto bloqueia devido ao algoritmo spiral complement.
Deve-se destacar que a comparação do paralelismo original da IPNoSys, que é a nível de pacotes com o paralelismo à nível de instrução, foi feito por meio da execução de aplicações com mesma configuração. Verificou-se que o desempenho da execução, nas redes