Carregar apresentação
A apresentação está carregando. Por favor, espere
1
MPSoC HeMPS Guilherme Castilhos guilherme.castilhos@acad.pucrs.br
Fernando Moraes
2
Outline Visão Geral do Sistema Camadas Envolvidas na Comunicação
Serviços do Microkernel Integração Processador à NoC Gerência Distribuída de Recursos
3
Visão Geral do Sistema MPSoC HeMPS MPSoC Homegêneo baseado em NoC
HERMES NoC Plasma-IP (Plasma, Interface de Rede, DMA e RAM) So, HeMPS is a homogeneous NoC-based MPSoC Its main hardware components are the HERMES NoC and the Plasma-IP, which wraps a mostly-MIPS processor called Plasma, a NI, a DMA module and a private RAM memory This is a 2x3 HeMPS instance Here are the Hermes NoC and the Plasma-IPs connected to the NoC routers. This is an internal view of the Plasma-IP exposing its components The task repository is a memory which stores the object code of the tasks that will be loaded in the system
4
Visão Geral do Sistema HERMES NoC Topologia 2D mesh Router
North Local West South East ControlLogic F HERMES NoC Topologia 2D mesh Router Controle Lógico Centralizado Até cinco portas bi-direcionais Buffers de entrada The Hermes NoC employs a 2D mesh topology. Its main component is the Hermes router which has a centralized logic control, responsible for the arbitration of incoming packets (RR) and routing (XY) Supports up to five bi-directional ports, with input buffer for temporary flit storage The local port is used to connect the Plasma-Ips and The remainig ports are used to connect the router to its neighbours
5
Visão Geral do Sistema (controle 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 arquitetura MIPS código aberto pipeline 3 estágios compilador gcc interrupções To achieve high performance in the processing elements, the Plasma-IP architecture targets the separation between communication and computation. The network interface and DMA modules send and receive packets while the Plasma processor performs task computation and wrapper management. The local RAM is a true dual port memory supporting simultaneous processor and DMA accesses
6
Visão Geral do Sistema (controle distribuído)
O MPSoC contém três tipos de PEs: 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) : responsáveis pelo controle dos clusters Escravos (SP) : responsáveis pela execução das tarefas The system contains a master processor (Plasma-IP MP), which is the system resources manager. It is the only processor having access to the task repository. During the system execution, tasks are dynamically loaded from the task repository to slave processors on demand. And when a given task finishes its execution the a system resource becomes available again. Such/This dynamic behavior enables smaller systems, since only required tasks are loaded into the system at any given moment. - The remainig processors are slave processors - Each one runs a microkernel supporting multitasking and task communication - The slave processors main function is to execute the application tasks
7
Visão Geral do Sistema Memória de cada processador
Organizada em páginas A primeira página contém o microkernel multitarefa microkernel task
8
Visã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
9
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
10
Outline Visão Geral do Sistema Camadas Envolvidas na Comunicação
Serviços do Microkernel Integração Processador à NoC Gerência Distribuída de Recursos
11
Camadas 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 Aplicação Aplicação Microkernel Microkernel Wrapper Processador NoC Wrapper Processador NoC Meio de Interconexão - NoC
12
Camadas 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 Aplicação Aplicação Microkernel Microkernel Wrapper Processador NoC Wrapper Processador NoC Meio de Interconexão - NoC
13
Camadas 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 Aplicação Aplicação Microkernel Microkernel Wrapper Processador NoC Wrapper Processador NoC Meio de Interconexão - NoC
14
Camadas envolvidas na comunicação
NoC (hardware) Realiza a interconexão dos processadores Encaminha os flits dos pacotes ao processador destino Aplicação Aplicação Microkernel Microkernel Wrapper Processador NoC Wrapper Processador NoC Meio de Interconexão - NoC
15
Camadas 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 Aplicação Aplicação Microkernel Microkernel Wrapper Processador NoC Wrapper Processador NoC Meio de Interconexão - NoC
16
Camadas envolvidas na comunicação
Microkernel Lê o pacote do wrapper Identifica a tarefa Escreve na memória da aplicação Aplicação Aplicação Microkernel Microkernel Wrapper Processador NoC Wrapper Processador NoC Meio de Interconexão - NoC
17
Camadas envolvidas na comunicação
Aplicação Recebe a mensagem através do pedido de leitura da mensagem Aplicação Aplicação Microkernel Microkernel Wrapper Processador NoC Wrapper Processador NoC Meio de Interconexão - NoC
18
Outline Visão Geral do Sistema Camadas Envolvidas na Comunicação
Serviços do Microkernel Integração Processador à NoC Gerência Distribuída de Recursos
19
Serviç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
20
Serviços do Microkernel
Múltiplas tarefas: organizadas em páginas Instrução no mkernel executada após interrupção ou escalonamento: mtc0 offset,$10
21
Serviços do Microkernel
Task Control Blocks (TCBs) Informações da tarefa necessárias para seu controle typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Registradores da tarefa Argumentos Retorno Temporários Salvos
22
Serviços do Microkernel
Task Control Blocks (TCBs) Informações da tarefa necessárias para seu controle typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Program Counter Última instrução executada
23
Serviços do Microkernel
Task Control Blocks (TCBs) Informações da tarefa necessárias para seu controle typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Endereço da memória onde inicia a tarefa Indica a página
24
Serviços do Microkernel
Task Control Blocks (TCBs) Informações da tarefa necessárias para seu controle typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Identificador da tarefa Numérico Global
25
Serviços do Microkernel
Task Control Blocks (TCBs) Informações da tarefa necessárias para seu controle typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Estado da Tarefa ready running waiting terminated
26
Serviços do Microkernel
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
27
Serviços do Microkernel
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
28
Serviços do Microkernel
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)
29
Serviços do Microkernel
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)
30
Serviços do Microkernel
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};
31
Serviços do Microkernel
Comunicação Local Tarefas da mesma CPU t3 tenta enviar msg para t2
32
Serviços do Microkernel
Comunicação Local Tarefas da mesma CPU t3 tenta enviar msg para t2 Microkernel tem espaço no pipe? Copia msg para o pipe
33
Serviços do Microkernel
Comunicação Local Tarefas da mesma CPU t2 tenta receber a msg de t3
34
Serviços do Microkernel
Comunicação Local Tarefas da mesma CPU t2 tenta receber a msg de t3 Microkernel t3 é local?
35
Serviços do Microkernel
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
36
Serviços do Microkernel
Comunicação Remota t2 tenta enviar msg para t5
37
Serviços do Microkernel
Comunicação Remota t2 tenta enviar msg para t5 Microkernel tem espaço no pipe? Copia msg para o pipe
38
Serviços do Microkernel
Comunicação Remota t5 tenta receber msg de t2 Microkernel t2 é local?
39
Serviços do Microkernel
Comunicação Remota t5 tenta receber msg de t2 Microkernel t2 é local? Requisita mensagem
40
Serviços do Microkernel
Comunicação Remota t5 tenta receber msg de t2 Microkernel t2 é local? Requisita mensagem Destino recebe requisição Tem msg para t5?
41
Serviços do Microkernel
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
42
Serviços do Microkernel
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
43
Serviços do Microkernel
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; int size; TaskPackage tasks[MAX_APP_SIZE]; } ApplicationPackage;
44
Serviços do Microkernel
Lista de Serviços MESSAGE_REQUEST x MESSAGE_DELIVERY x TASK_ALLOCATION x TASK_ALLOCATED x TASK_REQUEST x TASK_TERMINATED x TASK_DEALLOCATED x LOAN_PROCESSOR_RELEASE x DEBUG_MESSAGE x LOCATION_REQUEST x NEW_TASK x APP_TERMINATED x NEW_APP x INITIALIZE_CLUSTER x INITIALIZE_SLAVE x TASK_TERMINATED_OTHER_CLUSTER x LOAN_PROCESSOR_REQUEST x LOAN_PROCESSOR_DELIVERY x
45
Outline Visão Geral do Sistema Camadas Envolvidas na Comunicação
Serviços do Microkernel Integração Processador à NoC Gerência Distribuída de Recursos
46
Integração do Processor à NoC
Envolve: Wrapper – hardware de interface Drivers – software de comunicação
47
Integração do Processor à NoC
Wrapper 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
48
Integração do Processor à NoC
Wrapper Interface com a NoC – envio de dados tx: informa à NoC que tem dados a enviar data_out: dado a ser enviado credit_i: informa se a NoC pode receber dados
49
Integração do Processor à NoC
Wrapper Interface com a NoC – recebimento de dados rx: é informado pela NoC que tem dados para receber data_in: dado recebido credit_o: informa à NoC se pode receber dados
50
Integração do Processor à NoC
Wrapper Como o processador “conversa” com o wrapper Instruções de leitura/escrita em memória Enviando dados ao wrapper: la $9, ADDR_WRITE sw $4, 0($9)
51
Integração do Processor à NoC
Wrapper Como o processador “conversa” com o wrapper Instruções de leitura/escrita em memória Lendo dados ao wrapper: la $9, ADDR_READ lw $13, 0($9)
52
Integração do Processor à NoC
Wrapper Os dados recebidos da NoC são armazenados em um buffer circular LAST LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits 16 bits
53
Integração do Processor à NoC
Wrapper Os dados recebidos da NoC são armazenados em um buffer circular LAST LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits 16 bits
54
Integração do Processor à NoC
Wrapper Os dados recebidos da NoC são armazenados em um buffer circular LAST LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits 16 bits
55
Integração do Processor à NoC
Wrapper Os dados recebidos da NoC são armazenados em um buffer circular LAST LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits 16 bits
56
Integração do Processor à NoC
Wrapper Os dados recebidos da NoC são armazenados em um buffer circular LAST LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits 16 bits
57
Integração do Processor à NoC
Wrapper Os dados recebidos da NoC são armazenados em um buffer circular LAST LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits 16 bits
58
Integração do Processor à NoC
Wrapper Os dados recebidos da NoC são armazenados em um buffer circular LAST LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits 16 bits
59
Integração do Processor à NoC
Wrapper Os dados recebidos da NoC são armazenados em um buffer circular LAST LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits 16 bits
60
Integração do Processor à NoC
Wrapper Os dados recebidos da NoC são armazenados em um buffer circular LAST LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits 16 bits
61
Integração do Processor à NoC
Wrapper Quando houver um pacote completo ou o buffer estiver cheio o wrapper interrompe a CPU FIRST: Lê do buffer um dado e o transfere para o processador FIRST 16 bits 16 bits
62
Integração do Processor à NoC
Wrapper CPU lê 32-bits FIRST: Lê do buffer um dado e o transfere para o processador FIRST 16 bits 16 bits
63
Integração do Processor à NoC
Wrapper CPU lê 32-bits FIRST: Lê do buffer um dado e o transfere para o processador FIRST 16 bits 16 bits
64
Integração do Processor à NoC
Wrapper CPU lê 32-bits FIRST: Lê do buffer um dado e o transfere para o processador FIRST 16 bits 16 bits
65
Integração do Processor à NoC
Driver de comunicação localizado no microkernel envio e recebimento de pacotes monta pacotes Serviços: Message_Request Message_Deliver
66
Integraçã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 ( ) Processador fonte: 0011 Tarefa destino: 1 Tarefa fonte: 5 NoC com flit de 16 bits
67
Outline Visão Geral do Sistema Camadas Envolvidas na Comunicação
Serviços do Microkernel Integração Processador à NoC Gerência Distribuída de Recursos
68
Gerência Distribuída de Recursos
Divide o MPSoC em n clusters com tamanhos iguais, definidos em tempo de projeto.
69
Gerê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 MORAES: aqui dizer que é em relação ao estado da arte
70
Inicialização dos Clusters
CADA LMP INFORMA PARA SEUS SPS, QUE ELE IRA SER SEU GERENTE GMP INFORMA TODOS OS LMPs QUAL REGIÃO ELE IRA GERENCIAR
71
Inserção de uma Nova Aplicação
LMP procura um SP para Mapear as Tarefas Inicias da Aplicação 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 LMP encontra um SP disponível LMP envia uma mensagem para o GMP mapear a Tarefa 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 GMP encontra uma Cluster para a Aplicação Requisição de uma nova Aplicação GMP executa a heurística de “Seleção de Cluster” app
72
Processo de Mapeamento de Tarefas
LMP executa a heurística de Mapeamento de Tarefas LMP escolhe um PE para mapear a Tarefa SP requesita uma Tarefa para o seu LMP O LMP informa para os PES as posições das Tarefas O GMP aloca a Tarefa no PE selecionado O GMP obtém o código-objeto da Tarefa LMP requisite a alocação da Tarefa para o GMP
73
Gerência com Regiões Dinamicamente Adaptadas às Aplicaçõ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 MORAES: aqui dizer que é em relação ao estado da arte
74
Aumento Dinâmico do Tamanho do Cluster
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 Os LMPs vizinhos respondem a “Requisição de Empréstimo” Os LMPs vizinhos buscam recursos em seus clusters 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 reservam seus recursos
75
Migração de Tarefas É condicionado não apenas à existência de recursos livres, mas também ao ganho de desempenho pela redução do número de hops entre as tarefas comunicantes Características da Migração de tarefas: As tarefas podem ser migradas a qualquer momento Migração de tarefa completa, incluindo contexto, código e dados Mensagens são entregues em ordem, conforme foram criadas
76
Migração de Tarefas
77
Migração de Tarefas
78
Migração de Tarefas
79
Migração de Tarefas
80
Perguntas?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.