Subconjunto de instruções de comunicação e sincronização entre processos em uma arquitetura multicore

Documentos relacionados
ÁREA: CV ( ) CHSA ( ) ECET ( )

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

Introdução à Engenharia de Computação

Sistemas Digitais. Módulo 15 Prof. Celso PLD - DISPOSITIVOS LÓGICOS PROGRAMÁVEIS

8 Threads. 8.1 Introdução

Projetos I Resumo de TCC. Luiz Rogério Batista De Pieri Mat:

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Computador Digital Circuitos de um computador (Hardware)

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Manual de Instalação da Plataforma Scorpion. 1. Como conectar a Plataforma Scorpion com a Xilinx Starter-3E kit

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software. Prof. MSc.

Dispositivos Lógicos Programáveis

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

Guia de utilização da notação BPMN

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

GBD PROF. ANDREZA S. AREÃO

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

Conceito de Rede e seus Elementos. Prof. Marciano dos Santos Dionizio

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

C O B I T Control Objectives for Information and related Technology

DEFINIÇÃO DE UMA REDE DE SENSORES SEM FIO PARA A ARQUITETURA AGROMOBILE 1

Atualizações de Software Guia do Usuário

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

UMA PROPOSTA PARA COMPARAÇÃO DE PROVEDORES DE COMPUTAÇÃO EM NUVEM DESDE UMA PERSPECTIVA DE INTEGRAÇÃO DE APLICAÇÕES 1

Introdução. Hardware (Parte I) Universidade Federal de Campina Grande Departamento de Sistemas e Computação. joseana@computacao.ufcg.edu.

UNIP - UNIVERSIDADE PAULISTA. Arquitetura de computadores

Memórias. O que são Memórias de Semicondutores? São componentes capazes de armazenar informações Binárias (0s e 1s)

Prof. Esp. Lucas Cruz

Banco de Dados Orientado a Objetos

Sistemas Distribuídos (DCC/UFRJ)

Informática I. Aula 5. Aula 5-13/05/2006 1

ANÁLISE DE DESEMPENHO DA PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PRIMOS UTILIZANDO PTHREAD E OPENMP 1

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

Desenvolvendo um Ambiente de Aprendizagem a Distância Utilizando Software Livre

Introdução aos Computadores

Turno/Horário Noturno PROFESSOR : Salomão Dantas Soares AULA Apostila nº

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios

Estudo Qualitativo e Quantitativo de Linguagens Paralelas para Arquiteturas Multicore

Capítulo 7 Nível da Linguagem Assembly

Invenções Implementadas por Computador (IIC) Patentes

1. Introdução - contextos de aplicações

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Sistemas Microcontrolados

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Introdução. Prof. MSc. Hugo Souza

Prefeitura de Belo Horizonte. Sistema de Controle de Protocolo

Sistemas Operacionais. Prof. André Y. Kusumoto

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

SDN-WISE: Design, prototyping and experimentation of a stateful SDN solution for WIreless SEnsor networks

perspectivas e abordagens típicas de campos de investigação (Senra & Camargo, 2010).

Relatorio do trabalho pratico 2

Arquitetura e Organização de Computadores

Organização de Computadores 1. Prof. Luiz Gustavo A. Martins

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

Implementações e Comparação de Multiplicadores de Alta Velocidade para Dispositivos Reconfiguráveis

ITIL v3 - Operação de Serviço - Parte 1

Um Caminho de Dados Pipeline Para a ISA MIPS: Aprendendo na Prática

REDES DE COMPUTADORES HISTÓRICO E CONCEITOS

Sistemas Operacionais

SINOPSE. Leandro Gomes Matos Diretor da RNC

Introdução à Computação: Sistemas de Computação

Permite a coleta de dados em tempo real dos processos de produção, possuindo, também, interfaces para a transferência dos dados para os sistemas

Programação de Computadores. Turma CI-180-B. Josiney de Souza.

Introdução a Computação

Introdução Ciclo de vida tradicional de desenvolvimento Prototipagem Pacotes de software Desenvolvimento de 4ª geração Terceirização

Implementadas por Computador

NORMA TÉCNICA PARA IMPLANTAÇÃO DE NOVOS SISTEMAS OU APLICAÇÕES NO BANCO DE DADOS CORPORATIVO

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

Copyright Proibida Reprodução. Prof. Éder Clementino dos Santos

Introdução à Sistemas Operacionais. Glauber Magalhães Pires

WMS e TMS. A integração entre os sistemas de gerenciamento de armazéns e transportes é fundamental para a otimização dos fluxos de trabalho

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

Transformação de um Modelo de Empresa em Requisitos de Software

Topologia de rede Ligação Ponto-a-Ponto

Sistema de Computação

