Vous êtes sur la page 1sur 33

09/05/2018

Arquitetura e Organização de
Computadores 2
Paralelismo em Nível de Instruções
Arquiteturas Pipelining e Superescalar

Microarquitetura de Processador:
Uma perspectiva de implementação
 O foco está nos aspectos de implementação, com
discussões sobre abordagens alternativas e suas
implicações em termos de desempenho, potência e custo.
 A microarquitetura de processadores sofreu uma
evolução contínua.
 Por exemplo, a Intel tem lançado novos microprocessadores a
cada ano.
 A renovação é alimentada principalmente por dois tipos de
fatores:
 (1) evolução da tecnologia e
 (2) evolução da carga de trabalho (workload).

1
09/05/2018

Classificação das Microarquiteturas


As microarquiteturas de processadores podem ser classificadas em várias dimensões ortogonais.
 Processadores Pipelined / Nonpipelined
 Os processadores com pipelines dividem a execução de cada instrução em várias fases e permitem que
diferentes instruções sejam processadas em diferentes fases simultaneamente. O pipelining aumenta o
paralelismo de nível de instrução (ILP) e, devido à sua relação custo-benefício, é praticamente utilizado
por todos os processadores atualmente.
 Processadores In-Order/Out-Of-Order
 Um processador in-order processa as instruções na ordem em que aparecem no código binário (de
acordo com a semântica sequencial das instruções), enquanto um processador out-of-order processa as
instruções em uma ordem que pode ser diferente (e geralmente é ) a partir do binário. O propósito de
executar instruções fora de ordem é aumentar a quantidade de ILP, proporcionando mais liberdade ao
hardware para escolher quais instruções processar em cada ciclo.
 Obviamente, os processadores out-of-order exigem hardware mais complexo do que os in-order.
 Processadores Escalares / Superescalares
 Um processador escalar é um processador que não pode executar mais de uma instrução em pelo
menos um de seus estágios de pipeline. Em outras palavras, um processador escalar não pode atingir um
rendimento maior que 1 instrução por ciclo para qualquer código. Um processador que não é escalar é
chamado superescalar.
 Observe que um processador superescalar pode executar mais de uma instrução ao mesmo tempo em
todos os estágios do pipeline e, portanto, pode obter uma taxa de transferência maior que 1 instrução
por ciclo para alguns códigos.
 Os processadores de palavra de instrução muito longa (VLIW) são um caso particular de processadores
superescalares.

Ciclo de Execução de Instruções

2
09/05/2018

Eventos do Ciclo de Execução de Instruções:


 início
 busca de instrução;
 decodificação da instrução;
 cálculo de endereço de operando;
 busca de operando;
 execução da instrução;
 cálculo de endereço do resultado;
 verificação de interrupção;
 se interrupção então tratamento de interrupção;
 cálculo de endereço da próxima instrução;
 volta para busca de instrução;
 fim.

Motivação:
 O tempo de execução (Tcpu) de um programa é dado por:

Tcpu = IC x CPI x Tcc

 A execução de instruções em cadeia (pipelining) permite


reduzir a duração do ciclo de relógio (Tcc) do processador, ou
seja, aumentar a sua frequência. Por outro lado, a execução
superscalar aumenta o número de instruções realizadas em
cada ciclo de clock (IPC) , ou seja, diminui o CPI.

 Note que qualquer uma das alternativas permite reduzir o tempo de


execução da aplicação.

3
09/05/2018

Introdução
 Duas técnicas são frequentemente utilizadas para a
execução de instruções em paralelo:
 Execução encadeada de instruções (Pipelining) – cada
instrução é executada em várias fases, sendo a execução de
várias instruções sobreposta, como numa linha de montagem;
as várias instruções executam em paralelo, mas em fases
diferentes;
 Execução superscalar de instruções – as instruções são
executadas em paralelo, o que envolve a duplicação de
unidades funcionais para suportar a combinação de instruções
pretendida.

 Estas duas técnicas são geralmente combinadas, sendo ambas


utilizadas na arquitetura dos processadores modernos.

Introdução
 Arquitetura com unidade de controle monociclo

Unidade de controlo

Load / INC
PC Memória de
Memória de dados
programa

Descodificador
Controlo de
de Endereços
saltos

Leitura/Escrita

Tipo
de salto Descodificador
de Instruções Palavra de Controlo

