microarquitetura de processadorclaudio/cursos/aoc2/slides/aoc2_aula8.0_2p.pdf · a microarquitetura...

33
09/05/2018 1 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 2 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).

Upload: hahuong

Post on 24-Jan-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

1

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

2

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).

Page 2: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

2

Classificação das Microarquiteturas

3

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

4

Page 3: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

3

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

5

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:

6

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.

Page 4: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

4

Introdução

7

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

PC

Descodificador

de Endereços

Descodificador

de Instruções

Controlo de

saltos

Memória de

programaMemória de dados

Datapath

Unidade de controlo

Leitura/Escrita

Palavra de Controlo

Bits de estado (flags)

Load / INC

Tipo

de salto

8

Page 5: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

5

Introdução

Datapath

A mesma ideia, apresentada de uma forma diferente...

P

C

Banco

de

registos AL

U

Controlo de

saltos

M

U

X

Inc

M

U

X

M

U

X

Const

End. salto

Tipo salto

Memória

de dados

Memória

de

instruções

9

Introdução

P

C

Banco

de

registos AL

U

Controlo de

saltos

M

U

X

Inc

M

U

X

M

U

X

Const

End. salto

Tipo salto

Memória

de dados

Memória

de

instruções

Fetch Decodificação Execução Acesso à

memória

Write

back

10

Page 6: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

6

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

Introdução

11

Fetch

IF

DecodeID

Execute EX

MemoryMA

Write Back

WB

Funcionamento em pipeline

Estrutura de um pipeline

IDIF EXE MEM WB

IDIF 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

Page 7: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

7

Funcionamento em pipeline

Com mais detalhe...

P

C

Banco

de

registos AL

U

Controlo de

saltos

M

U

X

Inc

M

U

X

M

U

X

Const

End. salto

Tipo salto

Memória

de dados

Memória

de

instruções

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

IDIF EXE MEM WB

Clock

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

14

Page 8: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

8

15

Funcionamento em pipeline

Ilustração do funcionamento

IDIF EXE MEM WB

Clock

Inst. 1

Inst. 2

Inst. 3

Inst. 4

Inst. 5

Inst. 6

Programa a executar

16

Funcionamento em pipeline

Ilustração do funcionamento

IDIF EXE MEM WB

Clock

Inst. 1

Inst. 2

Inst. 3

Inst. 4

Inst. 5

Inst. 6

Programa a correr

Inst. 1

Page 9: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

9

17

Funcionamento em pipeline

Ilustração do funcionamento

IDIF EXE MEM WB

Clock

Inst. 1

Inst. 2

Inst. 3

Inst. 4

Inst. 5

Inst. 6

Programa a correr

Inst. 2 Inst. 1

18

Funcionamento em pipeline

Ilustração do funcionamento

IDIF EXE MEM WB

Clock

Inst. 1

Inst. 2

Inst. 3

Inst. 4

Inst. 5

Inst. 6

Programa a correr

Inst. 3 Inst. 2 Inst. 1

Page 10: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

10

19

Funcionamento em pipeline

Ilustração do funcionamento

IDIF EXE MEM WB

Clock

Inst. 1

Inst. 2

Inst. 3

Inst. 4

Inst. 5

Inst. 6

Programa em execução

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

20

Funcionamento em pipeline

Ilustração do funcionamento

IDIF EXE MEM WB

Clock

Inst. 1

Inst. 2

Inst. 3

Inst. 4

Inst. 5

Inst. 6

Programa em execução

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

Page 11: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

11

21

Funcionamento em pipeline

Ilustração do funcionamento

IDIF EXE MEM WB

Clock

Inst. 1

Inst. 2

Inst. 3

Inst. 4

Inst. 5

Inst. 6

Programa em execução

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

Funcionamento em pipeline

Outra maneira de ver..

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

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

Ciclos de relógio

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

Page 12: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

12

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

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

etapasideal NGanho =

etapas

oldetapanew

N

TTT == 1=idealCPI

23

Objetos de estudo:

24

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.

Page 13: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

13

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...

Page 14: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

14

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

Page 15: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

15

Tipos de Conflitos (hazards)

Conflitos de dadosocorrem quando existem dependências de dados entre

instruções que se encontram dentro do pipeline

Conflitos estruturaisocorrem quando duas instruções em fases diferentes tentam

acessar o mesmo recurso

Conflitos de controleocorrem 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.

Page 16: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

16

Dependência de Dados (Hazards)

31

.

.

sub $2, $1, $3

and $12, $2, $5

or $13, $6, $2

add $14, $2, $2

sw $15, 100($2)

.

.

❖Dependência de dados:

Instruções que seguem

sub utilizam o registrador

$2, cujo valor é produzido

pela instrução sub

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

Page 17: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

17

Data hazards

33

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...

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

Page 18: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

18

M

U

X

AL

U

M

U

XMemória

de dados

Conflitos de dados

Utilização de forwarding

M

U

X

M

U

X

AL

U

M

U

XMemória

de dados

35

Data Hazards

Appendix A - Pipelining 36

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.

