UNLP
Planilla de Actividades Curriculares
Código: E0226
Arquitectura de Computadores II
Última Actualización de la Asignatura: 09/05/2014

« Volver a asignaturas Carrera:     cursada el año:  , en el  Semestre  
Ver en cátedras »


CARRERAS PARA LAS QUE SE DICTA

Carrera Plan Carácter Cantidad de Semanas Año Semestre
03024 - Ingeniería Electrónica 2002 Optativa
Totales: 0
Clases:
Evaluaciones:
5to Desde el 9º  info
-

CORRELATIVIDADES
Ingeniería Electrónica - Plan 2002
PARA CURSAR PARA PROMOCIONAR
(E0225) Arquitectura de Computadores I
(E0225) Arquitectura de Computadores I

INFORMACIÓN GENERAL 

Área: Sistemas Digitales y de Computadores
Departamento: Electrotecnia

Ingeniería Electrónica - 2002 plegar-desplegar

Tipificación: Tecnologicas Aplicadas

CARGA HORARIA

HORAS CLASE
TOTALES: 96hs SEMANALES: 6 hs
TEORÍA
-
PRÁCTICA
-
TEORÍA
6 hs
PRÁCTICA
0 hs

FORMACIÓN PRÁCTICA
Formación Experimental
12 hs
Resol. de Problemas abiertos
16 hs
Proyecto y Diseño
0 hs
PPS
0 hs

TOTALES CON FORMACIÓN PRÁCTICA: 124 hs

HORAS DE ESTUDIO ADICIONALES A LAS DE CLASE (NO ESCOLARIZADAS)
TEORÍA

-

PRÁCTICA

-


PLANTEL DOCENTE

Profesor Adjunto - Ordinario, Dedicación Exclusiva  
Ing.Veiga, Alejandro Luis   mail alejandro.veiga@ing.unlp.edu.ar

Jefe de Trabajos Prácticos - Ordinario, Dedicación Simple  
Ing.Puga, Gerardo Ludovico   mail gerardo.puga@ing.unlp.edu.ar

Ayudante Diplomado - Ordinario, Dedicación Simple  
Ing.Alippi, Eduardo Luis Francisco   mail elfalippi@yahoo.com

OBJETIVOS

Esta materia introduce conceptos de arquitectura y organización de computadores que son fun-damentales para asimilar las características de esos sistemas y tener una idea clara de los factores que influyen sobre su rendimiento estimado en base a velocidad de procesamiento y productividad. Parte de los conocimientos adquiridos anteriormente sobre monoprocesadores, para ampliarlos en la medida necesaria con otros temas tales como los fundamentos de segmentación ("pipelining") y las arquitecturas más recientes que se basan en ellos. Todo ello conduce también a otro objetivo impor-tante: transmitir al alumno los conocimientos básicos sobre arquitecturas paralelas, sus diferentes tipos y cualidades esenciales.

PROGRAMA SINTÉTICO

-Rendimiento del computador: velocidad de procesamiento y productividad. Modos de mejorarlo-Procesamiento segmentado (en "pipeline"): propiedades y limitaciones.-Arquitecturas RISC: origen, evolución y avances derivados de las mismas. -Otros perfeccionamientos del monoprocesador: arquitecturas "super-pipeline" y superescalares.-Conceptos generales de procesamiento en paralelo. Clasificación de arquitecturas paralelas.-Computadores vectoriales en "pipeline" y computadores matriciales ("array processors")-Arquitecturas paralelas MIMD. Multiprocesadores y multicomputadores.-Paralelismo en redes de computadores. Funciones en PVM y MPI. Bases de algoritmos paralelos.

PROGRAMA ANALÍTICO 

Año: 2017, semestre: 1

Vigencia: 01/02/2002 - Actualidad


