Logo UAB
2022/2023

Arquitectura de Computadores

Código: 102775 Créditos ECTS: 6
Titulación Tipo Curso Semestre
2502441 Ingeniería Informática OB 2 2

Contacto

Nombre:
Miquel Àngel Senar Rosell
Correo electrónico:
miquelangel.senar@uab.cat

Uso de idiomas

Lengua vehicular mayoritaria:
español (spa)
Algún grupo íntegramente en inglés:
Algún grupo íntegramente en catalán:
Algún grupo íntegramente en español:

Equipo docente

Antonio González Fernández
Juan Carlos Moure Lopez
Xiaoyuan Yang
Sergio Villar Mesurado
Santiago Marco Sola
Sandra Méndez Caparrós
Gemma Sanjuán Figuerola
Javier Panadero Martinez

Equipo docente externo a la UAB

Joan Piedrafita
Manuel Montoto

Prerequisitos

Aunque no hay prerrequisitos formalmente establecidos, es indispensable un buen conocimiento del lenguaje de programación C y de la estructura básica del computador, incluyendo la organización de la jerarquía de memoria, y entender el lenguaje ensamblador (Resultados de Aprendizaje de Estructura de Computadores).

Objetivos y contextualización

  1. Entender las técnicas arquitectónicas basadas en paralelismo para mejorar el rendimiento del computador.
  2. Entender el principio de localidad de acceso a datos y las soluciones arquitectónicas aplicadas a la jerarquía de memoria.
  3. Describir las técnicas de evaluación de rendimiento, las métricas empleadas, y los métodos de visualización de resultados.
  4. Evaluar el rendimiento de fragmentos de aplicaciones en sistemas de cómputo multi-núcleo y GPU, seleccionando las técnicas de evaluación adecuadas.
  5. Analizar los cuellos de botella del rendimiento de la ejecución de un fragmento de programa: límites para capacidad de ejecución de los recursos del computador, límites para dependencias de datos y latencias de las operaciones, y límites por fallos en la jerarquía de memoria.
  6. Utilizar el análisis para seleccionar el sistema de cómputo adecuado a una aplicación y / o aplicar optimizaciones del código que mejoren su paralelismo (a nivel de instrucción y de hilos de ejecución) y la localidad de acceso a los datos.

Competencias

  • Actitud personal.
  • Capacidad de conocer, comprender y evaluar la estructura y arquitectura de los computadores, así como los componentes básicos que los conforman.
  • Capacidad para definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas.
  • Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación y normativa vigente.
  • Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.
  • Conocimiento, administración y mantenimiento sistemas, servicios y aplicaciones informáticas.

Resultados de aprendizaje

  1. Analizar las diversas alternativas de diseño de un computador en función de parámetros técnicos (Prestaciones) y económicos (costes).
  2. Analizar y entender la traslación que hace el compilador del código fuente original para generar el código binario ejecutable.
  3. Confección de código eficiente para ejecutar en arquitecturas multinúcleo y multiprocesador.
  4. Conocer y aplicar los principios fundamentales y técnicas básicas de la programación paralela y de tiempo real.
  5. Conocer, administrar y mantener sistemas Informáticos desde el punto de vista hardware.
  6. Diseñar, desarrollar, seleccionar y evaluar sistemas informáticos, asegurando su fiabilidad, seguridad y calidad.
  7. Entender el lenguaje ensamblador para depurar errores en el código fuente y para detectar problemas de rendimiento.
  8. Generar propuestas innovadoras y competitivas en la actividad profesional.
  9. Gestionar la información incorporando de forma crítica las innovaciones del propio campo profesional, y analizar las tendencias de futuro.
  10. Identificar anomalías, ineficiencias y cuellos de botella de rendimiento al ejecutar un programa en un computador monoprocesador, tanto en cómputo como acceso a memoria, y proponer modificaciones al programa para mejorar el rendimiento.
  11. Identificar la arquitectura y organización de los microprocesadores actuales desde los sistemas monoprocesador hasta los sistemas multinúcleo.
  12. Medir el tiempo de ejecución de un programa en un procesador y el recuento de instrucciones ejecutadas.

Contenido

1. Fundamentos de Diseño y Evaluación de los Computadores

• Latencia, Paralelismo y Localidad

• Coste, Rendimiento, Consumo Energético y Fiabilidad

