Paralelismo em nível de instruções...

Preview:

Citation preview

+

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

Recommended