Arquitectura de procesadores y sistemas operativos


Datos generales
Nombre Completo del Programa de Posgrado: Maestría y Doctorado en Ciencias en Ingeniería Eléctrica
Nombre Completo del Curso: Arquitectura de procesadores y sistemas operativos
Tipo de curso: Electivo
Créditos: 8
Número de Horas:
  • Teóricas: 60 Presenciales
  • Prácticas: 0 No presenciales
Profesores que impartirán el curso: Susana Ortega Cisneros
General
El objetivo de este curso es ofrecer las bases para implementar una unidad de procesamiento moderna basada en la arquitectura y el set de instrucciones de hardware libre utilizando un diseño de tipo RISC (conjunto de instrucciones reducido).

Específicos
Los integrantes del curso llevaran un repaso en las bases de la programación en verilog, así como la jerarquía de memorias y la aritmética para computadoras. Se verán las diferentes metodologías para las arquitecturas súper-escalares y como se pueden estas implementar en un microprocesador. Incursionaremos en los estándares del ISA (arquitectura del set de instrucciones) para el RISC-FIVE (RISC-V) para aprender cómo se pueden implementar en hardware, tomando en cuenta las señales de control requeridas y el flujo de datos en hardware.
Se utilizará el software para programación de FPGA Intel® Quartus Prime Lite Edition 18.0 Se impartirán los conocimientos requeridos para diseñar microprocesadores, microcontroladores, SoC para sistemas embebidos, cubriendo y cumpliendo con los protocolos de comunicación y electrónica.
Introducción. Instalación de Quartus y Vista General del Software
1. Introducción al Microprocesador
1.1. Lo Esencial de las Computadoras
1.1.1. ¿Qué es un microprocesador?
1.1.2. La historia del Microprocesador
1.2. Unidades funcionales de un CPU
1.2.1. Unidades de Entrada y Salida
1.2.2. Unidades Lógicas y Aritméticas
1.2.3. Unidades de Memoria
1.2.4. Unidades de Control
1.3. Representación de números
1.3.1. Conversión entre Números
1.3.2. Números Enteros
1.3.3. Extensión de Signo
1.3.4. Números de punto flotante
1.4. Representación de caracteres
1.4.1. ASCII
1.5. RISC vs. CISC
1.6. Mejorar el rendimiento de un Procesador
1.6.1. Paralelismo a nivel instrucción
1.6.2. Paralelismo a nivel procesador
1.7. Estructuras de Entrada y Salida
1.7.1. El acceso a los dispositivos de entrada y salida
2. Unidad de Procesamiento Básica
2.1. Introducción a una unidad de procesamiento
2.2. Lo Esencial de un Procesador
2.2.1. Diagrama de flujo de un CPU y su organización
2.2.2. ¿Cómo se ejecutan las instrucciones?
2.2.3. Métricas de rendimiento del procesador
2.3. ¿Que son las instrucciones?
2.3.1. Instrucciones de Carga
2.3.2. Instrucciones de Guardado
2.3.3. Instrucciones lógicas y Aritméticas
2.4. Componentes en Hardware
2.4.1. ALU
2.4.2. Archivo de Registro
2.4.3. La ruta de Datos
2.4.4. Búsqueda de Instrucciones
2.4.5. Memoria de almacenamiento
2.5. Ejecuciones de instrucciones condicionales
2.5.1. Branching
2.5.2. Jump
2.5.3. Stall
2.6. La unidad de control
2.6.1. Señales de control para instrucciones de carga
2.6.2. Señales de control para instrucciones de guardado
2.6.3. Señales de control para instrucciones lógicas y aritméticas
2.7. Tipos de ejecución de procesadores
2.7.1. Procesador Uniciclo
2.7.2. Procesador Multiciclo
2.7.3. Procesador Segmentado
2.8. Interrupciones
2.8.1. ¿Qué son las Interrupciones?
2.8.2. Funcionamiento de las Interrupciones
2.8.3. Tipos de Interrupciones
2.8.3.1. Interrupciones de Hardware
2.8.3.2. Excepciones
2.8.3.3. Interrupciones de Software
2.8.4. Prioridad en el Sistema
2.8.4.1. Interrupciones Simultaneas
2.8.4.2. Interrupciones Anidadas
2.8.4.3. Inhibición de Interrupciones
3. Lenguaje de la computadora: El ISA
3.1. ¿Qué es el set de instrucciones?
3.2. Clasificación y comparación de diferentes tipos de ISA
3.3. Tipos de Instrucciones
3.3.1. Operaciones de memoria y manejo de datos
3.3.2. Operaciones Aritméticas y Lógicas
3.3.3. Operaciones de flujo de control
3.4. Instrucciones complejas
3.5. Codificación de instrucciones
3.5.1. Valores inmediatos en las instrucciones
3.5.2. Campos definidos en la instrucción
3.5.3. Manejo de registros en las instrucciones
4. El Pipeline y las arquitecturas superescalares
4.1. ¿Qué es el pipeline?
4.1.1. Ventajas del pipeline
4.1.2. Problemas del pipeline
4.1.3. Variaciones de Sincronización
4.2. Peligros en la ejecución de instrucciones
4.2.1. Peligros Estructural
4.2.2. Peligros en los Datos
4.2.3. Peligros de Flujo de Control
4.3. Branching
4.3.1. Retardos de Branching
4.3.2. Predicción de Branch
4.4. Retardos de Memoria
4.5. Dependencias de Datos
4.6. Operación Superescalar
4.6.1. Taxonomía de Flynn
4.6.2. Ejecución fuera de orden
4.6.3. Ejecución Especulativa
4.6.4. ROB
4.6.5. Renombramiento de registros
4.6.6. VLIW
5. Interfaces de entrada y Salida
5.1. Entradas y Salidas
5.2. Estructura de un BUS
5.2.1. ¿Cómo funciona un BUS?
5.2.2. BUS Síncrono
5.2.3. BUS Asíncrono
5.3. Interfaces de circuitos
5.3.1. Interfaz serial
5.3.2. Interfaz paralelo
5.4. Estándares de comunicación más comunes
5.4.1. Universal Serial Bus (BUS)
5.4.2. FireWire
5.4.3. PCI
5.4.4. SATA
5.4.5. PCIe
6. La jerarquía y el Sistema de memorias
6.1. ¿Qué son las memorias?
6.2. Tecnologías utilizadas en memorias
6.2.1. Direcciones de Memoria
6.2.2. Byte Ordering
6.2.3. Códigos de Corrección de error
6.3. Jerarquía de memorias
6.4. Memorias RAM en semiconductor
6.4.1. Memoria Estática (SRAM)
6.4.2. Memoria Dinámica (DRAM)
6.4.3. Memoria de Video (VRAM)
6.4.4. FPM
6.4.5. EDO
6.4.6. BEDO
6.4.7. SDRAM
6.4.8. DDR SDRAM
6.5. Memorias de solo lectura
6.5.1. ROM
6.5.2. EEPROM
6.5.3. FLASH MEMORY
6.6. Memorias Cache
6.6.1. Introducción a las cache
6.6.2. Funciones de mapeo
6.6.3. Penalización de Hit/Miss rate
6.7. Memorias Cache Avanzadas
6.7.1. Algoritmo de Bélády's
6.7.2. First in First out (FIFO)
6.7.3. Last in First out (LIFO)
6.7.4. Least Recently used (LRU)
6.7.5. Time aware least recently used (TLRU)
6.7.6. Most recently used (MRU)
6.7.7. Pseudo-LRU(PLRU)
6.7.8. Random Replacement (RR)
6.8. Memoria Secundaria o de gran almacenamiento
6.8.1. HDD
6.8.2. SDD
6.8.3. M.2
6.8.4. NVMe
7. Aritmética para Computadoras
7.1. Conversiones de números
7.2. Números Signed y Unsigned
7.2.1. Módulos lógicos de suma/resta
7.2.2. Suma y resta con números Signed
7.2.3. Multiplicación con Signed y Unsigned
7.3. El punto flotante
7.3.1. Estándar IEEE 754
7.3.2. Representación y formatos
7.3.3. Operaciones aritméticas con punto flotante
7.3.4. Aritmética con punto flotante
7.4. División de enteros
8. Sistemas Embebidos
8.1. Un microcontrolador simple
8.1.1. ¿Qué es un µC?
8.1.2. Diferencias entre microcontrolador y microprocesador
8.2. Microprocesador Integrado
8.3. Memoria
8.4. Interrupciones
8.5. Periféricos
8.5.1. I/O de propósito general
8.5.2. Temporizadores y contadores
8.5.3. ADC
8.6. Puertos de comunicación
8.6.1. Serie
8.6.2. SPI
8.6.3. I2C
8.6.4. USB
8.6.5. Ethernet
8.6.6. CAN
8.6.7. BT
8.6.8. VGA
8.7. Comparadores
8.8. Moduladores de Ancho de pulso PWM
8.9. Familias de microcontroladores
8.10. Sensores y actuadores
8.11. Problemas de diseño
9. El Microprocesador RISC-V
9.1. ¿Qué es el Microprocesador RISC-V?
9.2. Historia del microprocesador RISC-V
9.3. Set de instrucciones del RISC-V
9.3.1. RV32I: ISA RISC-V Base para números enteros
9.3.2. RV32M: Multiplicación y División
9.3.3. RV32F: Punto flotante de precisión simple
9.3.4. RV32D: Punto flotante de precisión doble
9.3.5. RV32A: Instrucciones Atómicas
9.3.6. RV32C: Instrucciones Comprimidas
9.3.7. RV32V: Instrucciones Vectoriales
9.3.8. RV64: Instrucciones de Memoria de 64 bits
9.4. Arquitectura Privilegiada RV32/64
9.5. Futuras Extensiones RISC-V Opcionales
10. La Arquitectura del procesador RISC-V 32 bits
10.1. ¿Qué es un System on CHIP?
10.2. Microprocesador RISC-V Uniciclo
10.3. Microprocesador RISC-V Multiciclo
10.4. Microprocesador RISC-V Superescalar
10.5. Etapas de Ejecución Generalizadas
10.5.1. Etapa IF
10.5.2. Etapa ID
10.5.3. Etapa EX
10.5.4. Etapa MEM
10.5.5. Etapa WB
11. Implementación de microprocesador RISC-V en FPGA
11.1. Implementación de RISC-V Uniciclo
11.1.1. Etapa IF
11.1.1.1. Contador del Programa
11.1.1.2. Declaración de Memoria de instrucciones
11.1.1.3. Señales de control para Jump y Branches
11.1.2. Etapa ID
11.1.2.1. Señales de Control para Instrucciones
11.1.2.2. Unidad de Control
11.1.2.3. Archivo de Registros
11.1.2.4. Extensor de Signo
11.1.3. Etapa EX
11.1.3.1. ALU
11.1.3.2. FPU
11.1.4. Etapa MEM
11.1.4.1. Declaración de Memoria de Datos
11.1.5. Etapa WB
11.1.5.1. Selector de Datos
11.2. Implementación de Arquitecturas Superescalares
11.2.1. VLWI
11.2.2. Out of Order
11.3. Implementación de Cache en FPGA para el RISC-V
11.4. Implementación de protocolos de comunicación para RISC-V
11.5. Implementación final del microprocesador en la FPGA
12. Simulaciones y Benchmarks
12.1.GNU toolchain para RISC-V con GCC
12.2. Estudios de Caso
12.2.1. Serie de Fibonacci (BIGFIB)
12.2.2. Merge y Sort de un Array (MSORT)
12.2.3. Algoritmo Nqueen (NQUEEN)
12.2.4. Multiplicacion de Matrices (MM)
12.2.5. Torres de Hanoi (TOWERS)
12.2.6. Dhrystone (DHRYSTONE)
12.2.7. QuickSort (QSORT)
12.2.8. Marices Dispersas Vectoriales (SPMV)
12.2.9. Suma Vector-Vector (VVADD)
  1. Computer organization and Design: The hardware/software Interface 3rd Edition by Patterson and Hennessy
  2. Computer organization and Design: The hardware/software Interface RISC-V Edition by Patterson and Hennessy
  3. Computer Organization and Embedded Systems McGraw-Hill (2011) by Carl Hamacher, Zvonko Vranesic, Safwat Zaky, Naraig Manjikian
  4. Introduction to Computing Systems From bits and gates to C and beyond McGraw-Hill (2005) Yale Patt, Sanjay Patel
  5. Guía Práctica de RISC-V: El atlas de una Arquitectura abierta 1era Edición por Patterson y Waterman traducida por Ali Lemus y Eduardo Corpeño
  6. The RISC-V Instruction Set Manual Volume I: User-Level ISA by Waterman and Asanovic
  7. The RISC-V Instruction Set Manual Volume II: Privileged Architecture by Waterman and Asanov
  8. Everyone’s a Critic: A Tool for Exploring RISC-V Projects Dustin Richmond, Michael Barrow, and Ryan Kastner
  9. RISC-V Software Tools Bootcamp RISC-V ISA Tutorial HPCA-21 Albert Ou UC Berkeley
  10. RISC-V Getting Started Guide RISC-V Foundation
  11. Build Run and Write RISC-V Programs CS250 Tutorial 3 Unsup Lee
  • Tareas 30%
  • Exámenes (2 parciales y un final) 40%
  • Proyecto Final 30%
  • Total 100%
  • Conocimientos:
  • Habilidades:
  • Actitudes y valores:
Centro de Investigación y de Estudios Avanzados del Instituto Politécnico Nacional
Av. del Bosque 1145, colonia el Bajío, CP 45019, Zapopan , Jalisco, México.
Tel: (33) 3777-3600 Fax: (33) 3777-3609