FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC...

19
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ções optimizado para a aplicação algoritmo implementado completamente em hw ASPD 2003/2004 - [email protected] 2 FEUP/DEEC processadores especializados 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

Transcript of FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC...

Page 1: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 2: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 3: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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?

Page 4: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 5: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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) ?

Page 6: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 7: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 8: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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)

Page 9: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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)

Page 10: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

10

ASPD 2003/2004 - [email protected] 19

FEUP/DEEC processadores especializados

TMS32010

ASPD 2003/2004 - [email protected] 20

FEUP/DEEC processadores especializados

TMS320C30

Page 11: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 12: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 13: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 14: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 15: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 16: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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)

Page 17: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 18: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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

Page 19: FEUP/DEEC processadores - paginas.fe.up.ptjca/feup/aspd/slides/aspd-slides-proc... · FEUP/DEEC processadores especializados desempenho overhead do tempo de execução • O número

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