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

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

MPSoC HeMPS Guilherme Castilhos

Apresentações semelhantes


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

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?


Carregar ppt "MPSoC HeMPS Guilherme Castilhos"

Apresentações semelhantes


Anúncios Google