Multiprocessadores e Paralelismo nível de Thread

Documentos relacionados
speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

Arquitetura de Computadores. Processamento Paralelo

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Multiprocessamento. Patterson & Hennessy Capítulo 9. Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

SSC0611 Arquitetura de Computadores

Organização de Computadores II. Arquiteturas MIMD

Desafios do Mapeamento de Processos em Arquiteturas Many-Core

Caracterização de Sistemas Distribuídos

Processamento Paralelo

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Protocolos de Coerência de Memória Cache

Linguagem de Programação II

Organização e Arquitetura de Computadores I

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

Computadores e Programação (DCC/UFRJ)

Multiprogramação leve em arquiteturas multi-core

SSC510 Arquitetura de Computadores. 6ª aula

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

Infraestrutura de Hardware. Explorando Desempenho com a Hierarquia de Memória

Arquiteturas Paralelas

Memória Cache. Walter Fetter Lages.

Infraestrutura de Hardware. Explorando a Hierarquia de Memória

Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano

Disciplina de Arquitetura de Computadores

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Sistemas Distribuídos

Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas MIMD

SSC0902 Organização e Arquitetura de Computadores

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

Faculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Unidade 12: Introdução ao Paralelismo:

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

Memória Cache. Aula 24

Arquitetura de Computadores. Prof. João Bosco Jr.

Arquitetura de Computadores Aula 11 - Multiprocessamento

periféricos: interfaces humano-computador (HCI) arquivo de informação comunicações

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

Arquiteturas paralelas Parte 1

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

Programação Distribuída e Paralela. Jorge Barbosa

Barramento. Prof. Leonardo Barreto Campos 1

Arquitetura e Organização de Processadores. Aulas 9 e 10. Memória cache

Sistemas Operacionais

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Capítulo 7 Sistemas de Memória. Ch7a 1

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PARALELISMO: SMP E PROCESSAMENTO VETORIAL. Prof. Dr. Daniel Caetano

Sistemas Operacionais. Conceitos de Hardware

Barramento CoreConnect

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Hierarquia de Memória. Sistemas de Computação André Luiz da Costa Carvalho

Correção de Erros. Erros de memória de semicondutores podem ser:

MEMÓRIA COMPARTILHADA DISTRIBUÍDA

Sistemas Operacionais

Memória Cache Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Parte I Multiprocessamento

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP

Organização e Arquitetura de Computadores I

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PARALELISMO: SMP E PROCESSAMENTO VETORIAL. Prof. Dr. Daniel Caetano

Transcrição:

Multiprocessadores e Paralelismo nível de Thread

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

Além de ILP. Em algumas aplicações existem paralelismo natural Thread Level Parallelism Data Level Parallelism

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

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.

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)

Time (processor cycle) Multithreaded Categories Superscalar Fine-Grained Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot 8

Fine-Grained Multithreading

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

Time (processor cycle) Multithreaded Categories Superscalar Fine-Grained Coarse-Grained Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot 11

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

Coarse-Grained Multithreading

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

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?

Simultaneous Multi-threading... Cycle One thread, 8 units 1 2 3 4 5 6 7 8 M M FX FX FP FP BR CC Two threads, 8 units Cycle 1 2 3 4 5 6 7 8 M M FX FX FP FP BR CC 9 9 M = Load/Store, FX = Fixed Point, FP = Floating Point, BR = Branch, CC = Condition Codes 16

Simultaneous Multithreading (SMT) Podemos usar multithread em uma máquina out-oforder? 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 12/3/2018 17

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

Time (processor cycle) Multithreaded Categories Superscalar Fine-Grained Coarse-Grained Simultaneous Multithreading Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot 19

SMT 20

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

Exemplos

Exemplos

Exemplos

Desempenho dos Processadores

Time (processor cycle) Multithreaded Categories Simultaneous Superscalar Fine-Grained Coarse-Grained Multiprocessing Multithreading Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Idle slot 26

Interesse em Multiprocessadores Uma crescente utilização de servidores Um crescimento em aplicações dataintensive Um melhor entendimento de como usar multiprocessadores para explorar threadlevel paralelismo Investimento em replicação é mais atrativo que investimento em um projeto exclusivo.

