Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

<p>troca de contexto após paradas (stalls) mais longas</p><p>(por exemplo, falhas na cache L2).</p><p>- Simplifica o hardware, mas não "esconde"paradas de tempo</p><p>mais curtas, como dependências de dados.</p><p>- Objetivo é melhorar performance geral, pois diminui impacto das</p><p>latências mais longas. 29</p><p>Multithreading Simultâneo (SMT)</p><p>- O SMT (multithreading simultâneo) é uma técnica que permite</p><p>múltiplas threads despacharem múltiplas instruções a cada ciclo</p><p>para unidades funcionais de um processador superescalar.</p><p>- SMT combina a capacidade de despacho de múltiplas instruções</p><p>das arquiteturas superescalares, com a habilidade de esconder</p><p>latência das arquiteturas multithreading.</p><p>- Elementos arquiteturais replicados: registradores, PC, unidades de</p><p>execução, etc. Usa a arquitetura superescalar para executar</p><p>múltiplas linhas.</p><p>- Inclusão de buffers (transactional hardware) para permitir que</p><p>threads executem em paralelo.</p><p>30</p><p>Multithreading Simultâneo (SMT)</p><p>- Melhora o multithreading mas não é um processador paralelo</p><p>- Multithreading horizontal</p><p>- Várias instruções por ciclo</p><p>- Necessita de um núcleo para execução fora de ordem</p><p>- Precisa haver suporte pelo Sistema Operacional.</p><p>- HT (Hyper-threading): nome da Intel para SMT</p><p>- As aplicações e o sistema operacional percebem cada thread</p><p>simultânea como um processador virtual separado</p><p>31</p><p>Tipos de Multithreading</p><p>32</p><p>Multithreading e SMT</p><p>Exemplo: se uma thread está executando uma operação de ponto</p><p>flutuante, outra poderia usar a unidade de inteiros.Sem SMT, somente</p><p>uma thread por vez. Thread-1 acessando a unidade de ponto flutuante.</p><p>33</p><p>Multithreading e SMT</p><p>Exemplo: se uma thread está executando uma operação de ponto</p><p>flutuante, outra poderia usar a unidade de inteiros.Sem SMT, somente</p><p>uma thread por vez. Thread-2 acessando a unidade de inteiros.</p><p>34</p><p>Multithreading e SMT</p><p>Com SMT, as duas threads executam em paralelo.</p><p>35</p><p>Multithreading e SMT</p><p>Com SMT, mas duas threads não podem usar a mesma unidade</p><p>funcional.</p><p>36</p><p>Paralelismo com vários núcleos</p><p>Processadores Multinúcleos</p><p>Multi-core: tipo especial de multiprocessador: todos os</p><p>processadores estão no mesmo invólucro (chip)</p><p>- Classificado como MIMD: diferentes núcleos executam diferentes</p><p>processos (threads) (Multiple Instructions) que operam em</p><p>diferentes partes da memória (Multiple Data)</p><p>- Portanto, multiprocessamento de memória compartilhada: todos</p><p>os núcleos compartilham a mesma memória física.</p><p>37</p><p>Processadores Multinúcleos</p><p>Motivação para vários núcleos:</p><p>- Dificuldade de aumentar frequências em processadores com núcleo</p><p>único;</p><p>- Pipelines longos: difíceis de projetar e verificar; complexidade para</p><p>tratar os hazards (dados e controle);</p><p>- O desempenho não aumenta na mesma medida do aumento da</p><p>quantidade de transistores, mas o consumo energético (dissipação</p><p>de potência: calor) sim;</p><p>- Mudança de paradigma: paralelismo a nível de threads e de</p><p>dados. Muitas novas aplicações são multithread.</p><p>38</p><p>Processadores Multinúcleos</p><p>Duas threads (Threads 1 e 3) executando em dois núcleos e em</p><p>cada uma usando a unidade de inteiros.</p><p>39</p><p>Processadores Multinúcleos</p><p>Duas threads (Threads 2 e 4) executando em dois núcleos e em</p><p>cada uma usando a unidade de ponto flutuante.</p><p>40</p><p>Processadores Multinúcleos com SMT</p><p>Diferentes combinações:</p><p>- Single-core, sem SMT: uniprocessador padrão</p><p>- Single-core, com SMT</p><p>- Multi-core, sem SMT</p><p>- Multi-core, com SMT: máquinas atuais:</p><p>Exemplo: quatro núcleos com SMT ativado pode executar até 8</p><p>threads simultâneas.</p><p>Obs.: geralmente, os processadores atuais habilitam cada núcleo</p><p>SMT com dois processadores virtuais (duas threads).</p><p>41</p><p>Processadores Multinúcleos com SMT habilitado</p><p>Exemplo de quatro threads executando em uma arquitetura com</p><p>dois núcleos.</p><p>42</p><p>Processadores Multinúcleos versus SMT</p><p>Multinúcleos: os chips podem acomodar vários núcleos com</p><p>tamanho e consumo energético menores (que são fáceis de</p><p>projetar e construir); possibilitam alto grau de paralelismo a</p><p>nível de threads.</p><p>SMT: são geralmente constituídos de um núcleo superescalar</p><p>grande e rápido; performance alta para uma única linha de</p><p>execução (uma ou várias, geralmente duas); na maior parte</p><p>dos casos explora o paralelismo a nível de instrução.</p><p>43</p><p>Processadores Multinúcleos: hierarquia de memória</p><p>Em SMT todas as caches são compartilhadas.</p><p>Em multinúcleos: problemas de coerência de cache, pois threads</p><p>de um mesmo programa podem estar executando em diferentes</p><p>núcleos (cada núcleo possui cache L1 privativa e alguns podem</p><p>ainda possuir uma cache L2 privativa também). As caches L3</p><p>geralmente são compartilhadas entre todos os núcleos. Portanto, o</p><p>processador deve implementar um protocolo de coerência de cache.</p><p>O mais usado é o MESI que usa dois bits para definir quatro estados</p><p>da linha da cache: Modified, Exclusive, Shared, Invalid. É um tipo</p><p>de protocolo de invalidação baseado em snooping (as caches ficam</p><p>na "escuta"dos barramentos para detectar leituras e escritas).</p><p>Obs.: a memória é sempre compartilhada entre ambos os tipos de</p><p>arquitetura.</p><p>44</p><p>Organização multinúcleos e organização das unidades de ca-</p><p>che</p><p>45</p><p>Introdução</p><p>Política de emissão de instruções - execução fora de ordem</p><p>Paralelismo de Threads e de Dados</p><p>Paralelismo com vários núcleos</p>troca de contexto após paradas (stalls) mais longas
(por exemplo, falhas na cache L2).
- Simplifica o hardware, mas não "esconde"paradas de tempo
mais curtas, como dependências de dados.
- Objetivo é melhorar performance geral, pois diminui impacto das
latências mais longas. 29
Multithreading Simultâneo (SMT)
- O SMT (multithreading simultâneo) é uma técnica que permite
múltiplas threads despacharem múltiplas instruções a cada ciclo
para unidades funcionais de um processador superescalar.
- SMT combina a capacidade de despacho de múltiplas instruções
das arquiteturas superescalares, com a habilidade de esconder
latência das arquiteturas multithreading.
- Elementos arquiteturais replicados: registradores, PC, unidades de
execução, etc. Usa a arquitetura superescalar para executar
múltiplas linhas.
- Inclusão de buffers (transactional hardware) para permitir que
threads executem em paralelo.
30
Multithreading Simultâneo (SMT)
- Melhora o multithreading mas não é um processador paralelo
- Multithreading horizontal
- Várias instruções por ciclo
- Necessita de um núcleo para execução fora de ordem
- Precisa haver suporte pelo Sistema Operacional.
- HT (Hyper-threading): nome da Intel para SMT
- As aplicações e o sistema operacional percebem cada thread
simultânea como um processador virtual separado
31
Tipos de Multithreading
32
Multithreading e SMT
Exemplo: se uma thread está executando uma operação de ponto
flutuante, outra poderia usar a unidade de inteiros.Sem SMT, somente
uma thread por vez. Thread-1 acessando a unidade de ponto flutuante.
33
Multithreading e SMT
Exemplo: se uma thread está executando uma operação de ponto
flutuante, outra poderia usar a unidade de inteiros.Sem SMT, somente
uma thread por vez. Thread-2 acessando a unidade de inteiros.
34
Multithreading e SMT
Com SMT, as duas threads executam em paralelo.
35
Multithreading e SMT
Com SMT, mas duas threads não podem usar a mesma unidade
funcional.
36
Paralelismo com vários núcleos
Processadores Multinúcleos
Multi-core: tipo especial de multiprocessador: todos os
processadores estão no mesmo invólucro (chip)
- Classificado como MIMD: diferentes núcleos executam diferentes
processos (threads) (Multiple Instructions) que operam em
diferentes partes da memória (Multiple Data)
- Portanto, multiprocessamento de memória compartilhada: todos
os núcleos compartilham a mesma memória física.
37
Processadores Multinúcleos
Motivação para vários núcleos:
- Dificuldade de aumentar frequências em processadores com núcleo
único;
- Pipelines longos: difíceis de projetar e verificar; complexidade para
tratar os hazards (dados e controle);
- O desempenho não aumenta na mesma medida do aumento da
quantidade de transistores, mas o consumo energético (dissipação
de potência: calor) sim;
- Mudança de paradigma: paralelismo a nível de threads e de
dados. Muitas novas aplicações são multithread.
38
Processadores Multinúcleos
Duas threads (Threads 1 e 3) executando em dois núcleos e em
cada uma usando a unidade de inteiros.
39
Processadores Multinúcleos
Duas threads (Threads 2 e 4) executando em dois núcleos e em
cada uma usando a unidade de ponto flutuante.
40
Processadores Multinúcleos com SMT
Diferentes combinações:
- Single-core, sem SMT: uniprocessador padrão
- Single-core, com SMT
- Multi-core, sem SMT
- Multi-core, com SMT: máquinas atuais:
Exemplo: quatro núcleos com SMT ativado pode executar até 8
threads simultâneas.
Obs.: geralmente, os processadores atuais habilitam cada núcleo
SMT com dois processadores virtuais (duas threads).
41
Processadores Multinúcleos com SMT habilitado
Exemplo de quatro threads executando em uma arquitetura com
dois núcleos.
42
Processadores Multinúcleos versus SMT
Multinúcleos: os chips podem acomodar vários núcleos com
tamanho e consumo energético menores (que são fáceis de
projetar e construir); possibilitam alto grau de paralelismo a
nível de threads.
SMT: são geralmente constituídos de um núcleo superescalar
grande e rápido; performance alta para uma única linha de
execução (uma ou várias, geralmente duas); na maior parte
dos casos explora o paralelismo a nível de instrução.
43
Processadores Multinúcleos: hierarquia de memória
Em SMT todas as caches são compartilhadas.
Em multinúcleos: problemas de coerência de cache, pois threads
de um mesmo programa podem estar executando em diferentes
núcleos (cada núcleo possui cache L1 privativa e alguns podem
ainda possuir uma cache L2 privativa também). As caches L3
geralmente são compartilhadas entre todos os núcleos. Portanto, o
processador deve implementar um protocolo de coerência de cache.
O mais usado é o MESI que usa dois bits para definir quatro estados
da linha da cache: Modified, Exclusive, Shared, Invalid. É um tipo
de protocolo de invalidação baseado em snooping (as caches ficam
na "escuta"dos barramentos para detectar leituras e escritas).
Obs.: a memória é sempre compartilhada entre ambos os tipos de
arquitetura.
44
Organização multinúcleos e organização das unidades de ca-
che
45
	Introdução
	Política de emissão de instruções - execução fora de ordem
	Paralelismo de Threads e de Dados
	Paralelismo com vários núcleos

Mais conteúdos dessa disciplina