MATERIA:Arquitectura de Computadoras.

CLAVE:COMP-620

SEMESTRE DE UBICACION:Sexto.

AREA:Ciencias de la Computación.


OBJETIVOS: Este curso trata alternativas de diseño en arquitectura de computadoras. Revisa y cubre la organización de la máquina a nivel de lenguaje ensamblador, la organización del subsistema de memoria, conceptos de interfase y aspectos que surgen al manejar las comunicaciones en el procesador. Se estudian también algunas arquitecturas alternativas.

TEMARIO:

  1. Introducción.

    Se presenta una visión general de lo que significa arquitectura en una computadora se presentan los esquemas de clasificación de arquitecturas.

    • Lenguajes, niveles y máquinas virtuales.

    • Máquinas multinivel contemporáneas.

    • Evolución de las máquinas multinivel.

    • Hardware, software y máquinas multinivel.
      • Piedras angulares en la arquitectura de computadoras. Desde las computadoras mecánicas hasta la cuarta generación, incluyendo a las familias de microprocesadores Intel y Motorola.

  2. Organización en los sistemas de cómputo.

    Se presentan las distintas organizaciones internas para los sistemas de cómputo, desde el punto de vista de la unidad de control y la manera como se coordina ésta con los distintos componentes de la computadora, como son la unidad central de procesamientos y los sistemas de memoria.

    • Procesadores. Ejecución de las instrucciones. Organización de la Unidad Central de Proceso. Ejecución de instrucciones paralelas.

    • Memoria. Bits. Direcciones de memoria. Orden en los bytes. Códigos para la corrección de errores. Memoria secundaria.

    • Entrada y salida. Terminales. Modems. Ratones. Impresoras. Códigos de caracteres.

  3. El nivel de la lógica digital.

    Dado un cierto comportamiento que se desea del sistema de cómputo, se debe abordar el problema de definir la estructura física y los componentes que van a cumplir con este objetivo. Se examinan en esta sección los componentes físicos de las computadoras, desde el más básico, las compuertas lógicas, hasta su organización en multiprocesadores o dispositivos para la comunicación entre los distintos bloques. Se ve a nivel de estructuras de bloques, apoyándose en el curso de Diseño de Sistemas Digitales.

    • Compuertas y álgebra booleana. Implementación de funciones booleanas. Equivalencias de circuitos.

    • Circuitos lógicos digitales básicos. Circuitos integrados. Circuitos combinatorios. Circuitos Aritméticos. Relojes.

    • Memoria. Latches. Registros y flip-flops. Organización de la memoria. Propiedades de la memoria.

    • Chips de microprocesadores y comunicación tipo bus. Buses síncronos y asíncronos. Arbitraje de buses. Manejo de las interrupciones.

    • Ejemplos de chips de microprocesadores. La serie 80 de Intel. La serie Motorola 68. Comparación de ambos.

    • Ejemplos de buses. El bus de la PC de IBM y el de la PC/AT. El bus VME.

    • Interfaces. Chips de entrada/salida. Decodificación de direcciones.

  4. Nivel de la Microprogramación.

    Se introduce el control en la ejecución de las instrucciones a través de la microprogramación, donde la selección y secuencia en la ejecución de las instrucciones está dada por una memoria de acceso directo llamada la memoria de control, opuesto al control dado por las líneas de control alambradas. Se ve esta opción como una capa de control superpuesta a la del hardware. Se revisan sus posibilidades y la manera como se integra este concepto en todos los niveles de la arquitectura del sistema de cómputo.

    • Revisión del nivel lógico digital. Registros. Buses. Multiplexores y decodificadores. Unidades aritmético-lógicas y registros de corrimiento. Relojes. Memoria principal. Empacado de componentes.

    • Ejemplo de una micro-arquitectura. La ruta para los datos. Microinstrucciones. Tiempo en las microinstrucciones. Secuencias en las microinstrucciones.

    • Ejemplos de microprogramas. El lenguaje Micro Ensamblador. El microprograma ejemplo. Anotaciones al microprograma. Perspectiva.

    • Diseño del nivel de microprogramación. Microprogramación vertical contra horizontal. Nanoprogramación. Mejoras al desempeño. Entubamiento (pipelining). Memorias caché.

    • Ejemplos de niveles de microprogramación. La microarquitectura del Intel 8088. La micro - arquitectura del Motorola 68000.

  5. El nivel de máquina convencional.

    Se revisan arquitecturas típicas de microprocesadores, revisando distintas opciones, sus ventajas y desventajas. Se revisan conjuntos de instrucciones y la organización interna de cada familia, así como el manejo de interrupciones y la atención a los dispositivos externos a la unidad central.

    • Ejemplos. La famlia Intel 8088/80286/80386. La familia Motorola 68000/68020/68030. Comparación entre ambas familias.

    • Formatos de instrucciones. Criterios para el diseño de formatos de instrucciones. Códigos de operación expandibles. Ejemplos de formatos de instrucciones.

    • Direccionamiento. Direccionamiento inmediato, directo, de registro, indirecto, con índice. Direccionamiento en el stack. Ejemplos de direccionamientos. Discusión de los distintos modos de direccionamiento.

    • Tipos de instrucciones. Instrucciones para el movimiento de datos. Operaciones diádicas, monádicas. Comparaciones y transferencias condicionales. instrucciones para el llamado de subrutinas. Control de ciclos. Entrada y salida.

    • Control de la secuencia en ejecución. Flujo secuencial y transferencias. Subrutinas. Corrutinas.Trampas (traps). Interrupciones.

  6. El nivel de la máquina del sistema operativo.

    Se revisan las tecnologías más importantes de los dispositivos para almacenaje, así como la capa de software (el sistema operativo) necesaria para un manejo eficiente de estos dispositivos. En el mismo tenor se revisan dispositivos de entrada y salida y su integración al sistema de cómputo a través del sistema operativo.

    • Memoria vitual. Paginación. Implemento de la paginación. Paginación por demanda y el modelo de "Conjunto de Trabajo". Políticas de reemplazo de páginas. Tamaños de página y fragmentación. Segmentación. Implementación de la segmentación. La memoria virtual en MULTICS. La memoria virtual en el Intel 80386. Memoria virtual en el Motorola 68030. Comparación.

    • Instrucciones de entrada y salida virtual. Archivos secuenciales. Archivos de acceso directo. Implementación de instrucciones de entrada y salida virtual. Instrucciones para la administración del directorio.

    • Sistemas operativos representativos. Ejemplos de memoria virtual, entrada y salida virtual, administración de procesos. Comparación de UNIX y OS/2.

  7. El nivel del lenguaje ensamblador.

    Se revisa la importancia del lenguaje ensamblador como herramienta útil y práctica para conocer y manejar un sistema de cómputo. Se pone énfasis en la similitud entre el lenguaje ensamblador y la arquitectura particular, así como en las extensiones que permiten los ensambladores tradicionales. Se revisa la manera en que el programa ensamblado se integra al resto del sistema y los pasos necesarios para su ejecución.

    • Introducción al lenguaje ensamblador. Características. Formato de un enunciado. Comparación de lenguaje ensamblador y lenguajes de alto nivel. Afinación de programas.

    • El proceso de ensamblado. Ensambladores de dos pasos y la descripción de cada uno de ellos. La tabla de símbolos.

    • Macros. Definición, llamada y expansión. Macros con parámetros. Implementación de una facilidad de macros en un ensamblador.

    • Ligado y carga. Tareas ejecutadas por el ligador. Estructura de un módulo objeto. Momento de ligado y relocalización dinámica. Ligado dinámico.

  8. Arquitecturas avanzadas de computadoras.

    Se revisan en detalle las arquitecturas modernas que se presentan en sistemas de cómputo relativamente grandes, para revisar las opciones a las computadoras personales. Estas arquitecturas son importantes ya que se presentan en muchas de las modernas estaciones de trabajo. Microcomputadoras multiusuario y finalmente en aquéllas que hacen posible procesamiento paralelo y/o distribuido.

    • Máquinas RISC. Evolución de la arquitectura de computadoras. Principios en el diseño de máquinas RISC. Uso de los registros. El debate entre la Gran RISC contra CISC. Ejemplos de arquitectura RISC: SPARC y MIPS.

    • Arquitecturas paralelas. Panorama. Computadoras MIMD con memorias ajenas. Multiprocesadores con memoria compartida en base a buses. Multiprocesadores MIMD multietapa de memoria compartida. Computadoras paralelas SIMD y la máquina de conección (conection machine). Computadoras vectoriales SIMD. Computadoras de flujo de datos.

BIBLIOGRAFIA:

  • Hamacher, V.C.; Vranesic, Z.G.; Zaky, S.G., Computer Organization, Third Edition, McGraw Hill , 1990.

  • Tanenbaum, A.S. Structured Cumputer, 3rd. Edition, Prentice Hall International, 1990.

BIBLIOGRAFIA COMPLEMENTARIA:

  • Bartee, T.C., Computer Architectur and Logic Design., McGraw-Hill, 1991.

  • Hwang, K.; Briggs, F.A., Arquitectura de Computadoras Y Procesamiento Paralelo, McGraw-Hill,1988.

  • Leng, P.; Charlton, C., Principles of Computer Organization, McGraw-Hill, 1990.

  • Leng, P.; Charlton, C., Principles of Computer Organization, McGraw-Hill, 1990.

  • Mano, M.M., Computer System Architectur, 3rd. Edition, Prentice Hall, Inc.,1992.