Buscar

Arquiteturas Avançadas de Computadores

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

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando