Departamento: Informática
Área de conocimiento: Arquitectura y Tecnología de Computadores
Curso: 3º de Ingeniería Técnica en Informática de Sistemas y de Gestión.
Cuatrimestre: 2º.
Tipo de asignatura: optativa.
Teoría:
Lunes, martes y miércoles de 12h a 13h.
Aula 103.
Edificio de
Tecnologías de la Información y
Telecomunicaciones.
Prácticas:
Miércoles de 16 a 18h.
Laboratorio 104. Edificio de
Tecnologías de la Información y
Telecomunicaciones.
Tutorķas:
Lunes de 11 a 12 h. y de 13 a 14h., martes de 10 a 12h. y de 13 a 14h. y miércoles de 13 a 14h.
Despacho 2D062. Edificio de
Tecnologías de la Información y
Telecomunicaciones.
Se supone que el alumno que aborda esta asignatura dispone de unos conocimientos elementales sobre estructura de computadores.
El objetivo de esta asignatura es dar a conocer arquitecturas diferentes a las clásicas, especialmente en el ámbito de las arquitecturas paralelas. Se estudiarán con especial interés los procesadores segmentados, los computadores vectoriales, los multiprocesadores y los multicomputadores con sus problemas asociados.
El examen ordinario se celebrará en junio y el extraordinario en septiembre.
Para aprobar la asignatura es necesario superar tanto los
créditos teóricos
como los prácticos. En caso de no superar los créditos
prácticos mediante la
presentación de los trabajos se deberá superar un examen
práctico.
A lo largo del curso se desarrollarán diferentes trabajos. Estos trabajos consistirán en la programación de algunos algoritmos, se insistirá preferentemente en la programación de algoritmos paralelos mediante paso de mensajes.
CONTENIDOS
1 Conceptos generales
1.1 Necesidad del paralelismo
1.2 Concepto de paralelismo
1.3 Limitaciones del paralelismo
1.3.1 Rendimiento de
los
computadores paralelos
1.3.2 Ley de Amdahl
1.3.3 Ley de Gustafson
1.3.4 Dependencias
1.4 Tipos de paralelismo
1.4.1 Paralelismo
implícito
1.4.2 Paralelismo explícito: clasificación de Flynn
1.5 Problemática planteada
1.6 Características de las máquinas paralelas
1.7 Aplicaciones del proceso paralelo
2 Procesadores segmentados
2.1 Introducción y definiciones
2.2 Rendimiento de los procesadores segmentados
2.3 Clasificación de los procesadores segmentados
2.4 Conflictos y sus tipos
2.5 Control de conflictos
2.5.1 Conflictos
estructurales
2.5.2 Conflictos por dependencias de datos
2.5.3 Conflictos de control
2.6 Procesadores segmentados y arquitectura RISC
2.7 Procesadores superescalares y supersegmentados
2.8 Segmentación en procesadores VLIW
3 Procesadores vectoriales
3.1 Introducción y definiciones
3.2 Procesamiento vectorial
3.3 Segmentación y procesadores vectoriales
3.4 Arquitectura de los procesadores vectoriales
3.5 Rendimiento de los procesadores vectoriales
3.6 Características de los lenguajes para proceso vectorial
3.7 Compiladores para procesadores vectoriales
3.8 Ejemplos reales de computadores vectoriales
3.8.1 El Cray-1 de Cray Research
3.8.2 El Cyber-205 de Control Data
3.8.3 El IBM-3090
3.8.4 El Earth Simulator
4 Redes de interconexión
4.1 Introducción .
4.2 Rendimiento de las sistemas de comunicacidn entre procesadores
4.2.1 Modelo
básico: dos
procesadores con comunicación total entre los procesos
4.2.2 Modelo extendido: n procesadores con comunicación total
entre los
procesos
4.2.3 Modelo lineal en el tiempo de comunicaciones
4.2.4 Modelo óptimo
4.2.5 Conclusiones
4.3 Características de las redes de interconexión
4.4 Elementos de conmutación (switches)
4.5 Permutaciones y funciones de intercambio
4.6 Clasificación de las redes de interconexión
4.6.1 Redes de
interconexión
estáticas
4.6.2 Redes de interconexión dinámicas
4.6.3 Resumen comparativo
4.7 Métodos de encaminamiento
4.7.1 Encaminamiento en
redes
hipercubo
4.7.2 Encaminamiento en redes omega
4.7.3 Encaminamiento en redes delta
5 La memoria en los sistemas paralelos
5.1 Organizaciones de memoria para los multiprocesadores
5.2 Memorias entrelazadas
5.2.1 Acceso S
5.2.2 Acceso C
5.2.3 Acceso C/S
5.3 Memorias tolerantes a fallos
5.4 Coherencia caché
6 Software para sistemas paralelos
6.1 Introducción
6.2 Sistemas operativos para sistemas paralelos
6.2.1
Clasificación de los
sistemas operativos multiprocesador
6.3 Detección del paralelismo
6.3.1 Grafos de flujo de datos
6.4 Modelos de programación para sistemas paralelos
6.4.1 Variables
compartidas (work
sharing)
6.4.2 Paso de mensajes
6.5 Lenguajes y librerías para la programación de sistemas paralelos
7 Máquinas tolerantes a fallos
7.1 Conceptos generales sobre tolerancia a fallos
7.2 Causas de los fallos
7.3 Caracterización de los fallos
7.4 Filosofías de diseño para combatir los fallos
7.5 Redundancia
7.5.1 Redundancia
hardware
7.5.2 Redundancia software
7.5.3 Redundancia informacional
7.5.4 Redundancia en el tiempo
7.6 Métodos de evaluación de sistemas tolerantes a fallos