MINISTÉRIO DO PLANEJAMENTO, ORÇAMENTO E GESTÃO DIRETORIA DE ADMINISTRAÇÃO COORDENAÇÃO-GERAL DE AQUISIÇÕES

Aula 03-04: Modelos de Sistemas Distribuídos

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

O mundo em que vivemos contém uma larga variedade de sinais a que somos sensíveis, tais como, o som a temperatura e a luz.

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

3. Fase de Planejamento dos Ciclos de Construção do Software

ARQUITETURA DE COMPUTADORES

Circuitos de Memória: Tipos e Funcionamento. Fabrício Noveletto

Aula Memória principal e 2. Memória de armazenagem em massa.

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Introdução. Software (Parte I)

2. Conceitos e Arquitetura de Bancos de Dados

Sistemas supervisórios

Desmistificando o Programa de Computador

O Uso da Inteligência Competitiva e Seus Sete Subprocessos nas Empresas Familiares

MINISTÉRIO DA EDUCAÇÃO

Transcrição:

Subconjunto de instruções de comunicação e sincronização entre processos em uma arquitetura multicore Laysson Oliveira Luz 1, Ivan Saraiva Silva 2 1 Departamento de Computação Universidade Federal do Piauí (UFPI) Caixa Postal 15.064 91.501-970 Teresina PI Brazil 2 Departamento de Computação Universidade Federal do Piauí (UFPI) Caixa Postal 15.064 91.501-970 Teresina PI Brazil {layssonluz,ivan}@edu.ufpi.br Abstract. Multicore programming model and multicore programming support becomes an important key on the industry and research centers. Actually, it is expected that with the increase of processing cores in a single chip, the number of process/threads executing concurrently increase proportionally. For many reasons this does not necessarily happen. This paper presents the design and implementation of a multicore architecture that integrates the communication and synchronization instruction set of IPNoSys programming model. The design was implemented in VHDL language and synthesized to FPGA technology. A programming methodology and environment were developed and tuned for programmers. Resumo. Modelo de programação e suporte a programação multicore tornaram-se chave importante na indústria e centros de pesquisa. Atualmente, espera-se que o número de processos/threads executando concorrentemente, aumente proporcionalmente com o aumento do número de núcleos. Por muitas razões isto não necessariamente acontece. Este artigo apresenta o projeto e implementação de uma arquitetura multicore baseada em MIPS que integra instruções de comunicação e sincronização do modelo de programação IPNoSys. O projeto foi implementado em VHDL e sintetizado em FPGA (Field-Programable Gate Array). Uma metodologia e um ambiente de programação foram desenvolvidos e disponibilizados para programadores. 1. Introdução O desenvolvimento de arquiteturas multicore evoluiu mais rápido que modelos de programação para este tipo de arquiteturas, dessa forma os programadores só com dificuldade conseguem explorar ao máximo tais arquiteturas. A partir de então, têm-se focado no desenvolvimento de programas paralelos, isto é, o desenvolvimento de aplicações destinadas a processadores multicore. O que exige compiladores, linguagens de programação e frameworks [McCool 2008] destinados a arquiteturas multicore, ao passo que, estas mesmas devem fornecer suporte a tais linguagens de programação paralela. Em arquiteturas multicore o modelo de memória é determinante quando se trata de programação paralela, pois isso determina se a comunicação inter-processos ocorre

por meio de troca de mensagens (memória distribuída) ou se ocorre por meio de variáveis compartilhadas (memória compartilhada)[diaz et al. 2012]. O subconjunto de instruções de comunicação e sincronização apresentado neste artigo foi implementado em um processador multicore que dispõe de uma memória compartilhada, tais instruções se baseiam, portanto, no compartilhamento de variáveis, o subconjunto de instruções basea-se no modelo de programação IPNoSys [de Araujo 2012] e inclui ordens de execução síncronas e assíncronas, sinais de sincronização, além de envio e recepção de dados. 2. Modelo de Programação IPNoSys IPNoSys é um acrônimo para Integrated Processing NoC System. É uma arquitetura de computador não convencional e modelo de programação baseado em características de rede em chip, onde os roteadores, além da função de rotear, podem também executar instruções lógico-aritméticas. Estes roteadores, denominados Routing and Processing Unit (RPU), estão conectados por intermedio de uma topologia em malha-2d e são responsáveis pela execução das aplicações. Além da malha-2d, a arquitetura IPNoSys inclui quatro Memory Access Units (MAU), distribuídas nos cantos da NoC (Network-on-Chip), as quais são responsávieis pelo gerenciamento dos acessos à memória e por injetar as aplicações na rede de RPU s. Uma das MAUs é responsável por entradas e saídas, e portanto é chamada de IOMAU. Figura 1 mostra a Arquitetura IPNoSys [de Araujo 2012]. Figura 1. Arquitetura IPNoSys Na arquitetura IPNoSys as aplicações são compiladas como um conjunto de pacotes. Cada pacote representa um processo de aplicação que deve ser executado. Cada pacote tem um par identificador (Program_ID, Packet_ID) no seu cabeçalho. A (ISA) Instruction Set Architecture de IPNoSys inclui 6 instruções de sincronização e acesso à memória (LOAD,STORE,SEND,EXEC,SYNEXEC e SYNC), as quais são executadas somente por MAU s. Portanto, quando RPU s decodificam estas instruções, elas enviam, através de um pacote de controle, para uma MAU alvo. As operações realizadas por tais instruções são: LOAD/STORE: Carrega ou grava dados da/para a memória de dados do/para o pacote atualmente sendo executado; SEND: Esta instrução é usada para enviar dados gerados pelo pacote atualmente sendo executado para o pacote esperando execução;

