O Problema do Mapeamento Heurísticas de mapeamento de tarefas em MPSoCs baseados em NoC

Tamanho: px
Começar a partir da página:

Download "O Problema do Mapeamento Heurísticas de mapeamento de tarefas em MPSoCs baseados em NoC"

Transcrição

1 Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento de Informática e Matemática Aplicada Bacharelado em Ciência da Computação O Problema do Mapeamento Heurísticas de mapeamento de tarefas em MPSoCs baseados em NoC Hiago Mayk Gomes de Araújo Rocha Natal-RN Junho de 2017

2 Hiago Mayk Gomes de Araújo Rocha O Problema do Mapeamento Trabalho referente a atividade de Monografia de Graduação vinculada ao Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da Terra da Universidade Federal do Rio Grande do Norte como requisito de cumprimento da referida atividade. Orientadora: Profa. Dra. Monica Magalhães Pereira Co-orientadora: Profa. Dra. Sílvia Maria Diniz Monteiro Maia Universidade Federal do Rio Grande do Norte UFRN Departamento de Informática e Matemática Aplicada DIMAp Natal-RN Junho de 2017

3

4 Monografia de Graduação sob o título O Problema do Mapeamento apresentada por Hiago Mayk Gomes de Araújo Rocha e aceita pelo Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da Terra da Universidade Federal do Rio Grande do Norte, sendo aprovada por todos os membros da banca examinadora abaixo especificada: Profa. Dra. Monica Magalhães Pereira Orientadora Departamento de Informática e Matemática aplicada - DIMAp Universidade Federal do Rio Grande do Norte - UFRN Profa. Dra. Sílvia Maria Diniz Monteiro Maia Co-orientadora Departamento de Informática e Matemática aplicada - DIMAp Universidade Federal do Rio Grande do Norte - UFRN Prof. Dr. Márcio Eduardo Kreutz Departamento de Informática e Matemática aplicada - DIMAp Universidade Federal do Rio Grande do Norte - UFRN Prof. Dr. Edgard de Faria Corrêa Departamento de Informática e Matemática aplicada - DIMAp Universidade Federal do Rio Grande do Norte - UFRN Natal-RN, Junho de 2017

5 À minha mãe.

6 Agradecimentos Agradeço primeiramente a Deus por toda força e coragem para permanecer de pé em meio às dificuldades da vida. À minha mãe, Maria Marta, que está comigo em todos os momentos, sempre me dando o seu carinho e amor, apesar de eu não merecer tanto. Aos meus amigos e familiares que contribuíram direta ou indiretamente para a conclusão deste trabalho. Em particular, agradeço às cobaias da turma de do Bacharelado em Tecnologia Informação (BTI), Thiago Soares, Sidemar Fideles, Lucas Simonetti, Ronnypetson Souza, Stefano Loss e muitos outros, que sem a ajuda deles, mesmo que mínima, eu não chegaria até aqui. Agradeço também à todos os professores que me acompanharam durante a graduação, em especial à Profa. Monica, pela sua tão atenciosa orientação e amizade, e à Profa. Sílvia por aceitar o convite de trabalhar neste projeto que mescla conceitos de duas diferentes áreas da Ciência da Computação. Sem a orientação delas este trabalho não seria possível. Ao infinito e além...

7 Dai-me, Senhor, o que Vos resta. Dai-me aquilo que os outros não querem. Mas dai-me, também, a coragem, a força e a fé. Oração do Paraquedista

8 O Problema do Mapeamento Autor: Hiago Mayk Gomes de Araújo Rocha Orientadora: Profa. Dra. Monica Magalhães Pereira Co-orientadora: Profa. Dra. Sílvia Maria Diniz Monteiro Maia Resumo Com o avanço na tecnologia de fabricação de circuitos integrados, possibilitado pela diminuição do tamanho dos transistores, assim como previsto por Gordon Moore em 1975, tornou-se possível a criação de sistemas cada vez mais complexos em uma única pastilha de silício, denominados de Sistemas em Chip (SoC) que podem ser compostos por núcleos de processamento, memórias, dentre outros componentes. Contudo, devido ao aumento na complexidade das aplicações atuais, as quais em sua grande maioria, demandam mais poder de processamento e capacidade de execução simultânea de suas diferentes subpartes de processamento, foram desenvolvidos SoCs com múltiplos processadores, denominados de Sistemas em Chip Multiprocessados (MPSoCs), que tentam suprir tal necessidade das aplicações atuais. A comunicação entre os diferentes núcleos desses sistemas é dado por meio de arquiteturas de comunicação, as quais, as mais usadas ultimamente são as Redes em Chip (NoC) que entre outras vantagens, provêem o paralelismo nas comunicações. Devido à capacidade do MPSoC de executar aplicações em paralelo, surgem alguns desafios a serem tratados, tais como o problema de alocação, migração e escalonamento de tarefas. Neste trabalho, focamos no problema de alocação de tarefas, o qual é mais formalmente denominado de Problema do Mapeamento (MP). O MP consiste em identificar quais núcleos de processamento de um MPSoC são mais adequados para receber cada tarefa da aplicação. O MP pertence à classe dos problemas NP-Hard, com isso, não é conhecido um algoritmo de tempo polinomial que gere uma solução exata, tornando inviável a busca por soluções exatas para esse problema quando se trabalha com sistemas multicores com dezenas de núcleos. Logo, deve-se pesquisar alternativas que consigam obter resultados aproximados, e que atendam de forma satisfatória, ao objetivo que se deseja alcançar. Este trabalho consiste na apresentação de uma formulação para o Problema do Mapeamento, em sua forma estática, como uma instância do Problema Quadrático de Alocação

9 (QAP), o qual é um dos problemas encontrados na literatura que mais se assemelha ao MP. A partir dessa formulação, é feita uma avaliação de um algoritmo de busca local, denominado Breakout Local Search (BLS), usado para resolver o QAP, porém agora aplicado ao contexto do MP. Além desse algoritmo, são avaliadas duas heurísticas de mapeamento estático de tarefas, desenvolvidas com o objetivo de prover um maior paralelismo nas comunicações entre as tarefas de uma aplicação e com um algoritmo de mapeamento Sequencial simples. Essas abordagens são comparadas com o BLS, com relação à qualidade das soluções geradas, por meio das métricas obtidas pelo simulador de Redes em Chip SiNoC. Os testes são feitos sob diferentes aplicações reais, considerando MPSoCs com dimensão 4x4 e 8x8, e, por fim, são apresentados os melhores resultados obtidos. Palavras-chave: Sistema em Chip, Sistema em Chip Multiprocessado, Redes em Chip, Problema do Mapeamento, Heurísticas de Mapeamento.

10 The Mapping Problem Author: Hiago Mayk Gomes de Araújo Rocha Advisor: Profa. Dra. Monica Magalhães Pereira Co-advisor: Profa. Dra. Sílvia Maria Diniz Monteiro Maia Abstract With the advance in integrated circuit manufacturing technology, that made possible transistor size reduction, as predicted by Gordon Moore in 1975, it became possible the development of more complex systems in a single chip, called System on Chip (SoC), which can be composed of processing cores, memories and others components. In spite of that, with the increasing complexity of current applications, demanding more performance and parallelism capacity, were developed more complex SoCs that are composed for several cores, called Multiprocessors System on Chip (MPSoC). Communication between different cores is given by communications architectures. Nowadays, the most used ones are Networks on Chip (NoC) which, among other advantages, provide parallelism in communication. Due to the capacity of MPSoC to run applications in parallel, some challenges arise to be addressed, such as, task allocation, migration and scheduling. This work focus on task allocation problem, that is more formally called as Mapping Problem (MP). The MP consists in identifying which processing cores of a MPSoC are more adequate to allocate each application task. The MP is a NP-Hard problem, so is unknown a polynomial time algorithm to generate an exact solution. Therefore, it is necessary to search for solutions to obtain approximate results that meet the performance and/or other aspects requirements. This work consists in a presentation of Mapping Problem formulation, in static context, as a Quadratic Allocation Problem (QAP) instance. QAP is a combinatorial optimization problem, which from the optimization problems found in literature, is the one most similar to MP. From this formulation, it is evaluated an local search algorithm called Breakout Local Search (BLS), used to solve the QAP in MP context. Besides this algorithm, it is also evaluated two static task mapping heuristics. These heuristics were

11 proposed aiming increasing communication parallelism among application tasks. All algorithms are compared to a simple Sequential algorithm in order to evaluate the solution qualities in different aspects. The results are obtained by a NoC simulator, called SiNoC. The evaluations were made considering real applications running on a MPSoC with 4x4 and 8x8 dimensions. Keywords: System on Chip, Multiprocessor System on Chip, Network on Chip, Mapping Problem, Mapping Heuristics.

12 Lista de figuras 1 Representação do grafo de uma aplicação p Representação da arquitetura multiponto p Representação de uma NoC p Representação de uma mensagem p Topologias de NoCs mais comuns p Representação da ocorrência de um deadlock p Diagrama de classes da ferramenta SiNoC p Menu de mapeamentos da SiNoC p Inserção do grafo na SiNoC p Inserção do tamanho da NoC na SiNoC p Menu de roteamentos da SiNoC p Resultados obtidos pela SiNoC p Estratégia de alocar nas laterais p Estratégia de alocar nas diagonais p Sequência seguida pelo mapeamento Sequencial p Trajetória da busca do BLS p NoCs usadas nos cenários de avaliações p Grafo da aplicação Integral de Romberg p Grafo da aplicação MPEG p Grafo da aplicação MWD p Grafo da aplicação Pipe p Grafo da aplicação Tree p. 67

13 23 Grafo da aplicação VOPD p Diagramas de dispersão das soluções do BLS para o tamanho p Diagramas de dispersão das soluções do BLS para o tamanho p Diagramas de dispersão das soluções para o roteamento XY p Diagramas de dispersão das soluções para o roteamento XY _Y X.... p Mapeamentos de algumas soluções encontradas p Diagramas de dispersão das soluções para o roteamento XY p Diagramas de dispersão das soluções para o roteamento XY _Y X.... p Mapeamentos de algumas soluções encontradas p Mapeamentos de algumas soluções encontradas p. 103

14 Lista de tabelas 1 Quantidade de flits contido das aplicações p Matriz de fluxo (adjacências) da aplicação Pipe com tamanho p Matriz de distância da referente ao MPSoC de tamanho p Valores usados nos parâmetros do BLS p Dados do BLS, com instâncias de tamanho p Dados do BLS, com instâncias de tamanho p Comparação entre os dois tamanhos de problema p Métricas da ferramenta SiNoC para o algoritmo V1_decrescente e roteamento XY no cenário A p Métricas da ferramenta SiNoC para o algoritmo V1_decrescente e roteamento XY _Y X no cenário A p Métricas da ferramenta SiNoC para o algoritmo V1_crescente e roteamento XY no cenário A p Métricas da ferramenta SiNoC para o algoritmo V1_crescente e roteamento XY _Y X no cenário A p Métricas da ferramenta SiNoC para o algoritmo Sequencial e roteamento XY no cenário A p Métricas da ferramenta SiNoC para o algoritmo Sequencial e roteamento XY _Y X no cenário A p Médias e desvios padrões da métrica latência média da ferramenta SiNoC para o algoritmo BLS e roteamento XY no cenário A p Dados da avaliação da métrica latência da aplicação da ferramenta SiNoC para o algoritmo BLS e roteamento XY no cenário A p. 82

15 16 Dados da avaliação da métrica taxa de reuso dos pacotes da ferramenta SiNoC para o algoritmo BLS e roteamento XY no cenário A p Médias e desvios padrões da métrica latência média da ferramenta SiNoC para o algoritmo BLS e roteamento XY _Y X no cenário A p Dados da avaliação da métrica latência da aplicação da ferramenta SiNoC para o algoritmo BLS e roteamento XY _Y X no cenário A p Dados da avaliação da métrica taxa de reuso dos pacotes da ferramenta SiNoC para o algoritmo BLS e roteamento XY no cenário A p Resumo dos resultados para a métrica latência da aplicação obtidos no cenário A p Resumo dos resultados para a métrica taxa de reuso dos pacotes obtidos no cenário A p Métricas da ferramenta SiNoC para o algoritmo V1_decrescente e roteamento XY no cenário B p Métricas da ferramenta SiNoC para o algoritmo V1_decrescente e roteamento XY _Y X no cenário B p Métricas da ferramenta SiNoC para o algoritmo V1_crescente e roteamento XY no cenário B p Métricas da ferramenta SiNoC para o algoritmo V1_crescente e roteamento XY _Y X no cenário B p Métricas da ferramenta SiNoC para o algoritmo Sequencial e roteamento XY no cenário B p Métricas da ferramenta SiNoC para o algoritmo Sequencial e roteamento XY _Y X no cenário B p Médias e desvios padrões da métrica latência média da ferramenta SiNoC para o algoritmo BLS e roteamento XY no cenário B p Dados da avaliação da métrica latência da aplicação da ferramenta SiNoC para o algoritmo BLS e roteamento XY no cenário B p Dados da avaliação da métrica taxa de reuso da ferramenta SiNoC para o algoritmo BLS e roteamento XY no cenário B p. 94

16 31 Médias e desvios padrões da métrica latência média da ferramenta SiNoC para o algoritmo BLS e roteamento XY _Y X no cenário B p Dados da avaliação da métrica latência da aplicação da ferramenta SiNoC para o algoritmo BLS e roteamento XY _Y X no cenário B p Dados da avaliação da métrica taxa de reuso dos pacotes da ferramenta SiNoC para o algoritmo BLS e roteamento XY _Y X no cenário B... p Resumo dos resultados para a métrica latência da aplicação obtidos no cenário B p Resumo dos resultados para a métrica taxa de reuso dos enlaces obtidos no cenário B p. 96

17 Lista de abreviaturas e siglas SoC Sistemas em Chip QAP Problema Quadrático de Alocação BLS Breakout Local Search MPSoC Sistemas em Chip Multiprocessados MP Problema do Mapeamento SI Sistemas Integrados LAP Linear Assignment Problem IC Integral de Romberg MPEG Moving Picture Experts Group MWD Multi-Window Display VOPD Video Object Plane Decoder

18 Lista de Algoritmos 1 V1_decrescente p V1_crescente p Breakout Local Search p Perturbation p Perturb p. 63

19 Sumário 1 Introdução p Organização do Trabalho p Fundamentação Teórica p Propriedades do Hardware p Propriedades do Software p Formulação do Problema p Trabalhos Correlatos p Mapeamento Estático p Mapeamento Dinâmico p Estratégias Híbridas de Mapeamento p Simulador SiNoC p Métricas Calculadas p Visão da Implementação p Configurações Padrão p Exemplo de Uso p Algoritmos Avaliados p Heurística V1_decrescente p Heurística V1_crescente p Sequencial p. 55

20 5.4 Breakout Local Search p Resultados Experimentais p Aplicações Utilizadas p Adequação das Aplicações p Resultados de Otimização p Resultados de Simulação p Cenário A p Cenário B p Comparação Entre os Cenários p Considerações Finais p. 105 Referências p. 107

21 20 1 Introdução Desenvolvido em dezembro de 1947 nos laboratórios da Bell Telephone, o transistor é um componente fundamental da microeletrônica que, graças à evolução da tecnologia submicrônica, teve o seu tamanho reduzido consideravelmente. Essa redução possibilitou a criação de circuitos integrados cada vez menores, mais complexos e com alto grau de desempenho, a um custo relativamente baixo, aumentando ainda mais o poder tecnológico, assim como é visto nos dias de hoje. Essa evolução tecnológica foi prevista por Gordon Earl Moore, co-fundador da Intel. Em 1965, Moore constatou que a diminuição dos transistores possibilitaria que a quantidade de transistores em um circuito integrado dobraria a cada ano e isso iria ocorrer por um período de até 10 anos. Em 1975, dez anos após a primeira constatação, Moore atualizou a sua profecia cunhando a célebre Lei de Moore, na qual ele afirmava que o poder de processamento dos computadores dobraria a cada dois anos (MACK, 2011). Essa lei pode ser, seguramente, considerada até os dias de hoje e ela não se aplica apenas a computadores, mas a toda tecnologia advinda da redução do tamanho dos transistores. Com o avanço na fabricação de circuitos integrados, tornou-se possível a criação de sistemas complexos em uma única pastilha de silício, denominados de Sistemas em Chip (do inglês, System-on-Chip - SoC). Tais sistemas implementam todas as funcionalidades de um sistema eletrônico completo e seus componentes variam de acordo com a aplicação a qual ele irá executar. Assim, podem ser compostos por núcleos (do inglês, cores) ou unidades de processamento (do inglês, Processing Unit - PU), memórias, dentre outros componentes (ZEFERINO, 2003b). Porém, o aumento na complexidade das aplicações atuais demanda, em sua grande maioria, cada vez mais poder de processamento e capacidade de execução simultânea de suas diferentes subpartes de processamento. Com o objetivo de atender essa demanda e atenuar os problemas causados pelo aumento de potência dos processadores, foram desenvolvidos SoCs com múltiplos núcleos, denominados de Sistemas em Chip Multiprocessados (do inglês, Multiprocessor System-on-Chip - MPSoC) (ZEFE- RINO, 2003b). MPSoCs quando compostos por centenas de núcleos, ganham o simpático

22 21 nome de manycore (SINGH; KUMAR, 2013). O processamento simultâneo das tarefas (ou processos) de aplicações em processadores manycore induz o aumento da vazão de resultados, reduzindo, com isso, o tempo de execução das aplicações. Contudo, não só o paralelismo na execução influencia nessa melhora, mas também o paralelismo de comunicação das aplicações, pois tarefas que aguardam por mensagens para darem continuidade às suas execuções podem ocupar núcleos mesmo em momentos de ociosidade, ou seja, enquanto aguardam mensagens. Além disso, as mensagens podem sofrer contenções no caminho de origem ao destino, aumentando assim o seu tempo de envio e, consequentemente, influenciando no tempo de execução de toda a aplicação. Para prover a comunicação entre as diferentes tarefas, os núcleos de um MPSoC são interligados através de alguma arquitetura de comunicação, das quais a mais conhecida é a arquitetura multiponto compartilhada, mais comumente denominada de barramento. Porém a arquitetura mais vantajosa, devido a sua escalabilidade e por prover o paralelismo de comunicação obtido de sua própria natureza arquitetural, são as redes de interconexão chaveadas, mais conhecidas na literatura como Redes em Chip (do inglês, Network-on-Chip - NoC) (ZEFERINO, 2003b) (ZEFERINO, 2003a). Nesse contexto, existem alguns desafios a serem tratados relacionados a alocação, migração e escalonamento de tarefas, dentre outros em MPSoCs (MANDELLI, 2011) (CAR- VALHO, 2009). A alocação consiste em identificar os melhores núcleos que devem receber cada tarefa das aplicações, considerando que podem existir núcleos que executam tarefas específicas e, além disso, que as tarefas trocam mensagens entre si. O escalonamento está relacionado à definição da ordem de execução de cada tarefa, ou seja, é responsável por definir qual tarefa deverá executar em determinado momento. Já a migração de tarefas é a retirada de uma tarefa de um núcleo, realocando-a em outro núcleo de tal forma a prover alguma melhoria em sua execução. A migração também é usada como técnica de tolerância a falhas, quando uma tarefa é retirada de um núcleo defeituoso e atribuída a outro núcleo em perfeitas condições. Neste trabalho focamos no problema de alocação de tarefas, o qual é mais formalmente denominado de Problema do Mapeamento (do inglês, Mapping Problem - MP) (BOKHARI, 1981). O MP pertence à classe dos problemas NP-Hard 1 (WANG et al., 2016) (GAREY; JOHNSON, 1979), logo, não é conhecido um algoritmo de tempo polinomial que gere uma solução exata para ele. Com isso, deve-se pesquisar alternativas que consigam 1 Na teoria de complexidade computacional, é uma classe de problemas onde estão os problemas tão difíceis quanto os problemas mais difíceis pertencentes a classe NP. É onde estão os problemas de otimização.

23 22 obter resultados aproximados, e que sejam suficientemente bons ao objetivo que se deseja alcançar. Este trabalho consiste da apresentação de uma formulação matemática para o MP, em sua forma estática, tomando como base a modelagem do Problema Quadrático de Alocação (do inglês, Quadratic Assignment Problem - QAP) (BOKHARI, 1981) (PASCUAL; LOZANO; ALONSO, 2010) (COMMANDER, 2003), da avaliação de um algoritmo que usa a abordagem de busca local, denominado de Breakout Local Search (BLS), aplicando-o ao contexto do MP, e comparando com duas heurísticas de mapeamento estático de tarefas, denominadas de V1_decrescente e V1_crescente (ROCHA; PEREIRA, 2016), e também com um mapeamento Sequencial simples. Para a avaliação dos algoritmos, foi desenvolvido um simulador de alto nível de abstração para NoC, denominado SiNoC. Esse simulador permite avaliar latência, taxa de reuso dos enlaces, dentre outros aspectos, para cada um dos algoritmos de alocação avaliados: BLS, V1_decrescente, V1_crescente e Sequencial. 1.1 Organização do Trabalho No Capítulo 2 é apresentada a fundamentação teórica necessária para o bom entendimento deste trabalho. Os conceitos apresentados neste capítulo serão divididos em duas partes. A primeira trata dos conteúdos mais relacionados à área de Sistemas Integrados (SI), tais como SoC, MPSoC, NoC, características das NoCs, mecanismos de comunicação, entre outros. Na segunda parte, serão abordados conceitos associados à parte algorítmica do trabalho, tais como a definição do MP, seus problemas similares e a sua classe de complexidade. Neste capítulo também é apresentada uma modelagem do problema, assim como apresentada por (PASCUAL; LOZANO; ALONSO, 2010). No Capítulo 3, serão apresentados trabalhos relacionados ao aqui tratado. Neste capítulo, separamos as abordagens de soluções em três partes. Na primeira são apresentadas as estratégias das quais são usados algoritmos para resolver o problema em sua forma estática, a segunda para resolver de forma dinâmica e a terceira é uma forma híbrida, ou seja, que é usada para resolver o problema de alocação de tarefas tanto estático quanto dinâmico. O capítulo 4 introduz o simulador SiNoC, usado para a obtenção dos resultados apresentados neste trabalho. Descreve-se o motivo de sua implementação, como foi implementado, parâmetros necessários para o seu funcionamento, métricas obtidas por ele e

