• Nenhum resultado encontrado

Paralelização de Simuladores de Hardware Descritos em SystemC

N/A
N/A
Protected

Academic year: 2021

Share "Paralelização de Simuladores de Hardware Descritos em SystemC"

Copied!
36
0
0

Texto

(1)

Paraleliza¸c˜

ao de Simuladores de Hardware

Descritos em SystemC

Prof. Msc. Liana Dessandre Duenha

18 de maio de 2011

(2)

Motiva¸c˜ao

Introdu¸c˜ao `a SLDL SystemC O Escalonador SystemC

Simula¸c˜ao Paralela baseada em Eventos Discretos

Suporte `a paraleliza¸c˜ao de uma simula¸c˜ao SystemC Como avaliar desempenho

(3)

Motiva¸c˜

ao

O que ´e simula¸c˜ao de um sistema? Por que ´e importante?

Por que desempenho ´e importante?

Os simuladores s˜ao implementados com Linguagens de Descri¸c˜ao em N´ıvel de Sistema (SLDLs);

Estas SLDLs s˜ao tipicamente single threaded e n˜ao aproveitam toda a infra-estrutura paralela inerente `as arquiteturas de multiprocessamento;

M´odulos s˜ao pequenos e a troca de contexto pode afetar desempenho

Exemplos: System Verilog, Spec, SystemC;

O que pode ser feito para acelerar a simula¸c˜

ao?

(4)

O que ´e simula¸c˜ao de um sistema? Por que ´e importante?

Por que desempenho ´e importante?

Os simuladores s˜ao implementados com Linguagens de

Descri¸c˜ao em N´ıvel de Sistema (SLDLs);

Estas SLDLs s˜ao tipicamente single threaded e n˜ao aproveitam toda a infra-estrutura paralela inerente `as arquiteturas de multiprocessamento;

M´odulos s˜ao pequenos e a troca de contexto pode afetar desempenho

Exemplos: System Verilog, Spec, SystemC;

O que pode ser feito para acelerar a simula¸c˜

ao?

(5)

Motiva¸c˜

ao

O que ´e simula¸c˜ao de um sistema? Por que ´e importante?

Por que desempenho ´e importante?

Os simuladores s˜ao implementados com Linguagens de

Descri¸c˜ao em N´ıvel de Sistema (SLDLs);

Estas SLDLs s˜ao tipicamente single threaded e n˜ao aproveitam toda a infra-estrutura paralela inerente `as arquiteturas de multiprocessamento;

M´odulos s˜ao pequenos e a troca de contexto pode afetar desempenho

Exemplos: System Verilog, Spec, SystemC;

O que pode ser feito para acelerar a simula¸c˜

ao?

(6)

O que ´e simula¸c˜ao de um sistema? Por que ´e importante?

Por que desempenho ´e importante?

Os simuladores s˜ao implementados com Linguagens de

Descri¸c˜ao em N´ıvel de Sistema (SLDLs);

Estas SLDLs s˜ao tipicamente single threaded e n˜ao aproveitam toda a infra-estrutura paralela inerente `as arquiteturas de multiprocessamento;

M´odulos s˜ao pequenos e a troca de contexto pode afetar

desempenho

Exemplos: System Verilog, Spec, SystemC;

O que pode ser feito para acelerar a simula¸c˜

ao?

(7)

Motiva¸c˜

ao

O que ´e simula¸c˜ao de um sistema? Por que ´e importante?

Por que desempenho ´e importante?

Os simuladores s˜ao implementados com Linguagens de

Descri¸c˜ao em N´ıvel de Sistema (SLDLs);

Estas SLDLs s˜ao tipicamente single threaded e n˜ao aproveitam toda a infra-estrutura paralela inerente `as arquiteturas de multiprocessamento;

M´odulos s˜ao pequenos e a troca de contexto pode afetar

desempenho

Exemplos: System Verilog, Spec, SystemC;

O que pode ser feito para acelerar a simula¸c˜

ao?

(8)

Desenvolver t´

ecnicas para habilitar a simula¸c˜

ao

paralela de sistemas descritos em SystemC, a SLDL

mais utilizada por projetistas de SoCs e sistemas

embarcados, visando acelera¸c˜

ao da simula¸c˜

ao e

transparˆ

encia para o projetista.

(9)

Introdu¸c˜

ao `