1.- Conceptos generales sobre rendimiento del computador: Definicion basada en tiempo de ejecución y productividad. Ciclos de reloj por instrucción, y demás componentes del rendimiento. Discusión y ejemplos comparativos. Aceleración del tiempo de ejecución y formas de obtenerla: mejoras tecnológicas, mejoras en arquitectura y en organización; y empleo de la computación en paralelo. La jerarquía de las memorias y su importancia.

2.- El procesamiento en “pipeline” (segmentación): conceptos básicos, cálculo de la mejora que introduce; aceleración, rendimiento y productividad. Clasificación de sistemas en “pipeline”. Ejemplos de “pipelines” operativos y “pipelines” de instrucciones. Análisis de las limitaciones del “pipeline” real: riesgos y sus distintos tipos: por dependencia de datos, por dependencia de control, por colisiones. Análisis de casos en procesadores típicos.

3.- Computadores de Conjunto de Instrucciones Reducido (“RISC”). Consideraciones preliminares: características de ejecución de las instrucciones, uso de gran número de registros y ventanas de registros; optimización del uso de registros por medio del compilador. Arquitectura RISC y sus características. Ejemplos. “Pipelines” en arquitecturas RISC, saltos “retardados” y otros modos de mejorar el comportamiento de las transferencias de control. La controversia RISC-CISC.

4.- Otros avances en arquitectura y organización: Procesadores en Super “Pipeline” y Procesadores “Superescalares”. Recursos para mejorar las prestaciones. Ventajas y limitaciones. Consideraciones de diseño: ordenamiento de instrucciones; predicción de ramificaciones. Ejemplos típicos.

5.- Introducción a la Computación en Paralelo. Conceptos generales sobre las diversas formas de paralelismo. Niveles de procesamiento paralelo: entre tareas o programas; entre procedimientos de un mismo programa; entre instrucciones, y entre actividades elementales de una misma instrucción. Paralelismo y granularidad. Clasificación de FLYNN para sistemas computadores: análisis comparativo de los diferentes tipos.

6.- Computadores vectoriales y matriciales. Principio general, arquitectura y organización de super computadores vectoriales basados en “pipelines”. Análisis de ejemplos típicos y de su influencia sobre la evolución de las arquitecturas. Computadores matriciales del tipo SIMD: diferencias con los computadores “vectoriales”. Estructuras básicas. Formas de distribuir datos en memoria para mejor uso del paralelismo. Algoritmos típicos. Consideraciones sobre rendimiento y ley de Amdahl.

7.- Arquitecturas paralelas MIMD. Multiprocesadores y Multicomputadores. Problemas que afectan esos sistemas: otros aspectos de la ley de Amdahl. Redes de interconexión y sus parámetros característicos. Problemas de sincronización. Sistemas de multiprocesadores con memoria compartida: características, tipos y ejemplos: SMP y NUMA. Multicomputadores: comunicación por pasaje de mensajes: primitivas de emisión y recepción. Procesadores especialmente diseñados para procesamiento paralelo por pasaje de mensajes: el “transputer” y el lenguaje OCCAM.

8.- Paralelismo en redes de computadores. Bibliotecas de funciones de pasaje de mensajes: “PVM” (Parallel Virtual Machine) y “MPI” (Message Passing Interface); funciones de comunicación punto a punto y colectivas: principios del uso de esos recursos. Bases del diseño de algoritmos paralelos: partición, comunicación, aglomeración, y “mapping”. Creación de programas simples en ambientes MPI o PVM: ejemplos y práctica en una red disponible.



BIBLIOGRAFÍA

Año: 2017, semestre: 1

Vigencia: 01/02/2002 - Actualidad



