1 / 20

Conjunto de Instruções Multimídia

Instituto de Computação Universidade Estadual de Campinas. Conjunto de Instruções Multimídia. Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki@ic.unicamp.br Disciplina MO401 Arquitetura de Computadores. Introdução. Acelerar a execução de aplicações multimídia. Instruções SIMD.

sofia
Télécharger la présentation

Conjunto de Instruções Multimídia

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Introdução • Acelerar a execução de aplicações multimídia. • Instruções SIMD. • Single Instruction, Multiple Data. Conjunto de Instruções Multimídia

  3. Roteiro • Histórico • Instruções Multimídia comuns • Extensões Multimídia x86 • Exemplo • Conclusão Conjunto de Instruções Multimídia

  4. 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. Conjunto de Instruções Multimídia

  5. Instruções Multimídia • Dados empacotados Conjunto de Instruções Multimídia

  6. Instruções Multimídia • Operações aritméticas Conjunto de Instruções Multimídia

  7. Instruções Multimídia • Shift Left • Shift Right Conjunto de Instruções Multimídia

  8. Instruções Multimídia • Empacotamento de dados Conjunto de Instruções Multimídia

  9. Instruções Multimídia • Comparação Conjunto de Instruções Multimídia

  10. 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. Conjunto de Instruções Multimídia

  11. 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. Conjunto de Instruções Multimídia

  12. Extensões multimídia x86 • SSE (Streaming SIMD Extensions – Intel – 1999) • 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. Conjunto de Instruções Multimídia

  13. 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. Conjunto de Instruções Multimídia

  14. 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). Conjunto de Instruções Multimídia

  15. Extensões multimídia x86 • 3DNow! Professional (AMD) • Lançada com a linha de processadores AthlonXP. • Enhanced 3DNow! + SSE. Conjunto de Instruções Multimídia

  16. Extensões multimídia x86 • SSE3 (Intel – 2004) • 13 novas instruções. • Operações horizontais. Conjunto de Instruções Multimídia

  17. 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; } Conjunto de Instruções Multimídia

  18. Exemplo 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 • Threshold de uma imagem em níveis de cinza. Conjunto de Instruções Multimídia

  19. 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 Conjunto de Instruções Multimídia

  20. 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. Conjunto de Instruções Multimídia

More Related