+ All Categories
Home > Documents > Multithreading e multiprocessamento (continuação)

Multithreading e multiprocessamento (continuação)

Date post: 17-Jan-2016
Category:
Upload: base
View: 49 times
Download: 0 times
Share this document with a friend
Description:
Multithreading e multiprocessamento (continuação). Coerência de cache. Coerência de sistema memória. Um sistema de memória é coerente se: 1 – Uma leitura de um processador P a uma posição X que segue uma uma escrita de X por P, sem nenhuma escrita de X por um outro processador - PowerPoint PPT Presentation
34
DAP Spr.‘98 ©UCB 1 Multithreading e multiprocessamento (continuação)
Transcript

DAP Spr.‘98 ©UCB 1

Multithreading e multiprocessamento

(continuação)

DAP Spr.‘98 ©UCB 2

Coerência de cache

DAP Spr.‘98 ©UCB 3

Coerência de sistema memória

Um sistema de memória é coerente se:

1 – Uma leitura de um processador P a uma posição X que segue uma uma escrita de X por P, sem nenhuma escrita de X por um outro processador ocorrendo entre a escrita e a leitura por P, sempre retorna o valor escrito por P.

2- Uma leitura por um processador à posição X que segue uma escrita por um outro processador a X retorna o valor escrito se a leitura e a escrita são suficientemente separadas no tempo e nenhuma outra escrita a X ocorre entre os dois acessos.

3- Escritas à mesma posição são serializadas; isto é, duas escritas à mesma posição por quaisquer dois processadores são vistas na mesma ordem por todos os processadores. Por exemplo: se valores 1 e 2 são escritos numa posição, os processadores nunca vão ler primeiro o 2 e depois o 1.

DAP Spr.‘98 ©UCB 4

Protocolos de coerência

Existem dois protocolos comumente usados para a obtenção da coerência de sistemas de cache em multiprocessadores:

Baseados em diretório – o estado de compartilhamento de um bloco de memória é mantido num único local chamado de diretório. Esse tipo de protocolo pode ser escalável, ou seja, pode ser usado para um sistema com um número grande de processadores.

Snooping – todo cache que tem uma cópia de um dado de um bloco de memória também tem uma cópia do estado de compartilhamento do bloco. Os caches são todos acessíveis via algum meio de difusão (broadcast) e todos os controladores de cache monitoram (snoop) o meio para determinar se tem ou não uma cópia de um bloco que é requisitado num acesso pelo barramento (ou outro sistema de interconexão usado).

DAP Spr.‘98 ©UCB 5

Existem duas formas de manter a coerência.

Um método é assegurar que um processador tenha acesso exclusivo a uma dada posição antes de escrever.

Esse estilo de protocolo é chamado de protocolo de invalidação na escrita (write invalidate protocol), pois invalida outras cópias numa escrita.

É de longe, o protocolo mais comum, tanto para o esquema de snooping comno para o de diretório.

O acesso exclusivo assegura que nenhuma outra cópia de uma posição exista quando uma escrita ocorre: todas as outras cópias em cache do conteúdo daquela posição são invalidadas.

Invalidação na escrita

DAP Spr.‘98 ©UCB 6

Multiprocessador com memória compartilhada usa protocolo

snooping

DAP Spr.‘98 ©UCB 7

Protocolo snooping

DAP Spr.‘98 ©UCB 8

Protocolo snooping usando write-back(ações originadas pelo processador)

Read hit – shared/modified – acerto no cache, leitura no cache, e fica no estado atual.

Read miss – invalid – falta no cache, faz leitura do bloco na memória e vai para shared.

Read miss – shared - o bloco requisitado pela CPU usa o mesmo slot do cache, logo há falta de conflito de endereço. Substitui o bloco fazendo uma leitura na memória e continua no mesmo estado.

Read miss – modified - o bloco requisitado pela CPU usa o mesmo slot do cache, logo há falta de conflito de endereço. Substitui o bloco fazendo write-back e lê o bloco requisitado na memória. Vai para o estado shared.

DAP Spr.‘98 ©UCB 9

