processadores especializados
FEUP/DEEC
processadores
programáveis (por software)
não programáveis
µprocessador
usos gerais
µcontrolador
aplicações industriais, controlo, RT
DSP
aplicações numéricas, RT
ASIP
hw e conjunto de instruções optimizado para a aplicação
ASIC
algoritmo implementado completamente em hw
especialização crescente ASPD 2003/2004 -
[email protected]
1
processadores especializados
FEUP/DEEC
ASIP Application Specific Instruction-set Processor • processador programável (por software) – alternativa a projectar um ASIC, risco mais baixo
• conjunto de instruções optimizado para uma aplicação • instruções de uso geral + instruções especiais – que grau de flexibilidade é desejável?
• DSP é um ASIP para processamento de sinal • objectivo – manter flexibilidade, melhorar desempenho e custo ASPD 2003/2004 -
[email protected]
2
1
processadores especializados
FEUP/DEEC
desempenho vs. flexibilidade desempenho
hardware ASIC
ASIP
software processadores convencionais
flexibilidade
ASPD 2003/2004 -
[email protected]
3
processadores especializados
FEUP/DEEC
ASIP - organização • um ASIP integra: – núcleo de um processador convencional • sub-conjunto do conjunto de instruções • arquitecturas VLIW, superescalar • possibilita a reutilização de compiladores existentes
– circuitos dedicados (à aplicação) • • • • •
memórias, barramentos, registos, hardware dedicado co-processadores, unidades funcionais (datapath) processadores periféricos (comunicações) gestão de consumo de energia suporte para execução de instruções específicas
ASPD 2003/2004 -
[email protected]
4
2
processadores especializados
FEUP/DEEC
porquê ASIPs? • quando um processador convencional não chega – optimizar desempenho • • • •
explorar paralelismo instruções (execução paralela, pipelining) operações dedicadas, típicas da aplicação alvo gerir o consumo de energia
– tipos de dados bem adaptados à aplicação • inteiros, vírgula fixa ou flutuante, nº arbitrário de bits • largura das memórias, barramentos,datapath...
– minimizar o custo e o risco de re-design • é mais barato do que projectar um ASIC • parte da funcionalidade é software ASPD 2003/2004 -
[email protected]
5
processadores especializados
FEUP/DEEC
como projectar? • partição entre hardware e software – que partes têm que ser feitas em hardware? • requisitos de desempenho e de consumo de energia • operações típicas do domínio de aplicação, re-utilizáveis • como implementar? – datapath, co-processadores, processadores periféricos
– que partes podem ser feitas em software? • • • •
qual o grau de flexibilidade (“programabilidade”)? que instruções convencionais? como se desenvolve o software? quanto “custa” a comunicação entre hw e sw?
ASPD 2003/2004 -
[email protected]
6
3
processadores especializados
FEUP/DEEC
processadores para DSP • processamento em tempo real – sequência de dados de entrada e de saída com taxas fixas (p.ex. 2x44100Hz para áudio digital de CD)
• aritmética intensiva – com inteiros, vírgula fixa ou vírgula flutuante – operações padrão muito frequentes
• reprogramabilidade (field upgrades) – programação por software, baixo risco
• baixo consumo (aplicações portáteis, embedded) – baixa frequência de relógio, baixa tensão
• baixo custo ASPD 2003/2004 -
[email protected]
7
processadores especializados
FEUP/DEEC
porquê DSPs? • alternativas – CPUs/computadores de uso geral • operam com frequência de relógio mais elevadas • desempenho pode ser pior do que DSPs • podem satisfazer aplicações “pouco” exigentes – um descodificador MP3 num PC executa em RT
• custo e consumo elevados (sistemas embedded)
– hardware dedicado • ASICs, circuitos discretos, FPGAs • desempenho máximo, não programável • mas quando Fs>Fclk/100 pode ser a única solução viável
ASPD 2003/2004 -
[email protected]
8
4
processadores especializados
FEUP/DEEC
DSPs - características • programáveis por software • optimizados para processamento digital de sinal • características específicas de DSPs – – – –
operações padrão, tipos de dados organização do datapath arquitectura de memória e modos de endereçamento conjunto de instruções, controlo de fluxo
• optimizar código requer programar em assembly – arquitectura dos DSPs dificulta o trabalho dos compiladores
ASPD 2003/2004 -
[email protected]
9
processadores especializados
FEUP/DEEC
exemplo: filtro FIR operação elementar: vk(n-1)=vk+1(n-1)+xn*hk
Qual o tempo disponível para calcular y(n) ? ASPD 2003/2004 -
[email protected]
10
5
processadores especializados
FEUP/DEEC
DSP - operações e dados • multiplicar e acumular: X=X+a*b (MAC) – filtros, correlações, transformadas – primeiro DSP com um MAC por clock • Texas Inst. TMS320C10 (1982, 16 bits, 8.8 MIPs)
– MAC requer ler 3 operandos e escrever um resultado
• operações aritméticas com saturação ou overflow • arredondamento • várias unidades de execução – MAC, ALUs, shifters
• bits extra nos acumuladores – prevenir a ocorrência de overflow na acumulação ASPD 2003/2004 -
[email protected]
11
processadores especializados
FEUP/DEEC
tipos de dados e operações • vírgula fixa (complemento para 2) [-2N-1, +2N-1-1] [-2N-1 / 2M, +(2N-1-1) / 2M]
– inteiros – fraccionários
• usando M bits para a parte fraccionária (M
inteira
sinal
fraccionária
• vírgula flutuante – maior gama dinâmica, operadores mais complexos mantissa s 1
expoente s
valor = mantissa x 2expoente ASPD 2003/2004 -
[email protected]
12
6
processadores especializados
FEUP/DEEC
tipos de dados e operações • multiplicações em vírgula fixa inteiros 6 bits
s
com parte fraccionária
s
6 bits
s
s
X 12 bits
X
s
12 bits
6 bits
s
6 bits
• shifter permite escolher os bits do resultado
ASPD 2003/2004 -
[email protected]
13
processadores especializados
FEUP/DEEC
tipos de dados e operações • adição/subtracção com saturação – se A+B> 2N-1-1 então resultado é 2N-1-1 – se A+B< -2N-1 então resultado é -2N-1 – sem saturação ocorre overflow!
• arredondamento (convergente, média=0) – necessário após multiplicação 12 bits
6 bits
ASPD 2003/2004 -
[email protected]
s
b-4
s
se > 1000 adiciona 0.0001 se < 1000 não faz nada (trunca) se = 1000 adiciona 0.000b-4
14
7
processadores especializados
FEUP/DEEC
exemplo de datapath
(DSP560xx) ASPD 2003/2004 -
[email protected]
15
processadores especializados
FEUP/DEEC
organização de memória • vários acessos a memória em cada instrução – – – –
memórias separadas para programa e dados (Harvard) dimensão dos dados ”nativos” diferente das instruções vários barramentos internos memórias locais de duplo porto para usos especializados
• modos de endereçamento – endereçamento em DSP segue padrões repetitivos – unidades especializadas para gerar endereços por hardware • indirecto por registo com pós-incremento ou decremento • módulo-K (acesso a buffers circulares) • endereçamento bit-reversed (cálculo de FFTs)
ASPD 2003/2004 -
[email protected]
16
8
processadores especializados
FEUP/DEEC
conjunto de instruções • especialização – compromisso entre custo e desempenho
• instruções especiais – – – – –
MAC acesso a memórias internas instruções com execução condicional manipulação de bit fields ciclos realizados por hardware (zero-overhead looping) • uma ou mais instruções repetidas N vezes, sem saltos
ASPD 2003/2004 -
[email protected]
17
processadores especializados
FEUP/DEEC
paralelismo • VLIW - Very Long Instruction Word – executado um grupo de instruções de cada vez – instruções agrupadas na geração do código – TI TMS320C62XX • 8 unidades de execução • executadas até 8 instruções em paralelo (256 bits)
ASPD 2003/2004 -
[email protected]
18
9
processadores especializados
FEUP/DEEC
TMS32010
ASPD 2003/2004 -
[email protected]
FEUP/DEEC
19
processadores especializados
TMS320C30
ASPD 2003/2004 -
[email protected]
20
10
processadores especializados
FEUP/DEEC
DSP56002
ASPD 2003/2004 -
[email protected]
21
processadores especializados
FEUP/DEEC
processadores vectoriais • contêm instruções que operam em vectores – uma só instrução para somar 2 vectores com N números • registos são vectores de dimensão fixa (ou variável) ADDV.D V1,V2,V3:
V1 <- V2+V3
– executa um ciclo N vezes inteiramente em hardware • não são executadas as instruções para controlo do ciclo
– não há dependências de dados entre as iterações • utilização óptima das pipelines, não ocorrem conflitos
– uma única operação de fetch para toda a operação • número de acessos à memória reduzido drásticamente
– acessos à memória ocorrem com padrões conhecidos • a memória pode ser optimizada para esse tipo de acessos
– podem ocorrer dependências de dados entre vectores • mas duas instruções vectoriais podem decorrer em pipeline Baseado em J.L. Hennessy, D.A. Patterson, "Computer Architecture: A Quantitative Approach" 3ª ed., Morgan Kaufmann Publishers, 2003, Apêndice G
ASPD 2003/2004 -
[email protected]
22
11
processadores especializados
FEUP/DEEC
arquitectura vectorial básica VMIPS
64 elementos
• • • •
operações vectoriais só entre registos load/store de vectores unidades funcionais pipelined registos escalares (1 dado)
ASPD 2003/2004 -
[email protected]
FEUP/DEEC
23
processadores especializados
exemplos de proc. vectoriais
ASPD 2003/2004 -
[email protected]
24
12
processadores especializados
FEUP/DEEC
instruções vectoriais do VMIPS
ASPD 2003/2004 -
[email protected]
25
processadores especializados
FEUP/DEEC
exemplo • • • • •
resolver Y = a x X + Y (benchmark Linpack DAXPY) X e Y são vectores residentes em memória a é um escalar todos os dados são reais de precisão dupla os vectores têm dimensão 64 – igual à dimensão dos registos do VMIPS
ASPD 2003/2004 -
[email protected]
26
13
processadores especializados
FEUP/DEEC
programa escalar v.s vectorial MIPS
VMIPS
quantas instruções são executadas em cada caso? ASPD 2003/2004 -
[email protected]
27
processadores especializados
FEUP/DEEC
desempenho tempo de execução
• factores que determinam o tempo de execução – dimensão dos vectores – conflitos estruturais – dependências de dados
• VMIPS – uma lane (uma só operação pipelined de cada vez) – 1 dado consumido por ciclo de relógio – tempo de execução de 1 inst. ≈ dimensão do vector
ASPD 2003/2004 -
[email protected]
28
14
processadores especializados
FEUP/DEEC
desempenho conceitos • grupo
1
– conjunto de instruções vectoriais que podem iniciar no mesmo ciclo de relógio (ou em ciclos consecutivos) – não podem ter conflitos estruturais ou de dados – a execução de um grupo tem de terminar para ser iniciada outra instrução (vectorial ou escalar)
• tempo
2
– 1 tempo é a unidade de tempo necessária para executar um grupo – é independente da dimensão do vector
• o tempo de execução de um conjunto de instruções – é igual ao nº de grupos, em unidades tempo 1 2
na literatura original convoy na literatura original chime
ASPD 2003/2004 -
[email protected]
29
processadores especializados
FEUP/DEEC
desempenho exemplo um programa:
organizado em grupos:
ASPD 2003/2004 -
[email protected]
• 4 grupos 4 tempos • tempo de execução: 4 x nº elementos • 2 operações por resultado • 2 ciclos por cada operação 30
15
processadores especializados
FEUP/DEEC
desempenho overhead do tempo de execução
• O número de tempos é medida aproximada – geralmente as instruções de um grupo não iniciam em ciclos de relógio consecutivos • exemplo: para vectores com 64 elementos – o tempo de execução é 4x64 + 1 = 257 ciclos de relógio
– latência da pipeline • atraso introduzido pela pipeline • o grupo seguinte só pode iniciar quando o anterior terminar – implica “esvaziar” a pipeline para produzir o último resultado
• menos importante quanto maiores forem os vectores
ASPD 2003/2004 -
[email protected]
31
processadores especializados
FEUP/DEEC
desempenho exemplo de overhead da pipeline para 64 elementos o tempo total é: 41+1+4x64=298 ciclos (face a 256=64x4 tempos) ou 4.65 ciclos/resultado em vez de 4.0
(n é a dimensão do vector) ASPD 2003/2004 -
[email protected]
32
16
processadores especializados
FEUP/DEEC
desempenho acesso a memória
• as operações LV e SV usam memória – tipicamente o tempo de startup é maior para instruções que usam memória – para garantir um dado por ciclo de relógio a memória tem de responder à mesma cadência – solução • usar vários bancos de memória acedidos em sequência • nº mínimo de bancos = latência da memória • por razões de eficiência este número deve ser igual a 2N
ASPD 2003/2004 -
[email protected]
33
processadores especializados
FEUP/DEEC
desempenho exemplo de latência no acesso a memória • problema: – ler vector com 64 elementos a partir do endereço (byte) 136 • cada elemento é um double (8 bytes)
– cada acesso a um banco de memória demora 6 ciclos • incluindo o tempo de acesso e tempo de ocupação do banco
– quantos bancos são precisos para garantir 1 dado/ciclo?
seriam suficientes 6 bancos de memória como este número deve ser 2N usam-se 8 bancos
ASPD 2003/2004 -
[email protected]
34
17
processadores especializados
FEUP/DEEC
desempenho sequência de acessos a memória
ASPD 2003/2004 -
[email protected]
35
processadores especializados
FEUP/DEEC
desempenho passo (stride) dos acessos a memória
• os elementos de um vector podem não ser acedidos em endereços consecutivos – no caso de matrizes bi- ou tri-dimensionais – o vector de uma linha ou coluna têm passo diferente
• exemplo – uma matriz bi-dimensional de 64x64 elementos – no caso anterior, quantos ciclos são precisos para: • carregar para um vector todos os elementos de uma linha • carregar para um vector todos os elementos de uma coluna
ASPD 2003/2004 -
[email protected]
36
18
processadores especializados
FEUP/DEEC
aumento do desempenho • encaminhamento de dados (data forwarding) – MULV.D V1,V2,V3 – ADDV.D V4,V1,V5
• execução condicional de instruções não permite vectorizar
– máscara do vector • vector booleano que determina que dados operar
• várias pistas (lanes) – várias unidades de execução paralelas
ASPD 2003/2004 -
[email protected]
37
19