SPDS/PSC – PROCESSADORES DIGITAIS DE SINAL I
Correlação
Codificação PCM Cálculo de FFTs
Filtros FIR programáveis Descodificador de Viterbi etc... Genéricos Específicos Arquitectura interna adaptada à resolução de problemas específicos (Algorithm-specific) Arquitectura interna adaptada para aplicações específicas (Application-specific)
Processadores
de sinal
Controladores específicos Modem GMSK Transceptores wireless Canceladores de eco Igualizadores etc... Totalmente programáveis Semi-programáveis Dedicados2
SPDS/PSC – PROCESSADORES DIGITAIS DE SINAL II
Genéricos
Texas Instruments
TMS320C64x (v. fixa)
TMS320C54x (v. fixa)
TMS320C67x
TMS320C4x
Motorola
DSP563x (v. fixa)
Analog Devices
ADSP21xxx (SHARC)
Específicos
Cirrus Logic
CS8420 conversor de
frequência de amostragem
(áudio)
Mitel
MT9300 cancelador de
eco (voz)
PDSP16515A processador
FFT
VPDSP16256 filtro FIR
SPDS/PSC – PROCESSADORES DIGITAIS DE SINAL III
Processadores de sinal: muito rápidos com arquitecturas
orientadas para o processamento de palavras
Operações mais usuais no processamento de sinal:
Multiplicação Soma
Atraso de um período de amostragem Leitura de tabelas
Funções lógicas
Decisões lógicas baseadas no valor de variáveis
Exemplos de blocos de processamento de sinal muito
comuns que podem ser integrados numa única instrução:
SAC (Square, Accumulate, Compare) aplicação no
algoritmo de Viterbi
MACD (Multiply, ACcumulate, Data move) aplicação no
cálculo de filtros digitais
Processadores
de sinal
Discretos Monolíticos
Realizados com componentes discretos: ALU, multiplicador, registos, etc... Realizados numa única pastilha de
4
SPDS/PSC – PROCESSADORES DIGITAIS DE SINAL IV
Características gerais dos DSPs:
Grande comprimento de palavra (24 ou 32 bit)
Ciclo de instrução muito curto (maioria das instruções executam em
apenas 1 ciclo de relógio)
Frequência de relógio elevada (ciclos muito rápidos) Elevado número de registos internos de acesso rápido
Característica DSP mP geral
Versatilidade pequena grande
Nº de registos internos grande pequeno
Comprimento da palavra grande ?
Realização de operações aritméticas por circuito por programa
Nº de instruções pequeno grande
Ciclo de instrução rápido lento
SPDS/PSC – PROCESSADORES DIGITAIS DE SINAL V
Vantagens dos DSPs:
1.
Resolução pode obter-se grande precisão fazendo as contas compalavras de comprimento grande
2.
Gama dinâmica ALU’s com grande comprimento de palavra (N bit)permitem gama dinâmica muito elevada (aproximadamente 6N dB), impossível de conseguir com circuitos analógicos
3.
Estabilidade de características um sistema implementado com DSPsnão sofre desvios de características por tolerância e/ou envelhecimento dos componentes, ou influências térmicas.
4.
Versatilidade o mesmo circuito pode ser utilizado para resolverproblemas diferentes apenas por alteração da programação do DSP
5.
Facilidade em gerar funções não-lineares por tabela (seno, tan, etc…)6.
Facilidade em implementar algoritmos adaptativos Inconvenientes dos DSPs:
1.
Necessitam de conversores A/D e D/A para comunicar com o mundoanalógico
2.
Têm consumo elevado em muitos casos os circuitos analógicos podemconsumir entre 1 a 100 vezes menos para realizar funções equivalentes
6
SPDS/PSC – PROCESSADORES DIGITAIS DE SINAL VI
Telecomunicações:
Processamento de sinais em emissores/receptores (modems) Igualadores adaptativos
Canceladores de eco Codificação de áudio
Análise e síntese de sinais Codificação de imagem
Controlo industrial:
Processamento de imagem Reconhecimento de formas
Controlo de processos em tempo real Contadores electrónicos de energia Suspensões activas
Electrónica de consumo:
Áudio digital (igualação, cancelamento, etc…) Efeitos sonoros
Sintetizadores de som
Síntese e reconhecimento de voz
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL VII – Arquitecturas
mP genérico com arquitectura de Von Neumann
Operações sequenciais
Unidades não envolvidas na execução da instrução esperam a
sua finalização ineficiência
Aumento da rapidez global só possível à custa do aumento
da rapidez de cada unidade
8
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL VIII – Arquitecturas
DSP genérico com arquitectura de Harvard
Múltiplos barramentos.
Barramento de dados separado do barramento de programa
(arquitectura de Harvard). Barramentos específicos para entrada/saída
Possibilidade de acesso directo à memória (DMA) para
transferências rápidas de blocos de dados
Unidades aritméticas e lógicas (ALU), multiplicador de hardware e pequenos blocos de
processamento (por exemplo:
Accumulate ou Multiply-Accumulate-Compare) realizados
em hardware
Necessário memória de dados e programa distinta
O elevado desempenho dos DSP é obtido por meio de técnicas:
Arquitectura de Harvard Pipelining
Hardware dedicado Memória interna/cache
Modos de endereçamento avançados (circular, bit-reversed, etc…)
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL IX – Arquitecturas
Microprocessador standard: um único barramento para dados e programa (Von Neumann)
A execução de uma instrução envolve 3 fases distintas:
Fetch o código da instrução é lido da memória de programa Decode a instrução é
descodificada
Execute a instrução é
executada (envolvendo em geral a escrita/leitura da memória de dados)
Como o barramento de
programa e dados (e em geral também a memória física) é
comum, a execução da instrução
n não pode ser feita em paralelo
com o fetch da instrução n+1 Exemplo: ler o valor OP1 (no
endereço ADR1) e guardar o valor nas posições de memória com endereços ADR2 e ADR3
10
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL X – Arquitecturas
Microprocessador com
arquitectura de Harvard
Dados e programa residem em
memórias fisicamente distintas,
com barramentos distintos
Como existem barramentos
separados para programa e
dados, a execução da instrução
n pode ser feita em paralelo
com a leitura (fetch) da
instrução n+1
Arquitectura de Harvard
modificada existe
comunicação entre a memória
de programa e a memória de
dados
eficiência (paralelismo)
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XI – Eficiência/paralelismo
Pipelining: técnica que permite explorar o paralelismo inerente às fases de execução de uma instrução (que são independentes numa
arquitectura de Harvard). No caso anterior temos 3 fases independentes:
pipe com 3 estágios (utilizado nos
processadores da Texas Instruments) Necessário:
Contador pre-fetch: contém o
endereço da próxima instrução a ser lida da memória (fetched)
Registo de instrução: contém o
código da próxima instrução a ser executada
Fila de espera de instruções:
mantém o código das instruções a executar se a instrução actual ainda estiver a ser executada (instruções com mais de um ciclo de relógio)
Devido ao overhead associado à gestão do pipe a eficiência é inferior ao nº de estágios
Como são realizadas 3 operações em paralelo, o
pipelining provoca um
aumento do nº de acessos à memória
12
Técnicas para aumentar a eficiência dos processadores
Utilização de memória interna rápida
Memória externa lenta obriga à inserção de wait-states (por software ou hardware) que fazem diminuir o desempenho do
processador tanto em acessos de dados como de programa. A memória interna obvia este problema: durante a fase de
inicialização o programa é transferido da memória externa (lenta) para memória interna (rápida)
Utilização de Cache interna
Permite acelerar a execução de segmentos de código frequentes
Repetição encadeada de blocos de instruções
O controlo é feito por hardware dedicado, evitando todo o
overhead associado ao controlo de ciclos por software. Podem ser
implementados vários níveis de encadeamento (4 níveis no processador ADSP-2115 da Analog Devices, por exemplo). A execução repetida de blocos pode beneficiar grandemente da existência de Cache
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XII – Eficiência/paralelismo
Técnicas para aumentar a eficiência dos processadores
Barramentos múltiplos (dados e programa)
4 barramentos no TMS320C5416, 10 no TMS320C6416/6713
Utilização de hardware dedicado e coprocessamento
Utilização de instruções especiais
Executam mais do que uma operação por ciclo de instrução
Replicação de hardware
Replicação de multiplicadores e ALUs de modo a aumentar o
paralelismo no cálculo. O processador TMS320C6416 tem 4 multiplicadores de 16ä16 bit. O processador TMS320C6713 tem 6 ALUs dedicadas
Técnicas para aumentar o paralelismo no processamento
Processamento Single Instruction Multiple Data (SIMD) Utilização de Very Large Instruction Word (VLIW) Processamento superescalar
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XIII – Eficiência/paralelismo
14
Blocos de hardware específico e coprocessadores
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XIV – Eficiência/paralelismo
Multiply-Accumulate (MAC)
Operação muito comum em processamento
digital de sinais
A codificação em hardware (vírgula fixa ou
flutuante) permite, em apenas um ciclo de
intrução: ler dois operandos (ambos de
memória de dados, ou um de memória de dados e outro de memória de programa) multiplicá-los e acumular o resultado a um valor anterior
Variante: Multiply-Accumulate-Data Move
(MACD)
Além das operações anteriores faz
deslocamento do conteúdo de uma das posições da memória de dados endereçada: útil para a implementação de linhas de atraso (realização de filtros)
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XV – Eficiência/paralelismo
Ts Conversor A/D s w Ts Ts 0 a a1 a2
1 N a -( s) y nT ( s) x nT x n(( -1) )Ts x n(( -N +1) )Ts
Arquitectura de um DSP – Realização de filtros transversais
1 0
(
)
((
) )
N i s iy nTs
a x n
i T
-==
å
⋅
- A saída actual y(nTs) depende da entrada actual x(nTs) e das
restantes N-1 entradas anteriores (não depende das saídas anteriores não tem realimentação é não-recursivo)
O filtro transversal permite realizar qualquer função de filtragem através do dimensionamento dos coeficientes ai
O filtro transversal tem resposta impulsional finita (FIR-Finite
Impulse Response) com duração NTs segundos
O filtro transversal é sempre estável é ideal para processamento adaptativo
16
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XVI – Eficiência/paralelismo
Linha de atraso Atraso Ts i a (( ) )s x n -i T x n(( - -i 1) )Ts Resultado acumulado nos cálculos anteriores Resultado actual (para as baixadas seguintes) (( ) ) i s a x n⋅ -i T
Bloco básico de cálculo de um filtro transversal
Operações realizadas no
cálculo
1.
Leitura de x((n-i)T
s)
2.
Leitura de a
i3.
Multiplicação de a
ipor
x((n-i)T
s)
4.
Soma do produto com o
resultado anterior
5.
Atraso de x((n-i)T
s) de
um período de
amostragem T
s
Operações complexas para um processador convencional mas
simples para um processador de sinal que as pode realizar
num único ciclo de relógio
Contador Registo AR1 x(n-N+1) x(n-N+2) x(n) Registo T Circuito Multiplicador paralelo (dedicado) Registo de entrada Produto (Registo P) ALU (32 bit) Somador Registo acumulador ACC Resultado actual Resultado anterior 16 32 Contador de programa PC 16 a0 a1 aN-1 32 Barramento de programa Barramento de dados Relógio (ciclo da máquina)
N Barramento de dados (( ) ) i s a x n⋅ -i T Atraso
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XVII – Eficiência/paralelismo
Arquitectura de Harvard
modificada Exemplo com processador de
16 bit
O contador AR1 é inicializado com o valor N (comprimento do filtro FIR) e aponta para a amostra x(n-N+1)
O contador de programa endereça o coeficiente aN-1 Em cada ciclo de relógio AR1
decrementa de 1 (o contador de programa incrementa de 1); é feito o produto aix((n-i)Ts) e este é somado na ALU com o resultado anterior
18 Blocos de hardware específico e coprocessadores
Turbo Decoder Coprocessor
Utilização em comunicação digital (3G por exemplo)
Viterbi Decoder (e.g. TMS320C54x)
A unidade de cálculo elementar é a Compare-Select-Store Unit (CSSU) O acumulador A (32 bit) contém Met1+D1 na parte alta e Met2+D2 na
parte baixa. O bloco COMP compara estas palavras de 16 bit e sinaliza ao bloco SELECT qual a maior, que deve seleccionar e guardar.
O acumulador B contém outras métricas acumuladas e é depois
seleccionado (MUX) para fazer outra comparação da treliça.
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XVIII – Eficiência/paralelismo
Single Instruction Multiple Data (SIMD)
Permite aumentar o número de operações realizadas por cada
instrução
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XIX – Eficiência/paralelismo
Devido à multiplicidade de
barramentos, multiplicadores e unidades aritméticas, uma só instrução pode conter diversos operandos que são entregues a estas unidades e processados em paralelo
Versatilidade: pode optar-se por
realizar uma operação MAC de 32ä32 bit ou em alternativa, 4 operações MAC de 16ä16 bit
Útil quando os dados existem e
podem ser acedidos
concorrentemente (não de forma sequencial)
20
Very Large Instruction Word (VLIW)
Permite aumentar o número de instruções executadas em cada ciclo de instrução
Uma VLIW contém múltiplas instruções elementares (mais pequenas) e requer a existência de várias unidades de execução
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XX – Eficiência/paralelismo
Exemplo: TMS320C62x: existem 8 unidade de execução agrupadas em dois conjuntos (L1, S1, M1, D1) e (L2, S2, M2, D2). As instruções elementares são de 32 bit e uma VLIW contém 8 instruções elementares (256 bit).
1) O processador faz o fetch de uma VLIW (packet). 2) As 8 instruções são analizadas e se for possível executá-las em paralelo é formado um execution packet que é distribuído pelas unidades de execução. 3) Se não for possível executar todas as instruções em paralelo são formados diversos execution packets (com tamanho entre 1 e 8 instruções) e enviados sequencialmente para as unidades de execução.
Processadores superescalares
Por definição e tal como com VLIW, permitem aumentar o número de instruções por ciclo de execução. Na prática combinam os conceitos anteriores (SIMD e VLIW)
SPDS/PSC – PROCESSADORES DIGITAIS DE
SINAL XXI – Eficiência/paralelismo
Exemplo: TigerSHARC da Analog Devices. Processador superescalar estático (paralelismo é determinado antes da execução). A
pré-análise do programa é necessária também para evitar dependência de dados e de controlo (fluxo do programa), o que também acontece com os processadores VLIW.
Uma instrução pode conter dados para as duas ALU (SIMD), ou podem ser enviadas 2 instruções diferentes para as 2 unidades de execução (VLIW).
Unidades aritméticas podem funcionar com 8, 16, 32 ou 64 bits, o que permite aumentar o paralelismo de instrução: por exemplo, podem realizar-se 8 MAC de 16 bit em vez de 2 MAC de 32 bit