Arquitectura de Computadoras

Programa Analítico


Identificación

Objetivos, actuales
  • Analizar las características de las computadoras desde el punto de vista de su arquitectura y organización.
  • Describir las filosofías y tendencias actuales en el diseño arquitectónico de las computadoras.
  • Aplicar los fundamentos de diseño de las computadoras paralelas.
Objetivos, prouestos*
  • Analizar las características de las computadoras desde el punto de vista de su arquitectura y organización.
  • Describir las filosofías y tendencias actuales en el diseño arquitectónico de las computadoras.
  • Arquitecturas paralelas...
  • Implementar circuitos aritméticos en HDL
  • Implementar un CPU sencillo en HDL

Contenido Sintético,  actual

1. Introducción a la arquitectura de computadoras.
2. Microarquitectura.
3. Memoria.
4. Entrada/Salida.
5. Lenguajes de máquina.
6. Procesadores de alto rendimiento.
7. Arquitecturas paralelas



Contenido Sintético, propuesto

1. Introducción a la arquitectura de computadoras.
2. Lenguajes de máquina
3. Microarquitectura.
4. Memoria.
5. Entrada/Salida.
6. Introducción a las Arquitecturas Avanzadas de Computadoras.


Tema I: Introducción a la arquitectura de computadoras

Objetivos:
  • Describir las propiedades de la computadora desde el punto de vista de la máquina multinivel.
  • Emplear algoritmos de aritméticos para el desarrollo de circuitos en HDL

Contenido:
  • Representación de la Información
  • Números de punto fijo
    • Números sin signo y con signo
    • Rango y precisión
  • Aritmética de números de punto fijo
    • Adición y substracción
    • Multiplicación
    • División
  • Números de punto flotante
    • Representación
    • Estándar IEEE 754
    • Rango y precisión
  • Aritmética de números de punto flotante
    • Adición y substracción
    • Multiplicación
    • División
  • Aritmética de alto rendimiento
    • Predictor de acarreo
    • Algoritmos de Booth
    • Multiplicador matricial
    • División
Referencias:
1 [MUR] y 4 [STALL]

Horas de clase:
10.5 (7 clases)


Observaciones:
Se recomienda que el profesor realice ejemplos demostrativos de diseño digital y simulación funcional de circuitos utilizando herramientas para HDL


Tema II: Lenguajes de la máquina

Objetivos:
  • Distinguir los diferentes fases del proceso de compilación, ensamblado y enlazado.
  • Construir bloques de instrucciones funcionalmente equivalentes a sentencias sencillas de un lenguaje de alto nivel.
Contenido:
  • Fases del proceso de compilación
  • Compilación
    • Directivas al preprocesador
    • Análisis: semántico, lexicográfico
  • Ensamblado
    • Formato de instrucción
    • Tabla de símbolos
  • Enlazado
    • Tabla de Símbolos, símbolos globales y externos
    • Reubicación de código
  • Subrutinas
    • Paso de parámetros por registros
    • Paso de parámetros por segmento de memoria
    • Paso de parámetros por medio de una pila
Referencias:
1 [MUR] y 4 [STALL]

Horas de clase:
7.5 (5 clases)

Observaciones:
Se recomienda que el profesor realice ejemplos demostrativos de programas en lenguaje de alto nivel y en lenguaje ensamblador de la arquitectura en estudio.


Tema III: Microarquitectura

Objetivos:
  • Comprender los principios de diseño de la Unidad de Control y de la Ruta de Datos de un procesador.
  • Identificar las formas de diseño de la Unidad de Control.
  • Aplicar un lenguaje de HDL para el diseño de una microarquitectura sencilla.
Contenido:
  1. Conceptos generales
  2. Ruta de Datos
    • Interconexión de unidades funcionales
    • Registros de propósito general y propósito específico
    • ALUs
  3. Estratégias de diseño de la Unidad de Control
    • Microprogramado
    • Alambrado
    • Señales de control
Referencias:
2 [PATER], 1 [MUR] y 3 [TANEN]

Horas de clase:
7.5 (5 clases)

Observaciones:
Para el diseño e implementación de la microarquitectura en un HDL, se podría utilizar alguna de las arquitecturas de la bibliografía o una propuesta por el profesor.


Tema IV: Memoria

Objetivos:
  • Identificar la jerarquía de los diferentes tipos de memoria de las computadoras
  • Comprender el funcionamiento de la memoria caché
  • Comprender el funcionamiento de la memoria virtual
Contenido:
  1. Tipos de memoria y su jerarquía
    • Jerarquía de memoria: capacidad y tiempo de acceso
    • Organización de la memora RAM
  2. Memoria caché
    • Principio de localidad
    • Asignación de direcciones asociativa
    • Asignación de direcciones  directa
    • Asignación de direcciones asociativa por conjuntos
    • Políticas de reemplazo
    • Rendimiento de la memoria caché
  3. Memoria Virtual
    • Superposiciones
    • Paginación e intercambio
    • Traducción de direcciones virtuales a direcciones físicas
    • Políticas de intercambio de páginas
    • El TLB
  4. Segmentación de memoria
    • Registros de segmentos
    • Atributos de segmentos
