Anda di halaman 1dari 25

Explotar la jerarqua de Memorias

Centro universitario de Monterrey


5to Ing. Computacin turno nocturno

31/05/2013

ndice
1 portada 2 ndices 3 introduccin 4 EXPLORAR LA JERARQUIA DE MEMORIAS

2 Principios bsicos de las caches


3 Como medir y mejorar el rendimiento de la cache 4 Memoria Virtual 5 Un Marco comn para las jerarquas de memoria 6 Casos reales: Las jerarquas de memorias de Pentium Pro y del Poder PC 7 Falacias y Errores habituales 8 MULTICORE 9 10 11 12 13 14 15 16 1 Plataformas de ejecucin en paralelo 2 Concepto de hilos 3 Conceptos bsicos de programacin Multiforme 3.1 Conceptos de diseo 3.2 Conceptos de correctitud 3.3 Conceptos de rendimiento Herramientas para el desarrollo de aplicaciones MultiThreading

17 18 19

Rendimiento de Cdigo MultiThreading (Intel V Tune Performance Analyzer) Correccin de Errores de Threading (Intel Thread Checker) Afinacin de Cdigo Multihilo (Intel Thread Profiler)

20 conclusiones

Introduccin En este apartado la cuestin del tamao es un tema siempre abierto. Si se consigue hasta cierta capacidad, probablemente se desarrollaran aplicaciones que la utilicen. La cuestin de la rapidez, en cierto sentido fcil de responder. Para conseguir las prestaciones optimas, la memoria debe seguir al procesador. Es decir, cuando el procesador ejecuta instrucciones, no es deseable que deba detenerse ala espera de instrucciones o de operando. La ltima de las cuestiones anteriores tambin debe tenerse en cuenta. La practica, el coste de la memoria debe ser razonable con relacin a los otros componentes.

Contenido

EXPLORAR LA JERARQUIA DE MEMORIAS

Las restricciones de diseo de la memoria de un computador se pueden resumir en tres cuestiones: Cunta capacidad? Cmo de rpida? De que coste? La cuestin del tamao es un tema siempre abierto. Si se consigue hasta cierta capacidad, probablemente se desarrollaran aplicaciones que la utilicen. La cuestin de la rapidez, en cierto sentido fcil de responder. Para conseguir las prestaciones optimas, la memoria debe seguir al procesador. Es decir, cuando el procesador ejecuta instrucciones, no es deseable que deba detenerse ala espera de instrucciones o de operando. La ltima de las cuestiones anteriores tambin debe tenerse en cuenta. La practica, el coste de la memoria debe ser razonable con relacin a los otros componentes. Como es de esperar, existe un compromiso entre las tres caractersticas clave de coste capacidad, y el tiempo de acceso. En un momento dado, se emplean diversas tecnologas para realizar los sistemas de memoria. En todo el espectro de posibles tecnologas se cumplen las siguientes relaciones: . A menor tiempo de acceso, mayor coste por bit. . A mayor capacidad, menor coste por bit.

. A mayor capacidad, mayor tiempo de acceso. El dilema con que se enfrenta el diseador esta claro. El diseador deseara utilizar tecnologas de memoria que proporcionen gran capacidad. Tanto por que esta es necesaria como por que el coste por bit es bajo.

En principio el uso de dos niveles de memoria para reducir el tiempo de acceso medio funciona pero solo si se aplican las condiciones (A) a(d) anteriores, empleando diversas tecnologas se tiene todo un espectro de sistemas de memoria que satisfacen las condiciones(A) a (C). Afortunadamente a condicin (D) es tambin generalmente valida. La base para la validez de la condicin (D) es el principio conocido como localidad de las referencias [DENN68]. En el curso de ejecucin de un programa, las referencias a memoria por parte del procesado, tanto para instrucciones como para datos, tienden a estar agrupadas. Los programas normalmente contienen un numero de bucles iterativos y subrutinas, cada vez que se entra en un bucle o una subrutina, hay repetidas referencias aun pequeo conjunto de instrucciones, de manera similar. Las operaciones con tablas o con matrices conllevan accesos a un conjunto de palabras de datos agrupadas, en periodos de tiempo largos, las agrupaciones ( clusters) en uso

