43
Optimización de aplicaciones Para PDAs basados en Intel Xscale Arquitecturas Especializadas

Optimización de aplicaciones

Embed Size (px)

DESCRIPTION

Optimización de aplicaciones. Para PDAs basados en Intel Xscale. Arquitecturas Especializadas. Dispositivos PDA. Diversa funcionalidad Agenda telefónica, calendario. Procesar textos y documentos Word,Excel… Enviar e-mails. Reproducir vídeos,películas y MP3. Sistema de navegación GPS. - PowerPoint PPT Presentation

Citation preview

Page 1: Optimización de aplicaciones

Optimización de aplicacionesPara PDAs basados en Intel Xscale

Arquitecturas Especializadas

Page 2: Optimización de aplicaciones

Dispositivos PDA

• Diversa funcionalidad– Agenda telefónica, calendario.– Procesar textos y documentos

Word,Excel…– Enviar e-mails.– Reproducir vídeos,películas y MP3.– Sistema de navegación GPS.– Usos educativos.– Usos en medicina.

Page 3: Optimización de aplicaciones

Dispositivos SmartPhone• Son un teléfono móvil

con capacidades de procesamiento adicionales.

• Menor tamaño, menores prestaciones.

Page 4: Optimización de aplicaciones

Características propias de un PDA• Pantalla táctil (Teclado

opcional)• Memoria externa SD o

Flash.• Conexiones IrDa,

BlueTooth, WiFi.• Sistema Operativo

– Windows CE– Linux– Symbian (sobre todo

SmartPhones).

Page 5: Optimización de aplicaciones

Windows CE

• Interfaces directas con dispositivos usuales como GPS, BlueTooth..etc.

• Soporte gráficos Direct Draw.• Servidor SQL integrado.

Page 6: Optimización de aplicaciones

Linux

• OpenZaurus – Sharp.• Basadas en Devian:

– Familiar Linux.– Intimate (+ requisitos

memoria)

Page 7: Optimización de aplicaciones

Familia Intel Xscale• Implementación de la versión 5 de ARM sin coma

flotante.• Familia de 4 procesadores:

– PXA: Procesadores de aplicaciones.– IXC: Controladores alto rendimiento.– IXP: Controladores para redes. – IOP: Procesadores Entrada / Salida.

Page 8: Optimización de aplicaciones

Procesadores Intel Xscale• Muy utilizados en PDAs.• Características:

– Alta velocidad 400Mhz – 800Mhz– Bajo consumo (escalado dinámico).– Controladores integrados para pantalla táctil,

sistema de sonido…etc.– Optimización para aplicaciones usuales:

códecs audio/video, instrucciones MMX…

Page 9: Optimización de aplicaciones

Diagrama de bloques de procesadores actuales

Page 10: Optimización de aplicaciones

Elementos del núcleo

Page 11: Optimización de aplicaciones

Arquitectura Xscale PXA

Page 12: Optimización de aplicaciones

Elementos de la arquitectura• 16 registros de 32 bits• Multiplicador Acumulador de 40 bits• Cachés de instrucciones y de datos de

32Kb.• Mini-caché de datos 2Kb.• Unidades de gestión de memoria para

instrucciones y para datos.(IMMU y DMMU).• Buffer de escritura. (WB)

Page 13: Optimización de aplicaciones

IMMU y DMMU• Realizan la translación de direcciones lógica

a física.• Gestionan los permisos de acceso a

memoria.• Constan de buffers de 32 entradas

asociativas (ITLB y DTLB).• Política de reemplazo Round-Robin.

Page 14: Optimización de aplicaciones

IMMU y DMMU 2• Si una instrucción o dato no se encuentra en

su buffer ITLB o DTLB, se invoca un algoritmo basado en tabla.

• Estas dos unidades pueden ser habilitadas o deshabilitadas conjuntamente.

Page 15: Optimización de aplicaciones

Caché de Instrucciones• Permite acceder a la velocidad del núcleo a

las instrucciones.• Caché asociativa de 32 conjuntos / 32 vías.• Cada vía contiene:

