1 / 34

Multithreading e multiprocessamento (continuação)

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

base
Download Presentation

Multithreading e multiprocessamento (continuação)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Multithreading e multiprocessamento(continuação)

  2. Coerência de cache

  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.

  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).

  5. Invalidação na escrita 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.

  6. Multiprocessador com memória compartilhada usa protocolo snooping

  7. Protocolo snooping

  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.

  9. Write hit – modified – escreve dado no cache Write 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.

  10. Diagrama de transição das ações originadas pelo processador Solicitação CPU – tipo normal Operação – tipo negrito

  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.

  12. Diagrama de transiçãodas ações originadas pelo barramento Solicitação Bus – tipo normal Operação – tipo negrito

  13. Diagrama completo CPU – preto Bus – cinza Atividade - negrito

  14. Example CPU Read hit Remote Write or Miss Shared Invalid Readmiss on bus Writemiss on bus Remote Write or Miss Write Back CPU Write Place Write Miss on Bus Remote Read Write Back Exclusive CPU read hit CPU write hit Bus Processor 1 Processor 2 Memory Assumes initial cache state is invalid and A1 and A2 map to same cache block, but

  15. CPU Read hit Remote Write or Miss Shared Invalid Readmiss on bus Writemiss on bus Remote Write or Miss Write Back CPU Write Place Write Miss on Bus Remote Read Write Back Exclusive CPU read hit CPU write hit Example: Step 1 Assumes initial cache state is invalid and A1 and A2 map to same cache block, but . Active arrow =

  16. CPU Read hit Remote Write or Miss Shared Invalid Readmiss on bus Writemiss on bus Remote Write or Miss Write Back CPU Write Place Write Miss on Bus Remote Read Write Back Exclusive CPU read hit CPU write hit Example: Step 2 Assumes initial cache state is invalid and A1 and A2 map to same cache block, but

  17. CPU Read hit Remote Write or Miss Shared Invalid Readmiss on bus Writemiss on bus Remote Write or Miss Write Back CPU Write Place Write Miss on Bus Remote Read Write Back Exclusive CPU read hit CPU write hit Example: Step 3 A1 Assumes initial cache state is invalid and A1 and A2 map to same cache block, But

  18. CPU Read hit Remote Write or Miss Shared Invalid Readmiss on bus Writemiss on bus Remote Write or Miss Write Back CPU Write Place Write Miss on Bus Remote Read Write Back Exclusive CPU read hit CPU write hit Example: Step 4 A1 Assumes initial cache state is invalid and A1 and A2 map to same cache block, but

  19. CPU Read hit Remote Write or Miss Shared Invalid Readmiss on bus Writemiss on bus Remote Write or Miss Write Back CPU Write Place Write Miss on Bus Remote Read Write Back Exclusive CPU read hit CPU write hit Example: Step 5 A1 A1 Assumes initial cache state is invalid and A1 and A2 map to same cache block, but

  20. Multiprocessamento com memória distribuída e o protocolo baseado em diretório

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

  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.

  23. Mensagens originadas do local cache para o home directory. 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.

  24. Outras mensagens 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.

  25. Diagrama de transição CPU- bloco de cache individual no protocolo baseado em diretório processador local - preto diretório - cinza

  26. CPU -Cache State Machine CPU Read hit Invalidateor Miss due to address conflict: • State machinefor CPU requestsfor each memory block • Invalid stateif in memory Shared (read/only) Invalid CPU Read Send Read Miss message CPU Write:Send Write Miss msg to h.d. CPU Write: Send Write Miss message to home directory Fetch/Invalidate or Miss due to address conflict: send Data Write Back message to home directory Fetch: send Data Write Back message to home directory Exclusive (read/write) CPU read hit CPU write hit

  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.

  28. Directory State Machine Read miss: Sharers += {P}; send Data Value Reply • State machinefor Directory requests for each memory block • Uncached stateif in memory Read miss: Sharers = {P} send Data Value Reply Shared (read only) Uncached Write Miss: Sharers = {P}; send Data Value Reply msg Write Miss: send Invalidate to Sharers; then Sharers = {P}; send Data Value Reply msg Data Write Back: Sharers = {} (Write back block) Read miss: Sharers += {P}; send Fetch; send Data Value Reply msg to remote cache (Write back block) Write Miss: Sharers = {P}; send Fetch/Invalidate; send Data Value Reply msg to remote cache Exclusive (read/write)

  29. Example Processor 1 Processor 2 Interconnect Directory Memory P2: Write 20 to A1 A1 and A2 map to the same cache block

  30. Example Processor 1 Processor 2 Interconnect Directory Memory P2: Write 20 to A1 A1 and A2 map to the same cache block

  31. Example Processor 1 Processor 2 Interconnect Directory Memory P2: Write 20 to A1 A1 and A2 map to the same cache block

  32. Example Processor 1 Processor 2 Interconnect Directory Memory A1 P2: Write 20 to A1 Write Back A1 and A2 map to the same cache block

  33. Example Processor 1 Processor 2 Interconnect Directory Memory A1 P2: Write 20 to A1 A1 and A2 map to the same cache block

  34. Example Processor 1 Processor 2 Interconnect Directory Memory A1 P2: Write 20 to A1 A1 and A2 map to the same cache block

More Related