Datapath
Bits de estado (flags)

4
09/05/2018

Introdução
 Datapath
 A mesma ideia, apresentada de uma forma diferente...

M
U
X
End. salto
Controlo de
Tipo salto saltos
Inc Const
P
M
C U
Memória Banco X

ALU
de de
instruções M
registos U
X
Memória
de dados

Introdução
Fetch Decodificação Execução Acesso à Write
memória back

M
U
X
End. salto
Controlo de
Tipo salto saltos
Inc Const
P
M
C U
Memória Banco X
ALU

de de
instruções M
registos U
X
Memória
de dados

10

5
09/05/2018

Introdução

Fetch Decode Execute Memory Write Back


IF ID EX MA WB

Para cada instrução tem-se a sequência


 Fetch (IF) – ler a instrução localizada no endereço dado por PC
 Decode (ID) – obter o opcode e operandos; ler os registradores fonte
 Execute (EX) – operações na ALU e controle dos saltos (desvios)
 Memory (MA) – acesso à memória para escrever ou ler dados
 Write-Back (WB) – escrever o resultado no registrador de destino

11

Funcionamento em pipeline

 Estrutura de um pipeline

IF ID EXE MEM WB

IF ID EXE MEM WB

Clock

 Separam-se as várias etapas por registradores (buffers)


 E sincronizam-se esses registradores com um sinal de
relógio comum…
Obtém-se um pipeline

12

6
09/05/2018

Funcionamento em pipeline
 Com mais detalhe...

M
U
X
End. salto
Controlo de
Tipo salto saltos
Inc Const
P
M
C U
Memória Banco X

ALU
de de
instruções M
registos U
X
Memória
de dados

13

Funcionamento em pipeline

 Ideia semelhante a uma linha de montagem:


 Para cada pulso de relógio é realizada uma etapa de uma
instrução
 Se o pipeline tem N etapas, então N instruções podem estar
simultaneamente dentro do pipeline
 Uma instrução em cada etapa

Inst. i+4 Inst. i+3 Inst. i+2 Inst. i+1 Inst. i

IF ID EXE MEM WB

Clock

14

7
09/05/2018

Funcionamento em pipeline
 Ilustração do funcionamento

Inst. 1
Inst. 2
Programa a executar
Inst. 3
Inst. 4
Inst. 5
Inst. 6

IF ID EXE MEM WB

Clock
15

Funcionamento em pipeline
 Ilustração do funcionamento

Inst. 1
Inst. 2
Programa a correr
Inst. 3
Inst. 4
Inst. 5
Inst. 6

Inst. 1

IF ID EXE MEM WB

Clock
16

8
09/05/2018

Funcionamento em pipeline
 Ilustração do funcionamento

Inst. 1
Inst. 2
Programa a correr
Inst. 3
Inst. 4
Inst. 5
Inst. 6

Inst. 2 Inst. 1

IF ID EXE MEM WB

Clock
17

Funcionamento em pipeline
 Ilustração do funcionamento

Inst. 1
Inst. 2
Programa a correr
Inst. 3
Inst. 4
Inst. 5
Inst. 6

Inst. 3 Inst. 2 Inst. 1

IF ID EXE MEM WB

Clock
18

9
09/05/2018

Funcionamento em pipeline
 Ilustração do funcionamento

Inst. 1
Inst. 2
Programa em execução
Inst. 3
Inst. 4
Inst. 5
Inst. 6

Inst. 4 Inst. 3 Inst. 2 Inst. 1

IF ID EXE MEM WB

Clock
19

Funcionamento em pipeline
 Ilustração do funcionamento

Inst. 1
Inst. 2
Programa em execução
Inst. 3
Inst. 4
Inst. 5
Inst. 6

Inst. 5 Inst. 4 Inst. 3 Inst. 2 Inst. 1

IF ID EXE MEM WB

Clock
20

10
09/05/2018

Funcionamento em pipeline
 Ilustração do funcionamento

Inst. 1
Inst. 2
Programa em execução
Inst. 3
Inst. 4
Inst. 5
Inst. 6

Inst. 6 Inst. 5 Inst. 4 Inst. 3 Inst. 2

IF ID EXE MEM WB

Clock
21

Funcionamento em pipeline
 Outra maneira de ver..
Ciclos de relógio

