Optimización de aplicaciones

Slides:



Advertisements
Presentaciones similares
Arquitectura de Sistema de E/S
Advertisements

DISPOSITIVOS CON ARQUITECTURA DE ORDENADOR
LOS ORDENADORES Rubén Granada.
Los Ordenadores Javier Yebra. ¿Qué es un ordenador? El ordenador es un dispositivo electrónico que permite almacenar información, modificarla y generar.
Pensiones Civiles del Estado PROYECTO: Página Web PCE
Consideraciones generales
Desarrollo en dispositivos móviles Smartphone 2003 Alejandro Mezcua MVP.NET Zaltor Soluciones Informáticas
Pipelines: Riesgos.
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
Gustavo Andrés Uribe Gómez
Tema 10: Gestión de Memoria
Observatorio tecnológico Novedades para dispositivos móviles: API’s adicionales para dispositivos BlackBerry La solución 3g para iPhone de Apple: el chip.
Operación de Micros e Interfaces
Administración de Memoria Memoria Virtual
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Overview Sistemas Computacionales
INTRODUCCIÓN INFORMÁTICA
Universidad de Las Palmas de Gran Canaria DCIC Universidad de Las Palmas de Gran Canaria 2008 Autor: Christian Pérez Fajardo.
Presentación de visión general de producto Publicación 1.0 9/4/07 Distribución externa MKT-SD-P-001E.
Asignación de Espacio No Contiguo
TEMA 2: Organización de computadores
DISPOSITIVOS MOVILES CONVERGENCIAS TECNOLÓGICAS. PRESENTADO POR: ANGÉLICA ROMERO MORA TEMA: DISPOSITIVOS MÓVILES.
Introducción a los Sistemas Operativos
Introducción a la Programación “Componentes y Arquitectura de un computador” Semestre de Otoño 2006 MEng. Pedro Campos Soto.
Sistemas Operativos Avanzados
LUIS FERNANDO ZULETA A. JULIO CESAR ALVAREZ
TIPOS Y MODELOS. Realizar las operaciones de calculo Dar ordenes a los componentes para que funcionen.
DISPOSITIVOS MOVILES ¿QUE ES UN DISPOSITIVO MOVIL?
DISPOSITIVOS MOVILES. Un dispositivo móvil se puede definir como un aparato de pequeño tamaño, con algunas capacidades de procesamiento, con conexión.
Estructura de los Sistemas Operativos
DISPOSITIVOS MÓVILES. QUÉ ES UN DISPOSITIVO MÓVIL UN DISPOSITIVO MÓVIL SE PUEDE DEFINIR COMO UN APARATO DE PEQUEÑO TAMAÑO, CON ALGUNAS CAPACIDADES DE.
Que es un dispositivo móvil
Introducción: Dispositivos Móviles Mtra. Carolina Galaviz Inzunza CBTIS 037.
 Anderson Morales  Informática y Comprensión Tecnológica grupo “ 30136”  TEMA: TIPOS DE DISPOSITIVOS MOVILES TIPOS DE DISPOSITIVOS MOVILES.
Aparatos electrónicos que como su palabra lo dice son móviles con capacidades de procesamiento de conexión permanente o internamente a una red. Abarca.
Tecnologías Móviles Juan Xavier Giler. Definición  Tecnología que carece de cables y que se puede trasladar sin que se registren inconvenientes en su.
Son elementos con algún tipo de funcionalidad con capacidad de procesamiento con conexión a algún tipo de red cumpliendo indefinidas ordenes que pueden.
Hardware: Evolución de los ordenadores
Dispositivos Móviles John Alexander Cruz Arévalo.
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Introducción a la informática
DISPOSITIVOS MOVILES.
Sistemas Operativos.
Presentado Por: Albert Steven Veloza Aguirre Presentado A: Diana Esperanza López CONVERGENCIA TECNOLOGICA Grupo:
Windows 8 1Prof. Christian Montoya. Conceptos Básicos 2Prof. Christian Montoya.
Diseño e implementación de soluciones de Dispositivos Conectados para Pequeñas y Medianas Empresas.
Nico Puch. Los ordenadores analógicos comenzaron a construirse a principios del siglo XX. Los primeros modelos realizaban los cálculos mediante ejes y.
Mónica Quintana Pineda
Naime Cecilia del Toro Alvarez
ANDREA DAZA. Es un aparato de pequeño tamaño, con algunas capacidades de procesamiento, con conexión permanente a una red.
Gestión de memoria Rina Arauz.
LOS ORDENADORES IULIANA BEJAN. ¿Qué es el ordenador? Es un dispositivo electrónico que permite almacenar información, modificarla y generar nueva información.
Arquitectura de Computadores I
DISPOSITIVOS MOVILES. Aparatos diseñados para mantener un tipo de función con conexión a una red. Son de tamaños muy pequeños y pueden manejar mas de.
 Un dispositivo móvil se puede definir como un aparato de pequeño tamaño, con algunas capacidades de procesamiento, con conexión permanente o intermitente.
