Programa de Arquitecturas Avanzadas

 

1.    Introducción a las arquitecturas avanzadas

1.1.  Clasificación de Flynn

1.2.  Otras clasificaciones

1.3.  Introducción al paralelismo

1.3.1.     Fuentes de paralelismo

1.3.2.     El paralelismo de control

1.3.3.     El paralelismo de datos

1.3.4.     El paralelismo de flujo

2.    El rendimiento de los sistemas paralelos

2.1.  Magnitudes y medidas del rendimiento

2.1.1.     Perfil del paralelismo

2.1.2.     Rendimiento medio armónico. Ley de Amdahl

2.1.3.     Eficiencia, redundancia, utilización y calidad

2.2.  Modelos del rendimiento del speed-up.

2.2.1.     Ley de Amdahl, limitación por carga de trabajo fija

2.2.2.     Ley de Gustafson, limitación por tiempo fijo

2.2.3.     Modelo del speed-up limitado por la memoria fija

2.3.  Modelos del rendimiento según la granularidad

2.3.1.     Modelo básico: 2 procesadores y comunicaciones no solapadas

2.3.2.     Extensión a N procesadores

2.3.3.     Otras suposiciones para las comunicaciones

3.    Procesadores vectoriales

3.1.  Procesador vectorial básico

3.1.1.     Arquitectura vectorial básica

3.1.2.     Tiempo de ejecución vectorial

3.1.3.     Unidades de carga/almacenamiento vectorial

3.2.  Memoria entrelazada

3.2.1.     Acceso concurrente a memoria (acceso C)

3.2.2.     Acceso simultáneo a memoria (acceso S)

3.2.3.     Memoria de acceso C/S

3.2.4.     Rendimiento de la memoria entrelazada y tolerancia a fallos

3.3.  Longitud del vector y separación de elementos

3.3.1.     Control de la longitud del vector

3.3.2.     Separación de elementos en el vector

3.4.  Mejora del rendimiento de los procesadores vectoriales

3.4.1.     Encadenamiento de operaciones vectoriales

3.4.2.     Sentencias condicionales

3.4.3.     Matrices dispersas

3.5.  El rendimiento de los procesadores vectoriales

3.5.1.     Rendimiento relativo entre vectorial y escalar

3.5.2.     Medidas del rendimiento vectorial

3.6.  Historia y evolución de los procesadores vectoriales

4.    Procesadores matriciales

4.1.  Organización básica

4.2.  Estructura interna de un elemento de proceso

4.3.  Instrucciones matriciales

4.4.  Programación

4.4.1.     Multiplicación SIMD de matrices

4.5.  Procesadores asociativos

4.5.1.     Memorias asociativas

4.5.2.     Ejemplos de procesadores asociativos

5.    Generalidades sobre las redes de interconexión

5.1.  Definiciones básicas y parámetros que definen las redes de interconexión

5.1.1.     Topología, control de flujo y encaminamiento

5.2.  Clasificación de las redes de interconexión

5.2.1.     Redes de medio compartido, directas, indirectas e híbridas

6.    Multiprocesadores con memoria compartida

6.1.  Redes de interconexión de multiprocesadores

6.1.1.     Redes de medio compartido. Buses

6.1.2.     Caracterización de las redes indirectas

6.1.3.     Red de barra cruzada

6.1.4.     Redes Multietapa (MIN)

6.1.5.     Clasificación de las redes MIN

6.1.6.     Encaminamiento en redes MINs

6.1.7.     Resumen de las redes indirectas y equivalencias

6.2.  Modelos de consistencia de memoria

6.2.1.     Consistencia fuerte

6.2.2.     Consistencia débil

6.2.3.     Implementación y rendimiento de la consistencia relajada

6.3.  Coherencia de las cachés

6.3.1.     El problema de la coherencia de las cachés

6.3.2.     Direcciones físicas y virtuales, problema del aliasing

6.3.3.     El problema de la falsa compartición

6.4.  Esquemas de coherencia de cachés para memoria principal

6.4.1.     Protocolos de sondeo o snoopy

6.4.2.     Rendimiento de los protocolos de coherencia

6.5.  Esquemas de coherencia para memoria distribuida

6.5.1.     Protocolos basados en directorio

6.5.2.     Rendimiento de los protocolos basados en directorio

6.6.  Sincronización

6.6.1.     Cerrojos

6.6.2.     Barreras

6.6.3.     Rendimiento

7.    Multicomputadores

7.1.  Redes de interconexión para multicomputadores

7.1.1.     Topologías estrictamente ortogonales

7.1.2.     Otras topologías directas

7.1.3.     Conclusiones sobre las redes directas

7.2.  La capa de conmutación o control de flujo (switching)

7.2.1.     Elementos básicos de la conmutación

7.2.2.     Conmutación de circuitos

7.2.3.     Conmutación de paquetes

7.2.4.     Conmutación Virtual Cut-Through (VCT)

7.2.5.     Conmutación de lombriz (Wormhole)

7.2.6.     Conmutación Cartero Loco

7.2.7.     Canales virtuales

7.2.8.     Mecanismos híbridos de conmutación

7.2.9.     Comparación de los mecanismos de conmutación

7.3.  La capa de encaminamiento (routing)

7.3.1.     Clasificación de los algoritmos de encaminamiento

7.3.2.     Algoritmos deterministas

7.3.3.     Algoritmos parcialmente adaptativos

7.3.4.     Algoritmos completamente adaptativos

7.3.5.     Comparación de los algoritmos de encaminamiento

8.    Otras arquitecturas avanzadas

8.1.  Arquitecturas de flujo de datos

8.1.1.     Grafo de flujo de datos

8.1.2.     Estructura básica de un computador de flujo de datos

8.2.  Otras arquitecturas