cambian, pero en periodos de tiempo cortos el procesador trabaja principalmente con agrupaciones fijas de referencias a memorias. El principio puede aplicarse a travs de ms de dos niveles de memoria como sugiere la jerarqua mostrada anteriormente. El tipo de memoria mas rpida, pequea y costosa, lo constituyen los registros internos al procesador. Un procesador suele contener unas cuantas docenas de tales registros. Aunque algunas maquinas contienen cientos de ellos. La memoria principal es normalmente ampliada con un cache que es ms pequea y rpida. La cache no suele estar visible al programador, y realmente tampoco al procesador en un dispositivo para escalonar las transferencias de datos entre memoria principal y los registros del procesador a fin de manejar las prestaciones.

2 Principios bsicos de las caches


El objetivo de la memoria cache es lograr que la velocidad de la memoria sea lo mas rpida posible, siguiendo al mismo tiempo un tamao grande de memorias semiconductoras menos costosas. Hay una memoria principal relativamente grande y mas lenta junto con una memoria cach mas pequea.

La cach contiene una copia de partes de una memoria principal. Cuando el procesador intenta leer una palabra de memoria, se hace una comprobacin para determinar si la palabra esta en la cach. Si es as se entrega dicha palabra al procesador, sino, un bloque de memoria principal. Consiste en un cierto numero de palabras, se transfiere ala cach y despus la palabra es entregada al procesador. Debido al fenmeno de localidad de las referencias, cuando un bloque de datos es capturado por la cach para satisfacer una referencia a memoria simple, es probable que se hagan referencias futuras ala misma posicin de memoria o a otras palabras del mismo bloque La figura describe la estructura de un sistema de memoria cach /principal. La memoria principal consta de hasta 2n palabra direccionales, teniendo cada palabra una nica direccin de n bits esta memoria la consideramos dividida en un nmero de bloques de longitud fija. De k palabras por bloque, es decir hay m=2/k bloques. La cach consta de C lneas mas una etiqueta de unos cuantos bits denominndose tamao de lnea al nmero de palabras que hay en la lnea.

Operacin de lectura el procesador genera la direccin RA de una palabra de leer. Si la palabra esta en la cach es entregada al procesador si no el bloque que contiene dicha palabra se carga en la cache, y la palabra es llevada despus al procesador la figura mostrada abajo indica como estas dos ultimas operaciones se realizan en paralelo y refleja la organizacin que es tpica en las organizaciones de cach actuales. En ella la cach conecta con el procesador mediante lneas de datos, de control y direcciones. Las lneas de datos y de direcciones conectan tambin con el buffer de datos y de direcciones que las comunican con un bus del sistema a travs del cual se accede a la memoria principal. Cuando ocurre un acierto de cach los buffers de datos y de direcciones se habilitan y la comunicacin tiene lugar solo entre el procesador y el cach sin trafico en el bus, cuando ocurre un fallo en el cach la direccin deseada se carga en el bus del sistema y el dato es llevado, a travs del buffer de datos tanto ala cach como al procesador. En otras formas de organizacin, la cach se interpone fsicamente entre el procesador y la memoria.

3 Como medir y mejorar el rendimiento de la cache Esta seccin empieza estudiando como medir y analizar el rendimiento de la cache despus se detallaran dos tcnicas para mejorar el rendimiento. Una se centra en reducir la tasa de fallos reduciendo la probabilidad de que los dos bloques diferentes de memoria vayan ala misma posicin de la cach. La segunda tcnica reduce la penalizacin por fallo aadiendo un nivel adicional ala jerarqua.

El tiempo de CPU se puede dividir en ciclos en los que la CPU ejecuta el programa. Ciclos en los que la CPU espera por la memoria. Normalmente, el coste de los aciertos en cache se considera como parte de los ciclos de ejecucin normal de la CPU.

Se asume que los ciclos de bloqueo por la memoria son principalmente debidos a fallos de cache. Ciclos de bloqueo causados por la memoria:

Ciclos de bloqueo por escritura (write-through) Fallos de escritura: requieren buscar el bloque. Bloqueos por buffer de escritura lleno. Los bloqueos del buffer son difciles de calcular.

