Universidad Pública de Navarra



Año Académico: 2023/2024 | Otros años:  2022/2023  |  2021/2022  |  2020/2021  |  2019/2020 
Graduado o Graduada en Ingeniería Informática por la Universidad Pública de Navarra (Programa Internacional)
Código: 250306 Asignatura: ESTRUCTURA DE COMPUTADORES
Créditos: 6 Tipo: Básica Curso: 2 Periodo: 1º S
Departamento: Ingeniería Eléctrica, Electrónica y de Comunicación
Profesorado:
ARAMBURU MAYOZ, CANDIDO (Resp)   [Tutorías ] GARDE GURPEGUI, ANDRÉS   [Tutorías ]
JUAN DE DIOS URSUA, CARLOS   [Tutorías ]

Partes de este texto:

 

Módulo/Materia

Módulo: Formación Básica
Materia: Informática

Subir

Descripción/Contenidos

En esta asignatura se estudian los elementos esenciales de un computador ofreciendo al estudiante una visión general e independiente del tipo de aquitectura del funcionamiento de un computador. La representación de la información (datos e instrucciones), el procesador como unidad de procesamiento de dicha información, la jerarquía de memoria como unidad de almacenamiento de información y el sistema de entrada y salida como sistema de comunicación de información con el exterior son los puntos clave sobre los que se centra la asignatura.
En las sesiones prácticas se realizan proyectos de desarrollo software empleando las herramientas de edición, compilación, lincado, ensamblaje y depuración de programas informáticos en lenguajes de programación C y ensamblador x86 en el entorno del sistema operativo GNU/linux.

 La lista de contenidos es la siguiente:
- Arquitectura de Von Neumann. CPU, memoria y entrada / salida.
- Representación de datos. Bit, byte y palabra. Caracteres, enteros y reales.
- Aritmética y lógica sobre enteros en binario. Redondeo y propagación de error en números reales.
- Representación de instrucciones. Lenguaje máquina, lenguaje ensamblador y lenguajes de alto nivel. Registros. Formato de instrucción. Fases de ejecución de una instrucción. Tipos de instrucción y modos de direccionamiento.
- Programación en lenguaje ensamblador de construcciones básicas de los lenguajes de alto nivel y llamadas a subrutina.
- Arquitectura y organización de la CPU. Conjunto de instrucciones. Camino de datos. Arquitecturas CISC, RISC y VLIW.
Sistema de entrada / salida. Control de entrada / salida: por encuesta, por interrupción, DMA. Vector de interrupciones. Programación en lenguaje ensamblador de rutinas de atención a interrupciones.
- Organización de la memoria. Latencia y ancho de banda. Jerarquía de memoria. Memoria cache Memoria virtual.

Subir

Competencias genéricas

Las competencias genéricas que un alumno debería adquirir en esta asignatura son:
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.
G1 - Capacidad para concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en
informática que tengan por objeto la concepción, el desarrollo o la explotación de sistemas, servicios y aplicaciones informáticas.

G6 - Capacidad para concebir y desarrollar sistemas o arquitecturas informáticas centralizadas o distribuidas integrando hardware, software y redes.
G8 - Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones.
G9 - Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.
G10 - Conocimientos para la realización de mediciones, cálculos, valoraciones, tasaciones, peritaciones, estudios, informes, planificación de tareas y otros trabajos análogos de informática.
T1 - Capacidad de análisis y síntesis.
T3 - Comunicación oral y escrita.
T4 - Resolución de problemas.
T8 - Aprendizaje autónomo.

Subir

Competencias específicas

Las competencias específicas que un alumno debería adquirir en esta asignatura son:
FB4 - Conocimientos básicos sobre el uso y programación de los ordenadores, sistemas operativos, bases de datos y programas informáticos con aplicación en ingeniería.
FB5 - Conocimiento de la estructura, organización, funcionamiento e interconexión de los sistemas informáticos, los fundamentos de su programación, y su aplicación para la resolución de problemas propios de la ingeniería.

Subir

