Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Procesamiento paralelo. Pipe-line.

No description
by

Mario Guinda Ruano

on 19 December 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Procesamiento paralelo. Pipe-line.

Procesamiento paralelo.
Pipeline. 1. Objetivos e introducción. Reseñas históricas -IBM 704 1955.

-IBM 7030 (proyecto Stretch) 1956-1961.

-CDC 6600 1964.

-VAX 8800 1987.

-RISC vs CISC .

-(MIPS vs VAX 8700) 1989.

-R4000 (Supersegmentado) 1991.

-Arq. Superescalar y VLIW actualmente. 1. Objetivos e introducción. Conceptos básicos
1º)Los múltiples procesadores suelen utilizarse en máquinas de muy altas prestaciones (y muy alto precio). Sin embargo, con arquitecturas segmentadas se consigue una muy buena mejora del rendimiento y a un coste asequible. (La traducción de pipe-line, sería algo similar a segmentación de cauce).

2º) Para mejorar la “agilidad” de procesamiento de la C.P.U se debe obtener concurrencia a nivel de la instrucción. Que, a su vez, significa poder ejecutar varias instrucciones simultáneamente con una única CPU. Este tipo de paralelismo se denomina segmentación o encadenamiento, aunque suele ser más conocido por su denominación en inglés: pipelining.

3º) Reordenación de código por parte de un compilador. A la hora de generar elcódigo máquina, el compilador organiza el código de forma que se reducen laperdida de ciclos, manteniendo la misma funcionalidad del algoritmo. (Explicado con más detalle, en el cuerpo del programa, como medida de paliar la pérdida de ciclos).

4º) Uso de hardware especializado, capaz de detectar las dependencias y activar los ‘adelantamientos’ o ‘atajos’. Un adelantamiento es una conexión entre dos fases de una pipeline para un dato recién calculado puede ser utilizado por otrainstrucción sin esperar que la otra instrucción finalice.(Explicado con más detalle, en el cuerpo del programa, como medida de paliar la pérdida de ciclos). Generalizando, el procesamiento en paralelo Pipe-line,

se centra en la mejora de velocidad del procesamiento

de las instrucciones por parte de la C.P.U. 2.Resumen (Cuerpo del Trabajo) El procesamiento paralelo aprovecha que la ejecución de una instrucción pasa por varias fases, para crear unidades físicas independientes para cada fase.


De esta forma en la misma unidad de ejecución, se pretende tener varias instrucciones ejecutándose de forma simultánea pero en fases diferentes del ciclo de instrucción. 2.Resumen (Cuerpo del Trabajo) 2.1. Características Generales El número de instrucciones que se pueden procesar, corresponde con el número, concreto, de etapas del pipe-line, sincronizado con el reloj del procesador.

Las etapas nombradas, deben tener un tamaño similar unas a otras; de esta forma se consigue no ralentizar la C.P.U.

La segmentación no mejora la velocidad de ejecución de una instrucción individualmente, de hecho la empeora. A cambio se obtiene una mayor velocidad de ejecución en un plano global.

Idealmente, la aceleración a partir de la paralelización es lineal, doblar el número de elementos de procesamiento debe reducir a la mitad el tiempo de ejecución y doblarlo por segunda vez debe nuevamente reducir el tiempo a la mitad. Sin embargo, muy pocos algoritmos paralelos logran una aceleración óptima. La mayoría tienen una aceleración casi lineal para un pequeño número de elementos de procesamiento, y pasa a ser constante para un gran número de elementos de procesamiento.
Termina cada ejecución, aproximadamente en un ciclo del reloj. 2.Resumen (Cuerpo del Trabajo) 2.1. Características Generales Las subtareas en un programa paralelo a menudo son llamadas hilos.

Los hilos a menudo tendrán que actualizar algunas variables que se comparten entre ellos. Las instrucciones entre los dos programas pueden entrelazarse en cualquier orden. Por ejemplo, el siguiente programa: 2.Resumen (Cuerpo del Trabajo) Si la instrucción 1B se ejecuta entre 1A y 3A, o si la instrucción 1A se ejecuta entre 1B y 3B, el programa va a producir datos incorrectos.

Esto se conoce como una condición de carrera. El programador debe utilizar un bloqueo (lock) para proporcionar exclusión mutua.

El bloqueo permite a un hilo de tomar el control de una variable y evitar que otros hilos la lean o escriban, hasta que la variable esté desbloqueado. 2.Resumen (Cuerpo del Trabajo) Así se garantiza la correcta ejecución del programa, el programa anterior se puede reescribir usando bloqueos: 2.Resumen (Cuerpo del Trabajo) Un hilo bloqueará con éxito la variable V, mientras que el otro hilo no podrá continuar hasta que V se desbloquee.

Esto garantiza la correcta ejecución del programa. Si bien los bloqueos son necesarios para asegurar la ejecución correcta del programa, pueden ralentizar en gran medida un programa. 2.Resumen (Cuerpo del Trabajo) 2.Resumen (Cuerpo del Trabajo) Ventajas Es una arquitectura muy natural en el paradigma de programación funcional, ya que equivale a la composición de funciones matemáticas.

Un solo computador el cual puede realizar simultáneamente operaciones de cálculos en determinadas secciones, con diferentes estadios de completitud.

Ejecución concurrente transparente al programador.

Memoria (acceso) --> accede a memoria si es necesario. Carga o almacena. 2.Resumen (Cuerpo del Trabajo) Dependencias:

Los problemas que tiene la segmentación, en relación con este procesamiento, que reducen el rendimiento del procesador son las dependencias entre instrucciones. Por ejemplo:
I: R1 = R2 + R3
I + 1: R4 = R1 + R5
La segunda instrucción utiliza como operando el resultado de la primera, por lo que tendrá que esperar a que finalice, es decir depende de ella. Esto provoca que se pierdan ciclos de CPU. A los nombrados ciclos perdidos de C.P.U, se los nombra como “burbujas”.
Además de las dependencias de datos, existe la dependencia de control, que se producepor instrucciones de salto. El pipeline comienza a ejecutar instrucciones, que luego por un salto, se tienen que descartar. El efecto negativo, es el mismo anteriormente descrito como pérdida de ciclos. 2.Resumen (Cuerpo del Trabajo) Posibles soluciones a la Dependencia: Los ciclos perdidos no se pueden reducir de una forma notable, aunque existen métodos que lo palían en cierto modo:

1. Reordenación de código por parte de un compilador. A la hora de generar el código máquina, el compilador organiza el código de forma que se reducen la perdida de ciclos, manteniendo intacto le efectividad del algoritmo que se ejecuta en el momento.
2. Uso de hardware especializado, capaz de detectar las dependencias y activarlos ‘adelantamientos*’ o ‘atajo’.

*Un adelantamiento es una conexión entre dos fases de una pipeline para un dato recién calculado puede ser utilizado por otra instrucción sin esperar que la otra instrucción finalice. 3.Conclusiones Este tipo de arquitectura es mucho más eficiente y como consecuencia resulta mucho más caro.

Este tipo de procesamientos es útil cuando lo que se pretende conseguir es procesar grandes cantidades de datos. No obstante, no resulta rentable para realizar pequeñas operaciones debido a su alto coste.

Pero debido a su alta eficiencia y velocidad, es muy recomendable utilizar este tipo de procesamiento por ejemplo en tarjetas gráficas ya que esto ayuda a implementar escenarios de operaciones típicas de renderizado. FIN Desventajas
Full transcript