feup/deec processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · feup/deec...
TRANSCRIPT
1
ASPD 2003/2004 - [email protected] 1
FEUP/DEEC processadores especializados
processadores
programáveis (por software)
não programáveis ASIC
ASIP
µprocessador
µcontrolador
DSP
especialização crescente
usos gerais
aplicações industriais,controlo, RT
aplicações numéricas, RT
hw e conjunto de instruçõesoptimizado para a aplicação
algoritmo implementado completamente em hw
ASPD 2003/2004 - [email protected] 2
FEUP/DEEC processadores especializados
ASIPApplication 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
2
ASPD 2003/2004 - [email protected] 3
FEUP/DEEC processadores especializados
desempenho vs. flexibilidade
desempenho
flexibilidade
ASIC
processadoresconvencionais
ASIP
hardware
software
ASPD 2003/2004 - [email protected] 4
FEUP/DEEC processadores especializados
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
3
ASPD 2003/2004 - [email protected] 5
FEUP/DEEC processadores especializados
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] 6
FEUP/DEEC processadores especializados
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?
4
ASPD 2003/2004 - [email protected] 7
FEUP/DEEC processadores especializados
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] 8
FEUP/DEEC processadores especializados
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
5
ASPD 2003/2004 - [email protected] 9
FEUP/DEEC processadores especializados
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] 10
FEUP/DEEC processadores especializados
exemplo: filtro FIR
operação elementar: vk(n-1)=vk+1(n-1)+xn*hk
Qual o tempo disponível para calcular y(n) ?
6
ASPD 2003/2004 - [email protected] 11
FEUP/DEEC processadores especializados
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] 12
FEUP/DEEC processadores especializados
tipos de dados e operações• vírgula fixa (complemento para 2)
– inteiros [-2N-1, +2N-1-1]– fraccionários [-2N-1 / 2M, +(2N-1-1) / 2M]
• usando M bits para a parte fraccionária (M<N)
• vírgula flutuante– maior gama dinâmica, operadores mais complexos
valor = -bn-1.2n-1+bn-2.2n-2+bn-3.2n-3+...+b1.21+ b0.20+b-1.2-1+b-2.2-2+...
sinal inteira fraccionária
valor = mantissa x 2expoente
s
mantissas1
expoente
7
ASPD 2003/2004 - [email protected] 13
FEUP/DEEC processadores especializados
tipos de dados e operações
• multiplicações em vírgula fixa
X
s s
s
6 bits
12 bits
inteiros
X
s s
s
6 bits
12 bits
com parte fraccionária
6 bits 6 bits
• shifter permite escolher os bits do resultado
ASPD 2003/2004 - [email protected] 14
FEUP/DEEC processadores especializados
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çãos12 bits
s6 bitsse > 1000 adiciona 0.0001se < 1000 não faz nada (trunca)se = 1000 adiciona 0.000b-4
b-4
8
ASPD 2003/2004 - [email protected] 15
FEUP/DEEC processadores especializados
exemplo de datapath
(DSP560xx)
ASPD 2003/2004 - [email protected] 16
FEUP/DEEC processadores especializados
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)
9
ASPD 2003/2004 - [email protected] 17
FEUP/DEEC processadores especializados
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] 18
FEUP/DEEC processadores especializados
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)
10
ASPD 2003/2004 - [email protected] 19
FEUP/DEEC processadores especializados
TMS32010
ASPD 2003/2004 - [email protected] 20
FEUP/DEEC processadores especializados
TMS320C30
11
ASPD 2003/2004 - [email protected] 21
FEUP/DEEC processadores especializados
DSP56002
ASPD 2003/2004 - [email protected] 22
FEUP/DEEC processadores especializados
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
12
ASPD 2003/2004 - [email protected] 23
FEUP/DEEC processadores especializados
arquitectura vectorial básica
• operações vectoriais só entre registos• load/store de vectores• unidades funcionais pipelined• registos escalares (1 dado)
64 elementos
VMIPS
ASPD 2003/2004 - [email protected] 24
FEUP/DEEC processadores especializados
exemplos de proc. vectoriais
13
ASPD 2003/2004 - [email protected] 25
FEUP/DEEC processadores especializados
instruções vectoriais do VMIPS
ASPD 2003/2004 - [email protected] 26
FEUP/DEEC processadores especializados
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
14
ASPD 2003/2004 - [email protected] 27
FEUP/DEEC processadores especializados
programa escalar v.s vectorial
MIPS VMIPS
quantas instruções são executadas em cada caso?
ASPD 2003/2004 - [email protected] 28
FEUP/DEEC processadores especializados
desempenhotempo 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
15
ASPD 2003/2004 - [email protected] 29
FEUP/DEEC processadores especializados
desempenhoconceitos
• grupo1
– 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)
• tempo2
– 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 na literatura original convoy2 na literatura original chime
ASPD 2003/2004 - [email protected] 30
FEUP/DEEC processadores especializados
desempenhoexemplo
um programa:
organizado em grupos: • 4 grupos 4 tempos• tempo de execução:
4 x nº elementos• 2 operações por resultado• 2 ciclos por cada operação
16
ASPD 2003/2004 - [email protected] 31
FEUP/DEEC processadores especializados
desempenhooverhead 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] 32
FEUP/DEEC processadores especializados
desempenhoexemplo de overhead da pipeline
para 64 elementos otempo 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)
17
ASPD 2003/2004 - [email protected] 33
FEUP/DEEC processadores especializados
desempenhoacesso 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] 34
FEUP/DEEC processadores especializados
desempenhoexemplo 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
18
ASPD 2003/2004 - [email protected] 35
FEUP/DEEC processadores especializados
desempenhosequência de acessos a memória
ASPD 2003/2004 - [email protected] 36
FEUP/DEEC processadores especializados
desempenhopasso (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
19
ASPD 2003/2004 - [email protected] 37
FEUP/DEEC processadores especializados
aumento do desempenho• encaminhamento de dados (data forwarding)
– MULV.D V1,V2,V3– ADDV.D V4,V1,V5
• execução condicional de instruções
– máscara do vector• vector booleano que determina que dados operar
• várias pistas (lanes)– várias unidades de execução paralelas
não permite vectorizar