viernes, 12 de abril de 2013

Procesamiento Paralelo Vs Segmentado



PROCESAMIENTO EN PARALELO
Es un proceso empleado para acelerar el tiempo de ejecución de un programa dividiéndolo en múltiples trozos que se ejecutarán al mismo tiempo, cada uno en su propios procesadores.


Fuente: William Stallings, Organización y Arquitectura de
Computadores, 5ta. ed., Capítulo 16: Procesamiento Paralelo.
La razón principal para crear y utilizar computación paralela es que el paralelismo es una de las mejores formas de salvar el problema del cuello de botella que significa la velocidad de un único procesador.
La razón de ser del procesamiento en paralelo es acelerar la resolución de un problema, la aceleración que puede alcanzarse depende tanto del problema en sí como de la arquitectura de la computadora.
CARACTERÍSTICAS
El uso de varios procesadores está motivado por consideraciones relativas a las prestaciones y/o a la fiabilidad, podemos clasificar dichos sistemas como sigue:
Multiprocesadores débilmente acoplados
Consisten en un conjunto de sistemas relativamente autónomos, en los que cada CPU dispone de su propia memoria principal y sus canales de E/S. En este contexto se utiliza frecuentemente el término multicomputador.
Procesadores de Uso Específico
Tales como un procesador de E/S. En este caso, hay un maestro, una CPU de uso general, y los procesadores de uso específico están controlados por la CPU maestra a la que proporcionan ciertos servicios.
Multiprocesadores fuertemente acoplados
Constituidos por un conjunto de procesadores que comparten una memoria principal común y están bajo el control de un mismo sistema operativo.
Procesadores paralelos
Multiprocesadores fuertemente acoplados que pueden cooperar en la ejecución en paralelo de una tarea o un trabajo.



Fuente: http://www.sites.upiicsa.ipn.mx/polilibros/portal/Polilibros/P_terminados/PolilibroFC/Unidad_IV/Unidad%20IV_4.htm
El procesamiento en paralelo se basa principalmente en Multiprocesadores fuertemente acoplados que cooperan para la realización de los procesos, aquí sus características.
  • Posee dos o más procesadores de uso general similares y de capacidades comparables.
  • Todos los procesadores comparten el acceso a una memoria global.            
  • También pueden utilizarse algunas memorias locales (privadas como la cache).     
  • Todos los procesadores comparten el acceso a los dispositivos de E/S, bien a través de los mismos canales bien a través de canales distintos que proporcionan caminos de acceso a los mismos dispositivos.
  • El sistema está controlado por un sistema operativo integrado que permite la interacción entre los procesadores y sus programas en los niveles de trabajo, tarea, fichero, y datos elementales.
VENTAJAS Y DESVENTAJAS
Existen algunos factores que trabajan en contra de la eficiencia del  paralelismo y pueden atenuar tanto la ganancia de velocidad como la ampliabilidad.
Costes de inicio
En una operación paralela compuesta por miles de proceso, el tiempo de inicio puede llegar ser mucho mayor que le tiempo real de procesamiento, lo que influye negativamente en la ganancia de velocidad.
Interferencia
Como lo procesos que se ejecutan en un proceso paralelo acceden con frecuencia a recursos compartidos, pueden sufrir un cierto retardo como consecuencia de la interferencia de cada nuevo proceso en la competencia, este fenómeno afecta tanto la ganancia de velocidad como la ampliabilidad.
Sesgo
Normalmente es difícil dividir una tarea en partes exactamente iguales, entonces se dice que la forma de distribución de los tamaños es sesgada.
El procesamiento paralelo implica una serie de dificultades a nivel programación de software, es difícil lograr una optimización en el aprovechamiento de los recursos de todas las CPU con el que se esté trabajando sin que se formen cuello de botella. En muchas de las ocasiones no es posible el trabajar con equipos multiprocesadores dado el elevado costo que este representa, así que solo se dedica a ciertas áreas de investigación especializada o proyectos gubernamentales o empresariales.
El procesamiento en paralelo ejecuta procesos en donde cada procesador se encarga de uno u otro y aceleran de esta forma el cálculo.

SEGMENTACION (Pipelining)
La velocidad de ejecución de los programas depende de muchos factores. Una forma de aumentar las prestaciones es utilizar una tecnología de circuitos más rápida para construir el procesador y la memoria principal. Otra posibilidad es reorganizar el hardware para que se pueda realizar más de una operación al mismo tiempo. De esta forma se incrementa el número de operaciones realizadas por segundo aunque no cambie el tiempo necesario para realizar una operación determinada.
La segmentación de cauce es una forma particularmente efectiva de organizar la actividad concurrente de un computador. La idea básica es muy simple. Se encuentra con frecuencia en las fábricas donde la segmentación de cauce es comúnmente conocida como fabricación o montaje en cadena.
Puede considerarse entonces, la idea del montaje en cadena en un computador como se observa en la siguiente figura.

Procesamiento segmentado de instrucciones.


 Fuente: https://sites.google.com/site/mimateria20/pipelining

En resumen, las unidades de captación de la figura 1.b constituyen un cauce de dos etapas donde se procesa una instrucción cada ciclo. El buffer B1 entre ambas se necesita para almacenar la información que se pasa de una etapa a la siguiente. Este buffer se carga con una nueva información al final de cada ciclo de reloj. Para el ejemplo anterior se dividió la instrucción en dos etapas, pero también es posible dividirla en más etapas. Si fueran cuatro, dichas etapas podrían ser las siguientes:
  • F Captación (Fetch): la instrucción se lee de memoria.
  • D Decodificación: la instrucción se decodifica y se captan los operandos fuente.
  • E Ejecución: se realiza la operación especificada por la instrucción.
  • W Actualización (Write): El resultado obtenido se escribe en la dirección destino.
La segmentación mejora el rendimiento incrementando la productividad de las instrucciones, en contraposición a la disminución del tiempo de ejecución de una instrucción individual, pero la productividad de las instrucciones es la métrica importante porque los programas reales ejecutan billones de instrucciones.
La segmentación es una técnica que explota el paralelismo entre las instrucciones en un flujo secuencial de instrucciones. Tiene la ventaja sustancial de que puede ser invisible al programador.
Los registros segmentados (buffers) que separan cada etapa de la segmentación. Están etiquetados por las etapas que separan; por ejemplo, el primero está etiquetado como IF/ID porque separa las etapas de busqueda de la instrucción y decodificación de la instrucción. Estos registros deben ser lo suficientemente grandes para almacenar todos los datos correspondientes a las líneas que van a través de ellos. El registro IF/ID debe ser de 64 bits porque debe contener la instrucción de 32 bits buscada en memoria y la dirección incrementada de 32 bits del PC.

BIBLIOGRAFIA
William Stallings, Organización y Arquitectura de Computadores, 5ta. ed., Capítulo 16: Procesamiento Paralelo. 
https://sites.google.com/site/mimateria20/pipelining
http://www.sites.upiicsa.ipn.mx/polilibros/portal/Polilibros/P_terminados/PolilibroFC/Unidad_IV/Unidad%20IV_4.htm

No hay comentarios:

Publicar un comentario