albano portela machado - ufpe

207
P ós -Gr aduação em Ci ênci a da Computação “Uma Metodologia para Es timativa de Área B as eados em Redes de Petri T emporizadas para Ambientes de S is temas de H ar dw ar e/S oft w ar e Co-Des i gn” Por Albano Portela Machado Di s s er t ação de Mes t r ado Universidade Federal de Pernambuco [email protected] www.cin.ufpe.br/~posgraduacao RECIFE, AGOSTO/2004

Upload: others

Post on 20-Jun-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Albano Portela Machado - UFPE

Pós -Gr aduação em Ciênci a da Computação

“U ma Metodol ogia para E s t i mativa de Área B as eados em R edes de Petr i T empor i zadas

par a Ambientes de S i s temas de H ardwar e/S oftwar e Co-Des i gn”

Por

Albano P or tela Machado

Di s s er tação de Mes tr ado

Universidade Federal de Pernambuco [email protected]

www.cin.ufpe.br/~posgraduacao

RECIFE, AGOSTO/2004

Page 2: Albano Portela Machado - UFPE

ALBANO PORTELA MACHADO

UMA METODOLOGIA PARA ESTIMATIVA DE ÁREA BASEADOS EM REDES DE PETRI TEMPORIZADAS PARA AMBIENTES DE

SISTEMAS DE HARDWARE/SOFTWARE CO-DESIGN.

Dissertação apresentada ao Curso de Mestrado em Ciência da Computação como requisito parcial à obtenção do grau de Mestre em Ciência da Computação. Centro de Informática da Universidade Federal de Pernambuco. Orientador: Prof. Dr. Paulo Romero Martins Maciel

RECIFE, AGOSTO /2004

Page 3: Albano Portela Machado - UFPE
Page 4: Albano Portela Machado - UFPE

iii

DEDICATÓRIAS

Esta dissertação é dedicada aos meus pais Avelino (in memorian) e Avelina, que sempre acreditaram que a educação é o maior recurso que o ser humano deve buscar; aos meus irmãos Fátima, Juvino e Avelino e à professora Edna Barros, uma pessoa com uma capacidade profissional e valor humano inquestionáveis, que me incentivou a vir para esta instituição.

Page 5: Albano Portela Machado - UFPE

iv

AGRADECIMENTOS

Obrigado meu Deus por mais esta conquista! Gostaria de registrar meus agradecimentos como reconhecimento sincero da dedicação de muitas pessoas que direta ou indiretamente, contribuíram para a realização deste trabalho. Ao meu orientador professor Paulo Romero Martins Maciel na sua luta incessante sempre à busca de melhores meios e caminhos, guiando e monitorando o progresso desta pesquisa de forma objetiva e consistente. Aos professores Manoel Eusébio de Lima, PhD, e Ricardo Massa Ferreira de Lima, Doutor, pela brilhante participação da banca examinadora, contribuindo substancialmente para a melhoria da qualidade deste trabalho. Aos colegas e professores do GRECO (Grupo de Engenharia da Computação), em especial a Fábio Prudente, Pablo Viana, Edson Barbosa, Abel Silva, Cristiano Araújo, companheiros de mestrado que tanto deram apoio nos momentos em que parecia não haver luz no fim do túnel. Aos colegas Adnan Sherif (MSc UFPE) e Sérgio(UESB) pela ajuda na formalização dos conceitos matemáticos. À minha grande amiga Vanessa Bittencourt (UESB) que com seu apoio e carinho não mediu esforços para a concretização desta dissertação. Ao meu cunhado e grande amigo Eduardo Shimizu pela solidariedade e incentivo. Aos demais professores e funcionários da UFPE. Ao CNPQ pelo apoio financeiro.

Page 6: Albano Portela Machado - UFPE

v

UMA METODOLOGIA PARA ESTIMATIVA DE ÁREA BASEADOS EM REDES DE PETRI TEMPORIZADAS PARA AMBIENTES DE

SISTEMAS DE HARDWARE/SOFTWARE CO-DESIGN 1 Autor: Albano Portela Machado Orientador: Prof. Dr. Paulo Romero Martins Maciel

RESUMO

A maioria dos sistemas electrônicos modernos consiste em hardware dedicado e componentes programáveis (chamados componentes de software). Ao longo dos últimos anos, o número de metodologias que aplicaram simultaneamente técnicas de diferentes áreas para desenvolver sistemas mistos de hardware e software tem crescido consideravelmente.

Projetos concorrentes de sistemas mistos de hardware/software têm mostrado ser vantajoso quando considerado como um todo ao invés de se considerar entidades independentes. Hoje em dia, o mercado eletrônico demanda sistemas de alto desempenho e de baixo custo. Estes requisitos são essenciais para a competitividade de mercado. Além disso, um curto time-to-market é um fator importante. A demora no lançamento do produto causa sérias reduções no lucro, desde que é mais simples vender um produto quando se tem pouca ou nenhuma competição. Isto significa que facilitando o re-uso de projetos anteriores, uma rápida exploração de projeto, análise/verificação qualitativa em fases iniciais do projeto, prototipação e a redução do tempo requerido para testes, reduzem o tempo global exigido de uma especificação até o produto final. Ao projetar tais sistemas mistos de hardware/software, a análise de alternativas de projeto e a decisão de onde implementar cada parte de sistema, isto é, em hardware ou em software, são tarefas muito importantes. A estimativa de métricas de qualidade permite a exploração do espaço de projeto e pode guiar a decisão de implementação de partes do sistema. Tais métricas são calculadas no nível de sistema, ou seja, sem implementação real. Conseqüentemente, tais estimativas também aceleraram o projeto

1 Dissertação de Mestrado em Ciência da Computação, Centro de Informática, Universidade Federal de

Pernambuco, Recife, PE, (187p.). Agosto de 2004.

Page 7: Albano Portela Machado - UFPE

vi

do sistema e permitem a análise de restrições de projeto, fornecendo uma retroalimetação para decisões de projeto.

As redes de Petri são técnicas de especificação formal que permitem uma representação gráfica e matemática. Têm métodos poderosos que permitem aos projetistas realizar análises qualitativa e quantitativa. Redes de Petri Timed, são extensões de redes de Petri nas quais as informações de tempo são expressas por duração (rede com tempo determinístico, política de disparo em três fases) e são associadas às transições.

Para uma descrição comportamental de alto nível, o projeto de hardware é dividido em classes de blocos funcionais: caminho de dados e controladores.

O caminho de dados consiste em três tipos de componentes RT: unidades de armazenamento (registradores e latches), unidades funcionais (ALUS e comparadores), e unidades de interconexão (multiplexadores e barramentos).

As unidades de armazenamento são requeridas para armazenar valores de dados como constantes, variáveis e vetores no comportamento. As unidades funcionais são necessárias para implementar as operações no comportamento. Após todas as variáveis e operações no comportamento terem sido mapeadas às unidades de armazenamento e funcionais, respectivamente, podemos estimar o número de unidades de interconexão, como os barramentos e multiplexadores, os quais são requeridos para interligar as unidades de armazenamento e funcionais.

Este trabalho propõe uma abordagem para estimar a área de hardware a partir do número de unidades de armazenamento, funcionais e de interconexão, levando-se em consideração restrições de tempo e dependência de dados, e estende alguns trabalhos anteriores com o objetivo de melhorar a precisão dos métodos de estimativa de área. Isto é, o método proposto considera uma rede de fluxo de dados que captura dependência de dados e calcula a área do caminho de dados a partir do número e tipo dos seus componentes, considerando a relação de dependência temporal.

Palavras-chaves: Redes de Petri, Redes de Petri Temporizadas, Estimativas, Hardware/Software Co-Design, Dependência de Dados, Caminho de Dados, Unidades de Armazenamento, Unidades Funcionais, Unidades de Interconexão, Modelos Intermediários.

Page 8: Albano Portela Machado - UFPE

vii

A TIMED PETRI NET METHODOLOGY BASED ON AREA ESTIMATOR FOR HARDWARE/SOFTWARE CO-DESIGN

SYSTEMS ENVIRONMENTS 2 Autor: Albano Portela Machado Orientador: Prof. Dr. Paulo Romero Martins Maciel

ABSTRACT

Most modern electronic systems consist of dedicated hardware and programmable components (called software components). Over the last few years, the number of methodologies that concurrently apply design techniques from different areas to develop mixed hardware/software system has been growing considerably.

The concurrent design of mixed hardware/software systems has shown to be advantageous when considered as a whole instead of considering as independent entities. Nowadays, the electronic market demands high-performance and low cost systems. These requirements are essential for the market competitiveness. Furthermore, a short time-to-market is an important factor. The delay in product launching causes serious profit reductions, since it is much simpler to sell a product if you have little or no competition. It means that facilitating the re-use of previous designs, faster design exploration, qualitative analysis/verification in an early phase of the design, prototyping, and the reduction of the required time-to-test, reduce the overall time required from a specification to the final product.

When designing such mixed hardware/software system, the analysis of design alternatives and the decision of where to implement each part of system, that is, in hardware or in software, are very important tasks. The estimation of quality metrics permits design space exploration and may guide the decision of the implementation media of a system’s parts. Such metrics are calculated at system level, or rather, without real implementation. Hence, such estimations also speed up a system’s design and

2 Master of Science dissertation in Computer Science, Informatics Center, Federal University of

Pernambuco, Recife, PE, (176p.). Agosto, 2004.

Page 9: Albano Portela Machado - UFPE

viii

permit the analysis of design constraints, providing a quick feed-back for design decisions.

Petri nets are a formal specification technique that allow for a graphical, mathematical representation and have powerful methods which allow designers to perform qualitative and quantitative analysis. Timed Petri nets, are Petri nets extensions in which the time information is expressed by duration (determinist timed net with three phase policy firing semantics) and is associated to the transitions.

For a given high-level behavioral description, the hardware design is divided into classes of functional blocks: data-paths and controllers.

The datapath consists of three kinds of RT components: storage units (such as registers and latches), functional units (such as ALUS and comparators), and interconnect units (such as multiplexers and buses).

Storage units are required for holding data values by the constants, variables and arrays in the behavior. Functional units are needed to implement the operations in the behavior. After all the variables and operations in the behavior have been mapped to storage and functional units, we can estimate the number of interconnect units, such as buses and multiplexers, which are required for interconnecting the storage and functional units.

This work proposes an approach to estimate the hardware area based on the number of storage, functional and interconnect units, taking into account timing constraints and the data-dependency, and extends some previous works aiming improving the accuracy area estimation methods. That is, the proposed method considers an data-flow net that captures data-dependency for calculating the area of the data-path based on the number and type of its components, considering temporal dependence relation.

Keywords: Petri nets, Timed Petri Nets, Estimates, Hardware/Software Co-Design, Data-Dependency, Data-Path, Storage Units, Functional Units, Interconnect Units, Intermediate Model.

Page 10: Albano Portela Machado - UFPE

ix

SUMÁRIO

1 ................................................................................................................................... 1

Introdução ................................................................................................................... 1

1.1 Projeto de Sistemas Digitais.............................................................................. 1

1.2 Hw/Sw Co-Design: Uma visão Geral............................................................... 2

1.3 Estimativas ........................................................................................................ 6 1.3.1 Precisão versus Custo Computacional .......................................................... 7 1.3.2 Fidelidade .................................................................................................... 7

1.4 Estilos de Projetos ............................................................................................. 8

1.5 Métricas de Qualidade ...................................................................................... 9 1.5.1 Métricas de Custo de Hardware .................................................................... 9 1.5.2 Métricas de Custo de Software ................................................................... 10 1.5.3 Outras Métricas .......................................................................................... 11

1.6 Contribuições .................................................................................................. 12

1.7 Organização .................................................................................................... 13

2 ................................................................................................................................. 14

Trabalhos Relacionados ............................................................................................ 14

2.1 Modelos Intermediários .................................................................................. 14 2.1.1 Máquinas de Estados Finitos ...................................................................... 15 2.1.2 Grafos de Fuxo de Controle/Dados............................................................. 16 2.1.3 Redes de Petri ............................................................................................ 17

2.2 Algoritmos Usados em Estimativas de Área .................................................. 18 2.2.1 Unidades de Armazenamento ..................................................................... 18 2.2.2 Unidades Funcionais .................................................................................. 20 2.2.3 Unidades de Interconexão........................................................................... 21

2.3 Ferramentas de Co-Design.............................................................................. 22

Page 11: Albano Portela Machado - UFPE

x

2.3.1 Vulcan II .................................................................................................... 23 2.3.2 LYCOS ...................................................................................................... 24 2.3.3 Co-Design Studio ....................................................................................... 25 2.3.4 SpecSyn ..................................................................................................... 26

2.4 Conclusões ....................................................................................................... 28

3 ................................................................................................................................. 29

Redes de Petri ............................................................................................................ 29

3.1 Redes de Perti Marcadas ................................................................................ 30

3.2 Propriedades Comportamentais..................................................................... 33 3.2.1 Alcançabilidade (reachability).................................................................... 34 3.2.2 Limitação (boundedness)............................................................................ 34 3.2.3 Liveness ..................................................................................................... 36 3.2.4 Reversibilidade (reversibility) .................................................................... 37

3.3 Métodos de Análise ......................................................................................... 38

3.4 Subclasses de Redes de Petri........................................................................... 41 3.4.1 State Machine............................................................................................. 42 3.4.2 Marked Graph ............................................................................................ 42 3.4.3 Redes Free-Choice ..................................................................................... 42 3.4.4 Redes Extended Free-Choice...................................................................... 43 3.4.5 Redes Asymmetric Choice ......................................................................... 43

3.5 Redes de Petri Temporizadas ......................................................................... 44 3.5.1 Modelo de Zuberek .................................................................................... 44 3.5.2 Outros Modelos.......................................................................................... 50

3.6 Conclusões ....................................................................................................... 51

4 ................................................................................................................................. 52

Modelo Intermediário ................................................................................................ 52

4.1 Introdução ....................................................................................................... 52

4.2 Linguagem de Programação Occam............................................................... 53

4.3 Modelo de Fluxo de Controle.......................................................................... 54

4.4 Modelo de Fluxo de Dados.............................................................................. 56 4.4.1 Componentes da Rede ................................................................................ 57 4.4.2 Método de Tradução................................................................................... 58

4.5 Conclusões ....................................................................................................... 69

5 ................................................................................................................................. 70

Estimativa de Área..................................................................................................... 70

5.1 Modelo da Estimativa de Hardware............................................................... 70

Page 12: Albano Portela Machado - UFPE

xi

5.2 Sistema de Estimativa de Área de Hardware................................................. 71

5.3 Definição do Modelo Intermediário ............................................................... 72

5.4 Estimativa de Área do Caminho de Dados..................................................... 75 5.4.1 Número de Unidades de Armazenamento: Método Baseado nas Variáveis Simultaneamente “Vivas” ................................................................................... 76 5.4.2 Número de Unidades de Armazenamento: Método Baseado nos Tempos de Vida das Variáveis. ............................................................................................. 84 5.4.3 Número e Tipo de Unidades Funcionais ..................................................... 88 5.4.4 Número de Unidades de Interconexão (multiplexadores 2×1) ..................... 95 5.4.5 Área do Caminho de Dados ...................................................................... 106

5.5 Conclusões ..................................................................................................... 108

6 ............................................................................................................................... 110

Estudos de casos ...................................................................................................... 110

6.1 Um Pequeno Exemplo................................................................................... 110 6.1.1 Descrição ................................................................................................. 110 6.1.2 Unidades de Armazenamento ................................................................... 111 6.1.3 Unidades Funcionais ................................................................................ 114 6.1.4 Unidades de Interconexão (multiplexadores 2×1) ..................................... 116 6.1.5 Comparações............................................................................................ 117

6.2 Equação Diferencial de 2a Ordem. ............................................................... 117 6.2.1 Descrição ................................................................................................. 118 6.2.2 Unidades de Armazenamento ................................................................... 118 6.2.3 Unidades Funcionais ................................................................................ 120 6.2.4 Unidades de Interconexão (multiplexadores 2×1) ..................................... 121 6.2.5 Comparações............................................................................................ 122

6.3 Filtro de Ondas Elíptico de 5a Ordem. ......................................................... 123 6.3.1 Descrição ................................................................................................. 123 6.3.2 Unidades de Armazenamento ................................................................... 124 6.3.3 Unidades Funcionais ................................................................................ 125 6.3.4 Unidades de Interconexão (multiplexadores 2×1) ..................................... 126 6.3.5 Comparações............................................................................................ 127

6.4 Máquina de Refrigerantes ............................................................................ 128 6.4.1 Descrição ................................................................................................. 128 6.4.2 Unidades de Armazenamento ................................................................... 129 6.4.3 Unidades Funcionais ................................................................................ 130 6.4.4 Unidades de Interconexão (multiplexadores 2×1) ..................................... 131 6.4.5 Comparações............................................................................................ 133

6.5 Conclusões ..................................................................................................... 133

7 ............................................................................................................................... 135

Conclusões e Trabalhos Futuros ............................................................................. 135

Page 13: Albano Portela Machado - UFPE

xii

7.1 Objetivos do trabalho ................................................................................... 135

7.2 Trabalhos Futuros......................................................................................... 137

Apêndice A............................................................................................................... 141

Pequeno Exemplo .................................................................................................... 141

A.1 Modelo Intermediário – INA (.pnt ) ............................................................ 141

A.2 Tempo das Transições – INA (.tmd)............................................................ 144

A.3 Grafo de Estados .......................................................................................... 145

Apêndice B............................................................................................................... 152

Equação Diferencial de 2a Ordem ........................................................................... 152

B.1 Descrição em VHDL..................................................................................... 152

B.2 Descrição em Occam .................................................................................... 153

B.3 Modelo Intermediário – INA (.pnt ) ............................................................ 154

B.4 Esquemático do Modelo Intermediário ....................................................... 158

Apêndice C............................................................................................................... 159

Filtro de Ondas Elíptico de 5a Ordem. ..................................................................... 159

C.1 Descrição em VHDL..................................................................................... 159

C.2 Descrição em Occam .................................................................................... 160

C.3 Modelo Intermediário – INA (.pnt ) ............................................................ 161

C.4 Esquemático do Modelo Intermediário ....................................................... 171

Apêndice D............................................................................................................... 172

Máquina de Refrigerantes ....................................................................................... 172

D.1 Descrição em Occam .................................................................................... 172

D.2 Modelo Intermediário – INA (.pnt ) ............................................................ 173

D.3 Esquemático do Modelo Intermediário ....................................................... 181

Referências .............................................................................................................. 182

Page 14: Albano Portela Machado - UFPE

xiii

Lista de figuras

Figura 1.1: Metodologia de Hardware/software co-design. ......................................... 3 Figura 1.2: Modelos típicos de estimadores associados à precisão, fidelidade e velocidade das estimativas. .......................................................................................... 6 Figura 1.3: Estilos de projeto ....................................................................................... 9 Figura 2.1: O sistema VULCAN II.............................................................................. 23 Figura 2.2: Fluxo de tarefas em LYCOS ..................................................................... 25 Figura 2.3: A ferrameta Co-Desing Studio ................................................................. 26 Figura 2.4: Ambiente de projeto SpecSyn ................................................................... 27 Figura 3.1: Redes de Petri representando: (a) atividades paralelas determinísticas (uma rede de Petri marked graph); (b) computação dataflow. ................................... 31 Figura 3.2: Disparo da transição t e evolução da marcação....................................... 32 Figura 3.3: Dois tipos de confusão. (a) confusão simétrica. (b) confusão assimétrica. 33 Figura 3.4: Comportamento patológico qualitativo:(a) Uma rede de Petri não limitada, apresenta deadlock (não-viva), não-reversível; (b) Aumentando a marcação inicial (e.g. m0 (p5) = 1) a rede que é viva, entra em deadlock. ..................................................... 35 Figura 3.5: Exemplos de Redes de Petri contendo todas as possíveis combinações de propriedades: B (bounded ), L (live), R (reversible). (a) t1 dead, p1 ilimitado. (b) t1 dead, p1 ilimitado. (c) p2 ilimitado. (d) t1, t2, t3, t4 não vivas. (e) p1 ilimitado. (f) t1 dead. (g) marcação inicial não será mais alcançável. (h) apresenta todas as propriedades desejáveis. .................................................................................................................. 38 Figura 3.6: (a) Uma rede de Petri marcada. (b) A árvore de cobertura da rede. (c) O grafo de cobertura da rede. ........................................................................................ 41 Figura 3.7: Estruturas principais caracterizando redes de Petri e seu diagrama Venn.................................................................................................................................... 44 Figura 3.8: Rede de Petri temporizada Γ1................................................................... 48

Page 15: Albano Portela Machado - UFPE

xiv

Figura 4.1: Exemplo de especificação em occam........................................................ 54 Figura 4.2: Modelo do fluxo de controle para a especificação da Figura 4.1.............. 55 Figura 4.3: Tradução de um processo ........................................................................ 61 Figura 4.4: Tradução de literais ................................................................................. 61 Figura 4.5: Declaração de variáveis........................................................................... 62 Figura 4.6: Leitura de variável................................................................................... 63 Figura 4.7: Escrita de variável ................................................................................... 63 Figura 4.8: Tradução de expressões ........................................................................... 64 Figura 4.9: Tradução da atribuição (:= ) .................................................................... 65 Figura 4.10: Tradução de entrada (?) ........................................................................ 65 Figura 4.11: Tradução da saída(!) ............................................................................. 66 Figura 4.12: Tradução do condicional(IF/ALT).......................................................... 67 Figura 4.13: Tradução do laço (WHILE).................................................................... 67 Figura 4.14: Modelo do fluxo de dados para a especificação da Figura 4.1 ............... 68 Figura 5.1: Modelo para estimativas com unidade de controle e caminho de dados ... 71 Figura 5.2: Sistema de Estimativa de Área de Hardware............................................ 71 Figura 5.3: Especificação em occam de um comportamento bem simples ................... 72 Figura 5.4: Modelo de Fluxo de dados gerado pelo ferramenta depend...................... 73 Figura 5.5: Rede de Petri temporizada Γ1 – Modelo de fluxo de dados. ..................... 74 Figura 5.6: Grafo de estados para Γ1 ......................................................................... 78 Figura 5.7: Grafo de estados simplificado para ΓΓ1 ..................................................... 81 Figura 5.8: Transições escalonadas por estados para ΓΓ1. ........................................... 90

Page 16: Albano Portela Machado - UFPE

xv

Figura 5.9: Conexões para as entradas das unidades funcionais: UF1, UF2 e UF3 em

Γ3. .............................................................................................................................. 99 Figura 5.10: Implementação para Γ3 com multiplexadores 2 ×1. ................................ 99 Figura 5.11: Conexões fatoradas para as entradas das unidades funcionais: UF1, UF2 e UF3 em Γ3. .............................................................................................................. 99 Figura 5.12: Redução do número de multiplexadores 2 x 1 por fatoração para Γ3.... 100 Figura 5.13: (a) Conexões para as duas entrada da unidade funcional (b) Implementação do projeto final para Γ1.................................................................... 106 Figura 6.1: Comportamento escalonado e tempo de vida das variáveis .................... 111 Figura 6.2: Descrição em occam do pequeno exemplo ............................................. 111 Figura 6. 3: Pequeno Exemplo: Modelo Intermediário do Fluxo de Dados............... 112 Figura 6.4: Pequeno Exemplo: Tempos de disparos das transições ordenados no tempo.................................................................................................................................. 115 Figura 6.5: Pequeno Exemplo: Resultado do mapeamento das transições lógicas/aritméticas nas unidades funcionais. ............................................................ 116 Figura 6.6: Pequeno Exemplo – Caminho de dados com multiplexadores 2×1.......... 117 Figura 6.7: Máquina de Refrigerantes: Visão estrutural........................................... 129 Figura 7.1: Comportamento de um projeto: a) Especificação em occam, b) rede de fluxo de controle, c) rede de fluxo de dados (d) e grafo de alcançabilidade do fluxo de dados........................................................................................................................ 138 Figura 7.2: Comportamento de um projeto: a) Rede de fluxo de dados extendida e b) grafo de alcançabilidade gerado............................................................................... 139

Page 17: Albano Portela Machado - UFPE

xvi

Lista de tabelas

Tabela 3.1: O conjunto de estados alcançáveis em Γ1. ................................................ 49 Tabela 5.1: Xilinx 5000 Library (obtida em [38]) ....................................................... 75 Tabela 5.2: O conjunto de estados alcançáveis para Γ1 .............................................. 79 Tabela 5.3: Variáveis vivas por estados (tempo de vida das variáveis) para Γ1........... 85 Tabela 5.4: Resultado final do mapeamento das variáveis para os registradores para ΓΓ1

................................................................................................................................... 86 Tabela 5.5: Mapeamento das transições às unidades funcionais para ΓΓ1 .................... 91 Tabela 5.6: Mapeamento das variáveis para unidades de armazenamento para ΓΓ3. .... 96 Tabela 5.7: Mapeamento das transições (com suas respectivas variáveis de leitura e escrita) e definição das instruções às unidades funcionais em ΓΓ3. .............................. 96 Tabela 5.8: Conexões das unidades de armazenamento à unidade funcional UF1 em ΓΓ3.................................................................................................................................... 98 Tabela 5.9: Conexões das unidades de armazenamento à unidade funcional UF2 em ΓΓ3.................................................................................................................................... 98 Tabela 5.10: Conexões das unidades de armazenamento à unidade funcional UF3 em ΓΓ3. .............................................................................................................................. 98 Tabela 5.11: Mapeamento das transições à unidade funcional UF1 e suas respectivas instruções aritméticas para ΓΓ1. ................................................................................. 105 Tabela 5.12: Conexões unidades armazenamento com a unidade funcional UF1 para ΓΓ1.................................................................................................................................. 105

Tabela 6.1: Pequeno Exemplo: variáveis simultaneamente vivas por estados .......... 113 Tabela 6.2: Pequeno Exemplo: Tempo de vida das variáveis. ................................... 114

Page 18: Albano Portela Machado - UFPE

xvii

Tabela 6.3: Pequeno Exemplo: Resultado final do mapeamento das variáveis para os registradores ............................................................................................................ 114 Tabela 6.4: Pequeno Exemplo:Tempos de disparos iniciais e finais das transições... 115 Tabela 6.5: Pequeno Exemplo – Mapeamento das transições (com suas instruções) para as unidades funcionais utilizando somente componentes isolados..................... 116 Tabela 6.6: Pequeno Exemplo – Conexões das unidades de armazenamento às unidade funcionais. ................................................................................................................ 116 Tabela 6.7: Equação Diferencial de 2a Ordem: variáveis simultaneamente vivas..... 119 Tabela 6.8: Equação Diferencial de 2a Ordem: Tempo de vida das variáveis........... 119 Tabela 6.9:Equação Diferencial de 2a Ordem: Resultado final do mapeamento das variáveis para os registradores................................................................................. 120 Tabela 6.10: Equação Diferencial de 2a Ordem:Tempos de disparos iniciais e finais das transições ................................................................................................................. 120 Tabela 6.11: Equação Diferencial de 2a Ordem: Resultado do mapeamento das transições (operações lógicas aritméticas) nas unidades funcionais. ........................ 121 Tabela 6.12: Equação Diferencial de 2a Ordem: Mapeamento das transições (e suas respectivas instruções) para as unidades funcionais. ................................................ 121 Tabela 6.13:Equação Diferencial de 2a Ordem: Conexões das unidades de armazenamento às unidade funcionais...................................................................... 122 Tabela 6.14: Equação Diferencial de 2a Ordem: Resultados..................................... 122 Tabela 6.15: Filtro de Ondas Elíptico de 5a Ordem: variáveis simultaneamente vivas................................................................................................................................. 124 Tabela 6.16: Filtro de Ondas Elíptico de 5a Ordem: mapeamento variáveis para os registradores ............................................................................................................ 124 Tabela 6.17: Filtro de Ondas Elíptico de 5a Ordem – Tempos de disparos iniciais e finais das transições ................................................................................................. 125 Tabela 6.18: Filtro de Ondas Elíptico de 5a Ordem – Resultado do mapeamento das transições lógica/aritméticas às unidades funcionais. ............................................... 126

Page 19: Albano Portela Machado - UFPE

xviii

Tabela 6.19: Filtro de Ondas Elíptico de 5a Ordem – Mapeamento das transições (com suas instruções) às unidades funcionais. .................................................................. 126 Tabela 6.20: Filtro de Ondas Elíptico de 5a Ordem – Conexões das unidades de armazenamento às unidade funcionais...................................................................... 127 Tabela 6.21: Filtro de Ondas Elíptico de 5a Ordem – Resultados.............................. 128 Tabela 6.22 – Máquina de Refrigerantes: variáveis simultaneamente vivas por estados.................................................................................................................................. 130 Tabela 6.23: Máquina de Refrigerantes – Resultado final do mapeamento das variáveis aos registradores. ..................................................................................................... 130 Tabela 6.24: Máquina de Refrigerantes – Tempos de disparos iniciais e finais das transições. ................................................................................................................ 131 Tabela 6.25: Máquina de Refrigerantes – Resultado do mapeamento das transições lógica/aritméticas às unidades funcionais. ................................................................ 131 Tabela 6.26: Máquina de Refrigerantes – Mapeamento das transições (e suas instruções) às unidades funcionais............................................................................ 132 Tabela 6.27: Máquina de Refrigerantes – Conexões das unidades de armazenamento às unidade funcionais.................................................................................................... 132 Tabela 6.28: Máquina de Refrigerantes – Resultados. .............................................. 133

Page 20: Albano Portela Machado - UFPE

1 Introdução

Este capítulo introduz o problema de hardware/software co-design, seus objetivos e dá uma visão geral de suas principais atividades, dando ênfase aos métodos de estimativas de área. É também propósito deste capítulo mostrar a importância de se ter um modelo formal para análise qualitativa e quantitativa de sistemas concorrentes, e, finalmente descrever as contribuições deste trabalho.

1.1 Projeto de Sistemas Digitais

Projeto integrado de hardware e software (Hardware/Software Co-Design)

compreende o projeto de sistemas com dois tipos de componentes: os de aplicação

específica (hardware) e os programáveis de propósito geral (software), aos quais se

encontram acoplados [38]. Esta técnica de projeto é diferente das abordagens

convencionais (somente por hardware ou por software), porque relaciona o ciclo de

desenvolvimento do hardware ao do software. Desta forma, decisões tomadas no âmbito

do projeto de hardware afetam substancialmente o projeto de software. Este paradigma

de projeto tem sido aplicado a uma grande variedade de projetos de sistemas eletrônicos

especializados: equipamentos de comunicação, controladores e instrumentação bem

como em automação industrial.

Apesar de tais sistemas não serem novos, o apoio de ferramentas de CAD

(Computer Aided Design), tem sido bastante restrito, impedindo a implementação de

sistemas complexos devido ao elevado custo de desenvolvimento [6]. Esta área de

pesquisa tem despertado muito interesse nos últimos anos. Algumas das motivações

para a pesquisa recente nesta área são:

Page 21: Albano Portela Machado - UFPE

___________________________________________________________________

2

• a diminuição do custo de produção de dispositivos eletrônicos, tornando-se possível

incorporá-los a eletrodomésticos, veículos, aparelhos médicos, etc.

• a crescente diversidade e complexidade das aplicações que utilizam sistemas

integrados, as quais requerem métodos avançados para o projeto de hardware, de

software e da integração de ambos.

• as aplicações passaram a depender destes dispositivos eletrônicos para funcionar

levando a avanços em ambientes de simulação, técnicas de prototipação, métodos

formais para projeto e verificação, síntese de alto-nível e ferramentas CAD;

• a necessidade de se reduzir os custos de projeto;

• validação de sistema;

• redução do time-to-market.

1.2 Hw/Sw Co-Design: Uma visão Geral

O problema considerado no hardware/software co-design [7][17][28][62]

consiste na implementação de uma funcionalidade de um determinado sistema em um

conjunto interconectado de componentes de hardware e software, levando em

consideração as restrições do projeto e procurando balancear aspectos como custo,

desempenho, consumo de energia, etc. Por exemplo, considerando-se que uma

determinada funcionalidade venha a ser implementada apenas em software e que a

arquitetura tenha apenas um processador, é possível que restrições de desempenho não

venham a ser atendidas. Neste caso o uso de dispositivos de hardware de propósitos

específicos podem ser utilizados, de maneira que as restrições de desempenho sejam

satisfeitas. Por outro lado, é importante ressaltar que a implementação de

funcionalidades em software reduz o custo do produto.

O projeto de sistemas embarcados, segundo o paradigma de hardware-software

co-design, pode ser visualizado na Figura 1.1, a qual reúne as principais etapas de

projeto segundo as publicações mais recentes na área.

Page 22: Albano Portela Machado - UFPE

___________________________________________________________________

3

Na etapa de análise de requisitos [38] são definidas as características do

sistema com base nas especificações do cliente e restrições inerentes ao problema a ser

tratado. As principais características a serem capturadas incluem, além de uma primeira

visão da funcionalidade, requisitos de tempo real, tecnologia de implementação,

consumo de potência, tamanho do produto, custo de desenvolvimento, custo de

produção, ambiente de utilização do produto, confiabilidade, manutenção e evolução do

projeto.

Figura 1.1: Metodologia de Hardware/software co-design.

A especificação do sistema [23][38] é o resultado da etapa de análise,

representado por um modelo. A modelagem de sistemas embarcados não é uma tarefa

simples, face à heterogeneidade de seus componentes e à diversidade de aplicações.

Assim, atualmente, vários estilos de modelagem são utilizados, dependendo da

aplicação em questão, tais como: modelos orientado a estados, modelos orientados a

atividades, modelos orientados a estruturas e modelos heterogêneos.

Page 23: Albano Portela Machado - UFPE

___________________________________________________________________

4

Uma etapa essencial num sistema de co-design é a etapa de particionamento

[2][23][38] em hardware e software, onde se decide qual parte do sistema será

implementada em hardware e em software, de forma a resultar numa implementação

que satisfaça às restrições de projeto tais como: custo, desempenho, área e consumo de

potência, etc. O particionamento é um problema NP-completo, e portanto, algoritmos

que realizam particionamento automático são baseados em heurísticas que procuram

reduzir a complexidade do problema.

Uma vez obtida a especificação do sistema, esta é, normalmente, traduzida para

um modelo intermediário [2][38] (interno) capaz de representar as características desta

especificação. Um aspecto importante a ser considerado na escolha deste modelo

interno é o seu poder de representatividade de abstração e o formalismo associado, pois,

sobre este modelo serão realizadas análises qualitativas/quantitativas, verificação e

simulações. A adoção de um formalismo intermediário capaz de expressar diversos

modelos de comunicação e concorrência possibilita ao sistema de hardware/software co-

design ser independente da linguagem de especificação.

A etapa de validação/verificação e análise qualitativa [2][38] visa garantir que

o sistema resultante e a especificação são semanticamente equivalentes. Em geral, este

tipo de validação é realizado considerado-se um modelo simulável do sistema final em

vez de um protótipo real do mesmo. A validação pode se dar através de simulação ou

verificação formal de algumas propriedades do sistema. Validações podem ser

realizadas em algumas fases de projeto. Quando se valida o modelo ou um protótipo

temos a validação virtual e quando já se tem o produto a validação é dita validação

final.

A verificação por outro lado, é o passo onde se verifica se o modelo tem ou não

determinadas propriedades que o projetista julga importantes para o sistema a ser

desenvolvido. Técnicas de verificação formal podem garantir que duas descrições

distintas do sistema têm a mesma semântica.

A análise qualitativa não se procura por nenhuma propriedade específica, mas

por um conjunto de propriedades genéricas. Nesta etapa métodos formais são aplicados

Page 24: Albano Portela Machado - UFPE

___________________________________________________________________

5

para analisar se o modelo possui propriedades, tais quais liveness, fairness,

reversibilidade [50], etc.

Na etapa de estimativas [2][38] um conjunto de métricas são calculadas. Para o

cálculo destas métricas, é necessária a formalização de um conjunto de métodos e a

elaboração de ferramentas que implementem estes métodos. Os referidos algoritmos

devem considerar o modelo intermediário que representa a especificação do sistema,

restrições de projeto e a arquitetura de implementação. O conjunto de métricas obtido

nesta fase é de essencial importância, pois estas métricas orientam o particionamento

hardware/software; possibilitam uma exploração rápida do espaço de projeto pela

avaliação de diferentes alternativas de implementação; e a verificação de violações de

restrições sem a necessidade da implementação dos sistemas, tornando mais ágil todo o

processo de hardware/software co-design.

A etapa de co-síntese [2][38] visa a implementação do hardware, do software e

da interface entre ambos. Síntese de hardware envolve o mapeamento da descrição do

hardware em unidades físicas da arquitetura. Este processo é realizado em várias etapas

e por diferentes ferramentas de síntese, incluindo ferramentas de síntese de alto nível, de

síntese lógica e de layout. A síntese do software inclui a compilação dos módulos de

software para a arquitetura alvo. A síntese de interface visa a geração de hardware e

software necessários para a sincronização dos módulos de hardware e de software.

A fase de prototipação consiste na última tarefa de validação antes da

implementação final do sistema digital. Nesta fase, um protótipo é um sistema tão

similar ao sistema real o quanto possível naqueles aspectos que importam para a

avaliação do sistema, sem requerer uma implementação final. A criação de um protótipo

é baseada em geral em uma implementação com FPGAs (hardware) conectado a

processadores que executam o software, ou ainda pode-se usar tecnologias como

system-on-a-chip (SoC). SOC é a maior revolução no desenvolvimento de projeto de

circuitos e sistemas integrados, devido ao nível sem precedentes de integrações

possíveis. O sistema prototipado imita o comportamento do respectivo sistema real com

componentes de hardware e software juntos sem a necessária implementação real, de

forma a permitir a validação final do sistema em um único componente. Após os testes

Page 25: Albano Portela Machado - UFPE

___________________________________________________________________

6

de avaliação do protótipo o sistema pode ser implementado em uma arquitetura mais

definitiva, se necessário, com ajustes.

1.3 Estimativas

Estimativas de métricas no projeto de sistemas é essencial por duas razões;

primeiro, por permitir ao projetista avaliar a qualidade do projeto, comparando as

estimativas de qualquer métrica do projeto com as restrições especificadas por aquela

métrica. Por exemplo, se a área estimada do projeto for maior que o tamanho permitido,

pode ser necessário implementar em hardware vetores de variáveis (especificados

originalmente para serem implementados em memória do microcontrolador) para

satisfazer a restrição de tamanho. Segundo, estimativas permitem ao projetista de

sistemas explorar alternativas de projeto, provendo um rápida retro-alimentação para

qualquer decisão de projeto. Deste modo, o projetista pode explorar um grande número

de alternativas antes de fazer a síntese de sua implementação final [21].

Figura 1.2: Modelos típicos de estimadores associados à precisão, fidelidade e velocidade das

estimativas.

Pode ser necessário definir um modelo para estimar cada métrica do sistema. A

utilidade da estimativa depende da precisão e/ou fidelidade que o modelo representa o

sistema. Para mostrar o impacto dos modelos de projetos na estimativa, listamos na

Figura 1.2 modelos típicos que podem ser usados para estimar área de sistema a partir

de sua especificação funcional. Os vários tipos de modelos na figura representam uma

progressão de detalhes [21] que precisa ser definida a fim de melhorar a precisão da

Page 26: Albano Portela Machado - UFPE

___________________________________________________________________

7

estimativa de área. Para cada modelo na figura, também listamos tarefas adicionais que

um estimador deve apresentar para realizar estimativas precisas em comparação com os

modelos anteriores.

1.3.1 Precisão versus Custo Computacional

A Figura 1.2 deixa claro que uma importante questão na seleção de um modelo

de projeto é o tradeoff entre a precisão e o custo computacional para se calcular uma

métrica. A precisão [21] de uma estimativa é uma medida da proximidade entre a

estimativa e o valor real da métrica mensurada após a implantação do projeto. A

precisão depende do grau de detalhes do modelo do projeto. Por exemplo, o modelo da

Figura 1.2(a), aproxima a área de projeto como a soma das áreas de memória.

Estimadores baseados em tais modelos simples executam rapidamente e são fáceis de

serem desenvolvidos, dado que somente algumas características são computadas no

cálculo das métricas. Todavia, modelos simples não têm a precisão que possa ser

requerida para guiar o projetista na seleção da alternativa de projeto apropriada. Por

outro lado, um modelo de projeto pode incorporar diversos aspectos do sistema.

Estimadores baseados em modelos detalhados requerem maior tempo de computação,

contudo produzem estimativas mais precisas, e, portanto, possibilitam uma melhor

seleção das alternativas de projeto.

1.3.2 Fidelidade

A fidelidade [34] de um método de estimativa é definida como o percentual de

comparações de previsões corretas entre implementações de projeto. Se os valores

estimados de uma métrica de projeto para duas diferentes implementações comparadas

com seus respectivos valores medidos suportam o mesmo relacionamento comparativo,

então a estimativa compara corretamente as duas implementações. Em outras palavras,

a métrica estimada pode ser usada para selecionar a melhor implementação dentre um

conjunto de possíveis implementações diversas. Quanto mais alta a fidelidade de um

Page 27: Albano Portela Machado - UFPE

___________________________________________________________________

8

estimador, mais provável que decisões corretas de projeto sejam tomadas baseadas na

comparação das estimativas das duas implementações.

Durante a seleção de uma dentre diversas implementações de projeto, previsões

de qualidade de projeto baseadas em estimativas com alto grau de fidelidade resultarão,

em média, em melhores projetos. Fidelidade depende diretamente do modelo usado para

estimar o parâmetro do projeto (como por exemplo: custo e performance de

implementações de hardware e software). Em geral, quanto mais preciso o modelo,

maior a fidelidade do estimador.

1.4 Estilos de Projetos

Estilo de Projeto diz respeito à classe de estrutura física de circuitos usada na

confecção final de um determinado circuito integrado (chip ou CI) [2]. As aplicações

em geral podem ser implementadas usando circuitos integrados ASICs (Aplication

Specific Integrated Circuits) full-custom ou dispositivos semi-custom programáveis e

reconfiguráveis. A Figura 1.3 mostra possíveis estilos para implementação de projetos

[12][63][67][69].

Na implementação de lógica tradicional, a escolha da tecnologia ou estilo de

projeto, é usualmente conseqüência da capacidade, desempenho e preço desta

tecnologia. Projetos Full-custom proporcionam maior capacidade e melhor desempenho,

porém a um alto custo de projeto. Outros estilos tendem a ser mais baratos, para baixo

volume de produção, apresentando, em geral, menor desempenho e capacidade. Full-

custom, Standard-cell e MPGA são mais caros que FPGA e PLD em baixo volume de

produção, já que a confecção de máscaras e a necessidade de uma silicon foundry para

produzir os chips em muito os oneram. Por outro lado, FPGAs e PLDs são tecnologias

para baixo volume de produção, já que não precisam de gastos adicionais em confecção

de máscaras e outros custos de fabricação.

Embora tecnologias customizadas apresentem um custo mais alto de produção

que outros estilos, devido à complexidade de desenvolvimento e fabricação, quando se

Page 28: Albano Portela Machado - UFPE

___________________________________________________________________

9

deseja um grande volume de produção (alta escala de produção), o custo fixo é

amortizado, o que permite torná-lo competitivo e mais barato que os FPGAs. Assim, o

usuário deve escolher o estilo que melhor lhe convier, satisfazendo suas necessidades de

desempenho e preço.

Figura 1.3: Estilos de projeto

1.5 Métricas de Qualidade

Nesta seção, são descritas algumas das métricas de qualidade comumente usadas

para caracterizar um projeto. As duas mais importantes métricas são o custo e o

desempenho (tempo de execução) das implementações do hardware e software. Embora

outras métricas tenham importância significativa, muitas decisões de alto nível são

baseadas completamente nestas duas métricas.

1.5.1 Métricas de Custo de Hardware

Métricas de custo de hardware incluem o custo de manufatura dos chips, custos

de embalagens, custos de testes, custos de engenharia e de projeto .

O custo de manufatura depende do tamanho da implementação do projeto. A

métrica de tamanho mais comum é da área de projeto, a qual é uma medida da área de

silício requerida por uma implementação. Para um dado projeto, uma estimativa de área

deve incluir a área requerida para os elementos de armazenamento (registradores e

memórias), unidades funcionais (ULAs), unidades de interconexão (multiplexadores e

Page 29: Albano Portela Machado - UFPE

___________________________________________________________________

10

barramentos), lógica de controle e área de conexões requerida para conectar estes

elementos. Quando se projeta um sistema, estimativas de área são úteis quando se

deseja analisar se partes do projeto caberão em uma determinada área de chip. Por

exemplo, se a área de sistema é estimada em 80.000 mícrons quadrados, este sistema

não poderá ser implementado em um chip com uma área máxima de 50.000 mícrons

quadrados. O projeto deve ser então particionado e implementado como dois ou mais

chips.

O custo de embalagem é geralmente calculado levando-se em consideração o

número de pinos do projeto. O projetista deve ficar atento para minimizar o número de

pinos em um chip, já que o mesmo afeta não somente o custo de embalagem, como

também a área resultante da superfície da placa, para possibilitar a interconexão dos

pinos.

Atualmente ferramentas CAD são utilizadas para realizar testes e assim verificar

a validade do projeto bem antes da sua implementação. Estes mecanismos podem ajudar

a descobrir vários erros de especificação, evitando sua propagação ao longo do processo

de síntese. Após a implementação final do projeto são realizados testes para verificar o

funcionamento do projeto.

O custo de engenharia e projeto é medido pelas implicações financeiras

associadas com a realização da implementação de um projeto. Isto inclui custos de

manufatura, embalagens, testes, vendas e manutenção, etc.

1.5.2 Métricas de Custo de Software

Enquanto implementações em hardware têm como vantagem aumentar o

desempenho dos sistemas, partes do projeto são freqüentemente implementadas em

software, executando em um microprocessador específico. Diversas vantagens estão

associadas com a implementação em software. Primeiro, o custo de tal implementação é

bem baixo, dado que componentes programáveis como processadores e micro-

controladores são usualmente manufaturados em larga escala. Segundo, o tempo de

desenvolvimento requerido para a implementação em software pode ser

Page 30: Albano Portela Machado - UFPE

___________________________________________________________________

11

significantemente menor. Dada uma especificação executável, uma implementação em

software requer principalmente compilação, enquanto uma implementação em hardware

requer diversas atividades de projeto, incluindo testes e fabricação. Finalmente, com

implementações em software é possível realizar mudanças nas especificações no último

estágio do ciclo de projeto. Tais mudanças para uma implementação em hardware

freqüentemente acarretarão em um grande esforço de re-projeto.

Uma especificação implementada em software deverá ser compilada dentro de

um conjunto de instruções de um processador selecionado. As duas métricas de custo

associadas com a implementação em software são o tamanho da memória de programa e

dados.

1.5.3 Outras Métricas

Agora discutiremos brevemente algumas outras métricas aplicáveis ao projeto

de sistemas: métricas de desempenho, dissipação de potência, tempo de projeto e time-

to-market entre outras.

Métricas de desempenho podem ser divididas em métricas de computação e

comunicação. Métricas de computação medem o tempo requerido para se realizar a

computação de um determinado comportamento. Métricas de comunicação são relativas

ao tempo gasto por um componente na interação com outros componentes no sistema.

Dissipação de potência em componentes de sistemas refere-se ao consumo de

energia nos circuitos no tempo. A dissipação de potência é dependente da freqüência do

clock e do número de portas as quais estão realmente ativas (i.e, sofre uma mudança em

seu valor) em cada ciclo de clock. Quanto mais alta a freqüência do clock e o número de

portas ativas no componente, maior a potência dissipada pelo componente.

Tempo de projeto é definido como o tempo requerido para se obter uma

implementação a partir da especificação funcional. O tempo de projeto é dependente

diretamente da metodologia de projeto adotada.

Time-to-market direciona o projeto com relação ao potencial de lucro, dado que

o lucro está relacionado à brevidade com que um produto é lançado no mercado e o

Page 31: Albano Portela Machado - UFPE

___________________________________________________________________

12

período de ausência de concorrência. Time-to-market pode ser definido como o total de

tempo gasto desde a concepção do projeto até a entrega do produto ao consumidor final.

Além do tempo de projeto, deve ser considerado também o tempo requerido para

realizar-se um estudo de marketing, definição da especificação a partir dos requisitos

dos usuários, fabricação, testes, distribuição e desenvolvimento de suporte de hardware

e software para fazer com que o produto seja usável.

1.6 Contribuições

Como visto anteriormente, a etapa de estimativas é de fundamental importância

na solução do problema de hardware/software co-design. A estimativa de métricas

possibilita explorar o espaço de projetos mais precisamente, e pode fornecer

informações relevantes que auxiliem a decidir onde implementar os subsistemas, isto é,

em hardware ou em software. Estimativas precisas são ainda mais importantes em

sistemas que executam automaticamente o particionamento de hardware e software.

Algumas destas métricas consideram os aspectos inerentes às implementações em

hardware e em software. Para este propósito, modelos de implementação de hardware e

de software devem ser desenvolvidos. Tais modelos não devem ser ambíguos. Portanto

o uso de modelos formais, que têm semântica bem definida, possibilita representar as

características dos sistemas. Métodos bem estabelecidos para análise qualitativa (e

verificação) e para análise quantitativa são muito importantes no projeto de sistemas

mistos de hardware e software.

Redes de Petri [50][59][60][65][72] é uma família de formalismos consolidada

adequada à modelagem e validação de sistemas concorrentes, dado que concorrência,

sincronização e conflito são naturalmente expressos por estes modelos.

Um modelo em redes de Petri foi proposto por Maciel [38] para representar o

fluxo de controle, bem como várias métricas e ferramentas de análise associadas. O

desenvolvimento de um modelo de fluxo de dados foi proposto por Monteiro[47].

Também utilizando redes de Petri, tal modelo permitiu uma integração com o modelo

Page 32: Albano Portela Machado - UFPE

___________________________________________________________________

13

de fluxo de controle, trazendo a possibilidade de análise conjunta, simulação, assim

como melhoria nos resultados das estimativas.

Os resultados obtidos até então para estimativas de área de hardware [38]

levaram em consideração a fidelidade. Este trabalho de dissertação, dentro do contexto

de um sistema de hardware/software co-design, tem como objetivo específico

desenvolver uma metodologia para realizar estimativas de área de hardware:

multiplexadores, unidades funcionais e unidades de armazenamento. Desta forma, foi

proposta a implementação de uma ferramenta para cálculo da estimativa da área de

implementação de hardware – um estimador que leve em consideração precisão e

fidelidade a um custo computacional aceitável, para possibilitar boas soluções de

projeto. Para tal fim, esta ferramenta utiliza uma especificação comportamental

traduzida para o modelo de fluxo de dados [47], utilizando redes de Petri temporizadas

[72].

1.7 Organização

Este trabalho está organizado como segue: o Capítulo 2 apresenta os trabalhos

relacionados e o estado da arte em estimativas em hardware/software co-design. O

Capítulo 3 introduz os conceitos de redes de Petri que serão utilizados no decorrer do

trabalho. Um modelo para a representação de fluxo de dados utilizando redes de Petri é

apresentado no Capítulo 4. No Capítulo 5 é apresentada a metodologia para a

estimativa de área de hardware utilizando o modelo de fluxo de dados em redes de Petri.

Quatro estudos de casos foram realizados para validar a metodologia proposta. Estes são

apresentados no Capítulo 6. Finalmente, o Capítulo 7 conclui o trabalho e sugere

possíveis caminhos a serem tratados em trabalhos futuros.

Page 33: Albano Portela Machado - UFPE

2 Trabalhos Relacionados

Este capítulo apresenta um conjunto de trabalhos relacionados à estimativa de área. Primeiro, são apresentados alguns formalismos utilizados para a representação da funcionalidade da especificação que são utilizados pelas ferramentas. Em seguida, são descritos diferentes algoritmos para realização de estimativa de área. Posteriormente, são apresentadas algumas ferramentas de co-design, considerando seu fluxo de tarefas, formatos internos e estimadores de área. Finalmente, é feita uma comparação entre estas ferramentas.

2.1 Modelos Intermediários

Projetistas de sistemas usam diferentes modelos em suas diversas metodologias

de projeto de hardware ou software [20]. Estes modelos podem ser classificados em

cinco categorias distintas: (1) orientada a estados; (2) orientada a atividades; (3)

orientada a estruturas; (4) orientada a dados; e (5) heterogêneos. Um modelo orientado

a estados, tal como máquinas de estados finitos, representa o sistema como um

conjunto de estados e um conjunto de transições entre eles, as quais são ativadas por

eventos externos ou internos. Um modelo orientado a estados é apropriado para

sistemas de controle, reativos, onde as interações do sistema é o aspecto mais

importante do mesmo. As máquinas de estados finitos concorrentes hierárquicos e a

maioria das lógicas são exemplos de modelos orientados a estados. Um modelo

orientado a atividades – grafo de fluxo de dados, grafo de fluxo de controle –

descrevem o sistema como o conjunto de atividades relacionadas por dados ou

dependências de execução. Este modelo é mais aplicado a sistemas transformacionais,

tais como sistemas de processamento de sinais digitais, onde dados sofrem um conjunto

de transformações. As álgebras de processo são membros desta classe. Usando um

Page 34: Albano Portela Machado - UFPE

___________________________________________________________________

15

modelo orientado a estrutura, tal como um diagrama de bloco, pode-se descrever os

módulos físicos do sistema e as interconexões entre eles. Diferentemente dos modelos

orientados a estados e atividades os quais refletem a funcionalidade do sistema, o

modelo orientado a estrutura dá enfoque principalmente na composição física do

sistema. Alternativamente, pode-se usar o modelo orientado a dados, tal como um

diagrama de entidade-relacionamento, quando é preciso representar o sistema como

uma coleção de dados relacionados por seus atributos. Este modelo seria mais adequado

para sistemas de informação, tais como banco de dados, onde a função do sistema é

menos importante que a organização dos dados. Finalmente, o projetista poderia usar

um modelo heterogêneo – que integraria muitas das características dos quatro modelos

prévios – sempre que ele precisasse representar uma variedade de diferentes visões em

um sistema complexo. Grafo de fluxo de dados e controle, program-state machine e as

redes de Petri são exemplos de modelos heterogêneos.

Atualmente várias ferramentas de co-design adotam uma linguagem de alto-

nível como formato de entrada [3][26][45][55]. Entretanto, tais ferramentas também

utilizam um formato interno para representar a funcionalidade do sistema [45][55].

Alguns dos formatos mais utilizados para a representação da funcionalidade dos

sistemas são máquinas de estados finitos, grafo de fluxo de dados e controle, álgebras

de processo e as redes de Petri.

2.1.1 Máquinas de Estados Finitos

Máquinas de estados finitos (FSMs1) são um mecanismo de modelagem bastante

difundido, principalmente pela diversidade de técnicas de análise e de síntese

disponíveis. FSMs são indicadas para representar o comportamento seqüencial de um

sistema. Contudo, por falta de suporte a hierarquia e paralelismo, a especificação de

sistemas complexos via FSMs ordinárias acarreta uma explosão do número de estados.

FSMs também não provêm suporte para sistemas que envolvem processamento de

1 Finite State Machines

Page 35: Albano Portela Machado - UFPE

___________________________________________________________________

16

dados. Uma máquina de estados finitos [21] pode ser definida por uma quíntupla FSM =

⟨ S, I, O, f : S × I→ S, h : S × I→ O ⟩, onde:

• S = {s1, s2, . . . , sj} é um conjunto finito de estados;

• I = {i1, i2, . . . , im} é um conjunto finito de entradas;

• O = {o1, o2, . . . , on} é um conjunto finito de saídas;

• f é a função do próximo estado, a qual determina o próximo estado em

função da entrada e do estado corrente.

• h é uma função de saída, a qual determina as saídas, também em função da

entrada e do estado corrente.

Note que cada FSM tem um estado que é distinguido como o estado inicial e um

conjunto de estados distinguidos como estados finais.

Diversas extensões foram propostas a FSMs, desde o suporte a dados até

hierarquias. FSMs extendidas (EFSMs2) [22] acrescentam uma via de dados, permitindo

que computações sejam realizadas nos estados e nas transições de estados, bem como a

associação de condições de disparo dependentes dos dados. FSMs concorrentes

hierárquicas (HCFSMs3) [16] suportam a decomposição de estados em sub-estados

concorrentes, formando uma hierarquia de máquinas. Um sistema com n processos,

cada qual com k estados, gera uma FSM com kn estados. A hierarquia facilita o

entendimento do modelo.

2.1.2 Grafos de Fuxo de Controle/Dados

O modelo de grafos de fluxo de controle e dados (CDFGs4) é um modelo

heterogêneo elaborado para combinar os conceitos de grafo de fluxo de controle

(CFGs5) [11] e grafo de fluxo de dados (DFGs6) [13].

2 Extended FSMs 3 Hierarchical Concurrent FSMs 4 Control/Data Flow Graphs 5 Control Flow Graphs

Page 36: Albano Portela Machado - UFPE

___________________________________________________________________

17

Um CFG representa as seqüências de processamento (tal como as FSMs),

estruturas de repetição e decisão. Através do CFG é possível analisar propriedades

comportamentais do sistema. Já o DFG representa os processamentos de dados que

ocorrem no sistema. Com isso é possível avaliar dependências de dados, por exemplo.

Uma outra vantagem de tal modelo é o fato de tanto a estrutura de controle do

sistema como suas vias de dados estarem representadas em um único modelo. Desta

forma, além das análises individuais sobre cada modelo, é possível avaliar propriedades

combinadas do modelo através de simulação.

2.1.3 Redes de Petri

O modelo em redes de Petri [50] é outro tipo de modelo heterogêneo,

especialmente definido para modelar especificação de sistemas concorrentes. O modelo

de redes de Petri consiste de um conjunto de lugares, um conjunto de transições e um

conjunto de fichas. Fichas residem nos lugares e circulam através da rede sendo

consumidas e produzidas quando uma transição dispara, determinando assim seu

comportamento. A adoção de modelo em redes de Petri traz diversas vantagens, entre

elas:

• podem modelar uma grande variedade de características de sistemas:

seqüência de ações, escolhas não-determinísticas, sincronização, exclusão

mútua e concorrência;

• às atividades do sistema podem ser atribuídas informações como duração,

prioridades, condições, etc;

• podem ser usadas para analisar propriedades úteis como segurança, liveness,

ausência de dead-lock, etc;

• ferramentas disponíveis permitem analisar e verificar propriedades

funcionais e não funcionais do sistema;

6 Data Flow Graphs

Page 37: Albano Portela Machado - UFPE

___________________________________________________________________

18

• técnicas de redução podem ser aplicadas para diminuir o custo

computacional das análises e verificações.

As redes de Petri são o formalismo adotado neste trabalho e serão descritas em

mais detalhes no Capítulo 3.

2.2 Algoritmos Usados em Estimativas de Área

A especificação de um sistema pode ser decomposta em vários módulos

funcionais, os quais podem ser implementados em hardware ou software. Neste trabalho

nos referiremos a uma determinada funcionalidade de um projeto como comportamento.

Assim para implementar determinado comportamento de uma especificação, três

componentes estruturais do caminho de dados serão necessários: unidades de

armazenamento, unidades funcionais e unidades de interconexão.

Diversos métodos para síntese de via de dados têm sido extensivamente

discutidos em [20]. Nesta seção discutiremos três heurísticas utilizadas na estimativa de

área: clique partitioning, left-edge e o force-directed. Descreveremos estas técnicas para

estimar o número e tipo destes componentes que implementam o comportamento de um

sistema. Assim, partimos de uma representação comportamental e chegamos a uma

representação estrutural.

2.2.1 Unidades de Armazenamento

As unidades de armazenamento são estruturas requeridas para armazenar valores

de dados representados por constantes, variáveis e vetores (i.e registradores e laches). A

estratégia mais simples assume que cada variável no comportamento deverá ser

implementada em um registrador separado ou memória. Todavia, tal implementação

pode ter um excessivo número de unidades de armazenamento, já que valores de

variáveis não são necessários durante toda execução do comportamento. É possível

minimizar o número de unidades de armazenamento fazendo o mapeamento de diversas

Page 38: Albano Portela Machado - UFPE

___________________________________________________________________

19

variáveis que não são usadas concorrentemente para o mesmo registrador ou memória.

Para determinar se duas variáveis são usadas concorrentemente, devemos considerar

seus correspondentes tempos de vida. O tempo de vida de uma variável é definido como

o intervalo de tempo entre sua definição (i.e., escrita na variável) e seu último uso (i.e.,

leitura do valor da variável) antes da próxima definição. O número de unidades de

armazenamento que será requerido em um projeto é igual ao número máximo de tempos

de vida das variáveis que se sobrepõem.

Uma vez que o tempo de vida das variáveis tenham sido computados, diversas

abordagens podem ser usadas para determinar o número de unidades de armazenamento

requeridas para implementar as variáveis.

2.2.1.1 Algoritmo Clique Partitioning

A abordagem clique partitioning pode ser usada para determinar o conjunto de

variáveis que poderiam ser mapeadas na mesma unidade de armazenamento. Um grafo,

G = (V, E), é derivado de um dado comportamento, no qual cada vértice vi ∈ V

representa unicamente uma variável vi e existe um arco ei,j ∈ E se e somente se vi e vj

podem ser armazenados na mesma unidade de armazenamento, isto é, o intervalo de

tempo de vida das mesmas não se sobrepõem. Um sub-grafo completo (um conjunto de

vértices em um grafo não dirigido em que existe uma aresta entre todos os pares de

vértices) ou clique de G representa a unidade de armazenamento para todas as variáveis

no sub-grafo. Para encontrar o número mínimo de unidades de armazenamento,

devemos particionar o grafo G em um número mínimo de cliques de tal forma que cada

vértice pertença a exatamente a um clique. Este problema é chamado clique-partitioning

[10].

Descreveremos brevemente a heurística proposta em [68] para resolver o

problema do clique-partitioning. A abordagem consiste de diversas interações, em cada

uma o par de nós com o maior número de vizinhos comuns é fundido em um único nó.

Arcos de outros nós no grafo para os dois nós fundidos são substituídos por outros arcos

para o nó fundido criado recentemente. Repetindo o processo de fusão de nós até não

restarem arcos no grafo resultará na criação de um conjunto de cliques. Cada clique

Page 39: Albano Portela Machado - UFPE

___________________________________________________________________

20

corresponde a uma unidade de armazenamento, que implementará as variáveis

pertencentes ao clique.

2.2.1.2 Algoritmo Left-Edge

Outra heurística para solução do problema clique partitioning baseia-se no

algoritmo left-edge [30] que foi proposto para minimizar o número de registradores em

REAL [35]. Dada uma lista de variáveis no comportamento e seus intervalos de tempos

de vida associados, o algoritmo primeiro ordena a lista de variáveis em ordem

ascendente dos tempos iniciais de seus tempos de vida. O algoritmo realiza diversos

passos sobre a lista ordenada, examinando os tempos de vida das variáveis na ordem em

que elas ocorrem na lista. Em cada passo, o algoritmo aloca um novo registrador e

atribui uma nova variável ao mesmo se o tempo de vida desta variável não se

sobrepõem com os tempos de vidas das variáveis já atribuídas naquele registrador. Estas

variáveis atribuídas são então eliminadas da lista ordenada de variáveis. O processo é

repetido até que todas as variáveis tenham sido atribuídas aos registradores.

Os métodos citados possibilitam maior estimativa de precisão em relação ao

número de unidades de armazenamento necessários ao comportamento do que

simplesmente assumindo uma unidade de armazenamento por variável. Todavia, esta

estimativa mais precisa é obtida ao custo de computação extra, necessária para ambos os

métodos apresentados acima.

2.2.2 Unidades Funcionais

As unidades funcionais são necessárias para implementar as operações (i.e

ALUs e comparadores). Para se estimar o número requerido de unidades funcionais, no

caso em que o comportamento já tenha sido escalonado em passos de controle, diversas

abordagens podem ser usadas.

2.2.2.1 Algoritmo Clique Partitioning

A abordagem do clique partitioning [68] envolve a construção de um grafo

similar ao apresentado para determinar o número de unidades de armazenamento. Cada

Page 40: Albano Portela Machado - UFPE

___________________________________________________________________

21

nó no grafo representa uma operação no comportamento. Um arco existe entre dois nós

no grafo se e somente se as operações correspondentes tem sido atribuídas a diferentes

passos de controle e existem unidades funcionais que podem realizar ambas as

operações. Os cliques em tal grafo representa o conjunto de operações que podem ser

executadas pela mesma unidade funcional. A heurística já descrita na Seção 2.2.1.1

determinará o número necessário de unidades funcionais.

2.2.2.2 Algoritmo Force-Directed

Se uma restrição de desempenho (como o número máximo de passos de

controle) é especificada para o comportamento, o número mínimo de unidades

funcionais requerida para implementar este comportamento pode ser determinado

usando o algoritmo force-directed [56]. O algoritmo realiza tentativas de distribuir

operações do mesmo tipo uniformemente em todos os passos de controle disponíveis.

Esta distribuição uniforme garante que unidades funcionais alocadas para realizar

operações em um passo de controle são usadas eficientemente em todos os outros

passos de controle, levando a uma alta utilização das unidades funcionais. Em cada

iteração, o algoritmo atribui exatamente uma operação não escalonada no passo de

controle, assim minimizando o número esperado de unidades funcionais necessárias ao

projeto. Depois do término do algoritmo, o número máximo de operações de um tipo

específico atribuído a qualquer passo de controle é o número de unidades funcionais

daquele tipo. Diferentemente do clique partitioning, a abordagem requer a amarração

das unidades funcionais, i.e., a atribuição de operações no comportamento às unidades

funcionais específicas. Tal mapeamento de operações a unidades funcionais é essencial,

pois nos possibilita determinar o número de interconexões necessárias entre as unidades

de armazenamento e unidades funcionais.

2.2.3 Unidades de Interconexão

As unidades de interconexão são requeridas para interconectar unidades de

armazenamento às unidades funcionais (i.e multiplexadores e barramentos). Esta seção

Page 41: Albano Portela Machado - UFPE

___________________________________________________________________

22

mostra como o algortimo clique partitioning pode ser utilizado para determinar o

número de interconexões de um dado comportamento.

2.2.3.1 Algoritmo Clique Partitioning

Depois que todas as variáveis e operações no comportamento tenham sido

mapeadas para unidades de armazenamento e funcionais, podemos estimar o número de

unidades de interconexão, tais como barramentos e multiplexadores.

Primeiro, o conjunto de conexões entre as unidades de armazenamento e

funcionais no projeto é determinado. Por exemplo, se o comportamento tem a atribuição

A := B + C, então existe a conexão da unidade de armazenamento na qual B e C foram

atribuídas à unidade funcional que implementa a operação de adição, e outra conexão da

unidade funcional para a unidade de armazenamento na qual A está confinada.

Uma vez que as conexões tenham sido determinadas, um modelo de grafo

similar ao apresentado para determinar o número unidades de armazenamento e

funcionais é construído. Cada vértice no grafo representa a conexão entre duas

unidades. Um arco existe entre dois vértices se e somente se as conexões

correspondentes não são usadas concorrentemente para transferência de dados no

mesmo passo de controle. Cada clique no grafo representa uma unidade de

interconexão. Todas as conexões cujos vértices representativos estão no clique são

atribuídos ao mesmo multiplexador ou barramento.

2.3 Ferramentas de Co-Design

Esta seção apresenta alguns ambientes importantes de projeto de sistemas de

hardware/software. Nosso objetivo é fornecer uma visão geral de diferentes

metodologias de hardware/software co-design do ponto de vista de estimativa de área.

Page 42: Albano Portela Machado - UFPE

___________________________________________________________________

23

2.3.1 Vulcan II

O método de projeto de co-síntese de hardware/software desenvolvido por De

Micheli et al. [27] na Universidade de Stanford é descrito na Figura 2.1. A

funcionalidade ao nível de sistema é especificada com HardwareC como um conjunto

de processos interativos.

A descrição em HardwareC é compilada e gera um modelo baseado em um

grafo de fluxo de dados, o qual é particionado em uma arquitetura composta de um

microprocessador, um componente de hardware (que pode ser posteriormente dividida

em vários componentes) e uma memória local.

Descrição em Hardware C

ModeloSistema(grafo)

Programa(grafo-fluxo)

Interface(grafo)

ASIC(grafo)

Programa C

Implementação - sistema misto Simulação

Particionamento

Figura 2.1: O sistema VULCAN II

O algoritmo de particionamento utilizado no sistema VULCAN II se baseia na

versão mais simplificada do algoritmo Min cut, a qual foi adaptada para o contexto de

hardware/software co-design [25][27]. O algoritmo inicia com uma implementação em

hardware e tenta mover para software objetos elegíveis (operações determinísticas ou

blocos de atribuições com operações determinísticas), cuja movimentação minimize a

função objetivo e que satisfaça às restrições de desempenho. Uma vez que a

movimentação é realizada, os próximos objetos a serem considerados serão aqueles

mais relacionados ao objeto movido anteriormente, isto é blocos ou operações

sucessoras.

Page 43: Albano Portela Machado - UFPE

___________________________________________________________________

24

A função objetivo utilizada em VULCAN II incorpora as métricas de área de

hardware, área de memória para armazenamento de programa e dados, largura de

barramento, taxa de transferência de dados, custo de sincronização e tempo entre

algumas operações. A abordagem de Stanford não provê suporte para análise qualitativa

nem permite verificação formal.

O cálculo aproximado dos componentes de hardware é determinado através da

abordagem bottom up, estimando os recursos necessários para implementar operações

individuais. O tamanho do hardware é computado através do tamanho do atributo de

uma operação, todavia não inclui o custo do hardware para circuitos de controle.

2.3.2 LYCOS

O sistema LYCOS (LYngby CO-Synthesis) é um ambiente de co-design que

permite a implementação de sistemas digitais em uma arquitetura constituindo de um

microprocessador e ASIC com comunicação via memória mapeada em E/S [45][46].

Uma visão geral de co-design pode ser vista na Figura 2.2. O sistema aceita descrições

em C e VHDL, as quais são mapeadas para um formato interno baseado em CDFG7 –

grafos comunicantes de fluxo de controle e dados. Com base neste formato interno, a

funcionalidade da especificação inicial é representada através de uma rede hierárquica

de unidades funcionais com semântica bem definida, as quais se comunicam via

variáveis compartilhadas segundo protocolo assíncrono.

O particionamento em hardware/software é realizado considerando-se BSB’s

(Basic Scheduling Blocks) [46], os quais podem ser representados por um DFG (Data

Flow Graph), um loop, um condicional ou uma chamada de procedimento. Para cada

BSB é estimado um conjunto de métricas, incluindo as métricas de área de hardware,

quantidade de memória para dados e programas, tempo de execução em hardware e

software, bem como área e tempo das funções de comunicação, tanto do lado do

hardware como do lado do software. Esta estimativa é feita por ferramentas de análise e

de escalonamento integradas ao ambiente.

7 Control /Data Flow Graphs

Page 44: Albano Portela Machado - UFPE

___________________________________________________________________

25

CDFG´s

C VHDL

Tradutor Tradutor

Assembly VHDL

Geração de código

Interfaces

Bibl. Interfaces

Particionamento

Análise Est. Pot.

Escalon./Aloc.

Atribuição

Bibl. Funções

Síntese

Figura 2.2: Fluxo de tarefas em LYCOS

A estimativa de área de hardware considera a área do caminho de dados e a área

do controlador para cada BSB. Com o objetivo de computar o hardware para

implementação da descrição, primeiro um chip deve ser escolhido de uma biblioteca de

dispositivos. Segundo, recursos devem ser pré-alocados. Uma alocação extensa (grande

número de unidades funcionais) permite explorar eventuais paralelismos, mas, como a

área do controle é ac = achip – adp8, isto estabelece limites de quanta funcionalidade pode

ser implementada no hardware. De outra forma, uma pequena alocação (baixo número

de unidades funcionais) aumenta o número de BSB os quais podem ser movidos para

hardware, mas isto limita a exploração de paralelismo.

Embora o uso de alocação prévia permite considerar a possibilidade de recursos

compartilhados, ele não provê um método formal para computar a área de controle nem

para estimar possíveis compartilhamentos de recursos e área de registradores.

2.3.3 Co-Design Studio

O ambiente de hardware/software Co-Design Studio foi proposto por Cavalcante

[8] e estava voltado ao projeto de sistemas embarcados de tempo real crítico. Esta

abordagem considerava uma arquitetura multi-processada e consistia de uma ferramenta

de especificação que usa rede de Petri temporizada hierárquica, um algoritmo de

8 ac – controler área, achip – total chip area, adp – data-path area

Page 45: Albano Portela Machado - UFPE

___________________________________________________________________

26

escalonamento que leva em consideração deadlines e relações de exclusão, e um

algoritmo de particionamento (ver Figura 2.3).

As razões para uso de redes de Petri como formalismo de especificação é a sua

capacidade para análise de sistemas, especificação e síntese de hardware. Algumas

estruturas adicionais de gráficos foram incorporadas dentro da notação de redes de Petri

para facilitar o processo de modelagem. Todavia, estas estruturas são especificadas

usando elementos de redes de Petri padrões.

O método de particionamento é dividido em pré-particionamento e

particionamento do sistema. A fase de pré-particionamento analisa as restrições de

tarefas e relações entre tarefas com o objetivo de reduzir o tempo de execução movendo

estas tarefas para hardware. O sistema de particionamento move tarefas para hardware

considerando a exploração do paralelismo. Todavia, este framework não provê métodos

de estimativas formais para computar tempo de execução, área, custo de comunicação,

possibilidade de compartilhamento de recursos e grau de exclusão mútua.

Choice of Architecture

Process Scheduling

Pre- Partitioning

System Specification Architecture Selection

refinement

Time Wizard

Constraint Analysis Consistency / Profiling

System Partitioning

Success Hardware Synthesis Software Compilation

Change Analyses

Partitioning Loop

Failure

Figura 2.3: A ferrameta Co-Desing Studio

2.3.4 SpecSyn

O sistema SpecSyn consiste num ambiente composto por várias ferramentas que

permitem o projeto de sistemas digitais conforme o paradigma SER (Specify-Explore-

Refine) no qual o projetista especifica o sistema a ser projetado, explora as várias

alternativas de projeto e refina a solução mais adequada para um nível suportado pelas

Page 46: Albano Portela Machado - UFPE

___________________________________________________________________

27

ferramentas de síntese convencionais (hardware e software) [21]. Uma visão geral do

ambiente SpecSyn pode ser vista na Figura 2.4. O ambiente aceita descrições

comportamantais em VHDL ou specCharts, a qual é baseada em StateChart [6] e resulta

VHDL comportamental a nível de sistema, a partir da qual pode ser gerado código C e

código VHDL (níveis mais baixos de abstração) pela utilização de ferramentas de

síntese de software e de síntese de alto nível (hardware), respectivamente.

A especificação é traduzida para um modelo intermediário chamado SLIF no

qual as ferramentas operam. A abordagem do SpecSyn consiste de três tarefas:

alocação, particionamento e transformação.

Durante a fase de alocação são definidos os componentes da arquitetura de

implementação. Processadores e ASICs são alocados para o comportamento (partes

computacionais), memórias para variáveis que devem ser armazenadas e canais de

comunicação para barramentos. O passo de particionamento mapeia agora estes objetos

para os componentes da arquitetura fonte alocada. Diferentes algoritmos de

particionamento estão integrados no SpecSyn, entre os quais clustering, group

migration, simulated annealing e clique partitioning. Estimadores rápidos produzem

uma variedade de métricas de sistema para cada partição, incluindo desempenho de

hardware e software, taxa de bits, tamanho de hardware, pinos, tamanhos de programa

de software e dados. Para estimativa de parâmetros de hardware tais como tempo de

execução, ciclo de clock e área, uma biblioteca de projeto é fornecida. Tal biblioteca

contém informação sobre o número, tipo, delay e área dos componentes. Depois do

particionamento, a especificação inicial é refinada automaticamente incluindo alocação

de memória de variáveis compartilhadas e inseridas interface de protocolos.

Pré-Estimador

Refinamento

SLIF

Especificação funcional VHDL ou SpecChart

Descrição funcional system-level VHDLSíntese SW

Síntese HW

Síntese SW

Síntese HW

Estimador on-line

Transformação

Particionamento

Alocação

Estimador on-line

Transformação

Particionamento

Alocação

Estimador on-line

Transformação

Particionamento

Alocação

Figura 2.4: Ambiente de projeto SpecSyn

Page 47: Albano Portela Machado - UFPE

___________________________________________________________________

28

2.4 Conclusões

Neste capítulo foi apresentado alguns dos modelos intermediários utilizados em

metodologias de hardware/software co-design, com destaque a máquinas de estados

finitos, grafo de fluxo de controle/dados e redes de Petri. Em seguida abordamos alguns

algoritmos usados em estimativas de área, geralmente atuando em modelos de grafo de

fluxo de controle/dados: clique partitioning, left-edge e force-directed. Finalmente

citamos algumas ferramentas de co-design.

A metodologia proposta de estimativa de área de hardware atua sobre o

formalismo das redes de Petri. O uso do método formal (com semântica bem definida)

além da facilidade de modelagem permitem realizar análises quantitativas e qualitativas.

O modelo intermediário (grafo marcado) utilizado nesta abordagem é independente de

linguagem de descrição, possibilitando análises a um baixo custo computacional, o que

simplifica as análises de diversas alternativas de projetos.

Observamos que poucas ferramentas de Hardware/Software Co-Design utilizam

estimativas de área para o particionamento em hardware e software (Vulcan II, Lycos,

SpecSyn) e que poucos ambientes de Hardware/Software Co-Design apresentam

modelos intermediários baseados em métodos formais. As estimativas de área obtidas

por estes ambientes de Hardware/Software Co-Design são pouco precisas.

Page 48: Albano Portela Machado - UFPE

3 Redes de Petri

Este capítulo apresenta os principais conceitos de redes de Petri relevantes para este trabalho. Primeiro, são apresentados os componentes do modelo e sua notação gráfica. Em seguida, são mostrados as propriedades que podem ser capturadas a partir do modelo, os métodos de análise e as subclasses de redes de Petri. Finalmente, são apresentadas as redes de Petri temporizadas, o formalismo utilizado no desenvolvimento deste trabalho.

Atualmente os sistemas modernos estão cada vez mais paralelos (objetivando

melhoria do desempenho – maior utilização de tempo de CPU) e distribuídos

(otimizando o custo, o sistema é distribuído em computadores com menor poder de

processamento). Eles precisam ser analisados sob os pontos de vista qualitativos e

quantitativos [38]. Análise qualitativa busca propriedades como ausência de deadlocks,

a ausência de overflows (lugares não-limitados), ou a presença de exclusão mútua no

uso de recursos compartilhados. Seu objetivo principal é avaliar as características do

sistema modelado. Análise quantitativa busca informações sobre desempenho (e.g.

throughput, tempo de conclusão médios) ou nível de utilização (e.g. comprimento

médios de filas, taxas de utilização). Em outras palavras, a análise quantitativa procura

quantificar informações sobre desempenho, confiabilidade, disponibilidade, etc, do

sistema a ser modelado.

Redes de Petri (RdPs) são uma técnica de especificação formal, bem

estabelecida, que leva em conta uma representação gráfica e matemática, e têm métodos

poderosos que permitem aos projetistas realizarem análises qualitativas e quantitativas

[50][60]. São capazes de representar naturalmente concorrência, não-determinismo,

sincronização, restrições de tempo, dependência de controle e dados, etc. Redes de Petri

são o formalismo mais tradicional para tratar estas propriedades de sistemas, pois elas

não podem ser descritas facilmente em formalismos tradicionais, desenvolvidos para

Page 49: Albano Portela Machado - UFPE

___________________________________________________________________

30

análises de sistemas “clássicos” com comportamento seqüencial. Mais precisamente,

redes de Petri podem ser consideradas como um formalismo gráfico, especialmente

apropriado para modelagem e análise de sistemas dinâmicos de eventos discretos

(SDED), os quais apresentam paralelismo e o comportamento é caracterizado por

fenômenos de sincronização e compartilhamento de recursos. Sistemas

multiprocessados e distribuídos; redes de comunicação e arquiteturas de fluxo de dados;

sistemas de manufatura; são apenas poucos exemplos de SDED, para os quais

abordagens tradicionais se apresentam inconvenientes e inadequadas.

Redes de Petri-Básicas, todavia, não são completas para o estudo de

desempenho de sistemas desde que nenhuma suposição é feita sobre a duração das

atividades do sistema [72]. Diversas extensões ao conceito de tempo têm sido feitas às

redes de Petri. O tempo tem sido considerado associado ao disparo das transições e/ou

lugares de redes de Petri. Na abordagem utilizada neste trabalho, os tempos de disparos

estão associados às transições da rede. No começo dos disparos, fichas são removidas e

armazenadas nas transições, provenientes de seus respectivos lugares de entrada. Uma

descrição de “estado” deve levar em consideração a distribuição de fichas nos lugares,

bem como (disparos) transições da rede, e o “comportamento” da rede temporizada

(representada pelo seu espaço de estados) pode ser bem diferente que o conjunto de

marcações alcançáveis de uma rede marcada [72]. Em particular, redes marcadas não-

limitadas podem corresponder a redes temporizadas limitadas, bem como redes

temporizadas não-limitadas podem corresponder à redes marcadas limitadas (exemplos

são dados em [71])

3.1 Redes de Perti Marcadas

Uma rede de Petri ( veja Figura 3.1) é um tipo particular de grafo direcionado,

ponderado, bipartido, com um estado inicial chamado de marcação inicial, m0.

Consistindo de dois tipos de nós, chamados de lugares e transições, onde arcos provêm

dos lugares para as transições e das transições para os lugares. Na representação gráfica,

Page 50: Albano Portela Machado - UFPE

___________________________________________________________________

31

lugares são desenhados como círculos e transições como barras ou retângulos. Arcos

são rotulados com seus pesos (inteiros positivos), onde um arco k-ponderado pode ser

interpretado como um conjunto de k arcos paralelos. Rótulos para pesos unitários são

usualmente omitidos. Uma marcação (estado) atribui a cada lugar um inteiro não

negativo. Se uma marcação atribui a um lugar p um inteiro não negativo k, dizemos que

p é marcado com k fichas. Uma marcação é ilustrada por meio de k pontos pretos

(fichas) em um lugar p.

(a ) (b ) Figura 3.1: Redes de Petri representando: (a) atividades paralelas determinísticas (uma rede de Petri marked graph); (b) computação dataflow.

Em modelagem usamos o conceito de condições e eventos. Lugares representam

condições e transições representam eventos. Uma transição (um evento) tem um certo

número de lugares de entrada e saída representando as pré-condições e as pós-

condições de um evento, respectivamente. A presença de uma ficha em um lugar é

interpretada como uma condição verdadeira associada aquele lugar. Em outra

interpretação, k fichas são colocadas ao lugar para indicar que k itens de dados ou

recursos estão disponíveis.

Formalmente, uma rede de Petri Place/Transition N é uma quádrupla N =

(P, T, A, ω) onde:

P é um conjunto finito, não vazio, de lugares,

T é um conjunto finito, não vazio, de transições,

P ∩ T = {}; i.e. lugares e transições são conjuntos disjuntos,

A é um conjunto de arcos direcionados com conexões entre lugares com

transições e transições com lugares, A ⊆ (P × T) ∪ (T × P),

Page 51: Albano Portela Machado - UFPE

___________________________________________________________________

32

ω é uma função ponderada a qual associa um inteiro positivo “peso” para cada

arco da rede,

ω: A→ {1,2, ...}.

Usualmente, Inp(p), Out(p), Inp(t) e Out(t) denotam o multi conjuntos de

transições de entrada e saída de um lugar p, o multi conjuntos de lugares de entrada e

saída de uma transição t, respectivamente.

Uma rede de Petri Place/Transition marcada é um par M = (N, mo) onde:

N é uma rede de Petri generalizada, N = (P, T, A, ω),

mo é uma função de marcação inicial, mo : P→ {0,1, ...} que associa um número

não-negativo, chamado de fichas à cada lugar da rede.

Seja m: P→ {0,1, ...} uma função chamada de marcação de uma rede N = (P, T,

A, ω). Uma transição t está habilitada pela marcação m sse (se somente se) para cada

lugar de entrada de t (p ∈ Inp(t)), contém ao menos ω(p,t) fichas, ou seja m(p) ≥ ω(p,t).

O conjunto de todas as transições habilitadas por m é denominada por En(m). Cada

transição habilitada por uma marcação m pode disparar. Quando uma transição t

habilitada dispara, fichas são removidas dos lugares de entrada de t em números

correspondentes ao peso dos arcos de entrada, e semelhantemente, os pesos dos arcos de

saída de t determina o número de fichas adicionados aos lugares de saída (veja Figura

3.2). Um disparo de uma transição habilitada altera a avaliação da função de marcação.

(a)

d isparando t]t2

2

32

2

3

(b )

t

Figura 3.2: Disparo da transição t e evolução da marcação

Uma transição sem nenhum lugar de entrada é chamada transição source, e

aquela sem nenhum lugar de saída é chamada transição sink. Observe que uma transição

source está incondicionalmente habilitada, e que o disparo de uma transição sink

consome, mas não produz fichas.

Page 52: Albano Portela Machado - UFPE

___________________________________________________________________

33

Em algumas situações de modelagem, uma mistura de concorrência (atividades

paralelas) e conflito (um lugar tem duas (ou mais) transições de saída) pode ocorrer.

Esta situação é chamada de confusão. Dois tipos de confusão são mostrados Figura 3.3.

Figura 3.3(a) mostra uma confusão simétrica, onde dois eventos t1 e t2 são concorrentes

e ao mesmo tempo estão em conflito com o evento t3. Figura 3.3(b) mostra uma

confusão assimétrica, onde t1 é concorrente com t2 mas estará em conflito com t3 se t2

disparar primeiro.

Figura 3.3: Dois tipos de confusão. (a) confusão simétrica. (b) confusão assimétrica.

3.2 Propriedades Comportamentais

Sistemas distribuídos e concorrentes são difíceis de gerenciar e entender. Muitos

enganos e erros são freqüentes durante o ciclo de projeto.

Uma forma de se adquirir maior confiabilidade nestes sistemas pode ser pela

análise/verificação formal de propriedades. Erros podem ser detectados próximo do

momento em que são introduzidos, reduzindo a sua propagação para estágios

subseqüentes do projeto.

Este trabalho apresenta apenas algumas propriedades qualitativas – aquelas

relevantes para a metodologia desenvolvida. Dois tipos de propriedades são

consideradas: aquelas que dependem e as que são independentes da marcação inicial. As

primeiras são referidas como propriedades comportamentais e as últimas propriedades

estruturais. Nesta seção estudaremos as propriedades comportamentais básicas e as

respectivas técnicas de análise.

Page 53: Albano Portela Machado - UFPE

___________________________________________________________________

34

3.2.1 Alcançabilidade (reachability)

Alcançabilidade – indica a possibilidade de atingirmos uma determinada

marcação pelo disparo de um número finito de transições, a partir de uma marcação

inicial [51][58]. Em uma rede de Petri marcada M = (N, mo), o disparo de uma transição

ti pode alterar a marcação da rede, conforme as regras anteriormente descritas. Uma

marcação mj é diretamente alcançável (ou tk-alcançável) de uma marcação mi sse existir

uma transição tk ∈ Em(mi), tal que

m (p ) (p ,t ) , se p In p ( ) - O u t ω ∈i k k k− t ( t ) ,

∀ ∈(p P ) m (p ) =j m (p ) ( t ,p ) , se p O u t(t ) - In p (t ) , i k k k+ ω ∈m (p ) (p ,t ) ( t ,p ), se p In p (t ) O u t(t ) ,i k k k k− ω + ω ∈ ∩m (p ), q u a lq u er o u tra a ltern a tiv a .i

Além do mais, uma marcação mj é alcançavel de uma marcação mi (mi• mj) sse

existir uma seqüência de marcações (mi0 mi1 ... mik) tal que mi = mi0, mj = mik, e mij é

diretamente alcançável de mij-1 para 1 ≤ j ≤ k.

O conjunto de todas as marcações alcançáveis na rede M = (N, m0) com a

marcação inicial m0 é denotado por M(M). O conjunto de todas as seqüências de

disparos possíveis de mo em uma rede M é denotado por L(M).

3.2.2 Limitação (boundedness)

Uma rede marcada M é k-limitada ou simplesmente limitada (bounded) se

existir um inteiro positivo k, tal que cada marcação no conjunto M(M) atribua no

máximo k fichas para cada lugar da rede

∃ (k > 0) ∀ (m ∈ M(M)) ∀ (p ∈ P) m(p) ≤ k.

Uma conseqüência óbvia desta definição é que uma rede marcada M é limitada

sse seu conjunto de alcançabilidade M(M) é finito. Uma rede de Petri M é dita segura

(safe) se ela for 1-limitada.

Page 54: Albano Portela Machado - UFPE

___________________________________________________________________

35

Uma marcação mj cobre uma marcação mi (mj • mi) sse mj ≠ mi, mj(p) ≥ mi(p)

para todo p ∈ P, e mj(p) > mi(p) implica que mi(p) > 0. Segue imediatamente a partir

desta definição que se mj • mi, então En(mj) = En (mi). Além do mais, se σ é a

seqüência de transições disparáveis que transformam mi em mj, então σ pode também

ser disparado em mj criando ainda outra marcação mk tal que mk • mj e (usando a

notação de vetor) mk – mj = mj – mi. Então, σ pode ser disparada em mk etc. Concluindo,

se duas marcações mi e mj são alcançáveis a partir da marcação inicial m0 na rede M =

(N, m0) e se mj • mi, então a rede M é ilimitada.

Considerando a rede na Figura 3.4(a) com a marcação m0 = (1, 0, 0, 0) (i.e. uma

ficha em p1 e nenhuma ficha em p2, p3 e p4). O disparo de t2 permite-nos alcançar a

marcação m1 = (0, 0, 1, 1). Disparando t4, m2 = (1, 0, 1, 0) é alcançado. Repetindo η

vezes a seqüência t2t4 a marcação mη = (1, 0, η, 0) é alcançada. Então a marcação de p3

pode ser arbitrariamente alta. Na prática, a capacidade do elemento físico representado

por p3 deve ser finita, então um overflow deveria aparecer. O lugar p3 é dito ilimitado

(unbounded). Atenção deve ser dada à situação acima porque, não-limitação pode ser

uma situação patológica (sistema gerando recursos de forma infinita). Sistema limitado

(i.e. todos os lugares limitados) é uma boa propriedade comportamental.

Figura 3.4: Comportamento patológico qualitativo:(a) Uma rede de Petri não limitada, apresenta deadlock (não-viva), não-reversível; (b) Aumentando a marcação inicial (e.g. m

0 (p5) = 1) a rede que

é viva, entra em deadlock.

Page 55: Albano Portela Machado - UFPE

___________________________________________________________________

36

3.2.3 Liveness

O conceito de liveness está proximamente relacionado à ausência de deadlocks

em sistemas operacionais. Nesta seção discutiremos o conceito de liveness em função

das possibilidades de disparo de transições.

Deadlock em uma rede de Petri é a impossibilidade do disparo de qualquer

transição da rede. Para analisarmos este conceito observemos a rede de Petri da Figura

3.4(a). Disparando-se a transição t1 a partir da marcação m0 , atinge-se uma marcação

onde nenhuma transição pode ser disparada: um deadlock total foi alcançado. Uma rede

marcada M é dita ser livre de deadlock (deadlock-free) (i.e. para qualquer marcação

alcançável) se ao menos uma transição pode sempre ser disparada. Uma condição

suficiente de ausência de deadlock é vivacidade (liveness). Uma transição t é

potencialmente disparável, dada uma marcação m, se existir uma seqüência de disparos

de transições σ, levando a marcação m’ na qual t é habilitada. Uma transição é live

(viva) se ela for potencialmente disparável em todas as marcações acessíveis. Em outras

palavras, uma transição é live se ela nunca perder a possibilidade de disparo (i.e. de

realizar alguma atividade). Uma rede de Petri M é viva se todas as transições forem

vivas.

Um comportamento paradoxo em sistemas concorrentes é o seguinte: à primeira

vista pode ser intuitivamente aceito que aumentando a marcação inicial (e.g.

aumentando o número de recursos) de uma rede marcada “ajuda” a torná -la viva. Uma

rede viva, visto na Figura 3.4(b) mostra que acrescentando o número de recursos pode

levar a situações de deadlock: adicionando uma ficha a p5, t2 pode ser disparada e um

deadlock é alcançado.

Liveness é uma propriedade fundamental para sistemas encontrados no mundo

real, no entanto muitas vezes é muito “caro” observar esta propriedade em alguns

sistemas de grande porte. Assim sendo, há uma tendência de relaxarmos esta condição e

adotarmos níveis de liveness para as transições e, conseqüentemente, para as redes [50].

Uma transição ti de uma rede M é denominada:

Page 56: Albano Portela Machado - UFPE

___________________________________________________________________

37

1. morta (dead) ou nível n0, se esta transição nunca for disparada em qualquer

seqüência de L(M), ou seja, se não existir alguma marcação M’ ∈ M(M) tal

que M’ habilita ti;

2. N1 – live, se ti pode ser disparada pelo menos uma vez em alguma seqüência de

L(M);

3. N2 – live, se ti pode ser disparada pelo menos k vezes em alguma seqüência de

disparo de L(M);

4. N3 – live, se ti aparece um número infinito de vezes em alguma seqüência de

paro de L(M);

5. N4 – live ou simplesmente live, se ti é N1 – live para todas as marcações de

M(M) .

Uma rede de Petri M é classificada como Ni – live se todas as transições na rede

são Ni – live. Ressaltamos ainda que se uma rede é N4 – live então esta rede também é

N3 – live que implica ser N2 – live e N1 – live. Obviamente, este princípio não se aplica

para o nível N0.

3.2.4 Reversibilidade (reversibility)

Outra propriedade interessante é a reversibilidade. Uma rede de Petri M = (N,

m0) é reversível se for sempre possível retornar à marcação inicial (i.e. m0 é alcançável

de qualquer outra marcação acessível). A rede mostrada na Figura 3.4(a) não é

reversível. De fato se existir um deadlock total proveniente de alguma marcação

alcançável, a rede não pode ser reversível. A recíproca não é verdadeira, como é visto

na Figura 3.5(g), onde a rede não é reversível, no entanto é viva, então livre de

deadlock.

Vivacidade, limitação e reversibilidade são apenas três diferentes “boas”

propriedades comportamentais independentes entre si que podem ser interessantes em

Page 57: Albano Portela Machado - UFPE

___________________________________________________________________

38

um sistema dinâmico. Figura 3.5 mostra exemplos de oito possíveis combinações destas

três propriedades.

Figura 3.5: Exemplos de Redes de Petri contendo todas as possíveis combinações de propriedades: B (bounded ), L (live), R (reversible). (a) t1 dead, p1 ilimitado. (b) t1 dead, p1 ilimitado. (c) p2 ilimitado. (d) t1, t2, t3, t4 não vivas. (e) p1 ilimitado. (f) t1 dead. (g) marcação inicial não será mais alcançável. (h) apresenta todas as propriedades desejáveis1.

3.3 Métodos de Análise

Na seção anterior apresentamos algumas propriedades comportamentais

relacionadas às redes de Petri. Dedicamos esta seção aos métodos de análise [50][51]

[58] das redes de Petri. Estes métodos serão utilizados para a análise das propriedades

apresentadas anteriormente. Os métodos de análise das redes de Petri podem ser

classificados dentro dos seguintes três grupos: análise baseada na árvore de cobertura,

1 Fonte obtida em [50]

Page 58: Albano Portela Machado - UFPE

___________________________________________________________________

39

os métodos baseados na equação fundamental, os métodos baseados na análise da

estrutura e as técnicas de redução [50].

O primeiro método envolve a enumeração das marcações alcançáveis ou

marcações cobertas. Este método sofre do problema da explosão do espaço de estados.

A análise pela avaliação da equação fundamental e das técnicas de reduções são

poderosas, mas em muitos casos são aplicadas somente em subclasses de redes ou

situações especiais.

Nesta seção descreveremos detalhadamente um método baseado na exploração

do espaço de estados que se aplica aos sistemas com um número infinito de estados (o

método da árvore de cobertura [50]), no qual se baseia este trabalho de dissertação.

Dada uma rede de Petri marcada M = (N, m0), a partir da marcação inicial m0,

podemos obter tantas marcações “novas” quanto o número de transições habilitadas.

Para cada marcação nova, podemos novamente chegar a mais marcações. Este processo

resulta em uma árvore de marcações. “Nós” representam marcações geradas a partir de

mo (a raiz) e seus sucessores, e cada arco representa um disparo de transição, o qual

transforma uma marcação em outra.

A árvore da Figura 3.6(b), crescerá infinitamente se a rede for ilimitada. Para

manter a árvore finita, será introduzido um símbolo especial ù , que pode ser pensado

como “infinito”.

A árvore de cobertura de uma rede de Petri marcada M = (N, mo) é construída

seguindo o seguinte algoritmo:

1. rotule a marcação mo como raiz e marque como “novo”;

2. enquanto existirem marcações “novas” , faça o seguinte:

a. selecione uma nova marcação m;

b. se m é idêntica a uma marcação no caminho da raiz até m, então marque m

como “velha” e vá para uma nova marcação;

c. se nenhuma transição estiver habilitada por m, marque como “ dead-end”;

Page 59: Albano Portela Machado - UFPE

___________________________________________________________________

40

d. enquanto existirem transições habilitadas por m, faça o seguinte para cada

transição habilitada t por m:

I. obtenha a marcação m’ que resulta ao dispararmos a transição t a

partir de m;

II. no caminho da raiz até m, se existir uma marcação m” tal que m’(p) ≥

m”(p) para cada lugar p e m’ ≠ m”, i. e., m’ cobre m”, então

sobrescreva m’(p) com ω para cada p tal que m’(p) > m”(p);

III. introduza m’ como um nó, desenhe um arco com rótulo t de m para

m’ e marque m’ como “novo”.

Como exemplo considere a rede da Figura 3.6(a). Para a marcação inicial mo =

(1, 0, 0), as duas transições t1 e t3 estão habilitadas. Disparando t1 transforma-se mo em

m1 = (0, 0, 1), o qual é um nó dead-end, desde que nenhuma transição está habilitada

por m1. Agora, disparando t3 de mo resulta em m’3 = (1, 1, 0), a qual cobre mo = (1, 0, 0).

Portanto, a nova marcação é m3 = (1, ù , 0), onde duas transições t1 e t3 estão novamente

habilitadas. Disparando t1 atinge-se m4 = (0, ù , 1), a partir do qual t2 pode ser disparada,

resultando no nó “velho” m5 = m4. Disparando t3 de m3 resulta em no nó “velho” m6 =

m3. Assim, temos a árvore de cobertura mostrada na Figura 3.6(b).

Algumas das propriedades que podem ser analisadas usando-se a árvore de

cobertura C são [50]:

I. uma rede M = (N, mo) é limitada, ou seja, o conjunto de todas as possíveis

marcações alcançáveis é finita sse ù não aparece em nenhum nó rotulado em C;

II. uma rede M = (N, mo) é segura sse somente 0’s e 1’s aparece nos nós rotulados

em C;

III. uma transição t é dead sse ela não aparece como um arco rotulado em C.

Para uma rede de Petri limitada, a árvore de cobertura é chamada de árvore de

alcançabilidade, pois ela contém todas as marcações possíveis. Neste caso, todos os

problemas de análise discutidos na Seção 3.2, podem ser resolvidos pela árvore de

alcançabilidade.

Page 60: Albano Portela Machado - UFPE

___________________________________________________________________

41

O grafo de cobertura, visto na Figura 3.6(c), de uma rede M = (N, mo) é um

grafo direcionado G = (V, E). Seu conjunto de nós V é o conjunto de todos os nós

distintos (rotulados) na árvore de cobertura e o conjunto de arcos E é o conjunto de

arcos rotulados com uma transição tk representando todos os possíveis disparos de cada

transição. Para uma rede de Petri limitada, o grafo de cobertura é referido como grafo

de alcançabilidade, porque o conjunto de vértices V se torna o mesmo do conjunto de

todas as possíveis marcações acessíveis.

(a ) (b ) (c ) Figura 3.6: (a) Uma rede de Petri marcada. (b) A árvore de cobertura da rede. (c) O grafo de cobertura da rede.

3.4 Subclasses de Redes de Petri

Uma rede de Petri M = (N, mo), onde N = (P, T, A, ω), é dita ordinária quando

todos os pesos dos arcos são iguais a 1. Todas as redes consideradas nesta seção são

ordinárias. Note que redes de Petri ordinárias e não-ordinárias têm o mesmo poder de

modelagem. A única diferença é a conveniência da modelagem.

Subclasses de redes são definidas pela introdução de restrições às redes de Petri.

Restringir o modelo pode tornar mais fácil estudar seu comportamento [15]. Esta seção

apresenta um conjunto de restrições estruturais em redes ordinárias que aumentam o

poder de decisão pela restrição do poder de modelagem. Redes Place/Transition podem

ser divididas em diversas classes. Cada classe tem um certo poder de modelagem e suas

próprias propriedades. A Figura 3.7 mostra o poder de modelagem e o inter-

relacionamento das subclasses [14][50][58].

Page 61: Albano Portela Machado - UFPE

___________________________________________________________________

42

3.4.1 State Machine

State machine (SM) é uma rede de Petri que cada transição t tem exatamente um

lugar de entrada e exatamente um lugar de saída, i.e.,

|Inp(t)| = |Out(t)| = 1 ∀ t ∈ T.

States machines podem representar conflito (um lugar que é entrada de mais de

uma transição), mas, como as transições não podem ter mais que um lugar de entrada

e/ou saída, elas não podem representar sincronização e concorrência.

3.4.2 Marked Graph

Marked graph (MG) é uma rede de Petri que cada lugar p tem exatamente uma

transição de entrada e exatamente uma transição de saída, i.e.,

|Inp(p)| = |Out(p)| = 1 ∀ p ∈ P.

Marked graphs podem representar sincronização e concorrência, mas, como os

lugares não podem ter mais que uma transição de entrada e/ou saída, eles não podem

modelar conflito [9][50][52]. Marked graphs têm sido profundamente estudado porque

modelam um grande número de sistemas práticos e pela simplicidade de análise de

propriedades.

3.4.3 Redes Free-Choice

Free-choice (FC) é uma rede de Petri que cada arco proveniente de um lugar é

um único arco de saída ou é um único arco de entrada para uma transição, i.e.,

∀ p ∈ P, |Out(p)| ≤ 1 ou Inp(Out(p)) = {p}; equivalentemente,

∀ p1, p2 ∈ P, Out(p1) ∩ Out(p2) ≠ ∅ ⇒ |Out(p1)| = |Out(p2)| = 1.

Esta classe permite a modelagem de concorrência, sincronização e conflitos. Em

redes free-choice, existe um único lugar de entrada para as transições em conflito,

Page 62: Albano Portela Machado - UFPE

___________________________________________________________________

43

conseqüentemente o conflito é controlado [29] pela escolha livre de qual transição

disparar.

3.4.4 Redes Extended Free-Choice

Extended free-choice (EFC) é uma rede tal que

Out(p1) ∩ Out(p2) ≠ ∅ ⇒ Out(p1) = Out(p2) ∀ p1, p2 ∈ P.

Esta definição estende a definição prévia de redes extended free-choice, é

evidente que cada rede free-choice é também uma extended free-choice.

3.4.5 Redes Asymmetric Choice

Redes asymmetric choice (AC) – também conhecida como redes simples – é

uma rede de Petri que

Out(p1) ∩ Out(p2) ≠ ∅ ⇒ Out(p1) ⊆ Out(p2) ou Out(p1) ⊇ Out(p2) ∀ p1, p2 ∈ P.

As estruturas de redes de Petri mostrada na Figura 3.7 são as estruturas chaves

que caracteriza estas subclasses. É fácil reconhecer as principais estruturas de SMs e

MGs mostrada na Figura 3.7(a) e (b) respectivamente. FCs são generalizações das

estruturas comuns a ambas SMs e MGs. Elas permitem a estrutura de conflito de SM e a

estrutura de sincronização de MG, mas exclui a estrutura mostrada na Figura 3.7(c),

onde Out(p1) = Out(p2) = {t1, t2}. Extend free-choice (EFCs) permite a estrutura

mostrada na Figura 3.7(c), mas não aquela mostrada na Figura 3.7(d), onde Out(p1) =

{t1} ⊆ Out(p2) = { t1, t2}. Redes assymetric choice (AC) permite a estrutura mostrada

na Figura 3.7(d), mas não a estrutura mostrada na Figura 3.7(e), onde Out(p1) = {t1, t2}

e Out(p2) = {t2, t3}.

Em suma, SMs não admite sincronização, MGs não admite conflitos, FCs não

admite confusão, e ACs permite confusão assimétrica (Figura 3.7 (b)) mas não permite

confusão simétrica (Figura 3.7 (a)). Suas relações no diagrama de Venn é mostrado na

Figura 3.7 (f).

Page 63: Albano Portela Machado - UFPE

___________________________________________________________________

44

Figura 3.7: Estruturas principais caracterizando redes de Petri e seu diagrama Venn2.

3.5 Redes de Petri Temporizadas

Diversos conceitos de redes de Petri temporizadas têm sido propostos atribuindo

tempo às transições ou aos lugares da rede. Nesta seção definiremos o modelo de

Zuberek (Timed Petri Net) onde tempo (duration) é atribuído às transições. A seguir

veremos brevemente outros modelos de rede: Place Timed Petri Nets (com tempo

atribuído aos lugares) e Time Petri Net (intervalo de tempo associado às transições).

3.5.1 Modelo de Zuberek

Seguindo o modelo de Zuberek [72], vamos estender a rede de Petri N como

sendo uma quíntupla N= (P, T, A, ω, B) onde:

P, T, A e ω foram definidos na secção 3.1,

B é um conjunto (possivelmente vazio) de arcos inibidores, B ⊆ P × T , e A e B

são conjunto disjuntos.

Usualmente Inh(t) denota o multi conjuntos dos lugares inibidores de t. Um arco

inibidor conecta um lugar a uma transição e é representado por uma linha tracejada

terminando com um pequeno círculo (ao invés de uma ponta de flecha) na transição. O 2 Fonte obtida em [50].

Page 64: Albano Portela Machado - UFPE

___________________________________________________________________

45

arco inibidor desabilita a transição quando no lugar de entrada tem uma ficha e habilita

a transição quando no lugar de entrada não tem ficha e a marcação do outro lugar de

entrada habilita a transição.

A relação de “lugar compartilhado free-choice” é de fato uma relação de

equivalência no conjunto de transições T, portanto ele determina uma partição de T

dentro do conjunto de classes equivalentes free-choice denotado por Free(T) = {T1, T2,

..., Tk}.

Uma função de seleção de uma marcação m em uma rede de Petri N é uma

função g: T→ {0, 1, ...} tal que:

• existe uma seqüência de marcações intermediárias (mi1, mi2 ... mik) e uma

correspondente seqüência de transições σ=(ti1, ti2 ... tik) tal que m = mi0, e tij

∈ En (mij-1) para todo 1 ≤ j ≤ k, onde

• o conjunto de transições habilitadas por mik é vazio, e

• para todo t ∈ T, g(t) é igual ao número de ocorrências de t na seqüência σ.

O conjunto de todas as funções de seleção da marcação m é denominado por Sel(m).

Em redes de Petri temporizadas, cada transição t leva um tempo positivo para

disparar. Quando a transição t está habilitada, um disparado pode ser iniciado pela

remoção das fichas dos lugares de entrada de t. Durante o tempo de disparo, as fichas

permanecem “dentro” da transição t, e então os disparos terminam pela adição de fichas

em cada lugar de saída de t. Se uma transição é habilitada enquanto ela dispara, um

novo, disparo independente pode ser iniciado.

Em redes temporizadas, cada disparo é iniciado no mesmo instante de tempo no

qual ela está habilitada, embora alguma transição habilitada não dispare (como, por

exemplo, as transições em classes equivalentes free-choice).

Page 65: Albano Portela Machado - UFPE

___________________________________________________________________

46

Semântica de passos (step semantics) [66] é uma estratégia de disparo que leva

em consideração o disparo de um conjunto máximo de transições paralelas habilitadas.

Desta forma, o conjunto de alcançabilidade é reduzido.

Em redes de Petri temporizadas [70] o tempo de disparo das transições são

determinísticos (ou constantes), isto é, existe um número não-negativo atribuído a cada

transição da rede que determina a duração dos disparos das transições. Dado que a

ausência de memória (memoryless) não se aplica para tais redes, a descrição do estado

deve explicitamente incluir a “história” dos disparos.

Uma rede de Petri temporizada ΓΓ é uma tupla ΓΓ = (M, c, f) onde:

M é uma rede de Petri free-choice marcada, M = (N, m0), N = (P, T, A, ω, B),

c é uma função de escolha que atribui uma probabilidade “ free-choice” a cada

transição da rede de tal maneira que

f é uma função de tempo de disparo que atribui um valor real não negativo f(t)

para cada transição t da rede (f: T → R⊕ , onde R⊕ denota o conjunto dos números reais

não negativos).

O estado de uma rede de Petri temporizada é definido por uma tupla de funções:

uma delas descreve a distribuição de fichas nos lugares; a segunda, a distribuição de

fichas nas transições (disparadas) – indicando o número de vezes que a transição é

disparada em um passo; e a terceira é a função de “tempo de disparo remanescente” a

qual provê uma “história” das transições disparadas.

O estado s de uma Rede de Petri temporizada ΓΓ é uma tupla s = (m, n, r) onde:

m é uma função de marcação, m : P → {0, 1, ...},

n é uma função de grau de disparo, n : T → {0, 1, ...},

r é uma função de tempo de disparo remanescente que atribui o tempo de

disparo restante para cada disparo independente (se algum) de uma transição. Se o grau

de disparo de uma transição t for igual a k, n(t) = k, a função de tempo de disparo

Page 66: Albano Portela Machado - UFPE

___________________________________________________________________

47

restante r(t) é um vetor de índice k denominado por r(t)[1], r(t)[2], ..., r(t)[k]; r é uma

função parcial e é não-definida para aquelas transições t que n(t) = 0.

Um estado inicial si de uma rede ΓΓ é uma tupla si = (mi, ni, ri) onde ni é a função

de seleção do conjunto Sel(m0), ni ∈ Sel(m0). A função de tempo de disparo

remanescente, ri, é igual ao tempo de disparo f(t) para todas aquelas transições t nas

quais ni > 0

e a marcação mi é definida como

Uma rede de Petri free-choice pode ter diferentes estados iniciais (a depender da

probabilidade de distribuição das fichas entre as transições free-choice)

Um estado sj = (mj, nj, rj) é diretamente alcançável (ou gk- alcançável) do estado

si = (mi, ni, ri), sse as seguintes condições são satisfeitas:

onde

O Estado sj o qual é gk-alcançável de si é então obtido pela terminação dos

“próximos” disparos – isto é, aqueles disparos nos quais o tempo de disparo

remanescente é o menor deles; este tempo é denominado por hi e é chamado do tempo

Page 67: Albano Portela Machado - UFPE

___________________________________________________________________

48

de armazenamento ou tempo de residência curta do estado si – (6,7), atualizando a

marcação da rede (5), e então iniciando novos disparos (se possível) o qual corresponde

à função de seleção gk do conjunto Sel(m’ i) (1, 2, 3 e 4).

Um estado sj é (geralmente) alcançável de um estado si se existir uma seqüência

de estados diretamente alcançáveis do estado si para o estado sj. Também, um conjunto

S(ΓΓ) de estados acessíveis é definido como o conjunto de todos os estados de uma rede

ΓΓ os quais são alcançáveis dos estados iniciais da rede ΓΓ.

Um grafo de estado G de uma rede de Petri free-choice temporizada limitada ΓΓé

um grafo direcionado rotulado G(ΓΓ) = (V, D, h, q) onde:

V é um conjunto de vértices os quais é igual ao conjunto de estados alcançáveis

da rede ΓΓ, V = S(ΓΓ),

D é o conjunto de arcos direcionados, D ⊂ V × V, tal que (si, sj) está em D sse sj

é diretamente alcançável a partir de si,

h é uma função rotuladora de vértices que associa o tempo de armazenamento

do estado si = (mi, ni, ri) para cada si ∈ S(T), h :V→ R⊕ ,

q é uma função rotuladora de arcos que atribui a probabilidade das transições do

estado si para sj a cada arco (si, sj) no conjunto D.

Figura 3.8: Rede de Petri temporizada ΓΓ1

Para fixarmos os conceitos definidos nesta seção, tomaremos como base a rede

temporizada Γ1 (Figura 3.8) onde a função f (função de tempo de disparo) atribui os

seguintes valores às transições: f(t1) = 10, f(t2) = 5, f(t3) = 1, f(t4) = 2. A atribuição dos

Page 68: Albano Portela Machado - UFPE

___________________________________________________________________

49

valores pela função de escolha c é a seguinte: c(t1) = 0.6, c(t2) = 0.4. A derivação do

conjunto S(ΓΓ1) é dada na Tabela 3.1.

A seguir descrevemos o conjunto de estados alcançáveis para a rede da Figura

3.8 de acordo com a Tabela 3.1. Inicialmente a marcação inicial m0 é dada por 5p1 (lugar

5 com cinco fichas). Esta marcação habilita as transições t1 e t2, estas são disparadas em

paralelo, estratégia conhecida como semântica de passos. O estado s1 = (m1, n1, r1) é o

estado inicial (si) e é definido a seguir. A função do grau de disparo n1 é dada por n1(t1)

= 3 e n1(t2) = 2 (assumimos que a transição t1 foi disparada três vezes e t2 duas vezes,

poderíamos ter outra distribuição das fichas, i.e, estados iniciais distintos). Pela

marcação m1 não temos fichas nos lugares (todas as fichas em p1 foram consumidas de

acordo com a regra definida para mi vista anteriormente); A função de tempo de disparo

remanescente para o estado s1 é definido por: r1(t1)[1] = 10, r1(t1)[2] = 10, r1(t1)[3] = 10,

r1(t2)[1] = 5, r1(t2)[2] = 5 (no estado inicial a duração da transição é definida por f(t)).

Tabela 3.1: O conjunto de estados alcançáveis em ΓΓ1.

m i n i m'i g k

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

t 1 [1] = 10; t 1 [2] = 10; t 1 [3] = 10; t 2 [1] = 5; t 2 [2] = 5;

t 1 [1] = 5; t 1 [2] = 5; t 1 [3] = 5; 1 0 0 0 3 0.60t 4 [1] = 2; 0 1 0 0 4 0.40

t 1 [1] = 3; t 1 [2] = 3; t 1 [3] = 3; t 1 [4] = 10;

t 1 [1] = 3; t 1 [2] = 3; t 1 [3] = 3; t 2 [1] = 5;

5 0 0 0 0 1 0 3 0 t 1 [1] = 7; t 3 [1] = 1; 1 0 0 0 1 0 0 0 0 66 0 0 0 1 1 0 0 0 t 1 [1] = 6; 6 0 1 0 1 0 0 0 0 77 0 1 0 1 0 0 0 0 não definido, n i (t i ) = 08 0 0 0 0 0 1 1 0 t 2 [1] = 2; t 3 [1] = 1; 1 0 0 0 1 0 0 0 0 99 0 0 0 1 0 1 0 0 t 2 [1] = 1; 1 0 0 1 1 0 0 0 0 10

10 0 0 1 1 0 0 0 0 não definido, n i (t i ) = 0

g k = Ø

0 0 1 0 5

4 0 0 0 0 3 0 0 1 3 0 3 0 0 0 0 1 0 8

3 0 0 0 0 4 0 0 0 3

2 0 0 0 0 3 0 0 1 2

r i

3 2 0 0 0 0 0 1

s i h(s i )

5 0 0 2 01 0 0 0 0

deadlock

deadlock

q (s i , s j )

1.00

1.00

1.00

s j

2

1 0 0 0

0 3 0 0

Agora definiremos os próximos estados da rede. Vimos que o estado sj = (mj, nj,

rj) é diretamente alcançável (ou gk- alcançável) do estado si = (mi, ni, ri) se as

condições (1), (2), (3), (4), (5) e (6) forem atendidas. De acordo com a condição (7) hi é

definido como o tempo mínimo entre os tempos de disparos remanescentes das

transições t1 e t2, que neste caso é igual a 5. Pela condição (6) di(t2) = 2 (t2 apresenta

Page 69: Albano Portela Machado - UFPE

___________________________________________________________________

50

dois elementos do vetor com tempo de disparo remanescente iguais a hi) e di(t1) = 0 (os

elementos do vetor de t1 apresentam tempo de disparo remanescente superiores a hi).

Assim a transição t2 finaliza o disparo e o estado intermediário m’ 1 igual a 2p3 é

alcançado (5). Por (1) a transição t4 (gk(t4)=1) é disparada uma vez alcançando o estado

s2 = (m2, n2, r2). A função do grau de disparo (ni) é dada por (3), sendo que n2(t1)

continua igual a 3 (esta transição ainda não conclui nenhum de seus disparos nem foram

gerados novos disparos para esta transição), n2(t2) = 0 (transição concluiu todos os seus

disparos) e n2(t4) = 1 (foi gerado um novo disparo). A marcação m2 é igual a 0 para

todos os lugares, condição (2); A função de tempo de disparo remanescente é definido

por (4): r2(t1)[1] = 5, r2(t1)[2] = 5, r2(t1)[3] = 5 (aqui decrementamos h(s1) em r1) e

r2(t4)[1] = 2 (como é um novo disparo é igual a f(t)). Agora definimos novamente o

valor para hi, e assim sucessivamente.

3.5.2 Outros Modelos

Em uma rede PTPN (Place Timed Petri Nets) [38] uma ficha pode estar

disponível ou indisponível. Na marcação inicial todos as fichas estão na condição

disponível. Uma transição t estará habilitada para ser disparada, se e somente se, cada

lugar de entrada da mesma contiver fichas suficientes e disponíveis considerando o peso

dos arcos. A transição dispara tão logo ela esteja habilitada. O disparo consiste na

remoção das fichas dos lugares de entrada da transição e na colocação de um número de

fichas nos lugares de saída de acordo com o peso dos arcos. Após o disparo, uma ficha

permanece indisponível no lugar durante um intervalo de tempo, logo após este

intervalo ela se torna disponível.

Time Petri Nets [38] são extensões de redes de Petri nas quais a informação de

tempo é expressa por intervalos (dmin, dmax) e é associado às transições. Uma transição tj

é disparável no tempo x, se e somente se, ela estiver continuamente habilitada durante o

intervalo (x, dmin) em x. Uma transição disparável pode disparar a qualquer tempo entre

dmin ≤ x ≤ dmax. Uma transição disparável deve disparar no tempo x se ela estiver

continuamente habilitada durante o intervalo (x, dmax) em x.

Page 70: Albano Portela Machado - UFPE

___________________________________________________________________

51

3.6 Conclusões

Redes de Petri são uma família de técnicas de especificação formal bem

estabelecida, largamente difundida e adequada à modelagem de sistemas contendo

atividades concorrentes. RdPs fornecem uma representação matemática do sistema

modelado, permitindo que sejam realizadas verificações e análises de suas propriedades.

Além disso, uma notação gráfica permite a visualização dos componentes do modelo,

contribuindo para o entendimento do mesmo.

Neste capítulo apresentamos uma introdução a redes de Petri com o objetivo de

facilitar o entendimento dos modelos utilizados para a realização de estimativas de área

de hardware. Mostramos algumas das principais propriedades que um bom modelo

baseado neste formalismo deve apresentar como: alcançabilidade, limitação, liveness e

reversibilidade. Em seguida expomos os métodos de análise e algumas subclasses de

redes de Petri e finalmente discutimos as redes de Petri temporizadas, onde foi

formalizado o modelo de Zuberek (Timed Petri Nets), mais adequado (modela

naturalmente) à metodologia da estimativa de área quando comparados com outros

modelos temporizados (Time Petri Nets e Place Timed Petri Nets).

Page 71: Albano Portela Machado - UFPE

4 Modelo Intermediário

Neste capítulo faz-se uma apresentação dos modelos intermediários: modelo de fluxo de dados e modelo de fluxo de controle. Ambos os modelos são apoiados em redes de Petri (RdP) temporizadas. Aqui é feita uma apresentação da linguagem de programação occam, seguida de uma descrição breve do modelo de fluxo de controle, o qual representa a ordem real das ações de uma especificação. Finalmente é feita uma descrição detalhada do modelo de fluxo de dados, o qual permite a análise de dependência de dados entre processos paralelos, seguida do método de tradução de uma especificação em occam para o mesmo.

4.1 Introdução

Dois modelos distintos em Redes de Petri foram desenvolvidos para representar

o comportamento de uma aplicação a ser modelada: os modelos de fluxo de controle e

dados. O modelo de fluxo de controle permite uma representação do fluxo de controle

de uma especificação, isto é, a representação de uma combinação de processos

paralelos, seqüências, condicionais e repetitivos. O modelo de fluxo de dados foi

desenvolvido com o objetivo de capturar dependência de dados desta especificação.

Estes modelos podem ser usados independentemente ou de forma conjunta para

a computação de métricas como: tempo de execução, dependência de dados, estimativa

de recursos, etc. Além disso, eles podem ser utilizados para a realização de simulações.

Ambos os modelos foram originalmente concebidos para traduzir uma entrada

especificada em occam, mas outras linguagens, como C/C++, também podem ser

consideradas. Estes modelos possibilitam a computação de métricas e propriedades

qualitativas com o uso cooperativo de ferramentas de análise estrutural e

comportamental de redes de Petri.

Page 72: Albano Portela Machado - UFPE

___________________________________________________________________

53

4.2 Linguagem de Programação Occam

A linguagem de programação occam [32] é derivada de CSP [31], projetada para

expressar algoritmos concorrentes, possibilitando a descrição de aplicações através de

coleções de processos. Cada processo de uma aplicação descreve o comportamento de

um aspecto particular da implementação. Como esta linguagem foi concebida de CSP,

uma técnica de descrição algébrica, ela tem uma semântica precisa e bem definida e

permite transformações de programas.

O conjunto de occam (processos primitivos e combinadores) considerado neste

trabalho é descrito em formato BNF:

P:: = SKIP — STOP — x:=e

— ch?x — ch!e

— IF(c1p1, ...,cnpn) | ALT(g1p1, ...,gnpn)

— SEQ(p1, ..., pn) | PAR(p1, ..., pn)

— WHILE(cP)

VAR x:P — CHAN ch:P

BOX (p1, ..., pn) | CON(p1, ..., pn)

Os processos mais simples de occam são: a atribuição, a ação de entrada

(input), a ação de saída (output), processos SKIP e STOP. SKIP, STOP e x:=e

representam um nop (no operation), deadlock e uma atribuição, respectivamente. ch?x e

ch!e descrevem ações de comunicação de entrada e saída. IF(c1p1, ...,cnpn) e ALT(g1p1,

...,gnpn) são combinadores condicionais determinísticos e não-determinísticos. SEQ(p1,

..., pn) e PAR(p1, ..., pn) representam combinadores seqüenciais e paralelos,

respectivamente. WHILE(cP) repesenta uma iteração (while loop). VAR x:P e CHAN

ch:P são declarações de variáveis e canais. Este subconjunto de occam foi estendido

para considerar dois novos construtores: BOX e CON [38], os quais não têm nenhum

semântico, são apenas anotações úteis para as fases de classificação e clustering do

sistema PISH[4] de hardware/software co-design, desenvolvido pelo grupo de

Page 73: Albano Portela Machado - UFPE

___________________________________________________________________

54

engenharia de computação da UFPE. Um processo dentro de um construtor BOX não é

dividido e seu custo é analisado como um todo. O construtor CON é uma anotação para

processos de controle.

Occam obedece um conjunto de leis algébricas[32] as quais definem a sua

semântica. Por exemplo, as leis PAR(p1, p2)= PAR(p2, p1) e SEQ(p1, p2, ..., pn) =

SEQ(p1 SEQ( p2, ..., pn)) definem a simetria do combinador PAR e a associatividade do

combinador SEQ, respectivamente. A Figura 4.1 mostra um exemplo de uma

especificação em occam.

4.3 Modelo de Fluxo de Controle

Esta seção apresenta o modelo em redes de Petri desenvolvido para representar

o fluxo de controle de uma especificação em occam. Este modelo foi proposto em [38] e

sua descrição detalhada pode ser encontrada neste trabalho.

CHAN OF INT ch1, ch2:PAR INT x, y, z: SEQ x := 0 Z := 0 WHILE x < 10 SEQ ch1 ! x ch2 ? y x := x + 1 z := y + 2 INT x, y: SEQ x := 0 WHILE x < 10 SEQ ch1 ? x IF x > 0 y := x + 1 TRUE y := 0 ch2 ! y

Figura 4.1: Exemplo de especificação em occam

Page 74: Albano Portela Machado - UFPE

___________________________________________________________________

55

Aqui daremos uma visão sintética deste modelo, já que o foco principal deste

trabalho está baseado no modelo de fluxo de dados. Informações detalhadas sobre o

modelo e suas métricas podem ser encontradas em [39][40][41][42][43][44].

Este modelo utiliza uma RdP temporizada [72] para representar uma

especificação em occam. Transições representam ações da especificação original.

Lugares são usados para conectar ações na ordem em que elas foram originalmente

descritas. Construtores condicionais têm uma função de probabilidade associada a cada

execução do desvio.

x 0:=

x x+1:= y x+ 1:= y 0:=

z y+2:=

y 0:=

(x<10)

(x<10)

(x<10)

ch1 !x

ch2?y

ch1?x

d loop

d loop

epar

d ifd if

ch2!y

x 0:=

Figura 4.2: Modelo do fluxo de controle para a especificação da Figura 4.1

Nesta classe de rede, uma duração é associada a cada transição. O consumo das

marcas (fichas) dos lugares de entrada da transição ocorre instantaneamente, assim que

todas as pré-condições são atendidas. Em seguida, o disparo da transição ocorre e, ao

Page 75: Albano Portela Machado - UFPE

___________________________________________________________________

56

final do tempo preconizado, são geradas as pós-condições. A associação entre os

componentes da linguagem e os componentes da rede é mostrada a seguir:

Lugares: Os lugares são responsáveis pela conexão entre as ações, representadas

nas transições, fixando a ordem da execução das mesmas. O modelo prevê conflitos e

fusões, ou seja, um lugar pode pertencer ao conjunto de pré-condições ou pós-condições

de mais de uma transição ao mesmo tempo. Desta forma, permite-se modelar o

comportamento da escolha determinística (IF), não determinística (ALT) e do laço

(WHILE).

Transições: A cada transição são associadas informações sobre o número e o

tipo das operações realizadas, variáveis e constantes utilizadas, duração da operação e

prioridade.

A Figura 4.2 apresenta o modelo de fluxo de controle (modelo intermediário em

redes de Petri) a partir da tradução de uma especificação em occam (Figura 4.1).

4.4 Modelo de Fluxo de Dados

Esta seção apresenta o modelo intermediário em redes de Petri [47]

desenvolvido para representar o fluxo de dados de um sistema, com a finalidade de

capturar dependências de dados [44][48]. Este modelo representa as várias seqüências

de operações que produzem, modificam ou consomem dados. A tradução é realizada de

maneira a refletir o maior grau de paralelismo interno possível aos processos, já que a

ordem real das operações está representada no modelo de fluxo de controle.

É importante deixar claro que o modelo permite a representação do fluxo de

dados de processos de maneira independente da linguagem de especificação original. A

linguagem occam é sempre citada nos exemplos apenas pelo fato de a mesma ser

utilizada dentro do contexto do sistema PISH [4]. Este modelo permite uma integração

com o modelo de fluxo de controle, trazendo a possibilidade de análise conjunta do

sistema, simulação, assim como uma melhoria nos resultados das estimativas.

Page 76: Albano Portela Machado - UFPE

___________________________________________________________________

57

Além disso, RdPs são uma técnica de especificação formal bem estabelecida,

com diversas ferramentas de análise disponíveis. Um modelo apoiado nesta técnica

possibilita outros tipos de análise, além da dependência de dados, como tempo de

execução, custo de comunicação, balanceamento de carga, exclusão mútua etc. Este

trabalho de dissertação foi baseado neste modelo para o desenvolvimento de técnicas de

estimativas do número de registradores, unidades funcionais e multiplexadores.

4.4.1 Componentes da Rede

Do ponto de vista estrutural, o modelo faz um mapeamento entre os objetos da

descrição e os componentes de uma RdP.

Lugares: Cada lugar da rede representa um valor, seja ele uma constante, uma

variável ou resultado de uma expressão. Nos casos dos literais, cada vez que um deles

ocorre numa descrição, um lugar é acrescentado à rede para representá-lo. Em relação

às variáveis, é adotada uma estratégia de renomeamento. Sempre que ocorre uma

atribuição a uma variável, é criado um lugar para representar o seu novo valor. Todas as

referências futuras (para leitura) a essa variável são realizadas sobre esse novo lugar.

Finalmente, o valor retornado por uma expressão também é expresso por um lugar.

Transições: As transições podem modelar dois grupos distintos de objetos. O

primeiro grupo é composto por expressões (aritméticas, lógicas, relacionais, binárias e

booleanas). O segundo grupo é formado por operadores e construtores presentes na

linguagem de especificação occam. São considerados os operadores de atribuição e

comunicação, além dos construtores SEQ, PAR, IF, ALT e WHILE.

Arcos: O sentido do fluxo dos dados através da rede é dado pelos arcos. Eles

representam tanto a utilização (de um lugar para uma transição) como a geração (de

uma transição para um lugar) de novos valores pelas operações representada nas

transições do modelo.

Fichas: As fichas modelam a presença de um valor em um dado momento. Se

um lugar tem uma ficha, significa que o valor representado por aquele lugar está

Page 77: Albano Portela Machado - UFPE

___________________________________________________________________

58

disponível para ser utilizado pela operação que o segue. Quando é disparada, a transição

consome aquela ficha e o efeito semântico é da indisponibilidade do valor.

Deve-se frisar que, apesar de modelar a existência e a presença de valores, o par

lugar/ficha não se prende a valores específicos. Ele se refere apenas ao fato de que um

valor qualquer associado àquele lugar está disponível para ser utilizado no sistema.

Além de representar valores, os lugares ainda têm uma outra função dentro do

modelo. Existem lugares que fazem parte dos modelos dos construtores, como os

lugares que marcam o início e o fim de um processo, por exemplo:

Lugar inicial: O lugar inicial sempre precede uma transição de início de

processo. A função deste lugar é alimentar todos os demais lugares que representam

literais e variáveis recém-declaradas, que têm um valor inicial determinado. A presença

de uma ficha nesse lugar habilita o funcionamento do processo.

Lugar final: O lugar final sucede uma transição de fim de processo. Durante a

execução de um processo, todos os valores gerados no processo vão sendo transportados

através da rede, até chegarem a um ponto onde não serão mais necessários. A transição

de fim consome todas as fichas desses lugares e gera uma ficha no lugar final. A

presença de uma ficha nesse lugar indica que o processo foi executado completamente.

4.4.2 Método de Tradução

Esta seção descreve o processo de tradução do fluxo de dados de uma

especificação em occam para o modelo de redes de Petri. Para cada tipo de construção

diferente, é exibida uma definição informal das convenções adotadas no processo de

tradução. Adiante é exibido o resultado completo da tradução de uma especificação.

Antes, porém, torna-se necessário introduzir os conceitos que foram adotados na

caracterização do tipo de rede adotado no modelo. Foram feitas restrições em algumas

das construções do formalismo, simplificando o modelo de fluxo de dados. Conforme já

foi visto no Capítulo 3, Seção 3.4, quanto mais restrito for o modelo de RdP adotado,

mais simples são os resultados das análises.

Page 78: Albano Portela Machado - UFPE

___________________________________________________________________

59

O primeiro destes conceitos é o de rede livre de conflitos9. Uma rede é dita livre

de conflitos se não existir nenhum lugar que seja pré-condição de mais de uma

transição:

Definição 4.1 – Rede livre de conflitos: Seja N = (P, T, I, O) uma RdP. N é

uma rede livre de conflitos sse (I(ti) ∩ I(tj)) = {}, ∀ ti, tj ∈ T, ti ≠ tj, denotado CF(N).

Uma rede é dita livre de fusões10 se não existe nenhum lugar que seja pós-

condição de mais de uma transição:

Definição 4.2 – Rede livre de fusões: Seja N = (P, T, I, O) uma RdP. N é uma

rede livre de fusões sse (O(ti) ∩ O(tj)) = {}, ∀ ti, tj ∈ T, ti ≠ tj, denotado MF(N).

Em seguida, temos a definição da rede livre de laços11. Entretanto, antes da

caracterização de uma rede livre de laços, torna-se necessário definir uma relação de

precedência entre transições:

Definição 4.3 – Relação de precedência: Seja N = (P, T, I, O) uma RdP, e

uma relação • ⊆ T × T. Sejam ainda ti, tj ∈ T. • é definida como uma relação de

precedência sobre N da seguinte forma: ti • tj ⇔ (O(ti) ∩ I(tj)) ≠{} ∨ ∃ tk ∈ T | ti • tk

∧ tk • tj.

Definição 4.4 – Rede livre de laços: Seja N = (P, T, I, O) uma RdP. N é uma

rede livre de laços sse t • t, ∀ t ∈ T, denotado LF(N).

A seguir define-se o modelo adotado. A rede do fluxo de dados é uma rede

limitada, livre de conflitos, fusões e laços.

Definição 4.5 – RdP de fluxo de dados: Uma RdP do modelo de fluxo de

dados (RdPd) é uma rede N = (P, T, I, O), onde temos CF(N), MF(N) e LF(N).

Um outro conceito utilizado no contexto do modelo do fluxo de dados é o de

sub-rede.

9 Conflict-free 10 Merging-free 11 Loop-free

Page 79: Albano Portela Machado - UFPE

___________________________________________________________________

60

Definição 4.6 – Sub-rede: Sejam N = (P, T, I, O) e N’ = (P’, T’, I’, O’ ) RdPs.

N é dita uma sub-rede de N ‘ sse P ⊆ P’, T ⊆ T’, I ⊆ I’, O ⊆ O’, onde N ⊆ N’.

O código occam mostrado na Figura 4.1 é utilizado como exemplo único para a

definição de todos os construtores. Para cada construtor apresentado, uma parte do

código é traduzida para seu equivalente no modelo do fluxo de dados.

Neste exemplo, existem dois processos que se comunicam através de canais. A

finalidade principal não é mostrar a análise da dependência de dados em si, mas o

método de tradução, uma vez que o exemplo contém praticamente todos os construtores

suportados pelo modelo (a menos do combinador ALT). Além disso, ele não contém

variáveis do tipo vetor, nem processos replicados que poderiam sobrecarregar

visualmente o modelo.

As regras de tradução serão apresentadas a seguir, levando em consideração

uma descrição em occam de um processo Pi. Todos os lugares da rede do processo têm

um prefixo pi conectado ao seu nome. Da mesma forma, todas as transições têm um

prefixo ti.

O processo de tradução gera uma rede de Petri limitada marked graph (ver

Capítulo 3). Assim, o número de arcos de entrada de cada lugar é igual ao numero de

arcos de saída daquele lugar, que é igual a um, ou seja, #I(p) = #O(p) = 1, para cada

lugar p, contudo os lugares start e end de cada processo têm #I(p) = #O(p) = 0,

respectivamente.

4.4.2.1 Processo

Todos os combinadores de occam (SEQ, PAR, IF, ALT, WHILE) são

representados no modelo do fluxo de dados com a denominação de processo. Embora

cada um dos combinadores seja tratado separadamente na tradução, todos eles têm um

formato básico, ao qual são acrescentados outros componentes.

No processo de tradução, sempre que um combinador é encontrado, são

acrescentados dois pares de lugares/transições à rede: o par inicial (pi.start e ti.start) e o

par final (ti.end e pi.end). Em seguida, é realizada recursivamente uma tradução de todos

os processos dentro do combinador. Por fim, todos os lugares iniciais e finais dos seus

Page 80: Albano Portela Machado - UFPE

___________________________________________________________________

61

processos internos são conectados às transições de início e fim, respectivamente. A

denominação de processo-pai e processo-filho é aplicada no contexto desse

aninhamento de combinadores.

Um lugar especial pi.dummy é também acrescentado ao processo. Este lugar é

inserido entre as transições ti.start e ti.end. Esta operação tem por finalidade garantir que

as transições inicial e final do processo fiquem conectadas por pelo menos um caminho.

A Figura 4.3 mostra a tradução de um combinador seqüencial (SEQ) em uma

RdP equivalente no modelo de fluxo de dados.

...INT ...:SEQ ...

p .sta rti

p .endi

p .du m m yi

t .sta rti

t .e ndi

Figura 4.3: Tradução de um processo

4.4.2.2 Literais

Literais em occam são valores expressos diretamente na especificação. Durante

a tradução, sempre que um literal l é encontrado na especificação, um novo lugar

pi.val[l] é conectado à transição ti.start do processo.

Na Figura 4.4, é exibida a tradução de duas ocorrências do literal 0 (zero) dentro

da especificação. Um lugar pi.val[0] é acrescentado para cada ocorrência como saída da

transição ti.start.

...INT ...:SEQ x := 0 y := 0 ...

p .sta rti

p .va l[0 ]i p .va l[0 ]i

t .sta rti

Figura 4.4: Tradução de literais

4.4.2.3 Variáveis

A estratégia escolhida para modelar as variáveis baseia-se no renomeamento.

Cada novo valor atribuído a uma variável gera-se uma nova instância da mesma

Page 81: Albano Portela Machado - UFPE

___________________________________________________________________

62

(representada por um novo lugar na rede). Todas as referências feitas à variável são

executadas sobre a nova instância.

Na declaração de uma variável v, um lugar de nome pi.v.0 é acrescentado para

representar sua primeira instância. As instâncias subseqüentes são nomeadas com pi.v.1,

pi.v.2, sucessivamente. Num último passo, ao final da tradução do processo, a última

instância de uma variável é conectada à transição ti.end do processo. A Figura 4.5

mostra a declaração de três variáveis inteiras (x, y e z). Após o término do processo, os

valores de suas instâncias são consumidos pela transição ti.end.

...INT x,y,z:SEQ ...

p .sta rti

p .en di

p .x.0i

p .z.ti

p .z.0i

p .x.ri

p .y.0i

p .y.si

t .s ta rti

t .e n di

Figura 4.5: Declaração de variáveis

A leitura da instância n de uma variável v compreende a duplicação de seu valor

dentro do modelo. Uma transição ti.clone é acrescentada após o lugar pi.v.n. Seguindo

essa transição são acrescentados dois lugares pi.v.n+1 e pi.v.n+2. O lugar pi.v.n+1 é

conectado à transição da operação que utiliza a variável (v). O lugar pi.v.n+2 é deixado

livre para que possa ser usado posteriormente por outra operação, por uma atribuição ou

simplesmente pela transição de fim-de-processo (ti.end).

Na Figura 4.6 é exibida a parte da rede que modela a leitura da instância n da

variável x. Uma transição duplica o valor de x (ti.clone) e o distribui aos lugares

pi.x.n+1 e pi.x.n+2. A transição t.op representa a operação de adição em x+1,

consumindo o valor representado por pi.x.n+1. O lugar pi.x.n+2 permanece disponível

para uma nova operação de leitura, atribuição ou mesmo fim de processo.

Page 82: Albano Portela Machado - UFPE

___________________________________________________________________

63

...x := x + 1...

p .x.ni

p .x.n + 2i p .x.n + 1i

t .c lo n ei

t .o pi Figura 4.6: Leitura de variável

Uma escrita na instância n de uma variável v compreende a criação de uma nova

instância e no descarte da anterior. Porém, a eliminação do valor anterior é realizado de

duas maneiras diferentes, dependendo do escopo da escrita.

Caso a escrita seja feita fora de um combinador de execução condicional (IF,

ALT e WHILE), o valor anterior da variável é descartado através de uma transição

ti.sink. Esta transição é acrescentada ao modelo e o lugar pi.v.n é conectado a ela.

Pertencendo ao escopo de um condicional (i.e. variável pertence ao corpo do

combinador condicional), pi.v.n é conectado à própria transição que escreve o novo

valor em v (ti.op). Dessa forma, pode-se representar o fato de que – tendo uma execução

condicional – o processo pode ou não modificar o valor anterior da variável.

A Figura 4.7 exibe as duas situações possíveis em uma operação de atribuição.

Primeiro, o valor zero é atribuído à instância n da variável z fora de um processo

condicional. O valor em pi.z.n é descartado através da transição ti.sink e o valor da

constante zero (pi.val[0]) é atribuído (ti. :=) à nova instância de z (pi.z.n+1). Em seguida,

ocorre uma outra atribuição a z dentro de um processo condicional. O valor em pi.z.n+1

é descartado novamente, porém não mais através de uma transição sink. A transição ti.:=

modela a operação que escreve a nova instância de z. Portanto, o novo valor de z

(pi.val[f]) é direcionado a esta transição em conjunto com o valor anterior de z

(pi.z.n+1), gerando a nova instância representada por pi.z.n+2.

...z := 0... WHILE ... SEQ ... z := y + 2 ...

p .z.n+ 1i

p .z.n+ 2i

p .va l[f]i

p .z.ni p .va l[0 ]i

t .:=i

t .:=i

t .sin ki

Figura 4.7: Escrita de variável

Page 83: Albano Portela Machado - UFPE

___________________________________________________________________

64

4.4.2.4 Expressões

As expressões aritméticas, relacionais e lógicas são representadas no modelo

através da combinação de lugares (operandos) e transições (operadores). Três passos são

necessários para concluir a tradução de uma expressão:

I. incluir os lugares que representam os operandos;

II. incluir a transição que representa a operação (ti.f);

III. incluir o lugar que representa o resultado da operação (pi.val[f]);

Os dois últimos passos são diretos, pois só dependem da existência dos

operandos. O primeiro, entretanto, tem um tratamento diferente para as duas situações

que podem ocorrer:

• caso o operando seja um literal, o mesmo deve ser representado no modelo

através da introdução de um lugar correspondente (pi.val[l]), conforme a

tradução de literais visto anteriormente;

• se o operando for uma variável, o tratamento é da forma como descrito

anteriormente em leitura de variável.

Na Figura 4.8 temos a rede equivalente à expressão y+2. Primeiro, são aplicados

o método de tradução para instância y lida e o método de tradução para o literal 2. Em

seguida, a transição ti.+ é acrescentada para representar o cálculo da expressão e um

lugar pi.val[+] representa o resultado dessa expressão.

...Z := y + 2...

p .y.ni

p .va l[ ]i f

p .va l[2 ]i

t .+i

Figura 4.8: Tradução de expressões

4.4.2.5 Atribuição

A tradução da atribuição está diretamente relacionada com a tradução de

expressões e a escrita em variáveis. Primeiramente, a expressão f é traduzida e o lugar

que representa o resultado da expressão é então conectado a uma nova transição ti. :=,

esta transição representa a operação que faz a escrita na n-ésima instância da variável v,

Page 84: Albano Portela Machado - UFPE

___________________________________________________________________

65

cuja tradução se dá conforme a escrita de variável já vista. A rede exibida na Figura 4.9

modela a operação de atribuição z := y + 2. A tradução da expressão y+2 é realizada

como já mostrado na seção anterior. Em seguida, aplica-se a escrita de variável sobre a

transição ti.:=, gerando uma nova instância da variável z (pi.z.n+1).

...Z := y + 2...

p .z.n + 1i

t .i :=

p .va l[f]i

Figura 4.9: Tradução da atribuição (::== )

4.4.2.6 Comunicação

A tradução das operações de comunicação se divide em duas etapas distintas: a

declaração de canais e a comunicação propriamente dita. A declaração de um canal ch é

refletida no modelo simplesmente com a inclusão de um lugar pi.ch.

A comunicação definida em occam é realizada através de operações de leitura e

escrita no canal, que são semelhantes à operação de atribuição. É importante destacar

que o modelo só permite uma operação de escrita e uma operação de leitura para cada

canal. A leitura de um canal se comporta como uma operação de escrita de variável,

onde o valor atribuído à variável é o conteúdo do próprio canal e não o resultado de uma

expressão. Porém na leitura a operação de duplicação não se aplica ao canal, que

funciona como um literal. Uma transição ti.? é acrescentada à rede e conectada adiante

do lugar que representa o canal. A saída desta transição é então dirigida ao lugar que

representa a nova instância da variável contendo o valor lido através do canal. Em

seguida, é aplicada a operação de escrita da variável. Na rede da Figura 4.10 encontra-se

a tradução do processo ch2?y. A escrita de variável é aplicada sobre a variável y e sobre

a transição ti.?. A entrada de ti.? é dada pelo lugar que representa o canal (pj.ch2).

p .y.ni

t .sin ki

...ch2 ? y...

p .y.n+ 1i

t .?i

p .ch 2j

Figura 4.10: Tradução de entrada (?)

Já a escrita pode ser vista como uma atribuição onde a variável é o canal. A

diferença dessa vez se dá por conta de que o valor do canal não é descartado, como

Page 85: Albano Portela Machado - UFPE

___________________________________________________________________

66

ocorre com a variável. Uma transição ti.! é acrescentada à rede e todos os lugares

representando o resultado das expressões enviadas pelo canal são conectados à

transição.

Além disso, dois lugares especiais são acrescentados na operação de escrita. Um

lugar pi.’! é acrescentado entre as transições ti.start e ti.! para garantir que o processo só

consiga enviar informações se ele estiver ativo. Um outro lugar pi.!’ é acrescentado

entre ti.! e ti.end para garantir que o processo só termine se conseguir enviar as

informações. Na rede da Figura 4.11 é exibida a tradução de ch1!x. A operação de

comunicação é dada pela transição ti.!. Sua entrada é a instância de x que está sendo

enviada (pi.x.n+1) e sua saída é o lugar que representa o canal ch1 (pj.ch1). Nota-se

também a inclusão dos lugares pi.’! . e pi.!’ antes e depois da transição de comunicação,

respectivamente.

p .x .n + 1i

p .ch 1j

p .x .n + 2i

p .s ta rti p .x .ni

t .!i

t .sta rtit .c lo n ei

t .en di

...ch1 ! x...

p .’!i

p .en di Figura 4.11: Tradução da saída(!)

4.4.2.7 Condicionais

A tradução dos condicionais IF e ALT é realizada da mesma forma. Primeiro,

todas as condições e guardas são avaliadas como expressões. Em seguida, uma rede de

processos é acrescentada ao modelo para representar o construtor condicional. Os

lugares representando o valor final das expressões de guarda são conectados como pré-

condições da transição ti.start. Finalmente, todos os processos dentro de cada ramo do

condicional são também traduzidos. Na Figura 4.12 encontra-se parte da rede que

representa o condicional IF ( x>0 . . . , TRUE . . . ). As expressões condicionais x>0 e

TRUE são traduzidas e seus lugares equivalentes pi.val[>], e pi.val[TRUE] são

Page 86: Albano Portela Machado - UFPE

___________________________________________________________________

67

acrescentados como pré-condições da transição inicial de cada processo guardado pelos

respectivos condicionais.

...

...

...

IF x > 0 ... TRUE

p .x.ni

t .>i

p .va l[0 ]i

p .sta rti

p .en di

p .du m m yi

t .sta rti

t .en di

p .va l[T R U E ]i

p .va l[> ]i

Figura 4.12: Tradução do condicional(IF/ALT)

4.4.2.8 Laços

O construtor de laços (WHILE) é traduzido com uma regra semelhante à dos

condicionais. Porém, além da expressão condicional b ser traduzida uma vez no início

do processo, gerando um lugar pi.val[bB] como pré-condição de ti.start, também é

traduzida ao final, gerando um lugar pi.val[bA] o qual é conectado como pré-condição de

ti.end. Esta tradução extra deve-se ao fato de que variáveis utilizadas na expressão

condicional podem vir a ser modificadas dentro do laço. Dessa forma evita-se também a

necessidade de realimentação das variáveis do laço. No exemplo mostrado na Figura

4.13, o laço WHILE x<10 . . . tem seu modelo composto por: o resultado da expressão

x<10 (pi.val[<B]), o qual é acrescentado como pré-condição de ti.start; pela tradução do

processo dentro do laço e, finalmente, por outro lugar que representa a mesma

expressão após o laço (pi.val[<A]), acrescentado como pré-condição de ti.end.

...WHILE x < 10 ......

p .x .ni

p .x .n + ki

t .<i

t .<i

p .va l[1 0 ]i

p .va l[1 0 ]ip .s ta r ti

p .en di

p .du m m yi

t .s ta rti

t .e n di

p .va l[< ]iB

p .va l[< ]iA

Figura 4.13: Tradução do laço (WHILE)

A Figura 4.14 mostra como fica o modelo de fluxo de dados para a

especificação em occam mostrado pela Figura 4.1 acima.

Page 87: Albano Portela Machado - UFPE

___________________________________________________________________

68

0 :p 0.ch1

3 4: t2.?

1 :p 0.ch2

1 2: t1.?

1 :t1 .end

4 :p 1.end

2 5:p1 .y.1

1 8: t1.clone

3 1:p1 .y.2

1 9: t1.+

3 2:p1 .y.3

3 4:p1 .val

2 0: t1. :=

3 5:p1 .z.1

3 7:p1 .x.10

4 0:p2 .sta rt

2 4: t2. s ta rt

4 1:p2 .dum m y

2 5:t2.end

4 2:p2 .end

4 3:p2 .x.0

2 7: t2. s ink

4 4:p2 .y.0

4 2: t2. :=

4 5:p2 .val[0 ]

2 6: t2. :=

4 6:p2 .x.1

3 0: t2.clone

4 7:p2 .sta rt

2 8: t2. s ta rt

4 8:p2 .dum m y

2 9:t2.end

4 9:p2 .end

5 0:p2 .x.2

3 1: t2.<

5 1:p2 .x.3

3 5: t2. s ink

5 2:p2 .val[1 0]

5 3:p2 .val

5 4:p2 .sta rt

3 2: t2. s ta rt

5 5:p2 .dum m y

3 3:t2.end

5 6:p2 .end

5 7:p2 .x.4

3 8: t2.clone

5 8:p2 .sta rt

3 6: t2. s ta rt

5 9:p2 .dum m y

3 7:t2.end

6 0:p2 .end

6 1:p2 .x.5

3 9: t2.>

6 2:p2 .x.6

4 0: t2.clone

6 3:p2 .val[0 ]

6 4:p2 .val

6 5:p2 .x.7

4 1: t2.+

6 6:p2 .x.8

4 6: t2.clone

6 7:p2 .val[1 ]

6 8:p2 .val

6 9:p2 .y.1

4 3: t2. :=

7 0:p2 .val[TRUE]

7 1:p2 .val[0 ]

7 2:p2 .y.2

4 5: t2.clone

7 3:p2 .'!

4 4: t2. !

7 4:p2 .! '

7 5:p2 .y.3

7 6:p2 .y.4

7 7:p2 .x.9

4 7: t2.<

7 8:p2 .x.10

7 9:p2 .val[1 0]

8 0:p2 .val

3 3:p1 .val[2 ]

1 3:p1 .end

5 :t1 .end

2 0:p1 .end3 0:p1 .x.8

2 2: t1.clone

3 6:p1 .x.9

2 3: t1.<

3 9:p1 .val

1 2:p1 .dum m y

9 :t1 .end

1 4:t1.clone

2 6:p1 .x.6

1 5: t1.+

2 7:p1 .x.7

1 7: t1. s ink

2 9:p1 .val

1 6: t1. :=

4 :t1 .sta rt 1 1: t1.clone

1 8:p1 .sta rt

8 :t1 .sta rt

1 9:p1 .dum m y

2 1:p1 .'!

1 0: t1. !

2 2:p1 .! '

2 3:p1 .x.4

2 4:p1 .x.5

2 8:p1 .val[1 ]

3 :p 1.dum m y

8 :p 1.val[0 ]

2 :t1 .:=

9 :p 1.x.1

6 :t1 .clone

1 1:p1 .sta rt

1 4:p1 .x.2

7 :t1 .<

1 5:p1 .x.3

1 6:p1 .val[1 0]

1 7:p1 .val

1 0:p1 .val[0 ]

3 8:p1 .val[1 0]

5 :p 1.x.0

3 :t1 .s ink

6 :p 1.y.0

1 3: t1. s ink

7 :p 1.z.0

2 1: t1. s ink

2 :p 1.start

0 :t1 .sta rt

Figura 4.14: Modelo do fluxo de dados para a especificação da Figura 4.1

Page 88: Albano Portela Machado - UFPE

___________________________________________________________________

69

4.5 Conclusões

Neste capítulo apresentamos os modelos em redes de Petri desenvolvidos para

representar o fluxo de controle e dados, bem como introduzimos o conjunto da

linguagem de programação occam (processos primitivos e combinadores).

A partir de uma especificação occam (Figura 4.1) foi mostrado o modelo de

fluxo de controle (Figura 4.2) e dados (Figura 4.14) resultante. Para o modelo de fluxo

de dados foi definido os componentes da rede: lugares (representando valores),

transições (expressões, operadores e construtores de occam), arcos (utilização ou

geração de novos valores) e fichas (modelam a presença de um valor em um dado

momento). Em seguida foi apresentado o método de tradução para os processos

(combinadores de occam), literais, variáveis, expressões, atribuição, comunicação,

condicionais e laços.

Observamos que o modelo de fluxo de dados resultante, visto na (Figura 4.14) é

uma rede de Petri da subclasse grafo marcado. Este tipo de rede não modela conflito,

mas é ideal para modelar sincronização e concorrência. A vantagem deste modelo é que

as análise qualitativas e quantitativas, possíveis de serem realizadas através do mesmo,

apresentam um baixo custo computacional.

Page 89: Albano Portela Machado - UFPE

5 Estimativa de Área

Neste capítulo é apresentada a abordagem para o cálculo da estimativa de área dos componentes do caminho de dados: unidades funcionais, de armazenamento e de interconexão (multiplexadores), a partir de uma especificação de alto nível mapeada para um modelo intermediário de dados – Rede de Petri temporizada (timed Petri net). Inicialmente são apresentados conceitos de estilos de projetos, métricas de qualidades e finalmente é demonstrada a abordagem da estimativa de área para os componentes do caminho de dados.

5.1 Modelo da Estimativa de Hardware

Dada uma especificação de um sistema para o qual estimativas devem ser

computadas, o projeto correspondente poderá ser implementado como uma máquina de

estados finitos com caminho de dados (FSMD – finite-state machine with datapath). A

arquitetura de uma FSMD consiste de uma unidade de controle e de um caminho de

dados (datapath), como mostrado na Figura 5.1.

O caminho de dados consiste de registradores, unidades funcionais,

multiplexadores e/ou barramentos. Em uma operação típica no caminho de dados os

operandos são lidos dos registradores, as operações são computadas nas unidades

funcionais, e finalmente o resultado é escrito no registrador destino. Todo acesso à

memória é roteado através de registradores pelas operações de leitura e escrita que

carregam valores de dados nos registradores antes de seu uso no caminho de dados, e

armazena os resultados da computação em registradores antes de serem escritos na

memória.

A unidade de controle consiste do registrador de estado, da lógica de controle

para direcionar as linhas de controle para os componentes do caminho de dados, e a

Page 90: Albano Portela Machado - UFPE

___________________________________________________________________

71

lógica do próximo estado para computar o próximo estado a ser armazenado no

registrador de estado. Linhas de status do caminho de dados levam os resultados das

operações de comparação para a lógica do próximo estado.

Lógica de Controle

Lógica Próximo Estado

Registrador de Estado

mux mux mux mux mux mux

mux mux

R1 R2 R3

mux mux

R4 R5 R6

ALU1 *Bits de Status

Sinais de Controle

UC

RC

RS

UE

Lógica de Controle

Lógica Próximo Estado

Registrador de Estado

mux mux mux mux mux mux

mux mux

R1 R2 R3

mux mux

R4 R5 R6

ALU1 *Bits de Status

Sinais de Controle

UC

RC

RS

UE

Figura 5.1: Modelo para estimativas com unidade de controle e caminho de dados

5.2 Sistema de Estimativa de Área de Hardware

Esta seção tem como objetivo dar uma visão geral do sistema de estimativa de

área de hardware implementado neste trabalho. Um sistema [33] é definido como um

conjunto de componentes inter-relacionados que coleta (ou recupera), processa,

armazena e distribui informações para seus usuários. Os sistemas possuem três funções

básicas: entrada, processamento e saída.

Program Convolution

SEQ i=0 FOR 2PAR

IF (x[i]>= 0 c:= x[i],x[i]<0 c:= x[i]/2)

IF (x[i+1]>= 0 d:= x[i+1],x[i+1]<0 d:= x[i+1]/2)

PAR j=0 FOR 4e[j]:= x[f(i,j)]

PARw := k*e[i]PAR j= 0 FOR 4

y[j] := y[j] + e[j]*(c+d)

Program Convolution

SEQ i=0 FOR 2PAR

IF (x[i]>= 0 c:= x[i],x[i]<0 c:= x[i]/2)

IF (x[i+1]>= 0 d:= x[i+1],x[i+1]<0 d:= x[i+1]/2)

PAR j=0 FOR 4e[j]:= x[f(i,j)]

PARw := k*e[i]PAR j= 0 FOR 4

y[j] := y[j] + e[j]*(c+d)

Program Convolution

SEQ i=0 FOR 2PAR

IF (x[i]>= 0 c:= x[i],x[i]<0 c:= x[i]/2)

IF (x[i+1]>= 0 d:= x[i+1],x[i+1]<0 d:= x[i+1]/2)

PAR j=0 FOR 4e[j]:= x[f(i,j)]

PARw := k*e[i]PAR j= 0 FOR 4

y[j] := y[j] + e[j]*(c+d)

Program Convolution

SEQ i=0 FOR 2PAR

IF (x[i]>= 0 c:= x[i],x[i]<0 c:= x[i]/2)

IF (x[i+1]>= 0 d:= x[i+1],x[i+1]<0 d:= x[i+1]/2)

PAR j=0 FOR 4e[j]:= x[f(i,j)]

PARw := k*e[i]PAR j= 0 FOR 4

y[j] := y[j] + e[j]*(c+d)

Especificaçãoem Occam

Modelo Intermediário

em RdP

ferramenta

depend

Sistema deEstimativa de

Área de Hardware

Entrada ProcessamentoSaída

Figura 5.2: Sistema de Estimativa de Área de Hardware

No sistema de estimativa de hardware, visto na Figura 5.2, a entrada é um

modelo intermediário. Este modelo é obtido pela ação de um tradutor (ferramenta

Page 91: Albano Portela Machado - UFPE

___________________________________________________________________

72

depend desenvolvida por Monteiro[47]) que traduz o código de uma especificação em

occam em um modelo fluxo de dados apoiado em redes de Petri temporizadas. O

processamento é baseado no cálculo de estimativas de área de hardware do caminho de

dados: unidades de armazenamento [37], funcionais e de interconexão. A saída do

sistema é a estimativa de área, bem como o tipo e quantidades destes componentes.

5.3 Definição do Modelo Intermediário

A partir da especificação da Figura 5.3 e utilizando-se um tradutor, ferramenta

depend, chegamos a uma rede de Petri marked-graph marcada limitada que representa o

modelo de fluxo de dados – modelo intermediário mostrado na Figura 5.4.

Figura 5.3: Especificação em occam de um comportamento bem simples

No modelo de fluxo de dados, conforme visto no Capítulo 4, lugares

representam valores e transições representam expressões aritméticas, operadores e

construtores da linguagem de especificação. Cada valor produzido por um processo

(incluindo variáveis, constantes e valores intermediários) tem um lugar equivalente, cuja

marcação modela a presença deste valor. Existem dois pares especiais de lugares e

transições para cada processo (start e end), os quais alimentam todos os valores iniciais

e consomem todos os valores finais.

Com as informações temporais (retardo) associadas aos componentes de uma

determinada tecnologia, determinam-se os tempos das transições que modelam

operações lógico-aritméticas do modelo de fluxo de dados gerado. Às demais transições

são associadas a tempos de retardo com valor zero, já que as mesmas não consomem

tempo. O resultado é uma rede de Petri marked graph temporizada ΓΓ1= (M, f),

conforme visto na Figura 5.5, onde:

Page 92: Albano Portela Machado - UFPE

___________________________________________________________________

73

M é uma rede de Petri marked graph marcada, M = (N, m0), N = (P, T, A, ω),

f é uma função de tempo de disparo a qual atribui um valor real não negativo f(t)

para cada transição t da rede, f: T → R⊕ e R⊕ denota o conjunto de números reais não

negativos.

Figura 5.4: Modelo de Fluxo de dados gerado pelo ferramenta depend

Page 93: Albano Portela Machado - UFPE

___________________________________________________________________

74

Figura 5.5: Rede de Petri temporizada ΓΓ1 – Modelo de fluxo de dados.

O estado s de uma Rede de Petri temporizada ΓΓ1 é uma tupla s = (m, n, r). Um

estado inicial si de uma rede ΓΓ1 é uma tupla si = (mi, ni, ri). Vemos que este modelo é

uma simplificação da rede temporizada proposta por Zuberek (rede free-choice, ver

Seção 3.5), pois aqui não temos a possibilidade de escolhas. Assim um grafo de estado

G de uma rede de Petri marked graph temporizada limitada ΓΓ1 é um grafo direcionado

rotulado G(ΓΓ1) = (V, D, h) onde:

Page 94: Albano Portela Machado - UFPE

___________________________________________________________________

75

V é um conjunto de vértices iguais ao conjunto de estados alcançáveis da rede ΓΓ,

V = S(ΓΓ1),

D é o conjunto de arcos direcionados, D ⊂ V × V, tal que (si, sj) está em D sse sj

é diretamente acessível a partir de si,

h é uma função rotuladora de vértices a qual associa o tempo de armazenamento

do estado si = (mi, ni, ri) para cada si ∈ S(ΓΓ1), h :V→ R⊕.

A Tabela 5.1 resume algumas métricas de desempenho de uma biblioteca de

componentes implementada na família em Xilinx’s XC4000E (FPGA) com a

ferramenta CAD Xilinx Foundation Series 3.1. A área é expressa em termos do número

de portas (gates) e os tempos de retardos em nanosegundos. Alguns destes componentes

são multifuncionais.

Tabela 5.1: Xilinx 5000 Library (obtida em [38])

Componentes Function Gate Count Delay (ns)AND 5 9.5OR 5 9.5DFF 7 9.0

MUX21(1) 5 10.0MUX21(8) 40 19.9

ADD(8) 107 17.7SUB(8) 107 19.7

COMP(8) <, =, > 116 19.2MUL(8) 433 36.3DIV(8) 431 44.0

INV - Inversor, AND - AND GateOR - OR gate, DFF - D Flip-Flop

5.4 Estimativa de Área do Caminho de Dados

A primeira tarefa na estimativa do tamanho de qualquer projeto é determinar o

número e tipos de componentes que implementarão o comportamento dado. Uma vez

que os componentes requeridos sejam determinados, podemos obter estimativas de

tamanho para uma variedade de tecnologias. Para uma implementação em FPGA, por

exemplo, uma estimativa do número total de blocos lógicos combinacionais (CLB)

usados no projeto, pode ser obtida pelo somatório do número de CLBs usados por cada

Page 95: Albano Portela Machado - UFPE

___________________________________________________________________

76

componente no projeto. Para uma implementação gate array, a complexidade do projeto

pode ser medida pelo somatório do número de gates equivalentes necessários para os

componentes. Para uma implementação full custom, o tamanho do projeto pode ser

estimado levando-se em consideração o número de transistores em todos os

componentes ou pela área obtida após a realização do layout e placement dos

componentes.

Como descrito na Seção 5.1, o comportamento dado é assumido para ser

implementado como uma FSMD com uma unidade de controle e um caminho de dados.

O caminho de dados consiste de três tipos de componentes: unidades de armazenamento

(registradores e latches), unidades funcionais (ALUs e comparadores), e unidades de

interconexão (multiplexadores e barramentos). Diversos métodos para síntese do

caminho de dados têm sido discutidos extensivamente em [20]. Nesta seção,

descreveremos técnicas para estimativa do número e área destes componentes, que são

requeridos para implementar uma especificação funcional.

5.4.1 Número de Unidades de Armazenamento: Método Baseado nas Variáveis Simultaneamente “Vivas”

Unidades de armazenamento [21] são requeridas para guardar valores de dados

representados por constantes, variáveis e vetores de um determinado comportamento.

Entendemos aqui por comportamento como uma “parte” de uma funcionalidade do

sistema, mais complexa que uma operação aritmética, o qual pode ser representado de

diversas maneiras, por exemplo: como processo, procedimento, máquina de estados, etc.

Para uma descrição de um comportamento em alto nível, o projeto de hardware é

dividido em classes de blocos funcionais: caminho de dados e controladores [40]. Um

aspecto que deve ser considerado é o número necessário de registradores para

implementar uma determinada descrição comportamental.

A estratégia mais simples assume que cada variável do comportamento deverá

ser implementada em um registrador ou localização de memória [38]. Todavia, tal

implementação pode ter um número excessivo de unidades de armazenamento, pois

valores de variáveis podem não ser necessários durante a execução do comportamento.

Page 96: Albano Portela Machado - UFPE

___________________________________________________________________

77

Pode-se minimizar o número de unidades de armazenamento fazendo o mapeamento de

diversas variáveis que não estão sendo concorrentemente utilizadas para um mesmo

registrador. A abordagem proposta consiste na estimativa do número de registradores

considerando dependência causal capturadas no modelo de fluxo de dados (redes de

Petri temporizada – timed Petri nets). Este modelo considera dependência de dados

entre operadores de uma descrição comportamental, bem como precedência de tempo

entre tais operações.

Duas variáveis a e b podem ser alocadas em um mesmo registrador se a e b

nunca estiverem “em uso” ao mesmo tempo. O algoritmo proposto analisa a

representação intermediária do programa (modelo de fluxo de dados) para determinar

quais variáveis estão em uso ao mesmo tempo. Dizemos que a variável é viva se ela

armazenar um valor que será utilizado no futuro.

Para ilustrarmos esta abordagem começaremos com um exemplo bem pequeno,

mas que possibilita o entendimento da abordagem proposta, a descrição em occam

mostrada na Figura 5.3. Verificamos nesta especificação que as três operações foram

projetadas para serem executadas em paralelo. No modelo de fluxo de dados gerado

(Figura 5.5) elas são executadas seqüencialmente devido à dependência de dados entre

as variáveis.

O grafo de estados gerado para a rede da Figura 5.5, através da ferramenta INA

(Integrated Net Analyzer) [66], é mostrado na Figura 5.6. No começo do processo,

estado s1, o lugar p1.start tem apenas uma ficha, habilitando a transição t0. Esta

transição dispara e logo no início do disparo uma ficha é removida do lugar de entrada

desta transição (p1.start) e fica “armazenada” na transição t0 durante o tempo de disparo

(duration). No final do disparo, uma ficha é depositada nos lugares de saída da transição

disparada (t0), aqui representado pelos lugares p1.dummy, p1.a.0, p1.b.0, p1.c.0 e p1.c.0.

Estes novos lugares, somando-se aqueles lugares vivos do estado anterior, cujas

transições não foram disparadas, constituem o estado atual. Neste caso específico, o

estado anterior (s1), tínhamos apenas uma transição a ser disparada (t0),

conseqüentemente o estado s2 é constituído dos novos lugares vivos: p1.dummy, p1.a.0,

p1.b.0, p1.c.0 e p1.c.0, conforme mostrado pela Figura 5.6. Os lugares marcados no estado

Page 97: Albano Portela Machado - UFPE

___________________________________________________________________

78

s2 habilitam as transições t2, t3, t6 e t11. Estas transições habilitadas disparam em paralelo

(semântica de passo), novamente fichas são retiradas dos lugares de entrada (p1.a.0,

p1.b.0, p1.c.0 e p1.c.0) e novas fichas são armazenadas nas transições disparadas,

permanecendo nelas até o término do tempo remanescente de disparo. À medida que é

alcançado o final do tempo dos disparos de cada transição em particular, novas fichas

chegam aos lugares de saída das respectivas transições gerando novos estados. Para

cada transição é computado seu tempo remanescente de disparo o qual estabelece uma

política de liberação de fichas, isto é, aquelas transições com menor tempo

remanescente (coluna h(si) da Tabela 5.2) concluirão seus disparos. Como as transições

t2, t3, t6 e t11 apresentam a mesma duração, isto é, tempos de disparo remanescentes

iguais a zero, todas estas transições concluem seus disparos gerando fichas para os

novos lugares: p1.a.1, p1.a.2, p1.b.1 e p1.b. O lugar p1.dummy continua vivo (ie. marcado),

pois é entrada da transição t1.end que só será disparada no final do processo. Assim

chegamos ao estado s3, constituído dos seguintes lugares vivos: p1.a.1, p1.a.2, p1.b.1, p1.b

e p1.dummy. Desta maneira, procede-se até que todas as transições sejam disparadas.

Figura 5.6: Grafo de estados para ΓΓ1

É importante salientar que na Figura 5.6, o estado final s13 está rotulado como

dead state, isto é, a rede não é reversível como mostrado na Figura 5.5 (não retorna ao

Page 98: Albano Portela Machado - UFPE

___________________________________________________________________

79

estado s1). Isto é devido a não inclusão da transição closure pela ferramenta depend

quando da geração da rede. Aqui não incluímos esta transição manualmente, o que é

feito com o propósito de ganharmos tempo na análise, já que a não inclusão desta

transição não altera os resultados obtidos pela aplicação da ferramenta INA.

A Tabela 5.2 mostra todos os estados alcançáveis da rede, acrescentando

detalhes ao grafo de estados mostrado na Figura 5.6. A marcação intermediária m’ i

representa os lugares marcados antes do disparo das transições; gk ∈ Sel(m’ i) é o

conjunto das transições habilitadas pela marcação m’ i; a coluna mi define os lugares

vivos, cujas fichas não foram consumidas, pois não são lugares de entrada das

transições habilitadas; ni define o conjunto de transições disparadas (com fichas

armazenadas) com tempo remanescente, isto é, que ainda não completaram o seu tempo

de execução; h(si) representa o menor tempo remanescente das transições do conjunto ni

(tempo de permanência no estado si). h(si) define o conjunto de transições que

finalizarão seus disparos, gerando novos estados a serem alcançados. O somatório de

h(si) determina o tempo de execução do comportamento. Detalhes formais da definição

dos campos desta tabela encontram-se no Capítulo 3.

m'i g k m i n i

Lugares Transições Lugares Transições

1 p1.start t0 null n i (t0 ) = 1 0 2

2 p1.dummy, p1.a.0, p1.b.0, p1.c.0, p1.d.0 t2, t3, t6, t11 p1.dummy n i (t2, t3, t6, t11 ) = 1 0 3

3 p1.dummy, p1.a.1, p1.a.2, p1.b.1, p1.b.2 t4, t8, t12 p1.dummy n i (t4, t8, t12 ) = 1 0 4

4 p1.dummy, p1.a.3, p1.a.4, p1.b.3, p1.b.4 t16 p1.dummy, p1.a.3, p1.a.4, p1.b.3 n i (t4, t16 ) = 1 0 4n i (t4 ) = 1 15 5

5 p1.dummy, p1.val, p1.a.3, p1.a.4, p1.b.3 t5 p1.dummy, p1.a.3, p1.a.4, p1.b.3 n i (t5 ) = 1 0 66 p1.dummy, p1.a.3, p1.a.4, p1.b.3, p1.c.1 t7 p1.dummy, p1.a.3, p1.a.4, p1.b.3 n i (t7 ) = 1 0 7

7 p1.dummy, p1.a.3, p1.a.4, p1.b.3, p1.c.2, p1.c.3 t9 p1.dummy, p1.a.3, p1.a.4, p1.c.3 n i (t9 ) = 1 15 88 p1.dummy, p1.a.3, p1.a.4, p1.c.3, p1.val t10 p1.dummy, p1.a.3, p1.a.4, p1.c.3 n i (t10 ) = 1 0 9

9 p1.dummy, p1.a.3, p1.a.4, p1.c.3, p1.d.1 t13 p1.dummy, p1.a.3, p1.a.4, p1.c.3 n i (t13 ) = 1 0 10

10 p1.dummy, p1.a.3, p1.a.4, p1.c.3, p1.d.2, p1.d.3 t14 p1.dummy, p1.a.4, p1.c.3, p1.d.3 n i (t14 ) = 1 15 11

11 p1.dummy, p1.a.4, p1.c.3, p1.d.3, p1.val t15 p1.dummy, p1.a.4, p1.c.3, p1.d.3 n i (t15 ) = 1 0 1212 p1.dummy, p1.a.4, p1.c.3, p1.d.3, p1.b.5 t1 null n i (t1 ) = 1 0 13

13 p1.end dead-lock

s i h(s i ) s j

Tabela 5.2: O conjunto de estados alcançáveis para ΓΓ1

Observando atentamente a Figura 5.5 juntamente com a Figura 5.6 vemos a

existência de lugares especiais como dummy, val, start, end utilizados na definição dos

Page 99: Albano Portela Machado - UFPE

___________________________________________________________________

80

modelos. Para o cálculo de unidade s de armazenamento os lugares que nos interessa

são os lugares representando variáveis e literais. Um ponto importante a ser considerado

são os lugares (variáveis e literais) de entrada das transições sink e end, nestes casos

estes lugares marcados devem ser descartados no cômputo das variáveis

simultaneamente vivas. Quando um lugar é entrada de uma transição sink (que modela

uma atribuição de variável) este lugar não estará vivo em outros estados. Na passagem

do estado s2 para s3, vemos que os lugares p5 (p1.c.0) e p6 (p1.d.0), que são componentes

de s2, não mais aparecem no estado s3, pois suas fichas são consumidas pela transição

sink. Com relação aos lugares de entrada da transição end, significa que chegamos ao

final do processo e não serão utilizadas no futuro. Outro aspecto importante é o índice

das variáveis, que está relacionado com seu uso em determinado estado. Observando o

estado s3, vemos os lugares p7 (p1.a.1) e p8 (p1.a.2), cujas fichas são provenientes do

término do disparo da transição t2 (t1.clone). A transição clone possibilita a duplicação

do valor da variável a e a distribui em lugares diferentes para uso futuro. Logo estes

lugares representam a mesma variável a.

No estado s3 temos os seguintes lugares marcados (vivos) representando

variáveis: p1.a.1, p1.a.2, p1.b1 e p1.b.2. Os lugares p1.a.1 e p1.b1 são entradas para a

transição t4 (t1.+), que executa uma operação de soma visto na especificação da Figura

5.3 ( c := a + b), enquanto os lugares p1.a.2 e p1.b2 são entradas para transições clone.

Considerando a variável a no estado s3, ao disparar-se a transição t12 (t1.clone), a ficha

do lugar p1.a.2, que é entrada desta transição, é duplicada nos lugares p1.a.3 e p1.a.4.

Observando o lugar p1.a.3 (entrada da transição t14 (t1.+) que modela a instrução b := a

+ d) vemos que o mesmo permanece vivo durantes os estados s4, s5, s6, s7, s8, s9 e s10,

quando a transição t14 é disparada. Considerando agora a variável b, quando a transição

t8 (t1.clone) é disparada em s3 as fichas do lugar p1.b.2 são duplicadas nos lugares p1.b.3

e p1.b.4. O lugar p1.b.3 (entrada da t9 (t1.+) que executa a instrução d := c + b),

permanece vivo até o estado s7. Assim, na passagem do estado s3 para s4 pelo disparo da

transição t4 (t1.+) – operação soma (instrução c := a + b) – precisamos inicialmente de

dois registradores para armazenar os valores das variáveis a (p1.a.1) e b (p1.b.1). Vimos

que a variável c não pode compartilhar o mesmo registrador com variável a, pois esta

permanece viva até o estado s10, nem tampouco a variável c pode compartilhar o mesmo

Page 100: Albano Portela Machado - UFPE

___________________________________________________________________

81

registrador com a variável b, pois esta continua viva até o estado s7. Logo, os tempos de

vida destas variáveis se sobrepõem. Conseqüentemente, neste estado precisamos de três

registradores.

A solução da abordagem proposta é especificar um algoritmo cuja solução é

encontrar os estados com o maior número de lugares marcados representando variáveis

simultaneamente vivas. Figura 5.7 mostra um grafo de estados simplificado, onde

foram removidos os lugares start, end, val e dummy e lugares que são entradas de

transições sink e end. Também retiramos os índices dos lugares representando variáveis.

O número máximo de variáveis simultaneamente vivas é obtido no estados s6 (a, b, c) e

s7 (a, b, c). Portanto, são necessárias três unidades de armazenamento para implementar

esta especificação.

Figura 5.7: Grafo de estados simplificado para Γ1

Após esta apresentação informal, vamos abordar o método proposto de maneira

mais formal.

Definição 5.1 – Função de nomeação l : Seja N = (P, T, A, ω, m0, f), uma rede

de Petri marked graph temporizada. l é uma função de nomeação que nomeia elementos

Page 101: Albano Portela Machado - UFPE

___________________________________________________________________

82

dos conjuntos de lugares e transições com nomes significativos, l : P ∪ T → L onde

L = {string1, string2,...}.

Assim, na geração da rede de Petri temporizada são nomeados os lugares e

transições. Desta forma são definidos os lugares que modelam variáveis e/ou literais, e

transições que realizam operações lógicas aritméticas, bem como lugares e transições

especiais, conforme descrito no Capítulo 4. Por exemplo, um lugar representando uma

variável tem a seguinte forma: pi.string.k (onde p representa o lugar, i é o índice do

processo, string é o nome da variável e k é o índice da variável). Um literal tem a forma

pi.val[m], onde m é o valor do literal.

Definição 5.2 – Conjunto de Variáveis e Literais: Seja N = (P, T, A, ω, m0, f),

uma rede de Petri marked graph temporizada e l uma função de nomeação. VAR = {ph,

..., pl, ..., pn} é definido como o conjunto de lugares rotulados como variáveis. LIT =

{pk, ..., pj ..., pz} é o conjunto de lugares rotulados como literais, onde as seguintes

condições devem ser satisfeitas,

1. l(VAR) ∩ {pi.start, pj.end, pk.dummy, pq.val[r], ps.cht, pu.val } = φ |

i,j,k,q,r,s,t,u ∈ + ,

2. VAR ⊂ P ∧ LIT ⊂ P,

3. l (ph) ≠ l (pl), ∀ ph, pl ∈ VAR,

4. l(LIT) ={ pi.val[m] | i, m ∈ + },

5. l (pk) ≠ l (pj), ∀ pk, pj ∈ LIT,

6. VAR ∩ LIT = Ø.

Após definirmos o conjunto de variáveis e literais, precisamos saber quais as

variáveis que estão vivas (marcadas) por estados no grafo de estados.

Definição 5.3 – Conjunto de Variáveis Marcadas por Estado: Seja N = (P, T,

A, ω, m0, f), uma rede de Petri marked graph temporizada. Seja G(N) = (V, D, h) um

grafo de estado, onde V é um conjunto de vértices os quais é igual ao conjunto de

estados alcançáveis da rede N, V = S(N). Seja s = (m, n, r) um estado s da Rede N,

Page 102: Albano Portela Machado - UFPE

___________________________________________________________________

83

s ∈ S. VARMi(N, si) = {pi, ..., pq..., pw} é definido como o conjunto de variáveis

marcadas no estado si, onde (VARMi(N, si) ⊆ VAR) ∧ (m(p) = 1 ∀ p ∈ VARMi(N, si))

∧ (l(Out(p)) ∉ {tr.sink, ts.end}| r, s ∈ +).

Conforme visto no Capítulo 3 Out(p) é a transição de saída do lugar p. Agora

que definimos as variáveis vivas por estado, excluídas aquelas cujas transições de saída

são do tipo sink e end, o cálculo das unidades de armazenamento é obtida pela

cardinalidade do maior conjunto de VARMi(N, si).

Definição 5.4 – Número de Unidades de Armazenamento: Seja N = (P, T, A,

ω, m0, f), uma rede de Petri marked graph temporizada. Seja G(N) = (V, D, h) um grafo

de estado, onde V é um conjunto de vértices os quais é igual ao conjunto de estados

alcançáveis da rede N, V = S(N). Seja s = (m, n, r) o estado s da Rede de Petri

temporizada N, s ∈ S. Seja VARMi(N, si) = {pi, ..., pq..., pw} o conjunto de variáveis

marcadas no estado si. NREG = MAX(VARMi(N, si), ∀ si ∈ S(N)) + # LIT, nos dá o

número de Unidades de Armazenamento necessários para implementar a funcionalidade

(comportamento) de determinada especificação, onde a função MAX determina a

cardinalidade do maior conjunto.

O algoritmo proposto é:

• Entrada: ΓΓ( M, f) uma rede marked-graph temporizada marcada onde M =

(N, m0) é a rede marcada e N = (P, T, A, ω) a estrutura da rede.

• Saída: O número de unidades de armazenamento necessário para realizar a

especificação (NREG).

Passos:

I. Computar o grafo de estados

II. Para cada estado, conte o número de lugares representando variáveis, desprezando

os lugares que são entrada de transições do tipo sink e end.

Page 103: Albano Portela Machado - UFPE

___________________________________________________________________

84

III. Considere os estados com o maior número de lugares marcados representando

variáveis simultaneamente vivas. Este número de lugares representa o número de

unidades de armazenamento necessário para reter os valores das variáveis.

IV. Para computar os literais, a partir do conjunto de literais da especificação, gere um

subconjunto eliminando os valores repetidos. A cardinalidade deste subconjunto

determina a quantidades de registradores.

V. A quantidade de registradores é a soma dos registradores usados para armazenar as

variáveis e os literais.

A complexidade para a geração do grafo de estados da rede (marked graph,

semântica de passos) é O(K) onde K = { x | x ∈ • + ∧ 1 ≤ x ≤ T}, isto é, o grafo gerado

é composto de um único estado (todas as transições da rede são disparadas

paralelamente) ou T estados (apenas uma transição é disparada em cada estado). A

complexidade do algoritmo para estimativa do número de registradores para

armazenamento das variáveis é O (K * P), para cada estado é verificado a marcação de

todos os lugares. Para o cálculo dos registradores que armazenam literais a

complexidade é O(P), é feita a verificação dos lugares apenas no estado s2. Onde T

representa o conjunto de transições, P é o conjunto de lugares, K é o conjunto de

estados gerados. Logo, a complexidade da abordagem proposta para o cálculo dos

registradores pelo método das variáveis simultaneamente vivas é O(K + K * P + P).

5.4.2 Número de Unidades de Armazenamento: Método Baseado nos Tempos de Vida das Variáveis.

O algoritmo da seção anterior é uma maneira rápida para se calcular a

quantidade de registradores de um comportamento sem precisar computar o tempo de

vida das variáveis, diminuindo assim o custo do processamento. No entanto, como o

objetivo desta abordagem também é o calculo dos multiplexadores no caminho de

dados, é necessário realizarmos o mapeamento das variáveis para as unidades de

armazenamento. Para isto implementamos o algoritmo left-edge, descrito no Capítulo

2, para realizar este mapeamento.

Page 104: Albano Portela Machado - UFPE

___________________________________________________________________

85

A Tabela 5.3 mostra os tempos de vida das variáveis, bem como os tempos

iniciais de cada estado para o comportamento mapeado na Figura 5.5. A partir da Tabela

5.2 obtemos a coluna h(si), menor tempo de permanência no estado si. Acumulando

h(si) obtemos os tempos finais de cada estado, por exemplo, os estados s1 a s3 têm

tempos finais igual a zero (∑h(si) = 0), enquanto o estado s4 (∑(h(si) = 15)), assim nos

estados s1 a s3 o tempo de permanência acumulado foi zero, no estado s4 foi consumido

15 unidades de tempo até o seu término, logo o tempo final de s4 é o tempo final até o

estado s3 mais o tempo de permanência em s4, que é igual a 15. A coluna tempo inicial

acumulado é obtida pela subtração das colunas h(si) acumulado e h(si) para cada

estado si.

Tabela 5.3: Variáveis vivas por estados (tempo de vida das variáveis) para ΓΓ1

h(s i ) acumulado a b c d

s1 0 0 0s2 0 0 0 x xs3 0 0 0 x xs4 15 15 0 x xs5 0 15 15 x xs6 0 15 15 x x xs7 15 30 15 x x xs8 0 30 30 xs9 0 30 30 x x

s10 15 45 30 x xs11 0 45 45s12 0 45 45s13 0 45 45

EstadosTempo inicial

acumuladoh(s i ) Variáveis

O tempo de vida de uma variável é determinado pela seqüência de estados

(coluna variáveis na tabela) onde a mesma é marcada (viva). Dada a lista de variáveis

de uma descrição comportamental e seus tempos de vida associados, o algoritmo left-

edge primeiro ordena a lista de variáveis em ordem ascendente, considerando o tempo

passado desde o início da execução do comportamento até o instante em que a variável

se torna viva (coluna tempo inicial acumulado). O algoritmo realiza diversos passos

sobre a lista ordenada obtida, examinando os tempos de vida das variáveis na ordem em

que elas ocorrem na lista. Em cada passo o algoritmo aloca um novo registrador e

atribui uma nova variável ao mesmo se o tempo de vida desta variável não se

Page 105: Albano Portela Machado - UFPE

___________________________________________________________________

86

sobrepõem aos tempos de vidas das variáveis já atribuídas àquele registrador. Estas

variáveis atribuídas são eliminadas da lista ordenada de variáveis. O processo é repetido

até que todas as variáveis tenham sido atribuídas aos registradores.

Aqui vamos ilustrar o algoritmo left-edge, através do comportamento da Figura

5.5, onde os tempos de vida são vistos na Tabela 5.3. O conjunto de variáveis é

inicialmente ordenado de acordo com os tempos de vida resultando na lista L = {a, b, c,

d}. No primeiro passo, uma unidade de armazenamento R1 é alocada e a variável a é

atribuída a esta unidade. Percorrendo a lista L, observamos que todos os tempos de vida

das demais variáveis se sobrepõem ao da variável a. Portanto, a unidade de

armazenamento R1 consiste apenas da variável a e esta variável é retirada da lista L. No

segundo passo, a unidade de armazenamento R2 é alocada e b é atribuída à mesma.

Percorrendo a lista L, observamos que a variável d é a próxima variável que pode ser

atribuída à unidade de armazenamento R2, já que seu intervalo de tempo de vida não se

sobrepõe ao da variável b, já atribuída a R2. Nenhuma outra variável tem um tempo de

vida que não se sobrepõe àqueles das variáveis b e d. Então, a unidade de

armazenamento R2 consiste das variáveis b e d, e estas variáveis são retiradas da lista L.

No terceiro e último passo, a unidade de armazenamento R3 é alocada e a variável c é

atribuída à mesma.

Tabela 5.4: Resultado final do mapeamento das variáveis para os registradores para Γ1

a b c d

R1 xR2 x xR3 x

Unidades de armazenamento

Variáveis atribuídas

A Tabela 5.4 mostra o resultado final do mapeamento das variáveis para os

registradores para o comportamento da Figura 5.5, após a aplicação do algoritmo left-

edge. Verificamos que foi encontrado o mesmo resultado da abordagem anterior, isto é,

três unidades de armazenamento. Agora com maior custo computacional, já que foi

necessária a computação do tempo de vida das variáveis.

A complexidade para a geração do grafo de estados da rede é O(K), K = { x | x

∈ • + ∧ 1 ≤ x ≤ T}. Para a definição dos tempos de vida das variáveis a complexidade

Page 106: Albano Portela Machado - UFPE

___________________________________________________________________

87

é O(K*P). Para a construção da lista ordenada de variáveis é O(V*logV) e finalmente

para mapear as variáveis aos registradores é O(V*R), R = { y | y ∈ • + ∧ 1 ≤ y ≤ V}.

Onde T representa o conjunto de transições, P é o conjunto de lugares, K é o conjunto

de estados gerados, V ⊂ P é o conjunto de variáveis e R é o conjunto de registradores.

Logo, a complexidade da abordagem proposta para o cálculo dos registradores pelo

método baseado nos tempos de vida das variáveis é O(K + K * P + V*logV + V*R).

A seguir definiremos uma abordagem formal para o método descrito.

Inicialmente definiremos variável. Uma mesma variável pode ser modelado em vários

lugares, logo necessitamos de uma função que obtenha a variável desses lugares.

Definição 5.5 – Função Var e Conjunto de Variáveis: Seja VAR = {ph, ..., pl,

..., pn} o conjunto de lugares rotulados como variáveis e uma função de nomeação l.

l (VAR) → VI, onde VI = {pi.substringj.m | i, j, n ∈ +}. var : VI → VARIAVEL é uma

função que extrai uma sub-string um elemento do conjunto VI, onde var(pi.substringj.m)

= substringj e VARIAVEL = {substringj | j ∈ +} é o conjunto de variáveis.

Após obtermos as variáveis (conjunto VARIAVEL) do comportamento dado,

precisamos definir uma matriz que contenha os tempos de vida das variáveis. Se um

elemento da matriz contiver o valor 1 significa que a variável é viva (marcada) neste

estado. A seqüência de marcas com valor 1 na coluna (entre os estados) determina o

tempo de vida da variável.

Definição 5.6 – Matriz de Tempo de Vida de Variáveis: Seja N = (P, T, A, ω,

m0, f), uma rede de Petri marked graph temporizada marcada. Seja G(N) = (V, D, h) um

grafo de estados, onde V = S(N). Seja s = (m, n, r) o estado s da Rede de Petri

temporizada N, s ∈ S(N). Seja VARIAVEL = {substringj | j ∈ +} o conjunto de

variáveis do comportamento. MTVD: S × VARIAVEL → {0,1} é definida como uma

matriz de tempo de vida de variáveis representando a marcação das variáveis em seus

respectivos estados.

Sabemos que em uma unidade de armazenamento só poderá conter variáveis nas

quais não há sobreposição de seus tempos de vida. Assim será necessário definir o que é

não-sobreposição.

Page 107: Albano Portela Machado - UFPE

___________________________________________________________________

88

Definição 5.7 – Não-Sobreposição: Seja MTVD uma matriz de tempo de vida

de variáveis. Dizemos que o tempo de vida de uma variável vi não se sobrepõe ao tempo

de vida de uma variável vj sse não estiverem marcadas no mesmo estado, ou seja, se

MTVD[sk, vi] = 1 ⇒ MTVD[sk, vj] = 0 ∨ se MTVD[sk, vi] = 0 ⇒ MTVD[sk, vj] = 1, ∀ sk ∈

S(N) ∧ ∀ vi, vj ∈ VARIAVEL.

A partir da MTVD (matriz de tempo de vida das variáveis) será feita a atribuição

das variáveis às unidades de armazenamento quando satisfeita a condição de não-

sobreposição dos tempos de vida das variáveis.

Definição 5.8 – Unidade de Armazenamento: Seja VARIAVEL = {substringj |

j ∈ +} o conjunto de variáveis do comportamento. Seja MTVD uma matriz de tempo

de vida de variáveis. REG = {substringm | m ∈ +} é definido como uma unidade de

armazenamento obtida a partir de MTVD, na qual seus elementos são variáveis que não

apresentam sobreposição dos seus tempos de vida, onde REG ⊆ VARIAVEL.

O número de unidades de armazenamento é obtido pela cardinalidade do

conjunto das unidades de armazenamento somado à cardinalidade do conjunto de

literais.

Definição 5.9 – Número de Unidades de Armazenamento: Seja REG =

{substringm | m ∈ } uma unidade de armazenamento. REGISTRADORES = {REGi | i

∈ +} é definido como o conjunto das unidades de armazenamento.

NREGISTRADORES = # REGISTRADORES + # LIT nos dá o número de Unidades de

Armazenamento necessário para implementar o comportamento de uma determinada

especificação.

5.4.3 Número e Tipo de Unidades Funcionais

O número requerido de unidades funcionais pode ser estimado de diversas

maneiras. Primeiro, o projetista do sistema pode especificar a alocação das unidades

funcionais explicitamente. Segundo, no caso em que o comportamento já tenha sido

escalonado em passos de controle, uma abordagem baseada em clique partitioning [68]

Page 108: Albano Portela Machado - UFPE

___________________________________________________________________

89

pode ser usada para determinar o número de unidades funcionais requeridas.

Finalmente, se uma restrição de desempenho (como o número máximo de passos de

controle) é especificada para o comportamento, o número mínimo de unidades

funcionais requerida para implementar o comportamento pode ser determinado usando o

algoritmo force-directed [56]. Nestas e em outras abordagens encontradas são utilizados

modelos de grafos de controle/dados, veja maiores detalhes no Capítulos 2 e 3.

Na abordagem proposta, como o modelo de fluxo dados é uma rede de Petri

marked-graph temporizada, o comportamento é escalonado em estados (ciclos de clock,

passos de controle em outros modelos) quando da geração do grafo de estados para a

rede. Neste caso, precisamos saber em qual estado acontece o disparo das transições que

modelam operações lógicas aritméticas. Diferentemente do clique partitioning, a

abordagem proposta requer a amarração das unidades funcionais, i.e., a atribuição de

operações às unidades funcionais específicas. Tal mapeamento é essencial, dado que

nos possibilita determinar o número de interconexões necessário entre as unidades de

armazenamento e unidades funcionais.

O estado s de uma rede de Petri temporizada é uma tupla s = (m, n, r), detalhes

no Capítulo 3. A Tabela 5.2 apresenta o conjunto de estados alcançáveis para ΓΓ1. A

coluna h(si), como já vimos, é o menor tempo remanescente no estado si. No início do

estado s3 foram disparadas as transições t4, t8 e t12 (coluna gk em s3) com tempos de

disparo f iguais a 15, 0 e 0 respectivamente (ver Figura 5.5). Logo que t8 e t12 terminam

seus disparos, pois apresentam o menor tempo remanescente entre as transições (r(t8) =

r(t12) = h(s3) = 0) , fichas são colocadas nos lugares de saída destas transições (p15, p16,

p19 e p20), que juntamente com o lugar p1 (coluna mi do estado s3) representam a

mudança para o estado s4. Neste estado, a transição t16 torna-se habilitada. Com o

disparo de t16, a coluna ni mostra que o estado s4 acumula dois disparos, um disparo de

t16 e outro disparo de t4. O tempo remanescente de t4 continua sendo 15 (tempo total de

execução da mesma), já que os tempos decorridos dos disparos das transições anteriores

foram zero. A transição t16 (com menor tempo remanescente, r(t16) = 0) conclui seu

disparo e como é uma transição do tipo sink (não possui lugares de saída, só consome as

fichas) não houve mudança na marcação dos lugares. Finalmente, a transição t4 (neste

Page 109: Albano Portela Machado - UFPE

___________________________________________________________________

90

momento a única transição que não conclui seu disparo, r(t4) = 15 e ni (t4) = 1, logo

h(s4) = r(t4) que é igual a 15) finaliza seu disparo. Neste caso em particular o tempo

remanescente coincide com o tempo de execução, pois não houve tempo efetivo de

consumo nas transições anteriores. Após o término do disparo da transição t4 o estado s5

é atingido, decorrido 15 unidades de tempo.

Para definirmos o tempo inicial acumulado de disparo de cada transição lógica

aritmética procedemos da mesma forma utilizada para as variáveis simultaneamente

vivas (Seção 5.3.1). No caso das variáveis verificamos o estado onde a mesma está

marcada (viva), aqui precisamos definir o estado onde a transição foi disparada. Por

exemplo, pela coluna gk da Tabela 5.2, as transições t4, t9 e t14 (que modelam a operação

aritmética soma) foram disparadas a partir dos estados s3, s7 e s10, respectivamente. Pela

Tabela 5.3 (construída para o cálculo de unidades de armazenamento) estes estados têm

tempos iniciais de 0, 15 e 30, nesta ordem. Desta forma, as transições t4, t9 e t14

apresentam tempo iniciais de disparo de 0, 15 e 30. Somando-se o tempo inicial de

disparo com o tempo de duração do disparo da transição obtemos o tempo final de

disparo, assim os tempos finais de disparo destas transições são 15, 30 e 45 unidades de

tempo, respectivamente. A Figura 5.8 mostra estas transições escalonadas por estados,

onde ocorreram os respectivos disparos.

Figura 5.8: Transições escalonadas por estados para Γ1.

Pela Figura 5.8, observamos que não há sobreposição dos intervalos de tempos

dos disparos das transições, logo, para executar este comportamento será necessário um

único somador.

Page 110: Albano Portela Machado - UFPE

___________________________________________________________________

91

A Tabela 5.5 mostra o mapeamento das transições t4, t9 e t14 à unidade funcional

UF1 que realiza a operação soma.

Tabela 5.5: Mapeamento das transições às unidades funcionais para Γ1

t4 t9 t14

UF 1 x x x

Unidades Funcionais

Transições atribuídas

A seguir descrevemos uma abordagem formal para o método descrito.

Definição 5.10 – Conjunto de Transições e Operações Lógicas/Aritméticas:

Seja N = (P, T, A, ω, m0, f), uma rede de Petri marked graph temporizada. Seja l uma

função injetora de nomeação. TLA = {th, ..., tl, ..., tn} é definido como o conjunto de

transições lógicas/aritméticas, onde l: TLA = OPLA, onde TLA ⊂ T. OPLA = {+ , −, ∗,

/, >, >=, =, <=, <} é definido como o conjunto de operações lógicas/aritméticas.

Após definirmos as transições lógicas/aritméticas é preciso mapear os disparos

iniciais de cada transição no grafo de estados.

Definição 5.11 – Matriz de Disparo de Transições: Seja N = (P, T, A, ω, m0,

f), uma rede de Petri marked graph temporizada. Seja G(N) = (V, D, h) um grafo de

estados, onde V = S(N). Seja s = (m, n, r) um estado de N (s ∈ S(N)). Seja TLA o

conjunto de transições lógicas aritméticas. MDT: TLA × S → {0,1} é uma matriz de

disparo de transições representando o estado onde ocorreu o disparo de cada transição,

onde MDT [tj, sk] = 1 sse tj é disparada no estado sk, ∀ sk ∈ S(N) ∧ ∀ tj ∈ TLA.

Para sabermos se o intervalo de duração do disparo de determinada transição

não se sobrepõe ao de outra transição é necessário definirmos os tempos iniciais e finais

acumulados de cada transição que modela uma operação lógica/aritmética.

Definição 5.12 – Função de Tempo: Seja TLA o conjunto de transições lógicas

aritméticas. τ é uma função de tempo que atribui a cada transição lógica aritmética o par

tempo de disparo inicial e final, τ: TLA = + ∪ {0}× + ∪ {0}, portanto τ(tj) = (tincio,

tfinal) onde τ(tj).tincio é igual ao tempo acumulado do estado onde ocorreu o disparo da

transição tj e τ(tj).tfinal = τ(tj).tincio + f (tj), ∀ tj ∈ TLA.

Page 111: Albano Portela Machado - UFPE

___________________________________________________________________

92

Definição 5.13 – Não-Sobreposição do Disparo Seja TLA o conjunto de

transições lógicas aritméticas. Dizemos que a duração de disparo de uma transição ti não

se sobrepõe à duração de disparo de uma transição tj sse τ(ti).τfinal ≤ τ(tj).τincio ∨ τ(tj).τfinal

≤ τ( ti).τincio, onde ti e tj ∈ TLA.

Agora definimos um conjunto que agrupa as transições cuja duração dos seus

disparos não se sobrepõem.

Definição 5.14 – Conjunto de Transições Funcionais: Seja TLA o conjunto de

transições lógicas aritméticas. Seja MDT a matriz de disparo das transições. CTFi = {th,

..., tl, ..., tn} é definido como um conjunto de transições funcionais, obtido a partir de

MDT, representando o conjunto das transições lógicas/aritméticas cuja duração dos

respectivos disparos não se sobrepõem, onde CTF ⊆ TLA.

Definido o conjunto de transições funcionais, precisamos definir conjuntos que

modelam operações específicas.

Definição 5.15 – Tipos de Conjuntos de Transições Funcionais: Seja CTFi

{th, ..., tl, ..., tn} um conjunto de transições funcionais. Seja l uma função de marcação,

onde l(t) ∈ OPLA, ∀ t ∈ CTFi. Um CTF_SOMADORj = {x | x ∈ CTFi ∧ l(x) = +} é o

conjunto de transições que modelam a operação soma. Um CTF_SUBTRATORm = {x | x

∈ CTFi ∧ l(x) = −} é o conjunto de transições que modelam a operação subtração. Um

CTF_MULTIPLICADORn = {x | x ∈ CTFi ∧ l(x) = ∗} é o conjunto de transições que

modelam a operação multiplicação. Um CTF_DIVISORr = {x | x ∈ CTFi ∧ l(x) = /} é o

conjunto de transições que modelam a operação divisão. Uma CTF_ULAs = {x | x ∈

CTFi ∧ l(x) ∈ {+, −}} é o conjunto de transições que modelam as operações soma e

divisão. Um CTF_COMPARADORt = {x | x ∈ CTFi ∧ l(x) ∈ {>, >=, =, <=, <}} é o

conjunto de transições que modelam as operações maior, maior ou igual, igual, menor

ou igual e menor. CTF_SOMADORj, CTF_SUBTRATORm, CTF_MULTIPLICADORn,

CTF_DIVISORr, CTF_ULAs e CTF_COMPARADORt são definidos como tipos de

conjuntos de transições funcionais, onde i, j, m, n, r, s, t ∈ +.

Definido os conjuntos cujas transições modelam operações específicas,

precisamos agrupar estes conjuntos, definindo conjuntos de conjuntos, e determinar a

Page 112: Albano Portela Machado - UFPE

___________________________________________________________________

93

cardinalidade dos mesmos. Cada agrupamento de conjuntos definirá um tipo de unidade

funcional (somador, ULA, etc.) e a cardinalidade deste conjunto nos dá o número de

unidades funcionais de determinado tipo no projeto.

Definição 5.16 – Conjunto dos Conjuntos de Transições Funcionais: Sejam

CTF_SOMADORj, CTF_SUBTRATORm, CTF_MULTIPLICADORn, CTF_DIVISORr,

CTF_ULAs e CTF_COMPARADORt tipos de conjuntos de transições funcionais.

CTF_SOMADORES = Uj CTF_SOMADORj é o conjunto dos conjuntos de transições

que modelam a operação soma. CTF_SUBTRATORES = Um CTF_SUBTRATORm é o

conjunto dos conjuntos de transições que modelam a operação soma.

CTF_MULTIPLICADORES = Un CTF_MULTIPLICADORn é o conjunto dos conjuntos

de transições que modelam a operação multiplicação. CTF_DIVISORES = Ur

CTF_DIVISORr é o conjunto dos conjuntos de transições que modelam a operação

divisão. CTF_ULAS = Us CTF_ULAs é o conjunto dos conjuntos de transições que

modelam as operações soma e subtração. CTF_COMPARADORES = Ut

CTF_COMPARADORt é o conjunto dos conjuntos de transições que modelam as

operações maior, maior ou igual, igual, menor ou igual e menor, onde o símbolo U (big

cup) resulta na união do conjunto de conjuntos tal que i, j, m, n, r, s, t ∈ +.

Definição 5.17 – Número e Tipos de Unidades Funcionais: Sejam

CTF_SOMADORES, CTF_SUBTRATORES, CTF_MULTIPLICADORES,

CTF_DIVISORES, CTF_ULAS, CTF_COMPARADORES os conjuntos dos conjuntos de

transições funcionais. NCTF_SOMADORES = # CTF_SOMADORES,

NCTF_SUBTRATORES = # CTF_SUBTRATORES, NCTF_MULTIPLICADORES = #

CTF_MULTIPLICADORES, NCTF_DIVISORES = # CTF_DIVISORES, NCTF_ULAS

= # CTF_ULAS, NCTF_COMPARADORES = # CTF_COMPARADORES, nos dá o

número e tipos das Unidades Funcionais necessários para implementar o

comportamento de determinada especificação.

A abordagem proposta tem como objetivo minimizar o número de unidades

funcionais a serem utilizadas em determinado comportamento. O algoritmo proposto é:

Page 113: Albano Portela Machado - UFPE

___________________________________________________________________

94

• Entrada: ΓΓ( M, f) uma rede marked-graph temporizada marcada onde M =

(N, m0) é a rede marcada e N = (P, T, A, ω) a estrutura da rede.

• Saída: O número de unidades funcionais para cada operação lógica

aritmética necessária para realizar a especificação (NCTF_SOMADORES,

NCTF_SUBTRATORES, NCTF_MULTIPLICADORES, NCTF_DIVISORES,

NCTF_ULAS, NCTF_COMPARADORES ).

Passos:

I. Compute o grafo de estados

II. Para cada estado obtenha o tempo inicial acumulado dos mesmos de acordo com a

coluna h(si) na Tabela 5.2.

III. Para cada transição o tempo de disparo inicial será igual ao do respectivo estado

onde se iniciou o disparo. Obtenha o tempo final de disparo, que será a soma do

tempo inicial do disparo com a duração do disparo (f(ti)) da respectiva transição.

IV. Ordene, em uma lista L, o conjunto de transições lógicas/aritméticas de acordo com

o tempo de disparo inicial de cada transição.

V. Para cada subconjunto definido de operações representando unidades funcionais

(somadores, ULA’s, etc.), aloque uma unidade funcional UFk e tente atribuir à

mesma transições da lista L que pertençam ao subconjunto definido. No primeiro

passo atribua a UFk uma primeira transição e busque na lista L novas transições que

não apresentem sobreposição dos intervalos de tempo de execução. Elimine da lista

L as transições do conjunto UFk.

VI. Nos demais passos são feitas novas alocações de unidades funcionais e atribuídas às

mesmas transições onde os intervalos de tempo de execução não se sobrepõem. O

algoritmo termina quando a lista L fica vazia.

VII. Calcule o número de unidades funcionais necessárias de acordo com os

subconjuntos definidos inicialmente e obtidos da lista L.

Page 114: Albano Portela Machado - UFPE

___________________________________________________________________

95

A complexidade para a geração do grafo de estados da rede é O(K), K = { x | x ∈

• + ∧ 1 ≤ x ≤ T}. Para a definição dos intervalos de disparos das transições a

complexidade é O(K*T). Para a construção da lista ordenada de transições é

O(TLA*logTLA) e finalmente para mapear as transições às unidades funcionais é

O(TLA*UF), UF = { y | y ∈ • + ∧ 1 ≤ y ≤ TLA}. Onde T representa o conjunto de

transições, K o é conjunto de estados gerados, TLA ⊂ T é o conjunto de transições

lógica/aritméticas e UF é o conjunto de unidades funcionais. Logo, a complexidade da

abordagem proposta para o cálculo das unidades funcionais é O(K + K * T +

TLA*logTLA + TLA*UF).

5.4.4 Número de Unidades de Interconexão (multiplexadores 2××1)

Depois que todas as variáveis e operações tenham sido mapeadas para unidades

de armazenamento e funcionais, podemos estimar o número de unidades de

interconexão (barramentos e/ou multiplexadores), os quais são requeridos para

interconectar as unidades de armazenamento às unidades funcionais.

Na abordagem proposta, estimamos uma implementação com multiplexadores.

Estas unidades de interconexão são estimadas diretamente a partir do modelo de fluxo

de dados temporizados (Figura 5.5) e do mapeamento de variáveis e operações para

unidades de armazenamento e funcionais, respectivamente.

Primeiro, o conjunto de conexões entre as unidades de armazenamento e

funcionais no projeto é determinado. Examinando o comportamento, visto na Figura

5.3, encontramos a instrução C := A + B. Então existe uma conexão das unidades de

armazenamento nas quais as variáveis A e B foram atribuídas com a unidade funcional

que implementa a operação de adição, e outra conexão da unidade funcional à unidade

de armazenamento na qual a variável C foi confinada. No modelo intermediário (Figura

5.5.) a instrução C := A + B é modelada pela transição t4 (t1.+) e pelos lugares p7

(p1.a.1), p9 (p1.b.1) e p12 (p1.c.1).

Page 115: Albano Portela Machado - UFPE

___________________________________________________________________

96

Como visto no Capítulo 3, Inp(p) e Out(p), denotam os conjuntos das transições

de entrada e saída de um lugar p. Enquanto Inp(t) e Out(t) representam os conjuntos dos

lugares de entrada e saída de uma transição t, respectivamente. Para exemplificar a

abordagem proposta com maiores detalhes, aplicaremos a mesma a um comportamento

fictício (timed Petri net) o qual denominaremos ΓΓ3. A Tabela 5.6 mostra um banco de

registradores com cinco unidades de armazenamento e suas respectivas variáveis

alocadas, obtidos de ΓΓ3.

Tabela 5.6: Mapeamento das variáveis para unidades de armazenamento para Γ3.

R1 a, e, h, jR2 c, g, kR3 b, iR4 d, lR5 f

Unidades de Armazenamento

Variáveis

Na Tabela 5.7, temos o mapeamento das transições às unidades funcionais. As

colunas Inp(t) e Out(Out(Out(t))) mostram os lugares representando variáveis de leitura

e escrita, respectivamente, para cada transição lógica/aritmética. Os dados desta tabela

são obtidos a partir do modelo de fluxo de dados temporizados. Na coluna instruções

são vistos as operações aritméticas executadas por cada unidade funcional. As variáveis,

nestas instruções, foram substituídas pelas suas respectivas unidades de armazenamento,

de acordo com o mapeamento da Tabela 5.6.

Tabela 5.7: Mapeamento das transições (com suas respectivas variáveis de leitura e escrita) e definição das instruções às unidades funcionais em Γ3.

t7 a, f b R3 := R1 + R5t11 e, k l R4 := R1 + R2t9 g, d f R5 := R2 + R4t3 l, b a R1 := R4 + R3

t15 c, i k R2 := R2 + R3t5 e, d f R5 := R1 + R4t1 f, k d R4:= R5 + R2

t23 i, f k R2 := R3 + R5t19 f, a c R2 := R5 + R1

t27 a, i g R2 := R1 * R3t31 c, b i R3 := R2 * R3

UF 1

UF 2

UF 3

+

+

*

Unidades Funcionais

Tipo operação Transições Inp(t) Out(Out(Out(t))) Instruções

Page 116: Albano Portela Machado - UFPE

___________________________________________________________________

97

A partir destas tabelas podemos determinar o conjunto de conexões entre as

unidades de armazenamento e funcionais no projeto. Cada unidade funcional é

composta de uma lista de conexões. Uma conexão é definida através de três atributos:

unidade de armazenamento (do tipo string, determina a unidade de armazenamento de

entrada de dados), ligação para o lado esquerdo e ligação para o lado direito (ambos

atributos booleanos que indicam a existência de ligações entre a unidade de

armazenamento de entrada e os lados esquerdo e direito da unidade funcional).

A unidade funcional UF1 (ver coluna instruções da Tabela 5.7) apresenta a

seguinte lista de instruções L1 = (R3 := R1 + R5, R4 := R1 + R2, R5 := R2 + R4, R1 := R4 + R3,

R2 := R2 + R3, R5 := R1 + R4 , R4 := R5 + R2). No primeiro passo, criamos para UF1 uma

lista de conexões C1 e duas conexões c1 e c2, logo em seguida anexamos estas duas

conexões à lista C1. Sempre que uma conexão é criada, ambos os atributos booleanos

são inicializados com o valor falso. De posse do primeiro elemento da lista L1 (R3 := R1

+ R5), para a conexão c1, atribuímos ao atributo unidade de armazenamento o valor R1 e

ao atributo ligação para lado esquerdo o valor verdadeiro. Para a conexão c2,

atribuímos ao atributo unidade de armazenamento o valor R5 e ao atributo ligação para

lado direito o valor verdadeiro. Assim, conectando as unidades de armazenamento R1 e

R5 à esquerda e à direita de UF1, respectivamente, é possível realizar a operação

aritmética desta instrução. Para o segundo elemento da lista L1 (R4 := R1 + R2), buscamos

em C1 as conexões que contêm nos atributos unidade de armazenamento os valores R1 e

R2. Verificamos que a condição é verdadeira para a conexão c1 (existe conexão para R1),

portanto cria-se a conexão c3 onde atribuímos o valor de R2 ao atributo unidade de

armazenamento. Com relação aos atributos booleanos, vemos que na conexão c1 o

atributo ligação para lado esquerdo possui valor verdadeiro e c3 os valores das ligações

para os lados esquerdo e direito são falsos. Portanto, é necessário fazer uma ligação da

conexão c3 para o lado direito da unidade funcional para que a operação possa ser

executada. Fazemos isto atribuindo o valor verdadeiro ao atributo ligação para lado

direito da conexão c3. Segue-se similarmente para os demais elementos da lista L1,

levando-se em consideração a existência de conexões para as unidades de

armazenamento e direcionando os atributos booleanos para que as operações possam ser

Page 117: Albano Portela Machado - UFPE

___________________________________________________________________

98

realizadas. A Tabela 5.8 mostra as conexões que fazem a amarração das unidades de

armazenamento à unidade funcional UF1.

Nos passos seguintes, criamos similarmente as listas de conexões para as outras

unidades funcionais. A Tabela 5.9 e a Tabela 5.10 mostram as conexões das unidades de

armazenamento às unidades funcionais UF2 e UF3, respectivamente.

Tabela 5.8: Conexões das unidades de armazenamento à unidade funcional UF1 em Γ3.

C1 R1 verdadeiro falso

C2 R5 falso verdadeiroC3 R2 verdadeiro verdadeiroC4 R4 verdadeiro verdadeiroC5 R3 verdadeiro verdadeiro

Conexões de entrada UF1 (+)

Unidades armazenamento

ligação p/ lado esquerdo UF1

ligação p/ lado direito UF1

Tabela 5.9: Conexões das unidades de armazenamento à unidade funcional UF2 em Γ3.

C1 R3 verdadeiro falsoC2 R5 falso verdadeiroC3 R1 verdadeiro falso

Conexões de entrada UF2 (+)

Unidades armazenamento

ligação p/ lado esquerdo UF2

ligação p/ lado direito UF2

Tabela 5.10: Conexões das unidades de armazenamento à unidade funcional UF3 em Γ3.

C1 R1 verdadeiro falsoC2 R3 falso verdadeiroC3 R2 verdadeiro falso

Conexões de entrada UF3 (*)

Unidades armazenamento

ligação p/ lado esquerdo UF3

ligação p/ lado direito UF3

A Figura 5.9 mostra o resultado esquemático das linhas de conexões para as

duas entradas (lados esquerdo e direito) das unidades funcionais UF1, UF2 e UF3 do

comportamento da rede de Petri timed fictícia ΓΓ3.

Uma vez que as conexões tenham sido determinadas, elas precisam ser

mapeadas em um multiplexador ou barramento. Uma estratégia simples seria

implementar o conjunto de conexões que são entradas comuns (mesmo lado da unidade

funcional) com o mesmo multiplexador ou barramento.

Page 118: Albano Portela Machado - UFPE

___________________________________________________________________

99

Figura 5.9: Conexões para as entradas das unidades funcionais: UF1, UF2 e UF3 em ΓΓ3.

Figura 5.10: Implementação para ΓΓ3 com multiplexadores 2 ××1.

A Figura 5.9 mostra que existem quatro conexões para cada entrada da unidade

funcional UF1, logo são necessários dois multiplexadores 4 × 1 ou seis multiplexadores

2 ×1 para implementar estas conexões. Para as unidades funcionais UF2 e UF3, com

duas entradas do lado esquerdo e uma entrada do lado direito é necessário apenas um

multiplexador no lado esquerdo para cada unidade funcional. Figura 5.10 mostra o

resultado da implementação utilizando-se apenas multiplexadores 2 × 1.

Figura 5.11: Conexões fatoradas para as entradas das unidades funcionais: UF1, UF2 e UF3 em ΓΓ3.

Page 119: Albano Portela Machado - UFPE

___________________________________________________________________

100

A redução no custo dos multiplexadores pode ser obtida pela fatoração das

conexões que apresentam entradas comuns para os diferentes multiplexadores. Insere-se

um multiplexador em separado, o qual servirá como entrada para cada conjunto de

conexões que apresentam entradas comuns. Por exemplo, as conexões c3, c4 e c5 são

entradas comuns para os dois lados da unidade funcional UF1. Estas conexões podem

ser “fatoradas” e implementadas no multiplexador M, como mostrado na Figura 5.11.

Figura 5.12: Redução do número de multiplexadores 2 x 1 por fatoração para ΓΓ3.

Fatorando-se as entradas do multiplexador reduz-se o número total de

multiplexadores do projeto e desta forma o custo dos multiplexadores. A Figura 5.12

mostra o resultado da implementação utilizando a abordagem proposta, foram utilizados

seis multiplexadores 2 × 1. Para realizar a implementação mostrada pela Figura 5.10

foram necessários oito multiplexadores 2 × 1, logo a implementação através da

fatoração apresentou uma redução de 25% na implementação.

Abaixo apresentamos a definição formal do método proposto para estimar o

número de Unidades de Interconexão.

Definição 5.18 – Conjunto de Lugares de Entrada de uma Transição

Lógica/Aritmética: Seja N = (P, T, A, ω, m0, f), uma rede de Petri marked graph

temporizada. Seja TLA = {th, ..., tl, ..., tn} o conjunto de transições lógicas aritméticas.

Seja VAR = {ph, ..., pl, ..., pn} o conjunto de lugares representando variáveis. Seja LIT =

{pk, ..., pj ..., pz} o conjunto de lugares representando literais. LETi (N, ti) = (pn, pm) é

Page 120: Albano Portela Machado - UFPE

___________________________________________________________________

101

uma tupla composta dos lugares de entrada da transição lógica aritmética ti, onde ti ∈

TLA ⊂ T ∧ ∀p ∈ LETi (N, ti), p ∈ VAR ∨ p ∈ LIT.

Definição 5.19 – Conjunto de constantes: Seja N = (P, T, A, ω, m0, f) uma

rede de Petri marked graph temporizada. Seja LIT = {pk, ..., pj ..., pz} o conjunto de

lugares representando literais. Seja l uma função de nomeação dos conjuntos de lugares

e transições com nomes significativos, l : P ∪ T → L , onde L = {string1, string2,...} ∧

l(p) = pr.val[k] ∀ p ∈ LIT. l : LIT→ LITC , onde LITC = {pr.val[k] | r,k ∈ +} é o

conjunto de constantes de um determinado comportamento.

Obtido os lugares de entrada das transições lógicas/aritméticas precisamos

identificar as variáveis ou constantes modeladas por estes lugares.

Definição 5.20 – Variáveis e/ou Constantes de Entrada de uma Transição

Lógica/Aritmética: Seja N = (P, T, A, ω, m0, f) uma rede de Petri marked graph

temporizada. Seja VAR = {ph, ..., pl, ..., pn} o conjunto de lugares representando

variáveis. Seja LIT = {pk, ..., pj ..., pz} o conjunto de lugares representando literais. Seja

LETi (N, ti) = (pn, pm) uma tupla dos lugares de entrada da transição lógica aritmética ti,

onde, pn, pm ∈ VAR ∨ pn, pm ∈ LIT. Seja l uma função de nomeação dos conjuntos de

lugares e transições com nomes significativos, l : P ∪ T → L , onde L = {string1,

string2,...} ∧ l (p) = pr.substrings.t ∀ pn ∈ VAR ∧ l (p) = pr.val[k] ∀ p ∈ LIT. Seja LITC

= {pr.val[k] | r,k ∈ +} o conjunto de constantes de um determinado comportamento.

VCETi(N, ti) = (x, y) é uma dupla de variáveis e/ou constantes de entrada de uma

transição lógica/aritmética, onde (x = pr.substrings.t ∨ x = pr.val[k]) ∧ (y = pr.substrings.t

∨ y = pr.val[k]) ∧ l(pn) = x ∧ l(pm) = y ∧ pn ∈ LETi (N, ti) ∧ pm = LETi(N, ti).

Identificadas as variáveis e/ou constantes modeladas pelos lugares de entrada

das transições lógicas/aritméticas precisamos saber em quais unidades de

armazenamento estes lugares formam mapeados.

Definição 5.21 – Unidades de Armazenamento de Entrada de uma

Transição Lógica/Aritmética: Seja N = (P, T, A, ω, m0, f) uma rede de Petri marked

graph temporizada. Seja VCETi(N, ti) = (x, y) uma dupla de variáveis e/ou constantes de

Page 121: Albano Portela Machado - UFPE

___________________________________________________________________

102

entrada de uma transição lógica/aritmética. Seja REGISTRADORES = {REGi | i ∈ +}

o conjunto das unidades de armazenamento, onde REGk = {substringm | m, k ∈ +}.

Seja LITC = {pr.val[k] | r,k ∈ +} o conjunto de constantes. UAETi(N, ti) = (m, n) é

uma tupla composta de unidades de armazenamento de entrada de uma transição

lógica/aritmética, onde (m ∈ REGISTRADORES ∨ m = LITC) ∧ (n ∈

REGISTRADORES ∨ n = LITC) ∧ x ∈ m ∧ y ∈ n.

A partir desta definição obtemos os registradores de entrada (armazenam

variáveis ou constantes) para cada transição lógica aritmética da rede.

Definição 5.22 – Conjunto de Pares de Registradores das Transições

Funcionais: Seja N = (P, T, A, ω, m0, f), uma rede de Petri marked graph temporizada.

Seja CTFi = {th, ..., tl, ..., tn} o conjunto de transições funcionais. Seja UAETi(N, ti) =

(m, n) uma tupla composta de unidades de armazenamento de entrada de uma transição

ti lógica/aritmética. CPRTFi(N, CTFi) = {x | x = UAETi(N, ti) ∧ ti ∈ CTFi} é o conjunto

de pares de registradores das transições funcionais.

Desta forma obtemos todos os pares de registradores (de variáveis ou

constantes) para cada conjunto de transições funcionais. O passo seguinte é a obtenção

do conjunto de conexões das unidades de armazenamento ao conjunto de transições

funcionais, antes definiremos uma função que retorne os elementos de uma tupla.

Definição 5.23 – Função Primeiro, Segundo e Terceiro: Seja K = (x, y, z) uma

tupla de elementos quaisquer, primeiro(K) = x, segundo(K) = y e terceiro(K) = z

retornam o primeiro, o segundo e o terceiro elemento de uma tupla, respectivamente.

Definição 5.24 – Conjunto de Conexões de um Conjunto de Transições

Funcionais: Seja N = (P, T, A, ω, m0, f), uma rede de Petri marked graph temporizada.

Sejam primeiro, segundo e terceiro funções que retornam o primeiro, o segundo e o

terceiro elemento de uma tupla, respectivamente. Seja CPRTFi(N, CTFi) = {r | r =

UAETi(N, ti) ∧ ti ∈ CTFi} o conjunto de pares de registradores de CTFi. Uma conexão

ck = (x, y, z) é uma tupla, onde x é uma unidade de armazenamento, y e z são atributos

booleanos que indicam se x tem ligações com os lados esquerdo e direito de CTFi,

Page 122: Albano Portela Machado - UFPE

___________________________________________________________________

103

respectivamente. CONEXÕES(N, CTFi) = {ck | k ∈ +} é o conjunto de conexões de um

conjunto de transições funcionais, onde primeiro(ck) = primeiro(r) ∨ primeiro(ck) =

segundo(r) ∧ r ∈ CPRTFi(N, CTFi) ∧ primeiro(ck) ≠ primeiro(cj) ∀ c ∈

CONEXÕES(N, CTFi).

A partir desta definição obtemos o conjunto das conexões entre as unidades de

armazenamento (de variáveis e/ou constantes) aos lados direito e/ou esquerdo do

conjunto de unidades funcionais.

Definição 5.25 – Função de Ligação: Seja ck = (x, y, z) uma conexão. link é

uma função de ligação que atribui a ck uma tupla de valor booleano, link(ck) = (a,b),

onde (a = verdadeiro ∨ a = falso) ∧ (b = verdadeiro ∨ b = falso) ∧ y = a ∧ z = b.

Através da função link é possível modelar as instruções lógica/aritméticas no

conjunto de transições funcionais. Por exemplo, se em uma conexão a e b forem

verdadeiros, significa que a unidade de armazenamento x possui ligações à direita e à

esquerda do conjunto de transições funcionais.

Definição 5.26 – Número de Unidades de Interconexão: Seja N = (P, T, A, ω,

m0, f), uma rede de Petri timed marked graph. Seja CTFi = {th, ..., tl, ..., tn} o conjunto

de transições funcionais. Sejam primeiro, segundo e terceiro funções que retornam o

primeiro, o segundo e o terceiro elemento de uma tupla, respectivamente. Seja CTF = Ui

CTFi o conjunto que contém todas os conjuntos de transições funcionais CTFi. Seja ck =

(x, y, z) uma conexão. Seja CONEXÕES (N, CTFi) = {ck | k ∈ +} o conjunto de

conexões de CTFi. CETFi = { r | r ∈ CONEXÕES (N, CTFi) ∧ segundo(r) =

verdadeiro} é o conjunto de conexões com ligações ao lado esquerdo de CTFi. CDTFi

= { s | s ∈ CONEXÕES (N, CTFi) ∧ terceiro(s) = verdadeiro} é o conjunto de conexões

com ligações ao lado direito de CTFi. NMULT2×1i(N, CTFi) = # CETFi + # CDTFi

– 2 determina o número de multiplexadores 2×1 de CTFi. TOTALMULT = 3 i∈{1,2,3 ...

#CTF} NMULT2×1i(N, CTFi) é o número de Unidades de Interconexão (multiplexadores

2×1) necessário para implementar o comportamento de determinada especificação.

Page 123: Albano Portela Machado - UFPE

___________________________________________________________________

104

A abordagem proposta objetiva minimizar o número de unidades de

interconexão de determinado comportamento. O algoritmo proposto é:

• Entrada: ΓΓ( M, f) uma rede marked-graph temporizada marcada onde M =

(N, m0) é a rede marcada e N = (P, T, A, ω) a estrutura da rede; mapeamento

das variáveis para as unidades de armazenamento e o mapeamento das

transições às unidades funcionais.

• Saída: o número de unidades de interconexão necessárias para realizar a

especificação (TOTALMULT).

Passos:

I. Para cada conjunto de transições funcionais CTFi obter a lista de transições Li.

II. Para cada transição t da lista Li obter os lugares que modelam as variáveis e/ou

constantes de leitura (inp(t)) e variáveis de escrita (Out(Out(Out(t)))) no modelo

intermediário – modelo de fluxo de dados temporizados.

III. Para cada variável e/ou constante de leitura (vi e vj) e variável de escrita (vk) obter

suas respectivas unidades de armazenamento Ri, Rj e Rk.

IV. Montar a lista de operações Lopi = { Rk := Ri op Rj, . . . } para cada conjunto de

transições funcionais, com base na operação lógica aritmética modelada pela

transição t e suas respectivas unidades de armazenamento de leitura e escrita.

V. A cada passo, para cada elemento da lista Lop, verificar a necessidade de criação de

novas conexões. Para cada conexão ci existente mapear os atributos unidade de

armazenamento, ligação para lado esquerdo e ligação para lado direito para que a

operação lógica aritmética possa ser executada. Desta forma obtemos o conjunto de

conexões para cada conjunto de transições funcionais.

VI. Para as conexões que são entradas comuns para os dois lados do conjunto de

transições funcionais, proceder com o processo de fatoração. Desta forma

diminuímos a quantidade de multiplexadores no projeto.

VII. A quantidade de multiplexadores 2×1 para cada unidade funcional é obtida pelo

número de conexões – 2 e o total de multiplexadores 2×1 pelo somatório.

Page 124: Albano Portela Machado - UFPE

___________________________________________________________________

105

A complexidade para a obtenção das variáveis e/ou constantes de entrada de

cada transição lógica/aritmética é O(TLA*P). Para a determinação do conjunto de pares

de registradores de cada unidade funcional – lista de operações LOPi é O(V*R), R = { y

| y ∈ • + ∧ 1 ≤ y ≤ V}. Para determinar o conjunto de conexões Ci de cada unidade

funcional a complexidade é O(LOP* C). Onde P é o conjunto de lugares, TLA ⊂ T é o

conjunto de transições lógica/aritméticas, V ⊂ P é o conjunto de variáveis e R é o

conjunto de registradores, LOP é o conjunto de pares de registradores e C é o conjunto

de conexões. Logo, a complexidade da abordagem proposta para o cálculo das unidades

de interconexão é O(TLA*P + V*R + LOP* C).

Agora vamos aplicar o algoritmo proposto acima à Rede de Petri temporizada

ΓΓ1 (modelo utilizado para demonstrar nossa abordagem), mostrada pela Figura 5.5. As

duas entradas restantes: mapeamento das variáveis para as unidades de armazenamento

e das transições para as unidades funcionais é dada pela Tabela 5.4 e pela Tabela 5.5,

respectivamente. De acordo com a Tabela 5.5, a lista de transições para a única unidade

funcional do projeto UF1 é L1 = {t4, t9, t14}. A Tabela 5.11 mostra os lugares que

modelam as variáveis de leitura (coluna Inp(t)) e escrita (coluna Out(Out(Out(t))))

obtidos a partir do modelo intermediário de fluxo de dados temporizados (Figura 5.5),

bem como a lista de operações Lop1 = {R3:= R1 + R2, R2:= R2 + R3, R2:= R1 + R2} com

suas respectivas unidades de armazenamento de entrada e escrita, já mapeadas com base

na Tabela 5.4.

Tabela 5.11: Mapeamento das transições à unidade funcional UF1 e suas respectivas instruções aritméticas para Γ1.

t4 a, b c R3 := R1 + R2t9 b, c d R2 := R2 + R3

t14 a, d b R2 := R1 + R2UF 1 +

Unidades Funcionais

Tipo operação

Out(Out(Out(t))) InstruçõesTransições Inp(t)

Tabela 5.12: Conexões unidades armazenamento com a unidade funcional UF1 para Γ1.

C1 R1 sim nãoC2 R2 não simC3 R3 sim não

Conexões de entrada UF1 (+)

Unidades armazenamento

link p/ lado esquerdo UF1

link p/ lado direito UF1

Page 125: Albano Portela Machado - UFPE

___________________________________________________________________

106

Após a execução dos passos sobre a lista Lop1 obtemos o conjunto de conexões

mostrado na Tabela 5.12. Estas linhas de conexões para as duas entradas da unidade

funcional UF1 é melhor visualizada pelo esquemático da Figura 5.13(a). O projeto final

do caminho de dados (unidades de armazenamento, funcionais e de armazenamento –

multiplexadores 2×1) é visto na Figura 5.13(b). Finalizando, para a o comportamento

mostrado na Figura 5.3, o qual foi traduzido para um modelo intermediário em redes de

Petri temporizada (timed) ΓΓ1 mostrado pela Figura 5.5, foi gerada uma estimativa para

uma implementação do caminho de dados de três unidades de armazenamento, um

multiplexador 2×1 e uma unidade funcional (somador). O próximo passo é obter a

estimativa de área de acordo com tecnologia a ser utilizada, FPGAs, full custom entre

outras.

Figura 5.13: (a) Conexões para as duas entrada da unidade funcional (b) Implementação do projeto final para ΓΓ1.

5.4.5 Área do Caminho de Dados

Depois da descrição dos métodos para estimar as unidades de armazenamento,

funcionais e de interconexão no caminho de dados, veremos agora como calcular a área

total do mesmo. Para determinar a área do caminho de dados é necessário calcular as

áreas das unidades que o constitui e depois realizar somatório das mesmas. A seguir

definiremos formalmente a área de cada unidade.

A área das unidades funcionais é calculada levando-se em consideração o

número de unidades funcionais de determinado tipo vezes a área associada ao operador

que implementa esta operação. Realiza-se o somatório para cada processo dentro do

Page 126: Albano Portela Machado - UFPE

___________________________________________________________________

107

conjunto de processos NS (Net Set – conjunto de sub-redes modelando processos) da

especificação.

Definição 5.27 – Área das unidades funcionais: Seja FUN(NS, opl) o número

unidades funcionais do tipo opl relativo a um conjunto de processos NS. Seja OPS(NS) o

conjunto de tipos de operações distintas no conjunto de processos NS. Seja opj uma

operação dentro de uma expressão lógica aritmética e. AHUF(NS) = 3 ∀opl∈OPS(NS)

FUN(NS, opl) × AHopl nos dá a área das unidade funcionais que executam um conjunto

de processos, onde AHopl é a área associada ao operador que implementa uma operação

do tipo opl, considerando o tipo de dado fornecido (número de bits).

A área total de leitura/escrita necessária para implementar as unidades de

armazenamento é estimada levando em consideração o produto do número de bits de

cada unidade de armazenamento (usada para mapear um subconjunto ou todas as

variáveis do conjunto de processos NS) pela área de hardware necessária para

implementar uma unidade de armazenamento de um bit. Realiza-se o somatório para

cada elemento do conjunto de unidades de armazenamento que implementa NS.

Definição 5.28 – Área das unidades de armazenamento: Seja VS(NS) o

conjunto de todas as variáveis utilizadas no conjunto de processos NS = {pro, ..., pri, ...,

prn}. Seja RS(NS) o conjunto de todas as unidades de armazenamento necessárias para

implementar este conjunto de variáveis. Seja NOB(Ri) o número de bits de uma unidade

de armazenamento Ri ∈ RS(NS) e AHb a área de hardware necessária para implementar

uma unidade de armazenamento de um bit. AHrw(NS) = 3 ∀Ri∈RS(NS) NOB(Ri) × AHb

estima a área de armazenamento de hardware de um conjunto de processos NS.

A área total de multiplexadores de um conjunto de processos simples NS é

estimada através do somatório da área do multiplexador de cada processo membro do

conjunto NS. A área de um multiplexador é calculada multiplicando a área de um

multiplexador 2 x 1 de um bit pela largura da palavra.

Definição 5.29 – Área das unidades de interconexão (multiplexadores): Seja

NS = {pro, ..., pri, ..., prn} um conjunto de processo simples. Seja MS(NS) o conjunto de

todas os multiplexadores 2×1 utilizadas no conjunto de processos NS. Seja NOB(Mi) o

Page 127: Albano Portela Machado - UFPE

___________________________________________________________________

108

número de bits de um multiplexador 2×1. Mi ∈ MS(NS) e AM1 a área de hardware

necessária para implementar um multiplexador 2×1 de um bit. AHM2×1(NS) = 3 ∀Mi∈MS(NS)

NOB(Mi) × AM1 estima a área de multiplexadores 2×1 de um dado conjunto de

processos simples NS.

Definição 5.30 – Área do data-path: Seja AHop(NS), AHrw(NS) e AHm(NS) as

áreas das unidades funcionais, de armazenamento e de interconexão (multiplexadores),

respectivamente. AHdp = AHop(NS) + AHrw(NS) + AHM2×1(NS) estima a área do caminho

de dados de um conjunto de processos simples NS.

5.5 Conclusões

Neste capítulo foi apresentada a abordagem para o cálculo da estimativa de área

do caminho de dados: unidades de armazenamento, funcionais e de interconexão.

Vimos que o modelo intermediário baseado em redes de Petri temporizadas é obtido

pela tradução de uma especificação em occam. O sistema de estimativa de área de

hardware implementado neste trabalho é baseado em diversos métodos para o cálculo da

área de cada componente do caminho de dados. Para as unidades de armazenamento foi

utilizado dois métodos: o método baseado nas variáveis simultaneamente “vivas” e o

método baseado nos tempos de vida das variáveis. O primeiro método é mais simples e

é baseado na contagem das variáveis simultaneamente vivas em cada estado do grafo de

alcançabilidade, gerado a partir do modelo intermediário pela ferramenta INA. O(os)

estado(s) com o maior número de variáveis simultaneamente vivas são selecionados. O

número destas variáveis nestes estados determina o limite inferior das unidades de

armazenamento do projeto. O segundo método é baseado na sobreposição do tempo de

vida das variáveis, isto é, se os tempos de vida de duas variáveis não se sobrepõem, as

mesmas podem ocupar a mesma unidade de armazenamento. O segundo método foi

escolhido pois para o cálculo dos multiplexadores é necessário definir em quais

unidades de armazenamento as variáveis foram alocadas.

Page 128: Albano Portela Machado - UFPE

___________________________________________________________________

109

Para as unidades funcionais a metodologia proposta é baseada na sobreposição

dos intervalos dos tempos de execução das transições que modelam operações lógicas e

aritméticas, isto é, se os intervalos de tempo de execução de duas transições

lógicas/aritméticas não se sobrepõem, as mesmas podem ocupar a mesma unidade

funcional daquela operação específica. Desta forma obtemos as unidades funcionais

necessárias ao projeto.

Definido o mapeamento das variáveis às unidades de armazenamento e das

transições lógicas e aritméticas às unidades funcionais é possível determinar o número

de unidades de interconexão. A metodologia proposta é definir as conexões com base

nestes dois mapeamentos e no modelo intermediário (onde é modelada a ligação das

variáveis às transições lógicas aritméticas/aritméticas). Substituindo-se as variáveis por

unidades de armazenamento e as transições por unidades funcionais estabelecemos as

conexões entre as unidades de armazenamento e funcionais. Com base no número de

conexões calculamos o número de multiplexadores 2×1.

Com posse do número e tipo de cada componente do caminho dados calcula-se a

área, em função do o estilo de projeto definido, para cada componente. A área total é

obtida pelo somatório da área de cada componente.

Page 129: Albano Portela Machado - UFPE

6 Estudos de casos

Neste capítulo, objetivando a validação da metodologia proposta, são apresentados os resultados de estimativas de área de hardware (caminho de dados) com base em quatro aplicações: um pequeno exemplo, Equação Diferencial de 2a Ordem, Filtro de Ondas Elíptico de 5a Ordem e finalmente a uma máquina de refrigerantes. Inicialmente, será feita uma breve descrição de cada sistema. A seguir, são apresentados os resultados da estimativa de área do caminho de dados. Finalmente os dados são comparados com implementações reais e/ou estimativas realizadas por outras abordagens.

6.1 Um Pequeno Exemplo

Nesta seção, tomamos o comportamento escalonado e tempo de vida das

variáveis (ver Figura 6.1) o qual chamamos de pequeno exemplo e aplicamos a

metodologia proposta para estimarmos o caminho de dados – unidades funcionais, de

armazenamento e de interconexão (multiplexadores 2×1).

6.1.1 Descrição

O pequeno exemplo é utilizado de forma didática, para demonstrar a abordagem

da metodologia clique partitioning em [21]. O comportamento do pequeno exemplo

apresenta onze variáveis escalonadas em expressões entre cinco estados. A partir deste

escalonamento foi gerado o código em occam de forma a representar este

comportamento, conforme visto na Figura 6.2. Finalmente, geramos o caminho de

dados utilizando-se unidades lógica/aritméticas (ALU’s) combinadas com componentes

específicos (executam uma única operação – somador, multiplicador, etc.).

Page 130: Albano Portela Machado - UFPE

___________________________________________________________________

111

+

++

Figura 6.1: Comportamento escalonado e tempo de vida das variáveis

PAR INT v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11: SEQ v3:=v1+v2 PAR v5:=v6*v3 v7:=v3-v4 PAR v11:=v10*v5 v8:=v5+v3 v9:=v7+v1 PAR v1:=v11-v8 v2:=v8*v9 Figura 6.2: Descrição em occam do pequeno exemplo

6.1.2 Unidades de Armazenamento

Nesta seção utilizaremos dois métodos: o método baseado na análise das

variáveis simultaneamente vivas por estados e o método baseado nos tempos de vidas

das variáveis. O segundo método é uma continuação do primeiro, onde é feito o

mapeamento das variáveis nas unidades de armazenamento.

6.1.2.1 Método Baseado na Análise das Variáveis Simultaneamente Vivas.

O primeiro passo é traduzir a especificação em occam em um modelo

intermediário em redes de Petri. Fazemos isto através do uso da ferramenta depend

desenvolvido por [47] . Desta forma obtemos o modelo visto na Figura 6. 3.

Page 131: Albano Portela Machado - UFPE

___________________________________________________________________

112

0 :p1 .start

0 : t1 . start

1 :p1 .dum m y

1 :t1 .end

2 :p1 .end

3 :p1 .v1 .0

2 : t1 .c lone

4 :p1 .v2 .0

3 : t1 .c lone

5 :p1 .v3 .0

6 : t1 . s ink

6 :p1 .v4 .0

1 5 : t1 .c lone

7 :p1 .v5 .0

1 3 : t1 . sink

8 :p1 .v6 .0

9 : t1 .c lone

9 :p1 .v7 .0

1 8 : t1 . sink

1 0 :p1 .v8 .0

3 0 : t1 . sink

1 1 :p1 .v9 .0

3 5 : t1 . sink

1 2 :p1 .v1 0 .0

2 1 : t1 .c lone

1 3 :p1 .v1 1 .0

2 5 : t1 . sink

1 4 :p1 .v1 .1

4 : t1 .+

1 5 :p1 .v1 .2

3 2 : t1 .c lone

1 6 :p1 .v2 .1 1 7 :p1 .v2 .2

4 7 : t1 . sink

1 8 :p1 .va l

5 : t1 . :=

1 9 :p1 .v3 .1

1 0 : t1 .c lone

2 0 :p1 .start

7 : t1 . start

2 1 :p1 .dum m y

8 :t1 .end

2 2 :p1 .end

2 3 :p1 .v6 .1

1 1 : t1 .*

2 4 :p1 .v6 .2

2 5 :p1 .v3 .22 6 :p1 .v3 .3

1 4 : t1 .c lone

2 7 :p1 .va l

1 2 : t1 . :=

2 8 :p1 .v5 .1

2 2 : t1 .c lone

2 9 :p1 .v3 .4

1 6 : t1 . - 3 0 :p1 .v3 .5

2 7 : t1 .c lone

3 1 :p1 .v4 .1

3 2 :p1 .v4 .2

3 3 :p1 .va l

1 7 : t1 . :=

3 4 :p1 .v7 .1

3 1 : t1 .c lone

3 5 :p1 .start

1 9 : t1 . start

3 6 :p1 .dum m y

2 0 :t1 .end

3 7 :p1 .end

3 8 :p1 .v1 0 .1

2 3 : t1 .*

3 9 :p1 .v1 0 .2

4 0 :p1 .v5 .24 1 :p1 .v5 .3

2 6 : t1 .c lone

4 2 :p1 .va l

2 4 : t1 . :=

4 3 :p1 .v1 1 .1

3 8 : t1 .c lone

4 4 :p1 .v5 .4

2 8 : t1 .+

4 5 :p1 .v5 .5

4 6 :p1 .v3 .6

4 7 :p1 .v3 .7

4 8 :p1 .va l

2 9 : t1 . :=

4 9 :p1 .v8 .1

3 9 : t1 .c lone

5 0 :p1 .v7 .2

3 3 : t1 .+

5 1 :p1 .v7 .3

5 2 :p1 .v1 .3

5 3 :p1 .v1 .4

4 2 : t1 . sink

5 4 :p1 .va l

3 4 : t1 . :=

5 5 :p1 .v9 .1

4 4 : t1 .c lone

5 6 :p1 .start

3 6 : t1 . start

5 7 :p1 .dum m y

3 7 :t1 .end

5 8 :p1 .end

5 9 :p1 .v1 1 .2

4 0 : t1 . - 6 0 :p1 .v1 1 .3

6 1 :p1 .v8 .26 2 :p1 .v8 .3

4 3 : t1 .c lone

6 3 :p1 .va l

4 1 : t1 . :=

6 4 :p1 .v1 .5

6 5 :p1 .v8 .4

4 5 : t1 .* 6 6 :p1 .v8 .5

6 7 :p1 .v9 .2

6 8 :p1 .v9 .3

6 9 :p1 .va l

4 6 : t1 . :=

7 0 :p1 .v2 .3

Figura 6. 3: Pequeno Exemplo: Modelo Intermediário do Fluxo de Dados

Page 132: Albano Portela Machado - UFPE

___________________________________________________________________

113

Definido o estilo de projeto adotado para a implementação desta especificação,

associamos tempo (delay) às transições que modelam as operações lógicas/ aritméticas,

obtendo o modelo intermediário (rede de Petri marked-graph temporizada marcada)

utilizado para a geração do grafo de estados da rede. Este grafo apresenta 27 estados.

No Apêndice A disponibilizamos uma versão textual deste grafo (gerada pela

ferramenta INA) para que o leitor possa analisá-lo.

A Tabela 6.1 mostra os estados com o maior número de variáveis

simultaneamente vivas: s2, s3, s6 e s7 com cinco variáveis. Desta forma são estimadas

cinco unidades de armazenamento para a implementação do pequeno exemplo.

Tabela 6.1: Pequeno Exemplo: variáveis simultaneamente vivas por estados

Estadoss 2

s 3

s 6

s 7 v 1 , v 3 , v 4 , v 6 , v 10

v 1 , v 3 , v 4 , v 6 , v 10

Variáveis simutaneamente vivasv 1 , v 2 , v 4 , v 6 , v 10

v 1 , v 2 , v 4 , v 6 , v 10

6.1.2.2 Método Baseado nos Tempos de Vida das Variáveis.

A partir do grafo de estados gerado do modelo de dados, construímos uma

matriz (ver Tabela 6.2) onde identificamos em quais estados as variáveis estão vivas

(marcadas). A seqüência de estados onde a variável é marcada (coluna da matriz)

constitui o tempo de vida da mesma. A coluna Total nos dá a quantidade de variáveis

vivas por estados, total este obtido pelo método da seção anterior. As variáveis que não

apresentam sobreposição dos seus tempos de vida podem ocupar a mesma unidade de

armazenamento, como acontece, por exemplo, com as variáveis v1 e v11. Ocorrendo

sobreposição, as variáveis não podem compartilhar a mesma unidade de

armazenamento, como acontece com a variável v1 e v2. As colunas que apresentam as

mesmas hachuras são as variáveis que não apresentam sobreposição em seus tempos de

vida e que compartilham a mesma unidade de armazenamento.

Após a análise dos tempos de vida das variáveis, obtivemos o resultado final do

mapeamento das variáveis para as unidades de armazenamento (visto na Tabela 6.3).

Page 133: Albano Portela Machado - UFPE

___________________________________________________________________

114

Nesta tabela observamos que foram necessárias cinco unidades de armazenamento para

mapear todas as variáveis, resultado este que vem corroborar o método anterior.

Tabela 6.2: Pequeno Exemplo: Tempo de vida das variáveis.

v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11S1 0S2 • • • • • 5S3 • • • • • 5S4 • • • • 4S5 • • • • 4S6 • • • • • 5S7 • • • • • 5S8 • • • • 4S9 • • • 3S10 • • • • 4S11 • • • • 4S12 • • 2S13 • • • 3S14 • • • 3S15 • • 2S16 0S17 • 1S18 • 1S19 • • 2S20 • • 2S21 • • 2S22 • 1S23 • • 2S24 • • 2S25 0S26 0S27 0

TotalVariáveisEstados

Tabela 6.3: Pequeno Exemplo: Resultado final do mapeamento das variáveis para os registradores

v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11R1 • • • •R2 • • •R3 • •R4 •R5 •

Unidades de armazenamento

Variáveis atribuídas

6.1.3 Unidades Funcionais

A Tabela 6.4 mostra os tempos iniciais e finais de disparo das transições do

pequeno exemplo. Vimos que o tempo inicial de disparo da transição é dado pelo tempo

Page 134: Albano Portela Machado - UFPE

___________________________________________________________________

115

inicial do estado onde a transição foi disparada. O tempo de disparo final é a soma do

tempo de disparo inicial com a duração do disparo da transição.

Tabela 6.4: Pequeno Exemplo:Tempos de disparos iniciais e finais das transições

s3 0 t4 + 15 15s7 15 t11 * 24 39s8 15 t16 - 15 30s11 30 t33 + 15 45s14 39 t23 * 24 63s15 39 t28 + 15 54s21 54 t45 * 24 78s24 63 t40 - 15 78

Duração disparo

Tempo de disparo final

Tempo de disparo inicialEstados Transições Operação

lógica/arit.

A Figura 6.4 mostra a lista de transições ordenadas de forma ascendente

levando-se em consideração o tempo inicial de disparo. A partir desta lista mapeamos as

transições em unidades funcionais levando-se em consideração a não-sobreposição dos

seus intervalos de tempos de disparos, isto é, se não houver sobreposição dos tempos de

disparos, as transições podem ser atribuídas à mesma unidade funcional. A Figura 6.5

mostra o resultado final do mapeamento das transições nas unidades funcionais após a

aplicação da metodologia proposta. Neste caso foram necessárias duas ULA’s (ULA 1

que executa as operações modeladas pelas transições t4, t16, t33, t45 e ULA2 pelas

transições t11, t28 e t40 ) e um multiplicador responsável pela realização da operação

representada pela transição t23.

Figura 6.4: Pequeno Exemplo: Tempos de disparos das transições ordenados no tempo.

Page 135: Albano Portela Machado - UFPE

___________________________________________________________________

116

Figura 6.5: Pequeno Exemplo: Resultado do mapeamento das transições lógicas/aritméticas nas unidades funcionais.

6.1.4 Unidades de Interconexão (multiplexadores 2××1)

A lista de transições para cada unidade funcional é mostrada na Tabela 6.5. As

variáveis de leitura e escrita estão definidas nas colunas inp(t) e Out(Out(Out(t))).A

coluna Tipo Operação mostra as operações executadas pela unidade funcional no

comportamento. A coluna instruções é obtida a partir do mapeamento destas variáveis

(nas expressões lógicas/aritméticas) para as unidades de armazenamento de acordo com

a Tabela 6.3.

Tabela 6.5: Pequeno Exemplo – Mapeamento das transições (com suas instruções) para as unidades funcionais utilizando somente componentes isolados.

t4 v1, v2 v3 R2 := R1 + R2t16 v3, v4 v7 R3 := R2 - R3t33 v1, v7 v9 R1 := R1 + R3t45 v9, v8 v2 R2 := R1 * R2t11 v3, v6 v5 R1 := R2 * R4t28 v3, v5 v8 R2 := R2 + R1t40 v8, v11 v1 R1 := R2 - R1

UF 3 * t23 v5, v10 v11 R1 := R1 * R5

ULA1

ULA2

-, +, *

-, +, *

Out(Out(Out(t))) InstruçõesUnidades

FuncionaisTipo

operaçãoTransições Inp(t)

Tabela 6.6: Pequeno Exemplo – Conexões das unidades de armazenamento às unidade funcionais.

C1 R3 sim simC2 R2 não simC3 R1 sim nãoC1 R4 não simC2 R1 não simC3 R2 sim nãoC1 R5 não simC2 R1 sim não

UF3

ULA1

ULA2

link p/ lado direito

Unidades funcionais

Conexões de entrada

Unidades armazenamento

link p/ lado esquerdo

Page 136: Albano Portela Machado - UFPE

___________________________________________________________________

117

A Tabela 6.6 mostra o conjunto de conexões das unidades de armazenamento à

cada unidade funcional. Por exemplo, a conexão c1 nos diz que existe uma ligação do

registrador R3 aos lados direito e esquerdo da unidade funcional ULA1. Baseado neste

conjunto de conexões o algoritmo proposto chega à estimativa final do caminho de

dados utilizando-se multiplexadores 2×1 (ver Figura 6.6). Foram estimados três

multiplexadores 2×1 para realizar o comportamento.

Figura 6.6: Pequeno Exemplo – Caminho de dados com multiplexadores 2××1.

6.1.5 Comparações

O resultado obtido pela aplicação da abordagem do clique partitioning em [21]

para o pequeno exemplo foi de cinco registradores para mapear onze variáveis

existentes. Infelizmente, este método é um problema NP-hard. Na prática heurísticas

gulosas (greedy) são empregadas [1]. Vemos que nosso algoritmo encontra os mesmos

resultados do clique partitioning, isto é, cinco unidades de armazenamento, a uma

complexidade menor. Em [21] não foram fornecidos dados relativos às unidades de

armazenamento e de interconexão.

6.2 Equação Diferencial de 2a Ordem.

Nesta seção nos aplicamos a abordagem proposta à equação diferencial de 2a

ordem, onde obtivemos a estimativa do caminho de dados.

Page 137: Albano Portela Machado - UFPE

___________________________________________________________________

118

6.2.1 Descrição

Este benchmark, proveniente do 1992 High Level Synthesis Workshop, prover a

descrição de hardware para um pequeno laço de ponto-fixo. O algoritmo tenta resolver

numericamente a equação

y" + 3xy’ + 3y = 0

Aqui, assumindo-se que u representa dy/dx ou y’ . dx é aproximado como x1 – x.

Similarmente, dy = y1 – y e du = u1 – u. O valor ‘a’ fornece o número de vezes que o

laço numérico é executado. u1, x1 e y1 representa os novos valores de u, x e y. Deste

modo, x1 = x + dx, y1 = udx + y, u1 = u – 3xudx – 3ydx. O comportamento carrega os

valores iniciais de x, y, u, dx e a. Este benchmark foi derivado de [5].

Para este benchmark foi escrita uma especificação em occam, a partir da

especificação original em VHDL. A partir da especificação em occam, foi gerado com a

ferramenta depend [47] o modelo intermediário em redes de Petri. As especificações em

VHDL e em occam, bem como o modelo textual e um esquemático gráfico da rede de

Petri encontram-se no Apêndice B.

6.2.2 Unidades de Armazenamento

Aplicamos, nesta seção, duas metodologias à equação diferencial de 2a ordem

para a estimativa das unidades de armazenamento: método baseado nas variáveis

simultaneamente vivas e o método baseado nos tempos de vida das variáveis.

6.2.2.1 Método Baseado nas Variáveis Simultaneamente Vivas.

De posse do modelo intermediário gerado e depois de associados os tempos

(delay em ns) às transições lógicas/aritméticas, obtivemos o modelo temporizado

(marked timed Petri net) em redes de Petri. O grafo de estados gerado para este modelo

apresentou 34 estados. A Tabela 6.7 mostra os estados com o maior número de

variáveis simultaneamente vivas: s18 e s19 com seis variáveis. Logo foram estimados seis

registradores, necessários para a implementação da equação diferencial de 2a ordem.

Page 138: Albano Portela Machado - UFPE

___________________________________________________________________

119

Tabela 6.7: Equação Diferencial de 2a Ordem: variáveis simultaneamente vivas

Estadoss 18

s 19

y_var, u_var, dx_var, t1, t3, t2y_var, u_var, t3, dx_var, t2, t1

Variáveis simutaneamente vivas

6.2.2.2 Método Baseado nos Tempos de Vida das Variáveis.

Tabela 6.8: Equação Diferencial de 2a Ordem: Tempo de vida das variáveis.

x_var y_var u_var a_var dx_var x1 y1 t1 t2 t3 t4 t5 t6S1 0S2 0S3 • • • • • 5S4 • • • • • 5S5 • • • • • 5S6 • • • • • 5S7 • • • • • 5S8 • • • • • 5S9 • • • • • 5S10 • • • • • 5S11 • • • • 4S12 • • • • 4S13 • • • • 4S14 • • • 3S15 • • • • 4S16 • • • • 4S17 • • • • 4S18 • • • • • • 6S19 • • • • • • 6S20 • • • 3S21 • • • • • 5S22 • • • • • 5S23 • • • 3S24 • • • • 4S25 • • • • 4S26 • • 2S27 • • • 3S28 • • • 3S29 • 1S30 • • 2S31 • • 2S32 0S33 0S34 0

TotalEstados Variáveis

A partir do grafo de estados gerado através da ferramenta INA, construímos uma

matriz onde identificamos em quais estados as variáveis estão vivas (marcadas). O

resultado é visto na Tabela 6.8. A coluna Total nos dá a quantidade de variáveis vivas

por estados, total este obtido pelo método da seção anterior. As áreas que apresentam as

mesmas hachuras, representam a mesma unidade de armazenamento. Nestas, os tempos

Page 139: Albano Portela Machado - UFPE

___________________________________________________________________

120

de vida das variáveis não se sobrepõem. O resultado final do mapeamento das variáveis

para as unidades de armazenamento, após a análise dos tempos de vida das variáveis é

mostrada na Tabela 6.9. Nesta tabela observamos que foram necessárias seis unidades

de armazenamento para mapear todas as variáveis, resultado este que vem corroborar o

método anterior (estados s18 e s19 com o maior número de variáveis simultaneamente

vivas).

Tabela 6.9:Equação Diferencial de 2a Ordem: Resultado final do mapeamento das variáveis para os registradores

x_var y_var u_var a_var dx_var x1 y1 t1 t2 t3 t4 t5 t6R1 • • • • •R2 • • •R3 •R4 •R5 •R6 •

VariáveisUnidades de armazenamento

6.2.3 Unidades Funcionais

Tabela 6.10: Equação Diferencial de 2a Ordem:Tempos de disparos iniciais e finais das transições

s4 0 t16 < 15 15s4 0 t21 * 25 25s7 0 t64 + 15 15

s10 15 t69 < 15 30s13 15 t29 * 25 40s13 15 t25 * 25 40s19 40 t39 * 25 65s19 40 t34 * 25 65s22 65 t44 - 15 80s25 80 t49 - 15 95s28 95 t54 * 25 120s31 120 t59 + 15 135

Estados Tempo de disparo final

Tempo de disparo inicial Transições Operação

lógica/arit.Duração disparo

A Tabela 6.10 mostra os tempos iniciais e finais de disparo das transições da

Equação Diferencial de 2a Ordem. Tendo como base os dados desta tabela, o algoritmo

proposto mapeia as transições para as unidades funcionais tendo em vista a política de

sobreposição (ou não) dos intervalos do tempo de disparo. A Tabela 6.11 mostra o

resultado do mapeamento das transições (operações lógicas/aritméticas) nas unidades

funcionais. Foram estimadas cinco unidades funcionais: ULA1 (responsável pelas

Page 140: Albano Portela Machado - UFPE

___________________________________________________________________

121

operações soma, subtração e comparação), Comparador1 (operação de comparação) e

três multiplicadores. A utilização de ULAs combinadas com componentes específicos

resulta em uma economia de projeto.

Tabela 6.11: Equação Diferencial de 2a Ordem: Resultado do mapeamento das transições (operações lógicas aritméticas) nas unidades funcionais.

t16 t21 t25 t29 t34 t39 t44 t49 t54 t59 t64 t69ULA 1 +, -, < x x x x x

Comparador1 < xMultiplicador1 * x x xMultiplicador2 * x xMultiplicador3 * x

Unidades funcionais

Operações realizadas

Transições atribuidas

6.2.4 Unidades de Interconexão (multiplexadores 2××1)

A lista de transições (modelam operações lógicas/aritméticas), com seus

respectivos lugares de entrada e saída, para cada unidade funcional é mostrada na

Tabela 6.12. A coluna instruções é obtida a partir do mapeamento das variáveis (nas

expressões lógicas aritméticas) para as unidades de armazenamento de acordo com a

Tabela 6.9.

Tabela 6.12: Equação Diferencial de 2a Ordem: Mapeamento das transições (e suas respectivas instruções) para as unidades funcionais.

t44 t4, u_var t6 R1 := R1 - R5t49 t5, t6 u_var R5 := R2 - R1t59 y1, y_var y_var R4 := R1 + R4t64 dx_var, x_var x_var R1 := R3 + R1t69 a_var, x_var ........................ R2 < R1

Somador 1 < t16 a_var, x_var ........................ R2 < R1t21 dx_var, u_var t1 R1 := R3 * R5t39 t3, dx_var t5 R2 := R6 * R3t54 dx_var, u_var y1 R1 := R3 * R5t29 y_var, val[3] t3 R6 := R4 * L[3]t34 t2, t1 t4 R1 := R2 * R1

Multiplicador3 * t25 x_var, val[3] t2 R2 := R1 * L[3]

Unidades Funcionais

Tipo operação Transições Inp(t) Out(Out(Out(t))) Instruções

ULA 1 +, -, <

*

Multiplicador2*

Multiplicador1

A Tabela 6.13 mostra o conjunto de conexões das unidades de armazenamento

às unidades funcionais após a execução do algoritmo. Vemos que na ULA1 existe uma

conexão do lado esquerdo e quatro conexões do lado direito, logo são necessários três

Page 141: Albano Portela Machado - UFPE

___________________________________________________________________

122

multiplexadorores 2×1 no lado direito desta unidade (o número de multiplexadores 2×1

em cada lado da unidade funcional é dado pelo numero de ligações em cada lado menos

um). Logo, um total de seis multiplexadores 2×1 é estimado para realizar a Equação

Diferencial de 2a Ordem.

Tabela 6.13:Equação Diferencial de 2a Ordem: Conexões das unidades de armazenamento às unidade funcionais.

Esquerdo Direito Esquerdo DireitoC1 R3 não simC2 R5 não simC3 R2 não simC4 R4 não simC5 R1 sim nãoC1 R1 não simC2 R2 sim nãoC1 R6 não simC2 R5 não simC3 R3 sim nãoC1 L[3] não simC2 R4 sim nãoC3 R1 não simC4 R2 sim nãoC1 L[3] não simC2 R1 sim não

0

1

2 2 1 1

N° de multiplexadores

1 4 0 3

N° de links Conexões de entrada

Unidades armazenamento

link p/ lado esquerdo

link p/ lado direito

Unidades Funcionais

Multiplicador2

ULA 1

1 0

1 0

2 0

ULA 2 1

Multiplicador1 1

Multiplicador3 1 0

6.2.5 Comparações

Resultados experimentais deste benchmark são dados na Tabela 6.14.

Basicamente, comparamos nossos resultados com LBE[53], ILP[61] e Maciel[38].

Tabela 6.14: Equação Diferencial de 2a Ordem: Resultados

Variáveis LiteraisLBE [53] 2(ULA's), 3(*) 6 1 • •ILP [61] 2(ULA's), 2(*) 4 2 • •

Maciel [38] • 12 5 122(+), 3(*), 1(c) 52(ULA's) e 3(*) 6

Multiplexadores

2. As variáveis de entrada NÃO são armazenadas em registradores*:multiplicador (delay = 24.4 ns), +: somador (delay = 15.0 ns)

Nossa estimativa 6 1

Fonte Unidades funcionais Registradores

5

1. As variáveis de entrada e saída são armazenadas em registradores

•: Dado não fornecidoULA's(+, -):Unidade lógica aritmética (delay = 15 ns), c:comparador (delay = 15 ns)

Page 142: Albano Portela Machado - UFPE

___________________________________________________________________

123

Como podemos observar, obtemos o mesmo limite inferior encontrado em

LBE[53] para a estimativa de unidades funcionais (2 ULA’s e 3 * ) e registradores (6).

As abordagens LBE[53] e ILP[61] não forneceram o número de registradores.

Comparados os resultados com Maciel[38] obtivemos 50% de redução nas estimativas

de registradores e multiplexadores 2×1. Vemos que nossa abordagem encontra

alternativas de projeto iguais ou menores que estes trabalhos, estimando todos os

componentes do caminho de dados.

6.3 Filtro de Ondas Elíptico de 5a Ordem.

Nesta seção, aplicamos nossa abordagem ao filtro de ondas elíptico de 5a ordem

com o propósito de obtermos a estimativa do seu caminho de dados – unidades

funcionais, de armazenamento e de interconexão (multiplexadores 2×1).

6.3.1 Descrição

O filtro elíptico pertence a classe dos filtros de respostas a impulsos infinitos –

Infinite Impulse Response (IIR) – onde a resposta do filtro a um impulso de entrada

permanece diferente de zero até o tempo infinito num sentido teórico. O filtro em

particular que testamos neste trabalho é um filtro passa-baixa. A descrição do projeto

do filtro é composta de um bloco básico com diversas operações aritméticas. Tem sido

um benchmark popular para comparar resultados de escalonamentos. Este benchmark é

derivado de descrições em [36] e [54].

Geramos o comportamento em occam a partir da especificação original em

VHDL deste benchmark. Em seguida, obtemos o modelo intermediário em redes de

Petri, através da tradução do código em occam pela ferramenta translate [47]. As

especificações em VHDL e em occam, bem como os modelos textual e gráfico

(esquemático) da rede de Petri encontram-se no Apêndice C.

Page 143: Albano Portela Machado - UFPE

___________________________________________________________________

124

6.3.2 Unidades de Armazenamento

Nesta seção, aplicamos ao filtro de ondas elíptico de 5a ordem duas

metodologias proposta para o cálculo das unidades de armazenamento. A primeira é

baseada nas variáveis simultaneamente vivas e a segunda baseia-se nos tempos de vida

das variáveis.

6.3.2.1 Método Baseado nas Variáveis Simultaneamente Vivas.

O modelo temporizado (marked timed Petri net) em redes de Petri foi obtido a

partir do modelo intermediário gerado, depois de associados os tempos (delay em ns) às

transições lógicas aritméticas. O grafo de estados gerado para este modelo apresentou

52 estados (ver Tabela 6.15). Nesta tabela, os estados com o maior número de variáveis

simultaneamente vivas são os estados s20, s23, s24, s27 e s28, com dez variáveis. Desta

forma são necessárias dez unidades de armazenamento para a implementação do filtro

de ondas elíptico de 5a ordem.

Tabela 6.15: Filtro de Ondas Elíptico de 5a Ordem: variáveis simultaneamente vivas

Estadoss 20

s 23

s 24

s 27

s 28

Variáveis simutaneamente vivasINP, SV38, SV18, SV39, n1, n5, n2, n6, n3, n7INP, SV38, SV18, SV39, n1, n2, n5, n3, n9, n8 INP, SV38, SV18, SV39, n1, n9, n2, n5, n8, n3

INP, SV38, SV18, n9, n8, SV39, n1, n12, n11, n10 n11, INP, SV38, SV18, n9, n8, SV39, n1, n12, n10

6.3.2.2 Método Baseado nos Tempos de Vida das Variáveis.

A Tabela 6.16 nos mostra o resultado final do mapeamento das variáveis para as

unidades de armazenamento.

Tabela 6.16: Filtro de Ondas Elíptico de 5a Ordem: mapeamento variáveis para os registradores

R1 n28, n26, n22, INPR2 n17, n1, SV2R3 n29, p1, n15, n13, n10, n3, SV13R4 SV18R5 n23, n16, n14, n11, n5, n4, SV26R6 n25, n21, n18, n12, n2, SV33R7 SV38R8 n19, SV39R9 n24, n20, n8, n7, n6R10 n9

VariáveisUnidades de armazenamento

Page 144: Albano Portela Machado - UFPE

___________________________________________________________________

125

Esta tabela foi construída a partir do grafo de estados gerado através da

ferramenta INA, onde identificamos as variáveis vivas (marcadas) em seus respectivos

estados. É construída uma matriz onde as colunas representam as variáveis e as linhas

os estados. Uma seqüência onde a variável é marcada (coluna) representa o tempo de

vida desta variável. A partir da análise da sobreposição (ou não) dos tempos de vida das

variáveis chegamos à estimativa de dez unidades de armazenamento para mapear todas

as variáveis. O resultado é idêntico ao do método anterior.

6.3.3 Unidades Funcionais

Na Tabela 6.17 são vistos os tempos de disparos iniciais e finais das transições

lógicas/aritméticas do Filtro de Ondas Elíptico de 5a Ordem.

t4 + 15 15t9 + 15 15

s7 15 t14 + 15 30s11 30 t19 + 15 45s15 45 t24 + 15 60s20 60 t35 + 15 75s21 60 t40 + 15 75

t45 + 15 90t55 + 15 90

s25 75 t50 + 15 90s28 90 t146 + 15 105

t66 + 15 105t71 + 15 105t76 + 15 120t86 + 15 120t81 + 15 120t91 + 15 120t99 + 15 135

t104 + 15 135s39 120 t112 + 15 135s43 135 t133 + 15 150

t123 + 15 150t128 + 15 150

s48 150 t138 + 15 165s39 120 t159 + 15 135s49 150 t154 + 15 165

s37 120

s45 135

s33 105

s34 105

s24 75

s30 90

Operação lógica/arit.

Duração disparo

Tempo de disparo final

s3 0

Estados Tempo de disparo inicial Transições

Tabela 6.17: Filtro de Ondas Elíptico de 5a Ordem – Tempos de disparos iniciais e finais das transições

Os tempos de disparos iniciais das transições coincidem com os tempos dos

estados onde foram iniciados os disparos. O tempo de disparo final é o tempo de disparo

Page 145: Albano Portela Machado - UFPE

___________________________________________________________________

126

inicial acrescentado da duração do disparo da transição. A partir dos dados desta tabela,

o algoritmo proposto mapeia as transições às unidades funcionais tendo em vista a

política de sobreposição (ou não) dos intervalos do tempo de disparo. O resultado do

mapeamento das transições lógicas/aritméticas às unidades funcionais é visto na Tabela

6.18. Para a implementação desta especificação foram estimados quatro somadores.

Tabela 6.18: Filtro de Ondas Elíptico de 5a Ordem – Resultado do mapeamento das transições lógica/aritméticas às unidades funcionais.

Somador1 t154 t133 t159 t91 t146 t55 t40 t24 t19 t14 t9Somador2 t138 t128 t112 t86 t71 t50 t35 t4Somador3 t123 t104 t81 t66 t45Somador4 t99 t76

Unidades funcionais Transições atribuidas

6.3.4 Unidades de Interconexão (multiplexadores 2××1)

Tabela 6.19: Filtro de Ondas Elíptico de 5a Ordem – Mapeamento das transições (com suas instruções) às unidades funcionais.

t154 n29, n19 SV33o canal=R3+R8t133 n15, n25 SV2o canal=R3+R6t159 n24, n16 SV39o canal=R9+R5t91 SV39, n16 n20 R9=R8+R5

t146 n11, n9 SV26o canal=R5+R10t55 n9, n2 n12 R6=R10+R6t40 n2, n7 n9 R10=R6+R9t24 n2, n4 n5 R5=R6+R5t19 SV26, n3 n4 R5=R5+R3t14 SV13, n1 n3 R3=R3+R2t9 SV39, SV33 n2 R6=R8+R6

t138 n28, n17 SV13o canal=R1+R2t128 SV38, n27 n29 R3=R7+R3t112 n21, INP n25 R6=R6+R1t86 n16, n9 n19 R8=R5+R10t71 SV39, n14 n16 R5=R8+R5t50 n5, n8 n11 R5=R5+R9t35 n6, n3 n8 R9=R9+R3t4 SV2, INP n1 R2=R2+R1

t123 SV18, n26 n28 R1=R4+R1t104 n19, SV38 n23 R5=R8+R7t81 n8, n15 n18 R6=R9+R3t66 n13, n1 n15 R3=R3+R2t45 n8, n3 n10 R3=R9+R3t99 SV18, n18 n22 R1=R4+R6t76 n15, n1 n17 R2=R3+R2

Somador2

Somador3

Somador4

Somador1

Unidades Funcionais Transições Inp(t) Out(Out(Out(t))) Instruções

Page 146: Albano Portela Machado - UFPE

___________________________________________________________________

127

A Tabela 6.19 mostra as unidades funcionais com suas respectivas listas de

transições. Nas colunas inp(t) e Out(Out(Out(t))) estão as variáveis de leitura e escrita

para cada transição, definidas em função das expressões lógicas/aritméticas da

especificação. A coluna instruções é obtida a partir do mapeamento destas variáveis nas

unidades de armazenamento de acordo com a Tabela 6.16

A Tabela 6.20 mostra as conexões das unidades de armazenamento às unidades

funcionais e o n0 de multiplexadores em cada lado das unidades funcionais após a

execução do algoritmo. Logo, são estimados vinte e dois multiplexadores 2×1 para

implementar o Filtro de Ondas Elíptico de 5a Ordem.

Tabela 6.20: Filtro de Ondas Elíptico de 5a Ordem – Conexões das unidades de armazenamento às unidade funcionais.

Esquerdo Direito Esquerdo DireitoC1 R2 não simC2 R10 sim nãoC3 R5 não simC4 R9 sim nãoC5 R6 sim simC6 R8 sim simC7 R3 sim nãoC1 R9 sim simC2 R8 não simC3 R10 não simC4 R5 sim nãoC5 R6 não simC6 R3 não simC7 R7 sim nãoC8 R2 não simC9 R1 sim nãoC1 R2 sim nãoC2 R3 não simC3 R9 sim nãoC4 R7 não simC5 R8 sim nãoC6 R1 não simC7 R4 sim nãoC1 R2 não simC2 R3 sim nãoC3 R6 não simC4 R4 sim não

Unidades Funcionais

Conexões de entrada

Unidades armazenamento

link p/ lado esquerdo

link p/ lado

N° de links

Somador2

N° de multiplexadores

Somador1 5 4 4

4 6 3 5

3

Somador3 4 3 3

Somador4 2 2 1 1

2

6.3.5 Comparações

A Tabela 6.21 apresenta os resultados experimentais deste benchmark.

Comparamos nossos resultados com os dados obtidos em HAL[57], LBE[53],

Page 147: Albano Portela Machado - UFPE

___________________________________________________________________

128

OASIC[24], InSyn[64] e Maciel[38]. Como podemos ver, obtemos o mesmo limite

inferior para a estimativa de unidades funcionais (quatro) que HAL[57] e LBE[53].

Quanto ao número de registradores, obtemos uma variável a mais (sete) quando

comparado com HAL[57] (seis ) – nesta abordagem as variáveis de entrada NÃO são

armazenadas em registradores. Quando as variáveis de entrada e saída são armazenadas

em registradores obtemos o mesmo índice (dez registradores) que LBE[53] e

OASIC[24]. Com relação a Maciel[38], obtivemos uma redução de 77.3% nos

registradores e 15.3% nos multiplexadores 2×1.

Tabela 6.21: Filtro de Ondas Elíptico de 5a Ordem – Resultados.

Variáveis Literais2(+), 2(*) 6 2 0 •

3(+), 2(*p ) 12 1 0 •3(+), 3(*) 11 1 0 •2(+), 2(*) 10 1 0 •

3(+), 2(*p ) 10 1 0 •3(+), 2(*p ) 8 2 0 •

OASIC [24] 3(+), 2(*p ) 10 1 0 •InSyn [64] 3(+), 2(*p ) 8 2 0 •Maciel [38] • 44 1 0 26

7 2 0 1710 1 0 22

1. As variáveis de entrada e saída são armazenadas em registradores2. As variáveis de entrada NÃO são armazenadas em registradores+: somador (15.0 ns), *p : 2-stage pipelined multiplier(25.0 ns)•: Dado não fornecido

Nossa estimativa 4(+)

HAL [57]

LBE [53]

Fonte Unidades funcionaisRegistradores

Multiplexadores

6.4 Máquina de Refrigerantes

Nesta seção aplicamos a abordagem proposta à máquina de refrigerantes, onde

obtivemos a estimativa do caminho de dados – unidades funcionais, de armazenamento

e de interconexão (multiplexadores 2×1).

6.4.1 Descrição

A Figura 6.7 mostra uma visão estrutural do bloco de controle e outros módulos

da especificação da máquina de refrigerantes. Ela foi implementada em hardware e

Page 148: Albano Portela Machado - UFPE

___________________________________________________________________

129

mapeada com sucesso em uma FPGA Xilinx série XC4000E, da família 4013EHQ240

com a ferramenta CAD Xilinx Foundation Series 3.1. O comportamento desta máquina

é descrito logo abaixo.

U ser In te rface

pr

em

rese t c lo ck

changevalue

vm

na crevlr

ld

ac

CoinI nput

C hange R $

S oft D rinkD elivery

Figura 6.7: Máquina de Refrigerantes: Visão estrutural.

Após o reset, a máquina espera por uma moeda. Quando o cliente insere a

primeira moeda, a máquina fica em estado de espera até que o refrigerante seja

solicitado. Quando um refrigerante é selecionado, a máquina verifica o estoque para o

refrigerante em particular. Se o dinheiro depositado for insuficiente para realizar a

compra do refrigerante a máquina devolve o valor pago pelo cliente. Sendo o valor

depositado for suficiente, a máquina calcula o troco e verifica se tem saldo no estoque

para devolver ao cliente. Em caso afirmativo, a máquina entrega o refrigerante e o troco

ao cliente. Se negativo, o cliente é notificado e decide se paga mais pelo refrigerante ou

recebe o valor depositado de volta. Na devolução do troco, a máquina calcula o valor do

mesmo em número de moedas, 50 e 10 centavos.

A partir da especificação em occam da máquina de refrigerantes foi gerado com

a ferramenta depend [47] o modelo intermediário em redes de Petri. As especificações

em VHDL e em occam, bem como os modelos textual e gráfico (esquemático) da rede

de Petri encontram-se no Apêndice D.

6.4.2 Unidades de Armazenamento

Aplicamos, nesta seção, duas metodologias para a estimativa das unidades de

armazenamento da Máquina de Refrigerantes. O primeiro método é baseado nas

variáveis simultaneamente vivas e o segundo é baseado nos tempos de vida das

variáveis.

Page 149: Albano Portela Machado - UFPE

___________________________________________________________________

130

6.4.2.1 Método Baseado nas Variáveis Simultaneamente Vivas.

A partir do modelo intermediário gerado e depois de associados os tempos

(delay em ns) às transições lógicas/aritméticas, obtivemos o modelo temporizado

(marked timed Petri net) em redes de Petri. O grafo de estados gerado para este modelo

apresentou 64 estados. A Tabela 6.22 mostra os estados com a maior quantidade de

variáveis simultaneamente vivas: s4 e s5 com oito variáveis. Desta forma, são estimadas

oito unidades de armazenamento para a implementação da Máquina de Refrigerantes.

Tabela 6.22 – Máquina de Refrigerantes: variáveis simultaneamente vivas por estados.

Estadoss 4

s 5

Variáveis simutaneamente vivasca50, nac, ac, rev, emv, prv, totalPaid, price ca50, nac, ac, price, rev, totalPaid, emv, prv

6.4.2.2 Método Baseado nos Tempos de Vida das Variáveis.

A partir do grafo de estados gerado através da ferramenta INA, construímos uma

matriz onde identificamos as variáveis vivas (marcadas) e seus respectivos estados,

onde computamos os tempos de vida das variáveis. O resultado final do mapeamento

das variáveis para as unidades de armazenamento é visto na Tabela 6.23, isto é, oito

unidades de armazenamento para mapear todas as variáveis, resultado este que vem

corroborar o método anterior.

Tabela 6.23: Máquina de Refrigerantes – Resultado final do mapeamento das variáveis aos registradores.

R1 ca10, change, emvR2 nmd10, nmd50, acR3 nacR4 priceR5 totalPaidR6 coinValue, prvR7 revR8 ca50

Unidades de armazenamento Variáveis

6.4.3 Unidades Funcionais

A Tabela 6.24 mostra a lista de transições ordenadas de forma ascendente

levando-se em consideração o tempo inicial de disparo. Com base nesta lista buscamos

Page 150: Albano Portela Machado - UFPE

___________________________________________________________________

131

mapear as transições em unidades funcionais levando-se em consideração a

sobreposição dos intervalos dos tempos de disparos, isto é, se não houver sobreposição

destes tempos, as transições podem ser atribuídas à mesma unidade funcional.

A Tabela 6.25 mostra o resultado do mapeamento das transições

lógica/aritméticas às unidades funcionais. Foram estimadas duas unidades lógicas

aritméticas (ULA’s), dois comparadores e um divisor para esta implementação.

Tabela 6.24: Máquina de Refrigerantes – Tempos de disparos iniciais e finais das transições.

t15 = 15 15t44 = 15 15

s6 0 t46 = 15 15s9 15 t21 = 15 30

s11 15 t38 = 15 30t30 + 15 45t34 = 25 45

s19 45 t51 - 15 60s23 60 t57 < 15 75s24 60 t59 = 15 75s25 60 t61 > 15 75s26 60 t79 / 24 84

t67 = 15 90t69 = 15 90

s33 84 t87 <= 15 99s34 84 t90 <= 15 99s44 99 t94 - 15 114s47 114 t100 = 15 129s50 129 t106 / 24 153s54 153 t115 <= 15 168

s5 0

s16 30

s30 75

Estados Tempo de disparo inicial

Transições Operação lógica/arit.

Duração disparo

Tempo de disparo final

Tabela 6.25: Máquina de Refrigerantes – Resultado do mapeamento das transições lógica/aritméticas às unidades funcionais.

ULA 1 <=, =, -, > t115, t100, t94, t69, t61, t51, t34, t38, t46ULA 2 =, + t67, t59, t30, t21, t44

Comparador1 <=, <, = t90, t57, t15Comparador2 <= t87

Divisor ÷ t106, t79

Unidades funcionais Transições atribuidasOperações

realizadas

6.4.4 Unidades de Interconexão (multiplexadores 2××1)

A lista de transições para cada unidade funcional é mostrada na Tabela 6.26. As

variáveis de leitura e escrita estão definidas nas colunas inp(t) e Out(Out(Out(t))). A

Page 151: Albano Portela Machado - UFPE

___________________________________________________________________

132

coluna instruções é obtida a partir do mapeamento destas variáveis para as unidades de

armazenamento de acordo com a Tabela 6.23.

Tabela 6.26: Máquina de Refrigerantes – Mapeamento das transições (e suas instruções) às unidades funcionais.

t34 val[0], emv ........................ LO=R1t38 val[0], prv ........................ LO=R6t46 val[1], rev ........................ L1=R7t51 price, totalPaid ........................ R1=R4-R5t61 val[0], change ........................ L0>R1t69 val[NAC], nac ........................ LAC=R3t94 val[50], change change R1=L50-R1

t100 val[0], change ........................ L0=R1t115 ca10, nmd10 ........................ R1<=R2t21 val[0], emv ........................ L0=R1t30 coinValue, totalPaid totalPaid R5=R6+R5t44 val[0], rev ........................ L0=R7t59 val[0], change ........................ L0=R1t67 val[AC], ac ........................ LNAC=R2t15 val[0], prv ........................ L0=R6t57 val[0], change ........................ L0<R1t90 ca50, nmd50 ........................ R8<=R2

Comparador2 t87 val[0], nmd50 ........................ L0<=R2t79 val[50], change nmd50 R2=L50/R1

t106 val[10], change nmd10 R2=L10/R1

Unidades Funcionais Transições Inp(t)

ULA 1

ULA 2

Comparador1

Divisor

Out(Out(Out(t))) Instruções

Tabela 6.27: Máquina de Refrigerantes – Conexões das unidades de armazenamento às unidade funcionais.

Esquerdo Direito Esquerdo DireitoC1 R7 não simC2 L1 sim nãoC3 R6 sim nãoC4 R5 não simC5 R4 sim nãoC6 R3 não simC7 LAC sim nãoC8 L50 não simC9 L0 não simC10 R2 não simC11 R1 sim nãoC1 R7 não simC2 R5 não simC3 R6 sim nãoC4 R1 não simC5 L0 sim nãoC6 R2 não simC7 LNAC sim nãoC1 R6 não simC2 R1 não simC3 L0 sim nãoC4 R2 não simC5 R8 sim nãoC1 R2 não simC2 L0 sim nãoC1 L50 sim nãoC2 R1 não simC3 L10 sim não

Unidades Funcionais

Conexões de entrada

Unidades armazenament

link p/ lado esquerdo

link p/ lado direito

N° de links N° de multiplexadores

6 4 5

Comparador1 2

Comparador2

2

1

Divisor

3

ULA 1 5

3 1 2

ULA 1 3 4 2

1 0 0

1 1 0

Page 152: Albano Portela Machado - UFPE

___________________________________________________________________

133

A Tabela 6.27 mostra as conexões das unidades de armazenamento às unidades

funcionais após a execução do algoritmo. Por exemplo, na ULA1 existe cinco conexões

no lado esquerdo e seis conexões no direito. Logo são necessários quatro e cinco

multiplexadorores 2×1 nos lados esquerdo e direito desta unidade, respectivamente. No

total, são estimados dezoito multiplexadores 2×1 para implementar a Máquina de

Refrigerantes.

6.4.5 Comparações

Tabela 6.28 mostra a implementação estrutural da Máquina de Refrigerantes em

uma FPGA Xilinx série XC4000E, da família 4013EHQ240. Os dados são mostrados

em números de gates equivalentes e em número de unidades. Como podemos observar

nos resultados obtidos por esta abordagem, houve uma redução da ordem de 38.4% e

10% nos registradores para as variáveis e multiplexadores, respectivamente. Com

relação à área total houve uma redução de 41.4 %.

Tabela 6.28: Máquina de Refrigerantes – Resultados.

Variaveis ConstantesMaciel [38] • 13 6 20 4755

Nossa estimativa 2(ALU's), 2(c) e 1(÷) 8 1 6 18 27871. As variáveis de entrada e saída são armazenadas em registradores÷: divisor (delay = 24.4 ns), ULA's(+, -, c):Unidade lógica aritmética (delay = 15 ns), c:comparador (delay = 15 ns)•: Valores não fornecidos

Área Total (gates)Fonte Unidades Funcionais Registradores Multiplexadores

6.5 Conclusões

Com o objetivo de validar a metodologia proposta nós a aplicamos a quatro

especificações. Primeiro, a um pequeno exemplo onde fizemos comparações com a

abordagem do clique partitioning. Encontramos os mesmos resultados no cômputo das

unidades de armazenamento a um custo computacional menor, já que a abordagem do

clique partitioning é NP-hard. Posteriormente consideramos a Equação Diferencial de

Page 153: Albano Portela Machado - UFPE

___________________________________________________________________

134

2a. Ordem e o Filtro de Ondas Elíptico de 5a Ordem. Estes benchmarks são provenientes

do 1992 High Level Synthesis Workshop. Comparamos os resultados obtidos com outros

trabalhos relacionados: LBE[53], ILP[61], HAL[57], OASIC[24], InSyn[64] e

Maciel[38]. Vimos que os resultados em termos de precisão são similares ou menores a

estes trabalhos. Finalmente submetemos a abordagem proposta à descrição de uma

Máquina de Refrigerantes e obtivemos uma redução de área da ordem de 41.4%.

Uma outra vantagem é que estamos alcançando melhoria dos resultados em

relação a trabalhos prévios. A abordagem foi aplicada sobre métodos formais com

semântica bem definida, o que tem proporcionado também estimativas a um baixo custo

computacional devido ao modelo intermediário (redes de Petri temporizadas da

subclasse grafo marcado) adotado.

Page 154: Albano Portela Machado - UFPE

7 Conclusões e Trabalhos Futuros

Este capítulo resume as contribuições deste trabalho e apontada possibilidades de melhoria e novas linhas de investigação para trabalhos futuros dentro do tema.

7.1 Objetivos do trabalho

A crescente diversidade e complexidade dos sistemas digitais, a necessidade de

diminuição dos custos e a redução do time-to-market, fazem das técnicas de suporte a

hardware/software codesign um importante tópico de pesquisa. Além do mais, o re-uso

de projetos anteriores, análise/verificação qualitativa, rápida exploração de projetos,

algoritmos rápidos de particionamento, e prototipação são importantes tarefas em

hardware/software codesign. Estimativas são essenciais na exploração rápida de

projetos, na validação rápida de restrições de projeto e no rápido particionamento em

hardware e software. Por esta razão, o estudo de métodos formais, o uso de métricas de

qualidade e métodos de análise quantitativa são importantes tópicos a serem

considerados.

O objetivo principal deste trabalho foi o desenvolvimento de um conjunto de

métricas de estimativas a serem usados dentro do contexto de um sistema de

hardware/software codesign. Os métodos propostos são baseados em Timed Petri nets

(o modelo intermediário para análise), um formalismo poderoso para análise qualitativa

e quantitativa, que também permite simulação. Este modelo intermediário é obtido pela

tradução de uma especificação na linguagem occam pela ferramenta depend

desenvolvida por [47].

Page 155: Albano Portela Machado - UFPE

___________________________________________________________________

136

Diversas razões levaram a escolha de Timed Petri nets como o formalismo

considerado neste trabalho. Primeiro, porque tal modelo representa as ações pelas

transições ao invés de lugares (Place Timed Petri nets), facilitando o entendimento do

modelo. Segundo, uma ação de retardo (delay) é mais bem representada por duração do

que por restrições de tempo (Time Petri nets). Terceiro, os modelos obtidos são menores

do que aqueles obtidos usando Time Petri Nets. Quarto, desde que a arquitetura alvo é

conhecida, modelos determinísticos fornecem resultados mais precisos que modelos

estocásticos (GSPN).

O uso de um modelo intermediário permite estimativas de métricas que são

independentes da linguagem de descrição. Levando-se em consideração estas

estimativas, a especificação é particionada em um conjunto de processos. Alguns destes

conjuntos são implementados em software e outros em dispositivos de hardware.

Depois do particionamento, os processos a serem implementados em hardware são

sintetizados e os processos em software são compilados. .

Estimativas de valores para métricas de projeto são requeridas para determinar

se um projeto em particular ao nível de sistema (alto nível de abstração onde há a

partição das funcionalidades do sistema entre os componentes alocados) satisfaz as

restrições, como também serve para comparar alternativas de projeto. Dentre as

métricas utilizadas podemos citar desempenho, tamanho das áreas de hardware e de

software, etc. Componentes da área de hardware têm sido divididos em: área de controle

de alto-nível, área de controle local e área do caminho de dados.

Este trabalho define um conjunto de métodos para estimativa da área do

caminho de dados: unidades funcionais, de armazenamento e de interconexão

(multiplexadores). Foi desenvolvida uma ferramenta de estimativa de área de hardware,

levando-se em consideração a precisão a um custo computacional aceitável.

O modelo de estimativa da área de hardware é assumido para ser implementado

em uma máquina de estados finitos com caminho de dados (FSMD – Finite State

Machine with Datapath). A área do caminho de dados é dada pelo somatório das áreas

das unidades de armazenamento, funcionais e de interconexão. O número de unidades

de armazenamento da descrição é estimado usando duas abordagens: o primeiro método

Page 156: Albano Portela Machado - UFPE

___________________________________________________________________

137

é baseado nas variáveis simultaneamente “vivas” e o segundo no tempo de vida das

variáveis. O número de unidades funcionais necessárias para implementar as operações,

bem como as unidades de armazenamento, são baseados na análise do grafo de

alcançabilidade, gerado a partir do modelo intermediário (timed Petri nets). As unidades

de interconexão são calculadas a partir do mapeamento das variáveis às unidades de

armazenamento, do mapeamento das transições (modelam operações lógica/aritméticas)

às unidades funcionais e da busca das instruções no modelo intermediário.

O modelo intermediário utilizado é na realidade um grafo de fluxo de dados

(Data Flow Graph – DFG) modelado através de redes de Petri temporizadas. O uso de

um método formal (com semântica bem definida) além da facilidade de modelagem

permitem realizar análises quantitativas e qualitativas. O modelo intermediário utilizado

neste trabalho é um grafo marcado, o que possibilita a obtenção de análises a um baixo

custo computacional. A geração do grafo de alcançabilidade por exemplo apresenta um

custo linear. A estimativa das unidades de armazenamento, funcionais e de interconexão

têm complexidade de ordem quadrática.

7.2 Trabalhos Futuros

Em relação ao modelo de fluxo de dados vemos que ele maximiza o grau de

paralelismo das instruções, obtendo implementações com alto desempenho e

conseqüentemente com a maior utilização de recursos computacionais. A utilização de

informações em conjunto do modelo de fluxo de controle e do modelo de dependência

de dados melhora a qualidade das estimativas, pois permite exploração de uma

quantidade maior de alternativas de projeto. Por exemplo, podemos utilizar as

informações do fluxo de controle no modelo intermediário (fluxo de dados) com o

objetivo de retardar o disparo de transições, fazemos isto inserindo lugares

intermediários no modelo intermediário. A implementação agora passa a requer menos

recursos. O próximo passo é fazer a análise da relação tempo de execução versus custo

Page 157: Albano Portela Machado - UFPE

___________________________________________________________________

138

de área de hardware. É importante observar que a abordagem proposta não muda, pois o

que está sendo alterado é a quantidade de lugares do modelo intermediário.

Para ilustrar esta abordagem vamos fazer uma breve análise dos modelos de

fluxo de controle e dados da Figura 7.1. A especificação (Figura 7.1 (a)) é composta três

instruções: x:=1+2, z:=4+5 e y:=x+3, modeladas pela rede de fluxo de dados pelas

transições t1, t4 e t3 respectivamente. A primeira e segunda instruções não apresentam

dependência de dados e a terceira instrução depende da primeira, assim, a rede de fluxo

de dados modela as duas primeiras instruções em paralelo e a terceira e primeira

instruções de forma seqüencial, conforme visto na Figura 7.1(c). O grafo de

alcançabilidade, mostrado na Figura 7.1 (d), ratifica o exposto, vemos que as transições

t1 e t4 são disparadas em paralelo (estado s1) e a transição t3 é disparada no estado s3

após o disparo da transição t1. Para este projeto específico necessitaríamos de duas

unidades funcionais.

PAR INT x, y, z: SEQ PAR x:= 1 + 2 z:= 4 + 5 y:= x + 3

p0

p1

p2

p3

p4

p5

p6

(a )

t0

t1 t2

t3

t4

t5

start

p1

p6

p7 p8

p9

end

p1 0

p2 p3 p4 p5

t0

t1

t2

t4

t3

t5

t6

x= 1 + 2 z= 4 + 5

y= x+ 3

s0 (sta rt) t0

s2 (p6 ,p3 ,p1 0 )

s3 (p7 ,p8 ,p3 ,p1 0 )

s4 (p7 ,p9 ,p1 0 )

s5 (end)

t1 ,t4

t2

t3

t5

t6

(b ) (c) (d ) Figura 7.1: Comportamento de um projeto: a) Especificação em occam, b) rede de fluxo de controle, c) rede de fluxo de dados (d) e grafo de alcançabilidade do fluxo de dados.

Como já dissemos anteriormente o objetivo do uso de estimativas é proporcionar

a exploração de um grande número de projetos. Imagine que agora que só dispomos de

uma unidade funcional, se modificássemos a especificação e colocássemos as três

instruções para serem executadas em seqüencial, a rede de fluxo de controle refletiria

esta nova realidade, contudo a rede de fluxo de dados obtida para esta nova

especificação não mudaria, pois este modelo é baseado na dependência de dados entre

Page 158: Albano Portela Machado - UFPE

___________________________________________________________________

139

as operações. Assim seriam estimados os mesmos componentes computacionais. A

solução para este impasse seria a interação do fluxo de controle com o fluxo de dados,

através de uma rede de fluxo de dados estendida. A Figura 7.2 mostra uma rede de fluxo

de dados estendida. Nesta rede foi acrescentado o lugar p6’, entre as transiçõe s t1 e t4. O

grafo de alcançabilidade (Figura 7.2(b)), gerado para esta rede estendida, mostra que as

transições t1, t4 e t3 são disparadas de forma seqüencial. Assim aplicando a abordagem

de estimativa de área desenvolvida nesta dissertação encontraríamos agora uma unidade

funcional para o projeto.

p0

p1

p6p6 ’

p7 p8

p9

p1 1

p1 0

p2 p3 p4 p5

t0

t1

t2

t4

t3

t5

t6

x= 1+ 2 z= 4 + 5

y= x+ 3

s0 (start) t0

s2 (p6 ,p6’,p3 ,p4 ,p5)

s3 (p7 ,p8 ,p3 ,p1 0 )

s4 (p7 ,p9 ,p10 )

s5 (end)

t1

t2 ,t4

t3

t5

t6

(b )(a ) Figura 7.2: Comportamento de um projeto: a) Rede de fluxo de dados extendida e b) grafo de alcançabilidade gerado

Diversas linguagens são utilizadas para especificação de processos em

hardware/software co-design. Estas especificações são posteriormente mapeadas em

uma representação de projeto intermediário (modelo intermediário). Neste trabalho

citamos: Occam, VHDL, SpecChart, HardwareC, Verilol, Esterel etc, como exemplos

de linguagens de especificação [2].

Hoje assistimos a complexidade do software dominando a complexidade do

hardware e para gerenciar a complexidade de sistemas avançados é necessário cada vez

mais de uma linguagem com um poder maior de modelagem. A linguagem SystemC

[49] é um subconjunto da linguagem de programação C++, utilizada para modelagem e

simulação de hardware/software. O sistema pode ser especificado em diversos níveis de

abstração (hierarquia comportamental) e possui uma biblioteca padrão C++ para

modelagem de sistemas baseados em C (concorrência de processos; tempo em clocks;

Page 159: Albano Portela Machado - UFPE

___________________________________________________________________

140

tipos de dados em hardware; interrupções; reatividade; hierarquia de módulos, portas e

sinais), com grande aceitação e suporte na indústria. A linguagem de especificação

utilizada neste trabalho foi Occam, uma linguagem pouco conhecida e que não é bem

aceita na indústria.

Apresentamos duas sugestões para a melhoria dos resultados do trabalho

apresentado no contexto de hardware/software co-design. Primeiro, o desenvolvimento

de um modelo de análise que leve em consideração a interação dos modelos

intermediários de fluxo de controle e dados, permitindo assim a exploração rápida de

um número maior de projetos potenciais. Segundo a construção de um tradutor que

tenha como linguagem de entrada SystemC e gere um modelo intermediário em redes

de Petri. Assim, teríamos SystemC como linguagem de especificação de projeto. O que

seria um grande avanço, pois teríamos à disposição uma linguagem com alto poder de

especificação, traduzida em modelos formais (redes de Petri) que possibilitam a

realização de análises de propriedades quantitativas e qualitativas.

Page 160: Albano Portela Machado - UFPE

Apêndice A

Pequeno Exemplo

A.1 Modelo Intermediário – INA (.pnt )

P M PRE,POST NETZ 0:ex3Mar 0 1 , 0 1 0 0, 1 2 0 1 3 0 0, 2 4 0 0, 3 5 0 0, 6 6 0 0, 15 7 0 0, 13 8 0 0, 9 9 0 0, 18 10 0 0, 30 11 0 0, 35 12 0 0, 21 13 0 0, 25 14 0 2, 4 15 0 2, 32 16 0 3, 4 17 0 3, 47 18 0 4, 5 19 0 5, 10 20 0 0, 7 21 0 7, 8 22 0 8, 1 23 0 9, 11 24 0 9, 1 25 0 10, 11 26 0 10, 14 27 0 11, 12 28 0 12, 22 29 0 14, 16 30 0 14, 27 31 0 15, 16 32 0 15, 1 33 0 16, 17 34 0 17, 31 35 0 0, 19 36 0 19, 20 37 0 20, 1 38 0 21, 23 39 0 21, 1 40 0 22, 23 41 0 22, 26 42 0 23, 24 43 0 24, 38 44 0 26, 28 45 0 26, 1 46 0 27, 28 47 0 27, 1

Page 161: Albano Portela Machado - UFPE

___________________________________________________________________

142

48 0 28, 29 49 0 29, 39 50 0 31, 33 51 0 31, 1 52 0 32, 33 53 0 32, 42 54 0 33, 34 55 0 34, 44 56 0 0, 36 57 0 36, 37 58 0 37, 1 59 0 38, 40 60 0 38, 1 61 0 39, 40 62 0 39, 43 63 0 40, 41 64 0 41, 1 65 0 43, 45 66 0 43, 1 67 0 44, 45 68 0 44, 1 69 0 45, 46 70 0 46, 1 @ place nr. name capacity time 0: p1.start oo 0 1: p1.dummy oo 0 2: p1.end oo 0 3: p1.v1.0 oo 0 4: p1.v2.0 oo 0 5: p1.v3.0 oo 0 6: p1.v4.0 oo 0 7: p1.v5.0 oo 0 8: p1.v6.0 oo 0 9: p1.v7.0 oo 0 10: p1.v8.0 oo 0 11: p1.v9.0 oo 0 12: p1.v10.0 oo 0 13: p1.v11.0 oo 0 14: p1.v1.1 oo 0 15: p1.v1.2 oo 0 16: p1.v2.1 oo 0 17: p1.v2.2 oo 0 18: p1.val oo 0 19: p1.v3.1 oo 0 20: p1.start oo 0 21: p1.dummy oo 0 22: p1.end oo 0 23: p1.v6.1 oo 0 24: p1.v6.2 oo 0 25: p1.v3.2 oo 0 26: p1.v3.3 oo 0 27: p1.val oo 0 28: p1.v5.1 oo 0 29: p1.v3.4 oo 0 30: p1.v3.5 oo 0 31: p1.v4.1 oo 0 32: p1.v4.2 oo 0 33: p1.val oo 0 34: p1.v7.1 oo 0 35: p1.start oo 0 36: p1.dummy oo 0 37: p1.end oo 0 38: p1.v10.1 oo 0 39: p1.v10.2 oo 0 40: p1.v5.2 oo 0 41: p1.v5.3 oo 0 42: p1.val oo 0 43: p1.v11.1 oo 0 44: p1.v5.4 oo 0 45: p1.v5.5 oo 0

Page 162: Albano Portela Machado - UFPE

___________________________________________________________________

143

46: p1.v3.6 oo 0 47: p1.v3.7 oo 0 48: p1.val oo 0 49: p1.v8.1 oo 0 50: p1.v7.2 oo 0 51: p1.v7.3 oo 0 52: p1.v1.3 oo 0 53: p1.v1.4 oo 0 54: p1.val oo 0 55: p1.v9.1 oo 0 56: p1.start oo 0 57: p1.dummy oo 0 58: p1.end oo 0 59: p1.v11.2 oo 0 60: p1.v11.3 oo 0 61: p1.v8.2 oo 0 62: p1.v8.3 oo 0 63: p1.val oo 0 64: p1.v1.5 oo 0 65: p1.v8.4 oo 0 66: p1.v8.5 oo 0 67: p1.v9.2 oo 0 68: p1.v9.3 oo 0 69: p1.val oo 0 70: p1.v2.3 oo 0 @ trans nr. name priority time 0: t1.start 0 0 1: t1.end 0 0 2: t1.clone 0 0 3: t1.clone 0 0 4: t1.+ 0 0 5: t1.:= 0 0 6: t1.sink 0 0 7: t1.start 0 0 8: t1.end 0 0 9: t1.clone 0 0 10: t1.clone 0 0 11: t1.* 0 0 12: t1.:= 0 0 13: t1.sink 0 0 14: t1.clone 0 0 15: t1.clone 0 0 16: t1.- 0 0 17: t1.:= 0 0 18: t1.sink 0 0 19: t1.start 0 0 20: t1.end 0 0 21: t1.clone 0 0 22: t1.clone 0 0 23: t1.* 0 0 24: t1.:= 0 0 25: t1.sink 0 0 26: t1.clone 0 0 27: t1.clone 0 0 28: t1.+ 0 0 29: t1.:= 0 0 30: t1.sink 0 0 31: t1.clone 0 0 32: t1.clone 0 0 33: t1.+ 0 0 34: t1.:= 0 0 35: t1.sink 0 0 36: t1.start 0 0 37: t1.end 0 0 38: t1.clone 0 0 39: t1.clone 0 0 40: t1.- 0 0 41: t1.:= 0 0 42: t1.sink 0 0 43: t1.clone 0 0

Page 163: Albano Portela Machado - UFPE

___________________________________________________________________

144

44: t1.clone 0 0 45: t1.* 0 0 46: t1.:= 0 0 47: t1.sink 0 0 @

A.2 Tempo das Transições – INA (.tmd)

0: 0; 1: 0; 2: 0; 3: 0; 4: 15; 5: 0; 6: 0; 7: 0; 8: 0; 9: 0; 10: 0; 11: 24; 12: 0; 13: 0; 14: 0; 15: 0; 16: 15; 17: 0; 18: 0; 19: 0; 20: 0; 21: 0; 22: 0; 23: 24; 24: 0; 25: 0; 26: 0; 27: 0; 28: 15; 29: 0; 30: 0; 31: 0; 32: 0; 33: 15; 34: 0; 35: 0; 36: 0; 37: 0; 38: 0; 39: 0; 40: 15; 41: 0; 42: 0; 43: 0; 44: 0; 45: 24; 46: 0; 47: 0; @

Page 164: Albano Portela Machado - UFPE

___________________________________________________________________

145

A.3 Grafo de Estados

State nr. 1 Marking nr. 1 Clocks nr. 1 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t0}:0=> s2 State nr. 2 Marking nr. 2 Clocks nr. 1 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t2,t3,t6,t7,t9,t13,t15,t18,t19,t21,t25,t30,t35,t36}:0=> s3 State nr. 3 Marking nr. 3 Clocks nr. 1 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 : 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t4,t8,t20,t32,t37,t47}:0=> s4 State nr. 4 Marking nr. 4 Clocks nr. 2 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 : 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t42}:15=> s5 State nr. 5 Marking nr. 5 Clocks nr. 1

Page 165: Albano Portela Machado - UFPE

___________________________________________________________________

146

P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 : 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 : 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t5}:0=> s6 State nr. 6 Marking nr. 6 Clocks nr. 1 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 : 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 : 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t10}:0=> s7 State nr. 7 Marking nr. 7 Clocks nr. 1 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 : 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t11,t14}:0=> s8 State nr. 8 Marking nr. 8 Clocks nr. 3 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 : 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 24 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t16,t27}:15=> s9 State nr. 9 Marking nr. 9 Clocks nr. 4 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 : 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

Page 166: Albano Portela Machado - UFPE

___________________________________________________________________

147

: 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t17}:0=> s10 State nr. 10 Marking nr. 10 Clocks nr. 4 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 : 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t31}:0=> s11 State nr. 11 Marking nr. 11 Clocks nr. 4 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 : 1 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t33}:9=> s12 State nr. 12 Marking nr. 12 Clocks nr. 5 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 : 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t12}:0=> s13 State nr. 13 Marking nr. 13 Clocks nr. 5 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 : 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0

Page 167: Albano Portela Machado - UFPE

___________________________________________________________________

148

=={t22}:0=> s14 State nr. 14 Marking nr. 14 Clocks nr. 5 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 : 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t23,t26}:0=> s15 State nr. 15 Marking nr. 15 Clocks nr. 6 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 1 : 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 24 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t28}:6=> s16 State nr. 16 Marking nr. 16 Clocks nr. 7 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 : 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 18 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t34}:0=> s17 State nr. 17 Marking nr. 17 Clocks nr. 7 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 : 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 18 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t44}:9=> s18 State nr. 18 Marking nr. 18 Clocks nr. 8 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

Page 168: Albano Portela Machado - UFPE

___________________________________________________________________

149

: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 : 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t29}:0=> s19 State nr. 19 Marking nr. 19 Clocks nr. 8 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 : 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t39}:0=> s20 State nr. 20 Marking nr. 20 Clocks nr. 8 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 : 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t43}:0=> s21 State nr. 21 Marking nr. 21 Clocks nr. 8 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 : 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t45}:9=> s22 State nr. 22 Marking nr. 22 Clocks nr. 9 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 : 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 169: Albano Portela Machado - UFPE

___________________________________________________________________

150

: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 : 0 0 =={t24}:0=> s23 State nr. 23 Marking nr. 23 Clocks nr. 9 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 : 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 : 0 0 =={t38}:0=> s24 State nr. 24 Marking nr. 24 Clocks nr. 9 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 : 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 : 0 0 =={t40}:15=> s25 State nr. 25 Marking nr. 25 Clocks nr. 1 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 : 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 : 1 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t41,t46}:0=> s26 State nr. 26 Marking nr. 26 Clocks nr. 1 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 : 69 70 toks: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 : 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 : 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 : 0 1 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 =={t1}:0=> s27 State nr. 27 Marking nr. 27 Clocks nr. 1 P.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

Page 170: Albano Portela Machado - UFPE

___________________________________________________________________

151

: 69 70 toks: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 T.nr: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 : 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 : 46 47 time: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 : 0 0

dead state

Page 171: Albano Portela Machado - UFPE

Apêndice B

Equação Diferencial de 2a Ordem

B.1 Descrição em VHDL

Este benchmark foi derivado de [5].

------------------------------------------------------------------------------ -- -- Differential Equation Benchmark -- -- Source: Adapted from example in paper -- "HAL: A Multi-Paradigm Approach to Automatic Data Path Synthesis" -- by P. Paulin, J. Knight and E. Girczyc -- 23rd DAC, June 1986, pp. 263-270 -- -- Benchmark author: Joe Lis -- -- Copyright (c) 1989 by Joe Lis -- -- Modified by Champaka Ramachandran on Aug 17th 1992 -- -- Verification Information: -- -- Verified By whom? Date Simulator -- -------- ------------ -------- ------------ -- Syntax yes Champaka Ramachandran 17th Aug 92 ZYCAD -- Functionality yes Champaka Ramachandran 17th Aug 92 ZYCAD ------------------------------------------------------------------------------ entity diffeq is port (Xinport: in integer; Xoutport: out integer; DXport: in integer; Aport: in integer; Yinport: in integer; Youtport: out integer; Uinport: in integer; Uoutport: out integer); end diffeq; --VSS: design_style BEHAVIORAL architecture diffeq of diffeq is begin P1 : process (Aport, DXport, Xinport, Yinport, Uinport)

Page 172: Albano Portela Machado - UFPE

___________________________________________________________________

153

variable x_var,y_var,u_var, a_var, dx_var: integer ; variable x1, y1, t1,t2,t3,t4,t5,t6: integer ; begin x_var := Xinport; a_var := Aport; dx_var := DXport; y_var := Yinport; u_var := Uinport; while (x_var < a_var) loop t1 := u_var * dx_var; t2 := 3 * x_var; t3 := 3 * y_var; t4 := t1 * t2; t5 := dx_var * t3; t6 := u_var - t4; u_var := t6 - t5; y1 := u_var * dx_var; y_var := y_var + y1; x_var := x_var + dx_var; end loop; Xoutport <= x_var; Youtport <= y_var; Uoutport <= u_var; end process P1; end diffeq;

B.2 Descrição em Occam

INT x_var, y_var, u_var, a_var, dx_var: INT x1, y1, t1, t2, t3, t4, t5, t6: SEQ x_var ? XINPORT; a_var ? APORT; dx_var ? DXPORT; y_var ? YINPORT; u_var ? UINPORT; WHILE (x_var < a_var) SEQ t1 := u_var * dx_var; t2 := 3 * x_var; t3 := 3 * y_var; t4 := t1 * t2; t5 := dx_var * t3; t6 := u_var - t4; u_var := t6 - t5; y1 := u_var * dx_var; y_var := y_var + y1; x_var := x_var + dx_var; XOUTPORT ! x_var; YOUTPORT ! y_var; UOUTPORT ! u_var;

Page 173: Albano Portela Machado - UFPE

___________________________________________________________________

154

B.3 Modelo Intermediário – INA (.pnt )

P M PRE,POST NETZ 0:DEB1 0 1 , 0 1 0 0, 1 2 0 1 3 0 0, 3 4 0 0, 9 5 0 0, 11 6 0 0, 5 7 0 0, 7 8 0 0, 1 9 0 0, 56 10 0 0, 23 11 0 0, 27 12 0 0, 31 13 0 0, 36 14 0 0, 41 15 0 0, 46 16 0 0, 2 17 0 2, 14 18 0 0, 4 19 0 4, 15 20 0 0, 6 21 0 6, 20 22 0 0, 8 23 0 8, 28 24 0 0, 10 25 0 10, 19 26 0 0, 12 27 0 12, 13 28 0 13, 1 29 0 14, 16 30 0 14, 24 31 0 15, 16 32 0 15, 68 33 0 16, 12 34 0 12, 17 35 0 17, 18 36 0 18, 13 37 0 19, 21 38 0 19, 42 39 0 20, 21 40 0 20, 37 41 0 21, 22 42 0 22, 32 43 0 17, 25 44 0 24, 25 45 0 24, 62 46 0 25, 26 47 0 26, 33 48 0 17, 29 49 0 28, 29 50 0 28, 57 51 0 29, 30 52 0 30, 38 53 0 32, 34 54 0 32, 1 55 0 33, 34 56 0 33, 1 57 0 34, 35 58 0 35, 43 59 0 37, 39 60 0 37, 53 61 0 38, 39 62 0 38, 1 63 0 39, 40

Page 174: Albano Portela Machado - UFPE

___________________________________________________________________

155

64 0 40, 48 65 0 42, 44 66 0 42, 51 67 0 43, 44 68 0 43, 1 69 0 44, 45 70 0 45, 47 71 0 47, 49 72 0 47, 1 73 0 48, 49 74 0 48, 1 75 0 49, 50 76 0 50, 52 77 0 52, 54 78 0 52, 1 79 0 53, 54 80 0 53, 63 81 0 54, 55 82 0 55, 58 83 0 57, 59 84 0 57, 61 85 0 58, 59 86 0 58, 1 87 0 59, 60 88 0 60, 1 89 0 62, 64 90 0 62, 66 91 0 63, 64 92 0 63, 1 93 0 64, 65 94 0 65, 67 95 0 67, 69 96 0 67, 1 97 0 68, 69 98 0 68, 1 99 0 69, 13 @ place nr. name capacity time 0: p1.start oo 0 1: p1.dummy oo 0 2: p1.end oo 0 3: p1.xVar.0 oo 0 4: p1.yVar.0 oo 0 5: p1.uVar.0 oo 0 6: p1.aVar.0 oo 0 7: p1.dxVar.0 oo 0 8: p1.x1.0 oo 0 9: p1.y1.0 oo 0 10: p1.t1.0 oo 0 11: p1.t2.0 oo 0 12: p1.t3.0 oo 0 13: p1.t4.0 oo 0 14: p1.t5.0 oo 0 15: p1.t6.0 oo 0 16: p1.val[90] oo 0 17: p1.xVar.1 oo 0 18: p1.val[91] oo 0 19: p1.aVar.1 oo 0 20: p1.val[92] oo 0 21: p1.dxVar.1 oo 0 22: p1.val[93] oo 0 23: p1.yVar.1 oo 0 24: p1.val[94] oo 0 25: p1.uVar.1 oo 0 26: p1.start oo 0 27: p1.dummy oo 0 28: p1.end oo 0 29: p1.xVar.2 oo 0 30: p1.xVar.3 oo 0 31: p1.aVar.2 oo 0 32: p1.aVar.3 oo 0

Page 175: Albano Portela Machado - UFPE

___________________________________________________________________

156

33: p1.val oo 0 34: p1.start oo 0 35: p1.dummy oo 0 36: p1.end oo 0 37: p1.uVar.2 oo 0 38: p1.uVar.3 oo 0 39: p1.dxVar.2 oo 0 40: p1.dxVar.3 oo 0 41: p1.val oo 0 42: p1.t1.1 oo 0 43: p1.val[3] oo 0 44: p1.xVar.4 oo 0 45: p1.xVar.5 oo 0 46: p1.val oo 0 47: p1.t2.1 oo 0 48: p1.val[3] oo 0 49: p1.yVar.2 oo 0 50: p1.yVar.3 oo 0 51: p1.val oo 0 52: p1.t3.1 oo 0 53: p1.t1.2 oo 0 54: p1.t1.3 oo 0 55: p1.t2.2 oo 0 56: p1.t2.3 oo 0 57: p1.val oo 0 58: p1.t4.1 oo 0 59: p1.dxVar.4 oo 0 60: p1.dxVar.5 oo 0 61: p1.t3.2 oo 0 62: p1.t3.3 oo 0 63: p1.val oo 0 64: p1.t5.1 oo 0 65: p1.uVar.4 oo 0 66: p1.uVar.5 oo 0 67: p1.t4.2 oo 0 68: p1.t4.3 oo 0 69: p1.val oo 0 70: p1.t6.1 oo 0 71: p1.t6.2 oo 0 72: p1.t6.3 oo 0 73: p1.t5.2 oo 0 74: p1.t5.3 oo 0 75: p1.val oo 0 76: p1.uVar.6 oo 0 77: p1.uVar.7 oo 0 78: p1.uVar.8 oo 0 79: p1.dxVar.6 oo 0 80: p1.dxVar.7 oo 0 81: p1.val oo 0 82: p1.y1.1 oo 0 83: p1.yVar.4 oo 0 84: p1.yVar.5 oo 0 85: p1.y1.2 oo 0 86: p1.y1.3 oo 0 87: p1.val oo 0 88: p1.yVar.6 oo 0 89: p1.xVar.6 oo 0 90: p1.xVar.7 oo 0 91: p1.dxVar.8 oo 0 92: p1.dxVar.9 oo 0 93: p1.val oo 0 94: p1.xVar.8 oo 0 95: p1.xVar.9 oo 0 96: p1.xVar.10 oo 0 97: p1.aVar.4 oo 0 98: p1.aVar.5 oo 0 99: p1.val oo 0 @ trans nr. name priority time 0: t1.start 0 0 1: t1.end 0 0

Page 176: Albano Portela Machado - UFPE

___________________________________________________________________

157

2: t1.:= 0 0 3: t1.sink 0 0 4: t1.:= 0 0 5: t1.sink 0 0 6: t1.:= 0 0 7: t1.sink 0 0 8: t1.:= 0 0 9: t1.sink 0 0 10: t1.:= 0 0 11: t1.sink 0 0 12: t1.start 0 0 13: t1.end 0 0 14: t1.clone 0 0 15: t1.clone 0 0 16: t1.< 0 0 17: t1.start 0 0 18: t1.end 0 0 19: t1.clone 0 0 20: t1.clone 0 0 21: t1.* 0 0 22: t1.:= 0 0 23: t1.sink 0 0 24: t1.clone 0 0 25: t1.* 0 0 26: t1.:= 0 0 27: t1.sink 0 0 28: t1.clone 0 0 29: t1.* 0 0 30: t1.:= 0 0 31: t1.sink 0 0 32: t1.clone 0 0 33: t1.clone 0 0 34: t1.* 0 0 35: t1.:= 0 0 36: t1.sink 0 0 37: t1.clone 0 0 38: t1.clone 0 0 39: t1.* 0 0 40: t1.:= 0 0 41: t1.sink 0 0 42: t1.clone 0 0 43: t1.clone 0 0 44: t1.- 0 0 45: t1.:= 0 0 46: t1.sink 0 0 47: t1.clone 0 0 48: t1.clone 0 0 49: t1.- 0 0 50: t1.:= 0 0 51: t1.sink 0 0 52: t1.clone 0 0 53: t1.clone 0 0 54: t1.* 0 0 55: t1.:= 0 0 56: t1.sink 0 0 57: t1.clone 0 0 58: t1.clone 0 0 59: t1.+ 0 0 60: t1.:= 0 0 61: t1.sink 0 0 62: t1.clone 0 0 63: t1.clone 0 0 64: t1.+ 0 0 65: t1.:= 0 0 66: t1.sink 0 0 67: t1.clone 0 0 68: t1.clone 0 0 69: t1.< 0 0 @

Page 177: Albano Portela Machado - UFPE

___________________________________________________________________

158

B.4 Esquemático do Modelo Intermediário1

0: p 1. sta rt

0: t1 .s tart

1: p 1. dum m y

1: t1 .end

2: p 1. end

3: p 1. xVar.0

3: t1 .s in k

4: p 1. yVa r. 0

9: t1 .s in k

5: p 1. uVar.0

11 :t1 .s ink

6: p 1. aVar. 0

5: t1 .s in k

7: p 1. dxVar.0

7: t1 .s in k

8: p 1. x1 .0

9: p 1. y1.0

56 :t1 .s ink

10 :p1 .t1 .0

23 :t1 .s ink

11 :p1 .t2 .0

27 :t1 .s ink

12 :p1 .t3 .0

31 :t1 .s ink

13 :p1 .t4 .0

36 :t1 .s ink

14 :p1 .t5 .0

41 :t1 .s ink

15 :p1 .t6 .0

46 :t1 .s ink

16 :p1 .va l[9 0]

2: t1 .:=

17 :p1 .xVar.1

14 :t1 .c lone

18 :p1 .va l[9 1]

4: t1 .:=

19 :p1 .aVar.1

15 :t1 .c lone 20 :p1 .va l[9 2]

6: t1 .:=

21 :p1 .dxVa r.1

20 :t1 .c lone

22 :p1 .va l[9 3]

8: t1 .:=

23 :p1 .yVar.1

28 :t1 .c lone

24 :p1 .va l[9 4]

10 :t1 .: =

25 :p1 .uVar.1

19 :t1 .c lone

26 :p1 .s tart

12 :t1 .s tart

27 :p1 .dum m y

13 :t1 .en d

28 :p1 .end

29 :p1 .xVar.2

16 :t1 .< 30 :p1 .xVar.3

24 :t1 .c lone

31 :p1 .aVar.232 :p1 .aVar.3

68 :t1 .c lone

33 :p1 .va l

34 :p1 .s tart

17 :t1 .s tart

35 :p1 .dum m y

18 :t1 .en d

36 :p1 .end

37 :p1 .uVar.2

21 :t1 .*

38 :p1 .uVar.3

42 :t1 .c lone

39 :p1 .dxVa r.2

40 :p1 .dxVa r.3

37 :t1 .c lone

41 :p1 .va l

22 :t1 .: =

42 :p1 .t1 .1

32 :t1 .c lone

43 :p1 .va l[3 ]

25 :t1 .*

44 :p1 .xVar.4 45 :p1 .xVar.5

62 :t1 .c lone

46 :p1 .va l

26 :t1 .: =

47 :p1 .t2 .1

33 :t1 .c lone

48 :p1 .va l[3 ]

29 :t1 .*

49 :p1 .yVar.2 50 :p1 .yVar.3

57 :t1 .c lone

51 :p1 .va l

30 :t1 .: =

52 :p1 .t3 .1

38 :t1 .c lone

53 :p1 .t1 .2

34 :t1 .*

54 :p1 .t1 .3

55 :p1 .t2 .2

56 :p1 .t2 .3

57 :p1 .va l

35 :t1 .: =

58 :p1 .t4 .1

43 :t1 .c lone

59 :p1 .dxVa r.4

39 :t1 .*

60 :p1 .dxVa r.5

53 :t1 .c lone

61 :p1 .t3 .2

62 :p1 .t3 .3

63 :p1 .va l

40 :t1 .: =

64 :p1 .t5 .1

48 :t1 .c lone

65 :p1 .uVar.4

44 :t1 .-

66 :p1 .uVar.5

51 :t1 .s ink

67 :p1 .t4 .2

68 :p1 .t4 .3

69 :p1 .va l

45 :t1 .: =

70 :p1 .t6 .1

47 :t1 .c lone

71 :p1 .t6 .2

49 :t1 .-

72 :p1 .t6 .3

73 :p1 .t5 .2

74 :p1 .t5 .3

75 :p1 .va l

50 :t1 .: =

76 :p1 .uVar.6

52 :t1 .c lone

77 :p1 .uVar.7

54 :t1 .*

78 :p1 .uVar.8

79 :p1 .dxVa r.6

80 :p1 .dxVa r.7

63 :t1 .c lone

81 :p1 .va l

55 :t1 .: =

82 :p1 .y1 .1

58 :t1 .c lone

83 :p1 .yVar.4

59 :t1 .+

84 :p1 .yVar.5

61 :t1 .s ink

85 :p1 .y1 .2

86 :p1 .y1 .3

87 :p1 .va l

60 :t1 .: =

88 :p1 .yVar.6

89 :p1 .xVar.6

64 :t1 .+

90 :p1 .xVar.7

66 :t1 .s ink

91 :p1 .dxVa r.8

92 :p1 .dxVa r.9

93 :p1 .va l

65 :t1 .: =

94 :p1 .xVar.8

67 :t1 .c lone

95 :p1 .xVar.9

69 :t1 .<

96 :p1 .xVar.1 0

97 :p1 .aVar.4

98 :p1 .aVar.5

99 :p1 .va l

1O modelo é reversível se acrescentamos uma transição de fechamento entre o último e o primeiro lugar.

Page 178: Albano Portela Machado - UFPE

Apêndice C

Filtro de Ondas Elíptico de 5a Ordem.

C.1 Descrição em VHDL

Este benchmark é derivado de descrições em [36] e [54].

---------------------------------------------------------------------------- -- -- -- Elliptical Wave Filter Benchmark -- -- -- VHDL Benchmark author: D. Sreenivasa Rao -- University Of California, Irvine, CA 92717 -- [email protected], (714)856-5106 -- -- Developed on 12 September, 1992 -- -- Verification Information: -- -- Verified By whom? Date Simulator -- -------- ------------ -------- ------------ -- Syntax yes DSR 09/12/92 ZYCAD -- Functionality yes DSR 09/12/92 ZYCAD ------------------------------------------------------------------------------ --use std.std_logic.all; use work.bit_functions.all; entity ellipf is port ( inp : in BIT_VECTOR(15 downto 0); outp : out BIT_VECTOR(15 downto 0); sv2, sv13, sv18, sv26, sv33, sv38, sv39 : in BIT_VECTOR(15 downto 0); sv2_o, sv13_o, sv18_o, sv26_o, sv33_o, sv38_o, sv39_o : out bit_vector(15 downto 0)); end ellipf; architecture ellipf of ellipf is begin process (inp, sv2, sv13, sv18, sv26, sv33, sv38, sv39) -- constant m1, m2, m3, m4, m5, m6, m7, m8 : integer := (1,1,1,1,1,1,1,1); variable n1, n2, n3, n4, n5, n6, n7 : BIT_VECTOR(15 downto 0); variable n8, n9, n10, n11, n12, n13 : BIT_VECTOR(15 downto 0); variable n14, n15, n16, n17, n18, n19 : BIT_VECTOR(15 downto 0);

Page 179: Albano Portela Machado - UFPE

___________________________________________________________________

160

variable n20, n21, n22, n23, n24, n25 : BIT_VECTOR(15 downto 0); variable n26, n27, n28, n29 : BIT_VECTOR(15 downto 0); -- constant i : integer := (1); begin -- while (i = 1) LOOP n1 := inp + sv2; n2 := sv33 + sv39; n3 := n1 + sv13; n4 := n3 + sv26; n5 := n4 + n2; n6 := n5 ; n7 := n5 ; n8 := n3 + n6; n9 := n7 + n2; n10 := n3 + n8; n11 := n8 + n5; n12 := n2 + n9; n13 := n10 ; n14 := n12 ; n15 := n1 + n13; n16 := n14 + sv39; n17 := n1 + n15; n18 := n15 + n8; n19 := n9 + n16; n20 := n16 + sv39; n21 := n17 ; n22 := n18 + sv18; n23 := sv38 + n19; n24 := n20 ; n25 := inp + n21; n26 := n22 ; n27 := n23 ; n28 := n26 + sv18; n29 := n27 + sv38; sv2_o <= n25 + n15; sv13_o <= n17 + n28; sv18_o <= n28; sv26_o <= n9 + n11; sv38_o <= n29; sv33_o <= n19 + n29; sv39_o <= n16 + n24; outp <= n24; -- end LOOP; end process; end ellipf; --configuration ellipcon of ellipf is -- for ellip_beh -- end for; --end ellipcon;

C.2 Descrição em Occam

PAR INT INP, OUTP, SV2, SV13, SV18, SV26, SV33, SV38, SV39: INT SV2o, SV13o, SV18o, SV26o, SV33o, SV38o, SV39o: INT n1, n2, n3, n4, n5, n6, n7: INT n8, n9, n10, n11, n12, n13, n14: INT n15, n16, n17, n18, n19, n20, n21: INT n22, n23, n24, n25, n26, n27, n28, n29: SEQ n1 := INP + SV2

Page 180: Albano Portela Machado - UFPE

___________________________________________________________________

161

n2 := SV33 + SV39 n3 := n1 + SV13 n4 := n3 + SV26 n5 := n4 + n2 n6 := n5 n7 := n5 n8 := n3 + n6 n9 := n7 + n2 n10 := n3 + n8 n11 := n8 + n5 n12 := n2 + n9 n13 := n10 n14 := n12 n15 := n1 + n13 n16 := n14 + SV39 n17 := n1 + n15 n18 := n15 + n8 n19 := n9 + n16 n20 := n16 + SV39 n21 := n17 n22 := n18 + SV18 n23 := SV38 + n19 n24 := n20 n25 := INP + n21 n26 := n22 n27 := n23 n28 := n26 + SV18 n29 := n27 + SV38 SV2o := n25 + n15 SV13o := n17 + n28 SV18o := n28 SV26o := n9 + n11 SV38o := n29 SV33o := n19 + n29 SV39o := n16 + n24 OUTP := n24

C.3 Modelo Intermediário – INA (.pnt )

P M PRE,POST NETZ 0:EWFB3 0 1 , 0 1 0 0, 1 2 0 1 3 0 0, 2 4 0 0, 6 5 0 0, 11 6 0 0, 16 7 0 0, 21 8 0 0, 26 9 0 0, 29 10 0 0, 32 11 0 0, 37 12 0 0, 42 13 0 0, 47 14 0 0, 52 15 0 0, 57 16 0 0, 60 17 0 0, 63 18 0 0, 68 19 0 0, 73 20 0 0, 78 21 0 0, 83 22 0 0, 88 23 0 0, 93

Page 181: Albano Portela Machado - UFPE

___________________________________________________________________

162

24 0 0, 96 25 0 0, 101 26 0 0, 106 27 0 0, 109 28 0 0, 114 29 0 0, 117 30 0 0, 120 31 0 0, 125 32 0 0, 130 33 0 2, 4 34 0 2, 3 35 0 3, 4 36 0 3, 7 37 0 4, 5 38 0 5, 12 39 0 7, 9 40 0 7, 8 41 0 8, 9 42 0 8, 13 43 0 9, 10 44 0 10, 23 45 0 12, 14 46 0 12, 64 47 0 13, 14 48 0 13, 18 49 0 14, 15 50 0 15, 17 51 0 17, 19 52 0 17, 33 53 0 18, 19 54 0 18, 70 55 0 19, 20 56 0 20, 22 57 0 22, 24 58 0 22, 1 59 0 23, 24 60 0 23, 39 61 0 24, 25 62 0 25, 27 63 0 27, 28 64 0 27, 30 65 0 28, 34 66 0 30, 31 67 0 30, 49 68 0 31, 38 69 0 33, 35 70 0 33, 43 71 0 34, 35 72 0 34, 1 73 0 35, 36 74 0 36, 44 75 0 38, 40 76 0 38, 1 77 0 39, 40 78 0 39, 53 79 0 40, 41 80 0 41, 54 81 0 43, 45 82 0 43, 1 83 0 44, 45 84 0 44, 48 85 0 45, 46 86 0 46, 58 87 0 48, 50 88 0 48, 80 89 0 49, 50 90 0 49, 1 91 0 50, 51 92 0 51, 145 93 0 53, 55 94 0 53, 1

Page 182: Albano Portela Machado - UFPE

___________________________________________________________________

163

95 0 54, 55 96 0 54, 84 97 0 55, 56 98 0 56, 61 99 0 58, 59 100 0 58, 1 101 0 59, 65 102 0 61, 62 103 0 61, 1 104 0 62, 69 105 0 64, 66 106 0 64, 74 107 0 65, 66 108 0 65, 1 109 0 66, 67 110 0 67, 75 111 0 69, 71 112 0 69, 1 113 0 70, 71 114 0 70, 90 115 0 71, 72 116 0 72, 85 117 0 74, 76 118 0 74, 1 119 0 75, 76 120 0 75, 79 121 0 76, 77 122 0 77, 94 123 0 79, 81 124 0 79, 132 125 0 80, 81 126 0 80, 1 127 0 81, 82 128 0 82, 97 129 0 84, 86 130 0 84, 144 131 0 85, 86 132 0 85, 89 133 0 86, 87 134 0 87, 103 135 0 89, 91 136 0 89, 157 137 0 90, 91 138 0 90, 98 139 0 91, 92 140 0 92, 107 141 0 94, 95 142 0 94, 136 143 0 95, 111 144 0 97, 99 145 0 97, 1 146 0 98, 99 147 0 98, 102 148 0 99, 100 149 0 100, 115 150 0 102, 104 151 0 102, 110 152 0 103, 104 153 0 103, 152 154 0 104, 105 155 0 105, 118 156 0 107, 108 157 0 107, 1 158 0 108, 158 159 0 110, 112 160 0 110, 122 161 0 111, 112 162 0 111, 1 163 0 112, 113 164 0 113, 131 165 0 115, 116

Page 183: Albano Portela Machado - UFPE

___________________________________________________________________

164

166 0 115, 1 167 0 116, 121 168 0 118, 119 169 0 118, 1 170 0 119, 126 171 0 121, 123 172 0 121, 1 173 0 122, 123 174 0 122, 127 175 0 123, 124 176 0 124, 137 177 0 126, 128 178 0 126, 1 179 0 127, 128 180 0 127, 135 181 0 128, 129 182 0 129, 149 183 0 131, 133 184 0 131, 1 185 0 132, 133 186 0 132, 1 187 0 133, 134 188 0 134, 140 189 0 136, 138 190 0 136, 1 191 0 137, 138 192 0 137, 141 193 0 138, 139 194 0 139, 143 195 0 141, 142 196 0 141, 1 197 0 142, 148 198 0 144, 146 199 0 144, 1 200 0 145, 146 201 0 145, 1 202 0 146, 147 203 0 147, 151 204 0 149, 150 205 0 149, 153 206 0 150, 156 207 0 152, 154 208 0 152, 1 209 0 153, 154 210 0 153, 1 211 0 154, 155 212 0 155, 161 213 0 157, 159 214 0 157, 1 215 0 158, 159 216 0 158, 162 217 0 159, 160 218 0 160, 164 219 0 162, 163 220 0 162, 1 221 0 163, 1 @ place nr. name capacity time 0: p1.start oo 0 1: p1.dummy oo 0 2: p1.end oo 0 3: p1.CANAL.0 oo 0 4: p1.n1.0 oo 0 5: p1.n2.0 oo 0 6: p1.n3.0 oo 0 7: p1.n4.0 oo 0 8: p1.n5.0 oo 0 9: p1.n6.0 oo 0 10: p1.n7.0 oo 0 11: p1.n8.0 oo 0 12: p1.n9.0 oo 0

Page 184: Albano Portela Machado - UFPE

___________________________________________________________________

165

13: p1.n10.0 oo 0 14: p1.n11.0 oo 0 15: p1.n12.0 oo 0 16: p1.n13.0 oo 0 17: p1.n14.0 oo 0 18: p1.n15.0 oo 0 19: p1.n16.0 oo 0 20: p1.n17.0 oo 0 21: p1.n18.0 oo 0 22: p1.n19.0 oo 0 23: p1.n20.0 oo 0 24: p1.n21.0 oo 0 25: p1.n22.0 oo 0 26: p1.n23.0 oo 0 27: p1.n24.0 oo 0 28: p1.n25.0 oo 0 29: p1.n26.0 oo 0 30: p1.n27.0 oo 0 31: p1.n28.0 oo 0 32: p1.n29.0 oo 0 33: p1.CANAL.1 oo 0 34: p1.CANAL.2 oo 0 35: p1.CANAL.3 oo 0 36: p1.CANAL.4 oo 0 37: p1.val oo 0 38: p1.n1.1 oo 0 39: p1.CANAL.5 oo 0 40: p1.CANAL.6 oo 0 41: p1.CANAL.7 oo 0 42: p1.CANAL.8 oo 0 43: p1.val oo 0 44: p1.n2.1 oo 0 45: p1.n1.2 oo 0 46: p1.n1.3 oo 0 47: p1.CANAL.9 oo 0 48: p1.CANAL.10 oo 0 49: p1.val oo 0 50: p1.n3.1 oo 0 51: p1.n3.2 oo 0 52: p1.n3.3 oo 0 53: p1.CANAL.11 oo 0 54: p1.CANAL.12 oo 0 55: p1.val oo 0 56: p1.n4.1 oo 0 57: p1.n4.2 oo 0 58: p1.n4.3 oo 0 59: p1.n2.2 oo 0 60: p1.n2.3 oo 0 61: p1.val oo 0 62: p1.n5.1 oo 0 63: p1.n5.2 oo 0 64: p1.n5.3 oo 0 65: p1.n6.1 oo 0 66: p1.n5.4 oo 0 67: p1.n5.5 oo 0 68: p1.n7.1 oo 0 69: p1.n3.4 oo 0 70: p1.n3.5 oo 0 71: p1.n6.2 oo 0 72: p1.n6.3 oo 0 73: p1.val oo 0 74: p1.n8.1 oo 0 75: p1.n7.2 oo 0 76: p1.n7.3 oo 0 77: p1.n2.4 oo 0 78: p1.n2.5 oo 0 79: p1.val oo 0 80: p1.n9.1 oo 0 81: p1.n3.6 oo 0 82: p1.n3.7 oo 0 83: p1.n8.2 oo 0

Page 185: Albano Portela Machado - UFPE

___________________________________________________________________

166

84: p1.n8.3 oo 0 85: p1.val oo 0 86: p1.n10.1 oo 0 87: p1.n8.4 oo 0 88: p1.n8.5 oo 0 89: p1.n5.6 oo 0 90: p1.n5.7 oo 0 91: p1.val oo 0 92: p1.n11.1 oo 0 93: p1.n2.6 oo 0 94: p1.n2.7 oo 0 95: p1.n9.2 oo 0 96: p1.n9.3 oo 0 97: p1.val oo 0 98: p1.n12.1 oo 0 99: p1.n10.2 oo 0 100: p1.n10.3 oo 0 101: p1.n13.1 oo 0 102: p1.n12.2 oo 0 103: p1.n12.3 oo 0 104: p1.n14.1 oo 0 105: p1.n1.4 oo 0 106: p1.n1.5 oo 0 107: p1.n13.2 oo 0 108: p1.n13.3 oo 0 109: p1.val oo 0 110: p1.n15.1 oo 0 111: p1.n14.2 oo 0 112: p1.n14.3 oo 0 113: p1.CANAL.13 oo 0 114: p1.CANAL.14 oo 0 115: p1.val oo 0 116: p1.n16.1 oo 0 117: p1.n1.6 oo 0 118: p1.n1.7 oo 0 119: p1.n15.2 oo 0 120: p1.n15.3 oo 0 121: p1.val oo 0 122: p1.n17.1 oo 0 123: p1.n15.4 oo 0 124: p1.n15.5 oo 0 125: p1.n8.6 oo 0 126: p1.n8.7 oo 0 127: p1.val oo 0 128: p1.n18.1 oo 0 129: p1.n9.4 oo 0 130: p1.n9.5 oo 0 131: p1.n16.2 oo 0 132: p1.n16.3 oo 0 133: p1.val oo 0 134: p1.n19.1 oo 0 135: p1.n16.4 oo 0 136: p1.n16.5 oo 0 137: p1.CANAL.15 oo 0 138: p1.CANAL.16 oo 0 139: p1.val oo 0 140: p1.n20.1 oo 0 141: p1.n17.2 oo 0 142: p1.n17.3 oo 0 143: p1.n21.1 oo 0 144: p1.n18.2 oo 0 145: p1.n18.3 oo 0 146: p1.CANAL.17 oo 0 147: p1.CANAL.18 oo 0 148: p1.val oo 0 149: p1.n22.1 oo 0 150: p1.CANAL.19 oo 0 151: p1.CANAL.20 oo 0 152: p1.n19.2 oo 0 153: p1.n19.3 oo 0 154: p1.val oo 0

Page 186: Albano Portela Machado - UFPE

___________________________________________________________________

167

155: p1.n23.1 oo 0 156: p1.n20.2 oo 0 157: p1.n20.3 oo 0 158: p1.n24.1 oo 0 159: p1.CANAL.21 oo 0 160: p1.CANAL.22 oo 0 161: p1.n21.2 oo 0 162: p1.n21.3 oo 0 163: p1.val oo 0 164: p1.n25.1 oo 0 165: p1.n22.2 oo 0 166: p1.n22.3 oo 0 167: p1.n26.1 oo 0 168: p1.n23.2 oo 0 169: p1.n23.3 oo 0 170: p1.n27.1 oo 0 171: p1.n26.2 oo 0 172: p1.n26.3 oo 0 173: p1.CANAL.23 oo 0 174: p1.CANAL.24 oo 0 175: p1.val oo 0 176: p1.n28.1 oo 0 177: p1.n27.2 oo 0 178: p1.n27.3 oo 0 179: p1.CANAL.25 oo 0 180: p1.CANAL.26 oo 0 181: p1.val oo 0 182: p1.n29.1 oo 0 183: p1.n25.2 oo 0 184: p1.n25.3 oo 0 185: p1.n15.6 oo 0 186: p1.n15.7 oo 0 187: p1.val oo 0 188: p1.CANAL.27 oo 0 189: p1.n17.4 oo 0 190: p1.n17.5 oo 0 191: p1.n28.2 oo 0 192: p1.n28.3 oo 0 193: p1.val oo 0 194: p1.CANAL.28 oo 0 195: p1.n28.4 oo 0 196: p1.n28.5 oo 0 197: p1.CANAL.29 oo 0 198: p1.n9.6 oo 0 199: p1.n9.7 oo 0 200: p1.n11.2 oo 0 201: p1.n11.3 oo 0 202: p1.val oo 0 203: p1.CANAL.30 oo 0 204: p1.n29.2 oo 0 205: p1.n29.3 oo 0 206: p1.CANAL.31 oo 0 207: p1.n19.4 oo 0 208: p1.n19.5 oo 0 209: p1.n29.4 oo 0 210: p1.n29.5 oo 0 211: p1.val oo 0 212: p1.CANAL.32 oo 0 213: p1.n16.6 oo 0 214: p1.n16.7 oo 0 215: p1.n24.2 oo 0 216: p1.n24.3 oo 0 217: p1.val oo 0 218: p1.CANAL.33 oo 0 219: p1.n24.4 oo 0 220: p1.n24.5 oo 0 221: p1.CANAL.34 oo 0 @ trans nr. name priority time 0: t1.start 0 0 1: t1.end 0 0

Page 187: Albano Portela Machado - UFPE

___________________________________________________________________

168

2: t1.clone 0 0 3: t1.clone 0 0 4: t1.+ 0 0 5: t1.:= 0 0 6: t1.sink 0 0 7: t1.clone 0 0 8: t1.clone 0 0 9: t1.+ 0 0 10: t1.:= 0 0 11: t1.sink 0 0 12: t1.clone 0 0 13: t1.clone 0 0 14: t1.+ 0 0 15: t1.:= 0 0 16: t1.sink 0 0 17: t1.clone 0 0 18: t1.clone 0 0 19: t1.+ 0 0 20: t1.:= 0 0 21: t1.sink 0 0 22: t1.clone 0 0 23: t1.clone 0 0 24: t1.+ 0 0 25: t1.:= 0 0 26: t1.sink 0 0 27: t1.clone 0 0 28: t1.:= 0 0 29: t1.sink 0 0 30: t1.clone 0 0 31: t1.:= 0 0 32: t1.sink 0 0 33: t1.clone 0 0 34: t1.clone 0 0 35: t1.+ 0 0 36: t1.:= 0 0 37: t1.sink 0 0 38: t1.clone 0 0 39: t1.clone 0 0 40: t1.+ 0 0 41: t1.:= 0 0 42: t1.sink 0 0 43: t1.clone 0 0 44: t1.clone 0 0 45: t1.+ 0 0 46: t1.:= 0 0 47: t1.sink 0 0 48: t1.clone 0 0 49: t1.clone 0 0 50: t1.+ 0 0 51: t1.:= 0 0 52: t1.sink 0 0 53: t1.clone 0 0 54: t1.clone 0 0 55: t1.+ 0 0 56: t1.:= 0 0 57: t1.sink 0 0 58: t1.clone 0 0 59: t1.:= 0 0 60: t1.sink 0 0 61: t1.clone 0 0 62: t1.:= 0 0 63: t1.sink 0 0 64: t1.clone 0 0 65: t1.clone 0 0 66: t1.+ 0 0 67: t1.:= 0 0 68: t1.sink 0 0 69: t1.clone 0 0 70: t1.clone 0 0 71: t1.+ 0 0 72: t1.:= 0 0

Page 188: Albano Portela Machado - UFPE

___________________________________________________________________

169

73: t1.sink 0 0 74: t1.clone 0 0 75: t1.clone 0 0 76: t1.+ 0 0 77: t1.:= 0 0 78: t1.sink 0 0 79: t1.clone 0 0 80: t1.clone 0 0 81: t1.+ 0 0 82: t1.:= 0 0 83: t1.sink 0 0 84: t1.clone 0 0 85: t1.clone 0 0 86: t1.+ 0 0 87: t1.:= 0 0 88: t1.sink 0 0 89: t1.clone 0 0 90: t1.clone 0 0 91: t1.+ 0 0 92: t1.:= 0 0 93: t1.sink 0 0 94: t1.clone 0 0 95: t1.:= 0 0 96: t1.sink 0 0 97: t1.clone 0 0 98: t1.clone 0 0 99: t1.+ 0 0 100: t1.:= 0 0 101: t1.sink 0 0 102: t1.clone 0 0 103: t1.clone 0 0 104: t1.+ 0 0 105: t1.:= 0 0 106: t1.sink 0 0 107: t1.clone 0 0 108: t1.:= 0 0 109: t1.sink 0 0 110: t1.clone 0 0 111: t1.clone 0 0 112: t1.+ 0 0 113: t1.:= 0 0 114: t1.sink 0 0 115: t1.clone 0 0 116: t1.:= 0 0 117: t1.sink 0 0 118: t1.clone 0 0 119: t1.:= 0 0 120: t1.sink 0 0 121: t1.clone 0 0 122: t1.clone 0 0 123: t1.+ 0 0 124: t1.:= 0 0 125: t1.sink 0 0 126: t1.clone 0 0 127: t1.clone 0 0 128: t1.+ 0 0 129: t1.:= 0 0 130: t1.sink 0 0 131: t1.clone 0 0 132: t1.clone 0 0 133: t1.+ 0 0 134: t1.:= 0 0 135: t1.sink 0 0 136: t1.clone 0 0 137: t1.clone 0 0 138: t1.+ 0 0 139: t1.:= 0 0 140: t1.sink 0 0 141: t1.clone 0 0 142: t1.:= 0 0 143: t1.sink 0 0

Page 189: Albano Portela Machado - UFPE

___________________________________________________________________

170

144: t1.clone 0 0 145: t1.clone 0 0 146: t1.+ 0 0 147: t1.:= 0 0 148: t1.sink 0 0 149: t1.clone 0 0 150: t1.:= 0 0 151: t1.sink 0 0 152: t1.clone 0 0 153: t1.clone 0 0 154: t1.+ 0 0 155: t1.:= 0 0 156: t1.sink 0 0 157: t1.clone 0 0 158: t1.clone 0 0 159: t1.+ 0 0 160: t1.:= 0 0 161: t1.sink 0 0 162: t1.clone 0 0 163: t1.:= 0 0 164: t1.sink 0 0 @

Page 190: Albano Portela Machado - UFPE

___________________________________________________________________

171

C.4 Esquemático do Modelo Intermediário2

0:p1.start

0 :t1 .start

1 :p1.dumm y

1:t1.end

2:p1.end

3:p1.INP.0

2:t1 .clone

4:p1.OUTP.0

164:t1 .sink

5:p1.SV2.0

3:t1 .clone

6:p1.SV13. 0

13:t1.clone

7:p1.SV18. 0

98:t1.clone

8:p1.SV26. 0

18:t1.clone

9:p1.SV33. 0

7:t1 .clone

10:p1.SV38 .0

102:t1 .clon e

11:p1.SV39 .0

8:t1 .clone

12:p1.SV2o.0

135:t1 .sink

13:p1.SV13 o.0

140:t1 .sink

14:p1.SV18 o.0

143:t1 .sink

15:p1.SV26 o.0

148:t1 .sink

16:p1.SV33 o.0

156:t1 .sink

17:p1.SV38 o.0

151:t1 .sink

18:p1.SV39 o.0

161:t1 .sink

19:p1.n1.0

6:t1 .sink

20:p1.n2.0

11:t1.sink

21:p1.n3.0

16:t1.sink

22:p1.n4.0

21:t1.sink

23:p1.n5.0

26:t1.sink

24:p1.n6.0

29:t1.sink

25:p1.n7.0

32:t1.sink

26:p1.n8.0

37:t1.sink

27:p1.n9.0

42:t1.sink

28:p1.n10.0

47:t1.sink

29:p1.n11.0

52:t1.sink

30:p1.n12.0

57:t1.sink

31:p1.n13.0

60:t1.sink

32:p1.n14.0

63:t1.sink

33:p1.n15.0

68:t1.sink

34:p1.n16.0

73:t1.sink

35:p1.n17.0

78:t1.sink

36:p1.n18.0

83:t1.sink

37:p1.n19.0

88:t1.sink

38:p1.n20.0

93:t1.sink

39:p1.n21.0

96:t1.sink

40:p1.n22.0

101:t1 .sink

41:p1.n23.0

106:t1 .sink

42:p1.n24.0

109:t1 .sink

43:p1.n25.0

114:t1 .sink

44:p1.n26.0

117:t1 .sink

45:p1.n27.0

120:t1 .sink

46:p1.n28.0

125:t1 .sink

47:p1.n29.0

130:t1 .sink

48:p1.INP.1

4:t1 .+

49:p1.INP.2

110:t1 .clon e

50:p1.SV2. 1

51:p1.SV2. 2 52:p1.val

5 :t1 .:=

53:p1.n1.1

12:t1.clone

54:p1.SV33 .1

9:t1 .+

55:p1.SV33 .2

56:p1.SV39 .1

57:p1.SV39 .2

70:t1.clone

58:p1.val

10:t1.:=

59:p1.n2.1

23:t1.clone

60:p1.n1.2

14:t1.+

61:p1.n1.3

64:t1.clone

62:p1.SV13 .1

63:p1.SV13 .2

64:p1.val

15:t1.:=

65:p1.n3.1

17:t1.clone

66:p1.n3.2

19:t1.+67:p1.n3.3

33:t1.clone

68:p1.SV26 .1

69:p1.SV26 .270:p1.val

20:t1.:=

71:p1.n4.1

22:t1.clone

72:p1.n4.2

24:t1.+

73:p1.n4.3

74:p1.n2.2

75:p1.n2.3

39:t1.clone

76:p1.val

25:t1.:=

77:p1.n5.1

27:t1.clone

78:p1.n5.2

28:t1.:=

79:p1.n5.3

30:t1.clone

80:p1.n6.1

34:t1.clone

81:p1.n5.4

31:t1.:=82:p1.n5.5

49:t1.clone

83:p1.n7.1

38:t1.clone

84:p1.n3.4

35:t1.+

85:p1.n3.5

43:t1.clone

86:p1.n6.2

87:p1.n6.3

88:p1.val

36:t1.:=

89:p1.n8.1

44:t1.clone

90:p1.n7.2

40:t1.+

91:p1.n7.3

92:p1.n2.4

93:p1.n2.5

53:t1.clone

94:p1.val

41:t1.:=

95:p1.n9.1

54:t1.clone

96:p1.n3.6

45:t1.+

97:p1.n3.7

98:p1.n8.2

99:p1.n8.3

48:t1.clone

100:p1.val

46:t1.:=

101:p1.n10.1

58:t1.clone

102:p1.n8.4

50:t1.+

103:p1.n8.5

80:t1.clone

104:p1.n5.6

105:p1.n5.7

106:p1.val

51:t1.:=

107:p1.n11.1

145:t1 .clon e

108:p1.n2.6

55:t1.+ 109:p1.n2.7

110:p1.n9.2

111:p1.n9.3

84:t1.clone

112:p1.val

56:t1.:=

113:p1.n12.1

61:t1.clone

114:p1.n10.2

59:t1.:=

115:p1.n10.3116:p1.n13.1

65:t1.clone

117:p1.n12.2

62:t1.:=118:p1.n12.3

119:p1.n14.1

69:t1.clone

120:p1.n1.4

66:t1.+

121:p1.n1.5

74:t1.clone

122:p1.n13.2

123:p1.n13.3

124:p1.val

67:t1.:=

125:p1.n15.1

75:t1.clone

126:p1.n14.2

71:t1.+

127:p1.n14.3

128:p1.SV3 9.3

129:p1.SV3 9.4

90:t1.clone

130:p1.val

72:t1.:=

131:p1.n16.1

85:t1.clone

132:p1.n1.6

76:t1.+

133:p1.n1.7

134:p1.n15.2 135:p1.n15.3

79:t1.clone

136:p1.val

77:t1.:=

137:p1.n17.1

94:t1.clone

138:p1.n15.4

81:t1.+139:p1.n15.5

132:t1 .clon e

140:p1.n8.6

141:p1.n8.7142:p1.val

82:t1.:=

143:p1.n18.1

97:t1.clone

144:p1.n9.4

86:t1.+

145:p1.n9.5

144:t1 .clon e

146:p1.n16.2

147:p1.n16.3

89:t1.clone

148:p1.val

87:t1.:=

149:p1.n19.1

103:t1 .clon e

150:p1.n16.4

91:t1.+

151:p1.n16.5

157:t1 .clon e

152:p1.SV3 9.5 153:p1.SV3 9.6

154:p1.val

92:t1.:=

155:p1.n20.1

107:t1 .clon e

156:p1.n17.2

95:t1.:=

157:p1.n17.3

136:t1 .clon e

158:p1.n21.1

111:t1 .clon e

159:p1.n18.2

99:t1.+

160:p1.n18.3

161:p1.SV1 8.1

162:p1.SV1 8.2

122:t1 .clon e

163:p1.val

100:t1 .:=

164:p1.n22.1

115:t1 .clon e

165:p1.SV3 8.1

104:t1 .+

166:p1.SV3 8.2

127:t1 .clon e

167:p1.n19.2

168:p1.n19.3

152:t1 .clon e

169:p1.val

105:t1 .:=

170:p1.n23.1

118:t1 .clon e

171:p1.n20.2

108:t1 .:=

172:p1.n20.3

173:p1.n24.1

158:t1 .clon e

174:p1.INP.3

112:t1 .+175:p1.INP.4

176:p1.n21.2

177:p1.n21.3178:p1.val

113:t1 .:=

179:p1.n25.1

131:t1 .clon e

180:p1.n22.2

116:t1 .:= 181:p1.n22.3

182:p1.n26.1

121:t1 .clon e

183:p1.n23.2

119:t1 .:=

184:p1.n23.3

185:p1.n27.1

126:t1 .clon e

186:p1.n26.2

123:t1 .+ 187:p1.n26.3

188:p1.SV1 8.3

189:p1.SV1 8.4

190:p1.val

124:t1 .:=

191:p1.n28.1

137:t1 .clon e

192:p1.n27.2

128:t1 .+

193:p1.n27.3

194:p1.SV3 8.3

195:p1.SV3 8.4

196:p1.val

129:t1 .:=

197:p1.n29.1

149:t1 .clon e

198:p1.n25.2

133:t1 .+

199:p1.n25.3

200:p1.n15.6

201:p1.n15.7

202:p1.val

134:t1 .:=

203:p1.SV2 o.1

204:p1.n17.4

138:t1 .+

205:p1.n17.5

206:p1.n28.2207:p1.n28.3

141:t1 .clon e

208:p1.val

139:t1 .:=

209:p1.SV1 3o.1

210:p1.n28.4

142:t1 .:=

211:p1.n28.5212:p1.SV1 8o.1

213:p1.n9.6

146:t1 .+ 214:p1.n9.7

215:p1.n11.2

216:p1.n11.3 217:p1.val

147:t1 .:=

218:p1.SV2 6o.1

219:p1.n29.2

150:t1 .:=

220:p1.n29.3

153:t1 .clon e

221:p1.SV3 8o.1

222:p1.n19.4

154:t1 .+

223:p1.n19.5

224:p1.n29.4

225:p1.n29.5

226:p1.val

155:t1 .:=

227:p1.SV3 3o.1

228:p1.n16.6

159:t1 .+229:p1.n16.7

230:p1.n24.2 231:p1.n24.3

162:t1 .clon e

232:p1.val

160:t1 .:=

233:p1.SV3 9o.1

234:p1.n24.4

163:t1 .:=

235:p1.n24.5

236:p1.OUTP.1

2 O modelo é reversível se acrescentamos uma transição de fechamento entre o último e o primeiro lugar.

Page 191: Albano Portela Machado - UFPE

Apêndice D

Máquina de Refrigerantes

D.1 Descrição em Occam

CHAN OF INT EM, VM, PR, RE, LD, LR, AC, NAC, HC, HNC, CA50, CA10, NMD50, NMD10: INT change: PAR INT coinValue, totalPaid, price, emv, rev, ac, nac, prv: SEQ SEQ price := 8 change := 0 totalPaid := 0 prv := 0 WHILE prv = 0 SEQ EM ? emv WHILE emv = 0 SEQ EM ? emv VM ? coinValue totalPaid := totalPaid + coinValue PR ? prv RE ? rev IF rev = 0 LD ! 1 rev = 1 SEQ change := totalPaid - price IF change < 0 LD ! 1 change = 0 LR ! 1 change > 0 SEQ ALT AC ? ac LR ! 1 NAC ? nac LD ! 1 LR ! 1 INT nmd50, nmd10, ca50, ca10: SEQ SEQ PAR HC ! 0 HNC ! 0 nmd10 := 0 nmd50:= change/50 CA50 ? ca50 IF

Page 192: Albano Portela Machado - UFPE

___________________________________________________________________

173

nmd50 <= 0 SKIP nmd50 <= ca50 SEQ change := change - 50 IF change = 0 PAR NMD50 ! nmd50 NMD10 ! nmd10 HC ! 1 TRUE SEQ nmd10 := change/10 CA10 ? ca10 IF nmd10 <= ca10 PAR NMD50 ! nmd50 NMD10 ! nmd10 HC ! 1 TRUE HNC ! 1

D.2 Modelo Intermediário – INA (.pnt )

P M PRE,POST NETZ 0:MaquinaRefrigerantes 0 0 , 7 1 1 , 0 2 0 0, 1 3 0 1 4 0 0, 27 5 0 0, 9 6 0 0, 5 7 0 0, 20 8 0 0, 40 9 0 0, 66 10 0 0, 68 11 0 0, 11 12 0 0, 2 13 0 2, 3 14 0 3, 1 15 0 2, 4 16 0 4, 50 17 0 2, 6 18 0 6, 53 19 0 2, 8 20 0 8, 28 21 0 2, 10 22 0 10, 14 23 0 2, 12 24 0 12, 13 25 0 13, 3 26 0 14, 15 27 0 14, 36 28 0 2, 15 29 0 15, 12 30 0 12, 16 31 0 16, 17 32 0 17, 13 33 0 16, 18

Page 193: Albano Portela Machado - UFPE

___________________________________________________________________

174

34 0 18, 19 35 0 19, 17 36 0 20, 21 37 0 20, 25 38 0 16, 21 39 0 21, 18 40 0 18, 22 41 0 22, 23 42 0 23, 19 43 0 22, 24 44 0 24, 33 45 0 22, 26 46 0 26, 29 47 0 28, 30 48 0 28, 32 49 0 29, 30 50 0 29, 1 51 0 30, 31 52 0 31, 49 53 0 33, 34 54 0 33, 1 55 0 16, 34 56 0 34, 19 57 0 16, 35 58 0 35, 37 59 0 37, 38 60 0 37, 1 61 0 2, 38 62 0 38, 13 63 0 2, 39 64 0 39, 43 65 0 0, 41 66 0 41, 42 67 0 42, 1 68 0 43, 44 69 0 43, 45 70 0 0, 44 71 0 44, 41 72 0 45, 46 73 0 45, 1 74 0 0, 46 75 0 46, 41 76 0 41, 47 77 0 47, 48 78 0 48, 42 79 0 49, 51 80 0 49, 1 81 0 50, 51 82 0 50, 1 83 0 51, 52 84 0 52, 56 85 0 47, 54 86 0 54, 55 87 0 55, 48 88 0 56, 57 89 0 56, 58 90 0 47, 57 91 0 57, 54 92 0 58, 59 93 0 58, 60 94 0 47, 59 95 0 59, 54 96 0 60, 61 97 0 60, 78 98 0 47, 61 99 0 61, 54 100 0 54, 62 101 0 62, 63 102 0 63, 55 103 0 62, 64 104 0 64, 65

Page 194: Albano Portela Machado - UFPE

___________________________________________________________________

175

105 0 65, 63 106 0 66, 67 107 0 66, 1 108 0 62, 67 109 0 67, 64 110 0 68, 69 111 0 68, 1 112 0 62, 69 113 0 69, 64 114 1 , 70 115 0 70, 71 116 0 71 117 0 70, 81 118 0 70, 77 119 0 70, 83 120 0 70, 110 121 0 70, 72 122 0 72, 73 123 0 73, 71 124 0 72, 74 125 0 74, 75 126 0 75, 73 127 0 72, 76 128 0 76, 108 129 0 78, 79 130 0 78, 93 131 0 72, 79 132 0 79, 80 133 0 80, 86 134 0 72, 82 135 0 82, 89 136 0 70, 84 137 0 84, 85 138 0 85, 71 139 0 86, 87 140 0 86, 88 141 0 70, 87 142 0 87, 84 143 0 88, 90 144 0 88, 71 145 0 89, 90 146 0 89, 71 147 0 90, 84 148 0 84, 91 149 0 91, 92 150 0 92, 85 151 0 93, 94 152 0 93, 96 153 0 91, 94 154 0 94, 95 155 0 95, 99 156 0 91, 97 157 0 97, 98 158 0 98, 92 159 0 99, 100 160 0 99, 105 161 0 91, 100 162 0 100, 97 163 0 97, 101 164 0 101, 102 165 0 102, 98 166 0 91, 97 167 0 97, 103 168 0 103, 104 169 0 104, 98 170 0 105, 106 171 0 105 172 0 103, 106 173 0 106, 107 174 0 107, 113 175 0 103, 109

Page 195: Albano Portela Machado - UFPE

___________________________________________________________________

176

176 0 109, 114 177 0 103, 111 178 0 111, 112 179 0 112, 104 180 0 113, 115 181 0 113, 71 182 0 114, 115 183 0 114, 71 184 0 115, 111 185 0 111, 116 186 0 116, 117 187 0 117, 112 188 0 103, 111 @ place nr. name capacity time 0: p0.change.0 oo 0 1: p1.start oo 0 2: p1.dummy oo 0 3: p1.end oo 0 4: p1.coinValue.0 oo 0 5: p1.totalPaid.0 oo 0 6: p1.price.0 oo 0 7: p1.emv.0 oo 0 8: p1.rev.0 oo 0 9: p1.ac.0 oo 0 10: p1.nac.0 oo 0 11: p1.prv.0 oo 0 12: p1.start oo 0 13: p1.dummy oo 0 14: p1.end oo 0 15: p1.val[8] oo 0 16: p1.price.1 oo 0 17: p1.val[0] oo 0 18: p0.change.1 oo 0 19: p1.val[0] oo 0 20: p1.totalPaid.1 oo 0 21: p1.val[0] oo 0 22: p1.prv.1 oo 0 23: p1.start oo 0 24: p1.dummy oo 0 25: p1.end oo 0 26: p1.prv.2 oo 0 27: p1.prv.3 oo 0 28: p1.val[0] oo 0 29: p1.val oo 0 30: p1.start oo 0 31: p1.dummy oo 0 32: p1.end oo 0 33: p1.start oo 0 34: p1.dummy oo 0 35: p1.end oo 0 36: p1.emv.1 oo 0 37: p1.emv.2 oo 0 38: p1.val[0] oo 0 39: p1.val oo 0 40: p1.start oo 0 41: p1.dummy oo 0 42: p1.end oo 0 43: p1.val[99] oo 0 44: p1.emv.3 oo 0 45: p1.val[99] oo 0 46: p1.coinValue.1 oo 0 47: p1.totalPaid.2 oo 0 48: p1.totalPaid.3 oo 0 49: p1.coinValue.2 oo 0 50: p1.coinValue.3 oo 0 51: p1.val oo 0 52: p1.totalPaid.4 oo 0 53: p1.emv.4 oo 0 54: p1.emv.5 oo 0 55: p1.val[0] oo 0

Page 196: Albano Portela Machado - UFPE

___________________________________________________________________

177

56: p1.val oo 0 57: p1.val[99] oo 0 58: p1.prv.4 oo 0 59: p1.prv.5 oo 0 60: p1.prv.6 oo 0 61: p1.val[0] oo 0 62: p1.val oo 0 63: p1.val[99] oo 0 64: p1.rev.1 oo 0 65: p1.start oo 0 66: p1.dummy oo 0 67: p1.end oo 0 68: p1.rev.2 oo 0 69: p1.rev.3 oo 0 70: p1.val[0] oo 0 71: p1.val oo 0 72: p1.rev.4 oo 0 73: p1.rev.5 oo 0 74: p1.val[1] oo 0 75: p1.val oo 0 76: p1.start oo 0 77: p1.dummy oo 0 78: p1.end oo 0 79: p1.totalPaid.5 oo 0 80: p1.totalPaid.6 oo 0 81: p1.price.2 oo 0 82: p1.price.3 oo 0 83: p1.val oo 0 84: p0.change.2 oo 0 85: p1.start oo 0 86: p1.dummy oo 0 87: p1.end oo 0 88: p0.change.3 oo 0 89: p0.change.4 oo 0 90: p1.val[0] oo 0 91: p1.val oo 0 92: p0.change.5 oo 0 93: p0.change.6 oo 0 94: p1.val[0] oo 0 95: p1.val oo 0 96: p0.change.7 oo 0 97: p0.change.8 oo 0 98: p1.val[0] oo 0 99: p1.val oo 0 100: p1.start oo 0 101: p1.dummy oo 0 102: p1.end oo 0 103: p1.start oo 0 104: p1.dummy oo 0 105: p1.end oo 0 106: p1.ac.1 oo 0 107: p1.ac.2 oo 0 108: p1.val[99] oo 0 109: p1.val oo 0 110: p1.nac.1 oo 0 111: p1.nac.2 oo 0 112: p1.val[99] oo 0 113: p1.val oo 0 114: p2.start oo 0 115: p2.dummy oo 0 116: p2.end oo 0 117: p2.nmd50.0 oo 0 118: p2.nmd10.0 oo 0 119: p2.ca50.0 oo 0 120: p2.ca10.0 oo 0 121: p2.start oo 0 122: p2.dummy oo 0 123: p2.end oo 0 124: p2.start oo 0 125: p2.dummy oo 0 126: p2.end oo 0

Page 197: Albano Portela Machado - UFPE

___________________________________________________________________

178

127: p2.val[0] oo 0 128: p2.nmd10.1 oo 0 129: p0.change.9 oo 0 130: p0.change.10 oo 0 131: p2.val[50] oo 0 132: p2.val oo 0 133: p2.nmd50.1 oo 0 134: p2.val[99] oo 0 135: p2.ca50.1 oo 0 136: p2.start oo 0 137: p2.dummy oo 0 138: p2.end oo 0 139: p2.nmd50.2 oo 0 140: p2.nmd50.3 oo 0 141: p2.val[0] oo 0 142: p2.val oo 0 143: p2.nmd50.4 oo 0 144: p2.nmd50.5 oo 0 145: p2.ca50.2 oo 0 146: p2.ca50.3 oo 0 147: p2.val oo 0 148: p2.start oo 0 149: p2.dummy oo 0 150: p2.end oo 0 151: p0.change.11 oo 0 152: p0.change.12 oo 0 153: p2.val[50] oo 0 154: p2.val oo 0 155: p0.change.13 oo 0 156: p2.start oo 0 157: p2.dummy oo 0 158: p2.end oo 0 159: p0.change.14 oo 0 160: p0.change.15 oo 0 161: p2.val[0] oo 0 162: p2.val oo 0 163: p2.start oo 0 164: p2.dummy oo 0 165: p2.end oo 0 166: p2.val[TRUE] oo 0 167: p2.start oo 0 168: p2.dummy oo 0 169: p2.end oo 0 170: p0.change.16 oo 0 171: p0.change.17 oo 0 172: p2.val[10] oo 0 173: p2.val oo 0 174: p2.nmd10.2 oo 0 175: p2.val[99] oo 0 176: p2.ca10.1 oo 0 177: p2.start oo 0 178: p2.dummy oo 0 179: p2.end oo 0 180: p2.nmd10.3 oo 0 181: p2.nmd10.4 oo 0 182: p2.ca10.2 oo 0 183: p2.ca10.3 oo 0 184: p2.val oo 0 185: p2.start oo 0 186: p2.dummy oo 0 187: p2.end oo 0 188: p2.val[TRUE] oo 0 @ trans nr. name priority time 0: t1.start 0 0 1: t1.end 0 0 2: t1.start 0 0 3: t1.end 0 0 4: t1.:= 0 0 5: t1.sink 0 0 6: t1.:= 0 0

Page 198: Albano Portela Machado - UFPE

___________________________________________________________________

179

7: t0.sink 0 0 8: t1.:= 0 0 9: t1.sink 0 0 10: t1.:= 0 0 11: t1.sink 0 0 12: t1.start 0 0 13: t1.end 0 0 14: t1.clone 0 0 15: t1.= 0 0 16: t1.start 0 0 17: t1.end 0 0 18: t1.start 0 0 19: t1.end 0 0 20: t1.clone 0 0 21: t1.= 0 0 22: t1.start 0 0 23: t1.end 0 0 24: t1.:= 0 0 25: t1.sink 0 0 26: t1.:= 0 0 27: t1.sink 0 0 28: t1.clone 0 0 29: t1.clone 0 0 30: t1.+ 0 0 31: t1.:= 0 0 32: t1.sink 0 0 33: t1.clone 0 0 34: t1.= 0 0 35: t1.:= 0 0 36: t1.sink 0 0 37: t1.clone 0 0 38: t1.= 0 0 39: t1.:= 0 0 40: t1.sink 0 0 41: t1.start 0 0 42: t1.end 0 0 43: t1.clone 0 0 44: t1.= 0 0 45: t1.clone 0 0 46: t1.= 0 0 47: t1.start 0 0 48: t1.end 0 0 49: t1.clone 0 0 50: t1.clone 0 0 51: t1.- 0 0 52: t1.:= 0 0 53: t0.sink 0 0 54: t1.start 0 0 55: t1.end 0 0 56: t0.clone 0 0 57: t1.< 0 0 58: t0.clone 0 0 59: t1.= 0 0 60: t0.clone 0 0 61: t1.> 0 0 62: t1.start 0 0 63: t1.end 0 0 64: t1.start 0 0 65: t1.end 0 0 66: t1.clone 0 0 67: t1.= 0 0 68: t1.clone 0 0 69: t1.= 0 0 70: t2.start 0 0 71: t2.end 0 0 72: t2.start 0 0 73: t2.end 0 0 74: t2.start 0 0 75: t2.end 0 0 76: t2.:= 0 0 77: t2.sink 0 0

Page 199: Albano Portela Machado - UFPE

___________________________________________________________________

180

78: t0.clone 0 0 79: t2./ 0 0 80: t2.:= 0 0 81: t2.sink 0 0 82: t2.:= 0 0 83: t2.sink 0 0 84: t2.start 0 0 85: t2.end 0 0 86: t2.clone 0 0 87: t2.<= 0 0 88: t2.clone 0 0 89: t2.clone 0 0 90: t2.<= 0 0 91: t2.start 0 0 92: t2.end 0 0 93: t0.clone 0 0 94: t2.- 0 0 95: t2.:= 0 0 96: t0.sink 0 0 97: t2.start 0 0 98: t2.end 0 0 99: t0.clone 0 0 100: t2.= 0 0 101: t2.start 0 0 102: t2.end 0 0 103: t2.start 0 0 104: t2.end 0 0 105: t0.clone 0 0 106: t2./ 0 0 107: t2.:= 0 0 108: t2.sink 0 0 109: t2.:= 0 0 110: t2.sink 0 0 111: t2.start 0 0 112: t2.end 0 0 113: t2.clone 0 0 114: t2.clone 0 0 115: t2.<= 0 0 116: t2.start 0 0 117: t2.end 0 0 @

Page 200: Albano Portela Machado - UFPE

___________________________________________________________________

181

D.3 Esquemático do Modelo Intermediário3

3 O modelo é reversível se acrescentamos uma transição de fechamento entre o último e o primeiro lugar.

Page 201: Albano Portela Machado - UFPE

Referências

[1] Appel, Andrew W. Modern Compiler Implementation in Java. Cambridge University Press. 1999.

[2] Barros, Edna et al. “Hardware/Software Co-Design: projetando hardware e

software concorrentemente”. São Paulo, IME -USP, 2000. [3] Barros, E., and Sampaio, A. “Towards provable correct hardware/software

partitioning using OCCAM”. In Proc. of 3rd International Workshop on Hardware/Software Co-Design, pages 210-217, Los Alamitos, 1994. IEEE.

[4] Barros, E., Sampaio, A, Lima, M., Silva, L., Jacobi, R. and Calazans, N. “The

PISH methodology for hardware/software co-design”. In Workshop of ProTem-CC, pages 65-98, CNPQ, 1998.

[5] Brewer, F. D., and Gajski, D. D. “Knowledge Based Control in Micro -

Architecture Design”. Proceedings of 24th DAC, 1987. [6] Camposano, R., and Wilberg, J. “Embedded System Design”, Design Automation

for Embedded Systems vol. 1, no. 1/2, pp. 5-50, 1996. [7] Carreras, C., López, J. C., López, M. L., Delgado-KLoos, C., Martínez, M. and

Sanchez, L. “A Co -Design Methodology Base on Formal Specification and High Level Estimation” . Proceedings of EDAC, pp 2-7. 1996.

[8] Cavalcante, S. V. A Hardware-Software Co-Design System for Embedded Real-

Time Applications. PhD thesis, June, 1997. [9] Commoner, F. Deadlock in Petri Nets. Applied Data Research Inc. Massachusetts,

1972. [10] Cormen, T. H., Leiserson, C. E., and Rivest, R. L. Introduction to Algorithms.

MIT Press, Cambridge, MA, 1989. [11] Davis, W. Tools and Techniques for Structures System Analysis and Design.

Addison-Wesley, 1983. [12] De Lima, Manoel A Force-Directed Placement Algorithm with simultaneous

Global Routing for Sea-of-Gates,1993. [13] De Marco, T. Structured Analysis and System Specification. Prentice-Hall, 1979.

Page 202: Albano Portela Machado - UFPE

___________________________________________________________________

183

[14] Desrochers, A. A., Al-Jaar, R. Y. Applications of Petri Nets in Manufacturing Systems. IEEE Press. 1995.

[15] Dicesare, F., Harhalakis, G., Proth, J. M., Silva, M. and Vernadat, F. B. Practice

of Petri Nets in Manufacturing. Chapman and Hall, 1993. [16] Drusinsky, D. and Harel, D. “Using statecharts for hardware description and

synthesis”. IEEE Transactions on Computer Aided Design, 8(7), Jul. 1989. [17] Eles, P., Kuchcinki, K., Peng, Z. and Minea, M. “Synthesis of VHDL Concurrent

Process”. Proceedings of the EURO-DAC’94 , pp. 540-545. IEEE Computer Society. September, 1994.

[18] Ernst, R. and Henkel, J. “A Path -Based Technique for Estimating Hardware

Runtime in HW/SW Co-synthesis”. IEEE/ACM Proc. of 8th Int’l Symp. on System Level Synthesis, October 1995.

[19] Ernst, R. and Henkel, J. “Hardware -Software Co-Design of Embedded

Controllers Based on Hardware Extraction Handouts”. International Workshop on Hardware-Software Co-Design. October, 1992.

[20] Gajski, D. D., Dutt, N. D., Wu, C. H., e Lin, Y. L. High Level Synthesis:

Introduction to Chip and System Design. Kluwer Academic Publishers, Boston, Massachusetts, 1991.

[21] Gajski, D. D., Varid, F., Narayan, S., and Gong, J. Specification and Design of

Embedded Systems. PTR Prentice Hall. 1994. [22] Gajski, D. D., and Ramachandran, L. “Introduction to High -Level Synthesis”.

IEEE Design and Test for Computers, 11 (4): 44-54, 1994. [23] Gajski, D. D., Zhu, J. and Dömmer, R. Essential Issues in Co-Design. Kluwer

Academic Publishers, pp. 1-45. 1987. [24] Gebotys, C. H., and Elmasry, M. I. “Simultaneous Scheduling and Allocation for

Cost Constrained Optimal Architectural for Cost Constrained Optimal Architectural Synthesis”, Proc. 28th DAC, pp. 2-7, June 1991.

[25] Gupta, R., Coelho, C. N., and De Micheli, G. Synthesis and simulation of digital

systems containing interacting hardware and software components, 1992. [26] Gupta, R. and De Micheli, G. “Hardware/s oftware co-synthesis for digital

systems”. IEEE Design & Test of Computers, pages 29-41, 1993. [27] Gupta, R. and De Micheli, G. “System -Level Synthesis Using Reprogrammable

Components”. European Design Automation Conference, March, 1992.

Page 203: Albano Portela Machado - UFPE

___________________________________________________________________

184

[28] Gupta, R. and De Micheli, G. “ Constrained Software Generation for Hardware-

Software Systems”. Proceedings of the Fourth Codes/CASHE, pp 56-63. IEEE Computer Society. September, 1995.

[29] Hack, M. H. T. Analysis of Production Schemata by Petri Nets. Master’s thesis,

MIT, 1972. [30] Hashimoto, A. and Stevens. “Wire routing by optimizing channel assigments with

large aperture”. In Proceedings of the Design Automation Conference, 1971. [31] Hoare, C. A. R. Communicating Sequential Process. Prentice Hall International,

1985. [32] Jones, G. Programming in OCCAM. C.A.R. Hoare Series Editor, Prentice-Hall

International Series in Computer Science, 1987. [33] Kenneth, Jane P. Laudon and Kenneth ,C. Laudon. Management Information

Systems, 8/e. Pearson Education, Inc, 2003. [34] Kurdahi, F. J., Gajski, D. D., Ramachandran, C. and Chaiyakul. “Linking register -

transfer in physical levels of design”. In IEICE Transactions on Information and Systems, Vol E76-D, No 9, September 1993.

[35] Kurdahi, F. J and Parker, A.C. “Real: A program for register allocation”. In

Proceedings of the Design Automation Conference, 1987. [36] Kung, S. Y., Whitehouse, H. J., and Kailath, T. VLSI and Modern Digital Signal

Processing. Prentice Hall, 1985, pp. 258-264. [37] Machado, A. P., Maciel, P.and Guilhermino, A. “A Petri net Based Method for

Storage Units Estimation”. In Proc. of International Conference on Systems, Man and Cybernetics, pages 1025-1031, vol. 2. Washington, D.C., USA, Oct. 5-8 2003. SMC Society, IEEE.

[38] Maciel, P. Petri Net Based Estimators for Hardware/Software Co-Design. PhD

thesis, Universidade Federal de Pernanbuco, Recife, PE, Brasil, Dez. 1999. [39] Maciel, P., Barros, E., Lima, M., Silva, D. and Rosenstiel, W. “ Resource Sharing

Estimation by Petri Nets in PISH Co-Design System”. In Proc. of High Performance Computing 2000, Washington D.C., EUA, April, 2000.

[40] Maciel, P., Barros, E., and Rosenstiel, W. “ A Petri Net Based Approach for

estimating Area in Hardware/Software Co-Design” . In Proc. of High Performance Computing ’99 , San Diego, California, USA, April 10-14, 1999.

Page 204: Albano Portela Machado - UFPE

___________________________________________________________________

185

[41] Maciel, P., Barros, E., and Rosenstiel, W. “ A Petri Model for Hardware/Software Co-Design”. In Design Automation for Embedded Systems, 4: 243-310, 1999.

[42] Maciel, P., Barros, E., and Rosenstiel, W. “ Computing Comunication Cost by

Petri Nets for Hardware/Software Co-Design”. In Proc. of 8th IEEE International Workshop on Rapid System Prototyping, Chapel Hill, NC, EUA, Jun. 24-26, 1997.

[43] Maciel, P., Barros, E., Silva, M., and Filho, F. Cruz. “Resource Sharing

Estimation by Petri Nets in PISH Hardware/Software Co-Design System”. In Proc. of International Conference on Systems, Man and Cybernetics, pages 3165-3170, Nashville, TN, EUA, October 8-11, 2000. SMC Society, IEEE.

[44] Maciel, P., Filho, F. Cruz, and Barros, E. “Estimates Based on Petri Nets for

Hardware/Software Co-Design”. In Proc. of 4th Portuguese Conference on Automatic Control, pages 546-551, Guimarães, Portugal, October 4-6, 2000. APCA, IFAC.

[45] Madsen, J., Grode, J., Knudsen, P. V., Peterson, M. E., and Haxthausen, A.

“LYCOS: the Lyngby Co -Synthesis system”. Design Automation for Embebed Systems, vol. 2, no. 2, pp. 195-236, 1997.

[46] Madsen, J., Grode, J., Knudsen, P. V. “Hardware/Software Partitioning Using the

LYCOS System”. In J. Staunstrup, and W. Wolf (eds.), Hardware/Software Co-Design: Principles and Practice. Amsterdam: Kluwer Academic Publishers, pp. 283-306, 1997.

[47] Monteiro, F. Cruz. Partitioning in Hardware/Software using Petri Nets. Msc

thesis, Universidade Federal de Pernanbuco, Recife, PE, Brasil, Dez. 2000. [48] Monteiro, F. Cruz, Maciel, P., and Barros, E. Using Petri Nets for Data

Dependency Analysis “. In Proc. of International Conference on Systems, Man and Cybernetics, pages 2998-3003, Nashville, TN, EUA, October 8-11, 2000. SMC Society, IEEE.

[49] Muller, Wolfgang; Rosenstiel, Wolfgang and Ruf, Jurgen. Systemc:

Methodologies and Applications. Kluwer Academic Publishers, July 2003 [50] Murata, T. “Petri Nets: Properties, Analysis and Applications”. Proceedings of the

IEEE vol. 77, no. 4, pp. 541-580, 1989. [51] Murata, T. Modelling and Analysis of Concurrent Systems, Handbook of Software

Engineering. Van Norstrand Reinhold Company Inc., 1984. [52] Murata, T. “State Equation, Controllability, and Maximal of Petri Nets ”. IEEE

Trans. on Automatic Control, 1977.

Page 205: Albano Portela Machado - UFPE

___________________________________________________________________

186

[53] Ohm, Seong Y., Kurdahi, Fadi J., and Dutt, Nikil. “Compre hensive Lower Bound Estimation from Behavioral Descriptions” . IEEE/ACM international conference on Computer-Aided Design. 1994.

[54] Orchard, H. J. “Adjusting the Parameters in Elliptic -Function Filters”. IEEE

Trans. CAS, vol. 37, no. 5, May 1990. [55] Österling, A., Benner, T., Ernst, R., Herrmann, D., Scholz. T., and Ye, W. “The

COSYMA system”. In J. Staunstrup and W. Wolf, editors, Hardware/Software Co-Design: Principles and Practice, pages 263-281. Kluwer Academic Publishers, Amsterdam, 1977.

[56] Paulin, P. G. e Knight, J. P. “Force -directed scheduling for the behavioral

synthesis of ASICS”. IEEE Transactions on Computer-Aided Design, June 1989. [57] Paulin, P. G., and Knight, J. P. Scheduling and Binding Algoritms for High-Level

Synthesis. Proc. 26th DAC, pp. 1-6, June 1989. [58] Peterson, J. L. Petri Nets an Introduction. Pretence-Hall, Inc, 1981. [59] Ramchandani. Analysis of Asynchronous Concurrent Systems by Timed Petri

Nets. Technical Report n120 , Laboratory for Computer Science, MIT, Cambridge, MA. 1974

[60] Reisig, W. Petri Nets: An Introduction. Springer-Verlag, 1982. [61] Rim, M., Jain, R., and Leone, R. D. “ Optimal Allocation and Binding in High-

Level Synthesis”. Proc. 29th DAC, pp. 120-123, June 1992. [62] Rose, F., Carpenter, T., Kumar, S., Shackleton, J. and Steeves, T. “A model for

the Co- Analysis of Hardware and Software Architecture”. Proceedings of the Fourth Codes/CASHE, pp 94-103. IEEE Computer Society. March, 1996.

[63] Sait, S. e Habib, Y. VLSI Physical Design Automation: Theory and Practice,

1997. [64] Sharma, A., and Jain, R. “InSyn: Integrated Scheduling for DSP Applications”.

Proc. 30th DAC, pp. 349-354, June 1993. [65] Starke, P. H. “ Remarks on Timed Petri Nets”. Proc. 9th European Workshop on

Application and Theory of Petri Nets, 1988. [66] Starke, P. H., and Roch, S. INA – Integrated Net Analyzer – Version 2.2. Humbolt

Universität zu Berlin – Institut für Informatik. 1999. [67] Stravers, P. Embebed System Design, 1994.

Page 206: Albano Portela Machado - UFPE

___________________________________________________________________

187

[68] Tseng C. e Siewiorek D. P. “Automated synthesis of datapaths in digital systems”.

IEEE Transactions on Computer-Aided Design, pages 379-395, July 1986. [69] Weste, N. e Eshraghian, K. Principles of CMOS VLSI Design,1988. [70] Zuberek, W. M. “D -Timed Petri Nets and Modeling of Timeouts and Protocols”.

Trans. of the Society for Computer Simulation, vol. 4, no. 4, pp. 331-357, 1987. [71] Zuberek, W. M. “M -Timed Petri Nets, priorities, preemptions, and performance

evaluation of systems”. In Advances in Petri Nets 1985 (Lecture Notes in Computer Science 222), G. Rosenberg (ed.), pp. 478-498, Spring Verlag 1986.

[72] Zuberek, W. M. “Timed Petri Nets Definitions, Properties and Applications”. In

Microelectronic and Reliability, vol. 31, no. 4, pp. pages 627-644, 1991.

Page 207: Albano Portela Machado - UFPE

Standard IC(off-the-shelf)

SSI/MSI

PLDs

LSI/VLSI

FPGAs

Gate-Arrays

ASICs(User-specified)

StandardLibrary Cells

Semi-custom

User-Programable

Full-custom

Bit-SliceData Paths

All Masks

Analogic/DigitalMixed tecnologies