a SLDL

SystemC

SystemC´e um conjunto de classes C++ que d´a suporte `a modelagem e simula¸c˜ao de sistemas de hardware em alto n´ıvel de abstra¸c˜ao;

Principal escolha de projetistas de SoCs em processadores embarcados

Suporte ao comportamento concorrente, estrutura hier´arquica e simula¸c˜ao;

Possui estruturas que facilitam a descri¸c˜ao de hardware, software e interfaces em C++, tais como: m´odulos, processos, portas, sinais, frequˆencia de rel´ogio, etc.

(10)

SystemC´e um conjunto de classes C++ que d´a suporte `a modelagem e simula¸c˜ao de sistemas de hardware em alto n´ıvel de abstra¸c˜ao;

Principal escolha de projetistas de SoCs em processadores embarcados

Suporte ao comportamento concorrente, estrutura hier´arquica e simula¸c˜ao;

Possui estruturas que facilitam a descri¸c˜ao de hardware, software e interfaces em C++, tais como: m´odulos, processos, portas, sinais, frequˆencia de rel´ogio, etc.

(11)

Introdu¸c˜

ao `

a SLDL

SystemC

SystemC´e um conjunto de classes C++ que d´a suporte `a modelagem e simula¸c˜ao de sistemas de hardware em alto n´ıvel de abstra¸c˜ao;

Principal escolha de projetistas de SoCs em processadores embarcados

Suporte ao comportamento concorrente, estrutura hier´arquica e simula¸c˜ao;

Possui estruturas que facilitam a descri¸c˜ao de hardware, software e interfaces em C++, tais como: m´odulos, processos, portas, sinais, frequˆencia de rel´ogio, etc.

(12)

SystemC´e um conjunto de classes C++ que d´a suporte `a modelagem e simula¸c˜ao de sistemas de hardware em alto n´ıvel de abstra¸c˜ao;

Principal escolha de projetistas de SoCs em processadores embarcados

Suporte ao comportamento concorrente, estrutura hier´arquica

e simula¸c˜ao;

Possui estruturas que facilitam a descri¸c˜ao de hardware, software e interfaces em C++, tais como: m´odulos, processos, portas, sinais, frequˆencia de rel´ogio, etc.

(13)

Introdu¸c˜

ao `

a SLDL

SystemC

SystemC´e um conjunto de classes C++ que d´a suporte `a modelagem e simula¸c˜ao de sistemas de hardware em alto n´ıvel de abstra¸c˜ao;

Principal escolha de projetistas de SoCs em processadores embarcados

Suporte ao comportamento concorrente, estrutura hier´arquica

e simula¸c˜ao;

Possui estruturas que facilitam a descri¸c˜ao de hardware,

software e interfaces em C++, tais como: m´odulos,

processos, portas, sinais, frequˆencia de rel´ogio, etc.

(14)

Os m´odulos representam componentes (funcionalidades, com

estado, comportamento e uma estrutura hier´arquica).

Um processo ´e a unidade b´asica de execu¸c˜ao; ´

E um m´etodo de classe de um m´odulo que ´e invocado pelo

escalonador no n´ucleo do SystemC.

As portas permitem que os m´odulos se comuniquem.

Exige a defini¸c˜ao de uma fun¸c˜ao principal sc main para declara¸c˜ao dos componentes do sistema e inicializa¸c˜ao da simula¸c˜ao.

(15)

Introdu¸c˜

ao `

a SLDL

SystemC

i n t s c m a i n ( i n t ac , c h a r av [ ] ) {

// INSTANCIACAO DOS COMPONENTES DO SISTEMA m i p s MEU MIPS ( ”MIPS” ) ; // p r o c e s s a d o r

mem MEM( ”MEM” ) ; // memoria // CONEXAO ENTRE COMPONENTES

MEU MIPS . DMport (MEM. t a r g e t e x p o r t ) ; // I N I C I O DA SIMULACAO

s c s t a r t ( ) ;

// AVALIACAO DOS RESULTADOS DA SIMULACAO MEU MIPS . P r i n t S t a t ( ) ;

r e t u r n MEU MIPS . e x i t s t a t u s ; }

(16)

A execu¸c˜ao de processos ´e dirigida por eventos;

O kernel SystemC mant´em informa¸c˜oes sobre o conjunto de

