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