Programação de Sistemas



Documentos relacionados
Programação de Sistemas

Symmetric Multiprocessing Simultaneous Multithreading Paralelismo ao nível dos dados

Hardware Fundamental

Sistemas de Computação e Desempenho (UCE Computação Paralela Distribuída)

Arquitetura de Computadores II

Universidade Federal do Rio de Janeiro Pós-Gradução em Informática. Microarquiteturas de Alto Desempenho. Multithreading. Gabriel P. Silva.

Instituto Superior Técnico MEEC/MEAR. Programação de Sistemas

Ricardo Gonçalves 2013/2014. Arquitecturas Multicore

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

Organização de Computadores 2005/2006 Processadores Intel

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução;

periféricos: interfaces humano-computador (HCI) arquivo de informação comunicações

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

Programação em Memória Compartilhada com OpenMP

Programação Paralela com Troca de Mensagens. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação de Sistemas

Imagem retirada de documentações de treinamentos oficiais INTEL

Processadores Tecnologia de Multiprocessamento VS + Núcleos. Claudio Damasceno prof.claudiodamasceno@hotmail.com

Sistemas Operacionais I

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Hardware Avançado. Laércio Vasconcelos Rio Branco, mar/2007

Organização de Computadores 2005/2006 Processadores Intel

Programação de Sistemas

Programação de Sistemas

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES

Redes de Acesso Telefone VoIP WiFi baseado em Windows Mobile

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

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO


Organização de Computadores Como a informação é processada?

Prof.: Roberto Franciscatto. Capítulo 1 Introdução

Prof. Sandrina Correia

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

Jorge Barbosa, FEUP-DEI 2008

Manutenção de Computadores Montagem de microcomputadores: Entendendo melhor os processadores. Professor: Francisco Ary

OpenMP. Mestrado em Ciência da Computação Introdução ao Processamento Paralelo e Distribuído Prof. Dr. Adenauer Corrêa Yamin Mestranda: Nelsi Warken

Programação Concorrente

Microarquiteturas Avançadas

CPU Unidade Central de Processamento. História e progresso

Evolução das CPUs: Dual e Quad Core

Introdução à estrutura e funcionamento de um Sistema Informático

CENTRAL PRCESSING UNIT

Programação Paralela e Distribuída (DCC/UFRJ)

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

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

FACULDADE PITÁGORAS PRONATEC

IDENTIFICAÇÃO MANUTENÇÃO

Arquitetura de processadores: RISC e CISC

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

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0

Sistemas Operativos I

Marcos da Arquitetura de Computadores (1)

Organização e Arquitetura de Computadores I. de Computadores

7 Processamento Paralelo

Estudo Qualitativo e Quantitativo de Linguagens Paralelas para Arquiteturas Multicore

Surgimento dos Processadores Multicore. Prof. Dr. César A. F. De Rose

A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores

Técnicas de Manutenção de Computadores

SISTEMAS OPERACIONAIS

(Aula 15) Threads e Threads em Java

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

XPontos. Manual de Instruções

Informática Básica. Arquitetura de Computadores. Marcelo Diniz

Hardware - Microprocessador

Mochila Binária com OpenMP

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

11- Tornar transparente para o processador os detalhes de operação e controle dos dispositivos periféricos.

Capítulo 1 Introdução

Sistemas Operativos 2005/2006. Arquitectura Cliente-Servidor Aplicada A Uma Biblioteca. Paulo Alexandre Fonseca Ferreira Pedro Daniel da Cunha Mendes

Capítulo 8. Software de Sistema

Controle de granularidade de tarefas em OpenMP

MULTICORE. Sávio R. A. dos Santos Rosa IC - UNICAMP RA Bruno Cardoso IC - UNICAMP RA Tiago M. Fernandes IC - UNICAMP RA

Nível do Sistema Operacional

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba

2007 Nokia. Todos os direitos reservados. Nokia, Nokia Connecting People, Nseries e N77 são marcas comerciais ou marcas registadas da Nokia

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França

Organização de Computadores 2005/2006 Processamento Paralelo

Capítulo 8 Arquitetura de Computadores Paralelos

Computação Heterogênea Programação paralela, clusters e GPUs

Introdução à Computação. Conceitos básicos sobre computadores. ISEP DEI, Angelo Martins 2006 Conceitos básicos sobre computadores - 1

Placa-Mãe. Christian César de Azevedo

Barramentos 17/10/2011. Redes de Computadores. Arquitetura de Computadores FACULDADE PITÁGORAS DE TECNOLOGIA FACULDADE PITÁGORAS DE TECNOLOGIA.