En sistemas con buffer de tamao razonable, sern muy pocos y se pueden ignorar. Se pueden combinar lecturas y escrituras en los clculos usando una tasa de fallos y una penalizacin por fallo nicas:

El ejecutar un programa se tiene una tasa de fallos de instrucciones del 2% y una tasa de fallos de datos del 4%. Si la mquina tiene un CPI de 2 sin bloqueos de memoria y una penalizacin por fallo de 40 ciclos para todos los fallos, determinar cunto ms rpida sera una mquina con una cache perfecta sin fallos si el programa tiene un 21%

de instrucciones lw, un 12% de sw, un 1% de lb (load byte), un 1% de sb (store byte), un 1% de lu (load upper inmediate), un 39% de instrucciones tipo R, un 15% de saltos condicionales y un 10% de saltos incondicionales. Y si el procesador es ms rpido con la misma memoria? Reduccin del CPI de 2 a 1 sin cambiar la frecuencia de reloj (posible con segmentacin). CPI con segmentacin: 1+1,36=2,36 Sera 2,36 veces ms rpido que con cache perfecta. % tiempo de ejecucin empleado en bloqueos de memoria habra crecido.

Se supone que se incrementa el rendimiento de la mquina del ejemplo anterior doblando la frecuencia de reloj. Como es factible que la velocidad de la memoria principal no cambie, se supone que el tiempo absoluto de tratar un fallo de cache no cambia. Cunto ms rpida ser la mquina con un reloj ms rpido, si se supone la misma tasa de fallos que en el ejemplo anterior?

Problema en la actualidad: Procesadores con elevada frecuencia de reloj. Considerable tiempo de acceso a DRAM. Solucin: incorporar un segundo nivel de cache. Conjunto separado de SRAM al que se accede ante un fallo en cache primario. Si el segundo nivel de cache tiene los datos, la penalizacin por fallo es menor que accediendo a memoria principal. Si ninguno de ambos niveles tiene los datos, la penalizacin por fallo ser an mayor. La cache primaria tratar de minimizar el tiempo de acierto para adaptarse a un ciclo de reloj menor. La cache de segundo nivel se concentra en la tasa de fallos para reducir la penalizacin por acceder a memoria principal. La cache secundaria ser mayor que una cache mono nivel, puesto que el tiempo de acceso no es crtico.

4 Memoria Virtual

Manejo de la memoria virtual, etiquetado e indexado Segmentacin


La Segmentacin es un mecanismo de separacin del espacio de las direcciones del procesador en espacios de direcciones protegidos ms pequeos llamados segmentos, as se logra que mltiples tareas puedan correr en el mismo procesador sin interferir entre ellas. Los segmentos son usados para preservar la cache, datos y pila para un programa. El espacio de direccionamiento lineal del procesador contiene todos los segmentos dentro del sistema. Para acceder a un byte en un segmento particular, el procesador usa una direccin lgica: Una direccin lgica tiene 2 campos: Un selector de segmentos de 16 bit, que es un identificador nico del segmento y.. Un desplazamiento de 32 bit que es sumado a la direccin base para localizar la direccin lineal del bloque segmentado. Paginacin, Memoria virtual Pentium Pro soporta paginacin, llamada tambin Memoria Virtual. Cuando se usa paginacin, el procesador divide cada segmento en pginas (generalmente 4KB de longitud) las cuales son almacenadas en la Memoria Fsica o en el disco. Cuando un programa o tarea hace referencia a una direccin lgica de memoria, el procesador traduce la direccin en direcciones lineales y luego usa la paginacin para traducir direcciones lineales en direcciones fsicas correspondientes. Una falla de pgina ocurre cuando la pgina conteniendo la direccin lineal no est actualmente en la memoria fsica. Para minimizar el nmero de ciclos de bus requeridos por una traduccin de direccin, un directorio de pginas ms recientemente accesadas y tablas de pginas ingresadas son cacheadas en el procesador en dispositivos llamados TLB (translation look aside buffer o memoria intermedia de traduccin vista aparte).

