1 Aula 10 – Sumário Aritmética Aceleração da adição Multiplicação binária Pipelines ...

69
1 Aula 10 – Sumário Aritmética Aceleração da adição Multiplicação binária Pipelines Princípio de funcionamento Conflitos de dados, estruturais e de controlo

Transcript of 1 Aula 10 – Sumário Aritmética Aceleração da adição Multiplicação binária Pipelines ...

Page 1: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

1

Aula 10 – Sumário

Aritmética Aceleração da adição Multiplicação binária

Pipelines Princípio de funcionamento Conflitos de dados, estruturais e de controlo

Page 2: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

2

Aritmética

Aceleração da adição

Page 3: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

3

Adição básica (revisão)

Um circuito full adder…

Soma os bits A e B com o transporte anterior (Cin), dando o resultado da soma (S) e o transporte que sai (Cout)

AB

Cin

Cout

S

Page 4: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

4

Adicionador Ripple-carry

Desvantagem: Como que cada full adder impõe um atraso, o tempo necessário para

ser feita a soma é proporcional ao nº de bits dos números a somar

Obtém-se ligando em série tantos full-adders quanto o nº de bits dos números que se querem somar.

FA

A0 B0

S0

FA

A1 B1

FA

A2 B2

FA

A3 B3

C1 C2C0

C3

S1 S2 S3

C4

Page 5: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

5

AB

Cin

Cout

S

AB

Cin

Cout

S

Adicionador Ripple-carry

Outra maneira de ver

PFA

PFA – Partial Full Adder

Page 6: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

6

Adicionador Ripple-carry

Outra maneira de ver

Em que:

Propagação de carry

Geração de carry

PFA

A B

S

P G Cout

Cin

ABGBAP

Page 7: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

7

Adicionador Ripple-carry

Para um ripple adder de 4 bits

P’s e G’s são todos calculados ao mesmo tempo (em paralelo), pois só dependem dos A’s e dos B’s.

Os bits da soma (S’s) têm que esperar que chegue o Cin respectivo.

PFA

A0 B0

S0

P0 G0

PFA

A1 B1

S1 PFA

A2 B2

S2 PFA

A3 B3

S3

P1 G1C1 C2

C0

P2 G2 P3 G3

C4C3

Page 8: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

8

Adicionador Ripple-carry

Para um ripple adder de 4 bits

Caminho crítico – corresponde ao pior caso na propagação dos sinais.

Tipicamente é o que atravessa mais portas lógicas.

PFA

A0 B0

S0

P0 G0

PFA

A1 B1

S1 PFA

A2 B2

S2 PFA

A3 B3

S3

P1 G1C1 C2

C0

P2 G2 P3 G3

C4C3

Page 9: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

9

Acelerar a adição

Vamos usar as seguintes equações:

iii

iii

iiii

BAPBAG

CPGC

1

0001 CPGC

0012012122

0001122

11122

2223

CPPPGPPGPGCPGPGPG

CPGPGCPGC

...C 4

001011

00011

1112

CPPGPGCPGPG

CPGC

Page 10: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

10

Acelerar a adição

A partir das equações anteriores obtém-se:

PFA

A0 B0

S0

P0 G0

PFA

A1 B1

S1 PFA

A2 B2

S2 PFA

A3 B3

S3

P1 G1C1

C2

C0

P2 G2 P3 G3

C4

C3

Page 11: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

11

Adicionador Carry Lookahead Este tipo de adicionador designa-se por

Carry Lookahead Adder (CLA) Repare no atraso associado à propagação do carry até ao último

PFA – corresponde ao de 2 portas lógicas

E se quisesse construir um CLA de 8 bits ? Problema com o desenho anterior:

para calcular carrys de ordem elevada (e.g. C7) precisaria de portas lógicas com muitas entradas... difícil de implementar na prática

Uma abordagem mais realista seria fazer um esquema onde apenas se usassem portas lógicas com 2 entradas

Page 12: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

12

Adicionador Carry Lookahead

PFA

A0 B0

PFA

A1 B1

PFA

A2 B2

PFA

A3 B3

S0 S1 S2 S3

G01P01

G03P03

G23P23

P0 G0 P1 G1 P2 G2 P3 G3

C0

C1

C2

C3

C4

Page 13: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

13

Adicionador Carry Lookahead

