Curricula CS-UNI
5.21. CS221. Arquitectura de Computadores (Obligatorio)

5.21. CS221. Arquitectura de Computadores (Obligatorio)

  • Semestre: 4to Sem. Créditos: 4
  • Horas del curso: Teoría: 2 horas; Laboratorio: 4 horas;
  • Prerrequisitos:

    • CS1D1. Estructuras Discretas (2do Sem)

Figura 5.21: Mapa de Conexión. CS221 Arquitectura de Computadores

5.21.1. Justificación

Una comprensión profunda de la arquitectura de computadoras es esencial para desarrollar software de alto rendimiento y entender la interfaz hardware-software. Este curso explora cómo las computadoras ejecutan instrucciones, gestionan memoria y se comunican con dispositivos externos. Al estudiar la organización interna de los procesadores y la jerarquía de los sistemas de memoria, los estudiantes adquieren la capacidad de optimizar código para arquitecturas de hardware específicas y comprender las compensaciones en el diseño de sistemas modernos.

5.21.2. Objetivos Generales

1.
Comprender los principios de la lógica digital y la representación de datos.
2.
Comprender la organización de la Unidad Central de Procesamiento (CPU).
3.
Dominar los conceptos básicos del lenguaje ensamblador y la arquitectura del conjunto de instrucciones.
4.
Analizar la jerarquía de memoria, incluyendo memoria caché y memoria virtual.
5.
Evaluar mejoras de rendimiento mediante segmentación y paralelismo.

5.21.3. Contribución a los resultados (Outcomes)

AG-C09) Diseño y Desarrollo de Soluciones: Diseña, implementa y evalúa soluciones para problemas complejos de computación. (Usage)

AG-C03) Trabajo Individual y en Equipo: Se desempeña efectivamente como individuo y como miembro o líder en equipos diversos. (Usage)

5.21.4. Contenido

5.21.4.1. Organización de Máquina a Nivel de Ensamblador (20 horas) [Habilidades AG-C03,AG-C09]

Referencias Bibliográficas: [Patterson and Hennessy, 2020Harris and Harris, 2012]

Temas

1.
Arquitectura de máquina von Neumann
2.
Unidad de control: captación, decodificación y ejecución de instrucciones
3.
Introducción a SIMD vs MIMD y la taxonomía de Flynn
4.
Organización de multiprocesadores/multinúcleo de memoria compartida
5.
Arquitectura del conjunto de instrucciones (ISA) (por ejemplo, x86, ARM y RISC-V):
a)
Conjuntos de instrucciones de ancho fijo vs variable
b)
Formatos de instrucción
c)
Manipulación de datos, control, E/S
d)
Modos de direccionamiento
e)
Programación en lenguaje de máquina
f )
Programación en lenguaje ensamblador
6.
Mecanismos de llamada y retorno de subrutinas
7.
E/S e interrupciones
8.
Segmentos de montículo, estáticos, pila y código

Aprendizaje esperado (Learning Outcomes)

1.
Discutir cómo las unidades funcionales clásicas de von Neumann se implementan en sistemas embebidos, particularmente en memoria dentro y fuera del chip [Debatir]
2.
Describir cómo se ejecutan las instrucciones en una máquina von Neumann clásica, con extensiones para hilos, sincronización de multiprocesadores y ejecución SIMD [Describir]
3.
Evaluar un diagrama de ejemplo con paralelismo a nivel de instrucción y riesgos para describir cómo se manejan en las canalizaciones de procesadores típicos [Evaluar (valorar)]
4.
Discutir cómo se representan las instrucciones a nivel de máquina y en el contexto de un ensamblador simbólico [Debatir]
5.
Mapear un ejemplo de patrones de lenguaje de alto nivel a notaciones de lenguaje ensamblador/máquina [Mapear/Mapa conceptual]
6.
Contrastar diferentes formatos de instrucción considerando aspectos como direcciones por instrucción y formatos de longitud variable vs longitud fija [Contrastar]
7.
Analizar un diagrama de subrutina para comentar cómo se manejan las llamadas de subrutina a nivel de ensamblador [Analizar]
8.
Describir conceptos básicos de interrupciones y operaciones de E/S [Describir]
9.
Escribir un programa simple en lenguaje ensamblador para procesamiento y manipulación de cadenas/arreglos [Escribir]