24 23 detalhes sobre seu funcionamento. O capítulo 5 apresenta uma descrição detalhada dos algoritmos avaliados, explicando as abordagens e técnicas usadas, parâmetros necessários para suas execuções, seus pseudocódigos especificando cada parte importante, e ilustrações para melhor entendimento do funcionamento de tais algoritmos. O capítulo 6 descreve os resultados, explicando os cenários avaliados, quais as aplicações utilizadas, detalhando as adequações feitas para que pudessem ser usadas as aplicações selecionadas no algoritmo BLS. Além disso, são apresentadas diversas tabelas e gráficos que apresentam a diversidade das soluções tanto geradas pelo algoritmo BLS antes da aplicação do simulador SiNoC, avaliando o custo das soluções, quantidade de iterações e tempos gastos para suas obtenções, quanto após a execução no simulador, quando foram avaliadas as latências das aplicações, a latência média dos flits transmitidos pelas tarefas de cada aplicação e as taxas de reuso dos enlaces da NoC. Adicionalmente, são feitas comparações entre as soluções dos algoritmos em cada cenário, no que concerne à qualidade da solução gerada, e também avaliação entre os dois diferentes cenários, buscando identificar o impacto do aumento do tamanho do MPSoC para a realização dos mapeamentos. Por fim, são apresentadas as considerações finais sobre o trabalho e as possibilidades de trabalhos futuros a serem feitos a partir deste.

25 24 2 Fundamentação Teórica Neste capítulo será apresentada a fundamentação teórica necessária para um bom entendimento deste trabalho. Os aspectos descritos serão divididos em duas partes. A primeira, denominada de Propriedades do Hardware, se refere aos conceitos de Sistemas Integrados, como SoC, MPSoC, NoC, entre outros. A segunda parte, denominada de Propriedades do Software, se refere ao Problema do Mapeamento e à teoria de fundamentação deste problema, tais como formulações matemáticas e problemas similares. 2.1 Propriedades do Hardware Um SoC é um circuito integrado composto por núcleos de processamento, memórias, entre outros componentes, todos em um só chip, gerando um sistema por completo (BER- GAMASCHI; LEE, 2000), (BERGAMASCHI, 2001),(ZEFERINO, 2003b) (ZEFERINO, 2003a). Esses sistemas puderam ser desenvolvidos graças às grandes inovações tecnológicas no desenvolvimento de microchips, possibilitado pelo aumento no nível de integração dos transistores em uma única pastilha de silício (ZEFERINO, 2003a). Um SoC tem a complexidade de integração de seus componentes como a sua principal característica (JERRAYA; WOLF, 2005) e o seu uso pode ser encontrado em diversos contextos, tais como: telecomunicações, redes de computadores, processamento de sinais, multimídia e eletrônica de consumo. Pode-se definir uma aplicação como o conjunto de uma ou mais tarefas, que são responsáveis por realizar funcionalidades específicas. Em geral, tarefas comunicam-se entre si através da troca de dados e, em sistemas mais complexos, elas podem executar em um mesmo ou em diferentes núcleos. Adicionalmente, várias tarefas podem executar simultaneamente e, com isso, exigir SoCs mais complexos e com maior capacidade de processamento (ZEFERINO, 2003b). Uma forma bastante utilizada de se representar uma aplicação é através de um grafo dirigido, cujos vértices representam as tarefas e as arestas representam as comunicações entre as diferentes tarefas. A Figura 1 apresenta uma

26 25 representação gráfica de uma aplicação. Figura 1: Representação do grafo de uma aplicação, onde os vértices representam as tarefas, as arestas representam as comunicações entre as tarefas e os pesos das arestas indicam a quantidade de informação que é transferida entre uma tarefa e outra. Imagem obtida de (ROCHA; PEREIRA, 2016). Um MPSoC nada mais é do que um SoC com múltiplos núcleos, os quais podem executar tarefas simultaneamente. Quando os núcleos de um MPSoC são todos iguais, o chamamos de MPSoC homogêneo, porém quando um MPSoC possui pelo menos um núcleo diferente, dizemos que ele é um MPSoC heterogêneo (MANDELLI, 2011). O uso de MPSoCs homogêneos facilita tanto no desenvolvimento quanto no mapeamento das aplicações que irão executar, porém o uso de MPSoCs heterogêneos pode melhorar o desempenho das aplicações, pois pode-se usar processadores dedicados às necessidades de cada aplicação (ZEFERINO, 2003b). Os diferentes PUs de um MPSoC também são denominados de núcleos (ZEFERINO, 2003b) e a comunicação entre esses núcleos ocorre através de uma estrutura de comunicação que possibilita a interconexão dos núcleos entre si e com outros dispositivos. Essa estrutura de comunicação é comumente denominada de arquitetura de comunicação, a qual a mais conhecida é a arquitetura multiponto compartilhada, também denominada de barramento. Essa arquitetura consiste em um canal compartilhado no qual os núcleos do sistema estão conectados e trocando mensagens entre si (CARDOZO, 2005). Contudo, nesse tipo de arquitetura, conforme aumenta o número de núcleos que se conectam através dos canais do barramento, não é possível oferecer suporte a sua comunicação, pois, com isso, há um aumento de energia gasta e no tempo necessário para propagar os sinais pelos fios (ZEFERINO, 2003a). Além disso, essa arquitetura também possui a desvantagem de que, conforme a quantidade de elementos adicionados ao sistema aumenta, torna-se

27 26 necessária a inserção de novos canais que farão as comunicações com todos os canais já existentes. Na Figura 2, é apresentada a representação gráfica da arquitetura multiponto compartilhada. Figura 2: Representação da arquitetura multiponto compartilhada ou barramento. Imagem obtida de (CARDOZO, 2005). Em se tratando de comunicação, existem alguns desafios a serem enfrentados, pois nas arquiteturas baseadas em barramento, decorrente de sua própria natureza arquitetural, dificilmente se obterá os requisitos de comunicação, como largura de banda escalável e paralelismo de comunicação. O comprimento dos fios dos barramentos dos futuros sistemas integrados irão se manter proporcionais ao tamanho da pastilha de silício, e não diminuirão com o aumento da frequência de relógio (do inglês, clock), possibilitado pela diminuição dos transistores. Por fazer uso de conexões do tipo multiponto, quanto maior for a quantidade de núcleos conectados ao barramento, mais significativo será o atraso da movimentação dos dados ao longo dos fios, limitando o desempenho do sistema. Por operar por difusão, no barramento, o consumo de potência é alto, pois cada sinal deve ser enviado para todos os pontos do barramento. Além desses problemas, existem outros, como largura de banda não escalável, como já citado, e arbitragem centralizada, o que dificulta o uso de barramento em SoCs complexos (ZEFERINO, 2003b). Diante dos problemas aqui descritos, a solução de uma tecnologia de comunicação, proposta pela comunidade acadêmica (ZEFERINO, 2003a) (BENINI; MICHELI, 2002b) (TO- WLES, 2001) (SAASTAMOINEN, 2002) (GUERRIER; GREINER, 1999) (GUERRIER; GREINER, 2000) (KUMAR, 2002) (SGROI, 2001) (JANTSCH, 2001), para tentar superar tais problemas, está nas redes de interconexão chaveadas, semelhante as encontradas em redes de computadores. Redes de interconexão chaveadas têm como vantagem prover uma largura de banda escalável, o uso de pequenas interconexões ponto-a-ponto, o paralelismo de comunicação, entre outras. Apesar de terem como desvantagens maiores custos de projeto e latência na comunicação, tais problemas são minimizados por soluções arquiteturais que produzem efeito no desempenho das aplicações e pela grande quantidade de transistores disponíveis para uso (CARDOZO, 2005). Tais redes de interconexão chaveada, quando apli-

28 27 cadas na comunicação intrachip, recebem o nome de Redes em Chip ou NoC (Network on Chip) (ZEFERINO, 2003b). Podemos definir NoC como um conjunto de roteadores ligados aos núcleos de um MP- SoC e um conjunto de enlaces ponto-a-ponto que interconectam tais roteadores, provendo comunicação entre os núcleos do sistema (ZEFERINO, 2003b). Uma NoC foi inicialmente projetada, tendo como objetivo prover a separação entre a comunicação e o processamento, pois, em alguns sistemas, os núcleos de processamento têm tanto a função de processar as aplicações quanto a de gerenciar a comunicação entre as diferentes tarefas das aplicações executando paralelamente nos diferentes núcleos do MPSoC. Com o uso da NoC como arquitetura de comunicação, os núcleos precisam, unicamente, ser responsáveis pelo processamento das aplicações, deixando a parte de gerenciamento da comunicação com os roteadores da rede. A Figura 3 apresenta uma representação gráfica de uma NoC, estruturada na topologia mesh 2D, a qual será logo mais detalhada. Figura 3: Representação de uma NoC com topologia mesh 2D, onde os núcleos do MPSoC são representados pelos círculos. Ligado a cada círculo, temos as representações dos roteadores da NoC, todos interligados pelos enlaces, que são compostos, internamente, por dois canais ponto-a-ponto unidirecionais. Imagem obtida de (MESQUITA, 2014). Geralmente, o modelo de comunicação de uma NoC é através da troca de mensagens (BENINI; MICHELI, 2002a), na qual a comunicação entre os núcleos do sistema é feita por envio de mensagens de requisição e resposta. Por esse motivo, um enlace, como apresentado na Figura 3, é constituído por dois canais unidirecionais, sendo um para cada direção. Esse enlace é usado para prover comunicação tanto roteador-roteador quanto núcleo-roteador (ZEFERINO, 2003b). Uma mensagem, ou pacote, pode ser dividida em flits, e esses flits, por sua vez, podem ser subdivididos em phits, os quais representam a menor unidade de subdivisão de uma mensagem e também representa a unidade de medida física de um canal da rede. Por simplicidade, assume-se apenas uma subdivisão de mensagens considerando-se até no nível de flits. Uma mensagem, no modelo de comunicação de uma

29 28 NoC, é composta por um (i) cabeçalho, que é representado pelo flit indicador do início da mensagem e contém informações necessárias para o seu tráfego na rede, (ii) carga útil, que são os flits que representam conteúdo da mensagem, (iii) terminador, que é representado pelo flit indicador do final da mensagem, e esse flit pode ser até o último da carga útil, desde que exista um bit especial que é ativado apenas em seu final. A Figura 4 ilustra os itens (i), (ii) e (iii) de uma mensagem, conforme aqui descritos. Figura 4: Representação de uma mensagem, possuindo o flit de cabeçalho, os flits da carga útil e o flit terminador. Imagem obtida de (MESQUITA, 2014). NoCs, com algumas características semelhantes às redes de computadores, são caracterizadas por uma topologia e pelos mecanismos de comunicação utilizados. A topologia consiste na estruturação de uma NoC na forma de um grafo não dirigido, no qual os vértices do grafo representam os roteadores e as arestas representam os enlaces que fazem a interconexão entre cada roteador. A topologia de uma NoC pode ser de diferentes tipos, entre elas podemos citar a spin, mesh 2D, mesh 3D, cubo 2D, cubo 3D, torus, torus dobrada, octógono, estrela, anel, entre muitas outras. A topologia mais amplamente usada, devido sua simplicidade no projeto do sistemas integrados e por ser a mais adequada às tecnologias atuais de fabricação (ZEFERINO, 2003a), é a mesh 2D. A Figura 3, como já citado, apresentou uma rede com topologia mesh 2D. A Figura 5, apresenta as representações gráficas de algumas topologias usadas no projeto de NoCs.

30 29 (a) Spin. (b) Mesh 2D. (c) Torus. (d) Torus dobrada. (e) Octógono. (f) Árvore borboleta gorda. Figura 5: Representação das diferentes topologias de NoCs. Imagens obtidas de (CONCER, 2008). Em se tratando de mecanismo de comunicação, o qual define a forma como as mensagens trafegam pela rede, temos: Chaveamento: define quando e como as chaves internas de um roteador serão conectadas para que os pacotes sejam transferidos de suas portas de entrada para suas portas de saída. O chaveamento pode ser de dois tipos: por circuito e por pacote. Por circuito: é fechado um caminho do roteador de origem até o de destino, denominado de circuito, onde apenas os flits referentes a uma só mensagem podem trafegar, até que ela toda chegue ao seu destino. Essa metodologia faz pouco uso dos buffers dos roteadores, já que os caminhos que serão percorridos pelas mensagens já são pré-definidos. Os buffers são usados apenas para o armazenamento do flit de cabeçalho das mensagens. Por pacote: nesse tipo de chaveamento as mensagens são decompostas em unidades menores, denominadas de pacotes. Para a realização do chaveamento, comumente são usadas três técnicas (DUATO; YALAMANCHILI; NI, 2003) (ZE- FERINO, 2003b): store-and-forward: nessa técnica os pacotes são subdivididos em flits, os quais são transferidos na rede e, para o seu encaminhamento, o roteador

31 30 necessita armazenar todos os flits de um pacote para então poder repassá-lo ao próximo roteador. Para isso, os canais de saída devem estar disponíveis e o próximo roteador que receberá o pacote deve ter em seu buffer de entrada um espaço suficiente de armazenamento, ou seja, proporcional ao tamanho do pacote a ser recebido, em flits. virtual cut-through: assim como a técnica store-and-forward, a virtual cut-through aloca buffers e largura de banda em unidade de pacotes. A diferença está no fato de aqui não ser necessário o armazenamento completo dos pacotes nos buffers, já que eles são repassados para o próximo roteador assim que o flit de cabeçalho chega em um roteador específico, reduzindo a latência da rede. Wormhole: nesse chaveamento, os flits que compõem os pacotes podem ser transferidos de um roteador a outro no instante em que haja espaço de pelo menos um flit no roteador receptor. Com isso, é possibilitado o uso de buffers com baixa capacidade de armazenamento, já que tanto a largura de banda quanto o espaço de armazenamento são alocados em unidades de flits, ao invés de unidades de pacotes. Controle de fluxo: realiza a regulação do tráfego nos canais da rede, através da alocação dos recursos necessários para fazer as mensagens trafegarem nos canais. Essa política de regulação é implementada em nível de canal, fazendo uso de buffers para o armazenamento dos dados em transferência (CARDOZO, 2005). Caso um buffer de entrada de um receptor esteja cheio, o emissor irá manter os dados a serem transferidos no seu buffer de saída até que o buffer de entrada do receptor não esteja mais cheio. Os tipos de controle de fluxo mais utilizados são: Handshake: consiste em duas vias, sendo uma de validação e a outra de reconhecimento (do inglês, acknowledge). O roteador emissor avisa, pela via de validação, que possui mensagens a serem enviadas e o roteador receptor confirmará se há espaço em seu buffer de entrada através da via de reconhecimento. Com isso, é feita a transferência dos dados. Baseado em créditos: é um controle de fluxo baseado na capacidade de armazenamento de mensagens nos buffers dos roteadores, a qual é chamada de créditos. Nesse mecanismo, a transferência de dados só ocorre caso haja espaço no receptor. Com isso, o transmissor recebe a informação do número de créditos do receptor e, caso ele possua créditos disponíveis, a mensagem

32 31 é enviada, atualizando a quantidade de créditos com base na quantidade de créditos ocupados pela nova mensagem armazenada. Quando a mensagem é passada adiante, esvaziando a posição ocupada no buffer, o número de créditos é novamente atualizado. Baseado em canais virtuais: usado em redes de interconexão com chaveamento do tipo wormhole, é um controle de fluxo que consiste em dividir o buffer de entrada dos roteadores em filas independentes de menores tamanhos, os quais irão formar os canais virtuais. Esse tipo de controle evita o bloqueio de linha que, segundo Cardozo (2005), acontece quando ocorre o bloqueio do canal físico por onde a mensagem é transmitida, por consequência do buffer de entrada do roteador receptor estar cheio durante a transmissão de vários flits seguidos. Roteamento: descrito por um algoritmo, o qual é dependente da topologia da rede. Define o caminho a ser percorrido por uma mensagem de seu destino até a sua origem, sendo um mecanismo de alta influência no desempenho da rede (ZEFERINO, 2003a). Um bom algoritmo de roteamento deve favorecer o balanceamento nos canais da rede e, além disso, deve manter a quantidade de rotas tão curtas quanto possível, reduzindo assim a latência média na entrega de mensagens. De acordo com Zeferino (2003a), os algoritmos de roteamento podem ser classificados quanto a sua adaptabilidade, as quais são: Não Adaptativo (determinístico): o caminho percorrido pela mensagem da sua origem até o destino é sempre o mesmo. Os algoritmos de roteamento determinísticos, usados numa topologia mesh 2D, mais conhecidos são o XY e o Y X (CARVALHO, 2009) (ZEFERINO, 2003b) (MANDELLI, 2011). O XY é um algoritmo que assume a rede como coordenadas X e Y, em analogia a um plano cartesiano, e faz as mensagens trafegarem pelos roteadores nas coordenadas X até a coluna de destino das mensagens e então faz elas seguirem pelos roteadores das coordenadas Y até chegarem ao seu destino. O algoritmo Y X é semelhante, porém as mensagens seguem primeiro pela coordenada Y e depois pela X. Adaptativo (não determinístico): o roteamento é não determinístico, ou seja, as mensagens podem trafegar por caminhos alternativos caso alguma falha de componente ocorra, ou as mensagens encontrem algum caminho bloqueado. Tal roteamento ainda pode ser dividido em duas subcategorias, que são:

33 32 Totalmente adaptativo: quando o algoritmo avalia todas as possibilidades de caminhos a serem usados, mesmo que algumas possibilidades levem a caminhos mais distantes do destino. Parcialmente (semi-)adaptativo: este tipo de algoritmo avalia apenas um pequeno subconjunto de possíveis caminhos, geralmente aqueles que levam sempre em direção ao destino. Um exemplo de algoritmo parcialmente adaptativo é o XY _Y X, descrito por (ROCHA; PEREIRA, 2016), que é semelhante ao XY, porém ele considera a quantidade de acessos a cada enlace da rede, fazendo as mensagens sempre trafegarem pelos enlaces que tenham menores quantidades de acessos. O objetivo desse algoritmo é evitar a sobrecarga de mensagens em um único conjunto de enlaces, o que pode ocorrer nos algoritmos não adaptativos XY e Y X. Arbitragem: resolve concorrências na rede, gerenciando conflitos internos, quando duas ou mais mensagens tentam acessar o mesmo recurso, que pode ser um buffer ou um canal de saída (ZEFERINO, 2003b). O árbitro de um roteador pode ser implementado como uma estrutura: Centralizada: a arbitragem é feita por um módulo global, o qual tem a visão geral do uso dos canais de saída dos roteadores. Neste módulo é feita a avaliação de todas as requisições emitidas pelo circuito de roteamento e então é executada a arbitragem. Distribuída: é realizado o roteamento e a arbitragem de forma independente, onde cada canal possui seus módulos de roteamento associado as portas de entrada e um módulo de arbitragem associado as portas de saída. Apesar de não permitir uma visão global dos canais de saída, essa estratégia tem a vantagem de possibilitar árbitros mais rápidos com o uso de estruturas mais simples. Memorização: define o esquema de filas usado para o armazenamento de mensagens bloqueadas quando algum canal de saída da rede, por ela requisitado, já está sendo utilizado por alguma outra mensagem (ZEFERINO, 2003b). Pode ser classificada em: Centralizada: esse tipo de memorização é feito com uma arquitetura de comunicação responsável por receber e guardar pacotes bloqueados de todas as entradas. Tal arquitetura é chamada de Centrally-Buffered Dynamically-Allocated

34 33 (CBDA), a qual possui endereçamento dinamicamente distribuído entre os pacotes bloqueados. Distribuída: aqui, não há a possibilidade de compartilhamento de buffers entre os canais, pois cada canal de entrada recebe uma arquitetura independente de memorização dos pacotes bloqueados. A estratégia First-In First-Out é a melhor usada na memorização distribuída, pois é uma alternativa de menor custo. Existem alguns problemas que podem ser solucionados através dos mecanismos de comunicação citados anteriormente. Esses problemas são o starvation, livelock e o deadlock (ZEFERINO, 2003b). De acordo com Zeferino (2003a), o starvation ocorre quando uma mensagem fica contida indefinidamente em um buffer de algum roteador e nunca é escolhida para usar algum canal solicitado, isso pode ocorrer pelo fato de haver múltiplas requisições para o árbitro, e como ele aplica o critério de prioridade para selecionar as requisições, certas mensagens com baixa prioridade podem nunca ser escolhidas, se considerarmos uma rede com tráfego de mensagens bastante intenso. O livelock é quando as mensagens nunca chegam em seu destino e isso pode ocorrer na tentativa de evitar o starvation, fazendo com que uma mensagem, para não ficar contida indefinidamente, pegue qualquer canal disponível. Isso pode fazer com que as mensagens trafeguem na rede de maneira arbitrária, sem conseguir chegar ao seu destino final. O deadlock ocorre quando há dependência cíclica na rede, por exemplo, quando uma mensagem solicita um canal já utilizado por outra, que por sua vez, solicita um canal também já utilizado por outra e essa última por sua vez solicita o canal utilizado pela primeira mensagem que solicitou, fazendo com que elas permaneçam contidas, ocupando os canais que estão atualmente e aguardando a liberação dos canais solicitados indefinidamente (ZEFERINO, 2003b). A Figura 6 apresenta como seria a ocorrência de um deadlock em uma NoC com topologia mesh 2D com dimensão 2x2. Esse problema é o mais grave que pode ocorrer, já que, além de impedir que mensagens cheguem ao seu destino, ele pode travar o fluxo de mensagens na rede.

35 34 Figura 6: Representação da ocorrência de um deadlock em uma NoC com topologia mesh 2D e dimensão 2x2. Imagem obtida de (ZEFERINO, 2003b). Para solucionar esses problemas, podem ser usados os mecanismos de comunicação, como já dito anteriormente, nos quais a garantia da ausência de starvation é obtida pelo tipo de arbitragem usada, enquanto que a ausência de livelock e deadlock dependem unicamente no algoritmo de roteamento utilizado (ZEFERINO, 2003b). Além disso, os mecanismos de comunicação servem para prover melhorias na rede, pois a melhoria de uma determinada métrica requer uma combinação específica desses mecanismos. Quando se trabalha na avaliação do processo de comunicação em uma NoCs, devem ser levadas em consideração as suas métricas de desempenho. As métricas mais usadas são a largura de banda, a vazão e a latência da rede (CARDOZO, 2005). Além dessas, outras também podem ser usadas, dependendo do que se deseja avaliar. A seguir definimos algumas dessas métricas: Largura de banda: do inglês, bandwitdh, a largura de banda se refere à taxa máxima de informação que pode ser propagada na rede, ou, como definido por Duato (1997), é o tráfego máximo aceito pela rede. O cálculo da largura de banda comumente inclui os bits de cabeçalho, os da carga útil e o do terminador, sendo a sua unidade de medida a bit por segundo (bps). Vazão: do inglês, throughput, a vazão refere-se à quantidade máxima de informação que pode ser transferida de um roteador a outro por unidade de tempo. Pode-se normalizar o valor da vazão considerando o tamanho das mensagens e o tamanho da rede, para que o resultado seja independente do tamanho das mensagens e da rede. Latência: geralmente medida em unidades de tempo ou ciclos de clock, a latência pode ser vista como o tempo decorrido desde o início da transmissão de uma mensagem até o momento em que ela é completamente recebida.