Programação Sistemas

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

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

CONHECIMENTOS ESPECÍFICOS TÉCNICO DE LABORATÓRIO / ÁREA INFORMÁTICA

1.3. Componentes dum sistema informático HARDWARE SOFTWARE

CPU - Significado CPU. Central Processing Unit. Unidade Central de Processamento

Fault Tolerance Middleware for Cloud Computing

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Disciplina: Redes de Comunicação. Curso Profissional Técnico de Gestão e Programação de Sistemas Informáticos. Setembro 2013

slide 0 Algoritmos Paralelos

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

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Estrutura e funcionamento de um sistema informático

Desenvolvimento de Programas Paralelos para Máquinas NUMA: Conceitos e Ferramentas

SSC510 Arquitetura de Computadores. 12ª aula

Introdução à Informática

Transcrição:

Programação de Sistemas Multi-núcleos Programação de Sistemas Core : 1/19

Introdução (1) [Def] núcleo ( core ) é uma unidade de processamento. O multicore (Dual, Quad,...) possui 2 ou mais núcleos que residem em diferentes pastilha de silício ( chip ) encapsuladas no mesmo circuito e ligadas por um barramento local residem na mesma pastilha de silício ( chip ). Esta é a forma mais usada, porque os barramentos são mais lentos. Teoricamente um Dual core tem eficiência dupla de um núcleo singular. Na realidade, os ganhos só chegam aos 50% Programação de Sistemas Core : 2/19

Introdução (2) Calendarização Primeiro processador com dois núcleos, Power 4, criado pela IBM em 2000. Primeiro Dual core da Intel distribuído em Jan 2006. O MIT desenvolveu o Tile64 com 64 núcleos e comercializado pela empresa Tilera. Processadores multi-núcleo são MIMD: executam threads distintas (Multiple Instructions), operando em diferentes partes de memória (Multiple Data). Programação de Sistemas Core : 3/19

Arquitectura multi-núcleo (1) 1. Os computadores clássicos são de núcleo singular. Single core 2. Múltiplos núcleos permitem tornar os computadores mais potentes. 1º Core 2º Core 3º Core 4º Core Programação de Sistemas Core : 4/19

Arquitectura multi-núcleo (2) Os núcleos partilham a memória central. As memórias cache são L1 privadas L2 privadas nalguns núcleos, partilhadas noutros. O suporte de várias núcleos é designado SMP-Symmetric Multiprocessing Disponibilizado no kernel 2.4.17 Usado por omissão no Ubuntu 7.10 e Fedora Core 6. As threads correm de forma independente em cada núcleo. Programação de Sistemas Core : 5/19

Bus Bus L2 Cache and Control L2 Cache and Control Arquitectura multi-núcleo (3) L1 D-Cache D-TLB L1 D-Cache D-TLB Integer Floating Point Integer Floating Point Schedulers Schedulers Uop queues Uop queues Rename/Alloc Rename/Alloc BTB Trace Cache ucode ROM BTB Trace Cache ucode ROM Decoder Decoder BTB and I-TLB Thread 1:floating point BTB and I-TLB Thread 2:integer op Programação de Sistemas Core : 6/19

Coerência de cache (1) Possuindo cada núcleo memória cache privada, coloca-se o problema de coerência. Exemplo: seja a variável i, com valor 125. 1) Núcleos 1 e 2 lêm conteúdo de i. Core 1 Core 2 i=125 i=125 i=125 Memória central Programação de Sistemas Core : 7/19

Coerência de cache (2) 2) Núcleo 1 actualiza i para 20. Core 1 Core 2 i=20 i=125 i=20 Memória central 3) Núcleo 2 lê valor de i da sua cache, que não é coerente! Soluções: ao alterar uma variável, o núcleo envia a todos os outros núcleos uma indicação de não validade (menos tráfego nos casos de múltiplas alterações). o núcleo envia a todos os outros núcleos o valor actualizado. Programação de Sistemas Core : 8/19

Estado de núcleos O leitor pode aceder no Windows, através do gestor de tarefas, ao estado dos dois núcleos. Core 1 Core 2 Programação de Sistemas Core : 9/19

Vantagens/Inconvenientes do SMP As aplicações que beneficiam do SMP: Servidores de bases de dados. Servidores Web. Compiladores. Aplicações científicas. Compressão de áudio e vídeo. Há aplicações para as quais o SMP pode ser mais lento: Processadores de texto. Jogos. Programação de Sistemas Core : 10/19

