Está en la página 1de 5

Procesamiento en paralelo

Un procesador en paralelo es el método mediante el cual una serie de tareas e instrucciones se


ejecutan de forma simultánea. Como cualquier trabajo en paralelo, se trata de dividir el trabajo en
trozos más simples, que actualmente solemos llamar hilos, threads o subprocesos. Cada uno de
estos subprocesos es ejecutado en uno de los núcleos del procesador de forma simultánea para
aminorar el tiempo de espera entre tarea y tarea.

A nivel industrial y de alto rendimiento tenemos no solo procesadores multinúcleo, sino clusters
de ordenadores o multi-procesadores. Estos son capaces de ejecutar tareas de gran volumen
conectados a través de la red, y son los llamados superordenadores o supercomputadoras de las
que tanto escuchamos oír por su eso en los centros de datos mundiales y para la investigación.

En nuestra casa procesadores en paralelo casi para cualquier tarea, por ejemplo, nuestros móviles
cuentan con procesadores multinúcleo capaces de ejecutar varias tareas, nuestros ordenadores
también e incluso los televisores inteligentes ya cuentan con procesadores de este tipo.

Debido a esta complejidad en la implementación, los procesadores de consumo general antes de


2005 se basaban en el aumento de frecuencia sobre un solo núcleo. En cada núcleo solo se puede
ejecutar una tarea a la vez, y además un instante después de haber terminado la tarea anterior, y
a esto le llamamos tiempo de ejecución. Esta variable es el resultado de multiplicar el número de
instrucciones por el tiempo de ejecución promedio, y el único factor que influiría sería el aumento
de frecuencia.

¿Qué problema tiene aumentar más y más la frecuencia? Pues que es un elemento directamente
proporcional al consumo, y a su vez esto influye en la temperatura generada.

Niveles de procesamiento en paralelo

En nuestro ordenador mismamente tenemos un procesador en paralelo, de hecho, tenemos varios


más, como son la GPU o el chipset aunque se dedican a otras tareas como los gráficos en el primer
caos o periféricos en otro. Existen básicamente cuatro niveles de procesador en paralelo:

Paralelización por bit


La paralelización a nivel más bajo es la que se realiza en las cadenas de bits. Toda instrucción está
formada por palabras, que en definitiva son estas cadenas de bits que transportan la información.
El contar con palabras más largas, permite añadir más contenido a la instrucción, y en
consecuencia hacer más trabajo de una sola vez. En la actualidad todos los procesadores trabajan
con palabras de 64 bits, mientras que antes permitían solo 32 bits.

Paralelización por instrucción

El siguiente nivel de procesador en paralelo radica en paralelizar instrucciones. En instrucciones sin


dependencias entre ellas se puede decir eso de “el orden de los factores no altera el producto”.
Las instrucciones se combinan en grupos para ser procesadas de forma paralela en distintas etapas
o “pipeline”.

El pipeline es la capacidad del procesador de trabajar con varias instrucciones a la vez, cada una de
ellas situadas en una etapa distinta. Cuanto nos referimos a etapas son las típicas de la
arquitectura RISC: pedir instrucción -> decodificar -> ejecutar -> acceso a memoria -> escritura que
estudiamos en asignaturas de computación o informática.
Paralelismo de datos

En este nivel lo que se pretende dividir es la entrada de datos de un programa, que trasladado a
nivel de procesador consistiría en asignar un subconjunto de datos a cada procesador o núcleo
para que ejecuten la misma secuencia de operaciones. Un ejemplo claro de esto es el trabajo con
vectores y matrices, algo muy utilizado en los procesadores gráficos en donde en aplican
operaciones similares en grandes conjuntos.

Paralelismo de tareas

Es el caso contrario a lo anterior, ya que, en este método, un programa es capaz de entregar


tareas al procesador que son totalmente distintas unas de otras para que se realicen en paralelo.
Este sería un verdadero programa paralelizado.

Tipos de procesador en paralelo

Ahora es turno de ver lo más importante, ¿qué formas hay de ejecutar tareas en paralelo? Y ya
hemos visto la más cercana y clara a nosotros: los procesadores multinúcleo, pero hay algunas
más.

Procesadores multinúcleo
Esta es la tendencia actual desde hace más de 10 años ya, concretamente desde sus inicios en
2004 como hemos comentado antes. En un procesador multinúcleo tenemos más de una unidad
de ejecución, lo que llamamos núcleos o cores. De esta forma un procesador con varios núcleos
puede ejecutar tantas instrucciones de forma paralela como núcleos tenga, y además de forma
secuencial y de distinta naturaleza entre ellas.

Pero además de esto, se une la condición de procesador superescalar antes vista, en donde cada
núcleo puede ejecutar más de una tarea en un solo ciclo de reloj. Esto se hace creando
subprocesos, hilos o threads, que es un flujo de instrucciones más simple que optimiza y
disminuye los tiempos de espera de cada núcleo. La esta tecnología se le denomina
Multithreading, y se aplica en forma de HyperThreading en Intel y SMT en AMD, creando así
procesadores con dos hilos o procesadores virtuales por cada núcleo físicos.

Multiprocesadores simétricos (SMP)

Este es el segundo caso que por lógica nos vendría a la mente si nos imaginamos dos procesadores
en paralelo. Efectivamente se trata de tener una placa o PCB en donde dos o más procesadores
idénticos entre ellos trabajan con recursos compartidos como será una memoria principal y un bus
de datos. A esto también se le llama UMA (Uniform Memory Access).
Lo bueno en este método es su escalaridad al encontrarnos con placas que soportan hasta 32
procesadores, y al hecho de tenerlo todo ubicado en un solo sistema físico. Por el contrario,
presenta una clara desventaja como es tener que compartir bus de datos, el cual debe ser
controlado y arbitrado para que esté disponible para la CPU que solicite acceso, generando
tiempos de espera en las otras unidades.

Procesadores en clúster

este es el caso que más uso tiene en el sector de supercomputación, ya que los superordenadores
más potentes del mundo trabajan con este método de procesamiento en paralelo y con el
siguiente en la lista.

Consiste en una agrupación de ordenadores a priori independientes que trabajan en colaboración.


Esto se realiza gracias a un enlace entre ellos que normalmente será mediante una red LAN de alta
velocidad, el llamado clúster Beowulf. Aquí lo ideal es que todos los ordenadores sean idénticos
para el que flujo de trabajo sea balanceado, aunque cabe la posibilidad de que sean de naturaleza
distinta.

Cuando hablamos de superordenadores que tienen miles de procesadores y decenas de terabytes


de memoria RAM, casi siempre son clústeres de este tipo

El procesamiento en paralelo es una de las implementaciones que más beneficios han traído en la
era actual, creándose verdaderos monstruos del procesamiento de información a nivel mundial. El
llamado TOP500, los ordenadores más potentes del mundo, el procesamiento en paralelo.

Pero también la mayoría de servidores de red actuales cuenta con varios procesadores en
paralelo, virtualizados o simplemente CPU con varios núcleos en su interior. Nosotros mismos
somos los mayores beneficiarios del procesador en paralelo gracias a los Intel Core, AMD Ryzen de
PC, o los procesadores de nuestros teléfonos móviles.

También podría gustarte