36 35 Saltos: também conhecido pelo termo em inglês hops, os saltos são a quantidade de nós de uma NoC que uma mensagem percorre da sua origem até o seu destino. Geralmente, é contabilizado no momento em que o flit de cabeçalho chega nos nós dos sub caminhos da origem até o destino e cada nó que a mensagem trafega é contabilizado como um salto. Taxa de uso: pode ser visto com a quantidade de canais usados para trafegar mensagens, normalizado pela quantidade total de canais da rede. Essa métrica pode ser usada para avaliar a área acessada por um determinado volume de mensagens durante a execução de uma aplicação. Taxa de reuso: é a quantidade de canais que foram reusados mais de uma vez no tráfego das mensagens, normalizado pela quantidade de canais usados. 2.2 Propriedades do Software Um dos desafios de um MPSoC está na alocação das tarefas a serem executadas em seus núcleos. O mapeamento é o ato de escolher os melhores núcleos de um MPSoC para alocar as tarefas de uma aplicação. Informalmente, podemos definir, de maneira genérica, o Problema do Mapeamento como o problema de mapear um conjunto de recursos A em um conjunto de elementos B, de forma a minimizar o custo das comunicações do mapeamento realizado, levando em consideração que os recursos em A podem ter dependências, ou relações, entre si, e os elementos do conjunto B estão estruturados de uma maneira fixa. No caso do estudo do mapeamento para os núcleos de um MPSoC com arquitetura de comunicação baseada em NoC, o conjunto A seria a aplicação, ou seja, um conjunto de tarefas a serem executadas e que devem ser mapeadas, e o conjunto B são os núcleos do MPSoC, estruturados sobre alguma topologia de NoC. O MP pertence à classe dos problemas NP-Árduos (WANG et al., 2016) (GAREY; JOHNSON, 1979), ou seja, não é conhecido um algoritmo que o resolva de maneira ótima em tempo polinomial. Algoritmos exatos podem obter soluções ótimas em tempo consideravelmente curto, quando se usa uma rede pequena, porém o tempo de processamento exigido torna inviável a obtenção de mapeamentos ótimos quando se tem uma rede com número de processadores maior do que 25 núcleos e aplicações também com uma quantidade maior do que 25 tarefas (WANG et al., 2016). O MP é similar a outros problemas, tais como o Problema de Isomorfismo de Grafos

37 36 (READ; CORNEIL, 1997) e o Problema Quadrático de Alocação 1 (do inglês, Quadratic Assignment Problem - QAP) (PASCUAL; LOZANO; ALONSO, 2010) (COMMANDER, 2003), entre outros, como descrito em (BOKHARI, 1981). O problema de isomorfismo de grafos consiste em, dados dois grafos G 1 e G 2, verificar se eles são iguais ou não. Isto é, se eles possuem uma correspondência de um-para-um entre seus vértices e arestas. Já o QAP é um problema NP-Árduo (PASCUAL; LOZANO; ALONSO, 2010) (COMMANDER, 2003) (ZAIED; SHAWKY, 2014), sendo um dos problemas de otimização combinatória mais interessantes e desafiantes que existem. Ele é bastante usado por cientistas para modelar vários outros problemas de otimização combinatória. O QAP é uma generalização de um problema denominado de Problema Linear de Alocação (do inglês, Linear Assignment Problem - LAP) (COMMANDER, 2003), que consiste em, de maneira intuitiva e por analogia, dados n pessoas e n locais de trabalho, alocar cada pessoa i a um único local j, considerando um custo c i,j que é o custo de alocar uma pessoa i a um determinado local j. O objetivo desse problema é encontrar a melhor alocação, ou seja, a que minimiza o somatório total dos custos de alocações. Matematicamente, temos que ( n ) min c i,π(i), i=1 onde π P n, sendo P n o conjunto de todas as permutações possíveis de {1, 2,..., n} e π(i) = j é o local cuja pessoa i foi alocada. Observe que nesse problema são geradas todas as permutações possíveis para n inteiros. Desde que existam n! permutações distintas, então existem n! formas diferentes de se alocar uma pessoa a um local de trabalho. O QAP é um problema mais complicado, pois além de considerar o custo de alocar uma pessoa i a um local de trabalho j, também considera a distância de alocação entre ela e outra pessoa w cuja pessoa i tenha afinidade. Considerando a matriz de custo C = [c i,w ], onde c i,w aqui não representa o custo de alocação, mas a afinidade entre a pessoa i e a pessoa w, e a matriz de distância D = [d j,z ], onde d j,z representa a distância entre o local j e o local z. Assuma que a pessoa i foi alocada a um local p(i) e que uma pessoa w foi alocada a um local p(w), e observe que p(i) = j e p(w) = z. Então o custo associado a essa alocação é dado por c i,w d p(i),p(w). Logo o custo total de alocação será dado pelo somatório de c i,w d p(i),p(w) para todas pessoas i e w. A alocação ótima será aquela que minimiza o somatório, ou em outras palavras, será a que minimiza a distância de alocação das pessoas considerando suas afinidades. Matematicamente temos, 1 O uso do termo quadrático é pelo fato de sua função objetivo de custo conter grau dois.

38 37 ( n ) n min c i,w d π(i),π(w), i=1 w=1 para todas as permutações π P n. Essa formulação é conhecida como Koopmans- Beckman QAP (KOOPMANS; BECKMAN, 1957). Observe que, assim como o LAP, o QAP exige n! permutações para encontrar a solução ótima. Porém, a diferença crucial entre esses dois problemas é que o LAP considera que toda alocação realizada é feita de forma independente, já no QAP as alocações não são independentes, ou seja, quando alocamos uma pessoa i a um local de trabalho p(i), devemos também considerar onde estão alocadas todas as pessoas as quais possuem afinidades não nulas para com a pessoa i. O mapeamento de tarefas, segundo (MANDELLI, 2011), pode ser classificado de acordo com alguns critérios: O momento em que é executado: se refere ao instante em que o mapeamento é realizado, podendo ser de dois tipos: Estático (off-line): é um mapeamento realizado em tempo de projeto, ou seja, é realizado antes de as aplicações começarem efetivamente a executar. Com isso, para a realização deste tipo de mapeamento, pode-se usar algoritmos mais complexos, que avaliam uma quantidade maior de possibilidades de mapeamento, tentando encontrar a solução exata ou uma solução bastante aproximada, visto que o tempo de execução destes algoritmos não influenciarão no tempo de execução das aplicações. Por outro lado, o mapeamento estático não é capaz de lidar com cargas de trabalho dinâmicas, onde novas aplicações ou novas tarefas possam ser inseridas no sistema em tempo de execução. Dinâmico (on-line): é um mapeamento realizado em tempo de execução das aplicações, com isso, o mapeamento é realizado conforme novas aplicações chegam ou novas tarefas são criadas pelas aplicações em execução, ou seja, este tipo de mapeamento suporta cargas dinâmicas de tarefas. Para isso, são exigidos algoritmos simples e rápidos, uma vez que o seu tempo de execução irá influenciar no tempo de execução das aplicações. O número de tarefas por núcleo: a quantidade de tarefas que podem ser alocadas a um mesmo núcleo, e pode ser de dois tipos: Monotarefa: cada núcleo recebe apenas uma única tarefa para executar.

39 38 Multitarefa: cada núcleo pode receber mais de uma tarefa para executar. Nessa abordagem as tarefas de uma aplicação devem ser separadas em grupos, também denominados de clusters, os quais serão atribuídos aos núcleos que ficarão responsáveis pelo processamento. A criação dos clusters é feita baseando-se em alguns critérios, como por exemplo, os prazos de execução (do inglês, deadlines), a comunicação entre as tarefas, entre outros. Quando se usa sistemas operacionais multitarefas, torna-se crucial o uso desse tipo de mapeamento para o melhor uso dos recursos do sistema. A arquitetura de MPSoC alvo: é a arquitetura do sistema que pode ser de dois tipos, como já dito anteriormente, quando na definição de MPSoC. Homogêneo: quando todos os núcleos do MPSoC são idênticos. Heterogêneo: quanto pelo menos um dos núcleos do MPSoC é diferente. Os conceitos que foram apresentados na parte de propriedades do hardware serão de fundamental importância para o entendimento dos parâmetros de simulação usados na avaliação dos algoritmos, já que os testes foram feitos considerando diferentes cenários. Já a parte das propriedades de software nos dá a ideia precisa do problema com o qual estamos tratando, assim como suas principais características. Em suma, os algoritmos de mapeamento avaliados são para alocação estática de tarefas e foram executados sobre um MPSoC homogêneo que tem como arquitetura de comunicação uma NoC com topologia mesh 2D. Os resultados foram avaliados através das métricas descritas nos aspectos práticos deste capítulo, sendo a taxa de reuso dos enlaces e a latência as duas mais importantes para o contexto do trabalho. 2.3 Formulação do Problema Entre os problemas estudados, o que mais se assemelha ao MP é o QAP. Pelo seu alto grau de semelhança, podemos descrever a formulação do MP como uma instância do QAP através de um simples relacionamento entre os seus termos, como apresentado em (PASCUAL; LOZANO; ALONSO, 2010). Com isso, temos os seguintes relacionamentos: Locais núcleos do MPSoC distribuídos na NoC; Pessoas tarefas executando paralelamente;

40 39 Matriz de custo peso das comunicações entre as diferentes tarefas; Matriz de distância distância entre os núcleos do MPSoC distribuídos na NoC (depende da topologia utilizada). Assim, a equação da função objetivo do MP é dada pela mesma equação descrita para QAP, ou seja, ( n ) n min c i,w d π(i),π(w). i=1 w=1 O problema dessa equação, quando aplicada no contexto do MP, é que ela busca minimizar o custo total das comunicações sem levar em consideração os eventuais congestionamentos na rede. Ou seja, o problema é tratado no seu estado ideal, no qual nenhuma mensagem sofre contenção por haver duas ou mais mensagens tentando acessar o mesmo recurso. Neste trabalho, avaliamos a viabilidade do uso dessa formulação, na obtenção de soluções para o MP, observando os resultados de latência e taxas de reuso dos enlaces, dos mapeamentos gerados, quando comparados com algoritmos desenvolvidos pelo autor e um mapeamento Sequencial simples. No próximo capítulo serão apresentados os trabalhos relacionados. Estes trabalhos estão divididos em relação ao tipo de mapeamento que eles realizam, sendo primeiramente descritos os que usam estratégias para o mapeamento estático de tarefas, depois os que usam estratégias do mapeamento dinâmico e o último para as estratégias híbridas, onde tem-se uma junção entre o estático e o dinâmico.

41 40 3 Trabalhos Correlatos Este capítulo apresenta alguns trabalhos que possuem forte relacionamento com o aqui proposto. Tais trabalhos serão descritos nas seções a seguir quanto às heurísticas propostas e os resultados alcançados. Eles estão agrupados com relação ao seu tipo de mapeamento, sendo eles estáticos, dinâmicos ou híbridos. Foi avaliada uma grande quantidade de trabalhos que variam entre artigos, relatórios técnicos, monografias, dissertações e teses. Destes, serão descritos apenas os que apresentam maior relevância com o aqui desenvolvido. 3.1 Mapeamento Estático (PELLEGRINI, 1994) apresenta uma proposta de mapeamento estático baseado em divisão e conquista. A ideia é particionar, recursivamente, os conjuntos de processos e de processadores, e com isso construir o mapeamento a partir de um caso base. O objetivo da heurística apresentada é minimizar o tempo de execução das aplicações. Os resultados para o mapeamento em várias topologias de NoCs diferentes são apresentados, com a finalidade de mostrar a eficiência do algoritmo. Em (FREITAS, 2014) é proposta uma heurística de mapeamento estático baseado no algoritmo de clusterização K-means. A heurística proposta é avaliada quantitativamente com diferentes cargas de trabalho. Na avaliação dos resultados é observado que, para determinados padrões de comunicação, a heurística proposta conduz a melhores resultados, em comparação com a estratégia de biparticionamento recursivo, proposta por (PELLEGRINI, 1994), e uma heurística greedy proposta por (OLIVEIRA et al., 2011). 3.2 Mapeamento Dinâmico O trabalho proposto por (MANDELLI, 2011) propõe heurísticas de mapeamento dinâmico tanto monotarefa quanto multitarefa. A função objetivo de minimização é o consumo

42 41 de energia na comunicação. Os resultados foram avaliados a partir de um MPSoC denominado de HeMPS, a qual executa códigos de aplicações geradas a partir de um ambiente de simulação baseado em modelos. Em comparação com algumas heurísticas de mapeamento apresentadas na literatura, os resultados para a redução média de energia de comunicação nos vários casos de testes avaliados foram de até 9,8% na abordagem monotarefa e 18,6% na multitarefa. Além disso, em (MANDELLI, 2011) também é avaliada a inserção dinâmica de carga no sistema, sendo usada para este fim, uma outra heurística de mapeamento de tarefas iniciais. Em (CARVALHO, 2009) é investigado o desempenho de quatro heurísticas de mapeamento dinâmico de tarefas. O objetivo é minimizar o congestionamento nos canais da NoC. Neste trabalho, as tarefas são mapeadas sob demanda de acordo com as requisições de mapeamento e as ocupações dos canais. Para realizar o mapeamento são usadas as informações locais da aplicação, mapeando tarefa por tarefa, através de estratégias gulosas. Semelhante ao trabalho aqui desenvolvido, é usado o mapeamento Sequencial como comparação com as heurísticas desenvolvidas. Nos experimentos realizados, segundo o autor, a eficiência das heurísticas são comprovadas através dos resultados obtidos, que foram da redução de até 31% na carga dos canais, 15% na latência média e 87% no nível de congestionamento médio. O trabalho realizado por (KUMAR, 2002) apresenta duas heurísticas de mapeamento para NoC homogênea. O objetivo das heurísticas são de minimizar o overhead de comunicação e, para isso, é usada a informação de proximidade entre cada tarefa a ser mapeada em um determinado momento com todas as outras da aplicação. Os resultados apresentados, mostram que as heurísticas foram capazes de reduzir o tempo de execução, a latência e a carga nos canais, quando comparadas com heurísticas do estado da arte. 3.3 Estratégias Híbridas de Mapeamento Em (MARTÍNEZ; AEDO; VÉLEZ, 2014), é descrita uma abordagem tanto estática quanto dinâmica de mapeamento que faz uso do aprendizado incremental baseado em população (do inglês, Population-Based Incremental Learning - PBIL) e que provê suporte a tolerância a falhas. O algoritmo tenta encontrar a melhor solução de mapeamento estático, e após isso, tenta dinamicamente realocar as tarefas caso algum núcleo, em que alguma delas esteja executando, falhe. A função objetivo que se quer minimizar nesse trabalho é o tempo de execução das aplicações e os picos de largura de banda da NoC. Nesse traba-

43 42 lho é usada uma NoC com topologia mesh 2D. Para simular o tráfego de mensagens da rede e realizar a comparação com outros algoritmos, é usada a estratégia de roteamento determinística XY. O autor afirma que a sua abordagem de mapeamento é promissora e apresenta melhores resultados, quando comparados com outras na literatura. Em (WANG et al., 2016) é apresentado um algoritmo heurístico de duas fases. A primeira consiste em explorar o potencial do espaço de busca dos mapeamentos, enquanto a segunda faz a exploração de um ótimo local, considerando o espaço de busca obtido na primeira fase. Para verificar a eficácia do algoritmo, são realizadas comparações quantitativas entre a heurística proposta e outros métodos presentes na literatura. As comparações foram feitas usando tanto aplicações reais quanto customizadas, geradas por benchmarks. Uma heurística dinâmica com objetivo de minimizar o congestionamento dentro da NoC é apresentada em (CARVALHO; CALAZANS; MORAES, 2010). Os resultados realizados mostram que a heurística proposta obteve até 31% de redução na carga dos canais e até 22% de latência nas mensagens, quando comparada com outras heurísticas. Além disso, o trabalho também analisa o desempenho de diferentes heurísticas de mapeamento que usam a abordagem tanto estática quanto dinâmica e as comparam entre si sobre diferentes cenários de teste. Os trabalhos aqui descritos fazem uso de heurísticas para realizarem, da melhor forma possível, o mapeamento das tarefas, buscando minimizar o congestionamento na rede através da melhora de alguma determinada métrica. Eles são semelhantes ao aqui proposto por realizarem testes totalmente experimentais, considerando diferentes aplicações e algoritmos de roteamento, tentando identificar os possíveis problemas e características de aplicações que influenciam no custo da comunicação. A diferença está na métrica que é usada para a avaliação, pois neste trabalho apresentamos heurísticas que buscam a maximização do paralelismo das comunicações usando como métrica a taxa de reuso dos enlaces e a latência dos pacotes. Além disso, nenhum apresenta uma modelagem formal do problema do qual estão trabalhando, fato que é proposto a ser feito neste trabalho, tomando como base a abordagem do QAP, descrevendo a sua equação objetivo, que deverá ser minimizada. No próximo capítulo será descrito o simulador de Redes em Chip, SiNoC, com relação a seu objetivo de simulação, a sua implementação, às métricas que ele dá como resultado, aos roteamentos e mapeamentos que ele já vem implementados por padrão. Será também apresentado um exemplo de uso para melhor descrever seu funcionamento.

44 43 4 Simulador SiNoC Diante da dificuldade de encontrar simuladores de redes em chip de alto nível de abstração fáceis de usar, de aprender e que tenham implementadas todas as métricas que se deseja avaliar neste trabalho, foi proposta a implementação de um simulador. O SiNoC, nome vindo da junção entre Simulador e Network on Chip, foi implementado na linguagem de programação Java e tem o objetivo de avaliar as aplicações aqui estudadas quanto às métricas que ele implementa. Esse simulador é de código aberto, ou seja, é disponibilizado para que qualquer pessoa possa usar, contribuir para acrescentar funcionalidades ou corrigir eventuais bugs que possa apresentar. O código fonte do SiNoC está disponível no GitHub (SINOC, 2017). A ferramenta SiNoC se restringe, na versão atual, a fazer simulações apenas em MP- SoCs com topologia mesh 2D de qualquer dimensão, conforme ela foi inicialmente idealizada, porém isso não proíbe de, em trabalhos futuros, poder ser inserida a opção de realizar simulações com topologias genéricas de NoCs. 4.1 Métricas Calculadas O simulador possui uma série de métricas que ele calcula e apresenta como resultado. Entre elas, as principais são: Latência da aplicação: essa métrica contabiliza a latência do pacote que mais demorou para ser entregue à sua tarefa destino, fornecendo, pois, a latência total de comunicação da aplicação. Pode ser obtida em unidades (pacotes) ou em flits. Latência em hops da aplicação: essa métrica avalia qual a maior distância, em hops, percorrida por um pacote da aplicação. Somatório das latências: corresponde ao somatório total das latências dos pacotes.

45 44 Latência média dos pacotes: é a divisão do somatório total das latências dos pacotes pela quantidade de pacotes transferidos. Ela diz, em média, quanto os pacotes demoram para ser entregues. Quantidade de enlaces acessados: contabiliza quantos enlaces foram acessados. Reuso dos enlaces: contabiliza quantos enlaces foram reusados. Ou seja, quantos enlaces foram usados pelo menos duas vezes. Pode ser obtida tanto em unidades (pacotes) ou em flits. Taxa de reuso dos enlaces: contabiliza quantas vezes os enlaces foram reusados. Pode ser obtida tanto em unidades (pacotes) ou em flits. Total de flits da aplicação: contabilização do total de flits que a aplicação possui. Somatório dos acessos aos enlaces: contabiliza os acessos a todos os enlaces da NoC. Pode ser obtida em unidades (pacotes) ou em flits. 4.2 Visão da Implementação Para dar uma visão de como o SiNoC foi estruturado, usando o paradigma de orientação a objetos, apresentamos na Figura 7 um simples diagrama de classes, que descreve as suas classes principais e como elas estão relacionadas. Neste diagrama, observa-se que o projeto é dividido em pacotes. O pacote de Entidades, contém as classes que são usadas para representar entidades do simulador, como Roteador, Pacote, Enlace, entre outras. Elas armazenam os resultados de simulação para cada um desses componentes. No pacote Roteamentos, temos todas as classes de roteamento implementadas, entre elas, temos a classe Roteamento, que é a que possui os atributos e métodos que todos os roteamentos que forem implementados nesse simulador devem ter acesso. Com isso, se for implementado um novo roteamento, este deve herdar da classe Roteamento. No pacote Mapeamentos, temos as implementações dos mapeamentos contidos no simulador. No pacote Entrada- Saida, temos a classe de Entrada de dados, a qual implementa entrada por arquivo ou manual. O pacote Principal contém apenas a classe Calcula a qual é responsável por instanciar as classes necessárias para a execução do simulador. Nesta classe temos também uma simples interface de linha de comando, que é usada para tornar mais fácil e agradável o uso da ferramenta.

46 45 Figura 7: Representação do diagrama de classes da ferramenta SiNoC. O simulador, como visto no diagrama de classes da Figura 7, já implementa duas estratégias de roteamento, a XY e a XY _Y X, e também três estratégias mapeamento, o V1_decrescente, V1_crescente e o mapeamento Sequencial, as quais serão explicadas em detalhe no Capítulo 5, deste trabalho. Apesar disso, por ser uma ferramenta open source, ela pode ser facilmente estendida para implementar muitas outras estratégias de roteamento e mapeamento. 4.3 Configurações Padrão Por simplicidade, no SiNoC, a largura de banda dos canais e os buffers dos roteadores são infinitos. O simulador já tem os mecanismos de comunicação pré-fixados, não sendo possível a alteração desses. As configurações dos mecanismos de comunicação são os seguintes: Chaveamento: é feito por pacote, da forma store-and-forward, logo, os pacotes são subdivididos em flits. Quando um grafo de uma aplicação é dado como entrada para a ferramenta, cada comunicação entre suas tarefas é considerada como um pacote, e os flits são os pesos relacionados a cada uma dessas comunicações. Controle de fluxo: como os buffers dos roteadores são infinitos, não é implementado nenhum controle de fluxo específico. Entretanto, pode-se dizer que temos um controle de fluxo baseado em créditos onde a quantidade de créditos é infinita.

