1 ssc144 arquitetura de computadores introdução. 2 pipeline semelhante a uma linha de montagem de...
TRANSCRIPT
1
SSC144 Arquitetura de Computadores
Introdução
2
Pipeline Semelhante a uma linha de montagem de uma
indústria O produto passa por vários estágios de produção
Produtos em vários estágios do processo de produção
podem ser trabalhados simultaneamente
Em uma pipeline de instrução, novas entradas são
aceitas em uma extremidade antes que entradas
previamente aceitas apareçam como saída na outra
extremidade
3
Pre-busca (Prefetch) Ciclo da instrução em dois estágios:
Busca Execução
Sobreposição desses dois ciclos Busca acessa a memória Execução não acessa a memória Busca de uma nova instrução enquanto a anterior
está na fase de execução
4
Pre-busca (Prefetch) Aumenta o desempenho mas não dobra pois:
O tempo de busca é menor do que a execução Fazer a busca de mais de uma instrução?
Onde armazenar?
Qualquer salto condicional ou incondicional
significa que instruções que foram buscadas
devem ser descartadas
5
Ciclo maior Busca da instrução (FI) Decodificação da instrução (DI) Cálculo dos operandos (CO) Busca dos operandos (FO) Execução da instrução (EI) Escrita do resultado (WO)
6
Pipeline
7
Desvio em uma pipeline
8
Pipeline Problemas
Concorrência por recursos (barramentos, registradores, etc.)
Desvios condicionais ou incondicionais Dependência dos dados
9
Número de estágios Número de estágios pipeline:
Pentium III: 10 estágios Pentium 4 com HT: 31 estágios Athon XP: 10 estágios AMD64: 12 estágios
10
Evolução das arquiteturas
Arquitetura x86 Originalmente com palavras de 16 bits, sofreu
duas alterações: 1985 – de 16 para 32 bits – IA-32 (Inter Architecture) 2003 – de 32 para 64 bits - AMD introduziu o Atlhon 64
8086 16 bits 6 prefetched bytes do barramento para a unidade
de execução – início do pipeline Memória Segmentada (segmento:deslocamento)
11
Evolução das arquiteturas
80286 16 bits Pipeline de 4 estágios:
EU: unidade de execução de instruções BU: unidade de acesso e controle do barramento IU: unidade de decodificação de instruções AU: unidade de formação de endereços
Dois modos de endereçamento de memória Real: 8086 Protegido
12
Evolução das arquiteturas
80386 32 bits Três modos de endereçamento de memória:
Real: 8086 Protegido: protegido do 286 Virtual: uma ou mais máquinas virtuais do 8086 no modo
protegido 6 unidades de pipeline:
EU: unidade de execução de instruções BU: unidade de acesso e controle do barramento IU: unidade de decodificação de instruções PU: unidade de pré-fetch PgU: unidade de formação de endereço (paging unit) SU: unidade de formação de endereço (segmentation unit)
13
Evolução das arquiteturas
80486 Mesmo conjunto de instruções do 386 Do ponto de vista de hardware, houveram alterações:
Cache unificada de instruções e dados no chip Unidade de ponto flutuante (em algumas versões) Melhor interface de barramento
14
Evolução das arquiteturas
Pentium 32 bits Melhorias
Introdução do conceito de superescalar (2 caminhos de dados para inteiros e um para ponto flutuante)
64 bits para barramento de dados Pipeline de 5 estágios:
Prefetch First Decode Second Decode Execute Write Back
15
Arquiteturas RISC
Características: Instruções mais simples, demandando um
número fixo de ciclos de máquinas para sua execução
Uso de poucos e simples modos de endereçamento
Poucos formatos das instruções Apenas instruções de load/store referenciam
operandos na memória principal Cada fase de processamento da instrução tem a
duração fixa igual a um ciclo de máquina
16
Pipeline
Dependências ou Conflitos (Hazards) Conflitos Estruturais
Pode haver acessos simultâneos à memória feitos por 2 ou mais estágios.
Dependências de Dados As instruções dependem de resultados de instruções
anteriores, ainda não completadas. Dependências de Controle
A próxima instrução não está no endereço subseqüente ao da instrução anterior.
17
Problemas com Pipelines Conflitos Estruturais Ocorre quando duas instruções tentam
acessar o mesmo dispositivo ao mesmo tempo
Soluções: Duplicar unidades funcionais Aumentar o número de portas de acesso à
memória principal Separar cache de dados e de instruções (L1)
18
Problemas com Pipelines Conflitos por dados Dependências verdadeiras ou diretas
RAW (Read After Write) Possíveis soluções:
Colocação de instruções nop ou escalonamento adequado pelo processador
Adiantamento (técnica forwarding ou bypassing)
19
Problemas com Pipelines Conflitos por dados Dependências falsas
Ocorrem quando é possível iniciar ou terminar a execução das instruções fora de ordem, ou seja, não é possível determinar o valor dos registradores em cada instante com base apenas na seqüência de instruções
Antidependência WAR (Write After Read)
Dependência de saída WAW (Write After Write)
Solução usual: Renomeamento de registradores
20
Problemas com PipelinesConflitos de Controle Maneiras de se tratar as conseqüências de uma
parada no pipeline por causa dos desvios: Predição Estática de Desvios
O compilador faz uma predição se o desvio vai ser tomado ou não Geração de “bolhas” quando a predição é errada, baixa taxa de
acertos Não permite adaptações com relação ao comportamento do
programa Predição Dinâmica de Desvios
Existem mecanismos em “hardware” que fazem a predição baseada no comportamento daquele desvio no passado
Alta taxa de acertos
21
Paralelismo no nível de instrução Processadores Escalares Processadores Superescalares Processadores Pipelined Processadores Superpipelined Processadores VLIW (Very Large Instruction
Word)
22
Comparações: Pipeline, Superescalar e VLIW
[Ref : Hwang et al]
23
Paralelismo no nível de tarefas SMP
Mais de um processador compartilhando memória, discos e executam o mesmo SO
Multithread Mais de uma thread sendo executada, mas não
ao mesmo tempo SMT
Mais de uma thread sendo executada ao mesmo tempo
24
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