Cursada el primer cuatrimestre de 2025. Pagina de la cátedra.
- Representación de la Información:
- Bits, bytes y enteros.
- Números fraccionarios y representación en punto flotante (IEEE 754).
- Aritmética binaria y operaciones con bits (desplazamientos, máscaras).
- Diseño Lógico e Implementación Secuencial:
- Diseño de sistemas combinacionales y secuenciales.
- Implementación de lógica digital.
- Lenguaje de Máquina:
- Estructura de instrucciones y registros.
- Control de flujo: condicionales, bucles y llamadas a funciones.
- Representación de datos en memoria: arreglos, estructuras y punteros.
- ABI (Application Binary Interface) y manejo de la pila.
- Arquitectura de Procesadores:
- Ciclo de instrucción y arquitectura microprogramada.
- Diseño de procesadores: arquitectura Y86 y RISC.
- Pipelining: riesgos (data hazards, control hazards) y optimización.
- Memoria y Jerarquía de Memorias:
- Memoria dinámica y jerarquía de memorias (registros, caché, RAM, disco).
- Memoria caché: mapping y políticas de reemplazo.
- Principios de localidad (temporal y espacial).
- Memoria virtual: paginación, tablas de páginas y traducción de direcciones (TLB, page faults).
- Diseño y simulación de circuitos combinatorios en Logisim Evolution.
- Construcción modular con compuertas básicas y multiplexores.
- Implementación de sumadores de 1 bit y de 4 bits.
- Extensión del sumador con flags Z, C, V, N.
- Conceptos básicos de complemento a 2 y detección de signo/overflow.
- Diseño de una ALU de 4 bits con operaciones: suma, resta, AND y OR.
- Uso de selector de operación (OP) para controlar la ALU.
- Integración de circuitos provistos (inversor, detectores de overflow/borrow).
- Testing automático con Logisim por consola y comparación de salidas con Makefile.
- Manipulación de bits y operaciones a nivel binario en C.
- Implementación de funciones con operadores bit a bit y restricciones de lenguaje.
- Representación de enteros con signo y sin signo.
- Uso de complemento a dos.
- Desplazamientos lógicos y aritméticos.
- Máscaras de bits y construcción de constantes.
- Detección de casos límite: cero, overflow.
- Comparaciones y transformaciones sin usar estructuras de control prohibidas.
- Representación y análisis de números en punto flotante (IEEE-754).
- Decodificación de signo, exponente y fracción en floats.
- Análisis de una microarquitectura microprogramada en Logisim Evolution.
- Estudio del datapath: registros, PC, ALU, buses y memorias.
- Interpretación de formato de instrucciones y opcodes.
- Uso de señales de control y secuenciamiento por clock.
- Programación y ejecución de programas en ensamblador.
- Ensamblado y carga de código en memoria con herramientas provistas.
- Seguimiento de ejecución: ciclos de clock y microinstrucciones.
- Implementación y prueba de nuevas instrucciones.
- Modificación de microcódigo y unidad de control.
- Integración de circuitos nuevos dentro de la arquitectura existente.
- Programación de rutinas en lenguaje ensamblador integradas con C.
- Interoperabilidad C ↔ ASM (convenciones de llamada, parámetros y retornos).
- Manipulación directa de memoria dinámica a bajo nivel.
- Manejo explícito de punteros y direcciones de memoria.
- Implementación manual de operaciones sobre strings e enteros sin usar libc.
- Uso de calloc/free desde código ensamblador.
- Gestión de estructura de datos en memoria (layouts de structs y offsets).
- Control de acceso a memoria y prevención de errores y fugas (validado con Valgrind).
- Proceso de compilación y enlace de módulos C y ASM con Makefile.
- Funcionamiento de memoria caché.
- Parámetros de caché: tamaño, sets y asociatividad.
- Caché direct-mapped y set-associative.
- Descomposición de direcciones: tag, índice y offset.
- Simulación de accesos a memoria desde trazas.
- Lecturas y escrituras en caché.
- Hit, clean miss y dirty miss.
- Política de reemplazo LRU.
- Bits de línea: valid, dirty, last-used.
- Política write-back.
- Penalidad de acceso a memoria principal.
- Cálculo de tiempos de acceso.
- Métricas: misses, miss rate, bytes transferidos.
- Impacto de la configuración de caché en el rendimiento.