• Métricas y Técnicas de Evaluación del Rendimiento

• Métodos de Visualización de Resultados

2. Jerarquía de Memoria: Funcionalidad y Tasa de Fallos

• Funcionamiento de la Jerarquía de Memoria: Caché, Memoria y Disco

• Bloque y línea de Caché. Algoritmos de emplazamiento y reemplazo

• Taza de Fallos y Rendimiento de la ejecución secuencial

• Patrones de Acceso a Memoria

• Optimizaciones de código para mejorar la localidad de acceso a los datos

3. Paralelismo en el núcleo de Ejecución del Procesador y en la Jerarquía de Memoria

• Segmentación de la ejecución: Latencia y capacidad de ejecución

• Ejecución Múltiple de instrucciones y Predicción de Saltos

• Análisis de dependencias entre instrucciones y de límites de capacidad del procesador

• Instrucciones explícitas para aprovechar el Paralelismo de Datos (SIMD)

• Paralelismo en el acceso a la jerarquía de memoria: Latencia y Ancho de Banda

• Optimizaciones de código que aprovechan el paralelismo interno del procesador

  • Introducción a los sistemas paralelos multiprocessador y multicomputador.
  • Introducción a los sistemas distribuïdos.

Metodología

Clases de Teoría: se expondrán los conocimientos propios de la asignatura. Se describirán los conceptos básicos y se indicarán ejemplos y pequeños problemas de cómo usarlos en la práctica. Se resaltarán los problemas de aprendizaje más importantes y se mostrará cómo completar y profundizar en los contenidos. Se discutirán casos prácticos y el profesor detectará los problemas de comprensión y razonamiento más comunes y los resolverá para todos los estudiantes.

Clases de Problemas: se harán actividades cooperativas de resolución de problemas. A partir del trabajo previo individual de los alumnos, estos harán una puesta en común en grupo y resolverán las dudas que hayan podido surgir. El profesor detectará los problemas de comprensión y razonamiento más comunes y los resolverá por grupos o para todos los estudiantes. Estos seminarios permitirán aportar los conocimientos que le faltan al estudiante o indicar donde se pueden adquirir. Servirán de puente entre las clases de teoría y el trabajo práctico. Las clases de problemas son evaluables, y en ciertas sesiones preestablecidas los alumnos resolverán problemas entregados al comienzo de la sesión y que se deberán entregar al finalizar la sesión como evidencias evaluables.

Clases de Laboratorio: servirán de apoyo a la teoría. Los alumnos dispondrán de la información de prácticas con tiempo suficiente antes de cada sesión, y deberán preparar la parte previa indicada en el informe para que el profesor, al comienzo de la sesión, la pueda revisar. Durante la sesión los alumnos deberán informar al profesor sobre sus avances y los problemas que se puedan encontrar, y al finalizar la sesión entregarán un documento con los resultadosde la práctica y un resumen de los problemas encontrados.

Competencias transversales: Serán trabajadas y evaluadas en varios momentos a lo largo del curso. Concretamente:

T06.03 - Generar propuestas innovadoras y competitivas en la actividad profesional: a lo largo del curso se trabajarán ejemplos para ilustrar de qué forma se pueden proponer diferentes soluciones a un mismo problema, evaluando su relevancia desde un punto de vista del rendimiento obtenido. En las clases de laboratorio se evaluará esta competencia mediante ejercicios que los estudiantes deberán resolver aportando soluciones que tengan aspectos originales e innovadores.

T06.04 - Gestionar la información incorporando de manera crítica las innovaciones del propio campo profesional, y analizar las tendencias del futuro: a lo largo del curso se presentarán aquellos elementos que sean más innovadores desde el punto de vista de la arquitectura de los nuevos procesadores. En las clases de laboratorio se incluirán preguntas específicas sobre estas innovaciones tecnológicas contrastándolas con los equipos usados en la resolución de los ejercicios prácticos.

Nota: se reservarán 15 minutos de una clase dentro del calendario establecido por el centro o por la titulación para que el alumnado rellene las encuestas de evaluación de la actuación del profesorado y de evaluación de la asignatura o módulo.

Actividades