PFA

A0 B0

PFA

A1 B1

PFA

A2 B2

PFA

A3 B3

S0 S1 S2 S3

G01P01

G03P03

G23P23

P0 G0 P1 G1 P2 G2 P3 G3

C0

C1

C2

C3

C4

O caminho crítico está representado a vermelho

Page 14: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

14

Adicionador Carry Lookahead

PFA

A0 B0

PFA

A1 B1

PFA

A2 B2

PFA

A3 B3

S0 S1 S2 S3 PFA

A4 B4

PFA

A5 B5

PFA

A6 B6

PFA

A7 B7

S4 S5 S6 S7C0

C8Um CLA de 8 bits

Page 15: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

15

Adicionador Carry Lookahead

Comparação entre os adicionadores:(supondo que apenas são utilizadas portas lógicas com 2 entradas)

Nº de bitsRipple-carry CLA

Tempo Nº de portas Tempo Nº de portas

4 9tPD 20 7tPD 29

8 17tPD 40 11tPD 61

16 33tPD 80 15tPD 125

32 65tPD 160 19tPD 253

64 129tPD 320 23tPD 509

128 257tPD 640 27tPD 1021

Page 16: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

16

Adicionador Carry Select

A ideia consiste em ir preparando somas parciais para ambas as hipóteses de carry in.

O carry out do bloco anterior irá seleccionar qual dos 2 resultados é válido.

4-bitadder

S0...S3 S4...S7

Sel.

A0...A3

0 14-bit

adder

Mux

4-bitadder

A4...A7B0...B3 B4...B7

Sel

Cout Cin Cin

0 1

Cin0

Page 17: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

17

Adicionador Carry Skip

C16C04-bit

adder

S0..S3

A0..A3 B0..B3

Ci Co4-bit

adder

S4..S7

A4..A7 B4..B7

Ci Co4-bit

adder

S8..S11

A8..A11 B8..B11

Ci Co4-bit

adder

S12..S15

A12..A15 B12..B15

Ci Co

P4,7 P8,11

Composto por vários blocos onde são calculados os P’s.

Estes cálculos permitem propagar o bit de transporte directamente ao bloco seguinte.

Poupa-se tempo de propagação nos blocos que ficam no meio.

Page 18: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

18

Comparação entre adicionadores

Adicionador TempoRipple O(n)

Carry lookahead O(log2 n)

Carry skip O(√n)

Carry select O(√n)

O(x) significa “evolução assimptótica proporcional a x”

Tempo de operação

0

50

100

150

200

250

300

0 32 64 96 128

Número de bits

Tem

po (x

t PD)

Ripple

CLA

Select

Skip

Material necessário

0

500

1000

1500

2000

0 32 64 96 128

Número de bitsN

úmer

o de

por

tas

lógi

cas Ripple

CLA

Select

Skip

Page 19: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

19

Aritmética

Multiplicação binária

Page 20: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

20

Multiplicação binária

Multiplicação (sem sinal) 1101 multiplicando (A)

× 1010 multiplicador (B)

0000

1101

0000

1101

10000010 produto (P)

1101 (13) × 1010 (10) = 10000010 (130)

Quando se multiplicam dois números de n bits (sem sinal), o resultado terá, no máximo, 2n bits.

Page 21: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

21

Multiplicação binária

Multiplicação (sem sinal)

A3 A2 A1 A0

× B3 B2 B1 B0

B0A3 B0A2 B0A1 B0A0

B1A3 B1A2 B1A1 B1A0

B2A3 B2A2 B2A1 B2A0

B3A3 B3A2 B3A1 B3A0

P7 P6 P5 P4 P3 P2 P1 P0

ANDs entre os bits de A e os bits de B

Page 22: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

22

Multiplicação binária

Utilizando vários adicionadores...A3 A2 A1 A0

× B3 B2 B1 B0

0 B0A3 B0A2 B0A1 B0A0

+ B1A3 B1A2 B1A1 B1A0

cout1 S13 S12 S11 S10

+ B2A3 B2A2 B2A1 B2A0

cout2 S23 S22 S21 S20

+ B3A3 B3A2 B3A1 B3A0

cout3 S33 S32 S31 S30

P7 P6 P5 P4 P3 P2 P1 P0

Somadores

Page 23: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

23