D. A. Patterson, J. L. Hennessy: “Estructura y Diseño de Computadores - Interficie Circuitería / Programación - Vols. 1, 2 y 3. Ed. Reverté, 2000.
D. A. Patterson, J. L. Hennessy: “Organización y Diseño de Computadores”. Mc Graw-Hill, 1995.
S. Dasgupta: “Computer Architecture: A Modern Syntthesis”. Vol. 1: “Foundations” Vol. 2: “Advanced Topics”. J. Wiley & Sons, Inc., 1985.
J. L. Hennessy, D. A. Patterson: “Arquitectura de Computadores. Un enfoque Cuantitativo”. Mc Graw-Hill, 1993.
W. Stallings: “Computer Organization and Architecture”. Prentice Hall, 4 th. Edition, 1996.
K. Hwang, F. A. Briggs: “Computer Architecture and Parallel Processing”. McGraw-Hill, 1984.
Van de Goor, A. J.: “Computer Architecture and Design”. Addison-Wesley, 1989.
Stone, H. S.: “High Performance Computer Architecture”. Addison-Wesley, 1987.
De Blasi, M.: “Computer Architecture”. Addison-Wesley, 1989.
INMOS Ltd.: “Transputer Technical Notes”. Prentice-Hall, 1989.
Pountain, D., May, D.: “A Tutorial Introduction to OCCAM Programming”. BSP Professional Books, 1988.
B. Wilkinson, M. Allen: “Parallel Programming, Techniques and Applications Using Networked Workstations and Parallel Computers”. Prentice-Hall, 1999.
W. Gropp, E. Lusk, A. Skjellum: “Using MPI, Portable Parallel Programming with the Message Passing Interface”. The MIT Press, 1997.
Geist, A. Beguelin, et al.: “PVM: Parallel Virtual Machine. A User’s Guide and Tutorial for Networked Parallel Computing”. The MIT Press, 1994.

ACTIVIDADES PRÁCTICAS

Prácticas llevadas a cabo en el aula (total 24 horas):
Constan de explicaciones y trabajo de ejercitación por parte de los alumnos. En general, se resuelven dos ejercicios tipo y quedan planteados los restantes para discutir después con los estudiantes. Cada una de estas prácticas consta de una o más clases con una carga horaria que se indica en cada caso: Práctica No. 1 - Ejercicios sobre rendimiento; tiempo CPU y productividad: una (1) clase de tres (3) horas.· Práctica No. 2 - Generalidades sobre pipelines: una (1) clase de tres (3) horas. · Práctica No. 3 - Riesgos del pipeline; por dependencia de datos, por control y por colisión: una (1) clase de tres (3) horas. Práctica No. 4 - Vector de colisión y diagrama de estados: una (1) clase de tres (3) horas. Práctica No. 5 - Procesadores RISC y superescalares: dos (2) clases de tres (3) horas cada una. Práctica No. 6 - Procesadores vectoriales y matriciales: una (1) clase de tres (3) horas. Práctica No. 7 - Conceptos generales sobre arquitecturas paralelas de multiprocesamiento: una (1) clase de tres (3) horas.
Prácticas de Laboratorio (total 24 horas):
Laboratorio No. 1 - Simulación de arquitecturas RISC utilizando WinMIPS64. Resolución de guia de laboratorio y presentación de informe escrito. Tres (3) clases de tres (3) horas cada una.·
Laboratorio No. 2 - Procesamiento paralelo en red de estaciones de trabajo. Se utiliza una red de ocho computadoras disponbles en el laboratorio. Modelado de un problema, cálculo teórico de la mejora esperable, verificación experimental y presentación de informe escrito. Se realizan cinco (5) clases de tres (3) horas cada una.

METODOLOGÍA DE ENSEÑANZA