Bibliografia http://www.led.uc.edu.py/micro2/tp1/pentium/#3.1) Subsistema de Memoria http://books.google.com.mx/books?id=rEjaLxQ4bl8C&lpg=PA603&ots=A7WU2DaBN1& dq=powerpc%20jerarquia%20memoria&hl=es&pg=PA603#v=onepage&q=powerpc%20je rarquia%20memoria&f=false

5 Un Marco comn para las jerarquas de memoria

En un ordenador hay una jerarqua de memorias atendiendo al tiempo de acceso y a la capacidad que normalmente son factores contrapuestos por razones econmicas y en muchos casos tambin fsicas. Comenzando desde el procesador al exterior, es decir en orden creciente de tiempo de acceso y capacidad, se puede establecer la siguiente jerarqua: - Registros de procesador: Estos registros interaccionan continuamente con la CPU (porque forman parte de ella). Los registros tienen un tiempo de acceso muy pequeo y una capacidad mnima, normalmente igual a la palabra del procesador (1 a 8 bytes). - Registros intermedios: Constituyen un paso intermedio entre el procesador y la memoria, tienen un tiempo de acceso muy breve y muy poca capacidad. - Memorias cach: Son memorias de pequea capacidad. Normalmente una pequea fraccin de la memoria principal. y pequeo tiempo de acceso. Este nivel de memoria se coloca entre la CPU y la memoria central. Hace algunos aos este nivel era exclusivo de los ordenadores grandes pero actualmente todos los ordenadores lo incorporan. Dentro de la memoria cach puede haber, a su vez, dos niveles denominados cach on chip, memoria cach dentro del circuito integrado, y cach on

board, memoria cach en la placa de circuito impreso pero fuera del circuito integrado, evidentemente, por razones fsicas, la primera es mucho ms rpida que la segunda. Existe tambin una tcnica, denominada Arquitectura Harvard, en cierto modo Contrapuesta a la idea de Von Newmann, que utiliza memorias cach separadas para cdigo y datos. Esto tiene algunas ventajas como se ver en este captulo. - Memoria central o principal: En este nivel residen los programas y los datos. La CPU lee y escribe datos en l aunque con menos frecuencia que en los niveles anteriores. Tiene un tiempo de acceso relativamente rpido y gran capacidad. - Extensiones de memoria central: Son memorias de la misma naturaleza que la memoria central que amplan su capacidad de forma modular. El tiempo de similar, a lo sumo un poco mayor, al de la memoria central y su capacidad puede ser algunas veces mayor. Memorias de masas o auxiliares: Son memorias que residen en dispositivos externos al ordenador, en ellas se archivan programas y datos para su uso posterior. Tambin se usan estas memorias para apoyo de la memoria central en caso de que sta sea insuficiente (memoria virtual). Estas memorias suelen tener gran capacidad pero pueden llegar a tener un tiempo de acceso muy lento. Dentro de ellas tambin se pueden establecer varios niveles de jerarqua.

BIBLIOGRAFIA http://www.emagister.com/curso-arquitectura-ordenadores/tipos-memoria-jerarquiamemoria

6 Casos reales: Las jerarquas de memorias de Pentium Pro y del Poder PC

Jerarquia de Memoria pentium pro Cache Como se mencion anteriormente, la cache de Pentium Pro consiste en 2 diferentes caches: L1 y L2, de tamao de 32 byte de lnea. L1: La cache L1 es separada en un set asociativo de instrucciones de Memoria de 8KB de 4 caminos y un set asociativo de datos de Memoria de 8KB de 2 caminos. Ambas estn localizadas dentro de la CPU. L1 es no-bloqueable: si un acceso a L1 lleva a una falla, la cual pudo ser especulativa, el acceso detrs de ella no quedar esperando. L2: Es una cach secundaria de tamao 256 o 512 KB. No est dentro de la CPU.