processos prontos e tamb´em a fila de eventos;

Fase de Avalia¸c˜ao

Enquanto h´a processos prontos, um deles ´e selecionado para iniciar a execu¸c˜ao e permanece executando at´e que termine ou at´e que inicie a espera por algum evento;

Se o processo corrente gerar eventos, todos os processos sens´ıveis a esses eventos tornam-se imediatamente prontos;

(17)

O Escalonador

SystemC

A execu¸c˜ao de processos ´e dirigida por eventos;

O kernel SystemC mant´em informa¸c˜oes sobre o conjunto de

processos prontos e tamb´em a fila de eventos;

Fase de Avalia¸c˜ao

Enquanto h´a processos prontos, um deles ´e selecionado para iniciar a execu¸c˜ao e permanece executando at´e que termine ou at´e que inicie a espera por algum evento;

Se o processo corrente gerar eventos, todos os processos sens´ıveis a esses eventos tornam-se imediatamente prontos;

(18)

A execu¸c˜ao de processos ´e dirigida por eventos;

O kernel SystemC mant´em informa¸c˜oes sobre o conjunto de

processos prontos e tamb´em a fila de eventos;

Fase de Avalia¸c˜ao

Enquanto h´a processos prontos, um deles ´e selecionado para iniciar a execu¸c˜ao e permanece executando at´e que termine ou at´e que inicie a espera por algum evento;

Se o processo corrente gerar eventos, todos os processos sens´ıveis a esses eventos tornam-se imediatamente prontos;

(19)

O Escalonador

SystemC

A execu¸c˜ao de processos ´e dirigida por eventos;

O kernel SystemC mant´em informa¸c˜oes sobre o conjunto de

processos prontos e tamb´em a fila de eventos;

Fase de Avalia¸c˜ao

Enquanto h´a processos prontos, um deles ´e selecionado para iniciar a execu¸c˜ao e permanece executando at´e que termine ou at´e que inicie a espera por algum evento;

Se o processo corrente gerar eventos, todos os processos sens´ıveis a esses eventos tornam-se imediatamente prontos;

(20)

Fase de Atualiza¸c˜ao

Atende `as requisi¸c˜oes de atualiza¸c˜ao dos respectivos processos; Todos os processos sens´ıveis a estas requisi¸c˜oes tornam-se prontos para execu¸c˜ao e a simula¸c˜ao inicia a fase de avalia¸c˜ao novamente;

Neste ponto, dizemos que a simula¸c˜ao avan¸cou em umciclo delta;

O tempo de simula¸c˜ao avan¸ca e todos os processos sens´ıveis a eventos de tempo tornam-se prontos e a fase de avalia¸c˜ao novamente ´e iniciada.

Se n˜ao h´a eventos de tempo pendentes, a simula¸c˜ao termina.

(21)

O Escalonador

SystemC

(22)

O que deve mudar para dar suporte `a execu¸c˜ao paralela?

O sistema ´e dividido em subsistemas para serem executados

paralelamente e cada processador executa um processo l´ogico

(PL);

Cada PL pode trabalhar com a evolu¸c˜ao de seu tempo de

processamento independentemente de outros PLs (TVL -tempo virtual local);

PL1

PROC1 MEM leitura

PL2

PROC2

PL3

escrita

(23)

Simula¸c˜

ao Paralela baseada em Eventos Discretos (PDES)

O conjunto de TVLs de todos os PLs ir´a determinar o valor

do tempo virutal global (TVG), que representa o avan¸co geral

da simula¸c˜ao;

Torna-se necess´ario o uso de sofisticados algoritmos de comunica¸c˜ao para sincroniza¸c˜ao de rel´ogios locais e intercˆambio de informa¸c˜oes.

Erros de Causalidade E1 E2 1 2 PL1 2 Tempo t t (a) t1 t3 t2 E3 E2 Tempo (b) E1 1 2 timestamp timestamp PL PL PL

(24)

Pode-se garantir que n˜ao haver´a erros de causalidade quando ´e obedecida a seguinte restri¸c˜ao:

Restri¸c˜ao de Causalidade: Uma simula¸c˜ao baseada em eventos discretos, consistindo de processos l´ogicos que interagem

