Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Aula 1: Motivação e Conceitos Básicos Professor: Leandro Marzulo Arquiteturas Avançadas de Computadores Objetivos do Curso 2 Apresentar técnicas e conceitos usados no desenvolvimento de processadores modernos Paralelismo em nível de instrução (ILP) Pipelining Branch prediction Execução de instruções fora-de-ordem (Tomasulo) Superescalares Paralelismo em nível de threads (TLP) Multiprocessadores Protocolos de coerência de cache APIs de programação paralela Entre outros... Site da disciplina 3 www.lam.ufrj.br/moodle Fazer o cadastro no site Colocar nome completo Fazer inscrição na disciplina Chave de acesso: GRUPOXX_AA_UERJ_2012_2 Substituir XX pelo número do seu grupo. Material Atividades Avisos Fórum Dúvidas Livro texto Organização e Projeto de Computadores – A Interface Hardware/Software David A. Patterson e John L. Henessy 3ª Edição Editora Campus 4ª Edição somente em Inglês Avaliação 5 2 Provas + reposição Reposição fechada (só quem faltar pode fazer) Trabalhos Práticos (em grupos de ATÉ 5 alunos) Listas de Exercícios Entrega pelo site Quem não tiver presença precisa passar direto ou será reprovado por faltas (não pode fazer PF) Média 7!!! Lei de Moore 6 “A densidade de transistores nos circuitos integrados dobra a cada 2 anos.” “Moore’s Law: Raising the Bar” (Intel Corporation 2005) Lei de Moore 7 Mais Transitores = ? 8 Conectividade # de conexões cresce quadraticamente com o # de unidades funcionais Dissipação de calor Gerência do uso de energia Sincronização (clock) Variabilidade do substrato (silício) => problemas interligados AMD OverDrive 9 Intel i7 TurboBoost 10 Multicores 11 Muitos núcleos Forma de aproveitar a maior densidade de transistores => problemas continuam Intel i7 12 AMD 6200 – Interlagos – 16 cores 13 Cores mais simples 14 Graphics Processing Units (GPUs) Aceleradores gráficos NVIDIA, AMD/ATI General Purpose GPUs (GPGPUs) Programáveis em subconjunto do C CUDA (NVIDIA) OpenCL (NVIDIA e ATI) NVIDIA Tesla M2090 15 Processamento sísmico, CFD, CAE, computação financeira, química e física computacional, análise de dados, processamento de imagem de satélite, modelagem climática Pico de Ponto flutuante precisão dupla: 665 Gigaflops Pico de Ponto flutuante precisão simples: 1331 Gigaflops Memória : 6GB Cuda Cores: 512 Memory Wall 16 Em outra direção... 17 Várias Máquinas Clusters Rede local (uso de switches) Grades computacionais (grids) Distanciamento geográfico (Internet) Clusters 18 Agregado de máquinas off-the-shelf realizando processamento paralelo Beowulf (NASA, 1994) NoW/CoW – Network/Cluster of Workstations (Berkeley, 1996) Clusters 19 San Diego Supercomputing Center Clusters - Refrigeração 20 Top 500 (http://www.top500.org) 21 GPGPUs Junho/2012 Top 500 - Brasil 22 Clusters 23 Clusters 24 Grids 25 Grade Computacional (Grid computing) – analogia com a malha elétrica: usuários podem ceder ou consumir ʻenergiaʼ computacional Grids 26 União voluntária SETI@home (Search for ET Intelligence) PS3grid/GPUgrid Grids 27 Tarifação: cloud computing Amazon Elastic Compute Cloud (Amazon EC2) Não somente infraestrutura (IaaS), como também software (SaaS) e plataformas (PaaS) Grids 28 Federação EELA e EELA-2, E-science grid facility for Europe and Latin America! www.eu-eela.eu PlanetLab, Global, consortium acadêmico e industrial (Intel, Google, HP, AT&T, France Telecom etc) norte-americano (Berkeley, Princeton e Washington gerem o consortium) www.planet-lab.org Terminologia 29 Processo Thread Paralelismo Concorrência Distribuição Multiprocessamento Multiprogramação Algoritmo distribuído Sistema distribuído Definições 30 Processo “Um programa em execução” _ A. S. Tanenbaum. “A entidade que pode ter sua execução atribuída a um processador” _ W. Stallings. Processo 31 Criação de Processos 32 32 #include <sys/types.h> #include <stdio.h> #include <unistd.h> int main() { pid_t pid; pid = fork(); if (pid < 0) { //erro fprintf(stderr, “Fork falhou!\n”); return 1; } else if (pid == 0) { //processo filho execlp(“/bin/ls”, “ls”, NULL); } else { //processo pai wait(NULL); printf(“Filho terminou!\n”); } return 0; } fork() exec() wait() filho (pid ==0) pai (pid > 0) exit() retoma a execução Definições 33 Threads Linhas de execução, também chamadas lightweight processes. Processos leves que compartilham espaço de endereçamento de memória. Multi-thread 34 Com mais detalhes... 35 código dados arquivos ... registradores pilha registradores pilha registradores pilha APIs de Threads Pthreads (POSIX Threads) Win32 Java OpenMP Intel TBB (Thread Building Blocks) 36 Definições 37 Paralelismo Designa situação em que coisas acontecem ao mesmo tempo. Concorrência Designa situação em que há competição por recursos, indicando potencial paralelismo. Havendo recursos suficientes, haverá paralelismo. Definições 38 Distribuição (vs Centralização) Designa descentralização do controle (da administração dos recursos por parte dos processos). Distribuição (Geográfica) Pode existir sob controle hierarquizado ou mesmo centralizado. Definições 39 Multiprocessamento Vários processos (threads) executando em paralelo. Pressupõe a disponibilidade de mais de um processador (núcleo). Multiprogramação" Vários programas compartilhando a mesma máquina. Conceito ligado aos de compartilhamento de tempo (time-sharing), suspensão de execução e concorrência. Definições 40 Algoritmo distribuído Envolve elementos cooperando através de troca de informações, sem uma orquestração centralizada. O código de cada elemento pode ser o mesmo, ou podem existir diferenças. Sistema distribuído “Uma coleção de computadores independentes que aparece para os usuários do sistema que os rege como um único computador (entidade)” A. S. Tanembaum. " Dualidades 41 No mundo real Bem - Mal Matéria - Energia Yin - Yang Trabalho - Lazer Na Filosofia “Informação é diferença que faz diferença” G. Bateson. Steps to an Ecology of Mind, Chicago: University of Chicago Press, 2000. Na Computação (digital) O BIT – 0 ou 1 Dualidades 42 Ainda na Computação Hardware - Software Real - Virtual Sequencial - Paralelo Centralizado - Distribuído Memória - Processador Dado - Processamento Mono - Multi Mensagem - Passo (na rede) Comunicação - Execução Síncrono - Assíncrono
Compartilhar