IV Congresso Tecnológico InfoBrasil - 2011 1 Modelagem de redes intrachip tridimensionais por redes de Petri Ibiapina, W. R. 1, Silveira, J. A. N. 1, Pinheiro, A. C. 1, Castro, H. S. 1, Barroso, G. 2, Cortez, P. C. 1, Silveira, R. J. N. 1, Coelho, A1. 1 Departamento de Engenharia de Teleinformática, Universidade Federal do Ceará, Fortaleza, Brasil 2 Departamento de Física, Universidade Federal do Ceará Este artigo trata da modelagem de redes intrachip com múltiplos planos de roteamento através da representação em redes de Petri, visando à criação de um parâmetro o mais próximo possível da rede almejada. O foco está na análise do algoritmo de roteamento adotado da rede em questão, tomando como referência um modelo computacional ideal de mesmas especificações. O processo de modelagem e análise será comentado no desenvolvimento do artigo. Palavras Chave— Redes intrachip, roteamento, modelagem, redes de Petri I. INTRODUÇÃO – NOCS E no mercado atual uma necessidade de se utilizar circuitos eletrônicos de consumo, custo e tempo de projeto mínimos, integração e confiabilidade máximas. Em meio a essa demanda, surgiram circuitos integrados que condensam um sistema completo em um único chip, chamados de Systems-on-a-Chip, ou simplesmente SOCs [1]. E uma forma de diminuir o tempo de projeto é interligar e reutilizar circuitos lógicos existentes, vindo daí o uso das Networks-onChip, ou NOCs [2]. Núcleos de SOCs exigem um nível mínimo de velocidade, qualidade de serviço e garantia de funcionamento. Caso esse requisito não seja atendido, as conseqüências podem ser catastróficas. Em sistemas de tempo real, esse nível mínimo é bastante alto. Assim, tem-se o desafio de produzir uma rede abrangendo aspectos de aumento de confiabilidade e tolerância a falhas. As NOCs são um paradigma emergente para comunicações em sistemas VLSI grandes implementados em um único chip de silício. Nesses sistemas, módulos como cores de processador, memórias e blocos IP especializados realizam troca de informações usando uma rede como subsistema de “transporte público” para o tráfego dos dados. Uma NOC pode executar tarefas paralelas, o que leva à análise da interferência do tráfego na rede, a fim de utilizar os métodos mais adequados para transmissão dos dados na rede. Um estudo recente fala sobre o grande impacto no desempenho do microprocessador causado pela variabilidade das cargas de trabalho. Logo variabilidade é um recente problema nas várias atividades e aplicações. Entretanto, as possíveis aplicações futuras para NOCs ainda não são plenamente conhecidas. [3] XISTE II. INTRODUÇÃO – REDES DE PETRI Muitas vezes, pode ocorrer que seja inviável, ou mesmo impossível, elaborar uma NOC completa sem um estudo esquemático prévio. Assim, faz-se necessário o uso de um modelo de especificações idênticas, ou pelo menos similares, às da rede real pretendida. Uma representação matemática bastante útil para tal fim é a de redes de Petri. Utilizando lugares e transições interligadas por arcos direcionados, pode-se definir graficamente a estrutura da rede. Uma vantagem das redes de Petri é a possibilidade de se construir modelos mais próximos da realidade, pois a linguagem permite manipulação de variáveis de modo a introduzir, interpretar, contornar ou mesmo evitar a incidência de erros no sistema. Dessa forma, torna-se possível modelar de forma eficiente o sistema com vários detalhes importantes, de forma básica e com um esforço menor, além de usar essas técnicas para a modelagem de sistemas mais complexos [4], facilitando o entendimento da estrutura e do algoritmo de roteamento adotados na rede e o aperfeiçoamento dos resultados alcançados por simulação. Figura 1 – exemplo básico de rede de Petri. Dependendo da profundidade do problema em questão, em alguns casos a rede de Petri tradicional pode não ser suficiente para especificação e verificação mais precisas de um sistema. Na figura acima, por exemplo, tem-se uma rede simples com duas fichas no primeiro lugar. Em redes de Petri tradicionais essas fichas são indistinguíveis, algo muito improvável numa representação de um sistema complexo, no qual pode haver a necessidade de se representar fichas de tipos diferentes num mesmo lugar [5]. Assim, a união da versatilidade das redes de Petri à necessidade de definição e manipulação de tipos de dados resultou no advento das redes de Petri coloridas, ou CPNs. IV Congresso Tecnológico InfoBrasil - 2011 2 III. SOBRE O CPN TOOLS dito, que apresenta a idéia básica por trás do algoritmo de roteamento adotado para a NOC Thor, com desenhos esquemáticos do modelo projetados no CPN Tools. A ferramenta computacional utilizada foi o programa CPN Tools, que edita, simula e analisa redes de Petri. Ele apresenta checagem de sintaxe e geração de código simultâneas à construção gráfica da rede e um simulador rápido que manipula redes temporizadas e não-temporizadas com eficiência. [6] O CPN Tools foi criado por meio de um projeto de pesquisa chamado CPN2000, da Universiade de Aarhus, com patrocínio de empresas de nome mundial, como Nokia e Microsoft. [7] 1 1`0 counter INT n n+1 gather data if (f=high) then 1`(1,a,b,e,a,b,1,c,d,"dado") else empty rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) circuit routing high Data 1`(1,a,b,1,a,b,1,c,d,"dado") start Data 1`(1,a,b,1,a,b,1,c,d,"dado") 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) planilha fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) planilha^^[(poz,pox,poy,paz,pax ,pay,pdz,pdx,pdy,str)] 1 1`[] define priority routes end Sheet planilha^^[(poz,pox,poy,paz,pax,pay,pdz,pdx,pdy,str)] rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) low if (f=low) then 1`(1,a,b,1,a,b,1,c,d,"dado") else empty Data 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) Data planilha packet routing fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) IV. TRABALHOS CORRELATOS Figura 2 – configuração inicial da rede. Embora seja um novo conceito em tecnologia, a análise das NOCs já foi tema de vários outros trabalhos nos últimos anos. Como exemplo, pode-se citar a análise off-line de agendamento de tarefas em NOCs, proposta por Zheng Shi, com base na comparação de atraso de fluxo em alta e baixa prioridade. Em sua pesquisa, o autor tomou como abordagem a previsão do comportamento da rede [8]. Outro ponto de vista muito considerado é a melhoria de qualidade de serviço, ou QOS, por meio da inclusão de software e/ou hardware. Em seu trabalho, M. L. Kaddachi apresenta um protocolo de comunicação capaz de mapear requisitos para maior QOS através de mecanismos de sinalização. Por outro lado, o autor não menciona se houve aumento na área da rede [9]. Yijun Liu, por sua vez, fez uso da técnica de prioridade em canais virtuais, obtendo resultados positivos sem aumento de hardware [10]. Apesar do bom número de pesquisas já feitas sobre NOCs, aplicações em tempo real crítico, o principal objetivo da NOC abordada neste artigo, não foi muito explorado. Em aplicações dessa natureza, são necessárias análises sobre qualidade de serviço e tolerância a falhas, pois sistemas em tempo real apresentam restrições de funcionamento, tempo e confiabilidade que devem ser estudadas [11]. Cada lugar e transição específicos são denominados de forma a designar a função que desempenha no modelo. A saber: Counter: faz a contagem dos pacotes de dados (representados por fichas do tipo Data – isso será tratado adiante) que entram na rede; Gather data: nesta transição, os pacotes saem dos respectivos processadores de origem e entram numa rota aleatoriamente determinada. Os pacotes são armazenados em “start”; Define priority: aqui, os pacotes são separados pela prioridade, aleatoriamente definida pela variável f. Pacotes com prioridade baixa (f = 0) são mantidos na camada central da rede (coordenada z = 1) e armazenados em “low”. Os de prioridade alta (f = 1) são roteados pelas camadas up e down (z = 2 ou z = 3) e alocados em “high”; Circuit routing / Packet routing: nestas transições é feito o roteamento propriamente dito. O deslocamento na rede é feito nos eixos x e y, nessa ordem. Em “circuit routing” é feito o roteamento por circuito (ou seja, nas camadas up e down) e em “packet routing” é realizado o roteamento por pacote (camada central). Ao ser alcançado o processador de destino, o pacote é transferido para “end”; Routes: neste lugar, é organizada uma lista (do tipo Sheet) de fichas Data, numa representação simples da trajetória percorrida pelos pacotes na rede. Detalhe importante é que somente são alocadas as fichas referentes às transições entre roteadores, ou seja, a troca de informações entre um roteador e seu respectivo processador não são contadas na planilha. Os tipos de fichas, por sua vez, seguem a seguinte classificação: Priority: a prioridade dos pacotes de dados a serem roteados, definida por um booleano de valor baixo (low) ou alto (high); RotaXY: as coordenadas dos eixos x e y que designam os roteadores de cada camada (e, por extensão, os respectivos processadores da camada central), definidas por dois inteiros de valor pertencente ao intervalo [1, 4]; V. DESENVOLVIMENTO A NOC abordada neste trabalho, denominada Thor, é uma rede tridimensional 4x4x3, ou seja, tem três camadas de 16 roteadores arrumados na topologia mesh. Enquanto a camada central abrange também processadores associados, nela então sendo realizado roteamento por pacote, as camadas up (superior) e down (inferior) apresentam somente roteadores, nos quais a transmissão é feita por circuito. A rede Thor também trabalha com pacotes de prioridade. Assim, as camadas up e down são reservadas aos pacotes de dados de alta prioridade, devido ao tempo menor de transmissão das informações no roteamento por circuito, e a camada central é utilizada para transmissão de dados de baixa prioridade. Porém, independentemente da prioridade, todos os pacotes são armazenados nos processadores da rede, iniciando e terminando a rota, portanto, pela camada central. A seguir temos uma explicação do modelo propriamente IV Congresso Tecnológico InfoBrasil - 2011 3 RotaZ: a coordenada do eixo z que designa a camada (central, up ou down) pela qual o pacote será roteado, definida por um inteiro de valor pertencente ao intervalo [1, 3]. Diferentemente do tipo RotaXY, os números do tipo RotaZ não mudam de valor durante o roteamento, pois este modelo considera a rede ideal, não havendo a necessidade de permuta de camadas; Data: o pacote de dados propriamente dito, dividido em duas partes – um cabeçalho, o qual apresenta três triplas ordenadas, que designam respectivamente os roteadores inicial, atual e final da rota, e a informação a ser roteada, que neste modelo é representada pela string simples “dado”. Importante salientar que a ordem do algoritmo usado é ZXY, tanto em prioridade de deslocamento como na ordenação das coordenadas; Sheet: a lista de pacotes de dados, que recebe as fichas referentes a todo o caminho percorrido na rede. Essa lista é única, não havendo separação por rota (isso será mencionado mais à frente). Nos próximos parágrafos temos uma explicação mais detalhada do modelo. 1 1`1 counter INT n n+1 if (f=high) then 1`(1,a,b,e,a,b,1,c,d,"dado") else empty gather data rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) Data 1`(1,a,b,1,a,b,1,c,d,"dado") 1 1`(1,4,1,1,4,1,1,3,4,”dado”) define priority Data 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) planilha planilha^^[(poz,pox,poy,paz,pax ,pay,pdz,pdx,pdy,str)] 1 1`[] routes start 1`(1,a,b,1,a,b,1,c,d,"dado") fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) circuit routing high end Sheet Data planilha^^[(poz,pox,poy,paz,pax,pay,pdz,pdx,pdy,str)] rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) low if (f=low) then 1`(1,a,b,1,a,b,1,c,d,"dado") else empty Data 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) planilha packet routing fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) Figura 3 – um pacote de dados é inserido na rede. A transição “gather data” estará sempre habilitada, pois precisa apenas de um inteiro n, já disponível em “counter”, para tal. Assim, após um disparo, uma ficha do tipo Data é alocada em “start”, e as coordenadas das triplas ordenadas da ficha são aleatoriamente definidas. Na figura acima, a ficha é dada por (1, 4, 1, 1, 4, 1, 1, 3, 4, “dado”). Ou seja, o pacote de dados representado pela ficha se encontra no processador (4, 1) e deve ser enviado ao processador (3, 4). A rota que o pacote seguirá pela rede dependerá da sua prioridade, que é definida através da transição “define priority”. Ao ser feito o disparo desta, vem a seguinte figura: 1 1`1 counter INT n n+1 gather data if (f=high) then 1`(1,a,b,e,a,b,1,c,d,"dado") else empty rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) 1 1`(1,4,1,2,4,1,1,3,4,”dado”) high Data 1`(1,a,b,1,a,b,1,c,d,"dado") start Data 1`(1,a,b,1,a,b,1,c,d,"dado") fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) circuit routing 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) planilha planilha^^[(poz,pox,poy,paz,pax ,pay,pdz,pdx,pdy,str)] 1 1`[] routes define priority end Sheet planilha^^[(poz,pox,poy,paz,pax,pay,pdz,pdx,pdy,str)] rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) low if (f=low) then 1`(1,a,b,1,a,b,1,c,d,"dado") else empty Data 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) planilha packet routing fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) Figura 4 – definida prioridade do primeiro pacote. Data A ficha é retirada de “start” e alocada em “high” ou “low”, dependendo do valor da variável booleana f. No caso, o pacote tem alta prioridade (f = high), sendo, portanto, levado a um roteamento por circuito pela camada up ou down (note que a coordenada z da segunda tripla ordenada, correspondente ao roteador corrente da rota, mudou de valor para 2; caso o novo valor seja 3, o resultado é o mesmo). A partir daí, começa o tráfego propriamente dito do pacote de dados pela rede: 1 1`1 counter INT n n+1 if (f=high) then 1`(1,a,b,e,a,b,1,c,d,"dado") else empty gather data rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) 1 1`(1,4,1,2,3,1,1,3,4,”dado”) Data 1`(1,a,b,1,a,b,1,c,d,"dado") start Data 1`(1,a,b,1,a,b,1,c,d,"dado") fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) circuit routing high 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) planilha planilha^^[(poz,pox,poy,paz,pax ,pay,pdz,pdx,pdy,str)] 1 1`[(1,4,1,2,4,1,1,3,4,”dado”)] routes end define priority Sheet Data planilha^^[(poz,pox,poy,paz,pax,pay,pdz,pdx,pdy,str)] planilha rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) packet routing low if (f=low) then 1`(1,a,b,1,a,b,1,c,d,"dado") else empty Data 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) Figura 5 – roteamento do pacote de dados em andamento. Através da transição “circuit routing”, o pacote percorre a rota cujos extremos são os roteadores definidos pela primeira e terceira triplas ordenadas da ficha, e seu deslocamento é feito pelos eixos x e y, nessa ordem e sem interrupções ou rupturas (lembrando que a rede modelada é ideal). Dessa forma, as coordenadas x e y da segunda tripla ordenada serão incrementadas ou decrementadas de acordo com as coordenadas das outras duas triplas e com a ordem de deslocamento. Tais operações são implementadas na função “rota”. À medida que as coordenadas do roteador corrente da rota forem mudando, as fichas contendo os valores anteriores são alocadas em “routes”, numa planilha representada por uma lista FIFO. Seguindo tais especificações, ao final do tráfego se tem a seguinte figura: 1 1`1 counter INT n n+1 gather data if (f=high) then 1`(1,a,b,e,a,b,1,c,d,"dado") else empty rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) Data 1`(1,a,b,1,a,b,1,c,d,"dado") start Data 1`(1,a,b,1,a,b,1,c,d,"dado") fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) circuit routing 1`[(1,4,1,2,4,1,1,3,4,”dado”),(1,4, 1,2,3,1,1,3,4,”dado”),(1,4,1,2,3,2, 1,3,4,”dado”),(1,4,1,2,3,3,1,3,4,” 1 dado”),(1,4,1,2,3,4,1,3,4,”dado”)] routes end high 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) planilha define priority Sheet planilha^^[(poz,pox,poy,paz,pax,pay,pdz,pdx,pdy,str)] rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) low if (f=low) then 1`(1,a,b,1,a,b,1,c,d,"dado") else empty Data 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) Data 1 1`(1,4,1,1,3,4,1,3,4,”dado”) planilha packet routing fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) Figura 6 – roteamento do pacote finalizado. Em “routes” estão alocadas as fichas correspondentes ao caminho percorrido pelo pacote de dados, e em “end” se encontra a ficha correspondente ao pacote já armazenado no processador referente ao roteador final da rota. A transferência do roteador final para seu respectivo processador é implementada na função “fimdarota”. Analogamente, havendo um pacote de baixa prioridade a ser roteado, tem-se a seguinte situação: IV Congresso Tecnológico InfoBrasil - 2011 4 1 1`2 VII. CONCLUSÃO counter INT n n+1 if (f=high) then 1`(1,a,b,e,a,b,1,c,d,"dado") else empty gather data rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) Data 1`(1,a,b,1,a,b,1,c,d,"dado") start Data 1`(1,a,b,1,a,b,1,c,d,"dado") fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) circuit routing 1`[(1,4,1,2,4,1,1,3,4,”dado”),(1,4, 1,2,3,1,1,3,4,”dado”),(1,4,1,2,3,2, 1,3,4,”dado”),(1,4,1,2,3,3,1,3,4,” 1 dado”),(1,4,1,2,3,4,1,3,4,”dado”)] routes end high 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) planilha define priority Sheet planilha^^[(poz,pox,poy,paz,pax,pay,pdz,pdx,pdy,str)] dz,pdx,pdy,str) low if (f=low) then 1`(1,a,b,1,a,b,1,c,d,"dado") else empty Data 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) Data 1 1`(1,4,1,1,3,4,1,3,4,”dado”) planilha 1 rota(poz,pox,poy,paz,pax,pay,p 1`(1,1,3,1,1,3,1,4,2,”dado”) packet routing fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) Figura 7 – segundo pacote entra na rede. A ficha da vez é (1, 1, 3, 1, 1, 3, 1, 4, 2, “dado”) e f = low, ou seja, o pacote é de baixa prioridade e está no buffer do roteador (1, 3) com destino ao processador (4, 2). Assim, ao final do roteamento se tem o seguinte resultado: 1 1`2 Mesmo representando uma rede ideal, o modelo estudado neste trabalho dá uma idéia básica, mas importante, sobre o algoritmo de roteamento da NOC. Além disso, a versatilidade da representação por redes de Petri permite que, a partir dele, incremente-se a modelagem com características mais próximas do real, tais como: temporização, para simular um cálculo estimado do tempo de latência da rede; limitação de slots nos buffers dos roteadores da camada central, de forma a estudar soluções para congestionamento na rede; uso de variáveis para simular incidência de erros como perda de pacotes; implementação de um algoritmo para verificar se a rota na comutação por circuito está livre e, em caso afirmativo, alocar o espaço para a transmissão. counter INT n n+1 gather data if (f=high) then 1`(1,a,b,e,a,b,1,c,d,"dado") else empty Data 1`(1,a,b,1,a,b,1,c,d,"dado") start Data 1`(1,a,b,1,a,b,1,c,d,"dado") 1`[(1,4,1,2,4,1,1,3,4,”dado”),(1,4,1 ,2,3,1,1,3,4,”dado”),(1,4,1,2,3,2,1, circuit 3,4,”dado”),(1,4,1,2,3,3,1,3,4,”dad routing o”),(1,4,1,2,3,4,1,3,4,”dado”),(1,1, 1`(poz,pox,poy,paz,pax,pay,pdz 3,1,1,3,1,4,2,”dado”),(1,1,3,1,2,3,1 ,pdx,pdy,str) ,4,2,”dado”),(1,1,3,1,31,3,3,1,4,2,” planilha dado”),(1,1,3,1,4,3,1,4,2,”dado”),( 1 1,1,3,1,4,2,1,4,2,”dado”)] routes end define priority Sheet planilha^^[(poz,pox,poy,paz,pax,pay,pdz,pdx,pdy,str)] rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) low if (f=low) then 1`(1,a,b,1,a,b,1,c,d,"dado") else empty VIII. REFERÊNCIAS BIBLIOGRÁFICAS rota(poz,pox,poy,paz,pax,pay,p dz,pdx,pdy,str) high Data 1`(poz,pox,poy,paz,pax,pay,pdz ,pdx,pdy,str) planilha packet routing Data 2 1`(1,4,1,1,3,4,1,3,4,”dado”)++ 1`(1,4,1,1,3,4,1,3,4,”dado”) fimdarota(poz,pox,poy,paz,pax, pay,pdz,pdx,pdy,str) Figura 8 – roteamento do segundo pacote finalizado. A transição “packet routing” opera de forma análoga à “circuit routing”, assim o resultado final é similar. Detalhe importante é o fato de a planilha em “routes” ser uma fila única, não diferenciando as fichas por rota ou por processador de origem ou destino. Os elementos da fila correspondentes a rotas diferentes também podem estar embaralhados, dependendo da ordem de disparo das transições. VI. ANÁLISE DOS RESULTADOS Como foi mostrado, o modelo apresenta uma idéia básica e geral sobre o algoritmo de roteamento adotado na Thor. Vale ressaltar que este modelo simula uma NOC não-temporizada ideal, não havendo, portanto, diferença visível de tempo entre o roteamento por pacote e por circuito ou problemas como perda de pacotes de dados e sobrecarga nos buffers de entrada dos roteadores. A partir deste modelo, entretanto, pode-se introduzir tais limitações expandindo-se a rede e/ou fazendo uso de novas variáveis locais. Outro ponto inconveniente no modelo é a implementação da “planilha de roteamento”. O algoritmo de FIFO ajuda a visualizar a rota seguida pelos pacotes (representada pela segunda tripla ordenada de cada ficha), mas por uma limitação do próprio, não é possível dividir as listas de fichas por pacote de dados ou de acordo com os extremos (roteador inicial e final) da rota. Assim, a planilha é apresentada como uma fila única contendo todas as fichas do roteamento. Além disso, não há representação direta dos processadores, a prioridade de envio é aleatoriamente determinada para cada pacote de dados e, visto que este trabalho é focado no estudo do algoritmo de roteamento, a string que representa a informação a ser roteada se mantém inalterada. [1] ALI, M., WELZL, M., ZWICKNAGL, M. Networks on Chips: Scalable Interconnects for Future Systems on Chips. Circuits and Systems for Communications, ECCSC 2008. 4th European Conference on, Bucharest, p. 240-245, 2008. DOI 10.1109/ECCSC.2008.4611685. [2] BENINI, L., MICHELI, G. “Networks on chips: A new SoC paradigm”, Computer, v. 35(1), p. 70-78, Janeiro de 2002. [3] A. Alameldeen and D. Wood. Addressing Workload Variability in Architectural Simulations . IEEE Micro, 23(6):94–98, November December 2003. [4] H. Blume, T. von Sydow, T.G. Noll, Performance analysis of SoC communication by application of deterministic and stochastic Petri Nets. in: Proceedings of the Samos’2004 Workshop, Samos, Greece, July 19– 21, 2004, Springer, LCNS 3133, pp. 484–493. [5] “Very Brief Introduction to CP-nets”, Department of Computer Science, University of Aarhus, Denmark – http://daimi.au.dk/CPnets/proxy.php?url=/CPnets/intro/verybrief; [6] CPNTools Homepage – http://cpntools.org; [7] CPN Samples – http://di.uern.br/cpnsamples/?page_id=4; [8] Zheng Shi; Burns, A.; , "Real-Time Communication Analysis for OnChip Networks with Wormhole Switching," Networks-on-Chip, 2008. NoCS 2008. Second ACM/IEEE International Symposium on , vol., no., pp.161-170, 7-10 April 2008. Doi: 10.1109/NOCS.2008.4492735. [9] Kaddachi, M.L.; Soudani, A.; Tourki, R.; , "Signaling approach for NoC quality of service requirements," Signals, Circuits and Systems, 2008. SCS 2008. 2nd International Conference on , vol., no., pp.1-5, 7-9 Nov. 2008. Doi: 10.1109/ICSCS.2008.4746920. [10] Yijun Liu; Zhenkun Li; Pinghua Chen; Zhusong Liu; , "A Stacked NoC Architecture for Quality-of-Service," Information Science and Engineering, 2008. ISISE '08. International Symposium on , vol.1, no., pp.609-612, 20-22 Dec. 2008. Doi: 10.1109/ISISE.2008.241. [11] Hermann Kopetz, ``Real-Time Systems: Design Principles for Distributed Embedded Applications'', Kluwer Academic Publishers,1997.