Arquiteturas de Computadores - Instituto de Computação

Preview:

Citation preview

Arquiteturas de Computadores

Fontes dos slides: Livro Patterson e Hennessy, Quantitative Approach e nas notas de aula do Prof. Yonghong Yan do curso CSCE 513 Computer Architecture

Paralelismo no nível de threads

Lei de Moore

Tendência a longo prazo da densidade de transistores por circuito integrado

Número de transistores / in2 dobra a cada ~ 18-24 meses

O que fazer com tantos transistores? Otimização da execução de um único fluxo de instruções através

de: Pipelining

Sobrepõe a execução de várias instruções Exemplo: todas as arquiteturas RISC; Intel x86

Execução fora de ordem: Permite que as instruções ultrapassem umas às outras na ordem de

execução de acordo com dependências de código (RAW, WAW, WAR) Exemplo: todos os processadores comerciais (Intel, AMD, IBM,Oracle)

Previsão de desvios e execução especulativa: Reduz o número de ciclos de paralisação da CPU devido a desvios não

resolvidos Exemplo: (quase) todos os processadores comerciais

O que fazer com tantos transistores? Processadores de múltiplas emissões:

Permitem que várias instruções iniciem a execução por ciclo de relógio

Arquiteturas superescalares (Intel x86, AMD,…) vs. VLIW Arquiteturas VLIW / EPIC:

Permitem que os compiladores indiquem instruções independentes em cada pacote emitido

Exemplo: Intel Itanium Unidades SIMD:

Permitem a expressão e execução eficientes de operações com vetores

Exemplo: VSIM, SSE - SSE4, GPU

Limitações para otimizar a execução de um único fluxo de instruções Problema: dentro de um único fluxo de instruções,

não encontramos instruções independentes suficientes para executar simultaneamente devido a dependências de dados limitações da execução especulativa em muitos ramos dificuldades para detectar dependências de acesso à

memória entre as instruções (análise de alias) Consequência: número significativo de unidades

funcionais podem ficar ociosas a qualquer momento Pergunta: Podemos talvez executar instruções de

outro fluxo de instruções Outra thread? Outro processo?

Copyright © 2012, Elsevier Inc. All rights reserved.

Paralelismo no nível de threads Problemas para executar instruções de vários threads ao mesmo

tempo As instruções em cada thread podem usar os mesmos registradores Cada thread tem seu próprio contador de programa

O gerenciamento de memória virtual permite a execução de várias threads e compartilhamento da memória principal

Quando alternar entre as diferentes threads: Multithreading de granularidade fina: alterna entre todas as

instruções Multithreading de granularidade grossa: alterna apenas em paradas

caras (por exemplo, falta de cache do nível 2)

Potência e paralelismo no nível de instrução A frequencia do relógio da CPU começou a

não subir tão rápido a partir de 2000 Limitação de paralelismo no nível de instrução Consumo de potência e dissipação de calor

Taxonomia de Flynn

https://en.wikipedia.org/wiki/Flynn%27s_taxonomy

Exemplos de máquinas MIMD Multiprocessador de memória

compartilhada simétrica (SMP) Vários processadores em caixa

comunicação através de memória compartilhada

Chips multicores atuais possuem esta arquitetura

Todo processador executa uma cópia do SO

Multiprocessador de memória compartilhada Distribuída/ Não Uniforme Vários processadores

Cada um com memória local Rede escalável

“SO” extremamente leve no nó que fornece serviços simples Escalonamento / sincronização Host acessível pela rede para E / S

Cluster Muitas máquinas independentes

conectadas em rede Comunicação através de

mensagens

Symmetric Multiprocessors (SMP) Pequeno número de núcleos

Normalmente oito ou menos, e não mais que 32 na maioria dos casos

Todos os processadores compartilham uma única memória e tem o mesmo tempo de acesso a ela Daí o termo simétrico.

Todos os multicores atuais são SMPs

Também chamados de multiprocessadores com acesso uniforme à memória (UMA) Todos os processadores

têm latência uniforme

Multiprocessadores com memória compartilhada centralizada Processadores multinúcleo (multicore)

Normalmente conectados por um cache, Sistemas SMP anteriores eram tipicamente conectados através da

memória principal Intel X7350 quad-core (Tigerton)

Cache L1 privado: instrução de 32 KB, dados de 32 KB Cache L2 compartilhado: cache unificado de 4 MB

Multiprocessadores com memória compartilhada centralizada• Configuração do Intel X7350 quad-core (Tigerton)

Multiprocessadores com memória compartilhada distribuída (DSM) Grande número de processadores

64 a 1000 Memória distribuída

Memória remota vs local Latência longa vs curta

Rede de interconexão Largura de banda, topologia, etc

Acesso à memória não uniforme (NUMA) Cada processador pode possuir E / S local

Multiprocessadores com memória compartilhada distribuída Reduz o gargalo de memória em comparação com

SMPs Mais difícil de programar com eficiência

Por exemplo, política do primeiro toque: o item de dados estará localizado na memória do processador que usa um item de dados primeiro

Para reduzir os efeitos do acesso não uniforme àmemória, caches são frequentemente usados ccNUMA: arquiteturas com acesso à memória não

uniforme coerente O maior exemplo atual: SGI Origin com 512

processadores

Multiprocessadores com memória compartilhada SMP e DSM são todos multiprocessadores

de memória compartilhada UMA ou NUMA

Multicores são SMPs com memória compartilhada

A maioria das máquinas com várias CPUs éDSM NUMA

Métrica de desempenho

Aceleração (Speedup): quanto mais rápido um problema éexecutado em p processadores em comparação com 1 processador?

Aceleração ótima: S (p) = p (aceleração linear) Eficiência Paralela: Aceleração normalizada pelo

número de processadores

Ótimo: E (p) = 1,0

Desafios da programação paralela

Paralelização limitada dos programas Suponha que desejamos uma aceleração de

80 utilizando 100 processadores. Qual deve ser a fração sequencial deste programa?

0,25% pode ser sequencial

Recommended