Bastida Ibáñez, J.
Introducción a la Arquitectura de Computadores
Ediciones Universidad de Valladolid
1995

DESCRIPCIÓN

El objetivo primordial de este libro es familiarizar al lector con el funcionamiento de un computador, tanto desde el punto de vista externo (lenguaje máquina) como a nivel interno (funcionamiento).

El libro está organizado en dos partes: la primera, denominada "Organización del computador", versa sobre la visión de los procesadores desde un punto de vista externo, entrando en tópicos como formatos de instrucción, modos de direccionamiento, etc. ; la segunda parte, "Bloques funcionales del computador", trata sobre el funcionamiento interno de cada una de las diversas partes del ordenador como memoria, unidad aritmética, etc.;

A lo largo del libro se toman como ejemplos una serie de máquinas de diferentes tipos que abarcan un amplio espectro del mercado. Asimismo, se proponen numerosos problemas que ayudan a reflexionar sobre las ideas expuestas en cada capítulo.

ÍNDICE DE MATERIAS

PARTE I: ORGANIZACIÓN DEL COMPUTADOR

  1. CONCEPTOS FUNDAMENTALES
    1.1.- Origen de los computadores
    1.2.- Breve reseña histórica
    1.2.1.- La era mecánica de los computadores
    1.2.2.- La era electrónica de los computadores
    1.2.3.- Generaciones de ordenadores
    1.2.4.- Tendencias actuales
    1.3.- Requisitos mínimos para la computación
    1.4.- Máquinas de Turing
    1.5.- Limitaciones de los computadores
    1.6.- El modelo de Von Neumann
    1.7.- Unidades funcionales
    1.8.- Ejecución de las instrucciones
    1.9.- Clasificaciones de los procesadores
    1.10.- Concepto de arquitectura de un ordenador
    1.11.- Niveles de estudio y descripción de un ordenador
    1.12.- Máquinas multinivel
    1.13.- Ejemplos de arquitecturas reales
    1.13.1.- PDP-11
    1.13.2.- VAX
    1.13.3.- IBM-360/370
    1.13.4.- HP-3000
    1.13.5.- Z-80
    1.13.6.- MC68000 y derivados
    1.13.7.- i-8086 y derivados
    1.13.8.- Arquitectura Alpha
    CUESTIONES Y PROBLEMAS

  2. FORMATOS DE INSTRUCCIÓN
    2.1.- Introducción
    2.2.- Criterios de diseño de los formatos de instrucción
    2.3.- Número de direcciones
    2.4.- Instrucciones con longitud variable
    2.5.- Instrucciones con código de operación de longitud variable
    2.5.1.- Codificación de Huffman
    2.5.2.- Códigos de operación con extensión
    2.6.- Ejemplos de formatos de instrucción en computadores reales
    2.6.1.- PDP-11
    2.6.2.- VAX
    2.6.3.- MC68000 y derivados
    2.6.4.- IBM-360/370
    2.6.5.- Z-80
    2.6.6.- i-8086 y derivados
    2.6.7.- Arquitectura Alpha
    CUESTIONES Y PROBLEMAS

  3. MODOS DE DIRECCIONAMIENTO
    3.1.- Introducción
    3.2.- Modos de direccionamiento más usuales
    3.2.1.- Direccionamiento implícito
    3.2.2.- Direccionamiento inmediato (o literal)
    3.2.3.- Direccionamiento directo por registro
    3.2.4.- Direccionamiento directo (o absoluto)
    3.2.5.- Direccionamiento indirecto
    3.2.6.- Direccionamiento relativo
    3.2.7.- Direccionamiento por base y desplazamiento
    3.2.8.- Direccionamiento indexado
    3.2.9.- Direccionamiento autoincremental o postincremental
    3.2.10.- Direccionamiento autodecremental o predecremental
    3.3.- Visión general de los modos de direccionamiento
    3.4.- Modos de direccionamiento en ordenadores reales
    3.4.1.- PDP-11
    3.4.2.- VAX
    3.4.3.- MC68000 y derivados
    3.4.4.- i-8086 y derivados
    CUESTIONES Y PROBLEMAS

  4. CONJUNTOS DE INSTRUCCIONES
    4.1.- Introducción
    4.2.- Características generales de los conjuntos de instrucciones
    4.3.- Tipos de instrucciones
    4.3.1.- Instrucciones de transferencia de datos
    4.3.2.- Instrucciones aritméticas y lógicas
    4.4.- Instrucciones de control del flujo de programa
    4.4.1.- Instrucciones de bifurcación
    4.4.2.- Iteraciones
    4.4.3.- Procedimientos
    4.4.4.- Corrutinas
    4.4.5.- Desvíos o excepciones (traps)
    4.4.6.- Interrupciones
    4.4.7.- Instrucciones de control de flujo en el VAX
    4.5.- Relación entre el lenguaje máquina y los lenguajes de alto nivel
    4.5.1.- Clases de variables
    4.5.2.- Direccionamiento de estructuras de datos
    4.6.- Características de los ordenadores RISC
    4.7.- Bibliografía y referencias
    CUESTIONES Y PROBLEMAS

