Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

SIMD

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 34

ARQUITECTURA SIMD

2022

INTEGRANTES:
• Raúl Andy Molina Bustos
• Hans Rómulo Quispe García
• Kelvin Hagler Jacinto Maylle

PROFESORA:

TORRES ALVARADO SALLY KARINA


Introducción
• Una señal es la descripción de cómo un parámetro varia respecto
a otro

• Provienen de sistemas reales

• El análisis matemático suele dividirse en 3 etapas:


• Transitorio de encendido
• Estado constante
• Transitorio de apagado

• Generalmente en multimedia no se modelizan los transitorios


Procesamiento digital de señales
• DSP (Digital signal processing) – Se distingue de otros sistemas
computacionales al ser estos optimizados para un único tipo de datos:
Señales analógicas digitalizadas

• Debido a que se procesan secuencias digitales, todo operador de


DSP es un operador de tiempo discreto.

DSP
Procesamiento digital de señales
• Se pueden efectuar múltiples operaciones sobre una misma
secuencia.

• O trabajar con el resultado de la salida


Procesamiento digital de señales
• Cuando procesamos señales, un tipo muy común de calculo que se
realiza en cada muestra es afectar a la misma por coeficientes que
dependen de dicha muestra y de las muestras anteriores

• Se utilizan arquitecturas optimizadas para este tipo de funciones


lineales
Arquitectura SIMD
• SIMD (Single instruction multiple data) permite efectuar varias
operaciones de calculo con una sola instrucción

• A los procesadores basados en esta arquitectura, se los conoce como


procesadores matriciales

• Esta arquitectura nace debido a la necesidad de aplicar repetidamente


una misma operación en grupos datos diferentes como, Muestras
contiguas de audio, matrices de video, etc.
Topología de una operación SIMD
Ejemplos aplicables a SIMD
• Superposición de imágenes de 256 tonos de grises.

f  Ai , j 255  f  B
i,
R(i, j)  
255 j 255

Donde A y B son las matrices de pixels en 256


tonos de gris y f (entre 0 y 255) el coeficiente
de intensidad o mezcla.
Ejemplos aplicables a SIMD
• Efecto Erosión

Bi, j  min( Ai, j ; Ai, j1; Ai, j1; Ai1, j ; Ai1, j ; Ai1, j1; Ai1, j1; Ai1, j1; Ai1, j1 )

La matriz B contiene la imagen erosionada de


la matriz A

Cada punto es reemplazado por el mínimo de


su entorno.
Convolución
• Definición matemática
Primer Implementación SIMD
• El procesador Pentium MMX introdujo en la arquitectura IA32 un set de
recursos para el tratamiento de señales.
Representación de datos enteros
• Enteros no signados

0 – 255 bytes enteros no signados


0 – 65535 words enteras no signadas
0 – 2 3 2 double words enteras no
 1 signadas
0 – 2 6 4  quad words enteras no
1
signadas
• Enteros signados

-128 – 127 bytes enteros signados


-32768 – 32767 words enteras signadas
2 31
- 2 3 1
double words enteras signadas
 1 quad words enteras signadas
 2 63
2 6 3

1 
Representación de datos enteros
Necesidad de algoritmos DSP

Para implementar hardware apto para DSP, los diseñadores estudiaron las
características de los algoritmos de procesamiento de audio, imágenes 2D y 3D,
compresión de audio y video, text to speech, filtrado digital, etc.

Características comunes

• Tipos de datos de poco tamaño  pixeles: 8 o 16 bits y muestras de audio:


8 o 16 bits

• Patrones de acceso secuencial a memoria  buffers circulares

• Operaciones simples y recurrentes sobre los datos de entrada 


Acumulaciones de productos
Necesidad de algoritmos DSP
• En los algoritmos DSP es muy común acumular totales o realizar
repetidamente sumas en un registro

• Se llega a un punto en el que el rango del resultado excede la capacidad de bits


del registro de acumulación.

• En este punto los procesadores convencionales indican la situación mediante


un flag de overflow, y en el operando destino se almacena el valor de
desborde.

• La aplicación chequea dentro del lazo de calculo este flag y de acuerdo a su


estado decide si sigue la acumulación.

• El costo de esta practica de programación es tiempo de ejecución para


analizar como tratar cada resultado parcial.
Aritmética DSP – Algoritmos de calculo

Aritmética de desborde (Wraparound): Operatoria clásica basada en la


que un desborde afecta a un flag que será posible evaluar invirtiendo los
tiempos que esto conlleva.

Aritmética Saturada: Al producirse una condición fuera de rango el


operando destino mantiene el máximo o mínimo valor del rango (dependiendo
si la condición se ha producido por exceso o por defecto).

Ejemplo de una suma empaquetada en bytes

Byte 7 Byte 6 Byte 5 Byte 4 Byte 3 Byte 2 Byte 1 Byte 0