1º 2º 3º 4º 5º 6º 7º 8º 9º 10º 11º

inst 1 IF ID EXE MEM WB

inst 2 IF ID EXE MEM WB

inst 3 IF ID EXE MEM WB

inst 4 IF ID EXE MEM WB

inst 5 IF ID EXE MEM WB

inst 6 IF ID EXE MEM WB

... ... .... .... ... ...

Por exemplo, no 5º ciclo de relógio, a instrução 1 está na fase WB, a instrução 2 na fase MEM, a
instrução 3 na fase EXE, a inst. 4 está na fase ID e a inst. 5 na fase IF.

22

11
09/05/2018

Desempenho ideal
 Em condições ideais
 O pipeline está “equilibrado”
 todas as etapas demoram o mesmo tempo
 O pipeline encontra-se sempre cheio
 tem-se sempre uma instrução em cada etapa
Told
Tnew = Tetapa = CPIideal = 1
Netapas

 Ganho (ideal) face a uma versão sem pipeline:

Ganhoideal = Netapas

23

Objetos de estudo:
 Pipelining:
 Pipelining torna-se uma técnica universal em 1985.
 Explora a potencial sobreposição da execução de instruções para
melhorar o desempenho.
 “Paralelismo em Nível de Instrução”
 Os hazards inconvenientes, que provocam degradação
de desempenho em processadores pipelined e os
mecanismos para minimizar seus efeitos.
 Implicações de hardware e software do pipelining.
 Processadores superscalares.

24

12
09/05/2018

Introdução
 Duas abordagens para explorar o paralelismo de
instruções:
 Hardware-based dynamic approaches
 Usadas em processadores de desktops e servidores
 Não utilizada de forma extensiva em processadores voltados ao
Mercado de equipamentos móveis (PMP processors)
 Compiler-based static approaches
 Restrito ao mundo das aplicações científicas

Paralelismo em Nível de Instrução


 O objetivo principal do ILP é a maximização do CPI

Pipeline CPI = Ideal pipeline CPI + Structural stalls


+ Data hazard stalls + Control stalls

 O Paralelismo no bloco básico é limitado


 Em programas típicos, a frequência média de desvios é de 15-25%.
 Assim, o tamanho típico do bloco básico = 3-6 instruções executadas
entre um par de desvios.
 Devemos explorar o ILP em diversos blocos básicos, quebrando a
fronteira dos desvios...

13
09/05/2018

Paralelismo em Nível de Instrução


 Paralelismo em Nível de Loop
 Desdobramento de laços estaticamente ou dinamicamente
 Uso de SIMD (processadores vetoriais e GPUs)

 Desafios:
 Dependência dos Dados
 Instrução j é dependente de dados gerados pela instrução i se:
 Instrução i produz um resultado que pode ser usado pela instrução j
 Instrução j é dependente dos dados da instrução k e a instrução k é dependente de
dados da instrução i

 Instruções dependentes não podem ser executadas


simultaneamente

Conflitos (hazards)
 Mas em um pipeline nem tudo são flores...
 Existem situações em que
 Instruções em fases diferentes tentam acessar o mesmo recurso (e.g.
à memória)
 O resultado de uma instrução depende de outra que ainda não
terminou a execução
 Essas situações caracterizam conflitos (ou pipeline hazards)
 A existência de conflitos reduzem significativamente o ganho de um
pipeline...

28

14
09/05/2018

Tipos de Conflitos (hazards)


 Conflitos de dados
ocorrem quando existem dependências de dados entre
instruções que se encontram dentro do pipeline
 Conflitos estruturais
ocorrem quando duas instruções em fases diferentes tentam
acessar o mesmo recurso
 Conflitos de controle
ocorrem em instruções de desvio, quando o desvio depende de
um resultado que ainda não foi calculado.

29

Dependência de Dados
 As dependências são propriedades dos programas
 A organização Pipeline determina se a dependência é
detectada e se ela causa parada (stall)

 Uma dependência de dados transmite três coisas:


 Possibilidade de um hazard.
 A ordem em que os resultados podem ser calculados.
 O limite máximo de paralelismo a ser explorado

 As dependências que fluem através da memória são mais


difíceis de serem detectadas.

15
09/05/2018

Dependência de Dados (Hazards)


