Conjunto de Instru - PowerPoint PPT Presentation

About This Presentation
Title:

Conjunto de Instru

Description:

Title: Conjunto de Instru es Multim dia Author: Celso Last modified by: Celso Created Date: 11/2/2005 1:06:33 PM Document presentation format – PowerPoint PPT presentation

Number of Views:65
Avg rating:3.0/5.0
Slides: 21
Provided by: Cels48
Category:

less

Transcript and Presenter's Notes

Title: Conjunto de Instru


1
Conjunto de Instruções Multimídia
Instituto de Computação Universidade Estadual de
Campinas
Celso Tetsuo Nagase Suzuki RA 004859 celso.suzuki
_at_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.

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

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.

5
Histórico
  • VIS (Visual Instruction Set)
  • SPARC (Sun Microsystems) - Linha de processadores
    UltraSPARC, em 1994.
  • MDMX (MIPS Digital Media eXtensions)
  • Instruções multimídia para a arquitetura MIPS V
    (SGI), em Outubro de 1996.

6
Histórico
  • MMX
  • x86 (Intel) Linha de processadores Pentium MMX,
    em Outubro de 1996.
  • MVI (Motion Video Instructions)
  • PCA56 (DEC) Processador 21164PC, lançado em
    Março de 1997.

7
Histórico
  • AltiVec
  • PowerPC (Apple-IBM-Motorola) Extensão
    multimídia lançada em 1999 com o processador
    MPC7400 fabricado pela Motorola.
  • ARMv6
  • Em 2001 a ARM anunciou instruções multimídia
    incluídas na arquitetura ARMv6.

8
Instruções Multimídia
  • Dados empacotados

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

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

11
Instruções Multimídia
  • Shift Left
  • Shift Right

12
Instruções Multimídia
  • Empacotamento de dados

13
Instruções Multimídia
  • Permutação

14
Instruções Multimídia
  • Comparação

15
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.

16
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.

17
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.

18
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.

19
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).

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

21
Extensões multimídia x86
  • SSE3 (Intel 2004)
  • 13 novas instruções.
  • Operações horizontais.

22
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 lt npixels
i) if (imageini gt threshold)
imageouti 255 else imageouti
0
23
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 (i0 iltnpixels i8, imagein8,
imageout8) 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 gt 120
24
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 4 3GHz HT Athlon 64 3200 Athlon XP 3200 Sempron Mobile 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)
25
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.
Write a Comment
User Comments (0)
About PowerShow.com