B3

A3 A2 A1 A0

B2

A3 A2 A1 A0

B1

A3 A2 A1 A0

B0

A3 A2 A1 A0

0

P7 P6 P5 P4 P3 P2 P1 P0

Cout

Cout

Cout

X Y

S

ADD

X Y

S

ADD

X Y

S

ADD

Multiplicação binária

Pode-se seguir esta estrutura

Page 24: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

24

Multiplicação binária

Utilização de vários adicionadores Se os números a multiplicar são compostos por n bits

então são necessários n – 1 adicionadores de n bits cada um

Desvantagens: Excesso de material

por exemplo, para multiplicar dois números de 32 bits seriam necessários 31 somadores de 32 bits

Demasiado consumo de tempo durante um ciclo Num processador, ter um multiplicador deste género pode

aumentar de forma significativa a duração de cada ciclo do sinal de relógio, devido aos tempos de propagação dos somadores

Page 25: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

25

Multiplicação binária

Alternativa: usar um único somador e registos O resultado é calculado em n ciclos Material necessário

Um registo para acumular as somas – RP Um registo de deslocamento para a esquerda e outro para a

direita – RA e RB RP e RA são registos de 2n bits para RB, um registo de n bits é suficiente

Page 26: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

26

Multiplicação binária

Algoritmo básico (para inteiros sem sinal)

Inicialização:RP ← 0, RA ← A, RB ← B

Ciclo (n iterações)se ( RB0 == 1 ) // bit menos significativo em RB

RP ← RP + RARA ← RA << 1, RB ← RB >> 1

No final, o resultado da multiplicação está em RP

Page 27: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

27

Multiplicação binária

Hardware para o algoritmo básico

RB0

RPLoad

ADD

B

RAShift left

RBShift right

Serial out

A

Page 28: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

28

Multiplicação binária

Exemplo – multiplicar 1010 por 1001 (i.e. 109)

Inicialização:RP: 0000 0000RA: 0000 1010RB: 1001

Ciclo 1 (RB0 = 1)RP: 0000 1010RA: 0001 0100RB: 0100

Ciclo 2 (RB0 = 0)RP: 0000 1010RA: 0010 1000RB: 0010

Ciclo 3 (RB0 = 0)RP: 0000 1010RA: 0101 0000RB: 0001

Ciclo 4 (RB0 = 1)RP: 0101 1010RA: 1010 0000RB: 0000

O resultado será então:

RP: 01011010 = 21+23+24+26 = 2+8+16+64 = 90

Page 29: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

29

Pipelines

Page 30: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

30

Introdução

Arquitectura com unidade de controlo uniciclo

PC

Descodificador de Endereços

Descodificador de Instruções

Controlo de saltos

Memória de programa Memória de dados

Datapath

Unidade de controlo

Leitura/Escrita

Palavra de Controlo

Bits de estado (flags)

Load / INC

Tipo de salto

Page 31: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

31

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

Introdução

A mesma ideia, posta de uma forma diferente...Fetch Descodificação Execução Acesso à

memóriaWrite back

Page 32: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

32

Introdução

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

Fetch (IF) – ler a instrução localizada no endereço dado por PC Descodificação (ID) – obter o opcode e operandos; ler os

registos fonte Execução (EXE) – operações na ALU e controlo dos saltos Memória (MEM) – aceder à memória para escrever ou ler dados Write-back (WB) – escrever o resultado no registo de destino

Descodificação

ID

Fetch

IF

Execução

EXE

Memória

MEM

Write-back

WB

Page 33: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

33

Funcionamento em pipeline

Estrutura de um pipeline Separam-se as várias etapas por registos (buffers) E sincronizam-se esses registos com um sinal de

relógio comum…

IDIF EXE MEM WB

Clock

Page 34: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

34

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

Flags

Funcionamento em pipeline

Com mais detalhe...

Page 35: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

35

Funcionamento em pipeline

Ideia semelhante a uma linha de montagem: Por cada impulso de relógio é realizada uma etapa de

cada instrução que está dentro do pipeline Se o pipeline tem N etapas, então N instruções

podem estar simultaneamente dentro do pipeline

IDIF EXE MEM WB

Clock

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

Page 36: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

36

IDIF EXE MEM WB

Clock

Funcionamento em pipeline

Ilustração do funcionamento

