Contenido

Objetivos

Al terminar el curso, el estudiante estará capacitado para:

  1. Comprender los fundamentos y criterios principales del diseño de sistemas de computación, incluyendo el diseño del microprocesador y de la arquitectura del set de instrucciones.
  2. Conocer tendencias históricas y analizar tendencias futuras relacionadas con Arquitecturas de Computadoras.
  3. Comprender distintas medidas de performance que le permitan comparar diversos sistemas de computadoras.
  4. Explicar cuantitativamente mejoras de performance a través del uso de técnicas de paralelismo y de pipelining.
  5. Comprender y escribir código en lenguaje ensamblador de RISC-V, y verificar su correcto funcionamiento utilizando un simulador.
  6. Explicar la implementación básica de un microprocesador en pipelining, incluyendo sus principales riesgos y la manera de solucionarlos, comparar cuantitativamente su performance contra implementaciones de ciclo único y multiciclo, y realizar modificaciones que amplíen su capacidad.
  7. Comprender conceptos avanzados de pipelining en microprocesadores, como los componentes, ventajas y desventajas de diseños superescalares y superpipelined, predicción de saltos y manejo de interrupciones y excepciones.
  8. Comprender las ventajas y desventajas de técnicas de paralelismo a distintos niveles: multitasking, paralelismo a nivel instrucciones (ILP), paralelismo a nivel datos, a nivel threads (multithreading), a nivel microprocesadores (multicore) y a nivel granjas de servidores (WSC).
  9. Comprender los tipos, funciones, ventajas y desventajas del uso de una jerarquía de memorias en el diseño de sistemas de computación, y evaluarla cuantitativamente.
  10. Comprender el propósito, la función, los distintos tipos y la performance de memorias caché, y cuantificar su impacto en la performance de un sistema de computación.
  11. Comprender la influencia del sistema de Entrada/Salida de una computadora, y cuantificar su impacto en la performance de un sistema de computación.
  12. Comprender diferentes técnicas que permitan bajar el consumo de energía de los microprocesadores, sus fundamentos y tendencias.
  13. Comprender el objetivo de los microprocesadores multinúcleo, sus ventajas y dificultades, tipos de implementación y conceptos relacionados como comunicaciones multinúcleo y protocolos de coherencia de caché.
  14. Comprender aspectos de seguridad relacionados al diseño de microprocesadores y poder identificar vulnerabilidades.

Forma de dictado

Se dictarán clases cuatro veces por semana: tres clases teóricas y otra práctica, de dos horas cada una. El horario definitivo se fijará de común acuerdo con los estudiantes durante la clase inicial. La carga horaria total de la asignatura, por reglamento, es de 96 horas por cuatrimestre.

Aprobación del curso

La evaluación será del tipo distribuida, mediante evaluaciones de los trabajos prácticos y de laboratorio y dos exámenes parciales. Adicionalmente se tendrá en cuenta la participación en clase (la que se evaluará mediante breves cuestionarios sorpresa), la capacidad de trabajo grupal, la expresión oral y escrita. La aprobación de la asignatura se obtiene completando los siguientes requisitos:

  • Asistencia superior o igual al 80% de las evaluciones de trabajos prácticos y de laboratorio.
  • Calificación superior o igual a 40/100 en el promedio de las evaluaciones de los trabajos prácticos y de laboratorios.
  • Calificación superior o igual a 40/100 en el promedio ponderado de los dos exámenes parciales del curso.
  • Calificación superior o igual a 40/100 en el promedio ponderado de las evaluaciones de los trabajos prácticos y de laboratorios, los exámenes parciales y participación en clase.

Asignaturas Correlativas

  • Sistemas con Microprocesadores y Microcontroladores (regular para cursar).
  • Probabilidad y Estadística (regular para cursar, por Plan de Transición 2024-2025).
  • Prueba de Suficiencia en Inglés (regular para cursar, por Plan de Transición 2024-2025).

Personal Docente

A cargo de la materia y su dictado: Ing. Nicolás Majorel Padilla (npadilla@herrera.unt.edu.ar).

A cargo de trabajos Prácticos: Esp. Ing. Esteban Volentini (evolentini@herrera.unt.edu.ar) e Ing. Lucas Castillo Delacroix (lecastillodelacroix@herrera.unt.edu.ar).

