Tema 4 Estructura de la computadora digital En este tema se va a profundizar en el estudio de las distintas partes funcionales de la computadora, comenzando por la memoria y terminando con la unidad de control. Posteriormente se explicará en qué forma funciona el conjunto. 4.1 Esquema funcional Como se avanzó en el tema 1, la computadora digital está formada por varias unidades con tareas claramente diferenciadas como puede verse en el diagrama de bloques de la figura 4.1. Observe que las flechas que unen los bloques son de dos tipos. La razón de esta diferencia es resaltar, que la comunicación entre bloques es de dos tipos: información y señales de control. La primera categorı́a, la información, abarca los datos, los resultados y otras informaciones como direcciones de memoria, estados, etc. La segunda categorı́a, las señales de control son órdenes que la UC manda a los distintos elementos para que se realicen las operaciones. UAL Memoria principal Unidad de control unidad de entrada/salida Se verá más adelante que la UC y la UAL forman la unidad central de proceso (UCP), que es la responsable de la ejecución del programa. La memoria tiene un papel pasivo proporcionando los datos e instrucciones cuando son solicitados por la UCP. Periféfico 1 Periférico n señales de control información Figura 4.1: Modelo de Von Neumann de la computadora digital. 37 38 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL R y S y Figura 4.2: El biestable R-S realizado con puertas lógicas. 4.2 Almacenamiento de la información Para el procesamiento de la información es indispensable algún soporte fı́sico que de un modo u otro la contenga (almacenamiento). En el caso que nos ocupa de las computadoras digitales, la unidad de información fundamental es el dı́gito binario (bit). Al soporte fı́sico que es capaz de albergar un bit se le denomina celda o célula elemental. Es decir, una celda elemental es un dispositivo capaz de almacenar un 0 o un 1. Uno de los dispositivos usados para la realización de dichas celdas es el denominado biestable, cuyo funcionamiento se describe a continuación. 4.2.1 La celda elemental El biestable es un dispositivo (electrónico) con dos posibles estados estables; es decir, estados que en ausencia de excitación externa no cambian. Hay varias clases de biestables, pero todos permiten almacenar una unidad de información (0 ó 1). Considerado como un sistema lógico, cada biestable puede describirse mediante las operaciones necesarias para producir las salidas a partir del valor de las entradas. Hay que tener en cuenta que, a diferencia de los circuitos lógicos vistos con anterioridad (denominados circuitos combinacionales), el biestable tiene memoria. Esto conlleva que ante un mismo valor de las entradas puede producir salidas distintas dependiendo del estado anterior. Este tipo de circuitos es un circuito lógico no combinacional denominados circuitos secuenciales. Aquı́ se describe el biestable denominado R-S, que posee dos entradas: la entrada S para su puesta a uno (set) y la entrada R para la puesta a cero (reset). Tiene dos salidas: el estado y y el complementario y. La figura 4.2 muestra la construcción de un biestable R-S a base de dos puertas O negadas. Para describir su funcionamiento es preciso suponer un estado inicial. Consideramos que en el instante t = 0 el biestable tiene por salida y0 = y(0). El funcionamiento del biestable queda entonces descrito por las siguientes reglas: • Si las entradas R y S están inactivas (valen 0), el biestable conserva el estado anterior. R = S = 0 ⇒ y(t) = y0 ∀t > 0 • Si se activa la puesta a uno; o sea, si se hace S = 1, la salida se hace uno. S = 1 ⇒ y(t) = 1 ∀t > 0 • Si se activa la puesta a cero, la salida se hace cero. R = 1 ⇒ y(t) = 0 ∀t > 0 c MRA & JAAR 39 2009 DISA. ESI. US. Es posible comprobar que estas reglas se cumplen para el circuito de la figura 4.2. También es fácil demostrar que la salida no sólo depende del valor de las entradas, sino de la salida anterior a la aplicación de tales entradas. La tabla de transición del biestable proporciona la salida del mismo en el instante posterior y(t), conocida la salida en el instante actual y0 , y el valor actual de las entradas (RS): RS → y0 = 0 y0 = 1 00 0 1 01 1 1 10 0 0 11 X X En la columna correspondiente a R = 1, S = 1 no se ha consignado ningún valor puesto que el biestable no se ha de usar conectando ambas entradas a uno. Se confirma que el biestable no es un circuito lógico combinacional, puesto que la salida no sólo depende de las entradas, sino del estado anterior. La tabla inversa a es la que da el valor de las entradas (RS) necesario para obtener un estado y(t + 1), conocido el estado actual y(t), y recibe el nombre de tabla de excitaci ón. y(t) → y0 = 0 y0 = 1 0 -0 10 1 01 0- En la tabla anterior se ha escrito el valor de R y S para que el estado en los instantes siguientes sea el que aparece en la cabecera de la columna. El guión indica que la entrada correspondiente puede tomar cualquier valor (0 ó 1), porque el resultado no se ve afectado. 4.2.2 El registro Las celdas elementales sólo pueden representar los números cero o uno; para poder usar números mayores estas celdas se agrupan. Un registro es un conjunto de celdas de memoria, cuyo contenido representa una información codificada en binario que es procesada como un ente único. Fı́sicamente es una asociación de biestables (figura 4.3). La salida de cada uno de los biestables (bits Q0 a Q3 ) se interpreta como cifra de una cantidad expresada en binario. Al aumentar el número de cifras aumenta el número de combinaciones posibles, por lo que se puede representar una cantidad mayor de información. Por ejemplo, un registro de 7 células puede almacenar 27 = 128 informaciones binarias distintas mientras que uno con 6 sólo la mitad. Es necesario comentar que, al unir varios biestables, interesa que los cambios ocurran en todos ellos al mismo tiempo; es decir, que las transiciones entre estados estén coordinadas. Esto se consigue disponiendo en cada biestable una entrada adicional llamada de sincronismo, la cual se conecta mediante una puerta Y a las otras entradas R y S, de forma que, se impide que señales R y S actúen hasta que se active la de sincronismo. La señal de sincronismo suele tomar la forma dada en la figura 4.3, llamada tren de pulsos. El sincronismo viene dado por el reloj 40 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL Q3 RS Q2 RS Q1 RS Q0 RS sincronismo Figura 4.3: Asociación de cuatro biestables con señal de sincronismo común. interno del sistema y su papel es similar al del tambor que marca el ritmo a los remeros de una galera. Como ejemplo de registro veamos el registro de desplazamiento. Este registro no sólo contiene información, además permite que ésta se mueva en su interior. Considérese un registro de desplazamiento de 6 celdas con unos y ceros en sus celdas. 0 1 0 1 1 0 Puede considerarse que representa el número 24 + 22 + 21 = 22. Si trasladamos el contenido del registro a la derecha queda: 0 1 0 1 1 Rellenando con un cero por la izquierda se obtiene: 0 0 1 0 1 1 que representa el número 23 + 21 + 20 = 11. Se ha conseguido dividir el número por dos. Si en lugar de desplazar a la derecha se mueve hacia la izquierda el resultado es 1 0 1 1 0 introduciendo un cero en la posición que queda vacı́a a la derecha se obtiene 1 0 1 1 0 0 que representa el número 25 + 23 + 22 = 44, que es el número original multiplicado por dos. 4.2.3 La unidad de memoria en la computadora El tratamiento automático de la información requiere el almacenamiento masivo de la misma de forma más o menos permanente. La memoria en una computadora es un dispositivo capaz de almacenar información. Para servir a los propósitos del tratamiento automático de la información la memoria ha de ser capaz de recuperar cualquier información, proporcionándola al exterior sólo cuando sea solicitada. Para resolver este problema se han propuesto históricamente soluciones diversas muy imaginativas como lı́neas de retraso, tubos de mercurio y núcleos de ferrita. Como ya se ha dicho, las computadoras digitales trabajan con datos binarios, por lo que la memoria debe poder guardar variables que toman dos valores: 0 ó 1. Para ello basta con agrupar celdas elementales formando registros y a su vez, los registros se apilan para formar bloques mayores. c MRA & JAAR 2009 DISA. ESI. US. 41 En el esquema funcional de Von Neumann (véase la figura 4.1) la memoria es el bloque que almacena tanto los datos y resultados como las instrucciones. A petición de la unidad de control la memoria es capaz de realizar 3 operaciones: • Lectura. Consiste en extraer una copia de cierta información. En la mayorı́a de las computadoras tal información pueden leerse cuantas veces se desee, pues no es destruida por el proceso de lectura. • Escritura. La escritura permite almacenar información dentro de la memoria. Los datos que se van a almacenar ocuparán algunas celdas de la memoria que previamente contenı́an otros valores, por lo tanto el proceso de escritura siempre conlleva la desaparición de los datos que ocupaban el lugar donde se introducen los nuevos. • Direccionamiento. Proceso de selección de la información dentro de una memoria a partir de la posición (dirección) de la misma. Esta memoria es llamada hoy en dı́a memoria interna y es la que contiene el programa durante su ejecución. En la actualidad se compone de circuitos integrados y por este motivo se les llama memorias de silicio por ser este elemento la base de los dichos circuitos electrónicos. Además de la memoria interna existen dispositivos de memoria auxiliares como el disco duro y los discos ópticos (CD, DVD, etc.). Caracterı́sticas de las memorias En la historia de las computadoras se han usado muchos dispositivos para almacenar información. En la actualidad se usan circuitos integrados, discos magnéticos y discos ópticos. Cualquiera que sea el soporte de la información la memoria queda definida por ciertas propiedades o caracterı́sticas como son: • Tiempo de acceso. Es el que transcurre entre el instante en que se ordena la lectura/escritura de una información y el momento en que está disponible para su procesamiento. Interesa que sea lo más bajo posible, no obstante este requerimiento entra en conflicto con el coste. • Capacidad. Es el número de unidades de información que puede almacenar una memoria. Como suelen ser números muy altos se usan múltiplos como kilo y mega. • Modo de acceso. Hay varias formas en las que se puede accceder a la información, entre las que destacan el acceso directo y el secuencial, que se definen a continuación. - Acceso directo. Para llegar a una determinada información no es preciso pasar por las anteriores. Este modo es también llamado aleatorio. El tiempo invertido en el acceso es independiente de donde se encuentre la información. - Acceso secuencial. En este tipo de acceso, para llegar a un dato hay que dejar pasar la información que le precede. Esto es lo que sucede, por ejemplo, cuando se usa una cinta magnética. 42 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL • Volatilidad. La información almacenada en una memoria es volátil si puede destruirse o alterarse al cesar el suministro de energı́a al dispositivo que constituye la memoria. Esta es la situación normal en memorias de semiconductores, que necesitan suministro eléctrico para conservar los datos. Los discos y cintas son por contra no volátiles. Medidas de capacidad Las memorias como se ve pueden ser de muchos tipos, la más importante para nuestro estudio de la computadora digital es la memoria principal. En los equipos actuales esta memoria está realizada mediante circuitos semiconductores que forman puertas lógicas. De este modo surge la celda que da cobijo a la unidad fundamental de información. Éstos y otros conceptos se definen a continuación. • Bit. Se denomina bit a la unidad elemental de información binaria. El bit es la información contenida en una célula de memoria, es decir, un cero o un uno. Cualquier información binaria puede codificarse mediante una cadena de bits más o menos larga. • Carácter. Las células de memoria se suelen agrupar formando registros. Una agrupación muy usada en los 70 y 80 es la formada por ocho células, denominada octeto. La información constituida por ocho bits, y que se puede almacenar en un octeto se llama carácter o, más popularmente, byte. • Palabra. Los registros de una computadora están formados por cierto número de celdas, los más usuales son de 16, 32 y 64 unidades. La información almacenada en un registro se denomina palabra, por tanto una palabra equivale a 16, 32 ó 64 bits dependiendo de la computadora. Se ha de notar la diferencia entre unidades de información: bit, carácter y palabra, y el soporte donde se guardan: unidad de memoria, octeto y registro, respectivamente. Al tratar con memorias la unidad básica suele ser el carácter o byte. En términos informáticos kilo es un prefijo que equivale a 210 = 1024 unidades, pues es la potencia exacta de dos más próxima a mil. Del mismo modo, mega equivale a 220 = 1048576 unidades. En la tabla siguiente se muestran algunos tamaños de memorias expresados de varios modos. abreviatura 1 Kc 1 Mc 1 Gc 1 Tc cantidad kilocarácter megacarácter gigacarácter teracarácter bits 8 · 210 8 · 220 8 · 230 8 · 240 caracteres 210 220 230 240 Clases de memoria Aunque el esquema de la figura 4.1 no lo muestra, el hecho es que existen dentro de la computadora varias clases de memoria, atendiendo cada una a una misión particular. En esta sección se enumeran algunos de los tipos más habituales de memoria. c MRA & JAAR 2009 DISA. ESI. US. 43 • Memoria principal. Es la que contiene el programa en el momento de la ejecución del mismo. Suele estar constituida por circuitos integrados, que es la forma de almacenamiento más rápida. En la mayorı́a de los casos es de tipo volátil y de acceso directo. Esta memoria suele ser expansible a voluntad del operario; para ello basta con añadir más circuitos integrados en el interior de la computadora. • Memoria auxiliar. La memoria auxiliar es un dispositivo externo1 que contiene información. Entre otros pueden citarse el disco duro, el disco óptico y los discos flexibles. Son llamadas también memorias masivas. La velocidad de acceso suele ser menor que la de la memoria principal, pero la capacidad de almacenamiento mayor. Al ser un periférico, el trasvase de datos entre la memoria auxiliar requiere un adaptador que es la unidad de entrada y salida (véase figura 4.1). Otra clasificación de las memorias atiende al tipo de operaciones que es posible realizar en ellas. • Memorias de acceso aleatorio. Más conocidas como RAM, Random Access Memory. Son memorias de lectura y escritura, en las que se puede direccionar directamente cualquier posición de la misma, a diferencia de las de acceso secuencial. Están realizadas a base de circuitos integrados que necesitan alimentación constante, por lo que son volátiles. La memoria principal de la computadora es de este tipo. • Memoria sólo para lectura. Llamadas ROM, del inglés Read Only Memory. Se trata de memorias en las que la información se almacena de forma permanente, bien durante su construcción o bien en una fase posterior. De estos dispositivos, una vez en uso, sólo puede leerse la información almacenada, pero no puede escribirse nueva información. Las operaciones para el arranque de una computadora están contenidas en este tipo de memorias. Esto es ası́ puesto que se deben preservar al apagar el equipo, por lo que no pueden usarse memorias volátiles. • Memoria reprogramable sólo para lectura. Este tipo de memoria es conocida por el nombre de EPROM, que son las siglas de Erasable-Programable ROM. Se trata de una memoria para lectura que puede ser borrada por completo y regrabada. El borrado se realiza mediante técnicas especiales (por ejemplo, exposición a rayos ultra-violeta). Tras el borrado se puede reprogramar la memoria para que contenga nueva información de forma permanente (hasta un nuevo borrado). El borrado y reprogramación implica desmontar el circuito integrado del resto de la placa, por lo que no son frecuentes. Estructura matricial La memoria principal en los equipos actuales está constituida por circuitos integrados en cuyo interior residen las células básicas de almacenamiento, organizadas en registros como ya se ha dicho. Una forma de representar esto es usando una disposición rectangular a base de filas y columnas, como se muestra en la figura 4.4. Cada fila es un registro de n celdas, siendo n el ancho del registro llamado también longitud de la palabra. El número de filas N suele ser muy alto como puede suponerse sabiendo la capacidad normal de las memorias actuales que es de 1 Necesita conexión especial para unirse al resto de módulos. 44 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL hilos de lectura y escritura célula de memoria N hilos de selección registro n Figura 4.4: Estructura matricial de la memoria. varios megacaracteres. Cada registro puede ser seleccionado mediante un hilo 2 . Para acceder a los bits individuales que forman la palabra contenida en el registro se tienen n hilos llamados de lectura/escritura (abreviadamente l/e). La lectura se realiza transmitiendo por los hilos de l/e la información de cada celda del registro seleccionado. La escritura realiza el proceso inverso, destruyendo la información que residı́a previamente en el registro seleccionado. Cada registro de la memoria tiene asignado un número llamado dirección. Es habitual conceder al registro superior el número 0 y al inferior en número N − 1, siendo N el número total de registros. Para acceder a la información de la memoria es preciso conocer la dirección en la que se encuentra. Conocida dicha dirección se puede seleccionar el registro en cuestión y proceder posteriormente a la lectura o escritura. Por tanto, la selección de la información es un paso previo a la lectura o escritura y se hace actuando sobre el hilo que correspondiente a la dirección dada. Esto lo realiza el decodificador de direcciones. La dirección que se proporciona al decodificador es el número de la palabra dentro de la memoria, pero codificado en binario. Si la memoria tiene N = 2 m palabras es necesario darle al decodificador un número en binario entre 0 y 2m − 1. Para expresar este valor hacen falta precisamente m dı́gitos binarios; es decir, la dirección es un número binario de m bits. Para proporcionar al decodificador la dirección se usa un registro llamado de selección de dirección que puede verse en la la figura 4.5 junto con el decodificador de direcciones. De la figura 4.5 queda claro que la memoria contiene n · 2m celdas por lo que su capacidad es n · 2m bits o bien n · 2m /8 caracteres. La unidad de memoria central A modo de resumen, y para hacerse una idea de cómo se enlazan los elementos vistos hasta ahora relativos a las memorias, se analizará la memoria central de una computadora. Ésta está formada por una matriz celular de elementos de memoria, un decodificador de direcciones y una 2 Término heredado de los dı́as en que las memorias eran de núcleos de ferrita ensartados en los nodos de una red de hilos conductores. c MRA & JAAR 45 2009 DISA. ESI. US. m decodificador de direcciones 0 1 N=2 m N-1 n Figura 4.5: Diagrama de la memoria organizada matricialmente incluyendo el registro de selección de direcciones y el decodificador. pequeña unidad de control que coordina las operaciones necesarias para leer o escribir; todo ello dentro de un circuito integrado. Los bloques funcionales se pueden ver en la figura 4.6, y se describen a continuación. • S. Es el registro selector de direcciones de memoria. Almacena m bits que representan (en binario, por supuesto) la dirección del registro a seleccionar. • LECM, ESCM. Son dos señales de control mediante las cuales la UC ordena escribir o leer. • T. Es un registro tampón o de almacenamiento temporal que realiza la función de antesala de la memoria. Durante una lectura recibe una copia de los n bits contenidos en la posición seleccionada. Durante la escritura contiene la información que se va a escribir. direcciones LECM Decodificador S m ESCM n datos T Figura 4.6: Diagrama de bloques de la memoria central mostrando los registros y señales de gobierno. Para realizar una operación de lectura o escritura con la estructura anteriormente descrita, es necesario seguir un procedimiento que se detalla a continuación. • Lectura. El objetivo final es obtener una copia del contenido de una dirección particular de la memoria. Los pasos a seguir son: • Seleccionar la dirección que contiene la información a recuperar; para ello se ha de introducir dicha dirección en el registro S. 46 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL • Dar la orden de lectura activando LECM; es decir, dando el valor lógico 1 a LECM. Con esto se consigue que la palabra seleccionada transfiera una copia de sus bits al registro T. • Tomar el contenido del registro T, el cual contiene una copia de la palabra buscada. • Escritura. La escritura consiste en introducir una información dada en una posición de memoria concreta conocida. Los pasos a seguir son: • Selecionar la dirección que contiene la información a recuperar; para ello se ha de introducir dicha dirección en el registro S. • Copiar en T la información que se quiere escribir en la memoria. Para ello se usan los hilos de bit que conectan cada palabra de la memoria con el registro T. • Activar la señal de escritura haciendo ESCM=1. 4.3 La unidad aritmético-lógica Utilizando circuitos electrónicos es posible combinar el contenido de dos registros de memoria de forma que se obtenga un tercer registro que guarde alguna relación con los primeros. Por ejemplo de forma que el registro resultado sea la suma de los registros iniciales. La figura 4.7 ilustra esta idea. Puede verse que el registro 1 contiene los bits 010010 que puede interpretarse como el número binario 010010 |2) que en decimal es 010010 |2) = 18 |10) . Similarmente, el registro 2 contiene los bits 000011 que puede interpretarse como el número binario 000011 |2) que en decimal es 000011 |2) = 3 |10) . Es fácil comprobar que el circuito sumador debe combinar la información de ambos registros de tal modo que el registro resultado contenga 010101 que es la representación binaria de la cantidad 18 + 3 = 21. Registro resultado 010101 Sumador 010010 000011 Registro 1 Registro 2 Figura 4.7: Circuito sumador. Existen circuitos capaces de realizar operaciones aritméticas como la suma, la resta, etc. También interesan operaciones llamadas lógicas. Como ejemplo de operaciones lógicas se puede citar la comparación de igualdad. Un circuito comparador produce el valor binario 1 si los dos registros R1 y R2 son iguales y el valor 0 en caso contrario. La construcción de la UAL se lleva a cabo hoy en dı́a en una pastilla de silicio, agrupando una serie de circuitos con puertas lógicas. Estos circuitos son capaces de realizar tareas concretas c MRA & JAAR 47 2009 DISA. ESI. US. A estado SUMA MULT ··· primer operando Señales de control. segundo operando Figura 4.8: Esquema de la Unidad Aritmético Lógica mostrando el acumulador y las señales de gobierno. Las lı́neas que unen los registros consisten en realidad en uniones de n vı́as, siendo n el número de celdas de los registros. como desplazamientos, sumas, comparaciones, etc. La unidad de control que también reside en la pastilla puede seleccionar la operación a efectuar gracias a las señales de control. La activación de alguna de estas señales provoca la puesta en marcha de la operación correspondiente. Los dos operandos provienen de la memoria. Para operar con ellos se saca una copia que se guarda en registros especiales separados de la memoria central . Frecuentemente, en computadoras y calculadoras, el resultado de las operaciones se almacena en un registro A que recibe el nombre de registro acumulador. Para reducir el tamaño de la UAL, el acumulador es a menudo también el soporte de uno de los operandos. La UAL recibe órdenes de la unidad de control que especifican la operación a realizar con los datos del acumulador y del registro de operando. El resultado de las operaciones queda en el acumulador a la espera de ser transferido cuando lo indique la unidad de control. La figura 4.8 muestra un diagrama de la UAL en el que se detalla el acumulador. El bloque con forma de v invertida contiene los circuitos que realizan las operaciones. Como se ha dicho, el acumulador contiene el primer operando. El registro para el segundo operando no se ha dibujado. Para realizar una operación con dos operandos, como por ejemplo la suma, se procede del siguiente modo: 1. El primer operando se lleva a la entrada de la UAL 2. Se pasa el primer operando al acumulador mediante la señal de control CARGA 3. Se lleva el segundo operando a la entrada de la UAL 4. Se realiza la operación activando la señal correspondiente en este caso SUMA 5. El resultado aparece en el acumulador desde donde puede llevarse a otros lugares de la computadora 48 4.3.1 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL Circuitos operadores con puertas lógicas Se va a tratar ahora el problema de realizar operaciones aritméticas con números usando circuitos lógicos. Los ejemplos que se van a explicar tienen como objetivo mostrar que es posible construir una unidad de cálculo basada en puertas lógicas. Semisumador El semisumador permite realizar sumas aritméticas entre bits. En cualquier sistema de numeración, la suma más sencilla es la de números de un sólo dı́gito, por ejemplo 2 + 4. En el sistema de numeración en base dos los dı́gitos reciben el nombre de bits. El objetivo, por tanto, es sumar dos números de un bit a y b, obteniendo además de la suma s el acarreo c. Obsérvese que se quiere obtener la suma aritmética, no la suma lógica, para aclarar esto último considérese la tabla de sumar en decimal y en binario. decimal + 0 1 0 0 1 binario 1 1 2 + 0 1 0 0 1 1 1 10 Como puede verse en la tabla anterior, la suma puede llegar a valer dos, que en binario es 10 |2 . En este caso son necesarios dos bits para almacenar el resultado. Para ello se utiliza el acarreo, que es el valor del segundo bit por la derecha. El acarreo es igual a cero en todos casos menos cuando se suma uno más uno. La tabla de verdad se obtiene simplemente sumando: a 0 0 1 1 b 0 1 0 1 c 0 0 0 1 s 0 1 1 0 de donde se deduce que: c = a · b y s = a · b + a · b = a ⊕ b, donde el signo ⊕ indica la operación XOR (presentada con anterioridad). Sumador completo Interesa disponer de un sumador que admita tres entradas: el sumando primero, a, el segundo, b y el acarreo de la suma anterior c1 . La tabla de verdad es: c MRA & JAAR 49 2009 DISA. ESI. US. a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c1 0 1 0 1 0 1 0 1 c 0 0 0 1 0 1 1 1 s 0 1 1 0 1 0 0 1 que conduce a la expresión para las salidas: s = a ⊕ b ⊕ c1 y c = c1 · (a ⊕ b) + a · b. Para realizar el circuito se puede hacer uso del bloque semisumador anteriormente visto y marcado como SS en la figura 4.9. c1 a a a s SS b b c a b SS b a s c (a b c1 s b) c1 c ab Figura 4.9: Circuito sumador de bits con acarreo. Sumador en paralelo El sumador paralelo está formado por bloques SC (sumador completo) y SS (semi-sumador), conectados como se muestra en la figura 4.10. Esta forma modular permite un fácil diseño del circuito y ayuda a la comprensión de su funcionamiento. Obsérvese que cada bloque obtiene la suma y el acarreo para el bloque siguiente. Las flechas en el dibujo se han añadido para indicar mejor cual es el flujo de la información. Los datos proceden de dos registros A y B, y el resultado va a parar a un registro S. En el dibujo se ha representado un sumador para números de tres bits. Es fácil ver que para un número de bits mayor basta con añadir más bloques sumadores SC. Restador Para realizar la operación resta con circuitos digitales se suele recurrir a propiedades de la aritmética binaria. En efecto, no es difı́cil ver que una de estas propiedades es que restar dos números en binario es equivalente a sumar al minuendo el complemento a dos del sustraendo. Veamos un ejemplo considérese la operación en decimal 7 − 5 = 2, usando registros de 4 bits. Entonces se tiene que 7|10 = 0111|2 y el número 5 en complemento a dos es C2 (5) = 1011. Si ahora hacemos la suma 0111 + 1011 |{z} , |{z} = 1 0010 |{z} 7 C2 (5) SVA(2) 50 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL A a2 a1 a0 SC b2 b1 b0 SC s3 s2 s1 s0 B SS S Figura 4.10: Sumador en paralelo de números de tres bits. donde en el resultado se obtiene un bit de acarreo que no se tiene en cuenta ya que el resultado no puede ser mayor que el minuendo. En el caso de que el minuendo sea menor que el sustraendo el procedimiento no se ve alterado. En efecto restemos 5 − 7 = −2, usando registros de 4 bits. Ahora se tiene que 5| 10 = 0101|2 y el número 7 en complemento a dos es C2 (7) = 1001. Si ahora hacemos la suma 0101 |{z} + 1001 |{z} −→ 1010 |{z} , |{z} = 1110 5 C2 (7) C2 (2) SVA(−2) donde como el resultado es negativo, se obtiene en complemento a dos. El resultado es el número al que corresponde dicho complemento a dos. Multiplicador de números de dos bits Un ejemplo más complejo lo constituye el multiplicador de números de dos bits. Consiste en un circuito que acepta como entrada los cuatro bits correspondientes a dos números A y B (véase figura 4.11). La salida del circuito son los cuatro bits del número resultante de multiplicar A y B en forma aritmética. Los bits de A se denotan como a0 y a1 , equivalentemente los bits de B son b0 y b1 . Si llamamos a la multiplicación M = AB los bits m0 , m1 , m2 y m3 son los valores que debe proporcionar el circuito. A modo de ejemplo supóngase que A = 2 y B = 3, que expresado en binario queda A = 10 y B = 11, por lo que los valores que entran en el circuito son a 0 = 0, a1 = 1 b0 = 1 y b1 = 1. El resultado correcto ha de ser M = 6, que en base dos es M = 0110. Nótese que los bits se han numerado de derecha a izquierda. Procediendo de la misma forma para todas las combinaciones de posibles valores de A y B se obtiene la tabla de verdad: c MRA & JAAR 51 2009 DISA. ESI. US. a1 a0 m3 m2 m1 m0 b1 b0 Figura 4.11: Circuito multiplicador de números de dos bits. a1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 a0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 b1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 b0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 m3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 m2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 m1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 m0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 La función booleana para cada bit de salida se indica a continuación. Puede comprobarse que el resultado proporcionado es correcto realizando a mano cada una de las 16 multiplicaciones y las conversiones a base dos. m0 = abcd + abcd + abcd + abcd m1 = abcd + abcd + abcd + abcd + abcd m2 = abcd + abcd + abcd m3 = abcd División La división es la más complicada de entre las operaciones. Se puede diseñar un circuito especı́fico para esta tarea, pero resulta más sencillo utilizar circuitos que realizan sumas, restas, 52 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL desplazamientos, etc. En efecto, la división en binario puede describirse mediante operaciones aritméticas que involucran la suma, la comparación y el desplazamiento. Por tanto, pueden usarse estos bloques ya descritos para obtener un circuito divisor. En muchas computadoras la división se lleva a cabo ejecutando un programa en la UCP o en una UCP auxiliar llamada coprocesador. Operaciones con datos de punto flotante Como se recordará, los números fraccionarios se representan en formato de punto flotante, como: M · 2E . Para realizar operaciones con números flotantes basta con usar los circuitos ya vistos actuando independientemente sobre la mantisa y el exponente de acuerdo con ciertas reglas. En notación de mantisa y exponente las operaciones entre dos números A = a · 2 p y B = b · 2q se realizan de la siguiente forma: • Producto. Basta con multiplicar las mantisas, sumar los exponentes y realizar ajuste fraccionario del resultado: a · 2p · b · 2q = ab · 2p+q . • División. Se dividen las mantisas, se restan los exponentes y se ajusta el resultado: a · 2p /(b · 2q ) = (a/b) · 2p−q . • Suma y resta. Ambos números deben tener el mismo exponente, para ello se toma el mayor de los dos (normalización): a · 2p + b · 2q = c · 2q + b · 2q = (c + b) · 2q . 4.4 La unidad de entrada y salida Para poder ser de alguna utilidad, la computadora ha de interaccionar con el exterior. La recogida de datos y la evacuación de resultados se llevan a cabo mediante dispositivos variados como son el teclado y la pantalla y que reciben el nombre de periféricos. El reto que plantea la comunicación de la computadora con el exterior a través de dispositivos diferentes reside fundamentalmente en la distinta velocidad de transmisión de éstos. En efecto, considérese un teclado; la información que proviene del mismo no suele superar los 20 caracteres por segundo, es decir hay 0.05 segundos de espera entre carácter y carácter. Durante estos 0.05 segundos la computadora puede realizar miles de operaciones. Sin embargo otros dispositivos admiten una velocidad mayor, como por ejemplo los discos y las impresoras. La computadora ha de adecuar sus operaciones al ritmo de transmisión de datos. Tı́picamente, los periféricos se conectan a la computadora mediante circuitos que realizan las adaptaciones necesarias (niveles de tensión, formato de la información, etc.). Ésta es la situación mostrada en la figura 4.12. En el desarrollo del capı́tulo se van a describir brevemente algunos periféricos, para pasar posteriormente al problema de la comunicación entre éstos y la UCP. c MRA & JAAR 53 2009 DISA. ESI. US. UCP Adaptador Teclado Teclado RAM Adaptador unidad de disco Disco ROM Adaptador Adaptador vídeo paralelo Monitor Impresora Figura 4.12: Periféricos conectados a los enlaces de la computadora. 4.4.1 Periféricos Como se ha dicho, los periféricos son dispositivos que permiten el trasvase de información desde el exterior a la computadora o al contrario. Los más comunes son descritos a continuación: Teclado Permite tanto introducir texto, números y proporcionar señales para los programas. Se compone de pulsadores electromecánicos que mandan un código identificador a un espacio de almacenamiento temporal que la computadora lee y vacı́a periódicamente. Las teclas que incluye son: • Letras, números y signos de puntuación. Esta parte del teclado se asemeja al de una máquina de escribir convencional. • Tecla INTRO. Tiene dos funciones: en primer lugar permite pasar a la siguiente lı́nea en la escritura. Además, en programas de uso interactivo sirve para dar entrada a la información tecleada anteriormente de forma que pueda ser procesada. Por ejemplo, después de introducir una orden hay que pulsar esta tecla, para que la computadora ejecute la orden. En algunos teclados aparece el sı́mbolo ←| , o la palabra RETURN o ENTER. • Teclas de función, Numeradas desde la F1 a la F12 sirven para realizar órdenes dentro de ciertos programas. No tienen un significado definido, sino que cada programa les asigna una función, lo cual permite ahorrar tiempo de escritura. Por ejemplo, en algunos editores la tecla F2 sirve para guardar una copia del texto actual en el disco. • Teclado numérico. Además de los números, los teclados modernos, suelen traer un teclado numérico compuesto por los números, el punto decimal y otras, en la parte derecha del teclado. De esta forma se agiliza la escritura de grandes cantidades de datos. • Teclas de bloqueo de mayúsculas, bloqueo de teclado numérico, etc. • Otras teclas especiales, como flechas, botón de parada, etc. • Teclas que alteran la función de otras teclas. – Tecla MAY3 . Pulsada simultáneamente con otra produce la escritura de la letra en mayúsculas o del signo superior de los dos que aparecen encima en la tecla. 3 En algunos teclados aparece como Shift, en otros como una flecha vertical ⇑. 54 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL Su función normal es en todo igual a las mayúsculas de una máquina de escribir. Aplicada a las teclas de función permite activar funciones distintas. En general cuando se ha de pulsar una tecla conjuntamente con otra se indica mediante el signo +. Por ejemplo, para indicar que se han de pulsar simultáneamente la tecla MAY y la tecla de función F2 se usa: MAY+F2. – Tecla ALT. Al igual que la tecla de mayúsculas permite cambiar la función de las teclas de función. Además sirve para generar los sı́mbolos de la tabla ASCII manteniendo la tecla pulsada mientras se introduce el código correspondiente en decimal. En muchas aplicaciones esta tecla tiene significado especial. Por ejemplo, en los entornos de ventana, sirve para activar funciones dentro de un menú tecleando ALT+inicial opción del menú. – Tecla ALT GR. Permite obtener los signos |, [, ], } y { , u otros dependiendo del sistema. – Tecla CONTROL. Pulsada conjuntamente con algunas letras produce caracteres de control. Es decir, caracteres ASCII no visibles que tienen funciones de control, como CONTROL+G, que produce el carácter ASCII número 7 que provoca un zumbido en el altavoz del terminal. Otros caracteres útiles son CONTROL+C y CONTROL+Z para terminar la ejecución de programas. Usada en conjunción con las teclas de función permite activar otras funciones distintas dentro de programas. Una combinación de teclas especialmente útil en sistemas PC es CONTROL+ALT+SUPR que causa un reinicio del sistema. Los teclados tienen una velocidad de transmisión baja (10 ó 15 caracteres por segundo). Si se teclea a una velocidad superior el espacio de almacenamiento temporal se llena y la computadora emite un sonido de advertencia. Ratón Es un dispositivo que sirve para posicionar un puntero gráfico sobre la pantalla, de forma rápida. Este puntero permite realizar acciones pulsando los botones del ratón. Los entornos de ventana hacen un uso exhaustivo del ratón. Existen diversos tipos, de bola, óptico, por presión. Monitor de visualización Es el lugar donde usualmente la computadora envı́a la salida de los programas. Solı́a ser del tipo TRC (tubo de rayos catódicos), de color o monocromo. Hoy en dı́a se imponen las pantallas planas formadas por matrices de transistores. Para poder usar el monitor, la computadora ha de incorporar un circuito especial llamado tarjeta de vı́deo. La imagen que se presenta en pantalla está contenida en la memoria de vı́deo. Un circuito especial de la tarjeta se encarga del refresco de la imagen en el tubo, consistente en redibujar la imagen un cierto número de veces por segundo de acuerdo con el contenido de la memoria. La UCP se limita a colocar en la memoria de vı́deo la imagen y el circuito de refresco la manda a la pantalla. La cantidad de memoria de vı́deo disponible limita las posibilidades gráficas. Ası́, una tarjeta con poca memoria compone las imágenes mediante puntos gruesos y con pocos colores, como se muestra en la figura 4.13 a la izquierda. Al aumentar la memoria disponible es posible disminuir el tamaño del punto y aumentar la cantidad de colores que pueden presentarse a un mismo tiempo. De este modo las imágenes resultan mejor definidas como en la figura 4.13 a la derecha. La capacidad de la tarjeta de vı́deo se indica por los puntos horizontales y verticales y la cantidad de colores disponibles. Impresora Es un dispositivo que permite reproducir en papel los dibujos o textos realizados en una computadora. Hay muchos tipos distintos, dependiendo de la técnica usada para c MRA & JAAR 2009 DISA. ESI. US. 55 Figura 4.13: Imágenes proporcionadas por dos tarjetas de vı́deo distintas. A la izquierda una imagen de 201 × 129 puntos; a la derecha una imagen de 402 × 258 puntos, ambas en blanco y negro. impregnar el papel. Las más usadas actualmente son las impresoras de chorro de tinta y las láser. La tinta en una impresora de chorro o inyección es lanzada gota a gota sobre el papel formando los caracteres o dibujos. Un mecanismo especial va soltando la tinta (o tintas de diversos colores). Las gotas son dirigidas mediante campos eléctricos para que lleguen al lugar indicado sobre el papel. La impresora láser permite copiar páginas enteras de una vez. Se basan en un tambor cargado electrostáticamente, que al ser expuesto a un rayo láser se descarga en algunas zonas. La tinta en polvo impregna luego esas zonas del tambor. Al pasar cerca del papel cargado opuestamente al tambor la tinta se adhiere al papel. Finalmente se aplica calor para que la tinta en polvo funda sobre el papel. Debido a que el láser es muy fino, la calidad de impresión es muy alta. No hay ningún código normalizado para la comunicación ente impresoras y computadoras. Sin embargo, normalmente no hay que preocuparse por estos detalles pues los programas (o sistemas de explotación) permiten seleccionar el tipo de impresora a usar mediante menús, por lo que todo lo que uno debe saber es la marca y modelo de la impresora que tiene conectada. Entre los muchos lenguajes se pueden destacar los siguentes: PCL 1 a PCL 5 de Hewlett-Packard y PostScript o lenguaje de descripción de páginas a base de instrucciones producido por Adobe Systems Inc, Las impresoras pueden conectarse a la computadora usando diversos adaptadores de entradasalida entre los que destacan: Centronics, RS232, SCSI y las conexiones de red como Ethernet u otras. Digitalizador de imágenes Se usan para obtener una versión digital de imágenes sobre el papel. Para ello la imagen es descompuesta en una matriz de puntos de color y posteriormente almacenada como un archivo en un formato gráfico, como los conocidos GIF y TIFF. En ocasiones la digitalización de imágenes tiene por objeto conseguir un archivo conteniendo el texto impreso en la imagen. Es decir, la imagen puede ser una página de un periódico y lo que se desea es el texto contenido en dicha página. A partir de la imagen se pueden usar programas de reconocimiento de caracteres (conocidos como OCR) para obtener el texto en un archivo. Los programas de reconocimiento de caracteres suelen funcionar sólo con letra de imprenta. Discos magnéticos Los dispositivos de almacenamiento masivo permiten guardar grandes can- 56 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL Pista Cabezas Figura 4.14: Discos magnéticos para almacenamiento de datos. bits modulados objetivo datos detector (a) 00100010000100000100 etiqueta plástico (b) Figura 4.15: (a) Esquema del disco óptico. (b) Representación de la información en el mismo. tidades de datos de forma no volátil. Los dispositivos más usados han sido de soporte magnético como el disco duro, las cintas magnéticas y los discos flexibles hoy ya casi desaparecidos. Los discos duros están fijos en el interior de la computadora. Su construcción les confiere mayor rapidez y capacidad. Actualmente los discos duros pueden tener capacidades de miles de Megacaracteres. En la parte derecha de la figura 4.14 se muestra un diagrama simplificado de un disco duro, mostrando las cabezas que permiten la lectura y escritura. Disco óptico Los discos con soporte óptico como los populares CD-ROM, CDR, DVD-ROM y DVD-RAM permiten guardar gran cantidad de datos (de 700 Mc a varios Gc). La información se guarda en binario en forma de agujeros o huecos microscópicos en el metal interior del disco. Mediante un rayo láser se puede obtener una señal eléctrica con un voltaje alto o bajo dependiendo del paso de depresiones bajo el láser a medida que el disco gira. El CD-ROM es casi idéntico a los discos compactos para audio que existı́an previamente. De hecho, ambos discos son compatibles. Los reproductores de discos para audio incorporan una etapa de conversión de digital a analógico para producir el sonido, la cual no es necesaria en el caso de reproductores para uso de la computadora. Puesto que el metal que contiene los datos está protegido por una capa de plástico se consigue un medio menos sensible que los discos flexibles. El disco tiene los datos grabados en una única pista espiral. La lectura sobre la pista es a velocidad constante, por lo que el disco gira a distintas velocidades según el tramo leido. Ver figura 4.15 (a). Los datos se modulan siguiendo la regla ”8 en 14”, que usa 14 bits para codificar cada carácter. Se incluye un código de detección de errores de tipo CRC. La figura 4.15 (b) muestra la forma en que los bits quedan grabados en el disco. Dentro de los discos ópticos hay varias clases: hay discos que sólo admiten lectura, discos que se pueden grabar una sola vez desde el equipo personal y discos que admiten ser regrabados varias veces. c MRA & JAAR 57 2009 DISA. ESI. US. A B A B C D C D Figura 4.16: Conexión de cuatro módulos punto a punto (izquierda) y mediante una lı́nea (derecha). 4.5 La unidad de control Esta sección tiene por objeto mostrar cómo se unen los módulos que componen una computadora digital mediante enlaces. De este modo estaremos en disposición de presentar un modelo simplificado de computadora capaz de ejemplificar las funciones básicas de las computadoras reales. Este modelo servirá, entre otras cosas, para describir en detalle la unidad de control, que es el elemento encargado de armonizar las operaciones de cada uno de los módulos de la computadora. 4.5.1 Enlaces Los enlaces tienen como misión conectar los distintos módulos para poder transferir información entre ellos. Por ejemplo, las instrucciones que componen el programa han de ser leı́das de la memoria, de donde pasan a la unidad de control, donde son interpretadas. Los resultados de las operaciones en la UAL son frecuentemente almacenados en memoria, por lo que éstos módulos han de estar conectados también. La conexión de los distintos elementos de la computadora podrı́a realizarse de muchas formas. Supóngase, a modo de ejemplo, que se han de conectar entre sı́ cuatro dispositivos digitales con el fin de efectuar entre ellos transferencias de información (ver figura 4.16). Si se enlazan todos con todos, son necesarios 6 enlaces. Esto implica que hay 6 lı́neas de conexión bidireccionales que hay que cablear, soldar, comprobar, etc. En general para conectar n dispositivos con lı́neas conexiones; lo cual tiende a un número prohibitivo a medida bidireccionales son necesarios n(n−1) 2 que n aumenta. Por otro lado, si se restringe en cada momento la comunicación a un dispositivo que emite, constituyendo la fuente de información, podrı́an conectarse todos a una sola lı́nea, de forma que mientras la fuente de información ”habla”, los demás permanecen ”a la escucha”, recogiendo la información transmitida. Esta lı́nea de transmisión es a menudo llamada bus. En la parte derecha de la figura 4.16 se ha representado esta forma de conexión. La comunicación mediante una lı́nea presenta ciertas ventajas que se enumeran a continuación. • Reducción del número de conexiones a realizar. • Simplificación de los sistemas (cada uno sólo tiene una entrada y una salida). • Expansibilidad, puesto que pueden añadirse nuevos dispositivos. • Facilidad de ejecución en circuitos impresos, con el consiguiente ahorro de precio. 58 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL enlace enlace gobierno gobierno información información Figura 4.17: Control de la entrada de datos al enlace mediante puertas triestado. • Los módulos pueden estar a considerable distancia unos de otros. Pero no todo son ventajas, la sencillez se paga con algunos inconvenientes: • Al estar restringido el número de dispositivos que transmiten información a uno en cada momento, el tiempo necesario para transmitir un volumen de información dado es mayor que con conexiones directas. • Las comunicaciones se han de organizar de acuerdo a ciertas reglas, para evitar que más de un módulo hable a la vez. Aunque el enlace se represente en los diagramas con un solo trazo, suelen haber varias pistas en paralelo, con lo que la transmisión es más rápida. El ancho del enlace es el número de bits que se transmiten en paralelo, que puede ser menor, mayor o igual a la longitud de la palabra de la memoria. Por otro lado, el paso de información desde los módulos hacia el enlace se ha de controlar pues no puede producirse en cualquier momento, de otro modo podrı́an aparecer colisiones de mensajes si dos módulos transmiten al mismo tiempo. Una posible solución para controlar el acceso a la lı́nea por parte de un dispositivo es el uso de una puerta AND triestado por cada hilo que parte del dispositivo hacia el camino. La puerta triestado permite quedar a la escucha y también permite mandar al enlace la información que la atraviesa. El esquema se aprecia en la figura 4.17 a la izquierda. La señal que niega o permite el acceso al enlace se llama de gobierno. La puerta triestado permite que la salida fluctúe libremente cuando la señal de gobierno vale cero. De este modo, el enlace transporta el valor indicado por algún otro elemento. Por contra, cuando la señal de gobierno toma el valor uno la puerta triestado permite el paso de información a través suyo. En la citada figura 4.17 se muestra a la derecha la forma habitual de representar el acceso al enlace a través de la puerta triestado. El enlace se simplifica en el dibujo como si fuese una lı́nea única. 4.5.2 Modelo simple de una computadora digital La unidad de control es el elemento que ordena a todos los demás. La tarea que tiene encomendada consiste en enviar las señales de control que provocan operaciones de los módulos y c MRA & JAAR 59 2009 DISA. ESI. US. INCP A EA EP SP SUMA MULT LECM ES S ESCM MEM SD CO MD SA S P EO D ESCP I EI M E T ET LEET ST EE SE M Figura 4.18: Esquema de una computadora digital mostrando los enlaces y las señales de gobierno. también transferencias de información entre los mismos. En el esquema de la figura 4.18 se muestran los módulos ya conocidos interconectados por enlaces. Podemos imaginar que los enlaces son autopistas de varios carriles por las cuales pueden moverse los bits de forma que pasen de unos registros a otros. Los elementos con que se va a trabajar y que aparecen en dicha figura son: 1. Un enlace M que une la memoria, la unidad de control y la UAL. La información que se transmite puede ser de diversas clases: datos y resultados de operaciones, instrucciones del programa y direcciones de memoria. 2. Otro enlace S que une la unidad de control y el selector de posiciones de memoria. Por él se transmiten direcciones de memoria. 3. La memoria principal, con organización matricial. 4. La UAL con registro acumulador que almacena uno de los operandos y el resultado de las operaciones. 5. Los siguientes registros: • A. Registro acumulador de la UAL. • S. Registro de selección de memoria. • T. Registro tampón de comunicación entre la memoria y la lı́nea M. • P. Contador de pasos de programa. Indica la posición dentro de la memoria de la instrucción a ejecutar. • I. Registro de instrucción. Guarda en cada momento la instrucción que se ejecuta en ese paso. • E. Registro de comunicación con el exterior. Permite tomar datos del teclado o llevarlos a la pantalla. Es una forma simple e idealizada de la unidad de control que se ha descrito anteriormente. 60 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL 4.5.3 Funcionamiento de la computadora digital El esquema presentado corresponde a una máquina de programa almacenado, por lo que en la memoria se almacenan tanto datos y resultados como el programa a ejecutar. El funcionamiento del mismo se describe a continuación. Para comenzar la explicación se parte de una situación en la que el programa ha sido almacenado previamente en la memoria. El programa se va a ejecutar paso a paso bajo la dirección de la unidad de control. Ésta debe obtener de la memoria la instrucción a ejecutar, por lo que necesita disponer de algún medio que le permita conocer en qué posición de memoria se encuentra localizada la misma. El problema se resuelve colocando las instrucciones secuencialmente en la memoria y dotando a la unidad de control de un registro de dirección de la instrucción (registro P en la figura anterior). Este registro es un contador que se incrementa en una unidad cada vez que se realiza una instrucción, pasando ası́ a apuntar a la siguiente. Una vez localizada la instrucción se extrae de la memoria llevándola al registro I, donde se ejecuta activando las señales de gobierno necesarias. Esta tarea la realiza un módulo de la unidad de control que aún no se ha mostrado. Finalmente se incrementa P para poder ejecutar la siguiente instrucción. Cada instrucción requiere tres componentes para quedar totalmente definida: la operación, la forma de direccionamiento y una dirección con la que operar. Estos elementos se codifican en binario y se guardan en el registro I, que consta de las tres partes que se describen a continuación. 1. Código de operación (CO), es un conjunto de ceros y unos que identifica la operación que debe realizarse. Las instrucciones como la suma, la resta, etc. tienen cada una un código distinto. 2. El modo de direccionamiento (MD), que indica la forma en que se ha de interpretar la dirección que está incluida en la instrucción. En el caso más sencillo (llamado direccionamiento directo) la dirección es la del dato o resultado de la operación. 3. Dirección de memoria (D). Esta dirección puede interpretarse de formas distintas, según el modo de direccionamiento y la instrucción de que se trate. En un caso simple como la suma directa, esta dirección es el lugar de la memoria donde reside el dato que se ha de sumar. Para aclarar las ideas, considérese la instrucción sumar al acumulador el contenido de la posición de memoria 8. Supóngase que la codificación de esta instrucción es: CO 0101 MD 0 D 00000001000 Por lo que el registro I, en el momento de ejecutarse esta instrucción contiene el valor 0101000000001000. La primera parte (CO) identifica la operación suma, la segunda parte (MD) indica que se trata de direccionamiento directo, que será explicado más adelante. Por último, la dirección 00000001000 es el número 8 codificado en binario, y se interpreta como el lugar donde reside el número que se ha de sumar al registro acumulador. c MRA & JAAR 4 A 61 2009 DISA. ESI. US. 17 P S 8 4 3 A 17 P S 17 co | md | 8 co | md | 8 A) co | md | 8 17 I co | md | 8 B) 7 A 17 P S 8 7 3 A 18 P S 8 4 3 8 17 I 8 3 co | md | 8 I 8 3 8 17 co | md | 8 C) 3 co | md | 8 I 17 co | md | 8 D) Figura 4.19: Fases de la ejecución de la instrucción suma. 4.5.4 Ejecución de instrucciones Para cualquier instrucción el proceso de ejecución se divide en cuatro fases: búsqueda de la instrucción, búsqueda del operando, ejecución de la instrucción y preparación de la instrucción siguiente. Estas fases conllevan pasos distintos dependiendo de la instrucción de que se trate. Los casos más sencillos se plantean al considerar instrucciones aritméticas, como la suma. La figura 4.19 muestra de forma esquemática el desarrollo de las cuatro fases para una instrucción como la suma directa. Como es sabido los registros contienen los números en binario, sin embargo, para dar mayor claridad al dibujo se han indicado aquı́ en decimal. Las posiciones de memoria también se han indicado con su dirección en decimal por idéntico motivo. La parte A) de la figura representa la búsqueda de la instrucción. Se ha supuesto que ésta se halla en memoria en la dirección 17 por lo que el contenido de P es precisamente 17. Se observa también el direccionamiento de la memoria logrado con el registro S. Mediante una lectura se pasa la instrucción al registro I. La parte B) corresponde a la búsqueda del operando; éste es el valor contenido en la dirección de memoria 8, que en este caso es el número 3. En la parte C) se realiza una nueva lectura de memoria que permite pasar el operando al registro de operando de la UAL. Después se efectúa la suma del acumulador que contenı́a el número 4 con el operando. El resultado (7 = 4 + 3) pasa al propio acumulador. En la parte D) se prepara la instrucción siguiente. El registro P se incrementa en una unidad, de este modo se consigue ejecutar la instrucción siguiente y ası́ sucesivamente. Obsérvese que el desarrollo de la instrucción se logra simplemente por la transferencia de información entre registros y mediante la transformación de ésta en la UAL. La tarea de la unidad de control es precisamente coordinar tales transferencias. 62 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL Transferencias entre registros El funcionamiento de la computadora se puede describir mediante transferencias de información entre registros. Para verificar esta afirmación se va a explicar a continuación de forma más detallada la ejecución de la instrucción del ejemplo anterior, sumar al acumulador un dato almacenado en una dirección de memoria dada. 1. Búsqueda de la instrucción: consiste en extraer la instrucción que se va a ejecutar de la memoria. El registro P contiene la dirección de la instrucción a ejecutar, por lo que habrá de leerse la dirección de memoria indicada por P. Esta fase tiene tres operaciones elementales: (a) Direccionamiento: transferir a S el contenido del registro P. Esto se simboliza mediante: (P) → S. Nótese que el contenido anterior del registro S se pierde al ser sustituido por el contenido de P. (b) Leer de memoria , obteniéndose en T la información almacenada en la posición definida por S, lo cual se puede expresar como: M(S) → T (c) Pasar la instrucción a I: (T) → I, donde debe quedar para poder ser ejecutada. 2. Búsqueda del operando: En CO se ha supuesto la existencia del código de operación (que identifica a la suma en este ejemplo). El modo de direccionamiento es directo, por lo tanto la dirección que figura en D se interpreta como la del operando que hay que sumar al acumulador. Los pasos son los siguientes: (a) Buscar el operando a sumar. Para ello hay que permitir el paso de D al registro S: (D) → S. De este modo se direcciona dicho operando. (b) Leer de memoria: M(S) → T. El registro de la memoria que ha sido seleccionado es copiado en T, con lo que se tiene el número a sumar en T. 3. Ejecución de la instrucción. En este caso, la suma al acumulador del contenido de T. Esto puede escribirse como: (T)+(A) → A, puesto que, como ya se ha dicho, el acumulador guarda el primer operando y recibe además el resultado de las operaciones. 4. Preparación de la siguiente instrucción. En este caso hay que sumar uno al contador de pasos del programa: (P)+1 → P. La forma en que se han detallado los pasos a realizar para ejecutar la instrucción suma consiste en dar las transferencias elementales entre registros. Del diagrama 4.18 resulta claro que para lograr estas transferencias es necesario activar las señales de entrada y salida de los registros, tales como: SP, ES, etc. En la tabla 4.1 se muestra de nuevo la secuencia de operaciones para el mismo ejemplo de la suma, pero incluyendo las señales de gobierno necesarias. La activación de las señales de gobierno se realiza de forma automática durante la ejecución del programa. Es una tarea que corre a cargo de la unidad de control. Para no enmarañar el dibujo de la figura 4.18 no se muestra la forma en la que la UC activa dichas señales. Baste decir que existe un módulo o bloque adicional que maneja todas las señales de control de forma parecida a cómo el centro de control de tráfico puede manejar los semáforos de una ciudad. c MRA & JAAR 63 2009 DISA. ESI. US. fase 1a 1b 1c 2a 2b 3 4 transferencias entre registros (P) → S M(S) → T (T) → I (D) → S M(S) → T (A)+(T) → A (P)+1 → P señales de gobierno SP, ES LECM ST, EI SD, ES LECM ST, EO, SU M A, EA IN CP Tabla 4.1: Fases, transferencias entre registros y señales de gobierno correspondientes a la instrucción suma. La instrucción de salto Se ha indicado que el contador de pasos de programa se incrementa en una unidad cada vez que se ejecuta una instrucción, de forma que pase a señalar la dirección de la siguiente instrucción en la memoria. Esta forma de proceder es adecuada para muchas situaciones, pero está muy falta de versatilidad. El llamado salto incondicional permite romper el orden de ejecución de las instrucciones, de forma que, tras la instrucción de salto situada en la dirección d, se pasa a ejecutar otra, situada en una dirección distinta de d + 1. Para ello es necesario y suficiente modificar el registro contador de pasos del programa P. Los pasos necesarios son: 1. Búsqueda de la instrucción: Hay que extraer la instrucción que se va a ejecutar de la memoria. Esta fase tiene tres operaciones elementales: (a) Transferir a S el contenido del registro P. Esto se simboliza mediante: (P) → S. (b) Leer de memoria , obteniéndose en T la información almacenada en la posición definida por S: M(S) → T (c) Pasar la instrucción a I: (T) → I. Donde será interpretada. 2. Búsqueda del operando: en la parte D del registro I debe figurar la dirección del salto, que se debe introducir en P, por lo que no es necesario buscar en memoria. 3. Ejecución de la instrucción. En este caso, pasar el contenido de D al registro contador de pasos: (D) → P. 4. Preparación de la siguiente instrucción. En este caso no hay que hacer nada pues el contador de pasos del programa contiene ya la dirección de la siguiente instrucción tras del salto. Saltos condicionales La instrucción de salto condicional permite realizar el salto de una instrucción a otra dependiendo de una condición, por ejemplo si el acumulador es positivo. De este modo se puede obtener un programa que a partir de un punto realiza unas instrucciones u otras dependiendo de que el acumulador sea positivo o no. Esto es realmente importante (como se verá más adelante) para realizar las llamadas bifurcaciones. ... EO LECM TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL SP 64 señales de gobierno reloj CO MD I Figura 4.20: Diagrama de bloques de la unidad de control. 4.5.5 Funcionamiento de la unidad de control La función de la unidad de control es interpretar cada una de las instrucciones del programa a ejecutar, enviando las señales de control correspondientes a la memoria, la UAL, etc. de manera que dichas instrucciones se ejecuten. Se ha visto en los ejemplos anteriores que las señales de control permiten realizar operaciones y transferencias de información entre registros, las cuales, son la base del funcionamiento de la computadora. La figura 4.20 muestra un diagrama incluyendo la unidad de control como un bloque funcional que genera las señales de gobierno a partir del código de operación. La ejecución de una instrucción conlleva la activación de ciertas señales de gobierno, que reciben el nombre de microórdenes. Las señales de gobierno evolucionan en el tiempo para llevar a cabo las instrucciones del programa. Como ejemplo se puede recordar ahora el caso de la instrucción suma. Las fases de la instrucción se muestran en la tabla 4.1. El cronograma de operaciones correspondiente a la instrucción suma es una representación gráfica de la evolución temporal de las señales de gobierno. En la figura 4.21 se muestra el cronograma correspondiente a la instrucción suma. El eje horizontal corresponde a la escala de tiempos. Además, se ha superpuesto en la figura la señal de reloj, que consiste en pulsos regularmente espaciados. El reloj es muy importante para el funcionamiento de la unidad de control, puesto que se requiere que las microórdenes se sucedan en secuencia y que exista una sincronización entre acontecimientos como se puede ver en el cronograma. Volviendo al cronograma hay que indicar el eje vertical indica el voltaje de la señal cuyo nombre aparece a la derecha. El eje horizontal se ha dividido en cuatro partes llamadas fases de reloj. Hay que hacer notar que las fases de reloj (θ1 , θ2 , θ3 y θ4 ) no se corresponden con las fases en las que se ha dividido la ejecución de la instrucción. Las cuatro fases de reloj se agrupan en dos ciclos: • Ciclo de instrucción. Comprende los periodos θ1 y θ2 , y representa la búsqueda de la instrucción en memoria y su almacenamiento en el registro I. • Ciclo de operando. Abarca θ3 y θ4 y representa la búsqueda del operando y la realización de la operación, junto con la preparación de la instrucción siguiente. c MRA & JAAR 65 2009 DISA. ESI. US. 1 2 3 4 reloj SP ES LECM ST EI SD EO SUMA EA INCP Figura 4.21: Cronograma de la instrucción suma. Finalmente, es de resaltar que cada instrucción se realiza mediante transferencias entre registros, las cuales se llevan a cabo gracias a una secuencia concreta de microórdenes; por lo tanto, cada instrucción tiene un cronograma. El cronograma de cada instrucción es trazado por el diseñador de la computadora de acuerdo con las caracterı́sticas del mismo, como son: número de registros de que se dispone, complejidad de la UAL, etc. Por lo tanto, cada equipo (cada microprocesador) tiene sus cronogramas propios. El objetivo de la unidad de control va a ser variar las señales de gobierno en los instantes adecuados de la forma marcada por los cronogramas de las instrucciones. La tarea que desarrolla la unidad de control consiste en abrir y cerrar oportunamente el paso de señales por los enlaces. Mediante circuitos lógicos y biestables es posible diseñar una máquina capaz de realizar la tarea en cuestión. A un dispositivo tal se le llama unidad de control cableada. Debe quedar clara la idea de que cada instrucción necesita señales de gobierno distintas, por lo que el circuito completo es bastante complicado. Más aún, a medida que aumenta el conjunto de instrucciones de la máquina, aumenta el número de operaciones que debe realizar, con lo que aumenta su complejidad dificultando el diseño. Existe otro tipo de UC llamada microprogramada, ideada por Wilkes, en la cual las señales de gobierno parten de una micro-memoria eliminando gran parte de los circuitos necesarios en la UC cableada. Este esquema ofrece ciertas ventajas, pero que queda fuera del alcance de este libro. 4.6 Ejercicios propuestos Los siguientes ejercicios sirven para consolidar las ideas más importantes de este tema. 1. Diseñe un circuito con puertas lógicas que realize la función de un decodificador de direcciones para seleccionar entre 8 registros de una memoria. 2. La UAL de una computadora utiliza registros de n = 16 celdas y complemento a dos para representar los números enteros. Indique cuál será el contenido del acumulador tras proporcionarle el operando 0000000000111001, activar la señal CARGA, proporcionar el operando 1111111110110111 y activar la señal SUMA. 66 TEMA 4. ESTRUCTURA DE LA COMPUTADORA DIGITAL 3. Dado el número A|10 = a2 a1 a0 |2 , probar que A + C2 (A) = 0. Nota: a2 es el bit de signo. 4. Indique las señales de gobierno que se activan en la computadora elemental descrita en este tema al ejecutarse la instrucción de resta al contenido del acumulador. Las señales de gobierno han de escribirse en el orden cronológico correcto correspondiente cada una de las fases de ejecución de la instrucción. 5. Hacer las transferencias elementales entre registros de las instrucciones: almacenar, escribir, saltar. 6. Hacer el cronograma de la instrucción leer.