Resultados aprendizaje

  1. Conocer la organización de la máquina de Von Neumann y sus principales unidades funcionales.
  2. Mencionar ventajas e inconvenientes de la arquitectura Von Neumann.
  3. Representar en binario números enteros y reales y evaluar su rango y la precisión.
  4. Realizar operaciones de aritmética y lógica sencillas sobre datos enteros en binario.
  5. Conocer la relación entre lenguaje máquina, lenguaje ensamblador y lenguajes de alto nivel.
  6. Conocer las ventajas e inconvenientes de un determinado formato de instrucción respecto a otros.
  7. Implementar en lenguaje ensamblador, construcciones básicas de los lenguajes de alto nivel y llamadas a subrutinas.
  8. Conocer la relación entre el conjunto de instrucciones y el diseño de una arquitectura.
  9. Describir las principales fases de ejecución de los diferentes tipos de instrucción en el camino de datos de la CPU.
  10. Describir las características principales de las arquitecturas CISC, RISC y VLIW.
  11. Conocer las diferentes técnicas de entrada / salida: programadas, mediante interrupciones y DMA.
  12. Conocer cómo utilizar interrupciones para implementar el control de entrada / salida y transferencias de datos.
  13. Escribir sencillas rutinas de interrupción en lenguaje ensamblador.
  14. Conocer el efecto de la latencia y el ancho de banda de memoria en el rendimiento de un computador.
  15. Conocer el concepto de memoria cache y como afecta su uso al rendimiento del computador.
  16. Conocer los conceptos de memoria virtual y paginación.

Subir

Metodología

 Metodología - Actividad
 Horas Presenciales
 Horas no presenciales
 A-1 Clases magistrales
 10
 
 A-2 Estudio autónomo
 
 30
 A-3 Sesiones prácticas
 16
 
 A-4 Programación / experimentación u otros trabajos en ordenador / laboratorio
 
 20
 A-5 Resolución de problemas, ejercicios y otras actividades de aplicación
 
 12
 A-6 Aprendizaje basado en problemas y/o casos
 14
 
 A-7 Elaboración de trabajos y/o proyectos y escritura de memorias
 
 11
 A-8 Preparación de presentaciones de trabajos, proyectos, etc...
 12
 15
 A-9 Actividades de Evaluación
 8
 
 A-10 Tutorías  2  
     
 Total
 62
 88

Subir

Idiomas

Castellano

Subir

Evaluación

 

Resultados de
aprendizaje
Actividad de
evaluación
Peso (%) Carácter
recuperable
Nota mínima
requerida
4Aprendizaje activo, motivación del estudiante   15 No 0
Desarrollar organigramas y código de programas básicos en los lenguajes C y ensamblador para las arquitecturas x86 y ARM basándose en conceptos de programación de cursos anteriores, así como su depuración y análisis mediante herramientas GNU como gcc, as, ld, gdb, file, objdump, elf, etc ..en un entorno de sistemas linux bien local , bien remoto mediante la herramienta Quartus. Implementación de un microprocesador soft en dispositivos FPGA. Finalizar las prácticas fuera del laboratorio para tener habilidad de programar de forma autónoma. Realización de las memorias durante y después de la sesión de prácticas como documento a utilizar durante los exámenes. Entrega de guiones a través de las Tareas de miaulario en el plazo establecido será prescriptivo.  Dos controles parciales con el mismo valor. Un control parcial después de las dos primeras sesiones y otro final una vez realizadas todas las prácticas con la  ayuda de las memorias de las prácticas y el libro de apuntes de la asignatura. Nota media mínima de 4 puntos para aprobar la asignatura. Requisito para realizar el examen de recuperación es haber asistido al menos a 14 de las 16 horas de prácticas, haber entregado las memorias en el plazo establecido y haber realizado los dos controles. 35  Sí 4
Conocer los fundamentos de los módulos básicos de la estructura de una computadora con arquitectura tipo von Neumann así con la estructura interna y operación de la unidad central de proceso, la jerarquía de memorias y los mecanismos de de operación de los módulos de entrada y salida Dos parciales de 90  minutos de duración cada uno sobre conceptos teóricos y ejercicios de aula. Nota media mínima de 4 puntos para aprobar la asignatura. Examen de Recuperación de toda la asignatura en caso de no superar la convocatoria ordinaria. 35 4
Desarrollar organigramas y código de programas básicos en los lenguajes C y ensamblador de diferentes arquitecturas como x86 y ARM basándose en conceptos de programación de cursos anteriores. Relacionar código C con código ensamblador.
|Controles y Recuperación como en el caso anterior. Se permitirá la utilización de apuntes. Desarrollar programas en lenguaje C y ensamblador con/sin llamadas al sistema operativo, con/sin llamadas a librerías de C, con/sin llamadas a funciones y subrutinas.
Un control parcial escrito sobre la realización de algoritmos y programación basados en los guiones de prácticas de laboratorio. Nota media mínima de 4 puntos para aprobar la asignatura. Examen de Recuperación de toda la asignatura en caso de no superar la convocatoria ordinaria. Se permitirá la utilización de los apuntes entregados por el profesor al comienzo del curso. 15  

 

 

 

 

 

 

 

 

