mpsoc hemps guilherme castilhos [email protected] fernando moraes...
TRANSCRIPT
![Page 2: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/2.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/3.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/4.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/5.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/6.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/7.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/8.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/9.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/10.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/11.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/12.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/13.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/14.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/15.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/16.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/17.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/18.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/19.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/20.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/21.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/22.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/23.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/24.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/25.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/26.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/27.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/28.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/29.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/30.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/31.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/32.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/33.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/34.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/35.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/36.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/37.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/38.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/39.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/40.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/41.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/42.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/43.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/44.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/45.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/46.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/47.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/48.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/49.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/50.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/51.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/52.jpg)
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
aç
õe
s
![Page 53: MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br Fernando Moraes fernando.moares@pucrs.br](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/53.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/54.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/55.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/56.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/57.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/58.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/59.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/60.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/61.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/62.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/63.jpg)
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](https://reader038.vdocuments.mx/reader038/viewer/2022110117/552fc102497959413d8be720/html5/thumbnails/64.jpg)
Perguntas?Perguntas?
80