.
.
❖ Dependência de dados:
sub $2, $1, $3
and $12, $2, $5  Instruções que seguem
or $13, $6, $2 sub utilizam o registrador
add $14, $2, $2 $2, cujo valor é produzido
sw $15, 100($2) pela instrução sub
.
.

31

Data hazards
 Conflito RAW (Read after Write)
 Para ilustrar a ocorrência destes conflitos vamos considerar que temos
duas instruções: instrução 1 e instrução 2
 A instrução 2 vai ser executada depois da instrução 1
 Vamos supor que a instrução 2 lê dados que são o resultado da instrução
1 – existe uma dependência entre as instruções
 O conflito ocorre se a instrução 2 tentar ler os dados antes da instrução 1 te-
os escrito.
 A instrução 2 iria ler um valor desatualizado...
 Exemplo:

...
inst. 1: ADD R0, R1, R2 # R0 ← R1 + R2
inst. 2: SUB R5, R0, R4 # R5 ← R0 – R4
...

32

16
09/05/2018

Data hazards
 Resolução básica de conflitos
 Detecta-se o conflito
 Introduzem-se bolhas no pipeline
 Uma bolha é basicamente uma palavra de controle que manda “não
fazer nada” (nop)
 Cada bolha faz com que seja desperdiçado um ciclo de relógio

 Contudo existem alternativas mais eficientes para resolver


cada tipo de conflito
 Inserir bolhas, só mesmo se não houver uma alternativa...

33

Conflitos de dados
 Resolução mais eficiente de conflitos RAW
 Utiliza-se uma técnica chamada data forwarding
 A ideia consiste em disponibilizar resultados nas entradas da
unidade funcional (fase EXE)…
 …ainda antes de ser feito o write-back
 Quando são detectados conflitos, utilizam-se esses resultados
em vez do que foi lido dos registradores

34

17
09/05/2018

Conflitos de dados

 Utilização de forwarding

M M
U U
X X

ALU
M
U
M X
Memória
U
X de dados

35

Data Hazards
Time (clock cycles)
IF ID/RF EX MEM WB
I
ALU

add r1,r2,r3Ifetch Reg DMem Reg

n
s
ALU

Ifetch Reg DMem Reg


t sub r4,r1,r3
r.
ALU

Ifetch Reg DMem Reg


and r6,r1,r7
O
r
ALU

Ifetch Reg DMem Reg

d
or r8,r1,r9
e
ALU

Reg
r xor r10,r1,r11 Ifetch Reg DMem

The use of the result of the ADD instruction in the next three instructions causes a
hazard, since the register is not written until after those instructions read it.

Appendix A - Pipelining
36

18
09/05/2018

Data Hazards Forwarding is the concept of making data


available to the input of the ALU for
Forwarding To Avoid Data Hazard subsequent instructions, even though the
generating instruction hasn’t gotten to WB in
order to write the memory or registers.

Time (clock cycles)


I
n

ALU
add r1,r2,r3 Ifetch Reg DMem Reg

s
t

ALU
r. sub r4,r1,r3 Ifetch Reg DMem Reg

ALU
Ifetch Reg DMem Reg
r and r6,r1,r7
d
e

ALU
Ifetch Reg DMem Reg
r or r8,r1,r9

ALU
Ifetch Reg DMem Reg
xor r10,r1,r11
Appendix A - Pipelining
37

Data Hazards The data isn’t loaded until after the MEM stage.

Time (clock cycles)

I lw r1, 0(r2) Ifetch


ALU

Reg DMem Reg

n
s
t
ALU

sub r4,r1,r6 Ifetch Reg DMem Reg

r.

O
ALU

Ifetch Reg DMem Reg


and r6,r1,r7
r
d
e
ALU

Ifetch Reg DMem Reg

r
or r8,r1,r9

There are some instances where hazards occur, even with forwarding.
Appendix A - Pipelining
38

19
09/05/2018

Data Hazards The stall is necessary as shown here.


Time (clock cycles)
I
n

ALU
Reg
s lw r1, 0(r2) Ifetch Reg DMem

t
r.

ALU
sub r4,r1,r6 Ifetch Reg Bubble DMem Reg

O
r
d Bubble

ALU
Ifetch Reg DMem Reg
e and r6,r1,r7
r
Bubble

ALU
Ifetch Reg DMem
or r8,r1,r9