47 46 Roteamento: como já visto, o simulador implementa dois tipos de roteamento, sendo um não adaptativo, XY, e o outro adaptativo, XY _Y X sendo subclassificado de semi adaptativo, por evitar que os caminhos percorridos pelos pacotes se distancie de sua tarefa de destino. Arbitragem: é feita de forma distribuída, onde roteamento e a arbitragem são realizados separadamente. Assim, o algoritmo de roteamento apenas diz ao roteador qual direção o pacote deve seguir, e o árbitro de cada roteador é quem vai dizer qual melhor caminho imediato a seguir para que o pacote percorra para aquela determinada direção. Memorização: é feita de forma centralizada em cada roteador, onde os pacotes que chegam de qualquer direção são armazenados em um único buffer, o qual usa a política First-In First-Out (FIFO). Entretanto, caso em um dado instante da simulação, chegue mais de um pacote em um determinado roteador, eles são armazenados no buffer de forma crescente de acordo com seus tamanhos, em flits. Caso o tamanho seja igual, a alocação é feita de forma arbitrária. 4.4 Exemplo de Uso Para exemplificar o uso da ferramenta, e explicar como é usada na versão atual, iremos apresentar como realizar um teste para uma das aplicações aqui avaliadas. A aplicação escolhida foi a Pipe, a qual será detalhadamente apresentada e descrita no capítulo que trata dos resultados experimentais, Capítulo 6. Primeiramente, ao rodar o executável do simulador ou importar o projeto em alguma plataforma de desenvolvimento da linguagem Java, irá ser apresentado o menu de seleção do mapeamento que se deseja realizar, conforme apresentado na Figura 8. Nessa Figura, pode-se selecionar (1) a entrada do mapeamento por console, ou seja, onde o usuário digita no terminal qual núcleo receberá qual tarefa, (2) o mapeamento V1_decrescente, (3) V1_crescente, (4) Sequencial e (5) para a entrada do mapeamento por arquivo. A opção 5 foi implementada para que pudessem ser aplicadas no simulador as soluções geradas pelo algoritmo BLS. Essa opção pega uma lista de mapeamentos e aplica nas estruturas internas do simulador. A opção 0, por fim, encerra a execução do simulador. A Figura 8 ilustra a seleção da opção 3 (mapeamento V1_crescente), indicado pelo número 3, em verde, na linha mais abaixo da Figura.

48 47 Figura 8: Representação do menu de mapeamento da ferramenta SiNoC. Na Figura 9, temos a entrada do grafo da aplicação, a qual é dada pela seguinte sequência: quantidade de tarefas, quantidades de comunicações e, nas linhas subsequentes, as comunicações que são feitas, seguindo a ordem de tarefa de origem, tarefa de destino e quantidade de flits transferidos na comunicação. Nesta figura vemos a inserção (números em verde), do grafo da aplicação Pipe na ferramenta SiNoC. Observe a ordem de inserção dos parâmetros, onde, primeiramente, é inserida a quantidade de tarefas da aplicação, que neste caso são 10. Logo após, é inserida a quantidade de comunicações feitas entre essas tarefas, que neste caso são 9. As linhas seguintes, representam as comunicações que são feitas, como já dito, onde a tarefa 0 se comunica com a tarefa 1 com uma quantidade de 2000 flits, a tarefa 1 se comunica com a tarefa 2 com uma quantidade de 2000 flits, e assim vai, até a última linha, onde temos que a tarefa 8 se comunica com a tarefa 9 também com uma quantidade de Figura 9: Representação da inserção do grafo da aplicação no simulador SiNoC. Na Figura 10, temos a inserção dos parâmetros de dimensão da NoC que será simulada, sendo o primeiro valor referente às linhas e o segundo às colunas das matrizes que representam os núcleos do MPSoC e os roteadores da NoC que serão criadas internamente no simulador. Nesta figura, vemos a inserção (números em verde) de dois valores 4, referentes as linhas e colunas, ou seja, a simulação será feita em cima de um MPSoC baseado em NoC com topologia mesh 2D com dimensão 4x4.

49 48 Figura 10: Representação da inserção do tamanho da NoC no simulador SiNoC. Na Figura 11, temos a representação do menu da escolha de roteamentos, no qual temos dois tipos de simulações de roteamento. Um deles, denominado de F ull, assume que as comunicações são feitas de forma sequencial, ou seja, um pacote é transmitido por vez na rede, e cada pacote só sai de seu destino para sua origem se, e somente se, não houver outros pacotes trafegando na rede. Já o outro, o qual é chamado de ByStep, assume paralelismo total nas comunicações das tarefas e são os dados gerados por essa simulação que esse trabalho avalia. Nessa Figura são apresentadas as possíveis opções de simulação sendo (1) o roteamento XY não paralelo, (2) XY paralelo, (3) XY _Y X não paralelo, (4) XY _Y X paralelo, (5) a execução dos dois roteamentos XY e XY _Y X paralelos e por último (6) a execução de todos os roteamentos implementados pela ferramenta. Na Figura 11 vemos a seleção da opção 6, para a execução de todos os roteamentos nas duas formas de simulação. Figura 11: Representação do menu de roteamentos da ferramenta SiNoC. Na Figura 12, ilustramos como são apresentados os resultados obtidos pela ferramenta, os quais são divididos por modos de simulação, seguidos pelas métricas calculadas em cada tipo de simulação. Os resultados apresentados nessa figura mostram apenas alguns dos dados que se pode obter dessa ferramenta. Outros dados podem ser obtidos, dependendo de quais aspectos se deseja avaliar na simulação. É possível obter métricas para cada enlace, pacote, roteador, ou outro componente específico, ou até mesmo avaliar a configuração dos mapeamentos gerados por cada algoritmo aplicado.

50 Figura 12: Representação dos resultados obtidos pela ferramenta SiNoC. 49

51 50 No próximo capítulo, serão apresentados os algoritmos avaliados, de forma detalhada quanto ao seu funcionamento e explicando os seus pseudocódigos.

52 51 5 Algoritmos Avaliados Nesta seção descrevemos os quatro algoritmos usados para realização dos mapeamentos, sendo dois algoritmos heurísticos implementados pelo próprio autor, com o objetivo de prover um maior paralelismo de comunicação, que são denominados de V1_decrescente e V1_crescente. O outro é um algoritmo simples de mapeamento, o qual denominamos de Sequencial. O último é uma estratégia usada para encontrar soluções do QAP e, através dela, desejamos avaliar se é viável ou não abordar o problema como um sub caso do QAP. Os algoritmos implementados pelo autor recebem como parâmetros a rede que irá receber as tarefas, a lista de tarefas e as comunicações entre elas, incluindo quantos flits são enviados/recebidos entre cada par de tarefas. Neste trabalho, foi restringida a dimensão da rede, com topologia mesh 2D, como sendo quadrada, ou seja, com dimensão NxN. Os algoritmos tomam como primeiro passo a realização do cálculo dos graus de cada tarefa e, logo após, a sua ordenação, que no caso do V1_decrescente é feita de forma decrescente e no V1_crescente é de forma crescente. 5.1 Heurística V1_decrescente O primeiro algoritmo implementado, denominado de V1_decrescente, usa como informação heurística a quantidade de comunicações que as tarefas fazem ou recebem, para tentar alocar, de forma mais central possível e considerando alguns critérios de alocação, as tarefas que mais se comunicam. O principal passo deste algoritmo é a ordenação das tarefas baseada nessas quantidades de comunicações. O algoritmo também faz o cálculo da distância máxima de alocação entre as tarefas, que leva em consideração a quantidade de tarefas e a quantidade de núcleos do MPSoC. O cálculo é o teto da divisão entre a quantidade de núcleos pela quantidade de tarefas, já que, em nosso contexto do MP, sempre a quantidade de tarefas é menor ou igual a quantidade de processadores. Após esse cálculo, é feita a alocação da primeira tarefa, a qual deve ser alocada no centro da rede, ou o mais próximo possível do centro. Em seguida, é feita a alocação das próximas tarefas,

53 52 até que todas estejam alocadas. A sequência seguida para alocação é a seguinte: o algoritmo tenta alocar as tarefas nos núcleos posicionados nas laterais do núcleo onde a tarefa atual foi alocada. Caso não consiga, tenta nas diagonais. Caso as duas condições de alocação não sejam satisfeitas, é decrementado, em uma unidade, o valor do salto máximo para alocação e os critérios são aplicados novamente até que todas as tarefas sejam alocadas. O algoritmo obtém como resultado o mapeamento proposto para a rede especificada. No Algoritmo 1, é apresentado o pseudocódigo da heurística V1_decrescente. Nas Figuras 13 e 14, são ilustradas as estratégias de alocar nas laterais e nas diagonais, respectivamente. Nessas figuras, que representam um MPSoC baseado em NoC, com dimensão 4x4, semelhante á usada neste trabalho para as simulações, o círculo com borda (círculo na cor preta com borda branca), em um dos núcleos centrais da rede, representa a primeira tarefa alocada, os círculos com um X (na cor vermelha) representam posições de alocação em que não é possível ser alocado, pois não obedece a restrição do salto máximo de alocação. E os círculos simples (na cor azul) representam candidatos de alocação, os quais são avaliados, no fim desse processo feito pela estratégia de alocação, onde é escolhido o candidato que esteja o mais central possível na rede, já que essa estratégia procura alocar as tarefas que mais se comunicam o mais central possível na rede. Algoritmo 1: V1_decrescente Data: Rede network e lista de tarefas tasklist. Result: Rede network, com o mapeamento proposto. 1 Calcula os graus das tarefas de tasklist 2 Ordena de forma DECRESCENTE os elementos de tasklist 3 Calcula a distância máxima de alocação 4 Aloca a primeira tarefa 5 for tarefa tasklist do 6 Aloca tarefa o mais central possível em network seguindo os critérios de alocação 7 end

54 53 (a) Lateral Leste. (b) Lateral Oeste. (c) Lateral Sul. (d) Lateral Norte. Figura 13: Representação do passo-a-passo da estratégia de alocar nas laterais.

55 54 (a) Diagonal Leste. (b) Diagonal Oeste. (c) Diagonal Sul. (d) Diagonal Norte. Figura 14: Representação do passo-a-passo da estratégia de alocar nas diagonais.

56 Heurística V1_crescente Esta heurística surgiu a partir do algoritmo anterior, pela a observação de que ele congestiona bastante o centro da rede, já que tenta alocar o mais central possível as tarefas que mais se comunicam. Para tentar evitar esse congestionamento, e também, avaliar como a heurística se comporta quando aplicando a ordenação de forma crescente, é que essa abordagem foi criada. Com isso, a descrição dada para o algoritmo V1_decrescente, anterior, também pode ser dada para o V1_crescente, assim como seu pseudo código, alterando apenas a forma em que é feita a ordenação, que neste caso é crescente como visto no pseudocódigo apresentado no Algoritmo 2. Algoritmo 2: V1_crescente Data: Rede network e lista de tarefas tasklist. Result: Rede network, com o mapeamento proposto. 1 Calcula os graus das tarefas de tasklist. 2 Ordena de forma CRESCENTE os elementos de tasklist. 3 Calcula a distância máxima de alocação. 4 Aloca a primeira tarefa. 5 for tarefa tasklist do 6 Aloca tarefa o mais central possível em network seguindo os critérios de alocação 7 end Para esse algoritmo, omitimos as representações gráficas das estratégias de alocação, já que elas são as mesmas vistas nas Figuras 13 e 14, da seção anterior. 5.3 Sequencial O Sequencial, também conhecido por Direto por Linha (MANDELLI, 2011) ou First Free (CARVALHO, 2009), é um mapeamento de tarefas, que seleciona, de forma sequencial, o primeiro recurso disponível que possa executar uma dada tarefa da lista de tarefas da aplicação. O mapeamento começa do primeiro núcleo do MPSoC, no canto superior esquerdo, e segue de forma crescente até mapear todas as tarefas da aplicação, sem considerar nenhuma métrica adicional. Espera-se que esse mapeamento não apresente bons resultados, porém ele não necessariamente poderá apresentar os piores resultados para alguns tipos de aplicações. A figura 15 mostra uma ilustração de como é feito o mapeamento usando essa estratégia.

57 56 Figura 15: Representação da sequência de núcleos percorridos pelo mapeamento Sequencial, quando no mapeamento de uma dada aplicação. 5.4 Breakout Local Search O BLS tem uma abordagem conceitualmente simples, a qual usa as estratégias de busca local e perturbação adaptativa para melhor explorar o espaço de busca. Esse algoritmo foi proposto por (BENLIC; HAO, 2013), e é uma abordagem usada para resolução do QAP que vem apresentando bons resultados quando comparado com os melhores resultados conhecidos na literatura, usando as instâncias disponíveis no benchmark do QAPLIB 1 (BURKARD; KARISCH; RENDL, 1997). Vale salientar que o BLS não é um algoritmo proposto para resolução do MP, mas sim do QAP, logo, conceitos como espaço de busca, ótimo local, região de exploração, entre outros aqui abordados, não estão ligados à arquitetura da NoC. O que o BLS faz neste trabalho é gerar soluções de mapeamento a partir de dois grafos genéricos, um da aplicação e outro que representa a NoC. As soluções geradas não levam em conta o modo como as tarefas são alocadas e nem em qual parte da NoC as tarefas estão agrupadas, são levados apenas em consideração o custo das informações trocadas entre cada par de tarefas e a distância dos núcleos onde elas foram alocadas com o único objetivo de fazer a minimização do somatório total do produtos entre esses custos e distâncias. O BLS alterna entre duas fases, a primeira é a fase de busca local, que tem o objetivo de alcançar um ótimo local, e a segunda é a da perturbação dedicada, com o objetivo de descobrir regiões ainda não percorridas. De forma mais detalhada, o algoritmo parte de uma solução inicial π 0, na qual é aplicado um procedimento chamado de steepest descent, que detalharemos melhor no decorrer deste texto, para encontrar um ótimo local π. A cada 1

58 57 passo de iteração do procedimento steepest descent, é percorrida toda a vizinhança de π 0 e com isso, é selecionada a melhor solução vizinha que tenha o melhor valor objetivo, quando comparado com π 0 e suas outras soluções vizinhas. Caso tal solução com melhor valor objetivo não exista na vizinhança, um ótimo local foi alcançado, ou seja, foi encontrado o π. Neste ponto, se encerra a primeira fase do BLS, e então se inicia a segunda fase, onde o BLS tenta escapar deste ótimo local π, aplicando uma quantidade adequada de movimentos de perturbação dedicada em π. O π resultante após aplicação da perturbação torna-se o π 0 da próxima execução do procedimento steepest descent. Segundo (BENLIC; HAO, 2013), para se obter sucesso em qualquer abordagem de busca local, é necessária uma escolha correta do grau de diversificação aplicado na busca. Além disso, um grau de diversificação ótimo para um determinado estágio da busca, não necessariamente é ótimo para outro estágio. O grau de diversificação aplicado por um mecanismo de perturbação depende do número de movimentos de perturbação e do tipo de movimento usado, pois se a diversificação é muito fraca, a busca, muito possivelmente, poderá ficar oscilando entre dois ou mais ótimos locais, conduzindo a uma estagnação. Por outro lado, uma diversificação muito forte, tem o mesmo efeito que um reinício randômico, o que pode prejudicar a descoberta de melhores soluções nas fases seguintes da busca local. O mecanismo de perturbação empregado pelo BLS tem a ideia básica de introduzir graus de diversificação adequados, que são requeridos por determinadas fases da busca. Isso é feito dinamicamente, através da determinação do número de movimentos de perturbação, o qual representamos pelo símbolo L, e pela escolha adaptativa entre três tipos de movimentos de perturbação, cada qual com uma determinada intensidade. O Algoritmo 3 apresenta o algoritmo BLS, assim como descrito em (BENLIC; HAO, 2013). Ele apresenta as seguintes seções: começando com a solução randômica inicial, o BLS aplica o procedimento steepest descent para encontrar um ótimo local π (linhas 10-16). O número de movimentos de perturbação L, é determinado dependendo se a busca conseguiu escapar do ótimo local, se ela retornou para o ótimo local anterior ou se a busca estagnou em uma região não promissora (linhas 26-39). Por último, a aplicação de L movimentos de perturbação com o objetivo de obter um novo ponto inicial para a próxima aplicação do procedimento steepest descent.

59 58 Algoritmo 3: Breakout Local Search Data: Matrizes de fluxos F e de distâncias D com dimensões n x n. Result: Uma permutação π sobre um conjunto de locais. 1 π permutação randômica de {1,..., n} 2 c C(π) /* c guarda o valor objetivo da solução atual */ 3 Computa a matriz δ inicial n x n de movimentos de ganho 4 π melhor π /* π melhor guarda a melhor solução encontrada até agora */ 5 c melhor C(π) /* c melhor guarda o valor objetivo da melhor solução encontrada até agora */ 6 c p c /* c p guarda o melhor valor objetivo da última aplicação do steepest descent */ 7 ω 0 /* ω é um contador dos consecutivos locais ótimos não melhorados */ 8 L L 0 /* coloca em L (número de movimentos de perturbação) o seu valor default */ 9 while Condição de parada não alcançada do 10 while swap(u, v) tal que (c + δ(π, u, v) < c) do 11 π π swap(π, u, v) /* aplica o melhor movimento de troca */ 12 c c + δ(π, u, v) 13 H uv Iter /*atualiza a quantidade de iterações de quando o movimento uv foi feito */ 14 Atualiza a matriz δ 15 Iter Iter end 17 if c < c melhor then 18 π melhor π /* atualiza a melhor solução */ 19 c melhor c /* atualiza o melhor valor objetivo */ 20 ω 0 /* reseta o contador dos consecutivos locais ótimos não melhorados */ 21 else 22 if c! = c p then 23 ω ω end 25 end 26 /* Determina L para ser aplicado em π */ 27 if ω > T then 28 /* a busca parece ter estagnado */ 29 L L max /* atribui a L um valor muito grande*/ 30 ω 0 31 else 32 if c = c p then 33 /* A busca retornou para o ótimo local anterior */ 34 L L + 1 /* Incrementa em 1 o número de movimentos de perturbação */ 35 else 36 /* A busca escapou do ótimo local anterior */ 37 L L 0 /* Reinicia o número de movimentos de perturbação */ 38 end 39 end 40 /* Aplica a perturbação no ótimo local atual π com L movimentos de perturbação */ 41 c p c /* Atualiza o valor objetivo do ótimo local anterior */ 42 π Perturbation(π, L, H, Iter, δ, ω) 43 end Dada a ideia geral do algoritmo e a apresentação de sua implementação em Algoritmo 3, podemos agora detalhar melhor cada uma de suas partes: Exploração da vizinhança:

60 59 Para a exploração da vizinhança, foi usado o método de trocar dois elementos de posição, o qual é chamado de dois-troca, dado que, como já visto na formulação do QAP, uma solução para o problema, π, é uma permutação de {1,..., n}, tal que π i, denota o local atribuído ao recurso i {1,..., n}. (BENLIC; HAO, 2013) dá a seguinte definição para vizinhança: Definicão 1. Vizinhança (BENLIC; HAO, 2013) Define-se a vizinhança N(π) de uma determinada solução π, como todas as permutações que podem ser obtidas pela troca de quaisquer dois valores π u e π v, ou seja, N(π) = {π π u = π v, π v = π u, u v e π i = π i, i u, v}. O BLS usa o procedimento steepest descent para explorar toda essa vizinhança até que um ótimo local seja alcançado, ou seja, a cada iteração, o procedimento steepest descent identifica a melhor troca e a aplica em π com o objetivo de obter a melhor solução (observe as linhas de 10 a 16 do Algoritmo 3). Note que, a vizinhança N(π) possui n(n 1) 2 elementos e que o algoritmo tem um custo de O(n 4 ) para avaliar todas as soluções da vizinhança. Atualização do movimento de ganho: Seja π uma solução. Definimos swap(r, s) como um movimento de troca, e π swap(r, s) como a solução da vizinhança de π obtida pela aplicação de swap(r, s) em π, tal que r, s, {1,..., n} e r s. (BENLIC; HAO, 2013) apresenta uma forma de calcular a variação do custo entre as duas soluções π e π, δ(π, r, s) = C(π) C(π ), também chamado de movimento de ganho de swap(r, s), de forma eficiente. Por simplicidade, aqui omitimos mais detalhes sobre essa abordagem feita por (BENLIC; HAO, 2013), porém citamos que ela simplifica a complexidade dos cálculos feitos, dando um tempo de O(n 2 ), em vez de O(n 4 ), como é feito se for calcular a δ(π, r, s) usando diretamente a equação da própria formulação do QAP. Mecanismo de perturbação adaptativa: Dado que o procedimento steepest descent, aplicado no BLS, sozinho não pode sair de ótimos locais, um mecanismo de perturbação torna-se crucial. Nas subseções seguintes, descrevemos esses mecanismos aplicados no BLS, que são dados pela variação do número de movimentos de perturbação e por três tipos de movimentos de perturbação, que são aplicados dependendo do atual estado da busca. Nas subseções também apresentamos os pseudocódigos destes mecanismos.

61 60 Número de movimentos de perturbação: No BLS, depois de cada fase de busca, é feito um determinado número de movimentos de perturbação L, já especificado, ou randômico, que asseguram a saída do ótimo local atual e também que não haja nenhum tipo de atração para esse ótimo local, através de sua vizinhança. Porém, se após essa aplicação, ainda não foi possível escapar do ótimo local, o número de movimentos de perturbação L é incrementado e a perturbação é aplicada novamente. Caso contrário, é atribuído a L o seu valor default. Uma perturbação mais forte é aplicada, caso se tenha uma certa quantidade T de ótimos locais sem nenhum melhoramento na qualidade de seu resultado, quando comparado ao melhor resultado encontrado até o dado momento. Essa perturbação mais forte assegura que a trajetória da busca não se restringe a apenas uma subparte do espaço de busca, fazendo a busca migrar para outra região ainda não avaliada. Na Figura 16, apresentamos uma ilustração de como a estratégia de busca empregada pelo BLS tenta explorar o espaço de busca. Figura 16: Ilustração da trajetória da busca aplicada pelo BLS. Imagem obtida de (BEN- LIC; HAO, 2013). Os três tipos de movimentos de perturbação: Evitando a repetida aplicação de movimentos randômicos de perturbação, o BLS alterna entre três tipos de movimentos, os quais são: direto, recente e o movimento randômico. A perturbação direta se baseia nos princípios da busca tabu, a qual usa uma lista de movimentos proibidos. Apesar disso, o algoritmo permite a aplicação

