Atributos
Sigla: 
CI-0120
Créditos: 
4
Horas: 
5
Clasificación: 
Curso propio
Énfasis y ciclo: 
Ciencias de la Computación 3.I
Descripción: 

Este curso está dirigido a estudiantes que inician su tercer año de bachillerato. Se enfoca en el estudio de distintas arquitecturas de computadoras para permitirle al estudiante tomar decisiones acertadas sobre las capacidades de un computador para ejecutar un determinado programa de manera eficiente, especialmente en ambientes de ejecución paralela. Se requieren conocimientos amplios de programación en C/C++, ensamblador y lenguaje de máquina. Durante el curso, el estudiante adquiere un mayor criterio que le permite evaluar y comparar el rendimiento de diferentes arquitecturas de computadoras. El curso puede darse bajo un enfoque por proyectos o mediante una combinación de clases magistrales, estudio independiente y tareas con el uso de laboratorios.

Objetivo general: 

El objetivo general del curso es que cada estudiante comprenda los principios de diseño que rigen las principales arquitecturas de computadoras para determinar su impacto en el rendimiento de los programas.

Objetivos específicos: 

Durante este curso el estudiante desarrollará habilidades para:

  1. Relacionar la arquitectura de una computadora con su conjunto de instrucciones.
  2. Utilizar técnicas que permitan obtener estadísticas dinámicas sobre los tipos de instrucciones ejecutadas.
  3. Realizar y evaluar diferentes mediciones de desempeño de procesadores con el fin de comprender cómo y por qué la arquitectura del procesador en el que se trabaja es un elemento determinante en el comportamiento de las aplicaciones de software que ahí se ejecuten.
  4. Analizar críticamente un microprocesador calculando medidas de rendimiento con base en sus elementos y la organización de su arquitectura.
  5. Comparar y contrastar distintas organizaciones de memoria.
  6. Aplicar técnicas que aprovechen el paralelismo inherente a un proceso.
  7. Explicar las diferencias que existen entre distintos procesadores y multiprocesadores con implementaciones de paralelismo de hilos, de procesos y de datos.
Contenidos: 
Objetivo específico Eje temático Desglose
1 y 2  Fundamentos de diseño  El diseño de computadoras. Clases de computadoras. Definición de la arquitectura de una computadora. Tendencias en la tecnología de circuitos integrados y sus costos, consumo de energía y eficiencia. Medición del desempeño. Principios cuantitativos en el diseño de computadores.
1 y 3 Arquitectura basada en el conjunto de instrucciones  Clasificación. Direccionamiento de memoria. Modos de direccionamiento para procesamiento de señales. Tipo y tamaño de los operandos. Operandos para procesamiento de señales y multimedia. Operaciones para procesamiento de señales y multimedia. Instrucciones para el control de flujo. Codificación de un conjunto de instrucciones. Rol de los compiladores. Relación con lenguajes de alto nivel. Arquitectura MIPS.
1, 6 y 7 Paralelismo a nivel de instrucciones y ejecución segmentada (pipeline)  Definición de pipelining. Problemas con el pipeline: conflictos de datos y de control. Dificultades para implementar pipelining (excepciones). Pipeline para operaciones multiciclo y ejemplo del pipeline para el procesador MIPS. Procesadores superescalares (de emisión múltiple).
5 Jerarquías de memoria Introducción a las memorias caché. Translation lookaside buffers (TLB). Tecnología de memoria y optimizaciones. Desempeño de la caché. Reducción de tasa de fallos de caché. Diseño de jerarquías de memoria y memoria virtual. Protección y ejemplos de memoria virtual.
4, 6 y 7
 
Paralelismo a nivel de datos  Arquitecturas vectoriales, SIMD (single instruction, multiple data) y GPU (graphics processing unit). Extensiones SIMD del conjunto de instrucciones para multimedios.
6 y 7 Paralelismo a nivel de hilos  Arquitecturas de memoria compartida centralizada. Multiprocesadores simétricos (SMP), Acceso uniforme a memoria (UMA). Desempeño de los multiprocesadores de memoria compartida simétrica. Coherencia de caché mediante protocolos snooping. Arquitecturas de memoria compartida distribuida no uniforme (NUMA). Coherencia de caché mediante protocolos de directorios.
5

Almacenamiento externo

Discos duros, memorias flash y discos de estado sólido (SSD).

3 Redes de interconexión y clusters Creación de procesos en ambientes de multiprocesadores.
Bibliografía: 

[1] William Stallings. ((Computer Organization and Architecture)). Pearson, 10 aedición (2015).
[2] David A. Patterson y John L. Hennessy. ((Computer Organization and Design)). Elsevier Inc. / Morgan Kaufmann Publishers, San Francisco, 5.a edici´on (2014).
[3] John L. Hennessy y David A. Patterson. ((Computer Architecture: A Quantitative Approach)). Elsevier Inc. / Morgan Kaufmann Publishers, San Francisco, 5.a edición (2012)

LIberación de responsabilidad: 

Este no es un documento oficial. Documentos oficiales se entregan en la secretaría de la escuela.