5.21.4.2. Jerarquía de Memoria (18 horas) [Habilidades AG-C03,AG-C09]

Referencias Bibliográficas: [Patterson and Hennessy, 2020Stallings, 2015]

Temas

1.
Jerarquía de memoria: la importancia de la localidad temporal y espacial
2.
Organización y operaciones de memoria principal
3.
Memoria persistente (por ejemplo, SSD, discos estándar)
4.
Latencia, tiempo de ciclo, ancho de banda e intercalado
5.
Memorias caché:
a)
Mapeo de direcciones
b)
Tamaño de bloque
c)
Política de reemplazo y almacenamiento
d)
Prebúsqueda
6.
Coherencia de caché multiprocesador
7.
Memoria virtual (soporte de hardware)
8.
Manejo de fallas y confiabilidad
9.
Confiabilidad:
a)
Codificación de error
b)
Compresión de datos
c)
Integridad de datos
10.
Procesamiento en Memoria (PIM)

Aprendizaje esperado (Learning Outcomes)

1.
Usando un diagrama del sistema de memoria, identificar los principales tipos de tecnología de memoria (por ejemplo, SRAM, DRAM) y su costo y rendimiento relativos [Analizar]
2.
Medir el efecto de la latencia de memoria en el tiempo de ejecución [Evaluar]
3.
Enumerar las funciones de un sistema con gestión de memoria virtual [Enumerar]
4.
Calcular el tiempo promedio de acceso a memoria bajo varias configuraciones de caché y memoria y mezclas de referencias de instrucciones y datos [Computar/Calcular]
5.21.4.3. Interconexión y Comunicación (8 horas) [Habilidades AG-C03,AG-C09]

Referencias Bibliográficas: [Patterson and Hennessy, 2020Tanenbaum and Austin, 2012]

Temas

1.
Fundamentos de E/S:
a)
Protocolo de enlace y almacenamiento en búfer
b)
E/S programada
c)
E/S basada en interrupciones
2.
Estructuras de interrupción: vectorizadas y priorizadas, acuse de recibo de interrupción
3.
Dispositivos de E/S (por ejemplo, ratón, teclado, pantalla, cámara, sensores, actuadores)
4.
Almacenamiento externo, organización física y unidades
5.
Fundamentos de buses:
a)
Protocolos de bus
b)
Arbitraje
c)
Acceso directo a memoria (DMA)

Aprendizaje esperado (Learning Outcomes)

1.
Analizar un diagrama de control de interrupciones para comentar cómo se usan las interrupciones para implementar control de E/S y transferencias de datos [Analizar]
2.
Enumerar varios tipos de buses en un sistema informático [Enumerar]
3.
Enumerar las ventajas de los discos magnéticos y contrastarlas con las de los discos de estado sólido [Listar/Enumerar]
5.21.4.4. Organización Funcional (8 horas) [Habilidades AG-C03,AG-C09]

Referencias Bibliográficas: [Harris and Harris, 2012Patterson and Hennessy, 2020]

Temas

1.
Implementación de rutas de datos simples, incluyendo segmentación de instrucciones, detección de riesgos y resolución (por ejemplo, paradas, reenvío)
2.
Unidad de control:
a)
Implementación cableada
b)
Realización microprogramada
3.
Segmentación de instrucciones
4.
Introducción al paralelismo a nivel de instrucción (ILP)

Aprendizaje esperado (Learning Outcomes)

1.
Comparar implementaciones alternativas de rutas de datos en arquitecturas de computadoras modernas [Comparar]
2.
Producir un conjunto de señales de control para sumar dos enteros usando implementaciones cableadas y microprogramadas [Producir]
3.
Discutir el paralelismo a nivel de instrucción usando segmentación y los riesgos significativos que pueden ocurrir [Debatir]
4.
Diseñar un procesador completo, incluyendo ruta de datos y control [Diseñar]
5.
Calcular los ciclos promedio por instrucción para una implementación dada de procesador y sistema de memoria [Computar/Calcular]
5.21.4.5. Arquitecturas Heterogéneas (10 horas) [Habilidades AG-C03,AG-C09]

Referencias Bibliográficas: [Patterson and Hennessy, 2020Stallings, 2015]

Temas