Cuando el procesador requiere datos de la Memoria primero busca en L1, que es una memoria pequea pero es muy rpida para encontrar el objetivo. Si L1 no contiene el dato, el procesador busca en L2 que es una memoria ms grande pero ms lenta. Si el dato se encuentra se llama acierto si no se llama fallo. Cuando ocurre un fallo el procesador enva su solicitud a la memoria principal (RAM). Cualquier rea de la memoria puede cachearse en L1 y L2. El procesador permite a regiones individuales usar mtodos de cacheo especficos, los cuales pueden especificarse usando banderas. El procesador Pentium Pro tiene una memoria intermedia de escritura para almacenar cada escritura temporal. Esta memoria intermedia permite al procesador continuar ejecutando instrucciones sin tener que esperar a que un acceso de escritura sea completado. La coherencia entre las caches y la memoria del sistema son mantenidas usando el protocolo cache MESI. Este protocolo patrocina coherencia cache en sistemas de procesador simple y procesador mltiple. Es tambin capaz de detectar problemas de coherencia creados por cdigos que se modifican a s mismos. Pedidos de memoria por las unidades de ejecucin del procesador van a travs de la Unidad de Interfase con la Memoria y la memoria intermedia de ordenamiento de memoria. Estas unidades han sido diseadas para soportar un suave flujo de pedidos de acceso a memoria a travs de la cache y la jerarqua de memoria del sistema para prevenir bloqueos de accesos a memoria. La cache de datos L1 automticamente transmite un fallo de cache a la cache L2, y si es necesario, la Unidad de Interfase Bus transmite un fallo de cache L2 a la memoria del sistema. Pedidos de memoria a la cache L2 o memoria del sistema van a travs de la memoria intermedia de reordenamiento de memoria, la cual funciona como una estacin de planeacin y despacho. Esta unidad mantiene el rastro de todos los pedidos de memoria y es capaz de reordenar algunos pedidos. Por ejemplo, la memoria intermedia de reordenamiento de memoria permite a las cargas pasar a los almacenamientos. Tambin produce cargas especulativas (Almacenamientos son siempre despachados en orden, y los almacenamientos especulativos nunca son producidos).
7 Falacias y Errores habituales

MULTICORE

1 Plataformas de ejecucin en paralelo

Plataformas de ejecucin en paralelo En computacin paralela, la concurrencia es parte

La computacin paralela es una forma de cmputo en la que muchas instrucciones se ejecutan simultneamente, operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos ms pequeos, que luego son resueltos simultneamente (en paralelo). Hay varias formas diferentes de computacin paralela: paralelismo a nivel de bit, paralelismo a nivel de instruccin, paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos aos, sobre todo en la computacin de altas prestaciones, pero el inters en ella ha crecido ltimamente debido a las limitaciones fsicas que impiden el aumento de la frecuencia. Como el consumo de energa y por consiguiente la generacin de calor de las computadoras constituye una preocupacin en los ltimos aos. la computacin en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multincleo. Las computadoras paralelas pueden clasificarse segn el nivel de paralelismo que admite su hardware: equipos con procesadores multincleo y multi-procesador que tienen mltiples elementos de procesamiento dentro de una sola mquina y los clsteres, MPPS y grids que utilizan varios equipos para trabajar en la misma tarea. Muchas veces, para acelerar la tareas especficas, se utilizan arquitecturas especializadas de computacin en paralelo junto a procesadores tradicionales. Los programas informticos paralelos son ms difciles de escribir que los secuenciales,5 porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los ms comunes. La comunicacin y sincronizacin entre diferentes subtareas son algunos de los mayores obstculos para obtener un buen rendimiento del programa paralelo. La mxima aceleracin posible de un programa como resultado de la paralelizacin se conoce como la ley de Amdahl. Aplicaciones Web para trabajar c

http://es.wikipedia.org/wiki/Computaci%C3%B3n_paralela on varios subprocesos al mismo tiempo en lugar de tener q

2 Concepto de hilos
Concepto de hilos

En sistemas operativos, un hilo de ejecucin, hebra o subproceso es la unidad de procesamiento ms pequea que puede ser planificada por un sistema operativo.

