mo801: tópicos em arquitetura e hardware sandro 1 tópicos em system-level design sandro rigo...

22
MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 1 Tópicos em System-Level Tópicos em System-Level Design Design Sandro Rigo [email protected] 2 o Semestre de 2006 Transaction Level Transaction Level Modeling Modeling

Upload: internet

Post on 16-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

1

Tópicos em System-Level Tópicos em System-Level DesignDesign

Sandro [email protected]

2o Semestre de 2006

Transaction LevelTransaction LevelModelingModeling

Page 2: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

2

Integração de Componentes

• Diversos padrões disponíveis– Foco em baixo nível

• AMBA, CoreConnect, Avalon, OCP/IP– Úteis para descrição do modelo final

– Baixo desempenho em simulação

• Transaction Level Model (TLM)– Chamadas de funções

– Interface dos módulos muito bem definida

– Distribuída junto com o SystemC

Page 3: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

3

Terminologia para Abstração

Page 4: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

4

Exemplo

Page 5: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

5

Comentários

• É necessário expor tantos detalhes nessa fase?

• Como simplificar o processo?

• Que tal TLM?

outport.write(A1, D1);

outport.write(A2, D2);

outport.write(A3, D3);

Page 6: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

6

Benefícios em Tempo de Projeto

Tempo necessário para escrever o TLM

Verificação do SW começa mais cedo

Verificação do Sistema começa mais cedo

Tempo Total é reduzido !

Page 7: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

7

TLM – Motivação

• Adiantar a disponibilidade de uma plataforma para desenvolvimento de software;

• Exploração do projeto como um todo

• Fornecer um modelo completo do sistema para verificação

• Será utlizado o padrão OSCI TLM 1.0

Page 8: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

8

Conceitos usados pelo TLM

• Comunicação é modelada separado da funcionalidade

• Foco nas interfaces– Implementação apenas após a definição rígida das interfaces

• Bloqueantes x Não bloqueantes– Métodos bloqueantes podem chamar a função wait()

– SC_THREAD x SC_METHOD

• Unidirecional x Bidirecional– Toda transação pode ser classificada de uma dessas formas ou quebrada

para se enquadrar numa delas

• Transferência de dados é feita através de chamadas de funções

Page 9: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

9

Nomenclaturas

• Para evitar conflito com outras nomenclaturas já existentes, novos nomes foram criados– Initiator (≠ Master)

– Target (≠ Slave)

– Put (≠ write)

– Get (≠ read)

– Peek

Page 10: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

10

TLM Core Interfaces

// uni-directional blocking interfaces

template < typename T >

class tlm_blocking_get_if : public virtual sc_interface

{

public:

virtual T get( tlm_tag<T> *t = 0 ) = 0;

virtual void get( T &t ) { t = get(); }

};

Page 11: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

11

TLM Core Interfaces

// uni-directional blocking interfaces

template < typename T >

class tlm_blocking_put_if : public virtual sc_interface

{

public:

virtual void put( const T &t ) = 0;

};

Page 12: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

12

TLM Core Interfaces

// uni-directional non blocking interfaces

template < typename T >

class tlm_nonblocking_get_if : public virtual sc_interface

{

public:

virtual bool nb_get( T &t ) = 0;

virtual bool nb_can_get( tlm_tag<T> *t = 0 ) const = 0;

virtual const sc_event &ok_to_get( tlm_tag<T> *t = 0 ) const = 0;

};

Page 13: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

13

TLM Core Interfaces

// uni-directional non blocking interfaces

template < typename T >

class tlm_nonblocking_put_if : public virtual sc_interface

{

public:

virtual bool nb_put( const T &t ) = 0;

virtual bool nb_can_put( tlm_tag<T> *t = 0 ) const = 0;

virtual const sc_event &ok_to_put( tlm_tag<T> *t = 0 ) const = 0;

};

Page 14: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

14

TLM Core Interfaces

// bidirectional blocking interfaces

template < typename REQ , typename RSP >

class tlm_transport_if : public virtual sc_interface

{

public:

virtual RSP transport( const REQ & ) = 0;

};

OBS: Pode ser visto como uma união das interfaces bloqueantes de get e put.

Page 15: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

15

Canais TLM

• O pacote padrão inclui três canais:

– tlm_fifo<T>: implementa todas as interfaces unidirecionais

– tlm_req_resp_channel<REQ,RSP>: consiste de duas fifos

• intiator-target (master_if):

– fornece put para fila de REQ e get para fila de RSP

• target-initiator(slave_if):

– fornece put para fila de RSP e get para fila de REQ

Page 16: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

16

Canais TLM

• O pacote padrão inclui três canais:

– tlm_transport_channel<REQ,RSP>: cada REQ ligado a uma RSP

• exporta as mesmas interfaces que o tlm_req_rsp_channel

• implementa a interface bidirecional de transporte

Page 17: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

17

Canais TLM

RSP transport( const REQ &req ) {

mutex.lock();

master_port->put( req );

rsp = master_port->get();

mutex.unlock();

return rsp;

}

Page 18: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

18

Exemplo: O Protocolo TLM de ArchC

• Possibilita a conexão dos simuladores gerados por ArchC a módulos externos

• Totalmente baseado no padrão de SystemC v1.0

• Implementa a interface de transporte– bidirecional

– bloqueante

Page 19: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

19

Exemplo: O Protocolo TLM de ArchC

• ac_tlm_protocol.H

• ac_tlm_port.H

• ac_tlm_port.cpp

Page 20: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

20

Modelagem em três camadas

• Usuário– API de conveniência, específica do protocolo

• Protocolo– Código específico de protocolo

– Faz a ponte entre as camadas de usuário e a de transporte

• Transporte– Usa APIs e modelos genéricos de transporte de dados

– Facilita a interoperabilidade dos modelos

– Trabalho do TLM WG é definir código da camada de transporte

Page 21: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

21

API ArchC – Modelo 3 camadas

Page 22: MO801: Tópicos em Arquitetura e Hardware sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre

MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro

22

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