MPSoC HeMPS Guilherme Castilhos [email protected] Fernando Moraes...

64
MPSoC HeMPS MPSoC HeMPS Guilherme Castilhos [email protected] Fernando Moraes [email protected]

Transcript of MPSoC HeMPS Guilherme Castilhos [email protected] Fernando Moraes...

Page 1: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

MPSoC HeMPSMPSoC HeMPS

Guilherme Castilhos [email protected]

Fernando Moraes [email protected]

Page 2: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

OutlineOutline• Visão Geral do Sistema

• Camadas Envolvidas na Comunicação

• Serviços do Microkernel

• Integração Processador à NoC

• Gerência Distribuída de Recursos

2

Page 3: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Visão Geral do SistemaVisão Geral do Sistema• MPSoC HeMPS

• MPSoC Homegêneo baseado em NoC• HERMES NoC• Plasma-IP (Plasma, Interface de Rede, DMA e RAM)

3

HeMPSHermes NoC

Plasma-IPSL

Router

Router

Router

Router

Router

Router

Plasma-IPSL

Plasma-IPSL

Plasma-IPSL

Plasma-IPMP

Ne

two

rk

Inte

rfa

ce

Plasma-IP SL

PLASMA

DMA

RA

M

Re

po

sitó

rio

de

a

plic

açõ

es

Page 4: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Visão Geral do SistemaVisão Geral do Sistema• HERMES NoC

• Topologia 2D mesh• Router

• Controle Lógico Centralizado• Até cinco portas bi-direcionais• Buffers de entrada

4

HeMPSHermes NoC

Plasma-IPSL

Router

Router

Router

Router

Router

Router

Plasma-IPSL

Plasma-IPSL

Plasma-IPSL

Plasma-IPMP

Ne

two

rk

Inte

rfa

ce

Plasma-IP SL

PLASMA

DMA

RA

M

Re

po

sitó

rio

de

a

plic

açõ

es

North

Local

West

South

EastControlLogic

F

F F

F F

Page 5: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Visão Geral do Sistema (controle Visão Geral do Sistema (controle centralizado)centralizado)• Plasma-IP

• Separação entre comunicação e computação• NI/DMA: envia e recebe pacotes• PLASMA: executa a tarefa• RAM: true dual port memory

5

HeMPSHermes NoC

Plasma-IPSL

Router

Router

Router

Router

Router

Router

Plasma-IPSL

Plasma-IPSL

Plasma-IPSL

Plasma-IPMP

Ne

two

rk

Inte

rfa

ce

Plasma-IP SL

PLASMA

DMA

RA

M

Re

po

sitó

rio

de

a

plic

açõ

es

arquitetura MIPS código aberto pipeline 3 estágios compilador gcc interrupções

Page 6: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Visão Geral do Sistema (controle Visão Geral do Sistema (controle distribuído)distribuído)• O MPSoC contém três tipos de PEs:

• Mestre Global (GMP)Mestre Global (GMP) : contém todas as funções do LMP, e as funções relacionadas com a

gerência global do sistema Acesso ao Repositório de Aplicações

• Mestres Locais (LMP) Mestres Locais (LMP) : responsáveis pelo controle dos clusters• Escravos (SP) Escravos (SP) : responsáveis pela execução das tarefas

6

SP

SP

SP

SP

SP

SP

SP

SP

LMP

SP

SP

SP

SP

SP

SP

SP

GMP

SP SP SP

SP SP

LMP SP SP

SP SP SP

SP SP SP

LMP SP SP

SP

SP

Rep

osi

tóri

o

de

Ap

licaç

ões

Page 7: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Visão Geral do SistemaVisão Geral do Sistema• Memória de cada processador

• Organizada em páginas• A primeira página contém o microkernel multitarefa

7

HeMPSHermes NoC

Plasma-IPSL

Router

Router

Router

Router

Router

Router

Plasma-IPSL

Plasma-IPSL

Plasma-IPSL

Plasma-IPMP

Ne

two

rk

Inte

rfa

ce

Plasma-IP SL

PLASMA

DMA

RA

M

Re

po

sitó

rio

de

a

plic

açõ

es

microkernel

task

task

task

Page 8: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Visão Geral do SistemaVisão Geral do Sistema

• Aplicações modeladas através de grafo de tarefas• Cada aplicação possue seu próprio grafo de tarefas• Tarefas iniciais não possuem dependências

