Você está na página 1de 4

El procesamiento en paralelo

Por: Liliana Rodrguez


lrodrigueza@unipanamericana.edu.co
Junio de 2015
Un procesador se considera ms poderoso, en la medida en que procese un mayor
nmero de instrucciones por unidad de tiempo. Cada instruccin requiere cuatro etapas:
captacin, decodificacin, ejecucin y almacenamiento del resultado, las cuales se
realizan en un tiempo determinado por la base de tiempos, que para efectos prcticos es
lo mismo que un reloj. Los dispositivos lgicos secuenciales, como los procesadores,
las unidades aritmtico lgicas, entre otros, requieren el reloj para producir un cambio
de estado en sus terminales. Por tal motivo, la velocidad del reloj es un factor
determinante en la capacidad de procesamiento. Gracias a la evolucin en la generacin
de pulsos a altas velocidades (del orden de los GHz) se hizo posible que los
procesadores lograran ejecutar una gran cantidad de instrucciones por unidad de tiempo,
no obstante, el advenimiento de aplicaciones complejas que manejan grandes
volmenes de datos ha venido exigiendo un aumento vertiginoso en las velocidades de
procesamiento. Dado que las velocidades de los relojes tienen un lmite fsico (que
depende de los materiales de los que estn hechos), superar esta limitacin ha llevado a
desarrollar estrategias de procesamiento que permitan ejecutar ms bien mltiples
operaciones en simultnea que es lo que se conoce como procesamiento en paralelo.
Para hacer esto, el procesador se provee de un sistema planeador, que permite iniciar la
ejecucin de varias instrucciones en diferentes momentos del ciclo de reloj
(supersegmentacin), como sucede en una tubera por la que se arroja la basura
(pipeline) una instruccin se ejecutar una seguida de otra pero nada impide que lleguen
al tiempo al final de la tubera. La situacin ms simple sucede cuando cuatro
instrucciones se encuentran en ejecucin simultnea en un mismo procesador, slo que
mientras una va en el proceso de almacenamiento, hay tres instrucciones en proceso,
respectivamente una en ejecucin, una en decodificacin y la ltima en captacin.
Para lograr esto, los chips denominados superescalares, tienen que variar el orden de la
emisin de las instrucciones a ejecutar, por lo cual puede darse el caso de que las
instrucciones finalicen tambin en forma desordenada. En algunos procesos alterar el
orden de las instrucciones altera tambin el resultado, por lo cual el procesador
superescalar debe contar con estrategias que eviten que esta situacin cause
inconsistencias en los datos.
Esta situacin ms conocida como dependencia directa, sucede al procesar en paralelo
mltiples instrucciones, que pueden llegar a ejecutar primero instrucciones que el
programador quera ejecutar despus. Para superar esto, la implementacin superescalar
implementa la tcnica de renombramiento de registros, esto es, usar ms posiciones de
memoria para ejecutar un proceso, con lo cual se busca evitar que versiones modificadas
de una variable sean usadas errneamente por diversas instrucciones, otra tcnica
consiste en la deteccin temprana de las dependencias directas, lo que supone crear un
hardware capaz de decodificar las instrucciones y determinar el orden adecuado en que
las mismas deben suceder (ventana de ejecucin), tambin esta la prediccin de saltos,
en la que el procesador calcula las instrucciones que siguen al salto mucho antes de que
ste suceda, por ltimo, esta la evaluacin de la latencia de una instruccin, en este
caso, al decodificar la instruccin se determina si esta requiere una espera debido a que
depende de otro hardware y entonces aprovechar el tiempo latente para ejecutar otras
instrucciones.

