Paralelismo em nível de instruções...
Transcript of Paralelismo em nível de instruções...
+
Paralelismo em nível de
instruções e
processadores
superescalares
Superescalar
Termo criado em 1987
Refere-se a uma máquinaprojetada para melhorar o desempenho da execução
de instruções escalares
Na maioria das aplicaçõesa maior parte das
operações é de grandezasescalares
Representa o próximopasso na evolução do
desempenho de processadores de
propósito geral
A essência da abordagemé a habilidade de
executar instruçõesindependentemente e concorrentemente emdiferentes pipelines
O conceito pode seraprofundado permitindo
que instruções sejamexecutadas em uma
sequência diferente da ordem do programa
Organização escalar e superescalar
comparação
Organização escalar e superescalar
comparação
Melhorias de desempenho das máquinas
superescalares
+
Comparação
entre
superpipeline
e
superescalar
+Limitações
◼ Paralelismo no nível de instrução
◼ Refere-se ao nível no qual as instruções de um
programa podem ser executadas em paralelo
◼ Uma combinação de otimização baseada em
compilador e técnicas de hardware que podem ser
usadas para maximizar o paralelismo em nível de
instrução
+Limitações
◼ Dependência de dados verdadeira
◼ Dependência procedural
◼ Conflito de recursos
◼ Dependência de saída
◼ Antidependência
+
Efeitos das dependências
+Questões de projeto
◼ Paralelismo em nível de instrução
◼ Instruções em uma sequência são independents
◼ Podem ser executadas em paralelo por
sobreposição
◼ Determinada por dependência de dados e
procedural
◼ Sequência da esquerda apresenta paralelismo
Paralelismo em nível de instrução e paralelismo de
máquina
+Questões de projeto
◼ Paralelismo de máquina
◼ Habilidade do processador obter vantagem do
paralelismo em nível de instrução
◼ Determinada pelo número de instruções que
podem ser executadas ao mesmo tempo (número
de pipelines paralelos)
Paralelismo em nível de instrução e paralelismo de
máquina
+Política de emissão de instruções
◼ Emissão de instrução
◼ Refere-se ao processo da iniciação da execução da
instrução em unidades funcionais do processador
◼ Política de emissão de instrução
◼ Refere-se ao protocolo usado para emitir instruções
◼ A emissão de instrução ocorre quando a instrução do
estágio de decodificação para o primeiro estágio de
execução do pipeline
+Política de conclusão de instruções
◼ Conclusão de instrução
◼ Refere-se ao processo da finalização da instrução;
◼ Política de conclusão de instrução
◼ Refere-se ao protocolo usado para concluir a instrução;
◼ A conclusão da instrução ocorre quando a instrução
passa do ultimo estágio de execução para o estágio de
escrita em memória ou registradores.
+Política de execução de instruções
◼ Três tipos de ordem são importantes:
◼ Busca de instrução
◼ Execução da instrução
◼ Ordem na qual a instrução atualiza o conteúdo da
memória e registradores
◼ Políticas de emissão de instrução superescalares
podem ser agrupadas na categorias seguintes:
◼ Emissão em ordem com conclusão em-ordem
◼ Emissão em-ordem com conclusão fora-de-ordem
◼ Emissão fora-de-ordem com conclusão fora-de-
ordem
+Política de execução de instruções
◼ Razão para emissão em ordem:
◼ Facilidade para unidade de decodificação identificar
conflitos de dados, pois sabe quais são todos
registradores e/ou memória estão sendo utilizados
pelas instruções anteriores;
◼ Razão para conclusão em ordem:
◼ Ocorrência de interrupção pode ser tratada sem
dificuldade, pois no momento da interrupção ou
exceção a última instrução que terminou o fez antes de
todas que vinham antes dela;
◼ Registradores e memória ficam consistentes e seu
conteúdo é mais facilmente recuperável quando da
volta da interrupção.
+ Exemplo de execução com tabela
de registradores (placar)◼ Oito registradores (R0 até R7);
◼ Todas as instruções usam 3 operandos: dois para leiturae um para escrita;
◼ Tão logo a decodificação finaliza, a execução começa:
◼ Se houver conflito, a decoficação não finaliza e deveesperar pela solução do conflito;
◼ Necessário conhecer apenas os registradores usadospelas instruções anteriores;
◼ Adição consome um ciclo e multiplicação dois:
◼ Unidade de decodificação pode emitir até duasinstruções por ciclo de relógio.
+ Placar de estado para emissão e
conclusão em ordem (scoreboard)
+ Placar de estado para emissão e
conclusão em ordem (scoreboard)
+ Placar de estado para emissão e
conclusão fora de ordem
(scoreboard)
+ Placar de estado para emissão e
conclusão for a de ordem
(scoreboard)
+Política de execução de instruções – outro
exemplo
◼ Características
◼ I1 requer dois ciclos para executar
◼ I3 e I4 tem conflito pela mesma unidade funcional
◼ I5 depende de valor produzido por I4
◼ I5 e I6 tem conflito por uma unidade functional
◼ Instruções são buscadas em pares e devem esperar
até o par de instruções passarem para o estágio de
decodificação
+
Emissão em ordem
e conclusão em
ordem
◼ Para garantir conclusão emordem
◼ quando existe conflito porunidades funcionais ou
◼ quando requer dois ciclos naunidade funcional
◼ a emissão de instrução pára
+Emissão em ordem
e conclusão fora
de ordem
+
◼ Emissão em ordem e conclusão
fora de ordem pode criar
dependência de saída
◼ No exemplo, I3 poderia concluir
antes de I1
◼ I4 seria inconsistente;
Emissão em ordem
e conclusão fora
de ordem
+Emissão e
conclusão fora de
ordem
Organização para emissão fora-de-
ordem e conclusão fora-de-ordem
Organização para emissão fora-de-
ordem e conclusão fora-de-ordem
Renomeação de registradores
Dependência de saída surgem porque osvalores nos registradores podem nãorefletir mais a sequência de valoresdefinida pelo fluxo do programa
Podem resultar em retardamento/parade de estágio do pipeline
Solução: alocação dinâmica de registradores
Renomeação de registradores
Aceleração de várias organizações
de máquinas sem dependências
procedurais
+Predição de desvio
◼ Qualquer máquina de alto desempenho com pipeline
deve abordar a questão dos desvios
◼ Processadores Intel tratam o problema obtendo a
próxima instrução sequencial após o desvio e
buscando de forma especulativa a instrução alvo do
desvio
◼ Explorar estratégia de desvio atrasado
◼ Processador sempre executa a instrução simples que
imediatamente segue o desvio
◼ Mantém o pipeline cheio enquanto o processador
obtem o novo fluxo de instrução
+Predição de desvio
◼ Máquinas Superescalares:
◼ Estratégia de desvio atrasado tem menos apelo
◼ Utilizam técnicas de previsão desvio de
processadores pre-RISC
Ilustração conceitual de
processamento superescalar
Diagrama de blocos interno de
processamento superscalar
+Implementação superescalar
◼ Elementos chave:
◼ Estratégias de busca de instrução que obtém
simultanesamente várias instruções
◼ Lógica para determiner dependências verdadeiras
envolvendo valores de registradores e mecanismos
para transferir esses valores para onde eles forem
necessários durante a execução
◼ Mecanismo para iniciar ou emitir múltiplas instruções
em paralelo
+Implementação superescalar
◼ Elementos chave:
◼ Recursos para execução paralela de múltiplas
instruções, incluindo múltiplas unidades funcionais de
pipeline e hierarquias de memória capazes de
atender simultaneamente várias referências de
memória
◼ Mecanismos para concluir o estado do processo na
ordem correta
Diagrama
de bloco
do core i7
Diagrama de bloco do Intel
Pipeline do Intel
Branch target buffer e Tranlation
lookaside bufer
Microop armazenadas no trace
cache (4 bit campo de histórico)
Formação de traces: 1 a 4 microops
e 5+ em casos extremos
Inicio da execução fora de ordem
Buffer de reordenamento para execução
fora de ordem e 128 registradores
disponíveis para renomeação
Duas filas de microops: uma para
ALU e outra para memória
Escalonamento
Despacho seguindo a fila e a
dependência
Execução, uso dos registradores
renomeados
Verificação dos resultados
Checagem de desvio
Armazenamento do resultado do
desvio