Write hit – modified – escreve dado no cacheWrite hit – shared – o bloco é atualizado no cache e as cópias do bloco em outros caches são invalidadas. Passa para estado modified. Write miss – invalid – falta de escrita, o bloco deve ser lido da memória, modificado no cache, e vai para o estado modified.Write miss – shared - o bloco no cache ocupa o mesmo slot do bloco para escrita, portanto ocorre conflito de endereço. Deve fazer write-back e uma leitura de bloco na memória. O novo bloco é modificado e vai para o estado modified. Write miss- modified- o bloco no cache ocupa o mesmo slot do bloco para escrita, portanto ocorre conflito de endereço. Deve fazer write-back e uma leitura de bloco na memória. O novo bloco é modificado e permanece no estado modified.

DAP Spr.‘98 ©UCB 10

Diagrama de transição das ações originadas pelo processador

Solicitação CPU – tipo normalOperação – tipo negrito

DAP Spr.‘98 ©UCB 11

Protocolo snooping usando write-back(ações originadas pelo barramento)

Read miss – shared – um outro processador (bus) tenta ler o bloco. Continua no estado shared.Read miss – modified – um outro processador (bus) tenta ler o bloco, e o bloco não está atualizado na memória pois foi modificado. Atualizar a memória (write-back), abortando acesso à memória pelo outro processador. Vai para o estado shared.Invalidate - shared – um outro processador (bus) tenta escrever no bloco compartilhado, resultando em write hit. Invalida o bloco indo para o estado invalid.Write miss – shared – um outro processador (bus) tenta escrever no bloco compartilhado, resultando em write miss. Invalida o bloco indo para o estado invalid.Write miss – modified – um outro processador (bus) tenta escrever no bloco modificado. Atualizar a memória (write-back), abortando acesso à memória pelo outro processador. Vai para o estado invalid.

DAP Spr.‘98 ©UCB 12

Diagrama de transiçãodas ações originadas pelo

barramento

Solicitação Bus – tipo normalOperação – tipo negrito

DAP Spr.‘98 ©UCB 13

Diagrama completo

CPU – pretoBus – cinzaAtividade - negrito

DAP Spr.‘98 ©UCB 14

Example

P1 P2 Bus Memorystep State Addr Value State Addr Value Action Proc. Addr Value Addr Value

P1: Write 10 to A1P1: Read A1P2: Read A1

P2: Write 20 to A1P2: Write 40 to A2

Assumes initial cache state is invalid and A1 and A2 map to same cache block,but

Processor 1 Processor 2 Bus Memory

Remote Write

or MissWrite Back

Remote Write or Miss

Invalid Shared

Exclusive

CPU Read hit

Read miss on bus

Write miss on bus CPU Write

Place Write Miss on Bus

CPU read hitCPU write hit

Remote Read Write Back

A2A1

DAP Spr.‘98 ©UCB 15

Example: Step 1P1 P2 Bus Memory

step State Addr Value State Addr Value Action Proc. Addr Value Addr ValueP1: Write 10 to A1 Excl. A1 10 WrMs P1 A1

P1: Read A1P2: Read A1

P2: Write 20 to A1P2: Write 40 to A2

Assumes initial cache state is invalid and A1 and A2 map to same cache block,but .

Active arrow =

Remote Write

or MissWrite Back

Remote Write or Miss

Invalid Shared

Exclusive

CPU Read hit

Read miss on bus

Write miss on bus CPU Write

Place Write Miss on Bus

CPU read hitCPU write hit

Remote Read Write Back

A2A1

DAP Spr.‘98 ©UCB 16

P1 P2 Bus Memorystep State Addr Value State Addr Value Action Proc. Addr Value Addr Value

P1: Write 10 to A1 Excl. A1 10 WrMs P1 A1P1: Read A1 Excl. A1 10P2: Read A1

P2: Write 20 to A1P2: Write 40 to A2

Example: Step 2

Assumes initial cache state is invalid and A1 and A2 map to same cache block,but

Remote Write

or MissWrite Back

Remote Write or Miss

Invalid Shared

Exclusive

CPU Read hit

Read miss on bus

Write miss on bus CPU Write

Place Write Miss on Bus

CPU read hitCPU write hit

Remote Read Write Back

A2A1

DAP Spr.‘98 ©UCB 17

Example: Step 3P1 P2 Bus Memory