Esta materia parte del conocimiento de las arquitecturas de monoprocesadores, pero desde su principio debe plantear, tanto en teoría como en práctica, el problema del rendimiento. Resulta imperativo que se intente definir ese concepto, usando ejemplos y ejercicios apropiados, centrando la atención en tiempo de ejecución y en productividad. En forma natural se llega a una simple expresión matemática donde entran el número de instrucciones del programa, la cantidad de ciclos por instrucción y el tiempo del ciclo de reloj, debiendo ser perfeccionada para tener en cuenta los diferentes tipos de instrucciones. Se analiza la influencia que la arquitectura, organización y realización física tienen sobre dichos parámetros, y se realizan comparaciones entre procesadores conocidos. Como inmediata consecuencia, surge la necesidad de analizar con cierta profundidad el procesamiento segmentado, que se ha hecho fundamental para mejor rendimiento del monoprocesador. En este punto, el alumno debe comprender el comportamiento ideal de ese tipo de recursos pertenecientes al dominio de la organización, y luego introducir los factores que lo perturban (riesgos). A esa altura del curso, se tienen las bases necesarias para un buen planteo de las arquitecturas RISC, uno de los avances más importantes logrados en la permanente búsqueda de mayor velocidad de procesamiento. Se procura ilustrar las características típicas de los procesadores RISC, y se realizan simulaciones y aplicación en laboratorio. La tendencia moderna de diseño lleva luego naturalmente a la indispensable consideración de los procesadores superescalares, como una consecuencia emergente del concepto RISC que se extiende también a procesadores de tipo CISC. Entonces se llega a otro avance fundamental: en lugar de buscar velocidad mejorando un monoprocesador, se trata de asociar el trabajo de varios de ellos mediante computación en paralelo, haciéndose notar que esta solución se ha vuelto factible a raíz del bajo costo de la tecnología de microprocesadores. Es importante que el alumno tenga cierta visión de los supercomputadores mediante la consideración teórica de computadores vectoriales segmentados, y de los procesadores matriciales (array processors), discutiendo conceptos aunque no sea posible, por razones obvias, ninguna práctica con tales sistemas. El camino queda entonces franqueado para llegar al conocimiento del multiprocesamiento, donde nos ubicamos en un nivel perfectamente accesible en cuanto a costo: utilizamos redes de computadores físicamente preexistentes, y agregamos el software de bibliotecas de pasaje de mensajes MPI de código abierto. Si bien esto exige dar una rápida noción del sistema operativo UNIX, se puede llegar a la realización de ejercicios prácticos de diseño de algoritmos y programación paralela, seguida por una demostración y práctica en laboratorio en la cual los alumnos pueden apreciar las ventajas obtenidas en mejora y rendimiento, así como las limitaciones existentes en todo multiprocesamiento.

SISTEMA DE EVALUACIÓN

Dadas las características de la asignatura, ésta no puede ser dividida en módulos independientes. Por lo tanto, la cátedra adopta una metodología estructurada a partir de una primera evaluación a mitad del semestre y una segunda evaluación (complementaria de la primera) en el mes de noviembre. En caso de desaprobarse alguna de ellas, existe un recuperatorio flotante en el mes de diciembre. El alumno debe obtener, para promocionar la materia, una nota igual o superior a seis en las evaluaciones. En el caso de no lograrse el objetivo, el alumno tendrá acceso a un recuperatorio integrador de la materia en el mes de febrero. El alumno debe obtener, para promocionar la materia, una nota igual o superior a seis en dicha evaluación. Los alumnos que obtuvieran calificación 4 o 5 tienen la posibilidad de rendir un examen final de acuerdo a la reglementación vigente, que se aprueba con una calificación superior a los cuatro puntos. Este sistema de evaluación se adecua a las características de la materia, siendo una de sus principales ventajas la existencia de un recuperatorio integrador, que favorece el estudio de la asignatura como una unidad, evitando la acumulación de fechas de exámenes durante la segunda mitad del semestre.

MATERIAL DIDÁCTICO

Se encuentra a a disposición de los alumnos una página web con material didáctico adicional, hojas de datos, programas de ejemplo, parciales anteriores y presentaciones de las clases teóricas.

ACTIVIDAD LABORATORIO-CAMPO


Calle 1 y 47 - La Plata (B1900TAG) - Pcia. de Buenos Aires - Argentina - Tel: (54) (221) 425-8911     -     Contacto: sistemas@ing.unlp.edu.ar