EXEC: Ordena uma execução assíncrona de um pacote. O pacote deve ser injetado tão logo seja possível, pela MAU recebendo a instrução EXEC; SYNEXEC: Ordena uma execução síncrona de um pacote. A execução do pacote depende do sinal de sincronização que será enviado por um número de pacotes específico, pela instrução SYNEXEC; SYNC: Sinaliza que um pacote alcançou um ponto de sincronização. O evento de sincronização é enviado para a MAU que está esperando eventos de sincronização para injetar um pacote para execução; Com tais instruções é possível desenvolver aplicações onde o programador indica o paralelismo explicitamente. Figura 2 mostra o design de uma aplicação (execução paralela de Run Length Encoding Algorithm - decodificando processo). Figura 2. Representação esquemática de uma aplicação para IPNoSys Seis pacotes compõem esta aplicação, um pacote de inicialização, quatro de execução e um pacote de finalização da aplicação. As instruçãos de comunicação e sincronização controlam o fluxo de execução e a troca de dados. O subconjunto de instruções apresentado nesta seção foi implementado em um microprocessador MIPS usando linguagem VHDL e tal microprocessador foi usado para o projeto de uma arquitetura multicore. Esta implementação será apresentada na próxima seção. 3. Arquitetura Proposta 3.1. MIPNoSys A arquitetura multicore, MIPNoSys, esquematizada na figura 3, inclui cinco núcleos de processamento. Um núcleo de processamento é definido como núcleo mestre e é responsável pelo gerenciamento de tarefas, os demais núcleos, denominados escravos, são responsáveis pela execução de tarefas (threads) enviadas pelo mestre. Os núcleos são conectados entre si e com a memória compartilhada por meio de uma rede de interconexão crossbar, por intermédio da qual dados são enviados quando instruções SEND e RECEIVE são executadas. Na memória local do núcleo mestre é armazenado o programa de inicialização da aplicação. Além da memória local, o mestre possui ainda três ROM s, cada uma contendo

um código da rotina de tratamento da trap gerada por uma das instruções de sincronização EXEC, SYNC ou SYNEXEC. MIPNoSys inclui também uma unidade de gerenciamento de trap. Esta unidade recebe os sinais de trap gerados nos núcleos escravos e, apropriadamente, interrompe o núcleo mestre. Além das traps geradas pelas instruções de sincronização, a arquitetura reconhece a trap gerada pela instrução HALT. Tal instrução é usada para indicar que um núcleo escravo terminou suas tarefas e espera uma nova do núcleo mestre. Figura 3. Arquitetura MIPNoSys 3.2. Implementação do Subconjunto de Instruções As instruções do modelo de programação IPNoSys que foram implementadas no microprocessador MIPS foram SEND, EXEC, SYNC e SYNEXEC. Estas instruções IPNoSys foram implementadas como segue: SEND : Foi implementada como um par de instruções, uma instrução SEND nãobloqueante, que coloca um dado em registrador X, e uma instrução RECEIVE bloqueante, que lê o dado armazenado no registrador X; EXEC : Esta instrução é uma ordem de execução assíncrona de uma thread ou processo, ou seja, a thread ou processo deve ser executado tão rapidamente quanto possível; SYNEXEC : Esta instrução é uma ordem de execução síncrona de uma thread ou processo, ou seja, a execução da thread ou processo depende de sinal de sincronização enviados por outras threads ou processos; SYNC : Esta instrução sinaliza que a thread ou processo atual encontraram um ponto de sincronização; Todas as instruções de sincronização geram traps e necessitam do gerenciador de traps para serem executadas. A próxima seção explica o ambiente de programação da arquitetura proposta. 4. Ambiente de programação O ambiente de desenvolvimento de aplicações para uma arquitetura ainda em fase de projeto representa um grande desafio. No caso da arquitetura apresentada neste artigo o desafio apresentou peculiaridades devido aos seguintes aspectos: O microprocessador MIPS foi utilizado como núcleo e este já apresenta características próprias referentes a programação; Foram acrescentadas instruções a este microprocessador, oriundas de uma

