A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

MO801: Tópicos em Arquitetura e Hardware 1 Tópicos em System-Level Design Sandro Rigo 2 o Semestre.

Apresentações semelhantes


Apresentação em tema: "MO801: Tópicos em Arquitetura e Hardware 1 Tópicos em System-Level Design Sandro Rigo 2 o Semestre."— Transcrição da apresentação:

1 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre de 2006 Projeto de Sistemas Usando SystemC

2 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 2 Concorrência Processos e Eventos

3 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 3 Concorrência É comum um sistema de software executar em uma única thread Mas em HW ou um sistema HW+SW teremos várias tarefas sendo executadas simultaneamente Simular um sistema como esse exige controle de concorrência !

4 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 4 Processos SystemC usa processos para modelar concorrência Simulação baseada em eventos não propicia uma execução realmente concorrente Cada processo executa um pedaço de código, ou período de tempo, e libera o controle para a execução de outros processos

5 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 5 Processos O kernel é responsável por disparar os processos SystemC fornece métodos (SC_METHOD) e threads (SC_THREAD)

6 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 6 Eventos Algo que acontece em um ponto específico de tempo Não tem valor e duração SystemC usa a classe sc_event para modelar eventos Essa classe permite disparar eventos através do método de notificação

7 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 7 Eventos REGRA: –Para observar um evento, o observador precisa estar monitorando esse evento!!! SystemC permite a monitoração de eventos através de sensibilidade estática e dinâmica em seus processos

8 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 8 Kernel de Simulação SystemC * Fonte: SystemC from the Ground Up

9 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 9 Processos e Eventos Execução aleatória Em algum momento termina ou é suspenso. Aguardan do um evento Delayed events * Fonte: SystemC from the Ground Up

10 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 10 Processos e Eventos Um processo pode gerar eventos que disparem outros processos sem avanço no tempo (delta cycles) O tempo avança quando não houver mais processos prontos para execução Avança até o próximo delayed event Quando não houver processo pronto nem delayed, fim da simulação

11 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 11 SC_THREAD São invocados apenas uma vez, mas podem ser suspensas e permitem que o tempo passe antes de continuarem Uma vez invocadas assumem o controle, até que decidam passá-lo de volta ao simulador Sair (return): termina definitivamente a thread

12 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 12 SC_THREAD Suspender (wait): invocado explicitamente ou indiretamente –Por exemplo, acesso de escrita em uma FIFO bloqueante cheia Tipicamente, threads são compostas de um laço infinito contendo pelo menos um wait Troca de contexto é cara !

13 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 13 O método WAIT() wait(time); wait(event); wait (event 1 | event 2... ) // qualquer um wait (event 1 & event 2... ) // todos wait(timeout, event); // evento com timeout wait ( timeout, event 1 | event 2... ) //qualquer com timeout wait ( timeout, event 1 & event 2...) //todos com timeout wait(); // sensibilidade estática Não é possível saber o evento que satisfez a condição Usado com a função timed_out()

14 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 14 Exemplo * Fonte: SystemC from the Ground Up

15 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 15 Exemplo * Fonte: SystemC from the Ground Up

16 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 16 Exemplo * Fonte: SystemC from the Ground Up

17 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 17 Exemplo * Fonte: SystemC from the Ground Up

18 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 18 Disparando Eventos:.notify() // Estilo O-O (preferido) event_name.notify(); // notificação imediata event_name.notify(SC_ZERO_TIME) ; //notificação atrasada event_name.notify(time); //notificação temporizada // Functional–call style notify(event_name); // notificação imediata notify(event_name, SC_ZERO_TIME) ; //notificação atrasada notify(event_name, time); //notificação temporizada

19 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 19 Disparando Eventos:.notify() sc_event action; sc_time now(sc_time_stamp()); //observe current time //immediately cause action to fire action.notify(); //schedule new action for 20 ms from now action.notify(20, SC_MS); //reschedule action for 1.5 ns from now action.notify(1.5,SC_NS); //useless, redundant action.notify(1.5, SC_NS); //useless preempted by event at 1.5 ns action.notify(3.0,SC_NS); //reschedule action for next delta cycle action.notify(SC_ZERO_TIME); //useless, preempted by action event at SC_ZERO_TIME action.notify(1, SC_SEC); //cancel action entirely action.cancel();

20 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 20 SC_METHOD O tempo não passa entre sua invocação e retorno São invocados repetidamente pelo kernel Não podem ser suspensos. Invocar wait é erro! São mais eficientes que threads

21 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 21 SC_METHOD São similares aos processos de VHDL São invocados através lista sensibilidade Variáveis locais não são persistentes

22 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 22 Sensibilidade Dinâmica: next_trigger() –Mesmas opções do wait() –Afeta a próxima invocação do método –Afeta temporariamente a lista de sensibilidade do método –Inicialização é crucial Estática: sensitive –Definido no construtor, logo após registro do processo –Não se altera, é estática O que acontece com um método sem lista de sensibilidade e sem sensibilidade dinâmica e seu código? Só executa uma vez!!! Durante a inicialização.

23 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 23 Referências SystemC from the Ground-up - David C. Black e Jack Donovan, Kluwer Academic Press, 2004 Transaction Level Modeling in SystemC – Adam Rose, Stuart Swan, John Pierce, Jean-Michel Fernandez, OSCI TLM Working Group SystemC Tutorial. Forte Design Systems. http://www.forteds.com


Carregar ppt "MO801: Tópicos em Arquitetura e Hardware 1 Tópicos em System-Level Design Sandro Rigo 2 o Semestre."

Apresentações semelhantes


Anúncios Google