Prólogo
Objetivos
El objetivo básico del libro es dar una visión, lo más completa posible, de los fundamentos de la arquitectura, organización y diseño de computadores.
La arquitectura de computadores estudia la estructura y comportamiento de los diferentes módulos funcionales de un computador y como interaccionan entre sí para proporcionar las necesidades de procesamiento de los usuarios. Es decir, su finalidad es considerar los atributos de un computador que son visibles a un programador a nivel de lenguaje máquina. Ejemplos de estos atributos son el repertorio de instrucciones, los mecanismos de E/S y las técnicas de direccionamiento de memoria.
La organización de los computadores se ocupa de la descripción de sus unidades operacionales y de como se conectan para obtener una arquitectura dada. Su interés se centra en cuestiones, que son transparentes al usuario de un computador, tales como: las interfaces entre el computador y los periféricos, la tecnología de memoria y las señales de control utilizadas, etc.
Un ejemplo que ilustra la distinción entre arquitectura y organización de un computador es el siguiente: El diseñador de la arquitectura tiene que decidir, por ejemplo, si se va a incluir dentro del repertorio de instrucciones una de dividir. La forma de realizar esta instrucción, si es utilizando una unidad aritmético-lógica que incorpora la división o mediante un algoritmo que utiliza otros operadores ariteméticos, es materia de la organización.
El diseño de un computador estudia la realización física de sus circuitos lógicos tomando en consideración un conjunto de especificaciones dadas.
A quien va dirigido este texto
Estructura y Tecnología de Computadores está concebido como texto base de la asignatura Estructura y Tecnología de Computadores II que tienen que cursar los alumnos de la Escuela de Informática de la UNED, en el primer curso de las carreras de Ingeniero Técnico en Informática de Sistemas y de Ingeniero Técnico en Informática de Gestión. Este hecho impone una serie de ligaduras sobre la estructuración de sus contenidos y la forma de desarrollarlos ya que tienen que ser, en la medida de lo posible, autosuficientes y comprensibles a estudiantes que no asisten de forma habitual a clases presenciales.
Esta reflexión ha llevado a los autores a incluir dos apéndices en los que se introducen los principales componentes combinacionales que se emplean en la descripción de un computador y los circuitos secuenciales cuya comprensión es fundamental para poder entender el funcionamiento de la unidad de control de un computador. Los alumnos que cursan Ingeniería Técnica en Informática de Sistemas ven estos conceptos con mayor profundidad en la asignatura de Electrónica Digital; no ocurre lo mismo con los alumnos de Ingenería Técnica en Informática de Gestión que no los estudian en ninguna otra asignatura y sin embargo los necesitan para la compresión de este texto. La solución que se ha adoptado es incluir, aún a costa de una mayor extensión, los dos apéndices mencionados.
Tambien puede resultar útil a estudiantes de Facultades de Ciencias o Escuelas de Ingenerías que tengan en sus planes de estudio materias relacionadas con la Arquitectura de computadores.
Organización del texto
El texto se ha estructurado en 7 temas y 2 apéndices cuyos contenidos son:
Tema 1: Estructuras de interconexión de un computador
En este tema se analizan las estructuras básicas utilizadas para la interconexión de los elementos de un computador. Como introducción se hace una breve revisión de los componentes fundamentales de la arquitectura clásica de von Neumann. Se consideran los principales enfoques estructurales para la interconexión, incluyendo consideraciones temporales y los protocolos de arbitraje en el intercambio de información entre componentes. Por su particular interés e importancia se dedica una atención especial a la estrucutra de interconexión tipo bus.
Tema 2: Unidad de memoria
El objetivo de este tema es el estudio del almacenamiento de información de un computador que contiene tanto los programas que ejucta como los datos sobre los que han de actuar dichos programas. Un computador contiene una jerarquía de susbistemas de memoria, unos internos al propio computador (directamente accesibles desde la CPU) y otros externos (accesibles desde la CPU a través de un módulo de E/S).
En este tema se estudian, en primer lugar, los conceptos básicos y las características de los diferentes tipos de memoria. En segundo lugar se analiza el compromiso que establecen los parámetros de capacidad, velocidad y coste en la jerarquía de memorias y cómo el principio de localidad tanto espacial como temporal permite organizar los datos de una forma eficaz en los diferentes niveles de memoria.
De forma más concreta se estudian las memorias de tipo semiconductor que utilizan como componente básico los cirucitos integrados de memoria, para pasar después a analizar su utilización como componentes del computador. Se presenta de forma detallada un elemento esencial de todos los computadores actuales: la memoria caché. El tema finaliza estudiando otras arquitecturas de sistemas de memoria como son las memorias de carácter asociativo, la utilización de memoria compartida, el concepto de memorias de tipo pila y una introducción a los discos magnéticos que son uno de los principales sistemas de almacenamiento secundario en los computadores de hoy día.
Tema 3: Unidad de entrada-salida
Además de la CPU y de la memoria el tercer elemento clave de un computador es la unidad de entrada/salida (E/S). La unidad de E/S proporciona un método de comunicación eficaz entre el sistema central y el usuario. Un computador basa gran parte de su utilidad en la capacidad de recibir y transmitir información desde o hacia el exterior.
Se puee ver la E/S como un conjunto de controladores de E/S; cada controlador se conecta al bus del sistema o a un conmutador centralizado y supervisa a uno o más dispositivos periféticos. Un controlador de E/S no es simplemente una conexión física entre un dispositivo externo y el bus del sistema, sino que contiene cierta "inteligencia". Es decir, dispone de la lógica necesaria para realizar una función de comunicación entre los periféricos del conmutador y el bus.
Se introducen los dispositivos externos, mostrándose en términos muy generales su naturaleza. La comunicación de los dispositivos externos con el controlador de E/S pone en juego diferentes categorías de señales: datos, control y estado del dispositivo. En este tema se presenta una visión unificada de la estructura y función de un controlador de E/S. El núcleo central lo constituye el estudio de los mecanismos por los que un controlador de E/S interacciona con el resto del computador. Se utilizan las siguientes técnicas:
a) E/S controlada por programa. La CPU ejecuta un programa que tiene el control completo y directo de la operación de E/S. Cuando la CPU transfiere una orden al controlador de E/S debe esperar hasta que acabe dicha operación.
b) E/S por interrupciones. La CPU envía una orden de E/S y continúa ejecutando otras instrucciones hasta que es interrumpida por el controlador de E/S cuando ha finalizado su tarea. La CPU no malgasta ahora su tiempo esperando a que se realice una operación de E/S, lo que aumenta el rendimiento global del sistema.
c) Acceso directo a memoria (DMA). Con esta técnica al controlador de E/S se le permite el acceso directo a memoria a través del módulo DMA. Se pueden transferir bloques de datos a o desde memoria sin intervención directa de la CPU, excepto en los instantes iniciales y finales de la transferencia.
El tema finaliza con la introducción del concepto de procesador de E/S (PE/S). El PE/S es una extensión natural del acceso directo a memoria. Un PE/S tiene la capacidad de ejecutar instrucciones de E/S lo que le da un control completo sobre dicha operación. La CPU no ejecuta ahora las instrucciones de E/S, que se almacenan en memoria principal para ejecutarse en un PE/S. La CPU comienza una transferencia de E/S al enviar una orden al PE/S para que ejecute el programa correspondiente. Se trata de un potente controlador de E/S capaz de ejecutar un programa.
Tema 4: Unidad aritmético-lógica
La unidad aritemético-lógica (ALU) es la parte del computador donde se efectúan las operaciones aritméticas y lógicas sobre los datos. Las otras unidades del computador (unidad de control, memoria y unidad de E/S) son las encargadas de suministrar datos a la entrada de la ALU y recibirlos nuevamente una vez procesados.
Los datos llegan a la ALU a través de registros y los resultados que se generan también se almacenan en registros. Estos registros son memorias temporales dentro de la CPU que se conectan mediante el bus de datos con la ALU. Cuando la ALU finaliza una operación, activa determinados indicadores que pueden ser utilizados por la unidad de control. La unidad de control envía señales que controlan las operaciones y el movimiento de datos de entrada y salida de la ALU. En este tema se estudian los algoritmos y los circuitos asociados que realizan las cuatro operaciones aritméticas básicas, tanto en coma fija como en coma flotante. Un número en coma flotante está constituido por una par de números en coma fija, la mantisa m y el exponente e y se utiliza para representar números de la forma m x B^e, donde B es la base que está implícita. La representación en coma flotante aumenta el rango de los números que se pueden expresar para una longitud de palabra dada, aunque requieren circuitos aritméticos mucho más complejos que cuando se emplea coma fija. Con el fin de proporcionar una representación única para cada número en coma flotante se realiza un proceso de normalización. También se analizan las operacions de desplazamiento y de comparación.
Tema 5: Diseño de transferencia entre registros
En este tema se estudia el procedimiento de diseño de un computador o con mayor generalidad de cualquier sistema digital. El método de diseño puede considerarse a diferentes niveles de detalle o complejidad. Se suelen emplear los tres niveles siguientes:
1) Nivel de puertas lógicas. Corresponde al estudio de la teoría de la conmitación y tiene interés para los diseñadores de sistemas. En este nivel la unidad de información es el bit.
2) Nivel de registros. Un programador en lenguaje máquina o lenguaje ensamblador contempla a un sistema digital desde este nivel. No se tratan ya las puertas lógicas de forma individual, sino los registros de la máquina y sus interconexiones. Es el nivel que se emplea cuando se consideran las características estructurales de un sistema digital. La unidad de información es la palabra.
3) Nivel de procesador. Los objetos básicos que se consideran en este nivel son elementos tales como CPU, procesadores de E/S, memorias etc. La característica fundamental de estos módulos es su elevada complejidad. La unidad de información es un bloque de palabras que puede representar o un programa o una zona de datos.
Se presenta una metodología general de diseño de sistemas digitales cuando se describen a nivel de transferencia de registros. Se exponen los fundamentos de los lenguajes de descripción que se pueden utilizar tanto en los niveles de especificación como de realización. La descripción de un sistema digital se divide en dos partes: la unidad de procesamiento y la unidad de control (modelo de Glushkov).
La unidad de procesamiento es la parte del sistema digital en la que se almacenan y transforman los datos. La función de la unidad de control es generar una secuencia de señales y de control de acuerdo con el algoritmo de transferencia de registros, que especifica la realización de la operación deseada. En muchos casos, una máquina secuencial es un modelo adecuado para la realización de la unidad de control. En este tema se presenta una forma de carácter gráfico, de especificar el modelo de un sistema secuencial: el diagrama de máquina de estados algorítmica o diagrama ASM (acrónimo de Algorithmic State Machines). El diagrama ASM se caracteriza por el hecho de que describe una secuencia de sucesos así como la relación temporal entre los estados de la unidad de control y las acciones que ocurren en los estados como respuesta a los distintos pulsos de reloj.
Se analiza con detalle la organización de la unidad de control y se describen diferentes realizaciones de la misma. Con el fin de reforzar los conceptos que se van introduciendo a lo largo del tema y a modo de ejemplo ilustrativo se desarrolla de forma detallada la realización de un multiplicador de dos números binarios sin signo de n bits, basado en el algoritmo de lápiz y papel mejorado propuesto en el tema 4.