A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

MPSoC HeMPS Guilherme Castilhos Fernando Moraes

Apresentações semelhantes


Apresentação em tema: "MPSoC HeMPS Guilherme Castilhos Fernando Moraes"— Transcrição da apresentação:

1 MPSoC HeMPS Guilherme Castilhos 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 2

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) 3

4 Visão Geral do Sistema HERMES NoC Topologia 2D mesh Router Controle Lógico Centralizado Até cinco portas bi-direcionais Buffers de entrada 4 North Local West South East Control Logic F F F F F

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 5 arquitetura MIPS código aberto pipeline 3 estágios compilador gcc interrupções

6 Visão Geral do Sistema (controle 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

7 Visão Geral do Sistema Memória de cada processador Organizada em páginas A primeira página contém o microkernel multitarefa 7 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 8

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 9

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 10

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 11 Aplicação Microkernel Wrapper Processador NoC Aplicação Microkernel Wrapper Processador NoC Meio de Interconexão - NoC

12 Microkernel 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 12 Aplicação Wrapper Processador NoC Aplicação Microkernel Wrapper Processador NoC Meio de Interconexão - NoC

13 Wrapper Processador NoC Microkernel 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 13 Aplicação Microkernel Wrapper Processador NoC Meio de Interconexão - NoC

14 Wrapper Processador NoC Microkernel Camadas envolvidas na comunicação NoC (hardware) Realiza a interconexão dos processadores Encaminha os flits dos pacotes ao processador destino 14 Aplicação Microkernel Wrapper Processador NoC

15 Wrapper Processador NoC Meio de Interconexão - NoC Wrapper Processador NoC Microkernel 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 15 Aplicação Microkernel

16 Wrapper Processador NoC Meio de Interconexão - NoC Wrapper Processador NoC Microkernel Camadas envolvidas na comunicação Microkernel Lê o pacote do wrapper Identifica a tarefa Escreve na memória da aplicação 16 Aplicação

17 Microkernel Wrapper Processador NoC Meio de Interconexão - NoC Wrapper Processador NoC Microkernel Camadas envolvidas na comunicação Aplicação Recebe a mensagem através do pedido de leitura da mensagem 17 Aplicação

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 18

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 19

20 Serviços do Microkernel 20 Instrução no kernel executada após interrupção ou escalonamento: mtc0 offset,$10 Múltiplas tarefas: organizadas em páginas

21 typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Serviç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

22 typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Serviços do Microkernel 22 Task Control Blocks (TCBs) Informações da tarefa necessárias para seu controle Program Counter Última instrução executada

23 typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Serviç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

24 typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Serviços do Microkernel 24 Task Control Blocks (TCBs) Informações da tarefa necessárias para seu controle Identificador da tarefa Numérico Global

25 typedef struct{ unsigned int reg[30]; unsigned int pc; unsigned int offset; unsigned int id; unsigned int status; }TCB; Serviços do Microkernel 25 Task Control Blocks (TCBs) Informações da tarefa necessárias para seu controle Estado da Tarefa ready terminated runningwaiting

26 Serviç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) txtx tyty tztz

27 Serviç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

28 Serviç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)

29 Serviç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)

30 Serviç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};

31 Serviços do Microkernel 31 Comunicação Local –Tarefas da mesma CPU t3 tenta enviar msg para t2

32 Serviç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

33 Serviços do Microkernel 33 Comunicação Local –Tarefas da mesma CPU t2 tenta receber a msg de t3

34 Serviços do Microkernel 34 Comunicação Local –Tarefas da mesma CPU t2 tenta receber a msg de t3 Microkernel t3 é local?

35 Serviç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

36 Serviços do Microkernel 36 Comunicação Remota t2 tenta enviar msg para t5

37 Serviços do Microkernel 37 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 38 Comunicação Remota t5 tenta receber msg de t2 Microkernel t2 é local?

39 Serviços do Microkernel 39 Comunicação Remota t5 tenta receber msg de t2 Microkernel t2 é local? Requisita mensagem

40 Serviços do Microkernel 40 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 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

42 Serviç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

43 Serviç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;

44 Serviços do Microkernel 44 Lista de Serviços MESSAGE_REQUEST 0x MESSAGE_DELIVERY 0x TASK_ALLOCATION 0x TASK_ALLOCATED 0x TASK_REQUEST 0x TASK_TERMINATED 0x TASK_DEALLOCATED 0x LOAN_PROCESSOR_RELEASE 0x DEBUG_MESSAGE 0x LOCATION_REQUEST 0x NEW_TASK 0x APP_TERMINATED 0x NEW_APP 0x INITIALIZE_CLUSTER 0x INITIALIZE_SLAVE 0x TASK_TERMINATED_OTHER_CLUSTER 0x LOAN_PROCESSOR_REQUEST 0x LOAN_PROCESSOR_DELIVERY 0x

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 45