Referencias:
1 [MUR], 3 [TANEN] y 2 [PATER]

Horas de clase:
 
7.5 (5 clases)

Observaciones:



Tema V: Entrada-Salida

Objetivos:
  • Explicar los modos de operación de entrada-salida
  • Describir el funcionamiento del sistema de buses
  • Describir el funcionamiento del DMA
  • Describir el funcionamiento de un dispositivo de almacenamiento

Contenido:
  • Sistema de Buses
    • Jerarquía de buses
    • Arbitraje
    • Bus síncrono
    • Bus asíncrono
  • Acceso directo a la memoria (DMA)
    • Revisión de los modos de acceso: entrada-salida programada e interrupciones
    • Funcionamiento del DMA
  • Dispositivos de almacenamiento
    • Organización física del disco duro magnético
    • Tiempos de transferencia
    • Sistemas raid de niveles 0 y 5
Referencias:
1 [MUR], 3 [TANEN] y 2 [PATER]

Horas de clase:
6.0 (4 clases)

Observaciones:


Tema VI: Introducción a las Arquitecturas Avanzadas de Computadoras

Objetivos:
  • Conocer los criterios de diseño para mejorar el desempeño de los CPU
  • Comprender los aspectos más importantes del diseño de las arquitecturas paralelas
Contenido:
  • Arquitecturas CISC, RISC y EPIC
  • Pipeline
    • Fundamentos de diseño
  • Solución de riegos del pipeline
    • Predicción dinámica
    • Predicción estática
    • Ejecución fuera de orden
    • Ejecución especulativa
  • Arquitecturas Superescalares y VLIW
  • Taxonomia de Flynn
  • Ley de Amdahl
  • Arquitecturas Paralelas
    • Multiprocesadores
    • Multicomputadoras
Referencias:
 
5 [HENNE], 3 [TANEN] y 4 [STALL]

Horas de clase:
9.0 (6 clases)

Observaciones:


Modalidades de Conducción del Proceso de Enseñanza Aprendizaje, actuales
  • Clase teórica con apoyo de medios audiovisuales y computacionales. Alternativamente modalidad SAI
Modalidades de Conducción del Proceso de Enseñanza Aprendizaje, propuesta
  • Clase teórica con apoyo de medios audiovisuales y herramientas CAD.
  • Desarrollo de 1 o 2 practicas tarjetas de desarrollo con FPGA*
  •  Alternativamente modalidad SAI

Modalidades de Evaluación, actuales
  • Evaluaciones periódicas mínimo dos (80%), consistentes en preguntas conceptuadas, resolución escrita de problemas, simulaciones por computadora, trabajos monográficos con reporte y tareas extraclase.
  • Una evaluación terminal (20%), consistente en preguntas conceptuales y problemas escritos. La evaluación terminal podrá exentarse (a juicio del profesor) en consideración a un alto promedio de las evaluaciones periódicas.
  • Evaluación de recuperación: Si hay, consistente en preguntas conceptuadas y problemas escritos (100%). No requiere inscripción previa.

Modalidades de Evaluación, propuesta
  • Evaluaciones parciales departamentales*
  • Evaluaciones periódicas mínimo dos (80%), consistentes en preguntas conceptuadas, resolución escrita de problemas, simulaciones por computadora, trabajos monográficos con reporte y tareas extraclase.
  • Una evaluación terminal (20%), consistente en preguntas conceptuales y problemas escritos. La evaluación terminal podrá exentarse (a juicio del profesor) en consideración a un alto promedio de las evaluaciones periódicas.
  • Evaluación de recuperación: Si hay, consistente en preguntas conceptuadas y problemas escritos (100%). No requiere inscripción previa.



Bibliografía, actuales

1. Murdocca, Miles J., "Principles of Computer Architecture", Ed. Prentice Hall. 2000.
2. Patterson, David A. and John L. Hennessy, "Computer Organization and Design: The Hardware/Software Interface", Third Edition, Ed. Morgan Kaufmann Publishers. 2005.
3. Tanembaum, Andrews S., "Organización de Computadoras: un Enfoque Estructurado", 3ra. edición, Ed. Pearson Education, 1999.
4. Stallings, William, "Organización y Arquitectura de Computadores: Diseño para Optimizar Prestaciones", 4a. edición, Ed. Prentice Hall, 1997.

Bibliografía, propuesta

1. Murdocca, Miles J., "Principles of Computer Architecture", Ed. Prentice Hall. 2000.
2. Patterson, David A. and John L. Hennessy, "Computer Organization and Design: The Hardware/Software Interface", Third Edition, Ed. Morgan Kaufmann Publishers. 2005.
3. Tanembaum, Andrews S., "Organización de Computadoras: un Enfoque Estructurado", 3ra. edición, Ed. Pearson Education, 1999.
4. Stallings, William, "Organización y Arquitectura de Computadores: Diseño para Optimizar Prestaciones", 4a. edición, Ed. Prentice Hall, 1997.
5.HENNESSY J., PATTERSON D.,  "Computer Architecture: A Quantitative Approach", 4th Edition, Morgan Kaufman, 2007