There are some instances where hazards occur, even with forwarding.
Appendix A - Pipelining
39

Data Hazards
Instruções 1º 2º 3º 4º 5º 6º 7º 8º 9º
LW R1, 0(R2) IF ID EX MEM WB

SUB R4, R1, R5 IF ID EX MEM WB

AND R6, R1, R7 IF ID EX MEM WB

OR R8, R1, R9 IF ID EX MEM WB

Instruções 1º 2º 3º 4º 5º 6º 7º 8º 9º
LW R1, 0(R2) IF ID EX MEM WB

SUB R4, R1, R5 IF ID stall EX MEM WB

AND R6, R1, R7 IF stall ID EX MEM WB

OR R8, R1, R9 IF ID EX MEM WB

40

20
09/05/2018

Data Hazards Pipeline Scheduling


Instruction scheduled by compiler - move instruction in order to reduce stall.

lw Rb, b code sequence for a = b+c before scheduling


lw Rc, c
Add Ra, Rb, Rc stall
sw a, Ra
lw Re, e code sequence for d = e+f before scheduling
lw Rf, f
sub Rd, Re, Rf stall
sw d, Rd

Arrangement of code after scheduling.

lw Rb, b
lw Rc, c
lw Re, e
Add Ra, Rb, Rc
lw Rf, f
sw a, Ra
sub Rd, Re, Rf
sw d, Rd
Appendix A - Pipelining
41

Data Hazards Pipeline Scheduling

scheduled unscheduled

gcc 54%
31%

spice 42%
14%
tex 65%
25%

0% 20% 40% 60% 80%


% loads stalling pipeline

Appendix A - Pipelining
42

21
09/05/2018

Abordagens para resolver conflitos de dados

 Software Scheduling : Programador ou compilador evita explicitamente


instruções de programação que criariam riscos de dados
 HardwareScheduling : Hardware escalona dinamicamente
instruções para evitar conflitos RAW, potencialmente permitindo
instruções para executar fora de ordem
 Hardware Stalling : Hardware inclui a lógica de controle que congela
instruções posteriores até que a instrução anterior termine a execução,
produzindo valor de dados
 Hardware Bypassing: Hardware permite que os valores sejam enviados a
partir de uma instrução anterior para uma instrução posterior antes que a
instrução anteriormente executando saia do pipeline.
 Hardware Speculation : Hardware adivinha que não há perigo e permite
instruções posteriores lerem dados potencialmente inválidos; detecta
quando existe um problema e re-executa instruções que operaram em
dados inválidos

43

Conflitos de dados
 Dependências de Nome
 Ocorre quando duas instruções usam o mesmo registrador ou local
de memória, chamado nome, mas não existe fluxo de dados entre as
instruções associadas.
 Não é uma dependência verdadeira, mas é um problema na reordenação
de instruções (reordering instructions)
 Antidependência - WAR
 Ordem inicial (i antes de j) deve ser preservada
 Dependência de saída - WAW
 Ordem deve ser preservada

 Solução - utilizar técnica de renomeação de registrador.

22
09/05/2018

Conflitos de dados
 Conflito WAW (Write after Write)
 Ambas as instruções são de escrita e o resultado vai ser
escrito no mesmo local.
 O conflito ocorre quando se a instrução 2 tentar escrever antes
da instrução 1.
 Conflito WAR (Write after Read)
 A instrução 1 lê dados do local onde a instrução 2 escreve
 O conflito ocorre se a instrução 2 tentar escrever antes da
instrução 1 ler.
 Ocorrem em pipelines mais complexos, com várias fases
onde podem ser feitas leituras e escritas nos
registradores.

45

Escalonamento de Instruções
. .
. .
. .
ld r2, I ld r2, I
add r2, r2, #123 ld r3, J
st r2, I add r2, r2, #123
ld r3, J sub r3, r3, #567
sub r3, r3, #567 st r2, I
st r3, J st r3, J
. .
. .
. .

46

23
09/05/2018

Conflitos estruturais
 Duas (ou mais) instruções tentam acessar simultaneamente o
mesmo recurso
 Situação típica:
 Quando se usa uma única memória para dados e código, não se pode fazer o
