1 ssc114 arquitetura de computadores paralelismo no nível de instrução e de tarefas aula 8...
TRANSCRIPT
1
SSC114 Arquitetura de Computadores
Paralelismo no nível de instrução e de tarefas
Aula 8
01/09/10 (Turmas 1 e 2)
Profa. Sarita
2
Tipos de Paralelismo
BLP: Bit Level Parallelism Interno a instrução Explorado desde a década de 70
ILP: Instruction Level Parallelism Paralelismo entre instruções Explorado a partir do final da década de 80 Processadores cada vez mais complexos
DLP: Data Level Parallelism (em paralelo) Explorado em arquiteturas SIMD, Arranjos
Sistólicos, etc.
3
Tipos de Paralelismo
TLP: Task Level Parallelism Vários enfoques:
Processo Thread Job
Para cada enfoque tem-se diferentes arquiteturas
4
Paralelismo a nível de instrução Processadores Escalares Processadores Superescalares Processadores Pipelined Processadores Superpipelined Processadores VLIW
5
Processadores Superescalares Processadores Escalares
Uma instrução por ciclo Uma instrução terminada por ciclo
Processadores Superescalares Múltiplas instruções consideradas em um único
ciclo Múltiplas instruções podem ser terminadas em
um ciclo Desenvolvidos como uma alternativa a
processadores vetoriais
6
Processadores Superescalares Processador pipeline de 4 estágios
7
Processadores Superescalares Processador Superescalar com grau = 3 e
com pipeline de 4 estágios
8
Processadores Superescalares Um processador superescalar com grau m
pode finalizar até m instruções por ciclo Depende da dependência de dados, conflito por
recurso e dos desvios
9
O que significa Superescalar? Instruções comuns
aritméticas, load/store e desvios condicionais podem ser iniciados e executados independentemente
Aplicável igualmente a RISC e CISC na prática é implementado usualmente em
máquinas RISC
10
Por que Superescalar?
Maioria das operações realizadas em valores escalares
Melhora desempenho dessas operações para melhorar o desempenho total
Proposta foi aceita rapidamente Máquinas superescalares comerciais surgiram apenas +/-
2 anos após o surgimento do termo superescalar Máquinas RISCs comerciais levaram +/- 8 anos
11
Organização superescalar genérica Várias unidades funcionais organizadas em pipeline Ex.: duas op com inteiros
duas op com ponto flutuante
uma op de carga/armazenamento
12
Limitações
Paralelismo a nível de instrução Nível que as instruções podem ser executadas em paralelo
Otimizações baseadas: No compilador e em técnicas de hardware
Limitações intrínsecas: Dependência de dados verdadeira (escrita-leitura) Dependências de desvio Conflitos no uso de recursos Dependência de saída (escrita-escrita) Antidependência (leitura-escrita)
13
Processadores VLIW
VLIW – Very Large Instruction Word Explora paralelismo em nível de instrução Instruções de 128-1024 bits Cada instrução consiste de múltiplas
instruções independentes Diversas unidades funcionais interligadas por
um único registrador compartilhado
14
Abordagem VLIW
Cache/memory
FetchUnit
Single multi-operation
instruction
multi-operation instruction
FU FU FU
Register file
[Ref : Sima et al]
15
Abordagem Superescalar
Cache/memory
FetchUnit Multiple
instruction
Sequential stream of instructions
FU FU FU
Register file
Decode
and issue
unit
Instruction/control
Data
FU Funtional Unit
[Ref : Sima et al]
16
Comparações: Pipeline, Superescalar e VLIW
[Ref : Hwang et al]
17
Processadores VLIW x Superescalar Porque VLIW é menos popular que
superescalar? Compatibilidade entre códigos binários Mesmo compilador pode ser utilizado para
escalar e superescalar Exemplo de Superescalar: IBM RS/6000 Exemplo de VLIW: Crusoe TM 5400
18
Arquiteturas Superpipeline
É um pipeline com muitos estágios Estágios necessitam tempos de ciclo
menores Normalmente menos que a metade
Velocidade interna de clock duplicada Executa duas "atividades“ por ciclo de clock externo
Superescalar permite executar a busca em paralelo
19
Superescalar xSuperpipeline
20
Pontos importantes
Processador superescalar: Emprega vários pipelines de instrução independentes Cada pipeline com seus estágios, executando instruções
diferentes simultaneamente Novo nível de paralelismo: diversos fluxos de instrução cada vez
Processador precisa buscar várias instruções: Instruções próximas que sejam independentes e possam ser
executadas em paralelo (ao mesmo tempo) Problemas com a dependência de dados Identificadas as dependências, execução pode ser feita fora de
ordem
21
Pontos importantes
Dependências de dados podem ser solucionadas com: Registradores adicionais e renomeação de
referências a registradores
Dependências de controle RISCs puros empregam desvio atrasado Técnica não é adequada para processadores
superescalares São usados métodos tradicionais de predição de desvio
22
Paralelismo a nível de tarefas
Paralelismo a nível de thread Considera aplicações com múltiplas threads Várias opções:
Multithreading (MT) Superthreading Simultaneous Multithreading (SMT) ou Hyperthreading Múltiplos Cores
23
CPU com uma thread
RAM: 4 programas em execução
Front End: busca até 4 instruções
Sete pipelines de execução Programa vermelho em
execução Quadrados brancos:
estágios vazios Programas possuem uma
ou mais threads
24
Simultaneous Multiprocessing (SMP) Arquitetura com mais de um
processador que compartilham recursos de memória, discos e executam o mesmo SO.
Dois processos executam simultaneamente em dois processadores
No final – contexto é salvo e dois novos processos são colocados nas CPUs
25
Simultaneous Multiprocessing (SMP) Maior quantidade de
recursos Nenhum
procedimento para melhor utilização dos recursos
Menor utilização dos processadores
Evita chaveamento de contexto
26
Multithread
Técnica para diminuir as perdas associadas com processamento de uma única thread
A técnica é chamada de time-slice multithreading ou superthreading
O processador que utiliza essa técnica é chamado processador multithreaded
Processador multithreaded é capaz de executar mais de uma thread em um instante
27
Multithread
Threads compartilham suporte em hardware para troca entre threads em execução sem intervenção de software.
CPU possui informações sobre os estados associados com cada thread (contador de programa, registradores, etc.).
O hardware também deve conter um mecanismo para o escalonamento de thread, fetch e decodificação de instruções.
28
Multithread
Número menor de estados perdidos
Um estágio do pipeline só pode ter instrução de uma thread
Front End – 4 instruções por clock
Processador – 7 unidades funcionais
29
Multithreading
BTB and I-TLB
Decoder
Trace Cache
Rename/Alloc
Uop queues
Schedulers
Integer Floating Point
L1 D-Cache D-TLB
uCode ROMBTBL2 C
ache
and
Con
trol
Bus
Thread 1: floating point
30
Multithreading
BTB and I-TLB
Decoder
Trace Cache
Rename/Alloc
Uop queues
Schedulers
Integer Floating Point
L1 D-Cache D-TLB
uCode ROMBTBL2 C
ache
and
Con
trol
Bus
Thread 2: integer operation
31
Multithread
Multthreading auxilia nas esperas pela memória
Continua não explorando paralelismo dentro de threads
32
Simultaneous Multithreading (SMT) Também denominado Hyperthreading - HT Explora TLP (thread-level parallelism) e ILP
(instruction-level parallelism) Apresenta um melhor aproveitamento dos
recursos Enquanto uma thread pode estar usando
uma unidade de ponto flutuante, outra pode estar usando a unidade de inteiro
33
Simultaneous Multithreading (SMT)• 4 Programas na
Memória
• Front End recebe instruções de diferentes threads
34
Simultaneous Multithreading (SMT) Com SMT
BTB and I-TLB
Decoder
Trace Cache
Rename/Alloc
Uop queues
Schedulers
Integer Floating Point
L1 D-Cache D-TLB
uCode ROMBTBL2 C
ache
and
Con
trol
Bus
Thread 1: floating pointThread 2:integer operation
35
Formas de execução das threadsSuperescalar Simultaneous MultithreadingMultithreading
Issue slots
Clo
ck c
ycle
s
Empty Slot
Thread 1
Thread 2
Thread 3
Thread 4
36
Simultaneous Multithreading (SMT) Simula em um único processador físico dois
processadores lógicos, não sendo um processador paralelo real
Cada processador lógico possui um controlador de interrupção programável e conjunto de registradores
Outros recursos são compartilhados entre os processadores lógicos: cache de memória, unidade de execução, unidade lógica e aritmética, unidade de ponto flutuante e barramentos
37
Simultaneous Multithreading (SMT) O sistema operacional envia tarefas para os
processadores lógicos como se estivesse enviando para processadores físicos
Os sistemas operacionais e software aplicativos têm que suportar a tecnologia HyperThreading
38
Formas de execuçãdo das threads
AS - registradores e controlador de interrupção
39
Simultaneous Multithreading (SMT) A denominação HyperThreading foi
utilizada inicialmente pela Intel Segundo a Intel, a HyperThreading
oferece um aumento de desempenho de até 30% dependendo da configuração do sistema
40
Simultaneous Multithreading (SMT)Desempenho
Sandra (the System ANalyser, Diagnostic and Reporting Assistant)
HT:
• P4 melhora de ~52.5%
• Xeons melhora de ~28%
41
Simultaneous Multithreading (SMT)Desempenho Melhora no desempenho depende da
disponibilidade dos recursos compartilhados pelas threads em execução
Uma opção para obter melhor desempenho é considerar mais de um núcleo em cada processador
Duplicidade de recursos
42
Multi Core
Múltiplos núcleos de CPU em um processador
Execuções simultâneas de tarefas Cada núcleo com o seu pipeline Cada núcleo com os recursos necessários
para execução de seu programa
43
Multi Core
Possibilidade de Múltiplos núcleos
Intel – 2 núcleos Mainframes –
diversos núcleos
44
Multi Core
BTB and I-TLB
Decoder
Trace Cache
Rename/Alloc
Uop queues
Schedulers
Integer Floating Point
L1 D-Cache D-TLB
uCode ROM
BTBL2 C
ache
and
Con
trol
Bus
BTB and I-TLB
Decoder
Trace Cache
Rename/Alloc
Uop queues
Schedulers
Integer Floating Point
L1 D-Cache D-TLB
uCode ROM
BTBL2 C
ache
and
Con
trol
Bus
Thread 1 Thread 3 Thread 2 Thread 4
45
Multi CoreExemplo Programa de renderização de imagem Dividir a tela em blocos e associar uma
thread para cada bloco HyperThreading – processa duas ou mais threads
simultaneamente Sem HyperThreading - processa apenas uma
thread de cada vez. Processador Dual Core - pode executar o mesmo
programa de renderização e mais um outro qualquer.
46
Multi CoreVantagens Maior eficácia do sistema e desempenho
aprimorado de aplicativos em computadores executando vários aplicativos simultaneamente
Desempenho aprimorado para aplicativos multi-threaded
Bom desempenho para única aplicação com uma thread – processos do SO em outro núcleo
Desempenho superior em aplicativos que utilizam processamento de forma intensiva
47
Comparando
Núcleos podem usar SMT ou não Possíveis combinações:
Um único núcleo, sem SMT (processador normal) Um único núcleo, com SMT Mútiplos núcleos, sem SMT Mútliplos núcleos, com SMT
Números de possíveis threads simultaneamente: 2, 4, ou 8