Título Horas ECTS Resultados de aprendizaje
Tipo: Dirigidas      
Clases de problemas 12 0,48 2, 1, 3, 4, 5, 6, 7, 10
Clases de teoría 26 1,04 2, 1, 3, 4, 5, 6, 8, 9, 10, 11
Prácticas de laboratorio 12 0,48 2, 3, 5, 6, 7, 8, 9, 10, 12
Tipo: Autónomas      
Estudio y Preparación de Pruebas 30 1,2 2, 1, 3, 4, 7, 8, 9, 10, 11, 12
Preparación de Problemas 30 1,2 2, 3, 4, 7, 10, 11, 12
Preparación de Prácticas 32 1,28 2, 3, 4, 7, 8, 9, 10, 11, 12

Evaluación

Las fechas de evaluación continua y entrega de trabajos se publicarán en la plataforma Moodle de la UAB y pueden estar sujetas a cambios de programación por motivos de adaptación a posibles incidencias; siempre se informará en Moodle sobre cualquier cambio ya que se entiende que esta es la plataforma habitual de intercambio de información entre profesor y estudiantes. Los estudiantes que sean repetidores deberán hacer las mismas actividades que el resto y no se prevé ningún tipo de convalidación por actividades realizadas en cursos anteriores. La asignatura consta de las siguientes actividades de evaluación:

Pruebas individuales (I1, I2; 25% y 25% sobre la calificación final). Son dos pruebas de resolución de problemas, de preguntas teóricas y de preguntas relacionadas con las prácticas de laboratorio. La evaluación del alumno se hará a partir de las respuestas de las pruebas.

Problemas resueltos en grupo y participación en las clases de problemas (PRB; 20% sobre la calificación final). En algunas sesiones de problemas se propondrán una serie de ejercicios que se resolverán a lo largo de la clase de forma individual o en grupo. Habrá 4 entregas, como mínimo, a lo largo del curso y todas tendrán el mismo peso relativo en la calificación de este apartado. Cada entrega será evaluada por separado y no habrá ningún mecanismo de recuperación para esta parte.

Prácticas de laboratorio en grupo (Lab; 30% sobre la calificación final), con discusión y ayuda del profesor. Las actividades se extienden durante una o dos sesiones y hay que entregar un documento de resultados, respuestas y conclusiones al finalizar la última sesión (entre 2 y 4 entregas). La evaluación del alumno se hará a partir de la participación en las sesiones y de los documentos entregados. No habrá ningún mecanismo de recuperación para esta parte.

Se necesita una nota igual o superior a 5 sobre 10 en la nota LAB para aprobar la asignatura. En caso contrario, la asignatura tendrá una calificación de Suspendido con un valor numérico igual a la nota Lab / 2.

El alumno no necesita realizar más pruebas si las calificaciones de las pruebas individuales (I1 e I2) cumplen la siguiente condición

     ((Max (I1, I2) + 2 * min (I1, I2)) / 3> = 5 (calificaciones I1 y I2 sobre escala de 10 puntos)

 En este supuesto, la nota final de la asignatura se calcula como:

Nota FINAL = (I1 * 2,5 + I2 * 2,5 + PRB*2 + LAB * 3) / 10

Se necesita una nota igual o superior a 5 puntos en la Nota FINAL para aprobar la asignatura.

------------------------------------------------

Si no se cumple la condición anterior, el alumno debe realizar necesariamente una prueba final de recuperación.

Prueba Final (F), durante la fecha reservada para la Escuela. La evaluación del alumno se hará a partir de las respuestas de la prueba.

Nota FINAL = (F * 5 + PRB *2 + LAB * 3) / 10

Hay una nota igual o superior a 5 puntos en la Prueba Final (F) y una nota igual o superior a 5 puntos en la Nota FINAL para aprobar la asignatura. Si la nota de la Prueba Final es inferior a 5, la asignatura tendrá una calificación de suspenso con un valor numérico igual a la nota de la Prueba Final.

---------------

La calificación de Matrícula de Honor se podrá obtener si se ha obtenido una calificación final igual o superior a 9.00. Debido a que el número de estudiantes con esta distinción no puede exceder el 5% del número de estudiantes matriculados en el curso, esta distinción se otorgará a quien tenga una participación más destacada en todoel curso a criterio de los profesores.

Un estudiante se considerará No Evaluable si no se ha presentado a ninguna prueba individual (ni I1 ni I2), o en casos excepcionales que serán analizados y decididos por los responsables docentes (enfermedades o accidentes graves, ...).

Para cada actividad de evaluación, se indicará un lugar, fecha y hora de revisión a través de la plataforma Moodle en la que el estudiante podrá revisar la actividad con el profesor. En este contexto, se podrán hacer reclamaciones sobre la nota de la actividad, que serán evaluadas por el profesorado responsable de la asignatura. Si el estudiante no reclama o no se presenta, no habrá ninguna revisión posterior de esta actividad.

---------------

NOTAS:

a) A parte de las actividades de evaluación descritas anteriormente, a lo largo del curso se podrán proponer otras actividades de carácter voluntario que podrán contribuir a la nota final de la asignatura.