8

Tarefa A

Tarefa B

Tarefa ETarefa D

Tarefa C

Tarefa F

Tarefa Inicial

Page 9: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

MPSoC HeMPS MPSoC HeMPS

Características relevantes do MPSoC HeMPS:

• Processamento homogêneo

• Utilização de rede intrachip (NoC)

• Memória distribuída

• Comunicação por troca de mensagens

• Organização de memória paginada

9

Page 10: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

OutlineOutline• Visão Geral do Sistema

• Camadas Envolvidas na Comunicação

• Serviços do Microkernel

• Integração Processador à NoC

• Gerência Distribuída de Recursos

10

Page 11: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Camadas envolvidas na comunicaçãoCamadas envolvidas na comunicação• Aplicação (software)

• Composta por tarefas• Comunica-se com o microkernel através de chamadas de sistema (envio e recebimento de

mensagens)• Ex: Envio de mensagem para outro processador

11

Aplicação

Microkernel

WrapperProcessador NoC

Aplicação

Microkernel

WrapperProcessador NoC

Meio de Interconexão - NoC

Page 12: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Microkernel

Camadas envolvidas na comunicaçãoCamadas envolvidas na comunicação• Microkernel (software)

• Gerenciamento das tarefas• Trata interrupções, chamadas de sistema e escalona tarefas

• Monta pacotes com mensagens e envia ao wrapper

12

Aplicação

WrapperProcessador NoC

Aplicação

Microkernel

WrapperProcessador NoC

Meio de Interconexão - NoC

Page 13: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

WrapperProcessador NoC

Microkernel

Camadas envolvidas na comunicaçãoCamadas envolvidas na comunicação• Wrapper (hardware)

• Interface de comunicação entre o processador e a NoC• Recebe o pacote do MicroKernel armazenando-o em um buffer • Envia o pacote através da NoC dividindo-o em flits

• Wrapper realiza segmentação/remontagem

13

Aplicação Aplicação

Microkernel

WrapperProcessador NoC

Meio de Interconexão - NoC

Page 14: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Meio de Interconexão - NoC

WrapperProcessador NoC

Microkernel

Camadas envolvidas na comunicaçãoCamadas envolvidas na comunicação• NoC (hardware)

• Realiza a interconexão dos processadores• Encaminha os flits dos pacotes ao processador destino

14

Aplicação Aplicação

Microkernel

WrapperProcessador NoC

Page 15: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

WrapperProcessador NoC

Meio de Interconexão - NoC

WrapperProcessador NoC

Microkernel

Camadas envolvidas na comunicaçãoCamadas envolvidas na comunicação• Wrapper

• Recebe da NoC flits referentes ao pacote • Armazena-os no buffer de recebimento• Interrompe o processador para passar o pacote ao microkernel

15

Aplicação Aplicação

Microkernel

Page 16: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Microkernel

WrapperProcessador NoC

Meio de Interconexão - NoC

WrapperProcessador NoC

Microkernel

Camadas envolvidas na comunicaçãoCamadas envolvidas na comunicação• Microkernel

• Lê o pacote do wrapper• Identifica a tarefa• Escreve na memória da aplicação

16

Aplicação Aplicação

Page 17: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Aplicação

Microkernel

WrapperProcessador NoC

Meio de Interconexão - NoC

WrapperProcessador NoC

Microkernel

Camadas envolvidas na comunicaçãoCamadas envolvidas na comunicação• Aplicação

• Recebe a mensagem através do pedido de leitura da mensagem

17

Aplicação

Page 18: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

OutlineOutline• Visão Geral do Sistema

• Camadas Envolvidas na Comunicação

• Serviços do Microkernel

• Integração Processador à NoC

• Gerência Distribuída de Recursos

18

Page 19: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel• Carregamento de códigos-objeto

• A microkernel e as tarefas são implementados em linguagem C e Assembly• Cada código objeto é carregado em uma página

19

1

0

2

página

3 0x6000

0x2000

0x4000

0x0000

offset

tarefa3

tarefa2

tarefa1

microkernel

Page 20: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

20

31 … 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

endereço físico

endereço lógico página

mem_address

mlite_cpu

mem_address_wop[31:15] & page & mem_address_wop[12:0]

mem_address_wop Mem_ctrl

Page ($10)