fetch (IF) ao mesmo tempo que uma instrução acessa à memória para
ler/escrever dados.
 Situações menos típicas
 Tentar escrever no mesmo registrador simultaneamente (só ocorre em
processadores com mais do que uma fase de write-back)
 Tentar ler ou escrever dados simultaneamente na mesma memória (só ocorre
em processadores com mais do que uma fase de acesso à memória)

47

Conflitos estruturais
 Exemplo de um conflito estrutural

k k+1 k+2 k+3 k+4 k+5 k+6 k+7

... ... ... ... ...

LOAD R1, a IF ID EXE MEM WB

ADD R3,R4,R5 IF ID EXE MEM WB

SUB R6,R6,R7 IF ID EXE MEM WB

XOR R1,R4,R5 IF ID EXE MEM WB

...

CONFLITO !
Não pode ser feito o fetch ao mesmo tempo que acessa à memória para ler
dados (o LOAD)...
48

24
09/05/2018

Conflitos estruturais
 Resolução do conflito
 Introdução de uma bolha antes do fetch...

k k+1 k+2 k+3 k+4 k+5 k+6 k+7 k+8

... ... ... ... ...

LOAD R1, a IF ID EXE MEM WB

ADD R3,R4,R5 IF ID EXE MEM WB

SUB R6,R6,R7 IF ID EXE MEM WB

XOR R1,R4,R5 B IF ID EXE MEM WB

... ... ... ... ...

Conflito resolvido
49

Conflitos estruturais
 Resoluções mais eficientes
 Memórias de dados e de instruções separadas
 Tipicamente este esquema é implementado usando uma memória
cache para dados e outra para instruções

 Instruction pre-fetching
 É feito antecipadamente o fetch de várias instruções, que ficam
guardadas numa memória interna (buffer de instruções)
 Quando o buffer fica vazio busca-se mais instruções à memória.

50

25
09/05/2018

Conflitos de Controle
 Hazards de controle ocorrem quando a execução ou não
da próxima instrução depende de um decisão de controle
realizada pela instrução anterior.

addiu r1, r2, 1


j foo # Jumps are always taken
addiu r3, r4, 1
foo: addiu r5, r6, 1
bne r0, r0, bar # This branch is not taken
addiu r7, r8, 1
bar: addiu r9, r10, 1

51

Conflitos de controle
 Ocorrem quando aparecem desvios
 Desvios incondicionais
 O processador só saberá que é uma instrução de desvio na fase ID
(decodificação)...
 ... mas nessa altura a instrução na posição que se segue à de salto já se
encontra na fase IF (fetch)
 Desvios condicionais
 Para além do que acontece com os desvios incondicionais, não se
sabe antecipadamente se vai ou não ocorrer o desvio
 Tipicamente só se sabe a ocorrência (ou não) do desvio após a
verificação da condição do desvio (tipicamente associada à fase EXE)

52

26
09/05/2018

Conflitos de controle
Só aqui se sabe que Nos desvios condicionais, só aqui se sabe se
é um desvio... o desvio vai ser realizado ou não...

M
U
X
End. salto
Controlo de
Tipo salto saltos
Inc Const
P
M
C U
Memória Banco X

ALU
de de
instruções M
registos U
X
Memória
de dados

53

Conflitos de controle
 Exemplo (desvio incondicional)

...
LBL1: ADD R1, R4, R5
...
STORE a, R1
JUMP LBL1
LBL2: LOAD R1, a
...

54

27
09/05/2018

Conflitos de controle
 Ilustração do problema (salto incondicional):

k k+1 k+2 k+3 k+4 k+5 k+6 k+7 k+8 k+9

... ... ... ... ...

JUMP LBL1 IF ID EXE MEM WB

LOAD R1, a IF B B B B

ADD R1, R4, R5 IF ID EXE MEM WB

... ... ... ... ...

Perde-se 1 ciclo, pois é feito um fetch inútil da instrução que se segue


à de salto

55

Conflitos de controle
 Exemplo (desvio condicional)

...
DEC R1, R1 algumas vezes há desvio,
JZ END outras não...
ADD R0, R1, R2
STORE a, R0
...
END: LOAD R1, a
...

56

28
09/05/2018

Conflitos de controle
 supondo que o salto ocorre:

k k+1 k+2 k+3 k+4 k+5 k+6 k+7 k+8 k+9

... ... ... ... ...

DEC R1, R1 IF ID EXE MEM WB

JZER END IF ID EXE MEM WB

