Universidad de Costa Rica

IE0321 Estructuras de Computadoras Digitales I

Créditos:
3
Departamento:
Automática
Curso:
Troncal
Tipo:
0 - Teórico
Horas:
4h: 3h T, 0h L, 1h P, 0h T/P
Requisitos:

Descripción

El curso de Estructuras de Computadores Digitales estudia la interfaz entre el sistema físico y el de programación de un computador. El curso se basa en el procesador MIPS. En este curso la persona estudiante aprenderá técnicas básicas de programación en el lenguaje ensamblador del MIPS, asimismo, su arquitectura, de forma que se adquieren los conocimientos necesarios para aplicar estos conceptos a cualquier otro procesador.

Contenidos

Módulo 1. Historia.

  1. Historia de las computadoras

Módulo 2: Modelo de programación

  1. Diagrama procesador memoria, organización de la memoria
  2. Instrucciones lw y sw Ejemplo leer de memoria endianess.
  3. Tipos de instrucciones R, I y J
  4. Instrucciones Aritméticas
  5. Instrucciones load y store, extensión de signo en las instrucciones load parciales
  6. Instrucciones Lógicas, bitwise, xor como detector de paridad, desplazamientos a la derecha e izquierda como multiplicación y división de 2^n
  7. Máscaras Y, OR, Ejercicios con Máscaras (primeros pasos a programación)
  8. Código no es solo secuencial (Saltos condicionales, incondicionales y comparaciones)
  9. Ejemplo de ensamblado, cálculo del salto condicional
  10. Ejemplo while, for, do while, if-else, Del lenguaje de alto nivel a ensamblador.
  11. Ejemplos de programación (Sustituir sub por add, Contar palabras pares, Código ASCII, Cambiar Minúsculas por mayúsculas, palíndromo)
  12. Subrutinas
  13. Programa simulador
  14. Concepto de desborde
  15. Excepciones
  16. Manejo de excepciones
  17. Subrutina determinar
  18. Desborde en código para números sin signo
  19. Multiplicación
  20. División

Módulo 3. Microarquitectura

  1. Datapath en un procesador
  2. Diseño de banco de registros repaso muxes, decodificador binario, latches y Flip Flops
  3. Diseño de una ALU
  4. Diseño de datapath monociclo a partir de una instrucción tipo R
  5. Completar el datapath agregando instrucciones de carga de datos y saltos condicionales
  6. Realizar el control del datapath como lógica combinacional
  7. Concepto de segmentación, segmentación de un sumador de rizado
  8. Del procesador monociclo al segmentado
  9. Riesgos de datos (RAW, WAR, WAW), control y estructurales
  10. Creación de una unidad de anticipación y detección de riesgos
  11. Paralelización a nivel de instrucciones
  12. Procesadores “multiple issue” y super escalares, concepto de “loop unrolling”

Módulo 4. Sistemas de almacenamiento, Jerarquías de Memoria: Caché

  1. Concepto de Jerarquía de memorias, necesidad y objetivo de esta
  2. Conceptos relacionados con memorias: volatilidad, permanencia, modos de acceso, medio de almacenamiento
  3. Celdas de memoria: ideal, SRAM, DRAM y Flash
  4. Memoria cache, acceso asociativo, mapeo directo, asociativo y asociativo por conjuntos, cálculo del offset, index y tag para cada caso.
  5. Políticas de reemplazo: Bélády, FIFO, LIFO, LRU y SRRIP
  6. Ejecución de accesos a memoria con caches, cálculo de las tasas de fallos y aciertos
  7. Implementación de una cache en memoria
  8. Cache multinivel.
  9. Concepto de atomicidad de las escrituras, consistencia y coherencia en cache, protocolo snooping, directorio (MSI).
  10. Memoria Virtual, tabla de páginas, TLB.

Módulo 5. Entrada y salida

  1. Acceso a periféricos por polling, interrupciones y DMA.

Competencias

POR DEFINIR

© 2020 Escuela de Ingeniería Eléctrica, Universidad de Costa Rica.