Instrução no kernel executada após interrupção ou escalonamento:

mtc0 offset,$10

• Múltiplas tarefas: organizadas em páginas

Page 21: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB;

Serviços do MicrokernelServiços do Microkernel

21

• Task Control Blocks (TCBs)• Informações da tarefa necessárias para seu controle

Registradores da tarefa•Argumentos•Retorno•Temporários•Salvos

Page 22: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB;

Serviços do MicrokernelServiços do Microkernel

22

• Task Control Blocks (TCBs)• Informações da tarefa necessárias para seu controle

Program Counter•Última instrução executada

Page 23: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB;

Serviços do MicrokernelServiços do Microkernel

23

• Task Control Blocks (TCBs)• Informações da tarefa necessárias para seu controle

Endereço da memória onde inicia a tarefa

•Indica a página

Page 24: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB;

Serviços do MicrokernelServiços do Microkernel

24

• Task Control Blocks (TCBs)• Informações da tarefa necessárias para seu controle

Identificador da tarefa•Numérico

•Global

Page 25: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB;

Serviços do MicrokernelServiços do Microkernel

25

• Task Control Blocks (TCBs)• Informações da tarefa necessárias para seu controle

Estado da Tarefa

ready

terminated

running waiting

Page 26: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

26

• Escalonamento• preemptivo• sem prioridades• algoritmo Round Robin• somente tarefas no estado ready são escalonadas

• Controlado por interrupção• um timer define o momento do escalonamento• o tempo por tarefa é denominado timeslice (parametrizável)

tx ty tz

Page 27: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

27

• Tratamento de interrupções– interrupções advindas

• do contador de timeslice

• da NoC (chegada de pacotes)

• do software (chamadas de sistema)– Exemplo: operações de escrita/leitura nos pipes de mensagens

– rotina de tratamento: endereço fixo• 0x3C para contador de timeslice e chegada de pacotes

• 0x4C para chamadas de sistema

Page 28: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

28

• Para fim de timeslice e interrupções da NoC– 1º passo:

– salvamento dos registradores e pc no TCB da tarefa suspensa

– 2º passo:– Identificar a interrupção ocorrida e tratá-la

» Fim de timeslice: escalonamento

» Interrupção da NoC (chegada de pacotes): driver de comunicação

– 3º passo:– Carregamento do TCB da tarefa escalonada

(escalonamento) ou suspensa (chegada de pacotes)

Page 29: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

29

• Comunicação entre tarefas– ocorre através de pipes

• Espaço de memória reservada para armazenamento de mensagens

– primitivas que geram chamadas de sistema • WritePipe(&mensagem, id_destino) • ReadPipe(&mensagem, id_fonte)

Page 30: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

30

typedef struct { unsigned int remote_addr; /* Remote processor address */ unsigned int pkt_size; /* NoC packet size (flits) */ unsigned int service; /* Service identifier */ unsigned int local_addr; /* Local processor address */ unsigned int target; /* Target task */ unsigned int source; /* Source task */ unsigned int length; /* Message lenght (32 bits words)*/ unsigned int message[MSG_SIZE]; enum PipeSlotStatus status;

} PipeSlot;

PipeSlotStatus {EMPTY, LOCKED, USED};

Page 31: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

31

• Comunicação Local– Tarefas da mesma CPU

t1

t2

t3

pipe

While(!WritePipe(&msg,2));

microkernel

msg t3 tenta enviar msg para t2

Page 32: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

32

• Comunicação Local– Tarefas da mesma CPU

t3 tenta enviar msg para t2 Microkernel

tem espaço no pipe?Copia msg para o pipe

t1

t2

t3

pipe

While(!WritePipe(&msg,2));

microkernel

msg

Page 33: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

33

• Comunicação Local– Tarefas da mesma CPU

t2 tenta receber a msg de t3

t1

t2

t3

pipe

While(!WritePipe(&msg,2));

microkernel

msg

While(!ReadPipe(&msg,3));

msg

Page 34: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

34

• Comunicação Local– Tarefas da mesma CPU

t2 tenta receber a msg de t3 Microkernel

t3 é local?

t1

t2

t3

pipe

While(!WritePipe(&msg,2));

microkernel

msg

While(!ReadPipe(&msg,3));

msg

Page 35: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

35

• Comunicação Local– Tarefas da mesma CPU

t2 tenta receber a msg de t3 Microkernel