ADD R0, R1, R2 IF ID B B B

STORE a, R4 IF B B B B

LOAD R1, a IF ID EXE MEM WB ...

Perdem-se 2 ciclos, pois só se irá atualizar o valor de PC depois do salto


concluir a fase EXE (só aí se sabe que o salto será realizado ou não)...
57

Resolução dos conflitos de controle


 Software Scheduling: Programador ou compilador evita
explicitamente escalonar instruções que criariam riscos de controle.
 Software Predication: Programador ou compilador converte o
fluxo de controle em fluxo de dados usando instruções que
executam condicionalmente baseadas no valor dos dados.
 Hardware Stalling: Hardware inclui a lógica de controle que
congela instruções posteriores até que a instrução anterior tenha
terminado, determinando o fluxo de controle correto.
 Hardware Speculation: hardware de controle supõe qual o
caminho que o controle fluxo seguirá e potencialmente busca
instruções incorretas; detecta quando existe um problema e re-
executa as instruções que estão ao longo do fluxo de controle
correto.
 Software Hints: Programador ou compilador fornece dicas sobre
se um desvio condicional serão tomadas ou não, e o hardware pode
usar essas dicas para especulação mais eficiente.

58

29
09/05/2018

Software Scheduling
 Expose branch delay slots as part of the instruction set. Branch
delay slots are instructions that follow a jump or branch and
are always executed regardless of whether a jump or branch is
taken or not taken. Compiler tries to insert useful instructions,
otherwise inserts nops.
addiu r1, r2, 1
j foo
nop
addiu r3, r4, 1
foo: addiu r5, r6, 1
bne r0, r0, bar
nop
nop
addiu r7, r8, 1
bar: addiu r9, r10, 1

59

Conflitos de controle
 Hardware Speculation:
Previsão de desvios (branch prediction)
 Previsão estática
 Assume-se que o desvio é sempre tomado (predict-taken)
 Ou se assume que o desvio nunca é tomado (predict-not-taken)

 Previsão dinâmica
 A previsão depende do que se passou em desvios anteriores
 Muito usada atualmente

 Nos casos em que a previsão estiver errada perder-se-á ciclos de


processamento
 Para anular o efeito das instruções que foram executadas
desnecessariamente...

60

30
09/05/2018

Interrupções e Exceções
 Interrupções e exceções alteram o fluxo normal do programa. São
causados por evento externo ou interno que precisam ser processados
pelo sistema, e estes eventos são frequentemente não esperados ou raros
do ponto de vista do programa.

 Interrupções Assíncronas (Asynchronous Interrupts)


 Dispositivos de Entrada/Saída precisam ser atendidos
 Experição do timer
 Falhas de hardware
 Exceções Síncronas (Synchronous Exceptions)
 Opcode desconhecido, instrução privilegiada
 Arithmetic overflow, floating-point exception
 Acesso a memória desalinhada na busca de intruções ou acesso a dados
 Violação da proteção de memória
 Virtual memory page faults
 System calls (traps)

61

Semântica para Interrupções e Exceções


 Interrupções são síncronas em relação ao programa,
assim a microarquitetura pode decidir quando tratar a
interrupção.

 Exceções são síncronas em relação ao programa, assim


elas devem ser tratadas imediatamente.

62

31
09/05/2018

Tratando interrupções ou exceções


 the hardware/software must:
 Stop program at current instruction (I), ensure previous insts finished
 Save cause of interrupt or exception in privileged arch state
 Save the PC of the instruction I in a special register (EPC)
 Switch to privileged mode
 Set the PC to the address of either the interrupt or the exception
handler
 Disable interrupts
 Save the user architectural state
 Check the type of interrupt or exception
 Handle the interrupt or exception
 Enable interrupts
 Switch to user mode
 Set the PC to EPC if I should be restarted
 Potentially set PC to EPC+4 if we should skip I

63

Interrupções e Exceções no pipeline

 How should we handle a single instruction which generates multiple


exceptions in different stages as it goes down the pipeline?

 How should we handle multiple instructions generating exceptions in


different stages at the same or different times?

64

32
09/05/2018

Bibliografia
 David Patterson e John Hennessy,
Arquitetura e Organização de
Computadores – uma abordagem
quantitativa, 5ª Edição, ed. Campus.

65

33

Vous aimerez peut-être aussi