Evolucion y Origen De El Iphone
Un dispositivo móvil lo podemos definir como un aparato de pequeño tamaño, con algunas capacidades de procesamiento, conexión permanente o intermitente.
Tema : Selección del tipo de Computadora (Hardware)
 Un dispositivo móvil es aquel aparato pequeño que puede estar conectado a una red sea permanente o intermitente pueden ser:  Teléfono móvil  GPS 
ALGUNOS DISPOSITIVOS QUE SON LOS DISPOSITIVOS MOVILES ? son aparatos de pequeño tamaño, con algunas capacidades de procesamiento, con conexión permanent.
José Alvarado – Cristian Anzola
Unidad de transferencia de memoria
Republica Bolivariana de Venezuela Universidad Alonso de Ojeda Facultad de Ingeniería Escuela de Computación Ing. Prof. Leonel Sequera Entrada y Salidas.
QUE ES UN DISPOSITIVO MOVIL Un dispositivo móvil se puede definir como un aparato de pequeño tamaño, con algunas capacidades de procesamiento, con conexión.
Black Berry es una línea de teléfonos inteligentes (smartphones) que integran el servicio de correo electrónico móvil. La Black Berry fue desarrollado.
Gestión de Memoria – Parte 2
COMPUTER DATA SYSTEMS. INTRODUCCION A LA INFORMATICA Tipos de computadoras:
Administración de Memoria Conceptos Swapping Asignación Continua Paginación Segmentación Segmentación con Paginación.
1/50 Ing. Gerardo Chávez Malpartida Administración de Memoria SISTEMAS OPERATIVOS.
Transcripción de la presentación:

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. Usos educativos. Usos en medicina.

Dispositivos SmartPhone Son un teléfono móvil con capacidades de procesamiento adicionales. Menor tamaño, menores prestaciones.

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

Windows CE Interfaces directas con dispositivos usuales como GPS, BlueTooth..etc. Soporte gráficos Direct Draw. Servidor SQL integrado.

Linux OpenZaurus – Sharp. Basadas en Devian: Familiar Linux. Intimate (+ requisitos memoria)

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.

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…

Diagrama de bloques de procesadores actuales

Elementos del núcleo

Arquitectura Xscale PXA

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)

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.

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.

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.

Caché de Instrucciones - 2

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.

Caché de datos 2

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.

Mini caché de datos - 2

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.

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

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

Optimización de aplicaciones Como mejorar el rendimiento: Utilizando el sistema de memoria. A través de las primitivas de Intel IPP.

Estructura de la caché Rendimiento de nuestra aplicación condicionado fuertemente por: Impacto de las funciones Inline. La alineación de datos.

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.

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 bytes long y; long z; long t; long color; } point_t; // estructura que representa un punto point_t my_pt;

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

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; };

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 coalescing for(int X=0;X<cCoord.rRadius;X++) for(int Y=0;Y<cCoord.rRadius;Y++) *(TempBuff)++ = PixelCol;

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 coalescing for(int X=0;X<(cCoord.rRadius);X++) { for(int Y=0;Y<(cCoord.rRadius)/4;Y++) *(TempBuff)++ = PixelCol; }

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

IPP - 2 Soporte para los procesadores actuales

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.

Aplicación propuesta Aplicación que dibuja en pantalla círculos de radio y posición aleatoria.

Aplicación propuesta Código de la rutina principal 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; } 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.

Tiempos de ejecución

Optimización utilizando IPP Si usamos las primitivas de Intel, el código es el siguiente: 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; } Reescribimos sólo 4 líneas de código que se corresponden con el cálculo del seno y coseno

Tiempos de ejecución

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

Una última optimización Escribimos 11 líneas de código para una ganancia en velocidad de 20 ms.

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.

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.