Professional Documents
Culture Documents
A. Furfaro
16 de Agosto de 2013
Señal digitalizada
t t t
011101
011110
Muestreo Cuantificación Codificación 110000
111000
111101
111110
111100
intel-symantec.
Muestreo y retención
s(t) Se toma un valor
instantáneo de la señal
y se “retiene” el valor
de tensión en una
capacidad, con un
t circuito resistivo de
descarga de muy alta
- resistencia.
Vo(t) Observar que el error
D S
s(t)
+
aumenta en los
CH
vSample(t)
G
vSample(t)
Hold cambios abruptos de
t
señal. intel-symantec.
Cuantificación y Codificación
Se puede aproximar
s(t)
por redondeo o
truncamiento
Independientemente
del método el error
aumenta en las zonas
t donde la derivada de la
señal es ma alta intel-symantec.
A. Furfaro () Modelo de Ejecución SIMD en IA-32 16 de Agosto de 2013 4 / 72
Procesamiento de Señales digitales Arquitecturas de Procesamiento de una señal digital
a4
de datos.
Es particularmente útil para procesar audio, video,
b1 o imágenes en donde se aplican algoritmos
b2
repetitivos sobre sets de datos del mismo formato y
b3
b4
que se procesan en conjunto, como por ejemplo en
filtros, compresores, codificadores en donde la
salida depende de los últimos n valores de
r1
r2
muestras tomados.
r3
La figura muestra el layout tı́pico de variables
r4
memoria para aplicar este modelo intel-symantec.
Memoria
a1
a2
Considerando el sector de memoria de la figura,
a3
a4
nos proponemos realizar una operación aritmética o
lógica sobre las cadenas de datos an y bn ,
b1
almacenando el resultado en rn
b2
Si un procesador no dispone de un modelo
b3
b4
arquitectural que le permita implementar
paralelismo a nivel de datos, como SIMD,esta
operación implica un loop.
r1
r2
r3
r4
intel-symantec.
a1 R1 Operación
SImple
a2 R2
a3
a4
R3
b1
b2
b3
b4
r1
r2
r3
r4
intel-symantec.
a1
a2 R1 Operación
SImple
a3 R2
a4
R3
b1
b2
b3
b4
r1
r2
r3
r4
intel-symantec.
a1
a2
a3 R1 Operación
SImple
a4
R2
b1 R3
b2
b3
b4
r1
r2
r3
r4
intel-symantec.
a1
a2
a3
a4 R1 Operación
SImple
R2
b1
b2 R3
b3
b4
r1
r2
r3
r4
intel-symantec.
a1
Registro SIMD
a2
a3
a4
Operación
SIMD
b1
b2
b3 Registro SIMD
b4
r1
r2 Registro SIMD
r3 intel-symantec.
r4
63 0
MMO
MM1 8 bytes enteros empquetados
MM2
MM3 4 words enteros empaquetados
MM4
MM5
2 doble words enteros empaquetados
MM6
MM7
1 quad word
intel-symantec.
127 0
XMMO
XMM1 16bytes enteros empaquetados
XMM2
XMM3 8 words enteros empaquetados
XMM4
XMM5
4doble words enteros empaquetados
XMM6
XMM7
2 quad word enteros empaquetados
127 0
XMMO
XMM1 16bytes enteros empquetados
XMM2
XMM3 8 words enteros empaquetados
XMM4
XMM5
4doble words enteros empaquetados
XMM6
XMM7
2 quad word enteros empaquetados
XMM8
XMM9 1 doble quad word
XMM10
XMM11 4 Punto Flotante simple precisión empaquetados
XMM12
XMM13 2 Punto Flotante doble precisión empaquetados
XMM14
intel-symantec.
XMM15
ISA en 64 bits
Registros de Propósito General
15 0
63 0
CS
RAX EAX Espacio de
SS
RBX EBX
DS direccionamiento
RCX ECX
RDX EDX ES 2^64 -1
RSI ESI FS
RDI EDI GS
RBP EBP
RSP ESP
R8
R9
R10
R11
R12
R13
R14
R15
RIP EIP
RFlags EFlags
0
Números Reales
Formatos
1 Punto Fijo
2 Punto Flotante
intel-symantec.
Notación Cientı́fica
Notación Cientı́fica
Notación Cientı́fica
Notación Cientı́fica
Notación Cientı́fica
Notación Cientı́fica
En donde:
intel-symantec.
intel-symantec.
En donde:
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
Ceros signados
Números finitos de-normalizados
Números finitos normalizados
Infinitos signados
NaNs (Not a Number)
Números Indefinidos
intel-symantec.
intel-symantec.
Ceros Signados
Infinitos signados
−∞y + ∞, representan los máximos números reales positivo y
negativo representables en formato de unto flotante.
La mantisa siempre es 1.000....00, y el máximo exponente
desplazado representable (p. Ej. 255 para precisión simple).
NaNs
NaN = Not a Number.
No son parte del rango de números reales.
QNaN: Quiet NaN tiene el bit mas significativo fraccional seteado.
Pueden propagarse por posteriores operaciones sin generar una
excepción.
SNaN: Signaled NaN. Tiene en cero el bit fraccional mas
significativo. Resulta de una operación inválida de punto flotante.
intel-symantec.
intel-symantec.
Registro MXCSR
intel-symantec.
Registro MXCSR
Registros YMM
Las extensiones AVX
Registros
introducen una 255 127 0
extensión en el tamaño YMM0 XMM0
YMM1 XMM1
de los registros SIMD
YMM2 XMM2
desde 128 bits a 256 YMM3 XMM3
bits. Los registros XMM YMM4 XMM4
de 128 bits, pasan a YMM5 XMM5
operandos.
A. Furfaro () Modelo de Ejecución SIMD en IA-32 16 de Agosto de 2013 39 / 72
Instrucciones Transferencias (las mas comunes)
Instrucciones de movimiento
1 ; //////////////////////////////////////////////////////
2 movd mm4, ebx ;mm4[31 −0] <− ebx
3 movd xmm1, dword [ e s i ] ;xmm1[31 −0] <− [ e s i ]
4 movq xmm8, r 9 ;xmm8[63 −0] <− r 9
5 movq qword [ ebp + 1 2 ] , xmm0; [ ebp +12] <− xmm0 [63 −0]
6 movdq2q mm5, xmm12 ;mm5 <− xmm12 [63 −0]
7 movdqa [ e s i ] , xmm5 ; S i e s i no c o n t i e n e un v a l o r
8 ;mú l t i p l o de 16 , entonces l a
9 ; v a r i a b l e no e s t á a l i n e a d a .
10 ; Se genera una e x c e p c i ón #GP
11 movdqu xmm9, dqword [ r b x ] S i r b x c o n t i e n e un v a l o r
12 ;mú l t i p l o de 16 , entonces l a
13 ; v a r i a b l e e s t á a l i n e a d a .
14 ; Se genera una e x c e p c i ón #GP
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
Aritmética Saturada
Byte 7 6 5 4 3 2 1 0
oper 1 0x4D 0x23 0x9F 0xC0 0x11 0x4A 0x29 0x0B
oper 2 0x32 0xFF 0x1A 0x0D 0x3F 0xAF 0xB0 0x36
desb. 0x7F 0x22 0xB9 0xCD 0x50 0xF9 0xD9 0x41
sat. 0x7F 0xFF 0xB9 0xCD 0x50 0xF9 0xD9 0x41
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
Multiplicación empaquetada
intel-symantec.
intel-symantec.
Instrucciones Lógicas
Instrucciones de Desplazamiento
Desplaza a derecha o izquierda en la cantidad de bits que se
indica cada operando empaquetado dentro del registro o
dirección de memoria que se indica.
PSLLW, PSLLD, PSLLQ, y PSSLDQ desplazan en forma lógica a
izquierda (Packed Shift Left Logical) los respectivos operandos
empaquetados ( Words, Doble words, Quad Words o
DobleQuadWords).
PSRLW, PSRLD, PSRLQ, PSRLDQ realizan lo propio pero
desplazando a la derecha (Packed Shift Right Logical).
PSRAW y PSRAD realizan un desplazamiento a derecha
aritmético (conservan el signo de cada operando empaquetado).
Solo se dispone de instrucciones de Word y doble words
empaquetadas.
PSSLDQ y PSRLDQ trabajan solo con operandos de 128 bits
como es lógico.
El resto puede trabajar con operandos (registro o memoria)intel-symantec.
de 64
o 128 bits.
A. Furfaro () Modelo de Ejecución SIMD en IA-32 16 de Agosto de 2013 53 / 72
Instrucciones Aritmética en algoritmos DSP
intel-symantec.
intel-symantec.
intel-symantec.
Instrucciones de Comparación
Instrucciones de Comparación
intel-symantec.
Un ejemplo
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
intel-symantec.
Resultados
intel-symantec.
Ejemplo
1 lazo1 :
2 movdqu xmm0 , [ e s i + ( 2 * ebx ) + 2 ] ; Método c á l c u l o por N8
3 movdqu xmm1 , [ e s i + ( 2 * ebx ) + 1 ]
4 movdqu xmm2 , [ e s i + ( 2 * ebx ) ]
5 movdqu xmm3 , [ e s i +ebx +2]
6 movdqu xmm4 , [ e s i +ebx ]
7 movdqu xmm5 , [ e s i +2]
8 movdqu xmm6 , [ e s i +1]
9 movdqu xmm7 , [ e s i +0]
10 ; C a l c u l a e l mı́nimo de l o s b y t e s empaquetados en cada r e g i s t r o
11 pminub xmm0,xmm1
12 pminub xmm0,xmm2
13 pminub xmm0,xmm3
14 pminub xmm0,xmm4
15 pminub xmm0,xmm5
16 pminub xmm0,xmm6
17 pminub xmm0,xmm7;Mánimo de l o s N8 en xmm0.
18 movdqu xmm1 , [ e s i +ebx +1] ; Leo P i x e l c e n t r a l
19 pminub xmm0,xmm1 ; Lo computo
20 psubusw xmm1,xmm0 ; Restamos para h a l l a r l o s bordes
21 movdqu [ e d i ] ,xmm1
22 add e s i , 1 6 ; S i g u i e n t e t i r a de 16 N8 ’ s intel-symantec.
23 add edi , 1 6
24 loop lazo1
A. Furfaro () Modelo de Ejecución SIMD en IA-32 16 de Agosto de 2013 70 / 72
Instrucciones Aritmética en algoritmos DSP
intel-symantec.
Medición de performance
intel-symantec.