Inst. 1Inst. 2Inst. 3Inst. 4Inst. 5Inst. 6…

Programa a correr

Page 37: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

37

IDIF EXE MEM WB

Clock

Funcionamento em pipeline

Ilustração do funcionamento

Inst. 1Inst. 2Inst. 3Inst. 4Inst. 5Inst. 6…

Programa a correr

Inst. 1

Page 38: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

38

IDIF EXE MEM WB

Clock

Funcionamento em pipeline

Ilustração do funcionamento

Inst. 1Inst. 2Inst. 3Inst. 4Inst. 5Inst. 6…

Programa a correr

Inst. 1Inst. 2

Page 39: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

39

IDIF EXE MEM WB

Clock

Funcionamento em pipeline

Ilustração do funcionamento

Inst. 1Inst. 2Inst. 3Inst. 4Inst. 5Inst. 6…

Programa a correr

Inst. 1Inst. 2Inst. 3

Page 40: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

40

IDIF EXE MEM WB

Clock

Funcionamento em pipeline

Ilustração do funcionamento

Inst. 1Inst. 2Inst. 3Inst. 4Inst. 5Inst. 6…

Programa a correr

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

Page 41: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

41

IDIF EXE MEM WB

Clock

Funcionamento em pipeline

Ilustração do funcionamento

Inst. 1Inst. 2Inst. 3Inst. 4Inst. 5Inst. 6…

Programa a correr

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

Page 42: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

42

IDIF EXE MEM WB

Clock

Funcionamento em pipeline

Ilustração do funcionamento

Inst. 1Inst. 2Inst. 3Inst. 4Inst. 5Inst. 6…

Programa a correr

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

Page 43: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

43

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.

Page 44: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

44

Desempenho em condições ideais

Em condições ideais: O pipeline está bem dividido

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:

Page 45: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

45

Conflitos (pipeline hazards)

Mas num pipeline nem tudo são rosas... Existem situações em que

Instruções em fases diferentes tentam aceder ao mesmo recurso (e.g. à memória)

O resultado de uma instrução depende de outra que ainda não terminou a execução

Situações deste género designam-se por conflitos (ou pipeline hazards)

A existência de conflitos afectam o CPI médio, reduzindo o ganho de um pipeline...

Page 46: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

46

Tipos de conflitos

Conflitos de dadosocorrem 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 aceder ao mesmo recurso

Conflitos de controloocorrem em instruções de salto, quando o salto depende de um resultado que ainda não foi calculado

Page 47: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

47

Conflitos de dados

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 os ter escrito

A instrução 2 iria ler um valor desactualizado... Exemplo:

...

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

...

Page 48: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

48

Conflitos de dados

Conflito RAW (cont.)

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

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

ADD R0, R1, R2 IF ID EXE MEM WB

SUB R5, R0, R4 IF ID EXE MEM WB

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

CONFLITO !A instrução SUB está a utilizar o valor de R0 antes de tempo, pois a instrução ADD ainda não escreveu o resultado...

Page 49: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

49

Conflitos de dados

Resolução básica de conflitos Detecta-se o conflito Inserem-se bolhas no pipeline Uma bolha é basicamente uma palavra de controlo

que manda “não fazer nada” (nop) Cada bolha faz com que seja desperdiçado um ciclo

de relógio

Page 50: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

50

Conflitos de dados

Para o caso anterior, resolve-se o conflito introduzindo 2 bolhas após detectado o conflito O conflito pode ser detectado quando é feita a descodificação do SUB Depois atrasa-se o SUB dois ciclos, de forma a dar tempo para fazer o

WB do ADD

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

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

ADD R0, R1, R2 IF ID EXE MEM WB

SUB R5, R0, R4 IF ID B B EXE MEM WB

… ... ... ... ... ...

Conflito resolvido

Conflito detectado

Page 51: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

51

IDIF EXE MEM WB

Clock

Conflitos de dados

Outra maneira de ver o problema:

SUB R5,R0,R4 ADD R0,R1,R2 …

Page 52: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

52

IDIF EXE MEM WB

Clock

Conflitos de dados

Outra maneira de ver o problema:

SUB R5,R0,R4 ADD R0,R1,R2 ……

Page 53: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

53

IDIF EXE MEM WB

Clock

Conflitos de dados