62 61 de alguns movimentos, caso algum deles não tenha sido aplicado em uma determinada quantidade de iterações e a sua aplicação gere uma solução com melhor valor objetivo do que a solução atual. Logo, essa perturbação aplica os seguintes critérios: informação histórica sobre cada movimento, de acordo com o tempo em que ele foi aplicado, e a qualidade dos movimentos aplicados na perturbação, com o objetivo de não prejudicar a solução que foi perturbada. A solução escolhida por essa perturbação é obtida pela seguinte formulação: A = {swap(u, v) min{δ(π, u, v)}, (H uv + γ) < Iter ou (δ(π, u, v) + c) < c melhor, u v e 1 u, v n} onde H é a matriz que mantém o controle da quantidade de iterações quando o movimento foi feito pela última vez, Iter é a quantidade de iterações atual, c é o custo da solução atual e c melhor é o custo da melhor solução encontrada até o momento. Note que um alto valor para γ, implica em uma forte diversificação das soluções. A perturbação recente, ou seja, baseada apenas em informações históricas providas pela matriz H, aplica a perturbação considerando apenas os movimentos feitos recentemente, não levando em consideração se a solução é degradada devido ao movimento de perturbação. Mais formalmente, é definido como: B = {swap(u, v) min{h uv }, u v e 1 u, v, n} A permutação randômica, simplesmente aplica a troca nas posições que são selecionados uniformemente de forma randômica. Mais formalmente, temos: C = {swap(u, v) u v e 1 u, v n} Para assegurar o melhor balanceamento possível entre a intensificação e a diversificação da busca, o BLS aplica dinamicamente, dependendo do estado da busca, as probabilidades de aplicar uma das três estratégias de perturbação. A seguir apresentamos como é feita a probabilidade P, que é aplicada para escolha do tipo de perturbação: { e ω/t, se e ω/t > P 0 P = P 0, cc

63 62 onde ω é a quantidade de ótimos locais não melhorados, T o número máximo de ótimos locais não melhorados e P 0 é um limiar que garante o menor valor que P pode assumir. Com isso, dado uma probabilidade P, para a aplicação da perturbação direta, a probabilidade de aplicar a perturbação recente é (1 P ) Q e a da perturbação randômica é (1 P ) (1 Q), onde Q é uma constante no intervalo de [0, 1]. Algoritmo 4: Perturbation Data: Ótimo local π, intensidade da perturbação L, matriz H, contador global de iterações Iter, matriz de movimentos de ganho δ e número de ótimos locais consecutivos não melhorados ω. Result: Uma perturbação da solução π 1 Determina a probabilidade P, de acordo com a fórmula apresentada 2 Com probabilidade P, π P erturb(π, L, H, Iter, δ, ω, A) /* Perturbação direta */ 3 Com probabilidade (1 P ) Q, π P erturb(π, L, H, Iter, δ, ω, B) /* Perturbação recente */ 4 Com probabilidade (1 P ) (1 Q), π P erturb(π, L, H, Iter, δ, ω, C) /* Perturbação randômica */ 5 Return π

64 63 Algoritmo 5: Perturb Data: Ótimo local π, intensidade da perturbação L, matriz H, contador global de iterações Iter, matriz de movimentos de ganho δ, número de ótimos locais consecutivos não melhorados ω e o conjunto de movimentos de perturbação M. Result: Uma perturbação da solução π 1 for i := 1 até L do 2 Aplique swap(u, v) 3 π π swap(π, u, v) 4 c c + δ(π, u, v) 5 H uv Iter 6 Atualize matriz de movimentos de ganho δ e M 7 if c < c melhor then 8 π π /* Atualiza a melhor solução encontrada */ 9 c melhor c /* Atualiza o valor objetivo referente a melhor solução encontrada */ 10 ω 0 /* Reseta o contador de ótimo locais consecutivos não melhorados */ 11 end 12 end 13 Return π No próximo capítulo, serão apresentados e discutidos os resultados obtidos através da execução desses algoritmos na ferramenta SiNoC, com o objetivo de avaliar os seus desempenhos com relação a algumas métricas, tais como latência da aplicação e taxa de reuso dos enlaces.

65 64 6 Resultados Experimentais Nesta seção, descrevemos os testes realizados e os resultados obtidos para diferentes cenários sobre diferentes instâncias cujos fluxos de dados se assemelham aos de aplicações reais. Aqui serão apresentadas as instâncias usadas, que também chamamos de aplicações, e todos os passos seguidos para a obtenção dos melhores mapeamentos encontrados para cada uma delas. Para a avaliação, foram usados dois cenários, diferenciando um do outro apenas na quantidade de processadores usados, sendo o cenário A, usando um MPSoC com dimensão de 4 linhas e 4 colunas, ou seja, 16 processadores, e o cenário B usando um MPSoC com 8 linhas e 8 colunas, ou seja, 64 processadores. Em ambos os cenários, são usados MPSoCs homogêneos cujos seus núcleos estão dispostos em uma NoC com topologia mesh 2D, onde a distribuição dos roteadores possuem a mesma dimensão que os núcleos dos MPSoCs dos cenários A e B, respectivamente. Na Figura 17, apresentamos as representações dos grafos das NoCs usadas nos dois cenários de testes. (a) NoC com dimensão 4x4. (b) NoC com dimensão 8x8. Figura 17: Representações das duas diferentes NoCs usadas nos cenários de avaliações, sendo a 4x4 no cenário A e a 8x8 no cenário B.

66 Aplicações Utilizadas Agora apresentamos as aplicações usadas para as avaliações, descrevendo o contexto em que são usadas e as características dos seus fluxos de dados. Todas as aplicações aqui avaliadas foram retiradas de (CARVALHO, 2009), com pequenas adaptações com relação ao fluxo de dados, pois, em (CARVALHO, 2009), elas são usadas para a avaliação dos desempenhos de heurísticas para o mapeamento dinâmico de tarefas, e, para este trabalho, objetivamos a avaliação dos mapeamento estáticos de tarefas. A primeira aplicação avaliada foi a Integral de Romberg (IR), que representa um método baseado em aproximações sucessivas no cálculo da integral de uma dada função. Essa aplicação possui 10 tarefas e um fluxo de dados semelhante a um triângulo retângulo. Ela também é usada em (MARCON et al., 2005a) e o seu grafo é apresentado na Figura 18. Figura 18: Representação do grafo da aplicação Integral de Romberg. A segunda aplicação foi a MPEG-4, a qual foi definida pelo Moving Picture Experts Group (MPEG), como um padrão usado para compressão de dados digitais de áudio e vídeo. Ela possui um total de 13 tarefas e seu grafo pode ser visto na Figura 19.

67 66 Figura 19: Representação do grafo da aplicação MPEG-4. A terceira aplicação avaliada foi a Multi-Window Display (MWD), que possui, ao todo, 12 tarefas. Essa aplicação também foi empregada nos trabalhos de (JALABERT et al., 2004b) e (BERTOZZI et al., 2005). Não há uma descrição específica sobre ela nos trabalhos citados, nem na literatura revisada no trabalho de (CARVALHO, 2009) e na revisão feita neste trabalho. A Figura 20 mostra o grafo dessa aplicação. Figura 20: Representação do grafo da aplicação MWD. A quarta aplicação, a qual denominamos de Pipe, tem uma topologia de grafo similar a um pipeline, sendo um grafo característico de aplicações que são orientadas a fluxo de dados. Essa aplicação contém 10 tarefas e seu grafo é apresentado na Figura 21.

68 67 Figura 21: Representação do grafo da aplicação Pipe. A quinta aplicação foi a Tree, a qual tem a topologia de grafo semelhante a de uma árvore, representando aplicações que possuem um alto grau de paralelismo de execução entre suas tarefas. Tal aplicação possui 10 tarefas e seu grafo é apresentado na Figura 22. Figura 22: Representação do grafo da aplicação Tree. A sexta e última aplicação usada é a Video Object Plane Decoder (VOPD). A execução dessa aplicação, em situações reais, requer recursos com alto desempenho e uma grande largura de banda para suportar transmissões de vídeo de alta definição. Essa aplicação já foi bastante usada em trabalhos envolvendo mapeamento de tarefas presentes na literatura (TOL; JASPERS, 2002), (MURALI; MICHELI, 2004), (JALABERT et al., 2004a), (MARCON et al., 2005b) e (BERTOZZI et al., 2005), e esse é um dos motivos de a mesma estar sendo usanda neste trabalho. A aplicação possui um total de 13 tarefas e o seu grafo é apresentado na Figura 23.

69 68 Figura 23: Representação do grafo da aplicação VOPD. Para efeito de comparação da quantidade de informação que cada aplicação transfere, como um todo, entre suas tarefas, é apresentado na Tabela 1, uma lista com esse detalhamento. Essa contagem de quantidade de informação é feita em flits, que como visto, na fundamentação teórica deste trabalho, Capítulo 2, representa a unidade de medida de troca de informação que estamos aqui utilizando e essa medida também é usada para a contabilização das métricas latência da aplicação e latência média de informação trocada entre as tarefas. Aplicação Quantidade de Flits IR 1500 MPEG MWD 1200 Pipe Tree 9000 VOPD 1030 Tabela 1: Quantidade de flits contido em cada aplicação. 6.2 Adequação das Aplicações Como visto no capítulo sobre a Fundamentação Teórica, a formulação do Problema Quadrático de Alocação requer duas matrizes, uma matriz de fluxo F e outra de distância D. A matriz de fluxo indica a quantidade de informações que são transferidas entre cada recurso definido na instância. Já a matriz de distância indica a distância entre cada par de locais definidos. Além disso, na formulação clássica para o QAP, essas matrizes apresentam

70 69 mesmas dimensões, restrição que não necessariamente está presente nos casos de teste para o Problema do Mapeamento abordado neste trabalho. Essa restrição de dimensão do QAP implica que, no MP, a quantidade de tarefas de uma aplicação seja a mesma que a quantidade de núcleos do MPSoC no qual ela será executada. Como as aplicações do MP não se enquadram na formulação do QAP, para que elas sejam consideradas entradas válidas para o algoritmo BLS, deve ser elaborada alguma estratégia para realizar essa adequação. Para fazer a adequação da aplicação para o QAP, foram criadas tarefas fantasmas, em uma quantidade equivalente à que falta para a aplicação se enquadrar na formulação do QAP, ou seja, a mesma quantidade que os núcleos do MPSoC avaliado. Pode-se definir, informalmente, tarefas fantasmas como aquelas cujos fluxos e as distâncias para qualquer outra tarefa, também fantasma ou não, tenham valor 0. Mais formalmente, destacamos a definição 2, a seguir: Definicão 2. Tarefas Fantasmas Seja T o conjunto de tarefas necessárias para o uso da formulação do QAP, e T a o conjunto de todas as tarefas da aplicação, tal que T a T. Chamamos de tarefas fantasmas os elementos de um conjunto T f, onde T f T, e tal que T a T f = e T a T f = T. Além disso, para todo elemento t f T f, F (t f, t) = 0 e F (t, t f ) = 0, para todo t T. Após a criação das tarefas fantasmas cria-se o que chamamos de matriz de adjacências estendida da aplicação, que é a matriz dos elementos do conjunto T, a qual será usada no algoritmo. Observe que chamamos de matriz de adjacências estendida por ela conter todos os elementos de T, ou seja, tanto tarefas fantasmas como não fantasmas e, a depender do tamanho da aplicação e do MPSoC, a quantidade de tarefas fantasmas pode ser muito maior do que as não fantasmas. Como exemplo, para a aplicação Pipe (que possui 10 tarefas), executando sobre um MPSoC com 16 núcleos, devemos criar 6 tarefas fantasmas. A matriz de adjacências para essa aplicação ficará como a mostrada na Tabela 2, na qual os números da primeira linha e da primeira coluna representam cada tarefa da aplicação e os restantes representam a quantidade de informações transferidas de uma tarefa para outra.

71 70 t Tabela 2: Representação da matriz de fluxo gerada para a aplicação Pipe. Para a geração da matriz de distância, que se refere à topologia e dimensão do MPSoC usado neste trabalho, usamos o algoritmo Floyd-Warshall (CORMEN, 2009), o qual é usado para encontrar as distâncias dos menores caminhos entre todos os pares de vértices de qualquer grafo ponderado com arestas de pesos positivos ou negativos e que não possua ciclos negativos. A matriz de distância gerada para o grafo do MPSoC com 16 núcleos usada no cenário A é a mostrada na Tabela 3, na qual os números da primeira linha e da primeira coluna representam cada núcleo do MPSoC e os restantes representam as menores distâncias em cada par de núcleos. Note que a indexação dos núcleos do MPSoC sofreu um deslocamento de menos uma posição ao ser criada a matriz de distâncias, de forma que a indexação dos núcleos se inicia em 0. Isso ocorre pela necessidade de adequação também para a entrada do BLS, que exige esse tipo de configuração. Porém, quando aplicamos os resultados gerados pelo BLS na ferramenta SiNoC, foi usada a configuração padrão da ferramenta, na qual a indexação dos núcleos começa em 1. d Tabela 3: Representação da matriz de distância gerada para um MPSoC de tamanho 16, obtida através da execução do algoritmo Floyd Warshall.

72 71 Da mesma forma, outras matrizes semelhantes á mostrada em 2 foram geradas, uma para cada aplicação e nos diferentes cenários, ou seja, para tamanho 16 e 64. A matriz de distância para o MPSoC de 64 núcleos, usado no cenário B, também foi gerada, porém por ser uma matriz de grande dimensão, é omitida a sua representação aqui, assim também como a representação das matrizes de fluxo de cada aplicação nos cenários A e B. 6.3 Resultados de Otimização Nesta seção, descrevemos os resultados da parte de otimização do trabalho. Para a realização dos teste foi usado o GNU g++, um processador Intel core I5 com 2.7 GHz de frequência, 6 MB de memória cache e memória RAM DDR3 de 4 GB. Para melhor avaliação dos resultados obtidos, foram feitas, para cada uma das 6 aplicações, 30 execuções independentes, cada uma com exatamente dois minutos de duração. A implementação do algoritmo BLS foi gentilmente disponibilizada pelos seus autores em (BENLIC; HAO, 2013) 1. A configuração de parâmetros do algoritmo BLS foi mantida tal como disponibilizado. Essa configuração é apresentada na Tabela 4, em função do valor n que representa o tamanho do problema. Descrição Valor Número inicial de movimentos de perturbação 0,15*n Número máximo de movimentos de perturbação randômico [0,4*n: 0,6*n) Número máximo de soluções não melhoradas antes da perturbação mais forte 2500 Ocupação da lista tabu randômico [1:n) Menor probabilidade para a aplicação da perturbação direta 0,75 Probabilidade de aplicação da perturbação baseada nas anteriores 0,7 Tabela 4: Configuração dos valores usados nos parâmetros do BLS na execução das aplicações. Para as aplicações com tamanho 16, foram obtidos os resultados apresentados na Tabela 5. Nessa tabela são apresentados os campos Custo, que se refere ao melhor custo de alocação encontrado por cada execução do algoritmo para cada aplicação; Iteração, que se refere a quantas interações foram levadas para encontrar aquele melhor custo; e o Tempo, que indica o tempo no qual a melhor solução foi encontrada. Para essas métricas, são apresentadas as médias e os desvios padrões das execuções, denotados pelos símbolos µ e σ, respectivamente. 1

73 72 Custo Iteração Tempo Aplicação µ σ µ σ µ σ IR 1800,0 0,0 67, ,3237 0,0016 0,0015 MPEG ,0 0, , ,8350 0,6828 1,6312 MWD 1300,0 0,0 35, ,0708 0,0007 0,0009 Pipe 18000,0 0,0 39, ,5313 0,0006 0,0004 Tree 9000,0 0,0 28, ,2951 0,0005 0,0007 VOPD 1050,0 0,0 114, ,6472 0,0020 0,0028 Tabela 5: Dados referentes às soluções geradas pelo algoritmo BLS para as aplicações com tamanho 16. Com base nesses resultados, observamos que, no geral, as 30 execuções de cada aplicação obtiveram os mesmos resultados para os custos, fato que pode ser identificado observando os desvios padrões dos custos obtidos, todos com valor 0, 0. Com relação às iterações, observou-se um alto desvio padrão, indicando que o BLS pode encontrar soluções em uma variação muito grande de iterações, isso sendo decorrente de sua natureza randômica na geração da solução inicial e da exploração do espaço de busca. Com relação ao tempo, observou-se que são relativamente curtos e que nenhum necessitou de todos os dois minutos de tempo máximo de execução como foi especificado. Para a aplicação MPEG-4, notou-se uma maior média nas iterações e nos tempos de execução. Além disso, vê-se também altos valores de desvios padrões, provavelmente, devido a ela ser a aplicação que possui maior diversidade, com relação ao peso de suas comunicações e, com isso, requerer um tempo maior de exploração do espaço de busca para encontrar a última solução de melhor custo. Na Figura 24, são apresentados os gráficos de dispersão para cada uma das aplicações, comparando Iterações e Tempos, nos quais são plotadas todas as 30 soluções geradas pelo BLS, em cada execução do algoritmo. Nesses gráficos pode-se constatar a diversidade das soluções geradas, justificando os valores de desvios padrões das iterações e tempo, apresentados na Tabela 5. Aqui omitimos uma representação gráfica dos valores obtidos para os custos, já que eles sempre foram os mesmos. Observe a variação de valores na escala de cada um dos gráficos apresentados na Figura 24. Essa variação foi dada para que todos os pontos que representam soluções pudessem ser vistos, pois se fosse fixado uma única escala para todos os gráficos não seria possível uma boa visualização, já que numa escala pequena, pontos com altos valores poderiam não ser vistos, bem como, uma escala grande poderia agrupar vários pontos muito próximos, não sendo possível a visualização da diversidade das soluções.

74 73 (a) Integral de Romberg (b) MPEG-4 (c) MWD (d) Pipe (e) Tree (f) VOPD Figura 24: Diagramas de dispersão (Iterações x Tempo) das soluções geradas para cada aplicação com tamanho 16. De forma análoga à feita para as aplicações com tamanho 16, foi feito também para com as de tamanho 64, cujos resultados são vistos na Tabela 6. Da mesma forma, nela são avaliados Custo (melhores custos de alocação encontrado por cada execução do algoritmo para cada aplicação), Iteração (quantidade de iterações para encontrar aquele melhor

75 74 custo), e Tempo (tempo no qual a melhor solução foi encontrada). Para essas métricas são apresentadas as médias e os desvios padrões das execuções, denotados pelos símbolos µ e σ, respectivamente. Custo Iteração Tempo Aplicação µ σ µ σ µ σ IR 1800,0 0,0 67, ,3230 0,0100 0,0055 MPEG ,0 0,0 7911, ,1511 1,9201 2,9123 MWD 1300,0 0,0 83, ,6451 0,0157 0,0082 Pipe 18000,0 0,0 99, ,9670 0,0224 0,0108 Tree 9000,0 0,0 97, ,2428 0,0195 0,0139 VOPD 1050,0 0,0 155, ,4787 0,0393 0,0455 Tabela 6: Dados referentes às soluções geradas pelo algoritmo BLS para as aplicações com tamanho 64. Assim como observado para instâncias com tamanho 16, os resultados para a métrica Custo foram sempre os mesmos, sendo iguais também aos dos problemas de tamanho 16. Para a quantidade de iterações, obtivemos uma grande variação, o que pode ser observado pelos desvios padrões. Para o tempo, obtivemos soluções em tempo relativamente curtos, se comparado com outras aplicações com tamanhos maiores ou iguais apresentadas na literatura (BENLIC; HAO, 2013). Na Figura 25 são apresentados gráficos de dispersão para cada uma das aplicações, os quais comparam Iterações e Tempos, plotando todas as 30 soluções geradas pelo BLS, em cada execução do algoritmo. Neles constata-se a diversidade das soluções geradas, servindo de justificativa aos valores de desvios padrões das iterações e tempos, apresentados na Tabela 6. É omitida a representação gráfica dos valores obtidos para os custos, já que eles sempre foram os iguais.

76 75 (a) Integral de Romberg (b) MPEG-4 (c) MWD (d) Pipe (e) Tree (f) VOPD Figura 25: Diagramas de dispersão (Iterações x Tempo) das soluções geradas para cada aplicação com tamanho 64. Com o objetivo de realizar uma comparação entre as duas abordagens de tamanho das aplicações, os resultados obtidos foram agrupados na Tabela 7, para melhor visualização. Nesta Tabela, comparamos as iterações médias e os tempos médios, cada um contendo os resultados para as instâncias de tamanhos 16 e 64, assim como a grandeza da diferença

77 76 entre essas duas abordagens. Essa grandeza representa quanto um resultado foi melhor do que o outro, em outras palavras, quantas vezes um resultado é maior do que o outro. Nesses resultados vê-se que, na maioria dos casos, o problema com maior tamanho executa mais iterações para poder encontrar a última melhor solução, sendo a diferença de quantidade de iterações mais atenuada nas aplicações MWD, Pipe e Tree. As aplicações IR e VOPD apresentam essa mesma característica, porém a diferença de grandeza é menor, sendo 1, 0010 e 1, 3622, respectivamente. Nota-se na aplicação MPEG-4 uma irregularidade desse padrão seguido pelas aplicações previamente discutidas. Nela, vê-se uma grande diferença entre os resultados de quantidade de iterações entre os diferentes tamanhos de problemas, onde os problemas com tamanho 16 executam muito mais iterações do que os com tamanho 64 ( vezes maior). Esse resultado pode estar sendo causado pela quantidade de trocas que o BLS faz para gerar as soluções da vizinhança a cada iteração, pois se o problema é pequeno, o algoritmo deve realizar mais trocas do que um problema grande, consequentemente, acarretando em uma maior quantidade de iterações. Esse resultado ainda é passível de avaliação para a identificação se ele representa uma anormalidade nos dados, ou se é uma característica dessa aplicação específica e de outras aplicações semelhantes a ela. Comparando os tempos de execução dos algoritmos, vê-se que as instâncias com tamanho 16 tomam bem menos tempo para poder encontrar a última melhor solução, do que as instâncias com tamanho 64, sendo essas diferenças mais significativas para as aplicações MWD, Pipe, Tree e VOPD. As aplicações IR e MPEG-4, apresentam diferenças menos significativas com relação ao tempo de execução das aplicações. Fazendo uma comparação com os tempos gastos entre essas aplicações e algumas apresentadas no trabalho de (BENLIC; HAO, 2013), constata-se que, apesar de na literatura, instâncias com tamanho maior do que 25 tarefas e MPSoCs com quantidade de núcleos maior do que 25 serem consideradas muito difíceis (WANG et al., 2016), as instâncias aqui avaliadas não são consideradas difíceis para o QAP. Pode-se notar isso observando que os tempos necessários para encontrar o último melhor resultado são relativamente curtos, quando comparados com os tempos para encontrar os resultados em algumas instâncias de menores tamanhos apresentados no trabalho de (BENLIC; HAO, 2013). Embora as instâncias sejam grandes (tamanho 64), as tarefas que realmente influenciam no cálculo da função objetivo do QAP são as reais (não fantasmas). E as tarefas fantasmas, por não receberem e nem transmitirem informações, acabam não degradando tanto o tempo de execução do algoritmo.

78 77 Iteração µ Tempo µ Aplicação Tam 16 Tam 64 Grandeza Tam 16 Tam 64 Grandeza IR 67, ,6000 1,0010 0,0016 0,0100 6,2500 MPEG , ,1333 0,1561 0,6828 1,9201 2,8121 MWD 35, ,1333 2,3528 0,0007 0, ,4286 Pipe 39, ,6667 2,5556 0,0006 0, ,3333 Tree 28, ,4000 3,3937 0,0005 0, ,0000 VOPD 114, ,6667 1,3611 0,0020 0, ,6500 Tabela 7: Comparação entre as aplicações com tamanho 16 e 64, avaliando quantas vezes uma abordagem se distancia da outra. 6.4 Resultados de Simulação Nesta seção apresentamos os resultados das simulações realizadas usando a ferramenta SiNoC e, a partir desses resultados, apresentamos também as análises realizadas tentando identificar as melhores estratégias a serem usadas em cada aplicação. A seguir, apresentamos os dois cenários de avaliação, sendo o cenário A, onde é feita a avaliação das aplicações com tamanho 16 e o cenário B onde é feita a avaliação com as aplicações com tamanho 64. Para a obtenção dos resultados, foram avaliados, para as diferentes aplicações, dois diferentes tipos de algoritmos de roteamento, sendo um não adaptativo, que é o XY, e outro semi adaptativo, que é o XY _Y X. A comparação entre os resultados de roteamento é feita devido ao roteamento ter forme influência no resultado da latência das aplicações. O XY foi escolhido por ser um algoritmo bastante usado na literatura (ZEFERINO, 2003b) (WRONSKI; BRIÃO; WAGNER, 2006) (MARCON et al., 2007) (MANDELLI, 2011) (CARVALHO, 2009) (FREITAS, 2014). Já o XY _Y X foi usado devido a observação das latências e dos reusos dos enlaces apresentado pelo XY e pela sua proposta de distribuir melhor o tráfego de pacotes na rede Cenário A Neste cenário, como já dito anteriormente, avaliamos as aplicações com tamanho 16 com relação as suas latências médias, latência da aplicação e taxa de reuso dos enlaces. A latência média consiste na média das latências de cada flit das aplicações. A latência da aplicação, se refere à latência do flit que foi o último a ser entregue a seu destino, já que ele define o término da latência total de comunicação de uma determinada aplicação. E, por fim, a taxa de reuso dos enlaces, que é referente quantidade de enlaces da NoC que

79 78 foram reusados, ou seja, usado pelo menos 2 vezes e, no contexto deste trabalho, indica o grau de paralelismo das comunicações das tarefas das aplicações. Com isso, o primeiro algoritmo avaliado foi o V1_decrescente, cujos resultados para suas execuções, tanto com o roteamento XY quanto XY _Y X são mostrados nas Tabelas 8 e 9, respectivamente. Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 8: Métricas da ferramenta SiNoC quando na avaliação da heurística V1_decrescente executando com aplicações de tamanho 16 e usando o roteamento XY. Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 9: Métricas da ferramenta SiNoC quando na avaliação do mapeamento V1_decrescente executando com aplicações de tamanho 16 e usando o roteamento XY _Y X. Observe que os resultados das taxas de reusos para essa heurística obtiveram maior diversidade de valores do que nas outras métricas, quando comparamos os dois algoritmos de roteamento. Esses resultados mostram que os mapeamentos gerados, quando aplicadas diferentes estratégias de roteamento, vão acarretar diferentes resultados, dado que os caminhos percorridos pelos pacotes são diferentes para cada roteamento. Observe que, na comparação feita entre as Tabelas 8 e 9, todas aplicações apresentaram os mesmos valores de latências. As aplicações IR, MWD, Pipe e VOPD, apresentaram exatamente os mesmos resultados para latência média, sendo a Pipe também apresentando os mesmos resultados para taxa de reuso. A aplicação MPEG-4, apesar de apresentar resultados diferentes para a latência média, apresentou o mesmo resultado para taxa de reuso nas duas abordagens de roteamento avaliadas. Com isso pode-se ver que, considerando a latência das aplicações, ambas estratégias de roteamento apresentam similar desempenho, porém quando comparamos as taxas de

80 79 reuso, o roteamento XY apresentou melhor resultado, sendo melhor em três aplicações (MWD, Tree e VOPD), empatando em duas (MPEG-4 e Pipe) e pior em apenas uma (IR). Apesar disso, os resultados de taxa de reuso foram bem parecidos, sendo no pior caso, o da aplicação Tree, com 24 pontos percentuais de diferença entre os roteamentos. 11. Para a heurística V1_crescente, obtemos os resultados apresentados nas Tabelas 10 e Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 10: Métricas da ferramenta SiNoC quando na avaliação da heurística V1_crescente executando com aplicações de tamanho 16 e usando o roteamento XY. Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 11: Métricas da ferramenta SiNoC quando na avaliação da heurística V1_crescente executando com aplicações de tamanho 16 e usando o roteamento XY _Y X. Nesses resultados, comparando as duas estratégias de roteamento, observe que as aplicações IR, MPEG-4, Pipe e Tree apresentaram os mesmos resultados para latência e latência média, sendo que as aplicações Pipe e Tree também apresentaram os mesmos resultados para as taxas de reuso. A aplicação MWD apresentou melhor resultado em todas as métricas quando simulado com o roteamento XY _Y X. Já a aplicação VOPD apresentou melhor resultado de latência no roteamento XY, porém nesse roteamento sua taxa de reuso foi pior. Dado isso, vê-se que, com relação a latência das aplicações, ambos roteamentos possuem desempenhos similares, diferenciando-se apenas em dois casos (MWD e VOPD), onde cada um foi melhor em um deles. Para taxa de reuso o roteamento XY _Y X foi um pouco melhor ganhando em três aplicações (MPEG-4, MWD, VOPD), empatando em duas (Pipe e Tree), e perdendo apenas em uma (IR). Apesar disso, semelhante ao

81 80 algoritmo V1_decrescente, a diferença dessas taxas de reuso foram pequenas, sendo no pior caso, o da aplicação MPEG-4, apresentando 10 pontos percentuais de diferença entre as estratégias de roteamento. Para o algoritmo de mapeamento Sequencial, usando os roteamentos XY e XY _Y X, obtemos os resultados apresentados nas Tabelas 12 e 13. Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 12: Métricas da ferramenta SiNoC quando na avaliação do mapeamento Sequencial executando com aplicações de tamanho 16 e usando o roteamento XY. Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 13: Métricas da ferramenta SiNoC quando na avaliação do mapeamento Sequencial executando com aplicações de tamanho 16 e usando o roteamento XY _Y X. Nas tabelas, podemos observar algumas similaridades nos valores obtidos com relação às latência e latência média, apresentando maior distinção nos resultados da taxa de reuso dos enlaces na NoC. Na latência, observa-se diferença apenas na aplicação Integral de Romberg, na qual, para o roteamento XY, apresenta resultado de valor 3, e, para o XY _Y X, o resultado tem valor 101. Esses resultados indicam que, apesar dessa aplicação reusar bem menos enlaces no roteamento XY _Y X, o que pode ser constatado pela avaliação das taxas de reuso (XY com 92% e XY _Y X com 76%), ela sofreu muito mais contenções neste roteamento, e consequentemente, demorou mais a terminar sua execução. Constatando, novamente, que as métricas latência e taxa de reuso, não possuem consideráveis dependências, positivas ou negativas, entre si. Avaliando-se somente as taxas de reuso, observa-se que, na maioria das vezes, o roteamento XY _Y X promove uma melhor taxa, com exceção da aplicação Tree. As heurísticas apresentadas são determinísticas, logo, foi preciso executar o algoritmo de mapeamento apenas uma vez, já que várias execuções obteriam o mesmo resultado.

82 81 O algoritmo apresentado agora, tem um caráter randômico. Com isso, os resultados aqui apresentados não são apenas de uma única execução, mas as médias aritméticas das 30 execuções para cada instância. Para isso, foram obtidas as 30 soluções geradas pelo BLS e para cada uma delas, foram gerados os seus resultados quando aplicados tais mapeamentos no simulador SiNoC. Assim, para o BLS foram avaliadas as mesmas métricas, porém com uma abordagem estatística um pouco mais detalhada. Isso se torna necessário, pois, como já dito, estamos trabalhando com algoritmo de caráter randômico. A escolha de 30 execuções foi feita, devido a termos uma quantidade razoável de observações (resultados) e estatisticamente, com essa quantidade de observações, consegue-se identificar melhor como os dados estão distribuído e a partir disso selecionar as métricas que melhor se aplicam aquela determinada distribuição. Como critério de parada do algoritmo foi usado dois minutos, apesar de em (BENLIC; HAO, 2013) ser usada duas horas na maior parte das instâncias e para duas, as quais são consideradas as mais difíceis, foram usadas 10 horas. A Tabela 14 apresenta as médias e os desvios padrões da métrica latência média dos flits das aplicações, obtida pela ferramenta SiNoC. Aplicação Latência Média µ Latência Média σ IR 11,97 5,01 MPEG-4 14,20 8,66 MWD 4,97 5,24 Pipe 1,00 0,00 Tree 24,17 44,42 VOPD 5,30 4,35 Tabela 14: Médias e desvios padrões da métrica latência média obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 16 sobre o roteamento XY. Nas Tabelas 15 e 16, são apresentados os resultados obtidos para as aplicações aqui avaliadas. Na Tabela 15, são detalhadas as médias e os desvios padrões para cada uma das aplicações em suas 30 execuções, avaliando a métrica latência das aplicações. Mostramos também qual foi a menor e a maior latência apresentada e suas respectivas quantidades. Na Tabela 16, são mostradas as médias e os desvios padrões das taxas de reuso dos enlaces, assim também como os menores e maiores valores obtidos, e suas respectivas quantidades.

83 82 Aplicação µ σ Menor Menor Qtd Maior Maior Qtd IR 95, , MPEG-4 121, , MWD 40, , Pipe 1,0000 0, Tree 203, , VOPD 56, , Tabela 15: Médias e desvios padrões da métrica latência média obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 16 sobre o roteamento XY. Aplicação µ % σ % Menor % Menor Qtd % Maior % Maior Qtd % IR 54, , ,0 13 MPEG-4 58,7000 8, MWD 51, , Pipe 0,0000 0, Tree 66, , VOPD 63, , Tabela 16: Médias e desvios padrões da métrica taxa de reuso obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 16 sobre o roteamento XY. A Tabela 17 apresenta as médias e os desvios padrões da métrica latência média dos pacotes das aplicações, obtida pela ferramenta SiNoC. Aplicação Latência Média µ Latência Média σ IR 12,40 5,68 MPEG-4 19,37 13,50 MWD 6,07 6,06 Pipe 1,00 0,00 Tree 64,90 68,32 VOPD 6,13 4,19 Tabela 17: Médias e desvios padrões da métrica latência média obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 16 sobre o roteamento XY _Y X. Nas Tabelas 18 e 19, são apresentados os resultados obtidos para as aplicações aqui avaliadas. Na Tabela 18, são detalhadas as médias e os desvios padrões para cada uma das aplicações em suas 30 execuções. Mostramos também qual foi a menor e a maior latência apresentada e suas respectivas quantidades. Na Tabela 19, são mostrados as médias e os desvios padrões das taxas de reuso dos enlaces, assim também como os menores e maiores valores obtidos, e suas respectivas quantidades.

84 83 Aplicação µ σ Menor Menor Qtd Maior Maior Qtd IR 98, , MPEG-4 204, , MWD 46, , Pipe 1,0000 0, Tree 503, , VOPD 66, , Tabela 18: Médias e desvios padrões da métrica latência média obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 16 sobre o roteamento XY _Y X. Aplicação µ % σ % Menor % Menor Qtd % Maior % Maior Qtd % IR 57, , MPEG-4 59,6000 4, MWD 49, , Pipe 0,0000 0, Tree 63,3000 8, VOPD 58, , Tabela 19: Médias e desvios padrões da métrica taxa de reuso obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 16 sobre o roteamento XY _Y X. Nos resultados vistos nas Tabelas 15, 18, 16 e 19, e fazendo uma comparação entre esses resultados, vemos um alto desvio padrão, e essa variação, ou distanciamento, pode ser visto observando os resultados dos menores e maiores valores obtidos. Uma exceção a essa característica está na aplicação Pipe, na qual os resultados sempre foram os mesmos, sendo 1, 0 para todas as 30 execuções para os dois algoritmos de roteamento, o que explica o desvio padrão ser 0, 0. As aplicações IR, MWD, Tree e VOPD, usando o roteamento XY, apresentaram melhores resultados para as latências, apesar de suas taxas de reuso variarem bastante de uma abordagem para outra. Já a aplicação MPEG-4 apresentou melhor latência com o roteamento XY _Y X, apesar de nessa abordagem ter reusado mais enlaces. Agora, diante das avaliações já feitas, faremos uma comparação entre os resultados apresentados para os diferentes algoritmos. Resumos dos resultados das Tabelas anteriores podem ser vistos nas Tabelas 20 e 21, as quais apresentam os resumos das latências e das taxas de reuso, respectivamente, avaliando também para os dois diferentes algoritmos de roteamento. Para o caso do BLS, apresentamos os melhores resultados obtidos seguido das médias de todas as 30 execuções.

85 84 V1_decrescente V1_crescente Sequencial BLS Aplicação XY XY _Y X XY XY _Y X XY XY _Y X XY (µ) XY _Y X (µ) IR (95,20) 2 (98,53) MPEG (121,27) 4 (204,67) MWD (40,17) 3 (46,67) Pipe (1,00) 1 (1,0) Tree (203,40) 3 (503,20) VOPD (56,23) 2 (66,40) Tabela 20: Resumo das latências, por aplicação e por roteamento, para melhor visualização e comparação entre os algoritmos. V1_decrescente % V1_crescente % Sequencial % BLS % Aplicação XY XY _Y X XY XY _Y X XY XY _Y X XY (µ) XY _Y X (µ) IR (54,20) 27 (57,20) MPEG (58,70) 46 (59,60) MWD (51,90) 20 (49,33) Pipe (0,00) 0 (0,00) Tree (66,67) 42 (63,30) VOPD (63,57) 35 (58,60) Tabela 21: Resumo das taxas de reuso, por aplicação e por roteamento, para melhor visualização e comparação entre os algoritmos. Baseado nos resultados apresentados nas Tabelas 20 e 21, vemos que o BLS apresenta melhor resultado de latência em todas as aplicações, quando comparado com o melhor resultado obtido das 30 execuções, apesar de na média dessas 30, os resultados serem, algumas vezes, piores. Para a aplicação IR, o Sequencial, com o roteamento XY, ainda chegou a um resultado bem próximo, porém devido a esse resultado apresentar uma alta taxa de reuso, temos que para essa aplicação o melhor é realmente o do BLS. Para a aplicação MPEG-4, o BLS apresentou tanto melhor latência quanto melhor reuso. Na MWD, os melhores resultados para a latência da aplicação foi do BLS e V1_decrescente em ambos roteamentos, porém, como a taxa de reuso do BLS foi bem menor do que a do V1_decrescente, para este caso, o BLS foi melhor. O V1_crescente, usando roteamento XY _Y X, apresentou resultado próximo para latência da aplicação, embora com maiores reuso. Apesar disso, o BLS, ainda apresentou melhor resultado para essa aplicação. Para a Pipe, todos os algoritmo apresentaram bons resultados, porém o BLS apresentou o melhor resultado, tanto para latência quando para taxa de reuso. Para a aplicação Tree, o melhor resultado foi o do BLS, sendo que o Sequencial apresentou melhor taxa de reuso, porém quanto comparado a sua latência, ver-se que ela não é uma estratégia tão eficiente para essa aplicação. Por último, para a aplicação VOPD, o BLS apresentou o melhor resultado, tanto para latência quanto para taxa de reuso dos enlaces. Com isso, como já visto, o BLS e V1_decrescente, apresentaram os melhores resultados, sendo o BLS melhor em todas as aplicações, e o V1_decrescente, apresentando resultados de latência igual ao do BLS para aplicação MWD.

86 85 As Figuras 26 e 27, apresentam os diagramas de dispersão, os quais plotam todas as soluções geradas para os 4 algoritmos, sendo o primeiro para os resultados do roteamento XY e o segundo para o roteamento Y X_Y X. Nestas figuras, os círculos em verde representam as soluções da heurística V1_decrescente, os em vermelho são os da heurística V1_crescente, os em preto são do algoritmo Sequencial e em azul do algoritmo BLS. Nestes gráficos é possível visualizar melhor os melhores resultados obtidos.

87 86 (a) Integral de Romberg. (b) MPEG-4. (c) MWD. (d) Pipe. (e) Tree. (f) VOPD. Figura 26: Diagramas de dispersão das soluções para o roteamento XY.

88 87 (a) Integral de Romberg. (b) MPEG-4. (c) MWD. (d) Pipe. (e) Tree. (f) VOPD. Figura 27: Diagramas de dispersão das soluções para o roteamento XY _Y X.

89 88 Com base nos dados apresentados da Tabela 20 e visualizando melhor nas Figuras 26 e 27, temos que o BLS, no geral, apresentou os melhores resultados para a latência das aplicações, tendo o algoritmo V1_decrescente empatado com o BLS na aplicação MWD. Para finalizar esta seção, serão discutidos os piores e melhores resultados encontrados entre todos os algoritmos avaliados. Para alguns desses algoritmos serão apresentados, na Figura 28, os respectivos mapeamentos dos piores e melhores resultados. Avaliando a latência, temos que, na aplicação Integral de Romberg, os melhores resultados foram do BLS em ambos roteamentos com latências 2, já os piores resultados foram do algoritmo V1_decrescente em ambos roteamentos, apresentando latências 202. Com isso, temos que a melhor solução encontrada foi cerca de 101 vezes melhor do que a pior solução encontrada. Na aplicação MPEG-4, os melhores resultados foram do BLS em ambos roteamentos com latências 4, já os piores resultados foram do algoritmo V1_decrescente em ambos roteamentos, apresentando latências 601. Assim, temos que a melhor solução encontrada foi cerca de 150,25 vezes melhor do que a pior solução encontrada. Na aplicação MWD, os melhores resultados foram do BLS e do V1_decrescente em ambos roteamentos com latências 3, já os piores resultados foram do algoritmo V1_crescente com roteamento XY e do Sequencial em ambos roteamentos, apresentando latências 102. Com isso, temos que as melhores soluções encontradas foram cerca de 34 vezes melhores do que a pior solução encontrada. Nas Figuras 28a e 28b, apresentamos os mapeamentos de melhores resultados do BLS e do V1_decrescente, respectivamente, para essa aplicação. Analogamente, apresentamos nas Figuras 28c e 28d os mapeamentos para os algoritmos V1_crescente e Sequencial, respectivamente, os quais geraram os piores resultados. Na aplicação Pipe, os melhores resultados foram do BLS em ambos roteamentos, apresentando latências 1. Já os piores resultados foram do algoritmo Sequencial em ambos roteamentos, apresentando latências 4, com a melhor solução encontrada cerca de 4 vezes melhor do que a pior solução encontrada. Na aplicação Tree, os melhores resultados foram do BLS em ambos roteamentos, apresentando latências 3. Já os piores resultados foram do algoritmo V1_crescente em ambos roteamentos, apresentando latências 1004, e com isso temos que a melhor solução encontrada foi cerca de 334,67 vezes melhor do que a pior solução encontrada. Na Figura 28e apresentamos o mapeamento de melhor resultado do BLS, para essa aplicação. Analogamente, apresentamos na Figura 28f o mapeamento para o algoritmo V1_crescente, o qual

90 89 gerou o pior resultado. Por último temos que, para a aplicação VOPD, os melhores resultados foram do BLS em ambos roteamentos, apresentando latências 2, já os piores resultados foram do algoritmo V1_crescente usando o roteamento XY _Y X, apresentando latências 104. Dessa forma, temos que a melhor solução encontrada foi cerca de 52 vezes melhores do que a pior solução encontrada. Com base nos dados apresentados da Tabela 21 e visualizando melhor nas Figuras 26 e 27, temos que o BLS, na maior parte das aplicações, apresentou os melhores resultados para a taxa de reuso dos enlaces, excetuando-se apenas em um caso onde o algoritmo Sequencial com o roteamento XY, apresentou melhor resultado. Nesse contexto, temos que para a aplicação Integral de Romberg, os melhores resultados foram do BLS em ambos roteamentos e o pior resultado foi do algoritmo V1_decrescente usando o roteamento XY. A melhor solução encontrada foi cerca de 3,93 vezes melhor do que a pior solução encontrada e exatamente 70 pontos percentuais menor. Na aplicação MPEG-4, o melhor resultado foi do BLS usando o roteamento XY e o pior resultado foi do algoritmo V1_crescente usando também o roteamento XY. A melhor solução encontrada foi cerca de 2,18 vezes melhor do que a pior solução encontrada e exatamente 46 pontos percentuais menor. Na aplicação MWD, o melhor resultado foi do BLS usando o roteamento XY _Y X, e o pior, o algoritmo Sequencial usando o roteamento XY. De acordo com os resultados, a melhor solução encontrada foi cerca de 4,3 vezes melhor do que a pior solução, e exatamente 66 pontos percentuais menor. Na aplicação Pipe, os melhores resultados foram do BLS em ambos roteamentos, apresentando taxa de reuso de 0%, ou seja, não foi reusado nenhum enlace. Já o pior resultado foi do algoritmo Sequencial usando o roteamento XY, cuja taxa de reuso foi de 80%. Com isso, temos que a melhor solução foi cerca de 80 vezes melhor do que a pior solução encontrada e exatamente 80 pontos percentuais menor. Observe que, como na aritmética, uma divisão pelo número natural 0 é indefinido, assumimos, por simplicidade, que as estratégias foram 80 vezes maior para ter-se uma medida de grandeza entre uma solução e outra. Na aplicação Tree, os melhores resultados foram do Sequencial usando o roteamento XY, já os piores foram dos algoritmos V1_decrescente usando o roteamento XY e o V1_crescente com ambos roteamentos. A melhor solução encontrada foi cerca de 2,12

91 90 vezes melhor do que a pior solução e exatamente 45 pontos percentuais menor. Por último, na aplicação VOPD, os melhores resultados foram do BLS usando ambos roteamentos, e o pior resultado foi do algoritmo Sequencial usando o roteamento XY. A melhor solução encontrada foi cerca de 2,46 vezes melhor do que a pior solução e exatamente 51 pontos percentuais menor. (a) BLS sobre MWD. (b) V1_decrescente sobre MWD. (c) V1_crescente sobre MWD. (d) Sequencial sobre MWD. (e) BLS sobre Tree. (f) V1_crescente sobre Tree. Figura 28: Representação dos mapeamentos de algumas soluções encontradas.

92 Cenário B Agora apresentaremos os resultados para este cenário, onde avaliamos as aplicações com tamanho 64, com relação as suas latências médias, latência da aplicação, e taxa de reuso dos enlace, similarmente ao que foi feito no cenário anterior. O primeiro algoritmo avaliado foi o V1_decrescente, cujos resultados para suas execuções, tanto com o roteamento XY quanto XY _Y X são mostrados nas Tabelas 22 e 23, respectivamente. Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 22: Métricas da ferramenta SiNoC quando na avaliação do mapeamento V1_decrescente executando com aplicações de tamanho 64 e usando o roteamento XY. Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 23: Métricas da ferramenta SiNoC quando na avaliação do mapeamento V1_decrescente executando com aplicações de tamanho 64 e usando o roteamento XY _Y X. Observe que os resultados para todas as métricas, nas diferentes aplicações, foram bem similares diferenciando-se apenas na métrica taxa de reuso em dois casos (MPEG- 4 e VOPD). As aplicações IR, MWD, Pipe e Tree, apresentaram os mesmos resultados para todas as métricas, já as aplicações MPEG-4 e VOPD foram as que apresentaram diferenças em suas taxas de reuso, ambas sendo melhores no roteamento XY _Y X. Nota-se que, para o este algoritmo, o melhor roteamento foi o XY _Y X, o qual ganhou em duas aplicações (MPEG-4 e VOPD) e empatou nas outras, quando avalia-se as taxas de reuso, dado que as latências das aplicações foram iguais. Apesar de ter ganhado apenas em duas, observa-se que a diferença, em pontos percentuais, foi relativamente grande nesses casos, sendo 28 pontos na MPEG-4 e 38 pontos na VOPD.

93 Para a heurística V1_crescente, obtemos os resultados apresentados nas Tabelas 24 e Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 24: Métricas da ferramenta SiNoC quando na avaliação do mapeamento V1_crescente executando com aplicações de tamanho 64 e usando o roteamento XY. Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 25: Métricas da ferramenta SiNoC quando na avaliação do mapeamento V1_crescente executando com aplicações de tamanho 64 e usando o roteamento XY _Y X. Nestes resultados, comparando as duas estratégias de roteamento, é observado que os resultados foram bem similares, porém não tanto quanto o apresentado no algoritmo V1_crescente. A aplicação IR apresentou o mesmo resultado nas três métricas avaliadas. As aplicações MPEG-4, MWD, Pipe e VOPD, apresentaram os mesmos resultados para latência, sendo que dessas, apenas a Pipe e VOPD apresentaram os mesmos resultados de latência média e todas elas apresentaram resultados diferentes com relação a suas taxas de reuso dos enlaces. A aplicação Tree apresentou melhor resultado em todas as métricas no roteamento XY. Nota-se que para esse algoritmo o melhor roteamento foi o XY, já que foi melhor em uma aplicação, com relação a latência, e empatou nas outras. Com relação as taxas de reuso, o XY foi melhor na maior parte das aplicações. Nas Tabelas 26 e 27, são apresentados os resultados obtidos para o mapeamento Sequencial, onde podemos observar similaridade nos resultados das latências e latências médias nas aplicações avaliadas. Note que nas Tabelas, todas as aplicações apresentaram os mesmos resultados para as latências e latências médias, quando comparadas com o roteamento XY e XY _Y X.

94 93 Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 26: Métricas da ferramenta SiNoC quando na avaliação do mapeamento Sequencial executando com aplicações de tamanho 64 e usando o roteamento XY. Aplicação Latência Latência Média Taxa de Reuso % IR MPEG MWD Pipe Tree VOPD Tabela 27: Métricas da ferramenta SiNoC quando na avaliação do mapeamento Sequencial executando com aplicações de tamanho 64 e usando o roteamento XY _Y X. As aplicações IR, MPEG-4 e MWD obtiveram melhor resultado de taxa de reuso quando executando o roteamento XY, já as aplicações Pipe, Tree e VOPD quando na execução do XY _Y X. Da mesma forma que foi feito no cenário A, para o BLS a apresentação dos resultados é feita de forma diferente das anteriormente apresentadas, já que resultados para esse algoritmo não são apenas de uma única execução, mas as médias aritméticas das 30 execuções para cada instância. Para isso, foram obtidas as 30 soluções geradas pelo BLS e para cada uma delas, foram gerados os seus resultados quando aplicados tais mapeamentos no simulador SiNoC. Assim, para o BLS foram avaliadas as mesmas métricas, porém com uma abordagem estatística um pouco mais detalhada. Isso se torna necessário, pois estamos trabalhando com algoritmo de caráter randômico. A Tabela 28 apresenta as médias e os desvios padrões da métrica latência média dos flits das aplicações, obtida pela ferramenta SiNoC.

95 94 Aplicação Latência Média µ Latência Média σ IR 12,40 5,68 MPEG-4 19,37 13,50 MWD 6,07 6,06 Pipe 1,00 0,00 Tree 64,90 68,32 VOPD 6,13 4,19 Tabela 28: Médias e desvios padrões da métrica latência média obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 64 sobre o roteamento XY Nas Tabelas 29 e 30 são apresentados os resultados obtidos para as aplicações aqui avaliadas. Na Tabela 29, são detalhadas as médias e os desvios padrões para cada uma das aplicações em suas 30 execuções, avaliando a métrica latência das aplicações. Mostramos também qual foi a menor e a maior latência apresentada e suas respectivas quantidades. Na Tabela 30, são mostrados as médias e os desvios padrões das taxas de reuso dos enlaces, assim também como os menores e maiores valores obtidos, e suas respectivas quantidades. Aplicação µ σ Menor Menor Qtd Maior Maior Qtd IR 91, , MPEG-4 242, , MWD 37, , Pipe 1,0000 0, Tree 303, , VOPD 67, , Tabela 29: Médias e desvios padrões da métrica latência média obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 64 sobre o roteamento XY. Aplicação µ % σ % Menor % Menor Qtd % Maior % Maior Qtd % IR 48, , MPEG-4 54,9333 8, MWD 55, , Pipe 0,0000 0, Tree 60, , VOPD 86,7333 6, Tabela 30: Médias e desvios padrões da métrica taxa de reuso obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 64 sobre o roteamento XY. A Tabela 31 apresenta as médias e os desvios padrões e da métrica latência média dos pacotes das aplicações, obtida pela ferramenta SiNoC.

96 95 Aplicação Latência Média µ Latência Média σ R 10,80 5,93 MPEG-4 26,13 18,49 MWD 5,10 4,71 Pipe 1,00 0,00 Tree 109,33 83,52 VOPD 9,67 4,24 Tabela 31: Médias e desvios padrões da métrica latências média obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 64 sobre o roteamento XY _Y X Nas Tabelas 32 e 33, são apresentados os resultados obtidos para as aplicações aqui avaliadas. Na Tabela 32, são detalhadas as médias e os desvios padrões para cada uma das aplicações em suas 30 execuções. Mostramos também qual foi a menor e a maior latência apresentada e suas respectivas quantidades. Na Tabela 33, são mostrados as médias e os desvios padrões das taxas de reuso dos enlaces, assim também como os menores e maiores valores obtidos, e suas respectivas quantidades. Aplicação µ σ Menor Menor Qtd Maior Maior Qtd IR 95, , MPEG-4 258, , MWD 43, , Pipe 1,0000 0, Tree 736, , VOPD 84, , Tabela 32: Médias e desvios padrões da métrica latência da aplicação obtida pela Si- NoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 64 sobre o roteamento XY _Y X. Aplicação µ % σ % Menor % Menor Qtd % Maior % Maior Qtd % IR 48, , MPEG-4 54,2000 7, MWD 49, , Pipe 0,0000 0, Tree 59, , VOPD 87,2000 7, Tabela 33: Médias e desvios padrões da métrica taxa de reuso obtida pela SiNoC, executando os mapeamentos gerados pelo algoritmo BLS, quando na execução de aplicações com tamanho 64 sobre o roteamento XY _Y X. Nos resultados vistos nas Tabelas 29, 32, 30 e 33, e fazendo uma comparação entre esses resultados, vemos um alto desvio padrão, e essa variação, ou distanciamento, pode ser identificado observando os resultados dos menores e maiores valores obtidos. Uma exceção a essa característica está na aplicação Pipe, na qual os resultados sempre foram os mesmos, sendo 1,0 para todas as 30 execuções para os dois algoritmos de roteamento, o que explica o desvio padrão ser 0,0. As aplicações IR, MPEG-4 e MWD, usando o roteamento XY, apresentaram melhores resultados para as latências, apesar de suas taxas de reuso variarem bastante de uma abordagem para outra. Já as aplicações Tree e VOPD apresentaram

97 96 melhores latência com o roteamento XY _Y X, apresentando também variação em suas taxas de reuso. Agora, diante das avaliações já realizadas, faremos uma comparação entre os resultados apresentados para os diferentes algoritmos. Um resumo dos resultados das Tabelas anteriores pode ser visto nas Tabelas 34 e 35, as quais apresentam os resumos das latências e das taxas de reuso, respectivamente, avaliando também para os dois diferentes algoritmos de roteamento. Para o caso do BLS, apresentamos os melhores resultados obtidos seguido das médias de todas as 30 execuções. V1_decrescente V1_crescente Sequencial BLS Aplicação XY XY _Y X XY XY _Y X XY XY _Y X XY (µ) XY _Y X (µ) IR (91,77) 2 (95,10) MPEG (242,60) 4 (258,33) MWD (37,17) 4 (43,733) Pipe (1,00) 1 (1,00) Tree (303,67) 3 (736,47) VOPD (67,13) 13 (84,23) Tabela 34: Resumo das latências das aplicações, por aplicação e por roteamento, para melhor visualização e comparação entre os algoritmos. V1_decrescente % V1_crescente % Sequencial % BLS % Aplicação XY XY _Y X XY XY _Y X XY XY _Y X XY (µ) XY _Y X (µ) IR (48,07) 22 (48,77) MPEG (54,93) 37 (54,20) MWD (55,53) 16 (49,70) Pipe (0,00) 0 (0,00) Tree (60,53) 42 (59,37) VOPD (86,733) 65 (87,02) Tabela 35: Resumo das taxas de reuso dos enlaces, por aplicação e por roteamento, para melhor visualização e comparação entre os algoritmos. Baseado nos resultados apresentados nas Tabelas 34 e 35, vemos que o BLS apresenta melhor resultado de latência em todas as aplicações, chegando a empatar com o algoritmo V1_decrescente usando o roteamento XY _Y X, quando na avaliação da aplicação VOPD. Considerando as Latências, nas aplicações IR, MPEG-4, MWD e Tree, o BLS foi muito superior do que os outros algoritmos, não apenas fazendo a análise do melhor resultado, mas se olharmos também para as médias dos resultados gerados pelo BLS, chegamos a essa mesma conclusão. Para essas aplicações, comparando as taxas de reuso dos enlaces, vê-se resultados diversificados, sendo o BLS melhor nas IR, MPEG-4 e MWD, e o V1_crescente melhor na Tree Na aplicação Pipe, os resultados de latência foram bem próximo em todos os algoritmos, porém o BLS ainda é o que apresenta o melhor resultado. Para a taxa de reuso dessa aplicação, o BLS foi absurdamente melhor, já que não fez reuso de enlaces.

98 97 Na aplicação VOPD temos que o BLS, o V1_decrescente e o V1_crescente, apresentaram resultados semelhantes com relação a latência da aplicação, nas duas estratégias de roteamento, Porém o BLS ainda apresentou o melhor resultado, quando usando o roteamento XY. Como os resultados foram bem próximos, para essa aplicação, vemos que as três estratégias geram boas soluções. Em relação a taxa de reuso, o melhor resultado foi do algoritmo V1_crescente, usando o roteamento XY _Y X. As Figuras 29 e 30 apresentam os diagramas de dispersão, os quais plotam todas as soluções geradas para os 4 algoritmos, onde os círculos em verde representam as soluções da heurística V1_decrescente, os em vermelho são os da heurística V1_crescente, os em preto são do algoritmo Sequencial e em azul do algoritmo BLS. Nesses gráficos é possível ter uma boa visualização dos melhores resultados obtidos.

99 98 (a) Integral de Romberg. (b) MPEG-4. (c) MWD. (d) Pipe. (e) Tree. (f) VOPD. Figura 29: Diagramas de dispersão das soluções para o roteamento XY.

100 99 (a) Integral de Romberg. (b) MPEG-4. (c) MWD. (d) Pipe. (e) Tree. (f) VOPD. Figura 30: Diagramas de dispersão das soluções para o roteamento XY _Y X.

101 100 Com base nos dados apresentados da Tabela 34 e visualizando melhor nas Figuras 29 e 30, temos que o BLS, no geral, apresentou os melhores resultados para a latência das aplicações, tendo os algoritmos V1_decrescente e V1_crescente apresentado resultados semelhantes ao do BLS na aplicação VOPD. Para finalizar esta seção, serão discutidos os piores e melhores resultados encontrados entre todos os algoritmos avaliados. Para alguns desses algoritmos, serão apresentados, nas Figuras 31 e 32, os respectivos mapeamentos dos piores e melhores resultados. Na aplicação Integral de Romberg, os melhores resultados foram do BLS em ambos roteamentos com latências 2, já os piores resultados foram do algoritmo Sequencial em ambos roteamentos, apresentando latências 204, e com isso temos que a melhor solução encontrada foi cerca de 152 vezes melhor do que a pior solução encontrada. Na aplicação MPEG-4, os melhores resultados foram do BLS em ambos roteamentos com latências 4, já os piores resultados foram do algoritmo Sequencial em ambos roteamentos, apresentando latências 826. Assim, a melhor solução encontrada foi cerca de 206,5 vezes melhor do que a pior solução encontrada. Na aplicação MWD, os melhores resultados foram do BLS em ambos roteamentos com latências 4, e os piores resultados foram do algoritmo V1_crescente e do Sequencial, com ambos roteamentos, apresentando latências 105. Dessa forma, as melhores soluções encontradas foram cerca de 36,25 vezes melhores do que a pior solução encontrada. Na aplicação Pipe, os melhores resultados foram do BLS em ambos roteamentos, apresentando latências 1. Já os piores resultados foram do algoritmo Sequencial em ambos roteamentos, apresentando latências 5, e com isso temos que a melhor solução encontrada foi cerca de 8 vezes melhor do que a pior solução encontrada. Nas Figuras 31a, apresentamos o mapeamento de melhor resultado do BLS para essa aplicação. Analogamente, apresentamos na Figura 31b o mapeamento para o algoritmo Sequencial, no qual gerou o pior resultado. Na aplicação Tree, os melhores resultados foram do BLS em ambos roteamentos, apresentando latências 3. Já os piores resultados foram do algoritmo Sequencial em ambos roteamentos, apresentando latências Com isso, temos que a melhor solução encontrada foi cerca de 668,33 vezes melhor do que a pior solução encontrada. Na Figura 32a apresentamos o mapeamento de melhor resultado do BLS, para essa aplicação. Analogamente, apresentamos na Figura 32b o mapeamento para o algoritmo Sequencial, o qual gerou o pior resultado.

102 101 Por último temos que, para a aplicação VOPD, os melhores resultados foram do BLS, usando o roteamento XY e do V1_decrescente, usando o roteamento XY _Y X, apresentando latências 5. Já os piores resultados foram do algoritmo Sequencial em ambos roteamentos, apresentando latências 102. Assim, temos que a melhor solução encontrada foi cerca de 20,4 vezes melhor do que a pior solução encontrada. Com base nos dados apresentados da Tabela 35 e visualizando melhor nas Figuras 29 e 30, temos que o algoritmo BLS, juntamente com o V1_crescente apresentaram os melhores resultados para taxas de reuso. O algoritmo Sequencial foi pior em todas as aplicações avaliadas. Nesse contexto, para a aplicação Integral de Romberg, os melhores resultados foram do BLS em ambos roteamentos e o pior foi do algoritmo Sequencial usando o roteamento XY _Y X. A melhor solução encontrada foi cerca de 4,45 vezes melhor do que a pior solução. Na aplicação MPEG-4, o melhor resultado foi do BLS usando o roteamento XY _Y X, o pior resultado foi do algoritmo Sequencial usando também o roteamento XY _Y X. A melhor solução encontrada foi cerca de 2,38 vezes melhor do que a pior solução. Na aplicação MWD, o melhor resultado foi do BLS usando o roteamento XY _Y X, e o pior resultado foi do algoritmo Sequencial usando também o roteamento XY _Y X. A melhor solução encontrada foi cerca de 5,37 vezes melhor do que a pior solução. Na aplicação Pipe, os melhores resultados foram do BLS em ambos roteamentos. O pior resultado foi do algoritmo Sequencial usando o roteamento XY. Com isso, temos que a melhor solução encontrada foi cerca de 87 vezes melhor do que a pior solução encontrada. Na aplicação Tree, os melhores resultados foram do V1_crescente usando o roteamento XY, já os piores resultados foram do algoritmo Sequencial usando o roteamento XY. A melhor solução encontrada foi cerca de 4,74 vezes melhor do que a pior solução encontrada. Por último, na aplicação Tree, os melhores resultados foram do V1_crescente usando o roteamento XY, e o pior resultado foi do algoritmo Sequencial usando o roteamento XY. A melhor solução encontrada foi cerca de 1,93 vezes melhor do que a pior solução encontrada.

103 102 (a) BLS sobre Pipe. (b) Sequencial sobre Pipe. Figura 31: Representação dos mapeamentos de algumas soluções encontradas.

104 103 (a) BLS sobre Tree. (b) Sequencial sobre Tree. Figura 32: Representação dos mapeamentos de algumas soluções encontradas.

Redes de Computadores

Redes de Computadores Redes de Computadores Prof. Marcelo Gonçalves Rubinstein Programa de Pós-Graduação em Engenharia Eletrônica Faculdade de Engenharia Universidade do Estado do Rio de Janeiro Ementa Introdução a Redes de

Leia mais

Redes de Computadores. Prof. André Y. Kusumoto

Redes de Computadores. Prof. André Y. Kusumoto Redes de Computadores Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com 2/16 Nível de Rede Comunicação entre dispositivos de uma mesma rede ocorrem de forma direta. Quando a origem e o destino estão

Leia mais

Redes de Computadores. Prof. MSc André Y. Kusumoto

Redes de Computadores. Prof. MSc André Y. Kusumoto Redes de Computadores Prof. MSc André Y. Kusumoto andrekusumoto.unip@gmail.com Nível de Rede Comunicação entre dispositivos de uma mesma rede ocorrem de forma direta. Quando a origem e o destino estão

Leia mais

Organização e comunicação em plataformas paralelas

Organização e comunicação em plataformas paralelas Organização e comunicação em plataformas paralelas Processamento Paralelo Prof. Oberlan Romão Departamento de Computação e Eletrônica DCEL Centro Universitário Norte do Espírito Santo CEUNES Universidade

Leia mais

Barramento. Prof. Leonardo Barreto Campos 1

Barramento. Prof. Leonardo Barreto Campos 1 Barramento Prof. Leonardo Barreto Campos 1 Sumário Introdução; Componentes do Computador; Funções dos Computadores; Estrutura de Interconexão; Interconexão de Barramentos Elementos de projeto de barramento;

Leia mais

Arranjo de Processadores

Arranjo de Processadores Um arranjo síncrono de processadores paralelos é chamado arranjo de processadores, consistindo de múltiplos elementos processadores (EPs) sob a supervisão de uma unidade de controle (UC) Arranjo de processadores

Leia mais

Redes de Computadores

Redes de Computadores Instituto Superior Politécnico de Ciências e Tecnologia Redes de Computadores Prof Pedro Vunge I Semestre de 2017 SUMÁRIO Capítulo2 Topologias de redes de computadores 2.1 Considerações iniciais ; 2.2

Leia mais

Computadores Digitais II

Computadores Digitais II Computadores Digitais II Prof. Marcelo Gonçalves Rubinstein Departamento de Eletrônica e Telecomunicações Faculdade de Engenharia Universidade do Estado do Rio de Janeiro Ementa Introdução a Redes de Computadores

Leia mais

Arquitetura de Computadores. Processamento Paralelo

Arquitetura de Computadores. Processamento Paralelo Arquitetura de Computadores Processamento Paralelo 1 Multiprogramação e Multiprocessamento Múltiplas organizações de computadores Single instruction, single data stream - SISD Single instruction, multiple

Leia mais

Técnicas de comutação

Técnicas de comutação Técnicas de comutação Abordagens para a montagem de um núcleo de rede [Kurose] Comutação Alocação de recursos da rede (meio de transmissão, nós intermediários etc.) para transmissão [Soares] Técnicas de

Leia mais

Topologias de redes de computadores

Topologias de redes de computadores Topologias de redes de computadores Objetivos Apresentar as principais topologias de redes e suas classificações. Caracterizar as topologias e sua formação. Conhecer as topologias em sua essência. Apresentar

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I BARRAMENTO Slide 1 Sumário Introdução Componentes de Computador Funções dos Computadores Estruturas de Interconexão Interconexão de Barramentos Slide 2 Introdução

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Memória Cache Slide 1 Introdução Tamanho Função de Mapeamento Política de Escrita Tamanho da Linha Número de Memórias Cache Cache em Níveis Slide 2 Introdução

Leia mais

Aula 3 Redes de Interconexão

Aula 3 Redes de Interconexão Aula 3 Redes de Interconexão As redes de interconexão são de fundamental importância nas arquiteturas paralelas Não importa o tipo da arquitetura, todo computador paralelo necessita de uma rede de interconexão

Leia mais

Interconexão de redes locais. Repetidores. Pontes (Bridges) Existência de diferentes padrões de rede. Interconexão pode ocorrer em diferentes âmbitos

Interconexão de redes locais. Repetidores. Pontes (Bridges) Existência de diferentes padrões de rede. Interconexão pode ocorrer em diferentes âmbitos Interconexão de redes locais Existência de diferentes padrões de rede necessidade de conectá-los Interconexão pode ocorrer em diferentes âmbitos LAN-LAN LAN-WAN WAN-WAN Repetidores Equipamentos que amplificam

Leia mais

Refere-se à alocação dos recursos da rede para a transmissão pelos diversos dispositivos conectados.

Refere-se à alocação dos recursos da rede para a transmissão pelos diversos dispositivos conectados. COMUTAÇÃO Comutação Refere-se à alocação dos recursos da rede para a transmissão pelos diversos dispositivos conectados. Tipos de Comutação: Comutação de Circuitos Comutação de Mensagens Comutação de Pacotes

Leia mais

Topologias e Classificação das RC. Prof. Eduardo

Topologias e Classificação das RC. Prof. Eduardo Topologias e Classificação das RC Prof. Eduardo Introdução As redes de computadores de modo geral estão presentes em nosso dia-a-dia. Estamos tão acostumados a utilizá-las que não nos damos conta da sofisticação

Leia mais

Topologias de Arquiteturas de Comunicação

Topologias de Arquiteturas de Comunicação ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Topologias de Arquiteturas de Comunicação Alexandre Amory Edson Moreno 2 / 31 Índice 1. Introdução 2. Topologias 3. Exercícios 3 / 31 Topologias de Infra-estruturas

Leia mais

Sistemas Operacionais. Gerência de Processador

Sistemas Operacionais. Gerência de Processador Sistemas Operacionais Gerência de Processador Sumário 1. Introdução 2. Funções Básicas do Escalonamento 3. Critérios de Escalonamento 4. Escalonamento 1. Não-Preemptivo 2. Preemptivo 5. Políticas de Escalonamento

Leia mais

SSC0611 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores SSC0611 Arquitetura de Computadores 5ª e 6ª Aulas Revisão de Hierarquia de Memória Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br 1 Memória Memória Todo componente capaz de armazenar bits de informação

Leia mais

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5 Cristina Boeres Introdução! Diferença de velocidade entre Processador e MP O processador executa uma operação rapidamente e fica em

Leia mais

6 ESCALONAMENTO DE CPU

6 ESCALONAMENTO DE CPU 6 ESCALONAMENTO DE CPU O escalonamento de CPU é ponto chave da multiprogramação. Ela permite que haja mais de um processo em execução ao mesmo tempo. Em ambientes com um único processador, o escalonador

Leia mais

Introdução. Redes de Interconexão - Prof a Luiza Mourelle 1

Introdução. Redes de Interconexão - Prof a Luiza Mourelle 1 Introdução Redes de interconexão são utilizadas em diferentes aplicações: barramentos backplane e redes de sistemas; chaves de telefonia; redes internas para modo de transferência assíncrona (ATM) e protocolo

Leia mais

Organização de Computadores Sistema de Interconexão. Professor: Francisco Ary

Organização de Computadores Sistema de Interconexão. Professor: Francisco Ary Organização de Computadores Sistema de Interconexão Professor: Francisco Ary Como já sabemos, um computador é constituído basicamente por: processador; memória; e dispositivo de entrada e de saída. O comportamento

Leia mais

Barramento compartilhado

Barramento compartilhado Barramento compartilhado A organização de rede de barramento compartilhado usa um único caminho de comunicação entre todos os processadores e módulos de memória: a rota pela qual as mensagens transitam.

Leia mais

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores Ciência da Computação Arq. e Org. de Computadores Processadores Prof. Sergio Ribeiro Composição básica de um computador eletrônico digital: Processador Memória Memória Principal Memória Secundária Dispositivos

Leia mais

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register PROCESSADORES Um computador digital consiste em um sistema interconectado de processadores, memória e dispositivos de entrada e saída. A CPU é o cérebro do computador. Sua função é executar programas armazenados

Leia mais

BARRAMENTOS DO SISTEMA FELIPE G. TORRES

BARRAMENTOS DO SISTEMA FELIPE G. TORRES BARRAMENTOS DO SISTEMA FELIPE G. TORRES BARRAMENTOS DO SISTEMA Um computador consiste em CPU, memória e componentes de E/S, com um ou mais módulos de cada tipo. Esses componentes são interconectados de

Leia mais

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Filipo Mór WWW.FILIPOMOR.COM - REVISÃO ARQUITETURAS PARALELAS Evolução das Arquiteturas Evolução das Arquiteturas Entrada CPU Saída von

Leia mais

Visualização Distribuída utilizando Agrupamentos de PCs 10

Visualização Distribuída utilizando Agrupamentos de PCs 10 1 Introdução Sistemas de visualização vêm sendo utilizados em diversas áreas da indústria e do campo científico. Dentre essas áreas, CAD (Computer Aided Design), visualização científica e realidade virtual

Leia mais

Desempenho de computação paralela

Desempenho de computação paralela Desempenho de computação paralela o paralelismo existente na aplicação decomposição do problema em subproblemas menores a alocação destes subproblemas aos processadores o modo de acesso aos dados: a existência

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL INTRODUÇÃO À TECNOLOGIA DA ORGANIZAÇÃO COMPUTACIONAL PROFESSOR CARLOS MUNIZ ORGANIZAÇÃO DE UM COMPUTADOR TÍPICO Memória: Armazena dados e programas Processador (CPU - Central Processing Unit): Executa

Leia mais

O que é um sistema distribuído?

O que é um sistema distribuído? Disciplina: Engenharia de Software 4 Bimestre Aula 1: ENGENHARIA DE SOFTWARE DISTRIBUÍDO O que é um sistema distribuído? Segundo Tanenbaum e Steen (2007) um sistema distribuído é uma coleção de computadores

Leia mais

Nível de Rede. Modelo de Referência OSI GCAR

Nível de Rede. Modelo de Referência OSI GCAR Nível de Rede Modelo de Referência OSI Camada 1: Física Camada 2: Enlace Camada 3: Rede Camada 4: Transporte Camada 5: Sessão Camada 6: Apresentação Camada 7: Aplicação APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE

Leia mais

ANÁLISE DE DESEMPENHO DAS TOPOLOGIAS PARA SISTEMAS SOC

ANÁLISE DE DESEMPENHO DAS TOPOLOGIAS PARA SISTEMAS SOC ANÁLISE DE DESEMPENHO DAS TOPOLOGIAS PARA SISTEMAS SOC Bruno Cesar Puli Dala Rosa (PIBIC/CNPq/FA/Uem), Anderson Faustino Da Silva (Orientador), e-mail: bcesar.g6@gmail.com Universidade Estadual de Maringá

Leia mais

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela Arquitetura de Computadores Paralelos Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela Por que estudar Computação Paralela e Distribuída? Os computadores sequenciais

Leia mais

Sumário. Introdução a SoCs. Introdução a SoCs. Introdução a SoCs. Introdução a SoCs. Systems on Chips Multiprocessados: MPSoCs

Sumário. Introdução a SoCs. Introdução a SoCs. Introdução a SoCs. Introdução a SoCs. Systems on Chips Multiprocessados: MPSoCs Systems on Chips Multiprocessados: Julian Pontes Sérgio Johann Filho Valderi Leithardt Sumário Software embarcado Projeto baseado em plataformas em A indústria de semicondutores tem aumentado em muito

Leia mais

Interconexão de redes locais. Repetidores. Hubs. Existência de diferentes padrões de rede

Interconexão de redes locais. Repetidores. Hubs. Existência de diferentes padrões de rede Interconexão de redes locais Existência de diferentes padrões de rede necessidade de conectá-los Interconexão pode ocorrer em diferentes âmbitos LAN-LAN LAN: gerente de um determinado setor de uma empresa

Leia mais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais DCA-108 Sistemas Operacionais Capítulo 2 Luiz Affonso Guedes www.dca.ufrn.br/~affonso affonso@dca.ufrn.br Multiprogramação Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização de um SO Moderno

Leia mais

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA

Leia mais

Nível de Rede. Funções do nível de rede GCAR

Nível de Rede. Funções do nível de rede GCAR Nível de Rede Funções do nível de rede Multiplexação Endereçamento Mapeamento entre endereços de rede e de enlace Roteamento Estabeleciment/Liberação conexões de rede Controle de Congestionamento 1 Funções

Leia mais

Barramento CoreConnect

Barramento CoreConnect Barramento CoreConnect MO801 1º semestre de 2006 Prof. Rodolfo Jardim de Azevedo Fabiana Bellette Gil - RA 028671 CoreConnect Agenda Conceitos básicos Introdução ao CoreConnect Arquitetura Referências

Leia mais

Gerência de memória III

Gerência de memória III Gerência de memória III Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2016 1 / 45 Sumário 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas

Leia mais

Implementação de uma plataforma MP-SoC baseada em NoC com solução de diretório para manutenção da coerência de cache

Implementação de uma plataforma MP-SoC baseada em NoC com solução de diretório para manutenção da coerência de cache PublICa III (2007) 09-17 Implementação de uma plataforma MP-SoC baseada em NoC com solução de diretório para manutenção da coerência de cache Gustavo Girão 1, Bruno Cruz de Oliveira 1, Ivan Saraiva Silva

Leia mais

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global GERÊNCIA DE RECURSOS Escalonamento Global Além de prover comunicação, recursos de acesso a rede, memória compartilhada, sistemas de arquivos distribuídos, um sistema operacional distribuído tem que poder

Leia mais

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação MULTIPROCESSADORES

Leia mais

Aula 2 Topologias de rede

Aula 2 Topologias de rede Aula 2 Topologias de rede Redes e Comunicação de Dados Prof. Mayk Choji UniSALESIANO Araçatuba 13 de agosto de 2016 Sumário 1. Topologias de Rede 2. Topologias Físicas Ponto-a-Ponto Barramento BUS Anel

Leia mais

Durante a evolução das arquiteturas de computadores e principalmente dos Sistemas Operacionais, muitas tecnologias tiveram que ser aprimoradas para

Durante a evolução das arquiteturas de computadores e principalmente dos Sistemas Operacionais, muitas tecnologias tiveram que ser aprimoradas para UM ESTUDO SOBRE O MECANISMO DE PAGINAÇÃO DE MEMÓRIA E OS ALGORITMOS DE SUBSTITUIÇÃO DE PÁGINAS FIFO E LRU Fernando Sales Ferreira, fernandobrabat@hotmail.com William Antônio Faria Da Silva, William_8716@hotmail.com

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William Stallings Arquitetura e Organização de Computadores 8 a Edição William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 3 Visão de alto nível da função e interconexão do computador slide 1 Conceito de programa Sistemas hardwired são inflexíveis.

Leia mais

ROUTER. Alberto Felipe Friderichs Barros

ROUTER. Alberto Felipe Friderichs Barros ROUTER Alberto Felipe Friderichs Barros Router Um roteador é um dispositivo que provê a comunicação entre duas ou mais LAN s, gerencia o tráfego de uma rede local e controla o acesso aos seus dados, de

Leia mais

Comunicação de Dados II

Comunicação de Dados II Comunicação de Dados II Tecnologia em Redes de Computadores IFSULDEMINAS Campus Inconfidentes Prof. Kleber Rezende kleber.rezende@ifsuldeminas.edu.br Interligação em Redes Acomoda distintas tecnologias

Leia mais

Os textos nestas caixas foram adicionados pelo Prof. Joubert

Os textos nestas caixas foram adicionados pelo Prof. Joubert William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 3 Visão de alto nível da função e interconexão do computador Os textos nestas caixas foram adicionados pelo Prof. Joubert

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Jordana Sarmenghi Salamon jssalamon@inf.ufes.br jordanasalamon@gmail.com http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda

Leia mais

Algoritmo de Roteamento

Algoritmo de Roteamento Universidade Federal Do Piauí(UFPI) Colégio Técnico De Teresina(CTT) Professor:Valdemir Reis Disciplina: Redes de Computadores Algoritmo de Roteamento Aline Fernandes João Alberto Mesquita José Pinheiro

Leia mais

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S Explicitar aos alunos os modelos de entrada e saída em um computador e quais barramentos se aplicam a cada componente: memória,

Leia mais

QEEF-G: Execução Paralela Adaptativa de Consultas Iterativas

QEEF-G: Execução Paralela Adaptativa de Consultas Iterativas Vinícius Fontes Vieira da Silva QEEF-G: Execução Paralela Adaptativa de Consultas Iterativas Dissertação de Mestrado Dissertação apresentada ao programa de Pósgraduação em Informática do Departamento de

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES ARQUITETURA DE COMPUTADORES Arquitetura de Von Newmann Prof Daves Martins Msc Computação de Alto Desempenho Email: daves.martins@ifsudestemg.edu.br Vídeos Vídeo aula RNP http://edad.rnp.br/rioflashclient.php?xmlfile=/ufjf/licenciatura_com

Leia mais

Redes-em-Chip de Baixo Custo

Redes-em-Chip de Baixo Custo UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM COMPUTAÇÃO RODRIGO DA SILVA CARDOZO Redes-em-Chip de Baixo Custo Dissertação apresentada como requisito parcial

Leia mais

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar - Aula 4 - INTERFACES E SERVIÇOS Definições: Serviços: Cada camada fornece serviços para camada superior. O modelo especifica o que cada camada faz, não como o serviço é implementado ou acessado. Interfaces:

Leia mais

Introdução aos Sistemas Operacionais

Introdução aos Sistemas Operacionais 1 Introdução aos Sistemas Operacionais 1.1 O que é um sistema operacional 1.2 História dos sistemas operacionais 1.3 O zoológico de sistemas operacionais 1.4 Conceitos sobre sistemas operacionais 1.5 Chamadas

Leia mais

Redes de Computadores I

Redes de Computadores I Redes de Computadores I Prof.ª Inara Santana Ortiz inara.ortiz@ifms.edu.br Aula 1 Plano de Ensino Plano de Ensino Plano de Ensino Média Final: MF = M1 + M2 2 M1 = NA + N1 M2 = NA + N2 Onde: MF = Média

Leia mais

Modelo de Programação Paralela

Modelo de Programação Paralela Modelo de Programação Paralela As arquiteturas paralelas e distribuídas possuem muitos detalhes Como especificar uma solução paralela pensando em todos esses detalhes? O que queremos? Eecutar a solução

Leia mais

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período Redes de Computadores Fundamentos de Sistemas Operacionais - 2º Período PARTE III: GERÊNCIA DE RECURSOS SUMÁRIO 8. GERÊNCIA DO PROCESSADOR: 8.1 Introdução; 8.2 Funções Básicas; 8.3 Critérios de Escalonamento;

Leia mais

Sistemas Operacionais Distribuídos

Sistemas Operacionais Distribuídos Sistemas Operacionais Distribuídos Introdução O uso de redes locais e da Internet está amplamente difundido mesmo para uso doméstico. Mas para que tais recursos físicos sejam aproveitados da melhor forma

Leia mais

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Pensando em Paralelo Pensar em paralelo é uma tarefa que exige disciplina

Leia mais

Conceito de Serviço Universal. Conceito de Serviço Universal. Arquitetura de uma internet. Hardware básico de uma internet. Serviço universal:

Conceito de Serviço Universal. Conceito de Serviço Universal. Arquitetura de uma internet. Hardware básico de uma internet. Serviço universal: Redes de Computadores Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br Camada de Rede Departamento de Ciência da Computação Universidade Federal de Minas Gerais Motivação para interconexão Motivação

Leia mais

SSC0641 Redes de Computadores

SSC0641 Redes de Computadores SSC0641 Redes de Computadores Capítulo 4 Camada de Rede 4.1 a 4.3 Prof. J ó Ueyama Abril/2011 SSC0641-2011 1 Objetivos do Capítulo 4 Camada de Rede Entender os princípios dos serviços da camada de rede:

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de

Leia mais

Redes Locais (LANs): PRINCÍPIOS

Redes Locais (LANs): PRINCÍPIOS Redes Locais (LANs): PRINCÍPIOS Aplicações de LANs Para computadores pessoais Baixo custo Taxas de transmissão limitadas Para conexão de redes Interconexão de sistemas maiores (grandes servidores e dispositivos

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Aula 19 Barramentos: Estruturas de Interconexão Rodrigo Hausen 14 de outubro de 2011 http://cuco.pro.br/ach2034 1/40 Apresentação 1. Bases Teóricas 2. Organização de computadores

Leia mais

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade Memória Cache Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade Temporal Um item referenciado tende a

Leia mais

Modelagem e Simulação de Mecanismos de Sincronização entre Unidades Reconfiguráveis para Projeto Baseado em Redes em Chip

Modelagem e Simulação de Mecanismos de Sincronização entre Unidades Reconfiguráveis para Projeto Baseado em Redes em Chip Modelagem e Simulação de Mecanismos de Sincronização entre Unidades econfiguráveis para Projeto Baseado em edes em Chip Tiago Patrocinio, Natasha ebelo, Ivan Saraiva Silva Departamento de Computação Universidade

Leia mais

Sistemas Operacionais. Tipos de SO

Sistemas Operacionais. Tipos de SO Sistemas Operacionais Tipos de SO Tipos de Sistemas Operacionais Tipos de Sistemas Operacionais Sistemas Monoprogramáveis/ Monotarefas Sistemas Multiprogramáveis/ Multitarefas Sistemas com Múltiplos Processadores

Leia mais

Paralelismo em Computadores com Tecnologia Multicore

Paralelismo em Computadores com Tecnologia Multicore IFRN - Pau dos Ferros Pau dos Ferros/RN, 25 de fevereiro de 2016 O minicurso Descrição: Para se utilizar os vários núcleos de processamento disponíveis nos computadores atuais de forma eficiente, faz necessário

Leia mais

Fundamentos de Redes de Computadores

Fundamentos de Redes de Computadores Fundamentos de Redes de Computadores Carlos Gomes Fontinelle Carlos Gomes Fontinelle Fundamentos de Redes de Computadores 1ª Edição Manaus-AM Maio/2015 Agradecimentos Agradeço à minha esposa, Eliana, e

Leia mais

ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade

ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro do Prof. Dr. Carlos Alberto Maziero, disponível no link: http://dainf.ct.utfpr.edu.br/~maziero

Leia mais

FUNDAMENTOS DE REDES DE COMPUTADORES AULA 5: REDE DE ACESSO CAMADA ENLACE. Prof. LUIZ LEÃO

FUNDAMENTOS DE REDES DE COMPUTADORES AULA 5: REDE DE ACESSO CAMADA ENLACE. Prof. LUIZ LEÃO AULA 5: REDE DE ACESSO CAMADA ENLACE Prof. LUIZ LEÃO Conteúdo Desta Aula FLUXO DE TRANSMISSÃO TOPOLOGIA FÍSICA PROTOCOLOS DE CONTROLO DE ACESSO 1 2 3 4 5 LINHAS DE COMUNICAÇÃO MÉTODOS DE CONTROLE DE ACESSO

Leia mais

Hardware Reconfigurável

Hardware Reconfigurável Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Hardware Reconfigurável DCA0119 Sistemas Digitais Heitor Medeiros Florencio Tópicos Alternativas de projeto

Leia mais

Redes de Computadores.

Redes de Computadores. Redes de Computadores www.profjvidal.com REDES PONTO-A-PONTO E CLIENTE-SERVIDOR REDES DE COMPUTADORES Uma rede de computadores é formada por um conjunto de módulos processadores capazes de trocar informações

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais ESCALONAMENTO DE PROCESSOS Processos e Recursos Conceito de Escalonamento O S.O. gerencia recursos computacionais em benefício dos diversos processos que executam no sistema. A questão

Leia mais

ESPECIFICANDO FORMALMENTE TOPOLOGIAS PARA REDES EM CHIP SPECIFYING FORMALLY TOPOLIGIES FOR NETWORK ON CHIP

ESPECIFICANDO FORMALMENTE TOPOLOGIAS PARA REDES EM CHIP SPECIFYING FORMALLY TOPOLIGIES FOR NETWORK ON CHIP ESPECIFICANDO FORMALMENTE TOPOLOGIAS PARA REDES EM CHIP E. V. Santos¹ e K. D. N. Ramos¹ ¹UERN Universidade do Estado do Rio Grande do Norte eliselma.vieira@natal.uern.com.br- karlaramos@uern.br Artigo

Leia mais

Análise do Tráfego Interno em uma Rede-em-Chip por meio de Simulação

Análise do Tráfego Interno em uma Rede-em-Chip por meio de Simulação Análise do Tráfego Interno em uma Rede-em-Chip por meio de Simulação Sérgio Vargas Júnior, Eduardo A. da Silva, Cesar A. Zeferino Laboratório de Sistemas Embarcados e Distribuídos Universidade do Vale

Leia mais

Graduação Tecnológica em Redes de Computadores. Tecnologias de Interligação de Redes

Graduação Tecnológica em Redes de Computadores. Tecnologias de Interligação de Redes Graduação Tecnológica em Redes de Computadores Tecnologias de Interligação de Redes Euber Chaia Cotta e Silva euberchaia@yahoo.com.br Graduação Tecnológica em Redes de Computadores Comutação de Circuitos,

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 19: Memória Virtual: Introdução Diego Passos Última Aula Paginação Método de gerenciamento de memória mais usado hoje. Espaço de endereçamento de um processo é

Leia mais

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD Universidade Federal do Rio de Janeiro Informática DCC/IM Arquitetura de Computadores II Arquiteturas MIMD Arquiteturas MIMD As arquiteturas MIMD dividem-se em dois grandes modelos: Arquiteturas MIMD de

Leia mais

Programação Concorrente

Programação Concorrente INE 5410 Programação Concorrente Professor: Lau Cheuk Lung (turma A) INE UFSC lau.lung@inf.ufsc.br Conteúdo Programático 1. 2. Programação Concorrente 3. Sincronização 1. Condição de corrida, região critica

Leia mais

Transmissão de Informação

Transmissão de Informação Transmissão de Informação 1.Multiplexação e Modulação Sempre que a banda passante de um meio físico for maior ou igual à banda passante necessária para um sinal, podemos utilizar este meio para a transmissão

Leia mais

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES João Ricardo Kohler Abramoski (PAIC/FUNDAÇÃO ARAUCÁRIA), Sandra Mara Guse Scós Venske (Orientadora), e-mail: ssvenske@unicentro.br

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William Stallings Arquitetura e Organização de Computadores 8 a Edição William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 8 Suporte do sistema operacional slide 1 Objetivos e funções Conveniência: Tornar o computador mais fácil de usar. Eficiência:

Leia mais

Exercícios de Sistemas Operacionais 3 B (1) Gerência de Dispositivos de Entrada e Saída

Exercícios de Sistemas Operacionais 3 B (1) Gerência de Dispositivos de Entrada e Saída Nome: Exercícios de Sistemas Operacionais 3 B (1) Gerência de Dispositivos de Entrada e Saída 1. A gerência de dispositivos de entrada e saída é uma das principais e mais complexas funções de um sistema

Leia mais

Projeto Lógico Automatizado de Sistemas Digitais Seqüenciais 1 - Introdução

Projeto Lógico Automatizado de Sistemas Digitais Seqüenciais 1 - Introdução Pontifícia Universidade Católica do Rio Grande do Sul Instituto de Informática (II-PUCRS) Grupo de Apoio ao Projeto de Hardware - GAPH Projeto Lógico Automatizado de Sistemas Digitais Seqüenciais - Introdução

Leia mais

Curso: Redes de Computadores

Curso: Redes de Computadores Curso: Redes de Computadores Cadeira de Introdução a Sistemas Operacionais. Bibliografia Sistemas Operacionais Modernos Andew S. Tanembaum Sistema Operacionais Abraham Silberchatz, Peter Galvin e Greg

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.

Leia mais

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend Concorrência Nos sistemas Monoprogramáveis somente um programa pode estar em execução por vez, permanecendo o processador dedicado a esta única tarefa. Os recursos como memória, processador e dispositivos

Leia mais

Organização de Computadores I

Organização de Computadores I Organização de Computadores I Aula 2 Material: Diego Passos http://www.ic.uff.br/~debora/orgcomp/pdf/parte2.pdf Organização de Computadores I Aula 2 1/29 Tópicos de Computação. de um Sistema de Computação..

Leia mais

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores

Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores Faculdade Integrada do Ceará FIC Graduação em Redes de Computadores Disciplina Redes de Banda Larga Prof. Andrey Halysson Lima Barbosa Aula 1 Conceitos básicos de comunicação Sumário Técnicas de transmissão

Leia mais

2 Qualidade de serviço

2 Qualidade de serviço 2 Qualidade de serviço A partir dos anos 90, as redes comutadas por pacotes começaram a substituir as redes comutadas por circuitos devido à ineficiente utilização das redes utilizando tal comutação e

Leia mais

Sistemas Distribuídos Aula 2

Sistemas Distribuídos Aula 2 Sistemas Distribuídos Aula 2 Aula passada Logísitica Regras do jogo Definição e características Exemplos Aula de hoje Processos IPC Características Ex. sinais, pipes, sockets Objetivos Processos O que

Leia mais

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2006 Profa. Dra. Itana Gimenes RUP: Projeto Artefatos Modelo de Projeto: Lista de classes de

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Definição Sistema Distribuído é aquele onde os componentes de software e hardware localizados em redes de computadores comunicam-se e coordenam suas ações apenas por passagem de mensagens.

Leia mais