I. Arquitecturas paralelas y niveles de paralelismo
1.1. Niveles y tipos de paralelismos implementados en la arquitectura
El computador es un sistema complejo tanto en hardware y en software. Para su estudio se realizan diferentes niveles de abstracción.
- Nivel de Circuito Electrónico
- Nivel de Transferencia de Registros
- Nivel del Sistema Computador
En cada uno de estos niveles se implementa el paralelismo. Ademas por encima estaría el Nivel de Sistema Operativo, que actúa como interfaz entre el hardware y el software
Cada uno de los componentes visibles en un nivel se puede estudiar aisladamente como un sistema que procesa entradas.
Para incrementar las prestaciones se aprovecha el paralelismo explicito o implícito en las entradas.
Hay dos alternativas:
- Replicar componentes del sistema
- Segmentar el uso de los componentes
Los computadores paralelos , son arquitecturas paralelos que implementan paralelismo a nivel de sistema computador, replican para ello los procesadores.
Niveles y Tipos de paralelismo IMPLÍCITO en una APLICACIÓN
Podemos
clasificar los niveles de paralelismo de una aplicación en función del nivel de
abstracción dentro del código secuencial de un programa en el que podemos
encontrar implícito el paralelismo.
Observemos la siguiente imagen
Cuando
hablamos de código secuencial, nos referimos a código escrito en lenguaje
imperativo
Código
secuencial es una descripción estructurada
Dentro del
código secuencial se puede encontrar paralelismo implícito en los siguientes
niveles de abstracción:
-
Nivel
de bucles (bloques)
A este
paralelismo que se puede detectar en distintos niveles de un código secuencial,
se le ha denominado paralelismo funcional. Por otra parte, nos encontramos con el paralelismo de datos y el paralelismo de tareas.
El
paralelismo de tareas (task-
parallelism)
Se encuentra
extrayendo, generalmente de la definición de la aplicación, la estructura
lógica de funciones de la aplicación.
En esta estructura, los
bloques son funciones, y las conexiones entre ellos reflejan el flujo de datos
entre funciones. Analizando esta estructura se puede encontrar paralelismo ente
las funciones. Equivaldría al paralelismo a nivel de función dentro del código
de alto nivel.
El
paralelismo de datos (data- parallelism)
Por su parte, se
encuentra implícito en las operaciones con estructuras de datos (vectores y
matrices). Se puede extraer de una representación matemática de las operaciones
de la aplicación. Las operaciones vectoriales y matriciales engloban múltiples
operaciones con datos escalares, que se puede realizar en paralelo. Las operaciones
con vectores y matrices se implementan mediante bucles. Por tanto, el
paralelismo de datos está relacionado con el paralelismo a nivel de bucle.
El paralelismo puede también clasificarse en función de la granularidad o magnitud de la tarea (número de operaciones)
3.1. Unidades de ejecución: instrucciones, hebras,procesos
El hardware se encarga de gestionar la ejecución de las instrucciones. A nivel superior, el sistema operativo se encarga de gestionar la ejecución de unidades de mayor granularidad, procesos y hebras.
1.4. Relación entre paralelismo implícito, explicito y arquitecturas paralelas
Se relacionan los distintos niveles en los que se encuentra el paralelismo implícito en el código, con los niveles en los que se puede hacer explícito y con arquitecturas paralelas que aprovechan el paralelismo.
1.5. Detección, utilización, implementación y extracción del paralelismo
En la siguiente figura se relaciona el agente que extrae el paralelismo implícito en los diferentes niveles del código de la aplicación, con los niveles en los que se hace explícito y las arquitecturas que los aprovechan.