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.
- Historia de las computadoras
Módulo 2: Modelo de programación
- Diagrama procesador memoria, organización de la memoria
- Instrucciones lw y sw Ejemplo leer de memoria endianess.
- Tipos de instrucciones R, I y J
- Instrucciones Aritméticas
- Instrucciones load y store, extensión de signo en las instrucciones load parciales
- Instrucciones Lógicas, bitwise, xor como detector de paridad, desplazamientos a la derecha e izquierda como multiplicación y división de 2^n
- Máscaras Y, OR, Ejercicios con Máscaras (primeros pasos a programación)
- Código no es solo secuencial (Saltos condicionales, incondicionales y comparaciones)
- Ejemplo de ensamblado, cálculo del salto condicional
- Ejemplo while, for, do while, if-else, Del lenguaje de alto nivel a ensamblador.
- Ejemplos de programación (Sustituir sub por add, Contar palabras pares, Código ASCII, Cambiar Minúsculas por mayúsculas, palíndromo)
- Subrutinas
- Programa simulador
- Concepto de desborde
- Excepciones
- Manejo de excepciones
- Subrutina determinar
- Desborde en código para números sin signo
- Multiplicación
- División
Módulo 3. Microarquitectura
- Datapath en un procesador
- Diseño de banco de registros repaso muxes, decodificador binario, latches y Flip Flops
- Diseño de una ALU
- Diseño de datapath monociclo a partir de una instrucción tipo R
- Completar el datapath agregando instrucciones de carga de datos y saltos condicionales
- Realizar el control del datapath como lógica combinacional
- Concepto de segmentación, segmentación de un sumador de rizado
- Del procesador monociclo al segmentado
- Riesgos de datos (RAW, WAR, WAW), control y estructurales
- Creación de una unidad de anticipación y detección de riesgos
- Paralelización a nivel de instrucciones
- Procesadores “multiple issue” y super escalares, concepto de “loop unrolling”
Módulo 4. Sistemas de almacenamiento, Jerarquías de Memoria: Caché
- Concepto de Jerarquía de memorias, necesidad y objetivo de esta
- Conceptos relacionados con memorias: volatilidad, permanencia, modos de acceso, medio de almacenamiento
- Celdas de memoria: ideal, SRAM, DRAM y Flash
- Memoria cache, acceso asociativo, mapeo directo, asociativo y asociativo por conjuntos, cálculo del offset, index y tag para cada caso.
- Políticas de reemplazo: Bélády, FIFO, LIFO, LRU y SRRIP
- Ejecución de accesos a memoria con caches, cálculo de las tasas de fallos y aciertos
- Implementación de una cache en memoria
- Cache multinivel.
- Concepto de atomicidad de las escrituras, consistencia y coherencia en cache, protocolo snooping, directorio (MSI).
- Memoria Virtual, tabla de páginas, TLB.
Módulo 5. Entrada y salida
- Acceso a periféricos por polling, interrupciones y DMA.
Competencias
POR DEFINIR