Subir

Temario

1 - Introducción
2 - Arquitectura de Von Neumann
     2.1 CPU
     2.2 Memoria
     2.3 Entrada / Salida
3 - Representación de datos
     3.1 Bit, Byte y Palabra
     3.2 Caracteres, enteros y reales
4 - Aritmética y lógica
     4.1 Operaciones aritméticas y lógicas sobre enteros en binario
     4.2 Redondeo y propagación de error en números reales
5 - Representación de instrucciones
     5.1 Lenguaje máquina, lenguaje ensamblador y lenguajes de alto nivel
     5.2 Formato de instrucción
     5.3 Tipos de instrucción y modos de direccionamiento
6 - Programación en lenguaje ensamblador de construcciones básicas de los lenguajes de alto nivel
     6.1 Sentencias de asignación
     6.2 Sentencias condicionales
     6.3 Bucles
     6.4 LLamadas y retorno de funcion o subrutina
7 - Arquitectura y organización de la CPU
     7.1 Conjunto de instrucciones
     7.2 Arquitecturas CISC, RISC y VLIW
     7.3 Fases de ejecución de una instrucción
     7.4 Camino de datos
8 - Sistema de entrada / salida
     8.1 Sincronización por encuesta
     8.2 Sincornización por interrupción
     8.3 Vector de interrupciones
     8.4 Acceso directo a memoria DMA
     8.5 Programación en lenguaje ensamblador de rutinas de entrada/salida
9 - Organización de la memoria
     9.1 Jerarquía de memoria
     9.2 Latencia y ancho de banda
     9.3 Memoria cache
     9.4 Memoria virtual

Subir

Programa de prácticas experimentales

1-Introducción a la Programación en Lenguaje Ensamblador AT&T x86-32

2-Representación de los Datos

3-Operaciones Aritméticas y Lógicas e Instrucciones de Saltos Condicionales

4-LLamadas al Sistema Operativo (Kernel) y Subrutinas

5-Programación en Lenguaje Ensamblador ARM: Datos, Operaciones Aritmética, Instrucciones de Salto, Llamadas al Kernel y Subrutinas

6-Procesamiento  de Imágenes: Bit Map Portable

Los programas para la arquitectura x86  se realizarán utilizando las estaciones de trabajo del aula de informática y los PC personales de los alumnos . Los programas para la arquitectura ARM se realizarán en los dispositivos SoC del laboratorio remoto pudiendo ser accedidos desde fuera del campus universitario.

Subir

Bibliografía

Acceda a la bibliografía que el profesorado de la asignatura ha solicitado a la Biblioteca.


Basica

  1. William Stallings. Computer Organization and Architecture: Designing for Performance. Prentice Hall. 9th Edition. 2012.
  2. Paul Carter. PC Assembly Language. Acceso libre. 2006.
  3. Jonathan Bartlett. Programming from the Ground Up. Acceso Libre. 2004.

 Complementaria

  1. K.N.King. C programming, a Modern Approach W.W. Norton 2ªEd. 2008.
  2. David A. Patterson, John L. Hennessy. Computer Organizarion and Design. The Hardware / Software Interface. Morgan Kaufmann. 2009.
  3. Randal E. Bryant, David R. O'Hallaron. Computer Systems: A Programmer's Perspective. Addison-Wesley. 2nd Edition. 2010.
  4. Jeff Duntemann. Assembly Language Step-by-Step: Programming with Linux. Wiley Ed. 3rd Edition. 2009.
  5. Kip R. Irvine. Assembly Language for x86 Processors. Pearson. 6th Edition. 2014.

Subir

Lugar de impartición

Aulario

Subir