t3 é local? tem msg de t3 para t2? Copia msg do pipe para página da tarefa

t1

t2

t3

pipe

While(!WritePipe(&msg,2));

microkernel

msg

While(!ReadPipe(&msg,3));

msg

Page 36: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

36

• Comunicação Remota t2 tenta enviar msg para t5

t1

t2

t3

pipe

While(!Write_pipe(&msg,5));

t4

t5

t6

pipe

HERMES

microkernel microkernel

msg

Page 37: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

37

• Comunicação Remota t2 tenta enviar msg para t5 Microkernel

tem espaço no pipe?Copia msg para o pipe

t1

t2

t3

pipe

While(!Write_pipe(&msg,5));

t4

t5

t6

pipe

HERMES

microkernel microkernel

msg

Page 38: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

38

• Comunicação Remota t5 tenta receber msg de t2 Microkernel

t2 é local?

t1

t2

t3

pipe

While(!WritePipe(&msg,5));

t4

t5

t6

pipe

HERMES

microkernel microkernel

msg

While(!ReadPipe(&msg,2));

msg

Page 39: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

39

• Comunicação Remota t5 tenta receber msg de t2 Microkernel

t2 é local? Requisita mensagem

t1

t2

t3

pipe

While(!WritePipe(&msg,5));

t4

t5

t6

pipe

HERMES

microkernel microkernel

msg

While(!ReadPipe(&msg,2));

msg

driver

Req_Msg

Page 40: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

40

• Comunicação Remota t5 tenta receber msg de t2 Microkernel

t2 é local? Requisita mensagem Destino recebe requisiçãoTem msg para t5?

t1

t2

t3

pipe

While(!WritePipe(&msg,5));

t4

t5

t6

pipe

HERMES

microkernel microkernel

msg

While(!ReadPipe(&msg,2));

msg

driver driver

Req_Msg

Page 41: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

41

• Comunicação Remota t5 tenta receber msg de t2 Microkernel

t2 é local? Requisita mensagem Destino recebe requisição Tem msg para t5? Envia msg para t5 Driver recebe msg

t1

t2

t3

pipe

While(!WritePipe(&msg,5));

t4

t5

t6

pipe

HERMES

microkernel microkernel

msg

While(!ReadPipe(&msg,2));

msg

driver

Deliver_Msg

driver

Page 42: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

42

• Comunicação Remota t5 tenta receber msg de t2 Microkernel

t2 é local? Requisita mensagem Destino recebe requisição Tem msg para t5? Envia msg para t5 Driver recebe msg Copia para a página de t5

t1

t2

t3

pipe

While(!WritePipe(&msg,5));

t4

t5

t6

pipe

HERMES

microkernel microkernel

msg

While(!ReadPipe(&msg,2));

msg

driver

Deliver_Msg

driver

Page 43: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel

43

Estrutura dos pacotes de Aplicações e Tarefas

typedef struct { int id; int code_size; int initial_address; int proc; int dependences_number; DependencePackage dependences[10];} TaskPackage;

typedef struct { int size; TaskPackage tasks[MAX_APP_SIZE];} ApplicationPackage;

Page 44: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Serviços do MicrokernelServiços do Microkernel44

Lista de Serviços

• MESSAGE_REQUEST 0x00000010• MESSAGE_DELIVERY 0x00000020• TASK_ALLOCATION 0x00000040• TASK_ALLOCATED 0x00000050• TASK_REQUEST 0x00000060• TASK_TERMINATED 0x00000070• TASK_DEALLOCATED 0x00000080• LOAN_PROCESSOR_RELEASE 0x00000090• DEBUG_MESSAGE 0x00000100• LOCATION_REQUEST 0x00000120• NEW_TASK 0x00000130• APP_TERMINATED 0x00000140• NEW_APP 0x00000150• INITIALIZE_CLUSTER 0x00000160• INITIALIZE_SLAVE 0x00000170• TASK_TERMINATED_OTHER_CLUSTER 0x00000180• LOAN_PROCESSOR_REQUEST 0x00000190• LOAN_PROCESSOR_DELIVERY 0x00000200

Page 45: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

OutlineOutline• Visão Geral do Sistema

• Camadas Envolvidas na Comunicação

• Serviços do Microkernel

• Integração Processador à NoC

• Gerência Distribuída de Recursos

45

