multiplicação de valores inteiros selecionar subconjunto de bits ponto decimal sinal

23
Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Multiplicação de valores inteiros

Selecionar subconjuntode bits

Ponto decimalSinal

Page 2: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Soma

Page 3: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Multipli-cação

Page 4: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Multiplicação de valores fracionais

Selecionar subconjuntode bits

Ponto decimalSinal

Page 5: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Arrendondamento

a7 a6 a5 a4 a3 a2 a1 a0

b3 b2 b1 b0

A

B

Arredondamento para o mais próximoB = a7:a4 + a3

Arredondamento convergenteif a3:a0 <> 1000 B = a7:a4 + a3

else B = a7:a4 + a4

Page 6: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

ULAparapontofixo

Page 7: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

ULAparapontoflutuante

Page 8: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Filtro FIR(resposta finita a impulso)

Page 9: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Arquitetura Harvard

Memória A

Barramento de Endereços A

CPU

Memória B

Barramento de Dados A

Barramento de Endereços B

Barramento de Dados B

Page 10: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Modos de endereçamentoregister indirect

Ler os dados apontados por endereço em registrador

postincrement Depois de ter lido os dados, incremente o ponteiro do endereço

postdecrement Depois de ter lido os dados, decremente o ponteiro do endereço

register postincrement

Depois de ter lido os dados, incremente o ponteiro do endereço de um número de posições indicado por um registrador

bit reversed (borboleta FFT)

Reorganize os bits de endereço para chegarNo proóximo endereço

Page 11: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Modos de endereçamento

Endereçamento módulo

Page 12: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Unidade de geração de endereços

Page 13: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Sem Pipelining

I2I1

I2

I2I1

I2I1

87654321

ciclo de relógio

executar

ler/escrevermemória

decodificar

obter instrução

I1

Page 14: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

I1

Pipelining

87654321

ciclo de relógio

executar

ler/escrevermemória

decodificar

obter instrução

I1

I1

I1

I2

I2

I2

I2

I3

I3

I3

I3

I4

I4

I4

I4

I5

I5

I5

I5

Page 15: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Conflito de disponibilidadede recursos

87654321

ciclo de relógio

executar

ler/escrevermemória

decodificar

obter instrução I1

I1

I1

I1

I2

I2

I2

I2

I3

I3

I2/3

I3

I4

I4

I4

I4

I5

I5

I5

I5

Page 16: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Resolução do Conflitousando Bloqueiamento

87654321

ciclo de relógio

executar

ler/escrevermemória

decodificar

obter instrução I1

I1

I1

I1

I2

I2

I2

NOP

I3

I3

I2

I2

I4

I3

I3

I3

I4

I4

I4

I4

I5

I5

I5

Page 17: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Falha de sincronização

I1 MOV R0,5678

I2 SUB R0,4444

I3 MOV X0,[R0]

Page 18: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Efeito de salto

87654321

ciclo de relógio

executar

ler/escrevermemória

decodificar

obter instrução BRA

BRA

BRA

BRA

I2

-

-

NOP

-

-

-

-

-

-

N1

N1

N1

N1

N2

N2

N2

NOPNOP

Page 19: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Solução: salto com retardo

I1 BRA 5678 ;salto para novo endereço

I2 SUB R0,R2 ;estas três

I3 MOV R3,R2 ;instruções são executadas

I4 ADD R4,R5 ;antes de salto

• problema: salto condicional

Page 20: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Solução: salto com retardo

87654321

ciclo de relógio

executar

ler/escrevermemória

decodificar

obter instrução BRA

BRA

BRA

BRA

I2

I2

I2

I2

I3

I3

I3

I4

I4

I4

N1

N1

N1

N1

N2

N2

N2

I3 I4

Page 21: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

ResumoDiferenças entre DSP e processador comum

• DSPs são feitas para aplicações embarcadas de processamento de sinais em tempo real

• DSPs não podem ser programado pelo usuário (não existe UGM, nem SO, nem cache, nem multi-processamento)

• DSPs usam alguma forma de "Arquitetura Harvard"

• DSPs dedicam uma parte significativa de superfície de silício para operações de multiplicação/acumulação

Page 22: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Resumo (continuação)

Diferenças entre DSP e processador comum

• Programas de DSPs estão armazenadas frequentemente em ROM on-chip

• DSPs frequentemente possuem dois RAMs on-chip para dados

• O mecanismo de interrupção de DSPs é simples e rápido

• DSPs são frequentemente programados em Assembler

Page 23: Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal

Resumo (continuação2)

Diferenças entre DSP e processador comum

• Mecanismo de E/S simples• Espaço de endereçamento reduzido • DSPs de ponto fixo podem usar saturação em vez de

estouro• Modos de endereçamento específicos (buffer

circular, "borboleta")• Suporte para laços e as vezes pilha on-chip• benchmark para DSPs são diferentes: :

– Filtro FIR/IIR, FFTs– Convolução, Produto de vetores