multiprocessadores e - ufpe · 2019. 6. 26. · para implementar conjunto de registradores para...

121

Upload: others

Post on 30-Nov-2020

2 views

Category:

Documents


0 download

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
Page 2: Multiprocessadores e - UFPE · 2019. 6. 26. · para implementar conjunto de registradores para cada thread – Register renaming fornece um mecanismo para identificar registradores

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Comparação T1 e Superescalares