PARTE II: BLOQUES FUNCIONALES DEL COMPUTADOR

  1. LA MEMORIA CENTRAL
    5.1.- Introducción
    5.2.- Características de las memorias
    5.3.- Jerarquía de las memorias
    5.4.- Clasificación de las memorias por su utilización
    5.5.- Organización de la memoria
    5.6.- Asociaciones de memorias
    5.6.1.- Memorias entrelazadas
    5.7.- Ampliación del espacio de memoria direccionable
    5.7.1.- Conmutación de bancos
    5.7.2.- Extensión de direcciones
    5.8.- Memorias especiales
    5.8.1.- Colas
    5.8.2.- Pilas
    5.8.3.- Memorias asociativas
    5.9.- Memorias caché
    5.9.1.- Funciones de mapa
    5.9.2.- Algoritmos de reemplazo
    5.9.3.- Políticas de extracción y actualización de la memoria principal
    5.9.4.- Tipos de faltas de bloque
    5.9.5.- Ejemplos reales de memoria caché
    5.10.- Bibliografía y referencias
    CUESTIONES Y PROBLEMAS

  2. LA UNIDAD ARITMÉTICO-LÓGICA
    6.1.- Introducción
    6.2.- Operaciones elementales que debe realizar la A.L.U.
    6.3.- Circuitos para la realización de las operaciones elementales
    6.4.- Sumadores
    6.4.1.- Semisumador
    6.4.2.- Sumador total
    6.4.3.- Sumador serie
    6.4.4.- Sumador paralelo
    6.4.5.- Sumador con llevadas anticipadas
    6.4.6.- Sumadores con selección de llevadas
    6.4.7.- Sumadores condicionales
    6.4.8.- Sumadores con ahorro de llevadas
    6.5.- Sustracción
    6.6.- Estructura básica de la A.L.U.
    6.7.- Multiplicación
    6.8.- Procesadores bit-slice
    6.9.- Coprocesadores
    6.10.- Bibliografía y referencias
    CUESTIONES Y PROBLEMAS

  3. ALGORITMOS ARITMÉTICOS
    7.1.- Introducción
    7.2.- Estructura física para implementar los algoritmos
    7.3.- Multiplicación
    7.3.1.- Multiplicación por suma y desplazamiento
    7.3.2.- Multiplicación por el método de Robertson
    7.3.3.- Multiplicación por el algoritmo de Booth
    7.3.4.- Multiplicación por solapamiento de ternas
    7.3.5.- Algoritmo de Baugh-Wooley
    7.4.- División
    7.4.1.- División con restauración
    7.4.2.- División sin restauración
    7.4.3.- División combinacional
    7.5.- Aritmética de punto flotante
    7.6.- Bibliografía y referencias
    CUESTIONES Y PROBLEMAS

  4. 8.- LA UNIDAD DE CONTROL
    8.1.- Introducción
    8.2.- Organización de los buses
    8.3.- Secuencia de señales de control para la ejecución de una instrucción
    8.4.- Métodos de implantación de la unidad de control cableada
    8.4.1.- Método del contador de fases
    8.4.2.- Método de los elementos de retardo
    8.5.- Segmentación (pipe-lining)
    8.6.- Bibliografía y referencias
    CUESTIONES Y PROBLEMAS

  5. MICROPROGRAMACIÓN
    9.1.- Introducción y definiciones
    9.2.- Modelo de Wilkes
    9.3.- Codificación de las microinstrucciones
    9.3.1.- Codificación por campos
    9.3.2.- Microinstrucciones con formato múltiple
    9.3.3.- Microprogramación a dos niveles
    9.3.4.- Control residual
    9.4.- Secuenciamiento en los microprogramas
    9.4.1.- Secuenciamiento implícito
    9.4.2.- Secuenciamiento explícito
    9.4.3.- Microinstrucciones de bifurcación condicional
    9.5.- Obtención de la dirección inicial
    9.5.1.- Árbol de decodificación
    9.5.2.- Tabla de saltos
    9.5.3.- Memoria de traslación
    9.6.- Hardware de la unidad de control microprogramada
    9.7.- Ejemplo de unidad de control microprogramada
    9.8.- Observaciones finales
    9.9.- Bibliografía y referencias
    CUESTIONES Y PROBLEMAS

  6. ORGANIZACIÓN DE ENTRADA/SALIDA
    10.1.- Introducción y definiciones
    10.2.- Direccionamiento de los dispositivos de entrada/salida
    10.3.- Transferencia de datos
    10.3.1.- E/S por programa
    10.3.2.- Acceso directo a memoria (DMA)
    10.4.- Prioridades
    10.4.1.- Gestión centralizada de prioridades
    10.4.2.- Gestión distribuida de prioridades
    10.4.3.- Gestión híbrida de prioridad
    10.5.- Sincronización
    10.5.1.- Encuesta para la verificación de condición (polling)
    10.5.2.- Interrupciones
    10.6.- Gestión de interrupciones
    10.6.1.- Habilitación y deshabilitación de interrupciones
    10.6.2.- Enmascarado de interrupciones
    10.6.3.- Anidamiento de interrupciones
    10.6.4.- Peticiones simultáneas de interrupción
    10.6.5.- Identificación del dispositivo
    10.6.6.- Vectorización de interrupciones
    10.6.7.- Pasos necesarios en la atención a interrupciones
    10.7.- Procesadores de E/S (canales)
    10.7.1.- Tipos de canales
    10.8.- La entrada/salida y el sistema operativo
    10.9.- Ejemplos de organizaciones de E/S
    10.9.1.- PDP-11
    10.9.2.- IBM-360/370
    10.9.3.- MC68000 y derivados
    10.9.4.- i-8086 y derivados
    10.9.5.- Z-80
    10.10.- Bibliografía y referencias
    CUESTIONES Y PROBLEMAS

  7. BUSES E INTERFACES DE ENTRADA/SALIDA
    11.1.- Introducción
    11.2.- Características de los buses
    11.3.- Niveles de especificación de un bus
    11.4.- Conversiones entre grados de paralelismo diferentes
    11.5.- Buses de ciclo partido
    11.6.- Sincronización
    11.7.- Jerarquía de los buses
    11.7.1.- Buses internos de las pastillas
    11.7.2.- Buses de interconexión de pastillas
    11.7.3.- Buses de sistema
    11.7.4.- Buses de entrada/salida
    11.7.5.- Redes de computadores
    11.8.- Diseño de una interfaz paralela
    11.9.- Diseño de una interfaz serie
    11.10.- Ejemplos de buses e interfaces
    11.10.1.- Bus S-100
    11.10.2.- Interfaz IEEE-488
    11.10.3.- Interfaz RS-232-C
    11.11.- Bibliografía y referencias
    CUESTIONES Y PROBLEMAS