La creacin de un nuevo hilo es una caracterstica que permite a una aplicacin realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecucin comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situacin de autenticacin, etc. Esta tcnica permite simplificar el diseo de una aplicacin que debe llevar a cabo distintas funciones simultneamente. Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo con otra tarea. Los hilos de ejecucin que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecucin de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar stos. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a ese dato modificado inmediatamente. Lo que es propio de cada hilo es el contador de programa, la pila de ejecucin y el estado de la CPU (incluyendo el valor de los registros). El proceso sigue en ejecucin mientras al menos uno de sus hilos de ejecucin siga activo. Cuando el proceso finaliza, todos sus hilos de ejecucin tambin han terminado. Asimismo en el momento en el que todos los hilos de ejecucin finalizan, el proceso no existe ms y todos sus recursos son liberados. Algunos lenguajes de programacin tienen caractersticas de diseo expresamente creadas para permitir a los programadores lidiar con hilos de ejecucin (como Java o Del phi). Otros (la mayora) desconocen la existencia de hilos de ejecucin y stos deben ser creados mediante llamadas de biblioteca especiales que dependen del sistema operativo en el que estos lenguajes estn siendo utilizados (como es el caso del C y del C++). Un ejemplo de la utilizacin de hilos es tener un hilo atento a la interfaz grfica (iconos, botones, ventanas), mientras otro hilo hace una larga operacin internamente. De esta manera el programa responde de manera ms gil a la interaccin con el usuario. Tambin pueden ser utilizados por una aplicacin servidora para dar servicio a mltiples clientes.

3 Conceptos bsicos de programacin Multiforme


Conceptos bsicos de programacin Multiforme

El concepto de polimorfismo es crucial para la programacin orientada a objetos. En su

Concepcin relativa a C++, el trmino polimorfismo se utiliza para describir el proceso Mediante el cual se puede acceder a diferentes implementaciones de una funcin utilizando el mismo nombre. Por esta razn el polimorfismo se define a veces mediante la frase una interface mtodos mltiples. Esto significa que en general se puede acceder a toda una asociadas a cada una de las operaciones pueda ser diferente. En C++, el polimorfismo se admite tanto en el momento de la ejecucin como en el momento de la compilacin. La sobrecarga de operadores y de funciones es un ejemplo de polimorfismo en el momento de la compilacin. Sin embargo, aunque la sobrecarga de operadores y de funciones muy potentes, no pueden llevar a cabo todas las tareas que requiere un verdadero lenguaje orientado a objetos. Por tanto, C++ permite tambin el polimorfismo en el momento de la ejecucin mediante el uso de clases derivadas y de Funciones virtuales.
http://dis.um.es/~jfernand/0506/dai/poo.pdf

3.1 Conceptos de diseo


Conceptos de diseo

El proyecto tiene como objetivo el diseo de soluciones de bajo consumo centrado en las comunicaciones heterogneas que se presentan en arquitecturas multi-ncleo, con especial hincapi en tecnologa CMOS con reglas de diseo de 45nm y 32nm. Como ejemplos significativos se pueden citar la prxima generacin de telfonos mviles inteligentes multi-procesador o cualquier otro dispositivo mvil enmarcado dentro del estilo de vida digital. Las investigaciones de COMCAS abarcan toda la jerarqua de diseo de bajo consumo, haciendo especial nfasis en las diferentes opciones a nivel de sistema, modelado de aplicaciones (algoritmos, protocolos) y arquitecturas, maximizar la reutilizacin de diseos existentes (IP) usando las herramientas ms apropiadas: de particionado y mapeado, prototipado virtual de ciclo exacto (cycleaccurate), requisitos de consumo mnimo uniendo metodologas de diseo semi y fullcustom a nivel de transistor en tecnologas de 45nm y ms all. La solucin de diseo multi-procesador heterognea desarrollada dentro del proyecto COMCAS, tendr un potencial para aumentar la eficiencia energtica reduciendo el consumo de energa en un factor de 5. Las nuevas tecnologas usadas en las plataformas COMCAS, junto con el diseo orientado a bajo consumo, permitirn el diseo de dispositivos ms pequeos capaces de manejar vdeo en alta definicin (HD), imgenes de alta resolucin, grficos con capacidad 3D. Uno de los telfonos

