Publicado el 29 de Julio del 2019
407 visualizaciones desde el 29 de Julio del 2019
617,5 KB
19 paginas
Creado hace 12a (21/03/2012)
MULTIPROCESADORES
EL SOFTWARE EN LOS MULTIPROCESADORES
MULTIPROCESADORES
EL SOFTWARE EN LOS MULTIPROCESADORES
© Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad
Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del
público y en general cualquier otra forma de explotación de toda o parte de la misma.
La utilización no autorizada de esta obra, así como los perjuicios ocasionados en los derechos de
propiedad intelectual e industrial de la Universidad Europea de Madrid, S.L.U., darán lugar al ejercicio
de las acciones que legalmente le correspondan y, en su caso, a las responsabilidades que de dicho
ejercicio se deriven.
2
MULTIPROCESADORES
EL SOFTWARE EN LOS MULTIPROCESADORES
Índice
Presentación
La dificultad de crear programas de procesamiento paralelo
¿Por qué es más difícil desarrollar programas de procesamiento paralelo que programas secuenciales?
¿Por qué es difícil escribir programas de procesamiento paralelo que sean rápidos, especialmente cuando
aumenta el número de procesadores?
Escalado fuerte-débil
Consideraciones de diseño de un sistema operativo de multiprocesador
Procesamiento multithread y multiprocesadores monochip
Procesamiento multithread implícito y explícito
Caso real: Intel I
¿Cómo se sitúa Intel dentro de esta arquitectura multiprocesador/multithread de la que hablamos?
Caso real: Intel II
Resumen
4
5
5
5
7
8
11
12
15
15
17
19
3
Presentación
MULTIPROCESADORES
EL SOFTWARE EN LOS MULTIPROCESADORES
En este tema, veremos cómo afecta al software que una máquina sea multiprocesador. Tanto al
sistema operativo como a las aplicaciones en general.
Veremos cuáles son los puntos fundamentales en el diseño de aplicaciones para que estas
aprovechen las características de máquinas multiprocesador.
Para terminar, haremos un estudio de una de las familias más extendidas tanto dentro de los
ordenadores personales como de los grandes supercomputadores: la familia Intel.
Analizaremos cuales son las tendencias más modernas que Intel implementa para optimizar la
ejecución de código y explicaremos por qué el de Intel es un buen procesador tanto para uso
personal como para uso intensivo.
El tema lo desglosaremos en los siguientes puntos fundamentales:
Cómo crear programas de procesamiento paralelo y los tipos de paralelización.
Describiremos el multiprocesamiento en un solo chip y en multiprocesadores.
Caso real: Intel.
4
MULTIPROCESADORES
EL SOFTWARE EN LOS MULTIPROCESADORES
La dificultad de crear programas de procesamiento paralelo
La dificultad del paralelismo no solo está en el hardware, tal vez la principal dificultad esté en el
software. Hay muy pocas aplicaciones que se hayan reescrito para completar sus tareas en
menos tiempo en un multiprocesador. Es difícil escribir software que utilice varios procesadores
para terminar una tarea de forma más rápida, y el problema empeora al aumentar el número de
procesadores.
¿Por qué es más difícil desarrollar programas de procesamiento paralelo que programas
secuenciales?
Como es lógico pensar, para que un programa sea eficaz en una máquina multiprocesador, debe
aprovechar al máximo las características de una arquitectura paralela. Por el contrario, en un
monoprocesador es preferible utilizar un programa secuencial pues la programación es más
sencilla y el aumento de eficiencia es poco significativo. De hecho, las técnicas de diseño de
monoprocesadores, tales como súper escalar y ejecución fuera de orden, aprovechan el
paralelismo a nivel de instrucción (que veremos en este tema) normalmente sin la participación
del programador.
¿Por qué es difícil escribir programas de procesamiento paralelo que sean rápidos,
especialmente cuando aumenta el número de procesadores?
Porque para que sea eficiente, el software tiene que poder dividirse en tantas subtareas como
procesadores tenga la máquina. Pensemos en lo que cuesta hacer un trabajo entre un grupo de
compañeros de prácticas cuando dicho grupo no tiene dos o tres, sino 50 o 60 integrantes y, a
continuación, supongamos que la tarea es difícil de dividir, ya que para que un compañero pueda
hacer su parte del trabajo, necesita resultados de otro compañero. O supongamos que el trabajo
es tan pequeño que se tarda más tiempo en dividirlo y juntarlo, que en que una sola persona lo
haga completamente.
5
MULTIPROCESADORES
EL SOFTWARE EN LOS MULTIPROCESADORES
Otro riesgo para las prestaciones se produciría cuando hay que emplear demasiado tiempo en
comunicarse con sus compañeros en lugar de trabajar en su parte de la tarea. Podemos extraer
algunas conclusiones de esta analogía con la programación paralela, los desafíos incluyen la
planificación de las tareas, el equilibrio de la carga, el tiempo de sincronización y la sobrecarga
de las comunicaciones entre colaboradores. El reto es todavía más difícil cuantos más
compañeros participen en la resolución de la actividad y cuantos más procesadores estén
disponibles para la programación paralela.
No nos olvidemos de lo visto sobre la ley de Amdahl. Esta ley nos recuerda que incluso
las partes pequeñas de un programa deben paralelizarse si se quiere hacer un buen
uso de los muchos núcleos disponibles.
División
Y dividirlo cumpliendo unas premisas, como por ejemplo que la división sea equitativa en
tiempo y complejidad, ya que si no, un compañero puede terminar más tarde que los
demás, lo que la mejora es poco significativo.
Técnicas:súper escalar y ejecución fuera de orden
técnicas disminuyen
Estas
reescritura de programas para
multiprocesadores, porque sin que los programadores tengan que hacer nada más, sus
programas secuenciales se ejecutarán más rápido en los nuevos computadores.
la demanda de
6
Escalado fuerte-débil
MULTIPROCESADORES
EL SOFTWARE EN LOS MULTIPROCESADORES
En un multiprocesador, es más difícil obtener buenas aceleraciones manteniendo el tamaño del
problema fijo que incrementando el tamaño del problema. Esto nos permite introducir dos
términos que describen dos formas diferentes de escalado.
Escalado fuerte
Hace referencia a la aceleración con un tamaño de
problema fijo
Escalado débil
Implica que el
proporcionalmente al número de procesadores.
tamaño del problema aumenta
Supongamos que el tamaño del problema, M, es el conjunto de trabajo en memoria principal y
que el número de procesadores de que se dispone es P. Entonces, la memoria por procesador
en escalado fuerte es aproximadamente M/P y, en escalado débil, es aproximadamente M.
Dependiendo del tipo de aplicación, se puede defender cualquier tipo de escalado. Por ejemplo,
los programas de pruebas benchmark de una base de datos crédito-débito requieren que el
número de cuentas de clientes aumente para aumentar el número de transacciones por minuto.
El argumento utilizado reside en lo absurdo que resulta pensar que un número dado de clientes,
de repente, va a utilizar los cajeros automáticos 100 veces al día simplemente porque el banco
tiene un computador más rápido. En lugar de esto, si se quiere demostrar que el sistema puede
multiplicar por 100 el número de transacciones por minuto, se debe hacer el experimento
multiplicando por 100 el número de clientes.
Este último ejemplo muestra la importancia del equilibrio de la carga. A continuación, puedes
encontrar las definiciones correspondientes a estos dos tipos de escalado.
Escalado fuerte
Aceleración obtenida en un multiprocesador sin
aumentar el tamaño del problema.
Escalado débil
Aceleración obtenida en un multiprocesador aumentando
el tamaño del problema proporcionalmente al número de
procesadores.
7
MULTIPROCESADORES
EL SOFTWARE EN LOS MULTIPROCESADORES
Consideraciones de diseño de un sistema operativo de multiprocesador
Un sistema operativo de SMP (Symmetric Multiprocessor) gestiona los procesadores y demás
recursos del computador para que el usuario perciba un solo sistema operativo controlando los
recursos del sistema. De hecho, el computador debería parecer un sistema monoprocesador con
multiprogramación.
Tanto en un sistema multiprocesador como en un sistema monoprocesador, pueden estar activos
varios trabajos o procesos al mismo tiempo, y es responsabilidad del sistema operativo planificar
su ejecución y asignar los recursos.
Un usuario puede desarrollar aplicaciones que utilicen varios procesos o varios hilos dentro de un
proceso sin tener en cuenta si se dispone de uno o de varios procesadores.
Así, un sistema operativo de multiprocesador debe proporcionar toda la funcionalidad
de un sistema operativo con multiprogramación y, además, las características
adicionales que permitan utilizar varios procesadores.
Entre los puntos clave de diseño están los siguientes.
8
Procesos concurrentes
simultáneos
MULTIPROCESADORES
EL SOFTWARE EN LOS MULTIPROCESADORES
Las rutinas del sistema operativo deben ser reentrantes
para permitir que varios procesadores puedan ejecutar
simultáneamente el mismo código IS.
Con varios procesadores ejecutando la misma o distintas
partes del sistema operativo, las tablas y las estructuras
de gestión del sistema operativo deben manejarse
apropiadamente para evitar bloqueos u operaciones no
válidas.
La planificación puede realizarla cualquier procesador,
por lo que deben evitarse los conflictos.
Planificación
El planificador debe asignar los procesos preparados a
los procesadores disponibles.
Sincronización
Puesto que hay varios procesos que pueden acceder a
espacios de memoria y a recursos de E/S compartidos,
debe proporciona
Comentarios de: Multiprocesadores - El software en los multiprocesadores (0)
No hay comentarios