Instr.

Order

add r1,r2,r3

sub r4,r1,r3

and r6,r1,r7

or r8,r1,r9

xor r10,r1,r11

Reg

ALU

DMemIfetch Reg

Reg

ALU

DMemIfetch Reg

Reg

ALU

DMemIfetch Reg

Reg

ALU

DMemIfetch Reg

Reg

ALU

DMemIfetch Reg

Time (clock cycles)

IF ID/RF EX MEM WB

Page 19: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

19

Data Hazards

Appendix A - Pipelining 37

Forwarding To Avoid Data Hazard

Forwarding is the concept of making data

available to the input of the ALU for

subsequent instructions, even though the

generating instruction hasn’t gotten to WB in

order to write the memory or registers.

Time (clock cycles)

Inst

r.

Order

add r1,r2,r3

sub r4,r1,r3

and r6,r1,r7

or r8,r1,r9

xor r10,r1,r11

Reg ALU

DMemIfetch Reg

Reg ALU

DMemIfetch Reg

Reg ALU

DMemIfetch Reg

Reg

ALU

DMemIfetch Reg

Reg

ALU

DMemIfetch Reg

Data Hazards

Appendix A - Pipelining 38

There are some instances where hazards occur, even with forwarding.

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

Time (clock cycles)

Instr.

Order

lw r1, 0(r2)

sub r4,r1,r6

and r6,r1,r7

or r8,r1,r9

Reg

ALU

DMemIfetch Reg

Reg

ALU

DMemIfetch Reg

Reg ALU

DMemIfetch Reg

Reg

ALU

DMemIfetch Reg

Page 20: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

20

Data Hazards

Appendix A - Pipelining 39

There are some instances where hazards occur, even with forwarding.

The stall is necessary as shown here.

Time (clock cycles)

or r8,r1,r9

Instr.

Order

lw r1, 0(r2)

sub r4,r1,r6

and r6,r1,r7

Reg

ALU

DMemIfetch Reg

RegIfetch

ALU

DMem RegBubble

Ifetch

ALU

DMem RegBubble Reg

Ifetch

ALU

DMemBubble Reg

Data Hazards

40

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

Page 21: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

21

Data Hazards

Appendix A - Pipelining 41

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

Pipeline Scheduling

Data Hazards

Appendix A - Pipelining 42

Pipeline Scheduling

% loads stalling pipeline

0% 20% 40% 60% 80%

tex

spice

gcc

25%

14%

31%

65%

42%

54%

scheduled unscheduled

Page 22: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

22

Abordagens para resolver conflitos de dados

43

Software Scheduling : Programador ou compilador evita explicitamenteinstruções de programação que criariam riscos de dados

HardwareScheduling : Hardware escalona dinamicamenteinstruções para evitar conflitos RAW, potencialmente permitindoinstruções para executar fora de ordem

Hardware Stalling : Hardware inclui a lógica de controle que congelainstruçõ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; detectaquando existe um problema e re-executa instruções que operaram em dados inválidos

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.

Page 23: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

23

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

46

.

.

.

ld r2, I

add r2, r2, #123

st r2, I

ld r3, J

sub r3, r3, #567

st r3, J

.

.

.

.

.

.

ld r2, I

ld r3, J

add r2, r2, #123

sub r3, r3, #567

st r2, I

st r3, J

.

.

.

Page 24: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

24

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

...

Não pode ser feito o fetch ao mesmo tempo que acessa à memória para ler

dados (o LOAD)...

CONFLITO !

48

Page 25: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

25

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

Page 26: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

26

Conflitos de Controle

51

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

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

Page 27: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

27

PC

Bancode

registos ALU

Controlo de saltos

MUX

Inc

MUX

MUX

Const

End. salto

Tipo salto

Memória de dados

Memória de

instruções

Conflitos de controle

Só aqui se sabe que

é um desvio...

Nos desvios condicionais, só aqui se sabe se

o desvio vai ser realizado ou não...

53

Conflitos de controle

Exemplo (desvio incondicional)

...

LBL1: ADD R1, R4, R5

...

STORE a, R1

JUMP LBL1

LBL2: LOAD R1, a

...

54

Page 28: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

28

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

JZ END

ADD R0, R1, R2

STORE a, R0

...

END: LOAD R1, a

...

algumas vezes há desvio,

outras não...

56

Page 29: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

29

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

58

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.

Page 30: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

30

Software Scheduling

59

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

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

Page 31: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

31

Interrupções e Exceções

61

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)

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

62

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.

Page 32: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

32

Tratando interrupções ou exceções

63

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

Interrupções e Exceções no pipeline

64

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?

Page 33: Microarquitetura de Processadorclaudio/Cursos/AOC2/Slides/aoc2_aula8.0_2p.pdf · A microarquitetura de processadores sofreu uma evolução contínua. Por exemplo, a Intel tem lançado

09/05/2018

33

Bibliografia

65

David Patterson e John Hennessy,

Arquitetura e Organização de

Computadores – uma abordagem

quantitativa, 5ª Edição, ed. Campus.