Avaliação da Execução de Aplicações Orientadas à Dados

Propaganda
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
CENTRO DE CIÊNCIAS EXATAS E DA TERRA
DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA
PROGRAMA DE PÓS-GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃO
MESTRADO EM SISTEMAS E COMPUTAÇÃO
CHRISTIANE DE ARAÚJO NOBRE
Avaliação da Execução de Aplicações Orientadas à Dados
na Arquitetura de Redes em Chip IPNoSys
Natal/RN
Agosto, 2012
CHRISTIANE DE ARAÚJO NOBRE
Avaliação da Execução de Aplicações Orientadas à Dados
na Arquitetura de Redes em Chip IPNoSys
Dissertação submetida ao Programa de PósGraduação em Sistemas e Computação do
Departamento de Informática e Matemática
Aplicada da Universidade Federal do Rio Grande
do Norte como parte dos requisitos para obtenção
do título de Mestre em Sistemas e Computação
(MSc.)
Orientador: Prof. Dr. Márcio Eduardo Kreutz
Natal/RN
Agosto, 2012
Catalogação da Publicação na Fonte. UFRN / SISBI / Biblioteca Setorial
Especializada do Centro de Ciências Exatas e da Terra – CCET.
Nobre, Christiane de Araújo.
Avaliação da execução de aplicações orientadas à dados na arquitetura de redes
em chip IPNoSys / Christiane de Araújo Nobre. – Natal, 2012.
63 f. : il.
Orientador: Prof. Dr. Márcio Eduardo Kreutz.
Dissertação (Mestrado) – Universidade Federal do Rio Grande do Norte. Centro
de Ciências Exatas e da Terra. Departamento de Informática e Matemática Aplicada.
Programa de Pós-Graduação em Sistemas e Computação.
1. Arquitetura de redes - Dissertação. 2. Redes em chip - Dissertação. 3.
Sistemas embarcados – Dissertação. 4. Processamento paralelo - Dissertação. 5.
Paralelismo em nível de instruções - Dissertação. 6. Aplicações orientadas a dados.
I. Kreutz , Márcio Eduardo. II. Título
RN/UF/BSE-CCET
RN/UF/BSE-CCET
CDU: 004.72
CDU 004:577.2
Agradecimentos
À Deus, pela vida, por ter me dado capacidade, sabedoria e persistência para realizar este
trabalho.
À minha mãe Edinilse, por ter me ensinado a ser sempre generosa, modéstia, ter paciência,
esperança e saber perdoar. Ao meu pai Sérgio, por sempre ter me incentivado a aperfeiçoar meus
conhecimentos e a buscar novas conquistas.
Ao meu orientador Márcio Kreutz, pela compreensão, confiança, incentivo, pelos exemplos de
competência e dedicação e por ter aceitado me orientar no mestrado. Agradeço pelo constante bom
humor, e pelo apoio dado nesta conquista.
Aos professores que, de uma forma ou de outra, apresentaram sugestões, ideias e
direcionamentos que foram de grande valia na continuidade e finalização do trabalho.
Ao meu esposo, Thiago, amigo e companheiro incansável, fonte de carinho e força nos
momentos mais difíceis. Pessoa fundamental na minha e na concretização deste trabalho.
Às minhas irmãs Valéria e Isabela, e aos demais familiares, pelo apoio incondicional dado em
todas as etapas da minha vida.
Aos amigos e colegas Sílvio, Jefferson e Jonathan, com quem muito aprendi e cujo trabalho,
ajuda e sugestões serviram como base para os resultados aqui apresentados.
As amigas e colegas Alba, Aparecida, Dayanne, Eliselma, Katyanne, que muito admiro e com
quem sempre posso contar a qualquer hora.
Aos amigos do LASIC, pela amizade, compreensão e ajuda ao longo do mestrado.
À CAPES, pelo apoio financeiro, que possibilitou meus estudos e pesquisas.
RESUMO
A crescente complexidade dos circuitos integrados impulsionou o surgimento de arquiteturas
de comunicação do tipo Redes em chip ou NoC (do inglês, Network-on-Chip), como
alternativa de arquitetura de interconexão para Sistemas-em-Chip (SoC; Systems-on-Chip). As
redes em chip possuem capacidade de reuso de componentes, paralelismo e escalabilidade,
permitindo a reutilização em projetos diversos. Na literatura, têm-se uma grande quantidade
de propostas com diferentes configurações de redes em chip. Dentre as redes em chip
estudadas, a rede IPNoSys possui arquitetura diferenciada, pois permite a execução de
operações, em conjunto com as atividades de comunicação. Este trabalho visa avaliar a
execução de aplicações orientadas a dados na rede IPNoSys, focando na sua adequação frente
às restrições de projeto. As aplicações orientadas a dados são caracterizadas pela comunicação
de um fluxo contínuo de dados sobre os quais, operações são executadas. Espera-se então, que
estas aplicações possam ser beneficiadas quando de sua execução na rede IPNoSys, devido ao
seu elevado grau de paralelismo e por possuírem modelo de programação semelhante ao
modelo de execução desta rede. Uma vez observadas a execução de aplicações na rede
IPNoSys, foram realizadas modificações no modelo de execução da rede IPNoSys, o que
permitiu a exploração do paralelismo em nível de instruções. Para isso, análises das execuções
de aplicações data flow foram realizadas e comparadas.
Palavras-chave: Redes em chip, arquiteturas de sistemas embarcados, processamento
paralelo, paralelismo em nível de instruções, aplicações orientadas a dados.
ABSTRACT
The increasing complexity of integrated circuits has boosted the development of
communications architectures like Networks-on-Chip (NoCs), as an architecture; alternative
for interconnection of Systems-on-Chip (SoC). Networks-on-Chip complain for component
reuse, parallelism and scalability, enhancing reusability in projects of dedicated applications.
In the literature, lots of proposals have been made, suggesting different configurations for
networks-on-chip architectures. Among all networks-on-chip considered, the architecture of
IPNoSys is a non conventional one, since it allows the execution of operations, while the
communication process is performed. This study aims to evaluate the execution of data-flow
based applications on IPNoSys, focusing on their adaptation against the design constraints.
Data-flow based applications are characterized by the flowing of continuous stream of data,
on which operations are executed. We expect that these type of applications can be improved
when running on IPNoSys, because they have a programming model similar to the execution
model of this network. By observing the behavior of these applications when running on
IPNoSys, were performed changes in the execution model of the network IPNoSys, allowing
the implementation of an instruction level parallelism. For these purposes, analysis of the
implementations of dataflow applications were performed and compared.
Keywords: Network-on-chip, embedded systems architecture, parallel processing, instruction
level parallelism, data oriented applications.
Lista de Figuras
Figura 1 – Topologias diretas: (a)Grelha 2D; (b) Torus 2D; (c) Cubo 3D; (d) Cubo 4D ou
Hipercubo; (e) Totalmente Conectada ...................................................................................... 17
Figura 2 – Topologias indiretas: (a) Crossbar; (b) rede multiestágio Ômega ......................... 17
Figura 3 – Exemplos de algoritmos de roteamento e suas rotas para enviar uma mensagem do
nodo A para o nodo B ............................................................................................................... 18
Figura 4 – Composição de uma mensagem: pacotes; flit; phits ............................................... 20
Figura 5 – Abordagens para implementação de árbitros: (a) centralizada; (b)
distribuída.................................................................................................................................21
Figura 6 – Estratégias de memorização utilizando roteador com quatro buffers: (a)SAFC;
(b)SAMQ; (c)DAMQ...............................................................................................................21
Figura 7 – Arquitetura IPNoSys...............................................................................................23
Figura 8 – MAU na Arquitetura IPNoSys................................................................................24
Figura 9 – RPU na Arquitetura IPNoSys..................................................................................25
Figura 10 – Spiral Complement: (a) 1ª espiral; (b) 2ª epiral; (c) 3ª espiral; (d) 4ª espiral........26
Figura 11 – Formato do pacote da rede IPNoSys.....................................................................27
Figura 12 – Programa básico na linguagem a fluxo de dados.................................................32
Figura 13 – Visão geral do sistema .........................................................................................36
Figura 14 – Formato do pacote modificado para programação................................................39
Figura 15 – Formato do pacote modificado para execução......................................................40
Figura 16 – Etapa de programação da rede IPNoSys Dataflow – Parte 1................................42
Figura 17 – Etapa de programação da rede IPNoSys Dataflow – Parte 2................................43
Figura 18 – Etapa de programação da rede IPNoSys Dataflow – Parte 1................................44
Figura 19 – Etapa de execução da rede IPNoSys Dataflow – Parte 1......................................45
Figura 20 – Etapa de execução da rede IPNoSys Dataflow – Parte 2......................................46
Figura 21 – Etapa de execução da rede IPNoSys Dataflow – Parte 3......................................46
Figura 22 – Tempo de Execução da Aplicação SDF: (a) 1 Pacote; (b) 2 Pacotes...................48
Figura 23 – Tempo de Execução da Aplicação SDF: (a) 3 Pacotes; (b) 4 Pacotes.................49
Figura 24 – Potência da Rede IPNoSys: (a) 1 Pacote; (b) 2 Pacotes…...................................50
Figura 25 – Potência da Rede IPNoSys: (a) 3 Pacotes; (b) 4 Pacotes......................................51
Figura 26 – Quantidade de RPUs percorrido no Spiral Complement......................................55
Figura 27 – Roteamento com bloqueio da rede.......................................................................56
Figura 28 – Desempenho estimado para variações da rede com dimensões 4x4....................57
Figura 29 – Desempenho estimado para variações da rede com dimensões 6x6....................58
LISTA DE ABREVIATURAS E SIGLAS
DAMQ
Dynamically Allocated Multi-Queue
DCT
Discrete Cosine Transform
FIFO
First in First Out
IPNoSys
Integrated Processing NoC System
IP
Intellectual Property
MAU
Memory Access Unit
MDFM
Manchester Data Flow Machine
MoC
Model of Computation
MTTDA
MIT Tagged Token Architecture
NoC
Network-on-Chip
PDL
Package Description Language
QNoC
Quality of Service Network-on-Chip
QoS
Quality of Service
RPU
Routing and Processing Unit
SAFC
Statically Allocated Fully Connected
SAMQ
Statically Allocated Multi-Queue
SDF
Synchronous Data Flow
SoCIN
System-on-Chip Interconnection Network
SoC
System-on-Chip
ULA
Unidade Lógica e Aritmética
VCT
Virtual Cut-Through
Sumário
1. INTRODUÇÃO ..................................................................................................... 13
1.1. OBJETIVOS ......................................................................................................................... 15
1.2. ESTRUTURA DO TRABALHO ......................................................................................... 15
2. REFERENCIAL TEÓRICO .................................................................................. 16
2.1. REDES EM CHIP .................................................................................................................. 16
2.1.1. Características das Redes em Chip ........................................................................... 16
2.1.1.1.
Topologia ........................................................................................................ 16
2.1.1.2.
Roteamento..................................................................................................... 18
2.1.1.3.
Controle de Fluxo .......................................................................................... 19
2.1.1.4.
Chaveamento .................................................................................................. 19
2.1.1.5.
Arbitragem ..................................................................................................... 20
2.1.1.6.
Memorização .................................................................................................. 21
2.1.2. Vantagens e Desvantagens das NoCs ........................................................................ 22
2.2. REDE IPNOSYS .................................................................................................................... 22
2.2.1. Elementos Arquiteturais ............................................................................................ 23
2.2.1.1.
MAU - Unidade de Acesso a Memória ......................................................... 23
2.2.1.2.
RPU - Unidade de Processamento e Roteamento ....................................... 24
2.2.1.3.
Algoritmo Spiral Complement ....................................................................... 25
2.2.1.4.
Formato do Pacote ......................................................................................... 26
3. ESTADO DA ARTE ............................................................................................. 30
3.1. MODELO DE COMPUTAÇÃO BASEADO EM FLUXO DE DADOS .......................... 30
3.1.1. Fluxo de Dados Síncrono ........................................................................................... 32
3.1.2. Fluxo de Dados Assíncrono........................................................................................ 33
3.1.3. Fluxo de Dados Dinâmico .......................................................................................... 33
3.2. APLICAÇÕES DATAFLOW ................................................................................................ 33
3.3. ARQUITETURAS DATAFLOW .......................................................................................... 35
4. PROPOSTA DE MODELO DE EXECUÇÃO ORIENTADA A DADOS PARA
REDE IPNOSYS .................................................................................................. 38
4.1. FORMATO DOS PACOTES................................................................................................ 38
4.1.1. Formato do pacote de programação ......................................................................... 38
4.1.2. Formato do pacote de execução................................................................................. 40
4.2. PROGRAMAÇÃO................................................................................................................. 41
4.3. EXECUÇÃO........................................................................................................................... 44
5. RESULTADOS .................................................................................................... 47
5.1. AVALIAÇÃO ........................................................................................................................ 47
5.2. RESULTADOS ANALÍTICOS ........................................................................................... 52
6. CONSIDERAÇÕES FINAIS ................................................................................. 59
6.1. CONCLUSÕES ...................................................................................................................... 59
6.2. TRABALHOS FUTUROS .................................................................................................... 60
7. REFERÊNCIAS ................................................................................................... 61
1. INTRODUÇÃO
Nas ultimas décadas cresceu a necessidade de estudos relacionados com o projeto de
computadores e sistemas periféricos. Contudo, a ênfase de pesquisa tem se deslocado para
uma área muito mais ampla: a de sistemas eletrônicos de uso específico. Sistemas embarcados
são sistemas computacionais que possuem a mesma estrutura geral de um computador, mas a
especificidade de suas tarefas faz com que não sejam usados nem percebidos como um
computador.
HAMMOND (1997) e PATT (1997) já afirmavam que em poucos anos seria
admissível existirem circuitos integrados compostos por mais de um bilhão de transistores, e
atualmente, tal afirmação foi comprovada. Devido a esta capacidade de integração é possível
incluir um sistema computacional completo em um único chip, compondo os chamados SoC
(System-on-Chip) ou Sistemas integrados.
Os SoC são baseados na arquitetura de barramento, que é a forma usual de
interconexão entre os componentes do sistema. A interconexão por barramento é simples, sob
o ponto de vista de implementação, mas apresenta diversas desvantagens (BENINI, 2002): (i)
somente uma troca de dados é realizada por vez, já que o meio físico é compartilhado por
todos os núcleos, provocando a redução do desempenho global do sistema; (ii) necessidade de
mecanismos inteligentes de arbitragem para evitar desperdício; (iii) a escalabilidade é
limitada, ou seja, o número de núcleos que podem ser ligados ao barramento é muito baixo.
Para controlar a complexidade de criar chips contendo bilhões de transistores, é
necessário separar a comunicação da computação. Assim, as NoCs (Network-on-Chip) estão
emergindo como um alternativa para interconexões existentes nos chips, onde a abstração das
camadas de protocolos é utilizada para modularizar o projeto de comunicação. Além disso, a
NoC é uma rede de interconexão chaveada, apresenta largura de banda escalável, usa
conexões ponto a ponto curtas e utiliza o paralelismo na comunicação.
Vários grupos de pesquisa estão estudando as possibilidades arquiteturais das NOCs,
sugerindo soluções para topologias de rede, algoritmos de roteamento, comunicação paralela,
dentre outros. Um dos primeiros resultados efetivos sobre rede em chip foi alcançado usando
a rede NoC SPIN (GUERRIER, 2000), que propôs um modelo de arquitetura baseado em rede
integrada de comutação. E explica porque o barramento compartilhado não cumpre os
requisitos de desempenho e apresenta uma alternativa de interligação que tem origem da
computação paralela.
AGARWAL (2009) sintetiza abordagens e estudos descritos em sessenta artigos de
investigação e contribuições na área do NoC, verificando que é preciso um estudo mais
eficiente nas soluções de baixo custo, área e energia para NoCs, permitindo sua aplicação na
13
indústria de sistemas embarcados. Encontrando soluções adequadas, as redes em chip
são capazes de lidar com as mais diversas áreas, como: sistemas multimídia e de
reconhecimento de voz, jogos 3D, aplicações de tempo-real e algoritmos de codificação e
decodificação de vídeo.
Em uma rede em chip, a topologia é uma das suas principais características,
consistindo na organização da rede sob a forma de grafo, onde os roteadores são os vértices e
os canais os arcos. Um estudo de topologias de NoC irregulares e adaptáveis conforme a
necessidade da aplicação é proposto por STENSGAARD (2008). A arquitetura possibilita a
minimização generalizada da plataforma SoC, incluindo ligações longas e ligações direta
entre blocos IP (Intellectual Property). A topologia é configurada por meio inserção de uma
camada entre roteadores e links, possibilitando uma diminuição de 56% no consumo de
energia em comparação com uma topologia em malha estática 2D.
O chaveamento em NoCs é necessário para definir como as mensagens são
transferidas da entrada dos roteadores para os seus canais de saída. Uma das técnicas de
chaveamento mais importante é a por canais virtuais, já que reduz o bloqueio de um canal por
um determinado pacote na rede. O surgimento de uma arquitetura de buffer centralizado
possibilitou a alocação de canais virtuais em tempo real de acordo com as condições de
trafego da rede, maximizando a taxa de transmissão e a diminuição do buffer, tendo como
resultado a redução da área total e do gasto de energia, obtendo um desempenho semelhante
ao de um roteador genérico (NICOPOULOS et al., 2006).
Em 2004, um grupo de pesquisadores do Israel Institute of Tecnology desenvolveu
uma arquitetura de NoC provendo QoS (Quality of Service). A rede QNoC, foi apresentada
por BOLOTIN et al. 2004, a qual utiliza uma topologia irregular que atende às estruturas
típicas de SoC heterogêneos, usa o chaveamento por pacotes do tipo wormhole e o
mecanismo de controle de fluxo é baseado em créditos combinado com canais virtuais. A QoS
fornecida pela QNoC ocorre por meio da análise do tráfego de comunicação e distribuição das
mensagens em seus níveis de serviço. Uma arquitetura QNoC personalizada pode ser criada
por meio da modificação da sua arquitetura de rede genérica; tal processo de customização
minimiza o custo da rede, mantendo a QoS desejada.
A rede SoCIN (ZEFERINO, 2003) apresenta uma arquitetura de rede em chip,
podendo ser dimensionada para atender aos requisitos de custo e desempenho de sistemas
integrados. Esta rede tem como diferencial um núcleo roteador configurável, que pode ser
dimensionado em função dos requisitos do sistema.
Disso percebe-se a importância e a necessidade de adequação de uma NoC com
propriedades particulares, como é o caso da rede IPNoSys (ARAUJO, 2008) que se diferencia
14
das demais redes em chip encontradas na literatura, pois a mesma utiliza seus próprios
roteadores como elemento de processamento, permitindo a execução de aplicações orientada à
dados. Portanto, a rede IPNoSys pode trazer resultados interessantes para aplicações
especificas, como as aplicações genéricas SDF (Synchronous Data Flow).
1.1. OBJETIVOS
O objetivo mais relevante deste trabalho é avaliar execuções de aplicações SDF na
rede IPNoSys. Pretende-se propor modificações na estrutura da rede visando otimizar as
restrições de projeto.
Como objetivos específicos, este trabalho apresenta:
· Realizar estudos arquiteturais das NoCs.
·
Realizar comparações da arquitetura da rede IPNoSys com outras NoCs.
·
Mapear aplicações SDF para a rede IPNoSys.
·
Analisar a viabilidade da rede IPNoSys, investigando suas vantagens como
NoC ao executar aplicações SDF.
·
Propor soluções arquiteturais para rede IPNoSys.
1.2. ESTRUTURA DO TRABALHO
Este trabalho está organizado da seguinte forma: no CAPÍTULO 2 são
apresentados conceitos básicos sobre redes em chip, focando na rede IPNoSys, que foi a
NoC utilizada para o desenvolvimento deste trabalho. O CAPITULO 3, faz uma
introdução ao modelo de computação data flow, e também, é abordada a caracterização
das aplicações e arquiteturas DF. A explicação das modificações que foram feitas na
IPNoSys visando executar aplicações orientada a dados são apresentadas no CAPITULO
4. O CAPITULO 5, apresenta a analise dos resultados obtidos após a proposta de uma
arquitetura IPNoSys baseada em fluxo de dados. O CAPITULO 6 traz a conclusão e os
trabalhos futuros.
15
2. REFERENCIAL TEÓRICO
Nesse capítulo são apresentados os conceitos fundamentais sobre as redes em chip,
discutindo suas principais características e apresentando suas vantagens e desvantagens sobre
as outras redes de interconexão. Além disso, é feita uma revisão sobre a definição do modelo
de computação data flow. Nessa revisão, também são apresentadas as principais variações do
modelo data flow em termos de modelos de execução.
2.1. REDES EM CHIP
A rede em chip vem sendo utilizada como uma nova proposta para conectar múltiplos
processadores em sistemas distribuídos, onde se aplica as ideias de rede de computadores para
dentro de um único chip, conectando-se através de arquiteturas de interconexão muitos
núcleos (Guerrier e Greiner, 2000).
Nos sistemas em chip, a solução ideal é utilizar a rede em chip como mecanismo de
interconexão permitindo um rápido dimensionamento do sistema e um grau maior de
escalabilidade (BENINI; DE MICHELI, 2002). Isso é devido também a sua capacidade de
comunicação paralela entre os elementos do sistema, através da multiplicidade de caminhos
possíveis existentes nela.
2.1.1 Características das Redes em Chip
Uma rede de interconexão pode ser caracterizada pela sua topologia e pelas estratégias
empregadas para roteamento, controle de fluxo, chaveamento, arbitragem utilizada, dentre
outras características. Abaixo serão brevemente definidos e classificados os principais
componentes e algoritmos que constitui uma rede em chip (DUATO, 1997) (ZEFERINO,
2003):
2.1.1.1. Topologia
A topologia de uma rede em chip é a disposição dos nodos e canais sob a forma de um
grafo. Segundo (CARARA, 2004), as topologias podem ser classificadas em duas classes
principais: as redes diretas e as redes indiretas.
Nas topologias da classe de redes diretas cada nodo de chaveamento (roteador) possui
um nodo de processamento, núcleo associado, e esse par pode ser visto como um elemento
único dentro do sistema, tipicamente referenciado pela palavra nodo (DUATO, 97). As
topologias de redes diretas mais utilizadas são a grelha 2D, o toróide 2D, o cubo 3D,
hipercubo (cubo 4D), e a totalmente conectada, exemplificados na Figura 1. Conforme é
ilustrado nessa figura, um nodo é composto pelo processador e pelo roteador.
16
Figura 1. Topologias diretas: (a) Grelha 2D; (b) Torus 2D; (c) Cubo 3D; (d)Cubo 4D ou Hipercubo;
(e) Totalmente Conectada.
Fonte: REGO, 2006.
Nas topologias de redes indiretas, nem todos os roteadores estão conectados a um
núcleo de processamento, como acontece na topologia de rede direta, pois alguns são
utilizados como pontes entre os roteadores que estão conectados aos núcleos (DALLY,
TOWLES, 2004). A FIGURA 2 apresenta as duas topologias de redes indiretas que mais se
destacam: a crossbar e a rede multiestágio.
Figura 2. Topologias Indiretas: crossbar e rede multiestágio Ômega.
Fonte: REGO, 2006.
17
2.1.1.2. Roteamento
O algoritmo de roteamento define como um pacote elege um caminho dentro desse
grafo. Para que o pacote chegue ao seu destino, é preciso que ele siga na rede o caminho
indicado pelo algoritmo de roteamento. Podem ser classificados como determinísticos
(algoritmo XY), adaptativos (algoritmo baseado em tabelas) e parcialmente adaptativos
(West-First, North-Last, Negative-Firts) (DUATO, 1997).
Figura 3. Exemplos de algoritmos de roteamento e suas rotas para enviar uma
mensagem do nodo A para o nodo B.
Fonte: MATOS, 2010
De acordo com (DALLY e TOWLES, 2004), é interessante escolher de forma correta
o roteamento mais apropriado para a transmissão do pacote, pois o uso dos recursos da rede
será otimizado; além disso, reduz o caminho percorrido pelo pacote. Logo, a latência da rede
e o tempo necessário para o pacote chegar ao destino são diretamente influenciados pelo
algoritmo de roteamento escolhido.
O objetivo do roteamento é distribuir a circulação de pacotes entre os diversos
caminhos disponibilizados pela topologia de rede, evitando situações de deadlock, livelock e
starvation. Deadlock refere-se a uma interdependência cíclica dos recursos entre os nodos que
bloqueiam indefinidamente certos caminhos da infraestrutura de comunicação. Livelock
ocorre quando pacotes que estão sendo transmitidos pela infraestrutura de comunicação
jamais atingem o seu destino, ou seja, eles ficam circulando na rede. Starvation pode ser
18
definido como uma postergação indefinida de acesso aos recursos de comunicação, ou seja,
um canal de saída fica sempre ocupado (DUATO, 1997).
2.1.1.3. Controle de fluxo
O controle de fluxo determina a alocação de canais e buffers para os pacotes que
circulam na rede em chip. Para diminuir os requisitos de memorização e a latência da NoC é
interessante escolher o mecanismo de controle de fluxo mais apropriado.
A utilização de buffers nos canais de entrada para armazenar os pacotes é a forma
mais comum de controle de fluxo, assegurando que os pacotes não sejam rejeitados e
privando que eles sejam retransmitidos, reduzindo a disputa pelos roteadores ou trafego da
rede. Esta técnica ocasiona a otimização no uso dos recursos da rede.
Os tipos de controle de fluxo mais utilizados existentes na literatura são: handshake,
controle baseado em canais virtuais e controle baseado em créditos (ZEFERINO, 2003). No
mecanismo handshake, o controle define quando um pacote pode ser armazenado nos buffers,
sem verificar o espaço disponível do receptor. Um sinal de ack é enviado do receptor para o
emissor, caso tenha espaço disponível para armazenamento do pacote nos buffers do roteador
receptor. Mas, se não houver buffers disponíveis no roteador, ele envia um sinal nack para o
roteador que emitiu o pacote. O controle de fluxo baseado em canais virtuais realizar a
repartição do buffer de entrada dos roteadores em filas independentes, mas com tamanhos
menores, formando os canais virtuais. Tal mecanismo, tenta resolver os problemas de
deadlock das redes em chip. No controle baseado em créditos o transmissor recebe do
receptor a quantidade de espaço disponível no buffer de entrada, só assim, o transmissor sabe
a quantidade de créditos estão disponíveis para envio de pacotes.
2.1.1.4. Chaveamento
O chaveamento é responsável por determinar como e quando um canal de entrada é
conectado a um canal de saída escolhido pelo algoritmo de roteamento. Antes de explicar os
tipos de chaveamentos, é interessante esclarecer que as mensagens que circulam nas redes em
chip, são quebradas em pacotes, e que cada pacote é dividido em pedaços menores, chamados
de flits, do inglês flow control unit. Todo flit é constituído por um ou mais phits, onde cada
phit é do tamanho da largura do canal físico de dados. A organização da mensagem pode ser
melhor entendida pela FIGURA 4.
Nas redes em chip, os dois métodos de transferências de pacotes mais utilizados são:
chaveamento por circuito e chaveamento por pacotes. No chaveamento por circuito é preciso
estabelecer um caminho do roteador que emite o pacote até o roteador que recebe o pacote,
para só depois o pacote ser enviado pela rede. Nesta metodologia, os buffers só são utilizados
para controlar o cabeçalho que destina os recursos da rede.
19
Figura 4. Composição de uma mensagem: pacotes; flit; phits.
Fonte: MATOS, 2010.
O chaveamento por pacote é baseado na divisão das mensagens em pacotes, onde a
alocação de canais é feita de forma dinâmica, na medida em que o pacote for percorrendo até
o seu destino. Os principais métodos de chaveamento por pacotes são: store-and-forward,
virtual-cut-through e wormhole (RIJPKEMA, 2001). O mecanismo armazena e repassa
(store-and-foward) geralmente é usado quando as mensagens são frequentes e pequenas, pois
cada pacote designa o percurso preciso até o roteador receptor usando as informações de
roteamento contidas no seu cabeçalho.
No tipo de chaveamento transpasse virtual (virtual cut-through) o pacote será enviado
no momento em que o canal de comunicação pelo qual o mensagem será transportada ficar
acessível para receber o pacote, e assim, a latência da comunicação será reduzida. O tamanho
do buffer deve ser, no pior caso, dimensionado para suportar um pacote inteiro. Uma variação
do chaveamento virtual cut-through, é o chaveamento por pacote wormhole que tem como
característica principal diminuir o tamanho do buffer necessário para suportar pacotes
bloqueados na rede. Nas redes baseadas nesta técnica, os pacotes são divididos em flits e um
canal só é liberado depois que todos os flits que formam o pacote passarem pelo canal de
comunicação.
2.1.1.5. Arbitragem
O mecanismo de arbitragem é responsável por controlar as disputas por uma porta de
saída, ou seja, define qual canal de entrada pode usar um canal de saída específico. Tal
mecanismo resolve esses problemas para que não ocorram situações de starvation. A
arbitragem pode ser distribuída ou centralizada, mostrada na FIGURA 5.
Na abordagem centralizada, todas as portas de saída são controladas por um único
módulo roteador, que recebe os cabeçalhos dos pacotes, executa o roteamento e define o canal
de saída a ser usado por cada pacote. Na segunda abordagem, a distribuída, para cada porta do
roteador, o roteamento e a arbitragem são realizados de maneira independente. Ou seja, cada
porta de entrada e de saída, tem um módulo de roteamento e arbitragem, respectivamente. Um
algoritmo, como por exemplo, round robin, é utilizado para definir a prioridade de envio dos
20
buffers que concorrem pelo canal de saída .
Figura 5. Abordagens para implementação de árbitros: (a) centralizada; (b) distribuída.
Fonte: ZEFERINO, 2003.
2.1.1.6. Memorização
É o mecanismo de filas utilizado para armazenar os pacotes designados aos canais de
saída que já fizeram solicitações por outro pacote, e por causa disso, estão bloqueados na
rede. Existem diversas estratégias de memorização, da mais simples (buffer FIFO) às mais
complexas como SAFC (Statically Allocated Fully Connected), SAMQ (Statically Allocated
Multi-Queue) e DAMQ (Dinamically Allocated Multi-Queue). As alternativas de
memorização apresentadas aqui são encontradas em (TAMIR, 1992), onde é feita uma
comparação entre elas.
Figura 6. Estratégias de memorização utilizando rotador com quatro buffers: (a) SAFC; (b)
SAMQ; (c) DAMQ.
Fonte: ZEFERINO, 2003.
21
2.1.2 Vantagens e Desvantagens das NoCs
A cada dia, as redes em chip estão se tornando um dos mais promissores meios de
interconexões chaveadas dentro do chip. E tem como principais vantagens com relação a
barramentos: desempenho constante do relógio com o aumento de núcleos do sistema
(GERRIER; GREINER, 2000); aumento de reuso tanto dos núcleos como da plataforma de
comunicação; largura de banda escalável; canais de comunicação em forma de pipeline;
arbitragem distribuída. A circulação dos pacotes ou dados é de responsabilidade destas redes
de comunicação e, portanto, tem a capacidade de retratar um gargalo ou o forte diferencial de
desempenho entre as propostas de arquiteturas de processadores.
Essas redes possibilitam a estruturação e o gerenciamento dos fios em tecnologias
submicrônicas, ou seja, são utilizados fios mais curtos, ponto a ponto e com uma menor
capacitância parasita (CALAZANS, 2007) e seu compartilhamento possibilita sua utilização
de maneira mais eficiente. Outra vantagem, é que ela permite a reusabilidade dando à
possibilidade de se aproveitar a mesma estrutura de comunicação em aplicações distintas.
Porém, a utilização de NoCs apresenta algumas desvantagens (GERRIER; GREINER,
2000): em relação aos barramentos oferece um considerável consumo de área de silício,
possui maior complexidade de projeto e o elevado tempo para transmissão de pacotes causado
por contenções da rede, podendo aumentar a latência.
2.2. REDE IPNOSYS
A rede IPNoSys (FERNANDES, OLIVEIRA et al., 2008) é um exemplo de NoC, que
oferece um novo modelo arquitetural, onde o processamento das instruções que compõem as
aplicações é realizado durante o roteamento dos pacotes. Percebe-se que essa arquitetura, é
utilizada como sistema de processamento, além da capacidade de interconexão comum nas
redes em chip convencionais.
Para que tais contribuições funcionem, a rede IPNoSys tem características especificas
como: a inclusão de uma ULA em cada processador da rede chamados de Unidades de Acesso
a Memória (MAU – Memory Access Unit); os roteadores tornaram-se Unidades de
Processamento e Roteamento (RPU – Routing and Processing Unit); os dados e instruções
estão em formato de pacote.
22
Figura 7. Arquitetura IPNoSys
Fonte: ARAÚJO, 2012.
A rede IPNoSys é configurada com topologia Grelha 2-D de dimensão quadrada,
possui dois canais virtuais, roteamento do tipo XY, memorização na entrada, controle de
fluxo baseado em créditos e arbitragem distribuída. Tal rede combina o chaveamento VCT
com o wormhole. Suas aplicações precisam estar descritas em formato de pacotes, e durante o
trajeto entre a origem e o destino não é preciso usar os processadores comum nos nós da NoC,
já que as aplicações serão executadas de roteador em roteador.
Para tanto, foi criado um algoritmo chamado por spiral complement, possibilitando o
roteamento de todas as instruções existentes nos pacotes. A utilização desse algoritmo pode
ajudar a resolver grandes desafios do projeto de sistemas integrados em chip. As próximas
seções apresentam as estruturas dos elementos arquiteturais (MAU e RPU), algoritmo spiral
complement, e o formato do pacote.
2.2.1 Elementos Arquiteturais
2.2.1.1. MAU – Unidade de Acesso a Memória
Na rede IPNoSys, os pacotes são injetados pelas MAUs que estão diretamente ligadas
aos módulos de memória, localizadas nos quatro cantos da rede. Sua estrutura interna é
composta por uma unidade de controle, um gerenciador de memória e um gerenciador de
pacotes, como ilustrado na Figura 8. Independentemente das memórias estarem separadas, as
mesmas constituem um ambiente exclusivo de endereçamento (ARAUJO, 2012).
23
Figura 8. MAU na Arquitetura IPNoSys
FONTE: ARAÚJO, 2012.
As MAUs, além de injetar os pacotes na rede para iniciar a execução das aplicações,
são também, responsáveis pelo estabelecimento da comunicação e sincronização dos
resultados encontrados após a execução dos pacotes em cada RPU. A MAU é o único
elemento da arquitetura que tem acesso a memória, possibilitando a leitura e escrita de dados
que estão armazenados na mesma.
2.2.1.2. RPU – Unidade de Processamento e Roteamento
A unidade de roteamento e processamento (RPU) é cada nodo da rede IPNoSys, tem
como objetivos, o processamento e encaminhamento dos pacotes para as próximas RPUs. A
execução pela RPU, das instruções contidas no inicio do pacote, só é possível quando as
aplicações estiverem no formato de pacote.
Com isso, o pacote consegue percorrer a rede IPNoSys funcionando como instruções
em séries. As instruções e as operações só são executadas pela rede, no instante, em que
estiverem no cabeçalho do pacote. Em seguida, o resultado obtido da operação corrente é
capaz de ser armazenado no mesmo pacote, servindo de operando para instruções que forem
executadas no futuro. Por fim, a instrução que foi executada é descartada do pacote, e o
restante do pacote é roteado para a RPU seguinte, assim que o canal de transmissão estiver
disponível. (FERNANDES, OLIVEIRA et al., 2008).
24
A RPU possui uma estrutura composta por: uma ULA (Unidade Lógica e Aritmética),
uma SU (Unidade de Sincronismo), buffers nas entradas, um crossbar e árbitros nas saídas
Como ilustrado na Figura 9. A execução das instruções contidas nos pacotes é realizada pela
ULA. A Unidade de Sincronismo produz um pacote de controle, com a instrução
encaminhada pelo árbitro. Em seguida, o pacote de controle gerado pela SU, é encaminhado
para a MAU que executa a instrução por meio do seu canal virtual.
Os buffers estão localizados nas 5 portas de entrada da RPU, e fazem memorização do
tipo FIFO. O crrossbar tem a função de chavear o pacote da porta de entrada para a porta de
saída do RPU. O domínio das solicitações e entrega dos dados dos canais de saída para MAC
ou para ULA, é feita pelos árbitros de saída.
Figura 9. RPU na Arquitetura IPNoSys
Fonte: ARAÚJO, 2012.
2.2.1.3. Algoritmo Spiral Complement
O algoritmo de roteamento Spiral Complement foi desenvolvido para a rede IPNoSys,
baseado no padrão de tráfego complement e no roteamento XY. Admite a execução de
aplicações de qualquer tamanho, pois o algoritmo foi criado para rotear pacotes enquanto tiver
instruções para serem executadas.
Segundo (FERNANDES, OLIVEIRA et al., 2008), é possível injetar na rede pacotes
por meio dos quatro cantos da rede. A Figura 10, apresenta os caminhos feitos por pacotes
injetados simultaneamente pelas quatro MAUs, o spiral complement, permite que um mesmo
pacote passe inúmeras vezes pelos mesmos canais, dependendo da dimensão da rede e do
comprimento do pacote.
25
Figura 10.Spiral Complement: (a) 1a. espiral; (b) 2a. espiral; (c) 3a. espiral (d) 4a. espiral.
FONTE: ARAUJO, 2008
Para descobrir o destino do pacote que foi injetado por uma das MAUs que estão
localizadas em um dos cantos na rede, é preciso saber a localização da sua origem para depois
fazer seu complemento, dessa forma, o destino inicial é encontrado. Se o pacote que estava
sendo roteado chegar ao destino, e ainda, existir instruções nele, um novo cálculo para
encontrar o próximo destino deve ser feito. O roteamento do pacote termina quando o número
de instruções contidas no pacote for igual à zero, ou seja, quando não tiver no pacote
instruções a serem executadas.
A utilização deste algoritmo proporciona um avanço do paralelismo, já que, permite o
roteamento e execução de até 4 pacotes no mesmo instante na rede, e suas instruções são
executadas de acordo com a disponibilidade dos operandos. Além disso, diminui o
agrupamento de dados no centro da rede, conseguindo difundir o tráfego dos pacotes por toda
rede IPNoSys.
2.2.1.4. Formato do Pacote
A rede IPNoSys utiliza um formato de pacote baseado no pacote desenvolvido para a
rede em chip da plataforma STORM (REGO, 2006). Algumas alterações foram
26
indispensáveis, devido a rede IPNoSys utilizar o algoritmo Spiral Complement e a
modificação do formato do pacote com as instruções da aplicação.
Cada pacote transportar instruções que serão executadas pelas RPUs por onde o pacote
passar. Internamente, o pacote apresenta os seguintes tipos de palavras: cabeçalho, instrução,
operandos e fim de pacote. A descrição completa dos campos de cada palavra pode ser
encontrada em (ARAUJO, 2008).
Figura 11. Formato do pacote da rede IPNoSys
Fonte: ARAÚJO, 2008
Em cada palavra, os 32 bits de largura são utilizados para armazenar informações
sobre as RPUs, os números dos pacotes, e sobre a aplicação (instruções, operando e
resultados), de acordo com seu tipo. Antes dos 32 bits de largura da palavra, são utilizados 4
bits de controle que especifica o tipo de palavra que estar sendo transportada.
A quantidade de instrução e de operandos contido nos pacotes, estar sujeito a
aplicação que pacote for representar. Apenas o cabeçalho e o terminador são obrigatórios em
todos os pacotes. Na rede IPNoSys, os tipos de pacotes são identificados pelos 2 últimos bits
da primeira palavra do seu cabeçalho, como: controle, regular, interrompido e caller,
representados respectivamente pelos bits 00b, 01b, 10b, 11b (ARAUJO, 2008)..
27
A arquitetura da IPNoSys possui modelo de execução compatível com modelos de
computação orientados à dados (como data flow), uma vez que os dados trafegam junto com
as instruções em pacotes dedicados à execução de operações. Seus roteadores são compostos
por uma unidade lógica e aritmética e uma unidade de sincronização, enquanto que os núcleos
de processamento foram substituídos por núcleos de acesso à memória. Utiliza-se um modelo
de computação baseado em passagem de pacotes entre os roteadores, caracterizando um
pipeline e explorando o paralelismo das transmissões. Portanto, a alternativa apresentada pela
IPNoSys para aumentar o desempenho, ocorre através do processamento de instruções da
aplicação nos roteadores da NoC.
De acordo com os resultados, a rede IPNoSys permite um aumento de desempenho na
execução das aplicações, pois o processamento das instruções ocorre durante o deslocamento
do pacote da origem até o destino. Ressalta-se ainda, que ao executar aplicações que tratam
ocorrências de deadlock, é possível verificar a aceleração na execução das aplicações, pois
seu algoritmo de roteamento previne a interrupção da transmissão e do processamento dos
pacotes pela rede.
Na rede IPNoSys, é possível implementar a adição de ponto flutuante baseada no
padrão IEEE 754, permitindo observar e avaliar casos onde serão utilizados rotinas conjunto
de pacotes (software) para execução de uma instrução que não existe implementação
especifica no hardware. Com isso, todas as vezes que existir instruções de ponto flutuante nas
aplicações, o sistema suportará esse tipo de instrução por meio da execução das rotinas de
tratamento, e não será necessário inserir na rede IPNoSys, uma unidade aritmética de ponto
flutuante em hardware.
Além disso, Araujo (ARAUJO, 2008) implementou a Transformada Discreta do
Cosseno (DCT – Discrete Cosine Transform) no sistema IPNoSys para verificar o
comportamento da arquitetura, e em seguida, realizou comparações de desempenho com a
plataforma STORM. Desse experimento, pode-se observar que o sistema IPNoSys oferece um
aumento de eficiência em tempo de execução nas diversas condições de paralelismo
intrínseco por causa dos múltiplos canais ponto-a-ponto disponíveis na NoC.
A linguagem SystemC (OSCI, 2005) foi utilizada para o desenvolvimento da
ferramenta de simulação e validação funcional do sistema IPNoSys. Para tolerar uma maior
acuracidade em relação ao modelo real, a ferramenta foi desenvolvida em nível de precisão de
clock. A dependência de dados foi representada por meio do grafo de fluxo de dados utilizado
como linguagem intermediária para a descrição de pacotes.
Portanto, é possível observar que a rede IPNoSys apresenta relevantes contribuições,
como: alto desempenho e vazão de pacotes proporcionados pela adaptação da topologia e
redução da influencia da rede de comunicação, conseguindo diminuir os problemas
28
relacionados às redes em chip.
A proposta deste trabalho consiste em analisar o comportamento de execução de
aplicações orientadas a dados, na arquitetura da rede IPNoSys, indicando modificações na sua
estrutura e organização, visando, torná-la compatível com restrições de projeto como
desempenho.
Inicialmente, foi feito um estudo de arquiteturas de NoCs existentes e se observou que
a rede IPNoSys apresenta diversas características, como: a execução de aplicações em
paralelo por meio da injeção concorrente de pacotes, reduzindo o tempo de execução, em
comparação com outras plataformas e tratamento de deadlocks.
Considerando-se as características anteriormente comentadas, essa arquitetura pode
ser favorável para a execução de aplicações orientadas a dados.
Partindo da rede IPNoSys (FERNANDES, OLIVEIRA et al., 2008) e aplicações
orientadas a dados, será interessante analisar a execução desses algoritmos na rede IPNoSys,
investigando as vantagens e desvantagens dessa rede.
Como a rede IPNoSys apresenta um novo paradigma de programabilidade, é
necessário desenvolver as aplicações em um conjunto de pacotes com operações e dados.
Nessa metodologia, a linguagem intermediaria empregada é o grafo de fluxo de dados da
aplicação, onde é explicitado o paralelismo e a dependência de dados da aplicação. Em
seguida, é utilizada a linguagem de descrição de pacotes, que a partir do grafo, gera os pacotes
propriamente ditos.
Pode-se perceber que por meio de estudos e experimentos realizados com a rede
IPNoSys, a mesma tem-se mostrado um importante e eficiente sistema integrado baseado em
NoCs. Resultados têm mostrado a aceleração no tempo de execução das aplicações, devido à
possibilidade de se explorar paralelismo entre as operações (ARAUJO, 2008).
Com base no que foi mencionado anteriormente, entende-se a necessidade de
utilização e verificação da rede IPNoSys, visto que a rede possui características particulares,
como a integração de elementos de processamento nos roteadores da rede, bem como a sua
alta capacidade de paralelismo. Com isso, as tarefas desse trabalho visam a busca por
resultados significativos na execução de aplicações orientadas a dados.
29
3. ESTADO DA ARTE
Neste capítulo, serão estudados os conceitos relacionados ao estado da arte do trabalho
proposto, mais especificamente o modelo de computação baseado em fluxo de dados, as
arquiteturas com suas varações, e as aplicações do tipo dataflow, que serão utilizadas no
trabalho.
3.1. MODELO DE COMPUTAÇÃO BASEADO EM FLUXO DE
DADOS
Um modelo de computação (MoC) é uma formulação que possibilita expressar a
dinâmica da computação dos dados de um sistema. Os modelos podem abranger os conceitos
de dependência, concorrência e o tempo parcial ou completo do sistema.
Em geral, entende-se MoC como o modelo para a representação do tempo e da
semântica de comunicação e sincronização entre as entidades comportamentais de um
sistema, tais como: processos, funções, operações lógicas e/ou aritméticas, estados e etc.
Somente assumindo certo modelo de computação é possível analisar os recursos
computacionais requeridos, como tempo de execução e espaço de armazenamento, ou discutir
as limitações dos algoritmos. Alguns exemplos de modelos de computação estabelecidos na
literatura técnica são: Máquina de Turing, Redes de Processos Kahn, Redes Petri e o Modelo
baseado em fluxo de dados.
Como o objetivo do trabalho é estudar os diferentes comportamentos do modelo data
flow, e apresentar uma proposta de uma arquitetura IPNoSys baseada em fluxo de dados,
abaixo serão apenas definidas e classificadas as principais variações que constituem o modelo
de computação baseado em fluxo de dados.
O modelo baseado em fluxo de dados foi apresentado em meados da década de 70 por
Dennis, e desde então, ele tem sido tema de intensa pesquisa. Esse interesse deve-se
principalmente, à facilidade com que o paralelismo existente nas aplicações pode ser
aproveitado pelo modelo (DENNIS, 1998). No inicio dos anos 80, houve um enorme interesse
pelo modelo em função do alto paralelismo apresentado, surgindo diversos projetos, como:
Manchester Data Flow Machine (MDFM) da Universidade de Manchester (GURD, 85), o
projeto Sigma-1 no Japão (SHIMADA, 86) (HIRAKI, 87), a MIT Tagged Token Architecture
(MTTDA) do MIT (ARVIND, 90). No final da década de 80, o interesse pelo modelo foi
reduzido, pois a viabilidade do modelo foi provada durante o desenvolvimento do projeto,
mas foram identificados vários problemas, comprometendo o desempenho das arquiteturas em
questão.
30
O interesse ao modelo baseado em fluxo de dados ressurgiu no início da década de 90,
pois foi percebido que os problemas anteriormente detectados, ou são passiveis de solução
com as novas tecnologias, ou são inerentes ao processamento paralelo. Vários projetos de
pesquisa surgiram, apresentando algumas modificações visando sanar os problemas
apresentados anteriormente como: a arquitetura EM-X/4 (YAMAGUCHI, 91) que surgiu do
projeto Sigma-1 e projeto Monsoon (CULLER, 91) que evoluiu da MTTDA.
O modelo baseado em fluxo de dados suporta a exploração de paralelismo de
granularidade bastante fina, no nível de instrução. Um programa deixa de ser representado por
uma sequencia de instruções com um controle central impondo a ordem da execução, como é
feito no modelo von Neumann. Nas arquiteturas baseada em fluxo de dados não existe o
conceito de memória como nas arquiteturas von Neumann. O conceito de memória em
arquitetura von Neumann torna esse modelo sequencial, pois a passagem dos dados entre as
instruções ocorre pelas atualizações em áreas de memória e um ponteiro de instruções é
responsável por estabelecer o fluxo de controle de uma instrução para outra. Devido a esse
fato, o modelo von Neumann também é chamado de modelo baseado em fluxo de dados de
controle ou control flow (TRELEAVEN et al., 1982).
Segundo (VEEN, 1986) no modelo baseado em fluxo de dados não existe o conceito
de armazenamento de dados em memória. Os dados são simplesmente produzidos por uma
instrução e consumido por outra. A chegada dos dados serve como sinal para habilitar a
execução de uma instrução, excluindo a necessidade de controle de fluxo. Cada instrução é
considerada como um processo separado e quando a instrução produz dados como resultado,
são apresentados ponteiros apontando para todos os seus receptores. Visto que uma instrução
em um programa baseado em fluxo de dados somente contem referencias para outras
instruções, este programa pode ser visto como um grafo.
O modo de execução do modelo baseado em fluxo de dados comporta-se como um
grafo dirigido a dados (data-driven). As operações são atendidas como habilitadas para a
execução com a chegada de todos os dados de entrada. Este tipo de construção exibe todo
paralelismo implícito do programa. Nessa notação de grafo, cada nó representa uma operação
(instrução) e os arcos que interligam esses nós representam a dependência entre as operações.
Nas arquiteturas baseadas em fluxo de dados, as instruções são conhecidas como nós e
os dados como tokens. Um nó emissor é conectado a um nó receptor por um arco e o local no
qual o arco entra no nó é conhecido como porta de entrada. A execução de uma instrução é
chamada de disparo do nó, podendo ocorrer, apenas se o nó estiver habilitado, utilizando uma
regra de habilitação. O termino de execução de uma operação libera valores ou decisões para
os nós do grafo, cuja execução depende deles. A FIGURA 12 apresenta um exemplo de um
programa na linguagem a fluxo de dados.
31
Figura 12. Programa básico na linguagem a fluxo de dados
A FIGURA 12 esboça um grafo a fluxo de dados, composto por quatro nós. Quando
há tokens nas entradas dos nós eles podem ser processados e geram um token de saída. Os nós
habilitados podem ser disparos em tempos não especificados, em qualquer ordem ou
concorrência. O disparo envolve a retirada dos tokens de entrada e a computação do resultado.
3.1.1 Fluxo de Dados Síncrono
É o modelo de computação onde se determina uma ordem de ativação para o
processamento dos dados, garantindo uma sequencia pré-determinada de operações. O
controle de dados é completamente previsível em tempo de compilação.
Esse modelo faz uso de bufferização estática, onde cada nodo da aplicação pode
iniciar o seu processamento assim que um número suficiente de dados estiver disponível nas
suas entradas (chamado também de tokens). Sendo assim, é possível determinar estaticamente
os requisitos de buffer (profundidade das FIFOs) necessários para a aplicação.
Dessa forma, o modelo é orientado a dados síncronos. À medida que dados estejam
disponíveis as instruções podem ser executadas. Sendo assim, a execução não é feita
sequencialmente, mas em função da disponibilidade de dados. Logo, serve para à
manipulação de computações regulares que operam em fluxo sequencial e são capazes de
determinar a ordem de execução da aplicação.
É muito eficiente e não onera os recursos do sistema com dados extras, tendo em vista
que, antes de iniciar a execução em si, uma pré-analise das execuções da aplicação é
realizada. E para alcançar uma boa eficiencia, os valores dos dados consumidos e produzidos
de cada pacote devem ser constantes e declarados.
É um modelo de computação simples que assegura a computação de cada aplicação na
ordem correta. Um pacote consome e produz um número fixo de dados por execuçao. Essa
informação estática torna possível a avaliação da execução antes de executar de fato. É um
modelo adequado para processamento de sinais, onde o baixo overhead de execução é
imperativo.
32
3.1.2 Fluxo de Dados Assíncrono
Faz uso de buffers ilimitados, onde suas aplicações podem produzir e consumir
números variáveis de tokens. Como a produção e o consumo de tokens podem mudar no
tempo de execução, o modelo não pode ser programado estaticamente.
A comunicação (transmissão das mensagens) ocorre através de canais para comunicar
valores de dados entre blocos lógicos de computação.A execução dos dados não são
sincronizados por um sinal de clock global, portanto, todos as execuções procedem
concorrentemente.
3.1.3 Fluxo de Dados Dinâmico
A abordagem do modelo baseado em fluxo de dados dinâmico baseia-se na solução
tagged-token do modelo baseado em fluxo de dados tradicional. Onde os tokens transportam,
além do valor de interesse, um tag que os agrega a certo contexto de execução –
caracteristicamente loops, iterações ou chamadas de funções.
Nesse modelo, não há o controle estático e, assim sendo, uma tarefa pode mudar a
quantidade de informação produzida ou consumida a cada execução. É indicado para
aplicações que utilizam no seu fluxo de execução, laços, ramificações ou outras estruturas de
controle. Em geral, o modelo DDF (Dinamic Data Flow) é uma ótima escolha para se
gerenciar fluxo de execução que contenham o tipo de estrutura if-then-else, onde a interação
depende dos dados ou que exista recursividade.
O modelo baseado em fluxo de dados dinâmico admite que se tenham vários dados,
não apenas um, em cada arco. Na sua implementação é possível que novas instâncias dos
operadores sejam originadas para cada dado que vai chegando ao arco. Assim, é aceitável que
diversas instâncias de um operador sejam geradas.
Conclui-se que o modelo fluxo de dados dinâmico apresenta uma lógica bastante
complexa, com computação paralela e sua execução é bem distribuída.
3.2. APLICAÇÕES DATAFLOW
Descrever aplicações de acordo com um modelo de computação beneficia a aquisição
de resultados que atendam os objetivos desejados, já que suas informações podem ser
exatamente as suficientes e necessárias para uma dada aplicação. Como consequência da
especificidade dos modelos de computação, as seguintes vantagens são decorrentes: menor
área necessária para armazenar as informações que representam a aplicação; maior velocidade
e menor complexidade dos algoritmos que tratam os modelos.
33
O modelo de computação baseado em fluxo de dados sempre despertou interesse na
área de pesquisa devido a sua elegância em explorar e simular de forma simples o paralelismo
encontrado em tarefas de computação. No passado existiram várias experiências de se
implementar máquinas de propósito geral fundamentadas no modelo. No entanto, as
dificuldades em se alcançar uma máquina a fluxo de dados de propósito geral sempre se
revelaram grandes (LEE; HURSON, 1993).
Embora as pesquisas não tenham levado a uma arquitetura de propósito geral
largamente comercial, o modelo baseado em fluxo de dados é amplo o suficiente para ser
aplicado em diversas áreas, como linguagens de programação, no projeto de processadores,
processamento digital de sinais e, computação reconfigurável (NAJJAR; LEE; GAO, 1999)
(COMPTON; HAUCK, 2002).
Esse modelo foi projetado para a execução de aplicações de fluxo de dados, onde é
possível maximizar o fluxo de dados e minimizar a utilização das RPUs. Nesse modelo, é
possível atender o desempenho da aplicação e a racionalização da utilização dos recursos,
permitindo a execução da aplicação no menor tempo possível.
Então, a aplicação síncrona data flow genérica é a que faz soma sucessivas. Para
realização dos testes foram feitas as seguintes variações: diferentes tamanhos, em relação ao
número de instruções e de pacotes. Dessa forma, será possível avaliar o desempenho da rede
em chip IPNoSys, ao executar experimentos data flow, onde as aplicações utilizam o máximo
do datapath e o mínimo do controle.
Tais variações particulares da aplicação foram necessárias para que fosse possível
estimar o desempenho da rede IPNoSys. Essas variações serão apresentadas nos casos a
seguir, enquanto os resultados serão mostrados no CAPITULO 4.
Caso 1: Número de instruções por RPU
Neste caso, é possível variar a quantidade de instruções executadas por cada RPU,
antes de encaminhar o restante do pacote para a próxima RPU. Esse parâmetro é definido em
tempo de compilação das aplicações, possibilitando que cada pacote ou aplicação tenha sua
própria quantidade de instruções executadas por RPU. O número de instruções usadas em
cada simulação foi de 2, 4, 8,16, 32, 64, 128 e 254.
Caso 2: Número de instruções por pacote
Este caso, permite avaliar o desempenho da rede IPNoSys, ao variar o número de
instruções executadas por pacote. O número de instruções usados em cada pacote para a
simulação foi de 2, 4, 8,16, 32, 64, 128 e 254.
34
Caso 3: Número de pacotes
Este caso, permite avaliar o desempenho da rede IPNoSys, ao variar o número de
pacotes executados na rede IPNoSys. O número de pacotes usadas em cada simulação variou
de 1 até 4 pacotes.
3.3. ARQUITETURAS DATAFLOW
São estruturas globais onde se pode encontrar n elementos de processamento (PE),
interconectados por uma rede de interconexão. Em geral, o sistema suporta mecanismos de
interconexão pipeline. Assim, em todos os PE existem um mecanismo para disparo de
instruções, que dispara somente aquelas cujos dados (tokens) já estão disponíveis. (SILVA e
LOPES, 2010).
As instruções são armazenadas em memória de programa, e após serem executadas
geram novos taggeg tokens, que são transmitidos para outras operações. Percebe-se que essa
estrutura em pipeline permite múltiplos dados fluindo pelos arcos, e múltiplas instruções
sendo executadas em paralelo.
As arquiteturas dataflow podem ser classificadas como estáticas e dinâmicas. Na
arquitetura estática é permitido apenas um dado no grafo dataflow, ocasionando uma grande
dificuldade no gerenciamento dos arcos, já que não é permitido mais que um dado presente no
arco, levando a um overhead de comunicação, que mantém apenas um dado em cada arco.As
arquiteturas dinâmicas permitem mais que um dado por arco no grafo dataflow, onde cada
dado recebe um tag, e os dados passam a ser chamados de tagged token. Logo, os dados com
o mesmo tagged token, disparam as instruções em uma máquina dataflow dinâmica.
Na literatura, é possível encontrar diversas referencias de arquiteturas baseada em
fluxo de dados como WASMII - What A Steap Machine Is It (LING & AMANO, 1993).
Arquitetura que utiliza o conceito de hardware virtual, onde é possível ocorre a execução com
apenas uma ou várias unidades de processamento reconfigurável (RPF), sendo aceitável que
vários FPGAs executassem simultaneamente subgrafos, conseguindo assim o paralelismo
máximo de máquinas baseadas em fluxo de dados.
Em seguida, foram feitas evoluções sobre o WASMII. (TAKAYAMA et al., 2000),
desenvolveu um compilador de linguagem de alto nível para a máquina. Além disso, ele
também implementou um algoritmo de escalonamento e particionamento para a arquitetura,
prevenindo possíveis deadlock, obtendo melhorias de quase 40% no desempenho.
A arquitetura SEED (Sistema de Escalonamento e Execução Dataflow), consegue
executar e escalonar código com instruções utilizando o modelo baseado em fluxo de dados,
conseguindo aproveitar o máximo de paralelismo possível dos programas. Geralmente, as
arquiteturas dataflow exploram paralelismo de granularidade fino, mas a arquitetura SEED
explora o paralelismo de granularidade mais grossa com o intuito de diminuir o tráfego dos
35
blocos de dados na arquitetura, atenuando a complexidade estabelecida pelo hardware e o
excesso de ocupação da memória (MAGNA, 1997).
Em (SASSATELLI, TORRES et al., 2002), é proposta uma arquitetura que utiliza um
modelo de execução paralela, dinamicamente reconfigurável com granularidade grossa, que
tem por objetivo principal acelerar o processamento de aplicações orientadas a dados. A visão
geral do sistema é apresentada na Figura 13.
A arquitetura é constituída por 2 camadas e 1 núcleo, denominados como, camada
operativa, camada de configuração e núcleo RISC adaptável com um conjunto de instruções
dedicado como controlador de configurações. Na parte interna da camada operativa, tem o
Dnode, que é componente de granularidade grossa, utilizado para fazer o processamento das
instruções, pois é constituído por registradores e ULA. Na camada de configuração, possui
uma memória RAM (Random Access Memory), onde armazena todas as configurações dos
componentes da arquitetura. Como trabalho futuro, existe a proposta de desenvolver uma
ferramenta de compilação eficiente, que será a chave para o processamento de arquiteturas
reconfiguráveis.
Figura 13. Visão geral do sistema
Fonte: (SASSATELLI, TORRES et al., 2002
Foi proposta por (MADOŠ e BALÁŽ, 2011), uma arquitetura orientada à dados com
uma abordagem moderna, a tile computing. Onde, seus componentes de comunicação, são
utilizados para desenvolver arquiteturas com múltiplos chips. Além dos componentes de
comunicação, sua estrutura contem diversos elementos de processamento, cada PE com uma
unidade de controle e uma ULA, e duas redes: uma para o mapeamento do grafo dataflow, e a
outra, para a comunicação local.
36
A arquitetura (FERLIN, 2008), propõe uma arquitetura paralela reconfigurável
orientada a fluxo de dados. Sendo, formada por uma unidade de controle, tendo como
principal função controlar os Elementos Processadores (EPs) e diversos EPs que concretizam
a execução da operação. Além disso, faz o gerenciamento de caminho de dados que ocorrer
entre os EPs. Sua estrutura prevalecer-se dos benefícios alcançados quando é combinada a
computação reconfigurável com o processamento paralelo. Já que sua utilização possibilita a
aceleração da execução de programas, adequando uma opção de alto desempenho para
soluções que antes eram somente em software.
Portanto, já foi apresentado as redes em chips (NoCs), dentre as redes exibidas houve
um maior aprofundamento da rede IPNoSys que é o objetivo de estudo. Em seguida, foi
estudado sobre o modelo de computação e a arquitetura dataflow. No próximo capítulo, será
proposto uma arquitetura que une tudo que foi estudado antes. Ou seja, vincular aplicações
dataflow e seu modelo de execução na rede IPNoSys Dataflow, assemelhando-se a uma das
arquiteturas apresentadas anteriormente.
37
4. PROPOSTA DE MODELO DE EXECUÇÃO ORIENTADO A
DADOS PARA REDE IPNOSYS
Nesse capítulo será apresentado uma proposta de uma arquitetura para aumentar o
desempenho da rede IPNoSys, através da execução de instruções em paralelo. Sendo possível,
devido a rede possui dentro de cada roteador uma ULA, e pelo seu modelo de execução Spiral
Complement, que proporcionam um paralelismo em nível de instrução. Para validar essa
proposta serão executas aplicações SDF, já que são compatíveis com esse paralelismo em
nível de instrução.
No modelo de execução da rede IPNoSys como concebida originalmente, cada RPU
recebe o pacote e verifica se está com o cabeçalho; em caso afirmativo, executa a instrução,
caso contrário, apenas retransmite o pacote à próxima RPU.
Para permitir um paralelismo a nível de instrução são necessárias modificações nas
RPUs da rede. Essas modificações dizem respeito à maneira como o modelo de execução
orientado à dados será implementado, de modo que instruções possam executar em paralelo.
O modelo de execução proposto funciona em duas etapas: programação e execução.
Para cada uma das etapas será criado um novo tipo de pacote. Além da mudança no
formato do pacote, foram necessárias mudanças na arquitetura da rede, como visto nas
próximas seções.
4.1. FORMATO DOS PACOTES
Como visto, a seção 2.2.1.4 explica o formato geral do pacote original. Nesta seção,
será apresentado o que foi modificado desse original, para existir dois pacotes diferentes: um
pacote de programação e um pacote de execução.
O pacote original da rede IPNoSys, possui o código da instrução e operandos, e assim,
executa as operações sobre os operandos, e os resultados será armazenados para consultado
ou serem utilizados, caso seja necessário. O número instruções e de operandos varia, de
acordo, com aplicação que o pacote estiver representando, mas o cabeçalho e o terminador é
apenas um para todos os pacotes.
4.1.1 Formato do Pacote de Programação
O formato do pacote de programação possui uma sequencia de identificadores de
instruções. O pacote continuará armazenando o endereço da RPU de origem e de destino, e o
número de instruções contidas no pacote. Caso seja necessário, um novo endereço de destino
será calculado utilizando os bits do re-rotear. E também o tipo de pacote que está trafegando
pela rede.
38
Além disso, o identificador da aplicação e do pacote, o endereço da unidade de acesso
a memória onde ocorreu a iniciação do programa, a quantidade de instruções que cada RPU
executará, e o apontador permanecem no pacote de programação.
A primeira alteração necessária para a correta execução do pacote no modelo de
execução proposta, é a troca do bit de controle “o” para “e”, que representa execução, quando
estiver ativado. Também, foi preciso retirar a palavra que armazena os dados utilizados como
operando das instruções, já que essa etapa será feita a programação da rede IPNoSys com os
operadores sendo armazenados na memória de cada RPU.
No pacote de programação que contém as instruções da aplicação, é preciso que se
tenha necessariamente um terminador, indicando o fim do pacote, e consequentemente, a
pacote termina de programar as RPUs necessárias para executar o pacote com os dados da
aplicação corrente.
Figura 14. Formato do pacote modificado para programação.
39
4.1.2 Formato do Pacote de Execução
O pacote de execução não precisará armazenar o número de instruções contidas no
pacote, que era um dado necessário para o pacote original. Da primeira palavra do pacote
original, só será preciso armazenar o endereço da RPU de origem e de destino, um campo
com o re-rotear e outro com tipo de pacote corrente.
Na segunda e na terceira palavra do pacote de execução, todos os campos permanecem
iguais ao do pacote original. A principal diferença, é que o formato do pacote de execução
possui uma sequencia de dados, sem a necessidade de armazenar as instruções.
Figura 15. Formato do pacote modificado para programação.
Então, a primeira alteração que precisa se feita é a mesma do pacote de programação,
onde ocorre a troca do bit de controle “o” para “e”, que representa execução, quando estiver
40
ativado. Também, foi preciso retirar a palavra onde o controle “i” de instrução está ativo, pois
nele os seguintes campos são armazenados: identificador da instrução, número de operandos e
resultados, já que essa etapa será feita a execução do pacote com os dados na aplicação.
No pacote de execução que contém os dados da aplicação, o terminador é opcional,
pois os dados do pacote podem existir infinitamente. Por exemplo, quando a rede IPNoSys
precisar executar aplicações de stream de áudio que esta sempre ligado, assim os dados do
pacote não terminam nunca. Simplesmente, vão existir dados passando pelas instruções
contidas nas RPUS da IPNoSys incessantemente.
4.2. PROGRAMAÇÃO
Na etapa de programação, um novo pacote foi desenvolvido, contendo apenas a
sequencia de instruções que a aplicação dataflow vai executar, de modo que, o pacote trafega
pela rede IPNoSys, programando cada RPU. Quando o pacote de instruções chegar nas RPUs,
estas não o executam, apenas armazenam com o tipo de instrução que estiver no cabeçalho do
pacote. Com isso, as RPUs ficam programadas para executar os dados que chegarem ao
pacote de dados.
Supondo que uma aplicação tenha 10 instruções, e para executar essa aplicação será
necessário injetar o pacote com as operações dessas instruções. Na Figura 16(2º) o pacote é
injetado inicialmente no canto superior esquerdo, sua primeira instrução vai programar a 1ª
RPU, identificou que é uma operação de subtração, Figura16(3º). Então, programa na
memória da RPU, que ela deve executar operações de subtração. Depois, descarta a instrução
do pacote, e encaminha o pacote para a próxima instrução.
41
Figura 16. Etapa de Programação da rede IPNoSys Dataflow - Parte1
A Figura16(4º), mostra que a 2ª RPU vai executar operações de soma, pois a instrução
do pacote de programação tinha o operando para realizar adição. Em seguida, retira a
instrução corrente, e encaminha o pacote para configurar a próxima RPU. Todo o processo de
programação da rede IPNoSys para conseguir executar a aplicação com 10 instruções é
apresentado nas Figuras 16, 17 e 18.
42
Figura 17. Etapa de Programação da rede IPNoSys Dataflow - Parte2
43
Figura 18. Etapa de Programação da rede IPNoSys Dataflow - Parte3
Quando o pacote de programação chegar ao fim, Figura 18(12º), as 10 RPUs estarão
programadas, aguardando o pacote com os dados. Essa etapa será explicada na seção de
execução.
4.3. EXECUÇÃO
Na etapa de execução, um novo pacote foi desenvolvido, contendo apenas os dados
das instruções que a rede IPNoSys dataflow vai executar, já que as RPUs necessárias para
execução da aplicação já estão programadas, aguardando pelos dados. A Figura 19(1º)
apresenta o pacote de execução sendo injetado, em seguida, Figura 19(2º), os dados são
executados na 1ªRPU, ou seja, os dados são os operandos necessários para ocorre a operação
de subtração que aquela RPU esta programada para executar.
44
Figura 19. Etapa de Execução da rede IPNoSys Dataflow – Parte1
Todo o processo de execução de uma aplicação dataflow com 10 instruções na rede
IPNoSys DataFlow é apresentado nas Figuras 19, 20 e 21. Percebe-se pelas figuras, que cada
dado contido no pacote de execução passa pela RPU sendo executado, utilizando as instruções
contidas na memória de cada RPU, e cada dado é executado 10 vezes, como se fosse um laço
que executa 10 instruções 10 vezes.
45
Figura 20. Etapa de Execução da rede IPNoSys Dataflow – Parte2
Figura 21. Etapa de Execução da rede IPNoSys Dataflow – Parte3
46
5. RESULTADOS
Uma solução para melhorar o desempenho dos processadores é a construção de
software e hardware que permitam a exploração da execução de tarefas em paralelo,
aumentando o desempenho geral do sistema. Segundo (DUNCAN, 1990), entre as diversas
maneiras de se implementar o paralelismo em computadores, as arquiteturas baseadas em
fluxo de dados parecem ser uma excelente alternativa para ajudar as arquiteturas usuais em
aplicações especificas com processamento intenso de dados.
A IPNoSys proporciona um paralelismo em nível de instrução, pois ela possui vários
roteadores com poder de processamento: dentro de cada processador há uma ULA. As
aplicações ideais para aproveitar esse paralelismo em nível de instrução, são as aplicações
SDF.
Para avaliar a rede IPNoSys foi preciso comparar como seria a execução de uma
aplicação SDF com paralelismo em nível de pacotes e como seria sua execução em nível de
instruções. Na execução em nível de instrução, as n instruções de uma aplicação executam n
vezes, como se estivessem dentro de um laço.
5.1. AVALIAÇÃO
As simulações deste trabalho foram realizadas na rede, utilizando o simulador
SystemC da rede IPNoSys. Todos os códigos das aplicações foram descritas na Linguagem de
Descrição de Pacotes e submetidos ao assembler da IPNoSys. O assembler gerou o código
objeto da aplicação, que foi utilizado como entrada do simulador gerando os resultados.
O primeiro experimento apresenta a quantidade de ciclos necessários para executar
instruções, variando a quantidade de instruções presente em cada pacote e a quantidade de
instruções executadas em cada RPU. Percebe-se nos gráficos das FIGURAS 22 e 23, com
relação ao tempo de execução, que o desempenho da aplicação se mantém praticamente
constante quando o número de instruções por pacote cresce até 8, independente do número de
instruções executadas em cada RPU, e do número de pacotes presente na rede. A partir do
número de instruções por pacote com valor 16, o tempo de execução vai crescendo cada vez
que o tamanho do pacote é aumentado.
Com relação aos resultados apresentados a seguir, o desempenho da rede não aumenta
quando o paralelismo é incrementado. Com o aumento dos pacotes, a quantidade de ciclos
gastos continua constante para a mesma configuração. A performance da rede é estável,
apresentando crescimento de ciclos linear em função da variação de instruções.
47
Figura 22. Tempo de Execução da Aplicação SDF: (a) 1 Pacote; (b) 2 Pacotes
48
Figura 23. Tempo de Execução da Aplicação SDF: (a) 3 Pacotes; (b) 4 Pacotes
49
O impacto da potência dissipada pode ser verificado nos gráficos das Figuras 24 e 25,
variando o número de pacotes que são injetados na rede IPNoSys, a quantidade de instruções
executadas em cada RPU e a quantidade de instruções presente nos pacotes. Nas execuções
para as versões até 16 instruções por pacotes, a potência é sempre menor que 1, independente
do número de pacotes percorrendo a rede e da quantidade de instruções executadas em cada
RPU. Logo, quando se tem a mesma configuração, a potência dissipada em todos os testes
apresenta crescimento linear.
Figura 24. Potência da Rede IPNoSys: (a) 1 Pacote; (b) 2 Pacotes.
50
Figura 25. Potência da Rede IPNoSys: (a) 3 Pacotes; (b) 4 Pacotes.
51
Observa-se que a estimação de potência encontrada nos experimentos acima de 32
instruções tem um aumento proporcionalmente muito mais significativo que aquelas
dissipadas, pelos experimentos com menos de 32 instruções por pacotes.
Percebe-se, também que a potência é praticamente a mesma entre as implementações
sequenciais e entre as paralelas, pois a quantidade de total de potência é determinada pela
potência dissipada nas RPUs, e não apenas pela transmissão do pacote pela rede. E com o
aumento de pacotes, a quantidade de energia gasta não cresce linearmente em função do
número de instruções, em razão do crescimento linear apresentado pelos resultados.
Os resultados serviram para comprovar que a execução localizada aumenta o
desempenho, pois ocorre uma menor comunicação, pois tal procedimento permite que as
próximas instruções continuem sendo executadas na mesmo RPU, enquanto não é permitido
transmitir o pacote. Quando ocorre a execução localizada, a IPNoSys tem a execução dos
pacotes em nível de instrução. Tanto que foi analisado, que ao aumentar o número de
instruções por RPU, ocorre ganho de desempenho, pois existe uma menor quantidade de
comunicação entre os componentes da rede IPNoSys.
Como foi observado que a execução da IPNoSys é sequencial queremos aproveitar o
potencial de paralelismo na rede, para fazer o paralelismo à nível de instrução. Não só a nível
de pacotes como é na original. E para aproveitar o paralelismo da rede IPNoSys e o
paralelismo a nível de execução é interessante que a aplicação seja a SDF. Para comprovar o
ganho de desempenho das aplicações SDF, executadas como paralelismo à nível de instrução,
será feita uma analise, de maneira analítica como equações baseadas na tese de Zeferino
(ZEFERINO, 2003).
5.2 RESULTADOS ANALÍTICOS
Nesta sessão são apresentados modelos analíticos baseados em (ZEFERINO, 2003),
para a estimativa de desempenho de arquiteturas de comunicação para a rede IPNoSys. As
equações foram desenvolvidas para calcular de maneira analítica, latência em redes em chip,
que são quantos ciclos leva para executar instruções dos pacotes.
Tomando como base as equações de (ZEFERINO, 2003), foi possível modificá-la para
medir latência na rede IPNoSys. Ou seja, as equações foram adaptadas para IPNoSys original
com paralelismo à nível de pacotes e a IPNoSys SDF com paralelismo à nível de instruções,
onde elas serão demonstradas e comparadas.
Para obter as equações que propiciam o modelo de latência é preciso avaliar o tempo
de transferência do pacote e o de arbitragem (Ta). A equação da latência, ao transmitir com
um pacote com f flits no barramento é expressa da seguinte maneira:
Tpct,bus = Ta + (Tbus X f)
(7.1)
Considerando que o barramento ajusta um clock para transmitir cada flit de um pacote
52
da IPNoSys, onde sua largura é igual a largura do seu canal de comunicação (Wdata). DUA, 97
apresenta um modelo para a estimativa da latência em NoCs baseadas no chaveamento
wormhole, que foi utilizado para obter um modelo de latência com carga zero para as redes de
interconexão. Onde, a latência alcançada ao transmitir um pacote com f flits entre a fonte e o
destino separados por d enlaces do tipo RPU-RPU com canal de dados igual a Wdata em (7.2).
tpct,wormhole = (tr + ts + tw) x d + max(ts,tw) x [M/Wdata]
(7.2)
Considerando que a primeira expressão é composta pela soma dos clocks de três
tempos (tr, ts e tw) vezes d, com ela é possível calcular a latência para transferir o cabeçalho
do pacote. Onde o primeiro tempo, tr, representa o tempo que o roteador demora para realizar
o escalonamento do pacote. O atraso para transmissão dos pacotes, ocasionado pelos canais
existentes nos roteadores, é dado pelo tempo, ts. O último tempo, tw, associa os atrasos para
transmissão dos pacotes pelos canais de enlaces.
Observa-se em (7.2), uma expressão max(ts,tw) que indica o máximo entre os atrasos
de propagação dos pacotes. O último termo, [M/Wdata], onde M é o tamanho do pacote, que
indica o número de flits do pacote e, W é a largura do canal de comunicação, que é a mesma
quantidade bits que cada flit apresenta.
De acordo, com o algoritmo spiral complement é aceitável alcançar o número de
enlaces, d, desde a fonte até o destino. Então, é necessário adaptar a equação (7.2) para
estimar em alto nível o desempenho em comunicação da rede IPNoSys.
A equação (7.2), será adaptada para a IPNoSys original. De posse da equação adaptada
para IPNoSys original, ela será adaptada para possibilitar a captura do paralelismo à nível de
instrução da IPNoSys SDF, onde será possível obter além do tempo gasto para transmitir o
pacote, o tempo gasto para executar cada instrução contida nos pacotes.
A equação encontrada foi derivada de uma equação que calcula o tempo para
transmitir a mensagem entre fonte e destino, na rede. Como a rede IPNoSys já é também
processamento, no instante em que for adaptada uma equação, o resultado da equação, vai
indicar o tempo necessário para transmissão do pacote e, além disso, indica o tempo da
execução da aplicação, pois ao transmitir a mensagem a aplicação também está sendo
executada.
Na IPNoSys original, o número de enlaces d, é a distancia da origem até o destino que
pode ser encontrado em função do tamanho da rede, do tamanho do pacote e do roteamento
spiral complement, quando ocorre o auto bloqueio e inicio da execução localizada. Com esses
dados, será possível saber em quantas RPUs o pacote vai passar e qual RPU o pacote vai
terminar. Enquanto que o destino na IPNoSys com paralelismo à nível de instrução, é onde
inicia a execução localizada que vai variar de acordo com o tamanho da rede. Nessa forma,
também será encontrado o paralelismo máximo em função do tamanho da rede, pois quando
ocorre o bloqueio a execução fica localizada e não vai existir mais roteadores no caminho, ou
53
seja, não vai existir mais transmissão do pacote entras RPUs. O limite de paralelismo máximo
é alcançado quando não houver mais transmissão dos pacotes pelas RPUs e sua execução
começar a ser localizada.
No flit da IPNoSys tem código de operação e dado, assumindo que o tamanho do flit é
a quantidade de bits do código das operação e dado, que é o tamanho total que é a largura do
canal. Cada flit, que corresponde uma instrução e seus operandos, leva um ciclo para executar.
As duas IPNoSys executam instruções da mesma maneira e o tempo que cada uma leva para
executar cada instrução é o mesmo, a diferença é como o pacote flui pela rede e, apresenta ou
não paralelismo à nível de instrução, pois em vez de ter uma instrução executando em
sequencia, são executados as instruções em paralelo.
Considerando, a mesma configuração da rede IPNoSys que utiliza dimensões 4x4,
devido ao algoritmo de roteamento spiral complement. Para encontrar o número de enlaces,
d, foi determinado que r é o tamanho da rede (ou seja, r = 4), o refinamento na rede inteira
será verificada na equação (7.3). Observa-se que o maior número possível de RPUs que uma
rede 4x4 permite pode ser encontrado pela equação abaixo.
despiral = (1 x r + (2 x (r -1)) + (4 x (r - 2)) + (4 x (r - 3)))
(7.3)
A Figura 26 ilustra como foi feita a equação que verifica a quantidade máxima de
RPUs que o pacote percorre para completar todo o espiral da rede com topologia 4x4.
A equação (7.3) foi adaptada para obter a equação (7.4), onde é calculado o número
mínimo de RPUs que um pacote pode percorrer para que já inicie a execução localizada, onde
ocorre o bloqueio da rede por ele mesmo. Observa-se na FIGURA 27 que o d, em situações
em que ocorre bloqueio, é igual a quantidade de RPUs percorridos até ele se bloquear.
dbloqueio = (1 x r + (2 x (r -1)) + (3 x (r -2)))
(7.4)
Em situações onde a quantidade de flits do pacote for menor que dbloqueio, o valor de d
vai ser a quantidade de flits do pacote, ou seja, podendo ser encontrado por [M/Wdata], onde
M é o tamanho do pacote e, W é a largura do canal de comunicação, que a mesma quantidade
bits que cada flit apresenta.
Como se quer comparar o paralelismo original da IPNoSys, que é a nível de pacotes
com o paralelismo à nível de instrução, a utilização de apenas um pacote já é o suficiente para
analisar o seu auto bloqueio.
A equação utilizada para encontrar o tempo de execução do pacote na IPNoSys original
(7.5) e na IPNoSys Data Flow (7.6) são as seguintes:
t = [((tr + ts + tw) * D + (max(ts,tw)))] * ((M/W) -1)
t = D + (D -1)
(7.5)
(7.6)
54
Figura 26. Quantidade de RPUs percorrido no Spiral Complement
Os resultados que serão apresentados a seguir demonstram o ganho de desempenho da
IPNoSys Data Flow devido ao paralelismo à nível de instrução obtido, permitindo que uma
instrução possa ser executada várias vezes, apenas seguindo o caminho de execução. Ao
contrário, da IPNoSys original, onde uma instrução só consegue ser executada várias vezes, se
ela for várias vezes reinjetada.
55
Figura 27. Roteamento com bloqueio da rede
A FIGURA 28 mostra o gráfico dos resultados analíticos de uma aplicação SDF,
executando na IPNoSys original e a mesma aplicação, executando na IPNoSys com
paralelismo à nível de instrução. No eixo vertical à esquerda, é mostrado o número de ciclos
para a entrega dos pacotes e, o eixo horizontal apresenta o número de instruções contida em
cada pacote.
56
Figura 28. Desempenho estimado para variações da Rede IPNoSys 4x4
Nota-se, que na IPNoSys Data Flow é consumido menos ciclos para a execução de
todas as instruções, independente da quantidade de instruções contidas no pacote. Para
obtenção desse gráfico, os parâmetros utilizados foram: tr, ts e tw = 1, Wdata=32 bits e M = 2,
4, 8, 16, 32, 64, 128 e 254 instruções por pacotes.
No gráfico da figura 28, é possível verificar que foram gastos mais ciclos na IPNoSys
original, do que na IPNoSys dataflow para executar a mesma quantidade de instruções, isso
ocorre porque o modelo de execução da IPNoSys dataflow utiliza o paralelismo a nível de
instruções, onde as instruções são executadas em paralelo, como se fosse um pipeline.
Enquanto, as instruções na IPNoSys original apresenta um modelo de execução, onde as
instruções são executadas de maneira sequencial, provocando um gasto enorme de tempo para
executar a mesma quantidade de instruções.
Considerando, a configuração da rede IPNoSys que utiliza dimensões 6x6. Para
encontrar o número de enlaces, d, foi determinado que r é o tamanho da rede (ou seja, r = 6), o
refinamento na rede inteira será verificada na equação (7.7). Observa-se que o maior número
possível de RPUs que uma rede 6x6 permite pode ser encontrado pela equação abaixo.
despiral = (1 x r + (2 x (r - 1)) + (4 x (r - 2)) + (4 x (r - 3)) + (4 x (r - 4 )) + (4 x (r - 5))) (7.7)
Para a rede em chip com topologia 6x6, o d para situações em que ocorre bloqueio é
igual a quantidade de RPUs percorridos até ele se bloquear. A mesma equação apresentada
em (7.4) é utilizada, a diferença que o valor de r, não é mais 4, e sim, 6. Os resultados
57
analíticos da comparação das estimativas de latência para as redes IPNoSys Original e Data
Flow são mostrados na FIGURA 29.
Figura 29. Desempenho estimado para variações da Rede IPNoSys 6x6
Segundo as equações 7.5 e 7.6 que foram mostradas anteriormente, foi possível
descobrir o tempo gasto para um pacote ser executado na IPNoSys original (7.5) e na
IPNoSys Data Flow (7.6). Com isso, pode-se perceber na figura 27 uma comparação entre a
IPNoSys desse modelo de execução que foi proposto, e a IPNoSys original.
Como pode ser observado, ocorreu um ganho de desempenho para IPNoSys dataflow,
independente da quantidade de instruções presente no pacote inserido na rede para execução,
devido a paralelismo baseado em instruções presente na IPNoSys dataflow. Ou seja, se existir
64 instruções no pacote, elas serão executadas em sequencial na IPNoSys original, enquanto
que na IPNoSys dataflow elas será executadas em paralelo, proporcionando uma redução, de
aproximadamente, 10 mil ciclos, como verificado na gráfico da figura 29.
58
6. CONSIDERAÇÕES FINAIS
6.1. CONCLUSÕES
Devido ao surgimento dos processadores com múltiplos núcleos, esforços para tornar
viável o aumento das taxas de desempenho focam em arquiteturas que conseguem explorar o
paralelismo. Como consequência, diversas pesquisas foram feitas para solucionar problemas
derivados da inserção de vários núcleos no único chip. Segundo a literatura, foi preciso
estudar novas abordagens de arquitetura em oposição às soluções tradicionais de
interconexão.
As Networks on Chip tem se apresentado como a principal alternativa de comunicação
dos núcleos de processamento e outros periféricos nos processadores many core, pois
exploram desempenho em um contexto paralelo, com vários núcleos disponíveis. E um dos
principais motivos de queda de desempenho são as próprias redes de interconexão. À medida
que são intensamente usadas, elas causam contenções e atrasos de pacotes, tal latência
acarreta no aumento do tempo necessário para executar uma determinada aplicação. No
mesmo sentido, é preciso que a NoC apresente uma arquitetura e uma largura de banda que
privilegie a vazão de pacotes.
Durante o estudo das arquiteturas de comunicação, observou-se que a rede IPNoSys
apresenta um aumento de desempenho significativo em relações as outras NoCs, devido a
junção das funções de comunicação e processamento em um único sistema. Também foi
realizado um estudo a respeito do contexto do trabalho, com definições e classificações das
principais variações do MoC Data Flow.
Devido as suas propriedades particulares, a rede IPNoSys foi utilizada para executar
aplicações orientadas a dados. Essas aplicações foram escolhidas após um estudo dos
diferentes comportamentos dos modelos de computação a fluxo de dados. Disso, buscou-se
analisar a desempenho mediante a execução de aplicações puramente orientadas a dados.
Os experimentos possuem tamanhos diversificados em relação a quantidade de
instruções e de pacotes, para poder avaliar os fins da computação na rede IPNoSys. Além
dessas alterações, também foram realizados testes variando o número de instruções
executadas em cada RPU.
A modificação da arquitetura da rede IPNoSys foi proposta, através da utilização do
paralelismo à nível de instrução. A modificação foi possível devido à rede possuir vários
roteadores interligados e dentro de cada um deles tem uma ULA para execução das operações
entre os dados das instruções do pacote.
Os testes de simulação de desempenho e potência desenvolvidos neste trabalho
permitiram obtenção de resultados conclusivos a respeito da execução de aplicações orientada
à dados na rede IPNoSys. Foi possível observar com o aumento de pacotes, que a quantidade
de ciclos gastos continua constante para a mesma configuração. O desempenho na rede é
estável, apresentando crescimento de ciclos lineares em função da variação de instruções. A
potência total dissipada em todos os testes apresentou crescimento linear para a mesma
configuração. Logo, com o aumento de pacotes, a quantidade de energia gasta não cresce
59
linearmente em função do número de instruções, pois a execução localizada aumenta o
desempenho devido a uma menor comunicação. Ou seja, foi observado um ganho elevado de
desempenho, pois várias instruções executam em paralelo e quando maior a rede, mais
instruções executam em paralelo, até o limite que o pacote se auto bloqueia devido ao
algoritmo spiral complement.
Deve-se destacar que a comparação do paralelismo original da IPNoSys, que é a nível
de pacotes com o paralelismo à nível de instrução, foi feito por meio da execução de
aplicações com mesma configuração. Verificou-se que o desempenho da execução, nas redes
com dimensões, 4x4 e 6x6 é sempre maior na IPNoSys Data Flow, devido ao seu paralelismo,
que permite que uma instrução seja processada diversas vezes, apenas adotando o caminho de
execução.
6.2. TRABALHOS FUTUROS
Dentre os diversos trabalhos futuros estão: modificação do algoritmo de roteamento, já
que o algoritmo espiral complement, utilizado pela IPNoSys original, apresenta um limite de
paralelismo que é alcançado quando o pacote se alto bloqueia; Uso de canais virtuais na
transmissão de pacotes na IPNoSys SDF; Desenvolvimento de um simulador para testar as
aplicações com fluxo de dados síncrono; Mapear aplicações reais para a rede IPNoSys
original e para a SDF, analisando a viabilidade da rede ao executar as aplicações.
60
7. Referências
AGARWAL A., ISKANDER C. D., R. SHANKAR. Survey of Network on Chip (NoC)
Architectures & Contributions. Journal of Engineering Computing and Architecture,
Volume 3, Issue 1. 2009.
ARAÚJO, S. R. F. Estudo da Viabilidade do Desenvolvimento de Sistemas Integrados
Baseados em Redes em Chip sem Processadores: Sistema IPNoSys. Departamento de
Informática e Matemática Aplicada. vol. Mestre Natal: UFRN, 2008, p. 87.
ARVIND, K. P.; NIKHIL, R. S. Executing a Programo n the MIT Tagged-Token Data
flow Architecture. IEEE Transactions on Computers, 39(3): 300-318, 1990.
BENINI, L.; DE MICHELI, G. Networks on Chips: A New SOC Paradigm. Computer,
v.35, 2002. p.70-78.
BOLOTIN, E. et al. QNoC: QoS Architecture and Design Process for Network on Chip.
Journal of Systems Architecture, v.50, n.2, p. 1-24, 2004.
CARARA, E. A. Uma Exploração Arquitetural de Redes Intra-Chip com Topologia
Malha e Modo de Chaveamento Wormhole. 2004. 65 Trabalho de Conclusão II, Pontifícia
Universidade Católica do Rio Grande do Sul, Porto Alegre.
CALAZANS, N.; MORAES, F.; CARVALHO, E. Heuristics for Dynamic Task Mapping
in NoC-based Heterogeneous MPSoC, IEEE International Workshop on Rapid System
Prototyping, p. 43-50,2007.
COMPTON, K.; HAUCK, S. Reconfigurable Computing: a servey of systems and
sofware. ACM Comput. Surv., ACM, New York, NY, USA, v. 34, n. 2, p.171-210, 2002.
CULLER, D. E. et al. The Explicit Token Store, Journal of Parallel and Distributed
Computing, 1991.
DALLY, W.; TOWLES, B. Principles and Practices of Interconnection Networks. Morgan
Kaufmann Publishers Inc., 2004. ISBN 0122007514.
DENNIS, J. B. Retrospective: a preliminary architecture for a basic data flow processor. In:
25 years of internacional symposia on Computer architecture (selected papers), 1998.
Barcelona, Sapin. ACM. p.2-4.
DUATO, J. et al. Interconnection Networks: An Engineering Approach. IEEE Computer
Society Press, 1997. 515p.
DUNCAN, R. A survey of parallel computer architectures. ACM Computer, v. 23, n. 2, p.
365-396, 1990.
Ferlin, E. P. Arquitetura paralela reconfigurável baseada em fluxo de dados
implementada em FPGA, Tese de Doutorado, Curitiba, UTFPR, 2008
61
FERNANDES, S., et al., IPNoSys: uma nova arquitetura paralela baseada em redes em
chip, Simpósio em Sistemas Computacionais de Alto Desempenho (WSCAD), pp.53-60,
2008.
GERRIER, P.; GREINER A. A Generic Architecture for On-Chip Packet Switched
Interconnections. In DATE’2000. Internacional conference on Application of Concurrency
to System Design. p. 188-189.
HAMMOND, L.; NAYFEH, B. A.; OLUKOTUN, K. A Single-Chip Multiprocessor. IEEE
Computer, v.30, 1997. p.79-85.
HIRAKI, K. et. al. The Sigma-1 Data flow Supercomputer: A Challenge for New
Generation. Journal of Information Processing, Vol.10, No. 4, 1987.
LEE, B.; HURSON, A. R. Issues in Data flow computing. Advances in Computers, v. 37,
p. 285-333, 1993.
LING, X. P. & AMANO, H. Wasmii: a data drivem computer on a virtual hardware. IN
FPGAs for Custom Computinh Machines, 1993. Proceedings. IEEE Workshop on (PP. 3342).
MADOŠ, B.; BALÁŽ, A. Data flow graph mapping techniques of computer architecture
with data driven computation model. In: Applied Machine Intelligence and Informatics
(SAMI), 2011 IEEE 9th International Symposium on, 2011. 27-29 Jan. 2011. p.355-359.
MAGNA, P. Proposta e simulação de uma arquitetura a fluxo de dados d segunda
geração, Tese de Doutorado, USP, 1997.
MATOS, D. S. M. Interfaces Parametrizáveis para Aplicações Interconectadas por uma
Rede-em-Chip, Dissertação de Mestrado, PPGC, UFRGS, 2010.
NAJJAR, W. A.; LEE, E. A.; GAO, G. R. Advances in the Dataflow computational model.
Parallel Comput., Elsevier Science Publishers B. V., Amsterdam, The Netherlands, v. 25, n.
13-14, p. 1907-1929, 1999.
NICOPOULOS, C., PARK, D., KIM, J., VIJAYKRISHNAN, N., YOUSIF, S., DS R.
ViChaR: A Dynamic Virtual Channel Regulator for Network-on-Chip Routers. Int.
Symp. Microarchitecture – MICRO, p.333 – 346, 2006.
OSCI. SystemC, 2005. Disponível em: http://www.systemc.org. Acesso em: 07 abr. 2012
PATT, Y. N. et al. One Billion Transistors, One Uniprocessors, One Chips. IEEE
Computer, v.30, 1997. p.51-57.
REGO, R. S. D. L. S. Projeto e implementação de uma Plataforma MP-SoC usando
SystemC. 2006. 144 Dissertação de Mestrado (Mestrado). Departamento de Informática e
Matemática Aplicada, Universidade Federal do Rio Grande do Norte.
RIJPKEMA, E.; GOOSSENS, K.; WIELAGE, P. Router Architecture for Networks on
Silicon. In: Proceedings of Progress 2001, 2nd Workshop on Embedded Systems, 2001.
Veldhoven, the Netherlands.
62
SASSATELLI, G. et al. Highly scalable dynamically reconfigurable systolic ring-architecture
for DSP applications. In: Design, Automation and Test in Europe Conference and
Exhibition, 2002. Proceedings, 2002. 2002. p.553-558.
SHIMADA. T.; HIRAKI. K; NISHIDA. K.; SEKIGUSHI, S. Evaluation of a Prototype
Dataflo Processor of the Sigma-1 for Scientific Computations. Proceedings of the 13th
International Symposium on Computer Architecture, 226-234, 1986.
STENSGAARD, B.; SPARSO, J. ReNoC: A Network-on-Chip Architecture with
Reconfigurable Topology, Network-on-Chip – NoCs, p. 55 – 64, 2008.
TAKAYMA, A., SHIBATA, Y., IWAI, K., & AMANO, H. Dataflow partitioning and
scheduling algoritms for WASMII, a virtual hardware. In Field-Programmable Logic and
Applications: The Roadmap to Reconfigurable Computing, volume 1896 of Lecture Notes in
Computer Science, pp. 685- 694, 2000.
TAMIR, Y.; FRAZIER, G. L. Dynamically-Allocated Multi-Queue Buffers for VLSI
Communication Switches. IEEE Trans. On Computers, v. 41, n. 6, Jun. 1992. P. 725-737.
TRELEAVEN, P. C.; BROWNBRIDGE, D. R.; HOPKINS, R. P. Data Driven and Demand
Driven Computer Architecture. Computing Surveys, 93-143, 1982.
VEEN, A. H. Dataflow machine architecture. In:ACM Computing urveys, 1986, p. 365396.
YAMAGUCHI, Y. Synchronization Mechanisms of a Highly Parallel Data flow Machine
EM-4. IEICE Transaction, 1991.
ZEFERINO, C. Redes em chip: Arquiteturas e Modelos para Avaliação e Área e
Desempenho. Tese (Doutorado em Ciência da Computação) - Instituto de Informática,
UFRGS, Porto Alegre, 2003.
ZEFERINO, C. A.; SUSIN, A. A. SoCIN: A Parametric and Scalable Network-on-Chip.
In: Symposium on Integrated Circuits and Systems, São Paulo, 2003.
63
Download