• Nenhum resultado encontrado

Multiprocessadores e Paralelismo nível de Thread

N/A
N/A
Protected

Academic year: 2021

Share "Multiprocessadores e Paralelismo nível de Thread"

Copied!
120
0
0

Texto

(1)
(2)

Multiprocessadores e

(3)

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

(4)

Além de ILP….

• Em algumas aplicações existem paralelismo

natural

– Thread Level Parallelism – Data Level Parallelism

(5)

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

(6)

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.

(7)

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)

(8)

8

Multithreaded Categories

Time (proce

ss

or

cy

cl

e)

Superscalar Fine-Grained Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot

(9)
(10)

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

(11)

11

Multithreaded Categories

Time (proce

ss

or

cy

cl

e)

Superscalar Fine-Grained Coarse-Grained

Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot

(12)

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

(13)
(14)

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

(15)

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?

(16)

16

Simultaneous Multi-threading ...

1 2 3 4 5 6 7 8 9 M M FX FX FP FP BR CC Cycle

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 CC Cycle

(17)

12/3/2018 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:

(18)

12/3/2018 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

(19)

19

Multithreaded Categories

Time (proce

ss

or

cy

cl

e)

Superscalar Fine-Grained Coarse-Grained SimultaneousMultithreading

Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot

(20)

20

(21)

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.

(22)
(23)
(24)
(25)
(26)

26

Multithreaded Categories

Time (proce

ss

or

cy

cl

e)

Superscalar Fine-Grained Coarse-Grained SimultaneousMultithreading Multiprocessing

Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot

(27)

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.

(28)

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",

(29)

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

(30)

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.

(31)

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

(32)

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

(33)

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

(34)

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

(35)

Classificação de Multiprocessadores

• Arquitetura Paralela = Arquitetura do Computador

+ Arquitetura da Comunicação

• Classificando por comunicação:

– Multiprocessador baseado em

Message-Passing

: processadores enviam menssagens

– Processador baseado em Memória

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

(36)
(37)
(38)

Multi-core

• Multiprocessador implementado em um

único circuito integrado

(39)

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

(40)
(41)

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

(42)

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%

(43)

Resposta usando Lei de Amdahl

(

)

(

)

(

)

%

75

.

99

2

.

79

/

79

Fraction

Fraction

8

.

0

Fraction

80

79

1

)

100

Fraction

Fraction

1

(

80

100

Fraction

Fraction

1

1

0

8

Speedup

Fraction

Fraction

1

1

Speedup

parallel parallel parallel parallel parallel parallel parallel parallel parallel enhanced overall

=

=

=

=

+

+

=

+

=

(44)

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

(45)

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

(46)

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 remoto

mudanç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

(47)
(48)

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

(49)

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 :5 1 u :5 2 u :5 3 u= 7

(50)

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

(51)

Garantindo a Coerência

• Migração – o valor mais atualizado da variável é movido entre 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 :5 1 u :5 2 u=7 u=7 =7

(52)

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 :5 1 u :5 2 u :5 3 u= 7

(53)

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

(54)

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

(55)

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

(56)
(57)

Protocolo Snooping de Coerência de Cache

State Tag Data I/O devices Mem P1 $ Bus snoop $ Pn Cache-memory transaction

• 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

(58)

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

(59)

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 :5 1 u :5 2 u :5 3 u= 7 u = 7

(60)

PROBLEMA 1: COMO GARANTIR QUE

SÓ UM PROCESSADOR ESCREVE NA

VARIÁVEL COMPARTILHADA?

(61)

• Só um processador usa o barramento por vez

Bus Request Bus Grant Cmd+Addr R/W Address Data1 Data2 Data Clock

Protocolo de Barramento

(62)

Contenção de Barramento

• Dois processadores querem usar o

barramento ao mesmo tempo

P0 P1 M IO C C C Pn ...

(63)

Contenção de Barramento

• Dois processadores querem usar o

barramento ao mesmo tempo

P0 P1 M IO C C C Pn ...

Bus req. Bus req.

Árbitro

(64)

Módulos da Arquitetura

• Protocolo de barramento: – Requisição – Comando – Dado State Tag Data I/O devices Mem P1 $ Bus snoop $ Pn Cache-memory transaction Estados: • Não válido, • Válido, • dirty

• Acesso simultâneo:

– Só um processador ganha o acesso – Decisão: árbitro

(65)

PROBLEMA 2: ONDE ENCONTRAR A

CÓPIA MAIS ATUALIZADA DO BLOCO

DE CACHE?

(66)

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

(67)

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.

(68)

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

(69)

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.

(70)

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

(71)

CPU Read hit

Snooping: Write-Back - CPU

• Mudança de estado considerando

requisições da CPU

para cada bloco de cache

• Blocos que não estão na cache não são validos Invalid Shared (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

(72)

Snooping: Write-Back

Substituição de Bloco

Mudança de estado para requisições da CPU para cada

bloco da cache

Invalid (read/only)Shared

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

(73)

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)

(74)

Place read miss on bus

Snooping Write-back

Mudança de estado para requisições da

CPU para cada bloco da cache e

para requisições do

barramento para cada

bloco de ache

Invalid (read/only)Shared

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)