Page 46: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Integração do Processor à NoCIntegração do Processor à NoC

• Envolve:

• Wrapper – hardware de interface

• Drivers – software de comunicação

46

Page 47: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Integração do Processor à NoCIntegração do Processor à NoC

• WrapperWrapper• Interface entre o processador e a NoC

• Receber dados do processador e enviar para a NoC• Dividindo os dados em flits

• Receber dados da NoC e entregar ao processador

47

Processador Plasma

data_read data_write

address mem_pause_in

write_byte_enable

Wrapper

tx data_out credit_i data_in credit_o rx

gpio0_out gpioA_in

Page 48: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Integração do Processor à NoCIntegração do Processor à NoC

• WrapperWrapper• Interface com a NoC – envio de dados

48

Processador Plasma

data_read data_write

address mem_pause_in

write_byte_enable

Wrapper

tx data_out credit_i data_in credit_o rx

gpio0_out gpioA_in

tx: informa à NoC que tem dados a

enviar

data_out: dado a ser enviado

credit_i: informa se a NoC pode

receber dados

Page 49: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Integração do Processor à NoCIntegração do Processor à NoC

• Driver de comunicação• localizado no microkernel• envio e recebimento de pacotes

• monta pacotes

• Serviços:• Message_Request• Message_Deliver

65

destino tamanho serviço parâmetros do serviço

cabeçalho conteúdo

Page 50: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Integração do Processor à NoCIntegração do Processor à NoC

• Wrapper segmenta o pacote em flits• Exemplo:

• O código C ReadPipe(&msg,5) da tarefa 1 gera um pacote de requisição de dados: • Processador destino: 0010• Tamanho do pacote: 8 • Serviço: Message_Request (00000010)• Processador fonte: 0011• Tarefa destino: 1• Tarefa fonte: 5

• NoC com flit de 16 bits

66

00 10 00 08 00 00 00 10 00 00 00 11 00 00 00 01 00 00 00 05

Req Msg

destino

tamanho

Proc Fonte

Tarefa Destino

Tarefa Fonte

Page 51: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

OutlineOutline• Visão Geral do Sistema

• Camadas Envolvidas na Comunicação

• Serviços do Microkernel

• Integração Processador à NoC

• Gerência Distribuída de Recursos

67

Page 52: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Gerência Distribuída de RecursosGerência Distribuída de Recursos

• Divide o MPSoC em n clusters com tamanhos iguais, definidos em tempo de projeto.

68

SP

SP

SP

SP

SP

SP

SP

SP

LMP

SP

SP

SP

SP

SP

SP

SP

SP

LMP

SP

SP

SP

SP

SP

SP

SP

GMP

SP SP SP SP SP

SP SP SP SP SP

LMP SP SP LMP SP SP

SP

SP

SP SP SP SP SP

SP SP SP SP

LMP SP SP LMP SP SP

SP

SP

SP SP SP SP SP

SP SP SP SP SP

LMP SP SP LMP SP SP

SP

SP

SP

SP

Re

po

sit

óri

o

de

A

plic

õe

s

Page 53: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Gerência Distribuída de RecursosGerência Distribuída de Recursos• Vantagens dessa abordagem:

• O número de PEs dedicados à função de gerência é limitado ao número de clusters.

• A abordagem clusterizada reduz o número de hops entre tarefas pertencentes a uma mesma aplicação

• Não é necessário criar/destruir agentes toda a vez que uma nova aplicação entra/deixa o sistema

69

Page 54: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

70

SP

SP

SP

LMP

SP

SP

GMP

SP

Rep

osi

tóri

o

de

Ap

licaç

ões

SP

SP

SP

LMP

SP

SP

LMP

SP

GMP INFORMA TODOS OS LMPs QUAL REGIÃO ELE IRA GERENCIARInicialização dos ClustersInicialização dos Clusters CADA LMP INFORMA PARA SEUS

SPS, QUE ELE IRA SER SEU GERENTE

Page 55: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Inserção de uma Nova AplicaçãoInserção de uma Nova Aplicação

71

HeMPS

SPRouter

Router

Router

Router SP

SP

LMP

Rep

ositó

rio d

e A

plic

açõe

s

SPRouter

Router

Router

Router SP

SP

GMP

CLUSTER 1

CLUSTER 0

app

Requisição de uma nova Aplicação

GMP executa a heurística de “Seleção