Flynn s Taxonomy M.J. Flynn, "Very High-Speed Computers", Proc. of the IEEE, V 54, 1900-1909, Dec. 1966. Single Instruction Single Data (SISD) (Uniprocessor) Multiple Instruction Single Data (MISD) (????) Single Instruction Multiple Data SIMD (single PC: Vector, CM- 2) Multiple Instruction Multiple Data MIMD (Clusters, SMP servers) 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

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

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.

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

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 Pn C C... C M IO Centralized Memory

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 P0 P1 Pn C C C M IO M IO... M IO Interconnection Network Distributed Memory

Centralized vs. Distributed Memory Scale P0 P1 Pn P0 P1 Pn C C... C M C IO M C IO... M C IO M IO Interconnection Network Centralized Memory Distributed Memory

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 Access time)

Exemplos de Multiprocessadores

Exemplos de Multiprocessadores

Multi-core Multiprocessador implementado em um único circuito integrado

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

Multi-Core Processor

Cores homegêneos Superscalares Intel Core 2 Duo (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.

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%

Resposta usando Lei de Amdahl Speedup overall 80 ( 79 = = 80 = ( 1 Fraction ) ( 1 Fraction ) ( 1 Fraction ) 80 Fraction Fraction parallel parallel parallel 1 enhanced Fraction Speedup 1 Fraction + 100 Fractionparallel + ) 100 0.8 Fraction parallel + parallel parallel parallel = 1 parallel = 79 / 79.2 = 99.75%

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

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

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 uso de cache.

Multi-processadores de Memória Compartilhada

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

Exemplo de problema de Coerência de Cache u :5 P 1 P 2 P 3 u =? u =? 4 $ $ 5 $ u :5 3 u= 7 1 u:5 2 I/O devices Memory 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

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. P 1 u =? P 2 P 3 $ $ $ u :5 u:5 I/O devices Memory

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 P 1 u = =7? 3 P 2 P 3 $ $ $ u :5 u=7 2 u:5 Memory 1 I/O devices

Exemplo de problema de Coerência de Cache u :5 P 1 P 2 P 3 u =? u =? 4 $ $ 5 $ u :5 3 u= 7 1 u:5 2 I/O devices Memory 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

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.

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

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

Protocolo Snooping de Coerência de Cache

Protocolo Snooping de Coerência de Cache State Tag Data P 1 Bus snoop P n $ $ Mem I/O devices 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 Atualiza estado de compartilhamento do bloco de cache

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

Exemplo: Write-thru Invalidate P 1 P 2 P 3 u = 7 u = 7 3 4 $ $ 5 $ u :5 u :5 u= 7 1 u:5 u = 7 2 I/O devices Memory 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?

PROBLEMA 1: COMO GARANTIR QUE SÓ UM PROCESSADOR ESCREVE NA VARIÁVEL COMPARTILHADA?

Protocolo de Barramento Clock Bus Request Bus Grant R/W Address Cmd+Addr Data Data1 Data2 Só um processador usa o barramento por vez

Contenção de Barramento Dois processadores querem usar o barramento ao mesmo tempo P0 Bus req. P1 Bus req. Pn C C... C M IO

Contenção de Barramento Dois processadores querem usar o barramento ao mesmo tempo P0 Bus req. P1 Bus req. Pn C C... C Árbitro O processador P0 tem que esperar M IO

Módulos da Arquitetura State Tag Data P 1 Bus snoop P n Estados: Não válido, Válido, dirty $ Mem I/O devices $ Cache-memory transaction Protocolo de barramento: Requisição Comando Dado Acesso simultâneo: Só um processador ganha o acesso Decisão: árbitro Invalidação das demais cópias

PROBLEMA 2: ONDE ENCONTRAR A CÓPIA MAIS ATUALIZADA DO BLOCO DE CACHE?

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

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.

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

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.

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

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 CPU Read Place read miss on bus CPU Read hit Shared (read/only) CPU Write Place Write Miss on bus Cache Block State CPU read hit CPU write hit Exclusive (read/write) CPU Write Place Write Miss on Bus CPU Write Miss (?) Write back cache block Place write miss on bus

Mudança de estado para requisições da CPU para cada bloco da cache Snooping: Write-Back Substituição de Bloco Invalid CPU Read Place read miss on bus CPU Read hit Shared (read/only) CPU Write Place Write Miss on bus CPU read miss Write back block, Place read miss on bus CPU Read miss Place read miss on bus Cache Block State CPU read hit CPU write hit Exclusive (read/write) CPU Write Place Write Miss on Bus CPU Write Miss Write back cache block Place write miss on bus

Snooping: Write-Back - Bus Mudança de estado considerando operações do barramento para cada bloco de cache Invalid Write miss for this block Shared (read/only) Write miss for this block Write Back Block; (abort memory access) Exclusive (read/write) Read miss for this block Write Back Block; (abort memory access)

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 Cache Block State Write miss for this block Write Back Block; (abort memory access) CPU read hit CPU write hit Invalid CPU Read Place read miss CPU Write on bus Place Write Miss on bus Exclusive (read/write) Write miss for this block CPU read miss Write back block, Place read miss on bus CPU Read hit Shared (read/only) CPU Read miss Place read miss on bus CPU Write Place Write Miss on Bus Read miss for this block Write Back Block; (abort memory access) CPU Write Miss Write back cache block Place write miss on bus

Exemplo Processor 1 Processor 2 Bus Memory 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 Remote Write Write Back Invalid Remote Write Read miss on bus Write miss on bus Remote Read Write Back Shared CPU Write Place Write Miss on Bus CPU Read hit CPU Read Miss 75 CPU read hit CPU write hit Exclusive CPU Write Miss Write Back

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 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: Remote Write Write Back Invalid Remote Write Read miss on bus Write miss on bus Remote Read Write Back Shared CPU Write Place Write Miss on Bus CPU Read hit CPU Read Miss 76 CPU read hit CPU write hit Exclusive CPU Write Miss Write Back

Exemplo: Passo 2 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 Assuma que estado inicial da cache é não válido A1 e A2 mapeiam para o mesmo slot de cache mas A1!= A2 Remote Write Write Back Invalid Remote Write Read miss on bus Write miss on bus Remote Read Write Back Shared CPU Write Place Write Miss on Bus CPU Read hit CPU Read Miss 77 CPU read hit CPU write hit Exclusive CPU Write Miss Write Back

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 A1 Shar. A1 10 WrBk P1 A1 10 A1 10 Shar. A1 10 RdDa P2 A1 10 10 P2: Write 20 to A1 10 P2: Write 40 to A2 10 10 Assuma que estado inicial da cache é não válido A1 e A2 mapeiam para o mesmo slot de cache mas A1!= A2 Remote Write Write Back Invalid Remote Write Read miss on bus Write miss on bus Remote Read Write Back Shared CPU Write Place Write Miss on Bus CPU Read hit CPU Read Miss 78 CPU read hit CPU write hit Exclusive CPU Write Miss Write Back

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 A1 Shar. A1 10 WrBk P1 A1 10 A1 10 Shar. A1 10 RdDa P2 A1 10 A1 10 P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 10 P2: Write 40 to A2 10 10 Assuma que estado inicial da cache é não válido A1 e A2 mapeiam para o mesmo slot de cache mas A1!= A2 Remote Write Write Back Invalid Remote Write Read miss on bus Write miss on bus Remote Read Write Back Shared CPU Write Place Write Miss on Bus CPU Read hit CPU Read Miss 79 CPU read hit CPU write hit Exclusive CPU Write Miss 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 A1 P2: Read A1 Shar. A1 RdMs P2 A1 A1 Shar. A1 10 WrBk P1 A1 10 A1 10 Shar. A1 10 RdDa P2 A1 10 A1 10 P2: Write 20 to A1 Inv. Excl. A1 20 WrMs P2 A1 A1 10 P2: Write 40 to A2 WrMs P2 A2 10 Excl. A2 40 WrBk P2 A1 20 20 Assuma que estado inicial da cache é não válido A1 e A2 mapeiam para o mesmo slot de cache mas A1!= A2 Remote Write Write Back Invalid Remote Write Read miss on bus Write miss on bus Remote Read Write Back Shared CPU Write Place Write Miss on Bus CPU Read hit CPU Read Miss 80 CPU read hit CPU write hit Exclusive CPU Write Miss Write Back

Snooping State Tag Data P 1 Bus snoop P n Estados: Shared, Não válido, Exclusivo $ Mem I/O devices $ Cache-memory transaction Protocolo de barramento: Requisição Comando Dado Acesso simultâneo: Só um processador ganha o acesso Decisão: árbitro Invalidação das demais cópias

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

Limitações Múltiplos barramentos e redes de interconexão Memória configurada em bancos de memória

Network-based Coherence

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.

Operação Básica de Diretório P P Cache Cache Interconnection Network 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 Memory Directory presence bits dirty bit 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;... }...