1.
Arquitecturas SIMD y MIMD (por ejemplo, GPUs de Propósito General, TPUs y NPUs)
2.
Sistemas de memoria heterogéneos:
a)
Memoria compartida versus memoria distribuida
b)
Memoria volátil vs no volátil
c)
Protocolos de coherencia
3.
Arquitecturas Específicas de Dominio (DSAs):
a)
Acelerador de Aprendizaje Automático
b)
Computación en red
c)
Sistemas embebidos para aplicaciones emergentes
d)
Computación neuromórfica
e)
Dispositivos de computación perimetral
4.
Soluciones de empaquetado e integración como 3DIC y chiplets
5.
Aprendizaje automático en diseño de arquitectura:
a)
Algoritmos de IA para análisis de carga de trabajo
b)
Optimización de configuraciones de arquitectura para rendimiento y eficiencia energética
6.
Diseño Orientado a Datos (DOD): organización de datos en memoria (arreglo de estructuras vs. estructura de arreglos) para maximizar localidad de caché y aprovechar vectorización SIMD; contraste y complementariedad con el paradigma orientado a objetos.

Aprendizaje esperado (Learning Outcomes)

1.
Analizar un diagrama de sistema con arquitecturas paralelas alternativas, por ejemplo, SIMD y MIMD, e identificar las diferencias clave [Evaluar]
2.
Discutir qué problemas de gestión de memoria se encuentran en multiprocesadores que no están presentes en uniprocesadores y cómo estos problemas podrían resolverse [Evaluar]
3.
Indicar las diferencias entre placa base de memoria, interconexión de memoria del procesador y memoria remota a través de redes, sus implicaciones para la latencia de acceso y su impacto en el rendimiento del programa [Familiarizarse]
4.
Discutir cómo determinarías cuándo usar un acelerador específico de dominio en lugar de una CPU de propósito general [Evaluar]
5.
Enumerar diferencias clave en los principios de diseño arquitectónico entre una unidad de procesamiento basada en vector y basada en escalar [Familiarizarse]
6.
Enumerar las ventajas y desventajas de una arquitectura PIM [Familiarizarse]
7.
Reestructurar una colección de objetos (AoS) a un diseño DOD (SoA) y medir el impacto en rendimiento [Usar].
5.21.4.6. Arquitecturas de Procesador Seguras (8 horas) [Habilidades AG-C03,AG-C09]

Referencias Bibliográficas: [Patterson and Hennessy, 2020Anderson, 2020]

Temas

1.
Principios de Hardware Seguro:
a)
Análisis de Riesgos de Seguridad, Protección de Activos y Modelo de Amenazas
b)
Aceleración Criptográfica con Hardware
c)
Soporte para virtualización (por ejemplo, aislamiento de SO)
2.
Raíces de confianza en hardware, Funciones Físicamente No Clonables (PUF)
3.
Generadores de Números Aleatorios por Hardware
4.
Extensiones de protección de memoria:
a)
Verificación de límites de puntero en tiempo de ejecución (por ejemplo, desbordamiento de búfer)
b)
Protección a nivel microarquitectónico
c)
Protección a nivel de ISA
5.
Entorno de Ejecución Confiable (TEE):
a)
Protecciones de Base de Computadora Confiable
b)
Protección de máquinas virtuales
c)
Protección de contenedores
d)
Módulos de software confiables (Enclaves)
6.
Cifrado homomórfico para procesamiento de datos que preserva la privacidad

Aprendizaje esperado (Learning Outcomes)

1.
Discutir principios de hardware seguro, explorando un marco para análisis de riesgos y protección de activos [Debatir]
2.
Resumir cómo las Funciones Físicamente No Clonables (PUF) pueden ser un identificador único de dispositivo en aplicaciones de seguridad [Resumir]
3.
Distinguir un generador de números aleatorios con soporte de hardware dedicado de generadores sin hardware dedicado a generar entropía [Distinguir]
4.
Enumerar las ventajas y desventajas de la protección de memoria a nivel de ISA [Listar/Enumerar]
5.
Describir problemas de diseño clave de un entorno de ejecución confiable (TEE) para soportar máquinas virtuales [Describir]

5.21.5. Referencias Bibliográficas

[Patterson and Hennessy, 2020]

[Harris and Harris, 2012]

[Stallings, 2015]

[Tanenbaum and Austin, 2012]

[Anderson, 2020]

¿Encontraste una errata, un curso desactualizado, un enlace roto, o tienes una sugerencia? Cuéntanos.

Escanea para abrir en tu teléfono