Arquitectura de Computadores II

Propaganda
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Arquitectura de Computadores II
Engenharia Informática (11545)
Tecnologias e Sistemas de Informação (6621)
Pipelining
Fonte: Arquitectura de Computadores, José Delgado, IST, 2004
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
1
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Processamento em Estágios (Pipelining)
• A microprogramação é sequencial. A microprogramação
divide o processamento de uma instrução em vários estágios:
– Busca instrução (BI)
– Descodifica instrução (DI)
– Busca operandos (BO)
– Executa instrução (EI)
– Escreve resultado (ER)
• O primeiro estágio de uma nova instrução (BI) só começa
após o fim do último estágio da instrução anterior (ER). O
processamento é sequencial.
BI
DI BO EI
ER BI
DI BO EI
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
ER BI
DI BO EI
ER
2
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
BI
DI BO EI
ER BI
DI BO EI
ER BI
DI BO EI
ER
• Se cada estágio for efectuado por um bloco de hardware
diferente, então é possível começar a tratar da instrução
seguinte mal acabe o primeiro estágio da instrução corrente.
BI
DI BO EI
BI
DI BO EI
BI
ER
DI BO EI
BI
» O tempo que cada instrução demora
a executar mantém-se. Mas o
processador completa
uma
instrução por cada ciclo de relógio!
ER
ER
DI BO EI
BI
ER
DI BO EI
BI
ER
DI BO EI
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
ER
3
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• A latência (tempo de espera até que uma dada instrução
acabe) mantém-se. O que melhora é o ritmo (número de
instruções executadas por unidade de tempo).
• Idealmente, o pipeline melhora o desempenho N
vezes (N = número dos estágios do pipeline), mas:
– Há
estágios
inactivos
durante
o
enchimento/esvaziamento, causados por exemplo pelos
saltos e chamadas de rotinas;
– Nem todas as instruções necessitam dos estágios todos;
– A frequência do relógio é limitada pelo estágio mais
lento;
– A sequência temporal foi alterada (escala de tempos
sobreposta), o que cria problemas de dependências (ler
um valor antes de ele ter sido produzido, por exemplo).
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
4
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• Uma das assumpções básicas do pipeline é que todos os
estágios demoram igual tempo a executar.
• Se considerarmos uma arquitectura tipo 80x86:
– Registo-memória (um dos operandos/resultado de uma
instrução pode estar num registo ou em memória);
– Formato de instruções altamente variável, com tamanhos
entre 1 e 17 bytes;
– Complexidade de instruções altamente variável, desde
muito simples (incrementar um registo) até push dos
registos todos, ou cópia de um vector em memória;
– Conjunto de instruções extenso, complexo e cheio de
excepções;
Assim, facilmente se constata que esta assumpção não se
verifica.
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
5
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Arquitecturas Complexas
• Este tipo de arquitecturas é designado por CISC (Complex
Instruction Set Computers) porque seguiu a filosofia de incluir
no hardware o maior número de funcionalidades possível.
• No entanto, verificou-se que:
– Os compiladores não geravam, em muitos casos, as
instruções mais complexas (preferindo sequências de
instruções mais simples, mas gerais e mais fáceis de
gerar)
– A complexidade dos circuitos tinha como consequência:
• as frequências de relógio eram limitadas pela
complexidade dos circuitos
• simples operações entre registos e acessos à memória
demoravam vários ciclos de relógio
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
6
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• Solução: filosofia RISC (Reduced Instruction Set Computer)
– arquitectura simples:
• Poucas instruções
• Todas com o mesmo tamanho
• Poucos formatos diferentes
• Arquitectura (registo-registo, ou load-store)
• Operações mais simples num só ciclo de relógio
• Mais registos (para compensar a falta da memória nos
operandos)
– compilador mais inteligente, que tem de:
• analisar melhor a semântica do programa (gestão dos registos)
• se preocupar com detalhes da arquitectura (conflitos do pipeline)
• gerar mais código do que num CISC (instruções mais simples...)
• A ideia geral é de que o simples não deve ser mais lento por
causa do complicado
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
7
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• RISC: Vantagens Arquitecturais
• Estas características podem ser vistas num processador como
o MIPS, que parece ter uma arquitectura muito “básica”;
• Por exemplo, não há PUSH nem CALL, tem de ser o
compilador a determinar se um dado valor deve ser
guardado em memória, tem de gerar instruções para
manipular o SP, …
• Mas, por outro lado:
– A unidade de controlo é MUITO mais simples
– A arquitectura é facilmente adaptável à estrutura em
pipeline (só as instruções terem o mesmo tamanho e os
operandos estarem sempre nos registos...)
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
8
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Busca instrução
M
U
X
Descodifica instrução
e obtém operandos
Executa instrução
M
U
X
+
+2
PC
EA
Escreve
resultado
DA
ALU
Memória
de
instruções
Registos
EB
DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
M
U
X
Memória
de
dados
9
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• Os registos não são edge-triggered. Permitem escrita na
primeira metade do relógio e leitura na segunda (incluindo
os dados escritos na primeira metade – read-after-write).
• Memórias de instruções e de dados separados, para maior
eficiência (na realidade, só as caches estão separadas – a
ver mais tarde).
• Os dados produzidos num estágio e usados no(s) seguinte(s)
têm de ser propagados através dos registos, mesmo que
estejam já disponíveis (porque os estágios seguintes estão
ocupados).
• Os elementos num estágio só podem usar as saídas dos
registos de entrada nesse estágio. Exemplos: PC e endereço
do registo a escrever com o resultado.
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
10
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Busca instrução
Descodifica instrução
e obtém operandos
M
U
X
Executa instrução
M
U
X
+
+2
PC
EA
Escreve
resultado
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
11
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Busca instrução
Descodifica instrução
e obtém operandos
M
U
X
Executa instrução
M
U
X
+
+2
PC
EA
Escreve
resultado
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
12
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Busca instrução
Descodifica instrução
e obtém operandos
M
U
X
Executa instrução
M
U
X
+
+2
PC
EA
Escreve
resultado
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
13
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Busca instrução
Descodifica instrução
e obtém operandos
M
U
X
Executa instrução
M
U
X
+
+2
PC
EA
Escreve
resultado
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
14
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Load
Busca instrução
M
U
X
Descodifica instrução
e obtém operandos
Executa instrução
M
U
X
+
+2
PC
EA
Escreve
resultado
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
15
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Add
Busca instrução
M
U
X
Load
Descodifica instrução
e obtém operandos
Executa instrução
M
U
X
+
+1
+2
PC
EA
Escreve
resultado
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
16
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
Jmp
Busca instrução
M
U
X
Add
Descodifica instrução
e obtém operandos
Load
Executa instrução
M
U
X
+
+1
+2
PC
EA
Escreve
resultado
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
17
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
...
Busca instrução
M
U
X
Jmp
Descodifica instrução
e obtém operandos
Add
Load
Executa instrução
Escreve
resultado
M
U
X
+
+2
PC
EA
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
18
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
...
...
Jmp
Add
Busca instrução
Descodifica instrução
e obtém operandos
Executa instrução
Escreve
resultado
M
U
X
M
U
X
+
+2
PC
EA
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
19
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
...
Busca instrução
M
U
X
Descodifica instrução
e obtém operandos
Executa instrução
M
U
X
+
+2
PC
EA
Escreve
resultado
DA
ALU
Memória
de
instruções
Registos
EB DB
DE EE
EA – Endereço registo A
EB – Endereço registo B
DA – Conteúdo registo A
DB – Conteúdo registo B
DE – Dado a escrever
EE – Endereço do registo a
escrever
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
M
U
X
Endereço
Memória
de
dados
M
U
X
20
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
MOV R1, R2
ADD R3, R1
ADD R1, R3
R1 R2
BI
R3 R3 + R1
DBO
EI
ER
BI
DBO
EI
ER
BI
DBO
EI
R1 R1 + R3
ER
• As setas indicam as dependências entre instruções:
– As caudas indicam onde os registos são escritos
– As cabeças indicam onde os registos são lidos
• Setas para trás indicam conflitos de dados
• Formas de resolver o problema:
– Atrasando as instruções seguintes
– Disponibilizando os dados mais cedo (data forwarding)
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
21
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• Atraso das instruçõoes: solução em software (implementada pelo
compilador) inserir instruções “dummy”:
MOV R1, R2
NOP
ADD R3, R1
BI
R1 R2
DBO
EI
ER
BI
DBO
EI
ER
BI
DBO
EI
ER
BI
DBO
EI
ER
BI
DBO
EI
R3 R3 + R1
NOP
ADD R1, R3
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
R1 R1 + R3
ER
22
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• Atraso das instruçõoes: solução em hardware (implementada pela
unidade de controlo do processador) inserir “bolhas”
(desperdiçar ciclos do estágio do pipeline):
MOV R1, R2
BI
DBO
EI
ADD R3, R1
BI
DBO
ADD R3, R1
R3 R3 + R1
DBO
EI
ADD R1, R3
BI
DBO
ADD R1, R3
R1 R1 + R3
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
BI
Bolhas
R1 R2
ER
BI
ER
DBO
EI
ER
23
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• Antecipação dos dados: Não esperar pelo “Escreve resultado”
mas usar logo os dados (data forwarding) que já estão
disponíveis no estágio de execução.
MOV R1, R2
R1 R2
BI
R3 R3 + R1
ADD R3, R1
DBO
EI
ER
BI
DBO
EI
ER
BI
DBO
EI
R1 R1 + R3
ADD R1, R3
ER
Conflito
Data forwarding
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
24
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• Como fazer nas instruções cuja execução é complicada e demora
mais do que um ciclo de relógio (isto é, combinar RISC com CISC)?
Busca instrução
Pré-descodificação
Microsequenciador
ROM de
microprograma
Descodificação e
Busca operandos
Executa
Escreve resultado
• Nestes casos o pipeline faz fetch da ROM de microprograma
para executar uma instrução assembly.
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
25
UNIVERSIDADE DA BEIRA INTERIOR
Faculdade de Engenharia
Departamento de Informática
• Conclusões:
• A técnica de processamento em estágios (pipelining) permite
aumentar bastante o desempenho, mas com alguns problemas:
– Manter o pipeline cheio
– Conflitos de dados e de controlo (porque o pipeline altera o
sequenciamento de algumas operações)
– Propagação de sinais (produzidos num ciclo de relógio e ser
usados noutro estágio e/ou noutro ciclo de relógio)
• Naturalmente, a tendência é simplificar o hardware e o controlo,
com menos variantes (o pipeline é muito rígido em termos de
temporizações).
• Daqui surgiu a filosofia RISC, passando a caber ao compilador
um papel mais importante na gestão do pipeline. O hardware
ficou mais rápido.
Nuno Pombo / Paulo Fazendeiro – Arquitectura Computadores II – 2014/2015
26
Download