Operação Básica de Diretório

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

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

Protocolo baseado em Diretório Interconnection Network Directory Directory Directory Local Memory Local Memory Local Memory Cache Cache Cache CPU 0 CPU 1 CPU 2

Protocolo baseado em Diretório Interconnection Network Bit Vector Directories X U 0 0 0 Memories X 7 Caches CPU 0 CPU 1 CPU 2

CPU 0 lê X Interconnection Network Read Miss Directories X U 0 0 0 Memories X 7 Caches CPU 0 CPU 1 CPU 2

CPU 0 lê X Interconnection Network Directories X S 1 0 0 Memories X 7 Caches CPU 0 CPU 1 CPU 2

CPU 0 lê X Interconnection Network Directories X S 1 0 0 Memories X 7 Caches X 7 CPU 0 CPU 1 CPU 2

CPU 2 lê X Interconnection Network Directories X S 1 0 0 Memories Read Miss X 7 Caches X 7 CPU 0 CPU 1 CPU 2

CPU 2 lê X Interconnection Network Directories X S 1 0 1 Memories X 7 Caches X 7 CPU 0 CPU 1 CPU 2

CPU 2 lê X Interconnection Network Directories X S 1 0 1 Memories X 7 Caches X 7 X 7 CPU 0 CPU 1 CPU 2