mviles de gama alta ms populares hoy en da consume alrededor de 2W cuando ejecuta vdeo en alta definicin. Esto significa que una recarga de batera puede durar un mximo de 2 horas. Con las innovaciones propuestas en el proyecto COMCAS, se pondr extender este tiempo hasta 10 horas en el mismo escenario de uso http://www.i3a.uclm.es/joomla2/index.php?option=com_content&view=article&id=1 12%3Acomcas-communication-centric-heterogeneous-multi-corearchitectures&catid=42%3Araap&Itemid=97&lang=es

3.2 Conceptos de correctitud


Conceptos de correctitud

la correccin de un algoritmo, tambin llamada correctitud (como adaptacin de la palabra inglesa correctness), corresponde a una propiedad que distingue a un algoritmo de un procedimiento efectivo. Un algoritmo es correcto, si: 1. Resuelve el problema computacional para el cual fue diseado. 2. Para cada entrada, produce la salida deseada. 3. Termina en un tiempo de ejecucin finito. Si cualquiera de estos tres puntos no se cumple, entonces estamos hablando de un algoritmo incorrecto, que para efectos prcticos, carece de utilidad, al no ser ms que un procedimiento efectivo, es decir, una secuencia ordenada y determinista de pasos.
http://es.wikipedia.org/wiki/Correctitud

3.3 Conceptos de rendimiento


Conceptos de rendimiento

Replicar todo el ncleo del procesador en un solo chip mejora el rendimiento de una aplicacin paralelizada Evolucin natural de HT El rendimiento mejora para aplicaciones paralelizadas

Avances en la tecnologa del compilador continan impulsando el rendimiento Open MP, Auto-paralelizacin, los compiladores incorporan las ltimas innovaciones del procesador El Cache y la frecuencia de reloj no influyen en el rendimiento de la aplicacin El cache y la frecuencia del reloj siguen contribuyendo

http://webcache.googleusercontent.com/search?q=cache:fFzi3rqRyQJ:academiamulticore.org/materialsv2/01%2520%2520El%2520reto%2520de%2520paralelismo%2520y%2520Multicore.ppt+&cd=1&hl=e s-419&ct=clnk&gl=mx Formas de multi hilos

Los sistemas operativos generalmente implementan hilos de dos maneras:

Multihilo apropiativo: permite al sistema operativo determinar cundo debe haber un cambio de contexto. La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado, causando un fenmeno conocido como inversin de prioridades y otros problemas. Multihilo cooperativo: depende del mismo hilo abandonar el control cuando llega a un punto de detencin, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.

http://es.wikipedia.org/wiki/Hilo_de_ejecuci%C3%B3n#Funcionalidad_de_los_hilos

Herramientas para el desarrollo de aplicaciones


Aquellos que alguna vez hayan tenido que desarrollar aplicaciones MultiThreading seguramente coincidirn que la tecnologa es muy potente, pero el IDE de Visual Studio 2008 era un poco pobre para la depuracin de estas aplicaciones.

Disclaimer: no quiero animar a nadie a empezar a crear miles de Thread a cascoporro con 2 lneas de cdigo, siempre he opinado que la decisin de utilizar Thread para gestionar algo en una aplicacin debe ser una de las ltimas opciones. Este tipo de soluciones, sino estn bien implementadas suelen traer ms problemas que beneficios. Desde hace un tiempo sigo en el blog de The Moth (Daniel Moth) una serie de artculos muy interesantes sobre este tema. Y una de las cosas que ms me ha llamado la atencin son 2 nuevos paneles en el IDE de Visual Studio que nos ayudan en la depuracin en estos escenarios: Parallel Tasks y Parallel Stacks.

MultiThreading

Utilizando los avances tecnolgicos, hasta la dcada de 2000 los fabricantes de procesadores prcticamente duplicaban la cantidad de transistores en un chip de 18 a 24 meses. Este ritmo se mantuvo hasta llegar a los lmites fsicos permitidos. El desarrollo de transistores se movi de un tamao de 90nm a 65nm, lo que permite tener ms transistores en un chip. Sin embargo, existen reportes que pronostican que una vez que se alcance los 16nm en tamao, el proceso no podr controlar el flujo de los electrones a medida que el flujo se mueva a travs de los transistores. De esa forma, llegar un momento que los chips no podrn ser ms pequeos. Asimismo, al reducir su tamao e incrementar su densidad, los chips generan mayor calor, causando errores en el procesamiento.
http://www.fing.edu.uy/cluster/grupo/Multithreading-Clase1.pdf
Rendimiento de Cdigo MultiThreading (Intel V Tune Performance Analyzer)