– Una dirección.– Una línea de caché (8 palabras de 32 bits)– Bits de paridad y validez.

Page 16: Optimización de aplicaciones

Caché de Instrucciones - 2

Page 17: Optimización de aplicaciones

Caché de Datos• Estructura idéntica a la caché de

instrucciones.(32 conjuntos 32 vías)• Funcionamiento conjunto con 2 buffers de

carga y de pendientes:– Se pretende traer datos a la caché antes que

se produzca una falta.

• Escritura utilizando Buffer de Escritura.

Page 18: Optimización de aplicaciones

Caché de datos 2

Page 19: Optimización de aplicaciones

Mini caché de datos• Diseñada para contener flujos de datos que

cambian constantemente.(MPEG)• Trata de evitar la paginación causada en la

caché de datos por el constante cambio de datos.

• 32 conjuntos / 2 vías.

Page 20: Optimización de aplicaciones

Mini caché de datos - 2

Page 21: Optimización de aplicaciones

Buffers FB y PB• Ambos trabajan con la DMMU.• Poseen 4 entradas.• El buffer FB trabaja con el núcleo para

manejar datos no cacheables.• El buffer PB trata de evitar las faltas de

datos.• Su misión es evitar que el núcleo se atasque

esperando los datos de memoria.

Page 22: Optimización de aplicaciones

Buffer de escritura• 8 entradas de 16 bytes cada una.• Puede ser utilizado directamente por:

– El núcleo.– La caché de datos. – La mini caché.

• Tecnología de escritura en bloque

Page 23: Optimización de aplicaciones

Tecnología de escritura en bloque del buffer de escritura WB

Page 24: Optimización de aplicaciones

Optimización de aplicaciones• Como mejorar el rendimiento:

– Utilizando el sistema de memoria.– A través de las primitivas de Intel IPP.

Page 25: Optimización de aplicaciones

Estructura de la caché• Rendimiento de nuestra aplicación

condicionado fuertemente por:– Impacto de las funciones Inline.– La alineación de datos.

Page 26: Optimización de aplicaciones

Impacto de funciones Inline• Utilizamos funciones inline dentro de bucles

largos para evitar sobrecarga de la llamada.• El aumento del tamaño de código puede

causar que no quepa en la caché.• Solución:

– Generar un archivo de mapa del binario para saber si cabe en caché nuestra función.

Page 27: Optimización de aplicaciones

Alineación de datos• Hemos de tratar de alinear las estructuras

de datos en bloques de 32 bytes.• Ejemplo

