# data[].attributes.headline
4.1 Aspectos básicos de la computación paralela

# data[].attributes.subject
4.1 Aspectos básicos de la computación paralela

# data[].attributes.body
La computación paralela es una forma de cómputo en la que muchas instrucciones se ejecutan simultáneamente, operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas.

Ver video

# data[].attributes.attachment_caption
Este método está “estancado” desde el establecimiento de las arquitecturas de 32 y 64 bits

# data[].attributes.body
>Paralelismo a nivel de bit:

Se habla de paralelismo al nivel de bit, cuando se aumenta el tamaño de la palabra del procesador (tamaño de la cadena de bits a procesar). Este aumento reduce el número de instrucciones que tiene que ejecutar el procesador en variables cuyos tamaños sean mayores a la longitud de la cadena.

# data[].attributes.attachment_caption
Se observa el procesamiento de dos instrucciones sin pipeline, tomando un tiempo de 8 ciclos, y con pipeline reduciendo este tiempo a solo 5 ciclos.

# data[].attributes.body
>Paralelismo a nivel de instrucción:

Este tipo de paralelismo consiste en cambiar el orden de las instrucciones de un programa y juntarlas en grupos para posteriormente ser ejecutados en paralelo sin alterar el resultado final del programa.

# data[].attributes.body
>Paralelismo a nivel de datos:

Cada procesador realiza la misma tarea sobre un subconjunto independiente de datos.
Ej: Dos granjeros se dividen el área de césped a podar.

El caso clásico de paralelismo de datos, es el cálculo de pi por partes usando el método de monte carlo:

# data[].attributes.body
>Paralelismo a nivel de tareas:

Cada hilo realiza una tarea distinta e independiente de las demás.
Ej: Un granjero poda el césped, el otro cosecha.

# data[].attributes.headline
4.3 Sistemas de memoria compartida: Multiprocesadores

# data[].attributes.subject
4.3 Sistemas de memoria compartida: Multiprocesadores

# data[].attributes.body
La memoria compartida por todos los procesadores y accesible desde cualquiera. Descompuesta en varios módulos para permitir el acceso concurrente de varios procesadores Cada procesador debe tener un espacio de direccionamiento suficientemente amplio como para poder direccionarla completamente. Multiprocesador con un sistema de memoria compartida en el cual el tiempo de acceso varía dependiendo de la ubicación de la palabra de memoria.

# data[].attributes.body
Los procesos comparten un espacio de memoria común

Escriben y leen de manera asíncrona

No es necesario especificar cómo se comunican los datos entre las tareas

Se usan semáforos o locks para controlar el acceso a la memoria compartida

# data[].attributes.body
Esta arquitectura se basa en múltiples procesadores con su propia memoria física privada, las tareas pueden operar solo con información local y se necesita de la comunicación para obtener información remota, a través también de procesadores remotos Hay cuatro implementaciones que pueden servir como ejemplo conocidas para esta arquitectura tales como: múltiples sistemas operativos, Middlewares, clusters y grids.

# data[].attributes.body
También llamado modelo de paso de mensajes

requieren una red de comunicación para conectar la memoria entre procesadores

Las tareas intercambian datos por medio del paso y recepción de mensajes

Los procesadores tienen su propia memoria local. Las direcciones de memoria en un procesador no se asignan a otro procesador, por lo que no hay concepto de espacio de direcciones global en todos los procesadores.