outra arquitetura com modelo de programação paralelo; As instruções acrescentadas intrinsecamente fazem referência a threads ou processos, requerendo portanto auxílio de um sistema operacional; A arquitetura deve ser validada não só funcionalmente, mas também quanto a sua programabilidade visando o desenvolvimento de aplicações paralelas. Tais peculiaridades conduziram ao desenvolvimento de um ambiente e metodologia de desenvolvimento de aplicações que: Utiliza software pré existente tal como o Cross-Compiler C to MIPS disponível no GCC da GNU; Utiliza software desenvolvido no escopo deste trabalho como o conversor ELF2mif; Considera a existência de múltiplas threads ou processos onde cada um deles pode ser desenvolvido separadamente em um arquivo.c ; Dispensa o uso de um sistema operacional (SO), mas considera a existência de funções de SO representadas na forma de um arquivo.h ; possibilita a configuração da memória compartilhada por intermédio de um script. Como resultado da compilação de cada arquivo C, o Cross-Compiler gera um arquivo ELF (Executable and Linking Format), que pode ser ligado á outro arquivo para executar. Entretanto, neste caso, interessa a simulação da arquitetura em dispositivos reconfiguráveis, que é uma tecnologia que permite o desenvolvimento de protótipos de hardware. Assim faz-se necessário converter os arquivos ELF para arquivos MIF (Memory Initialization File), utilizável nesta tecnologia. Portanto, desenvolveu-se uma ferramenta para transformar este arquivo em um MIF, o qual é suportado pelos softwares de compilação e simulação da Altera, Quartus II e ModelSim. 5. Experimentos e Resultados Afim de avaliar o subconjunto de instruções implementado e explorar ao máximo a capacidade do processador, foram escolhidas duas aplicações: Multiplicação de Matrizes e o algotimo de alinhamento de cadeias genéticas chamado Smith-Walterman [Zhang et al. 2002]. Essas aplicações são distintas no que diz respeito ao paralelismo. Na multiplicação de matrizes o cálculo de cada elemento da matriz resultante é completamente independente do cálculo dos demais elementos. O algoritmo de Smith-Waterman também calcula uma matriz de similaridades, entretanto, o cálculo do elemento H(i,j) depende do cálculo dos elementos H(i-1,j), H(i,j-1) e H(i-1, j-1). Nas figuras 4 e 5, a execução do algoritmo de Smith-Waterman demora quase 350000 ciclos, enquanto que a multiplicação de matrizes leva 400000. Em Smith- Waterman um núcleo espera por outros processadores para calcular um elemento da matriz de similaridades, o que ocorre de modo sistemático sem um sincronismo baseado em interrupções, como na multiplicação de matrizes, devido a isso, o algoritmo de multiplicação de matrizes demora um pouco mais para disparar a tarefa final, mas ambos demonstram a eficiência do sistema de comunicação e sincronização. 6. Conclusão Este trabalho tem como objetivo apresentar um subconjunto de instruções de comunicação e sincronização inter-processos em uma arquitetura multicore, MIPNoSys, e por meio dos experimentos e resultados obtidos observa-se, além da funcionalidade, a facilita para desenvolver aplicações para MIPNoSys, com a metodologia e o ambiente de programação desenvolvidos.

Figura 4. Gráfico da simulação de multiplicação de matrizes Figura 5. Gráfico da simulação de Smith-Walterman Como projeto futuro, fica o compromisso de aumentar a quantidade de escravos da arquitetura MIPNoSys, afim de obter melhor desempenho durante a execução das aplicações e aprimorar a comunicação entre os núcleos. Os experimentos mostram grande ociosidade do núcleo mestre, períodos de tempo nos quais o poder de processamento do núcleo mestre será melhor explorado. Referências de Araujo, S. R. F. (2012). Projeto De Sistemas Integrados De Proposito Geral Baseados Em Redes Em Chip - Expandindo As Funcionalidades Dos Roteadores Para Execucao De Operacoes: A Plataforma Ipnosys. PhD thesis, Universidade Federal do Rio Grande do Norte. Diaz, J., Munoz-Caro, C., and Nino, A. (2012). A survey of parallel programming models and tools in the multi and many-core era. Parallel and Distributed Systems, IEEE Transactions on, 23(8):1369 1386. McCool, M. (2008). Scalable programming models for massively multicore processors. Proceedings of the IEEE, 96(5):816 831. Zhang, F., Qiao, X.-Z., and Liu, Z.-Y. (2002). A parallel smith-waterman algorithm based on divide and conquer. In Algorithms and Architectures for Parallel Processing, 2002. Proceedings. Fifth International Conference on, pages 162 169.