46 Integração do Processor à NoC Envolve: Wrapper – hardware de interface Drivers – software de comunicação 46

47 Integração do Processor à NoC Wrapper 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 47

48 Integração do Processor à NoC Wrapper Wrapper Interface com a NoC – envio de dados 48 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 Wrapper Interface com a NoC – recebimento de dados 49 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 Wrapper Como o processador conversa com o wrapper Instruções de leitura/escrita em memória 50 Enviando dados ao wrapper: la$9, ADDR_WRITE sw$4, 0($9)

51 Integração do Processor à NoC Wrapper Wrapper Como o processador conversa com o wrapper Instruções de leitura/escrita em memória 51 Lendo dados ao wrapper: la$9, ADDR_READ lw$13, 0($9)

52 Integração do Processor à NoC Wrapper Wrapper Os dados recebidos da NoC são armazenados em um buffer circular 52 LAST: Escreve no buffer um dado (flit) proveniente da NoC LAST 16 bits

53 Integração do Processor à NoC Wrapper Wrapper Os dados recebidos da NoC são armazenados em um buffer circular 53 LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits LAST

54 Integração do Processor à NoC Wrapper Wrapper Os dados recebidos da NoC são armazenados em um buffer circular 54 LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits LAST

55 Integração do Processor à NoC Wrapper Wrapper Os dados recebidos da NoC são armazenados em um buffer circular 55 LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits LAST

56 Integração do Processor à NoC Wrapper Wrapper Os dados recebidos da NoC são armazenados em um buffer circular 56 LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits LAST

57 Integração do Processor à NoC Wrapper Wrapper Os dados recebidos da NoC são armazenados em um buffer circular 57 LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits LAST

58 Integração do Processor à NoC Wrapper Wrapper Os dados recebidos da NoC são armazenados em um buffer circular 58 LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits LAST

59 Integração do Processor à NoC Wrapper Wrapper Os dados recebidos da NoC são armazenados em um buffer circular 59 LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits LAST

60 Integração do Processor à NoC Wrapper Wrapper Os dados recebidos da NoC são armazenados em um buffer circular 60 LAST: Escreve no buffer um dado (flit) proveniente da NoC 16 bits LAST

61 Integração do Processor à NoC Wrapper Wrapper Quando houver um pacote completo ou o buffer estiver cheio o wrapper interrompe a CPU 61 FIRST: Lê do buffer um dado e o transfere para o processador 16 bits FIRST

62 Integração do Processor à NoC Wrapper Wrapper CPU lê 32-bits 62 FIRST: Lê do buffer um dado e o transfere para o processador 16 bits FIRST

63 Integração do Processor à NoC Wrapper Wrapper CPU lê 32-bits 63 FIRST: Lê do buffer um dado e o transfere para o processador 16 bits FIRST

64 Integração do Processor à NoC Wrapper Wrapper CPU lê 32-bits 64 FIRST: Lê do buffer um dado e o transfere para o processador 16 bits FIRST

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 65

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 66

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 67

68 Gerência Distribuída de Recursos Divide o MPSoC em n clusters com tamanhos iguais, definidos em tempo de projeto. 68

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 69

70 70 GMP INFORMA TODOS OS LMPs QUAL REGIÃO ELE IRA GERENCIAR Inicialização dos Clusters CADA LMP INFORMA PARA SEUS SPS, QUE ELE IRA SER SEU GERENTE

71 Inserção de uma Nova Aplicação 71 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

72 Processo de Mapeamento de Tarefas 72 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

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 73

74 Aumento 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

75 Migração de Tarefas 75 redução do número de hops É 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: migradas a qualquer momento As tarefas podem ser migradas a qualquer momento contexto, código dados Migração de tarefa completa, incluindo contexto, código e dados entregues em ordem Mensagens são entregues em ordem, conforme foram criadas

76 Migração de Tarefas 76

77 Migração de Tarefas 77

78 Migração de Tarefas 78

79 Migração de Tarefas 79

80 Perguntas? 80


Carregar ppt "MPSoC HeMPS Guilherme Castilhos Fernando Moraes"

Apresentações semelhantes


Anúncios Google