conjunto de instruções multimídia
DESCRIPTION
Instituto de Computação Universidade Estadual de Campinas. Conjunto de Instruções Multimídia. Celso Tetsuo Nagase Suzuki RA 004859 [email protected] Disciplina MO401 Arquitetura de Computadores. Introdução. Acelerar a execução de aplicações multimídia. Instruções SIMD. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Conjunto de Instruções Multimídia](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/1.jpg)
Conjunto de Instruções Multimídia
Instituto de ComputaçãoUniversidade Estadual de Campinas
Celso Tetsuo Nagase SuzukiRA 004859
Disciplina MO401Arquitetura de Computadores
![Page 2: Conjunto de Instruções Multimídia](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/5.jpg)
Conjunto de Instruções Multimídia 8Novembro de 2005
Instruções Multimídia Dados empacotados
![Page 6: Conjunto de Instruções Multimídia](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/8.jpg)
Conjunto de Instruções Multimídia 12Novembro de 2005
Instruções Multimídia Empacotamento de dados
![Page 9: Conjunto de Instruções Multimídia](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/9.jpg)
Conjunto de Instruções Multimídia 14Novembro de 2005
Instruções Multimídia Comparação
![Page 10: Conjunto de Instruções Multimídia](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022051401/56814c06550346895db9058c/html5/thumbnails/20.jpg)
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.