Última actualización: 09/02/2024


Curso Académico: 2023/2024

Arquitectura de Computadores
(18272)
Grado en Matemática Aplicada y Computación (Plan: 433 - Estudio: 362)


Coordinador/a: GARCIA SANCHEZ, JOSE DANIEL

Departamento asignado a la asignatura: Departamento de Informática

Tipo: Obligatoria
Créditos: 6.0 ECTS

Curso:
Cuatrimestre:




Requisitos (Asignaturas o materias cuyo conocimiento se presupone)
+ Programación (Curso 1 / Cuatrimestre 1) + Estructura de Computadores (Curso 2 / Cuatrimestre 1) + Sistemas Operativos (Curso 2 / Cuatrimestre 2)
Objetivos
El objetivo principal de esta asignatura es que el estudiante conozca los conceptos básicos sobre la arquitectura de un computador y el impacto que estos tienen sobre el rendimiento de las aplicaciones y los sistemas informáticos. Para alcanzar este objetivo: + Se profundiza en aspectos avanzados de la arquitectura del computador como la optimizaciones de la jerarquía de memoria, el paralelismo a nivel de instrucción, o el diseño de multiprocesadores. + Se refuerzan conceptos básicos de programación concurrente y su interrelación con la arquitectura del computador. + Se introducen conceptos de programación paralela. + Se fomenta una preocupación constante por el rendimiento y el consumo energético de las aplicaciones.
Competencias y resultados del aprendizaje
CB1. Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio. CB2. Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio. CB3. Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética. CB4. Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado. CB5. Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía. CG1. Que los estudiantes sean capaces de demostrar conocimiento y comprensión de conceptos de matemáticas, estadística y computación y aplicarlos a la resolución de problemas en ciencia e ingeniería con capacidad de análisis y síntesis. CG3. Que los estudiantes puedan resolver computacionalmente con ayuda de las herramientas informáticas más avanzadas los modelos matemáticos que surjan de aplicaciones en la ciencia, la ingeniería, la economía y otras ciencias sociales. CG4. Que los estudiantes demuestren que pueden analizar e interpretar las soluciones obtenidas con ayuda de la informática de los problemas asociados a modelos matemáticos del mundo real, discriminando los comportamientos más relevantes para cada aplicación. CG6. Que los estudiantes sepan buscar y utilizar los recursos bibliográficos, en soporte físico o digital, necesarios para plantear y resolver matemática y computacionalmente problemas aplicados que surjan en entornos nuevos, poco conocidos o con información insuficiente. CE10. Que los estudiantes hayan demostrado que conocen y comprender los procedimientos algorítmicos para diseñar y construir programas que solucionen problemas matemáticos prestando especial atención al rendimiento. CE13. Que los estudiantes hayan demostrado que comprenden el funcionamiento del computador y el impacto que tiene su estructura y funcionamiento en el rendimiento de los programas, así como sus limitaciones físicas. CE14. Que los estudiantes hayan demostrado que conocen la teoría de gramáticas, lenguajes y autómatas y que pueden aplicarla al diseño de analizadores de lenguajes de programación y de lenguajes específicos de dominio, así como que comprender el proceso de traducción de lenguajes de alto nivel y las optimizaciones más comunes que tienen lugar. CE19. Que los estudiantes hayan demostrado que conocen las arquitecturas multiprocesador así como los procesadores basados en múltiples núcleos y los aceleradores de cómputo y poder utilizar dicho conocimiento para la mejora del rendimiento de algoritmos matemáticos con especial atención a la paralelización de dichos algoritmos. RA1. Haber adquirido conocimientos avanzados y demostrado una comprensión de los aspectos teóricos y prácticos y de la metodología de trabajo en el campo de la matemática aplicada y computación con una profundidad que llegue hasta la vanguardia del  conocimiento. RA2. Poder, mediante argumentos o procedimientos elaborados y sustentados por ellos mismos, aplicar sus conocimientos, la comprensión de estos y sus capacidades de resolución de problemas en ámbitos laborales complejos o profesionales y especializados que requieren el uso de ideas creativas e innovadoras. RA3. Tener la capacidad de recopilar e interpretar datos e informaciones sobre las que fundamentar sus conclusiones incluyendo, cuando sea preciso y pertinente, la reflexión sobre asuntos de índole social, científica o ética en el ámbito de su campo de estudio. RA4. Ser capaces de desenvolverse en situaciones complejas o que requieran el desarrollo de nuevas soluciones tanto en el ámbito académico como laboral o profesional dentro de su campo de estudio. RA5. Saber comunicar a todo tipo de audiencias (especializadas o no) de manera clara y precisa, conocimientos, metodologías, ideas, problemas y soluciones en el ámbito de su campo de estudio. RA6. Ser capaces de identificar sus propias necesidades formativas en su campo de estudio y entorno laboral o profesional y de organizar su propio aprendizaje con un alto grado de autonomía en todo tipo de contextos (estructurados o no).
Descripción de contenidos: Programa
1. Fundamentos del diseño de computadores. 1.1. Introducción. 1.2. Perspectiva histórica. 1.3. Clasificación de computadores. 1.4. Paralelismo. 1.5. Arquitectura del Computador. 2. Evaluación del rendimiento de sistemas informáticos. 2.1. Clasificación de arquitecturas y evaluación. 2.2. Fiabilidad de Sistemas Informáticos. 3. Jerarquía de memoria. 3.1. Optimizaciones de memoria caché. 3.2. Optimizaciones avanzadas de memoria caché. 4. Paralelismo a nivel de instrucción. 4.1. Introducción al paralelismo a nivel de instrucción. 4.2. Explotación del paralelismo a nivel de instrucción 5. Multiprocesadores. 5.1. Arquitecturas de memoria compartida simétrica. 5.2. Memoria compartida distribuida. 5.3. Sincronización en memoria compartida. 5.4. Modelos de consistencia de memoria. 6. Modelos de programación paralela y concurrente. 6.1. Introducción a la programación paralela: OpenMP. 6.2. Modelo de programación concurrente: Hilos en ISO C++. 6.3. Modelos de consistencia de memoria en C++.
Actividades formativas, metodología a utilizar y régimen de tutorías
** ACTIVIDADES FORMATIVAS ** CLASES TEÓRICO-PRÁCTICAS [38 horas con 100% de presencialidad, 1.52 ECTS]. En ellas se presentarán los conocimientos que deben adquirir los alumnos. Estos recibirán las notas de clase y tendrán textos básicos de referencia para facilitar el seguimiento de las clases y el desarrollo del trabajo posterior. Se resolverán ejercicios por parte del alumno que le servirá de autoevaluación y para adquirir las capacidades necesarias. Clases de problemas, en las que se desarrollen y discutan los problemas que se proponen a los alumnos. TALLERES Y/O PRÁCTICAS DE LABORATORIO [10 horas con 100% de presencialidad, 0.40 ECTS]. TUTORÍAS [28 horas con 25% de presencialidad, 1.12 ECTS]. Asistencia individualizada (tutorías individuales) o en grupo (tutorías colectivas) a los estudiantes por parte del profesor. TRABAJO INDIVIDUAL O EN GRUPO DEL ESTUDIANTE [70 horas con 0% de presencialidad, 2.8 ECTS]. EXAMEN FINAL [4 horas 100% de presencialidad, 0.16 ECTS] Se valorarán de forma global los conocimientos, destrezas y capacidades adquiridas a lo largo del curso. ** METODOLOGÍAS ** Seminarios y lecciones magistrales con apoyo de medios informáticos y audiovisuales. Aprendizaje práctico basado en casos y problemas y resolución de ejercicios. Trabajo individual y en grupo o cooperativo con opción a presentación oral o escrita. Tutorías individuales y en grupo para resolución de dudas y consultas sobre la materia. Prácticas y actividades dirigidas de laboratorios
Sistema de evaluación
  • Peso porcentual del Examen Final 40
  • Peso porcentual del resto de la evaluación 60
Calendario de Evaluación Continua
Bibliografía básica
  • Hennessy, JL y Patterson, DA.. Computer Architecture: A Quantitative Approach. 6th Edition.. Morgan Kaufmann,. 2017
Bibliografía complementaria
  • David A. Patterson, John Hennessy. Computer Organization and Design MIPS Edition: The Hardware/Software Interface. Morgan Kaufmann. 2020
  • Timothy G. Mattson, Yun (Helen) He and Alice E. Koniges. The OpenMP Common Core: Making OpenMP Simple Again. MIT Press. 2019
  • Williams, A.. C++ Concurrency in Action. Practical Multithreading. 2nd Edition. Manning.. 2018
Recursos electrónicosRecursos Electrónicos *
(*) El acceso a algunos recursos electrónicos puede estar restringido a los miembros de la comunidad universitaria mediante su validación en campus global. Si esta fuera de la Universidad, establezca una VPN


El programa de la asignatura podría sufrir alguna variación por causa de fuerza mayor debidamente justificada o por eventos académicos comunicados con antelación.