DESCRIPCIÓN DE LA ASIGNATURA
Grado en:
Ingeniería del Software
Asignatura:
Fundamentos de computadores
Asignatura en inglés:
Introduction to Computers
Curso y cuatrimestre:
1º (2º Cuatrimestre)
ECTS:
9
Tipología:
Básica
Idioma de impartición:
Español
Módulo:
Materias básicas
Materia:
Informática
Departamento:
Arquitectura de Computadores y Automática
Coordinador:
José Manuel Mendías Cuadros
CONTENIDOS MÍNIMOS
  • Repertorio de instrucciones.
  • Diseño del procesador. Segmentación.
  • Programación de bajo nivel en un lenguaje imperativo.
  • Programación en ensamblador.
  • Interfaz HW/SW.
PROGRAMA DETALLADO

Tema 1: De sistema digital a computador.

  • Circuitos de propósito específico vs. general.
  • Modelo de Von-Neumann.
  • Arquitectura vs. estructura.
  • Concepto de código ensamblador.

Tema 2. Arquitectura del procesador.

  • RISC-V ISA.
  • Modelo de memoria.
  • Registros.
  • Modos de direccionamiento.
  • Repertorio de instrucciones base RV32I.
  • Extensión RVM.
  • Extensión RVF.
  • Arquitecturas RISC vs. CISC.

Tema 3. Programación en ensamblador.

  • Elementos de un programa en ensamblador.
  • Pseudo-instrucciones.
  • Tipos de datos, variables y constantes.
  • Arrays.
  • Estructuras.
  • Expresiones.
  • Programación estructurada: bloque lineal, condicional e iterativo.
  • Programación procedural: paso de parámetros, llamada y retorno.
  • Gestión de la pila y salvado de registros.
  • Anidamiento, recursividad y gestión del marco.
  • Flujo de desarrollo y ejecución de aplicaciones.

Tema 4. Diseño del formato de instrucción.

  • Tipos de formato.
  • Codificación de campos.
  • Ensamblaje y desensamblaje.

Tema 5. Diseño monociclo del procesador.

  • RISC-V de arquitectura reducida.
  • Diseño de la ruta de datos.
  • Diseño del controlador.
  • Coste y tiempo de ciclo.

Tema 6. Diseño multiciclo del procesador.

  • Diseño de la ruta de datos.
  • Diseño del controlador.
  • Ciclo de instrucción.
  • Coste y tiempo de ciclo.
  • Métricas de rendimiento: tiempo de ejecución, CPI, MIPS, MFLOPS.
  • Speedup.
  • Benchmarking.

Tema 7. Diseño segmentado del procesador.

  • Conflictos: estructurales, de datos y de control.
  • Diseño de la ruta de datos sin gestión de conflictos: registros de segmentación.
  • Soluciones SW de conflictos: reordenación de código e inserción de NOP.
  • Soluciones HW de conflictos: anticipación, parada y predicción de saltos.
  • Diseño de la ruta de datos con gestión de conflictos.
  • Coste y tiempo de ciclo.

Tema 8. Excepciones.

  • Excepciones vs. interrupciones.
  • Modos de servicio.
  • RISC-V ISA privilegiado.
  • Modos de privilegio.
  • Registros de control y estado.
  • Instrucciones privilegiadas.
  • Rutinas de tratamiento de excepción.
  • RISC-V de arquitectura reducida con gestión elemental de excepciones.
  • Rediseño de los procesadores monociclo, multiciclo y segmentado.

Tema 9. Uso básico del sistema operativo mediante la línea de comandos.

  • Concepto de sistema operativo.
  • Carga y ejecución de un programa.
  • Interfaz gráfica vs. línea de comandos.
  • Windows vs. Linux.
  • Interprete de comandos.
  • Organización de archivos y directorios.
  • Propiedad y permisos.
  • Variables de entorno.
  • Programas y procesos.
  • Redirección de E/S.
  • Scripting.
  • Compilación y depuración de programas.

Tema 10. Programación en C a bajo nivel.

  • Programa, modulo y biblioteca.
  • Preprocesado y compilación.
  • Tipos de datos y conversión de tipos.
  • Regiones de memoria.
  • Tamaño, emplazamiento, visibilidad y vida útil de datos.
  • Punteros.
  • Paso de parámetros por valor y referencia.
  • Memoria dinámica.
  • Cadenas de caracteres.
  • Parámetros de un programa.
  • Ficheros de texto y binarios.
  • E/S en consola y en ficheros.
  • Bibliotecas string, stdlib y stdio.
  • Flujo de desarrollo.
PROGRAMA DETALLADO EN INGLÉS

Module 1: From Digital Systems to Computers

  • Application-specific vs. general-purpose circuits.
  • Von Neumann model.
  • Architecture vs. structure.
  • Concept of assembly code.

Module 2: Processor Architecture

  • RISC-V ISA.
  • Memory model.
  • Registers.
  • Addressing modes.
  • Base instruction set RV32I.
  • RVM extension.
  • RVF extension.
  • RISC vs. CISC architectures.