Outra maneira de ver o problema:

SUB R5,R0,R4 ADD R0,R1,R2 …… B

Page 54: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

54

IDIF EXE MEM WB

Clock

Conflitos de dados

Outra maneira de ver o problema:

SUB R5,R0,R4 ADD R0,R1,R2… B B

Page 55: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

55

IDIF EXE MEM WB

Clock

Conflitos de dados

Outra maneira de ver o problema:

SUB R5,R0,R4… B B…

Page 56: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

56

Conflitos de dados

Resolução mais eficiente de conflitos RAW Utiliza-se uma técnica chamada 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 RAW, utilizam-se

esses resultados em vez do que foi lido dos registos

Page 57: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

57

Conflitos de dados

Utilização de forwarding

IDIF EXE MEM WB

Clock

MUX

MUX

ALU

MUXMemória

de dados

Com mais detalhe:

Page 58: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

58

Conflitos de dados

Outros conflitos de dados Conflito WAW (Write after Write)

Ambas as instruções escrevem dados no mesmo local O conflito ocorre se a instrução 2 tentar escrever antes da

instrução 1 escrever Conflito WAR (Write after Read)

Uma 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

Só ocorrem em pipelines mais complexos, com várias fases onde são feitas leituras e escritas e nos registos

Page 59: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

59

Conflitos estruturais

Duas (ou mais) instruções tentam aceder em simultâneo ao mesmo recurso Situação típica

Quando se usa uma única memória para dados e programa, não se pode fazer o fetch (IF) ao mesmo tempo que uma instrução acede à memória para ler/escrever dados

Outras situações Tentar escrever no mesmo registo em simultâneo (só ocorre em

processadores com mais do que uma fase de write-back) Tentar ler ou escrever dados em simultâneo na mesma memória (só

ocorre em processadores com mais do que uma fase de acesso à memória)

Page 60: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

60

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 se acede à memória para ler dados (o LOAD)...

CONFLITO !

Page 61: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

61

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

Page 62: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

62

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 vão-se buscar mais instruções à

memória.

Page 63: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

63

Conflitos de controlo

Ocorrem quando aparecem saltos Saltos incondicionais

O processador só fica a saber que é uma instrução de salto na fase ID...

... mas nessa altura, a instrução que está na posição de memória que se segue à de salto já se encontra na fase IF

Saltos condicionais Para além do que acontece com os saltos incondicionais, só

se sabe vai haver o salto após a verificação da condição de salto (tipicamente associada à fase EXE)

Page 64: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

64

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

Flags

Conflitos de controloSó aqui se sabe que é um salto...

Nos saltos condicionais, só depois das flags serem actualizadas é que se sabe se o salto vai ser tomado ou não...

Page 65: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

65

Conflitos de controlo

Exemplo (salto incondicional)

...

LBL1: ADD R1, R4, R5

...

STORE a, R1

JUMP LBL1

LBL2: LOAD R1, a

...

Page 66: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

66

Conflitos de controlo

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

(isto assumindo que o controlo está feito de forma a poder actualizar o valor de PC na altura em que a instrução de salto está em ID)

Page 67: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

67

Conflitos de controlo

Exemplo (salto condicional)

...

DEC R1, R1

JZER END

ADD R0, R1, R2

STORE a, R0

...

END: LOAD R1, a

...

Umas vezes há salto, outras não...

Page 68: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

68

Conflitos de controlo

Ilustração do problema (salto condicional):

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á actualizar o valor de PC depois do salto entrar na fase EXE (só aí se sabe que o salto se vai verificar ou não)...

Page 69: 1 Aula 10 – Sumário  Aritmética  Aceleração da adição  Multiplicação binária  Pipelines  Princípio de funcionamento  Conflitos de dados, estruturais.

69

Conflitos de controlo

Minorar a introdução de bolhas:Previsão de saltos (branch prediction) Previsão estática

Assume-se que o salto é sempre tomado (predict-taken) Ou se assume que o salto nunca é tomado (predict-not-

taken) Previsão dinâmica

A previsão depende do que se passou em saltos anteriores O estado da previsão de saltos vai mudando à medida que o

programa vai correndo Muito usada em processadores actuais

Em caso de previsão errada, perdem-se ciclos de processamento correspondentes às instruções que entretanto entraram no pipeline