(75)

75

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 bus

Write

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

(76)

76

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 bus

Write

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

(77)

77

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 bus

Write

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

(78)

78

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 bus

Write

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

(79)

79

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 bus

Write

miss on bus CPU Write Place Write Miss on Bus

CPU read hit

CPU write hit

Remote Read

Write Back

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

(80)

80 Remote Write Write Back Remote Write Invalid Shared Exclusive

CPU Read hit

Read

miss on bus

Write

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

(81)

Snooping

• Protocolo de barramento: – Requisição – Comando – Dado State Tag Data I/O devices Mem P1 $ Bus snoop $ Pn Cache-memory transaction Estados: • Shared, • Não válido, • Exclusivo

• Acesso simultâneo:

– Só um processador ganha o acesso – Decisão: árbitro

(82)

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

(83)

Limitações

• Múltiplos barramentos e redes de interconexão

• Memória configurada em bancos de memória

(84)
(85)

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.

(86)

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; ... }

(87)
(88)

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

(89)

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

(90)

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

(91)

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X U 0 0 0 Bit Vector

(92)

CPU 0 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X U 0 0 0 Read Miss

(93)

CPU 0 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X

Caches Memories

(94)

CPU 0 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X S 1 0 0 7 X

(95)

CPU 2 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X S 1 0 0 7 X Read Miss

(96)

CPU 2 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X S 1 0 1 7 X

(97)

CPU 2 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X S 1 0 1 7 X X 7

(98)

CPU 0 escreve 6 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X S 1 0 1 7 X X 7 Write Miss

(99)

CPU 0 escreve 6 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X S 1 0 1 7 X X 7 Invalidate

(100)

CPU 0 escreve 6 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X E 1 0 0 6 X

(101)

CPU 1 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X E 1 0 0 6 X Read Miss

(102)

CPU 1 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

7 X Caches Memories Directories X E 1 0 0 6 X Switch to Shared

(103)

CPU 1 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

6 X Caches Memories Directories X E 1 0 0 6 X

(104)

CPU 1 lê X

Interconnection Network

CPU 0 CPU 1 CPU 2

6 X Caches Memories Directories X S 1 1 0 6 X X 6

(105)

CPU 2 escreve 5 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

6 X Caches Memories Directories X S 1 1 0 6 X X 6 Write Miss

(106)

CPU 2 escreve 5 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

6 X Caches Memories Directories X S 1 1 0 6 X X 6

(107)

CPU 2 escreve 5 em X

(Write back)

Interconnection Network

CPU 0 CPU 1 CPU 2

6 X Caches Memories Directories X E 0 0 1 5 X

(108)

CPU 0 escreve 4 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

6 X Caches Memories Directories X E 0 0 1 5 X

(109)

CPU 0 escreve 4 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

6 X Caches Memories Directories X E 1 0 0 Take Away 5 X

(110)

CPU 0 escreve 4 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

5 X Caches Memories Directories X E 1 0 0 5 X

(111)

CPU 0 escreve 4 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

5 X

Caches Memories

(112)

CPU 0 escreve 4 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

5 X Caches Memories Directories X E 1 0 0 5 X

(113)

CPU 0 escreve 4 em X

Interconnection Network

CPU 0 CPU 1 CPU 2

5 X Caches Memories Directories X E 1 0 0 4 X

(114)

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,

(115)
(116)
(117)
(118)
(119)
(120)

Referências

Documentos relacionados

(NBR 5419:1997) 6.4.2.4.1 Em qualquer instalação deve ser previsto um terminal ou barra de aterramento principal e os seguintes condutores devem ser a ele ligados: Condutores

3 - Quando não possa reparar-se convenientemente o caixão deteriorado, encerrar-se-à o mesmo noutro caixão de zinco ou será removido para sepultura à escolha

O PROGRAMA DE PÓS-GRADUAÇÃO EM FISIOPATOLOGIA E CIÊNCIAS CIRÚRGICAS, DA UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO - UERJ torna público o presente Edital,

Podemos considerar que foi possível realizar um progra- ma de fortalecimento isotônico para os músculos responsáveis pela preensão palmar e que para esse grupo de voluntárias e

Essas operações, com e sem risco de crédito, são contabilizadas em conta do ativo “Outros créditos de operações com planos de assistência à saúde”

A decisão recorrida não acolheu a pretensão orientada na inicial ao entendimento de que o grupo familiar possui renda mensal per capita superior a ¼ do salário-mínimo.

5.21 - Termo de Referência: É o instrumento orientador, elaborado pelo órgão ambiental com a participação do empreendedor, que tem como finalidade estabelecer as diretrizes para a

-021 Por quilograma, maior do que o limite de preços máximo do imposto específico aplicado para partes de suíno, mas não maior do que o preço de entrada de partes de suíno,