step State Addr Value State Addr Value Action Proc. Addr Value Addr ValueP1: Write 10 to A1 Excl. A1 10 WrMs P1 A1

P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1

Shar. A1 10 WrBk P1 A1 10 10Shar. A1 10 RdDa P2 A1 10 10

P2: Write 20 to A1 10P2: Write 40 to A2 10

10

Assumes initial cache state is invalid and A1 and A2 map to same cache block,But

Remote Write

or MissWrite Back

Remote Write or Miss

Invalid Shared

Exclusive

CPU Read hit

Read miss on bus

Write miss on bus CPU Write

Place Write Miss on Bus

CPU read hitCPU write hit

Remote Read Write Back

A1

A2A1

DAP Spr.‘98 ©UCB 18

Example: Step 4P1 P2 Bus Memory

step State Addr Value State Addr Value Action Proc. Addr Value Addr ValueP1: Write 10 to A1 Excl. A1 10 WrMs P1 A1

P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1

Shar. A1 10 WrBk P1 A1 10 10Shar. A1 10 RdDa P2 A1 10 10

P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 10P2: Write 40 to A2 10

10

Assumes initial cache state is invalid and A1 and A2 map to same cache block,but

Remote Write

or MissWrite Back

Remote Write or Miss

Invalid Shared

Exclusive

CPU Read hit

Read miss on bus

Write miss on bus CPU Write

Place Write Miss on Bus

CPU read hitCPU write hit

Remote Read Write Back

A1

A2A1

DAP Spr.‘98 ©UCB 19

Remote Write

or MissWrite Back

Remote Write or Miss

Invalid Shared

Exclusive

CPU Read hit

Read miss on bus

Write miss on bus CPU Write

Place Write Miss on Bus

CPU read hitCPU write hit

Remote Read Write Back

Example: Step 5P1 P2 Bus Memory

step State Addr Value State Addr Value Action Proc. Addr Value Addr ValueP1: Write 10 to A1 Excl. A1 10 WrMs P1 A1

P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1

Shar. A1 10 WrBk P1 A1 10 10Shar. A1 10 RdDa P2 A1 10 10

P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 10P2: Write 40 to A2 WrMs P2 A2 10

Excl. A2 40 WrBk P2 A1 20 20

A1

A1

Assumes initial cache state is invalid and A1 and A2 map to same cache block,but A2A1

DAP Spr.‘98 ©UCB 20

Multiprocessamento com memória distribuída e o protocolo baseado em

diretório

DAP Spr.‘98 ©UCB 21

Os blocos de memória podem estar num dos seguintes estados

DAP Spr.‘98 ©UCB 22

No protocolo baseado em diretórioo sistema faz troca de mensagens

Local cache refere-se ao local node - nó onde as requisições originam. Home directory refere-se ao home node - nó onde a posição de memória e a entrada no diretório de um endereço se encontram.Remote cache refere-se a todos os caches, exceto local cache.

DAP Spr.‘98 ©UCB 23

Read miss – O processador P tem uma falta de leitura no endereço A. Requisita dados e transforma P em compartilhador de leitura.

Write miss - O processador P tem uma falta de escrita no endereço A. Requisita dados e transforma P em proprietário exclusivo.

Invalidate - Requisita o envio de invalidações a todos os caches remotos que estejam com o bloco com endereço A.

Mensagens originadas do local cache para o home directory.

DAP Spr.‘98 ©UCB 24

Invalidate – invalida uma cópia compartilhada de dados do endereço A.

Fetch – busca o bloco do endereço A e envia ao home directory. Muda o estado de A do remote cache para shared.

Fetch/invalidate – Busca o bloco do endereço A e envia ao home directory. Invalida o bloco no cache.

Data value reply – retorna um dado da memória (home memory).

Data write back – faz o write-back de um dado no endereço A.

Outras mensagens

DAP Spr.‘98 ©UCB 25

Diagrama de transição CPU- bloco de cache individual no protocolo baseado em

diretório

processador local - preto diretório - cinza

DAP Spr.‘98 ©UCB 26

CPU -Cache State Machine• State machine

for CPU requestsfor each memory block

• Invalid stateif in memory

Fetch/Invalidateor Miss due to

address conflict:send Data Write Back message

to home directory