CPU 0 escreve 6 em X Write Miss Interconnection Network Directories X S 1 0 1 Memories X 7 Caches X 7 X 7 CPU 0 CPU 1 CPU 2

CPU 0 escreve 6 em X Interconnection Network Directories X S 1 0 1 Memories Invalidate X 7 Caches X 7 X 7 CPU 0 CPU 1 CPU 2

CPU 0 escreve 6 em X Interconnection Network Directories X E 1 0 0 Memories X 7 Caches X 6 CPU 0 CPU 1 CPU 2

CPU 1 lê X Interconnection Network Read Miss Directories X E 1 0 0 Memories X 7 Caches X 6 CPU 0 CPU 1 CPU 2

CPU 1 lê X Interconnection Network Switch to Shared Directories X E 1 0 0 Memories X 7 Caches X 6 CPU 0 CPU 1 CPU 2

CPU 1 lê X Interconnection Network Directories X E 1 0 0 Memories X 6 Caches X 6 CPU 0 CPU 1 CPU 2

CPU 1 lê X Interconnection Network Directories X S 1 1 0 Memories X 6 Caches X 6 X 6 CPU 0 CPU 1 CPU 2

CPU 2 escreve 5 em X Interconnection Network Directories X S 1 1 0 Memories Write Miss X 6 Caches X 6 X 6 CPU 0 CPU 1 CPU 2

CPU 2 escreve 5 em X Interconnection Network Directories X S 1 1 0 Memories X 6 Caches X 6 X 6 CPU 0 CPU 1 CPU 2

CPU 2 escreve 5 em X (Write back) Interconnection Network Directories X E 0 0 1 Memories X 6 Caches X 5 CPU 0 CPU 1 CPU 2

CPU 0 escreve 4 em X Interconnection Network Directories X E 0 0 1 Memories X 6 Caches X 5 CPU 0 CPU 1 CPU 2

CPU 0 escreve 4 em X Interconnection Network Directories X E 1 0 0 Memories Take Away X 6 Caches X 5 CPU 0 CPU 1 CPU 2

CPU 0 escreve 4 em X Interconnection Network Directories X E 1 0 0 Memories X 5 Caches X 5 CPU 0 CPU 1 CPU 2

CPU 0 escreve 4 em X Interconnection Network Directories X E 1 0 0 Memories X 5 Caches CPU 0 CPU 1 CPU 2

CPU 0 escreve 4 em X Interconnection Network Directories X E 1 0 0 Memories X 5 Caches X 5 CPU 0 CPU 1 CPU 2

CPU 0 escreve 4 em X Interconnection Network Directories X E 1 0 0 Memories X 5 Caches X 4 CPU 0 CPU 1 CPU 2

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, Exemplo T1

Exemplo T1

Exemplo T1

Comparação T1 e Superescalares

Comparação T1 e Superescalares

Comparação T1 e Superescalares

Comparação T1 e Superescalares