Module 3: Assembly Programming

  • Elements of an assembly program.
  • Pseudo-instructions.
  • Data types, variables, and constants.
  • Arrays.
  • Structs.
  • Expressions.
  • Structured programming: linear, conditional, and iterative blocks.
  • Procedural programming: parameter passing, function calls and returns.
  • Stack management and register saving.
  • Nesting, recursion, and frame management.
  • Application development and execution flow.

Module 4: Instruction Format Design

  • Format types.
  • Field encoding.
  • Assembly and disassembly.

Module 5: Single-Cycle Processor Design

  • Simplified RISC-V architecture.
  • Datapath design.
  • Control unit design.
  • Cost and cycle time.

Module 6: Multi-Cycle Processor Design

  • Datapath design.
  • Control unit design.
  • Instruction cycle.
  • Cost and cycle time.
  • Performance metrics: execution time, CPI, MIPS, MFLOPS.
  • Speedup.
  • Benchmarking.

Module 7: Pipelined Processor Design

  • Hazards: structural, data, and control hazards.
  • Datapath design without hazard handling: pipeline registers.
  • Software solutions to hazards: code reordering and NOP insertion.
  • Hardware solutions to hazards: forwarding, stalling, and branch prediction.
  • Datapath design with hazard handling.
  • Cost and cycle time.

Module 8: Exceptions

  • Exceptions vs. interrupts.
  • Service modes.
  • RISC-V privileged ISA.
  • Privilege levels.
  • Control and status registers.
  • Privileged instructions.
  • Exception handling routines.
  • Simplified RISC-V architecture with basic exception handling.
  • Redesign of single-cycle, multi-cycle, and pipelined processors.

Module 9: Basic Operating System Usage via the Command Line

  • Operating system concept.
  • Program loading and execution.
  • Graphical interface vs. command line.
  • Windows vs. Linux.
  • Command interpreter.
  • File and directory organization.
  • Ownership and permissions.
  • Environment variables.
  • Programs and processes.
  • I/O redirection.
  • Scripting.
  • Compilation and debugging of programs.

Module 10: Low-Level Programming in C

  • Program, module, and library.
  • Preprocessing and compilation.
  • Data types and type conversion.
  • Memory regions.
  • Data size, placement, visibility, and lifetime.
  • Pointers.
  • Parameter passing by value and by reference.
  • Dynamic memory allocation.
  • Strings.
  • Program arguments.
  • Text and binary files.
  • Console and file I/O. string, stdlib, and stdio libraries.
  • Development workflow.
RESULTADOS DE APRENDIZAJE
Conocimientos
  • Al finalizar el aprendizaje, el o la estudiante será capaz de demostrar conocimiento básico de las diferentes subdisciplinas de la ingeniería informática y de las técnicas básicas y conocimientos de estas para la integración en equipos multidisciplinares como profesional generalista en ingeniería informática.
  • Al finalizar el aprendizaje, el o la estudiante será capaz de explicar los principios básicos de estructura y arquitectura de computadores, sistemas operativos, sistemas distribuidos, redes de computadores, internet y sistemas de almacenamiento, procesamiento y acceso a datos necesarios para el análisis e implementación de aplicaciones basadas en ellos.
Habilidades
  • Al finalizar el aprendizaje, el o la estudiante será capaz de analizar las necesidades en algorítmica, complejidad computacional, programación, sistemas operativos, bases de datos, estructura, arquitectura e interconexión de sistemas informáticos necesarios para la resolución de problemas de ciencias e ingeniería, de acuerdo con los principios de calidad, fiabilidad y seguridad necesarios y dentro del marco institucional y jurídico de la empresa.
  • Al finalizar el aprendizaje, el o la estudiante será capaz de analizar servicios, aplicaciones y sistemas informáticos, valorando su impacto económico, social y ambiental, cara a su puesta en marcha y su mejora continua, asegurando su fiabilidad, seguridad y calidad en cualquier ámbito de la ingeniería informática, de manera inclusiva y conforme a principios éticos y a la legislación y normativa vigente.
Competencias

No tiene

ACTIVIDADES FORMATIVAS
Presenciales
Actividad Horas
CTM - Clases teóricas magistrales 40
CP - Clases de problemas 25
AEV - Actividades de evaluación 5
CL - Clases de laboratorio 25
Totales 95
No Presenciales
Actividad Horas
TPN - Trabajo personal no dirigido 135
Totales 135
EVALUACIÓN DETALLADA

Convocatoria ordinaria.

Se realizarán tres pruebas parciales: EP1 (Tema 3), EP2 (Tema 9), EP3 (tema 10), y un examen final, EF (resto de temas). Las pruebas serán liberatorias y no recuperables en ordinaria. La calificación de la asignatura se calculará como 0,1*(nota EP1) + 0,1*(nota EP2) + 0,1*(nota EP3) + 0,7*(nota EF).

Convocatoria extraordinaria.

Se realizará un único examen final, EF (Temas 1 a 10). La calificación de la asignatura será la nota obtenida en dicho examen.

BIBLIOGRAFÍA
    Recomendada
  • Digital Design and Computer Architecture, RISC-V Edition. Sarah L. Harris, David Harris. Morgan Kaufmann. 2021
    Complementaria
  • Computer Organization and Design RISC-V Edition: The hardware/software Interface. David A. Patterson and John L. Hennessy. Morgan Kaufmann. 2020