Este apartado se refiere al paralelismo dentro de un ordenador coordinando múltiples procesadores.
Un programa paralelo ejecuta simultáneamente múltiples procesos o tareas para resolver un problema. Las tareas se dividen en subtareas aplicando "divide y vencerás", esto se llama "programación paralela".
La programación paralela incrementa el número de procesadores en una red de interconexión que los une.
Los factores más influyentes de los sistemas paralelos son:
- Incremento de requirimientos de procesamiento.
- Límite en las arquitecturas secuenciales.
- Las tecnologías de procesamiento paralelo y de redes de comunicaciones están listas para su uso en producción.
Arquitecturas hardware para el procesamiento paralelo
- Único flujo de instrucciones, único flujo de datos (Single-Instruction, Single-Data, SISD): máquina con un único procesador que ejecuta un único flujo de instrucciones sobre un único flujo de datos. Instrucciones secuenciales. La mayor parte de ordenadores comerciales son SSID, las instrucciones y los datos se almacenan en la memoria principal y la velocidad del procesador está limitada por la velocidad a la que se pueden transferir los datos internamente.
- Único flujo de instrucciones, múltiples flujos de datos (Single-Instruction, Multiple-Data, SIMD): máquina multiprocesador de ejecutar el mismo de instrucciones en todas las CPUs pero cada una con un flujo de datos distinto. Indicadas para cálculos científicos.
- Múltiples flujos de instrucciones, único flujo de datos (Multiple-Instruction, Single-Data, MISD): máquina multiprocesador capaz de ejecutar diferentes flujos de instrucciones en cada CPU pero todos ellos se ejecutan sobre el mismo flujo de datos.
- Múltiples flujos de instrucciones, múltiples flujos de datos (Múltiple-Instruction, Multiple-Data, MIMD): multiprocesador capaz de realizar múltiples cálculos sobre múltiples datos. MIND se dividen en máquinas de memoria compartida o memoria distribuida. En memoria compartida todas las CPUs están conectadas a una memoria principal global (sistemas multiprocesadores altamante acoplados). En memoria distribuida cada CPU tiene su propia memoria principal local (sistemas multiprocesadores débilmente acoplados).