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

Post on 17-Apr-2015

109 views 0 download

Transcript of Multiplicação de valores inteiros Selecionar subconjunto de bits Ponto decimal Sinal.

Multiplicação de valores inteiros

Selecionar subconjuntode bits

Ponto decimalSinal

Soma

Multipli-cação

Multiplicação de valores fracionais

Selecionar subconjuntode bits

Ponto decimalSinal

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

ULAparapontofixo

ULAparapontoflutuante

Filtro FIR(resposta finita a impulso)

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

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

Modos de endereçamento

Endereçamento módulo

Unidade de geração de endereços

Sem Pipelining

I2I1

I2

I2I1

I2I1

87654321

ciclo de relógio

executar

ler/escrevermemória

decodificar

obter instrução

I1

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

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

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

Falha de sincronização

I1 MOV R0,5678

I2 SUB R0,4444

I3 MOV X0,[R0]

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

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

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

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

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

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