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