typedef struct{long x; // suponemos que long son 4 byteslong y;long z;long t;long color;} point_t; // estructura que representa un punto point_t my_pt;

Page 28: Optimización de aplicaciones

Alineación de datos - 2• Si no alineamos los datos:

Page 29: Optimización de aplicaciones

Alineación de datos - 3• Alinear los datos depende del compilador.• Para el compilador de Microsoft:

__declspec(align(32)) struct foo{long a, b, c, d;};

Page 30: Optimización de aplicaciones

Uso de la escritura en bloques• A la hora de la escritura podemos escribir en

bloques para optimizar el rendimiento.• Ejemplo: // bucle original

// No utiliza la ventaja que proporciona// write coalescingfor(int X=0;X<cCoord.rRadius;X++)for(int Y=0;Y<cCoord.rRadius;Y++)*(TempBuff)++ = PixelCol;

Page 31: Optimización de aplicaciones

Uso de la escritura en bloques - 2• Haciendo uso de la escritura en bloques:

– Desenrollamos 4 iteraciones del bucle.

// optimizado para tomar ventaja de write coalescingfor(int X=0;X<(cCoord.rRadius);X++){for(int Y=0;Y<(cCoord.rRadius)/4;Y++){*(TempBuff)++ = PixelCol;*(TempBuff)++ = PixelCol;*(TempBuff)++ = PixelCol;*(TempBuff)++ = PixelCol;}}

Page 32: Optimización de aplicaciones

Primitivas de Intel IPP v 5.1• Proveen funcionalidad diversa y optimizada:

Codificación de Vídeo

Codificación JPEG

Codificación de Audio

Procesamiento de imágenes

Procesamiento del habla

Reconocimiento del habla

Visión por computador

Procesamiento de Señales

Operaciones Matrices y Vectores

Conversión de color

Compresión de datos

Criptografía

Page 33: Optimización de aplicaciones

IPP - 2• Soporte para los procesadores actuales

Page 34: Optimización de aplicaciones

IPP - 3• Soporte para los sistemas operativos:

– Windows ME, 2000, XP, Server 2003– Linux.– Mac OS. 10.4.3

• Soporte para los procesadores:– Pentium 4 en adelante.– Xscale a partir del modelo PXA27x.– Xscale IPX4xx en adelante.

Page 35: Optimización de aplicaciones

Aplicación propuesta• Aplicación que dibuja en pantalla círculos de

radio y posición aleatoria.

Page 36: Optimización de aplicaciones

void DibujaCirculo(unsigned short *buffer,int x,int y,int radio,COLORREF rGB){float rad=0;int X,Y;while (rad <= 2*M_PI){X = (int) (radio * cos(rad));Y = (int) (radio * sin(rad));PlotPixel(buffer, X +x, Y+y,rGB);rad += (float)0.005;}

Aplicación propuesta• Código de la rutina principal

El cálculo del seno y del coseno pretendo que sea un cuello de botella

Para dibujar un círculo hemos de calcular 1256 senos y cosenos.

Page 37: Optimización de aplicaciones

Tiempos de ejecuciónTiempos con optimizaciones compilador

1540

1545

1550

1555

1560

1565

1570

1 2 3 4 5 6 7 8 9 10

nº de ejecución

tiem

po

en

ms

No op

op1

op2 con instrinsic

op3 con intrinsic yinline

Page 38: Optimización de aplicaciones

void DibujaCirculo(unsigned short *buffer,int x,int y,int radio,COLORREF rGB){float rad=0,ret=0;int X,Y;while (rad <= CPI){gppCosHP_16_32s (rad, &ret);X = gppRound_Fixed_16_To_Int(ret * radio);gppSinHP_16_32s (rad, &ret);Y = gppRound_Fixed_16_To_Int(ret * radio);PlotPixel(buffer, X +x, Y+y,rGB);rad += (float)0.005;}

Optimización utilizando IPP• Si usamos las primitivas de Intel, el código

es el siguiente:

Reescribimos sólo 4 líneas de código que se corresponden con el cálculo del seno y coseno

Page 39: Optimización de aplicaciones

Tiempos de ejecución

Tiempos ejecución

100

105

110

115

120

125

130

1 2 3 4 5 6 7 8 9 10 11

nº ejecución

tiem

po

s m

s

op 4 ipp sin op

op 5 con rap

op 6

Page 40: Optimización de aplicaciones

Una última optimización• Utilizar escritura en bloque WB:

– Podemos aumentar el rendimiento si escribimos de 4 en 4 píxeles.

• Problema:– Para realizar la escritura en bloque, hemos de

asegurarnos que las cuatro escrituras son consecutivas.

Tenemos que integrar la función que dibuja un píxel con nuestra rutina

Page 41: Optimización de aplicaciones

Una última optimización• Escribimos 11 líneas de código para una ganancia

en velocidad de 20 ms.

1,11 1,12 1,13 1,14

ganancia

1

2

alg

ori

tmo

Ganancia en velocidad de la optimización 6

Algoritmos optimizados

Page 42: Optimización de aplicaciones

Conclusiones• Podemos optimizar aplicaciones sin utilizar

el ensamblador:– Utilizando las primitivas de Intel IPP.– Conociendo la arquitectura:

• Usando el buffer de escritura.• Precargando los datos en la caché.• Alineando nuestras estructuras en memoria.

Page 43: Optimización de aplicaciones

Conclusiones - 2• Si queremos optimizar una aplicación sin

aumentar el tiempo de desarrollo:– Utilizando las primitivas de Intel, he

incrementado el rendimiento en 12 veces.– Modificamos 4 instrucciones frente 558 que

consta nuestro programa.