Provee una amplia gama de estndares de programacin paralela guiados por herramientas de

desarrollo de C/C++ y Fortran y por modelos de programacin que permiten a los desarrolladores de software desarrollar, analizar y optimizar eficientemente las aplicaciones HPC para escalar hacia adelante, escalar ms rpido e impulsar el rendimiento para procesadores compatibles con IA, incluyendo el Intel Xeon Phi Coprocesador. Los procesadores multi ncleo incluyen las siguientes herramientas de desarrollo de software de ltima generacin: Biblioteca Intel MPI Altamente escalable, e interconecta independientemente a bibliotecas MPI de baja latencia. Intel Trace Analyzer and Colector Perfilador de rendimiento de comunicaciones MPI Compiladores Intel C, C++ y Fortran Compiladores Lderes en la Industria Intel MKL e Intel IPP Bibliotecas de rendimiento para matemticas y multimedios Intel Threading Building Blocks e Intel Cilk Plus Modelos de programacin paralela basados en Threading Intel Advisor XE Asistente de Threading para aplicaciones C/C++, C#, y Fortran usando paralelismo basado en Thread en el nodo maestro de un clster. Intel VTune Amplifier XE Perfilador de rendimiento y Thread est activado para MPI en cada nodo Intel Inspector XE Verificador de memoria y Thread, est activado para MPI en cada nodo Anlisis Esttico Ubica Defectos Difciles de Detectar Intel MPI Benchmarks Una fuente abierta de kernel para benchmarks de MPI y clster Es el resumen del de herramientas http://software.intel.com/sites/billboard/sites/default/files/downloads/Intel_Cluster_Stu dio_XE_2013_PB-SP.pdf

Correccin de Errores de Threading (Intel Thread Checker) Afinacin de Cdigo Multihilo (Intel Thread Profiler)

Un programa Multihilo contiene dos o ms partes que se pueden ejecutar de manera concurrente o simultnea. A cada una de esas partes se les denomina hilo y cada uno de ellos define un camino de ejecucin independiente. Se puede ver a la programacin Multihilo como una forma especializada de multitarea.

Originalmente, la programacin con hilos fue explotada con el fin de lograr que algunos programas resultaran ms sencillos de escribir: si un programa puede dividirse en varias tareas, suele ser ms fcil programar el algoritmo como tareas o hilos separados. Los programas que caen dentro de esta categora, tpicamente son especializados y se encargan de mltiples tareas independientes. Frecuentemente, estos programas fueron escritos como procesos separados que utilizaban herramientas de comunicacin dependientes del sistema operativo, tales como seales y espacios de memoria compartida para hacer la comunicacin entre los procesos, incrementando de esta forma la complejidad de los sistemas. La popularidad de los hilos se increment cuando las interfaces grficas se convirtieron en un estndar para computadoras de escritorio, debido a que el sistema de hilos permiti al usuario percibir un mejor desempeo de los programas. La introduccin de hilos en estas plataformas no hizo a los programas ms rpidos, pero cre en el usuario una ilusin de desempeo ms rpido, quien ahora tena un hilo dedicado para el servicio de entrada o para la salida en pantalla.

Bibliografa
BBhttp://www.fing.edu.uy/inco/cursos/arqsis2/teorico/clase06-jerarquia.pdf
http://dac.escet.urjc.es/docencia/ETC-ITIG_LADE/teoria-cuat2/tema22.pdf

Estructura y diseo de computadores Patterson/Hennessy Revert (2000)

Organizacin y Arquitectura de computadoras William Stallings Prentice Hall (2000)


REVISIN REALIZADA POR:

Conclusin

Este trabajo me ayudo a comprender las diferentes jerarquas que existen entre las memorias adems de conocer conceptos como el de correctitud

Anda mungkin juga menyukai