exclusivamente pela troca de mensagens de tempo, obedece a restri¸c˜ao de causalidade local se e somente se cada processo l´ogico

executa eventos em ordem n˜ao decrescente de tempo.

(25)

Simula¸c˜

ao Paralela baseada em Eventos Discretos (PDES)

Categorias de Protocolos de Sincroniza¸c˜ao:

Protocolos Conservadores:

Permitem execu¸c˜ao de eventos seguros, apenas (i.´e. que obedecem a restri¸c˜ao de causalidade);

Um evento ´e considerado seguro para ser processado quando todos os eventos com timestamp menor que o seu e que possam afet´a-lo de alguma forma, j´a tenham sido tratados. Quando um evento ´e seguro?

Protocolos Otimistas:

Permitem a execu¸c˜ao de eventos n˜ao-seguros;

Erros de causalidade s˜ao tratados por meio de rollback; Tendem a melhorar o desempenho da simula¸c˜ao O que fazer com leituras e escritas?

(26)

Figura: Escalonador SystemC palalelo.

(27)

Suporte `

a paraleliza¸c˜

ao de uma simula¸c˜

ao SystemC

Ezudheen et al. (2009): modifica¸c˜ao do escalonador original SystemC para dar suporte `a execu¸c˜ao de m´ultiplos processos em paralelo.

A quantidade de processos paralelos ´e reduzida linearmente ao n´umero de cores dispon´ıveis no sistema

Particionamento manual obteve melhores resultados

Maia, Greiner e Pecheux (2006) e Mello et al (2010):

modifica¸c˜ao no kernel SystemC a fim de melhorar o

desempenho de simula¸c˜oes de modelos em n´ıvel de transa¸c˜ao (TLM), resultando na cria¸c˜ao do modelo TLM de tempo distribu´ıdo (TLM-DT).

Cada processo tem sua pr´opria defini¸c˜ao de “tempo” local Simula¸c˜ao n˜ao utiliza o conceito de “tempo global”

(28)

Ezudheen et al. (2009): modifica¸c˜ao do escalonador original SystemC para dar suporte `a execu¸c˜ao de m´ultiplos processos em paralelo.

A quantidade de processos paralelos ´e reduzida linearmente ao n´umero de cores dispon´ıveis no sistema

Particionamento manual obteve melhores resultados

Maia, Greiner e Pecheux (2006) e Mello et al (2010):

modifica¸c˜ao no kernel SystemC a fim de melhorar o

desempenho de simula¸c˜oes de modelos em n´ıvel de transa¸c˜ao

(TLM), resultando na cria¸c˜ao do modelo TLM de tempo

distribu´ıdo (TLM-DT).

Cada processo tem sua pr´opria defini¸c˜ao de “tempo” local Simula¸c˜ao n˜ao utiliza o conceito de “tempo global”

(29)

Suporte `

a paraleliza¸c˜

ao de uma simula¸c˜

ao SystemC

Faveri (2010): apresenta uma nova vers˜ao do kernel SystemC capaz de obter ganho de desempenho em multicores;

Nova classe para mapeamento das threads da simula¸c˜ao ( SC DTHREAD );

As threads mapeadas como objetos desta nova classe liberam o processador e continuam aptas para serem escalonadas posteriormente;

Toda a paraleliza¸c˜ao do modelo de sistema ´e feita explicitamente;

Speedup de 2 a 22 em computadores com 4 a 12 n´ucleos.

(30)

Primeira abordagem: identifica¸c˜ao de quais threads do simulador

podem ou n˜ao executar em paralelo.

mapear as threads como SC DTHREAD

Ao encontrar uma chamada de wait(), a thread libera o processador para que outra thread execute e continua apta a ser escalonada posteriormente

Para evitar erros de causalidade decorrentes da execu¸c˜ao concorrente, ´e necess´ario verificar se os sinais de entrada de uma thread s˜ao v´alidos antes de iniciar sua execu¸c˜ao.

(31)

Suporte `

a paraleliza¸c˜

ao de uma simula¸c˜

ao SystemC

Identifica¸c˜ao de quais threads do simulador podem ou n˜ao

executar em paralelo. 1 2 3 4 5 6 7 8 A B B C D C A E A F E F G G G H I

Figura 1

(32)

Podemos estabelecer grupos cujas threads participantes

podem ser executadas em paralelo (P ar1, P ar2 e P ar3) e

grupos que obrigatoriamente devem ter execu¸c˜ao sequencial

(Seq1 e Seq2); 5 1 2 4 5 6 7 8 Seq Par Seq Par Par 1 1 3 2 2 3 Figura 2

(33)

Suporte `