Programa analítico

  1. Introducción a la Arquitectura de Computadoras: Conceptos básicos. Partes de una computadora. ¿Qué es Arquitectura de Computadoras? Memorias: Jerarquías, Caché, Principio de localidad. Modelos: de capas, abstracciones, fuerzas. Relación con el Sistema Operativo. Concepto de multitarea. Modo Supervisor/Usuario. Interrupciones.
  2. Costo, Performance y Consumo de Energía. Proceso de Fabricación de los circuitos integrados. Costo. Evolución del feature size. Ley de Moore. Definición de Performance. Productividad y Latencia. Tiempo de Respuesta y de CPU. Ecuación de Performance de un procesador: Ciclos por Instrucción, Ciclo de Reloj, Instrucciones por programa. Relación con los niveles de organización del computador. Benchmarks. Ley de Ahmdal. Consumo de energía: Energía de Conmutación y Corrientes de Pérdida. El fin del escalamiento de Dennard. La Power Wall. Nuevos paradigmas.
  3. Paralelismo y Pipelining. Fundamentos de Paralelismo y Pipelining. Organización de las tareas. Perfil de trabajo. Fundamentos de Pipelining: inicialización, finalización, estado de régimen. Medidas de Performance: Productividad, Latencia Aceleración y Eficiencia (rendimiento). Problemas reales: Cuellos de Botella, tareas de diferentes tipos. Coordinación y Validez del modelo. Diagrama de Precedencia. Riesgos de Datos: lectura después de escritura (RAW), escritura después de lectura (WAR) y escritura después de escritura (WAW). Ejemplos de Aplicación: Sumador segmentado, Organización de memoria (Interleaving), Microprocesador.
  4. Arquitectura del Set de Instrucciones (ISA). Tipos de Instrucciones. Distintas arquitecturas de Set de Instrucciones. Registros. Modos de Direccionamiento. Ejemplos. Lenguajes de alto nivel. Errores y Debugging. Registro de Estado. Pila. Ejemplos de Implementación. Subrutinas.
  5. Diseño de un ISA. Evolución histórica de ISAs. Características requeridas de un Set de Instrucciones. Criterios de comparación de distintos Sets. Decisiones de Diseño: Tipo de ISA, Instrucciones y Modos de Direccionamiento a incluir, Formato de Instrucción fijo o variable, Manejo de constantes, Tipos de datos a soportar, Evaluación de condiciones e Instrucciones de Salto. Tamaño del ISA: 32 vs 64 bits.Métricas importantes. Principios de Diseño.
  6. ISA del RISC-V. Características generales. Memoria y Registros. Formatos de Instrucciones. Tipos de Datos. Set de Instrucciones completo: Instrucciones Aritméticas, Lógicas, Transferencia de Datos, Transferencia de Control, Comparaciones. Pseudoinstrucciones.Convenciones para uso de registros (ABI). Convención de llamadas a subrutinas. Comparación con el ISA x86 (CISC).
  7. Diseño de un CPU de ciclo único. Componentes combinacionales y secuenciales. Metodología de clocking. Pasos para el diseño. Especificación en lenguaje de transferencia de registros (RTL). Construcción paso a paso de un camino de datos. Señales de Control. Control Local del ALU. Diseño del control central. Consideraciones de timing. Tiempos de ejecución. Ventajas y Desventajas.
  8. Diseño de un CPU en pipelining. Las etapas del camino de datos del CPU segmentado y su funcionamiento para los distintos tipos de instrucciones. Control Estacionario del CPU. Comparación de performance con el diseño de ciclo único. Efectos y resolución de riesgos: estructurales, de datos y de control. Solución de riesgos por Hw y por Sw. Adelantamiento o Forwarding. Ayuda del compilador: Reordenamiento. Minimización de paradas por riesgos de control.
  9. Temas avanzados de pipelining. Superpipelining: características, ventajas y desventajas. Predicción de saltos: Estática y Dinámica. Paralelismo a nivel de la instrucción (ILP). Procesadores superescalares. Emisión estática de múltiples instrucciones. Arquitecturas VLIW. Ayuda del compilador: Desenrollado de lazos. Emisión Dinámica de múltiples instrucciones. Ejecución fuera de orden. Ejecución especulativa. Limitaciones del ILP. Manejo de Interrupciones/Excepciones. Ejemplos con procesadores modernos.
  10. Diseño de un CPU multiciclo y Microprogramación. Las Etapas del Camino de Datos. Ventajas respecto al Procesador de ciclo único. Especificación para cada tipo de instrucción. Señales de Control. Diagrama de estado. Implementación del Control mediante PLA, ROM. Comparación de las implementaciones. Cambios para soportar excepciones. Implementación de la MEF de control con secuenciador. ROM de microcódigo (firmware). Implicancias y conclusiones. Manejo de interrupciones/excepciones.
  11. Memorias Caché. Tendencias tecnológicas. Concepto de Cache. Organización: mapeo directo, asociativo y asociativo por conjuntos. Tamaño de Bloques. Fallos: compulsivos, conflictos, capacidad, invalidez. Políticas: reemplazo de bloque, escrituras: a través, retrocopiado, buffer de escrituras. Alternativas para la Mejora de Performance de Cache: tiempo de acierto, tasa de fallos, penalidad por fallos. Cache de Nivel 2. Ejemplos.
  12. Memoria Virtual. Introducción. Definición. Nomenclatura. Ventajas. Mapeo. Protecciones. Unidad de manejo de memoria (MMU). Tamaño de páginas. Tablas de Páginas. Tabla de traducción rápida de direcciones (TLB). Funcionamiento de Cache y TLB en paralelo. Protecciones. Algoritmos de reemplazo de páginas. Ejemplos de implementación en procesadores modernos.
  13. Sistema de Entrada / Salida. Rol del Sistema Operativo. Métodos de E/S: Programa Principal, Interrupciones, Acceso Directo a Memoria, Procesadores de E/S. Performance de sistemas de E/S. Métricas. Modelo Productor-Servidor. Características de las E/S a disco según las aplicaciones: Supercomputadores, Transacciones, Sistema de Archivos. Ejemplos de dispositivos de I/O: Discos Magnéticos, Discos de estado sólido, Memorias RAM no volátiles. Tendencias Tecnológicas. Confiabilidad y Disponibilidad. Arreglos de Discos. Ejemplos.
  14. Buses de Interconexión. Concepto. Características esenciales. Clasificación. topologías. Conexiones off-chip: buses paralelos vs buses seriales. Ejemplos. Esquema básico de interconexión, y su evolución hasta un System on a Chip. Conexiones intra-chip. Ejemplos. Conexiones a gran escala. Tendencias.
  15. Diseño para bajo consumo de energía. Repaso consumo de energía y Power Wall: Energía de Conmutación y Corrientes de Pérdida. Técnicas de reducción del consumo de energía: Mejora del proceso de fabricación, Uso de paralelismo, Escalado dinámico de tensión y frecuencia, Power Gating, Clock Gating. Procesadores heterogéneos. Cambio de paradigma. Ejemplos.
  16. Procesamiento en Paralelo. Multiprocesadores: ventajas y desventajas. Performance en sistemas de multiprocesadores: Limitaciones, Eficiencia y Escalabilidad. Clasificación: Taxonomía de Flynn. Multithreading: variantes. Clasificación según el acceso a memoria: SMP, UMA, NUMA, Clusters. El problema de coherencia en el cache: protocolo MSI, falsa coherencia. Paso de Mensajes en clusters. Ejemplos.
  17. Conceptos de Seguridad. Motivaciones y técnicas de Arquitectura de Computadoras. Ataques de tipo side-channel. Vulnerabilidades más populares y sus paliativos: Meltdown, Spectre, Foreshadow, Zombieload. Limitaciones a los paliativos. Perspectivas a futuro.