Operando 1 4D 23 9F C0 11 4A 29 0B
Operando 2 32 FF 1A 0D 3F AF B0 36
Suma con desborde 7F 22 B9 CD 50 F9 D9 41
Suma Saturada 7F FF B9 CD 50 F9 D9 41
Instrucciones MMX - Transferencia

MOVD (double word):


• MOVD mm,r/m32
• MOVD r/m32,mm
• MOVD xmm,r/m32
• MOVD r/m32,xmm

MOVq(double quadword):
• MOVQ mm,mm/m64
• MOVQ mm/m64,mm
• MOVQ xmm1,xmm2/m64
• MOVQ xmm2/m64,xmm1

mm  Registro mmx de 64 bits (mm0 – mm7)


r  Registro de propósito general
m32 y m64  Punteros a memoria que contiene datos de 32 y 64 bits
xmm  Registro xmm de 128 bits
Instrucciones MMX – Aritméticas
Instrucciones MMX – Suma empaquetada
Instrucciones MMX – Resta empaquetada
Instrucciones MMX – Multiplicación empaquetada
Instrucciones MMX – Suma de productos
Instrucciones MMX - Lógicas
• Tratan a los contenidos de los registros MMX como datos puros
de 64 bits.

• No tienen en cuenta ningún tipo de empaquetamiento de modo que


resultan mas similares a las instrucciones correspondientes al modelo de
registros de propósito general.

• Son cuatro instrucciones PAND, PANDN, POR, y PXOR.

• La P inicial las identifica como instrucciones especificas para este


tipo de registros.

• El operando fuente pueden ser cualquier registro MMX o cualquier


dirección de memoria de 64 bits de ancho.

• El operando destino solo puede ser un registro MMX.


Instrucciones MMX - Desplazamiento
PSLLW, PSLLD, y PSLLQ  (Packed Shift Left Logical) desplazan en
forma lógica a izquierda los respectivos operandos empaquetados (Bytes,
Words, o Double words).

PSRLW, PSRLD, y PSRLQ  (Packed Shift Right Logical) idem pero


desplazando a la derecha

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 word empaquetadas.
Instrucciones MMX – Desplazamiento
Instrucciones MMX - Comparación
• A diferencia de las instrucciones de comparación convencionales, estas
instrucciones no afectan el contenido del registro EFLAGS.

• Lo que hacen en cambio es setear una mascara de bits en el operando destino,


que pueden utilizarse como MOV condicionales sin saltos condicionales que
demanden tiempo de verificación.

• Hay dos tipos de comparaciones posibles: por igual (PCMPEQ) o por


mayor (PCMPGT).

• PCMPEQB, PCMPEQW, PCMPEQD y PCMPGTB, PCMPGTW, PCMPGTD


comparan los correspondientes elementos signados (bytes, words, o double
words) entre los operandos fuente y destino por igual o mayor que,
respectivamente.

• En el caso de que la condición sea EQ (Equal) cada dato empaquetado del


operando destino que cumpla la condición se pone en FF, FFFF, o FFFFFFFF,
según el tipo de dato empaquetado que se evalúe. Si la condición no se cumple
se pone a 0.

(Ej.: PCMPEQB mm0,mm0 ;setea mm0 en FF FF FF FF FF FF FF FF.)


Instrucciones MMX - Conversión
• Se trata de un conjunto de instrucciones auxiliares para convertir datos
empaquetados a formatos de datos empaquetados de menor tamaño.

• PACKSSWB, se utiliza para convertir words signadas empaquetadas en


bytes signados empaquetados.

• PACKSSDW, se utiliza para convertir doble words signadas


empaquetadas en words signadas empaquetadas.

• PACKUSWB, se utiliza para convertir words no signadas en bytes no


signados

• Los datos se arman a partir de dos registros MMX o de un registro MMX


(operando destino) y una dirección de memoria de 64 bits (operando origen), y
el resultado se almacena en el operando destino.
Instrucciones MMX – Conversión
Instrucciones MMX – Conversión - Ejemplo
Jmp Inicio:

op1 dw 0x0003,0x00F0,0x0122,0xA655
op2 dw 0x1247,0x7FFF,0xF000,0x8000

Inicio:
movq mm0, QWORD [op1]
movq mm1, QWORD
[op2] PACKSSWB mm0,
mm1
Instrucciones MMX - Desempaquetado

• Desempaquetan , parte de los operandos fuente y destino (32 bits en


cada caso) almacenando los 64 bits del resultado en el operando destino.

• Según la instrucción de desempaquetado se puede trabajar con la parte


alta o baja de los operandos fuente.

• Puede desempaquetarse de byte a word, de word a doubleword o de


doubleword a Qword
Instrucciones MMX – Desempaquetado (Low)
Instrucciones MMX – Desempaquetado (High)
SSE Extensions

Mejoras adicionales al modelo SIMD del Pentium MMX, y Pentium II

Incorporado con Pentium 3

Set de registros exclusivos (128 bits)


Modelo completo de programación

También podría gustarte