Você está na página 1de 35

Computação de Alto

Desempenho

Motivação para o Uso do Paralelismo


Prof. Ricardo Augusto Pereira Franco

Baseado no material do prof. Wellington Santos Martins


Sumário
● Introdução

● Computadores atuais e tendências

● Computadores com aceleradores

● Considerações finais

2
Introdução

● Recaptulação:
○ Evolução da Computação
○ Componentes de um computador
○ Balanço do desempenho
○ Aprimorar o desempenho por meio da programação paralela

3
Introdução
● Há uma busca implacável de velocidade pelos fabricantes de chip de
processador
● A capacidade de processamento do processador cresceu em uma
velocidade espantosa
○ Mas os outros componentes críticos do computador não a acompanharam
○ O resultado é a necessidade de procurar o balanço do desempenho
● Os projetistas de processadores deverão aparecer com técnicas ainda
mais elaboradas
○ Realização de pipeline
○ Predição de desvio
○ Execução superescalar
○ Análise de fluxo de dados
○ Execução especulativa

4
Introdução
● Evolução da Arquitetura Sequencial

5
Introdução
● Evolução da Arquitetura Sequencial
○ Adição do pipeline

6
Introdução
● Evolução da Arquitetura Sequencial
○ Adição do pipeline
■ A instrução pode ser dividida em vários
estágios
■ O pipeline é semelhante ao uso de uma
linha de montagem numa planta industrial
■ Quando um estágio foi executado,
executa-se o estágio da próxima instrução
- prefetch (busca antecipada)

7
Introdução
● Evolução da Arquitetura Sequencial
○ Adição do pipeline
■ Diagrama de tempo para operação do
pipeline de instrução:
● Find instruction
● Decode instruction
● Calculate operands
● Fetch operands
● Execute instruction
● Write Operands

8
Introdução
● Evolução da Arquitetura Sequencial
○ Adição de Memória Cache e Lógica de Predição de Desvios

9
Introdução
● Evolução da Arquitetura Sequencial
○ Adição de Memória Cache e Lógica de Predição de Desvios
■ O processador antecipa o código de instrução tentando
predizer quais desvios ou grupos de instruções
provavelmente serão processados a seguir
■ Se o processador prediz certo a maior parte do tempo,
ele pode pré-buscar as instruções corretas, de modo
que seja mantido ocupado
■ Ex.: previsão nunca tomada e previsão sempre tomada

10
Introdução
● Evolução da Arquitetura Sequencial
○ Lógica Fora de Ordem

11
Introdução
● Evolução da Arquitetura Sequencial
○ Lógica Fora de Ordem
■ Essa parte do processador reordena
as micro-ops para permitir que elas
sejam executadas assim que seus
operandos de entrada estiverem
prontos
■ Ex.: instrução 5 ser executada antes
da instrução 3

12
Introdução
● Evolução da Arquitetura Sequencial
○ Execução superescalar
■ Refere-se a uma máquina que é projetada
para melhorar o desempenho da execução
de instruções escalares
■ A essência é executar instruções
independente e concorrentemente em
pipelines diferentes
■ O conceito pode ser ainda mais explorado
permitindo que as instruções sejam
executadas em uma ordem diferente da
ordem do programa

13
Introdução
● Evolução da Arquitetura Sequencial
○ A arquitetura sequencial evoluiu no sentido de otimizar
a execução de uma (ou algumas poucas) threads;
○ Threads são linhas de execução de códigos –
está associado a um processo – associado a um
programa
○ À medida que o processador se tornou mais rápido, a
memória principal não conseguiu acompanhar este
avanço
○ O pipeline, cache, predição de desvios, execução
superescalar e execução fora de ordem possibilitaram
diminuir esta latência de memória e, desta forma,
permitir uma alimentação contínua de instruções para o
processador
○ Projeto visando otimizar a latência
14
Introdução
● Relógio do Computador (clock)
○ As operações do computador são cadenciadas seguindo um sinal de relógio (clock).
○ Operações como busca e decodificação de uma instrução, realização de uma
operação aritmética e assim por diante, são controladas por um clock do sistema
○ Normalmente, todas as operações começam com o pulso do clock
■ Assim, no nível mais fundamental, a velocidade de um processador é ditada
pela frequência de pulso produzida pelo clock, medida em ciclos por segundo,
ou Hertz (Hz)

15
Introdução
● Relógio do Computador (clock)
○ Geralmente, os sinais de clock são gerados por um cristal de quartzo, que gera
uma onda de sinal constante enquanto uma tensão é aplicada
■ Essa onda é convertida em um stream de pulsos de voltagem digital
■ Ex.: um processador de 1 GHz recebe 1 bilhão de pulsos por segundo
■ A taxa de pulsos é conhecida como frequência do clock ou velocidade de clock
■ Um incremento (ou pulso) do clock é conhecido como um ciclo de clock ou um período
do clock

16
Introdução
● Limite de frequência?
○ A velocidade da luz é de aproximadamente 30 cm/ns
○ Sinais viajam a uma fração da velocidade da luz (digamos, 1/3)
○ Se os sinais devem viajar 1 cm durante a execução de uma instrução, esta instrução
vai levar pelo menos 0.1 ns; assim, desempenho será limitado a 10 GIPS
○ Esta limitação é amenizada pela miniaturização, métodos arquiteturais como
memória cache, etc.; entretanto, um limite fundamental existe

17
Computadores atuais e tendências
● Modelos disponíveis

