resumo arquitetura

3
Resumo Arquitetura Desempenho de uma arquitetura Um programa precisa de certo número de: instruções, ciclos, segundos. Essas unidades são representadas por: tempo de ciclo (segundos por ciclo), velocidade de clock (ciclos por segundo) e CPI (ciclos por instrução). O desempenho é determinado pelo tempo de execução. Em uma mesma arquitetura o número de instruções será o mesmo. “Faça o caso comum mais rápido” Lei de Amdahl Speedup indica quão mais rápido uma tarefa será executada em uma máquina com melhorias quando comparada com a máquina original Fração do tempo de computação original que pode ser convertida para aproveitar a melhoria Fórmula que calcula o speedup do processo inteiro Exemplo : Considere uma melhoria que roda 10 vezes mais rápido do que a máquina original, mas só pode ser utilizada 40% do tempo. Qual o Speedup? Fraction_en = 0,4 e Speedup_en = 10 Pipeline Prefetch (busca antecipada). Durante a execução, a memória está ociosa e pode ser usada para procurar a próxima instrução. Não chega a dobrar a velocidade de execução (desvios condicionais). Adiciona-se mais estágio ao pipeline. Busca de instrução (FI) Decodifica instrução (DI) Calcula operandos (CO) Executa instruções (FO) Escreve resultados (WO)

Upload: felipe-caravaggio

Post on 18-Jan-2016

12 views

Category:

Documents


0 download

TRANSCRIPT

Resumo Arquitetura

Desempenho de uma arquitetura

Um programa precisa de certo número de: instruções, ciclos, segundos. Essas unidades são representadas por: tempo de ciclo (segundos por ciclo), velocidade de clock (ciclos por segundo) e CPI (ciclos por instrução).

O desempenho é determinado pelo tempo de execução. Em uma mesma arquitetura o número de instruções será o mesmo.

“Faça o caso comum mais rápido”

Lei de Amdahl

Speedup indica quão mais rápido uma tarefa será executada em uma máquina com melhorias quando comparada com a máquina original

Fração do tempo de computação original que pode ser convertida para aproveitar a melhoria

Fórmula que calcula o speedup do processo inteiro

Exemplo: Considere uma melhoria que roda 10 vezes mais rápido do que a máquina original, mas só pode ser utilizada 40% do tempo. Qual o Speedup?

Fraction_en = 0,4 e Speedup_en = 10

Pipeline

Prefetch (busca antecipada). Durante a execução, a memória está ociosa e pode ser usada para procurar a próxima instrução. Não chega a dobrar a velocidade de execução (desvios condicionais).

Adiciona-se mais estágio ao pipeline.

Busca de instrução (FI)

Decodifica instrução (DI)

Calcula operandos (CO)

Executa instruções (FO)

Escreve resultados (WO)

Custos

Overhead da movimentação de dados entre estágios da pipeline (armazenamento temporário)

Lógica de controle mais complexa (dependências entre acessos a memória e registradores, controle de estágios).

Desempenho

t=atraso máximo de estágio, k=número máximo de estágios,

d=atraso máximo para propagação de sinais entre estágios,

n=número de instruções executadas, T= tempo para executar n instruções.

Resolvendo desvios

Múltiplos fluxos: usar dois pipelines.

Busca antecipada: Instrução-alvo é buscado (prefetch), assim como as instruções seguintes, esta fica nos registradores até que a instrução desvio seja executada.

Memória de laço de repetição (loop buffer): Verifica buffer antes de buscar na memória. Bom para loops pequenos.

Previsão de desvios: Prever que nunca ocorrerá (never taken) -> sempre busca a próxima instrução.

Prever que sempre ocorrerá (always taken) -> sempre busca a instrução alvo.

Previsão baseada no Opcode.

Previsão baseada em chaves de desvio tomado e não tomado.

Previsão baseada em histórico de desvios.

Atraso do desvio (delayed branch): Reorganizar as instruções de um programa de forma que o salto não execute até ser necessário.

Conflitos na Pipeline (Hazards)

Conflito Estrutural – Duas instruções precisam utilizar a mesma estrutura.

Conflito de Controle – Originado da necessidade de tomar uma decisão com base nos resultados de uma instrução (Desvios Condicionais).

Conflito de Dados – Quando se precisa de um dado que ainda está em seu processo de obtenção.

Técnicas para tratamento de conflitos

Forward (data hazard): Utilizar a técnica de adiantamento, ou seja, utilizar o dado assim que este estiver disponível, por exemplo, logo após este sair do AC, sem esperar que este seja gravado na memória primeiramente.

Forward com pipeline stall: Técnica descrita acima com a inclusão de uma instrução noOp.

CISC, RISC

Características da execução

As operações mais comuns, e que, portanto devem ser levadas em conta na melhora do desempenho são: atribuições, sentenças condicionais, chamadas de funções. Além disso os operando mais comuns são as variáveis locais escalares.

As implicações disso são um melhor suporte devido à otimização das características mais usadas ou que levam mais tempo. Grande número de registradores, projeto cuidado dos pipelines e conjunto de instruções simplificado.

Com mais registradores, temos mais registradores para variáveis locais, o que reduz o acesso à memória.

Janelas de registrador

Três áreas no conjunto de registradores: parâmetros, locais e temporários. Os temporários guardam os parâmetros para o próximo método (como se fosse uma pipeline). Isso reduz o acesso à memória.

Coloração de Grafos

É possível controlar o uso dos registradores através da lógica de coloração de grafos. Nós são registradores simbólicos. Nós que não podem ser coloridos são colocados na memória.

CISC

As intenções eram facilitar a escrita do compilador, melhorar a eficiência da execução e dar suporte a linguagens de alto nível. Isso seria feito através de um grande conjunto de instruções, mais modos de endereçamento. A ideia de que os programas seriam menores eram ilusórias pois as instruções eram complexas.

RISC

Grande número de registradores de propósito geral. Uso de compiladores para otimizar o uso dos registradores. Conjunto de instruções limitados e simples. Otimização do pipeline de instruções.

Maior parte das instruções é de registrador para registrador.