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)
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, 2020, Harris 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, 2020, Stallings, 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, 2020, Tanenbaum 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, 2012, Patterson 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, 2020, Stallings, 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, 2020, Anderson, 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]