Trabajos Prácticos

  1. Prerequisitos: Conceptos de asignaturas previas (Sistemas con Microprocesadores y Microcontroladores, Probabilidad Estadística).
  2. Temas 1, 2. Conceptos Básicos, Costo, Consumo y Rendimiento de Procesadores.
  3. Tema 3. Segmentación y Paralelismo.
  4. Temas 4 y 5. Arquitectura y Diseño del Set de Instrucciones (ISA).
  5. Temas 7 y 8. Diseño del camino de datos y control de un CPU de ciclo único y de un CPU en pipelining. Riesgos de la segmentación.
  6. Tema 9. Conceptos avanzados de Pipelining.
  7. Tema 11. Memoria Cache.
  8. Tema 12. Memoria Virtual.
  9. Temas 13, 14 y 15. Sistema de I/O, Buses de interconexión y Diseño para bajo consumo de energía.
  10. Tema 16. Procesamiento Paralelo.

Laboratorios

  1. Simulador web Venus. Desarrollo de un programa en lenguaje ensamlador de RISC-V y su simulación.
  2. Simulador web Cachesim 2.0. Prueba y análisis de resultados de diversas configuraciones de cache y diversas trazas de accesos.
  3. Cuestionario Integrador Conceptual. Determinación de pre-Conceptos antes y después del cursado de la asignatura.

Bibliografía

  • Computer Organization and Design RISC-V Edition: The Hardware/Software Interface, 2nd Edition - Patterson, David. A. & Hennessy, John. L - Morgan Kauffman, 2021.
  • Computer Organization and Design: The Hardware/Software Interface (RISC-V Edition), 5th Edition - Patterson, David. A. & Hennessy, John. L - Morgan Kauffman, 2017.
  • Guía Práctica de RISC-V: El Atlas de una Arquitectura Abierta, 1ra edición - Autor: David Patterson & Andrew Waterman - Strawberry Canyon, 2018.
  • Estructura y Diseño de Computadores: La Interfaz Hardware/Software, 4ª Edición - Patterson, David & A.; Hennessy, John. L. - Reverté, 2011.
  • Computer Architecture: A Quantitative Approach, 5th Edition - John L. Hennessy and David A. Patterson - Morgan Kauffman, 2011.