Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
1
MMX - MULTI MEDIA (MATRIX MATH ?) EXTENSIONS
MODELO SIMD - SINGLE INSTRUCTION MULTIPLE DATA MODELHISTÓRICO:
1993 - SURGE O PENTIUM E A SEGUIR O PENTIUM MMX
1995 - PENTIUM PRO - INAUGUROU FAMÍLIA P6 - NÃO SUPORTAVA INSTRUÇÕES MMX
PENTIUM II, PENTIUM II XEON E CELERON - SUPORTAVAM INSTRUÇÕES MMX
1999 - PENTIUM III E PENTIUM III XEON - SUPORTAVA SSE (128 bits FP) e MMX
SSE = STREAMING SIMD EXTENSIONS
2000 - PENTIUM IV - SUPORTA SSE2 (128 bits FP e INT), SEE e MMX
2005 - PENTIUM EXTREME EDITION- SUPORTA SSE3, SSE2, SSE e MMX
2007 - PENTIUM CORE MICROARCHITECTURE - SUPORTA SSE4, SSE3, SSE2, SSE e MMX
2008 - INTEL CORE i7 - SUPORTA SSE4.2/4.1 SSE4, SSSE3, SSE3, SSE2, SSE e MMX
2011 - INTEL CORE 2ND GENERATION - SUPORTA ADICIONALMENTE AVX, AVX2 (256 bits)
AVX = ADVANCED VECTOR EXTENSIONS
SRC1 (DST)
O MODELO SIMD
MODELO SIMD - SINGLE INSTRUCTION MULTIPLE DATA MODEL
UMA ÚNICA INSTRUÇÃO OPERA SOBRE VÁRIOS OPERANDOS SIMULTÂNEAMENTE
FILOSOFIA: OP DST, SRC
1 x 64 BITS OU 2 x 32 BITS OU 4 x 16 BITS OU 8 x 8 BITS
SRC2
DST
OP OP OP
Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
3
DST
0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111 1000 0000 0000 0000 SRC1
(DST)
O MODELO SIMD - EXEMPLO - PADDW
INSTRUÇÃO PADDW - PACKED ADD WORDS (4 x 16 BITS)CADA SOMA É INDEPENDENTE DA OUTRA - NÃO HÁ CARRY OUT ENTRE SOMAS
FILOSOFIA: OP DST, SRC
1 x 64 BITS OU 2 x 32 BITS OU 4 x 16 BITS OU 8 x 8 BITS
1010 1010 1010 1010 0000 0000 0000 0000 0000 0000 0000 0001 0000 0000 0000 0001 SRC2 1010 1010 1010 1010 1111 1111 1111 1111 0000 0000 0000 0000 1000 0000 0000 0001 OP OP OP OP
NOVIDADES DA ARQUITETURA MMX
COM A ARQUITETURA MMX FORAM INTRODUZIDOS:
8 NOVOS REGISTRADORES DE 64 BITS: MM0 A MM7
3 NOVOS TIPOS DE DADOS “EMPACOTADOS” (PACKED):
A) 64 BITS EMPACOTADOS EM 8 BYTES
B) 64 BITS EMPACOTADOS EM 4 WORDS
B) 64 BITS EMPACOTADOS EM 2 DWORDS
INTEIROS DE 64 BITS (QWORDS)
47 NOVAS INSTRUÇÕES QUE SUPORTAM OS NOVOS TIPOS DE DADOS
Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
5
ARITMÉTICA COM E SEM SATURAÇÃO
COM INSTRUÇÕES MMX HÁ TRÊS POSSIBILIDADES:
A) WRAPAROUND ARITHMETIC:
B) SIGNED SATURATION ARITHMETIC
C) UNSIGNED SATURATION ARITHMETIC
CONVENCIONAL, COMO NOS REGISTRADORES DE USO GERAL, PORÉM SEM SETAR OS FLAGS
EXEMPLOS:
C) UNSIGNED SATURATION FOR BYTES:
0xFE + 2 = 0xFF
0x02 - 3 = 0x00
B) SIGNED SATURATION FOR BYTES:
0x7E + 2 = 0x7F 0x82 - 3 = 0x80
REGISTRADORES MMX
REGISTRADORES DA FPU: REGISTRADORES MMX: S EXP J FRAÇÃO 62 0 78 64 63 79 S EXP J FRAÇÃO S EXP J FRAÇÃO S EXP J FRAÇÃO S EXP J FRAÇÃO S EXP J FRAÇÃO S EXP J FRAÇÃO S EXP J FRAÇÃO R7 R6 R5 R4 R3 R2 R1 R0 63 0 MM7 MM6 MM5 MM4 MM3 MM2Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
7
TIPOS DE INSTRUÇÕES SUPORTADAS EM MMX
ARITMÉTICAS: COMPARAÇÃO: EMPACOTAMENTO: LÓGICAS: DESLOCAMENTO: INICIALIZAÇÃO:
SOMA, SUBTRAÇÃO, MULTIPLICAÇÃO, MAC (NÃO HÁ DIVIS)
IGUAL, MAIOR -NÃO SETA FLAGS, SETA MÁSCARA NO DST.
PAND, PANDN, POR, PXOR.
LÓGICO E ARITMÉTICO (NÃO SUPORTA DIVISÕES).
EMMS - EMPTY MMX STATE
WORD TO BYTE - SATURADO COM E SEM SINAL, DWORD TO WORD - SATURADO COM SINAL
DESEMPACOTA PARTE ALTA E BAIXA SEPARADAMENTE. TRANSFERÊNCIA DE DADOS: MOVD, MOVQ
INSTRUÇÕES DE EMPACOTAMENTO
O EMPACOTAMENTO REDUZ A LARGURA EM BITS DO OPERANDOS À METADE.
CASO A NOVA LARGURA SEJA INSUFICIENTE OCORRERÁ SATURAÇÃO.
A) EMPACOTAMENTO DE DWORDS PARA WORDS (SOMENTE SIGNED SATURATION):
DW D DW C SRC MM / M64 DW B DW A DST MM W D DST MM W C W B W A
B) EMPACOTAMENTO DE WORDS PARA BYTES (SIGNED OU UNSIGNED):
W D DST MM W C W B W A W H SRC MM / M64 W G W F W E DST MM
Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
9
INSTRUÇÕES DE DSEMPACOTAMENTO
O DSEMPACOTAMENTO DUPLICA A LARGURA EM BITS DOS OPERANDOS.A METADE INFERIOR É PREENCHIDA COM O DESTINO E A SUPERIOR COM A ORIGEM.
PREENCHENDO-SE A ORIGEM COM ZEROS PODE-SE ESTENDER BYTES PARA WORDS, WORDS PARA DWORDS E DWORDS PARA QWORDS
WF | WB WE | WA DST MM W D DST MM W C W B W A EXEMPLO PUNPCKLWD DST, SRC: W H SRC MM / M64 W G W F W E
A PARTE ALTA DA ORIGEM E DESTINO É DESCARTADA.
PREENCHENDO-SE SRC COM ZEROS PODE-SE ESTENDER WA E WB PARA DWORDS
D C B A
DST
MULTIPLICAÇÃO EM MMX
O RESULTADO DA MULTIPLICAÇÃO OCUPA O DOBRO DA LARGURA EM BITS DOS OPERANDOS
EM MMX HÁ INSTRUÇÕES QUE PRESERVAM SOMENTE A PARTE ALTA OU SOMENTE A PARTE BAIXA DO RESULTADO DA MULTIPLICAÇÃO
PMULHW DST, SRC - PRESERVA SOMENTE PARTE ALTA
H G F E
SRC
HIGH( D x H ) HIGH( C x G ) HIGH( B x F ) HIGH( A x E ) DST
PMULLW DST, SRC - PRESERVA SOMENTE PARTE BAIXA
Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
11
D C B A
DST
MULTIPLY AND ACCUMULATE (MAC)
INSTRUÇÕES DE MULTIPLICAÇÃO E SOMA SÃO ÚTEIS EM PROCESSAMENTO DE SINAIS.
COM MMX É POSSÍVEL MULTIPLICAR 4 WORDS ENTRE SI E ACUMULAR O RESULTADO EM DUAS DWORD NO DESTINO - INTRUÇÃO PMADDWD DST,SRC
H G F E
SRC
C x G + D x H A x E + B x F DST
PMADDWD DST, SRC:
COMPATIBILIDADE COM A FPU - INSTRUÇÃO EMMS
COMO VIMOS, MMX E A FPU UTILIZAM OS MESMOS REGISTRADORES DE HARDWAREQUALQUER INSTRUÇÃO MMX (EXCETO EMMS) SETA TODOS OS TAGS DOS 8 REGISTRADORES DA FPU COMO VÁLIDOS (TODOS OS BITS = 00)
SE, APÕS A EXECUÇÃO DE UMA INSTRUÇÃO MMX, UMA OUTRA ROTINA QUISER EXECUTAR UMA INSTRUÇÃO DA FPU E TENTAR CARREGAR UM VALOR PARA UM DOS REGISTRADORES, GERARÁ UMA EXCEÇÃO DE PILHA CHEIA.
POR ESSE MOTIVO DEVE-SE EXECUTAR SEMPRE A INSTRUÇÃO EMMS AO TERMINAR O USO DA UNIDADE MMX.
A INSTRUÇÃO EMMS SETA TODOS OS TAGS DA FPU COMO VAZIOS (TODOS OS BITS = 11).
O SALVAMENTO E RESTAURAÇÃO DE CONTEXTO DA UNIDADE MMX É FEITO COM AS MESMAS INSTRUÇÕES UTILIZADAS PARA A FPU (POIS O HW É O MESMO) - FSAVE, FRSTOR, FSTENV E FLDENV.
INSTRUÇÕES MMX NÃO GERAM EXCEÇÕES NUMÉRICAS.
Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
13
EXEMPLO DE APLICAÇÃO - PROCESSAMENTO DE IMAGEM
IMAGEM DA GAROTA DO TEMPO EM FRENTE AO MAPA GEOGRÁFICOTEMOS DUAS IMAGENS, CONSISTINDO DE UMA SÉRIE DE VETORES COM PIXELS CADA PIXELS É REPRESENTADO POR 16 BITS
VETOR X - ARMAZENA A IMAGEM DA GAROTA EM FRENTE A UM FUNDO AZUL VETOR Y - ARMAZENA A IMAGEM DO MAPA GEOGRÁFICO.
OBJETIVO:
GERAR A IMAGEM COMPOSTA PELOS DOIS VETORES, SUBSTITUINDO TODOS OS PIXELS AZUIS DE X PELOS CORRESPONDENTES PIXELS DO MAPA Y.
cmp x[i],BLUE ; pixel x[i] é azul?
jne next_pixel ; não, vamos processar o próximo
mov x[i],y[i] ; sim, substituímos x[i] por y[i]
SOLUÇÃO SEM MMX:
EXEMPLO DE APLICAÇÃO - PROCESSAMENTO DE IMAGEM
SOLUÇÃO COM MMX: PODEMOS PROCESSAR 4 PIXELS POR VEZ (64 BITS)
A MATRIZ AGORA É INDEXADA DE 4 EM 4 PIXELS - PROCESSAMENTO ≈ 4 x MAIS RÁPIDO
movq mm0,x[i] ; carrega 4 pixels de uma vez
pcmpeqw mm0,BLUE ; cte BLUE contém 4 pixels azuis
pandn mm0,x[i] ; zera os azuis
SOLUÇÃO COM MMX:
pand mm1,y[i] ; carrega pixes correspondentes do mapa
movq mm1,mm0 ; cópia da máscara em mm1 também
por mm0,mm1 ; imagem sobreposta em mm0
movq z[i],mm0 ; salva pixels processados
(1) (2) (3) (4) (5) (6) (7)
Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
15
PIXEL 3 (AZUL) PIXEL 2 (NÃO AZUL) PIXEL 1 (AZUL) PIXEL 0 (NÃO AZUL) MM0
COMPARAÇÕES EM MMX
O RESULTADO DE COMPARAÇÕES COM INSTRUÇÕES MMX É EXPRESSO POR MEIO DE UMA MÁSCARA NO OPERANDO DE DESTINO.
SE O RESULTADO DA COMPARAÇÃO FOR VERDADEIRO OS BITS CORRESPONDENTES NA MÁSCARA SERÃO SETADOS, CASO CONTRÁRIO SERÃO ZERADOS.
BLUE BLUE BLUE BLUE
M64
FFFF h (TRUE) 0000 h (FALSE) FFFF h (TRUE) 0000 h (FALSE) MM0
EXEMPLO PCMPEQW MM0, BLUE: (REFERENTE AO PASSO (2)
PIXEL 3 (AZUL) PIXEL 2 (NÃO AZUL) PIXEL 1 (AZUL) PIXEL 0 (NÃO AZUL) X[ i ]
OPERAÇÕES LÓGICAS EM MMX - PANDN
PANDN INVERTE OS BITS NO OPERANDO DE DESTINO E EXECUTA AND COM A ORIGEM
O RESULTADO É COLOCADO NO OPERANDO DE DESTINO
FFFF h (TRUE) 0000 h (FALSE) FFFF h (TRUE) 0000 h (FALSE) MM0
EXEMPLO PANDN MM0, X[ i ]: (REFERENTE AO PASSO (4)
0000 h PIXEL 2 (NÃO AZUL) 0000 h PIXEL 0 (NÃO AZUL) MM0
Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
17
MAPA PIXEL 3 MAPA PIXEL 2 MAPA PIXEL 1 MAPA PIXEL 0 Y[ i ]
OPERAÇÕES LÓGICAS EM MMX - PAND
PAND EXECUTA AND COM A ORIGEM
O RESULTADO É COLOCADO NO OPERANDO DE DESTINO
FFFF h (TRUE) 0000 h (FALSE) FFFF h (TRUE) 0000 h (FALSE) MM1
EXEMPLO PANDN MM1, Y[ i ]: (REFERENTE AO PASSO (5)
MAPA PIXEL 3 0000 h MAPA PIXEL 1 0000 h MM1
PRINCÍPIO BÁSICO DE UM FILTRO DIGITAL
N = 100; j = 2:N-1;
x = 0:2*pi/(N-1):2*pi;
y = sin(x);
r = zeros(1,size(x,2));
r(20) = 1; r(60) = -1;
yf(1) = yr(1)/3 + yr(2)/3;
yf(j) = yr(j-1)/3 + yr(j)/3 + yr(j+1)/3;
yf(N) = yr(N-1)/3 + yr(N)/3;
rf(1) = 2*yr(1)/3 - yr(2)/3;
Junho de 2014
Arq. e Org. de Comp. - Prof. Gortan - 9. Aula - MMX
19
REPRESENTAÇÃO DE NRS. FRACIONÁRIOS COM INTEIROS
SUPONHAMOS QUE DESEJAMOS DETERMINAR O PRODUTO:SEN(45°) x 8.192 = 0,7071 x 8192 UTILIZANDO APENAS INTEIROS DE 16 BITS
SOLUÇÃO A):
REPRESENTAMOS 0,7071 COMO (0,7071 x 10.000) / 10.000 = 7.071 / 10.000 E CALCULAMOS (8.192 x 7.071) / 10.000
SOLUÇÃO B):
REPRESENTAMOS 0,7071 COMO (0,7071 x 65.535)/65.535 = 46.339 / 65.535 E CALCULAMOS (8.192 x 46.339) / 65.535
VANTAGEM: UTILIZA TODOS OS 16 BITS DE PRECISÃO
DESVANTAGEM: NÃO PERMITE REPRESENTAÇÃO DE NÚMEROS COM SINAL
SOLUÇÃO C):
UTILIZAMOS NOTAÇÃO COMPLEMENTO DE 2 COM 15 BITS DE MANTISSA E 1 DE SINAL REPRESENTAMOS 0,7071 COMO (0,7071 x 32.768) / 32.768 = 23.170 / 32.768 E CALCULAMOS
(8.192 x 23.170) / 32.768
A REPRESENTAÇÃO NO FORMATO DA SOLUÇÃO C) É GERALMENTE CONHECIDA COMO FORMATO Q15, ONDE O FATOR UTILIZADO É 32768, PERMITINDO REPRESENTAR NÚMEROS
FRACIONÁRIOS ≤ |1 |, ENTRE - 32768 / 32768 E + 32.767 / 32.768