a paraleliza¸c˜

ao de uma simula¸c˜

ao SystemC

Minimizar o overhead das trocas de contexto. ´

E comum que em um simulador descrito em SystemC existam muitos processos pequenos

A troca de contexto entre eles causa perda de desempenho na simula¸c˜ao

Identifica¸c˜ao e jun¸c˜ao de processos pequenos na simula¸c˜ao, visando minimizar o tempo gasto com trocas de contexto.

1 2 3 Trocas de contexto Figura 3 2 P P P P P P2 Tempo Tempo 1 P12 P12 P12 P3 (b) (a) evento evento Processos em execucao~ ’

(34)

Uso de Padr˜oes de Programa¸c˜ao Paralela: Mem´oria

compartilhada→ Padr˜ao OpenMP.

. . . double sum ; double a [ 2 5 6 ] , b [ 2 5 6 ] ; i n t n =256; . . . // i n i c i a l i z a c a o de a e b sum = 0 ;

#pragma omp f o r r e d u c t i o n ( + : sum ) f o r ( i =1; i <=n ; i ++) {

sum = sum+a [ i ] ∗ b [ i ] ; }

p r i n t f ( ”sum = %f \ n ” , sum ) ; . . .

(35)

Suporte `

a paraleliza¸c˜

ao de uma simula¸c˜

ao SystemC

Avalia¸c˜ao de Desempenho: compara¸c˜ao do tempo de

simula¸c˜ao e taxa de utiliza¸c˜ao dos cores durante simula¸c˜oes

com e sem o uso de t´ecnicas como estas apresentadas.

“Coleta” de simuladores para testes

Pesquisa e escolha de um padr˜ao de programa¸c˜ao paralela compat´ıvel (OpenMP?)

(36)

P. Ezudheen,P. Chandran,J. Chandra,B.P. Simon,D. Ravi. Parallelizing SystemC Kernel for Fast Hardware Simulation on SMP Machines. In 23rd Workshop on Principles of Advanced and Distributed Simulation, 2009.

R.R.C. Faveri. Viabilizando a Simula¸c˜ao Multi-Threaded para

Modelos Escritos em SystemC. Disserta¸c˜ao de

Mestrado-Instituto de Computa¸c˜ao da Universidade Estadual

de Campinas (IC-Unicamp), 2010.

B. Chopardl,P. Combes,J. Zory. A Conservative Approach to SystemC Parallelization. In International Conference on Computational Science, 2006.

A. Mello,I. Maia,A. Greiner,F. Pecheux. Parallel Simulation of SystemC TLM 2.0 Compliant MPSoC on SMP Workstations. In Design, Automation and Test in Europe Conference and Exhibition, 2010.

Referências

Documentos relacionados

(NOME COMPLETO), nacionalidade, estado civil, profissão, portador(a) da carteira de identidade RG n.º (número de RG), inscrito(a) no CPF sob n.º (número de CPF),

Dando continuidade ao que estabelece o artigo já citado, o 2º artigo faz menção ao Manual de Boas Práticas de Atenção ao Parto e o Nascimento da

Não fez Com duas soluções uma sofrendo redução e a outra oxidação, em um circuito fechado com fio condutor metálico e uma ponte salina é possível produzir uma pilha química

em efeitos superiores, contudo, considerando-se a realização do experimento apenas no Rio Grande do Sul e as particularidades de cada região produtiva, a extrapolação dos

• The definition of the concept of the project’s area of indirect influence should consider the area affected by changes in economic, social and environmental dynamics induced

O estudo múltiplo de casos foi aplicado para identificar as semelhanças e dissemelhanças na forma como as empresas relacionam seus modelos de negócios e suas

Analisou-se o efeito de cinco substratos, constituídos de diferentes proporções de terra de subsolo, calcário e cinza de bagaço de cana, na altura, diâmetro de caule e peso fresco e

Os resultados obtidos indicaram que o Método do Ganho de Massa é viável para a obtenção do percentual de absorção de CO2; todas as mostras submetidas à cura por