Adems de las dependencias directas, puede existir un conflicto de recursos, esto es una
pugna entre varias instrucciones por escribir en una memoria (principal, registro o
cach), por usar el bus o la ALU. Para evitar esto, el diseador de procesadores hace
uso de la multiplicidad de recursos, esto es, en lugar de tener una ALU se fabrica el chip
con dos o ms de ser necesario.
Estos avances tecnolgicos, tienen tambin un lmite, ya que implican la fabricacin de
circuitos muy complejos que consumen niveles considerables de energa. Por lo cual se
implementan soluciones de software que aprovechan de manera ms eficiente el
paralelismo de instrucciones logrado en hardware, para llevarlo a un nivel superior, el
paralelismo de hilos (threads). La divisin de un proceso, programa o aplicativo en
numerosos hilos (segmentos de cdigo que ejecutan tareas simples) que pueden ser
ejecutados de manera independiente, es una aplicacin del concepto de dividir una tarea
compleja en tareas mas sencillas para lograr su ejecucin. Un hilo es un conjunto de
instrucciones a las cuales se les dedican recursos (procesador y memoria), para su
ejecucin gracias a la duplicidad de recursos muchos hilos pueden correrse en
simultnea con lo que la ejecucin de un programa puede hacerse de una manera ms
rpida y as los tiempos de ejecucin se reducen notablemente.
En resumen, la ejecucin en paralelo a nivel de instrucciones, consiste en partir de un
programa con una secuencia lineal, el cual se transforma en un flujo dinmico que luego
de evaluar dependencias y predecir saltos, permitir crear ventanas de ejecucin, en
donde las instrucciones decodificadas estarn listas para ejecutarse tan rpido como sus
operandos sean captados de la memoria o del usuario. Se ejecutan en forma
desordenada, con resultados que pueden replicarse en diferentes variables para asegurar
la consistencia de la informacin, finalmente lo resultados se almacenarn en forma
ordenada garantizando que el algoritmo sea ejecutado siendo fiel a su versin original.
Lo anterior se puede aplicar a un procesador que lee instrucciones y datos de una nica
memoria (SISD - Single Instruction Single Data) un ejemplo de esta arquitectura son los
monoprocesadores. No obstante, se ha propuesto una arquitectura que no slo duplique
los recursos, sino que implique mltiples procesadores accediendo a mltiples conjuntos
de datos (MIMD - Multiple Intructions Multiple Data), esta arquitectura es la
implementada en los dispositivos ms conocidos como multi-core.
Un ejemplo de esta ltima arquitectura son los SMP (Simetric Multiprocessing), esta
arquitectura consiste en el uso de mltiples procesadores, trabajando en forma
simultnea y comunicndose a travs de una memoria compartida, asegurando que el
tiempo de acceso a memoria para cada procesador es aproximadamente el mismo.
Los SMP generalmente se conforman de dos procesadores superescalares que tienen una
memoria cach de tipo L1 de 256 kBytes, otra de tipo L2 de 32 MBytes con la
posibilidad de expansin hasta 256 GBytes que a su vez se comunica a travs de un bus
directo con los perifricos. En el SMP por lo general, cada procesador tiene su propia
ALU.
Dentro de las ventajas que tiene el SMP, estn: mayor velocidad de ejecucin, puesto
que adems del paralelismo de instrucciones, tambin se pueden procesar programas
enteros en paralelo; disponibilidad, hay procesadores de contingencia que evitan que el
sistema deje de funcionar en caso de daarse uno de los procesadores. El sistema puede
mejorarse aadiendo ms procesadores, el usuario puede determinar cuantos
procesadores adquirir en funcin de la relacin costo beneficio y en dependencia de los
recursos econmicos con los que cuente.

Los chips tienen asignadas secciones independientes de memoria y comparten una


porcin para el intercambio de datos. La informacin, se comparte a travs de un bus de
tiempo compartido, lo cual significa que cada procesador puede tomar el control del bus
por un periodo de tiempo durante el cual los otros procesadores respetan el turno y estn
listos para contender por el bus tan pronto como este se desocupe. Esto tiene como
ventaja una estructura simple que permite la conexin de nuevos dispositivos que
compartan el bus (como memorias, dispositivos E/S o mas procesadores), pero tiene
como inconveniente el aumento de los tiempos de acceso a memoria, lo cual se
soluciona con la cach interna. El principal problema que tiene este tipo de
arquitecturas es la coherencia de la cach, esto es, que los datos contenidos en la cach
sean una fiel imagen de los datos contenidos en la memoria principal, por lo cual se
deben implementar algoritmos que aseguren que la cach en cada procesador contenga
datos siempre actualizados. Para evitar inconsistencias en los datos presentes en una
cach, estos clasifican en cuatro estados posibles los cuales requieren medidas
especiales de actualizacin, los estados son:
Modificado (Modified): El valor contenido en la cach difiere del valor existente en
memoria principal.
Exclusivo (Exclusive): El valor de la cach y el de memoria principal coinciden y este
valor no est presente en otra cach.
Compartido (Shared): El contenido de la cach y la memoria principal coinciden y
puede estar presente en mas de una cach.
No vlido (Invalid): El dato contiene datos no vlidos.
El controlador de sistema, debe revisar constantemente el estado de cada dato en la
cach. As si este est modificado, debe hacer las actualizaciones pertinentes en
memoria principal para garantizar la consistencia, pasar a estado exclusivo, si es el
nico cach que est usando el dato o pasar a estado compartido si otras cachs estn
usando la misma informacin. Este protocolo se conoce con el nombre de protocolo
MESI.
Una versin a mayor escala del procesamiento paralelo sucede con el procesamiento
distribuido en el que se interconectan computadores completos por medio de una red
LAN de alta velocidad. Los clusters o grupos de trabajo conformados con estos
computadores, tienen una capa de software intermedia que gestiona las tareas
denominada middleware. Gracias a este software el usuario no se percata que est
usando varios computadores, adems le permite a los programas compartir variables,
que incluso se podrn acceder de manera remota, as como tambin permitir hacer uso
de cualquier recurso de E/S (entrada/Salida), haciendo en lo posible un uso equitativo de
las mquinas. Una de las grandes ventajas del cluster es el uso de computadores que se
encuentran incluso en el otro lado del mundo, as si una mquina de Amrica Latina
usara una mquina en Asia para desarrollar alguna tarea podra aprovechar que sta se
encuentra disponible a causa de los usos horarios contrarios que presentan estas
regiones.
El procesamiento paralelo, como se ve es un concepto cotidiano que provoc grandes
cambios en el concepto del hardware y el software y que permite hoy por hoy realizar
tareas que hace apenas hace unos aos eran imposibles por su alto costo computacional
y requeran demasiado tiempo para su ejecucin.
REFERENCIAS
Romero, J. (2013) Segmentacin. Recuperado de: http://geneura.ugr.es/~gustavo/ec/
Recuperado en: junio de 2015.

Stallings, W. (2007) Organizacin y arquitectura de Computadores. Pearson. 7ed.

Você também pode gostar