multiprocessadores e - ufpe · 2019. 6. 26. · para implementar conjunto de registradores para...
TRANSCRIPT
![Page 1: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/1.jpg)
![Page 2: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/2.jpg)
Multiprocessadores e
Paralelismo nível de Thread
![Page 3: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/3.jpg)
Roteiro da Aula
• Conceitos básicos
• Paralelismo de Thread
• Taxonomia dos processadores
• Modelos de memória e de comunicação
• Problema da coerência de memória
• Protocolos de coerência baseado em snoop
• Protocolos de coerência baseado em diretórios
![Page 4: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/4.jpg)
Além de ILP….
• Em algumas aplicações existem paralelismo
natural
– Thread Level Parallelism
– Data Level Parallelism
![Page 5: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/5.jpg)
Além de ILP….
• Thread: processo com instruções e dados
próprios
– thread pode ser parte de um programa paralelo de
múltiplos processos, ou pode ser um programa
independente
– Cada thread tem seu estado (instruções, dados, PC,
register state,etc) necessários para sua execução
• Data Level Parallelism: realiza operações
identicas sobre um conjunto de dados
![Page 6: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/6.jpg)
Thread Level Parallelism (TLP)
• ILP explora paralelismo implícito dentro de um
loop ou trecho de código
• TLP é representado explicitamente de uso de
múltiplas threads de execução que são
paralelas.
• Objetivo: usar múltiplos streams de instruções
para melhorar:
– Throughput de computadores que executam vários
programas
– Tempo de Execução de programas multi-threaded.
• TLP pode ser mais eficiente que o ILP.
![Page 7: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/7.jpg)
Multithreaded Execution
• Multithreading: múltiplas threads que compartilham a unidade
funcional de um processador
– processador deve duplicar estado para cada thread i.e, uma
cópia separada do register file, um PC separado, e para
execução de programas independentes uma page table
separada.
– Compartilhamento de memória através de mecanismos de
memória virtual.
– HW chaveamento rápido de thread cerca de 100s para 1000s.
• Quando chavear?
– Alternar instrução por thread (fine grain)
– Quando um thread está em estado de espera (devido a cache
miss), um outro thread pode ser executado (coarse grain)
![Page 8: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/8.jpg)
8
Multithreaded CategoriesT
ime
(pro
cess
or c
ycle
) Superscalar Fine-Grained
Thread 1
Thread 2
Thread 3
Thread 4
Thread 5
Idle slot
![Page 9: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/9.jpg)
Fine-Grained Multithreading
![Page 10: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/10.jpg)
Fine-Grained Multithreading
• Chaveamento entre threads a cada instrução causa a
execução de multiplas threads.
• Usualmente feito em round-robin fashion, pulando threads em
stall
• CPU deve ser capaz de chavear entre threads a cada clock
• Vantagem de aproveitar pequenas e longas esperas desde
que instruções de outras threads podem executar quando
uma thread está em espera
• Desvantagem de tornar execução de threads individuais mais
lenta desde que uma thread pronta para executar vai esperar
execução de outras threads
• Usado Sun’s Niagara
![Page 11: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/11.jpg)
11
Multithreaded CategoriesT
ime
(pro
cess
or c
ycle
) Superscalar Fine-Grained Coarse-Grained
Thread 1
Thread 2
Thread 3
Thread 4
Thread 5
Idle slot
![Page 12: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/12.jpg)
Coarse-Grained Multithreading
• Chaveamento de threads somente quando demora longa ocorre
(L2 cache misses)
• Vantagens
– Não necessita de mecanismo para chaveamento rápido
– Não torna a thread mais lenta,
• Desvantagem
– Não melhora desempenho devido a esperas curtas
– Desde que a CPU despacha instruções para 1 thread, quando
um stall ocorre, o pipeline deve ser esvaziado
– Nova thread deve preencher o pipeline antes que as instruções
completem
• Devido a este start-up overhead, coarse-grained multithreading é
melhor para reduzir a penalidade de stalls de alto custo, quando
pipeline refill << stall time
• Usado no IBM AS/400
![Page 13: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/13.jpg)
Coarse-Grained Multithreading
![Page 14: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/14.jpg)
Coarse-Grained Multithreading
• + Sacrifica muito pouco o desempenho de uma single thread
• – Tolera somente latencias longas (e.g., L2 misses)
• Definição de política de escalonamento de Thread
• Define uma “preferred” thread (e.g., thread A)
• Chaveia para thread B quando thread A L2 miss
• Chaveia de volta para A quando A L2 miss retorna
• Não pode tolerar latências menores que duas vezes a
profundidade do pipeline
• Necessita in-order pipeline pequeno para bom desempenho
• Exemplo: IBM Northstar/Pulsar
![Page 15: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/15.jpg)
Usar ambos ILP e TLP
• TLP e ILP exploram diferentes tipos de paralelismo em
um programa
• Pode um processador orientado a ILP explorar TLP?
– Unidades Funcionais estão ociosas no data path projetado para
ILP devido aos stalls ou dependencias no código.
• Pode TLP ser usado como fonte de instruções
independentes que podem ocupar o processador
durante stalls?
• Pode TLP ser usado para ocupar unidades funcionais
que estariam ociosas quando não existe ILP suficiente?
![Page 16: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/16.jpg)
16
Simultaneous Multi-threading ...
1
2
3
4
5
6
7
8
9
M M FX FX FP FP BR CCCycle
One thread, 8 units
M = Load/Store, FX = Fixed Point, FP = Floating Point, BR = Branch, CC = Condition Codes
1
2
3
4
5
6
7
8
9
M M FX FX FP FP BR CCCycleTwo threads, 8 units
![Page 17: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/17.jpg)
6/26/2019 17
Simultaneous Multithreading (SMT)
• Podemos usar multithread em uma máquina out-of-
order?
• Simultaneous multithreading (SMT)
• + Tolera todas latencias (e.g., L2 misses, mispredicted
branches)
• ± Sacrifica um pouco o desempenho de uma única
thread
• Politica de Escalonamento de Thread
– Round-robin
• Particionamento dinamico do Pipeline
• Exemplo:
– Pentium4 (hyper-threading): 5-way issue, 2 threads
![Page 18: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/18.jpg)
6/26/2019 18
Simultaneous Multithreading (SMT)
• Simultaneous multithreading (SMT): dentro de um processador com escalonamento dinamico existem vários mecanismos de HW para suportar multithreading– Grande conjunto de registradores virtuais que podem ser usados
para implementar conjunto de registradores para cada thread
– Register renaming fornece um mecanismo para identificar registradores de forma única.
– Out-of-order completion permite a execução de threads out of order para melhor utilização do HW.
• Necessidade da adição de uma renaming table por thread e manter PCs separados
– Commit independente pode ser suportado através de reorder buffers separados para cada thread
– Exemplo: Intel Pentium-4 HT• Two threads: duplicated registers, shared function units and caches
![Page 19: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/19.jpg)
19
Multithreaded CategoriesT
ime
(pro
cess
or c
ycle
) Superscalar Fine-Grained Coarse-GrainedSimultaneous
Multithreading
Thread 1
Thread 2
Thread 3
Thread 4
Thread 5
Idle slot
![Page 20: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/20.jpg)
20
SMT
![Page 21: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/21.jpg)
21
Desafios em SMT
• Deve ter um grande Banco de registradores para armazenar contextos multiplos.
• Desenvolvimento eficiente do hardware para não afetar o tempo de ciclo de clock– Instruction issue – mais instruções devem ser
consideradas
– Instruction completion – escolher quais instruções para commit pode ser um desafio
• Garantir que os conflitos gerados pela cache e TLB em um processador SMT não degradam desempenho.
![Page 22: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/22.jpg)
Exemplos
![Page 23: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/23.jpg)
Exemplos
![Page 24: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/24.jpg)
Exemplos
![Page 25: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/25.jpg)
Desempenho dos Processadores
![Page 26: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/26.jpg)
26
Multithreaded CategoriesT
ime
(pro
cess
or c
ycle
) Superscalar Fine-Grained Coarse-Grained MultiprocessingSimultaneous
Multithreading
Thread 1
Thread 2
Thread 3
Thread 4
Thread 5
Idle slot
![Page 27: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/27.jpg)
Interesse em Multiprocessadores
• Uma crescente utilização de servidores
• Um crescimento em aplicações data-
intensive
• Um melhor entendimento de como usar
multiprocessadores para explorar thread-
level paralelismo
• Investimento em replicação é mais atrativo
que investimento em um projeto exclusivo.
![Page 28: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/28.jpg)
Flynn’s Taxonomy
• Flynn classificou de acordo com streams de dado e controle em 1966
• SIMD Data Level Parallelism
• MIMD Thread Level Parallelism
• MIMD mais popular pois:– Flexibilidade: N programs e 1 programa multithreaded
– Cost-effective: mesma MPU em desktop & MIMD
Single Instruction Single
Data (SISD)
(Uniprocessor)
Single Instruction
Multiple Data SIMD
(single PC: Vector, CM-
2)
Multiple Instruction
Single Data (MISD)
(????)
Multiple Instruction
Multiple Data MIMD
(Clusters, SMP servers)
M.J. Flynn, "Very High-Speed Computers",
Proc. of the IEEE, V 54, 1900-1909, Dec. 1966.
![Page 29: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/29.jpg)
Taxonomia atual
Data Streams
Single Multiple
Instruction
Streams
Single SISD:
Intel Pentium 4
SIMD: SSE
instructions of x86
Multiple MISD:
No examples today
MIMD:
Intel Xeon e5345
![Page 30: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/30.jpg)
Multiprocessamento
• Clusters
– commodity clusters
• Baseados em processadores comerciais e
interconexões
– custom clusters
• O projetista customiza cada nó de processamento
e a rede de interconexão
![Page 31: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/31.jpg)
Multiprocessamento
• Clusters
– Aplicações que focam em taxa de
transferência e possuem pouca (ou nenhuma)
comunicação entre threads, com Servidores
WEB, e aplicações baseadas em transações
podem ser implementadas em um cluster.
![Page 32: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/32.jpg)
Classificação de Multiprocessadores
• Arquitetura Paralela = Arquitetura do Computador + Arquitetura da Comunicação
• Classificação por memória:
– Processador de Memória Centralizada (Symmetric)
• Típico para sistemas pequenos → demanda de largura de banda de memória e rede de comunicação.
– Multiprocessador de Memória Fisicamente Distribuída
• Escala melhor → demanda de largura de banda para rede de comunicação
![Page 33: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/33.jpg)
Classificação por Memória
• Multiprocessadores de Memória Centralizada
– Poucos processadores ( poucas dezenas
chips ou cores) em 2006
– Memória única e centralizada
P0 P1
M IO
C C C
Pn
...
Centralized Memory
![Page 34: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/34.jpg)
Classificação por Memória
• Multiprocessadores de Memória Fisicamente
Distribuída
– Maior número de processadores (centenas de
chips ou cores)
– Memória distribuída entre processadores
Distributed Memory
...
P0
M
C
IO
Interconnection Network
P1
M
C
IO
Pn
M
C
IO
![Page 35: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/35.jpg)
Centralized vs. Distributed Memory
Scale
Centralized Memory
P0 P1
M IO
C C C
Pn
...
Distributed Memory
...
P0
M
C
IO
Interconnection Network
P1
M
C
IO
Pn
M
C
IO
![Page 36: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/36.jpg)
Classificação de Multiprocessadores
• Classificando por Modelo de comunicação:
– Comunicação baseada em Message-Passing : processadores enviam mensagens
– Comunicação baseada em Variável Compartilhada: processadores se comunicam através de espaço de endereçamento comum.
• Memória Centralizada: , UMA (Uniform Memory Access time)
• Memória Distribuída:, NUMA (Non Uniform Memory Access time)
![Page 37: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/37.jpg)
Exemplos de Multiprocessadores
![Page 38: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/38.jpg)
Exemplos de Multiprocessadores
![Page 39: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/39.jpg)
Multi-core
• Multiprocessador implementado em um
único circuito integrado
![Page 40: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/40.jpg)
Mudança de Paradigma
• “We are dedicating all of our future product
development to multicore designs. … This is a
sea change in computing”
Paul Otellini, President, Intel (2005)
• Todas as companhias de processadores
estão desenvolvendo multi-core (2X CPUs
/ 2 anos)
Manufacturer/Year AMD/’05 Intel/’06 IBM/’04 Sun/’05
Processors/chip 2 2 2 8
Threads/Processor 1 2 2 4
Threads/chip 2 4 4 32
![Page 41: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/41.jpg)
Multi-Core Processor
![Page 42: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/42.jpg)
Intel Core 2 Duo
• Cores homegêneos
– Superscalares
• (escalonamento dinâmico,
especulação, multiple issue)
• Interconexão baseada em
barramento
• Cada “core” tem cache
local (L1)
• Memória compartilhada
– (cache L2) no chip Source: Intel Corp.
![Page 43: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/43.jpg)
Desafios do processamento Paralelo
• Primeiro desafio: quantos % do
programa é inerentemente sequencial
• Suponha speedup de 80X speedup para
100 processadores. Qual a fração do
programa que deve ser sequencial?
a. 10%
b. 5%
c. 1%
d. <1% O,25%
![Page 44: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/44.jpg)
Resposta usando Lei de Amdahl
( )
( )
( )
%75.992.79/79Fraction
Fraction8.0Fraction8079
1)100
Fraction Fraction 1(80
100
Fraction Fraction 1
1 08
Speedup
Fraction Fraction 1
1 Speedup
parallel
parallelparallel
parallel
parallel
parallel
parallel
parallel
parallel
enhanced
overall
==
−=
=+−
+−
=
+−
=
![Page 45: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/45.jpg)
Desafios do processamento Paralelo
• Segundo desafio: longas latências de memórias remotas
• Suponha 32 CPU MP, 2GHz, 200 ns memória remota, todos acessos locais são hits e CPI base de 0.5. (Acesso remoto = 200/0.5 = 400 ciclos.)
• Qual o impacto no desempenho se 0.2% das instruções envolvem acessos remotos?
a. > 1.5X
b. > 2.0X
c. > 2.5X 2,6X
![Page 46: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/46.jpg)
Equação do CPI
• CPI = CPI base +
taxa de acesso remoto x custo
do acesso remoto
• CPI = 0.5 + 0.2% x 400 = 0.5 + 0.8
= 1.3
• Sem acesso remoto é 2.6 mais
rápida que com 0.2% das
instruções envolvendo acessos
remoto
![Page 47: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/47.jpg)
Desafios do processamento Paralelo
1. Paralelismo da Aplicação através de novos algoritmos com melhor desempenho
2. Impacto da longa latência no acesso remotomudanças na arquitetura e na programação
• For exemplo, redução dos acessos remotos por:– Caching shared data (HW)
– Restruturando estruturas de dados para garantir mais acessos locais (SW)
• Foco do capítulo: gerenciar latência através do uso de cache.
![Page 48: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/48.jpg)
Multi-processadores de Memória Compartilhada
![Page 49: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/49.jpg)
Multi-processadores de Memória Compartilhada
• Evolução:
– Múltiplas placas ou chips usando barramento compartilhado
– Múltiplos processadores dentro de um chip.
• Caches
– Dados Privado usados por cada processador
– Dados Compartilhados usados por múltiplos processadores
• Caching dado compartilhado
• reduz latência a dados compartilhado, largura de
banda da memória para acesso a dado compartilhado e
largura de banda de interconexão
• problema de coerência de cache
![Page 50: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/50.jpg)
Exemplo de problema de Coerência de
Cache
– Processadores verão diferentes valores de u após evento 3
– Caches write-through: valores inconsistentes
– Caches write back: valor escrito na memória depende do momento que que ocorre o flush de cache e os valores são atualizados na memória
I/O devices
Memory
P1
$ $ $
P2 P3
5
u = ?
4
u = ?
u:51
u :5
2
u :5
3
u= 7
![Page 51: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/51.jpg)
Garantindo a Coerência
• Replicação – para dados compartilhados que estão na memória são feitas cópias nas caches que estão usando o dado
– Reduz latência de acesso e utilização simultânea do barramento na leitura de dado compartilhado.
I/O devices
Memory
P1
$ $ $
P2 P3
u =?
u:5
u :5
![Page 52: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/52.jpg)
Garantindo a Coerência
• Migração – o valor mais atualizado da variável é movidoentre a cache que tem o valor mais atual e a cache que precisa do dado– Reduz a latência devido a leitura dos dados na memória
I/O devices
Memory
P1
$ $ $
P2 P3
3
u = ?
u:51
u :5
2
u=7u=7
=7
![Page 53: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/53.jpg)
Exemplo de problema de Coerência de
Cache
– Processadores verão diferentes valores de u após evento 3
– Caches write-through: valores inconsistentes
– Caches write back: valor escrito na memória depende do momento que que ocorre o flush de cache e os valores são atualizados na memória
I/O devices
Memory
P1
$ $ $
P2 P3
5
u = ?
4
u = ?
u:51
u :5
2
u :5
3
u= 7
![Page 54: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/54.jpg)
Garantindo a Coerência
• Como manter coerência de dados migrados ou replicados?
• Protocolos implementados pelo controlador da cache e/ou pelo controlador de memória que permitem o rastreamento do status de compartilhamento.
![Page 55: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/55.jpg)
Protocolos de Coerência de Cache
1. Snooping — Cada cache que possui cópia de um dado também tem uma cópia do status de compartilhamento,
• Todas as caches são acessíveis através de meio barramento
• Todos os controladores de caches monitoram ou snoop o meio para determinar se eles possuem ou não uma cópia sendo requisitada pelo barramento
2. Directory based — O status do compartilhamento de um bloco da memória física é armazenado em um local, diretório
![Page 56: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/56.jpg)
Coerência:
Conceito
• Só uma pessoa pode falar no
microfone por vez
• Toda modificação em conta deve ser
comunicada entre os funcionários
através do alto falante
• Após qualquer modificação, as cópias
devem ser inutilizadas
![Page 57: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/57.jpg)
Protocolo Snooping de Coerência de Cache
![Page 58: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/58.jpg)
Protocolo Snooping de Coerência de Cache
State
Tag
Data
I/O devicesMem
P1
$
Bus snoop
$
Pn
Cache-memorytransaction
• Controladores de Cache “snoops” (bisbilhotam) todas as transações no barramento
– Transações relevantes : envolvem bloco que a sua cache possui
– Realiza ação para garantir coerência • invalida, atualiza, ou fornece valor
– Atualiza estado de compartilhamento do bloco de cache
![Page 59: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/59.jpg)
Protocolos de Coerência de Cache
• Write Invalidate– As cópías nas demais caches são
Invalidadas na ocorrência de uma escrita em uma das caches
• Write Update– As cópias das demais caches são
atualizadas após a ocorrência de uma escrita em uma das caches
– Write update causam maior utilização do barramento
• Multiprocessadores atuais usam write invalidate
![Page 60: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/60.jpg)
Exemplo: Write-thru Invalidate
• P3 Deve invalidar todas as cópias antes da escrita
• Caches write through: simplicidade de implementação porém mais acessos à memória
• Caches write-back: menos acessos à memória, mas como encontrar o bloco que contem a cópia com valor atualizado?
I/O devices
Memory
P1
$ $ $
P2 P3
5
u = 7
4
u = 7
u:51
u :5
2
u :5
3
u= 7
u = 7
![Page 61: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/61.jpg)
PROBLEMA 1: COMO GARANTIR QUE
SÓ UM PROCESSADOR ESCREVE NA
VARIÁVEL COMPARTILHADA?
![Page 62: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/62.jpg)
• Só um processador usa o barramento por vez
Bus
Request
Bus Grant
Cmd+AddrR/W
Address
Data1 Data2Data
Clock
Protocolo de Barramento
![Page 63: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/63.jpg)
Contenção de Barramento
• Dois processadores querem usar o
barramento ao mesmo tempo
P0 P1
MIO
C C C
Pn
...
Bus req. Bus req.
![Page 64: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/64.jpg)
Contenção de Barramento
• Dois processadores querem usar o
barramento ao mesmo tempo
P0 P1
MIO
C C C
Pn
...
Bus req. Bus req.
Árbitro
• O processador P0 tem que esperar
![Page 65: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/65.jpg)
Módulos da Arquitetura
• Protocolo de barramento:– Requisição
– Comando
– Dado
State
Tag
Data
I/O devicesMem
P1
$
Bus snoop
$
Pn
Cache-memorytransaction
Estados:
• Não válido,
• Válido,
• dirty
• Acesso simultâneo:– Só um processador ganha o acesso
– Decisão: árbitro
– Invalidação das demais cópias
![Page 66: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/66.jpg)
PROBLEMA 2: ONDE ENCONTRAR A
CÓPIA MAIS ATUALIZADA DO BLOCO
DE CACHE?
![Page 67: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/67.jpg)
Localizando cópia mais atualizada
• Caches Write-through: usa cópia da
memória
– Write through é mais simples porém causa
muitos acessos à memória e maior utilização
do barramento.
• Caches Write-back: deve localizar cópia
mais recente nas caches.
– É mais complicado de implementar
– Reduz acessos à memória
– A maioria dos multiprocessadores usam
caches write-back
![Page 68: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/68.jpg)
Localizando cópias em Caches Write Back
Solução: Usar o mesmo mecanismo de
snooping para achar a cópia mais atual
– Blocos de cache Snoop todo endereço
colocado no barramento
– Se processador possui cópia atual do bloco
requisitado ele responde a requisição de leitura
e aborta acesso à memória.
![Page 69: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/69.jpg)
Protocolo Snooping Write Back
• Cada bloco de cache vai estar em UM dos estados:
– Shared : bloco pode ser lido
– OU Modified/Exclusive : cache tem somente uma cópia que pode ser escrita e dirty
– OU Invalid : bloco não contem dado válido
![Page 70: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/70.jpg)
Protocolo Snooping Write Back
• Cada bloco de cache vai estar em UM dos estados:
– Shared : bloco pode ser lido
– OU Modified/Exclusive : cache tem somente uma cópia que pode ser escrita e dirty
– OU Invalid : bloco não contem dado válido
• CPU solicita leitura:
• Se cache não tem cópia:– Controlador coloca Read Miss no barramento
• Outras caches:
• Read misses: todas as caches vão dar “snoop” no barramento
– Controlador bisbilhota todo endereço colocado no barramento
– Se a cache possui uma cópia Exclusive do bloco requisitado, fornece o bloco em resposta a requisição de leitura e aborta o acesso à memória.
![Page 71: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/71.jpg)
Protocolo Snooping Write Back
• Cada bloco de cache vai estar em UM dos estados:
– Shared : bloco pode ser lido
– OU Modified/Exclusive : cache tem somente uma cópia que pode ser escrita e dirty
– OU Invalid : bloco não contem dado válido
• CPU solicita escrita:
• Se cache não tem cópia:– Controlador coloca Write Miss no barramento
• Outras caches:
• Write misses: todas as caches vão dar “snoop” no barramento
– Controlador bisbilhota todo endereço colocado no barramento
– Se a cache possui uma cópia Exclusive do bloco requisitado, atualiza a memória e Invalida a cópia.
– Se a cache possui uma cópia Shared do bloco requisitado invalida a cópia
![Page 72: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/72.jpg)
CPU Read hit
Snooping: Write-Back - CPU
• Mudança de estado considerando requisições da CPUpara cada bloco de cache
• Blocos que não estão na cache não são validos
InvalidShared
(read/only)
Exclusive
(read/write)
CPU Read
CPU Write
Place read
miss on bus
Place Write
Miss on bus
CPU Write
Place Write Miss on Bus
CPU Write Miss (?)
Write back cache block
Place write miss on bus
CPU read hit
CPU write hit
Cache Block
State
![Page 73: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/73.jpg)
Snooping: Write-Back
Substituição de Bloco
Mudança de estado para requisições da CPU para cada bloco da cache
InvalidShared
(read/only)
Exclusive
(read/write)
CPU Read
CPU Write
CPU Read hit
Place read miss
on bus
Place Write
Miss on bus
CPU read miss
Write back block,
Place read miss
on bus
CPU Write
Place Write Miss on Bus
CPU Read miss
Place read miss
on bus
CPU Write Miss
Write back cache block
Place write miss on bus
CPU read hit
CPU write hit
Cache Block
State
![Page 74: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/74.jpg)
Snooping: Write-Back - Bus
Mudança de estado considerando operações do barramento para cada bloco de cache
Invalid
Shared
(read/only)
Exclusive
(read/write)
Write Back
Block; (abort
memory access)
Write miss
for this block
Read miss
for this block
Write miss
for this block
Write Back
Block; (abort
memory access)
![Page 75: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/75.jpg)
Place read miss
on bus
Snooping Write-back
Mudança de estado para requisições da CPU para cada bloco da cache epara requisições do
barramento para cada bloco de ache
InvalidShared
(read/only)
Exclusive
(read/write)
CPU Read
CPU Write
CPU Read hit
Place Write
Miss on bus
CPU read miss
Write back block,
Place read miss
on bus CPU Write
Place Write Miss on Bus
CPU Read miss
Place read miss
on bus
CPU Write Miss
Write back cache block
Place write miss on bus
CPU read hit
CPU write hit
Cache Block
State
Write miss
for this block
Write Back
Block; (abort
memory access)
Write miss
for this block
Read miss
for this block
Write Back
Block; (abort
memory access)
![Page 76: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/76.jpg)
76
Exemplo
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1
P1: Read A1
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
• Assuma que estado inicial
da cache é “não válido”
• A1 e A2 mapeiam para o
mesmo slot de cache mas
A1 != A2
Processor 1 Processor 2 Bus Memory
Remote
Write
Write Back
Remote Write
Invalid Shared
Exclusive
CPU Read hit
Read
miss on busWrite
miss on bus CPU Write
Place Write
Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
CPU Write Miss
Write Back
CPU Read Miss
![Page 77: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/77.jpg)
77
Exemplo: Passo 1
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1
P1: Read A1
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
Remote
Write
Write Back
Remote Write
Invalid Shared
Exclusive
CPU Read hit
Read
miss on busWrite
miss on bus CPU Write
Place Write
Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
CPU Write Miss
Write Back
CPU Read Miss
• Assuma que estado inicial da
cache é “não válido”
• A1 e A2 mapeiam para o
mesmo slot de cache mas A1
!= A2
Estado ativo:
![Page 78: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/78.jpg)
78
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1
P1: Read A1 Excl. A1 10
P2: Read A1
P2: Write 20 to A1
P2: Write 40 to A2
Exemplo: Passo 2
Remote
Write
Write Back
Remote Write
Invalid Shared
Exclusive
CPU Read hit
Read
miss on busWrite
miss on bus CPU Write
Place Write
Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
CPU Write Miss
Write Back
CPU Read Miss
• Assuma que estado inicial
da cache é “não válido”
• A1 e A2 mapeiam para o
mesmo slot de cache mas
A1 != A2
![Page 79: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/79.jpg)
79
Exemplo: Passo 3
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1
P1: Read A1 Excl. A1 10
P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 WrBk P1 A1 10 10
Shar. A1 10 RdDa P2 A1 10 10
P2: Write 20 to A1 10
P2: Write 40 to A2 10
10
Remote
Write
Write Back
Remote Write
Invalid Shared
Exclusive
CPU Read hit
Read
miss on busWrite
miss on bus CPU Write
Place Write
Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
A1
A1
CPU Write Miss
Write Back
CPU Read Miss
• Assuma que estado inicial
da cache é “não válido”
• A1 e A2 mapeiam para o
mesmo slot de cache mas
A1 != A2
![Page 80: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/80.jpg)
80
Exemplo: Passo 4
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1
P1: Read A1 Excl. A1 10
P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 WrBk P1 A1 10 10
Shar. A1 10 RdDa P2 A1 10 10
P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 10
P2: Write 40 to A2 10
10
Remote
Write
Write Back
Remote Write
Invalid Shared
Exclusive
CPU Read hit
Read
miss on busWrite
miss on bus CPU Write
Place Write
Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
A1A1
A1
CPU Write Miss
Write Back
CPU Read Miss
• Assuma que estado inicial
da cache é “não válido”
• A1 e A2 mapeiam para o
mesmo slot de cache mas
A1 != A2
![Page 81: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/81.jpg)
81
Remote
Write
Write Back
Remote Write
Invalid Shared
Exclusive
CPU Read hit
Read
miss on busWrite
miss on bus CPU Write
Place Write
Miss on Bus
CPU read hit
CPU write hit
Remote Read
Write Back
Exemplo: Passo 5
P1 P2 Bus Memory
step State Addr Value State Addr Value Action Proc. Addr Value Addr Value
P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1
P1: Read A1 Excl. A1 10
P2: Read A1 Shar. A1 RdMs P2 A1
Shar. A1 10 WrBk P1 A1 10 10
Shar. A1 10 RdDa P2 A1 10 10
P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 10
P2: Write 40 to A2 WrMs P2 A2 10
Excl. A2 40 WrBk P2 A1 20 20
A1
A1
A1
A1
A1
CPU Write Miss
Write Back
CPU Read Miss
• Assuma que estado inicial
da cache é “não válido”
• A1 e A2 mapeiam para o
mesmo slot de cache mas
A1 != A2
![Page 82: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/82.jpg)
Snooping
• Protocolo de barramento:– Requisição
– Comando
– Dado
State
Tag
Data
I/O devicesMem
P1
$
Bus snoop
$
Pn
Cache-memorytransaction
Estados:
• Shared,
• Não válido,
• Exclusivo
• Acesso simultâneo:– Só um processador ganha o acesso
– Decisão: árbitro
– Invalidação das demais cópias
![Page 83: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/83.jpg)
Limitações
• Aumento no número de processadores -> cresce demanda por memória - > tornando-se um bottleneck.
• Para bus-based multiprocessador,– Bus: acessos devido a coerência e acessos à memória
– Memória UNICA: recebe TODAS as requisições dos processadores.
• Processadores mais rápidos e em maior número….
• Como suportar este novo cenário?– Múltiplos barramentos e redes de interconexão
– Memória configurada em bancos de memória
![Page 84: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/84.jpg)
Limitações
• Múltiplos barramentos e redes de interconexão
• Memória configurada em bancos de memória
![Page 85: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/85.jpg)
Network-based Coherence
![Page 86: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/86.jpg)
Abordagem Escalável: Diretórios
• Cada bloco de memória tem uma informação armazenada em um diretório
– Gerencia cópias dos blocos em cache e seus estados
– Em caso de miss, encontra entrada no diretório, analiza o mesmo e comunica somente com os nós que possuem cópia se necessário
– Em redes escaláveis , comunicação com diretório e cópias é feita através da rede.
• Várias alternativas para organizar informação no diretório.
![Page 87: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/87.jpg)
Operação Básica de Diretório
• k processadores.
• Cada bloco de cache na memória: k presence-bits, 1 dirty-bit
• Cada bloco de cache em cache: 1 valid bit, e 1 dirty (owner) bit
• ••
P P
Cache Cache
Memory Directory
presence bits dirty bit
Interconnection Network
• Leitura da memória pelo processador i:
• Se dirty-bit está OFF então { leitura da memória; atualiza p[i] para ON; }
• Se dirty-bit está ON então { acessa linha de cache do processador dirty (estado de cache para shared); atualiza memória; faz dirty-bit igual a OFF; faz p[i] igual a ON; fornece dado para i;}
• Escrita na memória pelo processador i:
• Se dirty-bit igual a OFF então { fornece dado para i; envia nvalidations para todas as caches que tem o bloco; faz dirty-bit igual a ON; faz p[i] igual a ON; ... }
• ...
![Page 88: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/88.jpg)
Operação Básica de Diretório
![Page 89: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/89.jpg)
Coerência
Snooping
• Só uma pessoa pode falar no
microfone por vez
• Toda modificação em conta deve ser
comunicada entre os funcionários
através do alto falante
• Após modificações cópias devem ser
inutilizadas
![Page 90: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/90.jpg)
Coerência:
Diretório
• Acessos às pastas somente através
do diretório
• Toda modificação em qualquer cópia
deve ser comunicada ao diretório
• Diretório comunica a necessidade de
inutilização
• Diretório envia cópia mais atualizada
![Page 91: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/91.jpg)
Protocolo baseado em Diretório
Interconnection Network
Directory
Local Memory
Cache
CPU 0
Directory
Local Memory
Cache
CPU 1
Directory
Local Memory
Cache
CPU 2
![Page 92: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/92.jpg)
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X U 0 0 0
Bit Vector
Protocolo baseado em Diretório
![Page 93: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/93.jpg)
CPU 0 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X U 0 0 0
Read Miss
![Page 94: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/94.jpg)
CPU 0 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 0
![Page 95: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/95.jpg)
CPU 0 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 0
7X
![Page 96: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/96.jpg)
CPU 2 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 0
7X
Read Miss
![Page 97: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/97.jpg)
CPU 2 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 1
7X
![Page 98: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/98.jpg)
CPU 2 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 1
7X 7X
![Page 99: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/99.jpg)
CPU 0 escreve 6 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 1
7X 7X
Write Miss
![Page 100: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/100.jpg)
CPU 0 escreve 6 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 1
7X 7X
Invalidate
![Page 101: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/101.jpg)
CPU 0 escreve 6 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X E 1 0 0
6X
![Page 102: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/102.jpg)
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X E 1 0 0
6X
Read Miss
![Page 103: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/103.jpg)
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X E 1 0 0
6X
Switch to Shared
![Page 104: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/104.jpg)
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 1 0 0
6X
![Page 105: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/105.jpg)
CPU 1 lê X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X S 1 1 0
6X 6X
![Page 106: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/106.jpg)
CPU 2 escreve 5 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X S 1 1 0
6X 6X
Write Miss
![Page 107: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/107.jpg)
CPU 2 escreve 5 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X S 1 1 0
6X 6X
![Page 108: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/108.jpg)
CPU 2 escreve 5 em X
(Write back)
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 0 0 1
5X
![Page 109: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/109.jpg)
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 0 0 1
5X
![Page 110: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/110.jpg)
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 1 0 0
Take Away
5X
![Page 111: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/111.jpg)
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
5X
![Page 112: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/112.jpg)
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
![Page 113: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/113.jpg)
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
5X
![Page 114: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/114.jpg)
CPU 0 escreve 4 em X
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
4X
![Page 115: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/115.jpg)
Exemplo T1
• Oito cores: cada um suporta até 4 threads.
• Cada core consiste num pipeline de 6 estágios
• Tl usa fine-grained multithreading,
• Os cores acessam 4 caches de 2 níveis
• Existe coerência entre caches L1 e um diretório com cada cache L2
• LI data cache é write through,
![Page 116: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/116.jpg)
Exemplo T1
![Page 117: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/117.jpg)
Exemplo T1
![Page 118: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/118.jpg)
Comparação T1 e Superescalares
![Page 119: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/119.jpg)
Comparação T1 e Superescalares
![Page 120: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/120.jpg)
Comparação T1 e Superescalares
![Page 121: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores](https://reader036.vdocuments.net/reader036/viewer/2022081410/6092bd30667d5517b55a583d/html5/thumbnails/121.jpg)
Comparação T1 e Superescalares