b) Sin perjuicio de otras medidas disciplinarias que se estimen oportunas, y de acuerdo con la normativa académica vigente, las irregularidades cometidas por un estudiante que puedan conducir a una variación de la calificación en una actividad evaluable se calificarán con un cero (0). Las actividades de evaluación calificadas de esta forma y por este procedimiento no serán recuperables. Si es necesario superar cualquiera de estas actividades de evaluación para aprobar la asignatura, esta asignatura quedará suspendida directamente, sin oportunidad de recuperarla en el mismo curso. Estas irregularidades incluyen, entre otros:

• la copia total o parcial de una práctica, informe, o cualquier otra actividad de evaluación;

• dejar copiar;

• presentar un trabajo de grupo no hecho íntegramente por los miembros del grupo (aplicado atodos losmiembros, no sólo los que no han trabajado);

• presentar como propios materiales elaborados por un tercero, aunque sean traducciones o adaptaciones, y en general trabajos con elementos no originales y exclusivos del estudiante;

• tener dispositivos de comunicación (como teléfonos móviles, smart watches, bolígrafos con cámara, etc.) accesibles durante las pruebas de evaluación teórico-prácticas individuales (exámenes);

• hablar con compañeros durante las pruebas de evaluación teórico-prácticas individuales (exámenes);

• copiar o intentar copiar de otros alumnos durante las pruebas de evaluación teórico-prácticas (exámenes);

• usar o intentar usar escritos relacionados con la materia durante la realización de las pruebas de evaluación teórico-prácticas (exámenes), cuando éstos no hayan sido explícitamente permitidos.

La nota numérica del expediente será el valor menor entre 3.0 y la media ponderada de las notas en caso de que el estudiante haya cometido irregularidades en un acto de evaluación (y, por tanto, no será posible el aprobado por compensación). En ediciones futuras de esta asignatura, el estudiante que haya cometido irregularidades en un acto de evaluación no se le convalidará ninguna de las actividades de evaluación realizadas.

En resumen: copiar, dejar copiar o plagiar (o el intento de) en cualquiera de las actividades de evaluación equivale a un SUSPENSO, no compensable y sin convalidaciones.

Actividades de evaluación

Título Peso Horas ECTS Resultados de aprendizaje
Prueba individual de problemas, teoría y laboratorio 25% 2 0,08 2, 1, 3, 4, 5, 7, 9, 10, 11
Prueba individual de problemas, teoría y laboratorio 25% 2 0,08 2, 1, 3, 4, 5, 7, 9, 10, 11
Resolución de problemas en grupo 20% 2 0,08 2, 1, 4, 6, 7, 9, 10
Trabajo en grupo en el laboratorio 30% 2 0,08 2, 3, 4, 6, 7, 8, 9, 10, 12

Bibliografía

  • HENNESSY, John L. and PATTERSON, David, Computer Architecture: A Quantitative Approach. Morgan Kaufmann (Elsevier), 2018 (Cap. 1, 2 y 3)
  • BRYANT, Randal and O'HALLARON David, Computer Systems: A Programmer's Perspective (3rd. Ed.). Prentice Hall, 2016 (Cap. 5 y 6)
  • BAKHVALOV, Denis, Performance Analysis and Tuning on Modern CPUs, easyperf.net, 2020.
  • PATTERSON, David and HENNESSY, John, Computer Organization and Design: The Hardware/Software Interface. Morgan Kauffman (Elsevier), 2009 (Cap. 4 y 5)

 

Software

Linux (sistema operativo) + herramientas básicas (editores, navegadores,...) 

gcc/icc (compiladores)

perf (herramienta de perfilado de aplicaciones)