de Cluster”

GMP encontra uma Cluster para a Aplicação

GMP obtem a Descrição da Aplicação no Repositório

de Aplicações

GMP programa o módulo de DMA para enviar para o LMP do Cluster escolhido

LMP procura um SP para Mapear as Tarefas Inicias

da Aplicação

LMP encontra um SP disponível

LMP envia uma mensagem para o GMP mapear a

Tarefa

GMP obtém o código objeto da Tarefa no

Repositório de Aplicações

GMP programa o módulo de DMA para alocar a

Tarefa no SP selecionado

Page 56: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Processo de Mapeamento de TarefasProcesso de Mapeamento de Tarefas

72

HeMPS

SPRouter

Router

Router

Router SP

SP

LMP

Rep

osi

tório

de

Apl

icaç

ões

SPRouter

Router

Router

Router SP

SP

GMP

CLUSTER 1

CLUSTER 0

SP requesita uma Tarefa para o seu LMP

LMP executa a heurística de Mapeamento de

Tarefas

LMP escolhe um PE para mapear a Tarefa

LMP requisite a alocação da Tarefa para o GMP

O GMP obtém o código-objeto da Tarefa

O GMP aloca a Tarefa no PE selecionado

O LMP informa para os PES as posições das

Tarefas

Page 57: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Gerência com Regiões Dinamicamente Adaptadas às Gerência com Regiões Dinamicamente Adaptadas às AplicaçõesAplicações

Processo de Reclusterização: Ajuste em tempo de execução do tamanho de um determinado cluster.

• aumento do tamanho do cluster, por indisponibilidade de recursos

• migrar tarefas que foram mapeadas em clusters vizinhos, com o objetivo de melhorar o desempenho das aplicações

73

Page 58: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

SP

SP

SP

SP

SP

SP

SP

SP

LMP

SP

SP

SP

SP

SP

SP

SP

GMP

SP SP SP

SP SP

LMP SP SP

SP SP SP

SP SP SP

LMP SP SP

SP

SP

Aumento Dinâmico do Tamanho do ClusterAumento Dinâmico do Tamanho do Cluster

74

SP requesita uma Tarefa para o seu LMP

LMP executa a heurística de Mapeamento de

Tarefas

LMP não encontrou recursos disponíveis em

seu Cluster

LMP envia uma “Requisição de Empréstimo” para seus

Clusters vizinhos

Os LMPs vizinhos buscam recursos em seus clusters

Os LMPs vizinhos respondem a “Requisição de Empréstimo”

Os LMPs reservam seus recursos

O LMP recebe todas as mensagens e escolhe qual

recurso irá usar

O LMP libera os recursos que não utilizará

O LMP requisite para o GMP a alocação da Tarefa

O GMP aloca a Tarefa no SP selecionado

Page 59: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Migração de TarefasMigração de Tarefas

75

É condicionado não apenas à existência de recursos livres, mas também ao ganho de desempenho pela redução do número de redução do número de

hopshops entre as tarefas comunicantes

Características da Migração de tarefas:•As tarefas podem ser migradas a qualquer momentomigradas a qualquer momento•Migração de tarefa completa, incluindo contexto, código contexto, código e dados dados•Mensagens são entregues em ordementregues em ordem, conforme foram criadas

Page 60: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Migração de TarefasMigração de Tarefas

76

F

LMP

GMP

LMP

D/E

LMP B A/C

Cluster 3 Cluster 4

Cluster 2Cluster 1

Page 61: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Migração de TarefasMigração de Tarefas

77

F

LMP

GMP

LMP

D/E

LMP B A/C

Cluster 3 Cluster 4

Cluster 2Cluster 1

Page 62: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Migração de TarefasMigração de Tarefas

78

LMP

GMP

LMP

F D/E

LMP B A/C

Cluster 3 Cluster 4

Cluster 2Cluster 1

Page 63: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Migração de TarefasMigração de Tarefas

79

LMP SP1 SP2Termino de

TarefaVerifica se há

tarefas em outros clusters

Requisição de Migração

Transmissão de contexto e

reescalonamento da tarefa Task

Requisição de Leitura

Encaminhamento da Requisição de Leitura

Mensagem entregue com a nova posição da tarefa

SP3

1

2

3

4

6

7

8

5

Page 64: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br.

Perguntas?Perguntas?

80