Invalidateor Miss due to

address conflict:Invalid

Shared(read/only)

Exclusive(read/write)

CPU Read

CPU Read hit

Send Read Missmessage

CPU Write: Send Write Miss msg to h.d.

CPU Write:Send Write Miss messageto home directory

CPU read hitCPU write hit

Fetch: send Data Write Back message to home directory

DAP Spr.‘98 ©UCB 27

Diagrama de transição para o diretório.

Os negritos indicam as ações tomadas pelo diretório em resposta à requisição. Todas as requisições são causadas externamente.

DAP Spr.‘98 ©UCB 28

Directory State Machine• State machine

for Directory requests for each memory block

• Uncached stateif in memory

Data Write Back:Sharers = {}

(Write back block)

UncachedShared

(read only)

Exclusive(read/write)

Read miss:Sharers = {P}send Data Value Reply

Write Miss: send Invalidate to Sharers;then Sharers = {P};send Data Value Reply msg

Write Miss:Sharers = {P}; send Data Value Replymsg

Read miss:Sharers += {P}; send Fetch;send Data Value Replymsg to remote cache(Write back block)

Read miss: Sharers += {P};send Data Value Reply

Write Miss:Sharers = {P}; send Fetch/Invalidate;send Data Value Replymsg to remote cache

DAP Spr.‘98 ©UCB 29

Example

P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value

P1: Write 10 to A1

P1: Read A1P2: Read A1

P2: Write 40 to A2

P2: Write 20 to A1

A1 and A2 map to the same cache block

Processor 1 Processor 2 Interconnect MemoryDirectory

DAP Spr.‘98 ©UCB 30

Example

P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value

P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0

P1: Read A1P2: Read A1

P2: Write 40 to A2

P2: Write 20 to A1

A1 and A2 map to the same cache block

Processor 1 Processor 2 Interconnect MemoryDirectory

DAP Spr.‘98 ©UCB 31

Example

P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value

P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0

P1: Read A1 Excl. A1 10P2: Read A1

P2: Write 40 to A2

P2: Write 20 to A1

A1 and A2 map to the same cache block

Processor 1 Processor 2 Interconnect MemoryDirectory

DAP Spr.‘98 ©UCB 32

Example

P2: Write 20 to A1

A1 and A2 map to the same cache block

P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value

P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0

P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1

Shar. A1 10 Ftch P1 A1 10 10Shar. A1 10 DaRp P2 A1 10 A1 Shar.{P1,P2} 10

1010

P2: Write 40 to A2 10

Processor 1 Processor 2 Interconnect MemoryDirectory

A1

Write BackWrite Back

DAP Spr.‘98 ©UCB 33

Example

P2: Write 20 to A1

A1 and A2 map to the same cache block

P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value

P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0

P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1

Shar. A1 10 Ftch P1 A1 10 10Shar. A1 10 DaRp P2 A1 10 A1 Shar.{P1,P2} 10Excl. A1 20 WrMs P2 A1 10

Inv. Inval. P1 A1 A1 Excl. {P2} 10P2: Write 40 to A2 10

Processor 1 Processor 2 Interconnect MemoryDirectory

A1

DAP Spr.‘98 ©UCB 34

Example

P2: Write 20 to A1

A1 and A2 map to the same cache block

P1 P2 Bus Directory Memorystep StateAddr ValueStateAddrValueActionProc. Addr Value Addr State{Procs}Value

P1: Write 10 to A1 WrMs P1 A1 A1 Ex {P1}Excl. A1 10 DaRp P1 A1 0

P1: Read A1 Excl. A1 10P2: Read A1 Shar. A1 RdMs P2 A1

Shar. A1 10 Ftch P1 A1 10 10Shar. A1 10 DaRp P2 A1 10 A1 Shar.{P1,P2} 10Excl. A1 20 WrMs P2 A1 10

Inv. Inval. P1 A1 A1 Excl. {P2} 10P2: Write 40 to A2 WrMs P2 A2 A2 Excl. {P2} 0

WrBk P2 A1 20 A1 Unca. {} 20Excl. A2 40 DaRp P2 A2 0 A2 Excl. {P2} 0

Processor 1 Processor 2 Interconnect MemoryDirectory

A1


Recommended