Multithreading (1) O pipeline do núcleo pode ficar parado ( stalled ) devido a: Espera do resultado da unidade aritmética (ex: multiplicação em vírgula flutuante é muito demorada). Espera de chegada de um dado vindo da memória. Na arquitectura SMT-Simultaneous Multithreading, várias threads operam simultaneamente no mesmo núcleo. Uma thread opera inteiro, outra opera vírgula flutuante. Atenção! Duas threads não podem efectuar, no mesmo núcleo, o cálculo de inteiros ao mesmo tempo! Tempos mortos das unidades do pipeline de um fio de execução podem ser ocupados por outro fio de execução. Programação de Sistemas Core : 11/19

Bus L2 Cache and Control Multithreading (2) L1 D-Cache D-TLB Integer Floating Point Schedulers BTB Uop queues Rename/Alloc Trace Cache ucode ROM Etapas de execução de uma instrução Decoder BTB and I-TLB Thread 2: integer operation Thread 1: floating point Programação de Sistemas Core : 12/19

Multithreading (3) A Intel implementou SMT (primeiro no Xeon em 2002, depois no Pentium 4), designada por Hyper-Threading. Nota: Segundo a Intel, implementação do HT melhorou desempenho 15%-30% para aumento na superfície de apenas 5%. Cada núcleo possui Processadores lógicos AS-Architecture State, cada um com registos de uso geral, cache L1 de 16KB, controlador de interrupções APIC. Um processador físico comum, com barramento de sistema, cache L2 de 1MB, ALU e FPU. AS Núcleo AS Recursos de execução Programação de Sistemas Core : 13/19

Programação paralela (1) Neste capítulo, a concorrência (processos e fios de execução) foi programada por funções do sistema operativo. Esta abordagem revela alguns inconvenientes: Exige conhecimentos especializados de programação, fora do âmbito de trabalho de alguns utilizadores (físicos, meteorologistas, projectistas de automóveis,...). Dirigidos para multiprocessamento, pouco praticáveis para sistemas paralelos e distribuídos. Uma alternativa é mascarar, o mais possível, o paralelismo no compilador ou na linguagem de programação. Programação de Sistemas Core : 14/19

Programação paralela (2) 1. Compiladores estendidos detectam paralelismo em programas sequenciais e produzam programas executáveis em paralelo. Existem vários tipos de paralelismo Dados: mesma operação aplicada a dados distintos for(i=0;i<10;i++) a[i]=b[i]+c[i]; Funcional: operações distintas exercidas sobre dados distintos a=2; b=3; m=(a+b)/2; s=(a^2+b^2)/2; 2. Linguagem de programação (ex: FORTRAN e C) são estendidas com APIs dedicadas a determinadas arquitecturas. Programação de Sistemas Core : 15/19

Programação paralela (3) A. OpenMP (http://www.openmp.org) API orientada a aplicações científicas ( number crunching ). Particularmente adaptada a arquitecturas de memória partilhada multi-plataforma (Unix e Windows). Programação de Sistemas Core : 16/19

Programação paralela (4) OpenMP estende compiladores muito divulgados (gcc,visual Studio) através de directivas pragma (C) ou comentários especiais (FORTRAN). Directivas de paralelização (região, for) Directivas de ambiente de dados (partilhado, privado, threadprivate, reduction,...) Directivas de sincronização (barreiras, critical,...) Exemplo: lançadas threads, cada uma executando um subconjunto de iterações. Todas as threads esperam no final do ciclo for. #include <omp.h> int main() { /* */ #pragma omp parallel #pragma omp for for( ) { } Programação de Sistemas Core : 17/19

Programação paralela (5) B. MPI-Message Passing Interface (http://http://www-unix.mcs.anl.gov/mpi/) Baseado no envio de mensagens Adaptada a arquitecturas de memória distribuída, pode também ser usado em arquitecturas de memória partilhada. O MPI tem de ser inicializado, por forma a serem abertas todas as conexões TCP entre os processadores. Programação de Sistemas Core : 18/19

Programação paralela (6) O programa possui o seguinte formato: #include <mpi.h> int main(int argc,char **argv) { /* */ MPI_Init(&argc,&argv); /* inicializa MPI */ MPI_Comm_size(MPI_COMM_WORLD,&size); /* indica número processos*/ /* */ /* envia mensagem */ MPI_Send(msg,strlen(msg)+1,MPI_CHAR,dest,tag,MPI_COMM_WORLD); /* recebe mensagem */ MPI_Recv(message,100,MPI_CHAR,source,tag,MPI_COMM_WORLD,&status); } MPI_Finalize(); /* finaliza MPI */ /* */ Programação de Sistemas Core : 19/19