20
Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 [email protected] Disciplina MO401 Arquitetura de Computadores

Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 [email protected]

Embed Size (px)

Citation preview

Page 1: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia

Instituto de ComputaçãoUniversidade Estadual de Campinas

Celso Tetsuo Nagase SuzukiRA 004859

[email protected]

Disciplina MO401Arquitetura de Computadores

Page 2: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 2Novembro de 2005

Introdução

Acelerar a execução de aplicações multimídia.

Instruções SIMD. Single Instruction, Multiple Data.

Page 3: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 3Novembro de 2005

Roteiro

Histórico Instruções Multimídia comuns Extensões Multimídia x86 Exemplo Conclusão

Page 4: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 4Novembro de 2005

Histórico

MAX (Multimedia Acceleration eXtensions) PA-RISC 1.1 (HP) – Primeira arquitetura

de processadores de uso geral com instruções multimídia, lançado em Janeiro de 1994.

Processador de 80MHz toca vídeos MPEG-1 em tempo real (30 frames por segundo), sem hardware adicional.

Page 5: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 8Novembro de 2005

Instruções Multimídia Dados empacotados

Page 6: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 9Novembro de 2005

Instruções Multimídia Operações aritméticas

Page 7: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 11Novembro de 2005

Instruções Multimídia Shift Left

Shift Right

Page 8: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 12Novembro de 2005

Instruções Multimídia Empacotamento de dados

Page 9: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 14Novembro de 2005

Instruções Multimídia Comparação

Page 10: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 15Novembro de 2005

Extensões multimídia x86 MMX (Intel - 1996)

57 instruções. Usa os 8 registradores de

ponto flutuante já existentes. Somente operações com

números inteiros. 8 Packed Bytes, 4 Packed

Words, 2 Packed Doublewords e 1 Packed Quadword.

Page 11: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 16Novembro de 2005

Extensões multimídia x86 3DNow! (AMD - 1998)

21 instruções. Complementa a extensão

MMX com operações em números de ponto flutuante de 32 bits.

Instrução de prefetch que carrega uma linha do cache L1 com dados do endereço.

Page 12: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 17Novembro de 2005

Extensões multimídia x86

Corrige algumas limitações da extensão MMX.

8 novos registradores de 128 bits para operações em números de ponto flutuante de 32 bits.

Instruções de prefetch e gravação de dados não temporais.

SSE (Streaming SIMD Extensions – Intel – 1999)

Page 13: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 18Novembro de 2005

Extensões multimídia x86 Enhanced 3DNow! (AMD – 1999)

Complementa a extensão 3DNow! com 24 novas instruções.

Instruções para gravação de dados não temporais, conversão entre dados inteiros e de ponto flutuante e operações matemáticas.

Page 14: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 19Novembro de 2005

Extensões multimídia x86 SSE2 (Intel – 2001)

144 novas instruções. Suporte a operações com números inteiros nos

registradores de 128 bits. 2 números de ponto flutuante de 64 bits

empacotados, 16 Packed Bytes, 8 Packed Words, 4 Packed Doublewords, 2 Packed Quadwords.

Nos processadores AMD64, o número de registradores de 128 bits foi aumentado para 16 (XMM0 a XMM15).

Page 15: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 20Novembro de 2005

Extensões multimídia x86 3DNow! Professional (AMD)

Lançada com a linha de processadores AthlonXP.

Enhanced 3DNow! + SSE.

Page 16: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 21Novembro de 2005

Extensões multimídia x86 SSE3 (Intel – 2004)

13 novas instruções. Operações horizontais.

Page 17: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 22Novembro de 2005

Exemplo Threshold de uma imagem em níveis de cinza.

void Threshold(u_int16_t imagein[], u_int16_t imageout[], int npixels, u_int16_t threshold) { int i; for (i = 0; i < npixels; i++) if (imagein[i] > threshold) imageout[i] = 255; else imageout[i] = 0;}

Page 18: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 23Novembro de 2005

Exemplo Threshold de uma imagem em níveis de cinza.

void ThresholdSSE2(u_int16_t imagein[], u_int16_t imageout[], int npixels, u_int16_t thr) { int i; max = 255;

xmm0

xmm1

for (i=0; i<npixels; i+=8, imagein+=8, imageout+=8) { asm ("movdqa (%0), %%xmm2 \n" : : "r" (imagein)); asm ("pcmpgtw %xmm0, %xmm2 \n"); asm ("pand %xmm1, %xmm2 \n"); asm ("movntdq %%xmm2, (%0) \n" : : "r" (imageout)); }}

xmm2 > 120

Page 19: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 24Novembro de 2005

Exemplo Threshold de uma imagem em níveis de cinza.

Compiladores Intel ICC 9.0.021 e GCC 3.4.4. S.O. GNU/Linux

CPU Pentium 43GHz HT

Athlon 643200+

Athlon XP3200+

SempronMobile 2800+

ICC

C - MPixels/s 464 465 470 368

SSE 1940 (4,2x) 1655 (3,6x) 1592 (3,4x) 725 (2,0x)

SSE2 2069 (4,5x) 1650 (3,6x) sem suporte 723 (2,0x)

GCC

C - MPixels/s 297 442 396 335

SSE 1924 (6,5x) 1654 (3,7x) 1592 (4,0x) 723 (2,2x)

SSE2 2069 (7,0x) 1654 (3,7x) sem suporte 722 (2,2x)

Page 20: Conjunto de Instruções Multimídia Instituto de Computação Universidade Estadual de Campinas Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br

Conjunto de Instruções Multimídia 25Novembro de 2005

Conclusão

O uso de instruções SIMD é importante para melhorar a velocidade de aplicações multimídia.

Compiladores atuais não otimizam trechos críticos com o mesmo desempenho que a codificação direta usando instruções SIMD.