○ Processador “mais rápido do mundo” (curiosidade):


■ Intel i9-12900KS - 16 núcleos; clock 5,5 GHz e consumo de 150 W
■ AMD Ryzen 7 5800X3D - 8 núcleos; clock 4,5 GHz e consumo de 105 W

18
Computadores atuais e tendências
● Revolução Multicore - CPU
○ Xeon 2006: Dual-core CPUs
○ Xeon 2007: Quad-core CPUs
○ Xeon 2010: 8-core CPUs
○ Xeon 2015: 22-core CPUs
○ Xeon 2017: 32-core CPUs
○ Xeon 2020: 64-core CPUs
■ Uso de até 16 soquetes num servidor: Até 1024 núcleos por máquina!
■ Hyperthreading (núcleos virtuais) [4x]: 4096 threads por máquina!

19
Computadores atuais e tendências

20
Computadores atuais e tendências

21
Computadores atuais e tendências
● Multicore
○ Ter diversos processadores em um único chip, é
chamado de múltiplos cores ou multicore
○ Colocar diversos processadores no chip, com
uma grande cache compartilhada
○ Proporciona o potencial para aumentar o
desempenho sem aumentar a frequência do
clock
○ Conforme a densidade da lógica dos chips
continua aumentando, a tendência tanto para
mais cores como para mais cache em um chip
único continua (2 cores, 4, cores, 8 cores, …)

22
Computadores atuais e tendências
● Multicore
○ Como a cache se tornou maior, o senso de
desempenho criou dois e, então, três níveis de
cache em um chip
○ A cache de primeiro nível dedicada a um
processador individual e os níveis 2 e 3 sendo
compartilhados por todos os processadores
■ Agora, é comum que a cache de segundo
nível também seja privada para cada core
○ Produção de processador single core está fadada
ao fim

23
Computadores atuais e tendências
● Como explorar CPUs Multicore?
○ Delegar ao Sistema Operacional a tarefa de atribuir programas (completos) aos
núcleos - programa sequencial
○ Usar bibliotecas/frameworks que automaticamente distribuem partes da aplicação -
programa sequencial
○ Usar compiladores que geram código paralelo (automaticamente) - programa
sequencial
○ Dividir o seu programa em blocos funcionais independentes (associar as threads aos
blocos) - programa sequencial
○ Desenvolver algoritmos e programas paralelos - programa paralelo

24
Computadores com aceleradores
● Unidade de Processamento Gráfico (Graphics Processing Unit - GPU)
○ Jogos e Computação Gráfica
■ Renderiza-se de forma paralela para ter uma resposta rápida

25
Computadores com aceleradores
● Evolução da GPU moderna
○ A CPU realizava todo o processamento gráfico

26
Computadores com aceleradores
● Evolução da GPU moderna
○ Dividir a unidade de execução em várias partes, cada um com seus registradores
○ Várias Unidades Lógica Aritmética (ALU)
■ Cada unidade possui seu contexto (registradores)
■ Demanda mais espaço no chip

27
Computadores com aceleradores
● Evolução da GPU moderna
○ Replicou-se a unidade, gerando as GPUs modernas
○ Mais unidades, têm-se mais paralelismo
○ Memória interna comum a todas as unidades

28
Computadores com aceleradores
● Evolução da GPU moderna
○ A arquitetura da GPU evoluiu no sentido de otimizar a execução de uma grande
quantidade de threads
○ Mesmo com uma memória (global) lenta, a GPU consegue ocultar a latência da
memória através do chaveamento entre blocos de threads
■ Implica num alto número de instruções sendo executadas por unidade de tempo
○ Esta estratégia permite com que grande parte da área do chip, usada na CPU para
cache e controle de fluxo, seja usada na GPU para mais unidades de processamento
(núcleos)
○ Projeto visando otimizar a vazão (instruções por segundo)

29
Computadores com aceleradores
● Comparação entre CPU e GPU

Multicore Manycore

30
Computadores com aceleradores
● GPUs de Propósito Geral (GPGPUs)
○ Como as GPUs desempenham operações paralelas em múltiplos conjuntos de
dados, elas estão sendo cada vez mais usadas como processadores vetoriais para
uma variedade de aplicações que requerem computações repetitivas
○ Quando uma grande gama de aplicações é suportada por um processador, o termo
GPUs de computação de uso geral (GPGPUs - General-Purpose computing on
GPUs) é usado
■ Suposta especificação da RTX 4090: 16.128 núcleos CUDA, 24 GB

31
Computadores com aceleradores
● Evolução das GPUs
○ GeForce 8800 Ultra (2007) – 128 núcleos
○ GeForce GTX 480 (2010) – 480 núcleos
○ GeForce GTX 690 (2012) - 1536 núcleos
○ GeForce GTX Titan (2014) – 2880 núcleos
○ GeForce RTX-2080Ti (2018) – 4352 núcleos
○ GeForce RTX-3090 (2020) – 10496 núcleos
○ Servidor com 8 placas => 83.968 cores por
máquina
○ RTX-3090 com 82 streaming multiprocessor
(SM), cada SM suporta 1536 threads =>
125.952 threads!

32
Considerações finais
● O aprimoramento do desempenho não está mais ligado apenas à
frequência do clock
○ O paralelismo já está no jogo…

33
Dúvidas?

34
Obrigado pela atenção

e-mail: ricardofranco@ufg.br 35

Você também pode gostar