740 likes | 850 Views
Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil. H emps P latform. guilherme.castilhos@acad.pucrs.br fernando.moraes@pucrs.br. Guilherme M. Castilhos Fernando G.Moraes. Outline. Visão Geral do Sistema Camadas Envolvidas na Comunicação Serviços do Microkernel
E N D
Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil HempsPlatform guilherme.castilhos@acad.pucrs.br fernando.moraes@pucrs.br Guilherme M. Castilhos Fernando G.Moraes
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 Framework for MPSoC Generation
VisãoGeral do Sistema • MPSoC HeMPS • MPSoC Homegêneo baseado em NoC • HERMES NoC • Plasma-IP (Plasma, Interface de Rede, DMA e RAM)
North ControlLogic West East Local South F F F F F VisãoGeral do Sistema • HERMES NoC • Topologia 2D mesh • Router • Controle Lógico Centralizado • Até cinco portas bi-direcionais • Buffers de entrada
VisãoGeral do Sistema (controlecentralizado) • arquitetura MIPS • código aberto • pipeline 3 estágios • compilador gcc • interrupções • 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
VisãoGeral do Sistema (controledistribuí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
VisãoGeral do Sistema • Memória de cada processador • Organizada em páginas • A primeira página contém o microkernel multitarefa
VisãoGeral 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
Níveis de Abstração RTL SystemC NoC + ISS (CPU) + platform clock accurate intermediate simulation time - lower debuggability RTL VHDL implementation + platform clock accurate + area and power references - higher simulation time - lower debuggability OVP (NoC and CPU) - untimed simulation + smaller simulation time + higher debuggability + modeling flexibility
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
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 Framework for MPSoC Generation
Camadas envolvidas na comunicação Aplicação Aplicação Microkernel Microkernel NI Processador NoC NI Processador NoC Meio de Interconexão - NoC • 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
Camadas envolvidas na comunicação Aplicação Aplicação Microkernel Microkernel NI Processador NoC NI Processador NoC Meio de Interconexão - NoC • Microkernel (software) • Gerenciamento das tarefas • Trata interrupções, chamadas de sistema e escalona tarefas • Monta pacotes com mensagens e envia à NI
Camadas envolvidas na comunicação Aplicação Aplicação Microkernel Microkernel NI Processador NoC NI Processador NoC Meio de Interconexão - NoC • NI(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 • NI realiza segmentação/remontagem
Camadas envolvidas na comunicação Aplicação Aplicação Microkernel Microkernel NI Processador NoC NI Processador NoC Meio de Interconexão - NoC • NoC (hardware) • Realiza a interconexão dos processadores • Encaminha os flits dos pacotes ao processador destino
Camadas envolvidas na comunicação Aplicação Aplicação Microkernel Microkernel NI Processador NoC NI Processador NoC Meio de Interconexão - NoC • Wrapper • Recebe da NoC flits referentes ao pacote • Armazena-os no buffer de recebimento • Interrompe o processador para passar o pacote ao microkernel
Camadas envolvidas na comunicação Aplicação Aplicação Microkernel Microkernel NI Processador NoC NI Processador NoC Meio de Interconexão - NoC • Microkernel • Lê o pacote da NI • Identifica a tarefa • Escreve na memória da aplicação
Camadas envolvidas na comunicação Aplicação Aplicação Microkernel Microkernel NI Processador NoC NI Processador NoC Meio de Interconexão - NoC • Aplicação • Recebe a mensagem através do pedido de leitura da mensagem
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 Framework for MPSoC Generation
Serviços do Microkernel • Carregamento de códigos-objeto • O microkernel e as tarefas são implementados em linguagem C e Assembly • Cada código objeto é carregado em uma página
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
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
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
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
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
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
tx ty tz 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)
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
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)
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 geramchamadas de sistema • WritePipe(&mensagem, id_destino) • ReadPipe(&mensagem, id_fonte)
Serviços do Microkernel typedefstruct { unsigned intremote_addr; /* Remote processor address */ unsigned intpkt_size; /* NoC packet size (flits) */ unsigned int service; /* Service identifier */ unsigned intlocal_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]; enumPipeSlotStatus status; } PipeSlot; PipeSlotStatus {EMPTY, LOCKED, USED};
Serviços do Microkernel • Comunicação Local • Tarefas da mesma CPU • t3 tenta enviar msg para t2
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
Serviços do Microkernel • Comunicação Local • Tarefas da mesma CPU • t2 tenta receber a msg de t3
Serviços do Microkernel • Comunicação Local • Tarefas da mesma CPU • t2 tenta receber a msg de t3 • Microkernel • t3 é local?
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
Serviços do Microkernel • Comunicação Remota • t2 tenta enviar msg para t5
Serviços do Microkernel • Comunicação Remota • t2 tenta enviar msg para t5 • Microkernel • tem espaço no pipe? • Copia msg para o pipe
Serviços do Microkernel • Comunicação Remota • t5 tenta receber msg de t2 • Microkernel • t2 é local?
Serviços do Microkernel • Comunicação Remota • t5 tenta receber msg de t2 • Microkernel • t2 é local? • Requisita mensagem
Serviços do Microkernel • Comunicação Remota • t5 tenta receber msg de t2 • Microkernel • t2 é local? • Driver requisita mensagem • Driver destino recebe requisição • Tem msg para t5?
Serviços do Microkernel • Comunicação Remota • t5 tenta receber msg de t2 • Microkernel • t2 é local? • Driver requisita mensagem • Driver destino recebe requisição • Tem msg para t5? • Envia msg para t5 • Driver recebe msg
Serviços do Microkernel • Comunicação Remota • t5 tenta receber msg de t2 • Microkernel • t2 é local? • Driver requisita mensagem • Driver destino recebe requisição • Tem msg para t5? • Envia msg para t5 • Driver recebe msg • Copia para a página de t5
Serviços do Microkernel • 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
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 Framework for MPSoC Generation
Integração do Processador à NoC • Envolve: • NI– hardware de interface • Drivers – software de comunicação
Integração do Processor à NoC • NI • Interface entre o processador e a NoC • Receber dados do processador e enviar para a NoC • Dividindoos dados em flits • Receber dados da NoC e entregaraoprocessador
Integração do Processor à NoC tx: informa à NoC que tem dados a enviar data_out: dado a ser enviado credit_i: informa se a NoC pode receber dados • NI • Interface com a NoC – envio de dados
Integração do Processor à NoC rx: é informado pela NoC que tem dados para receber data_in: dado recebido credit_o: informa à NoC se pode receber dados • NI • Interface com a NoC – recebimento de dados
Integração do Processor à NoC Enviando dados ao wrapper: la $9, ADDR_WRITE sw $4, 0($9) • NI • Como o processador“conversa” com o wrapper • Instruções de leitura/escritaemmemória